KIẾN TRÚC MÁY TÍNH - Phép phân có đấu

22 513 0
Tài liệu đã được kiểm tra trùng lặp
KIẾN TRÚC MÁY TÍNH - Phép phân có đấu

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Phép nhân dấu  Đơn giản hóa HUST-FET, 13/02/2011 121 Chương 2. Ngôn ngữ máy tính và các phép toán a 3 a 2 a 1 a 0 * b 3 b 2 b 1 b 0 a 3 b 0 a 3 b 0 a 3 b 0 a 3 b 0 a 3 b 0 a 2 b 0 a 1 b 0 a 0 b 0 + a 3 b 1 a 3 b 1 a 3 b 1 a 3 b 1 a 2 b 1 a 1 b 1 a 0 b 1 + a 3 b 2 a 3 b 2 a 3 b 2 a 2 b 2 a 1 b 2 a 0 b 2 + a 3 b 3 a 3 b 3 a 2 b 3 a 1 b 3 a 0 b 3 + 1 p 7 p 6 p 5 p 4 p 3 p 2 p 1 p 0 a 3 a 2 a 1 a 0 * b 3 b 2 b 1 b 0 a 2 b 0 a 1 b 0 a 0 b 0 + a 2 b 1 a 1 b 1 a 0 b 1 + a 2 b 2 a 1 b 2 a 0 b 2 + a 2 b 3 a 1 b 3 a 0 b 3 + 1 - a 3 b 0 - a 3 b 1 - a 3 b 2 - a 3 b 3 p 7 p 6 p 5 p 4 p 3 p 2 p 1 p 0 Phép nhân dấu  Đơn giản hóa HUST-FET, 13/02/2011 122 Chương 2. Ngôn ngữ máy tính và các phép toán a 3 a 2 a 1 a 0 * b 3 b 2 b 1 b 0 a 2 b 0 a 1 b 0 a 0 b 0 + a 2 b 1 a 1 b 1 a 0 b 1 + a 2 b 2 a 1 b 2 a 0 b 2 + a 2 b 3 a 1 b 3 a 0 b 3 + 1 - a 3 b 0 - a 3 b 1 - a 3 b 2 - a 3 b 3 p 7 p 6 p 5 p 4 p 3 p 2 p 1 p 0 a 3 a 2 a 1 a 0 * b 3 b 2 b 1 b 0 a 2 b 0 a 1 b 0 a 0 b 0 + a 2 b 1 a 1 b 1 a 0 b 1 + a 2 b 2 a 1 b 2 a 0 b 2 + a 2 b 3 a 1 b 3 a 0 b 3 + 1 - 0 a 3 b 3 a 3 b 2 a 3 b 1 a 3 b 0 p 7 p 6 p 5 p 4 p 3 p 2 p 1 p 0 Phép nhân dấu  Đơn giản hóa HUST-FET, 13/02/2011 123 Chương 2. Ngôn ngữ máy tính và các phép toán a 3 a 2 a 1 a 0 * b 3 b 2 b 1 b 0 a 2 b 0 a 1 b 0 a 0 b 0 + a 2 b 1 a 1 b 1 a 0 b 1 + a 2 b 2 a 1 b 2 a 0 b 2 + a 2 b 3 a 1 b 3 a 0 b 3 + 1 - 0 a 3 b 3 a 3 b 2 a 3 b 1 a 3 b 0 p 7 p 6 p 5 p 4 p 3 p 2 p 1 p 0 a 3 a 2 a 1 a 0 * b 3 b 2 b 1 b 0 a 2 b 0 a 1 b 0 a 0 b 0 + a 2 b 1 a 1 b 1 a 0 b 1 + a 2 b 2 a 1 b 2 a 0 b 2 + a 2 b 3 a 1 b 3 a 0 b 3 + 1 + 1 a 3 b 3 a 3 b 2 a 3 b 1 a 3 b 0 1 p 7 p 6 p 5 p 4 p 3 p 2 p 1 p 0 Phép nhân dấu  Đơn giản hóa HUST-FET, 13/02/2011 124 Chương 2. Ngôn ngữ máy tính và các phép toán a 3 a 2 a 1 a 0 * b 3 b 2 b 1 b 0 a 2 b 0 a 1 b 0 a 0 b 0 + a 2 b 1 a 1 b 1 a 0 b 1 + a 2 b 2 a 1 b 2 a 0 b 2 + a 2 b 3 a 1 b 3 a 0 b 3 + 1 + 1 a 3 b 3 a 3 b 2 a 3 b 1 a 3 b 0 1 p 7 p 6 p 5 p 4 p 3 p 2 p 1 P 0 a 3 a 2 a 1 a 0 * b 3 b 2 b 1 b 0 a 3 b 0 a 2 b 0 a 1 b 0 a 0 b 0 + a 3 b 1 a 2 b 1 a 1 b 1 a 0 b 1 + a 3 b 2 a 2 b 2 a 1 b 2 a 0 b 2 + a 3 b 3 a 2 b 3 a 1 b 3 a 0 b 3 + 1 1 p 7 p 6 p 5 p 4 p 3 p 2 p 1 p 0 Bộ nhân dấu HUST-FET, 13/02/2011 125 Chương 2. Ngôn ngữ máy tính và các phép toán Bộ nhân nối tiếp  Sử dụng bộ cộng để cộng các tích cục bộ  Thực hiện phép nhân trong vài chu kỳ đồng hồ  Lưu số bị nhân, số nhân và kết quả tạm thời trong các thanh ghi  Với mỗi bit b i của số nhân B (từ phải qua trái)  Nhân b i với số bị nhân A và cộng tích với kết quả tổng tạm thời Y  Nếu b i = 1 thì cộng A vào Y  Dịch A sang trái 1 bit HUST-FET, 13/02/2011 126 Chương 2. Ngôn ngữ máy tính và các phép toán Bộ nhân nối tiếp HUST-FET, 13/02/2011 127 Chương 2. Ngôn ngữ máy tính và các phép toán Dịch trái A[2n-1:0] 2n-bit ALU Dịch phải B[n-1:0] Y[2n-1:0] control Start A[n-1:0] ← SBN B[n-1:0] ← SN Y[2n-1:0] ← 0 Count ← n B 0 = 1 Y←Y+A Dịch phải B Dịch trái A Count ← Count - 1 Count = 0 Stop Y N Y N Triển khai gồm: 2 thanh ghi 2n bit 1 thanh ghi n bit 1 bộ cộng 2n bit 1 khối điều khiển Ví dụ 2.10 - Bộ nhân nối tiếp HUST-FET, 13/02/2011 128 Chương 2. Ngôn ngữ máy tính và các phép toán Nhận xét:  Một nửa số bit của A luôn bằng 0  Khi A dịch trái, bit 0 được thêm vào bên phải  các bit LSB của tích không bị ảnh hưởng Ý tưởng: Giữ A ở phía trái của tích và dịch tích sang phải 1 Start A[n-1:0] ← SBN B[n-1:0] ← SN Y[2n-1:0] ← 0 Count ← n B 0 = 1 Y←Y+A Dịch phải B Dịch trái A Count ← Count - 1 Count = 0 Stop Y N Y N 0 1 10 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1 0 1 0 0 1 0 0 1 1 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 1 1 0 1 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 Counter=4 Counter=3 Counter=2 Counter=1 Counter=0 Y A B B B B B Y A Y A Y A Y A Dịch trái A[2n-1:0] 2n-bit ALU Dịch phải B[n-1:0] Y[2n-1:0] control Bộ nhân nối tiếp – Dùng n-bit ALU HUST-FET, 13/02/2011 129 A[n-1:0] n-bit ALU B[n-1:0] C,Y[2n-1:0] control Start A[n-1:0] ← SBN B[n-1:0] ← SN C,Y[2n-1:0] ← 0 Count ← n B 0 = 1 C,Y[2n-1:n]← Y[2n-1:n]+A Dịch phải B Dịch phải C,Y Count ← Count - 1 Count = 0 Stop Y N Y N Triển khai gồm: 2 thanh ghi n bit 1 thanh ghi 2n+1 bit 1 bộ cộng n bit 1 khối điều khiển Ví dụ 2.11 – Bộ nhân nối tiếp HUST-FET, 13/02/2011 130 Nhận xét: Trong quá trình nhân chỉ một số bit của Y ý nghĩa với kết quả Counter=4 Counter=3 Counter=2 Counter=1 Counter=0 1 1 0 1A 1 1 0 1A 1 1 0 1A 0 0 1 0B 0 0 0 1B 0 1 0 1B 1 0 1 1B 0 0 0 0B Y 0 0 1 1 1 0 0 01 Y 1 0 0 1 1 1 0 00 1 1 0 1A 0 0 0 0 0 0 0 0Y 0 1 1 0 1 0 0 0 0Y 0 0 1 1 0 1 0 0 0Y 0 1 0 0 1 1 1 0 00Y 0 1 0 0 1 1 1 00Y 0 0 0 1 1 1 1 01Y 1 0 0 0 1 1 1 10Y A[n-1:0] n-bit ALU B[n-1:0] C,Y[2n-1:0] control Start A[n-1:0] ← SBN B[n-1:0] ← SN C,Y[2n-1:0] ← 0 Count ← n B 0 = 1 C,Y[2n-1:n]← Y[2n-1:n]+A Dịch phải B Dịch phải C,Y Count ← Count - 1 Count = 0 Stop Y N Y N [...]... với số bị nhân 134 HUST-FET, 13/02/2011 Thuật toán nhân Booth Start A[n-1:0] ← SBN B[n-1:0] ← SN C,Y[n-1:0],B-1 ← 0 Count ← n C,Y[n-1:0] ←Y[n-1:0]-A 10 B0B-1 N 01 C,Y[n-1:0] ←Y[n-1:0]+A 00,11 Dịch phải C,Y,B,B-1 Count ← Count - 1 an-1 Số bị nhân A a0 N Logic điều khiển cộng, trừ và dịch phải Bộ tổng n bit Count = 0 Y cn yn-1 y0 bn-1 Số nhân B b0 Stop 135 HUST-FET, 13/02/2011 b-1 Ví dụ 2.14 – Minh họa... Counter=2 C,Y[n-1:0] ←Y[n-1:0]-A 10 B0B-1 N 0 1 1 0 0 0 1 0 0 1 1 0 0 0 1 0 0 1 1 0 0 Counter=1 01 C,Y[n-1:0] ←Y[n-1:0]+A 00,11 Dịch phải C,Y,B,B-1 Count ← Count - 1 Counter=0 N a0 Count = 0 Logic điều khiển cộng, trừ và dịch phải Bộ tổng n bit Y Stop cn yn-1 y0 bn-1 Số nhân B b0 b-1 136 HUST-FET, 13/02/2011 Nhân Booth: Nhân dấu Vì a, b là 2 số dấu dạng bù 2: a = -2 n-1*an + 2n-2*an-2 + + 2*a1... a0 Xét 2 bit liên tiếp (ai , ai-1 ), hiệu của chúng và hoạt động nhân: ai ai-1 ai –ai-1 action 1 0 -1 Trừ b, và dịch 0 1 1 Cộng b và dịch 0 0 0 Bỏ qua 1 1 1 Bỏ qua Giá trị được tính toán bởi bộ nhân Booth: (0 - a0) * b + (a0 - a1) * b * 2 + (a1 – a2) * b * 22 + (an-3 – an-2) * b * 2n-2 + (an-2 – an-1) * b * 2n-1 Triển khai các số hạng và tối giản: b * (-2 n-1*an + 2n-2*an-2 + + 2*a1 + a0)= b * a which... trí v đến bit vị trí u (bn-1, bn-2,… bu+1,bu,…,bv,bv-1, ,b0) = (bn-1, bn-2,… 0,1,…,1,0, ,b0) Chuỗi bit thể thay thế bằng 2u+1 – 2v Các phép nhân và cộng cho các bít bu đến bv thể được thay bằng phép dịch trái và phép trừ Ví dụ: B = 001110 (1410), u = 3, v = 2  A x B = A* 24 – A*21 133 HUST-FET, 13/02/2011 Ví dụ 2.13 – Bộ nhân Booth A B B 0 1 0 1 0 1 0 0 1 1 1 0 0 +1 0 0 -1 0 0 0 0 0 0 0 1 0 1... Y[n-1:0],A[n-1:0] ← 0,SBC Count ← n  Nếu C = 1 (phép trừ kết quả âm)    Dịch trái C,Y,A  C,Y[n-1:0]← C,Y[n-1:0]-B Phục hồi số bị chia: Y = Y + B Nếu C = 0 (phép trừ kết quả dương)   N C=1 Bít kết quả a0=0 A0←1 Bít kết quả a0=1 0 bn-1 Số chia B b0 Y A0←0 Phục hồi Y = Y+B Logic điều khiển trừ và dịch trái Bộ trừ n+1 bit Count ← Count - 1 N Count = 0 C yn-1 y0 an-1 Số bị chia A a0 Y Stop 139 HUST-FET,... 0 1 0 1 1 1 0 1 1 1 1 0 1 Counter=4 an-1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 Logic điều khiển cộng và dịch phải Bộ tổng n bit Counter=3 cn 1 1 0 1 1 1 1 0 a0 yn-1 y0 bn-1 b0 Số nhân B Start Counter=2 A[n-1:0] ← SBN C,Y[n-1:0],B[n-1:0] ← 0,SN Count ← n Counter=1 B0 = 1 Y C,Y[n-1:0]← Y[n-1:0]+A N Counter=0 Dịch phải C,Y,B Count ← Count - 1 N Count = 0 Y Stop 132 HUST-FET, 13/02/2011 Nhân Booth Nhân với một...Bộ nhân nối tiếp Start A[n-1:0] ← SBN C,Y[n-1:0],B[n-1:0] ← 0,SN Count ← n B0 = 1 Y Triển khai gồm:  1 thanh ghi n bit  1 thanh ghi 2n+1 bit  1 bộ cộng n bit  1 khối điều khiển C,Y[n-1:0]← Y[n-1:0]+A N Số bị nhân A Dịch phải C,Y,B Count ← Count - 1 N an-1 a0 Logic điều khiển cộng và dịch phải Bộ tổng n bit Count = 0 Y cn Stop yn-1 y0 bn-1 b0 Số nhân B 131 HUST-FET, 13/02/2011 Ví dụ 2.12 – Bộ... Counter=1 Counter=3 B[n:0] ← SC C, Y[n-1:0],A[n-1:0] ← 0,SBC Count ← n Dịch trái C,Y,A C,Y[n-1:0]← C,Y[n-1:0]-B N C=1 Y 0 0 0 0 1 1 0 0 A0←0 Phục hồi Y = Y+B Counter=0 Count ← Count - 1 b0 Logic điều khiển trừ và dịch trái Bộ trừ n+1 bit N Count = 0 Y Stop C yn-1 y0 an-1 Số bị chia A 140 a0 HUST-FET, 13/02/2011 A0←1 Chia dấu 1 Chia phần giá trị tuyệt đối 2 Xác định dấu của kết quả  Dấu của thương:  Dương... B Y Y -B Y Y Y -B Y Y Y -B Y Y Y -B Y Y 0 0 1 1 0 0 1 1 0 0 1 0 0 0 1 1 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 1 1 0 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 1 1 0 1 1 0 1 1 1 0 0 1 1 0 1 bn-1 Số chia B Start Counter=4 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 Counter=2 1 1 0 0 0 0 0 0 1 0 1 0 Counter=1 Counter=3 B[n:0] ← SC C, Y[n-1:0],A[n-1:0]... họa thuật toán Booth A Y Y -A Y Y Y Y +A Y Y Y 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 an-1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 0 1 1 0 0 1 0 Số bị nhân A 1 0 0 0 0 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 1 1 1 0 1 1 0 1 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 Counter=6 Counter=5 Start 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 1 1 1 0 0 1 1 1 A[n-1:0] ← SBN B[n-1:0] ← SN C,Y[n-1:0],B-1 ← 0 Count ← n Counter=4 . A[2n-1:0] 2n-bit ALU Dịch phải B[n-1:0] Y[2n-1:0] control Bộ nhân nối tiếp – Dùng n-bit ALU HUST-FET, 13/02/2011 129 A[n-1:0] n-bit ALU B[n-1:0] C,Y[2n-1:0]. 1 1 10Y A[n-1:0] n-bit ALU B[n-1:0] C,Y[2n-1:0] control Start A[n-1:0] ← SBN B[n-1:0] ← SN C,Y[2n-1:0] ← 0 Count ← n B 0 = 1 C,Y[2n-1:n]← Y[2n-1:n]+A Dịch

Ngày đăng: 06/10/2013, 22:20

Tài liệu cùng người dùng

Tài liệu liên quan