# Cicle d'instrucció

El cicle d'instruccions (també conegut com a cicle d'obtenció-descodificació-execució, o simplement cicle d'obtenció-execució) és el cicle que la unitat central de processament (CPU) segueix des de l'arrencada fins que l'ordinador s'ha apagat per processar les instruccions. Es compon de tres etapes principals: l'etapa d'obtenció, l'etapa de descodificació i l'etapa d'execució.
En les CPU més simples, el cicle d'instruccions s'executa de manera seqüencial, cada instrucció es processa abans que s'iniciï la següent. A la majoria de les CPU modernes, els cicles d'instruccions s'executen simultàniament, i sovint en paral·lel, a través d'una canalització d'instruccions : la següent instrucció comença a processar-se abans que hagi acabat la instrucció anterior, cosa que és possible perquè el cicle es divideix en passos separats.
El comptador de programa (PC) és un registre especial que conté l'adreça de memòria de la següent instrucció a executar. Durant l'etapa d'obtenció, l'adreça emmagatzemada a l'ordinador es copia al registre d'adreces de memòria (MAR) i després s'incrementa l'ordinador per "apuntar" a l'adreça de memòria de la següent instrucció a executar. Aleshores, la CPU pren la instrucció a l'adreça de memòria descrita pel MAR i la copia al registre de dades de memòria (MDR). El MDR també actua com un registre bidireccional que conté les dades obtingudes de la memòria o les dades que esperen ser emmagatzemades a la memòria (també es coneix com a registre de memòria intermèdia (MBR) per això). Finalment, la instrucció del MDR es copia al registre d'instruccions actual (CIR) que actua com a suport temporal per a la instrucció que s'acaba d'obtenir de la memòria.
Durant l'etapa de descodificació, la unitat de control (CU) descodificarà la instrucció al CIR. Aleshores, la CU envia senyals a altres components de la CPU, com ara la unitat aritmètica lògica (ALU) i la unitat de coma flotant (FPU). L'ALU realitza operacions aritmètiques com sumes i restes i també multiplicacions mitjançant sumes repetides i divisió mitjançant restes repetides. També realitza operacions lògiques com AND, OR, NOT, i també desplaçaments binaris. La FPU està reservada per realitzar operacions de coma flotant. La CPU de cada ordinador pot tenir cicles diferents basats en diferents conjunts d'instruccions, però serà similar al cicle següent:
* Fase d'obtenció: la següent instrucció s'obté de l'adreça de memòria que està actualment emmagatzemada al comptador de programes i s'emmagatzema al registre d'instruccions. Al final de l'operació d'obtenció, l'ordinador apunta a la següent instrucció que es llegirà al cicle següent.
* Etapa de descodificació: durant aquesta etapa, la instrucció codificada presentada al registre d'instruccions és interpretada pel descodificador.
** Llegir l'adreça efectiva: En el cas d'una instrucció de memòria (directa o indirecta), la fase d'execució serà durant el següent pols de rellotge. Si la instrucció té una adreça indirecta, l'adreça efectiva es llegeix de la memòria principal, i totes les dades necessàries s'obtenen de la memòria principal per ser processades i després col·locades en registres de dades (pols de rellotge: T ₃). Si la instrucció és directa, no es fa res durant aquest pols de rellotge. Si es tracta d'una instrucció d'E/S o d'una instrucció de registre, l'operació es realitza durant el pols de rellotge.
* Etapa d'execució: la unitat de control de la CPU passa la informació descodificada com una seqüència de senyals de control a les unitats funcionals rellevants de la CPU per dur a terme les accions requerides per la instrucció, com ara llegir valors dels registres, passar-los a l'ALU perquè les realitzi. funcions matemàtiques o lògiques sobre ells i escrivint el resultat en un registre. Si l'ALU està implicat, envia un senyal de condició a la CU. El resultat generat per l'operació s'emmagatzema a la memòria principal o s'envia a un dispositiu de sortida. A partir de la retroalimentació de l'ALU, el PC es pot actualitzar a una adreça diferent de la qual s'obtindrà la següent instrucció.
* Repetir el cicle.

## Referències

* ↑ «Instruction Cycle | Computer Organization and Architecture Tutorial - javatpoint» (en anglès). https://www.javatpoint.com.+[Consulta: 21 març 2023].
* ↑ Crystal Chen, Greg Novick and Kirk Shimano. «Pipelining» (en anglès). [Consulta: 26 juny 2019].
* ↑ «Instruction cycle - CodeDocs» (en anglès). https://codedocs.org.+[Consulta: 21 març 2023].
* ↑ «Computer Organization | Different Instruction Cycles» (en anglès). https://www.geeksforgeeks.org,+29-03-2018.+[Consulta: 21 març 2023].