Ejercicios del Capítulo 4

Documentos relacionados
ESCUELA POLITÉCNICA NACIONAL

UNIVERSIDAD DE CORDOBA ESTRUCTURA DE COMPUTADORAS UNIDAD III

4. Aritmética y operadores

Tema 3. La Unidad Aritmético- Lógica

ESCUELA POLITÉCNICA NACIONAL

Realizar la siguiente suma y expresar el resultado en hexadecimal: Teniendo los 3 valores expresados en la misma base, podemos realizar la suma:

Tipos de Datos y Representaciones. Circuitos Digitales, 2º de Ingeniero de Telecomunicación. EITE ULPGC.

2º CURSO INGENIERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN TEMA 3 UNIDAD ARITMÉTICO- LÓGICA JOSÉ GARCÍA RODRÍGUEZ JOSÉ ANTONIO SERRA PÉREZ

Ejercicios del Tema 3. Fundamentos de la programación en ensamblador

Aritmética de Enteros

Ejercicios del Tema 3. Fundamentos de la programación en ensamblador

ESTRUCTURA Y TECNOLOGIA DE COMPUTADORES II Curso PROBLEMAS TEMA 4: Unidad Aritmético Lógica

LECCIÓN 1. CIRCUITOS ARITMÉTICOS DE SUMA Y RESTA DE ENTEROS

TEMA III: OPERACIONES CON LOS DATOS

Lógica Computacional. Aritmética binaria

TEMA 6 UNIDAD ARITMÉTICO LÓGICA

ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES

Organización de Computadoras. Clase 3

Algoritmos Multiplicación División

Circuitos electrónicos digitales. Unidades Aritméticas Lógicas. Departamento de Tecnología Electrónica Universidad de Sevilla

Sistemas de Numeración. I semestre 2011

Oliverio J. Santana Jaria. Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso Los objetivos de este tema son:

Práctica 1. Sistemas de Numeración y Representación de la Información

En este capítulo se habla sobre las distintas arquitecturas y algoritmos de multiplicación rápida que se encontraron en la bibliografía.

Estructura de Computadores. 1. Ejercicios Resueltos 1.1. Tema 6. La unidad aritmética y lógica

Titulación: Grado en Ingeniería Informática Asignatura: Fundamentos de Computadores

Realizar las siguientes operaciones en c-a-2 utilizando el número mínimo de bits necesario para que no haya desbordamiento: 3 + 7, 5 7, 13 8, 10 6.

Los números naturales y enteros en el 80X86 y en LAN

Realizar las siguientes operaciones en c-a-2 utilizando el número mínimo de bits necesario para que no haya desbordamiento: 3 + 7, 5 7, 13 8, 10 6.

Práctica 3 - Aritmética del Computador

TEMA II SISTEMAS DE NUMERACIÓN USUALES EN INFORMÁTICA.

Aritmética del computador

El Conjunto de Instrucciones de la Arquitectura Lagarto I

CONVERSIONES CONVERSIÓN DE BINARIO A: Binario a Octal: se agrupan de a 3 bits y luego se lee el número , B 635,15 O 6 3 5, 1 5 O

Estructura de Computadores


Sistemas Numéricos. Introducción n a los Sistemas Lógicos y Digitales 2009

Aritmética del computador. Departamento de Arquitectura de Computadores

APUNTES DE CATEDRA: SISTEMAS DE NUMERACION - REPRESENTACION INTERNA DE NUMEROS Y CARACTERES

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

HOJA DE PROBLEMAS 6: MÓDULOS COMBINACIONALES BÁSICOS

Tema 3. Operaciones aritméticas y lógicas

Tema 3. Operaciones aritméticas y lógicas

Unidad didáctica 1. Operaciones básicas con números enteros

MATEMÁTICAS PARA LA COMPUTACIÓN CAPÍTULO 1. SISTEMAS NUMÉRICOS

Tema 3: Operaciones aritméticas y lógicas

Computación I Representación Interna Curso 2011

ELO311 Estructuras de Computadores Digitales. Unidad Aritmética

Número, algoritmo y errores

+- S x B +-E. Este estándar presupone una representación normalizada. Es decir, los números a representar obedecen a la siguiente forma:

HOJA DE PROBLEMAS 2. SISTEMA BINARIO DE REPRESENTACIÓN NUMÉRICA. 1. Convertir los siguientes números binarios a sus equivalentes decimales: a.

Fundamentos y Arquitectura de Computadores (ITTSE UV)

+18 = =

EJERCICIOS RESUELTOS DEL TEMA 5

Divisibilidad I. Nombre Curso Fecha

Sistemas Numéricos Transversal de Programación Básica Proyecto Curricular de Ingeniería de Sistemas

ARQUITECTURA SPARC: FORMATO DE INSTRUCCIÓN

Unidades Aritméticas. Full Adder de un Bit. Sumador/Restador. Full Adder de 32 Bits. Carry Lookahead de 4 Bits. Suma Rápida con Carry Lookahead.

Computación 1. Representación Interna de Números

Tema 2: Arquitectura del repertorio de instrucciones. Visión del computador que tiene el programador en bajo nivel.

OPERADORES: Maquinaria para realizar las instrucciones. Capítulo Tercero Fundamentos de Computadores Ingeniería de Telecomunicación

Representación de datos y aritmética básica en sistemas digitales

Estructuras de Computadores I Tarea 02 02/99

LECCIÓN Nº 02 FUNCIONES DE LOGICA COMBINACIONAL (PARTE 1)

Bloques Aritméticos - Multiplicadores

Plataformas de soporte computacional: arquitecturas avanzadas,

Organización del Computador I Verano. Aritmética (4 de 5) Basado en el capítulo 4 del libro de Patterson y Hennessy Multiplicaciones y Divisiones

TEMA 1: INTRODUCCIÓN A LOS SISTEMAS DIGITALES.

Expresiones y Operadores

REPRESENTACION DE LA INFORMACION

Organización del Computador I Verano. MIPS (2 de 2) Basado en el capítulo 2 del libro de Patterson y Hennessy

5.2. Sistemas de codificación en binario

Tipos de datos y Operadores Básicos

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

ELO311 Estructuras de Computadores Digitales. Algoritmos de Multiplicación y División

FUNDAMENTOS DE COMPUTADORES 18 de junio de Examen parcial del 2º cuatrimestre.

Representación de datos y aritmética básica en sistemas digitales


Arquitecaura de Computadoras Tema 1 - Introducción a la Arquitectura de Computadoras

GENERALIDADES SOBRE SISTEMAS NUMÉRICOS. Transversal Programación Básica

Organización de Computadoras. Principios de Conjuntos de Intrucciones

UNIDAD 1. NÚMEROS. (Página 223 del libro) Nivel II. Distancia. Ámbito Científico Tecnológico.

6º PRIMARIA. Números decimales.

(6x + 8) + (4x + 2) (6x + 8) + (4x + 2) = 10x + 10

Sección de procesamiento: El camino de datos

Bus de direcciones. Bus de datos

MATEMÁTICAS PARA LA COMPUTACIÓN CAPÍTULO 1. SISTEMAS NUMÉRICOS

Sistemas Numéricos y Códigos Binarios

Práctica 1 - Representación de la información

Datos y tipos de datos

PROBLEMA VHDL. 7 dig1. dig2. Entradas : Señales a[3..0] y b [3..0] en código GRAY Salida : Señales Dig1[6..0] y Dig2[6..0] para los visualizadores

FUNDAMENTOS NUMÉRICOS

Tutorías con Grupos Reducidos (TGR) Parte 1: Evaluación de prestaciones

Estructura de Computadores Tema 2. Representación de la información

Fundamentos de Computadores. Tema 5. Circuitos Aritméticos

Computadora MA2008. Análisis Numérico: Artimética de una. Computadora. Computación / Matemáticas. Intro. Idea. IEEE estándar. Errores.

ISA (Instruction Set Architecture) Arquitectura del conjunto de instrucciones

8. Diseño de la codificación binaria del repertorio de Instrucciones.

TEMA 2. CODIFICACIÓN DE LA INFORMACIÓN

Transcripción:

Ejercicios del Capítulo 4 Nunca cedan, nunca cedan, nunca, nunca, nunca en nada, pequeño o grande, importante o insignificante nunca cedan. Winston Churchill, discurso en la Harrow School, 1941 4.1 13] < 4.2> Convierta 512diez en un número binario de 32 bits en complemento a dos. 4.2 [3] < 4.2> Convierta 1023diez en un número binario de 32 bits en complemento a dos. 4.3 [5] < 4.2> Convierta 4000000diez en un número binario de 32 bits en complemento a dos. 4.4 [5] < 4.2> Qué número decimal representa este número binario en complemento a dos: 1111 1111 1111 1111 1111 1110 0000 1100 dos? 4.5 [5] < 4.2> Qué número decimal representa este número binario en complemento a dos: 1111 1111 1111 1111 1111 1111 1111 dos? 4.6 [5] < 4.2> Qué número decimal representa este número binario en complemento a dos: 0111 1111 1111 1111 1111 1111 1111 dos? 4.7 [5] < 4.2> Qué número binario representa este número hexadecimal: 7fff fffa hex? Qué número decimal representa? 4.8 [5] < 4.2> Qué número hexadecimal representa este número binario: 1100 1010 1111 1110 1111 1010 1100 dos? 4.9 [5] < 4.2> Por qué no tiene el MIPS instrucción de restar inmediato? 4.10 [10] < 4.2> Encuentre la secuencia de instrucciones MIPS más corta para determinar el valor absoluto de un entero en complemento a dos. Convierta esta instrucción (aceptada por el ensamblador del MIPS): abs $t2,$t3 Esta instrucción significa que el registros $ t 2 se carga con una copia del registro $ t 3 si éste es positivo y con el complemento de $t3 si es negativo. (Pista: se puede hacer con tres instrucciones.) 4.11 [10] < 4.2> Dos amigos, Harry y David, están discutiendo. Harry dice, Todos los enteros mayores que cero y divisibles exactamente por seis, tienen exactamente dos unos en su representación binaria. David no está de acuerdo. Dice No, pero todos esos números tienen tienen un número par de unos en su representación. Con quién está más de acuerdo, con Harry, con David o con ninguno de los dos? (Pista: busque contraejemplos.) 4.12 [15] < 4.4> Considere el siguiente código, usado para realizar la instrucción sllv SsO, $sl, $s2 que usa los 5 bits menos significativos del valor del registro $s2 para especificar el número de posiciones que debe desplazarse $ sí hacia la izquierda:.data mascara: word Oxfffff83f.text inicio: lw $t0, mascara

lw SsO, desplazar and $s0, $s0, $t0 andi $s2, $s2, 0xlf sll $s2, $s2, 6 or $s0, $s0, $s2 sw $s0, desplazar desplazar: sll $s0, $sl, 0 Añada comentarios al código y escriba un párrafo que describa cómo funciona. Observe que las dos instrucciones 1w son pseudoinstrucciones que usan una etiqueta para especificar una dirección de memoria que contiene la palabra de datos a cargar. Por qué piensa que escribir código que se auto-modifica, como este, es una mala idea (y la mayoría de veces realmente no permitida)? 4.13 [10] < 4.2> Si A es una dirección de 32 bits, una secuencia de instrucciones como esta lui $t0, A_superior ori $t0, $t0, A_inferior lw $t0 0($t0) se puede usar para cargar la palabra de la posición A en un registro (en este caso $s0). Considere la siguiente alternativa, más eficiente: lui $t0, A_superiorarreglada lw $t0, A_inferior ($t0) Describa cómo se arregla A_superior para que este código más simple funcione. (Pista: se necesita arreglar A_superior porque se va a extender el signo de A_inferior.) 4.14 [15] < 3.4, 4.2, 4.8> La idea clave de la página 285 afirma que los bits no tienen significado inherente. Dada esta tira de bits: qué representa, suponiendo que es a. un entero en complemento a dos? b. un entero sin signo? 1000 l 111 1110 1111 1100 0000 0000 0000 c. un número en coma flotante en precisión simple? d. una instrucción MIPS? Las figuras 3.18 (página 145), 4.48 (página 278) y A.18 (página 464) le pueden resultar útiles. 4.15 [10] < 4.2, 4.4, 4.8> Este ejercicio es similar al anterior, pero esta vez con la tira de bits 0000 0000 0000 0000 0000 0000 0000 0000 4.16 [10] < 4.3> Una de las diferencias entre la arquitectura Sun SPARC y la arquitectura MIPS estudiada es que la instrucción de load word de SPARC puede especificar la dirección bien como la suma de los contenidos de dos registros, bien como el contenido de

un registro más un valor constante (tal como hace el MIPS). El artículo An analysis of MIPS and SPARC instruction set utilization on the SPEC benchmarks (R. F. Cmelik, 5. 1. Kong, D. R. Ditzel y E. J. Kelly, Fourth International Conference on Architectural Support for Programming Languages and Operating Systems, Santa Clara, CA, Abril 1991) indica que en el SPARC, el programa de prueba gcc tiene un 15% de loads que usan la versión registro+registro (con los dos registros diferentes de Szero). Suponga que se pudiera hacer lo mismo en el MIPS, modificado para tener esta opción de direccionamiento en las instrucciones 1w. Usando los datos de la figura 4.54, qué porcentaje de instrucciones del gcc se podrían eliminar con esta modificación arquitectónica? Por qué? 4.17 [10] < 4.3> Encuentre la secuencia de instrucciones MIPS más corta para determinar si hay acarreo de salida en la suma de dos registros, por ejemplo $t3 y $t4. Ponga un 0 ó un 1 en el registro $t2 si el acarreo de salida es 0 ó 1, respectivamente. (Pista: se puede hacer con dos instrucciones.) 4.18 [15] < 4.3> {Ej. 4.17} Encuentre la secuencia de instrucciones MIPS más corta para hacer una suma entera de doble precisión. Suponga que en los registros $t4 y $t5 se halla un entero de 64 bits en complemento a dos y otro en los registros $t6 y $t7. La suma se debe poner en $t2 y $t3. En este ejemplo, la palabra más significativa del entero de 64 bits se encuentra en el registro par y la menos significativa en el impar. (Pista: se puede hacer en cuatro instrucciones.) 4.19 [15] < 4.3> Suponga que se suprimieran del repertorio de instrucciones del MIPS todas las variantes de la instrucción slt (sltl, sltu, sltui) y todas las instrucciones de salto condicional excepto beq y bne. Encuentre cómo hacer slt $t0, $s0, $s1 usando el repertorio de instrucciones modificado, en el cual slt no está disponible. (Pista: requiere más de dos instrucciones.) 4.20 [10] < 4.4> La siguiente secuencia de instrucciones MIPS se podría usar para realizar una nueva instrucción que tenga dos operandos registro. Dé un nombre a la instrucción y describa lo que hace. Observe que el registro $t0 se usa como temporal. srl $s1, $s1, 1 # sll $t0, $s0, 31 # Estas 4 instrucciones hacen srl $s0, $s0, 1 # nueva $s0 $s1 or $s1, $s1, $t0 # 4.21 [5] < 4.4> En lugar de usar un multiplicador con circuiteria especial, es posible multiplicar con instrucciones de suma y desplazamiento. Esto es particularmente atractivo cuando se multiplica por constantes pequeñas. Suponga que queremos poner cinco por el valor de $s0 en $s1, ignorando la posibilidad de desbordamiento. Encuentre la secuencia de instrucciones MIPS mínima para hacerlo sin usar la instrucción de multiplicar. 4.22 [15] < 4.4> Algunos ordenadores tienen instrucciones explicitas para extraer un campo arbitrario de bits de un registro de 32 y ponerlo en los bits menos significativos de otro registro. La siguiente figura ilustra dicha operación:

31 j 0 campo bits 31-j bitsj-i bits i+1 31 0 0 0000 campo 32 (j i) bits j i bits Encuentre la secuencia de instrucciones MIPS más corta que extraiga un campo para los valores constantes i = 7 y j = 19 del registro $s0 y lo ponga en el registro $s1. (Pista: se puede hacer en dos instrucciones.) 4.23 [15] < 4.5> La ALU puede calcular la operación set on less than (slt) usando sólo el bit de signo del sumador. Intente realizar esta operación usando los valores -7 diez y 6diez. Para hacer el ejemplo más fácil de seguir, limitemos las representaciones binarias a 4 bits: 1001dos y 0110dos. 1001dos - 0110dos = 1001dos + 0110dos = 0011dos Este resultado sugiere que 7 > 6, lo cual es claramente erróneo. Está claro que hay que tener en cuenta el desbordamiento en la decisión. Modifique la ALU de 1 bit de la figura 4.17 de la página 227 para tratar correctamente la operacion slt. Haga sus cambios sobre una fotocopia de esta figura para ahorrar tiempo. 4.24 [20] < 4.6> Encuentre la secuencia de instrucciones MIPS más corta para realizar la multiplicación de enteros en doble precisión. Intente hacerlo en 35 instrucciones o menos. Suponga que en los registros $t4 y $t5 se halla un entero sin signo de 64 bits y otro en los registros $t6 y $t7. El producto, de 128 bits, se debe poner en $t0, $t1, $t2 y $t3. En este ejemplo, la palabra más significativa se encuentra en el registro con el número más pequeño y la menos significativa en el registro de número más alto. (Pista: escriba la fórmula para (a x 2^32 + b) x (c x 2^32 + d.)) 4.25 [5] < 4.8> Encuentre la representación binaria en coma flotante IEEE 754 del número 10diez en precisión simple y doble. 4.26 [5] < 4.8> Este ejercicio es similar al precedente, pero esta vez substituya 10diez por 10,5diez. 4.27 [10] < 4.8> Este ejercicio es similar a los dos anteriores, pero esta vez con 0,1diez. 4.28 [10] < 4.8> Otra vez lo mismo pero con la fracción decimal -2/3. 4.29 [10] < 4.8> Escriba un programa C sencillo que reciba un número en coma flotante y muestre

los bits de su representación, en hexadecimal. 4.30 [10] < 4.8> Escriba un programa C++ sencillo que reciba un número en coma flotante y muestre los bits de su representación, en hexadecimal. 4.31 [10] < 4.8> En la posición X de memoria se encuentra un número IEEE en precisión simple. Escriba una secuencia de instrucciones MIPS para multiplicar este número por 2 y guardar el resultado de nuevo en X. Hágalo sin usar ninguna instrucción de coma flotante (no se preocupe por el desbordamiento). 4.32 [10] < 4.11> Encuentre las 10 instrucciones del MIPS usadas con más frecuencia en el programa gcc (figura 4.54 de la página 297>. Lístelas por orden, de más usada a menos usada, con el número de orden, el nombre y el porcentaje de instrucciones ejecutadas, para cada una de ellas. En caso de empate en un número de orden, ponga en esa posición todas las instrucciones empatadas, aunque eso conlleve listar más de 10 instrucciones. 4.33 [10] < 4.11> Este ejercicio es similar al anterior, pero esta vez con el programa spice. 4.34 < 4.11> {Ejercicios 4.32 y 4.33} Estas cuestiones estudian la frecuencia relativa de las instrucciones en diferentes programas. a. [5] Qué instrucciones se encuentran tanto en la respuesta del Ej. 4.32 como en la del 4.33? b. [5] Qué porcentaje de instrucciones ejecutadas por el gcc corresponden a instrucciones identificadas en el Ejercicio 4.34a? c. [5] Qué porcentaje de instrucciones ejecutadas por el gcc se debe a instrucciones identificadas en el Ejercicio 4.32? d. [5] Qué porcentaje de instrucciones ejecutadas por el spice corresponden a instrucciones identificadas en el Ejercicio 4.34a? e. [5] Qué porcentaje de instrucciones ejecutadas por el spice se debe a instrucciones identificadas en el Ejercicio 4.3 3? 4.35 [10] < 4.11> {Ejercicios 4.32-4.34} Si estuviera diseñando una máquina para ejecutar el repertorio de instrucciones del MIPS, basándose en las respuestas de los ejercicios 4.32 a 4.34, cuáles serían las cinco instrucciones que intentaría hacer más rápidas? Razone su respuesta. 4.36 [15] < 2.3, 4.11> Usando la figura 4.54 de la página 297, calcule el promedio de ciclos de reloj por instrucción (CPI) para el programa gcc. En la figura 4.55 encontrará el CPI medio por categoría de instrucciones, teniendo en cuenta fallos de cache y otros efectos. Suponga que las instrucciones omitidas en la tabla tienen un CPI de 1,0. Categoría de instrucciones CPI promedio Loads y stores 1,4 Saltos condicionales 1,8 Saltos 1,2 Multiplicacion entera 10,0 División entera 30,0 Suma y resta 2,0 Multiplicación en coma flotante, precisión simple 4,0 Multiplicación en coma flotante, precisión doble 5,0 División en coma flotante, precisión simple 12,0 División en coma flotante, precisión doble 19,0 Figura 4.55 CPI de las categorías de instrucciones del MIPS 4.37 [15] < 2.3, 4.11> Este ejercicio es simialr al 4.36, pero esta vez con el programa spice. 4.38 [dos semanas] Escriba un simulador para un subconjunto del repertorio de instrucciones del MIPS usando instrucciones MIPS y el simulador SPIM, descrito en el apéndice A. Su simulador debería ejecutar programas ensamblados a mano situados en el segmento de datos del simulador SPIM y deberían usar $v0 y $v1 para -entrada y salida. Otras partes del segmento de datos se pueden usar para almacenar contenidos de memoria y valores de registros, de su máquina virtual. Su programa puede usar cualquier instrucción del MIPS, pero su simulador debe aceptar sólo un pequeño subconjunto del repertorio de instrucciones (por ejemplo las que aparecen en los capítulos 5 y 6). (En www.mkp.com/cod2e.htm encontrará más detalles sobre esta cuestión.)

4.39 [una semana] {Ejercicio 4.38} Añada código para gestionar a excepciones a su simulador desarrollado en el Ejercicio 4.38. Su simulador debería generar una excepción simulada si se accede -una palabra desalineada en una instrucción lw, sw o jr. La rutina de atención a la interrupción debería escribir en pantalla un mensaje de error identificando la dirección errónea (en la simulación) y realinear el acceso, realizar la instrucción y continuar ejecutando el programa simulado. (En www.mkp.com/cod2e.htm encontrará más detalles sobre esta cuestión.) El repertorio de instrucciones del MIPS completo tiene dos operaciones lógicas más que no se han mencionado hasta aquí: xor y nor. La operación xor se refiere al OR exclusivo y la nor al OR negado. La siguiente tabla define esta dos operaciones bit a bit. Estas instrucciones serán útiles en los siguientes dos ejercicios. A B A xor B A nor B 0 0 0 1 0 1 1 0 1 0 1 0 1 1 0 0 4.40[15] < 4.4> Encuentre la secuencia de instrucciones MIPS más corta para emular una nueva instrucción llamada swap, que intercambia los valores de dos registros. Después de ejecutada la secuencia, el registro Destino tiene el valor original del registro Fuente y el registro Fuente el valor original del registro Destino. Convierta esta instrucción: swap $s0, $s1 Lo difícil es que la secuencia debe utilizar sólo estos dos registros! (Pista: se puede hacer en tres instrucciones usando las nuevas instrucciones lógicas. Cuál es el valor de (A xor B xor A)? 4.41 [5] < 4.4> Encuentre la mínima secuencia de instrucciones MIPS para emular una nueva instrucción llamada not, que realiza el complemento a uno del registro fuente y pone el resultado en el registro Destino. Convierta esta instrucción (aceptada por el ensamblador MIPS): not $s0, $s1 (Pista: se puede hacer en dos instrucciones si se usan las nuevas operaciones lógicas.) 4.42 [20] < 4.5> Una forma sencilla de comprobar desbordamiento durante la suma es ver si, en el bit más significativo, el AcarreoE es diferente del AcarreoS. Demuestre que esta comprobación es equivalente a la realizada en la figura 4.4 de la página 212. 4.43 [10] < 4.5> Dibuje las puertas de un bit de Suma de un sumador, a partir de la ecuación de la página 224.

4.44 [5] < 4.5> Reescriba las ecuaciones 231 para una lógica de anticipación de acarreo para un sumador de 16 bits usando una nueva notación. Primero use los nombres de las señales de AcarreoE de los bits individuales del sumador. Es decir, use c4, c8, c12,... en lugar de C1, C2, C3,... Además, use la notación Pi,j para indicar la propagación de los bits i a j y Gi,j para la señal de generar de los bits i a j. Por ejemplo, la ecuación C2 = G1 + (P1. G0) + (P1. P0. c0) se puede reescribir como c8 = G7,4 + (P7,4. G3,0) + (P7,4. P3,0. c0) Esta notación más general es útil para construir sumadores de mayor tamaño. 4.45 [15] < 4.5> {Ejercicio 4.44} Escriba las ecuaciones para la lógica de anticipación de acarreo para un sumador de 64 bits usando la nueva notación del ejercicio 4.44 y usando sumadores de 16 bits como bloques constitutivos. Incluya un dibujo similar al de la figura 4.24 en su solución. 4.46 [10] < 4.5> Ahora calcule el rendimiento relativo de los sumadores. Suponga que la circuitería correspondiente a cualquier ecuación que contenga sólo términos AND y OR, como las ecuaciones pi y gi de la página 232, tarda un tiempo unitario T. Ecuaciones que consistan en la OR de varios términos AND, como las ecuaciones de c1, c2, c3 y c4, de la página 232, tardarían, por lo tanto, dos unidades de tiempo, 2T, dado que tardarían T para calcular los términos AND y después otro T para calcular la OR. Calcule el rendimiento de dos sumadores de 4 bits, uno con propagación de acarreo y el otro con anticipación, y la reladón entre ambos. Si los términos de las ecuaciones se definen posteriormente en otras ecuaciones, sume los retardos adecuados por las ecuaciones intermedias y continúe recursivamente hasta llegar al uso de los verdaderos bits de entrada al sumador. lncluya un dibujo de cada sumador, etiquetando los caminos con los retardos calculados. Resalte el camino del peor caso. 4.47 [15] < 4.5> Este ejercicio es similar al 4.46, pero, en esta ocasión calcule las velocidades relativas de un sumador de 16 bits usando sólo propagación de acarreo, propagación del acarreo de grupos de 4 bits que anticipan el acarreo y el esquema de anticipación de acarreo de la página 231. 4.48 [15] < 4.5> <Ejercicio 4.45> Este ejercicio es similar a los dos precedentes, pero ahora se pide calcular las velocidades relativas dc un sumador de 64 bits sólo con propagación de acarreo, otro con propagación de acarreo entre grupos de 4 bits que anticipan el acarreo, otro con propagación de acarreo entre grupos de 16 bits que usan anticipación y el esquema de anticipación de acarreo del ejercicio 4.45. 4.49 [10] < 4.5> Hay ocasiones en las que se desea sumar una serie de números. Suponga que se necesita sumar cuatro números de 4 bits (A, B, E, F) usando sumadores totales de 1 bit. Ignorando, por ahora, la posibilidad de anticipar el acarreo, la organización más normal sería la de la parte superior de la figura 4.56. En la parte inferior de la misma figura hay una nueva organización de los sumadores totales. Compruebe que la suma de los cuatro núme. ros da el mismo resultado en ambas organizaciones para convencerse de su corrección.

4.50 [5] < 4.5> {Ejercicio 4.49} Suponga que el tiempo de retardo de cada sumador de 1 bit es 2T. Calcule el tiempo necesario para sumar cuatro números de 4 bits según la organización de la parte superior frente a la de la parte inferior de la figura 4.56. 4.53 [30]<$4.6> El motivo original del algoritmo de Booth era reducir el número de operaciones, evitándolas cuando hubiera cadenas de ceros y unos. Revise el algoritmo de la página 247 para considerar 3 bits al mismo tiempo y calcular el multiplicando de 2 bits a la vez. Rellene la siguiente tabla para determinar la codificación de Booth en 3 bits: Bits actuales Bit anterior Operación Motivo ai+1 ai ai-1 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 Suponga que dispone del multiplicando y 2 x multiplicando en sendos registros. Explique el motivo de la operación en cada línea y muestre un ejemplo de 6 bits que vaya más deprisa usando este algoritmo. (Pista: Intente dividir y vencer; vea qué operaciones se harían en cada uno de los ocho casos de la tabla usando un algoritmo de Booth de 2 bits y optimice el par de operaciones.) 4.54 [30] < 4.6, 4.7> El algoritmo de división de la figura 4.40 de la página 257 se llama división que restaura, puesto que cada vez que el resultado de restar el divisor del dividendo es negativo se debe sumar de nuevo el divisor al dividendo para restaurar el valor original. Recuerde que desplazar a la izquierda es lo mismo que multiplicar por dos. Veamos de nuevo el valor de la mitad izquierda del Resto, empezando por el paso 3b del algoritmo de dividir para luego pasar al paso 2: (Resto + Divisor) x 2 - Divisor Este valor se obtiene de restaurar el Resto sumando el Divisor y desplazando la suma a la izquierda y después Testar el Divisor. Simplificando el resultado se obtiene Restox 2 + Divisorx2 Divisor = Resto x 2 + Divisor Basándose en esta observación, escriba un algoritmo de división que no restaura, usando la flotación de la figura 4.40, que no sume el Divisor al Resto en el paso 3b. Demuestre que su algoritmo funciona dividiendo 0000 0111 dos por 0011 dos