(57)【要約】【課題】マスク反転命令の実行時間を短縮することにより、マスク反転命令の次のマスクを使用する命令の待ち時間を短縮する。【解決手段】マスク発行部２００に、正論理マスクデータおよび、負論理マスクデータを格納するベクトルマスクレジスタ２７０と、マスク生成命令により生成されたマスクデータ正論理マスクデータ、および、その反転値を格納するベクトルマスクコントロールレジスタ２５０とを設け、マスク反転命令の直前に実行されたマスク生成命令の対象マスクレジスタのレジスタ番号とマスク反転命令の対象マスクレジスタのレジスタ番号とが同一であったら、マスク反転命令を実行しない。ベクトルレジスタ部３００はベクトル演算部４００で実行された次の命令の演算結果を、ベクトルマスクコントロールレジスタ２５０内のマスクデータあるいはその反転値を使用して格納するか否かを決定する。【選択図】      図１
2008033446.tif 000002
【特許請求の範囲】
【請求項１】
複数のマスクレジスタと、ベクトルマスクコントロールレジスタとを備え、「前記ベクトルマスクコントロールレジスタに格納されたマスクデータを使用してベクトル演算を行うベクトル演算命令」、「右辺で指定された前記マスクレジスタ内のマスクデータの反転値を右辺で指定された前記マスクレジスタ、および、前記ベクトルマスクコントロールレジスタにマスクデータとして格納するマスク反転命令」、および、「ベクトルレジスタ内のデータをマスクデータとして前記ベクトルマスクコントロールレジスタ、および、指定された前記マスクレジスタに格納するマスク生成命令」を実行するベクトル制御回路であって、マスク反転命令の実行に際し、マスク反転命令の右辺で指定された前記マスクレジスタと、左辺で指定された前記マスクレジスタと、最も最近に実行された「マスク生成命令またはマスク反転命令を含む前記ベクトルマスクコントロールレジスタを更新する命令」によりマスクデータが更新されたマスクレジスタとが、すべて同一であった場合に、前記マスクレジスタ、および、前記ベクトルマスクコントロールレジスタへの反転値の格納を抑止し、前記ベクトルマスクコントロールレジスタ内のマスクデータの負論理値をマスク反転命令以降に使用することを特徴とするベクトル制御回路。
【請求項２】
マスク反転命令によりセットされ前記ベクトルマスクコントロールレジスタ内のマスクデータの正論理値・負論理値のどちらを使用するのかを示すＶＣ選択情報保持回路を備え、前記ベクトルマスクコントロールレジスタ内のマスクデータの正論理値・負論理値の使用の選択を前記ＶＣ選択情報保持回路より行うことを特徴とする請求項１記載のベクトル制御回路。
【請求項３】
マスク反転命令によりセットされ前記マスクレジスタ内のマスクデータの正論理値・負論理値のどちらを使用するのかを示す複数の前記マスクレジスタ対応のＶＭｘ選択情報保持回路を備え、マスク反転命令の実行に際し、右辺で指定された前記マスクレジスタ内のマスクデータの正論理値・負論理値のどちらの選択し反転値をマスクデータとして格納することを特徴とする請求項１、または、２記載のベクトル制御回路。
【請求項４】
前記ベクトルマスクコントロールレジスタが、マスクデータの正論理値を格納する正論理マスクコントロールレジスタと、マスクデータの負論理値を格納する負論理マスクコントロールレジスタとを備えることを特徴とする請求項１ないし３のいずれかに記載のベクトル制御回路。
【請求項５】
複数の前記マスクレジスタが、マスクデータの正論理値を格納する正論理マスクレジスタと、マスクデータの負論理値を格納する負論理マスクレジスタとを備えることを特徴とする請求項１ないし４のいずれかに記載のベクトル制御回路。
【請求項６】
請求項１ないし５のいずれかに記載のベクトル制御回路と、前記ベクトル制御回路の制御にしたがって動作する１以上の前記ベクトルレジスタと、前記ベクトル制御回路の制御にしたがって演算を行う演算部とを有することを特徴とするベクトル処理装置。
【請求項７】
１以上のベクトルレジスタと、複数のマスクレジスタと、ベクトルマスクコントロールレジスタとを備え、「前記ベクトルマスクコントロールレジスタに格納されたマスクデータを使用してベクトル演算を行うベクトル演算命令」、「右辺で指定された前記マスクレジスタ内のマスクデータの反転値を右辺で指定された前記マスクレジスタ、および、前記ベクトルマスクコントロールレジスタにマスクデータとして格納するマスク反転命令」、および、「前記ベクトルレジスタ内のデータをマスクデータとして前記ベクトルマスクコントロールレジスタ、および、指定された前記マスクレジスタに格納するマスク生成命令」を実行するベクトル処理装置におけるベクトル制御方法であって、
マスク反転命令の実行に際し、マスク反転命令の右辺で指定された前記マスクレジスタと、左辺で指定された前記マスクレジスタと、最も最近に実行された「マスク生成命令またはマスク反転命令を含む前記ベクトルマスクコントロールレジスタを更新する命令」によりマスクデータが更新されたマスクレジスタとが、すべて同一であった場合に、前記マスクレジスタ、および、前記ベクトルマスクコントロールレジスタへの反転値の格納を抑止し、前記ベクトルマスクコントロールレジスタ内のマスクデータの負論理値をマスク反転命令以降に使用する手順を含むことを特徴とするベクトル制御方法。
【請求項８】
マスク反転命令によりセットされ前記ベクトルマスクコントロールレジスタ内のマスクデータの正論理値・負論理値のどちらを使用するのかを示すＶＣ選択情報保持回路を備える前記ベクトル処理装置における前記ベクトル制御方法であって、前記ベクトルマスクコントロールレジスタ内のマスクデータの正論理値・負論理値の使用の選択を前記ＶＣ選択情報保持回路より行う手順を含むことを特徴とする請求項７記載のベクトル制御方法。
【請求項９】
マスク反転命令によりセットされ前記マスクレジスタ内のマスクデータの正論理値・負論理値のどちらを使用するのかを示す複数の前記マスクレジスタ対応のＶＭｘ選択情報保持回路を備える前記ベクトル処理装置におけるベクトル制御方法であって、マスク反転命令の実行に際し、右辺で指定された前記マスクレジスタ内のマスクデータの正論理値・負論理値のどちらの選択し反転値をマスクデータとして格納する手順を含むことを特徴とする請求項７、または、８記載のベクトル制御方法。
【請求項１０】
１以上のベクトルレジスタと、複数のマスクレジスタと、ベクトルマスクコントロールレジスタとを備え、「前記ベクトルマスクコントロールレジスタに格納されたマスクデータを使用してベクトル演算を行うベクトル演算命令」、「右辺で指定された前記マスクレジスタ内のマスクデータの反転値を右辺で指定された前記マスクレジスタ、および、前記ベクトルマスクコントロールレジスタにマスクデータとして格納するマスク反転命令」、および、「前記ベクトルレジスタ内のデータをマスクデータとして前記ベクトルマスクコントロールレジスタ、および、指定された前記マスクレジスタに格納するマスク生成命令」を実行するベクトル処理装置におけるベクトル制御プログラムであって、
マスク反転命令の実行に際し、マスク反転命令の右辺で指定された前記マスクレジスタと、左辺で指定された前記マスクレジスタと、最も最近に実行された「マスク生成命令またはマスク反転命令を含む前記ベクトルマスクコントロールレジスタを更新する命令」によりマスクデータが更新されたマスクレジスタとが、すべて同一であった場合に、前記マスクレジスタ、および、前記ベクトルマスクコントロールレジスタへの反転値の格納を抑止し、前記ベクトルマスクコントロールレジスタ内のマスクデータの負論理値をマスク反転命令以降に使用する手順を前記ベクトル処理装置に実行させることを特徴とするベクトル制御プログラム。
【請求項１１】
マスク反転命令によりセットされ前記ベクトルマスクコントロールレジスタ内のマスクデータの正論理値・負論理値のどちらを使用するのかを示すＶＣ選択情報保持回路を備える前記ベクトル処理装置における前記ベクトル制御プログラムであって、前記ベクトルマスクコントロールレジスタ内のマスクデータの正論理値・負論理値の使用の選択を前記ＶＣ選択情報保持回路より行う手順を前記ベクトル処理装置に実行させることを特徴とする請求項１０記載のベクトル制御プログラム。
【請求項１２】
マスク反転命令によりセットされ前記マスクレジスタ内のマスクデータの正論理値・負論理値のどちらを使用するのかを示す複数の前記マスクレジスタ対応のＶＭｘ選択情報保持回路を備える前記ベクトル処理装置におけるベクトル制御プログラムであって、マスク反転命令の実行に際し、右辺で指定された前記マスクレジスタ内のマスクデータの正論理値・負論理値のどちらの選択し反転値をマスクデータとして格納する手順を前記ベクトル処理装置に実行させることを特徴とする請求項１０、または、１１記載のベクトル制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベクトル制御回路、ベクトル処理装置、ベクトル制御方法、および、ベクトル制御プログラムに関し、特に、性能を向上したベクトル制御回路、ベクトル処理装置、ベクトル制御方法、および、ベクトル制御プログラムに関する。
【背景技術】
【０００２】
従来、ベクトル処理装置では、ＦＯＲＴＯＲＡＮ言語等で記述された科学技術計算プログラムの条件文を高速に処理するためにマスクレジスタが用いられている。マスクレジスタは、条件文の成立・不成立を要素対応に“１”または“０”で記憶しておくことで、演算の抑止制御を行っている。
【０００３】
たとえば、条件分の条件が成立したときに“１”にセットされ、演算結果をベクトルレジスタに格納する際にマスクレジスタの示す値が“１”の要素の演算結果のみがベクトルレジスタに格納するよう制御される。
【０００４】
この場合、条件が不成立の時に別の演算を行うようプログラミングされていた場合には、マスクレジスタの内容を反転させる命令（マスク反転命令）を実行した後に“１”が立っている要素のみ別の演算結果をデータレジスタに格納するという手順がとられる（たとえば、特許文献１）。
【０００５】
【特許文献１】特開昭６０−１３６８７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述した従来の技術には、マスク反転命令の次のマスクを使用する命令の待ち時間が長く、性能が低下するという問題があった。その理由は、マスク反転命令の実行時間が長いからである。
【０００７】
本発明の目的は、マスク反転命令の実行時間を短縮することにより、マスク反転命令の次のマスクを使用する命令の待ち時間を短縮し、性能を向上させたベクトル制御回路、ベクトル処理装置、ベクトル制御方法、および、ベクトル制御プログラムを提供することである。
【課題を解決するための手段】
【０００８】
本発明の第１のベクトル制御回路は、複数のマスクレジスタと、ベクトルマスクコントロールレジスタとを備え、「前記ベクトルマスクコントロールレジスタに格納されたマスクデータを使用してベクトル演算を行うベクトル演算命令」、「右辺で指定された前記マスクレジスタ内のマスクデータの反転値を右辺で指定された前記マスクレジスタ、および、前記ベクトルマスクコントロールレジスタにマスクデータとして格納するマスク反転命令」、および、「ベクトルレジスタ内のデータをマスクデータとして前記ベクトルマスクコントロールレジスタ、および、指定された前記マスクレジスタに格納するマスク生成命令」を実行するベクトル制御回路であって、マスク反転命令の実行に際し、マスク反転命令の右辺で指定された前記マスクレジスタと、左辺で指定された前記マスクレジスタと、最も最近に実行された「マスク生成命令またはマスク反転命令を含む前記ベクトルマスクコントロールレジスタを更新する命令」によりマスクデータが更新されたマスクレジスタとが、すべて同一であった場合に、前記マスクレジスタ、および、前記ベクトルマスクコントロールレジスタへの反転値の格納を抑止し、前記ベクトルマスクコントロールレジスタ内のマスクデータの負論理値をマスク反転命令以降に使用する。
【０００９】
本発明の第２のベクトル制御回路は、前記第１のベクトル制御回路であって、マスク反転命令によりセットされ前記ベクトルマスクコントロールレジスタ内のマスクデータの正論理値・負論理値のどちらを使用するのかを示すＶＣ選択情報保持回路を備え、前記ベクトルマスクコントロールレジスタ内のマスクデータの正論理値・負論理値の使用の選択を前記ＶＣ選択情報保持回路より行う。
【００１０】
本発明の第３のベクトル制御回路は、前記第１、または、第２のベクトル制御回路であって、マスク反転命令によりセットされ前記マスクレジスタ内のマスクデータの正論理値・負論理値のどちらを使用するのかを示す複数の前記マスクレジスタ対応のＶＭｘ選択情報保持回路を備え、マスク反転命令の実行に際し、右辺で指定された前記マスクレジスタ内のマスクデータの正論理値・負論理値のどちらの選択し反転値をマスクデータとして格納する。
【００１１】
本発明の第４のベクトル制御回路は、前記第１ないし第３のいずれかのベクトル制御回路であって、前記ベクトルマスクコントロールレジスタが、マスクデータの正論理値を格納する正論理マスクコントロールレジスタと、マスクデータの負論理値を格納する負論理マスクコントロールレジスタとを備える。
【００１２】
本発明の第５のベクトル制御回路は、前記第１ないし第４のいずれかのベクトル制御回路であって、複数の前記マスクレジスタが、マスクデータの正論理値を格納する正論理マスクレジスタと、マスクデータの負論理値を格納する負論理マスクレジスタとを備える。
【００１３】
本発明のベクトル処理装置は、前記第１ないし第５のいずれかに記載のベクトル制御回路と、前記ベクトル制御回路の制御にしたがって動作する１以上の前記ベクトルレジスタと、前記ベクトル制御回路の制御にしたがって演算を行う演算部とを有する。
【００１４】
本発明の第１のベクトル制御方法は、１以上のベクトルレジスタと、複数のマスクレジスタと、ベクトルマスクコントロールレジスタとを備え、「前記ベクトルマスクコントロールレジスタに格納されたマスクデータを使用してベクトル演算を行うベクトル演算命令」、「右辺で指定された前記マスクレジスタ内のマスクデータの反転値を右辺で指定された前記マスクレジスタ、および、前記ベクトルマスクコントロールレジスタにマスクデータとして格納するマスク反転命令」、および、「前記ベクトルレジスタ内のデータをマスクデータとして前記ベクトルマスクコントロールレジスタ、および、指定された前記マスクレジスタに格納するマスク生成命令」を実行するベクトル処理装置におけるベクトル制御方法であって、マスク反転命令の実行に際し、マスク反転命令の右辺で指定された前記マスクレジスタと、左辺で指定された前記マスクレジスタと、最も最近に実行された「マスク生成命令またはマスク反転命令を含む前記ベクトルマスクコントロールレジスタを更新する命令」によりマスクデータが更新されたマスクレジスタとが、すべて同一であった場合に、前記マスクレジスタ、および、前記ベクトルマスクコントロールレジスタへの反転値の格納を抑止し、前記ベクトルマスクコントロールレジスタ内のマスクデータの負論理値をマスク反転命令以降に使用する手順を含む。
【００１５】
本発明の第２のベクトル制御方法は、前記第１のベクトル制御方法であって、マスク反転命令によりセットされ前記ベクトルマスクコントロールレジスタ内のマスクデータの正論理値・負論理値のどちらを使用するのかを示すＶＣ選択情報保持回路を備える前記ベクトル処理装置における前記ベクトル制御方法であって、前記ベクトルマスクコントロールレジスタ内のマスクデータの正論理値・負論理値の使用の選択を前記ＶＣ選択情報保持回路より行う手順を含む。
【００１６】
本発明の第３のベクトル制御方法は、前記第１、または、第２のベクトル制御方法であって、マスク反転命令によりセットされ前記マスクレジスタ内のマスクデータの正論理値・負論理値のどちらを使用するのかを示す複数の前記マスクレジスタ対応のＶＭｘ選択情報保持回路を備える前記ベクトル処理装置におけるベクトル制御方法であって、マスク反転命令の実行に際し、右辺で指定された前記マスクレジスタ内のマスクデータの正論理値・負論理値のどちらの選択し反転値をマスクデータとして格納する手順を含む。
【００１７】
本発明の第１のベクトル制御プログラムは、１以上のベクトルレジスタと、複数のマスクレジスタと、ベクトルマスクコントロールレジスタとを備え、「前記ベクトルマスクコントロールレジスタに格納されたマスクデータを使用してベクトル演算を行うベクトル演算命令」、「右辺で指定された前記マスクレジスタ内のマスクデータの反転値を右辺で指定された前記マスクレジスタ、および、前記ベクトルマスクコントロールレジスタにマスクデータとして格納するマスク反転命令」、および、「前記ベクトルレジスタ内のデータをマスクデータとして前記ベクトルマスクコントロールレジスタ、および、指定された前記マスクレジスタに格納するマスク生成命令」を実行するベクトル処理装置におけるベクトル制御プログラムであって、マスク反転命令の実行に際し、マスク反転命令の右辺で指定された前記マスクレジスタと、左辺で指定された前記マスクレジスタと、最も最近に実行された「マスク生成命令またはマスク反転命令を含む前記ベクトルマスクコントロールレジスタを更新する命令」によりマスクデータが更新されたマスクレジスタとが、すべて同一であった場合に、前記マスクレジスタ、および、前記ベクトルマスクコントロールレジスタへの反転値の格納を抑止し、前記ベクトルマスクコントロールレジスタ内のマスクデータの負論理値をマスク反転命令以降に使用する手順を前記ベクトル処理装置に実行させる。
【００１８】
本発明の第２のベクトル制御プログラムは、前記第１のベクトル制御プログラムであって、マスク反転命令によりセットされ前記ベクトルマスクコントロールレジスタ内のマスクデータの正論理値・負論理値のどちらを使用するのかを示すＶＣ選択情報保持回路を備える前記ベクトル処理装置における前記ベクトル制御プログラムであって、前記ベクトルマスクコントロールレジスタ内のマスクデータの正論理値・負論理値の使用の選択を前記ＶＣ選択情報保持回路より行う手順を前記ベクトル処理装置に実行させる。
【００１９】
本発明の第３のベクトル制御プログラムは、前記第１、または、第２のベクトル制御プログラムであって、マスク反転命令によりセットされ前記マスクレジスタ内のマスクデータの正論理値・負論理値のどちらを使用するのかを示す複数の前記マスクレジスタ対応のＶＭｘ選択情報保持回路を備える前記ベクトル処理装置におけるベクトル制御プログラムであって、マスク反転命令の実行に際し、右辺で指定された前記マスクレジスタ内のマスクデータの正論理値・負論理値のどちらの選択し反転値をマスクデータとして格納する手順を前記ベクトル処理装置に実行させる。
【発明の効果】
【００２０】
本発明は、性能を向上させるという効果を持つ。その理由は、マスク反転命令の実行時間を短縮することにより、マスク反転命令の次のマスクを使用する命令の待ち時間を短縮するからである。
【発明を実施するための最良の形態】
【００２１】
まず、本発明の概要について説明する。本発明は、「ベクトルマスクコントロールレジスタに格納されたマスクデータを使用してベクトル演算を行うベクトル演算命令」、「右辺で指定されたマスクレジスタ内のマスクデータの反転値を右辺で指定されたマスクレジスタ、および、ベクトルマスクコントロールレジスタにマスクデータとして格納するマスク反転命令」、および、「ベクトルレジスタ内のデータをマスクデータとして前記ベクトルマスクコントロールレジスタ、および、指定された前記マスクレジスタに格納するマスク生成命令」を実行するベクトル処理装置に関するものである。
【００２２】
次に、本発明の第１の実施の形態について図面を参照して詳細に説明する。図１は、本発明の第１の実施の形態のベクトル処理装置５００の構成を示すブロック図である。図１を参照すると、ベクトル処理装置５００は、命令発行部１００と、マスク発行部２００と、ベクトルレジスタ部３００と、演算部４００とを含む。なお、命令発行部１００と、マスク発行部２００とをまとめてベクトル制御回路６００と呼ぶ。
【００２３】
命令発行部１００は、図示しないメモリからロードした命令列を解読し、ベクトル演算命令その他を識別して実行指示を出す。特に、命令発行部１００は、ベクトルマスク操作指示、または、ベクトルマスク読み出し指示を信号線３１を通じてマスク発行部２００に出力する。また、命令発行部１００は、ベクトル演算指示を信号線３２を通じてベクトルレジスタ部３００、および、演算部４００に送出する。ベクトルマスク操作命令はベクトル演算命令と同時に起動されることは無い。
【００２４】
マスク発行部２００は、ベクトルマスク操作指示を入力すると、所望のマスク操作を実行する。マスク発行部２００は、ベクトルマスク読み出し指示を入力すると、ベクトルマスクコントロールレジスタ２５０（後述する正論理マスクコントロールレジスタ２５１（ＶＣＴ）、負論理マスクコントロールレジスタ２５２（ＶＣＮ）を含む）から読み出したマスクデータを信号線３５を通じてベクトルレジスタ部３００に出力する。また、マスク発行部２００は、ＶＦＭＫ命令（マスク作成命令）実行時には、演算部４００から信号線３３を通じてマスクデータを受け取り、指定のベクトルマスクレジスタ２７０（ＶＭ；ベクトルマスク）、および、ベクトルマスクコントロールレジスタ２５０に格納する。
【００２５】
ベクトルレジスタ部３００は、複数の要素から構成されるベクトルデータを格納するベクトルレジスタＶＲ０、ベクトルレジスタＶＲ１、ベクトルレジスタＶＲ２、および、ベクトルレジスタＶＲ３を含む。ベクトルレジスタ部３００は、命令発行部１００からのベクトル演算指示に従って、指定のベクトルレジスタＶＲ０〜ＶＲ３からベクトルデータを読み出して演算部４００に出力する。ベクトルレジスタ部３００は、ベクトル演算結果を信号線３４を通じて入力し、指定のベクトルレジスタＶＲ０〜ＶＲ３に格納する。この時、ベクトルレジスタ部３００は、信号線３５を通じて入力したマスクデータの値が“１”である要素についてのみベクトル演算結果を書き込む処理を行うことによってマスク演算を実現している。
【００２６】
演算部４００は、命令発行部１００から信号線３２を通じてベクトル演算指示を入力し、指定のベクトルレジスタＶＲ０〜ＶＲ３間で各種演算処理を行う。演算部４００は、ＶＦＭＫ命令（マスク作成命令）実行時には、指定のベクトルレジスタＶＲ０〜ＶＲ３間で比較処理を行い、比較結果のマスクデータを信号線３３を通じてマスク発行部２００に出力する。
【００２７】
次に、命令発行部１００の詳細について説明する。図２は、図１の命令発行部１００の詳細を示すブロック図である。
【００２８】
図２を参照すると、命令発行部１００は、命令スタック回路１０１、ＶＣ更新命令識別回路１０２、ＶＭ番号値保持回路１０３、ＮＥＧＭ命令識別回路１０４、オペランドＶＭ番号認識回路１０５、ＶＭ番号比較回路１０６、選択情報更新回路１０７、ＶＭ選択情報出力回路１０８、オペランドＶＭ番号認識回路１０９、命令発行回路１１０、発行待ち命令格納レジスタ１５１、直前ＶＭ番号レジスタ１５２、ＶＣ選択情報レジスタ１５３、ＶＭ０選択情報レジスタ１５４、ＶＭ１選択情報レジスタ１５５、および、ＶＭ２選択情報レジスタ１５６を含む。
【００２９】
命令スタック回路１０１は、後続命令をスタックする。発行待ち命令格納レジスタ１５１は、発行可能となるまで命令を保持する。ＶＣ更新命令識別回路１０２は、ＶＦＭＫ命令に代表されるマスク生成命令を識別して、ベクトルマスクコントロールレジスタ２５０（ＶＣ）と同じ値を持つベクトルマスクレジスタ２７０の１つ（ＶＭｘＴ）に対応するベクトルマスクレジスタ番号を認識する。
【００３０】
ＶＭ番号値保持回路１０３は、ＶＣ更新命令識別回路１０２から有効なＶＭ番号を入力すると、次に有効なＶＭ番号が来るまで保持するよう直前ＶＭ番号レジスタ１５２を制御する。また、ＶＭ番号値保持回路１０３は、保持しているＶＭ番号値と次に来た有効なＶＭ番号値とが異なっていた場合は、信号線１３３を通じて選択情報更新回路１０７にＶＣ選択情報レジスタ１５３を“０”にセットする指示を出力する。
【００３１】
直前ＶＭ番号レジスタ１５２は、ベクトルマスクコントロールレジスタ２５０（ＶＣ）と同じ値を持つベクトルマスクレジスタ２７０の１つ（ＶＭｘＴ）に対応するベクトルマスクレジスタ番号を保持する。ＮＥＧＭ命令識別回路１０４（マスク反転命令識別）は、ＮＥＧＭ命令が発行待ち状態であることを識別する。オペランドＶＭ番号認識回路１０５は、ＮＥＧＭ命令のオペランドで指定されている２つのＶＭ番号を認識する。ＮＥＧＭ命令は次のようなオペランドを持つ。＜ＮＥＧＭ    ＶＭ０，ＶＣ←ＶＭ０＞。
【００３２】
ＶＭ番号比較回路１０６は、直前ＶＭ番号レジスタ１５２内のＶＭ番号とオペランドＶＭ番号認識回路１０５で認識された２つのＶＭ番号とを比較する。ＶＭ番号比較回路１０６は、３つのＶＭ番号が全て同じであった場合には、オペランド左辺のＶＭ番号に対応する選択情報反転指示を信号線１３１を通じて選択情報更新回路１０７に出力し、かつ、信号線１３２を通じてＮＥＧＭ命令処理済みであることを命令発行回路１１０に出力する。ＶＭ番号比較回路１０６は、３つのＶＭ番号が１つでも違っていた場合は特別な動作は行わない。
【００３３】
選択情報更新回路１０７は、信号線１３１を通じて選択情報反転指示を入力すると、指定のＶＭの選択情報の反転処理を行うと共に、ＶＣ選択情報の反転処理を行う。
また信号線１３３を通じて指示を受けたらＶＣ選択情報レジスタ１５３を“０”にセットする制御を行う。
【００３４】
ＶＣ選択情報レジスタ１５３（レジスタでなくても情報を保持する回路であればよい）は、ＶＣ選択情報を格納する。ＶＣ選択情報は、マスク発行部２００において、正論理マスクコントロールレジスタ２５１（ＶＣＴ）を使用するか、負論理マスクコントロールレジスタ（ＶＣＮ）を使用するかを選択する際に使用される。ＶＭ０選択情報レジスタ１５４、ＶＭ１選択情報レジスタ１５５、ＶＭ２選択情報レジスタ１５６（総称して、ＶＭｘ選択情報レジスタと呼ぶ；レジスタでなくても情報を保持する回路であればよい）は、ＶＭ１、２、３選択情報（総称してＶＭｘ選択情報と呼ぶ）を格納する。ＶＭｘ選択情報は、マスク発行部２００において、正論理マスクレジスタ（ＶＭｘＴ）を使用するか、負論理マスクレジスタ（ＶＭｘＮ）を使用するかを選択する際に使用される。
【００３５】
オペランドＶＭ番号認識回路１０９は、ＶＣ更新命令などでオペランドに指定されているＶＭ番号を認識し、ＶＭ番号をＶＭ選択情報出力回路１０８に出力する。ＶＭ選択情報出力回路１０８は、オペランドＶＭ番号認識回路１０９から入力したＶＭ番号に対応する選択情報を命令発行回路１１０に出力する。
【００３６】
命令発行回路１１０は、発行待ち命令格納レジスタ１５１内の命令のリソースビジー、および、コヒーレンシを管理し、命令を発行可能と判断した場合には、必要に応じてＶＣ選択情報レジスタ１５３からのＶＣ選択情報、および、ＶＭ選択情報出力回路１０８からのＶＭｘ選択情報を付与してマスク発行部２００に動作指示を出力する。命令発行回路１１０は、特に、コヒーレンシを保つため後続命令の発行を保留する機能を持つ。
【００３７】
また、命令発行回路１１０は、ベクトル演算命令に関し、信号線３２を通じてベクトルレジスタ部３００、および、演算部４００に対して動作指示を出力する。また、命令発行回路１１０は、マスク付きベクトル命令に関し、マスク発行部２００に対するマスク読み出し指示と、ベクトルレジスタ部３００に対するベクトルデータ読み出し指示と、演算部４００に対する演算開始指を連携して出力する。
【００３８】
また、命令発行回路１１０は、ＮＥＧＭ命令のようなマスク操作命令に関し、ＮＥＧＭ命令をマスク発行部２００のみに出力する。また、命令発行回路１１０は、信号線１３２を通じてＮＥＧＭ命令処理済みである通知を受けた場合は、ＮＥＧＭ命令が発行可能であった場合であっても命令の発行は行わず、ＮＥＧＭ命令発行済みとして処理する。
【００３９】
次に、マスク発行部２００の詳細について説明する。図３は、図１のマスク発行部２００の詳細を示すブロック図である。
【００４０】
図３を参照すると、マスク発行部２００は、マスク制御命令識別回路２０１、マスク演算回路２０２、マスクデータセレクタ２０３、マスクデータ反転回路２０４、マスク読み出し回路２０５、マスクレジスタセレクタ２０６、マスクレジスタセレクタ２０７、マスクレジスタセレクタ２０８、３ｗａｙセレクタ２０９、３ｗａｙセレクタ２１０、ベクトルマスクコントロールレジスタ２５０、マスク演算回路入力レジスタ２５９、マスク演算回路入力レジスタ２６０、マスク演算結果保持レジスタ２６１、および、ベクトルマスクレジスタ２７０を含む。
【００４１】
また、ベクトルマスクコントロールレジスタ２５０は、正論理マスクコントロールレジスタ２５１（ＶＣＴ）、負論理マスクコントロールレジスタ２５２（ＶＣＮ）を含む。ベクトルマスクレジスタ２７０は、正論理マスクレジスタ２５３（ＶＭ０Ｔ）、正論理マスクレジスタ２５５（ＶＭ１Ｔ）、正論理マスクレジスタ２５７（ＶＭ２Ｔ）、負論理マスクレジスタ２５４（ＶＭ０Ｎ）、負論理マスクレジスタ２５６（ＶＭ１Ｎ）、負論理マスクレジスタ２５８（ＶＭ２Ｎ）を含む。
【００４２】
命令は、ベクトルマスクコントロールレジスタ２５０のマスクデータを用いて実行される。ベクトルマスクレジスタ２７０は、ベクトルマスクコントロールレジスタ２５０に種々の値を設定するために設けられている。
【００４３】
マスク制御命令識別回路２０１は、命令発行部１００から入力した命令（指示）を解読して、マスク操作指示であった場合には、マスク演算回路２０２に制御信号を、マスク読み出し指示であった場合には、マスク読み出し回路２０５に制御信号を送出する。マスク制御命令識別回路２０１は、それと同時に、命令発行部１００からの指示に含まれているＶＣ選択情報をマスク読み出し回路２０５に、ＶＭｘ選択情報をマスクレジスタセレクタ２０６〜２０８に送ることにより、正論理マスクレジスタ２５３〜２５７、負論理マスクレジスタ２５４〜２５８のどちらから読み出したマスクを使うかを制御する。
【００４４】
また、マスク制御命令識別回路２０１は、マスク演算命令を入力すると、３ｗａｙセレクタ２０９、３ｗａｙセレクタ２１０に適切なセレクト信号を送るとともに、マスク演算回路２０２に演算種別を指示することにより所望のマスク演算を実行させる。
【００４５】
マスク演算回路２０２は、マスク制御命令識別回路２０１からの制御信号に従ってＮＥＧＭ命令（マスク反転命令）演算等のマスク演算処理を実行する。
【００４６】
マスクデータセレクタ２０３は、マスク演算回路２０２からのマスク演算結果、または、信号線３３を通じて入力したＶＦＭＫ命令（マスク生成命令）実行結果のどちらかを選択する。マスクデータセレクタ２０３の選択信号は、マスク制御命令識別回路２０１から信号線２３１を介して出力される。
【００４７】
マスクデータ反転回路２０４は、マスクデータセレクタ２０３から出力されたマスクデータを反転し、マスクデータの反転値（負論理値）を負論理マスクコントロールレジスタ２５２（ＶＣＮ）に出力する。正論理マスクコントロールレジスタ２５１（ＶＣＴ）は、マスク制御命令識別回路２０１からの制御指示に従ってマスクデータセレクタ２０３から出力されたマスクデータ（正論理値）を保持する。負論理マスクコントロールレジスタ２５２（ＶＣＮ）は、マスク制御命令識別回路２０１からの制御指示に従ってマスクデータ反転回路２０４から出力されたマスクデータの反転値（負論理値）を保持する。
【００４８】
マスク読み出し回路２０５は、マスク制御命令識別回路２０１からの制御信号、および、ＶＣ選択情報を信号線２３１を介して入力し、指示に従って正論理マスクコントロールレジスタ２５１、または、負論理マスクコントロールレジスタ２５２のどちらかの出力を選択してマスクデータとして信号線３５を介してベクトルレジスタ部３００に出力する。
【００４９】
正論理マスクレジスタ２５３、２５５、２５７（ＶＭｘ［ｘ：０，１，２］）は、マスク制御命令識別回路２０１からの制御指示に従ってマスクデータセレクタ２０３から出力されたマスクデータを保持する。負論理マスクレジスタ２５４、２５６、２５８（ＶＭｘＮ［ｘ：０，１，２］）は、マスク制御命令識別回路２０１からの制御指示に従ってマスクデータ反転回路２０４から出力されたマスクデータの反転値を保持する。
【００５０】
マスクレジスタセレクタ２０６、２０７、２０８は、マスク制御命令識別回路２０１から出力されるＶＭｘ選択情報を信号線２３１を介して入力し、指示に従ってそれぞれ正論理マスクレジスタ２５３、２５５、２５７（ＶＭｘＴ）、または、負論理マスクレジスタ２５４、２５６、２５８（ＶＭｘＮ）のどちらかを選択してマスク演算回路２０２に出力する。
【００５１】
３ｗａｙセレクタ２０９、２１０は、マスク制御命令識別回路２０１の指示に従ってマスク演算回路２０２へ入力するマスクデータをマスクレジスタセレクタ２０６、２０７、２０８の出力の中から選択する。マスク演算回路入力レジスタ２５９、２６０は、３ｗａｙセレクタ２０９、２１０の出力を一旦保持する。マスク演算結果保持レジスタ２６１は、マスク演算回路２０２の出力を一旦保持する。
【００５２】
ベクトルレジスタ部３００は、プログラム可視のベクトルレジスタＶＲ０、ベクトルレジスタＶＲ１、ベクトルレジスタＶＲ２、ベクトルレジスタＶＲ３を含む。以上詳細に構成例を述べたが、演算部４００は、当業者にとってよく知られており、詳細な構成は省略する。
【００５３】
次に本発明の第１の実施の形態の動作について図面を参照して説明する。図５は、動作を説明するためのＦＯＲＴＲＡＮのプログラムの１例を示す説明図である。図６は、図５のプログラムがコンパイルされた結果の機械語プログラム（命令列）を示す説明図である。以下、図６の命令列が実行された時の動作を説明する。
【００５４】
図６（ａ）のベクトルロード命令（ＶＬＤ命令）が実行されると、ベクトルレジスタＶＲ０に行列ｘ［Ｉ］がロードされる。図６（ｂ）のベクトルロード命令が実行されると、ベクトルレジスタＶＲ１に行列ｙ［Ｉ］がロードされる。図６（ｃ）のベクトルロード命令が実行されると、ベクトルレジスタＶＲ２に行列Ａ［Ｉ］がロードされる。図６（ｄ）のベクトルロード命令が実行されると、ベクトルレジスタＶＲ３に行列Ｂ［Ｉ］がロードされる。
【００５５】
図６（ｅ）のベクトルコンペア命令（ＶＣＭＰ命令）が実行されると、命令発行部１００からベクトルレジスタ部３００、および、演算部４００に指示が出され、ベクトルレジスタＶＲ０、ＶＲ１からベクトルデータが読み出されて演算部４００に出力される。演算部４００は、両者を要素毎に比較してその結果を信号線３４に送出する。ベクトルレジスタ部３００では信号線３４を介して受け取った比較結果を命令発行部１００の指示に従ってベクトルレジスタＶＲ０に格納する。
【００５６】
図６（ｆ）のマスク生成命令（ＶＦＭＫ命令）が実行されると、命令発行部１００からマスク発行部２００、ベクトルレジスタ部３００、および、演算部４００に指示が出され、ベクトルレジスタＶＲ０からベクトルデータが読み出されて演算部４００に出力される。演算部４００は、入力したベクトルデータからベクトルマスクを生成して信号線３３を通じてマスク発行部２００に出力する。
【００５７】
マスク発行部２００のマスク制御命令識別回路２０１が命令発行部１００からの指示を解析し、マスクデータセレクタ２０３に制御信号を出力する。マスクデータセレクタ２０３はこの制御信号に従って信号線３３からのＶＦＭＫ命令（マスク生成命令）実行結果を選択する。正論理マスクコントロールレジスタ２５１は、マスクデータセレクタ２０３の出力を受けて保持する。負論理マスクコントロールレジスタ２５２は、マスクデータセレクタ２０３の出力の反転値をマスクデータ反転回路２０４を介して保持する。
【００５８】
図４は、正論理マスクコントロールレジスタ２５１、および、負論理マスクコントロールレジスタ２５２の値の一例を示す説明図である。この時、命令発行部１００内のＶＣ更新命令識別回路１０２は、ＶＦＭＫ命令をＶＣ更新命令であると識別し、ＶＦＭＫ命令の格納先レジスタがＶＣおよびＶＭ０となっていることから、正論理マスクコントロールレジスタ２５１（ＶＣＴ）のマスクデータと同じマスクデータを格納している正論理マスクレジスタ２５３（ＶＭ０Ｔ）を示すＶＭ番号をＶＭ番号値保持回路１０３に出力する。ＶＭ番号値保持回路１０３は、ＶＭ番号を直前ＶＭ番号として直前ＶＭ番号レジスタ１５２に出力する。この結果、直前ＶＭ番号レジスタ１５２にはＶＭ番号（ＶＭ＃０）が記憶される。
【００５９】
また、この時、ＶＣ選択情報レジスタ１５３、ＶＭ０選択情報レジスタ１５４〜１５６には、初期値として正論理のマスクレジスタを選択する意味の“０”が格納されているとする。
【００６０】
図６（ｇ）のＶＡＤＤ命令が実行される際、命令発行部１００の発行待ち命令格納レジスタ１５１に（ｇ）のＶＡＤＤ命令が格納されている状態にある。命令発行回路１１０で発行可能と判断されると、マスク読み出し指示が、ＶＣ選択情報レジスタ１５３のＶＣ選択情報“０”を付与されて信号線３１を介しマスク発行部２００に出力される。
【００６１】
また、ベクトルレジスタ部３００、および、演算部４００には加算演算指示が出され、ベクトルレジスタＶＲ２、および、ベクトルレジスタＶＲ３からベクトルデータが読み出されて演算部４００に出力される。演算部４００は、両者のベクトルデータを要素毎に加算演算してその結果を信号線３４に出力する。
【００６２】
一方、マスク発行部２００のマスク読み出し回路２０５は、命令発行部１００からのマスク読み出し指示に付随するＶＣ選択情報“０”の値に従い、正論理マスクコントロールレジスタ２５１（ＶＣＴ）から読み出したマスクデータを信号線３５を通じてベクトルレジスタ部３００に出力する。
【００６３】
ベクトルレジスタ部３００のベクトルレジスタＶＲ２は、信号線３４を介して入力した演算結果を命令発行部１００の指示に従って格納するが、その際、信号線３５を通じて入力したマスクデータに従って“１”が立っている要素についてのみ演算結果を格納する。
【００６４】
図６（ｈ）のＮＥＧＭ命令（マスク反転命令）が実行される際、命令発行部１００の発行待ち命令格納レジスタ１５１に（ｈ）のＮＥＧＭ命令が格納されている状態にある。このとき、ＮＥＧＭ命令識別回路１０４が、ＮＥＧＭ命令であることを識別すると、オペランドＶＭ番号認識回路１０５は、ＮＥＧＭ命令のオペランドで指定されているＶＭ番号を認識する。本例の命令列では、「ＮＥＧＭ    ＶＣ，ＶＭ０＜−ＶＭ０」となっており、オペランドＶＭ番号認識回路１０５は、左辺、右辺ともにＶＭ番号はＶＭ＃０を使っていることを認識する。
【００６５】
ＶＭ番号比較回路１０６は、オペランドＶＭ番号認識回路１０５で認識された２つのＶＭ番号と直前ＶＭ番号レジスタ１５２に記憶されている直前ＶＭ番号との３つを比較する。本例では全て同じＶＭ番号（ＶＭ＃０）であるので、オペランド左辺のＶＭ番号に対応する選択情報反転指示を信号線１３１を通じて選択情報更新回路１０７に出力する。同時に、ＶＭ番号比較回路１０６は、信号線１３２を通じてＮＥＧＭ命令処理済みであること示す処理済み通知を命令発行回路１１０に出力する。
【００６６】
選択情報更新回路１０７は、信号線１３１を通じて受けたＶＭ０の選択情報反転指示に従い反転処理を行う。この処理によって、ＶＣ選択情報レジスタ１５３、および、ＶＭ０選択情報レジスタ１５４には、値“１”が格納される。命令発行部１００は信号線１３２を通じてＮＥＧＭ命令処理済みである処理済み通知を入力すると、ＮＥＧＭ命令が発行可能であっても、命令の発行は行わず、ＮＥＧＭ命令発行済みとして処理する。
【００６７】
もし、命令列が「ＮＥＧＭ    ＶＣ，ＶＭ１＜−ＶＭ０」である場合は、オペランドＶＭ番号認識回路１０５で認識された２つのＶＭ番号が異なるため、マスク発行部２００に対してＮＥＧＭ指示が出力される。そして、正論理マスクレジスタ２５３（ＶＭ０Ｔ）から読み出されたマスクデータがマスク演算回路２０２で反転された反転値が、正論理マスクコントロールレジスタ２５１（ＶＣＴ）、および、正論理マスクレジスタ２５５（ＶＭ１Ｔ）に格納される。さらに、反転値の反転値が負論理マスクコントロールレジスタ２５２（ＶＣＮ）、および、負論理マスクレジスタ２５６（ＶＭ１Ｎ）に格納される。
【００６８】
この動作が行われた場合、正論理マスクコントロールレジスタ２５１（ＶＣＴ）、負論理マスクコントロールレジスタ２５２（ＶＣＮ）に値がセットされる前に、後続のＶＳＵＢ命令などが実行されると一貫性の無いマスクデータが読み出されることになってしまうので、これを防ぐためにたとえば、後続のＶＳＵＢ命令の発行を遅らせる必要が生じる。この時、ＶＣ選択情報レジスタ１５３内のＶＣ選択情報は、反転処理が施されないため“０”を保っている。
【００６９】
図６（ｉ）のＶＳＵＢ命令が実行される際、命令発行部１００の発行待ち命令格納レジスタ１５１に（ｇ）のＶＳＵＢ命令が格納されている。命令発行回路１１０で命令が発行可能と判断されると、マスク読み出し指示が、ＶＣ選択情報レジスタ１５３内のＶＣ選択情報“１”を付与されてマスク発行部２００に出力される。
【００７０】
また、ベクトルレジスタ部３００、および、演算部４００には減算演算指示が出され、ベクトルレジスタＶＲ２、および、ベクトルレジスタＶＲ３からベクトルデータが読み出されて演算部４００に送られる。演算部４００は、両者のベクトルデータを要素毎に減算演算して、その結果を信号線３４に出力する。
【００７１】
一方、マスク発行部２００のマスク読み出し回路２０５は、命令発行部１００から入力したマスク読み出し指示に付随するＶＣ選択情報“１”の値に従い、負論理マスクコントロールレジスタ２５２（ＶＣＮ）から読み出したマスクデータを信号線３５を通じてベクトルレジスタ部３００に出力する。
【００７２】
ベクトルレジスタ部３００のベクトルレジスタＶＲ２は、信号線３４を介して入力した演算結果を命令発行部１００の指示に従って格納するが、その際、信号線３５を通じて入力したマスクデータに従って“１”が立っている要素についてのみ演算結果を格納する。
【００７３】
図７は、図６（ｉ）のＶＳＵＢ命令が終了した時点でのベクトルレジスタＶＲ２の内容を示す説明図である。図８は、３つのＶＭ番号に異なる値がある場合と、３つのＶＭ番号が同一である場合との比較を示すタイムチャートである。
【００７４】
（ｈ）のＮＥＧＭ命令に際し、３つのＶＭ番号に異なる値がある場合においては、コヒーレンシを保つために、正論理マスクコントロールレジスタ２５１（ＶＣＴ）への書き込みが行われた後に後続の（ｉ）ＶＳＵＢ命令でＶＣの読み出しを行う必要があることから、２クロック分の期間を空けて（ｉ）ＶＳＵＢ命令を発行するよう制御される。
【００７５】
しかし、３つのＶＭ番号が同一である場合には、（ｈ）ＮＥＧＭ命令を実際に発行せず、予め用意してある負論理マスクコントロールレジスタ２５２（ＶＣＮ）のマスクデータを読み出すよう制御することによって、コヒーレンシを損なうことなく、連続して（ｉ）ＶＳＵＢ命令を発行することが可能となる。
【００７６】
ＮＥＧＭ命令を本発明の技術無しに実行した場合に必要なクロック数が本例よりも多くなるケースや、図５のプログラムが多重ＬＯＯＰで頻繁に使われるケースでは効果が大きくなる。
【００７７】
次に、本発明の第１の実施の形態の動作について、図面を用いてさらに詳細に説明する。図９は、実行される命令列を示す説明図である。図１０は、本発明の第１の実施の形態の詳細動作を示すタイムチャートである。
【００７８】
図９を参照すると、図６の命令列に対し、（ｘ）ＮＥＧＭが追加されている。図１０を参照すると、（ａ）ＶＬＤ〜（ｅ）ＶＣＭＰまでは省略して（ｆ）ＶＦＭＫが発行待ち命令格納レジスタ１５１にセットされた時点から以降が記載されている。
【００７９】
（ｆ）ＶＦＭＫ命令が、発行待ち命令格納レジスタ１５１にセットされると、ＶＣ更新命令識別回路１０２は、ＶＣ更新命令であることを識別する。次のクロックで、正論理マスクコントロールレジスタ２５１（ＶＣＴ）と同じ値を持つ正論理マスクレジスタ２５３（ＶＭ０Ｔ）のＶＭ番号である“ＶＭ＃０”が、直前ＶＭ番号レジスタ１５２にセットされる。
【００８０】
この次のタイミングで、（ｇ）ＶＡＤＤ命令が発行待ち命令格納レジスタ１５１にセットされるが、（ｆ）ＶＦＭＫ命令が終了して、正論理マスクコントロールレジスタ２５１（ＶＣＴ）、負論理マスクコントロールレジスタ２５２（ＶＣＮ）の値が更新されてからそのＶＣＴ、ＶＣＮの値がマスク情報として使われる。したがって、コヒーレンシを保持するために、正論理マスクコントロールレジスタ２５１（ＶＣＴ）、負論理マスクコントロールレジスタ２５２（ＶＣＮ）の更新が完了してコヒーレンシ上問題が無くなるまで、（ｇ）ＶＡＤＤの発行は、保留される。
【００８１】
命令発行部１００において、コヒーレンシ上の問題が無くなったと判断されると、（ｇ）ＶＡＤＤが発行され、発行待ち命令格納レジスタ１５１には、次の命令である（ｈ）ＮＥＧＭがセットされる。
【００８２】
ＶＭ番号比較回路１０６は、直前ＶＭ番号レジスタ１５２に保持されているＶＭ番号（ＶＭ＃０）とオペランドＶＭ番号認識回路１０５で認識された２つのＶＭ番号（ＶＭ＃０、ＶＭ＃０）とを比較する。ＶＭ番号比較回路１０６は、３つのＶＭ番号が全て同じであることを確認し、オペランド左辺のＶＭ番号に対応する選択情報反転指示を信号線１３１を通じて、選択情報更新回路１０７に送ると同時に、信号線１３２を通じてＮＥＧＭ命令処理済みであることを示す処理済み通知を命令発行回路１１０に出力する。
【００８３】
選択情報更新回路１０７は、信号線１３１を通じて指定のＶＭ０選択情報レジスタ１５４、ＶＣ選択情報レジスタ１５３の反転処理を行い、これらの値を“０”→“１”とする。これにより、（ｈ）ＮＥＧＭ命令は、発行されずに実行完了したものとして処理され、発行待ち命令格納レジスタ１５１には、次の命令である（ｉ）ＶＳＵＢがセットされる。
【００８４】
命令発行部１００において、コヒーレンシ上の問題が無いかどうかが確認されるが、（ｈ）ＮＥＧＭ命令は実際には発行されず、ＶＣＴ、ＶＣＮの値は変化しないことから、コヒーレンシ上の問題は無いと判断される。この時ＶＣ選択情報としてＶＣ選択情報レジスタ１５３の値“１”が付与されて（ｉ）ＶＳＵＢ命令が、発行される。
【００８５】
この動作によって、（ｉ）ＶＳＵＢ命令で使用されるマスクデータは負論理マスクコントロールレジスタ２５２の値が選択される。その後、マスク更新命令以外の命令が続いた後、（ｘ）ＮＥＧＭ命令が発行待ち命令格納レジスタ１５１にセットされる。
【００８６】
ＶＭ番号比較回路１０６は、直前ＶＭ番号レジスタ１５２に保持されているＶＭ番号（ＶＭ＃０）とオペランドＶＭ番号認識回路１０５で認識された２つのＶＭ番号（ＶＭ＃１、ＶＭ＃０）とを比較する。
【００８７】
ＶＭ番号比較回路１０６は、３つのＶＭ番号に異なるものがあることを確認し、選択情報更新回路１０７への選択情報反転指示、および、命令発行回路１１０へのＮＥＧＭ命令処理済み通知は出力しない。このため、命令発行部１００はコヒーレンシ上の問題は無いことが確認されたタイミングで（ｘ）ＮＥＧＭ命令を発行する。
【００８８】
この時（ｘ）ＮＥＧＭ命令のソースはＶＭ０なので、ＶＭ選択情報出力回路１０８によってＶＭ０選択情報レジスタ１５４の値“１”がＶＭ選択情報として付与される。この動作によって、（ｘ）ＮＥＧＭ命令で使用されるマスクデータは負論理マスクレジスタ２５４（ＶＭ０Ｎ）の値が選択される。
【００８９】
次に、本発明の第１の実施の形態の動作について、図面を用いて別の命令列の場合を詳細に説明する。図１１は、実行される命令列を示す説明図である。図１２は、本発明の第１の実施の形態の詳細動作を示すタイムチャートである。
【００９０】
図１１を参照すると、図９の命令列に対し、（ｈ）ＮＥＧＭのオペランドのＶＭ番号が変わっており、（ｘ）ＮＥＧＭのオペランドのＶＭ番号が変わっている。
【００９１】
図１２の動作で図１０と異なる点は、（ｈ）ＮＥＧＭ命令が発行待ち命令格納レジスタ１５１にセットされたとき、直前ＶＭ番号レジスタ１５２には、正論理マスクレジスタ２５５（ＶＭ１Ｔ）のＶＭ番号である“ＶＭ＃１”が次のクロックでセットされる点である。
【００９２】
ＶＭ番号比較回路１０６は、直前ＶＭ番号レジスタ１５２に保持されているＶＭ番号（ＶＭ＃０）とオペランドＶＭ番号認識回路１０５で認識された２つのＶＭ番号（ＶＭ＃１、ＶＭ＃０）とを比較する。ＶＭ番号比較回路１０６は、３つのＶＭ番号に異なるものがあることが確認し、選択情報更新回路１０７への選択情報反転指示、および、命令発行回路１１０へのＮＥＧＭ命令処理済み通知は出力しない。
【００９３】
このため、命令発行部１００は、コヒーレンシ上の問題は無いことが確認されたタイミングで（ｘ）ＮＥＧＭ命令を発行する。この時、（ｘ）ＮＥＧＭ命令のソースは、ＶＭ０なので、ＶＭ選択情報出力回路１０８は、ＶＭ０選択情報レジスタ１５４の値“０”をＶＭ選択情報として付与する。
【００９４】
発行待ち命令格納レジスタ１５１には次の命令である（ｉ）ＶＳＵＢがセットされる。命令発行部１００は、コヒーレンシ上の問題が無いか確認する。命令発行部１００は、（ｈ）ＮＥＧＭ命令が発行されているので、コヒーレンシ上の問題は無いと判断されるまでの２クロック間、（ｉ）ＶＳＵＢの発行を保留し、その次のクロックで命令を発行する。
【００９５】
この時、ＶＣ選択情報としてＶＣ選択情報レジスタ１５３の値“１”が付与されて（ｉ）ＶＳＵＢ命令は発行される。その後、マスク更新命令以外の命令が続いた後、（ｘ）ＮＥＧＭ命令が発行待ち命令格納レジスタ１５１にセットされる。
【００９６】
ＶＭ番号比較回路１０６は、直前ＶＭ番号レジスタ１５２に保持されているＶＭ番号（ＶＭ＃１）とオペランドＶＭ番号認識回路１０５で認識された２つのＶＭ番号（ＶＭ＃１、ＶＭ＃１）とを比較する。ＶＭ番号比較回路１０６は、３つのＶＭ番号が全て同じであることを確認し、選択情報更新回路１０７への選択情報反転指示、および、命令発行回路１１０へのＮＥＧＭ命令処理済み通知を出力する。
【００９７】
選択情報更新回路１０７は、信号線１３１を通じて指定のＶＭ１選択情報レジスタ１５５、ＶＣ選択情報レジスタ１５３の反転処理を行い、これらの値を“０”→“１”とする。これにより、（ｈ）ＮＥＧＭ命令は、発行されずに実行完了したものとして処理される。
【００９８】
以上説明したように、本発明の第１の実施の形態は、マスク反転命令の実行時間を短縮することにより、マスク反転命令の次のマスクを使用する命令の待ち時間を短縮し、性能を向上させるという効果を持つ。
【００９９】
その理由は、直前ＶＭ番号レジスタ１５２に保持されているＶＭ番号とオペランドＶＭ番号認識回路１０５で認識された２つのＶＭ番号とを比較し、３つのＶＭ番号が全て同じであると、選択情報更新回路１０７への選択情報反転指示、および、命令発行回路１１０へのＮＥＧＭ命令処理済み通知を出力する構成を持つからである。
【０１００】
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。本発明の第２の実施の形態は、本発明の第１の実施の形態と異なり、ＶＣ更新命令識別回路１０２が、ＶＦＭＫ命令に限ることなく、ＭＶＭＣ命令（ＶＭ→ＶＣ転送命令）のような命令に関しても、ベクトルマスクコントロールレジスタ２５０（ＶＣ）と同じ値を持つベクトルマスクレジスタ２７０の１つ（ＶＭｘＴ）に対応するベクトルマスクレジスタ番号を認識する。
【０１０１】
ＶＣ更新命令識別回路１０２は、そのＶＭ番号をＶＭ番号値保持回路１０３に出力する。したがって、直前のＶＣ更新命令がＶＦＭＫ以外の命令であってもＮＥＧＭ命令を短縮できる可能性を増やすことが可能となる。
【０１０２】
図１３は、本発明の第２の実施の形態の動作を説明するための命令列を示す説明図である。図１３を参照すると、（ｈ）ＮＥＧＭ命令の直前のマスク操作命令は（ｆ’’）ＭＶＭＣ命令であるが、このような命令列においてもＮＥＧＭ命令を短縮実行することが可能となる。
【０１０３】
このように、本発明の第２の実施の形態は、多くの命令に関し、ベクトルマスクコントロールレジスタ２５０（ＶＣ）と同じ値を持つベクトルマスクレジスタ２７０の１つ（ＶＭｘＴ）に対応するベクトルマスクレジスタ番号を認識することにより、性能が向上する。
【０１０４】
次に、本発明の第３の実施の形態について説明する。本発明の第３の実施の形態は、ベクトルマスクコントロールレジスタ２５０に、負論理マスクコントロールレジスタ２５２を設けず、正論理マスクコントロールレジスタ２５１を、正論理、および、負論理の両方を出力するレジスタとする。また、ベクトルマスクレジスタ２７０も、負論理マスクレジスタ２５４〜２５８を設けず、正論理、および、負論理の両方を出力するレジスタとする。
【０１０５】
本発明の第３の実施の形態は、第１、第２の実施の形態と比較して、ハードウェア量が削減できるという効果を持つ。
【０１０６】
以上の説明において、ハードウェア制御での構成を説明したが、コントロールストアを設け、ファームウェア制御（マイクロプログラム制御）とすることが可能である。
【図面の簡単な説明】
【０１０７】
【図１】本発明の第１の実施の形態のベクトル処理装置の構成を示すブロック図。
【図２】図１の命令発行部の詳細を示すブロック。
【図３】図１のマスク発行部の詳細を示すブロック図。
【図４】正論理（および、負論理）マスクコントロールレジスタの値の一例を示す説明図。
【図５】本発明の第１の実施の形態の動作を説明するためのプログラムの１例を示す説明図。
【図６】図５のプログラムがコンパイルされた結果の命令列を示す説明図。
【図７】図６のＶＳＵＢ命令が終了した時点でのベクトルレジスタＶＲ２の内容を示す説明図。
【図８】図６のＮＥＧＭ命令が短縮実行した場合の動作を示すタイムチャート。
【図９】実行される命令列を示す説明図。
【図１０】本発明の第１の実施の形態の詳細動作を示すタイムチャート。
【図１１】実行される命令列を示す説明図。
【図１２】本発明の第１の実施の形態の詳細動作を示すタイムチャート。
【図１３】本発明の第２の実施の形態の動作を説明するための命令列を示す説明図。
【符号の説明】
【０１０８】
１００    命令発行部
１０１    命令スタック回路
１０２    ＶＣ更新命令識別回路
１０３    ＶＭ番号値保持回路
１０４    ＮＥＧＭ命令識別回路
１０５    オペランドＶＭ番号認識回路
１０６    ＶＭ番号比較回路
１０７    選択情報更新回路
１０８    ＶＭ選択情報出力回路
１０９    オペランドＶＭ番号認識回路
１１０    命令発行回路
１５１    発行待ち命令格納レジスタ
１５２    直前ＶＭ番号レジスタ
１５３    ＶＣ選択情報レジスタ
１５４    ＶＭ０選択情報レジスタ
１５５    ＶＭ１選択情報レジスタ
１５６    ＶＭ２選択情報レジスタ
２００    マスク発行部
２０１    マスク制御命令識別回路
２０２    マスク演算回路
２０３    マスクデータセレクタ
２０４    マスクデータ反転回路
２０５    マスク読み出し回路
２０６    マスクレジスタセレクタ
２０７    マスクレジスタセレクタ
２０８    マスクレジスタセレクタ
２０９    ３ｗａｙセレクタ
２１０    ３ｗａｙセレクタ
２５０    ベクトルマスクコントロールレジスタ
２５１    正論理マスクコントロールレジスタ
２５２    負論理マスクコントロールレジスタ
２５３    正論理マスクレジスタ
２５５    正論理マスクレジスタ
２５７    正論理マスクレジスタ
２５４    負論理マスクレジスタ
２５６    負論理マスクレジスタ
２５８    負論理マスクレジスタ
２５９    マスク演算回路入力レジスタ
２６０    マスク演算回路入力レジスタ
２６１    マスク演算結果保持レジスタ
２７０    ベクトルマスクレジスタ
３００    ベクトルレジスタ部
４００    演算部
５００    ベクトル処理装置
６００    ベクトル制御回路
ＶＲ０    ベクトルレジスタ
ＶＲ１    ベクトルレジスタ
ＶＲ２    ベクトルレジスタ
ＶＲ３    ベクトルレジスタ
【図１】
2008033446.tif 000003
【図２】
2008033446.tif 000004
【図３】
2008033446.tif 000005
【図４】
2008033446.tif 000006
【図５】
2008033446.tif 000007
【図６】
2008033446.tif 000008
【図７】
2008033446.tif 000009
【図８】
2008033446.tif 000010
【図９】
2008033446.tif 000011
【図１０】
2008033446.tif 000012
【図１１】
2008033446.tif 000013
【図１２】
2008033446.tif 000014
【図１３】
2008033446.tif 000015