# Cicles per instrucció

A l'arquitectura d'ordinadors, els cicles per instrucció (també conegut com cicles de rellotge per instrucció, rellotges per instrucció o CPI) són un aspecte del rendiment d'un processador: el nombre mitjà de cicles de rellotge per instrucció per a un programa o fragment de programa. És l'invers multiplicatiu d'instruccions per cicle.

## Definició

La mitjana de cicles per instrucció en un procés determinat (CPI ) es defineix per la mitjana ponderada següent:
$\mathrm {CPI} :={\frac {\Sigma _{i}(\mathrm {IC} _{i})(\mathrm {CC} _{i})}{\mathrm {IC} }}={\frac {\Sigma _{i}(\mathrm {IC} _{i}\cdot \mathrm {CC} _{i})}{\Sigma _{i}(\mathrm {IC} _{i})}}$
On $\mathrm {IC} _{i}$ és el nombre d'instruccions per a un tipus d'instrucció determinat $i$, $\mathrm {CC} _{i}$ són els cicles de rellotge per a aquest tipus d'instrucció i $\mathrm {IC} =\Sigma _{i}(\mathrm {IC} _{i})$ és el nombre total d'instruccions. La suma suma de tots els tipus d'instruccions per a un procés de benchmarking determinat.

## Explicació

Suposem un pipeline RISC clàssic, amb les cinc etapes següents:
* Cicle d'obtenció d'instruccions (IF).
* Instrucció descodificar/Registrar el cicle de recuperació (ID).
* Cicle d'execució/adreça efectiva (EX).
* Accés a la memòria (MEM).
* Cicle de reescriptura (WB).
Cada etapa requereix un cicle de rellotge i una instrucció passa per les etapes de manera seqüencial. Sense canalització, en un processador multicicle, una instrucció nova s'obté a l'etapa 1 només després que la instrucció anterior finalitzi a l'etapa 5, per tant, el nombre de cicles de rellotge que es necessita per executar una instrucció és de cinc (CPI = 5 > 1). En aquest cas, es diu que el processador és subescalar. Amb la canalització, s'obté una instrucció nova cada cicle de rellotge aprofitant el paral·lelisme a nivell d'instrucció, per tant, com que teòricament es podrien tenir cinc instruccions en les cinc etapes de la canalització alhora (una instrucció per etapa), una instrucció diferent completaria l'etapa 5 a cada etapa. cicle de rellotge i, de mitjana, el nombre de cicles de rellotge necessaris per executar una instrucció és 1 (CPI = 1). En aquest cas, es diu que el processador és escalar.
Amb un processador d'una sola unitat d'execució, el millor CPI possible és 1. Tanmateix, amb un processador d'unitats d'execució múltiple, es poden aconseguir valors de CPI encara millors (CPI < 1). En aquest cas, es diu que el processador és superescalar. Per obtenir millors valors de CPI sense canalització, el nombre d'unitats d'execució ha de ser superior al nombre d'etapes. Per exemple, amb sis unitats d'execució, sis instruccions noves s'obtenen a l'etapa 1 només després que les sis instruccions anteriors acabin a l'etapa 5, per tant, de mitjana, el nombre de cicles de rellotge necessaris per executar una instrucció és de 5/6 (CPI = 5/). 6 < 1). Per obtenir millors valors d'IPC amb la canalització, hi ha d'haver almenys dues unitats d'execució. Per exemple, amb dues unitats d'execució, s'obtenen dues instruccions noves a cada cicle de rellotge mitjançant l'explotació del paral·lelisme a nivell d'instrucció; per tant, dues instruccions diferents completarien l'etapa 5 en cada cicle de rellotge i, de mitjana, el nombre de cicles de rellotge que es necessita per executar una instrucció és 1/2 (IPC = 1/2 < 1).

## Referències

* ↑ Patterson, David A. Computer Organization and Design: The Hardware/Software Interface (en anglès), 1994. ISBN 9781558602816.
* ↑ «Calculating the total clock cycles per instruction in a CPU» (en anglès). [Consulta: 26 novembre 2023].
* ↑ «[http://meseec.ce.rit.edu/eecc550-winter2011/550-12-6-2011.pdf CPU Performance Evaluation: Cycles Per Instruction (CPI)Cycles Per Instruction (CPI)]» (en anglès). [Consulta: 26 novembre 2023].
* ↑ «Cycles Per Instruction - an overview | ScienceDirect Topics» (en anglès). [Consulta: 26 novembre 2023].