ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

38
ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma

Transcript of ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

Page 1: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

ARCES University of Bologna

Programmazione di un processore riconfigurabile

Mario Toma

Page 2: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

ARCES University of Bologna

Architettura

Page 3: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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

Page 4: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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

… …

Page 5: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

ARCES University of Bologna

RLC: Schema a blocchi

Page 6: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

ARCES University of Bologna

Blocco di gestione delle usciteDalle LUT

X[1:0]

Y[1:0]

Page 7: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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)

Page 8: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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

Page 9: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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

Page 10: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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

Page 11: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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)

Page 12: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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

Page 13: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

ARCES University of Bologna

Memoria• Memoria di 256 locazioni da 8 bit (256x8)

• Utilizzate 3 righe del PiCoGA

LUT 6:1

MUX 4:1

Page 14: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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?

Page 15: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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

Page 16: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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

Page 17: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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

Page 18: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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

Page 19: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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

Page 20: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

ARCES University of Bologna

Metodologia di Sviluppo Algoritmi

• Sorgente C• Profiling

– Estrazione dei kernel duri

• Configurazione PiCoGA• Simulazione software• Codice eseguibile

Page 21: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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

Page 22: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

ARCES University of Bologna

Profiling• Si visualizza il numero di cicli di esecuzione associati ad ogni riga di codice C

Page 23: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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

Page 24: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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)

Page 25: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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

Page 26: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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);

}

Page 27: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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

Page 28: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

ARCES University of Bologna

Pga-op1: Mapping

• Si sfruttano parallelismo e pipelining

• Latenza: 4

• Issue delay: 1

Page 29: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

ARCES University of Bologna

Pga-op2: Mapping

Latenza: 6

Issue delay:3

Occupazione:

• 6 righe

• 40 RLC

Page 30: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

ARCES University of Bologna

Pga-op2: Mapping ottimizzato

Latenza: 6

Issue delay:1

Occupazione:

• 6 righe

• 56 RLC

Page 31: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

ARCES University of Bologna

DES(Data encryption Standard)

Algoritmo con operazioni bit-level

Processori tradizionali poco efficienti

Funzione non-lineare f mappabile su PiCoGA

Page 32: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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

Page 33: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

ARCES University of Bologna

DES: Data Flow Graph

Page 34: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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

Page 35: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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

Page 36: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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

Page 37: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

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]);

}

Page 38: ARCES University of Bologna Programmazione di un processore riconfigurabile Mario Toma.

ARCES University of Bologna

Soluzione esercizio: mapping