Mapeo de la representación de la dirección hexadecimal a un conductor específico del bus del sistema

0

Me interesa cómo implementar la asignación de representación de dirección hexadecimal al contacto especificado del bus del sistema. Por ejemplo:

Permítanos tener la dirección lógica 0xAABBCCFF00 y queremos leer un byte ubicado en esa dirección.

¿Cómo se determina un contacto con el bus del sistema utilizado para impulsar la transferencia utilizando esa representación de dirección?

    
pregunta Dmitrii Bundin

1 respuesta

2

La pregunta depende de qué tan "vieja escuela" seas.

En los días de CPU simples de 8 bits con pequeños buses de direcciones de 16 bits, las direcciones se asignaron directamente 1: 1 al bus de direcciones.

Entonces, por ejemplo, con una CPU Z80, la dirección 0x8000 tendría la señal A15 HIGH y A0-A14 LOW. Luego usaría la lógica de decodificación de direcciones (una combinación de varias puertas lógicas) para hacer que su periférico o chip de RAM reaccionen a esa dirección. Es más común que un chip reaccione a un rango de direcciones, así que diga que toma los 8 bits superiores de la dirección como la dirección del "chip", que se decodifica para activar el Chip Select o Chip Enable, etc. pin del chip y los 8 bits más bajos de la dirección se introducen directamente en el chip para seleccionar uno de los 256 (por ejemplo) registros internos o ubicaciones de memoria.

Sin embargo, ahora las cosas son mucho más complejas.

Con las CPU más potentes, existe todo el concepto del mapa de memoria "Virtual". Este es un método mediante el cual diferentes bloques de la memoria, como los ve una aplicación, se asignan a direcciones de memoria física específicas. Por lo general, esto lo hace un dispositivo en la propia CPU llamada MMU o Unidad de administración de memoria.

Dependiendo de la complejidad de su CPU, esta podría ser una configuración bastante estática con solo unas pocas asignaciones diferentes (como en un microcontrolador), o podría ser un sistema completamente controlado por el propio software, como en su PC.

En la PC, por ejemplo, corresponde al núcleo (el corazón del sistema operativo) asignar los bloques de memoria (RAM real o memoria virtual almacenada en el disco) al espacio de direcciones virtuales.

Todo se vuelve muy complicado entonces.

    
respondido por el Majenko

Lea otras preguntas en las etiquetas