2009-03-28 17 views
7

In diversi linguaggi di assemblaggio MUL (x86)/MULT (mips) si riferiscono alla moltiplicazione. È una scatola nera per il programmatore. Mi interessa come in realtà una CPU realizzi una moltiplicazione indipendentemente dall'architettura. Diciamo che ho due valori a 16 bit nei miei registri e io sono la CPU, quindi devo implementare MUL usando le altre istruzioni di bit che ho (e, o, xor, non, shl, shr, ecc.). Cosa dovrei fare?In che modo le CPU implementano istruzioni come MUL/MULT?

risposta

7

http://en.wikipedia.org/wiki/Multiplication_ALU su Wikipedia elenca diversi metodi per eseguire la moltiplicazione in un circuito digitale.

Quando ho lavorato a un progetto per aggiungere istruzioni SIMD a un processore DEC Alpha al Verilog al college, abbiamo implementato uno Wallace tree multiplier, il motivo principale è che veniva eseguito in un numero fisso di cicli ed era facile da eseguire.

MODIFICA: Lei ha menzionato l'uso delle altre istruzioni di bit-fretting, sulla moltiplicazione dei processori moderni non sarebbe stato microcodato come questo; sarebbe un modo per rallentare e il processore sarebbe macellato in parametri di riferimento.

+0

Anche se i cpus non chiamano le proprie istruzioni per motivi di efficienza. Non avevo altro modo di esprimere me stesso, dal momento che il livello più basso che sia mai stato finora è asm. Grazie per l'aiuto! – George

+0

A volte lo fanno. x86 è un ISA complicato e ha alcune istruzioni molto strane. Queste istruzioni sono tradotte in un programma interno di micro-codice. Guardate http://en.wikipedia.org/wiki/File:Intel_Nehalem_arch.svg, vedrete una complessa unità di decodifica e un sequencer di micro-codice, che fa questo – Michael

+0

È anche peggio di quello delle moderne CPU - dato fuori -di-order-execution, branch prediction, hyperthreading, ecc. insieme al microcodice, è quasi corretto dire che l'ISA x86 gira su una macchina virtuale implementata in microcodice e circuiti. Ma non è quasi mai necessario preoccuparsene ... –

3

This page mostra le porte logiche per un multiplatore combinatorio 4 * 4. Puoi lavorare da lì.

Here is somebody's lab dove descrivono la costruzione di un moltiplicatore a 16 bit da 4 moltiplicatori a 4 bit, ciascuno costruito con porte AND e full adders. Design completo, layout dei chip e forme d'onda di simulazione.

+1

entrambi i link sono morti: / –

Problemi correlati