JP2023084904A - プロセッサ、情報処理装置及び情報処理方法 - Google Patents
プロセッサ、情報処理装置及び情報処理方法 Download PDFInfo
- Publication number
- JP2023084904A JP2023084904A JP2021199289A JP2021199289A JP2023084904A JP 2023084904 A JP2023084904 A JP 2023084904A JP 2021199289 A JP2021199289 A JP 2021199289A JP 2021199289 A JP2021199289 A JP 2021199289A JP 2023084904 A JP2023084904 A JP 2023084904A
- Authority
- JP
- Japan
- Prior art keywords
- core
- register
- update
- data
- register value
- 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.)
- Pending
Links
- 230000010365 information processing Effects 0.000 title claims abstract description 20
- 238000003672 processing method Methods 0.000 title claims abstract description 8
- 230000005540 biological transmission Effects 0.000 claims abstract description 38
- 239000000284 extract Substances 0.000 claims abstract description 4
- 238000000034 method Methods 0.000 claims description 34
- 238000012545 processing Methods 0.000 claims description 31
- 238000010586 diagram Methods 0.000 description 14
- 230000004888 barrier function Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/4031—Coupling between buses using bus bridges with arbitration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Bus Control (AREA)
- Microcomputers (AREA)
Abstract
【課題】演算性能を向上させるプロセッサ、情報処理装置及び情報処理方法を提供する。【解決手段】個別の宛先通知専用線がそれぞれに接続された複数のコアが配置される。宛先コア選択回路は、コアのうちいくつかを宛先とする複数のパケットを受信して、調停を行い複数のパケットの宛先となるコアの中から1つの第1コアを選択する。データマッチ回路は、第1コアに対するパケットに含まれる第1送信データと、調停への参加の宛先となる第1コア以外のコアに対するパケットに含まれる第2送信データとを比較して、第2送信データが第1送信データに一致した1つ以上の第2コアを抽出し、宛先通知専用線を用いて第1コア及び第2コアを宛先に指定して、第1送信データをデータ通知線経由で送信する。【選択図】図4
Description
本発明は、プロセッサ、情報処理装置及び情報処理方法に関する。
近年、1つのプロセッサに対して複数のコアを実装するメニーコア技術の開発が進められており、複数のコアを実装したプロセッサの利用が増えている。このような複数のコアを実装したプロセッサにおいて、プロセッサ中央で管理されているレジスタ値を複数コアに対して転送してそれぞれのコアに処理を行わせる技術がある。この技術は、例えば、HPC(High Performance Computing)の分野において、バリア同期を実行する際に活用される。そして、この技術では、宛先毎にレジスタからコアに対して専用線を設けることで、同一レジスタ値を複数コアに対して送る際に並行してパケットを転送することができ、レイテンシの削減が可能となる。
例えば、複数のコアを有するプロセッサにおいてコア間での制御を利用する機能を持つ場合、レジスタを管理する中央制御部がプロセッサ内に配置され、各コアがレジスタのコピーを保持する。レジスタ値が更新された場合には、中央制御部が、更新されたレジスタの値をパケット化して各コアに対して通知することで、各コアそれぞれが有するコピーレジスタに対して最新の値を通知する。これにより、各コアは中央制御部に対して値の参照を行うことなくコア内部のコピーレジスタを参照してレジスタ値を取得できるため、レジスタ値の読み出し命令のレイテンシを削減することができる。
なお、レジスタ値を利用する技術として、割り込み通知信号の状態を表すデータ及び信号の出力元の演算部の識別情報を出力し、出力元の演算部に対応するレジスタにデータを書き込み、書き込まれたデータに基づいて割り込みを起動させる技術が提案されている。
しかしながら、従来の各コアへのレジスタ値の通知方法では、複数のコアに同じレジスタ値を送る場合でも、調停により各コアが順番に選択され、選択されたコアに対してパケットが送られる処理が送信先のコアの数分繰り返される。このように、プロセッサは、コアへのレジスタ値の送信と調停回路による調停を交互に行いながらパケットを送出することになり、送り先のコア数が増加する毎に、全てのパケットの送出が完了するまでの時間が増加してしまう。このため、例えばコア間におけるバリア同期の完了を通知する場合などでは、レジスタ値の通知の遅延が演算性能に影響を及ぼしてしまう。そこで、レジスタ値の通知の遅延を解消するため、全てのコアと中央制御部との間にレジスタ値を通知するパケット送信のためのデータ通知線用の専用バスを設けることが考えられるが、配線面積を圧迫してしまい実現は困難である。
また、割り込み通知信号の状態を表すデータ及び信号の出力元の演算部の識別情報を用いて割り込みを制御する従来技術では、割り込み通信に用いられる信号線を減らすことはできるが、レジスタ値の通知の遅延を軽減することは困難である。したがって、レジスタ値の通知の遅延による演算性能の低下を抑制することは難しい。
開示の技術は、上記に鑑みてなされたものであって、演算性能を向上させるプロセッサ、情報処理装置及び情報処理方法を提供することを目的とする。
本願の開示するプロセッサ、情報処理装置及び情報処理方法の一つの態様において、個別の宛先通知専用線がそれぞれに接続された複数のコアが配置される。宛先コア選択回路は、いくつかの前記コアのそれぞれを宛先とする複数のパケットを受信して、調停を行い複数の前記パケットの宛先となる前記コアの中から1つの第1コアを選択する。データマッチ回路は、前記調停回路により選択された前記第1コアに対するパケットに含まれる送信データと、前記調停への参加の宛先となる前記第1コア以外の前記コアに対するパケットに含まれる送信データとを比較して、送信データの値が一致した1つ以上の第2コアを抽出し、前記宛先通知専用線を用いて前記第1コア及び前記第2コアを宛先に指定して、前記第1コアに対する前記送信データをデータ通知線経由で送信する。
1つの側面では、本発明は、演算性能を向上させることができる。
以下に、本願の開示するプロセッサ、情報処理装置及び情報処理方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示するプロセッサ、情報処理装置及び情報処理方法が限定されるものではない。
図1は、情報処理装置の概略構成図である。情報処理装置1は、CPU(Central Processing Unit)10、DIMM(Dual Inline Memory Module)20及びI/O(Input/Output)デバイス30を有する。
CPU10は、中央制御部11、コア101~104、キャッシュ12、MAC(Memory Access Control)インタフェース13及び外部バスインタフェース14を有する。MACインタフェース13は、DIMM20に接続される。また、外部バスインタフェース14は、I/Oデバイス30に接続される。
中央制御部11は、コア101~104のそれぞれに個別に宛先通知専用線201~204により接続される。また、中央制御部11は、データ通知線210によりコア101~104に接続される。中央制御部11は、コア101~104が演算で使用するレジスタ値の更新及び保持などの管理を行う。例えば、中央制御部11は、保持するレジスタ値を更新すると、更新したレジスタ値を使用するコア101~104に新たなレジスタ値を通知する。
コア101~104は、中央制御部11から通知されたレジスタ値やDIMM20に格納されたデータなどを用いて演算処理を実行する。CPU10におけるレジスタ値の通知処理については後で詳細に説明する。さらに、コア101~104は、演算処理により発生する実行命令をキャッシュ12に格納する。図1では、一例として4つのコア101~104を図示したが複数であればこの数に特に制限はない。また、コア101~104は、いずれも同様の動作を行うので、以下の説明では、それぞれを区別しない場合、「コア100」と呼ぶ。
キャッシュ12は、中央制御部11、MACインタフェース13及び外部バスインタフェース14に接続される。キャッシュ12は、コア100から出力された実行命令を格納する。そして、キャッシュ12に格納された実行命令は、宛先に応じて、中央制御部11、DIMM20及びI/Oデバイス30に出力される。
DIMM20は、主記憶装置である。DIMM20は、コア100が演算で用いるデータなどを格納する。DIMM20は、MACインタフェース13を介して送られてくる実行命令にしたがって、データの読み書きを行う。
I/Oデバイス30は、例えば、ハードディスク、SSD(Solid State Drive)又はネットワークインタフェースなどである。I/Oデバイス30は、外部バスインタフェース14を介して送られてくる実行命令にしたがって動作する。
図2は、CPUの詳細を表す構成図である。次に、図2を参照して、CPUのレジスタ値の通知処理について詳細に説明する。
コア101~104は、それぞれがコピーレジスタ111~114を有する。例えば、コア101~104は、コピーレジスタ111~114に格納されたレジスタ値を確認してバリア同期を実行して演算処理を進める。以下では、コピーレジスタ111~114について、それぞれの区別しない場合、「コピーレジスタ110」と呼ぶ。コア100は、レジスタ値を使用する際に、対応するレジスタ131~134にアクセスすることなく、自己が保持するコピーレジスタ110に格納されたレジスタ値を用いて演算を行なうことができる。
次に、中央制御部11の動作について説明する。中央制御部11は、図2に示すように、中央レジスタ操作部120、レジスタ131~134及び調停回路150を有する。図2における破線矢印は、レジスタ値を表すデータの流れを示す。また、図2の実践矢印は、各種制御データの流れを示す。
レジスタ131~134は、それぞれ、コア101~104に対応するように配置される。レジスタ131が保持するレジスタ値はコア101が使用するレジスタ値である。レジスタ132が保持するレジスタ値はコア102が使用するレジスタ値である。レジスタ133が保持するレジスタ値はコア104が使用するレジスタ値である。レジスタ134が保持するレジスタ値はコア104が使用するレジスタ値である。例えば、レジスタ131が保持するレジスタ値は、コア101が有するコピーレジスタ111にコピーされ、コア101は、コピーレジスタ111に格納されたレジスタ値を使用して演算処理を行う。レジスタ131~134は、いずれも同様の動作を行うので、以下の説明ではそれぞれを区別しない場合、「レジスタ130」と呼ぶ。
レジスタ130は、保持するレジスタ値を通知するためのレジスタ値通知パケットを生成する。レジスタ値通知パケットには、宛先となるコア100の識別情報及びそのコア100が使用するレジスタ値が含まれる。そして、レジスタ130は、生成したパケットを調停回路150へ出力する。
また、レジスタ130は、レジスタ値の更新指示を受けると、古いレジスタ値を維持しつつ、更新データである新しいレジスタ値を待機データとして保持する。そして、レジスタ130は、新しいレジスタ値及び宛先となるコア100の識別情報を含むレジスタ値通知パケットを生成して調停回路150へ出力する。その後、レジスタ130は、調停回路150からデータ更新命令の入力を受けると、待機データでレジスタ値を更新する。その後、レジスタ130は、中央レジスタ操作部120にデータ更新完了通知を出力する。
中央レジスタ操作部120は、コア100から出力されたレジスタ130に対する制御命令をキャッシュ12から取得する。そして、中央レジスタ操作部120は、制御命令にしたがってレジスタ130を制御する。
例えば、中央レジスタ操作部120は、レジスタ値を変更する制御命令をコア100から受ける。その場合、中央レジスタ操作部120は、制御命令にしたがって指定されたレジスタ130のレジスタ値を更新する。具体的には、中央レジスタ操作部120は、更新データとなる新しいレジスタ値をレジスタ130へ出力する。その後、中央レジスタ操作部120は、更新データの送信先のレジスタ130からデータ更新完了通知を受けることで、そのレジスタ130のレジスタ値の更新を完了する。
調停回路150は、図2に示すように、宛先通知専用線201~204によりコア101~104のそれぞれと個別に接続される。以下では、宛先通知専用線201~204のそれぞれを区別しない場合、「宛先通知専用線200」と呼ぶ。調停回路150は、レジスタ値通知パケットの入力をレジスタ130から受ける。そして、調停回路150は、レジスタ値通知パケット間の調停を行い、レジスタ値通知の宛先とするコア100を選択する。そして、調停回路150は、選択したコア100に接続される宛先通知専用線200をオンにして選択したコア100を有効にする。その後、調停回路150は、選択したコア100に対応するレジスタ130に対して、データ更新命令を出力して、レジスタ値を新しい値に更新させる。次に、調停回路150は、有効にしたコア100に対して、新しいレジスタ値を送信して、選択したコア100が有するコピーレジスタ110が保持するレジスタ値を新しいレジスタ値に更新する。
図3は、実施例1に係る調停回路の詳細を表すブロック図である。次に、図3を参照して、調停回路150の動作についてさらに詳細に説明する。調停回路150は、図3に示すように、宛先コア選択回路501、データマッチ回路502及びAND回路511~514を有する。AND回路511~514は、いずれも同じ機能を有するので、以下の説明ではそれぞれを区別しない場合、「AND回路510」と呼ぶ。
AND回路510は、2つの入力の端子のうち一方がレジスタ130に接続される。また、AND回路510は、2つの入力の端子のうち他方がデータマッチ回路502に接続される。さらに、AND回路510は、出力端子が宛先通知専用線200に接続され、宛先通知専用線200を介してそれぞれに対応するコア100に接続される。また、AND回路510から延びる宛先通知専用線200は、分岐して対応するレジスタ130に接続される。
AND回路510は、一方の入力として、対応するレジスタ130から送出された調停参加を通知する信号の入力を受ける。調停参加を通知する信号は、レジスタ130により生成されたレジスタ値通知パケットに含まれる。レジスタ130が保持するレジスタ値が更新された場合に、調停参加を通知する信号がオンになる。また、AND回路510は、他方の入力として、データマッチ回路502から宛先選択信号の入力を受ける。入力先のAND回路510に接続されるコア100がデータマッチ回路502により更新データであるレジスタ値を送信する宛先として選択された場合に、宛先選択信号がオンになる。調停参加を通知する信号及び宛先選択信号の双方がオンとなった場合、AND回路510は、宛先通知専用線200をオンにして、接続先のコア100を有効にする。
宛先コア選択回路501は、各AND回路510に対して送られた調停参加を通知する信号を取得する。ここで、調停参加を通知する信号がオンの場合、その調停参加を通知する信号の宛先であるコア100が、調停に参加するコア100である。そして、宛先コア選択回路501は、調停に参加するコア100の中から1つのコア100を、レジスタ値を送信する宛先のコア100として選択する。ここで、レジスタ値を送信する宛先として選択されたコア100を「更新選択コア100」と呼ぶ。その後、宛先コア選択回路501は、更新選択コア100の情報及び調停に参加を通知する他のコア100の情報をデータマッチ回路502へ出力する。
データマッチ回路502は、更新選択コア100の情報及び調停に参加する他のコア100の情報の入力を宛先コア選択回路501から受ける。また、データマッチ回路502は、各コア100に対するレジスタ値の入力をレジスタ130から受ける。コア100に対するレジスタ値は、レジスタ130により生成されたレジスタ値通知パケットに含まれる。
そして、データマッチ回路502は、調停に参加する他のコア100の中に、レジスタ値が更新選択コア100と一致するコア100である更新一致コア100が存在するか否かを判定する。更新一致コア100が存在する場合、データマッチ回路502は、更新一致コア100の中に、レジスタ値の更新通知前である更新未通知コア100が存在するか否かを判定する。
更新未通知コア100が存在しなければ、データマッチ回路502は、更新選択コア100に繋がるAND回路510へ入力する宛先選択信号をオンにする。この場合、データマッチ回路502は、他のコア100に繋がるAND回路510へ入力する宛先選択信号はオフのままにする。これにより、更新選択コア100に繋がる宛先通知専用線200がオンとなり、他のコア100に繋がる宛先通知専用線200はオフのままとなる。また、この場合、更新選択コア100に対応するAND回路510から出力された宛先通知専用線200をオンにする信号は、データ更新命令として更新選択コア100に対応するレジスタ130へ入力される。これにより、更新選択コア100に対応するレジスタ130のレジスタ値が更新される。
これに対して、更新未通知コア100が存在する場合、データマッチ回路502は、更新選択コア100及び更新未通知コア100に繋がるAND回路510へ入力する宛先選択信号をオンにする。この場合、データマッチ回路502は、更新選択コア100及び更新未通知コア100以外のコア100に繋がるAND回路510へ入力する宛先選択信号はオフのままにする。これにより、更新選択コア100及び更新未通知コア100に繋がる宛先通知専用線200がオンとなり、それ以外のコア100に繋がる宛先通知専用線200はオフのままとなる。また、この場合、更新選択コア100及び更新未通知コア100のそれぞれに対応するAND回路510から出力された宛先通知専用線200をオンにする信号は、データ更新命令として更新選択コア100に対応するレジスタ130へ入力される。これにより、更新選択コア100及び更新未通知コア100のそれぞれに対応するレジスタ130のレジスタ値が更新される。
さらに、データマッチ回路502は、更新選択コア100を宛先とするレジスタ値通知パケットに含まれる更新データであるレジスタ値を、接続された宛先通知専用線200がオンにされたコア100に対して、データ通知線210を用いて送信する。これにより、接続された宛先通知専用線200がオンにされたコア100が有するコピーレジスタ110が保持するレジスタ値が更新される。
図4は、実施例1に係るレジスタ値の更新処理のシーケンス図である。各軸間を結ぶ矢印は、データ又は命令の信号の授受を表す。また、各軸に破線枠で示した記号は、その時点で保持されるレジスタ値を表す。すなわち、この場合、レジスタ131及び132、並びに、コピーレジスタ111及び112は、レジスタ値としてR1を保持する状態から処理が開始される。ここでは、レジスタ131及び132が保持するレジスタ値が同じ値に更新される場合を例に説明する。
中央レジスタ操作部120は、レジスタ131及び132にレジスタ値であるR2を送信する(ステップS101及びS102)。
レジスタ131は、レジスタ値としてR1を維持しつつ待機データとしてR2を保持する。そして、レジスタ131は、宛先がコア101であり更新データのレジスタ値がR2であるレジスタ値通知パケットを生成する。その後、レジスタ131は、生成したレジスタ値通知パケットを調停回路140へ出力して、コア101を調停に参加させる(ステップS103)。
レジスタ132は、宛先がコア102であり更新データのレジスタ値がR2であるレジスタ値通知パケットを生成する。そして、レジスタ132は、生成したレジスタ値通知パケットを調停回路140へ出力して、コア102を調停に参加させる(ステップS104)。
その後、調停回路140は、調停を行い、コア101を更新選択コア100として選択する。また、調停回路140は、レジスタ値がコア101と一致するコア102を更新一致コア100として選択する。さらに、コア102のレジスタ値の更新通知前であることから、コア102を更新未通知コア100とする。そして、調停回路140は、レジスタ131及び132にデータ更新命令を出力する。これにより、レジスタ131及び132のレジスタ値がR2に更新される(ステップS105及びS106)。
また、調停回路140は、更新選択コア100であるコア101及び更新未通知コア100であるコア102のそれぞれに繋がる宛先通知専用線201及び202をオンにする。さらに、調停回路140は、データ通知線210を用いてレジスタ値であるR2を更新データとして出力する。これにより、調停回路140は、宛先通知専用線201及び202がオンにされたコア101及び102が有するコピーレジスタ111及び112に、更新データのレジスタ値としてR2を送信する。コピーレジスタ111及び112は、更新データの入力を受けて、レジスタ値をR1から待機データであるR2に更新する(ステップS107及びS108)。
レジスタ131及び132は、データ更新完了通知を中央レジスタ操作部120へ送信する(ステップS109及びS110)。これにより、レジスタ値の更新処理が完了する。
図5は、実施例1に係るCPUにおけるレジスタ値の更新処理のフローチャートである。次に、図5を参照して、本実施例に係るCPU10におけるレジスタ値の更新処理の流れを説明する。
中央レジスタ操作部120は、1つ以上のコア100からレジスタの制御命令を受信する(ステップS1)。
次に、中央レジスタ操作部120は、受信した制御命令にしたがい対応するレジスタ130を制御する。各レジスタ130は、中央レジスタ操作部120からの制御を受けて、レジスタ値を更新するか否かを判定する(ステップS2)。
全てのレジスタ130においてレジスタ値の更新が行われない場合(ステップS2:否定)、レジスタ値の更新処理は終了する。
これに対して、いずれかのレジスタ130においてレジスタ値の更新が行われる場合(ステップS2:肯定)、レジスタ値の更新命令を受けたレジスタ130は、更新データである新しいレジスタ値を待機データとして保持する。そして、レジスタ130は、新しいレジスタ値を通知するためのレジスタ値通知パケットを生成して調停回路150へ出力して調停に参加する(ステップS3)。
調停回路150の宛先コア選択回路501は、レジスタ値通知パケットに含まれる調停に参加するコア100の情報の入力を受ける。そして、宛先コア選択回路501は、調停に参加したコア100の中から更新選択コア100を1つ選択する(ステップS4)。その後、宛先コア選択回路501は、更新選択コア100の情報及び他の調停に参加したコア100の情報をデータマッチ回路502へ出力する。
データマッチ回路502は、更新選択コア100の情報及び他の調停に参加したコア100の情報の入力を宛先コア選択回路501から受ける。そして、データマッチ回路502は、更新選択コア100の更新データであるレジスタ値が他の調停に参加したコア100の中に更新データであるレジスタ値と一致するか否かを判定する(ステップS5)。
他の調停に参加したコア100の中に更新データが更新選択コア100と一致する更新一致コア100が存在する場合(ステップS5:肯定)、データマッチ回路502は、更新一致コア100の中にレジスタ値が更新通知前の更新未通知コア100が存在するか否かを判定する(ステップS6)。
更新一致コア100の中に更新未通知コア100が存在する場合(ステップS6:肯定)、データマッチ回路502は、更新選択コア100及び更新未通知コア100に繋がるAND回路510へ入力する宛先選択信号をオンにする。これにより、調停回路150は、更新選択コア100及び更新未通知コア100に繋がる宛先通知専用線200をオンにする(ステップS7)。
その後、調停回路150は、宛先通知専用線200をオンにする信号と同様の信号をデータ更新命令として更新選択コア100及び更新未通知コア100に対応するレジスタ130へ出力する。これにより、更新選択コア100及び更新未通知コア100に対応するレジスタ130のレジスタ値が待機データに更新される。その後、レジスタ値が更新されたレジスタ130は、更新完了通知を中央レジスタ操作部120へ出力する(ステップS8)。その後、レジスタ値の更新処理は、ステップS11へ進む。
一方、他の調停に参加したコア100の中に更新データが更新選択コア100と一致する更新一致コア100が無い場合(ステップS5:否定)及び更新一致コア100の中に更新未通知コア100が存在しない場合(ステップS6:否定)、以下の処理が行われる。データマッチ回路502は、更新選択コア100に繋がるAND回路510へ入力する宛先選択信号をオンにする。これにより、調停回路150は、更新選択コア100に繋がる宛先通知専用線200をオンにする(ステップS9)。
その後、調停回路150は、宛先通知専用線200をオンにする信号と同様の信号をデータ更新命令として更新選択コア100に対応するレジスタ130へ出力する。これにより、更新選択コア100に対応するレジスタ130のレジスタ値が待機データに更新される。その後、レジスタ値が更新されたレジスタ130は、更新完了通知を中央レジスタ操作部120へ出力する(ステップS10)。その後、レジスタ値の更新処理は、ステップS11へ進む。
次に、調停回路150は、宛先通知専用線200がオンにされたコア100のコピーレジスタ110に対して更新データであるレジスタ値を送信して、コピーレジスタ110が保持するレジスタ値を新しいレジスタ値に更新する(ステップS11)。
以上に説明したように本実施例に係るプロセッサは、特定のコアのレジスタ値を更新する場合に、同じ値にレジスタ値を更新するコアがあれば、特定のコア及び同じ値にレジスタ値を更新するコアをまとめてレジスタ値の更新を行う。これにより、プロセッサは、複数のレジスタ値の書き換えを行う場合の時間を短縮することが可能となる。例えばコア間におけるバリア同期を行う場合、多数のコアに同じレジスタ値を通知することになり、レジスタ値の通知の遅延を削減することができ、演算性能を向上させることができる。また、レジスタ値を通知するための専用線などの増設が無いため、配線面積の増加を抑えることが可能となる。
図6は、実施例2に係る調停回路の詳細を表すブロック図である。本実施例に係るCPU10は、更新データによる更新が行われる前に追加のレジスタ値の更新命令を受信した場合に、後続のレジスタ値更新命令を実行することが実施例1と異なる。以下の説明では、実施例1と同様の各部の動作については説明を省略する。
図6に示すように、本実施例に係る調停回路150は、データマッチ回路502からコア100へ延びるデータ通知線210が分岐され、各レジスタ130に接続される。レジスタ130は、データ通知線210から入力されたレジスタ値と待機データとして保持するレジスタ値とを比較する機能を有する。
レジスタ130は、更新データである新たなレジスタ値の入力を中央レジスタ操作部120から受けると、更新データであるレジスタ値を待機データとして保持する。そして、レジスタ130は、更新データであるレジスタ値を通知するためのレジスタ値通知パケットを生成して調停回路150へ出力することで、対応するコア100を調停に参加させる。
ここで、調停への参加後にデータ更新命令を調停回路150から受ける前に、次の更新データとして新たなレジスタ値の入力を中央レジスタ操作部120から受けると、レジスタ130は、待機データを次の更新データとして送られてきたレジスタ値に書き換える。例えば、レジスタ130は、更新データとして第1レジスタ値の入力を受けた場合に調停参加を行い、その後の第1レジスタ値へのデータ更新命令を受ける前に、次の更新データとして第2レジスタ値の入力を受けた場合について説明する。この場合、レジスタ130は、待機データを第1レジスタ値とした保持した後に、待機データを第1レジスタ値から第2レジスタ値へ書き換える。
また、調停に参加したレジスタ130のうち更新選択コア100及び更新未選択コアに対応するレジスタ130は、データ更新命令を調停回路150から受ける。この際、本実施例では、レジスタ130は、更新データの入力をデータ通知線210経由で調停回路150から受ける。そして、レジスタ130は、待機データと更新データとが一致していれば、レジスタ値を待機データに更新して、更新完了通知を中央レジスタ操作部120へ出力する。
これに対して、待機データと更新データとが一致していなければ、レジスタ130は、レジスタ値の更新を行わず、待機データを更新データであるレジスタ値とするレジスタ値通知パケットを送信して調停に再度参加する。そして、レジスタ130は、次のデータ更新命令を受信して待機データと更新データとが一致していれば、レジスタ値を待機データに更新した上で、更新完了通知を中央レジスタ操作部120へ出力する。
例えば、レジスタ130が、第1レジスタ値によるレジスタ値の更新指示に基づいて参加した調停に対するレジスタ値の更新処理が未完了の状態のうちに次の新しい第2レジスタの更新指示を受信した場合で説明する。ここで、レジスタ値の更新処理が未完了の状態とは、以下の2つの状態を満たす場合である。1つは、データマッチ回路502が更新選択コア100及び調停に参加した他のコア100の情報を宛先コア選択回路501から受信して宛先選択処理を開始した後の状態である。また、他の1つは、データマッチ回路502により宛先として選択されたコア100に対応するレジスタ130にデータ更新命令が届いていない状態である。以下では、この状態を、「前の更新処理が未完了の状態」と呼ぶ。
この場合、第2レジスタ値を待機データとして保持するレジスタ130は、第1レジスタ値を更新データとするデータ更新命令を調停回路150から受ける。そして、レジスタ130は、更新データとして通知された第1レジスタ値と待機データである第2レジスタ値とが異なるため、レジスタ値の更新を行わず待機する。この場合、レジスタ130は、更新完了通知の中央レジスタ操作部120への出力も行わない。
その後、レジスタ130は、さらに第2レジスタ値を更新データとするデータ更新命令を調停回路150から受ける。そして、レジスタ130は、通知された更新データと待機データとがいずれも第2レジスタ値であり一致することを確認する。その後、レジスタ130は、通知された第1レジスタ値と待機データである第2レジスタ値とが一致するので、レジスタ値の更新を実行する。この場合、レジスタ130は、更新完了通知の中央レジスタ操作部120へ出力する。
調停回路150の宛先コア選択回路501は、調停を行った後に、調停に参加したコア100に対応するレジスタ130から更新データである新しいレジスタ値を通知するレジスタ値通知パケットの入力を受ける。ここで、前回の調停で選択された更新選択コア100や更新未通知コア100に対応するレジスタ130にデータ更新命令が送信済みの場合、宛先コア選択回路501は、レジスタ値通知パケットで宛先として通知されたコア100を参加させて調停を行う。これに対して、前の更新処理が未完了の状態である場合、宛先コア選択回路501は、通知されたレジスタ値の情報をデータマッチ回路502へ送信する。
調停回路150のデータマッチ回路502は、更新選択コア100のレジスタ値の入力を宛先コア選択回路501から受ける。そして、データマッチ回路502は、更新未通知コア100が存在する場合、その更新未通知コア100を抽出する。ここでは、更新未通知コア100が存在する場合で説明する。ただし、更新未通知コア100が無い場合には、データマッチ回路502は、更新選択コア100に限定して以下の処理を実行する。
データマッチ回路502は、更新選択コア100及び更新未通知コア100のそれぞれに繋がるAND回路510に宛先選択信号を出力する。これにより、更新選択コア100及び更新未通知コア100に接続される宛先通知専用線200がオンになるとともに、更新選択コア100及び更新未通知コア100のそれぞれに対応するレジスタ130に、データ更新命令が入力される。
ここで、前回の調停が行われた後にレジスタ130へデータ更新命令を出力した後であれば、データマッチ回路502は、更新選択コア100及び調停に参加した他のコア100の情報の入力を宛先コア選択回路501から受ける。
これに対して、前の更新処理が未完了の状態で、前回の調停における更新選択コア100又は更新未通知コア100のいずれかから次のレジスタ値通知パケットが送信された場合、データマッチ回路502は、以下の処理を行う。ここでは、前の更新処理が未完了の状態で、レジスタ値通知パケットを送信した前回の調停における更新選択コア100又は更新未通知コア100を、「追加更新コア100」と呼ぶ。
この場合、データマッチ回路502は、追加更新コア100から送信されたレジスタ値通知パケットに含まれる新たなレジスタ値の情報の入力を宛先コア選択回路501から受ける。その後、データマッチ回路502は、追加更新コア100から通知された新たなレジスタ値を保持しつつ、前回の調停における更新選択コア100及び更新未通知コア100のそれぞれに繋がるAND回路510に宛先選択信号を出力する。これにより、前回の調停における更新選択コア100及び更新未通知コア100のそれぞれに対応するレジスタ130にデータ更新命令が送信される。さらに、データマッチ回路502は、前回の調停に対応するレジスタ値の更新に使用した更新データをデータ通知線210へ出力するとともに、各レジスタ130へ出力する。その後、データマッチ回路502は、追加更新コア100に繋がるAND回路510に宛先選択信号を出力して、追加更新コア100に繋がる宛先通知専用線200をオンにする。これにより、追加更新コア100に対応するレジスタ130にデータ更新命令が送信される。さらに、データマッチ回路502は、保持する追加更新コア100から通知された新たなレジスタ値をデータ通知線210へ出力するとともに、各レジスタ130へ出力する。
例えば、前回の調停に対応するレジスタ値の更新処理における更新データが第1レジスタ値であり、その後、追加更新コア100から更新データとして第2レジスタ値が送信された場合で説明する。データマッチ回路502は、前回の調停に対応する処理として、追加更新コア100を含む前回の調停における更新選択コア100及び更新未通知コア100のそれぞれに繋がるAND回路510に宛先選択信号を出力する。さらに、データマッチ回路502は、更新データとして第1レジスタ値の情報を各レジスタ130へ出力する。そのデータマッチ回路502は、追加の更新処理として、追加更新コア100に繋がるAND回路510に宛先選択信号を出力する。さらに、データマッチ回路502は、更新データとして第2レジスタ値の情報を各レジスタ130へ出力する。
図7は、実施例2に係る衝突が発生しない場合のレジスタ値の更新処理のシーケンス図である。この場合、レジスタ131及び132、並びに、コピーレジスタ111及び112は、レジスタ値としてR1を保持する状態から処理が開始される。ここでは、レジスタ131及び132が保持するレジスタ値がR1からR2に更新され、データマッチ回路502が宛先選択処理を開始する前に、レジスタ131及び132が保持するレジスタ値がR2からR3に更新される場合を例に説明する。
中央レジスタ操作部120は、レジスタ131及び132にレジスタ値であるR2を送信してレジスタ値の更新指示を行う(ステップS201及びS202)。
レジスタ131は、レジスタ値としてR1を維持しつつ待機データとしてR2を保持する。次に、レジスタ131は、宛先がコア101であり更新データのレジスタ値がR2であるレジスタ値通知パケットを生成する。そして、レジスタ131は、生成したレジスタ値通知パケットを調停回路140へ出力して調停に参加する。調停回路150は、コア101に対する更新データとしてR2のレジスタ値を取得する(ステップS203)。
レジスタ132は、レジスタ値としてR1を維持しつつ待機データとしてR2を保持する。次に、レジスタ132は、宛先がコア102であり更新データのレジスタ値がR2であるレジスタ値通知パケットを生成する。そして、レジスタ132は、生成したレジスタ値通知パケットを調停回路140へ出力して調停に参加する。調停回路150は、コア102に対する更新データとしてR2のレジスタ値を取得する(ステップS204)。
その後、データマッチ回路502が宛先選択処理を開始する前に、中央レジスタ操作部120が、レジスタ131及び132にレジスタ値であるR3を送信してレジスタ値の更新指示を行う(ステップS205及びS206)。
レジスタ131は、レジスタ値としてR1を維持しつつ保持する待機データをR2からR3に書き換える。次に、レジスタ131は、宛先がコア101であり更新データのレジスタ値がR3であるレジスタ値通知パケットを生成する。そして、レジスタ131は、生成したレジスタ値通知パケットを調停回路140へ出力して調停に参加する。調停回路150は、コア101に対する更新データとして新たにR3のレジスタ値を取得して、前に保持していたR2から書き換える(ステップS207)。
レジスタ132は、レジスタ値としてR1を維持しつつ保持する待機データをR2からR3に書き換える。次に、レジスタ132は、宛先がコア102であり更新データのレジスタ値がR2であるレジスタ値通知パケットを生成する。そして、レジスタ132は、生成したレジスタ値通知パケットを調停回路140へ出力して調停に参加する。調停回路150は、コア102に対する更新データとして新たにR3のレジスタ値を取得して、前に保持していたR2から書き換える(ステップS208)。
調停回路140は、更新データをR3のレジスタ値とするレジスタ値通知パケットにしたがって調停を行い、コア101を更新選択コア100として選択する。また、調停回路140は、レジスタ値がコア101と一致するコア102を更新一致コア100として選択する。さらに、コア102のレジスタ値の更新通知前であることから、コア102を更新未通知コア100とする。そして、調停回路140は、レジスタ131及び132にデータ更新命令を出力する。これとともに、調停回路140は、更新データとしてR3のレジスタ値をレジスタ131及び132へ出力する。この場合、レジスタ131及び132は、待機データ及び受信した更新データのいずれもR3のレジスタ値であるので、レジスタ値がR1から待機データであるR3に更新される(ステップS209及びS210)。
また、調停回路140は、更新選択コア100であるコア101及び更新未通知コア100であるコア102のそれぞれに繋がる宛先通知専用線201及び202をオンにする。さらに、調停回路140は、データ通知線210を用いてレジスタ値であるR3を更新データとして出力する。これにより、調停回路140は、宛先通知専用線201及び202がオンにされたコア101及び102が有するコピーレジスタ111及び112に、更新データのレジスタ値としてR3を送信する。コピーレジスタ111及び112は、更新データの入力を受けて、レジスタ値をR1からR3に更新する(ステップS211及び212)。
レジスタ131及び132は、データ更新完了通知の送信は行わず、以降は後続の更新命令を受け続ける。以上で、1回のレジスタ値の更新処理が完了する。
図8は、実施例2に係る衝突が発生する場合のレジスタ値の更新処理のシーケンス図である。この場合、レジスタ131及び132、並びに、コピーレジスタ111及び112は、レジスタ値としてR1を保持する状態から処理が開始される。ここでは、レジスタ131及び132が保持するレジスタ値がR1からR2に更新され、前の更新処理が未完了の状態で、レジスタ131が保持するレジスタ値がR2からR3に更新される場合を例に説明する。
中央レジスタ操作部120は、レジスタ131及び132にレジスタ値であるR2を送信してレジスタ値の更新指示を行う(ステップS301及びS302)。
レジスタ131は、レジスタ値としてR1を維持しつつ待機データとしてR2を保持する。次に、レジスタ131は、宛先がコア101であり更新データのレジスタ値がR2であるレジスタ値通知パケットを生成する。そして、レジスタ131は、生成したレジスタ値通知パケットを調停回路140へ出力して調停に参加する。調停回路150は、コア101に対する更新データとしてR2のレジスタ値を取得する(ステップS303)。
レジスタ132は、レジスタ値としてR1を維持しつつ待機データとしてR2を保持する。次に、レジスタ132は、宛先がコア102であり更新データのレジスタ値がR2であるレジスタ値通知パケットを生成する。そして、レジスタ132は、生成したレジスタ値通知パケットを調停回路140へ出力して調停に参加する。調停回路150は、コア102に対する更新データとしてR2のレジスタ値を取得する(ステップS304)。
その後、前の更新処理が未完了の状態で、中央レジスタ操作部120が、レジスタ131にレジスタ値であるR3を送信してレジスタ値の更新指示を行う(ステップS305)。
レジスタ131は、レジスタ値としてR1を維持しつつ保持する待機データをR2からR3に書き換える。次に、レジスタ131は、宛先がコア101であり更新データのレジスタ値がR3であるレジスタ値通知パケットを生成する。そして、レジスタ131は、生成したレジスタ値通知パケットを調停回路140へ出力する。調停回路150は、前の更新処理を進めつつ、コア101に対する追加の更新データとして新たにR3のレジスタ値を取得する(ステップS306)。
調停回路140は、更新データをR2のレジスタ値とするレジスタ値通知パケットにしたがって調停を行い、コア101を更新選択コア100として選択する。また、調停回路140は、レジスタ値がいずれもR2でありコア101と一致するコア102を更新一致コア100として選択する。さらに、コア102のレジスタ値の更新通知前であることから、コア102を更新未通知コア100とする。そして、調停回路140は、レジスタ131及び132にデータ更新命令を出力する。これとともに、調停回路140は、更新データとしてR2のレジスタ値をレジスタ131及び132へ出力する。この場合、レジスタ131は、待機データがR3のレジスタ値であり受信した更新データがR2のレジスタ値であり一致しないため、レジスタ値の更新は行わずレジスタ値をR1のまま維持する(ステップS307)。これに対して、レジスタ132は、待機データ及び受信した更新データのいずれもR2のレジスタ値であり一致するので、レジスタ値をR1から待機データであるR2に更新する(ステップS308)。
また、調停回路140は、更新選択コア100であるコア101及び更新未通知コア100であるコア102のそれぞれに繋がる宛先通知専用線201及び202をオンにする。さらに、調停回路140は、データ通知線210を用いてレジスタ値であるR3を更新データとして出力する。これにより、調停回路140は、宛先通知専用線201及び202がオンにされたコア101及び102が有するコピーレジスタ111及び112に、更新データのレジスタ値としてR2を送信する。コピーレジスタ111及び112は、更新データの入力を受けて、レジスタ値をR1からR2に更新する(ステップS309及びS310)。
その後、調停回路140は、新たな更新データとしてR3のレジスタ値の入力を受けたレジスタ131にデータ更新命令を出力する。これとともに、調停回路140は、更新データとしてR3のレジスタ値をレジスタ131へ出力する。この場合、レジスタ131は、待機データ及び受信した更新データがR3のレジスタ値であり一致するので、レジスタ値をR1から待機データであるR3に更新する(ステップS311)。
また、調停回路140は、更新選択コア100であるコア101に繋がる宛先通知専用線201及び202をオンにする。さらに、調停回路140は、データ通知線210を用いてレジスタ値であるR3を更新データとして出力する。これにより、調停回路140は、宛先通知専用線201及び202がオンにされたコア101及び102が有するコピーレジスタ111に、更新データのレジスタ値としてR3を送信する。コピーレジスタ111は、更新データの入力を受けて、レジスタ値をR2からR3に更新する(ステップS312)。これにより、1回のレジスタ値の更新処理が完了する。
図9は、実施例2に係るCPUにおけるレジスタ値の更新処理のフローチャートである。次に、図9を参照して、本実施例に係るCPU10におけるレジスタ値の更新処理の流れを説明する。
中央レジスタ操作部120は、1つ以上のコア100からレジスタの制御命令を受信する(ステップS21)。
次に、中央レジスタ操作部120は、受信した制御命令にしたがい対応するレジスタ130を制御する。各レジスタ130は、中央レジスタ操作部120からの制御を受けて、レジスタ値を更新するか否かを判定する(ステップS22)。
全てのレジスタ130においてレジスタ値の更新が行われない場合(ステップS22:否定)、レジスタ値の更新処理は終了する。
これに対して、いずれかのレジスタ130においてレジスタ値の更新が行われる場合(ステップS22:肯定)、レジスタ値の更新命令を受けたレジスタ130は、更新データである新しいレジスタ値を待機データとして保持する。そして、レジスタ130は、新しいレジスタ値を通知するためのレジスタ値通知パケットを生成して調停回路150へ出力して調停に参加する(ステップS23)。
調停回路150の宛先コア選択回路501は、レジスタ値通知パケットに含まれる調停に参加するコア100の情報の入力を受ける。そして、宛先コア選択回路501は、調停に参加したコア100の中から更新選択コア100を1つ選択する(ステップS24)。その後、宛先コア選択回路501は、更新選択コア100の情報及び他の調停に参加したコア100の情報をデータマッチ回路502へ出力する。
データマッチ回路502は、更新選択コア100の情報及び他の調停に参加したコア100の情報の入力を宛先コア選択回路501から受ける。そして、データマッチ回路502は、更新選択コア100の更新データであるレジスタ値が他の調停に参加したコア100の中に更新データであるレジスタ値と一致するか否かを判定する(ステップS25)。
他の調停に参加したコア100の中に更新データが更新選択コア100と一致する更新一致コア100が存在する場合(ステップS25:肯定)、データマッチ回路502は、更新一致コア100の中にレジスタ値が更新通知前の更新未通知コア100が存在するか否かを判定する(ステップS26)。
更新一致コア100の中に更新未通知コア100が存在する場合(ステップS26:肯定)、データマッチ回路502は、更新選択コア100及び更新未通知コア100に繋がるAND回路510へ入力する宛先選択信号をオンにする。これにより、調停回路150は、更新選択コア100及び更新未通知コア100に繋がる宛先通知専用線200をオンにする(ステップS27)。
次に、各レジスタ130は、データ更新通知及び更新データを調停回路150から受信する。そして、各レジスタ130が通知された更新データと待機データとが一致するか否かを判定することで、更新データと待機データとが一致しないレジスタ130が存在するか否かが判定される(ステップS28)。
更新データと待機データとが一致しないレジスタ130が存在する場合(ステップS28:肯定)、更新データと待機データとが一致しないレジスタ130は、調停に再度参加する(ステップS29)。ここでは、更新データと待機データとが一致しないレジスタ130を「不一致レジスタ130」と呼ぶ。
そして、調停回路150は、宛先通知専用線200をオンにする信号と同様の信号をデータ更新命令として、不一致レジスタ130を除く更新選択コア100及び更新未通知コア100に対応するレジスタ130へ出力する。これにより、不一致レジスタ130を除く更新選択コア100及び更新未通知コア100に対応するレジスタ130のレジスタ値が待機データに更新される(ステップS30)。その後、レジスタ値の更新処理は、不一致例ジスタ130に関する処理と、不一致レジスタ130を除く更新選択コア100及び更新未通知コア100に対応するレジスタ130に関する処理の2つに分岐する。不一致レジスタ130を除く更新選択コア100及び更新未通知コア100に対応するレジスタ130に関する処理はステップS31へ進み、不一致例ジスタ130に関する処理はステップS24へ戻る。
調停回路150は、宛先通知専用線200がオンにされたコア100のコピーレジスタ110に対して更新データであるレジスタ値を送信して、コピーレジスタ110が保持するレジスタ値を新しいレジスタ値に更新する(ステップS31)。その後、レジスタ値の更新処理は終了する。
これに対して、更新データと待機データとが一致しないレジスタ130が存在しない場合(ステップS28:否定)、調停回路150は、宛先通知専用線200をオンにする信号と同様の信号をデータ更新命令として更新選択コア100及び更新未通知コア100に対応するレジスタ130へ出力する。これにより、更新選択コア100及び更新未通知コア100に対応するレジスタ130のレジスタ値が待機データに更新される(ステップS32)。その後、レジスタ値の更新処理は、ステップS35へ進む。
一方、他の調停に参加したコア100の中に更新データが更新選択コア100と一致する更新一致コア100が無い場合(ステップS25:否定)、レジスタ値の更新処理は、ステップS33へ進む。同様に、更新一致コア100の中に更新未通知コア100が存在しない場合(ステップS26:否定)も、レジスタ値の更新処理は、ステップS33へ進む。この場合、データマッチ回路502は、更新選択コア100に繋がるAND回路510へ入力する宛先選択信号をオンにする。これにより、調停回路150は、更新選択コア100に繋がる宛先通知専用線200をオンにする(ステップS33)。
その後、調停回路150は、宛先通知専用線200をオンにする信号と同様の信号をデータ更新命令として更新選択コア100に対応するレジスタ130へ出力する。これにより、更新選択コア100に対応するレジスタ130のレジスタ値が待機データに更新される。その後、レジスタ値が更新されたレジスタ130は、更新完了通知を中央レジスタ操作部120へ出力する(ステップS34)。その後、レジスタ値の更新処理は、ステップS35へ進む。
その後、調停回路150は、宛先通知専用線200がオンにされたコア100のコピーレジスタ110に対して更新データであるレジスタ値を送信して、コピーレジスタ110が保持するレジスタ値を新しいレジスタ値に更新する(ステップS35)。その後、レジスタ値の更新処理は終了する。
以上に説明したように本実施例に係るプロセッサは、レジスタが保持する待機データと更新に使用される更新データとが一致しない場合に、レジスタ値の更新及び中央レジスタ操作部への更新完了通知を行わない。これにより、適切なレジスタ値の更新が行われていない状態での更新完了通知を抑制でき、レジスタ値の更新タイミングとデータの送出タイミングのずれによる誤作動を防ぐことが可能となる。
1 情報処理装置
10 CPU
11 中央制御部
12 キャッシュ
13 MACインタフェース
14 外部バスインタフェース
20 DIMM
30 I/Oデバイス
100~104 コア
110~114 コピーレジスタ
120 中央レジスタ操作部
130~134 レジスタ
150 調停回路
200~204 宛先通知専用線
210 データ通知線
501 宛先コア選択回路
502 データマッチ回路
510~514 AND回路
10 CPU
11 中央制御部
12 キャッシュ
13 MACインタフェース
14 外部バスインタフェース
20 DIMM
30 I/Oデバイス
100~104 コア
110~114 コピーレジスタ
120 中央レジスタ操作部
130~134 レジスタ
150 調停回路
200~204 宛先通知専用線
210 データ通知線
501 宛先コア選択回路
502 データマッチ回路
510~514 AND回路
Claims (7)
- 個別の宛先通知専用線がそれぞれに接続された複数のコアと、
いくつかの前記コアのそれぞれを宛先とする複数のパケットを受信して調停を行い、前記複数のパケットの宛先となる前記コアの中から1つの第1コアを選択する宛先コア選択回路と、
前記宛先コア選択回路により選択された前記第1コアに対するパケットに含まれる第1送信データと、前記調停への参加の宛先となる前記第1コア以外の前記コアに対するパケットに含まれる第2送信データとを比較して、前記第2送信データが前記第1送信データに一致した1つ以上の第2コアを抽出し、前記宛先通知専用線を用いて前記第1コア及び前記第2コアを宛先に指定して、前記第1送信データをデータ通知線経由で送信するデータマッチ回路と
を備えたことを特徴とするプロセッサ。 - 前記データマッチ回路は、前記第1コア及び前記第2コアに接続された前記宛先通知専用線を用いて前記第1コア及び前記第2コアを有効にして、前記第1送信データをデータ通知線経由で、有効にされた前記第1コア及び前記第2コアに対して送信することを特徴とする請求項1に記載のプロセッサ。
- 各前記コアのそれぞれに対応する複数のレジスタをさらに備え、
前記データマッチ回路は、前記いくつかのコアのそれぞれを宛先として、前記第1送信データ又は前記第2送信データとしてレジスタ値を通知する調停参加のための前記パケットを、前記いくつかのコアに対応する前記レジスタから受信して、示す前記レジスタ値が前記第1送信データと一致する前記第2送信データを含む前記パケットの前記宛先である前記第2コアを抽出する
ことを特徴とする請求項1又は2に記載のプロセッサ。 - 前記レジスタは、保持する第1レジスタ値と新たに通知された第2レジスタ値とに差分がある場合に、前記第2レジスタ値を通知する前記調停参加のための前記パケットを前記データマッチ回路に送信することを特徴とする請求項3に記載のプロセッサ。
- 前記データマッチ回路は、前記第1コア及び前記第2コアに対して前記第1送信データを送信する際に、前記第1コア及び前記第2コアに対応する前記レジスタに対してデータ更新命令を前記第1送信データとともに送信し、
前記第1コア及び前記第2コアに対応する前記レジスタは、前記調停参加のための前記パケットを送信する場合、前記第2レジスタ値を待機データとして保持し、前記データ更新命令及び前記第1送信データを前記データマッチ回路から受信して、前記第2レジスタ値と前記第1送信データが示す前記レジスタ値とが一致した場合、前記第1レジスタ値を前記第2レジスタ値に更新して更新処理を終了し、前記第2レジスタ値と前記第1送信データが示す前記レジスタ値とが一致しない場合、前記第1レジスタ値を更新せずに前記調停参加のための前記パケットを再送信する
ことを特徴とする請求項4に記載のプロセッサ。 - プロセッサを有する情報処理装置であって、
前記プロセッサは、
個別の宛先通知専用線がそれぞれに接続された複数のコアと、
いくつかの前記コアのそれぞれを宛先とする複数のパケットを受信して調停を行い、前記複数のパケットの宛先となる前記コアの中から1つの第1コアを選択する宛先コア選択回路と、
前記宛先コア選択回路により選択された前記第1コアに対するパケットに含まれる第1送信データと、前記調停への参加の宛先となる前記第1コア以外の前記コアに対するパケットに含まれる第2送信データとを比較して、前記第2送信データが前記第1送信データに一致した1つ以上の第2コアを抽出し、前記宛先通知専用線を用いて前記第1コア及び前記第2コアを宛先に指定して、前記第1送信データをデータ通知線経由で送信するデータマッチ回路と
を備えたことを特徴とする情報処理装置。 - 個別の宛先通知専用線がそれぞれに接続された複数のコアのうちいくつかの前記コアのそれぞれを宛先とする複数のパケットを受信して調停を行い、前記複数のパケットの宛先となる前記コアの中から1つの第1コアを選択し、
選択した前記第1コアに対するパケットに含まれる第1送信データと、前記調停への参加の宛先となる前記第1コア以外の前記コアに対するパケットに含まれる第2送信データとを比較して、前記第2送信データが前記第1送信データに一致した1つ以上の第2コアを抽出し、前記宛先通知専用線を用いて前記第1コア及び前記第2コアを宛先に指定して、前記第1送信データをデータ通知線経由で送信する
処理をコンピュータに実行させることを特徴とする情報処理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021199289A JP2023084904A (ja) | 2021-12-08 | 2021-12-08 | プロセッサ、情報処理装置及び情報処理方法 |
US17/897,611 US12093754B2 (en) | 2021-12-08 | 2022-08-29 | Processor, information processing apparatus, and information processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021199289A JP2023084904A (ja) | 2021-12-08 | 2021-12-08 | プロセッサ、情報処理装置及び情報処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023084904A true JP2023084904A (ja) | 2023-06-20 |
Family
ID=86607524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021199289A Pending JP2023084904A (ja) | 2021-12-08 | 2021-12-08 | プロセッサ、情報処理装置及び情報処理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US12093754B2 (ja) |
JP (1) | JP2023084904A (ja) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9367462B2 (en) * | 2009-12-29 | 2016-06-14 | Empire Technology Development Llc | Shared memories for energy efficient multi-core processors |
US8738860B1 (en) * | 2010-10-25 | 2014-05-27 | Tilera Corporation | Computing in parallel processing environments |
WO2013018218A1 (ja) * | 2011-08-03 | 2013-02-07 | 富士通株式会社 | 同期制御装置、演算処理装置、並列計算機システムおよび同期制御装置の制御方法 |
JP6074932B2 (ja) * | 2012-07-19 | 2017-02-08 | 富士通株式会社 | 演算処理装置及び演算処理方法 |
KR20140139923A (ko) * | 2013-05-28 | 2014-12-08 | 한국전자통신연구원 | 멀티코어 프로세서 및 멀티코어 프로세서 시스템 |
US9928115B2 (en) * | 2015-09-03 | 2018-03-27 | Apple Inc. | Hardware migration between dissimilar cores |
JP7070023B2 (ja) | 2018-04-23 | 2022-05-18 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
US11037050B2 (en) * | 2019-06-29 | 2021-06-15 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator |
-
2021
- 2021-12-08 JP JP2021199289A patent/JP2023084904A/ja active Pending
-
2022
- 2022-08-29 US US17/897,611 patent/US12093754B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US12093754B2 (en) | 2024-09-17 |
US20230176932A1 (en) | 2023-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3529706B1 (en) | Gpu remote communication with triggered operations | |
JP5304194B2 (ja) | バリア同期装置、バリア同期システム及びバリア同期装置の制御方法 | |
US8190805B2 (en) | Information processing apparatus and method for reconfiguring the information processing apparatus | |
JP2006338538A (ja) | ストリームプロセッサ | |
JP2008310832A (ja) | 高レベル・データ・リンク・コントローラから多数個のディジタル信号プロセッサ・コアに信号を分配するための装置と方法 | |
CN116880773B (zh) | 一种内存扩展装置及数据处理方法、系统 | |
JP2007034392A (ja) | 情報処理装置及びデータ処理方法 | |
EP1650667B1 (en) | Apparatus for controlling a multi-processor system, scalable node, scalable multi-processor system, and method of controlling a multi-processor system | |
US9774671B2 (en) | Parallel processing system and operation method of parallel processing system | |
US20070156937A1 (en) | Data transfer in multiprocessor system | |
JP2010176442A (ja) | ディスクリプタ転送装置、i/oコントローラ、及びディスクリプタ転送方法 | |
US20130238871A1 (en) | Data processing method and apparatus, pci-e bus system, and server | |
JP5304815B2 (ja) | マイクロコンピュータ | |
JP2023084904A (ja) | プロセッサ、情報処理装置及び情報処理方法 | |
JP4839489B2 (ja) | ディスクリプタ制御方法、ダイレクトメモリ転送装置およびプログラム | |
JP2000349816A (ja) | パケットデータ処理装置及びそれを用いたパケット中継装置 | |
JP2011070259A (ja) | データ転送装置及びデータ転送方法 | |
JP2004086798A (ja) | マルチプロセッサシステム | |
JPH07234841A (ja) | 並列処理計算機 | |
US9697122B2 (en) | Data processing device | |
JP2000099452A (ja) | Dma制御装置 | |
JP7027145B2 (ja) | 通信装置、通信装置の制御方法およびプログラム | |
CN115658601A (zh) | 多核处理器系统及其控制方法 | |
JP2002175265A (ja) | 直接メモリ・アクセス・コントローラを有するディジタル信号プロセッサにおける複数の構成素子間での信号群交換装置および方法 | |
WO2011030498A1 (ja) | データ処理装置及びデータ処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240808 |