計算機基礎方面的知識,對于一些非科班出身的同學來講,一直是他們心中的痛,而對于科班出身的同學,很多同學在工作之後,也意識到自身所學知識的不足與欠缺,想回頭補補基礎知識。關于計算機基礎的課程很多,内容繁雜,但無論是相關書籍還是大學課程,都有點脫離工作。特别地,計算機基礎知識體系龐雜,想要從零學習或者複習都耗時耗力。
有鑒于此,本系列文章将帶你更快的補足編程必備基礎知識,涵蓋計算機領域三大基礎知識:計算機組成原理、操作系統、計算機網絡,文章選取了作為程序員最應該掌握的那部分知識,取其精華,棄之于程序員不重要的那部分内容。
目的是:
- 幫助大家形成計算機知識的結構體系
- 幫助大家理解計算機底層原理
- 幫助大家在工作實踐中借鑒其中的優秀設計
本篇是計算機組成原理之計算機的體系與結構。
曆史文章:
更适合程序員的計算機組成原理基礎知識:計算機的發展曆史
編程必備基礎知識之計算機組成原理篇:計算機的分類
歡迎關注、轉發、收藏、評論
馮諾依曼體系馮諾依曼體系,用一句話來概括就是:将程序指令和數據一起存儲的計算機設計概念結構。
了解了馮諾依曼體系是怎樣誕生的,如果能夠理解馮諾依曼體系給計算機領域帶來的巨大改變,我們就能明白馮諾依曼體系為什麼這麼重要了。由馮諾依曼體系所延伸的存儲型計算機的概念,改變了之前糟糕的一切,皆由創造一種通用的指令集結構,并将所謂的運算轉化為一串程序指令的運行,使整個計算機更有彈性。借助将指令當成一種特殊類型的計算數據,一台存儲型的計算機可以輕易地改變其程序,并且在程序的控制下,改變運行的内容,改變的時候不需要重新設計電路,不需要重新改變計算機的結構,這就是馮諾依曼體系所帶來的巨大貢獻。
由馮諾依曼體系指導完成的計算機包含五大組件:
- 存儲器:用來存放程序和數據
- 控制器:用來控制程序的流轉和數據的輸入運行,以及處理運算結果
- 運算器:主要運行算數運算和邏輯運算,并将中間結果暫存到運算器中
- 輸入設備:用來将人們熟悉的信息形式轉換為機器能夠識别的信息形式,常見的有鍵盤,鼠标等
- 輸出設備:可以将機器運算結果轉換為人們熟悉的信息形式,如打印機輸出,顯示器輸出等
我們現代所有使用的計算機,從本質上講,都是馮諾依曼機,包括筆記本電腦、台式電腦、普通服務器、迷你計算機等等。由馮諾依曼體系所指導完成的計算機,必須有以下的幾點功能:
- 能夠把需要的程序和數據送至計算機中(由輸入設備完成)
- 能夠長期記憶程序、數據、中間結果及最終運算結果的能力(由存儲器完成)
- 能夠具備算術、邏輯運算和數據傳送等數據加工處理的能力(由運算器、控制器完成)
- 能夠按照要求将處理結果輸出給用戶(由輸出設備完成)
馮諾依曼體系結構示意圖:
我們可以看到,存儲器和CPU是分開的,這就導緻一個問題:CPU和存儲器速率之間的問題無法調和。因為CPU是高速運算的,處理速率極快,而存儲器沒有CPU快,到CPU的數據傳輸速度慢,這會導緻CPU經常空轉等待數據傳輸,這樣子是非常浪費資源的。
既然我們都知道了馮諾依曼體系存在的性能瓶頸,那麼,如何解決呢?
現代計算機的結構現代計算機在馮諾依曼體系結構基礎上進行了修改,解決了CPU和存儲設備之間的性能差異問題。下面是現代計算機的結構示意圖:
可以看到,跟前面不一樣的是,運算器、控制器和存儲器組成了現代計算機的CPU。
存儲器,從廣義上,可以理解為存儲數據的介質,包括磁帶和硬盤。但是,這裡的存儲器主要是指圍繞CPU的高速設備,包括寄存器和内存。現代計算機的結構,可以理解為以存儲器為核心的結構。
關于存儲器,還有很多需要理解的知識,我們會在後續文章裡詳細介紹。
總結這一節,我們需要了解馮諾依曼體系的含義和它是如何産生的,還需要了解現代計算機的結構和特點以及它解決了什麼問題。
,