590 likes | 814 Views
DISEÑO DE UN COMPUTADOR AUTORECONFIGURABLE. Ivan Magán Barroso Javier Basilio Pérez Ramas Miguel Péon Quirós. Departamento de Arquitectura de Computadores y Automática. Puntos. Introducción Dispositivo experimental Arquitectura del sistema Herramientas software desarrolladas Estadísticas
E N D
DISEÑO DE UN COMPUTADOR AUTORECONFIGURABLE Ivan Magán Barroso Javier Basilio Pérez Ramas Miguel Péon Quirós 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
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
FPGA VIRTEX 800 • 900.000 puertas lógicas equivalentes • SelectRam+ (TM) • Celdas reconfigurables más versátiles (SLICES) • Capacidad de reconfiguración
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 PS/2 Controlador memoria Gramola RAM CORE R2000 Cargador de memoria
CORE R2000 Nadieficador Controlito B.L.A.S.A. CPU R2000 Memoria cache Controlador universal de memoria cache
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
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 Mapped I/O Stack Dinamic data Kernel data Static Data Interrupt Handler Kernel instruction Reservado Stack 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
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 Opcode Evaluador cond. Interrupción Excepción Micro PC Selector de entrada de microprograma ROM del microprograma 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
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
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 Juego de caracteres VGA Interfaz con bus de sistema 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
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 • 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