JP2009075948A - Multicore processor - Google Patents
Multicore processor Download PDFInfo
- Publication number
- JP2009075948A JP2009075948A JP2007245590A JP2007245590A JP2009075948A JP 2009075948 A JP2009075948 A JP 2009075948A JP 2007245590 A JP2007245590 A JP 2007245590A JP 2007245590 A JP2007245590 A JP 2007245590A JP 2009075948 A JP2009075948 A JP 2009075948A
- Authority
- JP
- Japan
- Prior art keywords
- program
- processor core
- value
- processor
- counter
- 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
Images
Landscapes
- Hardware Redundancy (AREA)
Abstract
Description
この発明は、複数のプロセッサコアで情報処理を行うマルチコアプロセッサに関するものである。 The present invention relates to a multi-core processor that performs information processing with a plurality of processor cores.
マルチコアプロセッサでは、各プロセッサコアが個別に処理を行いながら1つのプログラムを実行することができる。この場合、上記プログラムを複数に分割して各プロセッサコアに割り当てておく必要がある。プログラムの分割方法としては、1つのプログラムを自動並列化コンパイラで自動的に分割する方法の他、プログラム作者が各プロセッサコアで実行する処理間の連携を考慮して複数のプログラムに分割する方法等がある。しかしながら、いずれの方法で作成したプログラムにおいても、プログラム作者が意図した動きを実現するには、プロセッサコア間でのデータの授受や処理タイミングの同期をとる必要がある。 In a multi-core processor, each processor core can execute one program while performing processing individually. In this case, the program needs to be divided into a plurality of parts and assigned to each processor core. As a program dividing method, in addition to a method of automatically dividing one program by an automatic parallelizing compiler, a method of dividing a program into a plurality of programs in consideration of cooperation between processes executed by each processor core, etc. There is. However, in any program created by any of the methods, it is necessary to synchronize data transmission and processing timing between the processor cores in order to realize the movement intended by the program author.
プロセッサコア間の同期をとる技術としては、例えば特許文献1や特許文献2に開示される、バリア同期と呼ばれる同期方式がある。この同期方式では、全てのプロセッサコアが一定の処理段階(バリア)に達したことが保証された時点で、各プロセッサコアが次の処理段階へ進むように制御される。
As a technique for synchronizing processor cores, there is a synchronization method called barrier synchronization disclosed in
また、特許文献3には、同期元プロセッサコアと同期先プロセッサコアという対応関係が予め設定されたプロセッサコア間での同期方式が記載されている。この同期方式は、バリア同期のようにプロセッサコア間の実行状況を保証するものではない。具体的には、同期元プロセッサコアが、共有レジスタ等の共有領域の値をインクリメント若しくはデクリメントし、同期先プロセッサコアが、ローカル領域に格納している値と上記共有領域の値とを比較した結果に応じて同期元プロセッサコアの動作と同期をとっている。 Patent Document 3 describes a synchronization method between processor cores in which a correspondence relationship between a synchronization source processor core and a synchronization destination processor core is set in advance. This synchronization method does not guarantee the execution status between processor cores as in barrier synchronization. Specifically, the synchronization source processor core increments or decrements the value of the shared area such as the shared register, and the synchronization destination processor core compares the value stored in the local area with the value of the shared area. The operation is synchronized with the operation of the synchronization source processor core.
近年では、情報処理の高速化の観点からマルチコアプロセッサのプロセッサコア数を増加させる傾向がある。このように多くのプロセッサコアを搭載して効率よく処理を実行するには、各プロセッサコアの処理量を平均化する必要があり、各プロセッサコアで実行されるプログラムのサイズをさらに小さくする傾向が強まっている。このため、プロセッサコア間で連携すべき処理が多くなり、同期処理を必要とする箇所が増加している。 In recent years, there is a tendency to increase the number of processor cores of a multi-core processor from the viewpoint of speeding up information processing. In order to efficiently execute processing with such a large number of processor cores installed, it is necessary to average the processing amount of each processor core, and there is a tendency to further reduce the size of a program executed on each processor core. It is getting stronger. For this reason, the number of processes that should be coordinated between processor cores increases, and the number of places that require synchronous processing is increasing.
従来のマルチコアプロセッサは、同期に関わる全てのプロセッサコアで実行されるプログラムに同期のための処理を追加しなければならない。つまり、同期元プロセッサコアで実行するプログラムと同期先プロセッサコアで実行するプログラムの双方に同期のための処理を記述する必要がある。このため、各プロセッサコアで実行されるプログラムのサイズが増大し、実行時間が増加するという課題があった。 A conventional multi-core processor must add processing for synchronization to a program executed in all processor cores related to synchronization. That is, it is necessary to describe processing for synchronization in both the program executed in the synchronization source processor core and the program executed in the synchronization destination processor core. For this reason, the size of the program executed by each processor core increases, and there is a problem that the execution time increases.
この発明は、上記のような課題を解決するためになされたもので、各プロセッサコアで実行されるプログラムのサイズを増大させずに、簡易な構成でプロセッサコア間の同期をとることができるマルチコアプロセッサを得ることを目的とする。 The present invention has been made in order to solve the above-described problems, and can achieve synchronization between processor cores with a simple configuration without increasing the size of a program executed in each processor core. The purpose is to obtain a processor.
この発明に係るマルチコアプロセッサは、複数のプロセッサコアと、複数のプロセッサコアのそれぞれに対応して設けられ、自己に対応するプロセッサコアで実行されるプログラムのアドレス値を保持するプログラムカウンタと、複数のプロセッサコアのそれぞれに対応して設けられ、自己に対応するプロセッサコアから指定された同期相手のプロセッサコアに対応するプログラムカウンタの値と同期先のプログラムの実行に先行して同期相手のプロセッサコアで実行される同期元のプログラムのアドレス値との比較結果に応じて、自己に対応するプロセッサコアによる同期先のプログラムの実行可否を制御するプログラムカウンタ監視部とを備えるものである。 A multi-core processor according to the present invention includes a plurality of processor cores, a program counter that is provided corresponding to each of the plurality of processor cores and that holds an address value of a program executed by the processor core corresponding to the processor core, Provided in correspondence with each of the processor cores, the value of the program counter corresponding to the synchronization partner processor core designated from the processor core corresponding to itself and the synchronization partner processor core prior to execution of the synchronization destination program And a program counter monitoring unit that controls whether or not the synchronization target program can be executed by the processor core corresponding to the address value of the synchronization source program to be executed.
この発明によれば、複数のプロセッサコアと、複数のプロセッサコアのそれぞれに対応して設けられ、自己に対応するプロセッサコアで実行されるプログラムのアドレス値を保持するプログラムカウンタと、複数のプロセッサコアのそれぞれに対応して設けられ、自己に対応するプロセッサコアから指定された同期相手のプロセッサコアに対応するプログラムカウンタの値と同期先のプログラムの実行に先行して同期相手のプロセッサコアで実行される同期元のプログラムのアドレス値との比較結果に応じて、自己に対応するプロセッサコアによる同期先のプログラムの実行可否を制御するプログラムカウンタ監視部とを備えたので、同期元のプログラムを実行するプロセッサコアに同期のための特別な処理を追加することなく、同期元のプログラムの実行状況に応じてプロセッサコア間で同期をとることができるという効果がある。 According to the present invention, a plurality of processor cores, a program counter provided corresponding to each of the plurality of processor cores and holding an address value of a program executed by the processor core corresponding to itself, and the plurality of processor cores The program counter value corresponding to the synchronization target processor core specified by the processor core corresponding to the program and the synchronization target processor core is executed prior to the execution of the synchronization destination program. And a program counter monitoring unit for controlling whether or not the synchronization target program can be executed by the processor core corresponding to the synchronization source program according to the comparison result with the address value of the synchronization source program. Without adding special processing for synchronization to the processor core, There is an effect that can be synchronized between the processor core in accordance with the execution status of grams.
実施の形態1.
図1は、この発明の実施の形態1によるマルチコアプロセッサの構成を示すブロック図である。図1において、実施の形態1のマルチコアプロセッサ1は、プロセッサコア10,20,30,40及びプログラムカウンタ監視部13,23,33,43を備える。また、プロセッサコア10,20,30,40は、それぞれプログラムカウンタ11及び実行部12を備える。プログラムカウンタ11には、実行部12で実行されるプログラムのアドレスが保持される。なお、この実施の形態1では、原則として実行部12がアドレスを昇順にプログラムを実行するものとする。
FIG. 1 is a block diagram showing a configuration of a multi-core processor according to
実行部12は、自己を備えるプロセッサコアに割り当てられたプログラムを実行する構成要素であり、プログラムカウンタ監視部から通知される停止要求及びその解除要求に従ってプログラムの実行停止及び実行開始が制御される。また、実行部12は、自己を備えるプロセッサコアと同期して動作する他のプロセッサコアの実行部12において、自己が実行するプログラムを同期先として先行処理される同期元のプログラムの最終プログラムアドレス値を保持しており、上記同期先のプログラムを実行する直前に上記他のプロセッサコアの識別番号及び上記同期元のプログラムの最終プログラムアドレス値をプログラムカウンタ監視部に通知する。
The
プログラムカウンタ監視部13,23,33,43は、プロセッサコア10,20,30,40のそれぞれに対応して設けられ、自己に対応するプロセッサコアに搭載された実行部12とデータ送受可能に接続される。また、プログラムカウンタ監視部13,23,33,43は、実行部12が自己と接続していないプロセッサコアのプログラムカウンタ11と接続しており、その値を読み込むことが可能である。
The program
このように、プログラムカウンタ監視部13,23,33,43は、各プロセッサコア10,20,30,40の周辺回路としてそれぞれ設けられており、自己に対応するプロセッサコア以外のプロセッサコアに搭載されたプログラムカウンタ11の値を監視する。また、プログラムカウンタ監視部13,23,33,43は、プログラムカウンタ11の監視結果に応じて、プログラム実行の停止要求及びその解除要求を対応するプロセッサコアの実行部12に通知する。
As described above, the program
例えば、プログラムカウンタ監視部13は、上述したアドレス情報等の監視に必要な情報をプロセッサコア10の実行部12から取得してプロセッサコア20,30,40のプログラムカウンタ11の値を監視し、その監視結果に応じてプログラム実行の停止要求及びその解除要求をプロセッサコア10の実行部12に通知する。
For example, the program
図2は、図1中のプロセッサコアで実行されるプログラム及びプログラム間の依存関係を説明するための図である。図2において、プログラム210,220,230,240は、マルチコアプロセッサ1で実行する1つのプログラムを分割したプログラムであり、プロセッサコア10,20,30,40でそれぞれ実行される。プロセッサコア10の実行部12で実行されるプログラム210は、部分プログラム211を含んで構成される。また、プロセッサコア20の実行部12で実行されるプログラム220は、部分プログラム221,222,223を含んで構成される。
FIG. 2 is a diagram for explaining a program executed by the processor core in FIG. 1 and a dependency relationship between the programs. In FIG. 2,
図2において、部分プログラム221,222,223は、部分プログラム223、部分プログラム221、部分プログラム222の順でアドレスが昇順となるようにメモリに格納されている。プロセッサコア20の実行部12は、上記メモリからアドレスを昇順に部分プログラムを読み込んで実行することにより、図2中で矢印で示すように、部分プログラム223、部分プログラム221、部分プログラム222の順で、プログラム220を実行する。
In FIG. 2, the
また、プロセッサコア10の実行部12で実行される部分プログラム211は、プロセッサコア20の実行部12で実行される部分プログラム221との間で依存関係250が設定されている。この依存関係250は、部分プログラム221の実行終了後に部分プログラム211を実行すること、つまり同期相手のプロセッサコア20による部分プログラム221の先行処理が終了した後に、プロセッサコア10で部分プログラム211を実行する実行順の依存関係があることを示している。なお、依存関係250に関する情報としては、同期元の部分プログラム221を実行するプロセッサコア20の識別番号及び部分プログラム221の最終プログラムアドレス値があり、同期先の部分プログラム211を実行するプロセッサコア10の実行部12に保持される。
Further, a
図3は、図1中のプロセッサコアで実行されるプログラム、プログラム間の依存関係及び分岐処理を説明するための図である。図3において、プログラム310,320は、マルチコアプロセッサ1で実行する1つのプログラムを分割したプログラムであり、プロセッサコア10,20でそれぞれ実行される。プロセッサコア10の実行部12で実行されるプログラム310は、部分プログラム311,312,313,314を含んで構成される。また、プロセッサコア20の実行部12で実行されるプログラム320は、部分プログラム321,322,323を含んで構成される。
FIG. 3 is a diagram for explaining a program executed by the processor core in FIG. 1, a dependency relationship between programs, and a branch process. In FIG. 3,
図2の場合と同様に、部分プログラム311,312,313,314は、部分プログラム311、部分プログラム312、部分プログラム313、部分プログラム314の順でアドレスが昇順となるようにメモリに格納される。プロセッサコア10の実行部12は、上記メモリからアドレスを昇順に部分プログラムを読み込んで実行することにより、図3中で矢印で示すように、部分プログラム311、部分プログラム312、部分プログラム313、部分プログラム314の順で、プログラム310を実行する。
As in the case of FIG. 2, the
なお、部分プログラム314は最終プログラムアドレスに分岐命令を含んで構成されており、部分プログラム314の実行が終了した時点で部分プログラム311の実行に分岐する。これにより、プロセッサコア10のプログラムカウンタ11の値は、最も大きい部分プログラム314の最終プログラムアドレス値から、最も小さい部分プログラム311の開始プログラムアドレス値になる。
The
また、部分プログラム321,322,323についても、部分プログラム321、部分プログラム322、部分プログラム323の順でアドレスが昇順となるようにメモリに格納される。プロセッサコア20の実行部12は、上記メモリからアドレスを昇順に部分プログラムを読み込んで実行することにより、図3中で矢印で示すように、部分プログラム321、部分プログラム322、部分プログラム323の順で、プログラム320を実行する。
The
部分プログラム314と同様に、部分プログラム323も最終プログラムアドレスに分岐命令を含んで構成されており、部分プログラム323の実行が終了した時点で部分プログラム321の実行に分岐する。この場合、プロセッサコア20のプログラムカウンタ11の値は、最も大きい部分プログラム323の最終プログラムアドレス値から最も小さい部分プログラム321の開始プログラムアドレス値になる。
Similar to the
プロセッサコア10の実行部12で実行される部分プログラム312,314は、プロセッサコア20の実行部12で実行される部分プログラム321,322との間で依存関係300,302がそれぞれ設定されている。また、プロセッサコア20の実行部12で実行される部分プログラム323は、プロセッサコア10の実行部12で実行される部分プログラム312との間で依存関係301が設定されている。
The
依存関係300,302は、部分プログラム321,322の実行終了後に部分プログラム312,314を実行することを示している。依存関係300,302に関する情報としては、同期元の部分プログラム321,322を実行するプロセッサコア20の識別番号及び部分プログラム321,322の最終プログラムアドレス値があり、同期先の部分プログラム312,314を実行するプロセッサコア10の実行部12に保持される。
The
また、依存関係301は、部分プログラム312の実行終了後に部分プログラム323を実行すること、つまりプロセッサコア10による部分プログラム312の先行処理が終了した後にプロセッサコア20で部分プログラム323を実行する実行順の依存関係があることを示している。なお、依存関係301に関する情報としては、同期元の部分プログラム312を実行するプロセッサコア10の識別番号及び部分プログラム312の最終プログラムアドレス値があり、同期先の部分プログラム323を実行するプロセッサコア20の実行部12に保持される。
Further, the
次に動作について説明する。
図1及び図2を用いてアドレスを昇順にプログラムを実行する場合の動作を説明する。
プロセッサコア10,20,30,40の実行部12は、それぞれに割り当てられたプログラム210,220,230,240を実行する。ここで、各プロセッサコア10,20,30,40の実行部12は、上記メモリからアドレスを昇順に各プログラムを読み込んで実行する。
Next, the operation will be described.
The operation when the program is executed in ascending order of addresses will be described with reference to FIGS.
The
図2に示すように、部分プログラム221には、プロセッサコア10で実行される部分プログラム211との間で依存関係250が設定されている。プロセッサコア10の実行部12は、この依存関係250において同期先となる部分プログラム211の実行直前にプロセッサコア20の識別番号及び同期元の部分プログラム221の最終プログラムアドレス値を依存関係250に関する情報としてプログラムカウンタ監視部13に通知する。
As shown in FIG. 2, a
プログラムカウンタ監視部13は、依存関係250に関する情報に含まれる識別番号で特定したプロセッサコア20のプログラムカウンタ11の値を参照し、この値と依存関係250に関する情報に含まれる部分プログラム221の最終プログラムアドレス値とを比較する。ここで、プロセッサコア20のプログラムカウンタ11の値が依存関係250に関する情報で特定された部分プログラム221の最終プログラムアドレス値よりも小さいと、プログラムカウンタ監視部13は、プロセッサコア20の実行部12が部分プログラム221の実行を終了していないと判断して、プロセッサコア10の実行部12に停止要求を通知する。
The program
プロセッサコア10の実行部12は、上記停止要求を受けると、プログラム210の実行を一時停止する。この後、プログラムカウンタ監視部13は、プロセッサコア20のプログラムカウンタ11の値を逐次参照して上述の比較処理を継続する。この比較結果で部分プログラム221の実行が終了したと判定されるまで、プログラムカウンタ監視部13は、プロセッサコア10の実行部12へ停止要求を出力し続ける。これにより、プロセッサコア10の実行部12は、部分プログラム221の実行が終了するまで部分プログラム211の実行待機状態となる。
When the
上記比較処理において、プロセッサコア20のプログラムカウンタ11の値が依存関係250に関する情報で特定された部分プログラム221の最終プログラムアドレス値よりも大きくなると、プログラムカウンタ監視部13は、プロセッサコア20の実行部12が部分プログラム221の実行を終了したものと判断して、プロセッサコア10の実行部12に上記停止要求の解除要求を通知する。プロセッサコア10の実行部12では、上記解除要求を受けると、プログラム210の実行を再開し、部分プログラム211の実行を開始する。このようにして、プロセッサコア20の実行部12が実行する部分プログラム221とプロセッサコア10の実行部12が実行する部分プログラム211との間の処理順序に関する依存関係250を満足することができる。
In the comparison process, when the value of the
次に、図3に示す例を用いて動作を説明する。
図3において、依存関係300で同期先となるプロセッサコア10の実行部12は、図2の場合と同様にして、部分プログラム312の実行直前に、プロセッサコア20の識別番号及び同期元の部分プログラム321の最終プログラムアドレス値を、依存関係300に関する情報としてプログラムカウンタ監視部13に通知する。
Next, the operation will be described using the example shown in FIG.
In FIG. 3, the
プログラムカウンタ監視部13は、依存関係300に関する情報に含まれる識別番号を用いて特定したプロセッサコア20のプログラムカウンタ11の値を参照し、この値と依存関係300に関する情報に含まれる部分プログラム321の最終プログラムアドレス値とを比較する。ここで、プロセッサコア20のプログラムカウンタ11の値が、依存関係300に関する情報で特定された部分プログラム321の最終プログラムアドレス値より小さいと、プログラムカウンタ監視部13は、プロセッサコア20の実行部12が部分プログラム321の実行を終了していないと判断し、プロセッサコア10の実行部12に停止要求を通知する。
The program
プロセッサコア10の実行部12は、上記停止要求を受けると、プログラム310の実行を一時停止する。これにより、プロセッサコア10の実行部12は、部分プログラム321の実行が終了するまで、部分プログラム312の実行待機状態となる。この後、プログラムカウンタ監視部13は、プロセッサコア20のプログラムカウンタ11の値を逐次参照して、上述の比較処理を継続する。
When the
上記比較処理において、プロセッサコア20のプログラムカウンタ11の値が依存関係300に関する情報で特定された部分プログラム321の最終プログラムアドレス値よりも大きくなると、プログラムカウンタ監視部13は、プロセッサコア20の実行部12が部分プログラム321の実行を終了したものと判断して、プロセッサコア10の実行部12に上記停止要求の解除要求を通知する。プロセッサコア10の実行部12は、上記解除要求を受けると、プログラム310の実行を再開し、部分プログラム312の実行を開始する。
In the comparison process, when the value of the
なお、プロセッサコア20の実行部12は、同期元となる部分プログラム321の終了時や部分プログラム322の開始時に、プロセッサコア10の実行部12と同期をとるための処理は行わない。
The
また、プロセッサコア20の実行部12は、図2の場合と同様にして、部分プログラム323の実行直前に、プロセッサコア10の識別番号及び同期元の部分プログラム312の最終プログラムアドレス値を、依存関係301に関する情報としてプログラムカウンタ監視部23に通知する。
Similarly to the case of FIG. 2, the
プログラムカウンタ監視部23では、依存関係301に関する情報に含まれる識別番号で特定したプロセッサコア10のプログラムカウンタ11の値を参照し、この値と依存関係301に関する情報に含まれる部分プログラム312の最終プログラムアドレス値とを比較する。ここで、プロセッサコア10のプログラムカウンタ11の値が依存関係301に関する情報で特定された部分プログラム312の最終プログラムアドレス値よりも小さいと、プログラムカウンタ監視部23は、プロセッサコア10の実行部12が部分プログラム312の実行を終了していないと判断し、プロセッサコア20の実行部12に停止要求を通知する。
The program
プロセッサコア20の実行部12は、上記停止要求を受けると、プログラム320の実行を一時停止する。これにより、プロセッサコア20の実行部12は、部分プログラム312の実行が終了するまで、部分プログラム323の実行待機状態となる。この後、プログラムカウンタ監視部23は、プロセッサコア10のプログラムカウンタ11の値を逐次参照して、上述の比較処理を継続する。
When the
上記比較処理において、プロセッサコア10のプログラムカウンタ11の値が依存関係301に関する情報で特定された部分プログラム312の最終プログラムアドレス値よりも大きくなると、プログラムカウンタ監視部23は、プロセッサコア10の実行部12が部分プログラム312の実行を終了したものと判断して、プロセッサコア20の実行部12に上記停止要求の解除要求を通知する。プロセッサコア20の実行部12では、上記解除要求を受けると、プログラム320の実行を再開し、部分プログラム323の実行を開始する。
In the comparison process, when the value of the
なお、プロセッサコア10の実行部12は、同期元となる部分プログラム312の終了時や部分プログラム313の開始時に、プロセッサコア20の実行部12と同期をとるための処理は行わない。
The
続いて、分岐命令によるループ処理における動作について説明する。
プログラムカウンタ監視部13は、プロセッサコア10の実行部12から通知された部分プログラム323の最終プログラムアドレス値(分岐命令のアドレス値)とプロセッサコア20のプログラムカウンタ11の値とを比較して分岐処理に達したか否かを参照する。一方、プログラムカウンタ監視部23は、プロセッサコア20の実行部12から通知された部分プログラム314の最終プログラムアドレス値(分岐命令のアドレス値)とプロセッサコア10のプログラムカウンタ11の値とを比較して分岐処理に達したか否かを参照する。
Next, the operation in the loop processing by the branch instruction will be described.
The program
ここで、依存関係を有するプログラムを実行するプロセッサコア10,20の実行部12は、例えば以下のように動作する。これにより、互いが分岐処理に達したこと(部分プログラム314,323の最終プログラムアドレスを実行する段階)を確認してから分岐処理を実行する。
プロセッサコア10の実行部12は、部分プログラム314の最終プログラムアドレスの直前値まで処理が進み、分岐処理を実行する段階に達すると、部分プログラム314における分岐命令の実行を一時停止する。また、プロセッサコア20の実行部12は、部分プログラム323の最終プログラムアドレスの直前値まで処理が進み、分岐処理を実行する段階に達すると、部分プログラム323における分岐命令の実行を一時停止する。
Here, the
When the
このとき、プログラムカウンタ監視部13は、プロセッサコア20のプログラムカウンタ11の値が部分プログラム323の最終プログラムアドレスの直前値になると、実行停止の解除要求をプロセッサコア10の実行部12へ通知する。プロセッサコア10の実行部12は、上記解除要求を受けると、部分プログラム311へ分岐して処理を再開する。このように、プロセッサコア10の実行部12は、依存関係にあるプログラムを実行するプロセッサコア20の実行部12が分岐処理に達したことを確認した後に部分プログラム311の処理を開始する。
At this time, when the value of the
一方、プログラムカウンタ監視部23は、プロセッサコア10のプログラムカウンタ11の値が部分プログラム314の最終プログラムアドレスの直前値になると、実行停止の解除要求をプロセッサコア20の実行部12へ通知する。プロセッサコア20の実行部12は、上記解除要求を受けると、部分プログラム323へ分岐して処理を再開する。このように、プロセッサコア20の実行部12も、依存関係にあるプログラムを実行するプロセッサコア10の実行部12が分岐処理に達したことを確認した後に部分プログラム321の処理を再開する。
On the other hand, when the value of the
以上のように、この実施の形態1によれば、プロセッサコア10,20,30,40と、プロセッサコア10,20,30,40のそれぞれに対応して設けられ、自己に対応するプロセッサコアで実行されるプログラムのアドレス値を保持するプログラムカウンタ11と、プロセッサコア10,20,30,40のそれぞれに対応して設けられ、自己に対応するプロセッサコアから指定された同期相手のプロセッサコアに対応するプログラムカウンタ11の値と同期先のプログラムの実行に先行して同期相手のプロセッサコアで実行される同期元のプログラムの最終プログラムアドレス値との比較結果に応じて、自己に対応するプロセッサコアによる同期先のプログラムの実行可否を制御するプログラムカウンタ監視部13,23,33,43とを備えたので、プログラムカウンタ監視部13,23,33,43が、同期元のプログラムの実行状況に応じて同期先のプログラムの実行を待機させることができ、同期元のプログラムを実行するプロセッサコアに同期のための特別な処理を追加することなく、プロセッサコア間の同期をとることができる。
As described above, according to the first embodiment, the
なお、上記実施の形態1では、回路構成としてプロセッサコアの数が4つである場合を示し、2つのプロセッサコア間での処理について説明したが、4つ以外のコア数で構成してもよく、また3つ以上のプロセッサコア間で処理を行う場合であっても有効である。 In the first embodiment, the case where the number of processor cores is four is shown as the circuit configuration, and the processing between the two processor cores has been described. However, the number of cores other than four may be configured. It is also effective when processing is performed between three or more processor cores.
実施の形態2.
図4は、この発明の実施の形態2によるマルチコアプロセッサの構成を示すブロック図であり、特にプログラムカウンタ監視部の詳細な構成を示している。なお、図1で示した構成要素に相当するものには同一符号を付している。図4において、実施の形態2によるプログラムカウンタ監視部13は、プログラムレジスタ400及び監視実行部404を備える。また、プログラムレジスタ400は、プロセッサコア10との間で同期してプログラムを実行するプロセッサコアのプログラムカウンタ11の監視用情報が設定されるレジスタであり、プロセッサコア番号レジスタ401、プログラムアドレスレジスタ402及び有効フラグレジスタ403を備える。
Embodiment 2. FIG.
FIG. 4 is a block diagram showing the configuration of the multi-core processor according to the second embodiment of the present invention, and particularly shows the detailed configuration of the program counter monitoring unit. In addition, the same code | symbol is attached | subjected to the thing corresponded to the component shown in FIG. In FIG. 4, the program
プロセッサコア番号レジスタ401には、同期元となる部分プログラムを実行するプロセッサコアの識別番号を設定し、プログラムアドレスレジスタ402には、上記同期元の部分プログラムの最終プログラムアドレス値を設定する。また、有効フラグレジスタ403には、プログラムカウンタ監視部13の監視機能が有効か否かを示すフラグ値を設定する。監視実行部404は、プロセッサコア番号レジスタ401に設定された識別番号で特定したプロセッサコアのプログラムカウンタ11の値とプログラムアドレスレジスタ402の値とを比較し、この比較結果に応じてプログラム実行の停止要求及びその解除要求をプロセッサコア10の実行部12に通知する。
In the processor
なお、図4では、プロセッサコア10及びこれに対応するプログラムカウンタ監視部13の構成を示したが、図1に示すプロセッサコア20,30,40及びこれに対応するプログラムカウンタ監視部23,33,43も同様の構成であってもよい。また、プロセッサコア及びこれに対応するプログラムカウンタ監視部の数は、4つ以外であってもよい。
4 shows the configuration of the
次に動作について説明する。
プロセッサコア10の実行部12は、同期先のプログラムを実行するにあたり、プログラムカウンタ監視部13の有効フラグレジスタ403に監視機能の有効を示す値を設定する。例えば、図2に示す部分プログラム211では、この部分プログラム211を同期先とする依存関係250が設定されているため、プロセッサコア10の実行部12は、プログラムカウンタ監視部13の有効フラグレジスタ403に対して監視機能の有効を示す値を設定する。
Next, the operation will be described.
When executing the synchronization destination program, the
さらに、プロセッサコア10の実行部12は、依存関係250で同期元となる部分プログラム221を実行するプロセッサコア20の識別番号を、プログラムカウンタ監視部13のプロセッサコア番号レジスタ401に設定し、同期元となる部分プログラム221の最終プログラムアドレス値を、プログラムカウンタ監視部13のプログラムアドレスレジスタ402に設定する。
Furthermore, the
有効フラグレジスタ403に監視機能の有効を示す値が設定されると、監視実行部404が、プロセッサコア番号レジスタ401で特定されるプロセッサコア20のプログラムカウンタ11の値を読み込み、この値とプログラムアドレスレジスタ402の値とを比較する。ここで、プロセッサコア20のプログラムカウンタ11の値が、プログラムアドレスレジスタ402の値よりも小さいと、監視実行部404は、プロセッサコア20の実行部12が部分プログラム221の実行を終了していないと判断して、プロセッサコア10の実行部12に停止要求を通知する。
When a value indicating that the monitoring function is valid is set in the
プロセッサコア10の実行部12は、上記停止要求を受けると、プログラム210の実行を一時停止する。この後、監視実行部404は、プロセッサコア20のプログラムカウンタ11の値を逐次参照して上述の比較処理を継続する。この比較結果で部分プログラム221の実行が終了したと判定されるまで、監視実行部404は、プロセッサコア10の実行部12へ停止要求を出力し続ける。これにより、プロセッサコア10の実行部12は、部分プログラム221の実行が終了するまで部分プログラム211の実行待機状態となる。
When the
上記比較処理において、プロセッサコア20のプログラムカウンタ11の値がプログラムアドレスレジスタ402の値よりも大きくなると、監視実行部404は、プロセッサコア20の実行部12が部分プログラム221の実行を終了したものと判断して、プロセッサコア10の実行部12に上記停止要求の解除要求を通知する。プロセッサコア10の実行部12では、上記解除要求を受けると、プログラム210の実行を再開し、部分プログラム211の実行を開始する。プロセッサコア10とプロセッサコア20との同期処理が終了すると、監視実行部404は、すみやかに有効フラグレジスタ403のフラグ値をクリアし、監視機能を無効にする。
In the comparison process, when the value of the
以上のように、この実施の形態2によれば、プログラムカウンタ監視部13,23,33,43が、自己に対応するプロセッサコアから指定されたプロセッサコアの識別番号及びこのプロセッサコアで実行される同期元のプログラムのアドレス値を保持するプログラムレジスタ400と、プログラムレジスタ400から識別番号及び同期元のプログラムのアドレス値を取得し、この識別番号のプロセッサコアに対応するプログラムカウンタの値と同期元のプログラムのアドレス値との比較結果に応じて、自己に対応するプロセッサコアによる同期先のプログラムの実行可否を制御する監視実行部404とを備えたので、プロセッサコアがプログラムを実行するにあたり、専用のレジスタ400に監視用情報を書き込むだけで、プログラムカウンタの監視処理を行うことができる。
As described above, according to the second embodiment, the program
なお、上記実施の形態2では、図4に示すようにプロセッサコア番号レジスタ401、プログラムアドレスレジスタ402及び有効フラグレジスタ403として、プログラムレジスタ400を構成する複数のレジスタをそれぞれ割り当てた場合を示したが、本発明はこれに限定されるものではない。
In the second embodiment, the case where a plurality of registers constituting the
例えば、図5に示すように、1つのレジスタをプログラムカウンタ監視レジスタ410とし、そのビットフィールドを、有効フラグを設定する領域、プロセッサコア番号を設定する領域、プログラムアドレス(同期元のプログラムの最終プログラムアドレス値)を設定する領域として割り当ててもよい。
For example, as shown in FIG. 5, one register is a program
また、上記実施の形態2において、プログラムレジスタ400やプログラムカウンタ監視レジスタ410を1つのプログラムカウンタ監視部内に複数備えてもよい。この場合、複数のプロセッサコア間で実行されるプログラムの依存関係に応じてプログラムレジスタ400やプログラムカウンタ監視レジスタ410に値をそれぞれ設定することで、複数の依存関係に対するプログラムカウンタ11の監視を同時に実行することができる。
In the second embodiment, a plurality of program registers 400 and program counter monitoring registers 410 may be provided in one program counter monitoring unit. In this case, by setting values in the
さらに、プロセッサコア番号レジスタを除く、プログラムレジスタ400のプロセッサコア番号レジスタ及び有効フラグレジスタをプロセッサコア内に設けてもよい。
Further, the processor core number register and the valid flag register of the
実施の形態3.
この実施の形態3は、プログラムカウンタ監視部による監視処理を専用命令で実行するようにしたものである。
図6は、この発明の実施の形態3によるマルチコアプロセッサの構成を示すブロック図であり、特にプログラムカウンタ監視部の詳細な構成を示している。なお、図4で示した構成要素に相当するものには同一符号を付している。また、図7は、図6中のプロセッサコアの実行部で実行される専用命令の命令コードの一例を示す図である。
Embodiment 3 FIG.
In the third embodiment, the monitoring process by the program counter monitoring unit is executed by a dedicated instruction.
FIG. 6 is a block diagram showing the configuration of the multi-core processor according to the third embodiment of the present invention, and particularly shows the detailed configuration of the program counter monitoring unit. In addition, the same code | symbol is attached | subjected to the thing corresponded to the component shown in FIG. FIG. 7 is a diagram illustrating an example of an instruction code of a dedicated instruction executed by the execution unit of the processor core in FIG.
実施の形態3によるプログラムカウンタ監視部13では、図6中で実行部12から監視実行部404へ向けて矢印で示すように、監視実行部404が、プロセッサコア10の実行部12で実行されるプログラム中の専用命令の命令コードで特定されたデータを受けて監視処理を実行する。また、専用命令の命令コード500は、図7に示すように専用命令識別子501、プロセッサコア番号502及びプログラムアドレス503を含んで構成される。
In the program
ここで、専用命令識別子501は、命令コード500が専用命令であることを示す識別子である。プロセッサコア番号502は、依存関係で同期元となるプロセッサコアを識別するための識別番号である。また、プログラムアドレス503は、依存関係で同期元となる部分プログラムの最終プログラムアドレス値である。
Here, the
なお、図6では、プロセッサコア10及びこれに対応するプログラムカウンタ監視部13についての構成を示したが、図1に示すプロセッサコア20,30,40及びこれに対応するプログラムカウンタ監視部23,33,43も同様に構成してもよい。また、プロセッサコア及びこれに対応するプログラムカウンタ監視部の数は、4つ以外であってもよい。
6 shows the configuration of the
次に動作について説明する。
プロセッサコア10の実行部12は、自己に割り当てられたプログラムを格納するメモリから、当該プログラムを構成する命令コードを読み込んで実行する。ここで、プロセッサコア10の実行部12は、図7に示す命令コード500中の専用命令識別子501の値から命令コード500が専用命令であることを特定し、命令コード500からプロセッサコア番号502及びプログラムアドレス503を抽出する。続いて、プロセッサコア10の実行部12は、命令コード500から抽出したプロセッサコア番号502及びプログラムアドレス503を、依存関係に関する情報としてプログラムカウンタ監視部13へ出力する。
Next, the operation will be described.
The
ここでは、図2に示す依存関係250についての同期処理を例に挙げる。つまり、専用命令が部分プログラム211の直前のアドレスに設定されており、プロセッサコア番号502でプロセッサコア20が特定され、プログラムアドレス503は、部分プログラム221の最終プログラムアドレス値であるものとする。
Here, a synchronization process for the
プログラムカウンタ監視部13の監視実行部404では、依存関係250に関する情報から取得したプロセッサコア番号502でプロセッサコア20を特定し、プロセッサコア20のプログラムカウンタ11の値と依存関係250で同期元となる部分プログラム221のプログラムアドレス503の値とを比較する。ここで、プロセッサコア番号502で特定されたプロセッサコア20のプログラムカウンタ11の値がプログラムアドレス503の値よりも小さいと、監視実行部404は、プロセッサコア20の実行部12が部分プログラム221の実行を終了していないと判断して、プロセッサコア10の実行部12に停止要求を通知する。
In the
プロセッサコア10の実行部12は、上記停止要求を受けると、プログラム210の実行を一時停止する。この後、監視実行部404は、プロセッサコア20のプログラムカウンタ11の値を逐次参照して上述の比較処理を継続する。この比較結果で部分プログラム221の実行が終了したと判定されるまで、監視実行部404は、プロセッサコア10の実行部12へ停止要求を出力し続ける。これにより、プロセッサコア10の実行部12は、部分プログラム221の実行が終了するまで部分プログラム211の実行待機状態となる。
When the
また、上記比較処理において、プロセッサコア20のプログラムカウンタ11の値がプログラムアドレスレジスタ402の値よりも大きくなると、監視実行部404は、プロセッサコア20の実行部12が部分プログラム221の実行を終了したものと判断して、プロセッサコア10の実行部12に上記停止要求の解除要求を通知する。プロセッサコア10の実行部12では、上記解除要求を受けると、プログラム210の実行を再開し、部分プログラム211の実行を開始する。
In the comparison process, when the value of the
以上のように、この実施の形態3によれば、プロセッサコアが、プロセッサコアの識別番号及びこのプロセッサコアで実行される同期元のプログラムのアドレス値が設定された専用命令を実行することにより、識別番号及び同期元のプログラムのアドレス値を監視情報として自己に対応するプログラムカウンタ監視部に出力し、このプログラムカウンタ監視部が、監視情報で指定された識別番号のプロセッサコアに対応するプログラムカウンタの値と同期元のプログラムのアドレス値との比較結果に応じて、自己に対応するプロセッサコアによる同期先のプログラムの実行可否を制御する監視実行部404を備えたので、プログラムカウンタ監視部にレジスタ機能を持たすことなく、同期処理を実現することができる。
As described above, according to the third embodiment, the processor core executes the dedicated instruction in which the processor core identification number and the address value of the synchronization source program executed in the processor core are set. The identification number and the address value of the synchronization source program are output as monitoring information to the program counter monitoring unit corresponding to itself, and the program counter monitoring unit displays the program counter corresponding to the processor core of the identification number specified by the monitoring information. Since the
なお、上記実施の形態3において、実行部12によって専用命令が実行されることで、プログラムカウンタ監視部の監視機能が有効になる。このため、図4に示した有効フラグレジスタ403に該当する情報は命令コード500には含まれない。
In the third embodiment, the monitoring function of the program counter monitoring unit becomes effective when the
実施の形態4.
上記実施の形態1〜3では、同期元のプログラムの最終プログラムアドレス値を直接指定する場合を示した。これに対し、この実施の形態4は、プログラムカウンタ監視部で取り扱われるプログラムアドレスやプログラムカウンタ11の値として、各プロセッサコア10,20,30,40が実行するプログラムの先頭番地を基準とするオフセットアドレスを用いることにより、プログラムの配置変更(アドレス変更)に柔軟に対応できるようにしている。
Embodiment 4 FIG.
In the first to third embodiments, the case where the final program address value of the synchronization source program is directly specified has been described. On the other hand, in the fourth embodiment, the program address handled by the program counter monitoring unit and the value of the
図8は、この発明の実施の形態4によるマルチコアプロセッサにおけるプロセッサコアの構成を示すブロック図であり、図1で示した構成要素に相当するものには同一符号を付している。図8において、実施の形態4によるプロセッサコア10は、プログラムカウンタ11及び実行部12に加え、オフセット計算部14及びベースアドレスレジスタ15を備える。
FIG. 8 is a block diagram showing a configuration of a processor core in a multi-core processor according to Embodiment 4 of the present invention. Components corresponding to those shown in FIG. 1 are denoted by the same reference numerals. In FIG. 8, the
オフセット計算部14は、プロセッサコア10のプログラムカウンタ11の値からベースアドレスレジスタ15の値を減算したオフセット値を、プログラムカウンタ11の値としてプログラムカウンタ監視部23,33,43へ出力する。ベースアドレスレジスタ15は、プロセッサコア10の実行部12が実行するプログラムの配置領域(アドレス)の変更に応じてオフセット値が同じ値になるように一定のベースアドレス値が設定される。
The offset
なお、図8では、プロセッサコア10についての構成を示したが、図1に示すプロセッサコア20,30,40も同様に構成してもよい。また、プロセッサコアの数は、4つ以外であってもよい。
8 shows the configuration of the
次に動作について説明する。
プロセッサコア10の実行部12は、メモリからプログラムを読み込み、これを実行する。このとき、オフセット計算部14は、プログラムカウンタ11に設定された上記プログラムのアドレス値とベースアドレスレジスタ15の値とを読み込み、これらの値を減算してオフセット値を求める。このオフセット値は、プロセッサコア10のプログラムカウンタ11の値として、オフセット計算部14から他のプロセッサコア20,30,40に対応するプログラムカウンタ監視部23,33,43へそれぞれ出力される。
Next, the operation will be described.
The
また、プログラムカウンタ監視部23,33,43には、プロセッサコア20,30,40の実行部12から、プロセッサコア10で実行される同期元のプログラム(プロセッサコア20,30,40の実行部12が実行するプログラムを同期先とした依存関係を有するプログラム)の最終プログラムアドレス値が、プロセッサコア10で実行されるプログラムの先頭番地からのオフセットとして与えられる。
Further, the program
ここで、プロセッサコア10で実行するプログラムの配置領域が変更された場合、プログラム配置が変更される前のオフセット値と同じ値となるようにベースアドレスレジスタ15の値を設定する。このようにすることで、プロセッサコア20,30,40の実行部12が同期先としてプログラムを処理するにあたり、同期元のプログラムのプログラムアドレスを変更する必要がない。
Here, when the arrangement area of the program executed by the
以上のように、この実施の形態4によれば、プロセッサコアが、ベース値が設定されるベースアドレスレジスタ15と、自己に対応するプログラムカウンタの値からベースアドレスレジスタ15のベース値を減算したオフセット値を、自己に対応するプログラムカウンタ11の値として自己以外に対応するプログラムカウンタ監視部へ出力するオフセット計算部14とを備え、プログラムカウンタ監視部が、自己に対応するプロセッサコアによる同期先のプログラムの実行可否を制御するにあたり、ベース値で規定されるオフセット値で表されたプログラムカウンタ11の値と同期元のプログラムのアドレス値とを比較するので、プログラムの配置変更(アドレス変更)に柔軟に対応することができる。
As described above, according to the fourth embodiment, the processor core subtracts the
なお、上述した説明では、上記実施の形態1に対して上記実施の形態4を適用する場合を示したが、上記実施の形態2、3に適用しても構わない。 In the above description, the case in which the fourth embodiment is applied to the first embodiment has been described. However, the present invention may be applied to the second and third embodiments.
実施の形態5.
上記実施の形態1では、アドレスを昇順にプログラムが実行され、プログラムの実行に伴ってプログラムカウンタ11の値が大きくなる場合を前提としている。例えば、図2に示した部分プログラム222の最終プログラムアドレスに部分プログラム223へ分岐する分岐命令があり、部分プログラム221が部分プログラム211の開始タイミングよりも早く終わった場合を考える。この場合、プログラムカウンタ監視部13が部分プログラム221の実行終了の判定を開始する前であっても、プロセッサコア20の実行部12が上記分岐命令を実行すれば、部分プログラム223の実行へ分岐する。
Embodiment 5 FIG.
In the first embodiment, it is assumed that the program is executed in ascending order of the addresses, and the value of the
このとき、プロセッサコア20のプログラムカウンタ11は、部分プログラム221の実行が終了しているにも関わらず、部分プログラム221の最終プログラムアドレス値よりも小さい値に戻る。この場合、プロセッサコア20のプログラムカウンタ11の値と依存関係250に関する情報に含まれる部分プログラム221の最終プログラムアドレス値とを比較した結果だけでは、部分プログラム221の実行が終了しているか否かを正確に判定することができない。
At this time, the
この実施の形態5は、分岐命令のように部分プログラムの外に分岐することでプログラムカウンタ11の値が昇順でなくなる命令が部分プログラムに含まれていても、分岐元のプログラムアドレスを保持するカウンタ値保持部を設けることにより、プログラムカウンタ監視部が正確に判定できるようにしたものである。
In the fifth embodiment, even if an instruction in which the value of the
図9は、この発明の実施の形態5によるマルチコアプロセッサにおけるプロセッサコアの構成を示すブロック図であ、図1で示した構成要素に相当するものには同一符号を付している。図9において、実施の形態5によるプロセッサコア10は、プログラムカウンタ11及び実行部12に加え、カウンタ値保持部16を備える。カウンタ値保持部16は、実行部12が実行する命令に応じてプログラムカウンタ11の値を保持し、保持した値を他のプロセッサコアに対応するプログラムカウンタ監視部23,33,43へ出力する。
FIG. 9 is a block diagram showing a configuration of a processor core in a multi-core processor according to Embodiment 5 of the present invention. Components corresponding to those shown in FIG. 1 are denoted by the same reference numerals. In FIG. 9, the
上記実施の形態1〜4では、プロセッサコアの動作状況を示すプログラムカウンタ11の値をそのままプログラムカウンタ監視部へ出力していた。これに対して、この実施の形態5では、プロセッサコアの動作状況に応じてカウンタ値保持部16で保持したプログラムカウンタ11の値を出力する。
In the first to fourth embodiments, the value of the
例えば、CALL命令とRET命令の組み合わせによるサブルーチン処理や割り込み処理などのように、分岐した後で戻ってくることが予測される処理であっても、分岐処理している間のプログラムカウンタ11の値を分岐直前に保持した値とする。これによって、分岐先のプログラムカウンタ11を用いた依存関係の判定を防ぐことができ、分岐先のプログラムを実行する際に不正な通過判定がなされることがない。
For example, even if the process is predicted to return after branching, such as subroutine processing or interrupt processing by a combination of a CALL instruction and a RET instruction, the value of the
なお、図9では、プロセッサコア10についての構成を示したが、図1に示すプロセッサコア20,30,40も同様に構成してもよい。また、プロセッサコアの数は、4つ以外であってもよい。
9 shows the configuration of the
次に動作について説明する。
プロセッサコア10の実行部12は、自己が実行するプログラム中に含まれるCALL命令の実行や割り込み処理の開始とともに、カウンタ値保持部16に対してカウンタ値保持指令を出力する。カウンタ値保持部16は、カウンタ値保持指令を受けると、CALL命令や割り込み処理による分岐直前のプログラムカウンタ11の値を保持する。この後、プロセッサコア10の実行部12が分岐先のプログラムを実行することにより、プログラムカウンタ11の値は、分岐先のプログラムのアドレス値で更新される。
Next, the operation will be described.
The
一方、カウンタ値保持部16は、プロセッサコア10の実行部12が分岐先のプログラムを実行している間、自己が保持する分岐直前のアドレス値をプロセッサコア10のプログラムカウンタ11の値として他のプロセッサコア20,30,40に対応するプログラムカウンタ監視部23,33,43へそれぞれ出力する。これにより、プログラムカウンタ監視部23,33,43では、プロセッサコア10における分岐直前のアドレス値を基準として依存関係の判定が実行される。
On the other hand, while the
この後、プロセッサコア10の実行部12は、CALL命令による分岐処理から復帰するためのRET命令や、割込み処理から復帰するためのIRET命令を実行すると、これに伴ってカウンタ値保持部16に対して解除指令を出力する。カウンタ値保持部16は、解除指令を受けると、自己が保持する値ではなく、そのときプログラムカウンタ11に設定されている値を他のプロセッサコア20,30,40に対応するプログラムカウンタ監視部23,33,43へそれぞれ出力する。
Thereafter, when the
ここで、CALL命令による割り込み処理の実行中にCALL命令が再度実行された場合を考える。この場合、カウンタ値保持部16は、CALL命令が発行された回数をカウントする。例えば、CALL命令の実行でカウンタを+1とし、RET命令の実行でカウンタを−1とする。また、このカウンタの値が0でないとき、自己を搭載するプロセッサコアのプログラムカウンタ11の値を保持し、カウンタの値が0のときには、上記プログラムカウンタ11の値をそのまま他のプロセッサコアに対応するプログラムカウンタ監視部へ出力する。
Here, consider a case where the CALL instruction is executed again during the execution of the interrupt processing by the CALL instruction. In this case, the counter
図10は、図9中のプロセッサコアで実行されるプログラム、プログラム間の依存関係及び分岐処理を説明するための図であり、この図10を用いて分岐処理における動作を詳細に説明する。図10において、プログラム510は、プロセッサコア10の実行部12で実行されるプログラムであり、部分プログラム511,512を含んで構成される。部分プログラム511,512は、部分プログラム511、部分プログラム512の順でアドレスが昇順となるようにメモリに格納される。プロセッサコア10の実行部12は、上記メモリからアドレスを昇順に部分プログラムを読み込んで実行することにより、図10中で矢印で示すように、部分プログラム511、部分プログラム512の順で、プログラム510を実行する。
FIG. 10 is a diagram for explaining the program executed by the processor core in FIG. 9, the dependency relationship between the programs, and the branch process. The operation in the branch process will be described in detail with reference to FIG. In FIG. 10, a
また、プログラム520は、プロセッサコア20の実行部12で実行されるプログラムであり、部分プログラム521及びサブルーチンプログラム522を含んで構成される。部分プログラム521及びサブルーチンプログラム522は、部分プログラム521、サブルーチンプログラム522の順でアドレスが昇順となるようにメモリに格納される。
The
部分プログラム512と部分プログラム521との間には依存関係530が設定されている。この依存関係530は、プロセッサコア20の実行部12によって部分プログラム521の実行が終了した後、プロセッサコア10の実行部12によって部分プログラム512を実行すること、つまりプロセッサコア10での同期先となる部分プログラム512の実行が、プロセッサコア20での同期元となる部分プログラム521の実行に依存する関係にあることを示している。
A
また、部分プログラム521にはCALL命令が含まれており、このCALL命令が実行されると、図10中に矢印で示すようにサブルーチンプログラム522へ処理が分岐する。一方、サブルーチンプログラム522中のRET命令が実行されると、図10中に矢印で示すように部分プログラム521の実行へ処理が戻る。
The
CALL命令を実行してサブルーチンプログラム522へ処理が分岐する場合、部分プログラム521の実行が終了していない場合であっても、プロセッサコア20のプログラムカウンタ11の値は、部分プログラム521の最終プログラムアドレス値よりも大きくなる。このため、上記実施の形態1のようにアドレスを昇順にプログラムが実行されることを前提した処理では、プログラムカウンタ監視部が同期元のプログラムの実行終了を誤判定する可能性がある。
When the CALL instruction is executed and the process branches to the
そこで、プロセッサコア20の実行部12は、部分プログラム521中のCALL命令を実行してサブルーチンプログラム522の処理へ分岐する際、カウンタ値保持部16へカウンタ値保持指令を出力する。この指令を受けると、カウンタ値保持部16は、プログラムカウンタ監視部13,33,43を介して他のプロセッサコア10,30,40へ公開している自己のプログラムカウンタ11の値を分岐前の値のまま保持する。このようにすることで、プロセッサコア10に対応するプログラムカウンタ監視部13は、プロセッサコア20の実行部12が部分プログラム521を実行中であることを認識できる。
Therefore, the
プロセッサコア20の実行部12は、サブルーチンプログラム522中のRET命令を実行することにより、部分プログラム521の処理に戻る。このとき、プロセッサコア20の実行部12は、カウンタ値保持部16に対して解除命令を出力する。この指令を受けると、カウンタ値保持部16は、RET命令で戻った部分プログラム521中のアドレス値が設定されたプログラムカウンタ11の値を、他のプロセッサコア10,30,40に対応するプログラムカウンタ監視部13,33,43へ出力する。この後、プロセッサコア20の実行部12で部分プログラム521の実行が終了した時点で、プロセッサコア10の周辺回路であるプログラムカウンタ監視部13は、部分プログラム521の実行終了を正確に判定することができる。
The
以上のように、この実施の形態5によれば、複数のプロセッサコア10,20,30,40のそれぞれに対応して設けられ、自己に対応するプロセッサコアで分岐命令を実行するにあたり、分岐前のプログラムカウンタ11の値を分岐から復帰するまで保持するカウンタ値保持部16を備えたので、分岐命令のように部分プログラムの外に分岐する命令が含まれていても、プログラムカウンタ監視部による依存関係の判定を正確に行うことができる。
As described above, according to the fifth embodiment, a branch instruction is provided for each of the plurality of
なお、上記実施の形態5は、上記実施の形態1のみならず、上記実施の形態2〜4にも適用することができる。例えば、上記実施の形態2の構成に適用することにより、プログラムアドレスレジスタ402やプログラムカウンタ監視レジスタ410のプログラムアドレス領域の値をカウンタ値保持部16で保持するようにしてもよい。また、上記実施の形態3の構成に適用することにより、専用命令で指定されるプログラムアドレス値をカウンタ値保持部16で保持するようにしてもよい。さらに、上記実施の形態4の構成に適用することにより、オフセット計算部14により算出された値をカウンタ値保持部16で保持するようにしてもよい。
The fifth embodiment can be applied not only to the first embodiment but also to the second to fourth embodiments. For example, the value of the program address area of the program address register 402 or the program
1 マルチコアプロセッサ、10,20,30,40 プロセッサコア、11 プログラムカウンタ、12 実行部、13,23,33,44 プログラムカウンタ監視部、14 オフセット計算部、15 ベースアドレスレジスタ、16 カウンタ値保持部、210,220,230,240,310,320,510,520 プログラム、211,221〜223,311〜314,321〜323,511,512,521 部分プログラム、250,300〜302,530 依存関係、400 プログラムレジスタ、401 プロセッサコア番号レジスタ、402 プログラムアドレスレジスタ、403 有効フラグレジスタ、404 監視実行部、500 命令コード、501 専用命令識別子、502 プロセッサコア番号、503 プログラムアドレス。 1 multi-core processor, 10, 20, 30, 40 processor core, 11 program counter, 12 execution unit, 13, 23, 33, 44 program counter monitoring unit, 14 offset calculation unit, 15 base address register, 16 counter value holding unit, 210, 220, 230, 240, 310, 320, 510, 520 program, 211, 221-223, 311-314, 321-323, 511, 512, 521 Partial program, 250, 300-302, 530 dependency, 400 Program register, 401 processor core number register, 402 program address register, 403 valid flag register, 404 monitoring execution unit, 500 instruction code, 501 dedicated instruction identifier, 502 processor core number, 503 program Gram address.
Claims (5)
前記複数のプロセッサコアのそれぞれに対応して設けられ、自己に対応するプロセッサコアで実行されるプログラムのアドレス値を保持するプログラムカウンタと、
前記複数のプロセッサコアのそれぞれに対応して設けられ、自己に対応するプロセッサコアから指定された同期相手のプロセッサコアに対応するプログラムカウンタの値と同期先のプログラムの実行に先行して前記同期相手のプロセッサコアで実行される同期元のプログラムのアドレス値との比較結果に応じて、前記自己に対応するプロセッサコアによる前記同期先のプログラムの実行可否を制御するプログラムカウンタ監視部とを備えたマルチコアプロセッサ。 Multiple processor cores,
A program counter which is provided corresponding to each of the plurality of processor cores and holds an address value of a program executed by the processor core corresponding to the processor core;
The synchronization partner is provided corresponding to each of the plurality of processor cores, and the synchronization counter prior to execution of the value of the program counter corresponding to the synchronization partner processor core designated by the processor core corresponding to the processor core and the synchronization destination program A multi-core comprising a program counter monitoring unit that controls whether or not the synchronization target program can be executed by the processor core corresponding to the self according to a comparison result with an address value of a synchronization source program executed by the processor core Processor.
前記プログラムカウンタ監視部は、前記プロセッサコアから入力した監視情報で指定された前記識別番号のプロセッサコアに対応するプログラムカウンタの値と前記同期元のプログラムのアドレス値との比較結果に応じて、前記自己に対応するプロセッサコアによる同期先のプログラムの実行可否を制御する監視実行部を備えたことを特徴とする請求項1記載のマルチコアプロセッサ。 The processor core executes the dedicated instruction in which the identification number of the processor core and the address value of the synchronization source program executed by the processor core are set, thereby obtaining the identification number and the address value of the synchronization source program. Output to the program counter monitoring unit corresponding to itself as monitoring information,
The program counter monitoring unit, according to a comparison result between the value of the program counter corresponding to the processor core of the identification number specified by the monitoring information input from the processor core and the address value of the synchronization source program, 2. The multi-core processor according to claim 1, further comprising a monitoring execution unit that controls whether or not the synchronization destination program can be executed by a processor core corresponding to the processor core.
前記プログラムカウンタ監視部は、自己に対応するプロセッサコアによる同期先のプログラムの実行可否を制御するにあたり、前記ベース値で規定されるオフセット値で表されたプログラムカウンタの値と同期元のプログラムのアドレス値とを比較することを特徴とする請求項1から請求項3のうちのいずれか1項記載のマルチコアプロセッサ。 The processor core uses a base address register in which a base value is set and an offset value obtained by subtracting the base value of the base address register from the value of the program counter corresponding to itself as a value of the program counter corresponding to the self And an offset calculation unit that outputs to the program counter monitoring unit corresponding to
The program counter monitoring unit controls whether or not the synchronization destination program can be executed by the processor core corresponding to itself, and the value of the program counter represented by the offset value specified by the base value and the address of the synchronization source program 4. The multi-core processor according to claim 1, wherein the multi-core processor compares the value with each other.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007245590A JP2009075948A (en) | 2007-09-21 | 2007-09-21 | Multicore processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007245590A JP2009075948A (en) | 2007-09-21 | 2007-09-21 | Multicore processor |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009075948A true JP2009075948A (en) | 2009-04-09 |
Family
ID=40610838
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007245590A Pending JP2009075948A (en) | 2007-09-21 | 2007-09-21 | Multicore processor |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009075948A (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8683251B2 (en) | 2010-10-15 | 2014-03-25 | International Business Machines Corporation | Determining redundancy of power feeds connecting a server to a power supply |
US8688885B2 (en) | 2010-04-13 | 2014-04-01 | Samsung Electronics Co., Ltd. | Hardware acceleration apparatus, method and computer-readable medium efficiently processing multi-core synchronization |
US8923682B2 (en) | 2011-05-23 | 2014-12-30 | Renesas Electronics Corporation | Data processing system |
JP2015036983A (en) * | 2013-08-13 | 2015-02-23 | 三星電子株式会社Samsung Electronics Co.,Ltd. | Multiple thread execution processor and operating method thereof |
CN110209509A (en) * | 2019-05-28 | 2019-09-06 | 北京星网锐捷网络技术有限公司 | Method of data synchronization and device between multi-core processor |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0675820A (en) * | 1992-08-26 | 1994-03-18 | Yokogawa Electric Corp | Interruption device in multi-processor system |
JPH11282815A (en) * | 1998-03-31 | 1999-10-15 | Nec Corp | Multi-thread computer system and multi-thread execution control method |
JPH11306149A (en) * | 1998-04-16 | 1999-11-05 | Sony Corp | Parallel arithmetic processor and method therefor |
JP2005322232A (en) * | 2004-05-03 | 2005-11-17 | Sony Computer Entertainment Inc | System and method about transfer of task |
-
2007
- 2007-09-21 JP JP2007245590A patent/JP2009075948A/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0675820A (en) * | 1992-08-26 | 1994-03-18 | Yokogawa Electric Corp | Interruption device in multi-processor system |
JPH11282815A (en) * | 1998-03-31 | 1999-10-15 | Nec Corp | Multi-thread computer system and multi-thread execution control method |
JPH11306149A (en) * | 1998-04-16 | 1999-11-05 | Sony Corp | Parallel arithmetic processor and method therefor |
JP2005322232A (en) * | 2004-05-03 | 2005-11-17 | Sony Computer Entertainment Inc | System and method about transfer of task |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8688885B2 (en) | 2010-04-13 | 2014-04-01 | Samsung Electronics Co., Ltd. | Hardware acceleration apparatus, method and computer-readable medium efficiently processing multi-core synchronization |
US8683251B2 (en) | 2010-10-15 | 2014-03-25 | International Business Machines Corporation | Determining redundancy of power feeds connecting a server to a power supply |
US8923682B2 (en) | 2011-05-23 | 2014-12-30 | Renesas Electronics Corporation | Data processing system |
US9742966B2 (en) | 2011-05-23 | 2017-08-22 | Renesas Electronics Corporation | Data processing system |
JP2015036983A (en) * | 2013-08-13 | 2015-02-23 | 三星電子株式会社Samsung Electronics Co.,Ltd. | Multiple thread execution processor and operating method thereof |
CN110209509A (en) * | 2019-05-28 | 2019-09-06 | 北京星网锐捷网络技术有限公司 | Method of data synchronization and device between multi-core processor |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8612978B2 (en) | Code execution utilizing single or multiple threads | |
US10481911B2 (en) | Synchronization of execution threads on a multi-threaded processor | |
US20150355938A1 (en) | System and method for conditional task switching during ordering scope transitions | |
JP2009543170A5 (en) | ||
US20150012727A1 (en) | Processing device and control method of processing device | |
KR0136019B1 (en) | Information processing system | |
JP2009075948A (en) | Multicore processor | |
US20100095305A1 (en) | Simultaneous multithread instruction completion controller | |
KR101472186B1 (en) | Information processing apparatus and method of controlling information processing apparatus | |
JP2014191655A (en) | Multiprocessor, electronic control device, and program | |
US20140331025A1 (en) | Reconfigurable processor and operation method thereof | |
JP2016157247A (en) | Information processor | |
JP2006146758A (en) | Computer system | |
JP2007058279A (en) | Power-down shifting system | |
JP6774147B2 (en) | Control device | |
JP2001022720A (en) | Multiprocessor system | |
CN112445587A (en) | Task processing method and task processing device | |
JP6617511B2 (en) | Parallelization method, parallelization tool, in-vehicle device | |
JP2013250696A (en) | Processor system and processor control device | |
JP2020126477A (en) | Electronic control device | |
CN112363816B (en) | Deterministic scheduling method, system and medium for embedded multi-core operating system | |
US9720880B2 (en) | System and method for an asynchronous processor with assisted token | |
JP2008197943A (en) | Computer system | |
JP2007316986A (en) | System lsi | |
JP2018049406A (en) | Task coordination device among plural processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Effective date: 20100119 Free format text: JAPANESE INTERMEDIATE CODE: A621 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110131 |
|
A131 | Notification of reasons for refusal |
Effective date: 20110208 Free format text: JAPANESE INTERMEDIATE CODE: A131 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110802 |