999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

并行CISC指令譯碼器的設計與實現

2007-12-31 00:00:00駿樊曉椏
計算機應用研究 2007年11期

摘要:針對x86系列兼容微處理器串行譯碼速度慢、效率低的缺點,提出了一種并行譯碼器設計方案。該方案將整個譯碼過程分為長度譯碼和地址譯碼兩個階段進行流水譯碼,在指令不帶前綴的情況下單拍完成長度譯碼,支持任意兩條指令并行譯碼,提高了譯碼效率。其使用Verilog-HDL進行描述,SYNOPSYS-DV在SMIC CMOS 0.18工藝庫下進行綜合。結果表明完全達到了設計要求。

關鍵詞:指令集; 微處理器; 譯碼器; 復雜指令系統計算機

中圖分類號:TP303文獻標志碼:A

文章編號:1001-3695(2007)11-0200-03

0引言

微處理器是機載設備和工控平臺的核心部件,關系著國防安全。因此,研制生產自主知識產權的高性能微處理器具有重要意義。西北工業大學在微處理器設計方面開展了大量工作,設計了基于x86指令集的LongtiumC2微處理器。

指令譯碼器是微處理器流水線的數據源,是流水線連續、高效執行的重要保證。因此,設計高性能指令譯碼器是微處理器設計的重點之一。串行譯碼方案中對指令數據讀入電路和指令長度譯碼電路的設計是一個瓶頸。它采用一拍讀入一個字節的方式,通過狀態機的控制來逐個讀入指令字節并對每一個字節進行譯碼,直至完成一條指令的譯碼[1]。譯碼時用1~4拍譯出該指令的長度;然后用每拍讀入一個字節的速率來讀入偏移量和立即數,這可能需要1~8拍。整個過程需要1~12拍。如果指令包含前綴還需要另外的1~4拍,那么整個過程速度慢、效率低,影響到處理器的整體性能。所以,設計針對x86指令集的并行譯碼方案很有必要。

1LongtiumC2體系結構

LongtiumC2是與x86指令集兼容的CISC微處理器。包括一個32位的整數處理單元、一個浮點單元、一個32 KB大小且8路組相連的指令數據混合cache、一個存儲器管理單元、一個總線接口單元、一個指令譯碼器和一個微程序控制器;另外還包括一個保護測試單元和一個異常檢測單元。

LongtiumC2體系結構如圖1所示。

32位的整數單元可以完成8、16、32位數據的完整算術和邏輯運算。大多數的指令可以單拍執行。浮點單元支持32、64和80位的數據格式,符合IEEE 754標準;提供不同數據類型的算術運算指令,并且支持超越函數的運算功能。指令和數據混合cache大小為32 KB、8路組相連,每行16 Byte,寫通策略,在地址命中時一個周期內讀出數據。采用偽隨機最少使用替換策略。存儲器管理單元同時支持分段和分頁,最大尋址空間4 GB。它對地址的管理和存儲空間的保護保證了在多任務和虛擬存儲器環境下存儲器的完整性。總線接口單元負責進行數據傳輸。指令預取在處理器內部單元與外部進行控制,提供存儲器讀寫、指令預取、cache行的填充等功能,支持突發傳送,帶有寫緩沖功能,并能動態地在8、16和32位之間切換總線的寬度。指令譯碼器從指令預取隊列中取出指令進行譯碼,得到有效地址和微程序入口地址等信息。不帶前綴的指令在一個時鐘周期內被譯碼。微控制器接收來自譯碼器的入口地址,產生一組微指令。這些微指令對執行單元進行控制,完成指令執行。LongtiumC2的流水線劃分為取指、譯碼、物理地址計算、讀操作數、執行并寫回五級。整個指令流水過程由多個功能部件協同完成。

所有的指令編碼都是圖2的一個子集。前綴字節指定總線鎖定、指令重復、段超越、數據或者地址尺寸轉換等信息;操作碼指明該指令所要完成的動作;MOD/RM和SIB字節指明該指令的尋址方式;立即數和偏移量表示指令的操作數信息。

一條指令可以由若干個字節組成。在沒有前綴的情況下,最短的指令只有1 Byte,最長的指令有11 Byte[3]。結合前文描述的指令結構形式,可以作出如圖3所示的組合形式圖。圖3是在沒有前綴的情況下所有可能的字節組合情況。如果一條指令只有操作碼,只需等到操作碼譯完之后就能知道指令長度。如果一條指令不帶SIB字節,只有MOD/RM字節,則需要3 Byte來知道指令的長度。如果一條指令存在SIB字節:a)若操作碼是一個字節,至少需要3 Byte才能知道指令的長度;b)若操作碼是2 Byte,則需要4 Byte就能知道指令的長度。因此,任何一條指令,至多4 Byte就能知道整個指令的長度。這一結論為并行譯碼x86指令提供了依據。

3指令譯碼器設計

串行譯碼方案每拍只讀入一個指令字節,導致無法盡可能早地知道本條指令長度;同時也就不可能得到下條指令的起始位置,進而導致不能提前讀取下條指令的數據,并行譯碼多條指令也就無從談起。針對串行譯碼的缺點,筆者提出一種并行譯碼方案。設計采用一次讀入多個指令字節,設置多個長度譯碼單元,將整個譯碼過程分為長度譯碼(LD)和地址譯碼(AD)兩個階段的流水譯碼方式,從而提高譯碼效率。圖4是Long ̄tiumC2譯碼器的結構,包括指令預取隊列、長度譯碼部件、地址譯碼部件。多個長度譯碼單元對一條指令所有可能出現的組合形式進行并行譯碼,在指令不帶前綴的情況下單拍得到指令長度。長度譯碼和地址譯碼流水執行,支持任意兩條指令并行譯碼。

3.1指令預取隊列

預取部件負責產生預取指令的地址,從cache或者主存中取指令。在cache不使能或者不命中的情況下,預取指令總是從主存取指;如果cache命中,則直接從cache中取指。指令預取隊列是譯碼器的直接數據源,由兩級寄存器構成。第一級寄存器為空時發預取請求,取回的指令在兩級寄存器中進行緩存;在譯碼器空閑時將第二級寄存器緩存的指令數據送給譯碼器,在程序發生跳轉時清空指令預取隊列,從跳轉目標處重新開始取指。

指令預取隊列有兩個接口,即與cache的接口和與譯碼器的接口。所以指令預取隊列設計必須同時兼顧到cache存儲指令數據的特征和譯碼器使用指令數據的需求。從與cache接口一側來看,cache每一行有16 Byte,為了簡化邏輯,提高讀操作效率,指令預取隊列的兩級寄存器的寬度也應該為16 Byte,這樣一次cache讀命中就可以將cache的一行讀入指令預取隊列的一行;從與譯碼器接口一側來看,由于x86指令在不帶前綴的情況下最多4 Byte就能單拍譯出一條指令的長度,譯碼器每次至少應該從預取隊列讀入4 Byte的指令數據,這樣才能保證對指令長度單拍譯碼的有效性。考慮到x86 指令集2和3 Byte的指令最多[4],如果選擇大于4 Byte的數據路徑寬度,將增加長度譯碼讀入電路和預取隊列發送電路的復雜度。考慮到預取時可能發生的不對齊現象,指令預取隊列與譯碼器之間的數據通路寬度應該設定為最大4 Byte,最小1 Byte。只要預取隊列能提供4 Byte的指令數據,傳輸就以4 Byte寬度進行。

3.2長度譯碼部件

長度譯碼部件包括一個指令移位寄存器、一個計數器、一個控制狀態機、四個并行長度譯碼單元和一個指令裝配部件。長度譯碼級主要完成指令的長度譯碼、指令數據的分解、簡單/復雜指令的識別、微程序入口譯碼等功能。指令移位寄存器用來存放從指令預取隊列讀入的指令數據。設計的關鍵是寬度的選擇。讀入一條完整指令后,指令數據從移位寄存器被送到指令裝配部件進行裝配。由于指令移位寄存器至少要能容納一條完整指令,根據486指令的特點,在不帶前綴的情況下一條指令最長為11 Byte,所以寬度至少為11 Byte。假設將寬度定為11,如果當前移位寄存器中有10 Byte指令數據,預取隊列送來的指令數據寬度是4 Byte,而這條指令的長度是11 Byte,移位寄存器剩余一個空閑字節,不具備讀入指令的能力,那么這條指令的長度譯碼永遠也不會完成,形成死鎖。所以應該將移位寄存器的長度設定為14 Byte,即使在上述極端情況下仍能讀入指令數據,而不會造成死鎖。

計數器和控制狀態機根據譯碼得到的指令長度控制從指令預取隊列的讀數據操作和對指令移位寄存器的移位操作。在指令帶前綴的情況下,狀態機每拍譯碼一個前綴,并置相應前綴標志。

四個并行的長度譯碼單元在指令移位寄存器首字節不是前綴的情況下啟動譯碼,單拍得到指令長度。由于x86指令編碼的正交性,不可能出現四個并行的長度譯碼單元對同一條指令譯出兩個長度的情況。長度譯碼時,為每條指令都建立一條長度譯碼路徑,四個并行長度譯碼單元一定包括了所有指令的長度譯碼路徑,所以對某一條指令來說,一定只有某個長度譯碼單元中的某一條路徑是有效的。每個長度譯碼單元都對應各自的使能信號和指令長度信息,對于某一條指令只有一個長度譯碼單元的使能信號是有效的。所以根據四個長度譯碼單元輸出的使能信號就能得到正確的指令長度信息。

指令裝配部件接收來自指令移位寄存器中的一條完整指令,對指令數據進行分解。根據不同指令的各種字段組合規則,將一條指令分解為操作碼、MOD/RM、SIB、偏移量和立即數,準備送入地址譯碼級。

LongtiumC2處理器將x86指令分為簡單指令和復雜指令。簡單指令直接由譯碼器譯出微指令;復雜指令則通過長度譯碼部件譯出微程序入口,由微程序控制器給出整個微程序。所以在長度譯碼級還要譯出一條指令的簡單/復雜標志和微程序入口。在一條指令執行完畢時將長度譯碼部件譯出的所有信息一起送入地址譯碼級,同時啟動下一條指令的長度譯碼過程。

3.3地址譯碼部件

地址譯碼部件包括地址和操作數譯碼單元、簡單指令微程序生成單元和微指令拼接單元。地址譯碼級接收來自長度譯碼級的數據信息,主要完成訪存指令段地址和有效地址的計算、指令操作數的計算、簡單指令微程序生成、簡單/復雜微指令選擇和微指令拼接等功能。

地址譯碼單元根據當前地址寬度、地址前綴、段超越前綴、MOD/RM和SIB字段,并通過讀取寄存器文件來計算訪存指令使用的段地址和有效地址。操作數譯碼單元根據操作數前綴、操作碼、MOD/RM、偏移量和立即數字段譯出當前指令使用的操作數。簡單指令微程序生成單元根據當前指令在簡單指令標志有效的情況下生成相應的簡單指令微程序。一個多路選擇器由簡單/復雜指令標志控制。在簡單指令標志有效的情況下選擇簡單指令微程序生成單元生成的微指令,在復雜指令標志有效的情況下選擇來自微程序控制器的微指令,將選擇的結果送入微指令拼接單元。由于同一條指令可能使用不同的操作數、多條不同指令可能共用一段微程序的原因,需要對選出的微指令的不同字段作拼接、替換操作。微指令拼接單元根據微指令中的拼接標志位,使用已經譯出的操作碼、操作數、段地址、有效地址等信息對微指令中的相應字段作拼接和替換操作;最后將拼接完成的微指令送入流水線,由相應的功能單元執行。至此,完成了一條指令的整個譯碼過程。

4指令譯碼器的實現

LongtiumC2處理器設計頻率為133 MHz,功耗小于1 W,使用SMIC CMOS 0.18工藝加工,目前正在進行后端設計。指令譯碼器采用Verilog-HDL進行描述,使用LEDA進行代碼檢查、VCS工具進行仿真、VERA進行功能驗證,使用DESIGN_VISION在SMIC CMOS 0.18工藝庫下進行邏輯綜合。綜合時采用TOP_DOWN、子模塊級結構化、子模塊內邏輯展開的策略。時鐘約束7.4 ns,最大扇出數為30,線負載模型使用smic18_wl30,面積無約束。

根據綜合結果,關鍵路徑出現在14 Byte指令移位寄存器的控制通路上,關鍵路徑長度達到7.28 ns,實際運行頻率為137.36 MHz。結果符合設計要求,并給DFT設計留有余地。

5結束語

本文分析了x86指令集的特點,指出一條x86指令在不帶前綴的情況下至多4 Byte就能得到指令長度。同時針對串行譯碼方案速度慢、效率低的缺點,提出一種并行譯碼器設計方案,實現了在不帶前綴的情況下單拍譯出指令長度,支持任意兩條指令并行譯碼,從而提高了譯碼效率。

參考文獻:

[1]艾德才,盧明,李文彬.80486/386系統原理與接口技術大全[K].北京:清華大學出版社,1996.

[2]周紅群,胡傳國,李清慈.Intel 80486微處理器技術參考手冊[K].上海:上海科學普及出版社,1992.

[3]劉詩斌,高德遠,樊曉椏,等.一種嵌入式MPU指令譯碼器設計[J].西北工業大學學報,2001,19(1):1-5.

[4]STEVENS K, ROTEM S, GINOSAR R, et al. An asynchronous instruction length decoder[J]. IEEE Solid State Circuits, 2001,36(2):217-226.

[5]居小波,李志斌,寧兆熙,等.一種新型CISC微處理器指令譯碼器設計方法[J].微電子學,2003,33(2):154-156.

“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”

主站蜘蛛池模板: 日韩午夜伦| 免费播放毛片| 97se亚洲综合在线韩国专区福利| 五月婷婷丁香综合| 亚洲成人一区在线| 日韩色图区| 欧美日韩另类国产| 91网站国产| 制服丝袜一区| 91色爱欧美精品www| 99精品视频播放| 欧美日韩午夜| 刘亦菲一区二区在线观看| 综合人妻久久一区二区精品| 久久久久中文字幕精品视频| 国产女人爽到高潮的免费视频 | 亚洲热线99精品视频| 天堂在线www网亚洲| 美女亚洲一区| 中文字幕无线码一区| 国产午夜一级毛片| 精品无码人妻一区二区| 欧美乱妇高清无乱码免费| 久久国产亚洲偷自| 国产成人福利在线视老湿机| 五月婷婷导航| 欧美成人免费| 国产va在线观看免费| 一本一本大道香蕉久在线播放| 免费A级毛片无码免费视频| 精品人妻无码区在线视频| 国产超碰一区二区三区| 欧美在线黄| 有专无码视频| 精品国产美女福到在线直播| 国产免费观看av大片的网站| 午夜影院a级片| 成年人国产网站| 亚洲欧美在线精品一区二区| 99ri国产在线| 欧美国产精品拍自| 国产日韩丝袜一二三区| 中国黄色一级视频| 91精品国产麻豆国产自产在线| 久久精品人人做人人综合试看| 香蕉99国内自产自拍视频| 欧美日韩一区二区在线播放| 亚洲嫩模喷白浆| 精品一区二区三区水蜜桃| 看看一级毛片| 亚洲天堂网视频| 91年精品国产福利线观看久久| 久久午夜夜伦鲁鲁片无码免费| 免费人成又黄又爽的视频网站| 国产激情无码一区二区三区免费| 91毛片网| 久久国产拍爱| jizz国产视频| 国产在线观看91精品亚瑟| 国产网站免费| 色婷婷视频在线| 青青草a国产免费观看| 超清无码一区二区三区| 亚洲无码一区在线观看| 国产欧美中文字幕| 欧美日韩中文国产va另类| 91久久青青草原精品国产| 国产h视频免费观看| 成人欧美在线观看| 老司机午夜精品网站在线观看 | 在线国产毛片手机小视频| 亚洲第一极品精品无码| 在线观看国产一区二区三区99| 天天躁夜夜躁狠狠躁躁88| 久久亚洲天堂| 中文纯内无码H| 亚洲中文字幕在线观看| 一级片一区| 看av免费毛片手机播放| 国产三区二区| 干中文字幕| 伊人五月丁香综合AⅤ|