La lunghezza dell'istruzione può influire sul CPI, ma di solito solo indirettamente.
In generale, una CPU moderna avrà percorsi dalla memoria alla cache e dalla cache alla ALU che gli consentiranno di recuperare un'intera istruzione alla volta, indipendentemente dalla lunghezza 1 .
In quanto tale, è abbastanza insolito per le dimensioni dell'istruzione direttamente . Allo stesso tempo, una CPU non ha mai spazio di cache illimitato. Un'istruzione più grande occupa più spazio nella cache, limitando il numero di istruzioni che possono essere contenute nella cache. Ciò, a sua volta, porta a una maggiore probabilità di errori di cache, nel qual caso la CPU può finire per attendere la memoria principale.
Se CPI è sempre variabile: sì, almeno quasi sempre. In particolare, le dipendenze delle risorse tra le istruzioni possono limitare la quantità che può essere eseguita in un dato ciclo. Considerare un'attività completamente serializzata, in cui ogni fase dell'attività dipende dal passaggio precedente.
In tal caso, è praticamente impossibile eseguire più di una istruzione per clock (a meno di ristrutturare il problema, che è generalmente al di là di quanto tenterà qualsiasi CPU).
Allo stesso tempo, una CPU moderna e ad alte prestazioni avrà quasi sempre almeno la capacità di eseguire più di una istruzione per ciclo se non ci sono dipendenze tra di loro. In quanto tale, qualcosa come:
OR r0, r1, r2
OR r3, r4, r5
... può normalmente essere eseguito in parallelo, se il processore ha risorse disponibili per farlo. Abbiamo bisogno di sapere di più sulle istruzioni precedenti prima di poter dire quanto ci vorrà per eseguire tali istruzioni. Con istruzioni più complesse che implicano l'accesso a dati che potrebbero (o potrebbero non essere) in una cache, ecc., L'immagine diventa ancora più complessa.
- Anche se questo non è sempre garantito. Ad esempio, un x86 supporta istruzioni con un massimo di 16 byte di prefissi (più l'istruzione stessa), quindi, sebbene in pratica sia raro, una singola istruzione può essere troppo grande per essere trasferita in un singolo ciclo, almeno su un determinato hardware. Anche in questo caso, una grande istruzione non riduce necessariamente il CPI: con una cache di trace, ciò che viene memorizzato non è l'istruzione raw.