El direccionamiento por bytes en las arquitecturas de hardware permite acceder 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 por palabra . [ 1 ] [ 2 ]
Fondo
La unidad básica de almacenamiento digital es el bit , que almacena un único 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 una sola instrucción. Sin embargo, los datos en memoria pueden tener longitudes variables. Los conjuntos de instrucciones que admiten el direccionamiento por bytes permiten acceder a los datos en unidades 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 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 con elementos de 32 bits con una sola instrucción, son direccionables por bytes.
La ventaja del direccionamiento por palabras es que se puede acceder a más memoria con el mismo número de bits. El IBM 7094 tiene direcciones de 15 bits y, por lo tanto, podía direccionar 32 768 palabras de 36 bits. Estas máquinas solían construirse con una memoria direccionable completa; direccionar 32 768 bytes de 6 bits habría sido mucho menos útil para usuarios científicos y de ingeniería. Consideremos también los procesadores x86 de 32 bits: sus direcciones lineales de 32 bits pueden direccionar 4 000 millones de elementos diferentes; utilizando el direccionamiento por palabras, un procesador de 32 bits podría direccionar 4 gigapalabras, o 16 gigabytes utilizando el byte moderno de 8 bits. Si el 386 y sus sucesores hubieran utilizado el direccionamiento por palabras, científicos, ingenieros y jugadores habrían podido ejecutar programas cuatro veces más grandes en máquinas de 32 bits. Sin embargo, el procesamiento de textos, la generación de HTML y todas las demás aplicaciones de texto habrían sido más lentas.
Cuando las computadoras eran tan costosas que se usaban exclusivamente o principalmente para la ciencia y la ingeniería, el direccionamiento por palabras era el método obvio. A medida que se volvió rentable usar computadoras para procesar texto, los diseñadores de hardware pasaron al direccionamiento por bytes.
Para ilustrar la utilidad del direccionamiento por bytes, consideremos el IBM 7094 , que es direccionable por palabras y no tiene el concepto de byte. Tiene palabras de 36 bits y almacena sus códigos de caracteres de seis bits, seis por palabra. Para cambiar el decimosexto carácter de una cadena, el programa debe determinar que este es el cuarto carácter de la tercera palabra de la cadena, obtener la tercera palabra, enmascarar el valor antiguo del cuarto carácter con el valor almacenado en el registro, realizar una operación OR bit a bit en el nuevo registro y, finalmente, almacenar la palabra modificada. Esto requiere al menos seis instrucciones de máquina. Normalmente, estas se asignan a una subrutina, por lo que cada almacenamiento o obtención de un solo carácter implica la sobrecarga de llamar a una subrutina y regresar. Con el direccionamiento por bytes, esto se puede lograr con una sola 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 por palabras , como el PDP-6/10 y la serie GE-600 / Honeywell 6000 , cuentan con mecanismos especiales para acceder a los bytes de forma 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 sobre campos de bits de ancho arbitrario. [ 3 ] : 2-85–2-89 Los programas aprovechaban esta flexibilidad: aquellos que no necesitaban letras minúsculas usaban el conjunto limitado de caracteres 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 en C usaba bytes de 9 bits porque C requiere que toda la memoria sea direccionable por byte.
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 se operaba en un puntero de byte que podía operar en bytes de 6 o 9 bits. [ 4 ]
Ninguna de estas máquinas originalmente tenía soporte directo para el acceso aleatorio a bytes; ajustar un puntero de byte para que apuntara 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 (incrementar puntero de byte) para convertirla en la instrucción ADJBP (ajustar puntero de byte ), que podía ajustar un puntero de byte en un número arbitrario de bytes, proporcionando una primitiva para indexar en una matriz de bytes. [ 3 ] : 2-89–2-91
Véase también
Referencias
- ↑ "Wortmaschine" (en alemán). Archivado del original el 9 de abril de 2017. Consultado el 9 de abril de 2017 .
- ^ Hansen, recursos humanos (1986). Wirtschaftsinformatik (en alemán). vol. Yo (5 ed.). Stuttgart, Alemania: Gustav Fischer. pag. 125.
- 1 2 Manual de referencia del procesador DECsystem-10/DECSYSTEM-20 (PDF) . Digital Equipment Corporation . Junio de 1982. AD-H391A-T1.
- ↑ Manual de referencia de programación GE-625/635 (PDF) . General Electric . Julio de 1969. págs. 169, 171–172 .
- Arquitectura de computadoras
- unidad central de procesamiento