相信有很多人都對計算機里的各種存儲器(ROM、RAM、FLASH 等等)傻傻分不清,就會存在,內存條是 dram 還是 nand?nand flash 和 nor flash 的區別又是什么?程序運行是在DRAM還是 NOR FLASH?ram 和 rom 的區別?等等的疑問。
從 IT 小白到資深工程師都會存在這種現象。本文將根據個人理解,從存儲器與 CPU 的接口、程序運行的角度,系統而詳細介紹各種存儲器的分類與用途,從而讓讀者深刻的認識并區分各種存儲器。
ROM
ROM 是只讀存儲器(Read-Only Memory)的簡稱,是一種只能讀出事先所存數據的固態半導體存儲器,部分擁有 CPU 的總線接口,可以執行代碼(需要配合RAM,因為程序的執行過程肯定有寫操作的)。這是很早期的定義了,現今 ROM 的概念已經非常廣了,通常掉電后數據不會消失的半導體存儲器都泛稱為 ROM 了。比如手機參數里所說的 ROM 通常就是指 NAND FLASH 類存儲器。但這些 ROM 基本上都是不支持執行代碼的。
NAND FLASH
Nand FLASH 是目前市面上的兩種主流的非易失性閃存技術之一,支持掉電保存數據,具有容量較大,改寫速度快的優點。但不能通過 CPU 總線隨機訪問,依賴 NAND FLASH 控制器訪問,所以不能直接執行程序。通常作為廣義上的 ROM 來使用。
NOR FLASH
NOR FLASH 和 Nand FLASH 一樣,是兩種主流的非易失性閃存技術之一,同樣支持掉電保存數據。相對于 NAND FLASH,NOR FLASH 有類似于RAM的接口,可以通過 CPU 總線隨機訪問,所以可以作為傳統的 ROM 直接執行程序,不過也是需要與RAM配合,因為 NOR FLASH 不支持隨機寫操作。NOR FLASH 的成本較高,在容量小的時候收益才較大。
SRAM
靜態隨機存取存儲器(Static Random-Access Memory,SRAM)是隨機存取存儲器中的一種。所謂的“靜態”,是指這種存儲器只要保持通電,里面儲存的數據就可以恒常保持,掉電還是會消失的。這是性能十分優秀的RAM,但價格較高,一般用在 CPU 內部做高速緩存(cache),或是起步石。如三星的 S3C2440 內部就有 16Kb 的指令緩存、16Kb 的數據緩存和 4Kb 的內部RAM(起步石)。
DRAM
動態隨機存取存儲器(Dynamic Random Access Memory),是如今最為常見的系統內存 RAM(無論是個人電腦還是智能手機)。它相對于SRAM,在通電的情況下,也只能將數據保持很短的時間,為了保持數據穩定,所以必須隔一段時間就要對存儲單元刷新(refresh)一次,如果存儲單元沒有被刷新,那么存儲的數據就會丟失。
SDRAM
同步動態隨機存儲器(Synchronous Dynamic Random Access Memory),它與DRAM類似,只是多了一個同步(Synchronous)。同步是指內存工作需要同步時鐘,內部的命令的發送與數據的傳輸都以它為基準;動態是指存儲陣列需要不斷的刷新來保證數據不丟失;隨機是指數據不是線性依次存儲,而是自由指定地址進行數據讀寫。
程序的執行與存儲器的關系
最后再從程序執行的角度來區分以上各種存儲器。首先,程序的執行有取指令、分析指令和執行指令這三個過程。取指令的過程必然有按順序取指令和跳躍取指令這兩種方式的,那么在程序執行過程中,指令的存儲器就必須是支持隨機讀取的。而執行指令這個過程則必然會有隨機寫這一需求的。
那么,以上各種存儲器的差別就很明顯了。
1、在程序沒有被執行的時候,程序可以存在所有支持掉電保存數據的存儲器(ROM、NAND FLASH、NOR FLASH)。當程序需要被執行的時候再將其加載到可以執行程序的存儲器中。
2、當程序執行時,
(1)很明顯各種 RAM(SRAM、DRAM、SDRAM)都是可以完全的支持程序執行的,因為它們都是支持隨機讀/寫的。
(2)而對于擁有總線接口的 ROM 和 NOR FLASH 來說則不能完全支持程序的執行了,因為它們只支持隨機讀,而不支持隨機寫。所以,要想在程序執行時將代碼存在 ROM 或者 NOR FLASH,則需要 RAM 的配合。代碼指令存在 ROM 或 NOR FLASH 上執行,而需要寫的存儲空間則安排在 RAM,如此,也就可以在 ROM 和 NOR FLASH 上執行程序了。
編輯:hfy
-
DRAM
+關注
關注
40文章
2343瀏覽量
185194 -
sram
+關注
關注
6文章
782瀏覽量
115680 -
Nand flash
+關注
關注
7文章
242瀏覽量
40555 -
隨機存取存儲器
+關注
關注
0文章
45瀏覽量
9077
發布評論請先 登錄
評論