Pergunta

Em diferentes linguagens assembly MUL (x86) / MULT (MIPS) referem-se a multiplicação. É uma caixa preta para o programador. Estou interessado em saber como realmente uma CPU realiza uma multiplicação independentemente da arquitetura. Vamos dizer que eu tenho dois valores de 16 bits em meus registros e eu sou o cpu, então eu tenho que implementar MUL usando as outras instruções-mexer bit que tenho (e, OR, XOR, não, SHL, SHR, etc). O que devo fazer?

Foi útil?

Solução

http://en.wikipedia.org/wiki/Multiplication_ALU na Wikipedia lista métodos diferentes para fazer a multiplicação em um circuito digital.

Quando eu trabalhava em um projeto para adicionar instruções SIMD a um DEC Alpha-like processador em Verilog de volta na faculdade, implementamos um Wallace multiplicador árvore , a principal razão de ser ele correu em um número fixo de ciclos e era fácil de pipeline.

EDIT: Você mencionou usando o outro bit mexer instruções, em processadores modernos multiplicação não seria microcodificadas assim; que seria maneira de retardar eo processador seria obter abatido em benchmarks.

Outras dicas

Esta página mostra as portas lógicas para um multiplicador de combinações 4 * 4. Você pode trabalhar a partir daí.

Aqui está laboratório de alguém onde eles descrevem a construção de um multiplicador de 16 bits a partir de 4 4 multiplicadores bits, cada um construído com portas AND e somadores completos. projeto completo, de layout de chip, e simulação formas de onda.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top