前言
本章繼續(xù)講述計(jì)算機(jī)硬件系統(tǒng)設(shè)計(jì)的內(nèi)容,之前已經(jīng)大概說明了 ALU 和存儲(chǔ)系統(tǒng)的設(shè)計(jì),本文講述CPU的設(shè)計(jì)。對(duì)應(yīng)的有單周期、多周期 CPU 設(shè)計(jì),以及流水線設(shè)計(jì),中斷處理會(huì)在后文中詳細(xì)說明,本文不進(jìn)行講述。
單周期 CPU 設(shè)計(jì)
數(shù)據(jù)通路
即定長指令周期,機(jī)器性能取決于最慢的指令,導(dǎo)致時(shí)鐘周期過長。
指令類型分為三類,R型指令、I型指令、J型指令。
數(shù)據(jù)通路如下
最左側(cè)多路選擇器,當(dāng)執(zhí)行有條件跳轉(zhuǎn)指令時(shí),選擇跳轉(zhuǎn)地址,跳轉(zhuǎn)地址由15位的立即數(shù)運(yùn)算得到;下一層為無條件跳轉(zhuǎn)指令選擇,當(dāng)執(zhí)行JAL(函數(shù)調(diào)用指令)或J(無條件跳轉(zhuǎn)指令)選擇由26位立即數(shù)運(yùn)算得到的地址;第三層選擇為JR指令(跳轉(zhuǎn)到寄存器記錄地址,一般用于在JAL調(diào)用退出時(shí)使用),一般選擇$31號(hào)寄存器保存JAL執(zhí)行時(shí)PC的值,函數(shù)調(diào)用后,再讀取 $31 的值進(jìn)行返回。
本設(shè)計(jì)支持24條指令,這里不一一介紹,有疑問可以評(píng)論共同探討學(xué)習(xí)。
控制器設(shè)計(jì)
控制器是通過分解指令,由OP和FUNC字段確定某種運(yùn)算,給出控制信號(hào),協(xié)同數(shù)據(jù)通路的工作,確保數(shù)據(jù)的正確流通。
控制器設(shè)計(jì)方法可以使用硬布線設(shè)計(jì),也可以采用微程序設(shè)計(jì)。
第一步需要分析指令在執(zhí)行過程需要的控制信號(hào),之后根據(jù)分析,設(shè)計(jì)電路,使用課程包中的EXCEL,填寫輸入信號(hào),生成控制器電路,以設(shè)計(jì)控制器。由上圖 指令-控制信號(hào) 得到控制信號(hào)生成表達(dá)式
將邏輯表達(dá)式輸入,自動(dòng)生成電路。
最后導(dǎo)入程序測試功能。
MIPS 指令流水線設(shè)計(jì)
理想流水線
理想流水線滿足以下特點(diǎn):階段數(shù)相同,所有指令經(jīng)過同樣的流程、階段;各段時(shí)延相同,各段傳輸延遲一致,不存在等待現(xiàn)象,所以設(shè)計(jì)時(shí)考慮最慢的處理過程;無資源沖突,各段之間不存在資源共享,各段完全并發(fā);無段間互鎖,進(jìn)入流水線的數(shù)據(jù)與部件不受其他執(zhí)行階段的影響。
這里不在介紹各段的執(zhí)行流程,細(xì)節(jié)參考MOOC課程。
流水接口部件設(shè)計(jì)
流水接口部件實(shí)際為寄存器的組合設(shè)計(jì),用于暫存數(shù)據(jù),本段輸出處理好的數(shù)據(jù)暫存于寄存器,寄存器為后段提供數(shù)據(jù)。
考慮設(shè)計(jì)不同位數(shù)的接口部件,方便后期直接使用,同時(shí)注意使用同步清零,防止異步清零時(shí)丟失數(shù)據(jù)。
氣泡流水線
在執(zhí)行跳轉(zhuǎn)指令時(shí),由于前段已經(jīng)加載其他指令,屬于誤取指令,故需要進(jìn)行處理。這里介紹采用插入氣泡的方法解決問題。這會(huì)導(dǎo)致流水行性能損失。
當(dāng)判斷流水線執(zhí)行跳轉(zhuǎn)指令時(shí),取指階段于譯碼階段設(shè)計(jì)同步清零信號(hào),清空流水線保證指令正確執(zhí)行。
當(dāng)流水段出現(xiàn)數(shù)據(jù)相關(guān)問題時(shí),也可以采用插入氣泡的方法解決問題。
數(shù)據(jù)重定向
使用氣泡解決沖突問題時(shí),流水線會(huì)有性能損失,故而可以采用數(shù)據(jù)重定向方法解決該類問題。
主體思路是通過寄存器使用檢查,確定段間的爭用關(guān)系,通過設(shè)計(jì)電路,完成數(shù)據(jù)重定向。
寄存器使用檢查
通過之前設(shè)計(jì)完成的控制信號(hào)生成文件,只關(guān)注RegDst信號(hào)與RegWrite信號(hào),即輸入為6位OP字段,6位FUNC字段,輸出兩個(gè)寄存器信號(hào)。
寄存器沖突檢測
通過設(shè)計(jì)好的寄存器檢查電路組件,設(shè)計(jì)比較電路。
數(shù)據(jù)重定向?qū)崿F(xiàn)
總結(jié)
本文僅提供設(shè)計(jì)思路,如有錯(cuò)誤還請(qǐng)指正,也希望各位讀者可以提供寶貴意見與指導(dǎo),共同探討學(xué)習(xí)。設(shè)計(jì)不盡完善,還有許多需要改進(jìn)的地方,希望拙筆可以拋磚引玉,之后可以出現(xiàn)更多完善優(yōu)秀的設(shè)計(jì)提供參考。文章來源:http://www.zghlxwxcb.cn/news/detail-781255.html
本人也因?qū)τ布O(shè)計(jì)極為感興趣,歡迎各位提問交流,最后也衷心祝愿各位讀者萬事勝意,身體健康。文章來源地址http://www.zghlxwxcb.cn/news/detail-781255.html
到了這里,關(guān)于【計(jì)算機(jī)硬件系統(tǒng)設(shè)計(jì)(華科)——單周期MIPS CPU(Logisim 實(shí)現(xiàn))】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!