從體系結(jié)構(gòu)的演變看高性能微處理器的發(fā)展趨勢
從體系結(jié)構(gòu)的演變看高性能微處理器的發(fā)展趨勢
中國科學(xué)院聲學(xué)研究所數(shù)字系統(tǒng)集成實驗室 單睿
微處理器體系結(jié)構(gòu)
隨著高性能計算的需求,計算機體系結(jié)構(gòu)發(fā)生了很大變化。作為計算機核心部件的微處理器,其性能和復(fù)雜性(晶體管數(shù)、時鐘頻率和峰值)也按照摩爾定律增長。微處理器性能的改善在很大程度上歸功于體系結(jié)構(gòu)的發(fā)展和VLSI工藝的改進。體系結(jié)構(gòu)的發(fā)展主要體現(xiàn)在三個方面,即超流水、多指令發(fā)射和多指令操作。
超流水技術(shù)主要開發(fā)時間并行性。流水線技術(shù)是RISC處理器區(qū)別于CISC處理器的重要特征。采用超流水技術(shù),盡管可以減少關(guān)鍵路徑中每級流水的時間,但同時也引入了更多的寄存器,進而增加了面積開銷以及時鐘歪斜問題。另一方面,深度流水在指令相關(guān)和指令跳轉(zhuǎn)時會大大降低流水線的性能。
多指令發(fā)射和多指令操作均是開發(fā)空間并行性。多指令發(fā)射面臨的首要問題是如何保持應(yīng)用程序語義的正確性,MIMD、超標量和數(shù)據(jù)流技術(shù)是多指令發(fā)射的典型結(jié)構(gòu)。MIMD是并行計算的重要研究領(lǐng)域。超標量采用時序指令流發(fā)射技術(shù),兼容性好,硬件開銷大,功耗開銷大,是目前多數(shù)商用高端處理器采用的主流技術(shù)。數(shù)據(jù)流采用token環(huán)技術(shù),理論上可以開發(fā)出高度指令并行性。然而,其商用開發(fā)不成功,原因是運行時間開銷大,尤其是token環(huán)匹配需要很高的時間代價。
多指令操作是當(dāng)前體系結(jié)構(gòu)的重要研究方向。多指令操作包括數(shù)據(jù)并行性開發(fā)和操作并行性開發(fā)。盡管在CISC處理器中均采用過這兩種技術(shù),但CISC給體系結(jié)構(gòu)開發(fā)帶來三個負面影響:一是CISC指令不適合流水處理,二是指令差異很大造成譯碼困難,三是編譯器很難開發(fā)出有效的指令操作。與CISC處理器相反,多指令操作非常適合RISC處理器,其中SIMD和VLIW就是數(shù)據(jù)并行性和操作并行性的典型結(jié)構(gòu)。
向量處理器和SIMD處理器都是利用多個操作數(shù)來實現(xiàn)數(shù)據(jù)并行性。但二者有很大不同。向量處理器對線性向量元素順序操作,SIMD則對向量元素進行并發(fā)操作。對前者,每條指令只能作用于一個功能部件,執(zhí)行時間較長;而后者在執(zhí)行指令時可以作用于多個功能部件。向量處理器采用交叉存儲器實現(xiàn)向量的訪存操作,同時可對短向量進行有效操作,即對稀疏向量進行壓縮以獲得高性能。SIMD適合多媒體中的分組數(shù)據(jù)流,通過特定算法將長的數(shù)據(jù)流截成定長短向量序列,從而可以和向量處理器那樣實現(xiàn)對定長短向量序列的高效處理。
VLIW是實現(xiàn)操作并行性開發(fā)的重要途徑。CISC處理器采用垂直編碼技術(shù),而VLIW則采用水平編碼技術(shù),指令中的每個操作域可以并發(fā)執(zhí)行。同CISC處理器相比,VLIW具有的優(yōu)點是:指令操作域定長,譯碼簡單;適合流水處理,減少CPI;編譯器需要開發(fā)程序潛在的指令級操作并行性。傳統(tǒng)VLIW的不足是指令帶寬較高,二進制目標代碼不兼容。VLIW和SIMD結(jié)構(gòu)都能接受單一指令流,每條指令可以包含多個操作。但前者允許每條指令包含多個不同類型的操作,同時可以開發(fā)細粒度并行性。VLIW指令字較長,而SIMD具有很強的數(shù)據(jù)壓縮能力。事實上,VLIW和SIMD技術(shù)相結(jié)合可以獲得更高的性能加速比,且非常適合多媒體數(shù)據(jù)處理。
從微處理器體系結(jié)構(gòu)和編譯器界面劃分的角度上講,指令級體系結(jié)構(gòu)可以分為順序結(jié)構(gòu)、相關(guān)結(jié)構(gòu)和獨立結(jié)構(gòu)三類。在順序結(jié)構(gòu)中,程序不包含任何指令并行信息,完全通過硬件進行調(diào)度,即硬件負責(zé)操作間的相關(guān)分析、獨立操作分析和操作調(diào)度,編譯器只負責(zé)程序代碼的重組,程序中不附加任何信息。超標量是該類結(jié)構(gòu)的典型代表。在相關(guān)結(jié)構(gòu)中,程序顯式指定操作的相關(guān)信息,即編譯器負責(zé)操作間的相關(guān)分析,而硬件負責(zé)獨立操作分析和調(diào)度,如數(shù)據(jù)流處理器。獨立結(jié)構(gòu)完全由程序提供各個獨立操作間的信息,即編譯器負責(zé)操作間相關(guān)性分析、獨立操作間分析和指令調(diào)度,VLIW是其主要代表。
超標量處理器架構(gòu)
現(xiàn)代超標量處理器體系結(jié)構(gòu)均基于IBM360/91采用的Tomasulo和CDC6600采用的Scoreboard動態(tài)調(diào)度技術(shù),MIPS R10000和DEC21264微處理器均基于該體系結(jié)構(gòu)。典型超標量處理器通常采用如下邏輯結(jié)構(gòu)實現(xiàn)動態(tài)調(diào)度:寄存器重命名邏輯、窗口喚醒邏輯、窗口選擇邏輯和數(shù)據(jù)旁路邏輯。Intel的Pentium處理器、Motorola的PowerPC 604和SPARC64則采用基于預(yù)約站的超標量體系結(jié)構(gòu)。
兩種體系結(jié)構(gòu)的主要區(qū)別是:在典型超標量結(jié)構(gòu)中,無論是推測還是非推測寄存器值都放在物理寄存器堆中;在預(yù)約站超標量結(jié)構(gòu)中,推測數(shù)據(jù)放在重排序緩沖器中,非推測數(shù)據(jù)和已經(jīng)執(zhí)行完成提交的數(shù)據(jù)則放在寄存器文件中。在典型結(jié)構(gòu)中,操作數(shù)不廣播到窗口,而只將操作數(shù)標志TAG進行廣播,操作數(shù)則送到物理寄存器文件。在預(yù)約站結(jié)構(gòu)中,指令執(zhí)行結(jié)果廣播到預(yù)約站,指令發(fā)射時從預(yù)約站去取操作數(shù)。
超標量處理器性能與IPC(Instructions Per Cycle)和時鐘頻率的乘積成正比。時鐘速率同系統(tǒng)結(jié)構(gòu)的關(guān)鍵路徑時延有關(guān),而IPC和如下因素有關(guān):程序中潛在的指令級并行性、體系結(jié)構(gòu)字長寬度、指令窗口大小和并行性開發(fā)策略。超標量處理器一般通過增加發(fā)射邏輯提高IPC,這將導(dǎo)致更寬的發(fā)射窗口和更復(fù)雜的發(fā)射策略。
圖1 ZSP400 內(nèi)核超標量體系結(jié)構(gòu)框圖
眾所周知,超標量處理器是通用微處理器的主流體系結(jié)構(gòu),幾乎所有商用通用微處理器都采用超標量體系結(jié)構(gòu)。而在DSP方面,LSI 邏輯公司的 ZSP200、 ZSP400、ZSP500和ZSP600均采用超標量體系結(jié)構(gòu)。ZSP200采用并行MAC和ALU運算部件,2發(fā)射超標量結(jié)構(gòu);ZSP400采用雙 MAC單元、4 發(fā)射超標量處理器體系結(jié)構(gòu);ZSP500為4發(fā)射體系結(jié)構(gòu)、采用增強型雙MAC和雙ALU運算單元;ZSP600采用4MAC和雙ALU運算部件,每個時鐘周期發(fā)射6條指令。圖1為ZSP400結(jié)構(gòu)框圖。
ADI公司的TigerSHARC系列采用靜態(tài)超標量體系結(jié)構(gòu)。該系列采用了許多傳統(tǒng)超標量處理器的特征,如load/store結(jié)構(gòu)、分之預(yù)測和互鎖寄存器堆等技術(shù)。每個時鐘周期發(fā)射4條指令。而靜態(tài)超標量的含義是指指令級并行性識別是在運行之前,即編寫程序時確定的(事實上以VLIW結(jié)構(gòu)為基礎(chǔ))。同時,TigerSHARC系統(tǒng)處理器采用SIMD技術(shù),用戶可以對數(shù)據(jù)進行廣播和合并。所有寄存器均是互鎖的,支持簡單的編程模型,該模型不依賴于不同型號間的時延變化。分支目標緩沖器BTB為128位,可以有效減小循環(huán)操作和其它非順序代碼的執(zhí)行時間。圖2為TigerSHARC系列中的ADSP-TS201S結(jié)構(gòu)框圖。
圖2 ADSP-TS201S靜態(tài)超標量體系結(jié)構(gòu)框圖
超長指令字VLIW體系結(jié)構(gòu)
自從耶魯大學(xué)的J.A Fisher于1979年首次提出VLIW體系結(jié)構(gòu)以來,先后
由耶魯大學(xué)開發(fā)出基于跟蹤調(diào)度(Trace Scheduling)技術(shù)的MultiFlow處理器和Cydrome公司Bob Rau等人開發(fā)的基于巨塊調(diào)度(Superblock Scheduling)的Cydra-5處理器。但直到九十年代中期,基于VLIW結(jié)構(gòu)的處理器基本上停留在實驗室原型機階段。因為VLIW本身固有的幾個關(guān)鍵問題一直沒有徹底解決,導(dǎo)致了其后的商用處理器體系結(jié)構(gòu)從RISC轉(zhuǎn)向了超標量和超流水,而不是VLIW。盡管如此,由于VLIW結(jié)構(gòu)的許多優(yōu)點仍然使許多研究機構(gòu)競相對該技術(shù)進行堅持不懈地研究,并在體系結(jié)構(gòu)和編譯器方面實現(xiàn)了突破,其中最重要的是解決了目標代碼兼容問題并支持推斷推測機制(盡管大部分處理器僅支持部分推斷推測機制)。這之后出現(xiàn)了Philip的Trimedia、Equator的MAP1000A媒體處理器、Chromatic的Mact、TI的TMS320C6XX、Transmeta的Crusoe以及INTEL和HP聯(lián)盟提出的IA-64體系結(jié)構(gòu)(EPIC)。事實上VLIW作為下一代高性能處理器體系結(jié)構(gòu)的首選技術(shù)已成共識,該體系結(jié)構(gòu)和優(yōu)化編譯器形成的SIMD指令流將更加適合多媒體數(shù)據(jù)處理。
TI的TMS320C6系列是典型的超長指令字VLIW體系結(jié)構(gòu),該系列每個指令周期可以執(zhí)行8條32位指令,C62為定點處理器,C67為浮點處理器。C62和C67系列的CPU內(nèi)核是相同的,包含32個通用寄存器、8個執(zhí)行部件。C64包含64個通用寄存器和8個執(zhí)行部件。8個執(zhí)行部件包含2個乘法器和6個ALU。支持8/16/32數(shù)據(jù)類型,所有指令均為條件執(zhí)行,減小了分支指令開銷。圖3為C62和C67系統(tǒng)框圖。
圖3 基于VLIW體系結(jié)構(gòu)的TMS320C6系統(tǒng)框圖
中國科學(xué)院聲學(xué)研究所在“973國家重大基礎(chǔ)研究發(fā)展規(guī)劃”資助下研制成功國內(nèi)第一款基于多發(fā)射VLIW和SIMD技術(shù)的具有可重組結(jié)構(gòu)的高性能微處理器芯片-華威處理器(SuperV)。該處理器為四發(fā)射VLIW處理器,當(dāng)執(zhí)行向量處理功能時,每個周期可執(zhí)行35個操作。在執(zhí)行32位乘累加操作時可獲得2.9 GOPS 的數(shù)據(jù)處理速度;執(zhí)行16位乘累加操作時可獲得5.1 GOPS 的數(shù)據(jù)處理速度;執(zhí)行8位乘累加操作時可獲得9.3 GOPS 的數(shù)據(jù)處理速度。該處理器是目前國內(nèi)數(shù)據(jù)處理能力最強的微處理器,可以廣泛應(yīng)用于信息家電、網(wǎng)絡(luò)通信、聲音圖像以及雷達聲納等信號處理領(lǐng)域。
可重構(gòu)處理器架構(gòu)
從二十世紀七十年代開始的第一代CISC處理器開始至今,微處理器體系結(jié)構(gòu)已經(jīng)經(jīng)過了三代。然而,即使是第三代的RISC技術(shù)仍然停留在固定模式的體系架構(gòu)設(shè)計。隨著ASIC和SOC技術(shù)的發(fā)展,微處理器設(shè)計進入到第四代,即后RISC和可重構(gòu)處理器時代。其重要特征是系統(tǒng)架構(gòu)不再采用固定模式,而是將DSP的靈活性與硬線連接的專用性相結(jié)合,使得微處理器可以針對不同的應(yīng)用需求建立自己獨特的體系結(jié)構(gòu),達到性能最優(yōu)、功耗更低的目的。
華威處理器(SuperV)體系結(jié)構(gòu)不僅基于RISC、VLIW和SIMD技術(shù),而且采用了可重構(gòu)技術(shù),使得用戶在不增加硬件開銷的情況下通過對系統(tǒng)功能部件的重構(gòu)完成對不同應(yīng)用的處理,不僅提高了系統(tǒng)性能,而且大大降低了系統(tǒng)的功耗。例如,在華威處理器中設(shè)計了若干32位可重構(gòu)乘法器,每個可重構(gòu)乘法器可以完成32位乘法、若干個16位乘法或者8位乘法。因此,華威處理器可以采用一條指令完成16個8位數(shù)據(jù)的乘(累)加操作;一條指令可以完成8個16位數(shù)據(jù)的乘(累)加操作;一條指令可以完成4個32位數(shù)據(jù)的乘加操作;一條指令可以完成4個32位數(shù)據(jù)的累加操作;一條指令可以完成16個索引、16個地址計算和16次數(shù)據(jù)加載操作;兩條指令完成16個8位數(shù)據(jù)累加操作;兩條指令可以完成8個16位數(shù)據(jù)累加操作;兩條指令可以完成對256項、8位元素的數(shù)據(jù)表進行的16路并行查找。
Tensilica的可配置技術(shù)是可重構(gòu)處理器的重要代表。例如,Vectra LX定點向量DSP引擎就是通過配置選項在Xtensa LX可配置處理器的基礎(chǔ)上建立起來的。即Vectra LX定點DSP引擎是Xtensa LX微處理器內(nèi)核的一種配置。該定點DSP引擎是一個3發(fā)射SIMD處理器,具有四個乘法器/累加器(四MAC),它可以處理128位的向量。128位向量可以分成8個16位或者4個32位的元素。整個Vectra LX DSP引擎是用TIE (Tensilica's Instruction Extension)語言開發(fā)的,通過修改可以適合不同的應(yīng)用領(lǐng)域。Vectra LX DSP引擎增加了16個向量寄存器(每個寄存器160位寬)、四個128位的向量隊列寄存器、第二個load/store單元和210多條現(xiàn)有Xtensa LX處理器指令集體系結(jié)構(gòu)中的通用DSP指令。Vectra LX DSP引擎如圖4所示。
圖4 Vectra LX DSP體系結(jié)構(gòu)框圖
結(jié)語
作為信息產(chǎn)業(yè)的核心技術(shù),微處理器體系結(jié)構(gòu)正在發(fā)生很大的變化,而這種變化無不體現(xiàn)出市場需求的強大動力?,F(xiàn)代微處理器,無論是通用微處理器還是數(shù)字信號處理器在體系結(jié)構(gòu)方面正在趨于融合。通用處理器通過增加媒體處理指令來提高數(shù)據(jù)處理器能力;而數(shù)字信號處理器也借鑒了通用處理器的體系結(jié)構(gòu),使得數(shù)字信號處理器的數(shù)據(jù)處理器能力更加強大、管理更加靈活。同時,隨著嵌入式應(yīng)用的需求,對功耗的要求也越來越苛刻,使得可重構(gòu)處理器在未來將會起到重要的作用。由于不同的應(yīng)用需求可以通過重構(gòu)技術(shù)獲得所需要的微處理器系統(tǒng)架構(gòu),這將大大提高產(chǎn)品的競爭力,同時也降低了整個系統(tǒng)的功耗和成本。
評論