Articulo de referencia

Comparación de arquitecturas de conjuntos de instrucciones

Una arquitectura de conjunto de instrucciones ( ISA ) es un modelo abstracto de una computadora , también conocida como arquitectura de computadora . Una realización de una ISA ...

Una arquitectura de conjunto de instrucciones ( ISA ) es un modelo abstracto de una computadora , también conocida como arquitectura de computadora . Una realización de una ISA se llama implementación . Una ISA permite múltiples implementaciones que pueden variar en rendimiento , tamaño físico y costo monetario (entre otras cosas); dado que la ISA sirve como interfaz entre software y hardware , el software escrito o compilado para una ISA puede ejecutarse en diferentes implementaciones de la misma ISA. Esto ha facilitado la compatibilidad binaria entre diferentes generaciones de computadoras y el desarrollo de familias de computadoras. Ambos avances han contribuido a reducir el costo de las computadoras y a aumentar su aplicabilidad. Por estas razones, la ISA es una de las abstracciones más importantes en la informática actual.

Un conjunto de instrucciones (ISA) define todo lo que un programador de lenguaje máquina necesita saber para programar una computadora. Lo que define un ISA varía entre los distintos ISA; en general, los ISA definen los tipos de datos admitidos , el estado existente (como la memoria principal y los registros ) y su semántica (como la consistencia de la memoria y los modos de direccionamiento ), el conjunto de instrucciones (el conjunto de instrucciones de máquina que componen el lenguaje máquina de una computadora) y el modelo de entrada/salida .

Representación de datos

En las primeras décadas de la informática, había computadoras que usaban binario , decimal [ 1 ] e incluso ternario . [ 2 ] [ 3 ] Las computadoras contemporáneas son casi exclusivamente binarias.

Los caracteres se codifican como cadenas de bits o dígitos, utilizando una amplia variedad de conjuntos de caracteres; incluso dentro de un mismo fabricante existían diferencias en los conjuntos de caracteres.

Los números enteros se codifican con una variedad de representaciones , que incluyen signo-magnitud , complemento a uno , complemento a dos , binario desplazado , complemento a nueve y complemento a diez .

De manera similar, los números de coma flotante se codifican con diversas representaciones para el signo, el exponente y la mantisa . En las máquinas actuales, los formatos de coma flotante hexadecimal de IBM e IEEE 754 han reemplazado en gran medida a los formatos más antiguos.

Las direcciones suelen ser números enteros sin signo generados a partir de una combinación de campos en una instrucción, datos de registros y datos de almacenamiento; los detalles varían según la arquitectura.

Bits

Las arquitecturas de computadoras se describen a menudo como arquitecturas de n bits . En los primeros tres cuartos del siglo XX, n solía ser 12 , 18 , 24 , 30, 36 , 48 o 60. En el último tercio del siglo XX, n solía ser 8, 16 o 32, y en el siglo XXI, n suele ser 16, 32 o 64, aunque se han utilizado otros tamaños (incluidos 6, 39 y 128 ). En realidad, esto es una simplificación, ya que la arquitectura de computadoras suele tener algunos tamaños de datos más o menos "naturales" en el conjunto de instrucciones , pero la implementación de hardware de estos puede ser muy diferente. Muchas arquitecturas de conjuntos de instrucciones tienen instrucciones que, en algunas implementaciones de esa arquitectura, operan en la mitad o el doble del tamaño de las rutas de datos internas principales del procesador. Ejemplos de esto son el Z80 , el MC68000 y el IBM System/360 . En este tipo de implementaciones, una operación dos veces más ancha suele requerir también el doble de ciclos de reloj (lo cual no ocurre en implementaciones de alto rendimiento). En el 68000, por ejemplo, esto significa 8 ciclos de reloj en lugar de 4, y este chip en particular puede describirse como una arquitectura de 32 bits con una implementación de 16 bits . La arquitectura del conjunto de instrucciones del IBM System/360 es de 32 bits, pero varios modelos de la serie System/360, como el IBM System/360 Modelo 30 , tienen rutas de datos internas más pequeñas, mientras que otros, como el 360/195 , tienen rutas de datos internas más grandes.

El ancho del bus de datos externo no se utiliza para determinar el ancho de la arquitectura; los chips NS32008, NS32016 y NS32032 eran básicamente el mismo chip de 32 bits con diferentes buses de datos externos. El PowerPC 604 de IBM tiene un bus de 64 bits, pero solo registros de 32 bits. Los procesadores System/360 y algunos microprocesadores de 32 bits de la época, como el Motorola 68000 , tienen direcciones de 24 bits.

El ancho de bits de las instrucciones en una arquitectura no es necesariamente el ancho de bits de la arquitectura en sí. Por ejemplo, las instrucciones en System/360, la arquitectura PDP-11 , la arquitectura VAX y la arquitectura x86 son de longitud variable. Las versiones iniciales de SuperH tenían instrucciones de 16 bits de longitud fija a pesar de tener una arquitectura de 32 bits, mientras que las versiones posteriores tenían instrucciones tanto de 16 como de 32 bits.

dígitos

En los primeros tres cuartos del siglo XX, las computadoras decimales orientadas a palabras normalmente tenían palabras de 10 dígitos [ 4 ] [ 5 ] [ 6 ] con un signo separado, [ a ] ​​usando los diez dígitos en enteros y usando dos dígitos para exponentes [ 7 ] [ 5 ] en números de punto flotante.

Endianidad

Una arquitectura puede usar el orden de bytes "big-endian" o "little-endian", o ambos, o ser configurable para usar cualquiera de ellos. Los procesadores little-endian ordenan los bytes en la memoria con el byte menos significativo de un valor multibyte en la ubicación de memoria de menor número. Las arquitecturas big-endian, en cambio, organizan los bytes con el byte más significativo en la dirección de memoria de menor número. La arquitectura x86, así como varias arquitecturas de 8 bits, son little-endian. La mayoría de las arquitecturas RISC (SPARC, Power, PowerPC, MIPS) eran originalmente big-endian (ARM era little-endian), pero muchas (incluida ARM) ahora son configurables para usar cualquiera de los dos.

El orden de bytes solo se aplica a los procesadores que permiten el direccionamiento individual de unidades de datos (como bytes ) que son más pequeñas que algunos de los formatos de datos.

Formatos de instrucciones

Códigos de operación

En algunas arquitecturas, una instrucción tiene un único código de operación (opcode). En otras, algunas instrucciones tienen un código de operación y uno o más modificadores. Por ejemplo, en el IBM System/370 , el byte 0 es el código de operación, pero cuando el byte 0 es B2 16 , el byte 1 selecciona una instrucción específica; por ejemplo, B205 16 es almacenar el reloj (STCK). En algunas arquitecturas de conjuntos de instrucciones, se utilizan uno o más prefijos de código de operación para modificar el código de operación subsiguiente o ampliar el número de códigos de operación.

operandos

Modos de direccionamiento

Las arquitecturas suelen permitir que las instrucciones incluyan alguna combinación de modos de direccionamiento de operandos :

Directo
La instrucción especifica una dirección completa
Inmediato
La instrucción especifica un valor en lugar de una dirección.
Indexado
La instrucción especifica un registro que se utilizará como índice. En algunas arquitecturas, el índice se escala según la longitud del operando.
Indirecto
La instrucción especifica la ubicación de una palabra puntero que describe el operando, posiblemente involucrando múltiples niveles de indexación e indirección.
Truncado
La instrucción especifica los bits de orden inferior y un registro proporciona los bits de orden superior.
Desplazamiento de la base
La instrucción especifica un desplazamiento desde una dirección en un registro.
autoincremento/autodecremento
Un registro utilizado para la indexación, o una palabra de puntero utilizada por el direccionamiento indirecto, se incrementa o decrementa en 1, un tamaño de operando o un delta explícito.

Los procesadores vectoriales han ofrecido modos adicionales exclusivos para operaciones basadas en elementos.

Número de operandos

El número de operandos es uno de los factores que pueden dar una indicación sobre el rendimiento del conjunto de instrucciones. Una arquitectura de tres operandos (2 de entrada, 1 de salida) permitirá

A := B + C

debe calcularse en una instrucción

AÑADIR B, C, A

Una arquitectura de dos operandos (1 entrada, 1 entrada y salida) permitirá

A := A + B

debe calcularse en una instrucción

AÑADIR B, A

pero requiere que

A := B + C

debe hacerse en dos instrucciones

MOVER B, A AÑADIR C, A

Longitud de codificación

Como se puede observar en la tabla siguiente, algunos conjuntos de instrucciones mantienen una longitud de codificación fija muy simple, mientras que otros tienen longitud variable. Generalmente, las arquitecturas RISC tienen una longitud de codificación fija y las arquitecturas CISC , una longitud variable, pero no siempre.

Conjuntos de instrucciones

La siguiente tabla compara información básica sobre arquitecturas de conjuntos de instrucciones.

Notas:

  • Normalmente, el número de registros es una potencia de dos , por ejemplo, 8, 16, 32. En algunos casos, se incluye un pseudoregistro cableado a cero, como parte de los archivos de registro de las arquitecturas, principalmente para simplificar los modos de indexación. La columna "Registros" solo cuenta los registros enteros que pueden ser utilizados por las instrucciones generales en cualquier momento. Las arquitecturas siempre incluyen registros de propósito especial, como el contador de programa (PC). Estos no se cuentan a menos que se indique lo contrario. Tenga en cuenta que algunas arquitecturas, como SPARC, tienen ventanas de registro ; para estas arquitecturas, el recuento indica cuántos registros están disponibles dentro de una ventana de registro. Además, los registros no arquitectónicos para renombrar registros no se cuentan.
  • En la columna "Tipo", "Registro-Registro" es sinónimo de un tipo común de arquitectura, " carga-almacenamiento ", lo que significa que ninguna instrucción puede acceder directamente a la memoria excepto algunas especiales, es decir, cargar o almacenar en registros, con las posibles excepciones de las instrucciones de bloqueo de memoria para operaciones atómicas.
  • En la columna "Orden de bytes", "Bi" significa que el orden de bytes es configurable.

Véase también

Notas

  1. Normalmente el signo solo podía ser más o menos, pero en el IBM 7070/72/74 [ 5 ] había un signo de 3 estados.
  2. Las instrucciones LEA (todos los procesadores) e IMUL-immediate (80186 y posteriores) aceptan tres operandos; la mayoría de las demás instrucciones del ISA entero básico no aceptan más de dos operandos.
  3. Parcialmente RISC: arquitectura de carga/almacenamiento y modos de direccionamiento simples; parcialmente CISC: tres longitudes de instrucción y sin temporización de instrucción única.
  4. Dado que la memoria es una matriz de palabras de 60 bits sin forma de acceder a las subunidades, la distinción entre big-endian y little-endian carece de sentido. La unidad CMU opcional utiliza semántica big-endian.
  5. Dado que la memoria es una matriz de palabras de 12 bits sin forma de acceder a las subunidades, la distinción entre big endian y little endian no tiene sentido.

Referencias

  1. da Cruz, Frank (18 de octubre de 2004). "La calculadora de investigación de armamento naval de IBM" . Historia de la informática de la Universidad de Columbia . Recuperado el 8 de mayo de 2024 .
  2. "Museo Virtual Ruso de Computación _ Salón de la Fama _ Nikolay Petrovich Brusentsov" .
  3. Trogemann, Georg; Nitussov, Alexander Y.; Ernst, Wolfgang (2001). Computación en Rusia: revelada la historia de los dispositivos informáticos y la tecnología de la información . Vieweg+Teubner Verlag. págs.19 , 55, 57, 91, 104-107 . ISBN  978-3-528-05757-2..
  4. 650 máquina de procesamiento de datos de tambor magnético (PDF) . IBM . Junio ​​de 1955. 22-6060-2 . Consultado el 8 de mayo de 2024 .
  5. 1 2 3 Principios de funcionamiento de IBM 7070-7074 (PDF) . Biblioteca de referencia de sistemas. IBM . 1962. GA22-7003-6 . Consultado el 8 de mayo de 2024 .
  6. Computadora de estado sólido UNIVAC® 80 (PDF) . Sperry Rand Corporation . 1959. U1742.1r3 . Consultado el 8 de mayo de 2024 .
  7. IBM 650 MDDPM Características adicionales - Acumuladores de indexación - Aritmética decimal flotante - Documento avanzado (PDF) . IBM . 1955. 22-6258-0 . Consultado el 8 de mayo de 2024 .
  8. "El microcontrolador 8051" . Explora la historia de Intel . Intel.
  9. "Manual del programador de la arquitectura AMD64, volumen 6: instrucciones XOP y FMA4 de 128 y 256 bits" (PDF) . AMD . Noviembre de 2009.
  10. "Synopsys presenta un nuevo procesador ARC de 64 bits que ofrece un aumento de rendimiento de hasta 3 veces para aplicaciones integradas de gama alta" .
  11. "Desarrollos de la arquitectura Arm A-Profile 2022 - Blog de arquitecturas y procesadores - Blogs de la comunidad Arm - Comunidad Arm" . community.arm.com . 29 de septiembre de 2022. Consultado el 9 de diciembre de 2022 .
  12. Frumusanu, Andrei (3 de septiembre de 2020). "ARM anuncia Cortex-R82: el primer procesador de tiempo real de 64 bits" . AnandTech . Archivado del original el 3 de septiembre de 2020.
  13. "ARM adopta la arquitectura de 64 bits con la nueva arquitectura de chip ARMv8" . Computerworld . 27 de octubre de 2011. Consultado el 8 de mayo de 2024 .
  14. Toshio Yoshida. "Conferencia Hot Chips 30; Informe de Fujitsu" (PDF) . Fujitsu. Archivado del original (PDF) el 5 de diciembre de 2020.
  15. "Documento de arquitectura AVR32" (PDF) . Atmel . Consultado el 8 de mayo de 2024 .
  16. "Manual de Blackfin" (PDF) . analog.com .
  17. "Descripción general de la arquitectura del procesador Blackfin" . Analog Devices . Consultado el 8 de mayo de 2024 .
  18. "Arquitectura de memoria Blackfin" . Analog Devices . Archivado del original el 16 de junio de 2011. Consultado el 18 de diciembre de 2009 .
  19. 1 2 3 4 5 "Crusoe al descubierto: Arquitectura Transmeta TM5xxx 2" . Tecnologías del mundo real.
  20. 1 2 3 Alexander Klaiber (enero de 2000). "La tecnología detrás de los procesadores Crusoe" (PDF) . Transmeta Corporation . Recuperado el 6 de diciembre de 2013 .
  21. Intel Corporation (1981). Introducción a la arquitectura iAPX 432 (PDF) . págs. iii. 
  22. "Arquitectura LatticeMico32" . Lattice Semiconductor . Archivado del original el 23 de junio de 2010.
  23. "Licencia de código abierto de LatticeMico32" . Lattice Semiconductor . Archivado del original el 20 de junio de 2010.
  24. Arquitectura MIPS64 para programadores: Versión 6
  25. Arquitectura MIPS32 para programadores: Versión 6
  26. MIPS abierto
  27. "Wave Computing cierra su iniciativa MIPS Open con efecto inmediato y sin previo aviso" .
  28. Revisiones de la arquitectura OpenRISC
  29. Manual del PDP-5 (PDF) . Digital Equipment Corporation . Febrero de 1964.
  30. Manual del usuario de la PDP-8 (PDF) . Digital Equipment Corporation . Mayo de 1966.
  31. 1 2 "Power ISA Versión 3.1" . openpowerfoundation.org. 2020-05-01 . Recuperado el 2021-10-20 .
  32. EULA de OpenPOWER
  33. "Especificación ratificada de RISC-V" . Consultado el 18 de octubre de 2025 .
  34. Documentación del procesador Oracle SPARC
  35. Licencia de arquitectura SPARC