没有合适的资源?快使用搜索试试~ 我知道了~
多周期CPU1
需积分: 0 0 下载量 140 浏览量
2022-08-03
14:24:17
上传
评论
收藏 2.08MB PDF 举报
温馨提示
试读
27页
1、认识和掌握多周期数据通路原理及其设计方法 2、掌握多周期 CPU 的实现方法,代码实现方法 3、掌握多周期 CPU 的测试方法
资源详情
资源评论
资源推荐
计算机组成原理实验
《计算机组成原理实验》
实验报告
(实验三)
学 院 名 称
:
数据科学与计算机学院
学 生 姓 名
:
吴沐晓
学号
:
15352339
专业(班级)
:
15 移动 3 班
时间
:
2017
年
6
月
2
日
计算机组成原理实验
成绩
:
实验三
:
多周期CPU设计
一. 实验目的
1、认识和掌握多周期数据通路原理及其设计方法。
2、掌握多周期 CPU 的实现方法,代码实现方法。
3、掌握多周期 CPU 的测试方法。
二. 实验内容
设计一个多周期 CPU,该 CPU 至少能实现以下指令功能操作。需设计的指令与格
式如下:(说明:操作码按照以下规定使用,都给每类指令预留扩展空间。)
==>算术运算指令
(1)add rd, rs, rt
000000
rs(5 位)
rt(5 位)
rd(5 位)
reserved
功能:rd<-rs + rt
(2)sub rd, rs, rt
000001
rs(5 位)
rt(5 位)
rd(5 位)
reserved
完成功能:rd<-rs - rt
(3)addi rt, rs, immediate
000010
rs(5 位)
rt(5 位)
immediate(16 位)
功能:rt<-rs + (sign-extend)immediate
==>逻辑运算指令
(4)or rd, rs, rt
010000
rs(5 位)
rt(5 位)
rd(5 位)
reserved
功能:rd<-rs | rt
(5)and rd, rs, rt
010001
rs(5 位)
rt(5 位)
rd(5 位)
reserved
功能:rd<-rs & rt
(6)ori rt, rs, immediate
010010
rs(5 位)
rt(5 位)
immediate
功能:rt<-rs | (zero-extend)immediate
==>移位指令
(7)sll rd, rt,sa
011000
未用
rt(5 位)
rd(5 位)
sa
reserved
功能:rd<-rt<<(zero-extend)sa,左移 sa 位 ,(zero-extend)sa
==>比较指令
(8) slt rd, rs, rt 带符号数
计算机组成原理实验
100110
rs(5 位)
rt(5 位)
rd(5 位)
reserved
功能:if (rs<rt) rd =1 else rd=0, 具体请看表 2 ALU 运算功能表,带符号
(9) sltu rd, rs, rt 不带符号数
100111
rs(5 位)
rt(5 位)
rd(5 位)
reserved
功能:if (rs<rt) rd =1 else rd=0, 具体请看表 2 ALU 运算功能表,不带符号
==>存储器读写指令
(10)sw rt, immediate(rs)
110000
rs(5 位)
rt(5 位)
immediate(16 位)
功能:memory[rs+ (sign-extend)immediate]<-rt。即将 rt 寄存器的内容保存到 rs 寄存
器内容和立即数符号扩展后的数相加作为地址的内存单元中。
(11)lw rt, immediate(rs)
110001
rs(5 位)
rt(5 位)
immediate(16 位)
功能:rt <- memory[rs + (sign-extend)immediate]。即读取 rs 寄存器内容和立即
数符号扩展后的数相加作为地址的内存单元中的数,然后保存到 rt 寄存器中。
==>分支指令
(12)beq rs,rt, immediate (说明:immediate 从 pc+4 开始和转移到的指令之间间隔条数)
110100
rs(5 位)
rt(5 位)
immediate(16 位)
功能:if(rs=rt) pc <-pc + 4 + (sign-extend)immediate <<2 else pc <-pc + 4
(13)bne rs,rt, immediate (说明:immediate 从 pc+4 开始和转移到的指令之间间隔条数)
110101
rs(5 位)
rt(5 位)
immediate(16 位)
功能:if(rs!=rt) pc <-pc + 4 + (sign-extend)immediate <<2 else pc <-pc + 4
==>跳转指令
(14)j addr
111000
addr[27..2]
功能:pc <-{(pc+4)[31..28],addr[27..2],0,0},跳转。
说明:由于 MIPS32 的指令代码长度占 4 个字节,所以指令地址二进制数最低 2 位均
为 0,将指令地址放进指令代码中时,可省掉!这样,除了最高 6 位操作码外,还有 26 位
可用于存放地址,事实上,可存放 28 位地址,剩下最高 4 位由 pc+4 最高 4 位拼接上。
(15)jr rs
111001
rs(5 位)
未用
未用
reserved
功能:pc <- rs,跳转。
==>调用子程序指令
(16)jal addr
111010
addr[27..2]
功能:调用子程序,pc <- {(pc+4)[31..28],addr[27..2],0,0};$31<-pc+4,返回地
计算机组成原理实验
址设置;子程序返回,需用指令 jr $31。跳转地址的形成同 j addr 指令。
==>停机指令
(17)halt (停机指令)
111111
00000000000000000000000000(26 位)
不改变 pc 的值,pc 保持不变。
三. 实验原理
多周期 CPU 指的是将整个 CPU 的执行过程分成几个阶段,每个阶段用一个时钟去完
成,然后开始下一条指令的执行,而每种指令执行时所用的时钟数不尽相同,这就是所谓的
多周期 CPU。CPU 在处理指令时,一般需要经过以下几个阶段:
(1) 取指令(IF):根据程序计数器 pc 中的指令地址,从存储器中取出一条指令,同时,
pc 根据指令字长度自动递增产生下一条指令所需要的指令地址,但遇到‚地址转移‛指令
时,则控制器把‚转移地址‛送入 pc,当然得到的‚地址‛需要做些变换才送入 pc。
(2) 指令译码(ID):对取指令操作中得到的指令进行分析并译码,确定这条指令需要完
成的操作,从而产生相应的操作控制信号,用于驱动执行状态中的各种操作。
(3) 指令执行(EXE):根据指令译码得到的操作控制信号,具体地执行指令动作,然后
转移到结果写回状态。
(4) 存储器访问(MEM):所有需要访问存储器的操作都将在这个步骤中执行,该步骤给
出存储器的数据地址,把数据写入到存储器中数据地址所指定的存储单元或者从存储器中得
到数据地址单元中的数据。
(5) 结果写回(WB):指令执行的结果或者访问存储器中得到的数据写回相应的目的寄存
器中。
实验中就按照这五个阶段进行设计,这样一条指令的执行最长需要五个(小)时钟周期才
能完成,但具体情况怎样?要根据该条指令的情况而定,有些指令不需要五个时钟周期的,
这就是多周期的 CPU。
图 1 多周期 CPU 指令处理过程
MIPS 指令的三种格式:
取指令
IF
指令译码
ID
指令执行
EXE
存储器访问
MEM
结果写回
WB
计算机组成原理实验
其中,
op:为操作码;
rs:为第 1 个源操作数寄存器,寄存器地址(编号)是 00000~11111,00~1F;
rt:为第 2 个源操作数寄存器,或目的操作数寄存器,寄存器地址(同上);
rd:为目的操作数寄存器,寄存器地址(同上);
sa:为位移量(shift amt),移位指令用于指定移多少位;
funct:为功能码,在寄存器类型指令中(R 类型)用来指定指令的功能;
immediate:为 16 位立即数,用作无符号的逻辑操作数、有符号的算术操作数、数据
加载(Laod)/数据保存(Store)指令的数据地址字节偏移量和分支指令中相对程序计数
器(PC)的有符号偏移量;
address:为地址。
图 2 多周期 CPU 状态转移图
状态的转移有的是无条件的,例如从 IF 状态转移到 ID 就是无条件的;有些是有条件
的,例如 ID 或 EXE 状态之后不止一个状态,到底转向哪个状态由该指令功能,即指令操
作码决定。每个状态代表一个时钟周期。
剩余26页未读,继续阅读
养生的控制人
- 粉丝: 18
- 资源: 333
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0