乍一看,这么多RAM,ROM是不是感觉大脑发懵,且听我一一道来。
在了解其他概念之前,我们要首先知道,什么是存储器
存储器
存储器是用来存储程序和各种数据信息的记忆部件
许多存储单元的集合,按单元号顺序排列。每个单元由若干二进制位(8位 16位 32位)构成,以表示存储单元中存放的数值,这种结构和数组的结构非常相似
存储器的单元地址只有一个,固定不变,而存储在其中的信息是可以更换的
那么就简单明了了,存储器就是按照二进制来存储数据的器件,存储空间叫做存储区
按存储器的使用类型可分为只读存储器(ROM)和随机存取存储器(RAM),
存储器按其存储介质特性主要分为“易失性存储器”和“非易失性存储器”两大类。其中的“易
失/非易失”是指存储器断电后,它存储的数据内容是否会丢失的特性。由于一般易失性存储器
存取速度快,而非易失性存储器可长期保存数据,它们都在计算机中占据着重要角色。在计算机
中易失性存储器最典型的代表是内存,非易失性存储器的代表则是硬盘
1、RAM:
随机存取存储器,缩写:RAM,也叫主存,是与CPU直接交换数据的内部存储器。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。
2、ROM:
只读存储器以非破坏性读出方式工作,只能读出无法写入信息。信息一旦写入后就固定下来,即使切断电源,信息也不会丢失,所以又称为固定存储器。ROM所存数据通常是装入整机前写入的,整机工作过程中只能读出,不像随机存储器能快速方便地改写存储内容。 当然,现在的ROM包括闪存就是U盘,包括固态硬盘等,都是可写入的。ROM已经不是只读的了。
RAM和ROM相比,两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会自动消失,可以长时间断电保存。 并且RAM的速度要远远高于ROM的速度。
而RAM 又分为静态随机访问存储器(Static Random Access Memory - SRAM)和动态随机存取存储器(Dynamic Random Access Memory -DRAM)两种
SRAM
SRAM,静态的随机存取存储器,又被称为静态RAM,利用双稳态电路进行存储。即使有干扰对稳态电路也没影响,所以有双稳态性,“静态”是指只要不掉电,存储在SRAM中的数据就可以一直保存,只要有电,SRAM中的数据就不会有变化。加电情况下,不需要一直刷新,数据不会丢失,
SRAM 的存储单元以锁存器来存储数据,种电路结构不需要定时刷新充电,就能保持状态
DRAM
DRAM,动态随机存取存储器,需要不断的刷新,才能保存数据。主要的作用原理是利用电容内存储电荷的多寡来代表一个二进制比特(bit)是1还是0。,有电荷代表 1,无电荷代表 0,由于在现实中电容会有漏电的现象,导致电位差不足而使记忆消失,因此除非电容经常周期性地充电,否则无法确保记忆长存。DRAM读取具有破坏性,也就是说,在读操作中会破坏内存单元行中的数据。因此,必需在该行上的读或写操作结束时,把行数据写回到同一行中。这一操作称为预充电,是行上的最后一项操作。必须完成这一操作之后,才能访问新的行,这一操作称为关闭打开的行。
SDRAM
SDRAM(Synchronous Dynamic Random Access Memory),同步动态随机存储器。同步的DRAM
DRAM可以分为同步和异步两种,这两种方式根据通讯时是否需要使用时钟信号来区分。
下图是一种利用时钟进行同步的通讯时序,它在时钟的上升沿表示有效数据,也就是SDRAM
同步是指内存工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;
动态是指存储阵列需要不断的刷新来保证数据不丢失;
随机是指数据不是线性依次存储,而是自由指定地址进行数据读写。
SDRAM的内部是一个存储阵列,你可以把它想象成一张表格。我们在向这个表格中写入数据的时候,需要先指定一个行(Row),再指定一个列(Column),就可以准确地找到所需要的“单元格”,这就是SDRAM寻址的基本原理。
SDRAM总存储容量 = L-Bank的数量×行数×列数×存储单元的容量
W9825G6KH这一款SDRAM的内存 = 4×213×29×16 = = 256Mbit,即32MB。
STM32内部有SRAM和FLASH作为内存和程序存储空间,但当程序比较大的时候就需要在芯片外部扩展存储器,可以使用FSMC方式将SRAM外扩作为内存。
在CPU中,SRAM用做cache,DRAM用做主存
DRAM 与 SRAM 的应用场合
SRAM的速度非常快,在快速读取和刷新时能够保 持数据完整性。SRAM内部采用的是双稳态电路的形式来存储数据。所以SRAM的电路结构非常复杂。制造相同容量的SRAM比DRAM的成本高的多。正因为如此,才使其发展受到了限制。因此目前SRAM基本上只用于CPU 内部的一级缓存以及内置的二级缓存。
EEPROM
EEPROM(Electrically Erasable Programmable ROM) 是电可擦除存储器。EEPROM 可以重复擦写,它的擦除和写入都是直接使用电路控制,不需要再使用外部设备来擦写。而且可以按字节为单位修
改数据,无需整个芯片擦除。现在主要使用的 ROM 芯片都是 EEPROM。
FLASH
flash(Flash Memory)闪存是非易失存储器,掉电不丢失数据,容量大,价格便宜,容量一般比 EEPROM 大得多,且在擦除时,一般以多个字节为单位
FLASH:存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据 ,同时可以快速读取数据。,可以对存储器单元块进行擦写和再编程。
可以分为NAND FLASH和NOR FLASH
A. 都是非易失存储介质。即掉电都不会丢失内容。
B. 在写入前都需要擦除。实际上NOR Flash的一个bit可以从1变成0,而要从0变1就要擦除整块。NAND flash都需要擦除。
特性是决定使用哪种Flash的根据,我这里总结出一张表:
NOR FLASH
NORFlash的读取和我们常见的SDRAM的读取是一样,用户可以直接运行装载在NORFLASH里面的代码,采取内存的随机读取技术
NAND FLASH
NAND 闪存的存储单元则采用串行结构,没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的,存储单元的读写是以页和块为单位来进行(一页包含若干字节,若干页则组成储存块, NAND 的存储块大小为 8 到 32KB ),这种结构最大的优点在于容量可以做得很大,超过 512MB 容量的 NAND 产品相当普遍, NAND 闪存的成本较低,有利于大规模普及。
具体
NOR FLASH读取速度比NAND FLASH快,但是容量不如NAND FLASH,价格上也更高,但是NOR FLASH可以芯片内执行,样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。NANDFLASH密度更大,可以作为大数据的存储。
1。NOR Flash
NOR Flash和普通的内存比较像的一点是他们都可以支持随机访问,这使它也具有支持XIP(eXecute In Place)的特性,可以像普通ROM一样执行程序。这点让它成为BIOS等开机就要执行的代码的绝佳载体。
现在几乎所有的BIOS和一些机顶盒上都是使用NOR Flash,它的大小一般在1MB到32MB之间,价格昂贵。
2。NAND Flash
NAND Flash广泛应用在各种存储卡,U盘,SSD,eMMC等等大容量设备中。它的颗粒根据每个存储单元内存储比特个数的不同,可以分为 SLC(Single-Level Cell)、MLC(Multi-Level Cell) 和 TLC(Triple-Level Cell) 三类。其中,在一个存储单元中,SLC 可以存储 1 个比特,MLC 可以存储 2 个比特,TLC 则可以存储 3 个比特。
NAND Flash 的单个存储单元存储的比特位越多,读写性能会越差,寿命也越短,但是成本会更低。
3。其他
1. 最早的手机等设备之中既有NOR Flash也有NAND Flash。NOR Flash很小,因为支持XIP,所以负责初始化系统并提供NAND Flash的驱动,类似Bootloader。而NAND Flash则存储数据和OS镜像。三星最早提出Norless的概念,在它的CPU on die ROM中固话了NAND Flash的驱动,会把NAND flash的开始一小段拷贝到内存低端作为bootloader,这样昂贵的NOR Flash就被节省下来了,降低了手机主板成本和复杂度。渐渐NOR Flash在手机中慢慢消失了。
Nand-flash存储器是flash存储器的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。Nand-flash存储器具有容量较大,改写速度快等优点,适用于大量数据的存储,因而在业界得到了越来越广泛的应用,如嵌入式产品中包括数码相机、MP3随身听记忆卡、体积小巧的U盘等。
现在Flash在嵌入式系统中的地位和pc上的硬盘类似,用于保存系统运行所必须的系统,数据和应用层序,与内存掉电后丢失不同,它在掉点后仍可永久保存.
之所以叫NOR,或者NAND,是因为组成存储的最小单元式或非门,或者与非门.
U盘一般是nand型的,这种特点是页读写,对于大数据量速度是块的,而且便宜,所以适合用来存放日常数据。而nor的特点是像EEPROM一样,具体可以达到bit的读写,因此对于小数据的access能力强,但是要读写大数据的话,速度没nand来得快,而且贵,因此nor一般用来存放mcu的执行代码。
DDR
ddr是一个内存名称,意思即双倍速率同步动态随机存储器,是内存的其中一种
SDRAM在一个时钟周期内只传输一次数据,它是在时钟的上升期进行数据传输;而DDR内存则是一个时钟周期内传输两次数据,它能够在时钟的上升期和下降期各传输一次数据,因此称为双倍速率同步动态随机存储器。
DDR内存可以在与SDRAM相同的总线频率下达到更高的数据传输率。
DDR SDRAM 有多个内存条,提供多个隔行扫描的内存访问,从而提高内存带宽。内存条是一个内存阵列,两个内存条是两个内存阵列,四个内存条是四个内存阵列,
而DDR经历到现在已经到了DDR5 每代具体的区别请看百度百科 ddr (内存名称)
SDRAM, DDR1, DDR2, DDR3以及DDR4对比表
DRAM,动态随机存取存储器,需要不断的刷新,才能保存数据。
而且是行列地址复用的,许多都有页模式。
SRAM,静态的随机存取存储器,加电情况下,不需要刷新,数据
不会丢失,而且,一般不是行列地址复用的。
SDRAM,同步的DRAM,即数据的读写需要时钟来同步。
DRAM和SDRAM由于实现工艺问题,容量较SRAM大。但是读写速度不如SRAM,但是现在,SDRAM的速度也已经很快了,时钟好像已经有150兆的了。那么就是读写周期小于10ns了。SDRAM虽然工作频率高,但是实际吞吐率要打折扣。以PC133为例,它的时钟周期是7.5ns,当CAS latency=2 时,它需要12个周期完成8个突发读操作,10个周期完成8个突发写操作。不过,如果以交替方式访问Bank,SDRAM可以在每个周期完成一个读写操作(当然除去刷新操作)。其实现在的主流高速存储器是SSRAM(同步SRAM)和SDRAM(同步DRAM)。目前可以方便买到的SSRAM最大容量是8Mb/片,最大工作速度是166MHz;可以方便买到的SDRAM最大容量是128Mb/片,最大工作速度是133MHz。
SRAM是Static Random Access Memory的缩写,中文含义为静态随机访问存储器,它是一种类型的半导体存储器。“静态”是指只要不掉电,存储在SRAM中的数据就不会丢失。这一点与动态RAM(DRAM)不同,DRAM需要进行周期性的刷新操作。 然后,我们不应将SRAM与只读存储器(ROM)和Flash Memory相混淆,因为SRAM是一种易失性存储器,它只有在电源保持连续供应的情况下才能够保持数据。“随机访问”是指存储器的内容可以以任何顺序访问,而不管前一次访问的是哪一个位置。
SRAM中的每一位均存储在四个晶体管当中,这四个晶体管组成了两个交叉耦合反向器。这个存储单元具有两个稳定状态,通常表示为0和1。另外还需要两个访问晶体管用于控制读或写操作过程中存储单元的访问。因此,一个存储位通常需要六个MOSFET。对称的电路结构使得SRAM的访问速度要快于DRAM。SRAM比DRAM访问速度快的另外一个原因是SRAM可以一次接收所有的地址位,而DRAM则使用行地址和列地址复用的结构。
SRAM不应该与SDRAM相混淆,SDRAM代表的是同步DRAM(Synchronous DRAM),这与SRAM是完全不同的。SRAM也不应该与PSRAM相混淆,PSRAM是一种伪装成SRAM的DRAM。
从晶体管的类型分,SRAM可以分为双极性与CMOS两种。从功能上分,SRAM可以分为异步SRAM和同步SRAM(SSRAM)。异步SRAM的访问独立于时钟,数据输入和输出都由地址的变化控制。同步SRAM的所有访问都在时钟的上升/下降沿启动。地址、数据输入和其它控制信号均于时钟信号相关。
DRAM:动态随机存取存储器,需要不断的刷新,才能保存数据。而且是行列地址复用的,许多都有页模式
。
SRAM:静态的随机存取存储器,加电情况下,不需要刷新,数据不会丢失,而且,一般不是行列地址复用
的。
SDRAM:同步的DRAM,即数据的读写需要时钟来同步。
主要是存储单元结构不同导致了容量的不同。一个DRAM存储单元大约需要一个晶体管和一个电容(不
包括行读出放大器等),而一个SRAM存储单元大约需要六个晶体管。DRAM和SDRAM由于实现工艺问题,容量
较SRAM大,但是读写速度不如SRAM。
一个是静态的,一个是动态的,静态的是用的双稳态触发器来保存信息,而动态的是用电子,要不时
的刷新来保持。
内存(即随机存贮器RAM)可分为静态随机存储器SRAM,和动态随机存储器DRAM两种。我们经常说的“
内存”是指DRAM。而SRAM大家却接触的很少。
SRAM其实是一种非常重要的存储器,它的用途广泛。SRAM的速度非常快,在快速读取和刷新时能够保
持数据完整性。SRAM内部采用的是双稳态电路的形式来存储数据。所以SRAM的电路结构非常复杂。制造相
同容量的SRAM比DRAM的成本高的多。正因为如此,才使其发展受到了限制。因此目前SRAM基本上只用于CPU
内部的一级缓存以及内置的二级缓存。仅有少量的网络服务器以及路由器上能够使用SRAM。
当今计算设备中使用了各种各样的易失性和非易失性内存单元,与静态随机存取存储器(SRAM)相比,动态随机存取存储器(DRAM)是最常用的架构之一,因为它具有成本效益。本文简要概述了不同类型的DRAM之间的主要区别,包括同步动态存取存储器(SDRAM)和各种类型双倍数据速率(DDR)。
什么是DRAM?
DRAM由一系列电容器组成,旨在为随机存取存储器(RAM)存储单个比特。RAM是一种可以访问数据元素的存储器,无论其在序列中的位置如何。因此,从本质上讲,访问任何数据所需的时间是恒定的。
存取晶体管和存储器、电容器的优化设计以及半导体工艺的进步使DRAM存储器价格更便宜。所以,DRAM最常用作计算机的主存储器,因为它与SRAM相比更具成本效益。几十年来,DRAM技术经历了一些重大改进,大幅降低了每比特成本、提高时钟频率并减少组件的整体尺寸,这些改变与许多变化相关,包括引入更小的DRAM单元。
DRAM单元结构
一个典型的三晶体管DRAM单元采用存取晶体管和一个存储晶体管来切换存储晶体管输入电容的打开(位值1)和关闭(位值0)。晶体管阵列连接到读取和写入的列和行,它们也分别叫做位线和字线。组件和数据线的排列方式允许使用单个存储晶体管进行写入和读取操作。
例如,一个传统的3晶体管DRAM单元(见上图)通过向M1存取晶体管的栅极发送电压来执行写入命令,该晶体管又为M3的栅极电容充电。然后写入线被驱动为低电平,存储在M3栅极电容中的电荷缓慢消散——这便是所谓的动态。
当前的技术通常会采用1个晶体管/1个电容器(1T1C)存储单元(见上图)来实现更密集的存储芯片。CMOS栅极与字线相连,而源极与位线相连。通过打开晶体管的栅极从而将电流发送到分立存储电容器来完成写入命令。读取是通过与位线共享存储在电容器中的电荷来完成的。该架构需要每次读取操作后进行重写(刷新),因为电荷共享会破坏DRAM单元中包含的信息。通常,这种充电每隔几毫秒发生一次,以补偿电容器的电荷泄露。
异步传输模式(ATS)切换
该技术的真正复杂性在于多层层次结构,其中需要跟踪和评估数千个单元的阵列以进行各种操作,例如写入、读取和刷新。当前的DRAM技术利用多路复用寻址,其中相同的地址用于行和列地址,这样便节省了空间并减少了引脚数。
通过使用行访问地址(RAS)和列访问地址(CAS)时钟执行操作。RAS验证发送到DRAM的信号实际上是行地址,而RAS验证输入列地址。在RAS的下降沿,DRAM地址引脚上的地址被输入行地址锁存器。在CAS的下降沿,地址在其下降沿输入到列地址锁存器。实质上,打开整行允许读取存储在电容器上的信息,或者允许对存储电容器进行充电/放电以进行写入。
这是通过使用许多外围电路来实现的,包括行/列锁存器、行地址缓冲器、行/列解码器、字线驱动器和位线读出放大器。在1T1C DRAM单元的情况下,读出放大器通常用作行缓冲器,以防止读取的DRAM单元中的信息丢失。感测放大器本质上是感测存储电容器是否有足够的电荷,然后接收一个低功率信号并将其放大到一个完整的逻辑值(0或1)。在信息被加载并存储到读出放大器中之前,无法访问存储器中的选定行。这就是导致CAS延迟的原因,如果所需的行在请求时未处于活动状态,则需要额外的时间。
如上图所示,第一步,当RAS为低电平时,整行中的所有单元都被其读出放大器读取,这个过程需要较长的时间。此后,改行处于活动状态,以便可以访问列以进行读取或写入。由于读出放大步骤,RAS的访问时间(读/写周期时间)通常远高于CAS。异步DRAM的总线速度通常不超过66MHz。
SDRAM与DRAM
DRAM以同步或异步模式运行。在同步模式下,所有操作(读、写、刷新)都由系统时钟控制。该系统时钟与计算机CPU的时钟速度(~133MHz)同步。这样做的原因是它实际上允许比传统DRAM更高的时钟速度(3X)。所有进出DRAM的操作都在主时钟的上升沿执行。典型的单数据速率(SDR)SDRAM时钟速率为100和133MHz。
SDRAM架构中的一个主要区别因素是内存被分成许多大小相等的部分,这些存储体可以同时执行访问命令,从而实现比普通DRAM更高的速度。如上图所示,DRAM的基本内核和操作基本相同,同步交错涉及的I/O命令接口是从DRAM芯片中单独出来的。
对SDRAM提高速度的主要贡献来自流水线概念——当一个库可能处于预充电状态,正在经历访问延迟时,另一个库可能正在进行读取,这样存储芯片就会不断地输出数据。换句话说,多库的结构允许对不同的行进行并发访问。
SDRAM与DDR
虽然单一数据速率SDRAM的时钟速率足以满足许多应用,但它们通常不足以满足多媒体应用。SDRAM的下一个迭代是双倍数据速率SDRAM(DDR SDRAM)。主要的进化来自于在主时钟的上升沿和下降沿传输数据的能力,而所有命令和操作只在时钟的上升沿发生——每个时钟周期有效地发送两倍的数据。
这是通过预读取操作实现的,在该操作中,宽内部总线同时预取两个数据位以突发在I/O引脚上输出两个等宽的字,也称为2位预取。这实质上使数据速率翻倍,而不会增加存储单元的功耗。还应该注意的是,DDR架构的电源效率有显著提高,其中DDR2电压为2.5V,DDR3在1.5V到1.65V,DDR4在1.2V。这是由于器件的电源管理电路进行了优化,并且能够在不增加功耗的情况下更智能地提高数据传输频率。功耗降低使DDR模块成为可以用电池供电的计算设备(如笔记本电脑)更理想的选择。
DDR、DDR2、DDR3······又有什么区别?
DDR(DDR2、DDR3、DDR4)演进的基础组件和功能/操作保持不变,但时钟速度增加了差异化因素。例如,DDR2 RAM为DDR SDRAM接口添加了2倍时钟倍频器,从而在保持相同总线速度的同时使数据传输速度翻倍。通过这种方式,从内存阵列到I/O缓冲区采用了「4位预取」。同样,DDR3模块预取8位数据,DDR4模块预取16位数据。
虽然易失性DRAM架构的核心基本保持不变,但片外的附加命令接口已经发展为增加容量并降低了每比特成本。DRAM性能的这种重大发展可能有助于数据流水线以及I/O缓冲区频率的增加。
Cache:高速缓冲存储器,是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多, 接近于CPU的速度。
在计算机存储系统的层次结构中,介于中央处理器和主存储器之间的高速小容量存储器。它和主存储器一起构成一级的存储器。高速缓冲存储器和主存储器之间信息的调度和传送是由硬件自动进行的。
某些机器甚至有二级三级缓存,每级缓存比前一级缓存速度慢且容量大。
主要由三大部分组成:
Cache存储体:存放由主存调入的指令与数据块。
地址转换部件:建立目录表以实现主存地址到缓存地址的转换。
替换部件:在缓存已满时按一定策略进行数据块替换,并修改地址转换部件。
为什么要Cache?
答:由于CPU工作的速度比RAM读写速度快,CPU读写RAM时需要花费时间等待RAM进行读写,造成CPU工作速度下降。为了提高CPU读写程序和数据的速度,在RAM和CPU之间增加了高速缓存部件。
Cache的特点是:读写速度快、存储容量小、价格高、断电后内容丢失。
这里用一句话概括,CPU的数据处理速度,远远高于从内存中读取数据的速度,也就是说,如果CPU直接从内存中读取数据进行处理,CPU很长一段时间会用在等待数据读取完毕,这显示十分浪费CPU资源的。所以通过cache来缓存一部分数据,CPU读取数据时,先从cache里面找,从而提高数据处理的效率
为什么从cache里面读取就能提高cpu的数据处理效率?
..这是由于这个内存和cache本身的存储性能有关:
我们常说的内存指的是DRAM,SRAM的是目前最快的存储设备,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓冲。
cache存在的合理性
从上面的知识,我们可以知道,从cache读取数据要比内存中读取块,但是cache终究只有很小一块存储空间,那凭什么通过这么一小块空间,就能大幅度提高数据读取的能力呢?
Cache 中存放了内存中的一部分数据,CPU 在访问内存时要先访问 Cache,若 Cache 中有需要的数据就直接从 Cache 中取出,若没有则需要从内存中读取数据,并同时把这块数据放入 Cache 中。但是由于程序的局部性原理,在一段时间内,CPU 总是能从 Cache 中读取到自己想要的数据。
http://t.csdn.cn/8gBOS
http://t.csdn.cn/Pf1oH
一文看懂SDRAM、DRAM和DDR的差别|ddr|sdram|电容器|dram (qq.com)
什么是cache?为什么需要cache?cache存在的合理性_胡涂涂~的博客-CSDN博客_为什么要增加cache