没有合适的资源?快使用搜索试试~ 我知道了~
中山大学计算机组成原理实验 多周期CPU设计.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 4 下载量 161 浏览量
2022-07-06
00:44:40
上传
评论 1
收藏 1.58MB DOCX 举报
温馨提示
试读
26页
中山大学计算机组成原理实验 多周期CPU设计.docx中山大学计算机组成原理实验 多周期CPU设计.docx中山大学计算机组成原理实验 多周期CPU设计.docx中山大学计算机组成原理实验 多周期CPU设计.docx中山大学计算机组成原理实验 多周期CPU设计.docx中山大学计算机组成原理实验 多周期CPU设计.docx中山大学计算机组成原理实验 多周期CPU设计.docx中山大学计算机组成原理实验 多周期CPU设计.docx中山大学计算机组成原理实验 多周期CPU设计.docx
资源推荐
资源详情
资源评论
《计算机组成原理实验》
(实验四)
计算机组成原理实验
成 绩 :
实 验 四 :多周期CPU设计与实现
一. 实验目的
(1) 认识和掌握多周期数据通路图的构成、原理及其设计方法;
(2) 掌握多周期 CPU 的实现方法,代码实现方法;
(3) 认识和掌握指令与 CPU 的关系;
(4) 掌握多周期 CPU 的测试方法。
二. 实验内容
设计一个多周期 CPU,该 CPU 在单周期指令集的基础上
==> 算术运算指令
(1)add rd , rs, rt
000000
rs(5 位)
rt(5 位)
rd(5 位)
00000 100000
00000 100010
功能:GPR[rd] ← GPR[rs] + GPR[rt]。
(2)sub rd , rs , rt
000000
rs(5 位)
rt(5 位)
rd(5 位)
功能:GPR[rd] ← GPR[rs] - GPR[rt]。
(3)addiu rt , rs ,immediate
001001
rs(5 位)
rt(5 位)
immediate(16 位)
功能:GPR[rt] ← GPR[rs] + zero_extend(immediate); immediate
做符号扩展再参
做符号扩展再参
加“加”运算。
(4)addi rt , rs ,immediate
001000 rs(5 位) rt(5 位)
功能:GPR[rt] ← GPR[rs] + sign_extend(immediate); immediate
immediate(16 位)
加“加”运算。
==> 逻辑运算指令
(5)andi rt , rs ,immediate
001100
rs(5 位)
rt(5 位)
immediate(16 位)
功能:GPR[rt] ← GPR[rs] and zero_extend(immediate);immediate
做 0 扩展再参
加“与”运算。
(6)and rd , rs , rt
000000 rs(5 位)
rt(5 位)
rd(5 位)
00000 100100
功能:GPR[rd] ← GPR[rs] and GPR[rt]。
(7)ori rt , rs ,immediate
001101
rs(5 位)
rt(5 位)
immediate(16 位)
计算机组成原理实验
功能:GPR[rt] ← GPR[rs] or zero_extend(immediate)
。
(8)or rd , rs , rt
000000
rs(5 位)
rt(5 位)
rd(5 位)
00000 100101
功能:GPR[rd] ← GPR[rs] or GPR[rt]。
==>移位指令
(9)sll rd, rt,sa
000000
00000
rt(5 位)
rd(5 位)
sa(5 位) 000000
功能:GPR[rd] ← GPR[rt] << sa。
==>比较指令
(10) slti rt, rs,immediate 带符号数
001010
rs(5 位)
rt(5 位)
immediate(16 位)
功能:if GPR[rs] < sign_extend(immediate) GPR[rt] =1 else GPR[rt] = 0。
(11)slt rd, rs, rt
000000
(12)movn rd, rs, rt
000000 rs(5 位)
rs(5 位)
rt(5 位)
rd(5 位)
00000 101010
rt(5 位)
rd(5 位)
00000 001011
功能:if GPR[rt] ≠ 0 then GPR[rd] ← GPR[rs]。
==> 存储器读/写指令
(13)sw rt , offset (rs) 写存储器
101011
rs(5 位)
rt(5 位)
offset(16 位)
功能:memory[GPR[base] + sign_extend(offset)] ← GPR[rt]。
(14) lw rt , offset (rs) 读存储器
100011
rs(5 位)
rt(5 位)
offset (16 位)
功能:GPR[rt] ← memory[GPR[base] + sign_extend(offset)]。
(15)lhu rt, offset(base)
100101
base(5 位)
rt(5 位)
offset(16 位)
功能:GPR[rt] ← memory[GPR[base] + offset]。
==> 分支指令
(16)beq rs,rt, offset
000100
rs(5 位)
rt(5 位)
offset (16 位)
功能:if(GPR[rs] = GPR[rt]) pc←pc + 4 + sign_extend(offset)<<2
else pc ←pc + 4
特别说明:offset 是从 PC+4 地址开始和转移到的指令之间指令条数 offset 符号扩展
。
之后左移 2 位再相加。为什么要左移 2 位?由于跳转到的指令地址肯定是 4 的倍数(每条
指令占 4 个字节),最低两位是“00”,因此将 offset 放进指令码中的时候,是右移了 2
位的,也就是以上说的“指令之间指令条数”。
(17)bne rs,rt, offset
000101
rs(5 位)
rt(5 位)
offset (16 位)
功能:if(GPR[rs] != GPR[rt]) pc←pc + 4 + sign_extend(offset) <<2
else pc ←pc + 4
(18)bltz rs, offset
计算机组成原理实验
000001
rs(5 位)
00000
offset (16 位)
功能:if(GPR[rs] < 0) pc←pc + 4 + sign_extend (offset) <<2
else pc ←pc + 4。
==>跳转指令
(19)j addr
000010
addr(26 位)
功能:PC ← {PC[31:28] , addr , 2’b0},无条件跳转。
说明:由于 MIPS32 的指令代码长度占 4 个字节,所以指令地址二进制数最低 2 位均
为 0,将指令地址放进指令代码中时,可省掉!这样,除了最高6 位操作码外,还有 26 位
可用于存放地址,事实上,可存放 28 位地址,剩下最高 4 位由 pc+4 最高 4 位拼接上。
(20)jr rs
000000
rs(5 位)
0000000000
未用
001000
功能:PC ← GPR[rs],跳转。
==> 停机指令
(21)halt
111111
00000000000000000000000000(26位)
功能:停机;不改变PC的值,PC保持不变。
==>调用子程序指令
(22)jal addr
000011
addr[27:2]
功能:调用子程序,PC ← {PC[31:28] , addr , 2’b0};GPR[$31] ← pc+4,返回
地址设置;子程序返回,需用指令 jr $31。跳转地址的形成同 j addr 指令。
增加实现以下指令功能操作。本次实验中需要实现运算操作的溢出判断:ALU 运算操
作溢出时,ALU 需给出一位溢出信号(部分指令可能需要用到该信号。对于溢出发生时,
需要能检测识别出,且不写回溢出错误结果,但不需要设计异常处理功能)。需设计的指令
与格式如下,指令的具体描述和功能以 mips 官方文档为准:
三. 实验原理
多周期 CPU 指的是将整个 CPU 的执行过程分成几个阶段,每个阶段用一个时钟去完
成,然后开始下一条指令的执行,而每种指令执行时所用的时钟数不尽相同,这就是所谓的
多周期 CPU。CPU 在处理指令时,一般需要经过以下几个阶段:
(1) 取指令(IF):根据程序计数器 pc 中的指令地址,从存储器中取出一条指令,同时,
pc 根据指令字长度自动递增产生下一条指令所需要的指令地址,但遇到“地址转移”指令
时,则控制器把“转移地址”送入 pc,当然得到的“地址”需要做些变换才送入 pc。
(2) 指令译码(ID):对取指令操作中得到的指令进行分析并译码,确定这条指令需要完
成的操作,从而产生相应的操作控制信号,用于驱动执行状态中的各种操作。
(3) 指令执行(EXE):根据指令译码得到的操作控制信号,具体地执行指令动作,然后
转移到结果写回状态。
(4) 存储器访问(MEM):所有需要访问存储器的操作都将在这个步骤中执行,该步骤给
取指令
指令译码
指令执行
存储器访问
结果写回
IF
EXE
MEM
图1 多周期CPU指令处理过程
MIPS 指令的三种格式:
剩余25页未读,继续阅读
资源评论
- Ayrn9742023-01-21总算找到了想要的资源,搞定遇到的大问题,赞赞赞!
- ~~1572023-01-17资源很好用,有较大的参考价值,资源不错,支持一下。
- weixin_604990022023-02-19资源有一定的参考价值,与资源描述一致,很实用,能够借鉴的部分挺多的,值得下载。
- weixin_514420412022-09-18资源中能够借鉴的内容很多,值得学习的地方也很多,大家一起进步!
不吃鸳鸯锅
- 粉丝: 8253
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功