tema13 alu numeros enteros
TRANSCRIPT
11
����������� ������������ ����
� �� �������� �����������������
Óscar David Robles SánchezÁngel Serrano Sánchez de León
Luis Rincón Córcoles
Estructura y Tecnología de Computadores (ITIG)
2
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
Programa
1. Introducción.
2. Construcción de una ALU básica.
3. Multiplicación básica y su circuitería.
4. División básica y su circuitería.
5. Bibliografía.
Conceptos básicos: Unidad aritmético-lógica, operaciones lógicas, sumador, restador, indicador de resultado, algoritmos de multiplicación de enteros sin signo, algoritmos de división de enteros sin signo (división por restauración).
22
3
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
1. Introducción
Una unidad aritmética y lógica (UAL) es un circuito combinacional que realiza las operaciones aritméticas y lógicas básicas en el computador.
• Operaciones aritméticas básicas: suma, resta, multiplicación, división.
• Operaciones lógicas básicas: NOT, AND, OR, NAND, NOR.
• En inglés: ALU (arithmetic and logic unit).
• En algunos sitios: unidad aritmético-lógica.
A L U
operando1 operando2
operación indicador de resultado
resultado
4
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
2. Construcción de una ALU básica
La implementación de circuitos para operaciones lógicas es muy sencilla: basta simplemente con una batería de puertas lógicas y un multiplexor accionado por las correspondientes señales de selección.
Ejemplo: unidad lógica de 1 bit con las funciones AND y OR:
Operación: señal de selección de 1 bit.
2.1. Operaciones lógicas
b
0
1
Result
Operation
a
Operación
MUX
33
5
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
2.2. Sumador completo
Sumador completo (tema 6):• 3 entradas (a, b y AcarreoE).
• 2 salidas (Suma y AcarreoS).
1+1+1=1111111
1+1+1=1001011
1+0+1=1001101
1+0+0=0110001
0+1+1=1001110
0+1+0=0110010
0+0+1=0110100
0+0+0=0000000
SumaAcarreoSAcarreoEbaOperación
SalidasEntradas
Suma
AcarreoE
AcarreoS
a
b
����������
������������������������������������������ �
⊕⊕==+++=
���������������������������� ++=
6
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
Añadimos el sumador completo a nuestra ALU, haciendo más grande el multiplexor:
b
0
2
Operación
a
1
AcarreoE
AcarreoS
Resultado
44
7
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
2.3. Restador
• Resta en complemento a 2: suma del negado más 1.
1ba1)b(a(-b)ab-a ++=++=+=
Resta: AcarreoE = InvertirB = 1
8
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
2.4. Operación slt (activar si menor que)slt $rd, $rs, $rt
0
3
Resultado
Operación
a
1
AcarreoE
0
1
InvertirB
b 2
Menor
Comparación
DesbordamientoDetección del
Desbordamiento
Bits 0 - 30 Bit 31
$rd = 0000000116 si $rs < $rt
$rd = 0000000016 si $rs � $rt
55
9
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
Resta: AcarreoE = InvertirB = 1
Suma: AcarreoE = InvertirB = 0
Ambas se pueden combinar en una única señal NegarB.
Comparacióna31
0
Resultado0
AcarreoE
a0
Resultado1a1
0
Resultado2a2
0
Operación
b31
b0
b1
b2
Resultado31
Desbordamiento
InvertirB
AcarreoE
AcarreoEALU0MenorAcarreoS
AcarreoEALU1MenorAcarreoS
AcarreoEALU2MenorAcarreoS
AcarreoEALU31Menor
10
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
Comparacióna31
0
Resultado0a0
Resultado1a1
0
Resultado2a2
0
Operación
b31
b0
b1
b2
Resultado31
Desbordamiento
InvertirB
Cero
AcarreoEALU31Menor
AcarreoEALU0MenorAcarreoS
AcarreoEALU1MenorAcarreoS
AcarreoEALU2MenorAcarreoS
2.5. Indicador de resultado: Detector de ceros
66
11
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
set on less than111
resta110
suma010
or001
and000
FunciónLineas de control de la ALU
ALU ResultadoCero
Desbordamiento
a
b
Operación ALU
AcarreoSNegarB Señales de control del MUX
2.6. Resumen de la ALU hasta ahora
12
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
3. Multiplicación básica y su circuitería
0010
× 0011
0010
0010
0000
+ 0000
0000110
Multiplicando
Multiplicador
Producto
�Vamos a estudiar tres algoritmos de multiplicación para enteros sin signo.
77
13
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
� ������� ����������� ��������� �� ���
• 1 registro y desplazador hacia la izquierda de 64 bits (multiplicando).
• 1 registro desplazador hacia la derecha de 32 bits (multiplicador).
• 1 registro de 64 bits (producto).
• ALU para datos de 64 bits.
• Circuitería de control.
14
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
4
3
2
1
0000 01100010 000000003: Despl. Mcador. dcha.
0000 01100010 000000002: Despl. Mcando. izda.
0000 01100001 000000001: Ninguna operación
0000 01100001 000000003: Despl. Mcador. dcha.
0000 01100001 000000002: Despl. Mcando. izda.
0000 01100000 100000001: Ninguna operación
0000 01100000 100000003: Despl. Mcador. dcha.
0000 01100000 100000012: Despl. Mcando. izda.
0000 01100000 010000011a: Prd. = Prd. + Mcando.
0000 00100000 010000013: Despl. Mcador. dcha.
0000 00100000 010000112: Despl. Mcando. izda.
0000 00100000 001000111a: Prd. = Prd. + Mcando.
0000 00000000 00100011Valores iniciales0
ProductoMultiplicandoMultiplicadorOperaciónIteración
Resultado
0010 × 0011 = ?
88
15
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
Segunda versión del algoritmo y su circuitería
• La mitad de los bits del multiplicando en el algoritmo anterior son 0.
• La ALU de 64 bits es un despilfarro.
• Al desplazar, se introducen ceros por la derecha del multiplicando, que ya no afectarán a los bits menos significativos del producto.
• Por tanto: multiplicando fijo y desplazamiento del producto a la derecha.
16
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
• 1 registro de 32 bits (multiplicando).
• 1 registro desplazador hacia la derecha de 32 bits (multiplicador).
• 1 registro desplazador hacia la derecha de 64 bits (producto).
• ALU para datos de 32 bits.
• Circuitería de control.
99
17
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
4
3
2
1
0000 0110001000003: Despl. Mcador. dcha.
0000 0110001000002: Despl. Prd. dcha.
0000 1100001000001: Ninguna operación
0000 1100001000003: Despl. Mcador. dcha.
0000 1100001000002: Despl. Prd. dcha.
0001 1000001000001: Ninguna operación
0001 1000001000003: Despl. Mcador. dcha.
0001 1000001000012: Despl. Prd. dcha.
0011 0000001000011a: Prd. = Prd. + Mcando.
0001 0000001000013: Despl. Mcador. dcha.
0001 0000001000112: Despl. Prd. dcha.
0010 0000001000111a: Prd. = Prd. + Mcando.
0000 000000100011Valores iniciales0
ProductoMultiplicandoMultiplicadorOperaciónIteración
Resultado
0010 × 0011 = ?
18
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
• El registro producto tiene espacio desaprovechado, en el que encaja el multiplicador:
• A medida que dicho espacio desaparece, los bits del multiplicador también.
• El registro multiplicador se pone en la mitad derecha del registro producto.
Versión final del algoritmo y su circuitería
1010
19
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
• 1 registro de 32 bits (multiplicando).
• 1 registro desplazador hacia la derecha de 64 bits (producto).
• ALU para datos de 32 bits.
• Circuitería de control.
20
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
0000 011000102: Despl. Prd. dcha.
0000 110000101: Ninguna operación4
0000 110000102: Despl. Prd. dcha.
0001 100000101: Ninguna operación3
0001 100000102: Despl. Prd. dcha.
0011 000100101a: Prd. = Prd. + Mcando.2
0001 000100102: Despl. Prd. dcha.
0010 001100101a: Prd. = Prd. + Mcando.1
0000 00110010Valores iniciales0
ProductoMultiplicandoOperaciónIteración
Resultado
0010 × 0011 = ?
1111
21
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
111 10
-10 11
011
-10
01
Divisor
Cociente
Dividendo
Resto
� No existe un bloque combinacional “divisor”.
� Hacer un circuito que resuelva la operación rápido es más complicado que en la multiplicación.
� Secuencia de sumas, restas, comparaciones y desplazamientos.
� La división “ofrece” la posibilidad de dividir por 0.
� Vamos a estudiar tres algoritmos de división por restauración para enteros sin signo.
4. División básica y su circuitería
22
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
• 1 registro desplazador hacia la derecha de 64 bits (divisor).
• 1 registro desplazador hacia la izquierda de 32 bits (cociente).
• ALU para datos de 64 bits.
• 1 registro de 64 bits (resto).
• Circuitería de control.
� ������� ����������� ��������� �� ���
1212
23
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
0000 00010000 000100113: Despl. Div. dcha.
0000 00010000 001000112a: Rst.�0 � Despl. Coc., Coc0=150000 00010000 001000011: Rst. = Rst. – Div.
0000 00110000 001000013: Despl. Div. dcha.
0000 00110000 010000012a: Rst.�0 � Despl. Coc., Coc0=140000 00110000 010000001: Rst. = Rst. – Div.
0000 01110000 010000003: Despl. Div. dcha.
0000 01110000 100000002b: Rst.<0 � Rst.=Rst.+Div., Despl. Coc., Coc0=031111 11110000 100000001: Rst. = Rst. – Div.
0000 01110000 100000003: Despl. Div. dcha.
0000 01110001 000000002b: Rst.<0 � Rst.=Rst.+Div., Despl. Coc., Coc0=021111 01110001 000000001: Rst. = Rst. – Div.
0000 01110001 000000003: Despl. Div. dcha.
0000 01110010 000000002b: Rst.<0 � Rst.=Rst.+Div., Despl. Coc., Coc0=011110 10110010 000000001: Rst. = Rst. – Div.
0000 01110010 00000000Valores iniciales0RestoDivisorCocienteOperaciónIteración
0111 ÷ 0010 = ?
RestoCociente
24
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
Segunda versión del algoritmo y su circuitería
� Como mucho, sólo la mitad del divisor contiene información útil.
� Se pueden reducir el registro Divisor y la ALU a la mitad.
� Desplazar el resto a la izquierda consigue el mismo efecto (alineación) que desplazar el divisor a la derecha.
� Se simplifica así la circuitería necesaria.
1313
25
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
• 1 registro de 32 bits (divisor).
• 1 registro desplazador hacia la izquierda de 32 bits (cociente).
• ALU para datos de 32 bits.
• 1 registro desplazador hacia la izquierda de 64 bits (resto).
• Circuitería de control.
26
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
� De forma análoga a la multiplicación, se puede introducir el registoCociente en el de Resto.
� Resto se inicializa con el dividendo en su mitad derecha y el cociente en su izquierda.
� Esta mejora hace que el resto sufra un desplazamiento a la izquierda de más, lo que requiere una rectificación final.
Versión final del algoritmo y su circuitería
1414
27
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
• 1 registro de 32 bits (divisor).
• 1 registro desplazador derecha-izquierda de 64 bits (resto).
• ALU para datos de 32 bits.
• Circuitería de control.
28
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
0001 00110010Despl. 1 bit a la dcha. la mitad izda. del Rst.5
0010 001100103a: Rst.�0 � Despl. Rst. izda., Rst0=1
0001 000100102: Rst. = Rst. – Div.4
0011 000100103a: Rst.�0 � Despl. Rst. izda., Rst0=1
0001 100000102: Rst. = Rst. – Div.3
0011 100000103b: Rst.<0 � Rst.=Rst.+Div., despl. Rst. izda., Rst0=0
1111 110000102: Rst. = Rst. – Div.2
0001 110000103b: Rst.<0 � Rst.=Rst.+Div., despl. Rst. izda., Rst0=0
1110 111000102: Rst. = Rst. – Div.1
0000 11100010Despl. Rst. izda.
0000 01110010Valores iniciales0
RestoDivisorOperaciónIteración
0111 ÷ 0010 = ?
Resto Cociente
1515
29
Tema 13. Construcción de una unidad aritmética y lógica (números enteros)
5. Bibliografía� D.A. PATTERSON, J.L HENNESSY. Computer Organization and Design.
Morgan Kaufmann, 2005.
� D. A. PATTERSON, J. L. HENNESSY. Estructura y diseño de computadores. Reverté, 2000.
� DORMIDO, S. CANTO M.A., MIRA J., DELGADO A.E. Estructura y Tecnología de Computadores. 2ª edición. Sanz y Torres, 2000.
� D. A. PATTERSON, J. L., HENNESSY. Computer Organization and Design. Morgan Kaufmann, 2005.
� J.M. ANGULO, J.GARCÍA. Sistemas Digitales y Tecnología de Computadores. Paraninfo, 2002.
� P. DE MIGUEL. Fundamentos de los Computadores. 7ª edición. Paraninfo, 1999.
� W. STALLINGS. Organización y Arquitectura de Computadores. 5ª edición, Prentice Hall, 2000.