HEPはマルチプロセサの処理を行うので、プロセス間の同期をとってデータのやり取りを行う機構が必要である。

HEPのデータメモリは、64bitのデータを記憶するだけでなく、それぞれのレジスタエントリとアドレスのデータメモリのfull/empty状態を記憶する機能を持っている。そして、SFUによるロード命令の実行を読み出すデータメモリがfullになるまで待たせ、データメモリを読み出すとアトミックにemptyにセットするという機能を持っている。一方、ストアの場合はストア先がemptyになるのを待ち、emptyになったらアトミックにストアの実行と状態のfullへの変更を行う。

HEPのFortranの拡張では、$で始まる名前の変数は非同期変数と呼ばれ、その値を読もうとする場合は、その状態がfullになるまで読み込みが待たされ、読み込みが実行されるとemptyにされる。また、変数値をセットしようとする場合は、その変数がemptyになるまで待たされ、値を書き込むとfullになる。この機能を使ってマルチプロセサの同期をとっていた。

また、HEP Fortranはレジスタとローカル変数をダイナミックにアロケートして、複数のプロセスから並列に呼び出すことが可能なリエントラントなコードを生成してくれる。

4CPUのHEPシステムは陸軍のBallistic Research Laboratoryに納入された。コンピュータ史上、最初のスパコンであるENIACは気温、湿度、風向、風速などを考慮して、流体計算で大砲の弾の軌道計算を行うために作られたが、この計算を行ったのがBallistic Research Laboratoryで、4CPUのHEPは流体計算を行うために、由緒正しいスパコンセンターに迎えられたことになる。なお、HEPは全部で8CPU製造された。

また、Denelcor社はHEP-2、HEP-3の開発にも着手するが、完成することなく1985年に活動を停止した。

なお、HEPは「Heterogeneous Element Processor」の頭文字をとったものであるが、PSWの切り替えで同じプロセサイメージが多数作られるホモジニアスなアーキテクチャであり、何がヘテロジニアスなのか疑問に思っていた。そこで、もう10年あまり以前であるがBurton Smith氏にお会いした時に直接、質問してみた。すると、当時はヘテロジニアスという言葉が目新しく、格好が良いということで、営業が勝手にヘテロジニアスを使った。Smith氏は、この命名にはまったく関与していないという答えであった。

(次回は10月18日に掲載します)