(57)【特許請求の範囲】
【請求項１】
主記憶メモリを共有する複数のＣＰＵを備え、各ＣＰＵがスカラ処理手段とベクトル処理手段を有してなる共有メモリ型ベクトル処理システムにおいて、
前記各ＣＰＵ相互を、前記各ＣＰＵから生成するベクトル処理命令を各ＣＰＵに転送するためのパスによって接続し、
前記各ＣＰＵは、
発行元のＣＰＵを識別する発行元ＣＰＵ情報を付加したベクトル処理命令を発行し、前記パスを介して自ＣＰＵを含む全てのＣＰＵに対して転送する発行手段と、
転送された前記ベクトル処理命令を、前記発行元ＣＰＵ情報に基づいて各ＣＰＵ毎に対応した複数の命令スタックに格納し、前記複数の命令スタック毎の優先順位と前記ベクトル処理手段のリソース情報に基づいて、前記ベクトル処理命令に基づく命令発行を制御するベクトル処理命令制御手段とを備えることを特徴とする共有メモリ型ベクトル処理システム。
【請求項２】
前記各ＣＰＵのベクトル処理命令制御手段は、
各ＣＰＵ毎に対応した複数の命令スタックと、
転送された前記ベクトル処理命令に含まれる前記発行元ＣＰＵ情報を検出し、前記ベクトル処理命令を対応する前記命令スタックに格納する命令発行元検出手段と、
複数の前記複数の命令スタック毎に、何れの命令スタックのベクトル処理命令に基づく命令発行を優先するか決定する調停手段と、
前記調停手段による決定内容と前記ベクトル処理手段のリソース情報に基づいて、前記ベクトル処理命令に基づく命令発行を前記ベクトル処理手段に対して行なう命令発行処理手段とを備えることを特徴とする請求項１に記載の共有メモリ型ベクトル処理システム。
【請求項３】
主記憶メモリを共有する複数のＣＰＵを備え、各ＣＰＵがスカラ処理手段とベクトル処理手段を有してなる共有メモリ型ベクトル処理システムの制御方法であって、
前記各ＣＰＵ相互を、前記各ＣＰＵから生成するベクトル処理命令を各ＣＰＵに転送するためのパスによって接続し、
前記各ＣＰＵにおいて、
発行元のＣＰＵを識別する発行元ＣＰＵ情報を付加したベクトル処理命令を発行し、前記パスを介して自ＣＰＵを含む全てのＣＰＵに対して転送し、
転送された前記ベクトル処理命令を、前記発行元ＣＰＵ情報に基づいて各ＣＰＵ毎に対応した複数の命令スタックに格納し、前記複数の命令スタック毎の優先順位と前記ベクトル処理手段のリソース情報に基づいて、前記ベクトル処理命令に基づく命令発行を制御することを特徴とする共有メモリ型ベクトル処理システムの制御方法。
【請求項４】
前記各ＣＰＵにおいて、
転送された前記ベクトル処理命令に含まれる前記発行元ＣＰＵ情報を検出し、前記ベクトル処理命令を対応する命令スタックに格納し、
複数の前記複数の命令スタック毎に、何れの命令スタックのベクトル処理命令に基づく命令発行を優先するか決定し、
前記決定内容と前記ベクトル処理手段のリソース情報に基づいて、前記ベクトル処理命令に基づく命令発行を前記ベクトル処理手段に対して行なうことを特徴とする請求項３に記載の共有メモリ型ベクトル処理システムの制御方法。
【請求項５】
主記憶メモリを共有する複数のＣＰＵを備え、各ＣＰＵがスカラ処理手段とベクトル処理手段を有してなる共有メモリ型ベクトル処理システムの前記ＣＰＵに、
発行元のＣＰＵを識別する発行元ＣＰＵ情報を付加したベクトル処理命令を発行し、相互に接続されるパスを介して自ＣＰＵを含む全てのＣＰＵに対して転送する処理と、
転送された前記ベクトル処理命令を、前記発行元ＣＰＵ情報に基づいて各ＣＰＵ毎に対応した複数の命令スタックに格納し、前記複数の命令スタック毎の優先順位と前記ベクトル処理手段のリソース情報に基づいて、前記ベクトル処理命令に基づく命令発行を制御する処理とを実行させるためのプログラムを格納した記憶媒体。
【請求項６】
前記ＣＰＵに、
転送された前記ベクトル処理命令に含まれる前記発行元ＣＰＵ情報を検出し、前記ベクトル処理命令を対応する命令スタックに格納する処理と、
複数の前記複数の命令スタック毎に、何れの命令スタックのベクトル処理命令に基づく命令発行を優先するか決定する処理と、
前記決定内容と前記ベクトル処理手段のリソース情報に基づいて、前記ベクトル処理命令に基づく命令発行を前記ベクトル処理手段に対して行なう処理とを実行させることを特徴とする請求項５に記載のプログラムを格納した記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、主記憶メモリを共有する複数のＣＰＵを備え、各ＣＰＵがスカラ処理部と複数のベクトルパイプラインを構成するベクトル処理部を有してなる共有メモリ型ベクトル処理システムに関する。
【０００２】
【従来の技術】
図９に、従来のベクトル処理装置におけるＣＰＵを用いた共有メモリ型並列処理システムの構成を示す。このシステムでは、複数のＣＰＵ１００ａ〜１００ｎが１つの主記憶装置２００を共有して接続されている。
【０００３】
各ＣＰＵ１００ａ〜１００ｎの詳細構成図を図１０に示す。各ＣＰＵ１００ａ〜１００ｎは、図示のように、スカラ処理部１０１、命令制御部１０２、ベクトル処理部１０４ａ〜１０４ｎ及びメモリアクセスネットワーク部１０５を備えて構成される。
【０００４】
スカラ処理部１０１から発行された外部処理命令「ＥＸ−ＲＱ」は、命令制御部１０２へと転送される。命令制御部１０２では、自ＣＰＵ内部にのみ存在するベクトル処理部１０４ａ〜１０４ｎのリソースを管理することによりベクトル処理命令「Ｖ−ＲＱ」を発行する。
【０００５】
従って、各ＣＰＵ１００ａ〜１００ｎ内部におけるスカラ処理部１０１とベクトルパイプラインとの構成は、常に一定であり変更することができない。
【０００６】
従来のベクトル処理装置の例が例えば特開昭６３−１２７３６８号及び特開昭６３−１０２６３号等に開示されている。これらの公報に開示されるベクトル処理装置においては、何れもスカラ処理部とベクトルパイプラインとの構成が一定であり、スカラ処理部に付随するベクトルパイプライン数を用途に応じて柔軟に変更できる構成とはなっていない。
【０００７】
【発明が解決しようとする課題】
上述した従来のベクトル処理装置においては、以下のような問題点がある。
【０００８】
第１の問題点は、実行するアプリケーションによってベクトル化率等が異なるのに対して、適切なベクトル処理リソースを割り当てられないことである。
【０００９】
その理由は、各ＣＰＵにおけるベクトルパイプライン数は常に一定であるため、想定しているよりも低いベクトル化率のアプリケーションを実行した場合、ベクトルリソースの余剰が発生してしまう。また逆に、より高いベクトル化率やより長いベクトル長のアプリケーションを実行しても、予め固定的に構成されたベクトルパイプライン構成によりベクトル処理性能の上限が固定されているため、更なる処理性能向上を行なうことができないからある。
【００１０】
第２の問題点は、ＬＳＩの集積度が向上してもスカラ処理部とベクトルパイプラインとを別のＬＳＩとして開発する必要があることである。
【００１１】
その理由は、ＬＳＩの集積度が向上し、スカラ処理部とベクトルパイプラインの１本分程度が１チップ化できるようになってきたが、従来の多重ベクトルパイプライン構成では、このようなＬＳＩを複数接続する際に各ＬＳＩに存在するスカラ処理部は全く利用できずハードウェア量を無駄に使用することになるため、従来通りスカラ処理部とベクトルパイプラインとを別のＬＳＩとして開発することになってしまう。ところが、この方法ではＬＳＩの開発工数が増大すること、ＬＳＩの開発品種数が増加すること、１種のＬＳＩ当たりの生産個数が減少することなどコスト増となる項目が多くなる。
【００１２】
本発明の目的は、スカラ処理部に付随するベクトルパイプライン数を用途に応じて柔軟に変更できるベクトル処理システムを提供することにある。
【００１３】
本発明の他の目的は、独立する各プロセッサのスカラ処理部からの単一のベクトルパイプラインを共有しているように動作するベクトル処理システムを提供することにある。
【００１４】
【課題を解決するための手段】
上記目的を達成する請求項１の本発明は、主記憶メモリを共有する複数のＣＰＵを備え、各ＣＰＵがスカラ処理手段とベクトル処理手段を有してなる共有メモリ型ベクトル処理システムにおいて、前記各ＣＰＵ相互を、前記各ＣＰＵから生成するベクトル処理命令を各ＣＰＵに転送するためのパスによって接続し、前記各ＣＰＵは、発行元のＣＰＵを識別する発行元ＣＰＵ情報を付加したベクトル処理命令を発行し、前記パスを介して自ＣＰＵを含む全てのＣＰＵに対して転送する発行手段と、転送された前記ベクトル処理命令を、前記発行元ＣＰＵ情報に基づいて各ＣＰＵ毎に対応した複数の命令スタックに格納し、前記複数の命令スタック毎の優先順位と前記ベクトル処理手段のリソース情報に基づいて、前記ベクトル処理命令に基づく命令発行を制御するベクトル処理命令制御手段とを備えることを特徴とする。
【００１５】
請求項２の本発明による共有メモリ型ベクトル処理システムは、前記各ＣＰＵのベクトル処理命令制御手段は、各ＣＰＵ毎に対応した複数の命令スタックと、転送された前記ベクトル処理命令に含まれる前記発行元ＣＰＵ情報を検出し、前記ベクトル処理命令を対応する前記命令スタックに格納する命令発行元検出手段と、複数の前記複数の命令スタック毎に、何れの命令スタックのベクトル処理命令に基づく命令発行を優先するか決定する調停手段と、前記調停手段による決定内容と前記ベクトル処理手段のリソース情報に基づいて、前記ベクトル処理命令に基づく命令発行を前記ベクトル処理手段に対して行なう命令発行処理手段とを備えることを特徴とする。
【００１６】
請求項３の本発明は、主記憶メモリを共有する複数のＣＰＵを備え、各ＣＰＵがスカラ処理手段とベクトル処理手段を有してなる共有メモリ型ベクトル処理システムの制御方法であって、前記各ＣＰＵ相互を、前記各ＣＰＵから生成するベクトル処理命令を各ＣＰＵに転送するためのパスによって接続し、前記各ＣＰＵにおいて、発行元のＣＰＵを識別する発行元ＣＰＵ情報を付加したベクトル処理命令を発行し、前記パスを介して自ＣＰＵを含む全てのＣＰＵに対して転送し、転送された前記ベクトル処理命令を、前記発行元ＣＰＵ情報に基づいて各ＣＰＵ毎に対応した複数の命令スタックに格納し、前記複数の命令スタック毎の優先順位と前記ベクトル処理手段のリソース情報に基づいて、前記ベクトル処理命令に基づく命令発行を制御することを特徴とする。
【００１７】
請求項４の本発明による共有メモリ型ベクトル処理システムの制御方法は、前記各ＣＰＵにおいて、転送された前記ベクトル処理命令に含まれる前記発行元ＣＰＵ情報を検出し、前記ベクトル処理命令を対応する命令スタックに格納し、複数の前記複数の命令スタック毎に、何れの命令スタックのベクトル処理命令に基づく命令発行を優先するか決定し、前記決定内容と前記ベクトル処理手段のリソース情報に基づいて、前記ベクトル処理命令に基づく命令発行を前記ベクトル処理手段に対して行なうことを特徴とする。
【００１８】
請求項５の本発明は、主記憶メモリを共有する複数のＣＰＵを備え、各ＣＰＵがスカラ処理手段とベクトル処理手段を有してなる共有メモリ型ベクトル処理システムの前記ＣＰＵに、発行元のＣＰＵを識別する発行元ＣＰＵ情報を付加したベクトル処理命令を発行し、相互に接続されるパスを介して自ＣＰＵを含む全てのＣＰＵに対して転送する処理と、転送された前記ベクトル処理命令を、前記発行元ＣＰＵ情報に基づいて各ＣＰＵ毎に対応した複数の命令スタックに格納し、前記複数の命令スタック毎の優先順位と前記ベクトル処理手段のリソース情報に基づいて、前記ベクトル処理命令に基づく命令発行を制御する処理とを実行させるためのプログラムを格納した記憶媒体である。
【００１９】
請求項６の本発明は、前記ＣＰＵに、転送された前記ベクトル処理命令に含まれる前記発行元ＣＰＵ情報を検出し、前記ベクトル処理命令を対応する命令スタックに格納する処理と、
複数の前記複数の命令スタック毎に、何れの命令スタックのベクトル処理命令に基づく命令発行を優先するか決定する処理と、前記決定内容と前記ベクトル処理手段のリソース情報に基づいて、前記ベクトル処理命令に基づく命令発行を前記ベクトル処理手段に対して行なう処理とを実行させることを特徴とする。
【００２０】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。図１は、本発明の第１の実施の形態に係るベクトル処理システム全体の構成図である。
【００２１】
本実施の形態に係るベクトル処理システムは、複数のＣＰＵ１０ａ〜１０ｎを備え、これらのＣＰＵ１０ａ〜１０ｎが単一の主記憶装置２０を共有する共有メモリ型並列処理システムを構成している。各ＣＰＵ１０ａ〜１０ｎは、ベクトルリクエストバス３０を介して互いに接続され、相互にベクトル処理に関するリクエストやリプライの送受信を行なうことができる。
【００２２】
上記各ＣＰＵ１０ａ〜１０ｎの詳細な構成を図２に基づいて説明する。
【００２３】
ＣＰＵ１０ａ〜１０ｎは、１つのスカラ処理部１１、メモリアクセス命令制御部１２、ベクトル処理命令制御部１３、複数のベクトル処理部１４ａ〜１４ｎ、そしてメモリアクセスネットワーク部１５から構成されている。
【００２４】
スカラ処理部１１から外部に発行される外部処理命令「ＥＸ−ＲＱ」は、メモリアクセス制御部１２を通して、メモリアクセスネットワーク部１５経由で主記憶装置２０へと転送されるか、ベクトルリクエストバス３０を経由して全てのＣＰＵ１０ａ〜１０ｎのベクトル処理命令制御部１３へと送られ、ベクトル処理部１４ａ〜１４ｎへと発行される。
【００２５】
ここで、図３は、ベクトル処理命令制御部１３の詳細な構成を示すブロック図である。
【００２６】
ベクトル処理命令制御部１３は、２つのレジスタ４２、４３と、それらのレジスタ４２、４３の内容の比較を行なう比較器４５と、ベクトルリクエストバス３０経由で転送されてきたベクトル処理命令の内容を分離する命令発行元情報抽出部４１により得られたベクトル処理命令の発行元情報と一方のレジスタ４２の内容を比較するための比較器４４、命令無効化処理部４６、命令スタック４７、リソース管理／命令発行処理部４８を有している。
【００２７】
命令発行元情報抽出部４１から得られたベクトル処理命令と比較器４４の出力は、無効化処理部４６に入力された後に、命令スタック４７に格納される。命令スタック４７に格納されたベクトル処理命令は、ベクトル処理部１４ａ〜１４ｎからのリソース情報等と共に、リソース管理／命令発行処理部４８に入力されて、ベクトル処理部１４ａ〜１４ｎに対して命令発行が行なわれる。
【００２８】
次いで、上記のように構成される第１の実施の形態によるベクトル処理システムの動作について説明する。
【００２９】
図２において、スカラ処理部１１では命令の解読を行ないスカラ処理命令の実行処理を行なう。ここで、主記憶装置２０へのアクセス命令やベクトル処理命令などといった、スカラ処理部１１では実行処理できない命令が出現した場合、スカラ処理部１１はこれらの命令を外部処理命令「ＥＸ−ＲＱ」としてメモリアクセス命令制御部１２へと転送する。
【００３０】
メモリアクセス命令制御部１２では、スカラ処理部１１から受け取った外部処理命令「ＥＸ−ＲＱ」を解読し、主記憶アクセス系の命令「Ｍ−ＲＱ」であれば、そのままメモリアクセスネットワーク部１５に対して命令の発行を行なう。
【００３１】
一方、ベクトル処理命令であった場合には、これをベクトルリクエストバス３０に送出すると共に、自身のベクトル処理命令制御部１３に対してもベクトルリクエストバス３０を経由して発行を行なう。
【００３２】
ベクトル処理命令制御部１３では、メモリアクセス命令制御部１２から送られてきた自ＣＰＵが発行したベクトル処理命令と他のＣＰＵからベクトルリクエストバス３０を経由して転送されてきたベクトル処理命令とを受け取り、自ＣＰＵ内のベクトル処理部１４ａ〜１４ｎに対してそのリソース状態を管理しながら命令を発行する。
【００３３】
メモリアクセスネットワーク部１５は、メモリアクセス命令制御部１２からの主記憶アクセス命令「Ｍ−ＲＱ」を受け取り、主記憶装置２０に対して命令を発行すると共に、主記憶装置２０からの読み出しデータを受け取り、命令種別に応じてデータをスカラ処理部１１もしくはベクトル処理部１４ａ〜１４ｎに対して戻す。
【００３４】
次で、図３と図４のフローチャートを参照して、ベクトル処理命令制御部１３の動作について述べる。
【００３５】
ベクトル処理命令制御部１３に送られてきたベクトル処理命令は、命令発行元情報抽出部４１にて命令を送出したＣＰＵに関する情報とベクトル処理命令本体とに分離される（ステップ４０１）。
【００３６】
ベクトル処理命令制御部１３には、自ＣＰＵに対してマスターとして外部より設定されたＣＰＵの番号を記憶しているレジスタ４２と、自ＣＰＵ番号を記憶しているレジスタ４３とが備えられている。これら２つのレジスタ４２、４３に対しては、システムの起動前に初期化動作として上記番号をそれぞれ設定しておくものとする。
【００３７】
本実施の形態では、共有メモリ型並列処理システムの各ＣＰＵ１０ａ〜１０ｎをマスターＣＰＵとスレーブＣＰＵとに分けて設定する。マスターＣＰＵはスカラ処理を実行すると共に、ベクトル処理命令を他のＣＰＵに対して発行することができる。これに対してスレーブＣＰＵは、マスターＣＰＵから転送されてきたベクトル処理命令を受け取り、マスターＣＰＵ内のベクトル処理部１４ａ〜１４ｎと同期して多重ベクトルパイプラインとして動作することになる。この時、スレーブＣＰＵのスカラ処理部１１は休止状態として、そのベクトル処理部１４ａ〜１４ｎとベクトル処理命令制御部１３、及びメモリアクセスネットワーク部１５のみが有効に機能することになる。
【００３８】
マスターＣＰＵ番号を格納したレジスタ４２と自ＣＰＵ番号を格納したレジスタ４３の内容は、比較器４５で比較され（ステップ４０２）、不一致の場合には、自ＣＰＵがスレーブＣＰＵであると判断され、自ＣＰＵのスカラ処理部１１に対して動作を停止するよう制御する（ステップ４０３）。
【００３９】
一方、ベクトルリクエストバス３０を通して転送されたベクトル処理命令から命令発行元情報抽出部４１において取り出された命令発行元ＣＰＵ番号と、マスターＣＰＵ番号を格納しているレジスタ４２の内容とが、もう１つの比較器４４で比較される（ステップ４０４）。この際の比較結果と、命令発行元情報抽出部４１にて分離されたベクトル処理命令は、無効化処理部４６に入力される（ステップ４０５）。
【００４０】
比較器４４による比較結果が不一致となっていた場合（ステップ４０６）、入力されたベクトル処理命令はスレーブとして動作している自ＣＰＵのマスターＣＰＵから発行されたベクトル処理命令ではないため、無効化処理部４６にて無効化される（ステップ４０７）。具体的には、比較器４４による比較結果に応じて、ベクトル処理命令に有効又は無効を示すフラグを付し、無効化処理部４６では、そのフラグによって有効なベクトル処理命令のみを命令スタック４７に格納する。無効なベクトル処理命令は命令スタック４７に格納しない。
【００４１】
当然のことながら、自ＣＰＵがマスターＣＰＵとして動作しており、転送されてきたベクトル処理命令が自ＣＰＵの発行した命令であれば、比較器４４の結果は一致を示すので無効化されることはない。
【００４２】
無効化処理部４６で無効化されなかったベクトル処理命令は、自ＣＰＵ内のベクトル処理部１４ａ〜１４ｎで処理すべき命令であることから、命令スタック４７に受付順に格納される（ステップ４０８）。無効化されたベクトル処理命令は、命令スタック４７に格納されずに破棄される。
【００４３】
リソース管理／命令発行制御部４８では、自ＣＰＵ内のベクトル処理部のリソース１４ａ〜１４ｎを管理している。命令スタック４７に格納された命令は、このリソース管理／命令発行処理部４８において優先順位、ならびにベクトル処理部１４ａ〜１４ｎのリソース状況に応じて、発行が可能な順に自ＣＰＵのベクトル処理部１４ａ〜１４ｎに対して命令発行が行なわれる（ステップ４０９）。ここでは、命令スタック４７への格納順には従わずに命令の追い越し発行も可能である。
【００４４】
なお、各スレーブＣＰＵにおけるベクトル処理が終了した時点で、処理の終了がマスタＣＰＵに通知される。マスタＣＰＵでは、全てのスレーブＣＰＵからの終了通知を受け取ったことを確認した上で次のベクトル処理命令の発行を行なうことになる。
【００４５】
以上により、マスターＣＰＵに設定されたＣＰＵと、このＣＰＵ番号をマスターＣＰＵ番号として記憶している複数のＣＰＵは、一体となって動作する多重ベクトルパイプラインのプロセッサと見なすことができるようになる。
【００４６】
この時、マスターＣＰＵのスカラ処理部１１だけが機能しており、スレーブＣＰＵのスカラ処理部１１はベクトル処理命令制御部１３からの制御信号「ＨＡＬＴ」により機能が停止されている。
【００４７】
マスターＣＰＵのスカラ処理部１１から発行されたベクトル処理命令は、ベクトルリクエストバス３０を通して自ＣＰＵを含めてスレーブＣＰＵの各ベクトル処理命令制御部１３において有効と判断され、これら複数のＣＰＵにおけるベクトル処理部１４ａ〜１４ｎにおいて並列動作によって処理されることになる。
【００４８】
仮に、１つのＣＰＵに１つのベクトル処理部が存在する場合、主記憶装置２０を共有しているＣＰＵ数を３２とすると、通常は「１スカラ処理部＋１ベクトル処理部」のＣＰＵが３２個存在するシステムとして固定化されてしまうが、１つのマスターＣＰＵに１つのスレーブＣＰＵを対応させた場合、「１スカラ処理部＋２ベクトル処理部」のＣＰＵが１６個存在するシステムのように動作させることが可能となる。
【００４９】
また、マスターＣＰＵとスレーブＣＰＵの設定内容により、「１スカラ処理部＋１ベクトル処理部」のＣＰＵと「１スカラ処理部＋４ベクトル処理部」のＣＰＵを１つのシステムの中に混在させるような構成も取ることができる。すなわち、マスターＣＰＵとスレーブＣＰＵの設定内容により、種々の構成を構築できるようになる。
【００５０】
次いで、第２の実施の形態に係るベクトル処理システムについて説明する。
【００５１】
図５は、第２の実施の形態によるベクトル処理システムのベクトル処理命令制御部１３の構成を示すブロック図である。ベクトル処理命令制御部１３以外の構成については、上述の第１の実施の形態と同様である。
【００５２】
図５に示すベクトル処理命令制御部１３では、マスターＣＰＵ番号を記憶しているレジスタ４２ａと自ＣＰＵ番号を記憶しているレジスタ４３ａを有しており、この２つのレジスタ４２ａ、４３ａの内容を比較する比較器４４ａの出力に基づいて自ＣＰＵのスカラ処理部１１の機能を停止させることについては、図３の構成の場合と同じである。また、このベクトル処理命令制御部１３には、レジスタ４２ａのマスターＣＰＵ番号とベクトル処理命令に含まれる発行元ＣＰＵ情報とを比較する機能と、比較結果に基づいて命令発行を制御する機能を有するリソース管理／命令発行制御部４８ａが備えられている。
【００５３】
このベクトル処理命令制御部１３の動作を図６のフローチャートを参照して説明する。この構成例では、図６に示すように、ベクトルリクエストバス３０を通って転送されてきたベクトル処理命令は、何も処理をせずそのまま命令スタック４７ａに順番に格納される（ステップ６０１）。従って、命令スタック４７ａには、ベクトル処理命令と共に、発行元ＣＰＵ情報を格納しておくレコードが設けられている。
【００５４】
また、マスターＣＰＵ番号を格納したレジスタ４２ａと自ＣＰＵ番号を格納したレジスタ４３ａの内容は、比較器４５ａで比較され（ステップ６０２）、不一致の場合には、自ＣＰＵがスレーブＣＰＵであると判断され、自ＣＰＵのスカラ処理部１１に対して動作を停止するよう制御する（ステップ６０３）。
【００５５】
次で、リソース管理／命令発行制御部４８ａでは、ベクトル処理部への命令発行を行なう際に、ベクトル処理命令に付随している発行元ＣＰＵ情報と、マスターＣＰＵ番号を記憶しているレジスタ４２ａの内容を比較することにより（ステップ６０４）、番号が不一致である場合には不適切なベクトル処理命令の発行を抑止すると共に、命令スタック４７ａ中の該当エリアを解放する（ステップ６０５）。すなわち、命令スタック４７ａに格納する前に無効化処理を行なうのではなく、実際に命令発行を行なう際に無効化処理を行なうように構成している。
【００５６】
また、番号が一致する場合には、第１の実施の形態におけるリソース管理／命令発行制御部４８と同様に、命令スタック４７ａに格納された命令が、優先順位、ならびにベクトル処理部１４ａ〜１４ｎのリソース状況に応じて、発行が可能な順に自ＣＰＵのベクトル処理部１４ａ〜１４ｎに対して命令発行が行なわれる（ステップ６０６）。
【００５７】
上述した第１の実施の形態においては、ベクトル処理命令の命令発行元ＣＰＵ番号を抽出する命令発行元情報抽出部４１、命令発行元ＣＰＵ番号とマスタＣＰＵ番号を比較する比較器４４及び比較結果によってベクトル処理命令の無効化を行なう無効化処理部４６を備えることで命令スタック４７に無効なベクトル処理命令を格納しない構成としたのに対して、この第２の実施の形態では、送られた発行元ＣＰＵ情報を含むベクトル処理命令を全て命令スタック４７ａに格納し、リソース管理命令発行処理部４８ａによる命令発行処理の段階で、適切なベクトル処理命令のみを発行し、不適切なベクトル処理命令について命令スタック４７ａのエリアを解放する構成としている。従って、第１の実施の形態と第２の実施の形態とを比較した場合、ハードウェア量については第２に実施の形態の方が少なくて済み、命令スタックの記憶容量については第１の実施の形態の方が小さくすることができる。
【００５８】
一方、よりスカラ性能を重視したシステム構成として複数の独立したスカラ処理部から共有される多重ベクトルパイプラインという構成も可能である。すなわち、複数のプロセッサ中に存在するベクトルパイプラインを全てまとめて１つの多重ベクトルパイプラインと見なし、独立する各プロセッサのスカラ処理部から単一のベクトルパイプラインを共有しているように動作するシステム構成である。
【００５９】
これを実現した第３の実施の形態に係るベクトル処理システムのベクトル処理命令制御部１３の構成を図７に示す。なお、ベクトル処理命令制御部１３以外の構成については、上述した第１の実施の形態と同一であるので共通の符号を付して説明を省略する。
【００６０】
第３の実施の形態に係るベクトル処理システムにおいて、ベクトル処理命令制御部１３は、命令発行元検出部６１と、各ＣＰＵ毎に設けられた命令スタック６３ａ〜６３ｎと、命令スタック６３ａ〜６３ｎに設定された優先順位に基づいて発行順の調停を行なう調停部６２と、リソース管理／命令発行処理部６４とで構成される。
【００６１】
以下、本実施の形態によるベクトル処理命令制御部１３の動作を図８のフローチャートを参照して説明する。
【００６２】
ベクトルリクエストバス３０を通して転送されてくるベクトル処理命令は、命令発行元検出部６１を経由して各ＣＰＵ毎に設けられた命令スタック６３ａ〜６３ｎに格納される。格納されたベクトル処理命令は、調停部６２による調停結果と各ベクトル処理部１４ａ〜１２ｎからのリソース情報「Ｖ−ＲＰ」と共に、リソース管理／命令発行制御部６４に入力された後に各ベクトル処理部１４ａ〜１４ｎに対して発行される。
【００６３】
ここでは、ベクトルリクエストバス３０を通して転送されてきたベクトル処理命令は、命令発行元検出部６１で発行元のＣＰＵ番号が検査される（ステップ８０１）。その後、ベクトル処理命令は、発行元ＣＰＵ毎に設けられた命令スタック６３ａ〜６３ｎに分かれて格納される（ステップ８０２）。
【００６４】
そして、何れかの命令スタック６３ａ〜６３ｎから命令を発行するかどうかを、優先順位によって競合調停する調停部６２により決定する（ステップ８０３）。調停部６２は、例えばラウンドロビン方式によって何れかの命令スタック６３ａ〜６３ｎから命令を発行するかを決定する。この調停部６２の出力と、各ベクトル処理部のリソース情報とを用いて、リソース管理／命令発行制御部６４で発行命令を決定する（ステップ８０４）。
【００６５】
この際、発行元ＣＰＵが同一のベクトル処理命令については、命令スタックへの格納順序を越えて追い越し発行することはできないが、発行元ＣＰＵが異なっていればリソースの状況によって追い越し発行を行なってもデータ競合は起こらないため問題にはならない。従って、各命令スタック間での格納順序については、特に記憶しておく必要はない。また、発行元ＣＰＵが同一のベクトル処理命令に関しても、アクセスアドレスを比較することで同一アドレスに対するアクセスを回避するための相応のリソース管理手段を準備すれば、追い越し発行が可能である。
【００６６】
以上により、各ＣＰＵから発行されたベクトル処理命令は全てのＣＰＵのベクトル処理命令制御部に転送され発行処理が行なわれることになる。この時ベクトル処理命令の発行元ＣＰＵ別に管理されるため、各ＣＰＵに存在するベクトル処理部は全ＣＰＵで統合された単一のベクトル処理部として、全ＣＰＵのスカラ処理部から共有されているように動作することになる。
【００６７】
上述したベクトル処理システムは、ハードウェア的に実現することは勿論として、図２に示すように、磁気ディスク、半導体メモリその他の記録媒体１８に記録された、上述した各機能を実現するための制御プログラムによってソフトウェア的に実現することも可能である。この制御プログラムは、記録媒体１８からＣＰＵに読み込まれ、ＣＰＵの動作を制御することにより、上述したベクトル処理命令制御の機能を実現する。すなわち、図４、図６及び図８に示される処理を実行する。
【００６８】
なお、本発明は上述した実施の形態に限定されるものではなく、その技術思想の範囲内において様々に変形して実施することができる。例えば、図１におけるシステム全体構成図において、各ＣＰＵ１０ａ〜１０ｎ間でベクトル処理命令を転送するためのベクトルリクエストバス３０は、単一バスとして記述されている。しかしながら、この転送手段は単一バスに限定されるものではなく、多重バスやクロスバスイッチなどあらゆる接続手段によって実現できることは明らかである。
【００６９】
【発明の効果】
以上説明したように本発明のベクトル処理システムとその制御方法によれば、以下に述べるような効果が得られる。
【００７０】
第１に、よりスカラ処理性能を重視したアプリケーション向けに、複数のスカラ処理手段から共有される単一のベクトル処理手段を有した共有メモリ型並列処理システムを提供することができる。
【００７１】
これは、各ＣＰＵのベクトル処理命令制御にＣＰＵ毎のベクトル処理命令スタックを準備し、各ＣＰＵ間で転送されてきたベクトル処理命令をその発行元ＣＰＵ毎に分類して命令スタックに格納して、各命令スタック内の命令の競合を調停しながら順次ベクトル処理部に対してベクトル処理命令を発行することで、全ＣＰＵ中に存在するベクトル処理手段があたかも単一のベクトル処理手段として全てのＣＰＵから共有されているように動作することが出来るためである。
【００７２】
これにより、ベクトル処理命令の出現頻度が極めて低いスカラスループット性能重視のアプリケーション分野に対しても、ベクトル処理リソースを有効利用してより効率の良い処理が可能なシステムを提供することができる。
【００７３】
第２に、スカラ処理手段とベクトル処理手段とを１チップに集積化したＬＳＩを開発することが可能になり、開発工数やコストを軽減することができる。
【００７４】
これは、スカラ処理手段に対する多重ベクトルパイプラインの構成を外部からの設定により柔軟に変更できるようになったために、これまでは困難であったスカラ処理手段とベクトル処理手段を同一のＬＳＩに集積化することが可能になり、その結果ＬＳＩの開発品種数が削減できることによる。
【図面の簡単な説明】
【図１】  本発明の第１の実施の形態に係るベクトル処理システム全体の構成図である。
【図２】  上記第１の実施の形態に係るベクトル処理システムの各ＣＰＵの詳細な構成を示すブロック図である。
【図３】  上記第１の実施の形態に係るベクトル処理システムのベクトル処理命令制御部の詳細を示すブロック図である。
【図４】  上記第１の実施の形態に係るベクトル処理システムのベクトル処理命令制御部の動作を説明するフローチャートである。
【図５】  第２の実施の形態に係るベクトル処理システムのベクトル処理命令制御部の構成を示すブロック図である。
【図６】  上記第２の実施の形態に係るベクトル処理システムのベクトル処理命令制御部の動作を説明するフローチャートである。
【図７】  第３の実施の形態に係るベクトル処理システムのベクトル処理命令制御部の構成を示すブロック図である。
【図８】  上記第３の実施の形態に係るベクトル処理システムのベクトル処理命令制御部の動作を説明するフローチャートである。
【図９】  従来のベクトル処理装置におけるＣＰＵを用いた共有メモリ型並列処理システムの構成を示すブロック図である。
【図１０】  図９に示すベクトル処理装置の各ＣＰＵ０の構成を示すブロック図である。
【符号の説明】
１０ａ〜１０ｎ  ＣＰＵ
１１  スカラ処理部
１２  メモリアクセス命令制御部
１３  ベクトル処理命令制御部
１４ａ〜１４ｎ  ベクトル処理部
１５  メモリアクセスネットワーク部
２０  主記憶装置
３０  ベクトルリクエストバス
４１  命令発行元情報抽出部
４２，４３、４２ａ，４３ａ  レジスタ
４４，４５、４４ａ  比較器
４６  無効化処理部
４７、４７ａ  命令スタック
４８、４８ａ  リソース管理命令発行処理部
６１  命令発行元検出
６２  調停部
６３ａ〜６３ｎ  命令スタック
６４  リソース管理／命令発行処理部
【図１】
0003760995.tif 000002
【図２】
0003760995.tif 000003
【図３】
0003760995.tif 000004
【図４】
0003760995.tif 000005
【図５】
0003760995.tif 000006
【図６】
0003760995.tif 000007
【図７】
0003760995.tif 000008
【図８】
0003760995.tif 000009
【図９】
0003760995.tif 000010
【図１０】
0003760995.tif 000011