Módulo 3
Microarquitectura de los procesadores VeeR EL2 y EH1
En este módulo descenderemos al nivel microarquitectónico para analizar cómo operan internamente los procesadores VeeR EL2 y VeeR EH1. En primer lugar analizaremos técnicas microarquitectónicas básicas: segmentación, ejecución de instrucciones básicas (add, lw, etc.), riesgos, etc.
A continuación nos basaremos en el procesador VeeR EH1 para analizar técnicas microarquitectónicas avanzadas: segmentación profunda, ejecución superescalar, predicción de saltos, memorias cache y scratchpad, extensión del procesador con nuevas instrucciones, etc.
Se expondrá la organización de los ficheros Verilog que constituyen este core y los detalles de las etapas del pipeline. A continuación, se explicará cómo utilizar los contadores de rendimiento disponibles en este procesador, que serán muy útiles para posteriormente poder realizar medidas de rendimiento. Finalmente, se procederá a la configuración del core VeeR EL2.
Presentación de diferentes tipos de instrucciones del repertorio: add, sub, and... load y store. Explicación detallada de una de las instrucciones de cada tipo y análisis guiado del resto de instrucciones de cada tipo.
Primera aproximación al problema de los riesgos de un pipeline y su impacto en el rendimiento.
Análisis de las principales diferencias que presenta VeeR EH1 con relación al procesador analizado anteriormente, el VeeR EL2. En concreto, se presentan las principales ventajas de rendimiento y los problemas de diseño más importantes (tratamiento de los riesgos de datos) que supone el paso de un pipeline de 4 etapas a uno de 9. Se estudiarán las posibilidades de configuración que nos proporciona este procesador.
Análisis de la ejecución superescalar en el procesador VeeR EH1 y estudio de las diferencias de rendimiento que se producen al aumentar el ancho superescalar del procesador. Tratamiento de distintos tipos de riesgos estructurales.
Estudio de las instrucciones de salto condicional e incondicional (beq, j, ...) y de los predictores de salto. Proceso de búsqueda de las instrucciones de forma predictiva y resolución de los fallos de predicción. Medidas de rendimiento sobre distintas configuraciones del procesador.
Proceso para introducir nuevas instrucciones a los procesadores VeeR. Creación de una Unidad de Punto Flotante y comparación de rendimiento de algoritmos de punto flotante en sistemas con unidades hardware o por emulación software.
Estudio de la jerarquía de memoria: la cache de instrucciones y la scratchpad de datos.