多周期CPU设计

发布时间:2017-03-24 00:32

多周期CPU设计和单周期CPU的设计相同,都是为了实现一系列的指令功能,以下是小编为大家整理推荐关于多周期CPU设计,希望对您有所帮助。

多周期CPU设计

多周期CPU设计

和单周期CPU的设计相同,都是为了实现一系列的指令功能,但需要指出的是何为多周期(注意与前面写道的单周期的区别,这也是设计的关键之处)

多周期CPU指的是将整个CPU的执行过程分成几个阶段,每个阶段用一个时钟去完成,然后开始下一条指令的执行,而每种指令执行时所用的时钟数不尽相同,这就是所谓的多周期CPU。

理解完多周期与单周期的区别后,开始我们的多周期CPU设计之路(可以随时对应单周期的设计,注意联系与区别)。

需要设计的指令及格式如下:

==>算术运算指令

(1)add rd, rs, rt

000000rs(5位)rt(5位)rd(5位)reserved

功能:rd<-rs + rt

(2)sub rd, rs, rt

000001rs(5位)rt(5位)rd(5位)reserved

完成功能:rd<-rs - rt

(3)addi rt, rs, immediate

000010rs(5位)rt(5位)immediate(16位)

功能:rt<-rs + (sign-extend)immediate

==>逻辑运算指令

(4)or rd, rs, rt

010000rs(5位)rt(5位)rd(5位)reserved

功能:rd<-rs | rt

(5)and rd, rs, rt

010001rs(5位)rt(5位)rd(5位)reserved

功能:rd<-rs & rt

(6)ori rt, rs, immediate

010010rs(5位)rt(5位)immediate

功能:rt<-rs | (zero-extend)immediate

==>移位指令

(7)sll rd, rs,sa

011000rs(5位)未用rd(5位)sareserved

功能:rd<-rs<<(zero-extend)sa,左移sa位 ,(zero-extend)sa

==>传送指令

(8)move rd, rs

100000rs(5位)00000rd(5位)reserved

功能:rd<-rs + $0

==>比较指令

(9) slt rd, rs, rt

100111rs(5位)rt(5位)rd(5位)reserved

功能:如果(rs<rt),则rd=1; 否则 rd=0

==>存储器读写指令

(10)sw rt, immediate(rs)

110000rs(5位)rt(5位)immediate(16位)

功能:memory[rs+ (sign-extend)immediate]<-rt

(11)lw rt, immediate(rs)

110001rs(5位)rt(5位)immediate(16位)

功能:rt <- memory[rs + (sign-extend)immediate]

==>分支指令

(12)beq rs,rt, immediate (说明:immediate是从pc+4开始和转移到的指令之间间隔条数)

110100rs(5位)rt(5位)immediate(16位)

功能:if(rs=rt) pc <-pc+ 4 + (sign-extend)immediate <<2

==>跳转指令

(13)j addr

111000addr[27..2]

功能:pc <{pc[31..28],addr[27..2],0,0},转移

(14)jr rs

111001rs(5位)未用未用reserved

功能:pc<-rs,转移

==>调用子程序指令

(15)jal addr

111010addr[27..2]

功能:调用子程序,pc <- {pc[31..28],addr[27..2],0,0};$31<-pc+4,返回地址设置;子程序返回,需用指令 jr $31。

==>停机指令

(16)halt (停机指令)

11111100000000000000000000000000(26位)

不改变pc的值,pc保持不变。

多周期cpu设计相关文章:

1.什么是多时钟周期cpu

2.平面设计用什么cpu

3.运行多任务cpu和什么技术有关

4.开网页cpu单核多核

5.cpu指令集有多少种

多周期CPU设计的评论条评论