Enseño el único curso de arquitectura de computadoras en una universidad de artes liberales. El curso es obligatorio para la informática mayor y menor. No tenemos cursos de ingeniería informática, ingeniería eléctrica, hardware, etc. Mi objetivo principal en el curso es que los estudiantes comprendan hasta el nivel de la puerta cómo funcionan las computadoras, que creo que aprenden mejor a través de un laboratorio de hardware y no solo a través de un libro de texto ( Organización y diseño de computadoraspor Hennessy y Patterson). Mi objetivo secundario es entusiasmarlos con la arquitectura informática y aumentar su entusiasmo por la informática. Prepararlos directamente para la industria no es un objetivo, aunque sí motivarlos a estudiar más arquitectura de computadoras. Los estudiantes generalmente no han tenido ninguna experiencia en construir nada o tomar un curso de laboratorio de nivel universitario. Típicamente, 10-15 estudiantes toman el curso por semestre.
He estado enseñando el curso desde 1998 de una manera similar a como me enseñaron arquitectura de computadora y electrónica digital a fines de la década de 1980 en el MIT: usando chips DIP TTL en placas de prueba. En la primera tarea de laboratorio de hardware, los estudiantes crean un sumador completo. Alrededor de la mitad del semestre, comienzan a construir una computadora simple con un conjunto de instrucciones de 8 bits. Para reducir el cableado, les proporciono una PCB con algunos de los componentes electrónicos (dos flip-flops D, dos ALU LS 181 de 4 bits conectados para actuar como una ALU de 8 bits y un búfer de tres estados). En el primero de estos laboratorios, derivan las señales de control (muy simples) para los dos formatos de instrucciones y construyen el circuito, ingresan instrucciones en los interruptores y leen los resultados de las luces. En el segundo de los laboratorios, agregan un contador de programa (2 LS163s) y una EPROM (quemi pregunta original era sobre, antes de cambiar a cómo debería enseñar arquitectura de introducción). En el laboratorio final, agregan una instrucción de ramificación condicional. Si bien los estudiantes pasan una buena cantidad de tiempo conectando y depurando, creo que es allí donde se lleva a cabo gran parte del aprendizaje, y los estudiantes se van con una verdadera sensación de logro.
Sin embargo, las personas en este foro me han estado diciendo que debería cambiar a FPGA, con los que no he trabajado antes. Soy ingeniero de software, no ingeniero informático, y he estado fuera de la escuela por un tiempo, pero soy capaz de aprender. No podría obtener mucho dinero ( quizás unos pocos miles de dólares) para reemplazar nuestros entrenadores digitales existentes. Tenemos un solo analizador lógico.
Dados mis objetivos y limitaciones, ¿recomendarían ustedes EE que me apegue a mi enfoque actual de cambiar a uno basado en FPGA? Si es esto último, ¿puede darme alguna sugerencia sobre materiales con los que pueda educarme?
Según lo solicitado, aquí hay un enlace al plan de estudios y las tareas de laboratorio .
Adición: Sí, también es un curso de lógica digital. Cuando llegué a mi universidad, los estudiantes debían tomar un semestre de cada arquitectura informática y lógica digital, y los combiné en un solo semestre. Por supuesto, esa es una declaración sobre el pasado, no el futuro.
fuente
Respuestas:
Dados los objetivos de la clase, creo que el enfoque TTL está bien, y lo digo como un "tipo de FPGA". Los FPGA son un mar de lógica y puedes hacer todo tipo de cosas divertidas con ellos, pero solo hay mucho que sea humanamente posible hacer en un semestre.
En cuanto a su plan de estudios, su clase es una mezcla del diseño lógico y los cursos de "estructuras de máquinas" que tomé en la universidad. (Además, es para estudiantes de CS. Estoy a favor de que los estudiantes de CS tengan que enfrentar hardware real; dejar que se salgan con la suya al escribir código parece un paso atrás). se desglosan, no veo ningún beneficio real para que los estudiantes hagan cosas en código en lugar de hacerlo a mano. Hacer HDL significa aprender el HDL, aprender a escribir HDL sintetizable y aprender el IDE. Esto es mucha más complejidad conceptual y abstracción. Además, tienes que lidiar con problemas de software.
En general, el objetivo de un curso que utiliza FPGA es practicar la creación de una lógica que sea útil, útil para hablar con periféricos, comunicaciones en serie, RAM, generadores de video, etc. Este es un conocimiento valioso, pero parece muy fuera de lugar. Alcance de su curso. Las clases más avanzadas en arquitectura de computadoras hacen que los estudiantes implementen CPU sofisticadas en FPGA, pero nuevamente, esto parece estar fuera del alcance de su curso.
Al menos, dedicaría una conferencia a los FPGA. Ejecute algunas demostraciones con una placa de desarrollo y muéstreles el flujo de trabajo. Ya que estás en el Mills, tal vez usted podría ponerse en contacto con la gente de Berkeley que se ejecutan CS 150 / 152 e ir a ver cómo hacen las cosas.
fuente
Estoy muy de acuerdo con Photon. Existen muchas ventajas al usar FPGA. Aquí hay algunos puntos interesantes a considerar:
1) Plataforma fácil para probar un diseño de compuerta muy rápidamente, sin horas o potencialmente días de trabajo conectando cosas. Los FPGA permiten diseños digitales potencialmente muy complejos con bastante facilidad. (MUCHA más teoría, menos trabajo ocupado)
2) Se pueden realizar porciones significativas del trabajo de un alumno en simulación fuera del laboratorio.
3) El entorno del software es gratuito (generalmente incluye el simulador).
4) Existen muchas plataformas FPGA relativamente baratas. El precio académico debería ayudar. Algo así como el Terasic DE0-Nano cuesta $ 59 por un kit completo (y se ve bastante bien). $ 50-60 parece ser el rango por tablero que estaría viendo.
5) Hay muchas cosas realmente geniales que hacer con los FPGA. Hay sitios como OpenCores que proporcionan cientos de módulos preconstruidos para su uso con FPGA. Hay FPGA4Fun , que tiene muchos tutoriales y proyectos. Para puro entretenimiento, FPGA Arcade se dedica a crear juegos con FPGA. Dependiendo de lo que configure alrededor de las placas FPGA, esto podría ser una clase realmente divertida.
6) Algunas placas tienen clases de diseño digital aparentemente preparadas para ellos: Introducción al diseño digital (advertencia: descarga grande) utilizando una placa Xilinx Spartan 3E ligeramente antigua. (A pesar de que uno está basado en ActiveHDL, yo personalmente prefiero un VHDL más estándar o Verilog) La principal FPGA vendedores también tienen programas universitarios: Programa de la Universidad de Xilinx , programa de la Universidad de Altera , programa de la Universidad de celosía .
7) El flujo de trabajo está mucho más cerca de cómo ocurre el trabajo de diseño profesional en estos días. El conocimiento práctico en el desarrollo de FPGA es una habilidad comercializable de inmediato.
fuente
Creo que hoy en día, si se trata de cosas a nivel de puerta, no está trabajando en el área de "arquitectura de computadoras", en realidad solo está haciendo electrónica digital básica. Pero tampoco puede enseñar todo lo que hay que saber, desde electrónica digital a nivel de puerta hasta algoritmos de almacenamiento en caché, arquitecturas de computación paralelas, SIMD, redes, etc., etc. en un solo semestre.
Entonces realmente se reduce a lo que quieres enseñar. Si desea centrarse en la electrónica digital de nivel de puerta, trabajar con chips de nivel de puerta dará a los estudiantes algo práctico para trabajar y les dará una mejor comprensión de ese material. Pero si quieres enseñar arquitectura de computadora, probablemente necesiten trabajar a un nivel de abstracción mucho más alto que las compuertas AND y OR.
Por lo menos, probablemente se deba a sí mismo aprender un HDL e implementar un diseño basado en FPGA o dos, para que usted (como el experto en educación aquí) pueda evaluar cómo esas habilidades encajarían en sus objetivos para sus estudiantes. Espero que otras respuestas den muchos consejos sobre materiales de bajo costo y sin costo que le permitirán ponerse al día con el diseño de FPGA en poco tiempo. (Sugerencia: Xilinx y Altera ofrecen herramientas y simuladores de diseño de software gratuitos, junto con toneladas de notas de aplicación y otros materiales didácticos).
fuente
Sin embargo, un beneficio de usar TTL sería que para los circuitos muy elementales, los detalles del HDL enmascararían el circuito real, y la mayoría de los estudiantes simplemente pasarían la mayor parte del tiempo escribiendo y aprendiendo HDL. Creo que los TTL para la primera parte y luego los FPGA para la parte de arquitectura serían mejores, ya que es difícil hacer un sistema programable con TTL.
fuente
Apreciando plenamente la importancia de una experiencia práctica con el ensamblaje de circuitos físicos, creo que también es importante reconocer que no se pueden cubrir las prácticas informáticas modernas sin un cierto nivel de algo que "parezca" simulación o esconder demasiada abstracción, por lo que Lo mejor que puede hacer es intentar hacer algún trabajo en cada nivel antes de agregar suficiente abstracción para que sea posible intentar el siguiente nivel de complejidad. El curso MIT al que se refiere, por ejemplo, en un momento comenzó a hacer una simulación de software de una máquina RISC de 32 bits que se ejecuta sobre la máquina microprogramada de 8 bits de chips y módulos que fue "construida" físicamente. En ese momento, diría que es más efectivo implementar una máquina de este tipo en un FPGA (algo que sospecho que probablemente hayan hecho desde entonces).
En vista de esto, mi tentación sería tratar de incluir una fase de chips y cables al principio, y una fase de FPGA más adelante en el curso. Dado que ya tiene los kits de placa de pruebas, puede mantener los primeros laboratorios sobre eso y usar una placa FPGA o tal vez un módulo FPGA que pueda cargarse para los laboratorios posteriores. Sería posible construir una máquina híbrida en la que el FPGA dependa de una parte del procesador externo que implementa parte del procesador, pero se sentiría muy artificial: simplemente cambiar las tecnologías por completo en el punto en que la complejidad excede una pieza de placa puede ser más realista.
Debería poder obtener tarjetas FPGA independientes existentes por menos de $ 100 / ea a precios educativos.
Otra opción, podría ser construir la suya como parte de la clase, tal vez construir una interfaz de carga en serie FPGA como la primera parte del proyecto. Una buena ventaja de esto es que el costo sería lo suficientemente bajo como para que los estudiantes pudieran mantener sus tableros en lugar de tener que entregarlos al final del período, lo que con suerte generaría un interés y una conciencia constantes entre un puñado.
fuente
Creo que el enfoque correcto sería comenzar con la construcción de algunas puertas a partir de relés, que son fáciles de ver y comprender, pero obviamente son demasiado lentos y requieren mucha energía para las aplicaciones modernas. Luego muestre cómo se pueden usar los transistores para hacer lo mismo de manera más compacta, más rápida y más eficiente, y las compuertas empaquetadas [por ejemplo, "quad nand"] pueden hacerlo aún mejor. Una vez que haya llegado a ese punto, le sugiero que muestre cómo construir cosas como multiplexores y pestillos fuera de las puertas, y luego cómo se pueden construir estructuras algo más grandes a partir de multiplexes, pestillos, etc. empaquetados. Nadie va a ir construir una computadora hoy en día soldando físicamente innumerables miles de transistores discretos, pero el funcionamiento interno de una computadora es muy similar al de los transistores, excepto que todo es mucho más pequeño.
Creo que un beneficio importante que los estudiantes obtendrían de este tipo de instrucción es la comprensión de por qué muchas cosas funcionan como lo hacen. Por ejemplo, si uno estuviera "simulando" un conjunto de instrucciones que no necesitaba tener una realización física práctica, no habría necesidad de que una instrucción de "memoria de carga" tomara tres ciclos, mientras que la mayoría de las otras instrucciones toman uno. Algunas cosas podrían entenderse sin bajar al nivel del transistor, pero algunas no pueden (por ejemplo, la importancia de las entradas síncronas versus asíncronas).
fuente