Mã hóa Booth

Một phần của tài liệu Bài giảng Thiết kế hệ thống VLSI: Phần 2 (Trang 30 - 34)

Các bộ nhân mảng đề cập trong các phần trên tính toán các tích thành phần theo cơ số 2, tức là bằng cách mỗi lần quan sát một bít của bộ nhân. Các bộ nhân cơ số 2r tạo ra N/r tích thành phần, mỗi một tích thành phần sẽ phụ thuộc vào r bít của bộ nhân. Càng ít số tích thành phần sẽ dẫn đến mảng CSA nhỏ hơn và nhanh hơn. Ví dụ, bộ nhân cơ số 4 tạo ra N/2 tích thành phần. Mỗi tích thành phần là 0, Y, 2Y hoặc 3Y phụ thuộc vào một cặp bít của X. Việc tính toán 2Y có thể thực hiện một cách đơn giản bằng phép dịch, tuy nhiên việc tính 3Y là một phép nhân khó vì nó yêu cầu một phép cộng truyền nhớ chập của Y+2Y trước khi quá trình tạo tích thành phần bắt đầu.

B ảng 4.2: Các giá trị mã hóa Booth cơ số 4 cải tiến

Các đầu vào Tích thành phần Các lựa chọn Booth

x2i+1 x2i x2i-1 PPi Xi 2Xi Mi

0 0 1 Y 1 0 0

0 1 0 Y 1 0 0

0 1 1 2Y 0 1 0

122

1 0 1 -Y 1 0 1

1 1 0 -Y 1 0 1

1 1 1 -0(=0) 0 0 1

Mã hóa Booth đầu tiên được đề xuất để tăng tốc các phép nhân nối tiếp. Mã hóa Booth cải tiến cho phép hoạt động song song cơ số cao hơn mà không tạo ra phép nhân 3Y khó bằng cách thay vì sử dụng các tích thành phần âm. Quan sát thấy rằng 3Y=4Y-Y và 2Y=4Y-2Y. Tuy nhiên, 4Y trong một mảng bộ nhân cơ số 4 là tương đương với Y trong hàng tiếp theo của mảng hàng mà mang 4 lần trọng số. Do vậy, các tích thành phần được chọn bằng cách xem xét một cặp bít cùng với bít bậc cao nhất từ cặp trước đó. Nếu bít bậc cao nhất từ cặp trước là "thật" (true) thì Y phải được cộng vào tích thành phần hiện tại. Nếu bít bậc cao nhất của cặp hiện tại là "thật", thì tích thành phần hiện tại được chọn phải âm và tích thành phần tiếp theo được tăng lên. Bảng 4.2 minh họa cách các tích thành phần được chọn, dựa vào các bít của số nhân. Các tích thành phần được tạo ra bằng cách lấy phần bù 2 của số bị nhân (có thể dịch trái đi một cột).

Trong một bộ nhân mã hóa Booth cơ số 4, mỗi nhóm ba bít (một cặp, cùng với một bít bậc cao nhất của cặp trước đó) được giải mã thành một số đường lựa chọn (Xi, 2Xi, và Mi, được cho trong các cột bên phải của bảng 4.2) và được kích qua hàng tích thành phần như trong minh họa hình 4.38 [12].

Hình 4.38Bộ chọn và mã hóa Booth cơ số 4

Số nhân Y được phân bố đến tất cả các hàng. Các đường lựa chọn điều khiển các bộ chọn Booth để chọn các bội số thích hợp của Y cho mỗi tích thành phần. Các bộ chọn Booth thay thế các cổng AND trong một bộ nhân mảng đơn giản. Hình 4.38 minh họa một thiết kế bộ chọn Booth truyền thống thực hiện việc tính bít tích thành phần thứ j của tích thành phần i. Nếu tích thành phần có độ lớn Y, thì yi được chọn. Nếu nó có độ lớn 2Y thì yi+1 được chọn. Nếu nó âm, thì bội số được đảo ngược (và một bít 1 được cộng vào cột bậc nhỏ nhất ở trong mảng để tạo thành phần bù 2).

Thậm chí trong một bộ nhân không dấu, các tích thành phần âm phải được mở rộng dấu để được tính tổng một cách chính xác. Hình 4.39 [12] minh họa một mảng tích thành phần Booth cơ số 4 16-bít của một bộ nhân không dấu trong đó sử dụng lược đồ kí hiệu dấu

123 chấm để biểu diễn bộ nhân. Mỗi dấu chấm trong mạch nhân mã hóa Booth được tạo ra bởi một bộ chọn Booth chứ không phải bởi một cổng AND đơn giản. Với mỗi tích thành phần thứ i, bít dấu si =Mi =x2i+1 là 1 cho các bội số âm (những bội số trong phần nửa cuối của bảng 4.2) hoặc 0 cho các bội số dương. Chúng ta cũng quan sát thấy cách thức một bít 1 bổ sung được cộng vào bít bậc thấp nhất trong hàng tiếp theo để tạo thành phần bù 2 của các bội số âm. Bằng cách đảo ngược dãy ẩn các bít 0 sẽ tạo ra dãy các bít 1 trên các bội số âm. Các thành phần bổ sung làm tăng kích thước của bộ nhân. PP8 cần phải có trong trường hợp PP7 là âm; tích thành phần này luôn luôn bằng 0 hoặc Y bởi vì x16 và x17 bằng 0.

Hình 4.39Các tích thành phần mã hóa Booth cơ số 4 với mở rộng dấu

Chúng ta cũng thấy các bít mở rộng dấu tất cả hoặc là các bít 1 hoặc là các bít 0. Nếu một bít 1 duy nhất được cộng vào vị trí bậc thấp nhất trong một chuỗi bít toàn 1, kết quả là một chuỗi toàn bít 0 và một bít nhớ mà bít này có thể bị bỏ qua. Do đó, một số lượng lớn các bít s trong mỗi tích thành phần có thể được thay thế bằng một số tương đương các hằng số 1 và phần đảo của s được cộng vào vị trí bậc thấp nhất, như trong minh họa hình 4.40 [12]. Các hằng số chủ yếu có thể được tối ưu hóa ngoài mảng bằng cách tính toán trước tổng của chúng. Kết quả đơn giản hóa được minh họa trong hình 4.40. Như thông thường, bộ nhân có thể được ép để phù hợp với một phân hoạch (floorplan) hình chữ nhật.

124

Hình 4.40Các tích thành phần mã hóa Booth cơ số 4 với mở rộng dấu đơn giản hóa

Đường quyết định của một bộ nhân liên quan đến bộ giải mã Booth, các bộ kích (driver) đường lựa chọn, bộ chọn Booth, xấp xỉ N/2 CSA, và một CPA cuối cùng. Mỗi tích thành phần điền khoảng M+5 cột. Các bộ nhân Booth cơ số 4 5353-bít cho các khối dấu phẩy động độ chính xác kép theo tiêu chuẩn IEEE thường nhỏ hơn khoảng 20-30% (và nhanh hơn khoảng 20%) các bộ tương ứng không sử dụng mã hóa, do đó kỹ thuật mã hóa được sử dụng một cách rộng rãi. Bộ nhân yêu cầu M*N/2 bộ chọn Booth. Bởi vì chúng chiếm một phần lớn diện tích và chỉ một phần nhỏ đường quyết định, chúng phải được tối ưu hóa cho kích thước thay vì tốc độ.

Hình 4.41Các tích thành phần mã hóa Booth cơ số 4 cho phép nhân có dấu

Bảng 4.3: Các giá trị mã hóa Booth cơ số 8 cải tiến

xi+2 xi+1 xi xi-1 Tích thành phần

0 0 0 0 0

0 0 0 1 Y

0 0 1 0 Y

125 0 1 0 0 2Y 0 1 0 1 3Y 0 1 1 0 3Y 0 1 1 1 4Y 1 0 0 0 -4Y 1 0 0 1 -3Y 1 0 1 0 -3Y 1 0 1 1 -2Y 1 1 0 0 -2Y 1 1 0 1 -Y 1 1 1 0 -Y 1 1 1 1 -0(=0)

Phép nhân bù 2 có dấu cũng tương tự, nhưng việc mở rộng dấu dựa trên dấu của tích thành phần (tức là dựa vào bít bậc cao nhất của tích thành phần) thay vì đơn giản phụ thuộc vào Mi bởi vì số bị nhân có thể âm. Hình 4.41 [12] minh họa một mảng như vừa đề cập trong đó việc mở rộng bít dấu bởi ei=Miy15. Cũng chú ý rằng, PP8, thành phần bằng Y hoặc 0 đối với phép nhân không dấu, luôn bằng 0 và có thể được bỏ qua trong phép nhân có dấu bởi vì số nhân x được mở rộng dấu sao cho x17=x16=x15.

Các bộ nhân lớn có thể sử dụng phép mã hóa Booth với cơ số cao hơn. Ví dụ, phép nhân cơ số 8 thông thường giảm số các tích thành phần xuống khoảng 1/3, tuy nhiên nó yêu cầu các bội số khó là 3Y, 5Y và 7Y. Phép mã hóa Booth cơ số 8 chỉ yêu cầu một bội số khó là 3Y, như minh họa trong bảng 4.3 [12]. Mặc dù phương pháp này yêu cầu một bộ CPA trước khi thực hiện việc tạo tích thành phần, nó có thể được điều chỉnh bằng cách giảm kích thước của mảng và độ trễ. Các phép mã hóa Booth cơ số cao hơn cũng có thể được thực hiện, tuy nhiên việc tạo ra các bội số khó khác khiến cho việc tăng cơ số là không mang lại nhiều lợi ích so với các bộ nhân nhỏ hơn 64 bít. Các kỹ thuật tương tự cũng được áp dụng cho các bộ nhân cơ số cao mở rộng dấu. Một phương pháp khác cho phép nhân cơ số 8 là việc tạo các bộ số dư thừa thành phần, do đó tránh được các bội số khó. Bằng cách này, có thể cải thiện được tốc độ thực hiện, vùng diện tích, và công suất so với phương pháp mã hóa Booth cơ số 4.

Một phần của tài liệu Bài giảng Thiết kế hệ thống VLSI: Phần 2 (Trang 30 - 34)