プログラマブル大域変数バッファ




 VIOSにおいて大域変数とは、すべてのワーキングセットからアクセス可能な変数を 指し、プログラム中において、parallel文、局所化された逐次処理部分の 外で宣言された変数、ならびにモジュール呼び出しに用いられるパラメータが 該当します。大域変数へのアクセスは、デフォルトでは各ワーキングセットからの 同時アクセスに対応するため、排他制御されます。ただし、並列処理において ネットワークを介したデータへのアクセスや排他制御により生じるオーバーヘッドは 非常に大きいため、VIOSではプログラマブル大域変数バッファと呼ぶ概念 を導入しています。
 プログラマブル大域変数バッファとは、並列処理の際にホストごとに起動されている 各IPUがそのホスト上に大域変数のコピーバッファを持ち、そのバッファにアクセスを することによってネットワークを介したアクセスや排他制御を避けます。
 そのため、このバッファに書き込みを行う処理の場合、各IPUごとにバッファの内容 が異なったものとなります。このような内容の異なるバッファを1つの大域変数として 統合するために、VIOSでは3種類の統合法を持ちます。その内容とプログラム中の 記述方を以下に示します。

・プログラム中での記述方法
#vios mutex 変数名 排他制御の有無 統合方法

例えば、整数型大域変数GlobalValueにバッファ使用、加算統合を適用する場合は以下の ように記述します。

int GlobalValue;           // 大域変数の宣言
#vios mutex GlobalValue off add  // 制御方法の指定
大域変数を利用したプログラム例 : ヒストグラムの作成


VIOSトップページへ戻る

VIOS FAQ

VIOSでのプログラミング