版本 95c0fed48beba2b762ffe8ca50c9112f4ca7e27e
進階電腦系統理論與實作 (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): 數學基礎 + 分組報告重點提示
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)測量,後者以電磁力精準量測物體質量,可測量出多少電流產生的電磁力,才等同於作用在給定質量上的力。
Week9 提過碎形 ,現在來思考 希爾伯特曲線與豪斯多夫維度
分組報告重點提示
Linked list comparison # Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz, 24 cores list : 0.534s, speedup 1.00 array list (4) : 0.293s, speedup 1.82 array list (8) : 0.160s, speedup 3.33 SIMD array list (4) : 0.263s, speedup 2.03 SIMD array list (8) : 0.140s, speedup 3.80
第 15 週 (Dec 19): I/O 和開發典範
第 16 週 (Dec 26): Networking
第 17 週 (Jan 2):
第 18 週 (Jan 9): Concurrency + 課程回顧
Please enable JavaScript to view the comments powered by Disqus.