作者cfzfnf (夏夜貓)
看板NCTU-Teacher
標題[心得] 微處理機系統原理與實作 - 蔡淳仁
時間Sun Jan 23 23:28:21 2022
⊕課名⊕
微處理機系統原理與實作
▲教授▲
蔡淳仁
★修課年度★
110-1
£教了什麼£(課程大概內容。或是額外學會了什麼東西。)
微處理機系統的設計與實作細節,包括介紹不同指令集的設計與差異、 I/O 子系統、作
業系統與硬體的整合等等。
此外還會談到 Aquila 的架構與設計,Aquila 是教授他們實驗室 (EISL) 所開發的
open-source processor (
http://github.com/eisl-nctu/aquila),
作業就是會以 Aquila 為基礎,修改相關電路的程式碼
◆上課方式◆(投影片、團體討論、老師教學風格)
老師會講自己的投影片,這學期是線上和實體混合,不點名。
▼考試作業▼
作業總共有 5 個,總共佔 70%,一個上機考佔 30% 。
作業通常又會分 demo 成績和報告成績,各佔 50% 。
為什麼說通常呢?因為 hw4 只需要 demo 所以只有 demo 分數,hw5 只需要交報告所以
只有報告分數。
學期最後會非線性調分。
這是所有的作業列表, hw0 不算分,老師說只是為了瞭解大家的狀況用:
- hw0: Simulation of a HW-SW Platform
- hw1: Real-time Debugging of a HW-SW Platform
- hw2: Branch Predictor Design
- hw3: Cache Optimization
- hw4: AXI4-Lite Device Bus Protocol
- hw5: RTOS Analysis
作業要求要會寫 C (SW design) 和 Verilog (HW design) ,可能還需要會寫 RISC-V
Assembly (hw1 和 hw5 有機率會用到) 。
主要作業的實作都是使用 Xilinx Artix-7 XC7A35T FPGA 這塊板子(跟數位電路實驗用的一樣)配合 Xilinx Vivado 這套軟體。
作業寫完交報告之後要去找助教 demo,可以在 TA hour 的時候去或是跟助教約時間。
上機考有 4 題,每題佔 25% ,會給 bootrom , 要求改電路跑模擬想辦法收集以下的
數據:
1. Total number of instructions executed (excluding flushed instructions).
2. Total number of load/store instructions executed.
3. Total number of stall cycles during execution.
4. Maximal depth of stack used (in words).
¥其他¥(是否注重出席率or嚴禁遲到?需要的基礎?)
這門課需要兩個人一組共用板子,學期初會叫大家寫表單,但是作業是單人獨立完成。
如果不想跟別人共用板子也可以直接到 EC220 ~ EC222 實驗室拿那邊的板子寫,助教會在學期初幫忙開通門禁。
¢最後想說的話¢
我覺得這門課是我修課以來遇到最充實最有難度的課程,可以想像成是進階版的計算機組
織加上數位電路實驗。 以 HW2 與 HW3 為例子,需要有對電路分析的能力,因此要先看
懂 Aquila 某功能的實作,再想辦法修改程式碼去統計各項資訊,例如說統計 branch
misprediction 的次數或者是 cache miss 的 cycles 等等。再來就是要針對範例程式對
機制的演算法進行修改以最佳化效能,例如說設計新的 branch prediction 的演算法或
是 cache replacement 機制等等。
這門課被劃分在軟硬體整合學程裡面,這學期是第二次開課,上次是試辦。之前有門名稱
相似的課叫做「微處理機系統實驗」,是之前某些組的必修。因此有些雙主修/轉系的學
生如果當時沒有修到那門課,就必須要修這門課來抵,
但其實兩邊課程內容完全不同
,想選的人看課程評價前要先注意。
寫作業的過程真是還蠻心累又困難的,因為要一直反覆燒電路,等待 bitstream 寫進板
子裡面,跑出結果不如預期又要改做法然後再重燒,如此反覆。雖然這門課沒有分組,但
是老師不排斥同學之間互相討論,所以我強烈建議跟其他同學分工分析電路跑實驗結果和
討論實作,可以節省很多時間與心力。最後我們都有想出比原來效率還高的演算法,算是
對自己有個交代了。
這五次作業的報告我都要求自己要用英文寫,雖然寫起來很痛苦,要花更多時間斟酌字詞
,不過實際寫完五篇報告看起來每篇就像獨立的小論文一樣,非常有成就感。<del>另一
方面是想說可以免費練習英文寫作的機會不多了,就把老師當作免費的 Grammarly 在用
,還會幫我改文法和錯字,也算值得了。</del>
修完這門課會對計算機底層知識有更深入的瞭解,想底層功能如何實作的會變非常容易,
因為作業都會要求要親手讀過和刻過程式碼。 此外我建議想修這門課的人可以先去修數
位電路實驗,對 verilog 與 FPGA Design 有基本的熟悉度會少很多撞牆的時間。然後建
議可以回去複習計算機組織,報告內容強烈依賴著之前學過的計組知識,有深厚的背景知
識才可以知道為什麼會發生某些現象或者是要怎麼做會跑出比較好的結果。
老師很鼓勵同學自己看網路文件和動手實作,在課堂上也會分享他之前工作的經驗和趣事
還有對所謂 Hacker spirit 理念的看法等等。課程用到的東西大部分也都是 open-source
的,非常合我胃口。
老師也很希望同學可以找他聊聊,包括寫作業遇到的困難或者是職涯規劃等等。像我就曾
經去找老師聊過,老師有給了我很多職涯方向的建議和分享他學生在不同公司的經驗等等
。
這門課一開始有 32 個人修,最後有將近
10 個人退選,2 個人不及格,調分後平
均是 83 分。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.168.234 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/NCTU-Teacher/M.1642951703.A.B4C.html
※ 編輯: cfzfnf (140.113.168.234 臺灣), 01/23/2022 23:29:01
※ 編輯: cfzfnf (140.113.168.234 臺灣), 01/23/2022 23:45:42
1F:推 bh2142: 沒修過這麼硬的課 01/23 23:45
※ 編輯: cfzfnf (140.113.89.21 臺灣), 01/24/2022 10:12:36
2F:推 Rylix: 笑死把老師當grammarly在用這形容好有梗 01/24 16:45
3F:推 typipi: 推 02/09 12:51