开放性32位RISC处理器IP核的比较与分析(Z)
引言
隨著VLSI設計技術和深亞微米制造技術的飛速發(fā)展,SOC(SystemonChip)技術逐漸成為了集成電路設計的主流技術。SOC已經(jīng)在便攜式手持設備、無線網(wǎng)絡終端和多媒體娛樂設備等領域得到了廣泛的應用。
高性能的處理器核是SOC設計中最為關鍵和核心的部分。絕大多數(shù)SOC的處理器都采用了RISC體系結構。RISC處理器具有指令效率高、電路面積小和功率消耗低等特點,滿足了SOC高性能、低成本和低功耗的設計要求。目前在SOC設計中廣泛使用的32bitRISC處理器,如ARM公司的ARM處理器,IBM的PowerPC處理器,MIPS公司的MIPS處理器,Motorola的MCore處理器,Tensilica公司的Xtensa處理器等均屬于商業(yè)內(nèi)核,使用者必須支付相對昂貴的授權費。
近年來開放源代碼運動迅速發(fā)展,開放性源碼的概念已經(jīng)從軟件領域(如Linux,Gcc,MySQL等)擴展到了硬件領域,出現(xiàn)了像OpenCores這樣專門發(fā)布免費的IP核源代碼的組織。本文比較和分析了三種“免費”的開放性32bit處理器內(nèi)核:GaislerResearch公司的LEON2,OpenCores組織公布的OpenRISC1200和Altera公司的NiosII。這三種開放性處理器憑借其高性能、低成本,良好的可配置性和完善的開發(fā)環(huán)境,受到了學術界和工業(yè)界的普遍重視。
LEON2
LEON系列32位RISC處理器核的第一個版本是EON1,它是由歐洲航天局(EuropeanSpaceAgency)主持設計開發(fā)的。LEON1的設計初衷是為了使歐洲能夠擺脫在航空航天高性能嵌入式處理器上對美國的嚴重依賴。以JiriGaisler為首的設計團隊在完成LEON1后從歐洲航天局獨立出來,成立了GaislerResearch公司,相繼推出了LEON2和LEON3處理器。LEON系列處理器軟核均以RTL級VHDL源代碼形式免費公布,使用者可以在GNULGPL(LibraryGeneralPublicLicense)下對其源代碼進行使用和研究。LEON系列處理器在結構上有很高的一致性和繼承性,我們選用比較穩(wěn)定的LEON221.0.222xst版本進行研究分析。其結構框圖如圖1所示:
?
圖1 LEON2結構框圖
LEON2的整數(shù)處理單元是5級流水線設計,采用了SPARCV8(IEEE-1754)指令和體系結構,具有分離的數(shù)據(jù)Cache和指令Cache。LEON2的整數(shù)單元包括一個可選的16×16的MAC單元,能夠完成基本的DSP運算,同時還提供了浮點運算單元(FPU)的接口和協(xié)處理器(CP)的接口,可以擴展浮點運算和DSP處理。
LEON2選用了ARM公司的AMBA2.0片上總線標準,用于連接內(nèi)存控制器(MemoryController),定時器(Timers),中斷控制器(IrqCtrl),UART接口,PCI接口,10/100M以太網(wǎng)接口等模塊。LEON2同時還提供了一個調(diào)試支持單元(DebugSupportUnit)和一個調(diào)試串口(DebugSerialLink),用于支持片內(nèi)調(diào)試。
LEON2的一個非常重要的特點就是具有很好的可配置性。使用者根據(jù)自己的需要,通過一個用tcltk腳本編寫的圖形化界面,對LEON2內(nèi)核的絕大多數(shù)模塊進行配置,比如可以配置Cache的大小和訪問方式,是否支持硬件乘?除法,是否需要內(nèi)存管理單元(MMU),PCI接口,以太網(wǎng)接口等。
GaislerResearch公司提供了比較完善的基于LEON2的GNU軟件開發(fā)環(huán)境。使用者可以使用TSIM或GRMON進行LEON內(nèi)核的調(diào)試仿真。ECCS是專門針對LEON的交叉編譯系統(tǒng),可以進行C/C++的編譯和調(diào)試。SnapGearLinux是基于LClinux的實時Linux內(nèi)核,它的LEON版提供了對LEON處理器的全面支持,可以支持MMU和NOMMU等不同配置方案。
Open RISC1200
OpenRISC1000系列處理器是開放IP核源代碼組織Opencores公布的32*64位處理器軟核。使用者可以在GNULGPL下免費使用其RTL級的Verilog源代碼。OpenRISC1000系列處理器有很多版本,我們選用了目前最新的OpenRISC1200進行研究分析,其結構如圖2所示:
?
圖2 OpenRISC1200結構框圖
OpenRISC1200采用了自主設計的OpenRISC1000體系結構和自定義的ORBIS32指令集。OpenRISC1200是Harvard結構設計,擁有一個5級流水線的整數(shù)單元。OpenRISC1200有一個32×32的MAC單元,具備基本的DSP處理功能。
OpenRISC1200還可以根據(jù)需要自定義用戶指令。OpenRISC1200具有1K~64K可配置大小的數(shù)據(jù)Cache和指令Cache以及可供選擇的內(nèi)存管理單元。OpenRISC1200同時還提供了一個用于降低功耗的電源管理單元(PowerManager)和一個支持片內(nèi)調(diào)試的調(diào)試單元(DebugUnit)。OpenRISC1200采用了Silicore公司提出的WISHBONE開放性總線標準,包括一個數(shù)據(jù)WISHBONE接口和一個指令WISHBONE接口。總線管理模塊(TrafficCop)將內(nèi)存控制器,調(diào)試單元,UART接口,PCI接口,Ethernet接口等模塊連接在一起。OpenRISC1200具有較好的可配置性,使用者可以根據(jù)自己的需要配置Cache的大小,是否使用MMU,并可以定制自定義的指令。不過目前OpenRISC1200還沒有圖形化的配置界面,使用者必須根據(jù)需要修改配置定義文件or1200defines.v。
OpenRISC1200有完善的軟件開發(fā)環(huán)境(SDK)和操作系統(tǒng)的支持。使用者可以通過包括Sourcenavigator,Gcc,Binutills,Gdb等在內(nèi)的GNUToolchian工具方便的進行基于OpenRISC1200內(nèi)核的編碼、編譯和調(diào)試。同時,OpenRISC1200擁有專門的仿真器Or1ksim,可以進行OpenRISC1200的仿真。OpenRISC1200還支持Linux,LClinux,RTEMS,RedHaeCos等多種操作系統(tǒng)。
NiosII
Nios系列處理器是Altera公司推出的基于RISC體系結構的通用嵌入式處理器軟核,它是Altera的可編程邏輯和可編程片上系統(tǒng)(SoPC)設計綜合解決方案的核心部分。Altera前后推出了兩代Nios系列處理器:Nios和NiosII。Nios是其第一代產(chǎn)品,是準32bit的RISC處理器,具有16bit指令集和16*32bit數(shù)據(jù)通路。NiosII是第二代完全32bitRISC處理器,具有32bit的指令集、數(shù)據(jù)通路和地址空間。我們選用了NiosII進行比較和分析。圖3是典型的基于NiosII的系統(tǒng)。
?
圖3 典型的基于NiosII的系統(tǒng)
NiosII處理器是5級流水線設計,采用數(shù)據(jù)和指令分離的Harvard結構。NiosII擁有自己專用的體系結構與指令集,支持32bit的硬件乘除法指令,有32個通用寄存器。用戶還可以根據(jù)自己的需要自定義最多256條指令。
NiosII采用了Altera公司自己的Avalon片內(nèi)總線標準,用于連接定時器,UART接口,LCD接口,內(nèi)存控制器和以太網(wǎng)接口等片內(nèi)模塊。NiosII同時還提供了一個Debug模塊,支持JTAG在線調(diào)試。Altera公司為NiosII提供了極為完善的軟硬件開發(fā)環(huán)境。NiosII處理器方案是基于HDL源碼構建的,提供了三種性能和資源消耗不同的基本軟核:NiosII/f(快速型),NiosII/s(標準型)和NiosII/e(經(jīng)濟型)。通過QuartusII開發(fā)軟件中的SOPCBuilder系統(tǒng)開發(fā)工具,使用者可以在任何一種軟核的基礎上方便的配置符合自己的需要NiosII內(nèi)核。
Altera公司同時為NiosII提供了基于GNUC/C++toolchain和EclipseIDE的軟件開發(fā)環(huán)境。用戶可以在這個開發(fā)環(huán)境下方便的完成編碼、仿真和調(diào)試等工作。NiosII的開發(fā)套件內(nèi)免費提供了一個Luc/OS2II的實時操作系統(tǒng)支持,同時NiosII還支持LClinux,NucleusPlus,KROS等第三方操作系統(tǒng)。和上面所提到的LEON2和OpenRISC1200兩種完全開放的處理器內(nèi)核不同,NiosII內(nèi)核屬于“半開放”的內(nèi)核。用戶可以免費獲得NiosII的開發(fā)平臺,不過NiosII只支持Altera的Stratix和Cyclone器件。用戶只能在Altera的FPGA芯片上免費使用NiosII,而且無法獲得NiosII的HDL源代碼。另外設計者若要在ASIC設計中使用NiosII內(nèi)核,則需要向Altera公司支付一定的授權費用。
性能評測與比較
相同處理器內(nèi)核在不同工藝、不同結構配置下性能會有較大的差別。為保證評測的客觀性,我們在相同工藝,相同結構配置下對三種處理器內(nèi)核分別在FPGA和ASIC兩個平臺上,從性能和面積兩個角度進行了比較和分析。
目前嵌入式處理器并沒有統(tǒng)一的性能測試標準,我們選擇了當前各個嵌入式處理器提供廠商廣泛采用的DhrystoneV2.1Benchmark評測標準。DhrystoneV2.1Benchmark是ReinholdWeicker編寫的用于測試系統(tǒng)的整數(shù)處理能力的測試程序,它有公開的源代碼和測試結果。
DhrystoneV2.1Benchmark是由C語言編寫,包括各種賦值語句,控制語句,過程調(diào)用和參數(shù)傳送,整數(shù)運算及邏輯操作等。在不同的處理器平臺上運行Dhrystone測試程序,得到DhrystoneperSecond的參數(shù)值,并以VAX-11/780為參照值,換算出Dhrystone2.1VAXMIPS(DMIPS)的值。因為VAX-11/780的測試結果為1757個DhrystoneperSecond,將其作為參照,得出DMIPS=(DhrystoneperSecond/1757。因為處理器的性能與工作頻率密切相關,在不同工作頻率下測算出的DMIPS是不同的,所以通常使用DMIPS/MHz作為標準,評估各個處理器的結構優(yōu)劣和性能高低。
我們選用Altera的Cyclone開發(fā)板(EP1C20F400C7)作為FPGA的硬件測試平臺,分別評測LEON2,OpenRISC1200和NiosII在FPGA上的性能。為保證評測結果的準確性,我們將三種處理器配置成為大體相當?shù)脑u測系統(tǒng),如圖4所示。編譯好的Dhrystone程序?qū)⒈幌螺d到板上的SRAM中運行,運行的結果通UART或JTAG端口輸出到PC終端。定時器(Timer)是Dhrystone程序運行所需的計時設備。由于體系結構的差異,各個處理器在有些部分的實現(xiàn)細節(jié)并不完全和圖4相同(比如LEON2使用了兩個UART,分別用于調(diào)試和輸出,而OpenRISC1200和NiosII則選擇使用一個JTAG接口進行調(diào)試),但其大體結構都是相同的。同時我們還在三種處理器核內(nèi)均實現(xiàn)了32×32bit的硬件乘除法指令。
?
圖4 FPGA平臺評測系統(tǒng)
LEON2的源代碼中提供了在各種器件如Xilinx,Actel等上的綜合支持。不過LEON2沒有提供對Altera器件和相應開發(fā)板的支持,因此必須要首先編寫添加tech_cyclone.vhd文件,并修改源代碼中target.vhd和tech_map.vhd文件。然后使用QuartusII進行綜合的結果顯示:LEON2使用了11702個邏輯單元(LogicElements)和242748內(nèi)存位(MemoryBits),其最高頻率可達61.95MHz。在25MHz和50MHz的FPGA中,LEON2可以分別達到35398.2和72289.2DhrystoneperSecond。即在25MHz下LEON2可達到20.15DMIPS,在50MHz下為41.14DMIPS,相當于0.82DMIPS/MHz。
OpenRISC1200的源代碼中提供了對Altera器件的支持,因此只需修改其代碼,配置成所需要的系統(tǒng)構架。由于OpenRISC1200采用的是WISHBONE片上總線,所以還要專門給板上的SRAM寫一個WISHBONE的接口。QuartusII的綜合結果顯示OpenRISC1200共使用了9624個邏輯單元和217344內(nèi)存位,其最高頻率可達46.02MHz。在25MHz的FPGA中,OpenRISC1200可達到32918.2DhrystoneperSecond,即18.74DMIPS。其性能相當于0.75DMIPS/MHz。Nios是Altera公司專門針對Cyclone和Stratix器件設計的處理器。Quartus中的SOPCBuilder系統(tǒng)開發(fā)工具,可以方便的配置出符合要求的NiosII處理器。Quartus的綜合結果顯示Nios共消耗了6615個邏輯單元和181248內(nèi)存位,最高頻率為65.78MHz。在50MHz下,測得FPGA中的NiosII為69915.8DhrystoneperSecond,相當39.79DMIPS,其性能為0.80DMIPS/MHz。為了進行縱向的對比,我們還評測Nios的性能。Nios共需4535個邏輯單元和231424個內(nèi)存位,最高頻率為61.65MHz。在50MHz下Nios可以達到18.88DMIPS,其性能為0.37DMIPS/MHz。顯然NiosII比Nios在性能上有了很大的提高。
圖5給出了幾種處理器的性能對比圖。顯然三種32位處理器的性能比指令集為16位的準32位Nios處理器高出很多。在三種32位處理器中,LEON2的性能最好為0.82,但其相應的所耗的資源也最多。和LEON2相比,OpenRISC1200的性能稍差為0.75,但其所占用的邏輯單元也較少。Nios處理器的測試性能可達0.80,而且其所消耗的邏輯單元僅為LEON2的57%。這是由于Nios針對Cyclone器件進行過專門的優(yōu)化,導致了Nios在Cyclone器件上的出色表現(xiàn)。為了使比較更加全面和深入,我們還對評測系統(tǒng)進行了ASIC平臺上的對比。由于NiosII并不提供源代碼,僅針對Altera的FPGA器件是免費的,因此我們僅對比了LEON2和OpenRISC1200兩種完全開放性內(nèi)核。我們使用中芯國際(SMIC)的RapidCompiler完成Registerfile中所需的雙口SRAM和Cache模塊所需的單口SRAM的設計,并使用Synopsys公司DesignCompiler和SMIC的0.18Lm的標準單元庫完成了兩種內(nèi)核RTL代碼的綜合和優(yōu)化。相當占用了152904個門單元,最差條件下的最高頻率為160MHz。OpenRISC1200共使用了148455個門單元,最差條件下的最高頻率為125MHz。顯然LEON2的運行頻率更高,但其所占的面積也相對更大。
?
圖5 四種處理器性能對比圖
結論
本文從結構和性能兩個方面比較了LEON2,OpenRISC1200和NiosII三種32位RISC處理器內(nèi)核,概括如表1所示。
?
通過以上比較和分析可以看出,LEON2和OpenRISC1200主要是面向ASIC設計,它們具有開放的源代碼以及相關ASIC平臺開發(fā)的支持。其中由于LEON2處理器得到了歐洲航天局的資助,其開發(fā)文檔和技術支持也相對更為完善。雖然NiosII在Altera的器件上具有良好的性能并且Altera公司提供了完善的文檔和技術支持,但是由于NiosII只能應用于Altera的器件,所以其使用范圍受到了一定的限制。
總結
以上是生活随笔為你收集整理的开放性32位RISC处理器IP核的比较与分析(Z)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 研发项目管理中需注意的人性弱点(Z)
- 下一篇: 完胜iPhone 14 Pro Max!