(57)【要約】【課題】複数のデータを格納可能なレジスタを用いて演算を実行する情報処理装置においいて、マスク付き演算を実行する命令においてレジスタ・リネーミングを実行すると、データ化けが生じてしまう。その原因は、物理レジスタと関連付けられる論理レジスタのデータ格納位置が、物理レジスタ毎に固定されてしまうからである。【解決手段】上記課題を解決するため、本願発明は、データを格納するための複数の第１の格納領域を備える複数の第１の記憶領域と、前記データを格納するための複数の第２の格納領域を備え、位置指定情報により前記第２の格納領域が指定される第２の記憶領域と、前記第１の格納領域の指定に用いる第１のデータと、前記第１のデータにより指定された前記第１の格納領域に対応する第２のデータとを合成して前記位置指定情報を生成する制御部とを含むことを特徴とする。【選択図】図１
2008083947.tif 000002
【特許請求の範囲】
【請求項１】
データを格納するための複数の第１の格納領域を備える複数の第１の記憶領域と、
前記データを格納するための複数の第２の格納領域を備え、位置指定情報により前記第２の格納領域が指定される第２の記憶領域と、
前記第１の格納領域の指定に用いる第１のデータと、前記第１のデータにより指定された前記第１の格納領域に対応する第２のデータとを合成して前記位置指定情報を生成する制御部とを含むことを特徴とする情報処理装置。
【請求項２】
前記制御部は、
前記第１のデータを保持するデータ格納部と、
前記データ格納部より前記第１のデータを受信し、受信した前記第１のデータにより指定される前記第１の格納領域に対応する第２のデータを生成するデータ生成部と、
前記第１の格納領域毎に、前記第１のデータと前記第２のデータを合成し、前記位置指定情報を生成する合成部とを含むことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記データ生成部は、
前記第２のデータを、前記第１の格納領域の各々と対応させて格納する第２データ格納部と、
前記第２データ格納部に格納された前記第２のデータを更新する更新部とを含むことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記データ生成部は、
前記第１の格納領域のうち、前記データが読込まれる前記第１の格納領域と対応する前記第２のデータを前記第２データ格納部から選択する第１の選択部を含むことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記データ生成部は、
前記第１の記憶領域毎に、前記第２のデータを前記第１の格納領域の各々と対応させて格納する複数の第２データ格納部と、
前記第２データ格納部のいずれか１つを選択する第２の選択部と、
前記第１の格納領域に対して前記データを書込むか否かを前記第１の格納領域毎に指定する第３のデータを入力する第３データ入力部と、
前記第２の選択部により選択された前記第２のデータ格納部から受信した前記第２のデータ及び前記第３のデータに基づいて、前記第１の格納領域毎に、新たな第２のデータを生成する演算部とを含むことを特徴とする請求項２乃至４いずれか１項に記載の情報処理装置。
【請求項６】
過去に生成された前記位置指定情報に基づいて定められた前記第１の記憶領域と前記第２の記憶領域の対応関係の履歴を管理する履歴管理部を含み、
前記履歴管理部は、前記履歴に基づいて、書込まれた前記データが最も新しい前記第２の記憶領域と対応していた前記第１の記憶領域を特定して当該第１の記憶領域を前記第２の選択部に通知し、
前記第２の選択部は、前記履歴管理部から通知された第１の記憶領域と対応する前記第２データ格納部を選択することを特徴とする請求項５記載の情報処理装置。
【請求項７】
前記演算部は、
前記第３のデータにより前記データの書込みが指定された前記第１の格納領域についてのみ、新たな第２のデータを生成することを特徴とする請求項５乃至６いずれか１項に記載の情報処理装置。
【請求項８】
４つの前記第１の格納領域を備える２つの前記第１の記憶領域と、
前記第１の記憶領域毎に対応する２つの前記第２データ格納部とを有し、
前記第２の選択部は、前記第２データ格納部のうち、前記データの書込み対象ではない前記第１の記憶領域に対応するものを選択し、
前記演算部は、前記第２の選択部により選択された前記第２のデータ格納部が保持する前記第２のデータと前記第３のデータとをＸＯＲ演算し、新たな第２のデータを生成することを特徴とする請求項５記載の情報処理装置。
【請求項９】
前記演算部は、
前記第３のデータが前記データの書込みを行うことを指定している場合に、前記第２のデータに所定の演算処理を施し、新たな第２のデータを生成する演算実行部を有することを特徴とする請求項５乃至６いずれか１項に記載の情報処理装置。
【請求項１０】
前記演算部は、
前記第３のデータが前記データの書込みを行うことを指定している場合に、前記第２のデータに一定の値を加算し、新たな第２のデータを生成する演算実行部を有することを特徴とする請求項５乃至６いずれか１項に記載の情報処理装置。
【請求項１１】
前記演算部は、
前記第３のデータが前記データの書込みを行うことを指定している場合に、前記第２のデータから一定の値を減算し、新たな第２のデータを生成する演算実行部を有することを特徴とする請求項５乃至６いずれか１項に記載の情報処理装置。
【請求項１２】
前記合成部は、
前記演算部により生成された新たな第２のデータと、前記第１のデータを合成し、前記位置指定情報を生成することを特徴とする請求項５乃至１１いずれか１項に記載の情報処理装置。
【請求項１３】
前記更新部は、
前記演算部により生成された新たな第２のデータを前記第２データ格納部に書込むことを特徴とする請求項５乃至１１いずれか１項に記載の情報処理装置。
【請求項１４】
前記第２の格納領域の使用可否を示す情報を、前記第２の格納領域毎に管理する使用可否管理部を有し、
前記合成部は前記使用可否管理部から前記情報を受信し、生成した前記位置指定情報により指定される前記第２の格納領域の使用可否を確認することを特徴とする請求項２に記載の情報処理装置。
【請求項１５】
第１の記憶領域が備える複数の第１の格納領域のいずれか１つを指定するために用いる第１のデータを読込む読込みステップと、
前記第１のデータにより指定された前記第１の格納領域に対応する第２のデータを生成する生成ステップと、
前記第１の格納領域毎に、前記第１のデータと前記第２のデータを合成して、第２の記憶領域が備える複数の第２の格納領域のいずれか１つを指定するために用いる位置指定情報を生成する位置指定情報生成ステップとを含むことを特徴とする記憶領域制御方法。
【請求項１６】
前記生成ステップは、
前記第１の記憶領域毎に、前記第２のデータを前記第１の格納領域の各々と対応させて格納する複数の第２データ格納部のうち、いずれか１つを選択する選択ステップと、
前記第１の格納領域に対してデータを書込むか否かを前記第１の格納領域毎に指定する第３のデータを入力する入力ステップと、
前記選択ステップにより選択された前記第２データ格納部から受信した前記第２のデータ及び前記第３のデータに基づいて、前記第１の格納領域毎に、新たな第２のデータを生成するデータ生成ステップとを含むことを特徴とする請求項１５記載の記憶領域制御方法。
【請求項１７】
前記生成ステップは、
前記位置指定情報生成ステップにおいて過去に生成されていた前記位置指定情報に基づいて定められた前記第１の記憶領域と前記第２の記憶領域の対応関係の履歴を管理する履歴管理部が、前記履歴に基づいて、書込まれているデータが最も新しい前記第２の記憶領域と対応していた前記第１の記憶領域を特定するステップを含み、
前記選択ステップは、特定された前記第１の記憶領域と対応する前記第２データ格納部を選択することを特徴とする請求項１６に記載の記憶領域制御方法。
【請求項１８】
前記データ生成ステップは、
前記第３のデータによりデータの書込みが指定された前記第１の格納領域についてのみ、新たな第２のデータを生成するステップを含むことを特徴とする請求項１６乃至１７いずれか１項に記載の記憶領域制御方法。
【請求項１９】
前記データ生成ステップは、
前記入力ステップで入力した前記第３のデータを保存するステップと、
前記選択ステップで選択した前記第２のデータを保存するステップと、
前記第３のデータが前記第１の格納領域に対する書込みを許可しているか否かを判定する判定ステップと、
前記判定ステップにおいて、前記第３のデータが前記第１の格納領域に対する書込みを許可していると判定された場合に、前記第２のデータを更新する更新ステップとを含むことを特徴とする請求項１６乃至１７いずれか１項に記載の記憶領域制御方法。
【請求項２０】
前記更新ステップは、
前記判定ステップにおいて、前記第３のデータが前記第１の格納領域に対する書込みを許可していると判定された場合に、前記第２のデータに一定の値を加算する加算ステップを含むことを特徴とする請求項１９に記載の記憶領域制御方法。
【請求項２１】
前記更新ステップは、
前記判定ステップにおいて、前記第３のデータが前記第１の格納領域に対する書込みを許可していると判定された場合に、前記第２のデータから一定の値を減算する減算ステップを含むことを特徴とする請求項１９に記載の記憶領域制御方法。
【請求項２２】
前記位置情報生成ステップは、
前記第２の格納領域の使用可否を示す情報を受信するステップと、
生成した前記位置指定情報により指定される前記第２の格納領域の使用可否を確認するステップとを有することを特徴とする請求項１５に記載の記憶領域制御方法。
【請求項２３】
２つの第１の記憶領域がそれぞれ備える４つの第１の格納領域のいずれか１つを指定するために用いる第１のデータを読込む読込みステップと、
前記第１のデータにより指定された前記第１の格納領域に対応する第２のデータを生成する生成ステップと、
前記第１の格納領域毎に、前記第１のデータと前記第２のデータを合成して第２の記憶領域が備える複数の第２の格納領域のいずれか１つを指定するために用いる位置指定情報を生成する位置指定情報生成ステップとを含み、
前記生成ステップは、
前記第１の記憶領域毎に、前記第２のデータを前記第１の格納領域の各々と対応させて格納する２つの第２データ格納部のうち、前記データの書込み対象ではない前記第１の記憶領域に対応するものを選択する選択ステップと、  前記第１の格納領域に対してデータを書込むか否かを前記第１の格納領域毎に指定する第３のデータを入力する入力ステップと、
前記選択ステップにより選択された前記第２データ格納部から受信した前記第２のデータ及び前記第３のデータに基づいて、前記第１の格納領域毎に、新たな第２のデータを生成するデータ生成ステップとを含み、
前記データ生成ステップは、
前記第２のデータと前記第３のデータとをＸＯＲ演算し、新たな第２のデータを生成するステップを含むことを特徴とする記憶領域制御方法。
【請求項２４】
コンピュータに、
第１の記憶領域が備える複数の第１の格納領域のいずれか１つを指定するために用いる第１のデータを読込む読込み処理と、
前記第１のデータにより指定された前記第１の格納領域に対応する第２のデータを生成する生成処理と、
前記第１の格納領域毎に、前記第１のデータと前記第２のデータを合成して第２の記憶領域が備える複数の第２の格納領域のいずれか１つを指定するために用いる位置指定情報を生成する位置指定情報生成処理とを実行させることを特徴とするプログラム。
【請求項２５】
前記生成処理は、
前記第１の記憶領域毎に、前記第２のデータを前記第１の格納領域の各々と対応させて格納する複数の第２データ格納部のうち、いずれか１つのを選択する選択処理と、
前記第１の格納領域に対してデータを書込むか否かを前記第１の格納領域毎に指定する第３のデータを入力する入力処理と、
前記選択処理により選択された前記第２データ格納部から受信した前記第２のデータ及び前記第３のデータに基づいて、前記第１の格納領域毎に、新たな第２のデータを生成するデータ生成処理とを含むことを特徴とする請求項２４に記載のプログラム。
【請求項２６】
前記生成処理は、
前記位置指定情報生成処理において過去に生成されていた前記位置指定情報に基づいて定められた前記第１の記憶領域と前記第２の記憶領域の対応関係の履歴を管理する履歴管理部が、前記履歴に基づいて、書込まれているデータが最も新しい前記第２の記憶領域と対応していた前記第１の記憶領域を特定する処理を含み、
前記選択処理は、特定された前記第１の記憶領域と対応する前記第２データ格納部を選択することを特徴とする請求項２５に記載のプログラム。
【請求項２７】
前記データ生成処理は、
前記第３のデータによりデータの書込みが指定された前記第１の格納領域についてのみ、新たな第２のデータを生成する処理を含むことを特徴とする請求項２５乃至２６いずれか１項に記載のプログラム。
【請求項２８】
前記データ生成処理は、
前記入力ステップで入力した前記第３のデータを保存する処理と、
前記選択ステップで選択した前記第２のデータを保存する処理と、
前記第３のデータが前記第１の格納領域に対する書込みを許可しているか否かを判定する判定処理と、
前記判定処理において、前記第３のデータが前記第１の格納領域に対する書込みを許可していると判定された場合に、前記第２のデータを更新する更新処理とを含むことを特徴とする請求項２５乃至２６いずれか１項に記載のプログラム。
【請求項２９】
前記更新処理は、
前記判定処理において、前記第３のデータが前記第１の格納領域に対する書込みを許可していると判定された場合に、前記第２のデータに一定の値を加算する加算処理を含むことを特徴とする請求項２８に記載のプログラム。
【請求項３０】
前記更新処理は、
前記判定処理において、前記第３のデータが前記第１の格納領域に対する書込みを許可していると判定された場合に、前記第２のデータから一定の値を減算する減算処理を含むことを特徴とする請求項２８に記載のプログラム。
【請求項３１】
前記位置情報生成処理は、
前記第２の格納領域の使用可否を示す情報を受信する処理と、
生成した前記位置指定情報により指定される前記第２の格納領域の使用可否を確認する処理とを有することを特徴とする請求項２４に記載のプログラム。
【請求項３２】
コンピュータに、
２つの第１の記憶領域がそれぞれ備える４つの第１の格納領域のいずれか１つを指定するために用いる第１のデータを読込む読込み処理と、
前記第１のデータにより指定された前記第１の格納領域に対応する第２のデータを生成する生成処理と、
前記第１の格納領域毎に、前記第１のデータと前記第２のデータを合成して第２の記憶領域が備える複数の第２の格納領域のいずれか１つを指定するために用いる位置指定情報を生成する位置指定情報生成処理とを実行させ、
前記生成処理は、
前記第１の記憶領域毎に、前記第２のデータを前記第１の格納領域の各々と対応させて格納する２つの第２データ格納部のうち、前記データの書込み対象ではない前記第１の記憶領域に対応するものを選択する選択処理と、
前記第１の格納領域に対してデータを書込むか否かを前記第１の格納領域毎に指定する第３のデータを入力する入力処理と、
前記選択処理により選択された前記第２データ格納部から受信した前記第２のデータ及び前記第３のデータに基づいて、前記第１の格納領域毎に、新たな第２のデータを生成するデータ生成処理とを含み、
前記データ生成処理は、
前記第２のデータと前記第３のデータとをＸＯＲ演算し、新たな第２のデータを生成する処理を含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数のデータを格納可能なレジスタを用いて様々な演算を実行する情報処理装置において、レジスタ・リネーミングが可能な情報処理装置に関し、特に、マスク付き演算を実行する際にもレジスタ・リネーミングが可能な情報処理装置に関する。
【背景技術】
【０００２】
従来、特許文献１に記載されるように、レジスタ・リネーミングにより、情報処理装置における命令の実行性能の向上を図る技術が存在する。
【０００３】
なお、レジスタ・リネーミングとは、複数の命令を実行する際に、同一のレジスタに対してデータの読み書きが生じた場合、別のレジスタを仮想的に同一のレジスタとみなすことによって、レジスタの競合を回避する技術である。
【０００４】
【特許文献１】特開平９−３１１７８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、複数のデータを格納可能なレジスタを用いて演算を実行する情報処理装置において、従来技術に基づいてレジスタ・リネーミングを実行すると、以下の問題が生じる。
【０００６】
マスク付き演算を実行する命令においてレジスタ・リネーミングを行うと、データ化けが生じてしまう。
【０００７】
これは、レジスタ・リネーミングにより論理レジスタと物理レジスタとを対応付ける際に、物理レジスタ番号と、データ格納位置の指定に用いるＷＰ（ライトポインタ）又はＲＰ（リードポインタ）とを合成し、論理レジスタのデータ格納位置を指定するためのポインタを生成しているからである。物理レジスタの全てのデータ格納位置が、物理レジスタ番号を用いて論理レジスタのデータ格納位置と対応付けられるので、物理レジスタ単位でしか論理レジスタと関連付けができない。つまり、論理レジスタと関連付けられている物理レジスタを、レジスタ・リネーミングにより他の物理レジスタに変更すると、それに伴い、レジスタ・リネーミング前に物理レジスタのそれぞれのデータ格納位置と関連付けられていた論理レジスタのデータ格納位置の全てが、新たな論理レジスタのデータ格納位置に変更されて、論理レジスタと他の物理レジスタが関連付けられる。具体的には以下のようになる。
【０００８】
物理レジスタ０番及び１番が４つのデータを格納可能であるものとし、それぞれのデータ格納位置は、ＷＰ又はＲＰにより“00”、“01”、“10”、“11”(2bitの2進数)と表現される。論理レジスタと物理レジスタ０番が関連付けられる場合、物理レジスタ番号の“0”と、ＷＰ又はＲＰの“00”、“01”、“10”、“11”のそれぞれが合成され、“000”、“001”、“010”、“011”で表現される論理レジスタのデータ格納位置と物理レジスタ０番のデータ格納位置が関連付けられる。その後、レジスタ・リネーミングにより、論理レジスタと物理レジスタ１番を関連付けると、物理レジスタ番号の“1”と、“00”、“01”、“10”、“11”がそれぞれ合成され、“100”、“101”、“110”、“111”で表現される論理レジスタのデータ格納位置と物理レジスタ１番のデータ格納位置が関連付けられる。このように、従来技術によると、レジスタ・リネーミングにより、物理レジスタと関連付けられている論理レジスタのデータ格納位置の全てが変更されてしまう。つまり、物理レジスタ毎に、レジスタ・リネーミングにより関連付けられる論理レジスタのデータ格納位置が固定されてしまう。
【０００９】
従って、マスク付き命令の実行時にレジスタ・リネーミングをすると、データの書込みを実行すべきでないデータ格納位置も含めて、物理レジスタの内容が置換されてしまう。このように、従来の技術では、マスク付き演算を実行する際には、レジスタ・リネーミングを抑止する必要があり、命令の実行性能の向上に支障が生じていた。
【００１０】
この発明は上記課題を鑑みてなされたもので、マスク付き命令の実行時でも、複数のデータを格納可能なレジスタについてレジスタ・リネーミングを実行可能とすることを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するため、本発明の情報処理装置は、データを格納するための複数の第１の格納領域を備える複数の第１の記憶領域と、前記データを格納するための複数の第２の格納領域を備え、位置指定情報により前記第２の格納領域が指定される第２の記憶領域と、前記第１の格納領域の指定に用いる第１のデータと、前記第１のデータにより指定された前記第１の格納領域に対応する第２のデータとを合成して前記位置指定情報を生成する制御部とを含むことを特徴とする。
【発明の効果】
【００１２】
本発明は、第１の記憶領域の第１の格納領域の指定に用いる第１のデータと、第１のデータにより指定された第１の格納領域に対応する第２のデータ、とを合成して、第２の格納領域を指定するための位置指定情報を生成することにより、第１の記憶領域毎に、関連付けをする第２の格納領域を指定することが可能となる。よって、マスク付き演算実行時にレジスタ・リネーミングを行う場合でも、データの書き込みが必要な格納領域のみを指定してレジスタ・リネーミングによる関連付けを行うことが可能となる。このように、本発明によると、マスク付き演算を実行する場合においても、複数のデータを格納可能なレジスタについてレジスタ・リネーミングを行うことが可能となり、命令の実行性能を効果的に向上することができるという格別の効果が得られる。
【発明を実施するための最良の形態】
【００１３】
次に、本発明の実施の形態について説明する。なお、以下において、複数のデータを格納可能なレジスタの一例として、ベクトルレジスタを用いて説明する。しかし、本発明は、ベクトルレジスタに限定されるものではなく、あるレジスタに、データを格納するための格納領域（エントリ）が複数設けられているものについて本発明を適用可能である。
【００１４】
（第１の実施形態）
図１を参照し、本発明の第１の実施形態について説明する。
【００１５】
図１を参照すると、本発明の第１の実施形態における情報処理装置１３は、ベクトルレジスタ１、ＷＤレジスタ２、ＲＤレジスタ３、ＷＰレジスタ４、ＲＰレジスタ５、マスク部６、レジスタ管理部７、拡張ビット部８、ポインタ合成部９、ＷＥレジスタ１０、ＷＥ制御部１１及びレジスタ制御部１２を有する。
【００１６】
ベクトルレジスタ１は、プログラムからは論理ベクトルレジスタとしてアクセスされる。ベクトルレジスタ１には、論理ベクトルレジスタ番号が付与される。論理ベクトルレジスタ番号とは、プログラムによりベクトルレジスタ１にアクセスする際の識別子（例えば変数）である。プログラムからは、ベクトルレジスタ１に対して論理ベクトルレジスタ番号に基づいてアクセスされる。
【００１７】
また、ベクトルレジスタ１は、物理ベクトルレジスタにより構成される。物理ベクトルレジスタとは、演算の対象となるデータの物理的な格納場所である。
【００１８】
ベクトルレジスタ１は、演算に用いるデータを格納するためのエントリを有する。物理ベクトルレジスタも、演算に用いるデータを格納するためのエントリを有する。
【００１９】
論理ベクトルレジスタと物理ベクトルレジスタは、レジスタ・リネーミングにより関連付けられる。論理ベクトルレジスタ及び物理ベクトルレジスタのそれぞれのエントリは、ポインタを用いてその位置が指定される。本発明は、レジスタ・リネーミングにおいて、論理ベクトルレジスタと物理ベクトルレジスタとを、エントリ毎に関連付ける。物理ベクトルレジスタのエントリ毎に対応付けられた拡張ビットを設け、ポインタ合成部９が当該拡張ビットと物理ベクトルレジスタのエントリの位置を指定するためのポインタとを合成し、論理ベクトルレジスタのエントリを指定するためのポインタを作成する。つまり、物理ベクトルレジスタのエントリ毎に、 論理ベクトルレジスタのエントリと対応するポインタが作成される。これにより、演算実行時に、データを書込む論理ベクトルレジスタのエントリを、物理ベクトルレジスタのエントリ毎に関連付けることが可能となる。
【００２０】
次に、図１に示す各構成について、それぞれ説明する。
【００２１】
ベクトルレジスタ１は、演算の対象となる一連の順序付けられたベクトルデータを格納する。ベクトルレジスタ１は、複数のエントリを有し、ベクトルデータはエントリ毎に格納される。なお、ベクトルデータは、複数のワード（以下、要素という）で構成される。ワードとは、１つのデータの単位である。よって、ベクトルレジスタ１の各エントリには、ベクトルデータの要素が格納されることになる。命令で指定された数の要素が、ポインタで指定されたベクトルレジスタ１のエントリから１マシンサイクルに１要素ずつ読み出される。また、演算結果のベクトルデータが、ポインタで指定されたベクトルレジスタ１のエントリに順に格納される。ベクトルレジスタ１は、所定の要素数からなる論理ベクトルレジスタで構成される。つまり、論理ベクトルレジスタは、所定の要素数の単位でアクセスされる。論理ベクトルレジスタには、論理ベクトルレジスタ番号が与えられ、ベクトルレジスタ１はプログラムから論理ベクトルレジスタ番号によりアクセスされる。つまり、ベクトルレジスタ１は、プログラムから所定の要素数の単位でアクセスされる仮想的なレジスタである。論理ベクトルレジスタは、ベクトルレジスタ１のエントリのうちの所定の要素数の分のエントリにより構成される。また、ベクトルレジスタ１は、所定の数の物理ベクトルレジスタにより構成される。よって、プログラムによりベクトルレジスタ１のエントリに読み書きされた要素は、物理的に、対応する物理ベクトルレジスタのエントリに読み書きされる。つまり、論理ベクトルレジスタのエントリと物理ベクトルレジスタのエントリは１対１に対応している。物理ベクトルレジスタには、物理ベクトルレジスタ番号が付与され、物理ベクトルレジスタは当該番号により指定される。
【００２２】
ＷＤレジスタ２は、ベクトルレジスタ１に書込むベクトルデータの要素を一時的に格納する。なお、ＷＤは、“ライトデータ”と読む。
【００２３】
ＲＤレジスタ３は、ベクトルレジスタ１から読み出されたベクトルデータの要素を一時的に格納する。なお、ＲＤは、“リードデータ”と読む。
【００２４】
ＷＰレジスタ４は、物理ベクトルレジスタの各エントリとそれぞれ対応するＷＰを格納する。ＷＰレジスタ４は、ベクトルレジスタ１への書き込みに同期してＷＰの値に１を加算する。ＷＰレジスタ４は、パス４０を介して、ＷＰを拡張ビット部８とポインタ合成部９に通知する。なお、ＷＰは、“ライトポインタ”と読む。
【００２５】
ＲＰレジスタ５は、物理ベクトルレジスタの各エントリとそれぞれ対応するＲＰを格納する。ＲＰレジスタ５は、ベクトルレジスタ１からの読み出しに同期してＲＰの値に１を加算する。ＲＰレジスタ５は、パス５０を介して、ＲＰを拡張ビット部８とポインタ合成部９に通知する。なお、ＲＰは、“リードポインタ”と読む。
【００２６】
マスク部６は、論理ベクトルレジスタの要素数と同じ数のビット数で構成される。このことは、つまり、物理ベクトルレジスタの要素数と同じ数のビット数で構成されるということも意味する。マスク部６は、それぞれのビットが、要素が格納されている論理ベクトルレジスタの各エントリのそれぞれに対応するマスクレジスタを有する。マスクレジスタのそれぞれのビットは、要素が格納されている物理ベクトルレジスタの各エントリのそれぞれにも対応する。マスク部６は、マスクレジスタの設定により、マスク付き演算が実行される際に命令で指定された論理ベクトルレジスタに演算結果を書込むか否かを、要素が格納されているエントリ毎に指定する。マスク部６は、書き込みを行うエントリに格納されている要素（以下、有効要素という）に対応するマスクレジスタのビットに“1”を設定する。また、マスク部６は、書き込みを行わないエントリに格納されている要素（以下、無効要素という）に対応するマスクレジスタのビットに“0”を設定する。マスク部６は、拡張ビット部８とＷＥ制御部１１に対して、パス６０を介して、書き込みを行うエントリに対応するマスクレジスタの内容１ビットと、そのマスクレジスタの値を使用するか否かをマスク情報として通知する。
【００２７】
レジスタ管理部７は、レジスタ・リネーミングを行う際に、論理ベクトルレジスタと物理ベクトルレジスタとの対応関係を制御する。レジスタ管理部７は、書き込みが実行される物理ベクトルレジスタ番号をライト物理ベクトルレジスタ番号とし、読込みが実行される物理ベクトルレジスタ番号をリード物理ベクトルレジスタ番号として、それぞれ管理する。レジスタ管理部７は、ライト物理ベクトルレジスタ番号を、パス７０を介して拡張ビット部８に通知する。レジスタ管理部７は、リード物理ベクトルレジスタ番号を、パス７１を介して拡張ビット部８に通知する。ライト物理ベクトルレジスタ番号及びリード物理ベクトルレジスタ番号は、２進数で送信される。また、レジスタ管理部７は、ベクトルレジスタ１のエントリ毎に、エントリ内のベクトルデータの要素が使用中であるか否かを示すフラグを有する。このことは、同時に、レジスタ管理部７は、論理ベクトルレジスタのエントリ毎に、エントリ内のベクトルデータの要素が使用中であるか否かを管理することを意味する。使用中とは、当該要素を他の要素に上書きすることができない状態をいう。フラグは、例えば１ビットの値とし、エントリ内の要素が使用中であれば“１”、そうでなければ“０”を示すというように構成すればよい。レジスタ管理部７は、全エントリ分のフラグを、パス７２を介してポインタ合成部９に送信する。なお、レジスタ管理部７は、フラグの内容が更新される度に、全エントリ分のフラグをパス７２を介してポインタ合成部９に送信する。レジスタ管理部７は、レジスタ・リネーミング後の論理ベクトルレジスタと物理ベクトルレジスタとのエントリ毎の対応関係を管理する。つまり、レジスタ管理部７は、論理ベクトルレジスタの要素数の単位で、物理ベクトルレジスタとのエントリ毎の対応関係を管理する。
【００２８】
拡張ビット部８は、ＷＰとＲＰを、それぞれパス４０、パス５０経由で受信する。拡張ビット部８は、マスク部６からパス６０を経由してマスク情報を受信する。拡張ビット部８は、レジスタ管理部７からライト物理ベクトルレジスタ番号、リード物理ベクトルレジスタ番号を、それぞれパス７０、パス７１から受信する。拡張ビット部８は、物理ベクトルレジスタの各エントリと１対１に対応する拡張ビットを生成する。拡張ビット部８は、ＷＰで指定されるエントリに対応した拡張ビットを生成し、ライト拡張ビット（以下  ＷＥＸ）としてパス８０を介してポインタ合成部９に通知する。拡張ビット部８は、ＲＰで指定されるエントリに対応した拡張ビットを生成し、リード拡張ビット（以下  ＲＥＸ）としてパス８１を介してポインタ合成部９に通知する。なお、拡張ビット部８は、拡張ビットを、対応するエントリ毎に格納する拡張ビットレジスタを備える。拡張ビット部８は、物理ベクトルレジスタのそれぞれに対応した拡張ビットレジスタを備える。
【００２９】
ポインタ合成部９は、ＷＰ、ＲＰを、それぞれパス４０、パス５０経由で受信する。拡張ビット部８から、ＷＥＸ、ＲＥＸを、それぞれパス８０、パス８１経由で受信する。ポインタ合成部９は、ＷＰとＷＥＸから、ベクトルレジスタ１に対してベクトルデータを書込むエントリを指定するための、ライト拡張ポインタを生成する。また、ポインタ合成部９は、ＲＰとＲＥＸから、ベクトルレジスタ１に対してベクトルデータを読み出すエントリを指定するための、リード拡張ポインタを生成する。ポインタ合成部９は、ライト拡張ポインタ、リード拡張ポインタを、それぞれパス９０、パス９１を経由してベクトルレジスタ１に送信する。ポインタ合成部９は、パス７２を介してレジスタ管理部７からエントリの使用可否を示すフラグを受信する。ポインタ合成部９は、ＷＥＸから生成したライト拡張ポインタに対応するベクトルレジスタ１のエントリの使用可否を、レジスタ管理部７から受信したフラグを用いて判断する。ポインタ合成部９は、ライト拡張ポインタに対応するエントリが使用不可の場合、パス８０を介して受信したＷＥＸの値を変更し、新たなライト拡張ポインタを生成する。ポインタ合成部９は、生成した新たなライト拡張ポインタを、パス９４を介して拡張ビット部８へ送信する。
【００３０】
ＷＥレジスタ１０は、ベクトルレジスタ１に対して、書き込みの動作タイミングを指示する。ＷＥレジスタ１０には、ＷＤレジスタ２に有効な書き込みデータが存在する場合には“１”、存在しない場合には“０”が格納される。ＷＥレジスタ１０は、自己に格納されている値を、ＷＥ制御部１１に通知する。なお、ＷＥは“ライトイネーブル”と読む。
【００３１】
ＷＥ制御部１１は、ＷＥレジスタ１０の値と、マスク部６からパス６０を介してマスク情報を受信する。マスク情報によりマスクレジスタの値を使用することが通知された場合、ＷＥ制御部１１は、マスクビットとＷＥレジスタ１０の値の論理積を計算し、ＷＥ信号としてベクトルレジスタ１へ送信する。また、マスク情報によりマスクレジスタの値を使用しないことが通知された場合、ＷＥレジスタ１０の値をそのままＷＥ信号としてベクトルレジスタ１に送信する。ベクトルレジスタ１では、ＷＥ信号が“１”のときに書き込みが実行され、“０”のときには書き込みは実行されない。
【００３２】
レジスタ制御部１２は、命令発行をトリガとし、ＷＰレジスタ４とＲＰレジスタ５の動作タイミング、拡張ビット部８における拡張ビットレジスタの動作タイミング、ＷＥレジスタ１０の動作タイミングを制御する。
【００３３】
以下において、ベクトルレジスタ１は、要素数４の１つの論理ベクトルレジスタ（論理ベクトルレジスタ０番）からなり、物理ベクトルレジスタ２個（物理ベクトルレジスタ０番及び１番）からなる構成により、本発明の第１の実施形態についてより詳細に説明する。なお、各物理ベクトルレジスタの要素数も４であるものとする。
【００３４】
まず、論理ベクトルレジスタの各エントリと、物理ベクトルレジスタのエントリとの関連付けについて説明する。
【００３５】
図２に、物理ベクトルレジスタの各エントリと、論理ベクトルレジスタの各エントリとの関連付けの対応表を示す。図２を用いて、物理ベクトルレジスタ０番についての関連付けについて説明する。なお、図２において、ＷＰレジスタ４の値を用いて関連付けについて説明するが、ＲＰレジスタ５の値を用いて関連付けを行うことも可能である。
【００３６】
関連付けのために、物理ベクトルレジスタ０番に対応する拡張ビットレジスタ（以下、物理０拡張ビットレジスタ）に格納されている拡張ビットを用いる。
【００３７】
物理ベクトルレジスタ０番のエントリ00（２進数の“00”で、エントリの番号を表現）は、ＷＰレジスタ４の値“00”（２進数）と、ＷＰレジスタ４の値“00”に対応する物理０拡張ビットレジスタの値を用いて、論理ベクトルレジスタのエントリと関連付けられる。物理０拡張ビットレジスタの値が“0”の場合、当該値とＷＰレジスタ４の値“00”を合成して生成されるライト拡張ポインタは“000”（２進数）となり、ベクトルレジスタ１のエントリe0（即ち、論理ベクトルレジスタのエントリ0）と関連付けられる。物理０拡張ビットレジスタの値が“１”のとき、物理ベクトルレジスタ０番は、ライト拡張ポインタは“100”となり、ベクトルレジスタ１のエントリe4（即ち、論理ベクトルレジスタのエントリ0）と関連付けられる。物理ベクトルレジスタ１番についても、物理１拡張ビットレジスタの値を用いて同様に関連付けが実行される。このように、図２に示した対応表に基づいて、関連付けが実行される。ただし、図２は一例であり、図２に示した対応表による関連付けに限定されるものではない。
【００３８】
図３を用いて、関連付けについて具体的に説明する。
【００３９】
ベクトルレジスタ１は、エントリe0〜e7を有する。ベクトルレジスタ１は、上述したように、要素数４の論理ベクトルレジスタにより構成される。つまり、命令実行時に、ベクトルレジスタ１の８つのエントリ(e0〜e7)のうちの４つのエントリが論理ベクトルレジスタを構成する。また、物理ベクトルレジスタ０番及び１番は、それぞれ、エントリfe0〜fe3を有する。ベクトルレジスタ１のe0〜e7の内容が、Ａ，Ｂ、Ｃ，Ｄ、Ｅ，Ｋ、初期値（−）、Ｈとする。物理０拡張ビットレジスタの内容が、０１０１である場合、ＷＰレジスタ４の対応する値と物理０拡張ビットレジスタのそれぞれの値を合成し、物理ベクトルレジスタ０番のエントリfe0〜fe3は、それぞれ、e0、e5、e2、e7と関連付けられる。図３では、fe0(e0)、fe1(e5)、fe2(e2)、fe3(e7)と表す。物理ベクトルレジスタ０番の内容は、Ａ、Ｋ、Ｃ、Ｈとなる。これにより、論理ベクトルレジスタの４つのエントリはそれぞれ、ベクトルレジスタ１のe0、e5、e2、e7と関連付けられる。
【００４０】
物理１拡張ビットレジスタの内容が、１００１である場合、ＷＰレジスタ４の対応する値と物理１拡張ビットレジスタのそれぞれの値を合成し、物理ベクトルレジスタ１番のエントリfe0〜fe3は、それぞれ、e4、e1、e2、e7と関連付けられる。図３では、fe0(e4)、fe1(e1)、fe2(e2)、fe3(e7)と表す。物理ベクトルレジスタ1番の内容は、Ｅ、Ｂ、Ｃ、Ｈとなる。これにより、論理ベクトルレジスタの４つのエントリはそれぞれ、ベクトルレジスタ１のe4、e1、e2、e7と関連付けられる。
【００４１】
以上のように、物理ベクトルレジスタの各エントリと、論理ベクトルレジスタの各エントリが、エントリ毎に関連付けられる。
【００４２】
次に、図４及び図５を用いて、拡張ビット部８について詳細に説明する。
【００４３】
拡張ビット部８は、物理ベクトルレジスタ０番、物理ベクトルレジスタ１番にそれぞれ対応する物理０拡張ビットレジスタ８２、物理１拡張ビットレジスタ８３を有する。また、拡張ビット部８は、更新部８４、リードセレクタ８５、拡張ビットレジスタ制御部８６を有する。
【００４４】
物理０拡張ビットレジスタ８２は、物理ベクトルレジスタ０番の各エントリのそれぞれに対応した１ビットの値を格納する。物理０拡張ビットレジスタ８２が格納する値は、ＷＰ、ＲＰそれぞれの値のビット数を１ビット拡張するために用いられる。
【００４５】
物理１拡張ビットレジスタ８３は、物理ベクトルレジスタ１番の各エントリのそれぞれに対応した１ビットの値を格納する。物理１拡張ビットレジスタ８３が格納する値は、ＷＰ、ＲＰそれぞれの値のビット数を１ビット拡張するために用いられる。
【００４６】
物理０拡張ビットレジスタ８２、物理１拡張ビットレジスタ８３と更新部８４は、それぞれパス８２０、パス８３０を介して接続される。
【００４７】
物理０拡張ビットレジスタ８２、物理１拡張ビットレジスタ８３とリードセレクタ８５は、それぞれパス８２１、パス８３１を介して接続される。
【００４８】
更新部８４は、パス８２０を介して物理０拡張ビットレジスタ８２から１ビットの値を受信する。また、更新部８４は、パス８３０を介して物理１拡張ビットレジスタ８３から１ビットの値を受信する。更新部８４は、パス７０を介してライト物理ベクトルレジスタ番号を受信し、パス６０経由でマスク情報を受信する。更新部８４は、物理０拡張ビットレジスタ８２若しくは物理１拡張ビットレジスタ８３の内容を更新するための新たな値、及び、ＷＥＸを生成する。更新部８４は、パス８４４を介して物理０拡張ビットレジスタの内容を更新する。また、更新部８４は、パス８４５を介して物理１拡張ビットレジスタの内容を更新する。
【００４９】
リードセレクタ８５は、パス８２１を介して物理０拡張ビットレジスタ８２から１ビットの値を受信する。リードセレクタ８５は、パス８３１を介して物理１拡張ビットレジスタ８３から１ビットの値を受信する。また、リードセレクタ８５は、パス７１を介してリード物理ベクトルレジスタ番号を受信する。リードセレクタ８５は、物理０拡張ビットレジスタ８２、物理１拡張ビットレジスタ８３からそれぞれ受信した１ビットの値のいずれかを、リード物理ベクトルレジスタ番号に基づいて選択する。リード物理ベクトルレジスタ番号が物理ベクトルレジスタ０番を指定している場合、リードセレクタ８５は、パス８２１を選択し、物理０拡張ビットレジスタから受信した値を選択する。リード物理ベクトルレジスタが物理ベクトルレジスタ１番を指定している場合、リードセレクタ８５は、パス８３１を選択し、物理１拡張ビットレジスタから受信した値を選択する。
【００５０】
拡張ビットレジスタ制御部８６は、レジスタ制御部１２からの指示により、物理０拡張ビットレジスタ８２、物理１拡張ビットレジスタ８３を制御する。つまり、拡張ビットレジスタ制御部８６は、物理０拡張ビットレジスタ８２、物理１拡張ビットレジスタ８３の動作タイミングを制御する。
【００５１】
物理０拡張ビットレジスタ８２は、物理ベクトルレジスタ０番のエントリ数、つまり物理ベクトルレジスタ０番に格納される要素数の分の１ビットの値を保持する。物理０拡張ビットレジスタ８２が保持する値のそれぞれは、物理ベクトルレジスタ０番の各エントリと１対１に対応する。ＷＰ、ＲＰにより、物理ベクトルレジスタ０番のエントリに対応する物理０拡張ビットレジスタ８２の値が読み出される。これは、ＷＰ、ＲＰが物理ベクトルレジスタの各エントリと１対１に対応しているからである。
【００５２】
ＷＰによって読み出された値は、パス８２０を介して更新部８４へ送信される。ＲＰによって読み出された値は、パス８２１を介してリードセレクタ８５へ送信される。
【００５３】
物理０拡張ビットレジスタ８２は、パス８４４を介して、更新部８４からの指示により対応する物理０拡張ビットレジスタ８２のエントリの内容を更新する。
【００５４】
物理０拡張ビットレジスタ８２に格納されている値は、ポインタ合成部９で生成されるリード拡張ポインタ又はライト拡張ポインタ（いずれも２進数）の最上位ビットとなる。
【００５５】
物理１拡張ビットレジスタ８３は、物理ベクトルレジスタ１番のエントリ数、つまり物理ベクトルレジスタ１番に格納される要素数の分の１ビットの値を保持する。物理１拡張ビットレジスタ８３が保持する値のそれぞれは、物理ベクトルレジスタ１番の各エントリと１対１に対応する。ＷＰ、ＲＰにより、物理ベクトルレジスタ１番のエントリに対応する物理１拡張ビットレジスタ８３の値が読み出される。これは、ＷＰ、ＲＰが物理ベクトルレジスタの各エントリと１対１に対応しているからである。
【００５６】
ＷＰによって読み出された値は、パス８３０を介して更新部８４へ送信される。ＲＰによって読み出された値は、パス８３１を介してリードセレクタ８５へ送信される。
【００５７】
物理１拡張ビットレジスタ８３は、パス８４５を介して、更新部８４からの指示により対応する物理１拡張ビットレジスタ８３のエントリの内容を更新する。
【００５８】
物理１拡張ビットレジスタ８３に格納されている値は、ポインタ合成部９で生成されるリード拡張ポインタ又はライト拡張ポインタ（いずれも２進数）の最上位ビットとなる。
【００５９】
図５を参照すると、更新部８４は、ライトセレクタ８４０、マスク識別回路８４１、演算回路８４２及び更新判定回路８４３を有する。
【００６０】
ライトセレクタ８４０は、パス７０を介して受信するライト物理ベクトルレジスタ番号により、パス８２０若しくはパス８３０のいずれかを選択する。ライトセレクタ８４０は、選択したパスから受信した１ビットの値を演算回路８４２に送信する。
【００６１】
マスク識別回路８４１は、パス６０を介してマスク情報を受信する。マスク付き命令の実行時、即ち、マスク情報がマスクレジスタの値を使用することを指定している場合には、物理ベクトルレジスタのエントリに対応するマスクレジスタに格納されている値を、演算回路８４２に対して出力する。通常命令の実行時、即ち、マスク情報がマスクレジスタの値を使用しないことを指定している場合には、常に１ビットの“１”を、演算回路８４２に対して出力する。
【００６２】
演算回路８４２は、ライトセレクタ８４０から受信した値とマスク識別回路８４１から受信した値の排他的論理和（以下  ＸＯＲという）をとり、ＷＥＸを生成する。演算回路８４２は、生成したＷＥＸを、パス８０を介してポインタ合成部９へ送信する。また、演算回路８４２は、生成したＷＥＸを、更新判定回路８４３にも送信する。ＸＯＲ演算を実行するだけなので、演算回路の構成を単純化でき、従来技術と比較してＨＷ量の増大を抑えつつ、マスク付き演算の実行時でもレジスタ・リネーミングを実現することができる。
【００６３】
更新判定回路８４３は、パス７０を介して受信したライト物理ベクトルレジスタ番号により、パス８４４若しくはパス８４５のいずれかを選択する。更新判定回路８４３は、ライト物理ベクトルレジスタ番号が０のとき、パス８４４を選択し、ライト物理ベクトルレジスタ番号が１のとき、パス８４５を選択する。更新判定回路８４３は、選択したパスを介して、演算回路８４２から受信したＷＥＸ及び更新指示を、物理拡張ビットレジスタに対して送信する。
【００６４】
ライトセレクタ８４０は、ライト物理ベクトルレジスタ番号が０のとき、パス８３０を介して送信された物理１拡張ビットレジスタ８３の値を選択し、演算回路８４２へ出力する。また、ライトセレクタ８４０は、ライト物理ベクトルレジスタ番号が１のとき、パス８２０を介して送信された物理０拡張ビットレジスタ８２の値を選択し、演算回路８４２へ出力する。
【００６５】
次に、図６を用いて、ポインタ合成部９について詳細に説明する。
【００６６】
ポインタ合成部９は、ＷＰ合成回路９２及びＲＰ合成回路９３を有する。
【００６７】
ＷＰ合成回路９２は、パス４０を介してＷＰレジスタ４からＷＰを受信する。また、ＷＰ合成回路９２は、パス８０を介して演算回路８４２からＷＥＸを受信する。ＷＰ合成回路９２は、それぞれのパスから受信した値を合成し、ライト拡張ポインタを生成する。ＷＰ合成回路９２は、合成において、ＷＥＸがライト拡張ポインタの最上位ビットとなるように、ＷＥＸとＷＰを合成する。ＷＥＸは１ビット、ＷＰは２ビットであるので、ライト拡張ポインタは３ビットとなる。図２の表に示したように、ＷＥＸが“０”のとき、ライト拡張ポインタは、ベクトルレジスタ１のエントリe0〜e3（以下  前半という）と関連付けられる。また、ＷＥＸが“１”のとき、ライト拡張ポインタは、ベクトルレジスタ１のエントリe4〜e7（以下  後半という）と関連付けられる。ライト拡張ポインタは、ベクトルレジスタ１のエントリ（即ち、論理ベクトルレジスタのエントリと対応するベクトルレジスタ１のエントリ）を決定する情報として、パス９０を介してベクトルレジスタ１へ通知される。
【００６８】
ＲＰ合成回路９３は、パス５０を介してＲＰレジスタ５からＲＰを受信する。また、ＲＰ合成回路９３は、パス８１を介してリードセレクタ８５からＲＥＸを受信する。ＲＰ合成回路９３は、それぞれのパスから受信した値を合成し、リード拡張ポインタを生成する。ＲＰ合成回路９３は、合成において、ＲＥＸがリード拡張ポインタの最上位ビットとなるように、ＲＥＸとＲＰを合成する。ＲＥＸは１ビット、ＲＰは２ビットであるので、リード拡張ポインタは３ビットとなる。ＲＥＸが“０”のとき、リード拡張ポインタは、ベクトルレジスタ１のエントリe0〜e3（以下  前半という）と関連付けられる。また、ＲＥＸが“１”のとき、リード拡張ポインタは、ベクトルレジスタ１のエントリe4〜e7（以下  後半という）と関連付けられる。リード拡張ポインタは、ベクトルレジスタ１のエントリ（即ち、論理ベクトルレジスタのエントリと対応するベクトルレジスタ１のエントリ）を決定する情報として、パス９１を介してベクトルレジスタ１へ通知される。
【００６９】
ＷＰ合成回路９２は、パス７２を介して、レジスタ管理部７から、ベクトルレジスタ１のエントリ内のベクトルデータの要素が使用中であるか否かを示すフラグを受信する。ＷＰ合成回路９２は、生成したライト拡張ポインタにより指定されるベクトルレジスタ１のエントリと対応するフラグの内容を確認する。フラグにより要素が使用中でないことが確認できた場合、ＷＰ合成回路９２は、生成したライト拡張ポインタを、パス９０を介してベクトルレジスタ１へ通知する。
【００７０】
フラグにより要素が使用中であることが確認された場合、ＷＰ合成回路９２は、パス８０を介して受信したＷＥＸの値を変更する。例えば、ＷＰ合成回路９２は、受信したＷＥＸの値に１を加算（インクリメント）し、若しくは、受信したＷＥＸの値から１を減算する（デクリメント）ことにより、受信したＷＥＸの値を変更する。その上で、再度ライト拡張ポインタを生成し、当該ライト拡張ポインタにより指定されるベクトルレジスタ１のエントリと対応するフラグの内容を再確認する。フラグにより要素が使用中でないことが確認できた場合、ＷＰ合成回路９２は、再生成されたライト拡張ポインタを、パス９０を介してベクトルレジスタ１に通知する。それと共に、ＷＰ合成回路９２は、パス９４を介して、更新判定回路８４３に対して変更後のＷＥＸの値を通知する。更新判定回路８４３は、当該通知を受けて、対応する物理拡張ビットレジスタのエントリの値を変更する。
【００７１】
再生成したライト拡張ポインタに対応するフラグの内容を再確認しても当該フラグに対応する要素が使用中であった場合、ＷＰ合成回路９２は、パス８０を介して受信した最初のＷＥＸにより生成したライト拡張ポインタに対応するエントリの要素が使用可能となるまで待機する。つまり、パス８０を介して受信したＷＥＸの値を、予め定めた一定の回数だけ変更しても、使用可能な要素が無い場合は、パス８０を介して受信した最初のＷＥＸにより生成したライト拡張ポインタに対応するエントリの要素が使用可能となるまで待機するということである。また、変更によりＷＥＸの値が上限値若しくは下限値に到達した場合は、パス８０を介して受信した最初のＷＥＸにより生成したライト拡張ポインタに対応するエントリの要素が使用可能となるまで待機するようにしてもよい。
【００７２】
ベクトルレジスタ１のエントリ毎に、使用中か否かを確認することで、マスク付き演算の実行時においてレジスタ・リネーミングを実行した場合でも、レジスタ内容の不正な上書きを防ぎ、データ化けを回避できるという効果が得られる。
【００７３】
次に、ベクトルレジスタ１が要素数４の１つの論理ベクトルレジスタ（論理ベクトルレジスタ０番）からなり、物理ベクトルレジスタ２個（物理ベクトルレジスタ０番及び１番）からなる構成において、レジスタ・リネーミングにより論理ベクトルレジスタと物理ベクトルレジスタをエントリ毎に関連付ける方式について、詳細に説明する。ベクトルレジスタ１は、プログラムからは要素数が４（エントリ数が４）の１つの論理ベクトルレジスタとしてアクセスされる。なお、各物理ベクトルレジスタの要素数も４であるものとする。
【００７４】
図７（ａ）〜（ｇ）を参照して、論理ベクトルレジスタ０番に書込む通常命令である３命令（以降、それぞれ命令０、命令１、命令２）を実行した場合について説明する。なお、図７において、ベクトルレジスタ１のエントリをe0〜e7とし、物理ベクトルレジスタのエントリをfe0〜fe3とする。なお、ベクトルレジスタ１のエントリe0〜e7のうちのいずれか４つが、論理ベクトルレジスタ０番のエントリと対応付けられる。つまり、物理ベクトルレジスタのエントリと関連付けられる論理ベクトルレジスタ０番のエントリは、ベクトルレジスタ１のエントリのうちのいずれか４つのエントリとなる。
【００７５】
図７（ａ）に初期状態を示す。初期状態は、物理０拡張ビットレジスタ８２の全ての値が“０”となり、物理１拡張ビットレジスタ８３の全ての値が“１”となる。これは、原則として、レジスタ・リネーミングにより、物理ベクトルレジスタ０番の各エントリをエントリe0〜e7の前半（e0〜e3）と関連付け、物理ベクトルレジスタ１番の各エントリをエントリ（e0〜e7）の後半（e4〜e7）と関連付けたいからである。ベクトルレジスタ１の全エントリ、物理ベクトルレジスタ０番の全エントリ、物理ベクトルレジスタ１番の全エントリは、それぞれ初期値（−）となる。
【００７６】
命令０を実行した場合について説明する。
【００７７】
なお、命令の発行により、マスク部６、レジスタ管理部７、レジスタ制御部１２に制御情報が渡される。以下、命令実行について説明する場合には、全て同様とする。
【００７８】
命令０の論理ベクトルレジスタ０番は、レジスタ管理部７においてレジスタ・リネーミングにより、物理ベクトルレジスタ０番が指定されるものとする。命令０は通常命令なので、マスク識別回路８４１の出力は“１”となる。
【００７９】
図７（ｂ）に、ベクトルデータを書込む直前の状態を示す。通常命令なので、各エントリに対応するマスク識別回路８４１の出力は、全て“１”となる。ライト物理ベクトルレジスタ番号が“0”（実際は２進数で表現されるが、便宜上１０進数で表示する。以下同様とする。）なので、ライトセレクタ８４０により、物理１拡張ビットレジスタ８３の値が選択される。従って、演算回路８４２は、データを書込むエントリに対応する、マスク識別回路８４１の出力及び物理１拡張ビットレジスタ８３の値をＸＯＲ演算する。演算結果は、更新判定回路８４３により、パス８４４を介して、物理０拡張ビットレジスタ８２の対応するエントリに書込まれる。
【００８０】
物理ベクトルレジスタ０番の各エントリと、論理ベクトルレジスタ０番の各エントリとの関連付けは、以下のように行われる。
【００８１】
１）物理ベクトルレジスタ０番のエントリ０（fe0）に対応するＷＰ（２進数で“00”）により、物理０拡張ビットレジスタ８２と、物理１拡張ビットレジスタ８３から、対応する１ビットの値（ここでは、それぞれ“0”、“1”）が、拡張ビットレジスタ制御部８６により読み出される。読み出された値は、それぞれパス８２０、パス８３０を介して更新部８４へ送信される。
【００８２】
２）マスク識別回路８４１は、マスク部６からパス６０を介して、ＷＰに対応するマスクレジスタの内容及びマスク情報を受信する。命令０は通常命令なので、マスク識別回路８４１は、マスク情報に基づいて１ビットの値“１”を演算回路８４２へ出力する。
【００８３】
３）ライトセレクタ８４０は、パス７０を介してライト物理ベクトルレジスタ番号“０”を受信する。よって、ライトセレクタ８４０は、パス８３０を選択し、物理１拡張ビットレジスタの値である“１”を演算回路８４２へ送信する。
【００８４】
４）演算回路８４２は、マスク識別回路８４１の出力値である“１”と、ライトセレクタ８４０から受信した値である“１”を、ＸＯＲ演算する。結果は“0”となり、演算回路８４２は、当該演算結果をパス８０を介してポインタ合成部９及び更新判定回路８４３へ送信する。演算結果は、ＷＥＸとしてポインタ合成部９へ送信される。
【００８５】
５）更新判定回路８４３は、パス７０を介してライト物理ベクトルレジスタ番号“0”を受信する。また、更新判定回路８４３は、パス８０を介して演算回路８４２の演算結果を受信する。ライト物理ベクトルレジスタ番号が“0”なので、更新判定回路８４３は、パス８４４に対して演算結果及び更新指示を送信する。
【００８６】
６）物理０拡張ビットレジスタ８２は、ＷＰと対応するエントリに、パス８４４を介して更新判定回路８４３から受信した演算結果を書込む。
【００８７】
７）ポインタ合成部９は、パス８０を介して受信したＷＥＸと、パス４０を介して受信したＷＰからＷＰ合成回路９２によりライト拡張ポインタを生成する。ＷＥＸは“0”、ＷＰは“00”であるので、ライト拡張ポインタは２進数の“000”となる。ライト拡張ポインタ“000”は、図２の対応表により、ベクトルレジスタ１のe0を指す。
【００８８】
以上のようにして、論理ベクトルレジスタ０番のエントリ0は、ベクトルレジスタ１のe0及び物理ベクトルレジスタ０番のfe0が関連付けられる。命令０の実行により、ライト拡張ポインタ“000”で指定されるベクトルレジスタ１のエントリe0にベクトルデータの要素が書込まれる。つまり、プログラムにより、論理ベクトルレジスタ０番のエントリ0に、ベクトルレジスタ１のe0に書込まれたベクトルデータの要素が書込まれるということである。また、物理的には、エントリe0に対応する物理ベクトルレジスタ０番のエントリfe0にベクトルデータの要素が書込まれる。
【００８９】
このとき、ＷＤレジスタ２に、ベクトルレジスタ１に対する有効な書込みデータが存在する場合、ＷＥレジスタ１０は“１”となる。ＷＥ制御部１１は、ＷＥレジスタ１０の値、パス６０を介して受信したマスク情報からＷＥを“1”と判断し、ＷＥとしてベクトルレジスタ１へ出力する。ベクトルレジスタ１は、ライト拡張ポインタが指定するエントリに、ＷＤレジスタ２のデータを書込む。
【００９０】
なお、物理ベクトルレジスタ０番のエントリ１以降は、ＷＰを＋１（インクリメント）して、上記 １）から物理ベクトルレジスタ０番のエントリ数分繰り返す。ＷＰが“00”〜“11”まで変化した際に物理ベクトルレジスタ０番と関連付けられるベクトルレジスタ１のエントリは、それぞれ、e0、e1、e2、e3となる。図７（ｃ）において、fe0(e0)、fe1(e1)、fe2(e2)、fe3(e4)と表現する。また、論理ベクトルレジスタ０番の４つのエントリはそれぞれ、ベクトルレジスタ１のe0、e1、e2、e3と関連付けられる。
【００９１】
このとき、物理ベクトルレジスタ０番からのデータの読み出しが要求された場合について説明する。
【００９２】
１）物理ベクトルレジスタ０番のエントリ０（fe0）に対応するＲＰ（２進数で“00”）により、物理０拡張ビットレジスタ８２と、物理１拡張ビットレジスタ８３から、対応する１ビットの値（ここでは、それぞれ“0”、“1”）が、拡張ビットレジスタ制御部８６により読み出される。読み出された値は、それぞれパス８２１、パス８３１を介してリードセレクタ８５へ送信される。
【００９３】
２）リードセレクタ８５は、パス７１を介してリード物理ベクトルレジスタ番号を受信する。リード物理ベクトルレジスタ番号が“０”であるので、パス８２１を選択し、物理０拡張ビットレジスタ８２の値（ここでは、“0”）をＲＥＸとしてポインタ合成部９に送信する。
【００９４】
３）ポインタ合成部９は、パス８１を介して受信したＲＥＸと、パス５０を介して受信したＲＰから、リード拡張ポインタを生成する。このとき、ＲＥＸの値は“0”、ＲＰの値は“００”なので、リード拡張ポインタは“000”となる。リード拡張ポインタ“000”は、ベクトルレジスタ１のエントリe0を指す。よって、論理ベクトルレジスタ０番エントリ0は、ベクトルレジスタ１のe0及び物理ベクトルレジスタ０番のfe0が関連付けられる。
【００９５】
４）論理ベクトルレジスタ０番のエントリ0、即ちベクトルレジスタ１のe0（物理ベクトルレジスタ０番のfe0）からデータが読み出される。
【００９６】
エントリ１以降はＲＰを＋１して、１）からエントリ数分繰り返せばよい。
【００９７】
図７（ｃ）に、命令０の実行後の状態を示す。
【００９８】
物理０拡張ビットレジスタ８２は、全てのビットの値が“0”となり、物理１拡張ビットレジスタ８３は、全てのビットの値が“１”となる。ベクトルレジスタ１のe0〜e3（即ち、論理ベクトルレジスタ０番のエントリ０〜３）はそれぞれＡ、Ｂ、Ｃ、Ｄが格納されている。このとき、物理ベクトルレジスタ０番の４つのエントリfe0〜fe3は、ベクトルレジスタ１のe0〜e3（即ち、論理ベクトルレジスタ０番のエントリ０〜３）のそれぞれが対応し、その内容は、Ａ、Ｂ、Ｃ、Ｄとなる。
【００９９】
命令０の実行後、物理ベクトルレジスタ０番にはレジスタ・リネーミング後のレジスタ状態が保持され、物理ベクトルレジスタ１番にはレジスタ・リネーミング前のレジスタ状態が保持されている。よって、１つの論理ベクトルレジスタ番号に対する、２つの物理ベクトルレジスタによるレジスタ・リネーミングが正しく行われている事になる。
【０１００】
次に、命令１が実行された場合について説明する。
【０１０１】
命令１の論理ベクトルレジスタ０番は、レジスタ管理部７においてレジスタ・リネーミングにより、物理ベクトルレジスタ１番が指定されるものとする。命令１は通常命令なので、マスク識別回路８４１の出力は“１”となる。
【０１０２】
図７（ｄ）に、ベクトルデータを書込む直前の状態を示す。通常命令なので、各エントリに対応するマスク識別回路８４１の出力は、全て“１”となる。ライト物理ベクトルレジスタ番号が“１”なので、ライトセレクタ８４０により、物理０拡張ビットレジスタ８２の値が選択される。従って、演算回路８４２は、データを書込むエントリに対応する、マスク識別回路８４１の出力及び物理０拡張ビットレジスタ８２の値をＸＯＲ演算する。演算結果は、更新判定回路８４３により、パス８４５を介して、物理１拡張ビットレジスタ８３の対応するエントリに書込まれる。
【０１０３】
物理ベクトルレジスタ１番の各エントリと、論理ベクトルレジスタ０番の各エントリとの関連付けは、以下のように行われる。
【０１０４】
１）物理ベクトルレジスタ１番のエントリ０（fe0）に対応するＷＰ（２進数で“00”）により、物理０拡張ビットレジスタ８２と、物理１拡張ビットレジスタ８３から、対応する１ビットの値（ここでは、それぞれ“0”、“1”）が、拡張ビットレジスタ制御部８６により読み出される。読み出された値は、それぞれパス８２０、パス８３０を介して更新部８４へ送信される。
【０１０５】
２）マスク識別回路８４１は、マスク部６からパス６０を介して、ＷＰに対応するマスクレジスタの内容及びマスク情報を受信する。命令１は通常命令なので、マスク識別回路８４１は、マスク情報に基づいて１ビットの値“１”を演算回路８４２へ出力する。
【０１０６】
３）ライトセレクタ８４０は、パス７０を介してライト物理ベクトルレジスタ番号“１”を受信する。よって、ライトセレクタ８４０は、パス８２０を選択し、物理０拡張ビットレジスタの値である“0”を演算回路８４２へ送信する。
【０１０７】
４）演算回路８４２は、マスク識別回路８４１の出力値である“１”と、ライトセレクタ８４０から受信した値である“0”を、ＸＯＲ演算する。結果は“1”となり、演算回路８４２は、当該演算結果をパス８０を介してポインタ合成部９及び更新判定回路８４３へ送信する。演算結果は、ＷＥＸとしてポインタ合成部９へ送信される。
【０１０８】
５）更新判定回路８４３は、パス７０を介してライト物理ベクトルレジスタ番号“1”を受信する。また、更新判定回路８４３は、パス８０を介して演算回路８４２の演算結果を受信する。ライト物理ベクトルレジスタ番号が“1”なので、更新判定回路８４３は、パス８４5に対して演算結果及び更新指示を送信する。
【０１０９】
６）物理１拡張ビットレジスタ８３は、ＷＰと対応するエントリに、パス８４５を介して更新判定回路８４３から受信した演算結果を書込む。
【０１１０】
７）ポインタ合成部９は、パス８０を介して受信したＷＥＸと、パス４０を介して受信したＷＰからＷＰ合成回路９２によりライト拡張ポインタを生成する。ＷＥＸは“1”、ＷＰは“00”であるので、ライト拡張ポインタは２進数の“100”となる。ライト拡張ポインタ“100”は、図２の対応表により、ベクトルレジスタ１のe4を指す。
【０１１１】
以上のようにして、論理ベクトルレジスタ０番エントリ0と、ベクトルレジスタ１のe4及び物理ベクトルレジスタ１番のfe0が関連付けられる。命令１により、ライト拡張ポインタ“100”で指定されるベクトルレジスタ１のエントリe4にベクトルデータの要素が書込まれる。つまり、プログラムにより、論理ベクトルレジスタ０番のエントリ０に、ベクトルレジスタ１のe4に書込まれたベクトルデータの要素が書込まれるということである。また、物理的には、エントリe4に対応する物理ベクトルレジスタ０番のエントリfe0にベクトルデータの要素が書込まれる。
【０１１２】
このとき、ＷＤレジスタ２に、ベクトルレジスタ１に対する有効な書込みデータが存在する場合、ＷＥレジスタ１０は“１”となる。ＷＥ制御部１１は、ＷＥレジスタ１０の値、パス６０を介して受信したマスク情報からＷＥを“1”と判断し、ＷＥとしてベクトルレジスタ１へ出力する。ベクトルレジスタ１は、ライト拡張ポインタが指定するエントリに、ＷＤレジスタ２のデータを書込む。
【０１１３】
なお、物理ベクトルレジスタ１番のエントリ１以降は、ＷＰを＋１（インクリメント）して、上記 １）から物理ベクトルレジスタ１番のエントリ数分繰り返す。ＷＰが“00”〜“11”まで変化した際に物理ベクトルレジスタ１番と関連付けられるベクトルレジスタ１のエントリは、それぞれ、e4、e5、e6、e7となる。図７（e）において、fe0(e4)、fe1(e5)、fe2(e6)、fe3(e7)と表現する。また、論理ベクトルレジスタ０番の４つのエントリはそれぞれ、ベクトルレジスタ１のe4、e5、e6、e7と関連付けられる。
【０１１４】
このとき、物理ベクトルレジスタ１番からのデータの読み出しが要求された場合について説明する。
【０１１５】
１）物理ベクトルレジスタ１番のエントリ０（fe0）に対応するＲＰ（２進数で“00”）により、物理０拡張ビットレジスタ８２と、物理１拡張ビットレジスタ８３から、対応する１ビットの値（ここでは、それぞれ“0”、“1”）が、拡張ビットレジスタ制御部８６により読み出される。読み出された値は、それぞれパス８２１、パス８３１を介してリードセレクタ８５へ送信される。
【０１１６】
２）リードセレクタ８５は、パス７１を介してリード物理ベクトルレジスタ番号を受信する。リード物理ベクトルレジスタ番号が“１”であるので、パス８３１を選択し、物理１拡張ビットレジスタ８３の値（ここでは、“1”）をＲＥＸとしてポインタ合成部９に送信する。
【０１１７】
３）ポインタ合成部９は、パス８１を介して受信したＲＥＸと、パス５０を介して受信したＲＰから、リード拡張ポインタを生成する。このとき、ＲＥＸの値は“1”、ＲＰの値は“00”なので、リード拡張ポインタは“000”となる。リード拡張ポインタ“100”は、ベクトルレジスタ１のエントリe4を指す。よって、論理ベクトルレジスタ０番のエントリ０は、ベクトルレジスタ１のe4及び物理ベクトルレジスタ１番のfe0が関連付けられる。
【０１１８】
４）論理ベクトルレジスタのエントリ0、即ちベクトルレジスタ１のe4（物理ベクトルレジスタ１番のfe0）からデータが読み出される。
【０１１９】
エントリ１以降はＲＰを＋１して、１）からエントリ数分繰り返せばよい。
【０１２０】
図７（e）に、命令１の実行後の状態を示す。
【０１２１】
物理０拡張ビットレジスタ８２は、全てのビットの値が“0”となり、物理１拡張ビットレジスタ８３は、全てのビットの値が“１”となる。ベクトルレジスタ１のe4〜e7（即ち、論理ベクトルレジスタ０番のエントリ０〜３）はそれぞれＥ、Ｆ、Ｇ、Ｈが格納されている。このとき、物理ベクトルレジスタ１番の４つのエントリfe0〜fe3は、ベクトルレジスタ１のe4〜e7（即ち、論理ベクトルレジスタ０番のエントリ０〜３）のそれぞれが対応し、その内容は、Ｅ、Ｆ、Ｇ、Ｈとなる。
【０１２２】
命令１の実行後、物理ベクトルレジスタ０番にはレジスタ・リネーミング前のレジスタ状態が保持され、物理ベクトルレジスタ１番にはレジスタ・リネーミング後のレジスタ状態が保持されている。よって、１つの論理ベクトルレジスタ番号に対する、２つの物理ベクトルレジスタによるレジスタ・リネーミングが正しく行われている事になる。
【０１２３】
次に、命令２が実行された場合について説明する。
【０１２４】
命令２の論理ベクトルレジスタ０番は、レジスタ管理部７においてレジスタ・リネーミングにより、物理ベクトルレジスタ０番が指定されるものとする。命令２は通常命令なので、マスク識別回路８４１の出力は“１”となる。
【０１２５】
図７（ｆ）に、ベクトルデータを書込む直前の状態を示す。
【０１２６】
物理ベクトルレジスタ０番の各エントリと、論理ベクトルレジスタ０番の各エントリとの関連付けは、命令０と同様である。
【０１２７】
このとき、物理ベクトルレジスタ０番の読出しがあった場合の動作は、命令０により物理ベクトルレジスタ０番から読出しがあった場合と同様である。
【０１２８】
図７（ｇ）に、命令２の実行後の状態を示す。
【０１２９】
物理０拡張ビットレジスタ８２は、全てのビットの値が“０”となり、物理１拡張ビットレジスタ８３は、全てのビットの値が“１”となる。ベクトルレジスタ１のe0〜e7はそれぞれＩ、Ｊ、Ｋ、Ｌ、Ｅ、Ｆ、Ｇ、Ｈが格納されている。このとき、物理ベクトルレジスタ０番の４つのエントリfe0〜fe3は、ベクトルレジスタ１のe0〜e3（即ち、論理ベクトルレジスタ０番のエントリ０〜３）のそれぞれが対応し、その内容は、Ｉ、Ｊ、Ｋ、Ｌとなる。
【０１３０】
命令２の実行後、物理ベクトルレジスタ０番にはレジスタ・リネーミング後のレジスタ状態が保持され、物理ベクトルレジスタ１番にはレジスタ・リネーミング前のレジスタ状態が保持されている。よって、１つの論理ベクトルレジスタ番号に対する、２つの物理ベクトルレジスタによるレジスタ・リネーミングが正しく行われていることになる。
【０１３１】
次に、マスク付き演算を行う命令を実行する場合について、図８を用いて説明する。
【０１３２】
図８（ａ）〜（ｅ）に、論理ベクトルレジスタ０番に書込む命令０と、論理ベクトルレジスタ０番に書込むマスク付き命令が２命令（以下、それぞれ、命令Ｍ１、命令Ｍ２）の３命令を実行した場合について説明する。
【０１３３】
初期状態から命令０を実行した場合については、図７で説明した命令０と同様となる。図８（ａ）は、命令０の実行後の各レジスタの状態を示し、図７（ｃ）と同様である。
【０１３４】
次に、マスク付き演算を行う命令Ｍ１が実行された場合について説明する。
【０１３５】
命令Ｍ１の論理ベクトルレジスタ０番は、レジスタ管理部７においてレジスタ・リネーミングにより、物理ベクトルレジスタ１番が指定されているものとする。命令Ｍ１のマスクレジスタの値は、論理ベクトルレジスタ０番、物理ベクトルレジスタ１番のそれぞれのエントリに対応して、1001（2進数）となっている。
【０１３６】
図８（ｂ）は、ベクトルデータを書込む直前の状態を示す。
【０１３７】
物理ベクトルレジスタ１番のエントリ0（fe0）に相当する論理ベクトルレジスタ０番のエントリ0は以下のようにして決定される。
【０１３８】
１−０）物理ベクトルレジスタ１番のエントリ0（fe0）に対応するＷＰ（２進数で“00”）により、物理０拡張ビットレジスタ８２と、物理１拡張ビットレジスタ８３から、対応する１ビットの値（ここでは、それぞれ“0”、“1”）が、拡張ビットレジスタ制御部８６により読み出される。読み出された値は、それぞれパス８２０、パス８３０を介して更新部８４へ送信される。
【０１３９】
２−０）マスク識別回路８４１は、マスク部６からパス６０を介して、ＷＰに対応するマスクレジスタの内容及びマスク情報を受信する。命令Ｍ１はマスク付き命令なので、マスク識別回路８４１は、マスク情報に基づいて対応するマスクレジスタの１ビットの値“１”を演算回路８４２へ出力する。
【０１４０】
３−０）ライトセレクタ８４０は、パス７０を介してライト物理ベクトルレジスタ番号“１”を受信する。よって、ライトセレクタ８４０は、パス８２０を選択し、物理０拡張ビットレジスタの値である“０”を演算回路８４２へ送信する。
【０１４１】
４−０）演算回路８４２は、マスク識別回路８４１の出力値である“１”と、ライトセレクタ８４０から受信した値である“0”を、ＸＯＲ演算する。結果は“1”となり、演算回路８４２は、当該演算結果をパス８０を介してポインタ合成部９及び更新判定回路８４３へ送信する。演算結果は、ＷＥＸとしてポインタ合成部９へ送信される。
【０１４２】
５−０）更新判定回路８４３は、パス７０を介してライト物理ベクトルレジスタ番号“１”を受信する。また、更新判定回路８４３は、パス８０を介して演算回路８４２の演算結果を受信する。ライト物理ベクトルレジスタ番号が“1”なので、更新判定回路８４３は、パス８４５に対して演算結果及び更新指示を送信する。
【０１４３】
６−０）物理１拡張ビットレジスタ８３は、ＷＰと対応する自己のエントリに、パス８４５を介して更新判定回路８４３から受信した演算結果を書込む。
【０１４４】
７−０）ポインタ合成部９は、パス８０を介して受信したＷＥＸと、パス４０を介して受信したＷＰからＷＰ合成回路９２によりライト拡張ポインタを生成する。ＷＥＸは“1”、ＷＰは“00”であるので、ライト拡張ポインタは２進数の“100”となる。ライト拡張ポインタ“100”は、図２の対応表により、ベクトルレジスタ１のe4を指す。よって、論理ベクトルレジスタ０番のエントリ0は、ベクトルレジスタ１のe4及び物理ベクトルレジスタ1番のfe0と関連付けられる。
【０１４５】
物理ベクトルレジスタ１番のエントリ１に相当する論理ベクトルレジスタ０番のエントリ1は、以下のように決定される。
【０１４６】
１−１）物理ベクトルレジスタ１番のエントリ１（fe1）に対応するＷＰ（２進数で“01”）により、物理０拡張ビットレジスタ８２と、物理１拡張ビットレジスタ８３から、対応する１ビットの値（ここでは、それぞれ“0”、“1”）が、拡張ビットレジスタ制御部８６により読み出される。読み出された値は、それぞれパス８２０、パス８３０を介して更新部８４へ送信される。
【０１４７】
２−１）マスク識別回路８４１は、マスク部６からパス６０を介して、ＷＰに対応するマスクレジスタの内容及びマスク情報を受信する。命令Ｍ１はマスク付き命令なので、マスク識別回路８４１は、マスク情報に基づいて対応するマスクレジスタの１ビットの値“0”を演算回路８４２へ出力する。
【０１４８】
３−１）ライトセレクタ８４０は、パス７０を介してライト物理ベクトルレジスタ番号“１”を受信する。よって、ライトセレクタ８４０は、パス８２０を選択し、物理０拡張ビットレジスタの値である“0”を演算回路８４２へ送信する。
【０１４９】
４−１）演算回路８４２は、マスク識別回路８４１の出力値である“0”と、ライトセレクタ８４０から受信した値である“0”を、ＸＯＲ演算する。結果は“0”となり、演算回路８４２は、当該演算結果をパス８０を介してポインタ合成部９及び更新判定回路８４３へ送信する。演算結果は、ＷＥＸとしてポインタ合成部９へ送信される。
【０１５０】
５−１）更新判定回路８４３は、パス７０を介してライト物理ベクトルレジスタ番号“１”を受信する。また、更新判定回路８４３は、パス８０を介して演算回路８４２の演算結果を受信する。ライト物理ベクトルレジスタ番号が“1”なので、更新判定回路８４３は、パス８４５に対して演算結果及び更新指示を送信する。
【０１５１】
６−１）物理１拡張ビットレジスタ８３は、ＷＰと対応する自己のエントリに、パス８４５を介して更新判定回路８４３から受信した演算結果を書込む。
【０１５２】
７−１）ポインタ合成部９は、パス８０を介して受信したＷＥＸと、パス４０を介して受信したＷＰからＷＰ合成回路９２によりライト拡張ポインタを生成する。ＷＥＸは“0”、ＷＰは“01”であるので、ライト拡張ポインタは２進数の“001”となる。ライト拡張ポインタ“001”は、図２の対応表により、ベクトルレジスタ１のe1を指す。よって、論理ベクトルレジスタ０番のエントリ1は、ベクトルレジスタ１のe1及び物理ベクトルレジスタ1番のfe1と関連付けられる。但し、マスクビットが“0”であるので、ベクトルレジスタ１のエントリe1（即ち、論理ベクトルレジスタ０番のエントリ1）に対する書込みは実行されない。
【０１５３】
物理ベクトルレジスタ１番のエントリ２に相当する論理ベクトルレジスタ０番のエントリ2は、以下のように決定される。
【０１５４】
１−２）物理ベクトルレジスタ１番のエントリ２（fe2）に対応するＷＰ（２進数で“10”）により、物理０拡張ビットレジスタ８２と、物理１拡張ビットレジスタ８３から、対応する１ビットの値（ここでは、それぞれ“0”、“1”）が、拡張ビットレジスタ制御部８６により読み出される。読み出された値は、それぞれパス８２０、パス８３０を介して更新部８４へ送信される。
【０１５５】
２−２）マスク識別回路８４１は、マスク部６からパス６０を介して、ＷＰに対応するマスクレジスタの内容及びマスク情報を受信する。命令Ｍ１はマスク付き命令なので、マスク識別回路８４１は、マスク情報に基づいて対応するマスクレジスタの１ビットの値“0”を演算回路８４２へ出力する。
【０１５６】
３−２）ライトセレクタ８４０は、パス７０を介してライト物理ベクトルレジスタ番号“１”を受信する。よって、ライトセレクタ８４０は、パス８２０を選択し、物理０拡張ビットレジスタの値である“0”を演算回路８４２へ送信する。
【０１５７】
４−２）演算回路８４２は、マスク識別回路８４１の出力値である“0”と、ライトセレクタ８４０から受信した値である“0”を、ＸＯＲ演算する。結果は“0”となり、演算回路８４２は、当該演算結果をパス８０を介してポインタ合成部９及び更新判定回路８４３へ送信する。演算結果は、ＷＥＸとしてポインタ合成部９へ送信される。
【０１５８】
５−２）更新判定回路８４３は、パス７０を介してライト物理ベクトルレジスタ番号“１”を受信する。また、更新判定回路８４３は、パス８０を介して演算回路８４２の演算結果を受信する。ライト物理ベクトルレジスタ番号が“1”なので、更新判定回路８４３は、パス８４５に対して演算結果及び更新指示を送信する。
【０１５９】
６−２）物理１拡張ビットレジスタ８３は、ＷＰと対応する自己のエントリに、パス８４５を介して更新判定回路８４３から受信した演算結果を書込む。
【０１６０】
７−２）ポインタ合成部９は、パス８０を介して受信したＷＥＸと、パス４０を介して受信したＷＰからＷＰ合成回路９２によりライト拡張ポインタを生成する。ＷＥＸは“0”、ＷＰは“10”であるので、ライト拡張ポインタは２進数の“010”となる。ライト拡張ポインタ“010”は、図２の対応表により、ベクトルレジスタ１のe2を指す。よって、論理ベクトルレジスタ０番のエントリ2は、ベクトルレジスタ１のe2及び物理ベクトルレジスタ1番のfe2と関連付けられる。但し、マスクビットが“0”であるので、ベクトルレジスタ１のエントリe2（即ち、論理ベクトルレジスタ０番のエントリ2）に対する書込みは実行されない。
【０１６１】
物理ベクトルレジスタ１番のエントリ３に相当する論理ベクトルレジスタ０番のエントリ３は、以下のように決定される。
【０１６２】
１−３）物理ベクトルレジスタ１番のエントリ３（fe3）に対応するＷＰ（２進数で“11”）により、物理０拡張ビットレジスタ８２と、物理１拡張ビットレジスタ８３から、対応する１ビットの値（ここでは、それぞれ“0”、“1”）が、拡張ビットレジスタ制御部８６により読み出される。読み出された値は、それぞれパス８２０、パス８３０を介して更新部８４へ送信される。
【０１６３】
２−３）マスク識別回路８４１は、マスク部６からパス６０を介して、ＷＰに対応するマスクレジスタの内容及びマスク情報を受信する。命令Ｍ１はマスク付き命令なので、マスク識別回路８４１は、マスク情報に基づいて対応するマスクレジスタの１ビットの値“1”を演算回路８４２へ出力する。
【０１６４】
３−３）ライトセレクタ８４０は、パス７０を介してライト物理ベクトルレジスタ番号“１”を受信する。よって、ライトセレクタ８４０は、パス８２０を選択し、物理０拡張ビットレジスタの値である“0”を演算回路８４２へ送信する。
【０１６５】
４−３）演算回路８４２は、マスク識別回路８４１の出力値である“1”と、ライトセレクタ８４０から受信した値である“0”を、ＸＯＲ演算する。結果は“1”となり、演算回路８４２は、当該演算結果をパス８０を介してポインタ合成部９及び更新判定回路８４３へ送信する。演算結果は、ＷＥＸとしてポインタ合成部９へ送信される。
【０１６６】
５−３）更新判定回路８４３は、パス７０を介してライト物理ベクトルレジスタ番号“１”を受信する。また、更新判定回路８４３は、パス８０を介して演算回路８４２の演算結果を受信する。ライト物理ベクトルレジスタ番号が“1”なので、更新判定回路８４３は、パス８４５に対して演算結果及び更新指示を送信する。
【０１６７】
６−３）物理１拡張ビットレジスタ８３は、ＷＰと対応する自己のエントリに、パス８４５を介して更新判定回路８４３から受信した演算結果を書込む。
【０１６８】
７−３）ポインタ合成部９は、パス８０を介して受信したＷＥＸと、パス４０を介して受信したＷＰからＷＰ合成回路９２によりライト拡張ポインタを生成する。ＷＥＸは“1”、ＷＰは“11”であるので、ライト拡張ポインタは２進数の“111”となる。ライト拡張ポインタ“111”は、図２の対応表により、ベクトルレジスタ１のe7を指す。よって、論理ベクトルレジスタ０番のエントリ3は、ベクトルレジスタ１のe7及び物理ベクトルレジスタ1番のfe3と関連付けられる。
【０１６９】
以上より、物理ベクトルレジスタ１番として書込まれるベクトルレジスタ１のエントリ（即ち、論理ベクトルレジスタ０番のエントリ）は、それぞれe4、書込み無し（e1）、書込み無し（e2）、e7となる。
【０１７０】
図８（ｃ）に、命令Ｍ１の実行後の状態を示す。
【０１７１】
物理０拡張ビットレジスタ８２の全ての値は“0”、物理１拡張ビットレジスタ８３の値はそれぞれ1、0、0、1となる。ベクトルレジスタ１のe0〜e7は、それぞれＡ，Ｂ，Ｃ，Ｄ，Ｅ，−、−、Ｈ（ハイフン（−）は初期値）が格納されている。このとき、物理ベクトルレジスタ０番の４つのエントリは、ベクトルレジスタ１のe0〜e3が対応し、その内容はそれぞれＡ，Ｂ，Ｃ，Ｄとなる。物理ベクトルレジスタ１番の４つのエントリは、ベクトルレジスタ１のe4、e1、e2、e7がそれぞれ対応し、その内容はそれぞれＥ，Ｂ，Ｃ，Ｈとなる。
【０１７２】
命令Ｍ１の実行により、論理ベクトルレジスタ０番の４つのエントリの値は、Ａ，Ｂ，Ｃ，Ｄという内容から、マスクレジスタの値が“１”となっているエントリのみが更新されて、Ｅ，Ｂ，Ｃ，Ｈとなる。
【０１７３】
命令Ｍ１の実行後、物理ベクトルレジスタ０番にはレジスタ・リネーミング前のレジスタ状態が保持され、物理ベクトルレジスタ１番にはレジスタ・リネーミング後のレジスタ状態が保持されている。よって、１つの論理ベクトルレジスタ番号に対する、２つの物理ベクトルレジスタによるレジスタ・リネーミングが正しく行われていることになる。
【０１７４】
ここで、図８（ｃ'）に、従来技術により、命令Ｍ１の実行時にレジスタ・リネーミングを実行した後の状態を示す。物理ベクトルレジスタ１番の４つのエントリは、ベクトルレジスタ１のe4〜e7がそれぞれ対応し、その内容は、Ｅ，−、−、Ｈとなっている。つまり、物理ベクトルレジスタ番号である“1”と、ＷＰのそれぞれを合成しているため、上記のような関連付けがなされる。結果として、論理ベクトルレジスタ1番の４つのエントリの値は、レジスタ・リネーミング実行前のＡ，Ｂ，Ｃ，Ｄという内容から、マスクレジスタの値が“１”となっているエントリのみが更新されて、Ｅ，Ｂ，Ｃ，Ｈになるという期待値と一致していない。従って、結果はデータ化けとなってしまう。
【０１７５】
次に、命令Ｍ２が実行された場合について説明する。
【０１７６】
命令Ｍ２の論理ベクトルレジスタ０番は、レジスタ管理部７においてレジスタ・リネーミングにより、物理ベクトルレジスタ０番が指定されているものとする。命令Ｍ２のマスクレジスタの値は、論理ベクトルレジスタ０番又は物理ベクトルレジスタ１番のそれぞれのエントリに対応して、1100（2進数）となっている。
【０１７７】
図８（ｄ）は、ベクトルデータを書込む直前の状態を示す。
【０１７８】
物理ベクトルレジスタ０番のエントリ0（fe0）に相当する論理ベクトルレジスタ０番のエントリ0は以下のようにして決定される。
【０１７９】
１−０）物理ベクトルレジスタ０番のエントリ0（fe0）に対応するＷＰ（２進数で“00”）により、物理０拡張ビットレジスタ８２と、物理１拡張ビットレジスタ８３から、対応する１ビットの値（ここでは、それぞれ“0”、“1”）が、拡張ビットレジスタ制御部８６により読み出される。読み出された値は、それぞれパス８２０、パス８３０を介して更新部８４へ送信される。
【０１８０】
２−０）マスク識別回路８４１は、マスク部６からパス６０を介して、ＷＰに対応するマスクレジスタの内容及びマスク情報を受信する。命令Ｍ２はマスク付き命令なので、マスク識別回路８４１は、マスク情報に基づいて対応するマスクレジスタの１ビットの値“１”を演算回路８４２へ出力する。
【０１８１】
３−０）ライトセレクタ８４０は、パス７０を介してライト物理ベクトルレジスタ番号“0”を受信する。よって、ライトセレクタ８４０は、パス８３０を選択し、物理１拡張ビットレジスタ８３の値である“1”を演算回路８４２へ送信する。
【０１８２】
４−０）演算回路８４２は、マスク識別回路８４１の出力値である“１”と、ライトセレクタ８４０から受信した値である“1”を、ＸＯＲ演算する。結果は“0”となり、演算回路８４２は、当該演算結果をパス８０を介してポインタ合成部９及び更新判定回路８４３へ送信する。演算結果は、ＷＥＸとしてポインタ合成部９へ送信される。
【０１８３】
５−０）更新判定回路８４３は、パス７０を介してライト物理ベクトルレジスタ番号“0”を受信する。また、更新判定回路８４３は、パス８０を介して演算回路８４２の演算結果を受信する。ライト物理ベクトルレジスタ番号が“0”なので、更新判定回路８４３は、パス８４４に対して演算結果及び更新指示を送信する。
【０１８４】
６−０）物理０拡張ビットレジスタ８２は、ＷＰと対応する自己のエントリに、パス８４４を介して更新判定回路８４３から受信した演算結果を書込む。
【０１８５】
７−０）ポインタ合成部９は、パス８０を介して受信したＷＥＸと、パス４０を介して受信したＷＰからＷＰ合成回路９２によりライト拡張ポインタを生成する。ＷＥＸは“0”、ＷＰは“00”であるので、ライト拡張ポインタは２進数の“000”となる。ライト拡張ポインタ“000”は、図２の対応表により、ベクトルレジスタ１のe0を指す。よって、論理ベクトルレジスタ０番のエントリ0は、ベクトルレジスタ１のe0及び物理ベクトルレジスタ0番のfe0と関連付けられる。
【０１８６】
物理ベクトルレジスタ０番のエントリ１に相当する論理ベクトルレジスタ０番のエントリ１は、以下のように決定される。
【０１８７】
１−１）物理ベクトルレジスタ１番のエントリ１（fe1）に対応するＷＰ（２進数で“01”）により、物理０拡張ビットレジスタ８２と、物理１拡張ビットレジスタ８３から、対応する１ビットの値（ここでは、それぞれ“0”、“0”）が、拡張ビットレジスタ制御部８６により読み出される。読み出された値は、それぞれパス８２０、パス８３０を介して更新部８４へ送信される。
【０１８８】
２−１）マスク識別回路８４１は、マスク部６からパス６０を介して、ＷＰに対応するマスクレジスタの内容及びマスク情報を受信する。命令Ｍ２はマスク付き命令なので、マスク識別回路８４１は、マスク情報に基づいて対応するマスクレジスタの１ビットの値“1”を演算回路８４２へ出力する。
【０１８９】
３−１）ライトセレクタ８４０は、パス７０を介してライト物理ベクトルレジスタ番号“0”を受信する。よって、ライトセレクタ８４０は、パス８３０を選択し、物理１拡張ビットレジスタ８３の値である“0”を演算回路８４２へ送信する。
【０１９０】
４−１）演算回路８４２は、マスク識別回路８４１の出力値である“1”と、ライトセレクタ８４０から受信した値である“0”を、ＸＯＲ演算する。結果は“1”となり、演算回路８４２は、当該演算結果をパス８０を介してポインタ合成部９及び更新判定回路８４３へ送信する。演算結果は、ＷＥＸとしてポインタ合成部９へ送信される。
【０１９１】
５−１）更新判定回路８４３は、パス７０を介してライト物理ベクトルレジスタ番号“0”を受信する。また、更新判定回路８４３は、パス８０を介して演算回路８４２の演算結果を受信する。ライト物理ベクトルレジスタ番号が“0”なので、更新判定回路８４３は、パス８４４に対して演算結果及び更新指示を送信する。
【０１９２】
６−１）物理０拡張ビットレジスタ８２は、ＷＰと対応する自己のエントリに、パス８４４を介して更新判定回路８４３から受信した演算結果を書込む。
【０１９３】
７−１）ポインタ合成部９は、パス８０を介して受信したＷＥＸと、パス４０を介して受信したＷＰからＷＰ合成回路９２によりライト拡張ポインタを生成する。ＷＥＸは“1”、ＷＰは“01”であるので、ライト拡張ポインタは２進数の“101”となる。ライト拡張ポインタ“101”は、図２の対応表により、ベクトルレジスタ１のe5を指す。よって、論理ベクトルレジスタ０番のエントリ１は、ベクトルレジスタ１のe5及び物理ベクトルレジスタ0番のfe1と関連付けられる。
【０１９４】
物理ベクトルレジスタ０番のエントリ２に相当する論理ベクトルレジスタ０番のエントリ２は、以下のように決定される。
【０１９５】
１−２）物理ベクトルレジスタ０番のエントリ２（fe2）に対応するＷＰ（２進数で“10”）により、物理０拡張ビットレジスタ８２と、物理１拡張ビットレジスタ８３から、対応する１ビットの値（ここでは、それぞれ“0”、“0”）が、拡張ビットレジスタ制御部８６により読み出される。読み出された値は、それぞれパス８２０、パス８３０を介して更新部８４へ送信される。
【０１９６】
２−２）マスク識別回路８４１は、マスク部６からパス６０を介して、ＷＰに対応するマスクレジスタの内容及びマスク情報を受信する。命令Ｍ２はマスク付き命令なので、マスク識別回路８４１は、マスク情報に基づいて対応するマスクレジスタの１ビットの値“0”を演算回路８４２へ出力する。
【０１９７】
３−２）ライトセレクタ８４０は、パス７０を介してライト物理ベクトルレジスタ番号“0”を受信する。よって、ライトセレクタ８４０は、パス８３０を選択し、物理１拡張ビットレジスタ８３の値である“0”を演算回路８４２へ送信する。
【０１９８】
４−２）演算回路８４２は、マスク識別回路８４１の出力値である“0”と、ライトセレクタ８４０から受信した値である“0”を、ＸＯＲ演算する。結果は“0”となり、演算回路８４２は、当該演算結果をパス８０を介してポインタ合成部９及び更新判定回路８４３へ送信する。演算結果は、ＷＥＸとしてポインタ合成部９へ送信される。
【０１９９】
５−２）更新判定回路８４３は、パス７０を介してライト物理ベクトルレジスタ番号“0”を受信する。また、更新判定回路８４３は、パス８０を介して演算回路８４２の演算結果を受信する。ライト物理ベクトルレジスタ番号が“0”なので、更新判定回路８４３は、パス８４４に対して演算結果及び更新指示を送信する。
【０２００】
６−２）物理０拡張ビットレジスタ８２は、ＷＰと対応する自己のエントリに、パス８４４を介して更新判定回路８４３から受信した演算結果を書込む。
【０２０１】
７−２）ポインタ合成部９は、パス８０を介して受信したＷＥＸと、パス４０を介して受信したＷＰからＷＰ合成回路９２によりライト拡張ポインタを生成する。ＷＥＸは“0”、ＷＰは“10”であるので、ライト拡張ポインタは２進数の“010”となる。ライト拡張ポインタ“010”は、図２の対応表により、ベクトルレジスタ１のe2を指す。よって、論理ベクトルレジスタ０番のエントリ２は、ベクトルレジスタ１のe2及び物理ベクトルレジスタ0番のfe2と関連付けられる。但し、マスクビットが“0”であるので、ベクトルレジスタ１のエントリe2（即ち、論理ベクトルレジスタ０番のエントリ2）に対する書込みは実行されない。
【０２０２】
物理ベクトルレジスタ０番のエントリ３に相当する論理ベクトルレジスタ０番のエントリ３は、以下のように決定される。
【０２０３】
１−３）物理ベクトルレジスタ０番のエントリ３（fe3）に対応するＷＰ（２進数で“11”）により、物理０拡張ビットレジスタ８２と、物理１拡張ビットレジスタ８３から、対応する１ビットの値（ここでは、それぞれ“0”、“1”）が、拡張ビットレジスタ制御部８６により読み出される。読み出された値は、それぞれパス８２０、パス８３０を介して更新部８４へ送信される。
【０２０４】
２−３）マスク識別回路８４１は、マスク部６からパス６０を介して、ＷＰに対応するマスクレジスタの内容及びマスク情報を受信する。命令Ｍ２はマスク付き命令なので、マスク識別回路８４１は、マスク情報に基づいて対応するマスクレジスタの１ビットの値“0”を演算回路８４２へ出力する。
【０２０５】
３−３）ライトセレクタ８４０は、パス７０を介してライト物理ベクトルレジスタ番号“0”を受信する。よって、ライトセレクタ８４０は、パス８３０を選択し、物理１拡張ビットレジスタ８３の値である“1”を演算回路８４２へ送信する。
【０２０６】
４−３）演算回路８４２は、マスク識別回路８４１の出力値である“0”と、ライトセレクタ８４０から受信した値である“1”を、ＸＯＲ演算する。結果は“1”となり、演算回路８４２は、当該演算結果をパス８０を介してポインタ合成部９及び更新判定回路８４３へ送信する。演算結果は、ＷＥＸとしてポインタ合成部９へ送信される。
【０２０７】
５−３）更新判定回路８４３は、パス７０を介してライト物理ベクトルレジスタ番号“0”を受信する。また、更新判定回路８４３は、パス８０を介して演算回路８４２の演算結果を受信する。ライト物理ベクトルレジスタ番号が“0”なので、更新判定回路８４３は、パス８４４に対して演算結果及び更新指示を送信する。
【０２０８】
６−３）物理０拡張ビットレジスタ８２は、ＷＰと対応する自己のエントリに、パス８４４を介して更新判定回路８４３から受信した演算結果を書込む。
【０２０９】
７−３）ポインタ合成部９は、パス８０を介して受信したＷＥＸと、パス４０を介して受信したＷＰからＷＰ合成回路９２によりライト拡張ポインタを生成する。ＷＥＸは“1”、ＷＰは“11”であるので、ライト拡張ポインタは２進数の“111”となる。ライト拡張ポインタ“111”は、図２の対応表により、ベクトルレジスタ１のe7を指す。よって、論理ベクトルレジスタ0番のエントリ3は、ベクトルレジスタ１のe7及び物理ベクトルレジスタ0番のfe3と関連付けられる。
【０２１０】
以上より、物理ベクトルレジスタ0番として書込まれるベクトルレジスタ１のエントリ（即ち、論理ベクトルレジスタ０番のエントリ）は、それぞれe0、e5、書込み無し（e2）、書込み無し（e7）となる。
【０２１１】
図８（ｅ）に、命令Ｍ２の実行後の状態を示す。
【０２１２】
物理０拡張ビットレジスタ８２の値はそれぞれ0、１、0、１となり、物理１拡張ビットレジスタ８３の値はそれぞれ1、0、0、1となる。ベクトルレジスタ１のe0〜e7は、それぞれＩ，Ｂ，Ｃ，Ｄ，Ｅ，Ｊ、−、Ｈ（ハイフン（−）は初期値）が格納されている。このとき、物理ベクトルレジスタ０番の４つのエントリは、ベクトルレジスタ１のe0、e5、e2、e7が対応し、その内容はそれぞれＩ，Ｊ，Ｃ，Ｈとなる。物理ベクトルレジスタ１番の４つのエントリは、ベクトルレジスタ１のe4、e1、e2、e7がそれぞれ対応し、その内容はそれぞれＥ，Ｂ，Ｃ，Ｈとなる。
【０２１３】
命令Ｍ２の実行により、論理ベクトルレジスタ０番の４つのエントリの値は、Ｅ，Ｂ，Ｃ，Ｈという内容から、マスクレジスタの値が“１”となっているエントリのみが更新されて、Ｉ，Ｊ，Ｃ，Ｈとなる。
【０２１４】
命令Ｍ２の実行後、物理ベクトルレジスタ０番にはレジスタ・リネーミング後のレジスタ状態が保持され、物理ベクトルレジスタ１番にはレジスタ・リネーミング前のレジスタ状態が保持されている。よって、１つの論理ベクトルレジスタ番号に対する、２つの物理ベクトルレジスタによるレジスタ・リネーミングが正しく行われていることになる。
【０２１５】
ここで、図８（e'）に、従来技術により、図８（ｃ'）に示す状態から命令Ｍ２の実行した場合において、レジスタ・リネーミングを実行した後の状態を示す。物理ベクトルレジスタ０番の４つのエントリは、ベクトルレジスタ１のe0〜e3（即ち、論理ベクトルレジスタ０番のe0〜e3）がそれぞれ対応し、その内容は、Ｉ，Ｊ，Ｃ，Ｄとなっている。つまり、物理ベクトルレジスタ番号である“0”と、ＷＰのそれぞれを合成しているため、上記のような関連付けがなされる。結果として、図８（e'）に示す論理ベクトルレジスタ1番の４つのエントリの値は、図８（e）に示すＩ，Ｊ，Ｃ，Ｈという期待値と一致していない。従って、結果はデータ化けとなってしまう。
【０２１６】
このように、論理ベクトルレジスタと物理ベクトルレジスタとの間で、エントリ毎に、レジスタ・リネーミングによる関連付けを実行できるので、マスク付き演算を実行してもレジスタ・リネーミングによるデータ化けを回避できるという格別の効果が得られる。
【０２１７】
次に、図９のフローチャートを参照し、本発明の第１の実施形態の動作について説明する。
【０２１８】
レジスタ管理部７により、論理ベクトルレジスタと物理ベクトルレジスタの間で、レジスタ・リネーミングが実行される（Ｓ１）。
【０２１９】
拡張ビット部８により、ＷＰレジスタ４からＷＰが受信される（Ｓ２）。このとき、レジスタ・リネーミング時にレジスタ管理部７により指定された物理ベクトルレジスタのエントリのうち、データの書き込み対象のエントリに対応するＷＰが、１つずつ受信される。
【０２２０】
更新部８４は、物理０拡張ビットレジスタ８２及び物理１拡張ビットレジスタ８３から、ＷＰに対応する拡張ビットを受信する（Ｓ３）。
【０２２１】
ライトセレクタ８４０は、ライト物理ベクトルレジスタ番号に基づいて、拡張ビットを選択する（Ｓ４）。ここで、ライトセレクタ８４０は、ライト物理ベクトルレジスタ番号が“0”である場合には、物理１拡張ビットレジスタ８３から読込まれた拡張ビットを選択する。ライト物理ベクトルレジスタ番号が“1”である場合には、物理０拡張ビットレジスタ８２から読込まれた拡張ビットを選択する。
【０２２２】
マスク識別回路８４１は、マスク部６からレジスタ・リネーミング時にレジスタ管理部７により指定された物理ベクトルレジスタのエントリのうち、データの書き込み対象のエントリに対応するマスクビットを受信する（Ｓ４）。
【０２２３】
演算回路８４２は、マスクビットの値とライトセレクタ８４０が選択した拡張ビットの値を用いて演算処理を実行する（Ｓ６）。演算回路８４２は、ＸＯＲ演算を実行し、演算結果をＷＥＸとしてポインタ合成部９へ送信する。
【０２２４】
ポインタ合成部９は、演算回路８４２による演算結果とＷＰレジスタ４から受信したＷＰを合成し、ライト拡張ポインタを生成する（Ｓ７）。
【０２２５】
ライト拡張ポインタに対応するベクトルレジスタ１のエントリと、ＷＰに対応する物理ベクトルレジスタのエントリが関連付けされる（Ｓ８）。これにより、論理ベクトルレジスタのエントリと、ベクトルレジスタ１のエントリ及び物理ベクトルレジスタのエントリが、それぞれ関連付けられる。
【０２２６】
ライト拡張ポインタで指定されたエントリに、ベクトルデータの要素が書込まれる（Ｓ９）。
【０２２７】
ベクトルデータの読出し要求があった場合（Ｓ１０でＹｅｓ）、リードセレクタ８５は、レジスタ・リネーミングにより指定された物理ベクトルレジスタに対応する拡張ビットレジスタから、ＲＰに対応する拡張ビットを受信する（Ｓ１１）。リードセレクタ８５は、受信した拡張ビットをポインタ合成部９へ送信する。
【０２２８】
ポインタ合成部９は、受信した拡張ビットとＲＰを合成し、リード拡張ポインタを生成する（Ｓ１２）。
【０２２９】
ベクトルレジスタ１のエントリのうち、リード拡張ポインタにより指定されるエントリからベクトルデータの要素が読込まれる（Ｓ１３）。
【０２３０】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。
【０２３１】
第１の実施形態では、主として、ベクトルレジスタ１のエントリ数が８、エントリ数が４の物理ベクトルレジスタが２個の場合により説明した。しかし、本発明はこれに限るものではない。図１０に示す所定の条件下において、ベクトルレジスタのエントリ数、物理ベクトルレジスタのエントリ数及び物理ベクトルレジスタの数は、いくつであってもよい。
【０２３２】
図１０を参照し、所定の条件について説明する。物理ベクトルレジスタのエントリ数を２のｘ乗で表される数とする。この場合、ＷＰ又はＲＰのビット数はｘビットの値となる。ＷＰ又はＲＰは、物理ベクトルレジスタの各エントリと１対１に対応するからである。ベクトルレジスタ１のエントリ数を２のｍ乗で表される数とすると、ライト拡張ポインタ若しくはリード拡張ポインタは、ｍビットの値となる。ライト拡張ポインタ若しくはリード拡張ポインタは、ＷＰ若しくはＲＰとＷＥＸ若しくはＲＥＸとを合成した値である。よって、ＷＥＸ若しくはＲＥＸは、（ｍ−ｘ）ビットの値となる。
【０２３３】
この条件下において、クトルレジスタのエントリ数、物理ベクトルレジスタのエントリ数及び物理ベクトルレジスタの数は、それぞれ任意に決定できる。
【０２３４】
次に、本発明の第２の実施形態の構成について、図１１、図１２、図１３及び図１４を用いて説明する。なお、図１１、図１２、図１３及び図１４において、第１の実施形態において説明した各構成と同一の番号を付してあるものは、第１の実施形態の各構成と同一である。
【０２３５】
図１１を参照すると、本発明の第２の実施形態における情報処理装置１３０は、レジスタ管理部７００、拡張ビット部８００を有する。他の部分は、第１の実施形態と同様である。
【０２３６】
レジスタ管理部７００は、本発明の第１の実施形態のレジスタ管理部７が備える機能に加え、命令実行時のレジスタ・リネーミングにおける論理ベクトルレジスタと物理ベクトルレジスタとの対応関係をより詳細に管理する。対応関係とは、つまり、論理ベクトルレジスタと物理ベクトルレジスタの、エントリ毎の対応関係である。例えば、レジスタ管理部７００は、物理ベクトルレジスタの数がｎとすると、最大で過去ｎ回分の命令実行後の論理ベクトルレジスタと物理ベクトルレジスタの対応関係を、命令の実行順序に従って管理できるように構成すればよい。なお、必ずしも過去ｎ回分の対応関係を管理する必要はなく、ハードウェア資源等を考慮し、最適な設計をすればよい。レジスタ管理部７００は、論理ベクトルレジスタに対応付けた物理ベクトルレジスタの物理ベクトルレジスタ番号により、対応関係を管理する。レジスタ管理部７００は、リネーム情報と最新状態情報を、パス７０１を介して拡張ビット部８００に送信する。レジスタ管理部７００は、命令の実行毎に、最新状態情報とリネーム情報を送信する。最新状態情報及びリネーム情報は、レジスタ管理部７００が管理する論理ベクトルレジスタと物理ベクトルレジスタの過去の対応関係に基づいて生成される情報である。最新状態情報及びリネーム情報は、物理ベクトルレジスタの番号で表される。リネーム情報とは、ある実行中の命令において、レジスタ・リネーミングにより論理ベクトルレジスタと関連付けられている物理ベクトルレジスタの番号である。レジスタ管理部７００は、物理ベクトルレジスタの中からレジスタ・リネーミングの対象とする物理ベクトルレジスタを選択し、当該物理ベクトルレジスタの番号をリネーム情報として拡張ビット部８００へ送信する。最新状態情報とは、ある命令を実行する際において、論理ベクトルレジスタの最新状態のデータを保持している物理ベクトルレジスタの番号である。論理ベクトルレジスタの内容は、命令の実行により逐次書き換えられていくが、最後に内容が書き換えられた状態が最新状態となる。レジスタ管理部７００は、命令の実行順に従って管理している論理ベクトルレジスタと物理ベクトルレジスタとの対応関係を参照すれば、最新状態を保持している論理ベクトルレジスタと対応している物理ベクトルレジスタを特定できる。レジスタ管理部７００は、物理ベクトルレジスタの中から論理ベクトルレジスタの最新状態のデータを保持している物理ベクトルレジスタを選択し、当該物理ベクトルレジスタの番号を最新状態情報として拡張ビット部８００へ送信する。なお、レジスタ管理部７００は、論理ベクトルレジスタの更新履歴に基づいて、自己が管理している過去の論理ベクトルレジスタと物理ベクトルレジスタの対応関係から、論理ベクトルレジスタの最新状態を保持している物理ベクトルレジスタを選択すればよい。
【０２３７】
次に、図１２を参照して、拡張ビット部８００について説明する。
【０２３８】
拡張ビット部８００は、拡張ビット格納部８０００、物理０拡張ビットレジスタ８２−０〜物理ｎ拡張ビットレジスタ８２−ｎ（ｎは、物理ベクトルレジスタの数）、更新部８４００を有する。その他の部分は、第１の実施形態と同様である。
【０２３９】
拡張ビット格納部８０００は、物理ベクトルレジスタ数分の拡張ビットレジスタを備える。物理ベクトルレジスタの数がｎである場合（ｎは任意の数）、拡張ビット格納部８０００は、物理０拡張ビットレジスタ８２−０〜物理ｎ拡張ビットレジスタ８２−ｎを備える。物理０拡張ビットレジスタ８２−０〜物理ｎ拡張ビットレジスタ８２−ｎはそれぞれ、物理ベクトルレジスタのエントリ数と同数のエントリを有し、各エントリに拡張ビットを格納する。物理０拡張ビットレジスタ８２−０〜物理ｎ拡張ビットレジスタ８２−ｎはそれぞれ、パス８２０−０〜パス８２０−ｎを介して更新部８４００を接続している。また、物理０拡張ビットレジスタ８２−０〜物理ｎ拡張ビットレジスタ８２−ｎはそれぞれ、パス８２１−０〜パス８２１−ｎを介してリードセレクタ８５と接続している。
【０２４０】
次に、図１３を参照して、更新部８４００について説明する。
【０２４１】
更新部８４００は、ライトセレクタ８４０１、演算回路８４２０を有する。その他の部分は、第１の実施形態と同様である。
【０２４２】
ライトセレクタ８４０１は、パス８２０−０〜パス８２０−ｎのうちの１つを選択し、選択したパスを介して物理０拡張ビットレジスタ８２−０〜物理ｎ拡張ビットレジスタ８２−ｎのいずれかから拡張ビットを受信する。ライトセレクタ８４０１は、パス７０１を介してレジスタ管理部７００から、最新状態情報を受信する。ライトセレクタ８４０１は、最新状態情報で示される物理ベクトルレジスタ番号に対応するパスを選択し、拡張ビットを受信する。ライトセレクタ８４０１は、受信した拡張ビットを、パス８４０１０を介して演算回路８４２０へ送信する。例えば、最新状態情報が“2”であった場合、ライトセレクタ８４０１は、物理ベクトルレジスタ２番に対応するパス８２０−２を選択し、拡張ビットを受信する。なお、最新状態情報が初期値であった場合（例えば、ＮＵＬＬ等）、パス７０を介して受信したライト物理ベクトルレジスタ番号と対応するパスを選択する。例えば、ライト物理ベクトルレジスタ番号が“0”であった場合、ライトセレクタ８４０１は、パス８２０−０を選択する。
【０２４３】
演算回路８４２０は、マスク識別回路８４１から受信したマスクビットと、ライトセレクタ８４０１から受信した拡張ビットとに基づいて、所定の演算を実行する。詳細は後述する。
【０２４４】
更新判定回路８４３は、パス７０を介して受信したライト物理ベクトルレジスタ番号に対応するパスを、８４４−０乃至８４４−ｎから選択する。例えば、ライト物理ベクトルレジスタ番号が“1”の場合、パス８４４−１を選択する。その他の機能は、第１の実施形態と同様である。
【０２４５】
次に、図１４を参照して、演算回路８４２０について説明する。
【０２４６】
演算回路８４２０は、マスクビット格納部８４２１、拡張ビット格納部８４２２及び演算実行部８４２３を有する。
【０２４７】
マスクビット格納部８４２１は、マスク識別回路８４１から受信したマスクビットを格納する。
【０２４８】
拡張ビット格納部８４２２は、ライトセレクタ８４０１から受信した拡張ビットを格納する。
【０２４９】
演算実行部８４２３は、マスクビット格納部８４２１に格納された値と、拡張ビット格納部８４２２に格納された値とに基づいて、所定の演算を実行する。演算実行部８４２３は、マスクビット格納部８４２１に格納されている値が“１”である場合、演算実行部８４２３は、拡張ビット格納部８４２２に格納されている値をインクリメントする。例えば、拡張ビット格納部８４２２に格納されている値が“010”である場合、演算実行部８４２３は、当該値を“1”インクリメントして、“011”とするように構成すればよい。なお、演算実行部８４２２による演算処理はこれに限定されるものではなく、例えば、インクリメントする量を１以外としてもよい。また、インクリメントするのではなく、拡張ビット格納部８４２２に格納されている値を所定の量だけデクリメントするように構成してもよい。マスクビット格納部８４２１に格納されている値が“0”である場合、演算実行部８４２３は、演算処理を実行せず、拡張ビット格納部８４２２に格納されている値をそのままパス８０へ送信する。演算実行部８４２３は、演算結果をＷＥＸとして、パス８０を介してポインタ合成部９へ送信する。拡張ビットの値は、上述したように（ｍ−ｘ）ビットの値となる。よって、上限値及び下限値が存在する。例えば、拡張ビットが３ビットの値である場合、上限値は“111”、下限値は“000”となる。演算実行部８４２３は、演算処理の結果が上限値を超過した場合、演算結果を下限値の値に設定する。また、演算実行部８４２３は、演算処理の結果が下限値を下回る場合、演算結果を上限値の値に設定する。
【０２５０】
なお、拡張ビット格納部８４２２に格納されている値が初期値（例えば、ＮＵＬＬ等）の場合、演算実行部８４２３は、演算処理を実行せず、拡張ビットの値を上限値若しくは下限値のいずれかに設定する処理をする。但し、この場合、上限値若しくは下限値以外の任意の値を設定してもよい。
【０２５１】
次に、図１５のフローチャートを参照して、演算回路８４２０による演算処理について説明する。
【０２５２】
演算回路８４２０は、マスク識別回路８４１からマスクビットを受信し、マスクビット格納部８４２１に格納する（Ｓ２１）。
【０２５３】
演算回路８４２０は、ライトセレクタ８４０１により選択された拡張ビットを、拡張ビット格納部８４２２に格納する（Ｓ２２）。
【０２５４】
演算実行部８４２３は、拡張ビット格納部内の拡張ビットの値が初期値（例えば、ＮＵＬＬ等）か否かを判断する（Ｓ２３）。
【０２５５】
拡張ビットの値が初期値であった場合（Ｓ２３でＹｅｓの場合）、演算実行部８４２３は、拡張ビットの値を設定する（Ｓ２４）。演算実行部８４２３は、拡張ビットの値を上限値若しくは下限値に設定する。また、上限値若しくは下限値以外の任意の値に設定してもよい。
【０２５６】
演算実行部８４２３は、マスクビットがエントリへの書込みを許可しているか否かを判断する（Ｓ２５）。例えば、マスクビットが“１”である場合、書込みが許可されていると判断する。
【０２５７】
書込みが許可されていると判断した場合（Ｓ２５でＹｅｓの場合）、演算実行部８４２３は、拡張ビット格納部８４２２に格納されている値に対して演算処理を行う（Ｓ２６）。例えば、当該値をインクリメント又はデクリメントするという演算処理を行う。ここで、演算処理の結果が、拡張ビットの値の上限値を超過した場合、演算実行部８４２３は、演算処理の結果として拡張ビットの下限値を設定する。また、演算処理の結果が、拡張ビットの値の下限値を下回った場合、演算実行部８４２３は、演算処理の結果として拡張ビットの上限値を設定する。
【０２５８】
次に、図１６、図１７及び図１８を参照して、第２の実施形態において命令を実行した場合について説明する。なお、説明においては、ｍが４、ｘが２の場合、即ち、ベクトルレジスタ１のエントリ数が１６、物理ベクトルレジスタのエントリ数が４の場合について説明する。また、物理ベクトルレジスタの数は４であるものとして説明する。ベクトルレジスタ１には１つの論理ベクトルレジスタ番号（0番）が与えられ、また、論理ベクトルレジスタ0番の要素数は４であるものとする。つまり、ベクトルレジスタ１は、プログラムからは要素数が４（エントリ数が４）の１つの論理ベクトルレジスタとしてアクセスされる。
【０２５９】
図１６に、レジスタ・リネーミングを実行した場合における、論理ベクトルレジスタのエントリと、物理ベクトルレジスタのエントリとの対応表を示す。当該対応表に基づいて、論理ベクトルレジスタと物理ベクトルレジスタとの関連付けが行われる。なお、当該対応表は一例であり、関連付けはこれに限定されるものではない。
【０２６０】
図１７（ａ）〜（ｂ）及び図１８（ｃ）〜（ｄ）を参照して、論理ベクトルレジスタ０番にベクトルデータを書込む通常命令を１命令（以降、命令０）、マスク付き命令を２命令（以降、それぞれ命令Ｍ１、命令Ｍ２）実行した場合について説明する。なお、図１７及び図１８において、ベクトルレジスタ１のエントリをe0〜e15とし、各物理ベクトルレジスタのエントリをfe0〜fe3とする。なお、ベクトルレジスタ１のエントリe0〜e15のいずれか４つが、論理ベクトルレジスタ０番の４つのエントリのいずれかと対応付けられる。つまり、物理ベクトルレジスタのエントリと関連付けられる論理ベクトルレジスタ０番のエントリは、ベクトルレジスタ１のエントリのうちのいずれか４つのエントリとなる。
【０２６１】
図１７（ａ）に初期状態を示す。初期状態は、物理０拡張ビットレジスタ８２−０〜物理３拡張ビットレジスタ８２−３の全ての値が初期値（ここでは、ハイフン（−）で表す）となっているものとする。ベクトルレジスタ１の全エントリ、物理ベクトルレジスタ０番〜物理ベクトルレジスタ３番の全エントリは、それぞれ初期値（ここでは、ハイフン（−）で表す）となっているものとする。また、リネーム情報、最新状態情報共に初期値（ここでは、ハイフン（−）で表す）であるものとする。
【０２６２】
命令０を実行した場合について説明する。
【０２６３】
なお、命令の発行により、マスク部６、レジスタ管理部７００、レジスタ制御部１２に制御情報が渡される。以下、命令実行について説明する場合には、全て同様とする。
【０２６４】
命令０の論理ベクトルレジスタ０番は、レジスタ管理部７００においてレジスタ・リネーミングにより、物理ベクトルレジスタ２番が指定されるものとする。命令０は通常命令なので、マスク識別回路８４１の出力は“１”となる。マスク識別回路８４１の出力は、マスクビット格納部８４２１へ格納される。
【０２６５】
命令０は通常命令なので、各エントリに対応するマスク識別回路８４１の出力は、全て“１”となる。レジスタ管理部７００から送信された最新状態情報が初期値なので、ライトセレクタ８４０１により、ライト物理ベクトルレジスタ番号“２”に対応する物理２拡張ビットレジスタ８２−２の値が選択される。ライトセレクタ８４０１により選択された値は、拡張ビット格納部８４２２に格納される。演算回路８４２０は、マスクビット格納部８４２１に格納された値及び拡張ビット格納部８４２２に格納された値により演算処理を実行する。ここで、物理２拡張ビットレジスタ８２−２に格納されている値は初期値なので、演算回路８４２０は、ここでは、拡張ビットの下限値である“00”を演算結果として出力する。演算結果は、更新判定回路８４３により、パス８４４−２を介して、物理２拡張ビットレジスタ８２−２の対応するエントリに書込まれる。
【０２６６】
物理ベクトルレジスタ２番の各エントリと、論理ベクトルレジスタ０番の各エントリとの関連付けは、以下のように行われる。
【０２６７】
１）物理ベクトルレジスタ２番のエントリ０（fe0）に対応するＷＰ（２進数で“00”）により、物理０拡張ビットレジスタ８２−０〜物理ｎ拡張ビットレジスタ８２−ｎから、対応する１ビットの値が、拡張ビットレジスタ制御部８６により読み出される。読み出された値は、それぞれパス８２０−０〜パス８２０−ｎを介して更新部８４００へ送信される。
【０２６８】
２）マスク識別回路８４１は、マスク部６からパス６０を介して、ＷＰに対応するマスクレジスタの内容及びマスク情報を受信する。命令０は通常命令なので、マスク識別回路８４１は、マスク情報に基づいて１ビットの値“１”を演算回路８４２０へ出力する。
【０２６９】
３）ライトセレクタ８４０１は、パス７０を介してライト物理ベクトルレジスタ番号“２”を受信する。また、ライトセレクタ８４０１は、パス７０１を介して、最新状態情報を受信する。最新状態情報が初期値であるので、ライトセレクタ８４０１は、ライト物理ベクトルレジスタ番号“2”に対応するパス８２０−２を選択し、物理２拡張ビットレジスタの値である初期値を演算回路８４２へ送信する。ここで、初期値として、例えばＮＵＬＬデータ等が送信される。
【０２７０】
４）演算回路８４２０は、ライトセレクタ８４０１から受信した初期値が拡張ビット格納部８４２２に格納されているので、拡張ビットの下限値である“00”を演算結果として出力する。演算回路８４２０は、当該演算結果をパス８０を介してポインタ合成部９及び更新判定回路８４３へ送信する。演算結果は、ＷＥＸとしてポインタ合成部９へ送信される。
【０２７１】
５）更新判定回路８４３は、パス７０を介してライト物理ベクトルレジスタ番号“2”を受信する。また、更新判定回路８４３は、パス８０を介して演算回路８４２の演算結果を受信する。ライト物理ベクトルレジスタ番号が“2”なので、更新判定回路８４３は、パス８４４−２に対して演算結果及び更新指示を送信する。
【０２７２】
６）物理２拡張ビットレジスタ８２−２は、ＷＰと対応するエントリに、パス８４４−２を介して更新判定回路８４３から受信した演算結果を書込む。
【０２７３】
７）ポインタ合成部９は、パス８０を介して受信したＷＥＸと、パス４０を介して受信したＷＰからＷＰ合成回路９２によりライト拡張ポインタを生成する。ＷＥＸは“00”、ＷＰは“00”であるので、ライト拡張ポインタは２進数の“0000”となる。ライト拡張ポインタ “0000”は、図１６の対応表により、ベクトルレジスタ１のe0を指す。
【０２７４】
以上のようにして、論理ベクトルレジスタ０番エントリ０は、ベクトルレジスタ１のe0及び物理ベクトルレジスタ２番のfe0が関連付けられる。命令０により、ライト拡張ポインタ“0000”で指定されるベクトルレジスタ１のエントリe0にベクトルデータの要素が書込まれる。つまり、プログラムにより、論理ベクトルレジスタ０番のエントリ０に、ベクトルレジスタ１のe0に書込まれたベクトルデータの要素が書込まれるということである。また、物理的には、ベクトルレジスタ１のe0に対応する物理ベクトルレジスタ２番のエントリfe0にベクトルデータの要素が書込まれる。
【０２７５】
なお、物理ベクトルレジスタ２番のエントリ１以降は、ＷＰを＋１（インクリメント）して、上記 １）から物理ベクトルレジスタ１番のエントリ数分繰り返す。ＷＰが“00”〜“11”まで変化した際に物理ベクトルレジスタ２番と関連付けられるベクトルレジスタ１のエントリは、それぞれ、e0、e1、e2、e3となる。図１７（ｂ）において、fe0(e0)、fe1(e1)、fe2(e2)、fe3(e3)と表現する。また、論理ベクトルレジスタ０番の４つのエントリはそれぞれ、ベクトルレジスタ１のe0、e1、e2、e3と関連付けられる。
【０２７６】
図１７（ｂ）に、命令０の実行後の状態を示す。
【０２７７】
物理２拡張ビットレジスタ８２−２は、全てのビットの値が“00”となる。ベクトルレジスタ１のe0〜e3（即ち、論理ベクトルレジスタ０番のエントリ０〜３）はそれぞれＡ、Ｂ、Ｃ、Ｄが格納されている。このとき、物理ベクトルレジスタ２番の４つのエントリfe0〜fe3は、ベクトルレジスタ１のe0〜e3（即ち、論理ベクトルレジスタ０番のエントリ０〜３）のそれぞれが対応し、その内容は、Ａ、Ｂ、Ｃ、Ｄとなる。
【０２７８】
命令０の実行後、物理ベクトルレジスタ２番にはレジスタ・リネーミング後のレジスタ状態が保持され、他の物理ベクトルレジスタにはレジスタ・リネーミング前のレジスタ状態が保持されている。よって、レジスタ・リネーミングが正しく行われていることになる。
【０２７９】
次に、マスク付き命令である命令Ｍ１の実行について説明する。
【０２８０】
命令Ｍ１の論理ベクトルレジスタ０番は、レジスタ管理部７００においてレジスタ・リネーミングにより、物理ベクトルレジスタ０番が指定されるものとする。マスク識別回路８４１の出力は、マスクビット格納部８４２１へ格納される。
【０２８１】
命令Ｍ１はマスク付き命令であり、各エントリに対応するマスク識別回路８４１の出力は、それぞれ1、1、0、0となる。レジスタ管理部７００から送信された最新状態情報が物理ベクトルレジスタ２番を示す“2”であるので、ライトセレクタ８４０１により、物理２拡張ビットレジスタ８２−２の値が選択される。ライトセレクタ８４０１により選択された値は、拡張ビット格納部８４２２に格納される。演算回路８４２０は、マスクビット格納部８４２１に格納された値及び拡張ビット格納部８４２２に格納された値により演算処理を実行する。演算回路８４２０は、演算結果をポインタ合成部９及び更新判定回路８４３に送信する。演算結果は、更新判定回路８４３により、パス８４４−０を介して、物理０拡張ビットレジスタ８２−０の対応するエントリに書込まれる。ライト物理ベクトルレジスタ番号が“0”だからである。
【０２８２】
物理ベクトルレジスタ０番の各エントリと、論理ベクトルレジスタ０番の各エントリとの関連付けは、以下のように行われる。
【０２８３】
１−０）物理ベクトルレジスタ２番のエントリ０（fe0）に対応するＷＰ（２進数で“00”）により、物理０拡張ビットレジスタ８２−０〜物理ｎ拡張ビットレジスタ８２−ｎから、対応する１ビットの値が、拡張ビットレジスタ制御部８６により読み出される。読み出された値は、それぞれパス８２０−０〜パス８２０−ｎを介して更新部８４００へ送信される。
【０２８４】
２−０）マスク識別回路８４１は、マスク部６からパス６０を介して、ＷＰに対応するマスクレジスタの内容及びマスク情報を受信する。命令Ｍ１はマスク付き命令であり、エントリ０に対応する値は“1”である。マスク識別回路８４１は、マスクビット格納部８４２１へ出力する。
【０２８５】
３−０）ライトセレクタ８４０１は、パス７０を介してライト物理ベクトルレジスタ番号“0”を受信する。また、ライトセレクタ８４０１は、パス７０１を介して、最新状態情報を受信する。最新状態情報は“2”（実際は２進数で表現されるが、便宜上１０進数で表現する。以下同様とする。）であるので、ライトセレクタ８４０１は、パス８２０−２を選択し、物理２拡張ビットレジスタの値である“00”を演算回路８４２０の拡張ビット格納部８４２２へ送信する。
【０２８６】
４−０）演算回路８４２０は、マスクビット格納部８４２１の値と拡張ビット格納部８４２２に格納されている値により、演算処理を実行する。演算回路８４２０は、マスクビット格納部８４２１に格納されている値が“１”であるので、演算処理を実行する。ここでは、演算回路８４２０は、拡張ビット格納部８４２２に格納されている値の“00”を１だけインクリメントした“01”を演算結果として生成する。演算回路８４２０は、当該演算結果をパス８０を介してポインタ合成部９及び更新判定回路８４３へ送信する。演算結果は、ＷＥＸとしてポインタ合成部９へ送信される。
【０２８７】
５−０）更新判定回路８４３は、パス７０を介してライト物理ベクトルレジスタ番号“0”を受信する。また、更新判定回路８４３は、パス８０を介して演算回路８４２０の演算結果を受信する。ライト物理ベクトルレジスタ番号が“0”なので、更新判定回路８４３は、パス８４４−０に対して演算結果及び更新指示を送信する。
【０２８８】
６−０）物理０拡張ビットレジスタ８２−０は、ＷＰと対応するエントリに、パス８４４−０を介して受信した演算結果を書込む。
【０２８９】
７−０）ポインタ合成部９は、パス８０を介して受信したＷＥＸと、パス４０を介して受信したＷＰからＷＰ合成回路９２によりライト拡張ポインタを生成する。ＷＥＸは“01”、ＷＰは“00”であるので、ライト拡張ポインタは２進数の“0100”となる。ライト拡張ポインタ“0100”は、図１６の対応表により、ベクトルレジスタ１のe4を指す。
【０２９０】
物理ベクトルレジスタ０番のエントリ１以降も、上記と同様に関連付けが行われる。
【０２９１】
物理ベクトルレジスタ０番と関連付けられるベクトルレジスタ１のエントリは、それぞれ、e4、e5、e2、e3となる。図１８（ｃ）において、fe0(e4)、fe1(e5)、fe2(e2)、fe3(e3)と表現する。また、論理ベクトルレジスタ０番の４つのエントリはそれぞれ、ベクトルレジスタ１のe4、e5、e2、e3と関連付けられる。
【０２９２】
図１８（ｃ）に、命令Ｍ１の実行後の状態を示す。
【０２９３】
物理０拡張ビットレジスタ８２−０の値は、それぞれ“01”、“01”、“00”、“00”となる。ベクトルレジスタ１のe4及びe5にはそれぞれE、Ｆが格納されている。このとき、物理ベクトルレジスタ０番の４つのエントリfe0〜fe3は、ベクトルレジスタ１のe4、e5、e2、e3（即ち、論理ベクトルレジスタ０番のエントリ０〜３）のそれぞれが対応し、その内容は、Ｅ、Ｆ、Ｃ、Ｄとなる。
【０２９４】
命令Ｍ１の実行後、物理ベクトルレジスタ０番にはレジスタ・リネーミング後のレジスタ状態が保持され、他の物理ベクトルレジスタにはレジスタ・リネーミング前のレジスタ状態が保持されている。よって、レジスタ・リネーミングが正しく行われていることになる。
【０２９５】
命令Ｍ２も、上記と同様の処理により実行される。
【０２９６】
図１８（ｄ）に命令Ｍ２の実行後の状態を示す。命令Ｍ１の実行後と同様、レジスタ・リネーミングが正しく実行されている。
【０２９７】
以上のように、本発明の第２の実施形態によれば、ベクトルレジスタのエントリ数、物理ベクトルレジスタのエントリ数及び物理ベクトルレジスタの数を任意に設定した場合でも、マスク演算の実行時において、ベクトルレジスタについてレジスタ・リネーミングが可能となる。これにより、ベクトルデータを用いる処理において、命令の実行性能の向上を図ることが可能になる。なお、ベクトルデータを処理する情報処理装置において、ベクトルデータを格納するベクトルレジスタの数は非常に多くなるので、ベクトルレジスタのエントリ数、物理ベクトルレジスタのエントリ数及び物理ベクトルレジスタの数を任意に設定した場合においても、レジスタ・リネーミングを可能とし、命令の実行性能の向上が図れるという効果は格別のものである。
【図面の簡単な説明】
【０２９８】
【図１】本発明の第１の実施形態における情報処理装置を説明するためのブロック図である。
【図２】本発明の第１の実施形態を説明するための表である。
【図３】本発明の第１の実施形態を説明するための図である。
【図４】本発明の第１の実施形態における拡張ビット部を説明するためのブロック図である。
【図５】本発明の第１の実施形態における更新部を説明するためのブロック図である。
【図６】本発明の第１の実施形態におけるポインタ合成部を説明するためのブロック図である。
【図７】本発明の第１の実施形態を説明するための図である。
【図８】本発明の第１の実施形態を説明するための図である。
【図９】本発明の第１の実施形態を説明するためのフローチャートである。
【図１０】本発明の第２の実施形態を説明するための表である。
【図１１】本発明の第２の実施形態における情報処理装置を説明するためのブロック図である。
【図１２】本発明の第２の実施形態における拡張ビット部を説明するためのブロック図である。
【図１３】本発明の第２の実施形態における更新部を説明するためのブロック図である。
【図１４】本発明の第２の実施形態における演算回路を説明するためのブロック図である。
【図１５】本発明の第２の実施形態の動作を説明するためのフローチャートである。
【図１６】本発明の第２の実施形態を説明するための表である。
【図１７】本発明の第２の実施形態を説明するための図である。
【図１８】本発明の第２の実施形態を説明するための図である。
【符号の説明】
【０２９９】
１  ベクトルレジスタ
２  ＷＤレジスタ
３  ＲＤレジスタ
４  ＷＰレジスタ
５  ＲＰレジスタ
６  マスク部
７  レジスタ管理部
７００  レジスタ管理部
８  拡張ビット部
８００  拡張ビット部
８２  物理０拡張ビットレジスタ
８２−０〜８２−ｎ  物理ｎ拡張ビットレジスタ
８３  物理１拡張ビットレジスタ
８４  更新部
８４００  更新部
８４０  ライトセレクタ
８４０１  ライトセレクタ
８４１  マスク識別回路
８４２  演算回路
８４２０  演算回路
８４２１  マスクビット格納部
８４２２  拡張ビット格納部
８４２３  演算実行部
８４３  更新判定回路
８０００  拡張ビット格納部
８５  リードセレクタ
８６  拡張ビットレジスタ制御部
９  ポインタ合成部
９２  ＷＰ合成回路
９３  ＲＰ合成回路
１０  ＷＥレジスタ
１１  ＷＥ制御部
１２  レジスタ制御部
１３  情報処理装置
【図１】
2008083947.tif 000003
【図２】
2008083947.tif 000004
【図３】
2008083947.tif 000005
【図４】
2008083947.tif 000006
【図５】
2008083947.tif 000007
【図６】
2008083947.tif 000008
【図７】
2008083947.tif 000009
【図８】
2008083947.tif 000010
【図９】
2008083947.tif 000011
【図１０】
2008083947.tif 000012
【図１１】
2008083947.tif 000013
【図１２】
2008083947.tif 000014
【図１３】
2008083947.tif 000015
【図１４】
2008083947.tif 000016
【図１５】
2008083947.tif 000017
【図１６】
2008083947.tif 000018
【図１７】
2008083947.tif 000019
【図１８】
2008083947.tif 000020