【问题标题】:Simultaneously incrementing the program counter and loading the Instruction register同时递增程序计数器并加载指令寄存器
【发布时间】:2014-02-24 13:00:24
【问题描述】:

在我的计算机体系结构讲座中,有人告诉我 IR 分配和 PC 增量是并行完成的。但是,这肯定会影响加载哪条指令。

如果 PC = 0,则加载 IR,然后 PC 递增,然后 IR 将保存地址 0 处的指令。

但是,如果 PC = 0,则 PC 递增,然后加载 IR,然后 IR 将保存地址 1 处的指令。

那么肯定它们不能同时完成并且必须定义顺序吗?

【问题讨论】:

  • 如果您是并行递增,则新值在 IR 负载开始时不可用。

标签: cpu-architecture


【解决方案1】:

你没有考虑到FlipFlops 的奇妙之处。确切的实现当然取决于您的具体设计,但是完全可以读取当前锁存在某个寄存器或锁存器上的值,同时准备一个不同的值存储在那里,只要您知道这些值是独立的(也有可能在更复杂的设计中进行“绕过”,但这不是这里的重点)。

在这种情况下,您将在准备下一个值(例如 PC+4 或一些分支目标,如果你知道的话)。这就是管道的工作原理。

一般来说,您要么有足够的时间在同一个周期内做一些工作(递增 PC 并将其用于代码提取),在这种情况下它们将适合同一个管道阶段,或者如果你不能及时完成 - 您只需将这些串行活动分解为两个管道阶段,以便它们可以“并行”完成,因为其中一个属于流经管道的下一个操作,因此不再存在依赖关系(除了极端情况像树枝或气泡)

【讨论】:

    猜你喜欢
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多