Notas
Esquema
DISEÑO DE UN COMPUTADOR AUTORECONFIGURABLE
Ivan Magán Barroso
Javier Basilio Pérez Ramas
Miguel Péon Quirós
Puntos
Introducción
Dispositivo experimental
Arquitectura del sistema
Herramientas software desarrolladas
Estadísticas
Estudio comparativo sobre la cache
Reconfiguración
Conclusiones
Introducción
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
Computador completo
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
Problemas
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
Problemas
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.
Simulador SPIM Defectuoso
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
Carga de la memoria RAM
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
Nuevos objetivos del proyecto
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 experimental
Dispositivo hardware
FPGA Virtex de Xilinx
Placa XESS XVS-800
Herramientas software utilizadas
Placa de prototipado XVS-800
FPGA VIRTEX 800
900.000 puertas lógicas equivalentes
SelectRam+ (TM)
Celdas reconfigurables más versátiles (SLICES)
Capacidad de reconfiguración
CLB DE DOS SLICES
SelectRam+ (TM)
Bloques dedicados de memoria
Memoria síncrona de doble puerto
144.688 bits en total
CPLD XC9500
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
Prestaciones empleadas
FPGA Virtex
CPLD
Memoria estática
Interfaz VGA
Interfaz PS/2
Interfaz de puerto paralelo
Herramientas software empleadas
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
Herramientas software empleadas
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
Arquitectura del sistema
Core R2000
Bus del sistema
Controlador alfanumérico
Controlador de teclado
Controlador de memoria
Cargador de memoria
Arquitectura del sistema
CORE R2000
B.L.A.S.A.
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
Diapositiva 23
MIPS R2000
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
Ciclo completo del R2000
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
Mapa de memoria
Implementación del R2000
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
CPU R2000
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)
Unidad de control
Selector de entrada de microprograma
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
Microprograma
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
Controlito
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).
Memoria cache
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.
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
Memoria cache
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
Bus del sistema
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
...
Bus del sistema
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
Bus del sistema
Bus del sistema
Bus del sistema
Bus del sistema
GRAMOLA
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
GRAMOLA
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
Controlador de teclado
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
Cargador de memoria
“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
Herramientas software desarrolladas
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
Estadísticas
Estadísticas
Estadísticas
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
Estudio comparativo
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
Estudio comparativo
Diapositiva 52
Conclusiones del estudio
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
Estudio comparativo
Estudio comparativo
Reconfiguración
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
Conclusiones
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
FIN
Diapositiva 59