Instrucción de computadora ejecutando otra instrucción
En una arquitectura de conjunto de instrucciones de computadora (ISA) , una instrucción de ejecución es una instrucción en lenguaje de máquina que trata los datos como una instrucción de máquina y los ejecuta.
Puede considerarse un cuarto modo de secuenciación de instrucciones después de la ejecución , bifurcación e interrupción secuencial ordinaria . [1] Dado que es una instrucción que opera sobre otras instrucciones como la instrucción de repetición , también se ha clasificado como una metainstrucción. [2]
Modelos de computadora
Muchas familias de computadoras introducidas en las décadas de 1950 y 1960 incluyen instrucciones de ejecución : IBM 709 [1] e IBM 7090 ( código mnemotécnico de operación : XEC ), [3] IBM 7030 Stretch ( EX , EXIC ), [4] [ 1] PDP-1 / -4 / -7 / -9 / -15 ( XCT ), [5] [6] el UNIVAC 1100/2200 ( EXRI ), [7] el CDC 924 ( XEC ), [8] el PDP- 6 / -10 ( XCT ), IBM System/360 ( EX ), [9] GE -600 / Honeywell 6000 ( XEC , XED ), [10] SDS -9xx ( EXU ), [11] SDS 92 ( EXU ), [12] y la serie SDS Sigma ( EXU ). [13]
Menos diseños de la década de 1970 incluyen instrucciones de ejecución : la minicomputadora Nuclear Data 812 (1971) ( XCT ), [14] la HP 3000 (1972) ( XEQ ), [15] y la Texas Instruments TI-990 (1975) [16] y sus Versión con microprocesador, el TMS9900 (1976) ( X ). [17] Se propuso una instrucción de ejecución para el PDP-11 en 1970, [18] pero nunca se implementó para él [19] o su sucesor, el VAX . [20]
Los conjuntos de instrucciones modernos no incluyen instrucciones de ejecución porque interfieren con la canalización , la captación previa y otras optimizaciones. [ cita necesaria ]
Semántica
La instrucción a ejecutar, la instrucción de destino, puede estar en un registro o recuperarse de la memoria. Algunas arquitecturas permiten que la instrucción de destino sea en sí misma una instrucción de ejecución ; Otros no lo hacen.
La instrucción de destino se ejecuta como si estuviera en la ubicación de memoria de la instrucción de ejecución . Si, por ejemplo, se trata de una instrucción de llamada de subrutina, la ejecución se transfiere a la subrutina, siendo la ubicación de retorno la ubicación después de la instrucción de ejecución . Sin embargo, algunas arquitecturas implementan variantes de la instrucción de ejecución que inhiben las bifurcaciones. [1]
El System/360 admite instrucciones de destino de longitud variable. También admite modificar la instrucción de destino antes de ejecutarla. La instrucción de destino debe comenzar en un byte par . [9]
La serie GE-600 admite la ejecución de secuencias de dos instrucciones, que deben estar alineadas con dos palabras . [10]
Algunas arquitecturas admiten una instrucción de ejecución que opera en un modo de protección y reubicación de direcciones diferente . Por ejemplo, el dispositivo de paginación ITS PDP-10 admite una instrucción de 'ejecución reubicada' XCTR en modo privilegiado que permite lecturas, escrituras o ambas en memoria para utilizar las asignaciones de páginas en modo de usuario. [21] De manera similar, la variante KL10 del PDP-10 admite la instrucción privilegiada PXCT 'contexto anterior XCT'. [22]
La instrucción de ejecución puede causar varios problemas cuando una instrucción de ejecución apunta a otra y así sucesivamente:
- el procesador puede ser ininterrumpible durante múltiples ciclos de reloj si la instrucción de ejecución no puede interrumpirse en medio de la ejecución;
- de manera similar, el procesador puede entrar en un bucle infinito si la serie de instrucciones de ejecución es circular e ininterrumpible;
- Si las instrucciones de ejecución están en diferentes páginas de intercambio , todas las páginas deben intercambiarse para que se complete la instrucción, lo que puede causar sacudidas .
Surgen problemas similares con los modos de direccionamiento indirecto multinivel .
Aplicaciones
La instrucción de ejecución tiene varias aplicaciones: [1]
- Funciona como una subrutina de una sola instrucción sin la sobrecarga habitual de las llamadas a subrutinas ; esa instrucción puede llamar a una subrutina completa si es necesario. [1]
- Encuadernación tardía
- Implementación de llamada por nombre y otros procesadores . [1]
- Se puede utilizar una tabla de objetivos de ejecución para el envío dinámico de los métodos o funciones virtuales de un objeto o clase , especialmente cuando el método o función a menudo puede implementarse como una sola instrucción. [19]
- Un objetivo de ejecución puede contener un enlace para agregar funcionalidad o para depurar; normalmente se inicializa como un NOP que puede anularse dinámicamente.
- Un objetivo de ejecución puede cambiar entre una versión rápida de una operación y una versión con seguimiento completo. [23] [24] [25]
- Seguimiento, seguimiento y emulación
- Esto puede mantener un contador de pseudoprograma , dejando el contador de programa normal sin cambios. [1]
- Ejecutar código generado dinámicamente, especialmente cuando la protección de la memoria impide que se pueda escribir en el código ejecutable.
- Emular código automodificable, especialmente cuando debe ser reentrante o de solo lectura. [18]
- En IBM System/360, la instrucción de ejecución puede modificar los bits 8 a 15 de la instrucción de destino, convirtiendo efectivamente una instrucción con un argumento fijo (por ejemplo, un campo de longitud) en una instrucción con un argumento variable.
- Los núcleos del sistema operativo utilizan instrucciones de ejecución en modo privilegiado como en el KL10 para ejecutar operaciones como copias en bloque dentro del espacio virtual de los procesos del usuario.
Notas
- ^ abcdefgh Brooks, FP (marzo de 1960). "Las operaciones de ejecución: un cuarto modo de secuenciación de instrucciones". Comunicaciones de la ACM . 3 (3): 168-170. doi : 10.1145/367149.367168 . S2CID 37725430.
- ^ Rossman, George E. (diciembre de 1975). "Un curso de estudio en arquitectura de hardware informático". Computadora IEEE . 8 (12): 44–63. doi :10.1109/CM.1975.218835. S2CID 977792., pag. 50
- ^ Manual de referencia, sistema de procesamiento de datos IBM 7090 (PDF) . IBM . Marzo de 1962. p. 36.
- ^ Manual de referencia, sistema de procesamiento de datos 7030 (PDF) . IBM . Agosto de 1961. p. 50.
- ^ Manual del procesador de datos programado-1 (PDF) . Corporación de equipos digitales . 1961. pág. 14.
- ^ Supnik, Bob. "Evolución arquitectónica en las computadoras 18b de DEC" (PDF) . pag. 8 (no se muestran los números de página).
- ^ Computadora central Univac 1107 (PDF) . Noviembre de 1961. p. 12-1.
- ^ Manual de referencia de la computadora Control Data 924 (PDF) . Octubre de 1962. p. 2-41.
- ^ ab Principios de funcionamiento de IBM System/360 (PDF) . IBM . 1964. pág. 65. A22-6821-0.
- ^ ab Manual del sistema GE-635 (PDF) . Departamento de Computación de General Electric. Julio de 1964. p. A-5.
- ^ Teoría de funcionamiento SDS 940 (PDF) . Sistemas de datos científicos . Marzo de 1967. p. 2-12. SDS-98-01-26A.
- ^ Computadora SDS 92. Sistemas de datos científicos . Junio de 1965. p. 2-6.
- ^ Computadora Xerox SIGMA 7: Manual de referencia (PDF) . 90 09 5J; XG46, Archivo No: 1X03 (0 ed.). Corporación Xerox. Octubre de 1973. págs. 70–71.
{{cite book}}
: Mantenimiento CS1: otros ( enlace ) - ^ Principios de programación de la computadora ND812 (PDF) . Datos nucleares, Inc. 1971. p. 4-4.
- ^ Sistema informático HP 3000: manual de referencia del conjunto de instrucciones de la máquina (PDF) . Hewlett Packard . 1980. pág. 2-31.
- ^ Manual de sistemas de la familia de computadoras 990 (PDF) . Instrumentos Texas . pag. 3-28.
- ^ Manual de datos del microprocesador TMS 9900 (PDF) . Instrumentos Texas . Diciembre de 1976. p. 24.
- ^ ab van de Goor, Anuncio (21 de septiembre de 1970). "La instrucción de ejecución" (PDF) . PDP-11/40 Memorando Técnico 18.
- ^ ab Manual del procesador PDP11: PDP11/04/34a/44/60/60 (PDF) . Corporación de equipos digitales . 1979.
- ^ VAX MACRO y manual de referencia del conjunto de instrucciones (PDF) . Corporación informática Compaq . Abril de 2001. AA-PS6GD-TE.
- ^ Holloway, J. (20 de febrero de 1970). "Hardware Memo 2: dispositivo de localización PDP-10" (PDF) . Laboratorio de IA del MIT . pag. 11.
- ^ DECsystem-10, Manual de referencia del procesador DECSYSTEM-20 (PDF) . Corporación de equipos digitales . Junio de 1982. pág. 2-63. AA-H391A-TK, AD-H391A-T1.
- ^ Gabriel, Richard P. (agosto de 1985). Rendimiento y evaluación de sistemas Lisp (PDF) . Prensa del MIT. pag. 32.ISBN 9780262070935.
- ^ Pitman, Kent M. "PURA". Manual Maclisp revisado, edición del domingo por la mañana.
- ^ Luna, David A. (abril de 1974). Manual de referencia de Maclisp (PDF) . Revisión 0. pág. 181.