編者語:筆者本科專業(yè)電子信息工程,讀書時(shí)代用的第一塊開發(fā)板就是Altera公司的,當(dāng)時(shí)腦子里完全沒有Altera這個(gè)概念,只知道這是塊FPGA開發(fā)板。但就是這塊開發(fā)板讓我開始接觸并深刻認(rèn)識(shí)到FPGA技術(shù)、VHDL語言的魅力。雖然后來沒去鉆研做技術(shù),但它給我留下的印象是最深刻的。那么,各位自稱FPGA工程師的你們是不是也一樣呢?Altera公司的FPGA開發(fā)板用了那么多年,Quartus II 軟件用得那么順手。但是卻不了解“Altera這家伙到底是什么呢?“、”它多大了?“、”它為什么能在中國這片廣闊天地上培育出這么多牛叉的工程師?“...筆者在跟很多FPGA工程師聊天的過程中,經(jīng)常會(huì)聽到這些疑問。湊巧Altera今年30周歲,筆者就帶著大家一起來見識(shí)下Altera的30年發(fā)展歷程吧...
創(chuàng)始年代
1983年,Altera公司正式成立。很多人現(xiàn)在對(duì)這一年印象還非常深刻——挑戰(zhàn)者號(hào)和哥倫比亞號(hào)航天飛機(jī)首航,菲律 賓總統(tǒng)小阿基諾被暗殺,美國入侵格林納達(dá)等。而在技術(shù)領(lǐng)域卻是白駒過隙,30年顯得如此漫長(zhǎng)。TCP/IP成為ARPANET的正式協(xié)議——那時(shí)還沒有互 聯(lián)網(wǎng)。IBM推出了PC-XT——個(gè)人計(jì)算機(jī)還沒有硬盤。宣布了GNU項(xiàng)目。
在電子設(shè)計(jì)領(lǐng)域,微處理器在很多嵌入式設(shè)備中得到了廣泛應(yīng)用,替代了高端微型計(jì)算機(jī),在低端則替代了大量的小規(guī)模數(shù)字芯片。典型的數(shù)字系統(tǒng)包括微處理器或 者微控制器,周圍是接口電路,連接芯片總線和外部存儲(chǔ)器芯片以及接口。小規(guī)模邏輯芯片和中等規(guī)模功能模塊IC還在使用,更多的用在建立微處理器周圍的接 口,或者橋接總線,對(duì)于性能關(guān)鍵的應(yīng)用,則協(xié)助微處理器完成一些操作。
而且,這一時(shí)期,在設(shè)計(jì)領(lǐng)域逐漸采用了新的替代解決方案。邏輯門陣列——特別是經(jīng)過預(yù)制造的邏輯門陣列,在最終產(chǎn)品階 段,由一系列客戶定義的金屬層進(jìn)行配置,支持設(shè)計(jì)人員將數(shù)千個(gè)邏輯門和存儲(chǔ)器封裝到一個(gè)芯片中。對(duì)于很多項(xiàng)目,并不熟悉設(shè)計(jì)過程,依靠于基于工作站的 EDA工具進(jìn)行原理圖采集,獲取庫單元,進(jìn)行仿真,而前端費(fèi)用非常昂貴。但是對(duì)于規(guī)模較大、資金較充裕的設(shè)計(jì)團(tuán)隊(duì),邏輯門陣列是很好的替代方案,減少了芯 片數(shù)量,提高了設(shè)計(jì)性能,同時(shí)降低了功耗。
從今天的標(biāo)準(zhǔn)來看,那時(shí)的設(shè)計(jì)風(fēng)格也是千差萬別。習(xí)慣于數(shù)字邏輯的工程師通常使用形式結(jié)構(gòu)來進(jìn)行設(shè)計(jì):布爾代數(shù)和最小表 達(dá)式定義組合邏輯,通過狀態(tài)機(jī)來描述時(shí)序邏輯。這些工程師會(huì)使用手動(dòng)方法或者越來越多的計(jì)算機(jī)軟件工具來采集并分析其設(shè)計(jì)。但是工程師的背景各不相同,特 別是模擬工程師,通常會(huì)使用更直觀的方法。這些設(shè)計(jì)人員傾向于使用原理圖進(jìn)行設(shè)計(jì)輸入,從左側(cè)的空白開始設(shè)計(jì),然后是輸入信號(hào)到輸出,增加邏輯門、觸發(fā) 器、中等規(guī)模的器件,以及要連接的微處理器。邏輯門陣列用戶也傾向于采用原理圖方法,這只是因?yàn)樗軌驅(qū)υ谛酒薪⒌碾娐愤M(jìn)行近似描述。這兩種相反的設(shè) 計(jì)風(fēng)格在設(shè)計(jì)發(fā)展過程中都扮演了一定的角色,但是業(yè)界在1983年出現(xiàn)了另一種創(chuàng)新方法,并逐漸得到廣泛應(yīng)用。
1978年,出現(xiàn)了另一種替代方法,但還沒有引起重視。Monolithic Memories的芯片設(shè)計(jì)團(tuán)隊(duì)開發(fā)了一款名為PAL的器件(對(duì)于“可編程陣列邏輯”,采用了更知名的術(shù)語“可編程邏輯陣列”)。芯片是一次性編程數(shù)字器 件,實(shí)現(xiàn)布爾表達(dá)式的簡(jiǎn)化標(biāo)準(zhǔn)形式:乘積求和格式。PAL含有很多宏單元,每個(gè)單元包括開關(guān)陣列,這可以將芯片的任意輸入和輸出連接至8個(gè)乘積項(xiàng)中的每一 個(gè)。然后,宏單元在寬OR邏輯門中對(duì)乘積項(xiàng)進(jìn)行求和,提供可配置觸發(fā)器,寄存OR邏輯門的輸出,為選擇時(shí)鐘提供一些復(fù)用器,旁路寄存器,等等。1983 年,PAL的容量、速度和配置發(fā)展很快,使得設(shè)計(jì)人員有很大的選擇余地。
這些可編程器件為數(shù)字設(shè)計(jì)人員提供了很好的方法:邏輯密度高于小規(guī)模邏輯門和觸發(fā)器,比專用商用中等規(guī)模器件更靈活,例 如,計(jì)數(shù)器、寄存器和解碼器,與邏輯門陣列相比,還提供非常熟悉的設(shè)計(jì)流程,沒有前端開支。供應(yīng)商為微型計(jì)算機(jī)和大型機(jī)提供軟件工具,這可以轉(zhuǎn)換成布爾表 達(dá)式、狀態(tài)機(jī),某些機(jī)制轉(zhuǎn)換為芯片開關(guān)映射。
Altera登場(chǎng)
這是Altera于1984年推出其首款產(chǎn)品的環(huán)境。EP300芯片( 圖1)是可編程邏輯芯片,但是在四個(gè)方面與PAL有明顯的不同。首先,EP300是可重新編程的,看起來比較方便,而事實(shí)表明這成為了業(yè)界的關(guān)鍵因素。封裝上的石英窗口支持用戶對(duì)管芯進(jìn)行紫外燈照射,擦除含有器件配置的EPROM單元,因此,可以再次對(duì)芯片進(jìn)行編程。
圖1.通過管芯上的窗口,照射紫外光,Altera EP300具有可擦除能力。
其次,EP300是CMOS器件,那時(shí),還是采用高功耗的雙極工藝來制造大部分PAL、小規(guī)模和中等規(guī)模邏輯。第 三,Altera芯片是通用的——即,用戶可以對(duì)EP300進(jìn)行編程,幾乎可以模擬絕大部分現(xiàn)有PAL類型器件的配置。最后,Altera為EP300提 供了設(shè)計(jì)工具,這一工具運(yùn)行在IBM PC上,而不是工程工作站或者微型計(jì)算機(jī)上。Altera資深副總裁Don Faria回憶說:“這的確是創(chuàng)新。PC剛剛出現(xiàn),工程師對(duì)其很有興趣,有時(shí)候,人們觀看我們的演示就是為了看一看PC-XT?!?/p>
還有另一點(diǎn)不同,是與Altera有關(guān),不僅僅是EP300。Altera采用了代工線模式。那時(shí)大部分半導(dǎo)體公司都依 靠他們自己生產(chǎn)線的專用工藝來獲得競(jìng)爭(zhēng)優(yōu)勢(shì),Altera設(shè)計(jì)的EP300也盡可能采用通用EPROM工藝。因此,可以在很多其他公司生產(chǎn)線上生產(chǎn)芯片, 只需要對(duì)設(shè)計(jì)進(jìn)行很小的改動(dòng)即可。石印掩膜就是刀刻紅膜相片——只修改設(shè)計(jì)文件參數(shù)并不能改變它。因此,開發(fā)的設(shè)計(jì)要在性能上有競(jìng)爭(zhēng)力而且可移植性要好, 這的確有一定的難度。
Faria回憶說,這一新器件非常符合系統(tǒng)設(shè)計(jì)人員的需求。20引腳封裝含有8個(gè)宏單元。每個(gè)宏單元( 圖2) 含有的寄存器接收8個(gè)乘積項(xiàng)的OR運(yùn)算。因此,每個(gè)宏單元很容易解碼16位地址總線。早期數(shù)據(jù)資料中的一個(gè)例子是,衍生器件EP310連接了微處理器地址 總線,為RAM、EPROM和5個(gè)串行I/O收發(fā)器提供了片選信號(hào)。器件還可以進(jìn)行復(fù)雜的轉(zhuǎn)換,例如,解碼二進(jìn)制數(shù),驅(qū)動(dòng)7段顯示屏的每一段?;蛘撸粋€(gè) 芯片可以實(shí)現(xiàn)非常復(fù)雜的狀態(tài)機(jī),具有8個(gè)二進(jìn)制狀態(tài)變量。
圖2.EP300被排列成可配置乘積求和。
通過在EP300中實(shí)現(xiàn)接口和狀態(tài)機(jī),設(shè)計(jì)人員可以嘗試新的邏輯表達(dá)式,重新配置設(shè)計(jì),重新映射地址總線,以及類似的試 驗(yàn),不會(huì)有PAL各種各樣的問題。更重要的是在成本上,這可能不是令人很激動(dòng),但他們可以設(shè)計(jì)一塊電路板,在成品中安裝各種型號(hào)器件,甚至可以在現(xiàn)場(chǎng)進(jìn)行 重新配置。由于有這些優(yōu)勢(shì),EP300及其衍生型號(hào)很快得以廣泛應(yīng)用,設(shè)計(jì)人員自然會(huì)希望將更多的功能在可編程器件中實(shí)現(xiàn)。這種趨勢(shì)促使生產(chǎn)出規(guī)模更大的 器件。
越來越多的問題
Altera的響應(yīng)是擴(kuò)展芯片系列,含有更多的宏單元,最終在EP1800中,68引腳的含鉛芯片載體上實(shí)現(xiàn)了48個(gè)宏 單元器件。在這一點(diǎn),對(duì)邏輯容量的需求對(duì)PAL體系結(jié)構(gòu)帶來了很大的壓力,促使體系結(jié)構(gòu)開始發(fā)展變化。Faria解釋說:“我們知道標(biāo)準(zhǔn)PAL體系結(jié)構(gòu)很 難進(jìn)行調(diào)整?!?/p>
在傳統(tǒng)的PAL中,每一宏單元的每個(gè)乘積項(xiàng)可以訪問所有輸入信號(hào),所有宏單元輸出,以及所有這些信號(hào)的互補(bǔ)信號(hào)。隨著宏單元數(shù)量的增加,這一排列好的互聯(lián)矩陣會(huì)呈幾何級(jí)數(shù)增長(zhǎng),很快將無法承受。Faria說:“因此,我們開始對(duì)互聯(lián)進(jìn)行劃分?!?/p>
在EP1800中,這一趨勢(shì)非常明顯,一個(gè)封裝中實(shí)際是四個(gè)獨(dú)立的EP300器件( 圖3)。由內(nèi)部總線將這四個(gè)器件連接起來,而不是都嘗試去驅(qū)動(dòng)相同的乘積項(xiàng)矩陣。這種組織使得器件具有可制造性,但是,要求設(shè)計(jì)人員要想清楚哪一宏單元去實(shí)現(xiàn)某一邏輯表達(dá)式,其他的哪一宏單元要訪問結(jié)果。器件四個(gè)部分的連接會(huì)帶來額外的延時(shí)。
圖3.隨著可編程器件容量的增長(zhǎng),簡(jiǎn)單的乘積求和組織被劃分設(shè)計(jì)替代,并不是所有的乘積項(xiàng)要訪問所有信號(hào)。
新體系結(jié)構(gòu),新參與者
大約在此時(shí),1985年,發(fā)生的一個(gè)外部事件影響了Altera體系結(jié)構(gòu):最近成立的Xilinx發(fā)布了其第一款FPGA。FPGA與EPLD相比是根本不同的體系結(jié)構(gòu),這些不同觸發(fā)了Altera內(nèi)部的多項(xiàng)創(chuàng)新。
FPGA并不是匯集宏單元,而是嘗試仿真邏輯門陣列的結(jié)構(gòu)。第一款芯片是邏輯單元陣列——相對(duì)簡(jiǎn)單的邏輯單元(LE), 每個(gè)都含有一個(gè)三輸入查找表(LUT),用于產(chǎn)生邏輯功能,還有一個(gè)可配置觸發(fā)器,以及用于調(diào)整信號(hào)和選擇時(shí)鐘的復(fù)用器。邏輯單元并沒有采用固定連接,而 是通過交換結(jié)構(gòu)連接至多層金屬堆疊,這具有不同的長(zhǎng)度和方向:可編程互聯(lián)。正如在邏輯門陣列中,F(xiàn)PGA用戶能夠決定一小簇邏輯門(邏輯單元)的功能,這 些邏輯簇怎樣連接至芯片的其他簇,通過連接邏輯單元,逐步構(gòu)建形成電路。
這些器件的三個(gè)方面引起了邏輯設(shè)計(jì)人員的注意。首先,與小規(guī)模EPLD中的宏單元數(shù)量相比,F(xiàn)PGA中有大量的邏輯單 元,因此,F(xiàn)PGA表面上看起來的容量通常都不太正確。其觸發(fā)器的確比等價(jià)EPLD的多,但是對(duì)于組合邏輯,密度是不可比的。第二個(gè)吸引人的方面是,與后 來非常流行的邏輯門陣列非常相似,這給研究并采用新技術(shù)的設(shè)計(jì)人員帶來了很大的想象空間。第三,對(duì)于習(xí)慣于把設(shè)計(jì)考慮成原理圖而不是布爾等式的設(shè)計(jì)人員而 言,F(xiàn)PGA看起來更直觀。很清楚的知道邏輯門和觸發(fā)器網(wǎng)絡(luò)應(yīng)怎樣映射到FPGA中。
后一點(diǎn)成為發(fā)展趨勢(shì)。越來越明顯的是很難調(diào)整基于布爾表達(dá)式的形式設(shè)計(jì),這與設(shè)計(jì)實(shí)現(xiàn)它的PAL相似。布爾代數(shù)能夠準(zhǔn)確簡(jiǎn)明的表達(dá)設(shè)計(jì)人員使用幾百個(gè)邏輯門的目的。但是對(duì)于一千個(gè)邏輯門,印刷錯(cuò)誤以及難以理解表達(dá)式的含義實(shí)際上意味著,很難實(shí)現(xiàn)這么多邏輯門。
1985年,Altera基于PC的設(shè)計(jì)套裝提供了四種不同的設(shè)計(jì)輸入方法:布爾表達(dá)式、狀態(tài)機(jī)映射、網(wǎng)表和原理圖。軟 件采用任何一種形式來進(jìn)行設(shè)計(jì),簡(jiǎn)化為布爾表達(dá)式,簡(jiǎn)明的進(jìn)行表達(dá),將表達(dá)式映射到目標(biāo)器件電路中,提供仿真器,因此,設(shè)計(jì)人員能夠看到芯片是怎樣工作 的。工具還使得用戶能夠選擇通過配置芯片的單獨(dú)的EPROM單元來直接控制,認(rèn)識(shí)到這一事實(shí),有經(jīng)驗(yàn)的設(shè)計(jì)人員進(jìn)行優(yōu)化工作,效果要比一些軟件好得多。
Altera的回答
Altera對(duì)FPGA的響應(yīng)是提高其下一代器件的邏輯容量。而Altera設(shè)計(jì)人員完成這一工作時(shí)并沒有復(fù)制FPGA體系結(jié)構(gòu),或者嘗試簡(jiǎn)單的擴(kuò)大EPLD。相反,他們將劃分PAL這一概念擴(kuò)展為一類新體系結(jié)構(gòu):復(fù)雜PLD (CPLD)。
在后來采用的工藝密度(大約1 μm)中,CPLD解決了兩類問題,這在FPGA中很快體現(xiàn)出來。這些問題之一是扇入
FPGA邏輯單元中的LUT只有三路輸入。因此,F(xiàn)PGA需要級(jí)聯(lián)多級(jí)LE才能實(shí)現(xiàn)大扇入功能,例如地址解碼器( 圖4)。多級(jí)通常導(dǎo)致很大的延時(shí),低效的占用了大量的互聯(lián)和邏輯單元。
圖4.某些功能,例如這一8比特地址解碼器,可以采用PAL寬扇入兩個(gè)邏輯級(jí)來實(shí)現(xiàn),但是,如果采用較窄的FPGA邏輯單元輸入,則需要多個(gè)邏輯級(jí)。
第二個(gè)問題是時(shí)序預(yù)測(cè)性。在PAL中,任何邏輯表達(dá)式的延時(shí)相同,不論它有多復(fù)雜,或者放置在哪里,只要能夠適配到一個(gè) 宏單元中即可。如果一個(gè)表達(dá)式需要PAL或者CPLD中的多個(gè)宏單元,單元之間的橋接只會(huì)在時(shí)序上增加額外的固定延時(shí)。因此,您實(shí)際上可以很快計(jì)算出邏輯 功能的通路延時(shí)。
這種簡(jiǎn)潔并沒有體現(xiàn)在FPGA中。在早期的器件中,資源非常寶貴,互聯(lián)的延時(shí)非常大。因此,時(shí)序的差別會(huì)很大,具體取決 于工具怎樣將您的設(shè)計(jì)映射到邏輯單元和互聯(lián)中。器件逐漸填滿后,工具必須付出很大的努力才能找到開放布線通路和自由的邏輯單元,問題越來越嚴(yán)重。在利用率 達(dá)到90%的FPGA中,如果您看一下說明,制造商并不推薦這種情況,看起來對(duì)邏輯不大的改變就會(huì)導(dǎo)致布局和時(shí)序出現(xiàn)很大的變化,很難連接。
Altera的第一款CPLD是1988年的MAX5000器件,不用放棄PAL的確定性時(shí)序,便可以實(shí)現(xiàn)更高的邏輯密度。通過針對(duì)工藝特性來優(yōu)化邏輯粒度,體系結(jié)構(gòu)達(dá)到了其目標(biāo)。
一項(xiàng)對(duì)比說明了這一點(diǎn)。在傳統(tǒng)的PAL中,每一乘積項(xiàng)要訪問芯片中的每一變量。那么,劃分粒度就是整個(gè)器件。在第一個(gè) FPGA中,每個(gè)LUT都要訪問其本身的或者其他單元的三路信號(hào)。Altera設(shè)計(jì)人員認(rèn)真思考了PAL的大粒度太大無法進(jìn)行擴(kuò)展,而早期FPGA的精細(xì) 粒度導(dǎo)致了時(shí)序不可預(yù)測(cè)這一問題。對(duì)于1988年的工藝技術(shù),最好的答案應(yīng)位于兩者之間。
MAX 5000體系結(jié)構(gòu)( 圖5) 找到了最佳點(diǎn)。每一MAX芯片含有一個(gè)或者多個(gè)邏輯陣列模塊(LAB)。每個(gè)LAB,實(shí)際上是沒有I/O端的較大的(16個(gè)或者32個(gè)宏單元) PAL。LAB的宏單元每個(gè)都有四個(gè)乘積項(xiàng)。而每個(gè)LAB都含有一些非專用的乘積項(xiàng),可以連接至宏單元,以延長(zhǎng)其連接距離。每個(gè)LAB都連接至片內(nèi)可編程 互聯(lián)陣列(PIA),在LAB之間連接信號(hào),具有固定的額外延時(shí)。所有LAB共享一個(gè)可編程I/O布線矩陣,將邏輯連接至焊盤環(huán)。
圖5.MAX體系結(jié)構(gòu)通過將乘積和模塊分組到LAB中,提供幾種分層互聯(lián)級(jí),同時(shí)提高了邏輯密度和可預(yù)測(cè)性。
MAX CPLD是成功的折中方案。時(shí)序雖然不像小規(guī)模PAL那樣簡(jiǎn)單,但仍然是確定性的,限制在非常窄的窗口中。把設(shè)計(jì)映射到器件中并不簡(jiǎn)單,但是由設(shè)計(jì)軟件自動(dòng)完成,可以選擇手動(dòng)編輯。
1980年底直至1990年初一直都要求提高邏輯密度。隨著邏輯門數(shù)量的增加,應(yīng)用開發(fā)人員開始考慮CPLD,它具有優(yōu) 異的扇入和確定性,是解碼器和狀態(tài)機(jī)等需要大量邏輯的最佳選擇。對(duì)于需要大量寄存器的功能,設(shè)計(jì)人員之所以選擇FPGA是因?yàn)樗谟|發(fā)器數(shù)量上有很大的優(yōu) 勢(shì)。
人越來越難以理解器件,但設(shè)計(jì)工具越來越智能,因此,對(duì)手動(dòng)編輯的需求降低了。在1980年底,出現(xiàn)了一種全新的設(shè)計(jì)風(fēng) 格,它基于Verilog硬件描述語言(HDL)的自動(dòng)邏輯綜合。除了名稱,HDL與Verilog一樣,根本就沒有描述硬件。而是,采用名為寄存器傳送 邏輯的新形式來描述硬件功能。
使用Verilog (及其ADA衍生競(jìng)爭(zhēng)對(duì)手,VHDL)無意得到的結(jié)果是,綜合產(chǎn)生了有很多寄存器的同步設(shè)計(jì)。這些設(shè)計(jì)直觀上更適合在有大量寄存器的FPGA體系結(jié)構(gòu)中實(shí)現(xiàn),而不是在組合邏輯CPLD中實(shí)現(xiàn)。
直覺并不意味著現(xiàn)實(shí),由于FPGA結(jié)構(gòu)的限制,早期嘗試面向FPGA進(jìn)行邏輯綜合失敗了。但是,設(shè)計(jì)人員仍然開始思考采 用Verilog等文本語言進(jìn)行邏輯設(shè)計(jì),開始考慮FPGA不僅僅是接口單元,而是實(shí)現(xiàn)其設(shè)計(jì)完整功能模塊的方法。Altera成立二十年的時(shí)候,半導(dǎo)體 工藝邏輯密度不斷增長(zhǎng),同樣非常關(guān)鍵的是越來越豐富的工藝互聯(lián),這些都帶來了新機(jī)遇。這恰恰是Altera開始另一次革命的時(shí)候。
從膠合邏輯到子系統(tǒng):Altera的第二個(gè)十年
這是 1994 年。美國航天飛機(jī)還在執(zhí)行常規(guī)任務(wù)。全世界興致勃勃的關(guān)注彗星 Shoemaker-Levy 9 的分裂,它最終撞向了木星的大氣層。連接英國和法國的英吉利海峽終于圓夢(mèng)百年。令人意想不到的是,臨時(shí)共和軍停止了在北愛爾蘭的軍事敵對(duì)行動(dòng)。在電子行 業(yè),英特爾剛剛宣布,奔騰處理器克服了著名的奔騰中斷缺陷,成為個(gè)人計(jì)算機(jī)的主流處理器。 Altera 開始了他的第二個(gè)十年。
從作為簡(jiǎn)單邏輯芯片開始 , 可編程邏輯器件 (PLD) 十多年來一直按照摩爾定律發(fā)展 , 越來越復(fù)雜 —— 邏輯容量超過了 10K 等價(jià)邏輯陣列。在發(fā)展過程中, PLD 分成了兩種體系結(jié)構(gòu):基于布爾乘積求和的復(fù)雜 PLD (CPLD) ,并通過 EEPROM 單元進(jìn)行編程,以及基于查找表 (LUT) 的 FPGA ,以微小 SRAM 來實(shí)現(xiàn)這些查找表。
這兩種體系結(jié)構(gòu)一開始都有其專用性。CPLD ( 圖 1) 適用于具有大扇出或者嚴(yán)格時(shí)序約束的電路。 FPGA 適用于具有大量寄存器的設(shè)計(jì)。對(duì)于關(guān)心組合邏輯模塊和狀態(tài)機(jī)的設(shè)計(jì)人員,一般都認(rèn)為 CPLD 更友好一些 —— 在 1994 年,這是老觀點(diǎn)。而更喜歡 FPGA 的一批年輕設(shè)計(jì)人員則把邏輯看成文本: Verilog 或者 VHDL 。
圖1.CPLD體系結(jié)構(gòu)
這兩種體系結(jié)構(gòu)有一個(gè)共同的發(fā)展趨勢(shì) : 隨著芯片邏輯容量的增長(zhǎng) , PLD 的應(yīng)用出現(xiàn)了變化。當(dāng) CPLD 還受限于幾千個(gè)等價(jià)邏輯門時(shí),設(shè)計(jì)人員采用芯片主要是實(shí)現(xiàn)中央微處理器或者微控制器 (MCU) 芯片周圍的簡(jiǎn)單功能。較小的器件用作地址解碼器、中斷控制器,或者總線擴(kuò)展器。較大的器件可以是快速狀態(tài)機(jī)智能直接存儲(chǔ)器訪問控制器,處理某些實(shí)時(shí)操作, 而軟件完成這些操作太慢了。
但是 , 10K 邏輯門帶來了新機(jī)遇。設(shè)計(jì)人員可以在大約 3K 邏輯門中開發(fā)一個(gè) 8 位 MCU , 或者一個(gè)簡(jiǎn)單的 16 位 CPU 內(nèi)核 , 例如 , 已經(jīng)成為古董的 8086 ,它 只需要兩倍的邏輯門。采用 10K-20K 邏輯門,設(shè)計(jì)人員能夠開發(fā)基于小型 CPU 的子系統(tǒng),例如,總線接口和可編程串行接口控制器,這些都包含在 PLD 中。與標(biāo)準(zhǔn)產(chǎn)品非 PLD 解決方案相比,這類設(shè)計(jì)要慢一些,能效也低,但卻是完全用戶可定義的,可重新編程的。最顯著的是,大部分這類子系統(tǒng)設(shè)計(jì)都有大量的寄存器,很多都需要大量 的內(nèi)部 SRAM kilobytes (KB) 。
Altera轉(zhuǎn)向FPGA發(fā)展
在這種環(huán)境下 , Altera設(shè)計(jì)人員總結(jié)出 , 市場(chǎng)需要一類新產(chǎn)品。與 FPGA 相似,它應(yīng)該采用精細(xì)粒度邏輯單元,每一個(gè)單元都含有 LUT 和寄存器。但是像 CPLD 一樣,它應(yīng)該使用層次化的確定性互聯(lián),以保持時(shí)序的可預(yù)測(cè)性,而且簡(jiǎn)單。 Altera 增加了第三種單元,借鑒了某類邏輯門陣列。這一新單元是一組嵌入到體系結(jié)構(gòu)中的 SRAM 模塊,設(shè)計(jì)用作緩沖或者高速暫存存儲(chǔ)器、寄存器文件,或者實(shí)現(xiàn)復(fù)雜函數(shù)發(fā)生器的查找表。這種理念的結(jié)果是, 1995 年, Altera 推出了第一款類似 FPGA 的系列產(chǎn)品, FLEX? 10K 器件 ( 圖 2) 。
圖2.FLEX 10K器件結(jié)構(gòu)圖
Altera 工程師還進(jìn)一步打破了公司傳統(tǒng) , 使用 SRAM 單元 —— 而不是他們可信的 EEPROM 技術(shù)來保存 FLEX 芯片的配置數(shù)據(jù)。這種選擇意味著,系統(tǒng)每次上電時(shí),必須從外部存儲(chǔ)器對(duì) FLEX 進(jìn)行配置,就像基于 SRAM 的 FPGA 。但這也意味著,不需要占用大量空間的 EEPROM 單元, FLEX 邏輯單元會(huì)小很多。而且,十年磨一劍,轉(zhuǎn)到 SRAM 意味著,只要有新工藝, Altera 就能夠采用前沿工藝開發(fā)自己的器件,而不用等待代工線兩年以上來開發(fā)嵌入式 EEPROM 。這些變革最終促使半導(dǎo)體行業(yè)在每一新工藝節(jié)點(diǎn)的第一批設(shè)計(jì)都使用了 FPGA 。
新應(yīng)用 , 新技術(shù)
FLEX 10K 器件及其后續(xù)器件促進(jìn)了 PLD 行業(yè)的發(fā)展 ( 圖 3) 。新體系結(jié)構(gòu)使得新應(yīng)用成為可能,這要求采用新工具和技術(shù),反過來進(jìn)一步增加了對(duì)新體系結(jié)構(gòu)的需求。
圖3.FPGA發(fā)展圖
FLEX 器件多達(dá) 250K 等價(jià)邏輯門 , SRAM 高達(dá) 40K , 使用其 SRAM 模塊 , 能夠?qū)崿F(xiàn)某些非常復(fù)雜的狀態(tài)機(jī)和算術(shù)功能 , 已經(jīng)遠(yuǎn)遠(yuǎn)超出了傳統(tǒng)的接口和膠合邏輯應(yīng)用。用戶可以考慮整個(gè)子系統(tǒng),例如以太網(wǎng)接口,其介質(zhì)訪問控制器、協(xié)議卸載引擎;或者完整的信號(hào)處理加速器,包括其 總線接口、本地存儲(chǔ),以及硬件有限沖擊響應(yīng) (FIR) 濾波器等;所有這些都含在一片 FLEX 芯片中。雖然 Altera 最初的目的是彰顯 FLEX 器件與 FPGA 的不同,但 FPGA 卻成為大規(guī)模 PLD 的總稱, Altera 也就逐漸采用了這一術(shù)語。
當(dāng)用戶開始考慮子系統(tǒng)時(shí) , 他們發(fā)現(xiàn)了新需求。子系統(tǒng)一般需要多個(gè)時(shí)鐘,每一時(shí)鐘與自己的鎖相環(huán) (PLL) 同步。但是分立 PLL 價(jià)格昂貴,占用較大的電路板空間。因此,從 1996 年開始, Altera 推出了具有內(nèi)部可編程 PLL 的 FLEX 器件。其強(qiáng)大的功能節(jié)省了電路板空間,能夠提高芯片時(shí)鐘質(zhì)量。而更重要的是,它揭示了很重要的發(fā)展趨勢(shì): FPGA 成為子系統(tǒng),開始集成常用的非 PLD 硬件模塊,以改進(jìn)系統(tǒng)總體設(shè)計(jì)。
設(shè)計(jì)方法也在改變。在 1990 年后期 , 具有 100K 邏輯門的 FLEX 器件超越了傳統(tǒng)的一張白紙式的設(shè)計(jì)方法。設(shè)計(jì)團(tuán)隊(duì)將其工作分成多個(gè)模塊,嘗試使用以前設(shè)計(jì)好的模塊,而不用開發(fā)新模塊。團(tuán)隊(duì)開始許可來自第三方知識(shí)產(chǎn)權(quán) (IP) 開發(fā)商的模塊。 Altera 開始開發(fā) IP 庫。應(yīng)用了設(shè)計(jì)工具,增加了新特性以幫助實(shí)現(xiàn) IP 重用,新特性包括,能夠通過簡(jiǎn)單的用戶界面設(shè)置可重用 IP 模塊的參數(shù),第三方供應(yīng)商能夠以加密形式提供 IP 模塊。
容量的增加也帶來了另一問題 : 調(diào)試。對(duì)于小型 PLD ,最常用的調(diào)試方法一直是“冒煙測(cè)試”:插入芯片,打開電源。在 100K 邏輯門,第一次嘗試芯片就能夠工作,或者設(shè)計(jì)人員通過采用邏輯分析儀來觀察外部引腳,從而發(fā)現(xiàn)問題的概率幾乎為零。“冒煙測(cè)試”沒有用。設(shè)計(jì)人員開始在 ASIC 環(huán)境中仿真相關(guān)部分,在針對(duì) FPGA 將其綜合到網(wǎng)表中之前,采用 RTL 仿真器測(cè)試他們的寄存器傳送級(jí) (RTL) 代碼。
但是 , 在仿真中可行的 RTL 在實(shí)際中可能還無法工作。設(shè)計(jì)人員需要一種方法來觀察芯片運(yùn)行時(shí)的內(nèi)部工作情況。采用 SRAM 可編程 FPGA ,可以將 ad-hoc 調(diào)試電路寫入到 RTL 中,重新綜合,重新測(cè)試。但是,這樣做的投入較大,非常耗時(shí)。因此,在 1999 年, Altera 推出了 SignalTap? 邏輯分析器:這一硬件特性支持用戶在系統(tǒng)運(yùn)行時(shí)監(jiān)視 FLEX 器件中的每一個(gè)寄存器。
進(jìn)入處理器 , 巨大的變化
這些大規(guī)模 FPGA 最需要的一種 IP 模塊是某類微處理器內(nèi)核。對(duì)于 ASIC 設(shè)計(jì),一般都能夠以硬核網(wǎng)表和 RTL 的形式提供 CPU 內(nèi)核 IP 。但是,對(duì)于 FPGA 而言, CPU 卻是一種挑戰(zhàn)。算術(shù)單元和多端口寄存器文件等對(duì)于 CPU 內(nèi)核非常關(guān)鍵的結(jié)構(gòu)無法適配到 FPGA 硬件中。很難在 CPU 內(nèi)核的關(guān)鍵通路上實(shí)現(xiàn)時(shí)序收斂。
因此 , 在 2000 年 , Altera 推出了 Nios? , 這一微處理器內(nèi)核是由 FPGA 設(shè)計(jì)團(tuán)隊(duì)開發(fā)的 , 在 FLEX 器件中實(shí)現(xiàn)。與基于單元的 ASIC 內(nèi)核不同,這一 16 位 RISC Nios 處理器非常小,而且很快 —— 在 FPGA 架構(gòu)中,對(duì)于 CPU 而言, 50 MHz 已經(jīng)非常快了,比較容易實(shí)現(xiàn)。內(nèi)核周圍很快出現(xiàn)了總線接口、外設(shè)和軟件等輔助支持系統(tǒng)。
然而 , 在 2000 年中期 , 停止了發(fā)展。互聯(lián)網(wǎng)泡沫 , 不僅將股票價(jià)格推高到荒謬的地步 , 而且虛構(gòu)出巨大的互聯(lián)網(wǎng)容量 , 導(dǎo)致災(zāi)難性的崩潰 , 隨著泡沫的破滅 , 半導(dǎo)體的需求急劇下降。泡沫使得網(wǎng)絡(luò)設(shè)備供應(yīng)商成為 FPGA 的主要用戶,因此, FPGA 公司受到的傷害最大。隨著金融的緊縮, FPGA 供應(yīng)商更積極的追求網(wǎng)絡(luò)之外的應(yīng)用。
2001 年 , 泡沫還沒有退去的時(shí)候 , Altera 選擇在嵌入式系統(tǒng)大會(huì)上發(fā)布一款新器件 ,它注定成為泡沫退去后的“ 報(bào)春花 ”,這 要比一款長(zhǎng)壽命產(chǎn)品更有意義。 Excalibur? 處理器統(tǒng)一了 APEX? 器件系列 FPGA 架構(gòu) —— 這是 FLEX 器件體系結(jié)構(gòu)的發(fā)展,具有運(yùn)行速度高達(dá) 200 MHz 基于單元的 ARM922 CPU 內(nèi)核。器件的推出表明 FPGA 嘗試轉(zhuǎn)向嵌入式應(yīng)用,在把關(guān)鍵 IP 模塊嵌入到 FPGA 硬件的實(shí)踐中邁出了一大步。
IP 中的發(fā)展趨勢(shì)
隨著 FPGA 的發(fā)展 , IP 重用更切實(shí)可行 , 出現(xiàn)了更多的新趨勢(shì)。毫無疑問,設(shè)計(jì)團(tuán)隊(duì)希望能夠有置入到設(shè)計(jì)中的處理器內(nèi)核。而且,他們希望內(nèi)核支持業(yè)界標(biāo)準(zhǔn)接口。而新需求也體現(xiàn)在這些方面。
例如 , 從需要高帶寬的通信行業(yè)開始 , 系統(tǒng)設(shè)計(jì)人員不再采用具有分立時(shí)鐘的并行接口 , 而是采用高速自有時(shí)鐘串行 I/O 。電路板上芯片之間的信號(hào)類似來自硬盤讀放大器或者衛(wèi)星接收機(jī)的信號(hào)。這些芯片中的收發(fā)器電路具有相對(duì)復(fù)雜的混合信號(hào)模塊,速度通常高達(dá) Gigahertz 。請(qǐng)參考 圖 4。
這些收發(fā)器完成專門的設(shè)計(jì)任務(wù) —— 超出了大部分 FPGA 用戶的專業(yè)知識(shí) , 不適合在可編程邏輯中實(shí)現(xiàn)。對(duì)此 , 在 2001 年 , Altera 發(fā)布 Mercury? 器件系列 FPGA , 它具有內(nèi)置為硬核 IP 的 1.25 Gbps 收發(fā)器。模塊包括 1.25 GHz 模擬驅(qū)動(dòng)器和接收器,以及混合信號(hào)時(shí)鐘數(shù)據(jù)恢復(fù)電路,從接收波形中重建最初的數(shù)據(jù)。
在信號(hào)處理領(lǐng)域也出現(xiàn)了相似的過程, 包括無線通信和軍事應(yīng)用。對(duì)于這些設(shè)計(jì)中最關(guān)鍵的構(gòu)建模塊 —— 乘法累加器,采用可編程邏輯很難實(shí)現(xiàn)它們。從 Mercury 器件的專用 8x8 乘法器子模塊開始, Altera 于 2002 年推出 Stratix? 器件體系結(jié)構(gòu),轉(zhuǎn)向了嵌入式全數(shù)字信號(hào)處理 (DSP) 構(gòu)建模塊。
圖4.Mercury器件采用了時(shí)鐘恢復(fù)電路實(shí)現(xiàn)高速串行互聯(lián)
不斷發(fā)展的方法
FPGA 容量在不斷增長(zhǎng) , 它們包含越來越多的硬核 IP 模塊 , 例如 , PLL 、調(diào)試控制器、串行收發(fā)器 , 以及某些應(yīng)用中的 CPU 內(nèi)核等。用戶將以前設(shè)計(jì)好的 IP 模塊連接起來,逐步開發(fā)自己的設(shè)計(jì)。某些設(shè)計(jì)是專用加速器,通常用于數(shù)據(jù)包處理或者信號(hào)處理,實(shí)現(xiàn)一條功能強(qiáng)大的流水線。而現(xiàn)在還出現(xiàn)了另一體系結(jié)構(gòu):圍 繞 CPU 內(nèi)核展開設(shè)計(jì),從 CPU 伸出的系統(tǒng)總線成為主干,其他模塊都掛在這一總線上。
這一設(shè)計(jì)方法強(qiáng)調(diào)了 IP的選擇和驗(yàn)證 , 進(jìn)行正確的連接 , 在 Verilog 中建立新的子系統(tǒng)。 Altera 再次積極響應(yīng),創(chuàng)新實(shí)現(xiàn)了SOPC Builder 。這一工具具有交互式的導(dǎo)航用戶界面,用于在 FPGA 上開發(fā)基于 CPU 的系統(tǒng)。用戶標(biāo)明把哪些模塊裝配到哪里,由工具生成所需要的 RTL 。
不斷的發(fā)展變化促進(jìn)了革命。 PLD 從膠合邏輯和總線接口組件發(fā)展到包含了數(shù)據(jù)包處理、信號(hào)處理功能和基于 CPU 的子系統(tǒng)。具有足夠的邏輯容量、合適的 IP 以及相應(yīng)的工具, FPGA 已經(jīng)從子系統(tǒng)的角色成為系統(tǒng)的核心。
第三個(gè)十年:FPGA成為SoC#e#
第三個(gè)十年:FPGA成為SoC
2003 年,互聯(lián)網(wǎng)泡沫破滅的時(shí)候,Altera開始了他的第三個(gè)十年。這是大結(jié)局的一年:哥倫比亞號(hào)航天飛機(jī)悲劇謝幕,先驅(qū)者10號(hào)失去聯(lián)絡(luò),最后一臺(tái)大眾甲殼 蟲駛出裝配線。但這也是開始的一年:伊拉克戰(zhàn)爭(zhēng),美國股市大牛市的開始,私人開發(fā)的SpaceShipOne第一次超音速飛行,中國第一次載人航天。
在系統(tǒng)設(shè)計(jì)領(lǐng)域,F(xiàn)PGA悄然向下一階段發(fā)展。使用最先進(jìn)的CMOS技術(shù),F(xiàn)PGA的邏輯密度和速度足以在一個(gè)芯片中實(shí)現(xiàn)CPU內(nèi)核及其外設(shè)。 Altera發(fā)布了Nios,這一RISC CPU內(nèi)核針對(duì)FPGA進(jìn)行了優(yōu)化,合作伙伴也開發(fā)了在FPGA中實(shí)現(xiàn)的其他流行CPU內(nèi)核。Avalon是一種多主機(jī)總線體系結(jié)構(gòu),適用于CPU和芯片 系統(tǒng)之間的可編程邏輯規(guī)范互聯(lián)。市場(chǎng)上還出現(xiàn)了SoPC Builder,這款工具可以自動(dòng)的在基于FPGA的SoC中裝入知識(shí)產(chǎn)權(quán)(IP)。
這些底層工作導(dǎo)致人們對(duì)可編程邏輯進(jìn)行全新的思考。設(shè)計(jì)人員會(huì)繼續(xù)在CPLD中開發(fā)膠合邏輯。對(duì)高性能有要求的設(shè)計(jì)人員會(huì)繼續(xù)在數(shù)據(jù)包交換、信號(hào)處理和相關(guān)應(yīng)用中實(shí)現(xiàn)更快、功能更強(qiáng)大的加速器和子系統(tǒng)。而此外,在Altera的第三個(gè)十年,F(xiàn)PGA作為芯片系統(tǒng)冉冉升起。
以CPU為中心的時(shí)期
即使在這十年中,SoC也趨向于采用簡(jiǎn)單模式,以它們所替代的電路板級(jí)計(jì)算機(jī)為基礎(chǔ)。一片SoC通常包括一個(gè)CPU內(nèi)核,一個(gè)本地高速緩存或者緊耦合SRAM,一個(gè)DRAM控制器,一條片內(nèi)微處理器總線,以及應(yīng)用程序所需要的外設(shè)控制器等(圖1)。這類應(yīng)用會(huì)包括DMA控制器或者應(yīng)用加速器,適用于經(jīng)常性的繁雜任務(wù),例如,數(shù)據(jù)傳送、加密計(jì)算,或者快速傅里葉變換(FFT)等。
圖1.一個(gè)典型的以CPU為中心的Soc設(shè)計(jì)
在FPGA中實(shí)現(xiàn)SoC有很大的優(yōu)點(diǎn)。設(shè)計(jì)人員可以只選擇CPU內(nèi)核中需要的硬件模塊。數(shù)字加速器可以使用Altera FPGA中的高速數(shù)字信號(hào)處理(DSP)模塊,其算術(shù)性能要遠(yuǎn)遠(yuǎn)高于微處理器和DSP芯片組合所能達(dá)到的水平。設(shè)計(jì)人員還可以使用嵌入在FPGA架構(gòu)中的 可編程邏輯、DSP模塊以及RAM模塊實(shí)現(xiàn)定制加速器??梢园堰@些加速器設(shè)計(jì)用作微處理器總線單元,或者獨(dú)立直通處理器,開發(fā)與微處理器控制平面相獨(dú)立的 數(shù)據(jù)平面。
據(jù)Altera產(chǎn)品規(guī)劃經(jīng)理Bernhard Friebe,提高集成度的一個(gè)重要優(yōu)點(diǎn)是能效。FPGA中的RAM和DSP模塊等硬件功能的能效不會(huì)低于等價(jià)的ASIC或者貨架功能產(chǎn)品的能效。在可編 程邏輯中實(shí)現(xiàn)的功能的功耗通常要比等價(jià)的標(biāo)準(zhǔn)產(chǎn)品高,但并不總是這樣。但是,在這一時(shí)期,很多系統(tǒng)的主要能耗來自I/O。數(shù)據(jù)通過FPGA架構(gòu)傳送不但非 ???,而且效率要遠(yuǎn)遠(yuǎn)高于通過芯片邊界進(jìn)行傳送。通過限制FPGA內(nèi)部寬帶數(shù)據(jù)傳送,系統(tǒng)設(shè)計(jì)人員能夠有效的降低系統(tǒng)級(jí)能耗。
由于已經(jīng)有了硬件和IP來支持以CPU為中心的SoC,因此,Altera的重點(diǎn)放在了工具流程上。很顯然,SoC開發(fā)人員的工具需求與傳統(tǒng)邏輯設(shè) 計(jì)人員的完全不同。傳統(tǒng)上,接口或者數(shù)據(jù)通路組件設(shè)計(jì)人員會(huì)以VHDL或者Verilog的形式詳細(xì)的表達(dá)他們的設(shè)計(jì),然后,每一個(gè)單元要通過邏輯驗(yàn)證、 映射至FPGA資源以及時(shí)序收斂等步驟。
而SoC設(shè)計(jì)人員更關(guān)注抽象級(jí)。硬件足夠快,片內(nèi)RAM容量足夠大?總線和存儲(chǔ)器帶寬夠用嗎?總線接口能夠互聯(lián)嗎?由于能夠充分重新使用IP,因 此,設(shè)計(jì)投入的重點(diǎn)由全部SoC邏輯轉(zhuǎn)向編寫軟件,利用已有IP開發(fā)一個(gè)或者兩個(gè)新模塊,將其置入到設(shè)計(jì)中。換句話說,SoC開發(fā)人員就像系統(tǒng)設(shè)計(jì)人員那 樣進(jìn)行思考,而不像芯片設(shè)計(jì)人員那樣。
這樣帶來的一個(gè)結(jié)果就是Altera于2005年首次推出的漸進(jìn)式編譯功能。設(shè)計(jì)投入一般是集中在SoC的一個(gè)或者兩個(gè)模塊上,而硬件大部分工作保 持不變。Altera的漸進(jìn)式編譯特性支持設(shè)計(jì)人員對(duì)設(shè)計(jì)中的一部分重新進(jìn)行設(shè)計(jì),一般是固定位置和引腳約束,不需要通過工具鏈重新運(yùn)行整個(gè)設(shè)計(jì)。這不僅 節(jié)省了編譯時(shí)間,而且降低了已經(jīng)設(shè)計(jì)好的硬件部分受到干擾的風(fēng)險(xiǎn)。
SoC設(shè)計(jì)還導(dǎo)致偏向使用FPGA I/O引腳。作為總線橋接或者加速器,F(xiàn)PGA會(huì)有突發(fā)或者流形式的數(shù)據(jù)流過芯片,一般是從一條標(biāo)準(zhǔn)總線到另一條總線。一般而言,只有較少的時(shí)鐘域,大部分是由總線定義的。
以CPU為中心的SoC帶來了新需求。通常會(huì)有標(biāo)準(zhǔn)外部總線,例如,PCI或者USB。而現(xiàn)在,F(xiàn)PGA會(huì)最先使用總線,而不僅僅是總線上的一個(gè)用 戶。當(dāng)然還會(huì)有DRAM端口,使得FPGA面臨如何使用DDR SDRAM接口技術(shù)的難題。在片內(nèi)外設(shè)控制器和外部器件之間還會(huì)有很多串行或者并行連接。這種多樣性意味著更多的引腳,I/O上更多的信號(hào)和更大的電壓變 化,以及更多的時(shí)鐘域。這些變化反映在越來越復(fù)雜的FPGA I/O單元和時(shí)鐘網(wǎng)絡(luò)上。
內(nèi)核和多核
半導(dǎo)體工藝一直在不斷改進(jìn),晶體管密度也越來越高。但是在Altera的第三個(gè)十年中,越來越難以進(jìn)一步提高電路速度了。相應(yīng)的,CPU生產(chǎn)商關(guān)注 的重點(diǎn)從提高時(shí)鐘頻率轉(zhuǎn)向兩個(gè)、四個(gè)甚至管芯上更多的CPU內(nèi)核——多核體系結(jié)構(gòu)。SoC設(shè)計(jì)人員在ASIC設(shè)計(jì)和FPGA設(shè)計(jì)上都緊隨其后。
多核思路體現(xiàn)在FPGA使用上有兩個(gè)明顯的方向。一個(gè)思路就是簡(jiǎn)單的復(fù)制CPU內(nèi)核。這相對(duì)比較容易將多個(gè)處理器內(nèi)核編譯到FPGA中。但是將其連 接起來就不那么容易了。這里,可編程邏輯提供了豐富的資源,設(shè)計(jì)人員幾乎可以實(shí)現(xiàn)從陣列到緊耦合內(nèi)核,直至共享L2高速緩存體系結(jié)構(gòu)的所有一切,設(shè)計(jì)實(shí)現(xiàn) 多主機(jī)Avalon?總線上的獨(dú)立CPU。
多核的另一個(gè)思路采用了不同的方法:異構(gòu)系統(tǒng)。實(shí)現(xiàn)一個(gè)CPU內(nèi)核例化的同一總線、IP和工具支持同時(shí)實(shí)現(xiàn)CPU內(nèi)核和多個(gè)對(duì)等的加速器 (圖2)。這也導(dǎo)致完全不同的多核設(shè)計(jì)思路:以軟件為中心的方法。
圖2.一個(gè)異構(gòu)多核SoC設(shè)計(jì)
設(shè)計(jì)同構(gòu)多核系統(tǒng)非常直觀,極其簡(jiǎn)單。您需要知道比單個(gè)CPU速度快多少倍。使用更多的CPU,多出一個(gè)或者兩個(gè)也有可能降低效率。根據(jù)您期望的線 程之間共享的存儲(chǔ)器等級(jí),選擇互聯(lián)體系結(jié)構(gòu)。在CPU之間劃分軟件線程,仿真系統(tǒng),并重復(fù)直至符合規(guī)范要求。這一過程一直是以硬件為中心的,選擇一種體系 結(jié)構(gòu),實(shí)現(xiàn)它,然后,劃分代碼,適配到硬件中。
但是,能夠建立自己的加速器則創(chuàng)立了全新的方法。它是這樣工作的。分析您的代碼,找到熱點(diǎn)。對(duì)于最難處理的代碼部分,建立定制加速器,這節(jié)省了 CPU周期,降低了能耗。仿真系統(tǒng),然后再分析步驟,并重復(fù),直到性能滿足要求。這一方法從一個(gè)CPU內(nèi)核上的工作軟件開始,產(chǎn)生定制滿足實(shí)際系統(tǒng)軟件要 求的多個(gè)硬件加速器。系統(tǒng)第一次反映了軟件需求,而不是強(qiáng)制軟件符合要求。
2006年,Altera推出了兩項(xiàng)創(chuàng)新,支持這種異構(gòu)多核設(shè)計(jì)風(fēng)格。一項(xiàng)是編譯器,將一組可執(zhí)行ANSI C代碼轉(zhuǎn)換成加速器,針對(duì)Altera FPGA中的Nios? CPU內(nèi)核進(jìn)行了優(yōu)化。這種C語言至硬件加速(C2H)編譯器工具自動(dòng)完成以軟件為中心的設(shè)計(jì)中最耗時(shí)和最容易出錯(cuò)的步驟:生成加速器。
第二項(xiàng)創(chuàng)新則不太明顯。如果您對(duì)比一個(gè)快速單核處理器與時(shí)鐘速度較慢的一組等價(jià)處理器的功耗,由于高效的加速器,動(dòng)態(tài)功耗會(huì)大幅度下降。但是泄漏 ——多年來一直難以解決的問題,不論電路是否工作,都隨著晶體管數(shù)量的增加而增大。因此,對(duì)于多核設(shè)計(jì),泄漏電流對(duì)能效的影響最大。
Altera以第二項(xiàng)創(chuàng)新——可編程功耗技術(shù)來解決這一問題。硬件和軟件工具相結(jié)合,對(duì)于時(shí)序不關(guān)鍵的通路,選擇慢速低泄漏電路,減小了FPGA中的泄漏電流,同時(shí)實(shí)現(xiàn)了時(shí)序收斂。結(jié)果是,不管深亞微米工藝的泄漏有多大,都滿足了異構(gòu)多核設(shè)計(jì)的能耗要求。
一致性和增強(qiáng)
最后階段標(biāo)志著Altera第三個(gè)十年的結(jié)束:IP選擇的一致性。逐漸的,系統(tǒng)設(shè)計(jì)領(lǐng)域更加關(guān)注最棘手問題的特殊解決方案。特別是,嵌入式系統(tǒng)開發(fā) 人員幾乎都采用了C語言,嵌入式計(jì)算普遍采用ARM?內(nèi)核,一些接口標(biāo)準(zhǔn)開始成為某些應(yīng)用的主要標(biāo)準(zhǔn),例如,高速系統(tǒng)總線、背板鏈接和芯片間互聯(lián)等。由 此,Altera開發(fā)創(chuàng)新技術(shù)來支持這些解決方案。
一個(gè)例子是,編程人員表達(dá)并行代碼的方式。C語言雖然能夠很好的定義順序執(zhí)行的程序,但是無法表達(dá)熟練的編程人員使用的并行處理方法。但是,名為 OpenCL?的C衍生語言可以。2011年,Altera推出了一組工具,支持編程人員采用越來越流行的OpenCL編寫并行算法,將其翻譯成FPGA 中的并行硬件以及傳統(tǒng)CPU中的控制代碼,這不需要專門的FPGA設(shè)計(jì)知識(shí)。
多核SoC越來越一致的使用ARM Cortex?-A類CPU內(nèi)核帶來了第二項(xiàng)創(chuàng)新。只要每一個(gè)設(shè)計(jì)團(tuán)隊(duì)希望有不同的CPU,F(xiàn)PGA供應(yīng)商就要滿足這些需求,在可編程邏輯中實(shí)現(xiàn)軟核。但是這種靈活性有其成本:占用邏輯單元、高功耗和低速。
Altera則采用了別的方法:在越來越多的嵌入式和無線應(yīng)用中使用Cortex-A9。2012年,公司開始推出具有管芯硬核處理器子系統(tǒng)的 FPGA樣片:雙核Cortex-A9群,有自己的高速緩存、本地RAM、經(jīng)過優(yōu)化的存儲(chǔ)器控制器,以及部分外設(shè)控制器,這些都在ASIC類型基于單元的 硬件中實(shí)現(xiàn)。芯片設(shè)計(jì)人員非常小心的優(yōu)化子系統(tǒng)和可編程邏輯架構(gòu)之間的互聯(lián),以實(shí)現(xiàn)異構(gòu)多核系統(tǒng)。
這種多核處理器系統(tǒng)和FPGA之間不斷的融合帶來了另一項(xiàng)更關(guān)鍵的創(chuàng)新。2013年,Altera發(fā)布其下一代高端FPGA不僅由傳統(tǒng)的代工線合作 伙伴制造,而且還由Intel公司制造,使用了14 nm三柵極工藝,這源自Intel自己的CPU和SoC。從ASIC定位的代工線市場(chǎng)轉(zhuǎn)向擅長(zhǎng)CPU的代工線,Altera FPGA獨(dú)辟蹊徑來解決功耗和性能問題,優(yōu)化半導(dǎo)體工藝特性,而不是優(yōu)化滿足ASIC代工線要面對(duì)的各種市場(chǎng)需求,這對(duì)于工藝單元、本地RAM和高速互聯(lián) 都非常關(guān)鍵。
Altera相信,這種選擇的結(jié)果是打破FPGA業(yè)界多年以來所習(xí)慣的性能和能耗模式。這是新十年最好的開始。
Altera技術(shù)發(fā)展里程碑
Altera由Robert Hartmann、Michael Magranet、Paul Newhagen和Jim Sansbury于1983年創(chuàng)立,這些有遠(yuǎn)見的人們對(duì)當(dāng)時(shí)的研究進(jìn)行投資,認(rèn)為半導(dǎo)體客戶將從用戶可編程標(biāo)準(zhǔn)產(chǎn)品中受益,逐步取代邏輯門陣列。為滿足這 些市場(chǎng)需求,Altera的創(chuàng)始人發(fā)明了首款可編程邏輯器件(PLD)——EP300,開創(chuàng)了半導(dǎo)體業(yè)界全新的市場(chǎng)領(lǐng)域。這一靈活的新解決方案在市場(chǎng)上打 敗了傳統(tǒng)的標(biāo)準(zhǔn)產(chǎn)品,為Altera帶來了半導(dǎo)體創(chuàng)新領(lǐng)先企業(yè)的盛譽(yù)。




?
?
評(píng)論