版本 d30d502248fc6d15b336b28c7f69f7abadc4e2fc
進階電腦系統理論與實作 (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): 課堂測驗
- 測驗時間: 15:10-18:10
- 可翻閱書籍和 Google 搜尋,但在測驗期間,禁止任何形式的討論。
- 作答以「紙筆」進行,請同學們記得攜帶文具。
- 測驗題目
- 作業
- 第 3 週 (Sep 26): C 語言程式設計
- 第 4 週 (Oct 3): code review
- 第 5 週 (Oct 10): 停課一次,在家測驗
- 題目 / 作答表單 (測驗時間 15:00 - 23:50 Oct 10)
- 第 6 週 (Oct 17): Code Review
- 第 7 週 (Oct 24): 機器內部表示法
- 第 8 週 (Oct 31): 程式碼最佳化
- 第 9 週 (Nov 7): Computer Architecture
- 第 10 週 (Nov 14): Memory Hierarchy
- 第 11 週 (Nov 21): Virtual Memory
- 佳句偶得:「寫程式就可以讓機器做事,當你會使用機器的時候,你就不用把人當機器用。但學校偏偏是個把學生訓練成機器的地方。」(出處)
- 最佳化來自對系統的掌握
- CS:APP 第 9 章重點提示
- Week 11 隨堂測驗:
- 分組表: 請在 12 月 3 日前執行選定的任務
- 第 12 週 (Nov 28): 記憶體管理
- 第 13 週 (Dec 5): 重新探討 Process
- 第 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 章重點提示
- 第 15 週 (Dec 19): Virtual Memory
- 第 16 週 (Dec 26): Virtual Memory + 傅立葉分析
- 第 17 週 (Jan 2):
- 第 18 週 (Jan 9): Concurrency + 課程回顧