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

Save this PDF as:
 WORD  PNG  TXT  JPG

Tamaño: px
Comenzar la demostración a partir de la página:

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

Transcripción

1 a a Departamento de Electrónica e Sistemas Universidade da Coruña Febrero a

2 Índice a a

3 Qué son extensiones multimedia? a Son nuevas instrucciones añadidas al repertorio de instrucciones de los microprocesadores. Estas instrucciones están optimizadas para procesar datos en aplicaciones multimedia. La característica común es que están basadas en el paradigma SIMD. Las extensiones multimedia utilizan replicación de unidades funcionales. Ejecución síncrona de la misma instrucción sobre datos diferentes. Control 3 a 2 / 30

4 SIMD vs. Superscalar a Un procesador SIMD es más sencillo que uno superscalar por varias razones: Sólo necesita una unidad de control. No es necesario resolver dependencias. Control Banco de registros Acceso a memoria Control Análisis de dependencias Reordenamiento de instrucciones Renombramiento de registros Ejecución de instrucciones Banco de registros Acceso a memoria 3 a 3 / 30

5 SIMD en sistemas comerciales a 3 Microprocesadores multicore actuales: SSE de Intel, Altivec para el PowerPC (IBM), 3DNow! para AMD. GPUs actuales (Graphic Processing Unit): tarjetas gráficas como GeForce GTX 580, ATI Radeon Del orden de cientos de cores pero con una jerarquía que complica su programación. Procesador Cell de la PlayStation3. Dentro de cada unidad SPE (tiene 8 en el mismo procesador) utiliza instrucciones vectoriales propietarias (basadas en Altivec). Many Integrated Core (MIC) de Intel a 4 / 30

6 Contextualización del paralelismo SIMD a SSE 3 a 5 / 30

7 Evolución histórica de extensiones multimedia a 3 Año 1997: MMX Año 1998: 3dNow! Año 1999: SSE Año 2001: SSE2 Año 2004: SSE3 Año 2006: SSSE3 Año 2007: SSE4 Año 2007: SSE5 Año 2008: AVX Aparecen en el Pentium. Usan 8 registros vectoriales (mmx0... mmx7) de 64 bits. Registros compartidos con la FPU. Sólo operaciones sobre enteros. a 6 / 30

8 Evolución histórica de extensiones multimedia a 3 Año 1997: MMX Año 1998: 3dNow! Año 1999: SSE Año 2001: SSE2 Año 2004: SSE3 Año 2006: SSSE3 Año 2007: SSE4 Año 2007: SSE5 Año 2008: AVX Aparecen en el AMD K6-2. Operan tanto sobre enteros como sobre punto flotante. Extendida posteriormente en Enhaced 3dNow! y 3dNow! Professional a 6 / 30

9 Evolución histórica de extensiones multimedia a 3 Año 1997: MMX Año 1998: 3dNow! Año 1999: SSE Año 2001: SSE2 Año 2004: SSE3 Año 2006: SSSE3 Año 2007: SSE4 Año 2007: SSE5 Año 2008: AVX Acrónimo de Streaming SIMD Extensions. Usadas en el Pentium III y el AMD Athlon. 8 nuevos registros (xmm0... xmm7) de 128 bits. 70 nuevas instrucciones vectoriales en punto flotante de simple precisión. a 6 / 30

10 Evolución histórica de extensiones multimedia a 3 Año 1997: MMX Año 1998: 3dNow! Año 1999: SSE Año 2001: SSE2 Año 2004: SSE3 Año 2006: SSSE3 Año 2007: SSE4 Año 2007: SSE5 Año 2008: AVX Presentes en el Pentium IV y el AMD Athlon 64. Nuevas instrucciones vectoriales para enteros y punto flotante en doble precisión. Ya no es necesario el uso de instrucciones MMX. a 6 / 30

11 Evolución histórica de extensiones multimedia a 3 Año 1997: MMX Año 1998: 3dNow! Año 1999: SSE Año 2001: SSE2 Año 2004: SSE3 Año 2006: SSSE3 Año 2007: SSE4 Año 2007: SSE5 Año 2008: AVX Se usan en el Pentium IV Prescott y en los últimos Athlon 64 y Athlon 64 X2. 13 nuevas instrucciones. Mejora la capacidad para trabajar (horizontalmente) sobre datos guardados en el mismo registro. a 6 / 30

12 Evolución histórica de extensiones multimedia a 3 Año 1997: MMX Año 1998: 3dNow! Año 1999: SSE Año 2001: SSE2 Año 2004: SSE3 Año 2006: SSSE3 Año 2007: SSE4 Año 2007: SSE5 Año 2008: AVX Acrónimo de Suplementary SSE3. Usadas sólo en la arquitectura Core. Son 16 nuevas instrucciones para 64 bits y mismas 16 para 128 bits. a 6 / 30

13 Evolución histórica de extensiones multimedia a 3 Año 1997: MMX Año 1998: 3dNow! Año 1999: SSE Año 2001: SSE2 Año 2004: SSE3 Año 2006: SSSE3 Año 2007: SSE4 Año 2007: SSE5 Año 2008: AVX Implementadas en el Intel Core 2 Duo Penryn. Son 54 (47 SSE SSE4.2) nuevas instrucciones. Trabaja con registros de 128 bits pero realiza cálculos tanto de enteros como de punto flotante. a 6 / 30

14 Evolución histórica de extensiones multimedia a 3 Año 1997: MMX Año 1998: 3dNow! Año 1999: SSE Año 2001: SSE2 Año 2004: SSE3 Año 2006: SSSE3 Año 2007: SSE4 Año 2007: SSE5 Año 2008: AVX Implementadas en el procesador AMD Bulldozer (2011). Son 170 nuevas instrucciones. a 6 / 30

15 Evolución histórica de extensiones multimedia a 3 Año 1997: MMX Año 1998: 3dNow! Año 1999: SSE Año 2001: SSE2 Año 2004: SSE3 Año 2006: SSSE3 Año 2007: SSE4 Año 2007: SSE5 Año 2008: AVX Implementadas en el procesador Intel Sandy Bridge (2010) y AMD Bulldozer (2011). a 6 / 30

16 Índice a a

17 Métodos para usar la tecnología SIMD a 3 + facilidad de uso + control Vectorización automática. Ces C++ especiales. Librería. Lenguaje ensamblador embebido. Soporte limitado en los compiladores. No se debe tener confianza en que obtengan un buen rendimiento. En gcc (version >=4.0): -O3 -ftree-vectorize -ftreevectorizer-verbose=nivel -march=arquitectura En icc: -O3 -xsse3 -vec-report[nivel] a 7 / 30

18 Métodos para usar la tecnología SIMD a 3 + facilidad de uso + control Vectorización automática. Ces C++ especiales. Librería. Lenguaje ensamblador embebido. Cabeceras. ivec.h para MMX fvec.h para SSE e incluye ivec.h dvec.h para SSE2 e incluye fvec.h Ces especiales. I8vec8, (ocho enteros de 8 bits) I8vec16, (16 enteros de 8 bits) I16vec4, I16vec8, I32vec2, I32vec4, I64vec1, I64vec2, I128vec1 Isec8, (entero con signo) Iuvec8 (entero sin signo) F32vec4 4 números flotante en simple precisión de 32 bits F64vec4 4 números flotante en simple precisión de 64 bits a 7 / 30

19 Métodos para usar la tecnología SIMD a 3 + facilidad de uso + control Vectorización automática. Ces C++ especiales. Librería. Lenguaje ensamblador embebido. Alta eficiencia pero programación engorrosa y lenta. GCC Inline Assembly: asm { // Instrucciones en ensamblador } a 7 / 30

20 Métodos para usar la tecnología SIMD a 3 + facilidad de uso + control Vectorización automática. Ces C++ especiales. Librería. Lenguaje ensamblador embebido. Funciones de alto nivel que se mapean de forma casi directa en instrucciones ensamblador. Ofrecen lo mejor de ambos mundos. Ejemplos: MMX: m64 m paddb( m64 m1, m64 m2) SSE: m128 mm add ps( m128 a, m128 b) Altivec: vec madd(arg1, arg2, arg3) a 7 / 30

21 Índice a a

22 Programación en SSE usando a 3 Cabeceras a utilizar: mmintrin.h para instrucciones MMX. xmmintrin.h para instrucciones SSE. Incluye mmintrin.h. emmintrin.h para instrucciones SSE2. Incluye xmmintrin.h. pmmintrin.h para instrucciones SSE3. Incluye emmintrin.h. Proporcionan: NOTA Tipos de datos para manejo de los registros vectoriales. Instrucciones vectoriales. En Linux la llamada cat /proc/cpuinfo muestra qué extensiones están disponibles. a 8 / 30

23 Tipos de datos y operaciones de a 3 NOTA Tipo Registro Almacena m64 MMX 8x8 bits, 4x16 bits, 2x32 bits o 1x64 bits m128 XMM 4x32 bits m128d XMM 2x64 bits m128i XMM 16x8 bits, 8x16 bits, 4x32 bits, 2x64 bits Por el tipo de datos: Enteros: 8, 16, 32 y 64 bits, con y sin signo. Punto flotante: simple y doble precisión. Por el tipo de operación: Aritmético-lógicas: sumas, productos... De manipulación de datos: movimiento entre registros y memoria, empaquetar/desempaquetar... No existen instrucciones de control de flujo SIMD. a 9 / 30

24 Instrucciones vectoriales de a 3 El nombre suele seguir la forma libreria instruccion sufijo Librería: mm para SSE, m para MMX. Instrucción: Por ejemplo la suma es add. Sufijo: Sobre registros MMX(64-bit): pi# Contienen enteros de #-bit empaquetados. pu# Contienen enteros sin signo de #-bit empaquetados. si64 Contienen un solo entero de 64 bits. Sobre registros XMM(128-bit): epi# Contienen enteros de #-bit empaquetados. epu# Contienen enteros sin signo de #-bit empaquetados. ps Contienen valores en punto flotante de precisión simple empaquetados. ss Contienen un número en punto flotante de precisión simple. pd Contienen valores en punto flotante de doble precisión empaquetados. sd Contienen un número en punto flotante de doble precisión. si128 Contienen un solo entero de 128 bits. a 10 / 30

25 Instrucciones vectoriales de a 3 El nombre suele seguir la forma libreria instruccion sufijo Librería: mm para SSE, m para MMX. Instrucción: Por ejemplo la suma es add. Sufijo: Sobre registros MMX(64-bit): pi# Contienen enteros de #-bit empaquetados. pu# Contienen enteros sin signo de #-bit empaquetados. si64 Contienen un solo entero de 64 bits. Sobre registros XMM(128-bit): epi# Contienen enteros de #-bit empaquetados. epu# Contienen enteros sin signo de #-bit empaquetados. ps Contienen valores en punto flotante de precisión simple empaquetados. ss Contienen un número en punto flotante de precisión simple. pd Contienen valores en punto flotante de doble precisión empaquetados. sd Contienen un número en punto flotante de doble precisión. si128 Contienen un solo entero de 128 bits. a 10 / 30

26 Instrucciones vectoriales de a 3 El nombre suele seguir la forma libreria instruccion sufijo Librería: mm para SSE, m para MMX. Instrucción: Por ejemplo la suma es add. Sufijo: Sobre registros MMX(64-bit): pi# Contienen enteros de #-bit empaquetados. pu# Contienen enteros sin signo de #-bit empaquetados. si64 Contienen un solo entero de 64 bits. Sobre registros XMM(128-bit): epi# Contienen enteros de #-bit empaquetados. epu# Contienen enteros sin signo de #-bit empaquetados. ps Contienen valores en punto flotante de precisión simple empaquetados. ss Contienen un número en punto flotante de precisión simple. pd Contienen valores en punto flotante de doble precisión empaquetados. sd Contienen un número en punto flotante de doble precisión. si128 Contienen un solo entero de 128 bits. a 10 / 30

27 Instrucciones vectoriales de a 3 El nombre suele seguir la forma libreria instruccion sufijo Librería: mm para SSE, m para MMX. Instrucción: Por ejemplo la suma es add. Sufijo: Sobre registros MMX(64-bit): pi# Contienen enteros de #-bit empaquetados. pu# Contienen enteros sin signo de #-bit empaquetados. si64 Contienen un solo entero de 64 bits. Sobre registros XMM(128-bit): epi# Contienen enteros de #-bit empaquetados. epu# Contienen enteros sin signo de #-bit empaquetados. ps Contienen valores en punto flotante de precisión simple empaquetados. ss Contienen un número en punto flotante de precisión simple. pd Contienen valores en punto flotante de doble precisión empaquetados. sd Contienen un número en punto flotante de doble precisión. si128 Contienen un solo entero de 128 bits. a 10 / 30

28 Instrucciones de Carga/Almacenamiento a m128 mm load ps(float *p) p RAM... p 0 p 1 p 2 p 3... float *p; m128 a; //Inicialización, reserva de espacio y alineado... a = _mm_load_ps(p); p 0 p 1 p 2 p 3 a 3 NOTA La dirección p debe tener un alineamiento de 16 bytes. a 11 / 30

29 Instrucciones de Carga/Almacenamiento a void mm store ps(float *p, m128 a) p RAM... a0 a1 a2 a3... float *p; m128 a; //Inicialización, reserva de espacio y alineado... _mm_store_ps(p, a); a0 a1 a2 a3 a 3 NOTA La dirección debe tener un alineamiento de 16 bytes. a 11 / 30

30 Instrucciones de Inicialización a m128 mm setzero ps(void) Inicializa el registro con 4 ceros en punto flotante de simple precisión. 3 a 12 / 30

31 Instrucciones de Inicialización a m128 mm set ps(float z, float y, float x, float w) w x y z Inicializa el registro con los números en puntos flotante de simple precisión especificados en w,x,y y z. 3 a 12 / 30

32 Instrucciones de Reordenación a m128 mm unpacklo ps( m128 a, m128 b) m128 a, b, c; //Inicialización de registros... c = _mm_unpacklo_ps(a, b); a 0 a 1 a 2 a 3 a UPCKLO b 0 b 1 b 2 b 3 b 3 a 0 b 0 a 1 b 1 c Entrelaza los 2 valores en punto flotante y simple precisión de la parte inferior de a con los 2 de la parte inferior de b. a 13 / 30

33 Instrucciones de Reordenación a m128 mm unpackhi ps( m128 a, m128 b) m128 a, b, c; //Inicialización de registros... c = _mm_unpackhi_ps(a, b); a 0 a 1 a 2 a 3 a UPCKHI b 0 b 1 b 2 b 3 b 3 a 2 b 2 a 3 b 3 c Entrelaza los 2 valores en punto flotante de la parte superior de a con los 2 de la parte superior de b. a 13 / 30

34 Instrucciones de Reordenación a m128 mm shuffle ps( m128 a, m128 b, int imm) m128 a, b, c; //Inicialización de registros... c = _mm_shuffle_ps(a, b, _MM_SHUFFLE(1,2,3,0)); a 0 a 1 a 2 a 3 a SHUFFLE b 0 b 1 b 2 b 3 b 3 a 0 a 3 b 2 b 1 c Selecciona 2 valores de a y 2 valores de b basándose en el contenido de la máscara imm. a 13 / 30

35 Operación de shuffle: Uso de la máscara a Dados dos registros vectoriales m1 y m m1 a b c d m2 e f g h 3 a 14 / 30

36 Operación de shuffle: Uso de la máscara a...los combino en un tercer registro m3, usando una máscara m1 a b c d m3 = _mm_shuffle_ps(m1, m2, _MM_SHUFFLE(,,,)) 3 m e f g h m a 14 / 30

37 Operación de shuffle: Uso de la máscara a Los 2 primeros argumentos seleccionan los elementos de m m1 a b c d m3 = _mm_shuffle_ps(m1, m2, _MM_SHUFFLE(1,2,,)) m2 e f g h m3 g f 0 (1) (2) 3 3 a 14 / 30

38 Operación de shuffle: Uso de la máscara a Los 2 últimos argumentos seleccionan los elementos de m m1 a b c d m3 = _mm_shuffle_ps(m1, m2, _MM_SHUFFLE(1,2,3,0)) (0) 1 2 (3) m2 e f g h m3 a d g f 3 a 14 / 30

39 Instrucciones Aritméticas a m128 mm add ps( m128 a, m128 b) a0 + b0 a1 + b1 a2 + b2 a3 + b Suma los 4 flotantes en simple precisión de a con los de b. 3 a 15 / 30

40 Instrucciones Aritméticas a m128 mm mul ps( m128 a, m128 b) a0 b0 a1 b1 a2 b2 a3 b Multiplica los 4 flotantes en simple precisión de a con los de b. 3 a 15 / 30

41 Instrucciones Aritméticas a m128 mm hadd ps( m128 a, m128 b) a0 + a1 a2 + a3 b0 + b1 b2 + b Suma dos a dos los 4 flotantes en simple precisión de a y los 4 de b. 3 a 15 / 30

42 Instrucciones Aritméticas a m128 mm sqrt ps( m128 a) sqrt(a0) sqrt(a1) sqrt(a2) sqrt(a3) Calcula la raíz cuadrada de los 4 números en punto flotante de simple precisión almacenados en a. 3 a 15 / 30

43 Instrucciones Aritméticas a m128i mm sad epu8( m128i a, m128i b) abs(a8 b8) abs(a9 b9) abs(a15 b15) abs(a0 b0) + abs(a1 b1) abs(a7 b7) Calcula la suma de diferencias absolutas entre los 8 primeros enteros de cada registro y entre los ocho siguientes. 3 a 15 / 30

44 Índice a a

45 Vectorización a 3 La técnica se aplica sobre bucles dentro del programa. La disposición de los datos, el orden de operaciones y dependencias tienen gran influencia en el rendimiento. int i; float A[1024],B[1024],C[1024]; for(i=0; i<1024; i++) C[i]=A[i]*B[i]; int i; Unrolling factor 4 float A[1024],B[1024],C[1024]; m128 reg0, reg1, reg2; for(i=0; i<1024; i+=4){ reg0 = _mm_loadu_ps(&(a[i])); reg1 = _mm_loadu_ps(&(b[i])); reg2 = _mm_mul_ps(reg0, reg1); _mm_storeu_ps(&(c[i]),reg2); } int i; float A[1024],B[1024],C[1024]; for(i=0; i<1024; i+=4){ C[i]=A[i]*B[i]; C[i+1]=A[i+1]*B[i+1]; C[i+2]=A[i+2]*B[i+2]; C[i+3]=A[i+3]*B[i+3]; } a 16 / 30

46 Mapeado de datos: Alineado de memoria a Los registros SSE tienen 128 bits (16 bytes). Las instrucciones vectoriales deben operar sobre datos alineados. NOTA Si operamos vectorialmente datos no alineados obtendremos una excepción. Existen instrucciones específicas para operar datos no alineados (menor rendimiento dependiendo del hardware). 3 a 17 / 30

47 Mapeado de datos: Alineado de memoria a Memoria estática: Alineamiento: float a[1024] attribute ((aligned(16))); Memoria dinámica: Modificación manual del puntero. Instrucción específica de reserva de memoria: int *p=(int *) _mm_malloc(size*sizeof(int),16);... _mm_free(p); 3 a 18 / 30

48 Mapeado de datos: Tamaño de los datos a Ejemplo La máxima aceleración alcanzable utilizando instrucciones SIMD depende directamente del tamaño de los elementos individuales. Es necesario usar el tipo de datos más pequeño que podamos. Usar unsigned short en vez de unsigned int si sabemos que el máximo entero almacenado nunca excederá del rango de un unsigned short. 3 a 19 / 30

49 Índice a a

50 Sumar los elementos de dos vectores a 3... float *a,*b,*c; a=(float *) malloc(size*sizeof(float)); b=(float *) malloc(size*sizeof(float)); c=(float *) malloc(size*sizeof(float)); for (i=0; i<size; i++) { c[i]=a[i]+b[i]; }... free(a);free(b);free(c); a 20 / 30

51 Sumar los elementos de dos vectores a 3... //Alineamiento de datos float *a,*b,*c; a=(float *) mm malloc(size*sizeof(float),16); b=(float *) mm malloc(size*sizeof(float),16); c=(float *) mm malloc(size*sizeof(float),16); /*... Inicializacion de los array...*/ for (i=0; i<size; i++) { c[i]=a[i]+b[i]; }... a 21 / 30

52 Sumar los elementos de dos vectores a 3... //Alineamiento de datos float *a,*b,*c; a=(float *) mm malloc(size*sizeof(float),16); b=(float *) mm malloc(size*sizeof(float),16); c=(float *) mm malloc(size*sizeof(float),16); /*... Inicializacion de los array...*/ //Declarar registros vectoriales m128 rega,regb,regc; for (i=0; i<size; i++) { c[i]=a[i]+b[i]; }... a 22 / 30

53 Sumar los elementos de dos vectores a 3... //Alineamiento de datos float *a,*b,*c; a=(float *) mm malloc(size*sizeof(float),16); b=(float *) mm malloc(size*sizeof(float),16); c=(float *) mm malloc(size*sizeof(float),16); /*... Inicializacion de los array...*/ //Declarar registros vectoriales m128 rega,regb,regc; //Procesar los elementos vectorialmente for (i=0; i<size; i=i+4) { regb= mm load ps(&(a[i])); regc= mm load ps(&(b[i])); rega= mm add ps(regb,regc); mm store ps(&(c[i]),rega); }... //Liberar memoria mm free(a); mm free(b); mm free(c); a 23 / 30

54 Índice a a

55 Cálculo de la norma de cada fila de una matriz densa a for (i=0; i<nfi; i++) { normafila = 0; for (j=0; j<ncols; j++) { normafila += valores[i*ncols+j]*valores[i*ncols+j]; } norma[i] = sqrt(normafila); } 3 a 24 / 30

56 Cálculo de la norma de cada fila de una matriz: Versiones a 3 1 AUTOVEC : vectorizar automáticamente el código con GCC. 2 MANVEC1 : vectorizar la operación producto del bucle interno. 3 MANVEC2: vectorizar 3 operaciones del bucle más externo (+,*,sqrt) mediante operaciones que operen horizontalmente sobre datos ubicados en el mismo registro (instrucción mm hadd ps). 4 MANVEC3: vectorizar 3 operaciones del bucle más externo (+,*,sqrt) mediante operaciones que redistribuyan los datos en los registros para evitar operaciones horizontales (usar instrucciones tales como mm shuffle ps, mm unpacklo ps y mm unpackhi ps). a 25 / 30

57 Cálculo de la norma de cada fila de una matriz densa: Problemas a resolver a Problemas comunes que se deben resolver en versiones que utilizan : 1 Alineamiento de los datos. 2 El ĺımite del bucle puede no ser múltiplo del número de elementos que van a ser procesados simultáneamente en cada iteración del bucle vectorizado. 3 a 26 / 30

58 Cálculo de la norma de cada fila de una matriz densa: MANVEC2 y 3 a La matriz se procesa en subbloques del tamaño apropiado. a1 b1 a2 b2 a3 b3 a4 b4 c1 c2 c3 c4 d1 d2 d3 d4 3 Operación a realizar a1*a1 + a2*a2 + a3*a3 + a4*a4 b1*b1 + b2*b2 + b3*b3 + b4*b4 c1*c1 + c2*c2 + c3*c3 + c4*c4 d1*d1 + d2*d2 + d3*d3 + d4*d4 a 27 / 30

59 Cálculo de la norma de cada fila de una matriz densa: MANVEC2 a Vectorizar (*,+,sqrt) usando operaciones horizontales (p. ej. mm hadd ps): 2 Multiplicar cada registro por sí mismo. a1 a2 a3 a4 b1 b2 b3 b4 c1 c2 c3 c4 d1 d2 d3 d4 a1 a2 a3 a4 b1 b2 b3 b4 c1 c2 c3 c4 a1*a1 a2*a2 a3*a3 a4*a4 b1*b1 b2*b2 b3*b3 b4*b4 c1*c1 c2*c2 c3*c3 c4*c4 a1*a1+ a2*a2+ a3*a3+ a4*4 b1*b1+ b2*b2+ b3*b3+ b4*b4 c1*c1+ c2*c2+ c3*c3+ c4*c4 d1*d1+ d2*d2+ d3*d3+ d4*d4 d1 d2 d3 d4 1 - Cargar los datos en registros vectoriales. d1*d1 d2*d2 d3*d3 d4*d4 3 Sumar todos los registros entre sí Al terminar de procesar cada fila calcular la raíz cuadrada de lo acumulado. a 28 / 30

60 Cálculo de la norma de cada fila de una matriz densa: MANVEC3 a Vectorizar (*,+,sqrt) usando operaciones de redistribución de los datos sobre los registros (p. ej. mm shuffle ps, mm unpacklo ps, mm unpackhi ps): 1 - Cargar los datos en registros vectoriales de 4 en Multiplicar cada registro por sí mismo. a1 a2 a3 a4 a1 a2 a3 a4 a1 b1 c1 d1 a1*a1 b1*b1 c1*c1 d1*d1 b1 b2 b3 b4 c1 c2 c3 c4 d1 d2 d3 d4 b1 c1 d1 b2 c2 d2 b3 c3 d3 b4 c4 d4 2 - Reordenar los datos para evitar tener que realizar una suma de valores ubicados en el mismo registro. a2 a3 a4 b2 b3 b4 c2 c3 c4 d2 d3 d4 a2*a2 b2*b2 c2*c2 d2*d2 a1*a1 + b1*b1 + c1*c1 + a2*a2 + b2*b2 + c2*c2 + a3*a3 + b3*b3 + c3*c3 + a4*a4 b4*b4 c4*c4 a3*a3 b3*b3 c3*c3 d3*d3 a4*a4 b4*b4 c4*c4 d4*d4 4 - Sumar todos los registros entre sí. d1*d1 + d2*d2 + d3*d3 + d4*d4 3 Operación a realizar a1*a1 + a2*a2 + a3*a3 + a4*a4 b1*b1 + b2*b2 + b3*b3 + b4*b4 c1*c1 + c2*c2 + c3*c3 + c4*c4 d1*d1 + d2*d2 + d3*d3 + d4*d4 a 29 / 30

61 Información importante a Práctica 3 = Deadline: 16 y 17 de febrero Jorge González Domínguez Grupo de Arquitectura de Tutorías: Martes 11:30-13:30 y Viernes 10:30-12:30 Laboratorio a 30 / 30

Familia de procesadores Intel x86

Familia de procesadores Intel x86 Familia de procesadores Intel x86 Mario Medina C. mariomedina@udec.cl Intel 8086 y 8088 8086: 1978, 29K transistores 8 Registros de 16 bits Bus de datos de 16 bits Bus de dirección de 20 bits Multiplexado

Más detalles

Extensiones multimedia Intel

Extensiones multimedia Intel Facultad de Informática Grado de Ingeniería Informática Ingeniería de Computadores Extensiones multimedia Intel Autor: Mikel Sagastibelza Azcarate Tutor: Clemente Rodríguez Lafuente San Sebastián, Junio

Más detalles

El microprocesador. Alberto Molina Coballes David Sánchez López. Noviembre 2011. Fundamentos de Hardware

El microprocesador. Alberto Molina Coballes David Sánchez López. Noviembre 2011. Fundamentos de Hardware El microprocesador Alberto Molina Coballes David Sánchez López Fundamentos de Hardware Noviembre 2011 Índice 1. Concepto 2. Arquitectura Interna 3. Elementos de un Microprocesador 4. Arquitectura Externa.

Más detalles

Dr.-Ing. Paola Vega Castillo

Dr.-Ing. Paola Vega Castillo EL-3310 DISEÑO O DE SISTEMAS DIGITALES Dr.-Ing. Paola Vega Castillo Información n General Curso: Diseño de Sistemas Digitales Código: EL-3310 Tipo de curso: Teórico Créditos/Horas por semana: 4/4 Requisito:

Más detalles

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

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introduccion al Lenguaje C Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introducción C es un lenguaje de programación creado en 1972 por

Más detalles

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA Tema 4: Familia x86 Carlos Garre 1 Familia x86 Contenidos Concepto de familia: la familia x86. Generaciones de la familia x86. Primera generación: 8086. Segunda generación: 80286. Tercera generación: 80386.

Más detalles

Arquitecturas GPU v. 2013

Arquitecturas GPU v. 2013 v. 2013 Stream Processing Similar al concepto de SIMD. Data stream procesado por kernel functions (pipelined) (no control) (local memory, no cache OJO). Data-centric model: adecuado para DSP o GPU (image,

Más detalles

ITT-327-T Microprocesadores

ITT-327-T Microprocesadores ITT-327-T Microprocesadores Introducción al Microprocesador y al Microcomputador. al Microcomputador. Profesor Julio Ferreira. Sistema Microcomputador. Un Sistema Microcomputador tiene dos componentes

Más detalles

Arquitecturas vectoriales, SIMD y extensiones multimedia

Arquitecturas vectoriales, SIMD y extensiones multimedia Arquitecturas vectoriales, SIMD y extensiones multimedia William Stallings, Organización y Arquitectura de Computadores, 5ta. ed., Capítulo 16: Procesamiento Paralelo. Andrew S. Tanenbaum, Organización

Más detalles

1.1 Definición del problema

1.1 Definición del problema Capítulo 1. Introducción 1.1 Definición del problema Cuando el famoso juego Doom apareció, no solamente nos asombró el grandioso juego, sino que también trajo y popularizo un nuevo modelo de programación

Más detalles

Arquitecturas CISC y RISC

Arquitecturas CISC y RISC Arquitecturas CISC y RISC Diseño de Sistemas Digitales EL-3310 I SEMESTRE 2008 2. ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 2.1 Elementos de la arquitectura Clasificación de la arquitectura Organización

Más detalles

Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato

Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato Bibliografía: William Stallings Organización y Arquitectura de computadores 5ta. Edition. Editorial Pearson Educación.- Objetivos:

Más detalles

MICROPROCESADORES, EVOLUCIÓN HISTÓRICA Y CARACTERÍSTICAS TÉCNICAS BÁSICAS

MICROPROCESADORES, EVOLUCIÓN HISTÓRICA Y CARACTERÍSTICAS TÉCNICAS BÁSICAS MICROPROCESADORES, EVOLUCIÓN HISTÓRICA Y CARACTERÍSTICAS TÉCNICAS BÁSICAS Se muestra a continuación la evolución histórica de los microprocesadores fabricados por INTEL (fundada en 1968 por Robert Noyce,

Más detalles

Procesadores vectoriales comerciales

Procesadores vectoriales comerciales Procesadores vectoriales comerciales Roberto Fernández Rodríguez, Iván Menéndez González y Francesco Buccini Arquitectura y Tecnología de Computadores (4º curso de Ingeniería en Informática). EPSIG, Universidad

Más detalles

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

TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP). 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

Más detalles

"Programación en Ensamblador del microprocesador Pentium (I)"

Programación en Ensamblador del microprocesador Pentium (I) PRÁCTICA 3 "Programación en Ensamblador del microprocesador Pentium (I)" ÍNDICE 3.1.- El microprocesador Pentium. 3.2.- Inserción de ensamblador en Visual Studio. 3.3.- Facilidades para la depuración de

Más detalles

PRÁCTICA MANEJO INTERNO DE DATOS

PRÁCTICA MANEJO INTERNO DE DATOS Objetivos PRÁCTICA 1. El alumno conocerá la representación de datos en el sistema binario y hexadecimal 2. El alumno conocerá como definir un programa en el entorno de desarrollo del lenguaje C Introducción

Más detalles

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ DISEÑO E IMPLEMETACIÓN DEL FILTRO MEDIANO DE DOS DIMENSIONES PARA ARQUITECTURAS SIMD

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ DISEÑO E IMPLEMETACIÓN DEL FILTRO MEDIANO DE DOS DIMENSIONES PARA ARQUITECTURAS SIMD PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ FACULTAD DE CIENCIAS E INGENIERÍA DISEÑO E IMPLEMETACIÓN DEL FILTRO MEDIANO DE DOS DIMENSIONES PARA ARQUITECTURAS SIMD Tesis pata optar el Título de Ingeniero Electrónico,

Más detalles

Arquitectura de los Ordenadores (Teoría) Final Junio 2008. Mañana Pág 1 APELLIDOS Y NOMBRE GRUPO Nº EXPEDIENTE

Arquitectura de los Ordenadores (Teoría) Final Junio 2008. Mañana Pág 1 APELLIDOS Y NOMBRE GRUPO Nº EXPEDIENTE Arquitectura de los Ordenadores (Teoría) Final Junio 2008. Mañana Pág 1 1).- Dada la estructura de unidades funcionales (FD i : unidades de fetch y decodificación; EJ 1 y EJ 2 : unidades de ejecución de

Más detalles

CPU. Unidad central de procesamiento

CPU. Unidad central de procesamiento CPU Unidad central de procesamiento QUÉ ES UNA PLACA BASE? La mainboard o motherboard es el elemento principal de un Pc. En ella se integran o se conectan el resto de dispositivos (memoria, procesador,

Más detalles

Modelo de aplicaciones CUDA

Modelo de aplicaciones CUDA Modelo de aplicaciones CUDA Utilización de GPGPUs: las placas gráficas se utilizan en el contexto de una CPU: host (CPU) + uno o varios device o GPUs Procesadores masivamente paralelos equipados con muchas

Más detalles

Universidad Complutense de Madrid. Facultad de Informática. Proyecto de Sistemas Informáticos

Universidad Complutense de Madrid. Facultad de Informática. Proyecto de Sistemas Informáticos Universidad Complutense de Madrid Facultad de Informática Proyecto de Sistemas Informáticos IMPLEMENTACIÓN Y EVALUACIÓN DE UN REPERTORIO DE INSTRUCCIONES MULTIMEDIA Profesor Director: Luis Piñuel Moreno

Más detalles

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA Tema 4: Familia x86 Carlos Garre 1 Familia x86 Contenidos Concepto de familia: la familia x86. Generaciones de la familia x86. Primera generación: 8086. Segunda generación: 80286. Tercera generación: 80386.

Más detalles

Arquitectura de un computador

Arquitectura de un computador Arquitectura de un computador Servidores de Información Multimedia 2º Ingeniero de Telecomunicación (Esp. Sonido e Imagen) Departamento de Ingeniería Telemática Universidad Carlos III de Madrid 2 Índice

Más detalles

X86 frente a PPC - Intel/AMD contra IBM

X86 frente a PPC - Intel/AMD contra IBM X86 frente a PPC - Intel/AMD contra IBM O el giro hacia RISC - Desmontando el mito del megahercio. Existen varios mitos en la informática de consumo. Uno de los más extendidos, sobre todo al usuario medio,

Más detalles

Procesador Pentium II 450 MHz Procesador Pentium II 400 MHz Procesador Pentium II 350 MHz Procesador Pentium II 333 MHz Procesador Pentium II 300 MHz

Procesador Pentium II 450 MHz Procesador Pentium II 400 MHz Procesador Pentium II 350 MHz Procesador Pentium II 333 MHz Procesador Pentium II 300 MHz PENTIUM El procesador Pentium es un miembro de la familia Intel de procesadores de propósito general de 32 bits. Al igual que los miembros de esta familia, el 386 y el 486, su rango de direcciones es de

Más detalles

Procesadores Superescalares: Paralelismo Explícito a Nivel de Instrucción

Procesadores Superescalares: Paralelismo Explícito a Nivel de Instrucción Tema 8 Procesadores Superescalares: Paralelismo Explícito a Nivel de Instrucción IA-64 es una arquitectura de 64 bits desarrollada conjuntamente por Intel y HP (Hewlett- Packard). Está basado en una tecnología

Más detalles

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

ACTIVIDADES TEMA 1. EL LENGUAJE DE LOS ORDENADORES. 4º E.S.O- SOLUCIONES. 1.- a) Explica qué es un bit de información. Qué es el lenguaje binario? Bit es la abreviatura de Binary digit. (Dígito binario). Un bit es un dígito del lenguaje binario que es el lenguaje universal usado

Más detalles

Procesador Intel Core 2 Extreme de 4 núcleos Traducción de Textos Curso 2007/2008

Procesador Intel Core 2 Extreme de 4 núcleos Traducción de Textos Curso 2007/2008 Procesador Intel Core 2 Traducción de Textos Curso 2007/2008 Versión Cambio 0.9RC Revisión del texto 0.8 Traducido el octavo párrafo 0.7 Traducido el séptimo párrafo Autor: Rubén Paje del Pino i010328

Más detalles

Informática y Programación Escuela de Ingenierías Industriales y Civiles Grado en Ingeniería en Ingeniería Química Curso 2010/2011

Informática y Programación Escuela de Ingenierías Industriales y Civiles Grado en Ingeniería en Ingeniería Química Curso 2010/2011 Módulo 1. Fundamentos de Computadores Informática y Programación Escuela de Ingenierías Industriales y Civiles Grado en Ingeniería en Ingeniería Química Curso 2010/2011 1 CONTENIDO Tema 1. Introducción

Más detalles

ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES

ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES Universidad Rey Juan Carlos ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES Estructura de un computador: conceptos básicos Luis Rincón Córcoles Licesio J. Rodríguez-Aragón Programa 1. Introducción 2. Elementos

Más detalles

Arquitectura Von Neumann

Arquitectura Von Neumann Arquitectura Von Neumann Arquitectura Von Neumann Establecida en 1945 por Von Neumann Modelo básico de arquitectura utilizado en la mayoría de los computadores Su idea es la de conectar permanentemente

Más detalles

Arquitectura de aceleradores. Carlos Bederián IFEG CONICET GPGPU Computing Group FaMAF UNC bc@famaf.unc.edu.ar

Arquitectura de aceleradores. Carlos Bederián IFEG CONICET GPGPU Computing Group FaMAF UNC bc@famaf.unc.edu.ar Arquitectura de aceleradores Carlos Bederián IFEG CONICET GPGPU Computing Group FaMAF UNC bc@famaf.unc.edu.ar Contenidos Cómo llegamos hasta acá Qué hay ahora Qué hace Cómo lo uso Hacia dónde parece que

Más detalles

Estructura de Computadores

Estructura de Computadores Estructura de Computadores Tema 4. El procesador Departamento de Informática Grupo de Arquitectura de Computadores, Comunicaciones y Sistemas UNIVERSIDAD CARLOS III DE MADRID Contenido Elementos de un

Más detalles

UNA NUEVA GENERACIÓN: HÍBRIDOS CPU/GPU. Microprocesadores para Comunicaciones. Paloma Monzón Rodríguez 42217126M

UNA NUEVA GENERACIÓN: HÍBRIDOS CPU/GPU. Microprocesadores para Comunicaciones. Paloma Monzón Rodríguez 42217126M UNA NUEVA GENERACIÓN: HÍBRIDOS CPU/GPU Microprocesadores para Comunicaciones 2010 Paloma Monzón Rodríguez 42217126M Índice 1. Introducción... 3 2. Unidad Central de Procesamiento (CPU)... 4 Arquitectura

Más detalles

1 Estructura básica de un programa C++

1 Estructura básica de un programa C++ Elementos básicos de un lenguaje de alto nivel: C++ CONTENIDOS 1. Estructura básica de un programa C++. 2. Tipos de datos simples. 3. Constantes y variables en C++. Declaración. 4. Operadores y expresiones.

Más detalles

Tecnología de la Información y las Comunicaciones. Colegio Bosque Del Plata. UNIDAD 6 Hardware Procesador y Unidades de Almacenamiento.

Tecnología de la Información y las Comunicaciones. Colegio Bosque Del Plata. UNIDAD 6 Hardware Procesador y Unidades de Almacenamiento. Colegio Bosque Del Plata Tecnología de la Información y las Comunicaciones UNIDAD 6 Hardware Procesador y Unidades de Almacenamiento. E-mail: garcia.fernando.j@gmail.com Profesor: Fernando J. Garcia Ingeniero

Más detalles

Autor: Alejandro Furfaro

Autor: Alejandro Furfaro 1971 4004: Primer microprocesador de intel. Pontenció las calculadoras. Características: Bus de datos de 4 bits Espacio de direccionamiento: 32768 bits de ROM 5120 bits de RAM. 16 ports de entrada (de

Más detalles

Tema 2. Diseño del repertorio de instrucciones

Tema 2. Diseño del repertorio de instrucciones Soluciones a los problemas impares Tema 2. Diseño del repertorio de instrucciones Arquitectura de Computadores Curso 2009-2010 Tema 2: Hoja: 2 / 16 Tema 2: Hoja: 3 / 16 Base teórica Al diseñar un computador,

Más detalles

Tema: Historia de los Microprocesadores

Tema: Historia de los Microprocesadores Universidad Nacional de Ingeniería Arquitectura de Maquinas I Unidad I: Introducción a los Microprocesadores y Microcontroladores. Tema: Historia de los Microprocesadores 1 Contenidos La década de los

Más detalles

PROGRAMA DE CURSO. Horas Docencia Horas de Trabajo Horas de Cátedra Docentes 6 10 1,5 1.5 7

PROGRAMA DE CURSO. Horas Docencia Horas de Trabajo Horas de Cátedra Docentes 6 10 1,5 1.5 7 PROGRAMA DE CURSO Código Nombre CC5320 Programación Consciente de la Arquitectura Nombre en Inglés Awareness of architecture in programming SCT Unidades Horas Docencia Horas de Trabajo Horas de Cátedra

Más detalles

Lógica Binaria. Arquitectura de Ordenadores. Codificación de la Información. Abelardo Pardo abel@it.uc3m.es. Universidad Carlos III de Madrid

Lógica Binaria. Arquitectura de Ordenadores. Codificación de la Información. Abelardo Pardo abel@it.uc3m.es. Universidad Carlos III de Madrid Arquitectura de Ordenadores Codificación de la Información Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Lógica Binaria COD-1 Internamente el ordenador

Más detalles

Tecnologías y Arquitecturas

Tecnologías y Arquitecturas Tecnologías y Arquitecturas Parte II Andrés Djordjalian Seminario de Sistemas Embebidos 19 de mayo de 2011 Facultad de Ingeniería de la UBA 06:13 1 de 22 Temas de esta Clase Medición

Más detalles

MASTER DEGREE: Industrial Systems Engineering

MASTER DEGREE: Industrial Systems Engineering PAC- Performance-centered Adaptive Curriculum for Employment Needs Programa ERASMUS: Acción Multilateral - 517742-LLP-1-2011-1-BG-ERASMUS-ECUE MASTER DEGREE: Industrial Systems Engineering ASIGNATURA ISE3:

Más detalles

PROGRAMACION VECTORIAL RAFAEL VALDÉS VALDAZO UO196581 ÁNGEL MARÍA VILABOA PÉREZ UO197092 BLOQUE PARALELAS 4º INFORMÁTICA UNIVERSIDAD DE OVIEDO

PROGRAMACION VECTORIAL RAFAEL VALDÉS VALDAZO UO196581 ÁNGEL MARÍA VILABOA PÉREZ UO197092 BLOQUE PARALELAS 4º INFORMÁTICA UNIVERSIDAD DE OVIEDO PROGRAMACION VECTORIAL RAFAEL VALDÉS VALDAZO UO196581 ÁNGEL MARÍA VILABOA PÉREZ UO197092 BLOQUE PARALELAS 4º INFORMÁTICA UNIVERSIDAD DE OVIEDO INTRODUCCIÓN Ligada al concepto de vector Decodifica instrucciones

Más detalles

Buceando en los MCUs Freescale...

Buceando en los MCUs Freescale... COMENTARIO TÉCNICO Buceando en los MCUs Freescale... Por Ing. Daniel Di Lella Dedicated Field Application Engineer EDUDEVICES www.edudevices.com.ar dilella@arnet.com.ar Matemática de Punto Flotante Por

Más detalles

Preliminares. Tipos de variables y Expresiones

Preliminares. Tipos de variables y Expresiones Preliminares. Tipos de variables y Expresiones Felipe Osorio Instituto de Estadística Pontificia Universidad Católica de Valparaíso Marzo 5, 2015 1 / 20 Preliminares Computadoras desarrollan tareas a un

Más detalles

Hardware: dentro de la caja. Introducción a la Informática 2010-2011

Hardware: dentro de la caja. Introducción a la Informática 2010-2011 Hardware: dentro de la caja Introducción a la Informática 2010-2011 Objetivos Conocer cómo se almacena y manipula la información dentro de los ordenadores Analizar la estructura y organización básica de

Más detalles

Programación en C para Sistemas Embebidos

Programación en C para Sistemas Embebidos SASE 2012 Programación en C para Sistemas Embebidos (con ejemplos basados en MSP430) Mg. Guillermo Friedrich UTN-FRBB Tópicos destacados - Generalidades sobre la arquitectura MSP430 - Paso de parámetros

Más detalles

Instituto Tecnológico Argentino Técnico en Hardware de PC Plan THP2A03B

Instituto Tecnológico Argentino Técnico en Hardware de PC Plan THP2A03B Instituto Tecnológico Argentino Técnico en Hardware de PC Plan THP2A03B Reservados los Derechos de Propiedad Intelectual Tema: Procesadores AMD Archivo: CAP2A03BTHP0335.doc Clase Nº: 35 Versión: 1.1 Fecha:

Más detalles

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

Tema 2: Arquitectura del repertorio de instrucciones. Visión del computador que tiene el programador en bajo nivel. Tema 2: Arquitectura del repertorio de instrucciones Visión del computador que tiene el programador en bajo nivel. Lo que el programador en lenguaje ensamblador debe conocer para escribir programas: (1)

Más detalles

Unidad 1: Conceptos generales de Sistemas Operativos.

Unidad 1: Conceptos generales de Sistemas Operativos. Unidad 1: Conceptos generales de Sistemas Operativos. Tema 2: Estructura de los sistemas de computación. 2.1 Funcionamiento de los sistemas de computación. 2.2 Ejecución de instrucciones e interrupciones

Más detalles

ALN - Formatos dispersos

ALN - Formatos dispersos ALN - Formatos dispersos In. Co. Facultad de Ingeniería Universidad de la República Temario Matrices dispersas Motivación e historia Formatos estáticos Formatos dinámicos Otros formatos Versión 1.0 2 Motivación

Más detalles

Estructura de Datos. Unidad I Tipos de Datos

Estructura de Datos. Unidad I Tipos de Datos Estructura de Datos Unidad I Tipos de Datos Conceptos Básicos Algoritmo: es una secuencia finita de pasos o instrucciones ordenadas crono-lógicamente que describen un método para resolver un problema específico.

Más detalles

CONTENIDOS. 2. Entidades primitivas para el desarrollo de algoritmos.

CONTENIDOS. 2. Entidades primitivas para el desarrollo de algoritmos. Introducción a la ciencia de la computación y a la programación 1. La computadora CONTENIDOS 2. Entidades primitivas para el desarrollo de algoritmos. 3. Metodología a seguir para la resolución de problemas

Más detalles

Programación Vectorial

Programación Vectorial Programación Vectorial Rafael Valdés Valdazo, Angel María Vilaboa Pérez UO196558@uniovi.es, UO197092@uniovi.es Resumen. Este documento trata sobre los fundamentos básicos de la programación vectorial,

Más detalles

Técnicas de paralelización de código para robots basados en emociones

Técnicas de paralelización de código para robots basados en emociones 1 UNIVERSIDAD POLITECNICA DE VALENCIA G R A D O E N I N G E N I E R Í A I N F O R M Á T I C A Técnicas de paralelización de código para robots basados en emociones TRABAJO FINAL DE GRADO Autor: Francisco

Más detalles

Los Microprocesadores MIA José Rafael Rojano Cáceres Arquitectura de Computadoras I Evolución Histórica de los Microprocesadores Intel Evolución de los microprocesadores Intel de la década de los 70 4004

Más detalles

DSPs. Aplicaciones. Se utilizan para comunicaciones mediante

DSPs. Aplicaciones. Se utilizan para comunicaciones mediante DSPs realizar Qué es un DSP? DSP (Digital Signal Proccessor) Procesadores digitales de señal. Un DSP es un microprocesador específico para el tratamiento de señales, esta especialización se necesita a

Más detalles

Tema 5 Diseño del Set de Instrucciones (ISA) Arquitectura de Computadoras

Tema 5 Diseño del Set de Instrucciones (ISA) Arquitectura de Computadoras Tema 5 Diseño del Set de Instrucciones (ISA) Arquitectura de Computadoras http://www.herrera.unt.edu.ar/arqcom dcohen@herrera.unt.edu.ar Temario 1. Evolución histórica. 2. Repaso de conceptos importantes.

Más detalles

Entorno de Ejecución del Procesador Intel Pentium

Entorno de Ejecución del Procesador Intel Pentium Arquitectura de Ordenadores Arquitectura del Procesador Intel Pentium Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Entorno de Ejecución del Procesador

Más detalles

PRÁCTICAS DE ARQUITECTURA DE COMPUTADORES

PRÁCTICAS DE ARQUITECTURA DE COMPUTADORES PRÁCTICAS DE ARQUITECTURA DE COMPUTADORES PRACTICA 7 Repaso del Lenguaje Ensamblador CURSO 2005-2006 Arquitectura de Computadores. Práctica 7: Repaso del lenguaje Ensamblador 1 PRÁCTICA 7 ASPECTO TRATADO:

Más detalles

Entrada salida y comunicación

Entrada salida y comunicación Entrada salida y comunicación E/S de los computadores Introducción: Variedad de dispositivos. Modo de transfer. Tipo de información. Diferencias de velocidades (tasas de transferencias). Ejemplos de periféricos:

Más detalles

Control Digital en PC con MS-DOS

Control Digital en PC con MS-DOS Control Digital en PC con MS-DOS Abel Alberto Cuadrado Vega 19 de abril de 2006 1. Introducción Un PC puede ser utilizado para realizar un sistema de control digital. Para ello necesita lo siguiente: tarjeta

Más detalles

Estructura de Computadores

Estructura de Computadores Estructura de Computadores Tema 2. Representación de la información Departamento de Informática Grupo de Arquitectura de Computadores, Comunicaciones y Sistemas UNIVERSIDAD CARLOS III DE MADRID Contenido

Más detalles

1. Manejo de memoria estática 2. Manejo de memoria dinámica

1. Manejo de memoria estática 2. Manejo de memoria dinámica 1. Manejo de memoria estática 2. Manejo de memoria dinámica *La administración de memoria de una computadora es una tarea fundamental debido a que la cantidad de memoria es limitada. *El sistema operativo

Más detalles

Cómputo en paralelo con OpenMP 1

Cómputo en paralelo con OpenMP 1 Cómputo en paralelo con OpenMP 1 Miguel Vargas-Félix miguelvargas@cimat.mx http://www.cimat.mx/~miguelvargas CIMAT, September 2, 2015 1/34 Velocidad de los procesadores de escritorio Recientemente, la

Más detalles

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

LECCIÓN 8: CIRCUITOS Y ALGORITMOS DE MULTIPLICACIÓN DE ENTEROS ESTRUCTURA DE COMPUTADORES Pag. 8.1 LECCIÓN 8: CIRCUITOS Y ALGORITMOS DE MULTIPLICACIÓN DE ENTEROS 1. Circuitos de multiplicación La operación de multiplicar es mas compleja que la suma y por tanto se

Más detalles

Estudio de utilización efectiva de procesadores vectoriales

Estudio de utilización efectiva de procesadores vectoriales Universidad de Las Palmas de Gran Canaria Estudio de utilización efectiva de procesadores vectoriales Proyecto de Fin de Carrera Ingeniería en Informática Laura Autón García Tutores: Francisca Quintana

Más detalles

Estructura de Computadores. Capítulo 3b: Programación en

Estructura de Computadores. Capítulo 3b: Programación en Estructura de Computadores Capítulo 3b: Programación en ensamblador del MIPS. José Daniel Muñoz Frías Universidad Pontificia Comillas. ETSI ICAI. Departamento de Electrónica y Automática Estructura de

Más detalles

ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES

ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES Universidad Rey Juan Carlos ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES Circuitos para multiplicación y división de números en coma fija Luis Rincón Córcoles Licesio J. Rodríguez-Aragón Programa Bibliografía..

Más detalles

Arquitecturas DSP. Phil Lapsley, Jeff Bier, Amit Shoham, Edward A. Lee DSP Processor Fundamentals. Architectures and Features IEEE Press 1997

Arquitecturas DSP. Phil Lapsley, Jeff Bier, Amit Shoham, Edward A. Lee DSP Processor Fundamentals. Architectures and Features IEEE Press 1997 Arquitecturas DSP Phil Lapsley, Jeff Bier, Amit Shoham, Edward A. Lee DSP Processor Fundamentals. Architectures and Features IEEE Press 1997 Arquitecturas DSP Sistemas de procesamiento de señales Transductor

Más detalles

OPERADORES: Maquinaria para realizar las instrucciones. Capítulo Tercero Fundamentos de Computadores Ingeniería de Telecomunicación

OPERADORES: Maquinaria para realizar las instrucciones. Capítulo Tercero Fundamentos de Computadores Ingeniería de Telecomunicación OPERADORES: Maquinaria para realizar las instrucciones. Capítulo Tercero Fundamentos de Computadores Ingeniería de Telecomunicación 1 Introducción (I) ALU / Arquitectura Von Neumann CPU banco de registros

Más detalles

Representación de Datos. Una Introducción a los Sistemas Numéricos

Representación de Datos. Una Introducción a los Sistemas Numéricos Representación de Datos Una Introducción a los Sistemas Numéricos Tipos de Datos Datos Texto Número Imagen Audio Video Multimedia: Información que contiene números, texto, imágenes, audio y video. Como

Más detalles

EL filtro mediano es un filtro no lineal propuesto por

EL filtro mediano es un filtro no lineal propuesto por Filtro Mediano Bidimensional Rápido Implementado con la Arquitectura SIMD Ricardo M. Sánchez y Paul A. Rodríguez Resumen El filtro mediano es una de la operaciones básicas en el procesamiento de imágenes;

Más detalles

TRABAJOS DE MICROPROCESADORES PARA COMUNICACIONES

TRABAJOS DE MICROPROCESADORES PARA COMUNICACIONES TRABAJOS DE MICROPROCESADORES PARA COMUNICACIONES Unas 16 horas de trabajo (máximo), 10+ slides (+ portada, índice, referencias y links), 8+ paginas Word, presentación de 20 minutos en clase. En las referencias

Más detalles

Contenido. Capítulo 1. Capítulo 3. Capítulo 2. Alfaomega. Arquitectura de computadoras - Patricia Quiroga

Contenido. Capítulo 1. Capítulo 3. Capítulo 2. Alfaomega. Arquitectura de computadoras - Patricia Quiroga XI Contenido Capítulo 1 Evolución del procesamiento de datos... 1 1.1 Organización y arquitectura de una computadora... 2 1.2 Estratificación del software... 3 1.3 Evolución del procesamiento de datos...

Más detalles

Tema 2.1. Hardware. Arquitectura básica

Tema 2.1. Hardware. Arquitectura básica Tema 2.1 Hardware. Arquitectura básica 1 Partes Fundamentales Partes Fundamentales: Unidad Central de Proceso Procesador Microprocesador CPU-UCP Memoria Principal: Memoria Central Placa Base Chipset Buses

Más detalles

Programación de alto rendimiento en el procesador Cell: Aplicación a simulación de

Programación de alto rendimiento en el procesador Cell: Aplicación a simulación de Programación de alto rendimiento en el procesador Cell: Aplicación a simulación de fluídos Carlos H. González, Basilio B. Fraguela, Diego Andrade, José A. García, Manuel J. Castro Resumen En el diseño

Más detalles

Un proceso es un programa en ejécución Está formado por:

Un proceso es un programa en ejécución Está formado por: Principios Generales de la Concurrencia CONTENIDO: Concepto de Concurrencia Por qué utilizar la Concurrencia Exclusión Mutua y Sincronización Corrección en Sistemas Concurrentes Consideraciones sobre el

Más detalles

opasdfghjklzxcvbnmqwertyuiopasdfg

opasdfghjklzxcvbnmqwertyuiopasdfg Qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqwertyui computación I opasdfghjklzxcvbnmqwertyuiopasdfg

Más detalles

Tipos de Dispositivos Controladores

Tipos de Dispositivos Controladores Tipos de Dispositivos Controladores PLC Allen Bradley Siemens Schneider OMRON PC & Software LabView Matlab Visual.NET (C++, C#) FPGAS Xilinx Altera Híbridos Procesador + FPGA (altas prestaciones) µcontrolador

Más detalles

Capítulo 4. Vectores y matrices. 4.1 Declaración de tablas. 4.2 Declaración estática de tablas

Capítulo 4. Vectores y matrices. 4.1 Declaración de tablas. 4.2 Declaración estática de tablas Capítulo 4 Vectores y matrices En FORTRAN se puede utilizar un tipo especial de variable que sirve, en particular, para almacenar vectores y matrices. De esta forma, se utiliza un sólo nombre para referirse

Más detalles

Unidad I: Conceptos Básicos de Programación. Prof. Eliana Guzmán U. Semestre: A-2015

Unidad I: Conceptos Básicos de Programación. Prof. Eliana Guzmán U. Semestre: A-2015 Unidad I: Conceptos Básicos de Programación Digital Prof. Eliana Guzmán U. Semestre: A-2015 1.11 Introducción En esta unidad se hace una introducción a las computadoras y a los lenguajes de programación,

Más detalles

La arquitectura del 8086/8088

La arquitectura del 8086/8088 Repasamos aquí la arquitectura de un PC. Para más información sobre lo aquí expuesto se puede consultar [PA01] y los capítulos iniciales de [Tej01], [Rod00] y [Nor01]. Anatomía del PC A grandes rasgos,

Más detalles

DEPARTAMENTO DE ELECTRONICA. Microprocesadores 1121060

DEPARTAMENTO DE ELECTRONICA. Microprocesadores 1121060 DEPARTAMENTO DE ELECTRONICA Microprocesadores 1121060 Microprocesadores 1121060 Tema 1. Operación básica de un Microprocesador 1. a los microprocesadores 2. Arquitectura Básica de un microprocesador. 3.

Más detalles

Documentación del simulador SPIM.

Documentación del simulador SPIM. Universidad de León Departamento de Ingeniería Eléctrica y de Sistemas y Automática (C) Prof. José M. Foces, 1998-2006. diejfm@unileon.es Documentación del simulador SPIM. Versión para Windows. Adaptada

Más detalles

Por: Vicente Arnau Llombart http://www.uv.es/varnau/ E-mail: Vicente.Arnau@uv.es

Por: Vicente Arnau Llombart http://www.uv.es/varnau/ E-mail: Vicente.Arnau@uv.es Por: Vicente Arnau Llombart http://www.uv.es/varnau/ E-mail: Vicente.Arnau@uv.es Trabajos a desarrollar: La quinta generación de computadores. La IA. Los lenguajes de programación. Los sistemas operativos.

Más detalles

Tiempo de Compilación. Programa fuente. Secuencia. de caracteres. Scanner. Secuencia. de símbolos Parser. Compilador.

Tiempo de Compilación. Programa fuente. Secuencia. de caracteres. Scanner. Secuencia. de símbolos Parser. Compilador. ORGANIZACIÓN DE LA MEMORIA EN TIEMPO DE EJECUCIÓN Compilador Tiempo de Compilación Programa fuente Secuencia de caracteres Scanner Secuencia de símbolos Parser Árbol sintáctico Analizador semántico Generador

Más detalles

Arquitectura de Computadores

Arquitectura de Computadores Arquitectura de Computadores 1. Introducción 2. La CPU 3. Lenguaje Máquina 4. La Memoria 5. Sistemas de Entrada/Salida 6. CPU Segmentada (Pipeline) 7. Memoria Caché 8. Arquitecturas RISC Arquitectura de

Más detalles

TEMA 2. Agenda. Fundamentos de JAVA

TEMA 2. Agenda. Fundamentos de JAVA TEMA 2 Fundamentos de JAVA V1.3 Manuel Pereira González Agenda Introducción Historia de Java Características Principales Hello World Tipos Operadores Control de Flujo E/S básica Atributos y Métodos Resumen

Más detalles

Una introducción al compilador C de GNU

Una introducción al compilador C de GNU Una introducción al compilador C de GNU Héctor Adrián Valdecantos Departamento de Ciencias de Computación Facultad de Ciencias Exactas y Tecnología - UNT Materia: Programación Carrera: Programador Universitario

Más detalles

Práctica 3: Programación con subrutinas

Práctica 3: Programación con subrutinas Práctica 3: Programación con subrutinas 3.1 Objetivos El objetivo de esta práctica es estudiar el soporte del ensamblador del ARM para la gestión de subrutinas, para lo que resulta necesario familiarizarse

Más detalles

Se guardan en archivos con extencion c y los cabezales con extension h

Se guardan en archivos con extencion c y los cabezales con extension h Se guardan en archivos con extencion c y los cabezales con extension h Tipos de Variables: Tipo Tamaño(bytes) Limite inferior Limite superior char 1 -- -- unsigned char 1 0 255 short int 2-32768 +32767

Más detalles

Contenido. Capítulo 1. Introducción a lenguaje C 1

Contenido. Capítulo 1. Introducción a lenguaje C 1 Contenido Capítulo 1. Introducción a lenguaje C 1 Introducción... 2 Qué es un lenguaje de programación?... 2 Tipos de lenguajes de programación... 2 Introducción a lenguaje C... 2 Historia de lenguaje

Más detalles

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

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática Tema 1 Introducción. Arquitectura básica y Sistemas Operativos Fundamentos de Informática Índice Descripción de un ordenador Concepto básico de Sistema Operativo Codificación de la información 2 1 Descripción

Más detalles

Aritmética del computador. Departamento de Arquitectura de Computadores

Aritmética del computador. Departamento de Arquitectura de Computadores Aritmética del computador Departamento de Arquitectura de Computadores Contenido La unidad aritmético lógica (ALU) Representación posicional. Sistemas numéricos Representación de números enteros Aritmética

Más detalles

SOLUCIÓN: a) Signo y magnitud:

SOLUCIÓN: a) Signo y magnitud: 1. Resolver las siguientes conversiones razonando los pasos seguidos (total 3 a. Dado el número 18525 expresado en decimal, calcular su representación numérica en signo y magnitud, en complemento a 2 y

Más detalles

ORDENADORES VECTORIALES

ORDENADORES VECTORIALES ORDENADORES VECTORIALES Un ordenador vectorial es una máquina diseñada específicamente para realizar de forma eficiente operaciones en las que se ven involucrados elementos de matrices, denominados vectores.

Más detalles

UNIVERSIDAD CARLOS III DE MADRID PARALELIZACIÓN PARA EL ALGORITMO DE LOS FILTROS DE KALMAN. Trabajo Fin de Grado. Septiembre de 2012

UNIVERSIDAD CARLOS III DE MADRID PARALELIZACIÓN PARA EL ALGORITMO DE LOS FILTROS DE KALMAN. Trabajo Fin de Grado. Septiembre de 2012 USO DE TÉCNICAS DE PARALELIZACIÓN PARA EL ALGORITMO DE LOS FILTROS DE KALMAN Trabajo Fin de Grado Septiembre de 2012 Autor: Javier Rodríguez Arroyo Tutor: Luis Miguel Sánchez García Co-tutor: Javier Fernández

Más detalles