Quels sont les avantages de l'utilisation de FPGA sur TTL dans l'architecture informatique d'introduction?


24

J'enseigne le seul et unique cours d'architecture informatique dans un collège d'arts libéraux. Le cours est obligatoire pour les majeures et mineures en informatique. Nous n'avons pas de cours de génie informatique, de génie électrique, d'autres cours sur le matériel, etc. pas seulement à travers un manuel ( Organisation et conception informatiquepar Hennessy et Patterson). Mon objectif secondaire est de les exciter sur l'architecture informatique et d'augmenter leur enthousiasme pour l'informatique. Les préparer directement à l'industrie n'est pas un objectif, bien que les motiver à étudier davantage l'architecture informatique le soit. Les étudiants n'ont généralement aucune expérience dans la construction de quoi que ce soit ou dans un cours de laboratoire de niveau collégial. En règle générale, 10 à 15 étudiants suivent le cours par semestre.

J'enseigne le cours depuis 1998 d'une manière similaire à la façon dont on m'a enseigné l'architecture informatique et l'électronique numérique à la fin des années 1980 au MIT: en utilisant des puces DIP TTL sur des platines motorisées. Lors de la première affectation de laboratoire de matériel, les étudiants construisent un additionneur complet. Vers la moitié du semestre, ils commencent à construire un ordinateur simple avec un jeu d'instructions 8 bits. Pour réduire le câblage, je leur fournis un PCB avec une partie de l'électronique (deux bascules D, deux ALU LS 181 4 bits câblés ensemble pour agir comme une ALU 8 bits et un tampon à trois états). Sur le premier de ces laboratoires, ils dérivent les signaux de commande (très simples) pour les deux formats d'instructions et construisent le circuit, saisissant les instructions sur les commutateurs et lisant les résultats des lumières. Sur le deuxième des laboratoires, ils ajoutent un compteur de programme (2 LS163) et une EPROM (quima question initiale portait sur, avant de passer à la façon dont je devrais enseigner l'architecture d'intro). Dans le laboratoire final, ils ajoutent une instruction de branchement conditionnel. Alors que les étudiants passent beaucoup de temps à câbler et à déboguer, je pense que c'est là que se déroule une grande partie de l'apprentissage, et les étudiants repartent avec un réel sentiment d'accomplissement.

Les gens sur ce forum m'ont dit, cependant, que je devrais passer aux FPGA, avec lesquels je n'ai jamais travaillé auparavant. Je suis ingénieur logiciel, pas ingénieur en informatique, et je ne suis plus à l'école depuis un certain temps, mais je suis capable d'apprendre. Je ne pourrais pas obtenir beaucoup d'argent ( peut - être quelques milliers de dollars) pour remplacer nos formateurs numériques existants. Nous avons un analyseur logique unique.

Compte tenu de mes objectifs et de mes contraintes, recommanderiez-vous aux EE de m'en tenir à mon approche actuelle de basculer vers une approche basée sur les FPGA? Dans ce dernier cas, pouvez-vous me donner des indications sur le matériel avec lequel m'éduquer?

Comme demandé, voici un lien vers les programmes et les travaux de laboratoire .

Addition: Oui, c'est aussi un cours de logique numérique. Quand je suis arrivé à mon collège, les étudiants devaient prendre un semestre de chaque architecture informatique et logique numérique, et je les ai combinés en un seul semestre. Bien sûr, c'est une déclaration sur le passé, pas sur l'avenir.


Pouvez-vous publier ou créer un lien vers votre programme d'études / le programme?
Kevin Vermeer

Puis-je vous suggérer d'envisager une approche alternative? Que diriez-vous d'utiliser des microcontrôleurs comme Arduinos dans vos laboratoires?
JonnyBoats

7
@JonnyBoats: ... comment cela s'intégrerait-il? Elle parle de construire des ordinateurs à partir de portes matérielles.
darron

Pour répondre à votre question - pratiquement personne ne construit de portes matérielles, ils achètent des puces avec des portes déjà implémentées. Avec les FPGA, on ne construit pas de portes en matériel, ils les configurent en logiciel.
JonnyBoats

1
@JonnyBoats: les FPGA construisent des conceptions numériques à partir de portes matérielles (les LUT étant des portes programmables). Les portes existent en tant que matériel, et votre conception fonctionne de manière entièrement physique. Avec TTL, vous n'êtes pas non plus "construire des portes" par ce standard ... ce sont des portes pré-construites. La seule différence est que les fonctions de la porte sont programmables, le routage est programmable (mais toujours physique), et il y en a beaucoup plus. Je ne vois toujours pas du tout comment un Arduino s'intègre dans un cours de conception de logique numérique. (À moins que vous ne vouliez qu'elle change le but du cours lui-même?)
darron

Réponses:


16

Compte tenu des objectifs de la classe, je pense que l'approche TTL est très bien, et je dis cela comme un "gars FPGA". Les FPGA sont une mer de logique et vous pouvez faire toutes sortes de choses amusantes avec eux, mais il n'y a que beaucoup de choses humainement possibles à faire en un semestre.

En regardant votre programme, votre classe est un mélange des cours de conception logique et de "structures de machine" que j'ai suivis au premier cycle. (De plus, c'est pour les majors CS. Je suis tout à fait pour que les majors CS doivent faire face à du vrai matériel - les laisser s'en tirer avec l'écriture de code semble être un pas en arrière.) À ce niveau d'introduction, où vous allez voir comment les instructions d'assemblage sont décomposés, je ne vois aucun avantage réel à ce que les élèves fassent les choses en code plutôt qu'à la main. Faire du HDL signifie apprendre le HDL, apprendre à écrire du HDL synthétisable et apprendre l'IDE. C'est beaucoup plus de complexité conceptuelle et de re-abstraction. De plus, vous devez gérer les problèmes logiciels.

Généralement, le but d'un cours qui utilise des FPGA est de pratiquer la création d'une logique utile - utile pour parler aux périphériques, aux communications série, à la RAM, aux générateurs vidéo, etc. portée de votre cours. Des cours plus avancés en architecture informatique demandent aux étudiants d'implémenter des processeurs sophistiqués dans les FPGA, mais encore une fois, cela semble hors de la portée de votre cours.

Je voudrais au moins consacrer une conférence aux FPGA. Parcourez quelques démos avec un tableau de développement et montrez-leur le flux de travail. Puisque vous êtes Mills, peut - être vous pouvez contacter les gens de Berkeley qui dirigent CS 150 / 152 et aller voir comment ils font les choses.


Je peux dire qu'au début des années 90, CS150 a appris essentiellement la façon dont OP décrit ses cours au MIT - principalement des portes 74xx, aboutissant à la construction d'un simple processeur 8 bits (ou 4 bits?). Nous avons eu un bref projet utilisant des FPGA conçus dans un outil de capture schématique (pas de HDL). Il semble que le programme actuel soit principalement basé sur le HDL.
Le Photon

Bon point que la classe est un mélange de conception logique et de structures de machine. Comme je l'ai ajouté à la description de la question, il y avait auparavant deux cours distincts, que j'ai combinés en un seul. Merci beaucoup pour votre aide. Je ferai des recherches sur les FPGA et à tout le moins ajouterai une conférence sur eux. Chez UCB, Dave Patterson a créé une nouvelle approche de l'architecture d'introduction qui est de niveau beaucoup plus élevé. Je garde un œil dessus, mais je ne prévois pas d'apporter un changement aussi important.
Ellen Spertus

J'ai considéré la complexité des environnements FPGA et peut-être que je ne suis pas vraiment en désaccord avec le fait que cela pourrait être trop pour un cours d'introduction. Il semble juste dommage de ne pas enseigner avec des workflows modernes. J'ai joué avec TTL moi-même, et ce n'est que lorsque je suis entré dans les FPGA que j'ai commencé à vraiment comprendre comment les ordinateurs (relativement simples) fonctionnent. Le cours semble meilleur que ce avec quoi je devais travailler, alors peut-être qu'elle fait mieux comprendre les concepts. Cependant, du point de vue des puces logiques TTL, un "vrai" processeur semble très loin. Après les FPGA, il est concevable d'en faire un.
darron

Par "comment les ordinateurs fonctionnent", je veux dire comment les construire réellement, pas un concept flou "d'horloges et de flops" ... pour lequel bien sûr le TTL est suffisant. (et encore une fois, ses cours semblent enseigner cela bien ... mon problème est d'enseigner les concepts sur du matériel qui n'a presque aucune application réelle, au lieu d'enseigner sur du matériel qui est réellement utilisé)
darron

@darron, TTL est fondamentalement obsolète, mais il est conceptuellement propre - il n'y a pas de langage ou d'IDE pour compliquer les choses, juste des diagrammes et un câblage point à point. Cela devient compliqué lorsque la taille de votre mot augmente, mais les trucs 8 bits ne sont pas trop mauvais. Si la classe allait plus loin, ou s'il y avait une classe de suivi, les FPGA auraient du sens, mais je pense que ce serait une complication inutile étant donné le matériel couvert.
mng

6

Je suis tout à fait d'accord avec Photon. Les avantages des FPGA sont nombreux. Voici quelques points intéressants à considérer:

1) Plate-forme facile pour essayer très rapidement une conception de portail, sans heures ou potentiellement des jours de travail à câbler les choses. Les FPGA permettent assez facilement des conceptions numériques potentiellement très complexes. (BEAUCOUP plus de théorie, moins de travail)

2) Des parties importantes du travail d'un étudiant pourraient être effectuées en simulation à l'extérieur du laboratoire.

3) L'environnement logiciel est gratuit (comprenant généralement le simulateur).

4) Il existe de nombreuses plates-formes FPGA relativement bon marché. La tarification académique devrait aider. Quelque chose comme le Terasic DE0-Nano coûte 59 $ pour un kit complet (et il a l'air plutôt bien). 50 à 60 $ semble être la gamme par planche que vous envisagez.

5) Il y a beaucoup de trucs vraiment cool à faire avec les FPGA. Il existe des sites comme OpenCores qui fournissent des centaines de modules préconstruits à utiliser avec les FPGA. Il y a FPGA4Fun , qui a beaucoup de tutoriels et de projets. Pour le pur divertissement, FPGA Arcade est dédié à la création de jeux avec FPGA. Selon ce que vous avez configuré autour des cartes FPGA, cela pourrait rendre la classe vraiment amusante.

6) Certaines cartes ont des classes de conception numérique apparemment prêtes à l'emploi: Introduction à la conception numérique (avertissement: téléchargement volumineux) utilisant une carte Xilinx Spartan 3E légèrement ancienne. (Bien que l' on se base sur ActiveHDL, je préfère personnellement un VHDL plus standard ou Verilog) Les principaux fournisseurs FPGA ont également des programmes universitaires: Programme Université Xilinx , Programme Université Altera , Programme Université Lattice .

7) Le flux de travail est beaucoup plus proche de la façon dont le travail de conception professionnel se déroule de nos jours. La connaissance pratique du développement FPGA est une compétence immédiatement commercialisable.


Merci beaucoup. Je vais certainement les essayer. FWIW, si j'avais un deuxième semestre de laboratoire de matériel, je ferais certainement des FPGA ou Arduino avec eux.
Ellen Spertus

5

Je pense que de nos jours, si vous traitez avec des choses au niveau de la porte, vous ne travaillez pas dans le domaine de "l'architecture informatique", vous faites vraiment juste de l'électronique numérique de base. Mais aussi, vous ne pouvez pas enseigner tout ce qu'il y a à savoir de l'électronique numérique au niveau de la porte jusqu'aux algorithmes de mise en cache, architectures de calcul parallèle, SIMD, mise en réseau, etc., etc. en un seul semestre.

Cela se résume donc vraiment à ce que vous voulez enseigner. Si vous souhaitez vous concentrer sur l'électronique numérique au niveau de la porte, travailler avec des puces au niveau de la porte donnera aux étudiants quelque chose de pratique et leur donnera une meilleure compréhension de ce matériel. Mais si vous voulez enseigner l'architecture informatique, ils doivent probablement travailler à un niveau d'abstraction beaucoup plus élevé que les portes ET et OU.

À tout le moins, vous vous devez probablement d'apprendre un HDL et de mettre en œuvre une ou deux conceptions basées sur FPGA, afin que vous (en tant qu'expert en éducation ici) puissiez évaluer comment ces compétences s'intégreraient dans vos objectifs pour vos élèves. Je m'attends à ce que d'autres réponses donnent beaucoup de pointeurs vers des matériaux peu coûteux et gratuits qui vous permettront de vous familiariser rapidement avec la conception de FPGA. (Indice: Xilinx et Altera proposent tous deux des outils de conception de logiciels gratuits et des simulateurs, ainsi que des tonnes de notes d'application et d'autres supports pédagogiques).


Je ne suis pas d'accord que la classe telle qu'elle est n'enseigne pas l'architecture informatique. Les étudiants apprennent à implémenter un ISA, qui fait définitivement partie de l'architecture informatique, et j'enseigne également le pipelining et les caches. Je suis d'accord qu'il y a plus dans l'architecture que ce que j'enseigne dans le même cours. J'ai pris plusieurs autres cours d'architecture en tant qu'étudiant, j'ai fait des recherches universitaires et industrielles en architecture, etc. J'apprécie l'encouragement à se pencher sur les HDL et les FPGA.
Ellen Spertus

5

Un avantage de l'utilisation du TTL serait que pour les circuits très élémentaires, les détails du HDL masqueraient en quelque sorte les circuits réels, et la plupart des étudiants passeraient simplement la plupart du temps à écrire et à apprendre le HDL. Je pense que les TTL pour la première partie et ensuite FPGA pour la partie architecture seraient mieux, car il est difficile de créer un système programmable avec des TTL.


+1 HDL masque les circuits. Il existe différentes façons d'écrire des multiplexeurs dans des HDL, et la plupart d'entre eux n'ont que très peu ou rien à voir avec la façon dont les portes sont organisées pour créer un multiplexeur.
ajs410

C'est le point clé - il est beaucoup trop facile d'écrire du code pour un FPGA sans vraiment comprendre à un niveau fondamental comment il fonctionne. Maintenant, il existe des moyens d'éviter cela, par exemple l'IDE d'Altera comprend un mode d'entrée schématique qui peut vous aider à vous concentrer sur la conception au niveau de la porte, mais en vous en tenant à cela, vous finissez également par ne pas vraiment pouvoir exploiter la puissance des FPGA. être en fait un point dans la commutation?
Jules

1

Appréciant pleinement l'importance d' une expérience pratique de l'assemblage de circuits physiques, je pense qu'il est également important de reconnaître que vous ne pouvez pas couvrir les pratiques informatiques modernes sans un certain niveau de quelque chose qui "ressemble à" une simulation ou une abstraction trop cachée, de sorte que le le mieux que vous puissiez faire est d'essayer de faire un travail à chaque niveau avant d'ajouter suffisamment d'abstraction pour rendre plausible la tentative du niveau suivant de complexité. Le cours MIT auquel vous vous référez, par exemple, a commencé à un moment donné à faire une simulation logicielle d'une machine RISC 32 bits exécutée au-dessus de la machine microprogrammée 8 bits de puces et modules qui était physiquement "construite". À ce stade, je dirais qu'il est plus efficace de simplement implémenter une telle machine dans un FPGA (quelque chose que je pense qu'ils ont probablement fait depuis).

À la lumière de cela, ma tentation serait d'essayer d'inclure à la fois une phase puces et câbles au début, et une phase FPGA plus tard dans le cours. Puisque vous avez déjà les kits de maquette, vous pouvez simplement garder les premiers laboratoires à ce sujet et utiliser soit une carte FPGA ou peut-être un module FPGA pouvant être utilisé pour les laboratoires ultérieurs. Il serait possible de construire une machine hybride où le FPGA dépendrait d'une partie du circuit externe implémentant une partie du processeur, mais cela semblerait très artificiel - il serait plus réaliste de changer de technologie entièrement au point où la complexité dépasse un morceau de la maquette.

Vous devriez pouvoir vous procurer des cartes FPGA autonomes existantes pour moins de 100 $ / ch à un prix éducatif.

Une autre option pourrait être de construire la vôtre dans le cadre de la classe, en construisant peut-être une interface de chargement série FPGA comme première partie du projet. Un bon avantage de cela est que le coût serait suffisamment bas pour que les élèves puissent conserver leurs conseils au lieu d'avoir à les remettre à la fin du trimestre, ce qui, espérons-le, entraînerait un intérêt et une sensibilisation continus parmi une poignée.


Merci beaucoup. J'étais au courant du changement au MIT. En fait, j'ai commencé dans mon établissement actuel avec d'anciens kits de laboratoire 6.004 / 6.111 dont le MIT n'avait plus besoin. Mes étudiants, cependant, ne sont pas des étudiants du MIT et ne peuvent pas absorber autant dans un semestre, donc je dois être sélectif. (En fait, j'ai trouvé au MIT que la plupart des étudiants ne pouvaient pas absorber autant que ce qui leur était lancé non plus, mais c'est une autre discussion.) Le moindre coût des cartes FPGA est certainement attrayant.
Ellen Spertus

1

Je pense que la bonne approche serait de commencer par construire quelques portes à partir de relais, qui sont faciles à voir et à comprendre, mais qui sont évidemment trop lents et gourmands en énergie pour les applications modernes. Ensuite, montrez comment les transistors peuvent être utilisés pour faire la même chose de manière plus compacte, plus rapide et plus efficace, et les grilles empaquetées [par exemple "quad nand"] peuvent le faire encore mieux. Une fois que vous êtes arrivé à ce point, je vous suggère de montrer comment construire des choses comme des multiplexeurs et des verrous à partir de portes, puis comment des structures un peu plus grandes peuvent être construites à partir de multiplex, de verrous, etc. emballés Personne ne va de construire un ordinateur de nos jours en soudant physiquement ensemble des milliers de transistors discrets, mais le fonctionnement interne d'un ordinateur ressemble beaucoup à celui des transistors, sauf que tout est beaucoup plus petit.

Je pense que l'un des principaux avantages que les élèves tireraient de ce type d'enseignement est de comprendre pourquoi de nombreuses choses fonctionnent comme elles le font. Par exemple, si l'on «simulait» un jeu d'instructions qui ne nécessitait aucune réalisation physique pratique, il ne serait pas nécessaire qu'une instruction «charger la mémoire» prenne trois cycles tandis que la plupart des autres instructions en prennent un. Certaines choses pourraient être comprises sans descendre au niveau du transistor, mais quelques-unes ne le peuvent pas (par exemple l'importance des entrées synchrones par rapport aux entrées asynchrones).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.