# MIPS (unità di misura)

Il MIPS (Acronimo di Million Instructions Per Second, milioni di istruzioni per secondo), in informatica, è un'unità di misura della frequenza di esecuzione delle istruzioni effettuata da un microprocessore.

## Descrizione

Le istruzioni a cui si fa riferimento sono quelle assembly del processore in esame. Tali istruzioni sono in genere molto semplici, ad esempio una singola somma o un singolo test per decidere se una condizione logica è vera o è falsa. Un normale programma per computer è composto da migliaia o milioni di queste istruzioni, normalmente generate in modo automatico da un compilatore che traduce il codice sorgente in linguaggio macchina. Il numero di istruzioni che il processore riesce ad eseguire in un secondo, espresso in milioni, è il suo MIPS.
Le misure di MIPS non sono né affidabili sul singolo processore, né utilizzabili per confrontare processori diversi.
Nel primo caso, ogni programma contiene una diversa proporzione di istruzioni di diverso tipo, ognuna delle quali può essere più o meno lunga da eseguire. Non è insolito che il MIPS di un processore cambi anche di un fattore 10 a seconda di quale programma stia eseguendo.
Per questo motivo alcuni produttori usano i MOPS (Million Operations Per Second) per indicare la reale capacità di eseguire una reale operazione e non solo un'istruzione. In pratica anche questa unità di misura non è significativa delle reali prestazioni del processore a causa delle piccole furbizie usate dai produttori stessi.
Nel secondo caso, processori diversi hanno istruzioni diverse che rendono privo di significato un confronto: un processore potrebbe avere un'istruzione complessa ma lenta, mentre in un altro lo stesso lavoro potrebbe essere svolto da 20 istruzioni più semplici e veloci. Il tempo totale può essere all'incirca lo stesso, mentre il valore di MIPS è, in questo esempio, diverso di 20 volte. Il valore espresso in MIPS può essere valido nel caso, piuttosto insolito, che un processore abbia istruzioni che impiegano tutte lo stesso tempo per essere eseguite.
Nonostante questi problemi, ogni tanto si incontra una misura di velocità in MIPS generalmente riferita al benchmark Dhrystone (DMIPS); i comuni processori impiegati nei personal computer hanno MIPS che oscillano tra qualche migliaio dei più vecchi processori a singolo core fino a centinaia di migliaia dei più recenti octacore: un Pentium 4 a 3,2 GHz raggiunge a titolo di esempio circa 10.000 MIPS mentre l'Intel Core i7 Extreme Edition 5960x che ha una frequenza per core leggermente maggiore raggiunge circa 300.000 MIPS.
${\text{MIPS}}={\frac {\text{Ni}}{{\text{CPUtime}}\times 10^{6}}}$
Dove Ni è il numero di istruzioni eseguite dal microprocessore in un arco di tempo o su un programma, CPUtime è il tempo in secondi per eseguire le Ni istruzioni, 10^6 esprime il risultato in milioni di istruzioni.
Come si vede MIPS è un sistema di misura molto approssimato, poiché ogni singola istruzione eseguita su un programma dal microprocessore richiede diversi cicli di clock, quindi tempo diverso. Il sistema MIPS perde questo fattore poiché fa riferimento al tempo globale di esecuzione del programma e non al tempo di esecuzione della singola istruzione.