1. 程式人生 > >ROM、RAM、DRAM、SRAM和FLASH的區別

ROM、RAM、DRAM、SRAM和FLASH的區別

大於 數字 運行程序 管理 dynamic 簡單 不同 組成 這也

最近在惡補一些基礎和理論知識,這是在網上找到的一片關於內存區分比較仔細的文章,故轉載

ROM和RAM指的都是半導體存儲器,ROM在系統停止供電的時候仍然可以保持數據,而RAM通常都是在掉電之後就丟失數據典型的RAM就是計算機的內存。

RAM有兩大類,一種稱為靜態RAM(Static RAM/SRAM),SRAM速度非常快,是目前讀寫最快的存儲設備了,但是它也非常昂貴,所以只在要求很苛刻的地方使用,譬如CPU的一級緩沖,二級緩沖。另一種稱為動態RAM(Dynamic RAM/DRAM),DRAM保留數據的時間很短,速度也比SRAM慢,不過它還是比任何的ROM都要快,但從價格上來說DRAM相比SRAM要便宜很多,計算機內存就是DRAM的。

DRAM分為很多種,常見的主要有FPRAM/FastPage、EDORAM、SDRAM、DDR RAM、RDRAM、SGRAM以及WRAM等,這裏介紹其中的一種DDR RAM。

DDR RAM(Date-Rate RAM)也稱作DDR SDRAM,這種改進型的RAM和SDRAM是基本一樣的,不同之處在於它可以在一個時鐘讀寫兩次數據,這樣就使得數據傳輸速度加倍了。這是目前電腦中用得最多的內存。在很多高端的顯卡上,也配備了高速DDR RAM來提高帶寬,這可以大幅度提高3D加速卡的像素渲染能力。

內存工作原理:

內存是用來存放當前正在使用的(即執行中)的數據和程序,我們平常所提到的計算機的內存指的是動態內存(即DRAM)

,動態內存中所謂的"動態",指的是當我們將數據寫入DRAM後,經過一段時間,數據會丟失,因此需要一個額外設電路進行內存刷新操作

具體的工作過程是這樣的:一個DRAM的存儲單元存儲的是0還是1取決於電容是否有電荷,有電荷代表1,無電荷代表0。但時間一長,代表1的電容會放電,代表0的電容會吸收電荷,這就是數據丟失的原因;刷新操作定期對電容進行檢查,若電量大於滿電量的1/2,則認為其代表1,並把電容充滿電;若電量小於1/2,則認為其代表0,並把電容放電,藉此來保持數據的連續性。

ROM也有很多種,PROM是可編程的ROM,PROM和EPROM(可擦除可編程ROM)兩者區別是,PROM是一次性的,也就是軟件灌入後,就無法修改了,這種是早期的產品,現在已經不可能使用了,而EPROM

是通過紫外光的照射擦出原先的程序,是一種通用的存儲器。另外一種EEPROM是通過電子擦出,價格很高,寫入時間很長,寫入很慢

舉個例子,手機軟件一般放在EEPROM中,我們打電話,有些最後撥打的號碼,暫時是存在SRAM中的,不是馬上寫入通訊記錄(通話記錄保存在EEPROM中),因為當時有很重要工作(通話)要做,如果寫入,漫長的等待是讓用戶忍無可忍的。

PSRAM,假靜態隨機存儲器

基本原理:

PSRAM就是偽SRAM內部的內存顆粒跟SDRAM的顆粒相似,但外部的接口跟SRAM相似,不需要SDRAM那樣復雜的控制器和刷新機制,PSRAM的接口跟SRAM的接口是一樣的。

PSRAM容量有8Mbit,16Mbit,32Mbit等等,容量沒有SDRAM那樣密度高,但肯定是比SRAM的容量要高很多的,速度支持突發模式,並不是很慢,Hynix,Coremagic, WINBOND .MICRON. CY 等廠家都有供應,價格只比相同容量的SDRAM稍貴一點點,比SRAM便宜很多。

PSRAM主要應用於手機,電子詞典,掌上電腦,PDA,PMP.MP3/4,GPS接收器等消費電子產品與SRAM(采用6T的技術)相比,PSRAM采用的是1T+1C的技術,所以在體積上更小,同時,PSRAM的I/O接口與SRAM相同.在容量上,目前有4MB,8MB,16MB,32MB,64MB和128MB。比較於SDRAM,PSRAM的功耗要低很多。所以對於要求有一定緩存容量的很多便攜式產品是一個理想的選擇。

===================================================

FLASH存儲器又稱閃存,它結合了ROM和RAM的長處,不僅具備電子可擦除可編程(EEPROM)的性能,還不會斷電丟失數據同時可以快速讀取數據(NVRAM的優勢),U盤和MP3裏用的就是這種存儲器。在過去的20年裏,嵌入式系統一直使用ROM(EPROM)作為它們的存儲設備,然而近年來Flash全面代替了ROM(EPROM)在嵌入式系統中的地位,它用作存儲Bootloader以及操作系統或者程序代碼,或者直接當硬盤使用(U盤)。

目前Flash主要有NOR Flash和NADN Flash。

一、類型理解

分為NOR(或非) NAND(與非)

二、接口理解

NOR(或非)----地址、數據總線分開;

NAND(與非)----地址、數據總線共用。

三、讀寫單位:

NOR(或非)----字節;

NAND(與非)----頁。

四、組成結構:

NOR(或非)----扇區、字節;

NAND(與非)----塊、頁;

五、擦除單位:

NOR(或非)----扇區;

NAND(與非)----塊;

NOR Flash的讀取和我們常見的SDRAM的讀取是一樣,用戶可以直接運行裝載在NOR FLASH裏面的代碼,這樣可以減少SRAM的容量從而節約了成本。

NAND Flash沒有采取內存的隨機讀取技術,它的讀取是以一次讀取一塊的形式來進行的,通常是一次讀取512個字節,采用這種技術的Flash比較廉價。用戶不能直接運行NAND Flash上的代碼因此好多使用NAND Flash的開發板除了使用NAND Flah以外,還加上了一塊小的NOR Flash來運行啟動代碼。

一般小容量的用NOR Flash,因為其讀取速度快,多用來存儲操作系統等重要信息,而大容量的用NAND FLASH,最常見的NAND FLASH應用是嵌入式系統采用的DOC(Disk On Chip)和我們通常用的"閃盤",可以在線擦除。目前市面上的FLASH主要來自Intel,AMD,Fujitsu和Toshiba,而生產NAND Flash的主要廠家有Samsung和Toshiba。

===================================================================

NAND Flash和NOR Flash的比較

NOR和NAND是現在市場上兩種主要的非易失閃存技術。Intel於1988年首先開發出NOR flash技術,徹底改變了原先由EPROM和EEPROM一統天下的局面。緊接著,1989年,東芝公司發表了NAND flash結構,強調降低每比特的成本,更高的性能,並且象磁盤一樣可以通過接口輕松升級。

大多數情況下閃存只是用來存儲少量的代碼,這時NOR閃存更適合一些。而NAND則是高數據存儲密度的理想解決方案

NOR一般只用來存儲少量的代碼;NOR主要應用在代碼存儲介質中。NOR的特點應用簡單、無需專門的接口電路、傳輸效率高,它是屬於芯片內執行(XIP, eXecute In Place),這樣應用程序可以直接在(NOR型)flash閃存內運行,不必再把代碼讀到系統RAM中。但是很低的寫入和擦除速度大大影響了它的性能NOR flash帶有SRAM接口,有足夠的地址引腳來尋址,可以很容易地存取其內部的每一個字節。NOR flash占據了容量為1~16MB閃存市場的大部分。

NAND結構能提供極高的單元密度,可以達到高存儲密度,並且寫入和擦除的速度也很快。應用NAND的困難在於nand flash的管理需要特殊的系統接口

1、性能比較:

任何flash器件的寫入操作只能在空或已擦除的單元內進行,所以大多數情況下,在進行寫入操作之前必須先執行擦除。NAND器件執行擦除操作是十分簡單的,NOR則要求在進行擦除前先要將目標塊內所有的位都寫為1。

由於擦除NOR器件時是以64~128KB的塊進行的,執行一個寫入/擦除操作的時間為5s,與此相反,擦除NAND器件是以8~32KB的塊進行的,執行相同的操作最多只需要4ms。

NOR的速度比NAND稍快一些。

NAND的寫入速度比NOR快很多

NAND的4ms擦除速度遠比NOR的5s快。

大多數寫入操作需要先進行擦除操作

NAND的擦除單元更小,相應的擦除電路更少

(註:NOR FLASH SECTOR擦除時間視品牌、大小不同而不同,比如,4M FLASH,有的SECTOR擦除時間為60ms,而有的需要最大6s。)

2、接口差別:

NOR flash帶有SRAM接口,有足夠的地址引腳來尋址,可以很容易地存取其內部的每一個字節。

NAND器件使用復雜的I/O口來串行地存取數據,各個產品或廠商的方法可能各不相同。8個引腳用來傳送控制、地址和數據信息。

NAND讀和寫操作采用512字節的塊這一點有點像硬盤管理此類操作,很自然地,基於NAND的存儲器就可以取代硬盤或其他塊設備。

3、容量和成本:

NAND flash的單元尺寸幾乎是NOR器件的一半,由於生產過程更為簡單,NAND結構可以在給定的模具尺寸內提供更高的容量,也就相應地降低了價格

NOR flash占據了容量為1~16MB閃存市場的大部分,而NAND flash只是用在8~128MB的產品當中,這也說明NOR主要應用在代碼存儲介質中,NAND適合於數據存儲

4、可靠性和耐用性:

可以從壽命(耐用性)、位交換和壞塊處理三個方面來比較NOR和NAND的可靠性。

A)壽命(耐用性)

NAND閃存中每個塊的最大擦寫次數是一百萬次,而NOR的擦寫次數是十萬次。NAND存儲器除了具有10比1的塊擦除周期優勢,典型的NAND塊尺寸要比NOR器件小8倍,每個NAND存儲器塊在給定的時間內的刪除次數要少一些。

B)位交換

所有flash器件都受位交換現象的困擾。在某些情況下(很少見,NAND發生的次數要比NOR多),一個比特(bit)位會發生反轉或被報告反轉了。

一位的變化可能不很明顯,但是如果發生在一個關鍵文件上,這個小小的故障可能導致系統停機。如果只是報告有問題,多讀幾次就可能解決了。

當然,如果這個位真的改變了,就必須采用錯誤探測/錯誤更正(EDC/ECC)算法。位反轉的問題更多見於NAND閃存NAND的供應商建議使用NAND閃存的時候,同時使用EDC/ECC算法

這個問題對於用NAND存儲多媒體信息時倒不是致命的。當然,如果用本地存儲設備來存儲操作系統、配置文件或其他敏感信息時,必須使用EDC/ECC系統以確保可靠性

C)壞塊處理

NAND器件需要對介質進行初始化掃描以發現壞塊,並將壞塊標記為不可用。在已制成的器件中,如果通過可靠的方法不能進行這項處理,將導致高故障率。

5、易於使用:

可以非常直接地使用基於NOR的閃存,可以像其他存儲器那樣連接,並可以在上面直接運行代碼。

由於nandflash需要I/O接口,所以要復雜得多。各種NAND器件的存取方法因廠家而異。

在使用NAND器件時,必須先寫入驅動程序,才能繼續執行其他操作向NAND器件寫入信息需要相當的技巧,因為設計師絕不能向壞塊寫入,這就意味著在NAND器件上自始至終都必須進行虛擬映射。

6、軟件支持:

在NOR器件上運行代碼不需要任何的軟件支持,在NAND器件上進行執行操作時,通常需要 驅動程序,也就是內存技術驅動程序(MTD)NAND和NOR器件在進行寫入和擦除操作時都需要MTD。

使用NOR器件時所需要的MTD要相對少一些。驅動還用於對DiskOnChip產品進行仿真和NAND閃存的管理,包括糾錯、壞塊處理和損耗平衡。

NOR FLASH的主要供應商是INTEL ,MICRO等廠商,曾經是FLASH的主流產品,但現在被NAND FLASH擠的比較難受。NOR優點可以直接從FLASH中運行程序缺點工藝復雜,價格比較貴。

NAND FLASH的主要供應商是SAMSUNG和東芝,在U盤、各種存儲卡、MP3播放器裏面的都是這種FLASH,由於工藝上的不同,Nand flash比NOR FLASH擁有更大存儲容量,而且便宜。但也有缺點,就是無法尋址和直接運行程序,只能存儲數據。另外NAND FLASH非常容易出現壞區,所以需要有校驗的算法。

在掌上電腦裏要使用NAND FLASH存儲數據和程序,但是必須有NOR FLASH來啟動除了SAMSUNG處理器支持nand flash啟動程序,其他用在掌上電腦的主流處理器還不支持直接由NAND FLASH啟動程序。因此,必須先用一片小的NOR FLASH 啟動機器,在把OS等軟件從NAND FLASH載入SDRAM中運行才行,挺麻煩的。

7、尋址:

NAND每次讀取數據時都是指定塊地址、頁地址、列地址,列地址就是讀的頁內起始地址,每次都是先將數據讀入頁緩沖區內,再 由I/O輸入地址 在緩沖區內尋址,其實這裏列地址,只是指定起始地址的作用。NAND是 以頁 為基本單位 操作的寫入數據也是首先在頁面緩沖區內緩沖,數據首先寫入這裏,再寫命令後,再統一寫入頁內。因此NAND頁緩沖區的作用就是,保證芯片的按頁的讀、寫操作,是I/O操作與芯片操作的接口、橋梁,因為數據是從I/O輸入的,又是每次一個字節,因此需要緩沖。即使每次改寫一個字節,都要重寫整個頁,因為它只支持頁寫,而且如果頁內有未擦除的部分,則無法編程,在寫入前必須保證頁是空的


NOR的 讀、寫 字節為基本單位操作的,但擦除 是以扇區操作的。綜上所述在芯片操作上,NAND要比NOR快很多,因為NAND是頁操作的而NOR是字節操作的。

8、應用:
NAND 正是基於這種構造:塊、頁,無法字節尋址,頁讀寫本身就靠的是內部復雜的串、並行轉換 ,因此也沒有很多地址引腳,所以其地址、數據線共用,所以容量可以做的很大 。
NOR 是和SRAM一樣的可隨機存儲的,也不需要驅動,因此,其地址就有限,所以容量普遍較小,其實是受限於地址線。


基於以上幾點,在工業領域,NOR 用的較多,特別是程序存儲,少量數據存儲等。

在消費領域,大量數據存儲,NAND較多。

存儲器局限性

閃存最關鍵的限制可能是寫/擦除周期數有限。多數商用基於快閃產品都保證能進行高達100萬個寫周期。這一數字看起來似乎很大,對於NOR閃存,很可能是這樣,因為將一個軟件或BIOS保存很長時間可能沒問題。不過,在典型的經常進行文件寫入、檢索和重寫的NAND應用中,這些周期很快耗完,而大多數用戶可能不進行計數。對於頻繁更新的關鍵數據的存儲,閃存可能不適合。

為應對這種限制,可采用固件或文件系統驅動器,對存儲器寫的次數進行逐次計數。這些軟件將動態地重新映射這些塊,在扇區間分享寫操作。換句話說,萬一寫操作失敗,軟件通過寫驗證和重新映射向未使用的扇區授權寫操作。

像RAM一樣,閃存可以一個字節或一個字一次進行讀或編程,但擦除必須是一次進行一個完整的塊,將塊中的所有位重新置位為1。這意味著需要花更多時間進行編程。例如,如果將一位(0)寫入一個塊,要對該塊重新編程,就必須完全擦除此塊,而不是僅僅重寫該位。

=========================================================================

DRAM利用MOS管的柵電容上的電荷來存儲信息,一旦掉電信息會全部的丟失,由於柵極會漏電,所以每隔一定的時間就需要一個刷新機構給這些柵電容補充電荷,並且每讀出一次數據之後也需要補充電荷,這個就叫動態刷新,所以稱其為動態隨機存儲器。由於它只使用一個MOS管來存信息,所以集成度可以很高,容量能夠做的很大。SDRAM比它多了一個與CPU時鐘同步。

SRAM利用寄存器來存儲信息,所以一旦掉電,資料就會全部丟失,只要供電,它的資料就會一直存在,不需要動態刷新,所以叫靜態隨機存儲器。

以上主要用於系統內存儲器,容量大,不需要斷電後仍保存數據的。

Flash ROM是利用浮置柵上的電容存儲電荷來保存信息,因為浮置柵不會漏電,所以斷電後信息仍然可以保存。也由於其機構簡單所以集成度可以做的很高,容量可以很大。Flash rom寫入前需要用電進行擦除,而且擦除不同與EEPROM可以以byte(字節)為單位進行,flash rom只能以sector(扇區)為單位進行。不過其寫入時可以byte為單位flash rom主要用於bios,U盤,Mp3等需要大容量且斷電不丟數據的設備

ROM、RAM、DRAM、SRAM和FLASH的區別