2010-04-27 18 views
18

¿Alguien puede explicar cuál es la diferencia entre Word y Byte direccionables? ¿Cómo se relaciona con el tamaño de la memoria, etc.?Diferencia entre palabra direccionable y byte direccionable

+2

Consulte [esquemas de bytes frente a direccionamiento de palabras] (http://tams-www.informatik.uni-hamburg.de/applets/ hades/webdemos/50-rtlib/40-memory/byte-vs-word.html):> Una demostración de esquemas de direccionamiento basados ​​en bytes y palabras. –

Respuesta

25

Un byte es una unidad de memoria para almacenamiento y un chip de memoria está lleno de dichos bytes. Las unidades de memoria son direccionables. Esa es la única forma en que podemos usar la memoria.

En realidad, la memoria solo es direccionable por byte. Significa que una dirección binaria siempre apunta a un solo byte solo. Una palabra es simplemente un grupo de bytes – 2, 4, 8 dependiendo del tamaño del bus de datos de la CPU.


Para comprender el funcionamiento de la memoria por completo, usted debe estar familiarizado con los diferentes registros de la CPU y los puertos de la memoria de la RAM. Supongo que conoce el significado 'Registro de direcciones de memoria MAR', 'Registro de datos de memoria MDR', 'Registro de contador de programas de PC', 'Registro de memoria intermedia MBR'. La RAM tiene dos puertos de memoria: 32 bits para datos/direcciones, 8 bits para OPCODE.

Supongamos que la CPU quiere leer una palabra (digamos 4 bytes) de la dirección xyz en adelante. La CPU colocaría la dirección en el MAR, enviará una señal de lectura de memoria al chip del controlador de memoria. Al recibir la dirección y la señal de lectura, el controlador de memoria conectaría el bus de datos al puerto de 32 bits y 4 bytes comenzando desde la dirección xyz que fluiría del puerto al MDR.

Si la CPU quiere buscar la siguiente instrucción, colocará la dirección en el registro de la PC y enviará una señal de búsqueda al controlador de memoria. Al recibir la dirección y la señal de búsqueda, el controlador de memoria conectaría el bus de datos al puerto de 8 bits y un código de operación de un solo byte ubicado en la dirección recibida fluiría desde la RAM al MDR de la CPU.

Así que eso es lo que significa cuando decimos que un determinado registro es 'de memoria direccionable' o 'byte direccionable'. Ahora, ¿qué pasará cuando pones, digamos el decimal 2 en binario en el MAR con la intención de leer la 'palabra' 2, no (byte no 2)?

La palabra no 2 significa los bytes 4, 5, 6, 7 para la máquina de 32 bits. En realidad, la memoria física solo es direccionable por bytes. Entonces, hay un truco para manejar el 'direccionamiento de palabras'.
Cuando se coloca MAR en el bus de direcciones, sus 32 bits no se asignan a las 32 líneas de dirección 0-31, respectivamente. En cambio, el bit 0 de MAR está conectado a la línea 2 de bus, el bit 1 de MAR está conectado a la línea 3 de bus, y así sucesivamente. Los 2 bits superiores de MAR se descartan, ya que solo se necesitan para direcciones de palabra superiores a 2^32, ninguna de las cuales es legal para nuestra máquina de 32 bits.
Al utilizar esta asignación, cuando MAR es 1, la dirección 4 se coloca en el bus, cuando MAR es 2, la dirección 8 se coloca en el bus y así sucesivamente.

Al principio es un poco difícil de entender. Lo aprendí de la "organización informática estructurada" de Andrew Tanenbaums.

1

Esta imagen debería hacer más fácil de entender: http://i.stack.imgur.com/rpB7N.png

En pocas palabras,

• En el byte esquema de direccionamiento, la primera palabra se inicia en la dirección 0, y la segunda palabra empieza en la dirección 4 .

• En el esquema de direccionamiento de palabras, todos los bytes de la primera palabra se encuentran en la dirección 0, y todos los bytes de la segunda palabra se encuentran en la dirección 1.

La ventaja del byte-direccionamiento es clara cuando consideramos aplicaciones que procesan datos de un byte a la vez. El acceso de un solo byte en un sistema direccionable por bytes solo requiere la emisión de una sola dirección. En un sistema direccionable de palabra de 16 bits, primero es necesario calcular la dirección de la palabra que contiene el byte, buscar esa palabra y luego extraer el byte de la palabra de dos bytes. Aunque los procesos para la extracción de bytes son bien entendidos, son menos eficientes que el acceso directo al byte. Por esta razón, muchas máquinas modernas son direccionables por byte.

1

La capacidad de respuesta es el tamaño de una unidad de memoria que tiene su propia dirección. También es la parte más pequeña de la memoria que puede modificar sin afectar a sus vecinos.

Por ejemplo: una máquina donde los bytes son los 8 bits normales, y el tamaño de la palabra = 4 bytes. Si es una máquina direccionable por palabra, no existe la dirección del segundo byte de int. El tratamiento de cadenas (por ejemplo, una matriz como char str[]) resulta inconveniente, porque aún almacena caracteres agrupados. Modificar solo str[1] significa cargar la palabra que lo contiene, hacer algunos cambios/y/u operaciones para aplicar el cambio, y luego hacer un almacén de palabras.

Tenga en cuenta que esto es diferente de una máquina que no permite carga/almacenamiento de palabra no alineada (donde los 2 bits bajos de una dirección de palabra tienen que ser 0). Tales máquinas generalmente tienen una instrucción de carga/almacenamiento de bytes. Estamos hablando de máquinas sin siquiera eso.

Las direcciones de CPU aún pueden incluir los bits bajos, pero requieren que sean siempre cero (o ignórelos). Sin embargo, después de comprobar que son cero, se pueden descartar, por lo que el resto del sistema de memoria solo ve la palabra dirección, donde dos palabras adyacentes tienen una dirección que difiere en 1 (no 4). Sin embargo, en una CPU de 16 bits donde un registro solo puede contener 64k direcciones diferentes, no es probable que haga esto. Cada dirección de CPU separada se referiría a 2 bytes de memoria diferentes, en lugar de descartar el bit bajo. La memoria direccionable por palabras 2B le permite abordar 128kiB de memoria, en lugar de solo 64kiB con memoria direccionable por bytes.

Dato curioso: ARM solía usar los 2 bits bajos de una dirección como control aleatorio para cargas de palabras no alineadas. (Pero siempre tenía byte instrucciones de carga/almacenamiento.)


Consulte también:


Tenga en cuenta que el bit direccionable de memoria podría existir , pero no lo hace Los bytes de 8 bits son casi universalmente estándar ahora. (Las computadoras antiguas a veces tenían bytes más grandes, consulte la sección de historial de wikipedia's Byte article).