Practica 7 Arquitectura de Computadoras

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 20

INSTITUTO POLITÉCNICO NACIONAL

UPIIZ “ZACATECAS.”

Arquitectura de Computadoras

Fernando Olivera Domingo

Práctica 7

Alumno

José Martín Cortes Lozano

Dalia Naomi García Macías

Semestre

Quinto Semestre

Grupo

5CM1

19 de Noviembre de 2024,
Zacatecas, Zac
Introducción

El procesador RISC-V, ampliamente utilizado en la investigación y desarrollo, se


caracteriza por su enfoque en la simplicidad y eficiencia, utilizando un conjunto
reducido de instrucciones (RISC, por sus siglas en inglés). Dentro de este
procesador, la unidad de control desempeña un papel fundamental al generar
señales que permiten coordinar el flujo de datos y las operaciones de los diversos
módulos internos, como la ALU (unidad aritmética lógica), el banco de registros y
la memoria. En esta práctica, se busca implementar esta unidad de control en
hardware, aprovechando las capacidades reprogramables de una FPGA Xilinx
Spartan 3.

Se utilizarán componentes modulares para la construcción de la unidad de control,


los cuales facilitarán la división funcional en subcomponentes denominados
PCControl y Decoder. Esto no solo permite una mayor claridad en el diseño, sino
también una validación más eficiente del comportamiento del sistema.

Objetivo

● Desarrollar una comprensión práctica y teórica de los componentes


esenciales que conforman un procesador moderno, específicamente la
unidad de control en un procesador basado en la arquitectura RISC-V.

Marco teórico

En el contexto de la arquitectura de computadoras, el procesador es el núcleo


encargado de ejecutar instrucciones mediante la interacción coordinada de varios
módulos internos. Estos módulos incluyen la unidad de control, la ALU, la memoria
y el banco de registros. El correcto funcionamiento del procesador depende, en
gran medida, de la capacidad de la unidad de control para interpretar instrucciones
y generar las señales necesarias para llevarlas a cabo.
Procesadores RISC-V y su Relevancia

El estándar RISC-V es una arquitectura abierta que ha ganado popularidad en el


ámbito académico e industrial debido a su flexibilidad, extensibilidad y diseño
eficiente. Este tipo de procesador utiliza un conjunto reducido de instrucciones que
facilita su implementación en hardware. En el diseño de un procesador RISC-V, la
unidad de control desempeña un papel fundamental al encargarse de decodificar
las instrucciones y generar señales que configuran el funcionamiento de otros
componentes, como el contador de programa, la memoria y la ALU.

Las instrucciones en RISC-V están organizadas en diferentes formatos, como R, I,


S, B, U y J, cada uno de ellos diseñado para realizar operaciones específicas,
desde cálculos aritméticos hasta accesos a memoria o saltos condicionales. Estas
instrucciones contienen campos como opcode, funct3 y funct7, que definen su
propósito y configuran el funcionamiento de los módulos del procesador.

Unidad de Control

La unidad de control es el componente encargado de orquestar el funcionamiento


del procesador. Su función principal es generar las señales de control necesarias
para que los módulos internos trabajen en conjunto, permitiendo ejecutar las
instrucciones de manera eficiente. En el diseño modular propuesto en esta
práctica, la unidad de control se divide en dos subcomponentes principales:
PCControl y Decoder.

● PCControl: Es el componente que controla el flujo del programa al


determinar si el contador de programa (PC) debe incrementarse
secuencialmente o modificarse en función de un salto condicional. Utiliza
entradas como el opcode, el campo funct3 y las banderas generadas por la
ALU (Zero, Negative, Carry y Overflow) para calcular la señal de control
correspondiente (PCSrc).
● Decoder: Este componente se encarga de generar las señales de control
para otros módulos del procesador, como la ALU, la memoria y el banco de
registros. Basándose en los campos de instrucción (opcode, funct3 y
funct7), el Decoder determina operaciones aritméticas, accesos a memoria
y escritura en registros.

Señales de Control

La comunicación entre los componentes del procesador se realiza a través de


señales de control. Estas señales permiten seleccionar datos, habilitar
operaciones y definir flujos de ejecución. Entre las señales más importantes
utilizadas en el diseño están:

● PCSrc: Selecciona la fuente del próximo valor del contador de programa,


permitiendo la implementación de saltos condicionales y no condicionales.
● ResultSrc: Determina el origen de los datos que se escriben en el banco de
registros, ya sea el resultado de la ALU, datos de memoria o el valor del
contador de programa.
● MemWrite: Controla la escritura en la memoria de datos, habilitando o
deshabilitando esta operación según la instrucción ejecutada.
● ALUControl: Configura la operación que debe realizar la ALU, como sumas,
restas, desplazamientos o comparaciones.
● RegWrite: Habilita la escritura en el banco de registros, permitiendo
almacenar resultados de operaciones en registros específicos.

FPGAs y VHDL

Las FPGAs (Field Programmable Gate Arrays) son dispositivos programables que
permiten implementar sistemas digitales personalizados. En esta práctica se utiliza
una FPGA Xilinx Spartan 3, ideal para proyectos educativos y de prototipado
debido a su capacidad de implementar arquitecturas complejas como
procesadores RISC-V. El diseño y simulación del sistema se realiza en VHDL
(VHSIC Hardware Description Language), un lenguaje estándar para la
descripción y modelado de sistemas digitales que permite trabajar con diseños
estructurales y comportamentales.
La implementación de la unidad de control en una FPGA no solo refuerza los
conceptos de arquitectura y diseño digital, sino que también proporciona
experiencia práctica en la síntesis y validación de circuitos digitales en un entorno
profesional. Esto prepara a los estudiantes para enfrentar desafíos reales en el
diseño de hardware y optimización de arquitecturas computacionales.
Desarrollo
Esta practica se conforma de tres componentes que trabajan en conjunto para poder
construir una unidad de control, a continuacion se explican los tres:

● Componente pccontrol
Este componente es responsable de generar la señal PCSrc, que controla los
saltos en el contador de programa (PC). Su propósito principal es determinar si el
procesador debe continuar ejecutando la próxima instrucción en orden secuencial
o realizar un salto condicional, basado en los valores de las banderas Z, N, C y V,
así como en el opcode y el campo funct3 de la instrucción. Las señales derivadas
de la entrada flags tienen los siguientes significados: la bandera Z (Zero) indica, al
estar en '1', que el resultado de la comparación o resta de dos operandos es igual
a cero; la bandera N (Negative) señala, al estar en '1', que el resultado de dicha
comparación es negativo; la bandera C (Carry) indica, al estar en '1', que la
comparación generó un acarreo; y finalmente, la bandera V (Overflow) señala, al
estar en '1', que el resultado de la comparación produjo un desbordamiento. Estas
señales son clave para evaluar las condiciones que determinan la ejecución de
saltos condicionales.

Estas señales son fundamentales para evaluar las condiciones necesarias para
los saltos condicionales.
Después de realizar lo anterior, el sistema verifica los valores de funct3 y el
opcode, lo que permite identificar el tipo de instrucción, siendo en este caso de
tipo B según el código del opcode. A continuación, se analiza el valor de funct3
para evaluar las condiciones específicas de cada instrucción de salto. Para la
instrucción BEQ, cuando funct3 = "000”, el salto ocurre si la bandera Z está activa,
indicando que el resultado de la operación es igual a 0. En el caso de la
instrucción BNE, cuando funct3 = "001", el salto ocurre si Z = 0, lo que indica que
el resultado no fue 0. Para la instrucción BLT, donde funct3 = "100", el salto ocurre
si el resultado de una operación XOR entre las señales N y V es 1. Para la
instrucción BGE, con funct3 = "101", el salto se realiza si la negación de la
operación XOR entre N y V da como resultado 1. En la instrucción BLTU, cuando
funct3 = "110", el salto ocurre si la negación de la señal de entrada C es 1.
Finalmente, para la instrucción BGEU, con funct3 = "111", se realiza el salto si la
señal C es igual a 1. Estas verificaciones determinan las condiciones bajo las
cuales se ejecuta cada salto.
Después de analizar todas las comparaciones necesarias para determinar cuándo
PCSrc debe ser '1' o cuándo corresponde un salto de línea, concluimos que, si no
se cumple ninguno de los casos evaluados, PCSrc se establece en '0'. Esto indica
que el procesador debe continuar ejecutando la siguiente instrucción en orden
secuencial.
● Componente decoder

El módulo Decoder es responsable de interpretar las instrucciones del procesador


y generar las señales de control necesarias para ejecutar las operaciones
correspondientes. Estas señales controlan el comportamiento de componentes
como la ALU, la memoria, y el banco de registros.
El comportamiento del decodificador está organizado en función del opcode, que
determina el tipo de instrucción (R, I, S, B, J). Dentro de cada tipo de instrucción,
se configuran señales específicas.

Para las instrucciones tipo R (operaciones aritméticas/lógicas), se utiliza el campo


funct3 (y en algunos casos funct7) para definir el tipo de operación que realizará la
ALU. En este caso, la escritura en registros (RegWrite) está habilitada, mientras
que el acceso a memoria (MemWrite) no lo está.

En las instrucciones tipo I (como cargas de memoria), se habilita la lectura de


memoria y se extiende el inmediato (ImmSrc) según el formato de la instrucción,
las instrucciones tipo S (almacenamiento en memoria) configuran la señal
MemWrite para permitir escribir datos desde un registro en una posición de
memoria.
Las instrucciones tipo B (saltos condicionales) están relacionadas con el módulo
PCControl, ya que este módulo también evalúa las condiciones de salto en base a
las señales generadas y finalmente en las instrucciones de salto incondicional
(JAL, JALR), el decodificador configura tanto el salto del programa como el
registro donde se almacena la dirección de retorno.
Cada instrucción establece múltiples señales de control para los diferentes
módulos del procesador, como ALUControl(control de la operación de la ALU),
ImmSrc (extensión de inmediato), RegWrite (habilitación de escritura en registros)
y otras.

● Unidad de control
Finalmente, en el componente de unidad de control, relacionamos los dos
componentes anteriores, donde este es el elemento responsable de coordinar el
funcionamiento del procesador. Su tarea principal consiste en producir las señales
de control requeridas para que los módulos internos operen de forma conjunta,
garantizando una ejecución eficiente de las instrucciones.
Simulación
En la imagen siguiente se observa como la salida PCSrc va cambiando según los
valores de Flags en la operación de tipo B, las otras salida se mantienen
constantes según las condiciones indicadas. Para el tipo R, las condiciones
cambian de manera que los valores son diferentes según sea el caso, por ejemplo,
para el valor de ALUControl depende totalmente de lo que vale funct3 y funct7.

Por otro lado, en la operación de tipo I, además de los valores determinados para
las otras salidas, el valor de ALUControl depende de igualmente de funct3 y
funct7. Igualmente en la operación de tipo Load el valor SS depende solamente de
funct3, por lo que las otras salidas solo dependen del tipo de operación.
Finalmente las operaciones de tipo S, JAL, JALR, LUI y AUIPC solo dependen de
las condiciones dadas para su tipo de operación. Esto se puede observar en la
imagen siguiente.
Conclusión
Al finalizar la práctica, se logró implementar y verificar la funcionalidad de una
unidad de control para un procesador basado en la arquitectura RISC-V, utilizando
un diseño modular compuesto por los componentes PCControl y Decoder. A
través de la descripción en VHDL y la síntesis en una FPGA Xilinx Spartan 3, se
pudo observar cómo las señales de control generadas permitieron coordinar
correctamente las operaciones del procesador, incluyendo la gestión del contador
de programa, la configuración de la ALU y la interacción con el banco de registros
y la memoria.

La separación del diseño en módulos independientes facilitó el desarrollo, la


depuración y la simulación de los componentes, permitiendo un enfoque
estructurado para resolver posibles errores. Durante el proceso, se reforzaron
conceptos clave de arquitectura de procesadores, como la decodificación de
instrucciones, el manejo de banderas y la generación de señales de control
específicas para cada tipo de instrucción.

Esta práctica permitió aplicar los conocimientos teóricos sobre arquitecturas


RISC-V en un entorno práctico, consolidando la relación entre diseño digital y
arquitectura de computadoras. Además, el uso de herramientas profesionales
como Xilinx ISE ofreció experiencia en el flujo de trabajo estándar para proyectos
de diseño en hardware, lo que resultó invaluable para la formación en ingeniería
digital.
Referencia
● HardZone. (n.d.). *¿Qué es la unidad de control?* HardZone. Recuperado
el 19 de noviembre de 2024, de
[https://hardzone.es/reportajes/que-es/unidad-control/](https://hardzone.es/r
eportajes/que-es/unidad-control/)
● Ensambler. (n.d.). ¿Qué es la ALU y por qué es importante dentro de un
procesador? Recuperado el 19 de noviembre de 2024, de
https://ensambler.com/que-es-la-alu-y-por-que-es-importante-dentro-de-un-
procesador/
● VHDLwhiz. (n.d.). VHDLwhiz. Recuperado el 19 de noviembre de 2024, de
https://vhdlwhiz.com

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy