Instrucción de computadora que ejecuta 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 secuencial ordinaria , la ramificación y la interrupción . [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 los años 1950 y 1960 incluyen instrucciones de ejecución : el IBM 709 [1] y el IBM 7090 ( código de operación mnemónico : XEC ), [3] el IBM 7030 Stretch ( EX , EXIC ), [ 4] [1] el 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 ), el IBM System/360 ( EX ), [9] el GE-600 / Honeywell 6000 ( XEC , XED ), [10] el SDS-9xx ( EXU ), [11] el 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 su versión de microprocesador, la TMS9900 (1976) ( X ). [17] El Signetics 8X300 (1976) es un diseño de microprocesador poco común con una instrucción de ejecución. XEC ejecuta una instrucción de una tabla de 1 a 255 instrucciones. La mayoría de las instrucciones actúan como subrutinas de instrucción única, pero se utilizan ramas para implementar tablas de salto. [18] Se propuso una instrucción de ejecución para la PDP-11 en 1970, [19] pero nunca se implementó para ella [20] o su sucesora, la VAX . [21]
Los conjuntos de instrucciones modernos no incluyen instrucciones de ejecución porque interfieren con la segmentación , la precarga y otras optimizaciones. [ cita requerida ]
Semántica
La instrucción que se va a ejecutar, la instrucción de destino, puede estar en un registro o ser extraída de la memoria. Algunas arquitecturas permiten que la instrucción de destino sea en sí misma una instrucción de ejecución ; otras no.
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 a una subrutina, la ejecución se transfiere a la subrutina, siendo la ubicación de retorno la ubicación posterior a 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 sistema/360 admite instrucciones de destino de longitud variable. También permite 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 palabras dobles . [10]
Algunas arquitecturas admiten una instrucción de ejecución que funciona 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 XCTR de modo privilegiado 'ejecutar reubicado' que permite que las lecturas, escrituras o ambas de la memoria utilicen las asignaciones de páginas del modo de usuario. [22] De manera similar, la variante KL10 del PDP-10 admite la instrucción privilegiada PXCT 'contexto previo XCT'. [23]
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 ininterrumpido 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 , es necesario intercambiar todas las páginas para que la instrucción se complete, lo que puede causar problemas .
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 instrucción única 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 thunks . [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 la función a menudo se pueden implementar como una sola instrucción. [20]
- Un objetivo de ejecución puede contener un gancho 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 completamente rastreada. [24] [25] [26]
- Rastreo, monitoreo 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 el código ejecutable se pueda escribir.
- Emular código automodificable, especialmente cuando debe ser reentrante o de sólo lectura. [19]
- 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.
- Las instrucciones de ejecución en modo privilegiado, como en el KL10, son utilizadas por los núcleos del sistema operativo para ejecutar operaciones tales como copias de bloques 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 de computadoras". IEEE Computer . 8 (12): 44–63. doi :10.1109/CM.1975.218835. S2CID 977792., pág. 50
- ^ Manual de referencia, Sistema de procesamiento de datos IBM 7090 (PDF) . IBM . Marzo de 1962. pág. 36.
- ^ Manual de referencia, Sistema de procesamiento de datos 7030 (PDF) . IBM . Agosto de 1961. pág. 50.
- ^ Manual del procesador de datos programado-1 (PDF) . Digital Equipment Corporation . 1961. pág. 14.
- ^ Supnik, Bob. "Evolución arquitectónica en las computadoras DEC 18b" (PDF) . pág. 8 (no se muestran los números de página).
- ^ Computadora central Univac 1107 (PDF) . Noviembre de 1961. p. 12-1.
- ^ Control Data 924 Computer Reference Manual (PDF) . Octubre de 1962. pág. 2-41.
- ^ ab IBM System/360 Principios de funcionamiento (PDF) . IBM . 1964. pág. 65. A22-6821-0.
- ^ ab GE-635 System Manual (PDF) . Departamento de Computación de General Electric. Julio de 1964. pág. A-5.
- ^ SDS 940 Teoría de operaciones (PDF) . Scientific Data Systems . Marzo de 1967. pág. 2-12. SDS-98-01-26A.
- ^ SDS 92 Computadora. Sistemas de datos científicos . Junio de 1965. pág. 2-6.
- ^ Computadora Xerox SIGMA 7: Manual de referencia (PDF) . 90 09 5J; XG46, Archivo No: 1X03 (0 ed.). Xerox Corporation. Octubre de 1973. págs. 70–71.
{{cite book}}
: Mantenimiento de CS1: otros ( enlace ) - ^ Principios de programación de la computadora ND812 (PDF) . Nuclear Data, Inc. 1971. pág. 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) . Texas Instruments . pág. 3-28.
- ^ Manual de datos del microprocesador TMS 9900 (PDF) . Texas Instruments . Diciembre de 1976. pág. 24.
- ^ "Microcontrolador SL8X305" (PDF) . Lansdale Semiconductor Inc . Consultado el 20 de junio de 2017 .
- ^ ab van de Goor, Ad (21 de septiembre de 1970). "La instrucción de ejecución" (PDF) . Memorándum técnico PDP-11/40 n.º 18.
- ^ ab Manual del procesador PDP11: PDP11/04/34a/44/60/60 (PDF) . Digital Equipment Corporation . 1979.
- ^ Manual de referencia del conjunto de instrucciones y MACRO de VAX (PDF) . Compaq Computer Corporation . Abril de 2001. AA-PS6GD-TE.
- ^ Holloway, J. (20 de febrero de 1970). "Hardware Memo 2 - Dispositivo de búsqueda PDP-10" (PDF) . MIT AI Lab . pág. 11.
- ^ Manual de referencia del procesador DECsystem-10, DECSYSTEM-20 (PDF) . Digital Equipment Corporation . 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) . MIT Press. pág. 32. ISBN 9780262070935.
- ^ Pitman, Kent M. "PURE". Manual revisado de Maclisp, edición del domingo por la mañana.
- ^ Moon, David A. (abril de 1974). Manual de referencia de Maclisp (PDF) . Revisión 0. pág. 181.