da
GuidoB » 11 mar 2025, 22:02
Praticamente fai 4 moltiplicazioni a 8 bit per moltiplicare due numeri a 16 bit, ottenendo un risultato a 32 bit, giusto? Si può certamente estendere a fattori a 24 o più bit. Non ricordo l'algoritmo nei dettagli, ma l'ha spiegato chi mi ha preceduto. Non è difficile.
Per moltiplicare in binario è necessario conoscere solo le tabelline dello 0 e dell'1.
Per cui, seguendo lo stesso algoritmo della moltiplicazione manuale che si impara alle elementari, si moltiplica il moltiplicando per ogni cifra del moltiplicatore, e si sommano tutti i risultati, opportunamente fatti slittare a sinistra di tanti posti quanta è la posizione della cifra utilizzata del moltiplicatore.
Se la cifra per cui si moltiplica è 0, moltiplicando x 0 = 0.
Se la cifra per cui si moltiplica è 1, moltiplicando x 1 = moltiplicando.
Utilizzando solo l'addizione e lo shift a sinistra, si può fare con una routine software (senza un moltiplicatore parallelo).
Se il moltiplicando ha n cifre e il moltiplicatore m cifre, per implementare un moltiplicatore parallelo c'è bisogno di m sommatori a n cifre, in ciascuno dei quali entrano il moltiplicando moltiplicato per la cifra corrispondente del moltiplicatore (quindi, o 0 o il moltiplicando stesso, cioè basta copiarlo), e la somma del sommatore opportunamente slittato, corrispondente alla cifra del moltiplicatore occupante la posizione immediatamente meno significativa rispetto alla attuale.
Alla fine si fa tutto con un po' di full adder, qualche half adder e un po' di porte AND che effettuano la moltiplicazione per 0 o per 1.
Con un moltiplicatore parallelo si può effettuare la moltiplicazione in un solo colpo di clock, quindi tanto velocemente quanto l'addizione.
Se le cifre sono molte, la propagazione dei riporti attraverso i full adder richiede più tempo. In tal caso, per incrementare la velocità, si adottano reti logiche di anticipazione del riporto.
Charles Babbage, nella prima metà dell'800, in piena età vittoriana, progettò un calcolatore meccanico programmabile (la macchina analitica), che aveva la RAM, la CPU con relativo microcodice e tante altre caratteristiche dei calcolatori elettronici moderni. Rimasi sbalordito al leggere che l'ALU aveva anche l'anticipazione del riporto, un livello di ottimizzazione che, non esistendo ancora calcolatori, poteva essere immaginato solo da un vero genio.
Si trattava di una macchina che calcolava in base 10, che non arrivò ad essere realizzata per la complessità, la mancanza di finanziamenti sufficienti, e il caratteraccio di Babbage che litigò con l'artigiano che lo aiutava a realizzarla.
Chi progettò l'ENIAC (il primo calcolatore elettronico, a valvole termoioniche) disse che nel progetto di Babbage c'era già tutto.
Big fan of ⋮ƎlectroYou! Ausili per disabili e anziani su
⋮ƎlectroYouCaratteri utili: À È É Ì Ò Ó Ù α β γ δ ε η θ λ μ π ρ σ τ φ ω Ω º ª ² ³ √ ∛ ∜ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ∃ ∄ ∆ ∈ ∉ ± ∓ ∾ ≃ ≈ ≠ ≤ ≥