ALUで実装されているさまざまな関数(加算、減算など)はどのようになっていますか?


9

ALUが実行する必要のある機能がたくさんあるので、どのように実装すればよいのか(LogisimでMIPSシステムを実装し、基本的なゲート、フリップフロップなどを使用することになっている宿題)。

混乱しているのは、Add / Subtract / AND / OR / etcなどのさまざまな機能を実行できるALUを実装する方法です。さらに制御ロジックが必要ですか(以下の「前の割り当て」の右上を参照)。

以前の割り当てでは、加算/減算/否定を実行できるALUを実装しました。ALUは次のような機能を実行できるはずです。

私の前の課題

回答:


7

すべての回答を内部で計算し、マルチプレクサを使用してそれらの中から選択することは機能しますが、それは確かに最小限の設計ではありません。

問題をビットスライスできると考えてください。2つの8ビット入力を持つ単一のロジックブロックの代わりに、これらをリンクして正しい全体的な結果を得ることができる限り、これを2つの4ビットセクションとして分割できます。幸いにも、スライスのリンクはシングルビットより悪くはありません。これは加算の場合はキャリービットを表します。したがって、各4ビットスライスにはキャリーインビットとキャリーアウトビットがあります。(ANDやNORのような論理はこれを必要としませんが、後で左/右シフトを実装する場合、このビットは簡単に再利用されます)。

極端に実行すると、それぞれ1ビットの8スライスを使用できます。1ビットのスライスについて考えると便利です。大きなスライスにスケールアップするアプローチについて考えるのが簡単になるからです。したがって、1ビットスライスでは、4つの関数コード、入力Aからのビット、入力Bからのビット、およびキャリーインビットの7つの入力しかありません。また、出力は2つしかありません。機能アウトと実行です。したがって、2つの出力関数をわずか7つの入力で記述できるようになりました。これは、合理的に削減できる人間の能力の範囲内です。必ずしもすべての関数を常に計算するとは限らない少数のゲートが作成されますが、スライス内で何が発生するかは問題ではなく、外部から見たときに正しい結果が生成されるだけです。

今、あなたはいくつかの方法をとることができます。1つの方法は、これらの1ビットスライスのうち8つを使用するだけです。別の方法は、より大きなスライスを作成し、それらを使用することです。1ビットから2ビットになると、方程式は7入力から9ビットになり、4ビットには13入力の関数が必要になります。これは必ずしも簡単ではありませんが、すべてを計算してからマルチプレクサを作成するアプローチよりもコンパクトな結果が得られます。さらに、74181の4ビットALUスライスの内部を見ると、そこにマルチプレクサは表示されません。


私は、「最初から頭を出しやすい」というスペクトルの終わりにもっと答えを絞っていましたが、より最適な(ハードウェア的な)可能性を指摘してくれてありがとう。
Martin Thompson

5

はい、より多くの制御ロジックが必要です。

以前の割り当ては純粋に算術でした(それは単語ですか?)、単一の加算器を使用して、制御信号を使用して入力をマッサージし、必要な関数を作成できます。

あなたの新しい機能は論理的ですなので、論理演算を実行するには別のブロックが必要です。制御信号は、このブロックの機能を変更します。

次に、図の下部に、出力する回答(加算器からの回答と「入力マッサージ」回路)を選択するために、制御信号によって駆動されるマルチプレクサ(「マルチプレクサ」と呼ばれることもあります)が必要です。または論理演算子からのもの)。

ALU制御ラインに新しいエンコーディングを選択できる場合、MSBを「算術/論理」選択として使用し、他の方法は「サブ関数」を選択するのが魅力的です。最後のマルチプレクサ。


はい、算術は言葉です:)
Majenko '21 / 10/21

1
私には、単なる算術があなたが望む言葉であるように思えます。この単語は3番目の音節にアクセントがあることに注意してください。2番目の音節にアクセントがあるので、小学校​​で学ぶような基本的な数値演算を実行するメカニズムを指す別の単語です。
Olin Lathrop

1

論理演算を処理する1つの優れたアプローチは、2つのオペランドのビットを4入力マルチプレクサへのセレクタ入力として機能させ、マルチプレクサの「データ」入力に目的の演算に対応する4ビットパターン(通常、 8ビットALUの場合、8つのマルチプレクサーがあり(各ビットに1つ)、8つのマルチプレクサーすべての「データ」入力が結合されます)。


マルチプレクサを非常に小さなROMとして使用することも、実際のROMを使用する方法の1つです。
JustJeff、2011年

Nx1ビットROMは、「データ」入力がハードワイヤードされているマルチプレクサです。私が説明したシナリオでは、マルチプレクサーの「データ」入力はオペレーターが選択します。実際には、おそらく小さなROMを使用して、3つまたは4ビットのオペコードから16の可能な論理演算のいくつかに加えて他のいくつかの演算を選択します(必要に応じて、オペコードを直接渡すことができます)論理ユニット。ただし、オペコードが有用な論理演算を生成しない場合は、他のマルチプレクサを使用して他の演算を選択します。
スーパーキャット'23 / 10/23
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.