Salta al contenuto
Note per Studenti Organizzazione del processore - Von Neumann, Harvard, bus, ALU e registri

Organizzazione del processore - Von Neumann, Harvard, bus, ALU e registri

In questa pagina 5

Tutti i microprocessori, compresi µC e DSP (Microcontrollori e DSP - definizioni e scelta del dispositivoUn microcontrollore (µC) è un microprocessore con memoria e periferiche (ADC, timer, PWM, porte seriali) sullo stesso chip, pensato per il controllo; un DSP è un processore ottimizzato per l'elaborazione numerica del segnale in tempo reale (moltiplicatore e istruzione MAC, accessi multipli alla memoria, indirizzamento circolare, DMA). Oggi le due famiglie si sovrappongono (DSC). La scelta del dispositivo si fa su costo, prestazioni, periferiche e tempo di sviluppo (time to market), non sulla sola frequenza di clock.Microcontrollori e DSP - definizioni e scelta del dispositivo →), hanno tre elementi di base: l'ALU (unità aritmetico-logica con il suo controllo), la memoria e i dispositivi di I/O. Nei µC e nei DSP ciascuno di questi elementi ha caratteristiche speciali, dettate da costo e prestazioni richieste, rispetto ai processori per uso generico (GPP).

Due filosofie: Von Neumann e Harvard

Nell'organizzazione Von Neumann c'è una sola memoriail sistema che conserva dati e programma per dati e istruzioni, un bus datiinsieme di N linee che portano alla CPU operandi e istruzioni a NN bitcifra binaria e un bus indirizziinsieme di M linee con cui la CPU dice alla memoria quale locazione leggere o scrivere a MM bit. È semplice e quindi economica: la usavano i processori generici e oggi i µC di costo più basso (per esempio Intel 80C196, o i µC con core ARM7famiglia di core ARM a 32 bit con organizzazione Von Neumann, che hanno una SRAM di circa 16 kbyte e una FLASH di circa 256 kbyte viste come una memoria logica unica).

Nell'organizzazione Harvard dati e istruzioni stanno in memorie separate, con due o più sistemi di bus. Permette più accessi simultanei alla memoria nello stesso ciclo di clock e riduce il tempo di un programma. Esempio, il calcolo y=c⋅xy=c\cdot x: in un'organizzazione Von Neumann il numero di accessi in memoria può arrivare a 4 (prelievo dell'istruzione, lettura di cc, lettura di xx, scrittura di yy, tutti sullo stesso bus); in una Harvard bastano 2 cicli perché istruzione e dato viaggiano su bus diversi. L'organizzazione Harvard è tipica dei DSP/DSC (Freescale 56F8xxx, Analog Devices serie 21xxx con 4 bus dati e 4 bus indirizzi), dei PIC (bus dati a 8 bit, bus istruzioni a 16) e dei nuovi ARM Cortex-Mfamiglia di core ARM con organizzazione Harvard e molti bus (molti bus separati, standard AMBA). I DSP più recenti usano organizzazioni dette Harvard modificate, con parallelismopresenza di più unità funzionali che lavorano contemporaneamente: alcune unità funzionali (per esempio l'ALU) sono duplicate per eseguire più azioni insieme.

I bus e le porte tri-state

All'interno del processore i bus collegano le unità funzionali. Sono fatti di linee (i "bit") che possono assumere due livelli logici. Il pilotaggio è affidato a porte con uscita tri-stateporta con tre stati di uscita: livello alto, livello basso e alta impedenza, cioè uscita scollegata: quando l'unità ha finito di trasmettere o ricevere si abilita l'alta impedenza e l'unità si disconnette dal bus, così più unità possono condividere gli stessi fili senza cortocircuitarsi. Nella porta tri-state CMOS un segnale Enable (attivo basso) abilita il buffer. Un µC o DSP ha in genere bus per dati e istruzioni distinti dal bus indirizzi, talvolta bus per le interruzioni o interni a una unità; il numero di linee dei vari bus può essere diverso.

Caratteristiche di una CPU

Gli elementi che qualificano la CPU di un µC o DSP sono la frequenza di clock, l'organizzazione hardware (numero di bit, risorse disponibili) e l'architettura (insieme di istruzioni). I datasheet li mettono in primo piano, talvolta in modo poco obiettivo. La frequenza di clocknumero di cicli del clock al secondo, cioè la cadenza del processore dei µC è bassa (alcune decine di MHz, fino a poche centinaia nei più recenti): molto meno dei processori per PC, perché costo e consumo non permettono di spingersi oltre.

Nella CPU si ritrovano gli stessi componenti dei processori generici: una o più ALU, vari registri (PC, IR, MBR, MAR, registro di stato), circuiti di controllo. Ma le soluzioni sono sempre compromessiscelte che bilanciano esigenze incompatibili, come velocità, costo e consumo tra velocità, consumo e costo.

ALU e registri

L'ALU esegue le operazioni aritmetiche (somma, differenza, spesso prodotto) e logiche (AND, OR) e lo scorrimento dei dati (ALU - sommatore, overflow, carry look-ahead e shiftL'ALU è un insieme di celle a 1 bit (full adder + selettori) collegate in parallelo: somma, sottrae ($A-B=A+\overline B+1$: si inverte $B$ e si porta il riporto iniziale a 1), fa AND/OR. Il ritardo è dominato dal riporto: nel ripple-carry cresce linearmente con i bit; col carry look-aheadtecnica che calcola in anticipo i riporti da generazione e propagazione, riducendo il ritardo i riporti si calcolano da generazione $g_i=A_iB_i$ e propagazione $p_i=A_i+B_i$ in pochi livelli di logica. L'overflow è $V=C_{in,n-1}\oplus C_{out,n-1}$. Gli shift logici inseriscono 0, gli aritmetici estendono il segno; il barrel shiftercircuito che sposta una parola di un numero qualsiasi di posizioni in un solo ciclo sposta di $m$ posti in un ciclo.ALU - sommatore, overflow, carry look-ahead e shift →). Nei µC l'ALU opera su 4, 8, 16, 32 bit; nei DSP su 16, 32 o più (fino a 256 per applicazioni speciali). Un moltiplicatore hardware a ciclo singolo è ormai comune anche nei µC.

I dati elaborati stanno in registri. Due organizzazioni:

  • ALU con accumulatore: un solo registro di lavoro, le istruzioni sono del tipo ADD X (somma all'accumulatore il contenuto della locazione XX). È economica (µC come ST6, PIC). Gli operandi vengono dal MBRMemory Buffer Register: registro che contiene il dato appena letto dalla memoria o da scrivere e dall'accumulatore; uno dei due è sovrascritto dal risultato.
  • ALU con molti registri: istruzioni a più operandi, per esempio ADD X, Y, Z (somma XX e YY e deposita in ZZ), più veloci. Tipica dei µC ad alte prestazioni e dei DSP.

Un registro a mm bit si ottiene con mm flip-flop di tipo D con uscite bufferizzate per il bus. Oltre ai dati i registri della CPU ospitano: il program counterPC: registro con l'indirizzo della prossima istruzione da eseguire, il MARMemory Address Register: registro che contiene l'indirizzo della locazione di memoria da leggere o scrivere, l'IRInstruction Register: registro che contiene l'istruzione in esecuzione, il registro di stato (flag di overflow, zero, carry), i registri di gestione delle interruzioni e quelli di configurazione delle periferiche.

Metodi di controllo

Il controllo può essere a logica cablata, che traduce direttamente il codice operativo (OPCODE) nella sequenza di segnali necessari (decoder, sequencer, gate array), oppure microprogrammato, dove ogni istruzione è eseguita da un microprogramma contenuto in una ROM interna. Il cablato è veloce e ottimizzato ma poco flessibile (correggere un errore costa molto); il microprogrammato è flessibile e facile da correggere ma occupa area (costo) ed è lento. Oggi si usa il cablato; il microprogrammato resta nei vecchi processori CISC (Renesas H8S, Intel 8XC196). Dettagli in Unità di controllo - cablata, microprogrammata, singolo ciclo e multicicloL'unità di controllo preleva (fetch), decodifica ed esegue le istruzioni generando i segnali che attivano registri, ALU e memoria. Può essere cablata (logica dedicata, veloce, poco flessibile, oggi la norma) o microprogrammata (una piccola CPU con ROM di microcodice: flessibile ma lenta e grande). Con un solo bus le operazioni vanno distribuite su più segmenti di clock (multiciclo: il clock è dettato dall'unità più lenta); con memorie e ALU separate si può fare singolo ciclo (il clock è dettato dall'istruzione più lenta). Il tempo medio per istruzione dipende dal mix di istruzioni: $NC=\sum f_i,NC_i$.Unità di controllo - cablata, microprogrammata, singolo ciclo e multiciclo →.

Memoria e I/O

La memoria è sempre organizzata in modo gerarchico: la più veloce è nel processore (registri, banchi di registri, cache), poi la RAM interna al chip, infine eventuale memoria esterna (Memorie - gerarchia, SRAM, DRAM, ROM e FLASHNei µC e DSP si usa solo memoria a stato solido ad accesso immediato, interna (on chip) o esterna. Parametri: dimensione, velocità (tempo di accesso, latenza, banda), consumo, integrazione. La memoria è gerarchica (registri → cache → SRAM interna → esterna) grazie alla localitàtendenza dei programmi a riusare gli stessi dati e a usare dati vicini in memoria spaziale e temporale. Tipi: SRAM (veloce, 4-6 transistori per cella, volatile, nessun refresh), DRAM (carica in un MOS, serve il refresh, più densa e a minor consumo), ROM/OTP/EPROM/EEPROM e FLASH (gate flottante: scrittura per elettroni caldi, cancellazione per effetto tunnel, solo per blocchi, $>10^5$ cicli). Una "RAM" è qualunque memoria con tempo di accesso indipendente dalla posizione.Memorie - gerarchia, SRAM, DRAM, ROM e FLASH →). Nei chip prodotti in grandi volumi la memoria interna è spesso ROM o OTP (programmabile una volta) per abbattere i costi.

Le periferiche di I/O sono fondamentali: la principale area di impiego dei µC è la gestione di interfacce uomo-macchina (HMI) e di sensori e trasduttori. Quasi tutti hanno pin di I/O configurabili, unità di trasmissione seriale sincrona e asincrona, almeno un convertitore A/D e talvolta D/A, timer e PWM (Sottosistema di I-O - polling, interruzioni e DMALe periferiche si collegano al bus con una interfaccia che ha registri di dati (DREG), controllo (CREG) e stato (SREG); nei µC e DSP sono mappati in memoria (si leggono e scrivono come locazioni). Poiché le periferiche sono asincrone e lente, la sincronizzazione avviene per polling (inefficiente), per interruzioni (la più usata) o per DMA (costoso, per grandi quantità di dati). Una interruzione: completa l'istruzione, salva il contesto (PC e registro di stato, spesso altro), esegue la ISR, ripristina. Le sorgenti si distinguono con ISR di stato, interruzioni vettorizzate o daisy-chaincollegamento delle periferiche in catena, in cui il segnale di riconoscimento passa dall'una all'altra; le NMI non sono mascherabili.Sottosistema di I-O - polling, interruzioni e DMA →).

Errori comuni

Versione ripasso

Teoria collegata