




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、第三章NiosII體系結(jié)構(gòu)本章的目的是讓讀者建立一個本章的目的是讓讀者建立一個Nios II處理器的處理器的概念,了解一些概念,了解一些Nios II處理器的工作細節(jié),這對開處理器的工作細節(jié),這對開發(fā)出高效率、健壯的程序是非常有好處的。發(fā)出高效率、健壯的程序是非常有好處的。體系結(jié)構(gòu)(體系結(jié)構(gòu)(Architecture)主要用來描述面向程)主要用來描述面向程序員的序員的CPU抽象,而不是其具體實現(xiàn)。本章先介紹抽象,而不是其具體實現(xiàn)。本章先介紹NiosII處理器構(gòu)架,接著介紹處理器構(gòu)架,接著介紹NiosII的寄存器文件的寄存器文件(Register File),然后介紹,然后介紹NiosII的異常
2、處理,最的異常處理,最后介紹后介紹NiosII的存儲器結(jié)構(gòu)并分析三種的存儲器結(jié)構(gòu)并分析三種NiosII處理處理器的性能特點。器的性能特點。主要內(nèi)容主要內(nèi)容3.1 Nios II處理器結(jié)構(gòu)處理器結(jié)構(gòu) Nios II是一種軟核是一種軟核(Soft-Core)處理器處理器。 所謂軟核,是指未被固化在硅片上,使用時需要所謂軟核,是指未被固化在硅片上,使用時需要借助借助EDA軟件對其進行配置并下載到可編程芯片軟件對其進行配置并下載到可編程芯片(比如比如FPGA)中的中的IP核。軟核最大的特點就是可由核。軟核最大的特點就是可由用戶按需要進行配置。用戶按需要進行配置。3.1 Nios II處理器結(jié)構(gòu) Nio
3、s II軟核處理器簡介軟核處理器簡介Nios II 處理器系列包括三種內(nèi)核處理器系列包括三種內(nèi)核Nios II32位軟核處理器Nios II/f (快速快速)Nios II/e (經(jīng)濟經(jīng)濟)Nios II/s (標準標準)性能最高,但占用的邏輯資源最多。性能最高,但占用的邏輯資源最多。占用的邏輯資源最少,但性能最低。占用的邏輯資源最少,但性能最低。平衡的性能和尺寸。平衡的性能和尺寸。NiosII/s內(nèi)核比內(nèi)核比第一代的第一代的Nios CPU更快,占用的資更快,占用的資源更少。源更少。3.1 Nios II處理器結(jié)構(gòu)Nios II32位軟核處理器位軟核處理器Nios II處理器結(jié)構(gòu)框圖處理器結(jié)
4、構(gòu)框圖地址發(fā)生器地址發(fā)生器&程序控制器程序控制器異??刂破鳟惓?刂破髦袛嗫刂破髦袛嗫刂破魍ㄓ眉拇嫫鹘M通用寄存器組r0.r31控制寄存器組控制寄存器組ctl0.ctl5指令指令Cache數(shù)據(jù)數(shù)據(jù)Cache算術(shù)邏輯單元算術(shù)邏輯單元(ALU )用戶邏輯用戶邏輯JTAG接口接口NiosII處理器核處理器核緊耦合緊耦合指令存儲器指令存儲器緊耦合緊耦合指令存儲器指令存儲器緊耦合緊耦合數(shù)據(jù)存儲器數(shù)據(jù)存儲器緊耦合緊耦合數(shù)據(jù)存儲器數(shù)據(jù)存儲器指令總線指令總線數(shù)據(jù)總線數(shù)據(jù)總線clockreset軟件調(diào)軟件調(diào)試接口試接口中斷源中斷源0.31IO口口cpu _resetrequestcpu _ resettak
5、en3.1 Nios II處理器結(jié)構(gòu) 數(shù)據(jù)處理主要由算術(shù)數(shù)據(jù)處理主要由算術(shù)邏輯單元完成,在現(xiàn)邏輯單元完成,在現(xiàn)有的有的Nios II內(nèi)核中暫內(nèi)核中暫時沒有協(xié)處理器。時沒有協(xié)處理器。 用戶邏輯接口用來連用戶邏輯接口用來連接用戶定制的邏輯電接用戶定制的邏輯電路與路與Nios II內(nèi)核。內(nèi)核。Nios II處理器結(jié)構(gòu)框圖處理器結(jié)構(gòu)框圖 Nios II采用哈佛結(jié)構(gòu),數(shù)據(jù)總線和指令總線分開。采用哈佛結(jié)構(gòu),數(shù)據(jù)總線和指令總線分開。 為了調(diào)試方便,為了調(diào)試方便,Nios II處理器集成了一個處理器集成了一個JTAG調(diào)試模塊。調(diào)試模塊。地址發(fā)生器&程序控制器異??刂破髦袛嗫刂破魍ㄓ眉拇嫫鹘Mr0.r31
6、控制寄存器組ctl 0.ctl 5指令Cache指令Cache算術(shù)邏輯單元(ALU)用戶邏輯JTAG接口NiosII 處理器核緊耦合指令存儲器緊耦合指令存儲器緊耦合數(shù)據(jù)存儲器緊耦合數(shù)據(jù)存儲器指令總線數(shù)據(jù)總線clockreset軟件調(diào)試接口中斷源0.31 IO口cpu _resetrequestcpu _resettaken3.1 Nios II處理器結(jié)構(gòu) 為了提高系統(tǒng)的整體為了提高系統(tǒng)的整體性能,性能,Nios II內(nèi)核不內(nèi)核不僅可以集成數(shù)據(jù)僅可以集成數(shù)據(jù)Cache和指令和指令Cache 還帶有緊耦合存儲器還帶有緊耦合存儲器TCM接口。接口。TCM可以可以使使Nios II處理器既能處理器既能
7、提高性能,又能獲得提高性能,又能獲得可預測的實時響應。可預測的實時響應。Nios II處理器結(jié)構(gòu)框圖處理器結(jié)構(gòu)框圖地址發(fā)生器&程序控制器異常控制器中斷控制器通用寄存器組r0.r31控制寄存器組ctl 0.ctl 5指令Cache指令Cache算術(shù)邏輯單元(ALU)用戶邏輯JTAG接口NiosII 處理器核緊耦合指令存儲器緊耦合指令存儲器緊耦合數(shù)據(jù)存儲器緊耦合數(shù)據(jù)存儲器指令總線數(shù)據(jù)總線clockreset軟件調(diào)試接口中斷源0.31 IO口cpu _resetrequestcpu _resettaken3.1 Nios II處理器結(jié)構(gòu) Nios II把外部硬件的把外部硬件的中斷事件交由中斷
8、控中斷事件交由中斷控制器管理,內(nèi)核異常制器管理,內(nèi)核異常事件交由異??刂破魇录挥僧惓?刂破鞴芾怼9芾?。 Nios II的寄存器文件包括的寄存器文件包括32個通用寄存器和個通用寄存器和6個控制寄個控制寄存器,存器,Nios II結(jié)構(gòu)允許將來添加浮點寄存器結(jié)構(gòu)允許將來添加浮點寄存器Nios II處理器結(jié)構(gòu)框圖處理器結(jié)構(gòu)框圖地址發(fā)生器&程序控制器異常控制器中斷控制器通用寄存器組r0.r31控制寄存器組ctl 0.ctl 5指令Cache指令Cache算術(shù)邏輯單元(ALU)用戶邏輯JTAG接口NiosII 處理器核緊耦合指令存儲器緊耦合指令存儲器緊耦合數(shù)據(jù)存儲器緊耦合數(shù)據(jù)存儲器指令總線數(shù)據(jù)總
9、線clockreset軟件調(diào)試接口中斷源0.31 IO口cpu _resetrequestcpu _resettaken3.2 Nios II的寄存器文件 Nios II的通用寄存器的通用寄存器盡管硬件對寄存器的用法幾乎沒有規(guī)定,但是它們在盡管硬件對寄存器的用法幾乎沒有規(guī)定,但是它們在實際使用過程中還是遵循一些約定俗成的慣例。如果想實際使用過程中還是遵循一些約定俗成的慣例。如果想使用他人的子程序,編譯器或操作系統(tǒng),最好還是遵守使用他人的子程序,編譯器或操作系統(tǒng),最好還是遵守這些慣例。這些慣例。我們通過下面的通用寄存器一覽表來了解我們通過下面的通用寄存器一覽表來了解Nios II的的32個通用寄
10、存器個通用寄存器。通用寄存器組通用寄存器組寄存器寄存器助記符助記符功能功能寄存器寄存器助記符助記符功能功能r0zero清零清零r16子程序要保存的寄存器子程序要保存的寄存器r1at匯編中的臨時變量匯編中的臨時變量r17子程序要保存的寄存器子程序要保存的寄存器r2函數(shù)返回值(低函數(shù)返回值(低32位)位)r18子程序要保存的寄存器子程序要保存的寄存器r3函數(shù)返回值(高函數(shù)返回值(高32位)位)r19子程序要保存的寄存器子程序要保存的寄存器r4傳遞給函數(shù)的參數(shù)傳遞給函數(shù)的參數(shù)r20子程序要保存的寄存器子程序要保存的寄存器r5傳遞給函數(shù)的參數(shù)傳遞給函數(shù)的參數(shù)r21子程序要保存的寄存器子程序要保存的寄存
11、器r6傳遞給函數(shù)的參數(shù)傳遞給函數(shù)的參數(shù)r22子程序要保存的寄存器子程序要保存的寄存器r7傳遞給函數(shù)的參數(shù)傳遞給函數(shù)的參數(shù)r23子程序要保存的寄存器子程序要保存的寄存器r8調(diào)用者要保存的寄存器調(diào)用者要保存的寄存器r24et為異常處理保留為異常處理保留r9調(diào)用者要保存的寄存器調(diào)用者要保存的寄存器r25bt為程序斷點保留為程序斷點保留r10調(diào)用者要保存的寄存器調(diào)用者要保存的寄存器r26gp全局指針全局指針r11調(diào)用者要保存的寄存器調(diào)用者要保存的寄存器r27sp堆棧指針堆棧指針r12調(diào)用者要保存的寄存器調(diào)用者要保存的寄存器r28fp幀指針幀指針r13調(diào)用者要保存的寄存器調(diào)用者要保存的寄存器r29ea異
12、常返回地址異常返回地址r14調(diào)用者要保存的寄存器調(diào)用者要保存的寄存器r30ba斷點返回地址斷點返回地址r15調(diào)用者要保存的寄存器調(diào)用者要保存的寄存器r31ra函數(shù)返回地址函數(shù)返回地址通用寄存器一覽通用寄存器一覽r0或zero: 總是存放0值,對它讀寫無效。Nios II沒有專門的清零指令,所以常用它來對寄存器清零。r1或at: 這個寄存器在匯編程序中常用作臨時變量。r2,r3: 用來傳遞4個非浮點參數(shù)給一個子程序。r3存放返回值的高32位。如果這兩個寄存器不夠存放需要返回的值,編譯器將通過堆棧來傳遞。r4r7: 用來傳遞4個非浮點參數(shù)給一個子程序。r4傳遞第一個參數(shù),r5傳遞第二個參數(shù),以此類
13、推。如果這四個寄存器不夠傳遞參數(shù),編譯器將通過堆棧來傳遞。r8r15: 習慣上,子程序可以使用其中的值而不用保存它們。但使用者必須記住,這些寄存器里面的值可能被一次子程序調(diào)用改變,所以調(diào)用著有責任保護它們。通用寄存器組通用寄存器組寄存器寄存器助記符助記符功能功能寄存器寄存器助記符助記符功能功能r0zero清零清零r16子程序要保存的寄存器子程序要保存的寄存器r1at匯編中的臨時變量匯編中的臨時變量r17子程序要保存的寄存器子程序要保存的寄存器r2函數(shù)返回值(低函數(shù)返回值(低32位)位)r18子程序要保存的寄存器子程序要保存的寄存器r3函數(shù)返回值(高函數(shù)返回值(高32位)位)r19子程序要保存的
14、寄存器子程序要保存的寄存器r4傳遞給函數(shù)的參數(shù)傳遞給函數(shù)的參數(shù)r20子程序要保存的寄存器子程序要保存的寄存器r5傳遞給函數(shù)的參數(shù)傳遞給函數(shù)的參數(shù)r21子程序要保存的寄存器子程序要保存的寄存器r6傳遞給函數(shù)的參數(shù)傳遞給函數(shù)的參數(shù)r22子程序要保存的寄存器子程序要保存的寄存器r7傳遞給函數(shù)的參數(shù)傳遞給函數(shù)的參數(shù)r23子程序要保存的寄存器子程序要保存的寄存器r8調(diào)用者要保存的寄存器調(diào)用者要保存的寄存器r24et為異常處理保留為異常處理保留r9調(diào)用者要保存的寄存器調(diào)用者要保存的寄存器r25bt為程序斷點保留為程序斷點保留r10調(diào)用者要保存的寄存器調(diào)用者要保存的寄存器r26gp全局指針全局指針r11調(diào)用
15、者要保存的寄存器調(diào)用者要保存的寄存器r27sp堆棧指針堆棧指針r12調(diào)用者要保存的寄存器調(diào)用者要保存的寄存器r28fp幀指針幀指針r13調(diào)用者要保存的寄存器調(diào)用者要保存的寄存器r29ea異常返回地址異常返回地址r14調(diào)用者要保存的寄存器調(diào)用者要保存的寄存器r30ba斷點返回地址斷點返回地址r15調(diào)用者要保存的寄存器調(diào)用者要保存的寄存器r31ra函數(shù)返回地址函數(shù)返回地址通用寄存器一覽r16r23: 習慣上,子程序必須保證這些寄存器中的值在調(diào)用前后保持不變,即要么在子程序執(zhí)行時不使用它們,要么使用前把它們保存在堆棧中并在退出時恢復。r24或et: 在異常處理時使用。使用時,可以不恢復原來的值。該寄
16、存器很少作用其它用途。r25或bt: 在程序斷點處理時使用。使用時,可以不恢復原來的值。該寄存器很少作其它用途。r26或gp: 它指向靜態(tài)數(shù)據(jù)區(qū)中的一個運行時臨時決定的地址。這意味著在存取位于gp值上下32KB范圍內(nèi)的數(shù)據(jù)時,只需要一條以gp作為基指針的指令即可完成。r27或sp: 堆棧指針。Nios II沒有專門的出棧(POP)入棧(PUSH)指令,在子程序入口處,sp被調(diào)整指向棧底部,然后以sp為基址,用寄存器基址偏移地址的方式來訪問棧中的數(shù)據(jù)。r28或fp: 幀指針,習慣上用于跟蹤棧的變化和維護運行時環(huán)境。r29或ea: 保存異常返回地址。r30或ba: 保存斷點返回地址。r31或ra:
17、 保存函數(shù)返回地址。3.2 Nios II的寄存器文件 Nios II的控制寄存器的控制寄存器Nios II的控制寄存器共有的控制寄存器共有6個,它們的讀個,它們的讀/寫訪問只能寫訪問只能在超級用戶態(tài)在超級用戶態(tài)(Supervisor Model)由專用的控制寄存器由專用的控制寄存器讀讀/寫指令寫指令(rdctl和和wrctl)實現(xiàn)。實現(xiàn)。通過控制寄存器一覽表,來了解控制寄存器各位的意通過控制寄存器一覽表,來了解控制寄存器各位的意義。義。控制寄存器一覽控制寄存器一覽控制寄存器組控制寄存器組寄存器寄存器名字名字bit位意義:位意義: 31210ct10status保留保留UPIEct11esta
18、tus保留保留EUEPIEct12bstatus保留保留BUBPIEct13ienable中斷允許位中斷允許位ct14ipending中斷發(fā)生標志位中斷發(fā)生標志位ct15cpuid唯一的唯一的CPU序列號序列號status狀態(tài)寄存器:只有第1位和第0位有意義。第1位U反映計算機當前狀態(tài): 1表示處于用戶態(tài)(User-mode); 0表示處于超級用戶態(tài)(Supervisor Mode)。第0位PIE外設中斷允許位: 1表示允許外設中斷; 0表示禁止外設中斷??刂萍拇嫫饕挥[控制寄存器一覽控制寄存器組控制寄存器組寄存器寄存器名字名字bit位意義:位意義: 31210ct10status保留保留UPI
19、Ect11estatus保留保留EUEPIEct12bstatus保留保留BUBPIEct13ienable中斷允許位中斷允許位ct14ipending中斷發(fā)生標志位中斷發(fā)生標志位ct15cpuid唯一的唯一的CPU序列號序列號estatus、bstatus都是status寄存器的影子寄存器:發(fā)生斷點或者異常時:保存status寄存器的值;斷點或異常處理返回時:恢復status寄存器的值??刂萍拇嫫饕挥[控制寄存器一覽控制寄存器組控制寄存器組寄存器寄存器名字名字bit位意義:位意義: 31210ct10status保留保留UPIEct11estatus保留保留EUEPIEct12bstatus保
20、留保留BUBPIEct13ienable中斷允許位中斷允許位ct14ipending中斷發(fā)生標志位中斷發(fā)生標志位ct15cpuid唯一的唯一的CPU序列號序列號ienable中斷允許寄存器:每一位控制一個中斷通道。例如:第0位為1:表示允許第0號中斷發(fā)生;第0位為0:表示禁止第0號中斷發(fā)生;ipending中斷發(fā)生標志位:每一位反映一個中斷發(fā)生。例如:第0位為1:表示第0號中斷發(fā)生;第0位為0:表示第0號中斷未發(fā)生;cpuid此寄存器中裝載著處理器的id號:該id號在生成Nios II系統(tǒng)時產(chǎn)生。Id號在多處理器系統(tǒng)中可以作為分辨CPU的標識。3.3 算術(shù)邏輯單元算術(shù)邏輯單元(ALU)Nios
21、 II ALU支持的操作支持的操作種種類類描描述述算術(shù)運算算術(shù)運算ALU支持有符號和無符號數(shù)的加、減、乘和除法支持有符號和無符號數(shù)的加、減、乘和除法關(guān)系運算關(guān)系運算支持有符號和無符號數(shù)的等于、不等于、大于等于和支持有符號和無符號數(shù)的等于、不等于、大于等于和小于(小于(=,!=,=,)關(guān)系運算)關(guān)系運算邏輯運算邏輯運算支持支持AND、OR、NOR和和XOR邏輯運算邏輯運算移位運算移位運算支持移位和循環(huán)移位運算,在每條指令中可以將數(shù)據(jù)支持移位和循環(huán)移位運算,在每條指令中可以將數(shù)據(jù)移位和環(huán)移移位和環(huán)移0到到31位。支持算術(shù)右移和算術(shù)左移,還位。支持算術(shù)右移和算術(shù)左移,還支持左、右循環(huán)移位支持左、右循
22、環(huán)移位3.3 算術(shù)邏輯單元算術(shù)邏輯單元(ALU) 未實現(xiàn)的指令未實現(xiàn)的指令 Nios II/e 不支持不支持mul, muli, mulxsu, div, divu 硬件乘法器和硬件除法器硬件乘法器和硬件除法器 用戶指令用戶指令 用戶指令邏輯直接與用戶指令邏輯直接與ALU相連相連 浮點指令浮點指令 支持單精度浮點指令支持單精度浮點指令 3.3 算術(shù)邏輯單元算術(shù)邏輯單元(ALU)3.4 復位信號復位信號地址發(fā)生器&程序控制器異常控制器中斷控制器算術(shù)邏輯單元用戶邏輯JTAG接口NiosII處理器核clockreset軟件調(diào)試接口中斷源0 .31 IO口cpu _resetrequestcp
23、u _resettaken Nios II處理器支持兩個復位信號:處理器支持兩個復位信號:reset和和cpu_resetrequestreset:是一個強制處理器核立即進是一個強制處理器核立即進入復位狀態(tài)的全局硬件復位信號。入復位狀態(tài)的全局硬件復位信號。cpu_resetrequest:是一個可以讓是一個可以讓CPU復位但不影響復位但不影響Nios II系統(tǒng)其它外系統(tǒng)其它外設的局部復位信號。設的局部復位信號。Nios II處理器結(jié)構(gòu)框圖處理器結(jié)構(gòu)框圖3.4 復位信號復位信號 CPU復位后,復位后,Nios II處理器將執(zhí)行下列操作:處理器將執(zhí)行下列操作:清除狀態(tài)寄存器清除狀態(tài)寄存器statu
24、s,使之為,使之為0 x0;指令指令Cache與程序存儲器的關(guān)聯(lián)被置為無效,處理器從與程序存儲器的關(guān)聯(lián)被置為無效,處理器從固態(tài)程序存儲器固態(tài)程序存儲器(比如比如Flash)中的中的reset地址處取得第一條指地址處取得第一條指令;令;從復位地址處開始執(zhí)行程序。從復位地址處開始執(zhí)行程序。清除清除statusstatus:是為了使處理器進入超級用戶模式并禁止是為了使處理器進入超級用戶模式并禁止硬件中斷。硬件中斷。使當前使當前CacheCache隊列無效:隊列無效:是為了保證取指是從復位地址所在的非是為了保證取指是從復位地址所在的非CacheCache存儲區(qū),而不是當前指令存儲區(qū),而不是當前指令Ca
25、cheCache。復位地址在系統(tǒng)生成時指定。復位地址在系統(tǒng)生成時指定。3.4 復位信號復位信號 以下部件的狀態(tài)在復位后是不確定的:以下部件的狀態(tài)在復位后是不確定的:通用寄存器通用寄存器(除除zero(r0):總是存放:總是存放0值值);控制寄存器控制寄存器(除除status(ct10),被置為被置為0 x0);指令和數(shù)據(jù)存儲器。指令和數(shù)據(jù)存儲器。Cache(除與復位地址關(guān)聯(lián)的指令除與復位地址關(guān)聯(lián)的指令Cache);與與CPU相連的各外設,各外設復位后的狀態(tài)要具體參相連的各外設,各外設復位后的狀態(tài)要具體參考各外設的手冊;考各外設的手冊;用戶指令邏輯在復位后的狀態(tài)要參看用戶指令邏輯的手用戶指令邏輯
26、在復位后的狀態(tài)要參看用戶指令邏輯的手冊或說明。冊或說明。3.5 Nios II處理器運行模式處理器運行模式 Nios II處理器有處理器有3種運行模式:種運行模式:用戶模式用戶模式(User Mode);超級用戶模式超級用戶模式(Supervisor Mode) ;調(diào)試模式調(diào)試模式(Debug Mode) 。 通常系統(tǒng)程序代碼運行在超級用戶模式。在版本以前的通常系統(tǒng)程序代碼運行在超級用戶模式。在版本以前的Nios II 處理器都不支持用戶模式,永遠都運行在超級用戶模式。處理器都不支持用戶模式,永遠都運行在超級用戶模式。調(diào)試模式:擁有最大的訪問權(quán)限,可以無限制地訪問所有的功能模塊;超級用戶模式:
27、除了不能訪問與調(diào)試有關(guān)的寄存器(bt、ba和bstatus)外,無其它訪問限制;用戶模式:是超級用戶模式功能訪問的一個子集,它不能訪問控制寄存器和一些通用寄存器。3.5 Nios II處理器運行模式 Nios II 處理器處理器3種運行模式切換種運行模式切換Nios II處理器處理器3種運行模式種運行模式3.6 異常和中斷控制器異常控制器異??刂破鱊ios II體系結(jié)構(gòu)提供一個簡單的非向量異常控制體系結(jié)構(gòu)提供一個簡單的非向量異??刂破鱽硖幚硭蓄愋偷漠惓!F鱽硖幚硭蓄愋偷漠惓?。中斷控制器中斷控制器Nios II體系結(jié)構(gòu)支持體系結(jié)構(gòu)支持32個外部硬件中斷,即個外部硬件中斷,即irq0irq31
28、。每個中斷對應一個獨立的中斷通道。每個中斷對應一個獨立的中斷通道。3.7 Nios II的異常處理硬件中斷硬件中斷軟件異常軟件異常軟件陷阱異常軟件陷阱異常未定義指令異常未定義指令異常其它異常其它異常異常類型異常類型 一個外設能通過處理器一個外設能通過處理器32個中斷輸入之一,請求產(chǎn)生個中斷輸入之一,請求產(chǎn)生一個硬件中斷。一個硬件中斷。 當程序遇到軟件陷阱指令當程序遇到軟件陷阱指令時,將產(chǎn)生軟件陷阱異常,時,將產(chǎn)生軟件陷阱異常,這在程序需要操作系統(tǒng)服務這在程序需要操作系統(tǒng)服務時常用到。操作系統(tǒng)的異常時常用到。操作系統(tǒng)的異常處理程序判斷產(chǎn)生軟件陷阱處理程序判斷產(chǎn)生軟件陷阱的原因,然后執(zhí)行相應任務。
29、的原因,然后執(zhí)行相應任務。Nios II異異常常包包括括3.7 Nios II的異常處理硬件中斷軟件異常軟件陷阱異常未定義指令異常其它異常當處理器執(zhí)行未定義指令當處理器執(zhí)行未定義指令時產(chǎn)生未定義指令異常。異時產(chǎn)生未定義指令異常。異常處理可以判斷哪個指令產(chǎn)常處理可以判斷哪個指令產(chǎn)生異常,如果指令不能通過生異常,如果指令不能通過硬件執(zhí)行,可以在一個異常硬件執(zhí)行,可以在一個異常服務程序中通過軟件方式仿服務程序中通過軟件方式仿真執(zhí)行。真執(zhí)行。其它異常類型是未將來準其它異常類型是未將來準備的。備的。Nios II異異常常包包括括異常類型異常類型3.7 Nios II的異常處理異常硬件處理流程異常硬件處理
30、流程當異常發(fā)生后,處理器會依次完成以下工作:當異常發(fā)生后,處理器會依次完成以下工作:把把status寄存器內(nèi)容復寄存器內(nèi)容復制到制到estatus寄存器中,寄存器中,保存當前處理器狀態(tài);保存當前處理器狀態(tài);清除清除status寄存器的寄存器的U位為位為0,強制處理器進,強制處理器進入超級用戶狀態(tài);入超級用戶狀態(tài);清除清除status寄存器的寄存器的PIE位為位為0,禁止所有,禁止所有的硬件中斷;的硬件中斷;把異常返回地把異常返回地址寫入址寫入ea寄存寄存器器(r29);跳轉(zhuǎn)到異常跳轉(zhuǎn)到異常處理地址。處理地址。123453.7 Nios II的異常處理的異常處理異常判別及優(yōu)先級異常判別及優(yōu)先級(
31、HAL)(EPIE=1)&(ipending!=0)?指令是在指令是在(ea-4)處嗎?處嗎?指令是在指令是在(ea-4)div、mul、mulxuu、等處嗎?、等處嗎?進入異常處理進入異常處理處理硬件中斷處理硬件中斷處理軟件陷阱處理軟件陷阱處理未定義指令處理未定義指令其它異常其它異常NoNoNoYesYesYes異常類型判別異常類型判別3.7 Nios II的異常處理的異常處理異常優(yōu)先級異常優(yōu)先級外部硬件中斷:外部硬件中斷:0號中斷優(yōu)先級為最高號中斷優(yōu)先級為最高軟件陷阱異常軟件陷阱異常未實現(xiàn)指令異常未實現(xiàn)指令異常其他情況其他情況3.7 Nios II的異常處理的異常處理異常的嵌套異常
32、的嵌套異常返回異常返回異常響應時間異常響應時間 實現(xiàn)異常嵌套,需在用戶實現(xiàn)異常嵌套,需在用戶ISR中打開中打開外部中斷允許外部中斷允許(PIE=1)。 在處理異常事件的過程中,可以響應在處理異常事件的過程中,可以響應由由trap指令引起的軟件陷阱異常指令引起的軟件陷阱異常 和未實和未實現(xiàn)指令異?!,F(xiàn)指令異常。 在異常嵌套之前,為了確保異常能正在異常嵌套之前,為了確保異常能正確返回,必須保存確返回,必須保存estatus寄存器寄存器(ctl1)的的ea寄存器寄存器(r29)。3.7 Nios II的異常處理異常的嵌套異常的嵌套異常返回異常返回異常響應時間異常響應時間當執(zhí)行異常返回指令當執(zhí)行異常返
33、回指令(eret)后,處理后,處理器會把器會把estatus寄存器寄存器(ctl1)內(nèi)容復制內(nèi)容復制到到status寄存器寄存器(ctl0)國,恢復異常前國,恢復異常前的處理器狀態(tài),然后把異常返回地址從的處理器狀態(tài),然后把異常返回地址從ea寄存器寄存器(r29)寫入程序計數(shù)器。寫入程序計數(shù)器。異常發(fā)生時,異常發(fā)生時,ea寄存器寄存器(r29)保存了保存了異常發(fā)生處下一條指令所在的地址。當異異常發(fā)生處下一條指令所在的地址。當異常從軟件陷阱異常常從軟件陷阱異常 或未定義指令異常返或未定義指令異常返回時,程序必須從軟件陷阱指令回時,程序必須從軟件陷阱指令trap或或未定義指令后繼續(xù)執(zhí)行,因此未定義指
34、令后繼續(xù)執(zhí)行,因此ea寄存器寄存器(r29)就是正確的異常返回地址。就是正確的異常返回地址。3.7 Nios II的異常處理異常的嵌套異常的嵌套異常返回異常返回異常響應時間異常響應時間如果是硬件中斷異常,程序必須從硬如果是硬件中斷異常,程序必須從硬件中斷異常發(fā)生處繼續(xù)執(zhí)行,因此必須將件中斷異常發(fā)生處繼續(xù)執(zhí)行,因此必須將ea寄存器寄存器(r29)中的地址減去中的地址減去(ea-4)作作為異常返回地址。為異常返回地址。3.7 Nios II的異常處理異常的嵌套異常的嵌套異常返回異常返回異常響應時間異常響應時間lNios II的非向量仲裁策略,導致了的非向量仲裁策略,導致了Nios II的異常處理延
35、時會比較大,它是靠提高的異常處理延時會比較大,它是靠提高Nios II處理器的執(zhí)行速度來彌補這一缺點的。處理器的執(zhí)行速度來彌補這一缺點的。見下表:見下表:NiosII類型類型Max. DMIPS異常反應時間異常反應時間進入進入ISR時延時延異?;謴蜁r延異常恢復時延NiosII/e3115485222NiosII/s12710128130NiosII/f2181010562Nios II 異常處理性能異常處理性能第3章 目錄3.1 Nios II處理器結(jié)構(gòu)3.2 Nios II的寄存器文件3.3 算數(shù)邏輯單元(ALU)3.4 復位信號3.5 Nios II處理器運行模式3.6 異常和中斷控制器3
36、.7 Nios II的異常處理3.8 存儲器及I/O結(jié)構(gòu)3.9 存儲器和外設訪問3.10 Nios II處理器性能3.8 存儲器及I/O結(jié)構(gòu)Nios II 存儲器和存儲器和I/O結(jié)構(gòu)結(jié)構(gòu)程序計數(shù)器通用寄存器文件指令總線選擇邏輯數(shù)據(jù)總線選擇邏輯指令高速緩存數(shù)據(jù)高速緩存緊耦合指令存儲器1緊耦合數(shù)據(jù)存儲器1緊耦合指令存儲器N存儲器從外設緊耦合數(shù)據(jù)存儲器NSMSMAvalon轉(zhuǎn)換結(jié)構(gòu)NiosII處理器內(nèi)核SMAvalon主端口Avalon從端口n NiosII內(nèi)核訪問存儲器和I/O的方式1.指令主端口2.指令高速緩存3.數(shù)據(jù)主端口4.數(shù)據(jù)高速緩存5.緊耦合指令或 數(shù)據(jù)存儲器端口3.8 存儲器及I/O結(jié)
37、構(gòu)Nios II 存儲器和存儲器和I/O結(jié)構(gòu)結(jié)構(gòu)程序計數(shù)器通用寄存器文件指令總線選擇邏輯數(shù)據(jù)總線選擇邏輯指令高速緩存數(shù)據(jù)高速緩存緊耦合指令存儲器1緊耦合數(shù)據(jù)存儲器1緊耦合指令存儲器N存儲器從外設緊耦合數(shù)據(jù)存儲器NSMSMAvalon轉(zhuǎn)換結(jié)構(gòu)NiosII處理器處理器內(nèi)核內(nèi)核SMAvalon主端口Avalon從端口n 指令與數(shù)據(jù)總線1.指令主端口指令主端口2.指令高速緩存指令高速緩存3.數(shù)據(jù)主端口數(shù)據(jù)主端口4.數(shù)據(jù)高速緩存數(shù)據(jù)高速緩存5.緊耦合指令或緊耦合指令或 數(shù)據(jù)存儲器端口數(shù)據(jù)存儲器端口3.8 存儲器及I/O結(jié)構(gòu)指令與數(shù)據(jù)總線指令與數(shù)據(jù)總線存儲器與外設訪問存儲器與外設訪問Nios II結(jié)構(gòu)提供
38、映射為存儲器的結(jié)構(gòu)提供映射為存儲器的I/O訪問。數(shù)據(jù)存儲訪問。數(shù)據(jù)存儲器和外設都被映射到數(shù)據(jù)主端口的地址空間。存儲器系器和外設都被映射到數(shù)據(jù)主端口的地址空間。存儲器系統(tǒng)中處理器數(shù)據(jù)總線低統(tǒng)中處理器數(shù)據(jù)總線低8位分別連接存儲器數(shù)據(jù)線位分別連接存儲器數(shù)據(jù)線70。字字(小端模式小端模式)低字節(jié)低字節(jié)高字節(jié)高字節(jié)高地址高地址低地址低地址3.8 存儲器及I/O結(jié)構(gòu)指令與數(shù)據(jù)總線指令與數(shù)據(jù)總線指令主端口指令主端口Nios II指令總線作為指令總線作為32位位Avalon主端口來實現(xiàn)。指令主端口只執(zhí)行主端口來實現(xiàn)。指令主端口只執(zhí)行一個功能:對處理器將要執(zhí)行的指令進行取指。一個功能:對處理器將要執(zhí)行的指令進行
39、取指。指令主端口是具有流水線屬性的指令主端口是具有流水線屬性的Avalon主端口。主端口。指令主端口依賴指令主端口依賴Avalon交換結(jié)構(gòu)中的動態(tài)總線對齊邏輯始終能接收交換結(jié)構(gòu)中的動態(tài)總線對齊邏輯始終能接收32位數(shù)據(jù)。位數(shù)據(jù)。Nios II結(jié)構(gòu)支持片內(nèi)高速緩存。結(jié)構(gòu)支持片內(nèi)高速緩存。Nios II結(jié)構(gòu)還支持緊耦合存儲器,對緊耦合存儲器的訪問能實現(xiàn)低延結(jié)構(gòu)還支持緊耦合存儲器,對緊耦合存儲器的訪問能實現(xiàn)低延遲。遲。說明:說明:指令主端口不執(zhí)行任何寫操作。指令主端口不執(zhí)行任何寫操作。動態(tài)總線對齊邏輯不管目標存儲器的寬度如何,每次取指都會返回一個完整的指令字,因而程序動態(tài)總線對齊邏輯不管目標存儲器的寬
40、度如何,每次取指都會返回一個完整的指令字,因而程序不需要不需要 知道知道Nios II處理器系統(tǒng)中的存儲器寬度。處理器系統(tǒng)中的存儲器寬度。1.片內(nèi)高速緩存,用于改善訪問較慢存儲器時的平均指令取指性能。片內(nèi)高速緩存,用于改善訪問較慢存儲器時的平均指令取指性能。3.8 存儲器及I/O結(jié)構(gòu)指令與數(shù)據(jù)總線指令與數(shù)據(jù)總線數(shù)據(jù)主端口數(shù)據(jù)主端口Nios II數(shù)據(jù)總線作為數(shù)據(jù)總線作為32位位Avalon主端口來實現(xiàn)。數(shù)據(jù)主端口執(zhí)行兩主端口來實現(xiàn)。數(shù)據(jù)主端口執(zhí)行兩個功能:個功能:1當處理器執(zhí)行裝載指令時,從存儲器或外設中讀數(shù)據(jù)。當處理器執(zhí)行裝載指令時,從存儲器或外設中讀數(shù)據(jù)。2當處理器執(zhí)行存儲指令時,將數(shù)據(jù)寫入
41、存儲器或外設。當處理器執(zhí)行存儲指令時,將數(shù)據(jù)寫入存儲器或外設。數(shù)據(jù)主端口不支持數(shù)據(jù)主端口不支持Avalon流水線傳輸。流水線傳輸。同指令主端口一樣同指令主端口一樣Nios II結(jié)構(gòu)支持片內(nèi)高速緩存,改善平均數(shù)據(jù)傳輸結(jié)構(gòu)支持片內(nèi)高速緩存,改善平均數(shù)據(jù)傳輸性能。性能。Nios II結(jié)構(gòu)也支持緊耦合存儲器以實現(xiàn)低延遲。結(jié)構(gòu)也支持緊耦合存儲器以實現(xiàn)低延遲。說明:說明:1.數(shù)據(jù)主端口中存儲器流水線延遲被看作等待周期。當數(shù)據(jù)主端口連接到零等待存儲器時,裝載和數(shù)據(jù)主端口中存儲器流水線延遲被看作等待周期。當數(shù)據(jù)主端口連接到零等待存儲器時,裝載和存儲操作能夠在一個時鐘周期內(nèi)完成。存儲操作能夠在一個時鐘周期內(nèi)完成
42、。3.8 存儲器及I/O結(jié)構(gòu)指令與數(shù)據(jù)總線指令與數(shù)據(jù)總線指令和數(shù)據(jù)共享的存儲器指令和數(shù)據(jù)共享的存儲器通常,指令和數(shù)據(jù)主端口共享含有指令和數(shù)據(jù)的存儲器。當處理器通常,指令和數(shù)據(jù)主端口共享含有指令和數(shù)據(jù)的存儲器。當處理器內(nèi)核使用獨立的指令總線和數(shù)據(jù)總線時,整個內(nèi)核使用獨立的指令總線和數(shù)據(jù)總線時,整個Nios II處理器系統(tǒng)對外呈處理器系統(tǒng)對外呈現(xiàn)單一的、共用的指令現(xiàn)單一的、共用的指令/數(shù)據(jù)總線。數(shù)據(jù)總線。說明:說明:1.數(shù)據(jù)和指令主端口從來不會出現(xiàn)一個端口使另一個端口處于等待狀態(tài)的停滯狀況。為獲得最高性數(shù)據(jù)和指令主端口從來不會出現(xiàn)一個端口使另一個端口處于等待狀態(tài)的停滯狀況。為獲得最高性能,對于指令
43、和數(shù)據(jù)主端口共享的任何存儲器,數(shù)據(jù)主端口被指定為更高的優(yōu)先級。能,對于指令和數(shù)據(jù)主端口共享的任何存儲器,數(shù)據(jù)主端口被指定為更高的優(yōu)先級。3.8 存儲器及I/O結(jié)構(gòu)高速緩存高速緩存(Cache)Nios II結(jié)構(gòu)的指令主端口和數(shù)據(jù)主端口都支持高速緩存。結(jié)構(gòu)的指令主端口和數(shù)據(jù)主端口都支持高速緩存。作為作為NiosII處理器組成部分的高速緩存在處理器組成部分的高速緩存在SOPC Builder中是可選中是可選的,這取決于用戶對系統(tǒng)存儲性能以及的,這取決于用戶對系統(tǒng)存儲性能以及FPGA資源的使用要求。包含高資源的使用要求。包含高速緩存不會影響程序的功能,但會影響處理器取指和讀速緩存不會影響程序的功能,
44、但會影響處理器取指和讀/寫數(shù)據(jù)時的速寫數(shù)據(jù)時的速度。度。高速緩存改善性能的功效是基于以下前提的:高速緩存改善性能的功效是基于以下前提的:1常規(guī)存儲器位于片外,訪問時間比片內(nèi)存儲器要長。常規(guī)存儲器位于片外,訪問時間比片內(nèi)存儲器要長。2循環(huán)執(zhí)行的、最大的,關(guān)鍵性能的指令序列長度小于指令高速循環(huán)執(zhí)行的、最大的,關(guān)鍵性能的指令序列長度小于指令高速緩存。緩存。3關(guān)鍵性能數(shù)據(jù)的最大模塊小于數(shù)據(jù)高速緩存。關(guān)鍵性能數(shù)據(jù)的最大模塊小于數(shù)據(jù)高速緩存。3.8 存儲器及I/O結(jié)構(gòu)高速緩存高速緩存(Cache)例如在以下的情況下高速緩存將無法改善執(zhí)行速度:例如在以下的情況下高速緩存將無法改善執(zhí)行速度:Nios II處理
45、器系統(tǒng)只含有快速的片內(nèi)存儲器處理器系統(tǒng)只含有快速的片內(nèi)存儲器(即從不訪問較慢的片即從不訪問較慢的片外存儲器外存儲器)。程序的關(guān)鍵循環(huán)是程序的關(guān)鍵循環(huán)是2KB,而指令高速緩存的大小為,而指令高速緩存的大小為1KB。1.由于性能上的原因,應用程序始終要求某些數(shù)據(jù)或部分代碼存放在由于性能上的原因,應用程序始終要求某些數(shù)據(jù)或部分代碼存放在高速緩存中,那么緊耦合存儲器可能會提供一個更合適的解決方案。高速緩存中,那么緊耦合存儲器可能會提供一個更合適的解決方案。注意:注意:Cache雖然改善了系統(tǒng)的整體性能,但使程序的執(zhí)行時間變得不可預測。對于實時系統(tǒng)來說這一點至關(guān)重要。3.8 存儲器及I/O結(jié)構(gòu)緊耦合存儲
46、器緊耦合存儲器(TCM)緊耦合存儲器緊耦合存儲器(TCM):緊耦合:緊耦合存儲器是一種緊挨著內(nèi)核的快速存儲器是一種緊挨著內(nèi)核的快速SRAM,它不僅能改善系統(tǒng)性能,它不僅能改善系統(tǒng)性能,而且保證了裝載和存儲指令或數(shù)而且保證了裝載和存儲指令或數(shù)據(jù)的時間是確定的。緊耦合存儲據(jù)的時間是確定的。緊耦合存儲器可向?qū)π阅芤髧栏竦膽锰崞骺上驅(qū)π阅芤髧栏竦膽锰峁┑脱舆t訪問。供低延遲訪問。Nios II 存儲器和存儲器和I/O結(jié)構(gòu)結(jié)構(gòu)緊耦合指令緊耦合指令存儲器存儲器緊耦合指令緊耦合指令存儲器存儲器3.8 存儲器及存儲器及I/O結(jié)構(gòu)結(jié)構(gòu)緊耦合存儲器緊耦合存儲器(TCM)與高速緩存相比具有的優(yōu)點:與高速緩存相
47、比具有的優(yōu)點:1性能類似于高速緩存;性能類似于高速緩存;2軟件能夠保證將關(guān)鍵性能的代軟件能夠保證將關(guān)鍵性能的代碼或數(shù)據(jù)存放在緊耦合存儲器中;碼或數(shù)據(jù)存放在緊耦合存儲器中;3代碼執(zhí)行的確定性代碼執(zhí)行的確定性裝載和裝載和存儲指令或數(shù)據(jù)的時間是可預測的。存儲指令或數(shù)據(jù)的時間是可預測的。Nios II 存儲器和存儲器和I/O結(jié)構(gòu)結(jié)構(gòu)緊耦合指令緊耦合指令存儲器存儲器緊耦合指令緊耦合指令存儲器存儲器3.8 存儲器及I/O結(jié)構(gòu)緊耦合存儲器介紹緊耦合存儲器介紹實際上,緊耦合存儲器是實際上,緊耦合存儲器是Nios II處理器內(nèi)核上的一個獨立的主端口,處理器內(nèi)核上的一個獨立的主端口,與指令或數(shù)據(jù)主端口類似。與指令
48、或數(shù)據(jù)主端口類似。Nios II結(jié)構(gòu)指令和數(shù)據(jù)訪問都支持緊耦合存儲器。結(jié)構(gòu)指令和數(shù)據(jù)訪問都支持緊耦合存儲器。Nios II內(nèi)核可以不包含緊耦合存儲器,也可以包含一個或多個緊耦內(nèi)核可以不包含緊耦合存儲器,也可以包含一個或多個緊耦合存儲器。合存儲器。每個緊耦合存儲器端口直接與具有固定的低延遲的存儲器相連,該每個緊耦合存儲器端口直接與具有固定的低延遲的存儲器相連,該存儲器在存儲器在Nios II內(nèi)核的外部,通常使用內(nèi)核的外部,通常使用FPGA片內(nèi)存儲器。片內(nèi)存儲器。3.8 存儲器及I/O結(jié)構(gòu)地址映射地址映射在在Nios II處理器系統(tǒng)中,存儲器和外設的地址映射是與設計相關(guān)的,處理器系統(tǒng)中,存儲器和外設的地址映射是與設計相關(guān)的,由設計人員在系統(tǒng)生成時指定。這里要特別提到的是由設計人員在系統(tǒng)生成時指定。這里要特別提到的是3個個CPU相關(guān)的地相關(guān)的地址:復位地址、異常地址以及斷點處理(址:復位地址、異常地址以及斷點處理(break handler)程序的地址。)程序的地址。程序員通過使用宏和驅(qū)動程序來訪問存儲器和外設,靈活的地址映射并程序員通過使用宏和驅(qū)動程序來訪問存儲器和外設,靈活的地址映射并不會影響應用程序開發(fā)人員。不會影響應用程序開發(fā)人員。第3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇南京六校聯(lián)合體2024~2025學年高一下冊期末調(diào)研數(shù)學試題學生卷
- 2024~2025學年重慶七年級下冊期末數(shù)學試題
- 家用紡織品市場合作模式與品牌價值評估合作考核試卷
- 印刷行業(yè)金融風險預防與應急響應機制研究考核試卷
- 信托公司治理與客戶關(guān)系管理策略考核試卷
- 冷藏儲存要求考核試卷
- 產(chǎn)品標識與追溯系統(tǒng)考核試卷
- 危險化學品儲存場所安全風險評估指標體系完善研究考核試卷
- 出租車行業(yè)法規(guī)中的反壟斷與競爭法規(guī)變化考核試卷
- 2025年中國POS板數(shù)據(jù)監(jiān)測報告
- 2025年新疆維吾爾自治區(qū)中考歷史真題(解析版)
- 2025至2030中國新能源行業(yè)市場發(fā)展分析及前景趨勢與對策戰(zhàn)略報告
- 空壓機考試題及答案
- 中國再生水行業(yè)發(fā)展分析與發(fā)展趨勢預測研究報告2025-2028版
- 2025至2030年中國直驅(qū)電機行業(yè)發(fā)展策略分析及投資前景研究報告
- JG/T 521-2017輕質(zhì)砂漿
- T/CATCM 032-2024中藥配方顆粒臨床使用指南
- T/CCSAS 025-2023化工企業(yè)作業(yè)安全分析(JSA)實施指南
- 背債免責協(xié)議書
- 士官轉(zhuǎn)業(yè)考試試題及答案
- 公立醫(yī)院DRG管理工作制度
評論
0/150
提交評論