DISEÑO DE UN COMPUTADOR AUTORECONFIGURABLE Ivan Magán Barroso Javier Basilio Pérez Ramas Miguel Péon Quirós TODOS Departamento de Arquitectura de Computadores y Automática
Puntos Introducción Dispositivo experimental Arquitectura del sistema Herramientas software desarrolladas Estadísticas Estudio comparativo sobre la cache Reconfiguración Conclusiones JABA
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 JABA
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 JABA
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 JABA
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. JABA
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 JABA
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 JABA
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 JABA
Dispositivo experimental Dispositivo hardware FPGA Virtex de Xilinx Placa XESS XVS-800 Herramientas software utilizadas MIKE
Placa de prototipado XVS-800 mike
FPGA VIRTEX 800 900.000 puertas lógicas equivalentes SelectRam+ (TM) Celdas reconfigurables más versátiles (SLICES) Capacidad de reconfiguración mike
CLB DE DOS SLICES MIKE
SelectRam+ (TM) Bloques dedicados de memoria Memoria síncrona de doble puerto 144.688 bits en total MIKE
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 MIKE
Prestaciones empleadas FPGA Virtex CPLD Memoria estática Interfaz VGA Interfaz PS/2 Interfaz de puerto paralelo MIKE
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 MIKE
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 MIKE
Arquitectura del sistema Core R2000 Bus del sistema Controlador alfanumérico Controlador de teclado Controlador de memoria Cargador de memoria ivan
Arquitectura del sistema Gramola PS/2 Controlador memoria RAM CORE R2000 Cargador de memoria ivan
CORE R2000 Nadieficador Controlito B.L.A.S.A. CPU R2000 Memoria cache Controlador universal de memoria cache ivan
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 ivan
Ciclo de lectura ivan
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 jaba
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 jaba
Mapa de memoria Mapped I/O Kernel data Kernel instruction User data Stack Dinamic data Kernel data Static Data Interrupt Handler Kernel instruction Reservado Stack jaba User data Dinamic data Static Data User instruction RESERVADO
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 jaba
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) jaba
Selector de entrada de microprograma Unidad de control Opcode Evaluador cond. Interrupción Excepción Micro PC Selector de entrada de microprograma ROM del microprograma jaba Señales a la ruta de datos
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 jaba
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 jaba
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). ivan
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. jaba
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 jaba
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 jaba
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 ... MIKE
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 mike
Bus del sistema mike
Bus del sistema mike
Bus del sistema mike
Bus del sistema mike
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 JABA
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 Juego de caracteres VGA Interfaz con bus de sistema JABA Mapa de caracteres Lógica de control Bus de sistema
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 IVAN
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 IVAN
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 IVÁN
Estadísticas MÓDULO SLICES PUERTAS BIESTABLES U.C. 165 1954 5 CACHE 649 48244 394 CPU 886 47270 432 CORE 1657 97922 960 PS/2 37 627 36 GRAMOLA 555 138287 138 CARG.MEM 66 1205 91 CONT.MEM 178 2890 86 SISTEMA 2516 242000 1340 ivan
Estadísticas ivan
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 ivan
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 jaba
Estudio comparativo jaba
jaba
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 jaba
Estudio comparativo Con cache Sin cache Acierto en lectura 1 4 Fallo en lectura 16 Fallo en lectura con write-back 25 jaba
Estudio comparativo Con cache Sin cache Acierto en escritura 2 4 Fallo en escritura 17 Fallo en escritura (WB) 27 jaba
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 jaba
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 ivan
FIN
Han realizado este proyecto (de izquierda a derecha): Iván Magán Barroso José Manuel Mendias Cuadros (Director) Javier Basilio Pérez Ramas Miguel Peón Quirós