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 
pdf 44 trang xuanthi 28/12/2022 980
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:

  • pdfbai_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

  1. 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
  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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. dce 2017 Ví dụ: Nhân Ma trận (tt.) Kiến trúc Máy tính– Chương 4 © Fall 2017 42
  22. 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