- 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)