第三章NIOSII體系結(jié)構(gòu)_第1頁
第三章NIOSII體系結(jié)構(gòu)_第2頁
第三章NIOSII體系結(jié)構(gòu)_第3頁
第三章NIOSII體系結(jié)構(gòu)_第4頁
第三章NIOSII體系結(jié)構(gòu)_第5頁
已閱讀5頁,還剩91頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、1基于FPGA的SOPC設(shè)計(jì)信息學(xué)院李貞妮二一三年五月2第三章 NIOS II 體系結(jié)構(gòu)3本章的目的是讓讀者建立一個(gè)Nios II處理器的概念,了解一些Nios II處理器的工作細(xì)節(jié),這對(duì)開發(fā)出高效率、健壯的程序是非常有好處的。體系結(jié)構(gòu)(Architecture):主要用來描述面向程序員的CPU抽象,而不是其具體實(shí)現(xiàn)。 計(jì)算機(jī)體系結(jié)構(gòu)(computer architecture)的定義是1964年C.M.Amdahl在介紹IBM 360系統(tǒng)時(shí)提出的, 其具體描述為“計(jì)算機(jī)體系結(jié)構(gòu)是程序員所看到的計(jì)算機(jī)的屬性,即概念性結(jié)構(gòu)與功能特性”。 主要內(nèi)容4本章的目的是讓讀者建立一個(gè)Nios II處理器的

2、概念,了解一些Nios II處理器的工作細(xì)節(jié),這對(duì)開發(fā)出高效率、健壯的程序是非常有好處的。本章先介紹NiosII處理器構(gòu)架,接著介紹NiosII的寄存器文件(Register File),然后介紹NiosII的異常處理,最后介紹NiosII的儲(chǔ)存器結(jié)構(gòu)并分析三種NiosII處理器的性能特點(diǎn)。主要內(nèi)容5預(yù)備知識(shí):預(yù)備知識(shí):Nios 嵌入式處理器簡介嵌入式處理器簡介一、第一代Nios嵌入式處理器二、第二代Nios嵌入式處理器三、可配置的軟核嵌入式處理器的優(yōu)勢6一、第一代Nios嵌入式處理器 2000年,Altera發(fā)布了Nios處理器,這是第一款可用于可編程邏輯器件的可配置的軟核處理器。 基于RI

3、SC技術(shù) 16位指令集 16/32位數(shù)據(jù)通道 5級(jí)流水線 在一個(gè)時(shí)鐘周期內(nèi)完成一條指令的處理 具有一種基于JTAG的OCI(片上儀器)芯核Nios 嵌入式處理器簡介7 2003年,Altera發(fā)布了Nios3.0處理器,它有16位和32位兩個(gè)版本,能在低成本的Cyclone和高性能的Stratrix芯片上實(shí)現(xiàn)。 主要特性: 更多的可配置寄存器 極大的靈活性和可擴(kuò)展性 功能強(qiáng)大的開發(fā)工具(SOPC Builder)第一代第一代NiosNios處理器的處理器的缺點(diǎn)缺點(diǎn)沒有提供軟件開發(fā)的集成環(huán)境,用戶需要在沒有提供軟件開發(fā)的集成環(huán)境,用戶需要在Nios SDK ShellNios SDK Shell

4、中以命令行的形式執(zhí)行軟件的編譯、運(yùn)行、調(diào)試。程序的編中以命令行的形式執(zhí)行軟件的編譯、運(yùn)行、調(diào)試。程序的編輯、編譯、運(yùn)行都是分離的。輯、編譯、運(yùn)行都是分離的。不支持對(duì)項(xiàng)目的編譯。不支持對(duì)項(xiàng)目的編譯。Nios 嵌入式處理器簡介8二、第二代Nios嵌入式處理器2004年月,Altera繼在全球推出Cyclone和Stratrix器件系列后,又推出支持這些新款芯片的Nios嵌入式處理器。 與第一代與第一代NiosNios相比,相比,最大處理性能提高了最大處理性能提高了3 3倍,倍,CPUCPU內(nèi)核部分的面積最大可縮小內(nèi)核部分的面積最大可縮小1/21/2(3232位位Nios Nios 處理處理器占用器

5、占用15001500個(gè)個(gè)LELE, Nios II Nios II 最少只占用最少只占用600600個(gè)個(gè)LELE)。)。廣泛應(yīng)用于嵌入式系統(tǒng)的設(shè)計(jì)中。廣泛應(yīng)用于嵌入式系統(tǒng)的設(shè)計(jì)中。 Nios 嵌入式處理器簡介9Nios 嵌入式處理器簡介10種類特性CPU結(jié)構(gòu)32Bit指令集32Bit數(shù)據(jù)寬度線32個(gè)通用寄存器2G Byte尋址空間片內(nèi)調(diào)試基于邊界掃描測試(JTAG)的調(diào)試邏輯,支持硬件斷點(diǎn)、數(shù)據(jù)觸發(fā)以及片外和片內(nèi)的調(diào)試跟蹤定制指令最多達(dá)到256個(gè)用戶定義的CPU指令軟件開發(fā)工具NiosIDE(集成開發(fā)環(huán)境)基于GNU的編譯器硬件輔助的調(diào)試模塊表1Nios 系列處理器的特性Nios 嵌入式處理器

6、簡介11 Nios II提供3種不同的內(nèi)核,以滿足系統(tǒng)對(duì)不同性能和成本的需求。表表2Nios 系列處理器的成員系列處理器的成員Nios 嵌入式處理器簡介平衡性能和尺寸平衡性能和尺寸最高性能的優(yōu)化最高性能的優(yōu)化最小邏輯占用的優(yōu)化最小邏輯占用的優(yōu)化12Nios vs Nios Nios Nios Pipelined RISC Architecture32-Bit InstructionsFlat Register File32-Bit Data Path32 Prioritized InterruptsOptional Instruction & Data CacheCustom Inst

7、ructions Branch Prediction Nios NiosPipelined RISC Architecture16-Bit InstructionsWindowed Register File16 -Bit or 32-Bit Data Path64 Prioritized InterruptsOptional Instruction & Data CacheCustom Instructions Nios 嵌入式處理器簡介13Nios : Faster & Smaller(Nios /f)Nios 嵌入式處理器簡介14Nios : Faster & S

8、maller (Nios /s)Nios 嵌入式處理器簡介15Nios : Faster & Smaller (Nios /e)Nios 嵌入式處理器簡介16Nios 嵌入式處理器簡介17Some Important Peripherals for Nios II System ID PeripheralUsed to Ensure Hardware/Software Version SynchronizationSimple 2 read-only register peripheral containing hardware ID tags. Register 1 contains

9、 random number Register 2 contains time and date when system was generated in SOPC BuilderCan be checked at runtime to ensure that the software to be downloaded matches the hardware image Memory InterfacesEPCS Serial Flash ControllerOn-Chip RAM, ROMOff-Chip SRAM CFI FlashNios 嵌入式處理器簡介18Other Importa

10、nt Peripherals for Nios II LCD Display JTAG UART Single JTAG Connection For: Device Configuration Code Download Debug Target STDIO (printing) Flash Programming Compact Flash Interface Mass Storage SupportTrue IDE ModeCompact Flash ModeSoftware SupportsLow-Level APIMicroC/OS- File System SupportCLinu

11、x File SystemNios 嵌入式處理器簡介19Other Important Peripherals for Nios II SSRAM ControllerCypress CY7C1380C Sync SRAM controller Provided to support SSRAM component on Cyclone II dev kit board Not a fully configurable general purpose controller Support for DDR/DDR2 in SOPC Builder GUIWith burst adapter Se

12、quential master to interleaved slave enhancementSeparate READ/Write duplex slaves Automatically matches address of read/write slaves Arbitration logic connects read/write masters to both slaves Support for PCI and Bursting DMA in SOPC Builder GUIHigher bandwidth transfers through PCINios 嵌入式處理器簡介20N

13、ios 嵌入式處理器簡介21High-Performance Interconnect 采用內(nèi)部Avlon總線,連接主從構(gòu)件,并進(jìn)行主從構(gòu)件間的通信。 主外設(shè)主外設(shè)從外設(shè)從外設(shè)Nios 嵌入式處理器簡介22Nios 嵌入式處理器簡介23Nios 嵌入式處理器簡介24第3章 目錄 3.1 Nios II處理器結(jié)構(gòu) 3.2 Nios II的寄存器文件 3.3 算數(shù)邏輯單元(ALU) 3.4 復(fù)位信號(hào) 3.5 Nios II處理器運(yùn)行模式 3.6 異常和中斷控制器 3.7 Nios II的異常處理 3.8 存儲(chǔ)器及I/O結(jié)構(gòu) 3.9 存儲(chǔ)器和外設(shè)訪問 3.10 Nios II處理器性能25第3章 目

14、錄 3.1 Nios II處理器結(jié)構(gòu) 3.2 Nios II的寄存器文件 3.3 算數(shù)邏輯單元(ALU) 3.4 復(fù)位信號(hào) 3.5 Nios II處理器運(yùn)行模式 3.6 異常和中斷控制器 3.7 Nios II的異常處理 3.8 存儲(chǔ)器及I/O結(jié)構(gòu) 3.9 存儲(chǔ)器和外設(shè)訪問 3.10 Nios II處理器性能263.1 Nios II處理器結(jié)構(gòu)nNios II是一種軟核(Soft-Core)處理器。n所謂軟核,是指未被固化在硅片上,使用時(shí)需要借助EDA軟件對(duì)其進(jìn)行配置并下載到可編程芯片(比如FPGA)中的IP核。軟核最大的特點(diǎn)就是可由用戶按需要進(jìn)行配置。273.1 Nios II處理器結(jié)構(gòu)nN

15、ios II軟核處理器簡介Nios II 處理器系列包括三種內(nèi)核Nios II32位軟核處理器Nios II/f (快速)Nios II/e (經(jīng)濟(jì))Nios II/s (標(biāo)準(zhǔn))性能最高,但占用的邏輯資源最多。性能最高,但占用的邏輯資源最多。占用的邏輯資源最少,但性能最低。占用的邏輯資源最少,但性能最低。平衡的性能和尺寸。平衡的性能和尺寸。NiosII/s內(nèi)核比內(nèi)核比第一代的第一代的Nios CPU更快,占用的資更快,占用的資源更少。源更少。283.1 Nios II處理器結(jié)構(gòu)Nios II32位軟核處理器Nios II處理器結(jié)構(gòu)框圖地址發(fā)生器&程序控制器異??刂破髦袛嗫刂破魍ㄓ眉拇嫫?/p>

16、組r0.r31控制寄存器組ctl 0.ctl 5指令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 _resettaken293.1 Nios II處理器結(jié)構(gòu)n數(shù)據(jù)處理主要由算術(shù)邏輯單元完成,在現(xiàn)有的Nios II內(nèi)核中暫時(shí)沒有協(xié)處理器。n用戶邏輯接口用來連接用戶定制的邏輯電路與Nios II內(nèi)核。Nios II處理器結(jié)構(gòu)框圖nNios II采用哈佛結(jié)構(gòu),數(shù)據(jù)總線和指令總線分開。n

17、為了調(diào)試方便,Nios II處理器集成了一個(gè)JTAG調(diào)試模塊。地址發(fā)生器&程序控制器異??刂破髦袛嗫刂破魍ㄓ眉拇嫫鹘Mr0.r31控制寄存器組ctl 0.ctl 5指令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 _resettaken303.1 Nios II處理器結(jié)構(gòu)n為了提高系統(tǒng)的整體性能,Nios II內(nèi)核不僅可以集成數(shù)據(jù)Cache和指令Cache,還帶有緊耦合存儲(chǔ)

18、器TCM ( T i g h t l y C o u p l e d Memory)接口。nTCM:緊挨著內(nèi)核的快速SRAM,保證裝載和存儲(chǔ)指令或數(shù)據(jù)的時(shí)間是確定的。n可以使Nios II處理器既能提高性能,又能獲得可預(yù)測的實(shí)時(shí)響應(yīng)。Nios II處理器結(jié)構(gòu)框圖地址發(fā)生器&程序控制器異??刂破髦袛嗫刂破魍ㄓ眉拇嫫鹘Mr0.r31控制寄存器組ctl 0.ctl 5指令Cache數(shù)據(jù)Cache算術(shù)邏輯單元(ALU)用戶邏輯JTAG接口NiosII 處理器核緊耦合指令存儲(chǔ)器緊耦合指令存儲(chǔ)器緊耦合數(shù)據(jù)存儲(chǔ)器緊耦合數(shù)據(jù)存儲(chǔ)器指令總線數(shù)據(jù)總線clockreset軟件調(diào)試接口中斷源0.31 IO口cp

19、u _resetrequestcpu _resettaken313.1 Nios II處理器結(jié)構(gòu)nNios II把外部硬件的中斷事件交由中斷控制器管理。n內(nèi)核異常事件交由異??刂破鞴芾?。nNios II的寄存器文件包括32個(gè)通用寄存器和6個(gè)控制寄存器,Nios II結(jié)構(gòu)允許將來添加浮點(diǎn)寄存器,其具體細(xì)節(jié)在下節(jié)介紹Nios II處理器結(jié)構(gòu)框圖地址發(fā)生器&程序控制器異常控制器中斷控制器通用寄存器組r0.r31控制寄存器組ctl 0.ctl 5指令Cache數(shù)據(jù)Cache算術(shù)邏輯單元(ALU)用戶邏輯JTAG接口NiosII 處理器核緊耦合指令存儲(chǔ)器緊耦合指令存儲(chǔ)器緊耦合數(shù)據(jù)存儲(chǔ)器緊耦合數(shù)據(jù)

20、存儲(chǔ)器指令總線數(shù)據(jù)總線clockreset軟件調(diào)試接口中斷源0.31 IO口cpu _resetrequestcpu _resettaken323.1 Nios II處理器結(jié)構(gòu)nNIOSII設(shè)計(jì)思想:一個(gè)NIOSII的實(shí)現(xiàn)是根據(jù)一組設(shè)計(jì)要求得到的一個(gè)特定的NIOSII處理器核。所有實(shí)現(xiàn)都支持NIOSII處理器的指令集。n具體實(shí)現(xiàn)方案:或多或少:用戶可以增加或減少指令緩存的大小。要或不要:例如:為了節(jié)省成本,可以選擇不要JTAG調(diào)試模塊。硬件實(shí)現(xiàn)或軟件模擬:例如在控制應(yīng)用中很少進(jìn)行復(fù)雜的運(yùn)算,用戶可以選擇除法指令由軟件來模擬,省去硬件的除法實(shí)現(xiàn),節(jié)省片上資源,但會(huì)增加除法運(yùn)算時(shí)間。33第3章 目

21、錄 3.1 Nios II處理器結(jié)構(gòu) 3.2 Nios II的寄存器文件 3.3 算數(shù)邏輯單元(ALU) 3.4 復(fù)位信號(hào) 3.5 Nios II處理器運(yùn)行模式 3.6 異常和中斷控制器 3.7 Nios II的異常處理 3.8 存儲(chǔ)器及I/O結(jié)構(gòu) 3.9 存儲(chǔ)器和外設(shè)訪問 3.10 Nios II處理器性能343.2 Nios II的寄存器文件n Nios II的通用寄存器盡管硬件對(duì)寄存器的用法幾乎沒有規(guī)定,但是它們?cè)趯?shí)際使用過程中還是遵循一些約定俗成的慣例。如果想使用他人的子程序,編譯器或操作系統(tǒng),最好還是遵守這些慣例。我們通過下面的通用寄存器一覽表來了解Nios II的32個(gè)通用寄存器。

22、35通用寄存器組寄存器助記符功能寄存器助記符功能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ù)r23子程序要保存的寄存器r8調(diào)用者要保存的寄存器r24et為異常處理保留r9調(diào)用者要保存的寄存器r25bt為程序斷點(diǎn)保留通用寄存器一覽r1或at: 這個(gè)寄存器在匯編程序中常用作臨時(shí)變量。r0或ze

23、ro: 總是存放0值,對(duì)它寫無效。Nios II沒有專門的清零指令,所以常用它來對(duì)寄存器清零。r2,r3: 用來存放一個(gè)函數(shù)的返回值。R2存放返回值的低32位,r3存放返回值的高32位。如果這兩個(gè)寄存器不夠存放需要返回的值,編譯器將通過堆棧來傳遞。r4r7: 用來傳遞4個(gè)非浮點(diǎn)參數(shù)給一個(gè)子程序。r4傳遞第一個(gè)參數(shù),r5傳遞第二個(gè)參數(shù),以此類推。如果這四個(gè)寄存器不夠傳遞參數(shù),編譯器將通過堆棧來傳遞。r8r15: 習(xí)慣上,子程序可以使用其中的值而不用保存它們。但使用者必須記住,這些寄存器里面的值可能被一次子程序調(diào)用改變,所以調(diào)用著有責(zé)任保護(hù)它們。36通用寄存器組寄存器助記符功能寄存器助記符功能r0

24、zero清零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ù)r23子程序要保存的寄存器r8調(diào)用者要保存的寄存器r24et為異常處理保留r9調(diào)用者要保存的寄存器r25bt為程序斷點(diǎn)保留通用寄存器一覽r16r23: 習(xí)慣上,子程序必須保證這些寄存器中的值在調(diào)用前后保持不變,即要么在子程序執(zhí)行時(shí)不使用它們,要么使用

25、前把它們保存在堆棧中并在退出時(shí)恢復(fù)。r24或et: 在異常處理時(shí)使用。使用時(shí),可以不恢復(fù)原來的值。該寄存器很少作用其它用途。r25或bt: 在程序斷點(diǎn)處理時(shí)使用。使用時(shí),可以不恢復(fù)原來的值。該寄存器很少作其它用途。r26或gp: 它指向靜態(tài)數(shù)據(jù)區(qū)中的一個(gè)運(yùn)行時(shí)臨時(shí)決定的地址。這意味著在存取位于gp值上下32KB范圍內(nèi)的數(shù)據(jù)時(shí),只需要一條以gp作為基指針的指令即可完成。r27或sp: 堆棧指針。Nios II沒有專門的出棧(POP)入棧(PUSH)指令,在子程序入口處,sp被調(diào)整指向棧底部,然后以sp為基址,用寄存器基址偏移地址的方式來訪問棧中的數(shù)據(jù)。r28或fp: 幀指針,習(xí)慣上用于跟蹤棧的變

26、化和維護(hù)運(yùn)行時(shí)環(huán)境。r29或ea: 保存異常返回地址。r30或ba: 保存斷點(diǎn)返回地址。r31或ra: 保存函數(shù)返回地址。373.2 Nios II的寄存器文件n Nios II的控制寄存器Nios II的控制寄存器共有6個(gè),它們的讀/寫訪問只能在超級(jí)用戶態(tài)(Supervisor Model)由專用的控制寄存器讀/寫指令(rdctl和wrctl)實(shí)現(xiàn)。所有控制寄存器都有匯編器可以識(shí)別的名字。通過控制寄存器一覽表,來了解控制寄存器各位的意義。38控制寄存器一覽控制寄存器組寄存器名字bit位意義: 31210ct10status保留UPIEct11estatus保留EUEPIEct12bstatu

27、s保留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è)中斷。3.2 Nios II的寄存器文件39控制寄存器一覽控制寄存器組寄存器名字bit位意義: 31210ct10status保留UPIEct11estatus保留EUEPIEct12bstatus保留BUBPIEct13ienab

28、le中斷允許位ct14ipending中斷發(fā)生標(biāo)志位ct15cpuid唯一的CPU序列號(hào)estatus、bstatus都是status寄存器的影子寄存器:發(fā)生斷點(diǎn)或者異常時(shí):保存status寄存器的值;斷點(diǎn)或異常處理返回時(shí):恢復(fù)status寄存器的值。3.2 Nios II的寄存器文件 estatus:針對(duì)異常處理 bstatus:針對(duì)斷點(diǎn)調(diào)試40控制寄存器一覽控制寄存器組寄存器名字bit位意義: 31210ct10status保留UPIEct11estatus保留EUEPIEct12bstatus保留BUBPIEct13ienable中斷允許位ct14ipending中斷發(fā)生標(biāo)志位ct15c

29、puid唯一的CPU序列號(hào)ienable中斷允許寄存器:每一位控制一個(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.2 Nios II的寄存器文件41第3章 目錄 3.1 Nios II處理器結(jié)構(gòu) 3.2 Nios II的寄存器文件 3.3 算數(shù)邏輯單元(ALU) 3.4 復(fù)位信號(hào) 3.5 Ni

30、os II處理器運(yùn)行模式 3.6 異常和中斷控制器 3.7 Nios II的異常處理 3.8 存儲(chǔ)器及I/O結(jié)構(gòu) 3.9 存儲(chǔ)器和外設(shè)訪問 3.10 Nios II處理器性能423.3 算術(shù)邏輯單元(ALU)Nios II ALU支持的操作種類描述算術(shù)運(yùn)算ALU支持有符號(hào)和無符號(hào)數(shù)的加、減、乘和除法關(guān)系運(yùn)算支持有符號(hào)和無符號(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)移位n NIOS II 的算術(shù)邏輯單元(ALU)對(duì)通

31、用寄存器中的數(shù)據(jù)進(jìn)行操作。ALU操作從寄存器中取一個(gè)或兩個(gè)操作數(shù),并將運(yùn)算結(jié)果存回到寄存器中。433.3 算術(shù)邏輯單元(ALU)n 未實(shí)現(xiàn)的指令某些NIOS II核,比如NIOS II/e型,可能不支持某些指令。運(yùn)行這 些 指 令 會(huì) 引 起 未 實(shí) 現(xiàn) 指 令 異 常 。 這 些 指 令 有 :mul,muli,div,divu。如果SOPC中,硬件乘法器和硬件除法器的選項(xiàng)未使能,也會(huì)不支持這些指令。異常管理器會(huì)調(diào)用相應(yīng)的程序用軟件來模擬該指令的操作。處理器對(duì)未實(shí)現(xiàn)的指令的處理對(duì)程序員是透明的。n 用戶定制指令n 浮點(diǎn)指令443.3 算術(shù)邏輯單元(ALU)n用戶定制指令NIOS II支持用戶

32、定制指令。用戶指令邏輯直接與算術(shù)邏輯單元(ALU)相連,使用戶定制的指令像NIOSII指令集中的指令一樣可以被訪問和使用。n 浮點(diǎn)指令NIOS II結(jié)構(gòu)支持IEEE std 754-1985規(guī)范的單精度浮點(diǎn)指令。NIOSII支持的浮點(diǎn)指令以定制指令的方式執(zhí)行,需要在添加NIOS II處理器時(shí)添加用于浮點(diǎn)指令的用戶指令,3種NIOS II核都可以添加浮點(diǎn)指令。參考Altera公司技術(shù)文檔。 文檔 Using NiosII floating-point custom instructions.45第3章 目錄 3.1 Nios II處理器結(jié)構(gòu) 3.2 Nios II的寄存器文件 3.3 算數(shù)邏輯單

33、元(ALU) 3.4 復(fù)位信號(hào) 3.5 Nios II處理器運(yùn)行模式 3.6 異常和中斷控制器 3.7 Nios II的異常處理 3.8 存儲(chǔ)器及I/O結(jié)構(gòu) 3.9 存儲(chǔ)器和外設(shè)訪問 3.10 Nios II處理器性能463.4 復(fù)位信號(hào)地址發(fā)生器&程序控制器異??刂破髦袛嗫刂破魉阈g(shù)邏輯單元用戶邏輯JTAG接口NiosII處理器核clockreset軟件調(diào)試接口中斷源0 .31 IO口cpu _resetrequestcpu _resettakenn Nios II處理器支持兩個(gè)復(fù)位信號(hào):reset和cpu_resetrequestreset:是一個(gè)強(qiáng)制處理器核立即進(jìn)入復(fù)位狀態(tài)的全局硬

34、件復(fù)位信號(hào)。cpu_resetrequest:是一個(gè)可以讓CPU復(fù)位但不影響Nios II系統(tǒng)其它外設(shè)的局部復(fù)位信號(hào)。cpu復(fù)位進(jìn)入復(fù)位狀態(tài)前要執(zhí)行完流水線上所有指令Nios II處理器結(jié)構(gòu)框圖473.4 復(fù)位信號(hào)n CPU復(fù)位后,Nios II處理器將執(zhí)行下列操作:清除狀態(tài)寄存器status,使之為0 x0;指令Cache與程序存儲(chǔ)器的關(guān)聯(lián)被置為無效,處理器從固態(tài)程序存儲(chǔ)器(比如Flash)中的reset地址處取得第一條指令;從復(fù)位地址處開始執(zhí)行程序。清除status:是為了使處理器進(jìn)入超級(jí)用戶模式并禁止硬件中斷。使當(dāng)前Cache隊(duì)列無效:是為了保證取指是從復(fù)位地址所在的非Cache存儲(chǔ)區(qū),

35、而不是當(dāng)前指令Cache。復(fù)位地址在系統(tǒng)生成時(shí)指定。指令cache的內(nèi)容在復(fù)位后是不確定的,因此復(fù)位程序要立即進(jìn)行指令cache的初始化,接下來初始化數(shù)據(jù)cache483.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è)或說明。49第3章 目錄 3.1 Nios II處理器結(jié)構(gòu) 3.2 Nios II的寄存器文

36、件 3.3 算數(shù)邏輯單元(ALU) 3.4 復(fù)位信號(hào) 3.5 Nios II處理器運(yùn)行模式 3.6 異常和中斷控制器 3.7 Nios II的異常處理 3.8 存儲(chǔ)器及I/O結(jié)構(gòu) 3.9 存儲(chǔ)器和外設(shè)訪問 3.10 Nios II處理器性能503.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)試模式:擁有最大的訪問權(quán)限,可以無限

37、制地訪問所有的功能模塊;超級(jí)用戶模式:除了不能訪問與調(diào)試有關(guān)的寄存器(bt、ba和bstatus)外,無其它訪問限制;用戶模式:是超級(jí)用戶模式功能訪問的一個(gè)子集,它不能訪問控制寄存器和一些通用寄存器。513.5 Nios II處理器運(yùn)行模式nNios II 處理器3種運(yùn)行模式切換Nios II處理器3種運(yùn)行模式52第3章 目錄 3.1 Nios II處理器結(jié)構(gòu) 3.2 Nios II的寄存器文件 3.3 算數(shù)邏輯單元(ALU) 3.4 復(fù)位信號(hào) 3.5 Nios II處理器運(yùn)行模式 3.6 異常和中斷控制器 3.7 Nios II的異常處理 3.8 存儲(chǔ)器及I/O結(jié)構(gòu) 3.9 存儲(chǔ)器和外設(shè)訪問

38、 3.10 Nios II處理器性能533.6 異常和中斷控制器n異??刂破鱊ios II體系結(jié)構(gòu)提供一個(gè)簡單的非向量異??刂破鱽硖幚硭蓄愋偷漠惓?。所有異常包括硬件中斷,都引起處理器從異常地址開始執(zhí)行程序。程序員可以在異常地址處判斷異常產(chǎn)生的原因,并分配相應(yīng)的異常處理任務(wù)。異常地址在系統(tǒng)生成時(shí)制定。n中斷控制器Nios II體系結(jié)構(gòu)支持32個(gè)外部硬件中斷,即irq0irq31。每個(gè)中斷對(duì)應(yīng)一個(gè)獨(dú)立的中斷通道。IRQ的優(yōu)先級(jí)由軟件決定。NIOS II體系結(jié)構(gòu)支持中斷嵌套。543.6 異常和中斷控制器n中斷控制器針對(duì)每個(gè)IRQ輸入,處理器中ienable中斷允許寄存器中都有一個(gè)相應(yīng)的中斷使能位。

39、處理器能通過ienable控制寄存器來獨(dú)立地使能或者禁止每個(gè)中斷源。處理器也可以通過status控制寄存器的PIE位來使能或禁止所有的中斷。一個(gè)硬件中斷發(fā)生的充要條件是下列三個(gè)條件全為真:Status控制寄存器中的PIE位為1;某個(gè)中斷請(qǐng)求irqn有效;在ienable寄存器中,該中斷源相應(yīng)位為1。55第3章 目錄 3.1 Nios II處理器結(jié)構(gòu) 3.2 Nios II的寄存器文件 3.3 算數(shù)邏輯單元(ALU) 3.4 復(fù)位信號(hào) 3.5 Nios II處理器運(yùn)行模式 3.6 異常和中斷控制器 3.7 Nios II的異常處理 3.8 存儲(chǔ)器及I/O結(jié)構(gòu) 3.9 存儲(chǔ)器和外設(shè)訪問 3.10

40、Nios II處理器性能56 異常:異常:CPU內(nèi)部異常和外部中斷的總稱。Altera公司未將兩個(gè)概念加以區(qū)分。NIOS II的異常控制器采用非向量仲裁的策略,即當(dāng)一個(gè)異常(CPU異?;蛲獠恐袛啵┌l(fā)生時(shí),處理器簡單的跳轉(zhuǎn)到已知的異常處理地址,并執(zhí)行那里的代碼。代碼首先檢測異常發(fā)生的原因,然后再跳轉(zhuǎn)到相應(yīng)的異常服務(wù)子程序(ISR)中去。3.7 Nios II的異常處理573.7 Nios II的異常處理硬件中斷軟件異常軟件陷阱異常未定義指令異常其它異常n異常類型 一個(gè)外設(shè)能通過處理器32個(gè)中斷輸入之一,請(qǐng)求產(chǎn)生一個(gè)硬件中斷。 當(dāng)程序遇到軟件陷阱指令時(shí),將產(chǎn)生軟件陷阱異常,這在程序需要操作系統(tǒng)服務(wù)

41、時(shí)常用到。操作系統(tǒng)的異常處理程序判斷產(chǎn)生軟件陷阱的原因,然后執(zhí)行相應(yīng)任務(wù)。Nios II異常包括583.7 Nios II的異常處理硬件中斷軟件異常軟件陷阱異常未定義指令異常其它異常當(dāng)處理器執(zhí)行未定義指令時(shí)產(chǎn)生未定義指令異常。異常處理可以判斷哪個(gè)指令產(chǎn)生異常,如果指令不能通過硬件執(zhí)行,可以在一個(gè)異常服務(wù)程序中通過軟件方式仿真執(zhí)行。其它異常類型是未將來準(zhǔn)備的。Nios II異常包括n異常類型593.7 Nios II的異常處理n異常硬件處理流程當(dāng)異常發(fā)生后,處理器會(huì)依次完成以下工作:把status寄存器內(nèi)容復(fù)制到estatus寄存器中,保存當(dāng)前處理器狀態(tài);清除status寄存器的U位為0,強(qiáng)制處

42、理器進(jìn)入超級(jí)用戶狀態(tài);清除status寄存器的PIE位為0,禁止所有的硬件中斷;把異常返回地址寫入ea寄存器(r29);跳轉(zhuǎn)到異常處理地址。12345603.7 Nios II的異常處理n異常判別及優(yōu)先級(jí)(EPIE=1)&(ipending!=0)?指令是在(ea-4)處嗎?指令是在(ea-4)div、mul、mulxuu、等處嗎?進(jìn)入異常處理處理硬件中斷處理軟件陷阱處理未定義指令其它異常NoNoNoYesYesYes異常類型判別 在跳轉(zhuǎn)到異常處理地址后到執(zhí)行用戶異常服務(wù)子程序(ISR)前還有一段由HAL插入的代碼。 代碼作用:判斷異常源和異常優(yōu)先級(jí),然后決定調(diào)用哪個(gè)ISR。613.7

43、 Nios II的異常處理nNIOSII的異??刂破魇菦]有區(qū)分優(yōu)先級(jí)的。但是由于HAL插入的代碼是從ipending寄存器的第0位開始檢測中斷源的,所以從這個(gè)意義上說,NIOSII的外部中斷優(yōu)先級(jí)是從031的。中斷號(hào)在系統(tǒng)生成時(shí)由用戶定義。NIOSII異常優(yōu)先級(jí)依次為:外部硬件中斷,軟件陷阱異常,未定義指令異常,其他情況。623.7 Nios II的異常處理n異常的嵌套n異常返回n異常響應(yīng)時(shí)間 實(shí)現(xiàn)異常嵌套,需在用戶ISR中打開外部中斷允許(PIE=1)。 在處理異常事件的過程中,可以響應(yīng)由trap指令引起的軟件陷阱異常 和未實(shí)現(xiàn)指令異常。 在異常嵌套之前,為了確保異常能正確返回,必須保存es

44、tatus寄存器(ctl1)和ea寄存器(r29)。633.7 Nios II的異常處理n異常的嵌套n異常返回n異常響應(yīng)時(shí)間當(dāng)執(zhí)行異常返回指令(eret)后,處理器會(huì)把estatus寄存器(ctl1)內(nèi)容復(fù)制到status寄存器(ctl0)中,恢復(fù)異常前的處理器狀態(tài),然后把異常返回地址從ea寄存器(r29)寫入程序計(jì)數(shù)器。異常發(fā)生時(shí),ea寄存器(r29)保存了異常發(fā)生處下一條指令所在的地址。當(dāng)異常從軟件陷阱異常 或未定義指令異常返回時(shí),程序必須從軟件陷阱指令trap或未定義指令后繼續(xù)執(zhí)行,因此ea寄存器(r29)就是正確的異常返回地址。643.7 Nios II的異常處理n異常的嵌套n異常返回

45、n異常響應(yīng)時(shí)間如果是硬件中斷異常,程序必須從硬件中斷異常發(fā)生處繼續(xù)執(zhí)行,因此必須將ea寄存器(r29)中的地址減去4(ea-4)作為異常返回地址。653.7 Nios II的異常處理n異常的嵌套n異常返回n異常響應(yīng)時(shí)間lNios II的非向量仲裁策略,導(dǎo)致了Nios II的異常處理延時(shí)會(huì)比較大,它是靠提高Nios II處理器的執(zhí)行速度來彌補(bǔ)這一缺點(diǎn)的。見下表:NiosII類型Max DMIPS異常反應(yīng)時(shí)間進(jìn)入ISR時(shí)延異?;謴?fù)時(shí)延NiosII/e3115485222NiosII/s12710128130NiosII/f2181010562Nios II 異常處理性能* 時(shí)延單位:處理器時(shí)鐘周期

46、個(gè)數(shù)66第3章 目錄 3.1 Nios II處理器結(jié)構(gòu) 3.2 Nios II的寄存器文件 3.3 算數(shù)邏輯單元(ALU) 3.4 復(fù)位信號(hào) 3.5 Nios II處理器運(yùn)行模式 3.6 異常和中斷控制器 3.7 Nios II的異常處理 3.8 存儲(chǔ)器及I/O結(jié)構(gòu) 3.9 存儲(chǔ)器和外設(shè)訪問 3.10 Nios II處理器性能673.8 存儲(chǔ)器及I/O結(jié)構(gòu)nNIOSII的內(nèi)核訪問存儲(chǔ)器和I/O的方式NIOSII存儲(chǔ)器和I/O結(jié)構(gòu)非常靈活與傳統(tǒng)微控制器之間最顯著的區(qū)別。NIOSII處理器系統(tǒng)可配置,存儲(chǔ)器和外設(shè)隨系統(tǒng)的不同而不同,使得存儲(chǔ)器和I/O結(jié)構(gòu)隨系統(tǒng)不同而發(fā)生變化。NIOSII核通過下面

47、的一種或多種方式訪問存儲(chǔ)器和I/O:683.8 存儲(chǔ)器及I/O結(jié)構(gòu)nNIOSII的內(nèi)核訪問存儲(chǔ)器和I/O的方式指令主端口:通過Avalon交換架構(gòu)連接到指令存儲(chǔ)器的Avalon主端口。指令高速緩存:NIOSII核內(nèi)部的高速指令緩存 (Cache Memory)。數(shù)據(jù)主端口:通過Avalon交換架構(gòu)連接到數(shù)據(jù)存儲(chǔ)器的主端口。數(shù)據(jù)高速緩存:NIOSII核內(nèi)部的高速數(shù)據(jù)緩存。緊耦合指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器端口:NIOSII核外部的高速存儲(chǔ)器接口。693.8 存儲(chǔ)器及I/O結(jié)構(gòu)Nios II 存儲(chǔ)器和I/O結(jié)構(gòu)程序計(jì)數(shù)器通用寄存器文件指令總線選擇邏輯數(shù)據(jù)總線選擇邏輯指令高速緩存數(shù)據(jù)高速緩存緊耦合指令存儲(chǔ)

48、器1緊耦合數(shù)據(jù)存儲(chǔ)器1緊耦合指令存儲(chǔ)器N存儲(chǔ)器從外設(shè)緊耦合數(shù)據(jù)存儲(chǔ)器NSMSMAvalon轉(zhuǎn)換結(jié)構(gòu)NiosII處理器內(nèi)核SMAvalon從端口Avalon主端口n NiosII內(nèi)核訪問存儲(chǔ)器和I/O的方式1.指令主端口2.指令高速緩存3.數(shù)據(jù)主端口4.數(shù)據(jù)高速緩存5.緊耦合指令或 數(shù)據(jù)存儲(chǔ)器端口703.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從端口Av

49、alon主端口n 指令與數(shù)據(jù)總線1.指令主端口2.指令高速緩存3.數(shù)據(jù)主端口4.數(shù)據(jù)高速緩存5.緊耦合指令或 數(shù)據(jù)存儲(chǔ)器端口713.8 存儲(chǔ)器及I/O結(jié)構(gòu)n指令與數(shù)據(jù)總線存儲(chǔ)器與外設(shè)訪問Nios II結(jié)構(gòu)提供映射為存儲(chǔ)器的I/O訪問。數(shù)據(jù)存儲(chǔ)器和外設(shè)都被映射到數(shù)據(jù)主端口的地址空間。存儲(chǔ)器系統(tǒng)中處理器數(shù)據(jù)總線低8位分別連接存儲(chǔ)器數(shù)據(jù)線70。字(小端模式,LSB)低字節(jié)高字節(jié)高地址低地址723.8 存儲(chǔ)器及I/O結(jié)構(gòu)n指令與數(shù)據(jù)總線指令主端口nNios II指令總線作為32位Avalon主端口來實(shí)現(xiàn)。指令主端口只執(zhí)行一個(gè)功能:對(duì)處理器將要執(zhí)行的指令進(jìn)行取指。n指令主端口是具有流水線屬性的Avalo

50、n主端口。n指令主端口依賴Avalon交換結(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ǔ)器的訪問能實(shí)現(xiàn)低延遲。說明:說明:指令主端口不執(zhí)行任何寫操作。動(dòng)態(tài)總線對(duì)齊邏輯不管目標(biāo)存儲(chǔ)器的寬度如何,每次取指都會(huì)返回一個(gè)完整的指令字,因而程序不需要知道Nios II處理器系統(tǒng)中的存儲(chǔ)器寬度。片內(nèi)高速緩存,用于改善訪問較慢存儲(chǔ)器時(shí)的平均指令取指性能。1.Avalon流水線傳輸提高了系統(tǒng)的最大工作頻率。指令主端口可以發(fā)出連續(xù)的讀指令請(qǐng)求,即使之前的請(qǐng)求數(shù)據(jù)還未返回。NIOSII可以提前取得一系列指令,并且執(zhí)行分支預(yù)測

51、來使指令流水線盡可能高效。733.8 存儲(chǔ)器及I/O結(jié)構(gòu)n指令與數(shù)據(jù)總線數(shù)據(jù)主端口nNios II數(shù)據(jù)總線作為32位Avalon主端口來實(shí)現(xiàn)。數(shù)據(jù)主端口執(zhí)行兩個(gè)功能:1當(dāng)處理器執(zhí)行裝載指令時(shí),從存儲(chǔ)器或外設(shè)中讀數(shù)據(jù)。2當(dāng)處理器執(zhí)行存儲(chǔ)指令時(shí),將數(shù)據(jù)寫入存儲(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)低延遲。說明:說明:1.數(shù)據(jù)主端口中存儲(chǔ)器流水線延遲被看作等待周期。當(dāng)數(shù)據(jù)主端口連接到零等待存儲(chǔ)器時(shí),裝載和存儲(chǔ)操作能夠在一個(gè)時(shí)鐘周期內(nèi)完成。743.8 存儲(chǔ)器及I/O結(jié)構(gòu)

52、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ù)總線。說明:說明:1.數(shù)據(jù)和指令主端口從來不會(huì)出現(xiàn)一個(gè)端口使另一個(gè)端口處于等待狀態(tài)的停滯狀況。為獲得最高性能,對(duì)于指令和數(shù)據(jù)主端口共享的任何存儲(chǔ)器,數(shù)據(jù)主端口被指定為更高的優(yōu)先級(jí)。753.8 存儲(chǔ)器及I/O結(jié)構(gòu)n高速緩存(Cache)Nios II結(jié)構(gòu)的指令主端口和數(shù)據(jù)主端口都支持高速緩存,指令主端口使用指令高速緩存,數(shù)據(jù)主端口使用數(shù)據(jù)高速緩存。高速緩存使用片內(nèi)存儲(chǔ)器,是NIOSII處理器內(nèi)核的重要組成部

53、分,能夠改善使用較慢片外存儲(chǔ)器(如用來存放程序和數(shù)據(jù)的SDRAM)的NIOSII處理器系統(tǒng)的平均存儲(chǔ)器訪問時(shí)間。763.8 存儲(chǔ)器及I/O結(jié)構(gòu)n高速緩存(Cache)作為NiosII處理器組成部分的高速緩存,在SOPC Builder中是可選的,這取決于用戶對(duì)系統(tǒng)存儲(chǔ)性能以及FPGA資源的使用要求。NIOSII處理器內(nèi)核可以含有數(shù)據(jù)或指令緩存,也可以兩者都有或都沒有,高速緩存的大小由用戶配置。包含高速緩存不會(huì)影響程序的功能,但會(huì)影響處理器取指和讀/寫數(shù)據(jù)時(shí)的速度。高速緩存改善性能的功效是基于以下前提的:1常規(guī)存儲(chǔ)器位于片外,訪問時(shí)間比片內(nèi)存儲(chǔ)器要長。2循環(huán)執(zhí)行的、最大的,關(guān)鍵性能的指令序列長度

54、小于指令高速緩存。3關(guān)鍵性能數(shù)據(jù)的最大模塊小于數(shù)據(jù)高速緩存。773.8 存儲(chǔ)器及I/O結(jié)構(gòu)n高速緩存(Cache)例如在以下的情況下高速緩存將無法改善執(zhí)行速度:Nios II處理器系統(tǒng)只含有快速的片內(nèi)存儲(chǔ)器(即從不訪問較慢的片外存儲(chǔ)器)。程序的關(guān)鍵循環(huán)是2KB,而指令高速緩存的大小為1KB。由于性能上的原因,應(yīng)用程序始終要求某些數(shù)據(jù)或部分代碼存放在高速緩存中,那么緊耦合存儲(chǔ)器可能會(huì)提供一個(gè)更合適的解決方案。注意:注意:Cache雖然改善了系統(tǒng)的整體性能,但使程序的執(zhí)行時(shí)間變得不可預(yù)測。對(duì)于實(shí)時(shí)系統(tǒng)來說這一點(diǎn)至關(guān)重要。783.8 存儲(chǔ)器及I/O結(jié)構(gòu)n緊耦合存儲(chǔ)器(TCM)緊耦合存儲(chǔ)器緊耦合存儲(chǔ)器

55、(TCM):緊耦合存儲(chǔ)器是一種緊挨著內(nèi)核的快速SRAM,它不僅能改善系統(tǒng)性能,而且保證了裝載和存儲(chǔ)指令或數(shù)據(jù)的時(shí)間是確定的。緊耦合存儲(chǔ)器可向?qū)π阅芤髧?yán)格的應(yīng)用提供低延遲訪問。Nios II 存儲(chǔ)器和I/O結(jié)構(gòu)緊耦合指令存儲(chǔ)器緊耦合指令存儲(chǔ)器793.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ù)測的。Nios II 存儲(chǔ)器和I/O結(jié)構(gòu)緊耦合指令存儲(chǔ)器緊耦合指令存儲(chǔ)器803.8 存儲(chǔ)器及I/O結(jié)構(gòu)n緊耦合存儲(chǔ)器介紹實(shí)際上,緊耦合存儲(chǔ)器是Nio

56、s II處理器內(nèi)核上的一個(gè)獨(dú)立的主端口,與指令或數(shù)據(jù)主端口類似。Nios II結(jié)構(gòu)指令和數(shù)據(jù)訪問都支持緊耦合存儲(chǔ)器。Nios II內(nèi)核可以不包含緊耦合存儲(chǔ)器,也可以包含一個(gè)或多個(gè)緊耦合存儲(chǔ)器。每個(gè)緊耦合存儲(chǔ)器端口直接與具有固定的低延遲的存儲(chǔ)器相連,該存儲(chǔ)器在Nios II內(nèi)核的外部,通常使用FPGA片內(nèi)存儲(chǔ)器。緊耦合存儲(chǔ)器與其它通過Avalon交換結(jié)構(gòu)連接的存儲(chǔ)器件一樣,占據(jù)標(biāo)準(zhǔn)的地址空間。它的地址范圍在生成系統(tǒng)時(shí)確定。軟件使用常規(guī)的裝載和存儲(chǔ)指令訪問緊耦合存儲(chǔ)器。從軟件角度來看,訪問緊耦合存儲(chǔ)器與訪問其他存儲(chǔ)器無不同。813.8 存儲(chǔ)器及I/O結(jié)構(gòu)n緊耦合存儲(chǔ)器介紹系統(tǒng)在訪問指定的代碼或數(shù)據(jù)

57、時(shí),能夠使用緊耦合存儲(chǔ)器來獲得最高性能。例如,中斷頻繁的應(yīng)用能夠?qū)惓L幚泶a放在緊耦合存儲(chǔ)器中來降低中斷延遲。類似的,計(jì)算密集型的數(shù)字信號(hào)處理(DSP)應(yīng)用能夠?qū)⒕o耦合存儲(chǔ)器指定為數(shù)據(jù)緩存區(qū),實(shí)現(xiàn)最快的數(shù)據(jù)訪問。如果應(yīng)用程序的存儲(chǔ)器需求足夠小,能夠完全在片內(nèi)實(shí)現(xiàn),就不需要使用其他的存儲(chǔ)器,將代碼和數(shù)據(jù)全放在TCM中存儲(chǔ)。大的應(yīng)用必須考慮將什么放在TCM來達(dá)到最大的性價(jià)比。823.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 handl

58、er)程序的地址。程序員通過使用宏和驅(qū)動(dòng)程序來訪問存儲(chǔ)器和外設(shè),靈活的地址映射并不會(huì)影響應(yīng)用程序開發(fā)人員。83第3章 目錄 3.1 Nios II處理器結(jié)構(gòu) 3.2 Nios II的寄存器文件 3.3 算數(shù)邏輯單元(ALU) 3.4 復(fù)位信號(hào) 3.5 Nios II處理器運(yùn)行模式 3.6 異常和中斷控制器 3.7 Nios II的異常處理 3.8 存儲(chǔ)器及I/O結(jié)構(gòu) 3.9 存儲(chǔ)器和外設(shè)訪問 3.10 Nios II處理器性能843.9 存儲(chǔ)器和外設(shè)訪問Nios II地址是32位的,允許對(duì)4GB地址空間進(jìn)行訪問,但現(xiàn)有的Nios II內(nèi)核都將地址限制在31位,即2GB地址空間。處理器的數(shù)據(jù)總線

59、為32位寬度。指令集提供字節(jié),半字(16bit)或字(32位)的讀寫指令。Nios II結(jié)構(gòu)采用小端模式,對(duì)于保存在存儲(chǔ)器中的大于8位的數(shù)據(jù),最高有效位在高地址。外設(shè)數(shù)據(jù)存儲(chǔ)器程序存儲(chǔ)器地址空間未映射4GB地址空間32位寬度映射映射映射映射到的具體位置在生成系統(tǒng)時(shí)確定對(duì)此地址空間的讀寫將產(chǎn)生一個(gè)不確定的值853.9 存儲(chǔ)器和外設(shè)訪問n尋址方式Nios II結(jié)構(gòu)支持以下尋址方式有:寄存器尋址寄存器尋址:所有的操作數(shù)都是寄存器,結(jié)果保存在寄存器中移位尋址移位尋址:寄存器和帶符號(hào)的16位立即數(shù)相加的結(jié)果作為地址立即數(shù)尋址立即數(shù)尋址:操作數(shù)是指令中的常量寄存器間接尋址寄存器間接尋址:使用了移位尋址,只

60、是移位值是常量0絕對(duì)尋址絕對(duì)尋址:范圍有限制的絕對(duì)尋址使用帶有寄存器r0(它的值始終是0 x00)的移位尋址來實(shí)現(xiàn)。863.9 存儲(chǔ)器和外設(shè)訪問n高速緩存訪問Nios II結(jié)構(gòu)和指令集可以管理數(shù)據(jù)高速緩存和指令高速緩存。高速緩存管理使用高速緩存指令在軟件中實(shí)現(xiàn)。指令集可對(duì)高速緩存實(shí)現(xiàn)初始化、刷新及旁路數(shù)據(jù)高速緩存的指令操作。有些Nios II處理器內(nèi)核支持一種稱作31位高速緩存旁路的機(jī)制,它根據(jù)地址的最高有效位的值來旁路高速緩存。處理器實(shí)現(xiàn)的地址空間為2GB,地址的高位控制數(shù)據(jù)存儲(chǔ)器訪問的緩存操作。873.9 存儲(chǔ)器和外設(shè)訪問n高速緩存訪問寫入到具有高速緩存的處理器內(nèi)核的代碼可以在沒有高速緩存存儲(chǔ)器的處理器內(nèi)核上正確地執(zhí)行,反過來則不行。如果希望程序在所有的NIOSII處

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論