|
|
|
Ivan Magán Barroso |
|
Javier Basilio Pérez Ramas |
|
Miguel Péon Quirós |
|
|
|
|
Introducción |
|
Dispositivo experimental |
|
Arquitectura del sistema |
|
Herramientas software desarrolladas |
|
Estadísticas |
|
Estudio comparativo sobre la cache |
|
Reconfiguración |
|
Conclusiones |
|
|
|
|
|
|
Objetivo inicial del proyecto |
|
Diseño de un computador completo compatible con
el R2000 |
|
Core R2000 compatible a nivel binario |
|
Protocolo de periféricos y bus de sistema
compatible MIPS |
|
Gráficos alfanuméricos y controlador de teclado |
|
Diseño de una memoria cache para el
microprocesador |
|
Estudio de la capacidad de reconfiguración
dinámica de la FPGA Virtex aplicándola a la cache del microprocesador |
|
|
|
|
|
CORE MIPS R2000 |
|
Objetivo: ejecutar los mismos programas que el
simulador SPIM |
|
Protocolos de bus y periféricos según la
especificación de MIPS |
|
Memoria cache write-back |
|
|
|
|
|
|
La placa XVS de la Facultad de Informática no
está disponible hasta mediados de mayo |
|
La placa XVS del departamento de arquitectura de
computadores y automática no está disponible hasta principios de mayo |
|
Computador simulable disponible en enero |
|
Hasta disponibilidad de placas no es posible
realizar un estudio práctico ni continuar con el proyecto |
|
Problemas adicionales |
|
Simulador y ensamblador SPIM defectuoso |
|
XVS carece de una herramienta para cargar la RAM |
|
Hay que diseñar módulos hardware y herramientas
software para poder cargar la RAM |
|
|
|
|
|
Xilinx Foundation 2.1i no es válido en la
práctica |
|
El rutado de señales es inabordable |
|
Sólo el core R2000 tarda en sintetizarse más de
una hora |
|
La herramienta no es capaz de rutar todas las
señales, especialmente en presencia de grandes constantes |
|
Los problemas se solucionan con Foundation 3.1i |
|
Esta versión no está disponible hasta muy
avanzado el curso |
|
Sin embargo, el circuito sigue siendo demasiado
complejo, hay que conservar la jerarquía para que sea sintetizable en un
tiempo razonable. |
|
|
|
|
|
|
Semántica de las instrucciones de salto distinta
a la especificada por MIPS |
|
Opciones |
|
Seguir la semántica no estándar de SPIM |
|
Seguir la semántica estándar de MIPS |
|
No es un ensamblador puro |
|
Ofrece código hexadecimal mezclado con otro tipo
de datos |
|
Es necesario |
|
Realizar una herramienta que corrija el código
generado por SPIM y genere código binario para el R2000 |
|
|
|
|
|
No existe herramienta para cargar la RAM
estática de la XVS |
|
En las placas basadas en la XC4010 se podía
utilizar XSLOAD |
|
Hay que crear un módulo hardware y una
herramienta software para cargar la RAM a través del puerto paralelo |
|
Una vez diseñada, la herramienta será muy útil
en el futuro para todo tipo de proyectos |
|
|
|
|
Diseño de un computador completo |
|
Diseño de una memoria cache |
|
Preparar el computador para una futura
reconfiguración |
|
Crear una herramienta para reparar la salida de
SPIM y convertirla a binario |
|
Crear un módulo hardware y una herramienta
software para cargar la memoria de la placa XESS |
|
Estudio de rendimiento : computador con cache y
computador sin cache |
|
|
|
|
|
Dispositivo hardware |
|
FPGA Virtex de Xilinx |
|
Placa XESS XVS-800 |
|
Herramientas software utilizadas |
|
|
|
|
|
|
|
900.000 puertas lógicas equivalentes |
|
SelectRam+ (TM) |
|
Celdas reconfigurables más versátiles (SLICES) |
|
Capacidad de reconfiguración |
|
|
|
|
|
|
|
Bloques dedicados de memoria |
|
Memoria síncrona de doble puerto |
|
144.688 bits en total |
|
|
|
|
|
|
Inicialmente se emplea para programar la FPGA
VIRTEX |
|
Ha sido modificada para permitir la carga de la
memoria principal a través del puerto paralelo |
|
|
|
|
FPGA Virtex |
|
CPLD |
|
Memoria estática |
|
Interfaz VGA |
|
Interfaz PS/2 |
|
Interfaz de puerto paralelo |
|
|
|
|
|
Xilinx Foundation 3.1i |
|
La versión anterior no es utilizable en la
práctica |
|
XSTOOLS |
|
Simulador SPIM de microprocesador R2000 |
|
Se han descubierto varios defectos |
|
|
|
|
|
Microsoft Visual C++ 6.00 |
|
Desarrollo de Loadmem y Comspin |
|
LCC |
|
Compilador de ANSI C cruzado |
|
Genera código para el MIPS R2000 |
|
Útil para programar las pruebas de rendimiento |
|
|
|
|
Core R2000 |
|
Bus del sistema |
|
Controlador alfanumérico |
|
Controlador de teclado |
|
Controlador de memoria |
|
Cargador de memoria |
|
|
|
|
|
|
|
Bus interno del core 2000 |
|
Estilo “Common Data Bus” (CDB) |
|
Las peticiones se identifican por el que la
realiza |
|
El interesado escribe su identificador |
|
El módulo correspondiente responde |
|
32 bits de datos, 32 bits de direcciones, líneas
de control |
|
Permite transferencias de bloque |
|
|
|
|
|
|
Procesador RISC clásico |
|
32 registros de 32 bits |
|
Modelo lineal de memoria |
|
Coprocesadores del R2000 |
|
CP0: Coprocesador de control |
|
CP1: Coprocesador aritmético de coma flotante |
|
CP2,CP3 opcionales |
|
|
|
|
|
|
Instruction Fetch (First Half) |
|
Instruction Fetch (Second Hald) |
|
Register Fetch |
|
Execution |
|
Data Fetch (First half) |
|
Data fetch exception (DFE) |
|
específico de nuestra implementación |
|
DS (Second Half) |
|
Write Back |
|
|
|
|
|
|
Implementación del MIPS R2000 totalmente
compatible a nivel binario |
|
Se respetan todos los protocolos de bus, ciclos,
estructura de registros de control, etc... originales |
|
Gestión de excepciones, coprocesador CP0 |
|
Diferencias con el R2000 completo |
|
No hay coprocesador de coma flotante |
|
No hay gestión de memoria virtual |
|
No se permite entrada/salida no alineada |
|
|
|
|
|
|
|
|
Unidad de control microprogramada |
|
Dos niveles de microprogramación |
|
Alu monociclo para operaciones básicas |
|
Desplazamientos multiciclo |
|
Los desplazamientos de 1 y 8 bits ya están
multiplexados, se toma el más cercano y se realizan el resto de
desplazamientos |
|
Banco de registros implementado con SelectRam+
(TM) |
|
|
|
|
|
Las instrucciones que tienen un comportamiento
equivalente en un ciclo de ejecución concreto comparten entrada en el
microprograma |
|
Esta tabla hace corresponder la entrada de
microprograma correcta a cada opcode según el microcontador y el estado
general de la CPU |
|
|
|
|
|
Contiene sólo 35 entradas diferentes gracias al
módulo anterior |
|
Proporciona |
|
El valor de las señales de control de la CPU |
|
El siguiente estado |
|
Las señales de control de cálculo muy sencillo
no están en el microprograma sino que se generan mediante lógica
combinacional |
|
Por ejemplo, la señal de comienzo de la ALU |
|
|
|
|
Comunica al CORE con el bus del sistema |
|
Actúa ante fallos de cache o direcciones de mapped
I/O |
|
Adapta diferencias entre los protocolos del bus
del sistema y del bus interno. |
|
Optimizado para evitar la sobrecarga en
transferencias (1 ciclo al inicio únicamente) |
|
Regula el flujo desde el CORE al bus del sistema
en escrituras de bloque (ráfagas). |
|
|
|
|
|
Lógica de control de bus BLASA y de control de
la memoria cache perfectamente separadas |
|
Es trivial modificar el sistema para añadir
nuevas memoria cache de distintas características |
|
El sistema queda preparado para una futura
reconfiguración de la memoria cache. |
|
|
|
|
|
4 KB (además de memoria para tags y bits de
estado) |
|
Emplazamiento directo |
|
32 líneas de 4 palabras |
|
Política de Write-Back |
|
Escritura en reemplazo |
|
Mejora de la eficiencia |
|
|
|
|
|
Dispone de registros de estadísticas que
posibilitan realizar mediciones con facilidad |
|
Número de aciertos y número de fallos en lectura |
|
Número de aciertos y número de fallos en
escricuta |
|
Número de write-backs |
|
Registros mapeados en memoria de forma que son
accesibles desde el CORE R2000 |
|
|
|
|
|
|
Implementación del protocolo estándar de MIPS |
|
Señales |
|
SysAD, bus de datos y direcciones (32 bits) |
|
SysCMD, comando de bus (9 bits) |
|
Cinco señales para hand-shaking: |
|
RdRdy: el periférico puede aceptar una petición
de lectura dentro de dos ciclos |
|
WrRdy: el periférico puede aceptar una petición
de escritura dentro de dos ciclos |
|
... |
|
|
|
|
|
|
|
|
Release : el bus libera el micro para aceptar
una respuesta |
|
ValidOut:el micro ha puesto datos correctos en
el bus |
|
ValidIn: el periférico ha puesto datos correctos
en el bus |
|
Se han eliminado, respecto al protocolo completo
del MIPS R2000, peticiones por iniciativa de un periférico externo |
|
|
|
|
|
|
|
|
|
|
Dispositivo de visualización alfanumérico |
|
Señal VGA de 256*480 pixels |
|
Caracteres de 8x8 pixels |
|
Matriz de 32*60 caracteres |
|
Juego de 128 caracteres |
|
Vídeo inverso |
|
Juego de caracteres redefinible |
|
Bancos de SelectRam+ para almacenar el mapa de
pantalla y el juego de caracteres |
|
Segundo banco de RAM compartido con RAMDAC de la
placa XVS |
|
|
|
|
|
|
Lógica de bus del sistema |
|
E/S mapeada en memoria |
|
Dirección FFFFC: cambio de color de fondo y
carácter, activación |
|
Dirección FFFF8: escribir caracteres en la
pantalla |
|
|
|
|
|
|
Interfaz síncrono con teclado PS/2 |
|
Lógica de control de bus de sistema |
|
Entrada/salida mapeada en memoria |
|
FFFFF0 |
|
La palabra baja contiene el SCAN CODE de la
última tecla pulsada |
|
El bit menos significativo de la palabra alta
indica si hay alguna tecla pendiente por leer |
|
|
|
|
“Carga” información procedente del puerto
paralelo en la memoria del sistema |
|
Utiliza un protocolo con handsake para
transferencias de nibbles |
|
Opera con el reset del sistema activo para no
interferir con él |
|
|
|
|
|
|
|
|
Loadmem |
|
Utilidad para cargar la memoria RAM estática de
la placa XVS gracias al módulo hardware creado a tal efecto |
|
Conspim |
|
Utilidad que trata la salida del simulador SPIM |
|
Repara los opcodes de salto defectuosos |
|
Lo traduce al formato de LOADMEM |
|
|
|
|
|
|
|
|
|
Además |
|
10 bloques de Smart Ram |
|
2 para el banco de registros |
|
8 para el interfaz alfanumérico |
|
612 Lut ocupadas como RAM (memoria cache) |
|
Líneas |
|
Tag |
|
Bit de modificado |
|
Bit de validez |
|
|
|
|
Se trata de realizar pruebas en un computador
con una cache nula (siempre falla) y la cache de emplazamiento directo |
|
Se ejecutan los mismos programas en ambas
situaciones |
|
Los programas se crean con el compilador cruzado
de ANSI C++ para MIPS R2000 LCC |
|
|
|
|
|
|
|
La memoria de la placa es muy rápida (15
nanosegundos) en comparación a la velocidad de funcionamiento del
computador (6’25 Mhz) |
|
La mejora que ofrece la cache es aproximadamente
de un 20% |
|
Excepto en casos puntuales donde se producen
desalojos continuos |
|
Más líneas o una cache asociativa mejorarían los
resultados apreciablemente |
|
|
|
|
|
|
Modificar parcialmente el bitstream |
|
Fijar en el fichero UCF de Xilinx los puertos de
los módulos a reconfigurar |
|
La estructura diseñada para la cache permite
modificarla de forma fácil mientras el microcomputador sigue funcionando |
|
|
|
|
La fpga VIRTEX permite diseñar grandes circuitos
y ofrece capacidades de autoreconfiguración |
|
Se ha diseñado un computador completo en VHDL
sintetizable con sistema de entrada salida, compatible a nivel binario y de
periféricos con un MIPS R2000 comercial |
|
Se ha diseñado un sistema de memoria cache que
posibilita una futura reconfiguración sin modificar la arquitectura |
|
|
|
|
|