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