劉有耀,張仲偉
(西安郵電大學(xué)電子工程學(xué)院,陜西西安710061)
SoC的概念提出之后[1-3],隨著并行計算技術(shù)與深亞微米技術(shù)進(jìn)步,出現(xiàn)了以網(wǎng)絡(luò)互連的大規(guī)模并行處理系統(tǒng)芯片(MPP SoC),即陣列處理器系統(tǒng)芯片(Array Processor SoC),目前系統(tǒng)芯片體系結(jié)構(gòu)還處在發(fā)展階段。目前多核陣列處理器(Multi-core Processor)是處理器發(fā)展的趨勢。隨著微電子工藝技術(shù)的不斷突破,在單個芯片上能夠集成越來越多的電路,為多核處理器的出現(xiàn)提供條件。在實(shí)現(xiàn)軟件無線電時,多核CPU+GPU體系架構(gòu)已經(jīng)是經(jīng)典的解決方案,通過不同的數(shù)據(jù)映射到不同的處理單元或GPU單元中,得到并行處理,提高LTE系統(tǒng)基帶算法的執(zhí)行效率。下一代通信系統(tǒng)中存在大量的非數(shù)據(jù)并行算法[4-5],無法通過基于指令流的大規(guī)模數(shù)據(jù)并行計算提高計算效率。要求處理器能支持指令級并行(Instruction-level Parallelism,ILP)、數(shù)據(jù)級并行(Data-level Parallelism ,DLP)、線程級并行(Thread-level Parallelism,TLP)計算進(jìn)行各種規(guī)則計算和不規(guī)則計算[6-7]。所以為了滿足新時期的用戶體驗,我們需要研究適用于高性能計算的多核并行處理器,具有一定的實(shí)際意義和應(yīng)用價值。
在計算機(jī)體系結(jié)構(gòu)模型分類中[8],共有10種類型:基于指令流(機(jī)器執(zhí)行的指令序列)計算的系統(tǒng)結(jié)構(gòu)有單指令單數(shù)據(jù)SISD(Single Instruction Single Data,SISD)、單指令多數(shù)據(jù) SIMD(Single Instruction Multiple Data,SIMD)、多指令單數(shù)據(jù) MISD(Multiple Instruction Single Data,SIMD) 和 MIMD(Multiple Instruction Multiple Data,SIMD)4種;基于數(shù)據(jù)流計算的體系結(jié)構(gòu)有SD與MD兩種;基于構(gòu)令流計算的體系結(jié)構(gòu)有SCSD、MCSD、SCMD與MCMD 4種。
按照Flynn的分類[9],主要還是兩種指令流計算模式的并行計算的體系結(jié)構(gòu),一種是數(shù)據(jù)級并行的SIMD體系結(jié)構(gòu),多不同的數(shù)據(jù)相同的操作;第二種是指令級并行的MIMD體系結(jié)構(gòu)對不同的數(shù)據(jù)不同的操作。
SIMD體系結(jié)構(gòu),在同一個控制部件管理下,對多個處理單元廣播同一個指令,但操作的對象是不同的數(shù)據(jù),能夠完成數(shù)據(jù)級并行(DLP)操作,特別適合多媒體等數(shù)據(jù)密集的應(yīng)用,所以我們還需要開發(fā)在SIMD體系機(jī)構(gòu)中的指令級并行,實(shí)現(xiàn)高性能計算。SIMD體系結(jié)構(gòu)的計算機(jī),它在同一時間訪問內(nèi)存,得到多個數(shù)據(jù)進(jìn)行計算,這是它的優(yōu)勢。同時可以在處理單元集成具有ASIC功能的電路,如FFT算法電路、運(yùn)算估計電路、圖片算法電路及加速芯片等,擴(kuò)展SIMD體系結(jié)構(gòu)的功能。但是由于多媒體應(yīng)用變得越來越多樣化,單一的功能單元作為加速部件已經(jīng)不滿足要求,而且較短的處理單元結(jié)構(gòu)更加易于編譯器優(yōu)化,所以考慮多個SIMD結(jié)構(gòu)組合,也即本文的設(shè)計方案即將提到的以SIMD結(jié)構(gòu)與VLIW結(jié)構(gòu)結(jié)合形成小規(guī)模的并行單元片,再以獨(dú)立的單元構(gòu)成陣列互連結(jié)構(gòu),組成多核陣列結(jié)構(gòu)的處理器。
設(shè)計是基于SIMD體系結(jié)構(gòu)的簡單RISC處理器,指令集選用開放程度高的、廣泛開發(fā)應(yīng)用的MIPS[10-11]。RISC體系結(jié)構(gòu)的一個突出的優(yōu)勢就是便于利于流水線技術(shù)的應(yīng)用,而流水線又是處理器設(shè)計當(dāng)中的重要核心技術(shù)。
設(shè)計處理器首先需要定義一個規(guī)范,這里定義一個簡單的指令集[12-13],面向無線通信的處理器單元的指令是根據(jù)通信算法的仿真提取優(yōu)化得出的結(jié)果。采用load/store結(jié)構(gòu),兼容使用MIPS處理器的一些指令,32位固定長度。
算數(shù)運(yùn)算指令:ADD加法、SUB減法、ADDI立即數(shù)加法。
邏輯運(yùn)算指令:AND與、OR或、NOR或非、XOR異或、ANDI與立即數(shù)、OR或立即數(shù)、XORI異或立即數(shù)。
移位指令:SLL左移、SRL右移。
條件分支指令:BEQ條件分支。
無條件跳轉(zhuǎn)指令:J跳轉(zhuǎn)。
數(shù)據(jù)傳送指令:LD取數(shù)據(jù)、ST存儲數(shù)據(jù)。
空指令:NOP空操作。
(1)尾砂粒度及成分組成。尾礦庫中尾砂按粒度劃分,以粉砂為主,平均粒徑d50=0.04~0.1 mm,加權(quán)平均粒徑dp=0.05~0.15 mm,不均勻系數(shù)Cu=3~4,粘粒含量1%~5%,局部大于20%。尾砂物質(zhì)主要成分是石英,其次是難選鐵氧化物,再次是少量的綠泥石和碳酸鹽類礦物。
上述指令中包含三類典型的指令:整數(shù)操作運(yùn)算類、控制CTRL類、存儲MEM類。算數(shù)類主要進(jìn)行PE陣列單元的算數(shù)、邏輯等操作,控制類主要有傳送、跳轉(zhuǎn)返回等指令,存儲指令負(fù)責(zé)PE寄存器與存儲DRAM之間的數(shù)據(jù)交換。整數(shù)處理器指令格式分為3種,如表1所示,兩個操作數(shù)和結(jié)果都在寄存器的運(yùn)算類R型指令;一個操作數(shù)、一個立即數(shù)的運(yùn)算類指令,讀取指令和條件指令,均為I型指令;第三類是跳轉(zhuǎn)類J型指令,如表1所示。
表1 指令格式
指令格式中的opcode代表6位指令主操作碼,rd是5位的目的寄存器號,rs是5位源操作數(shù)號,rt是5位源/目的寄存器器號,或指定其他特定功能。Imm是16位立即數(shù),或數(shù)據(jù)存儲數(shù)據(jù)加載指令的數(shù)據(jù)地址字節(jié)偏移量和分支指令中相對程序計數(shù)器的偏移量。shamt是位移偏移量,func是功能碼,target address是目標(biāo)地址,提供跳轉(zhuǎn)指令地址用,J型指令中rd/rs用于其他用途。
為了需要處理器較高的性能、較高的處理速度,在單位時間內(nèi)能夠處理較多的數(shù)據(jù)任務(wù),處理器向著多核或陣列處理器的方面邁進(jìn)。這里設(shè)計簡單的多核處理器系統(tǒng)芯片,采用二位Mesh結(jié)構(gòu)的互聯(lián)網(wǎng)絡(luò)[14],連接處理單元PE內(nèi)核,處理單元可以認(rèn)為是一個個IP核,能夠完成各種同樣的或不一樣的功能,整體示意圖如圖1所示。
二維互連結(jié)構(gòu)使得多核處理器的處理能力得到了大幅提升,在SIMD計算模式下能夠進(jìn)行數(shù)據(jù)流的并行數(shù)據(jù)處理(DLP)。通過同構(gòu)或異構(gòu)PE處理單元,在PE內(nèi)部也實(shí)現(xiàn)并行化的設(shè)計,采用超長指令字(VLIW)的技術(shù)[15-16],對每個PE執(zhí)行單元發(fā)送指令,達(dá)到能夠在指令級實(shí)現(xiàn)并行(ILP)操作,也即能夠自同一時間SIMD體系結(jié)構(gòu)能夠執(zhí)行多指令多數(shù)據(jù)MIMD計算模式。同理,SIMD體系結(jié)構(gòu)的處理器也能夠在實(shí)現(xiàn)單指令單數(shù)據(jù)SISD、多指令單數(shù)據(jù)MISD計算模式。達(dá)到在計算機(jī)體系結(jié)構(gòu)層次實(shí)現(xiàn)體系結(jié)構(gòu)的統(tǒng)一。在單個處理單元層次,設(shè)想同時采用雙發(fā)射的結(jié)構(gòu),進(jìn)一步提高處理器單元的資源利用率,提升性能。
圖1 處理器陣列結(jié)構(gòu)示意圖
處理單元PE,對指令和數(shù)據(jù)并行處理。針對多媒體數(shù)據(jù)長度多打8或16位,所以在設(shè)計數(shù)據(jù)時選擇16位。有兩個部分組成:指令配置模塊,多個ALU模塊單元。把指令配置單元中的超長指令,分配到每一個實(shí)際的處理單元中進(jìn)行譯碼執(zhí)行處理。
每個ALU處理單元都有3個部分組成:譯碼控制部分、寄存器文件與運(yùn)算ALU部分、運(yùn)算結(jié)果會寫部分。
處理器的控制器設(shè)計,是將一個個微指令轉(zhuǎn)換成控制信號,供各數(shù)據(jù)通路部件使用。根據(jù)PE中指令配置模塊分配的指令,譯碼解析成一系列流水線各級使用的控制信號,送到各個功能指令能夠順利執(zhí)行。
取指單元分為兩個操作部分:從指令存儲icache中讀取指令字節(jié)和程序器PC(Promgram Counter)計算指令地址。
譯碼ID級,負(fù)責(zé)對來自取指級指令的譯碼,產(chǎn)生控制信號,指導(dǎo)整個陣列單元的處理功能、數(shù)據(jù)的存儲、分支控制等。
執(zhí)行單元完成最后的運(yùn)算等操作,分為寄存器模塊和ALU模塊。ALU的所有數(shù)據(jù)都來自寄存器文件中,寄存器模塊根據(jù)控制模塊ctrl的指令的相應(yīng)操作數(shù)碼進(jìn)行讀取數(shù)據(jù),設(shè)置有通用寄存器和專用寄存器。專用寄存器用于存儲類指令和路由類指令數(shù)據(jù)的存儲。在時鐘上升沿來臨時根據(jù)讀使能信號進(jìn)行讀取數(shù)據(jù),在下降沿對寄存器進(jìn)行寫數(shù)據(jù)操作。
存儲dcache用一個可讀可寫的ram完成,這里不研究存儲結(jié)構(gòu),ram當(dāng)作理想的存儲來模擬實(shí)現(xiàn)數(shù)據(jù)通路的順序完成。根據(jù)寫使能信號,在時鐘上升沿對alu的數(shù)據(jù)進(jìn)行存儲,根據(jù)讀使能信號和地址信息讀取相應(yīng)的數(shù)據(jù),結(jié)果經(jīng)回寫單元送到寄存器文件中。
指令級并行(ILP)。當(dāng)指令間不存在相關(guān)時,它們在流水線中可以重疊取來并行執(zhí)行多個指令在不同的處理單元并行執(zhí)行。這種指令序列中存在的潛在的并行性成為指令級并行。對于高性能的處理器,有3個影響其性能的因素:指令數(shù)、IPC每個時鐘周期的指令數(shù)、時鐘頻率。同等條件下,為了提高IPC,實(shí)際運(yùn)行中必須挖掘程序中指令間的并行,讓一個時鐘周期能夠并行執(zhí)行多條指令。指令級并行的實(shí)現(xiàn)方式有兩種,首先是通過流水線的方式使指令的執(zhí)行可以重疊進(jìn)行以提高效率;另一種方式是采用多發(fā)射的技術(shù),在一個周期內(nèi)處理器內(nèi)處理循環(huán)中運(yùn)行著多條指令,這種實(shí)現(xiàn)方式有超標(biāo)量和超長指令字(VLIW:Very Long Instruction Word)處理機(jī)。一般的處理器將流水線分為四級或五級,如表2。
表2 處理器單元四級流水線
采用流水線的方式執(zhí)行指令,一般處理器中的指令包含如下幾個步驟;1)從指令存儲器中讀取指令;2)指令譯碼對指令進(jìn)行解析;3)執(zhí)行部件進(jìn)行處理操作;4)與存儲器進(jìn)行交互數(shù)據(jù);5)回寫寄存器操作。
二維互聯(lián)結(jié)構(gòu)使得多核處理器的處理能力得到大幅提升,在SIMD計算模式下能夠進(jìn)行數(shù)據(jù)流的并行處理(DLP),同時在PE處理單元的內(nèi)部,PE單元內(nèi)核結(jié)構(gòu)如圖2所示。通過同構(gòu)或異構(gòu)ALU運(yùn)算處理單元,在PE內(nèi)部也實(shí)現(xiàn)并行化的設(shè)計,采用超長指令字(VLIW)的技術(shù),對每個ALU執(zhí)行單元發(fā)送指令,達(dá)到能夠在指令級實(shí)現(xiàn)并行(ILP)操作。
根據(jù)超長指令字技術(shù),來實(shí)現(xiàn)PE內(nèi)核中多個處理單元的連接。其結(jié)構(gòu)如圖2所示。內(nèi)部構(gòu)成的是4*4的結(jié)構(gòu),每一列執(zhí)行相同的指令,即超長指令包含中有四列處理單元的操作,每一列的指令是雙發(fā)射的64位,所以指令配置單元超長指令是256位。指令配置單元接受來自指令內(nèi)存中的超長指令,然后拆分到4個獨(dú)立的指令緩存中讀出指令。
圖2 陣列單元內(nèi)部結(jié)構(gòu)示意圖
一個簡單的C程序,在實(shí)際執(zhí)行之前,先由編譯器翻譯成一條條的匯編指令,隨后匯編指令送到指令存儲器中等待調(diào)用。這里對雙發(fā)射PE處理單元的功能驗證,由匯編程序指令送到處理器執(zhí)行。
單核設(shè)計,其仿真程序如圖3:圖中左邊是模擬匯編程序,右邊是理論結(jié)果,程序中使用了基本的運(yùn)算指令,如加減、與或跳轉(zhuǎn)返回。
圖3 單核處理單元模擬仿真程序
按順序執(zhí)行,其實(shí)際仿真結(jié)果如圖4所示,圖中采集的信號有alu結(jié)果輸出、程序計數(shù)器pc和跳轉(zhuǎn)返回信號Jmp、return等。結(jié)構(gòu)顯示與理論結(jié)果一致。
圖4 單核功能仿真結(jié)果截取圖
上述簡單的程序,仿真處理器簡單指令的順利執(zhí)行,對單核處理器的控制器、數(shù)據(jù)通路、流水線的順利完成進(jìn)行正確的實(shí)現(xiàn)。如運(yùn)算指令加減,邏輯指令與或,I型立即數(shù)指令,位移指令、跳轉(zhuǎn)指令等。
在沒有數(shù)據(jù)冒險檢測的情況下,進(jìn)依靠編譯器的編排指令順序,來實(shí)現(xiàn)一個雙發(fā)射的處理單元,其仿真檢測程序如圖5所示。
圖5 雙發(fā)射處理單元仿真程序
依照上面的程序編排指令,在仿真工具上仿真,得到的結(jié)果如圖6所示。圖中顯示的回寫單元的數(shù)據(jù),數(shù)據(jù)運(yùn)算alu_out1的輸出,源操作數(shù)的輸出和程序計數(shù)器。編譯器的編排,在有冒險的指令間插入空操作,結(jié)果輸出會是0,ALU的結(jié)果輸出到回寫單元,再寫回到寄存器中,如此需要2個時鐘周期。圖中還模擬了存取數(shù)據(jù)指令,先存再取。
按照相同的方法設(shè)計多發(fā)射陣列處理單元——雙發(fā)射四核處理器單元,雙發(fā)射能夠讓運(yùn)算處理與存取數(shù)據(jù)并存運(yùn)行,提高性能,讓4個ALU單元同時執(zhí)行相同的運(yùn)算。仿真四核處理單元,其匯編程序及運(yùn)行結(jié)果如圖5和7所示,圖中采集的數(shù)據(jù)有ALU的輸出、回寫的數(shù)據(jù)輸出、3個源操作數(shù)和程序計數(shù)器PC的值。
雙發(fā)射的仿真驗證表示雙發(fā)射處理器能夠執(zhí)行當(dāng)前的指令如加減、存取,數(shù)據(jù)通路正常,程序中的冒險插入空操作處理運(yùn)行正常。另外雙發(fā)射仿真驗證結(jié)果表示四核處理單元的正常運(yùn)行,打包整個四核電路就可以構(gòu)成陣列PE單元的一部分,排列4個這個四核電路和一個指令配置單元,形成PE單元如圖1所示。
圖6 雙發(fā)射處理單元仿真結(jié)果(沒冒險檢測)
圖7 四核處理單元仿真結(jié)果截取圖
本文對多核處理器系統(tǒng)芯片進(jìn)行設(shè)計,深入研究處理器原理、指令級并行及互連,在此基礎(chǔ)上對多核處理器單元片、互連通信節(jié)點(diǎn)單元進(jìn)行電路設(shè)計。分模塊化進(jìn)行設(shè)計實(shí)現(xiàn)處理單元電路PE,采用四級流水線線術(shù)、多發(fā)射多核技術(shù)。對這些電路設(shè)計進(jìn)行仿真和驗證,表明多核處理器電路能夠?qū)崿F(xiàn)指令級并行、數(shù)據(jù)級并行操作。
[1]Mannheim K.Man&Soc Age Reconstructn[M].Routledge,2013.
[2]Gulliver P H.Socl Contrl African Soc Ils 72[M].Routledge,2013.
[3]周紅月.SoC系統(tǒng)級建模與仿真平臺的設(shè)計與研究[D].天津:天津大學(xué),2012.
[4]孔令兵.5G移動通信發(fā)展趨勢與若干關(guān)鍵技術(shù)[J].通信電源技術(shù),2015,32(4):551-563.
[5]Patil C S,Karhe R R,Aher M A.Development of mobile technology:a survey[J]. International JournalofAdvanced Research in Electrical,Electronics and Instrumentation Engineering,2012,1(5):374-379.
[6]沈緒榜,孫璐.計算模式的統(tǒng)一研究[J].計算機(jī)學(xué)報,2014,37(7):1435-1444.
[7]Soliman M I,Ahmed F S.Exploiting ILP,DLP,TLP,and MPI to accelerate matrix multiplication on Xeon processors[C]//Engineering and Technology(ICET),2014 International Confe-rence on.IEEE,2014:1-6.
[8]王晗.基于多核環(huán)境下的多線程并行程序設(shè)計方法研究[D].太原:中原工學(xué)院,2014.
[9]李濤,肖靈芝.面向圖形和圖像處理的輕核陣列機(jī)結(jié)構(gòu)[J].西安郵電學(xué)院學(xué)報,2012,17(3):41-47.
[10]李輝楷,韓軍,翁新釬,等.精簡指令集計算機(jī)協(xié)處理器設(shè)計[J].計算機(jī)工程,2012,38(23):240-242,246.
[11]袁婷,劉怡俊.自主設(shè)計精簡指令集的流水線CPU[J].微電子學(xué)與計算機(jī),2015(2):124-128.
[12]朱博元,劉高輝,李政運(yùn),等.RISC指令集眾核處理器功能驗證與實(shí)現(xiàn)[J].計算機(jī)工程與應(yīng)用,2014(21):54-58.
[13]李春江,徐穎,黃娟娟,等.SIMD指令集設(shè)計空間的形式化描述[J].計算機(jī)科學(xué),2013,40(6):32-36.
[14]趙克敏.片上網(wǎng)絡(luò)基礎(chǔ)研究及拓?fù)浣Y(jié)構(gòu)設(shè)計[D].西安:西安電子科技大學(xué),2012.
[15]楊惠陳書明.一種基于VLIW結(jié)構(gòu)的高性能變長指令發(fā)射機(jī)制[J].計算機(jī)研究與發(fā)展,2013,50(10):2239-2246.
[16]宋云朋.基于超長指令字的ASIP設(shè)計與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2013.