回覆列表
-
1 # 阿碩ning
-
2 #
作業系統原理就是講作業系統的,比如怎麼管理記憶體,怎麼管理檔案,怎麼管理程序。
計算機組成原理講的是計算機硬體各部分的組成與協作,比如怎麼取址,記憶體怎麼構成,磁碟的磁臂磁軌之類的。
編譯原理,講的是怎麼將高階語言(比如c,java)翻譯成機器語言的過程與技術。
作業系統原理就是講作業系統的,比如怎麼管理記憶體,怎麼管理檔案,怎麼管理程序。
計算機組成原理講的是計算機硬體各部分的組成與協作,比如怎麼取址,記憶體怎麼構成,磁碟的磁臂磁軌之類的。
編譯原理,講的是怎麼將高階語言(比如c,java)翻譯成機器語言的過程與技術。
0.1 計算機的基本組成
計算機的硬體組成
這些硬體,怎麼對應到經典的馮·諾依曼體系結構的
除此之外,還需要了解計算機的兩個核心指標
效能
功耗
效能和功耗也是我們在應用和設計五大基本元件中需要重點考慮的因素。
0.2 計算機的指令和計算
需要搞明白,我們每天撰寫的一行行C、Java、PHP程式,是怎麼在計算機裡面跑起來的。
瞭解我們的程式是怎麼透過編譯器和彙編器,變成一條條機器指令這樣的編譯過程(編譯過程展開,就是編譯原理)
知道我們的作業系統是怎麼連結、裝載、執行這些程式的(深入學習,就是作業系統)。而這一條條指令執行的控制過程,就是由計算機五大元件之一的控制器來控制的。
計算部分,要從二進位制和編碼開始,理解我們的資料在計算機裡的表示,以及我們是怎麼從數位電路層面,實現加法、乘法這些基本的運算功能的。
實現這些運算功能的ALU(Arithmetic Logic Unit/ALU),算術邏輯單元,計算機五大元件之一的運算器。
特別重要的就是浮點數(Floating Point)。
浮點數是我們在日常運用中非常容易用錯的一種資料表示形式。掌握浮點數能讓你對資料的編碼、儲存和計算能夠有一個從表到裡的深入理解。尤其在AI火熱的今天,浮點數是機器學習中重度使用的資料表示形式,掌握它更是非常有必要。
0.3 CPU的設計
CPU時鐘可以用來構造暫存器和記憶體的鎖存器和觸發器,因此,CPU時鐘應該是我們學習CPU的前導知識。搞明白我們為什麼需要CPU時鐘(CPU Clock),以及暫存器和記憶體是用什麼樣的硬體組成的之後,我們可以再來看看,整個計算機的資料通路是如何構造出來的。
資料通路,其實就是連線了整個運算器和控制器,並最終組成了CPU。而出於對於效能和功耗的考慮,你要進一步理解和掌握面向流水線設計的CPU、資料和控制冒險,以及分支預測的相關技術。
既然CPU作為控制器要和輸入輸出裝置通訊,那麼我們就要知道異常和中斷髮生的機制。在CPU設計部分的最後,我會講一講指令的並行執行,看看如何直接在CPU層面,透過SIMD來支援平行計算。
0.4 儲存器的原理
透過儲存器的層次結構作為基礎的框架引導,需要掌握從上到下的CPU快取記憶體、記憶體、SSD硬碟和機械硬碟的工作原理,它們之間的效能差異,以及實際應用中利用這些裝置會遇到的挑戰。儲存器其實很多時候又扮演了輸入輸出裝置的角色,所以你需要進一步瞭解,CPU和這些儲存器之間是如何進行通訊的,以及我們最重視的效能問題是怎麼一回事;理解什麼是IO_WAIT,如何透過DMA來提升程式效能。
對於儲存器,我們不僅需要它們能夠正常工作,還要確保裡面的資料不能丟失。於是你要掌握我們是如何透過RAID、Erasure Code、ECC以及分散式HDFS,這些不同的技術,來確保資料的完整性和訪問效能。
計算機組成原理的學習辦法
相較於整個計算機科學中的其他科目,計算機組成原理更像是整個計算機學科裡的“綱要”。這門課裡任何一個知識點深入挖下去,都可以變成計算機科學裡的一門核心課程。
程式怎樣從高階程式碼變成指令在計算機裡面執行,對應著“編譯原理”和“作業系統”這兩門課程
計算實現背後則是“數位電路”
如果要深入CPU和儲存器系統的最佳化,必然要深入瞭解“計算機體系結構”