存儲器種類
存儲器是計算機結(jié)構(gòu)的重要組成部分。存儲器是用來存儲程序代碼和數(shù)據(jù)的部件,有了存儲器計算機才具有記憶功能?;镜拇鎯ζ鞣N類見圖基本存儲器種類。
存儲器按其存儲介質(zhì)特性主要分為“易失性存儲器”和“非易失性存儲器”兩大類。其中的“易失性/非易失”是指存儲器斷電之后,它存儲的數(shù)據(jù)內(nèi)容是否會丟失的特性。由于一般易失性存儲器存取速度快,而非易失性存儲器可長期保存數(shù)據(jù),它們在計算機中占據(jù)著非常重要的角色。在計算機中易失性存儲器最典型的代表是內(nèi)存,非易失性存儲器的代表則是硬盤。
RAM存儲器
RAM是“Random Access Memory”的縮寫,被譯為隨機存儲器,指的是當存儲器中的消息被讀取或?qū)懭霑r,所需要的時間與這段信息所在的位置無關(guān)。這個詞的由來是因為早期計算機中曾使用磁鼓作為存儲器,磁鼓就是順序讀寫設(shè)備,而RAM可隨機讀取其內(nèi)部任意地址的數(shù)據(jù),時間都是相同的,因此得名。實際上現(xiàn)在RAM已經(jīng)專門用于指代作為計算機內(nèi)存的易失性半導體存儲器。
根據(jù)RAM的存儲機制,又分為動態(tài)隨機存儲器DRAM(Dynamic RAM)以及靜態(tài)隨機存儲器SRAM(Static RAM)兩種。
DRAM
動態(tài)隨機存儲器DRAM的存儲單元以電容的電荷來表示數(shù)據(jù),有電荷代表1,無電荷代表0,見圖DRAM存儲單元。但時間一長,代表1的電容會放電,代表0的電容會吸收電荷,因此它需要定期刷新操作,這就是“動態(tài)(Dynamic)”一詞所形容的特性。刷新操作會對電容進行檢查,若電量大于滿電量的1/2,則認為其代表1,并把電容充滿,若電量小于1/2,則認為其代表0,并把電容放電,以此來保證數(shù)據(jù)的正確性。
SDRAM
根據(jù)DRAM的通訊方式,又分為同步和異步兩種,這兩種方式根據(jù)通訊時是否需要使用時鐘信號來區(qū)分,圖同步通訊時序圖是一種利用時鐘進行同步的通訊時序,它在時鐘上升沿表示有效數(shù)據(jù)。
由于使用時鐘同步的通訊速度更快,所以同步DRAM使用更為廣泛,這種DRAM被稱為SDRAM(Synchronous DRAM)
DDR SDRAM
為了進一步提高SDRAM的通訊速度,人們設(shè)計了DDR SDRAM存儲器(Double Data Rate SDRAM)。它的存儲特性與SDRAM沒有區(qū)別,但SDRAM只在上升沿表示有效數(shù)據(jù),在一個時鐘周期內(nèi),只能表示1個有效數(shù)據(jù),而DDR SDRAM在時鐘的上升沿和下降沿各表示一個數(shù)據(jù),也就是說在1個時鐘周期內(nèi)可以表示2位數(shù)據(jù),在時鐘頻率相同的情況下,提高了一倍的速率。至于DDR2和DDR3,他們的通訊方式?jīng)]有區(qū)別,主要是通訊同步時鐘的頻率提高了。
當前計算機常用的內(nèi)存條是DDR3 SDRAM存儲器,在一個內(nèi)存條上包含多個DDR3 SDRAM芯片。
SRAM
靜態(tài)隨機存儲器SRAM的存儲單元以鎖存器來存儲數(shù)據(jù),見圖SRAM存儲單元。這種電路結(jié)構(gòu)不需要定期刷新充電;就能保持狀態(tài)。(當然,如果斷電了,數(shù)據(jù)還是會丟失);所以這種存儲器被稱為“靜態(tài)(Static)”RAM。
同樣地,SRAM根據(jù)其通訊方式也分為同步(SSRAM)和異步(SRAM),相對來說,異步SRAM使用的較為廣泛。
DRAM和SRAM的應用場合
對比DRAM與SRAM的結(jié)構(gòu),可知DRAM的結(jié)構(gòu)簡單的多,所以生產(chǎn)相同容量的存儲器,DRAM的成本要低,且集成度更高,而DRAM中的電容結(jié)構(gòu)則決定了它們的存儲速度不如SRAM,特性的對比見下表。
所以在實際應用場合,SRAM一般只用于CPU內(nèi)部的高速緩存(Cache),而外部擴展的內(nèi)存一般使用DRAM。在STM32系統(tǒng)的控制器中,只有STM32F429型號或者更高型號的芯片才支持擴展SDRAM,其他型號如STM32F1、STM32F2及STM32F2407只能擴展SRAM。
非易失性存儲器
非易失性存儲器種類非常多,半導體類的有ROM和FLASH,而其它的則包括光盤、軟盤及機械硬盤。
ROM存儲器
ROM是“Read Only Memory”的縮寫,意為只讀存儲器。由于技術(shù)的發(fā)展,后來設(shè)計出來可以方便寫入數(shù)據(jù)的ROM,而這個“Read Only Memory”的名稱被保留下來,現(xiàn)在一般用于指代非易失性半導體存儲器,包括后面介紹的FLASH存儲器,有些人也把它歸為ROM類里邊。
MASK ROM
MASK(掩膜)ROM就是正宗的“Read Only Memory”,存儲在它內(nèi)部的數(shù)據(jù)是在出廠時使用特殊的工藝固化的,生產(chǎn)之后不可修改,其主要優(yōu)勢是大批量生產(chǎn)時成本低,當前在生產(chǎn)量大,數(shù)據(jù)不需要修改的場合,還有應用。
OTPROM(One Time Programmable ROM)是一次可編程存儲器,這種存儲器出廠時內(nèi)部并沒有資料,用戶可以使用專門的編輯器將自己的資料寫入,但只能寫入一次,被寫入過后,它的內(nèi)容也不能修改。在NXP公司生產(chǎn)的控制器芯片中常使用OTPROM來存儲密鑰或設(shè)備獨有的mac地址等內(nèi)容。
EPROM
EPROM(Erasable Programmable ROM) 是可重復擦寫的存儲器,它解決了 PROM 芯片只能寫入一 次的問題。這種存儲器使用紫外線照射芯片內(nèi)部擦除數(shù)據(jù),擦除和寫入都要專用的設(shè)備?,F(xiàn)在這 種存儲器基本淘汰,被 EEPROM 取代
EEPROM
EEPROM(Electrically Erasable Programmable ROM) 是電可擦除存儲器。 EEPROM 可以重復擦寫,它 的擦除和寫入都是直接使用電路控制,不需要再使用外部設(shè)備來擦寫。而且可以按字節(jié)為單位修 改數(shù)據(jù),無需整個芯片擦除?,F(xiàn)在主要使用的 ROM 芯片都是EEPROM。
FLASH存儲器
FLASH存儲器又被稱為閃存,它也是可重復擦寫的存儲器,部分書籍也會把FALSH存儲器稱為FLASH ROM,但它的容量一般比EEPROM大的多,且在擦除時,一般以多個字節(jié)為單位,如有的FLASH存儲器以4096個字節(jié)為扇區(qū),最小的擦除單位為1個扇區(qū),根據(jù)存儲單元電路的不同,F(xiàn)LASH存儲器又分為NOR FLASH和NAND FLASH,見下表。
NOR和NAND的共性是在數(shù)據(jù)寫入之前都需要要擦除操作,而擦除操作一般是以“扇區(qū)/塊”為單位的。而NOR和NAND特性的差別,主要是由于其內(nèi)部“地址/數(shù)據(jù)線”是否分開導致的。
由于NOR的地址線和數(shù)據(jù)線是分開的,它可以按字節(jié)讀寫數(shù)據(jù),符合CPU的指令譯碼要求。所以假如NOR上存儲了代碼指令,CPU給NOR一個地址,NOR就能向CPU返回一個數(shù)據(jù)讓CPU執(zhí)行,中間不需要額外的處理操作。
而由于NAND的數(shù)據(jù)和地址線共用,只能按“塊”來讀寫數(shù)據(jù),假如NAND上存儲了代碼指令,CPU給NAND地址后,它無法直接返回該地址的數(shù)據(jù),所以不符合指令譯碼要求。表中最后一項是否支持XIP描述的就是這種立即執(zhí)行的特性。
若代碼存儲在NAND上,可以把它先加載到RAM存儲器上, 再由CPU執(zhí)行。所以在功能上可以認為NOR是一種斷電后數(shù)據(jù)不丟失的RAM,但它的擦除單位與RAM有區(qū)別,且讀寫速度比RAM要慢的多。
另外,F(xiàn)LASH的擦除次數(shù)都是有限的,現(xiàn)在普遍是10萬次左右,當它的使用接近壽命時,可能會出現(xiàn)寫操作失敗。由于NAND通常是整塊擦寫,塊內(nèi)有一位失效整個塊就會失效,這被稱為壞塊,而且由于擦寫過程復雜,從整體上來所NOR壞塊更少,壽命更長,由于存在壞塊,所以FLASH存儲器需要“探測/錯誤更正(EDC/ECC)”算法來保證數(shù)據(jù)的正確性。
由于兩種FLASH存儲器特性的差異,NOR FLASH一般應用在代碼存儲的場合,如嵌入式微控制器內(nèi)部的程序存儲空間,而NAND FLASH一般用于在大數(shù)據(jù)量存儲的場合,包括SD卡、U盤以及固態(tài)硬盤等都是NAND FLASH類型的。
評論
查看更多