JP6167193B1 - Processor - Google Patents
Processor Download PDFInfo
- Publication number
- JP6167193B1 JP6167193B1 JP2016011234A JP2016011234A JP6167193B1 JP 6167193 B1 JP6167193 B1 JP 6167193B1 JP 2016011234 A JP2016011234 A JP 2016011234A JP 2016011234 A JP2016011234 A JP 2016011234A JP 6167193 B1 JP6167193 B1 JP 6167193B1
- Authority
- JP
- Japan
- Prior art keywords
- unit
- register
- instruction
- instruction sequence
- execution
- 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.)
- Active
Links
Images
Abstract
【課題】非数値計算処理を高速処理可能なプロセッサを提供する。【解決手段】プロセッサ1は、複数のプロセッシングエレメント10−1〜10−Nと実行管理部40とを備える。各プロセッシングエレメントそれぞれは、割り当てられた単位命令列を一時記憶する一時記憶部11を有し、それぞれの一時記憶部に記憶された単位命令列に含まれる命令を実行可能である。実行管理部は、アセンブリ言語以下のレベルの命令列であるプログラムを、途中に分岐命令を含まない命令列であって、分岐先の先頭命令を始端とし、分岐命令を終端とする命令列である単位命令列に分割し、分割した当該単位命令列を複数のプロセッシングエレメントのそれぞれに逐次割り当て、割り当てた単位命令列を複数のプロセッシングエレメントに並列実行させる。【選択図】図1A processor capable of high-speed processing of non-numerical calculation processing is provided. A processor 1 includes a plurality of processing elements 10-1 to 10-N and an execution management unit 40. Each processing element has a temporary storage unit 11 for temporarily storing an assigned unit instruction sequence, and can execute an instruction included in the unit instruction sequence stored in each temporary storage unit. The execution management unit is an instruction sequence that does not include a branch instruction in the middle of a program that is an instruction sequence of the assembly language or lower, and is an instruction sequence that starts with the first instruction at the branch destination and ends with the branch instruction. The unit instruction sequence is divided, the divided unit instruction sequence is sequentially assigned to each of the plurality of processing elements, and the assigned unit instruction sequence is executed in parallel by the plurality of processing elements. [Selection] Figure 1
Description
本発明は、プロセッサに関する。 The present invention relates to a processor.
近年、プログラムを命令レベルで並列処理してプロセッサの高速処理を実現する技術が知られている(例えば、非特許文献1を参照)。このような技術を使用した従来のプロセッサでは、より多くの命令を並列処理するために、例えば、コンパイラによりプログラムを最適化する静的最適化手法や、分岐予測及び投機的実行を行うなどの動的手法が行われている。 In recent years, a technique for realizing high-speed processing of a processor by processing a program in parallel at an instruction level is known (for example, see Non-Patent Document 1). In a conventional processor using such a technique, in order to process more instructions in parallel, for example, a static optimization method in which a program is optimized by a compiler, a branch prediction and speculative execution are performed. Method is used.
しかしながら、上述した従来のプロセッサでは、例えば、プロセッサの一般的な応用である非数値計算処理に対して充分に高速処理が得られない場合があり、非数値計算処理に対して高速処理が可能なプロセッサが求められている。 However, with the conventional processor described above, for example, there may be cases where sufficiently high-speed processing cannot be obtained for non-numerical calculation processing, which is a general application of the processor, and high-speed processing is possible for non-numeric calculation processing A processor is sought.
本発明は、上記問題を解決すべくなされたもので、その目的は、非数値計算処理を高速処理することができるプロセッサを提供することにある。 The present invention has been made to solve the above problems, and an object of the present invention is to provide a processor capable of performing high-speed non-numeric calculation processing.
上記問題を解決するために、本発明の一態様は、それぞれが、割り当てられた単位命令列を一時記憶する一時記憶部を有し、それぞれの前記一時記憶部に記憶された前記単位命令列に含まれる命令を実行可能な複数のプロセッシングエレメントと、アセンブリ言語以下のレベルの命令列であるプログラムを、途中に分岐命令を含まない命令列であって、分岐先の先頭命令を始端とし、分岐命令を終端とする命令列である前記単位命令列に分割し、分割した当該単位命令列を前記複数のプロセッシングエレメントのそれぞれに逐次割り当て、割り当てた前記単位命令列を前記複数のプロセッシングエレメントに並列実行させる実行管理部と、前記プログラムにおける前記単位命令列の先頭命令の位置を示す先頭位置情報と、当該単位命令列が有効であるか否かを示す有効情報と、次に実行する前記プロセッシングエレメントを示す次実行情報とを対応付けた管理情報を複数有する管理テーブルを記憶する管理テーブル記憶部とを備え、前記実行管理部は、分割した前記単位命令列が前記複数のプロセッシングエレメントのいずれの前記一時記憶部にも記憶されていない場合に、当該単位命令列を前記複数のプロセッシングエレメントのいずれかに割り当て、分割した前記単位命令列が前記複数のプロセッシングエレメントのいずれかの前記一時記憶部に既に記憶されている場合に、当該プロセッシングエレメントに、当該一時記憶部に既に記憶されている前記単位命令列を並列実行させ、前記プログラムに分岐命令が検出された際に、前記管理テーブル記憶部が記憶する前記管理テーブルに基づいて、次に実行する前記単位命令列が前記複数のプロセッシングエレメントのいずれかの前記一時記憶部に既に記憶されており、且つ有効な状態であるか否かを判定することを特徴とするプロセッサである。 In order to solve the above problem, according to one aspect of the present invention, each has a temporary storage unit that temporarily stores an assigned unit instruction sequence, and the unit instruction sequence stored in each temporary storage unit includes A branch instruction that includes multiple processing elements that can execute the included instructions and a program that is an instruction sequence at a level lower than assembly language, and that does not include a branch instruction in the middle, starting from the first instruction at the branch destination Is divided into the unit instruction sequence that is an instruction sequence that ends with, and the divided unit instruction sequence is sequentially assigned to each of the plurality of processing elements, and the assigned unit instruction sequence is executed in parallel by the plurality of processing elements. an execution management unit, and the head position information indicating a position of the first instruction of the unit instruction sequence in the program, the unit instruction sequence Yes Comprising a whether a valid indicating information whether there are, then the management table storage unit that stores the management table in which a plurality having a management information associating the following execution information indicating the processing elements that perform, the execution management unit Is, when the divided unit instruction sequence is not stored in any of the temporary storage units of the plurality of processing elements, the unit instruction sequence is assigned to any of the plurality of processing elements, and the unit is divided When the instruction sequence is already stored in the temporary storage unit of any of the plurality of processing elements, the processing element is caused to execute the unit instruction sequence already stored in the temporary storage unit in parallel, The management table storage unit stores the management table when a branch instruction is detected in the program. Based on the Le, then the unit instruction sequence to be executed has already been stored in the temporary storage unit of any one of said plurality of processing elements, and wherein the determining whether and effective state Processor.
また、本発明の一態様は、上記のプロセッサにおいて、前記実行管理部は、前記プログラムに分岐命令が検出された際に、前記管理テーブル記憶部が記憶する前記管理テーブルから、前記次実行情報に基づいて当該分岐命令の次に実行する前記単位命令列に対応する前記先頭位置情報及び前記有効情報を取得し、取得した前記先頭位置情報の示す位置と、次に実行する前記プログラムの実行位置とが一致し、且つ、取得した前記有効情報が有効を示す場合に、前記次実行情報に一致する前記プロセッシングエレメントが、前記単位命令列を前記一時記憶部に記憶しており、且つ、有効な状態であると判定することを特徴とする。 In addition, according to one aspect of the present invention, in the processor, the execution management unit may change the next execution information from the management table stored in the management table storage unit when a branch instruction is detected in the program. Based on the start position information and the valid information corresponding to the unit instruction sequence to be executed next to the branch instruction, and the position indicated by the acquired start position information, the execution position of the program to be executed next, And when the acquired valid information indicates valid, the processing element that matches the next execution information stores the unit instruction sequence in the temporary storage unit and is in a valid state. It is determined that it is.
また、本発明の一態様は、上記のプロセッサにおいて、前記実行管理部は、取得した前記先頭位置情報の示す位置と、次に実行する前記プログラムの実行位置とが一致しない、又は取得した前記有効情報が無効を示す場合に、前記複数のプロセッシングエレメントの1つに次に実行する前記単位命令列を割り当てるとともに、割り当てた前記単位命令列に対応させて、前記管理テーブルを更新することを特徴とする。 Further, according to one aspect of the present invention, in the above processor, the execution management unit does not match a position indicated by the acquired head position information and an execution position of the program to be executed next, or acquires the effective When the information indicates invalidity, the unit instruction sequence to be executed next is assigned to one of the plurality of processing elements, and the management table is updated in correspondence with the assigned unit instruction sequence. To do.
また、本発明の一態様は、上記のプロセッサにおいて、前記実行管理部は、前記複数のプロセッシングエレメントの1つに次に実行する前記単位命令列を割り当てる場合に、前記管理テーブルの当該単位命令列に対応する前記先頭位置情報を記憶させるとともに、前記有効情報を、無効を示す値に更新し、前記プロセッシングエレメントが、当該単位命令列の実行を完了した場合に、当該単位命令列に対応する前記有効情報を、有効を示す値に更新することを特徴とする。 Further, according to one aspect of the present invention, in the above processor, when the execution management unit assigns the unit instruction sequence to be executed next to one of the plurality of processing elements, the unit instruction sequence of the management table And the valid information is updated to a value indicating invalidity, and when the processing element completes execution of the unit instruction sequence, the unit instruction sequence corresponding to the unit instruction sequence is stored. The valid information is updated to a value indicating validity.
また、本発明の一態様は、上記のプロセッサにおいて、前記プロセッシングエレメントは、パイプライン処理により前記命令を実行することを特徴とする。 One embodiment of the present invention is the processor described above, wherein the processing element executes the instruction by pipeline processing.
また、本発明の一態様は、上記のプロセッサにおいて、前記複数のプロセッシングエレメントのそれぞれは、前記命令の実行に利用されるレジスタを有し、さらに、前記複数のプロセッシングエレメントの間で、前記レジスタの書き込み後の読み出しによるデータ依存であるRAWハザードが発生した場合に、最も近い過去に当該レジスタに書き込みを実行している前記プロセッシングエレメントによる前記単位命令列の当該レジスタへの書き込みが完了するまで、当該レジスタの読み出しを実行する前記プロセッシングエレメントの命令実行を保留させるレジスタ管理部を備えることを特徴とする。
また、本発明の一態様は、それぞれが、割り当てられた単位命令列を一時記憶する一時記憶部を有し、それぞれの前記一時記憶部に記憶された前記単位命令列に含まれる命令を実行可能な複数のプロセッシングエレメントと、アセンブリ言語以下のレベルの命令列であるプログラムを、途中に分岐命令を含まない命令列であって、分岐先の先頭命令を始端とし、分岐命令を終端とする命令列である前記単位命令列に分割し、分割した当該単位命令列を前記複数のプロセッシングエレメントのそれぞれに逐次割り当て、割り当てた前記単位命令列を前記複数のプロセッシングエレメントに並列実行させる実行管理部とを備え、前記複数のプロセッシングエレメントのそれぞれは、前記命令の実行に利用されるレジスタを有し、さらに、前記複数のプロセッシングエレメントの間で、前記レジスタの書き込み後の読み出しによるデータ依存であるRAWハザードが発生した場合に、最も近い過去に当該レジスタに書き込みを実行している前記プロセッシングエレメントによる前記単位命令列の当該レジスタへの書き込みが完了するまで、当該レジスタの読み出しを実行する前記プロセッシングエレメントの命令実行を保留させるレジスタ管理部を備えることを特徴とするプロセッサである。
One embodiment of the present invention is the processor described above, wherein each of the plurality of processing elements includes a register used for execution of the instruction, and further, the register of the register is between the plurality of processing elements. When a RAW hazard that is data-dependent due to reading after writing occurs, until the writing of the unit instruction sequence to the register by the processing element that has performed writing to the register in the nearest past is completed A register management unit that suspends instruction execution of the processing element that executes reading of a register is provided.
Further, according to one aspect of the present invention, each has a temporary storage unit that temporarily stores an assigned unit instruction sequence, and can execute an instruction included in the unit instruction sequence stored in each temporary storage unit An instruction sequence that does not include a branch instruction in the middle of multiple processing elements and a program that is an instruction sequence of the assembly language or lower level. The instruction sequence starts with the first instruction at the branch destination and ends with the branch instruction. And an execution management unit that sequentially assigns the divided unit instruction sequence to each of the plurality of processing elements and causes the plurality of processing elements to execute the assigned unit instruction sequence in parallel. , Each of the plurality of processing elements has a register used for execution of the instruction, and When a RAW hazard that is data-dependent due to reading after writing to the register occurs between the processing elements, the register of the unit instruction sequence by the processing element that has performed writing to the register in the nearest past The processor further comprises a register management unit that suspends instruction execution of the processing element that executes reading of the register until writing to the register is completed.
また、本発明の一態様は、上記のプロセッサにおいて、前記プロセッシングエレメントを識別するPE識別情報と、前記単位命令列の実行において、前記レジスタが更新されたことを示す更新情報と、前記単位命令列における前記レジスタの最後の書き込みが完了したことを示す完了情報と、前記レジスタの書き込みが実行されたことを示す実行情報とを対応付けた更新履歴情報を前記プロセッシングエレメントの個数分有する更新履歴テーブルを記憶する更新履歴記憶部を備え、前記レジスタ管理部は、前記更新履歴記憶部が記憶する更新履歴テーブルに基づいて、前記RAWハザードが発生したか否かを判定するとともに、前記レジスタに対して読み込みを行う前記プロセッシングエレメントにおいて、前記プロセッシングエレメント内のRAWハザードが発生せず、かつ、前記レジスタに対して読み込みを行う前記プロセッシングエレメントと当該レジスタに対して最も近い過去に書き込みを行う前記プロセッシングエレメントとの間で、前記プロセッシングエレメント間のRAWハザードが発生した場合には、最も近い過去に書き込みを行う前記プロセッシングエレメントについての当該書き込み対象のレジスタに関する前記完了情報に基づいて、前記レジスタに対して読み込みを行う前記プロセッシングエレメントの命令実行を保留するか否かを制御することを特徴とする。 Further, according to an aspect of the present invention, in the above processor, PE identification information for identifying the processing element, update information indicating that the register is updated in the execution of the unit instruction sequence, and the unit instruction sequence An update history table having update history information corresponding to the number of processing elements, which is associated with completion information indicating that the last write of the register in the memory is completed and execution information indicating that the write of the register is executed An update history storage unit for storing, and the register management unit determines whether or not the RAW hazard has occurred based on an update history table stored in the update history storage unit , and reads into the register In the processing element for performing the processing in the processing element No RAW hazard occurs, and a RAW hazard occurs between the processing elements between the processing element that reads the register and the processing element that writes to the register in the past. Whether or not to suspend instruction execution of the processing element that reads from the register based on the completion information regarding the register to be written for the processing element that writes to the nearest past It is characterized by controlling .
また、本発明の一態様は、上記のプロセッサにおいて、前記レジスタ管理部は、前記レジスタに対して読み込みを行う前記プロセッシングエレメントについての当該読み込み対象のレジスタに関する前記実行情報に基づいて、前記レジスタに対して読み込みを行う前記プロセッシングエレメントにおいて、前記プロセッシングエレメント内のRAWハザードが発生したか否かを判定することを特徴とする。 Further, according to one aspect of the present invention, in the processor, the register management unit is configured to perform the processing on the register based on the execution information regarding the register to be read with respect to the processing element that reads the register. in the processing element to read Te, characterized that you determine whether RAW hazard within the processing element occurs.
また、本発明の一態様は、上記のプロセッサにおいて、前記複数のプロセッシングエレメントのそれぞれは、前記レジスタを複数備え、前記更新履歴記憶部は、前記複数のレジスタのそれぞれに対応する前記更新履歴テーブルを記憶することを特徴とする。 In one embodiment of the present invention, in the above processor, each of the plurality of processing elements includes a plurality of the registers, and the update history storage unit stores the update history table corresponding to each of the plurality of registers. It is memorized.
また、本発明の一態様は、上記のプロセッサにおいて、前記単位命令列に含まれる各命令に対応するローカル位置情報と、外部記憶部にアクセスした履歴を示すアクセス情報とを対応付けたストアバッファテーブルを、前記複数のプロセッシングエレメントの個数分記憶するストアバッファ記憶部と、前記プロセッシングエレメントから前記外部記憶部にアクセス要求があった場合に、前記ストアバッファ記憶部が記憶する当該プロセッシングエレメントに対応する前記ストアバッファテーブルに基づいて、前記外部記憶部とのアクセスを制御するストアバッファ制御部とを備えることを特徴とする。 Further, according to one aspect of the present invention, in the above processor, a store buffer table in which local position information corresponding to each instruction included in the unit instruction sequence is associated with access information indicating a history of accessing the external storage unit For each of the plurality of processing elements, and when there is an access request from the processing element to the external storage unit, the store buffer storage unit corresponds to the processing element stored in the store buffer storage unit. And a store buffer control unit that controls access to the external storage unit based on a store buffer table.
また、本発明の一態様は、上記のプロセッサにおいて、前記アクセス情報には、アクセスの種別を示す種別情報と、前記外部記憶部においてアクセスする記憶位置情報及びアクセスしたデータとが対応付けられており、前記ストアバッファ制御部は、前記外部記憶部からデータを読み出す前記アクセス要求に対して、前記ストアバッファテーブルに当該アクセス要求に対応する前記データが存在する場合に、当該データを前記プロセッシングエレメントに出力し、前記ストアバッファテーブルに当該アクセス要求に対応する前記データが存在しない場合に、前記外部記憶部から読み出した前記データを前記プロセッシングエレメントに出力することを特徴とする。 In one embodiment of the present invention, in the above processor, the access information is associated with type information indicating an access type, storage location information accessed in the external storage unit, and accessed data. The store buffer control unit outputs the data to the processing element when the data corresponding to the access request exists in the store buffer table in response to the access request for reading data from the external storage unit When the data corresponding to the access request does not exist in the store buffer table, the data read from the external storage unit is output to the processing element.
また、本発明の一態様は、上記のプロセッサにおいて、前記ストアバッファ制御部は、前記外部記憶部にデータを書き込む前記アクセス要求に対して、前記プロセッシングエレメントに対応する前記ストアバッファテーブルに、前記ローカル位置情報と、当該アクセス情報とを対応付けて記憶させるとともに、前記外部記憶部に当該データを記憶させることを特徴とする。 Further, according to one aspect of the present invention, in the processor, the store buffer control unit may store the local buffer in the store buffer table corresponding to the processing element in response to the access request for writing data in the external storage unit. The position information and the access information are stored in association with each other, and the data is stored in the external storage unit.
本発明によれば、非数値計算処理を高速処理することができる。 According to the present invention, non-numeric calculation processing can be performed at high speed.
以下、本発明の一実施形態によるプロセッサについて図面を参照して説明する。
図1は、本実施形態によるプロセッサ1の一例を示すブロック図である。
図1に示すように、プロセッサ1は、複数(例えば、N個)のプロセッシングエレメント(10−1、10−2、・・・、10−N)と、PC(プログラムカウンタ)更新部20と、命令フェッチ部30と、実行管理ユニット40と、レジスタ管理ユニット50と、ストアバッファユニット60と、メモリ管理ユニット70とを備えている。プロセッサ1は、メモリ管理ユニット70を介してデータメモリ71に接続されている。
A processor according to an embodiment of the present invention will be described below with reference to the drawings.
FIG. 1 is a block diagram illustrating an example of a
As shown in FIG. 1, the
なお、「プロセッシングエレメント」は、以下の説明において、「PE」(Processing Element)と表記する。また、PE10−1、PE10−2、・・・10−Nのそれぞれは、同一の構成であり、本実施形態において、プロセッサ1が備える任意のPEを示す場合、又は特に区別しない場合には、PE10として説明する。なお、本実施形態において、PE10の個数は、例えば、8個である。
The “processing element” is expressed as “PE” (Processing Element) in the following description. Moreover, each of PE10-1, PE10-2, ... 10-N has the same configuration, and in the present embodiment, when any PE included in the
PC更新部20は、PC(プログラムカウンタ)21を有し、PC21を更新する。ここで、PC21は、プログラムを記憶するプログラムメモリ(不図示)の命令実行位置を示すアドレス(位置情報)を格納するレジスタである。PC更新部20は、通常の命令実行ごとに、PC21を“+IL”するとともに、分岐命令が実行された場合には、指定された分岐先のアドレスにPC21を更新する。ここで、“IL”は、命令固定長を示す。また、PC更新部20は、PC21が記憶するPC値を、アドレスとしてプログラムメモリに出力する。
The
命令フェッチ部30は、IR(命令レジスタ)31を有し、PC更新部20から出力されたアドレスに応じて、プログラムメモリが出力した命令(Instruction)をIR31に記憶(格納)させる。ここで、IR31は、プログラムメモリから読み出した命令を格納するレジスタである。命令フェッチ部30は、IR31に記憶させた命令を実行管理ユニットに出力するとともに、命令ネットワークNW1を介して、PE10に供給する。
The
独立した複数のPE10のそれぞれは、アセンブリ言語以下のレベルの命令列であるプログラムを分割したアトミックブロックを、展開連結リスト(Unrolled Linked List)のリストエントリ(入力データ)として、アトミックブロックに含まれる命令を実行する。ここで、アトミックブロック(単位命令列の一例)とは、アセンブリ言語以下のレベルの命令列であるプログラムを、途中に分岐命令を含まない命令列であって、分岐先の先頭命令を始端とし、分岐命令を終端とする命令列である。
Each of the plurality of
図2は、本実施形態におけるアトミックブロックの一例を説明する図である。
図2(a)は、アセンブリ言語で記述されたプログラム(PR1)の一例を示すリストである。また、図2(b)は、図2(a)に示すプログラム(PR1)をアトミックブロックに分割して、展開連結リストにした一例である。
図2(b)に示すように、プログラム(PR1)は、アトミックブロックAB_A〜AB_Eに分割される。例えば、アトミックブロックAB_Dは、始点(始端)が、分岐先の先頭命令である“add r2,r2,r1”(命令I1)であり、終点(終端)が、分岐命令である“bneq loop”(命令I2)である。
FIG. 2 is a diagram illustrating an example of an atomic block in the present embodiment.
FIG. 2A is a list showing an example of a program (PR1) described in assembly language. FIG. 2B is an example in which the program (PR1) shown in FIG. 2A is divided into atomic blocks to form an expanded linked list.
As shown in FIG. 2B, the program (PR1) is divided into atomic blocks AB_A to AB_E. For example, in the atomic block AB_D, the start point (start end) is “add r2, r2, r1” (instruction I1) which is the first instruction of the branch destination, and the end point (end) is “bneq loop” (instruction which is the branch instruction). Instruction I2).
このように、本実施形態によるプロセッサ1では、プログラムをアトミックブロックに分割し、図2(c)に示すような展開連結リストにし、各アトミックブロックを各PE10に実行させる。図2(c)に示す例は、図2(a)に示すプログラムを展開連結リストにしたものである。ここで、プロセッサ1は、「アトミックブロックA」(AB_A)から「アトミックブロックB」(AB_B)が実行させ、「アトミックブロックB」(AB_B)において、「アトミックブロックC」(AB_C)と、「アトミックブロックD」(AB_D)とに分岐さる処理を実行する。また、プロセッサ1は、「アトミックブロックB」(AB_B)と続く「アトミックブロックD」(AB_D)とにより条件付きループを実行させる。なお、図2(c)において、斜線部分は、分岐命令を示している。
As described above, in the
図1に戻り、複数のPE10は、それぞれが、割り当てられたアトミックブロックを一時記憶する命令キャッシュ部11を有し、それぞれの命令キャッシュ部11に記憶されたアトミックブロックに含まれる命令を実行可能である。
ここで、図3を参照して、PE10の構成について説明する。
Returning to FIG. 1, each of the plurality of
Here, the configuration of the
図3は、本実施形態におけるPE10の構成例を示すブロック図である。
図3に示すように、PE10は、命令キャッシュ部11と、レジスタファイル部12と、命令実行部13とを備えている。
命令キャッシュ部11(一時記憶部の一例)は、命令フェッチ部30から出力された命令をキャッシュとして記憶するレジスタ群である。命令キャッシュ部11は、例えば、キャッシュレジスタ(C1)〜キャッシュレジスタ(CM)のM個のレジスタを有し、アトミックブロックを記憶する。ここで、キャッシュレジスタの個数Mは、例えば、1つのアトミックブロックが格納可能なサイズであり、例えば、16である。
FIG. 3 is a block diagram illustrating a configuration example of the
As shown in FIG. 3, the
The instruction cache unit 11 (an example of a temporary storage unit) is a register group that stores the instruction output from the instruction fetch
レジスタファイル部12は、PE10による演算結果やデータメモリから読み出したデータなどを記憶するレジスタ群であり、命令の実行に利用される。レジスタファイル部12は、複数の汎用レジスタ(例えば、Reg1〜RegR)、及び制御レジスタを備えている。すなわち、レジスタファイル部12は、汎用レジスタ(Reg1)〜汎用レジスタ(RegR)のR個のレジスタ、及び制御レジスタを有し、命令の実行に利用される。なお、各PE10が備えるレジスタファイル部12の間のデータ通信は、オペランドデータネットワークNW2を介して実行される。なお、以下の説明において、汎用レジスタ及び制御レジスタを単に「レジスタ」と表記して説明する。
The
命令実行部13は、例えば、命令デコーダ及びALU(Arithmetic Logic Unit)などを有し、命令フェッチ部30から出力された命令、又は命令キャッシュ部11が記憶する命令を実行する。
なお、PE10は、アトミックブロックの初回の実行において、命令フェッチ部30から出力された命令を命令実行部13に実行させつつ、順番に命令キャッシュ部11に記憶させるようにしてもよいし、命令フェッチ部30から出力された命令を順番に命令キャッシュ部11に記憶させ、当該命令キャッシュ部11から命令を読み出して、命令実行部13に実行させてもよい。また、PE10は、アトミックブロックの2回目の実行において、命令キャッシュ部11から順番に命令を読み出して、命令実行部13に実行させる。
また、PE10は、命令キャッシュ部11が記憶する命令をパイプライン処理により、並列に実行可能に構成されているものとする。
The
Note that, in the first execution of the atomic block, the
The
再び、図1に戻り、実行管理ユニット40(実行管理部の一例)は、プログラムをアトミックブロックに分割し、分割した当該アトミックブロックを複数のPE10のそれぞれに逐次割り当て、割り当てたアトミックブロックを複数のPE10に並列実行させる。実行管理ユニット40は、分割したアトミックブロックが複数のPE10のいずれの命令キャッシュ部11にも記憶されていない場合(キャッシュミスの場合)に、当該アトミックブロックを複数のPE10のいずれかに割り当てる。また、実行管理ユニット40は、分割したアトミックブロックが複数のPE10のいずれかの命令キャッシュ部11に既に記憶されている場合(キャッシュヒットの場合)に、当該PE10に、当該命令キャッシュ部11に既に記憶されているアトミックブロックを並列実行させる。
1 again, the execution management unit 40 (an example of the execution management unit) divides the program into atomic blocks, sequentially assigns the divided atomic blocks to each of the plurality of
また、実行管理ユニット40は、プログラムに分岐命令が検出された際に、後述する管理テーブル記憶部41が記憶する管理テーブルに基づいて、次に実行するアトミックブロックが複数のPE10のいずれかの命令キャッシュ部11に既に記憶されており、且つ有効な状態であるか否かを判定する。実行管理ユニット40は、次に実行するアトミックブロックが複数のPE10のいずれかの命令キャッシュ部11に既に記憶されており、且つ有効な状態であると判定した場合(キャッシュヒットの場合)に。当該PE10に、命令キャッシュ部11に記憶されているアトミックブロックを実行させる。
Further, the
ここで、図4を参照して、本実施形態における実行管理ユニット40の構成について説明する。
図4は、本実施形態における実行管理ユニット40の構成例を示すブロック図である。
図4に示すように、実行管理ユニット40は、管理テーブル記憶部41と、キャッシュミスハンドラ部42と、プリデコーダ部43とを備えている。
Here, the configuration of the
FIG. 4 is a block diagram illustrating a configuration example of the
As shown in FIG. 4, the
管理テーブル記憶部41は、例えば、レジスタにより構成される記憶であり、「PE_NO」と、「BTA」と、「有効フラグ」と、「LGT」と、「PTR1」と、「PTR2」とを対応付けた管理情報を複数有する管理テーブルを記憶する。ここで。「PE_NO」は、PE10の番号を示し、管理情報の数は、PE10の個数であるN個である。また、「BTA」は、ブランチターゲットアドレスであり、分岐ターゲット命令のアドレスを示す。すなわち、「BTA」は、プログラムにおけるアトミックブロックの先頭命令の位置を示す先頭位置情報(先頭アドレス)である。
The management
また、「有効フラグ」は、当該管理情報(当該PE10)が有効であるか否か示すフラグ情報である。すなわち、「有効フラグ」は、当該アトミックブロックが有効であるか否かを示す有効情報である。「有効フラグ」は、例えば、“1”である場合に有効を示し、“0”である場合に無効を示す。また、「LGT」は、アトミックブロックのブロック長を示す。
また、「PTR1」及び「PTR2」は、次に実行されるアトミックブロックの当該管理テーブルにおける行番号(ポインタ)である。すなわち、「PTR1」及び「PTR2」は、次に実行するPE10を示す次実行情報である。なお、本実施形態では、分岐命令が、例えば、2つの分岐先を持つ場合の一例であるため、「PTR1」及び「PTR2」の2つのポインタを有しているが、例えば、分岐命令が、M個の分岐先を持つ場合には、M個のポインタを有することになる。
The “valid flag” is flag information indicating whether or not the management information (the PE 10) is valid. That is, the “valid flag” is valid information indicating whether or not the atomic block is valid. The “valid flag” indicates, for example, valid when “1”, and invalid when “0”. “LGT” indicates the block length of the atomic block.
“PTR1” and “PTR2” are row numbers (pointers) in the management table of the atomic block to be executed next. That is, “PTR1” and “PTR2” are next execution information indicating the
図4に示す例では、例えば、「PE_NO」が“1”であるPE10には、「BTA」(先頭アドレス)が“XXXX”であり、「有効フラグ」が“1”、「LGT」(ブロック長)が、“10”であるアトミックブロックが割り当てられていることを示している。また、当該アトミックブロックが次に実行する「PTR1」が“2”であり、「PTR2」が“3”であることを示している。すなわち、次に実行するPR10が、「PR_NO」が“2”又は“3”であることを示している。
In the example illustrated in FIG. 4, for example, for
プリデコーダ部43は、命令フェッチ部30から出力された命令をデコードして、分岐命令を判定する。
キャッシュミスハンドラ部42は、アトミックブロックのPE10への割り当て及び実行を制御する。キャッシュミスハンドラ部42は、例えば、アトミックブロックがキャッシュミスである場合に、キャッシュミスハンドラ部42は、複数のPE10のうちの1つに、アトミックブロックを割り当て、当該PE10に実行させる。また、キャッシュミスハンドラ部42は、次に実行するアトミックブロックがキャッシュヒットである場合に、当該ヒットしたPE10に、既に命令キャッシュ部11に記憶されているアトミックブロックを実行させる。
また、プリデコーダ部43は、比較回路421と、AND(アンド)回路422と、AND回路423と、LRU(Least Recently Used)アービタ424と、ハンドラ部425とを備えている。
The
The cache miss
The
比較回路421は、PC21の値であるPC値と、管理テーブル記憶部41が記憶する次に実行予定のアトミックブロック(PE10)の「BTA」とが一致するか否かを比較する。比較回路421は、例えば、一致する場合に、H状態(High状態(“1”状態))を出力し、不一致の場合に、L状態(Low状態(“0”状態))を出力する。
The
AND回路422は、比較回路421の出力と、次に実行予定のアトミックブロック(PE10)の「有効フラグ」との論理積演算の結果を出力する。
AND回路423は、AND回路422の出力と、プリデコーダ部43から出力される分岐命令を示す分岐命令信号との論理積演算の結果を、HIT信号として出力する。このHIT信号は、次の実行予定のPE10に対してキャッシュヒットであることを示す信号である。すなわち、AND回路423は、キャッシュヒットである場合に、H状態を出力する。
The AND
The AND
LRUアービタ424は、次に実行予定のアトミックブロック(PE10)がキャッシュミスである場合に、複数のPE10の中から、次に使用するPE10を選択する。LRUアービタ424は、例えば、「使われてから最も長い時間が経ったもの」又は「参照される頻度が最も低いもの」のPE10を選択する。
The
ハンドラ部425は、キャッシュミスハンドラ部42を制御する。ハンドラ部425は、例えば、キャッシュヒットしたPE10に、命令キャッシュ部11に記憶されている命令を実行させる。また、ハンドラ部425は、例えば、次の実行予定のPE10の「LGT」をPC更新部20に出力させて、PC21の値を、「LGT」の値に更新させる。
また、ハンドラ部425は、キャッシュミスの場合に、LRUアービタ424によって選択されたPE10に対応する管理情報を更新する。すなわち、ハンドラ部425は、キャッシュミスの場合に、管理テーブル記憶部41の対応する「PE_NO」の行に、上述した「BTA」と、「有効フラグ」と、「LGT」と、「PTR1」と、「PTR2」とを対応付けた管理情報を記憶させる。
The
Further, the
このように、実行管理ユニット40は、プログラムに分岐命令が検出された際に、管理テーブル記憶部41が記憶する管理テーブルから、次実行情報(「PTR1」又は「PTR2」)に基づいて当該分岐命令の次に実行するアトミックブロックに対応する「BTA」(先頭位置情報)及び「有効フラグ」(有効情報)を取得する。実行管理ユニット40は、取得した「BTA」の示す位置と、次に実行するプログラムの実行位置(PC値)とが一致し、且つ、取得した「有効フラグ」が有効を示す場合に、次実行情報(「PTR1」又は「PTR2」)に一致するPE10が、アトミックブロックを命令キャッシュ部11に記憶しており、且つ、有効な状態であると判定する。
As described above, when a branch instruction is detected in the program, the
また、実行管理ユニット40は、取得した「BTA」の示す位置と、次に実行するプログラムの実行位置とが一致しない、又は取得した有効情報が無効を示す場合に、複数のPE10の1つに次に実行するアトミックブロックを割り当てるとともに、割り当てたアトミックブロックに対応させて、管理テーブルを更新する。
また、実行管理ユニット40は、複数のPE10の1つに次に実行するアトミックブロックを割り当てる場合に、管理テーブルの当該アトミックブロックに対応する「LGT」を記憶させるとともに、「有効フラグ」を、無効を示す値(例えば、“0”)に更新する。実行管理ユニット40は、PE10が、当該アトミックブロックの実行を完了した場合に、当該アトミックブロックに対応する「有効フラグ」を、有効を示す値(例えば、“1”)に更新する。
In addition, the
In addition, when the
再び、図1に戻り、レジスタ管理ユニット50(レジスタ管理部の一例)は、各PE10が備えるレジスタファイル部12のレジスタを管理する。レジスタ管理ユニット50は、特定のレジスタについて、複数のアトミックブロックに横断してデータ依存性がある場合に、PE10を制御して、データ依存性を回避する。レジスタ管理ユニット50は、例えば、複数のPE10の間で、レジスタの書き込み後の読み出しによるデータ依存であるRAWハザードが発生した場合に、最も近い過去に当該レジスタに書き込みを実行しているPE10によるアトミックブロックの当該レジスタへの書き込みが完了するまで、当該レジスタの読み出しを実行するPE10の命令実行を保留(STALL(ストール))させる。レジスタ管理ユニット50は、更新履歴記憶部51を備えている。
Referring back to FIG. 1 again, the register management unit 50 (an example of a register management unit) manages the registers of the
更新履歴記憶部51は、例えば、レジスタにより構成される記憶であり、図5に示すように、「FIFO」と、「UPD」と、「W/A」と、「RAW」と、「ACT」とを対応付けた更新履歴情報を記憶する。更新履歴記憶部51は、更新履歴情報を複数有する更新履歴テーブルを記憶する。また、更新履歴記憶部51は、FIFO(First In First Out)に構成されており、実行管理ユニット40は、PE10にアトミックブロックが割り当てられる際に、当該PE10に対応する更新履歴情報を追加し、古い更新履歴情報を廃棄する。
The update
図5は、本実施形態における更新履歴記憶部51の構成例を示す図である。
図5において、「FIFO」は、PE10を識別するPE識別情報を示し、当該PE識別情報を実行順に記憶している。また、「UPD」は、アトミックブロックの実行において、レジスタが更新されたことを示すフラグ(UPDフラグ)である。すなわち、「UPD」は、レジスタが更新されたことを示す更新情報である。「UPD」は、例えば、“1”である場合に更新されたことを示し、“0”である場合に更新されていないことを示す。
FIG. 5 is a diagram illustrating a configuration example of the update
In FIG. 5, “FIFO” indicates PE identification information for identifying the
また、「W/A」は、WフラグとAフラグとを有している。Wフラグは、アトミックブロックにおけるレジスタの最後の書き込みが完了したことを示す完了情報である。また、Aフラグは、レジスタの書き込みが実行されたことを示す実行情報である。Wフラグは、例えば、“1”である場合にレジスタの最後の書き込みが完了したことを示し、“0”である場合にレジスタの最後の書き込みが完了していないことを示す。また、Aフラグは、例えば、“1”である場合にレジスタの書き込みが実行されたことを示し、“0”である場合にレジスタの書き込みが実行されていないことを示す。 “W / A” includes a W flag and an A flag. The W flag is completion information indicating that the last write of the register in the atomic block has been completed. The A flag is execution information indicating that the register write has been executed. For example, the W flag indicates that the last write of the register is completed when it is “1”, and indicates that the last write of the register is not completed when it is “0”. The A flag indicates, for example, that register writing has been executed when it is “1”, and indicates that register writing has not been executed when it is “0”.
また、「RAW」は、自身のPE10内において、RAWハザードが発生したことを示すRAWフラグである。「RAW」は、例えば、“1”である場合に、自身のPE10内においてRAWハザードが発生したことを示し、“0”である場合に自身のPE10内においてRAWハザードが発生していないことを示す。また、「RAW」は、自身のPE10内におけるRAWハザードに対する処理と、PE10間のRAWハザードに対する処理とを切り替える制御フラグとして機能する。「RAW」は、例えば、Aフラグが“1”であり、且つ、当該レジスタに対する読み込み要求があった場合に、「RAW」は、“1”に変更される。
また、「ACT」は、当該PE10が実行中であるか否かを示すACTフラグである。「ACT」は、例えば、“1”である場合に当該PE10が実行中であることを示し、“0”である場合に当該PE10が実行中でないことを示す。
“RAW” is a RAW flag indicating that a RAW hazard has occurred in its
“ACT” is an ACT flag indicating whether or not the
なお、更新履歴記憶部51は、更新履歴情報をPE10の個数分(例えば、N個)有する更新履歴テーブルを記憶する。また、更新履歴記憶部51は、複数のレジスタのそれぞれに対応する更新履歴テーブルを記憶する。すなわち、「UPD」、「W/A」、及び「RAW」は、PE10が備えるレジスタの個数に応じてビット数が決定される。例えば、「UPD」は、RN×1ビットで構成され、「W/A」は、RN×2ビットで構成される。また、「RAW」は、RN×1ビットで構成される。ここで、RNは、レジスタの個数(汎用レジスタのR個と制御レジスタの個数との合計数)である。
図5に示す例では、例えば、「FIFO」が“PE_1”に対応する更新履歴情報は、「UPD」が“11・・・”であり、「W/A」が“0/0・・・”であることを示している。また、「RAW」が“00・・・”であり、「ACT」が“1”であることを示している。
The update
In the example illustrated in FIG. 5, for example, in the update history information in which “FIFO” corresponds to “PE_1”, “UPD” is “11...” And “W / A” is “0/0. ". Further, “RAW” is “00...” And “ACT” is “1”.
また、図6は、本実施形態におけるレジスタ管理ユニット50の一例を示すブロック図である。
図6に示すように、レジスタ管理ユニット50は、更新履歴記憶部51と、マルチプレクサ52と、マルチプレクサ53とを備えている。なお、図6に示す更新履歴記憶部51は、上述した図5に示す更新履歴情報のうち、特定のレジスタ(例えば、RegX)に関する「UPD」、「W/A」、及び「RAW」のみを表記している。
FIG. 6 is a block diagram showing an example of the
As illustrated in FIG. 6, the
また、更新履歴情報EN2は、レジスタ管理ユニット50に対して読み込み要求がされており、且つ、自身のPE10内のRAWハザードが発生していないPE10−3(PE_3)に対応する。また、更新履歴情報EN1は、当該PE10−3(PE_3)の処理に最も近い過去にレジスタRegXに書き込みを実行しているPE10−1(PE_1)に対応する。
マルチプレクサ52は、「RAW」の値に基づいて、更新履歴情報EN1のWフラグと、更新履歴情報EN2のAフラグとのいずれかを選択し、PE10−3(PE_3)をストールさせるSTALLB信号を出力する。なお、STALLB信号は、負論理の信号であり、“0”の場合にストールとなる。また、マルチプレクサ52は、「RAW」が“0”である場合に、更新履歴情報EN1のWフラグの値をSTALLB信号として出力する。また、マルチプレクサ52は、「RAW」が“1”である場合に、更新履歴情報EN2のAフラグとの値をSTALLB信号として出力する。
The update history information EN2 corresponds to the PE 10-3 (PE_3) for which a read request has been issued to the
The
マルチプレクサ53は、「RAW」の値に基づいて、データを読み込むレジスタRegXを、PE10−3(PE_3)と、PE10−1(PE_1)とのいずれかを切り替える。マルチプレクサ53は、「RAW」が“0”である場合に、PE10−1(PE_1)のレジスタRegXを読み込むレジスタとして指定する。また、マルチプレクサ53は、「RAW」が“1”である場合に、PE10−3(PE_3)のレジスタRegXを読み込むレジスタとして指定する。
The
このように、レジスタ管理ユニット50は、更新履歴記憶部51が記憶する更新履歴テーブルに基づいて、自身のPE10内のRAWハザードが発生したか否かを判定し、自身のPE10内のRAWハザードが発生した場合に、「RAW」を“1”にする。そして、レジスタ管理ユニット50は、更新履歴テーブルに含まれる、読み込み要求のあったPE10に対応する「RAW」と、当該PE10に対応するAフラグと、最も近い過去にレジスタに書き込みを実行しているPE10に対応するWフラグとに基づいて、読み込み要求のあったPE10の命令実行を保留させる。
例えば、読み込み要求のあったPE10に対応する「RAW」が“1”である場合に、レジスタ管理ユニット50は、マルチプレクサ52によって当該PE10に対応するAフラグに基づいて、当該PE10への命令のエントリを保留するか否かのSTALLB信号を生成する。また、この場合、レジスタ管理ユニット50は、当該PE10のレジスタ(RegX)からデータを当該PE10に読み込ませる。
As described above, the
For example, when “RAW” corresponding to the
また、例えば、読み込み要求のあったPE10に対応する「RAW」が“0”である場合に、レジスタ管理ユニット50は、マルチプレクサ52によって最も近い過去にレジスタに書き込みを実行しているPE10に対応するWフラグに基づいて、当該PE10への命令のエントリを保留するか否かのSTALLB信号を生成する。また、この場合、レジスタ管理ユニット50は、最も近い過去にレジスタに書き込みを実行しているPE10PE10のレジスタ(RegX)からデータを、読み込み要求のあったPE10に読み込ませる。
Further, for example, when “RAW” corresponding to the
例えば、図6に示す例では、更新履歴情報EN2に対応するPE10−3(PE_3)にレジスタRegXの読み込み要求があった場合に、「RAW」が“0”であるため、マルチプレクサ53によって、読み込み元として、PE10−1(PE_1)が選択される。また、PE10−1(PE_1)のWフラグが“0”であるため、マルチプレクサ52は、STALLB信号に“0”を出力して、PE10−3(PE_3)の命令実行を、PE10−1(PE_1)のWフラグが“1”になるまで保留させる。
For example, in the example shown in FIG. 6, when a read request for the register RegX is made to the PE 10-3 (PE_3) corresponding to the update history information EN2, “RAW” is “0”. As a source, PE10-1 (PE_1) is selected. Since the W flag of PE10-1 (PE_1) is “0”, the
なお、レジスタ管理ユニット50は、Aフラグに基づいて、RAWハザードが発生したか否かを判定し、「UPD」に基づいて、最も近い過去にレジスタに書き込みを実行しているPE10を選択する。
また、レジスタ管理ユニット50は、アトミックブロックをPE10に割り当てた初回の命令実行において記憶された更新履歴情報のうち、Wフラグ、Aフラグ、及び「RAW」を“0”に変更し、キャッシュヒットが発生した2回目以降の命令実行において記憶された更新履歴情報の状態を維持する。
Note that the
In addition, the
再び、図1に戻り、ストアバッファユニット60(ストアバッファ制御部の一例)は、PE10からデータメモリ71にアクセス要求があった場合に、後述するストアバッファ記憶部61が記憶する当該PE10に対応するストアバッファテーブルに基づいて、データメモリ71とのアクセスを制御する。なお、ストアバッファユニット60は、オペランドデータネットワークNW2を介して、PE10が備えるレジスタファイル部12とデータの授受を行う。
Referring back to FIG. 1 again, the store buffer unit 60 (an example of the store buffer control unit) corresponds to the
また、ストアバッファユニット60は、メモリ管理ユニット70を介して、データメモリ71とデータのアクセスを行う。ストアバッファユニット60は、データメモリ71からデータを読み出すアクセス要求に対して、ストアバッファ記憶部61のストアバッファテーブルに当該アクセス要求に対応するデータが存在する場合に、当該データをPE10に出力する。また、ストアバッファユニット60は、ストアバッファテーブルに当該アクセス要求に対応するデータが存在しない場合に、データメモリ71から読み出したデータをPE10に出力する。
また、ストアバッファユニット60は、ストアバッファ記憶部61と、エントリテーブル記憶部62とを備えている。
The
The
ストアバッファ記憶部61は、アトミックブロックに含まれる各命令に対応するローカル位置情報と、データメモリ71にアクセスした履歴を示すアクセス情報とを対応付けたストアバッファテーブルを、複数のPE10の個数分(例えば、N個分)記憶する。
図7は、本実施形態におけるストアバッファ記憶部61の構成例を示す図である。
図7に示すように、ストアバッファ記憶部61は、N個のストアバッファテーブルを備えている。また、ストアバッファテーブルは、例えば、「LPC」と、「Ld」と、「St」と、「Addr」と、「Data」と、「完了」と、「終了」とを対応付けて記憶する。なお、ストアバッファテーブルは、PE10の命令キャッシュ部11のサイズ分の行を有している。
The store
FIG. 7 is a diagram illustrating a configuration example of the store
As illustrated in FIG. 7, the store
ここで、「LPC」は、PE10内のローカルプログラムカウンタ(ローカル位置情報)であり、PE10の命令キャッシュ部11のアドレスに対応する。「Ld」は、ロード命令が実行されたことを示すフラグであり、「St」は、ストア命令が実行されたことを示すフラグである。なお、ロード命令は、データメモリ71からレジスタへデータを読み出す命令であり、ストア命令は、レジスタからデータメモリ71にデータを書き込む命令である。また、「Addr」は、データメモリ71のアドレスを示し、「Data」は、アクセスしたデータの値を示す。また、「完了」は、データメモリ71へのアクセス(データの書き込み)が完了したことを示す完了フラグであり、「終了」は、命令の実行が完了(終了)したことを示す終了フラグである。ここで、「Ld」、「St」、「Addr」、「Data」、「完了」、及び「終了」は、データメモリ71にアクセスした履歴を示すアクセス情報に対応する。
Here, “LPC” is a local program counter (local position information) in the
例えば、図7に示す例では、「LPC」が“0”の命令が、データメモリ71の「Addr」の “0x02”に「Data」の“0x0f”を書き込むストア命令であり、命令の実行が完了しているが、データメモリ71への書き込みが完了していない状態であることを示している。
なお、ストアバッファユニット60は、データメモリ71にデータを書き込むアクセス要求に対して、PE10に対応するストアバッファテーブルに、「LPC」(ローカル位置情報)と、当該アクセス情報とを対応付けて記憶させるとともに、データメモリ71に当該データを記憶させる。
For example, in the example shown in FIG. 7, an instruction whose “LPC” is “0” is a store instruction that writes “0x0f” of “Data” to “0x02” of “Addr” of the
The
再び、図1に戻り、エントリテーブル記憶部62は、異なるPE10から同一のアドレスにアクセスがあった場合の優先順位を記憶する。エントリテーブル記憶部62は、FIFOに構成されており、ストアバッファユニット60は、データメモリ71にデータのアクセスを行う命令が実行された際に、当該命令を実行するPE10に対応する情報を追加し、データのアクセスが完了した古い情報を廃棄する。エントリテーブル記憶部62は、例えば、図8に示すように、「FIFO」と、「エントリNO」とを対応付けて記憶する。
Returning to FIG. 1 again, the entry
図8は、本実施形態におけるエントリテーブル記憶部62の構成例を示す図である。
図8において、「FIFO」は、PE10を識別するPE識別情報を示し、「エントリNO」は、上述したストアバッファテーブルの番号を示している。
例えば、図8に示す例では、「FIFO」が“PE_1”に対応する「エントリNO」が“1”であり、最上行になるため、“PE_1”に対応するPE10によるアクセスが、最も優先順位が高いことを示している。
FIG. 8 is a diagram illustrating a configuration example of the entry
In FIG. 8, “FIFO” indicates PE identification information for identifying the
For example, in the example shown in FIG. 8, “FIFO” is “1” in “Entry NO” corresponding to “PE_1”, and is the top row, so that the access by PE10 corresponding to “PE_1” has the highest priority. Is high.
再び、図1に戻り、メモリ管理ユニット70は、ストアバッファユニット60と、データメモリ71との間に配置され、ストアバッファユニット60と、データメモリ71との間のデータのアクセスを中継する。また、データメモリ71(外部記憶部の一例)は、データを記憶するメモリである。
1 again, the
次に、図面を参照して、本実施形態によるプロセッサ1の動作について説明する。
<命令の実行処理>
まず、本実施形態によるプロセッサ1の命令実行の処理について説明する。
プロセッサ1は、PC値をアドレスとしてプログラムメモリに出力し、命令フェッチ部30が、プログラムメモリから出力された命令をIR31に記憶させる。プロセッサ1は、図2に示すようなアトミックブロックに分割して、複数のPE10のうちの1つに割り当てて、アトミックブロック単位の命令を当該PE10に実行させる。この際に、実行管理ユニット40は、PE10の割り当て、及び、PE10の並列処理を管理する。
Next, the operation of the
<Instruction execution processing>
First, the instruction execution process of the
The
図9は、本実施形態によるプロセッサ1のPE10の状態遷移を示す図である。
この図において、状態S1は、命令実行中のアクティブ状態を示し、状態S2は、保留中(ストール中)のアクティブ状態を示している。また、状態S3は、アトミックブロックの命令実行が終了したスリープ状態を示している。
図9に示すように、実行管理ユニット40は、アトミックブロックをPE10に割り当てて、命令を実行させることで、まず、PE10を状態S1に遷移させる。実行管理ユニット40は、管理テーブル記憶部41が記憶する管理テーブルの当該PE10に対応する「有効フラグ」を“1”にする。
FIG. 9 is a diagram showing a state transition of the
In this figure, a state S1 indicates an active state during execution of an instruction, and a state S2 indicates an active state during suspension (during stalling). A state S3 indicates a sleep state in which the instruction execution of the atomic block is finished.
As shown in FIG. 9, the
状態S1において、実行管理ユニット40は、PE10がレジスタの読み出し命令を実行した場合の問合せに対して、管理テーブル記憶部41が記憶する管理テーブルに基づいて、ストールする必要があるか否かを判定し、ストールする必要がある場合に、当該PE10にストール指示を送信し、状態S2に遷移させる。
また、状態S2において、ストールの要因が解決した場合に、実行管理ユニット40は、当該PE10にストール解除を送信し、状態S1に遷移させる。
In the state S1, the
In the state S2, when the cause of the stall is solved, the
また、状態S1において、PE10に分岐命令が実行された場合に、実行管理ユニット40は、当該PE10を状態S3に遷移させる。
また、状態S3において、前回実行したアトミックブロックが再実行される場合(キャッシュヒットの場合)に、実行管理ユニット40は、再び状態S2に遷移させて、命令キャッシュ部11に記憶されている命令を実行させる。
In the state S1, when a branch instruction is executed for the
In addition, in the state S3, when the previously executed atomic block is re-executed (in the case of a cache hit), the
また、状態S3において、PE10の空きがなく、LRUアービタ424によって、当該PE10がLRU置換え対象であると判定された場合に、実行管理ユニット40は、当該PE10を無効化する。すなわち、実行管理ユニット40は、管理テーブル記憶部41が記憶する管理テーブルの当該PE10に対応する「有効フラグ」を“0”にする。
また、キャッシュミスが発生した場合に、実行管理ユニット40は、無効化されているPE10のうちの1つに、アトミックブロックを割り当てて、再び状態S1に遷移させる。
また、全てのPE10に対応する「有効フラグ」が“1”である場合には、実行管理ユニット40は、PE10が、状態S3(スリープ状態)又は「有効フラグ」が“0”になるまで、新たなアトミックブロックの実行を保留させる。
In the state S3, when the
Further, when a cache miss occurs, the
When the “valid flag” corresponding to all the
なお、実行管理ユニット40は、新たにアトミックブロックをPE10に割り当てる際に、管理テーブル記憶部41が記憶する管理テーブルを更新する。具体的には、実行管理ユニット40は、当該PE10の「BTA」にPC値を記憶させ、「LGT」にアトミックブロックのブロック長を記憶させる。また、実行管理ユニット40は、当該PE10の「PTR1」及び「PTR2」にアトミックブロックの分岐先のPE10に対応する「PE_NO」(行番号)を記憶させ、「有効フラグ」を“1”にする。
The
次に、図4を参照して、実行管理ユニット40によるキャッシュヒットの判定について説明する。
図4において、行L1に対応するPE10が、分岐命令を実行すると、比較回路421が、PC値と、次に実行予定のアトミックブロックに対応するPE10(行L2)の「BTA」とを比較し、一致する場合に、H状態を出力する。また、AND回路422は、比較回路421の出力と、次に実行予定のアトミックブロックに対応するPE10の「有効フラグ」との論理積演算の結果を出力する。図4に示す例では、行L2の「有効フラグ」が“1”(=H状態)であるので、AND回路422は、H状態を出力する。そして、AND回路423が、プリデコーダ部43から出力される分岐命令を示す分岐命令信号(ここでは、H状態)と、AND回路422の出力(H状態)との論理積演算の結果(H状態)をHIT信号として出力する。また、実行管理ユニット40は、「BTA」が静的に決まっているとき、行L2の「BTA」をPC更新部20に出力して、PC21の値を「BTA」の値に更新させる。すなわち、図4に示す例では、実行管理ユニット40は、HIT信号にH状態を出力し、「PE_NO」が“6”のPE10に命令キャッシュ部11に記憶されている命令を実行させる。
Next, the cache hit determination by the
In FIG. 4, when the
次に、図10を参照して、PE10のパイプライン処理について説明する。
図10は、本実施形態によるプロセッサ1のパイプライン処理の一例を示す図である。
図10に示すように、プロセッサ1の各PE10は、「IF」、「ID」、「RR」、「EX」、及び「WR」の5つの処理(サイクル)を並列に処理するパイプライン処理を実行する。
Next, the pipeline processing of the
FIG. 10 is a diagram illustrating an example of pipeline processing of the
As shown in FIG. 10, each
ここで、「IF」は、命令のフェッチ処理であり、「ID」は、命令デコード処理(制御信号の生成処理)である。また、「RR」は、レジスタからのオペランドの読み込み処理であり、「EX」は、演算の実行処理である。また、「WR」は、レジスタへの演算結果の書き込み処理である。
図10に示すように、PE10は、例えば、「命令1」、「命令2」、・・・の順に、5つの処理(サイクル)をずらして実行して、パイプライン処理を実行する。
Here, “IF” is an instruction fetch process, and “ID” is an instruction decode process (control signal generation process). “RR” is an operand reading process from the register, and “EX” is an operation execution process. “WR” is a process of writing a calculation result to a register.
As shown in FIG. 10, for example, the
次に、図11を参照して、本実施形態によるプロセッサ1の命令の実行処理について説明する。
図11は、本実施形態によるPE10の並列処理の一例を示す図である。
図11(a)は、「アトミックブロックA」〜「アトミックブロックD」(AB_A〜AB_D)の展開連結リストにされたプログラムの一例を示している。また、図11(b)は、プロセッサ1が有するPE10(10−1、10−2、10−3、10−4、・・・、10−N)を示している。
Next, an instruction execution process of the
FIG. 11 is a diagram illustrating an example of parallel processing of the
FIG. 11A shows an example of a program in the expanded linked list of “atomic block A” to “atomic block D” (AB_A to AB_D). Moreover, FIG.11 (b) has shown PE10 (10-1, 10-2, 10-3, 10-4, ..., 10-N) which the
また、図11(c)は、プロセッサ1が、図11(a)に示すアトミックブロック(AB_A〜AB_D)を実行した場合の一例を示している。
図11(c)に示すように、時刻T1において、プロセッサ1は、まず、PE10−1(PE_1)に、「アトミックブロックA」を割り当て、PE10−1が、「アトミックブロックA」の命令を逐次実行する。
FIG. 11C shows an example when the
As shown in FIG. 11C, at time T1, the
次に、時刻T2において、PE10−1による「アトミックブロックA」の実行が完了すると、プロセッサ1は、PE10−2(PE_2)に、「アトミックブロックB」を割り当て、PE10−2が、「アトミックブロックB」の命令を逐次実行する。ここで、PE10−1の命令キャッシュ部11には、「アトミックブロックA」が記憶された状態であり、管理テーブル記憶部41には、PE10−1に対応する管理情報が「有効フラグ」が“1”の状態で記憶されている。
Next, when execution of the “atomic block A” by the PE 10-1 is completed at time T2, the
次に、時刻T3において、PE10−2による「アトミックブロックB」の実行が完了すると、プロセッサ1は、PE10−3(PE_3)に、「アトミックブロックD」を割り当て、PE10−2が、「アトミックブロックB」の命令を逐次実行する。ここで、PE10−2の命令キャッシュ部11には、「アトミックブロックB」が記憶された状態であり、管理テーブル記憶部41には、PE10−2に対応する管理情報が「有効フラグ」が“1”の状態で記憶されている。
Next, when execution of the “atomic block B” by the PE 10-2 is completed at time T3, the
次に、時刻T4において、PE10−3による「アトミックブロックD」の実行が完了すると、プロセッサ1は、PE10−2(PE_2)に、命令キャッシュ部11に記憶されている「アトミックブロックB」の命令を実行させる。ここで、実行管理ユニット40は、上述した図4に示す処理によりキャッシュヒットを判定し、PE10−2(PE_2)に「アトミックブロックB」を再実行させる。
また、時刻T5において、プロセッサ1は、さらに、PE10−3(PE_3)に、命令キャッシュ部11に記憶されている「アトミックブロックD」の命令を実行させる。ここで、実行管理ユニット40は、上述した図4に示す処理によりキャッシュヒットを判定し、PE10−3(PE_3)に「アトミックブロックD」を再実行させる。これにより、PE10−2とPE10−3とが並列実行される。
Next, when execution of the “atomic block D” by the PE 10-3 is completed at the time T4, the
At time T5, the
続く時刻T6及び時刻T7において、プロセッサ1は、時刻T4及び時刻T5と同様の処理を実行し、PE10−2とPE10−3とが並列実行される。
なお、図11(c)において、時刻T4以降の期間PT1は、並列実行の期間である。
このように、実行管理ユニット40は、割り当てたアトミックブロック(「アトミックブロックB」及び「アトミックブロックD」を複数のPE10(10−2、10−3)に並列実行させる。
At subsequent time T6 and time T7, the
In FIG. 11C, a period PT1 after time T4 is a period of parallel execution.
As described above, the
<データ依存性の回避処理>
次に、本実施形態によるプロセッサ1のデータ依存性の回避処理について説明する。
プロセッサ1のレジスタ管理ユニット50は、以下の基本ルールに基づいて、PE10のレジスタ間のデータ依存性を回避する処理を実行する。
(1)PE10は、レジスタにデータの書き込みを行う際には、自身のレジスタにデータを書き込む。また、PE10は、レジスタに対して、書き込みを行った場合には、レジスタ管理ユニット50に更新履歴テーブルの更新を依頼し、レジスタ管理ユニット50は、更新履歴記憶部51の更新履歴テーブルを更新する。
<Data dependency avoidance process>
Next, the data dependence avoidance process of the
The
(1) When writing data to the register, the
(2)PE10は、レジスタからデータの読み込みを行う際には、レジスタ管理ユニット50に問合せを行う。レジスタ管理ユニット50は、更新履歴記憶部51の更新履歴テーブルに基づいて、命令実行の保留を指示(STALLB信号を出力)するとともに、保留の要因が解決(例えば、書き込み完了など)した場合に、保留の解除を指示する。レジスタ管理ユニット50は、更新履歴テーブルに基づいて、自身のPE10のレジスタと、最も近い過去に実行されたPE10のレジスタとのいずれかからデータを、PE10に読み込ませる。
(2) The
レジスタ管理ユニット50は、例えば、自身のPE10内のRAWハザードが発生していない(「RAW」が“0”である)場合、且つ、最も近い過去に実行されたPE10におけるレジスタへの書き込みが完了した場合に、最も近い過去に実行されたPE10のレジスタのデータを、読み込み要求のあったPE10に読み込ませる。また、レジスタ管理ユニット50は、自身のPE10内のRAWハザードが発生している(「RAW」が“1”である)場合に、読み込み要求のあったPE10に、自身のレジスタのデータを読み込ませる。
For example, when there is no RAW hazard in its own PE 10 (“RAW” is “0”), the
次に、図6を参照して、レジスタ管理ユニット50によるRAWハザードが発生した際のSTALLB信号を生成する動作について説明する。
図6において、更新履歴情報EN2に対応するPE10−3(PE_3)において、レジスタRegXに読み出し命令が実行された場合に、PE10−3(PE_3)は、レジスタ管理ユニット50にストールするか否かの問合せを行う。レジスタ管理ユニット50は、PE10−3(PE_3)に対応する更新履歴情報EN2のAフラグが“0”であるため、更新履歴情報EN2の「RAW」を“0”のままとし、マルチプレクサ52により、更新履歴情報EN1のWフラグと更新履歴情報EN2の「RAW」とに基づいてSTALLB信号にL状態を出力する。その結果、当該PE10−3(PE_3)が、レジスタRegXの読み出し命令の実行を保留(ストール)する。
Next, an operation for generating the STALLB signal when a RAW hazard occurs by the
In FIG. 6, in the PE 10-3 (PE_3) corresponding to the update history information EN2, whether or not the PE 10-3 (PE_3) stalls in the
また、更新履歴情報EN1に対応するPE10において、レジスタRegXにおける最後の書き込みが完了すると、レジスタ管理ユニット50は、更新履歴情報EN1のWフラグを“1”にする。その結果、レジスタ管理ユニット50は、マルチプレクサ52により、STALLB信号にH状態を出力し、当該PE10が、レジスタRegXの読み出し命令を再開する。
When the last write in the register RegX is completed in the
次に、図12を参照して、本実施形態によるPE10間のプロセッサ1のRAWハザード処理について説明する。
図12は、本実施形態によるプロセッサ1のPE10間のRAWハザード処理の一例を示す図である。
図12は、2つのPE10(PE_1、PE_3)が並列に命令実行され、且つ、各PE10がパイプライン処理を実行している状態を示している。また、図12において、波形W1は、PE_3の「RAW」の論理状態を示し、波形W2は、PE_3のAフラグの論理状態を示している。また、波形W3は、PE_1のAフラグの論理状態を示し、波形W4は、PE_1のWフラグの論理状態を示し、波形W5は、PE_3のSTALLB信号の論理状態を示している。なお、各波形において、横軸は、時間を示し、縦軸は、論理状態を示している。
Next, the RAW hazard processing of the
FIG. 12 is a diagram illustrating an example of a RAW hazard process between the
FIG. 12 shows a state in which two PEs 10 (PE_1, PE_3) execute instructions in parallel, and each
例えば、時刻T11において、PE10−1(PE_1)が、レジスタRegXに書き込み命令を実行すると、レジスタ管理ユニット50は、PE_1に対応する管理情報のAフラグを“1”(H状態)に更新する。
また、同様に時刻T11において、PE10−3(PE_3)が、レジスタRegXに読み出し命令を実行すると、レジスタ管理ユニット50は、PE_3に対応する管理情報の「RAW」が“0”(L状態)であるため、マルチプレクサ53によって、最も近い過去に実行されたPE_1をRegXの読み込み元として選択する。また、レジスタ管理ユニット50は、PE_1に対応する管理情報のWフラグと、PE_3に対応する管理情報の「RAW」とに基づいて、マルチプレクサ52によって、PE_3のSTALLB信号をL状態にする。その結果、PE_3の命令実行が保留される。
For example, when the PE 10-1 (PE_1) executes a write instruction to the register RegX at time T11, the
Similarly, at time T11, when the PE 10-3 (PE_3) executes a read instruction to the register RegX, the
次に、時刻T12において、PE10−1(PE_1)が、レジスタRegXに対する最後の書き込み命令を実行すると、レジスタ管理ユニット50は、PE_1に対応する管理情報のWフラグを“1”(H状態)に更新する。レジスタ管理ユニット50は、PE_1に対応する管理情報のWフラグと、PE_3に対応する管理情報の「RAW」とに基づいて、PE_3のSTALLB信号をH状態にする。その結果、PE_3の命令実行の保留が解除される。ここで、時刻T11〜時刻T12までの期間ST1が、ストール期間となる。この場合、PE10−3(PE_3)は、PE10−1(PE_1)によるレジスタRegXの書き込みが完了した後に、レジスタRegXの値を読み出すため、正常に命令を実行することができる。
Next, at time T12, when the PE 10-1 (PE_1) executes the last write instruction for the register RegX, the
次に、図13を参照して、本実施形態によるプロセッサ1の自身のPE10内のRAWハザード処理について説明する。
図13は、本実施形態によるプロセッサ1の自身のPE10内のRAWハザード処理の一例を示す図である。
図13は、PE10−3(PE_3)が命令実行され、且つ、パイプライン処理を実行している状態を示している。また、図13において、波形W6は、PE_3の「RAW」の論理状態を示し、波形W7は、PE_3のAフラグの論理状態を示している。また、波形W8は、PE_3のSTALLB信号の論理状態を示している。なお、各波形において、横軸は、時間を示し、縦軸は、論理状態を示している。
Next, with reference to FIG. 13, the RAW hazard processing in the
FIG. 13 is a diagram showing an example of a RAW hazard process in the
FIG. 13 shows a state in which PE10-3 (PE_3) is executing an instruction and executing pipeline processing. In FIG. 13, a waveform W6 indicates the logic state of “RAW” of PE_3, and a waveform W7 indicates the logic state of the A flag of PE_3. Waveform W8 shows the logic state of the STALLB signal of PE_3. In each waveform, the horizontal axis indicates time, and the vertical axis indicates a logical state.
例えば、時刻T21において、PE10−3(PE_3)が、レジスタRegXに書き込み命令を実行すると、レジスタ管理ユニット50は、PE_3に対応する管理情報のAフラグを“1”(H状態)に更新する。
次に、時刻T22において、PE10−3(PE_3)が、レジスタRegXに読み出し命令を実行すると、レジスタ管理ユニット50は、管理情報のAフラグが“1”(H状態)であるため、PE_3に対応する管理情報の「RAW」を“1”(1状態)に更新する。そして、レジスタ管理ユニット50は、マルチプレクサ53によって、自身のPE_3をRegXの読み込み元として選択する。また、レジスタ管理ユニット50は、PE_3に対応する管理情報のAフラグと、PE_3に対応する管理情報の「RAW」とに基づいて、マルチプレクサ52によって、PE_3のSTALLB信号をH状態にする。その結果、PE_3の命令実行が保留されずにそのまま実行される。
このように、自身のPE10において、レジスタRegXに書き込みが実行されている場合には、PE10は、自身のレジスタRegXからデータを読み出す(読み込む)。
For example, when the PE 10-3 (PE_3) executes a write instruction to the register RegX at time T21, the
Next, when PE10-3 (PE_3) executes a read instruction to the register RegX at time T22, the
As described above, when writing is performed in the register RegX in the
<ストアバッファ処理>
次に、本実施形態によるプロセッサ1のストアバッファ処理について説明する。
ストアバッファユニット60は、ストアバッファ記憶部61のストアバッファテーブルに基づいて、ロード命令に対して、当該ロード命令の「Addr」を利用して、エントリテーブル記憶部62の「FIFO」上の自身のストアバッファテーブルを含めた最も近いストアバッファテーブルを一つ検出する。ストアバッファユニット60は、当該ストアバッファテーブルの中で、最も新しく(最も「LPC」の値が大きく)、且つ当該ロード命令の「Addr」の値が一致しているアクセス情報のデータをオペランドデータネットワークNW2に出力する(ロードバイパス処理)。これにより、ストアバッファユニット60は、データメモリ71に過去に書き込んだ(ストアした)データを再利用して、再びデータメモリ71から読み出す(ロードする)必要がないので高速にデータを読み出す(ロードする)ことができる。また、データメモリ71から読み出したデータが更新されていない場合には、ストアバッファユニット60は、データメモリ71から過去に時間を掛けて読み出した(ロードした)データを再利用して、再びデータメモリ71から読み出す(ロードする)必要がないので高速にデータを読み出す(ロードする)ことができる。
<Store buffer processing>
Next, the store buffer process of the
Based on the store buffer table of the store
また、メモリ管理ユニット70は、エントリテーブル記憶部62の「FIFO」順に各ストアバッファテーブルを検索し、各ストアバッファテーブル上で逐次、「Ld」(ロード)あるいは「St」(ストア)のフラグが“1”である行に対するデータメモリ71のアクセスを実行する。ストアバッファユニット60は、ストアバッファテーブルを検索して該当「Addr」を持つ行からロードバイパスし、このアクセスの終了とともに「完了」(完了フラグ)を“1”にする。なお、「完了」(完了フラグ)が“1”になった際に、レジスタ管理ユニット50は、当該命令がロード命令である場合は、ロード先のレジスタに該当する「UPD」及びAフラグを“1”にする。また、レジスタ管理ユニット50は、当該命令がそのレジスタの最後の書き込み(ロード命令)の場合には、該当するWフラグを“1”にする。
Further, the
また、ストアバッファユニット60は、当該命令がストア命令の場合には、ストア元のレジスタを読み込む必要があるため、レジスタ管理ユニット50の管理テーブルに問合せて、読み込み不可能である場合には、読み込み可能になるまで、命令実行を保留させる。また、レジスタの読み込み後に、ストアバッファユニット60は、レジスタの値、及びアドレス値を、ストアバッファテーブルの「Data」及び「Addr」に記憶させる。また、ストアバッファユニット60は、「終了」(終了フラグ)を“1”にする。
Further, when the instruction is a store instruction, the
次に、メモリ管理ユニット70は、ストアバッファテーブルの「St」が“1”である場合に、対応する「終了」(終了フラグ)が“1”になるまで待つ(ストール状態となる)。また、メモリ管理ユニット70は、「終了」(終了フラグ)が“1”になった場合に、データメモリ71へのメモリアクセスを開始し、当該ストア(書き込み)が完了した場合に、ストアバッファユニット60に、該当する「完了」(完了フラグ)を“1”にさせて、次のメモリアクセスの処理に移る。
Next, when “St” of the store buffer table is “1”, the
このように、ストアバッファユニット60は、PE10からデータメモリ71にアクセス要求があった場合に、ストアバッファ記憶部61が記憶する当該PE10に対応するストアバッファテーブルに基づいて、データメモリ71とのアクセスを制御する。
As described above, when there is an access request from the
以上説明したように、本実施形態によるプロセッサ1は、複数のPE10(プロセッシングエレメント)と、実行管理ユニット40(実行管理部)とを備えている。複数のPE10は、それぞれが、割り当てられたアトミックブロック(単位命令列)を一時記憶する命令キャッシュ部11(一時記憶部)を有し、それぞれの命令キャッシュ部11に記憶されたアトミックブロックに含まれる命令を実行可能に構成されている。実行管理ユニット40は、アトミックブロックに分割し、分割した当該アトミックブロックを複数のPE10のそれぞれに逐次割り当て、割り当てたアトミックブロックを複数のPE10に並列実行させる。ここで、アトミックブロックは、アセンブリ言語以下のレベルの命令列であるプログラムを、途中に分岐命令を含まない命令列であって、分岐先の先頭命令を始端とし、分岐命令を終端とする命令列である。
As described above, the
これにより、本実施形態によるプロセッサ1は、アトミックブロック単位で、PR10に割り当て、割り当てたアトミックブロックを複数のPE10に並列実行させるため、例えば、非数値計算処理を高速処理することができる。なお、本実施形態によるプロセッサ1は、以下のようなアプリケーションソフトウェアに有効である。
(1)単一スレッドに対して高速処理が求められるアプリケーション。
(2)複数のアトミックブロックで、且つ、用意されたPE10の数の範囲内でこのブロック群が構成されループ構造のあるアルゴリズムを持つアプリケーション。
(3)加えて複雑な制御フローを持つアルゴリズムで構成されたアプリケーション。
As a result, the
(1) An application that requires high-speed processing for a single thread.
(2) An application having an algorithm having a loop structure in which a plurality of atomic blocks and this block group are configured within the number of
(3) In addition, an application configured with an algorithm having a complicated control flow.
例えば、本実施形態によるプロセッサ1は、上記要件を満たす、非数値計算アプリケーションである、制御問題、グラフ問題、情報検索、コンピュータ支援型設計、定理証明などに有効である。
また、本実施形態によるプロセッサ1は、専用のコンパイラを用意する必要なしに、複数のPE10に並列実行させて、非数値計算処理を高速処理することができる。
For example, the
Further, the
また、本実施形態では、実行管理ユニット40は、分割したアトミックブロックが複数のPE10のいずれの命令キャッシュ部11にも記憶されていない場合に、当該アトミックブロックを複数のPE10のいずれかに割り当てる。そして、実行管理ユニット40は、分割したアトミックブロックが複数のPE10のいずれかの命令キャッシュ部11に既に記憶されている場合に、当該PE10に、当該命令キャッシュ部11に既に記憶されているアトミックブロックを並列実行させる。
これにより、本実施形態によるプロセッサ1は、アトミックブロック単位でPE10への割り当て及び並列実行を容易に実現することができる。
In this embodiment, the
Thereby, the
また、本実施形態によるプロセッサ1は、プログラムにおけるアトミックブロックの先頭命令の位置を示す先頭位置情報(「BTA」)と、当該アトミックブロックが有効であるか否かを示す有効情報(「有効フラグ」)と、次に実行するPE10を示す次実行情報(「PTR1」、「PTR2」)とを対応付けた管理情報を複数有する管理テーブルを記憶する管理テーブル記憶部41を備える。実行管理ユニット40は、プログラムに分岐命令が検出された際に、管理テーブル記憶部41が記憶する管理テーブルに基づいて、次に実行するアトミックブロックが複数のPE10のいずれかの命令キャッシュ部11に既に記憶されており、且つ有効な状態であるか否かを判定する。
これにより、本実施形態によるプロセッサ1は、キャッシュミス、及びキャッシュヒットの判定を管理テーブルに基づいてより容易に行うことができる。
Further, the
Thereby, the
また、本実施形態では、実行管理ユニット40は、プログラムに分岐命令が検出された際に、管理テーブル記憶部41が記憶する管理テーブルから、次実行情報(「PTR1」、「PTR2」)に基づいて当該分岐命令の次に実行するアトミックブロックに対応する先頭位置情報(「BTA」)及び有効情報(「有効フラグ」)を取得する。そして、実行管理ユニット40は、取得した先頭位置情報の示す位置と、次に実行するプログラムの実行位置とが一致し、且つ、取得した有効情報が有効を示す場合に、次実行情報に一致するPE10が、アトミックブロックを命令キャッシュ部11に記憶しており、且つ、有効な状態であると判定する。
これにより、本実施形態によるプロセッサ1は、キャッシュヒットを簡易な手法により適切に判定することができる。
Further, in this embodiment, the
Thereby, the
また、本実施形態では、実行管理ユニット40は、取得した先頭位置情報の示す位置と、次に実行するプログラムの実行位置とが一致しない、又は取得した有効情報が無効を示す場合に、複数のPE10の1つに次に実行するアトミックブロックを割り当てるとともに、割り当てたアトミックブロックに対応させて、管理テーブルを更新する。
これにより、本実施形態によるプロセッサ1は、キャッシュミスの場合に、簡易な処方により、アトミックブロックを適切にPE10に割り当てることができる。
Further, in the present embodiment, the
Thereby, the
また、本実施形態では、実行管理ユニット40は、複数のPE10の1つに次に実行するアトミックブロックを割り当てる場合に、管理テーブルの当該アトミックブロックに対応する先頭位置情報(「BTA」)を記憶させるとともに、有効情報(「有効フラグ」)を、無効を示す値に更新する。そして、実行管理ユニット40は、PE10が、当該アトミックブロックの実行を完了した場合に、当該アトミックブロックに対応する有効情報(「有効フラグ」)を、有効を示す値に更新する。
これにより、本実施形態によるプロセッサ1は、既に実行したアトミックブロックを適切に管理することができる。
In the present embodiment, when the
Thereby, the
また、本実施形態では、PE10は、パイプライン処理により命令を実行する。
これにより、本実施形態によるプロセッサ1は、パイプライン処理により、さらに高速に命令を実行することができる。
In the present embodiment, the
Thereby, the
また、本実施形態では、複数のPE10のそれぞれは、命令の実行に利用されるレジスタファイル部12(レジスタ)を有している。プロセッサ1は、さらに、レジスタ管理ユニット50(レジスタ管理部)を備えている。レジスタ管理ユニット50は、複数のPE10の間で、レジスタの書き込み後の読み出しによるデータ依存であるRAWハザードが発生した場合に、最も近い過去に当該レジスタに書き込みを実行しているPE10によるアトミックブロックの当該レジスタへの書き込みが完了するまで、当該レジスタの読み出しを実行するPE10の命令実行を保留させる。
これにより、本実施形態によるプロセッサ1は、RAWハザードが発生した場合においても、適切に命令を実行することができる。すなわち、本実施形態によるプロセッサ1は、PE10のレジスタ間のデータ依存性を回避することができる。
In the present embodiment, each of the plurality of
As a result, the
また、本実施形態によるプロセッサ1は、PE10を識別するPE識別情報(「PE_1」など)と、アトミックブロックの実行において、レジスタが更新されたことを示す更新情報(「UPD」)と、アトミックブロックにおけるレジスタの最後の書き込みが完了したことを示す完了情報(Wフラグ)と、レジスタの書き込みが実行されたことを示す実行情報(Aフラグ)とを対応付けた更新履歴情報をPE10の個数分有する更新履歴テーブルを記憶する更新履歴記憶部51を備えている。そして、レジスタ管理ユニット50は、更新履歴記憶部51が記憶する更新履歴テーブルに基づいて、PE10間でRAWハザードが発生したか否かを判定するとともに、PE10間でRAWハザードが発生した場合(例えば、「RAW」が“0”の場合)に、更新履歴テーブルに含まれる、最も近い過去にレジスタに書き込みを実行しているPE10に対応する完了情報に基づいて、RAWハザードの発生したPE10の命令実行を保留させる。
これにより、本実施形態によるプロセッサ1は、更新履歴情報に基づいて、RAWハザードが発生した場合に、RAWハザードの発生したPE10の命令実行を適切に保留(ストール)させることができる。
The
Thereby, the
また、本実施形態では、レジスタ管理ユニット50は、実行情報(Aフラグ)に基づいて、RAWハザードが発生したか否かを判定し、更新情報(「UPD」)に基づいて、最も近い過去にレジスタに書き込みを実行しているPE10を選択する。
これにより、本実施形態によるプロセッサ1は、簡易な手法により、RAWハザードの発生の検出、及び近い過去にレジスタに書き込みを実行しているPE10の選択を適切に行うことができる。
In the present embodiment, the
Thereby, the
また、本実施形態では、複数のPE10のそれぞれは、レジスタを複数備え、更新履歴記憶部51は、複数のレジスタのそれぞれに対応する更新履歴テーブルを記憶する。
これにより、本実施形態によるプロセッサ1は、PE10のそれぞれが、複数のレジスタを備える場合にも対応可能である。また、本実施形態によるプロセッサ1は、PE10が、レジスタを多数(複数)備えることにより、より複雑な処理が可能になる。
In the present embodiment, each of the plurality of
Thereby, the
また、本実施形態によるプロセッサ1は、ストアバッファ記憶部61と、ストアバッファユニット60(ストアバッファ制御部)とを備えている。ストアバッファ記憶部61は、アトミックブロックに含まれる各命令に対応するローカル位置情報(「LPC」)と、データメモリ71(外部記憶部)にアクセスした履歴を示すアクセス情報とを対応付けたストアバッファテーブルを、複数のPE10の個数分記憶する。ストアバッファユニット60は、PE10からデータメモリ71にアクセス要求があった場合に、ストアバッファ記憶部61が記憶する当該PE10に対応するストアバッファテーブルに基づいて、データメモリ71とのアクセスを制御する。
これにより、本実施形態によるプロセッサ1は、データメモリ71とのアクセスにおいても適切に処理を行うことができる。また、本実施形態によるプロセッサ1は、ストアバッファ記憶部61を利用することで、例えば、データメモリ71から過去に読み出したデータ、または、ストアバッファ記憶部61を介してデータメモリ71に記憶させたデータを、再利用できるので、データアクセスの処理時間を短縮することができる。
The
As a result, the
また、本実施形態では、アクセス情報には、アクセスの種別を示す種別情報(「Ld」、「St」など)と、データメモリ71においてアクセスする記憶位置情報(「Addr」)及びアクセスしたデータ(「Data」)とが対応付けられている。ストアバッファユニット60は、データメモリ71からデータを読み出すアクセス要求に対して、ストアバッファテーブルに当該アクセス要求に対応するデータが存在する場合に、当該データをPE10に出力する。ストアバッファユニット60は、ストアバッファテーブルに当該アクセス要求に対応するデータが存在しない場合に、データメモリ71から読み出したデータをPE10に出力する。
これにより、本実施形態によるプロセッサ1は、簡易な手法により、適切にデータメモリ71からデータを読み出すことができる。
In this embodiment, the access information includes type information (“Ld”, “St”, etc.) indicating the type of access, storage location information (“Addr”) accessed in the
Thereby, the
また、本実施形態では、ストアバッファユニット60は、データメモリ71にデータを書き込むアクセス要求に対して、PE10に対応するストアバッファテーブルに、ローカル位置情報と、当該アクセス情報とを対応付けて記憶させるとともに、データメモリ71に当該データを記憶させる。
これにより、本実施形態によるプロセッサ1は、簡易な手法により、適切にデータメモリ71からデータを書き込むことができる。
In the present embodiment, the
Thereby, the
なお、本発明は、上記の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で変更可能である。
例えば、上記の実施形態において、実行管理ユニット40が、管理テーブル記憶部41を備える例を説明したが、実行管理ユニット40の外部に、管理テーブル記憶部41を備えるようにしてもよい。また、レジスタ管理ユニット50が、更新履歴記憶部51を備える例を説明したが、レジスタ管理ユニット50の外部に、更新履歴記憶部51を備えるようにしてもよい。また、ストアバッファユニット60が、ストアバッファ記憶部61及びエントリテーブル記憶部62を備える例を説明したが、ストアバッファユニット60の外部に、ストアバッファ記憶部61とエントリテーブル記憶部62とのいずれか一方又は両方を備えるようにしてもよい。
In addition, this invention is not limited to said embodiment, It can change in the range which does not deviate from the meaning of this invention.
For example, in the above embodiment, the
また、上記の実施形態において、更新履歴記憶部51及びエントリテーブル記憶部62が、FIFOに構成される例を説明したが、ポインタを設けて、サイクリック(循環)に構成してもよい。
また、上記の実施形態において、レジスタ管理ユニット50が、命令の実行を保留、及び保留の解除をPE10に指示する例を説明したが、レジスタへの読み出し命令の際のレジスタ管理ユニット50への問合せで、PE10が自ら命令の実行を保留し、レジスタ管理ユニット50が、問合せに対して保留の解除をPE10に指示するようにしてもよい。
In the above embodiment, the update
Further, in the above-described embodiment, the example has been described in which the
また、上記の実施形態において、プロセッサ1は、メモリ管理ユニット70を介して、データメモリ71とアクセスする例を説明したが、これに限定されるものではなく、キャッシュメモリを介してデータメモリ71とアクセスするようにしてもよいし、データメモリ71と直接アクセスするようにしてもよい。
また、実行管理ユニット40の構成は、図4に示す構成に限定されるものではなく、実行管理ユニット40は、他の構成により実現されてもよい。また、レジスタ管理ユニット50の構成は、図6に示す構成に限定されるものではなく、レジスタ管理ユニット50は、他の構成により実現されてもよい。
In the above embodiment, the example in which the
Further, the configuration of the
また、上記の実施形態において、プロセッサ1が、実行管理ユニット40及び管理テーブル記憶部41を一か所により集中管理する例を説明したが、これに限定されるものではない。プロセッサ1は、例えば、実行管理ユニット40及び管理テーブル記憶部41の一部または全部を各PE10に分散して備え、分散管理されるようにしてもよい。プロセッサ1は、このような分散型で実装された場合であっても、上記の実施形態と同様の効果を奏する。
In the above embodiment, the example in which the
1…プロセッサ、10,10−1,10−2,10−3,10−4,10−N…PE、11…命令キャッシュ部、12…レジスタファイル部、13…命令実行部、20…PC更新部、21…PC、30…命令フェッチ部、31…IR、40…実行管理ユニット、41…管理テーブル記憶部、42…キャッシュミスハンドラ部、43…プリデコーダ部、50…レジスタ管理ユニット、51…更新履歴記憶部、52,53…マルチプレクサ、422,423…AND回路、60…ストアバッファユニット、61…ストアバッファ記憶部、62…エントリテーブル記憶部、70…メモリ管理ユニット、71…データメモリ、421…比較回路、424…LRUアービタ、425…ハンドラ部、NW1…命令ネットワーク、NW2…オペランドデータネットワーク
DESCRIPTION OF
Claims (13)
アセンブリ言語以下のレベルの命令列であるプログラムを、途中に分岐命令を含まない命令列であって、分岐先の先頭命令を始端とし、分岐命令を終端とする命令列である前記単位命令列に分割し、分割した当該単位命令列を前記複数のプロセッシングエレメントのそれぞれに逐次割り当て、割り当てた前記単位命令列を前記複数のプロセッシングエレメントに並列実行させる実行管理部と、
前記プログラムにおける前記単位命令列の先頭命令の位置を示す先頭位置情報と、当該単位命令列が有効であるか否かを示す有効情報と、次に実行する前記プロセッシングエレメントを示す次実行情報とを対応付けた管理情報を複数有する管理テーブルを記憶する管理テーブル記憶部と
を備え、
前記実行管理部は、
分割した前記単位命令列が前記複数のプロセッシングエレメントのいずれの前記一時記憶部にも記憶されていない場合に、当該単位命令列を前記複数のプロセッシングエレメントのいずれかに割り当て、
分割した前記単位命令列が前記複数のプロセッシングエレメントのいずれかの前記一時記憶部に既に記憶されている場合に、当該プロセッシングエレメントに、当該一時記憶部に既に記憶されている前記単位命令列を並列実行させ、
前記プログラムに分岐命令が検出された際に、前記管理テーブル記憶部が記憶する前記管理テーブルに基づいて、次に実行する前記単位命令列が前記複数のプロセッシングエレメントのいずれかの前記一時記憶部に既に記憶されており、且つ有効な状態であるか否かを判定する
ことを特徴とするプロセッサ。 A plurality of processing elements each having a temporary storage unit for temporarily storing an assigned unit instruction sequence, and capable of executing instructions included in the unit instruction sequence stored in the temporary storage unit;
A program that is an instruction sequence at a level of assembly language or lower is changed to the unit instruction sequence that is an instruction sequence that does not include a branch instruction in the middle and that has a branch instruction at the beginning and a branch instruction at the end. An execution management unit that divides and sequentially assigns the divided unit instruction sequence to each of the plurality of processing elements, and causes the plurality of processing elements to execute the assigned unit instruction sequence in parallel ;
Start position information indicating the position of the start instruction of the unit instruction sequence in the program, valid information indicating whether or not the unit instruction sequence is valid, and next execution information indicating the processing element to be executed next A management table storage unit for storing a management table having a plurality of associated management information ,
The execution management unit
When the divided unit instruction sequence is not stored in any of the temporary storage units of the plurality of processing elements, the unit instruction sequence is assigned to any of the plurality of processing elements,
When the divided unit instruction sequence is already stored in the temporary storage unit of any of the plurality of processing elements, the unit instruction sequence already stored in the temporary storage unit is connected in parallel to the processing element. Let it run
When a branch instruction is detected in the program, based on the management table stored in the management table storage unit, the unit instruction sequence to be executed next is stored in the temporary storage unit in any of the plurality of processing elements. Determine whether it is already stored and valid
Processor, wherein a call.
前記プログラムに分岐命令が検出された際に、前記管理テーブル記憶部が記憶する前記管理テーブルから、前記次実行情報に基づいて当該分岐命令の次に実行する前記単位命令列に対応する前記先頭位置情報及び前記有効情報を取得し、
取得した前記先頭位置情報の示す位置と、次に実行する前記プログラムの実行位置とが一致し、且つ、取得した前記有効情報が有効を示す場合に、前記次実行情報に一致する前記プロセッシングエレメントが、前記単位命令列を前記一時記憶部に記憶しており、且つ、有効な状態であると判定する
ことを特徴とする請求項1に記載のプロセッサ。 The execution management unit
When the branch instruction is detected in the program, the head position corresponding to the unit instruction sequence to be executed next to the branch instruction based on the next execution information from the management table stored in the management table storage unit Information and the valid information,
If the position indicated by the acquired head position information matches the execution position of the next program to be executed, and the acquired valid information indicates validity, the processing element that matches the next execution information is , the unit instruction sequence is stored in the temporary storage unit, and processor according to claim 1, wherein the determining that the valid state.
取得した前記先頭位置情報の示す位置と、次に実行する前記プログラムの実行位置とが一致しない、又は取得した前記有効情報が無効を示す場合に、前記複数のプロセッシングエレメントの1つに次に実行する前記単位命令列を割り当てるとともに、割り当てた前記単位命令列に対応させて、前記管理テーブルを更新する
ことを特徴とする請求項2に記載のプロセッサ。 The execution management unit
When the position indicated by the acquired head position information does not match the execution position of the next program to be executed or when the acquired valid information indicates invalid, the next execution is performed on one of the plurality of processing elements. The processor according to claim 2 , wherein the unit instruction sequence to be assigned is assigned and the management table is updated in correspondence with the assigned unit instruction sequence.
前記複数のプロセッシングエレメントの1つに次に実行する前記単位命令列を割り当てる場合に、前記管理テーブルの当該単位命令列に対応する前記先頭位置情報を記憶させるとともに、前記有効情報を、無効を示す値に更新し、
前記プロセッシングエレメントが、当該単位命令列の実行を完了した場合に、当該単位命令列に対応する前記有効情報を、有効を示す値に更新する
ことを特徴とする請求項3に記載のプロセッサ。 The execution management unit
When allocating the unit instruction sequence to be executed next to one of the plurality of processing elements, the start position information corresponding to the unit instruction sequence of the management table is stored, and the valid information indicates invalidity Update to value,
The processor according to claim 3 , wherein when the processing element completes execution of the unit instruction sequence, the valid information corresponding to the unit instruction sequence is updated to a value indicating validity.
ことを特徴とする請求項1から請求項4のいずれか一項に記載のプロセッサ。 The processor according to any one of claims 1 to 4 , wherein the processing element executes the instruction by pipeline processing.
さらに、前記複数のプロセッシングエレメントの間で、前記レジスタの書き込み後の読み出しによるデータ依存であるRAWハザードが発生した場合に、最も近い過去に当該レジスタに書き込みを実行している前記プロセッシングエレメントによる前記単位命令列の当該レジスタへの書き込みが完了するまで、当該レジスタの読み出しを実行する前記プロセッシングエレメントの命令実行を保留させるレジスタ管理部を備える
ことを特徴とする請求項1から請求項5のいずれか一項に記載のプロセッサ。 Each of the plurality of processing elements has a register used to execute the instruction,
Furthermore, when a RAW hazard that is data-dependent due to reading after writing to the register occurs between the plurality of processing elements, the unit by the processing element that has performed writing to the register in the nearest past until the write to the register of the instruction sequence is completed, any one of claims 1 to 5, characterized in that it comprises a register management unit for holding the instruction execution of the processing elements to perform the reading of the register The processor according to item.
アセンブリ言語以下のレベルの命令列であるプログラムを、途中に分岐命令を含まない命令列であって、分岐先の先頭命令を始端とし、分岐命令を終端とする命令列である前記単位命令列に分割し、分割した当該単位命令列を前記複数のプロセッシングエレメントのそれぞれに逐次割り当て、割り当てた前記単位命令列を前記複数のプロセッシングエレメントに並列実行させる実行管理部と A program that is an instruction sequence at a level of assembly language or lower is changed to the unit instruction sequence that is an instruction sequence that does not include a branch instruction in the middle and that has a branch instruction at the beginning and a branch instruction at the end. An execution management unit that divides, sequentially assigns the divided unit instruction sequence to each of the plurality of processing elements, and causes the plurality of processing elements to execute the assigned unit instruction sequence in parallel;
を備え、 With
前記複数のプロセッシングエレメントのそれぞれは、前記命令の実行に利用されるレジスタを有し、 Each of the plurality of processing elements has a register used to execute the instruction,
さらに、前記複数のプロセッシングエレメントの間で、前記レジスタの書き込み後の読み出しによるデータ依存であるRAWハザードが発生した場合に、最も近い過去に当該レジスタに書き込みを実行している前記プロセッシングエレメントによる前記単位命令列の当該レジスタへの書き込みが完了するまで、当該レジスタの読み出しを実行する前記プロセッシングエレメントの命令実行を保留させるレジスタ管理部を備える Furthermore, when a RAW hazard that is data-dependent due to reading after writing to the register occurs between the plurality of processing elements, the unit by the processing element that has performed writing to the register in the nearest past A register management unit that suspends instruction execution of the processing element that executes reading of the register until the writing of the instruction sequence to the register is completed.
ことを特徴とするプロセッサ。 A processor characterized by that.
前記レジスタ管理部は、
前記更新履歴記憶部が記憶する更新履歴テーブルに基づいて、前記RAWハザードが発生したか否かを判定するとともに、
前記レジスタに対して読み込みを行う前記プロセッシングエレメントにおいて、前記プロセッシングエレメント内のRAWハザードが発生せず、かつ、前記レジスタに対して読み込みを行う前記プロセッシングエレメントと当該レジスタに対して最も近い過去に書き込みを行う前記プロセッシングエレメントとの間で、前記プロセッシングエレメント間のRAWハザードが発生した場合には、最も近い過去に書き込みを行う前記プロセッシングエレメントについての当該書き込み対象のレジスタに関する前記完了情報に基づいて、前記レジスタに対して読み込みを行う前記プロセッシングエレメントの命令実行を保留するか否かを制御する
ことを特徴とする請求項6又は請求項7に記載のプロセッサ。 PE identification information for identifying the processing element, update information indicating that the register has been updated in the execution of the unit instruction sequence, and completion indicating that the last write of the register in the unit instruction sequence has been completed An update history storage unit for storing an update history table having update history information in association with information and execution information indicating that writing of the register has been executed, for the number of processing elements;
The register management unit
Based on the update history table stored in the update history storage unit, it is determined whether or not the RAW hazard has occurred,
In the processing element that reads from the register, a RAW hazard in the processing element does not occur, and the processing element that reads from the register and a write to the register that is closest to the past are written. When a RAW hazard between the processing elements occurs between the processing elements to be performed, the register based on the completion information on the register to be written for the processing element to be written in the nearest past The processor according to claim 6 , wherein the processor controls whether or not to suspend the execution of the instruction of the processing element that reads from the processing element .
前記レジスタに対して読み込みを行う前記プロセッシングエレメントについての当該読み込み対象のレジスタに関する前記実行情報に基づいて、前記レジスタに対して読み込みを行う前記プロセッシングエレメントにおいて、前記プロセッシングエレメント内のRAWハザードが発生したか否かを判定する
ことを特徴とする請求項8に記載のプロセッサ。 The register management unit
Whether or not a RAW hazard has occurred in the processing element in the processing element that reads the register based on the execution information related to the register to be read for the processing element that reads the register the processor of claim 8, wherein the determining whether.
前記更新履歴記憶部は、前記複数のレジスタのそれぞれに対応する前記更新履歴テーブルを記憶する
ことを特徴とする請求項8又は請求項9に記載のプロセッサ。 Each of the plurality of processing elements includes a plurality of the registers,
The processor according to claim 8 or 9 , wherein the update history storage unit stores the update history table corresponding to each of the plurality of registers.
前記プロセッシングエレメントから前記外部記憶部にアクセス要求があった場合に、前記ストアバッファ記憶部が記憶する当該プロセッシングエレメントに対応する前記ストアバッファテーブルに基づいて、前記外部記憶部とのアクセスを制御するストアバッファ制御部と
を備えることを特徴とする請求項1から請求項10のいずれか一項に記載のプロセッサ。 A store buffer that stores a store buffer table in which local position information corresponding to each instruction included in the unit instruction sequence and access information indicating a history of accessing the external storage unit are associated with each other as many as the number of the processing elements. A storage unit;
A store that controls access to the external storage unit based on the store buffer table corresponding to the processing element stored in the store buffer storage unit when there is an access request from the processing element to the external storage unit the processor according to any one of claims 1 0 to claim 1, characterized in that it comprises a buffer control unit.
前記ストアバッファ制御部は、
前記外部記憶部からデータを読み出す前記アクセス要求に対して、前記ストアバッファテーブルに当該アクセス要求に対応する前記データが存在する場合に、当該データを前記プロセッシングエレメントに出力し、
前記ストアバッファテーブルに当該アクセス要求に対応する前記データが存在しない場合に、前記外部記憶部から読み出した前記データを前記プロセッシングエレメントに出力する
ことを特徴とする請求項11に記載のプロセッサ。 The access information is associated with type information indicating the type of access, storage location information accessed in the external storage unit, and accessed data.
The store buffer control unit
In response to the access request for reading data from the external storage unit, when the data corresponding to the access request exists in the store buffer table, the data is output to the processing element,
The processor of claim 1 1, wherein the data corresponding to the access request to the store buffer table in the absence, and outputs the data read from the external storage unit to the processing element.
前記外部記憶部にデータを書き込む前記アクセス要求に対して、前記プロセッシングエレメントに対応する前記ストアバッファテーブルに、前記ローカル位置情報と、当該アクセス情報とを対応付けて記憶させるとともに、前記外部記憶部に当該データを記憶させる
ことを特徴とする請求項11又は請求項12に記載のプロセッサ。 The store buffer control unit
In response to the access request for writing data to the external storage unit, the local location information and the access information are stored in association with each other in the store buffer table corresponding to the processing element, and the external storage unit the processor of claim 1 1 or claim 1 2, characterized in that to store the data.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016011234A JP6167193B1 (en) | 2016-01-25 | 2016-01-25 | Processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016011234A JP6167193B1 (en) | 2016-01-25 | 2016-01-25 | Processor |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6167193B1 true JP6167193B1 (en) | 2017-07-19 |
JP2017134443A JP2017134443A (en) | 2017-08-03 |
Family
ID=59351428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016011234A Active JP6167193B1 (en) | 2016-01-25 | 2016-01-25 | Processor |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6167193B1 (en) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3641997B2 (en) * | 2000-03-30 | 2005-04-27 | 日本電気株式会社 | Program conversion apparatus and method, and recording medium |
JP4042604B2 (en) * | 2003-03-31 | 2008-02-06 | 日本電気株式会社 | Program parallelization apparatus, program parallelization method, and program parallelization program |
CN104011705A (en) * | 2011-12-01 | 2014-08-27 | 新加坡国立大学 | Polymorphic heterogeneous multi-core architecture |
US9639371B2 (en) * | 2013-01-29 | 2017-05-02 | Advanced Micro Devices, Inc. | Solution to divergent branches in a SIMD core using hardware pointers |
US9830164B2 (en) * | 2013-01-29 | 2017-11-28 | Advanced Micro Devices, Inc. | Hardware and software solutions to divergent branches in a parallel pipeline |
-
2016
- 2016-01-25 JP JP2016011234A patent/JP6167193B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2017134443A (en) | 2017-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5499029B2 (en) | Interrupt control for virtual processors | |
JP6143872B2 (en) | Apparatus, method, and system | |
JP4610593B2 (en) | Dual thread processor | |
JP4520788B2 (en) | Multithreaded processor | |
US10417001B2 (en) | Physical register table for eliminating move instructions | |
JP3927546B2 (en) | Simultaneous multithreading processor | |
US10761846B2 (en) | Method for managing software threads dependent on condition variables | |
US10423446B2 (en) | Data processing | |
KR20170076564A (en) | Handling move instructions using register renaming | |
JP5548037B2 (en) | Command issuing control device and method | |
US20120079241A1 (en) | Instruction execution based on outstanding load operations | |
WO2017030692A1 (en) | Storing narrow produced values for instruction operands directly in a register map in an out-of-order processor | |
US7873961B2 (en) | Supervisory operating system for running multiple child operating systems simultaneously and optimizing resource usage | |
US20130179662A1 (en) | Method and System for Resolving Thread Divergences | |
JP7096840B2 (en) | Equipment and methods for managing capacity metadata | |
US6915395B1 (en) | Active address content addressable memory | |
US7203821B2 (en) | Method and apparatus to handle window management instructions without post serialization in an out of order multi-issue processor supporting multiple strands | |
US9223714B2 (en) | Instruction boundary prediction for variable length instruction set | |
US20140223447A1 (en) | Method and System For Exception-Less System Calls In An Operating System | |
JP6167193B1 (en) | Processor | |
WO2013101031A1 (en) | Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses | |
US10430342B2 (en) | Optimizing thread selection at fetch, select, and commit stages of processor core pipeline | |
JP7131313B2 (en) | Arithmetic processing device and method of controlling arithmetic processing device | |
JP2021504791A (en) | Dependency matrix extensible using one or more summary bits in an out-of-order processor | |
US20180157493A1 (en) | Reduced stack usage in a multithreaded processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170418 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170606 |
|
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: 20170613 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170626 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6167193 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |