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