《计算机组成原理实验》
实验报告
(实验二)
学 院 名 称 :
专业(班级) :
学 生 姓 名 :
学号 :
时间:2017年11月25日
成 绩 :
实 验 二 : 单周期 CPU设计与实现
. 实验目的
掌握单周期 CPU数据通路图的构成、原理及其设计方法;
掌握单周期 CPU的实现方法,代码实现方法;
认识和掌握指令与 CPU的关系;
掌握测试单周期 CPU的方法;
掌握单周期 CPU的实现方法。
二.
实验内容
设计一个单周期的 MIPSCPU,使其能实现下列指令:
==> 算术运算指令
( 1) add
rd , rs, rt ( 说明:以助记符表示,是汇编指令;以代码表示,是机器指令
)
000000
rs(5 位 )
rt(5 位 )
rd(5 位 )
reserved
功能: rd ← rs + rt。 reserved 为预留部分,即未用,一般填“
0”。
( 2) addi
rt , rs ,immediate
000001
rs(5 位 )
rt(5 位 )
immediate (16 位 )
功能: rt ← rs + (sign-extend)immediate ; immediate 符号扩展再参加“加”运算。
( 3) sub
rd , rs , rt
000010
rs(5 位 )
rt(5 位 )
rd(5 位 )
reserved
功能: rd ← rs - rt
==> 逻辑运算指令
( 4) ori
rt , rs ,immediate
010000
rs(5 位 )
rt(5 位 )
immediate (16 位 )
功能: rt ← rs | (zero-extend) immediate ; immediate 做“ 0”扩展再参加“或”运算。
( 5) and
rd , rs , rt
010001
rs(5 位 )
rt(5 位)
rd(5 位 )
reserved
功能: rd ← rs & rt ;逻辑与运算。
( 6) or
rd , rs , rt
010010
rs(5 位 )
rt(5 位 )
rd(5 位 )
reserved
功能: rd ← rs | rt ;逻辑或运算。
==>移位指令
( 7) sllrd, rt,sa
011000未用rt(5 位 )rd(5 位 )
功能: rd< - rt<
sa
reserved
==>比较指令
( 8) slt
rd, rs, rt
带符号数
011100
功能: if (rs
rs(5 位 ) rd =1 else
rt(5 位)
rd=0, 具体请看表
rd(5 位 )reserved
2 ALU 运算功能表,带符号
==> 存储器读 / 写指令
( 9) swrt , immediate( rs)
写存储器
100110
rs(5 位 )
rt(5 位 )
immediate (16 位 )
功能: memory[rs+(sign-extend) immediate ]← rt ; immediate符号扩展再相加。即将
寄存器的内容保存到rs 寄存器内容和立即数符号扩展后的数相加作为地址的内存单元中。
rt
( 10) lw
rt , immediate (rs)
读存储器
100111rs(5 位 )rt(5 位 )immediate (16 位 )
功能: rt ← memory[rs + (sign-extend) immediate ];immediate符号扩展再相加。
即读取 rs 寄存器内容和立即数符号扩展后的数相加作为地址的内存单元中的数,然后
保存到 rt 寄存器中。
==> 分支指令
( 11) beq
rs,rt, immediate
110000rs(5 位 )rt(5 位 )immediate (16 位)
功能: if(rs=rt) pc ← pc + 4 + (sign-extend)immediate <<2else pc ← pc + 4
特别说明: immediate是从PC+4 地址开始和转移到的指令之间指令条数。 immediate
符号扩展之后左移2 位再相加。为什么要左移2 位由于跳转到的指令地址肯定是4 的倍数(每
条指令占 4 个字节),最低两位是“00”,因此将 immediate放进指令码中的时候,是右移
了 2 位的,也就是以上说的“指令之间指令条数”。
12) bne
rs,r