# Arquitectura del conjunt d'instruccions

En informàtica, una arquitectura del conjunt d'instruccions (ISA), també anomenada arquitectura d'ordinador, és un model abstracte d'ordinador. Un dispositiu que executa instruccions descrites per aquest ISA, com ara una unitat de processament central (CPU), s'anomena implementació.
En general, un ISA defineix les instruccions suportades, els tipus de dades, els registres, el suport de maquinari per gestionar la memòria principal, les característiques fonamentals (com ara la consistència de la memòria, els modes d'adreçament, la memòria virtual) i el model d'entrada/sortida d'una família d'implementacions. de l'ISA.
Un ISA especifica el comportament del codi màquina que s'executa a les implementacions d'aquest ISA d'una manera que no depèn de les característiques d'aquesta implementació, proporcionant compatibilitat binària entre implementacions. Això permet implementar múltiples implementacions d'una ISA que difereixen en característiques com ara el rendiment, la mida física i el cost monetari (entre altres coses), però que són capaços d'executar el mateix codi de màquina, de manera que una màquina de baix rendiment i menor cost pot ser substituït per una màquina de major cost i rendiment sense haver de substituir el programari. També permet l'evolució de les microarquitectures de les implementacions d'aquest ISA, de manera que una implementació més nova i de major rendiment d'una ISA pugui executar programari que s'executi amb generacions anteriors d'implementacions.
Si un sistema operatiu manté una interfície binària d'aplicació (ABI) estàndard i compatible per a un ISA concret, el codi màquina s'executarà en futures implementacions d'aquest ISA i sistema operatiu. Tanmateix, si un ISA admet l'execució de diversos sistemes operatius, no garanteix que el codi de màquina d'un sistema operatiu s'executi en un altre sistema operatiu, tret que el primer sistema operatiu admeti l'execució de codi de màquina creat per a l'altre sistema operatiu.
Un ISA es pot ampliar afegint instruccions o altres capacitats, o afegint suport per a adreces i valors de dades més grans; una implementació de l'ISA estès encara podrà executar codi màquina per a versions de l'ISA sense aquestes extensions. El codi màquina que utilitza aquestes extensions només s'executarà a les implementacions que admeten aquestes extensions.

## Classificació de les ISA

Una ISA es pot classificar de diverses maneres diferents. Una classificació comuna és per complexitat arquitectònica. Un ordinador de conjunt d'instruccions complexes (CISC) té moltes instruccions especialitzades, algunes de les quals només s'utilitzen poques vegades en programes pràctics. Un ordinador de conjunt d'instruccions reduïdes (RISC) simplifica el processador implementant de manera eficient només les instruccions que s'utilitzen freqüentment als programes, mentre que les operacions menys comunes s'implementen com a subrutines, amb la compensació del temps d'execució del processador addicional resultant per un ús poc freqüent.
Altres tipus inclouen arquitectures de paraules d'instrucció molt llarga (VLIW) i les long instruction word (LIW) i les relacionades arquitectures de computació d'instruccions paral·leles (EPIC) explícites. Aquestes arquitectures pretenen explotar el paral·lelisme a nivell d'instrucció amb menys maquinari que RISC i CISC fent que el compilador sigui responsable del problema i la programació de les instruccions.

## Instruccions

El llenguatge màquina es construeix a partir de declaracions o instruccions discretes. A l'arquitectura de processament, una instrucció determinada pot especificar:
* opcode (la instrucció que s'ha de realitzar) per exemple, afegir, copiar, provar
* qualsevol operand explícit:
** registres
** valors literals/constants
** modes d'adreçament utilitzats per accedir a la memòria
Les operacions més complexes es construeixen combinant aquestes instruccions simples, que s'executen de manera seqüencial, o segons ho indiquin les instruccions de flux de control.

## Tipus d'instruccions

Alguns exemples d'operacions comunes a molts conjunts d'instruccions inclouen:
* Manipulació de dades i operacions de memòria
* Operacions aritmètiques i lògiques
* Operacions de control de flux
* Instruccions del coprocessador
* Instruccions complexesUna instrucció pot tenir diversos camps, que identifiquen l'operació lògica, i també poden incloure adreces d'origen i destinació i valors constants. Aquesta és la instrucció MIPS "Afegeix immediatament", que permet la selecció de registres d'origen i de destinació i la inclusió d'una petita constant.

## Codificació d'instruccions

A les arquitectures tradicionals, una instrucció inclou un codi d'operació que especifica l'operació a realitzar, com ara afegir contingut de memòria al registre, i zero o més especificadors d'operands, que poden especificar registres, ubicacions de memòria o dades literals. Els especificadors d'operands poden tenir modes d'adreçament que determinen el seu significat o poden estar en camps fixos. En les arquitectures de paraules d'instrucció molt llargues (VLIW), que inclouen moltes arquitectures de microcodi, s'especifiquen múltiples operands i operands simultanis en una única instrucció.

## Referències

* ↑ «Computer Architecture: Instruction Set Architecture Cheatsheet» (en anglès). https://www.codecademy.com.+[Consulta: 31 agost 2023].
* ↑ «Instruction Set Architecture – Computer Architecture» (en anglès). https://www.cs.umd.edu.+[Consulta: 31 agost 2023].
* ↑ Crystal Chen. «RISC Architecture: RISC vs. CISC» (en anglès). cs.stanford.edu, 16-12-2006. Arxivat de l'original el de febrer 21, 2015. [Consulta: 21 febrer 2015].
* ↑ Schlansker, Michael S.; Rau, B. Ramakrishna "EPIC: Explicitly Parallel Instruction Computing", 33, 2, 2-2000. DOI: 10.1109/2.820037.