Đ I H C ĐÀ N NG
TR NG Đ I H C BÁCH KHOAƯỜ
KHOA ĐI N T -VI N THÔNG
Đ ÁN
VI X VÀ MÁY TÍNH
LAB 3 : MIPS Single-cycle CPU
SINH VIÊN TH C HI N: PHAN QU C TH NG 08DT3
HOÀNG THANH TÚ 08DT3
NGUY N TH TÙNG 08DT4
1. M C ĐÍCH:
Thi t k m t chip MIPS single-cycle đ n gi n đ th c thi c l nh ế ế ơ LW, SW, J , JR,
BNE, XORI, SLT, ADD, SUB trong m t chu kỳ l nh.
2. T NG QUAN:
2.1. Các b c th c thi l nh:ướ G m có 3 b c chính ư
- Dùng b đ m ch ng tnh PC l y đ a ch l nh trong b nh l nh ( Instruction ế ươ
Memory), c p nh t PC đ n gtr ti p theo. ế ế
- Gi i l nh b ng cách g i cái OPCODE vào kh i CONTROL.(Đ c giá tr các
thanh ghi t REGISTER FILE)
- Th c thi l nh.
2.2. Gi i thi u các l nh:
Page 1
Trong MIPS 3 khn d ng l nh R-Format, I-Format J-Format
•R-Format:
op rs rt rd shamt funct
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
•I-Format:
op rs rt immediate
6 bits 5 bits 5 bits 16 bits
•J-Format:
op immediate
6 bits 26 bits
V i op : 6 bits OPCODE
rs : 5 bits ch a mã đ a ch c a thanh ghi ngu n
rt : 5 bits ch a mã đ a ch c a thanh ghi ngu n
rd : 5 bits ch a mã đ a ch c a thanh ghi đích
shamt : 5 bits dùng trong các l nh d ch
funct: 6 bits dùng đ phân lo i trong c l nh R-Format
immediate : 16 bits ch a tn h ng đ a ch ofset
immediate : 26 bits ch a đ a ch đích trong l nh JUMP
-Khn d ng c th c a m i l nh:
Instruction Meaning Format
add rd,
rs, rt
C ng0 rs rt rd 0x20
sub rd,
rs, rt
Tr0 rs rt rd 0x22
slt rd,
rs, rt
Sonh 0 rs rt rd 0x2a
jr rs Nh y đ n ế
[rs]
0 rs rt 0 0x08
xori rt,
im
Xor
immediate
0x0e rs rt im
lw rt,
im
Load word 0x23 rs rt im
sw rt,
im
Store word 0x2b rs rt im
bne rs,
rt, im
Nh y n u ế
không
0x05 rs rt im
Page 2
b ng
j im Jump 0x02 im
2.3. Phân tích l nh:
- Đ i v i các lênh x lý d li u khuôn d ng R-Format – ADD, SUB, SLT :
Fetch instruction: Instruction ← MEM[PC]
Fetch operands: data1 ← Reg(Rs), data2 ← Reg(Rt)
Execute operation: ALU_result ← funct(data1, data2)
Write ALU result: Reg(Rd) ← ALU_result
Next PC address: PC ← PC + 4
- Đ i v i các lênh x d li u (I_FORMATXORI) :
Fetch instruction: Instruction ← MEM[PC]
Fetch operands: data1 ← Reg(Rs), data2extend-sign (imm16)
Execute operation: ALU_result ← XOR(data1, data2)
Write ALU result: Reg(Rt)ALU_result
Next PC address: PC ← PC + 4
- Đ i v i lênh load d li u (I_FORMAT – LW) :
Fetch instruction: Instruction ← MEM[PC]
Fetch base register: base ← Reg(Rs)
Calculate address: address ← base + extend-sign (imm16)
Read memory: data ← MEM[address]
Write register Rt:Reg(Rt) ← data
Next PC address: PC ← PC + 4
- Đ i v i lênh l u d li u (I_FORMATSW) : ư
Fetch instruction: Instruction ← MEM[PC]
Fetch registers: base ← Reg(Rs), data ← Reg(Rt)
Calculate address: address ← base + extend-sign (imm16)
Write memory: MEM[address] ← data
Next PC address: PC ← PC + 4
- Đ i v i lênh r nhánh (I_FORMAT – BNE) :
Fetch instruction: Instruction ← MEM[PC]
Fetch operands: data1 ← Reg(Rs), data2 ← Reg(Rt)
Execute operation: ALU_result ← SUB (data1, data2)
Branch: if (zero!=0) PC(PC + 4) + extend-sign(imm16)
else PC ← PC + 4
Page 3
- Đ i v i lênh nh y (J_FORMAT – JUMP) :
Fetch instruction: Instruction ← MEM[PC]
Target PC address: target ← PC[31:28] , Imm26 , ‘00’
Jump: PC ← target
- Đ i v i lênh nh y (R_FORMAT –JR) :
Fetch instruction: Instruction ← MEM[PC]
Fetch operands: address ← Reg(Rs)
Jump: PC ← address
3. CÁC KH I C S C N THI T: Ơ
- Sau khi pn tích ch ho t đ ng m i l nh, ta s y d ng các kh i c b n đ th c thi ơ
các l nh đó
3.1 Kh i PC:
- Kh i b đ m ch ng trình, tác d ng nh m t b đ m đ ch đ n đ a ch c a ế ươ ư ế
câu l nh ti p theo. ế
- Gtr đ u vào đ c xác đ nhy theo câu l nh m i đ c th c hi n. ượ ượ
3.2 Kh i Instruction Memory:
- kh i l u các l nh c n th c thi, g m 1 đ u vào 32 bits address đ u ra 32 ư
bits instruction
- Đ a ch đ u o đ c l y t PC s tham chi u đ n file l u l nh d i tên ượ ế ế ư ướ
instr.dat ( đây Instruction Memory đ c đánh đ a ch theo word nên ta ph i l y đ a ch ượ
trong
PC / 4 và làm tròn.)
- File instr.dat file ch a mã y c a các câu l nh c n th c hi n. Đ u ra s
y ng v i đ a ch c a instruction memory đ c tham chi u t i. ượ ế
Page 4
WE
DATAIN[31..0]
WADDR[9..0]
RADDR[9..0]
DATAOUT[31..0]
SYNC_RAM
BUF (SOFT)
0buf[31..0]
instruction[31..0]
instrmem
32' h00000000 --
10' h000 --
address[31..0]
3.3 Kh i ADD: C ng 2 tín hi u vào 32bit, kh i này đ c y d ng t 32 kh i add_bit ượ
đã đ c làm rõ trong i 2.ượ
3 kh i dùng đ Store/Fetch Instruction, và tăng thanh ghi PC lên.T 3 kh i trên ta xây
d ng đ c datapath nh sau: ượ ư
3.4 Kh i register file:
Page 5