胡健
摘要:CPU(中央處理器)廣泛應(yīng)用于計(jì)算機(jī)工程領(lǐng)域。該文主要論述了CPU的性能,主要包括超長指令字處理器、超標(biāo)量、處理器體系結(jié)構(gòu)、優(yōu)于最壞情況設(shè)計(jì),分析了其發(fā)展方向。
關(guān)鍵詞:微處理器;超長指令字;超標(biāo)量
中圖分類號(hào):TP31 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)04-0847-03
1 概述
中央處理單元(CPU)是嵌入式系統(tǒng)的心臟,無論我們使用一個(gè)CPU或者用多個(gè)CPU組合來組成一個(gè)微處理器,指令集系統(tǒng)都能提供高效性和通用性,完成功能強(qiáng)大的嵌入式計(jì)算。下面主要從CPU的一些性能來進(jìn)行說明。
2 CPU的并行執(zhí)行機(jī)制
在這一節(jié)中,我們來看處理器進(jìn)行并行操作的幾種方法。這里將介紹超長指令字和超標(biāo)量處理、子字并行、向量處理以及線程級(jí)并行。
2.1 超長指令字處理器
超長指令字(VLIW)體系結(jié)構(gòu)起源于通用處理器,但在嵌入式系統(tǒng)中已經(jīng)得到了廣泛應(yīng)用。VLIW體系結(jié)構(gòu)提供了硬件開銷相對(duì)較低的指令級(jí)并行。
圖1展示了一個(gè)簡化的VLIW處理器來介紹這項(xiàng)技術(shù)的基本原理。執(zhí)行單元包括一個(gè)功能單元池,連接到一個(gè)大的寄存器堆。對(duì)于VLIW,我們可以說執(zhí)行單元讀入一個(gè)指令包—包中的每條指令可以控制機(jī)器中的一個(gè)功能單元。在一個(gè)理想的VLIW機(jī)器中,指令包中所有的指令同時(shí)被執(zhí)行。在現(xiàn)代機(jī)器中,執(zhí)行完包中所有的指令可能需要若干個(gè)周期。與超標(biāo)量處理器不同,指令執(zhí)行的順序是由代碼的結(jié)構(gòu)和指令如何組成包決定的。在當(dāng)前指令包中所有的指令執(zhí)行完之前,下一指令包中的指令不會(huì)開始執(zhí)行。
由于指令包的組織決定了指令執(zhí)行的順序,VLIW機(jī)器依靠強(qiáng)大的編譯器來辨認(rèn)并行性以及調(diào)度指令。編譯器保證資源約束和相應(yīng)的調(diào)度策略。作為補(bǔ)償,執(zhí)行單元就變得簡單一些,因?yàn)椴恍枰鲑Y源依賴性檢查。
2.2 超標(biāo)量
超標(biāo)量處理器在每個(gè)時(shí)鐘周期發(fā)射多于1條的指令。與VLIW處理器不同,超標(biāo)量處理器動(dòng)態(tài)地進(jìn)行資源沖突的檢查,來確定每一步可以發(fā)出哪些指令組合。超標(biāo)量體系結(jié)構(gòu)在桌面系統(tǒng)和服務(wù)器領(lǐng)域具有主導(dǎo)地位。在嵌入式領(lǐng)域,超標(biāo)量體系結(jié)構(gòu)不及在桌面系統(tǒng)、服務(wù)器領(lǐng)域中常用。對(duì)嵌入式系統(tǒng)來說,評(píng)價(jià)的標(biāo)準(zhǔn)更可能是每瓦特能耗所完成的操作數(shù),而不僅僅是性能。
盡管如此,還是有不少嵌入式處理器使用了超標(biāo)量指令發(fā)射,雖然其超標(biāo)量程度不及高端的服務(wù)器。嵌入式Pentium是一款按序雙發(fā)射處理器,具有兩條流水線:一條進(jìn)行任意整數(shù)運(yùn)算,另一條進(jìn)行簡單整數(shù)運(yùn)算。
2.3 SIMD與向量處理器
許多應(yīng)用展示出了數(shù)據(jù)級(jí)的并行性,使得應(yīng)用本身具有高效的計(jì)算結(jié)構(gòu)。另外,這些數(shù)據(jù)規(guī)模通常比較小。所以我們可以構(gòu)建更多的并行處理器單元來獲得更高的并行性。
一項(xiàng)關(guān)于小操作數(shù)寬度的技術(shù)叫做子字并行化(SIMD)。處理器中的ALU可以工作于正常模式,也可以分割為若干較小的ALU。一個(gè)ALU可以很容易通過將進(jìn)位鏈斷開進(jìn)行分割,使位和位之間可以獨(dú)立運(yùn)算。每個(gè)子字可以對(duì)獨(dú)立的數(shù)據(jù)進(jìn)行操作;操作通過同樣的操作碼控制。由于同樣的指令作用于若干數(shù)據(jù),這項(xiàng)技術(shù)通常被認(rèn)為是SIMD的一種。
另一種用于數(shù)據(jù)并行的技術(shù)是向量處理。向量處理已經(jīng)在科學(xué)計(jì)算領(lǐng)域應(yīng)用了幾十年,使用特殊設(shè)計(jì)的指令在向量上高效地完成求點(diǎn)積之類的運(yùn)算。向量處理并不要求小數(shù)據(jù)值,但是小的數(shù)據(jù)類型構(gòu)成的向量可以在可用的硬件上并行完成更多的操作,特別是在使用子字并行方法管理數(shù)據(jù)路徑資源的情況下。
2.4 線程級(jí)并行
處理器也可以開發(fā)線程級(jí)或者任務(wù)級(jí)的并行,線程級(jí)的并行更容易發(fā)現(xiàn),特別是在嵌入式系統(tǒng)中。相比指令級(jí)的并行,線程的行為更容易預(yù)測。
多線程體系結(jié)構(gòu)必須為每個(gè)線程提供獨(dú)立的寄存器。但是由于線程之間的切換是程式化的,控制多線程的方法相對(duì)比較直接。硬件多線程技術(shù)交替從每個(gè)單獨(dú)線程取指令。在每個(gè)周期,從一個(gè)線程取足夠多的指令,從而能夠在沒有互鎖的情況下讓流水線充滿。在下一個(gè)周期,就從另一個(gè)線程取指令。同時(shí)多線程(SMT)技術(shù)在每個(gè)周期都為多個(gè)線程取指令,而不是在線程之間交替。
3 性能可變處理器體系結(jié)構(gòu)
因?yàn)樵S多嵌入式系統(tǒng)都需要符合實(shí)時(shí)性的時(shí)間限制,因此嵌入式系統(tǒng)里所使用的單個(gè)組件的一個(gè)可以預(yù)見的執(zhí)行時(shí)間就成為它的重要評(píng)價(jià)指標(biāo)。但是,傳統(tǒng)的計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)更為關(guān)注系統(tǒng)的平均性能,而不是最壞情況的性能。從而導(dǎo)致處理器的平均性能往往很快,而最壞情況很難界定。這往往就會(huì)導(dǎo)致硬件設(shè)計(jì)(過大的高級(jí)緩存,過快的處理器)和軟件設(shè)計(jì)(簡化代碼,限制某些指令的使用)趨于保守。隨著能耗以及可靠性問題變得越來越重要,一些新技術(shù)不斷地發(fā)展,而這種發(fā)展也使得處理器的行為變得及其復(fù)雜。盡管在嵌入式處理器中引入這些技巧會(huì)使系統(tǒng)設(shè)計(jì)變得更加難以分析,但這些技巧還是慢慢地滲入到了嵌入式處理器的設(shè)計(jì)。本節(jié)介紹兩種重要的技術(shù)發(fā)展:電壓和頻率的動(dòng)態(tài)調(diào)整以及“優(yōu)于最壞情況”設(shè)計(jì)。
3.1 電壓和頻率的動(dòng)態(tài)調(diào)整
電壓和頻率的動(dòng)態(tài)調(diào)整(DVFS)是一種很流行的CPU能耗控制技術(shù),它利用了CMOS數(shù)字電路可操作范圍大的特點(diǎn)。CMOS不同于其他數(shù)字電路,它可以在一個(gè)很大的電壓伏值范圍內(nèi)工作。除此之外,CMOS電路在低電壓時(shí)具有更高的效率。
CMOS門電路的延遲基本是電源提供的電壓的線性函數(shù)。通過門電路的能耗正比于兩端操作電壓的平方
CMOS的速率電壓積(不計(jì)泄漏的部分)同樣也是E∝C(V*V)。因此,通過降低電源提供的電壓,我們可以使能耗以(V*V)的速率下降,而性能僅僅以V的速率下降。
圖2給出了一種DVFS結(jié)構(gòu),時(shí)鐘和電源由一組可以提供一定范圍的值的電路來給出;這些電路主要是在離散點(diǎn)進(jìn)行操作,而不是針對(duì)一組連續(xù)值的。時(shí)鐘發(fā)生器和電壓發(fā)生器都由一個(gè)控制器來控制,這個(gè)控制器決定了什麼時(shí)候時(shí)鐘頻率和電壓將會(huì)發(fā)生變化以及變化多少。
結(jié)構(gòu)
DVFS控制器必須在一定的限制下進(jìn)行控制,以優(yōu)化設(shè)計(jì)的標(biāo)準(zhǔn)。這些限制與時(shí)鐘速率以及電壓值有關(guān):不僅僅是它們的最大值和最小值,這也包括時(shí)鐘頻率以及電壓值以多大速率進(jìn)行變化。這種設(shè)計(jì)的標(biāo)準(zhǔn)即可以通過給出一個(gè)能量的預(yù)計(jì)來最大化性能,也可以通過給出一個(gè)性能的限定來最小化性能。
我們可以通過硬件實(shí)現(xiàn)控制算法的編碼,但通常至少會(huì)把一部分控制算法用軟件來實(shí)現(xiàn)寄存器可以用來設(shè)置某幾個(gè)參數(shù)的值。但更一般的處理方法是用軟件實(shí)現(xiàn)整個(gè)控制算法。
3.2 “優(yōu)于最壞情況”設(shè)計(jì)
數(shù)字系統(tǒng)通常設(shè)計(jì)為由時(shí)鐘所控制的同步系統(tǒng)。設(shè)計(jì)者經(jīng)過認(rèn)真的分析來設(shè)計(jì)時(shí)鐘周期,以使得每個(gè)值可以準(zhǔn)確地存儲(chǔ)到它應(yīng)該存儲(chǔ)的寄存器,并且往往通過增加時(shí)鐘周期來涵蓋最壞情況的延遲。實(shí)際上,在許多電路中,最壞情況的延遲相對(duì)少見,因此大多數(shù)情況下,電路邏輯就會(huì)有某段時(shí)間被白白置為閑置。
“優(yōu)于最壞情況” 設(shè)計(jì)是一種替代設(shè)計(jì)方法,在這種方法中電路邏輯檢測并恢復(fù)錯(cuò)誤,它可以使電路在大部分時(shí)間里都可以以較高的速度運(yùn)行。“優(yōu)于最壞情況”設(shè)計(jì)結(jié)構(gòu)的一個(gè)具體實(shí)現(xiàn)是Razor結(jié)構(gòu)。
Razor使用了一個(gè)特殊的寄存器來對(duì)錯(cuò)誤進(jìn)行度量和評(píng)估,系統(tǒng)寄存器保存著閥值,并且采用高于最壞情況的時(shí)鐘頻率來計(jì)時(shí)。另外還有一個(gè)寄存器單獨(dú)計(jì)時(shí),它的時(shí)鐘節(jié)拍比系統(tǒng)寄存器的時(shí)鐘節(jié)拍稍晚幾拍。如果這兩個(gè)寄存器中所存儲(chǔ)的值不同,這時(shí)就出現(xiàn)了一個(gè)錯(cuò)誤。這個(gè)錯(cuò)誤有可能是由于節(jié)拍控制出現(xiàn)問題造成的,通過一個(gè)異或門可以檢測到這個(gè)錯(cuò)誤,并用后出現(xiàn)的值來替換系統(tǒng)寄存器中的值
Razor微體系結(jié)構(gòu)并沒有使錯(cuò)誤操作在同一階段計(jì)算,而是在隨后的步驟里再進(jìn)行錯(cuò)誤處理操作。這就避免了由于系統(tǒng)問題而導(dǎo)致的不確定次數(shù)的重計(jì)算而造成流水線的阻塞。
4 總結(jié)
CPU是嵌入式計(jì)算的核心。CPU可根據(jù)用途來選擇,也可以根據(jù)手邊的任務(wù)需要定制。各種系統(tǒng)結(jié)構(gòu)技術(shù)可已用來優(yōu)化CPU的性能、功耗和成本;這些技術(shù)還可以通過很多方式綜合使用。還可以用很多分析和優(yōu)化技術(shù)來定制處理器,以達(dá)到一定的性能要求。
參考文獻(xiàn):
[1] 蔣本珊.電子計(jì)算機(jī)組成原理(修訂版)[M].北京:北京理工大學(xué)出版社,1999.
[2] 王愛英.計(jì)算機(jī)組成與結(jié)構(gòu)[M].2版.北京:清華大學(xué)出版社,1995.
[3] 余永廉,鐘文耀.電路學(xué)入門與進(jìn)階(下),第19章[M].全華圖書公司出版,1995.