ほとんどのALUはどのように構築されますか?「独自に構築する」ことは可能ですか?


11

私は本当に、非常に低いレベルのコンピューターについて学びたいと思っています。私は多くの自作のページを見てきましたが、それは取り入れることがたくさんあります。私は大学で電子工学のクラスを受講しましたが、私たちは主題について本当に深く掘り下げませんでした(それはコンピューターサイエンスでした。実際にはアルゴリズムなどでした)。

とにかく、ほとんどのALUはどのように構築されましたか?それはコンピューターの唯一の部分ではありませんが、それでも重要な部分です。

そして、(学習目的で)論理ゲートを使用して独自のALUを構築することはできますか?これはおそらくより知識のある人には愚かに聞こえるかもしれませんが、私は理解しようとしています。(一体、単純な加算器でさえきちんとしたプロジェクトになるでしょう。)もしそうなら、これはどのように行われますか?ハードウェアの例はありますか?(私はGoogleを見回しましたが、そのようなことを説明する段階的なガイドを備えたものは何も見つかりません)。


1
あなたは、に興味があるかもしれない、この
ディーン

6
CPUチップチームの内部から言えば、コンピュータとCPUアーキテクチャに興味がある場合、標準的な本は「コンピュータの組織と設計:ハードウェア/ソフトウェアインターフェイス」であり、「コンピュータアーキテクチャ:定量的アプローチ」がそれに続きます。これらは、それぞれ「パターソンとヘネシー」と「ヘネシーとパターソン」と呼ばれます。
ロスロジャース

@Dean-うん、色分けされたワイヤーは弱虫のためのものです!:-)
stevenvh

1994年にUTオースティンのEE360Mで行われた学期プロジェクトは、XC3000を搭載したザイリンクスデモボードに実装されたスタックベースの4ビットALUで、16レベルのスタックとして使用され、LED 7セグメントディスプレイに最高の価値をもたらしました。 、そして実際のALUであるXC4000何か。DIPスイッチで入力と操作を設定し、ボタンを押すだけです。XC4kには、63 kHzから8 MHzまでのいくつかの周波数を持つ内部発振器があり、私たちのグレードは、設計がどれだけ速く実行され、機能するかに基づいていました。
Mike DeSimone、2011

1
@Shubham:私がMinecraftから離れる必要があることを知っていたら、私は他に何もしません... O_o
Mike DeSimone

回答:


15

基本的な論理ゲートから完全にそれらを構築でき、結果は素晴らしい芸術作品になります :-)。

74xxロジックシリーズには、物事を大幅に簡素化する4ビットスライスALUである74LS181も含まれています。ビットスライスALUは、より複雑なALU(読み取り:より長い語長)を構築するために使用されましたが、新しいテクノロジにより、この種のICは廃止されました。注:TTL(74xx)は、論理ゲートに使用されるテクノロジーの1つにすぎません。めったに使用されなくなりました。その後、低電力ショットキー:74LSxx、厳密にはTTLの形式も続きました。現在、数十のロジックファミリがあり、すべてが高速CMOS(74HCxx、74HCTxx、74ACxxなど)に基づいています。

最近、ALUを作成する適切な方法は、CPLDまたはFPGAで ALUを作成することです。これにより多くのゲートが得られ、ALUの設計に使用するHDL(ハードウェア記述言語)は、論理ゲートを使用して接続を自分で作成する方法を理解するよりもはるかに簡単で、エラーが発生しにくくなります。VHDLとVerilogはその日のHDLです。

ALUを作成する別の方法(ただし、論理ゲートを使用しない)は、単一の並列EEPROM / Flashです。入力AとBを使用し、演算を入力(アドレス)として使用し、演算の結果を出力(データ)として取得します。ROMの内容をコンパイルするだけでよいので、対応する入力A、B、および演算の演算結果がどのアドレスにあるかをすべてのアドレスに書き込む必要があります。ワードサイズは、見つけることができる最大のROMサイズによって制限されます。


5

独自のALUを構築することもできますが、個別のTTLチップを備えた古いコンピューターでさえ、そのために何らかの統合を使用していました。たとえば、74x181チップを見てください。これはALUの4ビットスライスであり、一部のTTLコンピュータでは、4ビットごとにこれらのチップの1つを使用して完全なALUを実装するために使用されていました。


無知に聞こえて申し訳ありませんが、TTLチップはロジックゲートとどう違うのですか?TTLは論理ゲートの前または後に使用されましたか?またはそれらは論理ゲートから作成されています:confused:

@サウロン-私は私の答えにロジックファミリに関するメモを追加しました
stevenvh

5

最初にHDLの世界から始めます。Verilogを記述し、Verilatorまたはicarus Verilogを使用してシミュレーションします。ゲートではなく、ディスクリート、または、またはゲートに似ていないようにコードを記述します。傾斜している場合は、74xxシリーズの部品(リサイクル済み?)とブレッドボードの何かを見つけます。または、50ドルのプラスまたはマイナスのCPLDボードとFPGAボードを多数用意していて、外側になんらかのインターフェースが用意されているボードの1つにアルミを置いて、それが機能していることを確認できます。HDL教育は、加算器などの基本を学び、入力と出力、および操作を多重化するのと同じであると私は主張します。しかし、ハードウェアに移行する前に、使いやすく見やすい環境で実行できます。今日の人々のやり方と非常によく似ており、設計とシミュレーションを行ってから展開します。


1
絶対に。最初にシミュレートします。ハードウェアが必要な場合は、FPGAが最も実用的です。74xx TTLをこの複雑なものに配線することは、設計が本当に考えられるまで取り組むべきではない巨大なプロジェクトになるでしょう。
クリスストラットン

5

本の場合、私は間違いなく「パターソンとヘネシー」の本を2番目に扱います(IIRCには3冊あり、3版に偽装していますが、実際にはまったく別の本です。本気の場合:すべて入手してください。)

基本的なALUまたはCPUの設計まで実験したい場合は、ロジックシミュレーターで実験を開始してください。クラスにはDigitalWorksを使用しましたが、お勧めしません。Logisim(http://sourceforge.net/projects/circuit/)は有望に見えます。マスターする必要があるのは階層化です:全加算器、セレクター、エッジトリガーフリップフロップなどの基本ブロックをゲートから構築し、レジスター、ALU、それらの構築ブロックからCPUまでのシーケンスロジックを構築します。メモリ付き。PIC(14ビットコア)CPUに相当するものを作成し、LEDの束を取り付けて、キットディスプレイを表示するようにプログラムするのは、それほど難しくありません。

その後、32ビットコアを実行してGCCを移植し、FPGAで実現してLinuxを実行するのは楽しいでしょう。しかし、あなたは最初ではありません...


4

それはまったく愚かな質問ではありません。Wikipediaのページ示す2ビットのALUのためのそのようなゲートレベルの回路。「スライス」で一般的に利用可能なALU IC-通常は4ビットで、カスケード接続してバス幅を大きくすることができます(ビットスライスを参照)。

Texas 74181 4ビットスライスALU のデータシートには、ゲートレベルの回路図もあります。


4

CPUの話は、パッケージごとの量の増加の1つです。

初期のCPUは常に、いくつかのリレーまたは真空管から構築されたシリアルALUを使用していました。この伝統を打ち破った最初の人は1947 Whirlwindでした。

初期のトランジスタ化されたCPUは、個々のトランジスタからすべてを構築しました。

Apollo Guidance Computer(AGM)は、おそらく集積回路から構築された最初のコンピューターであり、メモリの外で1種類のIC(3入力NORゲート)のみを使用していました。ALUとCPUの他のすべての部分は、完全に多数のNORゲートICから構築されました。(はるかに高速な)Cray 1も、メモリ外の1種類のICのみを使用しました。別の種類のNORゲートです。

人々がチップ上により多くのトランジスタを詰め込む方法を理解したように、後のCPUはALUを実装するために(比較的)より少ないチップを使用しました。

ALUは、NOR実装よりもはるかに少ないチップを使用して、完全にマルチプレクサ(「マルチプレクサ:戦術的なNuke of Logic Design」)から構築できます。

Dieter Muellerは、2つの74181チップよりも多くの機能を備え8ビットALU設計を発表しました-74181は右にシフトできません-さらに少ないチップから構築:14の複雑なTTLチップ:2つの74283 4ビット加算器、いくつかの4:1マルチプレクサ、およびいくつかの2:1マルチプレクサ。

多くの歴史的に重要な商用コンピュータと同様に、多くの自作CPUは74181のいくつかのバージョンを使用します。これは、シングルチップ上の最初の「完全な」ALUです。

これらのCPUの多くは、少数の74181チップと少数の74182チップから8ビットALUまたは16ビット(または両方)を構築しました。それぞれの74181は4ビット幅の操作のみを処理します。自作のマシンは通常、機能する最も単純なものを使用します-74181の1つを次のキャリーインに送り込み、リップルキャリー加算器を形成します。74181チップを使用する商用マシンは、一般に74182先読みキャリージェネレーターを使用して、加算と減算を大幅に高速化します。

今日、ほとんどのALUは一部のチップ(CPUの一部、他の種類のASIC、CPLDまたはFPGA)の中に隠れています。

「シングルチップコンピュータ」が利用可能になった後でも、時々誰かがGALから74181互換のALUを構築したり、学習目的でより単純な論理ゲート、または個々のトランジスタやリレーのみを使用してALUを構築したりすることがあります。

人々はそれをしたので、それは可能でなければなりません。

ALUの設計と実装を説明する段階的なガイドは、本当に良いアイデアのように聞こえます。マイクロプロセスデザインウィキブックで、おそらく「ALU」または「ワイヤーラップ」セクションのいずれかを書いてください。



2

歴史的に、ALU作業の一部はディスクリート(ええ、トランジスターなど)で行われ、一部はゲートで行われ、多くは4ビットの「スライス」チップで行われました(TIのSN74181は初期のもので、フェアチャイルド29F01がその日でした)。
しかし、今日、それはゲートアレイまたはPLA論理記述言語で論理方程式を構築することの問題です。選択した任意の小さなロジックユニットをデザインに組み込む市販のビルド済みモジュールがあり、「IP」(知的財産)のライセンスを取得するのにお金がかかります。


1
抵抗器が抵抗器に比べて安価な場合、トランジスタ数が非常に少ないALUを構築できるいくつかのトリックがありました(たとえば、ステージごとに2つのトランジスタを使用する全加算器)。このような回路は電力を大量に消費し、それほど高速ではありませんでしたが、トランジスタが高価な場合、かなりのコストを節約できました。
スーパーキャット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.