Bài giảng Kiến trúc máy tính - Chương 3: Phép số học
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 (FloatingPoint)
Cách biểu diễn và các phép tính
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ố
Phép cộng số nguyên
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
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Kiến trúc máy tính - Chương 3: 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
Tóm tắt nội dung tài liệu: Bài giảng Kiến trúc máy tính - Chương 3: Phép số học
Computer Architecture Computer Science & Engineering Chương 3 Phép số học BK TP.HCM 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 BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 2 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ố BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 3 Mạch Half Adder XOR x Half S x S y adde C y r XOR AND x y S C C 0 0 0 0 AND 0 1 1 0 1 0 1 0 1 1 0 1 5 April 2019 Khoa Khoa học & Kỹ thuật Máy tính 4 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 5 April 2019 Khoa Khoa học & Kỹ thuật Máy tính 5 Full adder (2) C0 x y S C C0 S1 C1 C2 C 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 0 0 0 0 1 0 1 0 1 1 1 0 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 0 1 0 1 C = 1 when C1 = 1 or C2 = 1 5 April 2019 Khoa Khoa học & Kỹ thuật Máy tính 6 Full adder (3) C0 Half S adde S1 r C2 x Half adde r C1 C y 5 April 2019 Khoa Khoa học & Kỹ thuật Máy tính 7 Cộng nhiều Bits 0 S0 x0 Full adder 0 y0 x3x2x1x0 + S1 y3y2y1y0 x1 Full y1 adder 1 C S3S2S1S0 S2 x2 Full y2 adder 2 S3 x3 Full C y3 adder 3 5 April 2019 Khoa Khoa học & Kỹ thuật Máy tính 8 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 BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 9 Phép trừ số nguyên Cộng số âm của toán hạng thứ 2 Ví dụ: 7 – 6 = 7 + (–6) +7: 0000 0000 0000 0111 –6: 1111 1111 1111 1010 +1: 0000 0000 0000 0001 Tràn nếu kết quả vượt ngưỡng Phép trừ 2 toán hạng cùng dấu, không bao giờ tràn Trừ 1 toán hạng âm với 1 toán hạng dương Tràn nếu bit dấu của kết quả là 0 Trừ 1 toán hạng dương với 1 toán hạng âm Tràn nếu bit dấu của kết quả là 1 BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 10 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 BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 11 Phép nhân Bắt đầu bằng phép nhân thuần túy multiplicand 1000 multiplier × 1001 1000 0000 0000 1000 product 1001000 Length of product is the sum of operand lengths BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 12 Phần cứng thực hiện nhân BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 13 Bộ nhân cải thiện Các bước song song: add/shift Một chu kỳ cho mỗi phép cộng (tích thành phần) Có thể chấp nhận khi tần xuất thấp BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 14 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 BK Nhiều tác vụ nhân thực hiện cùng lúc TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 15 Lệnh nhân trong MIPS Kết quả sẽ là 64-bit, chứa trong 2 thanh ghi 32-bit HI: chứa 32-bit cao LO: chứa 32-bit thấp Lệnh nhân mult rs, rt / multu rs, rt 64-bit kết quả chứa trong HI/LO mfhi rd / mflo rd Chuyển từ HI/LO vào rd Có thể kiểm tra giá trị HI xem kết quả phép nhân có tràn? mul rd, rs, rt 32 bits thấp của kết quả phép nhân –> rd BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 16 Phép chia Divisor (số chia) Quotient 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 10 next dividend bit 101 Restoring division 1010 Do the subtract, and if remainder -1000 goes < 0, add divisor back Remainder 10 (số dư) Signed division Divide using absolute values Toán hạng n-bit cho kết quả n-bit Adjust sign of quotient and thương số và số dư remainder as required BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 17 Phần cứng thực hiện chia Initially divisor in left half Initially dividend BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 18 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 BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 19 Bộ chia nhanh Không thể thực hiện song song như trong bộ nhân Dấu trong mỗi phép trừ thành phần là điều kiện Có thể tạo bộ chia nhanh (e.g. SRT devision) BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 20 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ả BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 21 Dấu chấm di động (Floating Point) Biểu diễn các số khác số nguyên (số thực) Bao gồm cả số rất nhỏ lẫn số rất lớn Giống như biểu diễn số trong khoa học 56 –2.34 × 10 –4 +0.002 × 10 9 +987.02 × 10 Kiểu nhị phân yyyy 1.xxxxxxx2 2 Kiểu float và double trong ngôn ngữ C BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 22 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) BK Chính xác kép (64-bit) TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 23 Dạng định chuẩn theo IEEE S: bit dấu (0 (+) , 1 (-)) Normalize significand: 1.0 ≤ |significand| < 2.0 Luôn có 1 bit trước dấu chấm, nên bit này thường ẩn Significand is Fraction with the “1.” restored Exponent: excess representation: actual exponent + Bias Ensures exponent is unsigned Single: Bias = 127; Double: Bias = 1203 BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 24 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: 00000 significand = 1.0 –126 –38 ±1.0 × 2 ≈ ±1.2 × 10 Giá trị lớn nhất: Số mũ: 11111110 số mũ thực tế sẽ là = 254 – 127 = +127 Fraction: 11111 significand ≈ 2.0 +127 +38 ±2.0 × 2 ≈ ±3.4 × 10 BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 25 Mức độ chính xác Mang tính tương đối Xác định bởi các bit fraction –23 Đơn: khoảng 2 Tương đương với 23 × log102 ≈ 23 × 0.3 ≈ 6: chính xác đến 6 số (hệ thập phân) –52 Kép: khoảng 2 Tương đương với 52 × log102 ≈ 52 × 0.3 ≈ 16: chính xác đến 16 số (hệ thập phân) BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 26 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 = 1000002 Exponent = –1 + Bias Đơn: –1 + 127 = 126 = 011111102 Kép: –1 + 1023 = 1022 = 011111111102 Single: 101111110100000 Double: 101111111110100000 BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 27 Ví dụ: (tt.) Cho biết số thực thập phân của một số biểu diễn bằng dấu chấm di động (đơn) sau: 1100000010100000 S = 1 Fraction = 01000002 Fxponent = 100000012 = 129 1 (129 – 127) x = (–1) × (1 + 012) × 2 = (–1) × 1.25 × 22 BK = –5.0 TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 28 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 BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 29 Phép cộng Giả sử có phép cộng 2 số thập phân (4 ký số) 1 –1 9.999 × 10 + 1.610 × 10 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 9.999 × 10 + 0.016 × 10 2. Cộng hệ số 1 1 1 9.999 × 10 + 0.016 × 10 = 10.015 × 10 3. Chuẩn hóa kết quả & kiểm tra ngưỡng 2 1.0015 × 10 4. Làm tròn và điều chỉnh nếu cần thiết 2 1.002 × 10 BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 30 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.000 × 2 (không cần điều chỉnh) = 0.0625 BK 2 TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 31 Phần cứng bộ cộng (FP) Phức tạp hơn rất nhiều so với bộ cộng số nguyên Nếu thực hiện trong 1 chu kỳ đồng hồ - Chu kỳ quá dài Dài hơn nhiều so với các phép cộng số nguyên Kéo dài thời gian xung đồng hồ ảnh hưởng đến các lệnh khác Bộ cộng (FP) thường kéo dài nhiều chu kỳ Có thể cải thiện bằng cơ chế ống BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 32 Phần cứng bộ cộng (FP) Bước 1 Bước 2 Bước 3 Bước 4 BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 33 Phép nhân thập phân Giả sử nhân 2 số thập phân (4 ký số) 10 –5 1.110 × 10 × 9.200 × 10 1. Cộng số mũ Nếu dùng số mũ biased, trừ biased vào tổng Số mũ mới là = 10 + –5 = 5 2. Nhân hệ số 5 1.110 × 9.200 = 10.212 10.212 × 10 3. Chuẩn hóa kết quả & kiểm tra ngưỡng 6 1.0212 × 10 4. Làm tròn và điều chỉnh nếu cần thiết 5. Xác định dấu của kết quả 6 +1.021 × 10 BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 34 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 BK –1.1102 × 2 = –0.21875 TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính) 35 Phần cứng Bộ số học (FP) Bộ nhân (FP) và Bộ cộng (FP) có độ phức tạp như nhau Chỉ khác nhau cho phép tính hệ số Phần cứng Bộ số học thường thực hiện các tác vụ sau: Cộng, Trừ, Nhân, Chia, Căn, Nghịch đảo Chuyển đổi FP integer Các tác vụ này thường kéo dài trong nhiều chu kỳ xung đồng hồ BK Cải thiện bằng cơ chế đường ống TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 36 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) BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 37 Lệnh FP trong MIPS Phép tính số học (đơn) add.s, sub.s, mul.s, div.s Ví dụ: add.s $f0, $f1, $f6 Phép tính số học (kép) add.d, sub.d, mul.d, div.d Ví dụ: mul.d $f4, $f4, $f6 Lệnh so sánh (đơn/kép) c.xx.s, c.xx.d (xx is eq, lt, le, ) Gán hoặc xóa bit điều kiện code e.g. c.lt.s $f3, $f4 Rẽ nhánh theo điều kiện bc1t, bc1f Ví dụ: bc1t TargetLabel BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 38 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 BK jr $ra TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 39 Ví dụ: Nhân Ma trận X = X + Y Z Tất cả đều là ma trận 32 32, các phần tử của ma trận 64-bit (chính xác kép) C code: void mm (double x[][], double y[][], double z[][]) { int i, j, k; for (i = 0; i! = 32; i = i + 1) for (j = 0; j! = 32; j = j + 1) for (k = 0; k! = 32; k = k + 1) x[i][j] = x[i][j] + y[i][k] * z[k][j]; } Địa chỉ của x, y, z chứa trong $a0, $a1, $a2, và i, j, k trong $s0, $s1, $s2 BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 40 Ví dụ: Nhân Ma trận (tt.) BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 41 Ví dụ: Nhân Ma trận (tt.) BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 42 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 BK TP.HCM 4/5/2019 Khoa Khoa học & Kỹ thuật Máy tính 43
File đính kèm:
- bai_giang_kien_truc_may_tinh_chuong_3_phep_so_hoc.pdf