Only 1 memory port . 这意味着您不能在管道的两个不同阶段同时存储 read or write 内存 . 例如,如果 I1 位于 MEM 阶段,则另一条指令 cannot 同时位于 IF 阶段,因为两者都需要内存访问 .
No data forwarding. 数据转发反映了这样一个事实:在 EX 阶段 I1 的末尾,您将数据转发到 I2 的 ID 循环 . 因此, no forwarding 表示管道必须等待 I1 的 WB 阶段进入 I2 阶段 I2 . 使用asumption,您可以在前一条指令的 WB 阶段同时进入 ID 阶段,因为 WB 将在循环的前半部分写入内存,而 ID 将在循环的后半部分从内存中读取 .
Branch stalls until end of EX stage. 这是一个常见的假设,不使用 branch prediction techniques . 它只是说一个分支后的指令必须等到 end of EX stage 开始 ID 阶段 . 回想一下,只有在分支指令的 EX 阶段才能知道要执行的下一条指令的地址 .
1 回答
一个常见的假设是,你可以循环 write in the first half ,循环 read in the second half .
让我们说 I1 是你的第一条指令, I2 是你的第二条指令, I2 正在使用 I1 正在修改的寄存器 .
Only 1 memory port . 这意味着您不能在管道的两个不同阶段同时存储 read or write 内存 . 例如,如果 I1 位于 MEM 阶段,则另一条指令 cannot 同时位于 IF 阶段,因为两者都需要内存访问 .
No data forwarding. 数据转发反映了这样一个事实:在 EX 阶段 I1 的末尾,您将数据转发到 I2 的 ID 循环 . 因此, no forwarding 表示管道必须等待 I1 的 WB 阶段进入 I2 阶段 I2 . 使用asumption,您可以在前一条指令的 WB 阶段同时进入 ID 阶段,因为 WB 将在循环的前半部分写入内存,而 ID 将在循环的后半部分从内存中读取 .
Branch stalls until end of EX stage. 这是一个常见的假设,不使用 branch prediction techniques . 它只是说一个分支后的指令必须等到 end of EX stage 开始 ID 阶段 . 回想一下,只有在分支指令的 EX 阶段才能知道要执行的下一条指令的地址 .