什么是内存
- 物理上,我们购买的内存条是很复杂的,内存条是由几个内存芯片组成的,这里我们是一个内存芯片为研究单位
- 内存芯片里,包含了地址线,存储器(存储元件,存储矩阵,存储体),片选线,译码器,控制器等等
地址线,在现在的intel X86 架构中,计算机的芯片的最大处理位数与通用寄存器的处理位数是32位,
以前的x86 最多只能支持 4GB 的内存,因为以前的地址线的位数也是32位。
32 位代表由32位二进制数组成,比如2 位 01 能表示 00--0 01--1 10--2 11--3,
那么2 位就可以表示0 - 3,一共4个数字,也就是 2 ^ 2 = 4
32 位能表示的数字是 2 ^ 32 = 2 ^ 30 * 4 = 4 GB,1 KB = 1024B = 1024 = 2 ^ 10个数字
1 GB = 1024 * 1024 * 1KB = 2 ^ 30 个数字, 那么 2 ^ 32 就是 4GB 了
那么地址线的位数 与 内存大小的关系又是什么样的呢
假如 CPU 需要将 123 存到 2 ^ 32 - 1 的地址中,也就是 4GB 内存的最后一个地方
现在你买了一条 8GB 的内存条,虽然你的内存是 8GB,但 cpu 的地址最多只能表示为 2 ^ 32 - 1位这么大,
永远也无法将数据存到 2 ^ 32 + 1的位置上,所以地址线为 32 位的计算机最多只能支持 4GB 的内存
多了也没用,白白浪费 4GB
为什么我们现在的电脑是 X86_64 也可以支持8 GB 或者 16 GB 呢?
首先,我们的电脑是 X86_64 也就是 X86 的 64 位拓展版本,非 X86
X86_64 这里的通用寄存器,也即是存储的地址的大小为 64 位,所以理论最大可以支持
2 ^ 64 = 16EB = 2 ^ 34 GB 大小的内存
- 在本书中,SDRAM是一种存储器芯片的数据读写方式,是一种同步读写数据的方式,英文名为 synchronous Dynamic Random Access Memory.
- 该方式的关键由两点组成,一点是使用外部时钟信号控制,一点是使用burst传送方式(文中译为突发传送方式)
- burst 方式,只要给出数据的首地址以及长度,就可以直接进行读取,也就是批量地,自动地读取
- 非 burst 方式,给出数据的每一个地址,然后进行读取
- 文中的 突发传送 真是让我理解了好一会儿,对于一些名词,还是直接使用英文就好,不用硬翻
wiki 中对于burst 的解释
In telecommunication, a burst transmission or data burst is the broadcast of a relatively high-bandwidth transmission over a short period.
在远程通信中,burst 传输 或 数据burst 是指在短时期内广播相对高带宽的传输.
Burst transmission can be intentional, broadcasting a compressed message at a very high data signaling rate within a very short transmission time.
This technique is popular with the military and spies, who both wish to minimize the chance of their radio transmissions being detected,
a low probability of intercept (LPI) and low probability of recognition (LPR).
战争时期,军方和间谍会非常希望发送信息的时间尽可能短,避免被敌方检测和拦截,也就是LPI(low probablity) 和 LPR(low probaility of recognition)
把在非常短的传输时间内将非常大的数据进行压缩然后广播,就称为突发传输(burst transmission).
- 英文burst 为 突发,爆发的含义,所以我将 burst传输模式 解释为 爆发式数据传输模式
以下是SDRAM的数据传送过程 (从cpu发出信号到数据发出到cpu)
- 在时钟信号的低频率向高频率转换时(上升沿),cpu发出的地址信号开始生效
- 内存拿到地址信息,而后激活该存储单元
- 经过一定的延迟后,数据开始传送
- 数据的长度保存在寄存器(缓冲器)中,直到数据传输完毕
书中的描述
- 在clock 信号上升沿片选信号(CS)和行地址信号选通信号(RAS)有效(生效);
- 经过一段延时
t
(RAS to CAS delay) 后,列选通信号CAS有效,并同时发出读或写命令,此时行,列地址已被确定,已选中具体的存储单元; - 对于读操作,再经过一个CAS 潜伏期后,输出数据开始有效,其后的每个时钟都有一个或多个数据从从总线传出直到完成突发长度BL指定的所有数据的传送。
- 是不是很难理解?
- RAS Row Access strobe, 行访问脉冲
- CAS Column Access strobe,列访问脉冲
- CS chip select 芯片选择
- CAS 潜伏期 CAS latency 简称 CL 也就是 CAS延迟,为什么要翻译成潜伏期,为什么?