一種risc處理器的浮點處理單元集成電路及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及嵌入式處理器領(lǐng)域,具體為一種RISC處理器的浮點處理單元集成電路及方法。
【背景技術(shù)】
[0002]隨著工程應(yīng)用對處理器計算精度的更高要求,要求處理器支持單、雙、甚至四精度的浮點指令運算,而浮點指令的運算大多是在獨立的浮點執(zhí)行部件中完成的,為此應(yīng)研宄如何根據(jù)浮點執(zhí)行部件進(jìn)行浮點處理單元的集成。
[0003]目前有很多關(guān)于提高浮點流水線的技術(shù),如專利“基于全展開的全流水128位精度浮點累加器”(CN 201010180381.8),“一種浮點乘加融合單元的五級流水結(jié)構(gòu)”(ZL200710099408.9),但均不是對于浮點處理單元的集成。專利“擴(kuò)展雙精度的80位浮點處理單元在處理器中的集成系統(tǒng)及方法”,(申請公布號:CN104156195A),給出了一種針對5級流水線擴(kuò)展雙精度的80位浮點處理單元在處理器的集成方法,但該集成方法需等待浮點指令四級流水全部執(zhí)行完才可以再對定點指令進(jìn)行預(yù)譯碼,這直接降低了指令的執(zhí)行性能,另外,將一條多精度浮點指令的執(zhí)行狀態(tài)變?yōu)槎鄠€單周期指令的執(zhí)行狀態(tài),也需對取指和預(yù)譯碼模塊進(jìn)行控制管理,確保在浮點指令的執(zhí)行周期不進(jìn)行新指令的讀取和譯碼,對原處理器流水線設(shè)計邏輯修改較多,集成方法通用性不強。
【發(fā)明內(nèi)容】
[0004]針對現(xiàn)有技術(shù)中存在的問題,本發(fā)明提供一種定點流水線和浮點流水線能夠協(xié)同并行執(zhí)行,定點指令和浮點指令運行高效,通用性強的RISC處理器的浮點處理單元集成電路及方法。
[0005]本發(fā)明是通過以下技術(shù)方案來實現(xiàn):
[0006]一種RISC處理器的浮點處理單元集成電路,包括七級的定點流水線和六級的浮點流水線,以及與門;
[0007]所述七級的定點流水線包括依次連接的取指模塊、譯碼模塊、寄存器訪問模塊、執(zhí)行模塊、存儲器訪問模塊、異常處理模塊和數(shù)據(jù)寫回模塊,以及設(shè)置在每一個定點流水級輸出端的定點流水級間寄存器;
[0008]所述六級的浮點流水線包括依次連接在取指模塊輸出端的譯碼級FD模塊、寄存器訪問級FA模塊、執(zhí)行級FE模塊、存儲器訪問級FM模塊、異常處理級FX模塊和數(shù)據(jù)寫回級FW模塊,以及設(shè)置在每一個浮點流水級輸出端的浮點流水級間寄存器;
[0009]所述的浮點流水線還包括浮點執(zhí)行部件FP和浮點寄存器文件堆;浮點執(zhí)行部件FP的輸入端分別連接譯碼級FD模塊、寄存器訪問級FA模塊和執(zhí)行級FE模塊輸出的執(zhí)行控制信號;浮點執(zhí)行部件FP的輸出端輸出執(zhí)行結(jié)果和浮點運算完成信號fdone分別連接執(zhí)行級FE模塊;浮點寄存器文件堆的輸入端連接譯碼級FD模塊用于讀控制,以及連接數(shù)據(jù)寫回級FW模塊用于寫數(shù)據(jù)和寫控制;浮點寄存器文件堆的輸出端連接寄存器訪問級FA模塊用于讀數(shù)據(jù);
[0010]所述與門的輸入端分別連接定點流水線的停頓信號holdn與浮點運算完成信號f done,輸出端輸出處理器流水線停頓信號new_ho I dn控制定點和浮點流水線的停頓。
[0011]優(yōu)選的,存儲器訪問級FM模塊輸出load類指令讀取存儲器的地址fraddr,store類指令讀取的浮點寄存器文件數(shù)據(jù)fwdata,以及需要寫入存儲器的地址fwaddr連接至存儲器訪問模塊的輸入。
[0012]優(yōu)選的,異常處理級FX模塊輸出浮點運算異常指示ferr連接至異常處理模塊的輸入,同時異常處理模塊輸出load類指令讀取異常f 1aderr和讀取數(shù)據(jù)frdata連接至異常處理級FX模塊的輸入。
[0013]優(yōu)選的,譯碼級FD模塊包括初始譯碼模塊、數(shù)據(jù)相關(guān)判決模塊、異常檢測模塊和FP執(zhí)行控制產(chǎn)生模塊;
[0014]定點流水線取指模塊輸出的指令連接至異常檢測模塊和初始譯碼模塊的輸入,異常檢測模塊輸出浮點指令異常指示ftrap、浮點指令異常類型ftt,其中ftrap連接數(shù)據(jù)相關(guān)判決模塊的輸入;
[0015]初始譯碼模塊輸出浮點源操作數(shù)I寄存器號frsl、浮點源操作數(shù)2寄存器號frs2、浮點目的寄存器號frd、浮點目的寄存器的寫使能frd_w、浮點源操作數(shù)I讀取初始使能frslr、浮點源操作數(shù)2讀取使能frs2r、浮點運算指令碼fopf,其中frsl、frs2、frslr、frs2r連接至數(shù)據(jù)相關(guān)判決模塊的輸入,fopf連接至FP執(zhí)行控制產(chǎn)生模塊的輸入;
[0016]后繼流水級目的寄存器號和相應(yīng)寫使能信號連接數(shù)據(jù)相關(guān)判決模塊的輸入,數(shù)據(jù)相關(guān)判決模塊輸出為浮點源操作數(shù)I讀取使能frsl_r、浮點源操作數(shù)2讀取使能frs2_r、浮點源操作數(shù)I來源選擇frsl_sel、浮點源操作數(shù)2來源選擇frs2_sel、數(shù)據(jù)相關(guān)阻塞pc指示lock_pc、浮點執(zhí)行控制信號fpctrl,其中fpctrl連接FP執(zhí)行控制產(chǎn)生模塊的輸入,F(xiàn)P執(zhí)行控制輸出產(chǎn)生譯碼級FD模塊的執(zhí)行控制信號。
[0017]進(jìn)一步,寄存器訪問級FA模塊包括數(shù)據(jù)選擇模塊、數(shù)據(jù)對其模塊和FP執(zhí)行控制模塊;
[0018]浮點源操作數(shù)I來源選擇frsl_sel、浮點源操作數(shù)2來源選擇frS2_Sel和后繼流水級結(jié)果值連接至數(shù)據(jù)選擇模塊的輸入,數(shù)據(jù)選擇模塊的輸出初始源操作數(shù)I信號foplt和初始源操作數(shù)2信號fop2t連接至數(shù)據(jù)對齊模塊的輸入,數(shù)據(jù)對齊模塊輸出浮點源操作數(shù)I信號fopl和浮點源操作數(shù)2信號fop2 ;
[0019]浮點運算指令碼fopf和浮點指令異常指示ftrap連接FP執(zhí)行控制模塊的輸入,F(xiàn)P執(zhí)行控制模塊輸出寄存器訪問級FA的執(zhí)行控制信號。
[0020]再進(jìn)一步,執(zhí)行級FE模塊包括Idst地址產(chǎn)生模塊和浮點執(zhí)行控制模塊;
[0021]浮點源操作數(shù)fopl和fop2分別連接至Idst地址產(chǎn)生模塊的輸入,Idst地址產(chǎn)生模塊輸出寫入存儲器地址fwaddr、寫入存儲器數(shù)據(jù)fwdata、讀取存儲器地址fraddr ;
[0022]浮點運算指令碼fopf、執(zhí)行結(jié)果和浮點運算完成fdone連接至浮點執(zhí)行控制的輸入,浮點執(zhí)行控制模塊輸出浮點運算結(jié)果fresult和浮點運算異常fexCo
[0023]一種RISC處理器的浮點處理單元集成方法,基于如再進(jìn)一步所述的一種RISC處理器的浮點處理單元集成電路,包括如下步驟,
[0024]對處理器流水線停頓的控制管理的步驟;
[0025]將定點流水線停頓信號holdn與浮點運算完成信號fdone相與作為處理器流水線停頓信號new_holdn控制定點和浮點流水線的停頓,其中fdone為高表示浮點運算完成,浮點運算未完成時fdone保持為低;
[0026]對浮點流水線各流水級的執(zhí)行控制步驟;具體包括如下操作,
[0027]I)浮點譯碼級FD模塊根據(jù)輸入的指令、后繼流水級目的寄存器號和相應(yīng)寫使能信號;輸出浮點源操作數(shù)I寄存器號frsl、源操作數(shù)2寄存器號frs2、浮點源操作數(shù)I讀取使能frsl_r、浮點源操作數(shù)2讀取使能frs2_r、浮點源操作數(shù)I來源選擇frsl_sel、浮點源操作數(shù)2來源選擇frs2_sel、浮點目的寄存器號frd、浮點目的寄存器的寫使能frd_w、浮點指令異常指示ftrap、浮點指令異常類型ftt、數(shù)據(jù)相關(guān)阻塞pc指示l0ck_pc、執(zhí)行控制信號和浮點運算指令碼fopf ;
[0028]浮點寄存器文件堆根據(jù)輸入的作為讀控制信號的frsl、frsl_r、frs2和frs2_r,在下一個時鐘周期上升沿讀出兩個源操作數(shù);
[0029]2)浮點寄存器訪問級FA模塊根據(jù)輸入的浮點源操作數(shù)I來源選擇frslsel、浮點源操作數(shù)2來源選擇frs2_sel、后繼流水級結(jié)果值、浮點指令異常指示ftrap和浮點運算指令碼fopf,輸出浮點源操作數(shù)fopl和fop2 ;
[0030]并將浮點目的寄存器號frd、浮點目的寄存器的寫使能frd_w、浮點指令異常指示ftrap、浮點指令異常類型ftt進(jìn)行傳遞;
[0031]3)浮點執(zhí)行級FE模塊根據(jù)輸入的浮點源操作數(shù)fopl、fop2,浮點運算指令碼fopf、執(zhí)行結(jié)果、浮點運算完成fdone,輸出寫入存儲器地址fwaddr、寫入存儲器數(shù)據(jù)fwdata、讀取存儲器地