stringtranslate.com

Direccionamiento de bytes

El direccionamiento de bytes en arquitecturas de hardware permite acceder a bytes individuales . Las computadoras con direccionamiento de bytes a veces se denominan máquinas de bytes , en contraste con las arquitecturas direccionables por palabra , máquinas de palabras , que acceden a los datos por palabra . [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 direccionar 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 individuales. Sin embargo, los datos en la memoria pueden tener varias longitudes. Los conjuntos de instrucciones que admiten el direccionamiento de bytes admiten el acceso a datos en unidades que son más estrechas que la longitud de palabra. Un procesador de ocho bits como el Intel 8008 direcciona ocho bits, pero como este es el ancho completo del acumulador y otros registros, esto podría considerarse direccionable por bytes o por palabra. 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 palabras es que se puede direccionar más memoria con la misma cantidad de bits. El IBM 7094 tiene direcciones de 15 bits, por lo que podía direccionar 32.768 palabras de 36 bits. Las máquinas se construían a menudo con un complemento completo de memoria direccionable. Direccionamiento de 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 direccionar 4 mil millones de elementos diferentes. Usando direccionamiento por palabras, un procesador de 32 bits podría direccionar 4 Gigapalabras; o 16 Gigabytes usando el byte moderno de 8 bits. Si el 386 y sus sucesores hubieran usado direccionamiento por palabras, los científicos, ingenieros y jugadores podrían haber ejecutado programas que eran 4 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 habrían funcionado más lentamente.

Cuando las computadoras eran tan costosas que solo se usaban, o principalmente, para la ciencia y la ingeniería, el direccionamiento por palabras era el modo obvio. Cuando se hizo rentable usar computadoras para manejar texto, los diseñadores de hardware pasaron al direccionamiento por bytes.

Para ilustrar por qué es útil el direccionamiento de bytes, considere el IBM 7094 , que es direccionable por palabra y no tiene el concepto de byte. Tiene palabras de 36 bits y almacena sus códigos de caracteres de seis bits de seis en seis por palabra. Para cambiar el decimosexto carácter de una cadena, el programa tiene que determinar que este es el cuarto carácter de la tercera palabra de la cadena, buscar la tercera palabra, enmascarar el valor anterior del cuarto carácter del valor guardado en el registro, bit a bit o en el nuevo, y luego volver a almacenar la palabra modificada. Al menos seis instrucciones de máquina. Por lo general, estas se relegan a una subrutina, por lo que cada almacenamiento o búsqueda de un solo carácter implica la sobrecarga de llamar a una subrutina y regresar. Con el direccionamiento de bytes, eso se puede lograr en una instrucción: almacenar 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 , tienen mecanismos especiales para acceder a los bytes de manera eficiente.

En el PDP-6/10, las instrucciones especiales operaban sobre 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 cargaban o almacenaban un byte, la instrucción IBP incrementaba el puntero de byte y las instrucciones ILDB / IDPB incrementaban el puntero de byte y luego cargaban o almacenaban el siguiente byte. Estas instrucciones podí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 usaban el conjunto de caracteres limitado de bytes de 6 bits para mayor eficiencia; la mayoría usaba ASCII de 7 bits , empaquetado de 5 en una palabra con un bit sin usar; y la implementación de C usaba bytes de 9 bits porque C requiere que toda la memoria sea direccionable por bytes.

En las máquinas GE/Honeywell, se podían usar modos especiales de direccionamiento indirecto en la mayoría de los tipos de instrucciones y operar en un puntero de byte que podía operar en 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 que apunte 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 extendió la instrucción IBP para convertirse en la instrucción de "ajustar puntero de byte", ADJBP , que podía ajustar un puntero de byte en una cantidad arbitraria de bytes. [3] : 2-89–2-91 

Véase 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) . Digital Equipment Corporation . Junio ​​de 1982. AD-H391A-T1.
  4. ^ Manual de referencia de programación GE-625/635 (PDF) . General Electric . Julio de 1969. págs. 169, 171–172.