重學(xué)計算機組成原理(一)- 馮·諾依曼體系結(jié)構(gòu)

1 計算機的基本硬件組成

早期,DIY一臺計算機,要先有三大件

  • CPU
  • 內(nèi)存
  • 主板

1.1 CPU

計算機最重要的核心配件优妙,中央處理器(Central Processing Unit)涕俗。

計算機的所有“計算”都是由CPU來進(jìn)行的孙技。

  • CPU是一個超級精細(xì)的印刷電路版


1.2 內(nèi)存(Memory)

你撰寫的程序端姚、打開的瀏覽器、運行的游戲颠蕴,都要加載到內(nèi)存里才能運行。

程序讀取的數(shù)據(jù)助析、計算得到的結(jié)果犀被,也都要放在內(nèi)存里。內(nèi)存越大外冀,能加載的東西自然也就越多寡键。

內(nèi)存通常直接可以插在主板上,存放在內(nèi)存里的程序和數(shù)據(jù)雪隧,需要被CPU讀取西轩,CPU計算完之后,還要把數(shù)據(jù)寫回到內(nèi)存脑沿。然而CPU不能直接插到內(nèi)存上藕畔,反之亦然。于是捅伤,就帶來了最后一個大件——主板(Motherboard)劫流。

  • 內(nèi)存通常直接可以插在主板上


1.3 主板

主板是一個有著各種各樣,有時候多達(dá)數(shù)十乃至上百個插槽的配件丛忆。

我們的CPU要插在主板上祠汇,內(nèi)存也要插在主板上。

主板的芯片組(Chipset)和總線(Bus)解決了CPU和內(nèi)存之間如何通信的問題熄诡。

  • 芯片組控制了數(shù)據(jù)傳輸?shù)牧鬓D(zhuǎn)可很,也就是數(shù)據(jù)從哪里到哪里的問題
  • 總線則是實際數(shù)據(jù)傳輸?shù)母咚俟贰凰浮?偩€速度(Bus Speed)決定了數(shù)據(jù)能傳輸?shù)枚嗫臁?/li>
  • 計算機主板上通常有著各種各樣的插槽

有了三大件我抠,只要配上電源供電,計算機差不多就可以跑起來了袜茧。

但是現(xiàn)在還缺少各類輸入(Input)/輸出(Output)設(shè)備菜拓,也就是我們常說的I/O設(shè)備

如果你用的是自己的個人電腦笛厦,那顯示器肯定必不可少纳鼎,只有有了顯示器我們才能看到計算機輸出的各種圖像、文字,這也就是所謂的輸出設(shè)備贱鄙。

同樣的劝贸,鼠標(biāo)和鍵盤也都是必不可少的配件。這樣我才能輸入文本逗宁,寫下這篇文章映九。它們也就是所謂的輸入設(shè)備

最后瞎颗,你自己配的個人計算機件甥,還要配上一個硬盤。這樣各種數(shù)據(jù)才能持久地保存下來哼拔。

絕大部分人都會給自己的機器裝上一個機箱嚼蚀,配上風(fēng)扇,解決灰塵和散熱的問題管挟。

不過機箱和風(fēng)扇轿曙,算不上是計算機的必備硬件,我們拿個紙板或者外面放個電風(fēng)扇僻孝,也一樣能用导帝。

顯示器、鼠標(biāo)穿铆、鍵盤和硬盤這些東西并不是一臺計算機必須的部分您单。

其實只需要有I/O設(shè)備,能讓我們從計算機里輸入和輸出信息就可以了荞雏。

很多網(wǎng)吧的計算機就沒有硬盤虐秦,而是直接通過局域網(wǎng),讀寫遠(yuǎn)程網(wǎng)絡(luò)硬盤里面的數(shù)據(jù)凤优。

各類云服務(wù)器悦陋,只要讓計算機能通過網(wǎng)絡(luò),SSH遠(yuǎn)程登陸訪問就好了筑辨,因此也沒必要配顯示器俺驶、鼠標(biāo)、鍵盤這些東西棍辕。

這樣不僅能夠節(jié)約成本暮现,還更方便維護(hù)。

還有一個很特殊的設(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一樣可以做各種“計算”的工作仁卷。

鼠標(biāo)穴翩、鍵盤以及硬盤都是插在主板上的。作為外部I/O設(shè)備锦积,它們是通過主板上的南橋(SouthBridge)芯片組芒帕,來控制和CPU之間的通信的。

“南橋”芯片的名字很直觀

  • 它在主板上的位置丰介,通常在主板的“南面”
  • 它的作用就是作為“橋”背蟆,來連接鼠標(biāo)、鍵盤以及硬盤這些外部設(shè)備和CPU之間的通信哮幢。

有了南橋带膀,自然對應(yīng)著也有“北橋”。

是的橙垢,以前的主板上通常也有“北橋”芯片本砰,用來作為“橋”,連接CPU和內(nèi)存钢悲、顯卡之間的通信点额。

不過,隨著時間的變遷莺琳,現(xiàn)在的主板上的“北橋”芯片的工作还棱,已經(jīng)被移到了CPU的內(nèi)部,所以你在主板上惭等,已經(jīng)看不到北橋芯片了珍手。

2 馮·諾依曼體系結(jié)構(gòu)

剛才我們講了一臺計算機的硬件組成,這說的是我們平時用的個人電腦或者服務(wù)器。那我們平時最常用的智能手機的組成琳要,也是這樣嗎寡具?

我們手機里只有SD卡(Secure Digital Memory Card)類似硬盤功能的存儲卡插槽,并沒有內(nèi)存插槽稚补、CPU插槽這些東西童叠。

沒錯,因為手機尺寸的原因课幕,手機制造商們選擇把

CPU厦坛、內(nèi)存、網(wǎng)絡(luò)通信乍惊,乃至攝像頭芯片杜秸,都封裝到一個芯片,然后再嵌入到手機主板上润绎。

這種方式叫SoC撬碟,也就是System on a Chip(系統(tǒng)芯片)。

看起來莉撇,個人電腦和智能手機的硬件組成方式不太一樣小作。

可是,我們寫智能手機上的App稼钩,和寫個人電腦的客戶端應(yīng)用似乎沒有什么差別顾稀,都是通過“高級語言”這樣的編程語言撰寫、編譯之后坝撑,一樣是把代碼和數(shù)據(jù)加載到內(nèi)存里來執(zhí)行静秆。

無論是個人電腦/服務(wù)器/智能手機,還是Raspberry Pi這樣的微型卡片機巡李,都遵循著同一個“計算機”的抽象概念抚笔。

這是怎么樣一個“計算機”呢?這其實就是侨拦,計算機鼻祖馮·諾依曼提出的馮·諾依曼體系結(jié)構(gòu)(Von Neumann architecture)殊橙,也叫存儲程序計算機

什么是存儲程序計算機呢狱从?這里面其實暗含了兩個概念

  • “可編程”計算機
  • “存儲”計算機

什么是“不可編程”膨蛮??季研?

計算機是由各種門電路組合而成的敞葛,然后通過組裝出一個固定的電路版,完成一個特定的計算程序与涡。

一旦需要修改功能惹谐,就要重新組裝電路持偏。這樣的話,計算機就是“不可編程”的氨肌,因為程序在計算機硬件層面是“寫死”的鸿秆。

最常見的就是老式計算器,電路板設(shè)好了加減乘除怎囚,做不了任何計算邏輯固定之外的事情卿叽。

  • 計算器的本質(zhì)是一個不可編程的計算機


我們再來看“存儲”計算機。

程序本身是存儲在計算機的內(nèi)存里桩了,可以通過加載不同的程序來解決不同的問題。

有“存儲程序計算機”埠戳,自然也有不能存儲程序的計算機井誉。

典型的就是早年的“Plugboard”這樣的插線板式的計算機。整個計算機就是一個巨大的插線板整胃,通過在板子上不同的插頭或者接口的位置插入線路颗圣,來實現(xiàn)不同的功能。這樣的計算機自然是“可編程”的屁使,但是編寫好的程序不能存儲下來供下一次加載使用在岂,不得不每次要用到和當(dāng)前不同的“程序”的時候,重新插板子蛮寂,重新“編程”蔽午。

  • 著名的Engima Machine就用到了Plugboard來進(jìn)行“編程”



    可以看到,無論是“不可編程”還是“不可存儲”酬蹋,都會讓使用計算機的效率大大下降及老。
    而這個對于效率的追求,也就是“存儲程序計算機”的由來范抓。

馮骄恶,基于當(dāng)時在秘密開發(fā)的EDVAC寫了一篇報告First Draft of a Report on the EDVAC,描述了他心目中的一臺計算機應(yīng)該長什么樣匕垫。這篇報告在歷史上有個很特殊的簡稱僧鲁,叫First Draft。這樣象泵,現(xiàn)代計算機的發(fā)展就從祖師爺寫的一份草案開始了寞秃。

First Draft里面說了一臺計算機應(yīng)該有哪些部分組成

首先是一個包含

  • 算術(shù)邏輯單元(Arithmetic Logic Unit,ALU)
  • 處理器寄存器(Processor Register)

處理器單元(Processing Unit)偶惠,用來完成各種算術(shù)和邏輯運算蜕该。

因為它能夠完成各種數(shù)據(jù)的處理或者計算工作,因此也有人把這個叫作數(shù)據(jù)通路(Datapath)或者運算器洲鸠。

然后是一個包含

  • 指令寄存器(Instruction Reigster)
  • 程序計數(shù)器(Program Counter)

控制器單元(Control Unit/CU)堂淡,用來控制程序的流程馋缅,通常就是不同條件下的分支和跳轉(zhuǎn)。

在現(xiàn)在的計算機里绢淀,上面的算術(shù)邏輯單元和這里的控制器單元萤悴,共同組成了我們說的CPU。

接著是用來存儲數(shù)據(jù)(Data)和指令(Instruction)的內(nèi)存皆的。以及更大容量的外部存儲覆履,在過去,可能是磁帶费薄、磁鼓這樣的設(shè)備硝全,現(xiàn)在通常就是硬盤。

最后就是各種輸入和輸出設(shè)備楞抡,以及對應(yīng)的輸入和輸出機制伟众。

我們現(xiàn)在無論是使用什么樣的計算機,其實都是和輸入輸出設(shè)備在打交道召廷。

  • 個人電腦的鼠標(biāo)鍵盤是輸入設(shè)備凳厢,顯示器是輸出設(shè)備
  • 我們用的智能手機,觸摸屏既是輸入設(shè)備竞慢,又是輸出設(shè)備
  • 跑在各種云上的服務(wù)器先紫,則是通過網(wǎng)絡(luò)來進(jìn)行輸入和輸出。這個時候筹煮,網(wǎng)卡既是輸入設(shè)備又是輸出設(shè)備

任何一臺計算機的任何一個部件都可以歸到運算器遮精、控制器、存儲器败潦、輸入設(shè)備和輸出設(shè)備中仑鸥,而所有的現(xiàn)代計算機也都是基于這個基礎(chǔ)架構(gòu)來設(shè)計開發(fā)的

而所有的計算機程序,也都可以抽象為從輸入設(shè)備讀取輸入信息变屁,通過運算器控制器來執(zhí)行存儲在存儲器里的程序眼俊,最終把結(jié)果輸出到輸出設(shè)備中。而我們所有撰寫的無論高級還是低級語言的程序粟关,也都是基于這樣一個抽象框架來進(jìn)行運作的疮胖。

  • 馮·諾依曼體系結(jié)構(gòu)示意圖


3 總結(jié)

馮·諾依曼體系結(jié)構(gòu)確立了我們現(xiàn)在每天使用的計算機硬件的基礎(chǔ)架構(gòu)。

因此闷板,學(xué)習(xí)計算機組成原理澎灸,其實就是學(xué)習(xí)和拆解馮·諾依曼體系結(jié)構(gòu)。

具體來說遮晚,其實就是

  • 學(xué)習(xí)控制器性昭、運算器的工作原理,也就是CPU是怎么工作的县遣,以及為何這樣設(shè)計
  • 學(xué)習(xí)內(nèi)存的工作原理糜颠,從最基本的電路汹族,到上層抽象給到CPU乃至應(yīng)用程序的接口是怎樣的
  • 學(xué)習(xí)CPU是怎么和輸入設(shè)備、輸出設(shè)備打交道的其兴。=

學(xué)習(xí)組成原理顶瞒,就是在理解從控制器、運算器元旬、存儲器榴徐、輸入設(shè)備以及輸出設(shè)備,從電路這樣的硬件匀归,到最終開放給軟件的接口坑资,是怎么運作的,為什么要設(shè)計成這樣穆端,以及在軟件開發(fā)層面怎么盡可能用好它袱贮。

4 推薦閱讀

  • First Draft of a Report on the EDVAC
    對于工程師來說,直接讀取英文論文的原文徙赢,既可以搞清楚字柠、弄明白對應(yīng)的設(shè)計及其背后的思路來源探越,還可以幫你破除對于論文或者核心技術(shù)的恐懼心理狡赐。

5 思考

計算機行業(yè)的兩大祖師爺之一,除了馮·諾依曼機之外钦幔,還有一位就是著名的圖靈(Alan Mathison Turing)枕屉。對應(yīng)的,我們現(xiàn)在的計算機也叫圖靈機(Turing Machine)鲤氢。那么圖靈機和馮·諾依曼機是兩種不同的計算機么搀擂?圖靈機是一種什么樣的計算機抽象呢?

歡迎留言分享你的思考和疑惑卷玉,也可以把本文分享給你的朋友哨颂,一起學(xué)習(xí)和進(jìn)步!

參考

深入淺出計算機組成原理

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末相种,一起剝皮案震驚了整個濱河市威恼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌寝并,老刑警劉巖箫措,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異衬潦,居然都是意外死亡斤蔓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門镀岛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弦牡,“玉大人友驮,你說我怎么就攤上這事±” “怎么了喊儡?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長稻据。 經(jīng)常有香客問我艾猜,道長,這世上最難降的妖魔是什么捻悯? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任匆赃,我火速辦了婚禮,結(jié)果婚禮上今缚,老公的妹妹穿的比我還像新娘算柳。我一直安慰自己,他們只是感情好姓言,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布瞬项。 她就那樣靜靜地躺著,像睡著了一般何荚。 火紅的嫁衣襯著肌膚如雪囱淋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天餐塘,我揣著相機與錄音妥衣,去河邊找鬼。 笑死戒傻,一個胖子當(dāng)著我的面吹牛税手,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播需纳,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼芦倒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了不翩?” 一聲冷哼從身側(cè)響起兵扬,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎慌盯,沒想到半個月后周霉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡亚皂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年俱箱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灭必。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡狞谱,死狀恐怖乃摹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情跟衅,我是刑警寧澤孵睬,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站伶跷,受9級特大地震影響掰读,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜叭莫,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一蹈集、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧雇初,春花似錦拢肆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至刊橘,卻和暖如春鄙才,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背伤为。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工咒循, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留据途,地道東北人绞愚。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像颖医,于是被迫代替她去往敵國和親位衩。 傳聞我的和親對象是個殘疾皇子熔萧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容