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

23

Enseño el único curso de arquitectura de computadoras en una universidad de artes liberales. El curso es obligatorio para los estudiantes de ciencias de la computación, mayores y menores. No tenemos ingeniería informática, ingeniería eléctrica, otros cursos de hardware, etc. Mi objetivo principal en el curso es que los estudiantes comprendan hasta el nivel de acceso 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 computadoras por Hennessy y Patterson). Mi objetivo secundario es entusiasmarlos con la arquitectura de la computadora y aumentar su entusiasmo por la informática. Prepararlas directamente para la industria no es un objetivo, aunque motivarlos para que estudien más arquitectura de computadoras sí lo es. Por lo general, los estudiantes no tienen experiencia en construir nada o tomar un curso de laboratorio de nivel universitario. Típicamente, 10-15 estudiantes toman el curso por semestre.

He enseñado el curso desde 1998 de una manera similar a como me enseñaron arquitectura de computadores y electrónica digital a fines de la década de 1980 en el MIT: uso de chips DIP TTL en tablas de alimentación. En la primera tarea de laboratorio de hardware, los estudiantes construyen 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 biestables D, dos ALU LS 181 de 4 bits conectadas entre sí para que actúen como una ALU de 8 bits y un búfer de tres estados). En el primero de estos laboratorios, obtienen las señales de control (muy simples) para los dos formatos de instrucciones y construyen el circuito, ingresando instrucciones sobre los interruptores y leyendo los resultados de las luces. En el segundo de los laboratorios, agregan un contador de programa (2 LS163s) y una EPROM (que mi pregunta original era acerca de, antes de cambiar a cómo debería enseñar arquitectura intro). En el laboratorio final, agregan una instrucción de rama condicional. Mientras los estudiantes pasan una buena cantidad de tiempo conectando y depurando, siento que es donde se lleva a cabo gran parte del aprendizaje, y los estudiantes se van con un verdadero sentido de logro.

La gente en este foro me ha estado diciendo, sin embargo, que debo cambiar a los FPGA, con los que no he trabajado antes. Soy un ingeniero de software, no un 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 a nuestros entrenadores digitales existentes. Tenemos un analizador lógico único.

Teniendo en cuenta mis objetivos y limitaciones, ¿recomendarían las EE que me atengo a mi enfoque actual de cambio a uno basado en FPGA? Si es lo último, ¿puede darme alguna información sobre los materiales con los que educarme?

Tal como se solicitó, aquí está 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 arquitectura computacional y lógica digital, y los combiné en un solo semestre. Por supuesto, eso es una afirmación sobre el pasado, no el futuro.

    
pregunta Ellen Spertus

6 respuestas

14

Teniendo en cuenta los objetivos de la clase, creo que el enfoque TTL está bien, y lo digo como un "tipo FPGA". Los FPGA son un mar de lógica y puedes hacer todo tipo de cosas divertidas con ellos, pero hay tantas cosas que es humanamente posible hacer en un semestre.

Mirando tu programa de estudios, tu clase es una mezcla de diseño lógico y cursos de "estructuras de máquinas" que tomé en la licenciatura. (Además, es para las especialidades de CS. Soy todo para las mayores de CS que tienen que enfrentar hardware real; dejar que se salgan con la suya con la escritura de códigos parece un paso atrás.) En este nivel introductorio, donde se explica cómo las instrucciones de ensamblaje están desglosados, no veo ningún beneficio real de que los estudiantes hagan las cosas en código en lugar de hacerlo manualmente. Hacer HDL significa aprender HDL, aprender a escribir HDL sintetizable y aprender el IDE. Esto es mucho más complejidad conceptual y re-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 conocimiento es valioso, pero parece muy interesante. Fuera del 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 fuera del alcance de su curso.

Por lo menos me gustaría dedicar una conferencia a FPGAs. Ejecute algunas demostraciones con un panel de desarrollo y muestre el flujo de trabajo. Ya que estás en Mills, quizás puedas ponerte en contacto con la gente de Berkeley que ejecuta CS 150 / 152 y vea cómo hacen las cosas.

    
respondido por el mng
6

Estoy muy de acuerdo con Photon. Hay muchas ventajas al usar FPGAs. Aquí hay algunos puntos interesantes para considerar:

1) Plataforma fácil para probar el diseño de una puerta muy rápidamente, sin horas o potencialmente días de trabajo cableando las cosas. Los FPGAs permiten diseños digitales potencialmente muy complejos con bastante facilidad. (MUCHO más teoría, menos trabajo)

2) Se pueden hacer partes significativas del trabajo de un estudiante en simulación fuera del laboratorio.

3) El entorno de software es gratuito (generalmente incluye el simulador).

4) Hay muchas plataformas FPGA relativamente baratas alrededor. Los precios académicos deberían ayudar. Algo como el Terasic DE0-Nano es $ 59 por un kit completo (y se ve bastante bien). $ 50-60 parece ser el rango por tabla que estarías viendo.

5) Hay muchas cosas realmente geniales que hacer con los FPGA. Hay sitios como OpenCores que ofrecen cientos de módulos precompilados para usar con FPGA. Hay FPGA4Fun , que tiene muchos tutoriales y proyectos. Para entretenimiento puro, FPGA Arcade se dedica a crear juegos con FPGA. Dependiendo de lo que configures en torno a los tableros FPGA, esto podría ser una clase realmente divertida.

6) Algunos tableros tienen clases de diseño digital aparentemente listas para ellos: Introducción al diseño digital (advertencia: descarga grande) utilizando una placa Xartix Spartan 3E un poco vieja. (Aunque ese está basado en ActiveHDL, personalmente prefiero un VHDL más estándar o Verilog) Los principales proveedores de FPGA también tienen programas universitarios: Xilinx University Programa , Programa de la Universidad Altera , Lattice University Program .

7) El flujo de trabajo está mucho más cerca de cómo funciona el diseño profesional en estos días. El conocimiento práctico en el desarrollo de FPGA es una habilidad inmediatamente comercializable.

    
respondido por el darron
5

Creo que hoy en día, si estás lidiando con cosas en el nivel de la puerta, no estás trabajando en el área de "arquitectura de computadora", realmente estás haciendo electrónica digital básica. Pero también, no se puede enseñar todo lo que hay que saber, desde la electrónica digital de nivel de puerta hasta los algoritmos de almacenamiento en caché, las arquitecturas de computación paralela, SIMD, redes, etc., en un solo semestre.

Así que realmente se reduce a lo que quieres enseñar. Si desea centrarse en la electrónica digital de nivel de puerta, entonces trabajar con chips de nivel de puerta les dará a los estudiantes algo práctico para trabajar y les dará una mejor comprensión de ese material. Pero si desea enseñar arquitectura de computadoras, probablemente necesiten estar trabajando a un nivel de abstracción mucho más alto que las puertas AND y OR.

Como mínimo, probablemente se deba a usted mismo aprender un HDL e implementar uno o dos diseños basados en FPGA, de modo que usted (como experto en educación aquí) pueda evaluar cómo esas habilidades encajarían en sus metas para su estudiantes Espero que otras respuestas le den muchos consejos a 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 de diseño de software y simuladores gratuitos, junto con toneladas de notas de aplicación y otros materiales de enseñanza).

    
respondido por el The Photon
5

Un beneficio del uso de 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 TTL para la primera parte y luego FPGA para la parte de arquitectura sería mejor, ya que es difícil hacer un sistema programable con TTL.

    
respondido por el user6887
1

Apreciando plenamente la importancia de alguna 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 de computación modernas sin algún nivel de algo que "parece" simulación u oculta demasiado la abstracción, por lo que lo mejor que puedes hacer es tratar de hacer un poco de 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 hace referencia, por ejemplo, en un momento dado comenzó a hacer una simulación de software de una máquina RISC de 32 bits que se ejecuta sobre los chips & Módulos de 8 bits máquina microprogramada que fue físicamente "construido". En ese momento, diría que es más efectivo simplemente implementar una máquina de este tipo en un FPGA (algo que sospecho que probablemente hayan hecho desde entonces).

A la luz de esto, mi tentación sería tratar de incluir tanto un chip como un amp; fase de cableado desde el principio, y una fase de FPGA más adelante en el curso. Como ya tiene los kits de tablero, puede mantener los primeros laboratorios en eso y usar una placa FPGA o tal vez un módulo de FPGA para los laboratorios posteriores. Construir una máquina híbrida en la que el FPGA dependa de una parte del circuito fuera de borda sería posible implementar una parte del procesador, pero se sentiría muy artificial: solo el cambio de tecnologías en el punto en que la complejidad supera una pieza de la placa de pruebas podría ser más realista.

Debería poder obtener placas 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 crear 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 para que los estudiantes pudieran mantener sus tableros en lugar de tener que entregarlos al final del trimestre, lo que se traduciría en un interés y una conciencia continuos entre un puñado. p>     

respondido por el Chris Stratton
1

Creo que el enfoque correcto sería comenzar con la construcción de algunas compuertas a partir de relés, que son fáciles de ver y entender, pero obviamente son demasiado lentos y carecen de poder 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 puertas empaquetadas [por ejemplo, "quad nand"] puede hacerlo aún mejor. Una vez que haya llegado a ese punto, le sugiero que muestre cómo construir cosas como multiplexores y cierres de puertas, y luego cómo se pueden construir estructuras un poco más grandes a partir de multiplexados empaquetados, cierres, etc. Nadie va para construir una computadora en la actualidad soldando físicamente 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.

Un beneficio importante que creo 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 ninguna realización física práctica, no habría necesidad de que una instrucción de "cargar memoria" tome 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 otras no (por ejemplo, la importancia de las entradas síncronas frente a las asíncronas).

    
respondido por el supercat

Lea otras preguntas en las etiquetas