Domanda:
Un ALU è un multiplexer?
Niklas R.
2012-07-13 17:51:44 UTC
view on stackexchange narkive permalink

Sto studiando l'elettronica digitale dove compaiono i componenti ALU e multiplexer. A me l'ALU sembra un multiplexer ma non è specificamente menzionato che è così. È così o perché no?

Un "Mux" seleziona una delle tante porte di ingresso per ciascuna porta di uscita. Dual Channel Memory è un esempio che raddoppia la larghezza di banda utilizzando 2 canali per la RAM a 64 bit per rendere più veloce il bus a 128 bit. Ma l'ALU calcola tutti i tuoi programmi per salti matematici con precisione singola, doppia o qualsiasi. Viene anche utilizzato in alcuni circuiti ECC.
Sebbene tutti abbiano dato buone risposte, lasciatemi aggiungere qualcosa di importante: i simboli per un MUX e un ALU sono quasi identici e facilmente confondibili. Il simbolo ALU ha un piccolo triangolo rimosso tra i 2 ingressi, mentre il simbolo mux è un semplice quadrilatero. Sebbene le loro funzioni siano molto diverse, posso vedere come potresti scambiare l'una per l'altra.
@David - Sì, ero tentato di spiegarlo come i "pantaloni rovesciati" e la "barca", ma penso che lo terrò per la mia lezione per gli alunni di prima elementare :-)
@stevenvh Grazie, sono contento che tu abbia menzionato il mnemonico "pantaloni rovesciati" e la "barca" è molto pedagociale.
Cinque risposte:
stevenvh
2012-07-13 17:59:41 UTC
view on stackexchange narkive permalink

No, non è un multiplexer. Un multiplexer selezionerebbe uno di entrambi gli ingressi, in una ALU entrambi gli ingressi possono essere utilizzati contemporaneamente, a seconda dell'operazione in sospeso.

ALU sta per Arithmetic and Logic Unit, e questi sono i tipi di operazioni che esegue.

Se l'operazione richiede uno spostamento a sinistra del registro R1, il secondo ingresso viene ignorato, ma potresti anche avere "aggiungi il contenuto dall'indirizzo RAM 0x1208 al registro R1", quindi vengono utilizzati entrambi gli ingressi . Prima di poter eseguire l'aggiunta, i dati della RAM devono essere recuperati e posizionati su uno degli ingressi e il contenuto di R1 sull'altro.

enter image description here

Tutto sommato una ALU può eseguire diverse operazioni logiche, come l'aggiunta, lo spostamento, la cancellazione, ecc. È un pezzo di logica piuttosto complesso che funziona sugli operandi su gli input e il codice dell'operazione.
Operazioni come "cancella A" sono semplici, ma "moltiplica A e B" richiede molte porte.

@Nick - Prego, felice di essere d'aiuto. Grazie per aver accettato.
vicatcu
2012-07-13 20:21:18 UTC
view on stackexchange narkive permalink

Come altri hanno notato, la funzione di una ALU è quella di eseguire operazioni aritmetiche e logiche (tipicamente binarie o unarie) sui bus di ingresso. È possibile suddividere una ALU in tre fasi principali insieme ad una logica di controllo che configura tali fasi.

  • Selezione argomento: questa fase è in realtà solo un multiplexer per ogni ingresso che consente la selezione di vari input per entrambi gli argomenti (ad esempio RegisterA, RegisterB, MemoryLoad, Pipeline Byassed Value, ecc.).
  • Calcolo aritmetico / logico: qui è dove vengono eseguiti tutti i calcoli in parallelo su gli ingressi selezionati / indirizzati
  • Selezione dell'uscita: questo può essere pensato logicamente come un altro multiplexer, ma per ragioni di fan-in / fan-out è spesso implementato come un bus a tre stati con i vari abilita l'output pilotato da un decoder basato sull'istruzione op-code.

Ecco un disegno di altissimo livello che ho preparato per illustrare questo partizionamento.

enter image description here

Potrebbe esserci un dibattito sul fatto che il primo stadio e la logica di controllo siano davvero parte dell'ALU, o se facciano semplicemente parte della fase di esecuzione della pipeline della CPU. / p>

+1 per indicare chiaramente che un mux è solitamente un pezzo molto piccolo di un ALU molto più grande. Vorrei poterti dare un altro +1 per sottolineare che una ALU sta eseguendo * tutte * le operazioni matematiche in parallelo, e il mux seleziona l'operazione che è stata richiesta dall'istruzione.
Molto interessante. Grazie molte per l'informazione. Ho anche trovato il codice VHDL per un ALU nel mio libro di logica digitale che mi ha aiutato a capire che è l'ALU che fa capire alla CPU il codice macchina (?)
@NickRosencrantz la maggior parte del codice macchina (cioè i bit di istruzione) viene utilizzata per controllare gli elementi del percorso dati nelle varie fasi pipeline - l'ALU finisce per fare le primitive operazioni matematiche dettate dalle istruzioni
Russell McMahon
2012-07-13 18:29:28 UTC
view on stackexchange narkive permalink

A me l'ALU sembra un multiplexer ...

Un'ALU esegue molti compiti.
Un multiplexer esegue essenzialmente un compito.

Una ALU potrebbe essere dotata di una funzione multiplexer come una delle sue caratteristiche, se lo si desidera.
cioè le capacità di un multiplexer possono essere un piccolo sottoinsieme delle capacità di una ALU.

In un'implementazione tipica, entrambi hanno due input e un output.
Ma il multiplexer esegue solo una selezione o / o tra i due input.
L'ALU potrebbe eseguire questa operazione più l'aggiunta, OR, AND, XOR, Add, Subtract, ...


Dato un singolo ingresso di controllo C e una porta n bit A (con bit A0, A1, A2 ... An) e un n porta bit B si può pensare di implementare un multiplexer.

Mout_x = A_x.C + B_x./C for all x = 0 ... n

"." = AND logico
"+" = OR logico.

È una domanda interessante se esistono ALU pratiche là fuori che non possono funzionare come multiplexer. All'inizio non si penserebbe così, ma poi ci sono alcune architetture davvero uniche.
@ChrisStratton Dopo aver fatto qualche ricerca in più, comincio a pensare che un ALU può essere disabilitato per funzionare come un MUX, quindi un ALU potrebbe essere la classe base per un MUX e non il contrario. Grazie per il commento (+1).
Oli Glaser
2012-07-13 17:58:10 UTC
view on stackexchange narkive permalink

No, non è un multiplexer. Una ALU è un ' unità logica aritmetica.

Fa ciò che suggerisce il nome, esegue varie operazioni aritmetiche e logiche come addizione, sottrazione, moltiplicazione, spostamento, AND, OR, ecc.

ALU

Grazie per la risposta. Penso che la relazione possa essere pensata al contrario, che un MUX è come un ALU che ha alcune funzioni disabilitate.
sybreon
2012-07-13 20:23:25 UTC
view on stackexchange narkive permalink

Una ALU esegue più operazioni aritmetiche / logiche a seconda della "funzione" selezionata.

È solo un mux, nel senso che la "funzione" selezionata selezionerà il risultato appropriato da inviare all'output.

Ad esempio, AGGIUNGI due numeri E due numeri insieme. Quindi, la "funzione" multiplexa i risultati ADD o AND nell'output.

Per inciso, questo è il modo in cui sono progettati alcuni ALU all'interno dei microprocessori.

Grazie per la risposta. Il libro che sto usando è Digital Logic with VHDL Design e le tue risposte mi aiutano a capire il testo. Ora le altre 2 cose che devo studiare di più sono le mappe di Karnaugh e 4-LUT che non capisco completamente. Grazie ancora per l'aiuto.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...