文章來源:極客時間《深入淺出計算機組成原理》

對於程序員來說,計算機組成原理相關知識重要嗎?

不知道大家有沒有發現各個大學計算機系的培養計劃,它們都有差不多十來門核心課程。其中,「計算機組成原理」卻是入門和底層知識的第一課。

為什麼這樣說?想像一下,一名賽車手不知道賽車的內部構成和工作原理,你覺得他能駕馭賽車,在專業賽事中奪冠嗎?

同樣的道理,要成為一名優秀的軟體工程師,寫得一手好程序,就要了解計算機是怎麼工作的,深入計算機組成原理。

我們直接用肉眼來看,計算機是由CPU、內存、顯示器這些設備組成的硬體,而大部分人工作後從事的是軟體開發,顯然,在硬體和軟體之間需要一座橋樑,而「計算機組成原理」就扮演了這樣一個角色,它既隔離了軟體和硬體,也提供了讓軟體無需關心硬體,就能直接操作硬體的介面。

簡單地說,你只需要對硬體有原理性的理解,就可以信賴硬體的可靠性,安安心心用高級語言來寫程序。無論是寫操作系統、編譯器這樣的硬核代碼,還是寫 Web 應用、手機 App 這樣的應用層代碼,你都可以做到心裡有底。

如上圖,學習組成原理之後,向下,你可以學習數字電路相關的課程,向上,你可以學習編譯原理、操作系統這些核心課程。它會讓你真正對計算機的知識有一個全局的瞭解。

當然,這門課還可以直接解決你在並發編程、性能優化中經常遇到的一些困惑,比如 CPU Cache 的原理是什麼,CPU和I/O之間是如何通信的,虛擬內存是要解決什麼問題。

如果你看過倚天屠龍記,會發現張無忌幾個時辰,就把別人幾十年沒有練成的乾坤大挪移學會了,最根本的原因,是他有「九陽神功」練就的內功底子!

同樣的,深入學習這門「底層知識」,就是在練扎馬步、核心肌肉力量,提升你自己的「根骨」和「資質」,從而拔高你發展的上限。

《深入淺出計算機組成原理》?

time.geekbang.org

在很早之前,極客時間的編輯找到我,想讓我開一個計算機組成原理的課程,在考研統考的4門核心基礎課程中,極客時間已經出了數據結構與演算法、操作系統,計算機網路相關的3門很受歡迎的計算機基礎課程,這是第4門也是非常重要的第一課,等你做了多年開發以後,會發現,原來這麼多年就是圍繞這4門課程打轉。

我身邊想打好這門「硬核內功」的工程師很多,大都是買了資料,前面100頁已經發黃了,後面500頁從來沒有打開過;不少非科班出身的程序員,直接說「這些書根本看不懂」,典型的「買書如山倒,讀書如抽絲」。

總結大家的學習體驗就是:很底層,很重要,但是太抽象,概念多,難理解,不好學以致用。

基於此,我和極客時間共同打磨了《深入淺出計算機組成原理》專欄,不同於學校的課程和市面上的其他資料,在這個專欄構思之初,我就給自己定了一個交付目標:

我會結合自己多年硬體研究和軟體開發經驗,通過日常工作實際場景+硬體發展歷史+軟體開發案例,深入淺出的為你講解計算機組成原理的核心知識,教你真正看懂、學會、記住,從源頭理解軟、硬體的共同之處,洞悉性能問題的本質,學以致用。

我是誰?

我是徐文浩,一個目前正在創業的工程師。如果從7歲第一次在少年宮寫程序開始算起,到今天,我的碼齡快有30年了。2005年上海交通大學計算機系畢業後,在 Trilogy Software 寫過各種大型企業軟體;曾任 MediaV 技術總監,從零開始搭建支撐每天百億流量的廣告演算法系統,提升了十倍以上的廣告收入和 ROI;2016年底進軍人工智慧領域。我創辦的 BotHub.AI,是唯一進入 F8 大會開發者代表的中國公司。

為了方便大家的學習,我特地整理了一份學習腦圖,希望你對將要學習的內容有個總綱的瞭解,做到心中有數。

你能獲得什麼?

1.學以致用的計算機底層知識

在專欄中,我將以日常開發中的真實案例,讓你理解計算機的各個組件是怎麼運作的,遇到問題的根源是什麼,從知識→應用→知識,形成閉環,學以致用。

比如說,CPU裡面的冒險和分支預測的策略,就好像在接力賽跑裡面後面幾棒的選手早點起跑,如果交接棒沒有問題,自然佔了便宜,但是如果沒能交接上,就會喫個大虧。

2.30+計算機組成原理核心要點

知識點瑣碎難記?沒關係,我會把整個的計算機組成原理通過指令、計算、CPU、存儲系統和I/O串起來,以一個程序的執行過程進行逐層分解,從歷史視角講清楚「是什麼」,結合案例講清楚」怎麼做「,帶你搞懂計算機組成原理中最核心、最重要的內容。

3.洞悉性能問題的本質

學習計算機組成原理,其實就是理解計算機是怎麼運作的,以及為什麼這麼運作。在此基礎上,我們才能又快又準地優化性能,提升效率。而我們想要解決性能問題,其實就是在此基礎上,去關注時鐘週期時間、每條指令的平均時鐘週期數CPI、指令數。

4.組成原理在工業界的實際應用

理解了計算機各個組件的運作之後,最後我將手把手帶你實操。利用存儲器層次結構設計大型 DMP 系統,並通過 Disruptor,跟你一起感受 CPU 的風馳電掣,讓你真正學有所用。

總之,學好這門「硬核內功」,會讓你在整個軟體開發領域中,看到更加廣闊的天地,它還會為你帶來更多的職業發展機會,比如像我自己的團隊裏,有個小夥伴開始是做演算法應用開發的,因為有紮實的計算機基礎知識,後來就轉去開發 TVM 這樣的深度學習編譯器了,是不是很厲害?

極客時間?

time.geekbang.org

現在訂閱有什麼福利?

限時優惠 ¥68,助你打好這門「硬核內功」。

專欄詳細目錄

「練拳不練功,到老一場空」。越早弄清楚計算機的底層原理,在你的知識體系中「儲蓄」起這些知識,也就意味著你有越長的時間來收穫學習知識的「利息」。長久的」複利效應「,會讓你的未來走的更遠更輕鬆。

《深入淺出計算機組成原理》?

time.geekbang.org

拓展閱讀:

1、為什麼你需要學習計算機組成原理?

2、馮·諾依曼體系結構:計算機組成的金字塔


推薦閱讀:
相關文章