一種risc處理器的單/雙/四精度浮點(diǎn)數(shù)據(jù)相關(guān)電路及操作數(shù)獲取方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及浮點(diǎn)流水線數(shù)據(jù)的相關(guān)設(shè)計(jì)領(lǐng)域,具體為一種RISC處理器的單/雙/四精度浮點(diǎn)數(shù)據(jù)相關(guān)電路及操作數(shù)獲取方法。
【背景技術(shù)】
[0002]目前已經(jīng)有很多關(guān)于處理器的浮點(diǎn)運(yùn)算設(shè)計(jì)研究,但關(guān)于浮點(diǎn)流水線的研究相對(duì)較少。由于浮點(diǎn)數(shù)據(jù)包括單/雙/四精度,這就意味著單精度浮點(diǎn)32位數(shù)據(jù)可能與單、雙、四精度浮點(diǎn)數(shù)據(jù)發(fā)生相關(guān);雙精度浮點(diǎn)64位數(shù)據(jù)可能與單、雙、四精度浮點(diǎn)數(shù)據(jù)發(fā)生相關(guān),且64位數(shù)據(jù)中高32位和低32位數(shù)據(jù)的相關(guān)性情況可能不同;四精度浮點(diǎn)128位數(shù)據(jù)可能與單、雙、四精度浮點(diǎn)數(shù)據(jù)發(fā)生相關(guān),且128位數(shù)據(jù)中最高32位、次高32位、次低32位,最低32位數(shù)據(jù)的相關(guān)性情況可能不同。
[0003]關(guān)于單/雙/四精度浮點(diǎn)數(shù)據(jù)根據(jù)不同精度的不同相關(guān)情況眾多,都存在根據(jù)各種可能相關(guān)情況進(jìn)行數(shù)據(jù)相關(guān)判定,以及操作數(shù)的選取,邏輯復(fù)雜度高,延時(shí)長(zhǎng)的問(wèn)題,限制了浮點(diǎn)流水線的頻率。單一的根據(jù)各種可能相關(guān)情況進(jìn)行各精度浮點(diǎn)數(shù)據(jù)相關(guān)的判定邏輯,以及判定相關(guān)性后,正確數(shù)據(jù)的選取邏輯較復(fù)雜,復(fù)雜的邏輯延時(shí)已經(jīng)成為限制浮點(diǎn)流水線頻率提高的瓶頸。同時(shí),一些處理器采用停頓流水線技術(shù),判定如果發(fā)生數(shù)據(jù)相關(guān),則等待相關(guān)的浮點(diǎn)指令執(zhí)行完畢,然后從浮點(diǎn)寄存器文件中讀取相應(yīng)的浮點(diǎn)數(shù)據(jù),該方法并未真正減少浮點(diǎn)數(shù)據(jù)的相關(guān)性判定邏輯,同時(shí)由于停頓了流水線,減少了流水線的吞吐率,直接降低了浮點(diǎn)流水線的性能。
【發(fā)明內(nèi)容】
[0004]針對(duì)現(xiàn)有技術(shù)中存在的問(wèn)題,本發(fā)明提供一種邏輯延時(shí)短,能夠有效快速判定各精度浮點(diǎn)數(shù)據(jù)的相關(guān)性,并獲取正確的浮點(diǎn)數(shù)據(jù)來(lái)源RISC處理器的單/雙/四精度浮點(diǎn)數(shù)據(jù)相關(guān)電路及操作數(shù)獲取方法。
[0005]本發(fā)明是通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn):
[0006]—種RISC處理器的單/雙/四精度浮點(diǎn)數(shù)據(jù)相關(guān)電路,包括一個(gè)浮點(diǎn)操作數(shù)讀取使能模塊、一個(gè)浮點(diǎn)目的寄存器寫使能模塊,一個(gè)浮點(diǎn)寄存器文件讀取模塊,以及四個(gè)相關(guān)性判定結(jié)果選擇模塊;
[0007]浮點(diǎn)操作數(shù)讀取使能模塊的輸入端接入指令譯碼的浮點(diǎn)操作數(shù)寄存器號(hào)frs_reg、浮點(diǎn)操作數(shù)讀取使能frs_en和浮點(diǎn)操作數(shù)精度f(wàn)rs_precis1n,輸出各組浮點(diǎn)操作數(shù)的讀取使能frs_en_xx ;其中,xx分別為00,01,10,11且以下含義相同;
[0008]浮點(diǎn)目的寄存器寫使能模塊輸入為指令譯碼的浮點(diǎn)目的寄存器號(hào)frcLreg、浮點(diǎn)結(jié)果寫使能frd_en,以及浮點(diǎn)結(jié)果精度f(wàn)rd_precis1n,輸出各組浮點(diǎn)目的寄存器號(hào)的寫使能frd_en_xx ;其中,frd_en_xx在各流水級(jí)中進(jìn)行傳遞,即各流水級(jí)都有對(duì)應(yīng)的frd_en_
XX ;
[0009]浮點(diǎn)寄存器文件讀取模塊輸入為指令譯碼的浮點(diǎn)操作數(shù)寄存器號(hào)frs_reg和浮點(diǎn)操作數(shù)讀取使能frs_en,輸出各組浮點(diǎn)寄存器號(hào)的相應(yīng)數(shù)據(jù)Rxx ;
[0010]四套相關(guān)性判定結(jié)果選擇模塊的輸入為各組浮點(diǎn)寄存器號(hào)的相應(yīng)數(shù)據(jù)RXX、各流水級(jí)的各組浮點(diǎn)目的寄存器號(hào)的寫使能frd_en_xx、各組浮點(diǎn)操作數(shù)的讀取使能frs_en_xx和對(duì)應(yīng)各流水級(jí)的浮點(diǎn)結(jié)果fresult_xx,輸出為各組浮點(diǎn)操作數(shù)frs_op_xx。
[0011]優(yōu)選的,在浮點(diǎn)操作數(shù)讀取使能模塊中,產(chǎn)生四組浮點(diǎn)操作數(shù)讀取使能frs_en_xx的邏輯電路不同;
[0012]frs_en_00為四選一選擇器O的輸出,frs_prect1n連接四選一選擇器O的選擇端;四選一選擇器O中的01端連接frs_reg[0]的反、frs_reg[l]的反和frs_en三者的與邏輯,10端連接frs_reg[l]的反和frs_en的與邏輯,11端連接frs_en,00端連接信號(hào)‘O,;
[0013]frs_en_01為四選一選擇器I的輸出,frs_prect1n連接四選一選擇器I的選擇端;四選一選擇器I的01端連接frs_reg[0]、frs_reg[l]的反和frs_en三者的與邏輯,10端連接frs_reg[l]的反和frs_en的與邏輯,11端連接frs_en,00端連接信號(hào)‘0’ ;
[0014]frs_en_10為四選一選擇器2的輸出,frs_prect1n連接四選一選擇器2的選擇端;四選一選擇器2的01端連接frs_reg[0]的反、frs_reg[l]和frs_en三者的與邏輯,10端連接frs_reg[l]和frs_en的與邏輯,11端連接frs_en,00端連接信號(hào)‘O,;
[0015]frs_en_ll為四選一選擇器3的輸出,frs_prect1n連接四選一選擇器3的選擇端;四選一選擇器3的01端連接frs_reg[0]、frs_reg[l]和frs_en三者的與邏輯,10端連接frs_reg[l]和frs_en的與邏輯,11端連接frs_en,00端連接信號(hào)‘0’。
[0016]進(jìn)一步,浮點(diǎn)目的寄存器寫使能模塊也根據(jù)浮點(diǎn)目的寄存器號(hào)frd_reg、浮點(diǎn)結(jié)果寫使能frd_en,以及浮點(diǎn)結(jié)果精度f(wàn)rcLprecis1n,采用產(chǎn)生四組浮點(diǎn)操作數(shù)讀取使能frs_en_xx的邏輯電路,獲得相應(yīng)四組浮點(diǎn)目的寄存器號(hào)寫使能frd_en_XX。
[0017]優(yōu)選的,浮點(diǎn)寄存器文件讀取模塊用于根據(jù)操作數(shù)讀取使能frs_en進(jìn)行寄存器文件的讀??;ifrs_en有效時(shí),根據(jù)浮點(diǎn)操作數(shù)寄存器號(hào)frS_reg[N:2]對(duì)浮點(diǎn)寄存器文件進(jìn)行讀取,產(chǎn)生各組浮點(diǎn)寄存器號(hào)的相應(yīng)數(shù)據(jù)Rxx,否則輸出數(shù)據(jù)為能夠?yàn)镺的default值。
[0018]優(yōu)選的,四套相關(guān)性判定結(jié)果選擇模塊用于分別進(jìn)行浮點(diǎn)數(shù)據(jù)相關(guān)性判定和結(jié)果選擇處理;
[0019]當(dāng)RISC處理器為五級(jí)流水結(jié)構(gòu)時(shí),浮點(diǎn)操作數(shù)frs_op_xx獲取的相關(guān)性判定結(jié)果選擇模塊電路包括依次級(jí)聯(lián)的與門和選擇器;
[0020]浮點(diǎn)操作數(shù)frs_op_xx作為二選一選擇器O的輸出;
[0021]浮點(diǎn)操作數(shù)寄存器號(hào)使能frs_en_xx,E級(jí)浮點(diǎn)目的寄存器號(hào)使能frd_en_xx,以及浮點(diǎn)操作數(shù)寄存器號(hào)frs_reg[N:2]與E級(jí)浮點(diǎn)目的寄存器號(hào)frd_reg[N:2]的比較結(jié)果,三者的與邏輯作為二選一選擇器O的選擇端;二選一選擇器O的I端連接E級(jí)浮點(diǎn)結(jié)果fresult_xx,0端連接二選一選擇器I的輸出;其中N為寄存器號(hào)的最高位且以下含義相同;
[0022]浮點(diǎn)操作數(shù)寄存器號(hào)使能frs_en_xx,M級(jí)浮點(diǎn)目的寄存器號(hào)使能frd_en_xx,以及浮點(diǎn)操作數(shù)寄存器號(hào)frs_reg[N:2]與M級(jí)浮點(diǎn)目的寄存器號(hào)frd_reg[N:2]的比較結(jié)果,三者的與邏輯作為二選一選擇器I的選擇端;二選一選擇器I的I端連接M級(jí)浮點(diǎn)結(jié)果fresult_xx,0端連接二選一選擇器2的輸出;
[0023]浮點(diǎn)操作數(shù)寄存器號(hào)使能frs_en_xx、W級(jí)浮點(diǎn)目的寄存器號(hào)使能frd_en_xx,以及浮點(diǎn)操作數(shù)寄存器號(hào)frs_reg[N:2]與W級(jí)浮點(diǎn)目的寄存器號(hào)frd_reg[N:2]的比較結(jié)果,三者的與邏輯作為二選一選擇器2的選擇端;二選一選擇器2的I端連接W級(jí)浮點(diǎn)結(jié)果fresult_xx,0端連接二選一選擇器3的輸出;
[0024]浮點(diǎn)操作數(shù)寄存器號(hào)使能frS_en_XX作為二選一選擇器3的選擇端;二選一選擇器3的I端連接浮點(diǎn)寄存器號(hào)的相應(yīng)數(shù)據(jù)Rxx,0端連接能夠?yàn)镺的default值。
[0025]一種RISC處理器的單/雙/四精度浮點(diǎn)操作數(shù)獲取方法,包括如下步驟,
[0026]步驟1,將浮點(diǎn)操作數(shù)和浮點(diǎn)結(jié)果,根據(jù)每個(gè)浮點(diǎn)寄存器號(hào)存儲(chǔ)32位數(shù)據(jù)分別分為四組;
[0027]步驟2,浮點(diǎn)操作數(shù)相關(guān)性判定控制及結(jié)果選擇;對(duì)四組浮點(diǎn)操作數(shù)通過(guò)四套相關(guān)判定結(jié)果選擇邏輯,分別進(jìn)行相關(guān)性判定,獲得四組浮點(diǎn)操作數(shù)結(jié)果,并拼接成最終的浮點(diǎn)操作數(shù);其中,每套控制邏輯相同,控制信號(hào)不同。
[0028]優(yōu)選的,步驟I中,根據(jù)每個(gè)浮點(diǎn)寄存器號(hào)存儲(chǔ)32位數(shù)據(jù),將四精度128位浮點(diǎn)操作數(shù)劃分為四組,分別為frs_op_00、frs_op_01、frs_op_10和frs_op_ll,每組都為32位數(shù)據(jù),分別對(duì)應(yīng)于浮點(diǎn)操作數(shù)寄存器號(hào)最低兩位為00、01、10和11的數(shù)據(jù);
[0029]四精度128位浮點(diǎn)結(jié)果也分為四組,分別為fresult_00、fresult_01、fresult_10和fresUlt_ll,每組都為32位數(shù)據(jù),分別對(duì)應(yīng)于浮點(diǎn)目的寄存器號(hào)最低兩位為00、01、10和11的數(shù)據(jù);
[0030]根據(jù)以上分組,雙精度64位浮點(diǎn)操作數(shù)能夠由frs_op_00和frs_op_01或frs_op_10和frs_op_ll兩組拼接組成,雙精度64位浮點(diǎn)結(jié)果可由fresult_00和fresult_01或fresult_10和fresult_ll兩組拼接組成;單精度32位浮點(diǎn)操作數(shù)為frs_op_00、frs_op_0U frs_op_10 或 frs_op_ll,單精度 32 位浮點(diǎn)結(jié)果為 fresult_00、fresult_01、fres