存儲器這個小話題(1)

什麼是存儲器


存儲器, 想必大家都多少接觸過, 電腦的硬盤、 內存條、 手機的 ROM、 SD 卡、 microSD卡、 光盤還有古董級別的軟盤等等, 都是我們能夠說得出來的存儲器。 那麼存儲器是什麼, 又是怎麼樣分類的呢?


存儲器是計算機系統(包括嵌入式系統)中的記憶設備, 用來存放程序(二進制可執行文件)和數據。 計算機中的全部信息, 包括輸入的原始數據、 計算機程序、 中間運行結果和最終運行結果都保存在存儲器中。 存儲器實際上有兩個單詞: 一個是Memory, 另一個是Storage。 開始時 Memory 指的通常就是 CPU 可以直接通過總線訪問的隨機存取存儲器(RAM), 而 Storage 指得就是 CPU 無法直接通過總線訪問的非易失性存儲器(ROM、 Flash、 硬盤)。 Wiki 百科上還有這麼一段話, 可以參考一下:

「Historically, memory has been called core memory, main memory, real storage or internal memory. Meanwhile, non-volatile storage devices have been referred to as secondary storage, external memory or auxiliary / peripheral storage. 」

譯:「從傳統上來說, memory 被稱爲核心 memory,主 memory, 實 storage 或者內部 memory。 對比之下, 非易失性 storage 設備則指代二級 storage、 外部 memory 或者輔助 / 次要 storage。


從 Wiki 的這段話中可以看到, 傳統意義上的 Memory 就是指 RAM, 等同於 Internal Memory 和 Main Memory, 所以有些地方就把 Memory 翻譯成內存。不過隨着存儲器的發展,這種說法變得並不準確。 比如我們在哈佛結構計算機中的一些 ROM 雖然是非易失性存儲器,但與 CPU 是通過總線直接相連的,可以作爲 Internal Memory。 這說明一些 storage 也同樣可以作爲內部存儲器使用, 尤其是近些年來 Flash Memory 的發展。 所以我們這裏就不區分這兩個單詞了, 我們對存儲器的分類也不會使用這種說法。 這裏我們瞭解一下就可以了, 純粹當做擴展知識罷了。


存儲器的分類


存儲器分類的方法有很多, 比如按照存儲介質可分爲: 半導體存儲器、 磁表面存儲器、 光存儲器、 磁芯存儲器(磁芯存儲器被半導體存儲器取代了, 詳細可查閱參考資料 [2])和紙帶存儲器(這也是老古董了)。 我們計算機裏常使用的機械硬盤就屬於磁表面存儲器, 還有磁帶(錄音帶)、 古董級的軟盤等; 光存儲器就是常見的光盤了, 實際上光盤的種類也很多: CD-ROM、 CD-R、 CD-RW、 DVD等。 如果對於它們的區別有興趣的話可以查看參考資料 [3], 這裏就不作詳細講解了; 現在大部分的存儲器都是半導體存儲器, 硬盤也有被固態硬盤(固態硬盤是俗稱, 這種叫法是因爲在 PC 機上固態硬盤和硬盤使用了相同的接口, 它實際上使用的是快閃存儲器)取代的趨勢。


內部存儲器和外部存儲器


按照存儲介質對存儲器進行分類不是本篇博文要討論的重點, 下面我們會從內部和外部的角度存儲器分爲內部存儲器(Internal Memory)和外部存儲器(External Memory), 同時也讓讀者重新認識一下我們現在使用的存儲器。


內部存儲器

內部存儲器是「CPU可以直接尋址/訪問的存儲器」,可以簡稱爲內存,注意內存並不是指在系統內部的存儲器。在生活中內存這個詞的指向是很混亂的, 比如把硬盤容量叫作內存, TF / SD卡叫作內存卡等。給讀者一個建議, 慎用內存這個詞, 使用時要指向明確, 尤其是在論文當中。內存包含主存儲器(Main Memory, 可以簡稱爲主存)、 高速緩存(Cache寄存器(Register)。 高速緩存和寄存器分別是集成在 SoC 和 CPU 內部, 它們更像是「內部的內部存儲器」, 有些地方說內存時不包括高速緩存和寄存器。 但是 CPU 是可以直接訪問它們的,所以我就把它歸到內存部分了。 我們可以用下圖來表示:

                                                                             


從圖上可以看到我把 Internal Memory(內部存儲器)和 Main Memory(主存儲器)的概念分開了。 個人認爲這一種分法更加接近我們現有的存儲器體系。 主存儲器包括 RAM(Random Access Memory, 隨機訪問存儲器)和部分ROM(Read-Only Memory)。 


一般在 PC 機(馮·諾依曼機)中, 主存指的是 RAM, 而一些嵌入式系統中,主存包括ROM。 ROM 可以作爲內存也可以作爲外部存儲器, 關鍵是看它是否能被 CPU 直接尋址。 


寄存器則是 CPU 的組成部分, 由一些鎖存器和觸發器構成, 它通常存儲一個字(Word, 計算機數據總線位長)的數據或者指令, CPU對其的訪問速度非常快。 


高速緩存通常包括一級緩存(L1 Cache)和二級緩存(L2 Cache), 部分 CPU 還有三級緩存(L3 Cache)。 現在的高速緩存基本上都集成在 SoC 內部,而不需要像 RAM 一樣需要外部芯片。 高速緩存的目的就是爲了解決解決 CPU 運算速度與主存讀寫速度不匹配的矛盾, 從而提高計算機系統的性能。 它的讀寫速度要比CPU 寄存器慢, 但是遠大於 CPU 對主存的訪問速度。 


上述三者訪問速度可以表示如下:主存 < 高速緩存 < 寄存器


外部存儲器

外部存儲器是「不通過總線直接與 CPU 相連, CPU 需通過主存間接訪問的存儲器。 外部存儲器可以簡稱爲外存, 也可以稱爲二級存儲器或者輔助存儲器(輔存), 外存可以分爲 磁表面存儲器、 光存儲器 (準確的來說應該是所有的磁表面存儲器和光存儲器都是外存, 如果有例外的, 歡迎指正)和快閃存儲器(Flash Memory, 閃存)一小部分閃存可以作爲內存ROM使用, 同樣看它是否能被CPU直接尋址。 可以用下圖來表示外存的分類:





圖中閃存我只寫了一種, 但實際上閃存這個家族是十分龐大的, 在《存儲器這個小話題(2)》和《存儲器這個小話題(3)》二文中我會進行更加詳細的分類, 比如 RAM 和 ROM 的分類、 閃存的分類


看完了上述對存儲器的分類, 我想你應該大致理解了存儲器是一個怎樣的東西, 然後我們就可以進一步理解計算機存儲器結構了, 下圖是計算機的三級存儲體系結構圖(注意 Cache 的位置可能也可能在 CPU 內部):




2017 年 1 月 24 日

Kilento


參考資料

[1]存儲器:http://baike.c114.net/view.asp?id=17491-10D43BD4#l7

[2]磁芯存儲器:http://baike.baidu.com/view/2790431.htm

[3]各類光盤的區別:https://zhidao.baidu.com/question/574202211.html?qbl=relate_question_0



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章