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
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.
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.
entrambi i link sono morti: / –
- 1. In che modo le rotaie implementano before_filter?
- 2. In che modo le CPU Intel Xeon scrivono in memoria?
- 3. In che modo i client Redis implementano il pipelining?
- 4. Come trovare tutte le classi che implementano IDisposable?
- 5. Come trovare tutte le classi che implementano una determinata interfaccia?
- 6. Quali istruzioni della CPU consumano più energia?
- 7. Trovare tutte le classi che implementano un'interfaccia specifica
- 8. Come si implementano metodi di confronto in modo pulito?
- 9. In che modo configurare ottimizzare le importazioni al volo senza riorganizzare le istruzioni di importazione?
- 10. DataGridView non mostra le proprietà degli oggetti che implementano ICustomTypeDescriptor
- 11. Istanziare tutte le classi che implementano un'interfaccia specifica
- 12. Ninject legano tutte le classi che implementano la stessa interfaccia
- 13. Enumerare tutte le classi Delphi che implementano una determinata interfaccia?
- 14. Quali sono le API che implementano JSR-353 (JSON)
- 15. In che modo PHP utilizza più del 100% della CPU?
- 16. Come si implementano le tabelle di invio in Perl?
- 17. Tipizzazione implicita di array che implementano interfacce
- 18. Esecuzione di istruzioni CPU/GPU dal codice gestito
- 19. come impedire le istruzioni GC_CONCURRENT in Logcat
- 20. Come svuotare le istruzioni stampate in IPython
- 21. Come utilizzare le istruzioni preparate in CodeIgniter
- 22. Dove le istruzioni SSE superano le normali istruzioni
- 23. In che modo SQL Server tratta le istruzioni all'interno delle stored procedure rispetto alle transazioni?
- 24. In che modo i compilatori moderni usano le istruzioni mmx/3dnow/sse?
- 25. In che modo le istruzioni di salto nell'assieme funzionano con più processi?
- 26. In che modo i browser moderni implementano JS Array, in particolare aggiungendo elementi?
- 27. Service e DAO implementano sempre le interfacce
- 28. Sessione contenente elementi che implementano IDisposable
- 29. In che modo le app di notizie Android BBC e Pulse news implementano la visualizzazione a scorrimento orizzontale?
- 30. Utilizzo CPU cpu per ogni processo che utilizza sysctl()?
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
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
È 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 ... –