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