对于CPU 而言,RAM 就象是一条长长的有很多空格的细线,每个空格都有一个唯一的地址与之相对应。如果CPU 想要从RAM 中调用数据,它首先需要给地址总线发送要存取数据的地址信息,然后等待若干个时钟周期之后,数据总线就会把数据传送给CPU。以下为数据读取示意图。
图中的小园点代表RAM 中的存储空间,每个存储空间都有一个唯一的地址线同它相连。当地址解码器接收到地址总线送来的地址数据之后,它会据此定位CPU 想要调用的数据存储位置,然后通过数据总线将其中的数据传送到CPU。
如果RAM 对于CPU 来说仅仅是一条“线”的话,还不能体现实际的运行情况。如果实际情况即是如此,在实际制造芯片的时候,会有很多实际的困难,特别是在需要设计大容量的RAM 的时候。一种更好的能够降低成本的方法是让存储信息的“空格”排列为很多行,每个“空格”对应一个bit 存储的位置。这样,如果要存储1024bits 的数据,只需使用32x32 的矩阵即可。一个32x32 的矩阵显然比一个1024bit 的行设备更紧凑,实现起来也更容易。如下图所示。
对于X86 处理器,它通过地址总线发出一个具有22 位二进制数字的地址编码,其中11 位是行地址,另外11 位是列地址,其通过RAM 地址接口进行分离。行地址解码器(row decoder)会首先确定行地址,然后列地址解码器(column decoder)将确定列地址,这样就能确定唯一的存储数据的位置,然后该数据就会通过RAM 数据接口将数据传到数据总线。
二、SRAM 是“static RAM(静态随机存储器)”的简称,数据存入其中后,掉电后亦不会丢失。一个SRAM 单元通常由4-6 只晶体管组成,当这个SRAM 单元被赋予0 或1 的状态之后,它会保持这个状态直到下次被赋予新的状态或者断电之后才会更改或者消失。SRAM 的速度相对比较快且比较省电,但存储1bit 的信息需要4-6 只晶体管导致制造成本太高了。
早期的SRAM 芯片采用了20 线双列直插(DIP:Dual Inline Package)封装技术,它们之所以具有这么多的针脚,是因为它们必须:1) 每个地址信号都需要一根信号线;
2) 一根数据输入线和一根数据输出线;
3) 部分控制线(Write Enable, Chip Select);
4) 地线和电源线。
下面是一个16K x 1-bit SRAM 芯片的针脚功能示意图。
1) A0-A13 是地址输入信号引脚;
2) /CS 是芯片选择引脚,在一个实际的系统中,一般具有很多片SRAM 芯片,所以需要选择究竟从那一片SRAM 芯片中写入或者读取数据;3) /WE 是写入启用引脚,当SRAM 得到一个地址之后,它需要知道进行什么操作,究竟是写入还是读取,/WE 就是告诉SRAM 要写入数据;
4) Vcc 是供电引脚;
5) Din 是数据输入引脚;
6) Dout 是数据输出引脚;
7) GND 是接地引脚;
8) Output Enable(OE),有的SRAM 芯片中也有这个引脚,但是上面的图中并没有,这个引脚同/WE 引脚的功能是相对的,它是让SRAM 知道要进行读取操作而不是写入操作。
从Dout 引脚读取1bit 数据的步骤如下:
1) 通过地址总线把要读取的bit 的地址传送到相应的读取地址引脚,这个时候/WE 引脚没有激活,因此不应执行写入操作;
2) 激活/CS,选择SRAM 芯片;
3) 激活/OE 引脚,让SRAM 知道是读取操作;
第三步之后,要读取的数据就会从DOut 引脚传输到数据总线。写入1bit 数据的过程如下:
1) 通过地址总线确定要写入信息的位置,确定/OE 引脚没有被激活;
2) 通过数据总线将要写入的数据传输到Din 引脚;
3) 激活/CS 引脚,选择SRAM 芯片;
4) 激活/WE 引脚,通知SRAM 知道要进行写入操作。
经过上面的四个步骤之后,需要写入的数据就已经放在了需要写入的地方。
DRAM 为动态随机存储器。与SRAM不同,DRAM 必须在一定的时间内不停的刷新才能保持其中存储的数据不会丢失。DRAM 只要1 只晶体管就可以实现。
DRAM 相对于SRAM 来说更加复杂,因为在DRAM 存储数据的过程中需要对于存储的信息不停的刷新,这也是它们之间最大的不同。让我们看看DRAM 芯片的针脚的作用。最早、最简单也是最重要的一款DRAM 芯片是Intel 在1979 年发布的2188 ,这款芯片是16Kx1 DRAM 18 线DIP 封装。“16K x 1 ”的部分意思告诉我们这款芯片可以存储16384 个bit 数据,在同一个时期可以同时进行1bit 的读取或写入操作。
由示意图可看出DRAM 和SRAM 之间有着明显的不同。首先,地址引脚由14 根变为7 根,那么这颗16K DRAM 是如何完成同16K SRAM 一样的工作的呢?答案很简单,DRAM 通过DRAM 接口把地址一分为二,然后利用两个连续的时钟周期传输地址数据,这样就达到了使用一半的针脚实现同SRAM 同样的功能的目的,这种技术被称为多路技术(multiplexing)。
前面我们曾经介绍过,存储1bit 的数据SRAM 需要4~6 个晶体管,但DRAM 仅仅需要1 个晶体管,那么这样同样容量的SRAM 的体积比DRAM 大至少4 倍。这样就意味着你没有足够空间安放同样数量的引脚(因为针脚并没有因此减少4 倍)。当然为了安装同样数量的针脚,也可以把芯片的体积加大,但是这样就提高芯片的生产成本和功耗。所以减少针脚数目也是必要的,对于现在的大容量DRAM 芯片,多路寻址技术已经是必不可少的了。当然,多路寻址技术也使得读写的过程更加复杂了,这样在设计的时候不仅仅DRAM 芯片更加复杂了,DRAM 接口也要更加复杂。DRAM 芯片内部结构示意图如下:
在上面的示意图中,可看到在DRAM 结构中相对于SRAM 多了两个部分:
1) 由/RAS (Row Address Strobe :行地址脉冲选通器)引脚控制的行地址门闩线路(Row Address Latch);
2) 由/CAS(Column Address Strobe :列地址脉冲选通器)引脚控制的列地址门闩线路(Column Address Latch)。
DRAM 读取过程如下:
1) 通过地址总线将行地址传输到地址引脚;
2) /RAS 引脚被激活,这样行地址被传送到行地址门闩线路中;
3) 行地址解码器根据接收到的数据选择相应的行;
4) /WE 引脚被确定不被激活,所以DRAM 知道它不会进行写入操作;
5) 列地址通过地址总线传输到地址引脚;
6) /CAS 引脚被激活,这样列地址被传送到行地址门闩线路中;
7) /CAS 引脚同样还具有/OE 引脚的功能,所以这个时候Dout 引脚知道需要向外输出数据;
8) /RAS 和/CAS 都不被激活,这样就可以进行下一个周期的数据操作了。
DRAM 的写入的过程和读取过程是基本一样的,只要把第4 步改为/WE 引脚被激活就可以了。
前面提到过,DRAM 同SRAM 的最大不同之处在于不能比较长久的保持数据,这项特性使得这种存储介质对我们几乎没有任何作用。但DRAM 设计师利用刷新技术使得DRAM 成为现在对于我们最有用处的存储介质之一。DRAM 内仅仅能保持其内存储的电荷非常短暂的时间,所以它需要在其内的电荷消失之前就进行刷新直到下次写入数据或者计算机断电才停止。每次读写操作都能刷新DRAM 内的电荷,所以DRAM 就被设计为有规律的读取DRAM 内的内容。这样做有下面几个好处。
1) 仅仅使用/RAS 激活每一行就可以达到全部刷新的目的;
2) 用DRAM 控制器来控制刷新,这样可以防止刷新操作干扰有规律的读写操作。
三、简单介绍ROM、RAM及FLASH的区别:
ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。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是基本一样的,不同之处在于它可以在一个时钟读写两次数据,这样就使得数据传输速度加倍了。这是目前电脑中用得最多的内存,而且它有着成本优势,事实上击败了Intel的另外一种内存标准-Rambus DRAM。在很多高端的显卡上,也配备了高速DDR RAM来提高带宽,这可以大幅度提高3D加速卡的像素渲染能力。
ROM也有很多种,PROM是可编程的ROM,PROM和EPROM(可擦除可编程ROM)两者区别是,PROM是一次性的,也就是软件灌入后,就无法修改了,这种是早期的产品,现在已经不可能使用了,而EPROM是通过紫外光的照射擦出原先的程序,是一种通用的存储器。另外一种EEPROM是通过电子擦除,价格很高,写入时间很长,写入速度很慢。
FLASH存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦出可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据 (NVRAM的优势),U盘和MP3里用的就是这种存储器。在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来 Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader以及操作系统或者程序代码或者直接当硬盘使用(U盘)。
目前Flash主要有两种NOR Flash和NADN Flash。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。
数码闪存卡:主流数码存储介质
数码相机、MP3播放器、掌上电脑、手机等数字设备是闪存最主要的市场。手机领域以NOR型闪存为主、闪存芯片被直接做在内部的电路板上,但数码相机、MP3播放器、掌上电脑等设备要求存储介质具备可更换性,这就必须制定出接口标准来实现连接,闪存卡技术应运而生。闪存卡是以闪存作为核心存储部件,此外它还具备接口控制电路和外在的封装,从逻辑层面来说可以和闪盘归为一类,只是闪存卡具有更浓的专用化色彩、而闪盘则使用通行的USB接口。由于历史原因,闪存卡技术未能形成业界统一的工业标准,许多厂商都开发出自己的闪存卡方案。目前比较常见的有CF卡、SD卡、SM卡、MMC卡和索尼的 Memory Stick记忆棒。
CF卡(CompactFlash)
CF卡是美国SanDisk 公司于1994引入的闪存卡,可以说是最早的大容量便携式存储设备。它的大小只有43mm×36mm×3.3mm,相当于笔记本电脑的PCMCIA卡体积的四分之一。CF卡内部拥有独立的控制器芯片、具有完全的PCMCIA-ATA 功能,它与设备的连接方式同PCMCIA卡的连接方式类似,只是CF卡的针脚数多达五十针。这种连接方式稳定而可靠,并不会因为频繁插拔而影响其稳定性。
CF卡没有任何活动的部件,不存在物理坏道之类的问题,而且拥有优秀的抗震性能, CF卡比软盘、硬盘之类的设备要安全可靠。CF卡的功耗很低,它可以自适应3.3伏和5伏两种电压,耗电量大约相当于桌面硬盘的百分之五。这样的特性是出类拔萃的,CF卡出现之后便成为数码相机的首选存储设备。经过多年的发展,CF卡技术已经非常成熟,容量从最初的4MB飙升到如今的3GB,价格也越来越 平实,受到各数码相机制造商的普遍喜爱。CF卡目前在数码相机存储卡领域的市场占有率排在第二位。
MMC卡 (MultiMediaCard)
MMC卡是SanDisk公司和德国西门子公司于1997年 合作推出的新型存储卡,它的尺寸只有32mm×24mm×1.4mm、大小同一枚邮票差不多,其重量也多在2克以下,并且具有耐冲击、可反复读写30万次以上等特点。从本质上看,MMC与CF其实属于同一技术体系,两者结构都包括快闪存芯片和控制 器芯片,功能也完全一样,只是MMC卡的尺寸超小,而连接器也必须做在狭小的卡里面,导致生产难度和制造成本都很高、价格较为昂贵。MMC主要应用与移动电话和MP3播放器等体积小的设备。
(资料均来源于互联网,侵权请声明,谢谢)