Streaming SIMD Extensions:

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

Download "Streaming SIMD Extensions:"

Transcripción

1 Streaming SIMD Extensions: Vectorización al alcance de todos Germán Ros Sánchez Universidad de Murcia Octubre 2009

2 SSE*: Streaming SIMD Extensions Es un conjunto de instrucciones SIMD que incorporan los procesadores modernos de Intel y AMD. Son muy útiles para conseguir pequeños speedup de entre 2x~4x. Tiene un ancho de 4 operaciones (128bits). El bajo nivel de abstracción que proponen (ASM/C) ha provocado que muchos programadores no las usen. Tienen una utilidad limitada: VECTORIZACIÓN.

3 Arquitectura oculta

4 Modelo de programación C/C++ Si bien es cierto que a nivel de ensamblador el modelo es austero, usando la abstracción ofrecida por xmmintrin.h podemos obtener un modelo de programación similar a otros de vectorización, tales como CUDA. El proceso es fácilmente resumible en tres fases: Agrupamiento de los datos a operar Realizar las operaciones pertinentes Compilar: gcc/g++ -o prog prog.c -msse

5 1. Tipos de datos y agrupamiento En SSE usamos aritmética de coma flotante A la hora de definir las matrices las cosas cambian un poco. Ahora hay que utilizar declspec(align(16)) float en lugar de Float. Ej: declspec(align(16)) float M[SIZE]; Cuando queremos usar matrices dinámicas debemos sustituir la función malloc por _mm_malloc. Ej: M = (float*) _mm_malloc(n*sizeof(float), 16);

6 1. Tipos de datos y agrupamiento (II) Estos cambios obedecen a la necesidad de que los datos estén correctamente alineados a 16Bytes. Una vez que nuestros datos estén definidos y alineados tenemos que agruparlos para que puedan ser usados por las funciones de SSE. El agrupamiento se hace a través del tipo de datos m128. Ej: m128* pm = ( m128*) M;

7 1. Tipos de datos y agrupamiento (III) Muchas veces puede resultar de utilidad hacer que nuestros tipos de datos sean conscientes de SSE para obtener el mejor de los rendimientos. Hay que tener cuidado con esto. Se debería hacer de forma transparente al resto del código del programa (encapsulado en alguna función). Ej: Estructura para un pixel en SSE typedef struct { float red[4]; float green[4]; float blue[4]; float alpha[4]; } CData32T4;

8 2. Realizando Operaciones Gestión de la memoria _aligned_malloc _aligned_free Operaciones aritméticas _mm_add_ps _mm_sub_ps _mm_mul_ps _mm_div_ps _mm_sqrt_ps...

9 2. Realizando Operaciones (II) Operaciones lógicas _mm_and_ps _mm_or_ps _mm_xor_ps _mm_andnot_ps Operaciones de conversión _mm_cvtss_si32 _mm_cvtps_pi32 _mm_cvttss_si64 _mm_cvtpi16_ps Y MUCHAS MÁS OPERACIONES EN xmmintrin.h!

10 Un ejemplo práctico

11 Suma de vectores secuencial float* m1; float* m2; float* m3; srand(time(null)); m1 = new float[m]; m2 = new float[m]; m3 = new float[m]; //Inicializacion for(int i=0;i<m;i++) { m1[i] = (rand()/(float)rand_max); m2[i] = (rand()/(float)rand_max); } //T veces for(int k=0;k<t;k++) { //suma for(int i=0;i<m;i++) m3[i] = m1[i] + m2[i]; } Declaración Inicialización Cálculo

12 Suma de vectores vectorizada (I) float* m1; float* m2; float* m3; Inicialización SSE srand(time(null)); m1 = (float*) _mm_malloc(m * sizeof(float), 16); m2 = (float*) _mm_malloc(m * sizeof(float), 16); m3 = (float*) _mm_malloc(m * sizeof(float), 16); //Inicializacion for(int i=0;i<m;i++) { m1[i] = (rand()/(float)rand_max); m2[i] = (rand()/(float)rand_max); }

13 Suma de vectores vectorizada (II) int m = M/4; //T veces for(int k=0;k<t;k++) { m128* psrc1 = ( m128*) m1; m128* psrc2 = ( m128*) m2; m128* pdest = ( m128*) m3; } //suma for(int i=0;i<m;i++) { *pdest = _mm_add_ps(*psrc1, *psrc2); psrc1++; psrc2++; pdest++; } Asignación a los tipos SSE Cálculo con SSE

14 Conclusiones

15 Ejemplos de rendimiento

16 Ventajas Ofrece la posibilidad de tener paralelismo de datos de manera sencilla y sin necesidad de adquirir un hardware caro. Es posible su combinación con otras técnicas como OpenMP, MPI, CUDA, etc. Inconvenientes El nivel de abstracción ofrecido no es tan alto como en OpenMP. No hay posibilidad de seguir escalando más allá de 4x o 5x. Estamos haciendo programas dependientes de la arquitectura. No contamos con primitivas de sincronización.

17 Úiltimamente... Se está ampliando su uso en el ámbito científico/académico, en áreas como la Visión por Computador, o el modelado 3D. Aunque no ofrecen grandes SpeedUps, su uso puede suponer la diferencia entre una ejecución en Tiempo Real o no. De ahí que últimamente se use en combinación de otras tecnologías como CUDA Pronto quedarán obsoletas con la salida de AVX: Advanced Vector Extensions (prevista para 2010)

18 Referencias Intel%20SSE4%20Programming%20Reference.pdf

19 Preguntas?

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

Computación en procesadores gráficos

Computación en procesadores gráficos Programación con CUDA Ejercicio 8 José Antonio Martínez García Francisco M. Vázquez López Manuel Ujaldón Martínez Portada Ester Martín Garzón Universidad de Almería Arquitectura de las GPUs Contenidos

Más detalles

Programación en Intel Xeon Phi

Programación en Intel Xeon Phi Programación en Intel Xeon Phi David Corbalán Navarro Máster en Nuevas Tecnologías de la Informática Índice Introducción al paralelismo Niveles de paralelismo Paradigmas de programación paralela Manycores

Más detalles

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria 1.2. Jerarquía de niveles de un computador Qué es un computador? Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria Es un sistema tan complejo

Más detalles

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los

Más detalles

ÍNDICE CAPÍTULO 1 FUNDAMENTOS DE LOS MICROCONTROLADORES

ÍNDICE CAPÍTULO 1 FUNDAMENTOS DE LOS MICROCONTROLADORES ÍNDICE CAPÍTULO 1 FUNDAMENTOS DE LOS MICROCONTROLADORES 1.1 Introducción 1.2 Fundamentos de los procesadores digitales secuenciales 1.2.1 Introducción 1.2.2 Arquitectura interna 1.2.2.1 Procesadores digitales

Más detalles

Los registros son la memoria principal de la computadora. Existen diversos registros de propósito general y otros de uso exclusivo.

Los registros son la memoria principal de la computadora. Existen diversos registros de propósito general y otros de uso exclusivo. Unidad IV: Generación de código objeto 4.1 Registro Los registros son la memoria principal de la computadora. Existen diversos registros de propósito general y otros de uso exclusivo. Algunos registros

Más detalles

INTRODUCCIÓN A LA POO EN C++

INTRODUCCIÓN A LA POO EN C++ INTRODUCCIÓN A LA POO EN C++ ÍNDICE DEL TEMA 1.- Introducción 2.- Diferencias C/C++ 3.- Programación orientada a objetos 4.- Aspectos avanzados C++ 1 1. Introducción Lenguaje C Lenguaje de propósito general

Más detalles

Primeros pasos con CUDA. Clase 1

Primeros pasos con CUDA. Clase 1 Primeros pasos con CUDA Clase 1 Ejemplo: suma de vectores Comencemos con un ejemplo sencillo: suma de vectores. Sean A, B y C vectores de dimensión N, la suma se define como: C = A + B donde C i = A i

Más detalles

Introducción general al Lenguaje C (2010/2011)

Introducción general al Lenguaje C (2010/2011) Luis Valencia Cabrera [email protected] (http://www.cs.us.es/~lvalencia) Ciencias de la Computacion e IA (http://www.cs.us.es/) Introducción general al Lenguaje C (2010/2011) Universidad de Sevilla Índice

Más detalles

Apuntadores (Punteros)

Apuntadores (Punteros) Apuntadores (Punteros) x9ff10 X int 209 SESION 7 *ptr Definición Llamados también punteros. Un Apuntador es una variable que contiene una dirección de memoria, la cual corresponderá a un dato o a una variable

Más detalles

TEMA III: OPERACIONES CON LOS DATOS

TEMA III: OPERACIONES CON LOS DATOS CUESTIONES A TRATAR: Cual es la función de la unidad operativa? Es necesaria? Qué tipos de circuitos implementan la unidad operativa? Unidad operativa frente a ALU Qué es una operación de múltiple precisión?

Más detalles

Datos Elementales y formato de un programa en Java

Datos Elementales y formato de un programa en Java Datos Elementales y formato de un programa en Java PROGRAMACION I Grado en Matematicas Informática Programación I - 2015/2016 Datos, variables y mi primer programa 1 Introducción a la programación o Programa:

Más detalles

Modelo de von Neumann

Modelo de von Neumann Conceptos básicos Modelo de von Neumann También conocida como arquitectura de Princeton. Propuesta por John von Neumann en 1945. Partes de una computadora digital: Unidad de procesamiento (CPU unidad central

Más detalles

TEMA 2: PROGRAMACIÓN PARALELA (I)

TEMA 2: PROGRAMACIÓN PARALELA (I) Grupo de Arquitectura de Computadores, Comunicaciones y Sistemas ARQUITECTURA DE COMPUTADORES II AUTORES: David Expósito Singh Florin Isaila Daniel Higuero Alonso-Mardones Javier García Blas Borja Bergua

Más detalles

Arquitectura de Computadoras. Clase 2 Interrupciones

Arquitectura de Computadoras. Clase 2 Interrupciones Arquitectura de Computadoras Clase 2 Interrupciones Interrupciones Mecanismo mediante el cual se puede interrumpir el procesamiento normal de la CPU. Ejecución secuencial de instrucciones de un programa

Más detalles

Paralelismo _Arquitectura de Computadoras IS603

Paralelismo _Arquitectura de Computadoras IS603 Paralelismo _Arquitectura de Computadoras IS603 INTRODUCCION El objetivo de esta investigación, es conceptualizar las diferentes tipos de paralelismo referente al área de Arquitectura de Computadoras,

Más detalles

Unidad VIII Generación de código intermedio. M.C. Juan Carlos Olivares Rojas

Unidad VIII Generación de código intermedio. M.C. Juan Carlos Olivares Rojas Unidad VIII Generación de código intermedio M.C. Juan Carlos Olivares Rojas Agenda 8.1 Lenguaje máquina. 8.1.1 Características. 8.1.2 Direccionamiento. 8.2 Lenguaje ensamblador. 8.2.1 Características.

Más detalles

5.1. Filtro de Kalman

5.1. Filtro de Kalman Capítulo 5. En el apartado 2.4 se ha visto el algoritmo que se quiere ejecutar en la IMU. Se estudia ahora cómo se implementa esto en el DSP, usando un programa en C y atendiendo a las particularidades

Más detalles

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

Febrero 2012. Departamento de Electrónica e Sistemas Universidade da Coruña. Introducción a las Extensiones Multimedia a a Departamento de Electrónica e Sistemas Universidade da Coruña Febrero 2012 3 a Índice a 3 1 2 3 4 5 6 3 a Qué son extensiones multimedia? a Son nuevas instrucciones añadidas al repertorio de instrucciones

Más detalles

1.1 Tipos de Datos Primitivos. 1.2 Tipos de datos estructurados. 1.3 Definición de estructura de datos

1.1 Tipos de Datos Primitivos. 1.2 Tipos de datos estructurados. 1.3 Definición de estructura de datos 1.1 Tipos de Datos Primitivos 1.2 Tipos de datos estructurados 1.2.1 Arreglos unidimensionales, bidimensionales y cadenas de caracteres 1.2.2 Registros o Estructuras (unión y estructura) 1.3 Definición

Más detalles

Programación I Unidad III. Tema: Tipos, estructuras y uniones

Programación I Unidad III. Tema: Tipos, estructuras y uniones Programación I Unidad III Tema: Tipos, estructuras y uniones El especificador typedef La palabra reservada typedef representa un especificador de clase de almacenamiento, y se utiliza para definir nuevos

Más detalles

Punteros. Programación en C 1

Punteros. Programación en C 1 Punteros Programación en C 1 Índice Variables y direcciones de memoria. Punteros definición, declaración e inicialización. Punteros declaración, asignación y dereferencia. Puntero nulo, tipo void. Aritmética

Más detalles

Tema 6: Memoria dinámica

Tema 6: Memoria dinámica : Programación 2 Curso 2013-2014 Índice 1 2 3 El tamaño es fijo y se conoce al implementar el programa Declaración de variables int i=0; char c; float vf[3]={1.0, 2.0, 3.0}; i c vf[0] vf[1] vf[2] 0 1.0

Más detalles

Alejandro Molina Zarca

Alejandro Molina Zarca Compute Unified Device Architecture (CUDA) Que es CUDA? Por qué CUDA? Dónde se usa CUDA? El Modelo CUDA Escalabilidad Modelo de programación Programación Heterogenea Memoria Compartida Alejandro Molina

Más detalles

1. Presentación del lenguaje C Creado en 1972 por D. Ritchie Lenguaje de propósito general Portátil o transportable (generalmente) Inicialmente de niv

1. Presentación del lenguaje C Creado en 1972 por D. Ritchie Lenguaje de propósito general Portátil o transportable (generalmente) Inicialmente de niv Introducción al lenguaje C Informática Belarmino Pulido Junquera Índice 1. Presentación del lenguaje C 2. Estructura de un programa en C 3. Instrucciones del pre-procesador procesador 4. Tipos de datos

Más detalles

SISTEMAS OPERATIVOS: SISTEMAS DE FICHEROS. Ficheros

SISTEMAS OPERATIVOS: SISTEMAS DE FICHEROS. Ficheros SISTEMAS OPERATIVOS: SISTEMAS DE FICHEROS Ficheros Objetivos 2 Conocer los conceptos de fichero y directorio así como sus características. Utilizar los servicios de gestión de Ficheros y directorios ofrecidos

Más detalles

UNIVERSIDAD DE GUADALAJARA

UNIVERSIDAD DE GUADALAJARA UNIVERSIDAD DE GUADALAJARA CENTRO UNIVERSITARIO DE LOS ALTOS DIVISIÓN DE ESTUDIOS EN FORMACIONES SOCIALES LICENCIATURA: INGENIERÍA EN COMPUTACIÓN UNIDAD DE APRENDIZAJE POR OBJETIVOS ARQUITECTURA DE COMPUTADORAS

Más detalles

SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GRADO EN ING. INFORMÁTICA. ING. COMPUTADORES PRÁCTICA 8: INTRODUCCIÓN A OPENMP.

SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GRADO EN ING. INFORMÁTICA. ING. COMPUTADORES PRÁCTICA 8: INTRODUCCIÓN A OPENMP. SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GRADO EN ING. INFORMÁTICA. ING. COMPUTADORES PRÁCTICA 8: INTRODUCCIÓN A OPENMP. 1. OBJETIVOS Y PREPARACIÓN. En la actualidad los multiprocesadores en un solo chip

Más detalles

Tipos de datos y Operadores Básicos

Tipos de datos y Operadores Básicos Módulo I: Conceptos Básicos Tema 1. Qué es un ordenador? Tema 2. Cómo se representan los datos en un ordenador? Tema 3. Qué es un lenguaje de programación? Tema 4. Cómo se hace un programa informático?

Más detalles

Tema 7. Mejora del rendimiento: introducción a la segmentación y a las arquitecturas paralelas

Tema 7. Mejora del rendimiento: introducción a la segmentación y a las arquitecturas paralelas Tema 7. Mejora del rendimiento: introducción a la segmentación y a las arquitecturas paralelas Arquitectura de Computadores Curso 2009-2010 Transparencia: 2 / 21 Índice Introducción Taxonomía de Flynn

Más detalles

Introducción a Cómputo Paralelo con CUDA C/C++

Introducción a Cómputo Paralelo con CUDA C/C++ UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO Facultad de Ingeniería Introducción a Cómputo Paralelo con CUDA C/C++ Laboratorio de Intel y Cómputo de alto desempeño Elaboran: Revisión: Ing. Laura Sandoval Montaño

Más detalles

Capítulo 3. Introducción a la programación. Continuar

Capítulo 3. Introducción a la programación. Continuar Capítulo 3 Introducción a la programación Continuar Introducción Java es un lenguaje que tiene muchas ventajas frente a otros lenguajes de programación: es open source (código abierto), esto permite ver

Más detalles

4. Operadores Operador asignación

4. Operadores Operador asignación Programación orientada a objetos con Java 43 4. Operadores Objetivos: a) Describir los operadores (aritméticos, incrementales, de relación, lógicos y de asignación) y los tipos de dato primitivos sobre

Más detalles

Sistema de memoria. Introducción

Sistema de memoria. Introducción Sistema de memoria Introducción Memorias de acceso aleatorio: Apropiadas para la memorización a largo plazo de programas. Grandes y lentas. Organización: n: líneas de direcciones. m: tamaño de palabra.

Más detalles

PROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela

PROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela PROGRAMACIÓN PARALELA Modelos de programación paralela Paradigmas de programación paralela Tipos de paralelismo Paso de mensajes Paralelismo de datos Memoria compartida Paradigmas de programación paralela

Más detalles

ESTRUCTURA DE DATOS. Memoria estática Memoria dinámica Tipo puntero Declaración de punteros Gestión de memoria dinámica Resumen ejemplo

ESTRUCTURA DE DATOS. Memoria estática Memoria dinámica Tipo puntero Declaración de punteros Gestión de memoria dinámica Resumen ejemplo ESTRUCTURA DE DATOS Memoria estática Memoria dinámica Tipo puntero Declaración de punteros Gestión de memoria dinámica Resumen ejemplo DATOS ESTÁTICOS Su tamaño y forma es constante durante la ejecución

Más detalles

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main. LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan

Más detalles

Descripción y Contenido del Curso. Programación C++ Capacity Academy.

Descripción y Contenido del Curso. Programación C++ Capacity Academy. Descripción y Contenido del Curso Programación C++ Capacity Academy Educación en Tecnología de la Información Online, Efectiva y Garantizada Qué aprenderá si toma este Curso? En este curso aprenderás todo

Más detalles

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica Tema 2: Desarrollo de Algoritmos E.E. de Algorítmica Temas a tratar Identificadores Variables Constantes Tipos de Datos Separadores Operadores Aritméticos Unarios Relacionales y Condicionales Nivel de

Más detalles

TEMA 2: Organización de computadores

TEMA 2: Organización de computadores TEMA 2: Organización de computadores Procesadores Memorias Dispositivos de E/S 1 Computador Procesador, memoria, dispositivos de E/S CPU Unidad de control Unidad aritmética y lógica Registros Dispositivos

Más detalles

Programación 1 Tema 3. Información, datos, operaciones y expresiones

Programación 1 Tema 3. Información, datos, operaciones y expresiones Programación 1 Tema 3 Información, datos, operaciones y expresiones Índice Datos y tipos de datos Datos primitivos en C++ Expresiones e instrucción de asignación Datos y tipos de datos Problema información

Más detalles

Repaso Lenguaje C Área de Servicios Programación (Ing. Elect. y Prof. Tec.), Programación I (TUG y TUR) y Electrónica programable (TUE)

Repaso Lenguaje C Área de Servicios Programación (Ing. Elect. y Prof. Tec.), Programación I (TUG y TUR) y Electrónica programable (TUE) Repaso Lenguaje C OBJETOS Variables Constantes Variable: objeto del ambiente cuyo contenido puede cambiar. Constante: objeto cuyo contenido no puede cambiar. Variables: - un nombre que la identifica. Deben

Más detalles

Introducción al lenguaje C

Introducción al lenguaje C Introducción al lenguaje C Ampliación de Informática Belarmino Pulido Junquera Índice 1. Presentación del lenguaje C 2. Estructura de un programa en C 3. Tipos de datos escalares 4. Operadores básicos

Más detalles

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz Expresiones Aritméticas Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz Expresiones Aritméticas El computador puede realizar cálculos además de mostrar datos por pantalla.

Más detalles

IBM 360. Igor Perez Martín. Jesús Manuel Salvadó Cenera. Mario Junquera Gómez

IBM 360. Igor Perez Martín. Jesús Manuel Salvadó Cenera. Mario Junquera Gómez IBM 360 Igor Perez Martín Jesús Manuel Salvadó Cenera Mario Junquera Gómez INTRODUCCIÓN El primero en usar microprogramación fue 360, el cual creó el concepto de arquitectura de familia. La familia del

Más detalles

Multiplicación de Matrices en Sistemas cc-numa Multicore. Autor: Jesús Cámara Moreno Director: Domingo Giménez Cánovas

Multiplicación de Matrices en Sistemas cc-numa Multicore. Autor: Jesús Cámara Moreno Director: Domingo Giménez Cánovas Multiplicación de Matrices en Sistemas cc-numa Multicore Autor: Jesús Cámara Moreno Director: Domingo Giménez Cánovas Índice de Contenido 1. Introducción 2. Línea de Investigación 3. Sistemas Empleados

Más detalles

TEMA 1 FUNDAMENTOS DEL DISEÑO DEL HARDWARE DIGITAL

TEMA 1 FUNDAMENTOS DEL DISEÑO DEL HARDWARE DIGITAL TEMA 1 FUNDAMENTOS DEL DISEÑO DEL HARDWARE DIGITAL 1.1. Introducción 1.2. Lenguajes para la descripción de hardware 1.3. Ciclo de diseño de los circuitos digitales 1.4. Tecnologías de circuitos integrados

Más detalles

Programación en Lenguaje C

Programación en Lenguaje C Lenguaje de programación C Programación en Lenguaje C Introducción El Lenguaje de programación C fue implantado por primera vez en los años 70 por Dennis Ritchie para una computadora DEC PDP-11 corriendo

Más detalles

Nociones básicas de computación paralela

Nociones básicas de computación paralela Nociones básicas de computación paralela Javier Cuenca 1, Domingo Giménez 2 1 Departamento de Ingeniería y Tecnología de Computadores Universidad de Murcia 2 Departamento de Informática y Sistemas Universidad

Más detalles

El nivel ISA (II)! Conjunto de Instrucciones

El nivel ISA (II)! Conjunto de Instrucciones El nivel ISA (II) Conjunto de Instrucciones EC-2721 Arquitectura del Computador I Que es un Conjunto de Instrucciones? Colección completa de instrucciones comprendida por un procesador Lenguaje de máquina

Más detalles

Introducción rápida a la programación (estructurada ) con C++

Introducción rápida a la programación (estructurada ) con C++ Introducción rápida a la programación (estructurada ) con C++ A B No A? Si B A Los Bloques pueden ser una línea de código o un modulo (función o subrutina) que pueden estar contenido en otro archivo de

Más detalles

MODOS DE DIRECCIONAMIENTO

MODOS DE DIRECCIONAMIENTO MODOS DE DIRECCIONAMIENTO A algunos estudiantes no les parece muy importante el tema de los modos de direccionamiento. Si el objetivo último y principal es procesar de alguna manera (sumar, restar, desplazar,

Más detalles

Algoritmos y estructuras de datos

Algoritmos y estructuras de datos Algoritmos y estructuras de datos Dr. Eduardo A. Rodríguez Tello Laboratorio de Tecnologías de Información Cinvestav Tamaulipas [email protected] Cursos de inducción a la MCC Cinvestav Tamaulipas

Más detalles

Programación de Videojuegos Tema 15 Tipos de Dato I. 15. Tipos de Dato I

Programación de Videojuegos Tema 15 Tipos de Dato I. 15. Tipos de Dato I 15. Por ahora ya sabemos lo suficiente sobre el muestreo de textos por pantalla, aunque por supuesto a falta de practicar un poco. Vamos a cambiar un poco de temática y vamos a ver otros aspectos avanzados

Más detalles

Unidad IV Arreglos y estructuras. M.C. Juan Carlos Olivares Rojas

Unidad IV Arreglos y estructuras. M.C. Juan Carlos Olivares Rojas Unidad IV Arreglos y estructuras M.C. Juan Carlos Olivares Rojas 4.1 Concepto de arreglo Agenda 4.2 Manejo de cadenas 4.3 Concepto de estructuras 4.4 Concepto de unión 4.5 Empleo de apuntadores 4.1 Concepto

Más detalles

Sistemas. POSTREQUISITO: CATEGORÍA: Obligatorio SECCION: A HORAS POR SEMANA

Sistemas. POSTREQUISITO: CATEGORÍA: Obligatorio SECCION: A HORAS POR SEMANA UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS PROGRAMA DEL CURSO DE ARQUITECTURA DE COMPUTADORES Y ENSAMBLADORES 1 CODIGO: 778 CREDITOS: 5 ESCUELA: Ciencias

Más detalles

Expresiones y sentencias

Expresiones y sentencias Expresiones y sentencias Expresión Construcción (combinación de tokens) que se evalúa para devolver un valor. Sentencia Representación de una acción o una secuencia de acciones. En C, todas las sentencias

Más detalles

PROGRAMA: COMPUTACION I

PROGRAMA: COMPUTACION I UNIVERSIDAD NACIONAL EXPERIMENTAL DEL TACHIRA VICERECTORADO ACADÉMICO DECANATO DE DOCENCIA DEPARTAMENTO DE INGENIERÍA INFORMÁTICA 1 PROGRAMA: COMPUTACION I Código 0415102T Carrera: Ingeniería Informática

Más detalles

Conceptos y definiciones básicos en computación

Conceptos y definiciones básicos en computación UNIVERSIDAD MICHOACANA DE SAN NICOLÁS DE HIDALGO FACULTAD DE INGENIERIA ELECTRICA Laboratorio de Herramientas Computacionales Conceptos y definiciones básicos en computación M.I. Rosalía Mora Lab. Juárez

Más detalles

Fundamentos de la programación

Fundamentos de la programación Fundamentos de la programación 2A Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Facultad de Informática Universidad Complutense int 214 float 216

Más detalles

Tutorías con Grupos Reducidos (TGR) Parte 1: Evaluación de prestaciones

Tutorías con Grupos Reducidos (TGR) Parte 1: Evaluación de prestaciones Tutorías con Grupos Reducidos (TGR) Parte 1: Evaluación de prestaciones ESTRUCTURA DE COMPUTADORES Grupo de Arquitectura de Computadores (GAC) Dyer Rolán García (GAC) Evaluación de Prestaciones Curso 2011/2012

Más detalles

Elementos de un programa en C

Elementos de un programa en C Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución

Más detalles

Programación Estructurada. Sesión 2:El lenguaje de programación C

Programación Estructurada. Sesión 2:El lenguaje de programación C Programación Estructurada Sesión 2:El lenguaje de programación C Contextualización Una parte importante del lenguaje C son las palabras reservadas, son identificadores con un significado predefinido. Estas

Más detalles

Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos.

Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos. Lenguaje C Un poco de historia C es un lenguaje de propósito general, es decir, se pueden desarrollar aplicaciones de diversas áreas. Dentro de sus principales características podemos mencionar que: Es

Más detalles

Tema 2: Lenguaje máquina. La interfaz entre el hardware y el software

Tema 2: Lenguaje máquina. La interfaz entre el hardware y el software Tema 2: Lenguaje máquina La interfaz entre el hardware y el software 1 Índice Introducción. Formatos de Instrucción. Modos de Direccionamiento. Ortogonalidad y Regularidad. Frecuencia de Utilización de

Más detalles

Introducción a la Programación de Memoria Compartida.. con OpenMP

Introducción a la Programación de Memoria Compartida.. con OpenMP Introducción a la Programación de Memoria Compartida.. con OpenMP Carlos Jaime BARRIOS HERNANDEZ, PhD. Escuela de Ingeniería de Sistemas e Informática Universidad Industrial de Santander Las herramientas

Más detalles

Procesador: Pentium 4 SL6S9. Año 2001, 2.4 GHZ 512 KB L2 caché Hecho en Filipinas

Procesador: Pentium 4 SL6S9. Año 2001, 2.4 GHZ 512 KB L2 caché Hecho en Filipinas Procesador: Pentium 4 SL6S9 Año 2001, 2.4 GHZ 512 KB L2 caché Hecho en Filipinas Diagrama del die Especificaciones Este procesador cuenta con un Front Side Bus de velocidad 400 MHz que conecta los componentes

Más detalles

Granularidad y latencia

Granularidad y latencia Niveles de paralelismo y latencias de comunicación Niveles de paralelismo. Granularidad o tamaño de grano. Latencia de comunicación. Particionado de los programas. Empaquetado de granos. Planificación

Más detalles