FPS AP-120B は、 Floating Point Systems社が製造した38 ビットのパイプライン指向アレイ プロセッサです。DEC PDP-11などのホスト コンピュータに接続して高速な数値演算処理を実行するように設計されています。データ転送は、ダイレクト メモリ アクセスを使用して行われます。
プロセッサのサイクル時間は 167 ナノ秒で、速度は 6 MHz でした。1 サイクルあたり 2 つの浮動小数点結果 (1 つは加算器から、もう 1 つは乗算器から) を表示できるため、プロセッサの 容量は 12メガフロップスであると主張されました。
建築
このプロセッサは、複数の並列処理ユニットが同期して動作するというコンセプトに基づいて設計されました。1 つの 64 ビット命令ワードは複数のフィールドに分割され、各フィールドは CPU の制御下にある特定のモジュールに指示を与えます。モジュールは次のとおりです。
- 16 ビット算術論理演算ユニット (ALU)
- 38 ビット浮動小数点加算器 (FADD) (2 段)
- 38 ビット浮動小数点乗算器 (FMUL) (3 段)
- メモリからデータを受信するための 2 つのデータ パッド レジスタ。
プロセッサは、奇数アドレスが 1 つの物理バンクに格納され、偶数アドレスが別の物理バンクに格納されるデュアル インターリーブ コア メモリにアクセスできました。これは、メモリ ワードの一般的なシーケンシャル フェッチを利用する試みでした。1 つの物理バンクからシーケンシャルにフェッチすると、データが宛先データ パッドにロードされるまでに 2 つの命令サイクルの遅延が発生します。インターリーブにより、シーケンシャル アクセスは前のアクセスの直後に発生するようになりました。両方のアクセスは完了するまでに 2 サイクルかかりましたが、オーバーラップとデュアル宛先パッドにより、データ チャネルの使用が最大化されました。
浮動小数点演算モジュールは両方とも、明示的な命令によって駆動されるマルチステージ プロセッサでした。2 ステージ加算器では、FADD DX,DY などのアセンブラ命令によって、データ パッド DX と DY から加算器のステージ 1 に値がロードされます。加算器の出力に結果を表示するには、後続の FADD 命令が必要です。この 2 番目の FADD は、引数のないダミーの場合もあれば、シーケンス内の次の計算の場合もあります。このように、一連の FADD 操作をパイプラインで実行し、各命令サイクルで新しい結果を得ることができますが、各加算には 2 サイクルが必要です。
同様に、3 ステージ ユニットである乗算器では、乗算を開始するために 1 つの FMUL DX、DY が必要で、その後に結果を生成するためにさらに 2 つの FMUL 命令が続きます。パイプラインを慎重にプログラミングすることで、1 サイクルごとに 1 つの結果を生成でき、各計算には 3 サイクルかかります。
効率を最大限に高めるために、すべての計算はハードウェアに付属のアセンブラ言語を使用してプログラムされました。タスクを調整し、ホスト コンピュータとの間のデータ転送を制御するために、 Fortranに似た高級言語が提供されました。
ルックアップテーブル
信号処理の一般的なアプリケーションをサポートするために、ハードウェアには、正弦値と余弦値の計算済みルックアップ テーブルが付属していました。0 から π/2 ラジアンの角度の正弦値と余弦値は、上記のインターリーブを利用するために代替アドレスに格納されていました。他のすべての角度の値は、ルックアップ テーブルのいずれかの値を使用して計算でき、必要に応じてよく知られたルールを使用して否定することができます。
典型的なプログラミングスタイル
これは、同期並列処理アーキテクチャによって駆動される珍しいものでした。基本的な考え方は、次のように要約できます。
- 2 サイクルのメモリ レイテンシと、明示的な FADD および FMUL 命令による浮動小数点モジュールの駆動を考慮して、目的の計算の 1 つのインスタンスを実行するための最短の命令シーケンスをレイアウトします。
- シーケンスを検査して、繰り返し計算を実行するループを形成する命令の最小数を決定します。これには、リソースの競合に注意する必要があります。たとえば、結果を移動するためのデータ バスは、1 サイクルにつき 1 つのデータ ワードしか移動できません。同様に、ループのカウントとメモリ アドレス指定に主に使用される ALU は、1 サイクルにつき 1 つの目的にしか使用できません。このステップは通常、試行錯誤です。
- FADD および FMUL 命令を使用してパイプラインを通じて計算を実行し、命令の完全なシーケンスをループの周りに概念的に「ラップ」します。
- ループが始まる前に、必要に応じて並列プロセスの開始を追加します。
最後の項目は次のように達成されました。計算全体に 15 サイクルが必要で、最小ループ サイズは 5 サイクルであると仮定します。最初の 5 つの命令ワードは、計算の反復 1 を開始します。次の 5 つのワードには、反復 1 と反復 2 の開始が並列に含まれています。これは通常、反復 1 を開始する操作のコピーになります。次の 5 つのワードには、反復 1 の最終ステップ、反復 2 の途中、および反復 3 の開始が含まれます。これらの 5 つのワードは、必要な数のデータ ポイントが処理されるまで繰り返されるループの本体を形成します。
応用
AP-120B は、付属プロセッサとして、診断用医療画像システムなどのシステムへの低コスト/費用効果の高い補助装置として一般的に使用されていました。80 年代初頭、FPS-AP-120B と Versatec プロッタを搭載した VAX 11/780 または 11/785 は、石油産業における地震データ処理の主力システムでした。商用の地震処理パッケージは、FPS AP-120B ルーチンが存在する場合にそれを呼び出せるように作成されていました。
