You are on page 1of 30

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 posición dentro de los bits de trabajo. Para propósito de estas lecciones, 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 binario está compuesto por n dígitos, se define como: El total de números positivos será y el de negativos , siendo n el número máximo de bits. Sesgada El formato con Sesgo es un formato binario. Una vez establecemos el espacio de trabajo, el número de bits m al que escribimos la representación, hemos fijado el total de representaciones posibles. Este total se reparte, mitad a enteros negativos, la otra 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 representaciones es , la mitad es , por lo tanto, el mínimo es . La representación con sesgo se define entonces mediante 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, 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 negativo. Sistema 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 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, pero el bit con signo es un 1. Sistemas completos de 2´s Los números positivos en el sistema de 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. En las computadoras, el sistema de complementos de 2´s es el más común para manejar números 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 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 esenciales de un número en la notación de cómo flotante? 9. ¿Qué ventaja supone utilizar la representación sesgada para la parte del exponente de un número en como flotante? 10. ¿Qué diferencia existen entre desbordamiento positivo, desbordamiento del exponente, y desbordamiento de la parte significativa?

11. ¿Cuáles son los elementos básicos 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 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 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 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 es suficiente, entonces el número no es representable

  

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

13. Enumere cuatro métodos 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)

el complemento a dos de X se obtiene considerando X como entero sin signo y calculando ( ). (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. Copiar todos los bits que son 0 hasta que se encuentra el primer 1. Considere la siguiente operación con una palabra binaria. Un entero negativo se representan tomando el complemento booleano de cada bit del correspondiente numero positivo.2 puede utilizarse para ilustrar gráficamente el punto anterior. Otra representación utilizada a veces para los números enteros es el complemento a uno. hay desbordamiento.2). Comenzar con el bit menos significativo.PRACTICA 1. ¿Cuál es el resultado? 7. A partir de este. 2. En caso contrario no hay desbordamiento” Compare las figuras 9. ¿Por qué no se utiliza el bit C en la segunda? Dados e en notacion de complemento a dos (es decir. mostrando cómo se usa el desplazamiento en el sentido de las agujas del reloj para realizar la substracción. Represente en decimal los siguientes valores en complemento a dos: 1101011. con 16 bits. Que también se copia. Los enteros positivos se representan de la misma forma que en signo-magnitud. -29. donde cada número está representado con 7 bits. 0101101. . y después sumar 1. Represente tanto en signo-magnitud como en complemento a dos.9 y 9. (b) Demuestre que la figura 9. calcule el producto con el algoritmo de booth. Demuestre que el producto de dos números de digitos en base B produce un resultado de no más de digitos.3 se define la operación de complemento a dos como sigue: para calcular el complemento a dos de X. Considere los números representados en complemento a dos con ocho bits y realice los siguientes cálculos: (a) (b) (c) (d) 9. tomar el complemento booleano de cada bit de X.1) (9. Use el algoritmo de Booth para multiplicar 23 (multiplicando) por 29 (multiplicador). 5. 6. (a) Compruebe que la siguiente definición es equivalente. similar a las ecuaciones (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. (a) Exprese una definición de los números en complemento a uno utilizando una suma Ponderada de bits. Para un entero X de n bits.12. En la sección 9.1 para signo-magnitud y para complemento a uno. 3. 8. Tomar el complemento de los bits siguientes. los siguientes números decimales: +512. e ).

4 bits. 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.3. sesgado. ¿Verdadero o falso? Divida entre en notacion binaria de complementos a dos utilizando palabras de 12 bits. etc. En operaciones aritméticas con enteros. parte significativa: 7 bits. Utilice una presentación similar a la empleada en la figura 9. exponente.4 en el siguiente formato de coma flotante. todos los demás deben aproximarse. ¿Cuáles son sus valores decimales equivalentes? (a) 11000001111000000000000000000000 (b) 00111111010100000000000000000000 (c) 01000000000000000000000000000000 Considere un formato en coma flotante del IEEE. en la que la coma implica de la base puede estar en cualquier posición (es decir. el cociente ⁄ de dos enteros J y K es menor o igual que el cociente normal. Exprese los siguientes números en el formato de coma flotante de 32 bits de IBM. El algoritmo de división entera descrito en la sección 9. denominada sin restablecimiento.17.0 (f) (g) (h) 65535 Cualquier representación en coma flotante utilizada en computadores representa con exactitud solo ciertos números. con un sesgo de 50. ¿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.0 (e) -15. ¿Cuál es el error relativo? . r. pero reducido a 7 bits. a la derecha del digito menos significativo. Liste sus 127 valores. Si A’ es el valor almacenado del valor real A.16 mostrando los pasos implicados en el cálculo de la división de la figura 9.5 (c) 1/64 (d) 0. el error relativo. con 3 bits para el exponente y 3 bits para la parte significativa. base: 2. se expresa como: Represente la cantidad decimal +0. Se supone una representación normalizada. (b) Considere ahora un formato decimal de coma flotante con el exponente almacenado en una representación sesgada. Proponga un algoritmo para este método. a la derecha del más significativo.15.). evita las restas y sumas innecesarias. ¿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. Una aproximación ligeramente más compleja. (a) Considere una representación de cómo fija que utiliza dígitos decimales. Emplee el algoritmo descrito en la Seccion 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.Verifique la validez del algoritmo de división de binarios sin signo de la figura 9.

Cuando la gente habla de la imprecisión de la aritmética en coma flotante. Indique los resultados en la forma normalizada. Por tanto A’ = 0. (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? .Si A= 1. Realice los siguiente calculos y normalice los resultados. pruebe que el error relativo del producto es aproximadamente la suma de los errores relativos de los factores.22288 y B = 0.42 y si redondeado a 1. Considere A = 0. (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). Despreciando cualesquiera errores de truncamiento o de redondeo posteriores. ¿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’.2221. Indique los resultados en la forma normalizada. Comente los resultados. la diferencia X-Y se obtiene con exactitud.22211.B’? Para tener una noción mas clara sobre los efectos de la denormalizacion y del desbordamiento a cero graduales. sin error. encuentre el error relativo si A es truncado a 1.43. 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 . El computador trunca todos los valores a 4 dígitos decimales. Pero cuando X e Y son aproximadamente iguales. Un número normalizado tiene un digito decimal distinto de cero a la izquierda del punto decimal.427. (a ) (b) Muestre como se realizan las siguientes restas en coma flotante (en donde las partes significativas se truncan a cuatro dígitos decimales). (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. normalmente asocia los errores a la cancelación que tiene lugar al restar cantidades muy aproximadas entre sí.2228 y B’ = 0. (a) ¿Cuáles son los errores relativos de A’ y B’? (b) ¿Cuál es el error relativo de C’ = A’. Uno de los errores más serios en los cálculos con computadores se produce al restar dos números casi iguales.

Basándose en los resultados de la operación. b) Decodificar la instrucción El decodificador de instrucción interpreta e implementa la instrucción. A continuación el valor del MDR es colocado en el Registro de Instrucción Actual (CIR). 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). c) Ejecutar la instrucción A partir del registro de instrucción.    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. un circuito que guarda la instrucción temporalmente de manera que pueda ser decodificada y ejecutada. El registro de instrucción (IR) mantiene la instrucción en curso mientras el contador de programa (PC. y se recogen los datos requeridos de la memoria principal para ser procesados y colocados en los registros de datos. 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.a) Buscar la instrucción en la memoria principal Se vuelca el valor del contador de programa sobre el bus de direcciones. 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. los datos que forman la instrucción son decodificados por la unidad de control. ¿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? . É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. ¿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. program counter) guarda la dirección de memoria de la siguiente instrucción a ser ejecutada.

el cual siempre agrega un 0 en el extremo izquierdo por cada desplazamiento de un bit hacia la derecha. 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. En los enteros sin signo. 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. De esta manera. De hecho son dos nombres diferentes para exactamente la misma operación. Cuando esto no es así es por la acción de una instrucción de control de flujo. Los desplazamientos aritméticos permiten la multiplicación y la división por dos. esta condición vendrá dada por los bits de estado (N. Vemos. en los enteros con signo. 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. se divide efectivamente por 2 al entero con signo. se debe usar el desplazamiento lógico. para dividir por 2. . se debe usar el desplazamiento aritmético hacia la derecha. El desplazamiento aritmético hacia la derecha es diferente al desplazamiento lógico hacia la derecha. es decir. el secuenciamiento es implícito. Z. 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. Los desplazamientos aritméticos son similares a los desplazamientos lógicos. que para las instrucciones de control de flujo hay dos variables fundamentales: el contador de programa y los bits de condición. solo hay un opcode para ambos en las instrucciones en lenguaje de máquina. Todas las instrucciones que modifican el flujo de la ejecución manejan el contador de programa. el ensamblador tiene dos pnemónicos para el desplazamiento lógico y el aritmético hacia la izquierda. por tanto. 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. También. si la modificación del flujo de instrucciones se hace de forma condicional. En los procesadores x86. En general. En cambio. V y C). pero cuando el programa es ensamblado. ¿Por qué son necesarias las instrucciones de control 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. de números enteros con signo. la siguiente instrucción en ejecutarse es la que está físicamente detrás en el programa.Desplazamiento lógico los bits de un registro son desplazados (movidos) una o más posiciones hacia la derecha o hacia la izquierda.

el orden de ejecución del programa que viene de arriba hacia abajo. 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. al llegar a condición. C++. ya que permite que unos procedimientos utilicen las funcionalidades proporcionadas por otros. Ada. El número de procedimientos que se pueden anidar queda limitado exclusivamente por el tamaño reservado para la pila. la evalúa y si la condición resulta verdadera pasa a ejecutar comandos. C. etc. Bifurcación completa: Otro caso es ejecutar unos comandos en caso de que se cumpla una condición o otros comandos en caso contrario. Java. . El uso estandarizado del marco de pila garantiza el correcto funcionamiento de los procedimientos anidados. mientras que si resulta falsa ejecuta el bloque de comandos(2). al llegar a condición . mientras que si resulta falsa se salta ese conjunto de comandos y sigue ejecutando los demás hacia abajo. la evalúa y si la condición resulta verdadera pasa a ejecutar Comandos (1). el orden de ejecución del programa que viene de arriba hacia abajo.). 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. sin límite alguno.Enumere y explique brevemente dos formas comunes de generar la condición a comprobar en una instrucción de bifurcación o salto condicional. Lo cual viene expresado por "diagrama de flujo" Es decir.

es decir. El lenguaje de máquina es específico de la arquitectura de la máquina. Generalmente si solamente hay algunos pequeños parámetros. 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. será necesario espacio de memoria. Una de ellas es que cada tarea tiene su propia pila. Estas instrucciones son normalmente ejecutadas en secuencia. Un programa consiste en una cadena de estas instrucciones más un conjunto de datos sobre el cual se trabaja. con eventuales cambios de flujo causados por el propio programa o eventos externos. y así. 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. Almacenamiento local de datos: Una subrutina frecuentemente necesita memoria para almacenar los valores de las variables locales. puede estar activa simultáneamente para diferentes tareas que hacen diferentes cosas. y no es infrecuente que el espacio para estos parámetros descanse en la pila de llamadas. como el microprocesador de una computadora o el microcontrolador de un autómata. 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. micro controlador y otros circuitos integrados programables. la localización de la instrucción para retornar necesita ser guardada en alguna parte. Almacenamiento de la dirección de retorno: Cuando una subrutina es llamada. ¿Qué diferencia hay entre lenguaje ensamblador y lenguaje maquina? El lenguaje ensamblador: es un lenguaje de programación de bajo nivel para los computadores. ¿Qué es un procedimiento reentrante? Una función (o un procedimiento) "reentrante" es aquella cuya ejecución en una hebra (thread) puede verse interrumpida. la subrutina puede ser reentrante. Esta representación es usualmente definida por el fabricante de hardware. Usando una pila para guardar la dirección de retorno tiene importantes ventajas sobre las otras alternativas. las posiciones de memoria y otras características del lenguaje. y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones). las variables que son conocidas solamente dentro de la subrutina activa y no conservan sus valores después de que la subrutina retorna. ejecutarse en otra hebra y volver a completar normalmente la ejecución en la primera hebra. los registros del procesador serán usados para pasar los valores. Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel. Microprocesadores. aunque el conjunto de instrucciones disponibles pueda ser similar entre arquitecturas distintas ¿En qué consiste la notación polaca inversa? . Requiere que todos sus argumentos se le pasen por la pila y que sus variables locales se guarden también en la pila. 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. Un lenguaje ensamblador es por lo tanto específico de cierta arquitectura de computador física (o virtual). Este lenguaje está compuesto por un conjunto de instrucciones que determinan acciones al ser tomadas por la máquina.Enumere tres posibles ubicaciones para almacenar la dirección de retorno de un procedimiento. los registros del procesador. pero si hay más parámetros de los que se pueda manejar de esta manera.

por ejemplo. Ventajas  Los cálculos se realizan secuencialmente según se van introduciendo operadores.Su principio es el de evaluar los datos directamente cuando se introducen y manejarlos dentro de una estructura LIFO (Last In First Out). dejando el resultado 'c' directamente. y que para ejecutar un comando. la notación polaca inversa simplifica en gran manera el cálculo de expresiones complejas. No requiere paréntesis ni reglas de preferencia. para hacer una suma 'a+b=c' el RPN lo manejaría a b +. una vez aprendida. Dado que no se pueden introducir operadores en la pila. El estado interno de la calculadora siempre consiste en una pila de cifras sobre las que se puede operar. Las calculadoras RPN son relativamente raras. la notación polaca inversa es conceptualmente más sencilla y menos dada a errores que otras notaciones. 12 34+ (=46) de 123 4+ (=127) o 1 234+ (=235). Desventajas  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. El proceso de apilación permite guardar resultados intermedios para un uso posterior. Básicamente la diferencias con el método algebraico o notación de infijo es que. al evaluar los datos directamente al introducirlos. No obstante. 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). lo que optimiza los procesos a la hora de programar. Debido a esto. no es necesario ordenar la evaluación de los mismos. al contrario que la notación algebraica. en vez de tener que esperar a escribir la expresión al completo. En las calculadoras RPN.       ¿Cuál es la diferencia entre big endian y little endian? . debido a que muchos sistemas operativos pueden emular calculadoras RPN. dada la importancia de los espacios para separar operandos. esto no es un problema tan grave en la actualidad. ya que el proceso de apilamiento permite calcular la expresión por etapas. Forzado a usar una calculadora algebraica. se cometen menos errores al procesar cálculos complejos. No obstante. primero se deben introducir todos sus argumentos. el usuario de una calculadora RPN típicamente comete errores más frecuentemente debido a sus hábitos de uso normales. Es difícil usar la notación polaca inversa al escribir a mano. Esta característica permite que las calculadoras RPN computen expresiones de complejidad muy superior a la que alcanzan las calculadoras algebraicas. Se requiere un caligrafía muy clara para evitar confundir. muchos estudiantes afirman que. así.

y Sun SuperSPARC son "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. los Macintosh). Existen dos formatos diferentes. El Long Int anterior. Hewlett-Packard PA-RISC. por lo que se dice que son "bi-endian". ¿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. ¿puede eliminarse el contador de programa. 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. 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". redondeo hacia +∞. hacia cero. denominados "Little Endian" y "Big Endian". el protocolo de Internet TCP. los procesadores Motorola 680x0 (y. 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. hay que considerar el orden de los bytes en los tipos de datos numéricos que utilizan varios bytes. redondeo hacia -∞.Dependiendo del sistema operativo en que se trabaje. utilizando la propia cabecera de la pila como contador de programa? a) b) c) d) Convierte las siguientes formulas de notación polaca inversa a infija: . alejándose de cero)? Suponga que un procesador utiliza una pila para gestionar las llamadas a procedimientos y los retornos. Así. Ejercicios Un determinado microprocesador tiene palabras de un byte. por lo tanto. El MIPS de Silicon Graphics y el procesador IBM/Motorola PowerPC son capaces de entender ambos sistemas.

Del mismo modo. o a A+ (B-C)? ¿Importa? Explique (describa a que se refiere el término. De esta forma. 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. La mayoría de los ordenadores tienen cuatro tipos de memoria: registros en la CPU. lo que minimiza la fragmentación interna y evita la externa. En ese orden. ¿Es el resultado equivalente a (A+B)-C. la cantidad de memoria desperdiciada por un proceso es el final de su última página. la memoria es dividida en trozos del mismo tamaño que las páginas llamados marcos de página. . tanto para el software de usuario como para sí mismo. 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. Muestre los pasos seguidos. la memoria RAM y el disco duro. de mayor cantidad de memoria que esté disponible físicamente. la memoria caché (tanto dentro como fuera del CPU).a) b) c) d) Convierte las siguientes formulas de infija a polaca inversa: Convierte la expresión A+B-C a notación posfija utilizando el algoritmo de Dijkstra.

el término intercambio es técnicamente incorrecto  Segmentada Mientras que la paginación es transparente para el programador. y proporciona una forma lógica de organizar los programas y los datos. Como ahora consideramos un proceso como una secuencia de páginas. en vez de intercambiar todo el proceso hacia la memoria. 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.  Segmentada bajo demanda Permite compartir datos entre procesos. Los procesos residen en memoria secundaria (en el disco). y le proporciona un espacio mayor de direcciones. Cuando queremos ejecutar un proceso. es posible construir algoritmos se gestión de memoria sofisticados que aprovechen mejor el comportamiento de los programas. lo metemos en memoria. utilizamos un intercambiador perezoso. alto grado de multiprogramación. Un intercambiador perezoso nunca reincorpora una página a memoria a menos que se necesite. Paginada bajo demanda Un sistema de paginación por demanda es similar a un sistema de paginación con intercambios.O  Segmentada y paginada . algunos sistemas están equipados con hardware del procesador y software del S. la modularidad y el soporte de la compartición y la protección. y asociarle los privilegios y atributos de protección. en vez de un gran espacio contiguo de direcciones. la segmentación es normalmente visible para el programador. Además. incluida la capacitación de gestionar estructuras de datos que puedan crecer. Para combinar las ventajas de ambas. Sin embargo. puesto que los fragmentos que se cargan y descargan de la memoria principal son de tamaño fijo e iguales. La segmentación tiene las ventajas antes citadas. mediante el uso segmentos compartibles. La paginación elimina la fragmentación externa y de este modo. Permite la protección de datos. aprovecha la memoria principal de forma eficiente. el administrador otorga permisos a este segmento   Ventajas: no hay fragmentación interna.

Aunque este esquema crea un espacio de direcciones correspondiente a una dirección de 34 bits. puesto que el número variable de segmentos conduce naturalmente al uso de un Registro de Longitud de Tabla de Segmentos. Core i 3. Esto hace un uso más racional de la capacidad computacional con una velocidad considerable ganancia. sólo se puede iniciar cuando el otro extremo sólo para la instrucción después del procedimiento. 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. 5. así como la diferencia en la complejidad de las instrucciones que hacen que la misma variable puede tomar un tiempo para ejecutarse. En resumen. Core 2 duro.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. También es posible combinar estos dos esquemas para mejorar ambos. La técnica de tuberías es similar a una línea de producción de la fábrica. la tabla de segmentos tiene un tamaño tolerable. 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. Necesitamos tan solo el mismo número de entradas en la tabla de segmentos que segmentos. Entre los problemas que enfrentan son la dependencia de las instrucciones anteriores y desvíos que dificultan el proceso. el proceso por el cual una instrucción de procesamiento se subdivide en etapas. Las direcciones lógicas estaban formadas a partir de un número de segmento de 18 bits y un desplazamiento de 16 bits. Estas declaraciones se colocan en una cola de memoria dentro del procesador (CPU) en espera de ser ejecutados. características.Tanto la paginación como la segmentación tienen sus ventajas y desventajas. no tenemos por qué tener entradas vacías en la tabla de segmentos Técnica Pipeline (en microprocesadores actuales Pentium IV. quien fue su inventor) . Veamos como ejemplo el esquema del ordenador GE 645 con el sistema operativo Multics.

sobre todo en la computación de altas prestaciones. Arquitecturas paralelas (explicar cada tipo de arquitectura. El paralelismo se ha empleado durante muchos años. paralelismo de datos y paralelismo de tareas. Activar las señales de selección de operador para que corresponda a la suma en la ALU. 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.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. la computación en paralelo se ha convertido en el paradigma dominante en la arquitectura de computadores. que luego son resueltos simultáneamente (en paralelo). Muchas veces. 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. a menudo se pueden dividir en unos más pequeños. Unas pocas de estos microinstrucciones implementan una instrucción completa del microprocesador.1 operando sobre el principio de que problemas grandes. Hay varias formas diferentes de computación paralela: paralelismo a nivel de bit. 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. el microprograma de esta instrucción significaría:      Activar las señales de selección de registro como primer operando de la ALU. se utilizan arquitecturas especializadas de computación en paralelo junto a procesadores tradicionales .  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. para acelerar la tareas específicas. 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. la instrucción "sumar dos registros" típica de cualquier microprocesador. Esperar unos ciclos de reloj hasta que la operación esté completada. En concreto. pero el interés en ella ha crecido últimamente debido a las limitaciones físicas que impiden el aumento de la frecuencia. Por ejemplo. principalmente en forma de procesadores multinúcleo. Activar las señales de selección de registro como segundo operando de la ALU. paralelismo a nivel de instrucción. 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.

.

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 un flujo de datos es el flujo secuencial de datos requeridos por el flujo de instrucciones. en cualquier momento. como los arrays sist´olicos o los procesadores vectoriales. y en estos momentos no existen ejemplos que funcionen siguiendo este modelo. y . Single Data stream) Flujo ´unico de instrucciones y flujo ´unico de datos. Esta clase de arquitectura ha sido clasificada por numerosos arquitectos de computadores como impracticable o imposible. Las arquitecturas segmentadas. el contador de programa se actualiza para que apunte a la siguiente instrucci´on a procesar en serie. Flynn clasifica los sistemas en cuatro categorıas: SISD (Single Instruction stream. Una es considerar la clase de maquinas que requerirıan que unidades de procesamiento diferentes recibieran instrucciones distintas operando sobre los mismos datos. realizan el procesamiento vectorial a trav´es de una serie de etapas. MISD (Multiple Instruction stream. Arquitecturas altamente segmentadas. Single Data stream) Flujo m´ultiple de instrucciones y ´unico flujo de datos. Un flujo de instrucciones es el conjunto de instrucciones secuenciales que son ejecutadas por un ´unico procesador. 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. cada una ejecutando una funci´on particular produciendo un resultado intermedio. Este el concepto de arquitectura serie de Von Neumann donde. s´olo se est´a ejecutando una ´unica instrucci´on. Este tipo de maquinas se pueden interpretar de dos maneras. Conforme se van leyendo las instrucciones de la memoria. Con estas consideraciones. son clasificados a menudo bajo este tipo de m´aquinas. A menudo a los SISD se les conoce como computadores serie escalares. Esto significa que varias instrucciones act´uan sobre el mismo y ´unico trozo de datos.Clasificacion de los sistemas paralelos Clasificacion de Flynn Probablemente la clasificaci´on m´as popular de computadores sea la clasificacion de Flynn. o encauzadas. Todas las maquinas SISD poseen un registro simple que se llama contador de programa que asegura la ejecuci´on en serie del programa. Esta taxonomıa de las arquitecturas est´a basada en la clasificaci´on atendiendo al flujo de datos e instrucciones en un sistema. Practicamente ningun computador puramente SISD se fabrica hoy en d´ıa ya que la mayorıa de procesadores 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).

Los sistemas operativos modernos coordinan la distribución de los recursos. . Multiple Data stream) Flujo de instrucciones multiple y flujo de datos multiple. Espacio único de memoria. siempre con un único mapa de memoria: UMA (SMP) La organización con bus es la más utilizada en multiprocesadores multiple core. La memoria compartida es accedida por todos los procesadores de la misma forma en que un monoprocesador accede a su memoria. si se dispone de un arquitectura SIMD esto se puede calcular en paralelo para cada trabajador. varias unidades de procesado diferentes son invocadas por una ´unica unidad de control. Clasificación Lar arquitecturas multiprocesador pueden clasificarse según la estrategia de distribución de la memoria compartida. Todos los procesadores son similares y tienen capacidades equivalentes. pero aparece el problema de la coherencia de caches. SIMD Single Instruction stream. Una sola copia del sistema operativo (con planificador adecuado). Aqu´ı la concurrencia implica que no s´olo hay varios procesadores operando simultaneamente. Threads. En las m´aquinas de este tipo. Soporta pocos procesadores (2-16). Más estable.todas las etapas del cauce representan m´ultiples instrucciones que son aplicadas sobre ese vector. Menos potencia. Por ejemplo. Poco escalables. Las MIMD son las m´as complejas. Es fácil mover procesos entre procesadores. las SIMD soportan procesamiento vectorial (matricial) asignando cada elemento del vector a una unidad funcional diferente para procesamiento concurrente. sincronización y coordinación usando variables globales. En esta categoría entran también las organizaciones con memoria multipuerto (no escalable). Esto significa que una ´unica instrucci´on es aplicada sobre diferentes datos al mismo tiempo. Por esta facilidad en la paralelizaci´on de vectores de datos (los trabajadores formar´ıan un vector) se les llama tambien procesadores matriciales. Son maquinas que poseen varias unidades procesadoras en las cuales se pueden realizar m´ultiples instrucciones sobre datos diferentes de forma simultánea. Al igual que las MISD. DESVENTAJAS Performance de la memoria. MIMD (Multiple Instruction stream. sino que ademas hay varios programas (procesos) ejecutandose tambi´en al mismo tiempo Multiprocesadores VENTAJAS Datos. Se satura rápidamente. La red de interconexión es complicada (acceso a memoria). Todos los procesadores tienen el mismo tiempo de acceso a cualquier posición de memoria. Se soluciona con caches. es repetir la misma operacion sencilla para cada trabajador. crossbar o multistage. Menos espacio. Comparten I/O. pero son tambi´en las que potencialmente ofrecen una mayor eficiencia en la ejecuci´on concurrente o paralela. Multiple Data stream Flujo de instruccion simple y flujo de datos multiple. el c´alculo de la paga para cada trabajador en una empresa. Modelo simple de programación. Dinámica: bus.

NUMA Utiliza (como SMP) un único espacio de direcciones. cada procesador tiene una parte de la memoria. El espacio de memoria completo es la suma de los caches. 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. Sin coherencia de cache. COMA Como en NUMA. a la cual puede acceder más rápido. pero en este caso cada procesador es dueño de una parte de la memoria. Utiliza pasaje de mensajes escondido. Utilizan un mecanismo de directorio distribuído. El problema de coherencia es más complicado. multicomputador. pero es sólo cache. la aceleración en la . El sistema operativo (más sofisticado) puede ayudar mediante migración de páginas.

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.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. Cada etapa en el pipeline corresponde a una acción diferente que el procesador realiza en la instrucción correspondiente a la etapa. MEM = Acceso a la memoria. a continuación. una secuencia de instrucciones ejecutadas por un procesador. 21 Muchas de las aplicaciones científicas y de ingeniería muestran paralelismo de datos.19 Los procesadores modernos tienen ''pipeline'' de instrucciones de varias etapas. Históricamente. un procesador con un pipeline de N etapas puede tener hasta n instrucciones diferentes en diferentes etapas de finalización. WB = Escritura) Un programa de ordenador es. EX = Ejecutar. acceso a la memoria y escritura. en esencia. luego de 16 bits y 32 bits. Además del paralelismo a nivel de instrucción del pipelining.arquitectura de computadores se lograba en gran medida duplicando el tamaño de la palabra en la computadora. los microprocesadores de 4 bits fueron sustituidos por unos de 8 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ñ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. lo que ha sido un estándar en la computación de propósito general durante la última década. en este caso un procesador de 8 bits requiere dos instrucciones para completar una sola operación. con cinco etapas: pedir instrucción. 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. esta tendencia general llegó a su fin con la introducción de procesadores de 64 bits. Estos son conocidos como procesadores superescalares. Las dependencias de terminación de ciclo evitan la . Estas instrucciones puedenreordenarse y combinarse en grupos que luego son ejecutadas en paralelo sin cambiar el resultado del programa. en donde un procesador de 16 bits necesita una sola instrucción para poder completarla. ID = Decodificación de instrucción. Las instrucciones pueden agruparse juntas sólo si no hay dependencia de datos entre ellas. Esto se conoce como paralelismo a nivel de instrucción. que se centra en la distribución de los datos entre los diferentes nodos computacionales que deben tratarse en paralelo. decodificar. El procesador Pentium 4 tenía un pipeline de 35 etapas. ejecutar. 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. cuando un procesador de 8 bits debe sumar dos enteros de 16 bits. Por ejemplo. algunos procesadores pueden ejecutar más de una instrucción a la vez. la cantidad de información que el procesador puede manejar por ciclo.  Paralelismo a nivel de instrucción Un pipeline canónico de cinco etapas en una máquina RISC (IF = Pedido 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.  Paralelismo de datos El paralelismo de datos es el paralelismo inherente en programas con ciclos. El ejemplo canónico de un procesador segmentado es un procesador RISC.

5) El sistema está controlado por un sistema operativo que posibilita la interacción entre los procesadores y sus programas. un fallo en un procesador no hará que el computador se detenga. en función del número de procesadores que configuran el sistema    Los sistemas SMP poseen una característica muy atractiva. Crecimiento incremental: Se pueden aumentar las prestaciones del sistema añadiendo más procesadores. y conforme el coste de los microprocesadores se reduce. 2) Los procesadores comparten la memoria principal y la E/S. donde se realiza el mismo cálculo en distintos o mismos grupos de datos. o bien a través de otros caminos de acceso al mismo dispositivo. se refiere a la arquitectura hardware del sistema multiprocesador y al comportamiento del sistema operativo que utiliza dicha arquitectura. El término SMP.21 Esto contrasta con el paralelismo de datos. 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. y la planificación de los hilos o de los procesos. de manera que el tiempo de acceso a memoria es aproximadamente el mismo para todos los procesadores. 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».22 Multiprocesadores simétricos (SMP) A medida que aumenta la siempre creciente demanda de mayores prestaciones. 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. y están interconectados mediante un bus u otro tipo de sistema de interconexión. sistema multiprocesador simétrico. puesto que es el responsable de asignarlos a los distintos procesadores. Escalado: Los fabricantes pueden ofrecer una gama de productos con diferentes precios y prestaciones. Es el sistema operativo el que posibilita la sincronización entre los procesadores. y es que la existencia de varios procesadores es transparente al usuario. 3) Todos los procesadores comparten los dispositivos de E/S. Por ejemplo. El paralelismo de tareas por lo general no escala con el tamaño de un problema. 4) Todos los procesadores pueden desempeñar las mismas funciones (de ahí el término simétrico). pero pueden hacerlo bien a través de los mismos canales. . los fabricantes han introducido los sistemas SMP.paralelización de ciclos. Un SMP es un computador con las siguientes características: 1) Tiene dos o más procesadores similares de capacidades comparables.

Para facilitar las transferencias DMA desde los procesadores de I/O. Las principales ventajas de esta estructura son:    Simplicidad: ya que la estructura es la misma que en un sistema uniprocesador. Arbitraje: Existe un mecanismo para arbitrar peticiones de control del bus. Los módulos I/O también pueden funcionar temporalmente como master. Unidad de Control Central. Esta aproximación es más compleja que la aproximación de bus. los módulos restantes no están autorizados y deben suspender. Fiabilidad: El bus es esencialmente un medio pasivo. requiriendo gran cantidad de lógica añadida al sistema. si es necesario. 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. Flexibilidad: Es fácil expandir el sistema añadiendo más CPUs. Se necesita una lógica asociada a la memoria para resolver conflictos de acceso. Memoria Multipuerto. Otra . 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. El método más utilizado es asignar permanentemente prioridades designadas a cada puerto de memoria. por lo que en principio no debe producir fallos en el sistema. 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.La organización de un sistema multiprocesador puede clasificarse de la siguiente forma:    Tiempo compartido o Bus Común. La estructura e interfaces son básicamente los mismos de un sistema con un procesador único. Tiempo Compartido: Cuando un módulo está controlando el bus.  Bus de tiempo compartido Es el mecanismo más simple para implementar un sistema multiprocesador. utilizando algún tipo de esquema de prioridades. la operación hasta que se les asigne el acceso al bus.

. Puesto que toda la lógica de coordinación del multiprocesador está concentrada en la unidad de control. memoria y CPU se descargan prácticamente de estas funciones. servidores web y comercio electrónico. los interfaces de I/O. Clústers El término clúster (del inglés cluster. memoria y I/O. "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. y alertar de modificación de cachés. 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. 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. Hoy en día desempeñan un papel importante en la solución de problemas de las ciencias. 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. Puede pasar también mensajes de control y estado entre CPUs. el desarrollo de herramientas de software para cómputo distribuido de alto rendimiento. 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. hasta bases de datos de alto rendimiento. las ingenierías y del comercio moderno.ventaja es la posibilidad de configurar porciones de memoria como ‘privadas’ de una CPU y/o un módulo I/O. lo que le proporciona la flexibilidad y simplicidad de la aproximación de bus. y la posibilidad de convertirse en un ‘cuello de botella’. entre otros usos. El controlador memoriza las peticiones e implementa funciones de arbitraje y temporización. La principal desventaja es la complejidad de la unidad de control.

baja latencia. Alta disponibilidad: Son clústeres cuyo objetivo de diseño es el de proveer disponibilidad y confiabilidad. Alto rendimiento: Son clústeres en los cuales se ejecutan tareas que requieren de gran capacidad computacional. determinan el significado del término para el grupo que lo utiliza. 3. La confiabilidad se provee mediante software que detecta fallos y permite recuperarse frente a los mismos. Existe independencia de datos entre las tareas individuales. . tanto en componentes de hardware como de software que pueden adquirirse a un costo relativamente bajo. Alta eficiencia: Son clústeres cuyo objetivo de diseño es el ejecutar la mayor cantidad de tareas en el menor tiempo posible. 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). 2. Los clústeres pueden clasificarse según sus características:    HPCC (High Performance Computing Clusters: clústeres de alto rendimiento). comunicaciones que dispongan de gran ancho de banda. El retardo entre los nodos del clúster no es considerado un gran problema. HT o HTCC (High Throughput Computing Clusters: clústeres de alta eficiencia). mientras que en hardware se evita tener un único punto de fallos. grandes cantidades de memoria. Un clúster puede satisfacer estos requisitos usando los recursos que tiene asociados a él. o ambos a la vez. Clasificación de los clústeres El término clúster tiene diferentes connotaciones para diferentes grupos de personas. establecidos de acuerdo con el uso que se de y los servicios que ofrecen. HA o HACC (High Availability Computing Clusters: clústeres de alta disponibilidad). Alto rendimiento Alta disponibilidad Balanceo de carga Escalabilidad Beneficios de la tecnología clúster Las aplicaciones paralelas escalables requieren: buen rendimiento. 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.De un clúster se espera que presente combinaciones de los siguientes servicios: 1. redes escalables y acceso rápido a archivos. 4. Los tipos de clústeres. Estos clústeres tratan de brindar la máxima disponibilidad de los servicios que ofrecen. El llevar a cabo estas tareas puede comprometer los recursos del clúster por largos periodos de tiempo.

recursos de alimentación. puede ser visualizado como una modularización y división de la memória y los procesadores en "conjuntos". chassis. Abajo muestro un ejemplo de scheduling de 4 procesadores y la utilización de memória: . Actualmente. almacenamiento interno. 8 y más sockets para colocación de procesadores. En entornos con multiples procesadores. enfriamento. quadcore. etc. Componentes de un clúster En general. A esta operación llamamos de scheduling (o agendamiento). como mínimo. Los sistemas operativos tienden a aprovechar de la mejor manera posible un procesador. un clúster de determinado tipo. que actualmente son. de modo que varios procesos que se ejecutan son asignados a procesadores distintos para que un buen balanceo de carga entre ellos ocurra. puede también presentar características de los otros. y ninguno se quede sobrecargado. La ventaja de agregar muchos procesadores y mucha memória en una sola computadora es el costo se ahorra en motherboard. que están por debajo de las aplicaciones en todos estos clústeres. hay servidores que soportan un gran cantidad de RAM (terabytes) y tienen 2.A pesar de las discrepancias a nivel de requisitos de las aplicaciones. 4. muchas de las características de las arquitecturas de hardware y software. son las mismas. Más aún. y se puede traducir como Acceso a Memória de modo No Uniforme. 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”.

lo que es normal durante su vida en un OS. La memória tiene 32GB distribuídos entre los procesos. o sea. Oracle y 2 procesos de Java. El Java sigue su funcionamiento. Cada grupo de procesadores físicos tienen acceso a solamente una parte de la memória física. La desventaja es que para cada procesador hay menos memória disponible para acceso directo. Fijense de que los procesos cambian de procesador. posibilitando un acceso mucho más rápido a la RAM: . milisegundos. Estes 3 ejemplos están funcionando sobre una arquitectura UMA. En NUMA en hardware crea nodos. nunca van a poder leer o escribir en la memória todos juntos. existen 4 procesos ejecutando (Calculadora. En el punto de tiempo 1. y esa es la desventaja del UMA. Por menor que sea el tiempo. o lo que sea). existen 3 puntos de tiempo (no me voy a detener en saber si son segundos. Como un proceso no está mas activo (el Calc) se libró 1Gb de ram que ocupaba. o sea. En el punto de tiempo 3 se puede ver que el Oracle no está mas en ejecución. y si ahora un Sql Server. 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. y si un procesador libre. El NUMA agrega otra perspectiva acerca del acceso de memória. pero solo hay 1 ruta. y un CPU está idle. Si bien puede ejecutar cosas en paralelo. por lo cual se distribuye en vários canales el acceso a RAM. Así la disputa por el BUS diminuye. pero la velocidad de acceso a RAM es más alta.En este ejemplo. conjuntos de procesadores con sus memórias privadas. todos los procesadores pueden acceder toda la memória. El punto de tiempo 2 no tiene el Calc. muy probablemente en hyperthreading).

5 ya tenía esta capacidad. migrando las mismas en caso de necesidad de un nodo a otro. pero puede pasar. o en NUMA.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. El VMware ESX 2. cada VM este contenida en un solo nodo. con mucha vRAM y muchos vCPUs. es muy raro que un único proceso necesite más que eso. En este caso. lo que generará una lentitud. la memória de otro nodo deberña ser utilizada. 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. sin que el administrador tenga que especificar nada manualmente. generar el hecho de que una única VM pueda estar compartida entre 2 o más nodos de CPU/RAM. com el ejemplo abajo: . 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). ya que la comunicación deberá pasar por el BUS compartido y también por el BUS interno del otro nodo utilizado. Con las nuevas versiones de hypervisors. En condiciones normales. Eso puede hacer con que VMs tengan tamaños grandes lo suficiente para generar lentitud en sistemas UMA. y hasta hoy lo hace automaticamente.

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). Una caché puede cambiar el estado de una línea en cualquier momento. ha sido modificado el valor de la memoria principal. I . 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. coincide con el valor de la memoria principal.Coherencia de cache y protocolo MESI (Explicar) El protocolo MESI. Una línea inválida puede ser cogida (de los estados Compartido o Exclusivo) para satisfacer una lectura. Esto se hace habitualmente con una operación broadcast. Una línea Modificada debe ser escrita antes. 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.    Para cualquier par de cachés.Shared (Compartido): Indica que esta línea de caché puede estar duplicada en otras cachés. también conocido como protocolo Illinois. es un extendido protocolo de coherencia de caché y coherencia de memoria.Invalid (Inválido): Indica que esta línea de caché no es válida. y descartar la línea (cambiándola ha estado Inválido) una vez hecho. E . S . Una escritura sólo puede ser llevada a cabo si la línea de caché está en estado Modificado o Exclusivo. 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. .Exclusive (Exclusivo): La línea de caché sólo se encuentra en la caché actual. Esto se hace habitualmente forzando la lectura back off (cancelar el bus de transferencia a memoria). y está "sucia". para luego escribir los datos en memoria principal y cambiar la línea de caché ha estado Compartido. pasándolo ha estado Inválido. Una caché que contenga una línea en estado Compartido debe también sondear todas las operaciones broadcast inválidas de otras CPUs. pero está "limpia". Si está en estado Compartido todas las otras copias en otras cachés deben ser puestas en estado Inválido antes.

(porque cambiar todas las líneas de caché de todas las CPUs no es práctico en un bus de sondeo broadcast) En ese sentido el estado Exclusivo es una optimización oportunista: si la CPU quiere modificar la línea de caché ha estado Compartido.Una caché que contenga una línea en estado Exclusivo también debe sondear todas las peticiones de lecturas del resto de CPUs y cambiar la línea ha estado Compartido una vez hecho. ya que no tiene sentido que por una lectura. El estado Compartido puede ser impreciso: si alguna otra CPU descarga una línea Compartida. y esta CPU es la única que tiene una copia. los BusRd/Flush de las transiciones de E a S no deberían incluir el Flush. porque por una lectura no es necesario realizar una actualización de la línea en memoria principal. se realice una invalidación en el resto de cachés para esa línea. en la transición BusRd/Flush del estado S al I. El estado Compartido permite modificar una línea de caché sin ningún intercambio por el bus. Por otro lado. Existen unos errores en el diagrama de estados de la imagen de arriba. es necesario un intercambio por el bus para invalidar cualquier otra copia en caché. Debería de ser BusRdX. la línea no será cambiada ha estado Exclusivo. . Los estados Modificado y Exclusivo son siempre precisos: corresponden a los poseedores de la línea correcta en el sistema.