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