1 / 23

EMISION MULTIPLE DE INSTRUCCIONES

EMISION MULTIPLE DE INSTRUCCIONES. ARQUITECTURA AVANZADA . TRABAJO REALIZADO POR UCIEL COHEN. PROCESADORES VECTORIALES. INTRODUCCION QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria” DEFINICION DE PROCESADOR VECTORIAL

chaim
Télécharger la présentation

EMISION MULTIPLE DE INSTRUCCIONES

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. EMISION MULTIPLE DE INSTRUCCIONES

  2. ARQUITECTURA AVANZADA TRABAJO REALIZADO POR UCIEL COHEN

  3. PROCESADORES VECTORIALES • INTRODUCCION • QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria” • DEFINICION DE PROCESADOR VECTORIAL “Conjunto de recursos para efectuar operaciones sobre vectores”

  4. PROCESAMIENTO VECTORIAL • Operando Vectorial • Cada componente del vector es un escalar de cualquier tipo (entero, punto flotante, etc.). • Instrucción Vectorial • Paralelismo en operaciones

  5. PROCESAMIENTO (CONT.) • Las instrucciones vectoriales tienen unas propiedades importantes y que significan ventajas sobre las instrucciones escalares: • El cálculo de cada resultado es independiente de los resultados anteriores en el mismo vector • Una sola instrucción vectorial especifica una gran cantidad de trabajo. El requisito de anchura de banda de las instrucciones se reduce considerablemente. • Las instrucciones vectoriales que acceden a memoria tienen un patrón de acceso conocido. Si los elementos de la matriz son todos adyacentes, entonces extraer el vector de un conjunto de bancos de memoria entrelazada funciona muy bien.

  6. TIEMPOS DE EJECUCION VECTORIAL • Factores que influyen en el tiempo de ejecución de una secuencia de operaciones vectoriales: • La longitud de los vectores sobre los que se opera. • Los riesgos estructurales entre las operaciones. • Las dependencias de datos. • Dada la longitud del vector y la velocidad de inicialización, que es la velocidad a la cual una unidad vectorial consume nuevos operandos y produce nuevos resultados, podemos calcular el tiempo para una instrucción vectorial

  7. TIEMPOS (CONT.) • Tiempo de arranque vectorial y tasa de inicialización • Unidades de carga/almacenamiento vectorial

  8. Características de los lenguajes para proceso vectorial Objetivo: paralelismo de algoritmos • Flexibilidad para declarar diferentes clases de objetos con distintas estructuras y formas de almacenamiento. • Efectividad para la manipulación de matrices y vectores dispersos, (la mayoría de sus elementos nulos). • Disponer de operaciones vectoriales nativas que trabajen directamente con las estructuras de datos anteriormente declaradas sin necesidad de bucles. Ejemplos reales de computadores vectoriales cray-1, Cyber-205, IBM-3090, Earth Simulator

  9. TAXONOMIA DE FLYNN • Las cuatro clasificaciones definidas por Flynn se basan en el número de instrucciones concurrentes y en los flujos de datos disponibles en la arquitectura: • Una instrucción, un dato(SISD) • Múltiples instrucciones, un dato(MISD) • Una instrucción, múltiples datos(SIMD) • Múltiples instrucciones, múltiples datos(MIMD)

  10. PROCESADORES SUPERESCALARES • Superescalar “término utilizado para designar un tipo de micro-arquitectura de procesador capaz de ejecutar más de una instrucción por ciclo de reloj” • El término se emplea por oposición a la micro-arquitectura escalar que sólo es capaz de ejecutar una instrucción por ciclo de reloj. • En la clasificación de Flynn, un procesador superescalar es un procesador de tipo MIMD (multipleinstructionmultiple data).

  11. PROCESADORES SUPERESCALARES(CONT.) • La micro-arquitectura superescalar utiliza el paralelismo de instrucciones además del paralelismo de flujo. La estructura típica de un procesador superescalar consta de un pipeline con las siguientes etapas:  • Lectura (fetch)• Decodificación (decode)• Lanzamiento (dispatch) • Ejecución (execute) • Escritura (writeback). • Finalización (retirement)

  12. PROCESADORES SUPERESCALARES(CONT.) • El procesador maneja más de una instrucción en cada etapa. • El número máximo de instrucciones en una etapa concreta del pipeline se denomina grado, así un procesador superescalar de grado 4 en lectura (fetch) es capaz de leer como máximo cuatro instrucciones por ciclo. • El grado de la etapa de ejecución depende del número y del tipo de las unidades funcionales.

  13. TIPOS DE DEPENDENCIA • Un procesador superescalar es capaz de ejecutar más de una instrucción simultáneamente únicamente si las instrucciones no presentan algún tipo de dependencia (hazard). •Dependencia estructural :cuando dos instrucciones requieren el mismo tipo unidad funcional y su número no es suficiente. •Dependencia de datos :cuando una instrucción necesita del resultado de otra instrucción para ejecutarse, por ejemplo R1<=R2+R3 y R4<=R1+5. •Dependencia de escritura o falsa dependencia o nombre: cuando dos instrucciones necesitan escribir en la misma memoria, por ejemplo R1<=R2+R3 y R1<=R1+5. •Dependencia de control: cuando una instrucción depende de una estructura de control y no se puede determinar el flujo correcto hasta la evaluación de la estructura de control, por ejemplo, if R1<="R4+R5" else="" r6<="R7+5." • La detección y resolución dinámica de las dependencias entre instrucciones suele realizarse mediante alguna variante del algoritmo de Tomasulo que permite la ejecución de instrucciones en un orden distinto al del programa también llamada ejecución en desorden

  14. PROCESADORES VLIW • Very Long Instruction Word. • Arquitectura de CPU que implementa una forma de paralelismo a nivel de instrucción. Es similar a las arquitecturas superescalares, ambas usan varias unidades funcionales (por ejemplo varias ALUs, varios multiplicadores, etc.) para lograr ese paralelismo. • Los procesadores con arquitecturas VLIW se caracterizan por tener juegos de instrucciones muy simples en cuanto a número de instrucciones diferentes, pero muy grandes en cuanto al tamaño de cada instrucción. Esto es así porque en cada instrucción se especifica el estado de todas y cada una de las unidades funcionales del sistema, con el objetivo de simplificar el diseño del hardware al dejar todo el trabajo de planificar el código en manos del programador/compilador, en oposición a un procesador superescalar, en el que es el hardware en tiempo de ejecución el que planifica las instrucciones.

  15. SEGUIMIENTO DE PROGRAMACION • Muchos compiladores para procesadores ILP de primera generación utiliza un método de tres fases para generar código. Las fases fueron: • Generar un programa secuencial. Analizar cada bloque básico en el programa secuencial de operaciones independientes. • Calendario de operaciones independientes en el mismo bloque en paralelo si hay suficientes recursos de hardware disponibles. • Trasladar las operaciones entre los bloques cuando sea posible.

  16. SEGUIMIENTO DE PROGRAMACION(CONT.) • Este enfoque de tres fases no explota gran parte de la ILP disponibles en el programa por dos razones. • Dependencia • Decisiones arbitrarias • La programación de rastreo es un método de perfil impulsado desarrollado por Joseph Fisher para evitar este problema.

  17. SUPERBLOCK SCHEDULING • Algoritmo de programación de la región desarrollada en conjunto con el Compilador de Impacto en la Universidad de Illinois.  • Se basa en la premisa que la extracción de ILP de los programas secuenciales requiere el movimiento de código a través de múltiples bloques básicos.  • A diferencia de la programación de rastreo, está impulsado por el análisis estático.  • Un Superblockes un conjunto de elementos básicos en los que el control puede entrar sólo en la parte superior, pero puede salir en más de un punto. • Superblocksse identifican primero a través de las huellas y luego se eliminan de las entradas laterales por un proceso llamado cola de duplicación • Las huellas se identifican mediante el análisis estático de la rama, basado en la detección de bucles, prevención de riesgos heurística y la heurística de selección de ruta

  18. EJECUCION ESPECULATIVA • Ejecución de codigo por parte del procesador que no tiene por qué ser necesaria a priori. • Objetivos • Desplazar la complejidad de la programación de instrucciones desde el componente hardware, la CPU, al componente software, el compilador, que puede realizar la programación de instrucciones de forma estática (con la ayuda de la información de retroalimentación de rastros). • Conseguir una mayor explotación del ILP (paralelismo en el nivel de instrucciones) mediante el uso del compilador para encontrar y explotar oportunidades adicionales para la ejecución en paralelo.

  19. PARALELISMO A NIVEL INSTRUCCIÓN (ILP) • ILP es una medida de cómo muchas de las operaciones en un programa de computadora se pueden realizar simultáneamente. Sea el programa: • 1. e = a + b • 2. f = c + d • 3. g = e * f • 3 depende de los resultados de 1 y 2. Debe esperar que ambos se hayan completado. • 1 y 2 no dependen de ninguna otra operación. Se puede calcular de forma simultánea.  • Si suponemos que cada operación se puede completar en una sola unidad de tiempo, estas tres instrucciones se puede completar en un total de dos unidades de tiempo, dando una ILP de 3 / 2. • Uno de los objetivos del compilador y el procesador de los diseñadores es el de identificar y aprovechar las ILP tanto como sea posible. 

  20. PARALELISMO A NIVEL PROCESO (TLP) • Habilidad de correr múltiples procesos (programas) al mismo tiempo • En procesadores individuales, las dos metodologías principales usadas para lograr el TLP son: • Multiprocesamiento a nivel de chip (CMP) • Multiprocesador simultáneo (SMT) • En múltiples CPU totalmente independientes podemos encontrar: • Multiprocesamiento simétrico (SMP) • Acceso de memoria no uniforme (NUMA)

  21. 1 CPU/1 Thread 2 CPU/1 Thread 1 CPU/2 Thread

  22. FIN

More Related