向量處理器中支持simt的向量訪存裝置和控制方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及微處理器體系結(jié)構(gòu)設(shè)計(jì)的技術(shù)領(lǐng)域,尤其涉及一種向量處理器中支持SIMT的向量訪存裝置和控制方法。
【背景技術(shù)】
[0002]無線通信、圖像處理等流媒體應(yīng)用的發(fā)展需要微處理器在有限的功耗預(yù)算下提供更高的實(shí)時(shí)運(yùn)算能力,單指令流多數(shù)據(jù)流(Single Instruct1n Multiple Data, SIMD)技術(shù)因其可共享硬件控制結(jié)構(gòu)、能開發(fā)大量的數(shù)據(jù)級(jí)并行,可在相對(duì)較低的功耗下實(shí)現(xiàn)高數(shù)據(jù)吞吐量的計(jì)算能力等特性迅速成為各類微處理器的重要擴(kuò)展。向量處理器片內(nèi)集成向量運(yùn)算單元(Vector Processing Units, VPU)和向量訪存單元VMU,向量運(yùn)算單元VPU內(nèi)集成了多個(gè)并行的運(yùn)算單元PE,按SMD方式執(zhí)行運(yùn)算操作。為滿足向量運(yùn)算單元VPU的向量運(yùn)算需求,向量訪存單元VMU按SIMD方式執(zhí)行向量訪存操作,為向量訪存單元VPU提供高帶寬的向量訪存數(shù)據(jù)。
[0003]但隨著SMD寬度即按SMD方式操作的并行運(yùn)算單元個(gè)數(shù)的增加,全局異常導(dǎo)致的全局停頓的代價(jià)越來越大,向量處理器在獲得更高的理論運(yùn)算峰值的同時(shí),實(shí)際運(yùn)算效率卻并未按預(yù)期增加。因此在SIMD方式開發(fā)的數(shù)據(jù)級(jí)并行的基礎(chǔ)上,迫切需要開發(fā)更高的并行性即線程級(jí)并行,提高系統(tǒng)的運(yùn)算效率。但目前的向量訪存操作只提供地址連續(xù)或等地址跨步等具有特定地址變化規(guī)律的一組向量數(shù)據(jù)的訪存,不能滿足向量訪存單元VPU多線程并行執(zhí)行的需求,從而無法支持SIMT單指令流多數(shù)據(jù)流(Single Instruct1nMultiple Data, SIMT)的向量訪存。
【發(fā)明內(nèi)容】
[0004]本發(fā)明要解決的技術(shù)問題就在于:針對(duì)現(xiàn)有技術(shù)存在的技術(shù)問題,本發(fā)明提供一種向量訪存靈活性強(qiáng)、能夠支持線程級(jí)并行且并行訪存效率高、功耗低的向量處理器中支持SMT的向量訪存裝置和控制方法。
[0005]為解決上述技術(shù)問題,本發(fā)明提出的技術(shù)方案為:
一種向量處理器中支持SMT的向量訪存裝置,包括基址向量寄存器單元、偏移向量寄存器單元以及向量地址計(jì)算單元,所述基址向量寄存器單元、偏移向量寄存器單元分別包括多組向量寄存器,每組向量寄存器由對(duì)應(yīng)向量處理器中各線程的多個(gè)寄存器構(gòu)成;所述向量地址計(jì)算單元包括多個(gè)地址計(jì)算子單元,每個(gè)地址計(jì)算子單元分別與向量處理器中各存儲(chǔ)體一一對(duì)應(yīng)連接;各線程的基址、偏移地址分別通過所述基址向量寄存器單元、偏移向量寄存器單元中一組向量寄存器進(jìn)行獲取,分別輸出至各地址計(jì)算子單元進(jìn)行計(jì)算,得到各線程的訪存地址并輸出至對(duì)應(yīng)的存儲(chǔ)體。
[0006]作為本發(fā)明裝置的進(jìn)一步改進(jìn):還包括通用向量寄存器單元,所述通用向量寄存器單元包括多組向量寄存器,每組向量寄存器由對(duì)應(yīng)向量處理器中各線程的多個(gè)寄存器構(gòu)成;所述通用向量寄存器單元通過一組向量寄存器存儲(chǔ)各線程的訪存數(shù)據(jù)。
[0007]作為本發(fā)明裝置的進(jìn)一步改進(jìn):所述通用向量寄存器單元包括m組通用向量寄存器,其中m=log2t,且t是通用向量寄存器的位數(shù)。
[0008]作為本發(fā)明裝置的進(jìn)一步改進(jìn):所述基址寄存器單元包括Ic1組基址向量寄存器,其中Ic1=1g2S1,且S1為基址向量寄存器的位數(shù);所述偏移向量寄存器單元包括1^2組偏移向量寄存器,其中k2=log2s2,且S2為偏移向量寄存器的位數(shù);所述通用向量寄存器單元包括m組通用向量寄存器,其中m=log2t,且t是通用向量寄存器的位數(shù)。
[0009]作為本發(fā)明裝置的進(jìn)一步改進(jìn):還包括相互連接的SMT指令生成單元以及指令譯碼單元,所述指令譯碼單元分別與所述基址向量寄存器單元、偏移向量寄存器單元、通用向量寄存器單元連接;所述SIMT指令生成單元用于根據(jù)各線程的訪存指令指定讀寫訪問類型以及所述基址向量寄存器單元、偏移向量寄存器單元、通用向量寄存器單元中對(duì)應(yīng)組的向量寄存器,并生成對(duì)應(yīng)的SMT訪存指令;所述指令譯碼單元用于對(duì)所述SMD指令生成單元生成的SMT訪存指令進(jìn)行譯碼,得到所指定的讀寫訪問類型以及所述基址向量寄存器單元、偏移向量寄存器單元、通用向量寄存器單元中對(duì)應(yīng)組的向量寄存器。
[0010]作為本發(fā)明裝置的進(jìn)一步改進(jìn):基址向量寄存器單元、偏移向量寄存器單元、通用向量寄存器單元均包括寄存器組選擇器,寄存器組選擇器與所述指令譯碼單元連接。
[0011]本發(fā)明還提供一種基于上述向量訪存裝置的控制方法,步驟包括:
O將向量處理器中η個(gè)線程對(duì)應(yīng)的η路存儲(chǔ)體進(jìn)行統(tǒng)一編址,并根據(jù)各存儲(chǔ)體的訪問地址范圍配置所述基址向量寄存器單元、所述偏移向量寄存器單元中對(duì)應(yīng)組的向量寄存器;
2)獲取各線程的訪存指令并進(jìn)行指令譯碼,得到訪存指令中所指定的讀寫訪問類型以及所述基址向量寄存器單元、所述偏移向量寄存器單元中對(duì)應(yīng)組的向量寄存器;
3)選取訪存指令中所指定的所述基址向量寄存器單元、所述偏移向量寄存器單元對(duì)應(yīng)組的向量寄存器,并根據(jù)選取得到的向量寄存器的值計(jì)算向量訪存地址,得到對(duì)應(yīng)η個(gè)線程的η路向量訪存地址;
4)將η路向量訪存地址分別輸出至對(duì)應(yīng)的向量存儲(chǔ)體進(jìn)行訪存,若為寫指令,則根據(jù)所述向量訪存地址將各線程對(duì)應(yīng)的η路數(shù)據(jù)分別寫入到向量存儲(chǔ)體中;若為讀指令,則根據(jù)所述向量訪存地址從向量存儲(chǔ)體中讀出η路數(shù)據(jù)。
[0012]作為本發(fā)明方法的進(jìn)一步改進(jìn),所述步驟2)的具體實(shí)施步驟為:
2.1)獲取各線程的訪存指令,根據(jù)所述訪存指令指定讀寫訪問類型以及所述基址向量寄存器單元、偏移向量寄存器單元中對(duì)應(yīng)組的向量寄存器,以及指定用于通過一組向量寄存器存儲(chǔ)各線程的訪存數(shù)據(jù)的通用向量寄存器單元中對(duì)應(yīng)組的向量寄存器,并生成對(duì)應(yīng)的SIMD訪存指令;
2.2)對(duì)所述SIMD訪存指令進(jìn)行譯碼,得到各線程的訪存指令所指定的讀寫訪問類型以及基址向量寄存器單元、偏移向量寄存器單元、通用向量寄存器單元中對(duì)應(yīng)組的向量寄存器。
[0013]作為本發(fā)明方法的進(jìn)一步改進(jìn),所述SMD訪存指令的數(shù)據(jù)位包括訪存粒度、尋址模式、讀寫訪問類型有效位、符合位擴(kuò)展、基址向量寄存器編號(hào)、偏移向量寄存器編號(hào)以及通用向量寄存器編號(hào),所述基址向量寄存器編號(hào)、偏移向量寄存器編號(hào)以及通用向量寄存器編號(hào)分別用于指定基址向量寄存器單元、偏移向量寄存器單元、通用向量寄存器單元中對(duì)應(yīng)組的向量寄存器。
[0014]作為本發(fā)明方法的進(jìn)一步改進(jìn),所述步驟3)的具體實(shí)施步驟為:
3.1)將η路向量訪存地址分別轉(zhuǎn)化得到η路行地址、存儲(chǔ)體BANK地址和偏移地址,并結(jié)合訪存指令中所指定的訪存粒度、尋址模式信息一起傳給向量存儲(chǔ)體;
3.2)如果是向量寫指令,則根據(jù)訪存指令獲取所指定的通用向量寄存器單元中對(duì)應(yīng)組的向量寄存器,并根據(jù)轉(zhuǎn)化得到的η路行地址、存儲(chǔ)體BANK地址和偏移地址將所指定的所述通用向量寄存器單元中對(duì)應(yīng)組寄存器的值分別寫入對(duì)應(yīng)的存儲(chǔ)體;如果是向量讀指令,則根據(jù)所述η路行地址、存儲(chǔ)體BANK地址和偏移地址從存儲(chǔ)體中讀出η路數(shù)據(jù),并返回給通用向量寄存器單元。
[0015]與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:
1)本發(fā)明通過向量化的基址向量寄存器單元、偏移向量寄存器單元獲取各線程訪存地址的基址、偏移地址,結(jié)合向量化的地址計(jì)算