Quali sono i vantaggi dell'utilizzo di FPGA rispetto a TTL nell'architettura introduttiva del computer?


24

Insegno l'unico e unico corso di architettura informatica in un college di arti liberali. Il corso è richiesto per l'informatica maggiore e minore. Non abbiamo ingegneria informatica, ingegneria elettrica, altri corsi di hardware, ecc. Il mio obiettivo principale nel corso è che gli studenti comprendano fino a livello di gate come funzionano i computer, che credo imparino meglio attraverso un laboratorio hardware e non solo attraverso un libro di testo ( Computer Organization and Designdi Hennessy e Patterson). Il mio obiettivo secondario è quello di entusiasmarli per l'architettura informatica e aumentare la loro eccitazione per l'informatica. Prepararli direttamente per l'industria non è un obiettivo, anche se motivarli a studiare più architettura informatica. In genere, gli studenti non hanno avuto alcuna esperienza nella costruzione di qualcosa o in un corso di laboratorio a livello universitario. In genere, 10-15 studenti seguono il corso per semestre.

Ho insegnato il corso dal 1998 in un modo simile a come mi è stato insegnato architettura informatica ed elettronica digitale alla fine degli anni '80 al MIT: usando chip DIP TTL su breadboard alimentate. Al primo incarico di laboratorio hardware, gli studenti costruiscono un sommatore completo. Circa a metà semestre, iniziano a costruire un semplice computer con un set di istruzioni a 8 bit. Per ridurre il cablaggio, fornisco loro un PCB con alcuni componenti elettronici (due flip-flop D, due ALU LS 181 a 4 bit cablati insieme per fungere da ALU a 8 bit e un buffer a tre stati). Sul primo di questi laboratori, derivano i segnali (molto semplici) di controllo per i due formati di istruzione e costruiscono il circuito, inserendo le istruzioni sugli interruttori e leggendo i risultati dalle luci. Nel secondo dei laboratori, aggiungono un contatore di programmi (2 LS163) e una EPROM (chela mia domanda originale era, prima di passare a come dovrei insegnare l'architettura introduttiva). Nel laboratorio finale, aggiungono un'istruzione di ramo condizionale. Mentre gli studenti trascorrono una buona quantità di tempo a cablare e eseguire il debug, sento che è lì che avviene gran parte dell'apprendimento e gli studenti se ne vanno con un vero senso di realizzazione.

Le persone su questo forum mi hanno detto che avrei dovuto passare a FPGA, con cui non avevo mai lavorato prima. Sono un ingegnere informatico, non un ingegnere informatico, e ormai non frequento la scuola da un po ', ma sono in grado di imparare. Non sarei in grado di ottenere molti soldi ( forse qualche migliaio di dollari) per sostituire i nostri attuali trainer digitali. Abbiamo un solo analizzatore logico.

Dati i miei obiettivi e i miei vincoli, consiglieresti agli EE di attenermi al mio attuale approccio di passare a uno basato su FPGA? In quest'ultimo caso, puoi darmi qualche suggerimento sui materiali con cui educare me stesso?

Come richiesto, ecco un link al programma e agli incarichi di laboratorio .

Aggiunta: Sì, è anche un corso di logica digitale. Quando sono arrivato al mio college, gli studenti dovevano prendere un semestre di ciascuno di architettura informatica e logica digitale, e li ho combinati in un solo semestre. Certo, questa è una dichiarazione sul passato, non sul futuro.


Puoi pubblicare o collegare al tuo curriculum / programma?
Kevin Vermeer,

Posso suggerirti di prendere in considerazione un approccio alternativo? Che ne dici di usare microcontrollori come Arduinos nei tuoi laboratori?
JonnyBoats il

7
@JonnyBoats: ... come si adatterebbe? Sta parlando della costruzione di computer da porte hardware.
Darron,

Per rispondere alla tua domanda: praticamente nessuno costruisce gate hardware, acquista chip con gate già implementati. Con FPGA non si costruiscono gate nell'hardware, ma li si imposta nel software.
JonnyBoats il

1
@JonnyBoats: gli FPGA stanno costruendo progetti digitali da porte hardware (le LUT sono porte programmabili). Le porte esistono come hardware e il tuo design funziona in modo del tutto fisico. Con TTL non stai nemmeno "costruendo cancelli" secondo quello standard ... sono cancelli pre-costruiti. L'unica differenza è che le funzioni del gate sono programmabili, il routing è programmabile (ma comunque fisico) e ce ne sono molti di più. Non vedo ancora come un Arduino si adatti a un corso per la progettazione della logica digitale. (A meno che tu non abbia intenzione di cambiare lo scopo del corso stesso?)
darron,

Risposte:


16

Dati gli obiettivi della classe, penso che l'approccio TTL vada bene, e lo dico come un "ragazzo FPGA". Gli FPGA sono un mare di logica e puoi fare ogni sorta di cose divertenti con loro, ma c'è solo così tanto che è umanamente possibile fare in un semestre.

Guardando il tuo programma, la tua classe è un mix di progettazione logica e corsi di "strutture della macchina" che ho seguito durante gli studi. (Inoltre, è per i maggiori di CS. Sono tutto per i maggiori di CS che devono affrontare hardware reale - lasciarli andare via con la scrittura di codice sembra un passo indietro.) A questo livello introduttivo, dove stai andando su come istruzioni di montaggio sono suddivisi, non vedo alcun vantaggio reale nel fatto che gli studenti facciano le cose nel codice rispetto alla mano. Fare HDL significa imparare l'HDL, imparare a scrivere HDL sintetizzabile e imparare l'IDE. Questa è una complessità e una ri-astrazione molto più concettuali. Inoltre devi affrontare i problemi del software.

Generalmente il punto di un corso che utilizza FPGA è esercitarsi a creare logiche utili - utili per parlare con periferiche, comunicazioni seriali, RAM, generatori video, ecc. Questa è una conoscenza preziosa da avere, ma sembra molto fuori dal ambito del tuo corso. Le classi più avanzate in architettura dei computer hanno gli studenti che implementano sofisticate CPU in FPGA, ma di nuovo, questo sembra fuori dallo scopo del tuo corso.

Dedicherei almeno una lezione agli FPGA. Esegui alcune demo con una scheda di sviluppo e mostra loro il flusso di lavoro. Dal momento che siete al Mills, forse si potrebbe contattare la gente di Berkeley che gestiscono CS 150 / 152 e andare a vedere come fanno le cose.


Posso dire che nei primi anni '90 al CS150 è stato insegnato sostanzialmente il modo in cui OP descrive i suoi corsi al MIT - principalmente porte 74xx, che culminano nella costruzione di una semplice CPU a 8 bit (o 4 bit?). Abbiamo avuto un breve progetto usando FPGA progettato in uno strumento di acquisizione schematico (no HDL). Sembra che l'attuale programma sia principalmente basato su HDL.
The Photon,

Il punto positivo è che la classe è un mix di progettazione logica e strutture di macchine. Come ho aggiunto alla descrizione della domanda, c'erano due corsi separati, che ho combinato in uno. Grazie mille per il tuo aiuto. Cercherò FPGA e perlomeno aggiungerò una lezione su di essi. In UCB, Dave Patterson ha creato un nuovo approccio all'architettura introduttiva di livello molto più elevato. Lo sto tenendo d'occhio, ma non ho intenzione di fare un grande cambiamento.
Ellen Spertus,

Ho considerato la complessità degli ambienti FPGA e forse non sono davvero d'accordo sul fatto che potrebbe essere troppo per un corso introduttivo. Sembra davvero un peccato non insegnare con i flussi di lavoro moderni. Ho giocato con il TTL me stesso, e non è stato fino a quando non sono entrato negli FPGA che ho iniziato a capire davvero come funzionano i computer (relativamente semplici). Il corso sembra migliore di quello con cui ho dovuto lavorare, quindi forse lei capisce meglio i concetti. Tuttavia, dal punto di vista dei chip logici TTL, un processore "reale" sembra molto lontano. Dopo FPGA, è concepibile crearne uno.
darron,

Con "come funzionano i computer" intendo come costruirli effettivamente, non un concetto "orologi e flop" fuzzy ... per il quale ovviamente TTL è sufficiente. (e ancora, i suoi corsi sembrano insegnare così bene ... il mio problema è insegnare concetti sull'hardware che non ha quasi alcuna vera applicazione, invece di insegnare sull'hardware che viene effettivamente utilizzato)
darron,

@darron, il TTL è sostanzialmente obsoleto, ma è concettualmente pulito - non c'è linguaggio o IDE per complicare le cose, solo diagrammi e collegamenti punto-punto. Diventa confuso quando la dimensione della parola aumenta, ma le cose a 8 bit non sono poi così male. Se la classe andasse oltre, o se ci fosse una lezione di follow-up, gli FPGA avrebbero senso, ma penso che sarebbe una complicazione inutile dato il materiale coperto.
mng

6

Sono molto d'accordo con Photon. Ci sono molti vantaggi nell'uso di FPGA. Ecco alcuni punti interessanti da considerare:

1) Piattaforma semplice per provare un progetto di cancello molto rapidamente, senza ore o potenzialmente giorni di lavoro per il cablaggio delle cose. Gli FPGA consentono progetti digitali potenzialmente molto complessi abbastanza facilmente. (MOLTO più teoria, meno lavoro occupato)

2) Parti significative del lavoro di uno studente potrebbero essere fatte in simulazione al di fuori del laboratorio.

3) L'ambiente software è gratuito (generalmente incluso il simulatore).

4) Ci sono molte piattaforme FPGA relativamente economiche in giro. I prezzi accademici dovrebbero aiutare. Qualcosa come il Terasic DE0-Nano costa $ 59 per un kit completo (e sembra abbastanza buono). $ 50-60 sembra essere la gamma per scheda che dovresti guardare.

5) C'è un sacco di cose interessanti da fare con gli FPGA. Esistono siti come OpenCores che offrono centinaia di moduli predefiniti da utilizzare con FPGA. C'è FPGA4Fun , che ha molti tutorial e progetti. Per puro divertimento, FPGA Arcade è dedicato alla costruzione di giochi con FPGA. A seconda di ciò che hai impostato attorno alle schede FPGA, questo potrebbe rendere una lezione davvero divertente.

6) Alcune schede hanno classi di progettazione digitale apparentemente pronte per loro: Introduzione alla progettazione digitale (avviso: download di grandi dimensioni) che utilizza una scheda Xilinx Spartan 3E leggermente vecchia. (Anche se quello è basato su ActiveHDL, preferirei personalmente un VHDL o Verilog più standard) I principali fornitori di FPGA hanno anche programmi universitari: Xilinx University Program , Altera University Program , Lattice University Program .

7) Il flusso di lavoro è molto più vicino al modo in cui avviene la progettazione professionale in questi giorni. Le conoscenze operative nello sviluppo di FPGA sono abilità immediatamente negoziabili.


Grazie mille. Li proverò sicuramente. FWIW, se avessi un secondo semestre di laboratorio hardware, farei sicuramente FPGA o Arduino con loro.
Ellen Spertus,

5

Penso che al giorno d'oggi se hai a che fare con le cose a livello di gate, non stai lavorando nell'area dell'architettura del computer, stai davvero facendo solo l'elettronica digitale di base. Inoltre, non è possibile insegnare tutto ciò che c'è da sapere dall'elettronica digitale a livello di gate fino agli algoritmi di memorizzazione nella cache, architetture di calcolo parallelo, SIMD, networking, ecc. In un solo semestre.

Quindi si riduce davvero a ciò che vuoi insegnare. Se vuoi concentrarti sull'elettronica digitale a livello di gate, lavorare con i chip a livello di gate darà agli studenti qualcosa di pratico con cui lavorare e darà loro una comprensione più forte di quel materiale. Ma se vuoi insegnare l'architettura del computer, probabilmente devono lavorare a un livello di astrazione molto più alto rispetto alle porte AND e OR.

Per lo meno, probabilmente devi a te stesso imparare un HDL e implementare uno o due progetti basati su FPGA, in modo che tu (come esperto di istruzione qui) possa valutare come tali abilità si adatterebbero ai tuoi obiettivi per i tuoi studenti. Mi aspetto che altre risposte forniranno molti suggerimenti su materiali a basso costo e senza costi che ti consentiranno di velocizzare la progettazione FPGA in breve tempo. (Suggerimento: Xilinx e Altera offrono entrambi strumenti di progettazione software gratuiti e simulatori, insieme a tonnellate di note applicative e altro materiale didattico).


Non sono d'accordo sul fatto che la classe così com'è non insegni l'architettura del computer. Gli studenti imparano come implementare un ISA, che fa sicuramente parte dell'architettura informatica, e insegno anche su pipeline e cache. Concordo sul fatto che c'è di più nell'architettura di quello che insegno in un corso. Ho seguito diversi altri corsi di architettura come studente, ho fatto ricerche accademiche e di settore in architettura, ecc. Apprezzo l'incoraggiamento a esaminare HDL e FPGA.
Ellen Spertus,

5

Uno dei vantaggi dell'utilizzo del TTL sarebbe che per i circuiti molto elementari, i dettagli dell'HDL avrebbero mascherato i circuiti reali e la maggior parte degli studenti avrebbe semplicemente trascorso la maggior parte del tempo a scrivere e imparare l'HDL. Penso che i TTL per la prima parte e poi FPGA per la parte dell'architettura sarebbero migliori, dal momento che è difficile realizzare un sistema programmabile con TTL.


+1 HDL nasconde i circuiti. Esistono diversi modi per scrivere multiplexor in HDL e la maggior parte di essi ha poco o nulla a che fare con il modo in cui le porte sono organizzate per creare un mux.
ajs410,

Questo è il punto chiave: è troppo facile scrivere il codice per un FPGA senza realmente capire a livello fondamentale come funziona. Ora, ci sono modi per evitarlo, ad esempio l'IDE di Altera include una modalità di immissione schematica che può aiutarti a concentrarti sulla progettazione a livello di gate, ma restando fedele a ciò finirai per non sfruttare davvero la potenza degli FPGA, quindi ci sarebbe effettivamente essere un punto nel passaggio?
Jules,

1

Apprezzando appieno l'importanza di alcune esperienze pratiche con l'assemblaggio di circuiti fisici, penso che sia anche importante riconoscere che non è possibile coprire le moderne pratiche informatiche senza un certo livello di qualcosa che "sembra" simulazione o nascondere troppa astrazione, quindi il la cosa migliore che puoi fare è provare a fare un po 'di lavoro ad ogni livello prima di aggiungere abbastanza astrazione per rendere plausibile il tentativo del livello successivo di complessità. Il corso MIT a cui ti riferisci ad esempio, ad un certo punto ha iniziato a fare una simulazione software di una macchina RISC a 32 bit in esecuzione su una macchina microprogrammata a 8 bit a chip e moduli che era fisicamente "costruita". A quel punto, direi che è più efficace implementare una macchina del genere in un FPGA (qualcosa che sospetto che probabilmente abbiano fatto da allora).

Alla luce di ciò, la mia tentazione sarebbe quella di provare a includere sia una fase di chip e fili all'inizio, sia una fase FPGA più avanti nel corso. Dato che hai già i kit breadboard, puoi semplicemente tenere i primi lab su quello e usare una scheda FPGA o forse un modulo FPGA breadboard per i laboratori successivi. Costruire una macchina ibrida in cui l'FPGA dipende da una certa circonferenza esterna implementando una parte del processore sarebbe possibile, ma sembrerebbe molto artificiale - cambiare le tecnologie interamente nel punto in cui la complessità supera un pezzo di breadboard potrebbe essere più realistico.

Dovresti essere in grado di procurarti schede FPGA stand alone esistenti per meno di $ 100 / ea a prezzi educativi.

Un'altra opzione, potrebbe essere quella di costruirne una come parte della classe, magari costruendo un'interfaccia di caricamento seriale FPGA come prima parte del progetto. Un bel vantaggio di questo è che il costo sarebbe abbastanza basso da consentire agli studenti di mantenere le loro schede invece di doverle consegnare alla fine del mandato, il che si tradurrebbe in interesse e consapevolezza continui tra una manciata.


Grazie mille. Ero a conoscenza del cambiamento al MIT. In effetti, ho iniziato nella mia attuale istituzione con vecchi kit di laboratorio 6.004 / 6.111 di cui il MIT non aveva più bisogno. I miei studenti, tuttavia, non sono studenti del MIT e non riescono ad assorbire così tanto in un semestre, quindi devo essere selettivo. (In realtà, ho scoperto al MIT che la maggior parte degli studenti non poteva assorbire tanto quanto gli era stato lanciato, ma questa è un'altra discussione.) Il costo inferiore delle schede FPGA è decisamente interessante.
Ellen Spertus,

1

Penso che l'approccio giusto sarebbe quello di iniziare con la costruzione di alcuni gate dai relè, che sono facili da vedere e capire ma sono ovviamente troppo lenti e assetati di energia per le applicazioni moderne. Quindi mostra come i transistor possono essere utilizzati per fare la stessa cosa in modo più compatto, più rapido e più efficiente e i gate impacchettati [ad esempio "quad nand"] possono farlo ancora meglio. Una volta arrivato a quel punto, ti suggerirei di mostrare come costruire cose come multiplexer e chiavistelli fuori dai cancelli, e poi come strutture un po 'più grandi possono essere costruite da multiplex confezionati, chiavistelli, ecc. Nessuno sta andando costruire un computer oggigiorno saldando fisicamente innumerevoli migliaia di transistor discreti, ma il funzionamento interno di un computer è molto simile a quello dei transistor, tranne per il fatto che tutto è molto più piccolo.

Uno dei maggiori vantaggi che penso che gli studenti trarrebbero da questo tipo di istruzione è la comprensione del perché molte cose funzionano come loro. Ad esempio, se si stesse "simulando" un set di istruzioni che non necessitava di alcuna realizzazione fisica pratica, non sarebbe necessario che un'istruzione di "caricamento della memoria" richiedesse tre cicli mentre la maggior parte delle altre istruzioni ne eseguisse una. Alcune cose potrebbero essere comprese senza scendere a livello di transistor, ma altre no (ad esempio il significato degli ingressi sincroni rispetto a quelli asincroni).

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.