摘 要: 構建了一種針對不同微體系結構的功能驗證硬件平臺,該平臺以FPGA芯片為核心;同時設計了與該平臺相適應的微體系結構性能分析軟件并介紹了該軟件的具體功能;研究了開源軟核處理器OpenRISC的微體系結構,將該軟核處理器移植到現有開發板上并在開發板上對其進行了評測,從而驗證了該微體系結構驗證平臺的基本功能。
關鍵詞: 微體系結構; 驗證平臺; FPGA
中圖分類號: TP39141 文獻標識碼: A 文章編號:2095-2163(2013)03-0044-04
The Microarchitecture Verification Platform based on FPGA
WANG Yu, LIU Hongwei
(School of Computer Science and Technology, Harbin Institute of Technology, Harbin 150001, China)
Abstract: A function verification platform based on FPGA is constructed for different microarchitecture. Performance analysis software is designed for this platform. Function of the software is introduced. The microarchitecture of open source soft-core processor OpenRISC is researched, transplanted to the development board and tested to verify the basic function of this verification platform.
Key words: Microarchitecture; Verification Platform; FPGA
0 引 言
微處理器的研究是計算機科學與技術的核心研究內容之一,其更新換代更是計算機行業迅速發展的強勁動力。而微處理器的演變一方面依賴于生產工藝上的進步,另一方面則取決于其微體系結構上的設計。從科學計算、工業應用再到民用數碼產品,應用領域的拓寬和專用計算機發展的迫切需求正期待著新型體系結構的誕生。而一個新的微體系結構的出現是否符合其應用領域更高層次的需求則需要一個評價環境或平臺。在計算機微體系結構的研究領域,對于不同微體系結構的處理器的性能驗證,更多地是通過理論分析來進行和完成的,再通過對數學模型的建立和分析,得出最終結論。此外,軟件仿真也是常用的方法。這兩種方式在一定程度上雖然能夠對系統性能進行客觀、科學評價,但仍存在其局限性,例如,數學模型的分析效果與模型建立的精確程度密切相關;而軟件仿真則更是只能對微處理器的部分性能指標進行模擬,而不可能仿真實現所有環節。經過研究分析可知,一個通用的硬件驗證平臺則可以彌補模型仿真的不足,實現更為貼近實際的效果評價。這種平臺對微體系結構的研究和微處理器的開發都大有助益。具體來說,可以幫助研究開發者縮短設計周期,在第一時間快速驗證設計的正確性;同時,不同微體系結構的處理器也可以在這個平臺上進行性能的比較。
國外現有的驗證平臺可分為軟件模擬平臺和硬件驗證平臺。
其中,軟件模擬平臺是通過軟件模擬系統來對CPU設計進行正確性驗證。常見的軟件模擬工具有:Simics、Synopsys公司的VCS、Cadence公司的NC Verilog和Verilog XL、Mentor Graphics公司的ModelSim等[1]。前述工具中,Simics仿真平臺是一種商用仿真系統,在追求性能的同時,也保證了仿真的精度[2]。
另外,硬件驗證平臺則是對原型實物在電路板上進行實際驗證。
其中,BEE系統由美國Berkeley大學開發,是一種基于多FPGA的可重構硬件平臺,屬于較高端的仿真計算系統[3]。
RAPIDO項目由菲利普研究院主持,包含兩個部分:原型系統和PC機。原型系統為含有FPGA和ARM核的處理器以及存儲器的嵌入式系統,并通過PCI-to-PCI橋與PC機相連[4]。
如果一個待測試的系統已經形成了完整的機器,使用真實的應用來進行測試則是很好的方法[5],事實上,常常使用的是基準測試程序,例如SPEC CPU基準程序集。該程序集由整數程序和浮點程序組成,其性能評價的標準是程序的運行時間[6]。
國內的硬件驗證平臺主要分為兩大類。
一類是專門面向特定款微處理器的,例如,國防科大的多核流體系結構原型驗證平臺,該平臺基于多FPGA實現,設計了片間流優化機制,可支持多核流體系結構的互聯映射[7]。又如,中國科學院計算技術研究所開發的針對高性能處理器龍芯2F的硬件驗證平臺,既能驗證其邏輯功能,又能測試其性能指標[8]。
而另一類平臺則以面向基礎教學為主。例如,清華科教儀器廠出品的TEC-XP與TEC-CA,這兩種系統有自己的指令系統和監控程序,能夠與PC機相連,可進行聯機操作和執行比較完整的程序,用戶可自行設計帶有流水及Cache的處理器,而該系統可對其跟蹤運行[9]。另有一種FD-MCES計算機體系結構實驗儀,采用FPGA為主芯片,配有實驗控制電路、鍵盤、打印機、開關、LED等,可完成RISC計算機系統結構相關實驗[10]。還有一部分教學實驗平臺只能對確定的處理器進行驗證,指令系統不可修改[11]。
本文設計了一種基于FPGA的微體系結構驗證平臺,該平臺由FPGA硬件驗證板和上位機軟件分析系統組成。其實現的功能為:可以將設計完成的微處理器下載到FPGA芯片當中,由硬件驗證板構成該微處理器能夠正常工作的最小系統,同時,板上擁有可簡單顯示處理器性能指標的光電資源;硬件驗證板也可以和上位機進行通信,將該處理器工作時的性能參數傳輸給上位機,由運行在上位機的軟件系統進行分析,從而,為微體系結構的分析研究提供依據。由于條件所限,該平臺的硬件部分沒有實際制作,本文通過使用現有的開發板,搭建了一個原型系統,驗證了該平臺的功能。
1 硬件驗證板的設計
1.1 硬件平臺的基本功能第3期 王宇,等:基于FPGA的微體系結構驗證平臺 智能計算機與應用 第3卷
硬件驗證板是整個系統的基礎,為微處理器的工作提供了底層平臺,其邏輯框圖如圖1所示。該硬件平臺具有的功能主要有:下載調試、基本輸入/輸出、串行通信、功能擴展。
圖1 硬件平臺的邏輯框圖
Fig.1 Logical block diagram of the hardware platform
1.2 硬件平臺的結構
硬件驗證平臺的設計以FPGA為核心,外圍電路有:電源模塊、JTAG下載調試模塊、顯示輸出模塊、基本輸入模塊、串行通信模塊以及功能擴展接口。其平面結構如圖2所示。
在整個硬件平臺系統中,串行通信模塊、輸入模塊中的去抖動單元、顯示輸出模塊中的程序運行周期數統計單元等是在FPGA芯片上實現的,而其他部分則要通過分立元件在電路板上實現。
1.3 硬件平臺的工作流程
當微處理器下載到FPGA芯片中,輸入輸出模塊為其基本功能的驗證提供了切實有效的保障,可以運行一段代碼以測試處理器對IO的讀寫控制。輸入模塊中提供的微動開關可以取代時鐘電路而為CPU的運行提供手動脈沖時鐘信號,以實現指令的單拍運行;同時,顯示輸出模塊的數碼管會實時顯示處理器內部各相關流水段寄存器的最新狀態,還可以統計一段代碼運行的周期數,以比較不同體系結構對于程序執行效率的影響。串行通信模塊則采集了與系統性能指標相關的更多參數,并實時傳送給系統計算機,供軟件系統使用。功能擴展模塊則為進一步的應用預留了發展空間,預留的接口可以安排SD卡讀寫接口、以太網接口、VGA視頻接口等等,以利于對加載了操作系統后更為復雜的系統性能進行全面測試。
圖2 硬件平臺的平面結構圖
Fig.2 Planar structure diagram of the hardware platform
2 軟件評測系統的設計
2.1 軟件系統的基本功能
軟件系統的功能是通過JTAG接口進行FPGA下載,并讀取由串行接口發送的性能指標相關數據,而且還要對其進行分析。本系統對待測處理器跟蹤監測的功能除了在硬件平臺上進行呈現之外,還可通過PC機軟件界面顯示更多的信息。在這一過程中,PC機和硬件平臺通過串行接口進行實時通信,硬件平臺將微處理器的各種狀態參數隨時發送給PC機,而在軟件界面上,這些信息則將以文字和圖形化的方式加以清晰顯示。圖3為軟件平臺的邏輯結構。
圖3 軟件平臺邏輯結構圖
Fig.3 Logical structure of the software platform2.2 軟件系統實現的CPU性能評價
除基本功能外,軟件平臺還將對性能參數進行處理,以得到量化的處理器基本性能指標,如計算每一條指令的平均時鐘周期數CPI:
CPI=CPU時鐘周期數/IC
(1)
其中,IC為指令的條數。
計算CPI所需的參數將由FPGA傳送給CPU。
同時,還可計算MIPS(每秒百萬條指令數):
MIPS=時鐘頻率CPI×106
(2)
一定程度上,MIPS可反映系統的性能。
另外,軟件平臺還將統計得到Cache命中率與Cache容量的關系、與塊大小的關系、與組數的關系,并以圖形的方式加以繪制和實現。
該軟件還可實現對流水線的跟蹤分析。隨著系統的單步運行,軟件界面上將動態、同步顯示流水線的時空圖,而且還將計算出流水線的實際吞吐率,計算公式為:
其中,n為任務數,k為流水的段數,Δt為時鐘周期。
此外,還可以計算流水線的加速比、流水線的效率等性能參數。
3 OpenRISC處理器的功能驗證
為了對系統自身功能進行驗證,還需要一款能充分利用本系統功能的微處理器。本文采用32位的開源軟核處理器OpenRISC,對該處理器的指令系統、尋址方式、數據表示、寄存器結構以及5級流水線結構、具有Cache的存儲系統在開發驗證平臺上進行跟蹤測試。
OpenRISC是開放源代碼的精簡指令集計算機處理器,采用Verilog HDL實現了寄存器傳輸級描述。其性能介于ARM7和ARM9之間[12]。在對該處理器微體系結構的驗證過程中,需要深入研究OpenRISC的結構、流水線及相關性設計方法,也要進一步研究Cache結構和設計方法。
3.1 OpenRISC處理器在FPGA開發板上的移植
本課題對OpenRISC開源軟核處理器的源碼基于現有FPGA開發平臺進行了移植。該開發板采用Altera公司的型號為EP4CE17C8N的FPGA,外設配備了數碼管、微動開關、LED發光二極管、RS232接口,JTAG接口等,可以基本滿足移植測試需要。移植的具體工作包括:構建了適合OpenRISC開源軟核處理器指令運行的RAM模塊,構建了系統時鐘及系統復位模塊,使用Verilog硬件描述語言編寫頂層模塊,將CPU、總線、GPIO、串行通信接口等主要功能模塊進行了組合并且針對現有的FPGA開發平臺進行了配置與改造,如圖4所示。
OpenRISC開源軟核處理器的移植結果可以通過一個簡單的C語言程序實例在OpenRISC處理器上運行來驗證。該C語言程序的實現功能為,控制開發板上的LED,與上位機進行串行通信,同時發送一組數據。經驗證,該示例程序可有效控制開發板上的資源并正確實現了與系統計算機之間的串行接口的通信,從而證實了OpenRISC在本開發板上的成功移植。
圖4 FPGA片上系統結構圖
Fig.4 Structure of Soc based on FPGA
3.2 基于Ubuntu系統的OpenRISC匯編指令程序的交叉編譯環境的搭建與應用
作為一種嵌入式處理器,在開源軟核處理器OpenRISC上運行的程序需要在PC機環境下進行交叉編譯。該部分工作主要是在Ubuntu系統下進行了交叉編譯環境的搭建,同時,編寫Makefile設定編譯、連接、轉換等流程,最后,還要將編譯得到的機器碼轉換成可以在OpenRISC的RAM中運行的mif文件。同時,對開源軟核處理器OpenRISC的指令集進行了研究,編寫了可以在開發板上運行的OR1200匯編語言指令程序,實現了OpenRISC處理器通過GPIO對開發板上資源的讀寫控制操作,為下一步處理器的性能評測奠定了良好基礎。
3.3 在FPGA開發板平臺上對開源軟核處理器OpenRISC的匯編指令實現跟蹤
使用Verilog硬件描述語言對匯編指令單步跟蹤模塊進行了設計,實現了通過微動開關控制OpenRISC匯編指令的單步運行。同時,通過對指令計數模塊的編寫,可以實現對程序運行周期數的統計,從而為驗證微處理的指令流水的執行效率提供了基礎準備。目前,對匯編語言指令運行周期數的統計是通過數碼管模塊實現并顯示的。在進一步的工作中,這一顯示也可通過串口通信傳送到系統計算機,最終在系統計算機界面上顯示出該數據。此處運行的是用于單步跟蹤的匯編程序,其具體功能是將一個數據通過開發板上的LED進行輸出顯現。
3.4 編寫串行通信程序,實現OpenRISC與系統計算機的通信
本串行接口通信程序的基本功能是實現了待測試微處理器與上位機之間的通信。借助這一通道,硬件平臺上待測試微處理器內部各寄存器中每一時刻所存儲的內容都可以實時地傳送至上位機,便于上位機對這些數據實行進一步的分析。同時,傳送的數據也可以是存儲器內某一存儲單元或某一存儲區域的數據;也還可以傳送Cache中存儲的數據等