存儲器這個小話題(2)

續 > 存儲器這個小話題(1)


前言


在上篇博文中我們將存儲器分爲了內部存儲器(內存)和外部存儲器(外存), 並將其進行了簡單的分類。 在本文中我們主要討論內部存儲器, 外部存儲器會在《存儲器這個小話題(3)》一文中講解。


內部存儲器分爲主存、 高速緩存和寄存器。 寄存器在 CPU 內部, 雖然它也是存儲器, 但是這裏不深入研究它, 不然就會牽涉出 CPU 這個大話題了。 所以本篇我們只討論主存和高速緩存的部分。


RAM和ROM是什麼


先來說主存, 爲什麼叫主存(Main Memory)? 很簡單, 它是計算機存儲系統中最主要的部分, 計算機系統的所有的軟件都依賴它來運行。 主存分爲 RAM 和 部分 ROM:
  • RAM 即 Random Access Memory(隨機存取存儲器)。 隨機存取是指當存儲器中的數據被存儲或讀取時, 所需要的時間與這段信息所在的位置或所寫入的位置無關, 簡單的來說就是可以隨存隨取。 與之相對的是順序存取存儲器(Sequential Access Memory: SAM。 順序存儲器在存取信息時, 只能按存儲單元的位置, 順序地一個接一個地進行存取, 最典型的順序存儲器就是磁帶了。 RAM 還有一個特性, 它在掉電時無法保存數據,是一種易失性存儲器(Volatile Memory)
  • 計算機系統主存系統還有一種能夠在掉電後也能長期保存信息的存儲器。 這種存儲器就是易失性存儲器(Non-Volatile Memory)。 ROM 就是一種易失性存儲器, ROM 即 Read Only Access(只讀存儲器),ROM 內部信息(通常 ROM 內部放程序指令)在程序運行時無法寫入, 只能讀取, 這能有效地保護內部的信息。 早期的 ROM 是在出廠時就寫入數據, 用戶無法更改, 我們可以用紙帶存儲器類比這種ROM, 後來這種只能一次寫入的 ROM 基本就被淘汰了, 現在的 ROM 基本都是可擦除的, 它的擦除需要藉助擦除電路。 可能有人可能會覺得奇怪, 都可擦除了,爲什麼還叫 ROM? 其實只讀的意思是在程序運行時, 程序只能讀取ROM內部的信息,而不能更改它。 另外 ROM 這個詞在生活中指向也比較混亂, 一些手機廠商會把手機中上的 Flash 存儲器命名爲手機 ROM, 這種說法其實並不準確, 在下一篇博文中會提到。 另外 ROM 這個詞常常會和固件(Firmware)聯繫在一起, 這是有一定的道理的。 固件是「固化的軟件」, 比如 BIOS。 廠商在出廠時就會把固件寫入到 ROM 或者 Flash 中, 用戶一般無需更改它。 固件一般是一些低級的控制程序, 它靠近硬件底層, 最常見的就是在嵌入式是系統當中。 所以我不怎麼認同把手機刷機稱爲給手機刷固件包, 刷機一般刷的是操作系統, 操作系統是最大的系統軟件, 它靠近應用層, 與固件並不是同一個東西。

RAM和ROM的種類

RAM

RAM 主要可以分爲 DRAM 和 SRAM 兩大類,其他還有 FRAM(Ferroelectric Random Access Memory, 鐵電體存儲器)、 DPRM(Dual Port Random Access Memory, 雙端口隨機存儲器)等這些不是很常見的RAM, 這裏不作詳解, 有興趣的讀者可以查閱參考資料 [1]。
  • DRAM(Dynamic Random Access Memory, 動態隨機存取存儲器是最爲常見的RAM。 DRAM  只能將數據保持很短的時間。 爲了保持數據, DRAM使用電容存儲, 所以必須隔一段時間刷新(Refresh)一次, 如果存儲單元沒有被刷新, 存儲的信息就會丟失, 所以稱之爲動態。 SDRAM(Synchronous Dynamic Random Access Memory, 同步動態隨機存取存儲器是DRAM中最常見的一種, 它的工作需要同步時鐘, 內部命令的發送與數據的傳輸都以時鐘爲基準。 我們 PC 機中所使用的內存條就是 SDRAM, 不過單純的 SDRAM 作爲內存條很早就被淘汰了, 現在使用的都是基於老式 SDRAM 發展而來的 DDR SDRAM(Double Date Rate SDRAM, 雙信道同步動態隨機存取存儲器, 我們生活中一般簡稱其爲DDR。 老式 SDRAM 的特性是在一個同步時鐘週期中, 在一個方波上升沿時進行一次操作(讀或寫)。 而 DDR 則引用了一種新的設計, 即在一個同步時鐘週期中, 在方波上升沿時進行一次操作, 在方波的下降沿時也做一次操作。 所以在一個時鐘週期中, DDR 則可以完成 SDRAM 兩個週期才能完成的任務, 理論上同速率的 DDR 與 SDRAM 相比, 性能要超出一倍。 現在的 DDR 技術已經發展到第四代了, 容量也可以做到很大, 4 GB、 8 GB 的內存條很常見, 16 GB 的也可以買到。
  • SRAM(Static Random Access Memory, 靜態隨機存取存儲器雖然不如 DRAM 那樣被人熟知, 但它的作用還是比較大的。 SRAM 是一種具有靜止存取功能的內部存儲器, 不需要通過刷新電路就能保存它內部存儲的數據, 在快速讀取和刷新時能夠保持數據完整性, 這意味着它不需要軟件初始化就能工作。 SRAM 內部採用的是雙穩態電路的形式來存儲數據, 所以 SRAM 的電路結構非常複雜。 製造相同容量的 SRAM 比 DRAM 的成本高的多。 正因爲如此, 其發展受到了限制。 因此目前 SRAM 基本上用於 SoC 內部的緩存。

ROM

  • 最早期的 ROM 是 Mask ROM(掩膜ROM), 這種 ROM 出廠前利用掩膜工藝對 ROM 進行一次燒錄, 燒錄完成後就無法進行任何更改。 後來發明了 PROM(Programmable Read-Only Memory,可編程只讀存儲器), 這種 ROM 可以支持用戶使用專用的編程器進行一次編程, 但依舊無法擦除。 針對時代的需求, 出現了EPROM(Erasable Programmable Read-Only Memory, 可擦除可編程只讀存儲器)。 這種 ROM 使用了紫外線對其進行擦除, 在擦寫次數上有了不錯的進步, 但對於用戶來說這種擦除方式依舊不是很方便。 最佳的方式就是電擦除, 所以 EEPROM(Electrically Erasable Programmable Read-Only Memory, 電可擦除可編程只讀存儲器, 也叫 E2PROM )出現了, 在很長的一段時間裏, 這種 ROM 在非易失性存儲器裏處於主導地位。
PS:在某些嵌入式 SoC 中會有內部(Internal) RAM 和 ROM,即 iRAM(是一種SRAM) 和 iROM,這兩種存儲器主要用於系統的啓動。

高速緩存(Cache)


高速緩存從功能上分爲 I-Cache(Instructions Cache, 指令緩存)和 D-Cache(Data Cache)。 從層次上分爲 L1 Cache、 L2 Cache 和 L3 Cache,L4 Cache 並不常見。緩存一般由 SRAM 製造, 可以有較快的讀寫速度。 關於緩存的分類大致說這些, 想了解工作原理的讀者可以查閱參考資料 [2]。

2017 年 1 月 25 日
Kilento 

參考資料


發佈了27 篇原創文章 · 獲贊 31 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章