《電子技術(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ù)路線,在保持對(duì)經(jīng)典8051指令集后向兼容的前題下,,通過重新進(jìn)行結(jié)構(gòu)設(shè)計(jì)來提高系統(tǒng)性能,。介紹了指令流水線的結(jié)構(gòu)設(shè)計(jì),包括兩路超標(biāo)量結(jié)構(gòu),、分支預(yù)測(cè),、動(dòng)態(tài)執(zhí)行和存儲(chǔ)管理。在FPGA上運(yùn)行真實(shí)控制系統(tǒng)應(yīng)用程序測(cè)試表明,,在相同工作頻率下運(yùn)行一系列系統(tǒng)軟件可達(dá)經(jīng)典8051的30倍以上,,最高指令吞吐率每時(shí)鐘周期兩條指令,。但由于未實(shí)現(xiàn)三級(jí)存儲(chǔ)體系和數(shù)據(jù)高速緩存,工作在100 MHz以上性能的提升會(huì)受限,。
Abstract:
Key words :

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

  8051指令集微處理器[1]自面世以來,,以數(shù)以億計(jì)的規(guī)模應(yīng)用于各個(gè)領(lǐng)域,,至今仍占據(jù)嵌入式微處理器用量的首位。但另一方面,,相對(duì)于近三十年通用微處理器Intel Pentium PIV[2],、龍芯1號(hào)[3]、龍芯2號(hào)[4,、5],、MIPS1000[6]和近年來32位高端嵌入式微處理器及ARM11[7]體系結(jié)構(gòu)突飛猛進(jìn)的發(fā)展而言,對(duì)8051微處理器核的改動(dòng)很小,,這也使得現(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)歷史中可知,,對(duì)于一個(gè)微處理器系列而言,,因?yàn)闉槠溟_發(fā)軟件的總成本已遠(yuǎn)遠(yuǎn)高于微處理器設(shè)計(jì)成本,所以,,一個(gè)微處理器系列的核心競(jìng)爭(zhēng)力很大程度上是依賴于它能兼容現(xiàn)有軟件資源的數(shù)量,,8051系列就擁有最為豐富的軟件資源;第三,,目前國際上在單核微處理器體系結(jié)構(gòu)設(shè)計(jì)上已基本成熟,對(duì)微處理器體系結(jié)構(gòu)的研究熱點(diǎn)已轉(zhuǎn)入片內(nèi)存儲(chǔ)共享的多微處理器結(jié)構(gòu)和低功耗設(shè)計(jì),;第四,,目前芯片設(shè)計(jì)流程以及芯片設(shè)計(jì)、仿真,,綜合和驗(yàn)證的自動(dòng)化工具已允許對(duì)微處理器系統(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ù)。
  相對(duì)于傳統(tǒng)8051指令集處理器,,Turbo52系統(tǒng)結(jié)構(gòu)上的改進(jìn)主要在于以下7個(gè)方面:
  (1)雙發(fā)射超標(biāo)量結(jié)構(gòu),。
  (2)基于寄存器重命名,動(dòng)態(tài)調(diào)度和動(dòng)態(tài)分支預(yù)測(cè)8級(jí)動(dòng)態(tài)亂序流水線,。
  (3)1 KB片上高速指令緩,。
  (4)虛擬地址映射管理16 MB代碼,數(shù)據(jù)和輸入輸出空間,。
  (5)將可直接尋址的輸入輸出設(shè)備,、定時(shí)器計(jì)數(shù)器、串口,、外口,、中斷控制等的輸入輸出設(shè)備時(shí)序與微處理器核時(shí)序完全分離,異步相連,,方便了輸入輸出設(shè)備的增減,。
  (6)微處理器核時(shí)序與存儲(chǔ)介質(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ì)是用動(dòng)態(tài)調(diào)度解決數(shù)據(jù)相關(guān)和用分支預(yù)測(cè)解決控制相關(guān),。動(dòng)態(tài)調(diào)度是動(dòng)態(tài)地平衡不同的功能器件延時(shí)對(duì)流水效率的影響。分支預(yù)測(cè)是讓條件分支先猜測(cè)執(zhí)行,。8051指令集共有111條指令,,有著多種尋址方式,不定的指令長度和將輸入輸出設(shè)備寄存器與體系結(jié)構(gòu)寄存器作為同類寄存器訪問[1],,這些都成為了動(dòng)態(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),,性能也就不能相對(duì)于更少的發(fā)射窗口有提高。在目前獲得支持多發(fā)射編譯優(yōu)化的編譯器不現(xiàn)實(shí)的條件下,,根據(jù)對(duì)運(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ù)取,、取指對(duì)齊和譯碼組成,,后端由寄存器重命名、指令發(fā)射,、指令執(zhí)行,、指令寫回、指令提交和例外處理構(gòu)成,。
2 前端流水線設(shè)計(jì)
  實(shí)現(xiàn)兩路超標(biāo)量結(jié)構(gòu),,首先是前端流水線平均能在每個(gè)時(shí)鐘周期取得2條對(duì)齊指令送入譯碼隊(duì)列。TURBO52前端流水由指令塊預(yù)取,,指令取指和指令譯碼組成,。前端流水線的3個(gè)流水段各自獨(dú)立自治,由緩沖區(qū)相連,,當(dāng)下級(jí)緩沖滿或本級(jí)緩沖空時(shí)停止工作,,但全局例外時(shí)全部指令作廢,,從重新取到指令的開始向前流動(dòng)。
2.1 指令預(yù)取
  采用推測(cè)方式,,每?jī)蓚€(gè)周期從指令緩沖中取得一個(gè)塊,,下個(gè)周期取下一塊,按先進(jìn)先出方式進(jìn)入指令塊隊(duì)列,。隊(duì)列可供4塊,,共32 B。如Cache缺失就從存儲(chǔ)單元調(diào)入該塊,。但如取指未取中或指令未對(duì)齊,,就會(huì)向預(yù)取觸發(fā)一個(gè)調(diào)入例外,如不是正在取的塊,,就會(huì)作廢當(dāng)前塊,,并調(diào)入重新調(diào)取指段要求的塊。
2.2 指令取指
  取指流水段指第一次從存儲(chǔ)單元取得一條指令長度,,可能是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ì)列中,。在指令取指段,對(duì)取指影響最大的是不對(duì)齊和控制流的改變[8],。不對(duì)齊是指由于指令長度不定但指令塊卻是固定的8字節(jié),,所以跨越了2個(gè)指令塊,并且其中一個(gè)未在預(yù)取隊(duì)列中,,只有等待調(diào)入,。控制流的改變中影響最大的是條件分支,,8051應(yīng)用中平均每六七條指令就會(huì)有一條是條件分支指令,。TURBO52采用了動(dòng)態(tài)亂序執(zhí)行的后端流水線,一條條件分支指令要到在7個(gè)時(shí)鐘后的提交階段才會(huì)給出轉(zhuǎn)移成功還是失敗,,但另一方面,,條件分支方向大多數(shù)是可預(yù)測(cè)的[9],。TURBO52使用了動(dòng)態(tài)靜態(tài)結(jié)合的分支預(yù)測(cè),分支成功率90%以上,,使得絕大多數(shù)由條件分支引起的在此之間流水線停頓的現(xiàn)象得以消除,。動(dòng)態(tài)分支預(yù)測(cè)的分支目標(biāo)緩沖采用全相連方式,保存了最近32個(gè)分支入口及最近3次的實(shí)際分支方向,,對(duì)分支目標(biāo)緩沖未命中的分支指令,,就按分支發(fā)生方向進(jìn)行靜態(tài)預(yù)測(cè)。在TURBO52的指令流水線中,,判定預(yù)測(cè)正確與否是由提交段給出,,只在提交分支指令時(shí)更新分支歷史信息。如同時(shí)取到2條條件分支,,則會(huì)一條條地處理,,因?yàn)椴荒芡瑫r(shí)預(yù)測(cè)2條分支。為簡(jiǎn)化例外處理,,8051指令集的3條指令(RET,,RETI,JMP_A+DPTR)TURBO52讓它強(qiáng)行串行化,,即讓流水停頓,。
2.3 指令譯碼
  將取得的指令對(duì)齊后放入深度為4的譯碼隊(duì)列,譯碼部件每個(gè)時(shí)鐘周期對(duì)應(yīng)2條指令同時(shí)譯碼,,即在已預(yù)譯碼的基礎(chǔ)上把8051指令集的指令按源,、目的、操作3個(gè)大類進(jìn)行正交分解,,將8051指令集原本不規(guī)則的指令格式轉(zhuǎn)換成適于后端流水處理規(guī)則的內(nèi)部操作格式,。
3 基于動(dòng)態(tài)執(zhí)行的后端流水線設(shè)計(jì)
  TURBO52后端指令流水線包括按序的寄存器重命名、亂序指令發(fā)射,、亂序指令執(zhí)行,、亂序指令寫回、順序指令提交共5個(gè)流水段,。除指令執(zhí)行段各種不同的操作有不同的延時(shí)外,,其余均能在一個(gè)時(shí)鐘周期最多完成2條指令的處理,但對(duì)訪存和條件分支指令,,指令發(fā)射段每周期只能發(fā)射一條,。與前端指令流水線不同,它們共享一個(gè)再定序緩沖循環(huán)隊(duì)列,,記錄了指令進(jìn)入后端流水線的原始順序,,這個(gè)順序也是指令的最后提交次序。在這里,大多數(shù)假相關(guān)已被消除,,流水線真相關(guān)的關(guān)鍵路徑是整條指令流水線的關(guān)鍵路徑,。
3.1 寄存器重命名
  在動(dòng)態(tài)執(zhí)行中,對(duì)一串寄存器的讀寫并不一定按照它們?cè)诔绦蛑械捻樞蜻M(jìn)行,,這就要求要解決反向相關(guān)與輸出相關(guān)[9],。TURBO52共有24個(gè)重命名文件寄存器項(xiàng),它們都由重命名寄存器號(hào)來標(biāo)識(shí),。在8051指令集中,,很多運(yùn)算結(jié)果都是由幾個(gè)有限的體系結(jié)構(gòu)寄存器A、B,、PSW,、R0~R7進(jìn)行中轉(zhuǎn)[1],TURBO51在建立映射關(guān)系時(shí)常常是不同的幾個(gè)重命名寄存器對(duì)應(yīng)同一體系結(jié)構(gòu)寄存器在不同時(shí)刻的值,。對(duì)于一個(gè)重命名寄存器項(xiàng),,最基本的3個(gè)狀態(tài)是已寫回、閑和未決,。在寄存器重命名段,,只要再定序緩沖有空且已譯碼對(duì)列不為空,寄存器重命名段就將巳譯碼指令重命名并加入再定序緩沖,。其結(jié)果是分配重命名寄存器和為源匹配最近對(duì)它寫入的重命名寄存器這兩項(xiàng)任務(wù)同時(shí)進(jìn)行,。這里,對(duì)間接尋址的處理是一個(gè)關(guān)鍵邊界點(diǎn),。TURBO52處理這幾類間接尋址指令采取了基于猜測(cè)的方法,,因?yàn)殡m然存在相關(guān)的可能而且不允許讀錯(cuò)誤數(shù)據(jù),,但從目標(biāo)應(yīng)用程序的統(tǒng)計(jì)結(jié)果來看,,為處理不足0.3%的可能性而增加整個(gè)間接尋址方式的流水延時(shí)是不合理的。例如對(duì)@RI:首先使用體系結(jié)構(gòu)寄存器中對(duì)應(yīng)的R1或R0的值作為地址發(fā)出訪問體系結(jié)構(gòu)寄存器的請(qǐng)求,,如果在重命名寄存器中沒有PSW中RSO,,RSI或?qū)δ壳癛O、RI所在地址的寫入操作的映射,,即沒有發(fā)在相關(guān)時(shí),,它所得到的是與直接尋址方式一樣的取源操作數(shù)延時(shí),如發(fā)生相關(guān),,TURBO52寄存器重命名段使用了一個(gè)長度為8的循環(huán)隊(duì)列用于處理間接尋址的地址未決,,不采用由先前猜測(cè)所得的結(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í)行順序與它們?cè)谲浖械拇涡驘o關(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í)行中,中斷和異常會(huì)打斷程序的執(zhí)行,,動(dòng)態(tài)流水線的兩路超標(biāo)量微處理器由指令的動(dòng)態(tài)亂序執(zhí)行,,但對(duì)外部程序來說與完全順序執(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í)會(huì)引發(fā)分頁異常,,分支預(yù)測(cè)錯(cuò)誤時(shí)會(huì)引起分支異常,,本處器只在指令提交段上對(duì)異常和中斷進(jìn)行處理,將中斷也作為異常的一種,。
4 存儲(chǔ)子系統(tǒng)和輸入輸出設(shè)備設(shè)計(jì)
  8051指令集是指令和數(shù)據(jù)相分離的哈佛結(jié)構(gòu),,存儲(chǔ)子系統(tǒng)分為代碼空間和數(shù)據(jù)空間[1]。TURBO52在保持兼?zhèn)鹘y(tǒng)8051指令集數(shù)據(jù)和代碼空間各64 KB的基礎(chǔ)上,,用分頁的方式實(shí)現(xiàn)了共享一個(gè)外部數(shù)據(jù)和代碼存儲(chǔ)器件的物理地址空間下,,代碼與數(shù)據(jù)各16 MB的虛擬地址空間。
4.1 代碼空間
  TURBO52中訪問代碼空間均以8 B塊為單位進(jìn)行,,分為外部存儲(chǔ)器和一級(jí)指令高速緩存兩個(gè)層次,。指令高速緩存容量是1KB,采用四路組相連映象,,LFU替換算法,。指令流水線代碼預(yù)取段首先訪問指令高速緩存,如命中則調(diào)入并更新相應(yīng)標(biāo)識(shí)位,,如缺失則進(jìn)入指令先行訪存隊(duì)列中查找,。指令塊在從外存中取入隊(duì)列時(shí)已完成了對(duì)指令長度是否為可預(yù)測(cè)分支及目標(biāo)地址來自哪個(gè)指令字節(jié)的預(yù)譯碼。
4.2 數(shù)據(jù)空間
  8051指令集對(duì)數(shù)據(jù)空間的訪問只能通過MOVX指令進(jìn)行[1],,MOVX變量空間,、外設(shè)IO與外存共享這個(gè)數(shù)據(jù)空間。這里使用了載入定向,,當(dāng)一條MOVX讀指令到來且正要讀還未寫就續(xù)的這個(gè)寄存器,,LOAD/STORE部件用直接旁路將這條LOAD定向到寫總線上,從而消除不必要的等待,。從簡(jiǎn)化設(shè)計(jì)的角度,,TURBO52沒有實(shí)現(xiàn)完整的一級(jí)數(shù)據(jù)高速緩存,而是用一個(gè)容量為4 KB的RAM用于程序變量的訪問,。在目前基于RTOS實(shí)時(shí)操作系統(tǒng)的應(yīng)用下完全達(dá)到了快速的變量訪問又避免了實(shí)現(xiàn)較復(fù)雜的一致性問題,。外部數(shù)據(jù)區(qū):對(duì)于指令和數(shù)據(jù)對(duì)外部存儲(chǔ)的訪問均是按相同大小的8 B塊為最小單位的方式進(jìn)行的,。用先行預(yù)取緩沖的方式,,當(dāng)TLB缺失時(shí),向外部存儲(chǔ)器接口啟動(dòng)這個(gè)塊的調(diào)入請(qǐng)求,。輸入輸出設(shè)備有2個(gè)定時(shí)器計(jì)數(shù)器,、1個(gè)串口,中斷控制和32條通用I/O口都可直接尋址方式訪問,。對(duì)新增加的18位PWM,,是在MOVX訪問的數(shù)據(jù)空間通過新定義的輸入輸出總線和分配端口地址來接入,這也使以后增減外設(shè)的工作只與輸入輸出總線有關(guān)而與指令流水線完全分離,對(duì)增減外設(shè)提供了方便,。
  在設(shè)計(jì)中先走通了靜態(tài)分支預(yù)測(cè)和順序流水線,,然后在總結(jié)這個(gè)階段錯(cuò)誤的基礎(chǔ)上開始TURBO52其他部份的設(shè)計(jì)。即先走完從每個(gè)時(shí)鐘級(jí)的功能描述,,到可綜合且代碼風(fēng)格規(guī)范的RTL描述[10],,然后進(jìn)行NC-Verilog前仿真驗(yàn)證、DC綜合,、FPGA驗(yàn)證,,最后針對(duì)具體ASIC單元庫進(jìn)行門級(jí)仿真的設(shè)計(jì)流程。在此后的設(shè)計(jì)中,,從功能描述文檔開始就將綜合中可能遇到的問題納入考慮,,在劃分流水線功能時(shí)由綜合結(jié)果幫助了功能描述級(jí)文檔的修改,并排除了大多數(shù)嚴(yán)重錯(cuò)誤,。在RTL仿真階段運(yùn)行了指令集驗(yàn)證,,尤其著重驗(yàn)證了動(dòng)態(tài)執(zhí)行、分支預(yù)測(cè)和例外處理中的臨界指令組合,,排除少量嚴(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)級(jí)驗(yàn)證上能正確且穩(wěn)定地運(yùn)行RTL仿真所用的測(cè)試程序包,,全部現(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)用測(cè)試是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的三級(jí)存儲(chǔ)體系和加入數(shù)據(jù)高速緩存,,使運(yùn)行更流暢,,力爭(zhēng)最終能運(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號(hào)處理器結(jié)構(gòu)設(shè)計(jì).計(jì)算機(jī)學(xué)報(bào),2003.4:386-396.
[4] 胡偉武,,張福新,,李祖松.龍芯2號(hào)處理器設(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)載,。