SoC的定義多種多樣,由于其內涵豐富、應用范圍廣,很難給出準確定義。一般說來, SoC稱為系統級芯片,也有稱片上系統,意指它是一個產品,是一個有專用目標的集成電路,其中包含完整系統并有嵌入軟件的全部內容。同時它又是一種技術,用以實現從確定系統功能開始,到軟/硬件劃分,并完成設計的整個過程。
soc定義
SOC,或者SoC,是一個縮寫,包括的意思有:
1)SoC:System on Chip的縮寫,稱為芯片級系統,也有稱片上系統,意指它是一個產品,是一個有專用目標的集成電路,其中包含完整系統并有嵌入軟件的全部內容。
2)SOC: Security Operations Center的縮寫,屬于信息安全領域的安全運行中心。
3)民航SOC:System Operations Center的縮寫,指民航領域的指揮控制系統。
4)一個是Service-Oriented Computing,“面向服務的計算”
5)SOC(Signal Operation Control) 中文名為信號操作控制器,它不是創造概念的發明,而是針對工業自動化現狀提出的一種融合性產品。它采用的技術是正在工業現場大量使用的成熟技術,但又不是對現有技術的簡單堆砌,是對眾多實用技術進行封裝、接口、集成,形成全新的一體化的控制器,可由一個控制器就可以完成作業,稱為SOC。
6)SOC(start-of-conversion ),啟動轉換。
7)short-open calibration 短開路校準。
SOC器件的功耗分析
低功耗研究都從分析功耗的來源入手,主要立足于晶體管級,CMOS功耗可分為三部分,一部分是電路在對負載電容充電放電引起的動態功耗,另一部分是由CMOS晶體管在跳變過程中的短暫時間內,P管和N管同時導通而形成電源和地之間的短路電流造成的功耗,第三部分是由漏電流引起的靜態功耗。式(1)、(2)是SoC功耗分析的經典公式:
其中f是系統的頻率;A是跳變因子,即整個電路的平均反轉比例;C是門電路的總電容;V是供電電壓;?是電平信號從開始變化到穩定的時間。
1.跳變功耗
跳變功耗是由每個門的輸出端電容充放電形成的,以反相器為例,如圖1所示,設Vin是周期為T的方波(上升和下降時間很小,忽略不計),當輸入端Vin從高電平變為低電平時,P管逐漸打開,而N管逐漸閉合,所以電源端Vdd給電容CL充電,Vout逐漸變為Vdd;當Vin從低電平變為高電平時,N管逐漸打開,而P管逐漸閉合,電容CL開始放電到地,從而形成跳變功耗。
一個周期包含兩個跳變。輸出端從0變為1時,電源端損失能量為
22/VCddL,通過P管時,能量消耗于阻性通路,以熱量形式釋放;當輸出端從1變為0時,存儲在電容LC上的22/VCddL通過N管時轉化成熱能。當考慮所有晶體管時,公式(3)就變為公式(2)中的第1項。
因此跳變功耗主要研究器件工藝的工作電壓如何降低,單元器件負載電容如何減小,部件工作頻率如何降低,電路活動因子如何減小等。
2.短路功耗
短路功耗也叫直通功耗。如圖2所示,Vin在高、低電平間不斷變化的過程中,當VTn 《 Vin 《 Vdd-|VTp| 時(VTn為N型管導通電壓值,VTp位P型管導通電壓值),N管和P管都導通,從而有Vdd到Ground的通路,形成短路電流。短路功耗的公式是:
其中?為電平信號從開始變化到穩定的時間,?由電路的工藝決定,ddV和tV分別表示器
件電源電壓和閾值電壓,T表示電路的跳變周期。
公式(4)是假設LC對短路電流沒有影響下推導出的,實際上當LC變大時所需要放電時間延長,如果比輸入端的上升和下降時間長得多,它就不能完全放電,故功耗也會減少。反之,LC很小,就會導致相對于輸入端的上升和下降時間太短,功耗會增大,所以半導體器件都設計成輸入和輸出端的上升和下降時間相當。
降低短路功耗主要包括如何降低器件工作電壓,如何提高晶體管導通閾值電壓,以及如何改善電路工藝等。
3.漏電功耗
漏電功耗包括由寄生反向PN結漏電和亞閾區漏電引起的功耗,其中寄生反向PN結漏電引起的功耗很小,可忽略不計,而亞閾區漏電流的公式如下:
值電壓。從公式(5)可看出,亞閾區漏電流與閾值電壓有密切關系。當閾值減小時,亞閾區漏電流會呈指數級快速增大。漏電功耗研究表明其與每個門器件的輸入向量控制相關,在0.13微米后的工藝中,漏電功耗研究重點是輸入向量控制技術。
SOC的低功耗技術
功耗基礎研究表明,功耗的降低是有限度的。首先是要限定在性能的約束范圍內,否則功耗的降低可能會導致性能的大幅度降低。SoC低功耗的設計應該從頂層到底層各個階段進行優化設計的工作,主要運用各級的低功耗策略,如工藝級低功耗技術、電路級低功耗技術、邏輯(門)級低功耗技術、RTL級(寄存器傳輸級)低功耗技術、體系結構級低功耗技術、算法級低功耗技術、系統級低功耗技術等。
1.工藝級低功耗技術
在當前工藝水平,SoC功耗主要由跳變功耗引起,而從公式(2)得知,通過降低電源供電電壓,可以減少跳變功耗,這也是為什么集成電路由原來的5V供電電壓降為3.3V,又降為后來的1.8V以及1.3V甚至更低。但降低供電電壓會面臨一些問題,因為如果閾值電壓不變,噪聲容限(noise margin)將會減小,抗干擾能力減弱,信號傳送準確性就會降低。為保持相當的噪聲容限,閾值電壓要隨供電電壓的減少而相應的減少。然而,當進入0.13微米工藝后,從公式(5)可看出,閾值電壓的減少會導致靜態功耗呈指數級增長。
因此用降低電壓的方法來降低功耗,必須用其它的方法補償相應的延遲損失,以避免系統性能下降。一個方法是通過開發系統的并行性和流水線;第二種方法:根據用戶對電路性能的不同要求,通過操作系統動態控制時鐘頻率和電源電壓,達到既保證性能要求,又節約功耗的目的;第三種方法:根據性能的要求,實時改變供電電壓,在系統的關鍵路徑上,保持較高的電壓,以保證整個系統的性能,而在非關鍵路徑上,降低電壓以減少功耗。
此外,還可以通過更新工藝降低功耗,如多閾值工藝MTCMOS (Multi-Threshold VT CMOS)和變閾值工藝VTCMOS (Variable Threshold VT CMOS) 。前者在關鍵路徑上采用閾值較低的器件,而在非關鍵路徑上用高閾值器件。雖然會因此增大延遲,但由此換得漏電功耗的降低;后者采用動態改變襯底偏置電壓以改變閾值。工作期間,n型阱(N well)偏置電壓維持在Vdd,p型阱(P well) 偏置電壓維持在0;當待機或者需要低頻工作時,N well偏置電壓維持在2Vdd,P well 偏置電壓維持在1Vdd,這樣也可以通過高閾值達到減少漏電功耗的目的。工藝的進步,會使晶體管長寬尺寸持續減少,互連線長度減小,電容減小,從而大大有助于降低SoC功耗。
2.電路級低功耗技術
SoC中總線的數據線和地址線一般都比較多,比較長,每條線都需要驅動負載,通常占總功耗的15~20%,有的甚至70%以上[3],因而總線低功耗技術是我們關注的焦點之一。
減擺幅是目前比較成熟的技術,其原理是當輸出端的輸出電壓的高電平是Vswing時,跳變功耗部分就是:
因此降低Vswing 可以達到降低功耗的目的,利用Domino邏輯電路已經可以解決這個問題。
電荷再循環總線結構(Charge Recycling Bus)是另外一種降低總線功耗的技術,它把整個電勢差分成幾等分,利用總線各數據位電容上存儲的電荷電勢的變化來傳輸數據,本質上也是利用了減擺幅技術。試驗證明,其功耗可以是傳統技術的10%。
3.門級低功耗技術
SoC在深亞微米時代,主要通過低電壓實現低功耗技術,互補CMOS在許多方面都占有很大的優勢,并且各EDA廠商也提供很完善的支持,因此在多數情況下,都選擇互補CMOS。傳輸門在很有限的范圍內有其優越性,如全加電路(Full Adder)在高電源電壓時功耗低于互補CMOS,在用CPL實現乘法器時,也有很大優點。
4.寄存器傳輸級(RTL)低功耗技術
RTL低功耗技術主要從降低不希望的跳變(glitch--Spurious switch, hazards)入手,這種跳變雖然對電路的邏輯功能沒有負面的影響,但會導致跳變因子A的增加,從而導致功耗的增加。
降低glitch的方法主要是消除其產生的條件,如延遲路徑平衡、用時鐘信號同步減少glitch、結構重構等。減少延遲不平衡的延遲路徑的級數,可以極大地降低glitch。例如16位乘法器,如果采用每位進位運算算法,則最大延遲要用15拍,最少延遲是1拍,因而可能會產生大量的glitch,但如果用Wallace tree體系結構乘法器,可以有效平衡延遲路徑級數,從而有效減少glitch。
在電路中插入由時鐘信號控制的觸發器將待傳遞的信號同步[8],可以將觸發器前面的glitch阻隔在觸發器處,避免其層層傳遞導致glitch爆炸。但此時需要權衡引入時鐘樹和觸發器增加的功耗和面積與得到的改善相比是否值得。
結構重構是利用在電路中插入緩沖(buffer)的方法來消除因路徑延遲不同而引起的glitch。這種方法一方面需要精確得到器件和連線的延遲數值,在物理設計完成之前很難做到,另一方面,對工藝偏差很敏感,路徑平衡的效果很容易偏離設計期望;還有一種較好的方法是電路中加入冗余電路,可以有效降低glitch,。加入冗余電路可以完全消除glitch對輸出的影響,而且不改變原電路實現的功能,不過,冗余電路本身會增加一定的功耗。
5.系統級LP技術
系統級低功耗技術主要有門控技術,異步電路等。
門控時鐘技術可以說是當前最有效的低功耗技術。如果沒有門控時鐘技術,相同的值在每個時鐘周期上升沿到來時都會被重復加載進后面的寄存器中,這就使后面的寄存器、時鐘網絡和多選器產生不必要的功耗。在寄存器槽、時鐘網絡插入門控電路就可以控制和消除這些不必要的寄存器活動,大幅度降低功耗。
同步電路中的時鐘樹要消耗大量能量,例如國產通用CPU龍芯1號和龍芯2號的時鐘樹功耗分別占整個芯片功耗的30%和60%,雖然可采用門控時鐘技術緩解,但仍不能從本質上解決問題。由于時鐘頻率需滿足所有模塊的正常工作,因此低速模塊存在速度浪費。而異步電路的工作模式是“事件驅動”,電路只在需要時工作,因此消除了速度浪費,由于不需同步,沒有全局時鐘,因此也消除了全局時鐘樹功耗。
6.零翻轉編碼地址總線技術
SoC內部,總線上掛著很多功能設備,導致總線的電容負載很大。如果總線與片外設備聯系,那么,它還要驅動很長的片外連線以及片外設備,負載高達50pF,比SoC內部各個節點的電容負載0.05pF高出三個量級。一般而言,總線的功耗占SoC總功耗的10%~80%;一個已經對內部電路優化過的SoC,總線功耗約占50%。隨著寬度的增加,總線消耗的功率占SoC總功率的比重越來越大,因此,總線的低功耗設計很重要。
很多通過減少總線動態翻轉來降低總線功耗的算法已經被提出來。數據總線的數據隨機性較大,地址總線的地址向量連續性較大。它們傳送的數值各有特點,所以,針對不同類型總線的算法也不一樣。針對數據總線有bus-invert算法,針對地址總線有PBE(Page-Based Encoding)算法、WZE(Working Zone Encoding)算法等。
總線寬度為N,t時刻,總線需發送的數據為Bt。如果Bt與Bt-1相等,則時刻總線狀態完全不變;如果Bt與Bt-1不相等,則t時刻,總線就會發生電平翻轉。Bt與 Bt-1不同的比特位數目(0≤N)越大,總線電平翻轉的位數就越多,功耗就越大。當Bt與Bt-1互為反碼,則總線每一位都要翻轉,此時總線翻轉的功耗最大。
零翻轉編碼法利用降低總線的電平翻轉次數,來降低總線功耗。定義bt為內核MCU計算出來的t時刻總線數據(即編碼前的數據),Bt是t時刻已放到總線上的數據(即編碼后的數據),Jt是解碼器解碼后的數據。
總線連續取址時,相鄰兩次地址的差是相等的,定義為Stride。一般的ROM尋址Stride=1;對Cache尋址時,Stride根據Cache的尋址特性而定。如果Cache尋址步長是一個word,則Stride=2。編碼需要一個額外的狀態信號INC。 零翻轉編碼的算法步驟如下:
計算bt-1+Stride,比較bt與bt-1+ Stride;
如果bt=bt-1+Stride,表明是連續尋址,那么Bt=Bt-1,置INC=1; 如果bt≠bt-1+Stride,表明是不連續尋址,那么Bt=bt,置INC=0; ④ 接收端解碼器根據INC來處理收到的總線數據。 零翻轉解碼的算法步驟如下: 計算Jt-1+Stride;
如果INC=1,表明是連續尋址,那么Jt=Jt-1+stride; 如果INC=0,表明是不連續尋址,那么Jt=Bt。
中斷和跳轉子程序的多少,會影響功耗的降低。中斷和跳轉越少,地址向量連續性越高,零翻轉編碼后總線電平翻轉越少,節省的功耗就越大。當地址總線一直連續尋址時,零翻轉法理論上可以達到地址總線的零翻轉,并且,Stride變量可以根據尋址對象的不同而設置成對應的數值。
零翻轉編解碼器電路結構:
編碼器組成如圖3左半部分。D1寄存bt-1,加法器將bt-1與Stride相加。比較器EQ比較bt和bt-1+Stride,輸出INC。選擇器MUX的兩組輸入是bt和Bt-1。
編碼器是組合邏輯,不可避免的有毛刺。毛刺雖然時間很短,但依然會增加總線功耗,因此,利用D2、D3觸發器來同步,過濾掉所有的毛刺。
解碼器結構如圖3右半部分,在接收設備Memory控制邏輯中實現。寄存器D存儲Jt-1,MUX的兩組輸入是(bt-1+Stride)和Bt。它的結構比編碼器簡單得多。相對整個SoC而言,編碼器和解碼器的電路規模很小,帶來的額外硬件面積和功耗也很小
圖3.零翻轉編碼器和譯碼器
SoC低功耗設計技術遠不止上述所述的各種方法,從上面的各種降低功耗的方法可以看出,SoC系統的功耗優化涉及到從物理實現到系統實現的方方面面,是芯片設計中一個十足的系統工程。目前,低功耗在學術界已經是一個很熱門的研究領域,許多的科研工作者正在研究各種各樣的解決方案。
評論