【发布时间】: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