Arquitectura de Computadoras

October 31, 2018 | Author: hicaro_1125 | Category: Central Processing Unit, Bit, Parallel Computing, Assembly Language, Programming Language
Share Embed Donate


Short Description

Download Arquitectura de Computadoras...

Description

 ARQUITECTURA  ARQUITECTURA DE COMPUTADORAS COMPUTADORAS TEORIA

1. Explique brevemente las siguientes s iguientes representaciones: representaciones: signo-magnitud, complemento a dos, sesgada. signo-magnitud

El formato Signo/Magnitud está fundamentado en el sistema sis tema posicional binario que representa el signo del entero separado de su magnitud. magnitud. Se separa un bit para representar 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 puede ocupar cualquier cualquier posición dentro dentro de los bits de trabajo. trabajo. Para propósito de estas lecciones, presumimos presumimos que el bit del signo ocupa la posición de más a la izquierda Complemento a dos

El complemento a dos de un número N que, expresado en el sistema el  sistema binario está compuesto   por n dígitos, n dígitos, se  se define como:      El total de números positivos será    y el de negativos negativos , siendo n el número máximo de bits. Sesgada

El formato con Sesgo Sesgo es un formato binario. Una vez establecemos el espacio de trabajo, trabajo, el número de bits m al que escribimos la representación, representación, hemos fijado el total de representaciones posibles. Este total se reparte, reparte, mitad a enteros negativos, la otra mitad mitad al cero y a números positivos. Esto nos determina el entero negativo de tamaño mayor (el mínimo) que podemos representar. El total de representacione representacioness es  , la mitad es , por lo tanto, el mínimo es . La representación con sesgo sesgo se define entonces mediante una una traslación de la recta numérica de manera que el mínimo se representa con 000...0, el que sigue con 000...01 y así. Esta traslación se consigue añadiendo a todo número el sesgo de  2. Explique cómo determinar si un numero es negativo en las siguientes representaciones: signo-magnitud, signo-magnitud, complemento a dos, sesgada. El bit con signo

El bit del extremo izquierdo de un número binario afectado por un signo es el bit con signo, el cual le dice si el número es positivo o negativo. Un 0 es para signo positivo y un 1 para signo si gno negativo. Sistema signo-magnitud signo-magnitud

Cuando un número 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 números positivos y negativos. Por ejemplo, el número decimal +25 y -25 se expresa como un número binario afectado por signo de 8 bits, usando el sistema signo-magnitud signo-magnitud como.

El número 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 están en la forma binaria verdadera para números positivos y negativos. En el sistema signo-magnitud, un número negativo tiene los mismos bits de magnitud que el positivo correspondiente, correspondiente, pero el bit con signo es un 1. Sistemas completos de 2´s

Los números positivos en el sistema de complementos complementos de 2´s se representa de la misma manera que en los sistemas signo-magnitud y complementos de 1´s. los nueceros negativos son los complementos de 2´s de los positivos correspondientes. Tomemos de nuevo - 25 y expresémonos como el complemento de 2´s de + 25 (00011001): 11100111 En el sistema de complementos de 2´s, un número negativo es el complemento de 2´s del positivo correspondiente. correspondiente. En las computadoras, el sistema de complementos de 2´s es el más común para manejar números afectados afectados por signo, por razones que se explicaran a continuación En el sistema signo-magnitud, el - 39 se produce convirtiendo al bit con signo en 1 y dejando intactos los bits de magnitud. El número es: 10100111 En el sistema de complementos de 2´s, el - 39 se produce tomando el complemento de 2´s de + 39 (11011000) En el sistema de complementos de 2´s, el - 39 se produce tomando el complemento de 2´s de +39 (00100111) como sigue:

3. ¿En qué consiste la regla de extensión del signo para los números en complemento a dos?

4. ¿Cómo se obtiene el opuesto de un entero en la representación de complementos complementos a dos?

5. En términos generales. ¿cuánto produce el mismo entero la operación de complemento a dos sobre un entero de N bits?

6. ¿Cuál es la diferencia entre representación en complemento a dos de un numero y el complemento a dos de un numero?

Observe que la única diferencia entre + 25 y - 25 es el bit con signo, pues los bits de magnitud están en la forma binaria verdadera para números positivos y negativos. En el sistema signo-magnitud, un número negativo tiene los mismos bits de magnitud que el positivo correspondiente, correspondiente, pero el bit con signo es un 1. Sistemas completos de 2´s

Los números positivos en el sistema de complementos complementos de 2´s se representa de la misma manera que en los sistemas signo-magnitud y complementos de 1´s. los nueceros negativos son los complementos de 2´s de los positivos correspondientes. Tomemos de nuevo - 25 y expresémonos como el complemento de 2´s de + 25 (00011001): 11100111 En el sistema de complementos de 2´s, un número negativo es el complemento de 2´s del positivo correspondiente. correspondiente. En las computadoras, el sistema de complementos de 2´s es el más común para manejar números afectados afectados por signo, por razones que se explicaran a continuación En el sistema signo-magnitud, el - 39 se produce convirtiendo al bit con signo en 1 y dejando intactos los bits de magnitud. El número es: 10100111 En el sistema de complementos de 2´s, el - 39 se produce tomando el complemento de 2´s de + 39 (11011000) En el sistema de complementos de 2´s, el - 39 se produce tomando el complemento de 2´s de +39 (00100111) como sigue:

3. ¿En qué consiste la regla de extensión del signo para los números en complemento a dos?

4. ¿Cómo se obtiene el opuesto de un entero en la representación de complementos complementos a dos?

5. En términos generales. ¿cuánto produce el mismo entero la operación de complemento a dos sobre un entero de N bits?

6. ¿Cuál es la diferencia entre representación 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 multiplicación? 8. ¿Cuáles son los cuatro elementos elementos esenciales de un número en la notación de cómo flotante? 9. ¿Qué ventaja supone utilizar la representación representación sesgada para la parte del exponente de un número en como flotante? 10. ¿Qué diferencia existen entre desbordamiento desbordamiento positivo, desbordamiento del exponente, y desbordamiento de la parte significativa?

11. ¿Cuáles son los elementos básicos básicos de la suma y la resta en coma flotante?

Suma En la suma existe la posibilidad de desbordamiento desbordamiento a infinito (overflow) (overflow) del valor de la mantisa El desbordamiento se debe debe corregir desplazando desplazando la mantisa una posición a la derecha y sumando uno al exponente Es importante controlar la posibilidad de que el exponente se desborde al realizar esta operación, ya que obtendríamos un número no representable 

  

Resta En la resta existe la posibilidad de obtener un número número con uno o varios ceros en los bits más significativos, lo que obligaría a normalizar el resultado La normalización se realiza desplazando desplazando la mantisa a la izquierda y restando uno al exponente por cada posición desplazada Es importante controlar la posibilidad de que el exponente se desborde a cero (underflow) Una posible solución sería usar el formato no normalizado Si este formato tampoco tampoco es suficiente, entonces el número no es representable representable 

  

 

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

13. Enumere cuatro métodos alternativos alternativos de redondeo de los resultados de una operación de coma flotante.    

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

PRACTICA

1. Represente tanto en signo-magnitud como en complemento a dos, con 16 bits, los siguientes números decimales: +512; -29. 2. Represente en decimal los siguientes valores en complemento a dos: 1101011; 0101101. 3. Otra representación utilizada a veces para los números 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 definición de los números en complemento a uno utilizando una suma Ponderada de bits, similar a las ecuaciones (9.1) (9.2). (b) ¿Cuál es el rango de números que puede representarse en complemento a uno? (c) Defina un algoritmo que efectué la suma en aritmética de complemento a uno 4. Añada columnas a la tabla 9.1 para signo-magnitud y para complemento a uno. 5. Considere la siguiente operación 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 también se copia. A partir de este. Tomar el complemento de los bits siguientes. ¿Cuál es el resultado? 7. En la sección 9.3 se define la operación de complemento a dos como sigue: para calcular el complemento a dos de X, tomar el complemento booleano de cada bit de X, y después sumar 1. (a)

(b)

Compruebe que la siguiente definición 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 (  ). Demuestre que la figura 9.2 puede utilizarse para ilustrar gráficamente el punto anterior, mostrando cómo se usa el desplazamiento en el sentido de las agujas del reloj para realizar la substracción.

8. Considere los números representados en complemento a dos con ocho bits y realice los siguientes cálculos: (a)     (b)    (c)     (d)    9. Calcule las siguientes diferencias utilizando complemento a dos: (a) 111000 -110011

(b) 110011000 -101110

(c) 111100001111 -110011110011

(d) 11000011 -11101000

¿Es válida la siguiente definición alternativa de desbordamiento en aritmética 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 número está representado con 7 bits. Demuestre que el producto de dos números de  digitos en base B produce un resultado de no más de  digitos.

Verifique la validez del algoritmo de división de binarios sin signo de la figura 9.16 mostrando los pasos implicados en el cálculo de la división de la figura 9.15. Utilice una presentación similar a la empleada en la figura 9.17. El algoritmo de división entera descrito en la sección 9.3 se conoce con el nombre de método de división con restablecimiento ya que el valor del registro A debe restablecer tras cada resta sin éxito. Una aproximación ligeramente más compleja, denominada sin restablecimiento, evita las restas y sumas innecesarias. Proponga un algoritmo para este método. En operaciones aritméticas 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 representación de cómo fija que utiliza dígitos decimales, en la que la coma implica de la base puede estar en cualquier posición (es decir, a la derecha del digito menos significativo, a la derecha del más significativo, etc.). ¿Cuántos dígitos decimales son necesarios para representar tanto la constante de Planck     como el número de Avogadro      ? La coma implícita de la base debe estar en la misma posición en ambos casos. (b) Considere ahora un formato decimal de coma flotante con el exponente almacenado en una representación sesgada, con un sesgo de 50. Se supone una representación normalizada. ¿Cuánto dígitos 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 números: (a) -5 (c) -15 (e) 1/16 (b) -6 (d) 384 (f) -1/32 Los siguientes números emplean el formato en coma flotante IEEE de 32 bits. ¿Cuáles 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 números en el formato de coma flotante de 32 bits de IBM, que utiliza un exponente de 7 bits con una base implícita de 16 y un sesgo del exponente de 64 (40 en hexadecimal) Un número en coma flotante normalizado requiere que el digito mas a la izquierda sea distinto de cero: La coma implícita 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 representación en coma flotante utilizada en computadores representa con exactitud solo ciertos números, todos los demás 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. ¿Cuál 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 imprecisión de la aritmética en coma flotante, normalmente asocia los errores a la cancelación 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 numéricos 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 más serios en los cálculos con computadores se produce al restar dos números casi iguales. Considere A = 0,22288 y B = 0,22211. El computador trunca todos los valores a 4 dígitos decimales. Por tanto A’ = 0,2228 y B’ = 0,2221. (a) ¿Cuáles son los errores relativos de A’ y B’? (b) ¿Cuál es el error relativo de C’ = A’- B’? Para tener una noción mas clara sobre los efectos de la denormalizacion y del desbordamiento a cero graduales, considere un sistema decimal que disponga de seis dígitos decimales para la parte significativa y que el número normalizado más pequeño sea . Un número 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 dígitos 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 dígitos decimales). Indique los resultados en la forma normalizada. (a )       (b)        Muestre como se realizan los siguientes cálculos en coma flotante (en donde las partes significativas se truncan a cuatro dígitos decimales). Indique los resultados en la forma normalizada. (a )      (b)      

Lenguaje ensamblador: Repertorio de instrucciones y uso de pilas (stacks) Teoría ¿Cuáles son los componentes típicos de una instrucción maquina?

a) Buscar la instrucción en la memoria principal

Se vuelca el valor del contador de programa sobre el bus de direcciones. Entonces la CPU pasa la instrucción de la memoria principal a través del bus de datos al Registro de Datos de Memoria (MDR). A continuación el valor del MDR es colocado en el Registro de Instrucción Actual (CIR), un circuito que guarda la instrucción temporalmente de manera que pueda ser decodificada y ejecutada. b) Decodificar la instrucción

El decodificador de instrucción interpreta e implementa la instrucción. El registro de instrucción (IR) mantiene la instrucción en curso mientras el contador de programa (PC, program counter) guarda la dirección de memoria de la siguiente instrucción 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 extensión de signo (solo si es necesario) También se lee la dirección efectiva de la memoria principal si la instrucción tiene una dirección indirecta, y se recogen los datos requeridos de la memoria principal para ser procesados y colocados en los registros de datos.   

c) Ejecutar la instrucción

A partir del registro de instrucción, los datos que forman la instrucción son decodificados por la unidad de control. Ésta interpreta la información como una secuencia de señales de control que son enviadas a las unidades funcionales relevantes de la CPU para realizar la operación requerida por la instrucción. d)  Almacenar o guardar resultados

El resultado generado por la operación es almacenado en la memoria principal o enviado a un dispositivo de salida dependiendo de la instrucción. Basándose en los resultados de la operación, el contador de programa se incrementa para apuntar a la siguiente instrucción o se actualiza con una dirección diferente donde la próxima instrucción será recogida. ¿Qué posiciones de memorización pueden contener operandos de origen y de destino?

Si una instrucción contiene cuatro direcciones ¿Qué propósito podría tener cada dirección? Enumere y explique brevemente cinco aspectos importantes en el diseño del repertorio de instrucciones. ¿Qué tipos de operandos son usuales en los repertorios de instrucciones maquina? ¿Qué relación existe entre el código de caracteres IRA o ASCII y la representación decimal empaquetada?

¿Qué diferencia existe entre desplazamiento aritmético y desplazamiento lógico?

Desplazamiento lógico los bits de un registro son desplazados (movidos) una o más 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 aritméticos son similares a los desplazamientos lógicos, solo que los aritméticos están pensados para trabajar sobre números enteros con signo en representación de complemento a dos en lugar de enteros sin signo. Los desplazamientos aritméticos permiten la multiplicación y la división por dos, de números 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 aritmético hacia la izquierda es exactamente igual al desplazamiento lógico hacia la izquierda. De hecho son dos nombres diferentes para exactamente la misma operación. Al desplazar los bits una posición hacia la izquierda es equivalente a una multiplicación por 2 independientemente de si es un número entero con signo o sin signo. En los procesadores x86, el ensamblador tiene dos pnemónicos para el desplazamiento lógico y el aritmético hacia la izquierda, pero cuando el programa es ensamblado, solo hay un opcode para ambos en las instrucciones en lenguaje de máquina. El desplazamiento aritmético hacia la derecha es diferente al desplazamiento lógico hacia la derecha. En los enteros sin signo, para dividir por 2, se debe usar el desplazamiento lógico, 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 aritmético hacia la derecha, el cual copia el bit del signo (el bit más significativo (MSB)) en el espacio vacío 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 c ontrol de flujo de ejecución?

Instrucciones de control de flujo son las que modifican el secuenciamiento de la ejecución de las instrucciones del programa. En general, el secuenciamiento es implícito, es decir, la siguiente instrucción en ejecutarse es la que está físicamente detrás en el programa. Cuando esto no es así es por la acción de una instrucción de control de flujo. Todas las instrucciones que modifican el flujo de la ejecución manejan el contador de programa. También, si la modificación del flujo de instrucciones se hace de forma condicional, esta

condición vendrá dada por los bits de estado (N, Z, V y C). Vemos, por tanto, que para las instrucciones de control de flujo hay dos variables fundamentales: el contador de programa y los

bits de condición.

Enumere y explique brevemente dos formas comunes de generar la condición a comprobar en una instrucción de bifurcación o salto condicional. Bifurcación simple: Se trata de ejecutar unos comandos en caso de que se cumpla una

condición o nada en caso contrario. Lo cual viene expresado mediante el llamado "diagrama de flujo" así: Es decir, el orden de ejecución del  programa que viene de arriba hacia abajo, al llegar a condición , la evalúa y si la condición resulta verdadera pasa a ejecutar comandos, mientras que si resulta falsa se salta ese conjunto de comandos y sigue ejecutando los demás hacia abajo.

Bifurcación completa: Otro caso es ejecutar unos comandos en caso de que se cumpla una

condición o otros comandos en caso contrario. Lo cual viene expresado por "diagrama de flujo" Es decir, el orden de ejecución del  programa que viene de arriba hacia abajo, al llegar a condición, la evalúa y si la condición resulta verdadera  pasa a ejecutar Comandos (1), mientras que si resulta falsa ejecuta el bloque de comandos(2), a continuación continúa el programa en orden descendente

¿Qué se entiende por anidamiento de procedimiento?

El anidamiento de procedimientos es una técnica fundamental utilizada en todo tipo de lenguajes de programación (ensamblador, C, C++, Ada, Java, etc.), ya que permite que unos procedimientos utilicen las funcionalidades proporcionadas por otros, sin límite alguno. El uso estandarizado del marco de pila garantiza el correcto funcionamiento de los procedimientos anidados. El número de procedimientos que se pueden anidar queda limitado exclusivamente por el tamaño reservado para la pila.

Enumere tres posibles ubicaciones para almacenar la dirección de retorno de un procedimiento.  Almacenamiento de la dirección de retorno : Cuando una subrutina es llamada, la localización

de la instrucción para retornar necesita ser guardada en alguna parte. Usando una pila para guardar la dirección 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 simultáneamente 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 después 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 parámetros:  A menudo las subrutinas requieren que los valores para sus parámetros

les sean suministrados por el código que las llama, y no es infrecuente que el espacio para estos parámetros descanse en la pila de llamadas. Generalmente si solamente hay algunos pequeños parámetros, los registros del procesador serán usados para pasar los valores, pero si hay más parámetros de los que se pueda manejar de esta manera, será necesario espacio de memoria. ¿Qué es un procedimiento reentrante?

Una función (o un procedimiento) "reentrante" es aquella cuya ejecución en una hebra (thread) puede verse interrumpida, ejecutarse en otra hebra y volver a completar normalmente la ejecución en la primera hebra. Requiere que todos sus argumentos se le pasen por la pila y que sus variables locales se guarden también en la pila. ¿Qué diferencia hay entre lenguaje ensamblador y lenguaje maquina? El lenguaje ensamblador:  es un lenguaje de programación de bajo nivel para

los computadores, Microprocesadores, micro controlador y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitecturada de CPU y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador. Esta representación es usualmente definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico de cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel, que idealmente son portátiles El lenguaje de máquina : o código máquina es el sistema de códigos directamente interpretable

por un circuito microprogramable, como el microprocesador de una computadora o el microcontrolador de un autómata. Este lenguaje está compuesto por un conjunto de instrucciones que determinan acciones al ser tomadas por la máquina. Un programa consiste en una cadena de estas instrucciones más 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 máquina es específico de la arquitectura de la máquina, aunque el conjunto de instrucciones disponibles pueda ser similar entre arquitecturas distintas ¿En qué consiste la notación 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. Básicamente la diferencias con el método algebraico o notación de infijo es que, al evaluar los datos directamente al introducirlos, no es necesario ordenar la evaluación 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 manejaría a b +, dejando el resultado 'c' directamente.

Ventajas 

Los cálculos se realizan secuencialmente según se van introduciendo operadores, en vez de tener que esperar a escribir la expresión al completo. Debido a esto, se cometen menos errores al procesar cálculos complejos.



El proceso de apilación permite guardar resultados intermedios para un uso posterior. Esta característica permite que las calculadoras RPN computen expresiones de complejidad muy superior a la que alcanzan las calculadoras algebraicas.



No requiere paréntesis ni reglas de preferencia, al contrario que la notación algebraica, ya que el proceso de apilamiento permite calcular la expresión por etapas.



En las calculadoras RPN, el cálculo se realiza sin tener que apretar la tecla "=" (aunque se requiere pulsar la tecla "Enter" para añadir cifras a la pila).



Desventajas

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 notación polaca inversa es conceptualmente más sencilla y menos dada a errores que otras notaciones.

¿Cuál es la diferencia entre big endian y little endian?



La adopción casi universal de la notación algebraica en los sistemas educativos hace que no haya muchas razones prácticas inmediatas para que los alumnos aprendan la notación polaca inversa. No obstante, muchos estudiantes afirman que, una vez aprendida, la notación polaca inversa simplifica en gran manera el cálculo de expresiones complejas.



Es difícil usar la notación polaca inversa al escribir a mano, dada la importancia de los espacios para separar operandos. Se requiere un caligrafía 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 típicamente comete errores más frecuentemente debido a sus hábitos 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.

Dependiendo del sistema operativo en que se trabaje, hay que considerar el orden de los bytes en los tipos de datos numéricos 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 dirección más baja de memoria y el byte de mayor peso en la más alta. Así, un Long Int de 4 bytes Byte3 Byte2 Byte1 Byte0 se almacenará en memoria de la siguiente manera: Dirección Base +0 ===> Byte0 Dirección Base +1 ===> Byte1 Dirección Base +2 ===> Byte2 Dirección Base +3 ===> Byte3 Los procesadores Intel (usados en la mayoría 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 dirección más baja de memoria y el byte de menor peso en la dirección más alta. El Long Int anterior, se almacenaría ahora así: Dirección Base +0 ===> Byte3 Dirección Base +1 ===> Byte2 Dirección Base +2 ===> Byte1 Dirección Base +3 ===> Byte0 La mayoría 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. ¿Cuáles son los valores enteros más pequeños y más grandes que pueden representarse en las siguientes representaciones? a) b) c) d) e) f)

Sin signo En signo-magnitud En complemento a uno En complemento a dos Decimal empaquetado sin signo Decimal empaquetado con signo ¿De qué forma se redondean los números al efectuar desplazamiento aritméticos a la derecha (por ejemplo, redondeo hacia +∞, redondeo hacia -∞, hacia cero, alejándose 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 notación polaca inversa a infija:

a) b) c) d)

                  

Convierte las siguientes formulas de infija a polaca inversa: a) b) c) d)

                         

Convierte la expresión A+B-C a notación 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 término, características, ventajas y desventajas frente a las demás técnicas) Memoria Virtual

La memoria virtual es una técnica de gestión 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 físicamente. La mayoría 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

Técnicas de administración de memoria



Paginada

Los sistemas de paginación de memoria dividen los programas en pequeñas partes o páginas. Del mismo modo, la memoria es dividida en trozos del mismo tamaño que las páginas llamados marcos de página. De esta forma, la cantidad de memoria desperdiciada por un proceso es el final de su última página, lo que minimiza la fragmentación interna y evita la externa.



Paginada bajo demanda

Un sistema de paginación por demanda es similar a un sistema de paginación 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 página a memoria a menos que se necesite. Como ahora consideramos un proceso como una secuencia de páginas, en vez de un gran espacio contiguo de direcciones, el término intercambio es técnicamente incorrecto 

Segmentada

Mientras que la paginación es transparente para el programador, y le proporciona un espacio mayor de direcciones, la segmentación es normalmente visible para el programador, y proporciona una forma lógica de organizar los programas y los datos, y asociarle los privilegios y atributos de protección. 

Segmentada bajo demanda

Permite compartir datos entre procesos, mediante el uso segmentos compartibles. Permite la protección de datos, el administrador otorga permisos a este segmento 

Ventajas: no hay fragmentación interna. alto grado de multiprogramación. gran espacio virtual para el proceso soporte de proteccion y comparticion



Desventajas: sobrecarga por gestión compleja memoria



Paginada y segmentada

Tanto la paginación como la segmentación tienen sus ventajas. La paginación elimina la fragmentación externa y de este modo, aprovecha la memoria principal de forma eficiente. Además, puesto que los fragmentos que se cargan y descargan de la memoria principal son de tamaño fijo e iguales, es posible construir algoritmos se gestión de memoria sofisticados que aprovechen mejor el comportamiento de los programas. La segmentación tiene las ventajas antes citadas, incluida la capacitación de gestionar estructuras de datos que puedan crecer, la modularidad y el soporte de la compartición y la protección. Para combinar las ventajas de ambas, algunos sistemas están equipados con hardware del procesador y software del S.O 

Segmentada y paginada

Tanto la paginación como la segmentación tienen sus ventajas y desventajas. También 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 lógicas estaban formadas a partir de un número de segmento de 18 bits y un desplazamiento de 16 bits. Aunque este esquema crea un espacio de direcciones correspondiente a una dirección de 34 bits, la tabla de segmentos tiene un tamaño tolerable, puesto que el número variable de segmentos conduce naturalmente al uso de un Registro de Longitud de Tabla de Segmentos. Necesitamos tan solo el mismo número de entradas en la tabla de segmentos que segmentos; no tenemos por qué tener entradas vacías en la tabla de segmentos

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

Técnica es un hardware que permite la CPU para llevar a cabo una búsqueda de uno o más allá de la siguiente instrucción a ejecutar. Estas declaraciones se colocan en una cola de memoria dentro del procesador (CPU) en espera de ser ejecutados, sólo se puede iniciar cuando el otro extremo sólo para la instrucción después del procedimiento. En resumen, el proceso por el cual una instrucción de procesamiento se subdivide en etapas, ya que cada paso se lleva a cabo por una parte especializada de la CPU puede poner más de una instrucción para la ejecución simultánea. Esto hace un uso más racional de la capacidad computacional con una velocidad considerable ganancia. Entre los problemas que enfrentan son la dependencia de las instrucciones anteriores y desvíos 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 técnica de tuberías es similar a una línea de producción de la fábrica. Cada instrucción de un microprocesador pasa a través de varias fases hasta su ejecución. Estas fases pueden ser:   

Descodificación El acceso a memoria o registros El procesamiento aritmético

Microprogramación (qué es, características, quien fue su inventor)

Una microprograma es una secuencia de datos binarios o microinstrucciones que representan señales eléctricas internas de la unidad de control de un microprocesador. Unas pocas de estos microinstrucciones implementan una instrucción completa del microprocesador. Por ejemplo, la instrucción "sumar dos registros" típica de cualquier microprocesador, se implementa mediante la activación y desactivación de un conjunto reducido de señales eléctricas en el banco de registros y la unidad aritmético-lógica. En concreto, el microprograma de esta instrucción significaría:



Activar las señales de selección de registro como primer operando de la ALU. Activar las señales de selección de registro como segundo operando de la ALU. Activar las señales de selección de operador para que corresponda a la suma en la ALU. Esperar unos ciclos de reloj hasta que la operación esté completada. Activar la señal de escritura en el registro acumulador



Cableada

   

Los microprocesadores "cableados": aquellos que tienen una unidad de control específicamente diseñada sobre el silicio para un juego de instrucciones concreto. 

Programada

Los microprocesadores "microprogramados": aquellos que tienen una unidad de control genérica o prediseñada y que implementan un juego de instrucciones u otro dependiendo de una microprograma.

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

La computación paralela es una forma de cómputo en la que muchas instrucciones se ejecutan simultáneamente,1 operando sobre el principio de que problemas grandes, a menudo se pueden dividir en unos más pequeños, que luego son resueltos simultáneamente (en paralelo). Hay varias formas diferentes de computación paralela: paralelismo a nivel de bit, paralelismo a nivel de instrucción, paralelismo de datos y paralelismo de tareas. El paralelismo se ha empleado durante muchos años, sobre todo en la computación de altas prestaciones, pero el interés en ella ha crecido últimamente debido a las limitaciones físicas que impiden el aumento de la frecuencia. Como el consumo de energía y por consiguiente la generación de calor de las computadoras constituye una preocupación en los últimos años, la computación en paralelo se ha convertido en el paradigma dominante en la arquitectura de computadores, principalmente en forma de procesadores multinúcleo. Las computadoras paralelas pueden clasificarse según el nivel de paralelismo que admite su hardware: equipos con procesadores multinúcleo y multi-procesador que tienen múltiples elementos de procesamiento dentro de una sola máquina y los clústeres, MPPS y grids que utilizan varios equipos para trabajar en la misma tarea. Muchas veces, para acelerar la tareas específicas, se utilizan arquitecturas especializadas de computación en paralelo junto a procesadores tradicionales

Clasificacion de los sistemas paralelos Clasificacion de Flynn

Probablemente la clasificaci´on m´as popular de computadores sea la clasificacion de Flynn. Esta taxonomıa de las arquitecturas est´a basada en la clasificaci´on atendiendo al flujo   de datos e instrucciones en un sistema. Un flujo de instrucciones es el conjunto de instrucciones secuenciales que son ejecutadas por un ´unico procesador, y un flujo de datos es el flujo secuencial de datos requeridos por el flujo de instrucciones. Con estas  consideraciones, Flynn clasifica los sistemas en cuatro categorıas: SISD (Single Instruction stream, Single Data stream) Flujo ´unico de instrucciones y flujo ´unico

de datos. Este el concepto de arquitectura serie de Von Neumann donde, en cualquier momento, s´olo se est´a ejecutando una ´unica instrucci´on. 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 ejecuci´on 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 instrucci´on a procesar en serie. Practicamente ningun computador puramente SISD se fabrica hoy en d´ıa ya que la mayorıa de proces adores modernos incorporan alg´un grado de paralelizaci´on como es la segmentaci´on de instrucciones o la posibilidad de lanzar dos instrucciones a un tiempo (superescalares). MISD (Multiple Instruction stream, Single Data stream) Flujo m´ultiple de instrucciones y ´unico flujo de datos. Esto significa que varias instrucciones act´uan 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 requerirıan que unidades de proc esamiento diferentes recibieran instrucciones distintas operando sobre los mismos datos. Esta clase de arquitectura ha sido clasificada 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 m´aquinas donde un mismo flujo de datos fluye a

traves de numerosas unidades procesadoras. Arquitecturas altamente segmentadas, como los arrays sist´olicos o los procesadores vectoriales, son clasificados a menudo bajo este tipo de m´aquinas. Las arquitecturas segmentadas, o encauzadas, realizan el procesamiento vectorial a trav´es de una serie de etapas, cada una ejecutando una funci´on particular produciendo un resultado intermedio. La raz´on por la cual dichas arquitecturas son clasificadas como MISD es que los elementos de un vector pueden ser considerados como pertenecientes al mismo dato, y

todas las etapas del cauce representan m´ultiples instrucciones que son aplicadas sobre ese vector. SIMD Single Instruction stream, Multiple Data stream Flujo de instruccion simple y flujo de datos multiple. Esto significa que una ´unica instrucci´on es aplicada sobre diferentes datos al mismo

tiempo. En las m´aquinas 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 c´alculo 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 paralelizaci´on de vectores de datos (los trabajadores formar´ıan   un vector) se les llama tambien procesadores matriciales. MIMD (Multiple Instruction stream, Multiple Data stream) Flujo de i nstrucciones multiple y flujo

de datos multiple. Son maquinas que poseen varias unidades procesadoras en las cuales se pueden realizar m´ultiples instrucciones sobre datos diferentes de forma simultánea. Las MIMD son las m´as complejas, pero son tambi´en las que potencialmente ofrecen una mayor efic iencia en la ejecuci´on concurrente o paralela. Aqu´ı la concurrencia implica que no s´olo hay varios

procesadores operando simultaneamente, sino que ademas hay varios programas (procesos) ejecutandose tambi´en al mismo tiempo

Multiprocesadores VENTAJAS

Datos, sincronización y coordinación usando variables globales. Modelo simple de programación. Espacio único de memoria. Una sola copia del sistema operativo (con planificador adecuado). Threads. Los sistemas operativos modernos coordinan la distribución de los recursos. Es fácil mover procesos entre procesadores. Menos espacio. Menos potencia. Más estable. DESVENTAJAS

Performance de la memoria. Se soluciona con caches, pero aparece el problema de la coherencia de caches. La red de interconexión es complicada (acceso a memoria). Dinámica: bus, crossbar o multistage. Se satura rápidamente. Soporta pocos procesadores (2-16). Poco escalables.

Clasificación

Lar arquitecturas multiprocesador pueden clasificarse según la estrategia de distribución de la memoria compartida, siempre con un único mapa de memoria: UMA (SMP)

La organización con bus es la más utilizada en multiprocesadores multiple core. En esta categoría entran también 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 posición de memoria. Comparten I/O.

NUMA

Utiliza (como SMP) un único espacio de direcciones, pero en este caso cada procesador es dueño de una parte de la memoria, a la cual puede acceder más rápido. Utiliza pasaje de mensajes escondido. El problema de coherencia es más complicado. El sistema operativo (más sofisticado) puede ayudar mediante migración de páginas. Sin coherencia de cache, multicomputador.

COMA

Como en NUMA, cada procesador tiene una parte de la memoria, pero es sólo cache. El espacio de memoria completo es la suma de los caches. Utilizan un mecanismo de directorio distribuído.

Tipos de paralelismo Paralelismo a nivel de bit

Desde el advenimiento de la integración a gran escala (VLSI) como tecnología de fabricación de chips de computadora en la década de 1970 hasta alrededor de 1986, la aceleración en la

arquitectura de computadores se lograba en gran medida duplicando el tamaño de la palabra en la computadora, la cantidad de información que el procesador puede manejar por ciclo.18 El aumento del tamaño de la palabra reduce el número de instrucciones que el procesador debe ejecutar para realizar una operación en variables cuyos tamaños 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 número entero con la instrucción de adición, a continuación, añadir los 8 bits de orden superior utilizando la instrucción de adición con acarreo que tiene en cuenta el bit de acarreo de la adición de orden inferior, en este caso un procesador de 8 bits requiere dos instrucciones para completar una sola operación, en donde un procesador de 16 bits necesita una sola instrucción para poder completarla. Históricamente, 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 introducción de procesadores de  64 bits, lo que ha sido un estándar en la computación de propósito general durante la última década. 

Paralelismo a nivel de instrucción

Un pipeline canónico de cinco etapas en una máquina RISC (IF = Pedido de Instrucción, ID = Decodificación de instrucción, 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 instrucción. Los avances en el paralelismo a nivel de instrucción dominaron la arquitectura de computadores desde mediados de 1980 hasta mediados de la década de 1990.19 Los procesadores modernos tienen ''pipeline'' de instrucciones de varias etapas. Cada etapa en el pipeline corresponde a una acción diferente que el procesador realiza en la instrucción correspondiente a la etapa; un procesador con un pipeline de N etapas puede tener hasta n instrucciones diferentes en diferentes etapas de finalización. El ejemplo canónico de un procesador segmentado es un procesador RISC, con cinco etapas: pedir instrucción, decodificar, ejecutar, acceso a la memoria y escritura. El procesador Pentium 4 tenía un pipeline de 35 etapas. Además del paralelismo a nivel de instrucción del pipelining, algunos procesadores pueden ejecutar más de una instrucción a la vez. Estos son conocidos como procesadores superescalares. Las instrucciones pueden agruparse juntas sólo 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 técnicas más comunes para implementar la ejecución fuera de orden y la paralelización a nivel de instrucción. 

Paralelismo de datos

El paralelismo de datos es el paralelismo inherente en programas con ciclos, que se centra en la distribución de los datos entre los diferentes nodos computacionales que deben tratarse en paralelo. La paralelización de ciclos conduce a menudo a secuencias similares de operaciones no necesariamente idénticas o funciones que se realizan en los elementos de una gran estructura de datos. 21 Muchas de las aplicaciones científicas y de ingeniería muestran paralelismo de datos. Una dependencia de terminación de ciclo es la dependencia de una iteración de un ciclo en la salida de una o más iteraciones anteriores. Las dependencias de terminación de ciclo evitan la

paralelización de ciclos. Por ejemplo, considere el siguiente pseudocódigo que calcula los primeros números de Fibonacci:



Paralelismo de tareas

El paralelismo de tareas es la característica de un programa paralelo en la que «cálculos 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 cálculo en distintos o mismos grupos de datos. El paralelismo de tareas por lo general no escala con el tamaño de un problema.22

Multiprocesadores simétricos (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 término SMP, sistema multiprocesador simétrico, 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 características: 1) Tiene dos o más procesadores similares de capacidades comparables. 2) Los procesadores comparten la memoria principal y la E/S, y están interconectados mediante un bus u otro tipo de sistema de interconexión, 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 través de los mismos canales, o bien a través de otros caminos de acceso al mismo dispositivo. 4) Todos los procesadores pueden desempeñar las mismas funciones (de ahí el término simétrico). 5) El sistema está controlado por un sistema operativo que posibilita la interacción entre los procesadores y sus programas. A continuación 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 sólo 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 añadiendo más procesadores. Escalado: Los fabricantes pueden ofrecer una gama de productos con diferentes precios y prestaciones, en función del número de procesadores que configuran el sistema

Los sistemas SMP poseen una característica muy atractiva, y es que la existencia de varios procesadores es transparente al usuario. Es el sistema operativo el que posibilita la sincronización entre los procesadores, y la planificación de los hilos o de los procesos, puesto que es el responsable de asignarlos a los distintos procesadores.

La organización de un sistema multiprocesador puede clasificarse de la siguiente forma:



Tiempo compartido o Bus Común. Memoria Multipuerto. Unidad de Control Central.



Bus de tiempo compartido

 

Es el mecanismo más simple para implementar un sistema multiprocesador. La estructura e interfaces son básicamente los mismos de un sistema con un procesador único. Para facilitar las transferencias DMA desde los procesadores de I/O, se añaden las siguientes características:  



Direccionamiento: Se pueden distinguir los módulos del bus para determinar la fuente

y el destino de los datos.  Arbitraje: Existe un mecanismo para arbitrar peticiones de control del bus, utilizando algún tipo de esquema de prioridades. Los módulos I/O también pueden funcionar temporalmente como master. Tiempo Compartido: Cuando un módulo está controlando el bus, los módulos restantes no están autorizados y deben suspender, si es necesario, la operación 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 fácil expandir el sistema añadiendo más CPUs. Fiabilidad: El bus es esencialmente un medio pasivo, por lo que en principio no debe

producir fallos en el sistema. Memoria multipuerto

La aproximación de memoria multipuerto permite el acceso independiente y directo a los módulos de memoria principal por parte de cada CPU y módulo I/O. Se necesita una lógica asociada a la memoria para resolver conflictos de acceso. El método más utilizado es asignar permanentemente prioridades designadas a cada puerto de memoria. Esta aproximación es más compleja que la aproximación de bus, requiriendo gran cantidad de lógica añadida al sistema. Las características de funcionamiento son mejores puesto que cada procesador y cada I/O disponen de caminos independientes a cada módulo de memoria. Otra

ventaja es la posibilidad de configurar porciones de memoria como ‘privadas’ de una CPU y/o un

módulo I/O. Esto permite incrementar la seguridad contra accesos no autorizados y para el almacenamiento de rutinas de recuperación 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 módulos independientes: CPU, memoria y I/O. El controlador memoriza las peticiones e implementa funciones de arbitraje y temporización. Puede pasar también mensajes de control y estado entre CPUs, y alertar de modificación de cachés. Puesto que toda la lógica de coordinación del multiprocesador está concentrada en la unidad de control, los interfaces de I/O, memoria y CPU se descargan prácticamente de estas funciones, lo que le proporciona la flexibilidad y simplicidad de la aproximación de bus. La principal desventaja es la complejidad de la unidad de control, y la posibilidad de convertirse en un ‘cuello de botella’.

Clústers

El término clúster (del inglés cluster, "grupo" o "racimo") se aplica a los conjuntos o conglomerados de computadoras construidos mediante la utilización de hardwares comunes y que se comportan como si fuesen una única computadora. Hoy en día desempeñan un papel importante en la solución de problemas de las ciencias, las ingenierías y del comercio moderno. La tecnología de clústeres ha evolucionado en apoyo de actividades que van desde aplicaciones de supercómputo y software de misiones críticas, servidores web y comercio electrónico, hasta bases de datos de alto rendimiento, entre otros usos. El cómputo con clústeres surge como resultado de la convergencia de varias tendencias actuales que incluyen la disponibilidad de microprocesadores económicos de alto rendimiento y redes de alta velocidad, el desarrollo de herramientas de software para cómputo distribuido de alto rendimiento, así como la creciente necesidad de potencia computacional para aplicaciones que la requieran

Los clústeres son usualmente empleados para mejorar el rendimiento y/o la disponibilidad por encima de la que es provista por un solo computador típicamente siendo más económico que computadores individuales de rapidez y disponibilidad comparables.

De un clúster se espera que presente combinaciones de los siguientes servicios: 1. 2. 3. 4.

Alto rendimiento Alta disponibilidad Balanceo de carga Escalabilidad

Beneficios de la tecnología clúster

Las aplicaciones paralelas escalables requieren: buen rendimiento, baja latencia, comunicaciones que dispongan de gran ancho de banda, redes escalables y acceso rápido a archivos. Un clúster puede satisfacer estos requisitos usando los recursos que tiene asoci ados a él. Los clústeres ofrecen las siguientes características a un costo relativamente bajo: Alto rendimiento Alta disponibilidad   Alta eficiencia  Escalabilidad La tecnología clúster permite a las organizaciones incrementar su capacidad de procesamiento usando tecnología estándar, tanto en componentes de hardware como de software que pueden adquirirse a un costo relativamente bajo. 

Clasificación de los clústeres

El término clúster tiene diferentes connotaciones para diferentes grupos de personas. Los tipos de clústeres, establecidos de acuerdo con el uso que se de y los servicios que ofrecen, determinan el significado del término para el grupo que lo utiliza. Los clústeres pueden clasificarse según sus características: HPCC (High Performance Computing Clusters: clústeres de alto rendimiento). HA o HACC (High Availability Computing Clusters: clústeres de alta disponibilidad). HT o HTCC (High Throughput Computing Clusters: clústeres de alta eficiencia). Alto rendimiento: Son clústeres 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 clúster por largos periodos de tiempo.   

Alta disponibilidad: Son clústeres cuyo objetivo de diseño es el de proveer disponibilidad y confiabilidad. Estos clústeres tratan de brindar la máxima 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 clústeres cuyo objetivo de diseño 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 clúster no es considerado un gran problema. Los clústeres pueden también clasificar en: 

clústeres de IT comerciales (de alta disponibilidad y alta eficiencia) y



clústeres científicos (de alto rendimiento).

A pesar de las discrepancias a nivel de requisitos de las aplicaciones, muchas de las características de las arquitecturas de hardware y software, que están por debajo de las aplicaciones en todos estos clústeres, son las mismas. Más aún, un clúster de determinado tipo, puede también presentar características de los otros.

Componentes de un clúster

En general, un clúster necesita de varios componentes de software y hardware para poder funcionar:        

nodos almacenamiento sistemas operativos conexiones de red middleware protocolos de comunicación y servicios aplicaciones ambientes de programación paralela

 Acceso No uniforme a Memoria (NUMA) NUMA quiere decir “Non -Uniform Memory Access”, y se puede traducir como Acceso a Memória

de modo No Uniforme. En entornos con multiples procesadores, puede ser visualizado como una modularización y división de la memória y los procesadores en "conjuntos". La ventaja de agregar muchos procesadores y mucha memória en una sola computadora es el costo se ahorra en motherboard, recursos de alimentación, enfriamento, almacenamiento interno, chassis, etc. Actualmente, hay servidores que soportan un gran cantidad de RAM (terabytes) y tienen 2, 4, 8 y más sockets para colocación de procesadores, que actualmente son, como mínimo, 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 operación llamamos de scheduling (o agendamiento). Abajo muestro un ejemplo de scheduling de 4 procesadores y la utilización de memória:

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 memória tiene 32GB distribuídos 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 ejecución, y si ahora un Sql Server. El Java sigue su funcionamiento. Estes 3 ejemplos están funcionando sobre una arquitectura UMA, o sea, todos los procesadores pueden acceder toda la memória, pero solo hay 1 ruta. Si bien puede ejecutar cosas en paralelo, nunca van a poder leer o escribir en la memória todos juntos, y esa es la desventaja del UMA. Por menor que sea el tiempo, una fracción 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 memória. Cada grupo de procesadores físicos tienen acceso a solamente una parte de la memória física, por lo cual se distribuye en vários canales el acceso a RAM. La desventaja es que para cada procesador hay menos memória disponible para acceso directo, pero la velocidad de acceso a RAM es más alta. En NUMA en hardware crea nodos, o sea, conjuntos de procesadores con sus memórias privadas. Así la disputa por el BUS diminuye, posibilitando un acceso mucho más rápido a la RAM:

El único problema del NUMA es en el caso de que un proceso específico necesite más RAM do que existe en el nodo donde se está ejecutando. En condiciones normales, es muy raro que un único proceso necesite más que eso, pero puede pasar. En este caso, la memória de otro nodo deberña ser utilizada, lo que generará una lentitud, ya que la comunicación deberá pasar por el BUS compartido y también por el BUS interno del otro nodo utilizado. NUMA y la Virtualización

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 tenía 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 muñeco caminante en los pasillos), con mucha vRAM y muchos vCPUs. Eso puede hacer con que VMs tengan tamaños 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 más nodos de CPU/RAM, com el ejemplo abajo:

Coherencia de cache y protocolo MESI (Explicar)

El protocolo MESI, también 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 más eficientemente a write-back en lugar del writethrough de caché de CPUusado con anterioridad en el procesador 486 Estados

Cada línea de caché se marca con uno de los cuatro estados siguientes (codificados con dos bits adicionales): M - Modified (Modificado): La línea de caché sólo 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 válida).  E - Exclusive (Exclusivo): La línea de caché sólo se encuentra en la caché actual, pero está "limpia"; coincide con el valor de la memoria principal.  S - Shared (Compartido): Indica que esta línea de caché puede estar duplicada en otras cachés.  I - Invalid (Inválido): Indica que esta línea de caché no es válida. Para cualquier par de cachés, los estados permitidos para una línea de caché son los siguientes: 

Operaciones

Se puede leer de caché en cualquier estado excepto en Inválidos. Una línea inválida puede ser cogida (de los estados Compartido o Exclusivo) para satisfacer una lectura. Una escritura sólo puede ser llevada a cabo si la línea de caché está en estado Modificado o Exclusivo. Si está en estado Compartido todas las otras copias en otras cachés deben ser puestas en estado Inválido antes. Esto se hace habitualmente con una operación broadcast. Una caché puede cambiar el estado de una línea en cualquier momento, pasándolo ha estado Inválido. Una línea Modificada debe ser escrita antes. Una caché que contenga una línea 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 línea de caché ha estado Compartido. Una caché que contenga una línea en estado Compartido debe también sondear todas las operaciones broadcast inválidas de otras CPUs, y descartar la línea (cambiándola ha estado Inválido) una vez hecho.

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF