Arquitectura de Computadores Segmentación del Cauce - 1

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

Download "Arquitectura de Computadores Segmentación del Cauce - 1"

Transcripción

1 En este capítulo vamos a ver cómo mejorar las prestaciones de la CPU mediante los procesadores segmentados (o en pipeline), los cuales incorporan una técnica para acelerar el ritmo de ejecución de las instrucciones. En primer lugar empezaremos por comentar algunos aspectos básicos para introducir los conceptos en los que se apoya esta técnica. A continuación nos centraremos en nuestro procesador de referencia, el MIPS64, viendo la configuración de las etapas que componen su cauce. Como veremos, hay diversos factores que pueden impedir un aprovechamiento óptimo del concepto de pipeline en la CPU. Trataremos estos factores y las técnicas para evitarlos en la medida de lo posible. Por último abordaremos una mejora más del pipeline mediante el concepto de operaciones multiciclo que reducirán las esperas o paradas generadas por las instrucciones pesadas, como las multiplicaciones, divisiones o las operaciones en coma flotante. Arquitectura de Computadores Segmentación del Cauce - 1

2 La primera opción que se nos ocurre para aumentar la velocidad de un procesador es aumentar la velocidad del reloj, lo cual es muy fácil, pero claro, si los circuitos que componen las etapas de ejecución del procesador no soportan esa velocidad, éste se quema o deja de funcionar correctamente. Así, para poder aumentar la velocidad del reloj, primero se deben hacer más rápidos los circuitos con los que se construyen los procesadores y la memoria principal. No obstante, se debe considerar el coste que supone una mejora, y que el límite de esta velocidad lo impone el estado del arte actual de la tecnología. Otra posibilidad es organizar el hardware para poder ejecutar más de una instrucción simultáneamente: concurrencia. La concurrencia se puede obtener en dos niveles: al nivel del procesador y al nivel de la instrucción. La concurrencia al nivel de la CPU se obtiene disponiendo de múltiples procesadores ejecutando simultáneamente varias instrucciones. Obtener concurrencia a nivel de la instrucción significa poder ejecutar varias instrucciones simultáneamente con una única CPU. Este último tipo de paralelismo se denomina segmentación, aunque suele ser más conocido por su denominación en inglés: pipelining. Las arquitecturas con múltiples procesadores suelen utilizarse en máquinas de muy altas prestaciones (y muy alto precio). Sin embargo, con arquitecturas segmentadas se consigue una muy buena mejora del rendimiento y a un coste asequible. Por esto, es normal que todos los microprocesadores actuales de propósito general incorporen el pipelining. Ya que es muy común su utilización en los actuales procesadores, vamos a abordar aquí esta técnica del pipelining, mientras que las arquitecturas multiprocesador las dejaremos para asignaturas o textos de arquitecturas paralelas o avanzadas. Arquitectura de Computadores Segmentación del Cauce - 2

3 Ahora ya podemos abordar el concepto de pipeline. El proceso en pipeline (o segmentado) es similar al utilizado en cualquier cadena de montaje, y el nombre pipeline (tubería) se debe al hecho de que, como en una tubería, en la entrada se aceptan nuevos elementos (instrucciones) antes de que los previamente aceptados salgan por la salida. Empecemos con el ejemplo de una cadena de montaje. Supongamos una gran pastelería en la que las tartas primero se hacen en el horno y después se empaquetan para la venta. El proceso de empaquetar una tarta consiste en: 1. Poner una caja vacía en la mesa. 2. Meter una tarta en la caja. 3. Cerrar y precintar la caja. 4. Poner una etiqueta en la caja. 5. Llevar la caja a un gran contenedor. Si cada una de estas operaciones la realiza un operario en 10 segundos, parece claro que se tarda 50 s en empaquetar una tarta y, por lo tanto, en empaquetar 10 tartas se tardaría 500 s. Arquitectura de Computadores Segmentación del Cauce - 3

4 Ahora supongamos que se dispone de una cadena de empaquetado de tartas con una cinta transportadora sobre la que trabajan cinco operarios especializados en tareas distintas. El primer operario pone la caja-1 en la cinta transportadora, y ésta avanza hasta que la caja-1 está donde el segundo operario, que introduce una tarta dentro de la caja-1, al mismo tiempo que el primer operario pone otra caja-2 en la cinta. La caja-1 sigue avanzando hasta el tercer operario, que la cierra y la precinta, al mismo tiempo que el segundo operario mete otra tarta en la caja-2 y el primer operario pone otra caja-3 en la cinta. La caja-1 sigue su camino en la cinta pasando por el cuarto operario, que pone una etiqueta, hasta llegar al quinto operario, que la retira de la cinta. En el momento que el quinto operario retira la caja de la cinta, hay cuatro cajas más en la cinta. Si cada una de estas fases de empaquetado se realiza en 10 s, a partir de ahora, cada 10 s saldrá una nueva tarta empaquetada, en lugar de hacerlo cada 50 s que se tardaba cuando no había cadena de empaquetado. A partir de ahora, solamente se tardará100 segundos en tener 10 tartas empaquetadas, mientras que en el caso de cuando se tenía un solo operario se tardaba 500 segundos. Debe quedar claro que aunque ahora sale una nueva tarta empaquetada cada 10 s, la preparación completa de cada tarta sigue requiriendo 50 s (igual que cuando había una sola persona preparando las tartas). Ha aumentado el rendimiento, pero se mantiene el tiempo de empaquetado de cada tarta. Si calculamos el rendimiento de los dos sistemas de empaquetado de tartas, veremos que el rendimiento en este último caso se ha multiplicado por 5 ( igual al número de etapas!). Arquitectura de Computadores Segmentación del Cauce - 4

5 Según lo que acabamos de ver, parece que interesa dividir las fases de ejecución de las instrucciones en más etapas, para así obtener un mayor rendimiento en la ejecución. La ejecución de una instrucción podría descomponerse en las siguientes 5 etapas: 1. F: Alimentación de la instrucción (fetch) 2. D: Decodificación de la instrucción / Lectura de registros 3. E: Ejecución (en la ALU) / Cálculo de la dirección efectiva 4. M: Acceso a memoria 5. W: Escritura del resultado en registros de la CPU Si ahora la ejecución de una instrucción está descompuesta en 5 etapas, cada etapa puede durar aproximadamente 1/5 de la duración total de la ejecución de la instrucción. Si suponemos que la duración de un ciclo de reloj es igual a la duración de cada una de estas pequeñas etapas, podemos decir, en principio, que con la técnica de la segmentación (o pipelining) se consigue que a cada ciclo de reloj finalice una instrucción, o lo que es lo mismo, una velocidad de instrucción por ciclo. Debemos tener en cuenta que: Cada etapa dispone de los recursos hardware necesarios para realizar su cometido. Las ejecuciones de las instrucciones se solapan. Todas las etapas tienen la misma duración (ciclo de reloj). La duración del ciclo de reloj lo fija la etapa más lenta. Arquitectura de Computadores Segmentación del Cauce - 5

6 En este histograma podemos ver la comparación entre dos procesadores de similares características y que su gran diferencia consiste en estar o no estar segmentados. Utilizaremos el procesador del ejemplo que hemos visto en la página anterior, en el que supondremos que el ciclo de reloj es 1 ns. El ciclo de reloj es igual para ambos casos (1 ns), ya que partimos de dos procesadores con similares características. El tiempo de ejecución de la instrucción (si todas las instrucciones pasan por todas las etapas) también es igual en ambos casos (5 ciclos). En cuanto al rendimiento, el procesador no segmentado ejecuta una instrucción, que tarda 5 ciclos, y hasta que no termina, no comienza la ejecución de otra instrucción, por lo que termina una instrucción cada 5 ciclos, o sea, que se consigue un rendimiento de 1 instrucción cada 5 ciclos. En cambio, en el caso del procesador segmentado, cuando una instrucción arranca, al ciclo siguiente se arranca la siguiente instrucción y, de esta manera, cuando la primera instrucción termina, al ciclo siguiente termina la segunda. De esta manera, tenemos que a cada ciclo finaliza una instrucción, consiguiente un rendimiento de una instrucción por ciclo o, como vemos en el gráfico, de 5 instrucciones cada 5 ciclos. Arquitectura de Computadores Segmentación del Cauce - 6

7 Como habíamos visto anteriormente, la aceleración o speed up, es el cociente entre el tiempo medio que transcurre entre la finalización de las instrucciones en el procesador no segmentado y en el segmentado. En el procesador segmentado, en condiciones ideales, a cada ciclo finaliza la ejecución de una instrucción, consiguiendo un número medio de ciclos por instrucción (CPI) igual a 1. No debemos olvidar que en un procesador segmentado (una vez que está lleno el cauce y en condiciones ideales), en un momento dado hay tantas instrucciones en ejecución como etapas tiene; no obstante, cada etapa se está ocupando de una función distinta de cada instrucción. Arquitectura de Computadores Segmentación del Cauce - 7

8 Veamos la mejora de aceleración que se experimenta al segmentar un procesador convencional, cuando ejecuta un programa que consta del 40% de instrucciones aritméticas, un 20% de instrucciones de salto y otro 40% de instrucciones de acceso a operandos en memoria principal. Las instrucciones aritméticas del procesador no segmentado requieren 4 ciclos, mientras que las de salto y acceso a memoria consumen 5 ciclos de reloj. El procesador segmentado consta de 5 etapas, y el ciclo de reloj es 1 ns. El tiempo medio de ejecución de una instrucción en el procesador NO segmentado se obtiene mediante la suma de los tiempos de ejecución de cada tipo de instrucción por sus frecuencias de aparición en los programas, obteniendo así, un valor medio de 4,6 ns. En el caso del procesador segmentado, tenemos que cada etapa requiere 1 ciclo de reloj (1 ns). Así tenemos que cada instrucción tardará en ejecutarse un total de 5 ns, pero, en realidad, cada 1 ns finalizará una instrucción. De esta manera, la mejora en rendimiento (speed up) que se experimenta es el cociente entre el tiempo medio que transcurre entre la finalización de las instrucciones en el procesador no segmentado y el segmentado, consiguiendo así, una mejora del 4,6. Esto significa que, para programas con esta distribución de frecuencias en sus instrucciones, el procesador segmentado es 4,6 veces más rápido que el convencional. Arquitectura de Computadores Segmentación del Cauce - 8

9 Arquitectura de Computadores Segmentación del Cauce - 9

10 Una vez vistos los conceptos básicos del pipeline, vamos a concretarlo en una versión simplificada de la arquitectura MIPS64. Vamos a considerar una versión básica de 5 etapas, en la que la Unidad Aritmético-Lógica solamente va a operar con datos enteros. El tiempo de ejecución de cada etapa va a ser un ciclo. Ahora iremos mostrando en las siguientes páginas la descripción de cada una de las 5 etapas de este pipeline simplificado de MIPS64. Arquitectura de Computadores Segmentación del Cauce - 10

11 En esta primera etapa se extrae o alimenta una instrucción de memoria, de la dirección indicada en el registro Contador de Programa PC (Program Counter), y se almacena en el registro de instrucción IR (Instruction Register). A continuación se calcula la dirección de la siguiente instrucción en secuencia (su dirección en memoria), añadiéndole al PC el tamaño de la instrucción alimentada. En nuestro caso, todas las instrucciones son de longitud constante, 4 bytes. La dirección calculada se lleva al registro PC. La instrucción queda en el registro IR de donde se irá extrayendo información en las sucesivas etapas. Arquitectura de Computadores Segmentación del Cauce - 11

12 Aquí se realizan 4 funciones: Decodificación de la instrucción alimentada, es decir, se averigua cuál es la operación que se debe realizar. En paralelo se lee el contenido de los registros indicados como operandos en la instrucción, y se guardan en los registros temporales A y B. Si la instrucción contiene un campo de 16 bits con un valor inmediato, se le hace una extensión de signo a 32 bits y se guarda en el registro Inm. Si la instrucción es de bifurcación, la ALU hace dos cosas: o Primero añade al PC el desplazamiento correspondiente al valor inmediato que se indica en la instrucción de salto (desplazado 2 bits a la izquierda, o sea, multiplicado por 4) llevando el resultado a la entrada del multiplexor de la etapa F. (En la instrucción de salto, el desplazamiento del salto se indica como un múltiplo de 4, pues como todas las instrucciones ocupan 4 bytes, siempre están en una dirección múltiplo de 4). o A continuación se comprueba si el registro A tiene el valor 0, y el resultado de la comparación se dirige a la entrada de control del multiplexor de la etapa de Fetch. La salida de este multiplexor proporciona la dirección de la siguiente instrucción que se va a ejecutar, bien la siguiente en secuencia (esto ya lo habrá hecho en el ciclo anterior), o bien la de la dirección indicada en la instrucción de salto. Es posible que, según la operación a realizar, algunas de estas acciones no tenga sentido realizarlas; por lo que si la operación no requiere alguno de los registros leídos, el valor inmediato o la dirección de salto calculada, simplemente no se utiliza. En cualquier caso, no se pierde tiempo al hacerlo, ya que estas acciones se realizan en paralelo, al mismo tiempo que la decodificación. Arquitectura de Computadores Segmentación del Cauce - 12

13 Esta es la etapa de la Unidad Aritmético-Lógica (ALU), donde se realiza una de estas tres posibles funciones, dependiendo del tipo de instrucción: Instrucción con registros (A op B à ALUoutput). La ALU realiza la operación indicada por el código de función u operación, utilizando los valores de los registros temporales A y B. El resultado se deja en el registro temporal ALUoutput. Instrucción registro-inmediato (A op Inm à ALUoutput). La ALU realiza la operación indicada por el código de función u operación, utilizando los valores del registro temporal A y el valor del registro Inm (que contiene el valor inmediato de la instrucción). El resultado se deja en el registro temporal ALUoutput. Referencia a memoria (A+Inm à ALUoutput). La ALU suma estos operandos para formar una dirección absoluta de memoria. El resultado se deja en el registro ALUoutput. Estas tres funciones distintas pueden estar en la misma etapa (aunque solo se ejecuta una de ellas en cada instrucción) ya que nunca se requiere que se haga más de una de estas operaciones sobre la misma instrucción. Arquitectura de Computadores Segmentación del Cauce - 13

14 Referencia a memoria. Dependiendo de si se trata de una instrucción de carga o de almacenamiento, se realiza una de estas acciones: Si es una carga, el dato traído de memoria se deja en el registro temporal LMD. Si se trata de un almacenamiento, el dato del registro temporal B se escribe en memoria. En cualquier caso, la dirección de memoria utilizada es la calculada en el ciclo (etapa) anterior y que se dejó en ALUoutput. Arquitectura de Computadores Segmentación del Cauce - 14

15 En esta etapa se escribe un valor en alguno de los registros generales (si la instrucción lo requiere), bien si el valor viene de una posición de memoria (valor en registro temporal LMD) o se trata del resultado de una operación en la ALU. Arquitectura de Computadores Segmentación del Cauce - 15

16 A modo de resumen, aquí tenemos un esquema general de las etapas de MIPS64 1. F (Alimentación de instrucción Instruction Fetch). Se extrae una instrucción de la dirección de memoria indicada por el Contador de Programa (PC) y se incrementa éste en 4, para que apunte a la dirección de la siguiente instrucción. 2. D (Decodificación de Instrucción / Lectura de registros). Se decodifica la instrucción extraída y se lee el contenido de los registros indicados como operandos en la instrucción. Si es una instrucción de salto, se calcula la dirección de destino incrementando el PC con el desplazamiento indicado en la instrucción. En cualquier caso, la decodificación se realiza en paralelo con la lectura de los registros. 3. E (Ejecución/Cálculo de la dirección efectiva). Aquí, dependiendo del tipo de instrucción, se realiza una de estas funciones: Ejecución de una operación en la ALU (Unidad Aritmético-Lógica), si es una instrucción aritmética, lógica, desplazamiento Cálculo de dirección efectiva (registro base + desplazamiento), si es un salto o carga/ almacenamiento. 4. M (Acceso a memoria). Si la instrucción es de acceso a memoria, para lectura o escritura (carga/almacenamiento), se realiza en esta fase, utilizando para ello el valor del registro leído en la fase D (si es una escritura en memoria) y la dirección de memoria calculada en la fase E. 5. W (Escritura en registros). Si el resultado de la instrucción, o lectura de memoria, tiene como destino un registro, se escribe en éste en esta fase. Arquitectura de Computadores Segmentación del Cauce - 16

17 En esta figura se muestra el pipeline de la arquitectura de MIPS que se ha comentado en las páginas anteriores, y se puede ver cómo fluye una instrucción a través del cauce. Se trata de un pipeline simplificado para la ejecución de estas pocas operaciones: Load/Store Operaciones con enteros Salto condicional "si igual a cero Como puede verse, al final de cada etapa, los valores obtenidos en ella deben guardarse para poder acceder a ellos desde una etapa posterior; por ello, se salvan en unos registros temporales: IR, A, B, Inm, ALUoutput, LMD. Se puede apreciar que algunos registros están ubicados en las etapas en las que se lee su contenido, pero su escritura o actualización se produce en otras etapas. Así, el registro PC está situado en la etapa de extracción de la instrucción (F), pero, en realidad, se escribe desde la etapa D. Los registros generales están ubicados en la etapa D, pero se escriben durante la etapa W. Obsérvese que cuando la instrucción de salto se encuentra en la etapa D, sería deseable que en la etapa F se pudiera alimentar ya la siguiente instrucción. Con este cauce, la siguiente instrucción se alimenta un ciclo después de la etapa D, por lo que solamente se pierde un ciclo en los saltos. Arquitectura de Computadores Segmentación del Cauce - 17

18 En la figura de arriba se muestran algunas de las características del pipeline básico de la arquitectura MIPS64. Arquitectura de Computadores Segmentación del Cauce - 18

19 Arquitectura de Computadores Segmentación del Cauce - 19

20 Una vez elegido el número óptimo de etapas, para que el factor de aceleración sea igual al número de etapas se requiere que todas las etapas del pipeline siempre estén llenas de instrucciones útiles, y que nada retrase el avance de las instrucciones a través del pipeline. Por desgracia, no es fácil mantener siempre ocupadas todas las etapas del pipeline. Hay tres causas que lo impiden: Motivos estructurales. Dependencias de operandos. Instrucciones de bifurcación. En las siguientes transparencias las comentaremos con cierto detalle. Arquitectura de Computadores Segmentación del Cauce - 20

21 Como ya veremos, se tiende a que la ejecución de cada etapa se realice en un ciclo de reloj. Pues bien, cuando una etapa no es capaz de realizar su cometido en un ciclo de reloj, el pipeline se detiene hasta que dicha etapa finaliza su trabajo. Hay varias causas estructurales (arquitectura del pipeline) que pueden hacer que el pipeline se detenga. Por ejemplo, puede ocurrir que no todas las etapas sean de la misma duración, con lo que alguna etapa de corta duración debería esperar a que acabe la siguiente que es más larga. Esto hará que la duración efectiva de cada etapa sea igual a la duración de la etapa más larga. Normalmente los procesadores actuales tienden a un alto número de etapas, con lo que automáticamente tienden a igualarse los tiempos. Otra cosa que también puede ocurrir es que desde varias etapas se quiera acceder a memoria simultáneamente (por ejemplo en la etapa de alimentación de instrucción y en la escritura del resultado). Y, claro, si una etapa se detiene para esperar a poder realizar el acceso a memoria, el pipeline se para. También tenemos que considerar que no todas las instrucciones hacen las mismas cosas, por lo que requieren tiempos distintos de CPU. Pasemos a la siguiente página para tratar este caso con más detalle. Arquitectura de Computadores Segmentación del Cauce - 21

22 No todas las instrucciones hacen las mismas cosas y requieren el mismo tiempo de CPU. Unas pueden necesitar más tiempo en la etapa de ejecución (por ejemplo, la carga o escritura de un registro requiere menos trabajo de ALU que una división en coma flotante), mientras que otras pueden necesitar más tiempo para obtener los operandos o escribir el resultado (si están en memoria principal se tarda más que si están en registros). En el ejemplo de arriba vemos que la instrucción I 2 no puede completar la fase de ejecución en el ciclo 4, necesitando para ello también los ciclos 5 y 6. Esto hace que en el 5º ciclo no pueda alimentarse la instrucción I 5 por estar ocupada la etapa de extracción de instrucción, debiendo esperar ésta al ciclo 7 para poder continuar extrayendo instrucciones. Obsérvese que como consecuencia del sobretiempo de E 2, al término de los ciclos 6 y 7 no finaliza ninguna instrucción (lo cual va en perjuicio del rendimiento). Puede suceder incluso que alguna de las etapas ni siquiera necesite ejecutarse. Por ejemplo, en un procesador cuya última etapa se dedique a escribir en memoria principal, la carga de un registro no requerirá dicha última etapa. No obstante todas las instrucciones pasan por todas las etapas, aunque, para algunas instrucciones, en alguna de ellas puede ocurrir que no se realice ningún trabajo. Arquitectura de Computadores Segmentación del Cauce - 22

23 Si desde dos etapas se accede a un mismo recurso, una de las etapas tendrá que detener su ejecución y esperar a que quede libre el recurso necesario. Por ejemplo, en las etapas de Fectch y Ejecución puede ser necesario un acceso simultáneo a la ALU para realizar una operación aritmética, como el incremento que debe hacer al PC para actualizarlo (en F) o la suma que se requiere para realizar el cálculo de la dirección efectiva de un operando (en E). Esto se soluciona fácilmente mediante dos sumadores distintos. Por otra parte, también se puede requerir un acceso simultáneo a memoria desde las etapas F y M; para extraer la siguiente instrucción a ejecutar y para leer o escribir un operando o resultado en memoria. Arquitectura de Computadores Segmentación del Cauce - 23

24 Para mejorar el acceso simultáneo a algunos recursos, como los registros, el ciclo se divide en dos subciclos, de tal manera que dos etapas pueden coincidir en el recurso en el mismo ciclo. Por ejemplo, la etapa W podría escribir en un registro en el primer subciclo, y otra instrucción podría leer su contenido en el segundo subciclo, desde la etapa D (lectura de registros). Arquitectura de Computadores Segmentación del Cauce - 24

25 Las dependencias de datos se producen cuando dos instrucciones comparten un dato (operando o resultado). Hay tres tipos de dependencias de datos: Verdadera dependencia de datos à RAW (Read After Write) Antidependencia à WAR (Write After Read) Dependencia de salida à WAW (Write After Write) Los distintos tipos de dependencias pueden dan lugar a otros tantos tipos de riesgos de datos (RAW, WAR y WAW). Realmente, la única dependencia verdadera de datos es la que da lugar a riesgo de tipo RAW, que viene dada por la propia lógica del programa; los otros dos tipos son dependencias de nombre y dependen de las características del cauce. Más adelante trataremos las dependencias de nombre, pero ahora vamos a ocuparnos de la verdadera dependencia de datos (RAW). La situación es la siguiente: Una instrucción I j actualiza el valor de una variable, pero una instrucción posterior, I k, realiza una lectura de esa variable antes de que I j haya terminado la operación escribiendo la variable compartida. Veamos, en las siguientes páginas ejemplos concretos de esta dependencia de datos y varias soluciones propuestas. Arquitectura de Computadores Segmentación del Cauce - 25

26 En el programa del ejemplo, la dependencia que se denomina lectura después de escritura (Read After Write, o RAW) puede producirse entre las instrucciones I 2 e I 3 si la instrucción dmul lee el contenido de R1 (en el segundo subciclo de t4) antes de que el resultado de la suma anterior (en el primer subciclo de t6) se cargue en él. Obviamente, la operación dmul no se ejecutará con los operandos esperados por el programador, por lo que el resultado del programa será incorrecto. Hay dos opciones básicas para resolver este problema de dependencia de datos; uno es mediante la prevención: evitando que pueda llegarse a esta situación de dependencia; el otro es mediante la detección y resolución, es decir, no preocupándose de evitarlo, pero sí de detectarlo en caso de que se produzca y solucionarlo de alguna manera. Veámoslas en detalle. Arquitectura de Computadores Segmentación del Cauce - 26

27 La dependencia de datos: Prevención. El problema de la dependencia de datos entre una instrucción I 1 y otra instrucción I 2 que le sigue puede prevenirse retrasando la ejecución de I 2 un número K de etapas hasta que desaparezca el problema de que I 2 lea un operando que I 1 no ha escrito todavía. Este retraso puede conseguirse insertando un número K de instrucciones entre I 1 e I 2. Esto significa que el compilador tiene que reordenar el programa para encontrar K instrucciones que puedan ejecutarse después de I 1 y antes de I 2 sin que por ello varíe la estructura lógica del programa. Ejemplo 1: En la figura tenemos el ejemplo de un programa en el que hay una dependencia entre las instrucciones I 2 e I 3 a causa del registro R1. Como vemos, en este programa el compilador puede detectar la dependencia de datos y reorganizar las instrucciones para retardar el acceso al registro R1 hasta que esté actualizado. Debe quedar claro que esta reorganización solamente puede hacerse si se mantiene la semántica original del programa. Por lo que hemos visto en el ejemplo de la página anterior, para evitar la dependencia de I 3 respecto a I 2, se requiere que I 3 comience su ejecución tres ciclos después de que lo haga I 2. (Suponemos que en el primer subciclo de t 6, se escribe el resultado de daddi en R1, y en el segundo subciclo, se lee el operando R1 de dmul). Como se puede apreciar, esto se ha conseguido con la reorganización que ha realizado el compilador, intercambiando el orden I 2 por I 1 e I 3 por I 4. Arquitectura de Computadores Segmentación del Cauce - 27

28 Si el compilador no puede reorganizar el código para encontrar estas K instrucciones que decíamos arriba, sin modificar la lógica del programa, debe insertar operaciones NOP (No Operación) entre las operaciones dependientes. Ejemplo 2: En el ejemplo inferior tenemos el fragmento de un programa en el que también hay dependencias entre las instrucciones I 1, I 2 e I 3. En este caso vemos que las instrucciones de este fragmento no se pueden reordenar sin alterar la lógica del programa, por lo que el compilador inserta las instrucciones NOP necesarias para evitar la ejecución errónea de instrucciones por las dependencias de datos. La ventaja de la solución basada en la prevención es que no se requiere hardware adicional, pero a expensas de un compilador más complejo y una pérdida de tiempo si es necesario insertar instrucciones NOP (cuando no se puede reordenar el programa para insertar instrucciones útiles). Arquitectura de Computadores Segmentación del Cauce - 28

29 La dependencia de datos: Detección y resolución. Este método requiere un hardware adicional en la CPU, pues se deben detectar las dependencias de datos durante la ejecución y resolver estas dependencias. Detectarlas significa que debe darse cuenta de que en un momento dado hay dos instrucciones arrancadas I 1 e I 2, tal que I 2 depende de un resultado establecido por I 1. El dispositivo hardware que detecta estas dependencias se denomina interlock. Resolver las dependencias significa hacer algo para retrasar la ejecución de I 2 o para acelerar, en la medida de lo posible, la entrega a I 2 del resultado que produce I 1. Veamos dos posibilidades de resolución (no excluyentes) para cuando se detecta una dependencia de datos entre dos etapas del pipeline. Detener el pipeline. La aproximación más sencilla para evitar los problemas de dependencias de datos con ayuda del hardware es detener la actividad en las etapas necesarias del pipeline hasta que desaparezca la dependencia, es decir, hasta que se pueda ejecutar correctamente la instrucción dependiente. En el ejemplo de la figura, esto significa detener las instrucciones que siguen a la instrucción daddi desde el ciclo 4 hasta que el registro R1 pueda leerse debidamente actualizado en segundo subciclo de t6. Con esta estrategia, primero se detecta la dependencia y después se detiene el pipeline a partir de la instrucción dependiente hasta que desaparece la dependencia. Obsérvese que la detención de n ciclos del cauce tiene el mismo efecto que la inserción de n instrucciones NOP. Arquitectura de Computadores Segmentación del Cauce - 29

30 El otro modo de resolver las dependencias de datos mediante Detección y Resolución es acelerando, en la medida de lo posible, la entrega a una instrucción I 2 del resultado que produce una instrucción previa I 1. Veámoslo en detalle: Anticipación (data forwarding). En una dependencia de datos RAW, puede suceder que una instrucción I 2 necesite un operando en la etapa D (decodificación y obtención de operandos) que debe producirlo en el mismo ciclo la instrucción I 1 en su etapa E (ejecución). Esto obligaría a detener la instrucción I 2 hasta que I 1 escriba el resultado en su etapa W, y entonces pueda continuar I 2 en su etapa D y leer el resultado que produjo I 1. Este retraso puede evitarse redirigiendo (forwarding) el resultado de la etapa E de la instrucción I 1 directamente a la entrada de la etapa E de la instrucción I 2, obteniendo el mismo efecto que se obtendría en la ejecución de la etapa D de I 2. En la figura se muestra el esquema de la ejecución de 3 instrucciones, donde la I 2 tiene una dependencia de datos de I 1 (por R1), e I 3 la tiene a su vez de I 2 (por R2). Para evitar la lectura incorrecta de datos o las paradas del cauce, se puede dirigir el resultado de la etapa E de I 1 directamente a la entrada de la etapa E de I 2. Igualmente, también se puede dirigir el resultado de la etapa E de I 2 directamente a la entrada de la etapa E de I 3. En este caso se consigue evitar totalmente la detención del pipeline, pero hay otras situaciones en las que esto no es posible. Arquitectura de Computadores Segmentación del Cauce - 30

31 Aquí tenemos otro caso de dependencias múltiples que se intentan resolver con anticipación, pero en la situación de la instrucción de carga I 1, su resultado (R1), no se consigue hasta el final de la etapa M (la de acceso a memoria), por lo que hay que detener I 2 en su etapa D para dar tiempo a que I 1 ejecute su etapa M y, en el ciclo siguiente, la instrucción de suma pueda obtener el valor actualizado de R1 a la entrada de su etapa de ejecución. Como vemos, en las instrucciones de carga no se consigue evitar por completo la parada del cauce (se requiere una parada de un ciclo), pero si no hubiera adelantamiento, se necesitaría una parada de 2 ciclos adicionales ciclos en la etapa F de la suma, pues habría que esperar a que se completara la etapa W de la instrucción de carga para dar paso a la etapa D (obtención de operandos) de la suma. Arquitectura de Computadores Segmentación del Cauce - 31

32 Como se ha mostrado en las páginas anteriores, hay más de una secuencia de instrucciones que conduce a distintas situaciones de adelantamientos. Aquí mostramos algunas situaciones de adelantamientos en MIPS, en cuyo caso, los adelantamientos siempre se producen desde el final de la etapa de ejecución E (casos 1, 2 y 3) o desde el final de una lectura en memoria (casos 4, 5 y 6) para cargar un registro. El adelantamiento se produce hacia la etapa de la instrucción en la que se requiere el dato de entrada. En los casos 3 y 5, el adelantamiento se produce hacia la etapa D, ya que es la encargada de comprobar la condición de salto. En el caso 5, lo cierto es que no se consigue ninguna ventaja con un adelantamiento, pues en el mismo ciclo en el que la etapa M de la instrucción de carga puede adelantarle R1 a la instrucción de bifurcación en su etapa D, se ejecuta la etapa W de la instrucción de carga, escribiendo R1 en el primer subciclo, y la instrucción de bifurcación puede leerlo en el segundo subciclo de su etapa D. Arquitectura de Computadores Segmentación del Cauce - 32

33 Ya hemos comentado que uno de los principales problemas en el diseño de un pipeline consiste en asegurar el mantenimiento de un flujo constante de instrucciones alimentando sus diversas etapas para así poder mantener también constante el ritmo de ejecución de instrucciones (idealmente, una por ciclo). El flujo normal de ejecución de un programa es secuencial, por lo que las instrucciones que se van alimentando y ejecutando están en direcciones consecutivas de memoria. Por desgracia, las instrucciones de bifurcación (que suelen representar alrededor del 20% de las instrucciones ejecutadas) pueden romper el flujo constante de instrucciones alimentadas. Cuando se alimenta una instrucción en la CPU, lo primero que se suele hacer en la etapa Fetch es incrementar el registro Contador de Programa (PC) para conocer la dirección de la siguiente instrucción a ejecutar y extraerla en el siguiente ciclo de reloj. Pero si se trata de una instrucción de salto condicional, hay que esperar a una etapa posterior para que se pueda saber si se cumple o no la condición de salto, por lo que la etapa de alimentación de instrucción no sabe de dónde seguir alimentando instrucciones. Tenemos un problema con los saltos! Arquitectura de Computadores Segmentación del Cauce - 33

34 Una instrucción de bifurcación condicional hace que la dirección de la siguiente instrucción a ejecutar no se conozca en la etapa F, por lo que esta etapa de alimentación no puede extraer la siguiente instrucción a una bifurcación hasta que ésta llegue a la etapa en la que ya se conoce la dirección de la siguiente instrucción a ejecutar. Por esto, a continuación de la alimentación de la instrucción de bifurcación, las etapas F, D se van quedando vacías al no saber qué instrucción alimentar. A estas etapas vacías que aparecen se las denomina huecos de retardo (delay slots). En algunos sistemas, las bifurcaciones incondicionales pueden detectarse en la fase de alimentación o extracción (fetch) si se le añade un poco hardware a esta primera etapa. Este hardware de ayuda también extrae la dirección de salto, con lo que se puede proseguir la extracción de instrucciones de la dirección del salto. Sin embargo, en el caso de las bifurcaciones condicionales no se puede hacer esto, pues puede ocurrir que la condición del salto se establezca precisamente en la instrucción anterior, con lo que no hay más remedio que esperar a que la bifurcación llegue a la etapa de comprobación de la condición de salto y establezca la dirección de la siguiente instrucción a ejecutar. Esto quiere decir que se debe detener la alimentación de instrucciones al pipeline hasta que en la etapa que corresponda se averigüe la dirección de la siguiente instrucción a ejecutar. Afortunadamente, hay diversas técnicas que pueden evitar o minimizar el impacto de las instrucciones de bifurcación, tales como la bifurcación retardada, la predicción del salto y algunas más. Veamos estas dos primeras técnicas. Arquitectura de Computadores Segmentación del Cauce - 34

35 El problema de los saltos: Bifurcación retardada. Ya hemos visto que cuando entra una instrucción de salto en el pipeline, se producen h huecos de retardo por lo que hay que esperar h ciclos hasta que llega la siguiente instrucción de la secuencia a ejecutar. Estaría bien que estos huecos se pudieran rellenar con instrucciones que siempre se deban ejecutar, independientemente de si se toma la bifurcación o no. Pero claro, si estas instrucciones están en memoria inmediatamente después de la instrucción de bifurcación, según lo que sabemos hasta ahora, no se ejecutarán si la instrucción de bifurcación decide saltar. Para conseguir que se ejecuten siempre las h instrucciones que siguen a una bifurcación, en los procesadores que tienen bifurcaciones retardadas, las instrucciones de salto no tienen efecto hasta h instrucciones después de su ejecución, por lo que independientemente del resultado de la ejecución de la bifurcación, siempre se ejecutan las h instrucciones siguientes. De esta manera no se producen los huecos de retardo. Arquitectura de Computadores Segmentación del Cauce - 35

36 Supongamos la serie de instrucciones que se muestra aquí arriba, en la que I 6 es la instrucción de salto condicional a la instrucción I 11. En una CPU sin saltos retardados, la secuencia de instrucciones ejecutadas cuando la bifurcación no tiene lugar es: I 1, I 2, I 3, I 4, I 5, I 6, I 7, I 8, I 9, I 10, I 11, I 12,... Mientras que cuando sí se produce la bifurcación, la secuencia es: I 1, I 2, I 3, I 4, I 5, I 6, I 11, I 12,... Si a este mismo procesador (con un hueco de retardo en las bifurcaciones) se le ponen bifurcaciones retardadas, la secuencia de instrucciones ejecutadas cuando se produce la bifurcación es: I 1, I 2, I 3, I 4, I 5, I 6, I 7, I 11, I 12,... Es decir I 7, se ejecuta siempre, haya o no bifurcación. Esto es así porque el efecto de la bifurcación se retarda un ciclo de reloj, es decir, después de alimentar una instrucción de salto, se siguen extrayendo y ejecutando las instrucciones siguientes, según su orden en la memoria, durante un ciclo más de reloj. Después, se establece en el contador de programa la dirección indicada en la instrucción de salto, con lo que la 2ª instrucción después de la de salto, será ya la correspondiente a la de la dirección indicada en dicha instrucción de salto. Arquitectura de Computadores Segmentación del Cauce - 36

37 Aquí tenemos un ejemplo, en un ensamblador hipotético, en el que para un programa dado (el de la izquierda), se muestran en la parte derecha las dos posibilidades de ejecución en un procesador con un hueco de retardo en los saltos: tanto cuando no se toma la bifurcación, como cuando sí se toma. Arquitectura de Computadores Segmentación del Cauce - 37

38 A partir de un fragmento de código escrito para un procesador sin saltos retardados, si se va a ejecutar en una CPU con saltos con un hueco de retardo, sabiendo lo que sucede en los procesadores con bifurcaciones retardadas (tarda un ciclo más en bifurcar realmente), vamos a intentar reordenar nuestro fragmento de código para que su ejecución se produzca con la misma semántica que la esperada en un procesador sin saltos retardados. Así, después de la instrucción de salto vamos a poner una de las instrucciones que hay antes de la de salto, es decir, una instrucción que queremos que se ejecute siempre (se produzca el salto o no). Así, suponiendo que no se altera la semántica del programa, podríamos mover la instrucción I 4 y ponerla justo a continuación de I 6 (la bifurcación condicional), quedando entonces la secuencia de instrucciones en memoria así: I 1, I 2, I 3, I 5, I 6, I 4, I 7, I 8, I 9, I 10, I 11, I 12,... Ahora vamos a ejecutar este programa en nuestro procesador con bifurcaciones retardadas de un ciclo. Cuando no se produce la bifurcación, la secuencia de instrucciones que se ejecuta es: I 1 I 2 I 3 I 5 I 6 I 4 I 7 I 8 I 9 I 10 I 11 I Si la bifurcación tiene lugar, las instrucciones se ejecutarán en este orden: I 1 I 2 I 3 I 5 I 6 I 4 I 11 I Si no hubiese bifurcación retardada, al alimentar una instrucción de salto condicional habría que detener la alimentación de instrucciones hasta que la instrucción de salto pasase por la etapa de decodificación (hasta saber cuál es la siguiente instrucción a ejecutar). Con bifurcación retardada se aprovechan ese ciclo perdido en alimentar y ejecutar una instrucción que se desea ejecutar incondicionalmente antes de que la instrucción de bifurcación tenga lugar (se salte o no). Arquitectura de Computadores Segmentación del Cauce - 38

39 Esta técnica de los saltos retardados requiere la colaboración del compilador, que debe saber cómo reorganizar el código para rellenar los huecos de retardo con instrucciones útiles (de la misma manera que se hacía con las dependencias de datos). Si el compilador no encuentra una manera de reordenar el código sin afectar a su semántica, debe insertar tantas operaciones NOP con huecos de retardo como sean necesarias para las bifurcaciones de ese procesador. Arquitectura de Computadores Segmentación del Cauce - 39

40 El problema de los saltos: Predicción del salto. Otra técnica para reducir el problema de las bifurcaciones consiste en intentar predecir si una instrucción de bifurcación saltará o no. Por ejemplo, una bifurcación al final de un bucle salta al comienzo de éste todas las veces excepto la última. Según esto, sería ventajoso que cuando el procesador se encuentra una instrucción de salto suponga que el salto sí se va a efectuar realmente, y cuando la etapa de alimentación detecte una bifurcación, empiece a extraer instrucciones de la dirección de destino del salto. Si una vez que se ejecuta la instrucción de bifurcación, resulta que efectivamente se salta, la ejecución continúa normalmente, pues las instrucciones de la dirección del salto son las que ya se están alimentando. Si por el contrario resulta que no se realiza el salto, se debe vaciar el pipeline (desechar todas las instrucciones erróneamente alimentadas) y empezar a alimentar las instrucciones que siguen en secuencia. Arquitectura de Computadores Segmentación del Cauce - 40

41 Si ahora suponemos que el control del bucle se realiza mediante una instrucción al comienzo del mismo, ahora lo normal será suponer que la bifurcación no se tomará hasta la última pasada del bucle. Es decir, hay veces que conviene suponer una cosa y otras veces otra. Esto que hemos visto se denomina ejecución especulativa, pues las instrucciones pueden empezar a ejecutarse antes de que el procesador sepa que las instrucciones alimentadas son las realmente correctas. Supongamos que se predice que el salto tendrá lugar, por lo que se empiezan a alimentar instrucciones y a pasarlas a las siguientes etapas del pipeline antes de que la instrucción de bifurcación finalice su etapa de ejecución. Y si al ejecutar la bifurcación no se realiza el salto! Nos encontramos que algunas instrucciones ya se han empezado a ejecutar en las etapas anteriores! Con ejecución especulativa se debe tener cuidado de que en las etapas anteriores a la de ejecución no se modifiquen registros o posiciones de memoria hasta que no se confirme que la predicción realizada ha sido la acertada. Arquitectura de Computadores Segmentación del Cauce - 41

42 La repetición de la bifurcación que se toma en el bucle la puede detectar el compilador y establecer la predicción mediante un cierto código de operación en la bifurcación, lo que quiere decir que, en ejecución, siempre que se alimente esa instrucción de bifurcación se hará la misma predicción. Por esto, se la conoce como predicción estática. La predicción se puede mejorar si se realiza dinámicamente, para lo cual el hardware del procesador debe establecer la posibilidad de que haya o no salto cada vez que se encuentre una cierta instrucción de bifurcación. Para ello, en la CPU se debe llevar la cuenta de los resultados de las últimas ejecuciones de cada bifurcación. Ciertos estudios estadísticos dicen que conservando solamente el resultado de la última ejecución (con un bit) ya se obtiene una gran probabilidad de acierto (del orden del 90%) y con la historia de las cuatro últimas ejecuciones (dos bits) se mejora ligeramente; manteniendo una historia mayor, la mejora es despreciable. Arquitectura de Computadores Segmentación del Cauce - 42

43 Como hemos visto, la predicción ante un salto puede ser saltar o no saltar, para decidir por dónde continúa extrayendo instrucciones. Para la arquitectura MIPS, con una porción de código concreta y con los mismos datos, vamos a ver lo que sucede cuando la predicción es no saltar y, posteriormente, cuando es saltar. Predicción NO SALTAR: Después de alimentar la instrucción de salto, se continúa con la Decodificación, pero hasta el final de esta etapa no se sabrá si habrá que saltar o no. Como la predicción es no saltar, en la etapa F se alimenta la siguiente instrucción en memoria. Al final de la etapa D se ve que se ha cometido un fallo en la predicción, por lo que habrá que eliminar la instrucción daddi del cauce y empezar a extraer y ejecutar la instrucción de destino del salto. Se ha perdido un ciclo de tiempo. Predicción SALTAR: Igual que antes, después de alimentar la instrucción de salto, se continúa con la Decodificación. Como la predicción es saltar, en este ciclo se querría extraer la siguiente instrucción de la dirección del salto, pero como hasta el final de la Decodificación tampoco se conoce la dirección del salto, en este ciclo no se puede extraer ninguna instrucción, y hay que esperar al final de la Decodificación para poder alimentar la instrucción de destino del salto. Como vemos, en MIPS, ante una condición que establezca que se debe saltar, se pierde un ciclo tanto con una predicción de saltar como de no saltar. Por el contrario, si la condición se evaluara como falsa (no saltar), con la predicción de NO SALTAR, sí se podría seguir alimentando instrucciones de la siguiente dirección de memoria. Por lo que hemos visto, en MIPS 64 no tiene ninguna utilidad predecir Tomar el salto, por lo que su predicción es NO SALTAR. Arquitectura de Computadores Segmentación del Cauce - 43

44 Las instrucciones de sumas y restas en aritmética entera pueden pasar por la etapa de ejecución realizando su cometido en un solo ciclo, pero hay otras operaciones, como la multiplicación, la división o, en general, las instrucciones con datos de coma flotante, que no pueden ejecutar la operación de la etapa E en un solo ciclo. En este capítulo vamos a ver posibles soluciones a esta cuestión y también los problemas que van a surgir. Arquitectura de Computadores Segmentación del Cauce - 44

45 La arquitectura de MIPS64 que hemos visto hasta ahora solamente contempla la aritmética con enteros, pero los procesadores deben soportar también operaciones en coma flotante. Las operaciones en coma flotante requieren bastante más tiempo en ejecutarse que las de la aritmética entera, pueden durar desde un par de ciclos, como la negación; hasta más de un centenar, como la raíz cuadrada. Para adaptar esto a nuestro pipeline, una opción sería alargar el tiempo del ciclo de reloj hasta el necesario para ejecutar las instrucciones de coma flotante, pero esto no sería práctico, porque estaríamos ralentizando la ejecución del resto de las instrucciones, haciéndolas tan lentas como las de coma flotante. Otra posibilidad podría consistir en mantener la duración del tiempo de ciclo de los enteros y repetir la etapa de Ejecución tantas veces como fuera necesario como para ejecutar cada instrucción de coma flotante. Esto también tendría la pega de que la ejecución de una instrucción de coma flotante pararía el cauce hasta su terminación. Este último problema se puede solucionar si dotamos al cauce de múltiples unidades funcionales en la etapa E: una para enteros, otras para multiplicación, división, para aritmética en coma flotante, etc. Veámoslo en la siguiente página Arquitectura de Computadores Segmentación del Cauce - 45

46 Nuestro nuevo cauce podría tener las siguientes unidades funcionales: Una unidad principal de enteros, cargas y almacenamientos, y gestión de bifurcaciones. Sumas y restas y conversiones en coma flotante (requiere 4 ciclos). Multiplicador de enteros y coma flotante (se ejecuta en 7 ciclos). División de enteros y coma flotante (requiere 24 ciclos). Ahora, disponiendo de varias unidades funcionales, si comienza a ejecutarse una operación de coma flotante, no impediría que inmediatamente a continuación pase a ejecutarse una instrucción de suma de enteros. Pero seguimos teniendo un problema. Si a una operación en multiplicación en coma flotante (que es de larga duración) le sigue otra más, también de multiplicación en coma flotante, esta última tendrá que esperar a que termine completamente la primera para comenzar su ejecución, es decir, que quedará detenida durante 7 ciclos hasta comenzar su ejecución. Esta es la situación que teníamos antes de inventar el pipeline! Veamos en la página siguiente cómo se resuelve este problema. Arquitectura de Computadores Segmentación del Cauce - 46

47 La solución a este problema es obvia: hay que segmentar las unidades de coma flotante en múltiples etapas, cada una de un ciclo de duración. Así, un ciclo después del comienzo de la ejecución de una instrucción de multiplicación en la unidad de coma flotante, ya se podría arrancar la siguiente instrucción, aunque también fuera de multiplicación en coma flotante. Como vemos en el gráfico de nuestro ejemplo, las instrucciones que se ejecuten en la unidad de enteros, E, solamente requieren un ciclo; las sumas en coma flotantes se ejecutaran en 4 ciclos; y las multiplicaciones, en 7. En nuestro MIPS, la unidad funcional de las divisiones no está segmentada, y requiere 24 ciclos de reloj para ejecutarse. Ya que esta última unidad funcional no está segmentada, se pueden producir riesgos estructurales si hay dos divisiones consecutivas o cercanas en el tiempo. Arquitectura de Computadores Segmentación del Cauce

48 Ya que las unidades funcionales multiciclo duran más, hay mayores riesgos, estructurales y de datos. Comencemos viendo los riesgos estructurales. El caso de la división es muy claro. Dadas dos instrucciones de división consecutivas, la segunda no puede arrancarse un ciclo después de la primera, pues su unidad funcional no está segmentada, por lo que antes de emitir la segunda división (pasarla a su etapa de ejecución), debe esperar en D a que finalice la etapa E de la división anterior. Arquitectura de Computadores Segmentación del Cauce - 48

Arquitectura de Computadores

Arquitectura de Computadores Arquitectura de Computadores 6. CPU Segmentada (Pipeline) 1. Conceptos Básicos 2. Causas de Ralentización Arquitectura de Computadores Segmentación (Pipeline) - 1 En los dos capítulos siguientes vamos

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

Procesadores superescalares. Introducción

Procesadores superescalares. Introducción Procesadores superescalares Introducción Introducción El término superescalar (superscalar) fue acuñado a fines de los 80s. Todas las CPUs modernas son superescalares. Es un desarrollo de la arquitectura

Más detalles

CPU MEMORIAS CACHE. Memorias caché. Memoria caché = memoria de tamaño pequeño y acceso rápido situada entre la CPU y la memoria principal.

CPU MEMORIAS CACHE. Memorias caché. Memoria caché = memoria de tamaño pequeño y acceso rápido situada entre la CPU y la memoria principal. MEMORIAS CACHE Memoria caché = memoria de tamaño pequeño y acceso rápido situada entre la CPU y la memoria principal. Tiempo ciclo memoria > tiempo de ciclo del procesador la CPU debe esperar a la memoria

Más detalles

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo TEMA 2: CONCEPTOS BÁSICOS DE ALGORÍTMICA 1. Definición de Algoritmo 1.1. Propiedades de los Algoritmos 2. Qué es un Programa? 2.1. Cómo se construye un Programa 3. Definición y uso de herramientas para

Más detalles

Tema 1. Introducción a la arquitectura de computadores: diseño, coste y rendimiento

Tema 1. Introducción a la arquitectura de computadores: diseño, coste y rendimiento Soluciones a los problemas impares Tema 1. Introducción a la arquitectura de computadores: diseño, coste y rendimiento Arquitectura de Computadores I Curso 2009-2010 Tema 1: Hoja: 2 / 18 Tema 1: Hoja:

Más detalles

Convenciones. Introducción. Unidades principales en la implementación. El procesador: camino de datos y control. Tipos de elementos:

Convenciones. Introducción. Unidades principales en la implementación. El procesador: camino de datos y control. Tipos de elementos: Unidades principales en la implementación Data El procesador: camino de datos y control IEC UTM Moisés E. Ramírez G. 1 Register # PC Address Instruction Instruction Registers Register # ALU memory Register

Más detalles

FUNCIONAMIENTO DEL ORDENADOR

FUNCIONAMIENTO DEL ORDENADOR FUNCIONAMIENTO DEL ORDENADOR COMPUTACIÓN E INFORMÁTICA Datos de entrada Dispositivos de Entrada ORDENADOR PROGRAMA Datos de salida Dispositivos de Salida LOS ORDENADORES FUNCIONAN CON PROGRAMAS Los ordenadores

Más detalles

CICLOS DEL PROCESADOR

CICLOS DEL PROCESADOR UNIDAD DE CONTROL CICLOS DEL PROCESADOR Qué es un ciclo de búsqueda? Para qué sirve estudiar los ciclos de instrucción de una CPU? Para comprender el funcionamiento de la ejecución de instrucciones del

Más detalles

TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero

TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero TEMA 7: Ficheros 7.1.-Concepto de fichero Todas las estructuras de datos que hemos visto hasta ahora utilizan memoria principal. Esto tiene dos limitaciones importantes: 1. Los datos desaparecen cuando

Más detalles

Soluciones a los problemas impares. Tema 5. Memorias. Estructura de Computadores. I. T. Informática de Gestión / Sistemas

Soluciones a los problemas impares. Tema 5. Memorias. Estructura de Computadores. I. T. Informática de Gestión / Sistemas Tema 5. Soluciones a los problemas impares Estructura de Computadores I. T. Informática de Gestión / Sistemas Curso 28-29 Tema 5 Hoja: 2 / 36 Tema 5 Hoja: 3 / 36 Base teórica La memoria es el lugar en

Más detalles

ECUACIONES.

ECUACIONES. . ECUACIONES... Introducción. Recordemos que el valor numérico de un polinomio (y, en general, de cualquier epresión algebraica) se calcula sustituyendo la/s variable/s por números (que, en principio,

Más detalles

SISTEMAS OPERATIVOS Arquitectura de computadores

SISTEMAS OPERATIVOS Arquitectura de computadores SISTEMAS OPERATIVOS Arquitectura de computadores Erwin Meza Vega emezav@unicauca.edu.co Esta presentación tiene por objetivo mostrar los conceptos generales de la arquitectura de los computadores, necesarios

Más detalles

Tema 2 Introducción a la Programación en C.

Tema 2 Introducción a la Programación en C. Tema 2 Introducción a la Programación en C. Contenidos 1. Conceptos Básicos 1.1 Definiciones. 1.2 El Proceso de Desarrollo de Software. 2. Lenguajes de Programación. 2.1 Definición y Tipos de Lenguajes

Más detalles

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL 1 TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL TECNOLOGÍA DE LA COMPUTADORA FACILITADOR: PARTICIPANTE: DAVID, CHIRIQUÍ 2015 2 Qué es un programa? Un programa informático es un conjunto

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

TEMA 2: PARALELISMO INTERNO EN SISTEMAS COMPUTADORES SEGMENTACION

TEMA 2: PARALELISMO INTERNO EN SISTEMAS COMPUTADORES SEGMENTACION SEGMENTACION SEGMENTACION SEGMENTACION I I I I I 1 2 3 4 5 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB SEGMENTACION INTRODUCIR NUEVA INSTRUCCIÓN CADA CICLO 1 CICLO,

Más detalles

LECCIÓN 14: DISEÑO DE COMPUTADORES MEDIANTE MICROPROGRAMACION

LECCIÓN 14: DISEÑO DE COMPUTADORES MEDIANTE MICROPROGRAMACION ESTRUCTURA DE COMPUTADORES Pag. 14.1 LECCIÓN 14: DISEÑO DE COMPUTADORES MEDIANTE MICROPROGRAMACION 1. Introducción Vamos a aplicar las ideas de microprogramación al caso de un minicomputador similar al

Más detalles

CAPÍTULO 4 TÉCNICA PERT

CAPÍTULO 4 TÉCNICA PERT 54 CAPÍTULO 4 TÉCNICA PERT Como ya se mencionó en capítulos anteriores, la técnica CPM considera las duraciones de las actividades como determinísticas, esto es, hay el supuesto de que se realizarán con

Más detalles

Estructuras de control

Estructuras de control Estructuras de control Introducción Los algoritmos vistos hasta el momento han consistido en simples secuencias de instrucciones; sin embargo, existen tareas más complejas que no pueden ser resueltas empleando

Más detalles

Tema: Microprocesadores

Tema: Microprocesadores Universidad Nacional de Ingeniería Arquitectura de Maquinas I Unidad I: Introducción a los Microprocesadores y Microcontroladores. Tema: Microprocesadores Arq. de Computadora I Ing. Carlos Ortega H. 1

Más detalles

Estructuras en LabVIEW.

Estructuras en LabVIEW. Estructuras en LabVIEW. Sumario: 1. Ejecución según el flujo de datos. 2. Estructuras básicas disponibles en LabVIEW. a) Estructura Sequence. b) Estructura Case. c) Estructura For Loop. d) Estructura While

Más detalles

http://www.conclase.net/c/devcpp.php?art=depurar Depurar programas

http://www.conclase.net/c/devcpp.php?art=depurar Depurar programas Depurar programas Siempre hay que tener en cuenta que los ordenadores hacen sólo aquello que nosotros les decimos que hagan: si los programas no funcionan es porque no los hemos diseñado bien o porque

Más detalles

Definición de Memoria

Definición de Memoria Arquitectura de Ordenadores Representación de Datos en Memoria Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Definición de Memoria DRM-1 La memoria

Más detalles

PIPELINING: Antes de adentrarnos en el tema, veremos una analogía de un pipeline:

PIPELINING: Antes de adentrarnos en el tema, veremos una analogía de un pipeline: PIPELINING: Antes de adentrarnos en el tema, veremos una analogía de un pipeline: Observemos que la técnica de Pipelining no mejora el tiempo de cada tarea, sino el tiempo de toda la carga de trabajo.

Más detalles

Introducción a la arquitectura de computadores

Introducción a la arquitectura de computadores Introducción a la arquitectura de computadores Departamento de Arquitectura de Computadores Arquitectura de computadores Se refiere a los atributos visibles por el programador que trabaja en lenguaje máquina

Más detalles

lasmatemáticas.eu Pedro Castro Ortega materiales de matemáticas

lasmatemáticas.eu Pedro Castro Ortega materiales de matemáticas 1. Fracciones Una fracción es una expresión del tipo a b, donde a y b son números naturales llamados numerador y denominador, respectivamente. 1.1. Interpretación de una fracción a) Fracción como parte

Más detalles

Organización lógica Identificación de bloque

Organización lógica Identificación de bloque Cómo se encuentra un bloque si está en el nivel superior? La dirección se descompone en varios campos: Etiqueta (tag): se utiliza para comparar la dirección requerida por la CPU con aquellos bloques que

Más detalles

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones Introducción a la Computación Capítulo 10 Repertorio de instrucciones: Características y Funciones Que es un set de instrucciones? La colección completa de instrucciones que interpreta una CPU Código máquina

Más detalles

Arquitectura de Computadores. Tema 4 PROCESADORES SEGMENTADOS

Arquitectura de Computadores. Tema 4 PROCESADORES SEGMENTADOS Arquitectura de Computadores Tema 4 PROCESADORES SEGMENTADOS 1. Arquitecturas RISC y CISC. 2. Unidad de Control monociclo y multiciclo. 3. Segmentación. 3.1. Ruta de datos del MIPS R2000. 3.2. Control

Más detalles

La eficiencia de los programas

La eficiencia de los programas La eficiencia de los programas Jordi Linares Pellicer EPSA-DSIC Índice General 1 Introducción... 2 2 El coste temporal y espacial de los programas... 2 2.1 El coste temporal medido en función de tiempos

Más detalles

UNIDAD 10: ECUACIONES DE SEGUNDO GRADO.

UNIDAD 10: ECUACIONES DE SEGUNDO GRADO. UNIDAD 10: ECUACIONES DE SEGUNDO GRADO. 10.1 Estudio elemental de la ecuación de segundo grado. Expresión general. 10.2 Resolución de ecuaciones de segundo grado completas e incompletas. 10.3 Planteamiento

Más detalles

DIAGRAMA A BLOQUES DE UNA COMPUTADORA

DIAGRAMA A BLOQUES DE UNA COMPUTADORA DIAGRAMA A BLOQUES DE UNA COMPUTADORA BUS DE DATOS: Interconecta los dispositivos de entrada/salida, la memoria RAM y el CPU. BUS DE DIRECCIONES: Se utiliza para direccional las localidades de memoria

Más detalles

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten

Más detalles

1. dejar a una lado de la igualdad la expresión que contenga una raíz.

1. dejar a una lado de la igualdad la expresión que contenga una raíz. 1. Resuelve las siguientes ecuaciones reales: Solución x 1 + x = 0 ; 3 x = 3 ; ln(x 1) + 4 = ln 3 Ecuaciones con raíces: No todas las ecuaciones de este tipo son sencillas de resolver, pero podemos intentar

Más detalles

Ingeniería Informática. Ampliación de Estructura de Computadores. Curso 2010-2011. 6.1 Introducción a la segmentación de Instrucciones.

Ingeniería Informática. Ampliación de Estructura de Computadores. Curso 2010-2011. 6.1 Introducción a la segmentación de Instrucciones. SEGMENTACIÓN 6.1 Introducción a la segmentación de Instrucciones. La segmentación o pipeline es una técnica de realización de procesadores por la cual se solapa la ejecución de las instrucciones. Hoy en

Más detalles

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF ESCUELA POLITÉCNICA SUPERIOR GRADO EN DISEÑO IND. INFORMÁTICA CURSO 2012-13 PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF HASTA AHORA... En prácticas anteriores se ha aprendido: La estructura principal de un

Más detalles

Cómo configurar formatos Wiegand personalizados

Cómo configurar formatos Wiegand personalizados Cómo configurar formatos Wiegand personalizados Muchos sistemas de control de acceso utilizan un formato Wiegand para sus tarjetas de usuario con hasta 50 bits de información almacenada. Es necesario filtrar

Más detalles

Arquitectura de Computadores. Apellidos, Nombre:

Arquitectura de Computadores. Apellidos, Nombre: No se considerarán como válidas las respuestas en las que no se justifiquen los cálculos realizados No se permite el uso de ningún tipo de documentación, ni de calculadora Sólo existe una única opción

Más detalles

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

Ingeniería Informática. Ampliación de Estructura de Computadores. Curso 2010-11 6.3.3 Riesgo de Control. Los riesgos por control en DLX son menos frecuentes que los riesgos por dependencia de datos, pero al no haber una solución tan buena como el adelantamiento de datos, se convierten

Más detalles

UNIDAD 8 INECUACIONES. Objetivo general.

UNIDAD 8 INECUACIONES. Objetivo general. 8. 1 UNIDAD 8 INECUACIONES Objetivo general. Al terminar esta Unidad resolverás inecuaciones lineales y cuadráticas e inecuaciones que incluyan valores absolutos, identificarás sus conjuntos solución en

Más detalles

Tema 3. Electrónica Digital

Tema 3. Electrónica Digital Tema 3. Electrónica Digital 1.1. Definiciones Electrónica Digital La Electrónica Digital es la parte de la Electrónica que estudia los sistemas en los que en cada parte del circuito sólo puede haber dos

Más detalles

Estructura del Computador

Estructura del Computador Estructura del Computador 1 definiciones preliminares Estructura: es la forma en que los componentes están interrelacionados Función: la operación de cada componente individual como parte de la estructura.

Más detalles

MICROSOFT EXCEL PARA DIRECCIÓN FINANCIERA I. 1. Resolución de problemas de simulación de Montecarlo mediante el uso de la hoja de cálculo.

MICROSOFT EXCEL PARA DIRECCIÓN FINANCIERA I. 1. Resolución de problemas de simulación de Montecarlo mediante el uso de la hoja de cálculo. MICROSOFT EXCEL PARA DIRECCIÓN FINANCIERA I. 1. Resolución de problemas de simulación de Montecarlo mediante el uso de la hoja de cálculo. Mediante el modelo de Hertz o Simulación de Montecarlo, trataremos

Más detalles

Computación II. Introducción a Visual Basic

Computación II. Introducción a Visual Basic Computación II Introducción a Visual Basic Introducción a Visual Basic Microsoft Visual Basic es un conjunto de herramientas que posibilitan el desarrollo de aplicaciones para Windows de una manera rápida

Más detalles

Objetivos. Objetivos. Arquitectura de Computadores. R.Mitnik

Objetivos. Objetivos. Arquitectura de Computadores. R.Mitnik Objetivos Objetivos Arquitecturas von Neumann Otras Unidad Central de Procesamiento (CPU) Responsabilidades Requisitos Partes de una CPU ALU Control & Decode Registros Electrónica y buses 2 Índice Capítulo

Más detalles

Representación de números enteros: el convenio exceso Z

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

Más detalles

TEMA 3: El proceso de compilación, del código fuente al código máquina

TEMA 3: El proceso de compilación, del código fuente al código máquina TEMA 3: El proceso de compilación, del código fuente al código máquina 3.1 Fase de compilación y linkado (link, montado o enlace) Un programa escrito en un lenguaje de alto nivel, no puede ser ejecutado

Más detalles

Jerarquía de memoria - Motivación

Jerarquía de memoria - Motivación Jerarquía de memoria - Motivación Idealmente uno podría desear una capacidad de memoria infinitamente grande, tal que cualquier. palabra podría estar inmediatamente disponible Estamos forzados a reconocer

Más detalles

TEST DE RAZONAMIENTO NUMÉRICO. Consejos generales

TEST DE RAZONAMIENTO NUMÉRICO. Consejos generales TEST DE RAZONAMIENTO NUMÉRICO Consejos generales 1 I. INTRODUCCIÓN En lo relativo a los cálculos de porcentajes, es fundamental tener en cuenta que los porcentajes, en realidad, son referencias abstractas,

Más detalles

Oliverio J. Santana Jaria. Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso Los objetivos de este tema son:

Oliverio J. Santana Jaria. Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso Los objetivos de este tema son: 3. Circuitos aritméticos ticos Oliverio J. Santana Jaria Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso 2006 2007 Introducción La realización de operaciones aritméticas y lógicas

Más detalles

Introducción a la programación del robot moway

Introducción a la programación del robot moway Introducción a la programación del robot moway Índice Introducción... 2 Diagramas de flujo... 2 Bloques de Movimiento... 5 Condicionales... 6 Bucles... 7 Operadores AND / OR... 8 Orden en los diagramas...

Más detalles

Diseño Estructurado de Algoritmos

Diseño Estructurado de Algoritmos Diseño Estructurado de Algoritmos 1 Sesión No. 11 Nombre: Estructuras algorítmicas. Tercera parte. Objetivo de la sesión: Al concluir la sesión el estudiante aplicará las estructuras algorítmicas repetitivas

Más detalles

Aritmética de Enteros

Aritmética de Enteros Aritmética de Enteros La aritmética de los computadores difiere de la aritmética usada por nosotros. La diferencia más importante es que los computadores realizan operaciones con números cuya precisión

Más detalles

Unidad 3: Personalizar Excel

Unidad 3: Personalizar Excel Unidad 3: Personalizar Excel 3.0 Introducción Puesto que está realizando este curso, posiblemente usted pase o crea que va a pasar un tiempo significativo trabajando con Excel. Por lo tanto, debería saber

Más detalles

ESTRUCTURAS ALGORITMICAS

ESTRUCTURAS ALGORITMICAS ESTRUCTURAS ALGORITMICAS El proceso de resolución de problemas en un ordenador conduce a la escritura de un programa y su ejecución. Las fases en el desarrollo de un programa pueden resumirse de la siguiente

Más detalles

Tema 4. Probabilidad Condicionada

Tema 4. Probabilidad Condicionada Tema 4. Probabilidad Condicionada Presentación y Objetivos. En este tema se dan reglas para actualizar una probabilidad determinada en situaciones en las que se dispone de información adicional. Para ello

Más detalles

Diseño de una calculadora

Diseño de una calculadora DEPARTAMENTO DE TECNOLOGÍA ELECTRÓNICA ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA Diseño de una calculadora Sistemas Digitales Avanzados 1. Introducción y objetivos El propósito general de esta

Más detalles

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

Procesadores Superescalares: Paralelismo Implícito a Nivel de Instrucción Tema 7 Procesadores Superescalares: Paralelismo Implícito a Nivel de Instrucción Se denomina arquitectura superescalar a aquella implementación capaz de ejecutar más de una instrucción por ciclo de reloj.

Más detalles

PROGRAMAS PARA LA CLASSPAD MANAGER.

PROGRAMAS PARA LA CLASSPAD MANAGER. PROGRAMAS PARA LA CLASSPAD MANAGER. BUSCA DIVISORES Vamos a preparar un programa sencillo, cuya misión es buscar los divisores de un número. Primero lo prepararemos con el Classpad Manager del ordenador,

Más detalles

Procesadores segmentados. El DLX.

Procesadores segmentados. El DLX. Procesadores segmentados. El DLX. Curso 2011-2012 Características de las Arquitecturas Tipos de Arquitectura Organización de la Memoria Direccionamiento de Memoria Operaciones en el Repertorio de Instrucciones

Más detalles

DIAGRAMAS DE FLUJOS. Qué son Los Diagramas de Flujo y Para qué se Usan?

DIAGRAMAS DE FLUJOS. Qué son Los Diagramas de Flujo y Para qué se Usan? DIAGRAMAS DE FLUJOS Los diagramas de flujo representan la secuencia o los pasos lógicos para realizar una tarea mediante unos símbolos. Dentro de los símbolos se escriben los pasos a seguir. Un diagrama

Más detalles

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA APUNTES DE JAVA FUNCIONAMIENTO DE UN PROGRAMA Assembler Ensamblador Ejecuta Programador Programa fuente BASIC Interprete Ejecuta C, C++, Pascal Compilador Compila Ejecuta Programa fuente Programa Objeto

Más detalles

Manipulación de procesos

Manipulación de procesos Manipulación de procesos Las primeras computadoras solo podían manipular un programa a la vez. El programa tenía control absoluto sobre todo el sistema. Con el desarrollo vertiginoso del hardware ese panorama

Más detalles

SISTEMAS DE NUMERACION

SISTEMAS DE NUMERACION SISTEMAS DE NUMERACION INTRODUCCION El número de dígitos de un sistema de numeración es igual a la base del sistema. Sistema Base Dígitos del sistema Binario 2 0,1 Octal 8 0,1,2,3,4,5,6,7 Decimal 10 0,1,2,3,4,5,6,7,8,9

Más detalles

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Tema 2 Conceptos básicos de programación. Fundamentos de Informática Tema 2 Conceptos básicos de programación Fundamentos de Informática Índice Metodología de la programación Programación estructurada 2 Pasos a seguir para el desarrollo de un programa (fases): Análisis

Más detalles

Ejercicios de Arquitectura de Computadoras

Ejercicios de Arquitectura de Computadoras Ejercicios Arquitectura Computadoras José Garzía 9 En este tipo ejercicios bemos tener siempre presentes estas tres ecuaciones: MP ( en Memoria Principal ) Cantidad en la Memoria Principal por Cantidad

Más detalles

Anexo. Control de errores

Anexo. Control de errores Anexo. Control de errores Tipos de errores Los errores en un programa o algoritmo se pueden clasificar de la siguiente manera Errores de compilación Los errores de compilación no permiten la ejecución

Más detalles

Resolución de problemas mediante ecuaciones.

Resolución de problemas mediante ecuaciones. Resolución de problemas mediante ecuaciones. 1.- La suma de un número con el doble de ese mismo número es 72. Cuál es ese número? 2.- Un señor compró 2 kilos de papas y 3 de tomates. El kilo de papas costaba

Más detalles

Elaboración de Documentos en Procesadores de Textos

Elaboración de Documentos en Procesadores de Textos Las tablas permiten organizar la información en filas y columnas, de forma que se pueden realizar operaciones y tratamientos sobre las filas y columnas. Por ejemplo, obtener el valor medio de los datos

Más detalles

Qué es un Procesador de textos? Iniciar Word. Microsoft Word Microsoft Office 2010

Qué es un Procesador de textos? Iniciar Word. Microsoft Word Microsoft Office 2010 Microsoft Word 2010 Qué es un Procesador de textos? Un procesador de textos es una herramienta que sirve para el manejo de textos en general. Con un programa como éste es posible crear desde una carta

Más detalles

Medidas de centralización

Medidas de centralización 1 1. Medidas de centralización Medidas de centralización Hemos visto cómo el estudio del conjunto de los datos mediante la estadística permite realizar representaciones gráficas, que informan sobre ese

Más detalles

Registros de desplazamiento

Registros de desplazamiento Registros de desplazamiento Definición de registro de desplazamiento básico Tipos de registro de desplazamiento Configuraciones específicas Aplicaciones más típicas VHDL Ejercicio propuestos Definición

Más detalles

Diagramas de secuencia

Diagramas de secuencia Facultad de Ingeniería Departamento de Ingeniería de Sistemas y Computación Diagramas de secuencia Fragmentos Combinados: caminos alternativos Departamento de Ingeniería de Sistemas y Computación - Universidad

Más detalles

ESTRUCTURA BÁSICA DE UN ORDENADOR

ESTRUCTURA BÁSICA DE UN ORDENADOR ESTRUCTURA BÁSICA DE UN ORDENADOR QUÉ ES UN ORDENADOR? Un ordenador es una máquina... QUÉ ES UN ORDENADOR? Un ordenador es una máquina... QUÉ ES UN ORDENADOR? Un ordenador es una máquina... Qué son los

Más detalles

Matemáticas 2º E.S.P.A. Pág.1 C.E.P.A. Plus Ultra. Logroño

Matemáticas 2º E.S.P.A. Pág.1 C.E.P.A. Plus Ultra. Logroño ALGEBRA 1. LETRAS EN VEZ DE NÚMEROS En muchas tareas de las matemáticas es preciso trabajar con números de valor desconocido o indeterminado. En esos casos, los números se representan por letras y se operan

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

Funciones básicas del depurador

Funciones básicas del depurador Funciones básicas del depurador Con frecuencia, los alumnos piensan que cuando su programa no tiene errores de compilación (está correctamente escrito) entonces ya es correcto. Muchas veces esto no es

Más detalles

Pipeline (Segmentación)

Pipeline (Segmentación) Pipeline (Segmentación) Segmentación (Pipeline) Es una técnica de implementación por medio de la cual se puede traslapar la ejecución de instrucciones. En la actualidad la segmentación es una de las tecnologías

Más detalles

Para convertir un decimal a un binario se necesita la siguiente tabla.

Para convertir un decimal a un binario se necesita la siguiente tabla. Conversiones Conversión de Decimal a Binario Para convertir un decimal a un binario se necesita la siguiente tabla. Para convertir el 33: Primero: Se busca en la tabla un número igual o menor a 33. Segundo:

Más detalles

Cristian Blanco

Cristian Blanco UNIDAD DIDÁCTICA 8. ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS. DIAGRAMAS DE COMPORTAMIENTO En el siguiente enlace tienes una descripción y algunos ejemplos de todos los diagramas UML.: http://jms32.eresmas.net/tacticos/uml/umlindex.html

Más detalles

La resolución de un problema

La resolución de un problema CAP. 2. ALGORITMOS Y PROGRAMAS 2.1. Solución de problemas por computadora La resolución de problemas por computadora, es importante para que las personas o usuarios aprendan a programar de manera general,

Más detalles

Estructuras Repetitivas

Estructuras Repetitivas Estructuras Repetitivas Se solicita al operador que ingrese tres números enteros cualesquiera. En base a estos números, mostrar por pantalla cual es el mayor de todos. Diag. De Flujos Pseudocódigo Matlab

Más detalles

TEMA 1. MATRICES, DETERMINANTES Y APLICACIÓN DE LOS DETERMINANTES. CONCEPTO DE MATRIZ. LA MATRIZ COMO EXPRESIÓN DE TABLAS Y GRAFOS.

TEMA 1. MATRICES, DETERMINANTES Y APLICACIÓN DE LOS DETERMINANTES. CONCEPTO DE MATRIZ. LA MATRIZ COMO EXPRESIÓN DE TABLAS Y GRAFOS. TEMA 1. MATRICES, DETERMINANTES Y APLICACIÓN DE LOS DETERMINANTES. 1. MATRICES. CONCEPTO DE MATRIZ. LA MATRIZ COMO EXPRESIÓN DE TABLAS Y GRAFOS. DEFINICIÓN: Las matrices son tablas numéricas rectangulares

Más detalles

Instituto Tecnológico de Morelia

Instituto Tecnológico de Morelia Instituto Tecnológico de Morelia Arquitectura de Computadoras Unidad 1a Programa 1 Modelo de arquitecturas de cómputo. 1.1 Modelos de arquitecturas de cómputo. 1.1.1 Clásicas. 1.1.2 Segmentadas. 1.1.3

Más detalles

TEMA 1.- POLINOMIOS Y FRACCIONES ALGEBRAICAS

TEMA 1.- POLINOMIOS Y FRACCIONES ALGEBRAICAS TEMA 1.- POLINOMIOS Y FRACCIONES ALGEBRAICAS 1.- POLINOMIOS Recordemos que un monomio es una expresión algebraica (combinación de letras y números) en la que las únicas operaciones que aparecen entre las

Más detalles

Sistemas Electrónicos Digitales

Sistemas Electrónicos Digitales Sistemas Electrónicos Digitales Profesor: Carlos Herrera C. I. Unidad COMPUERTAS LOGICAS Las compuertas lógicas son dispositivos que operan con aquellos estados lógicos Binarios y que funcionan igual que

Más detalles

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros Práctica 3. Paso de parámetros entre subrutinas 1. Objetivo de la práctica El objetivo de esta práctica es que el estudiante se familiarice con la programación en ensamblador y el convenio de paso de parámetros

Más detalles

Ejemplo, generación de #s aleatorios

Ejemplo, generación de #s aleatorios Ejemplo, generación de #s aleatorios Supón que tienes un generador de números aleatorios enteros [0,2] con distribución uniforme, y tu necesitas generar números con distribución uniforme [0,4]. Alguien

Más detalles

TABLAS Y GRÁFICAS Localización de coordenadas tabulación Localización de coordenadas F1. Tabulación F2.

TABLAS Y GRÁFICAS Localización de coordenadas tabulación Localización de coordenadas F1. Tabulación F2. TABLAS Y GRÁFICAS Se trata de un software de apoyo didáctico, ideal para los grados de secundaria cuando se les comienza a enseñar a graficar y tabular funciones. Consta de dos partes: Localización de

Más detalles

Profesorado de Nivel Medio y Superior en Biología Matemática - 1º Cuatrimestre Año 2013 FUNCIÓN CUADRÁTICA

Profesorado de Nivel Medio y Superior en Biología Matemática - 1º Cuatrimestre Año 2013 FUNCIÓN CUADRÁTICA Matemática - º Cuatrimestre Año 0 FUNCIÓN CUADRÁTICA Hemos definido anteriormente la función lineal como una función f: R R de la forma f()a+b con a R y b R, que se representa en el plano mediante una

Más detalles

Los números enteros Z = {,-3, -2, -1, 0, 1, 2, 3, }

Los números enteros Z = {,-3, -2, -1, 0, 1, 2, 3, } Los números enteros La unión de los números naturales y los enteros negativos forma el conjunto de los números enteros, que se designa con la palabra Z. Está constituido por infinitos elementos y se representan

Más detalles

Tema 14: Sistemas Secuenciales

Tema 14: Sistemas Secuenciales Tema 14: Sistemas Secuenciales Objetivos: (CONTADORES) Introducción. Características de los contadores. Contadores Asíncronos. Contadores Síncronos. 1 INTRODUCCIÓN Los contadores son sistemas secuenciales

Más detalles

Ficha de Aprendizaje N 13

Ficha de Aprendizaje N 13 Ficha de Aprendizaje N 13 Curso: Lógica y lenguaje de programación Tema: Fundamentos de programación Duración: 2 horas pedagógicas Logros de aprendizaje Identifica los diferentes tipos de operadores que

Más detalles

Tema 1: MATRICES. OPERACIONES CON MATRICES

Tema 1: MATRICES. OPERACIONES CON MATRICES Tema 1: MATRICES. OPERACIONES CON MATRICES 1. DEFINICIÓN Y TIPO DE MATRICES DEFINICIÓN. Una matriz es un conjunto de números reales dispuestos en filas y columnas. Si en ese conjunto hay m n números escritos

Más detalles

UNIDAD 6.- PROGRAMACIÓN LINEAL

UNIDAD 6.- PROGRAMACIÓN LINEAL UNIDAD 6.- PROGRAMACIÓN LINEAL 1. INECUACIONES LINEALES CON DOS INCÓGNITAS Una inecuación de primer grado con dos incógnitas es una inecuación que en forma reducida se puede expresar de la siguiente forma:

Más detalles

Programación. Tema 8: Tablas Hash. Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el????

Programación. Tema 8: Tablas Hash. Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el???? Programación. Tema : Tablas Hash /Mayo/ Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el???? Tema : Tabla Hash Las tabla hash aparece para conseguir

Más detalles

Diagrama a bloques de una computadora

Diagrama a bloques de una computadora Diagrama a bloques de una computadora Memoria Primaria Bus de Datos Bus de Dato s Bus de Direccione s Procesador Bus de Direcciones Memoria Secundaria Unidad de Control ALU Bus Interno Registros Bus de

Más detalles

Análisis y Manejo de datos en Excel 2013 con tablas, funciones y tablas dinámicas

Análisis y Manejo de datos en Excel 2013 con tablas, funciones y tablas dinámicas Análisis y Manejo de datos en Excel 2013 con tablas, funciones y tablas dinámicas José Mauricio Flores Selecciona la imagen para entrar Capítulo 1 Fórmulas y Funciones Continuar Fórmulas y Funciones Las

Más detalles

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación. ALGORITMOS SECUENCIALES: La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente

Más detalles