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

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 jgonzalezd@udc.es 3 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

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

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

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

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

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

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

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

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

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

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

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.

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. Descripción de la semántica de ALFA En esta descripción sólo se mencionarán los aspectos en los que el lenguaje de programación ALFA pueda diferir de otros lenguajes de programación de alto nivel. Se sobreentienden

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

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

"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

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

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

PROBLEMAS DE FUNDAMENTOS DE TECNOLOGÍA DE COMPUTADORES T5. MEMORIAS PROBLEMAS DE FUNDAMENTOS DE TECNOLOGÍA DE COMPUTADORES T5. MEMORIAS Tema 5 Memorias Hoja: 2 / 14 Base teórica La memoria es el lugar en el que se almacenan las instrucciones y los datos para que se puedan

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

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

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

Arquitectura de Computadores

Arquitectura de Computadores Arquitectura de Computadores Ricardo.Sanz@upm.es Curso 2004-2005 Arquitectura de Computadores Arquitectura de computadores es la disciplina que estudia la organización y funcionamiento de los computadores

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

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

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

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

18. Camino de datos y unidad de control

18. Camino de datos y unidad de control Oliverio J. Santana Jaria Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso 2006 2007 18. Camino de datos y unidad de control Un La versatilidad una característica deseable los Los

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

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

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

Aritmética finita y análisis de error

Aritmética finita y análisis de error Aritmética finita y análisis de error Escuela de Ingeniería Informática de Oviedo (Dpto. de Matemáticas-UniOvi) Computación Numérica Aritmética finita y análisis de error 1 / 47 Contenidos 1 Sistemas decimal

Más detalles

Java Inicial (20 horas)

Java Inicial (20 horas) Java Inicial (20 horas) 1 Temario 1. Programación Orientada a Objetos 2. Introducción y Sintaxis Java 3. Sentencias Control Flujo 4. POO en Java 5. Relaciones entre Objetos 6. Polimorfismo, abstracción

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

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

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

Introducción a la Programación 11 O. Humberto Cervantes Maceda Introducción a la Programación 11 O Humberto Cervantes Maceda Recordando En la sesión anterior vimos que la información almacenada en la memoria, y por lo tanto aquella que procesa la unidad central de

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

Curso S08 para Cavernícolas

Curso S08 para Cavernícolas Curso S08 para Cavernícolas Tema ORIGENES DE LOS MICROCONTROLADORES FREESCALE, 2014 Todos los derechos reservados INTRODUCION Desde sus inicios como Motorola, esta empresa ha sido reconocida mundialmente

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

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

Procesadores de lenguaje Tema 5 Comprobación de tipos

Procesadores de lenguaje Tema 5 Comprobación de tipos Procesadores de lenguaje Tema 5 Comprobación de tipos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Sistemas de tipos. Expresiones de tipo. Equivalencia de tipos. Sobrecarga,

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

Introducción al tipo de dato ARRAY

Introducción al tipo de dato ARRAY CONTENIDOS. Introducción al tipo de dato ARRAY. Definición, Características, Declaración, Acceso e Inicialización.. Arrays multidimensionales Definición, Declaración, Acceso e Inicialización. Introducción

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

Operaciones Aritméticas en Números con Signo

Operaciones Aritméticas en Números con Signo Operaciones Aritméticas en Números con Signo M. en C. Erika Vilches Parte 3 Multiplicación sin Signo Reglas básicas para multiplicar bits: 0x0 = 0 0x1 = 0 1x0 = 0 1x1 = 1 Ejemplos en números sin signo:

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

Clase 02: Representación de datos

Clase 02: Representación de datos Arquitectura de Computadores y laboratorio Clase 02: Representación de datos Departamento de Ingeniería de Sistemas Universidad de Antioquia 2015-2 Contenido 1 2 Representación de la Información Y sistemas

Más detalles

Es el conjunto de programas y procedimientos ejecutados en un computador, necesarios para hacer posible la realización de una tarea específica.

Es el conjunto de programas y procedimientos ejecutados en un computador, necesarios para hacer posible la realización de una tarea específica. Introducción a la tecnología informática 1- EL SISTEMA DE CÓMPUTO Un sistema de cómputo es un conjunto de elementos físicos y electrónicos (Hardware), los cuales funcionan ordenadamente bajo el control

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

Unidad de trabajo 2: INFORMÁTICA BÁSICA (primera parte)

Unidad de trabajo 2: INFORMÁTICA BÁSICA (primera parte) Unidad de trabajo 2: INFORMÁTICA BÁSICA (primera parte) Unidad de trabajo 2: INFORMÁTICA BÁSICA... 1 1. Representación interna de datos.... 1 1.2. Sistemas de numeración.... 2 1.3. Aritmética binaria...

Más detalles

Programación de Sistemas

Programación de Sistemas Programación de Sistemas Algoritmos de Ordenación Índice Por qué es importante la ordenación? Un par de ejemplos InsertionSort QuickSort Para cada uno veremos: En qué consisten, Casos extremos Eficiencia

Más detalles

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.

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. DISCOS RAID Raid: redundant array of independent disks, quiere decir conjunto redundante de discos independientes. Es un sistema de almacenamiento de datos que utiliza varias unidades físicas para guardar

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

Diseño Lógico I Facultad de Ciencias Exactas y Tecnología UNT. LENGUAJES DE DESCRIPCIÓN DE HARDWARE

Diseño Lógico I Facultad de Ciencias Exactas y Tecnología UNT. LENGUAJES DE DESCRIPCIÓN DE HARDWARE LENGUAJES DE DESCRIPCIÓN DE HARDWARE METODOS PARA DESCRIBIR CIRCUITOS LÓGICOS Descripción verbal Tablas de verdad Diagrama esquemático Expresiones del álgebra booleana Diagrama de tiempos Lenguajes de

Más detalles

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

2.4. Modos de direccionamiento Distintas formas que tiene la arquitectura para especificar la ubicación de los operandos. 2.4. Modos de direccionamiento Distintas formas que tiene la arquitectura para especificar la ubicación de los operandos. Objetivos: - Reducir el número de bits para especificar un operando en memoria.

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

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

En cualquier caso, tampoco es demasiado importante el significado de la B, si es que lo tiene, lo interesante realmente es el algoritmo. Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa

Más detalles

TEMA 4. Unidades Funcionales del Computador

TEMA 4. Unidades Funcionales del Computador TEMA 4 Unidades Funcionales del Computador Álvarez, S., Bravo, S., Departamento de Informática y automática Universidad de Salamanca Introducción El elemento físico, electrónico o hardware de un sistema

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

Apuntes de Microcontroladores (Repaso de temas previos)

Apuntes de Microcontroladores (Repaso de temas previos) Apuntes de Microcontroladores (Repaso de temas previos) Por M. C. Miguelangel Fraga Aguilar Enero 2015 Representaciones numéricas En estos apuntes se usara el posfijo b para denotar un número escrito en

Más detalles

>> 10.5 + 3.1 % suma de dos números reales, el resultado se asigna a ans

>> 10.5 + 3.1 % suma de dos números reales, el resultado se asigna a ans Universidad de Concepción Facultad de Ciencias Físicas y Matemáticas Departamento de Ingeniería Matemática Cálculo Numérico (521230) Laboratorio 1: Introducción al Matlab Matlab es una abreviatura para

Más detalles

Arrays y Cadenas en C

Arrays y Cadenas en C Arrays y Cadenas en C Los arrays son variables estructuradas, donde cada elemento se almacena de forma consecutiva en memoria. Las cadenas de caracteres son declaradas en C como arrays de caracteres y

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

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

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

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Unidad I Sistemas numéricos 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS.

Más detalles

Arquitectura de Computadoras. Clase 5 Posibles soluciones a atascos

Arquitectura de Computadoras. Clase 5 Posibles soluciones a atascos Arquitectura de Computadoras Clase 5 Posibles soluciones a atascos Ejemplo de segmentación Notas de Clase 5 2 Atascos de un cauce (stall) Situaciones que impiden a la siguiente instrucción que se ejecute

Más detalles

SCT3000 95. Software para la calibración de transductores de fuerza. Versión 3.5. Microtest S.A. microtes@arrakis.es

SCT3000 95. Software para la calibración de transductores de fuerza. Versión 3.5. Microtest S.A. microtes@arrakis.es SCT3000 95 Versión 3.5 Software para la calibración de transductores de fuerza. Microtest S.A. microtes@arrakis.es Introducción El programa SCT3000 95, es un sistema diseñado para la calibración automática

Más detalles

by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true

by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true I. FUNDAMENTOS 3. Representación de la información Introducción a la Informática Curso de Acceso a la Universidad

Más detalles

Trabajo Práctico Nº 1 SISTEMAS DE NUMERACION

Trabajo Práctico Nº 1 SISTEMAS DE NUMERACION Trabajo Práctico Nº 1 SISTEMAS DE NUMERACION 66.70 Estructura del Computador OBJETIVOS: Elementos que definen un sistema numérico. Conversiones entre sistemas. Diferentes formas de representar números

Más detalles

Tema 6. Gestión de la memoria

Tema 6. Gestión de la memoria Tema 6. Índice Introducción Compartición de memoria Memoria virtual Soporte en los procesadores: la MMU en Linux en Windows NT/2000 1 Tema 6. Introducción Necesidad de la gestión de la memoria Requisitos

Más detalles

Para ello debemos ingresar al índice del curso y seleccionar recorrido por el curso, tal como se muestra en la siguiente diapositiva:

Para ello debemos ingresar al índice del curso y seleccionar recorrido por el curso, tal como se muestra en la siguiente diapositiva: 1. CONOCIENDO LA INTERFAZ GRAFICA DE USUSRIO. Cada aprendiz debe relacionarse con la interfaz de usuario de CCNA Exploration, identificando las diferentes partes que permiten navegar por los diferentes

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

Gestor de aplicaciones Java. Esta herramienta es el intérprete de los archivos de clase generados por el javac (compilador).

Gestor de aplicaciones Java. Esta herramienta es el intérprete de los archivos de clase generados por el javac (compilador). CAPÍTULO 4 Requerimientos de software Este capítulo presenta las herramientas necesarias para la construcción y ejecución de programas en el lenguaje de programación JAVA, los requerimientos mínimos de

Más detalles

Tema 11: Sistemas combinacionales

Tema 11: Sistemas combinacionales Tema 11: Sistemas combinacionales Objetivo: Introducción Generador Comprobador de paridad Comparadores Semisumador (HA) Sumador Completo (FA) Expansión de sumadores Sumador paralelo con arrastre serie

Más detalles

TEMA 1 Representación de la información

TEMA 1 Representación de la información TEMA 1 Representación de la información Tema 1: Representación de la información. Aritmética y Representación binaria 1) Introducción BB1, Cap 2, Ap: 2.1, 2.2.1 2) Sistemas binario-octal-hexadecimal BB1,

Más detalles

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS 4 ARQUITECTURA DE DISTRIBUCIÓN DE DATOS Contenido: Arquitectura de Distribución de Datos 4.1. Transparencia 4.1.1 Transparencia de Localización 4.1.2 Transparencia de Fragmentación 4.1.3 Transparencia

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

CARRERA TITULO DEL TRABAJO CURSO

CARRERA TITULO DEL TRABAJO CURSO CARRERA Ingeniería Informática TITULO DEL TRABAJO TOGAF CURSO Tópicos de Ingeniería del Software CÉSAR ESTRADA CONDORI MAYRA GOMEZ QUEVEDO LUIS MUǸOS ESCAPA ALAN A. ROJAS MARROQUIN SEMESTRE IX 2010 Los

Más detalles

Sistemas Operativos. Sesión 5: Protocolos de enrutamiento vector distancia

Sistemas Operativos. Sesión 5: Protocolos de enrutamiento vector distancia Sistemas Operativos Sesión 5: Protocolos de enrutamiento vector distancia Contextualización Los protocolos de información de enrutamiento tienen la función de determinar cuál es la ruta adecuada que deben

Más detalles

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

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos. RAIDS MODO LINEAL Es un tipo de raid que muestra lógicamente un disco pero se compone de 2 o más discos. Solamente llena el disco 0 y cuando este está lleno sigue con el disco 1 y así sucesivamente. Este

Más detalles

Representación de números enteros: el convenio signo y magnitud

Representación de números enteros: el convenio signo y magnitud Representación de números enteros: el convenio signo y magnitud Apellidos, nombre Martí Campoy, Antonio (amarti@disca.upv.es) Departamento Centro Informàtica de Sistemes i Computadors Escola Tècnica Superior

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

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

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ÁCTICA DE LABORATORIO 3 Tipo Abstrato de Dato

PRÁCTICA DE LABORATORIO 3 Tipo Abstrato de Dato ESCUELA DE INGENIERÍA DE SISTEMAS DEPARTAMENTO DE COMPUTACIÓN PROGRAMACIÓN 2 PRÁCTICA DE LABORATORIO 3 Tipo Abstrato de Dato Contenido Introducción...1 Dato...1 Valor...1 Tipo de Dato...2 Tipo Abstracto

Más detalles

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS Por Andrés Raúl Bruno Saravia Entrega Nº 5. Cómo declaramos una variable en Lenguaje C? En C siempre se deben declarar las variables.

Más detalles

Repaso de las características más importantes de la programación Java y su adaptación a Android

Repaso de las características más importantes de la programación Java y su adaptación a Android Repaso de las características más importantes de la programación Java y su adaptación a Android 1. Entorno de programación en java 2. Variables y tipos de datos 3. Operaciones y operadores 4. Clases y

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

Ingeniería Superior de Informática

Ingeniería Superior de Informática Ingeniería Superior de Informática Asignatura: Visión Artificial Curso 2007/08 Práctica nº 1 : Fundamentos de la Image Processing Toolbox de MATLAB 1. BREVES DEFINICIONES... 1 2. IMÁGENES EN MATLAB Y LA

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 3 Elementos básicos de programación

Tema 3 Elementos básicos de programación Representación de Datos y Aplicaciones Tema 3 Elementos básicos de programación Natividad Martínez Madrid nati@it.uc3m.es Objetivos del tema 3 Conocer la estructura básica de un programa Java Comprender

Más detalles

UNIDAD 2 Configuración y operación de un sistema de cómputo Representación de datos Conceptos El concepto de bit (abreviatura de binary digit) es fundamental para el almacenamiento de datos Puede representarse

Más detalles

Guía N 1: Fundamentos básicos(i)

Guía N 1: Fundamentos básicos(i) 1 Guía N 1: Fundamentos básicos(i) Objetivos Generales: Ver una breve descripción de las capacidades más comunes de Excel Objetivos específicos: Descripción de los elementos de un libro: Hojas, iconos,

Más detalles

Seminario Universitario Material para estudiantes. Física. Unidad 2. Vectores en el plano. Lic. Fabiana Prodanoff

Seminario Universitario Material para estudiantes. Física. Unidad 2. Vectores en el plano. Lic. Fabiana Prodanoff Seminario Universitario Material para estudiantes Física Unidad 2. Vectores en el plano Lic. Fabiana Prodanoff CONTENIDOS Vectores en el plano. Operaciones con vectores. Suma y producto por un número escalar.

Más detalles

Universidad Central de Bayamón Colegio de Desarrollo Empresarial y Tecnología

Universidad Central de Bayamón Colegio de Desarrollo Empresarial y Tecnología Universidad Central de Bayamón Colegio de Desarrollo Empresarial y Tecnología Número de Estudiante: Fecha: Nombre: Examen Parcial #1 Prof. Carlos Rodríguez Sánchez REDES 235 Parte I- Selección Múltiple.

Más detalles

GRADO EN INGENIERÍA INFORMÁTICA CURSO 2009/2010. Asignatura: ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES I Código: IIN113

GRADO EN INGENIERÍA INFORMÁTICA CURSO 2009/2010. Asignatura: ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES I Código: IIN113 GRADO EN INGENIERÍA INFORMÁTICA CURSO 2009/2010 Asignatura: ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES I Código: IIN113 Asignatura: 1IN Estructura y Tecnología de Computadores I Formación: Básica Créditos

Más detalles

Introducción a la programación orientada a objetos

Introducción a la programación orientada a objetos Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases 3. El tipo Struct 4. Diferencias entre Class y Struct 5. Pilares de la Programación

Más detalles

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

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso 2013-2014. v1.0 (05.03. INFORMÁTICA Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial Curso 2013-2014 v1.0 (05.03.14) A continuación figuran una serie de ejercicios propuestos, agrupados

Más detalles

Gestion de archivos. Problemas al almacenar datos sólo en la memoria:

Gestion de archivos. Problemas al almacenar datos sólo en la memoria: Gestion de archivos Problemas al almacenar datos sólo en la memoria: 1. El tamaño está limitado por el tamaño de la memoria qué pasa con aplicaciones que necesiten acceder a gran cantidad de información?

Más detalles