コンピュータ システムでは、ALU は中央処理装置の主要コンポーネントであり、算術論理演算装置の略で算術論理演算を実行します。これは、CPU または GPU 内の集積回路である整数ユニット (IU) としても知られており、プロセッサー内で計算を実行する最後のコンポーネントです。ブール比較 (XOR、OR、AND、NOT 演算) を含む、加算、減算、シフト演算などの算術および論理演算に関連するすべてのプロセスを実行する機能があります。また、2 進数は数学的およびビット単位の演算を実行できます。算術論理演算ユニットは、AU (算術演算ユニット) と LU (論理ユニット) に分割されます。 ALU によって使用されるオペランドとコードは、入力データに従ってどの演算を実行する必要があるかを指示します。 ALU が入力の処理を完了すると、情報はコンピュータのメモリに送信されます。
ALU は整数計算を実行するように設計されているため、加算と減算に関連する計算の実行を除き、2 つの整数の乗算を処理します。したがって、その結果も整数になります。ただし、除算演算は浮動小数点数の結果を生成する可能性があるため、一般に ALU では除算演算を実行できません。代わりに、通常は浮動小数点ユニット (FPU) が除算演算を処理します。他の非整数計算も FPU で実行できます。
さらに、エンジニアは、あらゆるタイプの演算を実行できるように ALU を設計できます。ただし、ALU はより多くの熱を破壊し、CPU 内でより多くのスペースを占有するため、演算が複雑になるにつれてコストが高くなります。これが、エンジニアが強力な ALU を作成する理由であり、CPU が高速かつ強力であることを保証します。
CPU に必要な計算は算術論理演算装置 (ALU) によって処理されます。それらの操作のほとんどは本質的に論理的なものです。 CPU をより強力にする場合、ALU に基づいて設計されます。そうなると、より多くの熱が発生し、より多くの電力またはエネルギーが必要になります。したがって、ALU の複雑さと強力さの間に適度な値を設定する必要がありますが、コストが高くなってはなりません。これが、高速な CPU ほどコストがかかる主な理由です。したがって、多くの電力を消費し、より多くの熱を破壊します。算術演算と論理演算は、ALU によって実行される主な演算です。ビットシフト操作も実行します。
ALU はプロセッサの主要コンポーネントですが、ALU の設計と機能はプロセッサによって異なる場合があります。場合によっては、一部の ALU は整数計算のみを実行するように設計されており、一部は浮動小数点演算用に設計されています。一部のプロセッサには演算を実行する単一の算術論理ユニットが含まれており、その他のプロセッサには計算を完了するために多数の ALU が含まれている場合があります。 ALU によって実行される演算は次のとおりです。
算術論理演算装置 (ALU) 信号
ALU にはさまざまな入出力電気接続が含まれており、これにより外部電子機器と ALU の間でデジタル信号がキャストされます。
ALU 入力は外部回路から信号を受け取り、それに応じて外部電子機器が ALU から出力信号を受け取ります。
データ: ALU には 3 つのパラレル バスが含まれており、2 つの入力オペランドと出力オペランドが含まれます。これら 3 つのバスは同じ数の信号を処理します。
オペコード: ALU が演算を実行する場合、ALU が算術演算または論理演算を実行する際に、どのタイプの演算を実行するかが演算選択コードによって記述されます。
状態
ALUの構成
ALU がプロセッサとどのように対話するかについては、以下で説明します。すべての算術論理演算ユニットには次の構成が含まれます。
- 命令セットのアーキテクチャ
- アキュムレータ
- スタック
- 登録から登録へ
- レジスタスタック
- レジスタメモリ
アキュムレータ
すべての演算の中間結果はアキュムレータに含まれます。つまり、保持する必要があるのは 1 ビットのみであるため、命令セット アーキテクチャ (ISA) はそれほど複雑ではありません。
一般に、これらは非常に高速で複雑さは軽減されますが、アキュムレータをより安定させるためのものです。適切な値を入力するには追加のコードを記述する必要があります。残念なことに、単一プロセッサでは、並列処理を実行するためのアキュムレータを見つけるのは非常に困難です。アキュムレータの例としては、デスクトップ電卓があります。
スタック
最新の操作が実行されるたびに、それらはプログラムを上から下の順に保持するスタック (小さなレジスタ) に保存されます。新しいプログラムが追加されて実行されると、古いプログラムがプッシュされて配置されます。
レジスターレジスターのアーキテクチャ
これには 1 つのデスティネーション命令と 2 つのソース命令のための場所が含まれており、3 レジスタ演算マシンとも呼ばれます。この命令セット アーキテクチャは、3 つのオペランド、1 つのデスティネーションと 2 つのソースを格納するために、より長くする必要があります。演算の終了後、結果をレジスタに書き戻すのは難しく、ワードの長さも長くなります。ただし、この場所でライトバック ルールに従うと、同期に関してさらに問題が発生する可能性があります。
MIPS コンポーネントは、レジスタ間アーキテクチャの一例です。入力には 2 つのオペランドを使用し、出力には 3 番目の個別のコンポーネントを使用します。それぞれに個別のメモリが必要なため、ストレージ スペースを維持するのは困難です。したがって、常にプレミアムである必要があります。また、一部操作がしづらい場合があります。
レジスタ - スタック アーキテクチャ
一般に、レジスタ操作とアキュムレータ操作の組み合わせは、レジスタ - スタック アーキテクチャとして知られています。レジスタ スタック アーキテクチャで実行する必要がある操作は、スタックの最上部にプッシュされます。そしてその結果はスタックの最上位に保持されます。逆研磨法を使用すると、より複雑な数学的演算を分解できます。プログラマの中には、オペランドを表すためにバイナリ ツリーの概念を使用する人もいます。これは、リバース ポリッシュ手法がこれらのプログラマにとっては簡単である一方で、他のプログラマにとっては難しい可能性があることを意味します。 Push および Pop 操作を実行するには、新しいハードウェアを作成する必要があります。
レジスタとメモリ
このアーキテクチャでは、最も複雑なアーキテクチャの 1 つであるため、1 つのオペランドはレジスタから取得され、もう 1 つのオペランドは外部メモリから取得されます。その背後にある理由は、すべてのプログラムは完全なメモリ空間に保持する必要があるため、非常に長くなる可能性があるためです。一般に、このテクノロジは Register-Register Register テクノロジと統合されており、実際には個別に使用することはできません。
ALUの利点
ALU には次のようなさまざまな利点があります。
- 並列アーキテクチャとアプリケーションを高いパフォーマンスでサポートします。
- 目的の出力を同時に取得し、整数変数と浮動小数点変数を組み合わせる機能があります。
- 非常に大規模なセットに対して命令を実行する能力があり、高い精度範囲を備えています。
- 加算と乗算、加算と減算など、同じコード内の 2 つの算術演算、または任意の 2 つのオペランドを ALU で組み合わせることができます。ケースの場合、A+B*C。
- プログラム全体を通じて、これらは均一なままであり、途中の部分を中断できないように間隔があけられています。
- 一般に、これは非常に高速です。したがって、結果がすぐに得られます。
- ALU では感度の問題やメモリの浪費はありません。
- これらは安価であり、論理ゲートの要件を最小限に抑えます。
ALUの欠点
ALU の欠点については以下で説明します。
- ALU を使用すると、浮動変数の遅延が大きくなり、設計されたコントローラーが理解しにくくなります。
- メモリ空間が明確であれば、結果にバグが発生します。
- 回路が複雑なため、アマチュアが理解するのは困難です。また、パイプラインの概念は理解するのが複雑です。
- ALU の実証済みの欠点は、遅延に不規則性があることです。
- もう 1 つのデメリットは四捨五入であり、精度に影響します。