In questo articolo analizziamo l’ Architettura dei sistemi di elaborazione, il modello di Von Neumann e le componenti. Infine vediamo le alternative al modello di Von Neumann e i sistemi alternativi a quelli a microprocessore
architettura-sistemi-di-elaborazione.zip (169 download )
Sommario
- Generalità sui sistemi
- IL MICROPROCESSORE
- Evoluzione dei Microprocessori
- Alternative ai microprocessori
Generalità sui sistemi
Un sistema è un insieme di elementi che interagiscono tra loro al fine di raggiungere un obiettivo comune. Spesso gli elementi che costituiscono un sistema sono a loro volta dei sistemi (sottosistemi). Un sistema è descritto da proprietà che definiscono, istante per istante, lo stato in cui si trova:
- Natura(naturale, artificiale)
- Tempo(discreto, continuo)
- Proprietà delle variabili(dinamico, statico)
- Proprietà delle relazioni(deterministico, probabilistico)
- Relazione I/O(combinatorio, sequenziale)
- Interazione(chiuso, aperto)
Un sistema di elaborazione è un sistema artificiale aperto: riceve «qualcosa» dal mondo esterno, lo trasforma e lo restituisce all’esterno modificato. Ciò che entra nel sistema viene chiamato «input», ciò che esce «output». L’operazione di trasformazione dell’input in output viene chiamata elaborazione
Il computer è un dispositivo costituito da un insieme di elementi in grado di acquisire dall’esterno dati e istruzioni e produrre in uscita i risultati dell’elaborazione. L’hardware è costituito dalle componenti fisiche (parti elettriche, elettroniche, meccaniche, …) del sistema. Il software è costituito da sequenze ordinate di istruzioni (i programmi) che indicano al computer come trattare i dati.

Nel 1945 il matematico John von Neumann propose un modello di architettura per elaborare e gestire i dati. Questo modello è tuttora utilizzato in tutti gli elaboratori. L’evoluzione ha riguardato i singoli componenti e l’ottimizzazione del funzionamento dei vari elementi tra loro. Si possono essenzialmente individuare quattro componenti:
- l’unità centrale di elaborazione CPU (Central Processing Unit)
- la memoria centrale (RAM)
- il sistema di input/output (I/O)
- bus di sistema (BUS) e memoria.

LA CPU
La CPU è l’elemento principale di elaborazione di una macchina di von Neumann. Si occupa di ricevere comandi e dati da elaborare e di gestire la funzionalità delle periferiche e della memoria in base alle esigenze di elaborazione. È molto complessa e al suo interno possiamo identificare tre componenti principali:
- l’unità di controllo (Central Unit o Controller), componente che coordina tutte le attività della CPU.
- l’unità aritmetico-logica (ALU – Arithmetic Logic Unit), componente velocissima nell’eseguire le operazioni aritmetiche e i confronti logici;
- i registri, cioè memorie velocissime utilizzate per le esecuzioni delle operazioni;
- il Clock
Con il termine microprocessore si intende il dispositivo fisico che realizza le funzioni della CPU
Le operazioni che il microprocessore può compiere sono sostanzialmente le seguenti:
- somma (le altre operazioni sono trasformate in somme con alcuni accorgimenti matematici grazie alle proprietà dei numeri binari);
- spostamento dati;
- controllo delle memorie e delle periferiche collegate attraverso il bus.

L’Unità di Controllo (CU) ha il compito di coordinare e temporizzare il funzionamento dell’intero sistema. Impartisce gli ordini all’unità aritmetico-logica, alla memoria del computer e ai dispositivi di input e output. Abilita la scrittura o la lettura da memoria o da I/O, inviando sul bus determinati segnali come, per esempio: RD se lettura, WR se scrittura, I/O se è coinvolta una periferica, MEM se è coinvolta la memoria. Fanno parte dell’unità di controllo due registri di uso speciale utilizzati per cari- care le istruzioni dalla memoria: Program Counter e Instruction Register
Nell’architettura degli elaboratori un ruolo importante hanno i registri, memorie ausiliarie in grado di memorizzare più bit alla volta e restituire l’informazione memorizzata per un suo successivo utilizzo. Vi sono moltissimi tipi di registri che si differenziano tra loro in base all’uso e alla capacità di memoria. Dal punto di vista tecnologico, un registro è un insieme di elementi fisici bistabili, detti bit. Poiché ciascun elemento ha due configurazioni stabili possibili, cui per convenzione sono associati i simboli 0 e 1, un registro formato da n bit è in grado di assumere 2n configurazioni di stato diverse

LA ALU
L’Unità Aritmetico-Logica esegue le operazioni aritmetiche (somma, sottrazione e anche moltiplicazione e divisione, se previste) e logiche (AND, OR, NOT). I dati su cui operare sono presenti nei registri di uso generale e il risultato di un’operazione è posto anch’esso in un registro di uso generale. Dopo un’operazione aritmetico-logica il registro di stato viene aggiornato in base al risultato dell’operazione. La ALU è realizzata con un insieme di porte logiche opportunamente collegate (rete combinatoria), che provvedono a eseguire tutte le operazioni:
L’evoluzione dell’elettronica ha reso possibile all’ALU l’esecuzione di operazioni aritmetiche più complesse delle semplici somme e sottrazioni. Tuttavia per i calcoli matematici più sofisticati (come i calcoli in virgola mobile) sono stati spesso utilizzati componenti esterni specializzati (coprocessori). Anche questi, con il passare del tempo, sono stati integrati nella CPU
I REGISTRI
I registri di uso generale, general purpose register sono registri di appoggio usati dalla CPU per memorizzare temporaneamente gli operandi e i dati utilizzati per l’esecuzione di un’istruzione. Il numero e la dimensione dei registri dipendono dalla specifica CPU. Ogni registro è identificato da un nome. Normalmente esiste un registro che è origine e destinazione di molte istruzioni e che prende il nome di accumulatore, indicato in genere con la lettera A
I registri di uso speciale, special purpose register sono dedicati a funzioni specifiche. Alcuni di questi registri sono:
- PC (Program Counter). Contiene l’indirizzo di memoria centrale in cui è pre- sente la successiva istruzione che la CPU eseguirà
- SR (Status Register, registro di stato). Ogni singolo bit di questo registro identifica un «flag» il cui significato è legato allo stato del processore. Ogni flag può assumere solo due valori: «1» logico, quando è ON, oppure «0» logi- co, quando è OFF.
- SP (Stack Pointer, puntatore allo stack). Contiene l’indirizzo della cima dello stack. Lo stack è una particolare area di memoria, simile a una pila di piatti, in cui i dati possono essere inseriti ed estratti solo dalla cima.
- IR (Instruction Register, registro istruzione corrente). Contiene il codice operativo dell’istruzione da eseguire
- MAR (Memory Address Register, registro degli indirizzi della memoria). Contiene l’indirizzo della memoria principale in cui (o da cui) i dati o le istruzioni devono essere trasferiti.
- DR (Memory Data Register, registro dei dati della memoria). Contiene dati e istruzioni che transitano dalla memoria verso i registri della CPU e i dati che vengono scritti in memoria
IL CLOCK
Il clock è un orologio interno alla CPU. Il segnale generato è periodico. Tutte le operazioni che la CPU svolge sono scandite dal ciclo di clock, che determina anche la velocità con cui si svolgono le operazioni di elaborazione. Maggiore è la frequenza di clock, maggiore è la velocità di lavoro della CPU.
La frequenza di clock f si misura in Hz e corrisponde al numero di cicli eseguiti in un secondo (periodo). La frequenza f è l’inverso del periodo T. Per comodità si usano i multipli degli hertz: kHz, MHz e GHz.

ESEMPIO Se la frequenza di clock di un processore è di 2,3 GHz significa che esso esegue 2,3 * 109 cicli in un secondo. Quindi esegue 2.300.000.000 di cicli in unsecondo
Alcune operazioni richiedono un solo ciclo di clock, altre più di uno: in media, ci saranno più cicli di clock che istruzioni eseguite. Tanto maggiore è la frequenza del clock, tante più istruzioni possono essere effettuate nell’unità di tempo
IL MICROPROCESSORE
Il modello di Von Neumann prevede quattro componenti fondamentali:
- CPU (Unità di Elaborazione Centrale)
- Memoria
- Dispositivi di I/O
- BUS di comunicazione
Su questa base sono stati sviluppati i primi sistemi di elaborazione, in cui il cuore del processo, come teorizzato da Von Neumann, è la CPU.
La CPU è stata fisicamente realizzata attraverso il microprocessore, un’innovazione resa possibile grazie al lavoro di Federico Faggin nel 1968. Oggi, i microprocessori moderni sono spesso multicore, ovvero contengono più unità di elaborazione all’interno di un unico componente integrato, migliorando le prestazioni e l’efficienza.
Un microprocessore è composto da diverse unità fondamentali:
- CU (Control Unit) – Gestisce il flusso di dati e le istruzioni.
- ALU (Arithmetic Logic Unit) – Esegue operazioni aritmetiche e logiche.
- Registri – Memorie interne ad alta velocità per l’elaborazione immediata dei dati.
- Cache interna – Una memoria ad accesso rapido che contiene le istruzioni in esecuzione per velocizzare il processo. È organizzata su più livelli (L1, L2, ecc.) in base alla velocità di accesso.
- LCU (Logical Control Unit) – Circuiti che convertono gli impulsi elettrici esterni in segnali utilizzabili dall’unità di controllo.
- Memory Interface – Circuiti che gestiscono la comunicazione tra CPU, memoria e periferiche, traducendo i segnali ricevuti dall’esterno.
- BUS interno (CPU Bus) – Un insieme di connessioni elettriche che consente il trasferimento di dati e indirizzi tra i vari componenti del microprocessore.
Questa architettura garantisce l’efficienza e le prestazioni dei moderni sistemi di elaborazione.


LA CACHE
La memoria cache è una memoria nascosta che accelera l’elaborazione dei dati, conservando temporaneamente le informazioni che la CPU potrebbe richiedere a breve. Si definisce “nascosta” perché non è gestita dai programmi, ma direttamente dal microprocessore tramite un dispositivo integrato chiamato cache controller.
Questa memoria funge da intermediario tra la CPU e la RAM, permettendo al processore di accedere rapidamente ai dati senza doverli recuperare dalla memoria principale. In passato, la cache era un componente esterno al microprocessore, ma grazie ai progressi tecnologici è stata integrata direttamente nella CPU, migliorandone le prestazioni.
Attualmente, la cache è suddivisa in tre livelli:
- L1 (Livello 1) – La più veloce ma anche la più piccola, è dedicata esclusivamente al core del processore.
- L2 (Livello 2) – Più grande di L1, ma leggermente meno veloce. Ogni core ha una cache L2 privata.
- L3 (Livello 3) – Più capiente, ma più lenta rispetto agli altri livelli. Nelle CPU multi-core, è condivisa tra tutti i core.
All’aumentare del livello (da L1 a L3), cresce la capacità di memorizzazione ma diminuisce la velocità di accesso. Grazie a questa organizzazione, le moderne CPU ottimizzano le prestazioni riducendo i tempi di attesa nell’elaborazione dei dati.


Quando la CPU deve accedere a un dato, verifica prima se è presente nella memoria cache confrontando il suo indirizzo con quelli memorizzati. Questo meccanismo consente di ottimizzare i tempi di accesso ai dati:
- Cache Hit – Se il dato è già in cache, il trasferimento avviene istantaneamente, migliorando le prestazioni.
- Cache Miss – Se il dato non è in cache, viene recuperato dalla RAM, causando un rallentamento.
L’efficacia della memoria cache è misurata dal tasso di successo (hit rate), ovvero il rapporto tra il numero di cache hit e il numero totale di accessi alla memoria. Un alto hit rate indica una cache ben ottimizzata.
Se la cache è piena, è necessario liberare spazio per nuovi dati. Questo avviene tramite strategie di rimpiazzo, tra cui la più comune è la LRU (Least Recently Used), che elimina i dati meno utilizzati.
Coerenza tra Cache e Memoria Centrale
Poiché i dati possono essere modificati nella cache, è fondamentale mantenere la memoria centrale sempre aggiornata. Se un dato in cache viene cambiato o eliminato, la modifica deve riflettersi anche nella RAM per evitare incongruenze.
A questo scopo, sono stati sviluppati i protocolli di coerenza della cache, che garantiscono la sincronizzazione tra i dati presenti nelle cache e quelli nella memoria centrale.
Strategie di Posizionamento dei Dati in Cache
I dati possono essere memorizzati nella cache secondo due metodi principali:
- Posizionamento Libero – I dati vengono inseriti nelle celle libere più vicine, ottimizzando lo spazio disponibile.
- Posizionamento Vincolato – Ogni area della memoria centrale ha una corrispondente area riservata nella cache. Questo metodo accelera il trasferimento dei dati ma può portare a frequenti operazioni di rimpiazzo se una determinata area è molto utilizzata.
Grazie a queste tecniche, la memoria cache migliora significativamente le prestazioni della CPU, riducendo i tempi di accesso ai dati e aumentando l’efficienza complessiva del sistema.

IL CICLO MACCHINA
La CPU è responsabile dell’esecuzione delle istruzioni di un programma. Ogni operazione segue una sequenza ben definita, chiamata ciclo macchina, che comprende tre fasi fondamentali:
-
IF (Instruction Fetch) – Lettura dell’istruzione dalla memoria.
- Il contenuto del Program Counter, che individua l’indirizzo della cella di memoria da cui prelevare l’istruzione, viene copiato nel registro MAR che si interfaccia con il bus indirizzi.
- L’indirizzo contenuto in MAR viene caricato sul bus indirizzi e viene attivata la cella di memoria corrispondente.
- Il codice operativo dell’istruzione, contenuto nella cella di memoria indirizzata, è posto nel bus dati per essere trasferito nel registro MDR.
- MDR contiene il codice dell’istruzione.
- Il contenuto di MDR viene trasferito, tramite il bus interno alla CPU, nel registro IR per essere decodificato.
-
ID (Instruction Decode) – Decodifica dell’istruzione e lettura dei dati dai registri.
- Il codice dell’istruzione contenuto nel registro IR è decifrato (decodificato) e interpretato. Se la decodifica indica che l’istruzione è più lunga di una locazione di memoria, la CPU legge anche il resto dell’istruzione e incrementa il PC del numero di locazioni lette.
-
EX (Execution) – Esecuzione dell’istruzione.
- L’istruzione è eseguita.
- Se l’istruzione prevede la necessità di accedere nuovamente alla memoria per ottenere altri dati, vengono nuovamente coinvolti i registri MAR e MDR.
- L’esecuzione di un’istruzione comporta uno scambio di segnali sulle linee del bus di controllo. Questo scambio avviene sotto la supervisione della Control Unit
Per alcune istruzioni, la CPU esegue due fasi aggiuntive:
- MEM (Memory Access) – Scrittura del risultato in memoria (se necessario).
- WB (Write Back) – Scrittura del risultato nei registri e aggiornamento dello stato.
Nei moderni microprocessori, il ciclo macchina viene suddiviso in micro-operazioni, ciascuna con un livello di complessità uniforme. Questo approccio permette di:
Eseguire più istruzioni contemporaneamente attraverso tecniche come il pipelining.
Ridurre i tempi di elaborazione, ottimizzando il flusso di dati tra le diverse unità della CPU.
Completare ogni micro-operazione in un ciclo di clock, migliorando l’efficienza del processore.
La durata di una micro-operazione è chiamata cycle time (tCPU) e rappresenta il tempo impiegato dalla CPU per completare un’operazione di base.
Grazie a queste ottimizzazioni, i moderni processori possono gestire enormi quantità di dati con maggiore velocità e precisione.

LE PIPELINE
Le CPU tradizionali eseguono un’istruzione alla volta, limitando la velocità di elaborazione. Per superare questa limitazione, si utilizza la tecnica del pipelining, che permette di parallelizzare le diverse fasi di esecuzione delle istruzioni.
In un microprocessore con pipelining:
- Le istruzioni sono suddivise in micro-operazioni, ciascuna elaborata in una specifica unità funzionale.
- Le unità funzionali lavorano in parallelo, consentendo di eseguire più fasi contemporaneamente.
- L’elaborazione avviene in una conduttura sequenziale, chiamata pipeline.

Ad esempio, mentre la prima istruzione è nella fase finale, la seconda è già nella fase precedente, e così via. Questo consente di ridurre il numero complessivo di cicli di clock necessari per eseguire un insieme di istruzioni.
Con pipelining: 8 istruzioni possono essere completate in 12 fasi complessive.
Senza pipelining: sarebbero necessarie 40 fasi (5 fasi × 8 istruzioni).
Per implementare il pipelining, si sostituisce l’unità funzionale “monolitica” con una serie di unità più semplici e specializzate, chiamate stadi della pipeline. Ogni stadio esegue una parte del lavoro e poi passa il controllo allo stadio successivo, garantendo un flusso continuo di elaborazione.
Il pipelining migliora le prestazioni della CPU, ma può incontrare due principali ostacoli:
- Dipendenze tra istruzioni – Se un’istruzione ha bisogno del risultato di un’istruzione precedente, non può proseguire nella fase di esecuzione (EX) finché la precedente non ha completato la scrittura (WB).
- Salti di esecuzione – Quando il programma esegue un salto condizionato, la CPU deve svuotare la pipeline per eseguire correttamente il codice successivo, causando un rallentamento.
Per minimizzare questi problemi, sono state adottate diverse soluzioni:
Grazie a queste ottimizzazioni, i processori moderni sono in grado di eseguire più istruzioni contemporaneamente, riducendo drasticamente i tempi di elaborazione.
Evoluzione dei Microprocessori
Prestazioni di un Sistema a Microprocessore
L’evoluzione delle architetture dei sistemi di elaborazione è stata fortemente influenzata dalla crescente richiesta di prestazioni migliori a un costo inferiore. In molti casi, per superare i limiti fisici imposti dai semiconduttori, sono stati adottati espedienti architetturali innovativi. Un esempio rilevante è rappresentato dai processori che, non potendo superare certe frequenze di clock a causa della produzione eccessiva di calore (che danneggerebbe i circuiti), sono stati riprogettati per lavorare in parallelo, adottando strutture simili a catene di montaggio o integrando più processori cooperanti in un unico sistema.
Valutazione delle Prestazioni
Valutare le prestazioni (in inglese performance) di un sistema a microprocessore significa confrontare le sue capacità operative rispetto a un sistema di riferimento, utilizzando parametri misurabili. Tra i principali indicatori di prestazione ricordiamo:
1. Frequenza di Clock
La frequenza di clock (o clock rate) rappresenta la velocità con cui il processore esegue i cicli macchina. Essa è espressa in Hertz (Hz), solitamente in gigahertz (GHz).
Tuttavia, non si tratta di un parametro assoluto: una frequenza maggiore non implica necessariamente prestazioni superiori, poiché non tiene conto del numero di cicli necessari per eseguire una singola istruzione.
In passato, per incrementare le prestazioni si ricorreva alla tecnica dell’overclocking, che consiste nell’aumentare la frequenza di lavoro del processore. Questa pratica comporta però un aumento della tensione operativa, con conseguenti problemi di consumo energetico, surriscaldamento e riduzione della vita utile del chip.
2. MIPS (Million Instructions Per Second)
Il parametro MIPS misura quante istruzioni possono essere eseguite in un secondo. È utile per confronti approssimativi, ma presenta delle limitazioni:
- Non tiene conto della complessità delle istruzioni: sistemi con set di istruzioni differenti restituiscono valori MIPS non comparabili.
- Varia in base al programma in esecuzione, poiché ogni programma utilizza istruzioni differenti con tempi di esecuzione variabili.
3. FLOPS (Floating Point Operations Per Second)
I FLOPS indicano il numero di operazioni in virgola mobile eseguite dalla CPU in un secondo. Questo parametro è particolarmente rilevante per applicazioni scientifiche, matematiche e grafiche ad alta intensità computazionale.
4. Architettura a 32 o 64 Bit
La larghezza dei registri (32 o 64 bit) determina la quantità di dati che il processore può elaborare in una singola operazione. Un’architettura a 64 bit consente l’elaborazione di numeri più grandi o operazioni più complesse con maggiore efficienza rispetto a una a 32 bit.
5. Struttura Interna del Processore
Con l’evoluzione tecnologica, i microprocessori sono stati dotati di circuiti che permettono l’esecuzione parallela di più operazioni (tecnica della pipeline). Inoltre, i collegamenti interni sono stati ottimizzati per velocizzare la comunicazione tra i componenti del processore.
6. Numero di Core
A partire dal 2005, la corsa alla frequenza si è arrestata, e si è preferito integrare più core all’interno dello stesso chip. I processori multicore consentono di distribuire l’elaborazione su più unità di calcolo, migliorando le prestazioni in ambienti multi-threading e applicazioni parallele.
7. Velocità delle Periferiche
Le periferiche (dischi, stampanti, ecc.) hanno velocità di elaborazione molto inferiori rispetto alla CPU, soprattutto per la presenza di componenti meccanici. Per compensare questa disparità, sono state introdotte memorie interne ad alta velocità, come la cache, che fungono da buffer tra CPU e RAM/periferiche.
La Legge di Moore
Nel 1965, Gordon Moore, cofondatore di Intel, formulò quella che divenne nota come Prima Legge di Moore:
“Il numero di transistor in un chip raddoppia ogni 18 mesi.”
Questa previsione, basata su osservazioni empiriche, si è dimostrata valida per decenni, anticipando lo sviluppo di computer sempre più compatti, potenti ed economici.
Tecniche di Ottimizzazione Architetturale
Negli anni, sono state introdotte numerose tecniche che hanno migliorato ulteriormente le prestazioni dei sistemi, tra cui:
• Pipelining
Consiste nella suddivisione di un’istruzione in fasi elementari (fetch, decode, execute…) che vengono eseguite in parallelo su più istruzioni. Questo approccio aumenta l’efficienza della CPU, sfruttando la sovrapposizione temporale delle operazioni.
• Branch Prediction
La Branch Prediction Unit (BPU) predice l’esito delle istruzioni condizionali (if-then-else), in modo da evitare stalli nella pipeline. Se la previsione è errata, la pipeline viene svuotata (flush), ma in media la tecnica consente un notevole guadagno prestazionale.
Negli ultimi anni, vulnerabilità legate alla branch prediction (es. Meltdown e Spectre) hanno sollevato importanti problematiche di sicurezza informatica nei processori moderni.
• Multicore
L’integrazione di più core (anche oltre 70) in un singolo processore ha rappresentato una svolta architetturale. Tuttavia, il software spesso non riesce a sfruttare completamente il potenziale di questi sistemi altamente paralleli.
Architetture CISC e RISC
CISC (Complex Instruction Set Computing)
- Insieme di istruzioni complesse e numerose
- Ampia varietà di modalità di indirizzamento
- Istruzioni a lunghezza variabile, complicando la fase di fetch
- Favorisce la prossimità tra linguaggio macchina e linguaggi ad alto livello, ma penalizza le prestazioni
RISC (Reduced Instruction Set Computing)
- Insieme di istruzioni semplici, rapide e di lunghezza fissa
- Separazione netta tra operazioni aritmetiche/logiche e trasferimento dati
- Favorisce l’uso del pipelining
- Hardware più semplice e prestazioni ottimizzate, a scapito della “potenza” delle singole istruzioni
Architetture Alternative alla Von Neumann
Architettura di Von Neumann
- Unica memoria condivisa per dati e istruzioni
- Possibili colli di bottiglia nelle operazioni sequenziali
Architettura di Harvard
- Memorie separate per istruzioni e dati
- Permette accessi paralleli e maggiore velocità
- Maggiore complessità circuitale
Utilizzata in molti microcontrollori e nei Digital Signal Processor (DSP), fondamentali nei sistemi di elaborazione audio e video.
Alternative ai microprocessori
Nei moderni sistemi embedded e nei dispositivi intelligenti, esistono diverse alternative ai microprocessori tradizionali. Tra le soluzioni più diffuse troviamo microcontrollori (MCU), SoC (System on Chip) e SBC (Single Board Computer). Ognuna di queste tecnologie risponde a specifiche esigenze in termini di potenza di calcolo, consumo energetico, connettività e integrazione con altri dispositivi.
I microcontrollori
Un microcontrollore (μC o MCU – Micro Controller Unit) è un sistema completo, che integra su un singolo chip:
- un’unità di elaborazione (CPU) a 8, 16 o 32 bit,
- memoria volatile (RAM) e memoria permanente (ROM, EEPROM, Flash),
- interfacce di input/output (I/O) sia parallele che seriali.
A differenza dei microprocessori, che necessitano di componenti esterni per funzionare, i microcontrollori includono numerosi moduli integrati, tra cui:
- Timer e contatori, per la generazione di impulsi e la misurazione di frequenze;
- Convertitori ADC (Analog-Digital Converter), per l’acquisizione di segnali analogici;
- Convertitori DAC (Digital-Analog Converter), per la generazione di segnali analogici;
- Porte specializzate, per funzioni dedicate e personalizzabili.
Vantaggi e applicazioni
I microcontrollori sono estremamente diffusi grazie a:
- bassi costi di produzione,
- consumi energetici ridotti,
- facilità di programmazione.
Li troviamo in svariati contesti, tra cui robotica, automazione industriale, sistemi automobilistici, dispositivi IoT, giocattoli e piccoli elettrodomestici.
I System on Chip (SoC)

Un SoC (System on Chip) è un chip compatto che integra in sé tutti i componenti principali di un sistema di elaborazione. In uno spazio di circa 2×2 cm e con consumi ridotti (circa 2W), un SoC può includere:
- CPU multicore a basso consumo,
- DSP (Digital Signal Processor) per elaborazioni specializzate,
- GPU (Graphics Processing Unit) per elaborazioni grafiche e multimediali,
- memorie primarie (RAM, ROM) e secondarie (Flash, EEPROM),
- moduli di comunicazione (USB, HDMI, Wi-Fi, Bluetooth, 5G/LTE),
- convertitori ADC e DAC,
- DMA (Direct Memory Access) per il trasferimento dati ad alta velocità,
- Encoder/Decoder per la compressione e decompressione di dati multimediali.
Gestione e sicurezza
La complessità dei SoC richiede driver software per coordinare il funzionamento dei vari blocchi. Inoltre, nei dispositivi mobili, i SoC includono moduli hardware per la sicurezza, in grado di generare e proteggere chiavi di crittografia, impedendo l’accesso da parte di malware.
Utilizzo quotidiano
I SoC sono onnipresenti nei nostri dispositivi mobili: smartphone, tablet, laptop, smartwatch e altri sistemi wearable. Questi sistemi formano un vero e proprio ecosistema connesso, in cui la connettività consente uno scambio costante di informazioni tra:
- smartphone,
- smartwatch e auricolari wireless (earbuds),
- visori AR/VR, indumenti e calzature smart,
- dispositivi per il monitoraggio della salute, anche in ambito veterinario,
- sistemi per il gaming, l’automazione domestica e l’infotainment a bordo veicolo.
L’integrazione con i servizi di Intelligenza Artificiale amplia ulteriormente le possibilità d’uso, soprattutto nel campo della formazione e dell’educazione.
I Single Board Computer (SBC)
Un SBC (Single Board Computer) è un computer completo su un’unica scheda, che include:
- processore (di solito RISC),
- memoria RAM,
- memoria di massa su scheda SD,
- interfacce I/O per periferiche esterne.
Caratteristiche e limiti
Gli SBC sono progettati per operare con consumi contenuti, ma non dispongono di sistemi di raffreddamento attivi. Per questo motivo, è fondamentale monitorare la temperatura di esercizio durante l’uso prolungato.
Un altro punto di forza è la facilità di interfacciamento con componenti esterni. Al posto dei tradizionali bus di espansione, gli SBC offrono pin GPIO (General Purpose Input/Output), che permettono il collegamento diretto con sensori, attuatori e altri dispositivi embedded.
Esempi diffusi: Raspberry Pi e Arduino
Raspberry Pi
Il Raspberry Pi è un computer a tutti gli effetti, basato su SoC e dotato di:
- sistema operativo (Linux),
- porte USB, Ethernet, HDMI e Wi-Fi integrato,
- compatibilità con vari linguaggi di programmazione (Python, C/C++, ecc.).
Il progetto nasce nel 2012 dalla Raspberry Pi Foundation con finalità educative. Il software è open source, mentre l’hardware è documentato ma non completamente open source.
Arduino
Arduino, a differenza del Raspberry Pi, non è un computer completo, ma una scheda basata su microcontrollore. È priva di sistema operativo e adatta alla gestione di task semplici e in tempo reale.
Viene programmata con un linguaggio simile al C e si distingue per essere una piattaforma completamente open source, sia a livello software che hardware. Lanciato nel 2005 dall’Interaction Design Institute di Ivrea, Arduino è diventato un punto di riferimento nel campo della prototipazione rapida, della didattica e dell’elettronica amatoriale.
Lascia un commento