Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
GPU
Accanto alle tradizionali CPU, negli ultimi anni hanno avuto grande successo le Graphics Processing Unit
(GPU). Inizialmente pensate per applicazioni grafiche, le GPU vengono oggi utilizzate più in generale per
applicazioni scientifiche. Le GPU sono in grado di lavorare in parallelo su dati vettoriali (multidimensionali),
cioè strutture dati regolari, come le immagini.
Una GPU è composta da molti moduli di elaborazione (Processing Element o PE), ciascuno con la sua memoria
dati. Tutti i PE eseguono in parallelo la stessa istruzione sui propri dati. In tal modo si rendono molto più
→
veloci le operazioni su strutture dati regolari (come, ad esempio, le matrici) TRASFORMATA DI FOURIER.
Le GPU sono particolarmente efficienti nell’esecuzione degli algoritmi di Intelligenza Artificiale.
Microcontrollori (MCU)
Sono dispositivi, destinati ai sistemi special-purpose, realizzati su un unico IC che integra una CPU e anche
altri moduli (periferiche, memorie, interfacce, ecc.).
Sono composti da:
- processore (con caratteristiche molto variabili a seconda dell’applicazione)
- memoria ROM, RAM, Flash
- porte ed interfacce per I/O
- contatori. 8
Nel campo dei microcontrollori le prestazioni sono importanti al pari di altri parametri, quali ad esempio il
costo, il consumo, la dimensione, l’affidabilità, la facilità di utilizzo.
Un esempio è l’STM32: una famiglia di MCU con CPU a 32 bit progettata e prodotta da STMicoelectronics.
Realizzazione di sistemi Special-Purpose
I sistemi special-purpose sono progettati per eseguire una sola applicazione. Nel mercato specialpurpose,
generalmente nei sistemi embedded, non sono fondamentali le prestazioni, ma il costo di
sviluppo/progettazione e il costo di produzione dell’elettronica. I microcontrollori sono dei sistemi
programmabili che, integrando discrete CPU, memoria e porte, si interfacciano con dei dispositivi di
input/output, eseguono delle operazioni semplici e costano poco.
Per la realizzazione dei sistemi special-purpose esistono spesso varie alternative:
- Soluzione software (SW): usa una scheda esistente (equipaggiata di microprocessore o
microcontrollore che esegue un programma, di norma contenuto in una ROM o Flash), ciè utilizza un
hardware commerciale.
In questo caso quindi il lavoro di implementazione si concentra sulla scrittura del software eseguito
dal processore. In genere è la soluzione meno efficiente in termini di velocità di esecuzione, ma anche
la meno costosa e più flessibile.
- Soluzione hardware (HW): basata su un ASIC (Application Specific Integrated Circuit) progettato e
realizzato specificatamente per quell'applicazione, cioè si costruisce un hardware specifico
integrando solo i dispositivi specifici per compiere una funzione, per esigenze di dimensioni o di
consumo di energia. Se un ASIC contiene uno o più processori, viene denominato SoC.
Il costo è molto più alto in termini di progetto e messa in produzione, ma il costo unitario del prodotto
finito è molto minore. Ha senso quando i volumi in gioco sono elevati (>1M).
Inoltre (in linea generale)
o le prestazioni sono più elevate
o l’ingombro è minore
o il consumo è minimizzato
o la flessibilità è molto minore: una volta progettato e realizzato l’ASIC non è più modificabile.
o personalizzabilità
System on Chip
Molte applicazioni (ad esempio telefoni cellulari) si basano su IC complessi (denominati System o Chip o SoC),
che integrano al loro interno un intero sistema di elaborazione:
- uno o più processori
- vari moduli di memoria
- i moduli di interfaccia verso i periferici
- eventuali moduli specifici per un’applicazione (ma più complicati dei microcontrollori)
Ciascun SoC è rivolto ad una specifica applicazione e integra i moduli (IP core) necessari.
N.B. un microcontrollore è un System on Chip. 9
Il progetto dei circuiti logici
SINTESI
Da un codice scritto in C, il compilatore e un linker creano un file eseguibile che il processore utilizzerà per
eseguire le istruzioni.
Sul silicio si possono costruire i transistor. Un insieme di transistor può formare delle porte logiche (end, or,
not, ...). Tante porte logiche collegate opportunatamente realizzano registri, memorie, alu. Queste, insieme,
formano un processore. Un processore messo in contatto con una memoria che contiene il codice, che è il
risultato del compilatore e del linker, è in grado di svolgere le istruzioni richieste.
Il progettatore lavora sui moduli (ad alto livello, sfruttando il lavoro di qualcun altro che ha definito la
struttura dei moduli che utilizza); poi ci sono dei software che trasformano i componenti in transistor da
fornire a chi produce i transistor.
Un sistema è una collezione di oggetti (componenti) connessi a formare un’entità omogenea con una ben
precisa funzionalità. La funzione svolta dal sistema è determinata sia dalle funzioni svolte dai singoli
componenti, sia dal modo in cui i componenti sono connessi (topologia).
Un circuito è un particolare tipo di sistema. Per fare un circuito con determinate specifiche (costo, prestazioni,
…) si scelgono dei componenti, avendo informazioni di base sulla loro funzionalità, e li si assembla (topologia).
Un sistema digitale opera su dati discreti (dati A in input e B in output) corrispondenti a valori rappresentati
su bit. I sistemi digitali elaborano input digitali in output digitali (=binari). Esempi di sistemi digitali:
- Circuito digitale semplice (centinaia o migliaia di transistor)
o Contatore
o Sommatore
- Circuito digitale (milioni di transistor)
o Microcontrollore
o Memoria
- System on Chip o SoC (miliardi di transistor)
- Scheda
o Combinazione di diversi circuiti
- Sistema di elaborazione complesso
o Automobile
- Centro di elaborazione dati
Il diagramma a blocchi permette di descrivere in modo semplice la
struttura di un sistema, modellandolo mediante un grafo. Quindi il
circuito dispone di una libreria di componenti che rappresenta le
porte logiche da interconnettere:
- VERTICI = componenti/ porte logiche;
- ARCHI = linee per il trasferimento di dati tra componenti.
Un circuito è definito da: →
- STRUTTURA: da quali componenti è composto il circuito e come sono connessi questi componenti
diagramma a blocchi senza informazioni funzionali;
→
- COMPORTAMENTO: ciò che fa funzione per il trasferimento di dati.
10
Due circuiti con strutture diverse possono avere lo stesso comportamento, il viceversa è da evitare.
Progetto
A partire da un sistema da realizzare, di cui è noto il comportamento e una serie di altre specifiche e una serie
di componenti (di solito già disponibili), di cui è noto il comportamento e una serie di altre caratteristiche,
l'attività di progetto consiste nell'individuare una connessione di componenti per cui il comportamento
globale sia quello desiderato e le specifiche siano soddisfatte. Si possono includere specifici vincoli su
parametri quali: la velocità, il consumo di potenza, l’affidabilità e la durata.
Il costo che si cerca di minimizzare nel progetto è solitamente una combinazione pesata del costo per il
progetto, la produzione, che deve essere relativamente basso e la manutenzione, cioè meno guasti possibile
e costi di riparazione bassi.
Flusso di progetto Il progetto di un sistema avviene normalmente attraverso l'iterazione ai vari livelli delle
→ → →
stesse operazioni: definizione delle specifiche sintesi verifica realizzazione
Ciclo di vita di un prodotto
Il ciclo di vita di un prodotto si compone tipicamente di 4 fasi (indipendentemente dal fatto che sia meccanico,
elettronico…)
1. Specifica: si passa dall’idea ad un documento (o altro) che descrive il comportamento del sistema e i
vincoli per il progetto.
Sono l’input per il progettista che deve fare il progetto del circuito che implementa quelle specifiche.
Le specifiche possono essere estremamente complesse e lunghe e vanno sempre verificate se sono
complete, coerenti e con assenza di bachi.
N.B. Prima di passare alla fase successiva è fondamentale verificare la correttezza di quanto
sviluppato fino a quel punto. Più si va avanti più il costo per riparare eventuali errori cresce.
2. Progetto: si passa da una specifica ad un modello utilizzabile dal produttore.
L’attività di progetto è strettamente dipendente da quella di modellamento, attraverso cui ciò che si
vuole realizzare viene descritto formalmente utilizzando un appropriato modello da chi produce il
sistema. Questo modello descrive le porte logiche e le loro interconnessioni che soddisfano le
specifiche. Con questo si creerà la netlist (=insieme delle connessioni in un circuito elettrico) che
verrà mandata a chi produce il circuito.
È importante fare una verifica tramite simulazione, per vedere se si comporta come previsto prima
di metterlo in produzione, prima della realizzazione fisica. Con i simulatori è opportuno testare tutti
i possibili ingressi.
3. Produzione: si passa dal modello a un prodotto.
Anche in questo caso avviene una verifica di tutti i circuiti; molte volte il collaudo costa di più del
circuito.
4. Operatività: il prodotto è operativo
Livelli di progettazione
L'approccio al progetto di norma è top-down: dalle specifiche si realizza il progetto specificando parti
complesse e suddividendole successivamente in sottoproblemi più semplici, gestibile da una singola persona.
Nella pratica spesso si combinano tecniche top-down con altre bottom-up.
Linee guida: 11
- i componenti possono corrispondere ad entità fisiche (circuiti integrati, schede, ecc.) o a moduli
predefiniti (ad esempio appartenenti ad una libreria);
- ogni componente deve essere il più indipendente possibile, in modo da poter essere sviluppato o
modificato in maniera indipendente;
- in molti casi il progettista (chi lavora a livelli bassi) conosce le funzioni e le caratteristiche di un modulo,
senza conoscere i dettagli sulla sua implementazione, cioè le sue future applicazioni ("black box").
Il progetto può avvenire a diversi livelli ed il livello è definito dai componenti utilizzati in quella fase, che
verranno trasformati in transistor. Un componente ad un certo livello corrisponde ad un insieme di
componenti al livello inferiore. Un approccio top-down prevede la discesa nei seguenti livelli:
- sistema: opera su blocchi di dati codificati in un certo modo (es. output allo schermo), e utilizza dei
componenti già noti;
- registri (o gate transfer, o RT): non opera su 0 e 1, ma sulle variabili (ad es. si progetta il circuito per il
nuovo standard USB partendo da blocchi logici el