final project spec-detailaccess.ee.ntu.edu.tw/course/dsd_95second/final project...16 with cache (4)...
TRANSCRIPT
-
1
2007 DSD Final Project Spec.注意事項
by TA
-
2
Content
• Something you should pay attention to!• How to verify your CPU design?• More about instructions...• Synthesis requirements...
-
3
Something you should pay attention to!
-
4
Note (1)
• Address bus of a MIPS processor (*_addr) is always 32-bit for byte addressing.– If we assume instructions are word aligned from 4k
address in instruction memory, the least significant 2 bits are always 0.
– If we assume data word aligned from 4k address in instruction memory, the least significant 2 bits are always 0. However, there are data in 2 bytes (halfword) and data in 1 byte (byte).
– When you connect address bus to other device, pay attention to the unit of addressing.
– Little-endian or Big-endian?
-
5
Note (2)
• 所附檔案包含2005年修課同學的testbench與兩份assembly的機器碼,請參考來修改所附的testbench framework。
-
6
Testbench 要如何工作?
• 模擬初期(tvirtual = 0)– 將機器碼與初始資料放入IMEM與DMEM中– reset MIPS處理器
• 模擬中– 產生MIPS的clock與slow memory的clock– 將寫出的資料另外記錄下來– 透過監看PC是否被trap在一個位置得知程式是否終結,並紀錄終結時間
• 模擬終結– 比對寫出資料與正確解答– 顯示模擬結果(正確性、時間長度...)
-
7
為何你不能直接使用Testbed
• Testbed只是一個trace MIPS處理器寫出去資料的比對器,順便記錄時間;在本學期的設計中,若處理器包含cache,很有可能因為cache架構的問題不會真正寫出去到slow memory的memory space中。
-
8
How to verify your design?
-
9
Without Cache (1) - IO接腳圖
MIPS_clock
MIPS_reset
IMEM_addr[31:0]
IMEM_rdata[31:0]
IMEM_ren
IMEM_clk
DMEM_addr[31:0]
DMEM_rdata[31:0]
DMEM_ren
DMEM_wen
DMEM_clk
DMEM_wdata[31:0]
MIPS_cen
MIPS_stall
-
10
Without Cache (2) – 接法
Testbench1,2, and others
MIPS Processor(w/o Cache)
Slow Memory:DMEM(32-bit)
DMEM_addr[31:0]
DMEM_wen
DMEM_wdata[31:0]
Slow Memory:IMEM(32-bit)
MIPS_clock
MIPS_reset
MIPS_cen
MIPS_stall
MEM_clock
Initial Data
IMEM_addr[31:0]
IMEM_ren
-
11
Without Cache (3) – 注意事項
• 你需要修改testbench來測試以達成:– 驗證寫入DMEM Space (232 bytes) 之資料正確性– 量測執行這段assembly花費的時間(ns)
• 限制– CPU的速度很有可能被slow memory的速度限制住
• i.e. f = 50MHz, T = 20ns• 這是考量到Asynchronous RAM(為了可以直接接MIPS的
interface)的真實性;因為實際上可能跑得程式大小可能遠大於測試程式 我們以slow memory代表可存取的一個夠大的記憶體空間的運作速度。
-
12
Without Cache (4) – 設計考量
• 設計重點– 想辦法減少cycle數
• 修改assembly– 調整testbench來在模擬初期將不同的機器碼放入IMEM。
• 修改架構– 改變forwarding機制與一些計算單元,因為某些指令可以提前到前面的pipeline stage做(e.g. branch, jump...)
– 壓面積(藍色部份)• 因為timing限制比較寬鬆,面積應可壓小許多。
-
13
With Cache (1) - IO接腳圖
MIPS_clock
MIPS_reset
MIPS_cen
DCACHE_addr[31:0]
DCACHE_rdata[127:0]
DCACHE_ren
DCACHE_wen
DCACHE_clk
DCACHE_wdata[127:0]
ICACHE_addr[31:0]
ICACHE_rdata[127:0]
ICACHE_ren
ICACHE_clk
MIPS_stall
ICACHE_stall
EX_MEM_addr[31:0]
EX_MEM_wdata[31:0]
EX_MEM_wen
-
14
With Cache (2) – 接法
Testbench1,2, and others
MIPS Processor(w/ Cache) Slow
Memory:DMEM(128-bit)
EX_MEM_addr[31:0]
EX_MEM_wen
EX_MEM_wdata[31:0]
Slow Memory:IMEM
(128-bit)
MIPS_clock
MIPS_reset
MIPS_cen
MEM_clock
Initial Data
MIPS_stall
DCacheI
Cache
ICACHE_addr[31:0]
ICACHE_ren
-
15
With Cache (3) – 注意事項
• 你需要修改testbench來測試以達成:– 驗證寫入DMEM Space (232 bytes) 之資料正確性– 量測執行這段assembly花費的時間(ns)
• 限制– CPU的速度很有可能被slow memory對cache之間的頻寬限制住
• CPU clock = 4 * Slow memory clock = 200MHz , 5ns• 若CPU clock < 200MHz, e.g. 125MHz, 8ns,testbench產生的slow memory clock為31.25MHz, 32ns
• 你可以修改testbench,改變產生slow memory clock的比例。只要slow memory clock 不超過200MHz都可以。
– 注意,cache的設計會需要更動!
-
16
With Cache (4) – 設計考量• 設計重點
– 想辦法減少cycle數• 修改assembly
– 調整testbench來在模擬初期將不同的機器碼放入IMEM。• 修改架構
– 改變forwarding機制與一些計算單元,因為某些指令可以提前到前面的pipeline stage做(e.g. branch, jump...)
– 想辦法縮短critical path (2005, UMC18: 5.6ns)• 目標是gate level simulation達到
-
17
More about Instructions
-
18
SW
• SW(6-bit), rs(5-bit), rt(5-bit), imm(16-bit)• 將rs代表的register內容存到 rt register裡面的32-
bit byte address + signed-extended imm(16-bit)所指向的記憶體位址。
• e.g. – r1 = 0xFFFFFFFF, r2 = 0x00001000– SW r1, r2, 0xFFFF: 將0xFFFFFFFF存到0x00000FFF– SW r1, r2, 0x0001: 將0xFFFFFFFF存到0x00001001
• LW的語意類似
-
19
關於Bonus Instruction
• 請maintain兩份你的code (RTL, gate-level)– 一份是basic指令版: 用助教給的assembly測– 一份是完整指令版: 自己測
-
20
Synthesis Requirements
-
21
注意事項
• 合成時,將MIPS Processor與Cache分開合成,並且將結果另存兩個gate-level netlist verilog檔與兩份sdf檔案。模擬時在testbench裡兜起來。– e.g. MIPS.vg, Cache.vg, MIPS.sdf, Cache.sdf
• 紀錄兩個合成結果的timing report (要MET)與area report。
• 模擬時將testbench與slow memory一起加入模擬– RTL:
• ncverilog +access+r TB.v MIPS.v Cache.v Slow_memory.v
– Gate-level:• ncverilog +access+r TB.v MIPS.vg Cache.vg
Slow_memory.v –v umc18.v (一行)
-
22
DV設定
• 請參考synthesis lab的設定內容
• 可省略以簡化之設定– wireload model – input delay與output delay – max area 設零意義不大,會合成很久,先合成出一個面積後,設定比該面積小的值。
-
23
其他注意事項
• 有任何疑問盡量找助教討論,無論是設計上的問題或者是下週的報告。
• 書面報告與資料彙整後的繳交時間:– 7/2 23:59之前
• 總成績上網公告時間– 7/6
• 對成績有疑問,請在7/7下午兩點~三點至232與助教討論。