Thực hiện bộxửlýMIPS cơbản
2. Thiết kếkhối datapath
3. Thiết kếcontrol unit
4. Kỹthuật đường ống lệnh
74 trang |
Chia sẻ: Mr Hưng | Lượt xem: 1338 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Thiết kế bộ xử lý theo kiến trúc MIPS, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
anh ghi nguồn thứ hai
• Lệnh lw/sw: Hằng số imm 16-bit được mở rộng thành 32-bit (tính địa chỉ)
• MemtoReg: tín hiệu điều khiển chọn dữ liệu đưa về thanh ghi đích:
• Lệnh kiểu R: lấy kết quả từ ALU result
• Lệnh lw: dữ liệu đọc (Read data) từ bộ nhớ dữ liệu
NKK-HUST
Datapath đơn giản cho các lệnh R/lw/sw/branch
Jan2015 Computer Architecture - MIPS 25
• PCSrc: tín hiệu điều khiển chọn giá trị cập nhật PC
• Không rẽ nhánh: PC ß PC+4
• Rẽ nhánh: PC ß (PC+4) + (hằng số imm đã mở rộng thành 32-bit << 2)
NKK-HUST
3. Thiết kế Control Unit
n Đơn vị điều khiển có hai phần:
n Bộ điều khiển ALU
n Bộ điều khiển chính
Jan2015 Computer Architecture - MIPS 26
NKK-HUST
Thiết kế bộ điều khiển ALU
n ALU được sử dụng để:
n Load/Store: F = add (xác định địa chỉ bộ nhớ dữ liệu)
n Branch: F = subtract (so sánh)
n Các lệnh số học/logic : F phụ thuộc vào funct code
ALU control lines Function
0000 AND
0001 OR
0010 add
0110 subtract
0111 set-on-less-than
1100 NOR
Jan2015 Computer Architecture - MIPS 27
NKK-HUST
Tín hiệu điều khiển ALU
n Bộ điều khiển ALU sử dụng mạch logic tổ hợp:
n Đầu vào: 2-bit ALUOp được tạo ra từ opcode của
lệnh và 6-bit của function code
n Đầu ra: các tín hiệu điều khiển ALU (ALU control)
gồm 4 bit
Opcode ALUOp Operation funct ALU function ALU control
lw 00 load word XXXXXX add 0010
sw 00 store word XXXXXX add 0010
beq 01 branch equal XXXXXX subtract 0110
R-type 10 add 100000 add 0010
subtract 100010 subtract 0110
AND 100100 AND 0000
OR 100101 OR 0001
set-on-less-than 101010 set-on-less-than 0111
Jan2015 Computer Architecture - MIPS 28
NKK-HUST
Thiết kế bộ điều khiển chính
n Các tín hiệu điều khiển được tạo ra từ lệnh
0 rs rt rd shamt funct
31:26 5:0 25:21 20:16 15:11 10:6
35 or 43 rs rt imm
31:26 25:21 20:16 15:0
4 rs rt imm
31:26 25:21 20:16 15:0
R-type
lw/sw
beq
opcode always
read
read,
except
for load
write for
R-type
and load
sign-extend
and add
Jan2015 Computer Architecture - MIPS 29
NKK-HUST
Datapath và Control Unit
Jan2015 Computer Architecture - MIPS 30
NKK-HUST
Các tín hiệu điều khiển
Jan2015 Computer Architecture - MIPS 31
Tên tín hiệu Hiệu ứng khi tín hiệu = 0 Hiệu ứng khi tín hiệu = 1
RegDst Số hiệu thanh ghi đích là các
bit 20:16 (rt)
Số hiệu thanh ghi đích là các bit 15:11
(rd)
Branch Không có lệnh rẽ nhánh beq Có lệnh rẽ nhánh beq
(Branch =1) & (Zero=1): rẽ nhánh xảy
ra
(Branch =1) & (Zero=0): rẽ nhánh
không xảy ra
RegWrite Không làm gì cả Ghi dữ liệu trên đầu vào Write Data ở
tập thanh ghi đến thanh ghi đích
ALUSrc Toán hạng thứ hai của ALU
lấy từ thanh ghi nguồn thứ
hai (Read data 2)
Toán hạng thứ hai của ALU là giá trị 16
bit thấp của lệnh (bits 15:0) được mở
rộng có dấu thành 32-bit
PCSrc PC ß PC+4 PC ß địa chỉ đích
NKK-HUST
Các tín hiệu điều khiển (tiếp)
Jan2015 Computer Architecture - MIPS 32
Tên tín hiệu Hiệu ứng khi tín hiệu = 0 Hiệu ứng khi tín hiệu = 1
MemRead Không làm gì cả
Nội dung ngăn nhớ dữ liệu, được xác
định bởi địa chỉ do ALU tính, được đưa
ra đầu ra Read data của bộ nhớ dữ
liệu
MemWrite Không làm gì cả
Dữ liệu trên đầu vào Write Data của bộ
nhớ dữ liệu được ghi vào ngăn nhớ có
địa chỉ do ALU tính
MemtoReg Giá trị được đưa đến đầu
vào Write data của tập thanh
ghi là từ ALU result
Giá trị được đưa đến đầu vào Write
data của tập thanh ghi là từ bộ nhớ dữ
liệu
NKK-HUST
Thực hiện lệnh số học/logic kiểu R
Jan2015 Computer Architecture - MIPS 33
NKK-HUST
Thực hiện lệnh Load
Jan2015 Computer Architecture - MIPS 34
NKK-HUST
Thực hiện lệnh beq
Jan2015 Computer Architecture - MIPS 35
NKK-HUST
Thực hiện lệnh Jump
n Bits 31:26 là mã thao tác = 000010
n Bits 25:0: phần địa chỉ
n PC nhận giá trị sau:
n Địa chỉ đích = PC3128 : (address << 2)
n 4 bit bên trái là của PC cũ
n 26-bit của lệnh jump (bits 25:0)
n 2 bit cuối là 00
n Cần thêm tín hiệu điều khiển được giải mã từ
opcode
2 address
31:26 25:0
Jan2015 Computer Architecture - MIPS 36
NKK-HUST
Datapath thêm cho lệnh jump
Jan2015 Computer Architecture - MIPS 37
NKK-HUST
Thiết kế đơn chu kỳ (single-cycle)
n Chu kỳ xung nhịp có độ dài bằng nhau với tất
cả các lệnh à chu kỳ xung nhịp được xác định
bởi thời gian thực thi lệnh lâu nhất
n Ví dụ: Lệnh load sử dụng 5 đơn vị chức năng:
Bộ nhớ lệnh → tập thanh ghi → ALU → bộ nhớ
dữ liệu → tập thanh ghi
n Thời gian thực hiện chương trình tăng à hiệu
năng giảm
n Chúng ta sẽ tăng hiệu năng bằng kỹ thuật
đường ống lệnh (pipelining)
Jan2015 Computer Architecture - MIPS 38
NKK-HUST
4. Đường ống lệnh ở MIPS
5 công đoạn:
1. IF: Instruction fetch from memory – Nhận lệnh từ
bộ nhớ
2. ID: Instruction decode & register read – Giải mã
lệnh và đọc thanh ghi
3. EX: Execute operation or calculate address – Thực
hiện thao tác hoặc tính toán địa chỉ
4. MEM: Access memory operand – Truy nhập toán
hạng bộ nhớ
5. WB: Write result back to register – Ghi kết quả trả
về thanh ghi
Jan2015 Computer Architecture - MIPS 39
NKK-HUST
Hiệu năng của đường ống
n Giả thiết thời gian cho các công đoạn:
n 100ps với đọc hoặc ghi thanh ghi
n 200ps cho các công đoạn khác
n Thời gian của datapath đơn chu kỳ với một số
lệnh:
Instr Instr fetch Register
read
ALU op Memory
access
Register
write
Total time
lw 200ps 100 ps 200ps 200ps 100 ps 800ps
sw 200ps 100 ps 200ps 200ps 700ps
R-format 200ps 100 ps 200ps 100 ps 600ps
beq 200ps 100 ps 200ps 500ps
Jan2015 Computer Architecture - MIPS 40
NKK-HUST
Hiệu năng của đường ống
Single-cycle (Tc= 800ps)
Pipelined (Tc= 200ps)
Jan2015 Computer Architecture - MIPS 41
NKK-HUST
Độ tăng tốc của đường ống
n Nếu tất cả các công đoạn có thời gian
thực hiện như nhau và số lệnh của
chương trình là lớn:
Thời gian thực hiện pipeline =
Thời gian thực hiện tuần tự
Số công đoạn
Jan2015 Computer Architecture - MIPS 42
NKK-HUST
Thiết kế đường ống lệnh
n Kiến trúc tập lệnh MIPS được thiết kế phù
hợp với kỹ thuật đường ống
n Tất cả các lệnh là 32-bits
n Dễ dàng để nhận và giải mã lệnh trong một chu kỳ
n Intel x86: lệnh từ 1 đến 17 bytes
n Có ít dạng lệnh và thông dụng
n Có thể giải mã và đọc thanh ghi trong một bước
n Địa chỉ hóa cho các lệnh load/store
n Có thể tính địa chỉ trong công đoạn thứ 3, truy cập
bộ nhớ công đoạn thứ 4
n Toán hạng bộ nhớ nằm thẳng hàng trên các
băng nhớ
n Truy cập bộ nhớ chỉ mất một chu kỳ
Jan2015 Computer Architecture - MIPS 43
NKK-HUST
Các mối trở ngại (Hazard) của đường ống lệnh
n Hazard: Tình huống ngăn cản bắt đầu
của lệnh tiếp theo ở chu kỳ tiếp theo
n Hazard cấu trúc: do tài nguyên được yêu
cầu đang bận
n Hazard dữ liệu: cần phải đợi để lệnh trước
hoàn thành việc đọc/ghi dữ liệu
n Hazard điều khiển: do rẽ nhánh gây ra
Jan2015 Computer Architecture - MIPS 44
NKK-HUST
Hazard cấu trúc
n Xung đột khi sử dụng tài nguyên
n Trong đường ống của MIPS với một bộ
nhớ dùng chung
n Lệnh Load/store yêu cầu truy cập dữ liệu
n Nhận lệnh cần trì hoãn cho chu kỳ đó
n Bởi vậy, datapath kiểu đường ống yêu
cầu bộ nhớ lệnh và bộ nhớ dữ liệu tách
rời (hoặc cache lệnh/cache dữ liệu tách
rời)
Jan2015 Computer Architecture - MIPS 45
NKK-HUST
Hazard dữ liệu
n Lệnh phụ thuộc vào việc hoàn thành truy
cập dữ liệu của lệnh trước đó
add $s0, $t0, $t1
sub $t2, $s0, $t3
Jan2015 Computer Architecture - MIPS 46
NKK-HUST
Forwarding (gửi vượt trước)
n Sử dụng kết quả ngay sau khi nó được tính
n Không đợi đến khi kết quả được lưu đến thanh
ghi
n Yêu cầu có đường kết nối thêm trong datapath
Jan2015 Computer Architecture - MIPS 47
NKK-HUST
Hazard dữ liệu với lệnh load
n Không phải luôn luôn có thể tránh trì hoãn
bằng cách forwarding
n Nếu giá trị chưa được tính khi cần thiết
n Không thể chuyển ngược thời gian
n Cần chèn bước trì hoãn (stall hay bubble)
Jan2015 Computer Architecture - MIPS 48
NKK-HUST
Lập lịch mã để tránh trì hoãn
n Thay đổi trình tự mã để tránh sử dụng kết
quả load ở lệnh tiếp theo
n Mã C:
a = b + e; c = b + f;
lw $t1, 0($t0)
lw $t2, 4($t0)
add $t3, $t1, $t2
sw $t3, 12($t0)
lw $t4, 8($t0)
add $t5, $t1, $t4
sw $t5, 16($t0)
stall
stall
lw $t1, 0($t0)
lw $t2, 4($t0)
lw $t4, 8($t0)
add $t3, $t1, $t2
sw $t3, 12($t0)
add $t5, $t1, $t4
sw $t5, 16($t0)
11 cycles 13 cycles
Jan2015 Computer Architecture - MIPS 49
NKK-HUST
Hazard điều khiển
n Rẽ nhánh xác định luồng điều khiển
n Nhận lệnh tiếp theo phụ thuộc vào kết quả
rẽ nhánh
n Đường ống không thể luôn nhận đúng lệnh
n Vẫn đang làm ở công đoạn giải mã lệnh (ID)
của lệnh rẽ nhánh
n Với đường ống của MIPS
n Cần so sánh thanh ghi và tính địa chỉ đích
sớm trong đường ống
n Thêm phần cứng để thực hiện việc đó
trong công đoạn ID
Jan2015 Computer Architecture - MIPS 50
NKK-HUST
Trì hoãn khi rẽ nhánh
n Đợi cho đến khi kết quả rẽ nhánh đã được
xác định trước khi nhận lệnh tiếp theo
Jan2015 Computer Architecture - MIPS 51
NKK-HUST
Dự đoán rẽ nhánh
n Những đường ống dài hơn không thể
sớm xác định dễ dàng kết quả rẽ nhánh
n Cách trì hoãn không đáp ứng được
n Dự đoán kết quả rẽ nhánh
n Chỉ trì hoãn khi dự đoán là sai
n Với MIPS
n Có thể dự đoán rẽ nhánh không xẩy ra
n Nhận lệnh ngay sau lệnh rẽ nhánh (không
làm trễ)
Jan2015 Computer Architecture - MIPS 52
NKK-HUST
MIPS với dự đoán rẽ nhánh không xẩy ra
Prediction
correct
Prediction
incorrect
Jan2015 Computer Architecture - MIPS 53
NKK-HUST
Đặc điểm của đường ống
n Kỹ thuật đường ống cải thiện hiệu năng
bằng cách tăng số lệnh thực hiện
n Thực hiện nhiều lệnh đồng thời
n Mỗi lệnh có cùng thời gian thực hiện
n Các dạng hazard:
n Cấu trúc, dữ liệu, điều khiển
n Thiết kế tập lệnh ảnh hưởng đến độ phức
tạp của việc thực hiện đường ống
Jan2015 Computer Architecture - MIPS 54
NKK-HUST
MIPS Datapath được ống hóa theo đơn chu kỳ
WB
MEM
Jan2015 Computer Architecture - MIPS 55
NKK-HUST
Nhận xét
Jan2015 Computer Architecture - MIPS 56
n Các lệnh và các dữ liệu được chuyển từ
trái sang phải qua 5 công đoạn.
n Có hai ngoại lệ từ phải sang trái:
n Công đoạn write-back đặt kết quả về thanh
ghi ở giữa datapath à dẫn đến data hazard
n Chọn giá trị tiếp theo của PC là PC+4 hay địa
chỉ đích rẽ nhánh từ công đoạn MEM à dẫn
đến control hazard
NKK-HUST
Các thanh ghi đường ống
n Cần các thanh ghi đặt giữa các công đoạn
n Để giữ thông tin được tạo ra bởi chu kỳ trước
Jan2015 Computer Architecture - MIPS 57
NKK-HUST
Hoạt động của đường ống
n Dòng lệnh được đưa qua datapath
đường ống theo từng chu kỳ.
n Có hai cách thực hiện:
n Đơn chu kỳ (Single-clock-cycle)
n Đa chu kỳ (Multi-clock-cycle)
n Xem xét đường ống đơn chu kỳ với
load & store
Jan2015 Computer Architecture - MIPS 58
NKK-HUST
IF cho lệnh Load, Store
Jan2015 Computer Architecture - MIPS 59
NKK-HUST
ID cho lệnh Load, Store
Jan2015 Computer Architecture - MIPS 60
NKK-HUST
EX cho lệnh Load
Jan2015 Computer Architecture - MIPS 61
NKK-HUST
MEM cho lệnh Load
Jan2015 Computer Architecture - MIPS 62
NKK-HUST
WB cho lệnh Load
Wrong
register
number
Jan2015 Computer Architecture - MIPS 63
NKK-HUST
Datapath được hiệu chỉnh cho lệnh Load
Jan2015 Computer Architecture - MIPS 64
NKK-HUST
EX cho lệnh Store
Jan2015 Computer Architecture - MIPS 65
NKK-HUST
MEM cho lệnh Store
Jan2015 Computer Architecture - MIPS 66
NKK-HUST
WB cho lệnh Store
Jan2015 Computer Architecture - MIPS 67
NKK-HUST
Giản đồ đường ống đa chu kỳ
n Dạng tài nguyên được sử dụng
Jan2015 Computer Architecture - MIPS 68
NKK-HUST
Giản đồ đường ống đa chu kỳ
n Dạng truyền thống
Jan2015 Computer Architecture - MIPS 69
NKK-HUST
Giản đồ đường ống đơn chu kỳ
n Công đoạn của đường ống trong chu kỳ đã cho
Jan2015 Computer Architecture - MIPS 70
NKK-HUST
Điều khiển đường ống (dạng đơn giản)
Jan2015 Computer Architecture - MIPS 71
NKK-HUST
Điều khiển đường ống
n Các tín hiệu điều khiển được tạo ra từ lệnh
n Như thực hiện đơn chu kỳ
Jan2015 Computer Architecture - MIPS 72
NKK-HUST
Điều khiển đường ống
Jan2015 Computer Architecture - MIPS 73
NKK-HUST
Hết
Jan2015 Computer Architecture - MIPS 74
Các file đính kèm theo tài liệu này:
- mips_1s_2836.pdf