Alineación de código de máquina

Estoy tratando de entender los principios de la alineación del código de máquina. Tengo una implementación de ensamblador que puede generar código de máquina en tiempo de ejecución. Utilizo la alineación de 16 bytes en cada destino de rama, pero parece que no es la opción óptima, ya que he notado que si elimino la alineación, a veces el mismo código funciona más rápido. Creo que tiene algo que ver con el ancho de la línea de caché, por lo que algunos comandos son cortados por una línea de caché y la CPU experimenta paradas debido a eso. Entonces, si se insertan algunos bytes de alineación en un lugar, moverá las instrucciones a otro lugar y pasará la línea del borde de la caché .

Esperaba implementar un procedimiento de alineación automática, que puede procesar un código en su conjunto e insertar la alineación de acuerdo con las especificaciones de la CPU (ancho de línea de caché, 32/64 bits, etc.) ...

¿Alguien puede dar algunas pistas sobre este procedimiento? Como ejemplo, la CPU de destino podría ser la plataforma Intel Core i7 CPU de 64 bits.

Gracias

Respuestas a la pregunta(4)

Su respuesta a la pregunta