Arquitectura - Semana 3 PDF
Arquitectura - Semana 3 PDF
Arquitectura - Semana 3 PDF
Temario:
● Los datos son presentados a la ALU en registros, y los resultados de las operaciones son
almacenados también en registros. Estos registros son ubicaciones de almacenamiento
temporal que se encuentran dentro del procesador y que están conectados a la ALU.
● La ALU puede también activar banderas como resultado de una operación. Por ejemplo:
bandera de desbordamiento, bandera de resultado cero, entre otras.
● Los valores de las banderas también son almacenados en registros dentro del procesador.
Unidad de
Banderas
control
ALU
Registros Registros
Números complejos
Números naturales:
7; 0; 1523
Números reales
Números enteros:
Números racionales
-53; 0; 127
Números
imaginarios Números reales:
Números enteros
-0.125; 0.0; 1.5e12
Números
naturales
Números complejos:
-0.5j; 1.25 + 3j
Ejemplo:
3 196 898 509 (Número natural)
Tamaño Formato
(32 bits)
-1101.01012 = -13.312510
00000000 = 0
00101001 = 41
10000000 = 128
11111111 = 255
i=0
bit de signo
Enteros sin signo (naturales) Enteros con signo
● Existen varias convenciones alternativas usadas para representar números tanto positivos
como negativos, y todas ellas implican tratar el bit más significativo (más a la izquierda) en
la palabra como un bit de signo
18 = 00010010
-18 = 10010010
a) La adición y sustracción requiere que se consideren tanto el signo de los números como
sus magnitudes relativas para llevar a cabo la operación.
+0 = 00000000
-0 = 10000000
● Al igual que en el caso anterior, la representación con Complemento a Dos usa el bit más
significativo como bit de signo, haciendo fácil reconocer si un número es positivo o
negativo.
● La diferencia está en la manera como los demás bits son interpretados. Consideremos un
número entero A, formado de n bits en representación complemento a 2. Si A es positivo,
entonces el bit de signo an-1 es cero. El resto de los bits representa la magnitud del
número, al igual que en la representación Signo Magnitud.
n−2
A=∑ 2i ai para A > 0
i=0
● Sin embargo, para un número negativo, el bit de signo an-1 es uno. Los demás bits
pueden tomar 2n-1 valores diferentes. Por lo tanto, el rango números negativos que
pueden ser representados va desde -1 hasta -2 n-1.
n−2
a n−1 + ∑ 2i ai
n−1
A=−2 para A < 0
i=0
● Por otro lado, para la notación Complemento a Dos la regla cambia. En este caso todos los
bits añadidos se rellenan con el valor del bit de signo original
Negación
1) Tomar el complemento Booleano de cada bit del entero (incluido el bit de signo). Es decir,
convertir cada 1 en 0 y cada 0 en 1.
Ejemplo:
Adición y Sustracción
● En cualquier adición, el resultado puede ser mayor de lo que puede soportar el tamaño de
palabra que está siendo usado. Esta condición es llamada desbordamiento (overflow).
Cuando un desbordamiento ocurre, la ALU debe indicar indicar este hecho, de modo que el
resultado obtenido no sea tomado en cuenta.
La multiplicación de números enteros sin signo puede llevarse a cabo manualmente (con
lápiz y papel) de manera sencilla. Pueden hacerse muchas observaciones importantes:
3) El producto total es producido mediante la suma de los productos parciales. Para esta
operación, cada producto parcial sucesivo es desplazado una posición hacia la izquierda
relativo al producto parcial previo.
Multiplicando M
Multiplicador Q
Productos
parciales
Producto P
2) La lógica de control escanea los bits del multiplicador, uno a uno. Cuando cada bit es
examinado, el bit de su derecha (Q -1) también es examinado. Si los dos bits son iguales (1-1
ó 0-0), entonces todos los bits de A, Q y Q -1 son desplazados una posición hacia la derecha.
3) Por otro lado, si los dos bits son diferentes, entonces el multiplicando es añadido o sustraido
del registro A, dependiendo de si los valores de los bits son 0-1 ó 1-0, respectivamente.
Luego de la adición o sustraccón, todos los bits de A, Q y Q-1 son deplazados una posición
hacia la derecha.
A Q Q1 M
0000 0011 0 0111 Valores iniciales
1001 0011 0 0111 A <= A – M Primer
1100 1001 1 0111 Desplaza ciclo
1110 0100 1 0111 Desplaza Segundo
ciclo
0101 0100 1 0111 A <= A + M Tercer
0010 1010 0 0111 Desplaza ciclo
Cuarto
0001 0101 0 0111 Desplaza
ciclo
Producto = 00010101 = 21
A Q Q1 M
0000 0011 0 1001 Valores iniciales
0111 0011 0 1001 A <= A – M Primer
0011 1001 1 1001 Desplaza ciclo
0001 1100 1 1001 Desplaza Segundo
ciclo
1010 1100 1 1001 A <= A + M Tercer
1101 0110 0 1001 Desplaza ciclo
Cuarto
1110 1011 0 1001 Desplaza
ciclo
Producto = 11101011 = 21
La división es más compleja que la multiplicación, pero está basada en los mismos principios
generales. Como en el caso de la multiplicación, la operación implica desplazamientos y
sumas/restas repetitivas.
El proceso de división para enteros con signo presenta una mayor complejidad que la división
de enteros sin signo. Por motivos de practicidad, no se abordará la división con números
negativos en esta parte del curso.
Desplazamiento aritmético
En contraste, un desplazamiento hacia la derecha donde los bits del extremo izquierdo son
completados con el bit más significativo original (bit de signo), se conoce como
desplazamiento aritmético.
Se le llama aritmético porque toma en cuenta el signo del número antes de llevar a cabo el
desplazamiento.
Los desplazamiento hacia la izquierda son usualmente empleados para llevar a cabo
multiplicaciones por potencias de 2 de manera rápida. Por otro lado, si se desea llevar a cabo
divisiones entre potencias de dos, debe utilizarse desplazamientos aritméticos de modo que
el signo del resultado sea el correcto,
Por ejemplo:
976 000 000 000 000 puede ser expresado como 9.76 x 1014
El mismo planteamiento puede tomarse para números binarios. Un número puede ser
representado de la siguiente manera:
Valor = S x B±E
(a) Formato
(b) Ejemplos
Para simplificar las operaciones con números en punto flotante, usualmente se requiere que
estos números se encuentren normalizados. Un número normalizado es aquel en el cual el
dígito más significativo del significando es diferente de cero.
Debido a que el dígito binario siempre es 1, no es necesario almacenar este dígito, ya que
está implícito.
Uno de los formatos estándares desarrollados por la IEEE es el punto flotante de precisión
simple, el cual contiene toda la información del número distribuida en 32 bits, de la siguiente
manera:
● El bit ubicado más a la izquierda (bit 31) es el bit de signo. Si este bit es 0, entonces el
número es positivo; si el bit es 1, el número es negativo.
● Los bits del 23 al 30 (8 bits) representan un exponente al cual se le debe agregar un offset.
● Los bits del 0 al 22 (23 bits) representan la parte fraccionaria del número, también llamada
mantisa.
2) Un exponente de cero junto con una fracción diferente de cero representa un número
que no está normalizado. En este caso, el bit a la izquierda del punto fraccionario es 0 y el
verdadero exponente es -126. El número puede ser positivo o negativo, dependiendo del
bit de signo.
Un exponente de cero junto con una fracción de cero representa cero positivo o cero
negativo, dependiendo del bit de signo.
3) Un exponente de 255 (todos los bits en 1) con una fracción igual a 0 representa infinito
positivo o infinito negativo, dependiendo del bit de signo.
Un exponente de 255 (todos los bits en 1) con una fracción diferente de 0 recibe el valor
NaN (Not A Number), y es utilizado para indicar varias señales de excepción.
1. Normalizado
2. Denormalizado
3a. Infinito
3b. NaN
Donde:
S es el bit de signo
Ejemplo 1:
1.110110101 x 26
Ejemplo 2:
1.01 x 2-1
5) La mantisa vale: 01
1) 0 10010011 10100010000000000000000
2) 1 10010011 10100010000000000000000
3) 0 01101011 10100010000000000000000
4) 1 01101011 10100010000000000000000
5) 0 00000000 10100010000000000000000
Respuestas:
1) 1.6328125 x 220
2) -1.6328125 x 220
3) 1.6328125 x 2-20
4) -1.6328125 x 2-20
5) 0.6328125 x 2-126
Otro de los formatos estándares desarrollados por la IEEE es el punto flotante de precisión
doble, el cual contiene toda la información del número distribuida en 64 bits, de la siguiente
manera:
● El bit ubicado más a la izquierda (bit 63) es el bit de signo. Si este bit es 0, entonces el
número es positivo; si el bit es 1, el número es negativo.
● Los bits del 52 al 62 (11 bits) representan un exponente al cual se le debe agregar un
offset. Al tener más bits en el exponente se incrementa el rango de trabajo.
● Los bits del 0 al 51 (52 bits) representan la parte fraccionaria del número, también llamada
mantisa. Al tener más bits en la mantissa se incrementa la precisión.
Las operaciones aritméticas (adición, sustracción, multiplicación, división) entre números con
punto flotante siguen procedimientos más complejos que los empleados para números
enteros, ya que en muchos casos deben igualarse los exponentes para poder llevar a cabo
una operación (por ejemplo, una suma).
● Si se lleva a cabo una adición o sustracción entre dos números con exponentes muy
alejados (digamos 2-50 y 250), el número de menor exponente será “despreciado” y el
resultado de la operación será igual al número de mayor exponente.
● Las operaciones con números en punto flotante, por lo general, no son realizadas por la
ALU. Para esto, existe un procesador adicional, dedicado exclusivamente a operar este
tipo de números (FPU).
1) El 4 de Junio de 1996, el cohete Ariane 5, fue lanzado al espacio para una misión de
exploración. Sin embargo, 37 segundos después del lanzamiento el cohete empezó a
desviarse de su ruta, se desmanteló y explotó. Habían satélites de comunicación valuados
en 500 millones de dólares a bordo del cohete.
Se sabe que la causa de la falla fue un error en la programación del cohete ¿En qué
consistió dicha falla?
Dirección baja .
.
.
uint8_t x = 58; 90h
91h 0x3A x
92h
int8_t y = 1; 93h 0xFF y
94h
95h
uint16_t z = 0x1234;
96h 0x34
z
97h 0x12
.
.
Dirección alta .
Liliput Blefuscu
Memoria Memoria
“Los viajes de
Gulliver”
En la gran mayoría de programas de computadora hay algunos datos que se desea guardar
durante todo el tiempo que el programa se ejecuta, mientras que hay otros datos que se
desea almacenar de manera temporal (resultados parciales, parámetros, direcciones para
retornos de saltos, etc.).
Para los datos que se desea almacenar de manera temporal se reserva un área especial de
la memoria. Dependiendo del mecanismo como estos datos son almacenados y extraídos de
una posición de la memoria, esta área puede recibir dos nombres:
● Queue (Fila)
● Stack (Pila)
Queue (Fila)
El nombre técnico de este mecanismo es FIFO (First In First Out), pero entre los
programadores es común utilizar el término “Fila”, ya que el flujo de los datos nos hace
recordar al flujo de personas en la fila de un banco o un supermercado: el primero en entrar a
la fila es el primero en ser atendido y, por lo tanto, es también el primero en salir de la fila.
Mecanismo FIFO
Stack (Pila)
El nombre técnico de este mecanismo es LIFO (Last In First Out), pero entre los
programadores es común utilizar el término “Pila”, ya que el flujo de los datos nos hace
recordar a la manera como un profesor revisa los cuadernos de sus estudiantes y los va
apilando uno sobre otro. El último cuaderno en ser revisado, al encontrarse en lo más alto de
la pila, será el primero en ser devuelto a su dueño.
Mecanismo LIFO
3.- CO-PROCESADORES
3.1.- Co-procesador
Las operaciones realizadas por el co-procesador pueden ser aritmética de punto flotante,
gráficos, procesamiento de señales, procesamiento de cadenas de caracteres, encriptación o
interfase de Entrada/Salida con dispositivos periféricos.
3.- CO-PROCESADORES
En las arquitecturas de las computadoras de propósito general uno o más FPUs son
incorporados dentro de la unidad central de proceso (CPU). Sin embargo, muchos
procesadores embebidos no cuentan con hardware para llevar a cabo operaciones con punto
flotante.
4.- PREGUNTAS