版本 cc3fb28583c9ef52322ac426f5cdba8073510df3
2015q3 Homework #7
預期目標
- 效能分析
- 作業系統核心實驗
截止日期
- Nov 18, 2015 (含) 之前
- 只要完成作業要求 (A) 或 (B) 其中一者即可
- 越早在 GitHub 上有動態、越早接受 code review,評分越高
作業要求 (A)
- 閱讀 Build minimal ARM Kernel from Scratch 和 STM32 程式開發:以 GNU Toolchain 為例
- 安裝和設定 QEMU
- 編譯和執行 mini-arm-os
- 依據指示,將 00-Semihosting, 00-HelloWorld, …, 07-Threads 均實際測試並研讀程式碼
- 在 github 上 fork mini-arm-os,並修改
07-Threads
(不要增加新的目錄!),提供基本的 shell,然後能夠用新建立的 thread 計算 fibonacci 數列- fibonacci 程式碼要用 2015q3 Homework #1 裡面實做的組合語言版本
- shell 程式碼可參照 rtenv+ 的
main.c
,裡頭提供 shell 實做
- 建立新的 Hackpad,列於「作業區」,需要標注「作業要求 (A)」
作業要求 (B)
- 閱讀 Week #8 效能分析: Prefetching 提到的論文: “When Prefetching Works, When It Doesn’t, and Why”,在 Linux/x86_64 (注意,要用 64-bit 系統,不能透過虛擬機器執行) 上編譯並執行 prefetcher
- 說明
naive_transpose
,sse_transpose
,sse_prefetch_transpose
之間的效能差異,以及 prefetcher 對 cache 的影響
- 說明
- 在 github 上 fork prefetcher,嘗試用 AVX 進一步提昇效能
- 修改
Makefile
,產生新的執行檔,分別對應於naive_transpose
,sse_transpose
,sse_prefetch_transpose
(學習 Homework #2 的做法) - 用 perf 分析 cache miss/hit
- 參考 Performance of SSE and AVX Instruction Sets,用 SSE/AVX intrinsic 來改寫程式碼
- 詳細描述實驗設計,以及你的觀察
- 修改
- 建立新的 Hackpad,列於「作業區」,需要標注「作業要求 (B)」