Skip to content

Ping6666/NCU-CE3001-A-Computer-Organization

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Computer-Organization-Pipeline-Implement

108-02 NCU CE3001-A Computer Organization Pipeline Implement

說明

請繳交程式碼與執行檔,執行檔能一次讀入四個指令檔案,然後分別輸出四個結果,不要分開成四個獨立的執行檔,程式碼請附上註解,若作業未完成請附上說明文件告知作業完成進度(意思是屍體也有可能有分數)。

  • 截止時間 : 6/14 23:59:59 (change to 2020-06-22 00:00)
  • 限制語言 : C、C++

詳細說明

Computer Organization Pipeline Simulation Homework

作業要求

請同學以 C/C++程式語言實作課本 Pipeline 處理器之指令運作模擬程式。同學需實作下列指令:「lw」、「sw」、「add」、「addi」、「sub」、「and」、「andi」、「or」、「slt」、「beq」。 並且能夠偵測與處理「data hazard」、「hazard with load」、「branch hazard」。

程式的輸入與輸出

輸入:

MIPS 指令轉換後的 32-bit 機器碼指令為程式的輸入,每題的 32-bit 機器碼指令放在作業資料夾中對應的「*.txt」檔案,請同學們撰寫模擬程式將檔案讀入並處理。

輸出:

根據連續輸入的 32-bit 機器碼指令,模擬其在每個 clock cycle 時,各個 pipeline registers所儲存的值,並輸出寫入至對應文件中。 其中「Instruction」和「Control signals」的結果以二進位表示,其餘皆以十進位表示。 輸出文件格式請按照範例輸出(SampleOutput.txt)。 「Control signals」的排列順序與額外定義的「ALUop」請參考附錄。

範例:

請參考作業資料夾中的範例輸入「SampleInput.txt」和其結果輸出「SampleOutput.txt」,其中範例輸入對應的MIPS指令如下:

  • lw $1, 0x03($8)
  • add $3, $0, $2
  • beq $0, $2, 0x06 #(branch PC+4+4×6)

P.S. Branch 指令第三個欄位應為 label,這裡為了方便而表示成數字形式,非正確寫法。

上傳格式

請繳交程式碼與執行檔,執行檔能一次讀入四個指令檔案,然後分別輸出四個結果,不要分開成四個獨立的執行檔,程式碼請附上註解,若作業未完成請附上說明文件告知作業完成進度。

評分標準

通過公佈的測資得到該題的 60%分數,通過隱藏的測資再得該題的 40%分數。

嚴禁抄襲。

題目說明

題目一共四題,每一題都是獨立的,不會相互影響。並請依照每一題輸入,將結果分別寫入到「genResult.txt」、「dataResult.txt」、「loadResult.txt」和「branchResult.txt」之中。以下是每題的解說。

P.S. 後面的題目可能會包含前面的 hazard。

  1. 請同學的模擬程式從"General" 檔中讀出指令,其對應的MIPS指令為:(10 pts.)
  • or $3, $6, $0
  • add $1, $4, $5
  • and $8, $7, $2

將執行結果依照範例輸出格式寫入" genResult.txt "中。

  1. 請同學的模擬程式從"Datahazard"檔中讀出指令,其對應的MIPS指令為:(30 pts.)
  • add $5, $2, $3
  • sub $4, $5, $3
  • and $6, $5, $7
  • or $8, $5, $9

將執行結果依照範例輸出格式寫入"dataResult.txt"中。

  1. 請同學的模擬程式從"Lwhazard"檔中讀出指令,其對應的 MIPS 指令為:(30 pts.)
  • lw $2, 0x04($7)
  • and $4, $2, $5
  • or $4, $4, $2
  • add $3, $2, $4

將執行結果依照範例輸出格式寫入"loadResult.txt"中。

  1. 請同學的模擬程式從"Branchhazard"檔中讀出指令,其對應的 MIPS 指令為:(30 pts.)
  • beq $8, $2, 0x03 # (branch 至 and 指令)
  • addi $3, $6, 15
  • sub $4, $5, $1
  • lw $6, 0x00($0)
  • and $7, $2, $7

將執行結果依照範例輸出格式寫入"branchResult.txt"中。

暫存器、資料記憶體與指令記憶體的初始化

暫存器初始化為以下所示:假設宣告一般暫存器$0 ~ $9,共10個暫存器。

名稱 Reg Reg Reg Reg Reg
暫存器編號 $0 $1 $2 $3 $4
初始值 0 9 5 7 1
暫存器編號 $5 $6 $7 $8 $9
初始值 2 3 4 5 6

資料記憶體初始化為以下所示:

名稱 Reg Reg Reg Reg Reg
記憶體位址 0x00 0x04 0x08 0x0C 0x10
初始值 5 9 4 8 7

PS.指令記憶體的初始位址由「0」開始。

警語

再次強調 請勿抄襲

這是個人作業,接受討論但不接受共同完成,討論不會造成你們的程式碼一樣。 由於上次作業有不少抄襲情況 我們最後決定不處理,但如果這次作業被發現抄襲者,我們會去看你上次作業有無抄襲,如果有就是連上次的作業一併扣分,抄襲者及被抄者都給予1分,不接受任何討價還價。

(抄襲比對會連同歷屆的、網路上找得到的版本、github上的版本)

About

108-02 NCU CE3001-A Computer Organization Pipeline Implement

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages