版本 fdcc23738e2b95477996a1d70def1307b688c6c6
系統軟體課程進度與開放資源
- Instructor: Jim Huang (黃敬群)
<jserv.tw@gmail.com>
- Facebook 粉絲專頁 (不要擔心提了笨問題,這專門用來和學生互動,可預約一對一討論)
- 討論區: https://www.facebook.com/groups/system.software2019/
- 課程信箱:
<embedded.master2015@gmail.com>
, 往年課程進度
進階電腦系統理論與實作 (Fall 2019)
第 1 週 (Sep 12): 誠實面對自己
- 課程簡介和注意須知
- 完整解說錄影 (3 小時)
- 每週均安排隨堂測驗,採計其中最高分的 8 次
- 學期評分方式: 隨堂測驗 (25%) + 個人作業 (25%) + 分組報告及專題 (25%) + 自我評分 (25%)
- 歷屆修課學生心得: 張家榮, 陳品睿, 蕭奕凱
- 分組報告示範: ARM-Linux, Xvisor
- GNU/Linux 開發工具共筆: 務必 自主 學習 Linux 操作, Git, HackMD, LaTeX 語法 (特別是數學式), GNU make, perf, gnuplot
- 透過 Computer Systems: A Programmer’s Perspective 學習系統軟體: 本學期教科書 (第 2 週可向助教購書)
- 軟體缺失導致的危害
- 1970 年代推出的首款廣體民航客機波音 747 軟體由大約 40 萬行程式碼構成,而 2011 年引進的波音 787 的軟體規模則是波音 747 的 16 倍,約 650 萬行程式碼。換言之,你我的性命緊繫於一系列極為複雜的軟體系統之中,能不花點時間了解嗎?
- 軟體開發的安全性設計和測試驗證應獲得更高的重視
- 解讀計算機編碼
- 人們對數學的加減運算可輕易在腦中辨識符號並理解其結果,但電腦做任何事都受限於實體資料儲存及操作方式,換言之,電腦硬體實際只認得 0 和 1,卻不知道符號 + 和 - 在數學及應用場域的意義,於是工程人員引入「補數」以表達人們認知上的正負數
- 您有沒有想過,為何「二補數」(2’s complement) 被電腦廣泛採用呢?背後的設計考量是什麼?本文嘗試從數學觀點去解讀編碼背後的原理
- 圖解傅立葉分析
- 傅立葉 (Fourier) 分析不僅是個數學工具,更是種徹底顛覆一個人以前世界觀的思維模式
- 不幸的是,傅立葉分析的公式看起來太復雜,以至於很多人囫圇吞棗,並從此對它深惡痛絕
- 本文在不需要特別熟悉數學工具的狀況下,讓讀者體會到藉由傅立葉分析看到世界的另一個樣貌
- Bit-wise operations / bit-wise 的應用
- bit-field
- 為什麼要深入學習 C 語言?
- C 語言發明者 Dennis M. Ritchie 說:「C 很彆扭又缺陷重重,卻異常成功。固然有歷史的巧合推波助瀾,可也的確是因為它能滿足於系統軟體實作的程式語言期待:既有相當的效率來取代組合語言,又可充分達到抽象且流暢,能用於描述在多樣環境的演算法。」
- C 語言:記憶體管理、對齊及硬體特性
- C 語言: 數值系統
- 基於 C 語言標準研究與系統程式安全議題
- 藉由研讀漏洞程式碼及 C 語言標準,討論系統程式的安全議題
- 透過除錯器追蹤程式碼實際運行的狀況,了解其運作原理;
- 取材自 dangling pointer, CWE-416 Use After Free, CVE-2017-16943 以及 integer overflow 的議題;
- C 語言: 指標
- 解讀 C 語言規格書的 “object”
- 重讀 “type” 的定義,並且理解 incomplete type 的意義
- 三位一體: Array, function, pointer types: 都歸類於 derived declarator types
void *
的設計考量- C-style string
- What comes after Moore’s Law?: 隨著 Moore’s Law 時代的結束, 通用化硬體效能不再如以往快速進步, 因此軟硬體也必須因應如此的變化, 這篇點出 4 個面向:
- Ephemeral applications (短暫的軟體): 這點是以企業軟體來談,許多組織的觀點認為軟體壽命比運作其的硬體來得長久。在許多大企業依然如此,然而後續將大量導入 mobile, web, analytics 與其他軟體,更趨向快速轉變以符合客戶與市場所需;
- New workloads, such as machine learning: 呼應諸多計算架構大師所說的 Domain-Specific Architecture (DSA);
- Cloud platforms: 對於雲端應用而言,使用者不會在意它是在哪種處理器與加速器上運作的;
- Open source software: 主要在於特定的軟體開發商因人力與成本而減少支援硬體的範圍,開放原始碼軟體這時能夠作為考慮方案。儘管無法消弭對硬體的相依性,但不像軟體開發商對硬體平台支援或不支援的要求;
- The Era of General Purpose Computers is Ending: 過往是研究員和從業者就設計瓶頸與發熱問題來說明困境,這篇則由製程發展與已發生的現象,討論以下變遷:
- 能追上最先進製程的晶圓廠商越來越少
- TOP 500 中使用特殊晶片比例不斷上升
- 特殊化處理器各方面變得更為經濟實惠
- 課程基本資料表單: 務必填寫,以接收課程資訊
- Week1 隨堂測驗: 題目/作答表單
- 作業
- 課程簡介和注意須知
第 2 週 (Sep 19): 課堂測驗
第 3 週 (Sep 26): C 程式設計效能
第 4 週 (Oct 3): code review
第 5 週 (Oct 10): CS:APP
第 6 週 (Oct 17): Code Review
第 7 週 (Oct 24): ?
第 8 週 (Oct 31): 程式碼最佳化
- 為何你要掌握數學?即使 Linux 核心內部也大量可見: 從 CPU cache 一致性的角度看 Linux spinlock 的 non-scalable
- CS:APP 第 5 章重點提示和練習
- CS:APP 第 4 章重點提示
第 9 週 (Nov 7): Computer Architecture
- 人工智慧涉及大量運算,和底層計算機結構及數值表示法高度相關: Making floating point math highly efficient for AI hardware, bfloat16 floating-point format
- CS:APP 第 5 章重點提示和練習
- CS:APP 第 4 章重點提示和練習
第 10 週 (Nov 14): Computer Architecture
第 11 週 (Nov 21): 分組討論
第 12 週 (Nov 28): Machine Language
第 13 週 (Dec 5): Memory Hierarchy
第 14 週 (Dec 12): Memory Hierarchy
- 2018 年 11 月 16 日新版國際單位制通過,新的公斤定義將改以物理學的普朗克常數為標準 (WTF?!)
- 世界上所有的測量結果都可以追溯到「國際單位制」(Système International d’Unités;SI Units)
- 國際單位制以七個基本單位為基礎,並由此推導出各種可相互換算的測量單位。多年來,測量的定義 —— 安培(ampere)、燭光(candela)、克耳文(kelvin)、公斤(kilogram)、公尺(meter)、莫耳(mole)以及秒(second) —— 都已重新定義
- 質量測量的標準源於存放在法國巴黎近郊國際度量衡局的單一物件 —— 國際公斤原器 (IPK),自 1884 年被鑄造成為公斤的標準以來一直存放在此,有什麼問題呢?
- 根據近年的量測顯示,IPK 重量已減少約 50 微克
- 經過全球國家度量機構數十年的討論和研究,決定捨棄實體的 IPK,改以普朗克常數重新定義公斤單位,其定義比 IPK 至少穩定 100 萬倍
- video: 公斤是如何重新定義?
- 目前的公斤質量是指以地心引力施加特定的力,修訂後的定義改用電磁力取代機械力進行測量
- 未來改以基布爾秤(Kibble balance)測量,後者以電磁力精準量測物體質量,可測量出多少電流產生的電磁力,才等同於作用在給定質量上的力。
- CS:APP 第 6 章重點提示
- 2018 年 11 月 16 日新版國際單位制通過,新的公斤定義將改以物理學的普朗克常數為標準 (WTF?!)
第 15 週 (Dec 19): Virtual Memory
第 16 週 (Dec 26): Virtual Memory + 傅立葉分析
第 17 週 (Jan 2):
第 18 週 (Jan 9): Concurrency + 課程回顧