Pipeline cho bài toán nhâ n2 số trên FPGA

Một phần của tài liệu Nghiên cứu công nghệ FPGA và ứng dụng xử lý nhanh dữ liệu (Trang 45 - 51)

Trên ngôn ngữ lập trình VHDL, có thể viết đƣợc chƣơng trình thực thi nhân 2 số nguyên lớn (mỗi số nguyên đầu vào A, B với 40 bit, hay 5 byte), kết quả lƣu trữ đầu ra ở 1 số gồm 80 bit (10 byte), trên Hình vẽ 2.3 mô tả mô hình của khối nhân này.

Hình 2.3: Phép nhân 2 số A x B = Y

Chƣơng trình thực thi nhân 2 số A x B = Y đƣợc viết trên ngôn ngữ VHDL có thể đƣa ra nhƣ phần dƣới đây:

______________________________________________________

entity Mult is port (

A, B : In unsigned (39 downto 0); Y : Out unsigned (79 downto 0) ) ;

end Mult ;

begin

Y <= A * B ; end Nhan2So ;

________________________________________________________

Giải thích: Khối nhân có tên là Mult, đƣợc khai báo với 2 cổng đầu vào gồm có 40 bit, một cổng đầu ra với độ rộng là 80 bit, kết quả gán A x B = Y khi thực hiện xong phép nhân.

Việc thực thi phép nhân 2 số nguyên 40 bit (5 byte) là một vấn đề khó khăn, chính vì thế để thực hiện bài toán này, trong [7] đã đƣa ra cách tiếp cận thực hiện trên bộ số nguyên 8 bit. Với từng phần của số nguyên A gồm 8 bit và triển khai lần lƣợt nhân với các phần của số nguyên B, rồi cùng với sự dịch chuyển bit có thể thực hiện đƣợc phép nhân này.

Trên Hình 2.4 mô tả ý tƣởng thực thi phép nhân trong các CPU. Ví dụ với 2 số nguyên 8 bit, việc thực thi tuần từ từng bƣớc chính là cách thực thi hiện nay trong các ALU của CPU khi thực thi, đó là phép nhân sẽ đƣợc thực hiện tuần tự số A với từng bit của số B và phép dịch chuyển bit tùy thuộc vị trí của từng bit (Hình 2.4a). Ý tƣởng này đƣợc trình bày theo mô hình khối nhân và khối cộng trong Hình 2.4b.

a) b) Hình 2.4: Thực thi phép nhân 2 số A x B = Y

Trên Hình 2.5 mô tả ý tƣởng thực thi phép nhân khi sử dụng Pipeline. Ý tƣởng thực thi ở đây là chia bộ nhân này ra ở giai đoạn cộng các kết quả khi chia bộ cộng thành 2 bƣớc, bƣớc thứ nhất với 5 bộ cộng (Adder) theo từng nhóm khi thực thi trên từng bit của số B (mỗi số 8 bit). Cụ thể ở đây tại bƣớc 1 (Stage 1) số nguyên A nhân với 8 bit đầu tiên của số nguyên B, sau đó thực thi phép cộng các kết quả này tại bộ cộng. Việc hiển thị kết quả đƣợc điều khiển thông qua tín hiệu CLK (Clock) để đảm bảo kết quả đó sẽ hiển thị khi nào xung CLK đƣợc chuyển từ 0 lên 1. Đồng thời số nguyên A với sự dịch chuyển về bên trái 8 bit tiếp tục đƣợc nhân với số nguyên B (Hình 2.5). Các kết quả ở những bộ cộng (Adder) sẽ đƣợc tổng hợp thành các tín hiệu Y1, Y2, Y3, Y4, Y5, các kết quả này sẽ đƣợc đƣa vào bộ cộng tổng hợp tại bƣớc 2 (Stage 2). Việc sử dụng các bit điều khiển CLK sẽ cho phép đảm bảo thực thi đúng kết quả ở mỗi giai đoạn.

Hình 2.5: Pipeline cho phép nhân 2 số A x B = Y

Ý tƣởng này có thể mô hình hóa lại tại Hình 2.6 [7].

Chi tiết việc thực thi kết quả Y1 (tƣơng tự với Y2, Y3, Y4, Y5) đƣợc trình bày trong Hình 2.7 [7].

Hình 2.7: Pipeline cho phép nhân 2 số A x B = Y

Code chƣơng trình đƣợc viết trên ngôn ngữ VHDL đƣợc đƣa ra dƣới dây.

____________________________________________________

architecture Rtl3 of PipeMult is

signal Y1, Y2, Y3, Y4, Y5 : unsigned (47 downto 0);

constant ZERO :unsigned(31 downto 0) := (others => '0'); begin PipeMultProc : process begin wait until clk = '1' ; Y1 <= A * B( 7 downto 0) ; Y2 <= A * B(15 downto 8) ;

Y3 <= A * B(23 downto 16) ; Y4 <= A * B(31 downto 24) ; Y5 <= A * B(39 downto 32) ; Y <=

(ZERO(31 downto 0) & Y1 ) +

(ZERO(31 downto 8) & Y2 & ZERO( 7 downto 0)) + (ZERO(31 downto 16) & Y3 & ZERO(15 downto 0)) + (ZERO(31 downto 24) & Y4 & ZERO(23 downto 0)) + ( Y5 & ZERO(31 downto 0)) ;

end process ; end Rtl3 ;

____________________________________________________

Với các nghiên cứu, tìm hiểu trong phần này, sẽ giúp ích cho việc xây dựng, thử nghiệm kết quả demo ở chƣơng sau đúng theo khả năng của kỹ thuật pipeline trên FPGA.

CHƢƠNG 3: ỨNG DỤNG FPGA XỬ LÝ NHANH DỮ LIỆU

Đối với bài toán xử lý nhanh dữ liệu, với mọi dạng dữ liệu, vi xử lý cũng sẽ vẫn quy về các phép toán thực thi trên ALU với nhƣng phép biến đổi logic, số học, đại số, vì vậy ở trong chƣơng này, chúng ta sẽ xem xét đối với bài toán cộng bộ các số nguyên và nhân các số nguyên, từ đó cho thấy khả năng xử lý nhanh đối với công nghệ FPGA.

Một phần của tài liệu Nghiên cứu công nghệ FPGA và ứng dụng xử lý nhanh dữ liệu (Trang 45 - 51)

Tải bản đầy đủ (PDF)

(67 trang)