Arquitectura de conxunto de instrucións

[miniatura|Diagrama da arquitectura do conxunto de instrucións [RISC-V, que pode ter implementacións tanto propietarias como de código aberto.]]
En enxeñaría informática, a **arquitectura de conxunto de instrucións** (**Instruction Set Architecture** ou **ISA** en inglés), é un modelo abstracto que define en termos xerais como o software controla a unidade central de procesamento (CPU) dun ordenador ou familia de ordenadores. Un dispositivo ou programa que executa as instrucións descritas por esa ISA, como unha unidade central de procesamento (CPU), denomínase implementación desa ISA.

En xeral, unha ISA define as instrucións, os tipos de datos, os rexistros e a interface de programación para xestionar a memoria principal, como os modos de enderezo, a memoria virtual e os mecanismos de consistencia da memoria. A ISA tamén inclúe o modelo de entrada/saída da interface programable.

Unha ISA especifica o comportamento do código máquina que se executa nas súas implementacións independentemente das súas implementacións, garantindo a compatibilidade binaria. Isto permite varias implementacións dunha ISA que difiren en características como o rendemento, o tamaño físico e o custo, pero que son capaces de executar o mesmo código máquina. Así, unha máquina con menor rendemento e custos máis baixos pode ser substituída por unha con maior rendemento e custos máis altos, sen necesidade de substituír o software. Ademais, a ISA permite a evolución das microarquitecturas das súas implementacións, para garantir a compatibilidade con versións anteriores; é dicir, unha implementación máis nova e de maior rendemento dunha ISA pode executar software que se executa en xeracións anteriores de implementacións.

Se un sistema operativo (SO) mantén unha interface binaria de aplicación (*Application binary interface* ou *ABI*, en inglés) estándar e compatible para unha ISA particular, o código máquina executarase en futuras implementacións desa ISA e sistema operativo. Non obstante, se unha ISA admite a execución de varios sistemas operativos, isto non garante que o código máquina para un sistema operativo se execute noutro SO a menos que o primeiro admita a execución de código máquina creado para o segundo.

Unha ISA pódese ampliar engadindo instrucións ou outras funcionalidades, ou engadindo compatibilidade con enderezos e valores de datos máis grandes; unha implementación de ISA ampliada aínda poderá executar código máquina para versións non ampliadas da ISA. Pola contra, o código máquina que usa tales extensións só se executará en implementacións que as admitan.

O concepto de arquitectura, distinta do deseño dunha máquina específica, foi desenvolvido por Fred Brooks en IBM durante a fase de deseño de System/360:

Algunhas máquinas virtuais que admiten bytecode como ISA, como Smalltalk, a máquina virtual Java e o Common Language Runtime de Microsoft, implementan isto traducindo o bytecode das rutas de código usadas habitualmente a código máquina nativo. Ademais, estas máquinas virtuais executan rutas de código usadas con menos frecuencia por interpretación. Transmeta implementou o conxunto de instrucións x86 sobre procesadores de palabras de instrución moi longas (VLIW) deste xeito.

## Clasificación das ISA 
Unha ISA pódese clasificar de diferentes xeitos. Unha clasificación común é por *complexidade* arquitectónica. Un ordenador con conxunto de instrucións complexo (CISC) ten moitas instrucións especializadas, algunhas das cales poden usarse raramente en programas prácticos. Un ordenador con conxunto de instrucións reducido (RISC) simplifica o procesador ao implementar eficientemente só as instrucións que se usan con frecuencia nos programas, mentres que as operacións menos comúns se implementan como subrutinas, e o tempo de execución adicional do procesador resultante compénsase polo uso pouco frecuente.

Outros tipos inclúen as arquitecturas VLIW e as arquitecturas estreitamente relacionadas de palabras de instrución longas (LIW) e de computación de instrucións explicitamente paralelas (EPIC).

Investigáronse arquitecturas con aínda menos complexidade, como o computador con conxunto mínimo de instrucións (MISC) e o computador cun conxunto de instrucións único (OISC). Trátase de tipos teoricamente importantes, pero non se comercializaron.

## Notas 
## Véxase tamén 
### Outros artigos 
* Simulación

### Ligazóns externas 
* 
*