# 2016 年成大秋季班分組 (第二次)
###### tags: `sysprog2016`
:::info
主講人: [jserv](http://wiki.csie.ncku.edu.tw/User/jserv) / 課程討論區: [2016 年系統軟體課程](https://www.facebook.com/groups/system.software2016/)
:mega: 返回「[進階電腦系統理論與實作](http://wiki.csie.ncku.edu.tw/sysprog/schedule)」課程進度表
:::
## Policy
* 在分組的共筆中,應該清楚標注 GitHub 和每週 YouTube 錄影連結
* Nov 18 安排分組報告,需要事先更新好共筆、GitHub 更新,還有相關的錄影。屆時會在課堂以 1.5x 或 2x 速度播放
## Team1 (READY)
- [ ] jserv (黃敬群)
- [ ] louielu (呂紹榕)
- [ ] c14006078 (吳彥寬)
- [ ] Shaoyu-Chen (陳少宇)
* 開發紀錄: [F9 microkernel & ARM hypervisor](https://hackmd.io/s/r16AUMbJe)
* 針對低功耗 IoT 應用,打造一個高效、安全的 microkernel
* 以過去發展的程式碼,如 MPU + address space 和 L4 API 等等,重新設計一個針對 ARM Cortex-M4 的 hypervisor,符合第三代 microkernel 的設計
## Team2 (READY)
- [ ] CheHsuan (林哲亘)
- [ ] kevinbird61(瞿旭民)
- [ ] SwimGlass (謝永勁)
- [ ] carolc0708 (陳柔安)
* 開發紀錄: [透過 SIMD 加速高斯模糊運算](/s/BJOTYoHge)
* 延續 [開發紀錄: 使用 SSE/AVX 對圖檔作高斯模糊處理](https://hackmd.io/s/ByEmp4ike) 和 [SIMD + prefetching](https://hackmd.io/s/rk8ivCT0) 的成果,提供 Intel 架構 SSE/AVX 和 ARM 架構 NEON 的效能最佳化實做
* 可參考 OpenCV 程式碼,但不能直接複製
## Team3 (READY)
- [ ] 0140454 (吳勃興)
- [ ] linachiu (邱婉菱)
- [ ] kaizsv (林振凱)
- [ ] HuangWenChen (陳鍠文)
- [ ] aweimeow (陳威祐)
* 開發紀錄: [以 SIMD 加速矩陣乘法](https://hackmd.io/s/Hk-llHEyx)
* 持續改善效能,並針對記憶體操作提出改進方案 (注意 cache 的影響)
* 研讀 [Memory Hierarchies and Optimizing Matrix Multiplication](https://people.eecs.berkeley.edu/~demmel/cs267_Spr99/Lectures/Lect_02_1999b.pdf), [Optimizing matrix multiplication](http://networks.cs.ucdavis.edu/~amitabha/optimizingMatrixMultiplication.pdf), [Optimizing Parallel Multiplication Operation for Rectangular and Transposed Matrices](http://hpc.pnl.gov/srumma/srumma-icpads.pdf)
* 提出測試矩陣乘法正確性和效能之有效機制
* 設計類似 Matlab 語法的簡單程式語言,至少能銜接上述矩陣相乘。一併研究 [muparserSSE - A Math Expression Compiler](http://beltoforion.de/article.php?a=muparsersse&p=implementation)
## Team4
- [ ] kobe0308 (余孟勳
- [ ] youchihwang(王佑誌)
- [ ] vjux (廖宥勛)
- [ ] mingnus (蔡明宏)
* 開發紀錄: [Concurrent Optimizing Brainfuck JIT compiler](https://hackmd.io/s/B1n0oiNxx)
* 參考 [rdebath/Brainfuck](https://github.com/rdebath/Brainfuck) 的成果
* 可對照的實做: [Parallel Brainfuck](https://github.com/cmdli/parallel-brainfuck),[報告投影片](https://docs.google.com/presentation/d/1Y8uwsh_5bmUASmyRE4i3S4fL5OvA2Q92edivIXpsEaM/edit#slide=id.p)
## Team5
- [ ] andy19950 (吳庭安)
- [ ] TotallyWrong (林鑫宏)
- [ ] cjTsai3030 (蔡承哲)
- [ ] f5120125 (張耕華)
- [ ] diana0651 (何岱璇)
* 開發紀錄: [Optimizing Brainfuck JIT Compiler](https://hackmd.io/MYEwpg7FBs0LQgEbHgFmgBjHAHARljgGY8cxpEBWECAQzGCA)
* 延續 [Brainfuck JIT 編譯器最佳化研究](https://hackmd.io/s/HJjoxbvke) 和相關同學的成果,重新整理共筆,需要闡述編譯器原理、IR、JIT 編譯器設計,還有考慮到 cache 的議題
* 參考 [rdebath/Brainfuck](https://github.com/rdebath/Brainfuck) 的成果,思考進階的效能最佳化
* 參考 [The Brainf*ck Compiler Project](http://www.clifford.at/bfcpu/bfcomp.html),提出高階語言轉換到 Brainfuck 的機制,並且針對特定情況作效能改善
## Team6
- [ ] tundergod (林文盛)
- [ ] Tempojiji (邱靖吉)
- [ ] jeff60907 (陳致佑)
- [ ] chenan00 (王振安)
* 開發紀錄: [針對多執行緒環境設計的 Memory allocator](/s/HkICAjeJg)
* 延續 [SuperMalloc](http://supertech.csail.mit.edu/papers/Kuszmaul15.pdf) 成果,對比 Daniel Micay 的 [allocator](https://github.com/thestinger/allocator),並考慮 small/large/huge object 等情況
* 思考 [aggressive load balancing](https://github.com/thestinger/allocator/commit/d658d27116af63ca0c97b410024b09b3c54f55f6) 的效益,並且試圖延展
## Team7 (READY)
- [ ] HaoTse (鄭皓澤)
- [ ] shelly4132 (賴劭芊)
- [ ] HahaSula(黃呂源)
- [ ] nekoneko (林建宏)
- [ ] Fzzzz(陳易)
- [ ] abba123(洪勤硯)
* 開發紀錄: [MapReduce](https://hackmd.io/s/Hkb-lXkyg)
* 設計更好的 thread pool (lock-free 版本),並重現 Google 論文裡面的排序動作
## Team8 (READY)
- [ ] LanKuDot (李昆憶)
- [ ] ktvexe (劉亮谷)
- [ ] judy66jo (周純靜)
- [ ] JonSyuGithub (徐仲緯)
* 開發紀錄: [server-framework](https://hackmd.io/s/B1s8hX1yg)
* 整合 [cgi-server + facebooc](https://embedded2016.hackpad.com/ep/pad/static/EqEoM4o7nVv),設計更好的物件導向封裝
* 整合 freeboard 以提供豐富的網頁呈現,並分析過程中伺服器端的行為,提出效能改善機制
## Team9 (READY)
- [ ] petermouse (林軒毅)
- [ ] heathcliffYang (楊惟晶)
- [ ] janetwei (魏孜昀)
* 開發紀錄: [Natural merge sort 在特定硬體的加速](https://hackmd.io/IwIwnAHGDGDsCsBaMYCmxEBYAmBDEi+EmiCqs+AzLnCLkA==)
* 考慮 [Natural merge sort in C](http://codereview.stackexchange.com/questions/119377/natural-merge-sort-in-c),思考透過 clz 一類硬體指令加速,延續 [mergesort + branch prediction](https://hackmd.io/s/HJUFIeg1g)
* 延續 [clz 應用](https://hackmd.io/s/S153n-G1g) 的成果,收集更多應用並且著手比較 `__builtin_clz` 和查表法對程式效能的影響。需要從計算機組織架構的觀點解釋
* 一併對照 [第18題: branch predictor](https://embedded2016.hackpad.com/2016q1-Week-2--Sc7AmIvN7EN),注意:裡頭的描述不全然正確
* 延伸閱讀: [Segmented Sort and Locality Sort](https://nvlabs.github.io/moderngpu/segsort.html) 和 [Mergesort](https://nvlabs.github.io/moderngpu/mergesort.html)
## Team10
- [ ] oiz5201618 (王紹華)
- [ ] ponsheng (陳博聖)
- [ ] hugikun999 (何俊逸)
- [ ] workfunction (黃鏡清)
- [ ] ierosodin (許耕福)
- [ ] shengwen1997 (鄭聖文)
- [ ] YuehChuan (張岳傳)
* 開發紀錄: [無人車控制系統設計和實做](https://hackmd.io/CwIwjAzMDsBsCGBaAnCazHABzAAyJABNgBTRAJhIFZyBjaYQrMEwoA==)
## Team11 (READY)
- [ ] vic85821 (張友誠)
- [ ] jkrvivian (林京樺)
- [ ] snoopy831002 (李中皓)
- [ ] ruby0109 (施雨妏)
* 開發紀錄: [concurrent B+ tree](https://hackmd.io/EYTgJiCs4AwLQDZgDNJwCwEYCG24gGMBmYOYAdmQQXWAuDAKA===?view)
* 延續春季班 [concurrent B+ tree](https://embedded2016.hackpad.com/concurrent-B-tree-p459m7tm2Ea) 成果,回頭研究程式行為和深入效能分析
* 提出 lock contention 的解決機制
## Team12
- [ ] raypan7 (潘祈睿)
- [ ] finalallpass (顏子皓)
- [ ] a530788140 (李儂偉)
* 開發紀錄: [Concurrent Linked List 研究](https://hackmd.io/s/rkhBeeZyx)
* 延伸閱讀: [lock-free/wait-free algorithms
](https://embedded2016.hackpad.com/lock-freewait-free-algorithms-jUNeD0UC94q)
## Team13
- [ ] green0413 (游玉青)
- [ ] shouchengH (黃少呈)
- [ ] SarahYuHanCheng (程鈺涵)
- [ ] eeuserp (簡伯丞)
* 開發紀錄: [Concurrent Rubi](https://hackmd.io/s/HkDeFrlxg)
* 探討編譯器設計,以 DynASM 為例,解說 Rubi 運作原理,並提出 code refactoring 與效能改善機制
* 實做 concurrency 語法支援,不必跟 Ruby 相容