馮紐曼架構
上一篇我們談到了Model K Adder,人類的計算機運用機械式的繼電器進入數位時代。當時除了整數的運算之外,計算機還可以計算小數點的數字,可以快速又精準地輔助運算。1940年代,因為二次世界大戰的關係,計算機被運用在戰爭用途,哈佛大學研究人員建造了一座像房子一樣大的繼電器計算機:Harvard Mark I。想想看,整個房間塞滿了3500個繼電器,運算時「喀喀」聲不絕於耳,像戰爭裡的機槍一般地令人驚恐。
許多科學家發現這樣的電腦雖然很酷,但是它的輸入工具卻是紙帶或紙卡,效率太低。所以大約1945年,一位數學家馮紐曼(John von Neumann)提出了儲存程式的計算機概念。簡單上講,就是原本計算機被設計成戰爭機器,它就永遠是戰爭機器,而John von Neumann提出的計算機有記憶功能,可以辨識人類所創造的程式語言。所以透過更改程式,計算機能夠擁有無限的用途,唯一的限制,只是人類的想像力。
由上圖可見,電子計算機的中央處理單元包含了「控制單元」以及「算術邏輯單元」。算術邏輯單元像是高材生,數學與邏輯的運算可以在剎那間完成,所有題目難不倒它。而控制單元像是總務股長,所有雜務,像是找東西、搬東西、整理筆記、擦黑板、掃地、刷馬桶等雜事。
馮紐曼架構實例
以上是馮紐曼架構的正規圖。如果您不習慣冰冷的圖示,下方為各位畫一張簡單卻不怎麼專業的馮紐曼架構圖,請不要誤會,它不是復活節島石像,如果這個架構被馮紐曼看到,應該會吐血三升倒地不起吧!
中間黃色的區域為核心區域,它能夠計算,判斷,還有控制程式的流程
用這張可愛的圖,可以舉一個例子,我說:「去拿水」,聽到這句話的人,除了能理解這句話的意思,還要能夠記得「拿」這個動作,以及「水」這個物品。如果缺少這種暫時記憶,可能走到一半就忘了,反而拿起醬油倒進炒菜鍋裡去,像這樣是無法完成拿水這任務的。暫時記憶,就屬於控制單元的工作。
如果我一連串說三個動作:「拿水」「燒開水」「泡茶」
記性不好的人就需要寫在紙上,寫在紙上的動作,也是控制單元的任務,接著就把三件事情抄寫在記憶單元裡面。
接著就一件一件處理,跟之前一樣,第一件事「拿」和「水」,需動用暫時記憶去做。做好後,在紙上把第一項動作打個勾。
馮紐曼架構可以預先輸入好幾件事情,然後一件一件處理。這就是電腦程式。
電腦仗著它有記憶單元、算術能力、邏輯判斷及控制能力,能夠穩定地完成工作,不會分心旁騖,泰山崩於前而色不變,麋鹿興於左而目不瞬。絕對不會不想做,也不會燒開水到一半去接電話,然後水壼被燒出一個洞。
我們跟電腦講話,需透過輸入單元,現在的手機用滑的,以前的電腦用鍵盤輸入,XBox可以用動作輸入來控制遊戲,都屬於輸入單元。而燒成開水,泡成茶,就是輸出單元。目前最常見的輸出是電腦螢幕,或手機的螢幕。當然科技不斷創新,未來勢必有更多新的輸出設備問世。
馮紐曼架構主宰了計算機架構,1950年代,人們不斷實踐馮紐曼架構的過程中,真空管的導入讓運算速度加快,接著十年的光景,電晶體又取代了真空管,電腦的體積大為縮小,而且速度更快。程式語言也從原本難以理解的機械代碼轉變為人類容易理解的高階語言。
嚴格講起來,電腦是一個只懂得0與1的怪胎,每天守著自己的暫存記憶在喃喃自語,還有一堆令人眼花撩亂的數字號碼代表記憶空間,令人望之卻步。多虧許多電腦界的前輩犧牲生活樂趣及幸福時光,創造了作業系統與編譯器,讓我們能夠便利地使用手機設備,甚至可以自行編譯程式,讓手機及電腦會聽話,做我們想要做的事情。
就好像哆啦A夢的翻譯蒟蒻,一層一層疊起來,使得電腦懂得我們在說什麼!下一篇,將為各位介紹電腦的翻譯蒟蒻:作業系統與編譯程式。
相關系列文章