23
EMISION MULTIPLE DE INSTRUCCIONES

PROCESADORES VECTORIALES INTRODUCCION QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria” DEFINICION DE PROCESADOR

Embed Size (px)

Citation preview

Page 1: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

EMISION MULTIPLE DE INSTRUCCIONES

Page 2: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

ARQUITECTURA AVANZADA

TRABAJO REALIZADO POR UCIEL COHEN

Page 3: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

PROCESADORES VECTORIALESINTRODUCCIONQUE 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”

Page 4: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

PROCESAMIENTO VECTORIALOperando VectorialCada componente del vector es un escalar de cualquier tipo (entero, punto

flotante, etc.). Instrucción VectorialParalelismo en operaciones

Page 5: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

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 vectorUna 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.

Page 6: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

TIEMPOS DE EJECUCION VECTORIALFactores 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

Page 7: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

TIEMPOS (CONT.)TIEMPO DE ARRANQUE VECTORIAL Y TASA DE

INICIALIZACIÓNUNIDADES DE CARGA/ALMACENAMIENTO VECTORIAL

Page 8: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

CARACTERÍSTICAS DE LOS LENGUAJES PARA PROCESO VECTORIAL

Objetivo: paralelismo de algoritmosFlexibilidad 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 VECTORIALESCRAY-1, CYBER-205, IBM-3090, Earth Simulator

Page 9: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

TAXONOMIA DE FLYNNLas 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)

Page 10: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

PROCESADORES SUPERESCALARESSuperescalar

“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 (multiple instruction multiple data).

Page 11: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

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)

Page 12: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

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.

Page 13: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

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

Page 14: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

PROCESADORES VLIWVery 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.

Page 15: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

SEGUIMIENTO DE PROGRAMACIONMuchos 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.

Page 16: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

SEGUIMIENTO DE PROGRAMACION(CONT.)Este enfoque de tres fases no explota gran parte de la ILP

disponibles en el programa por dos razones.DependenciaDecisiones arbitrarias

La programación de rastreo es un método de perfil impulsado desarrollado por Joseph Fisher para evitar este problema.

Page 17: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

SUPERBLOCK SCHEDULINGAlgoritmo 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 Superblock es 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. Superblocks se 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

Page 18: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

EJECUCION ESPECULATIVAEjecució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.

Page 19: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

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.

Page 20: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

PARALELISMO A NIVEL PROCESO (TLP)Habilidad de correr múltiples procesos (programas) al

mismo tiempoEn 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)

Page 21: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR
Page 22: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

1 CPU/1 Thread 2 CPU/1 Thread 1 CPU/2 Thread

Page 23: PROCESADORES VECTORIALES  INTRODUCCION  QUE ES UN VECTOR? “Secuencia de datos escalares del mismo tipo almacenados en memoria”  DEFINICION DE PROCESADOR

FIN