台大修課心得 - 高等計算機結構
課程綱要
課程名稱:高等計算機結構
授課教師:楊佳玲
開課學期:109-2
授課對象:電機資訊學院 資訊工程學研究所
使用書籍:Computer Architecture: A Quantitative Approach, 6th Edition、Selected papers
心得
教了什麼
- CA 目前發展的趨勢,還有目前碰到的問題
- 量化分析的一些方法,像是 Roofline model、Amdahl’s Law、Simulator 怎麼做之類的
- Instruction-level Parallelism
- Tomasulo algorithm
- Dynamic branch predictor
- Multithreading
- Memory Hierarchy
- 一些 cache optimization 的 trade-off
- Scratchpad memory
- DRAM Architecture
- DRAM array structure
- DRAM operations (activate, read/write, precharge, refresh)
- DRAM organization (channel, rank, device, chip, bank)
- 3D stacked memory
- SSD Architecture
- NAND Flash Characteristics
- NAND Flash Operation
- SSD Controller 簡介
- Emerging NVM
- 3D XPoint memory、Intel Optane SSD
- RRAM、MRAM、PCM
- Storage Class Memory in memory hierarchy
- NVM as Persistence Memory
- Thread-Level Parallelism
- Cache coherency protocol
- UMA => Snoopy protocol
- NUMA => Directory protocol
- Hardware synchronization
- Multi-threading
- Multi-core architecture
- Cache coherency protocol
- Data-Level Parallelism
- GPU Architecture
- SIMT
- SIMD
- GPU Architecture
- Low-Power Architecture
- Power type (Dynamic Power, Short-Circuit Power, Leakage)
- Optimization
- Clock Gating
- Dynamic Voltage/Frequency Scaling (DVFS)
- Interval-Based Scheduler
- Power Gating
- Cache leakage reduction
- Dynamic Thermal Mechanism
- Bit-little Technology
- Domain-Specific Architecture
- TPU
這學期比較特別的部分就是還請到了一個業界大佬(賴瑾, Co-Founder, ex-CTO, VIA Technologies Inc.)來教 Xilinx HLS,因為 HLS 的報告還有上課也占滿多堂課的,所以相對來說上正課的時間有被擠壓到滿多的。HLS 主要上了我們這次實驗用的板子 (PYNQ Z2) 的架構,還有一些 HLS coding style 之類的議題。
上課方式
投影片上課,5 月多疫情突然爆發後改為在 NTU cool 看影片,然後正課時間變成 QA session。
老師會隨機請人回答問題當作點名,不過出席好像也不算分就是。
考試作業
期中期末各佔 25%。
HLS Labs 佔 50% 以及 10% Bonus,包含:
- Lab #1: Tools installation and Implementation Flow (個人) (5%)
- 在 PYNQ Z2 操作,主要在安裝環境,然後用 Jupyter Notebook 操作 kernel
- Lab #2: Application Acceleration for Embedded System (個人) (5%)
- 在 PYNQ Z2 操作,在操作各種 kernel interface
- Lab #3: Application Accelerationfor Cloud Environment (個人) (5%)
- 在 TA 架設的 U50 Server 上操作,在學 OpenCL 的 Programming Style
- Lab #A: Coding Style (小組) (10%)
- 把 Mentor HLS Bluebook 的章節搬到 Xilinx HLS 上實作,並要小組報告
- 我們這組負責的章節是 Memory Architecture
- Lab #B: Bonus Lab (個人) (Bonus: 7%)
- 在老師提供的額外題目裡面選一個 Lab 來做,並要口頭報告
- 我選的是 Sparse Matrix Multiplication
- Advanced Lab: Bonus Lab (小組) (Bonus: 3%)
- 在老師提供的額外題目裡面選一個 Lab 來做,並要口頭報告
- 我們這組報的是 Block Level-IO Protocol
- Final Project (小組) (25%)
- 做更進階的題目,可以從老師提供的一些選項中選,或是自己發想,要先做 Final Project Proposal,最後要做口頭報告
- 我們這組做的是 Simulated Quantum Annealing
Lab 的部分 TA 有整理在 NTU-CSIE-HLS/ACA-HLS
5% Paper Summary 的 Bonus,老師會在相關的章節上完發下來,可以自己決定要不要讀。
後記. 1
這門課的 Loading 老實說真的滿重的,通常 Final Project 跟期末只會選一個,但這門課是兩個都有,老師說是因為這門課可以抵免博班資格考所以才會一定要考期末這樣。而且 Lab 滿多內容的,除了要花時間讀 manual 之外,還要準備口頭報告。
期中很多都是課本習題拿出來改出成的,但沒有認真做過的話(像是我)可能會傻眼,因為真的考滿細節的。期末就比較好,變成只出大方向,類似申論題,考概念居多。(BTW. 期末是在 cool 上線上考試)
但這門課老師有說是研究所的選修,所以也不會太刁難大家的成績,應該也不太會當人(?
後記. 2
比較坑的是我一直以為總分 + bonus 後是 115 分,結果 Lab 的最高分數就是 50 多做也不會加上總分,只有 Paper Summary 是真的 bonus,所以其實總分是 105%。我還很認真的把所有 Lab 都做了,期中差點快往生 XD
後記. 3
修完後覺得 HLS 能用的地方應該是比較偏 Application 那邊能夠提高開發還有驗證的速度,如果拿來做 Architecture (像是刻一顆 CPU 之類的) 的話應該會痛不欲生。最後 Final Project Presentation 的時候有看到有組別拿 HLS 做 Tomasulo Algorithm 還有 Dynamic Branch Predictor,不過最後的效果好像都不太好,因為有些功能很難用 HLS 做出來的樣子。