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.
quelle
Antworten:
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.
quelle
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.
quelle
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.)
quelle
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.
quelle
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.
quelle
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).
quelle