前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CPU pipeline面试题Q1:MIPS 5-stage pipeline 是什么样子的?

CPU pipeline面试题Q1:MIPS 5-stage pipeline 是什么样子的?

作者头像
AsicWonder
发布2024-07-12 19:20:50
730
发布2024-07-12 19:20:50
举报
文章被收录于专栏:数字芯片实验室

MIPS 5-stage pipeline是学习CPU pipeline 的简化和经典方法,这是工程师的常见面试问题。5-stage pipeline由以下stage组成:

代码语言:javascript
复制
IF - 指令获取

ID - 指令解码和操作数获取

EX - 指令执行

MEM - 内存访问

WB - 回写

IF IF阶段可以使用以下公式进行总结: IR <- Mem(PC) PC <- PC + 4 其中PC是下一个指令的程序计数器或地址,IR是要执行的指令。 在这个阶段,CPU使用PC获取指令,然后将PC指向下一个指令。在这里,我们假设每个指令需要4个字节。

ID ID阶段可以使用以下公式进行总结: A <- Regs|IR[10:6]] B<- Regs[IR[15:11]] Imm < - IR[15:0] 其中A和B都是操作数,Imm是立即操作数,Regs是寄存器文件。 在此阶段,CPU可以使用IR[10:6)和IR|15:11)作为寄存器索引,从寄存器文件中读取操作数,或从IR中提取立即操作数[15:0] EX EX阶段可以使用以下公式进行总结: ALU输出<-A op B(reg-to-reg操作) ALU输出<- A op Imm(reg-to-imm操作) ALU输出<- PC + Imm(计算分支的目标地址),其中op是指令定义的某个操作。

在此阶段,ALU可用于计算内存操作的有效地址,执行寄存器与寄存器/立即操作数操作,或计算分支的目标地址。分支条件也在这个阶段确定。 MEM MEM阶段可以使用以下公式进行总结:

内存load LMD <- MEM[ALU输出] 内存store MEM[ALU输出]<- B

如果(满足条件)PC <- ALU输出

其他PC <- PC + 4 其中LMD是pipeline寄存器,用于暂时保存从内存中加载的数据。 在此阶段,执行内存load和store操作。此外,分支业务也将在这个周期内完成。如果满足在EX阶段获得的条件,PC将加载EX阶段和程序分支的ALU输出;否则程序按顺序执行,PC将指向下一个指令。 WB WB阶段可以使用以下公式进行总结:

Regs|IR[20:16]] <- ALU输出(reg-to-reg操作) Regs|IR|15:11]] <- ALU输出(reg-to-imm操作) Regs[IR[15:11]] <- LMD(内存load) 在这个阶段,最终结果被写回寄存器文件。对于register 2 register操作,结果被写入由IR[20:16]索引的寄存器;对于register 2 imm操作,结果被写入由IR[15:11]索引的寄存器;对于内存load操作,加载到内存的数据被写入由IR索引的寄存器[15:11]。 结论 在计算机硬件面试中,熟悉MIPS 5-stage是必须的。面试官希望候选人充分了解每个pipeline state的功能。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数字芯片实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档