Tải bản đầy đủ (.ppt) (29 trang)

ĐỒ ÁN CẤU TRÚC MÁY TÍNH LAB 3 A MIPS 32-BIT SINGLE - CYCLE CPU

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (678.81 KB, 29 trang )

ĐỒ ÁN CẤU TRÚC MÁY TÍNH
LAB 3: A MIPS 32-BIT
SINGLE - CYCLE CPU
TRƯỜNG ĐẠI HỌC BÁCH KHOA
ĐÀ NẴNG
KHOA ĐIỆN TỬ - VIỄN THÔNG
Nhóm 2
MỤC LỤC
I. GiỚI THIỆU
II.XÂY DỰNG CPU
III.MÔ PHỎNG
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
Nhóm 28
I. GiỚI THIỆU:
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
Nhóm 28

Thiết kế bộ xử lý trung tâm MIPS chu kì đơn 32-bit
thực hiện các lệnh:
ADD, SUB, SLT, JR, LW, SW, BNE, XORI, J

Các cổng logic không có quá 4 ngõ vào, với delay 50ps.

Các khối điều khiển logic có thể dùng cấu trúc lệnh
behavioral.
Các câu lệnh:

Lệnh loại R:

ADD rd, rs, rt: Reg[rd] = Reg[rs] + Reg[rt].
JR rs: PC = Reg[rs].


SLT rd, rs, rt: If (Reg[rs] < Reg[rt]) Reg[rd] = 00000001(16)
else Reg[rd] = 0000000016.
SUB rd, rs, rt: Reg[rd] = Reg[rs] – Reg[rt].
ĐỒ ÁN CẤU TRÚC MÁY TÍNH Nhóm 28
Lệnh loại I:
BNE rs, rt, imm16: if (Reg[rs] != Reg[rt]) PC = PC + 4 +
Sign_ext(Imm16)<<2 else PC = PC + 4.
LW rt, imm16(rs): Reg[rt] = Mem[Reg[rs] + Sign_ext(Imm16)].
SW rt, imm16(rs): Mem[Reg[rs] + Sign_ext(Imm16)] = Reg[rt].
XORI rt, rs, imm16: Reg[rt] = Reg[rs] XOR Zero_ext(Imm16)
Các câu lệnh:
ĐỒ ÁN CẤU TRÚC MÁY TÍNH Nhóm 28
Lệnh loại Jump:
J target: PC = { PC[31:28], target, 00 }
Các câu lệnh:
ĐỒ ÁN CẤU TRÚC MÁY TÍNH Nhóm 28
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
1. Các khối cơ bản:
a. Khối tìm và lấy lệnh.
+ Bộ nhớ lệnh (Instruction memory)
+ Thanh ghi PC (Program Counter)
II. XÂY DƯNG CPU:
Nhóm 28
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
1. Các khối cơ bản:
a. Khối tìm và lấy lệnh.
II. XÂY DƯNG CPU:
Nhóm 28
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
ĐỒ ÁN CẤU TRÚC MÁY TÍNH

1. Các khối cơ bản:
b. File thanh ghi 32 bit (RegFile)
II. XÂY DƯNG CPU:
Nhóm 28
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
1. Các khối cơ bản:
c. Bộ ALU
II. XÂY DƯNG CPU:
Nhóm 28
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
1. Các khối cơ bản:
d. Bộ nhớ dữ liệu
II. XÂY DƯNG CPU:
Nhóm 28
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
2. Bổ sung Datapath

Lệnh loại R:

Lấy dữ liệu từ 2 thanh ghi Rs và Rt của RegFile,

Đưa vào khối tính toán ALU

Đưa kết quả tính toán vào thanh ghi Rd của RegFile

Riêng lệnh JR thì chỉ cần lấy dữ liệu từ RegFile để thay đổi
thanh ghi PC
Nhóm 28

ĐỒ ÁN CẤU TRÚC MÁY TÍNH
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
2. Bổ sung Datapath
ĐỒ ÁN CẤU TRÚC MÁY TÍNH

Lệnh loại R:
Nhóm 28
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
2. Bổ sung Datapath

Lệnh loại I:

Lấy dữ liệu từ thanh ghi Rs của RegFile

Mở rộng dấu cho 16bit immediate

Đưa vào khối tính toán ALU

Kết quả tính toán đưa về thanh ghi Rd của RegFile hoặc
làm địa chỉ truy cập vào bộ nhớ dữ liệu ( lw và sw)
Nhóm 28
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
2. Bổ sung Datapath

Lệnh loại I:
Bổ sung:

Bộ Mux chọn thanh ghi đích Rd hoặc Rt

Bộ mở rộng dấu


Bộ Mux chọn ngõ vào thứ 2 cho bộ ALU

Bộ Mux chọn giá trị ghi về thanh ghi Rt

Bộ dịch trái 2 bit ( phép nhân với 4)
Nhóm 28
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
2. Bổ sung Datapath
Nhóm 28
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
2. Bổ sung Datapath

Lệnh nhảy:

Nhảy có điều kiện: BNE

Nhảy không điều kiện: J, JR
Bổ sung:

Các bộ Mux chọn địa chỉ cho lệnh tiếp theo.

Các bộ cộng
Nhóm 28
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
PC = PC + 4
2. Bổ sung Datapath
Nhóm 28
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
Lệnh BNE (Brand if not equal)

2. Bổ sung Datapath
Nhóm 28
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
Lệnh JUMP
2. Bổ sung Datapath
Nhóm 28
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
Lệnh JR
2. Bổ sung Datapath
Nhóm 28
- RegWrite
- RegDst
- ALUSrc
- ALUOp
- MemRead
- MemWrite
- MemtoReg
- Branch
- Jump
- SignZero
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
3. Các khối điều khiển:
a. Khối điều khiển trung tâm (ControlUnit):
Tạo ra các tín hiệu điều khiển:
II. XÂY DƯNG CPU:
Nhóm 28
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
Bảng giải mã khối điều khiển trung tâm:
Nhóm 28
ĐỒ ÁN CẤU TRÚC MÁY TÍNH

Bảng giá trị điều khiển của khối ALU Control
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
3. Các khối điều khiển:
b. Khối điều khiển ALU (ALU_ControlUnit):
Tạo ra tín hiệu điều khiển bộ tính toán ALU:
II. XÂY DƯNG CPU:
Nhóm 28
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
ĐỒ ÁN CẤU TRÚC MÁY TÍNHĐỒ ÁN CẤU TRÚC MÁY TÍNH
3. Các khối điều khiển:
c. Khối điều khiển lệnh JR (JR_ControlUnit)
- Nếu ALUOp = 10 (R-type) và Function = 001000
=> JRControl = 1.
Ngược lại JRControl = 0
d. Tín hiệu điều khiển lệnh BNE (Bne_Control)
- Nếu Branch = 1 và ZeroFlag = 0
=> Bne_Control = 1
Ngược lại Bne_Control = 0
II. XÂY DƯNG CPU:
Nhóm 28

×