计算机原理学习 内存工作原理.pdfVIP

  • 40
  • 0
  • 约9.89千字
  • 约 15页
  • 2018-01-10 发布于浙江
  • 举报
计算机原理学习 内存工作原理

计算机原理学习之内存工作原理 1. 内存工作原理 CPU 和内存是计算机中最重要的两个组件,前面已经知道了CPU 是如何工作的, 上一篇也介绍了内存采用的DRAM 的存储原理。CPU 工作需要知道指令或数据的内存地 址,那么这样一个地址是如何和内存这样一个硬件联系起来的呢?现在就看看内存到的是 怎么工作的。 1.1 DRAM 芯片结构 上图是DRAM 芯片一个单元的结构图。一个单元被分为了N 个超单元(可以叫做cell ), 每个单元由M 个DRAM 单元组成。我们知道一个DRAM 单元可以存放1bit 数据,所以描 述一个DRAM 芯片可以存储N*M 位数据。上图就是一个有16 个超单元,每个单元8 位的 存储模块,我们可以称为16*8bit 的DRAM 芯片。而超单元(2,1 )我们可以通过如矩阵的 方式访问,比如data = DRAM[2.1] 。这样每个超单元都能有唯一的地址,这也是内存地址 的基础。 每个超单元的信息通过地址线和数据线传输查找和传输数据。如上图有2 根地址线和8 根 数据线连接到存储控制器(注意这里的存储控制器和前面讲的北桥的内存控制器不是一回 事),存储控制器电路一次可以传送M 位数据到DRAM 芯片或从DRAM 传出M 位数据。 为了读取或写入【i,j】超单元的数据,存储控制器需要通过地址线传入行地址i 和列地址 j 。这里我们把行地址称为RAS(Row Access Strobe)请求, 列地址称为(Column Access Strobe)请求。 但是我们发现地址线只有2 为,也就是寻址空间是0-3 。而确定一个超单元至少需要4 位 地址线,那么是怎么实现的呢? 解决这个问题采用的是分时传送地址码的方法。看上图我们可以发现在DRAM 芯片内部有 一个行缓冲区,实际上获取一个cell 的数据,是传送了2 次数据,第一次发送RAS,将一 行的数据放入行缓冲区,第二期发送CAS,从行缓冲区中取得数据并通过数据线传出。这 些地址线和数据线在芯片上是以管脚(PIN)与控制电路相连的。将DRAM 电路设计成二 维矩阵而不是一位线性数组是为了降低芯片上的管脚数量。入上图如果使用线性数组,需 要4 根地址管脚,而采用二维矩阵并使用RAS\CAS 两次请求的方式只需要2 个地址管 脚。但这样的缺点是增加了访问时间。 1.2 内存模块 内存模块也就是我们常说的内存条。我们在购买内存是经常会听到我这个内存采用的是什 么颗粒,如下左图,我们看到内存PCB 上的一块块的就是内存颗粒。也就是我们DRAM 芯片。通过管脚和PCB 连接。不同厂商,不同类型的内存可以的大小,管脚,性能,封装 都不一样,但是原理都是一样。这里我们就不展开介绍了。而下有图展示了一个1M*4bit 的DRAM 芯片的管脚图。 对于一个内存颗粒来说,它的容量和字长是有限的,所以我们使用内存是会把多个颗粒组 成内存模块来对内存进行字长和容量的扩展。目前的内存一般内存条上面会有多颗内存颗 粒,比如一条64M 的内存可能是由8 个8M*8bit 的SDRAM 内存颗粒组成。 1.2.1 字长位数扩展 位扩展的方法很简单,只需将多片RAM 的相应地址端、读/写控制端和片选信号CS 并接 在一起,而各片RAM 的I/O 端并行输出即可。如上图,我们采用了8 个DRAM 芯片分, 别编号为0-7,每个超单元中存储8 位数据。在获取add (row=i,col=j )地址的数据的时 候,从每个DRAM 芯片的【i, j】单元取出一个字节的数据,这样传送到CPU 的一共是 8*8b = 64b 的数据。我们通过8 个8M*8b 的内存颗粒扩展为了8M*64b 的内存模块。 1.2.2 字存储容量扩展 RAM 的字扩展是利用译码器输出控制各片RAM 的片选信号CS 来实现的。RAM 进行字扩 展时必须增加地址线,而增加的地址线作为高位地址与译码器的输入相连。同时各片RAM 的相应地址端、读/写控制端、相应I/O 端应并接在一起使用。下图是我们通过4 个2M*8b 的内存颗粒,将内存容量扩展到了8M,字长为8 位。 最后,内存通过主板上的内存插槽DIMM 和内存总线相连接。对于不同内存比如SDRAM 和DDR 他们内存金手指的定义是不同的。这里就不需要详细介绍了。 2. 内存编址 前面我们知道了DRAM 颗粒以及内存模块是如何扩展字长和容量的。一个内存可能是8 位,也可能是64 位,容量可能是1M,也可能是1G。那么内存是如何编地的呢?和地址 总线,计算机字长之间又有什么关系呢? 2.1 字长 计算机在同一

文档评论(0)

1亿VIP精品文档

相关文档