Rekonfigurowalne systemy scalone (System on-a-programmable Programmable-Chip) Tadeusz Łuba Elżbieta Piwowarska Zbigniew Jaworski Instytut Telekomunikacji Instytut Mikroelektroniki i Optoelektroniki Politechnika Warszawska 1
Cel prezentacji Omówienie tych aspektów projektowania specjalizowanych układów cyfrowych, które są udziałem dynamicznie rozwijającej się technologii układów rekonfigurowalnych. 2
Plan prezentacji 1. Nowe struktury układów programowalnych i rekonfigurowalnych 2. Rola i znaczenie logiki rekonfigurowalnej 3. Eksperymenty w projektowaniu systemów cyfrowych w technice układów rekonfigurowalnych 4. Wnioski 3
Układy programowalne przez użytkownika FPLD (C)PLD FPGA PAL GAL Classic EPLD MAX, ACEX isplsi MACH XC9500 PLA XPLA APEX FLEX Configurable Logic Block XC 3000 XC 4000 Spartan XC 6200 Virtex AT40 AT6000 4
Struktury programowalne MAX I/O OUTPUT ENABLE SYSTEM CLOCK PRESET D P Q ARRAY CLOCK CLEAR C TO I/O CONTROL BLOCK Fr o m inputs From PIA Expander Produ ct Te rms I/O and Macrocell Feedback AND Array 8 8 macro cell macro cell 8 macro cell PLD 5
Struktury programowalne FLEX I/O Element (IOE) IOE IOE IOE IOE IOE IOE IOE Fast Track Interconnect IOE IOE IOE IOE Embedded Array Block ROM Logic Element (LE) IOE Cascade Out IOE RAM Embedded Array Block IOE IOE IOE IOE IOE IOE Logic Array IOE Logic Array Block (LAB) DATA1 DATA2 DATA3 DATA4 Cascade In Carry IN Preset Clear Clock Look-Up Table (LUT) Carry Chain Cascade Chain PR CLR Q Programmable Register LE Out Carry Out 6
Układy FPGA firmy Xilinx Configurable Logic blocks (CLBs) DATA IN LOGI C VARIABLES.di.a.b.c.d.e QX F CO MB INATIONAL FUNCTION G QY F DIN G F DIN G 0 MUX 1 0 MUX 1 D Q RD D Q QX F G QY.X CLB OUTPUTS.Y ENABLE clk clk RESET.e c "1" (ENABLE).k.rd "0" (I NH IBIT) RD (GLOBAL RESET) 7
Struktura rekonfigurowalna configurable logic blocks (CLBs) Linie połączeniowe PSM (Programowalna Matryca Połączeń) Długie linie połączeniowe Xilinx XC400E 8
Atrubut rekonfigurowalności Struktura komórek DATA IN LOGI C VARIABLES ENABLE clk clk RESET.di.a.b.c.d.e QX F CO MBINATIONAL FUNCTION G QY.e c "1" (ENABLE).k.rd "0 " (I NHIBIT) (GLOBAL RESET) F DIN G F DIN G 0 MUX 1 0 MUX 1 D Q RD D Q RD QX F G QY.X CLB OUTPUTS.Y DATA1 DATA2 DATA3 DATA4 Cascade In Carry IN Preset Clear Clock Look-Up Table (LUT) Carry Chain Cascade Chain PR CLR Q Cascade Out Programmable Register LE Out Carry Out Xilinx Altera 9
10 Układy aktualnie produkowane Układy aktualnie produkowane 200 20...105 1152...6272 FPGA DY8000 40 9...90 160...1584 FPGA QL4000 5 5...50 256..2304 FPGA AT40K 8 6...30 1024...6400 FPGA AT6000 32 5...40 238...1862 FPGA Spartan 0,1 57,906...1124,022 1728...27648 FPGA Virtex 0,2 9...100000 2304...16384 FPGA XC6200 50 1...180 152...7448 FPGA XC4000XE/XL 240 3...85 238...7448 FPGA XC4000 10 1,5...7,5 64...484 (*2) FPGA XC3000 320 10...250 576...12160 FPGA FLEX10000 100 2,5...16 208...1296 FPGA FLEX8000 100 8...24 1320...1960 FPGA FLEX6000 Maksymalny czas konfiguracji [ms] Liczba bramek przeliczeniowych x1000 Liczba komórek Architektura Rodzina
Najnowsze rodzaje struktur programowalnych Struktury programowalne z wbudowanymi rdzeniami procesorów typu Combo (AT94, Virtex-II Virtex) Struktury programowalne z wbudowanymi miękkimi rdzeniami procesorów typu IP 11
Struktury typu Combo Combo Struktury integrujące mikrokontroler z peryferiami i programowaną matrycą FPGA 12
Struktury typu Combo Combo W skład FPSLIC wchodzą: Szybki mikrokontroler RISC (z serii AVR) Matryca FPGA AT40K Duża pamięć programu Flash Pamięć RAM z wydzielonymi blokami konfiguracji matrycy FPGA Kontroler konfiguracji Bogate peryferia mikrokontrolera 13
Wbudowane miękkie rdzenie procesorów FPGA Memory core ALTERA soft CPU FPGA Nios (Altera); MicroBlaze (Xilinx) 14
Cecha wspólna: Configurable Logic Block (CLB) Uniwersalna komórka logiczna Sieć bramek x 1 x 2 x 3 x 4 CLB y y = f(x 1, x 2, x 3, x 4 )!!! 15
Przykład prosty układ x 0 x 2 x 3 x 9 kombinacyjny Układ kombinacyjny UK y 0 y 1.type fr.i 10.o 2.p 25 0101000000 00 1110100100 00 0010110000 01 0101001000 01 1110101101 10 0100010101 10 1100010001 00 0011101110 10 0001001110 10 0110000110 10 1110110010 01 0111100000 00 0100011011 00 0010111010 10 0110001110 00 0110110111 11 0001001011 11 1110001110 01 0011001011 01 0010011010 10 1010110010 00 0100110101 11 0001111010 00 1101100100 01 1001110111 11.e 16
SUBDESIGN bul ( i[1..10] : INPUT; o[1..2] : OUTPUT; Przykład (AHDL) ) BEGIN TABLE (i[1..10]) => (o[1..2]); B"0101000000" => B"00"; B"1110100100" => B"00"; B"0010110000" => B"10"; B"0101001000" => B"10"; B"1110101101" => B"01"; B"0100010101" => B"01"; B"1100010001" => B"00"; B"0011101110" => B"01"; B"0001001110" => B"01"; B"0110000110" => B"01"; B"1110110010" => B"10"; B"0111100000" => B"00"; B"0100011011" => B"00"; B"0010111010" => B"01"; B"0110001110" => B"00"; B"0110110111" => B"11"; B"0001001011" => B"11"; B"1110001110" => B"10"; B"0011001011" => B"10"; B"0010011010" => B"01"; B"1010110010" => B"00"; B"0100110101" => B"11"; B"0001111010" => B"00"; B"1101100100" => B"10"; B"1001110111" => B"11"; MAX+PLUSII AHDL: 35 komórek CLB END TABLE; END; 17
Fragment raportu MAX+PLUSII Project Information d:\maxplus2\work\bul.rpt MAX+plus II Compiler Report File Version 10.2 07/10/2002 Compiled: 04/18/2004 15:57:42 ***** Project compilation was successful Converted from PLA file: bul ** DEVICE SUMMARY ** Chip/ Input Output Bidir Memory Memory LCs POF Device Pins Pins Pins Bits % Utilized LCs % Utilized bul EPF10K10LC84-3 10 2 0 0 0 % 35 6 % User Pins: 10 2 0 Device-Specific Information: d:\maxplus2\work\bul.rpt bul ***** Logic for device 'bul' compiled without errors. Device: EPF10K10LC84-3 18
-- 02-05 05-14 09:21:40 -- PLA -> > VHDL converter ver.1.02 -- MILITARY UNIVERSITY OF TECHNOLOGY -- WARSAW -- zjachna@wel.wat.waw.pl Przykład (VHDL) library IEEE; use IEEE.STD_LOGIC_1164.all; entity bul is port(i : in std_logic_vector(1 to 10); o : out std_logic_vector(1 to 2)); end bul; architecture arch1 of bul is begin PLA: process(i) begin case i is when "0101000000" => o <= "00"; when "1110100100" => o <= "00"; when "0010110000" => o <= "10"; when "0101001000" => o <= "10"; when "1110101101" => o <= "01"; when "0100010101" => o <= "01"; when "1100010001" => o <= "00"; when "0011101110" => o <= "01"; when "0001001110" => o <= "01"; when "0110000110" => o <= "01"; when "1110110010" => o <= "10"; when "0111100000" => o <= "00"; when "0100011011" => o <= "00"; when "0010111010" => o <= "01"; when "0110001110" => o <= "00"; when "0110110111" => o <= "11"; when "0001001011" => o <= "11"; when "1110001110" => o <= "10"; when "0011001011" => o <= "10"; when "0010011010" => o <= "01"; when "1010110010" => o <= "00"; when "0100110101" => o <= "11"; when "0001111010" => o <= "00"; when "1101100100" => o <= "10"; when "1001110111" => o <= "11"; when others => o <= "XX"; end case; end process; end; MAX+PLUSII VHDL: 67 komórek CLB 19
.type fr.i 10.o 2.p 25 0101000000 00 1110100100 00 0010110000 01 0101001000 01 1110101101 10 0100010101 10 1100010001 00 0011101110 10 0001001110 10 0110000110 10 1110110010 01 0111100000 00 0100011011 00 0010111010 10 0110001110 00 0110110111 11 0001001011 11 1110001110 01 0011001011 01 0010011010 10 1010110010 00 0100110101 11 0001111010 00 1101100100 01 1001110111 11.e Przykład (Leonardo Spectrum) Leonardo Spectrum 96 komórek CLB 20
.type fr.i 10.o 2.p 25 0101000000 00 1110100100 00 0010110000 01 0101001000 01 1110101101 10 0100010101 10 1100010001 00 0011101110 10 0001001110 10 0110000110 10 1110110010 01 0111100000 00 0100011011 00 0010111010 10 0110001110 00 0110110111 11 0001001011 11 1110001110 01 0011001011 01 0010011010 10 1010110010 00 0100110101 11 0001111010 00 1101100100 01 1001110111 11.e Dekompozycja Zagadka 4 6 Ile 4 komórek komórki CLB? 0 1 3 H 1 y 0 G 1 7 1 7 9 0 1 2 H 2 y 1 G 2 6 21
Niestety, procedury dekompozycji nie są jeszcze wbudowane do komercyjnych systemów projektowania układów cyfrowych 22
Systemy CAD 23
Eksperymenty dla struktur FPGA W eksperymentach tych porównamy wyniki syntezy uzyskiwane w komercyjnych systemach projektowania układów cyfrowych z wynikami uzyskanymi przy wspomaganiu tych systemów nie stosowanymi jeszcze w systemach komercyjnych procedurami dekompozycji funkcjonalnej. 24
Układy stosowane w eksperymentach bin2bcd1 konwerter kodu binarnego na BCD dla liczb z zakresu od 0 do 99 bin2bcd2 konwerter kodu binarnego na BCD dla liczb z zakresu od 0 do 355 DESboxes zespół skrzynek podstawieniowych szyfru DES RD sbox z algorytmu kryptograficznego Rijndael DESaut kombinacyjna część układu sekwencyjnego z implementacji algorytmu kryptograficznego DES 5B6B kombinacyjna część układu kodera 5B-6B 25
Narzędzia stosowane w eksperymentach MAX+PLUSII (Altera) FPGA Express (Synopsys) Leonardo Spectrum (Exemplar) SIS (Berkeley) DEMAIN (IT-PW)) 26
Konwerter Bin2BCD BCD BIN/BCD Wejście Wyjście (00011011) BIN (00100111) BCD 0 liczby 99 0 liczby 355 27
Bin2BCD BCD specyfikacja behawioralna w języku j AHDL SUBDESIGN bin2bcd ( lb[7..0], start, zegar ) VARIABLE BEGIN END; ld[7..0], koniec lda[3..0], ldb[3..0] lb_r[7..0], lk[3..0] ld[7..0], koniec : INPUT; : OUTPUT; : DFF; : DFF; : DFF; (lda[], ldb[], lb_r[], lk[]).clk = zegar; (ld[], koniec).clk = zegar; IF start THEN lb_r[] = lb[]; lk[] = 8; ELSE IF lk[] > 0 THEN IF ldb[] >= 5 THEN lda[] = (lda[2..0], B"1"); -- bit lb[3] = 1 ldb[] = (ldb[2..0] + 3, lb_r[7]); ELSE lda[] = (lda[2..0], B"0"); -- bit lb[3] = 0 ldb[] = (ldb[2..0], lb_r[7]); END IF; lb_r[] = (lb_r[6..0], B"0"); -- przesun w lewo lk[] = lk[] - 1; -- zmniejsz lk ELSE lda[] = lda[]; ldb[] = ldb[]; ld[] = (lda[], ldb[]); koniec = B"1"; END IF; END IF; 28
29 IN CLK CK IN LB[7..0] STOP] OUT CLOK L[3..0] OUT OUT LOAD START LOAD LOAD LOAD CLK DA[3..0] LOAD STOP DB[3..0] RB[7..0] LD[7..0] CK STOP CK CK QDB[3..0] QDA[3..0] r3_v Us_v r2_v r1_v r4_v Lk_v LB[7..0] CK CLK START CLOK STOP LD[7..0] INPUT INPUT INPUT INPUT OUTPUT OUTPUT OUTPUT Konwerter Bin2 Konwerter Bin2BCD BCD Altera
.type fr.i 9.o 8.p 100 000000000 0000 0000 000000001 0000 0001 000000010 0000 0010 000000011 0000 0011 000000100 0000 0100 000000101 0000 0101 000000110 0000 0110 000000111 0000 0111 000001000 0000 1000 000001001 0000 1001 000001010 0001 0000 000001011 0001 0001 000001100 0001 0010 000001101 0001 0011 * * * 001100001 1001 0111 001100010 1001 1000 001100011 1001 1001.e Konwerter Bin2BCD BCD na poziomie logicznym AHDL/VHDL MAX+PLUSII 131komórek DEMAIN DEMAIN 13 komórek (!!!) 30
Układy kryptograficzne: DES, Rijndael Podstawienie S-box n x m S n x 1 x 2 x n n-bitowy adres Logika kombinacyjna... ROM 2 n słów... y 1 y 2 y m m m-bitowe wyjście 31
Schemat blokowy rundy algorytmu DES Runda R E S 1 S 2 S 3 K S 4 S 5 P S 6 S 7 L S 8 32
Skrzynki podstawieniowe Każda ze skrzynek S-box przypisuje jednej z 64 6-bitowych wartości wejściowych liczbę z zakresu 0..15, a więc 4-bitową. Dla każdego S-boksu 6 bitów wejściowych określa jednoznacznie 4-bitową wartość. Z ośmiu takich wartości kolejno jest tworzony 32-bitowy ciąg, który jest przesyłany do bloku p gdzie odbywa się jego permutacja. Z 6-bitowego ciągu, bity 1 i 6 określają numer wiersza, natomiast bity od 2 do 5 wyznaczają numer kolumny. Binarna reprezentacja liczby pod wskazanym miejscem jest przekazywana na wyjście danego S-boksu. S1 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 33
Skrzynki podstawieniowe Bit 1 i 6 określają wiersz pozostałe kolumny S1 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 34
Skrzynki podstawieniowe S-box S1 ** DEVICE SUMMARY ** Chip/ Input Output Bidir Memory Memory LCs POF Device Pins Pins Pins Bits % Utilized LCs % Utilized s1 EPF10K10LC84-3 6 4 0 0 0 % 55 9 % User Pins: 6 4 0 Jeden S-box zajmuje aż tyle komórek wprowadza też duże opóźnienie. 35
Skrzynki podstawieniowe S 1 S 2 S 3 S 4 S 5 S 6 S 7 S 8 Liczba komórek 55 74 77 80 68 73 77 81 Maks. opóźnienie 28,1 31,6 33,5 34,0 28,4 30,4 34,3 31,4 Razem 585 komórek z maksymalnym opóźnieniem 34,3 ns. 36
Dekompozycja S-boxów Każda ze skrzynek S-box jest funkcją kombinacyjną Można ją więc zdekomponować i wykorzystać sieć bloków po dekompozycji do realizacji tych funkcji 37
Skrzynki podstawieniowe Decomposed project: S1 ** DEVICE SUMMARY ** Chip/ Input Output Bidir Memory Memory LCs POF Device Pins Pins Pins Bits % Utilized LCs % Utilized s1dek EPF10K10LC84-3 6 4 0 0 0 % 25 4 % User Pins: 6 4 0 Pierwszy S-box zajmuje teraz 25 zamiast 55 (dwukrotnie mniej!!!) wprowadza też mniejsze opóźnienie Zapowiada się ciekawie 38
Skrzynki podstawieniowe S 1 S 2 S 3 S 4 S 5 S 6 S 7 S 8 Liczba komórek 55 74 77 80 68 73 77 81 Maks. opóźnienie 28,1 31,6 33,5 34,0 28,4 30,4 34,3 31,4 Liczba komórek 25 Po dekompozycji 20 22 24 25 22 23 23 Maks. opóźnienie 19,5 17,2 16,7 19,0 19,0 19,4 17,7 17,6 Razem 184 komórki w porównaniu do 585 komórek w realizacji wcześniejszej (ponad trzykrotnie mniej) z maksymalnym opóźnieniem 19,5 ns w porównaniu do 34,3 ns. 39
Ciekawe jak to wpływa na realizację całego algorytmu DES? 40
Ścieżka przepływu danych algorytmu DES Altera 709 komórek P = 28,8 MHz / 16 x 64 bity = 115 Mbit/s Altera + DEMAIN 296 komórek P = 51,5 MHz / 16 x 64 bity = 206 Mbit/s 41
A może tak źle jest tylko dla systemu MAX+PLUSII? 42
Wyniki eksperymentów Architektura FPGA (EPF10K10LC84-3) Przykład FPGA Leonardo DEMAIN MAX+Plus II SIS Express Spectrum bin2bcd1 13 131 30 30 36 bin2bcd2 39 505 225 120 136 DES boxes 184 585 486 192 RD 167 332 341 245 248 DESaut 28 46 25 30 32 5B6B 41 92 100 49 51 Szczegółowy opis eksperymentów można znaleźć na stronie www.zpt.tele.pw.edu.pl w katalogu: DEMAIN/Eksperymenty z programem Demain 43
A jak to wygląda w konfrontacji z realizacjami w innych ośrodkach badawczych? 44
Realizacje Rijndaela porównanie przepustowości (Mb/s) dla FLEX 10K200 800 700 752 TSI/TUKE TSI France & Technical Unversity of Košice, Slovakia 600 GMU - George Mason Univeristy, USA 500 400 300 451 316 248 MUT Military University of Technology, Poland WUT - Warsaw University of Technology, Poland 200 100 0 TSI/ TUKE GMU MUT WUT 45
FPGA with Embedded Array Blocks FLEX 10K10 I/O Element (IOE) IOE IOE IOE IOE IOE IOE IOE Fast Track Interconnect IOE IOE IOE Embedded Array Block ROM Logic Element (LE) IOE IOE IOE IOE Embedded Array Block Logic Array Block (LAB) IOE IOE IOE IOE IOE IOE Logic Array 46
Uogólnienie dla układów sekwencyjnych A C B UMA Układ modyfikacji adresu (CLB) register ROM Funkcja przejśc-wyjść (EABs) 47
Eksperymenty dla układu EPF 10K10 device Benchmark ROM Implementation #bits FF implementation #LCs AM implementation #LCs #bits d14 512 60 21 256 cse 22528 1) 92 2 5632 ex4 13312 1) 28 2 3328 mark1 10240 1) 40 2 5120 s1 24576 1) 137 96 5632 tbk 16384 1) 759 2) 333 4093 sse 22528 1) 52 3 5632 1) Realizacja niemożliwa za mała pojemność pamięci ROM 2) Realizacja niemożliwa za mało komórek CLB tbk: 6 wejść, 3 wyjścia oraz 32stany 48
Realizacja układu tbk tbk: 16 384 bits or 759 LCs tbk: 4093 bits and 333 LCs tbk tbk 6144 bits EPF10K 6144 bits EPF10K 576 LCs 576 LCs Bez dekompozycji Po dekompozycji 49
Podsumowanie Przeprowadzone eksperymenty w pełni potwierdzają tezę, że komercyjne systemy projektowania układów cyfrowych niejednokrotnie realizują projekty dalekie od rozwiązań optymalnych pod względem zajętości zasobów sprzętowych. Sytuacja ta jest szczególnie niepokojąca dla najnowszych układów rekonfigurowalnych typu FPGA i FLEX. Jedynie systemy uniwersyteckie są w stanie w lepszym stopniu wykorzystać możliwości oferowane przez te struktury. 50