final project spec-detailaccess.ee.ntu.edu.tw/course/dsd_95second/final project...16 with cache (4)...

23
1 2007 DSD Final Project Spec. 注意事項 by TA

Upload: others

Post on 17-Mar-2020

0 views

Category:

Documents


0 download

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與助教討論。