Bài giảng Kiến trúc máy tính - Chương 4: Các phép số học
Các phép tính trên số nguyên
Cộng và Trừ
Nhân và Chia
Xử lý tràn
Số thực với dấu chấm di động (Floating-Point)
Cách biểu diễn và các phép tính
Cộng và Trừ
Nhân và Chia
Xử lý tràn
Số thực với dấu chấm di động (Floating-Point)
Cách biểu diễn và các phép tính
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kiến trúc máy tính - Chương 4: Các phép số học", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
File đính kèm:
- bai_giang_kien_truc_may_tinh_chuong_4_cac_phep_so_hoc.pdf
Nội dung text: Bài giảng Kiến trúc máy tính - Chương 4: Các phép số học
- dce 2017 Chapter 4.0 Các phép số học Kiến trúc Máy tính– Chương 4 © Fall 2017 2
- dce 2017 Nhắc lại mạch số Môn học: Nhập môn điện toán (Năm I) Thiết kế hệ thống số Kiến trúc Máy tính– Chương 4 © Fall 2017 4
- dce 2017 Mạch Full Adder C0 S Full adder x y C S = x + y + C0 Half adder 1 S = (x + y) + C0 Tính: S1 = x + y Tính: S2 = S1 + C0 Half adder 2 Kiến trúc Máy tính– Chương 4 © Fall 2017 6
- dce 2017 Full adder (3) C0 Half S adder S1 C2 x Half adder C1 C y Kiến trúc Máy tính– Chương 4 © Fall 2017 8
- dce 2017 Phép cộng số nguyên Ví dụ: 7 + 6 Tràn nếu kết quả tràn ngưỡng Cộng 2 toán hạng trái dấu: không tràn Cộng 2 toán hạng đều dương Tràn nếu bit dấu của kết quả là 1 Cộng 2 toán hạng đều âm Tràn nếu bit dấu của kết quả là 0 Kiến trúc Máy tính– Chương 4 © Fall 2017 10
- dce 2017 Xử lý tràn Một số ngôn ngữ (như C) không xử lý tràn Sử dụng lệnh MIPS: addu, addui, subu Các ngôn ngữ khác (như Ada, Fortran) yêu cầu xử lý tràn bằng ngoại lệ Sử dụng lệnh MIPS: add, addi, sub Khi có tràn, bẫy bằng ngoại lệ & xử lý: . Cất PC vào thanh ghi exception PC (EPC) . Nhảy đến chương trìn xử lý tràn . Dùng mfc0 khôi phục giá trị EPC value, trở về sau khi xử lý tràn Kiến trúc Máy tính– Chương 4 © Fall 2017 12
- dce 2017 Phần cứng thực hiện nhân Kiến trúc Máy tính– Chương 4 © Fall 2017 14
- dce 2017 Bộ nhân nhanh Sử dụng nhiều bộ cộng cùng lúc Cost/performance tradeoff Có thể thực hiện theo cơ chế ống Nhiều tác vụ nhân thực hiện cùng lúc Kiến trúc Máy tính– Chương 4 © Fall 2017 16
- dce 2017 Phép chia Divisor Quotient (số chia) Kiểm tra chia 0 báo lỗi (thương số) Long division approach Dividend If divisor ≤ dividend bits (số bị chia) 1001 . 1 bit in quotient, subtract 1001010/1000 Otherwise -1000 . 0 bit in quotient, bring down next 10 dividend bit 101 Restoring division 1010 Do the subtract, and if remainder -1000 goes < 0, add divisor back Remainde 10 r Signed division (số dư) Toán hạng n-bit cho kết quả n-bit Divide using absolute values thương số và số dư Adjust sign of quotient and remainder as required Kiến trúc Máy tính– Chương 4 © Fall 2017 18
- dce 2017 Bộ chia cải thiện Một chu kỳ cho mỗi phép trừ thành phần Tương tự rất nhiều với bộ nhân Có thể dùng cùng một phần cứng cho cả 2 Kiến trúc Máy tính– Chương 4 © Fall 2017 20
- dce 2017 Lệnh chia trong MIPS Thanh ghi HI/LO chứa kết quả phép chia HI: 32-bit số dư (remainder) LO: 32-bit (kết quả) quotient Lệnh trong MIP div rs, rt / divu rs, rt Không kiểm tra tràn hoặc lỗi /0 . Nếu có yêu cầu, phần mềm phải tự thực hiện Sử dụng lệnh mfhi, mflo để lấy kết quả Kiến trúc Máy tính– Chương 4 © Fall 2017 22
- dce 2017 Chuẩn của hệ thống số chấm di động Định chuẩn bởi Tổ chức IEEE(754-1985) Được phát triển nhằm đáp ứng tiêu chuẩn trình bày thống nhất Dễ sử dụng và chuyển đổi giữa các bộ mã trong khoa học Hiện nay trở thành thông dụng Tồn tại 2 cách biểu diễn Chính xác đơn(32-bit) Chính xác kép (64-bit) Kiến trúc Máy tính– Chương 4 © Fall 2017 24
- dce 2017 Tầm giá trị với độ chính xác đơn Giá trị (Exponents) 00000000 và 11111111 : dự trữ Giá trị nhỏ nhất Số mũ: 00000001 số mũ thực chất sẽ là = 1 – 127 = –126 Fraction: 000 00 significand = 1.0 ±1.0 × 2–126 ≈ ±1.2 × 10–38 Giá trị lớn nhất: Số mũ: 11111110 số mũ thực tế sẽ là = 254 – 127 = +127 Fraction: 111 11 significand ≈ 2.0 ±2.0 × 2+127 ≈ ±3.4 × 10+38 Kiến trúc Máy tính– Chương 4 © Fall 2017 26
- dce 2017 Ví dụ: Dấu chấm di động Biểu diễn số thực thập phân: –0.75 1 –1 –0.75 = (–1) × 1.12 × 2 S = 1 Fraction = 1000 002 Exponent = –1 + Bias . Đơn: –1 + 127 = 126 = 011111102 . Kép: –1 + 1023 = 1022 = 011111111102 Single: 1011111101000 00 Double: 1011111111101000 00 Kiến trúc Máy tính– Chương 4 © Fall 2017 28
- dce 2017 Số vô hạn (Infinities) và Số không hợp lệ (NaNs) Exponent = 111 1, Fraction = 000 0 ±Infinity Dùng để kiểm tra kết quả của phép tính Exponent = 111 1, Fraction ≠ 000 0 Not-a-Number (NaN) Số không hợp lệ . Ví dụ: chia cho zero: 0.0 / 0.0 Dùng để kiểm tra kết quả của phép tính Kiến trúc Máy tính– Chương 4 © Fall 2017 30
- dce 2017 Cộng nhị phân Giả sử cộng 2 số nhị phân (4 ký số): –1 –2 1.0002 × 2 + –1.1102 × 2 (0.5 + –0.4375) 1. Điều chỉnh dấu chấm Dời số mũ của số nhỏ hơn cho đồng số mũ –1 –1 1.0002 × 2 + –0.1112 × 2 2. Cộng hệ số –1 – –1 1.0002 × 2 + –0.1112 × 2 1 = 0.0012 × 2 3. Chuẩn hóa kết quả & kiểm tra ngưỡng –4 1.0002 × 2 , (nằm trong ngưỡng cho phép) 4. Làm tròn và điều chỉnh nếu cần thiết –4 1.0002 × 2 (không cần điều chỉnh) = 0.0625 Kiến trúc Máy tính– Chương 4 © Fall 2017 32
- dce 2017 Phần cứng bộ cộng (FP) Bước 1 Bước 2 Bước 3 Bước 4 Kiến trúc Máy tính– Chương 4 © Fall 2017 34
- dce 2017 Phép nhân nhị phân (FP) Giả sử nhân 2 số thập phân (4 ký số) –1 –2 1.0002 × 2 × –1.1102 × 2 (0.5 × –0.4375) 1. Cộng số mũ Unbiased: –1 + –2 = –3 Biased: (–1 + 127) + (–2 + 127) = –3 + 254 – 127 = –3 + 127 2. Nhân hệ số –3 1.0002 × 1.1102 = 1.1102 1.1102 × 2 3. Chuẩn hóa kết quả & kiểm tra ngưỡng –3 1.1102 × 2 (không đổi: nằm trong ngưỡng cho phép) 4. Làm tròn và điều chỉnh nếu cần thiết –3 1.1102 × 2 (no change) 5. Xác định dấu: (+) × (–) (-) –3 –1.1102 × 2 = –0.21875 Kiến trúc Máy tính– Chương 4 © Fall 2017 36
- dce 2017 Lệnh FP trong MIPS Phần cứng bộ FP là một coprocessor Mở rộng kiến trúc tập lệnh Có các thanh ghi FP riêng 32 thanh ghi (đơn): $f0, $f1, $f31 Chính xác kép bằng cách ghép: $f0/$f1, $f2/$f3, . Phiên bản 2 của MIPs ISA hỗ trợ 32 × 64-bit FP reg’s Các lệnh FP chỉ thực hiện trên các thanh ghi FP Chương trình thường không thực hiện các phép số nguyên trên dữ liệu FP hoặc ngược lại Thanh ghi riêng không làm phức tạp thêm code Các lệnh FP load và store lwc1, ldc1, swc1, sdc1 . Ví dụ: ldc1 $f8, 32($sp) Kiến trúc Máy tính– Chương 4 © Fall 2017 38
- dce 2017 Ví dụ: Chuyển °F sang °C C code: float f2c (float fahr) { return ((5.0/9.0)*(fahr - 32.0)); } fahr chứa trong $f12, kết quả trong $f0, hằng số trong bộ nhớ toàn cục Biên dịch thành MIPS code: f2c: lwc1 $f16, const5($gp) lwc2 $f18, const9($gp) div.s $f16, $f16, $f18 lwc1 $f18, const32($gp) sub.s $f18, $f12, $f18 mul.s $f0, $f16, $f18 jr $ra Kiến trúc Máy tính– Chương 4 © Fall 2017 40
- dce 2017 Ví dụ: Nhân Ma trận (tt.) Kiến trúc Máy tính– Chương 4 © Fall 2017 42
- dce 2017 Kết luận ISAs hỗ trợ phép số học Số nguyên có dấu và không dấu Floating-point approximation to reals Bounded range and precision Operations can overflow and underflow MIPS ISA Core instructions: 54 most frequently used . 100% of SPECINT, 97% of SPECFP Other instructions: less frequent Kiến trúc Máy tính– Chương 4 © Fall 2017 44