)Máy tính biểu diễn thông tin dưới dạng nhị phân
)Các đại lượng số đếm cũng biểu diễn dưới dạng
nhị phân
)Một số câu hỏi thường gặp
• Cách biểu diễn số đếm trên máy tính ?
• Các giới hạn trong biểu diễn số đếm ?
• Cách tính toán trên sốnhị phân ?
•Số thực ? v.v.
32 trang |
Chia sẻ: lylyngoc | Lượt xem: 1690 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Chương 4 Tính toán số học, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Khoa KH & KT Máy tính
Boää moânâ Kyõõ thuaäät Maùùy tính
Phaïïm Töôøøng Haûûi
Nguyeãnã Quoáác Tuaáán
Kiến trúc Máy tính - Chap 04 2
Tài liệu tham khảo
) “Computer Organization and Design: the hardware/software
interface”,
John L. Hennessy & David A. Patterson, Second Edition,
MORGAN KAUFMANN PUBLISHERS, INC. 1998
) “Computer Architecture: a quantitative approach”,
John L. Hennessy & David A. Patterson, Third Edition,
MORGAN KAUFMANN PUBLISHERS, INC. 2002
Kiến trúc Máy tính - Chap 04 3
Chương 4.
Kiến trúc Máy tính - Chap 04 4
4.1 Dẫn nhập
)Máy tính biểu diễn thông tin dưới dạng nhị phân
)Các đại lượng số đếm cũng biểu diễn dưới dạng
nhị phân
)Một số câu hỏi thường gặp
• Cách biểu diễn số đếm trên máy tính ?
• Các giới hạn trong biểu diễn số đếm ?
• Cách tính toán trên số nhị phân ?
• Số thực ? v.v...
)Nội dung của chương này bao gồm
• Biểu diễn số đếm trên máy tính
• Các giải thuật tính toán
• Phần cứng hiện thực giải thuật tính toán
• Nhóm lệnh tính toán
Kiến trúc Máy tính - Chap 04 5
4.2 Số nguyên có dấu và không dấu
)MIPS biểu diễn số nguyên theo từ (word) có kích thước
32 bit
) Td. biểu diễn giá trị 10112
0000 0000 0000 0000 0000 0000 0000 1011
• Bit trọng số thấp nhất (least significant bit) nằm bên phải cùng
• Bit trọng số cao nhất (most significant bit) nằm bên trái cùng
) Tầm vực giá trị biểu diễn ở số nguyên không dấu
• Nhỏ nhất là 0 , lớn nhất là 232 – 1 (4.294.967.295)
0000 0000 0000 0000 0000 0000 0000 0000
1111 1111 1111 1111 1111 1111 1111 1111
)Các bit không có nghĩa là các bit 0 nằm ở bên trái của
số đếm
Kiến trúc Máy tính - Chap 04 6
...
)MIPS biểu diễn số nguyên âm theo bù 2
• Bit dấu (sign bit) là bit nằm phía trái cùng
• Tầm vực giá trị biểu diễn từ - 2(32-1) cho đến 2(32-1) -1
1000 0000 0000 0000 0000 0000 0000 0000
0111 1111 1111 1111 1111 1111 1111 1111
)Vấn đề mở rộng dấu (sign extension)
• Td. biểu diễn giá trị -5
toán hạng 8 bit 1111 1011
toán hạng 16 bit 1111 1111 1111 1011
toán hạng 32 bit 1111 1111 1111 1111 1111 1111 1111 1011
• Lưu ý về các bit không có nghĩa ?
)Các lệnh liên quan đến số nguyên có dấu và không dấu
• lb và lbu , slt và sltu , slti và sltiu
Kiến trúc Máy tính - Chap 04 7
4.3 Cộng và trừ
)Cộng trừ nhị phân theo số bù 2
)Kết quả của phép cộng/trừ vượt quá giới hạn biểu diễn ?
• Tràn bit (carry)
• Tràn dấu (overflow)
• Điều kiện
gây tràn dấu
• Xử lý tràn ?
)Các lệnh số học
• Cộng/trừ số nguyên có dấu add , addi , sub
Ö sinh ra ngoại lệ (exception) thông báo đến bộ điều khiển
• Cộng/trừ số nguyên không dấu addu , addiu , subu
) Thanh ghi EPC (exception program counter) chứa địa
chỉ của câu lệnh sinh ra ngoại lệ
• Lệnh mfc0 reg , $epc (move from system control)
≥ 0≥ 0< 0A - B
< 0< 0≥ 0A - B
≥ 0< 0< 0A + B
< 0≥ 0≥ 0A + B
Kết quảBAPhép toán
Kiến trúc Máy tính - Chap 04 8
...
)Phân tích đoạn chương trình sau
addu $t0 , $t1 , $t2
xor $t3 , $t1 , $t2
slt $t3 , $t3 , $zero
bne $t3 , $zero , No_overflow
xor $t3 , $t0 , $t1
slt $t3 , $t3 , $zero
bne $t3 , $zero , Overflow
Kiến trúc Máy tính - Chap 04 9
...
)Phân tích đoạn chương trình sau
addu $t0 , $t1 , $t2
nor $t3 , $t1 , $zero
sltu $t3 , $t3 , $t2
bne $t3 , $zero , Overflow
Kiến trúc Máy tính - Chap 04 10
4.4 Các phép toán luận lý
)Các phép toán luận lý cơ bản
• and , andi
• or , ori
)Các lệnh dịch (shift)
• Dịch luận lý (logical shift)
sll rd , rt , shamt và sllv rd , rt , rs
srl rd , rt , shamt và srlv rd , rt , rs
• Dịch số học (arithmetic shift)
sra rd , rt , shamt và srav rd , rt , rs
)Dạng thức lệnh dịch trái luận lý
• Td. sll $t2 , $s0 , 8
functshamtrdrtrsop
08101600
Kiến trúc Máy tính - Chap 04 11
4.5 Đơn vị số học – luận lý
)Đơn vị số học – luận lý (ALU – Arithmetic Logic Unit)
đảm nhận việc thực hiện các phép toán cho bộ xử lý
)MIPS là bộ xử lý có độ dài từ là 32 bit nên cần đơn vị
ALU 32 bit
)Các mạch phần cứng cơ bản
a
b
c
d
0
1
a
b
Sum
Cin
Cout+
Kiến trúc Máy tính - Chap 04 12
...
) ALU 1 bit ) ALU 32 bit
+
0
1
2
a
b
Result
OperationCin
Cout
Cin
ALU0
Cout
Cin
ALU1
Cout
Cin
ALU2
Cout
Cin
ALU31
Cout
Cin Operation
a0
b0
a1
b1
a2
b2
a31
b31
Result0
Result1
Result2
Result31
Kiến trúc Máy tính - Chap 04 13
...
) Tinh chỉnh đơn vị ALU
+
0
1
2
a
b
Result
OperationCin
Cout
0
1
B invert
+
0
1
2
a
b
Result
OperationCin
Cout
0
1
B invert
3Less
Kiến trúc Máy tính - Chap 04 14
...
) Tinh chỉnh đơn vị ALU (tt)
Cin
ALU0
Cout
a0
b0
Less
Cin Operation
Result0
Result1
Result2
Cin
ALU1
Cout
a1
b1
0 Less
Cin
ALU2
Cout
a2
b2
0 Less
Cin
ALU31
Cout
a31
b31
0 Less
B invert
Result31
Overflow
Set
+
0
1
2
a
b
Result
OperationCin
Set
0
1
B invert
3Less
Overflow
Overflow
Kiến trúc Máy tính - Chap 04 15
...
) Tinh chỉnh đơn vị ALU (tt)
Cin
ALU0
Cout
a0
b0
Less
Cin Operation
Result0
Result1
Result2
Cin
ALU1
Cout
a1
b1
0 Less
Cin
ALU2
Cout
a2
b2
0 Less
Cin
ALU31
Cout
a31
b31
0 Less
B invert
Result31
Overflow
Set
Zero ALU
a
b
ALU operation
Zero
Result
Overflow
Carry out
Kiến trúc Máy tính - Chap 04 16
4.6 Mạch nhân
)Phép toán nhân
Số bị nhân (Multiplicand) 10002
Số nhân (Multiplier) 10012
1000
0000
0000
1000
Tích (Product) 10010002
)Hiện thực
• Bằng chương trình dựa trên các phép toán cộng/trừ
• Bằng mạch phần cứng
Kiến trúc Máy tính - Chap 04 17
...
)Mạch nhân dạng 1
• Sơ đồ khối
• Giải thuật
• Minh họa
Kiến trúc Máy tính - Chap 04 18
...
)Mạch nhân dạng 2
• Sơ đồ khối
• Giải thuật
• Minh họa
Kiến trúc Máy tính - Chap 04 19
...
)Mạch nhân dạng 3
• Sơ đồ khối
• Giải thuật
• Minh họa
Kiến trúc Máy tính - Chap 04 20
...
)Nhân số nguyên có dấu
• Nhân phần trị tuyệt đối, sau đó xác định dấu cho tích số
• Giải thuật Booth: căn cứ
trên chuỗi bit 1 ở số nhân
)Nhân trong tập lệnh MIPS
• Tích số là 1 giá trị 64 bit được chứa trong cặp thanh ghi hi và lo
• Lệnh nhân mult rs , rt
multu rs , rt
• Lệnh chuyển dữ liệu tích số
mfhi rd
mflo rd
Không làm gì cả11
Trừ đi số bị nhân01
Cộng thêm số bị nhân10
Không làm gì cả00
Thực hiệnai-1ai
Kiến trúc Máy tính - Chap 04 21
4.7 Mạch chia
)Phép toán chia
Số bị chia (Dividend) 10010102 10002 Số chia (Divisor)
- 1000
10
101
1011
- 1000
Số dư (Remainder) 10
)Hiện thực
• Bằng chương trình dựa trên các phép toán cộng/trừ
• Bằng mạch phần cứng
10012 Thương số
(Quotient)
Kiến trúc Máy tính - Chap 04 22
...
)Mạch chia dạng 1
• Sơ đồ khối
• Giải thuật
• Minh họa
Kiến trúc Máy tính - Chap 04 23
...
)Mạch chia dạng 2
• Sơ đồ mạch
• Giải thuật ?
• Minh họa
)Mạch chia dạng 3
• Sơ đồ mạch
Kiến trúc Máy tính - Chap 04 24
...
)Mạch chia dạng 3 (tt)
• Giải thuật
• Minh họa
Kiến trúc Máy tính - Chap 04 25
...
)Chia số nguyên có dấu
• Chia phần trị tuyệt đối, sau đó xác định dấu cho thương số
)Chia trong tập lệnh MIPS
• Sử dụng thanh ghi hi để chứa số dư và lo để chứa thương số
• Lệnh chia
div rs , rt
divu rs , rt
• Lệnh chuyển dữ liệu thương số và số dư
mfhi rd
mflo rd
Kiến trúc Máy tính - Chap 04 26
4.8 Số thực dấu chấm động
)Biểu diễn số thực
• Công thức tổng quát
(-1)Sign × Significand × 2Exponent
• Dạng thức 32 bit
• Dạng thức 64 bit
23 bits8 bits1bit
significandexponents
b22 ... B0b30 ... b23b31
52 bits11 bits1bit
significandexponents
b51 ... b0b62 ... b52b63
Kiến trúc Máy tính - Chap 04 27
...
)MIPS biểu diễn số thực dấu chấm động theo chuẩn
IEEE 754
)Chuẩn IEEE 754
• Công thức
(-1)Sign × (1 + Significand) × 2(Exponent – Bias)
• Phần significand biểu diễn giá trị có độ lớn nằm từ 0 đến 1
• Phần bias của exponent là 127
• Thí dụ. Biểu diễn dạng IEEE 754 của giá trị -0.75
?
• Thí dụ. Xác định giá trị thập phân của số thực dấu chấm
động 32-bit sau
1 10000001 0100000000000000000000000000....
?
Kiến trúc Máy tính - Chap 04 28
...
)Cộng số thực
• Giải thuật
• Minh họa (cơ số 10)
9.999 × 101
+ 1.610 × 10-1
Kiến trúc Máy tính - Chap 04 29
...
)Nhân số thực
• Giải thuật
• Minh họa (cơ số 10)
1.110 × 1010
× 9.200 × 10-5
Kiến trúc Máy tính - Chap 04 30
...
) Lệnh số thực ở MIPS
• MIPS có coprocessor để tính toán số thực 32-bit (single) lẫn
64-bit (double)
• Các thanh ghi số thực (32 bit) là $f0 ÷ $f31
• 2 thanh ghi 32-bit dùng để chứa 1 giá trị double
• Lệnh cộng
add.s fd , fs , ft
add.d fd , fs , ft
• Lệnh trừ
sub.s fd , fs , ft
sub.d fd , fs , ft
• Lệnh nhân
mul.s fd , fs , ft
mul.d fd , fs , ft
Kiến trúc Máy tính - Chap 04 31
...
) Lệnh số thực ở MIPS (tt)
• Lệnh chia
div.s fd , fs , ft
div.d fd , fs , ft
• Lệnh so sánh
c.cond.s fs , ft
c.cond.d fs , ft
Với cond là eq neq lt le gt ge
• Lệnh rẽ nhánh
bclt và bclf
• Lệnh Load/Store
lwcl ft , address
swcl ft , address
Kiến trúc Máy tính - Chap 04 32
Bài tập
) 4.12 , 4.13 , 4.20
) 4.23 , 4.24
“Computer Organization and Design: the hardware/software
interface”,
John L. Hennessy & David A. Patterson, Second Edition,
MORGAN KAUFMANN PUBLISHERS, INC. 1998