JP5808450B1 - マルチコアプロセッサを使用して逐次プログラムを実行する制御装置 - Google Patents
マルチコアプロセッサを使用して逐次プログラムを実行する制御装置 Download PDFInfo
- Publication number
- JP5808450B1 JP5808450B1 JP2014077800A JP2014077800A JP5808450B1 JP 5808450 B1 JP5808450 B1 JP 5808450B1 JP 2014077800 A JP2014077800 A JP 2014077800A JP 2014077800 A JP2014077800 A JP 2014077800A JP 5808450 B1 JP5808450 B1 JP 5808450B1
- Authority
- JP
- Japan
- Prior art keywords
- program
- cache memory
- instruction cache
- memory
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000015654 memory Effects 0.000 claims abstract description 129
- 230000002093 peripheral effect Effects 0.000 description 16
- 238000000034 method Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 12
- 230000005055 memory storage Effects 0.000 description 4
- 235000011835 quiches Nutrition 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000020169 heat generation Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/507—Low-level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Numerical Control (AREA)
Abstract
【課題】マルチコアプロセッサを用いてキャッシュミスを起こさずに逐次プログラムを実行する制御装置を提供する。【解決手段】プログラムプロファイル情報と、予め用意したキャッシュメモリ情報(各コアのキャッシュメモリの容量、使用率)を用い、逐次プログラムをキャッシュメモリに収まるサイズのプログラムに分割し、分割したプログラムの情報をプログラム実行情報としてメモリへ格納する。逐次プログラムのプログラムプロファイル情報を取得するsb01。キャッシュメモリの情報を取得するsb02。プログラムプロファイル情報とキャッシュメモリ情報とに基づいて逐次プログラムの分割する分割アドレスを決定するsb03。分割プログラムのID、割り当てコア番号、プログラムの開始アドレス、終了アドレス、及びキャッシュ格納ブロック情報をプログラム実行情報としてメモリへ格納するsb04。【選択図】図5
Description
本発明は、工作機械を制御する制御装置に関し、特に、マルチコアプロセッサを使用して逐次プログラムを実行する制御装置に関する。
図16は従来の数値制御装置の構成を示す図である。数値制御装置10は、数値制御部11、PMC部12、サーボモータ制御部13、アンプインタフェース部14を備えている。数値制御部11は、プロセッサコア20、第1レベルのキャッシュメモリ(L1キャッシュ)21、第2レベルのキャッシュメモリ(L2キャッシュ)22、DRAM24、周辺LSI25を備えており、各要素はバス23を介して相互に接続されている。PMC部12は、プロセッサコア30、第1レベルのキャッシュメモリ(L1キャッシュ)31、第2レベルのキャッシュメモリ(L2キャッシュ)32、DRAM34、周辺LSI35を備えており、各要素はバス33を介して相互に接続されている。機械側IOユニット16はフィールドバス17を介してPMC部12の周辺LSI35に接続されている。
サーボモータ制御部13は、サーボ制御部プロセッサ40、周辺制御LSI45を備えている。各要素はバス43を介して相互に接続されている。アンプインタフェース部14は周辺制御LSI55を備えている。モータ制御用アンプ18はシリアルサーボバス19を介してアンプインタフェース部14の周辺制御LSI55に接続されている。数値制御部11、PMC部12、サーボモータ制御部13、および、アンプインタフェース部14は、内部バス15を介して相互に接続されている。
数値制御装置10全体のメインのプロセッサである数値制御部11のプロセッサコア20は、一定周期で発生する割り込み毎に、PMC部12およびサーボモータ制御部13での演算結果を内部バス15経由で読み取り、それを元に演算した結果をPMC部12およびサーボモータ制御部13に同じく内部バス15経由で書き込む。
工作機械を制御する数値制御装置のような制御装置では、サーボモータの位置と速度をリアルタイムに制御するために、優先度の高い大規模な逐次プログラムを一定の周期で所定の時間内に処理する必要がある。この逐次プログラムの処理時間は、数値制御装置の性能に大きな影響を与える。数値制御装置の機能追加による前記逐次プログラムのステップ数の増加により、その処理時間も増加する傾向にある。この逐次プログラムの処理時間が延びると、他のプロセスの処理時間を圧迫するだけでなく、この逐次プログラムが所定の時間内に処理を完了できなくなれば、工作機械を制御するシステムとして成り立たなくなってしまう。
この逐次プログラムの処理時間の問題は、もっぱらプロセッサの高速化技術(動作周波数、パイプライン、キャッシュメモリ、ブランチヒストリなど)によって解決されてきた。中でもプロセッサの動作周波数の高速化と、キャッシュメモリの大容量化によるところは大きい。
しかしながら、近年では消費電力と発熱量の増加の問題から、プロセッサの動作周波数は頭打ちとなり、動作周波数を抑えた省電力型のコアを複数実装したマルチコアプロセッサが主流となっている。数値制御装置においても、特許文献1で開示されているようにマルチコアプロセッサを使用する構成が提案されている。
マルチコアプロセッサでは、スレッド化したプログラムを各コアで並列実行することによる性能向上が見込める一方で、スレッド化が困難な逐次プログラムの実行では、以下のようなキャッシュミスの増加の問題が存在する。
マルチコアプロセッサでは、第2レベル以降のキャッシュメモリを複数のコアで共有する構成が多く取られている。このような構成のマルチコアプロセッサにおいて、一のコアで前記逐次プログラムを実行中に、キャッシュメモリを共有する別のコアで他のプログラムを実行してしまうと、他のプログラムによる共有キャッシュメモリの書き換えが発生する。このため、同じ容量のキャッシュメモリを持つシングルコアのプロセッサで実行した場合に比べて、逐次プログラムでのキャッシュミスが発生しやすくなる。
キャッシュミスが発生した場合、プロセッサは、処理の実行に必要なデータを逐次プログラムが記憶されたメモリから読み出し、必要に応じて新たなデータをキャッシュメモリに格納する。このため、キャッシュメモリを利用できた場合と比較して多くの処理時間を要してしまう。
さらに、第1レベルの命令キャッシュメモリの容量を超える大規模な逐次プロセスを実行する場合、プログラム全体が一度に命令キャッシュメモリに収まらない。このため、逐次プログラムの実行中にも命令キャッシュメモリの書き換えが起こり、メモリ読み出しの待ち時間がプログラムの処理時間を延ばしてしまう。
上述のキャッシュミスを軽減する方法としては、連続するメモリブロックを命令キャッシュメモリへ先読みする命令キャッシュメモリのプリフェッチ機能が知られている。プリフェッチによりキャッシュヒット率は向上するが、キャッシュミスをなくすことは難しい。例えば、動的な条件分岐では、投機的なプリフェッチの失敗によるキャッシュミスが発生する。また、プロセッサの動作周波数に比較して、メモリの読み出し速度が遅いため、プリフェッチが間に合わずメモリの読み出し待ちが発生することもある。
そこで、本発明の目的は、上記従来技術の問題点を解決するため、マルチコアプロセッサを用いてキャッシュミスを起こさずに逐次プログラムを実行する制御装置を提供することである。
本願の請求項1に係る発明は、独立した命令キャッシュメモリを有するコアを複数備えたマルチコアプロセッサを具備し、前記命令キャッシュメモリの容量を超えるサイズの逐次プログラムを実行する制御装置であって、前記逐次プログラムを格納するメモリと、前記逐次プログラムの前記メモリ上の配置を解析してプログラムプロファイル情報を生成しメモリへ格納するプログラムプロファイル情報生成手段と、前記プログラムプロファイル情報に基づいて、前記逐次プログラムを前記命令キャッシュメモリ内に収まるサイズの複数のプログラムに分割し、分割したプログラムのプログラム実行情報をメモリへ記憶するプログラム実行情報生成手段と、前記プログラム実行情報に従って、前記分割されたプログラムを各コアの命令キャッシュメモリへ格納すると共に、プログラムを格納したキャッシュメモリを書き換え禁止にする手段と、前記格納されたプログラムの実行を開始した後、前記プログラム実行情報に基づき次に実行する前記分割されたプログラムを別のコアの命令キャッシュメモリへ格納し、プログラムを格納したキャッシュメモリを書き換え禁止にする手段と、先に実行中のプログラムの終了時に次に実行するプログラムの実行を開始すると共に、先にプログラムを実行したコアのキャッシュメモリの書き換え禁止を解除する手段と、を具備した制御装置である。
請求項2に係る発明は、前記分割された各プログラムの処理時間を見積もる処理時間見積手段と、分割された各ブログラムを命令キャッシュメモリへ格納する時間を見積もるキャッシュ格納時間見積手段と、実行中プログラムの終了までの残り実行時間が、次に実行するプログラムを命令キャッシュメモリへ格納するために必要な時間に到達したときに、命令キャッシュメモリへのプログラムの格納を開始する手段と、を具備することを特徴とする請求項1の制御装置である。
本発明により、命令キャッシュメモリの容量を超える規模の逐次プログラムを、キャッシュミスを起こさずに高速に実行することが可能な工作機械の制御装置を提供できる。
以下、本発明の実施形態を図面と共に説明する。なお、従来技術と同一または類似する構成は同じ符号を用いて説明する。
図1はマルチコアプロセッサを用いた本発明の実施形態を示す図である。数値制御装置10は、マルチコアプロセッサ70、サーボモータ制御部13、アンプインタフェース部14を備えている。
図1はマルチコアプロセッサを用いた本発明の実施形態を示す図である。数値制御装置10は、マルチコアプロセッサ70、サーボモータ制御部13、アンプインタフェース部14を備えている。
マルチコアプロセッサ70は3つのコアを有しており、それらは、第1数値制御部プロセッサコア71、第2数値制御部プロセッサコア72、および、PMC制御部プロセッサコア73として割り当てられている。各プロセッサコア71,72,73には独立した第1レベルの命令キャッシュメモリがそれぞれ接続されている。第1数値制御部プロセッサコア71には第1命令キャッシュメモリ(L1キャッシュ)74が接続されている。第2数値制御部プロセッサコア72には第2命令キャッシュメモリ(L1キャッシュ)75が接続されている。PMC制御部プロセッサコア73には第3命令キャッシュメモリ(L1キャッシュ)76が接続されている。
マルチコアプロセッサ70は、第2レベルのキャッシュメモリを複数のコアで共有する構成を備えている。第1命令キャッシュメモリ74、第2命令キャッシュメモリ75、および、第3命令キャッシュメモリ76は、第2レベルのキャッシュメモリであるキャッシュメモリ(L2キャッシュメモリ)77に接続されている。
マルチコアプロセッサ70、DRAM79、統合化周辺LSI60はバス78を介して相互に接続されている。機械側IOユニット16はフィールドバス17を介して統合化周辺LSI60に接続されている。
サーボモータ制御部13は、サーボ制御部プロセッサ40、周辺制御LSI45を備えている。各要素はバス43を介して相互に接続されている。アンプインタフェース部14は周辺制御LSI55を備えている。モータ制御用アンプ18はシリアルサーボバス19を介してアンプインタフェース部14の周辺制御LSI55に接続されている。マルチコアプロセッサ70、サーボモータ制御部13、および、アンプインタフェース部14は、内部バス15を介して相互に接続されている。
図1に示される数値制御装置10において、逐次ブログラムPは、例えば、キャッシュ情報にある二つのコア、コア番号1(第1数値制御部プロセッサコア71)とコア番号2(第2数値制御部プロセッサコア72)を交互に使用して実行される。
<請求項1に対応する実施形態>
図2は逐次プログラムPのメモリ(例えば、DRAM79)上の配置を示す図である。図3はプログラムファイル情報生成部の処理を示すフローチャートである。図4はプログラムファイル情報の一例を示す図である。
図2は逐次プログラムPのメモリ(例えば、DRAM79)上の配置を示す図である。図3はプログラムファイル情報生成部の処理を示すフローチャートである。図4はプログラムファイル情報の一例を示す図である。
図2に示されるように、逐次プログラムPは、メインプログラムの開始アドレスがps,終了アドレスがpeで表される。そして、サブプログラムF1をアドレスf1bで呼び出す。サブプログラムF2をアドレスf2bで呼び出す。サブプログラムF3をアドレスf3bで呼び出す。サブプログラムF1の開始アドレスがf1s,終了アドレスがf1eで表される。サブプログラムF2の開始アドレスがf2s,終了アドレスがf2eで表される。サブプログラムF3の開始アドレスがf3s,終了アドレスがf3eで表される。
第1の実施形態では、図3に示されるプログラムファイル情報生成部の処理として、メモリ(図1においてDRAM79)上の逐次プログラムP(図2)の配置を解析(図3参照)する。この解析により(sa01)、メインプログラムとメインプログラムから呼出されるサブプログラムの開始アドレス、終了アドレスと、サブプログラムの呼出し元アドレスの情報を収集する。そして、収集された情報をプログラムプロファイル情報としてメモリへ格納する(sa02)。
図2で示す逐次プログラムPの場合、メインプログラムの開始アドレスps、終了アドレスpeと、3つのサブプログラムF1、F2、F3の呼出し元アドレスf1b、f2b、f3bと開始アドレスf1s、f2s、f3sと、終了アドレスf1e、f2e、f3eをプログラムプロファイル情報(図4)としてメモリ(図1においてDRAM79)へ格納する。
次に、プログラム実行情報生成部による逐次プログラムPの分割方法を説明する。図5のプログラム実行情報生成部の処理を示すフローチャートに示すように、前記プログラムプロファイル情報(図4参照)と、予め用意した図7に示す命令キャッシュメモリ情報(各コアの命令キャッシュメモリの容量、使用率)を用いて、前記逐次プログラムPを命令キャッシュメモリに収まるサイズのプログラムに分割し、分割したプログラムの情報をプログラム実行情報(図8参照)としてメモリへ格納する。
図5のプログラム実行情報生成部の処理を示すフローチャートを各ステップに従って説明する。逐次プログラムPのプログラムプロファイル情報(図4参照)を取得する(sb01)。命令キャッシュメモリ情報を取得する(sb02)。プログラムプロファイル情報と命令キャッシュメモリ情報とに基づいて、逐次プログラムを分割する分割アドレスを決定する(sb03)。分割プログラムのID、割り当てコア番号、プログラムの開始アドレス、終了アドレス、及びキャッシュ格納ブロック情報がプログラム実行情報としてメモリ(図1ではDRAM79)へ格納する(sb04)。
次に図6に示す逐次プログラムPの分割について具体的に説明する。
図6は逐次プログラムPの分割を示す図である。図7は命令キャッシュメモリの情報を示す図である。図8はプログラム実行情報を示す図である。
まず、プログラムプロファイル情報(図4参照)から、コア番号1の命令キャッシュメモリ容量c1_size×使用率c1_rateのサイズ以内になるような分割アドレス<1>を決定し、分割プログラムP1とする。
図6は逐次プログラムPの分割を示す図である。図7は命令キャッシュメモリの情報を示す図である。図8はプログラム実行情報を示す図である。
まず、プログラムプロファイル情報(図4参照)から、コア番号1の命令キャッシュメモリ容量c1_size×使用率c1_rateのサイズ以内になるような分割アドレス<1>を決定し、分割プログラムP1とする。
分割プログラムP1の開始アドレスp1_start、終了アドレスp1_endと、命令キャッシュメモリへ格納するブロック1の開始アドレスp1block1_startとサイズp1block1_size、ブロック2の開始アドレスp1block2_startとサイズp1block2_sizeをプログラム実行情報(図8参照)としてメモリへ格納する。
次に、コア番号2の命令キャッシュメモリ容量c2_size×c2_rateのサイズ以内になるような分割アドレス<2>を決定し、分割プログラムP2とする。分割プログラムP2の開始アドレスp2_start、終了アドレスp2_endと、命令キャッシュメモリへ格納するブロック1の開始アドレスp2block1_startとサイズp2block1_size、ブロック2の開始アドレスp2block2_startとサイズp2block2_sizeをプログラム実行情報としてメモリへ格納する。
以降、同様に分割アドレス<3>、分割アドレス<4>を決定し、分割アドレスで分割したプログラムを分割プログラムP3、P4、P5とし、それぞれのプログラムの開始アドレス、終了アドレス、ブロック開始アドレスとサイズをプログラム実行情報としてメモリへ格納する。
図8はメモリに格納されたプログラム実行情報を示す図である。
分割プログラムP1のプログラム実行情報は、
割当コア番号 :1
ブロック開始アドレス :p1_start
プログラム終了アドレス :p1_end
キャッシュ格納ブロック情報
ブロック1の開始アドレス :p1block1_start
ブロック1のサイズ :p1block1_size
ブロック2の開始アドレス :p1block2_start
ブロック2のサイズ :p1block2_size
分割プログラムP1のプログラム実行情報は、
割当コア番号 :1
ブロック開始アドレス :p1_start
プログラム終了アドレス :p1_end
キャッシュ格納ブロック情報
ブロック1の開始アドレス :p1block1_start
ブロック1のサイズ :p1block1_size
ブロック2の開始アドレス :p1block2_start
ブロック2のサイズ :p1block2_size
分割プログラムP2のプログラム実行情報は、
割当コア番号 :2
ブロック開始アドレス :p2_start
プログラム終了アドレス :p2_end
キャッシュ格納ブロック情報
ブロック1の開始アドレス :p2block1_start
ブロック1のサイズ :p2block1_size
ブロック2の開始アドレス :p2block2_start
ブロック2のサイズ :p2block2_size
割当コア番号 :2
ブロック開始アドレス :p2_start
プログラム終了アドレス :p2_end
キャッシュ格納ブロック情報
ブロック1の開始アドレス :p2block1_start
ブロック1のサイズ :p2block1_size
ブロック2の開始アドレス :p2block2_start
ブロック2のサイズ :p2block2_size
分割プログラムP3のプログラム実行情報は、
割当コア番号 :1
ブロック開始アドレス :p3_start
プログラム終了アドレス :p3_end
キャッシュ格納ブロック情報
ブロック1の開始アドレス :p3block1_start
ブロック1のサイズ :p3block1_size
ブロック2の開始アドレス :p3block2_start
ブロック2のサイズ :p3block2_size
割当コア番号 :1
ブロック開始アドレス :p3_start
プログラム終了アドレス :p3_end
キャッシュ格納ブロック情報
ブロック1の開始アドレス :p3block1_start
ブロック1のサイズ :p3block1_size
ブロック2の開始アドレス :p3block2_start
ブロック2のサイズ :p3block2_size
分割プログラムP4のプログラム実行情報は、
割当コア番号 :2
ブロック開始アドレス :p4_start
プログラム終了アドレス :p4_end
キャッシュ格納ブロック情報
ブロック1の開始アドレス :p4block1_start
ブロック1のサイズ :p4block1_size
ブロック2の開始アドレス :p4block2_start
ブロック2のサイズ :p4block2_size
割当コア番号 :2
ブロック開始アドレス :p4_start
プログラム終了アドレス :p4_end
キャッシュ格納ブロック情報
ブロック1の開始アドレス :p4block1_start
ブロック1のサイズ :p4block1_size
ブロック2の開始アドレス :p4block2_start
ブロック2のサイズ :p4block2_size
分割プログラムP5のプログラム実行情報は、
割当コア番号 :1
ブロック開始アドレス :p5_start
プログラム終了アドレス :p5_end
キャッシュ格納ブロック情報
ブロック1の開始アドレス :p5block1_start
ブロック1のサイズ :p5block1_size
ブロック2の開始アドレス :p5block2_start
ブロック2のサイズ :p5block2_size
割当コア番号 :1
ブロック開始アドレス :p5_start
プログラム終了アドレス :p5_end
キャッシュ格納ブロック情報
ブロック1の開始アドレス :p5block1_start
ブロック1のサイズ :p5block1_size
ブロック2の開始アドレス :p5block2_start
ブロック2のサイズ :p5block2_size
次に、各コアでの分割したプログラムの実行を、図9,図10,図11を用いて説明する。図9はスケジューラ部の処理を示すフローチャートである。図10はキャッシュ制御部のフローチャートである。図11は請求項1に対応する実施形態のシーケンスを示す図である。なお、図11において、命令キャッシュメモリは紙面のスペースの都合からキャッシュと略記している。
以下、図9のスケジューラ部の処理のフローチャートを各ステップに従って説明する。制御装置のメモリからプログラム実行情報を取得する(sc01)。実行する分割プログラムがある場合には(sc02)、命令キャッシュ制御部へ命令キャッシュメモリへの格納を要求する(sc03)。命令キャッシュメモリへの格納が完了した場合(sc04)、先に実行中の分割プログラムがあるか否か確認し(sc05)、先に実行中の分割プログラムがある場合には、先に実行したプログラムが終了を待って(sc06)、または、先に実行中の分割プログラムがない場合には、格納が完了した分割プログラムの実行を開始し(sc07)、ステップsc02へ戻り処理を継続する。
図10はキャッシュ制御部のフローチャートである。以下、各ステップに従って説明する。プログラム格納要求があるか否かを判断し(sd01)、プログラム格納要求がある場合には格納するプログラム番号を取得し(sd02)、プログラム実行情報から格納する分割プログラムのアドレスとサイズを取得し命令キャッシュメモリへ格納し(sd03)、格納した分割プログラムの命令キャッシュメモリブロックを書き換え禁止に設定し(sd04)、一方、プログラム格納要求がない場合には、書き換え禁止の解除要求を確認し(sd05)、書き換え禁止の解除要求がある場合には、書き換え禁止を解除するプログラム番号を取得し(sd06)、プログラム実行情報から書き換え禁止を解除するプログラムのアドレスとサイズを取得し、書き換え禁止を解除する(sd07)。
図9のスケジューラ部のフローチャートに示すように、コア共通のスケジューラ部は、逐次プログラムPの起動開始の充分以前に、前記プログラム実行情報(図8参照)に基づいて、キャッシュ制御部へ、分割プログラムP1の命令キャッシュメモリへの格納と、前記プログラムP1が格納された命令キャッシュメモリの書き換え禁止(命令キャッシュメモリのロック)を要求する。
前記要求を受け取ったキッシュ制御部は、図10のフローチャートに示すように、プログラムP1を命令キャッシュメモリへ格納し、プログラムP1を格納した命令キャッシュメモリをロックした後、スケジューラ部へ完了を返す。スケジューラ部は、前記キャッシュ制御部からの完了を受け取り後、逐次プログラムPの起動開始時間になると、前記プログラムP1を起動する。
次に、スケジューラ部は、前記プログラムP1の実行中に、プログラム実行情報に基づいて次に実行するプログラムP2のコア2の命令キャッシュメモリへの格納と、プログラムP2が格納された命令キャッシュメモリのロックをコア2のキャッシュ制御部へ要求する。前記要求を受け取ったキッシュ制御部は、プログラムP2を命令キャッシュメモリへ格納し、プログラムP2を格納した命令キャッシュメモリをロックする。
スケジューラ部は、前記キャッシュ制御部への要求の完了後、且つ、先に実行したプログラムP1が終了した後、直ちにプログラムP2の実行を開始すると共に、先にプログラムP1を実行したコア1の命令キャッシュメモリのロックの解除をキャッシュ制御部へ要求する。
以降、同様の手順でプログラムP3、P4、P5を実行する。
以降、同様の手順でプログラムP3、P4、P5を実行する。
<請求項2に対応する実施形態>
図12は処理時間見積部とキャッシュ格納時間見積部の処理を示すフローチャートである。図13はプログラム実行情報の例を示す図である。図14は請求項2の実施形態のスケジューラ部の処理を示すフローチャートである。図15は請求項2に対応する実施形態のシーケンスを示す図である。なお、図15において、命令キャッシュメモリは紙面のスペースの都合からキャッシュと略記している。
図12は処理時間見積部とキャッシュ格納時間見積部の処理を示すフローチャートである。図13はプログラム実行情報の例を示す図である。図14は請求項2の実施形態のスケジューラ部の処理を示すフローチャートである。図15は請求項2に対応する実施形態のシーケンスを示す図である。なお、図15において、命令キャッシュメモリは紙面のスペースの都合からキャッシュと略記している。
請求項2に対応する実施形態では請求項1に対応する実施形態において更に、処理時間見積部にて、メモリ上のプログラムデータを解析し、分割された各プログラムの処理時間を見積もりプログラム実行情報へ格納し、さらに、命令キャッシュメモリ格納時間見積部にて、プログラム実行情報から、分割された各プログラムを命令キャッシュメモリへ格納する時間を見積もりプログラム実行情報へ格納する構成を備えている(図12参照)。
図12は処理時間見積部とキャッシュ格納時間見積部の処理を示すフローチャートである。各ステップに従って説明すると、分割したプログラム実行情報を取得し(se01)、プログラム実行情報に基づいて、プログラムの処理時間を見積もり、プログラム実行情報へ追加格納し(se02)、プログラム実行情報に基づいて、プログラムを命令キャッシュメモリへ格納する時間を見積もり、プログラム実行情報へ追加格納する(se03)。ここで、(se02)の処理は処理時間見積部に対応し、(se03)はキャッシュ格納時間見積部に対応する。
スケジューラ部は、n番目のプログラムPnの命令キャッシュメモリへの格納要求を、n−1番目のプログラムを起動してから命令キャッシュメモリ格納開始時間=(n−1番目のプログラムの処理時間p(n-1)run_time − n番目のプログラムのキャッシュ格納時間pnsave_time)だけ経過した後に実行する(n>1)。なお、プログラムP1の命令キャッシュメモリへの格納要求は、逐次プログラムの周期起動時間より命令キャッシュメモリ格納時間だけ以前に実行する。
実施例では、図14のスケジューラ部の処理のフローチャートに示すように、スケジューラ部は、セットした時間後にタイマイベントをスケジューラ部へ通知するタイマ制御部へ前記命令キャッシュメモリ格納開始時間をセットし、前記セットした時間後に発生するタイマイベントによってn番目のプログラムPnの命令キャッシュメモリへの格納をキャッシュ制御部へ要求する。
なお、スケジューラ部は、プログラムP1を開始するために、前もって、逐次プログラムの起動周期時間よりp1save_timeだけ以前にタイマイベントが発生するように、タイマ制御部へタイマ値をセットする。前記タイマイベントにより、スケジューラ部は、プログラムP1をコア1の命令キャッシュメモリへ格納し、プログラムP1を格納した命令キャッシュメモリをロックするようキャッシュ制御部へ要求する。
前記要求を受け取ったキャッシュ制御部は、図10のキャッシュ制御部の処理のフローチャートに従って、プログラムP1を命令キャッシュメモリへ格納し、プログラムP1を格納した命令キャッシュメモリをロックした後、スケジューラ部へ完了を返す。
スケジューラ部は、前記キャッシュ制御部からの完了の通知を受け取った後、逐次プログラムの起動開始時間になると、前記プログラムP1を起動すると共に、タイマ制御部へp1run_time − p2save_timeのタイマをセットする。次に、前記タイマ制御部からのタイマイベントによって、スケジューラ部は、プログラム実行情報に基づいてコア2のキャッシュ制御部へプログラムP2の命令キャッシュメモリへの格納と、プログラムP2が格納された命令キャッシュメモリのロックを要求する。
前記要求を受け取ったキッシュ制御部は、プログラムP2を命令キャッシュメモリへ格納し、プログラムP2を格納した命令キャッシュメモリをロックした後、スケジューラ部へ完了を返す。
スケジューラ部は、前記キャッシュ制御部への要求の完了を受け取り、且つ、先に実行したプログラムP1が終了した後、直ちにプログラムP2の実行を開始すると共に、タイマ制御部へp2run_time − p3save_timeのタイマをセットし、先にプログラムP1を実行したコア1の命令キャッシュメモリのロックの解除をキャッシュ制御部へ要求する。以降、同様の手順でプログラムP3、P4、P5を実行する(図15)。
これにより、逐次プログラムPの実行による命令キャッシュメモリのロック時間が最小となり、システム全体としての性能向上が見込まれる。
10 数値制御装置
11 数値制御部
12 PMC部
13 サーボモータ制御部
14 アンプインタフェース部
15 内部バス
16 機械側IOユニット
17 フィールドバス
18 モータ制御用アンプ
19 シリアルサーボバス
20 プロセッサコア
21 L1キャッシュ
22 L2キャッシュ
23 バス
24 DRAM
25 周辺LSI
30 プロセッサコア
31 L1キャッシュ
32 L2キャッシュ
33 バス
34 DRAM
35 周辺LSI
40 サーボ制御部プロセッサ
43 バス
45 周辺制御LSI
55 周辺制御LSI
60 統合化周辺LSI
70 マルチコアプロセッサ
71 第1数値制御部プロセッサコア
72 第2数値制御部プロセッサコア
73 PMC制御部プロセッサコア
74 第1命令キャッシュメモリ
75 第2命令キャッシュメモリ
76 第3命令キャッシュメモリ
77 L2キャッシュメモリ
78 バス
79 DRAM
P 逐次プログラム
F1,F2,F3 サブプログラム
11 数値制御部
12 PMC部
13 サーボモータ制御部
14 アンプインタフェース部
15 内部バス
16 機械側IOユニット
17 フィールドバス
18 モータ制御用アンプ
19 シリアルサーボバス
20 プロセッサコア
21 L1キャッシュ
22 L2キャッシュ
23 バス
24 DRAM
25 周辺LSI
30 プロセッサコア
31 L1キャッシュ
32 L2キャッシュ
33 バス
34 DRAM
35 周辺LSI
40 サーボ制御部プロセッサ
43 バス
45 周辺制御LSI
55 周辺制御LSI
60 統合化周辺LSI
70 マルチコアプロセッサ
71 第1数値制御部プロセッサコア
72 第2数値制御部プロセッサコア
73 PMC制御部プロセッサコア
74 第1命令キャッシュメモリ
75 第2命令キャッシュメモリ
76 第3命令キャッシュメモリ
77 L2キャッシュメモリ
78 バス
79 DRAM
P 逐次プログラム
F1,F2,F3 サブプログラム
Claims (2)
- 独立した命令キャッシュメモリを有するコアを複数備えたマルチコアプロセッサを具備し、前記命令キャッシュメモリの容量を超えるサイズの逐次プログラムを実行する制御装置であって、
前記逐次プログラムを格納するメモリと、
前記逐次プログラムの前記メモリ上の配置を解析してプログラムプロファイル情報を生成しメモリへ格納するプログラムプロファイル情報生成手段と、
前記プログラムプロファイル情報に基づいて、前記逐次プログラムを前記命令キャッシュメモリ内に収まるサイズの複数のプログラムに分割し、分割したプログラムのプログラム実行情報をメモリへ記憶するプログラム実行情報生成手段と、
前記プログラム実行情報に従って、前記分割されたプログラムを各コアの命令キャッシュメモリへ格納すると共に、プログラムを格納したキャッシュメモリを書き換え禁止にする手段と、
前記格納されたプログラムの実行を開始した後、前記プログラム実行情報に基づき次に実行する前記分割されたプログラムを別のコアの命令キャッシュメモリへ格納し、プログラムを格納したキャッシュメモリを書き換え禁止にする手段と、
先に実行中のプログラムの終了時に次に実行するプログラムの実行を開始すると共に、先にプログラムを実行したコアのキャッシュメモリの書き換え禁止を解除する手段と、
を具備した制御装置。 - 前記分割された各プログラムの処理時間を見積もる処理時間見積手段と、
分割された各ブログラムを命令キャッシュメモリへ格納する時間を見積もるキャッシュ格納時間見積手段と、
実行中プログラムの終了までの残り実行時間が、次に実行するプログラムを命令キャッシュメモリへ格納するために必要な時間に到達したときに、命令キャッシュメモリへのプログラムの格納を開始する手段と、
を具備することを特徴とする請求項1の制御装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014077800A JP5808450B1 (ja) | 2014-04-04 | 2014-04-04 | マルチコアプロセッサを使用して逐次プログラムを実行する制御装置 |
US14/669,322 US10127045B2 (en) | 2014-04-04 | 2015-03-26 | Machine tool controller including a multi-core processor for dividing a large-sized program into portions stored in different lockable instruction caches |
DE102015004034.0A DE102015004034B4 (de) | 2014-04-04 | 2015-03-27 | Steuervorrichtung zum Ausführen eines Ablaufprogramms, die einen Mehrkernprozessor verwendet |
CN201510158082.7A CN104977860B (zh) | 2014-04-04 | 2015-04-03 | 使用多核心处理器执行顺序程序的控制装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014077800A JP5808450B1 (ja) | 2014-04-04 | 2014-04-04 | マルチコアプロセッサを使用して逐次プログラムを実行する制御装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5808450B1 true JP5808450B1 (ja) | 2015-11-10 |
JP2015200947A JP2015200947A (ja) | 2015-11-12 |
Family
ID=54146508
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014077800A Expired - Fee Related JP5808450B1 (ja) | 2014-04-04 | 2014-04-04 | マルチコアプロセッサを使用して逐次プログラムを実行する制御装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10127045B2 (ja) |
JP (1) | JP5808450B1 (ja) |
CN (1) | CN104977860B (ja) |
DE (1) | DE102015004034B4 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10359765B2 (en) * | 2014-10-07 | 2019-07-23 | Citizen Watch Co., Ltd. | Control device for machine tool with multi-system programs |
JP6457382B2 (ja) * | 2015-12-28 | 2019-01-23 | ファナック株式会社 | キャッシュロックを学習する機械学習器,産業機械システム,製造システム,機械学習方法および機械学習プログラム |
JP6756177B2 (ja) | 2016-07-20 | 2020-09-16 | コニカミノルタ株式会社 | 画像形成装置 |
FR3054902B1 (fr) * | 2016-08-04 | 2019-06-21 | Thales | Procede et dispositif de distribution de partitions sur un processeur multi-coeurs |
JP6530783B2 (ja) | 2017-06-12 | 2019-06-12 | ファナック株式会社 | 機械学習装置、制御装置及び機械学習プログラム |
CN108108187A (zh) * | 2017-12-19 | 2018-06-01 | 北京云知声信息技术有限公司 | 运算方法及装置 |
JP2020184179A (ja) * | 2019-05-08 | 2020-11-12 | ファナック株式会社 | 加工制御システム及び加工システム |
CN117280287A (zh) * | 2021-05-17 | 2023-12-22 | 发那科株式会社 | 数值控制装置以及计算机可读取的存储介质 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5913224A (en) * | 1997-02-26 | 1999-06-15 | Advanced Micro Devices, Inc. | Programmable cache including a non-lockable data way and a lockable data way configured to lock real-time data |
US6427204B1 (en) * | 1999-06-25 | 2002-07-30 | International Business Machines Corporation | Method for just in-time delivery of instructions in a data processing system |
JP4413663B2 (ja) | 2004-03-17 | 2010-02-10 | 富士通株式会社 | 命令キャッシュシステム |
US7895431B2 (en) * | 2004-09-10 | 2011-02-22 | Cavium Networks, Inc. | Packet queuing, scheduling and ordering |
KR100942740B1 (ko) | 2005-08-09 | 2010-02-17 | 후지쯔 가부시끼가이샤 | 스케줄 제어 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 및 스케줄 제어 방법 |
US7386675B2 (en) * | 2005-10-21 | 2008-06-10 | Isilon Systems, Inc. | Systems and methods for using excitement values to predict future access to resources |
CN100375067C (zh) | 2005-10-28 | 2008-03-12 | 中国人民解放军国防科学技术大学 | 异构多核微处理器局部空间共享存储方法 |
US7487297B2 (en) * | 2006-06-06 | 2009-02-03 | International Business Machines Corporation | Dynamically adjusting a pre-fetch distance to enable just-in-time prefetching within a processing system |
JP4294059B2 (ja) * | 2007-03-22 | 2009-07-08 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置および情報処理方法 |
CN100562854C (zh) | 2008-03-11 | 2009-11-25 | 浙江大学 | 多核处理器操作系统负载均衡的实现方法 |
JP5007281B2 (ja) | 2008-07-11 | 2012-08-22 | 東光株式会社 | 誘電体導波管スロットアンテナ |
US8019946B2 (en) * | 2008-07-31 | 2011-09-13 | Samsung Electronics Co., Ltd. | Method and system for securing instruction caches using cache line locking |
JP4600700B2 (ja) | 2009-03-17 | 2010-12-15 | 日本電気株式会社 | プログラムのメモリ空間への配置方法、装置、およびプログラム |
CN101694640B (zh) | 2009-10-22 | 2011-04-27 | 浙江大学 | 多核架构下共享二级Cache的替换策略的实现方法 |
JP5516728B2 (ja) | 2010-06-10 | 2014-06-11 | 富士通株式会社 | マルチコアプロセッサシステム、制御プログラム、および制御方法 |
CN102073533B (zh) | 2011-01-14 | 2013-06-19 | 中国人民解放军国防科学技术大学 | 支持动态二进制翻译的多核体系结构 |
CN102662761A (zh) | 2012-03-27 | 2012-09-12 | 福建星网锐捷网络有限公司 | 一种多核中央处理器系统中内存池的调度方法以及装置 |
CN102662865B (zh) | 2012-04-06 | 2014-11-26 | 福建星网锐捷网络有限公司 | 多核cpu的缓存管理方法、装置及设备 |
CN102750257B (zh) | 2012-06-21 | 2014-08-20 | 西安电子科技大学 | 基于访问信息调度的片上多核共享存储控制器 |
JP2014035564A (ja) | 2012-08-07 | 2014-02-24 | Fanuc Ltd | マルチコアプロセッサを有する数値制御装置 |
-
2014
- 2014-04-04 JP JP2014077800A patent/JP5808450B1/ja not_active Expired - Fee Related
-
2015
- 2015-03-26 US US14/669,322 patent/US10127045B2/en not_active Expired - Fee Related
- 2015-03-27 DE DE102015004034.0A patent/DE102015004034B4/de active Active
- 2015-04-03 CN CN201510158082.7A patent/CN104977860B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
DE102015004034A1 (de) | 2015-10-08 |
CN104977860B (zh) | 2017-11-17 |
DE102015004034B4 (de) | 2024-02-01 |
JP2015200947A (ja) | 2015-11-12 |
US20150286574A1 (en) | 2015-10-08 |
CN104977860A (zh) | 2015-10-14 |
US10127045B2 (en) | 2018-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5808450B1 (ja) | マルチコアプロセッサを使用して逐次プログラムを実行する制御装置 | |
JP2010503070A (ja) | 従属命令スレッドスケジューリング | |
JP2020095441A (ja) | 演算制御装置 | |
KR100792320B1 (ko) | 주프로세서용 명령의 프리페치에 보조프로세서를 이용하는방법 및 장치 | |
US20160147516A1 (en) | Execution of complex recursive algorithms | |
JP7410186B2 (ja) | Gpuにおける明示的な個別マスクレジスタのマスク操作方法 | |
US11226798B2 (en) | Information processing device and information processing method | |
Forsberg et al. | HePREM: A predictable execution model for GPU-based heterogeneous SoCs | |
JP7042105B2 (ja) | プログラム実行制御方法および車両制御装置 | |
JP2024500779A (ja) | アドレスマッピング認識型タスク処理機構 | |
JP2004192403A (ja) | キャッシュメモリのデータ管理方法、及び情報処理装置 | |
US11481250B2 (en) | Cooperative workgroup scheduling and context prefetching based on predicted modification of signal values | |
JP2004192052A (ja) | ソフトウェア処理方法およびソフトウェア処理システム | |
JP2008071356A (ja) | 割込禁止区間処理装置および方法とページ固定装置および方法 | |
JP6367689B2 (ja) | プログラマブルコントローラに適したマルチプロセッサシステム | |
JP2008015668A (ja) | タスク管理装置 | |
JP5376042B2 (ja) | マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム | |
JP6485343B2 (ja) | 制御プログラム、制御装置、および制御方法 | |
JP2008262340A (ja) | デュアルコア向け自動コード生成装置 | |
Rashid et al. | Cache-aware schedulability analysis of prem compliant tasks | |
JP7141977B2 (ja) | 制御装置および制御方法 | |
JP5552042B2 (ja) | プログラム解析の方法、システムおよびプログラム | |
JP3795055B1 (ja) | 値予測装置、マルチプロセッサシステムおよび値予測方法 | |
JP5266651B2 (ja) | ローカル分岐履歴を用いた分岐予測装置及び分岐予測方法 | |
Kim et al. | Static function prefetching for efficient code management on scratchpad memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20150803 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20150818 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150908 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5808450 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |