隨著(zhù)130nm和90nm工藝的成熟,每平方毫米的硅片面積上可以集成大約100K~200K的邏輯門(mén),一顆面積大約50mm2的低成本芯片可以容納5M~10M邏輯門(mén)。越來(lái)越多的SoC設計者正在試圖將整個(gè)系統集成在一顆芯片上,但是他們也面臨著(zhù)嚴峻的挑戰,因為傳統的基于RTL的SoC硬件設計方法的缺點(diǎn)正日益顯現出來(lái): ● 設計能力——以前,硅片容量和自動(dòng)化設計工具的能力將一個(gè)RTL模塊的規模限制在100K左右,如今在一個(gè)硅片上即使是500K邏輯門(mén)的模塊也不會(huì )受到這些限制,但是設計方法卻沒(méi)能跟上硅片容量增長(cháng)的腳步。 ● 驗證困難——一個(gè)典型邏輯模塊的內部設計復雜度以及潛在的出錯可能性隨著(zhù)其邏輯門(mén)數的增加而迅速增大,這導致了驗證的難度不成比例的增加。許多SoC設計團隊聲稱(chēng)他們90%的工作量花在了驗證工作上。 ● 修復成本——修復SoC設計中錯誤的成本正在增加。人力成本和NRE費用都在不斷增加,與此同時(shí)利潤率及市場(chǎng)份額卻在不斷下降,這使得設計錯誤變得越來(lái)越無(wú)法忍受。因此可以減少錯誤或降低修復成本的設計方法迅速發(fā)展起來(lái)。 ● 軟硬件整合——所有的嵌入式系統中都有大量的軟件和固件程序,一般來(lái)說(shuō),整合軟件只能放在系統開(kāi)發(fā)的最后,并且往往被認為是拖累開(kāi)發(fā)進(jìn)度的罪魁禍首。 ● 標準變化與靈活性——通信協(xié)議的標準正在迅速變化中。為了充分利用有限的頻帶資源,協(xié)議設計者們提出了很多創(chuàng )新性的協(xié)議標準,如IPv6、 G.729、JPEG2000、MPEG4和AES等。這些新標準需要的計算性能比以前的標準要高得多。 指令集固定且固件可編程的通用嵌入式處理器仍然非常具有吸引力,因為它們可以處理很多任務(wù),但通常這類(lèi)處理器缺乏復雜數據處理的能力,如網(wǎng)絡(luò )應用中的包處理,視頻以及加密應用中的數據處理等。為了滿(mǎn)足類(lèi)似的性能需求,芯片設計者不得不回過(guò)頭來(lái)求助于RTL硬邏輯。隨著(zhù)設計復雜度和運算性能的不斷提高,設計的規模也在不斷增大,SoC設計人員需要有更多的資源才能完成芯片設計。同時(shí),他們還面臨著(zhù)以下兩個(gè)挑戰: ● SoC設計者如何保證芯片的規格真正符合客戶(hù)的需要。 ● SoC設計者如何保證芯片符合當初的設計規格。 在SoC設計中使用微處理器 解決上面兩個(gè)問(wèn)題的辦法是賦予SoC設計足夠的靈活性,從而使一顆芯片能夠應用于10個(gè)、100個(gè)甚至 1000個(gè)不同的系統設計,這種需求推動(dòng)了通用SoC設計的出現,從而分攤了大量芯片設計的成本。大多數的嵌入式系統都需要高速處理外部復雜的實(shí)時(shí)數據,通用微處理器需要運行在極高的頻率上才能滿(mǎn)足這些數據處理任務(wù)的要求。在個(gè)人電腦市場(chǎng)上正是如此,價(jià)值數百美元的PC處理器消耗幾十瓦的功耗來(lái)完成用戶(hù)任務(wù)。但是對于嵌入式應用來(lái)說(shuō),昂貴且耗電的芯片是沒(méi)有市場(chǎng)的,于是設計者們轉而使用RTL硬邏輯來(lái)執行高速數據處理任務(wù)。過(guò)去10年中,在邏輯綜合等 ASIC設計工具的幫助下,RTL硬邏輯得到了廣泛使用,這種方法已經(jīng)被證明能夠合理且有效的并行完成高速數據處理任務(wù),其性能可以達到通用微處理器性能的幾十甚至上百倍。與基于RTL的設計類(lèi)似,可擴展處理器技術(shù)針對特殊應用定制的高速邏輯模塊也需要使用邏輯綜合工具。不同之處在于,RTL設計中的狀態(tài)機只能通過(guò)硬件控制,而可擴展處理器中邏輯模塊的狀態(tài)則可以通過(guò)軟件控制,這就大大提高了設計的靈活性。 圖1 Xtensa可配置處理器模塊圖 可擴展處理器的優(yōu)勢 完整的可配置與可擴展處理器技術(shù)包括了處理器本身以及相應的設計工具和軟件開(kāi)發(fā)環(huán)境,從而使設計者通過(guò)改變或增減功能模塊,設計出與特定的應用需求相匹配的處理器。典型的配置方法包括對存儲器的增減修改,外部總線(xiàn)寬度及握手協(xié)議的設置以及常用的處理器外設的配置。除此之外,還可以對處理器進(jìn)行擴展——SoC設計者可以擴展處理器的功能,特別是其指令集——為基本處理器增加原設計者從未想到過(guò)的功能。配置處理器的概念是通過(guò)參數來(lái)選擇或裁剪處理器的功能,配置后的處理器可以通過(guò)多種方式硬件實(shí)現,包括耗費數周時(shí)間的ASIC方式或僅需幾分鐘的FPGA方式。擴展處理器的概念是設計人員為處理器增加原設計者從未考慮到的功能,是可配置處理器的一個(gè)超集。對于可配置與可擴展處理器來(lái)說(shuō),在提供處理器硬件實(shí)現的同時(shí),還必須能夠自動(dòng)生成相應的軟件開(kāi)發(fā)環(huán)境。沒(méi)有編譯器,匯編器,仿真器,調試器,實(shí)時(shí)操作系統以及其他軟件工具的支持,可配置與擴展處理器所提供的高性能與靈活性也就無(wú)從談起,因為只有讓軟件人員能夠方便的編程,才能將處理器的性能與靈活性發(fā)揮出來(lái)。 以Tensilica的可配置與可擴展處理器Xtensa為例,其模塊圖如圖1所示。它包括了基本指令集架構、通用寄存器文件、存儲器接口、可選的處理器外設、DSP協(xié)處理器以及集成用戶(hù)定制指令的機制。 處理器的可擴展能力可以看做可配置的高級形式,因為它的應用更為廣泛。系統設計者和應用專(zhuān)家可以直接探索應用的性能需求以及什么樣的處理器架構和指令集才能滿(mǎn)足這樣的需求。 微處理器的應用將SoC設計與板級設計區分開(kāi)來(lái) RTL硬邏輯有許多優(yōu)勢——面積小、功耗低、性能強大。但是在大規模的SoC設計中,采用 RTL硬邏輯的不利因素(設計周期長(cháng)、驗證困難、不夠靈活)正在逐漸大過(guò)其優(yōu)勢。而保留了大多數RTL硬邏輯的優(yōu)點(diǎn),又能夠縮短開(kāi)發(fā)時(shí)間并降低風(fēng)險的設計方法正在流行起來(lái),這就是針對特殊應用進(jìn)行優(yōu)化以取代復雜RTL設計的可配置處理器。 針對應用進(jìn)行優(yōu)化的處理器與相應的RTL設計擁有相近的數據通路,它在基本處理器核的流水線(xiàn)上增加額外的運算單元,新的寄存器或寄存器文件以及芯片架構師定義的其他功能模塊來(lái)實(shí)現特定的應用。 在 Xtensa處理器中,這些擴展功能是利用一種名為T(mén)IE語(yǔ)言的類(lèi)Verilog語(yǔ)言來(lái)描述的。TIE語(yǔ)言經(jīng)過(guò)優(yōu)化,適用于描述數據處理指令的功能并對其進(jìn)行編碼。用TIE語(yǔ)言來(lái)進(jìn)行描述比RTL要簡(jiǎn)潔得多,因為它去掉了所有時(shí)序邏輯,包括狀態(tài)機描述、流水線(xiàn)寄存器以及初始化順序。對于固件程序員來(lái)說(shuō),處理器中用TIE語(yǔ)言擴展的新指令和寄存器都可以通過(guò)編譯器和匯編器來(lái)進(jìn)行調用。利用處理器中取指、譯碼、執行的流水線(xiàn)機制,通過(guò)C或C++高級語(yǔ)言編程,可以由固件程序來(lái)控制處理器數據通路上的操作。用來(lái)替代RTL模塊的可擴展處理器與傳統的RTL設計在結構上大同小異:更深的流水線(xiàn)、并行的執行單元、特殊的狀態(tài)寄存器、比片內外存儲器間更寬的數據接口等。這些擴展后的處理器保留了原來(lái)RTL設計強大的運算能力和數據接口格式。 可擴展處理器對數據通路的控制機制則與RTL設計中依靠硬件狀態(tài)機切換狀態(tài)大為不同。實(shí)際上,操作的順序完全由處理器上運行的固件程序控制,如圖2所示。用跳轉指令來(lái)實(shí)現控制操作,load/store指令來(lái)實(shí)現內存操作,通用和專(zhuān)用計算指令來(lái)實(shí)現數據運算操作。 圖2 可編程的功能模塊:數據通路+處理器+軟件程序 移動(dòng)電話(huà)領(lǐng)域中的Viterbi解碼的例子可以很好地說(shuō)明可擴展處理器可以替代RTL硬邏輯。 GSM標準利用Viterbi解碼將信息從包含噪聲的信道中提取出來(lái)。解碼過(guò)程中會(huì )用到包括8次邏輯計算(4次加法、2次比較、2次選擇)的蝶形運算,從接收到的數據流中每解碼一個(gè)符號需要 8次蝶形運算。如果采用通用RISC處理器,需要50~80個(gè)指令周期完成一次Viterbi蝶形運算,即使在TI高端的超長(cháng)指令字DSP 320C64xx上,也需要1.75個(gè)周期。 圖3 Viterbi蝶形算法硬件模塊 利用TIE語(yǔ)言,設計者可以為Xtensa處理器增加一條專(zhuān)門(mén)完成Viterbi蝶形運算的指令,使用處理器的128位寬I/O總線(xiàn)一次取 8個(gè)符號數據,如圖3所示為處理器添加運算單元和地址產(chǎn)生邏輯,這樣完成一次Viterbi蝶形運算只需要0.16個(gè)周期。在未擴展的Xtensa處理器上執行Viterbi蝶形運算需要42個(gè)周期,也就是說(shuō),通過(guò)增加蝶形運算的專(zhuān)用硬件(大約11000門(mén)電路),就獲得了250倍的性能提升。 結論 如今,軟件模塊硬邏輯化的現象非常普遍。在開(kāi)發(fā)協(xié)議標準的早期,通常采用基于處理器的實(shí)現方法,一些常見(jiàn)的標準,如視頻領(lǐng)域的 MPEG2算法,3G通信領(lǐng)域的W-CDMA算法、安全加密領(lǐng)域的SSL和triple-DES算法,都是由處理器實(shí)現逐漸過(guò)渡到RTL硬邏輯實(shí)現。但是這種過(guò)渡正在被軟硬件實(shí)現方法間巨大的性能與設計難度差別所限制?膳渲门c可擴展處理器的出現帶來(lái)了一種新的設計方法,既可以方便快速的進(jìn)行芯片開(kāi)發(fā),靈活適應新的協(xié)議標準,又具有足夠小的芯片面積和功耗,從而可以進(jìn)行大規模的生產(chǎn)。 |