JP2013054625A - Information processor and information processing method - Google Patents
Information processor and information processing method Download PDFInfo
- Publication number
- JP2013054625A JP2013054625A JP2011193582A JP2011193582A JP2013054625A JP 2013054625 A JP2013054625 A JP 2013054625A JP 2011193582 A JP2011193582 A JP 2011193582A JP 2011193582 A JP2011193582 A JP 2011193582A JP 2013054625 A JP2013054625 A JP 2013054625A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- core
- instructions
- instruction set
- cpu
- 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.)
- Withdrawn
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
- Hardware Redundancy (AREA)
- Advance Control (AREA)
Abstract
Description
本発明は、複数のコアが並列に命令を実行する情報処理装置に関する。 The present invention relates to an information processing apparatus in which a plurality of cores execute instructions in parallel.
プロセッサの処理速度を向上させるアプローチとして動作周波数の高速化だけでなく、複数のプロセッサを搭載するマルチプロセッサ化やプロセッサに複数のCPUコアを搭載するマルチコア化が知られている。マルチプロセッサやマルチコアでは、処理の並列度が高いほど処理効率が向上するため、並列度が増すように処理を分散させることが重要になる。従来から、並列度を向上させる技術が提案されている(例えば、特許文献1参照。)。特許文献1には、タスク単位で複数のプロセッサにタスクを割り当て、実行可能状態にあるタスクを、いずれのタスクも実行していないプロセッサに割り当てるマルチプロセッサが開示されている。
As an approach for improving the processing speed of a processor, not only an increase in operating frequency but also a multiprocessor with a plurality of processors and a multicore with a plurality of CPU cores in a processor are known. In multiprocessors and multicores, processing efficiency improves as the degree of parallelism of processing increases. Therefore, it is important to distribute processing so that the degree of parallelism increases. Conventionally, a technique for improving the degree of parallelism has been proposed (see, for example, Patent Document 1).
しかしながら、従来の技術ではタスク単位で処理を実行するため、タスク処理間のバス結合、共有メモリアクセスなどにより実際には並列動作の実現が難しく、マルチコアの性能を最大限引き出すことは困難である。また、余力のあるプロセッサにタスクを割り当てるためには、プロセッサの処理負荷を監視するOSの負荷が増大し、また、割り当てのための制御も複雑になる。 However, in the conventional technique, processing is executed in units of tasks, so it is actually difficult to realize parallel operation due to bus connection between task processes, shared memory access, and the like, and it is difficult to maximize the performance of multicore. In addition, in order to assign a task to a processor having a surplus capacity, the load on the OS for monitoring the processing load of the processor increases, and the control for assignment becomes complicated.
また、あるプロセッサが別の複数のプロセッサを制御して並列に処理を実行する技術が提案されている(例えば、特許文献2参照。)。特許文献2には、1つのRISC型プロセッサが複数のVLIWプロセッサを制御するマイクロプロセッサシステムが開示されている。RISC型プロセッサは、命令を解読してVLIWプロセッサに、制御信号、動作クロック周波数、電源電圧を指示する。各VLIWプロセッサはそれぞれアプリケーションプログラムを実行する。
In addition, a technique has been proposed in which a certain processor controls a plurality of other processors to execute processing in parallel (see, for example, Patent Document 2).
また、タスク単位でなく命令単位で処理を分散させる技術も提案されている(例えば、特許文献3参照。)。特許文献3には、命令バッファに格納された命令の依存関係をチェックし、依存関係のない命令を複数のプロセッサに発行し、依存関係がある場合、一方の命令の実行ユニットの実行サイクルを遅延させるスーパースカラプロセッサが開示されている。
In addition, a technique for distributing processing in units of instructions instead of in units of tasks has been proposed (see, for example, Patent Document 3). In
しかしながら、特許文献2に記載された技術は、各プロセッサ間でデータを利用する必要がある場合について考慮されていないという問題がある。特許文献2では、複数のVLIWプロセッサのうちの1つが行った演算結果を他のプロセッサが他の演算で用いる際に、他のプロセッサのレジスタに演算結果が格納されていないので、そのための処理が必要になる。すなわち、他のプロセッサは演算結果を持っているプロセッサから演算結果を取得する必要がある。これは、1つのプロセッサで逐次処理を行う処理方法では考慮する必要のない処理である。
However, the technique described in
一方、特許文献3では、2つの実行ユニットの演算結果が共通のレジスタファイルに格納されるので、プロセッサ間のデータの交換は可能である。しかしながら、レジスタファイルが共通だとレジスタファイルへの書き込みや読み出しがボトルネックとなるおそれがあり、マルチプロセッサシステムでは各プロセッサが独立のレジスタファイルを有する方が処理効率を向上させやすいといえる。特許文献3では、レジスタファイルが独立の場合にプロセッサ間で演算結果をどのように共有するかについて考慮されていない。
On the other hand, in
本発明は、上記課題に鑑み、各プロセッサ間で効率的に演算結果を共有可能な情報処理装置を提供することを目的とする。 In view of the above problems, an object of the present invention is to provide an information processing apparatus that can efficiently share an operation result between processors.
上記課題に鑑み、本発明は、複数のコアが並列に命令を実行する情報処理装置において、コア毎の演算結果を記憶する演算結果記憶手段と、プログラムを記憶するプログラム記憶手段と、コア数分の命令が含まれる命令セットを実行順に前記プログラム記憶手段から読み出し一次記憶部に記憶する命令読み出し手段、命令セットに含まれる命令を各コアの命令キューに記憶する命令配信手段と、前記一次記憶部に記憶された第一の命令セットに含まれる命令を第一のコアが演算した演算結果を、演算対象とする依存命令が、第一の命令セットよりも後に実行される第二の命令セットに含まれ、第一のコアと異なる第二のコアが実行するか否かを判定する命令依存関係判定手段と、前記命令依存関係判定手段が、第二のコアが第二の命令セットに含まれる依存命令を実行すると判定した場合、第一のコアの前記演算結果記憶手段の値を、前記第二のコアの前記演算結果記憶手段に複写する複写手段と、を有する。 In view of the above problems, the present invention provides an information processing apparatus in which a plurality of cores execute instructions in parallel, operation result storage means for storing operation results for each core, program storage means for storing programs, and the number of cores Instruction reading means for reading out the instruction set including the instructions from the program storage means in the execution order and storing it in the primary storage section, instruction distribution means for storing the instructions included in the instruction set in the instruction queue of each core, and the primary storage section The second core is a second instruction set that is executed after the first instruction set. An instruction dependency relationship determining means for determining whether or not a second core different from the first core is executed, and the instruction dependency relationship determining means is configured such that the second core has a second instruction set. When determining to execute the dependent instructions contained, it has a copy unit for the value of the computation result storage means of the first core, copying to the arithmetic result storage means of the second core, the.
各プロセッサ間で効率的に演算結果を共有可能な情報処理装置を提供することができる。 It is possible to provide an information processing apparatus that can efficiently share a calculation result between processors.
以下、本発明を実施するための形態について図面を参照しながら実施例を挙げて説明する。 DESCRIPTION OF EMBODIMENTS Hereinafter, embodiments for carrying out the present invention will be described with reference to the drawings.
図1は、本実施形態の概略的な特徴を説明する図の一例である。マルチコアマイコンは3つのCPU(CPU1〜CPU3)を有しているものとする。それぞれが1つのプログラムの連続した命令コード(以下、単に命令という)を分散して実行しており、図1では、以下のような命令を実行している。
CPU1:A+B→C
CPU2:Z+D→E
CPU3:F+G→H
矢印の先のアルファベットが演算結果であり、この演算結果は各CPUのレジスタに格納されている。
FIG. 1 is an example of a diagram illustrating schematic features of the present embodiment. The multi-core microcomputer has three CPUs (CPU1 to CPU3). Each of them executes a series of instruction codes (hereinafter simply referred to as instructions) of one program in a distributed manner. In FIG. 1, the following instructions are executed.
CPU1: A + B → C
CPU2: Z + D → E
CPU3: F + G → H
The alphabet at the end of the arrow is the calculation result, and this calculation result is stored in a register of each CPU.
CPU1が実行するプログラムの次の命令が下記のような命令であったとする。
A+E→I
被演算子AはCPU1のレジスタ内に記憶されているが、被演算子EはCPU2のレジスタ内に記憶されている。このため、このままではCPU1は演算を実行できない。そこで、動作シーケンス制御回路がCPU1のレジスタに、CPU2のレジスタに記憶されている演算結果Eをコピーする。以下では、この操作をレジスタのリフレッシュという場合がある。
Assume that the next instruction of the program executed by the
A + E → I
The operand A is stored in the
このように、命令単位で処理を分散することで、タスク単位で処理を分散するよりも処理の並列度を向上させることができる。また、処理の並列度を向上させたために、演算結果が各CPUに分散する状況が生じても、レジスタをリフレッシュすることで、命令の依存性を解消できる。 Thus, by distributing the processing in units of instructions, it is possible to improve the degree of parallelism of processing compared to distributing the processing in units of tasks. In addition, since the degree of parallelism of processing is improved, even if a situation occurs in which operation results are distributed to each CPU, the dependency of instructions can be eliminated by refreshing the registers.
まず、マルチコアマイコンは、一般に、複数のコアがあるにも拘わらず、1つのコアが故障した場合、バスなどを経由し故障コアの影響が正常コアに波及してしまうため、正常コアも含めて全てのコア(すなわちマイコン全体)を停止する必要があると言われている。エンジン制御などではマルチコアマイコンを停止してもユーザに与える影響は少ないが、EPS(Electric Power Steering)やECB(Electric Control Braking system)などのマルチコアマイコンが急に停止されると、運転者に大きな違和感を感じさせてしまう。このため、車両にはEPSやECBが故障した時のバックアップ装置を用意しておくことが一般的になっており、機能を冗長して搭載することがコスト増をもたらしている。そこで、マルチコアマイコンは、フォールトトレラントな設計方針(故障しても必要な機能を提供することができる)により設計されることが望まれているが、そのためにはマルチコアマイコンの特性を利用することが有効だと考えられている。 First, multi-core microcomputers generally include the normal cores because if one core fails even though there are multiple cores, the influence of the failed core will propagate to the normal core via the bus etc. It is said that it is necessary to stop all cores (that is, the entire microcomputer). Stopping the multi-core microcomputer in engine control, etc. has little effect on the user, but if the multi-core microcomputer such as EPS (Electric Power Steering) or ECB (Electric Control Braking system) is suddenly stopped, the driver feels awkward Makes you feel. For this reason, it is common to prepare a backup device in the case of an EPS or ECB failure in the vehicle, and redundant installation of functions brings an increase in cost. Therefore, it is desired that multi-core microcomputers are designed based on a fault-tolerant design policy (which can provide necessary functions even if a failure occurs). To do so, it is necessary to use the characteristics of multi-core microcomputers. It is considered effective.
なお、従来から、複数コアで同じ処理を実行するロックステップ機能が搭載されたマルチコアマイコンが知られている。しかしロックステップ機能は信頼性や故障検出率の向上のための技術であり、複数コアで1つの演算結果しか得られず、マルチコアによる性能向上は期待できない。 Conventionally, a multi-core microcomputer equipped with a lock step function for executing the same processing with a plurality of cores is known. However, the lockstep function is a technique for improving the reliability and the failure detection rate, and only one calculation result can be obtained with a plurality of cores.
本実施例では、マルチコアマイコンの特性を利用して、故障時に故障したコアのみを停止させ、正常コアによる演算を継続することでロバスト性を向上させるマルチコアマイコンについて説明する。 In the present embodiment, a multi-core microcomputer that improves the robustness by stopping only the core that has failed at the time of failure and continuing the calculation by the normal core using the characteristics of the multi-core microcomputer will be described.
図2は、ECUに搭載されるマルチコアマイコン100のハードウェア構成図の一例を示す。このマルチコアマイコン100は、上述したエンジンECU、EPS‐ECU、ECB‐ECUだけでなく、HV(ハイブリッド)‐ECU、ゲートウェイECUなど、種々のものに搭載されうる。また、複数のECUの機能が統合された統合ECUに搭載されてもよい。
FIG. 2 shows an example of a hardware configuration diagram of the
マルチコアマイコン100は、命令バス12に接続されたフラッシュROM11及び動作シーケンス制御回路13、データバス15に接続された複数のCPU14(区別する場合、CPU1〜nという)、故障診断装置16、I/O17、RAM18、DMAC19、及び、INTC20、を有する。
The
マルチコアマイコン100は、複数のCPU1〜nを有する。したがって、このマルチコアマイコン100のプロセッサはマルチCPUと呼ばれることがあるが、マイコン自体が1チップに実装されることも多く、マルチコアと区別する意義は小さい。コアが複数個、搭載されていれば、マルチCPU又はマルチコアのいずれと呼ばれているプロセッサでも、本実施例のマルチコアマイコン100に適用することができる。また、マルチコアマイコン100には、同じプロセッサコアを複数搭載するホモジニアスマルチコアと異なる種類のコアを複数搭載するヘテロジニアスマルチコアがあるが、本実施例では各コアが1つのプログラムを命令単位で分散して実行するという点でホモジニアスマルチコアである。しかし、一部のコアが異なる構成を有していてもよい。
The
CPU14は、データバス15に接続されたレジスタセット44、CPUレジスタ45、レジスタセット44及びCPUレジスタ45に接続された演算装置46、プログラムカウンタ41、命令キュー42、並びに、命令デコーダ43、を有する。レジスタセット44には、RAM18に記憶されているデータやI/O17に入力されたセンサの検出値等が、データバス15を介して読み出される。CPUレジスタ45には、演算装置46の演算結果がライトバックされる。レジスタセット44及びCPUレジスタ45は、複数のレジスタの集合である。
The
プログラムカウンタ41には、フラッシュROM11に記憶されたCPUが実行する命令のアドレスが記憶される。本実施例では、動作シーケンス制御回路13が命令を各CPU1〜nに設定するため、プログラムカウンタ41はなくてもよい。なお、CPU14は、動作シーケンス制御回路13に関係なく単独でプログラムを実行することも可能である。この場合、プログラムカウンタ41はアドレスを命令バス12に出力して、そのアドレスの命令を命令キュー42に読み出す。プログラムカウンタ41は、1つの命令が読み出される毎に、記憶しているアドレスの値を大きくして次の命令の読み出しに備える。
The program counter 41 stores an address of an instruction executed by the CPU stored in the
命令キュー42は、FIFO(First In,First Out)型の記憶手段で、複数の命令(例えば、5〜20程度)を保持させておくことができる。命令キュー42には実行順に命令が読み込まれる。命令デコーダ43は、命令キュー42の命令をデコードして、演算装置46や周辺の回路等に、制御線を介して信号を出力する。デコード結果に応じて、例えば、演算装置46に対し、加算、乗算、減算、シフト、除算等を指示する。また、デコードにより命令が演算対象とするオペランドが特定されるので、デコード結果に応じてレジスタセット44及びCPUレジスタ45から演算装置46にデータが入力される。
The instruction queue 42 is a FIFO (First In, First Out) type storage means and can hold a plurality of instructions (for example, about 5 to 20). Instructions are read into the instruction queue 42 in the order of execution. The
演算装置46は、ALU(Arithmetic and Logic Unit)、LSU(Load Store Unit)、MUL(乗算器)、及び、DIV(除算器)を有する。演算装置46は、レジスタセット44,CPUレジスタ45から入力されたデータに各種の演算を施す。演算結果は、CPUレジスタ45にライトバックされ、再度、演算の対象となったり、RAM18に書き込まれる。
The
演算装置46は、1つの命令の実行手順をステージ毎に分け、各ステージを同時に実行するパイプライン制御を備えている。ステージの区分数は設計によって様々だが、IF(Instruction Fetch)、ID(Instruction Decode)、EX(Execute)、MA(Memory Access)、WB(Write Back)の各ステージを有する。パイプライン制御により、1クロックで1つの命令を実行することができる。
The
動作シーケンス制御回路13は、共通命令キュー21、CPUバス制御部22、及び、命令スケジューラ23を有する。動作シーケンス制御回路13は、命令単位で各CPUを並列動作させる。また、レジスタのリフレッシュが必要か否かを判定し、必要ならばCPU1〜nの間でデータを交換する。
The operation
動作シーケンス制御回路13とCPU1〜nは断接可能に接続されており、動作シーケンス制御回路13は故障が検出されたCPU14を物理的に切断する。この場合、正常なCPU14のみでプログラムの実行を継続できる。故障部位を特定できない場合はマイコン全体を停止する。
The operation
共通命令キュー21は、フラッシュROM11から、各CPU1〜nが実行する命令(図では命令コード1〜n)を読み出して記憶する。共通命令キュー21は、各CPUのパイプラインステージを監視し、パイプラインステージが進行する毎に、CPUの数分の命令(CPUが3つの場合は3つの命令。以下、CPUの数の命令を「命令セット」という)をフラッシュROM11から読み出す。命令セットの各命令は、命令キュー制御部32によりCPU1〜CPUnの命令キュー42にセットされる。
The
CPUバス制御部22は、パイプライン同期部31、命令キュー制御部32、命令依存判定部33、CPUレジスタ同期部34、及び、外部アクセス制御部35を有する。パイプライン同期部31は、各CPU1〜nのパイプラインステージを同期させる。この制御により、CPU1がIFのステージを実行する場合は、他のCPU2〜nもIFを実行し、IDのステージを実行する場合は、他のCPU2〜nもIDを実行する等、命令の実行タイミングや実行結果が得られるタイミングを同期させることができる。なお、EXのステージは命令によって消費するクロック数(処理レイテンシ)が異なる。このため、実施例3で説明するように、パイプライン同期部31は、各CPUの消費クロックが同一になるように、処理レイテンシの最も大きい命令を実行するCPUが実行完了するまで、他のCPUをWait(ストール)させる。これにより、各CPUは同じタイミングでIFからのステージを同期して実行することができる。
The CPU
命令キュー制御部32は、共通命令キュー21から取得した命令セットを命令に分解して、各CPU1〜nの命令キュー42に設定する。CPU14の数が3つだとすると、CPU1には命令コード1がセットされ、CPU2には命令コード2がセットされ、CPU3には命令コード3がセットされる。そして、次のサイクルでは、命令キュー制御部32は、CPU1に命令コード4をセットし、CPU2に命令コード5をセットし、CPU3に命令コード6をセットする。このように、命令の順番と、CPUへの割り当て順は固定であるが、必ずしも固定である必要はない。
The instruction
命令依存判定部33は、各命令がそれよりも前の命令の実行結果を必要とする命令依存関係にある命令か否かを判定する。命令依存判定部33は、命令依存関係の命令と、該命令が実行結果を必要とする命令をパイプライン同期部31に通知する。
The instruction
CPUレジスタ同期部34は、各CPU1〜nのレジスタセット44又はCPUレジスタ45を同じデータにリフレッシュする。すなわち、CPU1のレジスタセット44又はCPUレジスタ45のデータが、CPU2の演算に必要な場合、CPUレジスタ同期部34は、CPU1のレジスタセット44又はCPUレジスタ45のデータをCPU2のレジスタセット44又はCPUレジスタ45にコピーする。
The CPU
外部アクセス制御部35は、各CPU1〜nからの外部アクセス(バスアクセス)を調停し、1つのCPUにアクセス権を与える。調停方法は、優先度順、ラウンドロビンなど予め定められている。
The external
命令スケジューラ23は、INTC20から外部割り込みの通知を取得した場合に、共通命令キュー21を更新する。すなわち、外部割り込みが発生した場合、CPU14は割込み内容に応じたタスクを実行する必要があるので、該タスクのプログラムが記憶されたアドレスから命令セットを読み出し、共通命令キュー21にセットする。
The
また、命令スケジューラ23は、分岐命令などに対しても共通命令キュー21を更新する。すなわち、命令キュー制御部32は、CPU14が実行した命令が分岐命令である場合には分岐先のアドレスを、比較命令であった場合にはCPUがステータスフラグを参照して決定したアドレスを、命令スケジューラ23に通知する。命令スケジューラ23は分岐先のアドレスから、命令セットを読み出し、共通命令キュー21にセットする。
The
故障診断装置16は、例えばWDTが例として挙げられる。WDTはCPU1〜n毎にプログラムの実行状態を監視するタイマであり、予め決められた時間内にCPU1〜nがタイマをリセットしないことから、CPU1〜nの異常を検出する。また、一時的に命令単位の分散実行を停止し、各CPU1〜nが同じ命令を実行して結果が同じなるか否かに基づき、故障を検出してもよい。また、一時的に命令単位の分散実行を停止し、各CPU1〜nがアプリケーションとは別に自己診断プログラムを実行し、その値が期待値と一致するか否かに基づき、CPU1〜nの故障を検出してもよい。
An example of the failure diagnosis apparatus 16 is WDT. The WDT is a timer that monitors the execution state of the program for each of the
I/O17には各種のセンサ、ADC、DAC、CANC(CAN Controller)、アクチュエータやアクチュエータのドライバ回路等が接続されている。DMAC19は、I/O17から入力されたデータを、CPU1〜nを介さずにRAM18に記録し、CPU1〜nからの要求を受け付けてRAM18の指定アドレスからセンサやアクチュエータにデータを転送する。
Various sensors, ADC, DAC, CANC (CAN Controller), an actuator, a driver circuit of the actuator, and the like are connected to the I /
INTC20は、故障診断装置16、I/O17などから割込みを受け付けて、動作シーケンス制御回路13に割り込む。割込みにより、動作シーケンス制御回路13は各CPU1〜nが実行する処理を切り換えることができる。
The
〔実行態様〕
図3は、CPU1〜3による命令の実行を模式的に説明する図の一例である。縦方向の命令1〜15は1つのプログラムの実行順である。また、横方向の1〜10は時間の経過を意味し、例えばクロック数やサイクル数を単位とする。
[Execution mode]
FIG. 3 is an example of a diagram schematically illustrating execution of instructions by the
時間1:CPU1が命令キュー42から命令1をフェッチし、CPU2が命令キュー42から命令2をフェッチし、CPU3が命令キュー42から命令3をフェッチしている。
Time 1:
時間2:CPU1が命令1をデコードし、CPU2が命令2をデコードし、CPU3が命令3をデコードしている。
Time 2:
また、パイプライン制御により、CPU1が命令キュー42から命令4をフェッチし、CPU2が命令キュー42から命令5をフェッチし、CPU3が命令キュー42から命令6をフェッチしている。
Also, by pipeline control, the
時間3〜5では、CPU1〜3が各ステージを進行させ、時間5ではIF,ID,EC,MA,WBの5つのステージが同時に実行されるようになる。したがって、時間5以降は、1クロック毎にCPU1〜3の3つの命令の実行結果が得られる。すなわち、時間5〜9の間に、合計15個の実行結果が得られる。このように、CPU1〜3が3命令ずつ並列に命令を実行することで、マルチコアの性能を最大限引き出すことができる。
At times 3-5, the CPUs 1-3 advance each stage, and at
図4は、故障が検出された場合のCPU1〜3による命令の実行を模式的に説明する図の一例である。命令1〜6については、図3と同様に正常に実行されている。故障診断装置16は、故障したCPUを動作シーケンス制御回路13に通知する。これにより、動作シーケンス制御回路13は故障が検出されたCPU14を物理的に切断することで、命令の実行対象から除外する。
FIG. 4 is an example of a diagram schematically illustrating execution of instructions by the
CPU1が故障した場合、動作シーケンス制御回路13はCPU2,3のみで命令を分散して実行する。このため、CPU1が故障した以降は、1クロック毎に2つの命令の実行結果が得られる。
When the
なお、CPU1の故障が検出された時に、すでに命令キュー制御部32がCPU1に割り当てた命令はどのCPUも実行しないことになる。このため、命令キュー制御部32は、CPU1が故障するまでに、CPU1〜3が実行した最後の命令の次の命令から、CPU2,3に再度、割り当てる。例えば、CPU1が故障するまでに、CPU1〜3が命令6まで実行した場合、命令キュー制御部32は命令7、8から、CPU2,3に割り当てる。これにより、図示するように、命令7,9,11,13はCPU2により、命令8,10,12,14はCPU3により、並列に実行される。
Note that when a failure of the
したがって、全てのCPU14の故障が検出されない限り、処理速度は低下してもマルチコアマイコン100は動作を継続することができる。
Therefore, as long as no failure of all the
図5は、動作シーケンス制御回路13の動作手順の一例を示す図である。動作シーケンス制御回路13は例えば、クロック毎に、故障診断装置16から故障が通知されたか否かを判定する(S10)。
FIG. 5 is a diagram illustrating an example of an operation procedure of the operation
故障が検出されない場合、命令スケジューラ23が共通命令キュー21にCPU14の数分の命令セットを読み出す(S20)。
If no failure is detected, the
一方、故障が検出された場合(S20のYes)、動作シーケンス制御回路13は故障したCPU14を切断する(S50)。また、動作シーケンス制御回路13は、命令スケジューラ23及び共通命令キュー21に、故障していないCPUの数、又は、故障したCPUの数を通知することで、命令セットとして一度に読み出す命令数を調整する。また、動作シーケンス制御回路13は、命令キュー制御部32に、切断されていないCPU14を通知する。
On the other hand, when a failure is detected (Yes in S20), the operation
この後の処理は、CPU14の故障の有無に関係なく共通である。すなわち、共通命令キュー21は命令セットとしてCPU14の数分の命令を読み出す(S20)。
The subsequent processing is common regardless of whether or not the
次に、命令キュー制御部32は共通命令キュー21から読み出した命令セットの各命令をCPU1〜nに割り当てる(S30)。
Next, the instruction
パイプライン同期部31は、各CPU1〜nの実行ステージを同期させながら、1ステージ進行させる(S40)。以降は、ステップS10からの繰り返しとなる。
The
本実施例のマルチコアマイコン100によれば、故障したCPUを物理的に切断可能であり、正常なCPUのみで処理を継続できる。また、動作するCPU14の数が変わっても、命令セットに含まれる命令の数と、命令を割り当て先のCPUを調整すれば演算を継続できる。したがって、タスク単位で処理を分散する場合のように、タスクの入れ替え(コンテキストスイッチ)などの複雑な制御が不要である。
According to the
また、本実施例のマルチコアマイコン100は、命令単位で処理を分散できるので、タスク単位の処理の分散では並列動作の実現が難しいのに対し、マルチコアの性能を最大限引き出すことができる。また、命令単位で分散できるので、すでに使用されているシングルコアのプログラムを流用しやすい。
In addition, since the
命令単位で処理を分散した場合、命令の依存関係により、各CPUが並列に命令を実行できない場合がある。例えば、命令1〜3が次のような場合、命令2は命令1との間に命令依存関係を有しているため、並列に実行できない。
命令1:A+B→C
命令2:C+D→E
命令3:F+G→H
この命令1〜3をCPU1〜3がそれぞれ実行する場合、CPU2が命令2を実行するには、CPU1の命令1の実行結果が必要である。このため、CPU1とCPU2は、並列に処理を実行できない。
When processing is distributed in units of instructions, each CPU may not be able to execute instructions in parallel due to instruction dependency. For example, when the
Command 1: A + B → C
Command 2: C + D → E
Command 3: F + G → H
When the
本実施例では、このような命令依存関係を命令依存判定部33が検出し、パイプライン同期部31が命令依存関係の命令を実行するCPU14をWaitさせるマルチコアマイコン100について説明する。
In the present embodiment, a description will be given of the
命令依存判定部33は、同時に実行される命令セットに含まれる命令1〜3に命令依存関係があるか否かを判定する。判定方法は、例えば以下のようになる。命令依存判定部33は、1つの命令セットの中で、命令順に1つの命令に着目し演算結果が格納されるレジスタ名又は変数名(アドレス番地)を特定する。そして、このレジスタ名又は変数名が、後の命令の演算対象のオペランドに記述されているか否かを判定する。記述されていれば、後の命令には命令依存関係があることになる。上記の例では、命令1の演算結果が格納されるレジスタ名が“C”であり、“C”というレジスタ名が、後の命令2の演算対象のオペランド(C+Dの“C”)に記述されている。よって、命令2は命令1に対し命令依存関係がある。以下、命令2を「命令依存関係がある命令」、命令1を「先行命令」と称す。
The instruction
図6は、命令依存関係によるCPU14のWaitを説明する図の一例を、図7は命令依存関係が検出された場合の動作シーケンス制御回路13の動作手順の一例をそれぞれ示す。ここでは、ステップS25において、命令依存判定部33が命令2は、命令1との間に命令依存関係があると判定したとする。
(S25‐1) 命令キュー制御部32は、命令2が実行結果を必要とする先行命令の命令1をCPU1に割り当てる。こうすることで、CPU1は命令2よりも先に命令1を実行完了できる。
(S25‐2) 命令キュー制御部32は、CPU1以外のCPU2,3をWaitさせる。
(S25‐3) パイプライン同期部31は、各CPU1〜3を1ステージ実行させる。CPU2,3はWaitしているので何もしない。これにより、CPU1だけ先行命令の命令1のステージを進めることができる。
(S25‐4) 命令キュー制御部32は、命令2〜4を命令セットとして、その中の命令依存関係のある命令2を、先行命令を実行するCPUであるCPU1に割り当てる。これにより同じCPU1が命令依存関係のある命令2と先行命令である命令1を実行できる。
FIG. 6 is an example of a diagram for explaining the wait of the
(S25-1) The instruction
(S25-2) The instruction
(S25-3) The
(S25-4) The instruction
また、命令キュー制御部32は、命令セットのうち残りの命令3,4をCPU2,3に割り当てる。すなわち、CPU2,3は命令2,3ではなく、命令3,4を実行する。
The instruction
以降の処理は、実施例1と同様であり、パイプライン同期部31は、各CPU1〜3の実行ステージを一致させながら1ステージ実行させる(S40)。以降は、ステップS10からの繰り返しとなる。
The subsequent processing is the same as in the first embodiment, and the
本実施例のマルチコアマイコン100は、CPU1が先行命令を実行している間、他のCPU2,3をWaitさせ、命令依存関係の命令2を、先行命令である命令1を実行するCPUと同じCPU1に割り当てる。これにより、命令セット内に命令依存関係が検出されても、命令単位で処理を分散させることができる。
The
なお、本実施例は実施例1と共にマルチコアマイコン100に適用することができる。
This embodiment can be applied to the
本実施例では、CPU毎の命令の処理レイテンシの違いを調整するマルチコアマイコン100について説明する。すでに説明したように、ALUがシフト命令を実行するために必要なクロック数と、MULが乗算命令を実行するために必要なクロック数、又は、DIVが除算命令を実行するために必要なクロック数は大きく異なる。このクロック数を処理レイテンシと呼び、1つの命令セットで処理レイテンシが異なれば、CPU1〜nが命令を実行完了する時間が異なってしまう。
In this embodiment, a description will be given of the
CPU毎に命令の実行完了時間が異なる場合の不都合を説明する。例えば、CPU1〜3が命令1〜3を実行した後、命令4〜6を実行する場合を考える。CPU1が命令1を実行するために大きな遅延があり、CPU1が実行する命令4が命令1と命令依存関係にある場合、CPU1が命令4のEXステージを実行する際に、命令1の実行が完了していないおそれがある。
An inconvenience when the execution completion time of the instruction is different for each CPU will be described. For example, consider a case where the
また、CPU1〜nが実行する命令の実行完了時間が異なる場合、各CPU1〜nが実行結果に応じて非同期にバスの獲得要求を出力する。例えば、処理レイテンシの違いにより、CPU2がCPU1よりも先に命令2を実行完了させバスの獲得要求を出力したとする。しかし、CPU1が命令1の実行のためにバスを使用することが必要な場合、CPU1はさらに命令1の実行完了が遅れてしまう。
When execution completion times of instructions executed by the
そこで、本実施例では、各CPU1〜nが実行する命令の処理レイテンシに応じて、ステージにWaitを挿入する。すなわち、各CPU1〜nが実行する命令の実行完了のタイミングがずれた場合、パイプライン同期部31は、処理レイテンシが短いCPUにWaitを挿入することで、各CPU1〜nが同期して命令セットを実行完了するように調整する。
Therefore, in this embodiment, Wait is inserted into the stage according to the processing latency of the instructions executed by the
図8は、処理レイテンシとWaitによる調整を説明する図の一例である。命令1〜3は次の処理レイテンシであるとする。なお、各命令の処理レイテンシは、動作シーケンス制御回路13にとって既知である。
命令1:処理レイテンシが2
命令2:処理レイテンシが3
命令3:処理レイテンシが1
パイプライン同期部31は、命令1〜3で最も処理レイテンシが大きい命令2を実行したCPU2のEXステージ(時間3〜5)を特定する。時間6以降であれば、各CPU1〜3は次の命令セットのEXステージを実行可能である。よって、パイプライン同期部31は、時間6にCPU1〜3の命令4〜6のEXステージを揃える。
FIG. 8 is an example of a diagram illustrating adjustment by processing latency and wait. It is assumed that the
Instruction 1: Processing latency is 2
Instruction 2: Processing latency is 3
Instruction 3: Processing latency is 1
The
同様に、時間6に、CPU1〜3の命令7〜9のIDステージを揃える。同様に、時間6に、CPU1〜3の命令10〜12のIFステージを揃える。時間6に揃えるステージが、後続の命令セット毎に早まるのは、パイプライン制御によるものである。
Similarly, at
このように、処理レイテンシが大きい命令を実行したCPU2の命令の実行完了に合わせて、後続の命令セットのステージを遅らせることで、各CPU1〜3のステージを同期させることができる。本実施例において、命令1〜3の命令セットを「検出命令セット」、命令4〜6の命令セットを「次命令セット」、命令7〜9の命令セットを「次〃命令セット」、命令10〜12の命令セットを「次〃〃命令セット」という。
In this way, the stages of the
図9は、各CPU1〜3が処理レイテンシの異なる命令を実行した場合の動作シーケンス制御回路の動作手順の一例を示す。図9の手順は、例えば図5,7のステップS30に続いて実行される。
FIG. 9 shows an example of an operation procedure of the operation sequence control circuit when the
パイプライン同期部31は、各CPU1〜3のEXステージの実行結果を監視し、処理レイテンシが異なるか否かを判定する(S110)。処理レイテンシは完全に一致している必要はなく、ある程度のずれは許容することができる。
The
処理レイテンシが異ならない場合、パイプライン同期部31はWaitを挿入することなく、図9の処理は終了され、各CPU1〜3のステージを進行させる(S40)。
If the processing latencies are not different, the
処理レイテンシが異なる命令がある場合(S110のYes)、パイプライン同期部31は、次命令セットの、EXステージの前にWaitを挿入する(S120)。図8では、時間4の命令4〜6のWaitが対応する。
If there are instructions with different processing latencies (Yes in S110), the
同様に、パイプライン同期部31は、次〃命令セットの、IDステージの前にWaitを挿入する(S130)。図8では、時間4の命令7〜9のWaitが対応する。
Similarly, the
同様に、パイプライン同期部31は、次〃〃命令セットの、IFステージの前にWaitを挿入する(S140)。図8では、時間4の命令10〜12のWaitが対応する。
Similarly, the
そして、パイプライン同期部31は各CPU1〜3のステージを1つ進める(S150)。命令4〜12はWaitなのでステージは進まないが、命令1〜3は1ステージ又は1ステージ内の処理が進行する。
Then, the
次に、パイプライン同期部31は、処理レイテンシが異なる命令が検出された検出命令セットのうち、最も処理レイテンシが大きい命令が実行完了したか否かを判定する(S160)。すなわち、図8ではCPU2が命令2を実行完了したか否かを判定する。ここでは、同じCPU内で演算結果を利用できればよいので、実行完了とはEXステージが終わることである。
Next, the
最も処理レイテンシが大きい命令が実行完了していない場合(S160のNo)、パイプライン同期部31は、次命令セットの、EXステージの前にWaitを挿入する(S120)。図8では、時間5の命令4〜6のWaitが対応する。
If execution of the instruction with the largest processing latency has not been completed (No in S160), the
同様に、パイプライン同期部31は、次〃命令セットの、IDステージの前にWaitを挿入する(S130)。図8では、時間5の命令7〜9のWaitが対応する。
Similarly, the
同様に、パイプライン同期部31は、次〃〃命令セットの、IFステージの前にWaitを挿入する(S140)。図8では、時間5の命令10〜12のWaitが対応する。
Similarly, the
そして、パイプライン同期部31は各CPUのステージを1つ進める(S150)。これにより、CPU2が命令2を実行完了させることができる。
Then, the
最も処理レイテンシが大きい命令が実行完了した場合(S160のYes)、図9の処理は終了する。すなわち、パイプライン同期部31は、Waitを挿入しないので、各CPU1〜3の命令1〜12のステージが1つ進行される(S40)。
When the execution of the instruction with the largest processing latency is completed (Yes in S160), the processing in FIG. 9 ends. That is, since the
本実施例のマルチコアマイコン100は、各CPU1〜nが命令セット内で処理する命令の処理レイテンシが異なっても、各ステージにWaitを挿入することで、各CPUの実行ステージを同期させることができる。したがって、命令セット内に処理レイテンシの異なる命令があってもCPU1〜3のステージを同期させ、命令依存関係の発生を抑制できる。
The
なお、本実施例は実施例1,2と共にマルチコアマイコン100に適用することができる。
This embodiment can be applied to the
本実施例では異なるCPU1〜nが演算結果を同期するマルチコアマイコン100について説明する。図1において説明したように、CPU1が実行する命令の被演算子が、CPU2など他のCPUのCPUレジスタ45に記憶されている場合がある。このままではCPU1は演算を実行できないので、CPUレジスタ同期部34はCPU1に、CPU2のレジスタに記憶されている演算結果をコピーする。
In this embodiment, a
図10は、レジスタのリフレッシュを説明する図の一例である。説明のため、命令セットを順番に命令セットA〜Dという。 FIG. 10 is an example of a diagram illustrating register refresh. For the sake of explanation, the instruction sets are referred to as instruction sets A to D in order.
(i) 命令依存判定部33は、命令セットBの命令が、直前の命令セットAの命令と命令依存関係にあるか否かを判定する。具体的には、以下の命令依存関係を判定する。
CPU1が実行する命令4が、命令2,3と命令依存関係にあるか否か
CPU2が実行する命令5が、命令1,3と命令依存関係にあるか否か
CPU3が実行する命令6が、命令1,2と命令依存関係にあるか否か
同様の関係が、命令セットCとB、命令セットDとC、のように前後の命令セット毎に生じる。例えば、命令セットCとBでは、
CPU1が実行する命令7が、命令5,6と命令依存関係にあるか否か
CPU2が実行する命令8が、命令4,6と命令依存関係にあるか否か
CPU3が実行する命令9が、命令4,5と命令依存関係にあるか否か
が判定される。
(i) The instruction
Whether the
Whether the
判定方法は、例えば以下のようになる。命令4の演算対象のオペランドに、命令2,3の演算結果が格納されるレジスタ名又は変数名(アドレス番地)が記述されているか否かを判定する。記述されていれば、命令4には命令2又は命令3と命令依存関係があることになる。また、命令2又は3は先行命令となる。ここでは命令4が命令依存関係の命令であり、命令2が先行命令であるとする。
The determination method is as follows, for example. It is determined whether or not the register name or variable name (address address) in which the operation results of the
(ii) パイプライン同期部31は、先行命令の命令2の実行が完了したタイミングで、CPU2のCPUレジスタ45のデータをCPU1のレジスタにコピーする。コピーするまではCPU1は命令4を実行できないので、パイプライン同期部31は実施例3と同様に各ステージにWaitを挿入する。Waitの間に、CPU2のCPUレジスタ45のデータをCPU1のレジスタにコピーすればよい。
(ii) The
具体的には、例えば、CPU2のCPUレジスタ45とCPU1のレジスタセット44を直接、接続しておく。CPUレジスタ同期部34は、CPU2が命令2を実行完了したタイミングで、CPU2のCPUレジスタ45のデータをCPU1にコピーする。
Specifically, for example, the
図11は、命令セット間の命令依存関係がある場合の、動作シーケンス制御回路13の動作手順の一例を示す。なお、図11の手順は、例えば図5,7のステップS30に続いて実行される。
FIG. 11 shows an example of an operation procedure of the operation
なお、命令依存判定部33は、予め、命令セット間に命令依存関係があるか否かを判定しておく。例えば、2つ以上の命令セットA,Bを命令キュー42に読み出し、命令セットBと直前の命令セットAとの間の命令依存関係を判定しておく。命令依存関係がある場合、命令依存関係がある命令を実行するCPU、及び、先行命令を実行するCPUを記録しておく。
The instruction
本実施例において、命令依存関係がある命令4が含まれる命令4〜6の命令セットの次の命令セット(命令7〜9)を「次命令セット」、命令10〜12の命令セットを「次〃命令セット」という。
In this embodiment, the next instruction set (
パイプライン同期部31は、先行命令を実行しているか否かを判定する(S210)。この判定は、先行命令のEXステージよりも前で行えばよい。先行命令を実行していない場合(S210のNo)、パイプライン同期部31はWaitを挿入することなく、各CPU1〜3のステージを進行させる(S40)。
The
先行命令を実行している場合(S210のYes)、パイプライン同期部31は、命令依存関係がある命令を含む命令セットのEXステージの前にWaitを挿入する(S220)。図10では、時間4の命令4〜6のWaitが対応する。
When the preceding instruction is being executed (Yes in S210), the
同様に、パイプライン同期部31は、命令依存関係がある命令を含む命令セットの次の命令セットである次命令セットの、IDステージの前にWaitを挿入する(S230)。図10では、時間4の命令7〜9のWaitが対応する。
Similarly, the
同様に、パイプライン同期部31は、次〃命令セットの、IFステージの前にWaitを挿入する(S240)。図10では、時間4の命令10〜12のWaitが対応する。
Similarly, the
そして、パイプライン同期部31は各CPU1〜3のステージを1つ進める(S250)。命令4〜12はWaitなのでステージは進まないが、命令1〜3は1ステージ又は1ステージ内の処理が進行する。
Then, the
次に、パイプライン同期部31は、先行命令の実行が完了したか否かを判定する(S260)。すなわち、図10ではCPU2が命令2を実行完了したか否かを判定する。命令依存関係のある命令4を実行するCPU1と、先行命令の命令2を実行するCPU2とでCPUが異なるため、実行完了したか否はライトバックされたか否かにより判定される。
Next, the
先行命令を実行している場合(S210のYes)、パイプライン同期部31は、命令依存関係がある命令を含む命令セットのEXステージの前にWaitを挿入する(S220)。図10では、時間5の命令4〜6のWaitが対応する。
When the preceding instruction is being executed (Yes in S210), the
同様に、パイプライン同期部31は、次命令セットの、IDステージの前にWaitを挿入する(S230)。図10では、時間5の命令7〜9のWaitが対応する。
Similarly, the
同様に、パイプライン同期部31は、次〃命令セットの、IFステージの前にWaitを挿入する(S240)。図10では、時間5の命令10〜12のWaitが対応する。
Similarly, the
そして、先行命令の実行が完了した場合(S260のYes)、CPUレジスタ同期部34はレジスタをリフレッシュする(S270)。すなわち、CPUレジスタ同期部34は、CPU2のCPUレジスタ45のデータをCPU1のレジスタセット44にコピーする。これにより、CPU1はCPU2の演算結果を利用して命令4を実行できる。以降は、図5,7のステップS40に進み、Waitが挿入されることなく、各CPU1〜3が命令4〜12のステージを進行させる。
When the execution of the preceding instruction is completed (Yes in S260), the CPU
本実施例のマルチコアマイコン100は、命令セット間で異なるCPU間に命令依存関係があっても、レジスタをリフレッシュすることで、命令単位で命令を分散して実行することを可能にできる。
The
なお、本実施例は実施例1〜3と共にマルチコアマイコン100に適用することができる。
This embodiment can be applied to the
13 動作シーケンス制御回路
14 CPU
16 故障診断装置
21 共通命令キュー
22 CPUバス制御部
23 命令スケジューラ
31 パイプライン同期部
32 命令キュー制御部
33 命令依存判定部
34 CPUレジスタ同期部
35 外部アクセス制御部
100 マルチコアマイコン
13 Operation
DESCRIPTION OF SYMBOLS 16 Failure
Claims (6)
プログラムを記憶するプログラム記憶手段と、
コア毎の演算結果を記憶する演算結果記憶手段と、
コア数分の命令が含まれる命令セットを実行順に前記プログラム記憶手段から読み出し一次記憶部に記憶する命令読み出し手段と、
命令セットに含まれる命令を各コアの命令キューに記憶する命令配信手段と、
前記一次記憶部に記憶された第一の命令セットに含まれる命令を第一のコアが演算した演算結果を、演算対象とする依存命令が、第一の命令セットよりも後に実行される第二の命令セットに含まれ、第一のコアと異なる第二のコアが実行するか否かを判定する命令依存関係判定手段と、
前記命令依存関係判定手段が、第二のコアが前記第二の命令セットに含まれる前記依存命令を実行すると判定した場合、第一のコアの前記演算結果記憶手段の値を、前記第二のコアの前記演算結果記憶手段に複写する複写手段と、
を有する情報処理装置。 In an information processing apparatus in which multiple cores execute instructions in parallel,
Program storage means for storing a program;
Calculation result storage means for storing calculation results for each core;
Instruction reading means for reading an instruction set including instructions for the number of cores in the execution order from the program storage means, and storing the instruction set in a primary storage unit;
Instruction distribution means for storing instructions included in the instruction set in an instruction queue of each core;
A dependent instruction whose operation target is an operation result obtained by the first core calculating an instruction included in the first instruction set stored in the primary storage unit is executed after the first instruction set. Instruction dependency determination means for determining whether or not a second core different from the first core executes, included in the instruction set;
When the instruction dependency relationship determining unit determines that the second core executes the dependency instruction included in the second instruction set, the value of the operation result storage unit of the first core is set to the second core. Copying means for copying to the calculation result storage means of the core;
An information processing apparatus.
前記ステージ同期手段は、前記第一のコアが、前記第二のコアが演算対象とする演算結果を前記第一のコアの前記演算結果記憶手段に記憶させるまで、複数のコアが実行する前記第一の命令セットよりも後の命令セットの各命令のステージが命令実行のステージに到達しないように、複数のコアのステージを停止させる、
ことを特徴とする請求項1記載の情報処理装置。 A stage in which a plurality of cores control the progress of the stage so that each instruction is executed while synchronizing each stage of instruction reading from the instruction queue, instruction decoding, instruction execution, and storage in the operation result storage means Having synchronization means;
The stage synchronization means is executed by the plurality of cores until the first core stores the calculation result to be calculated by the second core in the calculation result storage means of the first core. Stopping the stages of multiple cores so that the stage of each instruction in the instruction set after one instruction set does not reach the stage of instruction execution,
The information processing apparatus according to claim 1.
前記命令配信手段は、命令セットに含まれる前記第一の命令を複数のコアのいずれか1つの前記命令キューに記憶し、
前記ステージ同期手段は前記命令キューに前記第一の命令が記憶されたコア以外のコアのステージを停止させた状態で、前記命令キューに前記第一の命令が記憶されたコアに命令読み出しのステージを実行させ、
前記命令配信手段は、前記第二の命令を、前記第一の命令を実行したコアの前記命令キューに記憶すると共に、前記第二の命令を先頭とする命令セットの残りの命令を他のコアの前記命令キューに記憶し、
前記ステージ同期手段は、複数のコアのステージを同期させながら各コアに前記第二の命令以降の命令を実行させる、
ことを特徴とする請求項2記載の情報処理装置。 When the instruction dependency relationship determining unit determines that the second instruction included in the instruction set is the operation target of the operation result of the first instruction in the same instruction set,
The instruction distribution means stores the first instruction included in the instruction set in the instruction queue of any one of a plurality of cores,
The stage synchronization means stops a stage of a core other than the core in which the first instruction is stored in the instruction queue, and reads the instruction in the core in which the first instruction is stored in the instruction queue. And execute
The instruction distribution means stores the second instruction in the instruction queue of the core that executed the first instruction, and stores the remaining instructions of the instruction set starting with the second instruction to another core. Stored in the instruction queue of
The stage synchronization means causes each core to execute instructions subsequent to the second instruction while synchronizing the stages of a plurality of cores.
The information processing apparatus according to claim 2.
前記ステージ同期手段は、処理レイテンシが異なる命令を実行するコアが、命令実行のステージを終えるまで、処理レイテンシが異なる命令を含む命令セットの次の命令セットの各命令のステージが命令実行のステージに到達しないように、複数のコアのステージを停止させる、
ことを特徴とする請求項2記載の情報処理装置。 If the instruction set includes instructions with different processing latencies required for the instruction execution stage,
The stage synchronization means is configured such that each instruction stage of an instruction set following an instruction set including an instruction having a different processing latency becomes an instruction execution stage until a core executing an instruction having a different processing latency finishes the instruction execution stage. Stop multiple core stages to avoid reaching
The information processing apparatus according to claim 2.
故障検出手段がコアの故障を検出した場合、故障が検出されたコアと、前記プログラム記憶手段、前記命令読み出し手段、前記命令配信手段、及び、前記ステージ同期手段とを切断する切断手段を有し、
前記命令読み出し手段は、切断されたコアを除くコア数分の命令を含む命令セットを前記プログラム記憶手段から読み出し一次記憶部に記憶し、
前記命令配信手段は、命令セットに含まれる、切断されたコアを除くコア数分の命令を各コアの命令キューに記憶する、
ことを特徴とする請求項2〜4いずれか1項記載の情報処理装置。 It has a failure detection means for detecting a failure for each core,
When the failure detection unit detects a core failure, the failure detection unit includes a cutting unit that disconnects the core from which the failure has been detected and the program storage unit, the command reading unit, the command distribution unit, and the stage synchronization unit. ,
The instruction reading means reads an instruction set including instructions for the number of cores excluding the disconnected core from the program storage means and stores it in a primary storage unit,
The instruction distribution means stores instructions for the number of cores included in the instruction set, excluding the disconnected core, in the instruction queue of each core.
The information processing apparatus according to claim 2, wherein the information processing apparatus is an information processing apparatus.
コア毎の演算結果を記憶する演算結果記憶手段と、を有し、
複数のコアが並列に命令を実行する情報処理装置の命令実行方法において、
命令読み出し手段が、コア数分の命令が含まれる命令セットを実行順に前記プログラム記憶手段から読み出し一次記憶部に記憶するステップと、
命令配信手段が、命令セットに含まれる命令を各コアの命令キューに記憶するステップと、
命令依存関係判定手段が、前記一次記憶部に記憶された第一の命令セットに含まれる命令を第一のコアが演算した演算結果を演算対象とする依存命令が、第一の命令セットよりも後に実行される第二の命令セットに含まれ、第一のコアと異なる第二のコアが実行するか否かを判定するステップと、
前記命令依存関係判定手段が、第二のコアが前記第二の命令セットに含まれる前記依存命令を実行すると判定した場合、複写手段が、第一のコアの前記演算結果記憶手段の値を、前記第二のコアの前記演算結果記憶手段に複写するステップと、
を有する情報処理方法。 Program storage means for storing a program;
Calculation result storage means for storing calculation results for each core,
In an instruction execution method of an information processing apparatus in which a plurality of cores execute instructions in parallel,
Instruction reading means reads an instruction set including instructions for the number of cores in the execution order from the program storage means and stores it in the primary storage unit;
An instruction distribution means for storing instructions included in the instruction set in an instruction queue of each core;
The instruction dependency relation determining means has a dependency instruction whose operation target is an operation result obtained by the first core calculating an instruction included in the first instruction set stored in the primary storage unit, as compared to the first instruction set. Determining whether a second core included in a second instruction set to be executed later and different from the first core executes;
When the instruction dependency determining means determines that the second core executes the dependent instruction included in the second instruction set, the copying means sets the value of the operation result storage means of the first core, Copying to the operation result storage means of the second core;
An information processing method comprising:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011193582A JP2013054625A (en) | 2011-09-06 | 2011-09-06 | Information processor and information processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011193582A JP2013054625A (en) | 2011-09-06 | 2011-09-06 | Information processor and information processing method |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013054625A true JP2013054625A (en) | 2013-03-21 |
Family
ID=48131539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011193582A Withdrawn JP2013054625A (en) | 2011-09-06 | 2011-09-06 | Information processor and information processing method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2013054625A (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102016206490A1 (en) | 2015-04-20 | 2016-10-20 | Denso Corporation | ELECTRONIC CONTROL UNIT |
JP2018521427A (en) * | 2015-07-30 | 2018-08-02 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | System and method for variable lane architecture |
JPWO2021255926A1 (en) * | 2020-06-19 | 2021-12-23 | ||
CN115220990A (en) * | 2021-12-09 | 2022-10-21 | 广州汽车集团股份有限公司 | Multi-core system program flow monitoring method, device, equipment and storage medium |
-
2011
- 2011-09-06 JP JP2011193582A patent/JP2013054625A/en not_active Withdrawn
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102016206490A1 (en) | 2015-04-20 | 2016-10-20 | Denso Corporation | ELECTRONIC CONTROL UNIT |
JP2018521427A (en) * | 2015-07-30 | 2018-08-02 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | System and method for variable lane architecture |
US10691463B2 (en) | 2015-07-30 | 2020-06-23 | Futurewei Technologies, Inc. | System and method for variable lane architecture |
US10884756B2 (en) | 2015-07-30 | 2021-01-05 | Futurewei Technologies, Inc. | System and method for variable lane architecture |
JPWO2021255926A1 (en) * | 2020-06-19 | 2021-12-23 | ||
CN115220990A (en) * | 2021-12-09 | 2022-10-21 | 广州汽车集团股份有限公司 | Multi-core system program flow monitoring method, device, equipment and storage medium |
CN115220990B (en) * | 2021-12-09 | 2024-04-19 | 广州汽车集团股份有限公司 | Multi-core system program flow monitoring method, device, equipment and storage medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111164578B (en) | Error recovery for lock-step mode in core | |
JP5411587B2 (en) | Multi-thread execution device and multi-thread execution method | |
KR101546033B1 (en) | Reliable execution using compare and transfer instruction on an smt machine | |
EP2179350B1 (en) | Compound instructions in a multi-threaded processor | |
JP3702815B2 (en) | Interprocessor register inheritance method and apparatus | |
JP2006351008A (en) | Method for blocking thread upon dispatch of multithread processor, computer program, and device (minute multithread dispatch lock mechanism) | |
JP2013054625A (en) | Information processor and information processing method | |
JP2014191655A (en) | Multiprocessor, electronic control device, and program | |
US20160224398A1 (en) | Synchronization in a Multi-Processor Computing System | |
US20130111152A1 (en) | Method for optimizing memory access in a microprocessor including several logic cores upon resumption of executing an application, and computer program implementing such a method | |
JP2005521937A (en) | Context switching method and apparatus in computer operating system | |
US10133578B2 (en) | System and method for an asynchronous processor with heterogeneous processors | |
US20080222336A1 (en) | Data processing system | |
WO2019188177A1 (en) | Information processing device | |
TWI756212B (en) | Processing vector instructions | |
US20060179285A1 (en) | Type conversion unit in a multiprocessor system | |
JP2010176403A (en) | Multithread processor device | |
CN112445587A (en) | Task processing method and task processing device | |
US6697933B1 (en) | Method and apparatus for fast, speculative floating point register renaming | |
JP7169081B2 (en) | Information processing equipment | |
JP2011008617A (en) | Multithread execution device, method of generating object program, and program | |
Wächter et al. | A context saving fault tolerant approach for a shared memory many-core architecture | |
JPH08235149A (en) | Instruction generating and distributing device of single-instruction, multi-data type parallel computer | |
JP2560098B2 (en) | Clock stop control method by machine check | |
Reif | Fault tolerance in multi-core systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20141202 |