Direccionamiento de bytes

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
El

direccionamiento de bytes en las arquitecturas de hardware admite el acceso a bytes individuales. Las computadoras con direccionamiento de 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.

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, 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é el direccionamiento de bytes es útil, 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 las series GE-600/Honeywell 6000, tienen 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 bits y un ancho de bits. 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. 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 por 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.

Ninguna de estas máquinas originalmente tenía soporte directo para 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 amplió la instrucción IBP para convertirla en la instrucción "ajustar puntero de byte" instrucción, ADJBP, que podría ajustar un puntero de bytes en un número arbitrario de bytes.

Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save