1. GV: Nhóm 9:
Ths. HỒ VIẾT VIỆT HOÀNG VĂN QUỐC
NGUYỄN THỊ NGỌC LINH
NGUYỄN ĐÌNH SƠN
LÊ THANH HÙNG
NGUYỄN NGỌC GIÁP
2.
3. Có thể đọc 1 lúc 2 register
Không cần tín hiệu điều khiển đọc
Register luôn luôn bằng 0
Chỉ có thể ghi đối với 1 register
Cần tín hiệu điều khiển ghi
4. Cấu trúc đơn giản và có quy tắc
Nhỏ gọn và xử lý nhanh
Thiết kế sự đòi hỏi sự thỏa hiệp tốt
5. Cấu tạo 1 Register File bao gồm:
- 32 thanh ghi 32 bit, riêng thanh ghi đầu
tiên (Reg0) luôn mang giá trị 0, chỉ có thể
đọc mà không thể ghi .
- Có 4 ngõ vào gồm 2 ngõ vào chọn thanh
ghi cần đọc ( Read register 1 & Read
Register2),1 ngõ vào để chọn thanh ghi cho
thao tác ghi ( Write Register) và 1 ngõ vào
chứa dữ liệu cần ghi vào thanh ghi (Write
Data)
- Có 2 ngõ ra dữ liệu 32 bit ( Read Data 1
& Read Data 2)
- 1 ngõ vào để điều khiển quá trình ghi
(RegWrite)
7. -Decoder(bộ giải mã 5:32) có nhiệm
vụ giải mã 5 bit ngõ vào Write Register
dưới sự điều khiển của RegWrite để
lựa chọn thanh ghi được yêu cầu
cho quá trình ghi.
-Để thiết kế bộ giải mã 5:32 ta có thể
xây dựng dễ dàng hơn từ các bộ
giải mã 2:4 và 3:8
8. + Mạch giải mã 2:4
2->4
A
B
Y0
Y1
Y2
Y3
Sơ đồ khối
Bảng chân trị
A B Y0 Y1 Y2 Y3
0 0 1 0 0 0
0 1 0 1 0 0
1 0 0 0 1 0
1 1 0 0 0 1
Sơ đồ thiết kế
15. 32 thanh ghi ngõ vào
Mux
8-1
Mux
8-1
Mux
8-1
Mux
8-1
Mux
4-1
Thanh ghi được chọn ở ngõ ra
+Mux 32-1(32bits) 5 bits Select
16.
17.
18. Yêu Cầu Thiết Kế :
- Thực hiên được phép toán : Add, Sub, Xor, Set Less Than.
- Cờ lệnh : zero, carry, overflow.
Cấu Tạo khối ALU:
- Tín hiệu điều khiển 2 bit
- Hai ngõ vào 32 bit.
- Một ngõ ra 32 bit.
- Cờ ngõ ra : zero, carry, overflow
19. II.Thiết kế
1. Khối phép toán
1.1.Mạch Add & Sub
Input Output
a b Cin sum Cout
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
Input Output
a b Cin Sub Cout
0 0 0 0 0
0 0 1 1 1
0 1 0 1 1
0 1 1 0 1
1 0 0 1 0
1 0 1 0 0
1 1 0 0 0
1 1 1 1 1
Sum= a xor b xor cin
Cout = ab + cin(a+b)
Sub= a xor b xor cin
Cout = nota.b + cin(nota +b)
24. Kiểm tra bit dấu của A - B
Overflow Result 31 SLT
0 0 0
0 1 1
1 0 1
1 1 0
25. 2.Cờ Lệnh
Phép Toán Zero Carry Overflow
Add Y Y Y
Sub Y Y Y
Xor Y N N
SLT Y N N
26. 2.1. Overflow:
Khi thực hiện phép cộng hoặc trừ với số có dấu => tràn có dấu
cờ Overflow được set 1.
27. 2.2. Carry
-Khi thực hiện phép cộng hoặc trừ số không dấu => tràn (có nhớ /mượn từ bit MSB)
Cờ carry set lên 1
28. - Khi kết quả các phép toán bằng 0 => cờ zero set 1.
- Dùng lệnh nor tất cả các bit từ 0 đến 31 của kết quả để kiểm tra cờ Zero
2.3. Cờ Zero
29. 3. Các khối hỗ trợ
3.1. Multiplexor 2-1 ( 1 bit)
2 bit vào => 1 bit ra
30. 4 bit vào => 2 bit ra
Ứng dụng : điều khiển các cờ hiển thị theo tín hiệu điều khiển.
Phép Toán Zero Carry Overflow
Add Y Y Y
Sub Y Y Y
Xor Y N N
SLT Y N N
32.
Ứng dụng : điều khiển hiển thị kết quả của các phép toán theo tín hiệu điều khiển vào
Tín hiệu
điều khiển
Phép Toán
00 Add
10 Sub
01 Xor
11 SLT
35. Cờ Negative: gán cờ Negative bằng bit thứ 31 của kết quả.
+ Bit thứ 31 = 1 (kết quả âm): cờ được set
+ Bit thứ 31 = 0 (kết quả dương): cờ không được set
36. 2.1. Cờ Zero
Cờ zero: được set khi kết quả bằng 0
Cờ overflow (tràn khi thực hiện cộng trừ với số có dấu): được set khi xảy ra
tràn
Cờ carryout (tràn khi thực hiện cộng trừ với số không dấu): xảy ra khi có
nhớ (mượn) từ MSB
Cờ negative: được set nếu kết quả âm
2.Cờ Lệnh
37. Overflow (tràn có dấu –xảy ra khi kết quả phép toán vượt quá dải giới
hạn tính toán).
Vì vậy, có thể phát hiện overflow bằng cách so sánh cin và cout của bit
thứ 31, nếu trái dấu thì xảy ra overflow