收稿日期:2007-12-17;
修回日期:2008-03-04
基金項目:國家自然科學(xué)基金資助項目(60736012,60573107);西北工業(yè)大學(xué)研究生創(chuàng)業(yè)種子基金資助項目(200755)
作者簡介:黃小平(1979-),男 陜西富平人,博士研究生,主要研究方向為先進微系統(tǒng)設(shè)計、集成電路設(shè)計(huangxp@nwpu.edu.cn);
樊曉椏(1962-),男,教授,博士,主要研究方向為高性能體系架構(gòu)、存儲系統(tǒng);
張盛兵(1968-),男,教授,博士,主要研究方向為多核多線程處理器.
(西北工業(yè)大學(xué) 計算機學(xué)院 西安 710072)
摘要:通過對嵌入式處理器進行多媒體處理能力的擴展可增強其對多媒體數(shù)據(jù)的處理能力。以32 bit龍騰嵌入式處理器為基礎(chǔ),研究AltiVec技術(shù)以及超標(biāo)量技術(shù),設(shè)計了該處理器中支持AltiVec技術(shù)的多媒體協(xié)處理單元。該單元采用五級流水線,將指令動態(tài)調(diào)度技術(shù)分配到不同的流水線中,在提高處理性能的同時保證了設(shè)計頻率。通過多媒體基準(zhǔn)程序測試,該單元的指令I(lǐng)PC為1.2,SMIC0.18μm工藝庫下,頻率為350 MHz,該協(xié)處理單元提高了龍騰處理器的性能。
關(guān)鍵詞:龍騰處理器; AltiVec技術(shù); 動態(tài)指令調(diào)度技術(shù); 流水線
中圖分類號:TP303
文獻標(biāo)志碼:A
文章編號:1001-3695(2008)10-3161-04
Research on multimedia co-processor unit based on AltiVec technology
HUANG Xiao-ping FAN Xiao-ya ZHANG Sheng-bing
(School of Computer Northwestern Polytechnical University Xi’an 710072 China)
Abstract:To speed up the processing on the multimedia information a multimedia co-processor unit can be imported into the embedded processor. The paper presented a method to implement AltiVec technology on the Longtium processor it mainly focused on the research of the AltiVec technology dynamic instruction scheduling and pipeline. It was demonstrated the architecture could upgrade the performance of the Longtium processor.
Key words:Longtium processor; AltiVec technology; dynamic instruction scheduling technology; pipeline
面向多媒體信息處理的程序中存在大量的循環(huán)操作,每次循環(huán)迭代是對不同的數(shù)據(jù)執(zhí)行相同的高度規(guī)則的處理,而且數(shù)據(jù)的寬度一般是8 bit或者16 bit[1]。采用32 bit或者64 bit的處理器核對多媒體數(shù)據(jù)逐一進行處理,存在資源的浪費,為此各大微處理器公司都對其處理器進行了多媒體處理能力的擴展。Intel公司的SSE2、SSE3技術(shù)[2,3],Sun公司 UltraSparc微處理器的VIS技術(shù)[3,4],MIPS微處理器的MDMX技術(shù)[3]等。
龍騰處理器是西北工業(yè)大學(xué)研制的面向航空應(yīng)用的32 bit嵌入式處理器[5],該處理器采用PowerPC體系結(jié)構(gòu),與Motorola公司的MPC750處理器全兼容。為了提高該系列微處理器對多媒體類信息的處理能力 本文根據(jù)龍騰處理器的體系架構(gòu)、AltiVec技術(shù)以及指令動態(tài)調(diào)度技術(shù),研究設(shè)計了具有動態(tài)指令調(diào)度能力的多媒體協(xié)處理單元。
1AltiVec技術(shù)
AltiVec技術(shù)是Motorola公司、IBM公司以及Apple公司為了使采用PowerPC體系結(jié)構(gòu)的通用處理器具有多媒體處理能力而聯(lián)合開發(fā)的SIMD(單指令流多數(shù)據(jù)流)技術(shù)。AltiVec技術(shù)[6]擴展了通用PowerPC體系結(jié)構(gòu)指令集,定義了獨立的32×128的向量寄存器堆,因此AltiVec指令可以與定點指令和浮點指令并行執(zhí)行。AltiVec技術(shù)定義了四種數(shù)據(jù)元素,指令的操作可以基于字節(jié)、半字、字以及單精度浮點數(shù)。AltiVec指令格式如圖1所示。AltiVec技術(shù)定義的指令系統(tǒng)格式簡單規(guī)整。指令主要面向數(shù)據(jù)流處理,因此在設(shè)計該多媒體協(xié)處理單元時,易實現(xiàn)快速的指令譯碼,并且易于在指令執(zhí)行過程進行流水線操作。
2多媒體協(xié)處理單元控制邏輯架構(gòu)
2.1龍騰處理器結(jié)構(gòu)
龍騰處理器是采用PowerPC體系架構(gòu)的32 bit超標(biāo)量RISC處理器,它采用順序雙發(fā)射[7]、指令亂序執(zhí)行、順序完成機制,具有獨立的定點處理單元和浮點處理單元,支持精確異常處理。
2.2多媒體協(xié)處理單元的架構(gòu)設(shè)計需求
該多媒體協(xié)處理單元是整個龍騰處理器的一個協(xié)處理單元。由于龍騰處理器采用順序雙發(fā)射體系結(jié)構(gòu),在其完成隊列資源可用情況下,其發(fā)射邏輯每周期可向多媒體協(xié)處理單元發(fā)射兩條多媒體指令,同時發(fā)射邏輯在完成隊列里為發(fā)射的多媒體指令申請對應(yīng)的完成槽,以維持程序執(zhí)行的順序一致性。該多媒體協(xié)處理單元在滿足時序約束的條件(SMIC0.18 μm工藝,350 MHz)下,將龍騰發(fā)射邏輯發(fā)射的多媒體指令在多媒體協(xié)處理單元內(nèi)部動態(tài)并行執(zhí)行,提高多媒體協(xié)處理單元的指令I(lǐng)PC,進一步提高整個處理器的性能。
2.3多媒體協(xié)處理單元的指令動態(tài)調(diào)度
現(xiàn)代單核處理器動態(tài)調(diào)度策略有CDC記分牌算法[8]和Tomasulo算法[9],它們都能實現(xiàn)對指令動態(tài)亂序執(zhí)行的控制。CDC記分牌實現(xiàn)簡單,但是執(zhí)行效率較低,必須等待相關(guān)解除后后續(xù)指令才可以執(zhí)行;Tomasulo算法將相關(guān)引起的延遲降低到最小,執(zhí)行效率高,但實現(xiàn)復(fù)雜。在追求處理器高性能的驅(qū)動下 Tomasulo算法已成為現(xiàn)代超標(biāo)量處理器動態(tài)調(diào)度的基礎(chǔ)。該多媒體協(xié)處理單元的動態(tài)調(diào)度算法基于Tomasulo調(diào)度策略[10],采用寄存器重命名來消除偽相關(guān),采用保留站邏輯以及公共數(shù)據(jù)總線處理真相關(guān),并將真相關(guān)所引起的流水線停滯降到最小。
2.3.1指令動態(tài)調(diào)度算法的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)
a)擴展寄存器堆。多媒體協(xié)處理單元包括32個128 bit的多媒體寄存器,采用指令動態(tài)調(diào)度算法之后,每個多媒體寄存器擴展如圖2所示。其中:VR.v:1 bit,置位,表示VR的值有效,否則以tag索引的重命名寄存器的值為該寄存器的最新值;VR.tag:3 bit,重命名寄存器編號;VR.vr:128 bit,當(dāng)VR.v有效時,為該多媒體寄存器的最新值。
b)重命名寄存器。它用來暫存亂序執(zhí)行指令的臨時執(zhí)行結(jié)果,其結(jié)構(gòu)如圖3所示。其中:rename.v:1 bit,置位,表示該重命名寄存器的值有效;rename.b:1 bit,置位,表示該重命名寄存器已經(jīng)分配;rename.value:128 bit,當(dāng)rename.v有效時,該值為該重命名寄存器的最新值。
c)保留站。它暫存因為真相關(guān)而不能立即執(zhí)行的指令的所有控制信息,其結(jié)構(gòu)如圖4所示。其中:reservation.op:4 bit,指令的操作類型;reservation.e:3 bit,指令在完成隊列中的入口(指令發(fā)射到該協(xié)處理單元時已經(jīng)包括此信息);reservation.dest:3 bit,該指令分配的目的重命名寄存器;reservation.opi.v:1 bit,置位表示該保留站源操作數(shù)opi已準(zhǔn)備好(i=1,2,3);reservation.opi.rename:2 bit,若reservation.opi.v無效,則監(jiān)聽通用數(shù)據(jù)總線,獲取編號為reservation.opi.rename的數(shù)據(jù)(i=1,2,3);reservation.opi.value,該源操作數(shù)opi的值(i=1,2,3)。
2.3.2支持指令動態(tài)執(zhí)行的流水線設(shè)計
Tomasulo算法實現(xiàn)邏輯復(fù)雜,為了滿足該向量處理單元的時序要求,本設(shè)計中將該調(diào)度算法與流水線技術(shù)相結(jié)合,將該算法的關(guān)鍵處理邏輯分配到流水線的不同流水級中,實現(xiàn)復(fù)雜邏輯流水線化。首先研究如何合理的劃分流水線。該多媒體協(xié)處理單元流水線的劃分依據(jù)三個因素:a)考慮AltiVec指令的運算分量[7],流水線的每一個流水級應(yīng)完成單一的運算分量,并且使各個流水級的負載平衡;b)考慮該算法所涉及的關(guān)鍵邏輯,主要包括寄存器重命名分配邏輯和保留站從公用數(shù)據(jù)總線監(jiān)聽邏輯,這兩部分邏輯較復(fù)雜,應(yīng)劃分在不同的流水線中;c)考慮系統(tǒng)的目標(biāo)頻率約束,該多媒體協(xié)處理單元的目標(biāo)頻率是SMIC0.18μm工藝350 MHz,因此流水線每一個流水級的延時應(yīng)在2.5 ns之內(nèi)。綜合以上因素,將該多媒體協(xié)處理單元的流水線劃分為譯碼、取數(shù)/寄存器重命名、指令分派/保留站、執(zhí)行、提交五級。對于取指令以及寫回階級要完成的操作,由龍騰處理器的全局控制控制邏輯來完成。各個流水級的主要功能如表1所示。
表1多媒體協(xié)處理單元流水線各流水級說明
流水級功能簡介
譯碼完成指令的譯碼解析指令的操作數(shù)域等解析指令的相關(guān)信息
取數(shù)/寄存器重命名完成指令寄存器重命名,消除假相關(guān)完成不相關(guān)指令操作數(shù)的獲取等
指令分派/保留站指令分派到相應(yīng)的保留站監(jiān)聽CDB總線,消除真相關(guān)
執(zhí)行完成指令的執(zhí)行
提交將結(jié)果提交到完成隊列以及重命名寄存器中將執(zhí)行結(jié)果通過公共數(shù)據(jù)總線廣播到各個保留站中
各個流水級實現(xiàn)的功能詳細分析以及流水級之間的接口協(xié)議定義如下:
a)譯碼級。龍騰處理器的全局發(fā)射邏輯在完成隊列有空槽,每周期可向多媒體協(xié)處理單元譯碼邏輯發(fā)射兩條多媒體指令。這兩條指令之間存在程序上的順序性,不完全獨立。因此譯碼級在對指令進行并行譯碼時,除了譯出執(zhí)行單條指令所需的完備的控制信息外,還應(yīng)譯出保證兩條指令之間的邏輯順序的相關(guān)控制信號。
b)取數(shù)/寄存器重命名級。如果該級資源可用,那么譯碼級譯出的指令控制信息流則流水到該級。該級完成源操作數(shù)的讀取及目的寄存器的重命名。
源寄存器的讀數(shù)算法如下:
(a)根據(jù)源操作數(shù)的寄存器編號,判斷寄存器堆中該編號寄存器的VR.v是否有效。若有效,則讀出,并設(shè)置當(dāng)前源操作數(shù)據(jù)有效,轉(zhuǎn)到(d);否則轉(zhuǎn)到(b)。
(b)從該寄存器VR.tag域索引的重命名寄存器中讀數(shù),若該重命名寄存器rename.v有效,則讀數(shù),并設(shè)置當(dāng)前數(shù)據(jù)有效,跳到(d);否則轉(zhuǎn)到(c)。
(c)將當(dāng)前數(shù)據(jù)有效位設(shè)置為無效,記錄該數(shù)據(jù)源寄存器的重命名寄存器編號,等該指令進入指令分派/保留站級后,監(jiān)聽公共數(shù)據(jù)總線上的信息,讀取數(shù)據(jù)。
(d)讀數(shù)完成。
目的寄存器的重命名算法如下:
(a)給第一條指令的目的寄存器在重命名寄存器堆中分配一個未分配的重命名寄存器,將其狀態(tài)位分別置為busy和invalid,并將目的寄存器的VR.tag位設(shè)置為該重命名寄存器的編號。同時根據(jù)源寄存器的讀數(shù)算法判斷出該目的寄存器與第二條指令是否存在真相關(guān),如果存在,則同時更新第二條指令的源操作數(shù)的數(shù)據(jù)源,將該重命名寄存器設(shè)置為相關(guān)的源操作數(shù)的數(shù)據(jù)源。
(b)對第二條指令的目的寄存器執(zhí)行同樣的操作,但在當(dāng)前周期無須判斷真相關(guān)。
通過以上算法,可以在一個時鐘周期內(nèi)完成兩條指令的源操作數(shù)的讀數(shù)操作,并消除了指令之間的偽相關(guān)。
c)指令分派/保留站級。當(dāng)取數(shù)/寄存器重命名級完成指令的取數(shù)操作之后,如果該指令操作即將用到的執(zhí)行單元的保留站可用,那么該指令的信息將被發(fā)射到相應(yīng)的保留站中。同時保留站根據(jù)公用數(shù)據(jù)總線上的信息更新本保留站中的源操作數(shù)的值。一旦該指令執(zhí)行所需要的所有操作數(shù)都有效,那么當(dāng)執(zhí)行單元空閑時,則將該指令發(fā)射到執(zhí)行單元中執(zhí)行,同時釋放該流水級資源。
d)執(zhí)行級。該級完成指令的具體執(zhí)行。當(dāng)該執(zhí)行單元空閑時,從保留站中接收一條操作數(shù)準(zhǔn)備好的操作,將該執(zhí)行單元置為忙狀態(tài);當(dāng)指令的操作執(zhí)行完后,將該執(zhí)行單元置為閑狀態(tài),允許接收保留站的中新操作。
e)提交級。該級將執(zhí)行單元的執(zhí)行結(jié)果提交到該指令在完成隊列中對應(yīng)的完成槽中,同時將執(zhí)行結(jié)果通過公用數(shù)據(jù)總線廣播到各多媒體協(xié)處理單元的保留站中。當(dāng)出現(xiàn)多個執(zhí)行單元爭用公用數(shù)據(jù)總線時,采用簡單的優(yōu)先權(quán)控制策略。首先來自龍騰處理器LSU(load/store unit)單元的數(shù)據(jù)優(yōu)先權(quán)最高,因為LSU指令的執(zhí)行周期較長,因其導(dǎo)致的真相關(guān)阻塞的指令較多,所以優(yōu)先權(quán)最高。其次,該協(xié)處理器置換單元數(shù)據(jù)的優(yōu)先權(quán)高于協(xié)處理器算術(shù)邏輯單元數(shù)據(jù)的優(yōu)先權(quán),因為多媒體置換單元是為算術(shù)邏輯單元提供有效的數(shù)據(jù)。采用固定的優(yōu)先權(quán)策略,實現(xiàn)邏輯比較簡單。
2.3.3多媒體協(xié)處理單元的邏輯結(jié)構(gòu)和綜合
根據(jù)2.3.2節(jié)的分析,得出該多媒體協(xié)處理單元的邏輯結(jié)構(gòu)如圖5所示。
采用Verilog語言完成該邏輯結(jié)構(gòu)的建模,使用Synopsys公司的DC工具進行邏輯綜合,在0.18 μm工藝下對該架構(gòu)各個流水級的時序延時如表2所示。
表2流水線各級延遲
stageD/nsstageD/ns
譯碼2.0執(zhí)行2.3
取數(shù)2.2提交2.0
保留站2.7
分析綜合報告,保留站級的關(guān)鍵路徑采用具有優(yōu)先級的監(jiān)聽公用數(shù)據(jù)總線邏輯產(chǎn)生;采用支持晚到信號[11](later-arrival)的優(yōu)先級編碼器以及將執(zhí)行單元的輸出采用寄存器輸出的方法將該路徑延時降低到了2.5 ns以內(nèi)。
2.4多媒體協(xié)處理單元數(shù)據(jù)通路的研究
依據(jù)AltiVec指令集以及多媒體應(yīng)用程序,可將該協(xié)處理單元的數(shù)據(jù)通路劃分為以下四部分[12]:
a)向量置換操作單元(VPU)。
由于AltiVec技術(shù)要求,在對數(shù)據(jù)元素進行同一種操作之前,這些數(shù)據(jù)元素必須放置在128 bit向量寄存器中合適的位置,但當(dāng)數(shù)據(jù)元素從內(nèi)存中取回來時,數(shù)據(jù)元素的位置可能與操作要求的位置不一致,同時數(shù)據(jù)元素的格式可能和操作要求的格式也不一樣,需要對數(shù)據(jù)元素進行位置的重新排放以及格式的重新轉(zhuǎn)換等預(yù)處理操作。VPU負責(zé)完成該功能,實現(xiàn)的操作包括向量置換、打包、解包、合并及點操作等。該單元的核心是一個crossbar結(jié)構(gòu)的多選電路,如圖6所示。
b)簡單向量定點單元(VSFU)。
該執(zhí)行單元完成除了與向量乘操作以及交叉和操作以外的所有的定點操作,包括加法操作、減法操作、求極值操作、移位操作以及邏輯操作等。核心結(jié)構(gòu)是一個分裂式128 bit加法器和可配置的支持多種移位方式的桶式移位器。
c)復(fù)雜向量定點單元(VCFU)。
該單元完成除上述兩個單元完成的操作外,其他向量的定點算術(shù)操作,包括乘加操作、乘和操作、奇乘偶乘操作以及交叉和操作。由于設(shè)計時序的限制,這些操作需要花多個時鐘周期才能完成。分析與之有關(guān)的操作,該單元的核心是一個由簡單乘法器構(gòu)成的乘累加單元,如圖7所示。
d)浮點操作單元(VFU)(本文對該單元未作研究)。
3多媒體協(xié)處理單元的性能分析
多媒體協(xié)處理單元在基于龍騰微處理器模型的Simplescalar for PowerPC[13]仿真器平臺的支持下進行了相應(yīng)的性能仿真工作。該微處理器仿真器基本配置如下:32 KB一級數(shù)據(jù)cache,32 KB一級指令cache,1 MB的二級數(shù)據(jù)指令混合cache,并且假定二級cache的命中率為100%。指令隊列IQ為8項,完成隊列CQ為8項。轉(zhuǎn)移延遲為2周期,一級cache命中延遲為2周期,二級cache命中延時為6周期。定點執(zhí)行單元為一個轉(zhuǎn)移部件、一個定點部件,一個load/store部件和一個浮點部件,每個部件配備一個保留站。該多媒體協(xié)處理單元的包括四個執(zhí)行部件。其中,VPU執(zhí)行周期為1,VSFU的執(zhí)行周期為1,VCFU的執(zhí)行周期為4,VFU為10個周期。
根據(jù)對基準(zhǔn)程序的分析,60%~70%的指令是向量簡單定點操作指令和向量復(fù)雜定點操作指令,因此在對協(xié)處理器執(zhí)行單元配置中,VPU和VFP均配置了一個。對VSFU和VCFU采用五種配置方式研究其對處理器性能的影響:
E1,1個VSFU,1個VCFU,并且兩個共享保留站。
E2,1個VSFU,1個VCFU,兩個擁有獨立的保留站。
E3,2個VSFU單元,共享1個保留站,1個擁有獨立保留站的VCFU單元。
E4,2個VSFU單元,1個VCFU單元,分別擁有獨立的保留站。
E5,2個VSFU單元,2個VCFU單元,分別擁有獨立的保留站。
使用gcc for AltiVec編譯器對多媒體基準(zhǔn)程序進行編譯,通過上述平臺對多媒體協(xié)處理單元的指令I(lǐng)PC進行采樣,如圖8所示。在不同配置下的平均IPC如表3所示。
分析仿真結(jié)果可知,E3配置比E2和E1的配置性能有較大的提升,主要原因是多媒體指令中存在大量的簡單定點操作指令,采用兩個VSFU單元降低了該類指令并行引起的對VSFU的資源相關(guān)。E4和E5配置相對于E3配置,采用了兩個VCFU,但沒有帶來性能較大的提升。統(tǒng)計仿真程序,60%的定點指令中只有15%~20%的指令是向量復(fù)雜操作指令,因此采用一個VCFU單元可以滿足要求。同時E4和E5的配置多了一個VCFU單元,將引起面積的大幅度增加。因此E3的配置是該架構(gòu)下的理想配置,在E3配置下指令的IPC為1.21。
4結(jié)束語
本文在研究AltiVec技術(shù)的基礎(chǔ)上,結(jié)合超標(biāo)量處理器設(shè)計技術(shù)設(shè)計了基于AltiVec技術(shù)的具有超標(biāo)量架構(gòu)的多媒體協(xié)處理單元。詳細介紹了流水線各級之間的控制協(xié)議和流水線各級的劃分策略,給出了寄存器重命名技術(shù)以及保留站技術(shù)在該多媒體處理單元中的實現(xiàn)算法,并通過多媒體基準(zhǔn)程序?qū)υ摱嗝襟w協(xié)處理單元進行了性能分析。分析結(jié)果表明,該設(shè)計在滿足時序約束的前提下,提高了該向量處理協(xié)處理單元的處理
性能,進一步提升了整個龍騰處理器的性能。
參考文獻:
[1]李東曉. 系統(tǒng)芯片中媒體增強數(shù)字信號處理器核設(shè)計研究[D].杭州:浙江大學(xué),2004.
[2]Intel Corporation. Define SSE2 and SSE3[EB/OL].(2002-12-25)[2008-01-06].http://www.intel.com/support/processors/sb/cs-001650.htm.
[3]SLINGERLAND N T SMITH A J. Multimedia extensions for general purpose microprocessors: a survey[J].Microprocess and Microsystems,2005,29(5):225-246.
[4]Sun Microsystem Inc. VIS instruction set[EB/OL].http://www.sun.com/processors/vis/.
[5]黃小平.龍騰R2微處理器流水線的設(shè)計及優(yōu)化[J]. 微電子學(xué)與計算機,2006,23(2):144-147.
[6]PowerPC microprocessor family:AltiVecTM technology programming environments manual[R].New York: IBM Corporation 2003.
[7]賈琳.微處理器雙發(fā)射技術(shù)研究[D].西安:西北工業(yè)大學(xué),2005.
[8]McNAIRY C. Itanium2 processor micro architecture[J].IEEE Computer Society 2003,23(2):44-55.
[9]ANDERSON D W SPARACIO F J TOMASULO R M. The IBM system/360 model 91:machine philosophy and instruction-handing[J].IBM J Research and Development,1967,11(1):8-24.
[10]KRONING D. Design and evaluation of a RISC processor with a tomasulo scheduler[D].Germany:University des Saarlandes,1999.
[11]Design compile reference[K].[S.l.]:Synopsys Inc,2007.
[12]SCHMOOKLER M S,PUTRINOM,MATHER A,et al. A low-power high-speed implementation of a PowerPCTM microprocessor vector extension[C]//Proc of the 14th IEEE Symposium on Computer Architecture. Washington DC: IEEE Computer Society,1999:12-15.
[13]SimpleScalar tutorial[EB/OL].(2004).http://www.simplescalar.com.