# 2024q1 Homework5 (assessment) contributed by < `millaker` > ## 閱讀心得 原本我對新創、創業就有一定的興趣,在電機系開設的創業創新課程中,老師說過就算沒有要自己創業,也要有能力判斷新創公司的機會。在該課程中,學到比較多關於創業的想法、如何分析灘頭市場,反而沒有像文章內真實創業會遇到的困難和解決方法。從文章內冰塊機的例子,我學到要能適時判斷問題的輕重緩急,整件事不能因為一件小事停滯或是考慮放棄,若今天目標是要做出全自動飲料機,那目標應該放在做出能動的完整產線,並逐一解決產出速率、準確度的問題。但是核心問題絕對要做足夠多的實驗或是理論證明。 ## 教材疑問 ### Priority Inheritance 在[並行程式設計: POSIX Thread](https://hackmd.io/@sysprog/concurrency/%2F%40sysprog%2Fposix-threads)中有提到 Priority Inheritance,我的疑問是作業系統核心是用何種方法判斷兩個或多個 thread 在等待同一個 mutex 被釋放? > 參見第 9 週教材[建立相容於 POSIX Thread 的實作](https://wiki.csie.ncku.edu.tw/linux/schedule),留意 futex :notes: jserv ## 改進測驗題 ### 第一週測驗一 > [筆記連結](https://hackmd.io/7vC8dtKoQnW3V_SYdkIn2Q#%E6%B8%AC%E9%A9%97%E4%B8%80) ### 第二週測驗一 > [筆記連結](https://hackmd.io/7vC8dtKoQnW3V_SYdkIn2Q#%E6%B8%AC%E9%A9%97%E4%B8%801) ### 第四周測驗一 > [筆記連結](https://hackmd.io/j_7_rQ4URzOueOYEYv0L8w#%E6%B8%AC%E9%A9%97%E4%B8%80) ## 期末專題題目 1. 研究 [Verilator](https://github.com/verilator/verilator/blob/master/docs/internals.rst#efficient-dynamic-scheduling) 現行多執行緒模擬 `--thread` 、 `multithreaded mode` 相關程式碼,尋求貢獻機會。 其中闡述 Verilator 內部運作文件有寫到: TODO: Efficient Dynamic Scheduling。會有想做這個題目的想法是因為老師上課提到公司不會等我學會計算機架構才做下一代晶片,若我能在研究所畢業前能夠貢獻程式碼加速 RTL 模擬速度,我覺得我能更熟悉並形程式設計和硬體模擬知識。 2. RISC-V Vector extension [RVV 1.0](https://github.com/riscv/riscv-v-spec) 模擬器實作,挑戰模擬速度大於現有支援 RVV 的模擬器 [spike](https://github.com/riscv-software-src/riscv-isa-sim) 3. 前幾週小考有許多並形程式設計的題目,訂正這些題目讓我更熟悉並形程式設計的考量點,會想做這個題目和第一點相似,想藉此機會學習並行程式設計,在往後能運用在 hardware modeling 上,像是 [GEM5](https://www.gem5.org/) 開源計算機架構研究平台、 [Accel-sim](https://accel-sim.github.io/) 開源 GPU 模擬框架。 4. 老師星期二下課提到在 PYNQ-Z2 上實現 FPGA softcore 啟動 Linux Kernel,如果是這個題目我希望從零開始實作 softcore 或是能改進現有硬體設計、驗證設計正確性。 > 預計重現[去年實驗](https://hackmd.io/@sysprog/S1jNiYgr2),將主要的 ISA 換為 RV32IMA,並升級到 Linux v6.1,並確定特定的硬體周邊 (如 NIC) 正確運作 TODO: 1. 重現 PYNQ-Z2 : AMP (Arm + RISC-V) 去年實驗 2. RV64 -> RV32,用 OpenSBI 驗證, bbl (boot loader) Sv32 (MMU) 3. Linux https://www.kernel.org/doc/Documentation/remoteproc.txt