- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
32位单周期RISC处理器设计
第一章 32 位单周期RISC处理器设计
要设计一款处理器,首先要选择体系结构,本题选择的是RISC体系结构,因为它适合于流水线设计。然后需要选择一个标准的指令集,本题选择的MIPS指令集并按照常规的五段流水的方式来实现流水线。流水线的实现过程将在第二章介绍。
1.1目标处理器指令集与指令格式
本题目标CPU以能实现部分MIPS指令为目标,具体指令如下表1:
类别 指令 格式 算术运算 加(add) R 减(sub) R 立即数加(addi) I 立即数减(subi) I 逻辑运算 与(and) R 或(or) R 或非(nor) R 立即数与(andi) I 立即数或(ori) I 立即数或非(nori) I 数据传递 取字(lw) I 存字(sw) I 条件分支 相等转移(beq) I 小于比较(slt) R 立即数小于比较(slti) I 无条件跳转 跳转(jL) J 空操作 空操作(nop)
表1 目标CPU指令集
1.2 从指令具体行为反推设计方案
CPU要执行一条指令,不外乎需要完成以下几个过程:取指令,指令译码,将译码出的指令放到算术逻辑运算部件ALU上执行运算,根据ALU算得的访存地址进行访存和将访存的结果写回寄存器等。当然,不同的指令类型(R、I、J)可能经过的过程稍有不同,即它们的数据通路有所不同,以下将具体介绍:
R格式指令数据通路:
1)从指令寄存器Instr MEM中取出指令,同时PC增值(即加1等待下个CLK到来);
2.)寄存器单元rs1和rs2的内容从寄存器堆Reg File中读出;
3.)ALU根据功能码Opcoder确定操作方式,对从寄存器堆读出的数据进行计算;
4.)ALU运算结果被写入寄存器堆,由rd确定写入的寄存器堆存储单元地址。
图1 R指令数据通路
2. I 指令(除lw、sw和分支指令)数据通路如图2:
1.)从指令寄存器Instr Mem中取出指令,同时PC增值(即加1等待下个CLK到来);
2.)寄存器单元rs1的内容从寄存器堆Reg File中读出;
3.)ALU将从寄存器堆rs1单元中读出的数据与符号扩展后的指令低16位值相加;
4.)ALU的运算结果被写入寄存器堆,由rt确定写入的寄存器堆存储单元地址。
图2 I 指令(除lw、sw和分支指令)数据通路
3、Lw指令数据通路如图3:
1.)从指令寄存器Instr Mem中取出指令,同时PC增值(即加1等待下个CLK到来);
2.)寄存器单元rs1的内容从寄存器堆Reg File中读出;
3.)ALU将从寄存器堆rs1单元中读出的数据与符号扩展后的指令低16位值相加;
4.)将ALU的运算结果作为数据存贮器的地址读出相应单元的内容;
5)把从数据存储单元取出的数据写入寄存器堆,由rt确定写入的寄存器存储单元地址。
图3 LW指令数据通路
4、Sw指令数据通路如图4:
1.)从指令寄存器Instr Mem中取出指令,同时PC增值(即加1等待下个CLK到来);
2.)寄存器单元rs1和rs2的内容从寄存器堆Reg File中读出;
3.)ALU将从寄存器堆rs1单元读出的数据与符号扩展后的指令低16位值相加;
4.)将ALU 的运算结果作为数据存贮器的写入地址,把从寄存器堆rs2单元中取出的数据写入数据存储器中。
图4 SW指令数据通路
5)分支和跳转指令数据通路如图5:
分支和跳转指令主要控制PC的输入来达到分支或跳转的目的。
分支指令数据通路:
1.)从指令寄存器Instr Mem中取出指令,同时PC增值(即加1等待下个CLK到来);
2.)寄存器单元rs1和rs2的内容从寄存器堆Reg File中读出;同时主控制单元还计算各控制线应被设置的状态,具体状态表如表2所示;
3.)ALU将从寄存器堆读出的两数相减,同时把PC+1的值与符号扩展后的指令低16位值相加,其结果即为分支目标地址;
4.)根据ALU的Zero端口值和branch输出共同决定的PC的值:当Zero端口和branch的输出均为高电平时PC的值取第3步计算所得的分支目标地址,否则取第1步的PC+1值。
跳转指令数据通路:
1.)从指令寄存器Instr Mem从取出指令,同时PC增值(即加1等待下个CLK到来);
2.)主控制单元计算各控制线应被设置的状态,状态表如表2所示。PC+1的值的高6位[31~26]加上指令低26位([25~0])值组成跳转目标地址,根据主控制单元生成的Jump值决定是否跳转,Jump为1则PC的
文档评论(0)