Bài viết đề xuất mô hình tính toán và kiến trúc một mảng tái cấu hình cấu trúc thô CGRA (Coarse-Grained Reconfigurable Architecture) cho các ứng dụng điều khiển đòi hỏi hiệu năng tính toán cao. Đây là một mô hình tính toán mới nhằm giải quyết các vấn đề liên quan tới thông lượng tính toán lớn trong khi vẫn phải cân bằng các yếu tố: độ phức tạp, tính mềm dẻo và hiệu năng hoạt động của hệ thống. Mảng CGRA được đề xuất trong bài báo có thể được tích hợp như một phần tử tính toán trong các hệ thống SoC (System-onchip) có khả năng cấu hình động ứng dụng trong kỹ thuật điều khiển. Mời các bạn cùng tham khảo!
Trang 1Mô hình tính toán và Kiến trúc mảng tái cấu hình cấu trúc thô cho các ứng dụng điều khiển hiệu năng cao
Nguyễn Đức Nam, Trần Quang Vinh, Nguyễn Kiêm Hùng Khoa Điện tử - Viễn thông, Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội
Email: kiemhung@vnu.edu.vn
Abstract— Trong bài báo này, chúng tôi đề xuất mô hình tính
toán và kiến trúc một mảng tái cấu hình cấu trúc thô CGRA
(Coarse-Grained Reconfigurable Architecture) cho các ứng dụng
điều khiển đòi hỏi hiệu năng tính toán cao Đây là một mô hình
tính toán mới nhằm giải quyết các vấn đề liên quan tới thông
lượng tính toán lớn trong khi vẫn phải cân bằng các yếu tố: độ
phức tạp, tính mềm dẻo và hiệu năng hoạt động của hệ thống
Mảng CGRA được đề xuất trong bài báo có thể được tích hợp
như một phần tử tính toán trong các hệ thống SoC
(System-on-chip) có khả năng cấu hình động ứng dụng trong kỹ thuật điều
khiển Kiến trúc được đề xuất đã được mô hình hóa bằng ngôn
ngữ VHDL nhằm mục đích mô phỏng và kiểm thử trên FPGA.
Một số ứng dụng đã được ánh xạ và chạy trên kiến trúc CGRA
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 điều kiển khác nhau.
Keywords- kỹ thuật tái cấu hình, tính toán song song, vi mạch
lập trình, kiến trúc mảng tái cấu hình cấu trúc thô, CGRA
I GIỚI THIỆU
Tư duy sử dụng cấu trúc mảng gồm nhiều phần tử xử lý
trong tính toán song song được tiếp cận từ nhiều năm nay
Trong một mảng tính toán như vậy, các phần tử xử lý có thể
có cấu trúc và tính năng rất đa dạng và phong phú Ở một hệ
thống lớn, các phần tử này có thể là các vi mạch như DSP
(Digital Signal Processor), bộ xử lý, hay thậm chí là các hệ
máy tính Ở mức vi mạch, các phần tử trong mảng là các khối
xử lý có cấu trúc ở mức thấp hơn (ví dụ: các lõi CPU (Central
Processing Unit) trong GPU (Graphics Processor Unit), các tế
bào logic trong FPGA (Field Programable Gate Array), hay
các tế bào thô trong trong PSoC (Programable
System-on-Chip, …) Ở mức thứ hai, cấu trúc của các phần tử xử lý có
thể tiếp tục được phân chia thành loại cấu trúc tinh
(fine-grained fabrics) và loại cấu trúc thô (coarse-(fine-grained fabrics)
Mỗi loại cấu trúc này có những đặc trưng cơ bản riêng như:
- Cấu trúc tinh tập trung vào khả năng xử lý dữ liệu và
thiết lập cấu hình ở mức bit (ví dụ LUT (Look-up
Table), cổng logic, …) Loại cấu trúc này có ưu điểm là
tính mềm dẻo rất cao, nó cho phép có thể thực thi hầu
như bất cứ loại mạch số nào Tuy nhiên nhược điểm
nghiêm trọng của loại cấu trúc này là công suất tiêu thụ, trễ lan truyền tín hiệu và diện tích thực thi lớn [1]
- Kiến trúc thô tập trung vào khả năng xử lý dữ liệu và thiết lập cấu hình theo nhóm bit với các khối chức năng phức tạp (ví dụ ALU (Arithmetic-logic Unit), bộ nhân,
…) Các cấu trúc này thường được thiết kế nhắm tới một dải các ứng dụng xác định thay vì bất kỳ một ứng dụng nào như cấu trúc tinh Các cấu trúc thô đạt được
sự dung hòa giữa các chỉ tiêu về tính mềm dẻo, hiệu năng và công suất tiêu thụ
Hiện nay trên thế giới đã có nhiều nghiên cứu khác nhau
về các kiến trúc mảng tái cấu hình cấu trúc thô CGRA (Coarse-Grained Reconfigurable Architecture) Mỗi nghiên cứu đưa ra một kiến trúc đặc trưng riêng với các ưu nhược điểm khác nhau, hướng tới một số ứng dụng cụ thể Hai mô hình chính nhóm tác giả tham khảo là REMUS[2][3] và ADRES[4]
Hình 1: Kiến trúc ADRES
ADRES (Architecture for Dynamically Reconfigurable Embedded System) là một kiến trúc hướng tới các ứng dụng nhúng với các hệ thống tích hợp trên một chip đơn SoC (Sytem-on-Chip) Bộ vi xử lý VLIW (Very Large Instruction
ISBN: 978-604-67-0635-9
Trang 2Word) là thành phần chính của hệ thống, mảng tái cấu hình
đóng vai trò là một phần của vi xử lý, giúp gia tốc tính toán
Hình 1 minh họa một kiến trúc ADRES gồm một mảng các
khối chức năng FU (Functional Unit) kết hợp với các tệp
thanh ghi kết nối với nhau thông qua hệ kết nối định tuyến
(được tạo bởi dây nối, bộ ghép kênh, bus dữ liệu) Việc kết
hợp CGRA trực tiếp với bộ vi xử lý làm tăng khả năng làm
việc của hệ thống nhưng lại buộc cấu trúc CGRA phải tương
thích với một kiến trúc vi xử lý cố định, không được linh hoạt
so với cách thực hiện dưới dạng IP core như cách thực hiện
của kiến trúc REMUS trình bày ở dưới đây
Hình 2: Kiến trúc RSoC của bộ xử lý REMUS
REMUS (REconfigurable MUltimedia System) là một
kiến trúc CGRA hướng tới các ứng dụng xử lý đa phương tiện
và xử lý tín hiệu băng gốc trong truyền thông Kiến trúc này
kết nối trong một hệ thống SoC như mô tả Hình 2 Hệ thống
gồm hai RPU được sử dụng kết hợp với một lõi vi xử lý ARM,
cùng với các module khác Các phần tử trong hệ thống liên kết
với nhau qua bus AHB Ngoài bus AHB, các RPU còn có thể
giao tiếp qua hệ thống chia sẻ dữ liệu dành riêng, cũng như
qua giao diện với bộ nhớ ngoài EMI (External Memory
Interface) Khối PU là một mảng gồm tám vi xử lý RISC có
nhiệm vụ giám sát hoạt động của RPU, đồng thời cũng có thể
hỗ trợ xử lý trong những trường hợp các phép toán không phù
hợp với thiết kế của RPU
Việc thiết kế CGRA dưới dạng IP-core như REMUS tạo
thuận tiện cho việc sử dụng lại thiết kế trong các hệ thống
khác nhau, không bị phụ thuộc nhiều vào kiến trúc vi xử lý
Mô hình CGRA nhóm tác giả lựa chọn dựa trên hướng phát
triển này
Bài báo này đề xuất một số cải tiến về mô hình tính toán
và kiến trúc cho mảng tái cấu hình cấu trúc thô [2] nhắm tới
các ứng dụng điều khiển hiệu năng cao mà nhóm tác giả đang
xây dựng và phát triển tại Trường Đại học Công nghệ, Đại học
Quốc gia Hà Nội
Phần còn lại của bài báo được tổ chức như sau: phần II miêu tả cách tiếp cận xây dựng mô hình của CGRA; phần III trình bày một kiến trúc CGRA đang thử nghiệm; phần IV là kết quả kiểm thử trên phần mềm mô phỏng và trên vi mạch FPGA Cuối cùng, chúng tôi đưa ra một số kết luận trong phần V
II XÂY DỰNG MÔ HÌNH Trong kỹ thuật điều khiển, các phép toán vector với vòng lặp không có rẽ nhánh được thực hiện phổ biến (ví dụ: phép nhân ma trận, phép nhân chập, tính trung bình, …) Những phép toán này thường chiếm phần lớn tài nguyên tính toán của
hệ thống Do đặc trưng của các vi xử lý truyền thống, các phép toán mà ALU hỗ trợ thường chỉ hỗ trợ phép toán với hai số hạng, nên cách thực hiện đơn giản nhất là sử dụng các vòng lặp FOR lồng vào nhau Khi đó để hoàn thành một phép toán vector thường phải mất rất nhiều xung nhịp hệ thống Xét một
số đoạn giả mã C thực hiện các phép toán đơn giản sau: (1) Phép nhân vô hướng
For (i=0; i++; i<=N) {dot_produc= dot_produc +x(i) * y(i)}
(2) Phép tính tích chập
For (i=0; i++; i<=N) { Output(i) = 0;
For (j=0;j++;j<L) { Output(i) = Output(i)+x(i+j)*h(j) }
Dễ nhận thấy rằng, với một cấu trúc vi xử lý truyền thống, để thực hiện các vòng lặp đơn giản trên, hệ thống phải thực hiện lặp lại nhiều lần việc kiểm tra điều kiện khi nào vòng lặp kết thúc Như vậy một phần lớn thời gian tính toán phải dùng cho việc kiểm tra điều kiện dừng của vòng lặp Hơn thế trong mô hình tính toán phân chia thành nhiều giai đoạn lệnh, vi xử lý cũng cần thực hiện lặp đi lặp lại việc nạp và giải
mã cùng một mã lệnh trong tính toán của thân vòng lặp Điều này dẫn đến hiệu quả thực thi của các vòng lặp trên vi xử lý là rất thấp
Với mô hình thực thi tuần tự của các vi xử lý, thiết kế hệ thống tính toán thường sẽ tương đối đơn giản vì vi xử lý có thể chia sẻ giữa nhiều nhiệm vụ tính toán khác nhau Tuy nhiên, khi tốc độ tính toán yêu cầu phải tăng cao, lúc này hệ thống tính toán cần phải thực hiện theo phương án song song để tăng thông lượng tính toán (trong khi có thể vẫn giữ nguyên tốc độ xung nhịp đồng hồ, vì thực tế việc tăng tốc độ xung nhịp chỉ
có thể đạt một tới một giới hạn nhất định do giới hạn bởi công nghệ chế tạo vi mạch hiện nay)
Việc thực hiện song song nhiều phép toán cùng lúc có nhiều cách tiếp cận khác nhau Trong bài báo này, với mục tiêu cân bằng giữa tài nguyên, tính mềm dẻo, tốc độ tính toán,
432
Trang 3phương án được lựa chọn để thực hiện tính toán song song là
kiến trúc mảng tái cấu hình cấu trúc thô Điểm phân biệt chính
giữa các mảng tái cấu hình kiến trúc thô CGRA là:
- Cách đưa luồng dữ liệu đầu vào,
- Các toán tử được hỗ trợ bởi mỗi phần tử
- Cách thực thi luồng dữ liệu giữa các phần tử
Theo đó, các toán tử sẽ được thực hiện bởi các phần tử
xử lý PE (Processing Element) Một phần tử PE có thể thực
hiện chức năng của nhiều toán tử khác nhau tùy thuộc theo
thông tin cấu hình Tổ chức của mảng CGRA được thực hiện
bằng cách sắp xếp các PE theo các hàng nối tiếp nhau Việc
định tuyến dữ liệu vào các toán tử sẽ được điều khiển bởi các
bộ định tuyến (router) Các bộ định tuyến này có nhiệm vụ lựa
chọn đầu vào cho các toán tử
III KIẾN TRÚC MẢNG CGRA
Trên cơ sở tiếp cận phương án thiết kế CGRA trình bày ở
mục II, chúng tôi xây dựng kiến trúc tổng thể của một mảng
tái cấu hình kiến trúc thô CGRA như chỉ ra trong Hình 3 cơ
bản bao gồm hai phần:
- Phần lõi tính toán RCA (Reconfigurable Cell
Array): làm nhiệm vụ xử lý các phép toán theo một cấu
hình đã định trước
- Phần điều khiển chung CGRA_CTRL: thực hiện các
nhiệm vụ cơ bản sau:
o Cung cấp giao diện làm việc của CGRA: bao gồm
các tín hiệu đồng bộ, điều khiển (CLK, Reset_n,
…), các đầu vào/ra dữ liệu;
o Lưu trữ tệp tin cấu hình thường dùng trong vùng
nhớ Context_CONF_MEM;
o Điều khiển quá trình ghi/đọc dữ liệu (bao gồm dữ
liệu cấu hình, số liệu cần xử lý, các lệnh điều
khiển, …) với giao diện bên ngoài;
o Điều khiển giao tiếp với RCA để thực hiện quá
trình tính toán, xử lý số liệu
CGRA CGRA_CTRL
RCA RCA_row_#0 RCA_row_#1 RCA_row_#2 RCA_row_#3 RCA_row_#4 RCA_row_#5 RCA_row_#6 RCA_row_#7
FIFO_A FIFO_B FIFO_O
CONTEXT_CONF_
MEM
FSM
Hình 3: Cấu trúc của một CGRA
RCA là một mảng hai chiều của các phần tử xử lý PE
Để thuận tiện cho việc mở rộng thiết kế, các PE sẽ được sắp xếp thành các hàng (RCA_row) Các phần tử cơ bản của RCA được mô tả như Hình 3
Trong quá trình hoạt động của RCA, việc cấu hình của RCA có thể thực hiện lại thường xuyên Khi đó, thời gian cấu hình cho một mảng RCA chiếm một tỷ trọng không nhỏ trong toàn bộ thời gian hoạt động Để giải quyết vấn đề này, tệp thanh ghi cấu hình RCA_REG_FILE được sử dụng Trong quá trình ghi thông tin vào tệp thanh ghi này (quá trình cấu hình), RCA vẫn có thể thực hiện chức năng tính toán của cấu hình
cũ Nói cách khác, quá trình cấu hình có thể thực thi song song với quá trình thực thi tính toán, xử lý số liệu Chỉ khi nào quá trình ghi vào tệp thanh ghi kết thúc, lúc đó mới thực hiện nạp toàn bộ cấu hình mới vào các thanh ghi cấu hình có sẵn trong mỗi PE
Một phần tử PE bao gồm bốn thành phần chính:
- Router: làm nhiệm vụ định tuyến đầu vào dữ liệu cho DATAPATH;
- DATAPATH: thực hiện chức năng tính toán dữ liệu dựa trên đầu vào được lựa chọn bởi bộ định tuyến Router;
- ACC: thực hiện một trong hai chức năng: đệm dữ liệu đầu ra cho PE, cộng tích tích lũy dữ liệu đầu ra của DATAPATH;
- CONF_REG: lưu thông tin cấu hình của PE
Router
DATAPATH
ACC DATA_A
DATA_O
DATA_B Pre_Row DATA
CONF_DATA
Hình 4: Cấu trúc một phần tử PE
Một trong những tính năng quan trọng của CGRA là phải
có khả năng tái cấu hình trong quá trình hoạt động Quá trình tái cấu hình này có thể chiếm một phần lớn thời gian trong quá trình làm việc của CGRA Trong khi đó, số phép toán trong một ứng dụng thường không quá nhiều Để giảm thiểu thời gian cho việc cấu hình lại hệ thống, bộ nhớ cấu hình ngữ cảnh CONTEXT_CONF_MEM sẽ lưu sẵn được tối đa 128 cấu hình khác nhau thường lặp lại trong quá trình tính toán Các cấu
Trang 4hình này sẽ được lưu theo từng khối nhớ quy định sẵn Việc
phân biệt, ghi đọc cấu hình được phân biệt qua ID đánh dấu
thứ tự của cấu hình trong bộ nhớ Khi có lệnh điều khiển từ
bên ngoài, CGRA_CTRL chỉ cần nạp dữ liệu sẵn có này sang
tệp thanh ghi cấu hình RCA_REG_FILE của RCA
IV MÔ PHỎNG ĐÁNH GIÁ HIỆU NĂNG
Để đánh giá khả năng tái cấu hình của CGRA, chúng tôi
đã thực hiện mô phỏng hoạt động CGRA có kích thước mảng
RCA là 44 với các cấu hình thực thi phép toán khác nhau
như phép toán tính tích vô hướng (Hình 5), tính tổng trong cửa
sổ trượt (Hình 6), vòng điều khiển PI (Hình 7), bộ lọc FIR
(Hình 8), Đây là những phép toán cơ bản thường gặp trong
kỹ thuật điều khiển Trên cơ sở cấu hình thực thi như trên, các
phép toán này có thể tùy biến thành các phép toán có cấu trúc
tương đương khác (như tính trung bình, tính công suất, nội suy
đa thức, …)
+
Mức 1
Mức 2
+
+
<X, Y>
Mức 3
Hình 5: Mô hình thực thi phép tính tích vô hướng
ACC
RCA 4x4
D
D
D
D
Đầu ra
Đầu vào
Hình 6: Mô hình thực thi phép tính tổng trong cửa sổ trượt
RCA 4x4
SUB
MUL
SUB
MUL ACC
Đầu ra
Hình 7: Cấu hình vòng điều khiển PI
InputFIFO
x[0]
x[1]
x[2]
x[3]
x[4]
x[5]
x[6]
MAC
MAC
MAC
z[n]
h[2]
h[3]
h[1]
h[0]
Constant_REG
Hình 8: DFG thực hiện một bộ lọc FIR bậc 4
Chúng tôi đã mô hình hóa kiến trúc CGRA được đề xuất bằng ngôn ngữ VHDL để mô phỏng đánh giá và tiến hành kiểm thử Mô hình kiểm thử CGRA trên nền tảng vi mạch FPGA được thực hiện như Hình 9
ALTERA FPGA SoC
CGRA_WRAPPER CGRA CONTROLLER ETHERNET
RCA CGRA_CTRL
PERIPHERAL INTERFACE ALTERA AVALON BUS
Motor driver
Hình 9: Mô hình kiểm thử trên kit FPGA
434
Trang 5Hội Thảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
Tín hiệu đầu vào trước lọc
có thành phần tần số cao
Tín hiệu đầu vào có
nhiễu
Để đánh giá hiệu năng hoạt động của CGRA, chúng tôi
thực hiện việc so sánh số lượng xung nhịp cần thực hiện cho
các phép toán thường gặp trong kỹ thuật điều khiển: phép toán
tính tổng, phép toán tính tích vô hướng và phép tính tích chập
bằng cách sử dụng vòng lặp “FOR” truyền thống so với việc
xử lý từng khối dữ liệu lớn trên CGRA Khi đó, yêu cầu CGRA phải đáp ứng được yêu cầu tái cấu hình trong lúc hệ thống đang chạy
Bảng 1 Kết quả mô phỏng thử nghiệm các vòng lặp trên các nền tảng xử lý khác nhau
thước dữ liệu
Lõi NIOS (Altera) (dùng code C DSP
thông thường)
DSP (dùng thư viện riêng)
CGRA (ModelSim)
Phép tổng SUM N=1024 29 148 24 117 X 1045
N=2048 58 142 48 181 X 2096 N=4096 116 128 96 301 X 4117 Tích vô hướng N=1024 64 622 30 827 555 2096
N=2048 128 864 61 827 1 067 4117 N=4096 257 344 122 987 2 083 8213 FIR (8 tap) N=1024 407 765 X 7 216 1043
N=2048 816 384 X 14 384 2067 N=4096 1 641 778 X 29 736 4115 Kết quả đánh giá số chu kỳ thực thi của các vòng lặp trên
các nền tảng tính toán khác nhau (gồm lõi vi xử lý NIOS của
Altera, bộ xử lý DSP và mảng CGRA) được thống kê trong
Bảng 1 Hình 10 và Hình 11 chỉ ra kết quả mô phỏng tính
tổng theo cửa sổ trượt và kết quả mô phỏng của bộ lọc FIR
bậc 4 với mô hình RTL của mảng CGRA trên phần mềm mô
phỏng ModelSim
Kết quả mô phỏng CGRA trên ModelSim cho thấy tốc độ
thực hiện tương đương với DSP, ở một số kết quả thực hiện có
thể tốt hơn Tốc độ tính toán của CGRA được cải thiện do
thực hiện song song quá trình nạp dữ liệu và tính toán cùng
lúc
Trong bài báo này, qua kết quả đánh giá thử nghiệm trên
phần mềm mô phỏng và chạy thử nghiệm trên nền tảng vi
mạch FPGA, chúng tôi thấy rằng kiến trúc thô CGRA có
những ưu điểm nhất định đối với các bài toán có yếu tố sử
dụng vòng lặp với dữ liệu đầu vào có kích thước lớn Kỹ thuật
tính toán trên CGRA không phải là tối ưu nhất mà là kết quả
của việc cân bằng giữa các yếu tố thiết kế hệ thống (sự mềm dẻo, sự phức tạp của hệ thống và hiệu năng hoạt động của hệ thống)
V KẾT LUẬN Trong bài báo này chúng tôi trình bày mô hình và kiến trúc của một mảng phần cứng có thể tái cấu hình lõi thô cho các ứng dụng điều khiển hiệu năng cao Chúng tôi cũng chỉ ra
mô hình hoạt động của hệ thống thông qua việc ánh xạ một số
ví dụ cụ thể lên kiến trúc mảng nhằm mục đích kiểm chứng đánh giá mảng phần cứng được đề xuất Kết quả mô phỏng chỉ
ra rằng, mảng CGRA được đề xuất có thể tái cấu hình rất linh hoạt với khả năng khai thác tốt các cơ chế song song và tính cục bộ dữ liệu của thuật toán nhằm tăng hiệu năng xử lý và giảm băng thông truy xuất bộ nhớ Trong tương lai chúng tôi
sẽ tiếp tục tối ưu hóa kiến trúc được đề xuất, đồng thời tiến hành đánh giá kiến trúc với các ứng dụng điều khiển phức tạp hơn
Hình 10: Kết quả mô phỏng tính tổng theo cửa sổ trượt
với mô hình RTL trên ModelSim Hình 11: ết quả mô phỏng bộ lọc FIR bậc 4 với mô hình RTL trên ModelSim
Tín hiệu đầu vào trước lọc có thành phần tần số cao
Tín hiệu đầu ra sau
Tín hiệu đầu vào trước lọc có thành phần tần số cao
Tín hiệu đầu ra sau
Tín hiệu đầu vào trước lọc có thành phần tần số cao
Tín hiệu đầu ra sau
Tín hiệu đầu ra sau lọc đã loại bỏ tần số cao Tín hiệu đầu sau bộ
cộng theo cửa sổ trượt
Trang 6TÀI LIỆU THAM KHẢO [1] G Theodoridis, D Soudris and S Vassiliadis: “A Survey of
Coarse-Grain Reconfigurable Architectures and Cad Tools Basic Definitions,
Critical Design Issues and Existing Coarse-grain Reconfigurable
Systems”, Springer 2008, p89-149
[2] Hung K NGUYEN, Quang-Vinh TRAN, and Xuan-Tu TRAN: Data
Locality Exploitation for Coarse-grained Reconfigurable Architecture in
a Reconfigurable Network-on-Chip, The 2014 International Conference
on Integrated Circuits, Design, and Verification (ICDV 2014), Hanoi
14-15/2014.3
[3] Kiem-Hung Nguyen, Peng Cao and Xue-Xiang Wang: “An Efficient
Implementation of H.264/AVC Integer Motion Estimation Algorithm on
Coarse- grained Reconfigurable Computing System”, Journal of computers, Vol 8, No 3, March 2013
[4] Frank Bouwens, Mladen Berekovic, Bjorn De Sutter, and Georgi Gaydadjiev: “Architecture Enhancements for the ADRES Coarse-Grained Reconfigurable Array” HiPEAC 2008, LNCS 4917, pp 66–81, 2008
[5] Frank Bouwens, Mladen Berekovic, Andreas Kanstein, and Georgi Gaydadjiev: “Architectural Exploration of the ADRES, Coarse-Grained Reconfigurable Array”, ARC 2007, LNCS 4419, pp 1–13, 2007 [6] Andy Lambrechts, Praveen Raghavan, Murali Jayapala, Francky Catthoor, and Diederik Verkest: “Energy-Aware Interconnect Optimization for a Coarse Grained Reconfigurable Processor”, 21st International Conference on VLSI Design, 2008, Hyderabad, India
436