En este artículo, analizamos qué es una arquitectura de conjunto de instrucciones (ISA) y cuál es la diferencia entre una ‘ISA’ y una microarquitectura . Un ISA se define como el diseño de una computadora desde la perspectiva del programador .
Básicamente, esto significa que una ISA describe el diseño de una computadora en términos de las operaciones básicas que debe soportar. La ISA no se ocupa de los detalles específicos de implementación de una computadora. Sólo se ocupa del conjunto o colección de operaciones básicas que debe soportar la computadora. Por ejemplo, los procesadores AMD Athlon y Core 2 Duo tienen implementaciones completamente diferentes, pero admiten más o menos el mismo conjunto de operaciones básicas definidas en el conjunto de instrucciones x86.
Tratemos de entender los Objetivos de una ISA tomando el ejemplo de la MIPS ISA . MIPS es uno de los ISA más utilizados en educación debido a su simplicidad.
- La ISA define los tipos de instrucciones que admitirá el procesador.
Según el tipo de operaciones que realizan, las Instrucciones MIPS se clasifican en 3 tipos:- Instrucciones aritméticas/lógicas:
estas instrucciones realizan varias operaciones aritméticas y lógicas en uno o más operandos. - Instrucciones de transferencia de datos:
estas instrucciones son responsables de la transferencia de instrucciones de la memoria a los registros del procesador y viceversa. - Instrucciones de bifurcación y salto:
estas instrucciones son responsables de romper el flujo secuencial de instrucciones y saltar a instrucciones en varios otros lugares, esto es necesario para la implementación de funciones y declaraciones condicionales .
- Instrucciones aritméticas/lógicas:
- La ISA define la longitud máxima de cada tipo de instrucción.
Dado que el MIPS es un ISA de 32 bits, cada instrucción debe acomodarse dentro de los 32 bits.
- La ISA define el Formato de Instrucción de cada tipo de instrucción.
El formato de instrucción determina cómo se codifica toda la instrucción en 32 bits
. Hay 3 tipos de formatos de instrucción en MIPS ISA:- Formato de instrucción R
- Formato de instrucción I
- Formato de instrucción J
Si nos fijamos en la jerarquía de abstracción:
Figura: la jerarquía de abstracción
Observamos que el nivel de microarquitectura se encuentra justo debajo del nivel ISA y, por lo tanto, se ocupa de la implementación de las operaciones básicas que debe soportar la computadora según lo definido por ISA . Por lo tanto, podemos decir que los procesadores AMD Athlon y Core 2 Duo se basan en el mismo ISA pero tienen diferentes microarquitecturas con diferentes rendimientos y eficiencias.
Ahora uno puede preguntarse la necesidad de distinguir entre Microarquitectura e ISA .
La respuesta a esto radica en la necesidad de estandarizar y mantener la compatibilidad de los programas en diferentes implementaciones de hardware basadas en la misma ISA . Hacer que diferentes máquinas sean compatibles con el mismo conjunto de instrucciones básicas (ISA) permite que el mismo programa se ejecute sin problemas en muchas máquinas diferentes, lo que facilita a los programadores documentar y mantener el código para muchas máquinas diferentes de manera simultánea y eficiente.
Esta flexibilidad es la razón por la que primero definimos un ISA y luego diseñamos diferentes microarquitecturas que cumplan con este ISA para implementar la máquina. El diseño de un ISA de nivel inferior es una de las principales tareas en el estudio de la Arquitectura de Computadores.
Set de instrucciones arquitectura | Microarquitectura |
---|---|
El ISA es responsable de definir el conjunto de instrucciones que debe soportar el procesador. Por ejemplo, a continuación se proporcionan algunas de las instrucciones definidas por ARMv7 ISA. | La microarquitectura está más preocupada por la implementación de nivel inferior de cómo se ejecutarán las instrucciones y trata conceptos como canalización de instrucciones, predicción de bifurcación, ejecución fuera de orden. |
La Rama de Arquitectura de Computadores se inclina más hacia el Análisis y Diseño de Arquitectura de Conjuntos de Instrucciones. Por ejemplo, Intel desarrolló la arquitectura x86 , ARM desarrolló la arquitectura ARM y AMD desarrolló la arquitectura amd64 . El RISC-V ISA desarrollado por UC Berkeley es un ejemplo de un ISA de código abierto. | Por otro lado, la Rama de Organización de Computadores se ocupa de la implementación de un ISA en particular, se ocupa de diversas técnicas de implementación de hardware, es decir, es el nivel de Microarquitectura. Por ejemplo, ARM otorga licencias a otras compañías como Qualcomm, Apple para usar ARM ISA, pero cada una de estas compañías tiene sus propias implementaciones de este ISA, lo que las hace diferentes en rendimiento y eficiencia energética. Los núcleos Krait desarrollados por Qualcomm tienen una microarquitectura diferente y los procesadores de la serie A de Apple tienen una microarquitectura diferente. |
El x86 fue desarrollado por Intel, pero vemos que casi todos los años Intel presenta una nueva generación de procesadores de la serie i. La arquitectura x86 en la que se basan la mayoría de los procesadores Intel sigue siendo esencialmente la misma en todas estas generaciones, pero difieren en la microarquitectura subyacente. Difieren en su implementación y, por lo tanto, se afirma que han mejorado el rendimiento. Estas diversas microarquitecturas desarrolladas por Intel tienen el nombre en código ‘Nehalem’, ‘Sandybridge’, ‘Ivybridge’, etc.
Por lo tanto, en conclusión, podemos decir que diferentes máquinas pueden estar basadas en el mismo ISA pero tener diferentes Microarquitecturas.