マルチプロセッサLSIに適したオンチップ・ネットワーク ――ダイレクト・データフロー・インターコネクト
2. ダイレクト・データフロー・インターコネクト
従来のバス・システムにおける問題を解決する一つの手法として,Xtensa LXでは「TIEポート」と呼ぶ新しいインターコネクトをシステム設計者が定義できるしくみを導入しました.TIEポートはダイレクト・データフロー・インターコネクトとも呼べる技術です.プロセッサ間のデータをやり取りする際に,従来のプロセッサ・インターフェースの機構(バス)をバイパスします.
図3のように4タイプのTIEポートがあります.各ポートは,データ幅に上限はあるものの自由に定義できます.例えば9ビット幅のTIEポートも定義できます.1バイトを最小単位とする従来のプロセッサ・インターフェースとはかなり様子が異なります.
Queueタイプ(queue in,queue out)は,FIFOなどのようなキュー構造のバッファとインターフェースをとります.キューの状態を知らせる入力(full,empty)やキュー・アクセスを知らせる出力(push,pop)の信号が自動的に生成されます.
state exportは,ユーザが定義したXtensa LXプロセッサのステート・レジスタの内容をプロセッサ外部に出力したものです.これを使って,例えばハードウェア・モジュールやほかのXtensa LXプロセッサを直接制御できます.
import wireは,プロセッサ内部に外部の状態を取り込む入り口を提供します.例えばハードウェア・モジュールがプロセッサに割り込みをかけたとき,割り込みルーチンではimport wireを介してハードウェアの状態を直接読み込めます.
TIEポートを用いると,多少の制限はあるものの,システムに応じて必要なタイプやデータ幅をかなり自由に設計できます.図4に二つのキュー入力を定義した例を示します.各タイプのポートを複数定義することはもちろん可能です.従来のプロセッサ・インターフェースの場合,(コンフィギャラブルなプロセッサ・コアでさえも)自由度は限られています.
図3 TIEポート(ダイレクト・データフロー・インターコネクト)
TIEポートは,システム設計者が定義できるプロセッサI/Oインターフェースである.データ幅や入出力の方向,タイプ(Queueタイプなど)を設定できる.また,それぞれのタイプのポートを複数定義することができる.TIEポートを扱う命令語もシステム設計者が定義できる.Queueタイプのインターフェースでは,Queueを制御する出力(push:queue out,pop:queue in),およびQueueの状態(full: queue out,empty:queue in)が自動的に定義される.
図4 TIEポートを用いたユーザが定義した命令語の例
2入力のキューを読み込んで積をとる.Priorityが"H"の場合は演算結果の上位16ビットを,そうでない場合は下位16ビットを出力する.queueMULは命令語としてプログラムで使用できる.