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.
la source
Réponses:
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.
la source
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.
la source
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).
la source
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.
la source
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.
la source
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).
la source