stringtranslate.com

direccionamiento de bytes

El direccionamiento de bytes en las arquitecturas de hardware admite el acceso a bytes individuales . Las computadoras con direccionamiento por bytes a veces se denominan máquinas de bytes , en contraste con las arquitecturas direccionables por palabras , máquinas de palabras , que acceden a los datos mediante palabras . [1] [2]

Fondo

La unidad básica de almacenamiento digital es un bit , que almacena un solo 0 o 1. Muchas arquitecturas de conjuntos de instrucciones comunes pueden abordar más de 8 bits de datos a la vez. Por ejemplo, los procesadores x86 de 32 bits tienen registros de propósito general de 32 bits y pueden manejar datos de 32 bits (4 bytes) en instrucciones únicas. Sin embargo, los datos en la memoria pueden tener varias longitudes. Los conjuntos de instrucciones que admiten el direccionamiento de bytes permiten acceder a datos en unidades más estrechas que la longitud de la palabra. Un procesador de ocho bits como el Intel 8008 aborda ocho bits, pero como este es el ancho total del acumulador y otros registros, esto podría considerarse direccionable por bytes o por palabras. Los procesadores x86 de 32 bits, que direccionan la memoria en unidades de 8 bits pero tienen registros de propósito general de 32 bits y pueden operar en elementos de 32 bits con una sola instrucción, son direccionables por bytes.

La ventaja del direccionamiento por palabra es que se puede direccionar más memoria con el mismo número de bits. El IBM 7094 tiene direcciones de 15 bits, por lo que podría direccionar 32.768 palabras de 36 bits. Las máquinas a menudo se construían con un complemento completo de memoria direccionable. Dirigir 32.768 bytes de 6 bits habría sido mucho menos útil para los usuarios científicos y de ingeniería. O considere los procesadores x86 de 32 bits. Sus direcciones lineales de 32 bits pueden abordar 4 mil millones de elementos diferentes. Usando direccionamiento de palabras, un procesador de 32 bits podría direccionar 4 Gigapalabras; o 16 Gigabytes usando el moderno byte de 8 bits. Si el 386 y sus sucesores hubieran usado direccionamiento de palabras, los científicos, ingenieros y jugadores podrían haber ejecutado programas cuatro veces más grandes en máquinas de 32 bits. Sin embargo, el procesamiento de textos, la representación de HTML y todas las demás aplicaciones de texto se habrían ejecutado más lentamente.

Cuando las computadoras eran tan costosas que se usaban única o principalmente para ciencia e ingeniería, el direccionamiento de palabras era el modo obvio. A medida que se volvió rentable utilizar computadoras para manejar texto, los diseñadores de hardware pasaron al direccionamiento de bytes.

Para ilustrar por qué es útil el direccionamiento por bytes, considere el IBM 7094 , que es direccionable por palabras y no tiene concepto de byte. Tiene palabras de 36 bits y almacena sus códigos de caracteres de seis bits en seis por palabra. Para cambiar el carácter 16 en una cadena, el programa tiene que determinar que este es el cuarto carácter de la tercera palabra en la cadena, buscar la tercera palabra, enmascarar el valor antiguo del cuarto carácter del valor contenido en el registro, bit a bit o en el nuevo, y luego vuelva a almacenar la palabra modificada. Al menos seis instrucciones de máquina. Por lo general, estos quedan relegados a una subrutina, por lo que cada almacenamiento o recuperación de un solo carácter implica la sobrecarga de llamar a una subrutina y regresar. Con el direccionamiento de bytes, eso se puede lograr con una sola instrucción: almacene este código de carácter en esa dirección de byte. Los programas de texto son más fáciles de escribir, son más pequeños y se ejecutan más rápido.

Sistemas híbridos

Algunos sistemas con direccionamiento de palabras , como el PDP-6/10 y la serie GE-600 / Honeywell 6000 , cuentan con mecanismos especiales para acceder a los bytes de manera eficiente.

En el PDP-6/10, instrucciones especiales operaban en un puntero de byte que incluía una dirección de palabra, un desplazamiento de bit y un ancho de bit. Las instrucciones LDB / DPB cargaron o almacenaron un byte, la instrucción IBP incrementó el puntero de byte y las instrucciones ILDB / IDPB incrementaron el puntero de byte y luego cargaron o almacenaron el siguiente byte. Estas instrucciones podrían operar en campos de bits de ancho arbitrario. [3] : 2-85–2-89  Los programas aprovecharon esta flexibilidad: aquellos que no necesitaban letras minúsculas utilizaron el conjunto de caracteres limitado de bytes de 6 bits para mayor eficiencia; ASCII de 7 bits más utilizado , empaquetado de 5 en una palabra con un bit no utilizado; y la implementación de C utilizó bytes de 9 bits porque C requiere que toda la memoria sea direccionable por bytes.

En las máquinas GE/Honeywell, se podían utilizar modos especiales de direccionamiento indirecto en la mayoría de los tipos de instrucciones y operar con un puntero de bytes que podía funcionar con bytes de 6 o 9 bits. [4]

Ninguna de estas máquinas tenía originalmente soporte directo para el acceso aleatorio a bytes; ajustar un puntero de byte para señalar N bytes antes o después del byte al que apuntaba actualmente requería una secuencia de múltiples instrucciones. El modelo KL10 PDP-10 amplió la instrucción IBP para convertirla en la instrucción de "ajustar puntero de byte", ADJBP , que podía ajustar un puntero de byte en un número arbitrario de bytes. [3] : 2-89–2-91 

Ver también

Referencias

  1. ^ "Wortmaschine" (en alemán). Archivado desde el original el 9 de abril de 2017 . Consultado el 9 de abril de 2017 .
  2. ^ Hansen, recursos humanos (1986). Wirtschaftsinformatik (en alemán). vol. Yo (5 ed.). Stuttgart, Alemania: Gustav Fischer. pag. 125.
  3. ^ ab Manual de referencia del procesador DECsystem-10/DECSYSTEM-20 (PDF) . Corporación de equipos digitales . Junio ​​de 1982. AD-H391A-T1.
  4. ^ Manual de referencia de programación GE-625/635 (PDF) . Energia General . Julio de 1969. págs. 169, 171-172.