Re: [問卦] 讀通計算機組織對寫程式有什麼幫助?消失
※ 引述《Huffman (HuffmanAlgorithm)》之銘言:
: 計算機組織與設計
: 內容就是組合語言 評估計算機效能 自組CPU 記憶體管理
: 想不太透這些與碼農寫程式啥關係
: 有無八卦?
既然八卦板在 40 天內有 4 篇文章的標題提及計算機組織,剛好小弟最近授課進度
與此相關,順手回覆如下,歡迎交流討論。(謎之聲:原來八卦板也能夠討論資訊
工程的課業,這看板實在太萬能了,讚歎 Ptt!)
首先,想像一個情境,你到某一間製造家電的公司服務,擔任軟體工程師的你被主管
要求「讓公司的電扇能夠透過某種時序編碼,得以讓使用者感覺出自然風,而且功耗
要降到最低」,你會怎麼應對呢?
於是你就求助只比 Ptt 大神還遜色一點的 Google,提交以下關鍵字:
「電扇 自然風 控制」
不難發現「用 PIC 單片機製作電扇自然風發生器」[1] 這篇文章,後者開頭寫得很
到位:
「我們使用美國 Microchip 公司的單片機製作了一種電扇自然風發生器,它能有
規律地控制風扇送風的強弱。傳統的電扇通過它可產生自然風,亦可將它直接做在
電扇里,即是自然風電扇。」
依據上面的描述,所謂「產生自然風」的電扇其實就傳統電扇加上特殊的控制,而且
正是時序控制,原來主管的要求還真的跟軟體工程師背景有關,不是特別刁難你呀。
文中提到的 Microchip 公司在 2016 年初分別收購 Micrel 和 Atmel 兩家老字號
的微處理晶片供應商。作為 8-bit 微控制器的領導廠商,Microchip 毛利高達六成
[2],這讓人不免好奇這利潤到底怎麼來?!Microchip 陸續清算低毛利 (< 50%)
的產品,現在該公司著重醫療與健身電子、照明控制、照護與手術等超高毛利的產
業。
舉例來說,在以醫院為背景題材的影集或電影中,我們可見外科醫師以傳統手術刀
切開組織器官,再以絲線結紮止血的畫面,但早在近 100 年前「電刀」的問世,
徹底縮短手術時間、改善傷口癒合,減少病人失血,也降低感染等併發症的機率、
提高醫療品質。「電刀」的英文名稱為 Electrosurgical Unit(縮寫為 ESU),
又稱為高頻電刀,當高頻電流透過器械(電刀筆)作用在人體組織時,會使具有
粘滯性的體液極劇振動,因摩擦而產生熱量,使組織內的水分快速蒸發,以致組織
分離或者凝固,這就是以電能代替傳統手術刀的基本原理。[3] 等等,這跟軟體有
什麼關聯?考慮到腦(神經)外科、眼科、耳鼻喉科、婦產科等較為精細的外科手
術時,電刀必須限定操作的次數 (這說法不精確,主要就是反映損耗的狀況),但
護理人員幾乎不能可能從表面上得知一把電刀到底用了多少次、損耗又如何,這時
就是咱們軟體工程師發揮作用之處,簡單來說,適用精細外科手術的雙極電刀
(bipolar) 裡頭有微控制器,隨時記錄電刀使用的狀況,並作為自我檢驗稽核
機制,避免醫療護理人員過度使用。
忘了說,男人攝護腺的手術自然也跟這類電刀有關,要是軟體沒寫好,讓男人的
功能永久 disable (應該要加上 "d",表示被動態,哎呀,想起來就心好痛),那
就是罪過了。既然上述領域裡頭軟體品質的影響很重大,形式化驗證自然就是關鍵
議題,不過有件事是前提:
「軟體要在什麼等級的硬體上運作,才能確保演算法和各式控制邏輯得以充分
運作呢?」
就前述電扇控制、電刀,還有多種電廠安全監控系統來說,不乏仍採用 8-bit,
顯然不是為了省錢,而是要在最小的空間達到最低功耗且軟硬體本身都要做出
完整的檢驗,甚至要從電路 register-transfer level (RTL)、週邊硬體、軟體
系統,到通訊協定等等,沒有一個環節可放過。畢竟這動輒造成公共安全危機,
資訊系統造成的損失隨便都以十年起跳。
你說,計算機組織重不重要呢?要是資訊系統的研發人員不能很清楚知道 DMA,
interrupt, exception / trap / mode switch 的成本,不清楚各種硬體行為,
又如何確保時間精準地符合期待呢?當系統放到到汽車電子和航空系統時,就是
一連串即時系統 [5] 的考量,屆時即便是沒充分處理的 page fault 都會讓
系統陷入不可挽救的境界 (錯過 deadline,在 hard/safe real-time 往往會
釀造悲劇),在多核心的架構中,儘管 cache coherence 的成本看起來都是微秒
(10 的 -6 次方秒) 等級或更小,但累積起來卻很可能造成影響,注意,只要有
一次沒符合規範,就 GG 了 (捏著自己 GG 想想有多痛,我說軟體工程師的
良心)。
不過也不要怕自己做得不夠好,導致他人家破人亡,就不踏入軟體開發,我們
資訊從業人員本該創造更好的數位世界基礎建設,讓世人得以受益,不然我們
的存在還有什麼理由?
對了,在加密貨幣領域中,往往伴隨著虛擬機器,如 Ethereum 的 EVM 作為
執行 smart contract 的基礎 [6],這時你若有充分的計算機組織結構的背景
知識,會讓你開發相關系統軟體時,能夠確保行為更 deterministic, safe,
sequentually correct. 希望讀到這裡,您能有點啟發,歡迎來挑戰相關的
作業 sandbox [7] >>
預期目標
- 研讀 形式化驗證,並透過 cbmc 做 model checking 的練習
- 探討 隔離執行環境的建構與應用,思考加密貨幣領域的系統軟體
- 深入學習 GNU Toolchain,涵蓋 GDB 和 GProf
- 延伸 simulator 作業,培養軟體設計的技巧和學習嚴謹的系統分析
[1] http://cocdig.com/docs/show-post-626.html
[2] https://ycharts.com/companies/MCHP/gross_profit_margin
[3] https://www.ntuh.gov.tw/BMED/equipment/DocLib/
%E6%B7%BA%E8%AB%87%E9%9B%BB%E5%88%80.aspx (請將兩行串接)
[4] https://hackmd.io/s/H1xxp3pF0
[5] 即時系統和 Linux 的關聯請見:
https://www.slideshare.net/jserv/making-linux-do-hard-realtime
[6] https://github.com/pirapira/awesome-ethereum-virtual-machine
[7] sandbox: https://hackmd.io/s/BJpTWUM1f
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.245.162
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1510505659.A.9A0.html
推
11/13 00:55, , 1F
11/13 00:55, 1F
推
11/13 00:56, , 2F
11/13 00:56, 2F
→
11/13 00:56, , 3F
11/13 00:56, 3F
推
11/13 00:56, , 4F
11/13 00:56, 4F
推
11/13 00:57, , 5F
11/13 00:57, 5F
推
11/13 00:57, , 6F
11/13 00:57, 6F
推
11/13 00:57, , 7F
11/13 00:57, 7F
推
11/13 00:58, , 8F
11/13 00:58, 8F
推
11/13 00:59, , 9F
11/13 00:59, 9F
→
11/13 01:00, , 10F
11/13 01:00, 10F
推
11/13 01:01, , 11F
11/13 01:01, 11F
噓
11/13 01:02, , 12F
11/13 01:02, 12F
推
11/13 01:03, , 13F
11/13 01:03, 13F
推
11/13 01:03, , 14F
11/13 01:03, 14F
→
11/13 01:05, , 15F
11/13 01:05, 15F
→
11/13 01:05, , 16F
11/13 01:05, 16F
推
11/13 01:05, , 17F
11/13 01:05, 17F
推
11/13 01:06, , 18F
11/13 01:06, 18F
推
11/13 01:06, , 19F
11/13 01:06, 19F
推
11/13 01:08, , 20F
11/13 01:08, 20F
推
11/13 01:08, , 21F
11/13 01:08, 21F
推
11/13 01:10, , 22F
11/13 01:10, 22F
推
11/13 01:12, , 23F
11/13 01:12, 23F
推
11/13 01:13, , 24F
11/13 01:13, 24F
推
11/13 01:15, , 25F
11/13 01:15, 25F
→
11/13 01:15, , 26F
11/13 01:15, 26F
→
11/13 01:17, , 27F
11/13 01:17, 27F
推
11/13 01:17, , 28F
11/13 01:17, 28F
→
11/13 01:17, , 29F
11/13 01:17, 29F
→
11/13 01:18, , 30F
11/13 01:18, 30F
推
11/13 01:21, , 31F
11/13 01:21, 31F
推
11/13 01:21, , 32F
11/13 01:21, 32F
推
11/13 01:23, , 33F
11/13 01:23, 33F
→
11/13 01:23, , 34F
11/13 01:23, 34F
推
11/13 01:24, , 35F
11/13 01:24, 35F
推
11/13 01:26, , 36F
11/13 01:26, 36F
推
11/13 01:26, , 37F
11/13 01:26, 37F
噓
11/13 01:27, , 38F
11/13 01:27, 38F
→
11/13 01:27, , 39F
11/13 01:27, 39F
還有 334 則推文
推
11/13 14:03, , 374F
11/13 14:03, 374F
推
11/13 14:10, , 375F
11/13 14:10, 375F
推
11/13 14:39, , 376F
11/13 14:39, 376F
推
11/13 14:47, , 377F
11/13 14:47, 377F
→
11/13 15:34, , 378F
11/13 15:34, 378F
推
11/13 15:52, , 379F
11/13 15:52, 379F
推
11/13 15:53, , 380F
11/13 15:53, 380F
→
11/13 16:03, , 381F
11/13 16:03, 381F
→
11/13 16:05, , 382F
11/13 16:05, 382F
→
11/13 16:07, , 383F
11/13 16:07, 383F
→
11/13 16:09, , 384F
11/13 16:09, 384F
→
11/13 16:13, , 385F
11/13 16:13, 385F
推
11/13 16:19, , 386F
11/13 16:19, 386F
推
11/13 17:00, , 387F
11/13 17:00, 387F
推
11/13 17:11, , 388F
11/13 17:11, 388F
推
11/13 17:39, , 389F
11/13 17:39, 389F
→
11/13 17:39, , 390F
11/13 17:39, 390F
推
11/13 18:16, , 391F
11/13 18:16, 391F
推
11/13 18:39, , 392F
11/13 18:39, 392F
推
11/13 18:57, , 393F
11/13 18:57, 393F
推
11/13 19:21, , 394F
11/13 19:21, 394F
推
11/13 20:13, , 395F
11/13 20:13, 395F
推
11/13 21:45, , 396F
11/13 21:45, 396F
推
11/14 00:25, , 397F
11/14 00:25, 397F
推
11/14 08:11, , 398F
11/14 08:11, 398F
→
11/14 10:27, , 399F
11/14 10:27, 399F
噓
11/14 10:45, , 400F
11/14 10:45, 400F
→
11/14 11:39, , 401F
11/14 11:39, 401F
推
11/14 12:31, , 402F
11/14 12:31, 402F
推
11/14 14:09, , 403F
11/14 14:09, 403F
推
11/14 14:39, , 404F
11/14 14:39, 404F
推
11/14 19:10, , 405F
11/14 19:10, 405F
推
11/14 20:32, , 406F
11/14 20:32, 406F
推
11/14 22:42, , 407F
11/14 22:42, 407F
推
11/15 03:42, , 408F
11/15 03:42, 408F
推
11/15 22:29, , 409F
11/15 22:29, 409F
→
11/15 22:30, , 410F
11/15 22:30, 410F
推
11/19 15:55, , 411F
11/19 15:55, 411F
推
01/25 19:11, , 412F
01/25 19:11, 412F
推
03/04 23:16, , 413F
03/04 23:16, 413F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):