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