RAM
前言:学习了一下 RAM 相关的知识,写下来总结一波。
不知道一些名词,你怎么能叫学会了一些知识呢?
搞懂一些名词
image看到上面的图了吗?
-
首先内存条的学名——Dual Inline Memory Module,简称 DIMM
-
每一面称为一个 rank,所以两面就有两个 rank
-
每个 rank 里面包含若干个 bank 组(内存颗粒,图中标128MB的黑方块)也叫 chip
-
每个 bank 组 / chip 包含多个 bank(有时候也叫逻辑 Bank,Logical Bank,L-Bank)
-
每个 bank 可以被认为是一个表格,表格里面的 cell 存储 bit,软件对数据的读写就是操作这样的一个个 cell。具体来说:向图中的那样,一个 bank 组有 8 个逻辑 bank。而每个 bank 组有 16384 行和 1024 列。读和写都是同时读或写 8 位。(后面会举一个简单的例子)
搞懂一些最基本的 RAM 类型
啥是 DRAM
DRAM 是 Dynamic RAM。他经常用作在上面那个大图中的黑框框存储数据的结构。
数据记忆在电容(capacitor)上,T(Transistor) 为晶体管控制数据进出。
读写时:在字线(address line)上加高电平,使晶体管打通。
-
写 0 时,在数据线(bit line)上加低电平,使电容放电
-
写 1 时,在数据线(bit line)上加高电平,使电容充电
-
读出时,放大器(sense-amplifier)决定电容器中的电荷电平。如果它超过 50%,则将其读为 1;否则它将其读为 0。
DRAM 的一个重要特点是,数据以电荷的形式保存在电容中,电容的放电使得电荷通常只能维持几个毫秒,因此要定时刷新(读出后重新写回),按行进行(所有芯片中的同一行一起进行),刷新时间 通常只占 1%~2% 左右
计数器根据以访问的顺序访问的行跟踪刷新序列。完成所有这些操作所需的时间很短,以纳秒表示(亿分之一秒)内存芯片速率为 70ns 意味着完全读取和重新充电每个记忆单元需要 70 纳秒。
优点:
- 电路元件少,功耗小,集成度高,用于构建主存存储
缺点:
- 速度慢、破坏性读出(需要读取后再生)、需要定时刷新
再提一嘴内存记忆单元的访问:
访问记忆单元的时候一些支持它的其他特定电路。这些电路执行以下功能:
- 辨别每一行每一行和每一列(行地址和列地址)
-
跟踪刷新序列(计数器)
-
从记忆单元读取和重新存储数据时(灵敏放大器 sense amplifier)
-
告诉记忆单元是否需要充电(写入启用)
啥是 SRAM
SRAM 是 Static RAM。它经常做读写速度快的存储器(比如 Row Buffer,cache 后面会举个例子)。
上图是触发器( flip-flop )的一种形式,用来做 SRAM。用于内存记忆单元的触发器需要四个或六个晶体管以及一些布线,但从不必刷新。这使得静态 RAM 明显快于动态 RAM。然而,因为它具有更多部件,所以静态存储器单元在芯片上占用比动态存储器单元更多的空间。因此,每个芯片的内存更少,这使 SRAM 变得更加昂贵。
举例如何从内存条中拿取数据
这是一个内存条的图。
-
存储器大小是 128 MB
-
有 8 个 DRAM 芯片(就是第一个图的每个黑方块)
-
每个芯片由 DRAM 和 SRAM 构成
-
每个 DRAM 以及 8 个位平面
- 算出每个 DRAM 的行列大小
假设,行列大小相同。每个 DRAM 芯片的大小:。因为有 8 个位平面,所以每个位平面就是。
所以一共有 4096 行,4096 列。
- 假设 CPU 寻址能力是 64 位
CPU 送给存控的一共有 27 位。因为 12 位的行 + 12 位的列,以及三位的芯片选择(一共八个)。但是,由于是同时读取这 8 个芯片所以,那三位也没有用了。
- 如何拿数据
-
CPU 给行地址列地址给存控(memory controler)
-
存控分解 CPU 的指令,先拿出行地址,并把每个芯片的选中的行都会放入该芯片的由 SRAM 组成的行缓存(Row Buffer)中。
-
再由存控给出列地址,从行缓存中,拿出所有数据,传递给 CPU
- 啥是行缓存
行缓存(Row Buffer)缓存存控送来的行地址的数据,也就是说,当行地址来的时候,整一行都会被保存在该芯片的 SRAM 中。
-
交叉编址
也就是说,第一个芯片的第一行第一列的地址是 i,那么第一个芯片第一行第二例的地址就是 i + 8。只有第二个芯片的第一行第一列的地址是 i + 1。