¿Cuáles son las ventajas de usar FPGAs sobre TTL en la arquitectura de la computadora de introducción?

24

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.

Ellen Spertus
fuente
¿Puede publicar o vincular a su plan de estudios / plan de estudios?
Kevin Vermeer
¿Puedo sugerirle que considere un enfoque alternativo? ¿Qué tal el uso de microcontroladores como Arduinos en sus laboratorios?
JonnyBoats
77
@ JonnyBoats: ... ¿cómo encajaría eso? Está hablando de construir computadoras a partir de puertas de hardware.
darron
Para responder a su pregunta: prácticamente nadie construye puertas de hardware, compran chips con puertas ya implementadas. Con los FPGA, uno no construye puertas en hardware, las configura en software.
JonnyBoats
1
@JonnyBoats: los FPGA están construyendo diseños digitales a partir de puertas de hardware (las LUT son puertas programables). Las puertas existen como hardware, y su diseño funciona de una manera completamente física. Con TTL tampoco estás "construyendo puertas" según ese estándar ... son puertas preconstruidas. La única diferencia es que las funciones de la puerta son programables, el enrutamiento es programable (pero aún físico), y hay muchos más órdenes de magnitud. Todavía no veo cómo encaja un Arduino en un curso de diseño de lógica digital. (¿A menos que quisieras que ella cambiara el propósito del curso en sí?)
darron

Respuestas:

16

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.

mng
fuente
Puedo decir que a principios de los 90, CS150 se le enseñó básicamente la forma en que OP describe su trabajo de curso en el MIT, en su mayoría puertas 74xx, que culminó en la construcción de una CPU simple de 8 bits (¿o 4 bits?). Tuvimos un breve proyecto usando FPGA's diseñado en una herramienta de captura esquemática (sin HDL). Parece que el programa de estudios actual se basa principalmente en HDL.
The Photon
Buen punto de que la clase es una mezcla de diseño lógico y estructuras de máquina. Como agregué a la descripción de la pregunta, solía haber dos cursos separados, que combiné en uno. Muchas gracias por su ayuda. Investigaré los FPGA y al menos agregaré una conferencia sobre ellos. En UCB, Dave Patterson creó un nuevo enfoque para la arquitectura de introducción que es de un nivel mucho más alto. Lo estoy vigilando pero no planeo hacer un cambio tan grande.
Ellen Spertus
He estado considerando la complejidad de los entornos FPGA y quizás no estoy realmente en desacuerdo con que podría ser demasiado para un curso introductorio. Parece una verdadera lástima no enseñar con flujos de trabajo modernos. Jugué con TTL yo mismo, y no fue hasta que me metí en FPGA que comencé a entender realmente cómo funcionan las computadoras (relativamente simples). El curso se ve mejor que con lo que tuve que trabajar, así que tal vez ella entiende mejor los conceptos. Sin embargo, desde la perspectiva de los chips lógicos TTL, un procesador "real" se ve muy lejos. Después de los FPGA, es concebible hacer uno.
darron
Por "cómo funcionan las computadoras" me refiero a cómo construirlas realmente, no a un concepto difuso de "relojes y fracasos" ... para lo cual, por supuesto, TTL es suficiente. (y de nuevo, parece que su curso puede enseñar esto bien ... mi problema es enseñar los conceptos sobre hardware que casi no tiene una aplicación real, en lugar de enseñar sobre hardware que realmente se usa)
darron
@darron, TTL es básicamente obsoleto, pero está conceptualmente limpio: no hay lenguaje o IDE para complicar las cosas, solo diagramas y cableado punto a punto. Se vuelve complicado cuando el tamaño de tu palabra aumenta, pero las cosas de 8 bits no son tan malas. Si la clase fue más allá, o si hubo una clase de seguimiento, los FPGA tendrían sentido, pero creo que sería una complicación innecesaria dado el material que se está cubriendo.
mng
6

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.

Darron
fuente
Muchas gracias. Definitivamente voy a probar esto. FWIW, si tuviera un segundo semestre de laboratorio de hardware, definitivamente haría FPGA o Arduino con ellos.
Ellen Spertus
5

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).

El fotón
fuente
No estoy de acuerdo con que la clase tal como está no enseñe arquitectura de computadoras. Los estudiantes aprenden cómo implementar un ISA, que definitivamente es parte de la arquitectura de la computadora, y también enseño sobre canalización y cachés. Estoy de acuerdo en que hay más en arquitectura que lo que enseño en un curso. Tomé varios otros cursos de arquitectura como estudiante, hice investigación académica y de la industria en arquitectura, etc. Aprecio el estímulo para estudiar HDL y FPGA.
Ellen Spertus
5

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.

usuario6887
fuente
+1 HDL oculta los circuitos. Hay algunas formas diferentes de escribir multiplexores en HDL, y la mayoría de ellas tienen muy poco o nada que ver con cómo se organizan las puertas para crear un mux.
ajs410
Este es el punto clave: es demasiado fácil escribir código para un FPGA sin comprender realmente en un nivel fundamental cómo funciona. Ahora, hay formas de evitar esto, por ejemplo, el IDE de Altera incluye un modo de entrada esquemática que puede ayudarlo a concentrarse en el diseño del nivel de la puerta, pero al seguir con esto tampoco terminará realmente explotando el poder de los FPGA, por lo que En realidad, ¿hay algún punto en el cambio?
Jules
1

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.

Chris Stratton
fuente
Muchas gracias. Estaba al tanto del cambio en el MIT. De hecho, comencé en mi institución actual con los antiguos kits de laboratorio 6.004 / 6.111 que MIT ya no necesitaba. Sin embargo, mis alumnos no son alumnos del MIT y no pueden absorber tanto en un semestre, así que tengo que ser selectivo. (En realidad, descubrí en el MIT que la mayoría de los estudiantes tampoco podían absorber tanto como se les arrojó, pero esa es otra discusión). El costo más bajo de las placas FPGA es definitivamente atractivo.
Ellen Spertus
1

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).

Super gato
fuente