¿Por qué el acceso a direcciones desalineadas genera 2 o más accesos?
Las respuestas normales a por qué la alineación de datos es acceder de manera más eficiente y simplificar el diseño de la CPU.
Una pregunta relevante y sus respuestas esaquí. Y otra fuente esaquí. Pero ambos no resuelven mi pregunta.
Supongamos que una CPU tiene una granularidad de acceso de 4 bytes. Eso significa que la CPU lee 4 bytes a la vez. El material que enumeré arriba dice que si accedo a datos desalineados, digamos la dirección 0x1, entonces la CPU tiene que hacer 2 accesos (uno desde las direcciones 0x0, 0x1, 0x2 y 0x3, uno desde las direcciones 0x4, 0x5, 0x6 y 0x7) y combina los resultados. No puedo ver por qué. ¿Por qué la CPU no puede leer datos de 0x1, 0x2, 0x3, 0x4 cuando publico la dirección de acceso 0x1? No degradará el rendimiento e incurrirá en mucha complejidad en los circuitos.
¡Gracias de antemano!