(57)【要約】【課題】ＣＰＵが複数の非同期動作ユニットで構成される場合に、各ユニット間の処理順序の逆転による影響を排除できる情報処理装置及びそのメモリ制御方法を提供する。【解決手段】複数の非同期動作ユニットから構成されるＣＰＵと、データを格納するメインメモリ部と、ベクトル・スキャッタ命令で指定された各要素のメインメモリ部への格納先アドレスを保持するＶＳＣアドレスバッファ、及びベクトル・スキャッタ命令で非同期動作ユニットからそれぞれ発行されるメインメモリ部に対する要素の書き込みリクエストのうち、格納先アドレスが一致し、かつ要素番号順に処理されていない場合に、要素番号が若い要素の書き込みリクエストに対応して生成されるメインメモリ部への書き込み許可信号の出力を抑止する順序監視回路を備えたメインメモリ制御部とを有する構成とする。【選択図】　図１
2004062311.tif 000002
【特許請求の範囲】
【請求項１】
ベクトル方式の情報処理装置であって、
複数の非同期動作ユニットから構成されるＣＰＵと、
データを格納するメインメモリ部と、
ベクトル・スキャッタ命令で指定された各要素の前記メインメモリ部への格納先アドレスを保持するＶＳＣアドレスバッファを備え、ベクトル・スキャッタ命令で前記非同期動作ユニットからそれぞれ発行される前記メインメモリ部に対する要素の書き込みリクエストのうち、前記格納先アドレスが一致し、かつ要素番号順に処理されていない場合に、要素番号が若い要素の書き込みリクエストに対応して生成される前記メインメモリ部への書き込み許可信号の出力を抑止する、前記メインメモリ部に対するデータの書き込み処理を制御するメインメモリ制御部と、
を有する情報処理装置。
【請求項２】
前記メインメモリ制御部は、
前記複数の非同期動作ユニットに対応する複数個のＶＳＣアドレスバッファを備えた請求項１記載の情報処理装置。
【請求項３】
前記非同期動作ユニットは、
１つのベクトル・スキャッタ命令で発行される複数の前記書き込みリクエストに対して同一の識別子を付与し、
前記メインメモリ制御部は、
先行する書き込みリクエストの識別子と後続の書き込みリクエストの識別子が一致しない場合に、前記ＶＳＣアドレスバッファの内容をクリアする請求項２記載の情報処理装置。
【請求項４】
前記メインメモリ制御部は、
前記ＶＳＣアドレスバッファで前記複数の非同期動作ユニットから送信される前記格納先アドレスをそれぞれ保持し、前記ＶＳＣアドレスバッファがオーバーフローを起こした場合に、該オーバーフローさせたベクトル・スキャッタ命令を発行した非同期動作ユニットへ前記要素の再送を要求するＶＳＣアドレスバッファ制御部を備え、
前記非同期動作ユニットは、
自ユニットが発行した前記ベクトル・スキャッタ命令で指定された各要素をそれぞれ保持するリトライバッファを有し、前記メインメモリ制御部から前記要素の再送が要求された場合に、前記リトライバッファに保持した要素を前記メインメモリ制御部へ再送する請求項１記載の情報処理装置。
【請求項５】
前記非同期動作ユニットは、
各非同期動作ユニットで再送を開始する要素のうち、最も若い要素番号に基づいて再送を開始する要素の要素番号を修正する請求項４記載の情報処理装置。
【請求項６】
前記メインメモリ制御部は、
前記ＶＳＣアドレスバッファのオーバーフローと前記非同期動作ユニットからの要素の再送を繰り返し実行するデッドロック状態を検出した場合に、前記非同期動作ユニットからの要素の再送タイミングをずらすための遅延値を前記非同期動作ユニットへ送出し、
前記非同期動作ユニットは、
前記要素の再送タイミングを前記メインメモリ制御部から受信した該遅延値だけ遅らせる請求項４または５記載の情報処理装置。
【請求項７】
前記ＶＳＣアドレスバッファで保持する前記格納先アドレスの数は、前記非同期動作ユニットが一度に処理する要素数＋１以上である請求項４乃至６のいずれか１項記載の情報処理装置。
【請求項８】
複数の非同期動作ユニットから構成されるＣＰＵと、
データを格納するメインメモリ部と、
前記メインメモリ部に対するデータの書き込み処理を制御するメインメモリ制御部とを有するベクトル方式の情報処理装置のメモリ制御方法であって、
予め、前記メインメモリ制御部に、ベクトル・スキャッタ命令で指定された各要素の前記メインメモリ部への格納先アドレスを保持するためのＶＳＣアドレスバッファを備えておき、
前記ベクトル・スキャッタ命令で前記非同期動作ユニットからそれぞれ発行される前記メインメモリ部に対する要素の書き込みリクエストのうち、前記格納先アドレスが一致し、かつ要素番号順に処理されていない場合に、要素番号が若い書き込みリクエストに対応して生成される前記メインメモリ部への書き込み許可信号の出力を抑止するメモリ制御方法。
【請求項９】
１つのベクトル・スキャッタ命令で指定された複数要素の格納先アドレスのみ前記ＶＳＣアドレスバッファで保持する請求項８記載のメモリ制御方法。
【請求項１０】
１つのベクトル・スキャッタ命令で発行される前記書き込みリクエストに対してそれぞれ同一の識別子を付与し、
先行する前記書き込みリクエストの識別子と後続の前記書き込みリクエストの識別子が一致しない場合に、前記ＶＳＣアドレスバッファの内容をクリアする請求項８または９記載のメモリ制御方法。
【請求項１１】
前記複数の非同期動作ユニットから送信される前記格納先アドレスをＶＳＣアドレスバッファでそれぞれ保持し、
前記ＶＳＣアドレスバッファがオーバーフローを起こした場合に、該オーバーフローさせたベクトル・スキャッタ命令を発行した非同期動作ユニットへ前記要素の再送を要求し、
前記非同期動作ユニットで、発行した前記ベクトル・スキャッタ命令で指定された各要素をそれぞれ保持しておき、前記要素の再送が要求された場合は、前記リトライバッファに保持した要素を前記メインメモリ制御部へ再送する請求項８記載のメモリ制御方法。
【請求項１２】
各非同期動作ユニットで再送を開始する要素のうち、最も若い要素番号に基づいて再送を開始する要素の要素番号を修正する請求項１１記載のメモリ制御方法。
【請求項１３】
前記ＶＳＣアドレスバッファのオーバーフローと前記非同期動作ユニットからの要素の再送を繰り返し実行するデッドロック状態を検出した場合に、前記非同期動作ユニットからの要素の再送タイミングをずらすための遅延値を前記メインメモリ制御部から前記非同期動作ユニットへ送出し、
前記非同期動作ユニットは、前記要素の再送タイミングを前記メインメモリ制御部から受信した該遅延値だけ遅らせる請求項１１または１２記載のメモリ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置に関し、特にハードウェアで並列処理を実現するベクトル方式の情報処理装置に関する。
【０００２】
【従来の技術】
近年の情報処理装置は、その動作周波数の高速化に伴って伝送線路による信号遅延が大きくなり、複数の半導体集積回路装置（ＣＰＵ／ＬＳＩ等）を位相の一致したクロックで動作させることが非常に困難になってきている。
【０００３】
このような問題の一つの解決策として、非同期クロックで動作する複数のＣＰＵの処理をソフトウェアで同期させる手法がある。例えば、バリア同期／通信レジスタと呼ばれるハードウェア機能を利用して、指定された複数のプロセスを異なるＯＳ（Ｏｐｅｒａｔｉｎｇ　Ｓｙｓｔｅｍ）で動作するＣＰＵへディスパッチ（ｄｉｓｐａｔｃｈ）する方法がある。この方法は、複数のプロセスが全く異なるタイミングで動作することを前提としているため、各ＣＰＵのクロックが非同期であってもハードウェア機能に起因する動作不良が発生しない。このような方法は、スカラ型並列コンピュータと呼ばれる製品等で実現されている。
【０００４】
上記のようなソフトウェアで複数のプロセスを同期させる手法では、ＣＰＵの動作速度やＣＰＵとメモリ間のデータ転送速度の高速化等のように、ハードウェア性能を向上させる手法と比較して非常に安価に実現できるため、見かけ上の性能対価格比が向上する。
【０００５】
しかしながら、ソフトウェアで複数のプロセスを同期させる手法ではプログラムの並列化が非常に困難であるという問題がある。これは、プログラムで用いる各命令の並列化限界が千差万別であることに起因する。仮に並列化できても、そのデバッグ作業は、並列化されていないプログラムよりも格段に困難になる。デバッグ作業は、情報処理装置の性能チューニング時に行うのが一般的であるが、並列処理技術に関する高度なスキルを必要とする。また、このような困難なデバッグ作業をハードウェアがバージョンアップする度に行う必要があり、プログラムの膨大な資産を活かし難いという問題もある。さらに、プログラムの並列化のための技術的な課題を克服しても、それを現場で運用する際に人的リソース不足等の問題も発生する。
【０００６】
このような問題の解決策の１つとしてハードウェアによる並列処理があり、その具体例としてベクトル方式の情報処理装置がある。
【０００７】
ベクトル方式とは、規則的に並んだ複数個の配列データを一度に処理する方式（Ｓｉｎｇｌｅ　Ｉｎｓｔｒｕｃｔｉｏｎ　Ｍｕｌｔｉｐｌｅ　Ｄａｔａ　ｓｔｒｅａｍ　：ＳＩＭＤ型）であり、その複数個のデ−タを格納するレジスタはベクトルレジスタと呼ばれ、ベクトルレジスタに格納された全ての要素に対して、同一の演算、メモリアクセス、転送等を指示する命令はベクトル命令と呼ばれる。
【０００８】
ベクトル命令は、例えば、
ＬＶＬ　　ＶＬ＜−１２８
ＶＡＤＤ　Ｖ７　　＜−　Ｖ５＋Ｖ４
のように記載される。この例は、ＶＬ（ベクトル・レングス・レジスタ）に処理対象の要素（要素数１２８）をＬＶＬ（ＬｏａｄＶＬ）命令を用いて格納し、その後、ＶＡＤＤ（ベクトル加算）命令を用いてベクトルレジスタＶ５、Ｖ４の各要素（１２８個）を加算し、加算結果をベクトルレジスタＶ７に格納する処理である。
【０００９】
ベクトル方式では、ソフトウェアによるプロセス間の同期が不要であるため、単一のＣＰＵと同様の考え方でソフトウェアを作成することができる。また、並列化手法として実績があり、ベクトル化のためのコンパイラも既に存在する。
【００１０】
なお、このようなベクトル方式においても、性能を向上させるためには、それに見合ったＣＰＵとメモリ間のバンド幅（データ転送速度）を確保する必要がある。また、ＣＰＵを、ベクトル命令を実行する複数のベクトルユニットで構成し、各ユニットを並列に動作させれば、演算処理等をより高速に実行することも可能である。
【００１１】
【発明が解決しようとする課題】
上述のような複数のベクトルユニットで構成されたＣＰＵを有するベクトル方式の情報処理装置では、ＶＳＣ（ベクトル・スキャッタ）命令の実行時に以下に記載する問題が発生する。
【００１２】
ＶＳＣ命令は、ベクトル方式の情報処理装置において非常に重要な命令である。その命令仕様について図８を用いて説明する。
【００１３】
図８に示すように、ＶＳＣ命令は、Ｙフィールドで指定されたベクトルレジスタＶｙの要素をアドレスとして用い、それに対応するＺフィールドで指定されたベクトルレジスタＶｚの要素をメモリに格納する命令である。なお、図８のＯＰＣフィールドはＶＳＣ命令であることを示すオペコードであり、Ｘフィールドは使用されない無効領域である。
【００１４】
ＶＳＣ命令に対する処理では、メモリへの各要素の書き込み処理が要素番号順に実行されなければならない。特に、同じアドレスに対して複数の要素を格納する場合は要素番号が大きい要素の書き込み処理を優先させなければならない。例えば、要素ｎと要素ｎ＋１とを同じメモリアドレスに格納する場合、要素ｎ＋１の書き込みを優先させて要素ｎを無効化する必要がある。このような制限は、従来のように１つのユニットまたは同期して動作する複数のユニットで処理する場合は、１つのポートから要素番号順に書き込みリクエストが発行されるため、特に考慮する必要は無かった。
【００１５】
しかしながら、ＣＰＵが複数の非同期動作ユニットで構成されるベクトル方式の情報処理装置では、各ユニットから発行される要素の書き込みリクエスト（以下、要素リクエストと称す）による処理の順番が保証されないため、メモリに対する要素の書き込み順序が逆転することがある。
【００１６】
例えば、図９に示すように、ＣＰＵが、非同期動作ユニットであるマスターユニット（Ｍａｓｔｅｒ）とスレーブユニット（Ｓｌａｖｅ）で構成され、隣り合った要素番号（要素ｎと要素ｎ＋１）の要素リクエストがそれらに分配されて発行される場合、要素ｎと要素ｎ＋１を同じメモリアドレスに格納する要素リクエストであると、メモリへの書き込み動作を制御するメモリ制御部で要素ｎの処理よりも要素ｎ＋１の処理を先に実行する可能性がある。そのため、要素ｎ＋１が要素ｎで上書きされてしまう。
【００１７】
このような問題の解決策として、複数の非同期動作ユニットから発行される各要素リクエストを同期させる手法が考えられる。しかしながら、そのような方法では、同期処理のためのオーバーヘッドが大きくなり、要素リクエストの発行間隔が広がるため、マスターユニットとスレーブユニットとを並列動作させることによる処理の高速化の効果をうち消してしまう。
【００１８】
本発明は上記したような従来の技術が有する問題点を解決するためになされたものであり、ＣＰＵが複数の非同期動作ユニットで構成される場合に、各ユニット間の処理順序の逆転による影響を排除することが可能な情報処理装置及び方法を提供することを目的とする。
【００１９】
【課題を解決するための手段】
上記目的を達成するため本発明の情報処理装置は、ベクトル方式の情報処理装置であって、
複数の非同期動作ユニットから構成されるＣＰＵと、
データを格納するメインメモリ部と、
ベクトル・スキャッタ命令で指定された各要素の前記メインメモリ部への格納先アドレスを保持するＶＳＣアドレスバッファを備え、ベクトル・スキャッタ命令で前記非同期動作ユニットからそれぞれ発行される前記メインメモリ部に対する要素の書き込みリクエストのうち、前記格納先アドレスが一致し、かつ要素番号順に処理されていない場合に、要素番号が若い要素の書き込みリクエストに対応して生成される前記メインメモリ部への書き込み許可信号の出力を抑止する、前記メインメモリ部に対するデータの書き込み処理を制御するメインメモリ制御部と、
を有する構成である。
【００２０】
このとき、前記メインメモリ制御部は、
前記複数の非同期動作ユニットに対応する複数個のＶＳＣアドレスバッファを備えていてもよく、
前記非同期動作ユニットは、
１つのベクトル・スキャッタ命令で発行される複数の前記書き込みリクエストに対して同一の識別子を付与し、
前記メインメモリ制御部は、
先行する書き込みリクエストの識別子と後続の書き込みリクエストの識別子が一致しない場合に、前記ＶＳＣアドレスバッファの内容をクリアしてもよい。
【００２１】
また、前記メインメモリ制御部は、
前記ＶＳＣアドレスバッファで前記複数の非同期動作ユニットから送信される前記格納先アドレスをそれぞれ保持し、前記ＶＳＣアドレスバッファがオーバーフローを起こした場合に、該オーバーフローさせたベクトル・スキャッタ命令を発行した非同期動作ユニットへ前記要素の再送を要求するＶＳＣアドレスバッファ制御部を備え、
前記非同期動作ユニットは、
自ユニットが発行した前記ベクトル・スキャッタ命令で指定された各要素をそれぞれ保持するリトライバッファを有し、前記メインメモリ制御部から前記要素の再送が要求された場合に、前記リトライバッファに保持した要素を前記メインメモリ制御部へ再送してもよい。
【００２２】
このとき、前記非同期動作ユニットは、
各非同期動作ユニットで再送を開始する要素のうち、最も若い要素番号に基づいて再送を開始する要素の要素番号を修正してもよく、
前記メインメモリ制御部は、
前記ＶＳＣアドレスバッファのオーバーフローと前記非同期動作ユニットからの要素の再送を繰り返し実行するデッドロック状態を検出した場合に、前記非同期動作ユニットからの要素の再送タイミングをずらすための遅延値を前記非同期動作ユニットへ送出し、
前記非同期動作ユニットは、
前記要素の再送タイミングを前記メインメモリ制御部から受信した該遅延値だけ遅らせてもよい。
【００２３】
なお、前記ＶＳＣアドレスバッファで保持する前記格納先アドレスの数は、前記非同期動作ユニットが一度に処理する要素数＋１以上であることが望ましい。
【００２４】
一方、本発明のメモリ制御方法は、複数の非同期動作ユニットから構成されるＣＰＵと、
データを格納するメインメモリ部と、
前記メインメモリ部に対するデータの書き込み処理を制御するメインメモリ制御部とを有するベクトル方式の情報処理装置のメモリ制御方法であって、
予め、前記メインメモリ制御部に、ベクトル・スキャッタ命令で指定された各要素の前記メインメモリ部への格納先アドレスを保持するためのＶＳＣアドレスバッファを備えておき、
前記ベクトル・スキャッタ命令で前記非同期動作ユニットからそれぞれ発行される前記メインメモリ部に対する要素の書き込みリクエストのうち、前記格納先アドレスが一致し、かつ要素番号順に処理されていない場合に、要素番号が若い書き込みリクエストに対応して生成される前記メインメモリ部への書き込み許可信号の出力を抑止する方法である。
【００２５】
このとき、１つのベクトル・スキャッタ命令で指定された複数要素の格納先アドレスのみ前記ＶＳＣアドレスバッファで保持してもよく、
１つのベクトル・スキャッタ命令で発行される前記書き込みリクエストに対してそれぞれ同一の識別子を付与し、
先行する前記書き込みリクエストの識別子と後続の前記書き込みリクエストの識別子が一致しない場合に、前記ＶＳＣアドレスバッファの内容をクリアしてもよい。
【００２６】
また、前記複数の非同期動作ユニットから送信される前記格納先アドレスをＶＳＣアドレスバッファでそれぞれ保持し、
前記ＶＳＣアドレスバッファがオーバーフローを起こした場合に、該オーバーフローさせたベクトル・スキャッタ命令を発行した非同期動作ユニットへ前記要素の再送を要求し、
前記非同期動作ユニットで、発行した前記ベクトル・スキャッタ命令で指定された各要素をそれぞれ保持しておき、前記要素の再送が要求された場合は、前記リトライバッファに保持した要素を前記メインメモリ制御部へ再送してもよく、各非同期動作ユニットで再送を開始する要素のうち、最も若い要素番号に基づいて再送を開始する要素の要素番号を修正してもよい。
【００２７】
さらに、前記ＶＳＣアドレスバッファのオーバーフローと前記非同期動作ユニットからの要素の再送を繰り返し実行するデッドロック状態を検出した場合に、前記非同期動作ユニットからの要素の再送タイミングをずらすための遅延値を前記メインメモリ制御部から前記非同期動作ユニットへ送出し、
前記非同期動作ユニットは、前記要素の再送タイミングを前記メインメモリ制御部から受信した該遅延値だけ遅らせてもよい。
【００２８】
上記のような情報処理装置及びそのメモリ制御方法では、ベクトル・スキャッタ命令により非同期動作ユニットからそれぞれ発行される複数の要素の書き込みリクエストのうち、格納先アドレスが一致し、かつ要素番号順に処理されていない場合に、要素番号が若い要素の書き込みリクエストに対応して生成される書き込み許可信号の出力を抑止することで、複数の非同期動作ユニット間で発生する処理順序の逆転による影響を排除することが可能になる。
【００２９】
また、ＶＳＣアドレスバッファで複数の非同期動作ユニットから送信される格納先アドレスをそれぞれ保持し、ＶＳＣアドレスバッファがオーバーフローを起こした場合に、該オーバーフローさせたベクトル・スキャッタ命令を発行した非同期動作ユニットへ要素の再送を要求するＶＳＣアドレスバッファ制御部を備え、非同期動作ユニットは、自ユニットが発行した前記ベクトル・スキャッタ命令で指定された各要素をそれぞれ保持するリトライバッファを有し、メインメモリ制御部から要素の再送が要求された場合にリトライバッファに保持した要素をメインメモリ制御部へ再送することで、ＶＳＣアドレスバッファを効率よく使用することができる。
【００３０】
【発明の実施の形態】
次に本発明について図面を参照して説明する。
【００３１】
（第１の実施の形態）
図１は本発明の情報処理装置の第１の実施の形態の構成を示すブロック図であり、図２は図１に示したＭＭＣの一構成例を示すブロック図である。
【００３２】
図１に示すように、本実施形態の情報処理装置は、ＣＰＵ１００と主記憶装置であるＭＭＵ（Ｍａｉｎ　Ｍｅｍｏｒｙ　Ｕｎｉｔ）２００とを有する構成である。
【００３３】
ＣＰＵ１００は、Ｍａｓｔｅｒ−Ｕｎｉｔ１とＳｌａｖｅ−Ｕｎｉｔ２の２つの非同期動作ユニットを備えている。Ｍａｓｔｅｒ−Ｕｎｉｔ１及びＳｌａｖｅ−Ｕｎｉｔ２は、Ｍａｓｔｅｒ−Ｕｎｉｔ１でベクトル命令の発行／終了を管理することを除けば、基本的にベクトル命令にしたがって同じ処理を実行するユニットである。これら２つのベクトルユニットは、通常、異なる２つのＬＳＩで構成されるが、非同期で動作するユニットであれば、同一のＬＳＩ内に形成されていてもよい。なお、図１では、ＣＰＵ１００が１つのＭａｓｔｅｒ−Ｕｎｉｔ１と１つのＳｌａｖｅ−Ｕｎｉｔ２とで構成される例を示しているが、ＣＰＵ１００は、１つのＭａｓｔｅｒ−Ｕｎｉｔ１と複数のＳｌａｖｅ−Ｕｎｉｔ２で構成されていてもよく、１つのＭａｓｔｅｒ−Ｕｎｉｔ１と少なくとも１つのＳｌａｖｅ−Ｕｎｉｔ２から成る組を複数備えた構成であってもよい。
【００３４】
Ｍａｓｔｅｒ−Ｕｎｉｔ１は、命令制御部１１、Ｍａｓｔｅｒ側ＲＱ制御回路１２、ベクトルレジスタ１３、及びＰＮＵ１４を有し、Ｓｌａｖｅ−Ｕｎｉｔ２は、Ｓｌａｖｅ側ＲＱ制御回路２２、ベクトルレジスタ２３、及びＰＮＵ２４を有する構成である。
【００３５】
図１に示したＭａｓｔｅｒ−Ｕｎｉｔ１及びＳｌａｖｅ−Ｕｎｉｔ２は、ＶＳＣ命令により２５６個の要素を一度に処理する構成例であり、Ｍａｓｔｅｒ−Ｕｎｉｔ１は偶数番号の要素を処理し、Ｓｌａｖｅ−Ｕｎｉｔ２は奇数番号の要素を処理するものとする。
【００３６】
命令制御部１１は、ベクトル命令の発行時に、Ｍａｓｔｅｒ側ＲＱ制御回路１２及びＳｌａｖｅ側ＲＱ制御回路２２にそれぞれ対応するオペコードを供給する。
【００３７】
Ｍａｓｔｅｒ側ＲＱ制御回路１２は、ＶＳＣ命令のオペコードを受け取ると、ＶＳＣ命令の実行条件を全てチェックし、処理を開始するためのＶＳＣｓｔａｒｔ信号を所定のタイミングでＳｌａｖｅ側ＲＱ制御回路２２へ送出する。また、偶数番号の各要素の要素リクエストを発行し、ベクトルレジスタ１３から読み出した、ＶＳＣ命令で指定されたメモリへの格納先アドレス及びデータと共に、要素番号、ユニット番号ＣＰＵ＃、及び識別子ＶＳＣｉｄ等を含むリクエスト情報をＰＮＵ１４へ送出する。なお、ユニット番号ＣＰＵ＃は、要素リクエストの発行元ユニットを区別するためのものであり、例えば、Ｍａｓｔｅｒ−Ｕｎｉｔ１から送出されるリクエスト情報のユニット番号ＣＰＵ＃には偶数番号が割り当てられ、Ｓｌａｖｅ−Ｕｎｉｔ２から送出されるリクエスト情報のユニット番号ＣＰＵ＃には奇数番号が割り当てられる。但し、ＣＰＵが複数組のＭａｓｔｅｒ−Ｕｎｉｔ１とＳｌａｖｅ−Ｕｎｉｔ２で構成される場合は、一組のＭａｓｔｅｒ−Ｕｎｉｔ１とＳｌａｖｅ−Ｕｎｉｔ２に割り当てるユニット番号ＣＰＵ＃は連続する値に設定する。また、識別子ＶＳＣｉｄは、ＶＳＣ命令を区別するためのものであり、１つのＶＳＣ命令で発行される要素リクエストには全て同一の識別子が付与される。
【００３８】
ＰＮＵ１４は、Ｍａｓｔｅｒ側リクエスト制御回路１２から受け取った要素リクエスト、リクエスト情報、格納先アドレス及びデータをＣＰＵ出力ＲＱレジスタ１５で一旦保持した後、ＭＭＵ２００へ送出する。
【００３９】
Ｓｌａｖｅ側ＲＱ制御回路２２は、上記Ｍａｓｔｅｒ側ＲＱ制御回路１２と同様に奇数番号の各要素の処理を実行すると共に、一つのＶＳＣ命令で発行される複数の要素リクエストのうち、最終の要素リクエストの発行タイミングで処理の終了を示すＶＳＣｅｎｄ信号をＭａｓｔｅｒ側ＲＱ制御回路１２へ送信する。ＶＳＣｅｎｄ信号を受け取ったＭａｓｔｅｒ側ＲＱ制御回路１２は、自身で発行する最終の要素リクエストの発行を待って命令制御部１１から発行された次のＶＳＣ命令の処理を開始する。
【００４０】
Ｓｌａｖｅ−Ｕｎｉｔ２が有するベクトルレジスタ２３は、Ｍａｓｔｅｒ−Ｕｎｉｔ１が有するベクトルレジスタ１３と同様に動作し、Ｓｌａｖｅ−Ｕｎｉｔ２が有するＰＮＵ２４は、Ｍａｓｔｅｒ−Ｕｎｉｔ１が有するＰＮＵ１４と同様に動作する。
【００４１】
一方、ＭＭＵ２００は、データを格納するＭＭ（Ｍａｉｎ　Ｍｅｍｏｒｙ）４とＭＭ４に対するデータの書き込み動作を制御するＭＭＣ（Ｍａｉｎ　Ｍｅｍｏｒｙ　Ｃｏｎｔｒｏｌｌｅｒ）３とを有する構成である。なお、図１では、ＭＭＵ２００を１つだけ備えた構成を示しているが、ＭＭＵ２００の数は１つに限定されるものではなく、複数のＭＭＵ２００を有していてもよい。
【００４２】
ＭＭ４は、並列にアクセス可能なバンクと呼ばれる複数（図１では８個）のメモリユニットから構成され、各バンクには指定されたアドレスにしたがってインターリーブでデータが格納される。
【００４３】
ＭＭＣ３は、ＭＭＵ入力ＲＱレジスタ３１１、３１２、ＶＳＣアドレスバッファ３２、リクエスト分配回路３３、順序監視回路３４、ＷＥレジスタ３５、及びａｄｒ／ｄａｔａレジスタ３６を備えた構成である。
【００４４】
ＭＭＵ入力ＲＱレジスタ３１１、３１２は、Ｍａｓｔｅｒ−Ｕｎｉｔ１及びＳｌａｖｅ−Ｕｎｉｔ２から送出されたリクエスト情報、格納先アドレス及びデータを受信するレジスタであり、Ｍａｓｔｅｒ−Ｕｎｉｔ１及びＳｌａｖｅ−Ｕｎｉｔ２に対応して２つ設けられている。
【００４５】
ＶＳＣアドレスバッファ３２は、ＭＭ４に対する各要素の格納先アドレスを一時的に保持するレジスタであり、図１に示したＭａｓｔｅｒ−Ｕｎｉｔ１及びＳｌａｖｅ−Ｕｎｉｔ２はそれぞれ２５６個の要素を一度に処理するため、それに対応して２５６Ｗ（ワード）のアドレスを保持するレジスタを２セット備えている。本実施形態のＶＳＣアドレスバッファ３２は、１つのＶＳＣ命令に対応する格納先アドレスのみ保持し、複数のＶＳＣ命令に対応する格納先アドレスをオーバーラップして格納することはない。
【００４６】
リクエスト分配回路３３は、要素の格納先アドレスに対応するＭＭ４のバンクに対して、書き込みを許可するＭｅｍ−Ｗｒｉｔｅ信号、並びに指定された格納先アドレス及びデータをそれぞれ分配する。
【００４７】
順序監視回路３４は、１つのＶＳＣ命令で発行される要素リクエストのうち、格納先アドレスが一致し、かつ要素番号順に処理されていない要素リクエストがある場合に、要素番号が若い方の要素リクエストで生成されるＭｅｍ−Ｗｒｉｔｅ信号の出力を抑止する。
【００４８】
ＷＥレジスタ３５は、リクエスト分配回路３３から送出されたＭｅｍ−Ｗｒｉｔｅ信号をそれぞれ保持し、格納先アドレスに対応するＭＭ４のバンクへ送出する。
【００４９】
ａｄｒ／ｄａｔａレジスタ３６は、リクエスト分配回路３３から送出された格納先アドレス及びデータをそれぞれ保持し、格納先アドレスで指定されたＭＭ４のバンクへ送出する。
【００５０】
図２に示すように、順序監視回路３４は、先行する要素リクエストと後続の要素リクエストの要素番号及び格納先アドレスをそれぞれ比較する比較回路３７と、比較回路３７の比較結果にしたがって、処理の順序が逆転し、かつ格納先アドレスが一致している場合に、要素番号が若い要素リクエストで生成されるＭｅｍ−Ｗｒｉｔｅ信号のリクエスト分配回路３３への出力を抑止するＷＥ抑止回路３８と、ＶＳＣアドレスバッファ３２に対する格納先アドレスの書き込み処理を制御するバッファ制御回路３９とを有する構成である。
【００５１】
比較回路３７は、ＶＳＣアドレスバッファ３２に格納された先行する要素リクエストと後続の要素リクエストの要素番号を比較し、処理順序の逆転を検出する要素番号比較器３７１と、ＶＳＣアドレスバッファ３２に格納された先行する要素リクエストと後続の要素リクエストの格納先アドレスを比較し、同一のアドレスに対するアクセスを検出するアドレス比較器３７２と、要素番号比較器３７１及びアドレス比較器３７２の比較結果の論理積を出力する論理積ゲート３７３とを備えている。要素番号比較器３７１、アドレス比較器３７２、及び論理積ゲート３７３は、ＶＳＣアドレスバッファ３２に格納可能なワード数（エントリ数）に対応して、それぞれ２５６×２個＝５１２個づつ備えている。
【００５２】
なお、アドレス比較器３７１は、後続の要素リクエストがＭａｓｔｅｒ−Ｕｎｉｔ１から発行されている場合はＳｌａｖｅ−Ｕｎｉｔ２から発行された先行する要素リクエストとアドレスどうしを比較する。また、後続の要素リクエストがＳｌａｖｅ−Ｕｎｉｔ２から発行されている場合はＭａｓｔｅｒ−Ｕｎｉｔ１から発行された先行する要素リクエストとアドレスどうしを比較する。これは、Ｍａｓｔｅｒ−Ｕｎｉｔ１またはＳｌａｖｅ−Ｕｎｉｔ２から連続して発行される要素リクエストでは処理の順序が逆転しないことによる。
【００５３】
論理積ゲート３７３の出力がアクティブになったとき、Ｍａｓｔｅｒ−Ｕｎｉｔ１及びＳｌａｖｅ−Ｕｎｉｔ２から発行された要素リクエストの処理の順序が逆転し、ＭＭ４に対する不正な書き込み処理が発生することを示している。
【００５４】
バッファ制御回路３９は、書き込み制御部３９１、デコード回路３９２、及びＶＳＣｉｄレジスタ３９３、ＶＳＣｉｄ比較器３９４、及びインバータ３９５を備えている。
【００５５】
デコード回路３９２は、Ｍａｓｔｅｒ−Ｕｎｉｔ１及びＳｌａｖｅ−Ｕｎｉｔ２から送信されたオペコードをデコードし、ＶＳＣ命令であることを示すＶＳＣ信号、及びＭＭ４に対するデータの書き込み許可信号であるＭｅｍ−Ｗｒｉｔｅ信号を生成する。
【００５６】
書き込み制御部（Ｗｒｉｔｅ　ｃｏｎｔ）３９１は、要素が有効であることを示すバリッド（Ｖ）信号、ユニット番号ＣＰＵ＃、及びＶＳＣ信号を入力とし、要素が有効であるとき、要素リクエストの発行元に対応するＶＳＣアドレスバッファ３２内をサーチし、書き込み可能な（空いている）アドレスとライトイネーブルＷＥ信号とを該ＶＳＣアドレスバッファ３２へ送出する論理回路である。
【００５７】
ＶＳＣアドレスバッファ３２は、書き込み制御部３９１から送出されたアドレス及びＷＥ信号にしたがって、ＭＭＵ入力ＲＱレジスタ３１１、３１２から転送された格納先アドレス（Ａｄｄｒｅｓｓ）を要素番号（ＥＬＭ）に関連付けてそれぞれ格納する。
【００５８】
ＶＳＣｉｄレジスタ３９３は、先行する要素リクエストに付与された識別子ＶＳＣｉｄを保持し、ＶＳＣｉｄ比較器３９４は、ＶＳＣｉｄレジスタ３９３で保持された識別子ＶＳＣｉｄと後続の要素リクエストに付与された識別子ＶＳＣｉｄとを比較する。そして、後続の識別子ＶＳＣｉｄが変化したとき（次のＶＳＣ命令の処理に移行したとき）、ＶＳＣアドレスバッファ３２に格納された内容をクリアするためのタイミング信号（Ｃｌｅａｒ）をインバータ３９５を介して送出する。
【００５９】
ＷＥ抑止回路３８は、ＶＳＣアドレスバッファ３２の数に対応して、論理和ゲート３８１、第１の論理積ゲート３８２、及び第２の論理積ゲート３８３をそれぞれ２個づつ備えている。
【００６０】
論理和ゲート３８１は、比較回路３７の各論理積ゲート３７３から出力される比較結果から、要素が有効であり、同一のＶＳＣ命令であり、かつ識別子ＶＳＣｉｄが変化しない条件下で、対応する２５６個の論理積ゲート３７３のいずれかの出力がアクティブになった場合に、ＭＭ４に対するデータの書き込み許可信号であるＭｅｍ−Ｗｒｉｔｅ信号の出力を抑止する。
【００６１】
リクエスト分配回路３３は、Ｍａｓｔｅｒ−Ｕｎｉｔ１及びＳｌａｖｅ−Ｕｎｉｔ２に対応して生成された２つのＭｅｍ−Ｗｒｉｔｅ信号をＭＭ４の対応するバンクへそれぞれ送出するためのスイッチであるＷＥ用２×８スイッチ３３１と、Ｍａｓｔｅｒ−Ｕｎｉｔ１及びＳｌａｖｅ−Ｕｎｉｔ２から送信された格納先アドレス及びデータをＭＭ４の対応するバンクへそれぞれ送出するためのスイッチであるａｄｒ／ｄａｔａ用２×８スイッチ３３２とを備えている。
【００６２】
次に、本実施形態の情報処理装置のＶＳＣ命令発行時の動作について図面を用いて説明する。
【００６３】
図３は図１に示した情報処理装置のＶＳＣ命令による動作の様子を示す模式図である。なお、図３はＣＰＵ１００が１つのＭａｓｔｅｒ−Ｕｎｉｔ１と１つのＳｌａｖｅ−Ｕｎｉｔ２とで構成される場合の動作を示している。
【００６４】
図３に示すように、Ｍａｓｔｅｒ−Ｕｎｉｔ１の命令制御部１１からＶＳＣ命令が発行されると、Ｍａｓｔｅｒ側ＲＱ制御回路１２はＶＳＣｓｔａｒｔ信号を生成し、Ｓｌａｖｅ側ＲＱ制御回路２２へ該ＶＳＣｓｔａｒｔ信号を送出する。
【００６５】
続いて、Ｍａｓｔｅｒ側ＲＱ制御回路１２及びＳｌａｖｅ側ＲＱ制御回路２２は、自ユニットが担当する要素番号の要素リクエストをそれぞれ発行し、ベクトルレジスタ１３、２３からＶＳＣ命令で指定された格納先アドレス及びデータを読み出し（ＲＥＧ　ｒｅａｄ）、読み出した格納先アドレス及びデータと生成したリクエスト情報とをＰＮＵ１４、２４を介してＭＭＵ２００へ送出する。
【００６６】
ここでは、Ｍａｓｔｅｒ−Ｕｎｉｔ１が要素０から順に要素ｎまで偶数番号の要素リクエストを発行し、Ｓｌａｖｅ−Ｕｎｉｔ２が要素１から順に要素ｎ−１まで奇数番号の要素リクエストを発行するものとする。
【００６７】
例えば、要素ｎ−１と要素ｎの要素リクエストにおいて、同一のアドレスにデータを格納する指示があった場合、ＭＭＵ２００では要素ｎの要素リクエストを先行して受信する可能性がある。
【００６８】
本実施形態では、後続の要素ｎ−１の要素リクエストに対応する要素番号及び格納先アドレスと、先行する要素ｎの要素リクエストに対応する要素番号及び格納先アドレスとをＭＭＣ３の比較回路３７でそれぞれ比較する。そして、要素ｎの格納先アドレスがＶＳＣアドレスバッファ３２に先に格納されたことを検出した場合は、要素ｎ−１の要素リクエストで生成されるＭｅｍ−Ｗｒｉｔｅ信号の送出をＷＥ抑止回路３８により抑止する。したがって、要素ｎ−１のデータがＭＭ４へ書き込まれないため、要素ｎのデータが要素ｎ−１のデータで上書きされることがない。
【００６９】
一方、Ｓｌａｖｅ−Ｕｎｉｔ２で最終の要素リクエストが発行されると、Ｓｌａｖｅ側ＲＱ制御回路２２は、その発行タイミングでＭａｓｔｅｒ側ＲＱ制御回路１２へ処理の終了を示すＶＳＣｅｎｄ信号を送信する。ＶＳＣｅｎｄ信号を受信したＭａｓｔｅｒ側ＲＱ制御回路１２は、自身の最終要素リクエストの発行終了を待って命令制御部１１から発行された次のＶＳＣ命令の処理を開始する。
【００７０】
ＭＭＣ２００は、次のＶＳＣ命令による要素リクエストを受信すると、先行するＶＳＣ命令で格納されたＶＳＣアドレスバッファ３２の内容を全てクリアする。このとき、先行するＶＳＣ命令と後続するＶＳＣ命令の区別は識別子であるＶＳＣｉｄが用いられる。
【００７１】
なお、本実施形態では、説明を容易にするためにＣＰＵが１組のＭａｓｔｅｒ−Ｕｎｉｔ１とＳｌａｖｅ−Ｕｎｉｔ２で構成される例を示したが、実際の情報処理装置ではＣＰＵが複数組のＭａｓｔｅｒ−Ｕｎｉｔ１とＳｌａｖｅ−Ｕｎｉｔ２を備えている場合が多い。
【００７２】
例えば、ＣＰＵを複数組のＭａｓｔｅｒ−Ｕｎｉｔ１とＳｌａｖｅ−Ｕｎｉｔ２で構成し、さらにＶＳＣアドレスバッファ３２で複数のＶＳＣ命令に対応する格納先アドレスを保持する構成を採用すると、ＶＳＣ命令の発行間隔を短縮できるため情報処理装置の処理速度をさらに向上させることができる。
【００７３】
しかしながら、そのような構成では、ＶＳＣアドレスバッファ３２が（Ｍａｓｔｅｒ−ＵｎｉｔとＳｌａｖｅ−Ｕｎｉｔの組数）×２個だけ必要になり、そのエントリ数は、Ｍａｓｔｅｒ−Ｕｎｉｔ及びＳｌａｖｅ−Ｕｎｉｔがそれぞれ２５６個の要素を一度に処理すると仮定すると、以下の式で示す数だけ必要になる。
【００７４】
エントリ数＝（Ｍａｓｔｅｒ−Ｓｌａｖｅの組数）×５１２×（ＶＳＣ命令のオーバーラップ数）
また、Ｍａｓｔｅｒ−Ｕｎｉｔ１とＳｌａｖｅ−Ｕｎｉｔ２の組数を増やすと、比較回路３７の各構成要素もそれに伴って追加しなければならないため回路量が大幅に増加する。特にＶＳＣアドレスバッファで複数のＶＳＣ命令に対応する格納先アドレスを保持する構成では、処理が複雑になることによる回路増加も加わるため、さらなる回路量の増加を招いてしまう。
【００７５】
したがって、ＶＳＣアドレスバッファ３２は、１つのＶＳＣ命令分の格納先アドレスを保持する構成が好ましい。また、Ｍａｓｔｅｒ−Ｕｎｉｔ及びＳｌａｖｅ−Ｕｎｉｔの組数は、ＶＳＣ命令の発行間隔が広がることによる性能低下と回路量の増加とをトレードオフすることで、情報処理装置に要求される性能を満たす最適な組数に設定することが望ましい。
【００７６】
同様に、ＣＰＵが１つのＭａｓｔｅｒ−Ｕｎｉｔ１と複数のＳｌａｖｅ−Ｕｎｉｔ２とを有する構成でも、ＶＳＣアドレスバッファ３２は１つのＶＳＣ命令分の格納先アドレスを保持する構成が好ましく、Ｓｌａｖｅ−Ｕｎｉｔ２の数は情報処理装置に要求される性能を満たす最適な値に設定することが望ましい。
【００７７】
本実施形態の情報処理装置によれば、複数のユニットから発行される要素リクエストに対する処理順序の逆転による影響を排除できるため、ＣＰＵを複数の非同期動作ユニットで構成しても不正な書き込み処理が発生することが無い。したがって、ＣＰＵを複数のユニットで構成することで、各ユニットの回路規模を小さくすることが可能になり、ユニット（ＬＳＩ）の歩留まりや外部端子数が低減されて、コストが低減される。
【００７８】
（第２の実施の形態）
次に本発明の情報処理装置の第２の実施の形態について図面を用いて説明する。
【００７９】
図４は本発明の情報処理装置の第２の実施の形態のＣＰＵ構成を示すブロック図であり、図５は本発明の情報処理装置の第２の実施の形態のＭＭＣ構成を示すブロック図である。また、図６は図５に示したデッドロック検出制御部の構成を示すブロック図であり、図７は図６に示したデッドロック検出制御部の動作の様子を示す模式図である。
【００８０】
第１の実施の形態では、Ｍａｓｔｅｒ−Ｕｎｉｔ及びＳｌａｖｅ−Ｕｎｉｔに対応してＶＳＣアドレスバッファを１つずつ設けているため、ＭＭＣはＭａｓｔｅｒ−Ｕｎｉｔ及びＳｌａｖｅ−Ｕｎｉｔの数だけＶＳＣアドレスバッファを備える必要がある。第２の実施の形態のＭＭＣは、Ｍａｓｔｅｒ−Ｕｎｉｔ及びＳｌａｖｅ−Ｕｎｉｔの要素リクエストで指定される格納先アドレスを１つのＶＳＣアドレスバッファで保持する構成である。また、それに対応してＭａｓｔｅｒ−Ｕｎｉｔ及びＳｌａｖｅ−Ｕｎｉｔから送出されるリクエスト情報、格納先アドレス及びデータを、１つのＭＭＵ入力ＲＱレジスタで共通に受信する。さらに、本実施形態のＶＳＣアドレスバッファは、複数のＶＳＣ命令に対応する格納先アドレスをそれぞれ保持する構成である。
【００８１】
このような構成では、格納先アドレスの保持に必要なＶＳＣアドレスバッファの空きエントリが不足する（オーバーフロー）可能性があるため、オーバーフローさせたＶＳＣ命令に対応する要素を再送させるためのＲＱ再送要求信号をＭＭＣからＭａｓｔｅｒ−Ｕｎｉｔ及びＳｌａｖｅ−Ｕｎｉｔへそれぞれ送信する。
【００８２】
一方、第２の実施の形態のＭａｓｔｅｒ−Ｕｎｉｔ及びＳｌａｖｅ−Ｕｎｉｔは、既に発行した要素リクエストに対応するリクエスト情報、格納先アドレス及びデータを保持するためのリトライバッファを備え、ＭＭＣからＲＱ再送要求信号を受信すると、該リトライバッファで保持したリクエスト情報、格納先アドレス及びデータをＭＭＣへ再送する。その際、再送を開始する要素番号がＭａｓｔｅｒ−Ｕｎｉｔ及びＳｌａｖｅ−Ｕｎｉｔでずれている可能性があるため、Ｍａｓｔｅｒ−Ｕｎｉｔ及びＳｌａｖｅ−Ｕｎｉｔは、再送を開始する要素番号のうち、要素番号が若い方の要素から再送を開始する。例えば、Ｍａｓｔｅｒ−Ｕｎｉｔの要素番号の方が若い場合、Ｓｌａｖｅ−ＵｎｉｔはＭａｓｔｅｒ−Ｕｎｉｔの要素番号＋１の要素番号から再送を開始する。また、Ｓｌａｖｅ−Ｕｎｉｔの要素番号の方が若い場合、Ｍａｓｔｅｒ−ＵｎｉｔはＳｌａｖｅ−Ｕｎｉｔの要素番号−１の要素番号から再送を開始する。
【００８３】
さらに、本実施形態のＭａｓｔｅｒ−Ｕｎｉｔ及びＳｌａｖｅ−Ｕｎｉｔは、ＭＭＣからＲＱ再送要求信号を受信すると、ＶＳＣアドレスバッファをオーバーフローさせたＶＳＣ命令の要素リクエストに対応するＶＳＣアドレスバッファの内容をクリアするためのバッファクリア信号をＭＭＣへ送出する。
【００８４】
図４に示すように、本実施形態のＭａｓｔｅｒ−Ｕｎｉｔ５は、発行した要素リクエストに対応するリクエスト情報を保持するための制御用リトライバッファ５６と、該要素リクエストに対応する格納先アドレス及びデータを保持するためのアドレス・データ用リトライバッファ５７と、ＭＭＣからＲＱ再送要求信号を受信した場合に、リクエスト情報、格納先アドレス及びデータをＭＭＣへ再送するための第１のセレクタ５８及び第２のセレクタ５９とを有する構成である。
【００８５】
Ｍａｓｔｅｒ側ＲＱ制御回路５２は、発行した要素リクエストに対応するリクエスト情報を制御用リトライバッファ５６及び第１のセレクタ５８へそれぞれ送出する。第１のセレクタ５８は、ＲＱ再送要求信号を受信していない場合はＭａｓｔｅｒ側ＲＱ制御回路５２から受信したリクエスト情報をＰＮＵ５４へ送出し、ＲＱ再送要求信号を受信した場合は制御用リトライバッファ５６で保持したリクエスト情報をＰＮＵ５４へ送出する。同様に、ベクトルレジスタ５３は、要素リクエストで指定された格納先アドレス及びデータをアドレス・データ用リトライバッファ５７及び第２のセレクタ５９へそれぞれ送出する。第２のセレクタ５９は、ＲＱ再送要求信号を受信していない場合はベクトルレジスタ５３から受け取った格納先アドレス及びデータをＰＮＵ５４へ送出し、ＲＱ再送要求信号を受信した場合はアドレス・データ用リトライバッファ５７で保持した格納先アドレス及びデータをＰＮＵ５４へ送出する。
【００８６】
また、Ｍａｓｔｅｒ側ＲＱ制御回路５２は、ＭＭＣからＲＱ再送要求信号を受信すると、Ｓｌａｖｅ−Ｕｎｉｔ６のＳｌａｖｅ側ＲＱ制御回路６２に対して、再送を開始する要素の要素番号であるｓｔａｒｔ要素番号を取得するためのｓｔａｒｔ要素番号指示を送信する。Ｓｌａｖｅ側ＲＱ制御回路６２は、Ｍａｓｔｅｒ側ＲＱ制御回路５２からｓｔａｒｔ要素番号指示を受信すると、Ｓｌａｖｅ−Ｕｎｉｔ６で再送を開始する要素のｓｔａｒｔ要素番号をＭａｓｔｅｒ側ＲＱ制御回路５２へ返送する（ｓｔａｒｔ要素番号報告）。Ｍａｓｔｅｒ側ＲＱ制御回路５２は、Ｍａｓｔｅｒ−Ｕｎｉｔ５で再送を開始するｓｔａｒｔ要素番号とＳｌａｖｅ側ＲＱ制御回路６２から受信したｓｔａｒｔ要素番号とを比較し、若い方の要素番号に基づいて再送を開始する要素番号を修正する。また、必要に応じてＳｌａｖｅ側ＲＱ制御回路６２へ再送を開始する要素番号の修正結果を送信する。そして、自ユニットで発行した、ＶＳＣアドレスバッファをオーバーフローさせたＶＳＣ命令の要素リクエストに対応するＶＳＣアドレスバッファの内容をクリアするためのバッファクリア信号をＰＮＵ５４を介してＭＭＣへ送出する。なお、ＰＮＵ５４は、リクエスト情報、格納先アドレス及びデータを再送する前にバッファクリア信号をＭＭＣへ送出する。
【００８７】
Ｓｌａｖｅ−Ｕｎｉｔ６は、上記Ｍａｓｔｅｒ側ＲＱ制御回路５２及びＳｌａｖｅ側ＲＱ制御回路６２の動作の違いを除けばＭａｓｔｅｒ−Ｕｎｉｔ５と同様の構成である。
【００８８】
図５に示すように、本実施形態のＭＭＣ７が有するＭＭＵ入力ＲＱレジスタ７１は、図２に示した第１の実施の形態のＭＭＣが有するＭＭＵ入力ＲＱレジスタに、ＣＰＵから送信されるバッファクリア信号を受信するためのＶ２フィールドを追加した構成である。
【００８９】
また、本実施形態のＶＳＣアドレスバッファ７２は、ユニット番号ＣＰＵ＃、及びＶＳＣ命令を識別するための識別子ＶＳＣｉｄを、要素番号（ＥＬＭ）及び格納先アドレス（Ａｄｄｒｅｓｓ）に関連付けてそれぞれ保持する構成である。なお、本実施形態では、後述するデッドロック状態を回避するためにＶＳＣアドレスバッファ７２のエントリ数を（Ｍａｓｔｅｒ−Ｕｎｉｔ５で一度に処理するワード数）＋１（本実施形態では２５７ワード）に設定する。
【００９０】
さらに、本実施形態のＭＭＣ７は、図２に示した第１の実施の形態のＭＭＣに、ＶＳＣアドレスバッファ制御部８０、再送リクエストレジスタ８１、及びデッドロック検出制御部８２を追加した構成である。
【００９１】
ＶＳＣアドレスバッファ制御部８０は、ＶＳＣアドレスバッファ７２のオーバーフローを検出したときに、対応するリクエスト情報、格納先アドレス及びデータをＭａｓｔｅｒ−Ｕｎｉｔ５及びＳｌａｖｅ−Ｕｎｉｔ６から再送させるための再送要求信号を再送リクエストレジスタ８１及びデッドロック検出制御部８２へそれぞれ送出する。
【００９２】
デッドロック検出制御部８２は、ＶＳＣアドレスバッファ７２のオーバーフローとＭａｓｔｅｒ−Ｕｎｉｔ５及びＳｌａｖｅ−Ｕｎｉｔ６からの要素の再送を繰り返し実行するデッドロック状態を検出し、デッドロック状態が発生した場合に要素の再送タイミングをずらすための遅延値（ＢＳＹＣＮＴ）を再送リクエストレジスタ８１へ送出する。
【００９３】
再送リクエストレジスタ８１は、ＭＭＵ入力ＲＱレジスタ７１からユニット番号ＣＰＵ＃、識別子ＶＳＣｉｄ、及び要素番号ＥＬＭが要素リクエストの発行タイミングに同期して転送され、ＶＳＣアドレスバッファ制御部８０から再送要求信号を受信すると、ＶＳＣアドレスバッファ７２をオーバーフローさせた要素リクエストの発行元のＭａｓｔｅｒ−Ｕｎｉｔ５及びＳｌａｖｅ−Ｕｎｉｔ６にＲＱ再送要求信号を送出する。その際、デッドロック検出制御部８２から受信した遅延値ＢＳＹＣＮＴをＲＱ再送要求信号に添付して送出する。
【００９４】
本実施形態の比較回路７７は、第１の実施の形態で示した要素番号比較器、及びアドレス比較器に加えて、ＶＳＣアドレスバッファ７２に格納された先行する要素リクエストと後続の要素リクエストに対応するユニット番号ＣＰＵ＃どうしを比較するユニット番号比較器７７１と、ＶＳＣアドレスバッファ７２に格納された先行する要素リクエストと後続の要素リクエストに対応する識別子ＶＳＣｉｄどうしを比較する識別子比較器７７２とを備えている。
【００９５】
ユニット番号比較器７７１及び識別子比較器７７２の比較結果は第１の論理積ゲート７７３を介してバッファ制御回路７９が有する第２の論理積ゲート７９１へ出力される。第２の論理積ゲート７９１は、ＭＭＵ入力ＲＱレジスタ７１のＶ２フィールドから出力されるバッファクリア信号と第１の論理積ゲート７７３の出力信号との論理積を出力する。
【００９６】
バッファクリア信号をＭａｓｔｅｒ−Ｕｎｉｔ５またはＳｌａｖｅ−Ｕｎｉｔ６から受信した場合、バッファ制御回路７９は、先行する要素リクエストと後続の要素リクエストに対応するユニット番号ＣＰＵ＃及び識別子ＶＳＣｉｄに一致するＶＳＣアドレスバッファ７２のエントリをクリアする。その他の構成及び動作は第１の実施の形態と同様であるため、その説明は省略する。なお、図５に示すＭＭＣ７は、リクエスト分配回路、ＷＥレジスタ、及びａｄｒ／ｄａｔａレジスタを省略した構成を示している。
【００９７】
次に、上述したデッドロック状態について説明する。
【００９８】
例えば、ＣＰＵが１つのＭａｓｔｅｒ−Ｕｎｉｔ５と１つのＳｌａｖｅ−Ｕｎｉｔ６とを備え、Ｍａｓｔｅｒ−Ｕｎｉｔ５及びＳｌａｖｅ−Ｕｎｉｔ６がそれぞれ２５６個の要素を一度に処理する構成の場合、信号の伝搬遅延や要素リクエストの様々な発行制限により、Ｍａｓｔｅｒ−Ｕｎｉｔ５がＳｌａｖｅ−Ｕｎｉｔ６よりも先行して２５６個の要素リクエストを発行する可能性がある。さらに、これらの要素リクエストが全て同じＭＭＣ７に対して発行された場合、ＶＳＣアドレスバッファ７２のエントリ数を２５６とすると、Ｍａｓｔｅｒ−Ｕｎｉｔ５から発行された要素リクエストの処理だけでＶＳＣアドレスバッファ７２の全てのエントリが使用される。この状態では、Ｓｌａｖｅ−Ｕｎｉｔ６から発行される最初の要素リクエストの処理でＶＳＣアドレスバッファ７２がオーバーフローするため、Ｍａｓｔｅｒ−Ｕｎｉｔ５及びＳｌａｖｅ−Ｕｎｉｔ６にＲＱ再送要求信号が送信され、最初の要素から再送が開始される。このとき、再度、Ｍａｓｔｅｒ−Ｕｎｉｔ５がＳｌａｖｅ−Ｕｎｉｔ６よりも先行して２５６個の要素リクエストを発行すると、ＶＳＣアドレスバッファ７２のオーバーフローとＭａｓｔｅｒ−Ｕｎｉｔ５及びＳｌａｖｅ−Ｕｎｉｔ６の再送処理とが繰り返し実行されるため、ＶＳＣ命令の処理が永久に進まない状態に陥る。この状態をデッドロックと言う。
【００９９】
このようなデッドロック状態を回避するためには、ＶＳＣアドレスバッファ７２のエントリ数を、（Ｍａｓｔｅｒ−Ｕｎｉｔ５で一度に処理する要素数）＋１（本実施形態では２５７）だけ確保すればよい。
【０１００】
一方、ＣＰＵが複数組のＭａｓｔｅｒ−Ｕｎｉｔ５及びＳｌａｖｅ−Ｕｎｉｔ６を備え、Ｍａｓｔｅｒ−Ｕｎｉｔ５及びＳｌａｖｅ−Ｕｎｉｔ６でそれぞれ２５６個の要素を一度に処理する構成の場合も、上記と同様に各組毎にＭａｓｔｅｒ−Ｕｎｉｔ５がＳｌａｖｅ−Ｕｎｉｔ６よりも先行して２５６個の要素リクエストを発行する可能性がある。そのため、（Ｍａｓｔｅｒ−Ｕｎｉｔ５で一度に処理する要素数）×（Ｍａｓｔｅｒ−Ｕｎｉｔ５とＳｌａｖｅ−Ｕｎｉｔ６の組数）よりもＶＳＣアドレスバッファ７２のエントリ数が少なければ、ＶＳＣアドレスバッファ７２のオーバーフローと要素の再送処理とを繰り返す（以下、再送サイクルと称す）デッドロック状態に陥る可能性がある。
【０１０１】
この場合、デッドロック状態を回避するためには、ＶＳＣアドレスバッファ７２のエントリ数を（Ｍａｓｔｅｒ−Ｕｎｉｔ５で一度に処理する要素数）×（Ｍａｓｔｅｒ−Ｕｎｉｔ５とＳｌａｖｅ−Ｕｎｉｔ６の組数）＋１だけ確保すればよい。
【０１０２】
しかしながら、実際には殆ど発生しないデッドロック状態を回避するためだけにＶＳＣアドレスバッファ７２のエントリ数を増加させることは、ハードウェアの増加を招くため、ＭＭＵのコストが増大する新たな問題が発生する。
【０１０３】
本実施形態では、ハードウェアの増加を抑制しつつデッドロック状態を回避するために、図５に示したデッドロック検出制御部８２をＭＭＣ７に備えている。
【０１０４】
デッドロック検出制御部８２は、所定の期間内に、同じＭａｓｔｅｒ−Ｕｎｉｔ５及びＳｌａｖｅ−Ｕｎｉｔ６から、同じＶＳＣ命令に対応する同じ要素番号が再送された場合に、２度目の再送時にＭａｓｔｅｒ−Ｕｎｉｔ５及びＳｌａｖｅ−Ｕｎｉｔ６による要素リクエストの発行タイミングを遅らせ、要素リクエストの再送サイクルを乱すことでデッドロックから脱出させるためのものである。
【０１０５】
図６に示すように、デッドロック検出制御部８２は、デッドロック状態であるか否かを検出するためのデッドロック検出期間を計数するカウンタ回路８２１と、再送された格納先アドレス及びデータに対応するユニット番号ＣＰＵ＃、識別子ＶＳＣｉｄ、及び要素番号ＥＬＭについて、それぞれの直前の値と比較し、それらが全て一致する場合にデッドロック状態と判定するデッドロック判定回路８２２と、再送時にＭａｓｔｅｒ−Ｕｎｉｔ５及びＳｌａｖｅ−Ｕｎｉｔ６による要素リクエストの発行タイミングをずらすための遅延値ＢＳＹＣＮＴを生成する乱数発生回路８２３と、カウンタ回路８２１及びデッドロック判定回路８２２の動作を制御する検出期間制御回路８２４とを有する構成である。
【０１０６】
カウンタ回路８２１は、セレクタ、レジスタ（検出期間ｃｎｔ）、減算器（−１）、及び比較器（＝０）を備え、カウント開始時に外部から供給されるデッドロック検出期間信号の値（定数）を検出期間ｃｎｔに取り込み、その値からカウント（ｄｅｃｒｅｍｅｎｔ）を開始し、カウント値＝０を検出したときにその結果を検出期間制御回路８２４へ出力する。
【０１０７】
デッドロック判定回路８２２は、再送ｉｄレジスタ（ＲＥＧ）及び比較器（＝）を備え、要素の再送時にＭＭＵ入力ＲＱレジスタ７１から転送されるＣＰＵ＃／ＶＳＣｉｄ／ＥＬＭを再送ｉｄＲＥＧで保持し、次の再送時に転送されるＣＰＵ＃／ＶＳＣｉｄ／ＥＬＭと再送ｉｄＲＥＧに保持した値とを比較し、それらが全て一致した場合にデッドロック検出信号をアクティブにする。
【０１０８】
検出期間制御回路８２４は、ラッチ回路、論理和ゲート、及び論理積ゲートを備え、デッドロック判定回路８２２によりＣＰＵ＃／ＶＳＣｉｄ／ＥＬＭの一致が検出された場合にカウンタ回路８２１にカウントを開始させ、カウント終了時（デッドロック検出期間の終了時）、あるいはデッドロック検出信号のアクティブ時でカウンタ回路８２１の検出期間ｃｎｔ、及びデッドロック判定回路の再送ｉｄＲＥＧをリセットする。
【０１０９】
このような構成では、図７に示すように、任意の組のＭａｓｔｅｒ−Ｕｎｉｔ５及びＳｌａｖｅ−Ｕｎｉｔ６から発行された要素リクエストによりＶＳＣアドレスバッファ７２がオーバーフローし、要素の再送が発生（ＲＱ再送発生）すると、検出期間制御回路８２４がデッドロック検出中信号をアクティブに設定し、カウンタ回路８２１にカウントを開始させてデッドロックの検出処理を開始する。デッドロックの検出処理はカウンタ回路８２１の検出期間ｃｎｔの出力値が０になったときに終了する。
【０１１０】
デッドロック検出期間長は、１組のＭａｓｔｅｒ−Ｕｎｉｔ５及びＳｌａｖｅ−Ｕｎｉｔ６で発生する再送サイクルの周期の最長値（定数）に設定され、その値を、例えば情報処理装置が備える不図示のＲＯＭに格納しておく。そして、情報処理装置の電源投入時にデッドロック検出期間信号として該ＲＯＭからカウンタ回路８２１へ供給する。
【０１１１】
デッドロック判定回路８２２は、デッドロック検出処理の開始時に再送された要素リクエストに対応するユニット番号ＣＰＵ＃、識別子ＶＳＣｉｄ、及び要素番号ＥＬＭを再送ｉｄＲＥＧに保存しておく。そして、２回目の再送時のユニット番号ＣＰＵ＃、識別子ＶＳＣｉｄ、及び要素番号ＥＬＭと再送ｉｄＲＥＧに保持した値とを比較し、それらの値が全て一致したときにデッドロック状態であると判定する（デッドロック検出）。
【０１１２】
このとき、デッドロック判定回路８２２の出力信号であるデッドロック検出信号がアクティブになり、乱数発生回路８２３で生成された遅延値ＢＳＹＣＮＴが再送リクエストレジスタ８１に格納される。再送リクエストレジスタ８１は、ＲＱ再送要求信号に該遅延値ＢＳＹＣＮＴを添付し、Ｍａｓｔｅｒ−Ｕｎｉｔ５及びＳｌａｖｅ−Ｕｎｉｔ６に送出する（ＲＱ再送要求）。同時に、検出期間制御回路８２４はデッドロック検出中信号をリセットして処理を終了する。
【０１１３】
ＲＱ再送要求信号を受信したＭａｓｔｅｒ−Ｕｎｉｔ５のＭａｓｔｅｒ側ＲＱ制御回路５２及びＳｌａｖｅ−Ｕｎｉｔ６のＳｌａｖｅ側ＲＱ制御回路６２は、遅延値ＢＳＹＣＮＴだけ要素リクエストの発行タイミングをずらし、指定された要素を再送する。
【０１１４】
このような処理を行うことで、１回目の再送サイクルよりも２回目の再送サイクルが長くなり再送サイクルの繰り返し周期が乱れるため、デッドロック状態から抜け出ることができる。
【０１１５】
但し、上述したデッドロックの回避方法は、複数組のＭａｓｔｅｒ−Ｕｎｉｔ５及びＳｌａｖｅ−Ｕｎｉｔ６間で発生する再送サイクルの周期を乱す方法であるため、ＣＰＵが１つのＭａｓｔｅｒ−Ｕｎｉｔと１つのＳｌａｖｅ−Ｕｎｉｔで構成される場合に発生するデッドロック状態は回避することができない。したがって、ＶＳＣアドレスバッファ７２のエントリ数は、少なくとも（Ｍａｓｔｅｒ−Ｕｎｉｔ５で一度に処理する要素数）＋１だけ必要である。
【０１１６】
本実施形態の情報処理装置によれば、ＶＳＣアドレスバッファ７２を効率よく使用することが可能になり、ＶＳＣアドレスバッファ７２の数を低減できるため、ＭＭＵ７のコストを低減することができる。
【０１１７】
【発明の効果】
本発明は以上説明したように構成されているので、以下に記載する効果を奏する。
【０１１８】
ベクトル・スキャッタ命令により非同期動作ユニットからそれぞれ発行される複数の要素の書き込みリクエストのうち、格納先アドレスが一致し、かつ要素番号順に処理されていない場合に、要素番号が若い要素の書き込みリクエストに対応して生成される書き込み許可信号の出力を抑止することで、複数の非同期動作ユニット間で発生する処理順序の逆転による影響を排除することが可能になる。したがって、ＣＰＵを複数の非同期動作ユニットで構成できるため、各ユニットの規模を小さくすることが可能になり、ユニット（ＬＳＩ）の歩留まりや外部端子数が低減されて、コストが低減される。
【０１１９】
また、ＶＳＣアドレスバッファで複数の非同期動作ユニットから送信される格納先アドレスをそれぞれ保持し、ＶＳＣアドレスバッファがオーバーフローを起こした場合に、該オーバーフローさせたベクトル・スキャッタ命令を発行した非同期動作ユニットへ要素の再送を要求するＶＳＣアドレスバッファ制御部を備え、非同期動作ユニットは、自ユニットが発行した前記ベクトル・スキャッタ命令で指定された各要素をそれぞれ保持するリトライバッファを有し、メインメモリ制御部から要素の再送が要求された場合にリトライバッファに保持した要素をメインメモリ制御部へ再送することで、ＶＳＣアドレスバッファを効率よく使用することができるため、ＶＳＣアドレスバッファの低減が可能になり、ＭＭＵのコストを低減することができる。
【図面の簡単な説明】
【図１】本発明の情報処理装置の第１の実施の形態の構成を示すブロック図である。
【図２】図１に示したＭＭＣの一構成例を示すブロック図である。
【図３】図１に示した情報処理装置のＶＳＣ命令による動作の様子を示す模式図である。
【図４】本発明の情報処理装置の第２の実施の形態のＣＰＵ構成を示すブロック図である。
【図５】本発明の情報処理装置の第２の実施の形態のＭＭＣ構成を示すブロック図である。
【図６】図５に示したデッドロック検出制御部の構成を示すブロック図である。
【図７】図６に示したデッドロック検出制御部の動作の様子を示す模式図である。
【図８】ベクトル方式の計算機で使用されるＶＳＣ命令の仕様を示す模式図である。
【図９】ＣＰＵがＭａｓｔｅｒ−Ｕｎｉｔ及びＳｌａｖｅ−Ｕｎｉｔから構成される場合にＶＳＣ命令により要素が主記憶装置へ格納される様子を示す模式図である。
【符号の説明】
１、５　　Ｍａｓｔｅｒ−Ｕｎｉｔ
２、６　　Ｓｌａｖｅ−Ｕｎｉｔ
３、７　　ＭＭＣ
４　　ＭＭ
１１　　命令制御部
１２、５２　　Ｍａｓｔｅｒ側ＲＱ制御回路
１３、２３、５３　　ベクトルレジスタ
１４、２４、５４　　ＰＮＵ
１５、２５　　ＣＰＵ出力ＲＱレジスタ
２２　　Ｓｌａｖｅ側リクエスト制御回路
３１１、３１２、７１　　ＭＭＵ入力ＲＱレジスタ
３２、７２　　ＶＳＣアドレスバッファ
３３　　リクエスト分配回路
３４　　順序監視回路
３５　　ＷＥレジスタ
３６　　ａｄｒ／ｄａｔａレジスタ
３７、７７　　比較回路
３８、７８　　ＷＥ抑止回路
３９、７９　　バッファ制御回路
５４　　ＰＮＵ
５６　　制御用リトライバッファ
５７　　アドレス・データ用リトライバッファ
５８　　第１のセレクタ
５９　　第２のセレクタ
８０　　ＶＳＣアドレスバッファ制御部
８１　　再送リクエストレジスタ
８２　　デッドロック検出制御部
１００　　ＣＰＵ
２００　　ＭＭＵ
３７１　　要素番号比較器
３７２　　アドレス比較器
３７３　　論理積ゲート
３８１　　論理和ゲート
３８２、７７３　　第１の論理積ゲート
３８３、７９１　　第２の論理積ゲート
３９１　　書き込み制御部
３９２　　デコード回路
３９３　　ＶＳＣｉｄレジスタ
３９４　　ＶＳＣｉｄ比較器
３９５　　インバータ
３３１　　ＷＥ２×８スイッチ
３３２　　ａｄｒ／ｄａｔａ２×８スイッチ
７７１　　ユニット番号比較器
７７２　　識別子比較器
８２１　　カウンタ回路
８２２　　デッドロック判定回路
８２３　　乱数発生回路
８２４　　検出期間制御回路
【図１】
2004062311.tif 000003
【図２】
2004062311.tif 000004
【図３】
2004062311.tif 000005
【図４】
2004062311.tif 000006
【図５】
2004062311.tif 000007
【図６】
2004062311.tif 000008
【図７】
2004062311.tif 000009
【図８】
2004062311.tif 000010
【図９】
2004062311.tif 000011