es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cuál es la duración de la instrucción de ramificación de ensamblaje condicional para diferentes situaciones en ARM Cortex-M4?

Estoy tratando de determinar la duración exacta en ciclos de reloj para el bucle de retraso simple debajo:

bucle: subs r2, r2, 1
bne bucle

El manual técnico Cortex-M4 dice: 1 + P, donde P es:

El número de ciclos requeridos para una recarga de pipeline. Esto varía de 1 a 3 según la alineación y el ancho de la instrucción de destino, y si el procesador logra especificar la dirección temprano.

ARM9 (pipeline de 5 etapas) tiene 3 ciclos en este caso para “bne” y 1 ciclo para “subs”. Cortex-M4 tiene un pipeline de 3 etapas, pero parece bastante similar ya que las dos primeras etapas son las mismas…

Entonces mi pregunta es: según el manual de referencia, puede ser de 2 a 4 ciclos, ¿verdad? ¿Cuándo son 2, cuándo 3 y cuándo 4? En un pipeline de 3 etapas, sería lógico tener al menos 3, pero parece posible tener solo 2 ciclos. ¿Hay algún tipo de predicción de ramificación involucrada?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Según la información proporcionada en el Manual de Referencia Técnica de Cortex-M4, la duración exacta del bucle de retardo simple no se puede determinar con certeza. El manual indica que el número de ciclos necesarios para una recarga de pipeline (P) oscila entre 1 y 3 dependiendo de diversos factores, como la alineación de las instrucciones, el ancho y la especulación.

    En este caso específico, la instrucción ‘subs’ toma 1 ciclo y la instrucción ‘bne’ toma 3 ciclos, por lo que el número mínimo de ciclos requeridos sería 4, suponiendo que no sea necesaria ninguna recarga de pipeline. Sin embargo, si se requiere una recarga de pipeline, podría aumentar el número de ciclos a 5, 6 o 7 dependiendo de los factores mencionados anteriormente.

    Es posible que la predicción de saltos esté involucrada, lo que podría afectar el número de ciclos necesarios, pero sin información más específica es difícil determinar cómo esto afectaría el tiempo del bucle.

Comments are closed.