以下内容完全参照三篇文章,特别是第一篇文章,再此表示感谢。
https://blog.csdn.net/liujiaoyage/article/details/37930475
http://www.atpinc.com/Memory-insider/computer-memory-types-dram-ram-module
https://blog.csdn.net/wbwwf8685/article/details/52724068
RAM和ROM的区别
根据掉电数据是否丢失可以分为RAM(Read Only Memory/随机存取存储器)
和ROM(Random Access Memory/只读存储器)
,其中RAM
的访问速度比较快,但掉电后数据会丢失。
而ROM
掉电后数据不会丢失,ROM
可片上运行,与NOR FLASH
一样,通常存储CPU的ROM Code
,不可改变。能不能片上执行,主要是看存储器存放的代码是可以由CPU直接取指并执行。
RAM的分类
RAM
又可分为SRAM(Static RAM/静态存储器)
和DRAM(Dynamic RAM/动态存储器)
。
SRAM
:SRAM
速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓冲。DRAM
:每个DRAM
存储器单元由集成电路内的晶体管和电容器组成,数据位存储在电容器中。由于晶体管总是少量泄漏,电容器会缓慢放电,导致存储在其中的信息耗尽; 因此,每隔几毫秒就必须刷新DRAM
(给定新的电子充电)以保留数据。
计算机内存就是DRAM
的。DRAM
分为很多种,常见的主要有FPRAM/FastPage
、EDORAM
、SDRAM
、DDR RAM
、RDRAM
等。DDR RAM(Date-Rate RAM)
也称作DDR SDRAM
,这种改进型的RAM
和SDRAM
是基本一样的,不同之处在于它可以在一个时钟读写两次数据,这样就使得数据传输速度加倍了。这是目前电脑中用得最多的内存,而且它有着成本优势.
DRAM分类
SDRAM-Synchronizes DRAM
:是DRAM
的一种,它是同步动态存储器,利用一个单一的系统时钟同步所有的地址数据和控制信号。使用SDRAM
不但能提高系统表现,还能简化设计、提供高速的数据传输,在嵌入式系统中经常使用。RDRAM-Rambus DRAM
:名字取自Rambus公司。它在21世纪初流行,主要用于视频游戏设备和显卡,传输速度高达1GHz。DDR SDRAM-Double Data Rate SDRAM
:双倍速率同步动态随机存储器。SDRAM
在一个时钟周期内只传输一次数据,它是在时钟的上升期进行数据传输;而DDR
内存则是一个时钟周期内传输两次数据,它能够在时钟的上升期和下降期各传输一次数据,因此称为双倍速率同步动态随机存储器。
这就是我们通常口中所说的DDR
内存条。
Flash定义
Flash
也是一种非易失性存储器(掉电不会丢失),它擦写方便,访问速度快,已大大取代了传统的EPROM
的地位。由于它具有和ROM
一样掉电不会丢失的特性,因此很多人称其为Flash ROM
。FLASH
存储器又称闪存,它结合了ROM
和RAM
的长处,不仅具备电子可擦出可编程(EEPROM)
的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM
的优势),U盘和MP3里用的就是这种存储器。
在过去的20年里,嵌入式系统一直使用ROM(EPROM)
作为它们的存储设备,然而近年来Flash
全面代替了ROM(EPROM)
在嵌入式系统中的地位,用作存储bootloader
以及操作系统或者程序代码或者直接当硬盘使用。
NOR Flash
:NOR Flash
的读取和我们常见的SDRAM
的读取是一样,用户可以直接运行装载在NOR FLASH
里面的代码(也就是片上运行),这样可以减少SRAM
的容量从而节约了成本。NAND Flash
:NAND Flash
没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的,通常是一次读取512个字节,采用这种技术的Flash
比较廉价。用户不能直接运行NAND Flash
上的代码,因此好多使用NAND Flash
的开发板除了使用NAND Flah
以外,还作上了一块小的NOR Flash
来运行启动代码。
比较:
NAND
则是高数据存储密度的理想解决方案,NOR
一般只用来存储少量的代码;NOR
主要应用在代码存储介质中,NOR的特点是应用简单、无需专门的接口电路、传输效率高,它是属于芯片内执行(XIP, eXecute In Place)
,这样应用程序可以直接在NOR flash
上运行,不必再把代码读到系统RAM中;- 在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。NOR flash占据了容量为1~16MB闪存市场的大部分。NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理和需要特殊的系统接口;
Nor Flash
有自己的地址线和数据线,可以采用类似于memory的随机访问方式,在Nor Flash
上可以直接运行程序,所以Nor Flash
可以直接用来做boot,采用Nor Flash
启动的时候会把地址映射到0x00上;Nand Flash
是IO设备,数据、地址、控制线都是共用的,需要软件区控制读取时序,所以不能像Nor Flash
内存一样随机访问,不能EIP
(片上运行),因此不能直接作为boot;
为什么不能再NAND 上运行程序?
代码执行主要就是指令取值和数据存取,对于指令存取和数据存取,CPU 直接将要预取的指令或者数据的地址发到系统总线上,对于ARM (就是AXBI)总线,这个地址会根据Soc之间的地址编码送到不同的控制器。
对于NAND Flash
根本就没有地址线,只有数据线。NAND Flash
的读取是要靠软件代码经过NAND Flash controller
发相关的命令和要地址等数据到NAND Flash
芯片内部的控制器,命令和地址都是经过数据线传送的。一般需要多个周期,由于需要数据读写,需要软件介入,所以说他不是XIP
的。XIP
从某种意义上说是CPU送出的地址能否不经过任何软件直接能够寻址到相关的存储单元。所以Nor Flash/SRAM/SDRAM
都是XIP
的,而Nand Flash
等就不是XIP
了。