Chương 4 Tính toán số học

)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.

pdf32 trang | Chia sẻ: lylyngoc | Lượt xem: 1680 | Lượt tải: 1download
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