早期,DIY一臺計算機,要先有三大件html
計算機最重要的核心配件,中央處理器(Central Processing Unit)。git
計算機的全部「計算」都是由CPU來進行的。編程
你撰寫的程序、打開的瀏覽器、運行的遊戲,都要加載到內存裏才能運行。瀏覽器
程序讀取的數據、計算獲得的結果,也都要放在內存裏。內存越大,能加載的東西天然也就越多。服務器
內存一般直接能夠插在主板上,存放在內存裏的程序和數據,須要被CPU讀取,CPU計算完以後,還要把數據寫回到內存。然而CPU不能直接插到內存上,反之亦然。因而,就帶來了最後一個大件——主板(Motherboard)。網絡
主板是一個有着各類各樣,有時候多達數十乃至上百個插槽的配件。架構
咱們的CPU要插在主板上,內存也要插在主板上。框架
主板的芯片組(Chipset)和總線(Bus)解決了CPU和內存之間如何通訊的問題。編程語言
有了三大件,只要配上電源供電,計算機差很少就能夠跑起來了。學習
可是如今還缺乏各種輸入(Input)/輸出(Output)設備,也就是咱們常說的I/O設備。
若是你用的是本身的我的電腦,那顯示器確定必不可少,只有有了顯示器咱們才能看到計算機輸出的各類圖像、文字,這也就是所謂的輸出設備。
一樣的,鼠標和鍵盤也都是必不可少的配件。這樣我才能輸入文本,寫下這篇文章。它們也就是所謂的輸入設備。
最後,你本身配的我的計算機,還要配上一個硬盤。這樣各類數據才能持久地保存下來。
絕大部分人都會給本身的機器裝上一個機箱,配上風扇,解決灰塵和散熱的問題。
不過機箱和風扇,算不上是計算機的必備硬件,咱們拿個紙板或者外面放個電風扇,也同樣能用。
顯示器、鼠標、鍵盤和硬盤這些東西並非一臺計算機必須的部分。
其實只須要有I/O設備,能讓咱們從計算機裏輸入和輸出信息就能夠了。
不少網吧的計算機就沒有硬盤,而是直接經過局域網,讀寫遠程網絡硬盤裏面的數據。
各種雲服務器,只要讓計算機能經過網絡,SSH遠程登錄訪問就行了,所以也不必配顯示器、鼠標、鍵盤這些東西。
這樣不只可以節約成本,還更方便維護。
還有一個很特殊的設備,就是顯卡(Graphics Card)。
如今,使用圖形界面操做系統的計算機,不管是Windows、Mac OS仍是Linux,顯卡都是必不可少的。
有人可能要說了,我裝機的時候沒有買顯卡,計算機同樣能夠正常跑起來啊!那是由於,如今的主板都帶了內置的顯卡。
若是你用計算機玩遊戲,作圖形渲染或者跑深度學習應用,你多半就須要買一張單獨的顯卡,插在主板上。
顯卡之因此特殊,是由於顯卡里有除了CPU以外的另外一個「處理器」,也就是GPU(Graphics Processing Unit,圖形處理器),GPU同樣能夠作各類「計算」的工做。
鼠標、鍵盤以及硬盤都是插在主板上的。做爲外部I/O設備,它們是經過主板上的南橋(SouthBridge)芯片組,來控制和CPU之間的通訊的。
「南橋」芯片的名字很直觀
有了南橋,天然對應着也有「北橋」。
是的,之前的主板上一般也有「北橋」芯片,用來做爲「橋」,鏈接CPU和內存、顯卡之間的通訊。
不過,隨着時間的變遷,如今的主板上的「北橋」芯片的工做,已經被移到了CPU的內部,因此你在主板上,已經看不到北橋芯片了。
剛纔咱們講了一臺計算機的硬件組成,這說的是咱們平時用的我的電腦或者服務器。那咱們平時最經常使用的智能手機的組成,也是這樣嗎?
咱們手機裏只有SD卡(Secure Digital Memory Card)相似硬盤功能的存儲卡插槽,並無內存插槽、CPU插槽這些東西。
沒錯,由於手機尺寸的緣由,手機制造商們選擇把
CPU、內存、網絡通訊,乃至攝像頭芯片,都封裝到一個芯片,而後再嵌入到手機主板上。
這種方式叫SoC,也就是System on a Chip(系統芯片)。
看起來,我的電腦和智能手機的硬件組成方式不太同樣。
但是,咱們寫智能手機上的App,和寫我的電腦的客戶端應用彷佛沒有什麼差異,都是經過「高級語言」這樣的編程語言撰寫、編譯以後,同樣是把代碼和數據加載到內存裏來執行。
不管是我的電腦/服務器/智能手機,仍是Raspberry Pi這樣的微型卡片機,都遵循着同一個「計算機」的抽象概念。
這是怎麼樣一個「計算機」呢?這其實就是,計算機鼻祖馮·諾依曼提出的馮·諾依曼體系結構(Von Neumann architecture),也叫存儲程序計算機。
什麼是存儲程序計算機呢?這裏面其實暗含了兩個概念
什麼是「不可編程」???
計算機是由各類門電路組合而成的,而後經過組裝出一個固定的電路版,完成一個特定的計算程序。
一旦須要修改功能,就要從新組裝電路。這樣的話,計算機就是「不可編程」的,由於程序在計算機硬件層面是「寫死」的。
最多見的就是老式計算器,電路板設好了加減乘除,作不了任何計算邏輯固定以外的事情。
咱們再來看「存儲」計算機。
程序自己是存儲在計算機的內存裏,能夠經過加載不一樣的程序來解決不一樣的問題。
有「存儲程序計算機」,天然也有不能存儲程序的計算機。
典型的就是早年的「Plugboard」這樣的插線板式的計算機。整個計算機就是一個巨大的插線板,經過在板子上不一樣的插頭或者接口的位置插入線路,來實現不一樣的功能。這樣的計算機天然是「可編程」的,可是編寫好的程序不能存儲下來供下一次加載使用,不得不每次要用到和當前不一樣的「程序」的時候,從新插板子,從新「編程」。
馮,基於當時在祕密開發的EDVAC寫了一篇報告First Draft of a Report on the EDVAC,描述了他心目中的一臺計算機應該長什麼樣。這篇報告在歷史上有個很特殊的簡稱,叫First Draft。這樣,現代計算機的發展就從祖師爺寫的一份草案開始了。
首先是一個包含
的處理器單元(Processing Unit),用來完成各類算術和邏輯運算。
由於它可以完成各類數據的處理或者計算工做,所以也有人把這個叫做數據通路(Datapath)或者運算器。
而後是一個包含
的控制器單元(Control Unit/CU),用來控制程序的流程,一般就是不一樣條件下的分支和跳轉。
在如今的計算機裏,上面的算術邏輯單元和這裏的控制器單元,共同組成了咱們說的CPU。
接着是用來存儲數據(Data)和指令(Instruction)的內存。以及更大容量的外部存儲,在過去,多是磁帶、磁鼓這樣的設備,如今一般就是硬盤。
最後就是各類輸入和輸出設備,以及對應的輸入和輸出機制。
咱們如今不管是使用什麼樣的計算機,其實都是和輸入輸出設備在打交道。
任何一臺計算機的任何一個部件均可以歸到運算器、控制器、存儲器、輸入設備和輸出設備中,而全部的現代計算機也都是基於這個基礎架構來設計開發的
而全部的計算機程序,也均可以抽象爲從輸入設備讀取輸入信息,經過運算器和控制器來執行存儲在存儲器裏的程序,最終把結果輸出到輸出設備中。而咱們全部撰寫的不管高級仍是低級語言的程序,也都是基於這樣一個抽象框架來進行運做的。
馮·諾依曼體系結構確立了咱們如今天天使用的計算機硬件的基礎架構。
所以,學習計算機組成原理,其實就是學習和拆解馮·諾依曼體系結構。
具體來講,其實就是
學習組成原理,就是在理解從控制器、運算器、存儲器、輸入設備以及輸出設備,從電路這樣的硬件,到最終開放給軟件的接口,是怎麼運做的,爲何要設計成這樣,以及在軟件開發層面怎麼儘量用好它。
計算機行業的兩大祖師爺之一,除了馮·諾依曼機以外,還有一位就是著名的圖靈(Alan Mathison Turing)。對應的,咱們如今的計算機也叫圖靈機(Turing Machine)。那麼圖靈機和馮·諾依曼機是兩種不一樣的計算機麼?圖靈機是一種什麼樣的計算機抽象呢?
歡迎留言分享你的思考和疑惑,也能夠把本文分享給你的朋友,一塊兒學習和進步!
深刻淺出計算機組成原理
原文出處:https://www.cnblogs.com/JavaEdge/p/11324814.html