計算機基礎方面的知識,對於一些非科班出身的同學來講,一直是他們心中的痛,而對於科班出身的同學,很多同學在工作之后,也意識到自身所學知識的不足與欠缺,想回頭補補基礎知識。關於計算機基礎的課程很多,內容繁雜,但無論是相關書籍還是大學課程,都有點脫離工作。特別地,計算機基礎知識體系龐雜,想要從零學習或者復習都耗時耗力。
有鑒於此,本系列文章將帶你更快的補足編程必備基礎知識,涵蓋計算機領域三大基礎知識:計算機組成原理、操作系統、計算機網絡,這些都是大學計算機課程里面最重要的內容。文章對這些內容做了提煉和總結,摒棄了作為程序員不需要掌握的知識。
目的是:
- 幫助大家形成計算機知識的結構體系
- 幫助大家理解計算機底層原理
- 幫助大家在工作實踐中借鑒其中的優秀設計
本篇是計算機組成原理之計算機的存儲器
歡迎關注、轉發、收藏、評論
1.什么是存儲器
存儲器,顧名思義,是用來儲存物質的。在計算機中,這些儲存的物質就是數據和指令,有了存儲器,計算機就有了記憶功能。
存儲器由一些編號的單元所組成,單元的編號叫做地址。打個比方,存儲器就像是一個大型倉庫,倉庫里面有很多個房間存放着貨物,每個房間都有自己的房號;而存儲器單元好比房間,房間里的貨物好比數據和指令,而單元的編號(地址)就好比房間號,我們的計算機就是根據這個地址來存放或取出數據和指令的。
計算機中的全部信息,包括輸入的原始數據、計算機程序、中間運行結果和最終運行結果都保存在存儲器中。
2.存儲器的分類
按存儲介質來划分,存儲器可分為半導體存儲器和磁存儲器。其中,半導體存儲器存儲的元器件是由半導體組成的,常見的如:內存、U盤、固態硬盤等;磁存儲器,是由表面塗有磁性材料的存儲介質組成的,常見的有:磁帶、磁盤。
按存取方式來分類,可以將存儲器分為隨機存儲器(RAM)、串行存儲器、只讀存儲器(ROM),
3.存儲器的層次結構
在選取計算機的存儲器時,通常需要考慮的因素是存儲器的讀寫速度、存儲容量、價格,我們希望讀寫速度越快越好、存儲容量越大越好、價格則越低越好。有一個專門的單位,用來量化存儲器的性價比——位價。位價綜合地把容量和價格都考慮進去了,它的含義是每比特位的價格,使用位價可以客觀地描述存儲器的性價比。
按照位價和讀寫速度的關系,可以把存儲器划分為幾個層次:緩存、主存、輔存。
緩存指的是CPU里的寄存器以及高速緩存,速度快,位價高。
主存指的主要是計算機里的內存,速度適中,價格適中。
輔存指的是外部儲存設備,如磁盤、U盤、移動硬盤等,速度慢,價格低。
之前文章里已經提到過,CPU是高速運算的,處理速率極快,而存儲器沒有CPU快,傳輸數據和程序到CPU里時速度慢,這會導致CPU經常空轉等待數據傳輸,兩者在速度上是不匹配的。理論上,不考慮價格的話,我們肯定希望緩存越大越好,但是由於位價的存在,緩存不可能做的越大越好,因此才有了這個層次結構。
存儲器的層次結構也可以使用如下圖來表達:
圖示里,CPU與高速緩存是直接通信的,也可以跟主存進行通信。而高速緩存和主存之間也可以相互通信,稱之為緩存-主存層次,除了緩存-主存層次,還有主存和輔存之間的通信,這個通信,CPU是不參與的,稱之為主存-輔存層次。
緩存-主存層次,是在CPU與主存之間增加一層速度快容量小的Cache,目的是解決主存與CPU速度不匹配的問題。有了高速緩存的存在,CPU就可以通過一定的策略,盡可能地去訪問這個高速緩存而不是主存,從而有效提高CPU的利用效率以及計算機的運行速度。CPU選取數據時,首先會從緩存中去取,緩存中沒有的話,再會去取主存中的。
主存-輔存層次,是在主存之外增加輔助存儲器(磁盤、SD卡、U盤等),目的是解決主存容量不足的問題。假設我們運行一個超大型游戲,而內存通常只有8G,此時,就可以把游戲當前使用的數據加載到內存中,把不使用的數據放在輔存中。