pdf ファイル(ただし, html のほうが新しいです. )
パルテノン研究会主催の ASIC デザインコンテストでは, 当初より KUE-CHIP2 を規定課題のひとつとして選定し, 多くの応募を得てきましたが, 命令セットやデータパスを指定していましたので次第にアイデアが出尽くし た感があります. また一方で KUE-CHIP 以降, 多くの大学で独自の教育用プロセッサの設計 (PICO, Kite, Aser, SMPLなど) が 行われ, 学生の工夫を引き出すための様々な試みが行われるようになってきてい ます. この成果を活用できて, すなわち手持ちの材料やアイデアをそのまま使えて, かつ多くの所で競い合うことの出来る新しい規定課題 はないものだろうかということで, この「16ビット CPU 設計」規定課題が作られました. この考え方と規定課題の問題そのものは慶応大学の天野先生のアイデアです. NTT 未来ねっと研究所の中根が審査をきちんと行うための方法を決め文書化しま した.
課題は 以下の 3 つの問題を解くのに最適な命令セットを持った CPU を SFL で設計することです.
上の問題を解く CPU を設計する場合, 具体的には次の 3 つのものを設計しなければなりません.
これらは上の問題が解ける最低限のものが備わっていれば良いとします. ただし設計に際してメモリに以下の制約を設けます.
この制約を満たすメモリを前提として上の 3 つの問題を解く CPU, 命令セット 及びプログラムを設計してください. なお, 制約を満たすメモリモジュールの記述 ( SFL の declare, circuit 記述, 及び pcd 記述 ) はコンテストの事務局で用意します.
以上をまとめますと, この課題での設計は大きく分けて図 1 のように分類されます. そして, これらのうちプログラム, 命令セット, メモリモジュールへの インターフェースを含めたハードウェアが設計対象となります.
図 1 : 設計要素の内訳
最初の項目で述べたように, この課題での設計は大きく分けて 図 1のように分類されます. 以下, それぞれについて解説します.
ハードウェアの設計ではメモリに制約を設けています. 合計のバンド幅が最高 32 bit/clock であるという条件を実現するため, この課題専用のメモリの declare 記述, circuit 記述, pcd 記述を コンテスト事務局が用意します. 従って, 設計, 動作シミュレーション, 論理合成にはこれを 使用することとします.
このメモリは図 2 のように, アドレスのビット数が 16 bit, 1 アドレスの記憶サイズが 1 bit の メモリユニットを 32 個並べたものとなっています. メモリの具体的な SFL 記述は mem.sflに示します. このメモリの使用については, その束ね方は自由ですし, また動作中に 束ね方を変更することも自由に行って構いません. 例えば 16 bit のメモリが 2 つあるようなハーバードアーキテクチャ を最初に構成し, 命令によって 8 bit のメモリが 4 つあるように再構成して使用しても 構わないということです.
(変更)メモリの記述自体は変更されています. ただし, 外部とのインターフェースは変更はされていません. 変更後のメモリの具体的な SFL 記述はmemmod.sflです. memmod.sfl はサブモジュールとして memunit.cirを含みます.
図 2 : メモリの基本構成
上のように自由度を高くすると審査のための処理結果の観測が 困難になりますので, メモリの使用に際して以下の制約を設けます. その制約とは, 処理対象のデータの初期値のセットと処理結果の観測を標準アド レス空間によって行えるようにする というものです. ここで標準アドレス空間とは, アドレスのビット数が 17 bit のアドレス空間とし, 1 アドレスの記憶サイズは 16 bit であるとします (標準アドレス空間と SFL メモリの対応図 (図 4 ) を参照してください). 標準アドレス空間によってデータセットと結果観測を行えるように するために, 標準アドレス空間のワードに対して 図 2のメモリユニットの番号とアドレスの組の対応を 定義してください. ですから, 具体的な制約としては, この対応を 応募者が規定しなければならない, ということになります. また, この対応はデータセット時と結果観測時で同じ規則に 基づくものでなけれならず, 処理内容に関わらず同じ規則で なければならないとします. ただし, この制約はデータセット時と結果観測時においてのみの制約なので, プログラムによる処理中に一時的に対応が定義不可能になったり, 意味を持たなくなるのは構いません.
代表的な使用例として, ハーバードアーキテクチャの構成法を説明します. メモリアクセスのバンド幅が 32 bit/clock なので, 命令メモリへのアクセスに 16 bit を使用し, データメモリへのアクセスに 16 bit を使用することになります. この場合, 図 3 のように 16 個の 1 bit メモ リユニットに命令メモリ用のアドレス線等を接続し, 残った 16 個の 1 bit メモリユニットにデータメモリ用のアドレス線等を接続 すれば実現できます. この利用形態での SFL 記述を memuse.sfl に示します. CPU からデータメモリを読み出す場合, アクセスするアドレスを adr にセッ トし, read_data 端子をアサートすると, memmod m を構成する メモリユニットのうち, 16 個の制御入力端子がアサートされます. これによって 16 個の各メモリユニットから 1 bit のデータが読み出されます. これらのデータ出力を束ねたものが data_in 端子の内容となります.
一方 CPU からデータメモリに書き込む場合, 書き込むアドレスを adr に, 書き込む内容を data_out にセットした上で read_data 端子を アサートします. すると adr は全てのメモリユニットに送信され, data_out 端子の内容は各メモリユニットに分配されて書き込まれます. 命令メモリについても同様で, read_instruction , write_instruction で メモリの読み出し, 書き込みを行えます. このような中間の制御端子を設けることで, CPU 側からはメモリを 16 bit 幅のメモリ 2 つとして扱えるようになります.
図 3 : 命令メモリとデータメモリへの分割の構成例
この例での標準アドレス空間との対応は例えば図 4 のようなものが考えられます. 標準アドレス空間でのアドレス x におけるワードを STD[x] と表記し, メモリユニット番号 n とそのアドレス y の組を REAL[n, y] と 表記するとすると, この対応関係は
(ただし, REAL のほうは MSB から順に並べてあります. )
となります.
図 4 : ハーバードアーキテクチャでの標準アドレス空間と SFL のメモリの対応例
最後に, 設計したハードウェアの論理合成に際しての条件を述べます. 論理合成には PARTHENON システムを利用しますが, ライブラリは PARTHENON システムに標準で付属の DEMO 社 demo ライブラリに, コンテスト事務局で用意したメモリの pcd 記述を 加えたものを使用するとします. このメモリについては, ゲート数, 消費電力, 面積 が 0 として合成されるような pcd 記述となっています. この条件下で, メモリも含めて論理合成を行うとします.
命令セット, データの表現方法等については制約はありません.
第三者が理解可能なように, 別途ドキュメントで定義してください.
プログラムの設計
プログラムについてはその処理そのものと処理の終了について以下のように 規定します. 解くべき問題の具体的な処理は, ハードウェアの設計の項目 で定義した 標準アドレス空間を用いて以下のように規定します.
問題を解くためのアルゴリズムは規定していませんので, 設計するハードウェアおよび命令セットの特長を生かせるプログラムを 採用してください.
次に処理の終了ですが, 上記のそれぞれの処理が完了したときには, コンテスト事務局で用意したメモリモジュールに含まれる complete という制御端子(mem.sfl ファイルを参照して ください) を起動するようにしてください. complete 制御端子を起動すると, メモリモジュール内部でエラーが発生し, これにより SECONDS のシミュレーションが強制的に終了します.
(変更)メモリの記述自体は変更されています. ただし, 外部とのインターフェースは変更はされていません. 変更後のメモリの具体的な SFL 記述はmemmod.sflです. memmod.sfl はサブモジュールとして memunit.cirを含みます.
課題の詳細の項目 で述べた, 種々の制約のもとでの動作確認のための シミュレーション環境について説明します.
シミュレーション環境の全体像を図 5に示します. 図 5 の中で, 斜線の部分を応募者が設計, 記述します.
なお, より詳しい説明については, シミュレーション環境 のページを参照してください.
図 5 : シミュレーション環境の概要
設計結果の評価は以下の観点から行います.
処理の速さは次のように定義します. 論理合成結果からクリティカルパスを求め, そのパスの遅延時間 t を 1 クロックサイクルとします. 次にそれぞれの問題の処理に要するクロック数 cl を計測します. このクロック数とは, SECONDS におけるクロック 0 をスタートとして, 最終的な処理結果がメモリに格納され, complete 信号がアサート されるまでのクロック数とします. なお, 初期状態では処理対象となるデータ, および処理を記述した 命令列はあらかじめメモリ上の適切な位置に格納しておいて良いとします.
これらの t, cl を用いて, 処理時間 T を次のように定義します.
T = t x cl
T が小さいものを処理が速いものとします.
消費電力と面積は PARTHENON システムの合成結果 で判断するものとします. また, アーキテクチャの独創性, ドキュメントについてはその内容について 個々に評価します.
ドキュメントには以下の内容が最低限含まれていることとします.
この課題の応募に必要な提出物は以下のとおりです.