TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP).

Documentos relacionados
Cronograma DAXPY en Proc vectorial Duración: Ld/St: 2 ciclos En el estacionario se MULTFP: 3 ciclos procesa un elem/ciclo ADDFP: 2 ciclos

TEMA 2: ARQUITECTURAS MULTIMEDIA Y VECTORIALES.

Familia de procesadores Intel x86

Introducción a la Programación 11 O. Humberto Cervantes Maceda

COMPUTADORES SEGMENTADOS (DLX)

Aritmética finita y análisis de error

Entorno de Ejecución del Procesador Intel Pentium

ACTIVIDADES TEMA 1. EL LENGUAJE DE LOS ORDENADORES. 4º E.S.O- SOLUCIONES.

ASP2. Problemas de Procesadores Multimedia.

6-REGISTROS DEL 8086 Y DEL 80286

Lección 1. Representación de números


Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

UNIDADES DE ALMACENAMIENTO DE DATOS

Capítulo 1: Sistemas de representación numérica Introducción. Dpto. de ATC, Universidad de Sevilla - Página 1 de 8

Lección 4: Suma y resta de números racionales

by Tim Tran:

Evaluación del rendimiento de procesadores Intel Nehalem. Modelos x7550, x5670 y x5570

Sistemas de numeración

Naturaleza binaria. Conversión decimal a binario

Febrero Departamento de Electrónica e Sistemas Universidade da Coruña. Introducción a las Extensiones Multimedia

Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso Aritmética binaria

Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación.

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

DESARROLLO DE HABILIDADES DEL PENSAMIENTO LÓGICO

DISCOS RAID. Se considera que todos los discos físicos tienen la misma capacidad, y de no ser así, en el que sea mayor se desperdicia la diferencia.

Tema 2: Arquitectura del repertorio de instrucciones. Visión del computador que tiene el programador en bajo nivel.

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

❷ Aritmética Binaria Entera

Tema 2. Diseño del repertorio de instrucciones

ORDENADORES VECTORIALES

2.4. Modos de direccionamiento Distintas formas que tiene la arquitectura para especificar la ubicación de los operandos.

Figura 1. Símbolo que representa una ALU. El sentido y la funcionalidad de las señales de la ALU de la Figura 1 es el siguiente:

x

(decimal) (hexadecimal) 80.0A.02.1E (binario)


SISTEMAS DE NUMERACIÓN. Sistema de numeración decimal: = =8245,97

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

TEMA II: REPRESENTACIÓN DE LA INFORMACIÓN

Extensiones multimedia Intel

Lógica Binaria. Arquitectura de Ordenadores. Codificación de la Información. Abelardo Pardo Universidad Carlos III de Madrid

Apuntes de Microcontroladores (Repaso de temas previos)

Los números racionales

Módulo 9 Sistema matemático y operaciones binarias

Tema 2. La Información y su representación

SITEMA BINARIO, OCTAL Y HEXADECIMAL: OPERACIONES

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS

Conclusiones. Particionado Consciente de los Datos

Estructura de Computadores

Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato

Ecuaciones de primer grado con dos incógnitas

Anexo B. Comunicaciones entre mc y PC

Estructura de Datos. Unidad I Tipos de Datos

ELO311 Estructuras de Computadores Digitales. Números

Estructura y Tecnología de Computadores (ITIG) Luis Rincón Córcoles José Ignacio Martínez Torre Ángel Serrano Sánchez de León.

UNIDAD Nº 1: 1. SISTEMAS DE NUMERACION. Formalizado este concepto, se dirá que un número X viene representado por una cadena de dígitos:

Anterior Sistemas binarios: Aritmética binaria Siguiente ARITMÉTICA BINARIA. Operaciones elementales con números binarios

Los sistemas de numeración se clasifican en: posicionales y no posicionales.

TEMA 1: SISTEMAS INFORMÁTICOS. Parte 2: representación de la información

Procesadores Vectoriales

Procesadores segmentados. El DLX.

OR (+) AND( ). AND AND

SOLUCION EXAMEN junio 2006

SISTEMAS NUMÉRICOS (SISTEMAS DE NUMERACIÓN)

Clase 02: Representación de datos

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos.

LECCIÓN 8: CIRCUITOS Y ALGORITMOS DE MULTIPLICACIÓN DE ENTEROS

Ingeniería Informática. Ampliación de Estructura de Computadores. Curso

Presentación de la materia Historia de las computadoras

FUNDAMENTOS DE COMPUTACIÓN PARA CIENTÍFICOS. CNCA Abril 2013

Tecnologías en la Educación Matemática. Expresiones. Datos. Expresiones Aritméticas. Expresiones Aritméticas 19/08/2014

Temporizadores y contadores en tiempo real: El módulo Timer0 y el prescaler del PIC

3.2 Operaciones aritmético-lógicas en Pascal

Modelo de aplicaciones CUDA

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!

Organización Básica de un Computador y Lenguaje de Máquina

Pipelining o Segmentación de Instrucciones

Aproximación local. Plano tangente. Derivadas parciales.

Técnicas empleadas. además de los discos las controladoras.

TEMA 1 Representación de la información

18. Camino de datos y unidad de control

UNIDAD 3: ARITMÉTICA DEL COMPUTADOR

Transformación de binario a decimal. Transformación de decimal a binario. ELECTRÓNICA DIGITAL

Tema IV. Unidad aritmético lógica

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática

EJERCICIOS RESUELTOS SOBRE ERRORES DE REDONDEO

INFORMÁTICA. Matemáticas aplicadas a la Informática

TEMA 5. ELECTRÓNICA DIGITAL

VECTORES. Módulo, dirección y sentido de un vector fijo En un vector fijo se llama módulo del mismo a la longitud del segmento que lo define.

Preliminares. Tipos de variables y Expresiones

Tecnologías y Arquitecturas

Sistemas de Numeración

EJERCICIOS DEL TEMA 1

Figura 1.4. Elementos que integran a la Tecnología de Información.

Tema: Historia de los Microprocesadores

PROBLEMAS DE FUNDAMENTOS DE TECNOLOGÍA DE COMPUTADORES T5. MEMORIAS

Introducción a la programación orientada a objetos

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v1.0 (05.03.

Computación I Representación Interna Curso 2011

Transcripción:

TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). ÍNDICE: 4.1. Introducción: Aplicaciones científicas y multimedia. 4.2. Arquitecturas vectoriales segmentadas clásicas. 4.3. Extensiones multimedia y núcleos SIMD. 4.4. Técnicas de vectorización. Bucles paralelizables Procesado condicional Precarga software Temporización Modelo del Tejado Dpto. Arquitectura y Tecnología de Computadores. Univ. Sevilla. www.atc.us.es SPD TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). Pág 1

4.1. Introducción: Aplicaciones científicas y multimedia Multimedia publicitario. Más correcto: Arquitecturas SIMD (Single Instruction Multiple Data) o de paralelismo de datos DLP (Data Level Parallelism) en lugar de ILP. Vectores/Matrices igual operación sobre múltiples elementos Código científico y multimedia (procesamiento imágenes, sonido, etc.) Dpto. Arquitectura y Tecnología de Computadores. Univ. Sevilla. www.atc.us.es SPD TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). Pág 2

4.2 Arquitecturas vectoriales segmentadas clásicas. ORIGEN: Años 70 Arquitecturas Vectoriales (supercomputadores, Ej: CRAY). Sólo existían programas de Problemas científico-técnicos Procesador Vectorial: Registros e Instrucciones Vectoriales o Múltiples datos por registros (ej. 256 doubles: 2KB cada registro!!! ) o instrucciones que operan sobre registros completos. Ingeniosas cadenas (pipeline) para operar con elem. de registro vectorial Tb existían operaciones entre Reg vectoriales y escalares Tb registros especiales de control del número de elem. (iteraciones) Ej. DAXPY en ensamblador vectorial: LDV VX,(RX) LDV VY,(RY) MULDV VX,VA,VX //previamente se replicó la cte a en VA ADDDV VX,VX,VY SDV (RY),VX Parecía que en los 90s habían muerto pero Dpto. Arquitectura y Tecnología de Computadores. Univ. Sevilla. www.atc.us.es SPD TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). Pág 3

Ejemplos Procesadores Vectoriales Actuales Supercomputadores, lista www.top500.org Benchmark usado: LINPACK, Álgebra Lineal (solución sistema de ecc lineales) Se usan para programas científicos (simulación meteorológica, etc.) Suelen ser Multicomputadores (tema 3) de miles de procesadores. PERO: Nov. 2002 Earth Simulator (NEC, Japón). Al fabricarlo 5 veces más rápido que el segundo del www.top500.org. Durante tres años supercomputador más potente. 5120 CPUs vectoriales 500 MHz fabricados por NEC Corporation Nov. 2010. Primero en top500 Tianhe-1A 2.93Ghz Mezcla de Procesadores (total: 186368 cores): 14336 Intel Xeon X5670 (CPU) 7168 Nvidia Tesla M2050 (GPU con tratamiento DLP masivo junto a ingenioso paralelismo de hilos). Operaciones FP por Seg : 2507 petaflops (Rmáx), 4669 petaflops (Rpeak) Nov. 2011: el primero es otra vez un Multicomputador (tema 3): un total de 705,024 cores (SPARC64, 8 cores por procesador a 2.0 Ghz) NOTA: Los propias ediciones de Hennessy & Patterson van poniendo en apéndices o en texto principal los proc. Vectoriales!!! Dpto. Arquitectura y Tecnología de Computadores. Univ. Sevilla. www.atc.us.es SPD TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). Pág 4

4.3. Extensiones multimedia y núcleos SIMD. Ejemplos Núcleos Vectoriales SIMD Actuales Intel: (128 bits) Streaming SIMD Extensions (SSE) (1999) (128 bits) SSE2 (2001) SSE3 (2004) SSE4 (2006) (256 bits) Advanced Vector Extensions (AVX) (2008) SPARC: Visual Instruction Set (VIS) (64 bits) MIPS: MDMX MIPS-3D (64 bits) POWER: AltiVec, VSX (128 bits) AMD: 3DNow! Pro (128 bits) fueron abandonadas en 2010 XOP and FMA4 (128 o 256 bits): compatibilidad con SSE4 Henn-Patt 5ª Ed afirma que se podrían doblar su tamaño cada 4 años muy optimista visto los últimos años? Dpto. Arquitectura y Tecnología de Computadores. Univ. Sevilla. www.atc.us.es SPD TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). Pág 5

Modelo Núcleo Multimedia (SIMD): RISCMM Similar a vectorial pero: Registros con menor número de elementos (de 2 a 16) Diferentes tipos de datos (char, int, float, double ) Operaciones realizadas sobre todo un registro a la vez La temporización se obtiene de forma análoga a los escalares (número de iteraciones menor). Modelo que proponemos: RISCMM. Basado en SSE/SSE2/SSE3 de Intel. Similar a otras arquitecturas multimedia. Modelo de registros (de 128 bits). En total 1 Kbit MM0 Float3 Float2 Float1 Float0 MM1............ MM2............... MM7 Double1 Double0 Los registros pueden emplearse para contener 4 flotantes de simple precisión float (4x32), o 2 de doble precisión double (2x64). Dpto. Arquitectura y Tecnología de Computadores. Univ. Sevilla. www.atc.us.es SPD TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). Pág 6

Instrucciones Ensamblador Veremos instrucciones con operandos en coma flotante (Para enteros serían análogas) Existen operaciones que operan sobre el registro completo y otras sólo sobre su parte menos significativa. Emplearemos una notación similar a la de Intel para SSE/SSE2 (Streaming SIMD Extensions) pero con 3 operandos (como en RISC 32 BITS). Para instrucciones que operan sobre todos los elementos de un registro multimedia: OPER p{s d} MMd,MMs1,MMs2 La p (packet) indica que la instrucción opera sobre múltiples datos empaquetados en un solo registro multimedia. SUFIJOS ss sd ps pd Las instrucciones que operan sobre 4 flotantes de simple precisión incluyen el identificador de datos s, las que operan sobre datos de doble precisión incluyen el identificador de datos d. Las instrucciones que operan sobre un único dato en la parte menos significativa del registro, sustituyen la p (packed) por s (scalar): OPER s{s d} MMd,MMs1,MMs2 NOTA: En Intel sólo hay 2 operandos (el segundo puede estar en memoria) Dpto. Arquitectura y Tecnología de Computadores. Univ. Sevilla. www.atc.us.es SPD TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). Pág 7

Tipos de Instrucciones: Aritméticas Similares a las existentes en modo escalar. Usaremos notación vectorial C para registros Multimedia. Si MM6={1.0,2.0,3.0,4.0}, 1.0 estaría en componente 0 (la más baja). Multiplicación: mult{p s}{s d} MMd,MMs1,MMs2. o Ej: Multps MM0,MM1,MM2 Si MM2={1.0,2.0,3.0,4.0} y MM1={0.5,-1.0,-1.0,0.25} tendríamos: MM0={0.5,-2.0,-3.0,1.0} División: div{p s}{s d} MMd,MMs1,MMs2. o ej: divpd MM0,MM1,MM2 Si MM2={1.0, 4.0}, MM1={0.5,8.0} MM0={1.0,5.0} MM0={0.5,2.0} Suma: add{p s}{s d} MMd,MMs1,MMs2. o ej: addss MM0,MM1,MM2 Si MM2={1.0,2.0,3.0,4.0}, MM1={0.5,-1.0,-1.0,0.25} MM0={1.0,2.0,3.0,4.0} tendríamos: MM0={1.5, 2.0,3.0,4.0} Resta: sub{p s}{s d} MMd,MMs1,MMs2. o ej: subsd MM0,MM1,MM2 Si MM2={1.0, 4.0}, MM1={0.5,8.0} MM0={1.0,2.0} MM0={-0.5,2.0} Dpto. Arquitectura y Tecnología de Computadores. Univ. Sevilla. www.atc.us.es SPD TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). Pág 8

Tipos de Instrucciones: Lógicas Bit a Bit Son operaciones entre registros bit a bit. Supondremos que sólo existen en versión de registro completo (sufijo p, 128 bits). Aunque puede indicarse el tipo de dato {s d} en realidad corresponden a la misma instrucción (opcode) para los 3 tipos de datos. And: andp{s d} MMd,MMs1,MMs2. ej: Andps MM0,MM1,MM2 Si MM2={0x7FFFFFFF, 0x7FFFFFFF,x7FFFFFFF, 0x7FFFFFFF } y MM1={0.5,- 1.0,-1.0,0.25} tendríamos valor absoluto: MM0={0.5,1.0,1.0,0.25} //Recordar que el bit más significativo es el signo en float (formato IEEE754) Or: orp{s d} MMd,MMs1,MMs2. ej: orps MM0,MM1,MM2 Si MM2={0x80000000, 0x80000000, 0x80000000, 0x80000000} y MM1={0.5,-1.0,-1.0,0.25} tendríamos: MM0={-0.5,-1.0,-1.0,-0.25}. // Este ejemplo calcula el valor absoluto cambiado de signo. Xor: xorp{s d} MMd,MMs1,MMs2. ej: xorps MM0,MM1,MM2 Si MM2={0x80000000, 0x80000000, 0x80000000, 0x80000000} y MM1={0.5,-1.0,-1.0,0.25} tendríamos: MM0={-0.5,1.0,1.0,-0.25}. //Este ejemplo cambia el signo. Dpto. Arquitectura y Tecnología de Computadores. Univ. Sevilla. www.atc.us.es SPD TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). Pág 9

Tipos de Instrucciones: Comparaciones Estas operaciones son muy similares a las instrucciones de comparación del RISC 32 bits (scc Rd,Rs1,Rs2). cc = código de condición Emplearemos la terminología SSE denominándolas: cmp{gt ge eq le lt ne}{p s}{s d} {> >= == <= <!=} Estas instrucciones realizan la comparación componente a componente de los registros fuente. o Si la condición de comparación es Falsa, todos los bits de la componente correspondiente del registro destino se pone a valor 0. o Si la condición es Verdadera, todos los bits de la componente correspondiente del registro destino se ponen a 1. o Ejemplo: cmpgeps MM0,MM1,MM2. Si MM2={1.0,2.0,3.0,4.0 } y MM1={0.5,10.0,-1.0,25.0} tendríamos:mm0={0,0xffffffff,0,0xffffffff} Para qué sirve poner todo a 1 o todo a 0? Las instrucciones de comparación (junto a las lógicas de bits) serán la base del procesado condicional en los procesadores con extensiones multimedia. Este tema se estudiará en un apartado posterior. Dpto. Arquitectura y Tecnología de Computadores. Univ. Sevilla. www.atc.us.es SPD TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). Pág 10

Instrucciones de Acceso a memoria En el caso de las instrucciones de carga y almacenamiento, existen versiones vectoriales (p) y escalares (s). Las versiones vectoriales ld{p}{s d}, st{p}{s d} corresponden en realidad a una misma instrucción que transfiere 16 bytes (128 bits) desde memoria a registro o viceversa. Los modos de direccionamiento suelen ser análogos a los de las instrucciones escalares. CUIDADO: Alineación en frontera de 16 bytes requerida. Dirección múltiplo de 16 (el último dígito hexadecimal es 0). En algunos núcleos multimedia existen Ld/St para accesos no alineados. Las versiones escalares de las instrucciones de carga y almacenamiento ld{s}{s d}, st{s}{s d} transfieren: o 4 bytes en el caso de operandos s (simple precisión) o 8 bytes en el caso de operandos d (doble precisión). Dpto. Arquitectura y Tecnología de Computadores. Univ. Sevilla. www.atc.us.es SPD TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). Pág 11

Movimiento de Datos: Barajado (shuffle) Instrucciones de barajado que permiten almacenar en cada componente de un registro destino, cualquiera de las de un registro fuente. El formato es: shufp{s d} MMd,MMs, selector. Uso común: replicar la componente menos significativa en todas las componentes de un registro (selector=0): shufps MM0,MM0,0. o Útil para multiplicar un vector por un escalar (no existen instrucciones de multiplicación de escalar por vector en la mayoría de CPU s Multimedia). Ejemplo: descripción barajado Intel SS3 Para simple precisión, el selector es una constante de 8 bits agrupados en 4 parejas. o Las dos parejas menos significativas indican qué componente del registro destino se eligen para las componentes 0,1 del propio registro destino. o Las dos parejas más significativas indican qué componente del registro fuente se eligen para las componentes 2,3 del registro destino o Ej. Shufps MM1,MM2,00011011. El selector debe leerse como 00 01 10 11(2 ó, en decimal, 0 1 2 3. En el ejemplo, MM1 cargará su componente 0 con la componente 3 (11(2) de MM1, su 1 con la 2 de MM1, su 2 con la 1 de MM2 y su 3 con la 0 de MM2. Así si MM2={0.5,10.0,-1.0,25.0}, MM1={8.0,- 7.0,6.0,-5.0}, MM1={-5.0,6.0,10.0,0.5}. Otros ejemplos: rotar o dar la vuelta al orden de los elementos o La versión de doble precisión shufpd emplea un selector de dos campos (cada uno de un bit) para seleccionar las dos componentes de forma análoga. Dpto. Arquitectura y Tecnología de Computadores. Univ. Sevilla. www.atc.us.es SPD TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). Pág 12

4.4. Técnicas de vectorización: bucle SAXPY R4 apunta al vector x, R1 apunta al vector y, R2 apunta el final del vector x, R3 apunta a la constante a. Ldss MM2,(R3) //Carga a en la componente baja de MM2 Shufps MM2,MM2,0 //Replica a en todas las componentes de MM2 Saxpy: Ldps MM0,(R4) //Carga 4 componentes de x en MM0 Ldps MM1,(R1) //Carga 4 componentes de y en MM1 Multps MM0,MM0,MM2 //multiplica las componentes de x por a Addps MM0,MM0,MM1 //y+a*x Stps (R1),MM0 //almacena y Addi R1,R1,16 Addi R4,R4,16 //Actualiza punteros Seq R5,R4,R2 //Fin de x? Beqz R5,Saxpy //si no hemos acabado, seguimos Ejercicio: desenrollar código anterior Dpto. Arquitectura y Tecnología de Computadores. Univ. Sevilla. www.atc.us.es SPD TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). Pág 13

Procesado Condicional Cuando empleamos instrucciones multimedia no es posible implementar las estructuras if mediante saltos, dado que diferentes componentes del registro pueden satisfacer o no las condiciones. Esto implica que las estructuras if deben implementarse transformando las dependencias de control en dependencias de datos utilizando, para ello, las instrucciones lógicas de bits y las instrucciones de comparación. Hasta qué tamaño del cuerpo del if es rentable este procesado condicional?: o No muchas instrucciones (se ejecutarían demasiadas operaciones inútiles) Qué ocurre si hay N ramas (N>2) (varios if/else)? En teoría se pueden generar las N ramas, pero (actualmente) no suele traer cuenta por lo anterior. Ej: si en cada rama hay vectores de salida diferentes: trabajar con ambos EJER El método para realizar esta transformación lo explicaremos mediante un ejemplo: Supongamos el código: int i; float x[10000],y[10000]; for(i=0;i<10000;i++) if (x[i]>0) x[i]=x[i]+y[i]; else x[i]=x[i]-y[i]; Dpto. Arquitectura y Tecnología de Computadores. Univ. Sevilla. www.atc.us.es SPD TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). Pág 14

Procesado Condicional: Ejemplo (I) En este caso hay que (ver figura): 1. Crear una máscara correspondiente al resultado de la comparación x[i]>0 (cond. Cierta) y otra correspondiente a la condición opuesta (cond. Falsa). 2. Calcular los x[i] correspondientes a que se cumpla la condición if y hacer and con la máscara correspondiente. 3. Calcular los x[i] correspondientes a la condición else y hacer and con la máscara correspondiente. 4. Hacer or con los valores obtenidos de las dos operaciones and (cada uno de ellos contiene ceros donde el otro contiene valores). 5. Este es el valor que se almacena. Ambas ramas son independientes; se pueden ejecutar en paralelo: más ILP (deben existir suficientes UF: CPU actuales 2 o 3 de SSE) Dpto. Arquitectura y Tecnología de Computadores. Univ. Sevilla. www.atc.us.es SPD TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). Pág 15

Procesado Condicional: Ejemplo (II) Código suponiendo que: R4 vector x, R1 vector y R2 al final del vector x (sig byte) xorps MM0,MM0,MM0 //Pone MM0 a 0. En IEEE754 0.0 es caso //especial con todos los bits a 0 Bucle: Ldps MM1,(R4) //Carga 4 comp. de x. Ldps MM4,(R1) //Carga 4 comp. de y. Cmpgtps MM2,MM1,MM0 //MM2 es la máscara cond. cierta. Cmpleps MM3,MM1,MM0 //MM3 es la máscara cond. falsa Addps MM5,MM1,MM4 //MM5 contiene x+y Subps MM6,MM1,MM4 //MM6 contiene x-y Andps MM5,MM2,MM5 //and cond. Cierta. Andps MM6,MM3,MM6 //and cond. Falsa Orps MM5,MM5,MM6 //Resultado a almacenar. Stps (R4),MM5 Addi R4,R4,16 Addi R1,R1,16 Seq R3,R4,R2 Beqz R3,Bucle Ejercicio: desenrollar código anterior (si tuviéramos registros suficientes) Ejercicio: Pensar en como se haría usando CMOVZps, CMOVNZps. Dpto. Arquitectura y Tecnología de Computadores. Univ. Sevilla. www.atc.us.es SPD TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). Pág 16

Uso de instruc. de precarga (software) En las aplicaciones multimedia es habitual que los próximos datos que necesite el programa, no sean los últimos accedidos, pero que sean fáciles de predecir. En general, el programador es quien mejor conoce qué datos se necesitarán en el futuro. Por ello, en muchos casos, conviene precargar datos en el caché y, así, asegurar que las cargas posteriores acertarán en el mismo. Una técnica tradicional en RISC consiste en usar instrucciones ld R0,(Ra) (R0 no puede escribirse; vale siempre 0) para hacer cargas con tal fin. El inconveniente de usar instrucciones Load es que pueden generar excepciones (fallos de página, accesos a zonas protegidas) no deseadas.ejerc: bucle simple Para evitar el problema de las excepciones, los procesadores con extensiones multimedia suelen implementar instrucciones específicas de precarga (prefetch). Son equivalentes a ld R0,(Rx) pero no provocan excepciones. Si el acceso provocara excepciones, no se realizaría. En Intel hay instr. prefetch para L1 y L2, o sólo para L2 Más tarde cuando el procesador ejecute la instrucción de carga: o Se acertará en caché, o O se accederá a memoria y se atenderán las excepciones si se producen. No abusar de prefetch: podrían consumir AB inútilmente Dpto. Arquitectura y Tecnología de Computadores. Univ. Sevilla. www.atc.us.es SPD TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). Pág 17

Temporización con Instrucciones Multimedia. Generalmente Planificación dinámica para GPP, pero estática para DSP En los procesadores vectoriales existen instrucciones de carga/almacenamiento cuya zancada (distancia entre los elementos que se van a cargar en un mismo registro vectorial) puede definirse. En los multimedia aún no existen. Esto supone un inconveniente si usamos vector de estructuras (AOS) en lugar de estructura de vectores (SOA). A diferencia del caso de los procesadores vectoriales, las instrucciones multimedia se comportan como instrucciones habituales de un procesador convencional no existiendo ninguna diferencia importante en el cálculo del tiempo de ejecución de un programa. Las únicas diferencias estarían en el cálculo del rendimiento en MFLOPs. Tener en cuenta que las operaciones multps, addps, etc realizan 4 operaciones en coma flotante mientras multpd, addpd, etc. realizan 2. Las comparaciones y operaciones lógicas no se tienen en cuenta en el cálculo del rendimiento en MFLOPs. Cuando se usa procesado condicional, se ejecutan las dos ramas del if. Realmente, una de las ramas se ejecuta inútilmente. De esa forma, se suele medir el rendimiento calculando MFLOPs útiles (en lugar de MFLOPs totales) Dpto. Arquitectura y Tecnología de Computadores. Univ. Sevilla. www.atc.us.es SPD TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). Pág 18

Rendimiento de pico: Modelo del Tejado Roofline model. Propuesto en 2009 (Ver Henn-Patt 5ª Ed.) Calcula Rendimiento de pico para: o FP: float (SP) o double(dp) o Bucle paralelizable o Zancada unidad (datos contiguos en memoria) o Se usan núcleos SIMD de forma ideal. o Grado superescal. m suficientemente grande para que no suponga cota Cuáles son los Límites del rendimiento (máximo)? EJEMPLO SAXPY LFx LFy MULTF ADDF SFy 4 instr. overhead Ldps x Ldps y MULTps ADDps Stps y 4 instr. overhead limitaciones actuales de hw (1 core): - m=4. - 2 UF FP ó 2 UF MMX - AB MEM = 16 GB/s. f CPU = 3 GHz Suele ser el AB MEM Nº UF de Oper. Aritméticas Nº UF * f CPU (supone 1 dato por ciclo) Acceso a jerarquía memoria: AB MEM * D A, es decir: G Byte/s * FLOP/Byte o D A es la densidad aritmética (arithmetic intensity): Nº oper. FP dividido por bytes accedidos (Sólo depende del algoritmo, independiente de hw). Dpto. Arquitectura y Tecnología de Computadores. Univ. Sevilla. www.atc.us.es SPD TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). Pág 19

Ejemplo Rendimiento de pico: Modelo del Tejado Intel Core i7 Nehalem (2.666 GHz, 2 cores, 2 UF AVX 256 bits: VMULT,VADD) Nº UF * f CPU : 2.666 GHz * 2 cores * 2 UF AVX * 256/64 = 42.6 GFLOPs DAXPY Double precision: o LDx LDy MULTD ADDD SD o D A = 2 FLOP / 24 bytes = 1/12 AB MEM * D A : 16.4 GB/s*1/12 = 1.36 GFLOPs AB RAM limita (y en la realidad puede no llegar a AB RAM máxima) AB L1 =85.3 GB/s No es fácil imaginar un algor. que tenga D A > 42.66/16.4 = 2.6 para que AB RAM no sea el factor limitante. o 8 bytes más de 20 FLOP Si datos en L1: AB L1 puede no ser el factor limitante: 2 puertos * 128 bits * 2.666 GHz = 85.33 GB/s o D A > 42.66/85.33 GB/s = ½ Dpto. Arquitectura y Tecnología de Computadores. Univ. Sevilla. www.atc.us.es SPD TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). Pág 20 D A

Otros DLP: GPU GPU (Graphics Processing Units): sólo para DLP masivo Científicos usaron tarjetas gráficas para computar: los fabricantes generalizaron la cadena gráfica para computar (casi) cualquier código El Thread Scheduler (planificador de hilos) lleva el control del paralelismo. o Se estudian en Asignatura CAP del MICR (Máster Ing. Computadores y Redes) Dpto. Arquitectura y Tecnología de Computadores. Univ. Sevilla. www.atc.us.es SPD TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). Pág 21