Quais são as vantagens do uso de FPGAs sobre TTL na arquitetura de computadores de introdução?


24

Dou aulas no primeiro curso de arquitetura de computadores de uma faculdade de artes liberais. O curso é obrigatório para os maiores e menores de ciência da computação. Não temos cursos de engenharia da computação, engenharia elétrica, outros equipamentos de hardware etc. Meu principal objetivo no curso é que os alunos entendam até o nível do portão como os computadores funcionam, que eu acredito que eles aprendem melhor através de um laboratório de hardware e não apenas através de um livro ( Computer Organization and DesignHennessy e Patterson). Meu objetivo secundário é estimulá-los sobre a arquitetura de computadores e aumentar sua empolgação com a ciência da computação. Prepará-los diretamente para a indústria não é um objetivo, embora motivá-los a estudar mais arquitetura de computadores. Geralmente, os alunos não têm experiência em construir nada ou em fazer um curso de laboratório em nível universitário. Normalmente, 10 a 15 alunos fazem o curso por semestre.

Eu tenho ministrado o curso desde 1998 de uma maneira semelhante a como fui ensinado arquitetura de computadores e eletrônica digital no final dos anos 80 no MIT: usando chips DIP TTL em placas de ensaio elétricas. Na primeira tarefa do laboratório de hardware, os alunos constroem um somador completo. Na metade do semestre, eles começaram a construir um computador simples com um conjunto de instruções de 8 bits. Para reduzir a fiação, forneço a eles um PCB com alguns dos componentes eletrônicos (dois flip-flops D, duas LS 181 ALUs de 4 bits conectadas para atuar como uma ALU de 8 bits e um buffer de três estados). No primeiro desses laboratórios, eles derivam os sinais de controle (muito simples) para os dois formatos de instrução e constroem o circuito, inserindo instruções nos interruptores e lendo os resultados das luzes. No segundo dos laboratórios, eles adicionam um contador de programa (2 LS163s) e uma EPROM (queminha pergunta original era sobre antes de mudar para como eu deveria ensinar arquitetura de introdução). No laboratório final, eles adicionam uma instrução de ramificação condicional. Enquanto os alunos passam bastante tempo conectando e depurando, sinto que é aí que ocorre grande parte do aprendizado, e os alunos saem com uma sensação real de realização.

As pessoas deste fórum me disseram, porém, que eu deveria mudar para FPGAs, com os quais não trabalhei antes. Sou engenheiro de software, não engenheiro de computação e agora estou fora da escola há um tempo, mas sou capaz de aprender. Eu não seria capaz de obter muito dinheiro ( talvez alguns milhares de dólares) para substituir nossos treinadores digitais existentes. Nós temos um único analisador lógico.

Dados meus objetivos e restrições, os EEs recomendariam que eu seguisse minha abordagem atual de mudar para uma baseada em FPGAs? Neste último caso, você pode me dar alguma indicação de materiais com os quais me educar?

Conforme solicitado, aqui está um link para o currículo e as atribuições do laboratório .

Adição: Sim, também é um curso de lógica digital. Quando cheguei à minha faculdade, os alunos foram obrigados a fazer um semestre de cada um de arquitetura de computadores e lógica digital, e eu os combinei em um único semestre. Claro, isso é uma afirmação sobre o passado, não o futuro.


Você pode postar ou vincular seu currículo / currículo?
Kevin Vermeer

Posso sugerir que você considere uma abordagem alternativa? Que tal usar microcontroladores como o Arduinos em seus laboratórios?
JonnyBoats

7
@ JonnyBoats: ... como isso se encaixaria? Ela está falando sobre construir computadores a partir de portas de hardware.
darron

Para responder à sua pergunta - praticamente ninguém constrói portões de hardware, eles compram chips com portões já implementados. Com os FPGAs, não se constrói portas no hardware, eles os configuram no software.
precisa saber é o seguinte

11
@ JonnyBoats: FPGAs estão construindo projetos digitais a partir de portas de hardware (LUTs são portas programáveis). Os portões existem como hardware, e seu design funciona de uma maneira totalmente física. Com o TTL, você também não está "construindo portões" por esse padrão ... eles são portões pré-construídos. A única diferença é que as funções do portão são programáveis, o roteamento é programável (mas ainda físico), e há muitas ordens de magnitude a mais. Ainda não vejo como um Arduino se encaixa em um curso de design de lógica digital. (A menos que você queria dizer para ela para mudar o propósito do curso em si?)
darron

Respostas:


16

Dados os objetivos da turma, acho que a abordagem TTL é boa e digo isso como um "cara do FPGA". Os FPGAs são um mar de lógica e você pode fazer todo tipo de coisa divertida com eles, mas há muito que é humanamente possível fazer em um semestre.

Olhando para o seu currículo, sua turma é uma mistura dos cursos de design lógico e "estruturas de máquinas" que fiz na graduação. (Além disso, é para os graduandos de CS. Sou a favor dos majores de CS que precisam enfrentar hardware real - deixá-los trabalhar com código de escrita parece um passo atrás.) são divididos, não vejo nenhum benefício real em ter os alunos fazendo as coisas em código versus manualmente. Fazer HDL significa aprender o HDL, aprender a escrever HDL sintetizável e aprender o IDE. Isso é muito mais complexidade conceitual e re-abstração. Além disso, você precisa lidar com problemas de software.

Geralmente, o objetivo de um curso que usa FPGAs é praticar a criação de uma lógica útil - útil para conversar com periféricos, comunicações seriais, RAM, geradores de vídeo, etc. Esse é um conhecimento valioso, mas parece muito fora do comum. escopo do seu curso. Aulas mais avançadas em arquitetura de computadores fazem com que os alunos implementem CPUs sofisticadas em FPGAs, mas, novamente, isso parece estar fora do escopo do seu curso.

No mínimo, dedicaria uma palestra aos FPGAs. Execute algumas demos com uma placa de desenvolvimento e mostre o fluxo de trabalho. Desde que você está no Mills, talvez você poderia entrar em contato com o pessoal da Berkeley que dirigem CS 150 / 152 e vão ver como eles fazem as coisas.


Posso dizer que, no início dos anos 90, o CS150 foi ensinado basicamente da maneira como a OP descreve seus cursos no MIT - principalmente 74xx portas, culminando na construção de uma CPU simples de 8 bits (ou 4 bits?). Tivemos um breve projeto usando FPGAs projetados em uma ferramenta de captura esquemática (sem HDL). Parece que o plano de estudos atual é baseado principalmente em HDL.
The Photon

É bom ressaltar que a classe é uma mistura de design lógico e estruturas de máquinas. Como eu adicionei à descrição da pergunta, havia dois cursos separados, que eu combinei em um. Muito obrigado pela sua ajuda. Vou pesquisar FPGAs e, pelo menos, adicionar uma palestra sobre eles. Na UCB, Dave Patterson criou uma nova abordagem para a arquitetura de introdução, que é de nível muito superior. Estou de olho nisso, mas não planejo fazer uma grande mudança.
Ellen Spertus

Eu tenho considerado a complexidade dos ambientes FPGA e talvez eu realmente não discorde que possa ser demais para um curso introdutório. Parece realmente uma pena não ensinar com fluxos de trabalho modernos. Eu mesmo joguei com o TTL, e foi só quando entrei nos FPGAs que comecei a realmente entender como os computadores (relativamente simples) funcionam. O curso parece melhor do que eu tinha que trabalhar, então talvez ela entenda melhor os conceitos. No entanto, da perspectiva dos chips lógicos TTL, um processador "real" parece muito distante. Depois dos FPGAs, é concebível fazer um.
darron

Por "como os computadores funcionam", quero dizer como realmente construí-los, não um conceito confuso de "relógios e flops" ... para o qual, obviamente, o TTL é suficiente. (e, novamente, parece que o curso dela pode ensinar isso bem ... meu problema é ensinar os conceitos sobre hardware que quase não tem aplicação real, em vez de ensinar sobre hardware que é realmente usado)
darron

@darron, TTL é basicamente obsoleto, mas é conceitualmente limpo - não há linguagem ou IDE para complicar as coisas, apenas diagramas e fiação ponto a ponto. Fica confuso quando o tamanho da palavra aumenta, mas as coisas de 8 bits não são tão ruins. Se a aula fosse mais longe, ou se houvesse uma aula de acompanhamento, os FPGAs fariam sentido, mas acho que seria uma complicação desnecessária, dado o material coberto.
mng

6

Eu concordo muito com o Photon. Há muitas vantagens em usar FPGAs. Aqui estão alguns pontos interessantes a considerar:

1) Plataforma fácil para experimentar um projeto de portão muito rapidamente, sem horas ou potencialmente dias de trabalho para conectar as coisas. Os FPGAs permitem projetos digitais potencialmente muito complexos com bastante facilidade. (MUITO mais teoria, menos trabalho ocupado)

2) Partes significativas do trabalho de um aluno podem ser feitas em simulação fora do laboratório.

3) O ambiente do software é gratuito (geralmente incluindo o simulador).

4) Existem muitas plataformas FPGA relativamente baratas. Preços acadêmicos devem ajudar. Algo como o Terasic DE0-Nano custa US $ 59 por um kit completo (e parece muito bom). $ 50-60 parece ser o intervalo por placa que você estaria olhando.

5) Há muitas coisas muito legais para fazer com FPGAs. Existem sites como o OpenCores que fornecem centenas de módulos pré-criados para uso com FPGAs. Há o FPGA4Fun , que possui muitos tutoriais e projetos. Para puro entretenimento, o FPGA Arcade é dedicado à criação de jogos com FPGAs. Dependendo do que você configurou nas placas FPGA, isso pode resultar em uma aula realmente divertida.

6) Algumas placas possuem classes de design digital aparentemente prontas para elas: Introdução ao Design Digital (aviso: download grande) usando uma placa Xilinx Spartan 3E um pouco antiga. (Embora esse seja baseado no ActiveHDL, eu pessoalmente prefiro um VHDL ou Verilog mais padrão). Os principais fornecedores de FPGA também têm programas universitários: Xilinx University Program , Altera University Program , Lattice University Program .

7) O fluxo de trabalho está muito mais próximo de como o trabalho de design profissional acontece atualmente. O conhecimento de trabalho no desenvolvimento de FPGA é uma habilidade imediatamente comercializável.


Muito obrigado. Definitivamente vou experimentar isso. FWIW, se eu tivesse um segundo semestre de laboratório de hardware, definitivamente faria FPGAs ou Arduino com eles.
Ellen Spertus

5

Acho que hoje em dia, se você está lidando com coisas no nível do portão, não está trabalhando na área de "arquitetura de computadores", está realmente apenas fazendo eletrônica digital básica. Além disso, você não pode ensinar tudo o que há para saber, desde eletrônica digital no nível de porta até algoritmos de cache, arquiteturas de computação paralela, SIMD, redes, etc, etc em um único semestre.

Então, tudo se resume ao que você deseja ensinar. Se você deseja se concentrar na eletrônica digital no nível do portão, trabalhar com chips no nível do portão fornecerá aos alunos algo prático para trabalhar e um entendimento mais forte desse material. Mas se você deseja ensinar arquitetura de computadores, eles provavelmente precisam estar trabalhando com um nível de abstração muito mais alto do que as portas AND e OR.

No mínimo, você provavelmente deve a si mesmo aprender um HDL e implementar um ou dois projetos baseados em FPGA, para que você (como especialista em educação aqui) possa avaliar como essas habilidades se encaixariam nos seus objetivos para os seus alunos. Espero que outras respostas dêem muitas dicas para materiais de baixo custo e sem custos, que permitirão que você acelere o design do FPGA em pouco tempo. (Dica: Xilinx e Altera oferecem ferramentas e simuladores de design de software livre, além de toneladas de notas de aplicação e outros materiais de ensino).


Discordo que a classe como está não ensina arquitetura de computadores. Os alunos aprendem como implementar um ISA, que definitivamente faz parte da arquitetura de computadores, e também ensino sobre pipelining e caches. Concordo que há mais na arquitetura do que o que ensino no curso. Tomei vários outros cursos de arquitetura como estudante, fiz pesquisas acadêmicas e do setor em arquitetura, etc. Agradeço o incentivo a analisar HDLs e FPGAs.
Ellen Spertus

5

Um benefício do uso do TTL seria que, para os circuitos muito elementares, os detalhes do HDL meio que mascaravam o circuito real, e a maioria dos estudantes simplesmente passava a maior parte do tempo escrevendo e aprendendo HDL. Eu acho que TTLs para a primeira parte e, em seguida, FPGA para a parte da arquitetura seria melhor, já que é difícil criar um sistema programável com TTLs.


+1 HDL oculta o circuito. Existem algumas maneiras diferentes de escrever multiplexadores em HDLs, e a maioria delas tem muito pouco ou nada a ver com a maneira como os portões estão dispostos para criar um mux.
ajs410

Esse é o ponto principal - é muito fácil escrever código para um FPGA sem realmente entender em um nível fundamental como ele funciona. Agora, existem maneiras de evitar isso, por exemplo, o IDE da Altera inclui um modo de entrada esquemático que pode ajudá-lo a se concentrar no design do nível do portão, mas, ao continuar com isso, você também não consegue realmente explorar o poder dos FPGAs, então realmente faz sentido em mudar?
Jules

1

Apreciando completamente a importância de alguma experiência prática com montagem de circuitos físicos, acho que também é importante reconhecer que você não pode cobrir práticas de computação modernas sem algum nível de algo que "parece" simulação ou abstração oculta demais; o melhor que você pode fazer é tentar fazer algum trabalho em cada nível antes de adicionar abstração suficiente para tornar plausível a tentativa do próximo nível de complexidade. O curso do MIT ao qual você se refere, por exemplo, começou a fazer uma simulação de software de uma máquina RISC de 32 bits rodando em cima da máquina microprogramada de 8 bits de chips e módulos que foi fisicamente "construída". Nesse ponto, eu diria que é mais eficaz implementar essa máquina em um FPGA (algo que eu suspeito que eles provavelmente tenham feito desde então).

À luz disso, minha tentação seria tentar incluir tanto uma fase de chips e fios no início quanto uma fase de FPGA posteriormente no curso. Como você já possui os kits da placa de ensaio, você pode manter os primeiros laboratórios e usar uma placa FPGA ou talvez um módulo FPGA compatível com a placa para os laboratórios posteriores. Seria possível construir uma máquina híbrida em que o FPGA dependesse de alguma circunferência externa que implementasse parte do processador, mas seria muito artificial - apenas trocar tecnologias inteiramente no ponto em que a complexidade excede uma peça da placa de ensaio pode ser mais realista.

Você deve poder adquirir placas FPGA independentes existentes por menos de US $ 100 / ea a preços educacionais.

Outra opção, poderia ser construir o seu próprio como parte da classe, talvez criando uma interface de carregamento serial em FPGA como a primeira parte do projeto. Uma boa vantagem disso é que o custo seria baixo o suficiente para que os alunos pudessem manter seus conselhos em vez de entregá-los no final do semestre, o que, esperançosamente, resultaria em interesse e conscientização contínuos entre alguns.


Muito obrigado. Eu estava ciente da mudança no MIT. De fato, comecei na minha instituição atual com kits antigos de laboratório 6.004 / 6.111 que o MIT não precisava mais. Meus alunos, no entanto, não são alunos do MIT e não podem absorver tanto em um semestre, então eu tenho que ser seletivo. (Na verdade, eu descobri no MIT que a maioria dos estudantes também não conseguia absorver o que foi jogado para eles, mas isso é outra discussão.) O menor custo das placas FPGA é definitivamente atraente.
Ellen Spertus

1

Eu acho que a abordagem correta seria começar com a construção de algumas portas dos relés, que são fáceis de ver e entender, mas obviamente são muito lentas e com muita energia para aplicações modernas. Em seguida, mostre como os transistores podem ser usados ​​para fazer a mesma coisa de maneira mais compacta, rápida e eficiente, e os portões empacotados [por exemplo, "quad nand"] podem fazê-lo ainda melhor. Quando você chegar a esse ponto, sugiro que você mostre como criar coisas como multiplexadores e trincas fora dos portões e como estruturas um pouco maiores podem ser construídas com multiplexes, trincos, etc. Ninguém vai hoje em dia, construir um computador soldando fisicamente inúmeros milhares de transistores discretos, mas a operação interna de um computador é muito parecida com a dos transistores, exceto que tudo é muito menor.

Um grande benefício que eu acho que os alunos receberiam com esse tipo de instrução é entender por que muitas coisas funcionam da mesma maneira que elas. Por exemplo, se alguém estivesse "simulando" um conjunto de instruções que não precisava ter nenhuma realização física prática, não haveria necessidade de uma instrução de "carregar memória" executar três ciclos, enquanto a maioria das outras instruções executava um. Algumas coisas podem ser entendidas sem descer ao nível do transistor, mas outras não (por exemplo, o significado de entradas síncronas versus assíncronas).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.