| デザイナー | ジョン・L・ヘネシーとデビッド・A・パターソン |
|---|---|
| ビット | 32ビット |
| 紹介された | 1994 |
| バージョン | 1.0 |
| デザイン | RISC |
| タイプ | ロード-ストア |
| エンコーディング | 修理済み |
| 分岐 | 条件レジスタ |
| エンディアン | バイエンディアン |
| 拡張機能 | なし。ただし、MDMXとMIPS-3Dは使用可能 |
| 開ける | はい |
| レジスター | |
| 汎用 | 32 (R0=0) |
| 浮動小数点 | 32 (32 ビットの場合は DP をペアリング) |
DLX (「デラックス」と発音) は、 RISC設計の 2 つのベンチマーク例であるスタンフォード MIPS 設計とバークレー RISC設計 (それぞれバークレー設計にちなんで命名)の主任設計者であるJohn L. HennessyとDavid A. Pattersonによって設計された RISC プロセッサ アーキテクチャです。
DLX は、本質的には、クリーンアップされ、近代化された、簡略化されたスタンフォード MIPS CPU です。DLX は、現代のMIPS アーキテクチャCPU とは少し異なる、シンプルな32 ビットロード/ストア アーキテクチャを備えています。DLX は主に教育目的に設計されたため、DLX 設計は大学レベルのコンピュータ アーキテクチャ コースで広く使用されています。
ソフトコアのハードウェア実装として、ASPIDA と VAMP の2 つが知られています。ASPIDA プロジェクトでは、オープン ソース、 Wishboneのサポート、非同期設計、複数のISAのサポート、ASIC実証など、多くの優れた機能を備えたコアが生まれました。VAMP は、Verisoft プロジェクトの一環として数学的に検証された DLX バリアントです。PVSで仕様が定められ、Verilogで実装され、Xilinx FPGAで動作します。コンパイラからカーネル、 TCP/IPまでのフル スタックが、この上に構築されました。
歴史
スタンフォード MIPS アーキテクチャでは、パフォーマンスを向上させるために使用された方法の 1 つは、すべての命令を 1 クロック サイクルで完了するように強制することでした。これにより、命令が 1 クロック サイクルより確実に長くかかる場合に、コンパイラは「no-ops」を挿入する必要がありました。したがって、入出力アクティビティ (メモリ アクセスなど) は特にこの動作を強制し、人工的なプログラム膨張を引き起こしました。一般的に、MIPS プログラムには多くの無駄な NOP 命令が強制されましたが、これは意図しない結果でした。DLX アーキテクチャでは、単一クロック サイクル実行を強制しないため、この問題の影響を受けません。
DLX 設計では、長い命令を処理するためのより現代的なアプローチ、つまりデータ転送と命令の並べ替えが使用されました。この場合、長い命令は機能ユニット内で「停止」され、完了できるときに命令ストリームに再挿入されます。外部的には、この設計動作により、実行が直線的に行われたように見えます。
命令デコード
DLX 命令は、 R タイプ、I タイプ、J タイプの 3 つのタイプに分類できます。R タイプ命令は純粋なレジスタ命令で、32 ビット ワードに 3 つのレジスタ参照が含まれます。I タイプ命令は 2 つのレジスタを指定し、16 ビットを使用して即値を保持します。最後に、J タイプ命令はジャンプ命令で、26 ビットのアドレスが含まれます。
オペコードは 6 ビットの長さで、合計 64 の基本命令が可能です。32 個のレジスタの 1 つを選択するには 5 ビットが必要です。
- R タイプの命令の場合、32 ビット ワードのうち 21 ビットのみが使用されることを意味し、下位 6 ビットを「拡張命令」として使用できます。
- DLX は、レジスタ上でのみ動作する命令であれば、64 を超える命令をサポートできます。この特性は、FPUサポートなどに役立ちます。
パイプライン
DLX は、MIPS 設計と同様に、命令パイプラインの使用に基づいてパフォーマンスを実現します。DLX 設計では、これはかなり単純なもので、概念的には「古典的な」RISCです。パイプラインには 5 つのステージがあります。
- IF – 命令フェッチ単位/サイクル
- IR<-メモリ(PC)
- NPC<-PC+4
- 操作: PC を送信し、メモリから命令を命令レジスタ (IR)にフェッチします。PC を 4 ずつ増分して、次の連続命令をアドレス指定します。IR は、後続のクロック サイクルで必要となる次の命令を保持するために使用されます。同様に、レジスタ NPC は、次の連続 PC を保持するために使用されます。
- ID – 命令デコードユニット
- 操作: 命令をデコードし、レジスタ ファイルにアクセスしてレジスタを読み取ります。このユニットは IF から命令を取得し、その命令からオペコードとオペランドを抽出します。また、操作によって要求された場合はレジスタ値を取得します。
- EX – 実行ユニット/実効アドレスサイクル
- 操作: ALU は前のサイクルで準備されたオペランドを操作し、DLX 命令タイプに応じて 4 つの機能のいずれかを実行します。
- メモリリファレンス: レジスタ-レジスタ ALU 命令、レジスタ-即値 ALU 命令
- 支店
- MEM – メモリアクセスユニット
- このユニットでアクティブな DLX 命令は、ロード、ストア、および分岐です。
- メモリ参照: 必要に応じてメモリにアクセスします。命令がロードの場合、データはメモリから返され、LMD (メモリデータのロード) レジスタに配置されます。
- 支店
- WB – ライトバックユニット
- 現代の用語では通常、「ストア ユニット」と呼ばれます。メモリ システムから取得された結果でも、ALU から取得された結果でも、結果をレジスタ ファイルに書き込みます。
参照
参考文献
- Sailer, Philip M.; Kaeli, David R. (1996). DLX 命令セットアーキテクチャ ハンドブック. Morgan Kaufmann. ISBN 1-55860-371-9。
- パターソン、デイビッド、ヘネシー、ジョン(1996)。コンピュータアーキテクチャ:定量的アプローチ(第 1 版)。モーガン カウフマン。ISBN 978-1-55-860329-5。
- パターソン、デイビッド、ヘネシー、ジョン(1994) 。コンピュータの構成と設計 (第 1 版)。モーガン カウフマン。ISBN 978-1-55-860281-6。
外部リンク
- DLXプロセッサ
- DLX の説明
- ウィンDLX
- DLX シミュレータ (GNU GPL)
- ESCAPE DLX シミュレーター 2015-06-23 にWayback Machineでアーカイブされました
- openDLX - Java のオープンソース DLX シミュレータ (GNU GPLv3)
- VAMPプロセッサの形式検証
- ASPIDA 非同期 DLX プロセッサ
- HERA: Haverford 教育用 RISC アーキテクチャ
