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