嵌入式FPU微指令控制模塊的設(shè)計(jì)與實(shí)現(xiàn)
1 引言
設(shè)計(jì)研究適用于國(guó)防和民用需求的高性能、高精度的微處理器(MPU),已經(jīng)變得十分重要和迫切。為了處理大量實(shí)數(shù)數(shù)據(jù),并考慮計(jì)算精度和實(shí)時(shí)性,需要將MPU單獨(dú)分離出來(lái)一部分進(jìn)行浮點(diǎn)運(yùn)算,像現(xiàn)在的高檔數(shù)字信號(hào)處理芯片(DSP)都含有一個(gè)FPU,所以研制高性能的浮點(diǎn)運(yùn)算單元IP具有重要意義[1]。
微程序的概念和原理是由劍橋大學(xué)數(shù)學(xué)教研室教授M.V.Wilks在1951年第一次提出的[2],但隨后15年,由于控制存儲(chǔ)器的問(wèn)題制約了微程序技術(shù)的發(fā)展。由于LSI和VLSI 控制存儲(chǔ)器的發(fā)展,微程序在微型機(jī)中已經(jīng)開(kāi)始起著重要作用。
微程序控制器的性能是提高處理速度的關(guān)鍵因素之一。本論文關(guān)于微程序控制器的研究是基于哈爾濱工業(yè)大學(xué)(威海)微電子中心32位FPU的設(shè)計(jì),其采用了微指令控制的方法,用門級(jí)完成相關(guān)模塊的設(shè)計(jì),通過(guò)布局布線后的結(jié)果看出,該設(shè)計(jì)規(guī)模小、速度高,非常適合嵌入式應(yīng)用。
2 微程序控制器的結(jié)構(gòu)及設(shè)計(jì)
在微處理器中產(chǎn)生控制信號(hào)一般由微程序和狀態(tài)機(jī)兩種方法實(shí)現(xiàn),其中微程序?qū)儆诠碳?。微程序控制器輸出的微指令用?lái)控制整個(gè)FPU工作[3]。一條微程序一般由操作控制和順序控制兩大部分組成??刂撇糠钟脕?lái)管理和指揮FPU的工作[4]。微程序的順序控制部分用來(lái)決定產(chǎn)生下一條微指令的地址。微程序控制器有其自身的優(yōu)點(diǎn),比如:具有規(guī)整性、靈活性和可維護(hù)性等一系列優(yōu)點(diǎn)。本設(shè)計(jì)的微程序控制器的結(jié)構(gòu)如圖1所示。
[!--empirenews.page--]
微程序控制器主要包括三部分,用于產(chǎn)生下一條微指令的微地址生成模塊、用于存儲(chǔ)微指令的存儲(chǔ)器(此為一塊Rom)和用于指揮FPU工作的控制總線,其中主要是前兩部分,下面分別給與介紹:
2.1 微地址生成模塊介紹
微地址生成模塊主要目的就是產(chǎn)生下一條微指令的地址。地址線寬為8bit,下一條微地址由如下幾條產(chǎn)生(如圖2所示):
1.ExcMiptr信號(hào)是用來(lái)選擇由于一條FPU指令執(zhí)行過(guò)程中產(chǎn)生各種異常(包括結(jié)果不精確異常、上溢、下溢和無(wú)效異常)對(duì)應(yīng)的異常操作與控制的入口地址。
2.nextMiptr信號(hào)是用于選擇一條FPU指令執(zhí)行過(guò)程正常情況下,產(chǎn)生下一條微指令的地址。
3. RomEntry信號(hào)是用于根據(jù)FPU指令選擇不同指令的入口地址,本設(shè)計(jì)把單精度和雙精度的加、減、乘、除、乘加等指令設(shè)計(jì)有不同的控制入口地址。
4.RomMiptr信號(hào)是微地址默認(rèn)的??康刂?,即在復(fù)位和FPU空閑時(shí)輸出的默認(rèn)地址
5.feedback信號(hào)是用于選擇用于跳轉(zhuǎn)微指令地址,例如在本設(shè)計(jì)中用于乘加、乘減指令的跳轉(zhuǎn)控制。
如上這些地址信號(hào)的控制都來(lái)源于微指令的控制位。其中是否產(chǎn)生分支的控制如圖3所示。
圖3 微指令分支控制信號(hào)生成圖
[!--empirenews.page--]
2.2微指令存儲(chǔ)模塊
本微指令控制器的存儲(chǔ)模塊,有8bit地址輸入和64位數(shù)據(jù)輸出用于管理和控制整個(gè)FPU工作。64位微指令是控制整個(gè)系統(tǒng)所用的控制信號(hào),其功能與狀態(tài)機(jī)相似,在本設(shè)計(jì)中通過(guò)微指令的[15:11]檢測(cè)到數(shù)據(jù)處理過(guò)程中可能出現(xiàn)的狀態(tài),再根據(jù)不同的狀態(tài)進(jìn)行狀態(tài)轉(zhuǎn)換。下面把其中主要的幾位列表如表1:
表1 微指令控制位
3.模塊的實(shí)現(xiàn)及驗(yàn)證
微程序模塊采用了從頂?shù)较碌模═op-down)設(shè)計(jì)方法,所有部件按照模塊化思想設(shè)計(jì)成IP(Intellectual Property),明確模塊間的接口信號(hào)時(shí)序,同時(shí)模塊里的邏輯控制都是用門級(jí)設(shè)計(jì),從而優(yōu)化設(shè)計(jì)的性能。使用Synopsys公司的Design Compiler作為綜合工具,用SMIC0.18微米工藝,綜合出來(lái)的結(jié)果時(shí)鐘頻率266MHz。
系統(tǒng)采用硬件描述語(yǔ)言Verilog作為工作語(yǔ)言,使用Modelsim SE6.2完成整個(gè)仿真過(guò)程,仿真結(jié)果都完全符合IEEE754標(biāo)準(zhǔn)要求[5],能實(shí)現(xiàn)單精度和雙精度的控制。完成后仿真并通過(guò)FPGA驗(yàn)證,這為將來(lái)流片打下了堅(jiān)實(shí)的基礎(chǔ)。
[!--empirenews.page--]
一般來(lái)講,設(shè)計(jì)驗(yàn)證方法包括兩大類:模擬的方法和形式化的方法。本設(shè)計(jì)采用模擬的方法。模擬驗(yàn)證環(huán)境如圖3所示,運(yùn)用基于斷言的驗(yàn)證方法,主要分為三大部分:激勵(lì)部分、待測(cè)模塊和驗(yàn)證比較模塊。
圖3 模擬驗(yàn)證環(huán)境
一般情況下,激勵(lì)的生成方法有兩種:一類是直接激勵(lì)生成;一類是隨機(jī)激勵(lì)生成。本設(shè)計(jì)兩種方法都使用了,對(duì)于正常的加減乘除等運(yùn)算采用了隨機(jī)生成激勵(lì)(約束性隨機(jī)),而對(duì)于其他邊角情況使用了直接激勵(lì),特別各種異常情況。輔助模塊包括指數(shù)運(yùn)算模塊、尾數(shù)運(yùn)算模塊和符號(hào)運(yùn)算模塊。比較結(jié)果輸出模塊包括運(yùn)用設(shè)計(jì)規(guī)范指定的結(jié)果與驗(yàn)證模塊輸出的結(jié)果進(jìn)行比較。
4.結(jié)論
32位FPU中微程序控制器的設(shè)計(jì)經(jīng)仿真驗(yàn)證證明它的功能是完全能滿足IEEE754標(biāo)準(zhǔn)的FPU的控制功能。在設(shè)計(jì)中采用了多入口地址等提高微程序控制能力的方法。為了提高電路性能,使用門級(jí)設(shè)計(jì)方法。通過(guò)布局布線后的結(jié)果看出,該設(shè)計(jì)規(guī)模小、速度高,非常適合嵌入式應(yīng)用。此微程序控制器可以在所有滿足IEEE754標(biāo)準(zhǔn)的浮點(diǎn)處理器中使用,提高了設(shè)計(jì)的效率和可靠性,加快了設(shè)計(jì)周期。
本文作者的創(chuàng)新點(diǎn):采用微程序控制的設(shè)計(jì)方法,同時(shí)采用門級(jí)設(shè)計(jì)方法,所以規(guī)模小,速度快。通過(guò)Modelsim仿真,完全滿足符合IEEE754標(biāo)準(zhǔn)的浮點(diǎn)處理器的應(yīng)用。
參考文獻(xiàn)
[1]李六杏,周國(guó)祥.一種用于SOC中快速乘法器的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2007,23,4-2:155-157.
[2]楊波,高德遠(yuǎn). 微程序控制器的設(shè)計(jì)與實(shí)現(xiàn)[J],計(jì)算機(jī)工程與應(yīng)用,2001,7:27-29.
[3]Intel: intel82C288 Series Reference [M]. 1984.50-61.
[4]David A.Patterson, John L. Hennessy, Computer Organazaiton & Design[M], Morgan Kaufmann Publishers, inc,2002 316-324
[5] ANSI/IEEE Standard 754-1985: IEEE Standard for Binary Floating-Point Arithmetic[M]. Poscataway, NJ: IEEE Press, 1985.