經(jīng)過(guò)一周的努力,終于將流水部分的Verilog代碼給寫(xiě)出,并給出了自己的MIPS匯編測(cè)試代碼,過(guò)了,可能里面還有一些小細(xì)節(jié)沒(méi)處理好,但這不影響我的總體的框架,總的框架已將架構(gòu)起來(lái)沒(méi)什么問(wèn)題,后面的工作就是,加入異常中斷的處理,最好能下板子,這樣才是有始有終。雖然前面做過(guò)多周期的異常中斷的處理,但是我知道流水部分的異常中斷處理和多周期的是不一樣的,其實(shí),多周期和單周期對(duì)指令的并行是為零的,它們都是一條一條的串行執(zhí)行的,做中斷只是為了,了解指令的切分,和MIPS的中斷異常處理機(jī)制。關(guān)鍵是對(duì)CPU有深入的了解。正如“紙上得來(lái)終覺(jué)淺,覺(jué)知此事要躬行!”這句話(huà)可以說(shuō)是我這是科創(chuàng)項(xiàng)目的核心感想。以前只是對(duì)計(jì)算機(jī)的底層有一種不懂,神秘的感覺(jué)。隨著項(xiàng)目的不斷往前推,對(duì)底層的認(rèn)識(shí)也加深了,不像以前那樣浮于表面了。結(jié)合這學(xué)期的OS課程,受益匪淺,最好有時(shí)間能摸透Linux OS 的代碼,給我的CPU上OS,這樣就完美了。
這次的流水實(shí)現(xiàn)比較緊,主要是指導(dǎo)老師追的緊(不過(guò)還得感謝馮老師的嚴(yán)格要求,我才能如此,當(dāng)然我的努力也是很重要的。關(guān)于這一點(diǎn)我得吃幾句:老師的嚴(yán)格只是外因,主要還是靠自己,努力的孩子,是不需要?jiǎng)e人的管束,我應(yīng)該是輸入半自覺(jué)的學(xué)生,。還好有馮老師的督促。),與多周期相比,我對(duì)多周期的深入了解是在做中斷異常處理的時(shí)候,那是,幾乎一個(gè)月都在看書(shū),《see MIPS run in Linux》的3-6章節(jié)快被我方便了,那是的感覺(jué)就是,它(中斷異常)明明就在眼前,可就是捉不住,最后在曾學(xué)長(zhǎng)的指點(diǎn)下,我是醍醐灌頂,一下只就頓悟了。接下來(lái)時(shí)順暢的編程,往往后期的測(cè)試也是關(guān)鍵,也是能力提升和對(duì)你系統(tǒng)的更深更全面的掌握,所以有了問(wèn)題,一定自己弄(在條件允許),反正多周期我是了解的挺多了,流水由于上的快,有些還沒(méi)消化,細(xì)節(jié)部分。
下面是,部分仿真結(jié)果的波形圖和DM,RF中的值:



經(jīng)過(guò)三周的努力終于將多周期的異常和中斷(Exception and Interruption)個(gè)解決了,經(jīng)過(guò)此次的實(shí)現(xiàn),對(duì)MIPS的中斷有了即中斷的整個(gè)流程有了更深的了解。
以前只是會(huì)背書(shū)上的概念,知其然而不知其所以然,現(xiàn)在深入底層實(shí)現(xiàn)以下,才知其所以然。就比如什么時(shí)候該關(guān)中斷,什么時(shí)候該開(kāi)中斷都是有講究的,其中還涉及到操作系統(tǒng)課上老師講的原子性的問(wèn)題(我明白了為什么可以簡(jiǎn)單粗暴的用關(guān)中斷解決了)。
知識(shí),理論你只有實(shí)踐了,你才是真正懂得了這個(gè)知識(shí),這樣才可應(yīng)用的更得心應(yīng)手。
紙上得來(lái)終覺(jué)淺,絕知此事要躬行。正至理名言,這句話(huà),特別是我在做這個(gè)項(xiàng)目時(shí),深有體會(huì)。
不過(guò)目前的中斷。