Direccionamiento de memoria

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 6 de febrero de 2018; las comprobaciones requieren 6 ediciones .

El direccionamiento  es la implementación de un enlace (referencia) a un dispositivo o elemento de datos en su dirección [1] ; establecer una correspondencia entre un conjunto de objetos del mismo tipo y un conjunto de sus direcciones; método para identificar la ubicación de un objeto [2] .

Métodos de direccionamiento [2]

Espacio de direcciones

Ejecución del programa

Codificación de direcciones

Cálculo de direcciones

Métodos de direccionamiento

Operando implícito

La instrucción no puede contener instrucciones explícitas sobre el operando ; en este caso, el operando está implícito y realmente especificado por el código de operación de la instrucción.

Dirección prevista

La instrucción puede no contener indicaciones explícitas sobre la dirección del operando que participa en la operación o la dirección en la que debe colocarse el resultado de la operación, pero esta dirección está implícita.

Direccionamiento directo

La instrucción no contiene la dirección del operando, sino el propio operando. Con el direccionamiento directo, no se requiere acceso a la memoria para obtener un operando y una ubicación de memoria para almacenarlo. Esto ayuda a reducir el tiempo de ejecución del programa y la cantidad de memoria que ocupa. El direccionamiento directo es conveniente para almacenar varios tipos de constantes.

Direccionamiento directo

La dirección se especifica directamente como algún valor, todas las celdas se encuentran en una página. La ventaja de este método es que es el más simple y la desventaja es que el ancho de los registros de propósito general del procesador debe ser al menos tan ancho como el ancho del bus de direcciones del procesador .

Direccionamiento relativo (básico)

Con este método de direccionamiento, la dirección de ejecución se define como la suma del código de dirección de la instrucción y la dirección base, generalmente almacenada en un registro especial: el registro base.

El direccionamiento relativo permite proporcionar acceso a cualquier celda de memoria con una longitud menor del código de dirección de la instrucción. Para hacer esto, se elige el número de bits en el registro base de modo que se pueda direccionar cualquier celda de la memoria principal, y se usa el código de dirección de la instrucción para representar solo un "desplazamiento" relativamente corto. El desplazamiento determina la posición del operando en relación con el comienzo de la matriz dada por la dirección base.

Acceso directo al direccionamiento

El campo de dirección de la palabra de control contiene solo los bits menos significativos de la celda direccionada. Registro de índice adicional .

Registrar direccionamiento

El direccionamiento de registro es un caso especial de direccionamiento abreviado. Se utiliza cuando los resultados intermedios se almacenan en uno de los registros de trabajo del procesador central. Dado que hay muchos menos registros que celdas de memoria, un pequeño campo de dirección puede ser suficiente para el direccionamiento.

Direccionamiento indirecto

Por primera vez, se utilizó el direccionamiento indirecto de segundo rango ( punteros ) al programar en MESM [3] . Agregar al comando con el valor de dirección del operando "0" el valor de la celda de memoria en la que se encuentra la dirección del operando requerido, hizo posible usar estas celdas de memoria como valores de dirección, es decir punteros a direcciones de operandos.

El direccionamiento indirecto de rangos superiores se introdujo por primera vez en el lenguaje de programación Address (1955) [4] [5] y se implementó en hardware en la computadora "Kiev" [6] . En el sistema de comando de la computadora "Kiev" hay una operación F, que le permite reducir el rango de la dirección, es decir realizar una "operación de guión" o eliminar la referencia de un puntero , y las operaciones de modificación de dirección de grupo [5] [6] hicieron posible realizar múltiples direccionamientos indirectos de punteros en hardware.

El código de dirección del comando en este caso no indica la dirección con datos, sino la dirección de la celda de memoria en la que se encuentra la dirección del operando o comando. Este es el direccionamiento o punteros de rango 2 . El direccionamiento indirecto se usa ampliamente en computadoras pequeñas y microcomputadoras que tienen una palabra de máquina corta para superar las limitaciones del formato de instrucción corto (el direccionamiento registrado e indirecto se usan juntos).

Direccionamiento de palabras de longitud variable

La eficiencia de los sistemas informáticos diseñados para el procesamiento de datos aumenta si es posible realizar operaciones sobre palabras de longitud variable. En este caso, la máquina puede proporcionar direccionamiento de palabras de longitud variable, lo que generalmente se implementa especificando en la instrucción la ubicación en la memoria del comienzo de la palabra y su longitud.

Direccionamiento de pila

La memoria de pila , que implementa la asignación de operandos sin direcciones, se usa especialmente en microprocesadores y minicomputadoras .

Direccionamiento de auto-incremento y auto-decremento

Dado que el direccionamiento indirecto de registros requiere que el registro esté precargado con una dirección indirecta de la RAM, lo que está asociado con una pérdida de tiempo, este tipo de direccionamiento es especialmente efectivo cuando se procesa una matriz de datos si existe un mecanismo para incrementar o disminuir automáticamente la cantidad. contenido del registro cada vez que se accede a él. Este mecanismo se denomina direccionamiento de autoincremento y autodecremento, respectivamente. En este caso, es suficiente cargar una vez en el registro la dirección del primer elemento de la matriz que se procesa, y luego, cada vez que se acceda al registro, se formará en él la dirección del siguiente elemento de la matriz.

Con el direccionamiento de incremento automático, el contenido del registro se usa primero como la dirección del operando y luego se incrementa por el número de bytes en el elemento de la matriz. Con el direccionamiento de decremento automático, el contenido del registro especificado en el comando primero se decrementa por el número de bytes en el elemento de la matriz y luego se usa como la dirección del operando.

El direccionamiento de autoincremento y autodecremento se puede considerar como una versión simplificada de la indexación, un mecanismo muy importante para convertir las partes de dirección de los comandos y organizar los ciclos computacionales, por lo que a menudo se les llama indexación automática.

Direccionamiento de índice

Para los métodos implementados por computadora para la resolución de problemas matemáticos y procesamiento de datos, es característica la naturaleza cíclica de los procesos computacionales, cuando los mismos procedimientos se realizan en diferentes operandos ordenados en la memoria. Dado que los operandos procesados ​​durante las repeticiones del bucle tienen direcciones diferentes, sin usar la indexación, sería necesario que cada repetición compusiera su propia secuencia de instrucciones que difieren en las partes de la dirección.

La programación de ciclos se simplifica enormemente si, después de cada ejecución del ciclo, se proporciona un cambio automático en los comandos correspondientes de sus partes de dirección según la ubicación en la memoria de los operandos que se procesan. Este proceso se denomina modificación de instrucciones y se basa en la capacidad de realizar operaciones aritméticas y lógicas en los códigos de instrucciones.

Véase también

Notas

  1. ST ISO 2382/7-77 // Informática. Terminología: Manual de referencia. Número 1 / Revisor Ph.D. tecnología Ciencias Yu. P. Selivanov. - M. : Editorial de normas, 1989. - 168 p. - 55.000 ejemplares.  — ISBN 5-7050-0155-X .
  2. 1 2 Pershikov V.I., Savinkov V.M. Diccionario explicativo de informática / Revisores: Ph.D. Phys.-Math. Sci. A. S. Markov y Dr. Phys.-Math. Ciencias I. V. Potosin. - M. : Finanzas y estadísticas, 1991. - 543 p. — 50.000 copias.  - ISBN 5-279-00367-0 .
  3. Lebedev, SA Pequeña calculadora electrónica  : [ rus. ]  / S. A. Lebedev, L. N. Dashevsky, E. A. Shkabara. - Moscú: Academia de Ciencias de la URSS, 1952. - Pág. 162. Copia archivada del 23 de julio de 2021 en la Wayback Machine
  4. Álvaro Videla. Kateryna L. Yushchenko - Inventora  de los punteros Medio (8 de diciembre de 2018). Consultado el 23 de julio de 2021. Archivado desde el original el 23 de septiembre de 2020.
  5. ↑ 1 2 Yushchenko, E. L. Programación de direcciones: [ rus. ] . - Kyiv: Estado. editorial de literatura técnica, URSR, 1963. - P. 288.
  6. 1 2 Glushkov, V. M. Computer "Kiev": descripción matemática. : [ rus. ]  / V. M. Glushkov, E. L. Yushchenko. — Tecn. lit., 1962. - 183 p.

Literatura