Misura delle prestazioni - tempo di calcolo e indici MIPS
In questa pagina 6
Un processore è veloce se esegue in poco tempo un dato programma. In un µC o in un DSP, dove di solito non c'è un sistema operativo che divide il tempo tra più processi, il tempo che il processore dedica al programma coincide con il suo tempo di calcolotempo di esecuzione del programma, indicato con . È il parametro decisivo nelle applicazioni di signal processing e di controllo real time (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 →).
Stima del tempo di calcolo
Servono tre dati:
- il periodo di clock (letto nel datasheet);
- il numero medio di cicli richiesto dalle istruzioni di ciascuna classe (anche questo nel datasheet o nel manuale);
- il numero di istruzioni di ciascuna classe che il programma contiene.
Allora La formula trascura le interruzioni del programma e i ritardi di accesso alla memoria. Il numero di istruzioni dipende dall'architetturainsieme delle risorse visibili al programmatore: repertorio delle istruzioni e modi di indirizzamento; il periodo di clock e i cicli per istruzione dipendono dall'organizzazionerealizzazione circuitale dell'architettura: bus, registri, tipo di controllo, pipeline. Una stessa architettura può avere organizzazioni molto diverse.
Tre modi di andare più veloci, con i rispettivi limiti:
- ridurre : aumenta la potenza dissipata, che si limita abbassando la tensione di alimentazione (per questo si va verso processori sotto 1 V); il limite è tecnologico;
- ridurre : serve un'organizzazione più complessa (controllo cablatounità di controllo realizzata con logica combinatoria e sequenziale dedicata, vedi la nota sull'unità di controllo anziché microprogrammato, parallelismo, pipelinecatena di stadi che lavorano su istruzioni diverse nello stesso momento), quindi un chip più costoso; il limite è economico;
- ridurre : si usano architetture con istruzioni più potenti (CISCComplex Instruction Set Computer: molte istruzioni, anche complesse invece di RISCReduced Instruction Set Computer: poche istruzioni semplici, tutte uguali nel formato), che complicano di nuovo l'organizzazione.
Le prestazioni dipendono quindi da architettura e organizzazione insieme, sotto i vincoli di costo e di consumo (Architettura del repertorio di istruzioni - RISC, CISC, VLIW e indirizzamentoL'architettura è l'insieme delle risorse visibili al programmatore (istruzioni, modi di indirizzamento). RISC: poche istruzioni semplici, di uguale lunghezza, decodifica cablata, quasi tutte a 1 ciclo; CISC: molte istruzioni complesse, decodifica microprogrammata, più cicli. I DSP sono RISC "potenziati" (MAC, saturazione, barrel shifter, arrotondamento, VLIW, SIMD); i modi di indirizzamento tipici sono immediato, a registro, diretto, indiretto, con auto-incremento, circolare e a bit rovesciati (per la FFT).Architettura del repertorio di istruzioni - RISC, CISC, VLIW e indirizzamento →).
Indici di prestazione e perché ingannano
- MIPS (Million Instructions Per Secondmilioni di istruzioni eseguite in un secondo): è il valore di picco di istruzioni eseguibili nell'unità di tempo. Ma il lavoro svolto da una istruzione cambia da CPU a CPU e dipende dal compilatore, quindi l'indice confronta al più dispositivi con la stessa architettura.
- DMIPS: MIPS misurati su un programma di prova specifico, il benchmark Dhrystoneprogramma di prova sintetico del 1984, nato per confrontare processori generici (del 1984), talvolta normalizzati alla frequenza di clock (DMIPS/MHz). Significatività bassa.
- FLOPS: operazioni a virgola mobilesomme e prodotti tra numeri in notazione scientifica, vedi la nota sulla virgola mobile al secondo (valore di picco); ha senso solo per processori con aritmetica a virgola mobile.
Nessuno considera aspetti essenziali come la velocità degli accessi in memoria. Si usa allora il benchmarkingmisura del tempo di esecuzione su programmi campione, uguali per tutti i dispositivi confrontati: si misura il tempo su programmi campione. Per i processori generici si usano applicazioni complete (metodo SPECinsieme di applicazioni complete usato per confrontare processori per uso generico), ma per i DSP questo valuterebbe l'insieme compilatore-processore: si fa kernel benchmarkingmisura di soli nuclei di calcolo, come la FFT o un filtro, senza includere il compilatore, cioè si misurano algoritmi tipici del signal processing (FFT, filtri FIR e IIR). Un buon benchmark per DSP deve essere rilevante per le applicazioni, definibile in modo univoco, semplice e rapidamente ottimizzabile. Per i processori ARM il benchmark CoreMarktest sintetico per i microcontrollori con algoritmi di ricerca, ordinamento, matrici e CRC (ricerca e ordinamento, matrici, stringhe, CRC) sta sostituendo Dhrystone.
Esempio 1: MIPS contro tempo di calcolo
Un processore ha tre classi di istruzioni con cicli. Due compilatori producono due codici con (in centinaia) e istruzioni per classe.
- .
- .
Il secondo codice è il 50% più lento. Ma i MIPS sono per il primo e per il secondo: l'indice dice che il secondo è "più veloce". Conclusione: a parità di processore l'indice MIPS può premiare il codice peggiore.
Esempio 2: due datasheet
Un costruttore dichiara 30 MIPS con MHz (circa 0,75 istruzioni per periodo, quindi un'istruzione per ciclo con qualche perdita). Un altro dichiara 8000 MIPS ma con MHz: sono "MIPS di picco" ottenuti con più unità in parallelo. Un terzo usa i DMIPS/MHz. I tre numeri non si possono mettere in fila.
Esempio 3: numeri
Con MHz ( ns) e un mix 60% istruzioni da 1 ciclo, 30% da 2 cicli, 10% da 3 cicli, i cicli medi sono . Un programma di istruzioni dura ns ms.
Errori comuni
- Confrontare due processori di famiglie diverse dai MIPS del datasheet.
- Dimenticare che vale solo se il programma non viene interrotto e se la memoria è abbastanza veloce.
- Ridurre il numero di istruzioni senza considerare che le istruzioni "più potenti" richiedono più cicli.
Versione ripasso
- Tempo di calcolo: (classi di istruzioni, cicli medi per classe).
- Tre leve: (potenza dissipata, tecnologia), (organizzazione, costo), (architettura RISC/CISC).
- MIPS, DMIPS, FLOPS: valori di picco, non confrontabili tra famiglie; un codice più lento può avere MIPS maggiori (esempio 1000 contro 1500 , MIPS contro ).
- Benchmarking: SPEC per i processori generici; kernel benchmarking (FFT, FIR, IIR) per i DSP; CoreMark sostituisce Dhrystone.
- Errori: confrontare famiglie diverse, ignorare memoria e interruzioni, confondere architettura e organizzazione (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 →).