Como CPUs implementar instruções como MUL / MULT?
-
22-08-2019 - |
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?
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.