イントロコンピュータアーキテクチャでTTLよりもFPGAを使用する利点は何ですか?


24

私は教養学部で唯一のコンピューターアーキテクチャコースを教えています。このコースは、コンピューターサイエンスのメジャーおよびマイナーに必要です。コンピューターエンジニアリング、電気工学、その他のハードウェアコースなどはありません。このコースでの主な目標は、学生がコンピューターの動作をゲートレベルまで理解することです。これは、ハードウェアラボと教科書だけでなく(Computer Organization and Designヘネシーとパターソン)。私の2番目の目標は、コンピューターアーキテクチャについて生徒を興奮させ、コンピューターサイエンスについての興奮を高めることです。それらを業界向けに直接準備することは目標ではありませんが、より多くのコンピューターアーキテクチャを研究するよう動機づけることは目標です。一般的に、学生は何かを構築したり、大学レベルのラボコースを受講した経験はありません。通常、学期ごとに10〜15人の学生がコースを受講します。

私は1998年から1980年代後半にMITでコンピューターアーキテクチャとデジタルエレクトロニクスを教えていたのと同様の方法でコースを教えてきました。電源付きブレッドボードでDIP TTLチップを使用します。最初のハードウェアラボの課題では、学生は全加算器を作成します。学期の中頃に、彼らは8ビットの命令セットを備えたシンプルなコンピューターの構築を開始します。配線を減らすために、いくつかの電子機器を備えたPCB(2つのDフリップフロップ、8ビットALUとして機能するように配線された2つの4ビットLS 181 ALU、およびトライステートバッファー)を提供します。これらの最初のラボでは、2つの命令形式の(非常に単純な)制御信号を取得して回路を構築し、スイッチの命令を入力してライトから結果を読み取ります。2番目のラボでは、プログラムカウンター(2 LS163)とEPROM(これは最初の質問は、イントロアーキテクチャを教える方法に切り替える前のことでした)。最終ラボでは、条件分岐命令を追加します。生徒は配線とデバッグにかなりの時間を費やしますが、そこから多くの学習が行われ、生徒は本当の達成感を持って出発します。

しかし、このフォーラムの人々は、FPGAに切り替えるべきだと言ってきました。私はソフトウェアエンジニアであり、コンピューターエンジニアではなく、しばらく学校を休んでいますが、学習することができます。既存のデジタルトレーナーを交換するためのお金(おそらく数千ドル)を得ることができません。単一のロジックアナライザーがあります。

私の目標と制約を考慮して、EEは、FPGAに基づくアプローチへの現在のアプローチに固執することを推奨しますか?後者の場合、自分自身を教育するための資料へのポインタを教えてください。

要求に応じて、ここにシラバスとラボの課題へのリンクがあります

追加:はい、デジタルロジックコースでもあります。大学に着いたとき、学生はコンピュータアーキテクチャとデジタルロジックのそれぞれ1学期を履修する必要があり、それらを1つの学期に結合しました。もちろん、それは未来についてではなく、過去についての声明です。


カリキュラム/シラバスに投稿またはリンクできますか?
ケビンフェルメール

別のアプローチを検討することをお勧めしますか?Arduinosなどのマイクロコントローラーをラボで使用するのはどうですか?
ジョニーボート

7
@JonnyBoats:...それはどのように収まりますか?彼女は、ハードウェアゲートからコンピューターを構築することについて話しています。
ダロン

あなたの質問に答えるために-実質的に誰もハードウェアゲートを構築しません。彼らは既にゲートが実装されたチップを購入します。FPGAでは、ハードウェアでゲートを構築するのではなく、ソフトウェアで設定します。
ジョニーボート

1
@JonnyBoats:FPGAは、ハードウェアゲート(プログラマブルゲートであるLUT)からデジタルデザインを構築しています。ゲートはハードウェアとして存在し、設計は完全に物理的な方法で機能します。TTLを使用すると、その標準によって「ゲートを構築する」こともできません。それらは事前に構築されたゲートです。唯一の違いは、ゲート機能がプログラム可能であること、ルーティングがプログラム可能であること(ただし物理的であること)、およびそれらの桁数がはるかに多いことです。Arduinoがデジタルロジックデザインのコースにどのように適合するかはまだわかりません。(彼女がコース自体の目的を変更することを意図していない限り)
ダーロン

回答:


16

クラスの目標を考えると、TTLアプローチはうまくいくと思います。これを「FPGAガイ」と言います。FPGAはロジックの海であり、あらゆる種類の楽しいことをFPGAで実行できますが、学期に人間ができることはそれだけです。

あなたのシラバスを見ると、あなたのクラスは私が学部で取った論理設計と「機械構造」コースの混合です。(さらに、CSメジャー向けです。CSメジャーは、実際のハードウェアに直面する必要があります。コードを書くのをやめるのは、一歩後退のように思えます。)この入門レベルでは、アセンブリ命令の方法について説明します。分解されているので、コードを使って生徒に手作業でやらせることには、本当のメリットはないと思います。HDLを行うということは、HDLの学習、合成可能な HDLの記述方法の学習、およびIDEの学習を意味します。これは、はるかに概念的な複雑さと再抽象化です。さらに、ソフトウェアの問題に対処する必要があります。

一般に、FPGAを使用するコースのポイントは、有用なロジックの作成を実践することです。周辺機器、シリアル通信、RAM、ビデオジェネレーターなどと通信するのに役立ちます。これは貴重な知識ですが、コースの範囲。コンピュータアーキテクチャのより高度なクラスでは、学生はFPGAに洗練されたCPUを実装しますが、これもコースの範囲外です。

少なくとも、FPGAに講義を捧げたいと思います。開発ボードを使用していくつかのデモを実行し、ワークフローを示します。あなたはミルズにいるので、おそらくあなたはCS実行バークレーの人々に連絡ができ、150 / 152は、彼らは物事を行う方法を見て行くと。


90年代初頭、CS150は基本的にOPがMITでのコースワークを説明する方法で教えられていたと言えます-ほとんどが74xxゲートで、シンプルな8ビット(または4ビット?)CPUの構築に至ります。回路図キャプチャツール(HDLなし)で設計されたFPGAを使用した簡単なプロジェクトがありました。現在のシラバスはほとんどがHDLベースのようです。
フォトン

クラスがロジック設計とマシン構造の組み合わせであることの良い点。質問の説明に追加したように、以前は2つの別々のコースがあり、それらを1つにまとめました。ご協力ありがとうございます。FPGAについて調査し、少なくともFPGAに関する講義を追加します。UCBで、Dave Pattersonは、より高いレベルのイントロアーキテクチャへの新しいアプローチを作成しました。私はそれに目を光らせていますが、それを大きく変えるつもりはありません。
エレンスペルタス

FPGA環境の複雑さを検討してきましたが、入門コースとしては多すぎるとは思わないでしょう。現代のワークフローを教えないことは、本当に恥ずべきことのように思えます。私は自分でTTLを使ってプレイしましたが、FPGAに入って初めて(比較的単純な)コンピューターがどのように機能するかを理解し始めました。コースワークは、私が作業しなければならなかったものよりも良く見えるので、彼女はコンセプトをよりよく理解しているかもしれません。ただし、TTLロジックチップの観点からは、「実際の」プロセッサは非常に遠くに見えます。FPGAの後に、それを作成することが考えられます。
ダロン

「コンピューターの仕組み」とは、ファジーな「クロックとフロップ」の概念ではなく、実際にそれらを構築する方法を意味します...もちろんTTLは十分です。(そして再び、それのような彼女の授業のルックスが良く...私の問題ではなく、実際に使用されているハードウェア上の教えのほとんど実際のアプリケーションを、持っていないハードウェア上の概念を教えている、これを教えること)
ダロン

@ darron、TTLは基本的に廃止されていますが、概念的にはクリーンです。複雑な言語やIDEはなく、ダイアグラムとポイントツーポイントの配線だけです。単語サイズが大きくなると面倒になりますが、8ビットのものはそれほど悪くはありません。クラスがさらに進んだ場合、またはフォローアップクラスがあった場合、FPGAは理にかなっていますが、対象となる資料を考えると、それは不必要な複雑さになると思います。
MNG

6

私はPhotonに非常に同意します。FPGAを使用することには多くの利点があります。考慮すべきいくつかの興味深い点を次に示します。

1)数時間または潜在的に何日も作業をつなぐことなく、非常に迅速にゲート設計を試す簡単なプラットフォーム。FPGAを使用すると、非常に複雑なデジタルデザインを非常に簡単に作成できます。(より多くの理論、より忙しい仕事)

2)学生の作業のかなりの部分を、研究室外のシミュレーションで行うことができます。

3)ソフトウェア環境は無料です(通常、シミュレーターを含む)。

4)比較的安価なFPGAプラットフォームが数多くあります。アカデミック価格設定が役立つはずです。Terasic DE0-Nanoのようなものは完全なキットで59ドルです(そして、それはかなり良さそうです)。50〜60ドルは、ボードごとの範囲です。

5)FPGAには、本当に素晴らしいことがたくさんあります。FPGAで使用する数百の事前構築モジュールを提供するOpenCoreのようなサイトがあります。ありますFPGA4Funチュートリアルやプロジェクトをたくさん持っています、。純粋なエンターテイメントのために、FPGA ArcadeFPGAを使用したゲームの構築に専念しています。FPGAボードの周りに何を設定するかによって、これは本当に楽しいクラスになります。

6)一部のボードには、明らかに既製のデジタルデザインクラスがあります。やや古いXilinx Spartan 3Eベースのボードを使用したデジタルデザイン入門(警告:大量ダウンロード)。(ActiveHDLに基づいていますが、個人的にはより標準的なVHDLまたはVerilogを好みます)主要なFPGAベンダーには、大学プログラム(Xilinx University ProgramAltera University ProgramLattice University Program)もあります。

7)ワークフローは、最近のプロのデザイン作業に非常に近いものです。FPGA開発の実務知識は、すぐに市場に出せるスキルです。


どうもありがとう。私は間違いなくこれらを試してみます。FWIW、ハードウェアラボの第2学期があった場合、FPGAまたはArduinoを間違いなく使用します。
エレンスペルタス

5

ゲートレベルで物事を扱っているのであれば、「コンピューターアーキテクチャ」の分野ではなく、基本的なデジタルエレクトロニクスを実際にやっているだけだと思います。ただし、ゲートレベルのデジタルエレクトロニクスからキャッシングアルゴリズム、並列コンピューティングアーキテクチャ、SIMD、ネットワーキングなどに至るまで、1学期ですべてを知ることはできません。

だから、本当にあなたが教えたいものになります。ゲートレベルのデジタルエレクトロニクスに集中したい場合は、ゲートレベルのチップを使用すると、生徒が実際に操作して何かを学び、その資料をより深く理解できるようになります。しかし、コンピュータアーキテクチャを教えたい場合は、おそらくANDおよびORゲートよりもはるかに高い抽象化レベルで作業する必要があります。

少なくとも、HDLを学習し、FPGAベースの設計を1つまたは2つ実装することは、おそらくあなた自身の義務です。そのため、(ここでの教育の専門家として)これらのスキルが学生の目標にどのように適合するかを評価できます。他の回答が、低コストで無料の素材への多くの指針を提供し、FPGA設計を短時間で習得できると期待しています。(ヒント:ザイリンクスとアルテラはどちらも、無料のソフトウェアデザインツールとシミュレータ、および多数のアプリケーションノートやその他の教材を提供しています)。


私は、このクラスがコンピューターアーキテクチャを教えていないことに同意しません。学生は、コンピュータアーキテクチャの一部であるISAの実装方法を学び、パイプライン処理とキャッシュについても教えます。建築には、1つのコースで教えること以上のものがあることに同意します。私は学生として他のいくつかのアーキテクチャコースを受講し、アーキテクチャなどの学術的および産業的研究を行ってきました。HDLおよびFPGAを検討することを奨励しています。
エレンスペルタス

5

TTLを使用する利点の1つは、非常に基本的な回路では、HDLの詳細が実際の回路をマスクすることであり、ほとんどの学生はHDLの作成と学習にほとんどの時間を費やすだけです。TTLを使用してプログラム可能なシステムを実際に作成するのは難しいため、最初の部分のTTL、次にアーキテクチャ部分のFPGAの方が優れていると思います。


+1 HDLは回路を隠します。HDLでマルチプレクサを記述する方法はいくつかありますが、それらのほとんどは、マルチプレクサを作成するためのゲートの配置方法とはほとんど関係がありません。
ajs410

これが重要なポイントです。FPGAのコードを書くのは、基本的なレベルで実際に動作する方法を実際に理解していなくても簡単です。現在、これを回避する方法があります。たとえば、アルテラのIDEには、ゲートレベルの設計に集中できるスケマティックエントリモードが含まれていますが、これに固執すると、FPGAのパワーを実際に活用できなくなります。実際に切り替えのポイントになりますか?
ジュール

1

完全の重要性鑑賞いくつかのアセンブリの物理的な回線での経験ハンズオンを、私はそれが何かのいくつかのレベルずに現代のコンピューティングの実践をカバーすることはできませんことを認識することも重要だと思うそのシミュレーションまたは非表示に余りに多くの抽象化「のように感じている」ので、あなたができる最善の方法は、次のレベルの複雑さをもっともらしいものにするために十分な抽象化を追加する前に、各レベルでいくつかの作業を試みることです。たとえば、あなたが参照するMITコースは、ある時点で、物理的に「構築された」チップとモジュール8ビットマイクロプログラムマシンの上で実行される32ビットRISCマシンのソフトウェアシミュレーションを開始しました。その時点で、FPGAにそのようなマシンを実装する方が効果的であると主張します(おそらくそれ以降に行ったことがあると思われます)。

これに照らして、私の誘惑は、チップとワイヤの両方のフェーズを早い段階で含め、FPGAフェーズをコースの後半に含めようとすることです。すでにブレッドボードキットを持っているので、初期のラボをそのまま使用し、後のラボではFPGAボードまたはブレッドボード対応のFPGAモジュールを使用できます。FPGAがプロセッサの一部を実装する外部の回路に依存するハイブリッドマシンを構築することは可能ですが、非常に人為的に感じられます。

既存のスタンドアロンFPGAボードを教育価格で100ドル未満で調達できる必要があります。

別のオプションとして、クラスの一部として独自のものを構築することもできます。おそらく、プロジェクトの最初の部分としてFPGAシリアルロードインターフェイスを構築します。この利点は、学生が学期の終わりにボードを提出する代わりにボードを維持できるほど十分に低コストになることです。これにより、少数の人々の間で継続的な関心と認識がもたらされることを願っています。


どうもありがとう。MITでの変化を知っていました。実際、MITで不要になった古い6.004 / 6.111ラボキットを使用して、現在の教育機関で始めました。しかし、私の学生はMITの学生ではなく、一学期にそれ以上吸収することができないので、私は厳選しなければなりません。(実際、MITで、ほとんどの学生は彼らに投げられたほど吸収することができないことを発見しましたが、それは別の議論です。)FPGAボードの低コストは間違いなく魅力的です。
エレンスペルタス

1

正しいアプローチは、リレーからいくつかのゲートを構築することから始めることだと思います。これは見やすく、理解しやすいですが、明らかに遅くなり、現代のアプリケーションには電力を消費します。次に、同じことをよりコンパクトに、より速く、より効率的に行うためにトランジスタを使用する方法を示します。パッケージ化されたゲート[たとえば、 "クワッドナンド")はさらに優れています。その点に到達したら、マルチプレクサーやラッチのようなものをゲートから構築する方法を示し、パッケージ化されたマルチプレックス、ラッチなどからいくらか大きな構造を構築する方法を示すことをお勧めします。数千個のディスクリートトランジスタを物理的にはんだ付けしてコンピューターを構築するようになりましたが、コンピューターの内部動作は、すべてが非常に小さいことを除いて、トランジスタの動作と非常に似ています。

学生がこの種の指導から得られると思う主な利点の1つは、多くのことがうまくいく理由を理解することです。たとえば、実際の物理的な実現を必要としない命令セットを「シミュレート」している場合、「メモリのロード」命令に3サイクルかかる必要はありませんが、他のほとんどの命令には1サイクルかかります。トランジスタレベルまで下がることなく理解できるものもありますが、理解できないものもあります(たとえば、同期入力と非同期入力の重要性)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.