代码之家  ›  专栏  ›  技术社区  ›  user242294

在CPU中,所有的内存信号和数据都通过内存控制器,对吗?[关闭]

  •  0
  • user242294  · 技术社区  · 14 年前

    例如:

    当mem ctrler希望用下一个addr寄存器指向的数据填充指令寄存器时。

    它是否向地址寄存器发送一个信号以将下一个地址放在地址总线上,或者该地址是否转到mem ctrler,并由mem ctrler放在总线上?

    1 回复  |  直到 9 年前
        1
  •  1
  •   Yann Ramin    14 年前

    首先,内存控制器不想做任何事情(除了刷新DRAM,但对于本例来说,这会使事情过于复杂)。

    在许多基本CPU中,事件的大致顺序是:

    1. CPU遇到加载指令(直接指令或通过微码)。然后将地址寄存器与该指令的有效负载(要读取的地址)一起加载。这个简单示例中的地址寄存器直接耦合到地址总线。请注意,加载指令的顺序相同,但可能发生在单独的总线上(哈佛体系结构)
    2. CPU将读取行资产化。
    3. 内存控制器执行读取所需的任何操作。
    4. 内存控制器将数据放在数据总线上。
    5. 内存控制器可以断言或不断言DR(数据就绪)信号。
    6. 通过等待特定的周期数,或者等待DR信号,CPU然后锁存数据总线的内容。
    7. 数据总线闩锁加载到目标寄存器中。

    这是对现代CPU的大体简化。引入缓存、管道、无序执行,使得这一过程更加复杂。