Ha pasado un tiempo desde que observé los recientes procesadores Microchip & He estado tratando de aprender un poco sobre el conjunto de instrucciones PIC32 MIPS. Noté que hay dos conjuntos de instrucciones de rama; La guía de programación dice esto:
4.1.3.2 Retrasos de ramificación y la ranura de retardo de ramificación
Todas las ramas tienen un retraso arquitectónico de una instrucción. La instrucción que sigue inmediatamente a una rama se dice que es en la ranura de retardo de rama. Si se coloca una instrucción de bifurcación o salto en la ranura de retardo de bifurcación, la operación de ambos Las instrucciones no están definidas.
Por convención, si una excepción o interrupción impide la finalización de una instrucción en la ranura de retardo de bifurcación, el la secuencia de instrucciones continúa al volver a ejecutar la instrucción de bifurcación. Para permitir esto, las ramas deben ser reiniciables; las llamadas de procedimiento no pueden usar el registro en el que se almacena el enlace de retorno (generalmente GPR 31) para determinar el objetivo de la rama dirección.
4.1.3.3 Sucursal y sucursal probable
Las instrucciones de bifurcación ejecutan la instrucción en la ranura de retardo.
Las instrucciones probables de bifurcación no ejecutan la instrucción en la ranura de retardo si no se toma la bifurcación (se dice que anule la instrucción en la ranura de retardo).
Aunque las instrucciones de Branch Likely están incluidas en esta especificación, se recomienda encarecidamente el software evitar el uso de las instrucciones de Branch Likely, ya que se eliminarán de una futura revisión del MIPS Arquitectura.
¿Podría alguien aclarar lo que están diciendo aquí? ¿Difieren en el número de ciclos de CPU tomados en cada caso?
Estoy acostumbrado a las arquitecturas de bifurcación de los PIC de 8 y 16 bits ("salto de bifurcación") donde ejecutas o saltas sobre una instrucción (esto suena como Branch Likely), y estoy acostumbrado a la arquitectura de bifurcación de los DSP de TI C2000 (donde todo lo que obtiene es una bifurcación o bifurcación condicional a una dirección). Pero no entiendo bien cómo asignar las instrucciones de la rama MIPS a mis conocimientos existentes.