DLX

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
DLX
開発者 ジョン・ヘネシーデイビッド・パターソン
ビット数 32ビット
発表 1990年代
バージョン 1.0
デザイン RISC
タイプ レジスタ-レジスタ & ロード-ストア
エンコード 固定
ブランチ 条件レジスタ
エンディアン性 バイエンディアン
拡張 なし。ただし、MIPS用のMDMXMIPS-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-typeI-typeJ-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. 

外部リンク[編集]