陳明敏 易清明 石 敏
(暨南大學信息科學技術(shù)學院 廣東 廣州 510632)
?
高速8位微處理器設(shè)計
陳明敏易清明石敏
(暨南大學信息科學技術(shù)學院廣東 廣州 510632)
摘要針對當前MCS51指令集的微處理器指令執(zhí)行效率低問題,設(shè)計一款高速微處理器。其特點是:首先,采用快速乘除器和基4快速除法器,其計算速度是傳統(tǒng)乘法器和除法器計算速度的48倍;其次,采用32位指令總線,能一次從ROM讀取4個字節(jié),覆蓋所有指令長度,減少取指周期數(shù);此外,使用五級流水線,能在單周期完成大多數(shù)指令;在Altera EP3C16 FPGA芯片上進行物理驗證,根據(jù)Dhrystone 2.1性能測試,在相同的時鐘頻率下其綜合性能是傳統(tǒng)MCS51微處理器的12倍。實驗結(jié)果表明,通過上面3種改進方法,微處理器指令執(zhí)行效率得到極大提高。
關(guān)鍵詞微處理器快速除法器快速乘法器流水線
0引言
FPGA中嵌入式CPU有硬核和軟核,目前嵌入硬核有高性能cortexA9雙核。嵌入式軟核有Altera公司的NIOS,Xilinx公司的Micro Blaze,以及改進后的MCS51 IP核。前兩個都是免費的IP核,可靈活配置,但是需要用各自的編譯器,且編譯時間漫長,不便于修改,應用非常少。嵌入式硬核只有高端器件上面才有,不適用于大多數(shù)要求,且價格昂貴。隨著SOC(System On Chip)技術(shù)發(fā)展,基于IP核的SOC設(shè)計有利于增加新功能和縮短上市時間的特點,越來越得到廣泛地應用。在單片機家族中MCS51是一種經(jīng)典的單片機,歷經(jīng)30多年至今應用依然很廣。由于其占用邏輯資源少,在FPGA應用越來越廣。傳統(tǒng)的MCS51引入了機器周期,每個機器周期需要12個時鐘,每條指令需要不同的機器周期來完成。這嚴重制約了指令執(zhí)行效率。為此不少公司改進了MCS51單片機架構(gòu),提高了執(zhí)行效率。如華邦的W77E系列采用4個時鐘周期作為一個機器周期,比傳統(tǒng)MCS51單片機指令執(zhí)行效率提高了3倍。CAST公司最新發(fā)布的RMCS51XC2采用單時鐘周期和指令流水線結(jié)構(gòu),比傳統(tǒng)MCS51單片機指令執(zhí)行效率提高了12.1倍。 上述改進分別從時鐘周期和指令流水線結(jié)構(gòu)進行,均未涉及到對指令總線的改進[1-3],仍然沿用8位指令位寬,對于多字節(jié)指令,需要多個時鐘完成取指令。雖然在指令執(zhí)行效率上有提升,但還有明顯提升空間。本文分別從指令總線位寬、乘法器、除法器進行了改進,與當前兼容MCS51指令的微處理器相比其架構(gòu)和性能都有提升。
1高速微處理器模塊設(shè)計
1.1快速乘法器設(shè)計
傳統(tǒng)MCS51單片機完成一次乘法運算需要4個機器周期共48個時鐘周期。乘法器一般通過對部分積相加實現(xiàn),采用基4 Booth編碼[4]可使乘法器的部分積數(shù)量減少一半,降低了硬件的復雜度。通過采用4-2壓縮器對部分積進行壓縮。樹型結(jié)構(gòu)壓縮器在延遲、面積、布局布線方面均要優(yōu)于陣列結(jié)構(gòu),本文采用Wallace 樹[5]是壓縮速度最快的一種樹型結(jié)構(gòu)。改進后的乘法器如圖1所示。通過快速乘法器微處理器完成一次8位乘法計算只需1個時鐘。
圖1 快速乘法器結(jié)構(gòu)
1.2快速除法器設(shè)計
傳統(tǒng)MCS51單片機的除法算法每次迭代只產(chǎn)生1 位商,每個時鐘周期進行2次迭代,計算8位數(shù)除法時,需要4個機器周期,1個機器周期需要12個時鐘周期,完成一次除法需要48時鐘周期。本文采用基-4快速除法器[6,7],一個時鐘周期可以完成2位數(shù)除法。2位除法器結(jié)構(gòu)如圖2所示。Ds為除數(shù),Dd為被除數(shù),Re為余數(shù),Qu為商。
圖2 基4除法器結(jié)構(gòu)
商的選擇函數(shù):
(1)
基4除法器運算過程如下:
第一步將除數(shù)左移6位后與被除數(shù)進行比較,根據(jù)式(1),可以得出商的第7位和第6位,余數(shù)。
第二步將第一步中的余數(shù)作為第二次基4除法器的被除數(shù),將除數(shù)左移4位后與被除數(shù)進行比較,根據(jù)式(1),可以得出商的第5位和第4位,余數(shù)。
第三步將第二步中的余數(shù)作為第三次基4除法器的被除數(shù),將除數(shù)左移2位后與被除數(shù)進行比較,根據(jù)式(1),可以得出商的第3位和第2位,余數(shù)。
第四步將第三步中的余數(shù)作為第四次基4除法器的被除數(shù),將除數(shù)與被除數(shù)進行比較,根據(jù)式(1),可以得出商的第1位和第0位,余數(shù)。到此就可以得到最終的商和余數(shù)。
利用4個基4除法器構(gòu)建一個8位并行除法器。構(gòu)建方法如下:
第一步將除數(shù)左移6位,進行商選擇,得到商的高第7、6位和中間余數(shù)。同時將被除數(shù)右移移2位,商左移2位。
第二步將余數(shù)與被除數(shù)進行商選擇,得到商的第5、4位和中間余數(shù)。同時將被除數(shù)右移移2位,商左移2位。
第三步將余數(shù)與被除數(shù)進行商選擇,得到商的第3、2位和中間余數(shù)。同時將被除數(shù)右移移2位,商左移2位。
第四步將余數(shù)與被除數(shù)進行商選擇,得到商的第1、0位和最終余數(shù)。
整個并行除法器采用純組合電路構(gòu)成,電路延時滿足系統(tǒng)的正常工作周期,完成一次除法計算只需一個時鐘周期。與傳統(tǒng)MCS51單片機相比運算速度提高了48倍。
1.332位指令總線位寬設(shè)計
由于傳統(tǒng)MCS51單片機是基于復雜指令集結(jié)構(gòu),指令長度不固定,有單字節(jié)指令、雙字節(jié)指令、三字節(jié)指令。在8位指令總線位寬下,對于多字節(jié)指令取指時就需要多個時鐘周期。本文將指令總線和ROM位寬擴展為32位,在一個時鐘周期可以從ROM取出4個字節(jié),覆蓋所有指令長度,將取指時間縮短為1個時鐘周期。CISC指令集的特點是指令長度不固定,對一條指令譯碼完成前無法得知本條指令的長度,也無法得到下一條指令的起始地址。因此ROM存儲體采用4個8位的存儲體組合成32位數(shù)據(jù)位寬,地址信號送給第一個8位存儲體,第二存儲體地址自動增加1個單位,第三個存儲體地址自動增加2個單位,第三個存儲體地址自動增加3個單位。這樣每次給出指令起始地址就能自動從ROM中獲取連續(xù)的4個字節(jié)。其結(jié)構(gòu)如圖3所示。
圖3 32位ROM數(shù)據(jù)位寬結(jié)構(gòu)
取出指令后立即判斷該條指令的長度,指令長度可以從第一個字節(jié)指令類型中獲得。計算過程如圖4所示。
圖4 PC偏移地址計算
將計算好的地址送往ROM地址信號,進行下一次取指。
ROM中的數(shù)據(jù)通過QUARTUS軟件中的In-System Memory Content Editor 將編譯好的hex程序下載到ROM中。
2流水線設(shè)計
2.1流水線劃分
流水線出現(xiàn)改變了傳統(tǒng)CPU串行執(zhí)行模式,通過指令的重疊執(zhí)行,提高了指令的執(zhí)行效率。但流水線遇到數(shù)據(jù)相關(guān)和指令跳轉(zhuǎn)時會暫停流水線,且流水線越長消耗時鐘周期越多,所以需要一個合理流水線長度。通常指令執(zhí)行需要經(jīng)過取指、譯碼、取操作數(shù)、運算、回寫五步,從而可以得到處在不同運行階段的五級流水線[8]。如圖5所示。
圖5 五級級流水線
2.2數(shù)據(jù)相關(guān)和跳轉(zhuǎn)指令處理
五級流水線中,當對同一個地址同時進行讀寫時就會產(chǎn)生數(shù)據(jù)相關(guān)。由于讀取在第二個階段,寫入在第三個階段,所以讀取的數(shù)據(jù)會滯后一個周期。為解決數(shù)據(jù)相關(guān)性,增加寫入數(shù)據(jù)和寫入地址寄存器。當讀取數(shù)據(jù)時,首先判斷讀取地址是否為上一周期寫入的地址,如果是則不必讀取RAM中數(shù)據(jù),直接將上次寫入數(shù)據(jù)寄存器的值作為當前讀取的值。這樣就解決了數(shù)據(jù)相關(guān)性。對于跳轉(zhuǎn)指令,譯碼器發(fā)現(xiàn)當前是跳轉(zhuǎn)指令則暫停下一條指令的譯碼,同時向流水線中插入nop。若是條件跳轉(zhuǎn)則進行條件碼測試,然后根據(jù)測試結(jié)果,重設(shè)pc的值,最終取值單元根據(jù)pc的值重新進行取指,從而保證程序正確有序的執(zhí)行。
3FPGA實現(xiàn)和modelsim驗證
實驗所用開發(fā)板為ALTERA DE0,板載器件Cyclone III EP3C16。EP3C16器件總共有15 408個邏輯單元516 096 bit的SRAM。整個工程采用verilog語言編寫,使用synplify pro 2011進行綜合,在quartus 12.0下進行布局布線。利用modelsim10.0a進行功能驗證和時序分析。設(shè)計ROM 32 Kbyte,RAM 1 Kbyte,時鐘30 MHz。其中內(nèi)部RAM, ROM通過使用FPGA內(nèi)部M4K存儲單元組成。C語言測試代碼使用Keil C51 V3.51編譯生成,最后將生成的HEX文件下載到ROM中進行驗證。
3.1三字節(jié)指令仿真
圖6顯示了三字節(jié)指令的讀取執(zhí)行過程,由仿真可知每一個時鐘周期可以完整讀取出一條指令。其匯編代碼和modelsim仿真如下:
1.mov 21h,#14h;mov 22h,#26h;mov 23h,#35h;
2.anl 21h,#06h;orl 22h,#42h;xrl 23h,#77h;
3.anl 21h,#06h;orl 22h,#42h;xrl 23h,#77h;
圖6 三字節(jié)指令執(zhí)行讀取過程
第一類指令為3字節(jié)mov指令,第一條指令是將立即數(shù)14存入到內(nèi)存地址為21處,該條指令總共包含3個字節(jié)即0x75,0x21,0x14使用8位總線架構(gòu)則必須通過3個時鐘周期才能完整讀取一條指令,使用32位總線結(jié)構(gòu)從圖7中可以看出在一個時鐘周期就可以讀取到4個字節(jié),多余的字節(jié)自動省略。后面兩條指令是3字節(jié)邏輯與指令,仿真顯示只需要一個時鐘就可以執(zhí)行完一條指令。說明32位系統(tǒng)總線比8位系統(tǒng)總線在讀取指令時效率要高些。
3.2快速乘法器仿真
其測試匯編代碼和modelsim仿真如圖7所示。
1.mov a,#13h;mov b,#02h;mul ab;
2.mov a,#21h;mov b,#04h;mul ab;
3.mov a,#32h;mov b,#45h;mul ab;
圖7 快速乘法器仿真
執(zhí)行乘法器指令前需要將被乘數(shù)和乘數(shù)放在寄存器A和寄存器B中。乘法指令運算結(jié)果高8位保留在B寄存器,低8位保留A在寄存器。第一條測試是計算0x13和0x02的乘積,通過2條mov指令先將數(shù)據(jù)分別存儲到A,B寄存器。從圖7中可以看出第3個時鐘上升沿執(zhí)行乘法指令(0xa4),第4個時鐘上升沿結(jié)果顯示0x0026,說明通過一個時鐘周期快速乘法器就可以正確完成一次乘法運算。相比MCS51乘法器需要經(jīng)過48個時鐘周期有了極大的提高。快速乘法器可以提高改進后微處理器的計算速度。
3.3快速除法器仿真
其測試匯編代碼和modelsim仿真如圖8所示。
1.mov a,#13h;mov b,#02h;div ab;
2.mov a,#21h;mov b,#04h;div ab;
3.mov a,#32h;mov b,#45h;div ab;
圖8 快速除法器仿真
執(zhí)行除法器指令前需要將被除法和除法放在寄存器A和寄存器B中。除法指令運算結(jié)果商存放在A寄存器,余數(shù)存放在B寄存器。第一條測試指令是計算0x13除以0x02,通過2條mov指令先將數(shù)據(jù)分別存儲到A,B寄存器。從圖8中可以看出第3個時鐘上升沿執(zhí)行除法指令(0x84),第4個時鐘上升沿時A寄存器(商)結(jié)果顯示0x09,B寄存器(余數(shù))結(jié)果顯示0x01,說明通過一個時鐘周期快速除法器就可以正確完成一次除法運算。相比MCS51除法器需要經(jīng)過48個時鐘周期有了極大的提高??焖俪ㄆ骺梢蕴岣吒倪M后微處理器的計算速度。
3.4高速微處理器和MCS51單片機指令比較
高速微處理器使用五級流水線、快速乘法器、快速除法器,使其指令執(zhí)行效率相比傳統(tǒng)MCS51單片機有很大提升,表1顯示高速微處理器部分指令執(zhí)行時鐘周期與傳統(tǒng)MCS51單片機執(zhí)行時鐘周期的比較。
表1 指令執(zhí)行周期比較
從表1中可以看出高速微處理器指令執(zhí)行周期數(shù)比傳統(tǒng)MCS51單片機指令執(zhí)行周期要少很多。其中傳統(tǒng)MCS51單片機執(zhí)行乘法指令和除法指令的周期數(shù)是高速微處理器執(zhí)行周期數(shù)的48倍。傳統(tǒng)MCS51單片機執(zhí)行外部數(shù)據(jù)訪問和數(shù)據(jù)指針的增加指令的周期數(shù)是高速微處理器執(zhí)行周期數(shù)的24倍。其他大部分指令傳統(tǒng)MCS51單片機執(zhí)行的周期數(shù)是高速微處理器執(zhí)行周期數(shù)的12倍。
Dhrystone是綜合性的基準測試程序,反應處理器運算能力,常用于處理器的整型運算性能的測量。通過keil編譯器將測試基準程序Dhrystone2.1編譯后生成的hex文件分別下載到Atmel AT89S51單片機芯片上和本文設(shè)計的微處理器上運行。其結(jié)果如表2所示。
表2 Dhrystone2.1基準測試
從表2中可以看出,根據(jù)Dhrystone2.1基準程序測試高速微處理器綜合性能是傳統(tǒng)MCS51單片機的12倍。
4結(jié)語
本文以MCS51指令集為基礎(chǔ)。采用快速乘法器,快速除法器,提高微處理器的運算速度。系統(tǒng)使用五級流水線技術(shù),使執(zhí)行單條指令所需要平均周期數(shù)減少,對于非跳轉(zhuǎn)指令能在單周期完成,跳轉(zhuǎn)指令能在2~3個周期完成。提高了指令執(zhí)行效率。32位指令總線使每個時鐘周期都能完整讀取一條指令,減少多字節(jié)指令取指周期數(shù)。測試表明高速8位微處理器的綜合性能是MCS51單片機的12倍。且外圍資源可根據(jù)用戶需要進行裁剪,優(yōu)化資源配置??梢詰迷趯μ幚砥餍阅芤筝^高的嵌入式設(shè)備如工業(yè)控制系統(tǒng),消費電子設(shè)備,自動化控制系統(tǒng),是基于FPGA系統(tǒng)的最佳選擇,應用范圍很廣。
參考文獻
[1] 徐慧,王金海,王巍.基于FPGA的8051IP核的設(shè)計與實現(xiàn)[J].計算機技術(shù)與發(fā)展,2009,19(3):42-45.
[2] 王祖強,張華,李玲.8位RISC MCU IP軟核仿真的新方法[J].計算機工程,2007,33(6):248-249.
[3] 鄢永明,劉軼民,曾云,等.基于8051軟核的SOPC系統(tǒng)設(shè)計與實現(xiàn)[J].電子技術(shù)應用,2005,10(1):72-75.
[4] 翟召岳,韓志剛.基于Booth算法的32位流水線型乘法器設(shè)計[J].微電子學與計算機,2014,31(3):146-149.
[5] 周怡,李樹國.一種改進的基4-Booth編碼流水線大數(shù)乘法器設(shè)計[J].微電子學與計算機,2014,31(1):60-63,67.
[6] 李立珺.基于FPGA的除法器算法研究[J].科技信息,2013(5):82,104.
[7] 邢立冬.基于FPGA的低功耗高速除法器設(shè)計[J].電子世界,2014(6):56.
[8] Xia B,Wu L S,Mao J.A New Balanced-to-Balanced Power Divider Combiner[J].Microwave Theory and Techniques,IEEE Transactions on,2012,60(9):2791-2798.
HIGH-SPEED 8-BIT MICROPROCESSOR DESIGN
Chen MingminYi QingmingShi Min
(SchoolofInformationScienceandTechnology,JinanUniversity,Guangzhou510632,Guangdong,China)
AbstractWe designed a high-speed microcontroller to improve low instruction execution efficiency of current microcontroller in MCS51 instruction set. Its features are as follows: First it uses fast multiplier and 4-basis fast divider, the computation speed is 48 times higher than the traditional multiplier and divider. Secondly, it uses 32 bit instruction bus architecture, can read 4 bytes once from ROM and that covers the length of all instructions, thus reduces the clock numbers of instruction fetching. Besides, the use of five-stage pipeline can complete most instructions in a single clock. Physical verification had been made on Altera EP3C16 FPGA chip, according to Dhrystone 2.1 performance test, the comprehensive performance of the improved microcontroller was 12 times higher than the traditional MCS51 microcontroller under the same clock frequency. Experimental results showed that through above three improving methods, the efficiency of microprocessor instruction execution was greatly improved.
KeywordsMicroprocessorFast dividerFast multiplierPipeline
中圖分類號TP331
文獻標識碼A
DOI:10.3969/j.issn.1000-386x.2016.01.059
收稿日期:2014-07-07。廣東高校產(chǎn)學研結(jié)合示范基地重大項目(cgzhzd1103);廣東省教育部產(chǎn)學研結(jié)合項目(2011B09040056);廣東省工程技術(shù)研究中心項目(2012gczxA003)。陳明敏,碩士生,主研領(lǐng)域:電路與系統(tǒng),ASIC設(shè)計。易清明,教授。石敏,副教授。