FPGA軟核之戰(zhàn)點(diǎn)燃創(chuàng)新激情
2007年秋Xilinx又在對(duì)其MicroBlaze嵌入式處理器內(nèi)核進(jìn)行了升級(jí),增添一個(gè)內(nèi)存管理單元(MMU)選項(xiàng),為32bit的處理器提供高級(jí)的、支持虛擬內(nèi)存的操作系統(tǒng)。開發(fā)者還可以只用個(gè)更為簡(jiǎn)單的內(nèi)存保護(hù)單元(MPU)或完全放棄受監(jiān)管的內(nèi)存管理。
本文引用地址:http://cafeforensic.com/article/81317.htm目前已發(fā)布的第一款面向新的MicroBlaze v7的全功能操作系統(tǒng)是Lynuxworks公司的BlueCat Linux。到目前為止,MicroBlaze處理器僅限于支持更簡(jiǎn)單的嵌入式操作系統(tǒng),這些系統(tǒng)無(wú)法支持虛擬內(nèi)存或者內(nèi)存保護(hù)。具備了MMU或者M(jìn)PU選項(xiàng)后,MicroBlaze v7適合于范圍更廣、需要更高的安全性和可靠性的嵌入式應(yīng)用。
MicroBlaze v7還有另一項(xiàng)改進(jìn)措施,新的指令可以提供更快的浮點(diǎn)性能,而且能提高其與協(xié)處理器和定制邏輯電路之間的I/O性能。此外,Xilinx已經(jīng)將CoreConnect接口升級(jí),使之滿足最新的CoreConnect 處理器本地總線(PLB)v4.6規(guī)范,保證處理器與片上外設(shè)之間具有更快的連接速度。
強(qiáng)固的內(nèi)存管理功能
自從2001年引入軟處理器MicroBlaze以來(lái),Xilinx就一直對(duì)其進(jìn)行不斷的改進(jìn)。兩年前,Xilinx開始提供一種FPU選項(xiàng)。2006年,Xilinx延長(zhǎng)了其指令的流水線,從而容許采用更高的時(shí)鐘速度。2007年較早時(shí)候,Xlinx發(fā)布了MicroBlaze v6,增添了少量其他的增強(qiáng)措施。現(xiàn)在,Xilinx借助MicroBlaze v7推出了第一流的內(nèi)存管理功能,這顯著擴(kuò)展了MicroBlaze所適合的嵌入式應(yīng)用的范圍。
當(dāng)然,許多嵌入式系統(tǒng)并不需要如此高水平的內(nèi)存管理,因此MicroBlaze MMU是一種選項(xiàng)功能。另一種可供選擇的方法是實(shí)施MPU,它可以在無(wú)虛擬內(nèi)存和地址翻譯的情況下對(duì)內(nèi)存進(jìn)行保護(hù)。MPU適用于那些必須保護(hù)程序存儲(chǔ)區(qū)不受其他程序意外或者惡意入侵的嵌入式系統(tǒng)。還有另外一種選項(xiàng),即在無(wú)內(nèi)存保護(hù)或者虛擬內(nèi)存的條件下實(shí)施特權(quán)模式的執(zhí)行。在特權(quán)模式下,只有操作系統(tǒng)或者有優(yōu)先特權(quán)的應(yīng)用程序可以執(zhí)行那些有關(guān)系統(tǒng)安全性的指令。
表1 示出每一種選項(xiàng)(MMU、MPU或特權(quán)優(yōu)先執(zhí)行)是如何影響綜合后的處理器規(guī)模的,其衡量尺度是,在FPGA的可編程邏輯架構(gòu)中實(shí)現(xiàn)這些功能而必須增加的查閱表(LUT)數(shù)量。在單獨(dú)實(shí)現(xiàn)特權(quán)模式時(shí),所需的LUT很少,其他的選項(xiàng)就需要事先進(jìn)行更為周詳?shù)目紤]。特別是,MMU大約需要1 000個(gè)LUT,大約占一個(gè)功能配置齊全的MicroBlaze v7內(nèi)核的1/3。
表1 3種MicroBlaze v7內(nèi)存管理選項(xiàng)的規(guī)模
完備的MMU成為最大的內(nèi)存管理選項(xiàng)的部分原因是,它需要轉(zhuǎn)換監(jiān)視緩沖器(TLB)來(lái)完成虛擬-物理內(nèi)存地址轉(zhuǎn)換的查閱表的一部分內(nèi)容。
MicroBlaze v7擁有一個(gè)64條目的一體化TLB。為了補(bǔ)充這一軟件管理的緩沖器,還提供了用于指令內(nèi)存頁(yè)面和數(shù)據(jù)內(nèi)存頁(yè)面的影子條目。這些影子條目的數(shù)量是可以由用戶定義的:緩沖指令的條目數(shù)量可以為1、2、4或8個(gè),而緩沖數(shù)據(jù)的條目數(shù)與之相同。處理器可以自動(dòng)地管理這些影子條目,從而防止系統(tǒng)失效(thrashing)的出現(xiàn)。內(nèi)存頁(yè)面的尺寸范圍是1kB~16MB,而且可以混合使用各種頁(yè)面尺寸。采用有效位數(shù)為32bit的尋址方式后,MicroBlaze v7可以對(duì)多達(dá)4GB內(nèi)存進(jìn)行尋址。
MicroBlaze MMU是仿照某款I(lǐng)BM Power 405處理器中的MMU設(shè)計(jì)的。因?yàn)榇饲坝行¬irtex系列FPGA集成了一個(gè)加固的Power 405內(nèi)核,其速度要遠(yuǎn)快于一個(gè)綜合到該架構(gòu)中的MicroBlaze 處理器。采用類似的MMU將能夠給MicroBlaze v7帶來(lái)幾個(gè)好處。首先,編程者將基于虛擬內(nèi)存的操作系統(tǒng)從Power架構(gòu)移植到MicroBlaze架構(gòu)的過程將更為輕松。第二,開發(fā)者可以更為輕松地將一個(gè)或多個(gè)MicroBlaze內(nèi)核與一個(gè)Power 405搭配起來(lái),以共享內(nèi)存的配置方式構(gòu)成一個(gè)多核設(shè)計(jì)。第三,未來(lái)Xilinx可能通過與IBM合作而向其FPGA中集成更新的Power內(nèi)核。
更快的CoreConnect總線
CoreConnect是IBM用于SoC的片上總線,它在1999年開發(fā)成功。雖然IBM創(chuàng)造CoreConnect的主要意圖是為自己的Power架構(gòu)處理器服務(wù),但任何人都可以免費(fèi)地獲得將CoreConnect作為一種可綜合的知識(shí)產(chǎn)權(quán)(IP)模塊使用的許可,它并不局限于某種特定的CPU架構(gòu)。在過去8年中,軟IP廠商已經(jīng)各自開發(fā)出許多與CoreConnect兼容的、可發(fā)放許可證的外設(shè)內(nèi)核。唯一一種得到更為廣泛支持的片上總線架構(gòu)是ARM的AMBA。
為了保證更高的效率,CoreConnect將低速和高速的外設(shè)分別設(shè)置在分開的總線上,兩條總線由橋連接起來(lái)。截止到目前,MicroBlaze只支持較慢的片上外設(shè)總線(OPB),該總線的數(shù)據(jù)通道寬度為32bit。MicroBlaze v7仍然保持了與OPB之間的后向兼容性,但增加了對(duì)速度更快的處理器本地總線(PLB)的支持。在面向32、64或者128bit寬度的綜合時(shí),PLB的數(shù)據(jù)通道是可配置的。總線的帶寬取決于這些數(shù)據(jù)通道的寬度和FPGA的時(shí)鐘頻率,速度最快的Virtex-5器件的時(shí)鐘頻率已經(jīng)達(dá)到了550MHz。在550MHz的頻率上,一個(gè)128bit的PLB的最大的理論帶寬為8.8MB/s。
PLB直接與CPU相連,提供了一條為若干片上外設(shè)所共享的多點(diǎn)總線。它是一個(gè)Xilinx專有的、被稱為快速單工鏈路(FSL)的接口。FSL是直接的點(diǎn)-點(diǎn)接口,而并非多點(diǎn)總線。FSL的速度要比共享總線的快,但是每個(gè)I/O接口需要更多的邏輯門電路。一個(gè)SoC設(shè)計(jì)可以使用一條或多條FSL與一條CoreConnect PLB的組合來(lái)滿足不同的目標(biāo)需求,從而給開發(fā)者提供了豐富的設(shè)計(jì)選項(xiàng)。
圖1示出了在Xilinx FPGA上實(shí)現(xiàn)的一個(gè)SoC實(shí)例,其中采用了一個(gè)MicroBlaze或者Power 405處理器內(nèi)核。在這個(gè)TCP/IP包處理器實(shí)例中,最關(guān)鍵的數(shù)據(jù)通道將Ethernet控制器與外部存儲(chǔ)控制器和CPU連接起來(lái)。這些數(shù)據(jù)通道是FSL,寬度可以是32~128bit。重要性較低的部件則分享一個(gè)CoreConnect PLB。Xilinx開發(fā)工具可以自動(dòng)對(duì)FSL進(jìn)行配置,使之服務(wù)于某個(gè)特定的目的,或者讓開發(fā)者能夠?qū)涌谶M(jìn)行人工配置。
經(jīng)過IBM的許可,Xilinx對(duì)標(biāo)準(zhǔn)的CoreConnect IP進(jìn)行了輕微的改進(jìn)。但這些改進(jìn)是必不可少的,因?yàn)镕PGA的可編程邏輯門的效率并沒有ASIC的標(biāo)準(zhǔn)的單元門那么高,特別是路由信號(hào)要橫跨一塊大芯片時(shí)。在FPGA中,數(shù)據(jù)通道和時(shí)鐘樹所延伸的長(zhǎng)度要遠(yuǎn)遠(yuǎn)高于ASIC的情況,這使得時(shí)序的收斂變得更為困難。對(duì)于那些分布在芯片各處的、數(shù)不清的外設(shè)連接到一條共享總線上的復(fù)雜設(shè)計(jì)而言,該問題變得更為嚴(yán)重。于是,Xilinx對(duì)PLB進(jìn)行了改進(jìn),提高了它的同步能力,并消除了不確定的數(shù)據(jù)猝發(fā)現(xiàn)象。Xilinx宣稱,這些改進(jìn)雖然相對(duì)而言幅度并不大,卻可以讓開發(fā)者能夠在CoreConnect PLB上連接10~20個(gè)外設(shè),而不至于出現(xiàn)時(shí)序問題。
此外,Xilinx已經(jīng)改進(jìn)了PLB,使之能以更高的效率與集成在某些Virtex-5 FPGA中的、加固的收發(fā)機(jī)交互。這些收發(fā)機(jī)是一個(gè)PCI Express端點(diǎn)和一個(gè)3模Ethernet媒體訪問控制器(TEMAC),它們可以提供的性能將遠(yuǎn)遠(yuǎn)優(yōu)于那些功能相同、綜合到架構(gòu)中的軟IP控制器的性能。上述的PCI Express端點(diǎn)得到了充分的緩沖,并且支持1、2、4或8條通道。TEMAC收發(fā)機(jī)則支持10Mb/s、100Mb/s和Gigabit Ethernet數(shù)據(jù)率。在Xilinx的基準(zhǔn)測(cè)試中,一個(gè)基于MicroBlaze v7和TEMAC的包處理器實(shí)現(xiàn)了750Mb/s的原始吞吐率,對(duì)收發(fā)機(jī)的理論最大帶寬的利用率達(dá)到了驚人的75%。
雖然AMBA得到的支持要比CoreConnect所得到的支持廣泛,后一種標(biāo)準(zhǔn)對(duì)于MicroBlaze來(lái)說(shuō)卻更為適合。內(nèi)置到某些Virtex系列FPGA內(nèi)部的Power 405處理器則采用了CoreConnect,因此,開發(fā)者能夠更為輕松地基于Power 405和MicroBlaze內(nèi)核創(chuàng)制出非對(duì)稱的多處理器。許多來(lái)自于第三方廠商的外設(shè)IP內(nèi)核,往往通過添加一個(gè)簡(jiǎn)單的襯墊適配頭就可以與AMBA或者CoreConnect一起工作。
新指令提升性能
Xilinx在MicroBlaze v7中添加了11種新的指令:3種用于浮點(diǎn)運(yùn)算,其余8種則用于FSL的操作。這些新的浮點(diǎn)指令是簡(jiǎn)明易用的。其中的一個(gè)指令FSQRT,可在27或者29個(gè)時(shí)鐘周期計(jì)算出一個(gè)32bit浮點(diǎn)值的平方根,具體的時(shí)間占用取決于MicroBlaze處理器配置了3級(jí)或者5級(jí)流水線。如果不采用FSQRT,則同樣的運(yùn)算應(yīng)通過對(duì)軟件庫(kù)的函數(shù)調(diào)用來(lái)實(shí)現(xiàn),耗時(shí)約為500個(gè)周期。
其他兩種新的浮點(diǎn)指令可以把整數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)或者執(zhí)行相反的運(yùn)算。FLT指令可以在4~6個(gè)時(shí)鐘周期中把一個(gè)32bit的整數(shù)轉(zhuǎn)換為32bit的浮點(diǎn)數(shù),具體則取決于流水線的深度。要在軟件中調(diào)用相同的函數(shù)將需要330個(gè)時(shí)鐘周期。相反地,F(xiàn)INT指令則可以在5或者7個(gè)時(shí)鐘周期中將一個(gè)32bit的浮點(diǎn)數(shù)變換為32bit整數(shù),具體的時(shí)間長(zhǎng)度取決于流水線深度。而軟件調(diào)用將耗用88個(gè)周期的時(shí)間。
當(dāng)協(xié)處理器通過FSL連接到MicroBlaze內(nèi)核上時(shí),另有8種新的指令可以改善I/O特性。這些指令采取了PUT和GET操作的形式,它們可以讓程序以閉鎖(blocking)或者非閉鎖運(yùn)算的形式管理協(xié)處理器的I/O。在分塊關(guān)系中,CPU停止處理其他的操作,直到將協(xié)處理器的請(qǐng)求處理完為止。在非閉鎖關(guān)系中,CPU繼續(xù)處理其他操作,而協(xié)處理器的請(qǐng)求被送入一個(gè)FIFO緩沖器中。在緩沖器未被充滿前,CPU不會(huì)被閉鎖。開發(fā)者可以根據(jù)協(xié)處理器的需要來(lái)定義緩沖器的尺寸。
此外,MicroBlaze v7的FSL接口的數(shù)量是從前的兩倍(16比8),而程序在運(yùn)行過程中可以動(dòng)態(tài)地將協(xié)處理器分配給各FSL接口。先前,協(xié)處理器在FSL間的分配是通過硬代碼形式嵌入用戶的軟件中的。進(jìn)行任何改動(dòng)進(jìn)行任何改動(dòng)時(shí),開發(fā)者都必須對(duì)軟件進(jìn)行重新編譯。動(dòng)態(tài)分配使得開發(fā)者編寫出的軟件能適應(yīng)不斷變化的條件和工作負(fù)載。多媒體加速庫(kù)可以在專門完成快速傅里葉變換(FFT)或者有限脈沖響應(yīng)(FIR)濾波器運(yùn)算的協(xié)處理器上運(yùn)行。
表2示出了將一個(gè)包處理器設(shè)計(jì)從MicroBlaze v6移植到v7后的結(jié)果—吞吐率改善了3倍以上,從約70Mb/s提升到250Mb/s 。不過,要注意這一對(duì)比并未將設(shè)計(jì)中的每個(gè)變量的變化所帶來(lái)的影響隔離開。特別是,升級(jí)的設(shè)計(jì)版本中Ethernet控制器的速度要快得多。無(wú)論如何,這一對(duì)比展示了可以實(shí)現(xiàn)的性能水平。提升一個(gè)系統(tǒng)的最大理論帶寬,并不一定能確保獲得更高的吞吐率,而MicroBlaze v7的一個(gè)功能特色是為TEMAC提供更好的CoreConnect支持,而該功能是以硬連線方式融入Virtex-5 LXT芯片中。
表2 MicroBlaze v6和v7的性能對(duì)比
競(jìng)爭(zhēng)對(duì)手ARM
從2006年起MicroBlaze v7是Xilinx今年推出的處理器的第三個(gè)新版本。改進(jìn)步伐的加快可能是由于一個(gè)全新的競(jìng)爭(zhēng)者的到來(lái):ARM的Cortex-M1。
Cortex-M1是第一種批準(zhǔn)用于在FPGA中的ARM處理器內(nèi)核,而且它針對(duì)FPGA的可編程邏輯架構(gòu)進(jìn)行了優(yōu)化。較早時(shí),ARM允許獲得授權(quán)者在FPGA上對(duì)其設(shè)計(jì)進(jìn)行測(cè)試,但不能在芯片中采用最終的設(shè)計(jì)。推動(dòng)ARM對(duì)其經(jīng)營(yíng)路線進(jìn)行變革的部分原因是ASIC的設(shè)計(jì)和制造成本的不斷上升,而另一部分原因是Xilinx MicroBlaze和Altera Nios II內(nèi)核的流行。Xilinx和Altera在其處理器方面已經(jīng)售出了幾萬(wàn)個(gè)使用許可。
第一家宣布支持Cortex-M1的廠商是規(guī)模遠(yuǎn)遠(yuǎn)小于Altera或者Xilinx的Actel。Actel與ARM達(dá)成了特別的協(xié)議,讓客戶在采購(gòu)Cortex-M1 FPGA時(shí),無(wú)需再購(gòu)買一個(gè)ARM許可證或者向ARM交付使用費(fèi)。這一交易大大地降低了應(yīng)用一個(gè)基于ARM的設(shè)計(jì)成本。Xilinx尚未發(fā)布一個(gè)類似的協(xié)議,但是筆者估計(jì)在未來(lái)很可能會(huì)宣布達(dá)成協(xié)議。雖然Cortex-M1和MicroBlaze處理器看上去將ARM和Xilinx變?yōu)閮蓚€(gè)相互競(jìng)爭(zhēng)的對(duì)手,但它們的關(guān)系中的合作性仍然超過競(jìng)爭(zhēng)性。ARM認(rèn)為MicroBlaze主要是一種用于吸引客戶的特價(jià)商品,Xilinx研制它主要是為了能賣出更多的FPGA。一個(gè)MicroBlaze v7的許可證售價(jià)僅為495美元,因此芯片,而不是許可證才是真正帶來(lái)贏利的產(chǎn)品。Xilinx同樣欣喜地看到客戶購(gòu)買其FPGA后與Cortex-M1一起使用。
即使是這樣,雖然ARM和Xilinx的握手可謂真誠(chéng),但MicroBlaze v7還是給了Cortex-M1當(dāng)頭一擊。與Xilinx用來(lái)吸引顧客的特價(jià)品一比高下,這一全新的ARM處理器可就吃了虧。雖然MicroBlaze v7定價(jià)低廉,但令人難堪的是,它卻擁有大量Cortex-M1所不具備的功能,例如一個(gè)可任選的FPU、MMU/MPU、32bit 驅(qū)動(dòng)器和指令/數(shù)據(jù)高速緩存。除此之外,MicroBlaze所能實(shí)現(xiàn)的時(shí)鐘頻率也要高于Cortex-M1的。ARM的最大一個(gè)賣點(diǎn)是Cortex-M1來(lái)自ARM。ARM架構(gòu)本身幾乎都已成為業(yè)界標(biāo)準(zhǔn),而且它得到了數(shù)以噸計(jì)的各種外設(shè)IP、開發(fā)工具和軟件的支持。
正如表3所示的那樣,Altera的Nios II與MicroBlaze更為匹配,雖然它從2004年后沒有得到較大幅度的升級(jí)。MMU/MPU選項(xiàng)是MicroBlaze v7超越Nios II的第一個(gè)巨大優(yōu)勢(shì)巨大優(yōu)勢(shì)。不過,Altera也擁有一項(xiàng)優(yōu)勢(shì):可以由用戶配置的指令集架構(gòu)。Nios II開發(fā)者可以開發(fā)定制化的指令集來(lái)加速特定的應(yīng)用,這將極大地提升性能。為了達(dá)到類似的效果,MicroBlaze開發(fā)者可以在可編程邏輯架構(gòu)中實(shí)現(xiàn)協(xié)處理器。
請(qǐng)注意這些處理器之間存在的價(jià)格差異正在縮小。在Cortex-M1出現(xiàn)以前,由FPGA廠商發(fā)放的處理器內(nèi)核使用許可與由ARM發(fā)放的處理器內(nèi)核使用許可相比,其價(jià)格差異達(dá)到了4個(gè)數(shù)量級(jí):一個(gè)MicroBlaze或者Nios II約為500美元,而一個(gè)ARM核則要價(jià)高達(dá)幾百萬(wàn)美元。在Cortex-M1推出后,ARM已經(jīng)一改過去長(zhǎng)期以來(lái)不透露其許可收費(fèi)情況的做法。雖然一個(gè)Cortex-M1許可的確切價(jià)格仍未公布,但ARM宣稱它將愿意做不到十萬(wàn)美元的生意,這在價(jià)格方面是一個(gè)巨大的突破。而且,正如上面曾經(jīng)提到的那樣,Actel可以出售預(yù)先被配置了Cortex-M1內(nèi)核的FPGA,而用戶無(wú)需獲得一個(gè)來(lái)自于ARM的許可。由于Altera和Xilinx事實(shí)上在贈(zèng)送各自可以直接用于FPGA上的處理器內(nèi)核產(chǎn)品,ARM不得不修正自己的許可證模式,以便讓Cortex-M1更具競(jìng)爭(zhēng)力。
針對(duì)FPGA的CPU的未來(lái)發(fā)展前景
隨著FPGA報(bào)價(jià)出現(xiàn)下滑,而ASIC的成本在不斷上升,以可編程邏輯來(lái)實(shí)現(xiàn)一片SoC的方法也變得越來(lái)越有吸引力。正如筆者曾經(jīng)指出過的那樣,F(xiàn)PGA實(shí)現(xiàn)方法在經(jīng)濟(jì)性上超過ASIC實(shí)現(xiàn)方法時(shí),所對(duì)應(yīng)的制造批量點(diǎn)將向著有利于FPGA的方面傾斜,我們尚未發(fā)現(xiàn)今后哪些因素會(huì)改變這一發(fā)展趨勢(shì)。正因?yàn)槿绱?,MicroBlaze(和Nios II)的未來(lái)似乎一片光明。
不過,可能發(fā)生變動(dòng)的一個(gè)因素,是開發(fā)者在采取FPGA實(shí)現(xiàn)方法時(shí)所選用的CPU架構(gòu)。就目前而言,MicroBlaze和Nios II是到目前為止應(yīng)用最為歡迎,因?yàn)樗鼈兊玫搅烁髯缘腇PGA廠商的大力推銷,而且實(shí)際上是免費(fèi)提供的。
如果其他CPU架構(gòu)也可以為FPGA所用而且價(jià)格可以接受的話,則屆時(shí)FPGA廠商自己的架構(gòu)的魅力必然會(huì)減退。雖然Altera和Xilinx已經(jīng)售出的CPU許可證數(shù)量大大超出了ARM計(jì)劃售出的數(shù)量,那些認(rèn)真考慮要大批量制造基于FPGA的SoC的公司,可能更愿意使用一種得到廣泛支持的架構(gòu),如MicroBlaze和Nios II。
即使出現(xiàn)這種情況,Altera和Xilinx處理器也將達(dá)到其目標(biāo)。它們賣出了更多的FPGA,它們播下了基于FPGA的SoC市場(chǎng)的種子,而且它們正在定義出專門用于FPGA的處理器應(yīng)該具有的功能特性和優(yōu)化。無(wú)論MicroBlaze和Nios II是否長(zhǎng)壽而且興旺發(fā)達(dá),對(duì)于各自的廠商而言,它們都是明智的投資。(本文改編自《微處理器報(bào)告》,主標(biāo)題為編者添加)
fpga相關(guān)文章:fpga是什么
評(píng)論