计算机系统结构-内存
内存也称为随机访问存储器( Random-access memory ),简称 RAM 。 RAM 分为静态内存和动态内存两种。静态内存( SRAM )比动态内存快( DRAM )更快但更贵。 SRAM 通常用于CPU和DRAM通常用于计算机内存主存和图形卡上的帧缓存。计算机通常不超过几个计算机 MB 的 SRAM ,但是一般有超过几 GB 的 DRAM 。
SRAM
SRAM 每个二进制位存储在一个内存单元中,包括 6 由晶体管组成的电路。该电路可以存储两种电压状态,而其他状态不稳定。一旦出现不稳定状态,两种稳定电压状态将迅速趋于。
由于 SRAM 具有位稳定性,每个内存单元都会保持其状态不变,知道断电。 SRAM 它还具有抗干扰性,经过一些电压噪声后会改变其状态。
DRAM
DRAM 使用电容器存储每个特性值,这个电容器通常很小,大约 30 × 1 0 ? 15 30 \times 10^{-15} 30×10?15 法拉。它的体积也很小,可以设计得很紧。DRAM 存储每个比特只使用一个晶体管和一个电容器, SRAM 需要 6 个晶体管。
DRAM 它对电压波动非常敏感。一个小的电流噪声会改变其状态值,随着时间的推移,电容器中的电荷会泄漏。因此,内存控制芯片将定期刷新每个内存单元中的电容器,以保持其值不变。
由于 DRAM 的不稳定性,内存会单独设置校验位来校验数据的准确性,例如一个 32 通常使用位数据 38 空间存储的位置,6 位置作为验证位置。
下表总结了两种内存类型的区别:
名称 | 每个晶体管的数量 | 相对访问时间 | 持久 | 敏感 | 相对价格 | 应用 |
---|---|---|---|---|---|---|
SRAM | 6 | 1X | 是 | 否 | 100X | 高速缓存 |
DRAM | 1 | 10X | 否 | 是 | 1X | 主存,帧缓存 |
DRAM 结构
DRAM 中的每 w w w 个内存单元( Cell )通常被分成 1 超级内存单元( Supercell ),通常有一个内存条 d d d 超级内存单元共计 d × w d \times w d×w 个比特位。
这些超级内存单元被分成超级内存单元 r × c r \times c r×c 以矩形矩阵的形式,每个超级内存单元都有坐标 ( r , c ) (r,c) (r,c) 。
数据通过总线连接进行传输,例如一个 4 × 4 4 \times 4 4×4 , w = 8 w = 8 w=8 的内存,具有一个 8 针的数据总线,一次能够传输一字节的数据,另外还具有 2 针的地址总线,指示超级内存单元的行和列。
所有的内存芯片都和内存控制器相连,假如要访问 ( 2 , 1 ) (2,1) (2,1) 中的数据,内存控制器先将 2 2 2 通过地址总线发送到内存芯片,称作 RAS 请求(行访问请求),接着内存芯片将第 2 行所有内存复制到一个叫行缓存区的位置,接着内存控制芯片发送 1 ,称作 CAS 请求(列访问请求),内存芯片返回行缓冲区中的第 1个位置的数据通过数据总线。注意行和列地址通过公用同一内存地址总线。
DRAM 被设计成矩阵的形式利于减少总线的数量和缓存的命中率,但是降低了单次读写的速度。
内存模块
一个内存矩阵称为一个内存芯片被封装在一块黑色的内存颗粒中,在内存条上多个内存颗粒组成了一块内存条。这些内存颗粒组称为内存模块。
内存模型有很多种,最经典的两种是 168 针的双列直插式存储模块( DIMM )每次通过内存总控制器传输 64 位的数据块。和 72 针的单列直插式存储模块( SIMM ),每次传输 32 位的内存块。
例如一个 64 MB 的内存条,具有 8 个 8MB 的内存颗粒命名为 0 到 7 。每次传输 64 位的数据块,每次内存控制器发送地址 ( r , c ) (r,c) (r,c) 给所有的内存颗粒中,每个内存颗粒在自身 ( r , c ) (r,c) (r,c) 返回一字节的数据,内存控制器将 8 个一字节数据按照高位到低位拼接成 64 位的数据块。完成一次数据传输。
有的内存条可以包含多个内存模块,内存控制器将地址转换成相应的内存模块的位置。
加强 DRAMs
在市面上见到的更多的是加强 DRAMs ,下面是几个例子:
- 快页内存( Fast page mod DRAM ) ,简称 FPM DRAM 。跟传统内存相比,如果想访问同一行的数据,只需要发送一次 RAS 请求,多次 CAS 请求即可。
- 扩展数据输出内存( Extended data out DRAM ),简称 EDO DRAM 。相比于 FPM DRAM 允许周期更小的 CAS 请求。
- 同步动态随机存取内存 (Synchronous DRAM),简称 SDRAM ,相比于前两个传统 DRAM 。 SDRAM 不受控制总线的控制,而且通过和时钟信号同步传输数据,其速度取决于时钟信号的速度。比传统 DRAM 速度要快。
- 双倍速率同步动态随机存储器( Double Data-Rate Synchronous DRAM ),简称 DDR SDRAM ,是 SDRAM 速度的两倍,使用两个时钟边界作为控制信号。
- 视频内存 ( Video RAM ),简称 VRAM ,用于图形系统。 VRAM大部分使用 FPM DRAM 。但是 VRAM 通过每次移动传输整行的数据,允许并行读写内存,这为缓存像素和输出像素提供了方便。
非易失内存
DRAMs 和 SRAMs 都是易失内存,而 ROM ( read-only memories )则是非易失内存,关闭电源后仍保持相应的状态。 ROMs 的类型通过可读写的次数分为以下几种:
- PROM( Programmable ROM )可编程只读储存器,只允许写入一次,通过大电流烧掉芯片内的保险丝进行记录数据,烧录一词从此得出。
- EPROM (Erasable Programmable ROM )可擦写可编程只读储存器,通过芯片上的开窗进行紫外线照射可以清除芯片中的数据进行二次写入,大约能重写一千次。
- EEPROM ( Electrically-erasable Programmable ROM )电可擦写可编程只读储存器,和 EPROM 不同,可以通过电流即可完成擦除,不需要单独拿出来照射紫外线。大约可以擦除 1 0 5 10^5 105 次。
- 闪存( Flash ),基于 EEPROM ,通常可以随意插拔,经常用于U盘等便携储存设备。
存放在 ROMs 中的程序称作为固件。每次计算机启动都会执行固件中的程序,例如主板通过 BIOS 进行基本的 IO 操作,一些硬件通过固件来和 CPU 传输数据。
访问主存
CPU 和 IO 设备通过总线进行传输数据,这个过程叫做总线传输。
一个总线包括控制总线,数据总线和地址总线,有的设备为了设计紧凑,共用了数据和地址总线。多个设备也可以共用同一条总线。
和总线另一端相连的 IO 桥芯片组,IO 桥芯片组再和 IO 设备进行相连。
总线和 CPU 相连的叫做 CPU 总线接口。
以主存为例子,数据通过 CPU - CPU OI 接口 - 总线 - IO 桥 - 内存总线 - 主存 进行数据传输。