2016/2/13 《計算機系統要素》(The Elements of Computing Systems)讀書筆記(1)

過年期間一直在啃一本書,學習計算機組成原理。編程

這是一本很棒的書,是一個基於項目的學習過程。可讓人理解的很深入。框架

coursera上有這本書前半部分的教程,是由書的做者團隊們開的課,我的認爲很棒,惋惜就是後半部分的教程還沒出。編程語言

不過他們的製做團隊說,16年春季就會出後半部分的教程了。函數

課程連接是這樣的:https://www.coursera.org/learn/build-a-computer學習

這本書有本身的官方網址,教程和軟件提供很完善,Q&A也很Nice,基本上要問什麼問題都能獲得回答:http://www.nand2tetris.org/優化


 

固然這本書的缺點彷佛是講的內容實在太多,因此不少細節並無處理到很完善,省略了不少內容。ui

但這並非說這本書就是一本不完整的書。事實上,從第一章到最後一章,這個項目的完整性是超出個人想象的。操作系統

學習的人將從徹底不理解計算系統的級別開始,搭建起一臺計算機,而後在這臺計算機上搭建一款簡單的編譯器,實現一個操做系統,而後完成在上面的程序的編寫。翻譯

整本書的跨度是從數字電路到操做系統。固然,這也就不可避免地讓它不能在不少問題上太過糾纏,因此,這本書重實現和了解,輕優化和深刻。設計

做爲我一個EE學生的計算機結構入門,實在是太美好不過了。

它自底向上的構建方式讓學習曲線平滑到不能更平滑。

 


具體總結一下這本書的內容,這本書圍繞着一個框架來講明:

把整個計算機系統分紅兩個部分,硬件層和軟件層。

自頂向下的觀點是這樣的,最高級的是人的想法,爲了實現人的想法咱們須要編程描述語言和操做系統,操做系統由編程語言來寫,而要使編程語言可以工做,須要有編譯器,編譯器的實現是有虛擬機技術的,把高級語言翻譯成虛擬機上的中間代碼,而後虛擬機將中間代碼翻譯成相應硬件平臺的彙編代碼,而彙編代碼是等價翻譯成機器語言才能使用的(用匯編器翻譯)至於機器語言是怎麼使用和實現的,和相應的硬件平臺是有關係的,計算硬件平臺的實現依靠的是數字芯片,數字芯片是一堆數字邏輯門的封裝,而數字邏輯門的實現,電子學上的實現是EE研究的東西,至於爲何能實現,這是物理學的領域了。到這裏就不接着向下研究了。而整個結構是這樣完整的。

固然學習的過程是自底向上的,從惟一邏輯門與非門(Nand)開始搭出各類不一樣的邏輯門,組合成ALU,CPU,直至最後組成一臺完整的被稱爲Hack的電腦,而後是使用它的機器語言編程,用一個彙編器來將彙編語言翻譯成機器語言。而後經過設計一款編譯器來實現一款基於類的名叫Jack的語言,實現一個有一些函數接口的操做系統。

這是一個浩大的工程,然而卻被很好的整合在了這本書裏

這本書是我這個學年至今讀到最好的書。

今天這篇隨筆是一個總結和推薦。你們有興趣有空的能夠看看這本書,而後咱們能夠一塊兒探討。

我會陸續發這本書的具體內容的讀書筆記。

相關文章
相關標籤/搜索