四網(wǎng)合一網(wǎng)站建設(shè),seo排名點擊軟件推薦,騰訊公司網(wǎng)站,牡丹江疫情最新動向1-of-M的仲裁電路 為什么要實現(xiàn)oldest-first 功能的仲裁呢? 這是考慮到越是舊的指令,和它存在相關(guān)性的指令也就越多,因此優(yōu)先執(zhí)行最舊的指令,則可以喚醒更多的指令,能夠有效地提高處理器執(zhí)行指令的并行度,而且最舊的指…- 1-of-M的仲裁電路
- 為什么要實現(xiàn)oldest-first 功能的仲裁呢?
- 這是考慮到越是舊的指令,和它存在相關(guān)性的指令也就越多,因此優(yōu)先執(zhí)行最舊的指令,則可以喚醒更多的指令,能夠有效地提高處理器執(zhí)行指令的并行度,
- 而且最舊的指令還占據(jù)著處理器中其他的資源,例如重排序緩存(ROB)和Store Buffer等部件,越早地執(zhí)行這些舊的指令,就可以越早地釋放這些硬件資源,供后面的指令使用。
- 年齡信息的追蹤;
- 年齡信息指的是進入流水線的先后順序;
- in-order處理器,先執(zhí)行的比后執(zhí)行的要老;
- ort-of-order處理器,進入issue 隊列后,順序被打亂了,但是還有一個地方記錄著,即ROB;可以使用ROB_IDX,作為這條指令的年齡信息;
- 但是只直接使用rob_idx,無法準(zhǔn)確表達年齡信息;
- 解決方式:增加1bit, 即position bit;


- 位置值(position bit)相同時,ROB的地址值越小,對應(yīng)的指令越舊;
- 位置值(position bit)不同時,ROB的地址值越大,對應(yīng)的指令越舊。
- ?1-of-M的仲裁電路示意圖:

- 上述的示意圖中,需要解決兩個問題:
- 如何屏蔽掉發(fā)射隊列中那些還沒有準(zhǔn)備好的指令,使這些指令的年齡信息不會對仲裁電路的結(jié)果產(chǎn)生影響;
- 如何根據(jù)仲裁電路挑選出的年齡值,在發(fā)射隊列中找到對應(yīng)的指令?
- 將issue queue idx也隨著這個比較電路一直送下去;
- N-of-M的仲裁電路?
- 幾個 FU共用一個發(fā)射隊列,這個發(fā)射隊列需要在一個周期內(nèi)為每個 FU 都選擇出一條指令,這樣就要求它有一個 N-of-M 的仲裁電路;

- 折中方案如上:
- 圖8.30中存在四個FU: ALU0、ALU1、Mul/Div0和Mul/Div1,它們共用一個發(fā)射隊列
- 發(fā)射隊列的容量為M,每個FU都有一個專屬的 1-of-M 的仲裁電路。
- 當(dāng)指令被寫到發(fā)射隊列中的某個表項時,根據(jù)這條指令的類型,將這條指令分配給一個對應(yīng)的FU
- 如果存在功能相同的FU,則會按照輪流或者隨機的順序進行分配,這個分配的過程本質(zhì)上可以通過一個多路分配器(demultiplexer)來實現(xiàn),它將每個表項的ready信號根據(jù)指令的類型分配給不同的仲裁電路;
- 因為發(fā)射隊列中的每個表項都有可能存放不同類型的指令,所以每個FU 的仲裁電路都會有M 個輸入,執(zhí)行完整的 1-of-M 的仲裁過程,這樣,整個 N-of-M 的仲裁電路的延遲就只有1-of-M的仲裁電路的延遲了;
- 實際的實現(xiàn)方案:
- 將各種運算類型進行合并,使得幾個運算類型共用一個發(fā)射隊列;
- 將加減法、邏輯運算和移位運算合在一個FU中,這就傳統(tǒng)意義上的ALU,它們共用一個發(fā)射隊列;
- 將整數(shù)的乘法和除法操作合并在一起;
- 將訪問存儲器和訪問協(xié)處理器合并在一起;
- 將所有的浮點運算合并在一起;
- 這就形成了四個比較大的FU。
- 當(dāng)然,這只是最簡單的情況,在實際的設(shè)計中,需要對不同的指令集,甚至是不同的程序進行分析,才能對FU進行合理的歸類,得到相對優(yōu)化的分配結(jié)果。