Proyecto Final Fase 1 - PanAMD/SSPA_D12_E5_MIPS GitHub Wiki

Fase 1:

Procesador MIPS 32 bits.

Para entrar en contexto con está investigación, comencemos por conocer que es, este (de acuerdo al acrónimo es “Microprocessor without Interlocked Pipeline Stages”), es un procesador con reducidas instrucciones RISC, desarrollado obviamente por MIPS Computer Systems. Dichos procesadores MIPS son parte de una gran familia de procesadores RISC, nos referimos desde el primer procesador R2000 en 1986 (el juego de instrucciones desde entonces ha avanzado mucho); hasta las actuales MIPS32 y MIPS64. El procesador MIPS en general tiene una arquitectura bastante sencilla (por lo cual es muy utilizada en sistemas embebidos), está es una de las razones por las que las universidades lo utilizan para el estudio de la arquitectura de computadores.

Características generales:

Es un procesador RISC segmentado (pipelining) de 32 bits y direcciones de 32 bits (es decir, en base a una instrucción hace uso de varias partes de la CPU, pero no al mismo tiempo, sino que tiene distintas fases de ejecución, de modo que se pueda hacer instrucciones nuevas sin que la anterior haya terminado aún).

Instrucciones de tamaño fijo, esto para una rápida decodificación de las instrucciones.

Almacenamiento en memoria en big-endian o Little-endian.

32 registros de propósito general de clasificación registro-registro.

En implementación, tiene un bajo consumo energético, gran disponibilidad de herramientas de desarrollo.

El acceso a memoria es a través de operaciones de carga/almacenamiento (transferencia de datos).

Puede procesar números enteros binarios de 32 bits, con y sin signo.

Tiene la capacidad de procesar números binarios reales o de punto flotante en simple y doble precisión.

Puede mover bytes, medias palabras y palabras, desde el registro hacia la memoria y viceversa.

Posee 32 registros de 32 bist cada uno (y se requieren 5 bits para especificar un registro).

Posee tres tipos de formatos de instrucciones (y aunque en esta primer fase solo veremos el formato R), esta el formato tipo J y el formato tipo I.

Las instrucciones ocupan una palabra alineada (es decir, que las direcciones de las instrucciones son múltiplos de 4).

Para acceder a una palabra se leen 4 bytes.

Elementos generales:

Los elementos generales del procesador MIPS de 32 bits, en realidad comenzaron basándose en la arquitectura tipo Harvard, pero a lo largo del tiempo en que han evolucionado dichos procesadores, hay una combinación entre esta y el tipo de arquitectura de Von Neumann, los siguientes elementos son prueba de ello.

ALU (Arithmetic Logic Unit): Es la parte encargada de realizar todas las operaciones tanto aritméticas (sumas, restas, multiplicación, etc.) y lógicas (comparaciones, AN, OR, etc.), dichas operaciones son enviadas desde la unidad de control las hace la ALU, y el resultado se guarda en un buffer o acumulador.

Unidad de control (Control Unit): Es un circuito combinacional (es decir, un circuito electrónico en el que el valor que hay de salida está determinado en un instante; por el valor de las entradas en ese mismo instante, por lo que podríamos entenderlo como que es un circuito que carece de memoria), que se encarga principalmente de interpretar las instrucciones almacenadas en la memoria y envía las ordenes a los diferentes componentes o elementos de la computadora para que se puedan ejecutar. La unidad de control contiene el registro contador programa, que guarda la dirección de memoria de la siguiente instrucción y está se incrementa al realizarla, de modo que al tener este registro, la unidad de control va recorriendo el programa en la memoria.

Registros: Lugar donde se almacenan temporalmente los datos para procesarlos cuando se requiera. Los registros pueden ser visibles al usuario (tales como los registros de propósito general, registro de datos, registro de direcciones o códigos de condición) o pueden ser registros de control y de estado, que son aquellos que se utilizan para controlar las operaciones del procesador, estás no son visibles al usuario mayormente, pero otras se pueden acceder con instrucciones máquina.

Memoria: Las nuevas computadoras han añadido memorias caché con algoritmos que son capaces de predecir qué datos se van a usar, al menos el procesador MIPS su memoria es RAM (Memory Random Access), siendo el lugar en el que se tiene las instrucciones del programa y datos, a este se puede acceder de forma aleatoria.

Dispositivo de entrada/salida: Son los dispositivos auxiliares que se encuentran conectados a la CPU de la computadora, estos elementos permiten realizar operaciones de entrada/salida complementando al procesado de datos que hace la CPU y que no pertenecen a esta.

Buses de entrada y salida: Los buses son los encargados de unir las distintas partes o unidades y distribuir los datos entre la memoria y los periféricos, hay tres tipos de buses. Bus de datos: que es aquel que intercambia datos o instrucciones entre los elementos de la computadora. Bus de direcciones: envía las direcciones de memoria que van desde la CPU para poder tomar los datos necesarios. Bus de control: por su parte, envía las ordenes de la UC (Unidad de Control), para poder controlar cada componente del sistema.

Reloj interno: Todos los componentes anteriores trabajan de forma sincronizada por impulsos, el reloj es el encargado de proporcionar los pulsos para que todos los elementos del procesador se sincronicen.

Unidad de decodificación: Es la encargada de decodificar las instrucciones para determinar a qué instrucción corresponde la secuencia de bits que se acaba de leer y saber que debe hacer el procesador con dichos datos.

Set de instrucciones:

Las instrucciones son las acciones que nuestro procesador puede ejecutar, las instrucciones codifican tanto una operación básica, como lo que se está realizando con unos datos en memoria o en los registros y, además, a los datos accedidos con un modo de direccionamiento en específico.

El repertorio de instrucciones de un procesador entonces está definido por las operaciones que se puedan realizar con los datos, así como el tipo de datos y los modos de direccionamiento que utilicen.