JP5000248B2 - Information processing apparatus and information processing method - Google Patents
Information processing apparatus and information processing method Download PDFInfo
- Publication number
- JP5000248B2 JP5000248B2 JP2006262640A JP2006262640A JP5000248B2 JP 5000248 B2 JP5000248 B2 JP 5000248B2 JP 2006262640 A JP2006262640 A JP 2006262640A JP 2006262640 A JP2006262640 A JP 2006262640A JP 5000248 B2 JP5000248 B2 JP 5000248B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- physical
- vector register
- entry
- path
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
この発明は、複数のデータを格納可能なレジスタを用いて様々な演算を実行する情報処理装置において、レジスタ・リネーミングが可能な情報処理装置に関し、特に、マスク付き演算を実行する際にもレジスタ・リネーミングが可能な情報処理装置に関する。 The present invention relates to an information processing apparatus capable of register renaming in an information processing apparatus that performs various operations using a register capable of storing a plurality of data, and more particularly to a register even when executing a masked operation. -It relates to an information processing apparatus capable of renaming.
従来、特許文献1に記載されるように、レジスタ・リネーミングにより、情報処理装置における命令の実行性能の向上を図る技術が存在する。
Conventionally, as described in
なお、レジスタ・リネーミングとは、複数の命令を実行する際に、同一のレジスタに対してデータの読み書きが生じた場合、別のレジスタを仮想的に同一のレジスタとみなすことによって、レジスタの競合を回避する技術である。 Note that register renaming refers to register contention by regarding another register as virtually the same register when data is read from or written to the same register when executing multiple instructions. This is a technique for avoiding
しかし、複数のデータを格納可能なレジスタを用いて演算を実行する情報処理装置において、従来技術に基づいてレジスタ・リネーミングを実行すると、以下の問題が生じる。 However, when register renaming is executed based on the prior art in an information processing apparatus that executes an operation using a register capable of storing a plurality of data, the following problems occur.
マスク付き演算を実行する命令においてレジスタ・リネーミングを行うと、データ化けが生じてしまう。 If register renaming is performed in an instruction that executes an operation with a mask, data corruption occurs.
これは、レジスタ・リネーミングにより論理レジスタと物理レジスタとを対応付ける際に、物理レジスタ番号と、データ格納位置の指定に用いるWP(ライトポインタ)又はRP(リードポインタ)とを合成し、論理レジスタのデータ格納位置を指定するためのポインタを生成しているからである。物理レジスタの全てのデータ格納位置が、物理レジスタ番号を用いて論理レジスタのデータ格納位置と対応付けられるので、物理レジスタ単位でしか論理レジスタと関連付けができない。つまり、論理レジスタと関連付けられている物理レジスタを、レジスタ・リネーミングにより他の物理レジスタに変更すると、それに伴い、レジスタ・リネーミング前に物理レジスタのそれぞれのデータ格納位置と関連付けられていた論理レジスタのデータ格納位置の全てが、新たな論理レジスタのデータ格納位置に変更されて、論理レジスタと他の物理レジスタが関連付けられる。具体的には以下のようになる。 This is because when registering a logical register and a physical register by register renaming, the physical register number and the WP (write pointer) or RP (read pointer) used for designating the data storage position are synthesized, and the logical register This is because a pointer for designating the data storage position is generated. Since all the data storage positions of the physical register are associated with the data storage position of the logical register using the physical register number, it can be associated with the logical register only in physical register units. In other words, when a physical register associated with a logical register is changed to another physical register by register renaming, the logical register associated with each data storage location of the physical register before register renaming All of the data storage positions are changed to the data storage positions of the new logical register, and the logical register and other physical registers are associated with each other. Specifically:
物理レジスタ0番及び1番が4つのデータを格納可能であるものとし、それぞれのデータ格納位置は、WP又はRPにより“00”、“01”、“10”、“11”(2bitの2進数)と表現される。論理レジスタと物理レジスタ0番が関連付けられる場合、物理レジスタ番号の“0”と、WP又はRPの“00”、“01”、“10”、“11”のそれぞれが合成され、“000”、“001”、“010”、“011”で表現される論理レジスタのデータ格納位置と物理レジスタ0番のデータ格納位置が関連付けられる。その後、レジスタ・リネーミングにより、論理レジスタと物理レジスタ1番を関連付けると、物理レジスタ番号の“1”と、“00”、“01”、“10”、“11”がそれぞれ合成され、“100”、“101”、“110”、“111”で表現される論理レジスタのデータ格納位置と物理レジスタ1番のデータ格納位置が関連付けられる。このように、従来技術によると、レジスタ・リネーミングにより、物理レジスタと関連付けられている論理レジスタのデータ格納位置の全てが変更されてしまう。つまり、物理レジスタ毎に、レジスタ・リネーミングにより関連付けられる論理レジスタのデータ格納位置が固定されてしまう。
Assume that physical registers No. 1 and No. 1 can store four data, and each data storage location is “00”, “01”, “10”, “11” (2-bit binary number) by WP or RP. ). When the logical register and the
従って、マスク付き命令の実行時にレジスタ・リネーミングをすると、データの書込みを実行すべきでないデータ格納位置も含めて、物理レジスタの内容が置換されてしまう。このように、従来の技術では、マスク付き演算を実行する際には、レジスタ・リネーミングを抑止する必要があり、命令の実行性能の向上に支障が生じていた。 Therefore, if register renaming is performed when an instruction with a mask is executed, the contents of the physical register are replaced, including the data storage position where data writing should not be executed. As described above, in the conventional technique, it is necessary to suppress register renaming when executing an operation with a mask, which hinders improvement in instruction execution performance.
この発明は上記課題を鑑みてなされたもので、マスク付き命令の実行時でも、複数のデータを格納可能なレジスタについてレジスタ・リネーミングを実行可能とすることを目的とする。 The present invention has been made in view of the above problems, and an object of the present invention is to enable register renaming for a register capable of storing a plurality of data even when a masked instruction is executed.
上記課題を解決するため、本発明の情報処理装置は、データを格納するための複数の第1の格納領域を備える複数の第1の記憶領域と、前記データを格納するための複数の第2の格納領域を備え、位置指定情報により前記第2の格納領域が指定される第2の記憶領域と、前記第1の格納領域の指定に用いる第1のデータと、前記第1のデータにより指定された前記第1の格納領域に対応する第2のデータとを合成して前記位置指定情報を生成する制御部とを含むことを特徴とする。 In order to solve the above problems, an information processing apparatus according to the present invention includes a plurality of first storage areas including a plurality of first storage areas for storing data, and a plurality of second storage areas for storing the data. A second storage area in which the second storage area is designated by position designation information, first data used for designation of the first storage area, and designation by the first data And a controller that synthesizes the second data corresponding to the first storage area thus generated to generate the position designation information.
本発明は、第1の記憶領域の第1の格納領域の指定に用いる第1のデータと、第1のデータにより指定された第1の格納領域に対応する第2のデータ、とを合成して、第2の格納領域を指定するための位置指定情報を生成することにより、第1の記憶領域毎に、関連付けをする第2の格納領域を指定することが可能となる。よって、マスク付き演算実行時にレジスタ・リネーミングを行う場合でも、データの書き込みが必要な格納領域のみを指定してレジスタ・リネーミングによる関連付けを行うことが可能となる。このように、本発明によると、マスク付き演算を実行する場合においても、複数のデータを格納可能なレジスタについてレジスタ・リネーミングを行うことが可能となり、命令の実行性能を効果的に向上することができるという格別の効果が得られる。 The present invention combines the first data used for designating the first storage area of the first storage area and the second data corresponding to the first storage area designated by the first data. Thus, by generating position designation information for designating the second storage area, it becomes possible to designate the second storage area to be associated for each first storage area. Therefore, even when register renaming is performed during execution of an operation with a mask, it is possible to specify only a storage area where data writing is required and perform association by register renaming. As described above, according to the present invention, it is possible to perform register renaming for a register capable of storing a plurality of data even when executing an operation with a mask, thereby effectively improving instruction execution performance. The special effect of being able to do is obtained.
次に、本発明の実施の形態について説明する。なお、以下において、複数のデータを格納可能なレジスタの一例として、ベクトルレジスタを用いて説明する。しかし、本発明は、ベクトルレジスタに限定されるものではなく、あるレジスタに、データを格納するための格納領域(エントリ)が複数設けられているものについて本発明を適用可能である。 Next, an embodiment of the present invention will be described. In the following description, a vector register is used as an example of a register capable of storing a plurality of data. However, the present invention is not limited to the vector register, and the present invention can be applied to a register in which a plurality of storage areas (entries) for storing data are provided.
(第1の実施形態)
図1を参照し、本発明の第1の実施形態について説明する。
(First embodiment)
A first embodiment of the present invention will be described with reference to FIG.
図1を参照すると、本発明の第1の実施形態における情報処理装置13は、ベクトルレジスタ1、WDレジスタ2、RDレジスタ3、WPレジスタ4、RPレジスタ5、マスク部6、レジスタ管理部7、拡張ビット部8、ポインタ合成部9、WEレジスタ10、WE制御部11及びレジスタ制御部12を有する。
Referring to FIG. 1, an
ベクトルレジスタ1は、プログラムからは論理ベクトルレジスタとしてアクセスされる。ベクトルレジスタ1には、論理ベクトルレジスタ番号が付与される。論理ベクトルレジスタ番号とは、プログラムによりベクトルレジスタ1にアクセスする際の識別子(例えば変数)である。プログラムからは、ベクトルレジスタ1に対して論理ベクトルレジスタ番号に基づいてアクセスされる。
The
また、ベクトルレジスタ1は、物理ベクトルレジスタにより構成される。物理ベクトルレジスタとは、演算の対象となるデータの物理的な格納場所である。
The
ベクトルレジスタ1は、演算に用いるデータを格納するためのエントリを有する。物理ベクトルレジスタも、演算に用いるデータを格納するためのエントリを有する。
The
論理ベクトルレジスタと物理ベクトルレジスタは、レジスタ・リネーミングにより関連付けられる。論理ベクトルレジスタ及び物理ベクトルレジスタのそれぞれのエントリは、ポインタを用いてその位置が指定される。本発明は、レジスタ・リネーミングにおいて、論理ベクトルレジスタと物理ベクトルレジスタとを、エントリ毎に関連付ける。物理ベクトルレジスタのエントリ毎に対応付けられた拡張ビットを設け、ポインタ合成部9が当該拡張ビットと物理ベクトルレジスタのエントリの位置を指定するためのポインタとを合成し、論理ベクトルレジスタのエントリを指定するためのポインタを作成する。つまり、物理ベクトルレジスタのエントリ毎に、 論理ベクトルレジスタのエントリと対応するポインタが作成される。これにより、演算実行時に、データを書込む論理ベクトルレジスタのエントリを、物理ベクトルレジスタのエントリ毎に関連付けることが可能となる。
The logical vector register and the physical vector register are associated by register renaming. The position of each entry of the logical vector register and the physical vector register is designated by using a pointer. The present invention associates a logical vector register and a physical vector register for each entry in register renaming. An extension bit associated with each entry of the physical vector register is provided, and the
次に、図1に示す各構成について、それぞれ説明する。 Next, each configuration shown in FIG. 1 will be described.
ベクトルレジスタ1は、演算の対象となる一連の順序付けられたベクトルデータを格納する。ベクトルレジスタ1は、複数のエントリを有し、ベクトルデータはエントリ毎に格納される。なお、ベクトルデータは、複数のワード(以下、要素という)で構成される。ワードとは、1つのデータの単位である。よって、ベクトルレジスタ1の各エントリには、ベクトルデータの要素が格納されることになる。命令で指定された数の要素が、ポインタで指定されたベクトルレジスタ1のエントリから1マシンサイクルに1要素ずつ読み出される。また、演算結果のベクトルデータが、ポインタで指定されたベクトルレジスタ1のエントリに順に格納される。ベクトルレジスタ1は、所定の要素数からなる論理ベクトルレジスタで構成される。つまり、論理ベクトルレジスタは、所定の要素数の単位でアクセスされる。論理ベクトルレジスタには、論理ベクトルレジスタ番号が与えられ、ベクトルレジスタ1はプログラムから論理ベクトルレジスタ番号によりアクセスされる。つまり、ベクトルレジスタ1は、プログラムから所定の要素数の単位でアクセスされる仮想的なレジスタである。論理ベクトルレジスタは、ベクトルレジスタ1のエントリのうちの所定の要素数の分のエントリにより構成される。また、ベクトルレジスタ1は、所定の数の物理ベクトルレジスタにより構成される。よって、プログラムによりベクトルレジスタ1のエントリに読み書きされた要素は、物理的に、対応する物理ベクトルレジスタのエントリに読み書きされる。つまり、論理ベクトルレジスタのエントリと物理ベクトルレジスタのエントリは1対1に対応している。物理ベクトルレジスタには、物理ベクトルレジスタ番号が付与され、物理ベクトルレジスタは当該番号により指定される。
The
WDレジスタ2は、ベクトルレジスタ1に書込むベクトルデータの要素を一時的に格納する。なお、WDは、“ライトデータ”と読む。
The WD
RDレジスタ3は、ベクトルレジスタ1から読み出されたベクトルデータの要素を一時的に格納する。なお、RDは、“リードデータ”と読む。
The
WPレジスタ4は、物理ベクトルレジスタの各エントリとそれぞれ対応するWPを格納する。WPレジスタ4は、ベクトルレジスタ1への書き込みに同期してWPの値に1を加算する。WPレジスタ4は、パス40を介して、WPを拡張ビット部8とポインタ合成部9に通知する。なお、WPは、“ライトポインタ”と読む。
The WP register 4 stores a WP corresponding to each entry of the physical vector register. The
RPレジスタ5は、物理ベクトルレジスタの各エントリとそれぞれ対応するRPを格納する。RPレジスタ5は、ベクトルレジスタ1からの読み出しに同期してRPの値に1を加算する。RPレジスタ5は、パス50を介して、RPを拡張ビット部8とポインタ合成部9に通知する。なお、RPは、“リードポインタ”と読む。
The RP register 5 stores an RP corresponding to each entry of the physical vector register. The
マスク部6は、論理ベクトルレジスタの要素数と同じ数のビット数で構成される。このことは、つまり、物理ベクトルレジスタの要素数と同じ数のビット数で構成されるということも意味する。マスク部6は、それぞれのビットが、要素が格納されている論理ベクトルレジスタの各エントリのそれぞれに対応するマスクレジスタを有する。マスクレジスタのそれぞれのビットは、要素が格納されている物理ベクトルレジスタの各エントリのそれぞれにも対応する。マスク部6は、マスクレジスタの設定により、マスク付き演算が実行される際に命令で指定された論理ベクトルレジスタに演算結果を書込むか否かを、要素が格納されているエントリ毎に指定する。マスク部6は、書き込みを行うエントリに格納されている要素(以下、有効要素という)に対応するマスクレジスタのビットに“1”を設定する。また、マスク部6は、書き込みを行わないエントリに格納されている要素(以下、無効要素という)に対応するマスクレジスタのビットに“0”を設定する。マスク部6は、拡張ビット部8とWE制御部11に対して、パス60を介して、書き込みを行うエントリに対応するマスクレジスタの内容1ビットと、そのマスクレジスタの値を使用するか否かをマスク情報として通知する。
The
レジスタ管理部7は、レジスタ・リネーミングを行う際に、論理ベクトルレジスタと物理ベクトルレジスタとの対応関係を制御する。レジスタ管理部7は、書き込みが実行される物理ベクトルレジスタ番号をライト物理ベクトルレジスタ番号とし、読込みが実行される物理ベクトルレジスタ番号をリード物理ベクトルレジスタ番号として、それぞれ管理する。レジスタ管理部7は、ライト物理ベクトルレジスタ番号を、パス70を介して拡張ビット部8に通知する。レジスタ管理部7は、リード物理ベクトルレジスタ番号を、パス71を介して拡張ビット部8に通知する。ライト物理ベクトルレジスタ番号及びリード物理ベクトルレジスタ番号は、2進数で送信される。また、レジスタ管理部7は、ベクトルレジスタ1のエントリ毎に、エントリ内のベクトルデータの要素が使用中であるか否かを示すフラグを有する。このことは、同時に、レジスタ管理部7は、論理ベクトルレジスタのエントリ毎に、エントリ内のベクトルデータの要素が使用中であるか否かを管理することを意味する。使用中とは、当該要素を他の要素に上書きすることができない状態をいう。フラグは、例えば1ビットの値とし、エントリ内の要素が使用中であれば“1”、そうでなければ“0”を示すというように構成すればよい。レジスタ管理部7は、全エントリ分のフラグを、パス72を介してポインタ合成部9に送信する。なお、レジスタ管理部7は、フラグの内容が更新される度に、全エントリ分のフラグをパス72を介してポインタ合成部9に送信する。レジスタ管理部7は、レジスタ・リネーミング後の論理ベクトルレジスタと物理ベクトルレジスタとのエントリ毎の対応関係を管理する。つまり、レジスタ管理部7は、論理ベクトルレジスタの要素数の単位で、物理ベクトルレジスタとのエントリ毎の対応関係を管理する。
The
拡張ビット部8は、WPとRPを、それぞれパス40、パス50経由で受信する。拡張ビット部8は、マスク部6からパス60を経由してマスク情報を受信する。拡張ビット部8は、レジスタ管理部7からライト物理ベクトルレジスタ番号、リード物理ベクトルレジスタ番号を、それぞれパス70、パス71から受信する。拡張ビット部8は、物理ベクトルレジスタの各エントリと1対1に対応する拡張ビットを生成する。拡張ビット部8は、WPで指定されるエントリに対応した拡張ビットを生成し、ライト拡張ビット(以下 WEX)としてパス80を介してポインタ合成部9に通知する。拡張ビット部8は、RPで指定されるエントリに対応した拡張ビットを生成し、リード拡張ビット(以下 REX)としてパス81を介してポインタ合成部9に通知する。なお、拡張ビット部8は、拡張ビットを、対応するエントリ毎に格納する拡張ビットレジスタを備える。拡張ビット部8は、物理ベクトルレジスタのそれぞれに対応した拡張ビットレジスタを備える。
The
ポインタ合成部9は、WP、RPを、それぞれパス40、パス50経由で受信する。拡張ビット部8から、WEX、REXを、それぞれパス80、パス81経由で受信する。ポインタ合成部9は、WPとWEXから、ベクトルレジスタ1に対してベクトルデータを書込むエントリを指定するための、ライト拡張ポインタを生成する。また、ポインタ合成部9は、RPとREXから、ベクトルレジスタ1に対してベクトルデータを読み出すエントリを指定するための、リード拡張ポインタを生成する。ポインタ合成部9は、ライト拡張ポインタ、リード拡張ポインタを、それぞれパス90、パス91を経由してベクトルレジスタ1に送信する。ポインタ合成部9は、パス72を介してレジスタ管理部7からエントリの使用可否を示すフラグを受信する。ポインタ合成部9は、WEXから生成したライト拡張ポインタに対応するベクトルレジスタ1のエントリの使用可否を、レジスタ管理部7から受信したフラグを用いて判断する。ポインタ合成部9は、ライト拡張ポインタに対応するエントリが使用不可の場合、パス80を介して受信したWEXの値を変更し、新たなライト拡張ポインタを生成する。ポインタ合成部9は、生成した新たなライト拡張ポインタを、パス94を介して拡張ビット部8へ送信する。
The
WEレジスタ10は、ベクトルレジスタ1に対して、書き込みの動作タイミングを指示する。WEレジスタ10には、WDレジスタ2に有効な書き込みデータが存在する場合には“1”、存在しない場合には“0”が格納される。WEレジスタ10は、自己に格納されている値を、WE制御部11に通知する。なお、WEは“ライトイネーブル”と読む。
The WE register 10 instructs the
WE制御部11は、WEレジスタ10の値と、マスク部6からパス60を介してマスク情報を受信する。マスク情報によりマスクレジスタの値を使用することが通知された場合、WE制御部11は、マスクビットとWEレジスタ10の値の論理積を計算し、WE信号としてベクトルレジスタ1へ送信する。また、マスク情報によりマスクレジスタの値を使用しないことが通知された場合、WEレジスタ10の値をそのままWE信号としてベクトルレジスタ1に送信する。ベクトルレジスタ1では、WE信号が“1”のときに書き込みが実行され、“0”のときには書き込みは実行されない。
The
レジスタ制御部12は、命令発行をトリガとし、WPレジスタ4とRPレジスタ5の動作タイミング、拡張ビット部8における拡張ビットレジスタの動作タイミング、WEレジスタ10の動作タイミングを制御する。
The
以下において、ベクトルレジスタ1は、要素数4の1つの論理ベクトルレジスタ(論理ベクトルレジスタ0番)からなり、物理ベクトルレジスタ2個(物理ベクトルレジスタ0番及び1番)からなる構成により、本発明の第1の実施形態についてより詳細に説明する。なお、各物理ベクトルレジスタの要素数も4であるものとする。
In the following, the
まず、論理ベクトルレジスタの各エントリと、物理ベクトルレジスタのエントリとの関連付けについて説明する。 First, the association between each entry in the logical vector register and the entry in the physical vector register will be described.
図2に、物理ベクトルレジスタの各エントリと、論理ベクトルレジスタの各エントリとの関連付けの対応表を示す。図2を用いて、物理ベクトルレジスタ0番についての関連付けについて説明する。なお、図2において、WPレジスタ4の値を用いて関連付けについて説明するが、RPレジスタ5の値を用いて関連付けを行うことも可能である。
FIG. 2 shows a correspondence table of association between each entry in the physical vector register and each entry in the logical vector register. The association with respect to the physical vector register No. 0 will be described with reference to FIG. In FIG. 2, the association is described using the value of the
関連付けのために、物理ベクトルレジスタ0番に対応する拡張ビットレジスタ(以下、物理0拡張ビットレジスタ)に格納されている拡張ビットを用いる。
For the association, an extension bit stored in an extension bit register (hereinafter, physical 0 extension bit register) corresponding to the
物理ベクトルレジスタ0番のエントリ00(2進数の“00”で、エントリの番号を表現)は、WPレジスタ4の値“00”(2進数)と、WPレジスタ4の値“00”に対応する物理0拡張ビットレジスタの値を用いて、論理ベクトルレジスタのエントリと関連付けられる。物理0拡張ビットレジスタの値が“0”の場合、当該値とWPレジスタ4の値“00”を合成して生成されるライト拡張ポインタは“000”(2進数)となり、ベクトルレジスタ1のエントリe0(即ち、論理ベクトルレジスタのエントリ0)と関連付けられる。物理0拡張ビットレジスタの値が“1”のとき、物理ベクトルレジスタ0番は、ライト拡張ポインタは“100”となり、ベクトルレジスタ1のエントリe4(即ち、論理ベクトルレジスタのエントリ0)と関連付けられる。物理ベクトルレジスタ1番についても、物理1拡張ビットレジスタの値を用いて同様に関連付けが実行される。このように、図2に示した対応表に基づいて、関連付けが実行される。ただし、図2は一例であり、図2に示した対応表による関連付けに限定されるものではない。
The
図3を用いて、関連付けについて具体的に説明する。 The association will be specifically described with reference to FIG.
ベクトルレジスタ1は、エントリe0〜e7を有する。ベクトルレジスタ1は、上述したように、要素数4の論理ベクトルレジスタにより構成される。つまり、命令実行時に、ベクトルレジスタ1の8つのエントリ(e0〜e7)のうちの4つのエントリが論理ベクトルレジスタを構成する。また、物理ベクトルレジスタ0番及び1番は、それぞれ、エントリfe0〜fe3を有する。ベクトルレジスタ1のe0〜e7の内容が、A,B、C,D、E,K、初期値(−)、Hとする。物理0拡張ビットレジスタの内容が、0101である場合、WPレジスタ4の対応する値と物理0拡張ビットレジスタのそれぞれの値を合成し、物理ベクトルレジスタ0番のエントリfe0〜fe3は、それぞれ、e0、e5、e2、e7と関連付けられる。図3では、fe0(e0)、fe1(e5)、fe2(e2)、fe3(e7)と表す。物理ベクトルレジスタ0番の内容は、A、K、C、Hとなる。これにより、論理ベクトルレジスタの4つのエントリはそれぞれ、ベクトルレジスタ1のe0、e5、e2、e7と関連付けられる。
The
物理1拡張ビットレジスタの内容が、1001である場合、WPレジスタ4の対応する値と物理1拡張ビットレジスタのそれぞれの値を合成し、物理ベクトルレジスタ1番のエントリfe0〜fe3は、それぞれ、e4、e1、e2、e7と関連付けられる。図3では、fe0(e4)、fe1(e1)、fe2(e2)、fe3(e7)と表す。物理ベクトルレジスタ1番の内容は、E、B、C、Hとなる。これにより、論理ベクトルレジスタの4つのエントリはそれぞれ、ベクトルレジスタ1のe4、e1、e2、e7と関連付けられる。
When the contents of the physical 1 extension bit register are 1001, the corresponding values of the
以上のように、物理ベクトルレジスタの各エントリと、論理ベクトルレジスタの各エントリが、エントリ毎に関連付けられる。 As described above, each entry in the physical vector register and each entry in the logical vector register are associated with each entry.
次に、図4及び図5を用いて、拡張ビット部8について詳細に説明する。
Next, the
拡張ビット部8は、物理ベクトルレジスタ0番、物理ベクトルレジスタ1番にそれぞれ対応する物理0拡張ビットレジスタ82、物理1拡張ビットレジスタ83を有する。また、拡張ビット部8は、更新部84、リードセレクタ85、拡張ビットレジスタ制御部86を有する。
The
物理0拡張ビットレジスタ82は、物理ベクトルレジスタ0番の各エントリのそれぞれに対応した1ビットの値を格納する。物理0拡張ビットレジスタ82が格納する値は、WP、RPそれぞれの値のビット数を1ビット拡張するために用いられる。
The physical 0 extension bit register 82 stores a 1-bit value corresponding to each entry of the
物理1拡張ビットレジスタ83は、物理ベクトルレジスタ1番の各エントリのそれぞれに対応した1ビットの値を格納する。物理1拡張ビットレジスタ83が格納する値は、WP、RPそれぞれの値のビット数を1ビット拡張するために用いられる。
The physical 1 extension bit register 83 stores a 1-bit value corresponding to each entry of the
物理0拡張ビットレジスタ82、物理1拡張ビットレジスタ83と更新部84は、それぞれパス820、パス830を介して接続される。
The physical 0 extension bit register 82, the physical 1 extension bit register 83, and the
物理0拡張ビットレジスタ82、物理1拡張ビットレジスタ83とリードセレクタ85は、それぞれパス821、パス831を介して接続される。 The physical 0 extension bit register 82, the physical 1 extension bit register 83, and the read selector 85 are connected through a path 821 and a path 831, respectively.
更新部84は、パス820を介して物理0拡張ビットレジスタ82から1ビットの値を受信する。また、更新部84は、パス830を介して物理1拡張ビットレジスタ83から1ビットの値を受信する。更新部84は、パス70を介してライト物理ベクトルレジスタ番号を受信し、パス60経由でマスク情報を受信する。更新部84は、物理0拡張ビットレジスタ82若しくは物理1拡張ビットレジスタ83の内容を更新するための新たな値、及び、WEXを生成する。更新部84は、パス844を介して物理0拡張ビットレジスタの内容を更新する。また、更新部84は、パス845を介して物理1拡張ビットレジスタの内容を更新する。
The
リードセレクタ85は、パス821を介して物理0拡張ビットレジスタ82から1ビットの値を受信する。リードセレクタ85は、パス831を介して物理1拡張ビットレジスタ83から1ビットの値を受信する。また、リードセレクタ85は、パス71を介してリード物理ベクトルレジスタ番号を受信する。リードセレクタ85は、物理0拡張ビットレジスタ82、物理1拡張ビットレジスタ83からそれぞれ受信した1ビットの値のいずれかを、リード物理ベクトルレジスタ番号に基づいて選択する。リード物理ベクトルレジスタ番号が物理ベクトルレジスタ0番を指定している場合、リードセレクタ85は、パス821を選択し、物理0拡張ビットレジスタから受信した値を選択する。リード物理ベクトルレジスタが物理ベクトルレジスタ1番を指定している場合、リードセレクタ85は、パス831を選択し、物理1拡張ビットレジスタから受信した値を選択する。
The read selector 85 receives a 1-bit value from the physical 0 extension bit register 82 via the path 821. The read selector 85 receives a 1-bit value from the physical 1 extension bit register 83 via the path 831. The read selector 85 receives the read physical vector register number via the path 71. The read selector 85 selects one of the 1-bit values received from the physical 0 extension bit register 82 and the physical 1 extension bit register 83 based on the read physical vector register number. When the read physical vector register number specifies
拡張ビットレジスタ制御部86は、レジスタ制御部12からの指示により、物理0拡張ビットレジスタ82、物理1拡張ビットレジスタ83を制御する。つまり、拡張ビットレジスタ制御部86は、物理0拡張ビットレジスタ82、物理1拡張ビットレジスタ83の動作タイミングを制御する。
The extension bit
物理0拡張ビットレジスタ82は、物理ベクトルレジスタ0番のエントリ数、つまり物理ベクトルレジスタ0番に格納される要素数の分の1ビットの値を保持する。物理0拡張ビットレジスタ82が保持する値のそれぞれは、物理ベクトルレジスタ0番の各エントリと1対1に対応する。WP、RPにより、物理ベクトルレジスタ0番のエントリに対応する物理0拡張ビットレジスタ82の値が読み出される。これは、WP、RPが物理ベクトルレジスタの各エントリと1対1に対応しているからである。
The physical 0 extension bit register 82 holds a value of 1 bit of the number of entries of the
WPによって読み出された値は、パス820を介して更新部84へ送信される。RPによって読み出された値は、パス821を介してリードセレクタ85へ送信される。
The value read by the WP is transmitted to the
物理0拡張ビットレジスタ82は、パス844を介して、更新部84からの指示により対応する物理0拡張ビットレジスタ82のエントリの内容を更新する。
The physical 0 extension bit register 82 updates the contents of the entry of the corresponding physical 0 extension bit register 82 via the
物理0拡張ビットレジスタ82に格納されている値は、ポインタ合成部9で生成されるリード拡張ポインタ又はライト拡張ポインタ(いずれも2進数)の最上位ビットとなる。
The value stored in the physical 0 extension bit register 82 is the most significant bit of the read extension pointer or write extension pointer (both binary numbers) generated by the
物理1拡張ビットレジスタ83は、物理ベクトルレジスタ1番のエントリ数、つまり物理ベクトルレジスタ1番に格納される要素数の分の1ビットの値を保持する。物理1拡張ビットレジスタ83が保持する値のそれぞれは、物理ベクトルレジスタ1番の各エントリと1対1に対応する。WP、RPにより、物理ベクトルレジスタ1番のエントリに対応する物理1拡張ビットレジスタ83の値が読み出される。これは、WP、RPが物理ベクトルレジスタの各エントリと1対1に対応しているからである。
The physical 1 extension bit register 83 holds a value of 1 bit of the number of entries of the
WPによって読み出された値は、パス830を介して更新部84へ送信される。RPによって読み出された値は、パス831を介してリードセレクタ85へ送信される。
The value read by the WP is transmitted to the
物理1拡張ビットレジスタ83は、パス845を介して、更新部84からの指示により対応する物理1拡張ビットレジスタ83のエントリの内容を更新する。
The physical 1 extension bit register 83 updates the contents of the corresponding entry of the physical 1 extension bit register 83 according to an instruction from the
物理1拡張ビットレジスタ83に格納されている値は、ポインタ合成部9で生成されるリード拡張ポインタ又はライト拡張ポインタ(いずれも2進数)の最上位ビットとなる。
The value stored in the physical 1 extension bit register 83 is the most significant bit of the read extension pointer or write extension pointer (both binary numbers) generated by the
図5を参照すると、更新部84は、ライトセレクタ840、マスク識別回路841、演算回路842及び更新判定回路843を有する。
Referring to FIG. 5, the
ライトセレクタ840は、パス70を介して受信するライト物理ベクトルレジスタ番号により、パス820若しくはパス830のいずれかを選択する。ライトセレクタ840は、選択したパスから受信した1ビットの値を演算回路842に送信する。
The write selector 840 selects either the
マスク識別回路841は、パス60を介してマスク情報を受信する。マスク付き命令の実行時、即ち、マスク情報がマスクレジスタの値を使用することを指定している場合には、物理ベクトルレジスタのエントリに対応するマスクレジスタに格納されている値を、演算回路842に対して出力する。通常命令の実行時、即ち、マスク情報がマスクレジスタの値を使用しないことを指定している場合には、常に1ビットの“1”を、演算回路842に対して出力する。
The
演算回路842は、ライトセレクタ840から受信した値とマスク識別回路841から受信した値の排他的論理和(以下 XORという)をとり、WEXを生成する。演算回路842は、生成したWEXを、パス80を介してポインタ合成部9へ送信する。また、演算回路842は、生成したWEXを、更新判定回路843にも送信する。XOR演算を実行するだけなので、演算回路の構成を単純化でき、従来技術と比較してHW量の増大を抑えつつ、マスク付き演算の実行時でもレジスタ・リネーミングを実現することができる。
The
更新判定回路843は、パス70を介して受信したライト物理ベクトルレジスタ番号により、パス844若しくはパス845のいずれかを選択する。更新判定回路843は、ライト物理ベクトルレジスタ番号が0のとき、パス844を選択し、ライト物理ベクトルレジスタ番号が1のとき、パス845を選択する。更新判定回路843は、選択したパスを介して、演算回路842から受信したWEX及び更新指示を、物理拡張ビットレジスタに対して送信する。
The
ライトセレクタ840は、ライト物理ベクトルレジスタ番号が0のとき、パス830を介して送信された物理1拡張ビットレジスタ83の値を選択し、演算回路842へ出力する。また、ライトセレクタ840は、ライト物理ベクトルレジスタ番号が1のとき、パス820を介して送信された物理0拡張ビットレジスタ82の値を選択し、演算回路842へ出力する。
When the write physical vector register number is 0, the write selector 840 selects the value of the physical 1 extension bit register 83 transmitted via the path 830 and outputs it to the
次に、図6を用いて、ポインタ合成部9について詳細に説明する。
Next, the
ポインタ合成部9は、WP合成回路92及びRP合成回路93を有する。
The
WP合成回路92は、パス40を介してWPレジスタ4からWPを受信する。また、WP合成回路92は、パス80を介して演算回路842からWEXを受信する。WP合成回路92は、それぞれのパスから受信した値を合成し、ライト拡張ポインタを生成する。WP合成回路92は、合成において、WEXがライト拡張ポインタの最上位ビットとなるように、WEXとWPを合成する。WEXは1ビット、WPは2ビットであるので、ライト拡張ポインタは3ビットとなる。図2の表に示したように、WEXが“0”のとき、ライト拡張ポインタは、ベクトルレジスタ1のエントリe0〜e3(以下 前半という)と関連付けられる。また、WEXが“1”のとき、ライト拡張ポインタは、ベクトルレジスタ1のエントリe4〜e7(以下 後半という)と関連付けられる。ライト拡張ポインタは、ベクトルレジスタ1のエントリ(即ち、論理ベクトルレジスタのエントリと対応するベクトルレジスタ1のエントリ)を決定する情報として、パス90を介してベクトルレジスタ1へ通知される。
The
RP合成回路93は、パス50を介してRPレジスタ5からRPを受信する。また、RP合成回路93は、パス81を介してリードセレクタ85からREXを受信する。RP合成回路93は、それぞれのパスから受信した値を合成し、リード拡張ポインタを生成する。RP合成回路93は、合成において、REXがリード拡張ポインタの最上位ビットとなるように、REXとRPを合成する。REXは1ビット、RPは2ビットであるので、リード拡張ポインタは3ビットとなる。REXが“0”のとき、リード拡張ポインタは、ベクトルレジスタ1のエントリe0〜e3(以下 前半という)と関連付けられる。また、REXが“1”のとき、リード拡張ポインタは、ベクトルレジスタ1のエントリe4〜e7(以下 後半という)と関連付けられる。リード拡張ポインタは、ベクトルレジスタ1のエントリ(即ち、論理ベクトルレジスタのエントリと対応するベクトルレジスタ1のエントリ)を決定する情報として、パス91を介してベクトルレジスタ1へ通知される。
The
WP合成回路92は、パス72を介して、レジスタ管理部7から、ベクトルレジスタ1のエントリ内のベクトルデータの要素が使用中であるか否かを示すフラグを受信する。WP合成回路92は、生成したライト拡張ポインタにより指定されるベクトルレジスタ1のエントリと対応するフラグの内容を確認する。フラグにより要素が使用中でないことが確認できた場合、WP合成回路92は、生成したライト拡張ポインタを、パス90を介してベクトルレジスタ1へ通知する。
The
フラグにより要素が使用中であることが確認された場合、WP合成回路92は、パス80を介して受信したWEXの値を変更する。例えば、WP合成回路92は、受信したWEXの値に1を加算(インクリメント)し、若しくは、受信したWEXの値から1を減算する(デクリメント)ことにより、受信したWEXの値を変更する。その上で、再度ライト拡張ポインタを生成し、当該ライト拡張ポインタにより指定されるベクトルレジスタ1のエントリと対応するフラグの内容を再確認する。フラグにより要素が使用中でないことが確認できた場合、WP合成回路92は、再生成されたライト拡張ポインタを、パス90を介してベクトルレジスタ1に通知する。それと共に、WP合成回路92は、パス94を介して、更新判定回路843に対して変更後のWEXの値を通知する。更新判定回路843は、当該通知を受けて、対応する物理拡張ビットレジスタのエントリの値を変更する。
When the flag confirms that the element is in use, the
再生成したライト拡張ポインタに対応するフラグの内容を再確認しても当該フラグに対応する要素が使用中であった場合、WP合成回路92は、パス80を介して受信した最初のWEXにより生成したライト拡張ポインタに対応するエントリの要素が使用可能となるまで待機する。つまり、パス80を介して受信したWEXの値を、予め定めた一定の回数だけ変更しても、使用可能な要素が無い場合は、パス80を介して受信した最初のWEXにより生成したライト拡張ポインタに対応するエントリの要素が使用可能となるまで待機するということである。また、変更によりWEXの値が上限値若しくは下限値に到達した場合は、パス80を介して受信した最初のWEXにより生成したライト拡張ポインタに対応するエントリの要素が使用可能となるまで待機するようにしてもよい。
If the element corresponding to the flag is still in use even if the contents of the flag corresponding to the regenerated write extension pointer are reconfirmed, the
ベクトルレジスタ1のエントリ毎に、使用中か否かを確認することで、マスク付き演算の実行時においてレジスタ・リネーミングを実行した場合でも、レジスタ内容の不正な上書きを防ぎ、データ化けを回避できるという効果が得られる。
By checking whether or not each entry in the
次に、ベクトルレジスタ1が要素数4の1つの論理ベクトルレジスタ(論理ベクトルレジスタ0番)からなり、物理ベクトルレジスタ2個(物理ベクトルレジスタ0番及び1番)からなる構成において、レジスタ・リネーミングにより論理ベクトルレジスタと物理ベクトルレジスタをエントリ毎に関連付ける方式について、詳細に説明する。ベクトルレジスタ1は、プログラムからは要素数が4(エントリ数が4)の1つの論理ベクトルレジスタとしてアクセスされる。なお、各物理ベクトルレジスタの要素数も4であるものとする。
Next, in the configuration in which the
図7(a)〜(g)を参照して、論理ベクトルレジスタ0番に書込む通常命令である3命令(以降、それぞれ命令0、命令1、命令2)を実行した場合について説明する。なお、図7において、ベクトルレジスタ1のエントリをe0〜e7とし、物理ベクトルレジスタのエントリをfe0〜fe3とする。なお、ベクトルレジスタ1のエントリe0〜e7のうちのいずれか4つが、論理ベクトルレジスタ0番のエントリと対応付けられる。つまり、物理ベクトルレジスタのエントリと関連付けられる論理ベクトルレジスタ0番のエントリは、ベクトルレジスタ1のエントリのうちのいずれか4つのエントリとなる。
With reference to FIGS. 7A to 7G, a description will be given of a case where three instructions (hereinafter,
図7(a)に初期状態を示す。初期状態は、物理0拡張ビットレジスタ82の全ての値が“0”となり、物理1拡張ビットレジスタ83の全ての値が“1”となる。これは、原則として、レジスタ・リネーミングにより、物理ベクトルレジスタ0番の各エントリをエントリe0〜e7の前半(e0〜e3)と関連付け、物理ベクトルレジスタ1番の各エントリをエントリ(e0〜e7)の後半(e4〜e7)と関連付けたいからである。ベクトルレジスタ1の全エントリ、物理ベクトルレジスタ0番の全エントリ、物理ベクトルレジスタ1番の全エントリは、それぞれ初期値(−)となる。
FIG. 7A shows an initial state. In an initial state, all values of the physical 0 extension bit register 82 are “0”, and all values of the physical 1 extension bit register 83 are “1”. In principle, each entry of
命令0を実行した場合について説明する。
A case where
なお、命令の発行により、マスク部6、レジスタ管理部7、レジスタ制御部12に制御情報が渡される。以下、命令実行について説明する場合には、全て同様とする。
Note that control information is transferred to the
命令0の論理ベクトルレジスタ0番は、レジスタ管理部7においてレジスタ・リネーミングにより、物理ベクトルレジスタ0番が指定されるものとする。命令0は通常命令なので、マスク識別回路841の出力は“1”となる。
The
図7(b)に、ベクトルデータを書込む直前の状態を示す。通常命令なので、各エントリに対応するマスク識別回路841の出力は、全て“1”となる。ライト物理ベクトルレジスタ番号が“0”(実際は2進数で表現されるが、便宜上10進数で表示する。以下同様とする。)なので、ライトセレクタ840により、物理1拡張ビットレジスタ83の値が選択される。従って、演算回路842は、データを書込むエントリに対応する、マスク識別回路841の出力及び物理1拡張ビットレジスタ83の値をXOR演算する。演算結果は、更新判定回路843により、パス844を介して、物理0拡張ビットレジスタ82の対応するエントリに書込まれる。
FIG. 7B shows a state immediately before the vector data is written. Since it is a normal instruction, the outputs of the
物理ベクトルレジスタ0番の各エントリと、論理ベクトルレジスタ0番の各エントリとの関連付けは、以下のように行われる。
The association between each entry in the
1)物理ベクトルレジスタ0番のエントリ0(fe0)に対応するWP(2進数で“00”)により、物理0拡張ビットレジスタ82と、物理1拡張ビットレジスタ83から、対応する1ビットの値(ここでは、それぞれ“0”、“1”)が、拡張ビットレジスタ制御部86により読み出される。読み出された値は、それぞれパス820、パス830を介して更新部84へ送信される。
1) The corresponding 1-bit value (from the physical 0 extended bit register 82 and the physical 1 extended bit register 83) by the WP (binary “00”) corresponding to the entry 0 (fe0) of the
2)マスク識別回路841は、マスク部6からパス60を介して、WPに対応するマスクレジスタの内容及びマスク情報を受信する。命令0は通常命令なので、マスク識別回路841は、マスク情報に基づいて1ビットの値“1”を演算回路842へ出力する。
2) The
3)ライトセレクタ840は、パス70を介してライト物理ベクトルレジスタ番号“0”を受信する。よって、ライトセレクタ840は、パス830を選択し、物理1拡張ビットレジスタの値である“1”を演算回路842へ送信する。
3) The write selector 840 receives the write physical vector register number “0” via the
4)演算回路842は、マスク識別回路841の出力値である“1”と、ライトセレクタ840から受信した値である“1”を、XOR演算する。結果は“0”となり、演算回路842は、当該演算結果をパス80を介してポインタ合成部9及び更新判定回路843へ送信する。演算結果は、WEXとしてポインタ合成部9へ送信される。
4) The
5)更新判定回路843は、パス70を介してライト物理ベクトルレジスタ番号“0”を受信する。また、更新判定回路843は、パス80を介して演算回路842の演算結果を受信する。ライト物理ベクトルレジスタ番号が“0”なので、更新判定回路843は、パス844に対して演算結果及び更新指示を送信する。
5) The
6)物理0拡張ビットレジスタ82は、WPと対応するエントリに、パス844を介して更新判定回路843から受信した演算結果を書込む。
6) The physical 0 extension bit register 82 writes the operation result received from the
7)ポインタ合成部9は、パス80を介して受信したWEXと、パス40を介して受信したWPからWP合成回路92によりライト拡張ポインタを生成する。WEXは“0”、WPは“00”であるので、ライト拡張ポインタは2進数の“000”となる。ライト拡張ポインタ“000”は、図2の対応表により、ベクトルレジスタ1のe0を指す。
7) The
以上のようにして、論理ベクトルレジスタ0番のエントリ0は、ベクトルレジスタ1のe0及び物理ベクトルレジスタ0番のfe0が関連付けられる。命令0の実行により、ライト拡張ポインタ“000”で指定されるベクトルレジスタ1のエントリe0にベクトルデータの要素が書込まれる。つまり、プログラムにより、論理ベクトルレジスタ0番のエントリ0に、ベクトルレジスタ1のe0に書込まれたベクトルデータの要素が書込まれるということである。また、物理的には、エントリe0に対応する物理ベクトルレジスタ0番のエントリfe0にベクトルデータの要素が書込まれる。
As described above,
このとき、WDレジスタ2に、ベクトルレジスタ1に対する有効な書込みデータが存在する場合、WEレジスタ10は“1”となる。WE制御部11は、WEレジスタ10の値、パス60を介して受信したマスク情報からWEを“1”と判断し、WEとしてベクトルレジスタ1へ出力する。ベクトルレジスタ1は、ライト拡張ポインタが指定するエントリに、WDレジスタ2のデータを書込む。
At this time, when valid write data for the
なお、物理ベクトルレジスタ0番のエントリ1以降は、WPを+1(インクリメント)して、上記 1)から物理ベクトルレジスタ0番のエントリ数分繰り返す。WPが“00”〜“11”まで変化した際に物理ベクトルレジスタ0番と関連付けられるベクトルレジスタ1のエントリは、それぞれ、e0、e1、e2、e3となる。図7(c)において、fe0(e0)、fe1(e1)、fe2(e2)、fe3(e4)と表現する。また、論理ベクトルレジスタ0番の4つのエントリはそれぞれ、ベクトルレジスタ1のe0、e1、e2、e3と関連付けられる。
From
このとき、物理ベクトルレジスタ0番からのデータの読み出しが要求された場合について説明する。
At this time, a case where reading of data from the
1)物理ベクトルレジスタ0番のエントリ0(fe0)に対応するRP(2進数で“00”)により、物理0拡張ビットレジスタ82と、物理1拡張ビットレジスタ83から、対応する1ビットの値(ここでは、それぞれ“0”、“1”)が、拡張ビットレジスタ制御部86により読み出される。読み出された値は、それぞれパス821、パス831を介してリードセレクタ85へ送信される。
1) From the physical 0 extension bit register 82 and the physical 1 extension bit register 83, the corresponding 1-bit value (indicated by “00” in binary) corresponding to the entry 0 (fe0) of the
2)リードセレクタ85は、パス71を介してリード物理ベクトルレジスタ番号を受信する。リード物理ベクトルレジスタ番号が“0”であるので、パス821を選択し、物理0拡張ビットレジスタ82の値(ここでは、“0”)をREXとしてポインタ合成部9に送信する。
2) The read selector 85 receives the read physical vector register number via the path 71. Since the read physical vector register number is “0”, the path 821 is selected, and the value of the physical 0 extension bit register 82 (here “0”) is transmitted to the
3)ポインタ合成部9は、パス81を介して受信したREXと、パス50を介して受信したRPから、リード拡張ポインタを生成する。このとき、REXの値は“0”、RPの値は“00”なので、リード拡張ポインタは“000”となる。リード拡張ポインタ“000”は、ベクトルレジスタ1のエントリe0を指す。よって、論理ベクトルレジスタ0番エントリ0は、ベクトルレジスタ1のe0及び物理ベクトルレジスタ0番のfe0が関連付けられる。
3) The
4)論理ベクトルレジスタ0番のエントリ0、即ちベクトルレジスタ1のe0(物理ベクトルレジスタ0番のfe0)からデータが読み出される。
4) Data is read from
エントリ1以降はRPを+1して、1)からエントリ数分繰り返せばよい。
For
図7(c)に、命令0の実行後の状態を示す。
FIG. 7C shows a state after the
物理0拡張ビットレジスタ82は、全てのビットの値が“0”となり、物理1拡張ビットレジスタ83は、全てのビットの値が“1”となる。ベクトルレジスタ1のe0〜e3(即ち、論理ベクトルレジスタ0番のエントリ0〜3)はそれぞれA、B、C、Dが格納されている。このとき、物理ベクトルレジスタ0番の4つのエントリfe0〜fe3は、ベクトルレジスタ1のe0〜e3(即ち、論理ベクトルレジスタ0番のエントリ0〜3)のそれぞれが対応し、その内容は、A、B、C、Dとなる。
In the physical 0 extension bit register 82, the values of all bits are “0”, and in the physical 1 extension bit register 83, the values of all bits are “1”. A, B, C, and D are stored in e0 to e3 of the vector register 1 (that is,
命令0の実行後、物理ベクトルレジスタ0番にはレジスタ・リネーミング後のレジスタ状態が保持され、物理ベクトルレジスタ1番にはレジスタ・リネーミング前のレジスタ状態が保持されている。よって、1つの論理ベクトルレジスタ番号に対する、2つの物理ベクトルレジスタによるレジスタ・リネーミングが正しく行われている事になる。
After execution of the
次に、命令1が実行された場合について説明する。
Next, a case where
命令1の論理ベクトルレジスタ0番は、レジスタ管理部7においてレジスタ・リネーミングにより、物理ベクトルレジスタ1番が指定されるものとする。命令1は通常命令なので、マスク識別回路841の出力は“1”となる。
It is assumed that the
図7(d)に、ベクトルデータを書込む直前の状態を示す。通常命令なので、各エントリに対応するマスク識別回路841の出力は、全て“1”となる。ライト物理ベクトルレジスタ番号が“1”なので、ライトセレクタ840により、物理0拡張ビットレジスタ82の値が選択される。従って、演算回路842は、データを書込むエントリに対応する、マスク識別回路841の出力及び物理0拡張ビットレジスタ82の値をXOR演算する。演算結果は、更新判定回路843により、パス845を介して、物理1拡張ビットレジスタ83の対応するエントリに書込まれる。
FIG. 7D shows a state immediately before the vector data is written. Since it is a normal instruction, the outputs of the
物理ベクトルレジスタ1番の各エントリと、論理ベクトルレジスタ0番の各エントリとの関連付けは、以下のように行われる。
The association between each entry in the
1)物理ベクトルレジスタ1番のエントリ0(fe0)に対応するWP(2進数で“00”)により、物理0拡張ビットレジスタ82と、物理1拡張ビットレジスタ83から、対応する1ビットの値(ここでは、それぞれ“0”、“1”)が、拡張ビットレジスタ制御部86により読み出される。読み出された値は、それぞれパス820、パス830を介して更新部84へ送信される。
1) The corresponding 1-bit value (from the physical 0 extended bit register 82 and the physical 1 extended bit register 83) by the WP (in binary “00”) corresponding to the entry 0 (fe0) of the
2)マスク識別回路841は、マスク部6からパス60を介して、WPに対応するマスクレジスタの内容及びマスク情報を受信する。命令1は通常命令なので、マスク識別回路841は、マスク情報に基づいて1ビットの値“1”を演算回路842へ出力する。
2) The
3)ライトセレクタ840は、パス70を介してライト物理ベクトルレジスタ番号“1”を受信する。よって、ライトセレクタ840は、パス820を選択し、物理0拡張ビットレジスタの値である“0”を演算回路842へ送信する。
3) The write selector 840 receives the write physical vector register number “1” via the
4)演算回路842は、マスク識別回路841の出力値である“1”と、ライトセレクタ840から受信した値である“0”を、XOR演算する。結果は“1”となり、演算回路842は、当該演算結果をパス80を介してポインタ合成部9及び更新判定回路843へ送信する。演算結果は、WEXとしてポインタ合成部9へ送信される。
4) The
5)更新判定回路843は、パス70を介してライト物理ベクトルレジスタ番号“1”を受信する。また、更新判定回路843は、パス80を介して演算回路842の演算結果を受信する。ライト物理ベクトルレジスタ番号が“1”なので、更新判定回路843は、パス845に対して演算結果及び更新指示を送信する。
5) The
6)物理1拡張ビットレジスタ83は、WPと対応するエントリに、パス845を介して更新判定回路843から受信した演算結果を書込む。
6) The physical 1 extension bit register 83 writes the operation result received from the
7)ポインタ合成部9は、パス80を介して受信したWEXと、パス40を介して受信したWPからWP合成回路92によりライト拡張ポインタを生成する。WEXは“1”、WPは“00”であるので、ライト拡張ポインタは2進数の“100”となる。ライト拡張ポインタ“100”は、図2の対応表により、ベクトルレジスタ1のe4を指す。
7) The
以上のようにして、論理ベクトルレジスタ0番エントリ0と、ベクトルレジスタ1のe4及び物理ベクトルレジスタ1番のfe0が関連付けられる。命令1により、ライト拡張ポインタ“100”で指定されるベクトルレジスタ1のエントリe4にベクトルデータの要素が書込まれる。つまり、プログラムにより、論理ベクトルレジスタ0番のエントリ0に、ベクトルレジスタ1のe4に書込まれたベクトルデータの要素が書込まれるということである。また、物理的には、エントリe4に対応する物理ベクトルレジスタ0番のエントリfe0にベクトルデータの要素が書込まれる。
As described above, the
このとき、WDレジスタ2に、ベクトルレジスタ1に対する有効な書込みデータが存在する場合、WEレジスタ10は“1”となる。WE制御部11は、WEレジスタ10の値、パス60を介して受信したマスク情報からWEを“1”と判断し、WEとしてベクトルレジスタ1へ出力する。ベクトルレジスタ1は、ライト拡張ポインタが指定するエントリに、WDレジスタ2のデータを書込む。
At this time, when valid write data for the
なお、物理ベクトルレジスタ1番のエントリ1以降は、WPを+1(インクリメント)して、上記 1)から物理ベクトルレジスタ1番のエントリ数分繰り返す。WPが“00”〜“11”まで変化した際に物理ベクトルレジスタ1番と関連付けられるベクトルレジスタ1のエントリは、それぞれ、e4、e5、e6、e7となる。図7(e)において、fe0(e4)、fe1(e5)、fe2(e6)、fe3(e7)と表現する。また、論理ベクトルレジスタ0番の4つのエントリはそれぞれ、ベクトルレジスタ1のe4、e5、e6、e7と関連付けられる。
From
このとき、物理ベクトルレジスタ1番からのデータの読み出しが要求された場合について説明する。
At this time, a case where reading of data from the
1)物理ベクトルレジスタ1番のエントリ0(fe0)に対応するRP(2進数で“00”)により、物理0拡張ビットレジスタ82と、物理1拡張ビットレジスタ83から、対応する1ビットの値(ここでは、それぞれ“0”、“1”)が、拡張ビットレジスタ制御部86により読み出される。読み出された値は、それぞれパス821、パス831を介してリードセレクタ85へ送信される。
1) From the physical 0 extension bit register 82 and the physical 1 extension bit register 83, the corresponding 1-bit value ((00) in binary) corresponding to the entry 0 (fe0) of the
2)リードセレクタ85は、パス71を介してリード物理ベクトルレジスタ番号を受信する。リード物理ベクトルレジスタ番号が“1”であるので、パス831を選択し、物理1拡張ビットレジスタ83の値(ここでは、“1”)をREXとしてポインタ合成部9に送信する。
2) The read selector 85 receives the read physical vector register number via the path 71. Since the read physical vector register number is “1”, the path 831 is selected, and the value of the physical 1 extension bit register 83 (here, “1”) is transmitted to the
3)ポインタ合成部9は、パス81を介して受信したREXと、パス50を介して受信したRPから、リード拡張ポインタを生成する。このとき、REXの値は“1”、RPの値は“00”なので、リード拡張ポインタは“000”となる。リード拡張ポインタ“100”は、ベクトルレジスタ1のエントリe4を指す。よって、論理ベクトルレジスタ0番のエントリ0は、ベクトルレジスタ1のe4及び物理ベクトルレジスタ1番のfe0が関連付けられる。
3) The
4)論理ベクトルレジスタのエントリ0、即ちベクトルレジスタ1のe4(物理ベクトルレジスタ1番のfe0)からデータが読み出される。
4) Data is read from
エントリ1以降はRPを+1して、1)からエントリ数分繰り返せばよい。
For
図7(e)に、命令1の実行後の状態を示す。
FIG. 7E shows a state after the execution of the
物理0拡張ビットレジスタ82は、全てのビットの値が“0”となり、物理1拡張ビットレジスタ83は、全てのビットの値が“1”となる。ベクトルレジスタ1のe4〜e7(即ち、論理ベクトルレジスタ0番のエントリ0〜3)はそれぞれE、F、G、Hが格納されている。このとき、物理ベクトルレジスタ1番の4つのエントリfe0〜fe3は、ベクトルレジスタ1のe4〜e7(即ち、論理ベクトルレジスタ0番のエントリ0〜3)のそれぞれが対応し、その内容は、E、F、G、Hとなる。
In the physical 0 extension bit register 82, the values of all bits are “0”, and in the physical 1 extension bit register 83, the values of all bits are “1”. E4 to e7 of the vector register 1 (that is,
命令1の実行後、物理ベクトルレジスタ0番にはレジスタ・リネーミング前のレジスタ状態が保持され、物理ベクトルレジスタ1番にはレジスタ・リネーミング後のレジスタ状態が保持されている。よって、1つの論理ベクトルレジスタ番号に対する、2つの物理ベクトルレジスタによるレジスタ・リネーミングが正しく行われている事になる。
After execution of the
次に、命令2が実行された場合について説明する。
Next, a case where
命令2の論理ベクトルレジスタ0番は、レジスタ管理部7においてレジスタ・リネーミングにより、物理ベクトルレジスタ0番が指定されるものとする。命令2は通常命令なので、マスク識別回路841の出力は“1”となる。
It is assumed that the
図7(f)に、ベクトルデータを書込む直前の状態を示す。 FIG. 7F shows a state immediately before the vector data is written.
物理ベクトルレジスタ0番の各エントリと、論理ベクトルレジスタ0番の各エントリとの関連付けは、命令0と同様である。
The association between each entry of the
このとき、物理ベクトルレジスタ0番の読出しがあった場合の動作は、命令0により物理ベクトルレジスタ0番から読出しがあった場合と同様である。
At this time, the operation when the physical vector register No. 0 is read is the same as when the
図7(g)に、命令2の実行後の状態を示す。
FIG. 7G shows a state after the execution of the
物理0拡張ビットレジスタ82は、全てのビットの値が“0”となり、物理1拡張ビットレジスタ83は、全てのビットの値が“1”となる。ベクトルレジスタ1のe0〜e7はそれぞれI、J、K、L、E、F、G、Hが格納されている。このとき、物理ベクトルレジスタ0番の4つのエントリfe0〜fe3は、ベクトルレジスタ1のe0〜e3(即ち、論理ベクトルレジスタ0番のエントリ0〜3)のそれぞれが対応し、その内容は、I、J、K、Lとなる。
In the physical 0 extension bit register 82, the values of all bits are “0”, and in the physical 1 extension bit register 83, the values of all bits are “1”. E0 to e7 of the
命令2の実行後、物理ベクトルレジスタ0番にはレジスタ・リネーミング後のレジスタ状態が保持され、物理ベクトルレジスタ1番にはレジスタ・リネーミング前のレジスタ状態が保持されている。よって、1つの論理ベクトルレジスタ番号に対する、2つの物理ベクトルレジスタによるレジスタ・リネーミングが正しく行われていることになる。
After execution of the
次に、マスク付き演算を行う命令を実行する場合について、図8を用いて説明する。 Next, the case of executing an instruction for performing an operation with a mask will be described with reference to FIG.
図8(a)〜(e)に、論理ベクトルレジスタ0番に書込む命令0と、論理ベクトルレジスタ0番に書込むマスク付き命令が2命令(以下、それぞれ、命令M1、命令M2)の3命令を実行した場合について説明する。
FIGS. 8A to 8E show that
初期状態から命令0を実行した場合については、図7で説明した命令0と同様となる。図8(a)は、命令0の実行後の各レジスタの状態を示し、図7(c)と同様である。
The case where the
次に、マスク付き演算を行う命令M1が実行された場合について説明する。 Next, the case where the instruction M1 for performing the masked operation is executed will be described.
命令M1の論理ベクトルレジスタ0番は、レジスタ管理部7においてレジスタ・リネーミングにより、物理ベクトルレジスタ1番が指定されているものとする。命令M1のマスクレジスタの値は、論理ベクトルレジスタ0番、物理ベクトルレジスタ1番のそれぞれのエントリに対応して、1001(2進数)となっている。
As for the
図8(b)は、ベクトルデータを書込む直前の状態を示す。 FIG. 8B shows a state immediately before the vector data is written.
物理ベクトルレジスタ1番のエントリ0(fe0)に相当する論理ベクトルレジスタ0番のエントリ0は以下のようにして決定される。
The
1−0)物理ベクトルレジスタ1番のエントリ0(fe0)に対応するWP(2進数で“00”)により、物理0拡張ビットレジスタ82と、物理1拡張ビットレジスタ83から、対応する1ビットの値(ここでは、それぞれ“0”、“1”)が、拡張ビットレジスタ制御部86により読み出される。読み出された値は、それぞれパス820、パス830を介して更新部84へ送信される。
1-0) From the physical 0 extended bit register 82 and the physical 1 extended bit register 83, the corresponding 1 bit of WP (binary number “00”) corresponding to the entry 0 (fe0) of the
2−0)マスク識別回路841は、マスク部6からパス60を介して、WPに対応するマスクレジスタの内容及びマスク情報を受信する。命令M1はマスク付き命令なので、マスク識別回路841は、マスク情報に基づいて対応するマスクレジスタの1ビットの値“1”を演算回路842へ出力する。
2-0) The
3−0)ライトセレクタ840は、パス70を介してライト物理ベクトルレジスタ番号“1”を受信する。よって、ライトセレクタ840は、パス820を選択し、物理0拡張ビットレジスタの値である“0”を演算回路842へ送信する。
3-0) The write selector 840 receives the write physical vector register number “1” via the
4−0)演算回路842は、マスク識別回路841の出力値である“1”と、ライトセレクタ840から受信した値である“0”を、XOR演算する。結果は“1”となり、演算回路842は、当該演算結果をパス80を介してポインタ合成部9及び更新判定回路843へ送信する。演算結果は、WEXとしてポインタ合成部9へ送信される。
4-0) The
5−0)更新判定回路843は、パス70を介してライト物理ベクトルレジスタ番号“1”を受信する。また、更新判定回路843は、パス80を介して演算回路842の演算結果を受信する。ライト物理ベクトルレジスタ番号が“1”なので、更新判定回路843は、パス845に対して演算結果及び更新指示を送信する。
5-0) The
6−0)物理1拡張ビットレジスタ83は、WPと対応する自己のエントリに、パス845を介して更新判定回路843から受信した演算結果を書込む。
6-0) The physical 1 extension bit register 83 writes the operation result received from the
7−0)ポインタ合成部9は、パス80を介して受信したWEXと、パス40を介して受信したWPからWP合成回路92によりライト拡張ポインタを生成する。WEXは“1”、WPは“00”であるので、ライト拡張ポインタは2進数の“100”となる。ライト拡張ポインタ“100”は、図2の対応表により、ベクトルレジスタ1のe4を指す。よって、論理ベクトルレジスタ0番のエントリ0は、ベクトルレジスタ1のe4及び物理ベクトルレジスタ1番のfe0と関連付けられる。
7-0) The
物理ベクトルレジスタ1番のエントリ1に相当する論理ベクトルレジスタ0番のエントリ1は、以下のように決定される。
The
1−1)物理ベクトルレジスタ1番のエントリ1(fe1)に対応するWP(2進数で“01”)により、物理0拡張ビットレジスタ82と、物理1拡張ビットレジスタ83から、対応する1ビットの値(ここでは、それぞれ“0”、“1”)が、拡張ビットレジスタ制御部86により読み出される。読み出された値は、それぞれパス820、パス830を介して更新部84へ送信される。
1-1) From the physical 0 extended bit register 82 and the physical 1 extended bit register 83, the corresponding 1 bit of WP corresponding to the entry 1 (fe1) of the
2−1)マスク識別回路841は、マスク部6からパス60を介して、WPに対応するマスクレジスタの内容及びマスク情報を受信する。命令M1はマスク付き命令なので、マスク識別回路841は、マスク情報に基づいて対応するマスクレジスタの1ビットの値“0”を演算回路842へ出力する。
2-1) The
3−1)ライトセレクタ840は、パス70を介してライト物理ベクトルレジスタ番号“1”を受信する。よって、ライトセレクタ840は、パス820を選択し、物理0拡張ビットレジスタの値である“0”を演算回路842へ送信する。
3-1) The write selector 840 receives the write physical vector register number “1” via the
4−1)演算回路842は、マスク識別回路841の出力値である“0”と、ライトセレクタ840から受信した値である“0”を、XOR演算する。結果は“0”となり、演算回路842は、当該演算結果をパス80を介してポインタ合成部9及び更新判定回路843へ送信する。演算結果は、WEXとしてポインタ合成部9へ送信される。
4-1) The
5−1)更新判定回路843は、パス70を介してライト物理ベクトルレジスタ番号“1”を受信する。また、更新判定回路843は、パス80を介して演算回路842の演算結果を受信する。ライト物理ベクトルレジスタ番号が“1”なので、更新判定回路843は、パス845に対して演算結果及び更新指示を送信する。
5-1) The
6−1)物理1拡張ビットレジスタ83は、WPと対応する自己のエントリに、パス845を介して更新判定回路843から受信した演算結果を書込む。
6-1) The physical 1 extension bit register 83 writes the operation result received from the
7−1)ポインタ合成部9は、パス80を介して受信したWEXと、パス40を介して受信したWPからWP合成回路92によりライト拡張ポインタを生成する。WEXは“0”、WPは“01”であるので、ライト拡張ポインタは2進数の“001”となる。ライト拡張ポインタ“001”は、図2の対応表により、ベクトルレジスタ1のe1を指す。よって、論理ベクトルレジスタ0番のエントリ1は、ベクトルレジスタ1のe1及び物理ベクトルレジスタ1番のfe1と関連付けられる。但し、マスクビットが“0”であるので、ベクトルレジスタ1のエントリe1(即ち、論理ベクトルレジスタ0番のエントリ1)に対する書込みは実行されない。
7-1) The
物理ベクトルレジスタ1番のエントリ2に相当する論理ベクトルレジスタ0番のエントリ2は、以下のように決定される。
The
1−2)物理ベクトルレジスタ1番のエントリ2(fe2)に対応するWP(2進数で“10”)により、物理0拡張ビットレジスタ82と、物理1拡張ビットレジスタ83から、対応する1ビットの値(ここでは、それぞれ“0”、“1”)が、拡張ビットレジスタ制御部86により読み出される。読み出された値は、それぞれパス820、パス830を介して更新部84へ送信される。
1-2) From the physical 0 extended bit register 82 and the physical 1 extended bit register 83, the corresponding 1 bit of WP corresponding to the entry 2 (fe2) of the
2−2)マスク識別回路841は、マスク部6からパス60を介して、WPに対応するマスクレジスタの内容及びマスク情報を受信する。命令M1はマスク付き命令なので、マスク識別回路841は、マスク情報に基づいて対応するマスクレジスタの1ビットの値“0”を演算回路842へ出力する。
2-2) The
3−2)ライトセレクタ840は、パス70を介してライト物理ベクトルレジスタ番号“1”を受信する。よって、ライトセレクタ840は、パス820を選択し、物理0拡張ビットレジスタの値である“0”を演算回路842へ送信する。
3-2) The write selector 840 receives the write physical vector register number “1” via the
4−2)演算回路842は、マスク識別回路841の出力値である“0”と、ライトセレクタ840から受信した値である“0”を、XOR演算する。結果は“0”となり、演算回路842は、当該演算結果をパス80を介してポインタ合成部9及び更新判定回路843へ送信する。演算結果は、WEXとしてポインタ合成部9へ送信される。
4-2) The
5−2)更新判定回路843は、パス70を介してライト物理ベクトルレジスタ番号“1”を受信する。また、更新判定回路843は、パス80を介して演算回路842の演算結果を受信する。ライト物理ベクトルレジスタ番号が“1”なので、更新判定回路843は、パス845に対して演算結果及び更新指示を送信する。
5-2) The
6−2)物理1拡張ビットレジスタ83は、WPと対応する自己のエントリに、パス845を介して更新判定回路843から受信した演算結果を書込む。
6-2) The physical 1 extension bit register 83 writes the operation result received from the
7−2)ポインタ合成部9は、パス80を介して受信したWEXと、パス40を介して受信したWPからWP合成回路92によりライト拡張ポインタを生成する。WEXは“0”、WPは“10”であるので、ライト拡張ポインタは2進数の“010”となる。ライト拡張ポインタ“010”は、図2の対応表により、ベクトルレジスタ1のe2を指す。よって、論理ベクトルレジスタ0番のエントリ2は、ベクトルレジスタ1のe2及び物理ベクトルレジスタ1番のfe2と関連付けられる。但し、マスクビットが“0”であるので、ベクトルレジスタ1のエントリe2(即ち、論理ベクトルレジスタ0番のエントリ2)に対する書込みは実行されない。
7-2) The
物理ベクトルレジスタ1番のエントリ3に相当する論理ベクトルレジスタ0番のエントリ3は、以下のように決定される。
The
1−3)物理ベクトルレジスタ1番のエントリ3(fe3)に対応するWP(2進数で“11”)により、物理0拡張ビットレジスタ82と、物理1拡張ビットレジスタ83から、対応する1ビットの値(ここでは、それぞれ“0”、“1”)が、拡張ビットレジスタ制御部86により読み出される。読み出された値は、それぞれパス820、パス830を介して更新部84へ送信される。
1-3) From the physical 0 extension bit register 82 and the physical 1 extension bit register 83, the corresponding 1 bit of WP corresponding to the entry 3 (fe3) of the
2−3)マスク識別回路841は、マスク部6からパス60を介して、WPに対応するマスクレジスタの内容及びマスク情報を受信する。命令M1はマスク付き命令なので、マスク識別回路841は、マスク情報に基づいて対応するマスクレジスタの1ビットの値“1”を演算回路842へ出力する。
2-3) The
3−3)ライトセレクタ840は、パス70を介してライト物理ベクトルレジスタ番号“1”を受信する。よって、ライトセレクタ840は、パス820を選択し、物理0拡張ビットレジスタの値である“0”を演算回路842へ送信する。
3-3) The write selector 840 receives the write physical vector register number “1” via the
4−3)演算回路842は、マスク識別回路841の出力値である“1”と、ライトセレクタ840から受信した値である“0”を、XOR演算する。結果は“1”となり、演算回路842は、当該演算結果をパス80を介してポインタ合成部9及び更新判定回路843へ送信する。演算結果は、WEXとしてポインタ合成部9へ送信される。
4-3) The
5−3)更新判定回路843は、パス70を介してライト物理ベクトルレジスタ番号“1”を受信する。また、更新判定回路843は、パス80を介して演算回路842の演算結果を受信する。ライト物理ベクトルレジスタ番号が“1”なので、更新判定回路843は、パス845に対して演算結果及び更新指示を送信する。
5-3) The
6−3)物理1拡張ビットレジスタ83は、WPと対応する自己のエントリに、パス845を介して更新判定回路843から受信した演算結果を書込む。
6-3) The physical 1 extension bit register 83 writes the operation result received from the
7−3)ポインタ合成部9は、パス80を介して受信したWEXと、パス40を介して受信したWPからWP合成回路92によりライト拡張ポインタを生成する。WEXは“1”、WPは“11”であるので、ライト拡張ポインタは2進数の“111”となる。ライト拡張ポインタ“111”は、図2の対応表により、ベクトルレジスタ1のe7を指す。よって、論理ベクトルレジスタ0番のエントリ3は、ベクトルレジスタ1のe7及び物理ベクトルレジスタ1番のfe3と関連付けられる。
7-3) The
以上より、物理ベクトルレジスタ1番として書込まれるベクトルレジスタ1のエントリ(即ち、論理ベクトルレジスタ0番のエントリ)は、それぞれe4、書込み無し(e1)、書込み無し(e2)、e7となる。
From the above, the entry of the
図8(c)に、命令M1の実行後の状態を示す。 FIG. 8C shows a state after the execution of the instruction M1.
物理0拡張ビットレジスタ82の全ての値は“0”、物理1拡張ビットレジスタ83の値はそれぞれ1、0、0、1となる。ベクトルレジスタ1のe0〜e7は、それぞれA,B,C,D,E,−、−、H(ハイフン(−)は初期値)が格納されている。このとき、物理ベクトルレジスタ0番の4つのエントリは、ベクトルレジスタ1のe0〜e3が対応し、その内容はそれぞれA,B,C,Dとなる。物理ベクトルレジスタ1番の4つのエントリは、ベクトルレジスタ1のe4、e1、e2、e7がそれぞれ対応し、その内容はそれぞれE,B,C,Hとなる。
All the values of the physical 0 extension bit register 82 are “0”, and the values of the physical 1 extension bit register 83 are 1, 0, 0, 1 respectively. E0 to e7 of the
命令M1の実行により、論理ベクトルレジスタ0番の4つのエントリの値は、A,B,C,Dという内容から、マスクレジスタの値が“1”となっているエントリのみが更新されて、E,B,C,Hとなる。
By executing the instruction M1, the values of the four entries of the
命令M1の実行後、物理ベクトルレジスタ0番にはレジスタ・リネーミング前のレジスタ状態が保持され、物理ベクトルレジスタ1番にはレジスタ・リネーミング後のレジスタ状態が保持されている。よって、1つの論理ベクトルレジスタ番号に対する、2つの物理ベクトルレジスタによるレジスタ・リネーミングが正しく行われていることになる。
After execution of the instruction M1, the
ここで、図8(c')に、従来技術により、命令M1の実行時にレジスタ・リネーミングを実行した後の状態を示す。物理ベクトルレジスタ1番の4つのエントリは、ベクトルレジスタ1のe4〜e7がそれぞれ対応し、その内容は、E,−、−、Hとなっている。つまり、物理ベクトルレジスタ番号である“1”と、WPのそれぞれを合成しているため、上記のような関連付けがなされる。結果として、論理ベクトルレジスタ1番の4つのエントリの値は、レジスタ・リネーミング実行前のA,B,C,Dという内容から、マスクレジスタの値が“1”となっているエントリのみが更新されて、E,B,C,Hになるという期待値と一致していない。従って、結果はデータ化けとなってしまう。
Here, FIG. 8C ′ shows a state after register renaming is executed when the instruction M1 is executed according to the conventional technique. The four entries of the
次に、命令M2が実行された場合について説明する。 Next, a case where the instruction M2 is executed will be described.
命令M2の論理ベクトルレジスタ0番は、レジスタ管理部7においてレジスタ・リネーミングにより、物理ベクトルレジスタ0番が指定されているものとする。命令M2のマスクレジスタの値は、論理ベクトルレジスタ0番又は物理ベクトルレジスタ1番のそれぞれのエントリに対応して、1100(2進数)となっている。
As for the
図8(d)は、ベクトルデータを書込む直前の状態を示す。 FIG. 8D shows a state immediately before writing vector data.
物理ベクトルレジスタ0番のエントリ0(fe0)に相当する論理ベクトルレジスタ0番のエントリ0は以下のようにして決定される。
The
1−0)物理ベクトルレジスタ0番のエントリ0(fe0)に対応するWP(2進数で“00”)により、物理0拡張ビットレジスタ82と、物理1拡張ビットレジスタ83から、対応する1ビットの値(ここでは、それぞれ“0”、“1”)が、拡張ビットレジスタ制御部86により読み出される。読み出された値は、それぞれパス820、パス830を介して更新部84へ送信される。
1-0) From the physical 0 extended bit register 82 and the physical 1 extended bit register 83, the corresponding 1 bit of WP (binary number “00”) corresponding to the entry 0 (fe0) of the
2−0)マスク識別回路841は、マスク部6からパス60を介して、WPに対応するマスクレジスタの内容及びマスク情報を受信する。命令M2はマスク付き命令なので、マスク識別回路841は、マスク情報に基づいて対応するマスクレジスタの1ビットの値“1”を演算回路842へ出力する。
2-0) The
3−0)ライトセレクタ840は、パス70を介してライト物理ベクトルレジスタ番号“0”を受信する。よって、ライトセレクタ840は、パス830を選択し、物理1拡張ビットレジスタ83の値である“1”を演算回路842へ送信する。
3-0) The write selector 840 receives the write physical vector register number “0” via the
4−0)演算回路842は、マスク識別回路841の出力値である“1”と、ライトセレクタ840から受信した値である“1”を、XOR演算する。結果は“0”となり、演算回路842は、当該演算結果をパス80を介してポインタ合成部9及び更新判定回路843へ送信する。演算結果は、WEXとしてポインタ合成部9へ送信される。
4-0) The
5−0)更新判定回路843は、パス70を介してライト物理ベクトルレジスタ番号“0”を受信する。また、更新判定回路843は、パス80を介して演算回路842の演算結果を受信する。ライト物理ベクトルレジスタ番号が“0”なので、更新判定回路843は、パス844に対して演算結果及び更新指示を送信する。
5-0) The
6−0)物理0拡張ビットレジスタ82は、WPと対応する自己のエントリに、パス844を介して更新判定回路843から受信した演算結果を書込む。
6-0) The physical 0 extension bit register 82 writes the operation result received from the
7−0)ポインタ合成部9は、パス80を介して受信したWEXと、パス40を介して受信したWPからWP合成回路92によりライト拡張ポインタを生成する。WEXは“0”、WPは“00”であるので、ライト拡張ポインタは2進数の“000”となる。ライト拡張ポインタ“000”は、図2の対応表により、ベクトルレジスタ1のe0を指す。よって、論理ベクトルレジスタ0番のエントリ0は、ベクトルレジスタ1のe0及び物理ベクトルレジスタ0番のfe0と関連付けられる。
7-0) The
物理ベクトルレジスタ0番のエントリ1に相当する論理ベクトルレジスタ0番のエントリ1は、以下のように決定される。
The
1−1)物理ベクトルレジスタ1番のエントリ1(fe1)に対応するWP(2進数で“01”)により、物理0拡張ビットレジスタ82と、物理1拡張ビットレジスタ83から、対応する1ビットの値(ここでは、それぞれ“0”、“0”)が、拡張ビットレジスタ制御部86により読み出される。読み出された値は、それぞれパス820、パス830を介して更新部84へ送信される。
1-1) From the physical 0 extended bit register 82 and the physical 1 extended bit register 83, the corresponding 1 bit of WP corresponding to the entry 1 (fe1) of the
2−1)マスク識別回路841は、マスク部6からパス60を介して、WPに対応するマスクレジスタの内容及びマスク情報を受信する。命令M2はマスク付き命令なので、マスク識別回路841は、マスク情報に基づいて対応するマスクレジスタの1ビットの値“1”を演算回路842へ出力する。
2-1) The
3−1)ライトセレクタ840は、パス70を介してライト物理ベクトルレジスタ番号“0”を受信する。よって、ライトセレクタ840は、パス830を選択し、物理1拡張ビットレジスタ83の値である“0”を演算回路842へ送信する。
3-1) The write selector 840 receives the write physical vector register number “0” via the
4−1)演算回路842は、マスク識別回路841の出力値である“1”と、ライトセレクタ840から受信した値である“0”を、XOR演算する。結果は“1”となり、演算回路842は、当該演算結果をパス80を介してポインタ合成部9及び更新判定回路843へ送信する。演算結果は、WEXとしてポインタ合成部9へ送信される。
4-1) The
5−1)更新判定回路843は、パス70を介してライト物理ベクトルレジスタ番号“0”を受信する。また、更新判定回路843は、パス80を介して演算回路842の演算結果を受信する。ライト物理ベクトルレジスタ番号が“0”なので、更新判定回路843は、パス844に対して演算結果及び更新指示を送信する。
5-1) The
6−1)物理0拡張ビットレジスタ82は、WPと対応する自己のエントリに、パス844を介して更新判定回路843から受信した演算結果を書込む。
6-1) The physical 0 extension bit register 82 writes the operation result received from the
7−1)ポインタ合成部9は、パス80を介して受信したWEXと、パス40を介して受信したWPからWP合成回路92によりライト拡張ポインタを生成する。WEXは“1”、WPは“01”であるので、ライト拡張ポインタは2進数の“101”となる。ライト拡張ポインタ“101”は、図2の対応表により、ベクトルレジスタ1のe5を指す。よって、論理ベクトルレジスタ0番のエントリ1は、ベクトルレジスタ1のe5及び物理ベクトルレジスタ0番のfe1と関連付けられる。
7-1) The
物理ベクトルレジスタ0番のエントリ2に相当する論理ベクトルレジスタ0番のエントリ2は、以下のように決定される。
The
1−2)物理ベクトルレジスタ0番のエントリ2(fe2)に対応するWP(2進数で“10”)により、物理0拡張ビットレジスタ82と、物理1拡張ビットレジスタ83から、対応する1ビットの値(ここでは、それぞれ“0”、“0”)が、拡張ビットレジスタ制御部86により読み出される。読み出された値は、それぞれパス820、パス830を介して更新部84へ送信される。
1-2) From the physical 0 extended bit register 82 and the physical 1 extended bit register 83, the corresponding 1 bit of the
2−2)マスク識別回路841は、マスク部6からパス60を介して、WPに対応するマスクレジスタの内容及びマスク情報を受信する。命令M2はマスク付き命令なので、マスク識別回路841は、マスク情報に基づいて対応するマスクレジスタの1ビットの値“0”を演算回路842へ出力する。
2-2) The
3−2)ライトセレクタ840は、パス70を介してライト物理ベクトルレジスタ番号“0”を受信する。よって、ライトセレクタ840は、パス830を選択し、物理1拡張ビットレジスタ83の値である“0”を演算回路842へ送信する。
3-2) The write selector 840 receives the write physical vector register number “0” via the
4−2)演算回路842は、マスク識別回路841の出力値である“0”と、ライトセレクタ840から受信した値である“0”を、XOR演算する。結果は“0”となり、演算回路842は、当該演算結果をパス80を介してポインタ合成部9及び更新判定回路843へ送信する。演算結果は、WEXとしてポインタ合成部9へ送信される。
4-2) The
5−2)更新判定回路843は、パス70を介してライト物理ベクトルレジスタ番号“0”を受信する。また、更新判定回路843は、パス80を介して演算回路842の演算結果を受信する。ライト物理ベクトルレジスタ番号が“0”なので、更新判定回路843は、パス844に対して演算結果及び更新指示を送信する。
5-2) The
6−2)物理0拡張ビットレジスタ82は、WPと対応する自己のエントリに、パス844を介して更新判定回路843から受信した演算結果を書込む。
6-2) The physical 0 extension bit register 82 writes the operation result received from the
7−2)ポインタ合成部9は、パス80を介して受信したWEXと、パス40を介して受信したWPからWP合成回路92によりライト拡張ポインタを生成する。WEXは“0”、WPは“10”であるので、ライト拡張ポインタは2進数の“010”となる。ライト拡張ポインタ“010”は、図2の対応表により、ベクトルレジスタ1のe2を指す。よって、論理ベクトルレジスタ0番のエントリ2は、ベクトルレジスタ1のe2及び物理ベクトルレジスタ0番のfe2と関連付けられる。但し、マスクビットが“0”であるので、ベクトルレジスタ1のエントリe2(即ち、論理ベクトルレジスタ0番のエントリ2)に対する書込みは実行されない。
7-2) The
物理ベクトルレジスタ0番のエントリ3に相当する論理ベクトルレジスタ0番のエントリ3は、以下のように決定される。
The
1−3)物理ベクトルレジスタ0番のエントリ3(fe3)に対応するWP(2進数で“11”)により、物理0拡張ビットレジスタ82と、物理1拡張ビットレジスタ83から、対応する1ビットの値(ここでは、それぞれ“0”、“1”)が、拡張ビットレジスタ制御部86により読み出される。読み出された値は、それぞれパス820、パス830を介して更新部84へ送信される。
1-3) From the physical 0 extended bit register 82 and the physical 1 extended bit register 83, the corresponding 1 bit of WP corresponding to the entry 3 (fe3) of the
2−3)マスク識別回路841は、マスク部6からパス60を介して、WPに対応するマスクレジスタの内容及びマスク情報を受信する。命令M2はマスク付き命令なので、マスク識別回路841は、マスク情報に基づいて対応するマスクレジスタの1ビットの値“0”を演算回路842へ出力する。
2-3) The
3−3)ライトセレクタ840は、パス70を介してライト物理ベクトルレジスタ番号“0”を受信する。よって、ライトセレクタ840は、パス830を選択し、物理1拡張ビットレジスタ83の値である“1”を演算回路842へ送信する。
3-3) The write selector 840 receives the write physical vector register number “0” via the
4−3)演算回路842は、マスク識別回路841の出力値である“0”と、ライトセレクタ840から受信した値である“1”を、XOR演算する。結果は“1”となり、演算回路842は、当該演算結果をパス80を介してポインタ合成部9及び更新判定回路843へ送信する。演算結果は、WEXとしてポインタ合成部9へ送信される。
4-3) The
5−3)更新判定回路843は、パス70を介してライト物理ベクトルレジスタ番号“0”を受信する。また、更新判定回路843は、パス80を介して演算回路842の演算結果を受信する。ライト物理ベクトルレジスタ番号が“0”なので、更新判定回路843は、パス844に対して演算結果及び更新指示を送信する。
5-3) The
6−3)物理0拡張ビットレジスタ82は、WPと対応する自己のエントリに、パス844を介して更新判定回路843から受信した演算結果を書込む。
6-3) The physical 0 extension bit register 82 writes the operation result received from the
7−3)ポインタ合成部9は、パス80を介して受信したWEXと、パス40を介して受信したWPからWP合成回路92によりライト拡張ポインタを生成する。WEXは“1”、WPは“11”であるので、ライト拡張ポインタは2進数の“111”となる。ライト拡張ポインタ“111”は、図2の対応表により、ベクトルレジスタ1のe7を指す。よって、論理ベクトルレジスタ0番のエントリ3は、ベクトルレジスタ1のe7及び物理ベクトルレジスタ0番のfe3と関連付けられる。
7-3) The
以上より、物理ベクトルレジスタ0番として書込まれるベクトルレジスタ1のエントリ(即ち、論理ベクトルレジスタ0番のエントリ)は、それぞれe0、e5、書込み無し(e2)、書込み無し(e7)となる。
As described above, the entry of the
図8(e)に、命令M2の実行後の状態を示す。 FIG. 8E shows a state after execution of the instruction M2.
物理0拡張ビットレジスタ82の値はそれぞれ0、1、0、1となり、物理1拡張ビットレジスタ83の値はそれぞれ1、0、0、1となる。ベクトルレジスタ1のe0〜e7は、それぞれI,B,C,D,E,J、−、H(ハイフン(−)は初期値)が格納されている。このとき、物理ベクトルレジスタ0番の4つのエントリは、ベクトルレジスタ1のe0、e5、e2、e7が対応し、その内容はそれぞれI,J,C,Hとなる。物理ベクトルレジスタ1番の4つのエントリは、ベクトルレジスタ1のe4、e1、e2、e7がそれぞれ対応し、その内容はそれぞれE,B,C,Hとなる。
The values of the physical 0 extension bit register 82 are 0, 1, 0, 1, respectively, and the values of the physical 1 extension bit register 83 are 1, 0, 0, 1, respectively. E0 to e7 of the
命令M2の実行により、論理ベクトルレジスタ0番の4つのエントリの値は、E,B,C,Hという内容から、マスクレジスタの値が“1”となっているエントリのみが更新されて、I,J,C,Hとなる。
By executing the instruction M2, the values of the four entries of the
命令M2の実行後、物理ベクトルレジスタ0番にはレジスタ・リネーミング後のレジスタ状態が保持され、物理ベクトルレジスタ1番にはレジスタ・リネーミング前のレジスタ状態が保持されている。よって、1つの論理ベクトルレジスタ番号に対する、2つの物理ベクトルレジスタによるレジスタ・リネーミングが正しく行われていることになる。 After execution of the instruction M2, the physical vector register No. 0 holds the register state after register renaming, and the physical vector register No. 1 holds the register state before register renaming. Therefore, register renaming by two physical vector registers is correctly performed for one logical vector register number.
ここで、図8(e')に、従来技術により、図8(c')に示す状態から命令M2の実行した場合において、レジスタ・リネーミングを実行した後の状態を示す。物理ベクトルレジスタ0番の4つのエントリは、ベクトルレジスタ1のe0〜e3(即ち、論理ベクトルレジスタ0番のe0〜e3)がそれぞれ対応し、その内容は、I,J,C,Dとなっている。つまり、物理ベクトルレジスタ番号である“0”と、WPのそれぞれを合成しているため、上記のような関連付けがなされる。結果として、図8(e')に示す論理ベクトルレジスタ1番の4つのエントリの値は、図8(e)に示すI,J,C,Hという期待値と一致していない。従って、結果はデータ化けとなってしまう。
Here, FIG. 8 (e ′) shows a state after register renaming in the case where the instruction M2 is executed from the state shown in FIG. 8 (c ′) by the conventional technique. The four entries of
このように、論理ベクトルレジスタと物理ベクトルレジスタとの間で、エントリ毎に、レジスタ・リネーミングによる関連付けを実行できるので、マスク付き演算を実行してもレジスタ・リネーミングによるデータ化けを回避できるという格別の効果が得られる。 As described above, since association can be performed by register renaming for each entry between the logical vector register and the physical vector register, it is possible to avoid data corruption due to register renaming even if a masked operation is performed. A special effect is obtained.
次に、図9のフローチャートを参照し、本発明の第1の実施形態の動作について説明する。 Next, the operation of the first embodiment of the present invention will be described with reference to the flowchart of FIG.
レジスタ管理部7により、論理ベクトルレジスタと物理ベクトルレジスタの間で、レジスタ・リネーミングが実行される(S1)。
The
拡張ビット部8により、WPレジスタ4からWPが受信される(S2)。このとき、レジスタ・リネーミング時にレジスタ管理部7により指定された物理ベクトルレジスタのエントリのうち、データの書き込み対象のエントリに対応するWPが、1つずつ受信される。
The
更新部84は、物理0拡張ビットレジスタ82及び物理1拡張ビットレジスタ83から、WPに対応する拡張ビットを受信する(S3)。
The
ライトセレクタ840は、ライト物理ベクトルレジスタ番号に基づいて、拡張ビットを選択する(S4)。ここで、ライトセレクタ840は、ライト物理ベクトルレジスタ番号が“0”である場合には、物理1拡張ビットレジスタ83から読込まれた拡張ビットを選択する。ライト物理ベクトルレジスタ番号が“1”である場合には、物理0拡張ビットレジスタ82から読込まれた拡張ビットを選択する。 The write selector 840 selects an extension bit based on the write physical vector register number (S4). Here, the write selector 840 selects the extension bit read from the physical 1 extension bit register 83 when the write physical vector register number is “0”. When the write physical vector register number is “1”, the extension bit read from the physical 0 extension bit register 82 is selected.
マスク識別回路841は、マスク部6からレジスタ・リネーミング時にレジスタ管理部7により指定された物理ベクトルレジスタのエントリのうち、データの書き込み対象のエントリに対応するマスクビットを受信する(S4)。
The
演算回路842は、マスクビットの値とライトセレクタ840が選択した拡張ビットの値を用いて演算処理を実行する(S6)。演算回路842は、XOR演算を実行し、演算結果をWEXとしてポインタ合成部9へ送信する。
The
ポインタ合成部9は、演算回路842による演算結果とWPレジスタ4から受信したWPを合成し、ライト拡張ポインタを生成する(S7)。
The
ライト拡張ポインタに対応するベクトルレジスタ1のエントリと、WPに対応する物理ベクトルレジスタのエントリが関連付けされる(S8)。これにより、論理ベクトルレジスタのエントリと、ベクトルレジスタ1のエントリ及び物理ベクトルレジスタのエントリが、それぞれ関連付けられる。
The entry of the
ライト拡張ポインタで指定されたエントリに、ベクトルデータの要素が書込まれる(S9)。 Vector data elements are written in the entry designated by the write extension pointer (S9).
ベクトルデータの読出し要求があった場合(S10でYes)、リードセレクタ85は、レジスタ・リネーミングにより指定された物理ベクトルレジスタに対応する拡張ビットレジスタから、RPに対応する拡張ビットを受信する(S11)。リードセレクタ85は、受信した拡張ビットをポインタ合成部9へ送信する。
When there is a vector data read request (Yes in S10), the read selector 85 receives the extension bit corresponding to RP from the extension bit register corresponding to the physical vector register designated by the register renaming (S11). ). The read selector 85 transmits the received extension bit to the
ポインタ合成部9は、受信した拡張ビットとRPを合成し、リード拡張ポインタを生成する(S12)。
The
ベクトルレジスタ1のエントリのうち、リード拡張ポインタにより指定されるエントリからベクトルデータの要素が読込まれる(S13)。
Among the entries in the
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。
(Second Embodiment)
Next, a second embodiment of the present invention will be described.
第1の実施形態では、主として、ベクトルレジスタ1のエントリ数が8、エントリ数が4の物理ベクトルレジスタが2個の場合により説明した。しかし、本発明はこれに限るものではない。図10に示す所定の条件下において、ベクトルレジスタのエントリ数、物理ベクトルレジスタのエントリ数及び物理ベクトルレジスタの数は、いくつであってもよい。
In the first embodiment, the case where the number of entries in the
図10を参照し、所定の条件について説明する。物理ベクトルレジスタのエントリ数を2のx乗で表される数とする。この場合、WP又はRPのビット数はxビットの値となる。WP又はRPは、物理ベクトルレジスタの各エントリと1対1に対応するからである。ベクトルレジスタ1のエントリ数を2のm乗で表される数とすると、ライト拡張ポインタ若しくはリード拡張ポインタは、mビットの値となる。ライト拡張ポインタ若しくはリード拡張ポインタは、WP若しくはRPとWEX若しくはREXとを合成した値である。よって、WEX若しくはREXは、(m−x)ビットの値となる。
The predetermined condition will be described with reference to FIG. Let the number of entries in the physical vector register be a number represented by 2 to the power of x. In this case, the number of bits of WP or RP is an x-bit value. This is because WP or RP has a one-to-one correspondence with each entry in the physical vector register. If the number of entries in the
この条件下において、クトルレジスタのエントリ数、物理ベクトルレジスタのエントリ数及び物理ベクトルレジスタの数は、それぞれ任意に決定できる。 Under this condition, the number of entries in the Kuttle register, the number of entries in the physical vector register, and the number of physical vector registers can be determined arbitrarily.
次に、本発明の第2の実施形態の構成について、図11、図12、図13及び図14を用いて説明する。なお、図11、図12、図13及び図14において、第1の実施形態において説明した各構成と同一の番号を付してあるものは、第1の実施形態の各構成と同一である。 Next, the structure of the 2nd Embodiment of this invention is demonstrated using FIG.11, FIG.12, FIG.13 and FIG. In FIG. 11, FIG. 12, FIG. 13, and FIG. 14, the components having the same numbers as those described in the first embodiment are the same as those in the first embodiment.
図11を参照すると、本発明の第2の実施形態における情報処理装置130は、レジスタ管理部700、拡張ビット部800を有する。他の部分は、第1の実施形態と同様である。 Referring to FIG. 11, the information processing apparatus 130 according to the second exemplary embodiment of the present invention includes a register management unit 700 and an extension bit unit 800. Other parts are the same as those in the first embodiment.
レジスタ管理部700は、本発明の第1の実施形態のレジスタ管理部7が備える機能に加え、命令実行時のレジスタ・リネーミングにおける論理ベクトルレジスタと物理ベクトルレジスタとの対応関係をより詳細に管理する。対応関係とは、つまり、論理ベクトルレジスタと物理ベクトルレジスタの、エントリ毎の対応関係である。例えば、レジスタ管理部700は、物理ベクトルレジスタの数がnとすると、最大で過去n回分の命令実行後の論理ベクトルレジスタと物理ベクトルレジスタの対応関係を、命令の実行順序に従って管理できるように構成すればよい。なお、必ずしも過去n回分の対応関係を管理する必要はなく、ハードウェア資源等を考慮し、最適な設計をすればよい。レジスタ管理部700は、論理ベクトルレジスタに対応付けた物理ベクトルレジスタの物理ベクトルレジスタ番号により、対応関係を管理する。レジスタ管理部700は、リネーム情報と最新状態情報を、パス701を介して拡張ビット部800に送信する。レジスタ管理部700は、命令の実行毎に、最新状態情報とリネーム情報を送信する。最新状態情報及びリネーム情報は、レジスタ管理部700が管理する論理ベクトルレジスタと物理ベクトルレジスタの過去の対応関係に基づいて生成される情報である。最新状態情報及びリネーム情報は、物理ベクトルレジスタの番号で表される。リネーム情報とは、ある実行中の命令において、レジスタ・リネーミングにより論理ベクトルレジスタと関連付けられている物理ベクトルレジスタの番号である。レジスタ管理部700は、物理ベクトルレジスタの中からレジスタ・リネーミングの対象とする物理ベクトルレジスタを選択し、当該物理ベクトルレジスタの番号をリネーム情報として拡張ビット部800へ送信する。最新状態情報とは、ある命令を実行する際において、論理ベクトルレジスタの最新状態のデータを保持している物理ベクトルレジスタの番号である。論理ベクトルレジスタの内容は、命令の実行により逐次書き換えられていくが、最後に内容が書き換えられた状態が最新状態となる。レジスタ管理部700は、命令の実行順に従って管理している論理ベクトルレジスタと物理ベクトルレジスタとの対応関係を参照すれば、最新状態を保持している論理ベクトルレジスタと対応している物理ベクトルレジスタを特定できる。レジスタ管理部700は、物理ベクトルレジスタの中から論理ベクトルレジスタの最新状態のデータを保持している物理ベクトルレジスタを選択し、当該物理ベクトルレジスタの番号を最新状態情報として拡張ビット部800へ送信する。なお、レジスタ管理部700は、論理ベクトルレジスタの更新履歴に基づいて、自己が管理している過去の論理ベクトルレジスタと物理ベクトルレジスタの対応関係から、論理ベクトルレジスタの最新状態を保持している物理ベクトルレジスタを選択すればよい。
In addition to the functions of the
次に、図12を参照して、拡張ビット部800について説明する。 Next, the extension bit unit 800 will be described with reference to FIG.
拡張ビット部800は、拡張ビット格納部8000、物理0拡張ビットレジスタ82−0〜物理n拡張ビットレジスタ82−n(nは、物理ベクトルレジスタの数)、更新部8400を有する。その他の部分は、第1の実施形態と同様である。
The extension bit unit 800 includes an extension bit storage unit 8000, a physical 0 extension bit register 82-0 to a physical n extension bit register 82-n (n is the number of physical vector registers), and an
拡張ビット格納部8000は、物理ベクトルレジスタ数分の拡張ビットレジスタを備える。物理ベクトルレジスタの数がnである場合(nは任意の数)、拡張ビット格納部8000は、物理0拡張ビットレジスタ82−0〜物理n拡張ビットレジスタ82−nを備える。物理0拡張ビットレジスタ82−0〜物理n拡張ビットレジスタ82−nはそれぞれ、物理ベクトルレジスタのエントリ数と同数のエントリを有し、各エントリに拡張ビットを格納する。物理0拡張ビットレジスタ82−0〜物理n拡張ビットレジスタ82−nはそれぞれ、パス820−0〜パス820−nを介して更新部8400を接続している。また、物理0拡張ビットレジスタ82−0〜物理n拡張ビットレジスタ82−nはそれぞれ、パス821−0〜パス821−nを介してリードセレクタ85と接続している。
The extension bit storage unit 8000 includes as many extension bit registers as the number of physical vector registers. When the number of physical vector registers is n (n is an arbitrary number), the extension bit storage unit 8000 includes physical 0 extension bit registers 82-0 to physical n extension bit registers 82-n. Each of the physical 0 extension bit register 82-0 to physical n extension bit register 82-n has the same number of entries as the number of entries in the physical vector register, and stores an extension bit in each entry. The physical 0 extension bit register 82-0 to physical n extension bit register 82-n are connected to the
次に、図13を参照して、更新部8400について説明する。
Next, the
更新部8400は、ライトセレクタ8401、演算回路8420を有する。その他の部分は、第1の実施形態と同様である。
The
ライトセレクタ8401は、パス820−0〜パス820−nのうちの1つを選択し、選択したパスを介して物理0拡張ビットレジスタ82−0〜物理n拡張ビットレジスタ82−nのいずれかから拡張ビットを受信する。ライトセレクタ8401は、パス701を介してレジスタ管理部700から、最新状態情報を受信する。ライトセレクタ8401は、最新状態情報で示される物理ベクトルレジスタ番号に対応するパスを選択し、拡張ビットを受信する。ライトセレクタ8401は、受信した拡張ビットを、パス84010を介して演算回路8420へ送信する。例えば、最新状態情報が“2”であった場合、ライトセレクタ8401は、物理ベクトルレジスタ2番に対応するパス820−2を選択し、拡張ビットを受信する。なお、最新状態情報が初期値であった場合(例えば、NULL等)、パス70を介して受信したライト物理ベクトルレジスタ番号と対応するパスを選択する。例えば、ライト物理ベクトルレジスタ番号が“0”であった場合、ライトセレクタ8401は、パス820−0を選択する。
The
演算回路8420は、マスク識別回路841から受信したマスクビットと、ライトセレクタ8401から受信した拡張ビットとに基づいて、所定の演算を実行する。詳細は後述する。
The
更新判定回路843は、パス70を介して受信したライト物理ベクトルレジスタ番号に対応するパスを、844−0乃至844−nから選択する。例えば、ライト物理ベクトルレジスタ番号が“1”の場合、パス844−1を選択する。その他の機能は、第1の実施形態と同様である。
The
次に、図14を参照して、演算回路8420について説明する。
Next, the
演算回路8420は、マスクビット格納部8421、拡張ビット格納部8422及び演算実行部8423を有する。
The
マスクビット格納部8421は、マスク識別回路841から受信したマスクビットを格納する。
The mask
拡張ビット格納部8422は、ライトセレクタ8401から受信した拡張ビットを格納する。
The extension bit storage unit 8422 stores the extension bits received from the
演算実行部8423は、マスクビット格納部8421に格納された値と、拡張ビット格納部8422に格納された値とに基づいて、所定の演算を実行する。演算実行部8423は、マスクビット格納部8421に格納されている値が“1”である場合、演算実行部8423は、拡張ビット格納部8422に格納されている値をインクリメントする。例えば、拡張ビット格納部8422に格納されている値が“010”である場合、演算実行部8423は、当該値を“1”インクリメントして、“011”とするように構成すればよい。なお、演算実行部8422による演算処理はこれに限定されるものではなく、例えば、インクリメントする量を1以外としてもよい。また、インクリメントするのではなく、拡張ビット格納部8422に格納されている値を所定の量だけデクリメントするように構成してもよい。マスクビット格納部8421に格納されている値が“0”である場合、演算実行部8423は、演算処理を実行せず、拡張ビット格納部8422に格納されている値をそのままパス80へ送信する。演算実行部8423は、演算結果をWEXとして、パス80を介してポインタ合成部9へ送信する。拡張ビットの値は、上述したように(m−x)ビットの値となる。よって、上限値及び下限値が存在する。例えば、拡張ビットが3ビットの値である場合、上限値は“111”、下限値は“000”となる。演算実行部8423は、演算処理の結果が上限値を超過した場合、演算結果を下限値の値に設定する。また、演算実行部8423は、演算処理の結果が下限値を下回る場合、演算結果を上限値の値に設定する。
The operation execution unit 8423 executes a predetermined operation based on the value stored in the mask
なお、拡張ビット格納部8422に格納されている値が初期値(例えば、NULL等)の場合、演算実行部8423は、演算処理を実行せず、拡張ビットの値を上限値若しくは下限値のいずれかに設定する処理をする。但し、この場合、上限値若しくは下限値以外の任意の値を設定してもよい。 When the value stored in the extension bit storage unit 8422 is an initial value (for example, NULL), the calculation execution unit 8423 does not execute the calculation process, and sets the value of the extension bit as either the upper limit value or the lower limit value. Process to set to. However, in this case, any value other than the upper limit value or the lower limit value may be set.
次に、図15のフローチャートを参照して、演算回路8420による演算処理について説明する。
Next, arithmetic processing by the
演算回路8420は、マスク識別回路841からマスクビットを受信し、マスクビット格納部8421に格納する(S21)。
The
演算回路8420は、ライトセレクタ8401により選択された拡張ビットを、拡張ビット格納部8422に格納する(S22)。
The
演算実行部8423は、拡張ビット格納部内の拡張ビットの値が初期値(例えば、NULL等)か否かを判断する(S23)。 The operation execution unit 8423 determines whether or not the value of the extension bit in the extension bit storage unit is an initial value (for example, NULL or the like) (S23).
拡張ビットの値が初期値であった場合(S23でYesの場合)、演算実行部8423は、拡張ビットの値を設定する(S24)。演算実行部8423は、拡張ビットの値を上限値若しくは下限値に設定する。また、上限値若しくは下限値以外の任意の値に設定してもよい。 When the value of the extension bit is an initial value (Yes in S23), the operation execution unit 8423 sets the value of the extension bit (S24). The operation execution unit 8423 sets the value of the extension bit to the upper limit value or the lower limit value. Moreover, you may set to arbitrary values other than an upper limit or a lower limit.
演算実行部8423は、マスクビットがエントリへの書込みを許可しているか否かを判断する(S25)。例えば、マスクビットが“1”である場合、書込みが許可されていると判断する。 The operation execution unit 8423 determines whether or not the mask bit permits writing to the entry (S25). For example, when the mask bit is “1”, it is determined that writing is permitted.
書込みが許可されていると判断した場合(S25でYesの場合)、演算実行部8423は、拡張ビット格納部8422に格納されている値に対して演算処理を行う(S26)。例えば、当該値をインクリメント又はデクリメントするという演算処理を行う。ここで、演算処理の結果が、拡張ビットの値の上限値を超過した場合、演算実行部8423は、演算処理の結果として拡張ビットの下限値を設定する。また、演算処理の結果が、拡張ビットの値の下限値を下回った場合、演算実行部8423は、演算処理の結果として拡張ビットの上限値を設定する。 When it is determined that writing is permitted (Yes in S25), the operation execution unit 8423 performs operation processing on the value stored in the extension bit storage unit 8422 (S26). For example, an arithmetic process of incrementing or decrementing the value is performed. Here, when the result of the arithmetic processing exceeds the upper limit value of the extension bit value, the arithmetic execution unit 8423 sets the lower limit value of the extension bit as the result of the arithmetic processing. Also, when the result of the arithmetic processing falls below the lower limit value of the extension bit value, the arithmetic execution unit 8423 sets the upper limit value of the extension bit as the result of the arithmetic processing.
次に、図16、図17及び図18を参照して、第2の実施形態において命令を実行した場合について説明する。なお、説明においては、mが4、xが2の場合、即ち、ベクトルレジスタ1のエントリ数が16、物理ベクトルレジスタのエントリ数が4の場合について説明する。また、物理ベクトルレジスタの数は4であるものとして説明する。ベクトルレジスタ1には1つの論理ベクトルレジスタ番号(0番)が与えられ、また、論理ベクトルレジスタ0番の要素数は4であるものとする。つまり、ベクトルレジスタ1は、プログラムからは要素数が4(エントリ数が4)の1つの論理ベクトルレジスタとしてアクセスされる。
Next, a case where an instruction is executed in the second embodiment will be described with reference to FIGS. In the description, a case where m is 4 and x is 2, that is, a case where the number of entries in the
図16に、レジスタ・リネーミングを実行した場合における、論理ベクトルレジスタのエントリと、物理ベクトルレジスタのエントリとの対応表を示す。当該対応表に基づいて、論理ベクトルレジスタと物理ベクトルレジスタとの関連付けが行われる。なお、当該対応表は一例であり、関連付けはこれに限定されるものではない。 FIG. 16 shows a correspondence table between logical vector register entries and physical vector register entries when register renaming is executed. Based on the correspondence table, the logical vector register and the physical vector register are associated with each other. The correspondence table is an example, and the association is not limited to this.
図17(a)〜(b)及び図18(c)〜(d)を参照して、論理ベクトルレジスタ0番にベクトルデータを書込む通常命令を1命令(以降、命令0)、マスク付き命令を2命令(以降、それぞれ命令M1、命令M2)実行した場合について説明する。なお、図17及び図18において、ベクトルレジスタ1のエントリをe0〜e15とし、各物理ベクトルレジスタのエントリをfe0〜fe3とする。なお、ベクトルレジスタ1のエントリe0〜e15のいずれか4つが、論理ベクトルレジスタ0番の4つのエントリのいずれかと対応付けられる。つまり、物理ベクトルレジスタのエントリと関連付けられる論理ベクトルレジスタ0番のエントリは、ベクトルレジスタ1のエントリのうちのいずれか4つのエントリとなる。
Referring to FIGS. 17A to 17B and FIGS. 18C to 18D, one normal instruction for writing vector data to logical vector register No. 0 (hereinafter, instruction 0), masked instruction A case where two instructions are executed (hereinafter, instruction M1 and instruction M2 respectively) will be described. In FIG. 17 and FIG. 18, the entry of the
図17(a)に初期状態を示す。初期状態は、物理0拡張ビットレジスタ82−0〜物理3拡張ビットレジスタ82−3の全ての値が初期値(ここでは、ハイフン(−)で表す)となっているものとする。ベクトルレジスタ1の全エントリ、物理ベクトルレジスタ0番〜物理ベクトルレジスタ3番の全エントリは、それぞれ初期値(ここでは、ハイフン(−)で表す)となっているものとする。また、リネーム情報、最新状態情報共に初期値(ここでは、ハイフン(−)で表す)であるものとする。
FIG. 17A shows an initial state. In the initial state, it is assumed that all values of the physical 0 extension bit register 82-0 to the physical 3 extension bit register 82-3 are initial values (represented by hyphens (-) here). It is assumed that all entries in the
命令0を実行した場合について説明する。
A case where
なお、命令の発行により、マスク部6、レジスタ管理部700、レジスタ制御部12に制御情報が渡される。以下、命令実行について説明する場合には、全て同様とする。
Note that control information is transferred to the
命令0の論理ベクトルレジスタ0番は、レジスタ管理部700においてレジスタ・リネーミングにより、物理ベクトルレジスタ2番が指定されるものとする。命令0は通常命令なので、マスク識別回路841の出力は“1”となる。マスク識別回路841の出力は、マスクビット格納部8421へ格納される。
As for the logical vector register No. 0 of the
命令0は通常命令なので、各エントリに対応するマスク識別回路841の出力は、全て“1”となる。レジスタ管理部700から送信された最新状態情報が初期値なので、ライトセレクタ8401により、ライト物理ベクトルレジスタ番号“2”に対応する物理2拡張ビットレジスタ82−2の値が選択される。ライトセレクタ8401により選択された値は、拡張ビット格納部8422に格納される。演算回路8420は、マスクビット格納部8421に格納された値及び拡張ビット格納部8422に格納された値により演算処理を実行する。ここで、物理2拡張ビットレジスタ82−2に格納されている値は初期値なので、演算回路8420は、ここでは、拡張ビットの下限値である“00”を演算結果として出力する。演算結果は、更新判定回路843により、パス844−2を介して、物理2拡張ビットレジスタ82−2の対応するエントリに書込まれる。
Since the
物理ベクトルレジスタ2番の各エントリと、論理ベクトルレジスタ0番の各エントリとの関連付けは、以下のように行われる。
The association between each entry of the
1)物理ベクトルレジスタ2番のエントリ0(fe0)に対応するWP(2進数で“00”)により、物理0拡張ビットレジスタ82−0〜物理n拡張ビットレジスタ82−nから、対応する1ビットの値が、拡張ビットレジスタ制御部86により読み出される。読み出された値は、それぞれパス820−0〜パス820−nを介して更新部8400へ送信される。
1) 1 bit corresponding from physical 0 extended bit register 82-0 to physical n extended bit register 82-n by WP (binary number "00") corresponding to entry 0 (fe0) of
2)マスク識別回路841は、マスク部6からパス60を介して、WPに対応するマスクレジスタの内容及びマスク情報を受信する。命令0は通常命令なので、マスク識別回路841は、マスク情報に基づいて1ビットの値“1”を演算回路8420へ出力する。
2) The
3)ライトセレクタ8401は、パス70を介してライト物理ベクトルレジスタ番号“2”を受信する。また、ライトセレクタ8401は、パス701を介して、最新状態情報を受信する。最新状態情報が初期値であるので、ライトセレクタ8401は、ライト物理ベクトルレジスタ番号“2”に対応するパス820−2を選択し、物理2拡張ビットレジスタの値である初期値を演算回路842へ送信する。ここで、初期値として、例えばNULLデータ等が送信される。
3) The
4)演算回路8420は、ライトセレクタ8401から受信した初期値が拡張ビット格納部8422に格納されているので、拡張ビットの下限値である“00”を演算結果として出力する。演算回路8420は、当該演算結果をパス80を介してポインタ合成部9及び更新判定回路843へ送信する。演算結果は、WEXとしてポインタ合成部9へ送信される。
4) Since the initial value received from the
5)更新判定回路843は、パス70を介してライト物理ベクトルレジスタ番号“2”を受信する。また、更新判定回路843は、パス80を介して演算回路842の演算結果を受信する。ライト物理ベクトルレジスタ番号が“2”なので、更新判定回路843は、パス844−2に対して演算結果及び更新指示を送信する。
5) The
6)物理2拡張ビットレジスタ82−2は、WPと対応するエントリに、パス844−2を介して更新判定回路843から受信した演算結果を書込む。
6) The physical 2 extension bit register 82-2 writes the calculation result received from the
7)ポインタ合成部9は、パス80を介して受信したWEXと、パス40を介して受信したWPからWP合成回路92によりライト拡張ポインタを生成する。WEXは“00”、WPは“00”であるので、ライト拡張ポインタは2進数の“0000”となる。ライト拡張ポインタ “0000”は、図16の対応表により、ベクトルレジスタ1のe0を指す。
7) The
以上のようにして、論理ベクトルレジスタ0番エントリ0は、ベクトルレジスタ1のe0及び物理ベクトルレジスタ2番のfe0が関連付けられる。命令0により、ライト拡張ポインタ“0000”で指定されるベクトルレジスタ1のエントリe0にベクトルデータの要素が書込まれる。つまり、プログラムにより、論理ベクトルレジスタ0番のエントリ0に、ベクトルレジスタ1のe0に書込まれたベクトルデータの要素が書込まれるということである。また、物理的には、ベクトルレジスタ1のe0に対応する物理ベクトルレジスタ2番のエントリfe0にベクトルデータの要素が書込まれる。
As described above, the
なお、物理ベクトルレジスタ2番のエントリ1以降は、WPを+1(インクリメント)して、上記 1)から物理ベクトルレジスタ1番のエントリ数分繰り返す。WPが“00”〜“11”まで変化した際に物理ベクトルレジスタ2番と関連付けられるベクトルレジスタ1のエントリは、それぞれ、e0、e1、e2、e3となる。図17(b)において、fe0(e0)、fe1(e1)、fe2(e2)、fe3(e3)と表現する。また、論理ベクトルレジスタ0番の4つのエントリはそれぞれ、ベクトルレジスタ1のe0、e1、e2、e3と関連付けられる。
From
図17(b)に、命令0の実行後の状態を示す。
FIG. 17B shows the state after the
物理2拡張ビットレジスタ82−2は、全てのビットの値が“00”となる。ベクトルレジスタ1のe0〜e3(即ち、論理ベクトルレジスタ0番のエントリ0〜3)はそれぞれA、B、C、Dが格納されている。このとき、物理ベクトルレジスタ2番の4つのエントリfe0〜fe3は、ベクトルレジスタ1のe0〜e3(即ち、論理ベクトルレジスタ0番のエントリ0〜3)のそれぞれが対応し、その内容は、A、B、C、Dとなる。
In the physical 2 extension bit register 82-2, the values of all bits are “00”. A, B, C, and D are stored in e0 to e3 of the vector register 1 (that is,
命令0の実行後、物理ベクトルレジスタ2番にはレジスタ・リネーミング後のレジスタ状態が保持され、他の物理ベクトルレジスタにはレジスタ・リネーミング前のレジスタ状態が保持されている。よって、レジスタ・リネーミングが正しく行われていることになる。
After the
次に、マスク付き命令である命令M1の実行について説明する。 Next, execution of the instruction M1, which is an instruction with a mask, will be described.
命令M1の論理ベクトルレジスタ0番は、レジスタ管理部700においてレジスタ・リネーミングにより、物理ベクトルレジスタ0番が指定されるものとする。マスク識別回路841の出力は、マスクビット格納部8421へ格納される。
The
命令M1はマスク付き命令であり、各エントリに対応するマスク識別回路841の出力は、それぞれ1、1、0、0となる。レジスタ管理部700から送信された最新状態情報が物理ベクトルレジスタ2番を示す“2”であるので、ライトセレクタ8401により、物理2拡張ビットレジスタ82−2の値が選択される。ライトセレクタ8401により選択された値は、拡張ビット格納部8422に格納される。演算回路8420は、マスクビット格納部8421に格納された値及び拡張ビット格納部8422に格納された値により演算処理を実行する。演算回路8420は、演算結果をポインタ合成部9及び更新判定回路843に送信する。演算結果は、更新判定回路843により、パス844−0を介して、物理0拡張ビットレジスタ82−0の対応するエントリに書込まれる。ライト物理ベクトルレジスタ番号が“0”だからである。
The instruction M1 is an instruction with a mask, and the output of the
物理ベクトルレジスタ0番の各エントリと、論理ベクトルレジスタ0番の各エントリとの関連付けは、以下のように行われる。
The association between each entry in the
1−0)物理ベクトルレジスタ2番のエントリ0(fe0)に対応するWP(2進数で“00”)により、物理0拡張ビットレジスタ82−0〜物理n拡張ビットレジスタ82−nから、対応する1ビットの値が、拡張ビットレジスタ制御部86により読み出される。読み出された値は、それぞれパス820−0〜パス820−nを介して更新部8400へ送信される。
1-0) Corresponding from the physical 0 extension bit register 82-0 to the physical n extension bit register 82-n by the WP (binary number "00") corresponding to the entry 0 (fe0) of the
2−0)マスク識別回路841は、マスク部6からパス60を介して、WPに対応するマスクレジスタの内容及びマスク情報を受信する。命令M1はマスク付き命令であり、エントリ0に対応する値は“1”である。マスク識別回路841は、マスクビット格納部8421へ出力する。
2-0) The
3−0)ライトセレクタ8401は、パス70を介してライト物理ベクトルレジスタ番号“0”を受信する。また、ライトセレクタ8401は、パス701を介して、最新状態情報を受信する。最新状態情報は“2”(実際は2進数で表現されるが、便宜上10進数で表現する。以下同様とする。)であるので、ライトセレクタ8401は、パス820−2を選択し、物理2拡張ビットレジスタの値である“00”を演算回路8420の拡張ビット格納部8422へ送信する。
3-0) The
4−0)演算回路8420は、マスクビット格納部8421の値と拡張ビット格納部8422に格納されている値により、演算処理を実行する。演算回路8420は、マスクビット格納部8421に格納されている値が“1”であるので、演算処理を実行する。ここでは、演算回路8420は、拡張ビット格納部8422に格納されている値の“00”を1だけインクリメントした“01”を演算結果として生成する。演算回路8420は、当該演算結果をパス80を介してポインタ合成部9及び更新判定回路843へ送信する。演算結果は、WEXとしてポインタ合成部9へ送信される。
4-0) The
5−0)更新判定回路843は、パス70を介してライト物理ベクトルレジスタ番号“0”を受信する。また、更新判定回路843は、パス80を介して演算回路8420の演算結果を受信する。ライト物理ベクトルレジスタ番号が“0”なので、更新判定回路843は、パス844−0に対して演算結果及び更新指示を送信する。
5-0) The
6−0)物理0拡張ビットレジスタ82−0は、WPと対応するエントリに、パス844−0を介して受信した演算結果を書込む。 6-0) The physical 0 extension bit register 82-0 writes the operation result received via the path 844-0 in the entry corresponding to WP.
7−0)ポインタ合成部9は、パス80を介して受信したWEXと、パス40を介して受信したWPからWP合成回路92によりライト拡張ポインタを生成する。WEXは“01”、WPは“00”であるので、ライト拡張ポインタは2進数の“0100”となる。ライト拡張ポインタ“0100”は、図16の対応表により、ベクトルレジスタ1のe4を指す。
7-0) The
物理ベクトルレジスタ0番のエントリ1以降も、上記と同様に関連付けが行われる。
The association is also performed in the same manner as described above for the
物理ベクトルレジスタ0番と関連付けられるベクトルレジスタ1のエントリは、それぞれ、e4、e5、e2、e3となる。図18(c)において、fe0(e4)、fe1(e5)、fe2(e2)、fe3(e3)と表現する。また、論理ベクトルレジスタ0番の4つのエントリはそれぞれ、ベクトルレジスタ1のe4、e5、e2、e3と関連付けられる。
The entries in the
図18(c)に、命令M1の実行後の状態を示す。 FIG. 18C shows a state after execution of the instruction M1.
物理0拡張ビットレジスタ82−0の値は、それぞれ“01”、“01”、“00”、“00”となる。ベクトルレジスタ1のe4及びe5にはそれぞれE、Fが格納されている。このとき、物理ベクトルレジスタ0番の4つのエントリfe0〜fe3は、ベクトルレジスタ1のe4、e5、e2、e3(即ち、論理ベクトルレジスタ0番のエントリ0〜3)のそれぞれが対応し、その内容は、E、F、C、Dとなる。
The values of the physical 0 extension bit register 82-0 are “01”, “01”, “00”, and “00”, respectively. E and F are stored in e4 and e5 of the
命令M1の実行後、物理ベクトルレジスタ0番にはレジスタ・リネーミング後のレジスタ状態が保持され、他の物理ベクトルレジスタにはレジスタ・リネーミング前のレジスタ状態が保持されている。よって、レジスタ・リネーミングが正しく行われていることになる。 After execution of the instruction M1, the physical vector register No. 0 holds the register state after register renaming, and the other physical vector registers hold the register state before register renaming. Therefore, register renaming is correctly performed.
命令M2も、上記と同様の処理により実行される。 The instruction M2 is also executed by the same process as described above.
図18(d)に命令M2の実行後の状態を示す。命令M1の実行後と同様、レジスタ・リネーミングが正しく実行されている。 FIG. 18D shows a state after execution of the instruction M2. The register renaming is correctly executed as in the case after the execution of the instruction M1.
以上のように、本発明の第2の実施形態によれば、ベクトルレジスタのエントリ数、物理ベクトルレジスタのエントリ数及び物理ベクトルレジスタの数を任意に設定した場合でも、マスク演算の実行時において、ベクトルレジスタについてレジスタ・リネーミングが可能となる。これにより、ベクトルデータを用いる処理において、命令の実行性能の向上を図ることが可能になる。なお、ベクトルデータを処理する情報処理装置において、ベクトルデータを格納するベクトルレジスタの数は非常に多くなるので、ベクトルレジスタのエントリ数、物理ベクトルレジスタのエントリ数及び物理ベクトルレジスタの数を任意に設定した場合においても、レジスタ・リネーミングを可能とし、命令の実行性能の向上が図れるという効果は格別のものである。 As described above, according to the second embodiment of the present invention, even when the number of vector register entries, the number of physical vector register entries, and the number of physical vector registers are arbitrarily set, at the time of executing the mask operation, Register renaming is possible for vector registers. This makes it possible to improve instruction execution performance in processing using vector data. In an information processing device that processes vector data, the number of vector registers that store vector data becomes very large, so the number of vector register entries, the number of physical vector register entries, and the number of physical vector registers can be set arbitrarily. Even in this case, register renaming is possible, and the effect of improving the instruction execution performance is exceptional.
1 ベクトルレジスタ
2 WDレジスタ
3 RDレジスタ
4 WPレジスタ
5 RPレジスタ
6 マスク部
7 レジスタ管理部
700 レジスタ管理部
8 拡張ビット部
800 拡張ビット部
82 物理0拡張ビットレジスタ
82−0〜82−n 物理n拡張ビットレジスタ
83 物理1拡張ビットレジスタ
84 更新部
8400 更新部
840 ライトセレクタ
8401 ライトセレクタ
841 マスク識別回路
842 演算回路
8420 演算回路
8421 マスクビット格納部
8422 拡張ビット格納部
8423 演算実行部
843 更新判定回路
8000 拡張ビット格納部
85 リードセレクタ
86 拡張ビットレジスタ制御部
9 ポインタ合成部
92 WP合成回路
93 RP合成回路
10 WEレジスタ
11 WE制御部
12 レジスタ制御部
13 情報処理装置
1
Claims (2)
該情報処理装置は、2n個のエントリ(0番エントリ〜2n−1番エントリ)を有するベクタレジスタと、nビットの第1の拡張ビットレジスタ及びnビットの第2の拡張ビットレジスタと、nビットのマスクレジスタを備えており、
該情報処理装置は、前記論理レジスタの各要素を前記ベクタレジスタのエントリに対応付けるリネーム処理を行うものであり、
該リネーム処理は、前記論理レジスタのi番要素(0≦i≦n−1)を前記ベクタレジスタのi番エントリ又はi+n番エントリのどちらかのエントリに対応付ける処理を前記論理レジスタの0番要素〜n−1番要素について行うものであり、
前記リネーム処理の結果は、要素毎にi番エントリに対応付けた場合は「0」を、i+n番エントリに対応付けた場合は「1」を、第1の拡張ビットレジスタに格納して合計nビットで表し、
演算処理を実行して、前記リネーム処理の結果に基づいた前記ベクトルレジスタの対応するエントリ(物理ベクトルレジスタ)を更新し、
次に前記論理レジスタをリネーム処理する場合は、前記リネーム処理と同様にリネーム処理した結果を、第2の拡張ビットレジスタに格納して合計nビットで表し、
演算処理を実行して、前記リネーム処理の結果に基づいた前記ベクトルレジスタの対応するエントリ(物理ベクトルレジスタ)を更新し、
以降、リネーム処理及び演算処理は交互に前記第1の拡張ビットレジスタ又は前記第2の拡張ビットレジスタを用いて行うものであり、
前記マスクレジスタはマスク付き演算を行わない場合は全ビットに「1」を、マスク付き演算を行う場合は、更新対象となる要素に対応したビット位置に「1」を、更新対象外の要素に対応したビット位置に「0」を保持させておき、
前記リネーム処理において、リネーム処理の結果を格納しない方(前回リネーム処理の結果を格納した方)の拡張ビットレジスタと前記マスクレジスタとの排他的論理和(XOR)演算を行った結果を、新たにリネーム処理の結果を格納する方の拡張ビットレジスタに格納することによって、前記マスクレジスタの「0」であるビット位置に対応する構成要素は、更新前のベクトルレジスタのエントリに対応付け、前記マスクレジスタの「1」であるビット位置に対応する構成要素は、更新対象のベクトルレジスタのエントリに対応付ける
ことを特徴とする情報処理装置。 An information processing apparatus for processing a logical vector register having n elements (0th element to n-1th element),
The information processing apparatus includes a vector register having 2n entries (0th entry to 2n-1th entry), an n-bit first extension bit register, an n-bit second extension bit register, and n bits With a mask register,
The information processing apparatus performs a rename process for associating each element of the logical register with an entry of the vector register,
The renaming process is a process of associating the i-th element (0 ≦ i ≦ n−1) of the logical register with either the i-th entry or i + n-th entry of the vector register. for the n-1 element,
As a result of the rename process, “0” is stored in the first extension bit register when “0” is associated with the i-th entry for each element, and “1” is stored in the first extension bit register. Represented in bits,
Performing an arithmetic process to update a corresponding entry (physical vector register) of the vector register based on the result of the rename process;
Next, when the logical register is renamed, the result of the rename process similar to the rename process is stored in the second extension bit register and expressed by a total of n bits,
Performing an arithmetic process to update a corresponding entry (physical vector register) of the vector register based on the result of the rename process;
Thereafter, the rename process and the arithmetic process are alternately performed using the first extension bit register or the second extension bit register.
The mask register sets “1” to all bits when the operation with mask is not performed, and sets “1” to the bit position corresponding to the element to be updated and “1” as the element not to be updated when the operation with mask is performed. Keep “0” in the corresponding bit position,
In the renaming process, the result of performing an exclusive OR (XOR) operation between the extension bit register and the mask register that does not store the result of the renaming process (the one that stored the result of the previous renaming process) By storing the result of the renaming process in the extension bit register that stores the result, the component corresponding to the bit position that is “0” of the mask register is associated with the entry of the vector register before the update, and the mask register An information processing apparatus characterized in that a component corresponding to a bit position of “1” is associated with an entry of a vector register to be updated .
該情報処理装置は、2n個のエントリ(0番エントリ〜2n−1番エントリ)を有するベクタレジスタと、nビットの第1の拡張ビットレジスタ及びnビットの第2の拡張ビットレジスタを含む拡張ビット部と、nビットのマスクレジスタを備えており、
該情報処理装置は、前記論理レジスタの各要素を前記ベクタレジスタのエントリに対応付けるリネーム処理を行うものであり、
該リネーム処理は、前記論理レジスタのi番要素(0≦i≦n−1)を前記ベクタレジスタのi番エントリ又はi+n番エントリのどちらかのエントリに対応付ける処理を前記論理レジスタの0番要素〜n−1番要素について行うものであり、
前記拡張ビット部は、前記リネーム処理の結果を、要素毎にi番エントリに対応付けた場合は「0」を、i+n番エントリに対応付けた場合は「1」を、第1の拡張ビットレジスタに格納して合計nビットで表し、
前記拡張ビット部は、演算処理を実行して、前記リネーム処理の結果に基づいた前記ベクトルレジスタの対応するエントリ(物理ベクトルレジスタ)を更新し、
次に前記論理レジスタをリネーム処理する場合は、前記リネーム処理と同様にリネーム処理した結果を、第2の拡張ビットレジスタに格納して合計nビットで表し、
前記拡張ビット部は、演算処理を実行して、前記リネーム処理の結果に基づいた前記ベクトルレジスタの対応するエントリ(物理ベクトルレジスタ)を更新し、
以降、リネーム処理及び演算処理は交互に前記第1の拡張ビットレジスタ又は前記第2の拡張ビットレジスタを用いて行うものであり、
前記マスクレジスタはマスク付き演算を行わない場合は全ビットに「1」を、マスク付き演算を行う場合は、更新対象となる要素に対応したビット位置に「1」を、更新対象外の要素に対応したビット位置に「0」を保持させておき、
前記拡張ビット部は、前記リネーム処理において、リネーム処理の結果を格納しない方(前回リネーム処理の結果を格納した方)の拡張ビットレジスタと前記マスクレジスタとの排他的論理和(XOR)演算を行った結果を、新たにリネーム処理の結果を格納する方の拡張ビットレジスタに格納することによって、前記マスクレジスタの「0」であるビット位置に対応する構成要素は、更新前のベクトルレジスタのエントリに対応付け、前記マスクレジスタの「1」であるビット位置に対応する構成要素は、更新対象のベクトルレジスタのエントリに対応付ける
ことを特徴とする情報処理方法。 An information processing method in an information processing apparatus for processing a logical vector register having n elements (0th element to n-1th element),
The information processing apparatus includes a vector register having 2n entries (0th entry to 2n-1th entry), an extension bit including an n-bit first extension bit register and an n-bit second extension bit register And an n-bit mask register,
The information processing apparatus performs a rename process for associating each element of the logical register with an entry of the vector register,
The renaming process is a process of associating the i-th element (0 ≦ i ≦ n−1) of the logical register with either the i-th entry or i + n-th entry of the vector register. for the n-1 element,
The extension bit unit sets the result of the rename process to “0” when the element is associated with the i-th entry for each element, and “1” when the element is associated with the i + n-th entry. Stored in a total of n bits,
The extension bit unit performs an arithmetic process to update a corresponding entry (physical vector register) of the vector register based on the result of the rename process,
Next, when the logical register is renamed, the result of the rename process similar to the rename process is stored in the second extension bit register and expressed by a total of n bits,
The extension bit unit performs an arithmetic process to update a corresponding entry (physical vector register) of the vector register based on the result of the rename process,
Thereafter, the rename process and the arithmetic process are alternately performed using the first extension bit register or the second extension bit register.
The mask register sets “1” to all bits when the operation with mask is not performed, and sets “1” to the bit position corresponding to the element to be updated and “1” as the element not to be updated when the operation with mask is performed. Keep “0” in the corresponding bit position,
The extension bit unit performs an exclusive OR (XOR) operation between the extension bit register that does not store the result of the rename process (the one that stores the result of the previous rename process) and the mask register in the rename process. The result corresponding to the bit position that is “0” of the mask register is stored in the entry of the vector register before the update. An information processing method , wherein a component corresponding to a bit position that is “1” of the mask register is associated with an entry of a vector register to be updated .
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2006262640A JP5000248B2 (en) | 2006-09-27 | 2006-09-27 | Information processing apparatus and information processing method |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2006262640A JP5000248B2 (en) | 2006-09-27 | 2006-09-27 | Information processing apparatus and information processing method |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2008083947A JP2008083947A (en) | 2008-04-10 |
| JP5000248B2 true JP5000248B2 (en) | 2012-08-15 |
Family
ID=39354775
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2006262640A Expired - Fee Related JP5000248B2 (en) | 2006-09-27 | 2006-09-27 | Information processing apparatus and information processing method |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP5000248B2 (en) |
Families Citing this family (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4868255B2 (en) * | 2008-09-24 | 2012-02-01 | 日本電気株式会社 | Processor, processor control method, and information processing apparatus |
| JP2010205088A (en) * | 2009-03-04 | 2010-09-16 | Nec Computertechno Ltd | Vector processing apparatus and vector processing method |
| JP5419134B2 (en) * | 2009-03-04 | 2014-02-19 | エヌイーシーコンピュータテクノ株式会社 | Vector processor and vector instruction issuing method |
| JP5413473B2 (en) * | 2012-03-01 | 2014-02-12 | 日本電気株式会社 | Vector processing apparatus and vector processing method |
| GB2553783B (en) | 2016-09-13 | 2020-11-04 | Advanced Risc Mach Ltd | Vector multiply-add instruction |
| JP7078380B2 (en) * | 2017-11-01 | 2022-05-31 | Necプラットフォームズ株式会社 | Instruction control device, instruction control method and program |
| JP6705473B2 (en) * | 2018-06-22 | 2020-06-03 | 日本電気株式会社 | Arithmetic device and arithmetic system |
-
2006
- 2006-09-27 JP JP2006262640A patent/JP5000248B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2008083947A (en) | 2008-04-10 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN102124443B (en) | Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor | |
| JP6293795B2 (en) | Vector register addressing and functions based on scalar register data values | |
| JP3204323B2 (en) | Microprocessor with built-in cache memory | |
| KR20130085042A (en) | Memories and methods for performing atomic memory operations in accordance with configuration information | |
| TW202246973A (en) | Hardware processor and processor | |
| JP2012119009A5 (en) | A processor that performs a selection operation | |
| WO2012102002A1 (en) | Virtual computer system, virtual computer control method, virtual computer control program, recording medium, and integrated circuit | |
| JP5000248B2 (en) | Information processing apparatus and information processing method | |
| CN107851013A (en) | element size increase instruction | |
| JPS59128670A (en) | Vector processor | |
| WO2001086432A2 (en) | Cryptographic data processing systems, computer program products, and methods of operating same, using parallel execution units | |
| CN119127725A (en) | Lookup table with data element promotion | |
| TW201823972A (en) | Vector generation instruction | |
| JPH10207717A (en) | Microcomputer | |
| JP3659252B2 (en) | Vector data address reference method and vector processor | |
| JPH04343134A (en) | Program counter device | |
| WO2019094492A1 (en) | System and method of vliw instruction processing using reduced-width vliw processor | |
| US10572262B2 (en) | Register mapping of register specifiers to registers depending on a key value used for mapping at least two of the register specifiers | |
| JP2003241960A (en) | Processor, operation instruction processing method and operation control method in the processor | |
| JP4686435B2 (en) | Arithmetic unit | |
| JP5751181B2 (en) | Instruction control circuit, processor, and instruction control method | |
| US20020156992A1 (en) | Information processing device and computer system | |
| JP5659772B2 (en) | Arithmetic processing unit | |
| JP2006285996A (en) | Conditional branch instruction encoding in multiple instruction set data processing systems | |
| JP3395727B2 (en) | Arithmetic device and method |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080415 |
|
| RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20080616 |
|
| RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20090519 |
|
| RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20110712 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110913 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111114 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120508 |
|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120516 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 5000248 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150525 Year of fee payment: 3 |
|
| S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| LAPS | Cancellation because of no payment of annual fees |