DLX
開発者 | ジョン・ヘネシー、デイビッド・パターソン |
---|---|
ビット数 | 32ビット |
発表 | 1990年代 |
バージョン | 1.0 |
デザイン | RISC |
タイプ | レジスタ-レジスタ & ロード-ストア |
エンコード | 固定 |
ブランチ | 条件レジスタ |
エンディアン | バイエンディアン |
拡張 | なし。ただし、MIPS用のMDMXとMIPS-3Dを使用可能。 |
オープン | Yes |
レジスタ | |
汎用 | 31本 (R0=0) |
浮動小数点 | 32本 (paired DP for 32-bit) |
DLX(「デラックス」と発音)は、ジョン・ヘネシーとデイビッド・パターソンが設計したRISCアーキテクチャ。ヘネシーはMIPS、パターソンは バークレーRISC の設計者である。
DLXは基本的にMIPSアーキテクチャを現代的に整理して単純化したものである。単純な32ビットのロード/ストア・アーキテクチャであり、現代の実際の MIPS CPU とはあまり似ていない。DLXは教育用を第一に意図しており、そのデザインは大学レベルのコンピュータアーキテクチャの教育に広く採用されている。
DLXをそのまま実装したハードウェアは存在しないし、DLX向けの最適化コンパイラも存在しない。DLXをハードウェアで実装した場合、現代の MIPS CPU と遜色ない性能を発揮するだろうと予想されている。しかし、アーキテクチャを集中管理する者がおらず、このCPUコアを実装したVHDLステートマシンも存在しない。
歴史
[編集]本来のMIPSアーキテクチャでは、性能向上のために全命令を1クロックサイクルで実行するという手法を採用した。そのため、命令が1クロックサイクルで終わらない場合にコンパイラが "NOP" を挿入しなければならない。したがって入出力(メモリアクセスなど)では特にNOPが必要とされ、結果的にプログラムが肥大化する。一般にMIPS用プログラムは無駄なNOP命令を多数含んでいたが、これは意図した結果ではない。DLXアーキテクチャでは1クロックサイクルでの命令実行を強制しないので、この問題は生じない。
DLXでは長くかかる命令を許容するため、より現代的な技法であるデータフォワーディングと命令並べ替えを採用している。長い命令は機能ユニット内で「ストール」し、完了時に命令ストリームに再挿入される。外から見ると、命令実行が逐次的に行われているように見える。
詳細
[編集]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段で構成されている。
- IF - 命令フェッチユニット/サイクル
- IR<-Mem(PC)
- NPC<-PC+4
- 動作: PCをバスに出力し、そのアドレスの命令を Instruction Register (IR) に読み込む。PCに4を加え、後続の命令アドレスを指すようにする。IRには次のクロックサイクルで処理すべき命令が格納されている。
- ID - 命令デコードユニット
- 動作: 命令をデコードし、レジスタファイルにアクセスして必要なレジスタを読み取る。処理すべき命令はIFから受け取り、その命令から命令コードとオペランドを展開する。必要に応じてレジスタの内容を取り出す。
- EX - 実行ユニット/実効アドレスサイクル
- 動作: ALUが前サイクルで用意されたオペランドを使って実際の処理を行う。DLXの命令種別に応じて以下の4つのいずれかの処理を行う
- メモリ参照
- レジスタ-レジスタ ALU 命令
- レジスタ-即値 ALU 命令
- 分岐
- MEM - メモリアクセスユニット
- 動作: このユニットで処理されるのは、ロード/ストア命令と分岐命令である。必要に応じてメモリにアクセスする。ロード命令ならメモリから読み取ったデータが LMD (load memory data) レジスタに置かれる。
- WB - ライトバックユニット
- 動作: ストアユニットとも呼ばれる。メモリまたはALUから来た処理結果をレジスタファイルに書き込む。
関連項目
[編集]参考文献
[編集]- Sailer, Philip M.; Kaeli, David R.. The DLX Instruction Set Architecture Handbook. Morgan Kaufmann. ISBN 1-55860-371-9
- Hennessy Patterson, John, David. Computer Organization and Design - The Hardware Software Interface. Morgan Kaufmann. ISBN 978-1-55860-329-5