計算機的基本硬件組成
說到計算機的基礎(chǔ)原理就躲不過 圖靈機
和 馮諾依曼模型
高每。
圖靈機
定義了 計算機是如何進行運算的
, 馮諾依曼模型
則 定義了 計算機的基本結(jié)構(gòu)
。
圖靈機
1936 年棉磨,被譽為人工智能之父的阿蘭·圖靈提出了 圖靈機
缤剧,根據(jù)wikipedia上的定義,圖靈機
可以看作 “等價于任何有限邏輯數(shù)學(xué)過程的終極強大邏輯機器”缎除。
簡單來說严就,圖靈機
是一個能夠在 有限邏輯步的驟內(nèi)解決 可計算問題
的抽象機器。
之所以說抽象器罐,是因為圖靈并沒有真的造出這臺機器梢为,而是把它當成理論去和大家探討 可計算問題
。
圖靈認為如果一個問題是可計算的,那么它的解決方案就必須可以被具化成一條條的指令铸董,能夠被圖靈機所處理祟印。對于 可計算問題
和 不可計算問題
的定義,大家有興趣可以去了解下袒炉,最經(jīng)典的就是 停機問題旁理。
這里我們主要了解下圖靈機的基本思想(計算機是如何進行運算的
)。
-
圖靈認為
圖靈機
的基本組成如下:- 有一條無限長的「紙帶」我磁,紙帶由一個個連續(xù)的格子組成孽文,每個格子可以寫入字符。
- 有一個「讀寫頭」夺艰,讀寫頭可以讀取紙帶上任意格子的字符芋哭,也可以把字符寫入到紙帶的格子。
- 有一個「狀態(tài)寄存器」用來保存圖靈機當前所處的狀態(tài)郁副。
- 有一套「指令規(guī)則」减牺,
圖靈機
能夠根據(jù) 當前的狀態(tài) 和 當前讀寫頭所指向格子上的符號 執(zhí)行指令規(guī)則的動作。
除了「紙帶」是無限長外存谎,其他部分都是有限的拔疚,包括:狀態(tài)寄存器、指令規(guī)則集既荚。
-
我們可以通過
1+2
的簡單數(shù)學(xué)例子來看看圖靈機是如何進行運算的
:- 首先稚失,紙帶上的初始格子符號應(yīng)該是
1、2恰聘、+
句各,然后讀寫頭初始時停在1
字符所在格子上。 - 接著讀寫頭開始進行讀入晴叨,將
1
存入狀態(tài)寄存器中凿宾。 - 然后,讀寫頭往右移動一格兼蕊,以同樣的方式將
2
存入狀態(tài)寄存器中初厚。 - 然后,讀寫頭繼續(xù)往右移動一格孙技,這時讀到
+
符號产禾,因為+
是運算指令,作用是加和目前寄存器中的狀態(tài)值绪杏,運算完成后,讀寫頭將結(jié)果存入狀態(tài)寄存器中纽绍。 - 讀寫頭繼續(xù)繼續(xù)往右移動一格蕾久,發(fā)現(xiàn)是空格后,讀寫頭把結(jié)果
3
寫入到紙帶的格子中.
通過上面的
圖靈機
計算1 + 2
的過程拌夏,可以發(fā)現(xiàn)圖靈機
是不斷往右讀取格子的內(nèi)容僧著,如果內(nèi)容是數(shù)字則存儲到狀態(tài)寄存器履因,如果是運算符合則進行運算。事實上盹愚,圖靈機這個看起來很簡單的工作方式栅迄,和我們今天的計算機是基本一樣的。
- 首先稚失,紙帶上的初始格子符號應(yīng)該是
馮諾依曼模型
馮諾依曼模型
又被稱為 馮諾依曼結(jié)構(gòu)
皆怕、普林斯頓結(jié)構(gòu)
毅舆,在wikipedia中被定義為 “一種將程序指令存儲器和數(shù)據(jù)存儲器合并在一起的電腦設(shè)計概念結(jié)構(gòu)”。
與之對應(yīng)的是 哈佛結(jié)構(gòu)
愈腾,在wikipedia中被定義為 “一種將程序指令儲存和數(shù)據(jù)儲存分開的存儲器結(jié)構(gòu)(Split Cache)”憋活。
-
從存儲設(shè)計上看,
哈佛結(jié)構(gòu)
比馮諾依曼結(jié)構(gòu)
更合理虱黄,因為在純馮諾依曼架構(gòu)
下的 CPU 不能同時進行指令讀取
和數(shù)據(jù)訪問
悦即,因此現(xiàn)代計算機都是這兩個設(shè)計模型結(jié)構(gòu)的綜合應(yīng)用。但是橱乱,
哈佛結(jié)構(gòu)
只是一種將程序資料與普通資料分開存儲的設(shè)計概念辜梳,它并沒有完全突破馮諾伊曼架構(gòu)
,而馮諾依曼結(jié)構(gòu)
之所以如此著名是因為泳叠,他是第一次明確提出存儲程序計算機
這個概念設(shè)想作瞄。 -
為什么說
存儲程序計算機
是個劃時代的概念呢? 因為在存儲程序計算機
這個概念之前計算機是「不可以被編程的」析二。我們可以參考“計算器”粉洼,事實上它就是一個由各種門電路組合,組裝出來的一個固定的電路板叶摄,能夠完成特定計算邏輯的計算機属韧。
它是「不可以被編程的」,因為它的程序在剛出生時就被設(shè)定好了蛤吓,如果要改變它的程序宵喂,就必須重新設(shè)計和組裝電路板。
說到這里你應(yīng)該就知道
存儲程序計算機
這個概念会傲,在當時的計算機全都是只能做特定邏輯運算的時代是多么“顯眼包”了锅棕。可以說
馮諾依曼結(jié)構(gòu)
確定了我們現(xiàn)在所使用的計算機硬件的基本架構(gòu),現(xiàn)在我們學(xué)習(xí)計算機組成原理
就是在學(xué)習(xí)和拆解馮諾依曼結(jié)構(gòu)
淌山。 -
回到
馮諾依曼結(jié)構(gòu)
本身裸燎,這個概念是在1945年被馮祖師爺在 《First Draft of a Report on the EDVAC》論文中首次被正式提出, 它描述了一臺計算機應(yīng)該遵循的3大原則:- 采用二進制邏輯
- 程序存儲執(zhí)行
- 計算機由五個部分組成(運算器泼疑、控制器德绿、存儲器、輸入設(shè)備、輸出設(shè)備)
- 運算器(算術(shù)邏輯單元移稳,Arithmetic Logic Unit蕴纳,ALU),用來完成各種算術(shù)和邏輯運算个粱。
- 控制器(控制器單元古毛,Control Unit/CU),用來控制程序的流程都许,通常就是不同條件下的分支和跳轉(zhuǎn)稻薇。
- 存儲器(Memory Unit),用來存儲數(shù)據(jù)(Data)和指令(Instruction)
- 輸入設(shè)備(Input Device)梭稚,例如 鼠標鍵盤
-
輸出設(shè)備(Output Device)颖低,例如 顯示器
-
現(xiàn)在再來看看我們?nèi)粘J褂玫挠嬎銠C的基本硬件組成,你就會發(fā)現(xiàn)與
馮諾依曼結(jié)構(gòu)
大差不差:- CPU
通常包含控制單元
和邏輯運算單元
和各種寄存器
弧烤。-
控制單元
: 負責(zé)根據(jù)指令控制CPU工作忱屑,例如從內(nèi)存中讀取數(shù)據(jù)到寄存器,將寄存器中的兩個數(shù)據(jù)進行加和運算等暇昂。 -
邏輯運算單元
:負責(zé)計算莺戒。 -
寄存器
:通常包括通用寄存器
、程序計數(shù)器
急波、指令寄存器
从铲。-
通用寄存器
:用于存放 程序指令 或 需要運算的數(shù)據(jù)。 -
程序計數(shù)器 PC
:用于存儲下一個要執(zhí)行指令的內(nèi)存地址澄暮。 -
指令寄存器 IR
:用于存放正在執(zhí)行的指令名段。
-
-
- 內(nèi)存
負責(zé)存儲程序和數(shù)據(jù)。是一個線性排列的連續(xù)空間泣懊。 - 總線
將 CPU伸辟、內(nèi)存、以及其他設(shè)備關(guān)聯(lián)起來馍刮,負責(zé)他們之間的通信信夫。-
地址總線
:用于指定 CPU 將要操作的內(nèi)存地址。 -
數(shù)據(jù)總線
:用于讀寫內(nèi)存的數(shù)據(jù)卡啰。 -
控制總線
:用于發(fā)送和接收信號静稻。比如中斷、設(shè)備復(fù)位等信號匈辱,CPU 收到信號后自然進行響應(yīng)振湾,這時也需要控制總線。
-
- 輸入設(shè)備
- 輸出設(shè)備
- CPU
雜談
如果你自己組裝過計算機亡脸,你會發(fā)現(xiàn)你實際購買的明明只有 CPU + 內(nèi)存 + 主板 + 其他外設(shè)
押搪,沒有 總線
這個東西佛南。
-
CPU
和內(nèi)存
的功能不用多說,你肯定知道是干嘛用的嵌言,那么主板
呢?實際上及穗,主板是一個有著各種各樣插槽的配件摧茴,我們的CPU和內(nèi)存條都需要插到主板的上才能相互通信。
可以說埂陆,是主板的芯片組(Chipset) 和 總線(Bus)解決了 CPU 和 內(nèi)存 之間如何通信的問題苛白。
其中芯片組控制了數(shù)據(jù)傳輸?shù)牧鬓D(zhuǎn),也就是數(shù)據(jù)從哪里到哪里的焚虱」喝梗總線則是實際數(shù)據(jù)傳輸?shù)耐ǖ馈?/p>
因此,總線速度(Bus Speed)決定了數(shù)據(jù)能傳輸?shù)枚嗫臁?/p>
-
當你擁有這3大件鹃栽,通電后計算機便已經(jīng)可以跑起來了躏率,當然如果你是個人電腦的話,那么 鍵盤鼠標顯示器 肯定是必不可少的輸入輸出設(shè)備民鼓。
但是這些都不是必須的薇芝,你肯定用過各種云服務(wù)器吧,你只要通過ssh遠程登錄其實也能控制計算機丰嘉。
-
還有一個很特殊的設(shè)備夯到,就是顯卡(Graphics Card)。
現(xiàn)在饮亏,使用圖形界面操作系統(tǒng)的計算機耍贾,無論是 Windows、Mac OS 還是 Linux路幸,顯卡都是必不可少的荐开。
有人可能要說了,我裝機的時候沒有買顯卡劝赔,計算機一樣可以正常跑起來笆慕埂!那是因為着帽,現(xiàn)在的主板都帶了內(nèi)置的顯卡杂伟。
如果你用計算機玩游戲,做圖形渲染或者跑深度學(xué)習(xí)應(yīng)用仍翰,你多半就需要買一張單獨的顯卡赫粥,插在主板上。
顯卡之所以特殊予借,是因為顯卡里有除了 CPU 之外的另一個“處理器”越平,也就是GPU(Graphics Processing Unit频蛔,圖形處理器),GPU 一樣可以做各種“計算”的工作秦叛。
-
鼠標晦溪、鍵盤以及硬盤,這些都是插在主板上的挣跋。
作為外部 I/O 設(shè)備三圆,它們是通過主板上的南橋(SouthBridge)芯片組,來控制和 CPU 之間的通信的避咆。
“南橋”芯片的名字很直觀舟肉,一方面,它在主板上的位置查库,通常在主板的“南面”路媚。另一方面,它的作用就是作為“橋”樊销,來連接鼠標整慎、鍵盤以及硬盤這些外部設(shè)備和 CPU 之間的通信。
有了南橋围苫,自然對應(yīng)著也有“北橋”院领。
是的,以前的主板上通常也有“北橋”芯片够吩,用來作為“橋”比然,連接 CPU 和內(nèi)存、顯卡之間的通信周循。不過强法,隨著時間的變遷,現(xiàn)在的主板上的“北橋”芯片的工作湾笛,已經(jīng)被移到了 CPU 的內(nèi)部饮怯,所以你在主板上,已經(jīng)看不到北橋芯片了嚎研。