|「计算机组成原理」:现代存储器的结构( 二 )

  • 内存控制器发送列地址(Column Access Strobe , CAS)1到DRAM芯片 , 则DRAM芯片会从内部行缓冲区获得1列的数据 , 将其发送到内存控制器 。
  • 注意:
    • 内存控制器发送RAS和CAS时 , 使用相同的addr引脚 , 使得必须分两步发送地址 , 会增加访问时间 。
    • 如果将16个DRAM单元组织成线性形式 , 则需要4位的地址引脚才能索引到每个超单元 , 但是将其组织成4行4列的阵列形式 , 只需要2位的地址引脚 。
    为了一次性能访问更多的数据 , 可以将多个DRAM芯片封装到一个内存模块(Memory Module)中 , 将其扎到主板的扩展槽中 。
    |「计算机组成原理」:现代存储器的结构
    本文插图

    如上图所示是封装了8个 8M times 88M×8 DRAM芯片的内存模块 , 每个DRAM芯片负责8位数据 , 这样一次能对64位字进行读写 。 比如想要获得地址A处的字:
    • 内存控制器首先将A转化为(i,j)的超单元地址 , 然后内存控制器依次将i和j广播到所有DRAM芯片中
    • 每个DRAM芯片依次接收到RAS i和CAS j , 会通过上述的方法输出8位数据
    • 模块中的电路收集到所有DRAM芯片输出的8位数据 , 然后将其合并成一个64位的字 , 返回给内存控制器
    为了进一步扩大存储能力 , 可以将多个内存模块连接到内存控制器 , 能够聚合成主存 。 当内存控制器想要读取地址A处的字时 , 会先找到包含地址A的内存模块k , 然后根据上述步骤得到对应的字 。
    而基于传统的DRAM单元 , 可以做一些优化来提高访问基本DRAM单元的速度:
    • 快页模式DRAM(Fast Page Mode DRAM , FPM DRAM):传统的DRAM芯片通过CAS获得数据后 , 会将那一行的数据从内部行缓冲区直接删掉 , 如果访问多个在同一行的超单元时 , 需要反复读取相同的行 。 而FPM DRAM能够获取一次性数据后 , 后面的读取直接从内部行缓冲区读取 。
    • 扩展数据输出DRAM(Extended Data Out DRAM , EDO DRAM):对FPM DRAM进行改进 , 使得各个CAS信号在时间上更加紧密 。
    • 同步DRAM(Synchronous DRAM , SDRAM):DRAM芯片与内存控制器的通信使用一组显示的控制信号 , 通常是异步的 , 而SDRAM使用了 , 控制内存控制器的外部时钟信号的上升沿来代替控制信号 。
    • 双倍数据速率同步DRAM(Double Data-Rate Sychronous DRAM , DDR SDRAM):对SDRAM的优化 , 通过使用两个时钟沿作为控制信号 , 从而使得DRAM的速度翻倍 。
    • 视频RAM(Video RAM , VRAM): 用于图形系统的帧缓冲区 , 与FPM DRAM的区别:VRAM的输出是通过对内部缓冲区的移位得到的 , VRAM允许对内存并行地读和写 。
    从更高层面来看 , 数据流是通过称为总线(Bus)的共享电子电路在处理器和DRAM主存之间传递数据的 。 总线是一组并行的导线 , 能够携带地址、数据和控制信号 , 也可以将数据和地址信号使用相同的导线 。
    |「计算机组成原理」:现代存储器的结构
    本文插图

    如上图所示是一个连接CPU和DRAM主存的总线结构 。 其中I/O桥接器(I/O Bridge)芯片组包括内存控制器 , 能够将系统总线的电子信号和内存总线的电子信号互相翻译 , 也能将系统总线和内存总线连接到I/O总线 。
    当从内存加载数据到寄存器中:
    1. CPU芯片通过总线接口(Bus Interface)在总线上发送读事务(Read Transaction)
    2. CPU会将内存地址发送到系统总线上
    3. I/O桥将信号传递到内存总线
    4. 内存接收到内存总线上的地址信号 , 会从DRAM读取出数据字 , 然后将数据写到内存总线
    5. I/O桥将内存总线信号翻译成系统总线信号 , 然后传递到系统总线上


      推荐阅读