Estoy tratando de entender la diferencia entre el direccionamiento de bytes y el direccionamiento de palabras.
Se construye una unidad de memoria caché asociativa de conjuntos de 4 vías con una capacidad de 16 KB utilizando un tamaño de bloque de 8 palabras. La longitud de la palabra es de 32 bits. El tamaño del espacio de direcciones físicas es de 4 GB.
No de conjuntos en la caché $ = (16 * 1024) / (4 * 8 * 4) = 2 ^ 7 $
Si se utiliza el direccionamiento por palabra:
Desplazamiento de bloque $ = 3 \ bits $
Dado que PAS es $ 4 \ GB $ , el número total de direcciones = $ 2 ^ {32} / 2 ^ 2 = 2 ^ {30} $
Entonces, total de bits de dirección $ = 30 \ bits $
Estructura de la dirección:
Bits de etiqueta: $ 20 \ bits $
Establecer bits: $ 7 \ bits $
Bits de desplazamiento del bloque: $ 3 \ bits $
Ahora, suponga que la CPU quiere acceder al 3er byte de una palabra en particular.
- El controlador de caché usará el campo de conjunto $ 7 \ bits $ para indexar en un conjunto y luego comparando el campo de etiqueta $ 20 \ bits $ superior con todos los $ 4 $ bloques en el conjunto. Si se encuentra una coincidencia, se produce un acierto de caché y el desplazamiento del bloque $ 3 \ bits $ inferior para colocar una de las palabras fuera del $ 8 $ palabras en uno de los registros de propósito general. Luego, la CPU extrae el tercer byte de la palabra y realiza la operación.
- Si las etiquetas no coinciden, se produce una pérdida de caché, se envía una señal de lectura de memoria y, debido a la localidad espacial de referencia, se crea un bloque que contiene la la palabra se transfiere a la caché.
Si la CPU es direccionable por bytes:
Total de bits de dirección $ = 32 $
Estructura de la dirección: Bits de etiqueta: $ 20 \ bits $
Establecer bits: $ 7 \ bits $
Bits de desplazamiento del bloque: $ 5 \ bits $
Si la CPU quiere acceder al tercer byte de un palabra:
- Igual que en el Paso 1 de la palabra direccionable, pero la CPU ahora puede direccionar directamente el tercer byte de la palabra, usando el $ 2 \ bits $ desplazamiento de bytes. Sin embargo, estoy confundido sobre cómo sucedería eso. Dado que el tamaño del registro de la CPU tiene un ancho de 1 palabra, similar al direccionamiento de palabras, una palabra de las 8 palabras del bloque se transferirá al registro. Pero, ¿cómo ¿El paso de «extracción de bytes» es más fácil aquí? ¿Y por qué lo llamamos direccionamiento de bytes si todavía estamos direccionando una palabra?
- Igual que en el Paso 2 del direccionamiento de palabras. de la memoria al caché en caso de que se pierda el caché.
Además, esta respuesta dice que la memoria física siempre es byte direccionable. Ahora, ¿cuál es la diferencia entre la direccionabilidad de la memoria y la direccionabilidad de la arquitectura de la CPU?
Respuesta
Direccionamiento de palabras significa que el número de líneas en el bus de direcciones en el procesador es menor que el número de bits en la palabra misma.
Digamos que tenemos una palabra de 4 bytes. (espacio de direcciones de 32 bits)
Si esta máquina es una dirección de byte le, entonces el bus de direcciones de la CPU tendrá 32 líneas, lo que le permitirá acceder a cada byte en la memoria.
Si esta máquina es direccionable por palabra, entonces el bus de direcciones de la CPU tendrá 30 líneas ( $ 32 – log_ {2} 4 = 30 $ ), lo que le permite acceder a la memoria SOLAMENTE en palabras / fragmentos de 4 bytes y eso también de direcciones que son un múltiplo del tamaño de la palabra.
Ahora, si le pide a la CPU que obtenga un byte de una dirección en particular, primero eliminará los 2 bits menos significativos (por eliminar, me refiero a sobrescribirlos con 0 «s) de la dirección, buscar una palabra de la dirección resultante y devuelve un byte usando los 2 bits menos significativos como un desplazamiento dentro de la palabra obtenida.
Esto hace que el tiempo de acceso a la memoria aumente, ya que la CPU tiene que dedicar más tiempo a modificar la dirección y procesar la palabra buscada. Pero también ayuda a reducir el costo de hardware ya que la complejidad de los circuitos se reduce debido a la reducción en las líneas de bus de direcciones.
Sin embargo, esta sobrecarga nunca surge en una máquina direccionable por bytes, por lo tanto, «byte extraer «es más fácil.
Comentarios
- Entiendo lo que ‘ estás diciendo. Pero qué ‘ ¿Ocurrirá en caso de direccionamiento de bytes? Suponga que la CPU necesita el tercer byte de la palabra. Enviará la dirección de 32 bits con el mínimo de 2 bits significativos establecidos en 10, a la derecha t?Pero entonces, ¿cómo almacenará el byte dado que usa un registro de 1 palabra de ancho? ¿Ganó ‘ t la CPU en este caso también obtuvo la palabra de la caché y la almacenó en su ‘ s registro?
- Para su primera pregunta: Las CPU de direccionamiento de bytes tienen instrucciones de escritura separadas según el tamaño de los datos que se escribirán. Uno para un byte, uno para un byte doble, uno para un byte cuádruple, uno para una palabra, etc. (En realidad, cualquier CPU tiene instrucciones de escritura separadas para cada uno de los diversos tamaños admitidos de datos que se escribirán). El byte que se va a escribir se almacena generalmente en los 8 LSB del registro, luego se ejecuta la instrucción de escritura para un byte. Esto hace que SOLAMENTE los 8 bits LSB del registro se carguen en el bus de datos, y solo se modifica un byte en la dirección en la memoria.
- No lo hice ‘ No entiendo tu segunda pregunta. ¿Podría dar más detalles?
- Supongo que sucede lo mismo para leer un byte en una máquina direccionable por bytes, ¿verdad? Por ejemplo, digamos ‘ s que hay ‘ s una matriz de caracteres
char arr[10]
y la CPU quiere leer el tercer carácter, es decir,arr[2]
. Luego, después de acceder al byte usando una dirección de 32 bits, lo almacenará en los 8 LSB del registro. Pero en el caso de la palabra direccionable, la CPU primero calculará la dirección de la palabra a la que pertenece el tercer byte (es decir, sobrescribirá los 2 LSB con 0) y buscará la palabra en ella ‘ s registro. Después de eso, usará el desplazamiento de bytes para obtener el byte requerido. ¿Es esto correcto? - Muchas gracias. Le pediría que ponga todo esto junto en la respuesta original para que pueda ayudar a cualquier lector futuro.