Bài giảng Kiến trúc máy tính - Tuần 6: Phép toán số học trên máy tính

Các nội dung lưu trữ trong máy tính đều được biểu diễn ở dạng bit (hay dưới dạng nhị phân, là một 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 đều là các chuỗi nhị phân, hay các lệnh thực thi cũng phải 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 số và các số thực sẽ được biểu diễn và lưu trữ thế nào trong máy tính?

Điều gì sẽ xảy ra nếu kết quả của một phép toán sinh ra một 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ài giảng Kiến trúc máy tính - Tuần 6: Phép toán số học trên máy tính trang 1

Trang 1

Bài giảng Kiến trúc máy tính - Tuần 6: Phép toán số học trên máy tính trang 2

Trang 2

Bài giảng Kiến trúc máy tính - Tuần 6: Phép toán số học trên máy tính trang 3

Trang 3

Bài giảng Kiến trúc máy tính - Tuần 6: Phép toán số học trên máy tính trang 4

Trang 4

Bài giảng Kiến trúc máy tính - Tuần 6: Phép toán số học trên máy tính trang 5

Trang 5

Bài giảng Kiến trúc máy tính - Tuần 6: Phép toán số học trên máy tính trang 6

Trang 6

Bài giảng Kiến trúc máy tính - Tuần 6: Phép toán số học trên máy tính trang 7

Trang 7

Bài giảng Kiến trúc máy tính - Tuần 6: Phép toán số học trên máy tính trang 8

Trang 8

Bài giảng Kiến trúc máy tính - Tuần 6: Phép toán số học trên máy tính trang 9

Trang 9

Bài giảng Kiến trúc máy tính - Tuần 6: Phép toán số học trên máy tính trang 10

Trang 10

Tải về để xem bản đầy đủ

pptx 38 trang xuanhieu 3260
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 - Tuần 6: Phép toán số học trên máy tính", để 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 - Tuần 6: Phép toán số học trên máy tính

Bài giảng Kiến trúc máy tính - Tuần 6: Phép toán số học trên máy tính
13 
+ 
Ví dụ 1: 
Thực hiện phép nhân 2 (10) x 3 (10) (sử dụng số 4 bit không dấu) theo cấu trúc phần cứng như hình 
Lưu đồ giải thuật đi kèm cho cấu trúc phần cứng 
Ví dụ cho phép nhân (3 ví dụ) 
03/2017 
Copyrights 2017 CE-UIT. All Rights Reserved. 
14 
Ví dụ 1: 
2 (10) x 3 (10) = ? 
2 (10) = 0010 (multiplicand) 
3 (10) = 0011 
(multiplier) 
Cấu trúc phần cứng như hình vẽ là nhân 2 số 32 bits, kết quả là số 64 bits, 
Có: thanh ghi multiplicand 64 bits 
 thanh ghi multiplier là 32 bits 
 thanh ghi product là 64 bits 
Ví dụ 1 yêu cầu nhân 2 số 4 bits không dấu, sử dụng cấu trúc phần cứng tương tự như hình, vậy kết quả phải là số 8 bits 
=> thanh ghi multiplicand 8 bits (giá trị khởi tao 0000 0010) 
 thanh ghi multiplier là 4 bits (giá trị khởi tạo 0011) 
 thanh ghi product là 8 bits (giá trị khởi tạo 0000 0000) 
Iteration 
Step 
Multiplier 
Multiplicand 
Product 
0 
Khởi tạo 
0011 
0000 0010 
0000 0000 
- Sau khi khởi tạo xong. Mỗi vòng lặp (interation) sẽ gồm 3 bước: 
B1. Kiểm tra bit 0 của multiplier xem có bằng 1 hay không; nếu bằng 1 thì product = product + multiplicand; nếu bằng 0, không làm gì cả 
B2. Dịch trái Multiplicand 1 bit 
B3. Dịch phải Multiplier 1 bit 
 Số vòng lặp cho giải thuật này đúng bằng số bit dùng biểu diễn (ví dụ 1 yêu cầu dùng số 4 bit, thì có 4 vòng lặp) 
 Sau khi kết thúc số vòng lặp, giá trị trong thanh ghi product chính là kết quả phép nhân 
03/2017 
Copyrights 2017 CE-UIT. All Rights Reserved. 
15 
Bảng thực hiện từng bước giải thuật phép nhân 2 số : 0010 2 x 0011 2 
8 bits 
8 bits 
4 bits 
8 bits 
03/2017 
Copyrights 2017 CE-UIT. All Rights Reserved. 
Phép Nhân 
16 
Lần lặp 
Bước 
Số nhân 
Số bị nhân 
Tích 
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 
03/2017 
Copyrights 2017 CE-UIT. All Rights Reserved. 
17 
Cấu trúc phần cứng của phép nhân có 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ả đều 32 bits, chỉ có thanh ghi tích là khác – 64 bits; 
 Trong mỗi vòng lặp, số chu kỳ xung clock tiêu tốn có thể giảm xuống chỉ còn 1 chu kỳ 
Giải thuật thực hiện phép nhân theo cấu trúc phần cứng có cải tiến 2 thanh ghi (với hai số 32 bit) 
multiplier 
Phép Nhân 
03/2017 
Copyrights 2017 CE-UIT. All Rights Reserved. 
Multiplier 
18 
Ví dụ 2: 
Sử dung số 6 bit không dấu 
50 (8) x 23 (8) = ? 
50 (8) = 101000 (multiplicand) 
23 (8) = 010011 
(multiplier) 
Cấu trúc phần cứng như hình vẽ là nhân 2 số 32 bit, kết quả là số 64 bit, 
Có: thanh ghi multiplicand 32 bit 
 thanh ghi product 64 bit (khi khởi tạo, đưa multiplier vào 32 bit thấp của product, còn nữa cao khởi tạo 0) 
Ví dụ 2 yêu cầu nhân 2 số 6 bit, sử dụng cấu trúc phần cứng tương tự như hình, vậy kết quả phải là số 12 bit 
 thanh ghi multiplicand 6 bit (giá trị khởi tao 101000) 
 thanh ghi product là 12 bit (6 bit thấp là multiplier, 6 bit cao là 0 000000 010011 ) 
Iteration 
Step/Action 
Multiplicand 
Product/Multiplier 
0 
Khởi tạo 
101000 
000000 010011 
Phép Nhân 
03/2017 
Copyrights 2017 CE-UIT. All Rights Reserved. 
19 
Ví dụ 2: 
50 (8) x 23 (8) = ? 
50 (8) = 101000 (multiplicand) 
23 (8) = 010011 
(multiplier) 
Cấu trúc phần cứng như hình vẽ là nhân 2 số 32 bits, kết quả là số 64 bits, 
Có: thanh ghi multiplicand 32 bits 
 thanh ghi product 64 bits (khi khởi tạo, đưa multiplier vào 32bits thấp của product, còn nữa cao khởi tạo 0) 
Ví dụ 2 yêu cầu nhân 2 số 6 bits, sử dụng cấu trúc phần cứng tương tự như hình, vậy kết quả phải là số 12 bits 
 thanh ghi multiplicand 6 bits (giá trị khởi tao 101000) 
 thanh ghi product là 12 bits (6 bit thấp là multiplier, 6 bit cao là 0 000000 010011 ) 
- Sau khi khởi tạo xong. Mỗi vòng lặp (interation) sẽ gồm 2 bước: 
B1. Kiểm tra bit 0 của Product/multiplier xem có bằng 1 hay không; nếu bằng 1 thì nữa cao của product/multiplier = nữa cao của product/multiplier + multiplicand; nếu bằng 0, không làm gì cả 
B2. Dịch phải Product/Multiplier 1 bit 
 Số vòng lặp cho giải thuật này đúng bằng số bit dùng biểu diễn (ví dụ 2 yêu cầu dùng số 6 bit, thì có 6 vòng lặp) 
 Sau khi kết thúc số vòng lặp, giá trị trong thanh ghi product chính là kết quả phép nhân 
Multiplier 
Iteration 
Step/Action 
Multiplicand 
Product/Multiplier 
0 
Khởi tạo 
101000 
000000 010011 
03/2017 
Copyrights 2017 CE-UIT. All Rights Reserved. 
20 
Kết quả phép nhân 
2. Shift right Product/Multiplier 
Product/Multiplier 
2. Shift right Product/Multiplier 
2. Shift right Product/Multiplier 
2. Shift right Product/Multiplier 
2. Shift right Product/Multiplier 
2. Shift right Product/Multiplier 
21 
Hoặc có thể trình bày ngắn gọn như bảng sau: 
03/2017 
Copyrights 2017 CE-UIT. All Rights Reserved. 
22 
Ví dụ 3: 50 (16) x 23 (16) , sử dung số 8 bit không dấu 
Iteration 
Step 
Multiplicand 
Product/ Multiplier 
0 
Initial values 
0101 0000 
0000 0000 0010 0011 
1 
Prod = Prod + Mcand 
0101 0000 
0101 0000 0010 0011 
Shift right Product 
0101 0000 
0010 1000 0001 0001 
2 
Prod = Prod + Mcand 
0101 0000 
0111 1000 0001 0001 
Shift right Product 
0101 0000 
0011 1100 0000 1000 
3 
lsb = 0, no op 
0101 0000 
0011 1100 0000 1000 
Shift right Product 
0101 0000 
0001 1110 0000 0100 
4 
lsb = 0, no op 
0101 0000 
0001 1110 0000 0100 
Shift right Product 
0101 0000 
0000 1111 0000 0010 
5 
lsb = 0, no op 
0101 0000 
0000 1111 0000 0010 
Shift right Product 
0101 0000 
0000 0111 1000 0001 
6 
lsb = 0, no op 
0101 0000 
0101 0111 1000 0001 
Shift right Product 
0101 0000 
0010 1011 1100 0000 
7 
lsb = 0, no op 
0101 0000 
0010 1011 1100 0000 
Shift right Product 
0101 0000 
0001 0101 1110 0000 
8 
lsb = 0, no op 
0101 0000 
0001 0101 1110 0000 
Shift right Product 
0101 0000 
0000 1010 1111 0000 
Phép Nhân 
23 
Phép nhân có dấu 
 Cách đơn giản để thực hiện phép nhân có dấu là tách phần trị tuyệt đối và dấu của số bị nhân và số nhân ra. 
Lấy phần trị tuyệt đối dương tương ứng của số nhân và số bị nhân nhân nhau 
Sau đó xét dấu cho tích dựa vào dấu của số nhân và số bị nhân (có thể dùng phép XOR) 
03/2017 
Copyrights 2017 CE-UIT. All Rights Reserved. 
Phép Nhân 
24 
Phép nhân trong MIPS 
MIPS sử dụng hai thanh ghi đặc biệt 32 bit là Hi và Lo để chứa 64 bit kết quả của phép nhân 
 Để lấy giá trị từ thanh ghi Hi và Lo ra một thanh ghi khác, sử dụng hai lệnh dành riêng là mfhi mà mflo 
 Nhân hai số không dấu, MIPS cung cấp lệnh multu . Nhân hai số có dấu, MIPS cung cấp lệnh mult 
03/2017 
Copyrights 2017 CE-UIT. All Rights Reserved. 
Phép Nhân 
25 
Giới thiệu một ý tưởng cải tiến phép nhân: Phép nhân theo cách hiện thực tính nhanh 
(Sinh viên tự tham khảo thêm) 
Sơ đồ hiện thực phép tính nhanh ở mức phần cứng 
03/2017 
Copyrights 2017 CE-UIT. All Rights Reserved. 
PHÉP TOÁN SỐ HỌC TRÊN MÁY TÍNH 
Giới thiệu 
Phép cộng & P hép trừ 
Phép Nhân 
Phép chia 
Số chấm động 
26 
03/2017 
Copyrights 2017 CE-UIT. All Rights Reserved. 
Phép Chia 
27 
 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 
Dividend: số bị chia 
Quotient: thương số 
Remainder: số dư 
03/2017 
Copyrights 2017 CE-UIT. All Rights Reserved. 
sll Q, Q 0 =1 
28 
Giải thuật thực hiện phép chia trên phần cứng 
Hình 1. Sơ đồ các khối hiện thực phép chia ở mức phần cứng 
Hình 2. Lưu đồ giải thuật của phép chia 
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. 
Khi khởi tạo, số bị chia đưa vào Remainder 
Khi khởi tạo, số chia đưa vào nữa cao Divisor 
Phép Chia 
29 
+ 
Ví dụ 1: 
Thực hiện phép chia 50 (8) / 23 (8) (sử dụng số 6 bit không dấu) theo cấu trúc phần cứng như hình 
Lưu đồ giải thuật đi kèm cho cấu trúc phần cứng 
sll Q, Q 0 =1 
Khi khởi tạo, số bị chia đưa vào Remainder 
Khi khởi tạo, số chia đưa vào nữa cao Divisor 
Ví dụ cho phép chia (2 ví dụ) 
03/2017 
Copyrights 2017 CE-UIT. All Rights Reserved. 
Ví dụ 1: 
50 (8) /23 (8) = ? 
Dividend = 50 8 = 101 000 2 
Divisor = 23 8 = 010 011 2 
Cấu trúc phần cứng như hình vẽ là đang làm việc trên phép chia số 32 bits 
Có: thanh ghi divisor 64 bits 
 thanh ghi quotient là 32 bits 
 thanh ghi remainder là 64 bits 
Ví dụ 1 yêu cầu phép chia dùng số 6 bits không dấu, sử dụng cấu trúc phần cứng tương tự như hình, vậy các thanh ghi trong ví dụ cần được khởi tao với số bit tương ứng: 
=> thanh ghi divisor 12 bits (giá trị khởi tao 010011 000000 – 6 bits cao là giá trị của divisor, 6 bits thấp đưa 0 vào ) 
 thanh ghi quotient là 6 bits (giá trị khởi tạo 000000) 
 thanh ghi remainder là 12 bits (giá trị khởi tạo 000000 101000 - 6 bits cao đưa 0 vào, 6 bits thấp đưa dividend vào) 
Sau khi khởi tạo xong. Mỗi vòng lặp (interation) sẽ gồm 3 bước: 
B1. Lấy toàn bộ remainder trừ divisor (hiệu lưu đè lên giá trị remainder hiện đang có) 
B2. Kiểm tra hiệu vừa tính ở trên là âm hay dương (kiểm tra bit trọng số cao nhất, nếu 1 là âm, nếu 0 là dương): 
	 Nếu âm: 
- Lấy giá trị hiện tại của remainder cộng với divisor, tổng lưu lại vào remainder 
Dich trái quotient 1 bit 
Thêm 0 vào bit 0 của quotient (thật ra thao tác này không cần, vì dịch trái 1 bit mặc định đã thêm 0 vào bit 0 của nó) 
	 Nếu dương: 
Dich trái quotient 1 bit 
Chuyển bit 0 của quotient thành 1 
B3. Dịch phải Divisor 1 bit 
 Số vòng lặp cho giải thuật này đúng bằng số bit dùng biểu diễn + 1 (ví dụ 1 yêu cầu dùng số 6 bit, thì có 7 vòng lặp) 
 Sau khi kết thúc số vòng lặp, giá trị trong thanh ghi quotient chính là kết quả phép chia, giá trị trong remainder là phần dư 
Step 
Action 
Quotient 
Divisor 
Remainder 
0 
Initial Vals 
(Giá trị khởi tạo) 
000 000 
010 011 000000 
000000 101000 
Khi khởi tạo, số chia đưa vào nữa cao Divisor 
30 
31 
Thương số 
Ví dụ 1: 
50 (8) /23 (8) = ? 
Dividend = 50 8 = 
101 000 2 
Divisor = 23 8 = 
010 011 2 
Step 
Action 
Quotient 
Divisor 
Remainder 
0 
Initial Vals 
000 000 
010 011 000 000 
000 000 101 000 
1 
R = R – D 
000 000 
010 011 000 000 
1 01 101 101 000 
R < 0, R = R + D, dịch trái Q 1 bit 
000 000 
010 011 000 000 
000 000 101 000 
Dịch phải D 1 bit 
000 000 
001 001 100 000 
000 000 101 000 
2 
R = R – D 
000 000 
001 001 100 000 
1 10 111 001 000 
R < 0, R = R + D, dịch trái Q 1 bit 
000 000 
001 001 100 000 
000 000 101 000 
Dịch phải D 1 bit 
000 000 
000 100 110 000 
000 000 101 000 
3 
R = R – D 
000 000 
000 100 110 000 
1 11 011 111 000 
R < 0, R = R + D, dịch trái Q 1 bit 
000 000 
000 100 110 000 
000 000 101 000 
Dịch phải D 1 bit 
000 000 
000 010 011 000 
000 000 101 000 
4 
R = R – D 
000 000 
000 010 011 000 
1 11 110 010 000 
R < 0, R = R + D, dịch trái Q 1 bit 
000 000 
000 010 011 000 
000 000 101 000 
Dịch phải D 1 bit 
000 000 
000 001 001 100 
000 000 101 000 
5 
R = R – D 
000 000 
000 001 001 100 
1 11 110 111 100 
R < 0, R = R + D, dịch trái Q 1 bit 
000 000 
000 001 001 100 
000 000 101 000 
Dịch phải D 1 bit 
000 000 
000 000 100 110 
000 000 101 000 
6 
R = R – D 
000 000 
000 000 100 110 
0 00 000 000 010 
R> 0, dịch trái Q 1 bit , Q 0 = 1 
000 001 
000 000 100 110 
000 000 000 010 
Dịch phải D 1 bit 
000 001 
000 000 010 011 
000 000 000 010 
7 
R = R – D 
000 001 
000 000 010 011 
1 11 111 101 111 
R < 0, R = R + D, dịch trái Q 1 bit 
000 010 
000 000 010 011 
000 000 000 010 
Dịch phải D 1 bit 
000 010 
000 000 001 001 
000 000 000 010 
Phần dư 
Ký hiệu: Q, D và R lần lượt là viết tắt của Quotion, Divisor và Remainder 
03/2017 
Copyrights 2017 CE-UIT. All Rights Reserved. 
Phép Chia 
32 
Ví dụ 2: thực hiệp phép chia cho 2 số 4 bit sau: 
	 7 10 : 2 10 hay 0111 2 : 0010 2 
Bảng thực hiện giải thuật phép chia theo từng bước 
Giải thuật thực hiện phép chia trên phần cứng 
tức Remainder = Remaider + Divisor 
Phép Chia 
33 
Cấu trúc phần cứng phép chia có cải tiến 
Remainder 
Quotient 
Giải thuật thực hiện phép chia trên phần cứng có cải tiến 
(Sinh viên tự tham khảo thêm) 
03/2017 
Copyrights 2017 CE-UIT. All Rights Reserved. 
Phép Chia 
34 
Phép chia có dấu 
Nếu phép chia có dấu 
Bước 1. Bỏ qua dấu, thực hiện phép chia thông thường 
Bước 2. Xét dấu 
Dấu của thương sẽ trái với dấu hiện tại nếu dấu của số chia và số bị chia trái ngược nhau 
Dấu của số dư: 
	Các xác định bit dấu cho số dư bằng công thức sau: 
	Số bị chia = T hương × Số chia + Số dư 	 Số dư = Số bị chia – (Thương × Số chia) 
Ví dụ: 
	– 7 : +2 thì thương = – 3, dư = –1 
Kiểm tra kết quả: 
	 –7 = –3 × 2 + (–1) = –6 – 1 
03/2017 
Copyrights 2017 CE-UIT. All Rights Reserved. 
Phép Chia 
35 
Phép chia trong MIPS 
Trong cấu trúc phần cứng cho phép nhân có cải tiến, hai thanh ghi Hi và Lo được ghép lại để hoạt động như thanh ghi 64 bit của Product/Multiplier 
	Quan sát cấu trúc phần cứng cho phép nhân có cải tiến và phép chia có cải tiến, rõ ràng hai cấu trúc này tương tự nhau. 
	Từ đó, MIPS cũng sử dụng hai thanh ghi Hi và Lo cho cả phép nhân và chia. 
Sau khi phép chia thực hiện xong: 
Hi chứa phần dư 
Lo chứa thương số 
Để xử lý cho các số có dấu và số không dấu, MIPS có 2 lệnh: phép chia có dấu ( div ), và phép chia không dấu ( divu ). 
03/2017 
Copyrights 2017 CE-UIT. All Rights Reserved. 
PHÉP TOÁN SỐ HỌC TRÊN MÁY TÍNH 
Giới thiệu 
Phép cộng & P hép trừ 
Phép Nhân 
Phép chia 
Số chấm động 
36 
03/2017 
Copyrights 2017 CE-UIT. All Rights Reserved. 
PHÉP TOÁN SỐ HỌC TRÊN MÁY TÍNH 
37 
Tổng kết: 
Hiểu quy tắc thực hiện các phép toán số học (cộng, trừ, nhân và chia) trên số nguyên trong máy tính 
Hiểu cách thiết kế mạch nhân và chia cơ bản cho số nguyên trong máy tính 
03/2017 
Copyrights 2017 CE-UIT. All Rights Reserved. 
PHÉP TOÁN SỐ HỌC TRÊN MÁY TÍNH 
Lý thuyết: Đọc sách tham khảo 
Mục: 3.1, 3.2, 3.3, 3.4 
 Sách: Computer Organization and Design: The Hardware/Software Interface , Patterson, D. A., and J. L. Hennessy, Morgan Kaufman, Revised Fourth Edition, 2011. 
Bài tập: file đính kèm 
38 
03/2017 
Copyrights 2017 CE-UIT. All Rights Reserved. 

File đính kèm:

  • pptxbai_giang_kien_truc_may_tinh_tuan_6_phep_toan_so_hoc_tren_ma.pptx