480 words
2 minutes
Logisim - ALU

要旨#

算術論理演算装置(ALU; Arithmetic Logic Unit)は,汎用プロセッサおよび組込みプロセッサのデータパスにおいて算術演算および論理演算を実行する中核的機能ブロックである.ALU は制御ユニットからの命令デコード結果に基づき,入力オペランドに対して多様な演算を行い,その結果および演算状態を出力する.

ALUの基本構成#

典型的なALUは,以下のサブユニットから構成される.

算術演算部#

加算器(Adder)および減算器(Subtractor)を含み,整数加算,減算,および比較演算を実行する.減算は 2 の補数加算により実現可能である.

論理演算部#

ビット単位の AND,OR,XOR,NOT 演算を実装する.

シフト演算部#

論理シフト,算術シフト等を実行する.高速化にはバレルシフタが用いられることが多い.

出力選択部(MUX)#

制御信号に基づき,複数演算部の出力から適切な結果を選択する.

ステータス生成部#

Zero,Carry,Overflow,Negative フラグ等を生成し,条件分岐命令や例外処理に利用される.

実装例#

本稿に示す実装例は,あくまで基礎的理解の促進を目的としたものであり,実際のプロセッサに採用されている実装方式とは異なる場合があることに留意されたい.また,著者自身の学習を兼ね,回路設計を端緒より構築した事例も含まれるため,設計上の非効率性や誤謬が内在する可能性は否定できない.これらの点につき,予めご承知おきいただきたい.

掛け算(シフト加算方式)#

  • 性能:NNビットの演算を実行するには,NN回のCLKが必要である. Image from Gyazo
Logisim - ALU
https://sql-hkr.github.io/blog/posts/computer/basics/mul/
Author
sql-hkr
Published at
2025-04-27
License
CC BY-NC-SA 4.0