FPGA中的IP集成方法對比
——
從最初的計算機和電話(huà)開(kāi)始,互聯(lián)網(wǎng)絡(luò )一直是電子工程的關(guān)鍵構成。在超大規模集成(VLSI)電路時(shí)代,由于MOS晶體管的驅動(dòng)特性以及片內互聯(lián)相對較大的電容,互聯(lián)網(wǎng)絡(luò )變得尤其重要。
芯片內部用于連接功能單元的互聯(lián)網(wǎng)絡(luò )對芯片性能有很大的影響,甚至是決定性的影響??偩€(xiàn)雖然是一種最簡(jiǎn)單的互聯(lián),但從容量或者電源角度看,卻是較差的選擇,因為驅動(dòng)總線(xiàn)以最大速率工作時(shí)需要的電源和空間隨總線(xiàn)電容呈指數增大。而且,多點(diǎn)連接網(wǎng)絡(luò )也不是一種好選擇,因為即使每次只需要一次對話(huà),或者會(huì )話(huà)限于最近的鄰居之間,也必須驅動(dòng)整條總線(xiàn)。交叉是不錯的解決方案,其最大容量由底層器件和布線(xiàn)技術(shù)決定。一般而言,多方會(huì )話(huà)的最佳解決方案是采用交叉網(wǎng)絡(luò )。
現狀
目前的片內總線(xiàn)直接源自計算機系統中使用的系統寬度總線(xiàn)(實(shí)際上進(jìn)行了精簡(jiǎn))。盡管我們知道這類(lèi)總線(xiàn)的確發(fā)揮了作用,但它明顯在設計上受限于以前的商用目的和技術(shù)水平,也就是便宜的布線(xiàn)、昂貴的芯片,而互聯(lián)比邏輯速度快。
現在,情況發(fā)生了變化?,F代大規模IC的速度一般受限于互聯(lián),而不是邏輯。采用了多時(shí)鐘域和波傳播技術(shù)的芯片就充分證明了這一點(diǎn)。在眾所周知的“摩爾定律”(常常被錯誤地引用)作用下,現在可以提供豐富的邏輯門(mén),而大部分工程師并不知道該如何使用這么多的資源。對于這一窘境,可以反過(guò)來(lái)考慮電路和系統設計:便宜的邏輯和互聯(lián),而布線(xiàn)恰恰相反。
總線(xiàn)導致了總線(xiàn)標準的發(fā)展——很自然地產(chǎn)生于目前的商業(yè)和技術(shù)環(huán)境。不同生產(chǎn)商的各種IC需要通過(guò)印刷電路板進(jìn)行通信,因此需要為邏輯電平、電流驅動(dòng)和信號極性建立標準。各種引腳和信號標準(例如,晶體管到晶體管邏輯,即TTL)導致了引腳組標準,也就是總線(xiàn)標準的產(chǎn)生。信號標準簡(jiǎn)化了不同元件之間的連接,總線(xiàn)標準實(shí)現了各種微處理器、外設和存儲器的連接。這樣產(chǎn)生了將整個(gè)電路板看成是一種插入模塊的電路板級標準(例如,VME、S-100、Futurebus、PCI等)。實(shí)際上,在很多情況下,這些電路板級標準已經(jīng)超出了供應商專(zhuān)用芯片級偽標準的范圍。
雖然引腳級、芯片級和電路板級總線(xiàn)實(shí)現了電氣兼容性,但并不能保證各構成部分之間能夠實(shí)際對話(huà)??梢哉f(shuō)電路能夠工作,而協(xié)議較弱。但是標準并沒(méi)有解決系統體系結構和數據流的問(wèn)題,因此,標準只是很好地解決了那些瑣碎的問(wèn)題,例如怎樣發(fā)送連續的“1”和“0”字符串。
與很多法律、政策和規章相似,總線(xiàn)標準也得貫徹其效用。但是,總線(xiàn)一經(jīng)采用,就開(kāi)始過(guò)時(shí)了??偩€(xiàn)的嚴密性成為其弱點(diǎn)??偩€(xiàn)標準對信號、協(xié)議、帶寬和應用模型的變化適應性不強??偩€(xiàn)在本質(zhì)上變化很慢,很快就不能適應意外的變化。它阻礙了創(chuàng )新;延誤了原創(chuàng )。雖然總線(xiàn)能夠頑強地支撐下去,但是如果不具有連續性,那就一無(wú)是處了。當然,在不斷發(fā)展變化的標準化大海中,它仍然是穩穩豎立的燈塔。沒(méi)有確定的規范,元件生產(chǎn)商應怎樣遵循標準呢?
其他考慮
總線(xiàn)的替代方案有很多,都曾在各種計算機、芯片、電路板、ASIC和FPGA中得到成功應用。如同總線(xiàn)不是解決所有互聯(lián)問(wèn)題的靈丹妙藥,這些替代方案也不是萬(wàn)能的。如果能避免標準總線(xiàn)固定的程序安排和時(shí)間進(jìn)度,那就有可能為設計開(kāi)辟新的坦途,為普通項目帶來(lái)一些創(chuàng )意和創(chuàng )新。
總線(xiàn)和網(wǎng)絡(luò )
目前總線(xiàn)體系結構的替代方案其實(shí)也不過(guò)是一類(lèi)不同的總線(xiàn)。準確地說(shuō),是不同的互聯(lián)拓撲,例如網(wǎng)絡(luò )、交換架構或者交叉結構。這些互聯(lián)拓撲成功地應用在很多芯片、電路板和系統級產(chǎn)品中,變得越來(lái)越流行。隨著(zhù)芯片和系統級體系結構的變化,其互聯(lián)邏輯隨之變化。
如圖1所示,總線(xiàn)拓撲一般采用點(diǎn)對點(diǎn)或者點(diǎn)對多點(diǎn)會(huì )話(huà)結構。這些總線(xiàn)也是源自引腳或者電路板級接口的標準化要求,這樣,各種供應商的芯片能夠實(shí)現互通??偩€(xiàn)可以有多個(gè)主機(發(fā)起一次會(huì )話(huà),發(fā)送或者接收數據),但是每次只有一個(gè)主機處于活動(dòng)狀態(tài)。在總線(xiàn)的定義上,其本質(zhì)就具有獨占性。每次只有一個(gè)主機能夠使用總線(xiàn);所有其他主機必須等待。因此,在任何總線(xiàn)規范中,總線(xiàn)仲裁(例如,共享機制)成為最重要的組成部分。
圖1 傳統的總線(xiàn)拓撲(略)
雖然每次只有一個(gè)主機處于活動(dòng)狀態(tài),但是大部分總線(xiàn)支持多主機。主機競爭使用總線(xiàn),發(fā)起一次會(huì )話(huà),等待從機(或者在“多呼”會(huì )話(huà)中的多個(gè)從機)的響應,然后釋放總線(xiàn)。主機可以發(fā)起第二次會(huì )話(huà),也可以通過(guò)仲裁,把總線(xiàn)控制權交給其他主機。這種安排會(huì )導致系統瓶頸,等待使用總線(xiàn)大大降低了系統性能。
有些更高級的總線(xiàn)支持分割會(huì )話(huà),下一次會(huì )話(huà)的開(kāi)始和前一次會(huì )話(huà)的結束相互重疊,從而減少仲裁或者會(huì )話(huà)延遲的開(kāi)銷(xiāo)。雖然這樣從整個(gè)會(huì )話(huà)時(shí)間中去掉了一些多余的周期,但卻無(wú)助于解決所有總線(xiàn)根本上存在的單主機問(wèn)題。
在A(yíng)SIC或者FPGA中,采用片內布線(xiàn)資源很容易實(shí)現芯片級總線(xiàn)。標準芯片架構技術(shù)在芯片頂層提供相對平直的金屬層,方便了總線(xiàn)的實(shí)現(也易于實(shí)現分布電源和全局時(shí)鐘信號)。
網(wǎng)絡(luò )拓撲和傳統的總線(xiàn)非常相似。網(wǎng)絡(luò )也是針對在共享介質(zhì)上的點(diǎn)對點(diǎn)或者點(diǎn)對多點(diǎn)會(huì )話(huà)而設計的,也采用了對總線(xiàn)的仲裁控制(通常使用碰撞探測和重試算法)。而且,鄰近的會(huì )話(huà)過(guò)程還可以稍微重疊,以節省時(shí)間。除了物理實(shí)現以外,網(wǎng)絡(luò )和總線(xiàn)是非常相似的。
交換架構
交叉交換及其更通用的同類(lèi)技術(shù)--交換架構,比標準總線(xiàn)即簡(jiǎn)單又復雜。交叉交換提供多主機和多從機芯片或者系統多點(diǎn)對多點(diǎn)會(huì )話(huà)機制。與總線(xiàn)和網(wǎng)絡(luò )不同,交叉和交換架構支持多路同時(shí)會(huì )話(huà)。除了每次只有一個(gè)主機進(jìn)行會(huì )話(huà)的情況之外,這種結構大大提高了帶寬。在這種情況下,傳統的總線(xiàn)或者網(wǎng)絡(luò )能正常工作。在更常見(jiàn)的多主機隨機發(fā)起會(huì )話(huà)(一般是同時(shí)的)的情況下,交換架構(如圖2所示)會(huì )產(chǎn)生更好的結果。
圖2 交換架構拓撲(略)
多主機的情況非常普遍,甚至是在只有一個(gè)微處理器或者一個(gè)處理器內核的系統中。據Gartner/Dataquest的研究,芯片系統(SoC)中的處理器數量平均大概是3.5個(gè),并且這一數字還在增長(cháng)。換句話(huà)說(shuō),大部分芯片都含有多個(gè)處理器,其中“處理器”被定義為執行軟件的RISC、CISC、視頻或者網(wǎng)絡(luò )處理器。
即使是只有一個(gè)微處理器的芯片也通常含有一個(gè)以上的處理器“內核”。Intel著(zhù)名的Core 2 Duo以及類(lèi)似的處理器在一個(gè)硬件芯片上含有兩個(gè)甚至更多的異類(lèi)處理器。Freescale(Motorola)的雙處理器QUICC和PowerQUICC通信芯片已經(jīng)推出了10余年的時(shí)間。網(wǎng)絡(luò )和通信市場(chǎng)無(wú)廠(chǎng)芯片公司在每一芯片系列中都推出了具有4個(gè)、10個(gè)甚至更多處理器的器件。絕非偶然,這些器件也在內部采用了交換架構。
交叉交換之所以這樣命名,是因為它以前采用的是互相垂直放置的交叉金屬條結構。垂直的開(kāi)關(guān)或者繼電器對之間建立了電氣連接。由于X方向的任何金屬條都能夠連接到Y方向的金屬條,因此,有時(shí)候也稱(chēng)其為X-Y交叉。交叉交換結構在電信設備上非常普遍,在實(shí)現任意連接上發(fā)揮了重要作用。
交換架構不但提高了系統總帶寬,而且還避免了仲裁延時(shí)以及總線(xiàn)開(kāi)銷(xiāo)問(wèn)題??偩€(xiàn)是單一資源,而交換架構是共享的。只要兩個(gè)主機沒(méi)有同時(shí)尋址同一個(gè)從機(反之亦然),就可以同時(shí)進(jìn)行任意數量的會(huì )話(huà)。當出現資源沖突時(shí),交換架構仲裁的作用和其他共享資源的情況一樣;除非出現沖突,否則不需要進(jìn)行仲裁。
因此,交換架構具有更好的帶寬和更低的延時(shí)。在很多高性能設計中,處理器提取代碼、存儲數據,或者接收數據,并不希望出現共享總線(xiàn)中的時(shí)間代價(jià)問(wèn)題,因此,存儲器延時(shí)非常重要。當多個(gè)主機能夠同時(shí)尋址多個(gè)從機時(shí),也會(huì )提高總帶寬(即,主機/從機同時(shí)會(huì )話(huà)的數量)。
Amdahl定律闡述了存儲器帶寬必須隨著(zhù)處理器數量的增加而增大。而半導體存儲器帶寬的發(fā)展跟不上處理器對帶寬需求的增長(cháng)。存儲器成為阻礙性能的瓶頸,這種不平衡導致產(chǎn)生了各種工作方式,包括多級緩沖、寫(xiě)數據通路、可寫(xiě)代碼存儲,以及不同的指令集等。每一個(gè)芯片設計人員的首要工作就是如何打開(kāi)這一存儲器瓶頸。繼續挖掘共享總線(xiàn)會(huì )適得其反。
實(shí)現互聯(lián)
和其他互聯(lián)一樣,交換架構在實(shí)現時(shí) 也必須注意底層硬件的性能。早期的交叉交換結構的確如此?,F在的交換架構使用半導體邏輯門(mén)和金屬布線(xiàn)層。和總線(xiàn)相比,交換架構不依靠金屬層,而是更多的采用邏輯門(mén)。因此,這種結構不太適合應用在電路板上,而是FPGA等含有豐富邏輯資源的芯片的理想選擇?!坝病盇SIC處于二者之間,它傾向于采用大量金屬層,而邏輯相對較少,除非專(zhuān)門(mén)針對交換架構進(jìn)行設計,一般情況下,它更適合總線(xiàn)。
在有大量邏輯的FPGA中,交換架構應用得非常好,它發(fā)揮FPGA的性能,也符合業(yè)界發(fā)展趨勢。設計人員轉向“軟”硬件IP(知識產(chǎn)權),交換架構本質(zhì)上是“軟”的,能夠和設計中的其他軟IP很好地協(xié)同工作。而總線(xiàn),被定義得非常嚴密,控制得非常嚴格。因此,交換架構更容易綜合,更適應現有的(以及未來(lái)的)功能模塊。
如果沒(méi)有固定總線(xiàn)接口,功能模塊或者組件能夠更快地發(fā)展,不會(huì )受到總線(xiàn)的限制。這對IP設計人員、IP用戶(hù)以及IP本身都是好消息。交換架構成為“IP集成基礎”,而替代總線(xiàn);它以更靈活的方式連接芯片的各個(gè)區域。
交換架構還利用了EDA工具取得的進(jìn)展。它是更抽象的互聯(lián)形式,比Verilog總線(xiàn)模型的抽象級更高?;ヂ?lián)的細節被提取出來(lái),設計人員可以把精力放在數據流和體系結構上,而不是總線(xiàn)時(shí)序和延時(shí)。
提高抽象級
軟件開(kāi)發(fā)人員已經(jīng)習慣于在工具中詳細說(shuō)明自己的設計構思。他們采用的方式從二進(jìn)制表示,到指令助記符,直到C和Java等高級語(yǔ)言。開(kāi)發(fā)人員并不用指定每個(gè)變量存儲在什么地方,以及是怎么安排的,而是由編譯器完成這一工作。提取出細節后,開(kāi)發(fā)人員能夠集中精力處理流控制、計算和邏輯,而編譯器正確地實(shí)現所有的變量、寄存器、算法操作、存儲等等。C語(yǔ)言開(kāi)發(fā)人員甚至不用知道“字”是16位還是64位,這并不重要。
良好的硬件開(kāi)發(fā)工具,例如較好的編譯器,通過(guò)很少的操作就可以把設計人員的想法在目標硬件中實(shí)現。和編譯器一樣,開(kāi)發(fā)工具掌握了底層平臺的結構和資源。這樣,工具完成了兩項任務(wù):幫助設計人員從細節中解脫出來(lái),比設計人員更好地實(shí)現映射。過(guò)多的指定或者約束通常會(huì )導致較差的硬件(或者軟件),因為這樣會(huì )使編譯器無(wú)法進(jìn)行自己的工作。良好的編譯器不僅僅是翻譯,而是起到了優(yōu)化的功能。
在今天的環(huán)境中,總線(xiàn)規范過(guò)多地約束了硬件工具能夠提供的“解決方案空間”。讓工具自由地發(fā)揮底層硬件解決方案的功能不僅使工作更容易,而且更好。特別是在FPGA邏輯豐富的環(huán)境中,總線(xiàn)無(wú)助于完善器件的功能?;ヂ?lián)可能不是很理想,但總是必須的。無(wú)論是采用總線(xiàn)、交換架構、網(wǎng)絡(luò )還是其他拓撲結構,這些都是設計芯片其他部分(也可能是系統的其他部分)的基礎。如果做的好,它可以幫助實(shí)現系統的很多目標。做的不好(或者不合適),設計人員必須應對各種限制,而無(wú)法高效工作。
解決方法
Altera SOPC Builder軟件提供的解決方案自動(dòng)處理IP和設計模塊的集成,滿(mǎn)足了設計人員在更高抽象層工作的需求。SOPC Builder支持具有流和存儲器映射接口的組件,提供的系統設計互聯(lián)架構能夠實(shí)現設計中數據面和控制面的集成?;ヂ?lián)架構支持從機側仲裁,實(shí)現多主機總線(xiàn)同時(shí)訪(fǎng)問(wèn),提高了主機側仲裁方案的系統性能。
它還可以進(jìn)一步管理好拓撲,提高橋接性能。設計人員或者系統規劃人員從對性能要求較低的域中分離出性能和吞吐量更好的系統域。SOPC Builder的流接口為數據包處理、流復用和DSP數據等寬帶應用提供了大吞吐量、低延時(shí)互聯(lián)。存儲器映射系統互聯(lián)架構使用最少的FPGA邏輯資源來(lái)支持數據通路復用、地址解碼、等待狀態(tài)生成,外設地址對齊(包括支持自然或者動(dòng)態(tài)總線(xiàn)寬度調整),以及中斷優(yōu)先級分配等。圖3所示為SOPC Builder系統互聯(lián)體系結構,它和圖2中的交換架構相一致。
圖3 SOPC Builder系統互連架構(略)
每次當您在系統中加入新組件或者改變外設訪(fǎng)問(wèn)優(yōu)先級時(shí),SOPC Builder都能夠自動(dòng)生成新的最佳系統互聯(lián)架構。由于SOPC Builder自動(dòng)生成了系統互聯(lián)架構,您可以迅速方便地對系統進(jìn)行修改,以提高性能或者增加功能。Altera ? Quartus ? II設計軟件訂購版和網(wǎng)絡(luò )版均提供SOPC Builder。
評論