【问题标题】:Instruction Execution指令执行
【发布时间】:2014-11-25 15:14:33
【问题描述】:

我正在阅读一本关于计算机体系结构介绍的书。 有一些文本段落写道:“RISC 指令通常需要一个时钟周期”。然后它显示以下Verilog sn-p作为插图:

always @(positiveclockedge clk )

begin

case ( state )
    STATE_FETCH:
        begin
          fetch;
          state = STATE_DECODE;
        end
    STATE_DECODE:
        begin
            decode;
            state = STATE_EXECUTE;
        end
    STATE_EXCUTE:
        begin
            execute;
            state = STATE_FETCH;
        end
endcase
end

根据 Verilog sn-p,每条指令至少需要 3 个时钟周期(忽略任何内存访问延迟),即使是 RISC 处理器。所以有一个表面上的矛盾。有人可以帮忙解决吗?

【问题讨论】:

  • 谷歌“处理器管道”。
  • 文本大概意思是“通常需要一个时钟周期[执行]”(即,只有一个“执行”流水线阶段)。单周期执行简化了高效流水线的设计,因为相关指令可以连续执行。最初的微处理器没有联锁流水线阶段甚至使用加载延迟槽来允许将加载指令视为单周期执行(强制编译器避免在加载指令之后立即放置相关指令)。
  • 我认为该评论是我的答案。谢谢。
  • 类似“延迟槽”的东西也应该在 fetch 阶段起作用,因为需要内存访问。对吗?
  • 指令获取和数据访问可能都希望同时完成的结构性风险通常会通过停顿来处理。许多处理器使用单独的指令和数据缓存来降低这种危害的频率(除了其他好处);因为在一个非常简单的设计中缓存未命中将需要一个停顿,这允许一些简化。

标签: assembly verilog computer-architecture


【解决方案1】:
  1. 您也可以在 Google 上搜索“RISC 架构”。或
  2. 请参阅有关 RISC DLX 架构的维基百科页面。或
  3. 请参阅 hennesey 和 Patterson 的书,其中详细讨论了 RISC 架构。

通常你有一个流水线 RISC 架构(获取 - 解码 - 执行 - 回写)。指令在一个周期内执行。但整个管道可能需要更多周期,具体取决于您要实施的架构。

希望这会有所帮助。

【讨论】:

  • 非常有帮助。坦克。主题只是为了全面了解如何更好地编程(即组装)。我不想深入研究处理器设计问题。
猜你喜欢
  • 2016-09-06
  • 2015-12-07
  • 1970-01-01
  • 2021-05-14
  • 2013-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多