Tóm tắt — Bài viết này nằm trong loạt bài viết về việc đề xuất một kiến trúc phần cứng có thể tái cấu hình động lõi thô CGRA (Coarse-grained Reconfigurable Architecture) ứng dụng trong lĩnh vực xử lý đa phương tiện và truyền thông có tên viết tắt là MUSRA (Multimedia Specific Reconfigurable Architecture). Để giải quyết vấn đề về yêu cầu băng thông dữ liệu lớn trong các mảng xử lý song song, kiến trúc MUSRA được đề xuất tập trung vào việc khai thác tính cục bộ của dữ liệu nhằm giảm băng thông dữ liệu và tăng hiệu quả sử dụng tài nguyên tính toán. Kiến trúc được đề xuất đã được mô hình hóa bằng ngôn ngữ C nhằm mục đích mô phỏng và phân tích các tham số khác nhau của kiến trúc hệ thống mục tiêu, cũng như hỗ trợ khả năng đồng kiểm chứng phần cứng – phần mềm khi ánh xạ một ứng dụng lên hệ thống. Một số ứng dụng đã được ánh xạ và chạy trên mô hình C của kiến trúc nhằm kiểm chứng khả năng ứng dụng linh hoạt của kiến trúc được đề xuất cho một dải các ứng dụng xử lý đa phương tiện và truyền thông.
Thành phần quyết định tới khả năng có thể tái cấu hình của MUSRA là mảng RCA được tổ chức thành một ma trận 8×8 phẩn tử RC (Reconfigurable Cell) và có thể thực hiện cấu hình từng phần ở thời gian chạy để thực hiện một nhiệm vụ tính toán chuyên sâu (Computation-intensive algorithms). Kiến trúc TOP-DOWN phần DATAPATH của mảng RCA8x8 được chỉ ra trong Hình 2.
Kết cấu truyền thông của RCA được thiết kế nhằm khai thác tối đa khả năng tính toán theo phương thức đường ống hóa (pipelining) tính toán của các vòng lặp, cũng như khai thác tối đa dữ liệu giữa các lần lặp qua đó giảm băng thông dữ liệu vào RCA. Các RC trong hai hàng liên tiếp được kết nối với nhau thông qua hệ thống các chuyển mạch crossbar (Crossbar Switch). Thông qua qua hệ thống chuyển mạch này một RC có thể nhận kết quả tính toán từ một RC bất kỳ ở hàng ngay trên nó, đặc biệt RC trong hàng đầu tiên có thể lấy kết quả tính toán từ RC hàng cuối cùng.
RC (Hình 3) là đơn vị xử lý cơ bản của mảng RCA. Mỗi RC có thể thực hiện các thao tác trên 2 hoặc 3 toán hạng 8/16 bit chẳng hạn như các phép tính logic và số học, phép nhân, và các phép tính được dùng nhiều trong xử lý đa phương tiện và truyền thông (như dịch barrel, dịch làm tròn, tổng sai số tuyệt đối, v.v) như chỉ ra trong Bảng 1. Mỗi RC cũng có một thanh ghi cục bộ LOR (Local Register), dùng cho việc hiệu chỉnh chu kỳ làm việc của đường ống khi ánh xạ vòng lặp lên RCA, hoặc để lưu các hệ số trong suốt thời gian RCA làm việc. Dữ liệu đầu vào của mỗi RC có thể từ IN_FIFO, từ RC hàng ngay trên nó hoặc từ thanh ghi toàn cục GRF. Mỗi RC cũng bao gồm 2 tệp thanh ghi cấu hình, ký hiệu là layer 0 và layer 1. Khi một layer đang được dùng cho thiết lập chức năng của RC, layer còn lại có thể được dùng để nạp trước cấu hình tiếp theo của RC.
Bảng 1. Các phép tính được hỗ trợ bởi RCA.
Classification | Opcode | Operation | Description | Mnemonic |
Arithmetic operations | 5’b00000 (0) | A+B | Add A and B | ADD |
5’b00001 (1) | A−B | Subtract B from A | SUB | |
Shift operations | 5’b00010 (2) | A>>B[3:0] | Shift A to the right by B[3:0] | BSR |
5’b00011 (3) | A<<B[3:0] | Shift A to the left by B[3:0] | BSL | |
5’b00100 (4) | (A+((1<<B)>>1)>>B | Shift Right and Round | SRR | |
Bypass A | 5’b00101 (5) | A | Bypass A | A |
Bitwise operations | 5’b00110 (6) | A&B | Bitwise AND | AND |
5’b00111 (7) | A|B | Bitwise OR operator | OR | |
5’b01000 (8) | A^B | Bitwise Exclusive OR | XOR | |
5’b01001 (9) | ~(A^B) | Bitwise NOT XOR | NXOR | |
Absolute operation | 5’b01010 (10) | |A−B| | Absolute Difference | ASD |
Comparison Operations | 5’b01011 (11) | A−B>0 | Is A Greater than B? | TGT |
5’b01100 (12) | A−B=0 | Is A Equal to B? | TEQ | |
5’b01101 (13) | A−B>=0 | Is A Greater than or equal to B? | TGE | |
Saturation operator 1
(Clip A between 0 and B) |
5’b01110 (14) | A<0?0:(A>B?B:A) | If A<0 then result := 0
Else if A>B then result := B Else result := A |
CLIP |
5’b01111 (15) | Max(A, B) | If A<B then result = B else result =A | MAXB | |
Condition operation 2 (Multiplexer) | 5’b10000 (16) | C?A:B | Result := C?A:B
(‘Comp’ is the result of RC that is in the immediately above row and the same column with the current RC) |
MUX |
Multiplication | 5’b10001 (17) | A×B lower 16 (or 8) bits | MUL | |
5’b10010 (18) | ||||
Asymmetric Arithmetic operators | 5’b10011 (19) | B−A | Subtract A from B | |
5’b10100 (20) | B−A>0 | Is A Less than B? | ||
5’b10101 (21) | B−A>=0 | Is A Less than or equal to B? | ||
Condition operation 2 | 5’b10110 (22) | C==1?B+A:B−A | ‘C’ is the Tempreg_input that is in the same row and column with the current RC | |
Saturation operator 2 | 5’b10111 (23) | Min(A, B) | If A>B then result = B else result =A | MIN |
Bypass B | 5’b11001 (25) | B | Bypass B | B |
5’b11011 (27) | C+|A−B| | Result := C+ |A−B| | SADC | |
5’b11100 (28) | C+(A+B) | Result := C+A+B | SUM3 | |
5’b11101 (29) | B + |C−A| | Result := B+|C−A| | SADB | |
5’b11101 (30) | A*B + C | Result := A*B+C | MAC | |
Others | Reserved |