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