Post on 13-Jun-2015
description
ARQUITECTURAS ESPECIALIZADAS
LEVO
Por Orlando Alemán Ortiz
Contenidos
Introducción [Ir]Funcionamiento [Ir]Benchmarks [Ir]Conclusiones [Ir]Referencias [Ir]
Introducción
LEVO, A RESOURCE FLOW COMPUTER
LEVO
Microarquitectura de propósito general con alto nivel de IPC (>10) Alto nivel de especulación Gran cantidad de recursos para ejecución Predicción por hardware Ejecución disjunta (varios caminos en simultáneo)
Surgida de una colaboración entre la universidad de Rhode Island y la Northeastern Augustus K. Uht, David Morano, Alireza Khalafi
Características
Independiente del repertorio de instruccionesUtiliza menos hardware y más simple que
otros métodos anterioresEscalable
El coste del hardware crece linealmente con el número de elementos de proceso
Alto nivel de paralelismo (ILP > 10)No existe explícitamente un banco de registros
El tiempo de vida de los registros suele ser corto (≈ 1 ó 2 Bloques Básicos)
Características
Data forwardingFlujo guiado por los recursos
Ejecutar cualquier instrucción sin tener en cuenta la presencia de sus operandos y luego aplicar las restricciones programáticas para obtener el resultado correcto
En Levo se especula con las dependencias de datos y de control. Se ejecutan muchas más instrucciones, ya que se re-ejecutan aquéllas que resulten fallidas No se espera, por lo que se reduce el retardo debido a
las dependencias
UNA VISIÓN GENERAL DE LEVO
Funcionamiento
Visión de Alto-Nivel de una Resource Flow Microarchitecture.
La Ventana de Ejecución es el elemento clave
Como se puede observar, la mayor parte de los componentes son idénticos a los de otras microarquitecturas convencionales
La excepción está en la Ventana de Ejecución
Búsqueda de Instrucciones
En cada ciclo de reloj se van a buscar varias líneas a la i-cache.
La búsqueda de instrucciones y su ejecución está guiada por estadísticas Predicción
Las instrucciones se decodifican nada más llegar y se almacenan en el Instruction Dispatch Buffer Este buffer tiene la particularidad de que es capaz de
capturar y servir varias instrucciones en simultáneo
Diagrama lógico de Alto-Nivel
Cada columna contiene una secuencia de instrucciones
Cuando la columna 0 finaliza se produce un desplazamiento a la izquierda
Los datos se envían entonces a la L1 D-Cache y los valores de los registros se pasan a las columnas posteriores
La Ventana de Ejecución
Para ser ejecutadas, las instrucciones se ensamblan en columnas (bloques de n instrucciones)
Una vez lanzadas a ejecución, las instrucciones se cargan en una Active Station, que será quien se encargue de su correcta ejecución
Los datos se traen, se pasan entre instrucciones o se almacenan mediante buses
Cada vez que los operandos cambian (como resultado de una instrucción más antigua) las instrucciones se re-ejecutan
La Ventana de Ejecución
Cada instrucción en esta ventana tiene asociada un timetag dinámico timetag = column address | row address
Se utiliza para preservar el orden de ejecución y de retirada de las instrucciones.
Cuando se retira una columna de la ventana de ejecución, se decrementa el timetag del resto (en 1 unidad)
Las instrucciones se retiran cuando todas las anteriores hayan finalizado y se hayan adelantado los resultados
Active Stations
Una Active Station (AS) se encarga de Cargar y guardar las instrucciones (1 cada vez) Generar y modificar los timetags Obtener los últimos valores de los operandos Controlar que la instrucción se ejecute (o re-ejecute)
para generar el valor deseado Proporcionar el nuevo valor del registro o de la
posición de memoria (a aquellas estaciones con mayor timetag)
Enviar valores a la cola de escritura en memoria (WQI) al finalizar
Detectar la finalización de la instrucción
Diagrama de Bloques de Alto-Nivel de una Active Station
La lógica de control básicamente representa el estado de la Active Station
Lógica de las Active Stations
La lógica que requieren las Active Stations es realmente sencilla
Elementos de proceso y Sharing Groups
Los elementos de proceso (EP) son básicamente unidades funcionales generales Se utilizan para cálculo de datos, de direcciones, etc.
Los elementos de proceso se comparten entre varias Active Stations formando un Sharing Group
La conexión entre AS y EP se realiza mediante buses unidireccionales
Buses de intercambio de datos
Sirven para pasar los valores de los registros, predicados y posiciones de memoria entre columnas Identificador: timetag + path-ID
Son buses particionados en segmentos y separados por Forwarding Units (FU) ESCALABILIDAD
Un ciclo de penalización por cada segmento atravesado
Buses: Forwarding: Adelanto del resultado Backwarding: Obtención de un valor más antiguo
En la práctica se usan buses bidireccionales
Buses de Adelantamiento en una Ventana de Ejecución Genérica
No existe un banco central de registros. Se utilizan registros distribuidos de adelantamiento (FU)
No hay un buffer de reordenamiento (ROR)
Es probable que hayan múltiples instrucciones ejecutándose en el mismo ciclo, por lo que habrán también múltiples buses por segmento
Vista ampliada (esquema 8-4-8 )
Los esquemas se describen con la notación (SG/Column – AS/SG - #Columns)
Saltos
Hay más de un camino de ejecución: el principal (ML) y los alternativos (DEE)
El camino principal tiene una prioridad mayor para disponer de los recursos El código más probable irá por el camino principal
Ante un salto, se ejecutan las dos alternativas. La más probable (según la predictor de saltos) ocupará el camino principal Se reduce la penalización por fallos de predicción
Saltos
Cada salto en la Ventana de Ejecución genera un predicado, que se guarda en la Active Station
Para las instrucciones de salto, su Active Station mantiene: Un predicado Una Tabla de Saltos Tomados
PREDICCIÓN del resultado del predicado Cada entrada consiste en un bit de validez y un timetag
Cuando se hace la predicción, se envía el predicado y el timetag a las demás AS Una vez se resuelva el predicado, se notifica el resultado
Disjoint Eager Execution (DEE)
Cada columna se compone de dos o más subcolumnas: los caminos
Los caminos predicho (M) y disjunto (D) se ejecutan en simultáneo
Analogía con el pipeline clásico
Por hacer una analogía con las máquinas tradicionales, el pipeline sería algo así:1.FETCH: Búsqueda de instrucciones2.DISPATCH: Se carga el buffer de instrucciones (última columna) 3.ISSUE: Los operandos son enviados a un elemento de proceso (PE)4.EXECUTE: PE realiza la operación apropiada5.WRITEBACK: Se almacenan los datos a memoria
A DONDE NOS LLEVA
Benchmarks
Máquina base
Parámetros utilizados tanto en la máquina base como en la máquina Levo
Máquina Levo
Parámetros adicionales para la máquina Levo usados en la simulación
BenchmarksComparación entre una máquina superescalar convencional y una máquina Levo
La primera figura representa resultados para varios benchmarks
La segunda, muestra la media armónica de los rendimientos exhibidos para varias geometrías
Recordemos:(SG/Column – AS/SG - #Columns)
Otros números
Levo aumenta ligeramente el tiempo de ciclo, pero el IPC posible es mucho mayor (>10) El mayor valor de IPC exhibido hasta la fecha está en
torno a 7. Corresponde al Superpeculative Engine de Lipasti & Shen
Aplicar DEE supone un impacto en el coste: Ligeramente más caro: +10 % Mejora importante en el rendimiento: +45%
ALGUNOS COMENTARIOS
Conclusiones
Conclusiones
Levo reúne nuevas técnicas para posibilitar la escalabilidad manteniendo el tiempo de ciclo bajo
Aplicar este diseño incrementa ligeramente el tiempo de ciclo, pero pese a ello la mejora de rendimiento es atractiva
La predicción y evaluación de los saltos en hardware facilita la reutilización del código existente
Time-Tags, Active Stations, Buses Segmentados & Resource Flow Execution son técnicas ganadoras
Comentario
La tendencia actual de la industria es integrar múltiples núcleos en un mismo chip No tiene sentido cambiar de enfoque o aumentar aún
más la complejidad sin mejorar considerablemente el rendimiento
¿Tiene sentido Levo? Sólo cuando el nivel de frustración al intentar romper
un programa en hilos sea tan alto como para pensar en aumentar el nivel de rendimiento de un hilo individual.
DOCUMENTACIÓN UTILIZADA Y ADICIONAL
Referencias
Referencias
“The Levo High ILP Machine Project”URL: http://www.ele.uri.edu/~uht/research/levo/levo.html
“Levo: A Scalable Processor With High IPC”Augustus K. Uht, David Morano, Alireza Khalafi, David Kaeli. Journal of Instruction Level Parallelism, Volume 5, August 2003 URL: http://www.jilp.org/vol5/v5paper10.pdf
“Levo: A Resource-Flow Computer”Augustus K. Uht, David Morano, Alireza Khalafi, Marcos de Alba, David Kaeli. University of Rhode Island. August 2003.
"Speculative Execution in High Performance Computer Architectures” D.R.Kaili and P.Yew. Chapman & Hall/CRC Press. ISBN-10 1584884479
Referencias
“Exploring Instruction Level Parallelism Using Resource Flow Execution”. Dissertation by David Morano. Northeastern University. May 2007.
FIN