Java言語を使ったサイクルアキュレイトプロセッサモデリング

 プロセッサのモデルには,アルゴリズム検証用の命令モデル,応用プログラム検証用のサイクルアキュレイトモデル,システム検証用のRTLモデルがあります.

 現在,プロセッサのモデリングには解決しなければならない諸々の問題が存在します.Verilog-HDL言語を使って設計したRTLモデルのシミュレーション結果は,既製品のCADを用いて,波形で表示されます.オブジェクト指向のC++言語を使って設計した命令モデルやサイクルアキュレイトモデルは,新規にGUIを開発して,波形表示もレジスタ表示もできますが,GUIを構築するためにはTcl/Tkなどの異なるプログラミング言語が必要になります.したがって,システム間における互換性は期待できません.

 筆者は,プロセッサのRTL設計における論理構築方法と,GUIがすでに用意されているJava言語を使用してプロセッサのサイクルアキュレイトモデリング開発についての研究を行っています.

● モデリングにおける論理構築方法

 プロセッサのRTLモデル設計とサイクルアキュレイトモデル設計における論理構築方法と,コーディングスタイルに標準化を図りました.標準化を行うことにより可読性が向上し,設計者間でデータの共有が可能になります.さらに,RTLモデルから他のモデルへの移行が容易となります.

 プロセッサは,いくつかのユニットで構成されます.そして,各ユニットはデータパス部と制御部で構成されます.さらにデータパス部はレジスタ,マルチプレクサ,演算回路,各種シフタなどのコンポーネントで構成され,制御部はデータパス部と同様なコンポーネントと制御論理で構成されます.標準化にあたって,最大の問題は,制御論理セクションの論理構築方式です.

 そこで,制御論理セクションの論理作成に真理値表を採用しました.真理値表を採用することで論理の可読性と柔軟性を達成できます.また,ドキュメンテーションも容易となります.真理値表の出力にはステート出力,フリップフロップ出力,レジスタ出力と通常出力を用意しました.フリップフロップには,イネーブル付きポジティブエッジトリガDフリップフロップと互換性をもたせるため,真理値表出力としてイネーブル出力とデータ出力を用意しました.

 次に,真理値表をセルライブラリ化するために真理値表セルライブラリを開発しました.フリップフロップ出力はif文を用い,イネーブル出力とデータ出力を使って生成しました.

● RTLモデル

 設計の容易さと学生の演習用のためにVerilog-HDL言語を使い,コンポーネント用セルライブラリを作成しました.そして論理の入力には図面入力を使用しました.また,RTLモデルとサイクルアキュレイトモデル間の互換性を保つため,データパス部と制御部におけるすべてのコンポーネントと配線に名前を付けました.

 命令セットにはMIPSプロセッサの整数命令を採用し,5段のパイプラインステージをもつプロセッサを設計しました.真理値表の合計数は,小さなものまで含めると13個になりました.

● Java言語を使ったサイクルアキュレイトモデル

 サイクルアキュレイトモデルの開発にあたっての最大の問題は,プログラミング言語の選択です.GUI作成とプログラミングの容易性と性能,そして抽象度性が重要なポイントです.

 性能を考慮するとC++言語が最適ということになりますが,GUI作成とプログラミングの容易性と抽象度性を考慮するとJava言語が最適という結論になります.

 Java言語を使うと,初期化クラスの作成時に,abstract文を使ってモジュール内で使用するレジスタや配線などのフィールド宣言と,抽象化した搭載する機能の宣言が可能になります.初期化クラスでフィールドの宣言をし,本体部で継承するので,本体部の設計が簡単になります.

 この段階で,設計すべき対象とリソースの定義と割り当てを行い,ハードウェアアーキテクチャの設計を行います.

 初期化クラスの作成後,モジュール本体のクラスを作成します.本体部では,出力として渡すフィールド宣言とモジュール本体のメソッド宣言を行います.メソッド宣言の中ではコンポーネントを使って設計した論理をJava言語でプログラムします.そのプログラムはVerilog-HDL言語であれ,C++言語であれ,Java言語であれ,ほぼ同様に記述できます.また,真理値表セルライブラリを使った制御論理が必要であれば,該当する真理値表メソッドの呼び出しを行います.

 Java言語を使用するにあたり,Javaプログラムのコーディングスタイルを標準化しました.続いてサイクルアキュレイトモデルの開発を行いました.

 既開発のRTLモデルとC++言語を使ったサイクルアキュレイトモデリングの実例があり,モデルのスケジューリングも決めてありましたが,GUIの使用を最小限に抑え,大学4年生2人が約2か月でプロセッサ本体を完成させました.性能は約1400クロック/秒(1GHz PC)でした.性能はVerilog-HDLを使ったものの約70倍であり,実用レベルの性能です.しかも,波形表示ではなく,GUIを使ったレジスタ表示のレジスタレベルシミュレーションを行うことができ,応用プログラムの開発が可能となりました.

● Java言語を使ったモデリングの将来性

 Javaプログラムの構成と論理構成との間での類似性が見られます.また,JavaからVerilog-HDLへの移行も可能となります.Java言語はトップダウン設計手法に合う言語といえるでしょう.Java言語を使ったモデリング手法は,ソフトウェア技術者にプロセッサ開発への道を開くことになるかもしれません.

 図1に,ソフトウェア指向開発手法へと進展するようすを示します.プロセッサとOSと言語が融合した仮想マシンが,より重要となってくることでしょう.

〔図1〕
ソフトウェア指向開発手法への進展

歴史的写真館

〔写真G〕
1996年,テッド・ホフ氏と嶋氏

以降の内容は本誌を参照ください

インデックス

マイクロプロセッサがもたらした社会と経済の変化
SoC時代におけるマイクロプロセッサの理想的な教育
Java言語を使ったサイクルアキュレイトプロセッサモデリング

今月号特集トップページへ戻る


Copyright 2002 嶋 正利