Sei sulla pagina 1di 54

Arquitectura de Computadoras

Semana 03: Unidad Central de


Procesamiento
(Parte 1)

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

Temario:

– Unidad Aritmética y Lógica (ALU)


– Representación de enteros
– Aritmética de enteros
– Representación con punto flotante
– Aritmética de punto flotante
– Almacenamiento de datos
– Co-Procesadores

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.1.- Unidad Aritmética y Lógica (ALU)

¿Qué es la Unidad Aritmética


y Lógica?

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.1.- Unidad Aritmética y Lógica (ALU)

● La ALU es la parte de la computadora que lleva a cabo las operaciones aritméticas y


lógicas sobre los datos. Todos los demás elementos del sistema computacional – unidad
de control, registros, memoria, módulos E/S – sirven, principalmente, para traer los datos
hasta la ALU para que ésta los procese y para llevar los resultados de vuelta.

● 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

Entradas y salidas de la ALU.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.2.- Tamaño de dato

En un procesador los datos son almacenados en registros, en forma de palabras. Por lo


general, estas palabras están formadas por una cantidad entera de bytes que es estándar. El
tamaño de una palabra almacenada en un registro es definida por el ancho del bus de datos.
Una palabra grande puede dividirse en partes y almacenarse en múltiples registros.

8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits


b63 b56 b55 b48 b47 b40 b39 b32
8 bits 8 bits 8 bits 8 bits
b31 b24 b23 b16
8 bits 8 bits
b15 b8
8 bits
b7 b0
MSB MSB MSB LSB

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.3.- Formato de dato

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

El conjunto de los números complejos.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.4.- Tipo de dato

El tipo de dato de una palabra es importante porque:

● Especifica el tamaño del dato (rango de valores).

● Especifica el formato del dato (como debe leerse).

Ejemplo:
3 196 898 509 (Número natural)

10111110 10001100 11001100 11001101 -1 098 068 787 (Número entero)

-0.275 (Número real)

Tamaño Formato
(32 bits)

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.5.- Representación de enteros

● En el sistema numérico binario, cualquier número puede ser representado empleando


solamente los digitos 0 y 1, el signo menos y el punto fraccionario.

-1101.01012 = -13.312510

● Sin embargo, para propósitos de almacenamiento y procesamiento, no contamos con el


beneficio de signos negativos ni puntos. Únicamente pueden utilizarse dígitos binarios (1 y
0) para representar números.

● Si estamos limitados a números enteros no negativos (números naturales), la


representación es directa. Por ejemplo:

00000000 = 0
00101001 = 41
10000000 = 128
11111111 = 255

● En general si una secuencia de bits a n-1an-2...a1a0 es interpretada como un número entero


sin signo A, su valor es:
n−1
A=∑ 2 ai
i

i=0

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.5.- Representación de enteros

bit de signo
Enteros sin signo (naturales) Enteros con signo

0→ 0000 0→ 0000 0→ 0000


1→ 0001 1→ 0001 1→ 0001
2→ 0010 2→ 0010 2→ 0010
3→ 0011 3→ 0011 3→ 0011
4→ 0100 4→ 0100 4→ 0100
5→ 0101 5→ 0101 5→ 0101
6→ 0110 6→ 0110 6→ 0110
7→ 0111 7→ 0111 7→ 0111
8→ 1000 -0 → 1000 -8 → 1000
9→ 1001 -1 → 1001 -7 → 1001
10 → 1010 -2 → 1010 -6 → 1010
11 → 1011 -3 → 1011 -5 → 1011
12 → 1100 -4 → 1100 -4 → 1100
13 → 1101 -5 → 1101 -3 → 1101
14 → 1110 -6 → 1110 -2 → 1110
15 → 1111 -7 → 1111 -1 → 1111

Método ineficiente Complemento a 2

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.5.- Representación de enteros

Representación con Signo Magnitud

● 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

● La forma más simple de representación que emplea un bit de signo es la representación


Signo Magnitud, donde en una palabra de n bits, los n-1 bits más a la derecha almacenan
la magnitud del entero. Por ejemplo:

18 = 00010010
-18 = 10010010

● Esta representación presenta varios inconvenientes, entre los cuales resaltan:

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.

b) Existen dos representaciones de cero:

+0 = 00000000
-0 = 10000000

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.5.- Representación de enteros

Representación con Complemento a Dos

● 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

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.5.- Representación de enteros

Conversión entre Complemento a Dos y Decimal.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.5.- Representación de enteros

Conversión entre distintos tamaños

● A veces es necesariotomar un entero de n bits y almacenarlo en m bits, donde m > n.

● En la notación Signo Magnitud simplemente se mueve el bit de signo a la nueva posición


más a la izquierda y se rellenan los bits restantes con ceros.

18 = 00010010 (signo magnitud, 8 bits)


18 = 0000000000010010 (signo magnitud, 16 bits)
-18 = 10010010 (signo magnitud, 8 bits)
-18 = 1000000010010010 (signo magnitud, 16 bits)

● 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

-18 = 10010010 (complemento a dos, 8 bits)


-18 = 1111111110010010 (complemento a dos, 16 bits)

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.5.- Representación de enteros

Características de la representación y la aritmética del complemento a dos.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.5.- Representación de enteros

(a) Números de 4 bits (b) Números de n bits

Representación geométrica de números enteros en complemento a dos.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.6.- Aritmética de números enteros

Negación

En la representación signo magnitud la regla para formar la negación de un entero es simple:


invertir el bit de signo. Sin embargo, en la notación de complemento a dos la negación de un
entero consta de los siguientes pasos:

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.

2) Tratando el resultado como un número entero sin signo, sumarle 1.

Ejemplo:

+18 = 00010010 (Complemento a dos)


complemento a nivel de bits = 11101101
+ 1
-------------------
11101110 = -18

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.6.- Aritmética de números enteros

Adición y Sustracción

● Para la adición, se suman dos números binarios de manera convencional. Si el resultado


de la operación es positivo, obtenemos un número en notación binaria ordinaria. Si el
resultado de la operación es negativa, obtenemos un números en notación de
complemento a dos. Si hubiera algún bit de carry fuera de la palabra, éste es ignorado.

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

● Para la sustracción, la regla es la siguiente: Para substraer un número (sustraendo) de otro


(minuendo), se debe tomar el complemento a dos (negación) del sustraendo y sumarlo al
minuendo. Por lo tanto, la sustracción es calculada usando una adición.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.6.- Aritmética de números enteros

Adición de números en representación complemento a dos.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.6.- Aritmética de números enteros

Sustracción de números en representación complemento a dos.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.6.- Aritmética de números enteros

Diagrama de bloques de hardware para adición y sustracción.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.6.- Aritmética de números enteros

Multiplicación de números enteros sin signo

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:

1) La multiplicación implica la generación de productos parciales, uno para cada dígito en el


multiplicador. Luego, estos productos parciales son sumados para generar el producto
final.

2) Los productos parciales son fácilmente definidos. Cuando el bit multiplicador es 0, el


producto parcial es 0. Cuando el ultiplicador es 1, el producto parcial es el multiplicando.

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.

4) La multiplicación de dos números enteros binarios de n bits resulta en un producto de


hasta 2n bits de tamaño (Por ejemplo: 11 x 11 = 1001).

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.6.- Aritmética de números enteros

Multiplicando M
Multiplicador Q

Productos
parciales

Producto P

Multiplicación de enteros binarios sin signo.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.6.- Aritmética de números enteros

Diagrama de bloques de hardware para multiplicación de enteros binarios sin signo.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.6.- Aritmética de números enteros

Diagrama de flujo de la multiplicación de enteros binarios sin signo.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.6.- Aritmética de números enteros

Ejemplo de multiplicación de dos números M y Q con el hardware descrito.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.6.- Aritmética de números enteros

Multiplicación de números enteros con signo

A diferencia de la adición, no es posible llevar a cabo una multiplicación mediante el método


directo (el asumir que ambos operadores son enteros sin signo) ya que esto llevaría a un
resultado errado. Para resolver este problema se han elaborado diferentes algoritmos, siendo
el más conocido el de Booth, el cual consiste en los siguiente:

1) Como en el caso anterior, el multiplicador y el multiplicando son colocados en los registros


Q y M, respectivamente. Además, hay un registro de 1 bit ubicado a la derecha del bit
menos significativo (Q0) del registro Q y designado Q-1. A y Q-1 son inicializados en cero.

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.

4) En ambos casos el desplazamiento hacia la derecha debe ser aritmético (conservando el


bit de signo). Los resultados de la multiplicación se encuentran en A y Q.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.6.- Aritmética de números enteros

Diagrama de flujo de la multiplicación mediante el algoritmo de Booth.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.6.- Aritmética de números enteros

 A       Q     Q­1     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 

Ejemplo con el algoritmo de Booth (7 x 3).

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.6.- Aritmética de números enteros

 A       Q     Q­1     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 

Ejemplo con el algoritmo de Booth (-7 x 3).

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.6.- Aritmética de números enteros

División de números enteros

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.

División entre dos números binarios sin signo.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.6.- Aritmética de números enteros

Diagrama de flujo del algoritmo de la división.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.6.- Aritmética de números enteros

Desplazamiento aritmético

Un desplazamiento de bits puede ocurrir tanto a la izquierda como a la derecha. Un


desplazamiento hacia la derecha en donde los bits del extremo izquierdo son completados
con 0 es conocido como desplazamiento lógico.

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,

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.7.- Representación de números reales

Representación en punto fijo

-Uso común en microcontroladores.


Parte fraccionaria

-Posibles problemas de precisión.


bs

Signo Parte entera


-No es útil para representar números
muy grandes ni muy pequeños.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.7.- Representación de números reales

Representación en punto flotante

Para solucionar las limitaciones presentadas por la representación en punto fijo, la


representación en punto flotante se basa en la notación científica empleada para expresar
tanto números muy grandes como números muy pequeños.

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

En este caso, el valor numérico de la base se encuentra implícito (usualmente 2) y no hace


falta incluirlo en la palabra binaria. El signo, valor numérico del significando (S) y el exponente
(E) deben incluirse en la palabra que representa a todo el número. En la siguiente página se
muestra un formato típico con ejemplos.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.7.- Representación de números reales

(a) Formato

(b) Ejemplos

Formato típico de un número de punto flotante de 32 bits.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.7.- Representación de números reales

Concepto de número normalizado

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.

Considerando en una computadora se trabaja con representación en base 2 y que, por


convención, se tiene un dígito a la izquierda del punto fraccionario, un número normalizado
diferente de cero tendría la siguiente forma:

Valor = S x B±E = ± 1.bbb … b x 2±E

Donde b es un dígito binario (0 ó 1).

Debido a que el dígito binario siempre es 1, no es necesario almacenar este dígito, ya que
está implícito.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.8.- El estándar IEEE 754 para números de punto flotante

Punto flotante de precisión simple (float)

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.

Formato IEEE para punto flotante de precisión simple.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.8.- El estándar IEEE 754 para números de punto flotante

Categorías de valores en punto flotante (estándar IEEE)

1) Para valores de exponente en el rango de 1 a 254, los números son representados en


formato normalizado. Se agrega un offset al exponente verdadero, el cual va desde -126
hasta +127. Al ser un número normalizado, se asume que hay un bit 1 a la izquierda del
punto fraccionario.

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.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.8.- El estándar IEEE 754 para números de punto flotante

1. Normalizado

2. Denormalizado

3a. Infinito

3b. NaN

Categorías de valores en punto flotante de precisión simple.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.8.- El estándar IEEE 754 para números de punto flotante

Conversión de un número decimal a punto flotante de precisión simple

Se sabe que, para un número en punto flotante de precisión simple se cumple:

V = (-1)S x (N.frac) x 2(exp - Bias)

Donde:

V es el valor real del número

S es el bit de signo

N es el dígito binario a la izquierda del punto (1 si el número es normalizado)

frac es la parte fraccionaria, la cual está a la derecha del punto (mantisa)

exp es el exponente en el formato IEEE (exponente real + Bias)

Bias es el valor de Offset, en precisión simple es igual a 127

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.8.- El estándar IEEE 754 para números de punto flotante

Conversión de un número decimal a punto flotante de precisión simple

Ejemplo 1:

Representar -118.625 en punto flotante de precisión simple.

1) Determinar el bit de signo: 1

2) Convertir la parte entera a binario: 1110110

3) Convertir la parte fraccionaria a binario y añadirla a la parte entera: 1110110.101

4) Expresar el número con un digito significativo a la izquierda del punto fraccionario:

1.110110101 x 26

5) La mantisa vale: 110110101

6) Calcular el valor de exp: 6 + 127 = 133 = 10000101

7) Por lo tanto, el número en formato IEEE es: 1 10000101 11011010100000000000000

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.8.- El estándar IEEE 754 para números de punto flotante

Conversión de un número decimal a punto flotante de precisión simple

Ejemplo 2:

Representar 0.625 en punto flotante de precisión simple.

1) Determinar el bit de signo: 0

2) Convertir la parte entera a binario: 0

3) Convertir la parte fraccionaria a binario y añadirla a la parte entera: 0.101

4) Expresar el número con un digito significativo a la izquierda del punto fraccionario:

1.01 x 2-1

5) La mantisa vale: 01

6) Calcular el valor de exp: -1 + 127 = 126 = 01111110

7) Por lo tanto, el número en formato IEEE es: 0 01111110 01000000000000000000000

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.8.- El estándar IEEE 754 para números de punto flotante

Conversión de un número en punto flotante a representación decimal

Convertir a decimal los siguientes números en punto flotante:

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

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.8.- El estándar IEEE 754 para números de punto flotante

Punto flotante de precisión doble (double)

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.

Formato IEEE para punto flotante de precisión doble.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.8.- El estándar IEEE 754 para números de punto flotante

Aritmética en punto flotante

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

Por motivos de practicidad, no se ahondará en la aritmética de punto flotante en este curso.


Sin embargo, hay dos puntos importantes que deben tomarse en cuenta al realizar
operaciones con números en punto flotante:

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

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- REPRESENTACIÓN DE DATOS NUMÉRICOS

1.8.- El estándar IEEE 754 para números de punto flotante

Tarea para el estudiante

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?

2) El 25 de Febrero de 1991, durante la primera Guerra del Golfo, un interceptor de misiles


estadounidense (American Patriot Missile) en Arabia Saudita falló en interceptar un misil
Scud proveniente de Irák. El misil impactó en las barracas estadounidenses y mató a 28
soldados.

Se sabe que el interceptor de misiles falló el objetivo debido a un error en la programación


¿En qué consistió dicho error?

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

2.- ALMACENAMIENTO DE DATOS EN MEMORIA

2.1.- Orden de los bytes (Endianess)

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 .

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

2.- ALMACENAMIENTO DE DATOS EN MEMORIA

2.1.- Orden de los bytes (Endianess)

Liliput Blefuscu

Estrecho extremistas Ancho extremistas


(Little endians) (Big endians)

Entero de 32 bits Entero de 32 bits


(Hexadecimal) (Hexadecimal)

Memoria Memoria

“Los viajes de
Gulliver”

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

2.- ALMACENAMIENTO DE DATOS EN MEMORIA

2.2.- Almacenamiento temporal

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)

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

2.- ALMACENAMIENTO DE DATOS EN MEMORIA

2.2.- Almacenamiento temporal

Queue (Fila)

Se llama Queue al modelo de almacenamiento temporal donde el primer dato en ser


almacenado es también el primer dato en ser extraído.

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

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

2.- ALMACENAMIENTO DE DATOS EN MEMORIA

2.2.- Almacenamiento temporal

Stack (Pila)

Se llama Stack al modelo de almacenamiento temporal donde el último dato en ser


almacenado es el primer dato en ser extraído.

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

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

3.- CO-PROCESADORES

3.1.- Co-procesador

Un co-procesador es un procesador computacional, empleado para suplementar las


funciones del procesador primario (CPU).

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.

Al reducir la carga de tareas intensas al procesador principal, los co-procesadores pueden


acelerar el rendimiento del sistema. Un ejemplo encontrado comúnmente es el uso de un
procesador gráfico (GPU) incorporado en una tarjeta de video para una PC.

Procesador gráfico (GPU) en una tarjeta de video NVIDIA.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

3.- CO-PROCESADORES

3.2.- Unidad de punto flotante (FPU)

Una unidad de punto flotante, también llamada co-procesador matemático o procesador de


datos numéricos (NDP), es un co-procesador que está diseñado especialmente para llevar a
cabo operaciones con números en punto flotante.

Las operaciones típicamente incorporadas son adición, sustracción, multiplicación, división,


raíz cuadrada y desplazamiento de bits. Algunos sistemas (particularmente los más antiguos)
también pueden realizar otras funciones como cálculos exponenciales o trigonométricos,
aunque en los procesadores más actuales esto es calculado mediante software.

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.

El procesador de datos numéricos 8087 de Intel.

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro


Arquitectura de Computadoras

4.- PREGUNTAS

Semana 03 – CPU: Parte 1 Miguel A. Torres Lázaro

Potrebbero piacerti anche