Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

LEVO: A resource flow computer

533 views

Published on

Un análisis de la microarquitectura LEVO

Published in: Technology
  • Be the first to comment

  • Be the first to like this

LEVO: A resource flow computer

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

×