以下内容完全参照三篇文章,特别是第一篇文章,再此表示感谢。
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了。