編程必備基礎知識|電腦組成原理篇(03):電腦的體系與結構

  • 2019 年 10 月 3 日
  • 筆記

電腦基礎方面的知識,對於一些非科班出身的同學來講,一直是他們心中的痛,而對於科班出身的同學,很多同學在工作之後,也意識到自身所學知識的不足與欠缺,想回頭補補基礎知識。關於電腦基礎的課程很多,內容繁雜,但無論是相關書籍還是大學課程,都有點脫離工作。特別地,電腦基礎知識體系龐雜,想要從零學習或者複習都耗時耗力。

有鑒於此,本系列文章將帶你更快的補足編程必備基礎知識,涵蓋電腦領域三大基礎知識:電腦組成原理、作業系統、電腦網路,文章選取了作為程式設計師最應該掌握的那部分知識,取其精華,棄之於程式設計師不重要的那部分內容。

目的是:

  • 幫助大家形成電腦知識的結構體系
  • 幫助大家理解電腦底層原理
  • 幫助大家在工作實踐中借鑒其中的優秀設計

本篇是電腦組成原理之電腦的體系與結構。

歡迎關注、轉發、收藏、評論

馮諾依曼體系

馮諾依曼體系,用一句話來概括就是:將程式指令和數據一起存儲的電腦設計概念結構。

在前面學習電腦的發展歷史的時候,我們知道,早期的電腦只能運行固定用途的程式,怎麼理解?舉個例子:有個電腦它只能運行數學運算的程式,那麼它就不能運行文字處理的軟體,也不能拿來玩遊戲,如果要讓它能夠進行別的功能,就需要改變電腦的程式,而在當時,所謂的重寫程式並不是指現在的重新編譯一個程式那麼簡單,而是必須更改電路或者說更改結構,甚至重新設計這個機器。

這樣就很坑爹了啊。如果說電腦只能用來打遊戲,不能用來寫程式碼,或者說只能用來寫程式碼,不能用來玩遊戲,那麼我們就不能先玩一會遊戲再寫一會程式碼了,這樣子是非常不合理的。於是馮諾依曼就想著將程式存儲起來,然後在設計底層硬體的時候,不再是設計專有的電路,而是設計一個通用電路,當我們需要運行某種程式的時候,我們先把這段程式翻譯成電路能夠理解的語言,然後讓通用電路去執行相關的邏輯。

這就是馮諾依曼體系的核心概念——存儲程式指令,設計通用電路。

了解了馮諾依曼體系是怎樣誕生的,如果能夠理解馮諾依曼體系給電腦領域帶來的巨大改變,我們就能明白馮諾依曼體系為什麼這麼重要了。由馮諾依曼體系所延伸的存儲型電腦的概念,改變了之前糟糕的一切,皆由創造一種通用的指令集結構,並將所謂的運算轉化為一串程式指令的運行,使整個電腦更有彈性。藉助將指令當成一種特殊類型的計算數據,一台存儲型的電腦可以輕易地改變其程式,並且在程式的控制下,改變運行的內容,改變的時候不需要重新設計電路,不需要重新改變電腦的結構,這就是馮諾依曼體系所帶來的巨大貢獻。

由馮諾依曼體系指導完成的電腦包含五大組件:

  1. 存儲器:用來存放程式和數據
  2. 控制器:用來控制程式的流轉和數據的輸入運行,以及處理運算結果
  3. 運算器:主要運行算數運算和邏輯運算,並將中間結果暫存到運算器中
  4. 輸入設備:用來將人們熟悉的資訊形式轉換為機器能夠識別的資訊形式,常見的有鍵盤,滑鼠等
  5. 輸出設備:可以將機器運算結果轉換為人們熟悉的資訊形式,如印表機輸出,顯示器輸出等

我們現代所有使用的電腦,從本質上講,都是馮諾依曼機,包括筆記型電腦電腦、台式電腦、普通伺服器、迷你電腦等等。由馮諾依曼體系所指導完成的電腦,必須有以下的幾點功能:

  1. 能夠把需要的程式和數據送至電腦中(由輸入設備完成)
  2. 能夠長期記憶程式、數據、中間結果及最終運算結果的能力(由存儲器完成)
  3. 能夠具備算術、邏輯運算和數據傳送等數據加工處理的能力(由運算器、控制器完成)
  4. 能夠按照要求將處理結果輸出給用戶(由輸出設備完成)

馮諾依曼體系結構示意圖:

我們可以看到,存儲器和CPU是分開的,這就導致一個問題:CPU和存儲器速率之間的問題無法調和。因為CPU是高速運算的,處理速率極快,而存儲器沒有CPU快,到CPU的數據傳輸速度慢,這會導致CPU經常空轉等待數據傳輸,這樣子是非常浪費資源的。

既然我們都知道了馮諾依曼體系存在的性能瓶頸,那麼,如何解決呢?

現代電腦的結構

現代電腦在馮諾依曼體系結構基礎上進行了修改,解決了CPU和存儲設備之間的性能差異問題。下面是現代電腦的結構示意圖:

可以看到,跟前面不一樣的是,運算器、控制器和存儲器組成了現代電腦的CPU。

存儲器,從廣義上,可以理解為存儲數據的介質,包括磁帶和硬碟。但是,這裡的存儲器主要是指圍繞CPU的高速設備,包括暫存器和記憶體。現代電腦的結構,可以理解為以存儲器為核心的結構。

關於存儲器,還有很多需要理解的知識,我們會在後續文章里詳細介紹。

總結

這一節,我們需要了解馮諾依曼體系的含義和它是如何產生的,還需要了解現代電腦的結構和特點以及它解決了什麼問題。