DLXアーキテクチャとは
DLX(デラックスと発音)は、
ジョン・ヘネシーとデイビッド・パターソンによって設計された教育用の
RISC(Reduced Instruction Set Computing)アーキテクチャです。ヘネシーはMIPS、パターソンはバークレー
RISCの設計者として知られています。
DLXは、MIPSアーキテクチャをベースに、現代的な要素を取り入れつつ簡略化された設計が特徴です。32ビットのロード/ストアアーキテクチャを採用しており、実際のMIPS CPUとは必ずしも一致しませんが、コンピュータアーキテクチャ教育において広く利用されています。
DLXをそのまま実装したハードウェアは存在せず、DLX向けの最適化
コンパイラもありません。しかし、DLXをハードウェアで実装した場合、現代のMIPS CPUと同等の性能を発揮すると考えられています。アーキテクチャを集中管理する組織が存在しないため、このCPUコアを実装したVHDLステートマシンも存在しません。
DLXの歴史と特徴
オリジナルのMIPSアーキテクチャでは、すべての命令を1クロックサイクルで実行することで性能向上を図っていました。しかし、命令が1クロックサイクルで終わらない場合、
コンパイラがNOP(No Operation)命令を挿入する必要がありました。特にメモリアクセスなどの入出力操作ではNOP命令が必要となり、プログラムが肥大化する問題がありました。
DLXアーキテクチャでは、1クロックサイクルでの命令実行を強制しないため、この問題は解消されています。代わりに、データフォワーディングや命令並べ替えといった、より現代的な手法を採用しています。長い命令は機能ユニット内で一時的に「ストール」し、完了時に命令ストリームに再挿入されます。これにより、命令実行が逐次的に行われているように見えます。
命令形式
DLXの命令は、R-type、I-type、J-typeの3種類に分類されます。
R-type命令: 純粋なレジスタ命令であり、32ビットワード内に3つのレジスタを指定するフィールドを持ちます。
I-type命令: 2つのレジスタを指定し、32ビットワードのうち16ビットを即値として使用します。
J-type命令: ジャンプ命令であり、26ビットのアドレスを含みます。
命令コードは6ビットで、合計64種類の基本命令を指定できます。32本のレジスタを指定するには5ビットが必要です。
R-type命令の場合、上記の通り21ビットを必要とし、残りの11ビットのうち下位6ビットを拡張命令コードとして使用します。これにより、純粋にレジスタのみを使用する命令は64種類以上利用できます。これは、例えばFPU(浮動小数点演算ユニット)のサポートなどで役立ちます。
DLXとMIPS
DLXはMIPSと同様に、命令パイプラインの効率的な利用を性能向上の基本としています。DLXは概念的に単純な古典的なRISCを意図して設計されており、パイプラインは以下の5つのステージで構成されます。
1. IF (Instruction Fetch): 命令フェッチユニット。プログラムカウンタ(PC)が指すメモリ位置から命令をInstruction Register(IR)に読み込み、PCをインクリメントします。
2. ID (Instruction Decode): 命令デコードユニット。命令を解読し、必要なレジスタをレジスタファイルから読み出します。
3. EX (Execute): 実行ユニット。ALU(算術論理演算ユニット)を用いて実際の処理を行います。命令の種類に応じて、メモリ参照、レジスタ間演算、レジスタと即値の演算、分岐などの処理を行います。
4. MEM (Memory Access): メモリアクセスユニット。ロード命令やストア命令、分岐命令を実行し、必要に応じてメモリにアクセスします。ロード命令の場合は、メモリから読み取ったデータがLMDレジスタに格納されます。
5. WB (Write Back): ライトバックユニット。メモリやALUからの処理結果をレジスタファイルに書き戻します。
関連事項
MIX, MMIX
MicroBlaze
参考文献
Sailer, Philip M.; Kaeli, David R. (1996).
The DLX Instruction Set Architecture Handbook. Morgan Kaufmann.
ISBN 1-55860-371-9.
Hennessy, John; Patterson, David (2011). Computer Organization and Design - The Hardware Software Interface
. Morgan Kaufmann. ISBN 978-1-55860-329-5.
外部リンク
The DLX Processor
DLX instructions
WinDLX
DLX Simulator (GNU GPL)
ESCAPE DLX Simulator