M-Core アーキテクチャ
SimMc 1.x系列における M-Core アーキテクチャ
SimMcははM-Core アーキテクチャをシミュレートするメニーコアシミュレータです.
M-Core アーキテクチャはメニーコアプロセッサの教育・研究を進めるための,
実用的で理解しやすいアーキテクチャとして設計されています.
SimMc 1.x系列がシミュレートする M-Core アーキテクチャ,
および M-Core αマイクロアーキテクチャについては,
以下の論文を参照してください.
植原昂, 佐藤真平, 吉瀬謙二:
メニーコアプロセッサの研究・教育を支援する実用的な基盤環境,
電子情報通信学会論文誌, Vol. J93-D, No.10, pp. 2042-2057 (October 2010).
SimMc 2.x系列におけるM-Coreアーキテクチャ
SimMc 2.0以降では,より多様なケースに対応するために,
上記のアーキテクチャに以下のような変更を施しています.
- 物理ノードIDと仮想ノードIDとの2種類のノードIDが定義されます.
物理ノードIDはチップ内で固有のノードIDで,
実際のノード間通信は物理ノードIDを介して行います.
仮想ノードIDはアプリケーション内で利用されるノードIDで,
プログラマは仮想ノードIDを用いてノード間通信を記述します.
これらはINCCの内部で適切に変換されます.
そのための変換テーブルを人間が読み書きしやすいように記述したものが,
SimMc のシステムコンフィグファイルです.
- 特定ノードに対して自身へとデータを送信するようリクエストを送る,
DMA_GETが追加されています.
DMA_GETコマンドそれ自身は,特定メモリアドレスのDMA_PUTとして動作します.
INCCが特定メモリアドレスへの書き込みを検出すると,
送信すべきDMA_PUTをコマンドキューへと書き込みます.
自身のプロセッサコアからDMA_PUTが送信されていなければ,
INCCはコマンドキューに書き込まれたDMA_PUTを送信します.
またその後,DMA_GETを正常に受理したことを示すACKパケットを送信します.
一方で,コマンドキューに空きが無くDMA_GETを受理できない場合は,
DMA_GETを現在は受理できないことを示すNACKパケットを送信します.
ACK/NACKパケットも,DMA_GETと同様に特定メモリアドレスへのDMA_PUTです.
- ルータのマイクロアーキテクチャが大きく変更されています.
より一般的な,仮想チャネルを備えた4段パイプラインのルータを採用しています.
- INCCに32bit, 64bitの別がなくなっています.
ヘッダフリットにパケットの種類を埋め込むことにより,
INCCの状態遷移を一元化しています.