




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