En general, la velocidad de estimación en los procesadores modernos es extremadamente complicada. Esto es cierto no solo para los accesos no alineados sino en general.
Los procesadores modernos tienen arquitecturas segmentadas, desordenadas y posiblemente la ejecución paralela de instrucciones y muchas otras cosas que pueden afectar la ejecución.
Si no se admite el acceso no alineado, se obtiene una excepción. Pero si es compatible, puede o no tener una desaceleración dependiendo de muchos factores. Estos factores incluyen qué otras instrucciones estaba ejecutando antes y después de la desalineación (porque el procesador puede comenzar a buscar sus datos mientras ejecuta las instrucciones anteriores o seguir adelante y seguir las instrucciones mientras espera).
Otra diferencia muy importante ocurre si el acceso desalineado ocurre a través de los límites de la línea de caché. Wile, en general, un acceso 2x a la memoria caché puede ocurrir para un acceso no alineado, la verdadera ralentización es si el acceso cruza un límite de la caché y causa una doble falta de caché. En el peor caso posible, una lectura desalineada de 2 bytes puede requerir que el procesador elimine dos cachelines de la memoria y luego lea 2 chachelines de la memoria. Eso es una gran cantidad de datos en movimiento.
La regla general para la optimización también se aplica aquí: primer código, luego mida, luego si y solo si hay un problema para encontrar una solución.
Regla general: las lecturas desalineadas en la mayoría de las arquitecturas dan como resultado ~ 2x de rendimiento comparado con una lectura alineada ya que se necesitan dos ciclos de lectura para obtener los datos y corregirlos. Las escrituras son un poco más complejas. –