PROCESADOR MIPS DE 32 BITS - AlexDominguez18/MIPS_32_BITS GitHub Wiki

¿Qué es MIPS?

MIPS por sus siglas Microprocessor without Interlocked Pipeline Stages es toda una familia de microprocesadores de la arquitectura RISC desarrollados por MIPS technologies.

RISC es el acrónimo de Reduced Instruction Set Computer, es decir, conjunto reducido de instrucciones de computadora. Se entiende por procesador RISC aquel que tiene un conjunto de instrucciones con unas características determinadas. Gracias a las instrucciones se crean los programas. Existen muchos tipos entre ellas , destacan las aritméticas, las lógicas y las de control de flujo.

El término "reducido" es utilizado para referirse al grado de sencillez que tienen las instrucciones RISC, y no por ser pocas instrucciones, ya que todos los procesadores tienen muchísimas. Las instrucciones son más sencillas de implementar en la propia CPU, ocupan menos espacio los bloques lógicos que las tienen que traducir haciendo que el sistema pueda tener frecuencias de funcionamiento mayores.

Gracias a esto la unidad de control, que es la encargada de gestionar que los bloques funcionales como la unidad aritmética lógica o la de punto flotante realicen su función, puede ser más sencilla que con otras arquitecturas. Esto permite obtener más espacio dentro del propio chip para otros elementos.

Se suelen añadir así una mayor cantidad de registros que permiten tener más datos de forma interna en la CPU lo cual lleva a trabajar en ciertas ocasiones de forma más eficiente.

MIPS-LOGO

Originalmente, MIPS fue diseñado para la computación de propósito general, y durante los años 1980 y 1990, los procesadores MIPS para personales , estaciones de trabajo y servidores de ordenadores fueron utilizados por muchas empresas como Digital Equipment Corporation , MIPS Computer Systems , NEC , etc.

Durante la década de 1990, MIPS se convirtieron en una presencia importante en el mercado de los procesadores embebidos, y por la década de 2000, la mayoría de los procesadores MIPS eran para estas aplicaciones. En el mediados y finales de los años 1990, se estima que una de cada tres microprocesadores RISC producido era un procesador MIPS.

La primera versión de la arquitectura MIPS fue diseñado por MIPS Computer Systems por su R2000 microprocesador, la primera implementación MIPS, llamada MIPS I, esto para diferenciarla de las posibles siguientes versiones.


CARACTERISTICAS

MIPS es una arquitectura de carga / almacenamiento (también conocido como una arquitectura de registro-registro); a excepción de las instrucciones de carga / almacenamiento utilizados para acceder a la memoria , todas las instrucciones operan en los registros. MIPS I tiene treinta y dos registros de propósito general de 32 bits.

INSTRUCCIONES

Las instrucciones se dividen en tres tipos: R, I y J. Cada instrucción comienza con un código de operación de 6 bits. Además del código de operación, las instrucciones de tipo R especifican tres registros, un campo de cantidad de desplazamiento, y un campo de función; instrucciones de tipo I especifican dos registros y un valor inmediato de 16 bits; instrucciones de tipo J siguen el código de operación con un objetivo de salto de 26 bits. A los campos MIPS se les da una serie de nombres para su rápida identificación:

Op: Operación básica de la instrucción, tradicionalmente llamada código de operación.

Rs: Primer registro operando fuente.

Rt: Segundo registro operando fuente.

Rd: Registro operando destino, donde se almacena el resultado de la operación.

Shamt: Tamaño de desplazamiento (shift amount).

Funct: Se le denomina código de función.

Formato_de_instrucciones_bits

MIPS I tiene instrucciones que cargar y almacenar bytes de 8 bits, 16 bits medias palabras, y las palabras de 32 bits. Sólo un modo de direccionamiento es compatible: base + desplazamiento. Desde MIPS I es una arquitectura de 32 bits, las cantidades de carga menos de 32 bits de requiere el dato a ser o bien con signo o cero extendido a 32 bits.

Instrucciones aritmético-lógicas:

El tipo de formato de las instrucciones aritméticas y lógicas es de tipo R y el número de operandos en una operación de este tipo es siempre tres. Estos operandos son siempre registros, el modo de direccionamiento empleado es de registro.

ddddddddd

Operaciones aritmeticas de suma y resta respectivamente.

Instrucciones de salto condicional:

La toma de decisiones en lenguajes de programacion comunmente se representa usando la sentencia if (si condicional). El lenguaje ensamblador del MIPS incluye estas instrucciones, y son de tipo inmediato (I).

eeeeeee

La primera es la estructura de la instrucción “slt” y la segunda es la estructura de la instrucción slt en modo inmediato (slti).

Instrucciones de bifurcación (salto incondicional) :

Una bifurcación es un salto incondicional, es decir, la instrucción hace que la maquina siga siempre este salto. Para diferenciar este salto con el condicional, el nombre que recibe esta instrucción es “jump” (tipo J). Puede verse como un switch case en programación. jjjjjjjjj


ALU

MIPS I tiene instrucciones para realizar sumas y restas (operaciones aritméticas). Estas instrucciones se abastecen a partir de dos operandos GPRS (rs y rt), y escribe el resultado a un tercer GPR (rd). MIPS tiene instrucciones para llevar a cabo bit a bit las operaciones lógicas; AND, OR, XOR, y NOR.


SALTO Y BRANCH

Branch (o ramificación) es la acción de la ejecución de una secuencia de instrucción diferente como resultado de la ejecución de una instrucción de bifurcación. Instrucciones de ramificación se utilizan para implementar el control de flujo en los bucles de programa y condicionales (es decir, la ejecución de una secuencia particular de instrucciones sólo si se cumplen ciertas condiciones). Podría decirse que la instrucción de ramificación puede ser un salto incondicional, en la que se ejecuta una secuencia de instrucciones diferente a la que se encontraba, todo esto para dar prioridad a otra serie de acciones para que se lleven a cabo antes que otras.

Mecánicamente, una instrucción de salto puede cambiar el contador de programa (PC) de una CPU .

Cuando una rama se toma , el contador de programa de la CPU se establece en el argumento de la instrucción de salto. Por lo tanto, la siguiente instrucción se convierte en la instrucción en esa dirección en la memoria . Por lo tanto, el flujo de control se queda como está. Cuando una rama no se toma , el contador del programa de la CPU no se ha modificado. Por lo tanto, la siguiente instrucción ejecutada es la instrucción después de la instrucción de salto. Por lo tanto, el flujo de control se modifica. Instrucciones_FPU