Arquitectura de Computadoras

Embed Size (px)

Citation preview

  • ARQUITECTURA DE COMPUTADORAS TEORIA

    1. Explique brevemente las siguientes representaciones: signo-magnitud, complemento a

    dos, sesgada. signo-magnitud El formato Signo/Magnitud est fundamentado en el sistema posicional binario que representa el signo del entero separado de su magnitud. Se separa un bit para representar el signo; la costumbre es asignar el valor de cero para representar positivo y uno para representar el signo negativo. El bit de signo puede ocupar cualquier posicin dentro de los bits de trabajo. Para propsito de estas lecciones, presumimos que el bit del signo ocupa la posicin de ms a la izquierda Complemento a dos El complemento a dos de un nmero N que, expresado en el sistema binario est compuesto por n dgitos, se define como:

    El total de nmeros positivos ser y el de negativos , siendo n el nmero mximo de bits. Sesgada El formato con Sesgo es un formato binario. Una vez establecemos el espacio de trabajo, el nmero de bits m al que escribimos la representacin, hemos fijado el total de representaciones posibles. Este total se reparte, mitad a enteros negativos, la otra mitad al cero y a nmeros positivos. Esto nos determina el entero negativo de tamao mayor (el mnimo) que podemos representar. El total de representaciones es , la mitad es , por lo tanto, el mnimo es - . La representacin con sesgo se define entonces mediante una traslacin de la recta numrica de manera que el mnimo se representa con 000...0, el que sigue con 000...01 y as. Esta traslacin se consigue aadiendo a todo nmero el sesgo de

    2. Explique cmo determinar si un numero es negativo en las siguientes representaciones: signo-magnitud, complemento a dos, sesgada.

    El bit con signo El bit del extremo izquierdo de un nmero binario afectado por un signo es el bit con signo, el

    cual le dice si el nmero es positivo o negativo. Un 0 es para signo positivo y un 1 para signo negativo. Sistema signo-magnitud

    Cuando un nmero binario afectado por un signo se representa en signo-magnitud, el bit del extremo izquierdo es el bit con signo y los restantes son los bits de magnitud Los bits de magnitud son los mismos para nmeros positivos y negativos. Por ejemplo, el nmero decimal +25 y -25 se expresa como un nmero binario afectado por signo de 8 bits, usando el sistema signo-magnitud como.

    El nmero decimal - 25 se expresa como: 10011001

  • Observe que la nica diferencia entre + 25 y - 25 es el bit con signo, pues los bits de magnitud estn en la forma binaria verdadera para nmeros positivos y negativos. En el sistema signo-magnitud, un nmero negativo tiene los mismos bits de magnitud que el positivo correspondiente, pero el bit con signo es un 1.

    Sistemas completos de 2s Los nmeros positivos en el sistema de complementos de 2s se representa de la misma manera que en los sistemas signo-magnitud y complementos de 1s. los nueceros negativos son los complementos de 2s de los positivos correspondientes. Tomemos de nuevo - 25 y expresmonos como el complemento de 2s de + 25 (00011001):

    11100111 En el sistema de complementos de 2s, un nmero negativo es el complemento de 2s del positivo correspondiente. En las computadoras, el sistema de complementos de 2s es el ms comn para manejar nmeros afectados por signo, por razones que se explicaran a continuacin En el sistema signo-magnitud, el - 39 se produce convirtiendo al bit con signo en 1 y dejando intactos los bits de magnitud. El nmero es:

    10100111 En el sistema de complementos de 2s, el - 39 se produce tomando el complemento de 2s de + 39 (11011000) En el sistema de complementos de 2s, el - 39 se produce tomando el complemento de 2s de +39 (00100111) como sigue:

    3. En qu consiste la regla de extensin del signo para los nmeros en complemento a dos?

    4. Cmo se obtiene el opuesto de un entero en la representacin de complementos a dos?

    5. En trminos generales. cunto produce el mismo entero la operacin de complemento a dos sobre un entero de N bits?

    6. Cul es la diferencia entre representacin en complemento a dos de un numero y el complemento a dos de un numero?

  • 7. Si al sumar tratamos los numero en complemento a dos como si fuesen enteros sin signo, el resultado, interpretado como numero en complemento a dos, es correcto. Por qu esto no se cumple para la multiplicacin?

    8. Cules son los cuatro elementos esenciales de un nmero en la notacin de cmo flotante?

    9. Qu ventaja supone utilizar la representacin sesgada para la parte del exponente de un nmero en como flotante?

    10. Qu diferencia existen entre desbordamiento positivo, desbordamiento del exponente, y desbordamiento de la parte significativa?

    11. Cules son los elementos bsicos de la suma y la resta en coma flotante?

    Suma En la suma existe la posibilidad de desbordamiento a infinito (overflow) del valor de la

    mantisa El desbordamiento se debe corregir desplazando la mantisa una posicin a la derecha y

    sumando uno al exponente Es importante controlar la posibilidad de que el exponente se desborde al realizar esta

    operacin, ya que obtendramos un nmero no representable

    Resta En la resta existe la posibilidad de obtener un nmero con uno o varios ceros en los bits

    ms significativos, lo que obligara a normalizar el resultado La normalizacin se realiza desplazando la mantisa a la izquierda y restando uno al

    exponente por cada posicin desplazada Es importante controlar la posibilidad de que el exponente se desborde a cero

    (underflow) Una posible solucin sera usar el formato no normalizado Si este formato tampoco es suficiente, entonces el nmero no es representable

    12. Indique un motivo para el uso de los bits de guarda.

    13. Enumere cuatro mtodos alternativos de redondeo de los resultados de una operacin de coma flotante.

    Redondeo al ms cercano (al par en caso de empate) Redondeo a ms infinito (por exceso) Redondeo a menos infinito (por defecto) Redondeo a cero (truncamiento)

  • PRACTICA

    1. Represente tanto en signo-magnitud como en complemento a dos, con 16 bits, los siguientes nmeros decimales: +512; -29.

    2. Represente en decimal los siguientes valores en complemento a dos: 1101011; 0101101. 3. Otra representacin utilizada a veces para los nmeros enteros es el complemento a

    uno. Los enteros positivos se representan de la misma forma que en signo-magnitud. Un entero negativo se representan tomando el complemento booleano de cada bit del correspondiente numero positivo.

    (a) Exprese una definicin de los nmeros en complemento a uno utilizando una suma Ponderada de bits, similar a las ecuaciones (9.1) (9.2).

    (b) Cul es el rango de nmeros que puede representarse en complemento a uno? (c) Defina un algoritmo que efectu la suma en aritmtica de complemento a uno

    4. Aada columnas a la tabla 9.1 para signo-magnitud y para complemento a uno. 5. Considere la siguiente operacin con una palabra binaria. Comenzar con el bit menos

    significativo. 6. Copiar todos los bits que son 0 hasta que se encuentra el primer 1. Que tambin se copia.

    A partir de este. Tomar el complemento de los bits siguientes. Cul es el resultado? 7. En la seccin 9.3 se define la operacin de complemento a dos como sigue: para calcular

    el complemento a dos de X, tomar el complemento booleano de cada bit de X, y despus sumar 1.

    (a) Compruebe que la siguiente definicin es equivalente. Para un entero X de n bits, el complemento a dos de X se obtiene considerando X como entero sin signo y calculando ( ).

    (b) Demuestre que la figura 9.2 puede utilizarse para ilustrar grficamente el punto anterior, mostrando cmo se usa el desplazamiento en el sentido de las agujas del reloj para realizar la substraccin.

    8. Considere los nmeros representados en complemento a dos con ocho bits y realice los

    siguientes clculos: (a) (b) (c) (d)

    9. Calcule las siguientes diferencias utilizando complemento a dos:

    (a) 111000 (b) 110011000 (c) 111100001111 (d) 11000011 -110011 -101110 -110011110011 -11101000 Es vlida la siguiente definicin alternativa de desbordamiento en aritmtica de complemento a dos? Si la OR exclusiva de los bits de acarreo anterior y posterior a la columna mas a la izquierda es 1, hay desbordamiento. En caso contrario no hay desbordamiento Compare las figuras 9.9 y 9.12. Por qu no se utiliza el bit C en la segunda? Dados e en notacion de complemento a dos (es decir, e ), calcule el producto con el algoritmo de booth. Use el algoritmo de Booth para multiplicar 23 (multiplicando) por 29 (multiplicador), donde cada nmero est representado con 7 bits. Demuestre que el producto de dos nmeros de digitos en base B produce un resultado de no ms de digitos.

  • Verifique la validez del algoritmo de divisin de binarios sin signo de la figura 9.16 mostrando los pasos implicados en el clculo de la divisin de la figura 9.15. Utilice una presentacin similar a la empleada en la figura 9.17. El algoritmo de divisin entera descrito en la seccin 9.3 se conoce con el nombre de mtodo de divisin con restablecimiento ya que el valor del registro A debe restablecer tras cada resta sin xito. Una aproximacin ligeramente ms compleja, denominada sin restablecimiento, evita las restas y sumas innecesarias. Proponga un algoritmo para este mtodo. En operaciones aritmticas con enteros, el cociente de dos enteros J y K es menor o igual que el cociente normal. Verdadero o falso? Divida entre en notacion binaria de complementos a dos utilizando palabras de 12 bits. Emplee el algoritmo descrito en la Seccion 9.3.

    (a) Considere una representacin de cmo fija que utiliza dgitos decimales, en la que la coma implica de la base puede estar en cualquier posicin (es decir, a la derecha del digito menos significativo, a la derecha del ms significativo, etc.). Cuntos dgitos decimales son necesarios para representar tanto la constante de Planck como el nmero de Avogadro ? La coma implcita de la base debe estar en la misma posicin en ambos casos.

    (b) Considere ahora un formato decimal de coma flotante con el exponente almacenado en una representacin sesgada, con un sesgo de 50. Se supone una representacin normalizada. Cunto dgitos decimales se requieren para representar las constantes anteriores en este formato de coma flotante? Exprese en formato de coma flotante IEEE de 332-bits los siguientes nmeros:

    (a) -5 (c) -15 (e) 1/16 (b) -6 (d) 384 (f) -1/32

    Los siguientes nmeros emplean el formato en coma flotante IEEE de 32 bits. Cules son sus valores decimales equivalentes?

    (a) 11000001111000000000000000000000 (b) 00111111010100000000000000000000 (c) 01000000000000000000000000000000

    Considere un formato en coma flotante del IEEE, pero reducido a 7 bits, con 3 bits para el exponente y 3 bits para la parte significativa. Liste sus 127 valores. Exprese los siguientes nmeros en el formato de coma flotante de 32 bits de IBM, que utiliza un exponente de 7 bits con una base implcita de 16 y un sesgo del exponente de 64 (40 en hexadecimal) Un nmero en coma flotante normalizado requiere que el digito mas a la izquierda sea distinto de cero: La coma implcita de las base est a la izquierda de dicho digito (a) 1,0 (b) 0,5

    (c) 1/64 (d) 0,0

    (e) -15,0 (f)

    (g) (h) 65535

    Cualquier representacin en coma flotante utilizada en computadores representa con exactitud solo ciertos nmeros, todos los dems deben aproximarse. Si A es el valor almacenado del valor real A, el error relativo, r, se expresa como:

    Represente la cantidad decimal +0,4 en el siguiente formato de coma flotante; base: 2; exponente; sesgado, 4 bits; parte significativa: 7 bits. Cul es el error relativo?

  • Si A= 1,427, encuentre el error relativo si A es truncado a 1,42 y si redondeado a 1,43. Cuando la gente habla de la imprecisin de la aritmtica en coma flotante, normalmente asocia los errores a la cancelacin que tiene lugar al restar cantidades muy aproximadas entre s. Pero cuando X e Y son aproximadamente iguales, la diferencia X-Y se obtiene con exactitud, sin error. Qu es lo que quiere decir exactamente a la gente? Los valores numricos A y B se almacenan en un computador como los aproximados A y B. Despreciando cualesquiera errores de truncamiento o de redondeo posteriores, pruebe que el error relativo del producto es aproximadamente la suma de los errores relativos de los factores. Uno de los errores ms serios en los clculos con computadores se produce al restar dos nmeros casi iguales. Considere A = 0,22288 y B = 0,22211. El computador trunca todos los valores a 4 dgitos decimales. Por tanto A = 0,2228 y B = 0,2221.

    (a) Cules son los errores relativos de A y B? (b) Cul es el error relativo de C = A- B?

    Para tener una nocin mas clara sobre los efectos de la denormalizacion y del desbordamiento a cero graduales, considere un sistema decimal que disponga de seis dgitos decimales para la parte significativa y que el nmero normalizado ms pequeo sea . Un nmero normalizado tiene un digito decimal distinto de cero a la izquierda del punto decimal. Realice los siguiente calculos y normalice los resultados. Comente los resultados.

    (a) (b) (c)

    Muestre como se realizan las siguientes sumas en coma flotante (en las que las partes significativas se truncan a cuatro dgitos decimales). Indique los resultados en la forma normalizada. (a ) (b) Muestre como se realizan las siguientes restas en coma flotante (en donde las partes significativas se truncan a cuatro dgitos decimales). Indique los resultados en la forma normalizada. (a ) (b) Muestre como se realizan los siguientes clculos en coma flotante (en donde las partes significativas se truncan a cuatro dgitos decimales). Indique los resultados en la forma normalizada. (a ) (b) Lenguaje ensamblador: Repertorio de instrucciones y uso de pilas (stacks) Teora Cules son los componentes tpicos de una instruccin maquina?

  • a) Buscar la instruccin en la memoria principal

    Se vuelca el valor del contador de programa sobre el bus de direcciones. Entonces la CPU pasa la instruccin de la memoria principal a travs del bus de datos al Registro de Datos de Memoria (MDR). A continuacin el valor del MDR es colocado en el Registro de Instruccin Actual (CIR), un circuito que guarda la instruccin temporalmente de manera que pueda ser decodificada y ejecutada.

    b) Decodificar la instruccin

    El decodificador de instruccin interpreta e implementa la instruccin. El registro de instruccin (IR) mantiene la instruccin en curso mientras el contador de programa (PC, program counter) guarda la direccin de memoria de la siguiente instruccin a ser ejecutada.

    Recogida de datos desde la memoria principal

    Se accede al banco de registros por los operandos (solo si es necesario)

    Se calcula el valor del operando inmediato con extensin de signo (solo si es necesario)

    Tambin se lee la direccin efectiva de la memoria principal si la instruccin tiene una direccin indirecta, y se recogen los datos requeridos de la memoria principal para ser procesados y colocados en los registros de datos.

    c) Ejecutar la instruccin

    A partir del registro de instruccin, los datos que forman la instruccin son decodificados por la unidad de control. sta interpreta la informacin como una secuencia de seales de control que son enviadas a las unidades funcionales relevantes de la CPU para realizar la operacin requerida por la instruccin.

    d) Almacenar o guardar resultados

    El resultado generado por la operacin es almacenado en la memoria principal o enviado a un dispositivo de salida dependiendo de la instruccin. Basndose en los resultados de la operacin, el contador de programa se incrementa para apuntar a la siguiente instruccin o se actualiza con una direccin diferente donde la prxima instruccin ser recogida.

    Qu posiciones de memorizacin pueden contener operandos de origen y de destino? Si una instruccin contiene cuatro direcciones Qu propsito podra tener cada direccin? Enumere y explique brevemente cinco aspectos importantes en el diseo del repertorio de instrucciones. Qu tipos de operandos son usuales en los repertorios de instrucciones maquina? Qu relacin existe entre el cdigo de caracteres IRA o ASCII y la representacin decimal empaquetada? Qu diferencia existe entre desplazamiento aritmtico y desplazamiento lgico?

  • Desplazamiento lgico los bits de un registro son desplazados (movidos) una o ms posiciones hacia la derecha o hacia la izquierda. Los bit que salen del registro por un extremo se pierden y en el otro extremo del registro se rellena con un bit cero por cada bit desplazado.

    Los desplazamientos aritmticos son similares a los desplazamientos lgicos, solo que los aritmticos estn pensados para trabajar sobre nmeros enteros con signo en representacin de complemento a dos en lugar de enteros sin signo. Los desplazamientos aritmticos permiten la multiplicacin y la divisin por dos, de nmeros enteros con signo, por una potencia de dos. Desplazar n bits hacia la izquierda o a la derecha equivale a multiplicar o dividir por 2n

    El desplazamiento aritmtico hacia la izquierda es exactamente igual al desplazamiento lgico hacia la izquierda. De hecho son dos nombres diferentes para exactamente la misma operacin. Al desplazar los bits una posicin hacia la izquierda es equivalente a una multiplicacin por 2 independientemente de si es un nmero entero con signo o sin signo. En los procesadores x86, el ensamblador tiene dos pnemnicos para el desplazamiento lgico y el aritmtico hacia la izquierda, pero cuando el programa es ensamblado, solo hay un opcode para ambos en las instrucciones en lenguaje de mquina.

    El desplazamiento aritmtico hacia la derecha es diferente al desplazamiento lgico hacia la derecha. En los enteros sin signo, para dividir por 2, se debe usar el desplazamiento lgico, el cual siempre agrega un 0 en el extremo izquierdo por cada desplazamiento de un bit hacia la derecha. En cambio, en los enteros con signo, se debe usar el desplazamiento aritmtico hacia la derecha, el cual copia el bit del signo (el bit ms significativo (MSB)) en el espacio vaco que queda en el extremo izquierdo cada vez que se hace un desplazamiento de un bit hacia la derecha. De esta manera, se divide efectivamente por 2 al entero con signo.

    Por qu son necesarias las instrucciones de control de flujo de ejecucin? Instrucciones de control de ujo son las que modican el secuenciamiento de la ejecucin de las instrucciones del programa. En general, el secuenciamiento es implcito, es decir, la siguiente instruccin en ejecutarse es la que est fsicamente detrs en el programa. Cuando esto no es as es por la accin de una instruccin de control de ujo. Todas las instrucciones que modican el ujo de la ejecucin manejan el contador de programa. Tambin, si la modicacin del ujo de instrucciones se hace de forma condicional, esta condicin vendr dada por los bits de estado (N, Z, V y C). Vemos, por tanto, que para las instrucciones de control de ujo hay dos variables fundamentales: el contador de programa y los bits de condicin.

  • Enumere y explique brevemente dos formas comunes de generar la condicin a comprobar en una instruccin de bifurcacin o salto condicional. Bifurcacin simple: Se trata de ejecutar unos comandos en caso de que se cumpla una condicin o nada en caso contrario. Lo cual viene expresado mediante el llamado "diagrama de flujo" as:

    Bifurcacin completa: Otro caso es ejecutar unos comandos en caso de que se cumpla una condicin o otros comandos en caso contrario. Lo cual viene expresado por "diagrama de flujo"

    Qu se entiende por anidamiento de procedimiento? El anidamiento de procedimientos es una tcnica fundamental utilizada en todo tipo de lenguajes de programacin (ensamblador, C, C++, Ada, Java, etc.), ya que permite que unos procedimientos utilicen las funcionalidades proporcionadas por otros, sin lmite alguno. El uso estandarizado del marco de pila garantiza el correcto funcionamiento de los procedimientos anidados. El nmero de procedimientos que se pueden anidar queda limitado exclusivamente por el tamao reservado para la pila.

    Es decir, el orden de ejecucin del

    programa que viene de arriba hacia

    abajo, al llegar a condicin , la

    evala y si la condicin resulta

    verdadera pasa a ejecutar comandos,

    mientras que si resulta falsa se salta

    ese conjunto de comandos y sigue

    ejecutando los dems hacia abajo.

    Es decir, el orden de ejecucin del

    programa que viene de arriba hacia

    abajo, al llegar a condicin, la evala

    y si la condicin resulta verdadera

    pasa a ejecutar Comandos (1),

    mientras que si resulta falsa ejecuta

    el bloque de comandos(2), a

    continuacin contina el programa

    en orden descendente

  • Enumere tres posibles ubicaciones para almacenar la direccin de retorno de un procedimiento. Almacenamiento de la direccin de retorno: Cuando una subrutina es llamada, la localizacin de la instruccin para retornar necesita ser guardada en alguna parte. Usando una pila para guardar la direccin de retorno tiene importantes ventajas sobre las otras alternativas. Una de ellas es que cada tarea tiene su propia pila, y as, la subrutina puede ser reentrante, es decir, puede estar activa simultneamente para diferentes tareas que hacen diferentes cosas. Almacenamiento local de datos: Una subrutina frecuentemente necesita memoria para almacenar los valores de las variables locales, las variables que son conocidas solamente dentro de la subrutina activa y no conservan sus valores despus de que la subrutina retorna. A menudo es conveniente asignar el espacio para las variables locales simplemente moviendo el tope de la pila lo suficiente para proporcionar el espacio necesario. Paso de parmetros: A menudo las subrutinas requieren que los valores para sus parmetros les sean suministrados por el cdigo que las llama, y no es infrecuente que el espacio para estos parmetros descanse en la pila de llamadas. Generalmente si solamente hay algunos pequeos parmetros, los registros del procesador sern usados para pasar los valores, pero si hay ms parmetros de los que se pueda manejar de esta manera, ser necesario espacio de memoria. Qu es un procedimiento reentrante? Una funcin (o un procedimiento) "reentrante" es aquella cuya ejecucin en una hebra (thread) puede verse interrumpida, ejecutarse en otra hebra y volver a completar normalmente la ejecucin en la primera hebra. Requiere que todos sus argumentos se le pasen por la pila y que sus variables locales se guarden tambin en la pila. Qu diferencia hay entre lenguaje ensamblador y lenguaje maquina? El lenguaje ensamblador: es un lenguaje de programacin de bajo nivel para los computadores, Microprocesadores, micro controlador y otros circuitos integrados programables. Implementa una representacin simblica de los cdigos de mquina binarios y otras constantes necesarias para programar una arquitecturada de CPU y constituye la representacin ms directa del cdigo mquina especfico para cada arquitectura legible por un programador. Esta representacin es usualmente definida por el fabricante de hardware, y est basada en los mnemnicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria y otras caractersticas del lenguaje. Un lenguaje ensamblador es por lo tanto especfico de cierta arquitectura de computador fsica (o virtual). Esto est en contraste con la mayora de los lenguajes de programacin de alto nivel, que idealmente son porttiles El lenguaje de mquina: o cdigo mquina es el sistema de cdigos directamente interpretable por un circuito microprogramable, como el microprocesador de una computadora o el microcontrolador de un autmata. Este lenguaje est compuesto por un conjunto de instrucciones que determinan acciones al ser tomadas por la mquina. Un programa consiste en una cadena de estas instrucciones ms un conjunto de datos sobre el cual se trabaja. Estas instrucciones son normalmente ejecutadas en secuencia, con eventuales cambios de flujo causados por el propio programa o eventos externos. El lenguaje de mquina es especfico de la arquitectura de la mquina, aunque el conjunto de instrucciones disponibles pueda ser similar entre arquitecturas distintas En qu consiste la notacin polaca inversa?

  • Su principio es el de evaluar los datos directamente cuando se introducen y manejarlos dentro de una estructura LIFO (Last In First Out), lo que optimiza los procesos a la hora de programar.

    Bsicamente la diferencias con el mtodo algebraico o notacin de infijo es que, al evaluar los datos directamente al introducirlos, no es necesario ordenar la evaluacin de los mismos, y que para ejecutar un comando, primero se deben introducir todos sus argumentos, as, para hacer una suma 'a+b=c' el RPN lo manejara a b +, dejando el resultado 'c' directamente.

    Ventajas Desventajas

    Los clculos se realizan secuencialmente segn se van introduciendo operadores, en vez de tener que esperar a escribir la expresin al completo. Debido a esto, se cometen menos errores al procesar clculos complejos.

    El proceso de apilacin permite guardar resultados intermedios para un uso posterior. Esta caracterstica permite que las calculadoras RPN computen expresiones de complejidad muy superior a la que alcanzan las calculadoras algebraicas.

    No requiere parntesis ni reglas de preferencia, al contrario que la notacin algebraica, ya que el proceso de apilamiento permite calcular la expresin por etapas.

    En las calculadoras RPN, el clculo se realiza sin tener que apretar la tecla "=" (aunque se requiere pulsar la tecla "Enter" para aadir cifras a la pila).

    El estado interno de la calculadora siempre consiste en una pila de cifras sobre las que se puede operar. Dado que no se pueden introducir operadores en la pila, la notacin polaca inversa es conceptualmente ms sencilla y menos dada a errores que otras notaciones.

    La adopcin casi universal de la notacin algebraica en los sistemas educativos hace que no haya muchas razones prcticas inmediatas para que los alumnos aprendan la notacin polaca inversa. No obstante, muchos estudiantes afirman que, una vez aprendida, la notacin polaca inversa simplifica en gran manera el clculo de expresiones complejas.

    Es difcil usar la notacin polaca inversa al escribir a mano, dada la importancia de los espacios para separar operandos. Se requiere un caligrafa muy clara para evitar confundir, por ejemplo, 12 34+ (=46) de 123 4+ (=127) o 1 234+ (=235).

    Las calculadoras RPN son relativamente raras. Forzado a usar una calculadora algebraica, el usuario de una calculadora RPN tpicamente comete errores ms frecuentemente debido a sus hbitos de uso normales. No obstante, esto no es un problema tan grave en la actualidad, debido a que muchos sistemas operativos pueden emular calculadoras RPN.

    Cul es la diferencia entre big endian y little endian?

  • Dependiendo del sistema operativo en que se trabaje, hay que considerar el orden de los bytes en los tipos de datos numricos que utilizan varios bytes. Existen dos formatos diferentes, denominados "Little Endian" y "Big Endian". "Little Endian" significa que el byte de menor peso se almacena en la direccin ms baja de memoria y el byte de mayor peso en la ms alta. As, un Long Int de 4 bytes Byte3 Byte2 Byte1 Byte0 se almacenar en memoria de la siguiente manera: Direccin Base +0 ===> Byte0 Direccin Base +1 ===> Byte1 Direccin Base +2 ===> Byte2 Direccin Base +3 ===> Byte3 Los procesadores Intel (usados en la mayora de los ordenadores personales) y los DEC Alpha RISC son "Little Endian".

    En el formato "Big Endian" el byte de mayor peso se almacena en la direccin ms baja de memoria y el byte de menor peso en la direccin ms alta. El Long Int anterior, se almacenara ahora as: Direccin Base +0 ===> Byte3 Direccin Base +1 ===> Byte2 Direccin Base +2 ===> Byte1 Direccin Base +3 ===> Byte0 La mayora de los sistemas UNIX, el protocolo de Internet TCP, los procesadores Motorola 680x0 (y, por lo tanto, los Macintosh), Hewlett-Packard PA-RISC, y Sun SuperSPARC son "Big Endian". El MIPS de Silicon Graphics y el procesador IBM/Motorola PowerPC son capaces de entender ambos sistemas, por lo que se dice que son "bi-endian".

    Ejercicios Un determinado microprocesador tiene palabras de un byte. Cules son los valores enteros ms pequeos y ms grandes que pueden representarse en las siguientes representaciones?

    a) Sin signo b) En signo-magnitud c) En complemento a uno d) En complemento a dos e) Decimal empaquetado sin signo f) Decimal empaquetado con signo

    De qu forma se redondean los nmeros al efectuar desplazamiento aritmticos a la derecha (por ejemplo, redondeo hacia +, redondeo hacia -, hacia cero, alejndose de cero)? Suponga que un procesador utiliza una pila para gestionar las llamadas a procedimientos y los retornos, puede eliminarse el contador de programa, utilizando la propia cabecera de la pila como contador de programa? Convierte las siguientes formulas de notacin polaca inversa a infija:

    a) b) c) d)

  • Convierte las siguientes formulas de infija a polaca inversa:

    a) b) c) d)

    Convierte la expresin A+B-C a notacin posfija utilizando el algoritmo de Dijkstra. Muestre los pasos seguidos. Es el resultado equivalente a (A+B)-C, o a A+ (B-C)? Importa? Explique (describa a que se refiere el trmino, caractersticas, ventajas y desventajas frente a las dems tcnicas) Memoria Virtual La memoria virtual es una tcnica de gestin de la memoria que permite que el sistema operativo disponga, tanto para el software de usuario como para s mismo, de mayor cantidad de memoria que est disponible fsicamente. La mayora de los ordenadores tienen cuatro tipos de memoria: registros en la CPU, la memoria cach (tanto dentro como fuera del CPU), la memoria RAM y el disco duro. En ese orden, van de menor capacidad y mayor velocidad a mayor capacidad y menor velocidad

    Tcnicas de administracin de memoria

    Paginada Los sistemas de paginacin de memoria dividen los programas en pequeas partes o pginas. Del mismo modo, la memoria es dividida en trozos del mismo tamao que las pginas llamados marcos de pgina. De esta forma, la cantidad de memoria desperdiciada por un proceso es el final de su ltima pgina, lo que minimiza la fragmentacin interna y evita la externa.

  • Paginada bajo demanda Un sistema de paginacin por demanda es similar a un sistema de paginacin con intercambios. Los procesos residen en memoria secundaria (en el disco). Cuando queremos ejecutar un proceso, lo metemos en memoria. Sin embargo, en vez de intercambiar todo el proceso hacia la memoria, utilizamos un intercambiador perezoso. Un intercambiador perezoso nunca reincorpora una pgina a memoria a menos que se necesite. Como ahora consideramos un proceso como una secuencia de pginas, en vez de un gran espacio contiguo de direcciones, el trmino intercambio es tcnicamente incorrecto

    Segmentada Mientras que la paginacin es transparente para el programador, y le proporciona un espacio mayor de direcciones, la segmentacin es normalmente visible para el programador, y proporciona una forma lgica de organizar los programas y los datos, y asociarle los privilegios y atributos de proteccin.

    Segmentada bajo demanda Permite compartir datos entre procesos, mediante el uso segmentos compartibles. Permite la proteccin de datos, el administrador otorga permisos a este segmento

    Ventajas: no hay fragmentacin interna. alto grado de multiprogramacin. gran espacio

    virtual para el proceso soporte de proteccion y comparticion

    Desventajas: sobrecarga por gestin compleja memoria

    Paginada y segmentada Tanto la paginacin como la segmentacin tienen sus ventajas. La paginacin elimina la fragmentacin externa y de este modo, aprovecha la memoria principal de forma eficiente. Adems, puesto que los fragmentos que se cargan y descargan de la memoria principal son de tamao fijo e iguales, es posible construir algoritmos se gestin de memoria sofisticados que aprovechen mejor el comportamiento de los programas. La segmentacin tiene las ventajas antes citadas, incluida la capacitacin de gestionar estructuras de datos que puedan crecer, la modularidad y el soporte de la comparticin y la proteccin. Para combinar las ventajas de ambas, algunos sistemas estn equipados con hardware del procesador y software del S.O

    Segmentada y paginada

  • Tanto la paginacin como la segmentacin tienen sus ventajas y desventajas. Tambin es posible combinar estos dos esquemas para mejorar ambos. Veamos como ejemplo el esquema del ordenador GE 645 con el sistema operativo Multics. Las direcciones lgicas estaban formadas a partir de un nmero de segmento de 18 bits y un desplazamiento de 16 bits. Aunque este esquema crea un espacio de direcciones correspondiente a una direccin de 34 bits, la tabla de segmentos tiene un tamao tolerable, puesto que el nmero variable de segmentos conduce naturalmente al uso de un Registro de Longitud de Tabla de Segmentos. Necesitamos tan solo el mismo nmero de entradas en la tabla de segmentos que segmentos; no tenemos por qu tener entradas vacas en la tabla de segmentos

    Tcnica Pipeline (en microprocesadores actuales Pentium IV, Core 2 duro, Core i 3, 5,7)

    Tcnica es un hardware que permite la CPU para llevar a cabo una bsqueda de uno o ms all de la siguiente instruccin a ejecutar. Estas declaraciones se colocan en una cola de memoria dentro del procesador (CPU) en espera de ser ejecutados, slo se puede iniciar cuando el otro extremo slo para la instruccin despus del procedimiento.

    En resumen, el proceso por el cual una instruccin de procesamiento se subdivide en etapas, ya que cada paso se lleva a cabo por una parte especializada de la CPU puede poner ms de una instruccin para la ejecucin simultnea. Esto hace un uso ms racional de la capacidad computacional con una velocidad considerable ganancia. Entre los problemas que enfrentan son la dependencia de las instrucciones anteriores y desvos que dificultan el proceso, as como la diferencia en la complejidad de las instrucciones que hacen que la misma variable puede tomar un tiempo para ejecutarse.

    La tcnica de tuberas es similar a una lnea de produccin de la fbrica. Cada instruccin de un microprocesador pasa a travs de varias fases hasta su ejecucin. Estas fases pueden ser:

    Descodificacin

    El acceso a memoria o registros

    El procesamiento aritmtico

    Microprogramacin (qu es, caractersticas, quien fue su inventor)

  • Una microprograma es una secuencia de datos binarios o microinstrucciones que representan seales elctricas internas de la unidad de control de un microprocesador. Unas pocas de estos microinstrucciones implementan una instruccin completa del microprocesador. Por ejemplo, la instruccin "sumar dos registros" tpica de cualquier microprocesador, se implementa mediante la activacin y desactivacin de un conjunto reducido de seales elctricas en el banco de registros y la unidad aritmtico-lgica. En concreto, el microprograma de esta instruccin significara:

    Activar las seales de seleccin de registro como primer operando de la ALU. Activar las seales de seleccin de registro como segundo operando de la ALU. Activar las seales de seleccin de operador para que corresponda a la suma en la ALU. Esperar unos ciclos de reloj hasta que la operacin est completada. Activar la seal de escritura en el registro acumulador

    Cableada Los microprocesadores "cableados": aquellos que tienen una unidad de control especficamente diseada sobre el silicio para un juego de instrucciones concreto.

    Programada Los microprocesadores "microprogramados": aquellos que tienen una unidad de control genrica o prediseada y que implementan un juego de instrucciones u otro dependiendo de una microprograma.

    Arquitecturas paralelas (explicar cada tipo de arquitectura, indique caractersticas y ventajas y desventajas y ejemplos de supercomputadoras actuales)

    La computacin paralela es una forma de cmputo en la que muchas instrucciones se ejecutan simultneamente,1 operando sobre el principio de que problemas grandes, a menudo se pueden dividir en unos ms pequeos, que luego son resueltos simultneamente (en paralelo). Hay varias formas diferentes de computacin paralela: paralelismo a nivel de bit, paralelismo a nivel de instruccin, paralelismo de datos y paralelismo de tareas. El paralelismo se ha empleado durante muchos aos, sobre todo en la computacin de altas prestaciones, pero el inters en ella ha crecido ltimamente debido a las limitaciones fsicas que impiden el aumento de la frecuencia. Como el consumo de energa y por consiguiente la generacin de calor de las computadoras constituye una preocupacin en los ltimos aos, la computacin en paralelo se ha convertido en el paradigma dominante en la arquitectura de computadores, principalmente en forma de procesadores multincleo.

    Las computadoras paralelas pueden clasificarse segn el nivel de paralelismo que admite su hardware: equipos con procesadores multincleo y multi-procesador que tienen mltiples elementos de procesamiento dentro de una sola mquina y los clsteres, MPPS y grids que utilizan varios equipos para trabajar en la misma tarea. Muchas veces, para acelerar la tareas especficas, se utilizan arquitecturas especializadas de computacin en paralelo junto a procesadores tradicionales

  • Clasicacion de los sistemas paralelos Clasicacion de Flynn Probablemente la clasicacion mas popular de computadores sea la clasicacion de Flynn. Esta taxonoma de las arquitecturas esta basada en la clasicacion atendiendo al ujo de datos e instrucciones en un sistema. Un ujo de instrucciones es el conjunto de instrucciones secuenciales que son ejecutadas por un unico procesador, y un ujo de datos es el ujo secuencial de datos requeridos por el ujo de instrucciones. Con estas consideraciones, Flynn clasica los sistemas en cuatro categoras: SISD (Single Instruction stream, Single Data stream) Flujo unico de instrucciones y ujo unico de datos. Este el concepto de arquitectura serie de Von Neumann donde, en cualquier momento, solo se esta ejecutando una unica instruccion. A menudo a los SISD se les conoce como computadores serie escalares. Todas las maquinas SISD poseen un registro simple que se llama contador de programa que asegura la ejecucion en serie del programa. Conforme se van leyendo las instrucciones de la memoria, el contador de programa se actualiza para que apunte a la siguiente instruccion a procesar en serie. Practicamente ningun computador puramente SISD se fabrica hoy en da ya que la mayora de procesadores modernos incorporan algun grado de paralelizacion como es la segmentacion de instrucciones o la posibilidad de lanzar dos instrucciones a un tiempo (superescalares).

    MISD (Multiple Instruction stream, Single Data stream) Flujo multiple de instrucciones y unico ujo de datos. Esto signica que varias instrucciones actuan sobre el mismo y unico trozo de datos. Este tipo de maquinas se pueden interpretar de dos maneras. Una es considerar la clase de maquinas que requeriran que unidades de procesamiento diferentes recibieran instrucciones distintas operando sobre los mismos datos. Esta clase de arquitectura ha sido clasicada por numerosos arquitectos de computadores como impracticable o imposible, y en estos momentos no existen ejemplos que funcionen siguiendo este modelo. Otra forma de interpretar los MISD es como una clase de maquinas donde un mismo ujo de datos uye a traves de numerosas unidades procesadoras. Arquitecturas altamente segmentadas, como los arrays sistolicos o los procesadores vectoriales, son clasicados a menudo bajo este tipo de maquinas. Las arquitecturas segmentadas, o encauzadas, realizan el procesamiento vectorial a traves de una serie de etapas, cada una ejecutando una funcion particular produciendo un resultado intermedio. La razon por la cual dichas arquitecturas son clasicadas como MISD es que los elementos de un vector pueden ser considerados como pertenecientes al mismo dato, y

  • todas las etapas del cauce representan multiples instrucciones que son aplicadas sobre ese vector.

    SIMD Single Instruction stream, Multiple Data stream Flujo de instruccion simple y ujo de datos multiple. Esto signica que una unica instruccion es aplicada sobre diferentes datos al mismo tiempo. En las maquinas de este tipo, varias unidades de procesado diferentes son invocadas por una unica unidad de control. Al igual que las MISD, las SIMD soportan procesamiento vectorial (matricial) asignando cada elemento del vector a una unidad funcional diferente para procesamiento concurrente. Por ejemplo, el calculo de la paga para cada trabajador en una empresa, es repetir la misma operacion sencilla para cada trabajador; si se dispone de un arquitectura SIMD esto se puede calcular en paralelo para cada trabajador. Por esta facilidad en la paralelizacion de vectores de datos (los trabajadores formaran un vector) se les llama tambien procesadores matriciales. MIMD (Multiple Instruction stream, Multiple Data stream) Flujo de instrucciones multiple y ujo de datos multiple. Son maquinas que poseen varias unidades procesadoras en las cuales se pueden realizar multiples instrucciones sobre datos diferentes de forma simultnea. Las MIMD son las mas complejas, pero son tambien las que potencialmente ofrecen una mayor eciencia en la ejecucion concurrente o paralela. Aqu la concurrencia implica que no solo hay varios procesadores operando simultaneamente, sino que ademas hay varios programas (procesos) ejecutandose tambien al mismo tiempo Multiprocesadores VENTAJAS Datos, sincronizacin y coordinacin usando variables globales. Modelo simple de programacin. Espacio nico de memoria. Una sola copia del sistema operativo (con planificador adecuado). Threads. Los sistemas operativos modernos coordinan la distribucin de los recursos. Es fcil mover procesos entre procesadores. Menos espacio. Menos potencia. Ms estable. DESVENTAJAS Performance de la memoria. Se soluciona con caches, pero aparece el problema de la coherencia de caches. La red de interconexin es complicada (acceso a memoria). Dinmica: bus, crossbar o multistage. Se satura rpidamente. Soporta pocos procesadores (2-16). Poco escalables. Clasificacin Lar arquitecturas multiprocesador pueden clasificarse segn la estrategia de distribucin de la memoria compartida, siempre con un nico mapa de memoria: UMA (SMP) La organizacin con bus es la ms utilizada en multiprocesadores multiple core. En esta categora entran tambin las organizaciones con memoria multipuerto (no escalable). La memoria compartida es accedida por todos los procesadores de la misma forma en que un monoprocesador accede a su memoria. Todos los procesadores son similares y tienen capacidades equivalentes. Todos los procesadores tienen el mismo tiempo de acceso a cualquier posicin de memoria. Comparten I/O.

  • NUMA

    Utiliza (como SMP) un nico espacio de direcciones, pero en este caso cada procesador es dueo

    de una parte de la memoria, a la cual puede acceder ms rpido. Utiliza pasaje de mensajes

    escondido. El problema de coherencia es ms complicado. El sistema operativo (ms

    sofisticado) puede ayudar mediante migracin de pginas. Sin coherencia de cache,

    multicomputador.

    COMA

    Como en NUMA, cada procesador tiene una parte de la memoria, pero es slo cache. El espacio

    de memoria completo es la suma de los caches. Utilizan un mecanismo de directorio distribudo.

    Tipos de paralelismo

    Paralelismo a nivel de bit

    Desde el advenimiento de la integracin a gran escala (VLSI) como tecnologa de fabricacin de chips de computadora en la dcada de 1970 hasta alrededor de 1986, la aceleracin en la

  • arquitectura de computadores se lograba en gran medida duplicando el tamao de la palabra en la computadora, la cantidad de informacin que el procesador puede manejar por ciclo.18 El aumento del tamao de la palabra reduce el nmero de instrucciones que el procesador debe ejecutar para realizar una operacin en variables cuyos tamaos son mayores que la longitud de la palabra. Por ejemplo, cuando un procesador de 8 bits debe sumar dos enteros de 16 bits, el procesador primero debe adicionar los 8 bits de orden inferior de cada nmero entero con la instruccin de adicin, a continuacin, aadir los 8 bits de orden superior utilizando la instruccin de adicin con acarreo que tiene en cuenta el bit de acarreo de la adicin de orden inferior, en este caso un procesador de 8 bits requiere dos instrucciones para completar una sola operacin, en donde un procesador de 16 bits necesita una sola instruccin para poder completarla.

    Histricamente, los microprocesadores de 4 bits fueron sustituidos por unos de 8 bits, luego de 16 bits y 32 bits, esta tendencia general lleg a su fin con la introduccin de procesadores de 64 bits, lo que ha sido un estndar en la computacin de propsito general durante la ltima dcada.

    Paralelismo a nivel de instruccin

    Un pipeline cannico de cinco etapas en una mquina RISC (IF = Pedido de Instruccin, ID =

    Decodificacin de instruccin, EX = Ejecutar, MEM = Acceso a la memoria, WB = Escritura)

    Un programa de ordenador es, en esencia, una secuencia de instrucciones ejecutadas por un procesador. Estas instrucciones puedenreordenarse y combinarse en grupos que luego son ejecutadas en paralelo sin cambiar el resultado del programa. Esto se conoce como paralelismo a nivel de instruccin. Los avances en el paralelismo a nivel de instruccin dominaron la arquitectura de computadores desde mediados de 1980 hasta mediados de la dcada de 1990.19

    Los procesadores modernos tienen ''pipeline'' de instrucciones de varias etapas. Cada etapa en el pipeline corresponde a una accin diferente que el procesador realiza en la instruccin correspondiente a la etapa; un procesador con un pipeline de N etapas puede tener hasta n instrucciones diferentes en diferentes etapas de finalizacin. El ejemplo cannico de un procesador segmentado es un procesador RISC, con cinco etapas: pedir instruccin, decodificar, ejecutar, acceso a la memoria y escritura. El procesador Pentium 4 tena un pipeline de 35 etapas.

    Adems del paralelismo a nivel de instruccin del pipelining, algunos procesadores pueden ejecutar ms de una instruccin a la vez. Estos son conocidos como procesadores superescalares. Las instrucciones pueden agruparse juntas slo si no hay dependencia de datos entre ellas. Elscoreboarding y el algoritmo de Tomasulo que es similar a scoreboarding pero hace uso del renombre de registros son dos de las tcnicas ms comunes para implementar la ejecucin fuera de orden y la paralelizacin a nivel de instruccin.

    Paralelismo de datos

    El paralelismo de datos es el paralelismo inherente en programas con ciclos, que se centra en la distribucin de los datos entre los diferentes nodos computacionales que deben tratarse en paralelo. La paralelizacin de ciclos conduce a menudo a secuencias similares de operaciones no necesariamente idnticas o funciones que se realizan en los elementos de una gran estructura de datos. 21 Muchas de las aplicaciones cientficas y de ingeniera muestran paralelismo de datos.

    Una dependencia de terminacin de ciclo es la dependencia de una iteracin de un ciclo en la salida de una o ms iteraciones anteriores. Las dependencias de terminacin de ciclo evitan la

  • paralelizacin de ciclos. Por ejemplo, considere el siguiente pseudocdigo que calcula los primeros nmeros de Fibonacci:

    Paralelismo de tareas

    El paralelismo de tareas es la caracterstica de un programa paralelo en la que clculos completamente diferentes se pueden realizar en cualquier conjunto igual o diferente de datos.21 Esto contrasta con el paralelismo de datos, donde se realiza el mismo clculo en distintos o mismos grupos de datos. El paralelismo de tareas por lo general no escala con el tamao de un problema.22

    Multiprocesadores simtricos (SMP) A medida que aumenta la siempre creciente demanda de mayores prestaciones, y conforme el coste de los microprocesadores se reduce, los fabricantes han introducido los sistemas SMP. El trmino SMP, sistema multiprocesador simtrico, se refiere a la arquitectura hardware del sistema multiprocesador y al comportamiento del sistema operativo que utiliza dicha arquitectura. Un SMP es un computador con las siguientes caractersticas: 1) Tiene dos o ms procesadores similares de capacidades comparables. 2) Los procesadores comparten la memoria principal y la E/S, y estn interconectados mediante un bus u otro tipo de sistema de interconexin, de manera que el tiempo de acceso a memoria es aproximadamente el mismo para todos los procesadores. 3) Todos los procesadores comparten los dispositivos de E/S, pero pueden hacerlo bien a travs de los mismos canales, o bien a travs de otros caminos de acceso al mismo dispositivo. 4) Todos los procesadores pueden desempear las mismas funciones (de ah el trmino simtrico). 5) El sistema est controlado por un sistema operativo que posibilita la interaccin entre los procesadores y sus programas. A continuacin se relacionan las ventajas potenciales de un SMP respecto a una arquitectura monoprocesador:

    Prestaciones: Si el trabajo a realizar por un computador puede organizarse de forma que diferentes partes puedan realizarse en paralelo, concurrentemente, entonces un sistema con varios procesadores proporcionar mejores prestaciones que uno con un slo procesador del mismo tipo.

    Disponibilidad: Como en un SMP todos los procesadores pueden realizar las mismas funciones, un fallo en un procesador no har que el computador se detenga.

    Crecimiento incremental: Se pueden aumentar las prestaciones del sistema aadiendo ms procesadores.

    Escalado: Los fabricantes pueden ofrecer una gama de productos con diferentes precios y prestaciones, en funcin del nmero de procesadores que configuran el sistema

    Los sistemas SMP poseen una caracterstica muy atractiva, y es que la existencia de varios procesadores es transparente al usuario. Es el sistema operativo el que posibilita la sincronizacin entre los procesadores, y la planificacin de los hilos o de los procesos, puesto que es el responsable de asignarlos a los distintos procesadores.

  • La organizacin de un sistema multiprocesador puede clasificarse de la siguiente forma:

    Tiempo compartido o Bus Comn. Memoria Multipuerto. Unidad de Control Central.

    Bus de tiempo compartido

    Es el mecanismo ms simple para implementar un sistema multiprocesador. La estructura e interfaces son bsicamente los mismos de un sistema con un procesador nico. Para facilitar las transferencias DMA desde los procesadores de I/O, se aaden las siguientes caractersticas:

    Direccionamiento: Se pueden distinguir los mdulos del bus para determinar la fuente y el destino de los datos.

    Arbitraje: Existe un mecanismo para arbitrar peticiones de control del bus, utilizando algn tipo de esquema de prioridades. Los mdulos I/O tambin pueden funcionar temporalmente como master.

    Tiempo Compartido: Cuando un mdulo est controlando el bus, los mdulos restantes no estn autorizados y deben suspender, si es necesario, la operacin hasta que se les asigne el acceso al bus.

    Las principales ventajas de esta estructura son:

    Simplicidad: ya que la estructura es la misma que en un sistema uniprocesador. Flexibilidad: Es fcil expandir el sistema aadiendo ms CPUs. Fiabilidad: El bus es esencialmente un medio pasivo, por lo que en principio no debe

    producir fallos en el sistema. Memoria multipuerto La aproximacin de memoria multipuerto permite el acceso independiente y directo a los mdulos de memoria principal por parte de cada CPU y mdulo I/O. Se necesita una lgica asociada a la memoria para resolver conflictos de acceso. El mtodo ms utilizado es asignar permanentemente prioridades designadas a cada puerto de memoria. Esta aproximacin es ms compleja que la aproximacin de bus, requiriendo gran cantidad de lgica aadida al sistema. Las caractersticas de funcionamiento son mejores puesto que cada procesador y cada I/O disponen de caminos independientes a cada mdulo de memoria. Otra

  • ventaja es la posibilidad de configurar porciones de memoria como privadas de una CPU y/o un mdulo I/O. Esto permite incrementar la seguridad contra accesos no autorizados y para el almacenamiento de rutinas de recuperacin en reas de memoria no modificables por otros procesadores Unidad de Control Central La unidad de control central proporciona canales de datos separados para cada sentido entre mdulos independientes: CPU, memoria y I/O. El controlador memoriza las peticiones e implementa funciones de arbitraje y temporizacin. Puede pasar tambin mensajes de control y estado entre CPUs, y alertar de modificacin de cachs. Puesto que toda la lgica de coordinacin del multiprocesador est concentrada en la unidad de control, los interfaces de I/O, memoria y CPU se descargan prcticamente de estas funciones, lo que le proporciona la flexibilidad y simplicidad de la aproximacin de bus. La principal desventaja es la complejidad de la unidad de control, y la posibilidad de convertirse en un cuello de botella. Clsters

    El trmino clster (del ingls cluster, "grupo" o "racimo") se aplica a los conjuntos o conglomerados de computadoras construidos mediante la utilizacin de hardwares comunes y que se comportan como si fuesen una nica computadora.

    Hoy en da desempean un papel importante en la solucin de problemas de las ciencias, las ingenieras y del comercio moderno.

    La tecnologa de clsteres ha evolucionado en apoyo de actividades que van desde aplicaciones de supercmputo y software de misiones crticas, servidores web y comercio electrnico, hasta bases de datos de alto rendimiento, entre otros usos.

    El cmputo con clsteres surge como resultado de la convergencia de varias tendencias actuales que incluyen la disponibilidad de microprocesadores econmicos de alto rendimiento y redes de alta velocidad, el desarrollo de herramientas de software para cmputo distribuido de alto rendimiento, as como la creciente necesidad de potencia computacional para aplicaciones que la requieran

    Los clsteres son usualmente empleados para mejorar el rendimiento y/o la disponibilidad por encima de la que es provista por un solo computador tpicamente siendo ms econmico que computadores individuales de rapidez y disponibilidad comparables.

  • De un clster se espera que presente combinaciones de los siguientes servicios:

    1. Alto rendimiento

    2. Alta disponibilidad

    3. Balanceo de carga

    4. Escalabilidad

    Beneficios de la tecnologa clster

    Las aplicaciones paralelas escalables requieren: buen rendimiento, baja latencia, comunicaciones que dispongan de gran ancho de banda, redes escalables y acceso rpido a archivos. Un clster puede satisfacer estos requisitos usando los recursos que tiene asociados a l.

    Los clsteres ofrecen las siguientes caractersticas a un costo relativamente bajo:

    Alto rendimiento Alta disponibilidad Alta eficiencia Escalabilidad

    La tecnologa clster permite a las organizaciones incrementar su capacidad de procesamiento usando tecnologa estndar, tanto en componentes de hardware como de software que pueden adquirirse a un costo relativamente bajo.

    Clasificacin de los clsteres

    El trmino clster tiene diferentes connotaciones para diferentes grupos de personas. Los tipos de clsteres, establecidos de acuerdo con el uso que se de y los servicios que ofrecen, determinan el significado del trmino para el grupo que lo utiliza. Los clsteres pueden clasificarse segn sus caractersticas:

    HPCC (High Performance Computing Clusters: clsteres de alto rendimiento).

    HA o HACC (High Availability Computing Clusters: clsteres de alta disponibilidad).

    HT o HTCC (High Throughput Computing Clusters: clsteres de alta eficiencia).

    Alto rendimiento: Son clsteres en los cuales se ejecutan tareas que requieren de gran capacidad computacional, grandes cantidades de memoria, o ambos a la vez. El llevar a cabo estas tareas puede comprometer los recursos del clster por largos periodos de tiempo.

    Alta disponibilidad: Son clsteres cuyo objetivo de diseo es el de proveer disponibilidad y confiabilidad. Estos clsteres tratan de brindar la mxima disponibilidad de los servicios que ofrecen. La confiabilidad se provee mediante software que detecta fallos y permite recuperarse frente a los mismos, mientras que en hardware se evita tener un nico punto de fallos.

    Alta eficiencia: Son clsteres cuyo objetivo de diseo es el ejecutar la mayor cantidad de tareas en el menor tiempo posible. Existe independencia de datos entre las tareas individuales. El retardo entre los nodos del clster no es considerado un gran problema.

    Los clsteres pueden tambin clasificar en:

    clsteres de IT comerciales (de alta disponibilidad y alta eficiencia) y

    clsteres cientficos (de alto rendimiento).

  • A pesar de las discrepancias a nivel de requisitos de las aplicaciones, muchas de las caractersticas de las arquitecturas de hardware y software, que estn por debajo de las aplicaciones en todos estos clsteres, son las mismas. Ms an, un clster de determinado tipo, puede tambin presentar caractersticas de los otros.

    Componentes de un clster

    En general, un clster necesita de varios componentes de software y hardware para poder funcionar:

    nodos almacenamiento sistemas operativos conexiones de red middleware protocolos de comunicacin y servicios aplicaciones ambientes de programacin paralela

    Acceso No uniforme a Memoria (NUMA) NUMA quiere decir Non-Uniform Memory Access, y se puede traducir como Acceso a Memria de modo No Uniforme. En entornos con multiples procesadores, puede ser visualizado como una modularizacin y divisin de la memria y los procesadores en "conjuntos". La ventaja de agregar muchos procesadores y mucha memria en una sola computadora es el costo se ahorra en motherboard, recursos de alimentacin, enfriamento, almacenamiento interno, chassis, etc. Actualmente, hay servidores que soportan un gran cantidad de RAM (terabytes) y tienen 2, 4, 8 y ms sockets para colocacin de procesadores, que actualmente son, como mnimo, quadcore. Los sistemas operativos tienden a aprovechar de la mejor manera posible un procesador, de modo que varios procesos que se ejecutan son asignados a procesadores distintos para que un buen balanceo de carga entre ellos ocurra, y ninguno se quede sobrecargado. A esta operacin llamamos de scheduling (o agendamiento). Abajo muestro un ejemplo de scheduling de 4 procesadores y la utilizacin de memria:

  • En este ejemplo, existen 3 puntos de tiempo (no me voy a detener en saber si son segundos, milisegundos, o lo que sea). En el punto de tiempo 1, existen 4 procesos ejecutando (Calculadora, Oracle y 2 procesos de Java, muy probablemente en hyperthreading). La memria tiene 32GB distribudos entre los procesos. El punto de tiempo 2 no tiene el Calc, y si un procesador libre. Fijense de que los procesos cambian de procesador, lo que es normal durante su vida en un OS. Como un proceso no est mas activo (el Calc) se libr 1Gb de ram que ocupaba, y un CPU est idle. En el punto de tiempo 3 se puede ver que el Oracle no est mas en ejecucin, y si ahora un Sql Server. El Java sigue su funcionamiento. Estes 3 ejemplos estn funcionando sobre una arquitectura UMA, o sea, todos los procesadores pueden acceder toda la memria, pero solo hay 1 ruta. Si bien puede ejecutar cosas en paralelo, nunca van a poder leer o escribir en la memria todos juntos, y esa es la desventaja del UMA. Por menor que sea el tiempo, una fraccin de segundos perdida por la CPU esperando que se desocupe el BUS para comunicarse con la RAM genera una latencia perceptible para las aplicaciones. El NUMA agrega otra perspectiva acerca del acceso de memria. Cada grupo de procesadores fsicos tienen acceso a solamente una parte de la memria fsica, por lo cual se distribuye en vrios canales el acceso a RAM. La desventaja es que para cada procesador hay menos memria disponible para acceso directo, pero la velocidad de acceso a RAM es ms alta. En NUMA en hardware crea nodos, o sea, conjuntos de procesadores con sus memrias privadas. As la disputa por el BUS diminuye, posibilitando un acceso mucho ms rpido a la RAM:

  • El nico problema del NUMA es en el caso de que un proceso especfico necesite ms RAM do que existe en el nodo donde se est ejecutando. En condiciones normales, es muy raro que un nico proceso necesite ms que eso, pero puede pasar. En este caso, la memria de otro nodo debera ser utilizada, lo que generar una lentitud, ya que la comunicacin deber pasar por el BUS compartido y tambin por el BUS interno del otro nodo utilizado. NUMA y la Virtualizacin Los hypervisors ya hace bastante tiempo tienen el conocimiento del NUMA y laburan para que, en el caso de que est activado en la BIOS, cada VM este contenida en un solo nodo, migrando las mismas en caso de necesidad de un nodo a otro. El VMware ESX 2.5 ya tena esta capacidad, y hasta hoy lo hace automaticamente, sin que el administrador tenga que especificar nada manualmente. Con las nuevas versiones de hypervisors, actualmente es comun tener lo que llamamos de "VM Monstruos" (as llamadas en el VMworld 2011 y representadas fisicamente como un gracioso mueco caminante en los pasillos), con mucha vRAM y muchos vCPUs. Eso puede hacer con que VMs tengan tamaos grandes lo suficiente para generar lentitud en sistemas UMA, o en NUMA, generar el hecho de que una nica VM pueda estar compartida entre 2 o ms nodos de CPU/RAM, com el ejemplo abajo:

  • Coherencia de cache y protocolo MESI (Explicar) El protocolo MESI, tambin conocido como protocolo Illinois, es un extendido protocolo de coherencia de cach y coherencia de memoria, que fue creado por Intel en el procesador Pentium para "dar soporte ms eficientemente a write-back en lugar del write-through de cach de CPUusado con anterioridad en el procesador 486 Estados

    Cada lnea de cach se marca con uno de los cuatro estados siguientes (codificados con dos bits adicionales):

    M - Modified (Modificado): La lnea de cach slo est en la cach actual, y est "sucia"; ha sido modificado el valor de la memoria principal. Es necesario que los datos sean escritos otra vez en la memoria principal antes de permitir cualquier otra lectura del estado de la memoria (ya no es vlida).

    E - Exclusive (Exclusivo): La lnea de cach slo se encuentra en la cach actual, pero est "limpia"; coincide con el valor de la memoria principal.

    S - Shared (Compartido): Indica que esta lnea de cach puede estar duplicada en otras cachs.

    I - Invalid (Invlido): Indica que esta lnea de cach no es vlida.

    Para cualquier par de cachs, los estados permitidos para una lnea de cach son los siguientes:

    Operaciones

    Se puede leer de cach en cualquier estado excepto en Invlidos. Una lnea invlida puede ser cogida (de los estados Compartido o Exclusivo) para satisfacer una lectura.

    Una escritura slo puede ser llevada a cabo si la lnea de cach est en estado Modificado o Exclusivo. Si est en estado Compartido todas las otras copias en otras cachs deben ser puestas en estado Invlido antes. Esto se hace habitualmente con una operacin broadcast.

    Una cach puede cambiar el estado de una lnea en cualquier momento, pasndolo ha estado Invlido. Una lnea Modificada debe ser escrita antes.

    Una cach que contenga una lnea en estado Modificado debe sondear (interceptar) todos los intentos de lectura (de todas las CPUs del sistema) a la memoria principal y copiar los datos que tiene. Esto se hace habitualmente forzando la lectura back off (cancelar el bus de transferencia a memoria), para luego escribir los datos en memoria principal y cambiar la lnea de cach ha estado Compartido.

    Una cach que contenga una lnea en estado Compartido debe tambin sondear todas las operaciones broadcast invlidas de otras CPUs, y descartar la lnea (cambindola ha estado Invlido) una vez hecho.

  • Una cach que contenga una lnea en estado Exclusivo tambin debe sondear todas las peticiones de lecturas del resto de CPUs y cambiar la lnea ha estado Compartido una vez hecho.

    Los estados Modificado y Exclusivo son siempre precisos: corresponden a los poseedores de la lnea correcta en el sistema. El estado Compartido puede ser impreciso: si alguna otra CPU descarga una lnea Compartida, y esta CPU es la nica que tiene una copia, la lnea no ser cambiada ha estado Exclusivo. (porque cambiar todas las lneas de cach de todas las CPUs no es prctico en un bus de sondeo broadcast)

    En ese sentido el estado Exclusivo es una optimizacin oportunista: si la CPU quiere modificar la lnea de cach ha estado Compartido, es necesario un intercambio por el bus para invalidar cualquier otra copia en cach. El estado Compartido permite modificar una lnea de cach sin ningn intercambio por el bus.

    Existen unos errores en el diagrama de estados de la imagen de arriba, en la transicin BusRd/Flush del estado S al I. Debera de ser BusRdX, ya que no tiene sentido que por una lectura, se realice una invalidacin en el resto de cachs para esa lnea. Por otro lado, los BusRd/Flush de las transiciones de E a S no deberan incluir el Flush, porque por una lectura no es necesario realizar una actualizacin de la lnea en memoria principal.