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