- Link類跳轉指令可以拆分為兩個部分,一個是跳轉,即下一個PC的生成,如果將分支條件的比較放到譯碼級來進行,則這部分只涉及取值級和譯碼級流水;另一個是Link操作,簡單來說就是寫寄存器,這部則主要涉及到執行級、訪存級、寫回級。
- 根據指令規范文檔可知,JAL指令完成跳轉目標地址的生成,并將PC+8寫入到?31號?寄存器中。跳轉這部分功能可以復用J指令的數據通路,而保存返回地址的操作在原有的基礎上無法完成,需要增加新的數據通路。
-
寫寄存器涉及到寫端口的地址和寫數據,所以對于寫地址,需要調整通用寄存器堆寫端口的地址輸入waddr的生成邏輯,增加一個固定數值31作為新的輸入;而對于寫數據,需要得到PC+8,可以復用ALU的加法器,只不過第一個源操作數原來是僅來自寄存器堆的第一個輸出端口,需要添加一個二選一部件,使其可以選擇PC作為第一個源操作數,第二個需要將原有的二選一部件調整為三選一部件,8作為第三個輸入。