2009-03-28 18 views
7

En diferentes idiomas de ensamblaje MUL (x86)/MULT (mips) se refieren a la multiplicación. Es una caja negra para el programador. Estoy interesado en cómo en realidad una CPU logra una multiplicación independientemente de la arquitectura. Digamos que tengo dos valores de 16 bits en mis registros y soy la CPU, así que tengo que implementar MUL usando las otras instrucciones de bits que tengo (y, o, xor, no, shl, shr, etc.). ¿Qué debo hacer?¿Cómo implementan las CPU Instrucciones como MUL/MULT?

Respuesta

7

http://en.wikipedia.org/wiki/Multiplication_ALU en la Wikipedia enumera diferentes métodos para hacer la multiplicación en un circuito digital.

Cuando trabajé en un proyecto para agregar instrucciones SIMD a un procesador tipo DEC Alpha en Verilog en la universidad, implementamos un Wallace tree multiplier, la razón principal era que funcionaba en un número fijo de ciclos y era fácil de canalizar.

EDITAR: Usted mencionó el uso de las otras instrucciones de manipulación de bits, en los procesadores modernos la multiplicación no se microcodificará así; sería una forma de ralentizar y el procesador sería sacrificado en puntos de referencia.

+0

Creo que las CPU no llaman a sus propias instrucciones por razones de eficiencia. Simplemente no tenía otra forma de expresarme, ya que el nivel más bajo que he tenido hasta ahora es asm. ¡Gracias por la ayuda! – George

+0

A veces lo hacen. x86 es un ISA complicado y tiene algunas instrucciones muy extrañas. Estas instrucciones se traducen en un programa interno de microcódigo. Mira http://en.wikipedia.org/wiki/File:Intel_Nehalem_arch.svg, verás una unidad de decodificación compleja y un secuenciador de microcódigos, que hace esto – Michael

+0

Es incluso peor que en las CPUs modernas, otorgadas de ejecución de orden, predicción de bifurcación, hyperthreading, etc., junto con microcódigo, es casi correcto decir que el ISA x86 se ejecuta en una máquina virtual implementada en microcódigos y circuitos. Pero casi nunca es necesario preocuparse por eso ... –

3

This page muestra las puertas lógicas para un multiplicador combinacional 4 * 4. Puedes trabajar desde allí.

Here is somebody's lab donde describen la construcción de un multiplicador de 16 bits a partir de 4 multiplicadores de 4 bits, cada uno construido con compuertas AND y sumadores completos. Diseño completo, diseño de chips y formas de onda de simulación.

+1

ambos enlaces están ahora muertos: / –

Cuestiones relacionadas