Reciente

6/recent/ticker-posts

MIPS R2000: Instrucciones



MIPS R2000 y R3000: Instrucciones

Mips R2000A

Hoy este artículo dedicado a aquellos que estén cursando ingeniería informática. Aunque parezca un Procesador Obsoleto, el MIPS R2000 todavía se está utilizando para enseñar las bases de la estructura de computadores y lenguaje ensamblador en muchas universidades españolas, como la UDC, la UMU o la UCAM entre otras. En este primer artículo hablaremos principalmente sobre las instrucciones del MIPS, sus tipos y como se estructuran, pero antes que nada, un poco de historia:

Historia

Hoy nos vamos a centrar principalmente en las instrucciones del MIPS R2000, el cual es un procesador de 32 Bits a 15Mhz del año 1986, siendo el primer procesador RISC disponible comercialmente. De todas formas los chips que de verdad se llegarían a utilizar en equipos comerciales serían el R2000A y el R3000, que eran versiones mejoradas del R2000, uno de los equipos más conocidos que utilizarían este procesador sería el Silicon Graphics Indigo.

Silicon Grapghics Indigo


Instrucciones y Tipos

En la informática, cuando hablamos de instrucciones, generalmente nos referimos a un conjunto de datos que siguen cierta estructuras, los cuales son interpretados por el procesador para realizar operaciones, dicho de otra manera, ser podría decir que las instrucciones son los comandos que le enviamos a un procesador realizar todo tipo de operaciones.

En el MIPS las instrucciones son de 32 Bits, eso significa que, si una instrucción es una tabla, va a estar compuesta de 32 huecos numerados del 0 al 31 los cuales contendrán un 0 o un 1. En función del tipo de instrucciones que estemos utilizando, estos huecos se  agrupan de varias formas diferentes ya que en función de la operación que estemos realizando necesitaremos datos diferentes. En el caso del MIPS tenemos 3 tipos de instrucciones:


Tipo R

Son instrucciones artimético-lógicas(Sumar, restar, OR, AND, etc...). Las instrucciones de tipo R están compuestas por 6 campos:

  • Op: Código de operación, ocupa 6 Bits (del 31 a 26)
  • rs: Primer valor a operar, ocupa 5 Bits (del 25 a 21)
  • rt: Segundo valor a Operar, ocupa 5 Bits (del 20 a 16)
  • rd: Destino del resultado de la operación, ocupa 5 Bits (del 15 al 11)
  • Shamt: Desplazamiento, ocupa 5 Bits (del 10 al 6)
  • Funct: Campo función., ocupa 6 bits (del 5 al 0)
Un ejemplo de una instrucción R en lenguaje ensamblador sería: add $1, $2, $3 siendo la operación que realiza esta de suma, lo que hará esta instrucción en este caso, es sumar los valores almacenados en $2 y $3 y guardarlos en $1. La estructura de estas instrucciones en lenguaje ensamblador sería la siguiente:
add rd, rs, rt.

Tipo I

Las instrucciones de tipo I se utilizan para la realización de operaciones inmediatas. Las instrucciones de este tipo serían: lw, sw beq y las terminadas en i como addi por ejemplo. Las instrucciones de tipo I están compuestas por 4 campos:

  • Op: Código de operación, ocupa 6 Bits (del 31 a 26)
  • rs: Primer valor a operar, ocupa 5 Bits (del 25 a 21)
  • rt: Segundo valor a Operar, ocupa 5 Bits (del 20 a 16)
  • etiqueta/valor inmediato: Valor inmediato con el que operar o etiqueta en el caso de salto, ocupa 16 bits (del 15 al 0)

Un ejemplo de estas operaciones serían, retomando el ejemplo anterior, sería addi $4, $5, 22 donde 22 sería el valor inmediato, $4 el destino para guardar la operación y $5 la ubicación del dato a sumarle al valor inmediato, la estructura de esta instrucción sería addi rt, rs, inmediato.

Otro ejemplo, pero esta vez tomando beq, sería beq $2, $3, #fin que sería un condicional. Lo que hace es comparar $2 con $3 y si son iguales, salta a la posición de la etiqueta #fin. La estructura de esta instrucción sería beq rs, rt, etiqueta.


Tipo J

Las instrucciones tipo J son instrucciones de salto incondicional, lo que hacen es directamente saltar a la etiqueta que le indiquemos, en este caso solo tienen 2 campos:

  • Op: operación, ocupa 6 bits (del 31 al 26)
  • Valor inmediato/etiqueta: ocupa 26 bits (del 25 al 0)
Un ejemplo sería Jump #fin, lo que haría sería saltar a la ubicación de la etiqueta en cuestión.


En el siguiente artículo trataremos el camino de datos Monociclo



Si quieres enterarte de nuevos artículos antes que nadie puedes unirte al Canal de Telegram de RetroGamesHistory

Publicar un comentario

0 Comentarios