¿Palabra o byte direccionable? Terminología correcta

9

Aparentemente, un byte se ha establecido en 8 bits (¿es correcto?). Normalmente se puede acceder a RAM y NOR-flash en un nivel bastante granular, pero depende de la arquitectura del sistema determinar si la unidad direccionable más pequeña es 8 bits, 16 bits o cualquier otra potencia de dos bits. ¿Sería la terminología correcta llamar a esta palabra direccionable? O preguntado de manera diferente, ¿es una palabra del tamaño de la unidad direccionable más pequeña? ¿O hay algún otro término para describir esto?

¿Mabye nibble, byte, word, double word son todos variables en longitud de bits y solo están definidos por la arquitectura? ¿Y por lo tanto, es solo una coincidencia que un byte sea siempre de 8 bits? Por ejemplo, ¿alguien podría diseñar un nuevo tipo de CPU y memoria y definir su byte en 16 bits?

Pregunta principal: ¿Cuál es el término preciso para el bloque de memoria direccionable más pequeño?

Pregunta secundaria: ¿Cuál es el antónimo de esta palabra que estoy buscando (p. Ej., Utilizada en NAND-flash)? Direccionable por página, direccionable por bloque? ¿Ambos son correctos o uno es impreciso?

Franz Kafka
fuente

Respuestas:

9

Desde el punto de vista de la arquitectura informática, y con la advertencia de que la nomenclatura a veces varía, especialmente cuando hay una familia de arquitecturas relacionadas que ha evolucionado durante mucho tiempo, o cuando el departamento de marketing decide que los términos habituales deben usarse en otra manera (ya sea para poner el producto en una mejor luz mediante el uso de un número mayor o para tener un número simple para diferenciar productos más o menos relacionados).

Una palabra tiene el tamaño normalmente utilizado para operaciones de enteros (a menudo expresadas como el tamaño del entero o los registros de propósito general, es decir, no dirección o datos, buses internos o externos, no registros de dirección, no registros de índice). Un problema común es que cuando una arquitectura es una evolución de una anterior, a menudo se mantiene el término palabra para el tamaño inicial y se usa "palabra doble" o "palabra cuádruple" para lo que es una palabra si se observa la arquitectura en aislamiento. Históricamente, las palabras no siempre han sido una potencia de dos (sé de tamaños: 12, 16, 18, 24, 32, 36, 60, 64 y no creo que mi conocimiento sea exhaustivo).

La palabra direccionable significa que la memoria se considera como conjuntos de palabras y, por lo tanto, ninguna unidad más pequeña tiene direcciones individuales.

Un byte tiene varias definiciones. El término se introdujo para referirse a la unidad utilizada en la codificación de caracteres en un momento en que no existía la codificación de varios bytes. A menudo se usa para significar la unidad direccionable más pequeña para máquina que no es direccionable por palabra (y siempre que no sea un bit). No creo que esas dos definiciones hayan dado un tamaño diferente. (ni un tamaño diferente de 6 u 8 bits). Para máquina direccionable por palabras, a menudo significa alguna unidad más pequeña que una palabra para la cual la máquina tiene algún soporte (por ejemplo, el PDP-10, una computadora direccionable por palabra de 36 bits) tenía instrucciones de bytes que podían manipular cualquier tamaño de 1 a 35 o 36 bits). Hoy en día también suele ser de 8 bits. A menudo, varias de esas definiciones son prácticamente equivalentes.

Byte direccionable caracteriza máquinas donde la memoria se considera como conjuntos de bytes en uno de los significados anteriores.

Que yo sepa mordisco sólo se ha utilizado para los 4 bits cantidades.

Por ejemplo, ¿alguien podría diseñar un nuevo tipo de CPU y memoria y definir que su byte sea de 16 bits?

Sí, pero no estoy seguro de si tendría mucho sentido hacerlo si se mantiene el uso de CA para usar el byte para algo más pequeño que la palabra. Tener un procesador de 16 bits direccionable por palabras sin soporte para algo más pequeño que una palabra puede ser una buena opción para un procesador de propósito especial.

En segundo lugar, ¿cuál es el antónimo de esta palabra que estoy buscando? Direccionable por página, direccionable por bloque?

Bit-direccionable, byte-direccionable y word-direccionable son los únicos términos que he visto usar. No tiene mucho sentido abordar solo unidades más grandes que la palabra a nivel arquitectónico. Actualmente, Word-direccionable solo se usa para procesadores de propósito especial como DSP. No creo que la direccionabilidad de bits se haya utilizado para nada más que para fines especiales, excepto el IBM Stretch.

Sobre tu nueva pregunta principal

¿Cuál es el término preciso para el bloque de memoria direccionable más pequeño?

No conozco ninguno usado en Arquitectura de Computadores (el byte se ha usado para algo más pequeño en máquinas direccionables por palabras), pero es la definición utilizada por C para el byte .

Un programador
fuente
Gracias por la elaborada respuesta. Cuando volví a leer mi pregunta, noté que era un poco vago, por lo tanto, todavía estoy buscando una respuesta definitiva que tal vez puedas agregar a tu respuesta: ¿Cuál es el término preciso para el bloque de memoria direccionable más pequeño? ¿O no hay ninguno? Además, cambié la oración que citaste. Muchas gracias.
Franz Kafka
1
Las regiones de bandas de bits en algunos ISA de microcontroladores pueden contar como direccionamiento de bits. Una parte del espacio de direcciones traduce direcciones de palabras (al menos en ARM Cortex-M) a direcciones de bits. Obviamente, esto solo admite el direccionamiento de bits para una pequeña porción del espacio total de direcciones (solo 2MiB de 4GiB para Cortex-M3). Además, la capacidad de direccionamiento del conjunto de instrucciones es distinta de la capacidad de hardware (p. Ej., La memoria flash NAND es direccionable por página, la DRAM a menudo es direccionable con granularidad de bloque de caché, la caché L1 es típicamente el tamaño de carga máximo direccionable [con escrituras más pequeñas ECC requiere RMW].)
Paul A. Clayton
@ PaulA.Clayton No conocía el término banda de bits, pero conocía el 8051 que también lo proporciona. No consideraría un ISA que lo proporcione como bit-direccionable no más de lo que considero el PDP-10 como byte-direccionable, parece demasiado diferente de la ruta de datos habitual.
Programador
@AProgrammer No estoy seguro de cómo definiría la direccionabilidad ISA. Definirlos de acuerdo con la unidad más pequeña de direccionamiento externo admitido en una sola instrucción da una respuesta diferente que definirlos de acuerdo con la unidad de direccionamiento de una "dirección / puntero ordinario" (que excluye las bandas de bits y la dirección / puntero y más fino) -mecanismos de compensación de grano). El último (que usted eligió) parece más natural en algunos contextos, pero el primero podría tener sentido en otros contextos. También se puede considerar la atomicidad (interrupciones de wrt o coherencia de caché de wrt) (las instrucciones pueden ser no atómicas).
Paul A. Clayton
1
@ PaulA.Clayton, traté de apegarme a lo que parecía una práctica establecida en el campo, pero es un campo que ama los estados intermedios y no tengo ni el talento ni la cultura de Andy Glew para poder dar una descripción exhaustiva pero comprensible.
Programador
1

El Burroughs B1700 era direccionable en bits (en realidad, la dirección se refería al espacio entre los bits desde los cuales se podía leer hacia adelante o hacia atrás un número arbitrario de bits). (Por lo tanto, no fue solo Stretch de IBM, que fue un fracaso).

La B1700 fue diseñada para ser la máquina más flexible. Las aplicaciones no estaban destinadas a escribirse a nivel de bit, sino a diferentes entornos creados para diferentes estilos de aplicación. Estos entornos fueron programados en microcódigo, proporcionando los motores de máquinas virtuales. Cada tiempo de ejecución de lenguaje (sistemas SDL para OS, COBOL para empresas, FORTRAN para COBOL) se escribió como un entorno microcodificado separado. Por lo tanto, la arquitectura podría adaptarse a cualquier estilo de aplicación futuro.

Wayne Wilner, uno de los diseñadores, señaló que otras máquinas de la época obligaron a los programadores a acostarse en la cama Procrustean de bytes y palabras de tamaño fijo. Realmente, lo que cada entorno de ejecución requería eran estructuras de datos que se adaptaran a la aplicación. Desafortunadamente, la mayoría de las arquitecturas de máquinas actuales siguen siendo Procrustean (y, por lo tanto, están programadas en lenguajes como C que exponen esta estructura de máquina, en lugar de admitir estructuras orientadas a problemas).

Lecturas adicionales sobre esta fascinante máquina y su filosofía están disponibles en:

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.590.2624&rep=rep1&type=pdf

y con más detalle:

http://ianjoyner.name/Files/Wilner.pdf

Entonces, ¿por qué ya no se fabrica el B1700?

Burroughs tenía tres gamas principales de computadoras, los sistemas grandes B5000-B7000 (arquitectura ALGOL), los sistemas medianos B2000-B4000 (arquitectura COBOL) y los sistemas pequeños B1000 (arquitectura de cualquier tipo).

Los sistemas grandes eran realmente caros, hasta el B5900 que se microcodificó en un procesador barato para proporcionar la máquina de pila ALGOL. Jack Allweis, el diseñador del B5900, ha señalado que la arquitectura del sistema grande se redujo a pequeñas computadoras, pero el B1700 fue diseñado para ser barato y no se amplió.

Así, el B1700 a B1900, aunque tuvo mucho éxito en ese momento, murió por razones comerciales.

Los sistemas grandes de Burroughs todavía están disponibles como Unisys ClearPath MCP e incluso se ejecutan en su PC como una emulación.

Como otra nota al pie, el IPC en el B1700 fue una molestia entre diferentes máquinas virtuales, pero muy seguro (como los microkernels de hoy). Todos los sistemas grandes ejecutaban procesos en el mismo entorno donde los datos podían compartirse de forma segura, pero IPC era directo. Esto es algo entre arquitecturas de microkernel (Mach) y no kernel (Linux). Sin embargo, la B5000 es una máquina muy segura, pero también funciona bien.

La seguridad es el mayor problema en la industria ahora, y realmente estas máquinas deberían revivirse y estudiarse para mostrar el camino a seguir.

usuario3717661
fuente
1

Pregunta principal: ¿Cuál es el término preciso para el bloque de memoria direccionable más pequeño?

Agregaré otra respuesta para abordar eso de una manera diferente. En hardware electrónico, lo llamamos el bit - dígito binario. Esa es una entidad que puede representar dos valores cualquiera. Generalmente pensamos en términos de 0 y 1, pero podría ser 3 o 4, 365 o 266, -3 o -4, incluso 25 o 37.

Se puede utilizar cualquier sistema de señalización para representar estos valores: señalización hacia arriba, indicación hacia abajo, ojos abiertos, ojos cerrados, + 5v, -5v. Eso no es importante.

Lo importante es que filosóficamente estamos representando la menor cantidad de información distintiva. Esto podría estar activado, desactivado o verdadero, falso o arriba, abajo o 0, 1, cualquier cosa que distinga dos estados separados. Podemos mapear estos valores en cualquiera de los sistemas de señalización anteriores y en muchos otros.

Ahora la pregunta es, ¿cómo podemos probar y establecer una cantidad tan pequeña de información individualmente? Como dije en la respuesta anterior, el B1700 eligió abordar la menor cantidad de información directamente.

Sin embargo, la mayoría de las máquinas decidieron abordar solo grandes cantidades de información. Consideremos un grupo de cuatro bits con una sola dirección. Entonces, si obtenemos el valor de 1011 en nuestra ubicación, ¿cómo probamos el segundo bit desde la izquierda? Usamos una máscara: las pruebas 1011 y 0100 solo el segundo bit. Entonces, ¿cómo establecemos el segundo bit en 1? Un poco de aritmética de la CPU dice que el valor será 15 o 1111, de modo que cuatro bits enteros se vuelven a escribir en la memoria, aunque en realidad solo hayamos establecido un bit.

Ahora esto no es útil para la mayoría de las aplicaciones. La mayoría de las aplicaciones representan datos o información, arriba, abajo, verdadero, falso, abierto, cerrado.

Queremos decir cosas como:

si está abierto entonces ... más ... final

o más probablemente aplique eso a una entidad más grande:

si la puerta está abierta, lo más probable es 'puerta abierta' ... más ... final

'puerta está abierta' ilustra el direccionamiento jerárquico. El direccionamiento del sistema principal le da a la entidad puerta, y la puerta tiene su propio direccionamiento que le da acceso para abrir (y tal vez otros atributos).

La mayoría de los conjuntos también tienen más de dos valores posibles (un conjunto con un valor nunca cambia y, por lo tanto, ni siquiera necesita representación, por lo tanto, cero bits). Para estos hemos enumerado conjuntos, como (amarillo, verde, azul, neblina púrpura, rojo). Estos definen conjuntos y tipos y el número exacto de bits requeridos viene dado por el número de valores (log2 (número de valores)).

Por lo tanto, el direccionamiento óptimo realmente depende del tamaño de la entidad utilizada en la aplicación, tal vez incluso de entidades de tamaño variable. Pero en la mayoría del hardware, tales direcciones deben traducirse al tamaño fijo que define el hardware. Por supuesto, esto podría costar en términos de tiempo. También debería ser algo que hace un traductor automático (compilador o intérprete), no un programador, tal como un sistema de este tipo generaría código para probar y establecer bits como se indica arriba (si los bits no son directamente direccionables).

Un punto importante aquí es no pensar en términos de electrónica: la electrónica es simplemente una forma realmente buena y rápida de procesar cálculos. No hay nada mágico en la computación electrónica que permita hacer computaciones que de otra manera no podría hacer. La magia solo está en la velocidad. Es por eso que las abstracciones de bajo nivel, como los mecanismos de direccionamiento de bit, byte, palabra o hardware (punteros) realmente no son tan útiles.

usuario3717661
fuente
-2

Nuestro sistema informático utiliza por defecto la memoria direccionable Byte. Su celda apunta a información de 8 bits. Y el tamaño de la celda no depende de la longitud del procesador. En la memoria direccionable por palabra, una celda apunta a información de una palabra, pero la longitud de la palabra depende de la longitud del procesador. Cuando usamos palabras de memoria direccionable que crea una ambigüedad. Entonces, nuestra computadora usa por defecto la memoria direccionable de bytes.

Mayank Jain
fuente
Bienvenido al sitio, pero no veo cómo esto responde la pregunta.
David Richerby