計算機基礎方面的知識,對於一些非科班出身的同窗來說,一直是他們心中的痛,而對於科班出身的同窗,不少同窗在工做以後,也意識到自身所學知識的不足與欠缺,想回頭補補基礎知識。關於計算機基礎的課程不少,內容繁雜,但不管是相關書籍仍是大學課程,都有點脫離工做。特別地,計算機基礎知識體系龐雜,想要從零學習或者複習都耗時耗力。程序員
有鑑於此,本系列文章將帶你更快的補足編程必備基礎知識,涵蓋計算機領域三大基礎知識:計算機組成原理、操做系統、計算機網絡,文章選取了做爲程序員最應該掌握的那部分知識,取其精華,棄之於程序員不重要的那部份內容。編程
目的是:服務器
本篇是計算機組成原理之計算機的體系與結構。網絡
歡迎關注、轉發、收藏、評論性能
馮諾依曼體系,用一句話來歸納就是:將程序指令和數據一塊兒存儲的計算機設計概念結構。學習
在前面學習計算機的發展歷史的時候,咱們知道,早期的計算機只能運行固定用途的程序,怎麼理解?舉個例子:有個計算機它只能運行數學運算的程序,那麼它就不能運行文字處理的軟件,也不能拿來玩遊戲,若是要讓它可以進行別的功能,就須要改變計算機的程序,而在當時,所謂的重寫程序並非指如今的從新編譯一個程序那麼簡單,而是必須更改電路或者說更改結構,甚至從新設計這個機器。操作系統
這樣就很坑爹了啊。若是說計算機只能用來打遊戲,不能用來寫代碼,或者說只能用來寫代碼,不能用來玩遊戲,那麼咱們就不能先玩一會遊戲再寫一會代碼了,這樣子是很是不合理的。因而馮諾依曼就想着將程序存儲起來,而後在設計底層硬件的時候,再也不是設計專有的電路,而是設計一個通用電路,當咱們須要運行某種程序的時候,咱們先把這段程序翻譯成電路可以理解的語言,而後讓通用電路去執行相關的邏輯。計算機網絡
這就是馮諾依曼體系的核心概念——存儲程序指令,設計通用電路。翻譯
瞭解了馮諾依曼體系是怎樣誕生的,若是可以理解馮諾依曼體系給計算機領域帶來的巨大改變,咱們就能明白馮諾依曼體系爲何這麼重要了。由馮諾依曼體系所延伸的存儲型計算機的概念,改變了以前糟糕的一切,皆由創造一種通用的指令集結構,並將所謂的運算轉化爲一串程序指令的運行,使整個計算機更有彈性。藉助將指令當成一種特殊類型的計算數據,一臺存儲型的計算機能夠輕易地改變其程序,而且在程序的控制下,改變運行的內容,改變的時候不須要從新設計電路,不須要從新改變計算機的結構,這就是馮諾依曼體系所帶來的巨大貢獻。設計
由馮諾依曼體系指導完成的計算機包含五大組件:
咱們現代全部使用的計算機,從本質上講,都是馮諾依曼機,包括筆記本電腦、臺式電腦、普通服務器、迷你計算機等等。由馮諾依曼體系所指導完成的計算機,必須有如下的幾點功能:
馮諾依曼體系結構示意圖:
咱們能夠看到,存儲器和CPU是分開的,這就致使一個問題:CPU和存儲器速率之間的問題沒法調和。由於CPU是高速運算的,處理速率極快,而存儲器沒有CPU快,到CPU的數據傳輸速度慢,這會致使CPU常常空轉等待數據傳輸,這樣子是很是浪費資源的。
既然咱們都知道了馮諾依曼體系存在的性能瓶頸,那麼,如何解決呢?
現代計算機在馮諾依曼體系結構基礎上進行了修改,解決了CPU和存儲設備之間的性能差別問題。下面是現代計算機的結構示意圖:
能夠看到,跟前面不同的是,運算器、控制器和存儲器組成了現代計算機的CPU。
存儲器,從廣義上,能夠理解爲存儲數據的介質,包括磁帶和硬盤。可是,這裏的存儲器主要是指圍繞CPU的高速設備,包括寄存器和內存。現代計算機的結構,能夠理解爲以存儲器爲核心的結構。
關於存儲器,還有不少須要理解的知識,咱們會在後續文章裏詳細介紹。
這一節,咱們須要瞭解馮諾依曼體系的含義和它是如何產生的,還須要瞭解現代計算機的結構和特色以及它解決了什麼問題。