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.