Istruzioni per ciclo
# Istruzioni per ciclo

Nell'architettura dei microprocessori il parametro istruzioni per ciclo (detto anche IPC o con il termine inglese Instructions Per Cycle) indica il numero di istruzioni eseguite in un ciclo di clock da un microprocessore. È l'inverso del parametro cicli per istruzione.

## Calcolo del IPC

Il numero di istruzioni eseguite da un microprocessore in un secondo dipende direttamente dalla sua efficienza nell'eseguire le istruzioni e nella sua frequenza di clock. Ogni ciclo di clock le unità funzionali del processore possono eseguire una singola operazione quindi raddoppiare la frequenza operativa dovrebbe consentire (in teoria) di raddoppiare il numero di istruzioni eseguite dal processore. Dato che la frequenza di un processore non può essere aumentata indefinitamente per aumentare le prestazioni dei processori i progettisti hanno inserito negli stessi delle strutture come le pipeline per aumentarne l'efficienza. Una pipeline ben progettata è in grado di eseguire un'istruzione ogni ciclo di clock. Per incrementare ancora le prestazioni dei processori sono state inserite all'interno dei processori più pipeline che lavorano in parallelo. Dato che i programmi generalmente non sono scritti per utilizzare più unità parallele, i processori all'interno hanno delle unità che convertono il codice sequenziale in istruzioni parallele. La conversione da codice sequenziale in codice parallelo non è una conversione semplice e la bontà di questa conversione dipende da fattori interni al processore (microarchitettura interna, reale indipendenza delle pipeline, ecc) e da fattori esterni (tipologia di set di istruzioni, presenza di vincoli all'interno dei computer, ecc). Il parametro IPC indica in sostanza il numero reale di istruzioni per ciclo di clock eseguito dal processore e quindi ne da una stima della sua efficienza interna. È da notare che IPC dipende moltissimo dalla tipologia di codice in esecuzione, alcuni programmi sono facilmente parallelizzabili mentre altri no quindi IPC viene indicato come parametro medio rispetto a una serie di programmi di test.

## Scelta dell'IPC

Durante il progetto di un processore i progettisti possono decidere di puntare su IPC elevati o su IPC bassi. Nel casi di IPC elevati il processore avrà un'elevata efficienza interna, ma questa efficienza normalmente precluderà alte frequenze di funzionamento. Esempio di questa filosofia sono i processori AMD Athlon, il PA RISC o i processori SPARC. Nel caso invece si accetti un IPC inferiore normalmente si otterranno processori con frequenza operativa più elevata come i processori Pentium 4 o DEC Alpha.

Fino a pochi anni fa le due scelte sembravano entrambe accettabili, ma negli ultimi anni problemi tecnologici hanno limitato pesantemente l'incremento di frequenza dei processori. Ad esempio, il processore Intel Pentium 4, che nelle intenzioni iniziali dei progettisti doveva raggiungere frequenze di 10 GHz per far fronte al basso valore di IPC, si è in realtà fermato a 3,8 GHz, spingendo Intel, ma anche altri produttori di microprocessori che hanno sempre puntato sull'incremento di frequenza, ad abbandonare la strada dei processori a basso IPC puntando sullo sviluppo di processori che potessero invece svolgere un alto numero di istruzioni per ciclo di clock. Uno dei primi processori di Intel che ha abbracciato questa nuova filosofia di progettazione è il Core 2 Duo.

