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

Slides:



Advertisements
Presentazioni simili
Aritmetica Binaria
Advertisements

Cache Memory Prof. G. Nicosia University of Catania
Lez. 6 (11/12) - PBElementi di Programmazione1 Lezione 6 Matrici Matrici di parametri.
E.Mumolo, DEEI Player Stage E.Mumolo, DEEI
Dispositivi programmabili
Sequential Statements. – Il VHDL simula lo svolgersi in parallelo di varie operazioni – Loggetto fondamentale e il PROCESS – Un PROCESS contiene una serie.
Architetture.
Architetture dei Calcolatori (Lettere j-z) Il Processore (2)
prompt> java SumAverage
ARCHITETTURA DEI SISTEMI ELETTRONICI
Software Principali Sguardo Generale. SkyExplorer zsimulatore astronomico.
Decoder Struttura generale del decoder
Laboratorio di elettronica digitale Lezione 3
Reti combinatorie: moduli di base
1 Implementazione di Linguaggi 2 PARTE 6 Implementazione di Linguaggi 2 PARTE 6 Massimo Ancona DISI Università di Genova Testo: A.V. Aho, R. Sethi, J.D.Ullman.
Circuiti programmabili
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 6: Classi e astrazione dati 1.Introduzione 2.Definizione delle strutture 3.Accedere ai membri.
Sottoprogrammi e Unità di Compilazione Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.
1 laboratorio di calcolo II AA 2003/04 ottava settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
FONDAMENTI DI INFORMATICA III WfMC-1. FONDAMENTI DI INFORMATICA III WfMC-2 WFMC Cose WfMC Workflow Management Coalition (WfMC), Brussels, è unorganizzazione.
Il main program Ogni programma in C++, per essere eseguibile, deve contenere una funzione main() da cui l’esecuzione comincerà main() deve avere un tipo.
Compito desame del Svolgimento della Sezione 5: CONTROLLORI Esempio preparato da Michele MICCIO.
Componenti dell’architettura Oracle
1 Premessa In questo progetto sono stati implementati tutti gli esercizi di Complementi di esercizi di Reti logiche. Elenco degli esercizi svolti: 1.Registro.
Una rete sequenziale asincrona e' caratterizzata da due segnali di ingresso X1, X2 (i quali non cambiano mai contemporaneamente) e da un segnale di uscita.
Aritmetica Computazionale F.Campi, A. Romani A.a
University of Bologna ARCES-LYRAS Lab Alcuni Accorgimenti per lo Sviluppo in VHDL Elettronica dei Sistemi Digitali L-A Aldo Romani.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Il Trigger di AMS-02 Stato dellarte. Trigger: Stato dellarte I livelli di trigger dellesperimento: -Fast trigger:FTC (particella carica attraversa il.
Tesista: Daniela Di Sclafani
Presentazione Finale Team 2 1. Decomposizione in sottosistemi 2.
Un esempio: Registrazione e lettura di dati in un file
Definizione Dispositivo adatto a svolgere funzioni diverse modificando solo parzialmente la parte circuitale ma variando di vota in volta il programma.
1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab Nanodesktop Software development kit per sistemi.
JavaScript Lezione 5 Tipizzazione ed operazioni tra tipi diversi Istruzioni di input.
MODELLO PER L’ANALISI DEL RATING AZIENDALE: ARP
DISPOSITIVI ASIC Application Specific Integrated Circuit De Faveri Martina Classe 3 BET.
OUTPUT FORMATTATO La funzione printf consente di effettuare la stampa a video formattata. Sintassi: printf ( stringa_formato, arg0, arg1, … ); La stringa.
Architettura delle GPU e
Format Fusion SD and HD Kahuna. Kahuna Completamente un nuovo design Focalizzato per il mercato del live production Nuovo Pannello di controllo e mainframe.
Architettura dei sistemi di elaborazione
Innovazioni versione 4 Bari, 17 ottobre Innovazioni versione 4 Il menù dinamico secondo logica operativa Il ruolo dei Ruoli Facilitare la scelta.
Attività Formativa Sviluppo di un WORKFLOW ENGINE di Dott. Riccardo Gasperoni Alessandro Caricato Gabriele Trabucco in collaborazione con Progesi S.p.A.
Architettura di Calcolo
L2 Elaborazione di immagini in C/C++
Un Architettura Risc - Pipeline Il Processore Deluxe - DLX
Sistema Real-time: Sistema VISyR Implementazione nellAmbiente di Sviluppo Quartus-II Semplice Applicazione: Prodotto Matrice x matrice Architettura StratiX.
24 aprile 2002 Avvisi: Risultati 1 o Esonero: (entro) lunedi 27 disponibili nella pag. WEB, ma anche esposti nella bacheca fuori dal corridoio 2 o dente,
Controllo remoto di dispositivi tecnologici via TCP/IP.
Reti combinatorie: moduli di base
Progetto di una memoria cache per il processore DLX Andrea Grandi Filippo Malaguti Massimiliano Mattetti Gabriele Morlini Thomas Ricci Progetto di Calcolatori.
Progetto di una memoria cache per il processore DLX Andrea Grandi Filippo Malaguti Massimiliano Mattetti Gabriele Morlini Thomas Ricci Progetto di Calcolatori.
SUBQUERY Chi ha un salario maggiore di quello di Abel? Occorre scomporre la query in due sotto problemi: MAIN : quali impiegati hanno un salario maggiore.
Introduzione al linguaggio C. Cos’e’ il C? Il C e’ un linguaggio ad alto livello Un compilatore C prende in input un file contenente codice sorgente C.
Collection & Generics in Java
1 An Approximation- Based Data Structure for Similarity Search R. Weber, S. Blott Hermes, 1998 Sistemi Informativi per le Decisioni Diego Cera – Michele.
Luca Orrù 1 Input/Output. 2 SOMMARIO Organizzazione di sistema Trasferimento dati; Gestione I/O.
Calcolatori Elettronici Il Processore
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (2) Istruzioni I-type Indirizzamento.
Sistemi Elettronici Programmabili3-1 FPGA Sistemi Elettronici Programmabili.
Sistemi Elettronici Programmabili3-1 FPGA: Architettura.
Elementi fondamentali dell’ Architettura di di un elaboratore elettronico.
Programmazione per la Musica | Adriano Baratè
Logica binaria Moreno Marzolla
Cammino dei Dati (Datapath)
... mi hanno detto di preparare “due” slide ...
PROGRAMMAZIONE BASH – ISTRUZIONE IF
Introduzione L’8254 è un interval timer event/counter, progettato per risolvere i problemi del controllo del timing, comuni ad ogni microcomputer. E’ costituito.
Esercitazione su Instruction Level Parallelism
Relazioni tra CPU e Memoria e Dispositivi I/O
Transcript della presentazione:

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 dellInstruction Set Register File Configuration Memory Configuration Memory

ARCES University of Bologna Descrizione della PiCo-Cell 4x32-bit input data da Reg File 2x32-bit output data a Reg File PiCoGA Control Unit INPUT LOGIC INPUT LOGIC LUT 16x2 LUT 16x2 OUTPUT LOGIC, REGISTERS OUTPUT LOGIC, REGISTERS CARRY CHAIN CARRY CHAIN LUT 16x2 LUT 16x2 EN PiCoGA control unit signals Configuration bus Loop-back 12 global lines to/from Reg File INPUT CONNECT BLOCK INPUT CONNECT BLOCK SWITCH BLOCK INPUT CONNECT BLOCK INPUT CONNECT BLOCK OUTPUT CONNECT BLOCK OUTPUT CONNECT BLOCK RLC … … … … … … …

ARCES University of Bologna RLC: Schema a blocchi

ARCES University of Bologna Blocco di gestione delle uscite Dalle LUT X[1:0] Y[1:0]

ARCES University of Bologna Funzionalità di base di un RLC LUT 4:2 A BC D Z[3:2]Z[1:0] OUTPUT LOGIC 2 2 INPUT LOGIC Due funzioni logiche indipendenti, 4 ingressi e 2 uscite A0A0 B0B0 C0C0 D0D0 A1A1 B1B1 C1C1 D1D1 ZoZo Z1Z1 Z2Z2 Z3Z3 Esempio: 4 porte logiche elementari (AND,OR,XOR)

ARCES University of Bologna Funzionalità di base di un RLC LUT 4:2 AB Z[3:2]Z[1:0] OUTPUT LOGIC 2 2 INPUT LOGIC 22 Una funzione con 4 ingressi e 4 uscite X 22 4 A B Z Esempio: moltiplicatore di operandi a 2 bit

ARCES University of Bologna Funzionalità di base di un RLC LUT 4:2 AB Z[1:0] OUTPUT LOGIC 2 2 INPUT LOGIC 22 Una funzione con 5 ingressi e 2 uscite C A B SEL Z Esempio: multiplexing tra coppie di bit

ARCES University of Bologna Funzionalità di base di un RLC LUT 4:2 AB Z OUTPUT LOGIC INPUT LOGIC 22 Una funzione con 6 ingressi e 1 uscita C0C0 1 1 C[1:0] Z Esempio: multiplexer 4:1 1 C1C1 A0A0 B0B0 A1A1 B1B1

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 carry Look-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 Accumulatore + INPUT LOGIC Carry-in Carry-out REG Feed-back interno allRLC 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 Bologna PiCoGA Control Unit 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 linizio di una pga-op e la produzione dei risultati Issue delay: tempo minimo che deve intercorrere tra due pga-op consecutive Latenza dipende dal percorso critico (Nodi 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. 1 Func. 2 Func. 3 Func. 4 Func. n Configuration Cache PiCoGA Attraverso listruzione di pga-load una configurazione viene caricata nel PiCoGA Le risorse del PiCoGA possono essere partizionate tra più funzioni Funzioni caricate possono elaborare concorrentemente

ARCES University of Bologna Array multi-contesto Func. 1 Func. 2 Func. 3 Func. 4 Func. n Configuration Cache PiCoGA 4 piani di configurazione memorizzati nel PiCoGA, uno dei quali elabora 1 ciclo di clock per passare da un piano allaltro Mentre un piano esegue un altro viene riconfigurato nessun overhead di riconfigurazione Region partitioning + multi-contesto fino a 16 pga-op memorizzabili 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 leseguibile per XiRisc Profiler: tool per stimare i tempi di esecuzione File.c C COMPILER ASSEMBLER LINKERFile.exeSOFTWARESIMULATORPROFILER ASSEMBLERSCHEDULER

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 dellhardware 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 0x 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 -- MUX

ARCES University of Bologna Esempio Codice 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: Profiling Codice di riferimento char RowA[64], RowB[64]; 1 acc=0; 1 max=0; 184 for(i=0;i<16;i++) { 176if(MEM[i]>0) 0for(j=4*i;j<4*(i+1);j++) { 0a=RowA[j]; 0b=RowB[j]; 0dif=a-b; 0acc+=dif; } 0else 1296for(j=4*i;j<4*(i+1);j++) { 512a=RowA[j]; 512b=RowB[j]; 576m=a+b/2; 384if (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++) { 176if(MEM[i]>0) 0 pgaop1(RowA[i],RowB[i],acc); 0 else 304 pgaop2(RowA[i],RowB[i],max); } Totale: 3649 cicli Totale: 673 cicli Speed-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 & 0x ) ? 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 C Soluzione 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