版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第3章 Nios II 體系結(jié)構(gòu)-SOPC嵌入式系統(tǒng)基礎(chǔ)教程北京航空航天大學(xué)出版社出版周立功 等編著本章的目的是讓讀者建立一個(gè)Nios II處理器的概念,了解一些Nios II處理器的工作細(xì)節(jié),這對(duì)開(kāi)發(fā)出高效率、健壯的程序是非常有好處的。體系結(jié)構(gòu)(Architecture)主要用來(lái)描述面向程序員的CPU抽象,而不是其具體實(shí)現(xiàn)。本章先介紹NiosII處理器構(gòu)架,接著介紹NiosII的寄存器文件(Register File),然后介紹NiosII的異常處理,最后介紹NiosII的儲(chǔ)存器結(jié)構(gòu)并分析三種NiosII處理器的性能特點(diǎn)。主要內(nèi)容第3章 目錄n3.1 Nios II處理器結(jié)構(gòu)n3.2 Nio
2、s II的寄存器文件n3.3 算數(shù)邏輯單元(ALU)n3.4 復(fù)位信號(hào)n3.5 Nios II處理器運(yùn)行模式n3.6 異常和中斷控制器n3.7 Nios II的異常處理n3.8 存儲(chǔ)器及I/O結(jié)構(gòu)n3.9 存儲(chǔ)器和外設(shè)訪問(wèn)n3.10 Nios II處理器性能第3章 目錄n3.1 Nios II處理器結(jié)構(gòu)n3.2 Nios II的寄存器文件n3.3 算數(shù)邏輯單元(ALU)n3.4 復(fù)位信號(hào)n3.5 Nios II處理器運(yùn)行模式n3.6 異常和中斷控制器n3.7 Nios II的異常處理n3.8 存儲(chǔ)器及I/O結(jié)構(gòu)n3.9 存儲(chǔ)器和外設(shè)訪問(wèn)n3.10 Nios II處理器性能3.1 Nios II
3、處理器結(jié)構(gòu)nNios II是一種軟核(Soft-Core)處理器。n所謂軟核,是指未被固化在硅片上,使用時(shí)需要借助EDA軟件對(duì)其進(jìn)行配置并下載到可編程芯片(比如FPGA)中的IP核。軟核最大的特點(diǎn)就是可由用戶按需要進(jìn)行配置。3.1 Nios II處理器結(jié)構(gòu)nNios II軟核處理器簡(jiǎn)介Nios II 處理器系列包括三種內(nèi)核Nios II32位軟核處理器Nios II/f (快速)Nios II/e (經(jīng)濟(jì))Nios II/s (標(biāo)準(zhǔn))性能最高,但占用的邏輯資源最多。性能最高,但占用的邏輯資源最多。占用的邏輯資源最少,但性能最低。占用的邏輯資源最少,但性能最低。平衡的性能和尺寸。平衡的性能和尺寸
4、。NiosII/s內(nèi)核比內(nèi)核比第一代的第一代的Nios CPU更快,占用的資更快,占用的資源更少。源更少。3.1 Nios II處理器結(jié)構(gòu)Nios II32位軟核處理器Nios II處理器結(jié)構(gòu)框圖地址發(fā)生器&程序控制器異??刂破髦袛嗫刂破魍ㄓ眉拇嫫鹘M控制寄存器組指令Cache數(shù)據(jù)Cache算術(shù)邏輯單元( ALU)用戶邏輯JTAG接口NiosII處理器核處理器核緊耦合指令存儲(chǔ)器緊耦合指令存儲(chǔ)器緊耦合數(shù)據(jù)存儲(chǔ)器緊耦合數(shù)據(jù)存儲(chǔ)器指令總線數(shù)據(jù)總線clockreset軟件調(diào)試接口中斷源0.31 IO口cpu_resetrequestcpu_resettakenctl0ctl5r0r313.1 Nios
5、II處理器結(jié)構(gòu)n數(shù)據(jù)處理主要由算術(shù)邏輯單元完成,在現(xiàn)有的Nios II內(nèi)核中暫時(shí)沒(méi)有協(xié)處理器。n用戶邏輯接口用來(lái)連接用戶定制的邏輯電路與Nios II內(nèi)核。Nios II處理器結(jié)構(gòu)框圖nNios II采用哈佛結(jié)構(gòu),數(shù)據(jù)總線和指令總線分開(kāi)。n為了調(diào)試方便,Nios II處理器集成了一個(gè)JTAG調(diào)試模塊。地址發(fā)生器&程序控制器異??刂破髦袛嗫刂破魍ㄓ眉拇嫫鹘M控制寄存器組指令Cache數(shù)據(jù)Cache算術(shù)邏輯單元( ALU)用戶邏輯JTAG接口NiosII處理器核處理器核緊耦合指令存儲(chǔ)器緊耦合指令存儲(chǔ)器緊耦合數(shù)據(jù)存儲(chǔ)器緊耦合數(shù)據(jù)存儲(chǔ)器指令總線數(shù)據(jù)總線clockreset軟件調(diào)試接口中斷源0.31 IO
6、口cpu_resetrequestcpu_resettakenctl0ctl5r0r313.1 Nios II處理器結(jié)構(gòu)n為了提高系統(tǒng)的整體性能,Nios II內(nèi)核不僅可以集成數(shù)據(jù) C a c h e 和 指 令Cache,還帶有緊耦合存儲(chǔ)器TCM接口 。 T C M 可 以 使Nios II處理器既能提高性能,又能獲得可預(yù)測(cè)的實(shí)時(shí)響應(yīng)。Nios II處理器結(jié)構(gòu)框圖地址發(fā)生器&程序控制器異??刂破髦袛嗫刂破魍ㄓ眉拇嫫鹘M控制寄存器組指令Cache數(shù)據(jù)Cache算術(shù)邏輯單元( ALU)用戶邏輯JTAG接口NiosII處理器核處理器核緊耦合指令存儲(chǔ)器緊耦合指令存儲(chǔ)器緊耦合數(shù)據(jù)存儲(chǔ)器緊耦合數(shù)據(jù)存儲(chǔ)器指
7、令總線數(shù)據(jù)總線clockreset軟件調(diào)試接口中斷源0.31 IO口cpu_resetrequestcpu_resettakenctl0ctl5r0r313.1 Nios II處理器結(jié)構(gòu)nNios II把外部硬件的中斷事件交由中斷控制器管理,內(nèi)核異常事件交由異常控制器管理。nNios II的寄存器文件包括32個(gè)通用寄存器和6個(gè)控制寄存器,Nios II結(jié)構(gòu)允許將來(lái)添加浮點(diǎn)寄存器.Nios II處理器結(jié)構(gòu)框圖地址發(fā)生器&程序控制器異常控制器中斷控制器通用寄存器組控制寄存器組指令Cache數(shù)據(jù)Cache算術(shù)邏輯單元( ALU)用戶邏輯JTAG接口NiosII處理器核處理器核緊耦合指令存儲(chǔ)器緊耦合指
8、令存儲(chǔ)器緊耦合數(shù)據(jù)存儲(chǔ)器緊耦合數(shù)據(jù)存儲(chǔ)器指令總線數(shù)據(jù)總線clockreset軟件調(diào)試接口中斷源0.31 IO口cpu_resetrequestcpu_resettakenctl0ctl5r0r31第3章 目錄n3.1 Nios II處理器結(jié)構(gòu)n3.2 Nios II的寄存器文件n3.3 算數(shù)邏輯單元(ALU)n3.4 復(fù)位信號(hào)n3.5 Nios II處理器運(yùn)行模式n3.6 異常和中斷控制器n3.7 Nios II的異常處理n3.8 存儲(chǔ)器及I/O結(jié)構(gòu)n3.9 存儲(chǔ)器和外設(shè)訪問(wèn)n3.10 Nios II處理器性能3.2 Nios II的寄存器文件n Nios II的通用寄存器盡管硬件對(duì)寄存器的用
9、法幾乎沒(méi)有規(guī)定,但是它們?cè)趯?shí)際使用過(guò)程中還是遵循一些約定俗成的慣例。如果想使用他人的子程序,編譯器或操作系統(tǒng),最好還是遵守這些慣例。我們通過(guò)下面的通用寄存器一覽表來(lái)了解Nios II的32個(gè)通用寄存器。通用寄存器組寄存器助記符功能寄存器助記符功能r0zero清零r16子程序要保存的寄存器r1at匯編中的臨時(shí)變量r17子程序要保存的寄存器r2函數(shù)返回值(低32位)r18子程序要保存的寄存器r3函數(shù)返回值(高32位)r19子程序要保存的寄存器r4傳遞給函數(shù)的參數(shù)r20子程序要保存的寄存器r5傳遞給函數(shù)的參數(shù)r21子程序要保存的寄存器r6傳遞給函數(shù)的參數(shù)r22子程序要保存的寄存器r7傳遞給函數(shù)的參數(shù)
10、r23子程序要保存的寄存器r8調(diào)用者要保存的寄存器r24et為異常處理保留r9調(diào)用者要保存的寄存器r25bt為程序斷點(diǎn)保留r10調(diào)用者要保存的寄存器r26gp全局指針r11調(diào)用者要保存的寄存器r27sp堆棧指針r12調(diào)用者要保存的寄存器r28fp幀指針r13調(diào)用者要保存的寄存器r29ea異常返回地址r14調(diào)用者要保存的寄存器r30ba斷點(diǎn)返回地址r15調(diào)用者要保存的寄存器r31ra函數(shù)返回地址通用寄存器一覽r0或zero: 總是存放0值,對(duì)它讀寫(xiě)無(wú)效。Nios II沒(méi)有專門(mén)的清零指令,所以常用它來(lái)對(duì)寄存器清零。r1或at: 這個(gè)寄存器在匯編程序中常用作臨時(shí)變量。r2,r3: 用來(lái)存放一個(gè)函數(shù)的
11、返回值。 r2存放返回值的低32位。 r3存放返回值的高32位。如果這兩個(gè)寄存器不夠存放需要返回的值,編譯器將通過(guò)堆棧來(lái)傳遞。r4r7: 用來(lái)傳遞4個(gè)非浮點(diǎn)參數(shù)給一個(gè)子程序。r4傳遞第一個(gè)參數(shù),r5傳遞第二個(gè)參數(shù),以此類推。如果這四個(gè)寄存器不夠傳遞參數(shù),編譯器將通過(guò)堆棧來(lái)傳遞。r8r15: 習(xí)慣上,子程序可以使用其中的值而不用保存它們。但使用者必須記住,這些寄存器里面的值可能被一次子程序調(diào)用改變,所以調(diào)用著有責(zé)任保護(hù)它們。通用寄存器組寄存器助記符功能寄存器助記符功能r0zero清零r16子程序要保存的寄存器r1at匯編中的臨時(shí)變量r17子程序要保存的寄存器r2函數(shù)返回值(低32位)r18子程序
12、要保存的寄存器r3函數(shù)返回值(高32位)r19子程序要保存的寄存器r4傳遞給函數(shù)的參數(shù)r20子程序要保存的寄存器r5傳遞給函數(shù)的參數(shù)r21子程序要保存的寄存器r6傳遞給函數(shù)的參數(shù)r22子程序要保存的寄存器r7傳遞給函數(shù)的參數(shù)r23子程序要保存的寄存器r8調(diào)用者要保存的寄存器r24et為異常處理保留r9調(diào)用者要保存的寄存器r25bt為程序斷點(diǎn)保留r10調(diào)用者要保存的寄存器r26gp全局指針r11調(diào)用者要保存的寄存器r27sp堆棧指針r12調(diào)用者要保存的寄存器r28fp幀指針r13調(diào)用者要保存的寄存器r29ea異常返回地址r14調(diào)用者要保存的寄存器r30ba斷點(diǎn)返回地址r15調(diào)用者要保存的寄存器r
13、31ra函數(shù)返回地址通用寄存器一覽r16r23: 習(xí)慣上,子程序必須保證這些寄存器中的值在調(diào)用前后保持不變,即要么在子程序執(zhí)行時(shí)不使用它們,要么使用前把它們保存在堆棧中并在退出時(shí)恢復(fù)。r24或et: 在異常處理時(shí)使用。使用時(shí),可以不恢復(fù)原來(lái)的值。該寄存器很少作用其它用途。r25或bt: 在程序斷點(diǎn)處理時(shí)使用。使用時(shí),可以不恢復(fù)原來(lái)的值。該寄存器很少作其它用途。r26或gp: 它指向靜態(tài)數(shù)據(jù)區(qū)中的一個(gè)運(yùn)行時(shí)臨時(shí)決定的地址。這意味著在存取位于gp值上下32KB范圍內(nèi)的數(shù)據(jù)時(shí),只需要一條以gp作為基指針的指令即可完成。r27或sp: 堆棧指針。Nios II沒(méi)有專門(mén)的出棧(POP)入棧(PUSH)指
14、令,在子程序入口處,sp被調(diào)整指向棧底部,然后以sp為基址,用寄存器基址偏移地址的方式來(lái)訪問(wèn)棧中的數(shù)據(jù)。r28或fp: 幀指針,習(xí)慣上用于跟蹤棧的變化和維護(hù)運(yùn)行時(shí)環(huán)境。r29或ea: 保存異常返回地址。r30或ba: 保存斷點(diǎn)返回地址。r31或ra: 保存函數(shù)返回地址。3.2 Nios II的寄存器文件n Nios II的控制寄存器Nios II的控制寄存器共有6個(gè),它們的讀/寫(xiě)訪問(wèn)只能在超級(jí)用戶態(tài)(Supervisor Model)由專用的控制寄存器讀/寫(xiě)指令(rdctl和wrctl)實(shí)現(xiàn)。通過(guò)控制寄存器一覽表,來(lái)了解控制寄存器各位的意義。控制寄存器一覽控制寄存器組寄存器名字bit位意義:
15、31210ct10status保留UPIEct11estatus保留EUEPIEct12bstatus保留BUBPIEct13ienable中斷允許位ct14ipending中斷發(fā)生標(biāo)志位ct15cpuid唯一的CPU序列號(hào)status狀態(tài)寄存器:只有第1位和第0位有意義。第1位U反映計(jì)算機(jī)當(dāng)前狀態(tài): 1表示處于用戶態(tài)(User-mode); 0表示處于超級(jí)用戶態(tài)(Supervisor Mode)。第0位PIE外設(shè)中斷允許位: 1表示允許外設(shè)中斷; 0表示禁止外設(shè)中斷??刂萍拇嫫饕挥[控制寄存器組寄存器名字bit位意義: 31210ct10status保留UPIEct11estatus保留EUE
16、PIEct12bstatus保留BUBPIEct13ienable中斷允許位ct14ipending中斷發(fā)生標(biāo)志位ct15cpuid唯一的CPU序列號(hào)estatus、bstatus都是status寄存器的影子寄存器:發(fā)生斷點(diǎn)或者異常時(shí):保存status寄存器的值;斷點(diǎn)或異常處理返回時(shí):恢復(fù)status寄存器的值??刂萍拇嫫饕挥[控制寄存器組寄存器名字bit位意義: 31210ct10status保留UPIEct11estatus保留EUEPIEct12bstatus保留BUBPIEct13ienable中斷允許位ct14ipending中斷發(fā)生標(biāo)志位ct15cpuid唯一的CPU序列號(hào)ienab
17、le中斷允許寄存器:每一位控制一個(gè)中斷通道。例如:第0位為1:表示允許第0號(hào)中斷發(fā)生;第0位為0:表示禁止第0號(hào)中斷發(fā)生;ipending中斷發(fā)生標(biāo)志位:每一位反映一個(gè)中斷發(fā)生。例如:第0位為1:表示第0號(hào)中斷發(fā)生;第0位為0:表示第0號(hào)中斷未發(fā)生;cpuid此寄存器中裝載著處理器的id號(hào):該id號(hào)在生成Nios II系統(tǒng)時(shí)產(chǎn)生。Id號(hào)在多處理器系統(tǒng)中可以作為分辨CPU的標(biāo)識(shí)。第3章 目錄n3.1 Nios II處理器結(jié)構(gòu)n3.2 Nios II的寄存器文件n3.3 算數(shù)邏輯單元(ALU)n3.4 復(fù)位信號(hào)n3.5 Nios II處理器運(yùn)行模式n3.6 異常和中斷控制器n3.7 Nios II
18、的異常處理n3.8 存儲(chǔ)器及I/O結(jié)構(gòu)n3.9 存儲(chǔ)器和外設(shè)訪問(wèn)n3.10 Nios II處理器性能3.3 算術(shù)邏輯單元(ALU)Nios II ALU支持的操作種類描述算術(shù)運(yùn)算ALU支持有符號(hào)和無(wú)符號(hào)數(shù)的加、減、乘和除法關(guān)系運(yùn)算支持有符號(hào)和無(wú)符號(hào)數(shù)的等于、不等于、大于等于和小于(=,!=,=,)關(guān)系運(yùn)算邏輯運(yùn)算支持AND、OR、NOR和XOR邏輯運(yùn)算移位運(yùn)算支持移位和循環(huán)移位運(yùn)算,在每條指令中可以將數(shù)據(jù)移位和環(huán)移0到31位。支持算術(shù)右移和算術(shù)左移,還支持左、右循環(huán)移位3.3 算術(shù)邏輯單元(ALU)n 未實(shí)現(xiàn)的指令n 用戶指令n 浮點(diǎn)指令第3章 目錄n3.1 Nios II處理器結(jié)構(gòu)n3.2
19、Nios II的寄存器文件n3.3 算數(shù)邏輯單元(ALU)n3.4 復(fù)位信號(hào)n3.5 Nios II處理器運(yùn)行模式n3.6 異常和中斷控制器n3.7 Nios II的異常處理n3.8 存儲(chǔ)器及I/O結(jié)構(gòu)n3.9 存儲(chǔ)器和外設(shè)訪問(wèn)n3.10 Nios II處理器性能3.4 復(fù)位信號(hào)地址發(fā)生器&程序控制器異常控制器中斷控制器算術(shù)邏輯單元用戶邏輯JTAG接口NiosII處理器核clockreset軟件調(diào)試接口中斷源0 .31 IO口cpu _resetrequestcpu _resettakenn Nios II處理器支持兩個(gè)復(fù)位信號(hào):reset和cpu_resetrequestreset:是一個(gè)強(qiáng)
20、制處理器核立即進(jìn)入復(fù)位狀態(tài)的全局硬件復(fù)位信號(hào)。cpu_resetrequest:是一個(gè)可以讓CPU復(fù)位但不影響Nios II系統(tǒng)其它外設(shè)的局部復(fù)位信號(hào)。Nios II處理器結(jié)構(gòu)框圖3.4 復(fù)位信號(hào)n CPU復(fù)位后,Nios II處理器將執(zhí)行下列操作:清除狀態(tài)寄存器status,使之為0 x0;指令Cache與程序存儲(chǔ)器的關(guān)聯(lián)被置為無(wú)效,處理器從固態(tài)程序存儲(chǔ)器(比如Flash)中的reset地址處取得第一條指令;從復(fù)位地址處開(kāi)始執(zhí)行程序。清除status:是為了使處理器進(jìn)入超級(jí)用戶模式并禁止硬件中斷。使當(dāng)前Cache隊(duì)列無(wú)效:是為了保證取指是從復(fù)位地址所在的非Cache存儲(chǔ)區(qū),而不是當(dāng)前指令Ca
21、che。復(fù)位地址在系統(tǒng)生成時(shí)指定。3.4 復(fù)位信號(hào)n 以下部件的狀態(tài)在復(fù)位后是不確定的:通用寄存器(除zero(r0):總是存放0值);控制寄存器(除status(ct10),被置為0 x0);指令和數(shù)據(jù)存儲(chǔ)器。Cache(除與復(fù)位地址關(guān)聯(lián)的指令Cache);與CPU相連的各外設(shè),各外設(shè)復(fù)位后的狀態(tài)要具體參考各外設(shè)的手冊(cè);用戶指令邏輯在復(fù)位后的狀態(tài)要參看用戶指令邏輯的手冊(cè)或說(shuō)明。第3章 目錄n3.1 Nios II處理器結(jié)構(gòu)n3.2 Nios II的寄存器文件n3.3 算數(shù)邏輯單元(ALU)n3.4 復(fù)位信號(hào)n3.5 Nios II處理器運(yùn)行模式n3.6 異常和中斷控制器n3.7 Nios I
22、I的異常處理n3.8 存儲(chǔ)器及I/O結(jié)構(gòu)n3.9 存儲(chǔ)器和外設(shè)訪問(wèn)n3.10 Nios II處理器性能3.5 Nios II處理器運(yùn)行模式n Nios II處理器有3種運(yùn)行模式:用戶模式(User Mode);超級(jí)用戶模式(Supervisor Mode) ;調(diào)試模式(Debug Mode) 。n通常系統(tǒng)程序代碼運(yùn)行在超級(jí)用戶模式。在V6.0版本以前的Nios II 處理器都不支持用戶模式,永遠(yuǎn)都運(yùn)行在超級(jí)用戶模式。調(diào)試模式:擁有最大的訪問(wèn)權(quán)限,可以無(wú)限制地訪問(wèn)所有的功能模塊;超級(jí)用戶模式:除了不能訪問(wèn)與調(diào)試有關(guān)的寄存器(bt、ba和bstatus)外,無(wú)其它訪問(wèn)限制;用戶模式:是超級(jí)用戶模式
23、功能訪問(wèn)的一個(gè)子集,它不能訪問(wèn)控制寄存器和一些通用寄存器。3.5 Nios II處理器運(yùn)行模式nNios II 處理器3種運(yùn)行模式切換Nios II處理器3種運(yùn)行模式第3章 目錄n3.1 Nios II處理器結(jié)構(gòu)n3.2 Nios II的寄存器文件n3.3 算數(shù)邏輯單元(ALU)n3.4 復(fù)位信號(hào)n3.5 Nios II處理器運(yùn)行模式n3.6 異常和中斷控制器n3.7 Nios II的異常處理n3.8 存儲(chǔ)器及I/O結(jié)構(gòu)n3.9 存儲(chǔ)器和外設(shè)訪問(wèn)n3.10 Nios II處理器性能3.6 異常和中斷控制器n異常控制器Nios II體系結(jié)構(gòu)提供一個(gè)簡(jiǎn)單的非向量異??刂破鱽?lái)處理所有類型的異常。n中
24、斷控制器Nios II體系結(jié)構(gòu)支持32個(gè)外部硬件中斷,即irq0irq31。每個(gè)中斷對(duì)應(yīng)一個(gè)獨(dú)立的中斷通道。第3章 目錄n3.1 Nios II處理器結(jié)構(gòu)n3.2 Nios II的寄存器文件n3.3 算數(shù)邏輯單元(ALU)n3.4 復(fù)位信號(hào)n3.5 Nios II處理器運(yùn)行模式n3.6 異常和中斷控制器n3.7 Nios II的異常處理n3.8 存儲(chǔ)器及I/O結(jié)構(gòu)n3.9 存儲(chǔ)器和外設(shè)訪問(wèn)n3.10 Nios II處理器性能3.7 Nios II的異常處理硬件中斷軟件異常軟件陷阱異常未定義指令異常其它異常n異常類型 一個(gè)外設(shè)能通過(guò)處理器32個(gè)中斷輸入之一,請(qǐng)求產(chǎn)生一個(gè)硬件中斷。 當(dāng)程序遇到軟件
25、陷阱指令時(shí),將產(chǎn)生軟件陷阱異常,這在程序需要操作系統(tǒng)服務(wù)時(shí)常用到。操作系統(tǒng)的異常處理程序判斷產(chǎn)生軟件陷阱的原因,然后執(zhí)行相應(yīng)任務(wù)。Nios II異常包括3.7 Nios II的異常處理硬件中斷軟件異常軟件陷阱異常未定義指令異常其它異常當(dāng)處理器執(zhí)行未定義指令時(shí)產(chǎn)生未定義指令異常。異常處理可以判斷哪個(gè)指令產(chǎn)生異常,如果指令不能通過(guò)硬件執(zhí)行,可以在一個(gè)異常服務(wù)程序中通過(guò)軟件方式仿真執(zhí)行。其它異常類型是未將來(lái)準(zhǔn)備的。Nios II異常包括n異常類型3.7 Nios II的異常處理n異常硬件處理流程當(dāng)異常發(fā)生后,處理器會(huì)依次完成以下工作:把status寄存器內(nèi)容復(fù)制到estatus寄存器中,保存當(dāng)前處理
26、器狀態(tài);清除status寄存器的U位為0,強(qiáng)制處理器進(jìn)入超級(jí)用戶狀態(tài);清除status寄存器的PIE位為0,禁止所有的硬件中斷;把異常返回地址寫(xiě)入ea寄存器(r29);跳轉(zhuǎn)到異常處理地址。123453.7 Nios II的異常處理n異常判別及優(yōu)先級(jí)(EPIE=1)&(ipending!=0)?指令是在(ea-4)處嗎?指令是在(ea-4)div、mul、mulxuu、等處嗎?進(jìn)入異常處理處理硬件中斷處理軟件陷阱處理未定義指令其它異常NoNoNoYesYesYes異常類型判別3.7 Nios II的異常處理n異常的嵌套n異常返回n異常響應(yīng)時(shí)間 實(shí)現(xiàn)異常嵌套,需在用戶ISR中打開(kāi)外部中斷允許(PI
27、E=1)。 在處理異常事件的過(guò)程中,可以響應(yīng)由trap指令引起的軟件陷阱異常 和未實(shí)現(xiàn)指令異常。 在異常嵌套之前,為了確保異常能正確返回,必須保存estatus寄存器(ctl1)和ea寄存器(r29)。3.7 Nios II的異常處理n異常的嵌套n異常返回n異常響應(yīng)時(shí)間當(dāng)執(zhí)行異常返回指令(eret)后,處理器會(huì)把estatus寄存器(ctl1)內(nèi)容復(fù)制到status寄存器(ctl0)國(guó),恢復(fù)異常前的處理器狀態(tài),然后把異常返回地址從ea寄存器(r29)寫(xiě)入程序計(jì)數(shù)器。異常發(fā)生時(shí),ea寄存器(r29)保存了異常發(fā)生處下一條指令所在的地址。當(dāng)異常從軟件陷阱異常 或未定義指令異常返回時(shí),程序必須從軟件
28、陷阱指令trap或未定義指令后繼續(xù)執(zhí)行,因此ea寄存器(r29)就是正確的異常返回地址。3.7 Nios II的異常處理n異常的嵌套n異常返回n異常響應(yīng)時(shí)間如果是硬件中斷異常,程序必須從硬件中斷異常發(fā)生處繼續(xù)執(zhí)行,因此必須將ea寄存器(r29)中的地址減去(ea-4)作為異常返回地址。3.7 Nios II的異常處理n異常的嵌套n異常返回n異常響應(yīng)時(shí)間lNios II的非向量仲裁策略,導(dǎo)致了Nios II的異常處理延時(shí)會(huì)比較大,它是靠提高Nios II處理器的執(zhí)行速度來(lái)彌補(bǔ)這一缺點(diǎn)的。見(jiàn)下表:NiosII類型Max. DMIPS異常反應(yīng)時(shí)間進(jìn)入ISR時(shí)延異常恢復(fù)時(shí)延NiosII/e311548
29、5222NiosII/s12710128130NiosII/f2181010562Nios II 異常處理性能第3章 目錄n3.1 Nios II處理器結(jié)構(gòu)n3.2 Nios II的寄存器文件n3.3 算數(shù)邏輯單元(ALU)n3.4 復(fù)位信號(hào)n3.5 Nios II處理器運(yùn)行模式n3.6 異常和中斷控制器n3.7 Nios II的異常處理n3.8 存儲(chǔ)器及I/O結(jié)構(gòu)n3.9 存儲(chǔ)器和外設(shè)訪問(wèn)n3.10 Nios II處理器性能3.8 存儲(chǔ)器及I/O結(jié)構(gòu)Nios II 存儲(chǔ)器和I/O結(jié)構(gòu)程序計(jì)數(shù)器通用寄存器文件指令總線選擇邏輯數(shù)據(jù)總線選擇邏輯指令高速緩存數(shù)據(jù)高速緩存緊耦合指令存儲(chǔ)器1緊耦合數(shù)據(jù)存
30、儲(chǔ)器1緊耦合指令存儲(chǔ)器N存儲(chǔ)器從外設(shè)緊耦合數(shù)據(jù)存儲(chǔ)器NSSAvalon轉(zhuǎn)換結(jié)構(gòu)NiosII處理器內(nèi)核SMAvalon主端口Avalon從端口n NiosII內(nèi)核訪問(wèn)存儲(chǔ)器和I/O的方式1.指令主端口2.指令高速緩存3.數(shù)據(jù)主端口4.數(shù)據(jù)高速緩存5.緊耦合指令或 數(shù)據(jù)存儲(chǔ)器端口MM3.8 存儲(chǔ)器及I/O結(jié)構(gòu)Nios II 存儲(chǔ)器和I/O結(jié)構(gòu)程序計(jì)數(shù)器通用寄存器文件指令總線選擇邏輯數(shù)據(jù)總線選擇邏輯指令高速緩存數(shù)據(jù)高速緩存緊耦合指令存儲(chǔ)器1緊耦合數(shù)據(jù)存儲(chǔ)器1緊耦合指令存儲(chǔ)器N存儲(chǔ)器從外設(shè)緊耦合數(shù)據(jù)存儲(chǔ)器NSMSMAvalon轉(zhuǎn)換結(jié)構(gòu)NiosII處理器內(nèi)核SMAvalon主端口Avalon從端口n 指
31、令與數(shù)據(jù)總線1.指令主端口2.指令高速緩存3.數(shù)據(jù)主端口4.數(shù)據(jù)高速緩存5.緊耦合指令或 數(shù)據(jù)存儲(chǔ)器端口3.8 存儲(chǔ)器及I/O結(jié)構(gòu)n指令與數(shù)據(jù)總線存儲(chǔ)器與外設(shè)訪問(wèn)Nios II結(jié)構(gòu)提供映射為存儲(chǔ)器的I/O訪問(wèn)。數(shù)據(jù)存儲(chǔ)器和外設(shè)都被映射到數(shù)據(jù)主端口的地址空間。存儲(chǔ)器系統(tǒng)中處理器數(shù)據(jù)總線低8位分別連接存儲(chǔ)器數(shù)據(jù)線70。字(小端模式)低字節(jié)高字節(jié)高地址低地址3.8 存儲(chǔ)器及I/O結(jié)構(gòu)n指令與數(shù)據(jù)總線指令主端口nNios II指令總線作為32位Avalon主端口來(lái)實(shí)現(xiàn)。指令主端口只執(zhí)行一個(gè)功能:對(duì)處理器將要執(zhí)行的指令進(jìn)行取指。n指令主端口是具有流水線屬性的Avalon主端口。n指令主端口依賴Avalo
32、n交換結(jié)構(gòu)中的動(dòng)態(tài)總線對(duì)齊邏輯始終能接收32位數(shù)據(jù)。nNios II結(jié)構(gòu)支持片內(nèi)高速緩存。nNios II結(jié)構(gòu)還支持緊耦合存儲(chǔ)器,對(duì)緊耦合存儲(chǔ)器的訪問(wèn)能實(shí)現(xiàn)低延遲。說(shuō)明:說(shuō)明:指令主端口不執(zhí)行任何寫(xiě)操作。動(dòng)態(tài)總線對(duì)齊邏輯不管目標(biāo)存儲(chǔ)器的寬度如何,每次取指都會(huì)返回一個(gè)完整的指令字,因而程序不需要 知道Nios II處理器系統(tǒng)中的存儲(chǔ)器寬度。1.片內(nèi)高速緩存,用于改善訪問(wèn)較慢存儲(chǔ)器時(shí)的平均指令取指性能。3.8 存儲(chǔ)器及I/O結(jié)構(gòu)n指令與數(shù)據(jù)總線數(shù)據(jù)主端口nNios II數(shù)據(jù)總線作為32位Avalon主端口來(lái)實(shí)現(xiàn)。數(shù)據(jù)主端口執(zhí)行兩個(gè)功能:1當(dāng)處理器執(zhí)行裝載指令時(shí),從存儲(chǔ)器或外設(shè)中讀數(shù)據(jù)。2當(dāng)處理器執(zhí)
33、行存儲(chǔ)指令時(shí),將數(shù)據(jù)寫(xiě)入存儲(chǔ)器或外設(shè)。n數(shù)據(jù)主端口不支持Avalon流水線傳輸。n同指令主端口一樣Nios II結(jié)構(gòu)支持片內(nèi)高速緩存,改善平均數(shù)據(jù)傳輸性能。nNios II結(jié)構(gòu)也支持緊耦合存儲(chǔ)器以實(shí)現(xiàn)低延遲。說(shuō)明:說(shuō)明:1.數(shù)據(jù)主端口中存儲(chǔ)器流水線延遲被看作等待周期。當(dāng)數(shù)據(jù)主端口連接到零等待存儲(chǔ)器時(shí),裝載和存儲(chǔ)操作能夠在一個(gè)時(shí)鐘周期內(nèi)完成。3.8 存儲(chǔ)器及I/O結(jié)構(gòu)n指令與數(shù)據(jù)總線指令和數(shù)據(jù)共享的存儲(chǔ)器通常,指令和數(shù)據(jù)主端口共享含有指令和數(shù)據(jù)的存儲(chǔ)器。當(dāng)處理器內(nèi)核使用獨(dú)立的指令總線和數(shù)據(jù)總線時(shí),整個(gè)Nios II處理器系統(tǒng)對(duì)外呈現(xiàn)單一的、共用的指令/數(shù)據(jù)總線。說(shuō)明:說(shuō)明:1.數(shù)據(jù)和指令主端口從
34、來(lái)不會(huì)出現(xiàn)一個(gè)端口使另一個(gè)端口處于等待狀態(tài)的停滯狀況。為獲得最高性能,對(duì)于指令和數(shù)據(jù)主端口共享的任何存儲(chǔ)器,數(shù)據(jù)主端口被指定為更高的優(yōu)先級(jí)。3.8 存儲(chǔ)器及I/O結(jié)構(gòu)n高速緩存(Cache)Nios II結(jié)構(gòu)的指令主端口和數(shù)據(jù)主端口都支持高速緩存。作為NiosII處理器組成部分的高速緩存在SOPC Builder中是可選的,這取決于用戶對(duì)系統(tǒng)存儲(chǔ)性能以及FPGA資源的使用要求。包含高速緩存不會(huì)影響程序的功能,但會(huì)影響處理器取指和讀/寫(xiě)數(shù)據(jù)時(shí)的速度。高速緩存改善性能的功效是基于以下前提的:1常規(guī)存儲(chǔ)器位于片外,訪問(wèn)時(shí)間比片內(nèi)存儲(chǔ)器要長(zhǎng)。2循環(huán)執(zhí)行的、最大的,關(guān)鍵性能的指令序列長(zhǎng)度小于指令高速緩存
35、。3關(guān)鍵性能數(shù)據(jù)的最大模塊小于數(shù)據(jù)高速緩存。3.8 存儲(chǔ)器及I/O結(jié)構(gòu)n高速緩存(Cache)例如在以下的情況下高速緩存將無(wú)法改善執(zhí)行速度:Nios II處理器系統(tǒng)只含有快速的片內(nèi)存儲(chǔ)器(即從不訪問(wèn)較慢的片外存儲(chǔ)器)。程序的關(guān)鍵循環(huán)是2KB,而指令高速緩存的大小為1KB。由于性能上的原因,應(yīng)用程序始終要求某些數(shù)據(jù)或部分代碼存放在高速緩存中,那么緊耦合存儲(chǔ)器可能會(huì)提供一個(gè)更合適的解決方案。注意:注意:Cache雖然改善了系統(tǒng)的整體性能,但使程序的執(zhí)行時(shí)間變得不可預(yù)測(cè)。對(duì)于實(shí)時(shí)系統(tǒng)來(lái)說(shuō)這一點(diǎn)至關(guān)重要。3.8 存儲(chǔ)器及I/O結(jié)構(gòu)n緊耦合存儲(chǔ)器(TCM)緊耦合存儲(chǔ)器緊耦合存儲(chǔ)器(TCM):緊耦合存儲(chǔ)器
36、是一種緊挨著內(nèi)核的快速SRAM,它不僅能改善系統(tǒng)性能,而且保證了裝載和存儲(chǔ)指令或數(shù)據(jù)的時(shí)間是確定的。緊耦合存儲(chǔ)器可向?qū)π阅芤髧?yán)格的應(yīng)用提供低延遲訪問(wèn)。Nios II 存儲(chǔ)器和I/O結(jié)構(gòu)緊耦合指令存儲(chǔ)器緊耦合指令存儲(chǔ)器3.8 存儲(chǔ)器及I/O結(jié)構(gòu)n緊耦合存儲(chǔ)器(TCM)與高速緩存相比具有的優(yōu)點(diǎn):1性能類似于高速緩存;2軟件能夠保證將關(guān)鍵性能的代碼或數(shù)據(jù)存放在緊耦合存儲(chǔ)器中;3代碼執(zhí)行的確定性裝載和存儲(chǔ)指令或數(shù)據(jù)的時(shí)間是可預(yù)測(cè)的。Nios II 存儲(chǔ)器和I/O結(jié)構(gòu)緊耦合指令存儲(chǔ)器緊耦合指令存儲(chǔ)器3.8 存儲(chǔ)器及I/O結(jié)構(gòu)n緊耦合存儲(chǔ)器介紹實(shí)際上,緊耦合存儲(chǔ)器是Nios II處理器內(nèi)核上的一個(gè)獨(dú)立的
37、主端口,與指令或數(shù)據(jù)主端口類似。Nios II結(jié)構(gòu)指令和數(shù)據(jù)訪問(wèn)都支持緊耦合存儲(chǔ)器。Nios II內(nèi)核可以不包含緊耦合存儲(chǔ)器,也可以包含一個(gè)或多個(gè)緊耦合存儲(chǔ)器。每個(gè)緊耦合存儲(chǔ)器端口直接與具有固定的低延遲的存儲(chǔ)器相連,該存儲(chǔ)器在Nios II內(nèi)核的外部,通常使用FPGA片內(nèi)存儲(chǔ)器。緊耦合存儲(chǔ)器與其它通過(guò)Avalon交換結(jié)構(gòu)連接的存儲(chǔ)器件一樣,占據(jù)標(biāo)準(zhǔn)的地址空間。它的地址范圍在生成系統(tǒng)時(shí)確定。系統(tǒng)在訪問(wèn)指定的代碼或數(shù)據(jù)時(shí),能夠使用緊耦合存儲(chǔ)器來(lái)獲得最高性能。例如,中斷頻繁的應(yīng)用能夠?qū)惓L幚泶a放在緊耦合存儲(chǔ)器中來(lái)降低中斷延遲。類似的,計(jì)算密集型的數(shù)字信號(hào)處理(DSP)應(yīng)用能夠?qū)⒕o耦合存儲(chǔ)器指定為
38、數(shù)據(jù)緩存區(qū),實(shí)現(xiàn)最快的數(shù)據(jù)訪問(wèn)。3.8 存儲(chǔ)器及I/O結(jié)構(gòu)n地址映射在Nios II處理器系統(tǒng)中,存儲(chǔ)器和外設(shè)的地址映射是與設(shè)計(jì)相關(guān)的,由設(shè)計(jì)人員在系統(tǒng)生成時(shí)指定。這里要特別提到的是3個(gè)CPU相關(guān)的地址:復(fù)位地址、異常地址以及斷點(diǎn)處理(break handler)程序的地址。程序員通過(guò)使用宏和驅(qū)動(dòng)程序來(lái)訪問(wèn)存儲(chǔ)器和外設(shè),靈活的地址映射并不會(huì)影響應(yīng)用程序開(kāi)發(fā)人員。第3章 目錄n3.1 Nios II處理器結(jié)構(gòu)n3.2 Nios II的寄存器文件n3.3 算數(shù)邏輯單元(ALU)n3.4 復(fù)位信號(hào)n3.5 Nios II處理器運(yùn)行模式n3.6 異常和中斷控制器n3.7 Nios II的異常處理n3.8 存儲(chǔ)器及I/O結(jié)構(gòu)n3.9 存儲(chǔ)器和外設(shè)訪問(wèn)n3.10 Nios II處理器性能3.9 存儲(chǔ)器和外設(shè)訪問(wèn)Nios II地址是32位的,允許對(duì)4GB地址空間進(jìn)行訪問(wèn),但現(xiàn)有的Nios II內(nèi)核都將地址限制在31位,即2GB地址空間。處理器的數(shù)據(jù)總線為32位寬度。指令集提供字節(jié),半字(16bit)或字(32位)的讀寫(xiě)指令。Nios II結(jié)構(gòu)采用小端模式,對(duì)于保存在存儲(chǔ)器中的大于8位的數(shù)據(jù),最高有效位在高地址。外設(shè)數(shù)據(jù)存儲(chǔ)器程序存儲(chǔ)器地址空間未映射4GB地址空間32位寬度映射映射映射映射到的具體位置在生成系統(tǒng)時(shí)確定對(duì)此地址空間的讀寫(xiě)將產(chǎn)生一個(gè)不確定的值3.9 存儲(chǔ)器
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度體育賽事運(yùn)營(yíng)管理場(chǎng)規(guī)則與格式規(guī)范3篇
- 二零二四年度一致行動(dòng)人文化旅游產(chǎn)業(yè)合作協(xié)議合同3篇
- 2025年水電安裝工程設(shè)備采購(gòu)與安裝合同6篇
- 2025賓館與旅游公司聯(lián)合運(yùn)營(yíng)客房租賃合同范本2篇
- 2024物流企業(yè)稅收優(yōu)惠適用合同
- 2025年度充電樁充電樁項(xiàng)目融資與投資合同3篇
- 2025廠房買(mǎi)賣合同模板:工業(yè)地產(chǎn)投資合作框架3篇
- 2025年度龍門(mén)吊拆除設(shè)備再利用及資源化利用合同范本4篇
- 2025年度裝飾藝術(shù)玻璃定制銷售合同3篇
- 二零二四年倉(cāng)儲(chǔ)物流中心停車場(chǎng)租賃及倉(cāng)儲(chǔ)服務(wù)合同3篇
- 公司SWOT分析表模板
- 小學(xué)預(yù)防流行性感冒應(yīng)急預(yù)案
- 肺癌術(shù)后出血的觀察及護(hù)理
- 聲紋識(shí)別簡(jiǎn)介
- 生物醫(yī)藥大數(shù)據(jù)分析平臺(tái)建設(shè)-第1篇
- 基于Android的天氣預(yù)報(bào)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 沖鋒舟駕駛培訓(xùn)課件
- 美術(shù)家協(xié)會(huì)會(huì)員申請(qǐng)表
- 聚合收款服務(wù)流程
- 中石化浙江石油分公司中石化溫州靈昆油庫(kù)及配套工程項(xiàng)目環(huán)境影響報(bào)告書(shū)
- 搞笑朗誦我愛(ài)上班臺(tái)詞
評(píng)論
0/150
提交評(píng)論