《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 超標(biāo)量TURBO52嵌入式微處理器結(jié)構(gòu)設(shè)計(jì)
超標(biāo)量TURBO52嵌入式微處理器結(jié)構(gòu)設(shè)計(jì)
吳曉非
(電子科技大學(xué),四川 成都610041)
摘要: 介紹了TURBO52的研究背景及技術(shù)路線,在保持對經(jīng)典8051指令集后向兼容的前題下,通過重新進(jìn)行結(jié)構(gòu)設(shè)計(jì)來提高系統(tǒng)性能。介紹了指令流水線的結(jié)構(gòu)設(shè)計(jì),包括兩路超標(biāo)量結(jié)構(gòu)、分支預(yù)測、動態(tài)執(zhí)行和存儲管理。在FPGA上運(yùn)行真實(shí)控制系統(tǒng)應(yīng)用程序測試表明,在相同工作頻率下運(yùn)行一系列系統(tǒng)軟件可達(dá)經(jīng)典8051的30倍以上,最高指令吞吐率每時(shí)鐘周期兩條指令。但由于未實(shí)現(xiàn)三級存儲體系和數(shù)據(jù)高速緩存,工作在100 MHz以上性能的提升會受限。
Abstract:
Key words :

摘  要: 介紹了TURBO52的研究背景及技術(shù)路線,在保持對經(jīng)典8051指令集后向兼容的前題下,通過重新進(jìn)行結(jié)構(gòu)設(shè)計(jì)來提高系統(tǒng)性能。介紹了指令流水線的結(jié)構(gòu)設(shè)計(jì),包括兩路超標(biāo)量結(jié)構(gòu)、分支預(yù)測、動態(tài)執(zhí)行和存儲管理。在FPGA上運(yùn)行真實(shí)控制系統(tǒng)應(yīng)用程序測試表明,在相同工作頻率下運(yùn)行一系列系統(tǒng)軟件可達(dá)經(jīng)典8051的30倍以上,最高指令吞吐率每時(shí)鐘周期兩條指令。但由于未實(shí)現(xiàn)三級存儲體系和數(shù)據(jù)高速緩存,工作在100 MHz以上性能的提升會受限。
關(guān)鍵詞: 8051單片機(jī)嵌入式微處理器;結(jié)構(gòu)設(shè)計(jì);超標(biāo)量流水線;動態(tài)調(diào)度;轉(zhuǎn)移猜測

  8051指令集微處理器[1]自面世以來,以數(shù)以億計(jì)的規(guī)模應(yīng)用于各個(gè)領(lǐng)域,至今仍占據(jù)嵌入式微處理器用量的首位。但另一方面,相對于近三十年通用微處理器Intel Pentium PIV[2]、龍芯1號[3]、龍芯2號[4、5]、MIPS1000[6]和近年來32位高端嵌入式微處理器及ARM11[7]體系結(jié)構(gòu)突飛猛進(jìn)的發(fā)展而言,對8051微處理器核的改動很小,這也使得現(xiàn)有8051指令集系列微處理器受24 MHz工作頻率、24周期一條指令、256 B的變量空間和64 KB的數(shù)據(jù)空間[1]的局限,在運(yùn)行基于操作系統(tǒng)的高端嵌入式應(yīng)用時(shí)變得非常困難。
  Turbo52微處理器的設(shè)計(jì)背景是現(xiàn)有系統(tǒng)控制軟件都基于8051指令集開發(fā)環(huán)境,但未來要求數(shù)據(jù)和代碼從只有原來1/20外存訪問帶寬的串行flash中讀取,且還要求達(dá)到至少30倍于傳統(tǒng)8051的性能,運(yùn)行帶圖形界面的系統(tǒng)軟件。Turbo52在技術(shù)路線的選擇上,第一是考慮到未來是用于系統(tǒng)控制而非數(shù)據(jù)處理,這很大程度上減小了8051指令集由于指令位寬和沒有浮點(diǎn)運(yùn)算單元帶來的運(yùn)算性能上的局限;第二,從通用微處理器在過去三十多年的演進(jìn)歷史中可知,對于一個(gè)微處理器系列而言,因?yàn)闉槠溟_發(fā)軟件的總成本已遠(yuǎn)遠(yuǎn)高于微處理器設(shè)計(jì)成本,所以,一個(gè)微處理器系列的核心競爭力很大程度上是依賴于它能兼容現(xiàn)有軟件資源的數(shù)量,8051系列就擁有最為豐富的軟件資源;第三,目前國際上在單核微處理器體系結(jié)構(gòu)設(shè)計(jì)上已基本成熟,對微處理器體系結(jié)構(gòu)的研究熱點(diǎn)已轉(zhuǎn)入片內(nèi)存儲共享的多微處理器結(jié)構(gòu)和低功耗設(shè)計(jì);第四,目前芯片設(shè)計(jì)流程以及芯片設(shè)計(jì)、仿真,綜合和驗(yàn)證的自動化工具已允許對微處理器系統(tǒng)結(jié)構(gòu)進(jìn)行重新定義。
  綜上考慮認(rèn)為,造成8051系列性能局限性的根本原因是它落后的微體系結(jié)構(gòu)而非指令集本身,因此決定在首先保證完全重用所有現(xiàn)有軟件資源的基礎(chǔ)上,通過采用先進(jìn)系統(tǒng)結(jié)構(gòu)來重新定義內(nèi)部體系結(jié)構(gòu)的方法來挖掘微處理器結(jié)構(gòu)上的并行性以實(shí)現(xiàn)本應(yīng)由更復(fù)雜的32位嵌入式微處理器完成的系統(tǒng)控制任務(wù)。
  相對于傳統(tǒng)8051指令集處理器,Turbo52系統(tǒng)結(jié)構(gòu)上的改進(jìn)主要在于以下7個(gè)方面:
  (1)雙發(fā)射超標(biāo)量結(jié)構(gòu)。
  (2)基于寄存器重命名,動態(tài)調(diào)度和動態(tài)分支預(yù)測8級動態(tài)亂序流水線。
  (3)1 KB片上高速指令緩。
  (4)虛擬地址映射管理16 MB代碼,數(shù)據(jù)和輸入輸出空間。
  (5)將可直接尋址的輸入輸出設(shè)備、定時(shí)器計(jì)數(shù)器、串口、外口、中斷控制等的輸入輸出設(shè)備時(shí)序與微處理器核時(shí)序完全分離,異步相連,方便了輸入輸出設(shè)備的增減。
  (6)微處理器核時(shí)序與存儲介質(zhì)時(shí)序完全分離,異步相連,使得可使用任何介質(zhì)。
  (7)訪存載入定向。
1 指令流水線結(jié)構(gòu)設(shè)計(jì)綜述
  微處理器結(jié)構(gòu)設(shè)計(jì)的重點(diǎn)是指令流水線結(jié)構(gòu)設(shè)計(jì),其中數(shù)據(jù)相關(guān)和控制相關(guān)的解決是難點(diǎn)。Turbo52的設(shè)計(jì)是用動態(tài)調(diào)度解決數(shù)據(jù)相關(guān)和用分支預(yù)測解決控制相關(guān)。動態(tài)調(diào)度是動態(tài)地平衡不同的功能器件延時(shí)對流水效率的影響。分支預(yù)測是讓條件分支先猜測執(zhí)行。8051指令集共有111條指令,有著多種尋址方式,不定的指令長度和將輸入輸出設(shè)備寄存器與體系結(jié)構(gòu)寄存器作為同類寄存器訪問[1],這些都成為了動態(tài)亂序結(jié)構(gòu)設(shè)計(jì)中的難點(diǎn)。選用兩路超標(biāo)量是考慮它是現(xiàn)有8051指令集軟件開發(fā)編譯環(huán)境下[7]處理器性能的峰值點(diǎn)。因?yàn)槎喟l(fā)射是在同一時(shí)鐘周期取得,發(fā)射、執(zhí)行、寫回和提交多條不相關(guān)的指令,這是與單發(fā)射的最大不同。超過兩路的多發(fā)射必須依賴于編譯器的支持,否則如果指令發(fā)射段得不到足夠多條源操作數(shù)已準(zhǔn)備好的不相關(guān)指令,更多的發(fā)射就不能實(shí)現(xiàn),性能也就不能相對于更少的發(fā)射窗口有提高。在目前獲得支持多發(fā)射編譯優(yōu)化的編譯器不現(xiàn)實(shí)的條件下,根據(jù)對運(yùn)行現(xiàn)有應(yīng)用程序的仿真,實(shí)際程序中有大量的相關(guān)存在于相鄰2條指令間,故雙發(fā)射平均每個(gè)時(shí)鐘內(nèi)可發(fā)射1.4條指令而非理想狀態(tài)下的2條指令,因此再增加發(fā)射窗口也不能換來顯著的性能提高。指令流水線設(shè)計(jì)的原則是將一個(gè)指令周期盡可能均勻地分割到流水段中來獲得較小延時(shí)的關(guān)鍵路徑[8],量化流水段從按系統(tǒng)結(jié)構(gòu)功能劃分開始,然后再根據(jù)綜合結(jié)果指出關(guān)鍵路徑在RTL上調(diào)整每一段的細(xì)節(jié)功能劃分和節(jié)拍數(shù)。TURBO52指令流水線分為流水線前端和后端2個(gè)部分。前端由先行指令數(shù)據(jù)預(yù)取、取指對齊和譯碼組成,后端由寄存器重命名、指令發(fā)射、指令執(zhí)行、指令寫回、指令提交和例外處理構(gòu)成。
2 前端流水線設(shè)計(jì)
  實(shí)現(xiàn)兩路超標(biāo)量結(jié)構(gòu),首先是前端流水線平均能在每個(gè)時(shí)鐘周期取得2條對齊指令送入譯碼隊(duì)列。TURBO52前端流水由指令塊預(yù)取,指令取指和指令譯碼組成。前端流水線的3個(gè)流水段各自獨(dú)立自治,由緩沖區(qū)相連,當(dāng)下級緩沖滿或本級緩沖空時(shí)停止工作,但全局例外時(shí)全部指令作廢,從重新取到指令的開始向前流動。
2.1 指令預(yù)取
  采用推測方式,每兩個(gè)周期從指令緩沖中取得一個(gè)塊,下個(gè)周期取下一塊,按先進(jìn)先出方式進(jìn)入指令塊隊(duì)列。隊(duì)列可供4塊,共32 B。如Cache缺失就從存儲單元調(diào)入該塊。但如取指未取中或指令未對齊,就會向預(yù)取觸發(fā)一個(gè)調(diào)入例外,如不是正在取的塊,就會作廢當(dāng)前塊,并調(diào)入重新調(diào)取指段要求的塊。
2.2 指令取指
  取指流水段指第一次從存儲單元取得一條指令長度,可能是1 B、2 B或3 B,因此這時(shí)只能確定它的下一條指令所在的地址,而無法獲得下2條指令的地址,所以每個(gè)時(shí)鐘周期取2條指令是不可能實(shí)現(xiàn)的。TURBO52的做法是只有指令Cache命中時(shí)才能實(shí)現(xiàn)雙發(fā)射。第一次取到由ITLB預(yù)譯碼后的指令塊后,先不寫入Cache,而在取指段加入該塊中每條指令下2條指令的第一個(gè)字節(jié)所在地址,然后再寫入Cache,這樣在下一次Cache命中時(shí),就可同時(shí)判定一條指令的下2條指令是否在預(yù)取隊(duì)列中。在指令取指段,對取指影響最大的是不對齊和控制流的改變[8]。不對齊是指由于指令長度不定但指令塊卻是固定的8字節(jié),所以跨越了2個(gè)指令塊,并且其中一個(gè)未在預(yù)取隊(duì)列中,只有等待調(diào)入??刂屏鞯母淖冎杏绊懽畲蟮氖菞l件分支,8051應(yīng)用中平均每六七條指令就會有一條是條件分支指令。TURBO52采用了動態(tài)亂序執(zhí)行的后端流水線,一條條件分支指令要到在7個(gè)時(shí)鐘后的提交階段才會給出轉(zhuǎn)移成功還是失敗,但另一方面,條件分支方向大多數(shù)是可預(yù)測的[9]。TURBO52使用了動態(tài)靜態(tài)結(jié)合的分支預(yù)測,分支成功率90%以上,使得絕大多數(shù)由條件分支引起的在此之間流水線停頓的現(xiàn)象得以消除。動態(tài)分支預(yù)測的分支目標(biāo)緩沖采用全相連方式,保存了最近32個(gè)分支入口及最近3次的實(shí)際分支方向,對分支目標(biāo)緩沖未命中的分支指令,就按分支發(fā)生方向進(jìn)行靜態(tài)預(yù)測。在TURBO52的指令流水線中,判定預(yù)測正確與否是由提交段給出,只在提交分支指令時(shí)更新分支歷史信息。如同時(shí)取到2條條件分支,則會一條條地處理,因?yàn)椴荒芡瑫r(shí)預(yù)測2條分支。為簡化例外處理,8051指令集的3條指令(RET,RETI,JMP_A+DPTR)TURBO52讓它強(qiáng)行串行化,即讓流水停頓。
2.3 指令譯碼
  將取得的指令對齊后放入深度為4的譯碼隊(duì)列,譯碼部件每個(gè)時(shí)鐘周期對應(yīng)2條指令同時(shí)譯碼,即在已預(yù)譯碼的基礎(chǔ)上把8051指令集的指令按源、目的、操作3個(gè)大類進(jìn)行正交分解,將8051指令集原本不規(guī)則的指令格式轉(zhuǎn)換成適于后端流水處理規(guī)則的內(nèi)部操作格式。
3 基于動態(tài)執(zhí)行的后端流水線設(shè)計(jì)
  TURBO52后端指令流水線包括按序的寄存器重命名、亂序指令發(fā)射、亂序指令執(zhí)行、亂序指令寫回、順序指令提交共5個(gè)流水段。除指令執(zhí)行段各種不同的操作有不同的延時(shí)外,其余均能在一個(gè)時(shí)鐘周期最多完成2條指令的處理,但對訪存和條件分支指令,指令發(fā)射段每周期只能發(fā)射一條。與前端指令流水線不同,它們共享一個(gè)再定序緩沖循環(huán)隊(duì)列,記錄了指令進(jìn)入后端流水線的原始順序,這個(gè)順序也是指令的最后提交次序。在這里,大多數(shù)假相關(guān)已被消除,流水線真相關(guān)的關(guān)鍵路徑是整條指令流水線的關(guān)鍵路徑。
3.1 寄存器重命名
  在動態(tài)執(zhí)行中,對一串寄存器的讀寫并不一定按照它們在程序中的順序進(jìn)行,這就要求要解決反向相關(guān)與輸出相關(guān)[9]。TURBO52共有24個(gè)重命名文件寄存器項(xiàng),它們都由重命名寄存器號來標(biāo)識。在8051指令集中,很多運(yùn)算結(jié)果都是由幾個(gè)有限的體系結(jié)構(gòu)寄存器A、B、PSW、R0~R7進(jìn)行中轉(zhuǎn)[1],TURBO51在建立映射關(guān)系時(shí)常常是不同的幾個(gè)重命名寄存器對應(yīng)同一體系結(jié)構(gòu)寄存器在不同時(shí)刻的值。對于一個(gè)重命名寄存器項(xiàng),最基本的3個(gè)狀態(tài)是已寫回、閑和未決。在寄存器重命名段,只要再定序緩沖有空且已譯碼對列不為空,寄存器重命名段就將巳譯碼指令重命名并加入再定序緩沖。其結(jié)果是分配重命名寄存器和為源匹配最近對它寫入的重命名寄存器這兩項(xiàng)任務(wù)同時(shí)進(jìn)行。這里,對間接尋址的處理是一個(gè)關(guān)鍵邊界點(diǎn)。TURBO52處理這幾類間接尋址指令采取了基于猜測的方法,因?yàn)殡m然存在相關(guān)的可能而且不允許讀錯(cuò)誤數(shù)據(jù),但從目標(biāo)應(yīng)用程序的統(tǒng)計(jì)結(jié)果來看,為處理不足0.3%的可能性而增加整個(gè)間接尋址方式的流水延時(shí)是不合理的。例如對@RI:首先使用體系結(jié)構(gòu)寄存器中對應(yīng)的R1或R0的值作為地址發(fā)出訪問體系結(jié)構(gòu)寄存器的請求,如果在重命名寄存器中沒有PSW中RSO,RSI或?qū)δ壳癛O、RI所在地址的寫入操作的映射,即沒有發(fā)在相關(guān)時(shí),它所得到的是與直接尋址方式一樣的取源操作數(shù)延時(shí),如發(fā)生相關(guān),TURBO52寄存器重命名段使用了一個(gè)長度為8的循環(huán)隊(duì)列用于處理間接尋址的地址未決,不采用由先前猜測所得的結(jié)果,當(dāng)?shù)刂烦霈F(xiàn)在寫回總線時(shí)立即觸發(fā)訪體系結(jié)構(gòu)寄存器操作。
3.2 指令發(fā)射
  指令發(fā)射段負(fù)責(zé)在每個(gè)時(shí)鐘周期內(nèi)從再定序緩沖中選擇發(fā)射兩條源已準(zhǔn)備好的指令到相應(yīng)的執(zhí)行部件。TURBO52的再定序緩沖也同時(shí)作為保留站。由指令發(fā)射段根據(jù)執(zhí)行單元的忙閑狀態(tài)以及源是否準(zhǔn)備好來決定是否發(fā)射這條指令。
3.3 指令執(zhí)行
  本微處理器的指令一旦被發(fā)射進(jìn)入功能單元后就開始執(zhí)行了。在這里,操作的執(zhí)行順序與它們在軟件中的次序無關(guān)。TURBO52指令執(zhí)行部件由一個(gè)算術(shù)流水單元(加減乘除)、1個(gè)LOAD/STORE部件、2個(gè)傳送、邏輯和位操作部件和1個(gè)分支部件組成。有的操作是單周期的,如傳送和邏緝運(yùn)算;有的是固定多周期的,如加減乘除;有的是不固定多周期延時(shí)的,如訪問數(shù)據(jù)區(qū)的LOAD/SRORE。
3.4 指令寫回
  公共數(shù)據(jù)總線連接了所有執(zhí)行功能單元,重命名寄存器堆和再定序緩沖,功能單元產(chǎn)生的結(jié)果廣播到公共數(shù)據(jù)總線的同時(shí)從公共數(shù)據(jù)總線鎖存源送往執(zhí)行。TURBO52指令寫回保證了操作,當(dāng)其所有源操作數(shù)就續(xù)后馬上開始執(zhí)行,達(dá)到數(shù)據(jù)流極限。
3.5 指令提交
  指令提交意味著指令執(zhí)行結(jié)束并修改了微處理器的狀態(tài),指令離開再定序緩沖,寫入真實(shí)意義的寄存器文件。再定序緩沖由一個(gè)頭指針和尾指針構(gòu)成了一個(gè)循環(huán)隊(duì)列,深度為8條指令,指令進(jìn)行提交時(shí)釋放一項(xiàng)再定序緩沖,尾指針遞增。亂序執(zhí)行的另一個(gè)困難是異常處理,因?yàn)?051指令集系采用的精確例外[1],即只允許程序在嚴(yán)格順序執(zhí)行的情況下所產(chǎn)生的異常發(fā)生。在程序的執(zhí)行中,中斷和異常會打斷程序的執(zhí)行,動態(tài)流水線的兩路超標(biāo)量微處理器由指令的動態(tài)亂序執(zhí)行,但對外部程序來說與完全順序執(zhí)行只存在速度的差別而非結(jié)果的差別,所以它必須能精確地與順序執(zhí)行條件下的例外結(jié)果保持一致,這是設(shè)計(jì)的一個(gè)高風(fēng)險(xiǎn)區(qū)。中斷在本處理機(jī)中是來自外部輸入輸出環(huán)境,在程序執(zhí)行期間異步發(fā)生。中斷發(fā)生時(shí),正常運(yùn)行的程序必須掛起。異常是由程序自身指令的執(zhí)行而引起的,當(dāng)正在進(jìn)行代碼分頁切換時(shí)會引發(fā)分頁異常,分支預(yù)測錯(cuò)誤時(shí)會引起分支異常,本處器只在指令提交段上對異常和中斷進(jìn)行處理,將中斷也作為異常的一種。
4 存儲子系統(tǒng)和輸入輸出設(shè)備設(shè)計(jì)
  8051指令集是指令和數(shù)據(jù)相分離的哈佛結(jié)構(gòu),存儲子系統(tǒng)分為代碼空間和數(shù)據(jù)空間[1]。TURBO52在保持兼?zhèn)鹘y(tǒng)8051指令集數(shù)據(jù)和代碼空間各64 KB的基礎(chǔ)上,用分頁的方式實(shí)現(xiàn)了共享一個(gè)外部數(shù)據(jù)和代碼存儲器件的物理地址空間下,代碼與數(shù)據(jù)各16 MB的虛擬地址空間。
4.1 代碼空間
  TURBO52中訪問代碼空間均以8 B塊為單位進(jìn)行,分為外部存儲器和一級指令高速緩存兩個(gè)層次。指令高速緩存容量是1KB,采用四路組相連映象,LFU替換算法。指令流水線代碼預(yù)取段首先訪問指令高速緩存,如命中則調(diào)入并更新相應(yīng)標(biāo)識位,如缺失則進(jìn)入指令先行訪存隊(duì)列中查找。指令塊在從外存中取入隊(duì)列時(shí)已完成了對指令長度是否為可預(yù)測分支及目標(biāo)地址來自哪個(gè)指令字節(jié)的預(yù)譯碼。
4.2 數(shù)據(jù)空間
  8051指令集對數(shù)據(jù)空間的訪問只能通過MOVX指令進(jìn)行[1],MOVX變量空間、外設(shè)IO與外存共享這個(gè)數(shù)據(jù)空間。這里使用了載入定向,當(dāng)一條MOVX讀指令到來且正要讀還未寫就續(xù)的這個(gè)寄存器,LOAD/STORE部件用直接旁路將這條LOAD定向到寫總線上,從而消除不必要的等待。從簡化設(shè)計(jì)的角度,TURBO52沒有實(shí)現(xiàn)完整的一級數(shù)據(jù)高速緩存,而是用一個(gè)容量為4 KB的RAM用于程序變量的訪問。在目前基于RTOS實(shí)時(shí)操作系統(tǒng)的應(yīng)用下完全達(dá)到了快速的變量訪問又避免了實(shí)現(xiàn)較復(fù)雜的一致性問題。外部數(shù)據(jù)區(qū):對于指令和數(shù)據(jù)對外部存儲的訪問均是按相同大小的8 B塊為最小單位的方式進(jìn)行的。用先行預(yù)取緩沖的方式,當(dāng)TLB缺失時(shí),向外部存儲器接口啟動這個(gè)塊的調(diào)入請求。輸入輸出設(shè)備有2個(gè)定時(shí)器計(jì)數(shù)器、1個(gè)串口,中斷控制和32條通用I/O口都可直接尋址方式訪問。對新增加的18位PWM,是在MOVX訪問的數(shù)據(jù)空間通過新定義的輸入輸出總線和分配端口地址來接入,這也使以后增減外設(shè)的工作只與輸入輸出總線有關(guān)而與指令流水線完全分離,對增減外設(shè)提供了方便。
  在設(shè)計(jì)中先走通了靜態(tài)分支預(yù)測和順序流水線,然后在總結(jié)這個(gè)階段錯(cuò)誤的基礎(chǔ)上開始TURBO52其他部份的設(shè)計(jì)。即先走完從每個(gè)時(shí)鐘級的功能描述,到可綜合且代碼風(fēng)格規(guī)范的RTL描述[10],然后進(jìn)行NC-Verilog前仿真驗(yàn)證、DC綜合、FPGA驗(yàn)證,最后針對具體ASIC單元庫進(jìn)行門級仿真的設(shè)計(jì)流程。在此后的設(shè)計(jì)中,從功能描述文檔開始就將綜合中可能遇到的問題納入考慮,在劃分流水線功能時(shí)由綜合結(jié)果幫助了功能描述級文檔的修改,并排除了大多數(shù)嚴(yán)重錯(cuò)誤。在RTL仿真階段運(yùn)行了指令集驗(yàn)證,尤其著重驗(yàn)證了動態(tài)執(zhí)行、分支預(yù)測和例外處理中的臨界指令組合,排除少量嚴(yán)重錯(cuò)誤和較多外設(shè)錯(cuò)誤;此后又驗(yàn)證了體系結(jié)構(gòu)寄存器文件讀寫、分頁代碼間的切換等其他高風(fēng)險(xiǎn)點(diǎn);之后又驗(yàn)證了以外設(shè)為主的用戶功能部分和運(yùn)行完整的RTOS操作系統(tǒng)。最后,TURBO52微處理器在FPGA系統(tǒng)級驗(yàn)證上能正確且穩(wěn)定地運(yùn)行RTL仿真所用的測試程序包,全部現(xiàn)有應(yīng)用軟件和基于RTOS操作系統(tǒng)的應(yīng)用方案, 能流暢處理圖形用戶界面。在同為27 MHz時(shí)鐘下,其結(jié)果顯示系統(tǒng)運(yùn)行速度比傳統(tǒng)8051提高30倍以上。運(yùn)行直觀的方波發(fā)生應(yīng)用測試是37倍以上,這說明TURBO52技術(shù)路線選擇正確,流水線效率高,高速緩存容量足夠,命中率高。使用CMIC 0.18 um標(biāo)準(zhǔn)單元工藝庫進(jìn)行了綜合,表明TURBO52微處理器最高工作頻率大于150 MHz。接下來的工作是進(jìn)一步改進(jìn)存貯子系統(tǒng),因?yàn)門URBO52工作在100 MHz以上時(shí),F(xiàn)lash訪問帶寬與處理器核的需求帶寬的差距顯著拉大,這帶來了性能提升的瓶頸,應(yīng)引入有DDR_SDRAM的三級存儲體系和加入數(shù)據(jù)高速緩存,使運(yùn)行更流暢,力爭最終能運(yùn)行用于32位嵌入處理器上流行的基于LINUX操作系統(tǒng)的應(yīng)用。
參考文獻(xiàn)
[1] MCS(R) 51 Microcontroller Family User′s Manual,Intel Corp Press,1994.
[2] Micro Architecture of the Pentium 4 Processor,Glenn Hinton,Dave Sage,Intel Technology Journal,Q1,2001,5(1):1-12.
[3] 胡偉武,唐志敏.龍芯1號處理器結(jié)構(gòu)設(shè)計(jì).計(jì)算機(jī)學(xué)報(bào),2003.4:386-396.
[4] 胡偉武,張福新,李祖松.龍芯2號處理器設(shè)計(jì)與性能分析.計(jì)算機(jī)研究與發(fā)展,2006,43(60):956-966.
[5] HU Wei Wu,ZHAO Ji Ye.Implementing a 1 GHz four issue  out-of-order execution microprocessor in a standard ASIC  methodology,J.Comput.Sci & Techno,2007(6):1-14.
[6] YEAGER K.The MIPS10000 superscalar microprocessor, IEEE Micro,1996,16(2).
[7] ARM DDI 0100E,ARM Architecture Reference Manual,2nd Edition,ARM Limited,2000.
[8] SHENG J P.Modern processor design:Fundamentals of  Superscalar Processors,McGraw.Hill,2004.(7).
[9] HENNESSY J L,DAVID A P.Computer architecture:A   quantitative approach, 2nd Ed.,morgan kaufmann publishers, Inc.,1996.
[10] MICHAEL D.C,Advanced digital design with the verilog HDL,prentice hall India,2004.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。