?? nnarm.prog
字號:
------------------------------------------------------------------------
2001 3 22
經過5天的調試,存控已經可以使用,下面的工作是將流水線中的與存控接口的代碼移出來,成為cache控制器的一部分,從而為流水線的開發減輕負擔。
------------------------------------------------------------------------
------------------------------------------------------------------------
2001 3 23
1、 正在添加對跳轉指令的支持,但是,由于MEM和IF的訪存沖突,使得在兩者進入訪存之前必須先判斷,現在進入IF的判斷代碼已經完成,但是它總是占著訪存資源不放,當branch到達mem時,無法得到訪存資源,從而無法跳轉,而且mem的訪存判斷代碼還沒有完成,存為nnARM01_03_23_1.zip
2、 所有的訪存沖突控制代碼已經完成,流水線站的走停也解決了。但還有以下問題,首先,訪存沒有區分讀寫,其次,branch讀出的指令沒有干什么用,還有,本站的指令已經移到下一站了,本站的寄存器怎么辦,他是由前一站寫的,
3、 已經可以連續跳轉兩次,但是第二次跳轉以后狀態不定,存為nnARM01_03_24_final.zip
------------------------------------------------------------------------
------------------------------------------------------------------------
2001 3 24
1、 已經可以正常的運行連續的跳轉指令,存為nnARM01_03_24_1.zip
-------------------------------------------------------------------------
-------------------------------------------------------------------------
2001 4 3
1、重新安排系統結構,構造了指令預取部件InstructionPreFetch以克服cache的單周期延遲,目前僅僅支持讀操作,還沒有訪存和訪存時的等待,存為nnARM01_04_03_1.zip
-------------------------------------------------------------------------
-------------------------------------------------------------------------
2001 4 5
1、已經有了指令cache InstructionCacheController,256 byte ,4 section ,4 - way association,4 word per way,但是存控好像又不對了,存為nnARM01_04_05_1.zip
2、經過了改正,已經可以處理完全順序的訪存,隨機地址也能正確處理,存為nnARM01_04_05_2.zip
-------------------------------------------------------------------------
-------------------------------------------------------------------------
2001 4 6
1、在昨天的基礎上加入了顯示語句,可以更清楚的看到訪存的過程,然后加入了prefetch中對前向cache塊的預取,存為nnARM01_04_06_1.zip
-------------------------------------------------------------------------
-------------------------------------------------------------------------
2001 4 7
1、加入了寄存器文件,以及寄存器文件的測試文件,運行正常存為nnARM01_04_07_1.zip
-------------------------------------------------------------------------
-------------------------------------------------------------------------
2001 4 9
1、加入了Decoder,ALUWraper,ALUComb,Arbitrator等,還沒有通過測試。另外仍有以下功能沒有實現:
Wraper還不能讀WriteBus上傳送的結果
Decoder還不能清除已完成指令的重定向
存為nnARM01_04_09_2.zip
-------------------------------------------------------------------------
-------------------------------------------------------------------------
2001 4 15
1、寫了一個星期的文檔,今天終于又加入了一個桶形移位器BarrelShift,及其測試代碼,存為nnARM01_04_15_1.zip
-------------------------------------------------------------------------
-------------------------------------------------------------------------
2001 4 16
1、又有了補碼產生器complementary,用于實現減法。存為nnARM01_04_16_1.zip
-------------------------------------------------------------------------
-------------------------------------------------------------------------
2001 4 17
1、完成了adder和全功能的ALU。存為nnARM01_04_17_1.zip
-------------------------------------------------------------------------
-------------------------------------------------------------------------
2001 4 19
1、重新整理互聯,decoder_ARM中加了shifttype、shiftcount、thirdread,但還沒有實現邏輯
-------------------------------------------------------------------------
-------------------------------------------------------------------------
2001 4 20
1、整理好并實現了decoder_ARM,存為nnARM01_04_20_1.zip
2、整理好pipeline,存為nnARM01_04_20_2.zip
3、實現了三讀一寫的寄存器文件,存為nnARM01_04_20_3.zip
4、完全連好了,但是vcs編譯未過,存為nnARM01_04_20_4.zip
-------------------------------------------------------------------------
-------------------------------------------------------------------------
2001 4 22
1、編譯通過,存為nnARM01_04_22_1.zip,但是存在以下問題,
1.當某一comp-entr在時鐘前沿n完成計算并將結果打入writeresult,而后decode的指令要用到其結果,那么不管他在n+1前沿進入到那個comp-entr,他都無法得到他希望的結果,因為在n和n+1之間已經完成了寫操作。
2.無法通知decoder操作完成
3.pc應組織到reg file中
4.mem應該放到那里。
5.redorder還沒有實現
6.4個標志位怎樣處理
-------------------------------------------------------------------------
-------------------------------------------------------------------------
2001 4 23
1.問題3解決,存為nnARM01_04_23_1.zip。
-------------------------------------------------------------------------
-------------------------------------------------------------------------
2001 4 26
1、終于重新整理完了整個代碼,修正了一些錯誤,存為nnARM01_4_26_1.zip
-------------------------------------------------------------------------
-------------------------------------------------------------------------
2001 4 27
1、將整個寄存器文件加大為32個寄存器,其中前31個是通用的,后面的一個是用于結果連接的。存為nnARM01_04_27_1.zip
2、對于問題1的解決,可以在readbus和writebus之間建立通道,用三態門控制,如果decode時發現線上正在傳輸需要的結果,可以從writebus到readbus打通。
必須注意以下問題
1、decoder_ARM中必須還要包含以下功能邏輯,輸入寫總線的使能信號以及 compentry還有目標寄存器號,decoder應該判斷是否接受該結果進入寄存器文件,并從新產生使能信號。
2、從某一操作完成,到寫入寄存器并清除map,這一段時間發射的指令無法得到需要的結果。
剩余的問題:
4 22 問題 4 5 6以及4 27 問題2
存為nnARM01_04_27_2.zip
-------------------------------------------------------------------------
-------------------------------------------------------------------------
2001 4 29
1、終于解決4 27問題2,存為nnARM01_04_29_1.zip
-------------------------------------------------------------------------
-------------------------------------------------------------------------
2001 5 2
1、發現tomasulo結構我還不太了解,無法細化,只好先實現一個簡單的流水線,包含link,只有最簡單的alu指令,還沒有branch和memory
存為sARM01_05_02_1.zip
---------------------------------------------------------------------------
------------------------------------------------------------------------
2001 5 5
1、完成一個不可綜合的數據cache描述,還沒有通過錯誤檢查。存為sARM01_05_05_1.zip.下面的工作就是
1、修正流水線,以包含對WB的forward的支持
2、修改存控或者加一個mux以支持DCache的訪存請求,
3、增加訪存指令。
2、添加了load指令,但是發現需要增加一個simple 線程,如今只有alu的線程接口完成,其他還沒有.存為sARM01_05_05_2.zip
--------------------------------------------------------------------------
-------------------------------------------------------------------------
2001 5 6
1、完成了雙線程結構,并將wb的功能移到mem中,同時,修正了can go和enable/valid的功能:
1、當can go為0時,不能走,
2、否則valid表示是否是一個泡,即否是一個合法指令,
3、forwarding時,仍然只看目標寄存器,而不必看是否合法,因為當不合法時將輸出linkregister
存為sARM01_05_06_1.zip
----------------------------------------------------------------------
-----------------------------------------------------------------------
2001 5 7
1、修正了所錯誤,并開始書寫memorymux,存為sARM01_05_07_1.zip
------------------------------------------------------------------------
-----------------------------------------------------------------------
2001 5 11
1、將data memory獨立出來,讓data cache獨立訪問data memory,同時在mem中增加了訪問datacache的接口,并修正了所有的語法錯誤,存為sARM01_05_11_1.zip
-----------------------------------------------------------------------
-----------------------------------------------------------------------
2001 5 13
1、datacache controller不能變換狀態,當在時鐘前沿看到訪問使能時。存為sARM01_05_13_1.zip
-----------------------------------------------------------------------
-----------------------------------------------------------------------
2001 5 14
1、datacachecontroller之所以不能運行是因為always @(posedge clock or negedge reset)中if(reset==1'b1)以至于每次都是初始化,改成1'b0后就一切ok
load指令運行正常。
存為sARM01_05_14_1.zip
2、增加了load simple微操作,存為sARM01_05_14_2.zip
目前的問題是仍然不能區分byte和word。
3、完整的load支持,存為sARM01_05_14_3.zip
-----------------------------------------------------------------------
-------------------------------------------------------------------------
2001 5 15
1、正在添加store,只剩下mem stage中對各種store微操作的支持還沒有寫,存為sARM01_05_15_1.zip
-------------------------------------------------------------------------
--------------------------------------------------------------------------
2001 5 16
1、已經可以支持word store,byte store還沒有,下午再測,存為sARM01_05_16_1.zip
mem中由于到datacache的數據總線是雙向的,所以必須有一個暫存以及一個輸出控制,原來的版本只支持load,所以該處的錯誤沒有暴露出來,應該是當CanOutputToDataBus==1'b1時才輸出tmpDataBus,平時輸出z,而錯誤為少了==1'b1,改正后全對
2、改變了寄存器的組織結構,根據不同的處理機模式給出不同的reg bank,還創建了psr模塊專門用于SPSR和CPSR。沒有進行錯誤檢查存為sARM01_05_16_2.zip
--------------------------------------------------------------------------
--------------------------------------------------------------------------
2001 5 17
1、正在添加對條件碼的支持,已經加到了alushell,但是還沒有將運算的狀態結果輸出,存為sARM01_05_17_1.zip
--------------------------------------------------------------------------
--------------------------------------------------------------------------
2001 5 18
1、已經完成了各個模塊內部的更改,但是還沒有對nnARM頂層模塊的互聯,存為sARM01_05_18_1.zip
2、改到了nnarm中的mem,沒有完成的部分標以()
3、下午重新開始工作,改完后還沒有查錯,存為sARM01_05_18_2.zip
4、查完錯,存為sARM01_05_18_3.zip,肯定還存在敏感表不完全的問題
--------------------------------------------------------------------------
--------------------------------------------------------------------------
2001 5 19
1、解決了敏感表不完整的問題,存為sARM01_05_19_1.zip
--------------------------------------------------------------------------
--------------------------------------------------------------------------
2001 5 20
1、加入對MRS、MSRReg的支持,存為sARM01_05_20_1.zip,但是還沒有查錯
2、支持全部MSR和MRS,查完錯,存為sARM01_05_20_2.zip.
3、已經支持branch,但是對于使用非branch指令修改pc的情況還沒有處理,使用pc做源操作數的情況下不能forward,存為sARM01_05_20_3.zip
--------------------------------------------------------------------------
--------------------------------------------------------------------------
2001 5 21
1、現在存在以下問題:
1、pc做源操作數時不能forward,
2、pc做目的操作數時必須清除前面的所有指令
3、當某一寄存器的值在某一thread中直到mem結束才知道(比如load),此時必須使其后的指令等待直到可以forward
2、解決了問題1,對于alu/load/store中的base register為pc的情況,將與指令一同到達decoder的地址發到LeftReadBus上作為立即數。防止forward,存為sARM01_05_21_1.zip
3、pc做目的操作數時,除了load之外都已經處理,還有以下問題,首先mem修改pc時應清除自身,還應該通知alu和if,
4、已經完全處理了問題2,包括load to pc,使用alumisc[7]作為mem stage要改寫pc的標志,alumisc[6]作為alu stage要改寫pc的標志,所有改寫pc的alu指令都等同于branch,經過查錯后存為sARM01_05_21_2.zip
--------------------------------------------------------------------------
--------------------------------------------------------------------------
2001 5 22
1、解決了問題3,可以等待一個周期,在alu中生成一個空泡,當mem中的operation等待接過時,整個流水線停頓并等待該結果,直到結果到來并forward,沒有經過錯誤檢查,存為sARM01_05_22_1.zip
2、改正了一個錯誤,當decoder遇到一個alu指令時,僅當寫pc時可以將alumisc[7]設為1,而原來忽略了。存為sARM01_05_22_2.zip
--------------------------------------------------------------------------
--------------------------------------------------------------------------
2001 5 23
1、加入對乘法和乘加的支持,沒有經過錯誤檢查,存為sARM01_05_23_1.zip
2、改完錯,存為sARM01_05_23_2.zip
--------------------------------------------------------------------------
--------------------------------------------------------------------------
2001 5 24
1、增加對使用pc做源操作數的支持,由于在編譯時考慮了當前pc和當前指令pc之間的差別(前者比后者提前8或12個字節),所以不能使用當前指令pc做運算,經過測試,branch正常,但是以pc為目的的alu指令(也就是子程序返回還不對)。另外,應當將data和instruction內存都用相同的程序初始化。還有,匯編.s文件時必須將起始地址放到1M以內以便測試,因為我的存控只有1M。存為sARM01_05_24_1.zip
2、改正了以上問題,原因是在IF中給出下一條指令的地址時是用pc加上4,但是pc是用于取下一條指令的,所以只需直接輸出pc即可,存為sARM01_05_24_2.zip
--------------------------------------------------------------------------
--------------------------------------------------------------------------
2001 5 25
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -