Camino de datos para instrucciones de formato R

De Wikitronica
Revisión del 14:17 8 nov 2013 de JCaceres (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

En la ejecución de una instrucción tipo R, lo primero que se realiza es la lectura de la instrucción de memoria y se incrementa el PC. Luego se leen dos registros -los operandos- del banco de registros del procesador, para ello el banco de registros recibe como entrada los números de los registros (5 bits). La lectura se realiza en cada flanco de reloj. También recibe como entrada el número del registro donde se realizará la escritura (32 bits). La salida del banco de registros corresponde a los datos leídos de los registros, estos serán las entradas de la ALU (32 bits) que realiza una operación con ellos y dirige el resultado (32 bits) a la entrada de datos del banco de registros para guardarlo.

Algunas instrucciones que forman parte de este grupo son:

  • Suma y resta de enteros: para add y sub, en caso de overflow el resultado no se guarda en el registro destino, en cambio addu y subu ignoran el overflow.
  • Multiplicación y división entera. Con signo se tienen las instrucciones mult y div, sin signo multu y divu. El resultado de la multiplicación es de 64 bits divididos en 32 bits de bajo orden (LO) y 32 bits de orden alto (HI). En la división el cociente se guarda en los 32 bits LO y el residuo en los HI; y si el divisor es "0" entonces el resultado es impredecible.
  • Operaciones de desplazamiento (shift operation) donde se encuentran las instrucciones "sll" (también usada para la multiplicación binaria), "srl" y "sra" si es un desplazamiento en una cantidad constante y los "sllv", "srlv" y "srav" si son en una cantidad variable, en ellas el bit de signo se desplaza desde la izquierda y se usa el registro $sa. "sll" y "srl" son los registros para el desplazamiento lógico a la derecha o izquierda y "sra" para el desplazamiento aritmético a la derecha. "sllv", "srlv" y "srav" son iguales a los mencionados anteriormente pero un registro se utiliza para la cantidad de cambio.
  • Las operaciones de movimiento de dato que se tienen en este tipo son: LO→rd (mflo rd), HI→rd (mfhi rd), LO→rs (mtlo rs) y HI→ rs(mthi rs).

Contributors

JCaceres, Magab992