ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.
-
Upload
alonso-filippi -
Category
Documents
-
view
220 -
download
2
Transcript of ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.
ARCES University of Bologna
Programmazione di un processore riconfigurabile
Mario Toma
ARCES University of Bologna
Architettura
ARCES University of Bologna
…..pgaload …..…..…..pgaop $3,$4,$5…...…...Add $8, $3
Estensione dell’Instruction Set
Register FileRegister File
Con
fig
ura
tion
Mem
ory
Con
fig
ura
tion
Mem
ory
ARCES University of Bologna
Descrizione della PiCo-Cell4x32-bit input data da Reg File2x32-bit output data a Reg File
PiC
oG
A C
on
trol U
nit
PiC
oG
A C
on
trol U
nit
PiC
oG
A C
on
trol U
nit
PiC
oG
A C
on
trol U
nit
INPUTLOGICINPUTLOGIC
LUT16x2LUT16x2
OUTPUTLOGIC,
REGISTERS
OUTPUTLOGIC,
REGISTERS
CARRYCHAINCARRYCHAIN
LUT16x2LUT16x2
EN
PiCoGA control unit signals
Configuration bus
Loop-back
12 global lines to/from R
eg File
INPUT CONNECT
BLOCK
INPUT CONNECT
BLOCK
SWITCHBLOCK
INP
UT
CO
NN
EC
TB
LO
CK
INP
UT
CO
NN
EC
TB
LO
CK
OU
TP
UT
CO
NN
EC
TB
LO
CK
OU
TP
UT
CO
NN
EC
TB
LO
CK
RLC
…
…
… …
…
…
…
ARCES University of Bologna
RLC: Schema a blocchi
ARCES University of Bologna
Blocco di gestione delle usciteDalle LUT
X[1:0]
Y[1:0]
ARCES University of Bologna
Funzionalità di base di un RLC
LUT 4:2 LUT 4:2
A B C D
Z[3:2] Z[1:0]
OUTPUT LOGIC
2 2
INPUT LOGIC
2 22 2
• Due funzioni logiche indipendenti, 4 ingressi e 2 uscite
A0B0C0D0 A1B1
C1D1
ZoZ1Z2Z3
• Esempio: 4 porte logiche elementari (AND,OR,XOR)
ARCES University of Bologna
Funzionalità di base di un RLC
LUT 4:2 LUT 4:2
AB
Z[3:2] Z[1:0]
OUTPUT LOGIC
2 2
INPUT LOGIC
2 2
• Una funzione con 4 ingressi e 4 uscite
X
22
4
AB
Z
• Esempio: moltiplicatore di operandi a 2 bit
ARCES University of Bologna
Funzionalità di base di un RLC
LUT 4:2 LUT 4:2
AB
Z[1:0]
OUTPUT LOGIC
2 2
INPUT LOGIC
2 2
• Una funzione con 5 ingressi e 2 usciteC1
2 2
2
AB
SEL
Z
• Esempio: multiplexing tra coppie di bit
ARCES University of Bologna
Funzionalità di base di un RLC
LUT 4:2 LUT 4:2
AB
Z
OUTPUT LOGIC
INPUT LOGIC
2 2
• Una funzione con 6 ingressi e 1 uscitaC0
1
1
C[1:0]
Z
• Esempio: multiplexer 4:1
1
C1
A0B0 A1B1
ARCES University of Bologna
Sommatore ad 8 bit• Prima LUT: calcolo della somma (ipotesi che carry-in=0)
• Seconda LUT: calcolo del carry (con carry-in=0 e con carry-in=1)
• Se carry-in=1 al risultato viene sommato 1 (a valle della LUT)
ARCES University of Bologna
Catena del carryLook-ahead: carry-out
viene calcolato per entrambi i possibili
valori di carry-in ingresso
LUT per il calcolo del carry-out
In azzurro i blocchi utilizzati
Operandi in ingresso
RLC omogenei, ma posizioni pari e dispari
sono programmati diversamente
Percorso critico
ARCES University of Bologna
Memoria• Memoria di 256 locazioni da 8 bit (256x8)
• Utilizzate 3 righe del PiCoGA
LUT 6:1
MUX 4:1
ARCES University of Bologna
LUT CARRY
LUT SUM
A
CARRY CHAIN
2 2
2
Accumulatore
+
INPUT LOGIC
Carry-inCarry-out
REG
Feed-back interno
all’RLC per evitare il ritardo
introdotto dal routing
• Cella elementare di un accumulatore
Registro contenente il
risultato parziale (stato
interno)
Come inizializzare lo stato interno?
ARCES University of Bologna
Inizializzazione stato interno• Si possono distinguere 4 modalità di inizializzazione, tutte supportate dal PiCoGA
• Il segnale ‘INIT’ è generato dall’ Unità di Controllo
ARCES University of BolognaPiC
oG
APiC
oG
A C
on
trol
Con
trol U
nit
Un
it
Esecuzione Pipeline del PiCoGA
Mapping
Pga_op2
Mapping
Pga_op1
Data Flow Graph
Data out
Data in
ARCES University of Bologna
Latenza ed Issue Delay• Latenza: tempo (in numero di cicli di clock) tra l’inizio di una pga-op e la produzione dei risultati
• Issue delay: tempo minimo che deve intercorrere tra due pga-op consecutive
1 2 3
4
5
6
• Latenza dipende dal percorso critico (Nodi 1-4-5-6 → Latenza = 4)
• Issue delay dipende dalle dipendenze di dato. Es: nodo 3 non può elaborare per due cicli consecutivi (il suo risultato serve sia a 4 che a 5 in due cicli diversi). Issue delay = 2
ARCES University of Bologna
Region Partitioning
Func. 1Func. 1
Func. 2Func. 2
Func. 3Func. 3
Func. 4Func. 4
Func. nFunc. n
Configuration Configuration CacheCache
PiCoGAPiCoGA
Attraverso l’istruzione di pga-load Attraverso l’istruzione di pga-load una configurazione viene caricata una configurazione viene caricata
nel PiCoGAnel PiCoGALe risorse del PiCoGA possono Le risorse del PiCoGA possono
essere partizionate tra più funzioniessere partizionate tra più funzioniFunzioni caricate possono Funzioni caricate possono
elaborare concorrentementeelaborare concorrentemente
ARCES University of Bologna
Array multi-contesto
Func. 1Func. 1
Func. 2Func. 2
Func. 3Func. 3
Func. 4Func. 4
Func. nFunc. n
Configuration Configuration CacheCache
PiCoGAPiCoGA
4 “piani” di configurazione 4 “piani” di configurazione memorizzati nel PiCoGA, uno dei memorizzati nel PiCoGA, uno dei
quali elaboraquali elabora
1 ciclo di clock per passare da un 1 ciclo di clock per passare da un piano all’altropiano all’altro
Mentre un piano esegue un altro Mentre un piano esegue un altro viene riconfigurato viene riconfigurato → nessun → nessun
overhead di riconfigurazioneoverhead di riconfigurazione
Region partitioning + multi-Region partitioning + multi-contesto contesto → fino a 16 pga-op → fino a 16 pga-op
memorizzabili nel PiCoGAmemorizzabili nel PiCoGA
ARCES University of Bologna
Metodologia di Sviluppo Algoritmi
• Sorgente C• Profiling
– Estrazione dei kernel duri
• Configurazione PiCoGA• Simulazione software• Codice eseguibile
ARCES University of Bologna
Compilazione per XiRisc• Tool software per generare l’eseguibile per XiRisc• Profiler: tool per stimare i tempi di esecuzione
File.cFile.c
C COMPILERC COMPILER ASSEMBLERASSEMBLER LINKERLINKER
File.exeFile.exe
SOFTWARESOFTWARESIMULATORSIMULATOR
PROFILERPROFILER
ASSEMBLERASSEMBLERSCHEDULERSCHEDULER
ARCES University of Bologna
Profiling• Si visualizza il numero di cicli di esecuzione associati ad ogni riga di codice C
ARCES University of Bologna
Descrizione di una Pga-op
• Problema: descrivere come programmare le RLC e le interconnessioni
• Obiettivo: descrizione ad alto livello, che non richieda una conoscenza dettagliata dell’hardware
• Soluzione: si utilizza un linguaggio pseudo-C, il Griffy-C
• Sintassi compatibile con ANSI-C
• Operatori C (somma, shift) corrispondono a configurazioni hardware
ARCES University of Bologna
Griffy-C
• Linguaggio C semplificato:– Corrispondenza fra istruzione C ed elemento di
libreria (modulo) istanziato
• Estensioni al linguaggio C:– Supporto variabili di dimensioni non standard– Supporto flag di overflow– Possibilità di definire tabelle di verità (LUT)
ARCES University of Bologna
#pragma fpga differenza_assoluta 0x11 4 1 2 dataout datain1 datain2
{ unsigned char diff1, diff2; char cond; #pragma attrib cond SIZE=1 diff1 = datain1 - datain2;
diff2 = datain2 - datain1;
cond = diff1 < 0;
dataout = cond ? diff2 : diff1;}
#pragma end
Dal Griffy-C al Mapping
-- --
MUXMUX
ARCES University of Bologna
EsempioCodice di riferimento
….char RowA[64], RowB[64];….for(i=0;i<16;i++) {
if(MEM[i]>0)for(j=4*i;j<4*(i+1);j++) {
a=RowA[j];b=RowB[j];dif=a-b;acc+=dif; }
else for(j=4*i;j<4*(i+1);j++) {
a=RowA[j];b=RowB[j];m=a+b/2;if (m>max)
max=m; }}
Codice per XiRisc….unsigned long RowA[16], RowB[16];….for(i=0;i<16;i++) {
if(MEM[i]>0) pgaop1(RowA[i],RowB[i],acc);else pgaop2(RowA[i],RowB[i],max);
}
ARCES University of Bologna
Esempio: ProfilingCodice di riferimento
char RowA[64], RowB[64];1 acc=0;1 max=0;184 for(i=0;i<16;i++) {176 if(MEM[i]>0)0 for(j=4*i;j<4*(i+1);j++) {0 a=RowA[j];0 b=RowB[j];0 dif=a-b;0 acc+=dif; }0 else 1296 for(j=4*i;j<4*(i+1);j++) {512 a=RowA[j];512 b=RowB[j];576 m=a+b/2;384 if (m>max)
max=m; }0 }
Codice per XiRisc
unsigned long RowA[16], RowB[16];1 acc=0;1 max=0;184 for(i=0;i<16;i++) {176 if(MEM[i]>0)0 pgaop1(RowA[i],RowB[i],acc);0 else304
pgaop2(RowA[i],RowB[i],max);
}Totale:
3649 cicliTotale:
673 cicliSpeed-up: 5.4x
ARCES University of Bologna
Pga-op1: Mapping
• Si sfruttano parallelismo e pipelining
• Latenza: 4
• Issue delay: 1
ARCES University of Bologna
Pga-op2: Mapping
Latenza: 6
Issue delay:3
Occupazione:
• 6 righe
• 40 RLC
ARCES University of Bologna
Pga-op2: Mapping ottimizzato
Latenza: 6
Issue delay:1
Occupazione:
• 6 righe
• 56 RLC
ARCES University of Bologna
DES(Data encryption Standard)
Algoritmo con operazioni bit-level
Processori tradizionali poco efficienti
Funzione non-lineare f mappabile su PiCoGA
ARCES University of Bologna
DES: Round f
Riordinamento di bit: non coinvolge gli RLC ma solo il
routing
8 tabelle di sostituzione (64 entry da 8 bit)
Implementabile con 64 RLC
La chiave è unica durante la cifratura.
Possono essere precalcolate le 16 chiavi utilizzate ad ogni round
ARCES University of Bologna
DES: Data Flow Graph
ARCES University of Bologna
DES: Mapping
• Espansione e permutazione iniziale eseguita dal routing
• Permutazione finale richiede una riga
• 4 righe, latenza=3 cicli, issue delay=1 ciclo
ARCES University of Bologna
unsigned long key_sp[8][64];unsigned long f(unsigned long r, char *subkey) {
unsigned long *spp;unsigned long rval, rt;int er;
subkey += 7;er = ((int) r << 1) | ((r & 0x80000000) ? 1 : 0);spp = &key_sp[7][0];rt = (unsigned long) r >> 3;rval |= spp[((int) rt ^ *subkey--) & 0x3f];spp -= 64;…..spp -= 64;rt >>= 4;rval |= spp[((int) rt ^ *subkey--) & 0x3f];spp -= 64;rt >>= 4;rt |= (r & 1) << 5;rval |= spp[((int) rt ^ *subkey) & 0x3f];return rval; }
DES: Codice C
• Routine si traduce con 106 instruzioni assembler (RISC)
• Mappabile con una sola pga-op
• Nessuna corrispondenza diretta tra codice C e Data Flow Graph
ARCES University of Bologna
Realizzazione di un sommatore di 8 elementi, ciascuno rappresentato da 8 bit, sull'architettura riconfigurabile XiRisc.
• Scrivere il codice C relativo all'implementazione tradizionale (puramente software)
•Effettuare mapping su PiCoGA del sommatore, stimando la latenza
• Riscrivere il codice C con l'opportuno inserimento delle pga-op
• Fornire una stima dello speed-up ottenibile
Ipotesi semplificativa:
Non considerare l'overflow sui risultati intermedi
Esercizio
ARCES University of Bologna
Soluzione esercizio: Codici CSoluzione software
{char a[8];char sum,sum1,sum2,sum3;char sum4, sum5, sum6;
sum1=a[0]+a[1];sum2=a[2]+a[3];sum3=a[4]+a[5];sum4=a[6]+a[7];sum5=sum1+sum2;sum6=sum3+sum4;sum=sum5+sum6;
}
Soluzione su XiRisc
{
char a[8];
char sum;
pga-op( (int) sum, ((int *)a)[0], ((int *)a)[1]);
}
ARCES University of Bologna
Soluzione esercizio: mapping