Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Departamento de Electrónica
ORGANIZACIÓN DE COMPUTADORES - ID 031692
1. La multiplicación involucra la generación de productos parciales, uno por cada dígito del
multiplicador. Estos productos parciales serán sumados al final para generar el producto
final.
2. Los productos parciales son fácilmente generados: cuando el dígito del multiplicador es
‘0’, el producto parcial será “00..00”. Por el contrario, cuando el dígito es ‘1’, el producto
parcial corresponderá al multiplicando.
3. El producto total será la suma de esto productos parciales, desplazados una posición
relativa a la izquierda con respecto al producto parcial precedente.
4. La multiplicación de dos binarios enteros de n-bits, generará un producto total de 2n-
bits de longitud.
Comparado con la aproximación en papel, existen varias optimizaciones posibles en la
multiplicación para lograr el proceso mucho más eficiente en términos computacionales. En
primer lugar, es posible realizar una suma permanente de los productos parciales en lugar de
esperar al final para realizar el cálculo. Esto elimina la necesidad de almacenamiento de todos
los productos parciales, y por tanto menos registros deben ser utilizados. Por cada dígito del
multiplicador con valor de ‘1’, una suma y un corrimiento son necesarios; por el contrario, cada
dígito en ‘0’ únicamente requiere un corrimiento.
1
Figura 2. Multiplicación binaria sin signo: (a) Diagrama de flujo [2]. (b) Ejemplo de ejecución del algoritmo de
multiplicación binaria sin signo
2. Multiplicación en complemento A2
Se ha discutido que, en el caso de la suma y la sustracción, es posible tratar los operandos
en complemento A2 de igual forma que si fueran enteros sin signo, y por tanto el hardware
implementado para realizar estas operaciones aritméticas es el mismo. Considere el siguiente
ejemplo:
Figura 3. Ejemplo de suma en donde los operandos se interpretan como enteros sin signo (9+3=12) o como
binarios en complemento A2 (-7+3=-4)
Si los números anteriores son considerados como enteros sin signo, la operación
corresponde a 9 (1001) mas 3 (0011) cuyo resultado es 12 (1100). Por el contrario, si los
operandos se consideran números binarios en complemento A2, la operación corresponde a -7
(1001) sumado 3 (0011), cuyo resultado es -4 (1100).
Desafortunadamente, este mismo esquema no se puede utilizar en el caso de la
multiplicación. Observando el ejemplo ilustrado en la Figura 1, en donde se multiplican los
números 11 (1011) y 13 (1101), obteniendo como resultado 143 (10001111). Si se interpretan
2
estos valores en complemento A2, se tendría la multiplicación de -5 (1011) y -3 (1101) dando
como resultado -113 (10001111) y no 15 (00001111) como se espera. El ejemplo anterior
muestra que la multiplicación de número negativos no puede ser operada de la misma manera
como se operan los números enteros sin signo. De hecho, el algoritmo de multiplicación arrojará
resultados incorrectos incluso si uno de los dos operandos en negativo. Para justificar lo anterior,
es importante recordar cómo se expresa un número en potencias de 2, como se observa en la
ecuación 1:
1101 = 1 × 2 + 1 × 2 + 0 × 2 + 1 × 2 = 2 + 2 + 2 = 13 (1)
Adicionalmente, la multiplicación de un número binario por 2n se realiza mediante el
corrimiento del número a la derecha en n posiciones. Con esto en mente, es posible observar la
Figura 4 donde se han generado las multiplicaciones parciales y se escrito de forma explícita. Los
productos parciales pueden ser interpretados como números binario de 2n bits generados a
partir del multiplicando de n bits.
De esta manera, el multiplicando de 4 bits, interpretado como entero sin signo, se almacena
en una palabra de 8 bits, 00001011. Cada uno de los productos parciales, (excepto el
correspondiente a 20) consiste en la palabra 00001011 desplazada a la izquierda, y los lugares
sin ocupar llenados con ceros.
Figura 4. Multiplicación de dos números binarios de 4 bits, que generan un resultado de 8 bits.
4
Figura 7. Ejemplo del algoritmo de multiplicación de Booth (7×3)
Es posible analizar en detalle el algoritmo de Booth. En el caso donde ambos operandos son
positivos. En particular, asumamos un multiplicador positivo consistente en un bloque de 1s
rodeado de 0s (por ejemplo, el número 3010 = 000111102). Como se mencionó, la multiplicación
se logra sumando apropiadamente copias desplazadas del multiplicando:
𝑀 × (00011110 ) = 𝑀 × (2 + 2 + 2 + 2 )
= 𝑀 × (16 + 8 + 4 + 2 ) (2)
= 𝑀 × (30 )
El número total de estas operaciones puede ser reducido a dos si se observa que:
2 +2 + ⋯+ 2 =2 +2 (3)
𝑀 × (00011110 ) = 𝑀 × (2 − 2 )
= 𝑀 × (32 − 2 ) (4)
= 𝑀 × (30 )
De esta manera, el producto puede ser generado utilizando una suma y una resta del
multiplicando. Este esquema se puede extender a cualquier número de bloques de 1s en el
5
multiplicador, incluyendo el caso en donde únicamente un 1 el cual es interpretado como un
bloque.
𝑀 × (01111010 ) = × (2 + 2 + 2 + 2 + 2 )
= 𝑀 × (2 − 2 + 2 − 2 ) (5)
= 122
El algoritmo de Booth se ajusta a este esquema mediante la ejecución de una resta cuando
el primer 1 del bloque es encontrado (1-0) y una suma cuando el final del bloque es encontrado
(0-1). Para demostrar que el algoritmo también funciona para un multiplicador negativo, es
necesario resaltar lo siguiente: se asume X como un número binario negativo en complemento
A2:
𝑋 = {1𝑥 𝑥 ⋯𝑥 𝑥 } (6)
En ese orden de ideas, el valor de X se puede representar de la siguiente forma:
𝑋 = −2 + (𝑥 ×2 ) + (𝑥 ×2 ) + ⋯ (𝑥 × 2 ) + (𝑥 × 2 ) (7)
El bit más significativo de X es 1 dado que X es negativo. Asumamos que el k-ésimo bit es 0,
entonces X tendrá la siguiente forma:
𝑋 = {111 ⋯ 10𝑥 𝑥 ⋯𝑥 𝑥 } (8)
Entonces el valor de X estará dado por:
𝑋 = −2 +2 + ⋯+ 2 + 𝑥 ×2 + ⋯ + (𝑥 × 2 ) (9)
De la ecuación 3, se obtiene entonces:
2 +2 +⋯+ 2 =2 −2 (10)
Reordenando la ecuación 9 se obtiene:
𝑋 = −2 +2 + ⋯+ 2 = −2 (11)
Sustituyendo la ecuación 11 en la ecuación 9:
𝑋 = −2 + 𝑥 ×2 + ⋯ + (𝑥 × 2 ) (12)
Analizando la ecuación 8, es posible observar que todos los bits a partir del bit x0 hasta el
primer 0 encontrado son manejados de forma adecuada ya que generan los términos de la
ecuación 12, excepto el término (-2k+1). A medida que el algoritmo revisa los bits a la izquierda
para encontrar el primer 0 y el siguiente 1 (2k+1), una transición 1-0 ocurre y por tanto se produce
una resta (-2k+1), que es el primer término en la ecuación 12.
Se observa que el algoritmo de Booth se acoge a este esquema, realizando una resta cuando
el primer 1 se encuentra (10), una suma cuando (01) es detectado, y finalmente, otra resta
cuando el primer 1 del siguiente bloque de 1s aparece. De esta manera, el algoritmo realiza
menos sumas y restas que el modelo de multiplicación entera.
6
externa, o en el registro IR para decodificación de instrucciones por parte de la Unidad de
Control.
7
Ejercicios propuestos:
1. Implemente una rutina de multiplicación para enteros con signo utilizando el algoritmo de
Booth, en lenguaje ensamblador para el procesador PDUA, la cual multiplique dos valores
almacenados en memoria. El resultado de la multiplicación, al ser de 16 bits, deberá quedar
almacenado en memoria utilizando dos registros.
2. Implemente un programa en lenguaje ensamblador para el procesador PDUA para calcular
el valor de xy, donde la base x y el exponente y se encuentren almacenados en memoria. El
resultado de la operación deberá igualmente quedar almacenado en memoria en dos
posiciones al finalizar el programa. Optimice su código, realizando llamados a subrutinas
para operaciones recurrentes.
Condiciones de Entrega:
El código deberá estar escrito en nemónicos y en binario. Adicionalmente se espera que el
código esté debidamente comentado.
Deberá presentar una prueba de escritorio para cada ejercicio para verificar el
funcionamiento de sus programas. Sea creativo.
En caso de requerir la creación de instrucciones nuevas para la implementación de sus
rutinas, podrá asignarles un opcode en el rango de valores disponibles para tal fin.
Los informes del proyecto deberán contener el código realizado, las pruebas de escritorio,
así como una explicación suficiente de ambos ítems. Adicionalmente, deberá incluir una
sección donde explique las instrucciones nuevas que ha propuesto para implementar los
algoritmos.
El proyecto será sustentado ante el profesor de la asignatura, donde se explicarán los
algoritmos desarrollados.