Bài giảng Kiến trúc máy tính - Chương 9: Bộ xử lý số học - Nguyễn Thị Phương

1. Đơn vị số học & logic (ALU)

 Phần của máy tính thực hiện phép toán số học và lôgíc

trên dữ liệu

 Tất cả các bộ phận khác trong hệ thống máy tính (CU,

thanh ghi, bộ nhớ, I/O) đưa dữ liệu tới ALU để xử lý, sau

đó gửi lại kết quả

 Khối ALU được thực hiện sử dụng các linh kiện logic số

có thể lưu trữ các số nhị phân và thực hiện các phép toán

logic Boolean đơn giản

Bài giảng Kiến trúc máy tính - Chương 9: Bộ xử lý số học - Nguyễn Thị Phương trang 1

Trang 1

Bài giảng Kiến trúc máy tính - Chương 9: Bộ xử lý số học - Nguyễn Thị Phương trang 2

Trang 2

Bài giảng Kiến trúc máy tính - Chương 9: Bộ xử lý số học - Nguyễn Thị Phương trang 3

Trang 3

Bài giảng Kiến trúc máy tính - Chương 9: Bộ xử lý số học - Nguyễn Thị Phương trang 4

Trang 4

Bài giảng Kiến trúc máy tính - Chương 9: Bộ xử lý số học - Nguyễn Thị Phương trang 5

Trang 5

Bài giảng Kiến trúc máy tính - Chương 9: Bộ xử lý số học - Nguyễn Thị Phương trang 6

Trang 6

Bài giảng Kiến trúc máy tính - Chương 9: Bộ xử lý số học - Nguyễn Thị Phương trang 7

Trang 7

Bài giảng Kiến trúc máy tính - Chương 9: Bộ xử lý số học - Nguyễn Thị Phương trang 8

Trang 8

Bài giảng Kiến trúc máy tính - Chương 9: Bộ xử lý số học - Nguyễn Thị Phương trang 9

Trang 9

Bài giảng Kiến trúc máy tính - Chương 9: Bộ xử lý số học - Nguyễn Thị Phương trang 10

Trang 10

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

pdf 65 trang xuanhieu 3080
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 9: Bộ xử lý số học - Nguyễn Thị Phương", để 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 9: Bộ xử lý số học - Nguyễn Thị Phương

Bài giảng Kiến trúc máy tính - Chương 9: Bộ xử lý số học - Nguyễn Thị Phương
 đảo ngược 0 1, 1 0)
+
 Ví dụ 1
  Biểu diễn các số sau sang dạng dấu-độ lớn 8b và bù 2-8b
 a) -128
 b) 128
 c) -54
 d) 145
 e) 11
 f) -13
+
 b. Biểu diễn bù 2 (tiếp)
 Miền giá trị của từ mã n bit: −2푛−1 đến 2푛−1 − 1
 Tính toán giá trị mã bù 2:
  Một số nguyên A, biểu diễn dưới dạng bù 2, n-bit: 
 풏− 풏−  
  Nếu A là số dương
  Bit dấu 푛−1 có giá trị 0
  Nếu A là số âm (A<0)
  Bit dấu 푛−1 có giá trị 1
  Trong đó, 풊 là giá trị bit tại vị trí i
+
 Hộp giá trị
 Bảng 10.2 
Biểu diễn số nguyên 4-Bit
Biểu diễn thập Biểu diễn dấu – độ Biểu diễn bù 2
 phân lớn
+
 Mở rộng phạm vi
  Trong một số trường hợp, ta muốn biểu diễn một số n-bit 
 sang dạng biểu diễn m-bit ( > 푛): mở rộng phạm vi biểu 
 diễn
  Trong biểu diễn dấu – độ lớn: di chuyển bit dấu tới vị trí 
 mới ngoài cùng bên trái và điền (m-n) bit 0 vào sau bit dấu
  Biểu diễn số bù 2:
  Quy tắc: di chuyển bit dấu sang vị trí ngoài cùng bên trái và 
 điền vào bằng bản sao bit dấu 
  Đối với số dương, điền 0 vào, và số âm thì điền vào số 1
  Đây được gọi là phần mở rộng dấu
+
 Mở rộng phạm vi
 Ví dụ số bù 2
+
 Một số đặc điểm của biểu diễn bù 2
 Miền giá trị (n bit) −2푛−1 đến 2푛−1 − 1
 Biểu diễn số 0 1 cách
 Lấy bù của số dương tương ứng sau đó cộng thêm 
 Biểu diễn số âm
 1
 Mở rộng chiều dài 
 Điền giá trị dấu vào bên trái
 chuỗi bit
 Khi cộng hai số cùng dấu, nếu kết quả có dấu 
 Luật tràn
 ngược lại tràn
 Luật trừ Khi trừ A cho B, lấy bù 2 của B sau đó cộng với A
+
 2. Phép toán trên số nguyên
 a. Phép đảo (phép phủ định)
 b. Phép cộng
 c. Phép trừ - luật trừ
 d. Phép nhân
 e. Phép chia
+
 a. Phép đổi dấu (phép lấy âm)
  Quy tắc:
  Biểu diễn dấu – độ lớn: đảo bit dấu
  Biểu diễn bù 2: thực hiện phép toán bù 2
  Đảo từng bit (kể cả bit dấu)
  Cộng 1
  Đảo của đảo một số là chính nó
+
 Số bù 2: xét hai trường hợp đặc biệt
b. Phép cộng
 . Phép cộng được thực hiện bình thường như cộng hai số nhị phân
 . Trong một số trường hợp, xuất hiện thêm 1b (bit bôi đen) bỏ 
 qua các bit này
 Nguyên tắc
 • Tràn ô nhớ: khi kết quả của một 
 phép toán quá lớn vượt qua phạm vi 
 biểu diễn của ô nhớ
 • Số bù 2: Tràn ô nhớ xảy ra nếu hai Tràn
 số cùng dấu cộng với nhau mà kết 
 quả thu được lại là một số có dấu 
 ngược với dấu của hai số đó
+ • Khi phát hiện tràn, ALU cần phải báo 
 hiệu việc này để CPU không sử dụng 
 kết quả
 c. Phép trừ
 Nguyên tắc
 NGUYÊN TẮC TRỪ: 
 Lấy bù 2 (đảo) của số trừ và 
 cộng với số bị trừ. Trừ
+ 
Phép trừ
Mô tả hình học của số nguyên bù 2
 Điểm đánh dấu tràn
 Hình 10.5 Mô tả hình học của số nguyên bù 2
 Phần cứng thực hiện cộng và trừ
• Thanh ghi A, B (A, B 
 Register): lưu trữ hai số
• Với phép trừ: thanh ghi B lưu 
 trữ số trừ
• Complementer: bộ lấy bù 2
• SW (switch): lựa chọn cộng 
 hoặc trừ
• Bộ cộng (Adder): thực hiện 
 phép toán và đưa ra cờ tràn 
 (nếu có)
• Cờ tràn (OF-overflow bit):
 • 0: không tràn
 • 1: tràn
• Kết quả có thể được lưu trữ 
 ở thanh ghi thứ 3 hoặc một 
 trong 2 thanh ghi A, B
 d. Phép nhân
• So với phép cộng và phép trừ, phép nhân phức tạp hơn
• Nhiều thuật toán tính toán phép nhân khác nhau đã được sử 
 dụng trong các máy tính khác nhau
• Trong phần này: 
 i. Phép nhân giữa hai số nguyên không dấu
 ii. Phép nhân hai số biểu diễn bù 2
+
 i. Phép nhân giữa hai số nguyên không dấu
 Các bước bằng tay:
 • Tính các tích thành phần
 • Nếu số nhân là bit 0, tích 
 thành phần bằng 0. Nếu số 
 nhân là bit 1, tích thành 
 phần là số bị nhân 
 (multiplicand)
 • Tính tổng các tích thành phần (mỗi tích dịch trái đơn vị 
 so với tích trước đó) 
 • Tích của hai số n-bit là một số có kích thước 2n-bit
 + Thuật toán phép 
 nhân nhị phân 
 không dấu theo 
 hướng máy tính
Mô tả:
 Thanh ghi M: số bị nhân
 Thanh ghi Q: số nhân
 Thanh ghi 1bit C: ghi giá trị tràn 
 của A+M (nếu có)
 Kết quả 2n-bit: thanh ghi A, Q
+
 Ví dụ phép nhân 
 nhị phân không 
 dấu
+ii. Phép nhân bù 2
 . Số nguyên dương: nguyên tắc nhân giống số nguyên 
 không dấu
 . Số nguyên âm: do có sự xuất hiện của bit dấu nên 
 nguyên tắc trên không còn đúng nữa
+ Giải pháp 1
 Sử dụng thuật toán nhân hai số không dấu: 
 . Bước 1: Chuyển đổi số nhân và số bị nhân thành 
 số dương tương ứng. 
 . Bước 2: Nhân 2 số bằng thuật giải nhân số 
 nguyên không dấu → được tích 2 số dương. 
 . Bước 3: Hiệu chỉnh dấu của tích: 
 . Nếu 2 thừa số ban đầu cùng dấu thì tích nhận 
 được ở bước 2 là kết quả cần tính. 
 . Nếu 2 thừa số ban đầu khác dấu nhau thì kết 
 quả là số bù 2 của tích nhận được ở bước 2. 
 Giải pháp 2: thuật toán Booth
 . Tốc độ tính toán nhanh hơn do số lượng phép 
 toán ít hơn
 . Thuật toán chung cho cả số nguyên dương và âm
+
 Thuật toán Booth
+
 Giải thích thuật toán
 Ta có: 2i + 2i-1 +  + 2j = 2i+1 – 2j (với i>=j) 
 VD: M * 01110010 = M * (27 – 24 + 3) 
 Quy tắc: duyệt từ trái sang phải: 
 . Nếu gặp 10 thì trừ A đi M rồi dịch phải 
 . Nếu gặp 01 thì cộng A với M rồi dịch phải
 . Nếu gặp 00 hay 11 thì chỉ dịch phải 
Ví dụ thuật toán Booth
+
 e. Phép chia
 Phức tạp hơn phép nhân nhưng cũng sử dụng chung nguyên lý
 Thuật toán thực hiện phép chia hai số 
 Bằng tay
 nguyên không dấu trong máy tính
  Số chia đặt trong thanh ghi M, số bị chia 
 trong thanh ghi Q. A=0. Bộ đếm = n
  Tại mỗi bước:
  A và Q dịch trái 1 đơn vị
  Thực hiện − , nếu 
  − ≥ 0 thì 푄0 = 1, A = − 
  − < 0 thì 푄0 = 0
  Giảm bộ đếm và quay trở lại thực 
 hiện vòng lặp đến khi Bộ đếm = 0
+
Lưu đồ thuật toán 
phép chia hai số 
nguyên không dấu 
+
 Chia số nguyên có dấu
  Bước 1: Chuyển đổi số chia và số bị chia thành số 
 dương tương ứng 
  Bước 2: Sử dụng thuật giải chia số nguyên không 
 dấu để chia 2 số dương, kết quả nhận được là
 thương Q và phần dư R đều dương 
  Bước 3: Hiệu chỉnh dấu kết quả theo quy tắc sau:
+
+
 Phép chia số bù 2
  Tương tự như phép nhân, do có bit dấu nên phải có thuật toán khác:
  Giả sử số chia V và số bị chia D dương và < 
  Nếu = : thương = 1, dư = 0.
  Nếu > : thương = 0, dư = D
  Thuật toán như sau:
  B1: Ghi số bù 2 của V vào thanh ghi M (M chứa số âm của V), ghi D vào thanh ghi 
 A, Q, bộ đếm = n
  B2: Dịch A,Q sang trái 1 đơn vị
  B3: Tính A+M A
  B4: Kiểm tra:
  Nếu A dương (bit dấu = 0), 푄0 = 1
  Nếu A âm (bit dấu =1), 푄0 = 0, khôi phục A lại giá trị trước đó
  B5: Giảm bộ đếm đi 1 đơn vị
  Lặp lại các bước từ 2 đến 5 cho đến khi bộ đếm = 0
  Với các trường hợp V, D không dương, hiệu chỉnh kết quả dựa theo bảng ở 
 trên
+
 Ví dụ phép chia bù 2
+ 4. Biểu diễn dấu chấm động
 a. Nguyên lý
  Quy ước: "dấu chấm" (point) được hiểu là kí hiệu ngăn 
 cách giữa phần nguyên và phần lẻ của 1 số thực.
  Có 2 cách biểu diễn số thực trong máy tính:
  Số dấu chấm tĩnh (fixed-point number):
  Dấu chấm là cố định (số bit dành cho phần nguyên và phần 
 lẻ là cố định)
  Hạn chế: không thể biểu diễn số rất lớn hoặc số thập phân 
 rất nhỏ. Phần thập phân trong thương của một phép chia
 hai số lớn có thể bị mất
  Dùng trong các bộ vi xử lý hay vi điều khiển thế hệ cũ. 
  Số dấu chấm động (floating-point number): 
  Dấu chấm không cố định 
  Dùng trong các bộ vi xử lý hiện nay, có độ chính xác cao 
 hơn. 
+
Biểu diễn số nhị phân dấu chấm động
 Một số nhị phân có thể được biểu diễn dưới dạng như sau:
 Trong đó:
  S: phần định trị
  B: cơ số
  E: số mũ
 Nếu B là một số định sẵn, ta chỉ cần lưu trữ S và E
 Vậy một số nhị phân có thể được lưu trữ trong máy tính với 3 trường sau:
  Dấu
  Giá trị S
  Số mũ E
 Định dạng dấu chấm động 32-bit
Ví dụ: các số trên được lưu trữ như sau:
B: ngầm định = 2
1 bit dấu: 0 nếu là số dương, 1 biểu diễn số âm
8 bit biased exponent: số mũ lệch
 Số mũ thực tế = số mũ lệch - độ lệch (độ lệnh = 2 −1 − 1, k: số bit 
 phần mũ). Trong trường hợp này, độ lệch = 127
 Số mũ thực tế nằm trong khoảng -127 đến +128
23 bit còn lại: phần định trị, được quy ước dạng 1.bbbbb...... Trong đó, 
số 1 đầu tiên là ngầm định
+
 Biểu diễn số nhị phân dấu chấm động 32b 
 S E M
  Hầu hết các hệ VXL có 3 loại định dạng nhị phân dấu chấm động 
 (quy định theo chuẩn 754)
  32b: 1b dấu (S), 8b phần mũ (E), 23b phần định trị (M)
  64b: 1b dấu (S), 11b phần mũ (E), 52b phần định trị (M)
  128b: 1b dấu, 15b phần mũ (E), 112b phần định trị (M)
  Trong đó: 
  S: 0 nếu là số dương, 1 nếu là số âm
  E = số mũ thực tế + độ lệch (độ lệch = 2 −1 − 1, k là số bit phần mũ)
  M: phần định trị được chuẩn hóa dạng 1.bbbbb.bbbb
+ Chú ý: chuẩn hóa phần định trị
  Phần định trị có thể được biểu diễn thành nhiều dạng
 Các cách viết sau đây là tương đương, trong đó 
 phần định trị được biểu diễn dưới dạng nhị phân:
 0.110 * 25
 110 * 22
 0.0110 * 26
  Quy ước biểu diễn: đưa về dạng 1.bbbbbbb....
  Khi lưu trữ không cần lưu trữ phần nguyên, chỉ cần 
 lưu trữ phần thập phân. Dấu chấm ngầm định ngay 
 sau 8 bit phần số mũ
+
 Ví dụ
 Chuyển số 23.5436 ra số nhị phân biểu diễn dạng dấu chấm 
 động 32b
  B1: chuyển 23.5436 ra số nhị phân: 10111.1001101 (xấp xỉ)
 ퟒ
  B2: chuẩn hóa: . 풙 
  B3: Biểu diễn dạng dấu chấm động:
+
 Ví dụ 1
 Biểu diễn số thực X = 0.375 về dạng số dấu chấm động theo 
 chuẩn IEEE 754 dạng 32 bit
 Ví dụ 2
 Có một số thực X có dạng biểu diễn nhị phân theo chuẩn IEEE 754 dạng 
 32 bit như sau: 1100 0001 0101 0110 0000 0000 0000 0000. Xác định giá 
 trị thập phân của số thực đó. 
 Ví dụ 3
 Xác định giá trị thập phân của số thực X có dạng biểu diễn theo chuẩn 
 IEEE 754 dạng 32 bit như sau: 
 0011 1111 1000 0000 0000 0000 0000 0000
+
 Miền giá trị
+
 Mật độ số dấu phẩy động
 b. Chuẩn IEEE 754
 Hiệp hội IEEE đã chuẩn hóa cho việc biểu diễn số dấu phẩy 
 động nhị phân trong máy tính
 Mục đích:
 . Hỗ trợ tính di động của chương trình từ bộ xử lý này sang bộ 
 xử lý khác
 . Khuyến khích phát triển các chương trình định hướng số học 
 tinh vi hơn
 Chuẩn được công nhận rộng rãi và được sử dụng trên hầu hết 
 các bộ VXL và bộ tính toán số học hiện đại 
 IEEE 754-2008 quy định các định dạng biểu diễn dấu phẩy động 
 nhị phân và thập phân
 Trong phần này chỉ đề cập đến dạng biểu diễn dấu phẩy động 
 nhị phân
+
 IEEE 754-2008
  IEEE 754-2008 định nghĩa 3 định dạng dấu chấm động sau:
  Định dạng số học
  Được sử dụng để biểu diễn các toán hạng hoặc kết quả phép toán dưới 
 dạng dấu chấm động.
  Định dạng cơ bản: quy định 5 dạng biểu diễn dấu chấm động:
  Ba cho số nhị phân: chiều dài 32b, 64b và 128b
  Hai cho thập phân: chiều dài 64b và 128b
  Định dạng chuyển đổi
  Đưa ra dạng mã hoá nhị phân độ dài cố định cho phép trao đổi dữ liệu giữa 
 các nền tảng khác nhau và có thể được sử dụng để lưu trữ.
 Định dạng 
 IEEE 754
 Cơ số R = 2 
 Có các dạng cơ bản: 
 . Dạng 32-bit: 1b dấu, 8b mũ, 
 23b định trị
 . Dạng 64-bit: 1b dấu, 11b mũ, 
 52b định trị
 . Dạng 128-bit: 1b dấu, 15b 
 mũ, 112b định trị
 Bảng 10.3 Thông số định dạng chính trong chuẩn IEEE 754 
*không bao gồm bit ngầm định và bit dấu
+
 IEEE754: Một số quy ước đặc biệt
  Nếu tất cả các bit của phần số mũ đều bằng 0, các bit của phần định trị 
 đều bằng 0, thì X = ± 0
  Ví dụ: định dạng 32b: 
 +010 = 0 00000000 00000000000000000000000
 −010 = 1 00000000 00000000000000000000000
  Nếu tất cả các bit của phần mũ đều bằng 1, các bit của phần định trị đều 
 bằng 0, thì X = ± ∞ 
  Ví dụ: định dạng 32b: 
 +∞ = 0 11111111 00000000000000000000000
 −∞ = 1 11111111 00000000000000000000000
  Nếu tất cả các bit của phần mũ đều bằng 1, phần định trị có ít nhất một 
 bit bằng 1, thì X biểu diễn một giá trị quy ước NaN (not a number) 
  NaN sinh ra bởi một số phép toán dấu chấm động đặc biệt, vd: ±∞/±∞
  Có hai loại NaN: quiet NaN và signalling NaN
+
 Các định dạng bổ sung
 Extended Precision Formats Extendable Precision Format 
  Cung cấp các bit bổ sung trong số  Độ chính xác và phạm vi được xác 
 mũ (phạm vi mở rộng) và trong định dưới sự kiểm soát của người 
 phần định trị (độ chính xác mở dùng
 rộng)
  Có thể được sử dụng để tính toán 
  Giảm khả năng kết quả cuối cùng 
 bị tồi đi do sai số làm tròn quá mức trung gian nhưng chuẩn sẽ không có 
 ràng buộc hoặc định dạng hoặc 
  Giảm bớt khả năng tràn trung gian chiều dài
 làm hủy bỏ phép tính có kết quả
 cuối cùng có thể biểu diễn được
 dưới định dạng cơ bản
  Có một số lợi ích của định dạng cơ
 bản rộng hơn mà không phải chịu
 chi phí thời gian khi muốn độ chính
 xác cao hơn
+
 5 Các phép toán với số dấu chấm động
 a. Phép toán cộng và trừ
Cộng và trừ dấu phẩy động
+ Bốn bước cơ bản của thuật toán cộng và trừ
 Kiểm tra các số hạng có bằng 0 hay không 
  Nếu có thì gán kết quả dựa trên số còn lại. 
 Hiệu chỉnh phần định trị 
  Sao cho 2 số có phần mũ giống nhau: tăng số mũ nhỏ và dịch phải 
 phần định trị tương ứng (dịch phải để hạn chế sai số nếu có). 
 3 3 3
  VD: 1.01 * 2 + 1.11 = 1.01 * 2 + 0.00111 * 2
 Cộng hoặc trừ phần định trị 
  Nếu tràn thì dịch phải và tăng số mũ, nếu bị tràn số mũ thì báo lỗi tràn 
 số. 
 Chuẩn hóa kết quả 
  Dịch trái phần định trị để bit trái nhất (bit MSB) khác 0. 
  Tương ứng với việc giảm số mũ nên có thể dẫn đến hiện tượng tràn 
 dưới số mũ.
+
 Các khả năng tràn số
 Phép toán cộng hoặc trừ có thể gây ra một số khả 
 năng tràn như sau:
  Tràn trên số mũ (Exponent Overflow): mũ dương vượt ra khỏi 
 giá trị cực đại của số mũ dương có thể. 
  Tràn dưới số mũ (Exponent Underflow): mũ âm vượt ra khỏi 
 giá trị cực đại của số mũ âm có thể. 
  Tràn trên phần định trị (Mantissa Overflow): cộng hai phần định 
 trị có cùng dấu, kết quả bị nhớ ra ngoài bit cao nhất. 
  Tràn dưới phần định trị (Mantissa Underflow): Khi hiệu chỉnh 
 phần định trị, các số bị mất ở bên phải phần định trị.
 +
 b. Phép nhân 
 dấu chấm động
• Bộ nhân phần định trị được thực 
 hiện giống như thuật toán nhân 
 hai số nhị phân thông thường.
• Kết quả sẽ có kích thước lớn gấp 
 đôi, tuy nhiên giá trị sẽ được 
 chuẩn hóa theo dạng biểu diễn
+
c. Phép chia
dấu chấm động
+
 Nhân và chia dấu chấm động
 Các bước cơ bản
 1. Kiểm tra 0
 2. Cộng/trừ số mũ (có thể xảy ra tràn kiểm tra tràn 
 mũ)
 3. Nhân/chia các định trị
 4. Chuẩn hóa
 5. Làm tròn
 +
 Câu hỏi chương 9
1. Giải thích ngắn gọn về các biểu diễn: dấu-độ lớn, bù 2.
2. Cách xác định một số là âm hay dương trong các biểu diễn: dấu-độ 
lớn, bù 2.
3. Nguyên tắc mở rộng phạm vi biểu diễn số cho biểu diễn bù 2 là gì?
4. Cách đảo một số nguyên trong biểu diễn bù 2?
5. Phân biệt biểu diễn bù 2 của một số và bù 2 của một số?
6. Nếu coi 2 số bù 2 như là số nguyên không dấu khi thực hiện cộng, kết 
quả hiểu theo số bù 2 là chính xác. Điều này không đúng với phép nhân. 
Tại sao?
7. Bốn thành phần của một số trong biểu diễn dấu chấm động là gì?
8. Vì sao sử dụng biểu diễn bias cho số mũ của một số dấu chấm động?
9. Phân biệt tràn số mũ, và tràn định trị?
10. Các yếu tố cơ bản của phép cộng và trừ dấu chấm động là gì?

File đính kèm:

  • pdfbai_giang_kien_truc_may_tinh_chuong_9_bo_xu_ly_so_hoc_nguyen.pdf