子單元分別對應(yīng)計算各線程的訪存地址,使得每個線程的向量處理單元均有自己獨立的訪存地址,不同線程的向量處理單元訪問地址之間不具有相關(guān)性,從而能夠支持SIMT的線程級并行,有效提高了訪存的靈活性和并行性;
2)本發(fā)明通過對應(yīng)各線程的向量寄存器計算向量地址,使各線程對應(yīng)的向量處理單元能夠有自己獨立的訪存空間,從而在一次訪存中不同線程的向量處理單元的訪存地址不會出現(xiàn)沖突,能夠有效減少仲裁和停頓、提高使流水線運行效率,同時降低向量訪存所消耗的面積和功耗;
3)本發(fā)明能夠支持對向量存儲體存儲空間的SMT訪存,有效提高了并行訪存效率且減少了指令數(shù)量,同時降低了功耗,因而能夠適用于面向無線通信、圖像處理等流媒體應(yīng)用的微處理器中以實現(xiàn)靈活的向量訪存。
【附圖說明】
[0016]圖1是本實施例中向量處理單元和存儲體組織方式的原理示意圖。
[0017]圖2是本實施例向量處理器中支持SMT的向量訪存裝置的結(jié)構(gòu)原理示意圖。
[0018]圖3為本實施例中訪存控制方法的實現(xiàn)流程示意圖。
[0019]圖4為本實施例中向量地址計算的結(jié)構(gòu)原理示意圖。
[0020]圖5為本實施例的執(zhí)行向量訪存的結(jié)構(gòu)原理示意圖。
[0021]圖例說明:1、指令譯碼單元;2、基址向量寄存器單元;3、偏移向量寄存器單元;4、通用向量寄存器單元;5、向量地址計算單元;51、地址計算子單元;6、向量存儲體。
【具體實施方式】
[0022]以下結(jié)合說明書附圖和具體優(yōu)選的實施例對本發(fā)明作進(jìn)一步描述,但并不因此而限制本發(fā)明的保護(hù)范圍。
[0023]如圖1、2所示,本實施例支持SMT的向量訪存裝置,包括基址向量寄存器單元2、偏移向量寄存器單元)以及向量地址計算單元5,基址向量寄存器單元2、偏移向量寄存器單元3分別包括多組向量寄存器,每組向量寄存器由對應(yīng)向量處理器中各線程的多個寄存器構(gòu)成;向量地址計算單元5包括多個地址計算子單元51,每個地址計算子單元51分別與向量處理器中各存儲體一一對應(yīng)連接;各線程的基址、偏移地址分別通過基址向量寄存器單元2、偏移向量寄存器單元3中一組向量寄存器進(jìn)行獲取后,分別輸出至各地址計算子單元51進(jìn)行計算,得到各線程的訪存地址輸出至對應(yīng)的存儲體。
[0024]本實施例中,還包括通用向量寄存器單元4,通用向量寄存器單元4包括多組向量寄存器,每組向量寄存器由對應(yīng)向量處理器中各線程的多個寄存器構(gòu)成;通用向量寄存器單元4通過一組向量寄存器存儲各線程的訪存數(shù)據(jù)。
[0025]參見圖1,本實施例中SMD處理器的寬度為n,對應(yīng)向量處理單元的個數(shù)也為n,向量存儲器由η路BANK體(BANKO,……,BANKn-1)組成,η路向量處理單元和η路BANK
體分別--對應(yīng)。BANK體之間采用高位地址交叉方式編址,假設(shè)每個BANK體的行數(shù)為e,
每一行有w個字節(jié),則單個BANK體的容量為e*w字節(jié)。每個BANK體的地址范圍分別為
(e*w*0~e*w_l),(e*w*l ~e*w*2_l),......,(e*w*(n_l) ~e*w*n_l),分別對應(yīng)于 n 路向量處理單元的訪存尋址范圍。向量存儲器BANK體的每一行為w個字節(jié),w為2的整數(shù)冪次方,w*8為單個向量處理單元所能訪存的最大位寬,單個向量處理單元的訪存位寬可以為I字節(jié),2字節(jié),4字節(jié),……,w字節(jié),通過向量指令譯碼中的訪存粒度信息可以確定單個向量處理單元的訪存位寬。
[0026]本實施例中,通用向量寄存器單元4包括m組通用向量寄存器VR,每組通用向量寄存器VR包括η個分別對應(yīng)各線程的通用寄存器,其中m=log2t,且t是通用向量寄存器的位數(shù)。
[0027]基址寄存器單元2包括Ii1組基址向量寄存器VAR,每組基址向量寄存器VAR包括η個分別對應(yīng)各線程的基址寄存器,其中Ic1=1g2S1,且S1為基址向量寄存器VAR的位數(shù);偏移向量寄存器單元3包括k2組偏移向量寄存器V0R,每組偏移向量寄存器VOR包括η個分別對應(yīng)各線程的偏移寄存器,其中k2=log2s2,且S2為偏移向量寄存器的位數(shù),其中k=log2s ;
參見圖2,本實施例中采用m (m=log2t)組通用向量寄存器VR組成通用向量寄存器文件(VRF),每組通用向量寄存器VR包含η個通用寄存器;采用k (k=log2s)組基址向量寄存器VAR組成基址向量寄存器文件VARF,每組基址向量寄存器VAR包含η個基址寄存器;采用k (k=log2s)組偏移向量寄存器VOR組成偏移向量寄存器文件V0RF,每組偏移向量寄存器VOR包含η個偏移寄存器;采用η路地址計算子單元AGU組成向量地址計算單元VAGU,分別進(jìn)行地址計算,得到η路向量訪存地址,用這η路向量訪存地址分別訪問向量存儲體η路BANK體,其中基址向量寄存器VAR和偏移向量寄存器VOR為s位,通用向量寄存器VR為t位。
[0028]本實施例中,η對基址向量寄存器VAR和偏移向量寄存器VOR對應(yīng)η路PE的SMT線程,對應(yīng)η路運算單元ΡΕ,每個運算單元PE擁有k個基址寄存器AR和k個偏移寄存器0R,共k組基址向量寄存器VAR和k組偏移向量寄存器V0R?;废蛄考拇嫫魑募ARF是一個二維的組織結(jié)構(gòu),其中一維是運算單元PE的個數(shù)n,另一維是每個運算單元PE擁有的基址寄存器AR的個數(shù)k ;偏移向量寄存器文件VORF也為一個二維的組織結(jié)構(gòu),其中一維是運算單元PE的個數(shù)n,另一維是每個運算單元PE擁有的偏移寄存器OR的個數(shù)k。
[0029]本實施例中,還包括相互連接的SIMT指令生成單元以及指令譯碼單元1,指令譯碼單元I分別與所述基址向量寄存器單元2、偏移向量寄存器單元3連接;SMT指令生成單元用于根據(jù)各線程的訪存指令指定讀寫訪問類型以及所述基址向量寄存器單元2、偏移向量寄存器單元3、通用向量寄存器單元4中對應(yīng)組的寄存器,并生成對應(yīng)的SMT訪存指令;指令譯碼單元用于對所SMD指令生成單元生成的SMT訪存指令進(jìn)行譯碼,得到所指定的讀寫訪問類型以及所述基址向量寄存器單元、偏移向量寄存器單元、通用向量寄存器單元中對應(yīng)組的寄存器。
[0030]本實施例中,SMT訪存指令的指令域包括:操作類型0P、尋址模式Mode、基址向量寄存器編號VAR_ID、偏移向量寄存器編號V0R_ID和通用向量寄存器編號DST_ID,其中VAR_ID、V0R_ID為s位,DST_ID為t位。操作類型0P、尋址模式Mode分別用于指定操作類型以及尋址模式,基址向量寄存器編號VAR_ID、偏移向量寄存器編號V0R_ID和通用向量寄存器編號DST_IDf則分別用于指定基址向量寄存器單元2、偏移向量寄存器單元3、通用向量寄存器單元4中對應(yīng)組的向量寄存器。如圖2所示,SIMT訪存指令具體包括訪存粒度、讀/寫訪問有效位、符號位擴(kuò)展、VAR_ID、VOR_ID、DST_ID等數(shù)據(jù)位,其中讀/寫訪問有效位用于區(qū)分這條向量訪存指令是寫指令還是讀指令符號位擴(kuò)展用于表示如果是讀指令,在某些訪存粒度下,是否需要對讀出的數(shù)據(jù)進(jìn)行符號位擴(kuò)展。
[0031]本實施例中,基址向量寄存器單元2、偏移向量寄存器單元3、通用向量寄存器單元4均包括寄存器組選擇器,寄存器組選擇器與指令譯碼單元I連接。寄存器組選擇器根據(jù)指令譯碼單元I的譯碼結(jié)果選擇對應(yīng)組的向量