1. 概要

このチュートリアルでは、算術論理演算装置(ALU)がどのように機能し、コンピューターがALUを介してどのように計算するかを見ていきます。 また、論理ゲートを使用して単純なALUを作成します。

2. 序章

下の図を見ると、中央処理装置(CPU)とメモリの間の抽象化がわかります。レジスタとRAMは、データの保存に重要な役割を果たします。 ただし、数値の計算と操作は、低レベル回路における他の最も重要な原則です。 ALUはこれらの種類の操作を実行します。 それはコンピューターの数学的頭脳です:

ALUがどのように機能するかを理解すると、現代のコンピューターの基本的な部分を理解できます。 ALUはコンピューター内ですべての計算を行うため、最近のすべてのコンピューターでALUが使用されます。 論理ゲートを使用して基本的なALUを構築する前に、次の図で有名なALUであるIntel74181を見てみましょう。

74181 は、シングルチップ上の最初の完全なALUです。 多くの歴史的に重要なコンピューターやその他のデバイスは、CPUのALUコアとしてそれを使用しています。 コンピュータ組織の教科書やいくつかの技術論文は今でもそれを参照しています。 また、将来のコンピュータアーキテクトをトレーニングするために、論理設計などの実践的なコースでも使用されます。

3. 算術演算装置

前述のように、ALUには、算術ユニットと論理ユニットの2つのユニットがあります。算術ユニットは、加算や減算など、コンピューターのすべての数値演算を担当します。 また、インクリメント操作などの他の簡単な操作も行います。

2桁の2桁を取り、それらを加算する加算回路を構築しましょう。 AND、OR、XOR、およびNOT論理ゲートを使用します。 2つの入力と、、および2桁の合計である1つの出力があります。 前述のように、、、および出力はすべてシングルビットです。この場合、可能な入力の組み合わせは4つだけです。 最初の3つは次のとおりです。

ご存知のように、バイナリでは、1はtrueと同じであり、0はfalseと同じです。 したがって、これらの入力と出力がXORゲートのロジックとまったく同じであることは明らかです。 1ビット加算器として使用できます。 ただし、4番目の入力の組み合わせであるは特殊なケースです。 明らかに2ですが、バイナリに2桁はありません。 したがって、結果は0になり、1は次の列に運ばれます。 合計は実際にはバイナリで10です。

この「キャリー」1を回路に組み込むには、ANDゲートとそのキャリービット用の追加の出力ワイヤが必要です。 これは、両方の入力が1に等しい場合にのみキャリービットが1に等しいためです。 下の図に示すように、この回路全体を半加算器と呼びます。

3.1. 全加算器

1 + 1を超えて加算する場合は、全加算器が必要です。半加算器を使用して全加算器を構築する方法を理解するために、次の表を見てみましょう。

上の表からわかるように、全加算器は入力として3ビットを取ります: 、、、。 したがって、可能な最大入力は1 + 1+1です。 それは1実行1に等しい。 合計とキャリー用に2本の出力ワイヤが必要です。

回路の複雑さを単純化するために、次の図のように半加算器を表します。 これは、半加算器を使用して1+1以上を加算する全加算器を構築する方法を表しています。

3.2. 8ビット加算器

全加算器と半加算器ができたので、2つの8ビット数をとる回路を構築できます。 それらをと呼びましょう。 次の図のように、最初の2ビットに半加算器を使用し、残りのビットに全加算器を使用できます。

上の図を見ると、9番目のビットにキャリービットがあることがわかります。これはオーバーフローと呼ばれます。 これは、加算の結果が大きすぎて、使用しているビット数で表すことができない場合に発生します。 これにより、エラーや予期しない結果が発生する可能性があります。

オーバーフローを取り除きたい場合は、より多くの全加算器で回路を拡張できます。そうすることで、16ビットまたは32ビットの数値を加算できます。 これにより、回路の複雑さが増す一方で、操作のオーバーフローの可能性が減少します。 そのため、今日のコンピューターは少し異なる追加回路を使用しています。 これをキャリールックアヘッド加算器と呼びます。 高速ですが、まったく同じことをします。

算術演算装置には、減算、否定、インクリメント、デクリメントなどの他の数学演算用の回路があります。ただし、乗算および除算演算を実行するための回路はありません。 これは、乗算ではなく一連の加算を実行するためです。 テレビのリモコンやエアコンのような単純なプロセッサは加算を使用して乗算を行いますが、ラップトップやスマートフォンのようなより複雑なプロセッサには、より多くの専用の乗算回路があります。

4. ロジックユニット

これで、ALUの残りの半分であるロジックユニットを続行できます。 論理ユニットは、算術演算ではなく、AND、OR、XORなどの論理演算を処理します。 また、数値テストも実行します。 たとえば、数値が負であるかどうかをチェックします。 また、ALUの出力がゼロかどうかも制御します。

これまで見てきたように、8ビット加算器でさえ数十の論理ゲートを必要とします。 したがって、8ビットALUを完全に構築するには、数百の論理ゲートが必要になります。 ALUを使用する際の複雑さをすべて取り除くために、ALUを表す記号を使用します。 次の図にALU記号が表示されています:

、、およびの2つの入力があり、演算コードは、減算や加算など、ALUが実行する演算を指定します。 入力に対するその操作の結果であり、8ビット出力です。 また、オーバーフロー、ゼロ、負などの一連のフラグもあります。 これらのフラグは、出力がゼロかどうかをチェックし、どの入力が別の入力よりも大きいかを判断することで役立ちます。 私たちが学んだように、オーバーフローは私たちが構築した加算器で実行するために接続されています。

5. 結論

この記事では、コンピューターがすべての基本的な数学演算を実行する方法について説明しました。 ALUの歴史について簡単に触れた後、8ビット加算器を作成する方法を段階的に説明しました。 また、ALUが内部でどのように機能するかを調べ、論理ゲートを使用して半加算器と全加算器を構築する方法を学びました。