




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 本章主要介紹Xilinx公司的MicroBlaze處理器的結(jié)構(gòu) 及其原理。 該介紹MicroBlaze處理器時,重點介紹了MicroBlaze處 理器結(jié)構(gòu),MicroBlaze處理器信號接口,MicroBlaze處理 器應(yīng)用二進(jìn)制接口和MicroBlaze指令集結(jié)構(gòu)。 MicroBlaze處理器結(jié)構(gòu)概述部分主要介紹了處理器的結(jié) 構(gòu)框架,處理器的存儲器結(jié)構(gòu),處理器的數(shù)據(jù)結(jié)構(gòu)和指 令,處理器的浮點單元,處理器的FSL接口,處理器的流 水和分支結(jié)構(gòu)以及處理器的特權(quán)指令。 MicroBlaze處理器軟核是RISC精簡指令集計算機(jī),該 RISC核針對Xilinx的FPGA芯片進(jìn)行了優(yōu)化。圖1.1給出了
2、 MicroBlaze處理器核的內(nèi)部結(jié)構(gòu)圖。 指令一側(cè)總線接口 數(shù)據(jù)一側(cè)總線接口 可選擇的配置 圖中MicroBlaze處理器的外部接口定義如下: DPLB(Data Processor Local Bus):數(shù)據(jù)接口,處理 器本地總線; DOPB(Data On-chip Peripheral Bus):數(shù)據(jù)接口,片 上外設(shè)總線; DLMB(Data Local Memory Bus):數(shù)據(jù)接口,本地 存儲器總線; IPLB(Instruction Processor Local Bus):指令接口, 處理器本地總線; IOPB(Instruction On-Chip Peripheral
3、Bus):指令接 口,片上外設(shè)總線; ILMB(Instruction Local Memory Bus):指令接口, 本地存儲器總線; MFSL 0.15(Fast Simple Link, FSL master interface): FSL主接口; DWFSL 0.15(FSL master direct connection interface): FSL主直接連接接口; SFSL0.15(Fast Simple Link, FSL slave interface): FSL從接口; DRFSL0.15(FSL slave direct connection interface): F
4、SL從直接連接接口; IXCL(Instruction side Xilinx CacheLink interface):指 令側(cè)高速緩存鏈接接口; DXCL(Data side Xilinx CacheLink interface):數(shù)據(jù)側(cè) 高速緩存鏈接接口; Core:時鐘、復(fù)位、調(diào)試和跟蹤信號; MicroBlaze軟核處理器是可配置的,設(shè)計人員可以根據(jù) 設(shè)計定制處理器的可選配置,根據(jù)版本的不同可配置的選 項不同。該軟核處理器有以下幾個方面的固定特征: 1、32個32位通用寄存器; 2、32位3個操作數(shù)的指令字,指令字有2種尋址模式; 3、32位的地址總線; 4、流水線操作; Micro
5、Blaze處理器采用哈佛存儲器結(jié)構(gòu),即指令和數(shù) 據(jù)訪問使用獨立的地址空間。 每個一個地址空間都是32位長度(即,它們可以獨 立的訪問4GB的地址空間的指令和數(shù)據(jù)存儲器)。 通過控制使重疊的數(shù)據(jù)和指令空間映射到相同的相 同的物理存儲器上。這樣對于調(diào)試試非常好的。 MicroBlaze處理器采用存儲器映射方式訪問I/O設(shè)備, 即存儲器和I/O設(shè)備采用統(tǒng)一編址方式。 處理器有下面三種接口可以通過存儲器的方式訪問: 本地存儲器總線(LMB);處理器本地總線(PLB)或者 片上外設(shè)總線(OPB);Xilinx的CacheLink(XCL)。 處理器對本地存儲器的訪問和緩存讀命中,需要一個 時鐘周期的延遲
6、。寫數(shù)據(jù)緩存需要兩個時鐘周期的延遲。 處理器的指令和數(shù)據(jù)緩存可以配置成4或8字的緩存行 (緩存最小結(jié)構(gòu)單位)。緩存行越大,可存放的代碼就越 長,執(zhí)行效率也就越高。但是當(dāng)程序中使用很多的隨機(jī)訪 問模式時,會降低緩存的命中率,因此給定大小的緩存行 反而會降低性能。 MicroBlaze軟核處理器采用大段和比特翻轉(zhuǎn)格式描述數(shù) 據(jù),所支持的數(shù)據(jù)類型有字、半字和字節(jié)。表2.1給出不 同數(shù)據(jù)類型的描述。 MicroBlaze處理器指令為32比特長度,指令分為類型A 和類型B。 類型A指令包含兩個源寄存器操作數(shù)和一個目的寄存 器操作數(shù)。 類型B指令一個源寄存器、一個16位的立即數(shù)(通過 imm指令擴(kuò)展到32
7、位)和一個目的寄存器操作數(shù)。 MicroBlaze處理器的指令完成的功能有:算術(shù)操作、 邏輯操作、分支操作、加載/存儲操作和其它特殊操作。 MicroBlaze處理器的浮點單元FPU基于IEEE754標(biāo)準(zhǔn): 1)使用IEEE754單精度浮點格式,包括無窮大定義, 不是一個數(shù)(NaN)和零; 2)支持加、減、乘、除、比較、轉(zhuǎn)換和平方根指令; 3)實現(xiàn)最近舍入(round-to-nearest)模式; 為了提高性能,使用下面的非標(biāo)準(zhǔn)的簡化: 1)不支持亞正常操作數(shù)(這種操作樹接近0,無法用完 整精度表示)。對亞正常操作數(shù)的操作將返回NaN,并且 在FSR中設(shè)置亞正常操作數(shù)錯誤標(biāo)志; 2)亞正常操作
8、數(shù)結(jié)果存為0,并且在FSR的寄存器中設(shè) 置下溢標(biāo)志。這種方法通常稱為清零(Flush-to-zero)模 式; 3)對NaN操作返回固定的NaN-0 xFFC00000; 4)浮點操作的上溢總是返回。 IEEE754單精度浮點數(shù)由1位符號位、8位偏置指數(shù)和23 位小數(shù)(尾數(shù))部分組成。表2.2給出了IEEE754單精度格 式。 在MicroBlaze中浮點數(shù)V可以用以下方法描述: 1、如果指數(shù)=255,小數(shù)0,V=NaN,和符號無關(guān) 2、如果指數(shù)=255,小數(shù)=0,V=(-1)sign* 3、如果0指數(shù)255,V=(-1)sign*2(指數(shù)-127)*(1.尾 數(shù)) 4、如果指數(shù)=0,小數(shù)0,
9、V=(-1)sign*2-126*(0.尾 數(shù)) 5、如果指數(shù)=0,小數(shù)=0,V=(-1)sign*0 1)算數(shù)操作:加,浮點加(fadd);減,浮點減 (fsub);乘,浮點乘(fmul);除,浮點除(fdiv); 平方根,浮點平方根(fsqrt); 2)比較:小于,浮點小于(fcmp.lt)、等于,浮點等于 (fcmp.eq);小于等于,浮點小于等于(fcmp.le);大 于,浮點大于(fcmp.gt);不等于,浮點不等于 (fcmp.ne);大于等于,浮點大于等于(fcmp.ge);無 序,浮點無序(fcmp.un,NaN使用); 3)轉(zhuǎn)換:有符號整數(shù)到浮點(flt);浮點到有符號整 數(shù)
10、(fint) MicroBlaze處理器可配置為16個快速單一鏈接(Fast Simplex Link,F(xiàn)SL)接口,每個接口由一個輸入和輸出端 口組成。FSL通道是專用單向的點對點數(shù)據(jù)流接口。 MicroBlaze接口為32比特寬度。一個對立的比特用來 描述發(fā)送/接收字是控制類型還是數(shù)據(jù)類型。Get指令用來 從FSL端口到通用寄存器傳輸信息;put指令以相反的方向 傳輸信息。所有指令4種類型:塊數(shù)據(jù)、非塊數(shù)據(jù)、塊控 制、非快控制。 每個FSL提供低延遲專用的接口到處理器流水線。FSL 是使用定制加速器和處理器擴(kuò)展的理想接口。圖2.2給出 了使用定制硬件加速的例子。 MicroBlaze處理器
11、的指令采用流水方式執(zhí)行。大多數(shù) 指令需要一個時鐘周期完成。所以,一個特定的所需要的 時鐘周期和流水線級數(shù)是一致的。只有少數(shù)指令需要多個 時鐘周期完成,通過流水線斷流方式實現(xiàn)。 當(dāng)從較慢的存儲器執(zhí)行時,需要多個時鐘周期完成取 指過程。這個過程直接影響流水線的效率。MicroBlaze處 理器通過指令預(yù)取緩沖區(qū)來減少這個過程對流水線性能的 影響。當(dāng)流水線在執(zhí)行過程中斷流,預(yù)取緩沖區(qū)連續(xù)加載 順序指令。當(dāng)執(zhí)行指令繼續(xù)進(jìn)行時,可以提取新的指令到 預(yù)取緩沖區(qū)中,而不需要等待對指令存儲器的訪問完成。 當(dāng)采用面積優(yōu)化時,流水線分為三級,即:取指,譯 碼和執(zhí)行,這樣可以減少硬件開銷。圖2.2給出了三級流 水結(jié)
12、構(gòu)。 當(dāng)不使用面積優(yōu)化時,流水線分為五級:取指、譯碼、 執(zhí)行、訪問存儲器和回寫,這樣可以提高性能。圖2.3給 出了五級流水結(jié)構(gòu)。 當(dāng)執(zhí)行采納分支(taken branch)時,一般情況下,流 水線的取指、譯碼和預(yù)取緩沖區(qū)將被清空。取指級從所計 算的分支地址中重新取指。MicroBlaze中的采納分支需要 三個時鐘周期才能完成,而其中的兩個時鐘周期用來填充 流水線。為了減少所產(chǎn)生的延遲,處理器采用延遲隙 (delay slot)的分支處理方法。 當(dāng)采用延遲隙的采納分支時,只有取指階段被清除。 而允許完成譯碼過程。這種技術(shù),將延遲從兩個周期減少 到一個周期。執(zhí)行帶有延遲隙的分支時,只需要在指令助
13、記符后增加字母D即可,比如BNE指令不執(zhí)行后面的指 令,而BNED在找到分支的位置前,就已經(jīng)指令執(zhí)行下一 條指令。 需要注意的是,延遲隙不能使用下面的指令:IMM、 分支、斷點。那些引起可恢復(fù)異常的指令是允許使用延遲 隙的。如果在延遲隙中產(chǎn)生異常,則異常句柄(異常服務(wù) 程序)負(fù)責(zé)轉(zhuǎn)向執(zhí)行分支目標(biāo)(這個分支目標(biāo)保存在BTR 寄存器內(nèi))。如果設(shè)置了ESRDS位,R17寄存器就不是 有效的,除非該寄存器保存著引起異常指令的下一條指令 的地址。 MicroBlaze處理器的特權(quán)指令有以下幾類: 1)GET、PUT、NGET、NPUT、CGET、CPUTN、 CGET、NCPUT,這些命令和FSL接口操
14、作有關(guān); 2)WIC、WDC,這些指令和寫數(shù)據(jù)、指令緩存有 關(guān); 3)MTS,寫特殊寄存器指令; 4)MSRCLR、MSRSET,這些指令分別是讀,然后清 除/置位特殊寄存器; 5)BRK,斷點指令; 6)RTID、RTBD、RTED,這些指令分別是從中斷返 回、從斷點返回和從異常返回指令; 7)BRKI,立即打斷指令; 這些指令都是對處理器的內(nèi)核操作,試圖在用戶模式 下使用這些特權(quán)指令,將引起異常,可以使用以下幾種方 法脫離用戶模式和虛擬模式: 1)硬件復(fù)位(包括調(diào)試復(fù)位); 2)硬件異常; 3)不可屏蔽斷點或硬件斷點; 4)中斷; 5)執(zhí)行指令”Bralid Re,0 x8”,執(zhí)行用戶向量
15、異常操作; 6)執(zhí)行軟件斷點指令“BRKI”,跳轉(zhuǎn)到地址0 x8或 0 x18; 所有以上這些情況(除硬件產(chǎn)生復(fù)位外),虛擬模式 和用戶模式的狀態(tài)保存在MSR寄存器內(nèi)的UMS和VMS比 特位。 通過使用BRALID和BRKI指令,用戶模式下的應(yīng)用程 序?qū)⒖刂茩?quán)交給系統(tǒng)服務(wù)例程(特權(quán)模式程序),并且跳 轉(zhuǎn)到物理地址0 x8。執(zhí)行這條指令產(chǎn)生系統(tǒng)異常條件。異 常句柄(異常服務(wù)程序)決定調(diào)用哪個系統(tǒng)服務(wù)例程和是 否允許調(diào)用服務(wù)。如果授權(quán)許可,異常句柄代表應(yīng)用程序 執(zhí)行真正的程序調(diào)用。 異常服務(wù)例程所希望執(zhí)行環(huán)境要求執(zhí)行序言指令 (prologue instruction)來建立所要求的環(huán)境。這些指令
16、用 于創(chuàng)建保持程序信息(活動的紀(jì)錄)的存儲塊、更新和初 始化指針和保存易失性存儲器(這些寄存器是系統(tǒng)服務(wù)例 程需要使用的)。當(dāng)創(chuàng)建可執(zhí)行模塊時,鏈接器能插入序 言指令,或者作為系統(tǒng)調(diào)用中斷句柄或者系統(tǒng)庫例程的存 根代碼(stub code)。 從系統(tǒng)服務(wù)例程返回和上面描述的過程相反。執(zhí)行結(jié) 束代碼(Epilog code)打開和取消分配的活動紀(jì)錄,恢復(fù) 指針和恢復(fù)存易失性存儲器。中斷句柄通過執(zhí)行異常指令 RTED返回到應(yīng)用程序。 MicroBlaze處理器內(nèi)有32個32位的通用寄存器和最多 18個特殊寄存器(取決于配置)。 32個32位的通用寄存器為R0-R31。寄存器的值在下載 比特流文件時
17、復(fù)位為0 x00000000。 1、程序計數(shù)器(Program Counter,PC) 程序計數(shù)器是一個32位的被執(zhí)行指令的地址。該地址可 以通過MFS指令讀取,但不能使用MTS指令寫。當(dāng)執(zhí)行讀 操作時,使用mfs r2,0指令保存執(zhí)行指令的地址。表2.3給 出了PC寄存器。 MSR保存處理器的控制和狀態(tài)標(biāo)志,該寄存器可以 通過mfs指令。MSR寄存器也可以通過MTS指令進(jìn)行寫操 作,或者使用專用的MSRSET和MSRCLR指令對寄存器 進(jìn)行操作。 表2.4給出了MSR寄存器的標(biāo)志,表2.5給出了MSR寄 存器各個標(biāo)志位的含義。 EAR用于保存使得發(fā)生異常的加載/保存地址,其地 址有: 非對齊
18、訪問引起的異常的訪問地址; DPLB或DOPB引起的異常的訪問地址; 數(shù)據(jù)保存異常時的(虛擬)有效的訪問地址; 指令保存異常時的(虛擬)有效的訪問地址; 指令TLB的失?。]有命中)異常時的(虛擬)有 效的訪問地址; 該寄存器可以通過MFS指令讀出。表2.6給出了EAR寄 存器。 ESR寄存器保存了處理器的狀態(tài),可以通過MFS指令 讀取ESR的內(nèi)容。表1.6給出了ESR寄存器的標(biāo)志,表2.7 給出了ESR寄存器各個標(biāo)志位的含義。 只有當(dāng)MicroBlaze處理器配置使用異常功能時,BTR 寄存器才存在。寄存器為所有延遲隙分支指令(除 MSREIP=0外)保存了分支目標(biāo)的地址。如果一個延遲 隙指
19、令(ESRDS=1)引起異常,異常句柄將執(zhí)行保存在 BTR中的地址,而通常的異常時執(zhí)行保存在R17中的地址。 可以用MFS指令讀取該寄存器,表2.8給出了BTR寄存器。 FSR保存了浮點單元的狀態(tài)。可以使用MFS指令讀 取該寄存器。表2.9給出了FSR寄存器。 EDR寄存器保存了引起FSL異常,所讀取的數(shù)據(jù)。 該寄存器可以使用MFS指令讀取。表2.10給出了EDR寄 存器 PID寄存器用來在MMU地址翻譯時,唯一標(biāo)示軟件進(jìn) 程。通過C_MMU控制(C_MMU1)。PID寄存器可以使 用MFS和MTS指令進(jìn)行訪問。PID寄存器也用來訪問TLB: 當(dāng)寫TLBHI時,PID的值保存在TLB的TID位
20、域內(nèi);當(dāng)讀 TLBHI時,TID域的值被保存在PID內(nèi)。表2.11給出了 PID寄存器。 ZPR寄存器用于重載在TLB入口所定義的MMU存儲器 保護(hù)設(shè)置,當(dāng)C_MMU1且C_MMU_ZONES0時,該寄存 器有效??梢允褂肕FS和MTS指令訪問該寄存器。表2.12 給出了ZPR寄存器,表2.13給出了ZPR寄存器標(biāo)志位的含 義。 TLB也叫做頁表緩沖,里面存放的是一些頁表文件 (虛擬地址到物理地址的轉(zhuǎn)換表)。 TLBLO寄存器用來訪問MMU統(tǒng)一的TLB入口,通過 C_MMU配置選項控制(當(dāng)C_MMU1有效)??梢允褂?MFS和MTS指令訪問該寄存器。當(dāng)讀寫TLBLO時, UTLB入口通過TLB
21、X寄存器進(jìn)行索引。表2.14給出了 TLBLO寄存器,表2.15給出了TLBLO寄存器標(biāo)志位的含 義。 TLBHI寄存器訪問MMU統(tǒng)一的UTLB入口,該寄存 器由C_MMU控制(C_MMU1有效)??梢允褂肕FS和 MTS指令訪問該寄存器。當(dāng)讀些TLBHI時,通過TLBX 索引到的UTLB的入口被訪問。 當(dāng)訪問TLB入口時,PID有以下的用途:寫TLBHI 時,PID的值就被保存到TLB入口的TID位域內(nèi); 當(dāng)讀TLBHI時,TID位域的值被保存在PID中。 表2.16給出了TLBHI寄存器,表2.17給出了TLBHI寄 存器的標(biāo)志位。 當(dāng)訪問TLBIO和TLBHI寄存器時,TLBX寄存器用
22、來索引統(tǒng)一的UTLB。當(dāng)C_MMU1時,該寄存器有效。 該寄存器可以使用MFS和MTS指令訪問。表2.18給出了 TLBX寄存器,表2.19給出了TLBX寄存器的標(biāo)志位。 TLBSX寄存器用來在UTLB中尋找一個虛擬頁面,當(dāng) C_MMU1時,該寄存器有效。該寄存器能通過MTS進(jìn)行 寫操作,但不能讀。表2.20給出了TLBSX寄存器,表2.21 給出了TLBSX寄存器的標(biāo)志位。 處理器的C_PVR配置選項控制PVR寄存器。 1) 當(dāng)C_PVR=0,處理器不實現(xiàn)任何PVR,且 MSRPVR=0; 2)當(dāng)C_PVR=1,處理器只實現(xiàn)PVR0,如果 C_PVR=2,處理器實現(xiàn)所有的12個PVR寄存器。
23、該寄存 器可以使用MFS指令讀取。 該寄存器實際上記錄了處理器的配置和相關(guān)配置的 版本,以及所使用的SOPC的型號等信息。 運(yùn)行在MicroBlaze處理器的應(yīng)用程序要求使用有效地 址訪問4GB地址空間。處理器通過轉(zhuǎn)換模式,以下面兩種 方式理解該地址空間。 1、在實模式下,有效地址直接訪問物理存儲器; 2、在虛擬模式下,通過處理器的虛擬存儲器管理硬 件(MMU)有效地址被轉(zhuǎn)化物理地址。 在虛擬模式下,系統(tǒng)軟件在物理地址空間內(nèi)的任何地 方都能夠重定位程序和數(shù)據(jù)。當(dāng)活動的程序和數(shù)據(jù)需要物 理空間時,那些非活動的程序和數(shù)據(jù)就從物理存儲器中移 出。 重定位使得程序好像有比實際物理存儲器更多的存儲 空間
24、,這樣程序員就不用擔(dān)心存儲空間不夠用的情況。程 序要也不需要知道給其它軟件進(jìn)程和硬件設(shè)備所分配的物 理存儲器地址。處理器將程序可見的地址轉(zhuǎn)換成合適的物 理地址。 虛擬模式提供了更多的對存儲器保護(hù)的控制能力。當(dāng) 未授權(quán)的訪問小到1KB的存儲器塊時也能被保護(hù)。保護(hù)和 重定位技術(shù)使得系統(tǒng)軟件能支持多任務(wù)處理。這種能力使 得多個程序能以同步或幾乎同步的方式執(zhí)行。 當(dāng)C_USE_MMU=3時,MicroBlaze中的存儲器管理單 元MMU可以實現(xiàn)虛擬模式。MMU控制將有效地址轉(zhuǎn)換成 物理地址的映射和保護(hù)。通過使用這種控制能力,系統(tǒng)軟 件能夠?qū)崿F(xiàn)請求分頁存儲器和其它存儲器管理策略。 MMU完成以下幾個功能
25、: 1)將有效地址轉(zhuǎn)化成物理地址; 2)在地址轉(zhuǎn)換時,控制頁面級訪問; 3)在使用區(qū)域時,提供額外的虛擬模式保護(hù)控制; 4)對指令地址、數(shù)據(jù)地址的轉(zhuǎn)換和保護(hù)提供獨立的控 制; 5) 支持8種頁面尺寸:1KB,4KB,16KB,64KB, 256KB,1MB,4MB和16MB; 6)軟件提供頁面替換策略; 當(dāng)處理器取指或使用加載/存儲指令訪問數(shù)據(jù)時,處 理器查看存儲器。程序使用處理器計算得到的32位的有效 地址查看存儲器的位置。當(dāng)使用實模式時,物理地址和有 效地址是一樣的。處理器復(fù)位完成后,處理器工作在實模 式。通過清除MSR寄存器的VM比特來使用實模式。 在實模式下使用有效地址,可以執(zhí)行對物理
26、存儲器的 數(shù)據(jù)訪問(加載/保存)。在實模式下,系統(tǒng)軟件不提供 地址轉(zhuǎn)換的功能。但是在C_USE_MMU1的條件下,可以 使用全存儲器訪問保護(hù)功能。實模式下的存儲器管理比虛 擬模式下的存儲器管理更直接。在一些簡單的嵌入式環(huán)境 中,實模式下的存儲器管理是一種很好的解決方案。 如圖2.3所示,在虛擬模式下,將有效地址轉(zhuǎn)換成物理 地址。通過設(shè)置MSR寄存器的VM比特來使能虛擬模式下 的存儲器管理。 每個地址都是由頁號和偏移地址組成。頁號為MMU得 到的轉(zhuǎn)換地址部分,偏移表示未轉(zhuǎn)換的地址在頁面內(nèi)的位 置。虛擬地址中包含PID寄存器中的進(jìn)程ID(PID)號。 虛擬頁面號由PID號和有效的頁面號組成。N值由
27、頁面大 小確定。 系統(tǒng)軟件維護(hù)一個大的頁轉(zhuǎn)換表,該表包含了將虛擬頁 轉(zhuǎn)換到物理頁的入口。頁轉(zhuǎn)換入口所定義的頁面大小決定 了頁號和偏移地址。比如:頁面大小為4KB,頁號位域應(yīng) 該為20位,即n=19,偏移量位域為12比特。VPN為28比特。 最常使用的頁轉(zhuǎn)換保存在TLB中。當(dāng)轉(zhuǎn)換虛擬地址 時,MMU為匹配的PID和VPN檢查頁轉(zhuǎn)換入口。不是檢查 所有的入口,只檢查包含處理器TLB的那些入口。當(dāng)與 VPN匹配的頁轉(zhuǎn)換入口找到后,從入口讀取相應(yīng)的物理頁 面,并且和偏移地址組成32位的物理地址。該物理地址被 處理器用作查看存儲器。 系統(tǒng)軟件用PID號唯一的標(biāo)示運(yùn)行在處理器中的一個軟 件進(jìn)程(任務(wù),子程
28、序,線程)。獨立編譯的進(jìn)程能運(yùn) 行在有效地址空間范圍內(nèi),并且可以和其它進(jìn)程重疊。 如果系統(tǒng)支持多任務(wù),系統(tǒng)軟件必須解決重疊的問題。 給每一個進(jìn)程分配一個PID號,系統(tǒng)軟件就能解決重疊的 問題,這個問題的解決是通過重定位每一個進(jìn)程到虛擬 地址空間唯一的一個區(qū)域。虛擬空間映射能獨立的將每 一個進(jìn)程轉(zhuǎn)換到對應(yīng)得物理地址空間。 頁轉(zhuǎn)換表是由軟件定義和軟件管理的數(shù)據(jù)結(jié)構(gòu),這 個數(shù)據(jù)結(jié)構(gòu)負(fù)責(zé)頁面轉(zhuǎn)換。軟件管理的頁轉(zhuǎn)換是為了滿足 嵌入式系統(tǒng)的應(yīng)用在某些方面進(jìn)行了權(quán)衡。 嵌入式系統(tǒng)要求有一個緊耦合控制的操作環(huán)境和應(yīng)用 軟件集合。通過以下方式對嵌入式系統(tǒng)的虛擬存儲器管理 進(jìn)行優(yōu)化: 1、頁轉(zhuǎn)換表的結(jié)構(gòu)考慮了頁表
29、查找性能的最大化(頁 表查找,table walking),所以對于一個給定的頁轉(zhuǎn)換入口 可以很快定位。大多數(shù)的通用處理器通過使用索引頁表 (簡單的方法,大的頁表)或者哈希頁表(復(fù)雜的方法, 小的頁表)。使用軟件的頁表查找,可以使用任何適應(yīng)于 特定的嵌入式系統(tǒng)的混合組織形式。優(yōu)化了頁面尺寸和訪 問時間。 2、為應(yīng)用模塊、設(shè)備驅(qū)動、系統(tǒng)服務(wù)例程和數(shù)據(jù)提供 獨立的頁面尺寸。這種獨立的頁面大小的選擇使得系統(tǒng)軟 件通過減少碎塊(未使用的存儲器空間)來更好的使用存 儲器。比如,一個大的數(shù)據(jù)結(jié)構(gòu)分配16MB的頁面,而小 的I/O設(shè)備驅(qū)動只分配1KB的頁面。 3、頁面替換能盡量減少在頁面轉(zhuǎn)換缺失的產(chǎn)生。下面
30、 將要介紹,經(jīng)常使用的頁轉(zhuǎn)換將被存放在TLB中。軟件負(fù) 責(zé)確定哪個轉(zhuǎn)換存放在TLB中,當(dāng)要求新的轉(zhuǎn)換時哪個頁 面被替換。頁面替換策略能避免失敗,然而頁面轉(zhuǎn)換入口 常常進(jìn)出TLB中(即經(jīng)常被替換)。替換策略應(yīng)該避免替 換關(guān)鍵的頁面,一些進(jìn)程被“鎖定”在一個頁面中。 軟件管理的統(tǒng)一64入口的TLB,緩存指令和數(shù)據(jù)頁翻 譯入口的一部分。軟件負(fù)責(zé)從系統(tǒng)存儲器的頁轉(zhuǎn)換表中讀 取入口,并且將入口保存在TLB中。 1、統(tǒng)一的TLB(Unified TLB):UTLB包含64個入 口,并且是偽關(guān)聯(lián)的。指令頁面和數(shù)據(jù)頁面轉(zhuǎn)換保存在任 意一個UTLB入口。軟件負(fù)責(zé)初始化和管理UTLB。 2、指令投影TLB(Ins
31、truction Shadow TLB):ITLB 包含了頁面轉(zhuǎn)換入口,并且是全關(guān)聯(lián)的。在ITLB內(nèi)保存 的頁面轉(zhuǎn)換入口是最近來自于UTLB的指令頁面轉(zhuǎn)換訪問。 ITLB也用于減少指令轉(zhuǎn)換和UTLB更新操作的沖突。硬件 負(fù)責(zé)初始化和控制ITLB(對軟件是透明的)。 3、數(shù)據(jù)投影TLB(Data Shadow TLB):DTLB包含了 頁面轉(zhuǎn)換入口,并且是全關(guān)聯(lián)的。在DTLB內(nèi)保存的頁面 轉(zhuǎn)換入口是最近來自于UTLB的數(shù)據(jù)頁面轉(zhuǎn)換訪問。ITLB 也用于減少數(shù)據(jù)轉(zhuǎn)換和UTLB更新操作的沖突。硬件負(fù)責(zé) 初始化和控制DTLB(對軟件是透明的)。圖2.4給出了 TLB的轉(zhuǎn)換流程。圖2.5給出了TLB入口
32、的格式 圖2.4 TLB轉(zhuǎn)換流程 從圖中可以看到,TLB入口由以下幾個位域組成: 1)虛擬頁識別(TAG、SIZE、V、TID) 2)物理頁識別(RPN、SIZE) 3)訪問控制(EX、WR、ZSEL) 4)存儲屬性(W、I、M、G、E、U0) 表2.22給出了TLB入口的SIZE位域和轉(zhuǎn)換的頁面大小, 該表描述了頁大小如何確定在TAG中使用地址位,如何確 定偏移地址的比特位,如何在物理地址中確定物理頁所使 用的比特位。 當(dāng)MMU將虛擬地址轉(zhuǎn)換成物理地址時,首先為頁轉(zhuǎn) 換入口檢查合適的投影TLB。如果找到一個入口,該入 口用于訪問物理存儲器。如果沒有找到入口,MMU則在 UTLB檢查入口,這樣
33、就產(chǎn)生2-32個時鐘周期延遲。當(dāng)同 時訪問UTLB時,DTLB的優(yōu)先權(quán)高于ITLB。 圖2.6給出這個查找在TLB和UTLB查找入口的過程。 所有有效的入口都被檢查。 圖2.6 TLB查找流程 當(dāng)TLB入口滿足下面條件時,產(chǎn)生TLB命中: 1、入口有效; 2、入口的TAG位域和EPN的有效地址匹配; 3、入口的TID位域和PID匹配; 如果以上條件均不滿足,則產(chǎn)生TLB缺失條件。當(dāng) 該條件產(chǎn)生時則引起異常。下面給出這個異常的描述: TID為0時,MMU不會比較TID和PID,此時只比較TAG 和EAEPN,該條件下表示一個進(jìn)程獨立的轉(zhuǎn)換。那些被 全局所有進(jìn)程訪問的頁面的TID值分配0。PID為
34、0時,并 不識別一個能訪問任何頁面的進(jìn)程。當(dāng)TID=0,且PID=0 時產(chǎn)生頁面轉(zhuǎn)換命中條件。對軟件來說這是可能的去加載 有多個入口的TLB(匹配EAEPN和PID)。因此,這被 作為編程錯誤并導(dǎo)致不確定的行為。 當(dāng)產(chǎn)生命中時,MMU從相應(yīng)的TLB的入口讀取RP位域。 比如,如果SIZE標(biāo)明256KB的頁面尺寸,RPN0:13表 示物理頁號并且用來形成物理地址,沒有使用RPN14: 21,這些位在初始化TLB入口時必須清零。 在訪問物理存儲器前,MMU檢查存儲屬性以決定如何 去訪問頁面。存儲屬性標(biāo)識了存儲器訪問的緩存策略。 TLB訪問失敗將產(chǎn)生異常。這將中斷指令的執(zhí)行,并 且將控制權(quán)交給中斷句
35、柄來解決這個失敗。下面兩種原 因會造成TLB訪問失?。?1、沒有找到匹配的TLB入口,導(dǎo)致TLB缺失; 2、找到匹配的TLB入口,但是由于存儲屬性或域保 護(hù)導(dǎo)致無法訪問頁面。 當(dāng)產(chǎn)生中斷時,處理器清除MSRVR位后進(jìn)入實模 式。在實模式下,將不在進(jìn)行地址轉(zhuǎn)化和存儲器保護(hù)檢 查。在系統(tǒng)軟件使用頁轉(zhuǎn)換入口初始化UTLB后,使用 中斷句柄管理運(yùn)行在實模式下的UTLB。 下面介紹由于TLB失敗,產(chǎn)生的異常條件 1、數(shù)據(jù)存儲異常 當(dāng)使用虛擬模式時,由于下面的原因產(chǎn)生對頁面的 訪問被禁止: 用戶模式 TLB入口指向的是保護(hù)區(qū)域 (ZPRZn=00),禁止對頁面訪問。當(dāng)使用加載和保存 指令時產(chǎn)生這種情況;T
36、LB入口指向只讀頁面 (TLBLOWR=0)。當(dāng)使用保存指令時產(chǎn)生這種情況; 特權(quán)模式 TLB入口指向只讀(TLBLOWR=0)。 當(dāng)使用保存指令時產(chǎn)生這種情況; 2、指令存儲異常 用戶模式 TLB入口指向的是保護(hù)區(qū)域 (ZPRZn=00),禁止對頁面訪問。當(dāng)使用加載和保存指 令時產(chǎn)生這種情況;TLB入口指向只讀頁面 (TLBLOWR=0)。當(dāng)使用保存指令時產(chǎn)生這種情況; 特權(quán)模式 TLB入口指向只讀頁面(TLBLOG=0)。 當(dāng)使用保存指令時產(chǎn)生這種情況; 3、數(shù)據(jù)TLB缺失異常 在虛擬模式下,在TLB中沒有找到有效和匹配的TLB 入口時,將產(chǎn)生數(shù)據(jù)TLB缺失異常條件。任何一個加載或 保存指
37、令都可以引起數(shù)據(jù)TLB缺失異常。 4、指令TLB缺失異常 在虛擬模式下,在TLB中沒有找到有效和匹配的TLB 入口時,將產(chǎn)生指令TLB缺失異常條件。任何一個加載或 保存指令都可以引起數(shù)據(jù)TLB缺失異常。 系統(tǒng)軟件能訪問保護(hù)來保護(hù)敏感的存儲器區(qū)域不受到 非法訪問,系統(tǒng)軟件能在用戶模式和特權(quán)模式下,限制存 儲器的訪問。這種限制作用于讀、寫、取指操作。TLB入 口為虛擬頁面標(biāo)識了對頁面的訪問類型。TLB入口也指明 了在區(qū)域保護(hù)寄存器內(nèi)的區(qū)域保護(hù)位域。 1、TLB訪問保護(hù)控制 每一個TLB控制三種訪問類型: )進(jìn)程 通過對每一進(jìn)程分配一個PID號,進(jìn)程阻止未授權(quán)的 訪問。當(dāng)系統(tǒng)軟件開始用戶模式時,它將
38、應(yīng)用的PID號放 入PID寄存器中。當(dāng)開始執(zhí)行應(yīng)用時,存儲器地址使用 TLB入口和TLBHI寄存器中與PID匹配的TID位域進(jìn)行轉(zhuǎn)換。 這使系統(tǒng)軟件能限制應(yīng)用對某些標(biāo)識的存儲區(qū)域的訪問。 )執(zhí)行 如果從標(biāo)識為可執(zhí)行的虛擬存儲器加載指令,指令處理 器執(zhí)行這些指令。清除TLBLO EX將阻止來在這些頁面 的指令執(zhí)行,代替產(chǎn)生指令存儲中斷(ISI)。在加載指 令時不產(chǎn)生ISI,而執(zhí)行指令時產(chǎn)生ISI。 )讀/寫 數(shù)據(jù)只能寫入那些標(biāo)識為可寫的頁(TLBLOWR=1)。 清除寫標(biāo)志,該頁面變?yōu)橹蛔x。試圖對只讀頁面進(jìn)行寫操 作將產(chǎn)生數(shù)據(jù)中斷(DSI)。 2、區(qū)域保護(hù) 區(qū)域保護(hù)用于重置在TLB入口中所標(biāo)識的
39、保護(hù)。區(qū)域是 訪問保護(hù)的虛擬頁面的群。區(qū)域可以包含任意數(shù)目的頁面 不要求區(qū)域保存相鄰頁面。ZPR是一個32位的寄存器用來 標(biāo)識16個區(qū)域的保護(hù)類型。詳見ZPR寄存器。 UTLB是處理器MMU和存儲器管理軟件的接口。系統(tǒng) 軟件管理UTLB,用來告訴MMU如何將虛擬地址轉(zhuǎn)換成物 理地址。當(dāng)由于缺失轉(zhuǎn)換或者訪問沖突引起問題時, MMU使用異常機(jī)制將問題通知系統(tǒng)軟件。系統(tǒng)軟件提供 中斷句柄來處理這些問題。 軟件使用MFS和MTS指令讀寫UTLB。這些指令根據(jù) UTLB64個入口中的一個入口使用TLBX寄存器的索引。 標(biāo)記和數(shù)據(jù)部分獨立的讀寫,軟件必須執(zhí)行MFS和MTS 指令完成對入口的訪問。 ULTB
40、使用TLBSX寄存器來尋找一個指定的轉(zhuǎn)換。 通過使用有效地址,TLBSX定位轉(zhuǎn)換,同時將相應(yīng)的 UTLB索引加載到TLBX寄存器中。 當(dāng)使用MTS指令清除TLB入口的標(biāo)記部分的有效位 時,單獨的UTLB入口是無效的。 軟件管理虛擬存儲器帶來幾方面挑戰(zhàn): 1、在虛擬存儲器環(huán)境下,軟件和數(shù)據(jù)經(jīng)常消耗比實際 可利用的物理存儲器更多的存儲器資源。一些軟件和數(shù)據(jù) 頁必須存放在外部物理存儲器中,比如在硬件驅(qū)動器。理 想情況下,常用的頁面保存在物理存儲器中,而那些不常 使用的頁面保存在其它地方。 2、當(dāng)保存在物理頁面中的頁需要為新的頁面騰出空間 時,應(yīng)該知道被替換的頁面是否已經(jīng)被修改過。如果被修 改了,那么
41、必須先于加載新的頁面之前被保存。否則,不 需要保存被替換頁面。 3、有限數(shù)目的頁轉(zhuǎn)換被保留在UTLB中,剩余的頁轉(zhuǎn) 換保存在頁轉(zhuǎn)換表中。當(dāng)在UTLB中沒有找到轉(zhuǎn)換時(由 于缺失),系統(tǒng)軟件必須確定丟棄哪個UTLB入口,以便 加載缺失的轉(zhuǎn)換。系統(tǒng)軟件應(yīng)該替換的那些不常使用的轉(zhuǎn) 換。 用有效的方法解決以上問題要求跟蹤頁面的訪問和頁 面的修改。MicroBlaze硬件不跟蹤頁面訪問和頁面修改。 系統(tǒng)軟件能夠使用TLB缺失異常和數(shù)據(jù)存儲異常來搜集 這個信息。當(dāng)搜集到這些信息后,這些信息就保存在于 頁面轉(zhuǎn)換表相關(guān)的數(shù)據(jù)結(jié)構(gòu)中。 頁面訪問信息用來確定哪個頁面應(yīng)該保留在物理存儲 器中,在需要物理存儲器時哪個
42、頁面需要被替換。系統(tǒng)軟 件使用TLB中有效為來監(jiān)視頁面訪問。這就要求在初始化 時將其初始化成無效的,以便說明這些頁面沒有被訪問 過。 首次試圖訪問頁面將產(chǎn)生TLB缺失異常,這可能是由于 UTLB被標(biāo)記為無效的或者是由于在UTLB中沒有出現(xiàn)頁 面轉(zhuǎn)換。TLB缺失句柄使用有效的轉(zhuǎn)換更新UTLB。將設(shè) 置有效位作為記錄頁面和頁面轉(zhuǎn)換已經(jīng)被訪問了。TLB缺 失句柄也用來以相關(guān)單獨的數(shù)據(jù)結(jié)構(gòu)記錄信息,這些信息 和數(shù)據(jù)轉(zhuǎn)換入口相關(guān)聯(lián)。 頁面修改信息用來指示是否以前的頁面被新的頁面寫 過,或者老頁面必須首先被保存在硬盤中。系統(tǒng)軟件使用 TLB入口的寫保護(hù)位來監(jiān)視頁面修改。這就要求頁面轉(zhuǎn)換 被初始化成只讀的,
43、以便說明這些頁面沒有被修改過。假 設(shè)頁面已經(jīng)被訪問并且是有效的,因此首次試圖向頁面寫 入數(shù)據(jù)將產(chǎn)生異常。如果軟件允許向頁面寫入數(shù)據(jù),數(shù)據(jù) 存儲句柄將頁面標(biāo)記為可寫的和返回。設(shè)置寫保護(hù)位作為 對修改頁面的記錄。數(shù)據(jù)存儲句柄也用來以獨立的數(shù)據(jù)結(jié) 構(gòu)記錄信息,這些信息和頁轉(zhuǎn)換入口相關(guān)聯(lián)。 當(dāng)首次使用虛擬模式時,跟蹤頁面信息非常有用。 MicroBlaze支持復(fù)位、中斷、用戶異常、斷點和硬件異 常。下面將描述和這些事件相關(guān)的處理流程。這些事件 按優(yōu)先級從高到低依次為:復(fù)位、硬件異常、非屏蔽斷 點、斷點、中斷、用戶矢量(異常)。 表2.23記錄了這些事件相關(guān)的存儲器地址和保存返回地 址的寄存器。每個矢量
44、分配了兩個地址以便允許全地址 范圍分支(要求 BRAI IMM指令)。地址范圍0 x28-0 x4f 是為將來的Xilinx軟件支持而保留的。 當(dāng)復(fù)位或Debug復(fù)位產(chǎn)生時,MicroBlaze清空流水 線,并且從復(fù)位向量中加載指令。外部復(fù)位信號高有效, 且維持至少16個時鐘周期。 下面給出復(fù)位過程的等效偽代碼。 1)PC 0 x00000000 2)MSR C_RESET_MSR 3)EAR 0; ESR 0; FSR 0 PID 0; ZPR 0; TLBX 0 MicroBlaze處理器能被配置陷入下面的內(nèi)部錯誤條件: 非法指令、指令和數(shù)據(jù)總線錯誤、非對齊訪問。如果處理 器配置使用硬件除
45、法器,則使能除數(shù)為0的異常。當(dāng)處理 器配置使用浮點單元FPU時,處理器可以陷入下面的浮點 異常條件:下溢、上溢、浮點除數(shù)為0、無效操作和亞正 常操作數(shù)錯誤。 當(dāng)處理器配置有MMU時,處理器能陷入下面的異常: 非法指令異常、數(shù)據(jù)存儲異常、指令存儲異常、數(shù)據(jù)TLB 缺失異常、指令TLB缺失異常。 硬件異常產(chǎn)生時,MicroBlaze清空流水線,并且進(jìn)入硬 件異常向量(0 x20)。在異常周期的執(zhí)行級指令不會被執(zhí) 行。 異常也以下面的方式更新寄存器R17: 1、對于MMU異常(數(shù)據(jù)存儲異常、指令存儲異常、數(shù) 據(jù)TLB缺失異常、指令TLB缺失異常),在返回時使用合 理的程序寄存器值加載寄存器R17來重
46、新執(zhí)行這些引起異 常的指令。如果有的話,調(diào)整值來返回到前面的IMM指 令。 如果由分支延遲隙引起異常,調(diào)整值到返回分支指令, 如果有的話,包括調(diào)整到前面的IMM指令。 2、對于其它異常,用隨后的指令的程序計數(shù)器的值 加載到R17。如果由于由分支延遲隙引起異常,設(shè)置 ESRDS。在這種情況下,異常句柄將從保存在BTR中的 分支目標(biāo)地址繼續(xù)執(zhí)行。 當(dāng)執(zhí)行RTED指令時,MSR寄存器的EE和EIP位自動 還原。當(dāng)執(zhí)行RTED、RTBD、RTID指令時,MSR寄存器 的VM和UM位從VMS和UMS自動還原。 1、FSL(Fast SimplexLink)異常 FSL異常是由于執(zhí)行g(shù)et或getd指令,
47、而e比特被設(shè)置 成1,沒有控制位匹配。 2、指令總線異常 指令處理器本地總線(PLB)異常是由于從設(shè)備的活 動錯誤信號(IPLB_MRderr)或者來自仲裁器的超時信號 (IPLB_MTimeout)。指令片上外設(shè)總線(OPB)異常時 由于從設(shè)備的活動錯誤信號(IPLB_MRderr)或者來自仲 裁器的超時信號(IPLB_MTimeout)。指令一側(cè)的本地存 儲器(ILMB)和CacheLink(IXCL)接口不能產(chǎn)生指令 總線異常。 3、非法操作碼異常 非法操作碼異常由存在指令的0-5比特位不是有效的主 要操作碼而產(chǎn)生。而指令的第6-31比特不做此檢查。如果 那些可選的指令沒有使能,處理器則
48、認(rèn)為這些指令是非法 指令。如果使能可選的特性C_OPCODE_0X0_ILLEGAL, 當(dāng)指令為0 x00000000時,仍會產(chǎn)生非法操作碼異常。 4、數(shù)據(jù)總線異常 數(shù)據(jù)處理器本地總線(PLB)異常是由于從設(shè)備的活 動錯誤信號(DPLB_MRderr)或者來自仲裁器的超時信 號(DPLB_MTimeout)。指令片上外設(shè)總線(OPB)異 常時由于從設(shè)備的活動錯誤信號(DPLB_MRderr)或者 來自仲裁器的超時信號(DPLB_MTimeout)。數(shù)據(jù)一側(cè) 的本地存儲器(DLMB)和CacheLink(DXCL)接口不能 產(chǎn)生指令總線異常。 5、非對齊訪問 非對齊訪問異常是由于字訪問地址總線設(shè)
49、置為30或31 位,或者半字訪問設(shè)置為31比特。 6、除數(shù)為0異常 除數(shù)為0異常時由于整數(shù)除法中的除數(shù)為0產(chǎn)生。 7、FPU異常 FPU異常時由于下溢、上溢、浮點除數(shù)為0、無效操作 和亞正常操作數(shù)錯誤產(chǎn)生。 8、特權(quán)指令異常 特權(quán)指令異常是由于在用戶模式下使用特權(quán)指令引起 的。 9、數(shù)據(jù)存儲異常 數(shù)據(jù)存儲異常時由于試圖訪問存儲器中的數(shù)據(jù)而導(dǎo)致 存儲器保護(hù)沖突而產(chǎn)生。 10、指令存儲異常 指令存儲異常時由于試圖訪問存儲器中的指令而導(dǎo)致 存儲器保護(hù)沖突而產(chǎn)生。 11、數(shù)據(jù)TLB缺失異常 數(shù)據(jù)存儲異常時由于試圖訪問存儲器中的數(shù)據(jù),而沒 有有效的TLB入口和使能虛擬保護(hù)模式引起。 12、指令TLB缺失
50、異常 指令存儲異常時由于試圖訪問存儲器中的指令,而沒 有有效的TLB入口和使能虛擬保護(hù)模式引起。 ESRDS exception in delay slot if ESRDS then BTR branch target PC if MMU exception then if branch preceeded by IMM then r17 PC - 8 else r17 PC - 4 else r17 invalid value else if MMU exception then if instruction preceeded by IMM then r17 PC - 4 elser17
51、 PC else r17 PC + 4 PC 0 x00000020 MSREE 0, MSREIP 1 MSRUMS MSRUM, MSRUM 0, MSRVMS MSRVM, MSRVM 0 ESREC exception specific value ESRESS exception specific value EAR exception specific value FSR exception specific value 在MicroBlaze有兩種斷點: 硬件(外部)斷點; 軟件(內(nèi)部)斷點。 1、硬件斷點 通過斷言外部斷點信號(Ext_BRK和Ext_NM_BRK輸 入端口)執(zhí)
52、行硬件斷點。在斷點,完成執(zhí)行級的指令,而 譯碼級的指令被一個跳轉(zhuǎn)到斷點(0 x18)的分支替換。斷 點返回地址被自動加載到通用寄存器R16。MicroBlaze在 MSR的BIP標(biāo)志中也設(shè)置斷點。 當(dāng)MSRBIP和MSREIP設(shè)為0時,普通的硬件斷點 (Ext_BRK輸入端口)被處理。BIP標(biāo)志禁止中斷。一個 非屏蔽的斷點(Ext_NM_BRK輸入端口)總是被立即處 理。 當(dāng)執(zhí)行RTBD指令時,MSR寄存器中的BIP位被自動清 除。 Ext_BRK信號必須保持?jǐn)嘌?,直到產(chǎn)生斷點,在RTBD 指令執(zhí)行前釋放該信號。Ext_NM_BRK信號被斷言一個時 鐘周期。 2、軟件斷點 使用brk和brki
53、指令來執(zhí)行軟件斷點。 3、延遲 從斷點產(chǎn)生到進(jìn)入斷點服務(wù)例程的時間取決于當(dāng)前在 執(zhí)行級的指令和到存儲器斷點向量的延遲。 下面給出斷點過程的等效偽代碼。 r16 PC PC 0 x00000018 MSRBIP 1 MSRUMS MSRUM, MSRUM 0, MSRVMS MSRVM, MSRVM 0 MicroBlaze支持外部中斷源(連接到中斷輸入端 口)。如果MSR寄存器的中斷使能位IE設(shè)置為1,處理器 只響應(yīng)中斷。 在中斷,完成執(zhí)行級的指令,而譯碼級的指令被一 個跳轉(zhuǎn)到中斷向量(0 x10)的分支替換。中斷返回地址自 動的加載到R14寄存器。此外,處理器通過清除IE位禁止 將來的中斷。
54、當(dāng)執(zhí)行RTID時再次自動設(shè)置IE位。 如果BIP位或EIP位設(shè)置為1時,忽略中斷。 下面給出中斷過程的偽代碼。 r14 PC PC 0 x00000010 MSRIE 0 MSRUMS MSRUM, MSRUM 0, MSRVMS MSRVM, MSRVM 0 用戶異常向量在0 x8。用戶異常是由于在軟件流程中插 入“BRALID Rx,0 x8”指令。盡管Rx可以是任何一個通用 寄 存器,但是Xilinx推薦使用R15寄存器保存用戶異常返回 地址和使用RTSD指令從用戶異常句柄返回。 下面給出用戶異常的偽代碼。 rx PC PC 0 x00000008 MSRUMS MSRUM, MSRUM
55、 0, MSRVMS MSRVM, MSRVM 0 MicroBlaze處理器有可選的指令緩存,當(dāng)執(zhí)行那些駐 留在LMB地址范圍外部的代碼時,使用指令緩存可以提高 性能。 指令緩存有以下特點: 1)直接映射(1-way 關(guān)聯(lián)); 2)用戶可選擇的緩存地址范圍; 3)可配置的緩存和標(biāo)記大??; 4)CacheLink(XCL)接口上的緩存; 5)選擇使用4/8線字緩存行; 6)使用MSR寄存器控制打開/關(guān)閉緩存; 7)可選的WIC指令使指令緩存行無效。 1、通用指令緩存功能 當(dāng)使用指令緩存后,存儲器地址分割成兩部分:可緩 存的部分和非可緩存的部分。可緩存的部分由 1)C_ICACHE_BASEAD
56、DR 2)C_ICACHE_HIGHADDR 確定。 對應(yīng)在此地址范圍內(nèi)的是可緩存的,其它地址就是非 緩存的。 可緩存指令地址有兩部分組成:緩存地址和標(biāo)記地址。 MicroBlaze指令緩存范圍為:64B和64Kb(緩存地址 線為6-16比特)。 當(dāng)緩存容量小于2kB時,使用分布式的RAM實現(xiàn)標(biāo)記 RAM和指令RAM。 比如:C_ICACHE_BASEADDR=0 x00300000, C_ICACHE_HIGHADDR=0 x0030ffff, C_ICACHE_SIZE=4096, C_ICACHE_LINELEN=8, 使用16位地址線可緩存的存儲器容量為64KB,使用12位 地址線的緩
57、存容量為4KB,所要求的地址標(biāo)記的寬度為 16-12=4位。 在該配置下所需要的塊RAM為:2RAMB16用于存儲 1024個指令字,1RAMB16用于128個緩存行入口,每一個 由4比特標(biāo)記,8字有效位,1線有效比特組成??偣彩褂?3RAM16資源。 圖2.7 指令緩存結(jié)構(gòu) 2、指令緩存操作 對于每個取指操作,指令緩存判斷指令地址是否在緩 存范圍內(nèi)。 1)如果不在緩存范圍內(nèi),緩存控制器忽略指令, 并且讓PLB,OPB或LMB完成請求。 2)如果在緩存范圍內(nèi),在標(biāo)記RAM的查找表查找是否 請求地址已經(jīng)被緩存。 如果字和行(線)有效位被設(shè)置,且標(biāo)記地址和指令 地址的標(biāo)記相匹配,則查找成功。 當(dāng)緩
58、存缺失時,在IXCL接口請求新的指令,并且等待 存儲器控制器返回相關(guān)的緩存行(線)。 MicroBlaze處理器有可選的數(shù)據(jù)緩存提高性能。緩存的 存儲器地址不得在LMB的地址范圍內(nèi)。 數(shù)據(jù)緩存有以下特點: 1)直接映射(1-way 關(guān)聯(lián)); 2)完全寫入; 3)用戶可選擇的緩存地址范圍; 4)可配置的緩存和標(biāo)記大?。?5)CacheLink(XCL)接口上的緩存; 6)選擇使用4/8線字緩存行; 7)使用MSR寄存器控制打開/關(guān)閉緩存;可選的 8)WDC指令使指令緩存行無效。 1、通用數(shù)據(jù)緩存功能 當(dāng)使用數(shù)據(jù)緩存后,存儲器地址分割成兩部分:可緩 存的部分和非可緩存的部分??删彺娴牟糠钟?1)C
59、_DCACHE_BASEADDR 2)C_DCACHE_HIGHADDR 確定。 對應(yīng)在此地址范圍內(nèi)的是可緩存的,其它地址就是非 緩存的。 可緩存數(shù)據(jù)地址有兩部分組成: 1)緩存地址 2)標(biāo)記地址。 MicroBlaze數(shù)據(jù)緩存范圍為:64B和64Kb(緩存地址線 為6-16比特)。當(dāng)緩存容量小于2kB時,使用分布式的 RAM實現(xiàn)標(biāo)記RAM和指令RAM。 比如:C_DCACHE_BASEADDR=0 x00400000, C_DCACHE_HIGHADDR=0 x00403fff, C_DCACHE_SIZE=2048, C_DCACHE_LINELEN=4, 使用14位地址線可緩存的存儲器容
60、量為16KB,使用11 位地址線的緩存容量為2KB,所要求的地址標(biāo)記的寬度為 14-11=3位。 在該配置下所需要的塊RAM為:1RAMB16用于存儲 512個數(shù)據(jù)字,1RAMB16用于128個緩存行入口,每一個 由3比特標(biāo)記,4字有效位,1線有效比特。總共使用 2RAM16資源。 數(shù)據(jù)緩存結(jié)構(gòu) 2、數(shù)據(jù)緩存操作 MicroBlaze的數(shù)據(jù)緩存實現(xiàn)完全寫入?yún)f(xié)議。當(dāng)數(shù)據(jù)緩存 使能時,對緩存范圍內(nèi)的地址進(jìn)行保存操作時,在DXCL 到外部存儲器上產(chǎn)生一個相等的字節(jié),半字或字。如果目 標(biāo)地址字在緩存中,寫操作也同時更新緩存的數(shù)據(jù)。一個 寫緩存缺失不會加載相關(guān)的緩存線到緩存中。 如果數(shù)據(jù)緩存有效,并且從
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國慢性阻塞性肺疾病基層診療與管理指南(2024年)解讀 2
- 圖木舒克職業(yè)技術(shù)學(xué)院《中級俄語》2023-2024學(xué)年第一學(xué)期期末試卷
- 新疆維吾爾自治區(qū)喀什二中2025屆下學(xué)期高三物理試題第一次模擬考試試卷含解析
- 遼寧省四校聯(lián)考2024-2025學(xué)年高三下學(xué)期第一次診斷性考試英語試題試卷含解析
- 南昌應(yīng)用技術(shù)師范學(xué)院《專題口譯》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇省南京市示范名校2025年高三第六次月考含解析
- 2025年廣西安全員B證考試試題題庫
- 臺州科技職業(yè)學(xué)院《測量學(xué)實訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 天津開發(fā)區(qū)職業(yè)技術(shù)學(xué)院《模式識別技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年甘肅金昌市絲路眾創(chuàng)網(wǎng)絡(luò)科技有限公司招聘筆試參考題庫含答案解析
- 腹腔鏡下子宮肌瘤剔除術(shù)護(hù)理查房
- 嚴(yán)防管制刀具 對自己和他人負(fù)責(zé)-校園安全教育主題班會課件
- 09J202-1 坡屋面建筑構(gòu)造(一)-1
- 小學(xué)生運(yùn)動會安全教育課件
- 扁平足的癥狀與矯正方法
- 青春健康知識100題
- 員工考勤培訓(xùn)課件
- 危機(jī)處理與應(yīng)急管理
- 國開電大操作系統(tǒng)-Linux系統(tǒng)使用-實驗報告
- 黑臭水體監(jiān)測投標(biāo)方案(技術(shù)方案)
- 2023年高考生物全國通用易錯題13致死類的遺傳題(解析版)
評論
0/150
提交評論