Bài giảng Kiến trúc máy tính - Chương 3: Phép toán số học trên máy tính - Hà Lê Hoài Trung
Giới thiệu
Các nội dung lưu trữ trong máy tính điều được biểu diễn ở dạng bit (giá trị
của nó biểu diễn dưới dạng nhị phân, là 1 chuổi các ký tự 0, 1). Trong chương
2, các số nguyên khi lưu trữ trong máy tính điều là các chuổi nhị phân, hay các
lệnh thực thi cũng lưu dưới dạng nhị phân. Vậy các dạng số khác thì biểu diễn
như thế nào ?
Ví dụ:
■ phần lẻ của số thực được biểu diển, lưu trữ như thế nào?
■ Điều gì sẽ xảy ra nếu kết quả của 1 phép toán sinh ra 1 số lớn hơn khả
năng biểu diễn, hay lưu trữ ?
■ Và một câu hỏi đặt ra là phép nhân và phép chia được phần cứng của
máy tính thực hiện như thế nào?
Các nội dung lưu trữ trong máy tính điều được biểu diễn ở dạng bit (giá trị
của nó biểu diễn dưới dạng nhị phân, là 1 chuổi các ký tự 0, 1). Trong chương
2, các số nguyên khi lưu trữ trong máy tính điều là các chuổi nhị phân, hay các
lệnh thực thi cũng lưu dưới dạng nhị phân. Vậy các dạng số khác thì biểu diễn
như thế nào ?
Ví dụ:
■ phần lẻ của số thực được biểu diển, lưu trữ như thế nào?
■ Điều gì sẽ xảy ra nếu kết quả của 1 phép toán sinh ra 1 số lớn hơn khả
năng biểu diễn, hay lưu trữ ?
■ Và một câu hỏi đặt ra là phép nhân và phép chia được phần cứng của
máy tính thực hiện như thế nào?
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 3: Phép toán số học trên máy tính - Hà Lê Hoài Trung", để 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_3_phep_toan_so_hoc_tren.pdf
Nội dung text: Bài giảng Kiến trúc máy tính - Chương 3: Phép toán số học trên máy tính - Hà Lê Hoài Trung
- CE PHÉP TOÁN SỐ HỌC TRÊN MÁY TÍNH 1. Giới thiệu 2. Phép cộng & Phép trừ 3. Phép Nhân 4. Phép chia 5. Số chấm động 11
- CE Phép nhân Ví dụ Multiplicand: số bị nhân Multiplier: số nhân Product: tích Ví dụ trên ta chi lấy các con số ở dạng thập phân nhưng các chữ số điều là 0 và 1. Phép toán nhân trên số nhị phân cũng bắt buộc luôn dùng 0 và 1, và luôn luôn có 2 trường hợp: 1. Chép số bị nhân xuống vị trí thích hợp (1 ×multiplicand) nếu chữ số ở số nhân là 1. 2. Đặt số 0 (0 ×multiplicand) vào vị trí thích hợp nếu chữ số ở số nhân là 0. 12
- CE Phép Nhân Giải thuật thực hiện phép nhân từng bước ở phần cứng Hình 1: Sơ đồ các khối thực hiện phép nhân Chú ý: khi thực hiện phép nhân cho giải thuật theo sơ đồ ta thấy có 3 bước, 3 bước này được lặp lại 32 lần. Mỗi bước được thực hiện bởi 1 chu kỳ xung clock CPU. Do đó giải thuật này yêu cầu 100 chu kỳ xung clock cho phép toán nhân 2 số 32 bit. Hình 2: Sơ đồ giải thuật thực hiện phép nhân 13
- CE Phép Nhân Giải thuật thực hiện phép nhân từng bước ở phần cứng Ví dụ: thực hiện phép toán nhân cho 2 số 4 bit sau: 210 x 310 . Chuyển 2 số này sang dạng nhị phân: 00102 x 00112 Đáp án: bảng thực hiện từng bước giải thuật phép nhân 2 số 14
- CE Phép Nhân LầnĐáp lặp ánBước: bảng thực hiện từng bướcSố giảinhân thuậtSố phépbị nhân nhân Tích 2 số 0 Khởi tạo giá trị 0011 0000 0010 0000 0000 1 1a: 1 Tích = Tích + Số bị nhân 0011 0000 0010 0000 0010 2: dịch số bị nhân sang trái 1 bit 0011 0000 0100 0000 0010 3: dịch số nhân sang phải 1 bit 0001 0000 0100 0000 0010 2 1a: 1 Tích = Tích + Số bị nhân 0001 0000 0100 0000 0110 2: dịch số bị nhân sang trái 1 bit 0001 0000 1000 0000 0110 3: dịch số nhân sang phải 1 bit 0000 0000 1000 0000 0110 3 1: 0 giữ nguyên giá trị 0000 0000 1000 0000 0110 2: dịch số bị nhân sang trái 1 bit 0000 0001 0000 0000 0110 3: dịch số nhân sang phải 1 bit 0000 0001 0000 0000 0110 4 1: 0 giữ nguyên giá trị 0000 0001 0000 0000 0110 2: dịch số bị nhân sang trái 1 bit 0000 0010 0000 0000 0110 3: dịch số nhân sang phải 1 bit 0000 0010 0000 0000 0110 15
- CE Phép Nhân Giải thuật thực hiện phép nhân từng bước ở phần cứng multiplier Hình 3 Sơ đồ của phép nhân cải tiến So với giải thuật trước đó thì thanh ghi số bị nhân, bộ ALU, thanh ghi số nhân tất cả điều 32 bits, chỉ có thanh ghi tích là khác – 64 bits; Chỉ sử dụng 1 chu kỳ xung clock để tính ra tích 16
- CE Phép Nhân Phép nhân có dấu Cách đơn giản để thực hiện phép toán nhân có dấu, ta chia làm 2 phần (1 bit dấu, 31 bit trị): Bit trọng số cao nhất là bit dấu, thực hiện phép xor trên 2 bit này để xác định dấu của tích. 31 bit còn lại xem như là phần trị và thực hiện việc tính toán bình thường. Giải thuật tính trong phép nhân thực hiện trong 31 lần lặp (bit biểu hiện dấu không tính trong phần này) 17
- CE Phép Nhân Phép nhân theo cách hiện thực tính nhanh Fig.4 Sơ đồ hiện thực phép tính nhanh ở mức phần cứng 18
- CE PHÉP TOÁN SỐ HỌC TRÊN MÁY TÍNH 1. Giới thiệu 2. Phép cộng & Phép trừ 3. Phép Nhân 4. Phép chia 5. Số chấm động 19
- CE Phép Chia Ngược lại của phép nhân là phép chia. Trường hợp ngoại lệ – chia 0. Ví dụ: Divisor: số chia Quotient: số thương Dividend: số phải chia Remainder: số dư 20
- CE Phép Chia Giải thuật thực hiện phép chia trên phần cứng Số phải chia Hình 5: Sơ đồ các khối hiện thực phép chia ở mức phần cứng Chú ý: Hai số chia và bị chia là số dương, do đó kết quả thương và số dư là không âm. Thực hiện phép toán trên số dương do đó thương và các toán hạng của phép chia có giá trị là 32 bit, bỏ qua các số có dấu. Hình 6 giải thuật của phép chia 21
- CE Phép Chia Giải thuật thực hiện phép chia trên phần cứng Ví dụ: thực hiệp phép chia cho 2 số 4 bit sau: 710 : 1010 hay 01112 : 00102 Bảng thực hiện giải thuật phép chia theo từng bước 22
- CE Phép Chia Hiện thực phép chia nhanh Remainder Quotient Hình 7: Hiện thực cách tính chia nhanh của các khối ở mức phần cứng 23
- CE Phép Chia Phép chia có dấu Ta xét bit trọng số cao nhất (bit dấu) nếu bit dấu của số bị chia và số chia trái dấu nhau thì bit dấu của thương tính bằng cách lấy phủ định bit dấu của thương. Điểm phức tập nhất trong phép chia có dấu là xác định bit dấu cho số dư. Các xác định bit dấu cho số dư bằng công thức sau: Số bị chia = Thương x Số chia + Số dư Số dư = Số bị chia – (Thương x Số chia) Example: – 7 : +2 thì thương = -3, dư = –1 Kiểm tra kết quả: –7 = –3 x 2 + (–1) = –6 – 1 24
- CE Phép Chia Phép chia trong MIPS Các khối thực hiện pháp nhân, phép chia tương tư nhau như hình 3 (phép nhân) và hình 7 (phép chia). 1 thanh ghi 64 bit (chia 2 phần 32 bit trọng số cao và 32 bit trọng số thấp), 1 bộ ALU 32 bit thực hiện phép toán cộng, phép trừ. Sau khi thực hiện xong phép chia thì kết quả phép chia lưu trong thanh ghi 64 bit, trong đó 32 bit trọng số cao lưu trữ phần dư, 32 bit trọng số thấp lưu trữ phần thương. Để xử cho các số có dấu và số không dấu, MIPS có 2 lệnh: phép chia (div) , và phép chia không dấu (divu). Assembler cho phép lệnh chia sử dụng 3 thanh ghi: 2 lệnh mflo, mfhi. Kết quả 2 lệnh này được lưu trữ trong thanh ghi tổng quát. 25
- CE PHÉP TOÁN SỐ HỌC TRÊN MÁY TÍNH 1. Giới thiệu 2. Phép cộng & Phép trừ 3. Phép Nhân 4. Phép chia 5. Số chấm động 26
- CE Số Chấm Động Định nghĩa: Biểu diễn số thực: Số thực biểu diễn dạng chuẩn gồm 2 phần: bên trái dấu chấm (phần nguyên – phần này chỉ có 1 ký số), và bên phải dấu chấm (phần lẻ). 1 số thực mà phần nguyên có số khác 0 gọi là số thực chuẩn. -9 Ví dụ: 1.0ten x 10 : số thực chuẩn -8 0.1ten x 10 : không phải số thực chuẩn -10 10.0ten x 10 : không phải số thực chuẩn Số nhị phân biểu diễn theo dạng chuẩn gọi là số thực dấu chấm động (floating point). Số thực dấu chấm động: Các phép toán trên máy tính thường thực hiện trên các số nhị phân. 27
- CE Số Chấm Động Biểu diễn số thực dấu chấm động Một Thiết kế biểu diễn số thực dấu chấm động phải thỏa mãn giữa phần kích thước phần lẽ và kích thước phần mũ. Cân bằng giữ độ chính xác và tầm trị có thể biểu diễn: - Tăng kích thước ở phần lẽ thì tăng độ chính xác. - Tăng kích thước phần mũ là tăng tầm trị biểu diễn. Kích thước của số dấu chấm động luôn bội số của kích thước 1 từ. Biểu diễn số thực dấu chấm động của MIPS (floating-point number): Trong đó: s là dấu của số thực dấu chấm động (1 nghĩa là âm, ngược lại 0 là dương) Phần mũ (exponent) có kích thước là 8 bit (bao gồm luôn cả kích thước, và dấu của phần mũ) Phần lẽ (fraction) là 1 số biểu diễn trong 23 bits Tổng quát, số thực dấu chấm động biểu diễn như sau: 28
- CE Số Chấm Động Biểu diễn số thực dấu chấm động Tràn trên (Overflow): trường hợp này xảy ra khi kích thước của số mũ lớn hơn kích thước giới hạn trên (số mũ dương). Tràn dưới (Underflow): trường hợp này xảy ra khi kích thước của số mũ nhỏ hơn kích thước giới hạn dưới (số mũ âm). Hạn chế việc tràn trên, tràn cưới về số mũ. Trong lập trình ngôn ngữ C, có một loại số thuộc dạng double, các phép toán trên dạng số này thì có độ chính xác kép, còn cách biểu diễn trong slide trước gọi là độ chính xác đơn. Độ chính xác kép (Double precision): một số thực dấu chấm động được biểu diễn ở dạng 64 bit. Độ chính xác đơn (Single precision): một số thực dấu chấm động được biểu diễn ở dạng 32 bit Biểu diễn số thực độ chính xác kép: Trong đó: s là dấu của số thực dấu chấm động (1 nghĩa là âm, 0 nghĩa là dương) mũ (exponent) là số có kích thước 11 bits (bao gồm biểu diễn luôn cả phần mũ âm) phần lẻ (fraction ) là số có độ dài 52 bits 29
- CE Số Chấm Động Biểu diễn số thực dấu chấm động Các định dạng trên không chỉ áp dụng cho MIPS, mà các biểu diễn trên là 1 phần của chuẩn biểu diễn số thực dấu chấm động IEEE754, chuẩn này được áp dụng cho hầu hết các máy tính được chế tạo từ năm 1980. Để tăng số bit có thể biểu diễn, các số này không lưu lại số 1 đứng trước dấu chấm. Các số 1 này được hiểu ngầm định là có trong cách biểu diễn theo chuẩn IEEE 754. Vậy số chính xác đơn thực chất lưu trữ 24 bit (trong đó có 1 bit giá trị 1 ở dạng ngầm định và 23 bit trị phần lẽ), và số chính xác kép thực chất lưu trữ trong 53 bit (trong đó có 1 bit giá trị 1 ở dạng ngầm định và 23 bit trị phần lẽ). Biễu diễn của số thực dấu chấm động khi thực hiện khôi phục từ dạng lưu trữ. Từ công thức trên ta có công thức tổng quát (với Fraction là số bit đi từ trái qua phải trong phần lưu trữ, với s1 là bit có trong số cao nhất trong phần Fraction): 30
- CE Số Chấm Động Biểu diễn số thực dấu chấm động Phần mũ âm được biễu là ở dạng số bù hai hay các biểu diễn số âm khác thì bit có trọng số cao nhất trong phần mũ có giá trị là 1. Ví dụ: -1 1.02 x 2 số nảy biểu diễn số mũ âm – phần mũ giống như là số lớn nhất. +1 1.0two x 2 số nảy biểu diễn số mũ dương – phần mũ giống như là số nhỏ nhất. 31
- CE Số Chấm Động Biểu diễn số thực dấu chấm động Muốn biểu diễn số mũ âm nhất là 00 002 và số dương lớn nhất là 11 112. Biểu diễn số thiên vị được dùng trong trường hợp này. Biễu diễn số mũ bằng cách lấy số thiên vị cộng với số mũ bình thường, mục đích là biểu diễn các số không âm trong tầm trị mũ đi từ số âm nhất (00 002) đến số dương nhất (11 112). IEEE 754 sử dụng số thiên vị 127 cho số thực chính xác đơn. Giả sử mũ của trừ 1 được tính thông qua số thiên vị (-1 + 12710 ), hay 12610 = 0111 11102 , và số mũ +1 được biểu diễn (1+127), hay 12810 = 1000 00002 . Số thiên vị 1023 được sử dụng cho số thực chính xác kép. Chú ý: Số mũ thiên vị là giá trị biểu diễn phần mũ trong số thực dấu chấm động. Dãy biểu diễn số độ chính xác đơn có tầm trị từ. Đến số lớn nhất Hình 8: IEEE 754 mã hóa số thực dấu chấm động 32
- CE Số Chấm Động Biểu diễn số thực dấu chấm động Ví dụ 1: 33
- CE Số Chấm Động Biểu diễn số thực dấu chấm động Đáp án 1: 34
- CE Số Chấm Động Biểu diễn số thực dấu chấm động Đáp án 1: 35
- CE Số Chấm Động Biểu diễn số thực dấu chấm động Ví dụ 2: Chuyển đổi số nhị phân dấu chấm động đến số thập phân dấu chấm động Trả lời 2: 36
- CE Số Chấm Động Phép toán cộng trên số thực dấu chấm động Cộng số thực dấu chấm động. Cộng số thực dấu chấm động chuẩn trong hệ thập 1 -1 phân: 9.99910 x 10 + 1.61010 x 10 . Giả sử số thực dấu chấm động lưu trữ phần lẻ 4 chữ số, số mũ lưu trữ 2 chữ số. 37
- CE Số Chấm Động Phép toán cộng trên số thực dấu chấm động Chú ý: kiểm tra phần mũ có bị tràn trên, tràn dưới ? 38
- CE Số Chấm Động Phép toán cộng trên số thực dấu chấm động Giải thuật thực hiện phép cộng trên số thực dấu chấm động trong hệ nhị phân Hình 9. Giải thuật thực hiện phép cộng trên số thực dấu chấm động trên hệ số nhị phân 39
- CE Số Chấm Động Phép toán cộng trên số thực dấu chấm động Ví dụ : Cộng 2 số thực dấu chấm động trong hệ nhị phân cho 2 số thập phân sau: 0.510 và -0.437510 theo giải thuật hình 9. Đáp án: 40
- CE Số Chấm Động Phép toán cộng trên số thực dấu chấm động Đáp án : 41
- CE Số Chấm Động Phép toán cộng trên số thực dấu chấm động Kiến trúc phần cứng: Significand of the Chọn thành phần mũ lớn hơn smaller number Significand of the larger number Shift n bits (n- differenct between exponents) Hình 10: Sơ đồ khối cho việc thực hiện phép toán cộng số thực dấu chấm động trên hệ số nhị phân. 42
- CE Số Chấm Động Phép nhân trên số thực dấu chấm động Ví dụ 1: Nhân số thực dấu chấm động. Nhân số thực dấu chấm động chuẩn trong hệ thập 10 -5 phân: 1.11010 x 10 * 9.20010 x 10 . Giả sử số thực dấu chấm động lưu trữ phần lẻ 4 chữ số, số mũ lưu trữ 2 chữ số. Đáp án 1: 43
- CE Số Chấm Động Phép nhân trên số thực dấu chấm động Chú ý: kiểm tra số mũ có bị tràn trên, tràn dưới ? 44
- CE Số Chấm Động Phép nhân trên số thực dấu chấm động 45
- CE Số Chấm Động Phép nhân trên số thực dấu chấm động Giải thuật nhân số thực dấu chấm động trên hệ nhị phân có 5 bước giống như là ví dụ 1 trong phần này. Hình 11: Giải thuật nhân số thực dấu chấm động trên hệ nhị phân 46
- CE Số Chấm Động Phép nhân trên số thực dấu chấm động Ví dụ 2: nhân số thực dấu chấm động trên hệ nhị phân cho 2 số sau: 0.510 và -0.437510. Đáp án 2: 47
- CE Số Chấm Động Phép nhân trên số thực dấu chấm động Ví dụ 2: 48
- CE Câu hỏi 49