PROCESADOR AMD OPTERON USO EN SERVIDORES MULTIPROCESADOR David Oña Martínez ÍNDICE CARACTERÍSTICAS GENERALES ARQUITECTURA x86-64 MICROARQUITECTURA DEL NÚCLEO PIPELINE CACHES INSTRUCTION FETCH AND DECODE PREDICTOR DE SALTOS UNIDADES FUNCIONALES DE ENTEROS Y PUNTO FLOTANTE ¿CÓMO SE INTEGRA ESTO ÚLTIMO? UNIDADES FUNCIONALES LOAD Y STORE CONTROLADOR DE MEMORIA E HYPERTRANSPORT FIABILIDAD ¿CÓMO SE INTEGRA TODO LO ANTERIOR? ¿CÓMO SE INTEGRA ESTO ÚLTIMO? MULTIPROCESAMIENTO ANÁLISIS DEL RENDIMIENTO DEL MULTIPROCESADOR MULTIPROCESAMIENTO DE MÁS DE 8 VÍAS CARACTERÍSTICAS GENERALES Microprocesador de 64 bit basado en la arquitectura x86. Procesador superescalar. Ejecución fuera de orden especulativa, con renombrado de registros y ROB. Dos niveles amplios de cache on-chip (L1 y L2). Controlador de memoria double-datarate (DDR) on-chip. HyperTransport multiprocesamiento. memoria para ARQUITECTURA x86-64 ¿POR QUÉ 64 BIT? Bases de datos Herramientas CAD Servidores de alto rendimiento Necesidad de direccionamiento de grandes cantidades de memoria tanto física como virtual. ¿QUÉ OCURRE ENTONCES CON LA ARQUITECTURA x86-32? La tecnología x86-64: Funciona a máximo rendimiento con las aplicaciones y sistemas operativos de 32 bits existentes, al tiempo que ofrece una ruta de migración a 64 bits apta. Está diseñada para permitir la informática de 64 bits sin dejar de ser compatible con la amplia infraestructura de software x86. Permite una sola infraestructura en entornos de 32 y 64 bit. ARQUITECTURA x86-64 COMPATIBILIDAD CON LA ARQUITECTURA x86 Direcciones virtuales de 64 bit. Direcciones físicas de 52 bit. Se extienden las instrucciones aritmético-lógicas de enteros a 64 bit. Se dobla el número de registros de propósito general (GPRs) y los registros de extensión SIMD (SSE) (de 8 a 16 en ambos casos). Se amplían los GPRs de 32 a 64 bit. MICROARQUITECTURA DEL NÚCLEO MICROARQUITECTURA DEL NÚCLEO Procesador de 3 vías: realiza el fetch y decode de 3 instrucciones por ciclo. Consta de 72 μops. Codifica instrucciones de tamaño variable en μops de longitud fija. Existen 2 tipos de μ-ops: Enteras. Punto flotante y multimedia. 11 μops por ciclo en las siguientes unidades de ejecución: 3 UFs de enteros. 3 UFs de generación de direcciones. 3 UFs de punto flotante y multimedia. 2 load/store a la cache de datos. PIPELINE Completamente integrado desde la unidad de fetch a través de la memoria DRAM. La memoria DRAM funciona a la misma frecuencia que el núcleo. PIPELINE Consta de: 12 etapas para operaciones de enteros. 17 etapas para operaciones en punto flotante. Suficientemente largo como para obtener buenos resultados a alta frecuencia. Suficientemente corto como para obtener buen IPC. 7 ciclos para las etapas de fetch y decode en los que la latencia viene salvaguardada por el predictor de saltos. En la operación de carga el acceso a memoria cache de datos L1 tiene lugar en la etapa 11 y en la siguiente etapa el dato se encuentra en el CDB. PIPELINE Si se produce un fallo de cache L1 tiene lugar un acceso en paralelo a la cache L2 y a la cola de peticiones de sistema (system request queue). Si se da un acierto en L2 se cancela la petición de sistema. El controlador de memoria gestiona la petición de sistema en la memoria DRAM. Se adelantan los datos tanto de cache como de memoria DRAM mientras se actualiza L1 y se realiza la correción de código. CACHES L1: Cache de datos e instrucciones (L1) separadas: Tamaño: 64 Kbytes. Asociativa por conjuntos. Indexadas linealmente. 8 vías. Marcos Kbytes. Longitud de palabra de 64 bytes. de bloque de 4 TLB asociativa: 32 entradas correspondientes a páginas de 4 Kbytes. 8 entradas correspondientes a páginas de 2 a 4 Mbytes. CACHES L2: Tamaño: 1 Mbyte. Asociativa por conjuntos de 16 vías. Política de reemplazamiento pseudo-LRU: 2 vías por sector. LRU asociada a cada sector Se utilizan la mitad de bits que para LRU obteniendo el mismo resultado. El protocolo MOESI (Modified, Owner, Exclusive, Shared, Invalid) garantiza coherencia en la cache. TLB asociativa por conjuntos de 4 vías con 512 entradas correspondientes a páginas de 4 Kbytes. Existe un filtro HW que impide la eliminación innecesaria de páginas de la TLB. Solamente se limpia la TLB cuando se producen modificaciones en la paginación de las estructuras de datos. INSTRUCTION FETCH AND DECODE La unidad de fetch envía a la unidad scan/align 16 bytes de instrucción por ciclo (las instrucciones pueden variar de 1 a 15 bytes). La unidad scan/align escanea los bytes y marca los límites de cada instrucción. Las instrucciones se traducen en μops de longitud fija mediante: Fastpath decoders (decodificadores HW ). Microcódigo. INSTRUCTION FETCH AND DECODE Fastpath decoders: Pueden traducir hasta 3 instrucciones por ciclo. La mayoría de las instrucciones que se decodifican en 1 ó 2 μops usan estos decodificadores. Opteron posee más recursos Fastpath que Athlon. Microcódigo: Sólo se traduce 1 instrucción por ciclo. PREDICTOR DE SALTOS Predictor híbrido. El mecanismo de selección elige entre predicción estática y la tabla de historia global. La tabla de historia global posee dos contadores saturados de 2 bits. La pila de direcciones de retorno (RAS) almacena conjuntamente cada salto con su dirección de retorno. Cuando se lee una línea de la cache datos se guarda la información predicción de salto y los últimos bits L2 (en el campo de código corrección de errores de cache). de de en de PREDICTOR DE SALTOS ¿CÓMO SE INTEGRA TODO LO ANTERIOR? UNIDADES DE ENTEROS Y PUNTO FLOTANTE A la unidad de control de instrucciones llegan 3 μops por ciclo. La unidad de control de instrucciones posee un ROB de 72 entradas. En paralelo, las μops llegan a las estaciones de reserva de enteros y a la cola de operaciones en punto flotante. Se procede al issue de las μops y la ejecución de las mismas comienza cuando cuando los operandos se encuentran disponibles. μops de enteros: Camino de datos de 64 bits. La mayoría se realizan en 1 ciclo. El HW de multiplicación tarda: 3 ciclos para multiplicaciones de 32 bits. 5 ciclos para multiplicaciones de 64 bits. UNIDADES DE ENTEROS Y PUNTO FLOTANTE μops en punto flotante: Camino de datos de extensión a 80 bit de precisión. UFs segmentadas con CPI = 1 para la mayoría de las operaciones. Operaciones simples y la mayoría de las MMX tardan 2 ciclos. Multiplicación MMX: 3 ciclos. Multiplicación y suma: 4 ciclos. División y raíz cuadrada con latencia variable dependiendo de la precisión (entre 16 y 35 ciclos). ¿CÓMO SE INTEGRA ESTO ÚLTIMO? UNIDAD LOAD STORE 2 operaciones de load o store de 64 bits por ciclo (si el acceso se realiza a bloques distintos) La latencia del load es de 3 ciclos (puede requerir un ciclo extra si existe algún conflicto). Aunque la operación de load puede proporcionar valores fuera de orden, la operación de store sólo puede realizar el commit cuando se retira el valor del ROB. CONTROLADOR DE MEMORIA E HYPERTRANSPORT CONTROLADOR DE MEMORIA On chip. Conexión bidireccional con memoria DDR a 333 MHz (ancho de banda de 128 bits). Memoria DDR compuesta de módulos de memoria PC2700 en línea (DIMMs). Pico de ancho de banda máximo del controlador de 5.3 Gbytes/s. 8 módulos DIMM de 2 Gbytes adicionales proporcionan un refuerzo de 16 Gbytes. No emplea la misma señal de reloj que el núcleo pero la frecuencia es idéntica. Un protocolo de coherencia de cache evita el retardo producido por el acceso en serie a las caches de los distintos procesadores permitiendo al acceso concurrente a caches y DRAM. CONTROLADOR DE MEMORIA E HYPERTRANSPORT HYPERTRANSPORT 3 conexiones con un ancho de banda de 16 bits (3.2 Gbytes/s por dirección). Dos posibles configuraciones: Protocolo coherente (cHT) para conectar procesadores. Protocolo incoherente (HT) para conectar E/S. Permite conexionado flexible, adaptable y configurable a todo tipo de topologías E/S. Es transparente a cualquier sistema operativo que emplea PCI. FIABILIDAD CORRECIÓN DE ERRORES DE CÓDIGO (ECC)/SISTEMA DE BITS DE PARIDAD Memorias cache L1, L2 y sus respectivas TLBs y memoria DRAM: 8 bits de paridad para 64 bits de datos. Single Error Correction Double Error Detection (SECDED). Existen mecanismos HW que limpian errores ECC de 1 bit. Procesador: 16 bits de paridad para 128 bits de datos. Los errores del sistema ECC se envían a una arquitectura de comprobación que informa de los fallos con suficiente información para diagnosticar el error. ¿CÓMO SE INTEGRA ESTO ÚLTIMO? MULTIPROCESAMIENTO Las tres conexiones HyperTransport on-chip permiten construir sistemas multiprocesador de 2, 4 y hasta 8 vías con amplio ancho de banda para flujos de datos de E/S. 2 vías 4 vías 8 vías ANÁLISIS DEL RENDIMIENTO DEL MULTIPROCESADOR CONDICIONES DEL ESTUDIO MEDIANTE MICROBENCHMARKS Se analizan 3 tipos de configuraciones: sistemas de 1, 2 y 4 procesadores. Se estudia la latencia y el ancho de banda. Cada conexión HyperTransport ofrece un ancho de banda de 6.4 Gbytes/s: 3 conexiones E/S (1P). 4 conexiones E/S (2P y 4P). Distancia media entre nodos: 1 hop (1P y 2P). 1.75 hops (4P). ANÁLISIS DEL RENDIMIENTO DEL MULTIPROCESADOR CONDICIONES DEL ESTUDIO MEDIANTE MICROBENCHMARKS Se hace distinción entre dos tipos de acceso a memoria: Acceso exclusivo a memoria local de cada procesador (a) Acceso a memoria Xfire (Crossfire): Todos los procesadores acceden a datos de cada nodo mediante una interconexión total de los procesadores (comunicación all-to-all) (b) ANÁLISIS DEL RENDIMIENTO DEL MULTIPROCESADOR RESULTADOS DEL ANÁLISIS El ancho de banda de la lectura de memoria en 4P es de hasta: 15.59 Gbytes/s en accesos a memoria local. 11.23 Gbytes/s en accesos a memoria a través de los nodos. ANÁLISIS DEL RENDIMIENTO DEL MULTIPROCESADOR RESULTADOS DEL ANÁLISIS La latencia media de lectura sin carga de datos de páginas de memoria a disposición de todos los procesadores es, como mucho, de: 50 ns (1P). 70 ns (2P). 110 ns (4P). ANÁLISIS DEL RENDIMIENTO DEL MULTIPROCESADOR RESULTADOS DEL ANÁLISIS El ancho de banda medio de tráfico uniforme entre nodos es de: 5.3 Gbytes/s (1P). 7 Gbytes/s (2P). 11.23 Gbytes/s (4P). ANÁLISIS DEL RENDIMIENTO DEL MULTIPROCESADOR Parámetro del sistema 1P 2P 4P Nº de DIMMs 8 16 32 Memoria total usando DIMMS de 2 Gbytes (Gbytes) 16 32 64 Nº de conexiones HyperTransport 3 4 4 Bisection bandwidth (Gbytes/s) - 6.4 12.8 Diámetro (Nº de hops) - 1 2 Distancia media (Nº de hops) - 0.5 1 Ancho de banda de lectura de memoria local (Gbytes/s) 5.3 10.67 15.59 Ancho de banda local por procesador (Gbytes/s) 5.3 5.3 3.9 Ancho de banda de lectura de memoria Xfire (Gbytes/s) 5.3 7.06 11.23 Ancho de banda Xfire (Gbytes/s) 5.3 3.53 2.8 MULTIPROCESAMIENTO DE MÁS DE 8 VÍAS El procesador Opteron se concibió como bloque integrante de servidores de buen resultado cuya ampliación resultase versátil. El servidor puede ampliarse a un número de vías superior a 8 mediante un dispositivo HyperTransport externo. Distancia media entre nodos: 2.7 hops. Distancia máxima entre (diámetro de la red): 5 hops. nodos MULTIPROCESAMIENTO DE MÁS DE 8 VÍAS Los procesadores se agrupan en grupos de 4, cada uno con E/S y memoria local independientes. Los 4 procesadores comparten un par de caches remotas y filtros snoop (reducen el tráfico entre interruptores e incrementan el ancho de banda). Cada grupo de procesadores se conecta con el resto mediante dos interruptores coherentes (SW0 y SW1) y seis conexiones HyperTransport. BIBLIOGRAFÍA Chetana N. Keltcher et al, ‘The AMD Opteron Processor for Multiprocessor Servers’, IEEE Micro, vol. 23, no 2, 2003, pp. 66-76 http://www.amd.com http://www.amd.com/us-en/assets/content_type/DownloadableAssets/MPF_Hammer_Presentation.PDF http://chip-architect.com/news/2003_09_21_Detailed_Architecture_of_AMDs_64bit_Core.html http://h20000.www2.hp.com/bc/docs/support/SupportManual/c00238028/c00238028.pdf http://www.devx.com/amd/Article/16019 FIN DE LA PRESENTACIÓN David Oña Martínez