什么是多周期CPU設(shè)計
多周期CPU設(shè)計和單周期CPU的設(shè)計相同,都是為了實現(xiàn)一系列的指令功能,以下是小編為大家整理推薦關(guān)于多周期CPU設(shè)計,希望對您有所幫助。
多周期CPU設(shè)計
和單周期CPU的設(shè)計相同,都是為了實現(xiàn)一系列的指令功能,但需要指出的是何為多周期(注意與前面寫道的單周期的區(qū)別,這也是設(shè)計的關(guān)鍵之處)
多周期CPU指的是將整個CPU的執(zhí)行過程分成幾個階段,每個階段用一個時鐘去完成,然后開始下一條指令的執(zhí)行,而每種指令執(zhí)行時所用的時鐘數(shù)不盡相同,這就是所謂的多周期CPU。
理解完多周期與單周期的區(qū)別后,開始我們的多周期CPU設(shè)計之路(可以隨時對應(yīng)單周期的設(shè)計,注意聯(lián)系與區(qū)別)。
需要設(shè)計的指令及格式如下:
==>算術(shù)運算指令
(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設(shè)計
多周期CPU設(shè)計和單周期CPU的設(shè)計相同,都是為了實現(xiàn)一系列的指令功能,以下是小編為大家整理推薦關(guān)于多周期CPU設(shè)計,希望對您有所幫助。
多周期CPU設(shè)計
和單周期CPU的設(shè)計相同,都是為了實現(xiàn)一系列的指令功能,但需要指出的是何為多周期(注意與前面寫道的單周期的區(qū)別,這也是設(shè)計的關(guān)鍵之處)
多周期CPU指的是將整個CPU的執(zhí)行過程分成幾個階段,每個階段用一個時鐘去完成,然后開始下一條指令的執(zhí)行,而每種指令執(zhí)行時所用的時鐘數(shù)不盡相同,這就是所謂的多周期CPU。
理解完多周期與單周期的區(qū)別后,開始我們的多周期CPU設(shè)計之路(可以隨時對應(yīng)單周期的設(shè)計,注意聯(lián)系與區(qū)別)。
需要設(shè)計的指令及格式如下:
==>算術(shù)運算指令
(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開始和轉(zhuǎn)移到的指令之間間隔條數(shù))
110100rs(5位)rt(5位)immediate(16位)
功能:if(rs=rt) pc <-pc+ 4 + (sign-extend)immediate <<2
==>跳轉(zhuǎn)指令
(13)j addr
111000addr[27..2]
功能:pc <{pc[31..28],addr[27..2],0,0},轉(zhuǎn)移
(14)jr rs
111001rs(5位)未用未用reserved
功能:pc<-rs,轉(zhuǎn)移
==>調(diào)用子程序指令
(15)jal addr
111010addr[27..2]
功能:調(diào)用子程序,pc <- {pc[31..28],addr[27..2],0,0};<-pc+4,返回地址設(shè)置;子程序返回,需用指令 jr 。
==>停機指令
(16)halt (停機指令)
11111100000000000000000000000000(26位)
不改變pc的值,pc保持不變。