Arquitectura de Computadoras

30 

Loading.... (view fulltext now)

Loading....

Loading....

Loading....

Loading....

Texto completo

(1)

 ARQUITECTUR

 ARQUITECTURA DE COMPUTAA DE COMPUTADORASDORAS TEORIA

TEORIA

1.

1. Explique brevemente las sExplique brevemente las siguientes representacioniguientes representaciones: signo-magnitud, complemento aes: signo-magnitud, complemento a dos, sesgada.

dos, sesgada.

signo-magnitud signo-magnitud

El formato Signo/Magnitud está fundamentado en el sis

El formato Signo/Magnitud está fundamentado en el sistema posicional binario que tema posicional binario que representarepresenta el signo del entero separado de su magn

el signo del entero separado de su magnitud. itud. Se separa un bit para representSe separa un bit para representar el signo; laar el signo; la costumbre es asignar el valor de

costumbre es asignar el valor de cero para representar positivo y uno para representar el cero para representar positivo y uno para representar el signosigno negativo.

negativo. El bit de signo puEl bit de signo puede ocupar cuede ocupar cualquier posición dealquier posición dentro de los bits de trntro de los bits de trabajo. abajo. ParaPara propósito de estas lecciones, presum

propósito de estas lecciones, presumimos que el bit del imos que el bit del signo ocupa la posición de más a lasigno ocupa la posición de más a la izquierda

izquierda

Complemento a dos Complemento a dos

El complemento a dos de un número N que, expresado en el

El complemento a dos de un número N que, expresado en el sistema binario sistema binario está compuestoestá compuesto por n

por n dígitos, dígitos, se define como: se define como:    

El total de números positivos será

El total de números positivos será   y el de negy el de negativosativos, siendo n el , siendo n el número máximonúmero máximo

de bits. de bits.

Sesgada Sesgada

El formato con Sesg

El formato con Sesgo es un formato binario. o es un formato binario. Una vez establecemos el espacio de trabUna vez establecemos el espacio de trabajo, elajo, el número de bits m

número de bits m al que escribimos la al que escribimos la representacrepresentación, hemos fijado el ión, hemos fijado el total de representacionestotal de representaciones posibles.

posibles. Este total se reparteEste total se reparte, mitad a enteros negativos, la otra mita, mitad a enteros negativos, la otra mitad al cero y a númerosd al cero y a números positivos.

positivos. Esto nos determina el Esto nos determina el entero negativo de tamaño entero negativo de tamaño mayor (el mínimo) que podemosmayor (el mínimo) que podemos representar.

representar. El total de reEl total de representacionepresentaciones ess es, la mitad es, la mitad es, por lo tanto, el mínimo es -, por lo tanto, el mínimo es -

. . La representación con sesgLa representación con sesgo se define entonces mediante uno se define entonces mediante una traslación de la rectaa 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í. 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

Esta traslación se consigue añadiendo a todo número el sesgo detodo número el sesgo de 

2.

2. Explique cómo determinar si un numero es Explique cómo determinar si un numero es negativo en las siguientes representaciones:negativo en las siguientes representaciones: signo-magnitud

signo-magnitud, complemento a , complemento a dos, sesgada.dos, sesgada.

El bit con signo El bit con signo

El bit del extremo izquierdo de un número binario afectado por un signo es el bit con

El bit del extremo izquierdo de un número binario afectado por un signo es el bit con signo, elsigno, el cual le dice si

cual le dice si el número es positivo o negativo. Un 0 es para signo positivo y un 1 para siel número es positivo o negativo. Un 0 es para signo positivo y un 1 para signogno negativo.

negativo.

Sistema

Sistema signo-magnitusigno-magnitudd

Cuando un número binario afectado por un signo se representa en signo-magnitud, el bit del 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

extremo izquierdo es el bit con signo y los restantes son los bits de magnitudbits de magnitud

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

usando el sistema signo-magnitusigno-magnitud como.d como.

El número decimal - 25 se expresa como: 10011001 El número decimal - 25 se expresa como: 10011001

(2)

Observe que la única diferencia entre + 25 y - 25 es el bit con signo, pues los bits de magnitud Observe que la única diferencia entre + 25 y - 25 es el bit con signo, pues los bits de magnitud están en la

están en la forma binaria verdadera para números positivos y negativos.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 En el sistema signo-magnitud, un número negativo tiene los mismos bits de magnitud que el positivo correspon

positivo correspondiente, pero el bit con signo es diente, pero el bit con signo es un 1.un 1.

Sistemas completos de 2´s Sistemas completos de 2´s

Los números positivos en el sistema de

Los números positivos en el sistema de complementcomplementos de 2´s os de 2´s se representa de la se representa de la misma maneramisma manera que en los sistemas signo-magnitud y complementos de 1´s. los nueceros negativos son los 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 complementos de 2´s de los positivos correspondientes. Tomemos de nuevo - 25 y expresémonos como el complemento de 2´s de + 25 (00011001):

expresémonos como el complemento de 2´s de + 25 (00011001): 11100111

11100111

En el sistema de complementos de 2´s, un número negativo es el complemento de 2´s del En el sistema de complementos de 2´s, un número negativo es el complemento de 2´s del positivo

positivo correspondientcorrespondiente.e.

En las computadoras, el sistema de complementos de 2´s es el más común para manejar En las computadoras, el sistema de complementos de 2´s es el más común para manejar números afectado

números afectados por s por signo, por razones que se signo, por razones que se explicaran a continuaciónexplicaran a continuación

En el sistema signo-magnitud, el - 39 se produce convirtiendo al bit con signo en 1 y dejando En el sistema signo-magnitud, el - 39 se produce convirtiendo al bit con signo en 1 y dejando intactos los bits de magnitud. El

intactos los bits de magnitud. El número es:número es: 10100111

10100111

En el sistema de complementos de 2´s, el - 39 se produce tomando el complemento de 2´s de + En el sistema de complementos de 2´s, el - 39 se produce tomando el complemento de 2´s de + 39 (11011000)

39 (11011000)

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

(00100111) como sigue:

3.

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

dos?

4.

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

5.

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

dos sobre un entero de N bits?

6.

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

(3)

Observe que la única diferencia entre + 25 y - 25 es el bit con signo, pues los bits de magnitud Observe que la única diferencia entre + 25 y - 25 es el bit con signo, pues los bits de magnitud están en la

están en la forma binaria verdadera para números positivos y negativos.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 En el sistema signo-magnitud, un número negativo tiene los mismos bits de magnitud que el positivo correspon

positivo correspondiente, pero el bit con signo es diente, pero el bit con signo es un 1.un 1.

Sistemas completos de 2´s Sistemas completos de 2´s

Los números positivos en el sistema de

Los números positivos en el sistema de complementcomplementos de 2´s os de 2´s se representa de la se representa de la misma maneramisma manera que en los sistemas signo-magnitud y complementos de 1´s. los nueceros negativos son los 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 complementos de 2´s de los positivos correspondientes. Tomemos de nuevo - 25 y expresémonos como el complemento de 2´s de + 25 (00011001):

expresémonos como el complemento de 2´s de + 25 (00011001): 11100111

11100111

En el sistema de complementos de 2´s, un número negativo es el complemento de 2´s del En el sistema de complementos de 2´s, un número negativo es el complemento de 2´s del positivo

positivo correspondientcorrespondiente.e.

En las computadoras, el sistema de complementos de 2´s es el más común para manejar En las computadoras, el sistema de complementos de 2´s es el más común para manejar números afectado

números afectados por s por signo, por razones que se signo, por razones que se explicaran a continuaciónexplicaran a continuación

En el sistema signo-magnitud, el - 39 se produce convirtiendo al bit con signo en 1 y dejando En el sistema signo-magnitud, el - 39 se produce convirtiendo al bit con signo en 1 y dejando intactos los bits de magnitud. El

intactos los bits de magnitud. El número es:número es: 10100111

10100111

En el sistema de complementos de 2´s, el - 39 se produce tomando el complemento de 2´s de + En el sistema de complementos de 2´s, el - 39 se produce tomando el complemento de 2´s de + 39 (11011000)

39 (11011000)

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

(00100111) como sigue:

3.

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

dos?

4.

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

5.

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

dos sobre un entero de N bits?

6.

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

(4)

7.

7. Si al sumar tratamos los numero en complemento a dos como si fuesen enteros sin signo,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

el resultado, interpretado como numero en complemento a dos, es correcto. ¿Por quécorrecto. ¿Por qué esto no se

esto no se cumple para la multiplicación?cumple para la multiplicación?

8.

8. ¿Cuáles son los cuatro elemento¿Cuáles son los cuatro elementos esenciales de un s esenciales de un número en la notación de cómonúmero en la notación de cómo flotante?

flotante?

9.

9. ¿Qué ventaja supone utilizar la ¿Qué ventaja supone utilizar la representaciórepresentación sesgada para la n sesgada para la parte del exponente de unparte del exponente de un número en como

número en como flotante?flotante?

10.

10. ¿Qué diferencia existen entre ¿Qué diferencia existen entre desbordamientdesbordamiento positivo, desbordamiento del exponente, yo positivo, desbordamiento del exponente, y desbordamiento de la parte

desbordamiento de la parte significativa?significativa?

11.

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

 SumaSuma

 En la suma existe la posibilidad de desbordaEn la suma existe la posibilidad de desbordamiento a miento a infinito (overfloinfinito (overflow) del valor de law) del valor de la

mantisa mantisa

 El desbordamiento se debEl desbordamiento se debe corregir desplazande corregir desplazando la o la mantisa una posición a la derecha ymantisa una posición a la derecha y

sumando uno

sumando uno al al exponenteexponente

 Es importante controlar la posibilidad de que el Es importante controlar la posibilidad de que el exponente se desborde al realizar estaexponente se desborde al realizar esta

operación, ya que obtendríamos un número no representable operación, ya que obtendríamos un número no representable

 RestaResta

 En la resta existe la posibilidad de obtener un núEn la resta existe la posibilidad de obtener un número mero con uno o varios ceros en los bitscon uno o varios ceros en los bits

más significativos, lo que obligaría a

más significativos, lo que obligaría a normalizar el resultadonormalizar el resultado

 La normalización se realiza desplazandLa normalización se realiza desplazando la mantisa a o la mantisa a la izquierda y restando uno alla izquierda y restando uno al

exponente por cada posición

exponente por cada posición desplazadadesplazada

 Es importante controlar la posibilidad de que el Es importante controlar la posibilidad de que el exponente se desborde a ceroexponente se desborde a cero

(underflow) (underflow)

 Una posible solución sería usar Una posible solución sería usar el formato no normalizadoel formato no normalizado 

 Si este formato tampocSi este formato tampoco es suficiente, entonces el número o es suficiente, entonces el número no es representablno es representablee

12.

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

13.

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

operación de coma flotante.

 Redondeo al más cercano (al par en caso Redondeo al más cercano (al par en caso de empate)de empate)  Redondeo a más infinito (por Redondeo a más infinito (por exceso)exceso)

 Redondeo a menos infinito (por Redondeo a menos infinito (por defecto)defecto)  Redondeo a cero Redondeo a cero (truncamient(truncamiento)o)

(5)

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 elcomplemento 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) 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 ( ).

(b) 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 (b) 110011000 (c) 111100001111 (d) 11000011

-110011 -101110 -110011110011 -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

(6)

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?

(7)

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éricosA 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

(8)

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?

(9)

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 deflujo 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

(10)

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í:

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"

¿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.

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.

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

(11)

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

(12)

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 Desventajas

 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).

 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.

 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.

(13)

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) Sin signo

b) En signo-magnitud c) En complemento a uno d) En complemento a dos

e) Decimal empaquetado sin signo f) Decimal empaquetado con signo

¿De qué forma se redondean los 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)    

(14)

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.

(15)

 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

(16)

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

(17)

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

(18)
(19)

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 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).

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 procesamiento 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

(20)

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 eficiencia 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.

(21)

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

(22)

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

(23)

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.

(24)

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

(25)

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.

(26)

De un clúster se espera que presente combinaciones de los siguientes servicios: 1. Alto rendimiento

2. Alta disponibilidad 3. Balanceo de carga 4. 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).

(27)

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”, yse 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).

Figure

Actualización...

Referencias

Actualización...

Related subjects :