Comprender el intervalo de retardo de rama y la captación previa de predicción de rama en canalización de instrucciones

Déjame definir:

  • Ranura de retardo de bifurcación: Normalmente, los ensambladores reordenan las instrucciones para mover algunas instrucciones inmediatamente después de la instrucción de bifurcación, de modo que la instrucción movida siempre se ejecutará, independientemente de si se toma o no, sin dejar el sistema en un estado inconsistente.

  • Prefetch de predicción de rama: predecir cuál será el resultado de la condición de bifurcación y luego precargar instrucciones de la ubicación resultante, para que se ejecuten inmediatamente después de la instrucción de bifurcación.

Ahora , consideremos la siguiente secuencia de ejecución (a continuación, F: extracción de instrucción, D: decodificación de instrucción, X: eXecute, M: acceso a la memoria, W: escribir de nuevo):

BRANCH F D X M W INSTR1 F D X M W INSTR2 F D X M W INSTR3 F D X M W 

Por lo general, la condición de la rama se evalúa y ejecuta en la etapa X. En esta etapa, INSTR1 y INSTR2 ya están iniciadas y estas son las instrucciones que pueden verse afectadas por nuestra elección de utilizar el retardo de rama. ranuras o precarga de predicción de rama o ambos. No encontré ningún texto para discutir esto claramente. Así que intenté adivinarlo de la siguiente manera:

  • Cuando usamos ambos, la secuencia de instrucciones sería:

    BRANCH: branch-instruction INSTR1: branch-delay-slot INSTR2: branch-prediction-prefetch 
  • Cuando usamos solo la predicción de rama, la secuencia de instrucciones sería:

    BRANCH: branch-instruction INSTR1: branch-prediction-prefetch-1 INSTR2: branch-prediction-prefetch-2 
  • Cuando usamos solo ranuras de retardo de rama, la secuencia de instrucciones sería:

    BRANCH: branch-instruction INSTR1: branch-delay-slot-1 INSTR2: branch-delay-slot-2 

¿Estoy en lo cierto con esto? ¿Es así como sucede esto en realidad para diferentes casos? ¿O hay algunos detalles más?

Comentarios

  • No ' asimilo el " Cuando usamos solo la secuencia branch ": ¿cómo puede tener brach-delay-slots? Además, mostrar la pieza del ensamblador que parece tener en su encabezado sería aclaratorio.
  • (1) " No ' t asimilar la " Cuando usamos solo la secuencia rama ": ¿cómo puede tener brach-delay-slots? " – arreglé la oración, accidentalmente la dejé incompleta. Espero que tenga sentido ahora. (2) No entendí esto: " Además, mostrar la pieza del ensamblador que parece tener en el encabezado sería aclaratorio. " Sí quiere decir, debo especificar el ensamblador con el que estoy trabajando? En caso afirmativo: estoy leyendo el capítulo sobre canalización del libro " Organización y diseño informático " de Patterson. Entonces, lidiar con teoría pura y resolver problemas de ejercicios.

Respuesta

Sí, eso podría ser lo que sucedería, aunque no recuerdo ninguna arquitectura que combinara ranuras de predicción y demora: si tiene predicción, puede ejecutarse (búsqueda en una memoria pequeña) en paralelo con el paso de ejecución, por lo que no se necesitarían ranuras de demora.

Comentarios

  • gracias por confirmar, porque tales escenarios están cubiertos en el libro de ejercicios de problemas de Arquitectura de Computadora de Patterson. Da soluciones directas sin dar ninguna explicación. Tampoco el capítulo los contenidos discuten esto.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *