Was sind die Vorteile der Verwendung von FPGAs gegenüber TTL in der Intro-Computerarchitektur?


24

Ich unterrichte den einzigen Kurs für Computerarchitektur an einer Hochschule für Geisteswissenschaften. Der Kurs ist für die Informatik Haupt- und Nebenfach erforderlich. Wir haben keine Kurse für Computertechnik, Elektrotechnik, andere Hardware usw. Mein Hauptziel in diesem Kurs ist es, dass die Studenten bis auf die Torebene verstehen, wie Computer funktionieren. Ich glaube, sie lernen dies am besten durch ein Hardware-Labor und nicht nur durch ein Lehrbuch ( Computer Organization and Designvon Hennessy und Patterson). Mein sekundäres Ziel ist es, sie für Computerarchitektur zu begeistern und ihre Begeisterung für Informatik zu steigern. Sie direkt auf die Industrie vorzubereiten, ist kein Ziel, obwohl es eine Motivation ist, mehr Computerarchitektur zu studieren. Die Studierenden haben in der Regel keine Erfahrung mit dem Aufbau oder dem Besuch eines Praktikums auf College-Niveau. Normalerweise belegen 10-15 Studenten den Kurs pro Semester.

Ich unterrichte den Kurs seit 1998 auf ähnliche Weise wie ich ihn Ende der 1980er Jahre am MIT in Computerarchitektur und digitaler Elektronik unterrichtet habe: mit DIP-TTL-Chips auf angetriebenen Steckbrettern. Bei der ersten Aufgabe im Hardwarelabor erstellen die Schüler einen Volladdierer. Etwa zur Hälfte des Semesters bauen sie einen einfachen Computer mit einem 8-Bit-Befehlssatz. Um die Verkabelung zu reduzieren, habe ich ihnen eine Platine mit einem Teil der Elektronik zur Verfügung gestellt (zwei D-Flip-Flops, zwei 4-Bit-LS 181-ALUs, die als 8-Bit-ALU verdrahtet sind, und einen Tristate-Puffer). In der ersten Übung leiten sie die (sehr einfachen) Steuersignale für die beiden Befehlsformate ab und bauen die Schaltung auf, geben Befehle an Schaltern ein und lesen die Ergebnisse von Lichtern. In der zweiten Übung fügen sie einen Programmzähler (2 LS163s) und einen EPROM (welcheMeine ursprüngliche Frage lautete: bevor ich anfing, wie ich Intro-Architektur unterrichten sollte. Im letzten Labor fügen sie eine bedingte Verzweigungsanweisung hinzu. Während die Schüler viel Zeit für Verkabelung und Fehlerbehebung aufwenden, finde ich, dass dort ein Großteil des Lernens stattfindet und die Schüler mit einem echten Erfolgserlebnis abreisen.

Die Leute in diesem Forum haben mir jedoch gesagt, dass ich zu FPGAs wechseln soll, mit denen ich vorher noch nicht gearbeitet habe. Ich bin ein Software-Ingenieur, kein Computer-Ingenieur, und bin seit einiger Zeit nicht mehr in der Schule, aber ich bin lernfähig. Ich könnte nicht viel Geld ( vielleicht ein paar tausend Dollar) dafür bekommen, unsere vorhandenen digitalen Trainer zu ersetzen. Wir haben einen einzigen Logikanalysator.

Würden Sie EEs in Anbetracht meiner Ziele und Einschränkungen empfehlen, meinen derzeitigen Ansatz der Umstellung auf FPGAs beizubehalten? Wenn dies der Fall ist, können Sie mir Hinweise auf Materialien geben, mit denen ich mich weiterbilden kann?

Hier finden Sie, wie gewünscht, einen Link zu den Lehrplänen und Laboraufgaben .

Ergänzung: Ja, es ist auch ein digitaler Logikkurs. Als ich an meinem College ankam, mussten die Studenten jeweils ein Semester Computerarchitektur und digitale Logik belegen, und ich kombinierte sie zu einem einzigen Semester. Das ist natürlich eine Aussage über die Vergangenheit, nicht über die Zukunft.


Können Sie Ihren Lehrplan / Lehrplan posten oder verlinken?
Kevin Vermeer

Darf ich vorschlagen, dass Sie einen alternativen Ansatz in Betracht ziehen? Wie wäre es mit Mikrocontrollern wie Arduinos in Ihren Labors?
JonnyBoats

7
@JonnyBoats: ... wie würde das passen? Sie spricht über den Bau von Computern aus Hardware-Gates.
Darron

Um Ihre Frage zu beantworten - praktisch niemand baut Hardware-Gates, sie kaufen Chips mit bereits implementierten Gates. Mit FPGAs baut man keine Gates in Hardware, sondern richtet sie in Software ein.
JonnyBoats

1
@JonnyBoats: FPGAs konstruieren digitale Designs aus Hardware-Gattern (LUTs sind programmierbare Gatter). Die Gates existieren als Hardware, und Ihr Design funktioniert auf ganz physische Weise. Mit TTL werden auch nach diesem Standard keine Tore "gebaut", sondern vorgefertigte Tore. Der einzige Unterschied besteht darin, dass die Gate-Funktionen programmierbar sind, das Routing programmierbar ist (aber immer noch physikalisch ist) und dass es viele Größenordnungen mehr davon gibt. Ich verstehe immer noch nicht, wie ein Arduino überhaupt in einen Kurs für digitales Logikdesign passt. (Es sei denn, Sie
wollten

Antworten:


16

Angesichts der Ziele der Klasse denke ich, dass der TTL-Ansatz in Ordnung ist, und ich sage dies als "FPGA-Typ". FPGAs sind ein Meer von Logik und Sie können mit ihnen alle möglichen lustigen Dinge anstellen, aber es gibt nur so viel, was in einem Semester menschlich möglich ist.

Wenn Sie sich Ihren Lehrplan ansehen, ist Ihre Klasse eine Mischung aus Logikdesign- und Maschinenstrukturkursen, die ich im Grundstudium absolviert habe. (Plus, es ist für CS-Majors. Ich bin alles für CS-Majors, die sich mit echter Hardware auseinandersetzen müssen - sie mit dem Schreiben von Code davonkommen zu lassen, scheint ein Schritt zurück zu sein.) Ich sehe keinen wirklichen Vorteil darin, dass die Schüler Dinge im Code erledigen und nicht von Hand. Wenn Sie HDL lernen, müssen Sie lernen, wie man synthetisierbares HDL schreibt und die IDE erlernen. Das ist viel mehr konzeptuelle Komplexität und Neuabstraktion. Außerdem müssen Sie sich mit Softwareproblemen befassen.

Im Allgemeinen besteht der Sinn eines Kurses, der FPGAs verwendet, darin, die Erstellung nützlicher Logik zu üben - nützlich für Gespräche mit Peripheriegeräten, seriellen Kommunikationen, RAM, Videogeneratoren usw. Dies ist ein wertvolles Wissen, das jedoch weitestgehend aus dem Rahmen fällt Umfang Ihres Kurses. Fortgeschrittene Klassen in Computerarchitektur haben Studenten, die anspruchsvolle CPUs in FPGAs implementieren, aber dies scheint auch hier nicht in den Rahmen Ihres Kurses zu fallen.

Ich würde zumindest einen Vortrag über FPGAs halten. Führen Sie ein paar Demos mit einem Entwicklerboard durch und zeigen Sie ihnen den Workflow. Da Sie bei Mills sind, vielleicht könnte man die Leute in Berkeley kontaktieren , die CS laufen 150 / 152 und gehen sehen , wie sie Dinge tun.


Ich kann sagen, dass CS150 in den frühen 90er Jahren im Wesentlichen so unterrichtet wurde, wie OP ihre Kursarbeit am MIT beschreibt - meist 74xx Gates, die in der Konstruktion einer einfachen 8-Bit- (oder 4-Bit-?) CPU gipfelt. Wir hatten ein kurzes Projekt mit FPGAs, die in einem schematischen Capture-Tool (kein HDL) erstellt wurden. Es sieht so aus, als ob der aktuelle Lehrplan hauptsächlich auf HDL basiert.
Das Photon

Gut, dass die Klasse eine Mischung aus Logikdesign und Maschinenstrukturen ist. Wie ich der Beschreibung der Frage hinzufügte, gab es früher zwei separate Kurse, die ich zu einem kombinierte. Vielen Dank für Ihre Hilfe. Ich werde FPGAs erforschen und zumindest einen Vortrag darüber halten. Bei UCB hat Dave Patterson einen neuen Ansatz für die Intro-Architektur entwickelt, der viel höher ist. Ich behalte es im Auge, habe aber nicht vor, eine so große Veränderung herbeizuführen.
Ellen Spertus

Ich habe über die Komplexität der FPGA-Umgebungen nachgedacht und bin mir nicht sicher, ob dies für einen Einführungskurs zu viel ist. Es scheint nur eine echte Schande zu sein, nicht mit modernen Workflows zu unterrichten. Ich habe selbst mit TTL gespielt und erst als ich mich mit FPGAs beschäftigte, begann ich wirklich zu verstehen, wie (relativ einfache) Computer funktionieren. Die Kursarbeit sieht besser aus als das, womit ich arbeiten musste, also bringt sie vielleicht die Konzepte besser rüber. Aus der Sicht der TTL-Logik-Chips sieht ein "echter" Prozessor jedoch sehr weit weg aus. Nach FPGAs ist es denkbar, einen zu machen.
Darron

Mit "wie Computer funktionieren" meine ich, wie man sie tatsächlich baut, nicht mit einem verschwommenen "Clocks and Flops" -Konzept ... wofür natürlich TTL ausreicht. (und wieder, ihre Kursarbeit sieht so aus, als würde sie dies gut lehren ... meine Ausgabe befasst sich mit den Konzepten für Hardware, die fast keine wirkliche Anwendung hat, anstatt auf Hardware zu lehren, die tatsächlich verwendet wird)
Darron

@ Darron, TTL ist im Grunde genommen veraltet, aber es ist konzeptionell sauber - es gibt keine Sprache oder IDE, um Dinge zu komplizieren, nur Diagramme und Punkt-zu-Punkt-Verkabelung. Es wird chaotisch, wenn die Wortgröße steigt, aber 8-Bit-Inhalte sind nicht schlecht. Wenn die Klasse weiter gehen würde oder wenn es eine Folgeklasse gäbe, wären FPGAs sinnvoll, aber ich denke, es wäre angesichts des behandelten Materials eine unnötige Komplikation.
7.

6

Ich stimme Photon sehr zu. FPGAs bieten viele Vorteile. Hier sind einige interessante Punkte zu beachten:

1) Einfache Plattform für das schnelle Ausprobieren eines Tordesigns, ohne stundenlange oder möglicherweise tagelange Arbeit, um Dinge zu verkabeln. FPGAs ermöglichen sehr einfach potenziell sehr komplexe digitale Designs. (VIEL mehr Theorie, weniger Arbeit)

2) Wesentliche Teile der Arbeit eines Schülers können in einer Simulation außerhalb des Labors durchgeführt werden.

3) Die Softwareumgebung ist kostenlos (im Allgemeinen einschließlich des Simulators).

4) Es gibt viele relativ billige FPGA-Plattformen. Akademische Preisgestaltung sollte helfen. So etwas wie der Terasic DE0-Nano kostet $ 59 für ein komplettes Kit (und es sieht ziemlich gut aus). $ 50-60 scheinen der Bereich zu sein, den Sie pro Board betrachten würden.

5) Es gibt eine Menge cooler Sachen, die mit FPGAs zu tun haben. Es gibt Sites wie OpenCores , die Hunderte von vorgefertigten Modulen für die Verwendung mit FPGAs bereitstellen. Es gibt FPGA4Fun mit vielen Tutorials und Projekten. Für pure Unterhaltung ist FPGA Arcade darauf ausgerichtet, Spiele mit FPGAs zu erstellen. Je nachdem, was Sie rund um die FPGA-Boards eingerichtet haben, kann dies zu einem wirklich unterhaltsamen Kurs werden.

6) Einige Boards haben anscheinend vorgefertigte Digital Design-Klassen: Einführung in Digital Design (Warnung: großer Download) mit einem etwas älteren Board auf Basis von Xilinx Spartan 3E. (Obwohl dieses Programm auf ActiveHDL basiert, würde ich persönlich ein Standard-VHDL oder Verilog bevorzugen.) Die wichtigsten FPGA-Anbieter bieten auch Universitätsprogramme an: das Xilinx-Universitätsprogramm , das Altera-Universitätsprogramm und das Lattice-Universitätsprogramm .

7) Der Workflow ähnelt viel eher der Art und Weise, wie professionelle Designarbeiten heutzutage ablaufen. Kenntnisse in der FPGA-Entwicklung sind sofort vermarktbar.


Vielen Dank. Ich werde das auf jeden Fall ausprobieren. FWIW, wenn ich ein zweites Semester im Hardwarelabor hätte, würde ich definitiv FPGAs oder Arduino mit ihnen machen.
Ellen Spertus

5

Ich denke, wenn Sie sich heutzutage mit Dingen auf Gate-Ebene beschäftigen, arbeiten Sie nicht auf dem Gebiet der "Computerarchitektur", sondern machen einfach nur digitale Grundelektronik. Aber Sie können auch nicht alles Wissenswerte von der digitalen Elektronik auf Gate-Ebene bis hin zu Caching-Algorithmen, Parallel-Computing-Architekturen, SIMD, Netzwerken usw. in einem einzigen Semester vermitteln.

Es kommt also wirklich darauf an, was Sie unterrichten möchten. Wenn Sie sich auf digitale Elektronik auf Gate-Ebene konzentrieren möchten, können Sie mit Gate-Level-Chips arbeiten, um den Schülern die Arbeit zu erleichtern und ihnen ein besseres Verständnis für dieses Material zu vermitteln. Wenn Sie jedoch Computerarchitektur unterrichten möchten, müssen sie wahrscheinlich auf einer viel höheren Abstraktionsebene arbeiten als AND- und OR-Gatter.

Zumindest sind Sie es wahrscheinlich selbst schuldig, eine HDL zu erlernen und ein oder zwei FPGA-basierte Designs zu implementieren, damit Sie (als Bildungsexperte hier) beurteilen können, wie diese Fähigkeiten zu Ihren Zielen für Ihre Schüler passen würden. Ich gehe davon aus, dass andere Antworten viele Hinweise auf kostengünstige Materialien geben, mit denen Sie sich in kurzer Zeit mit dem FPGA-Design vertraut machen können. (Hinweis: Sowohl Xilinx als auch Altera bieten kostenlose Software-Designtools und -simulatoren sowie jede Menge Anwendungshinweise und anderes Lehrmaterial an.)


Ich bin nicht einverstanden, dass die Klasse als solche keine Computerarchitektur lehrt. Die Schüler lernen, wie man einen ISA implementiert, der definitiv Teil der Computerarchitektur ist, und ich unterrichte auch über Pipelining und Caches. Ich stimme zu, dass Architektur mehr beinhaltet als das, was ich in einem Kurs unterrichte. Ich habe als Student mehrere andere Architekturkurse besucht, Studien- und Industrieforschung im Bereich Architektur betrieben usw. Ich schätze die Anregung, mich mit HDLs und FPGAs zu befassen.
Ellen Spertus

5

Ein Vorteil der Verwendung von TTL wäre jedoch, dass die Details der HDL für die sehr elementaren Schaltungen die tatsächliche Schaltungsanordnung maskieren würden und die meisten Schüler einfach die meiste Zeit damit verbringen würden, HDL zu schreiben und zu lernen. Ich denke, TTLs für den ersten Teil und dann FPGA für den Architekturteil wären besser, da es schwierig ist, ein programmierbares System mit TTLs zu erstellen.


+1 HDL verbirgt Schaltkreise. Es gibt verschiedene Möglichkeiten, Multiplexer in HDLs zu schreiben, und die meisten von ihnen haben wenig oder gar nichts damit zu tun, wie die Gates angeordnet sind, um einen Multiplexer zu erstellen.
Ajs410

Dies ist der entscheidende Punkt - es ist viel zu einfach, Code für ein FPGA zu schreiben, ohne wirklich grundlegend zu verstehen, wie es funktioniert. Es gibt nun Möglichkeiten, dies zu vermeiden. Alteras IDE enthält beispielsweise einen schematischen Eingabemodus, mit dem Sie sich auf das Gate-Level-Design konzentrieren können. Wenn Sie sich jedoch daran halten, können Sie die Leistung von FPGAs nicht wirklich ausnutzen eigentlich irgendwas beim wechseln?
Jules

1

Ich bin mir der Bedeutung einiger praktischer Erfahrungen mit der Baugruppe von physischen Schaltkreisen voll bewusst und denke, es ist auch wichtig zu erkennen, dass Sie moderne Computerpraktiken nicht abdecken können, ohne eine Ebene, die sich wie eine Simulation anfühlt oder zu viel Abstraktion verbirgt Das Beste, was Sie tun können, ist, zu versuchen, auf jeder Ebene etwas zu arbeiten, bevor Sie genügend Abstraktion hinzufügen, um den Versuch der nächsten Komplexitätsstufe plausibel zu machen. Der MIT-Kurs, auf den Sie sich beziehen, begann zu einem bestimmten Zeitpunkt mit einer Softwaresimulation einer 32-Bit-RISC-Maschine, die auf der 8-Bit-Mikroprogramm-Maschine von chips & modules lief, die physikalisch "gebaut" wurde. An diesem Punkt würde ich argumentieren, dass es effektiver ist, eine solche Maschine nur in einem FPGA zu implementieren (etwas, von dem ich vermute, dass sie dies wahrscheinlich seitdem getan haben).

In Anbetracht dessen wäre es meine Versuchung, zu einem frühen Zeitpunkt sowohl eine Chips & Wires-Phase als auch eine FPGA-Phase zu einem späteren Zeitpunkt in den Kurs aufzunehmen. Da Sie bereits über die Breadboard-Kits verfügen, können Sie die frühen Labors darüber informieren und für die späteren Labors entweder ein FPGA-Board oder möglicherweise ein Breadboard-fähiges FPGA-Modul verwenden. Es wäre möglich, eine Hybridmaschine zu bauen, bei der der FPGA von einer Außenbordschaltung abhängt, die einen Teil des Prozessors implementiert, die sich jedoch sehr künstlich anfühlt. Ein Technologiewechsel nur an dem Punkt, an dem die Komplexität ein Steckbrettstück überschreitet, könnte am realistischsten sein.

Sie sollten in der Lage sein, vorhandene eigenständige FPGA-Boards für weniger als 100 US-Dollar / Jahr zu Ausbildungspreisen zu beziehen.

Eine andere Möglichkeit könnte darin bestehen, als Teil der Klasse eine eigene zu erstellen und als ersten Teil des Projekts möglicherweise eine serielle FPGA-Ladeschnittstelle zu erstellen. Ein netter Vorteil davon ist, dass die Kosten niedrig genug wären, dass die Studenten ihre Boards behalten könnten, anstatt sie am Ende des Semesters abgeben zu müssen, was hoffentlich zu anhaltendem Interesse und Bewusstsein unter einer Handvoll führen würde.


Vielen Dank. Ich war mir der Veränderung am MIT bewusst. Tatsächlich habe ich an meiner jetzigen Einrichtung mit alten 6.004 / 6.111-Laborkits begonnen, die das MIT nicht mehr benötigte. Meine Studenten sind jedoch keine MIT-Studenten und können in einem Semester nicht so viel aufnehmen, deshalb muss ich selektiv vorgehen. (Tatsächlich stellte ich am MIT fest, dass die meisten Studenten nicht so viel aufnehmen konnten, wie sie geworfen hatten, aber das ist eine andere Diskussion.) Die niedrigeren Kosten für FPGA-Boards sind definitiv attraktiv.
Ellen Spertus

1

Ich denke, der richtige Ansatz wäre, zunächst ein paar Tore aus Relais zu bauen, die leicht zu sehen und zu verstehen sind, aber offensichtlich zu langsam und für moderne Anwendungen zu leistungshungrig sind. Zeigen Sie dann, wie Transistoren verwendet werden können, um das Gleiche kompakter, schneller und effizienter zu machen, und verpackte Gates [z. B. "Quad nand"] können es noch besser. Wenn Sie an diesem Punkt angelangt sind, würde ich vorschlagen, dass Sie zeigen, wie man Multiplexer und Latches aus Gattern baut und wie etwas größere Strukturen aus verpackten Multiplexen, Latches usw. gebaut werden können Heutzutage kann man einen Computer bauen, indem man unzählige diskrete Transistoren physikalisch zusammenlötet. Der interne Betrieb eines Computers ist jedoch dem der Transistoren sehr ähnlich, außer dass alles viel kleiner ist.

Ein Hauptvorteil, den die Schüler meiner Meinung nach aus dieser Art von Unterricht ziehen würden, ist das Verständnis dafür, warum viele Dinge so funktionieren, wie sie funktionieren. Wenn man beispielsweise einen Befehlssatz "simuliert", für den keine praktische physikalische Umsetzung erforderlich ist, muss ein Befehl "Speicher laden" nicht drei Zyklen dauern, während die meisten anderen Befehle einen Befehl ausführen. Einige Dinge könnten verstanden werden, ohne auf den Transistorpegel abzusinken, einige jedoch nicht (z. B. die Bedeutung von synchronen gegenüber asynchronen Eingängen).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.