计算机体系结构——内存
内存也称为随机访问储存器( Random-access memory ),简称 RAM 。 RAM 目前分为两种静态内存和动态内存。静态内存( SRAM )速度上比动态内存( DRAM )更快但更贵。 SRAM 通常用于CPU高速缓存,而DRAM通常用于计算机内存主存和一些图形卡上的帧缓存。一个计算机上通常不超过几 MB 的 SRAM ,但是一般有超过几 GB 的 DRAM 。
SRAM
SRAM 储存每一个二进制位在一个内存单元中,这个内存单元包括 6 个晶体管组成的电路。这个电路能够储存两种电压状态,而其他的状态是不稳定的,一旦出现了一个不稳定的状态,那么就会迅速地趋向两种稳定地电压状态。
由于 SRAM 具有位稳定性,每个内存单元将会一直保持它的状态不改变知道断电,另外 SRAM 还具有抗干扰性,经过一些电压噪声仍不会改变其状态。
DRAM
DRAM 使用一颗电容器存储每一比特位的值,这颗电容器一般非常的小,大约
DRAM 对电压波动非常敏感,一个微小的电流噪声都会使其状态值发生改变,并且随着时间的变化电容器中的电荷会发生外泄。因此,内存控制芯片将周期性的刷新每一个内存单元中的电容器,使其值保持不变。
由于 DRAM 的不稳定性,内存会单独设置校验位来校验数据的准确性,例如一个 32 位的数据通常要使用 38 位的空间存储,6 位作为校验位。
下表总结了两种内存类型的区别:
名称 | 每一位的晶体管数量 | 相对访问时间 | 持久 | 敏感 | 相对价格 | 应用 |
SRAM | 6 | 1X | 是 | 否 | 100X | 高速缓存 |
DRAM | 1 | 10X | 否 | 是 | 1X | 主存,帧缓存 |
DRAM 结构
DRAM 中的每 个内存单元( Cell )通常被分成 1 个超级内存单元( Supercell ),而一块内存条通常有 个超级内存单元,共计
这些超级内存单元被分成 矩形矩阵的形式,每一个超级内存单元都有一个坐标
数据通过总线连接进行传输,例如一个 ,
所有的内存芯片都和内存控制器相连,假如要访问 中的数据,内存控制器先将
DRAM 被设计成矩阵的形式利于减少总线的数量和缓存的命中率,但是降低了单次读写的速度。
内存模块
一个内存矩阵称为一个内存芯片被封装在一块黑色的内存颗粒中,在内存条上多个内存颗粒组成了一块内存条。这些内存颗粒组称为内存模块。
内存模型有很多种,最经典的两种是 168 针的双列直插式存储模块( DIMM )每次通过内存总控制器传输 64 位的数据块。和 72 针的单列直插式存储模块( SIMM ),每次传输 32 位的内存块。
例如一个 64 MB 的内存条,具有 8 个 8MB 的内存颗粒命名为 0 到 7 。每次传输 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 不同,可以通过电流即可完成擦除,不需要单独拿出来照射紫外线。大约可以擦除
- 闪存( Flash ),基于 EEPROM ,通常可以随意插拔,经常用于U盘等便携储存设备。
存放在 ROMs 中的程序称作为固件。每次计算机启动都会执行固件中的程序,例如主板通过 BIOS 进行基本的 IO 操作,一些硬件通过固件来和 CPU 传输数据。
访问主存
CPU 和 IO 设备通过总线进行传输数据,这个过程叫做总线传输。
一个总线包括控制总线,数据总线和地址总线,有的设备为了设计紧凑,共用了数据和地址总线。多个设备也可以共用同一条总线。
和总线另一端相连的 IO 桥芯片组,IO 桥芯片组再和 IO 设备进行相连。
总线和 CPU 相连的叫做 CPU 总线接口。
以主存为例子,数据通过 CPU - CPU OI 接口 - 总线 - IO 桥 - 内存总线 - 主存 进行数据传输。