logo资料库

常见存储器概念辨析ROM、SDRAM、RAM、DRAM、SRAM、FLASH的区别.doc

第1页 / 共32页
第2页 / 共32页
第3页 / 共32页
第4页 / 共32页
第5页 / 共32页
第6页 / 共32页
第7页 / 共32页
第8页 / 共32页
资料共32页,剩余部分请下载后查看
flash的详细介绍(nand nor flash)
常见存储器概念辨析:ROM、SDRAM、RAM、DRAM、SRAM、FLASH 的区别 存储原理 RAM(Random Access Memory )随机存取存储器,主要的作用就是存储代码和数据 供 CPU 在需要的时候调用。 但是这些数据并不是像用袋子盛米那么简单,更像是图书馆中用有格子的书架存放书籍 一样,不但要放进去还要能够在需要的时候准确的调用出来,虽然都是书但是每本书是不同 的。 对于 RAM 等存储器来说也是一样的,虽然存储的都是代表 0 和 1 的代码,但是不同 的组合就是不同的数据。 让我们重新回到书和书架上来,如果有一个书架上有 10 行和 10 列格子(每行和每列 都有 0-9 的编号),有 100 本书要存放在里面,那么我们使用+个行的编号+个列的编号 就能确定某一本书的位置。如果已知这本书的编号 87,那么我们首先锁定第 8 行,然后找 到第 7 列就能准确的找到这本书了。 在 RAM 存储器中也是利用了相似的原理。 现在让我们回到 RAM 存储器上,对于 RAM 存储器而言,数据总线是用来传入数据或 者传出数据的。因为存储器中的存储空间是如果前面提到的存放图书的书架一样通过一定的 规则定义的,所以我们可以通过这个规则来把数据存放到存储器上相应的位置,而进行这种 定位的工作就要依靠地址总线来实现了。 对于 CPU 来说,RAM 就象是一条长长的有很多空格的细线,每个空格都有一个唯一 的地址与之相对应。 如果 CPU 想要从 RAM 中调用数据,它首先需要给地址总线发送地址数据定位要存取 的数据,然后等待若干个时钟周期之后,数据总线就会把数据传输给 CPU。 下面的示意图可以帮助你很好的理解这个过程。 上图中的小园点代表 RAM 中的存储空间,每一个都有一个唯一的地址线同它相连。 当地址解码器接收到地址总线送来的地址数据之后,它会根据这个数据定位 CPU 想要 调用的数据所在的位置,然后数据总线就会把其中的数据传送到 CPU。
上面所列举的例子中,CPU 在一行数据中每次存取一个字节的数据,但是在现实世界 中是不同的,通常 CPU 每次需要调用 32bit 或者是 64bit 的数据(这是根据不同计算机系 统的数据总线的位宽所决定的)。如果数据总线是 64bit 的话,CPU 就会在一个时间中存 取 8 个字节的数据,因为每次还是存取 1 个字节的数据,64bit 总线将不会显示出来任何 的优势,工作的效率将会降低很多。 从“线”到“矩阵” 如果 RAM 对于 CPU 来说仅仅是一条“线”的话,还不能体现实际的运行情况。因为如 果实际情况真的是这样的话,在实际制造芯片的时候,会有很多实际的困难,特别是在需要 设计大容量的 RAM 的时候。 所以,一种更好的能够降低成本的方法是让存储信息的“空格”排列 为很多行,每个“空 格”对应一个 bit 存储的位置。这样,如果要存储 1024bits 的数据,那么你只要使用 32x32 的矩阵就能够达到这个目的了。很明显,一个 32x32 的矩阵比一个 1024bit 的行设备更紧 凑,实现起来也更加容易。 请看下图。 知道了 RAM 的基本结构是什么样子的,我们就下面谈谈当存储字节的过程是怎样的。 上面的示意图 显示的也仅仅是最简单状态下的情况,也就是当内存条上仅仅只有一个 RAM 芯片的情况。 对于 X86 处理器,它通过地址总线发出一个具有 22 位二进制数字的地址编码,其中 11 位是行地址,另外 11 位是列地址,这是通过 RAM 地址接口进行分离的。
行地址解码器(row decoder)将会首先确定行地址,然后列地址解码器(column decoder) 将会确定列地址,这样就能确定唯一的存储数据的位置,然后该数据就会通过 RAM 数据接 口将数据传到数据总线。 另外,需要注意的是,RAM 内部存储信息的矩阵并不是一个正方形的,也就是行和列 的数目不是相同的,行的数目比列的数目少。 上面的示意图 粗略的概括了一个基本的 SRAM 芯片是如何工作的。 SRAM 是“static RAM(静态随机存储器)”的简称,之所以这样命名是因为当数据被存入 其中后不会消失。 DRAM 动态随机存储器不同,DRAM 必须在一定的时间内不停的刷新才能保持其中存 储的数据。 一个 SRAM 单元通常由 4-6 只晶体管组成,当这个 SRAM 单元被赋予 0 或者 1 的 状态之后,它会保持这个状态直到下次被赋予新的状态或者断电之后才会更改或者消失。 SRAM 的速度相对比较快,而且比较省电,但是存储 1bit 的信息需要 4-6 只晶体管制 造成本太高了。 DRAM 只要 1 只晶体管就可以实现。 SRAM 芯片 早期的 SRAM 芯片采用了 20 线双列直插(DIP:Dual Inline Package)封装技术, 它们之所以具有这么多的针脚,是因为它们必须: 1) 每个地址信号都需要一根信号线; 2) 一根数据输入线和一根数据输出线;
3) 部分控制线(Write Enable, Chip Select); 4) 地线和电源线。 上图显示的是 SRAM 芯片,但是并不是下面示意图中的 SRAM 芯片。 下面的是一个 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 引 脚应该没有激活,所以 SRAM 知道它不应该执行写入操作; 2) 激活/CS,选择该 SRAM 芯片; 3) 激活/OE 引脚,让 SRAM 知道是读取操作; 第三步之后,要读取的数据就会从 DOut 引脚传输到数据总线。 写入 1bit 数据的过程如下: 1) 通过地址总线确定要写入信息的位置,确定/OE 引脚没有被激活; 2) 通过数据总线将要写入的数据传输到 Din 引脚; 3) 激活/CS 引脚,选择 SRAM 芯片; 4) 激活/WE 引脚,通知 SRAM 知道要进行写入操作。 经过上面的四个步骤之后,需要写入的数据就已经放在了需要写入的地方。 DRAM 芯片 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 刷新 我们已经提到过,DRAM 同 SRAM 最大的不同就是不能比较长久的保持数据,这项 特性使得这种存储介质对于我们几乎没有任何的作用。但是 DRAM 设计师利用刷新的技术 使得 DRAM 成为了现在对于我们最有用处的存储介质。 DRAM 内仅仅能保持其内存储的电荷非常短暂的时间,所以它需要在其内的电荷消失 之前就进行刷新直到下次写入数据或者计算机断电才停止。 每次读写操作都能刷新 DRAM 内的电荷,所以 DRAM 就被设计为有规律的读取 DRAM 内的内容。这样做有下面几个好处。 1) 仅仅使用/RAS 激活每一行就可以达到全部刷新的目的; 2) 用 DRAM 控制器来控制刷新,这样可以防止刷新操作干扰有规律的读写操作。 在文章的开始,曾经说过一般行的数目比列的数据少,原因就是:行越少用户刷新的时 间就会越少。 ROM、RAM 的区别: ROM(只读存储器或者固化存储器) RAM(随机存取存储器) RAM 和 ROM 指的都是半导体存储器, RAM 是 Random Access Memory 的缩写即随机存 取存储器,ROM 是 Read Only Memory 的缩写。RAM 通常在掉电之后就丢失数据,典型 的 RAM 就是计算机的内存,而 ROM 在系统停止供电的时候仍然可以保持数据。 1)一种称为静态 RAM(Static RAM/SRAM),即 SRAM ( SRAM 是 Static RAM 有两大类 Random Access Memory 的缩写,中文含义为静态随机访问存储器,“静态”是指只要不掉 电,存储在 SRAM 中的数据就不会丢失。“随机访问”是指存储器的内容可以以任何顺序访 问,而不管前一次访问的是哪一个位置。) 速度非常快,是目前读写最快的存储设备了,但 是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如 CPU 的一级缓冲,二级缓冲。从 晶体管的类型分,SRAM 可以分为双极性与 CMOS 两种。从功能上分,SRAM 可以分为异 步 SRAM 和同步 SRAM(SSRAM)。异步 SRAM 的访问独立于时钟,数据输入和输出都 由地址的变化控制。同步 SRAM 的所有访问都在时钟的上升/下降沿启动。地址、数据输入 2)另一种称为动态 RAM(Dynamic RAM/DRAM), 和其它控制信号均于时钟信号相关 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 (SDRAM 代表的是同步 DRAM(Synchronous DRAM))是基本一样的,不同之处在于它 可以在一个时钟读写两次数据,这样就使得数据传输速度加倍了。这是目前电脑中用得最多 的内存,而且它有着成本优势,事实上击败了 Intel 的另外一种内存标准-Rambus DRAM。 在很多高端的显卡上,也配备了高速 DDR RAM 来提高带宽,这可以大幅度提高 3D 加速卡 的像素渲染能力。SRAM 比 DRAM 访问速度快的另外一个原因是 SRAM 可以一次接收所有 的地址位,而 DRAM 则使用行地址和列地址复用的结构。SRAM 不应该与 SDRAM 相混淆, SDRAM 代表的是同步 DRAM(Synchronous DRAM),这与 SRAM 是完全不同的。SRAM 也不应该与 PSRAM 相混淆,PSRAM 是一种伪装成 SRAM 的 DRAM。
分享到:
收藏