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