Come sono costruite la maggior parte delle ALU ed è possibile "costruirne una tua"?


11

Ho davvero cercato davvero di conoscere il livello molto basso di computer. Ho guardato molte pagine di homebrew ed è abbastanza da prendere in considerazione. Ho preso lezioni di ingegneria elettronica al college, ma non abbiamo approfondito molto l'argomento (era l'informatica, quindi la maggior parte ne era in effetti algoritmi e simili).

Ad ogni modo, come sono / sono state costruite la maggior parte degli ALU ? Mi rendo conto che non è l'unica parte di un computer, ma è comunque una parte importante.

E potresti creare il tuo ALU usando solo le porte logiche (a fini di apprendimento)? Capisco che probabilmente questo sembra stupido per quelli più esperti, ma sto solo cercando di capire. (Diamine, anche un semplice sommatore sarebbe un progetto accurato.) In tal caso, come sarebbe possibile farlo? Ci sono esempi di hardware? (Mi sono guardato intorno a Google, ma non riesco a trovare nulla di simile con una guida dettagliata che spiega le cose).


1
Potresti essere interessato a questo .
Decano del

6
Parlando dall'interno di un team di chip CPU, se sei interessato all'architettura di computer e CPU, i libri canonici sono "Organizzazione e design del computer: l'interfaccia hardware / software" seguito da "Architettura del computer: un approccio quantitativo". Questi sono indicati rispettivamente come "Patterson e Hennessy" e "Hennessy e Patterson".
Ross Rogers,

@Dean - Sì, i fili con codice colore sono per femminucce! :-)
stevenvh

Il nostro progetto del semestre in EE360M a UT Austin nel 1994 era un ALU a 4 bit basato su stack implementato su una scheda demo Xilinx con un XC3000-qualcosa, usato come uno stack di 16 livelli che ha portato il suo valore più alto a un display LED a 7 segmenti e un XC4000-qualcosa che era l'ALU reale. Imposta input e operazioni sugli interruttori DIP, premi un pulsante e il gioco è fatto. L'XC4k aveva un oscillatore interno con diverse frequenze da 63 kHz a 8 MHz e il nostro grado era in parte basato sulla velocità con cui il nostro design poteva andare avanti e funzionare ancora.
Mike DeSimone,

1
@Shubham: Una volta ho visto che sapevo che dovevo stare lontano da Minecraft ... Non avrei fatto nient'altro ... O_o
Mike DeSimone,

Risposte:


15

Puoi costruirli completamente da porte logiche di base e il risultato sarà un bel pezzo d'arte :-).

La serie logica 74xx contiene anche un 74LS181 , un ALU slice a 4 bit , che semplifica drasticamente le cose. Gli ALU bit slice sono stati utilizzati per creare ALU più complessi (leggi: lunghezze di parole più lunghe), ma le nuove tecnologie hanno reso obsoleto questo tipo di circuiti integrati.
nota: TTL (74xx) è solo una tecnologia utilizzata per le porte logiche. Raramente usato più. È stato seguito da Schottky a bassa potenza: 74LSxx, a rigor di termini anche una forma di TTL. Oggi ci sono dozzine di famiglie logiche, tutte basate su CMOS ad alta velocità (74HCxx, 74HCTxx, 74ACxx, ...)

In questi giorni il modo corretto di creare un ALU sarebbe quello di farlo in un CPLD o un FPGA . Questo ti dà molte porte e l'HDL (Hardware Description Language) che usi per progettare l'ALU è molto più facile e meno soggetto a errori rispetto al tentativo di capire come stabilire da solo le connessioni con le porte logiche. VHDL e Verilog sono gli HDL del giorno.

Un metodo alternativo per creare una ALU (non usando le porte logiche, però) sarebbe una singola EEPROM / Flash parallela . Si utilizzano gli ingressi A e B e l'operazione come input (indirizzo) e si ottiene il risultato dell'operazione come output (dati). Tutto quello che devi fare è compilare il contenuto della ROM, nel senso che devi scrivere ad ogni indirizzo quale sarà il risultato dell'operazione per gli ingressi A, B e l'operazione corrispondenti. Le dimensioni delle parole saranno limitate dalle dimensioni ROM più grandi che puoi trovare.


5

Puoi creare il tuo ALU personale, ma anche i vecchi computer con chip TTL discreti hanno usato una certa integrazione per questo. Ad esempio, guarda il chip 74x181. Questa è una porzione di 4 bit di un ALU ed è stata utilizzata in alcuni computer TTL per implementare l'intero ALU utilizzando uno di questi chip per ogni 4 bit.


Mi dispiace sembrare ignorante, ma quanto sono esattamente i chip TTL diversi dalle porte Logic? ed è stato usato TTL prima o dopo le porte logiche? o sono fatti da porte logiche: confuso:

@Sauron - Ho aggiunto una nota sulle famiglie logiche alla mia risposta
stevenvh,

5

Vorrei iniziare prima nel mondo HDL. Scrivi un po 'di verilog, usa il verilator o icarus verilog per simularlo. Scrivi il codice in modo che assomigli a un discreto e, o, e non a cancelli, se così inclinato trova alcune parti della serie 74xx (riciclate?) E qualcosa di breadboard. OPPURE, ci sono un numero di $ 50 più o meno CPLD e FPGA che si possono avere e puoi mettere l'alluminio in uno di quelli che escono con una sorta di interfaccia all'esterno per vedere che funziona. Direi che l'educazione HDL è la stessa che impari le basi del sommatore, ecc. E mescolando input, output e operazioni. Ma puoi farlo in un ambiente facile da usare e vedere prima di portarlo all'hardware. Molto simile a come la gente lo fa oggi, progetta e simula e poi distribuisce.


1
Assolutamente. Simula prima. Quindi, se devi avere l'hardware, un FPGA è molto pratico. Cablare 74xx TTL per qualcosa di così complesso sarebbe un progetto enorme che non dovrebbe essere affrontato fino a quando un progetto non è davvero pensato.
Chris Stratton,

5

Per quanto riguarda i libri, secondo i libri "Patterson e Hennessy" (IIRC ce ne sono 3, travestiti da 3 edizioni, ma in realtà libri totalmente diversi. Se sei serio: prendili tutti.)

Se vuoi sperimentare la tua ALU di base o persino il design della CPU: inizia a sperimentare un simulatore logico. Abbiamo usato DigitalWorks per le nostre lezioni, ma non lo consiglierei. Logisim ( http://sourceforge.net/projects/circuit/ ) sembra promettente. Ciò che devi padroneggiare è la stratificazione: costruisci blocchi di base come un full-adder, un selettore e un flip flop innescato dai cancelli, quindi crea registri, ALU, logica di sequenziamento da quei blocchi predefiniti, fino a una CPU con memoria. Realmente non è così difficile da costruire, diciamo l'equivalente di una CPU PIC (core a 14 bit), collegare un gruppo di LED e programmarlo per mostrare un display Kitt.

Dopodiché sarà divertente fare un core a 32 bit, portarlo su GCC, realizzarlo in un FPGA ed eseguire Linux su di esso. Ma non sarai il primo ...


4

Non è affatto una domanda stupida. La pagina di Wikipedia mostra un tale circuito a livello di gate per una ALU a 2 bit. I circuiti integrati ALU erano comunemente disponibili in "sezioni", in genere a 4 bit, che si potevano mettere in cascata per ottenere larghezze di bus più grandi (vedere divisione dei bit ).

Il foglio dati per la ALU Texas 74181 a 4 bit ha anche uno schema a livello di gate.


4

La storia delle CPU è una questione di quantità crescente di roba per pacchetto.

Le prime CPU utilizzavano sempre ALU seriali costruite con pochi relè o valvole a vuoto. Il primo a contrastare questa tradizione fu il Whirlwind del 1947.

Le prime CPU transistorizzate hanno costruito tutto dai singoli transistor.

L'Apollo Guidance Computer (AGM), forse il primo computer costruito da circuiti integrati, utilizzava un solo tipo di IC esterno alla memoria: porte NOR a 3 ingressi. L'ALU e ogni altra parte della CPU sono stati realizzati interamente da un gran numero di CI di gate NOR. Il (molto più veloce) Cray 1 utilizzava anche un solo tipo di IC esterno alla memoria: un altro tipo di gate NOR.

Mentre la gente ha capito come stipare più transistor su un chip, le CPU successive hanno usato (relativamente) meno chip per implementare un ALU.

Una ALU può essere costruita interamente da multiplexer ( "Multiplexer: il tattico Nuke del Logic Design" ), utilizzando molti meno chip rispetto all'implementazione NOR.

Dieter Mueller ha pubblicato un design ALU a 8 bit che ha più funzionalità di due chip 74181 - il 74181 non può spostarsi a destra - costruito da un numero ancora inferiore di chip: 14 chip TTL complessi: due aggiunte 74283 a 4 bit, alcune 4: 1 mux e alcuni mux 2: 1.

Come molti computer commerciali storicamente importanti, molte CPU fatte in casa usano una versione del 74181, il primo ALU "completo" su un singolo chip.

Molte di queste CPU hanno creato un ALU a 8 bit o un 16 bit (o entrambi) su pochi chip 74181 e alcuni chip 74182 - ogni 74181 gestisce solo operazioni a 4 bit. Le macchine homebrew utilizzano in genere la cosa più semplice possibile che funzionerà: il carry-out di un 74181 che si alimenta al carry-in del successivo, formando un sommatore-ripple-carry. Le macchine commerciali che utilizzano i chip 74181 utilizzano in genere un generatore 74182 per portare avanti il ​​generatore per rendere l'aggiunta e la sottrazione significativamente più veloci.

Oggi la maggior parte degli ALU sono nascosti all'interno di alcuni chip: una piccola parte di una CPU, un altro tipo di ASIC o un CPLD o FPGA.

Anche dopo la disponibilità di "computer a chip singolo", a volte qualcuno costruirà un ALU compatibile con il 74181 da un elenco indirizzi globale o un ALU utilizzando solo porte logiche più semplici, o anche singoli transistor o relè, per scopi di apprendimento.

Le persone l'hanno fatto, quindi deve essere possibile.

Una guida dettagliata che spiega la progettazione e l'implementazione di ALU sembra davvero una buona idea. Aiutateci a scriverne uno nel wikibook di Microprocess Design, forse le sezioni "ALU" o "Wire Wrap" .



2

Storicamente, alcuni lavori ALU sono stati fatti con discreti (sì, transistor e simili) e alcuni con gate, e molto con chip "slice" a 4 bit (SN74181 di TI era uno dei primi, e Fairchild 29F01 aveva il suo giorno).
Ma OGGI, si tratta di costruire le equazioni logiche in un linguaggio di descrizione della logica gate-array o PLA. Esistono moduli precompilati disponibili in commercio che inseriranno qualsiasi piccola unità logica scelta nel tuo progetto, tutto ciò che serve è denaro per ottenere la licenza "IP" (proprietà intellettuale).


1
Quando i resistori erano economici rispetto ai resistori, c'erano una serie di trucchi che potevano consentire la costruzione di ALU con un numero di transistor molto basso (ad esempio un sommatore completo che utilizza due transistor per stadio). Tali circuiti erano assetati di potenza e non tremendamente veloci, ma quando i transistor erano costosi potevano risparmiare costi considerevoli.
Supercat,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.