学习啦>学习电脑>电脑硬件知识>CPU知识>

什么是多周期CPU设计

时间: 文辉886 分享

  多周期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 +

什么是多周期CPU设计

时间: 文辉886 分享

  多周期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 +

  ==>比较指令

  (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};<-pc+4,返回地址设置;子程序返回,需用指令 jr 。

  ==>停机指令

  (16)halt (停机指令)

  11111100000000000000000000000000(26位)

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

1700366