(57)【要約】【課題】処理回路の電気的な接続を切断せずとも、それぞれの処理回路の寿命を有効に利用できる処理回路切替プログラムを提供する。【解決手段】それぞれ予め定められた算法で演算をする２以上の演算手段と、前記演算手段のそれぞれに演算をさせる演算命令を与える命令手段と、前記命令手段が与えた前記演算命令の数に基づいて前記演算手段のそれぞれの演算回数をカウントする命令カウント手段とをそれぞれ含む２以上の処理回路に実行させる処理回路切替プログラムであって、前記処理回路が個別に実行する実行処理を開始するとき、前記命令カウント手段によってカウントされた前記命令数に基づいてそれぞれの前記処理回路に割り当てられた前記実行処理を開始する開始ステップを備える。【選択図】図４
2011034348.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ予め定められた算法で演算をする２以上の演算手段と、
前記演算手段のそれぞれに演算をさせる演算命令を与える命令手段と、
前記命令手段が与えた前記演算命令の数に基づいて前記演算手段のそれぞれの演算回数をカウントする命令カウント手段とをそれぞれ含む２以上の処理回路に実行させる処理回路切替プログラムであって、
前記処理回路が個別に実行する実行処理を開始するとき、前記命令カウント手段によってカウントされた前記命令数に基づいてそれぞれの前記処理回路に割り当てられた前記実行処理を開始する開始ステップを備える、処理回路切替プログラム。
【請求項２】
それぞれの前記処理回路に含まれる同一の算法で演算をする前記演算手段同士の演算回数の差を、それぞれの前記処理回路に含まれる前記命令カウント手段でカウントした前記演算回数に基づいて算出する算出ステップと、
前記算出ステップにおいて算出した前記演算回数の差が予め定められたしきい値を超えたとき、それぞれの前記処理回路に割り当てる前記実行処理を変更する変更ステップとを含む、請求項１に記載の処理回路切替プログラム。
【請求項３】
前記変更ステップは、
それぞれの前記処理回路に対する前記実行処理の割り当てを履歴として記憶する履歴記憶ステップと、
前記実行処理の割り当てを前回変更してから、次に前記実行処理の割り当てを変更するまでに、それぞれの前記処理回路が前記実行処理を開始した回数を開始回数として記憶する開始回数記憶ステップと、
前記開始回数記憶ステップにおいて記憶された前記開始回数が予め定められた開始回数しきい値以下であるとき、前記履歴として記憶している前記実行処理の割り当てと異なる割り当てに変更する履歴考慮割り当てステップとを含む、請求項２に記載の処理回路切替プログラム。
【請求項４】
前記命令カウント手段は、
前記命令手段が前記演算命令を与えたとき、当該演算命令の種類を通知する通知手段と、
前記通知手段によって前記情報が通知されたとき、当該情報で示される種類の前記演算命令に対応させて予め定められたそれぞれの前記演算手段の演算回数を前記演算手段毎に加算する加算手段とからなり、
前記算出ステップは、それぞれの前記処理回路に含まれる前記加算手段でそれぞれ加算された同一の算法で演算をする一組の前記演算手段の前記演算回数の差を全ての組についてそれぞれ算出し、
前記変更ステップは、同一の算法で演算をする前記演算手段の組毎に算出された前記演算回数の差が前記しきい値を超えたとき、それぞれの前記処理回路に割り当てる前記実行処理を変更する、請求項３に記載の処理回路切替プログラム。
【請求項５】
前記変更ステップは、前記実行処理の割り当てを変更するとき、それぞれの前記処理回路における互いの前記実行処理を入れ替えて変更する、請求項４に記載の処理回路切替プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理回路切替プログラムに関し、より特定的には、２以上の処理回路に実行させる処理回路切替プログラムに関する。
【背景技術】
【０００２】
従来、例えば、特許文献１に記載の半導体集積回路のように、経時変化するエージングデバイスの影響を取り除くために、予め定められた変化をしたと判断されるエージングデバイスの電気的な接続を切断する技術が考案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−１５０３２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来技術では、以下に述べるような課題を有する。すなわち、例えば、マルチコアＣＰＵに含まれるそれぞれのＣＰＵコアなど、複数の処理回路に複数種類の処理（例えば、異なる処理をするアプリケーションソフト）を実行させる場合、それぞれの処理回路の経時変化の度合いが異なる場合がある。より詳細には、アプリケーションソフト毎に必要とされる演算回数が異なるため、互いに異なるアプリケーションソフトをそれぞれの処理回路で処理する場合、それぞれの処理回路の演算回数に差が生じる。そして、演算回数が増加して経時変化する処理回路は演算回数がある回数になると寿命が到来して機能しなくなる。そして、それぞれの処理回路の演算回数に差が生じると、一方の処理回路の寿命が到来していないにも拘わらず、他方の処理回路の寿命が到来してそれぞれの処理回路を含むＣＰＵが機能しなくなってしまう場合がある。すなわち、演算回数の増加を経時変化として検出し、検出した演算回数に基づいて寿命の到来した処理回路を判断して電気的な接続を切断することによって、寿命が到来していない処理回路が存在するのにも拘わらず、ＣＰＵ全体が機能しなくなることを防げる。換言すれば、寿命の到来した処理回路のみの電気的な接続を切断することによって、他方の処理回路の寿命を有効に利用できる。しかしながら、複数の処理回路を含む集積回路において特定の処理回路のみの電気的な接続を切断するのは困難である。
【０００５】
それ故に、本発明は、処理回路の電気的な接続を切断せずとも、それぞれの処理回路の寿命を有効に利用できる処理回路切替プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、上記目的を達成するため、以下に述べるような特徴を有する。
第１の発明は、それぞれ予め定められた算法で演算をする２以上の演算手段と、演算手段のそれぞれに演算をさせる演算命令を与える命令手段と、命令手段が与えた演算命令の数に基づいて演算手段のそれぞれの演算回数をカウントする命令カウント手段とをそれぞれ含む２以上の処理回路に実行させる処理回路切替プログラムであって、処理回路が個別に実行する実行処理を開始するとき、命令カウント手段によってカウントされた命令数に基づいてそれぞれの処理回路に割り当てられた実行処理を開始する開始ステップを備える。
【０００７】
第２の発明は、上記第１の発明に従属する発明であって、それぞれの処理回路に含まれる同一の算法で演算をする演算手段同士の演算回数の差を、それぞれの処理回路に含まれる命令カウント手段でカウントした演算回数に基づいて算出する算出ステップと、算出ステップにおいて算出した演算回数の差が予め定められたしきい値を超えたとき、それぞれの処理回路に割り当てる実行処理を変更する変更ステップとを含む。
【０００８】
第３の発明は、上記第２の発明に従属する発明であって、変更ステップは、それぞれの処理回路に対する実行処理の割り当てを履歴として記憶する履歴記憶ステップと、実行処理の割り当てを前回変更してから、次に実行処理の割り当てを変更するまでに、それぞれの処理回路が実行処理を開始した回数を開始回数として記憶する開始回数記憶ステップと、開始回数記憶ステップにおいて記憶された開始回数が予め定められた開始回数しきい値以下であるとき、履歴として記憶している実行処理の割り当てと異なる割り当てに変更する履歴考慮割り当てステップとを含む。
【０００９】
第４の発明は、上記第３の発明に従属する発明であって、命令カウント手段は、命令手段が演算命令を与えたとき、当該演算命令の種類を通知する通知手段と、通知手段によって情報が通知されたとき、当該情報で示される種類の演算命令に対応させて予め定められたそれぞれの演算手段の演算回数を演算手段毎に加算する加算手段とからなり、算出ステップは、それぞれの処理回路に含まれる加算手段でそれぞれ加算された同一の算法で演算をする一組の演算手段の演算回数の差を全ての組についてそれぞれ算出し、変更ステップは、同一の算法で演算をする演算手段の組毎に算出された演算回数の差がしきい値を超えたとき、それぞれの処理回路に割り当てる実行処理を変更する。
【００１０】
第５の発明は、上記第４の発明に従属する発明であって、変更ステップは、実行処理の割り当てを変更するとき、それぞれの処理回路における互いの実行処理を入れ替えて変更する。
【発明の効果】
【００１１】
本発明によれば、処理回路の電気的な接続を切断せずとも、それぞれの処理回路の寿命を有効に活用できる処理回路切替プログラムを提供できる。
【図面の簡単な説明】
【００１２】
【図１】本発明に係る処理回路切替装置の概略構成を示すブロック図
【図２】本発明に係る処理回路切替装置における処理を階層的に示す図
【図３】本発明に係るＣＰＵコアのより詳細な構成を示すブロック図
【図４】本発明の第１の実施形態に係るＣＰＵの処理を示すフローチャート
【図５】本発明の第１の実施形態に係るＣＰＵの処理を示すフローチャート
【図６】本発明の第１の実施形態に係るＣＰＵの処理を示すフローチャート
【図７】それぞれのＣＰＵに対する実行処理の割り当ての一例を示す図
【図８】本発明の第２の実施形態に係るＣＰＵの処理を示すフローチャート
【図９】本発明の第２の実施形態に係るＣＰＵの処理を示すフローチャート
【図１０】本発明の第２の実施形態に係る履歴情報の一例を示す図
【発明を実施するための形態】
【００１３】
（第１の実施形態）
図１は、本発明の第１の実施形態に係る処理回路切替装置１の概略構成を示すブロック図である。本実施形態に係る処理回路切替装置１は、ＲＯＭ（Read Only Memory）１０１と、ＣＰＵ（Central Processing Unit）１０２と、カウントレジスタ１０３と、第１のＲＡＭ（Random Access Memory）１０４と、第２のＲＡＭ１０５とを備える。また、本実施形態では、ＣＰＵ１０２が、第１のＣＰＵコア１０２１と、第２のＣＰＵコア１０２２とをそれぞれ処理回路として含むマルチコアＣＰＵであるものとする。
【００１４】
ＲＯＭ１０１は、ＣＰＵ１０２で実行されるプログラムをＣＰＵ１０２が解釈して実行できる形式で予め記憶している。図２は、本実施形態に係るＣＰＵ１０２が、第１のＣＰＵコア１０２１、及び第２のＣＰＵコア１０２２のそれぞれで解釈して実行するプログラムで実現される処理の割り当ての一例を階層的に示す図である。
【００１５】
本実施形態に係るＣＰＵ１０２で実行されるプログラムには、図２に示すように、ＯＳ（Operating System：オペレーティングシステム）の処理を実現するプログラムと、アプリケーションソフトの処理（以下、実行処理と称する）を実現するプログラムとに大別できる。ＯＳの処理を実現するプログラムは、ＣＰＵ１０２に含まれるそれぞれのＣＰＵコア（本実施形態では第１のＣＰＵコア１０２１、及び第２のＣＰＵコア１０２２）で並行して実行されることによって、ＯＳの処理が実現される。一方、実行処理を実現するプログラムは、ＣＰＵ１０２に含まれるそれぞれのＣＰＵコアで並行して実行されるプログラムではない。実行処理を実現するプログラムのそれぞれは、ＣＰＵ１０２に含まれるそれぞれのＣＰＵコアに個別に割り当てられ、それぞれのＣＰＵコアで実行されることによって、それぞれの実行処理が実現される。また、ＣＰＵ１０２に含まれるそれぞれのＣＰＵコアは、１以上の実行処理を実現するプログラムを実行することができる。
【００１６】
つまり、ＣＰＵ１０２は、ＯＳの処理を実現するためのプログラムをそれぞれのＣＰＵコアで並行して実行すると共に、１以上の実行処理を実現するプログラムをそれぞれのＣＰＵコアに個別に割り当てて実行する。図２は、ＣＰＵ１０２が、第１のＣＰＵコア１０２１、及び第２のＣＰＵコア１０２２のそれぞれでＯＳの処理を実現するプログラムを並行して実行すると共に、それぞれのＣＰＵコアに２つの実行処理を割り当てて実行することを一例として示している。
【００１７】
尚、実行処理のそれぞれのＣＰＵコアへの割り当ては、前述のＯＳの処理の一部の処理で実現されるものとする。また、実行処理をそれぞれのＣＰＵコアへ割り当てる処理（以下、割り当て処理と称する）を実現するプログラムは、ＣＰＵ１０２が、全て、或いは２以上のＣＰＵコアで並行して実行してもよいし、いずれか一つのＣＰＵコアだけで実行してもよい。ＣＰＵ１０２が実行処理をそれぞれのＣＰＵコアに割り当てる割り当て処理の詳細については後述する。
【００１８】
図３は、本実施形態に係る第１のＣＰＵコア１０２１、及び第２のＣＰＵコア１０２２のより詳細な構成を示すブロック図である。本実施形態に係るＣＰＵコアのそれぞれは、命令回路２０１、第１の演算回路２０２１〜第ｎの演算回路２０２ｎ、及び命令カウンタ２０３を含む。
【００１９】
命令回路２０１は、ＲＯＭ１０１に記憶されているプログラムを読み込んで実行し、読み込んだプログラムの処理を実現できるように、第１の演算回路２０２１〜第ｎの演算回路２０２ｎにそれぞれ演算をさせる演算命令と共に演算に必要な数値（データ）を与える。命令回路２０１は、典型的には、後述するように逐次生成する演算命令を生成した順番に一時的に記憶するレジスタ、実行するプログラムを示す情報のＲＯＭ１０１における記憶箇所を示すアドレスを記憶するプログラムカウンタ、演算命令を生成するために必要な情報などを一時的に記憶する汎用レジスタなどで構成される。
【００２０】
第１の演算回路２０２１〜第ｎの演算回路２０２ｎは、命令回路２０１から与えられる演算命令に応じて、演算命令と共に与えられる数値を演算する。第１の演算回路２０２１〜第ｎの演算回路２０２ｎのそれぞれは、加算、減算、乗算、論理演算（ＡＮＤ、ＯＲ、ＮＯＴ、及びＸＯＲ）、及びベクトル演算などの算法で与えられた数値を演算できるように予め設計されている所謂ＡＬＵ（Arithmetic Logic Unit：演算論理回路）である。本実施形態では、第１の演算回路２０２１〜第ｎの演算回路２０２ｎとして、それぞれ互いに異なる算法で演算するＡＬＵがそれぞれのＣＰＵコアに含まれるものとする。そして、第１の演算回路２０２１〜第ｎの演算回路２０２ｎは、命令回路２０１から与えられる演算命令に応じて、演算命令と共に取得した数値をそれぞれの算法で演算し、演算した結果を、命令回路２０１に直接取得させたり、第１のＲＡＭ１０４、及び第２のＲＡＭ１０５に記憶させたりする。
【００２１】
尚、本実施形態では、それぞれのＣＰＵコアに含まれる第１の演算回路２０２１〜第ｎの演算回路２０２ｎの中で、同一の参照符号の一組の演算回路（例えば、それぞれのＣＰＵコアに含まれる第３の演算回路２０２３の組など）は、互いに同一の算法で演算をするように予め設計されているＡＬＵであるものとする。
【００２２】
ＣＰＵ１０２に含まれるそれぞれのＣＰＵコアは、ＲＯＭ１０１から読み込んだプログラムの処理を実現するため、命令回路２０１が当該プログラムを読み込むだけでなく、当該プログラムにしたがって、第１の演算回路２０２１〜第ｎの演算回路２０２ｎのそれぞれの演算結果を直接取得したり、第１の演算回路２０２１〜第ｎの演算回路２０２ｎのそれぞれが記憶させた演算結果を第１のＲＡＭ１０４、及び第２のＲＡＭ１０５から読み込んだり、後述するようにカウントレジスタ１０３で計数される演算回数を取得したりする。
【００２３】
そして、ＣＰＵ１０２に含まれるそれぞれのＣＰＵコアは、命令回路２０１が、ＲＯＭ１０１から読み込んだプログラム、当該プログラムにしたがって第１の演算回路２０２１〜第ｎの演算回路２０２ｎのそれぞれから直接取得した演算結果、当該プログラムにしたがって第１のＲＡＭ１０４と第２のＲＡＭ１０５とからそれぞれ読み込んだ演算結果、及びカウントレジスタ１０３から取得した演算回数などに基づいて演算命令を逐次生成する。そして、命令回路２０１は、逐次生成した演算命令を生成した順番に第１の演算回路２０２１〜第ｎの演算回路２０２ｎのそれぞれに与えることによって、読み込んだプログラムの処理を実現する。
【００２４】
命令カウンタ２０３は、命令回路２０１によって第１の演算回路２０２１〜第ｎの演算回路２０２ｎに演算命令が与えられる度に、与えられた演算命令の種類をカウントレジスタ１０３に通知する。
【００２５】
カウントレジスタ１０３は、それぞれのＣＰＵコアに含まれる命令カウンタ２０３から与えられる演算命令の種類の通知に基づいて、それぞれのＣＰＵコアに含まれる第１の演算回路２０２１〜第ｎの演算回路２０２ｎのそれぞれの演算回数を計数して記憶する。より詳細には、１つの演算命令に対応する第１の演算回路２０２１〜第ｎの演算回路２０２ｎのそれぞれの演算回数は、演算命令の種類に応じて予め定めることができる。そこで、カウントレジスタ１０３は、命令カウンタ２０３から演算命令の種類の通知を受ける度に、通知を受けた種類に対応させて予め定められた第１の演算回路２０２１〜第ｎの演算回路２０２ｎのそれぞれの演算回数を、演算回路毎に積算して計数する。カウントレジスタ１０３は、第１のＣＰＵコア１０２１に含まれる演算回路と、第２のＣＰＵコア１０２２に含まれる演算回路とに分けて演算回路毎に演算回数を計数する。これにより、カウントレジスタ１０３は、それぞれのＣＰＵコアに含まれる第１の演算回路２０２１〜第ｎの演算回路２０２ｎのそれぞれの演算回数を計数して記憶できる。
【００２６】
第１のＲＡＭ１０４、及び第２のＲＡＭ１０５のそれぞれは、上述したように、第１のＣＰＵコア１０２１、及び第２のＣＰＵコア１０２２にそれぞれ含まれる演算回路の演算結果を記憶する。
【００２７】
以上が、本実施形態に係る処理回路切替装置１の構成の説明である。次に、前述の割り当て処理について、図４〜図６のそれぞれのフローチャートを参照しながら説明する。図４は、本実施形態に係るＣＰＵ１０２が実行するプログラムで実現される割り当て処理のメインルーチンを示すフローチャートである。また、図５は、図４のフローチャートに示すメインルーチンにおけるステップＳ１０３の定常処理のサブルーチンを示すフローチャートである。また、図６は、図４のフローチャートに示すメインルーチンにおけるステップＳ１０４の終了処理のサブルーチンを示すフローチャートである。
【００２８】
尚、割り当て処理を実現するプログラムは、上述したように、ＯＳの処理の一部の処理として他のＯＳの処理と並行して実行されるものとする。したがって、図４のフローチャートに示す処理はＯＳの処理を実現するプログラムで予め定められている任意のタイミングで開始されるものとする。そして、ＯＳの処理は、処理回路切替装置１に給電が開始されたときに、ＣＰＵ１０２がＯＳの処理を実現するプログラムを読み込んで開始するものとする。
【００２９】
ステップＳ１０１において、ＣＰＵ１０２は、実行処理情報を第１のＲＡＭ１０４、及び第２のＲＡＭ１０５のいずれかから読み出す。ここで、実行処理情報とは、第１のＣＰＵコア１０２１、及び第２のＣＰＵコア１０２２のそれぞれで個別に実行する前述の実行処理のプログラムの割り当てを示す情報である。実行処理情報は第１のＲＡＭ１０４、及び第２のＲＡＭ１０５のいずれか一方に記憶されていればよい。本実施形態の説明では、一例として、実行処理情報が第１のＲＡＭ１０４に記憶されているものとする。
【００３０】
図７は、本実施形態に係る実行処理情報の一例を示す図である。図７には、実行処理情報の一例として、第１のＣＰＵコア１０２１に実行処理Ａ、及び実行処理Ｂの２つの実行処理が割り当てられており、第２のＣＰＵコア１０２２に実行処理Ｃ、及び実行処理Ｄの２つの実行処理が割り当てられていることを示す実行処理情報を挙げている。ＣＰＵ１０２は、ステップＳ１０１の処理を完了すると、ステップＳ１０２へ処理を進める。
【００３１】
ステップＳ１０２において、ＣＰＵ１０２は、ステップＳ１０１で読み出した実行処理情報に基づいてそれぞれのＣＰＵコアに実行処理を割り当て、割り当てた実行処理を実現するプログラムをそれぞれのＣＰＵコアで開始して実行する。ＣＰＵ１０２は、ステップＳ１０２の処理を完了すると、ステップＳ１０３へ処理を進める。
【００３２】
ＣＰＵ１０２は、ステップＳ１０３へ処理を進めると、図５のフローチャートに示す定常処理のサブルーチンをステップＳ１０３１から開始する。尚、ＣＰＵ１０２が、ステップＳ１０３の定常処理のサブルーチンを実行しているときには、ＯＳの処理、及びステップＳ１０２で開始した実行処理を実現するプログラムも並行して実行している。
【００３３】
ステップＳ１０３１において、ＣＰＵ１０２は、第１のＲＡＭ１０４、及び第２のＲＡＭ１０５のいずれかに記憶されている変数ｋを１に初期化する。ＣＰＵ１０２は、ステップＳ１０３１の処理を完了すると、ステップＳ１０３２へ処理を進める。尚、変数ｋは、第１のＲＡＭ１０４、及び第２のＲＡＭ１０５のいずれか一方に記憶されていればよい。本実施形態の説明では、一例として、第１のＲＡＭ１０４に変数ｋを記憶させるものとする。
【００３４】
ステップＳ１０３２において、ＣＰＵ１０２は、カウントレジスタ１０３で計数されている全ての演算回路の演算回数を取得する。ＣＰＵ１０２は、ステップＳ１０３２の処理を完了すると、ステップＳ１０３３へ処理を進める。
【００３５】
ステップＳ１０３３において、ＣＰＵ１０２は、第１のＲＡＭ１０４に記憶されている変数ｋを参照し、それぞれのＣＰＵコアに含まれる第１の演算回路２０２１〜第ｎの演算回路２０２ｎの中でｋ番目の演算回路同士の演算回数の差Δｋを算出する。ＣＰＵ１０２は、ステップＳ１０３３の処理を完了すると、ステップＳ１０３４へ処理を進める。
【００３６】
ステップＳ１０３４において、ＣＰＵ１０２は、ステップＳ１０３３で算出した差Δｋの絶対値が予め定められたしきい値ｔｈ１を超えるか否かを判断する。ステップＳ１０３４において、ＣＰＵ１０２は、差Δｋがしきい値ｔｈ１を超えると判断したとき、ステップＳ１０３７へ処理を進める。一方、ＣＰＵ１０２は、差Δｋがしきい値ｔｈ１を超えないと判断したとき、ステップＳ１０３５へ処理を進める。
【００３７】
ステップＳ１０３５において、ＣＰＵ１０２は、第１のＲＡＭ１０４に記憶されている変数ｋを参照し、参照した変数ｋがそれぞれのＣＰＵコアに含まれる演算回路の数ｎ以下であるか否かを判断する。ＣＰＵ１０２は、ステップＳ１０３５において、変数ｋがｎ以下であると判断したとき、ステップＳ１０３６へ処理を進める。一方、ＣＰＵ１０２は、ステップＳ１０３５において、変数ｋがｎ以下でないと判断したとき、ステップＳ１０３８へ処理を進める。
【００３８】
ステップＳ１０３６において、ＣＰＵ１０２は、第１のＲＡＭ１０４に記憶されている変数ｋを１だけインクリメントする。ＣＰＵ１０２は、ステップＳ１０３６の処理を完了すると、ステップＳ１０３２へ処理を戻す。
【００３９】
ステップＳ１０３７において、ＣＰＵ１０２は、第１のＲＡＭ１０４に記憶されている実行処理情報で示される割り当てを変更して更新させる指示を示す実行処理情報更新フラグを第１のＲＡＭ１０４、及び第２のＲＡＭ１０５のいずれかに記憶させる。ＣＰＵ１０２は、ステップＳ１０３７の処理を完了すると、ステップＳ１０３８へ処理を進める。尚、本実施形態の説明では、実行処理情報更新フラグが、第１のＲＡＭ１０４に記憶されるものとする。
【００４０】
ＣＰＵ１０２は、ステップＳ１０３１の処理をした後、ステップＳ１０３２からステップＳ１０３６の処理を繰り返すことにより、それぞれのＣＰＵコアに含まれるｋ番目の組の演算回路の演算回数の差Δｋ、すなわち、同一の算法で演算をする演算回路同士の演算回数の差が予め定められたしきい値ｔｈ１を超えるか否かを、変数ｋをインクリメントさせながら、全ての演算回路の組について判断する。そして、演算回数の差Δｋがしきい値ｔｈ１を超える演算回路の組が１つでもあれば、ステップＳ１０３７に処理を進めて前述の実行処理情報更新フラグを第１のＲＡＭ１０４に記憶させることができる。
【００４１】
ここで、演算回数の差Δｋがしきい値ｔｈ１を超える演算回路の組が１つでもあったときに前述の実行処理情報更新フラグを第１のＲＡＭ１０４に記憶させて、後述するように実行処理情報で示される割り当てを更新させる理由について説明する。本実施形態では、上述したように、それぞれのＣＰＵコアに互いに異なる実行処理が割り当てられる。互いに異なる実行処理を実現するプログラムをそれぞれのＣＰＵコアが実行すると、実行している時間が等しくても、それぞれのプログラムで必要とされる演算の頻度が算法毎に異なるため、それぞれのＣＰＵコアに含まれる同一の算法で演算をする一組の演算回路の演算回数には差が生じる。
【００４２】
そして、それぞれのＣＰＵコアの寿命は演算回路の演算回数に基づいて定まる。したがって、例えば、それぞれのＣＰＵコアに含まれる同一の算法で演算をする演算回路の組の中で、一方のＣＰＵコアに含まれる演算回路の演算の頻度が相対的に低く、他方のＣＰＵコアに含まれる演算回路の演算の頻度が相対的に高いにも拘わらず、実行処理の割り当てを変更しない場合には、相対的に高い演算回数の演算回路を含むＣＰＵコアの寿命が先に到来してしまう。そして、ＣＰＵ１０２は、それぞれのＣＰＵコアの内、いずれか１つでも寿命が到来すると、他のＣＰＵコアは寿命が到来していないにも拘わらず、機能しなくなる。
【００４３】
そこで、本実施形態に係る処理回路切替装置１では、それぞれのＣＰＵコアに含まれる同一の算法で演算をする演算回路の組の中で、演算回数の差Δｋがしきい値ｔｈ１を超える組の演算回路があるときに、それぞれのＣＰＵコアに割り当てる実行処理を変更する。それぞれのＣＰＵコアに割り当てる実行処理を変更すると、それぞれのＣＰＵコアに含まれるそれぞれの演算回路の演算の頻度を変えて、それぞれのＣＰＵコアに含まれる同一の算法で演算をする一組の演算回路の演算回数の差Δｋが過度に大きくなるのを防げる。これにより、ＣＰＵ１０２に含まれるそれぞれのＣＰＵコアの中でいずれか一方に含まれる演算回路の演算回数のみが過度に増加して、過度に増加した演算回路を含むＣＰＵコアの寿命が相対的に早く到来し、他方のＣＰＵコアの寿命を有効に活用できないままＣＰＵ１０２が機能しなくなることを防げる。
【００４４】
以上が、演算回数の差Δｋがしきい値ｔｈ１を超える演算回路の組があるときに前述の実行処理情報更新フラグを第１のＲＡＭ１０４に記憶させて、実行処理情報で示される割り当てを更新させる理由の説明である。尚、実行処理情報更新フラグが第１のＲＡＭ１０４に記憶されているか否かの判断、及び記憶されているときに実行処理情報で示される割り当てを変更して更新する処理は後述する終了処理で実行される。
【００４５】
ステップＳ１０３８において、ＣＰＵ１０２は、ステップＳ１０３の定常処理のサブルーチンを終了するか否かを判断する。ＣＰＵ１０２は、定常処理のサブルーチンを終了すると判断したとき、ステップＳ１０３の定常処理のサブルーチンを終了して、図４のフローチャートに示すメインルーチンにおけるステップＳ１０４へ処理を進める。一方、ＣＰＵ１０２は、ステップＳ１０３８において、定常処理のサブルーチンを終了しないと判断したとき、ステップＳ１０３１へ処理を戻す。
【００４６】
尚、ＣＰＵ１０２がステップＳ１０３８でステップＳ１０３の定常処理のサブルーチン処理を終了すると判断するときとは、本実施形態に係る処理回路切替装置１を終了させる操作をユーザーがしたか否かを図示しない検出部で検出したときなどである。
【００４７】
ステップＳ１０４へ処理を進めると、ＣＰＵ１０２は、図６に示す終了処理のサブルーチンをステップＳ１０４１から開始する。ステップＳ１０４１において、ＣＰＵ１０２は、実行処理情報更新フラグが第１のＲＡＭ１０４に記憶されているか否かを判断する。ＣＰＵ１０２は、ステップＳ１０４１において、実行処理情報更新フラグが第１のＲＡＭ１０４に記憶されていると判断したとき、ステップＳ１０４２へ処理を進める。一方、ＣＰＵ１０２は、ステップＳ１０４１において、実行処理情報更新フラグが第１のＲＡＭ１０４に記憶されていないと判断したとき、ステップＳ１０４の終了処理のサブルーチンを終了して、図４のフローチャートに示すメインルーチンに処理を戻して、メインルーチンの処理を終了する。
【００４８】
ステップＳ１０４２において、ＣＰＵ１０２は、第１のＲＡＭ１０４に記憶されている実行処理情報で示されるそれぞれのＣＰＵコアに割り当てられている実行処理を変更して、当該実行処理情報を更新する。ＣＰＵ１０２が、ステップＳ１０４２において、それぞれのＣＰＵコアに割り当てる実行処理は、それぞれのＣＰＵコアに割り当てている処理をランダムに入れ替えて変更してもよいし、予め定められた順番にしたがって入れ替わるように変更してもよい。ＣＰＵ１０２は、ステップＳ１０４２の処理を完了すると、ステップＳ１０４３へ処理を進める。
【００４９】
ステップＳ１０４３において、ＣＰＵ１０２は、第１のＲＡＭ１０４に記憶されている実行処理情報更新フラグを削除する。ＣＰＵ１０２は、ステップＳ１０４３の処理を完了すると、ステップＳ１０４の終了処理のサブルーチンを終了して、図４のフローチャートに示すメインルーチンに処理を戻して、メインルーチンの処理を終了する。
【００５０】
ＣＰＵ１０２が、ステップＳ１０４２において、実行処理情報を更新することによって、次に処理回路切替装置１への給電が開始され、ステップＳ１０２の処理をしたときに、それぞれのＣＰＵコアに割り当てられる実行処理を変更することができ、上述したように、ＣＰＵ１０２に含まれるそれぞれのＣＰＵコアの中でいずれか一方に含まれる演算回路の演算回数のみが過度に増加して、過度に増加した演算回路を含むＣＰＵコアの寿命が相対的に早く到来し、他方のＣＰＵコアの寿命を有効に活用できないままＣＰＵ１０２が機能しなくなることを防げる効果を得られる。換言すれば、本実施形態に係る処理回路切替装置１によれば、それぞれのＣＰＵコアの中でいずれか一方に含まれる演算回路の演算回数のみが過度に増加することなく、それぞれのＣＰＵコアに含まれる演算回路の演算回数が相対的に近くなるように平均化することによって、いずれかのＣＰＵコアの寿命を有効に活用できないままＣＰＵ１０２が機能しなくなることを防げる効果を得られる。
【００５１】
以上が、本発明の第１の実施形態に係る処理回路切替装置１の説明である。
【００５２】
（第２の実施形態）
図８、及び図９は、本発明の第２の実施形態に係るＣＰＵ１０２で実行するプログラムで実現される処理を示すフローチャートである。図８は、本実施形態に係るＣＰＵ１０２が実行するプログラムで実現される処理のメインルーチンのフローチャートである。また、図９は、図８のフローチャートに示すメインルーチンにおけるステップＳ２０２の終了処理のサブルーチンを示すフローチャートである。尚、本実施形態に係る処理回路切替装置１の構成は、第１の実施形態に係る処理回路切替装置１と同一であるため、説明を省略する。
【００５３】
まず、本実施形態に係るＣＰＵ１０２が実行するプログラムで実現される図８のフローチャートに示すメインルーチンから説明する。本実施形態に係るＣＰＵ１０２のメインルーチンの処理は、第１の実施形態に係るＣＰＵ１０２のメインルーチンの処理と比較して、ステップＳ１０１とステップＳ１０２との間にステップＳ２０１の処理をする点と、ステップＳ１０３の処理を終了した後、ステップＳ１０４の終了処理のサブルーチンに代えて、ステップＳ２０２の終了処理のサブルーチンへ処理を進める点とが相違する。したがって、図８のフローチャートに示す処理の内、図４のフローチャートに示す処理と同一の処理については、同一の参照符号を付し、説明を省略する。
【００５４】
本実施形態に係るＣＰＵ１０２は、ステップＳ１０１の処理を完了すると、ステップＳ２０１へ処理を進める。ステップＳ２０１において、ＣＰＵ１０２は、図８のフローチャートに示すメインルーチンを開始した回数を示す開始回数Ｓｃを１だけインクリメントする。尚、本実施形態に係る開始回数Ｓｃは、第１のＲＡＭ１０４、及び第２のＲＡＭ１０５のいずれかに記憶されていればよい。本実施形態の説明では、一例として、開始回数Ｓｃが第１のＲＡＭ１０４に記憶されているものとする。したがって、本実施形態に係るＣＰＵ１０２は、ステップＳ２０１において、第１のＲＡＭ１０４に記憶されている開始回数Ｓｃを１だけインクリメントする。ＣＰＵ１０２は、ステップＳ２０１の処理を完了すると、ステップＳ１０２へ処理を進める。
【００５５】
次に、本実施形態に係るＣＰＵ１０２のステップＳ２０２における処理について説明する。本実施形態に係るＣＰＵ１０２は、ステップＳ１０３の定常処理のサブルーチンを完了すると、ステップＳ２０２の終了処理のサブルーチンへ処理を進める。ＣＰＵ１０２は、ステップＳ２０２のサブルーチンへ処理を進めると、図９のフローチャートに示すステップＳ２０２１から処理を開始する。
【００５６】
ステップＳ２０２１において、ＣＰＵ１０２は、第１のＲＡＭ１０４に実行処理情報更新フラグが記憶されているか否かを判断する。ステップＳ２０２１において、ＣＰＵ１０２は、実行処理情報更新フラグが記憶されていると判断したとき、ステップＳ２０２２へ処理を進める。一方、ＣＰＵ１０２は、ステップＳ２０２１において、実行処理情報更新フラグが記憶されていないと判断したとき、ステップＳ２０２の終了処理のサブルーチンを終了して、図８のフローチャートに示すメインルーチンに処理を戻して、メインルーチンの処理を終了する。
【００５７】
ステップＳ２０２２において、ＣＰＵ１０２は、第１のＲＡＭ１０４に記憶されている開始回数Ｓｃを参照する。ＣＰＵ１０２は、ステップＳ２０２２の処理を完了すると、ステップＳ２０２３へ処理を進める。
【００５８】
ステップＳ２０２３において、ＣＰＵ１０２は、ステップＳ２０２２で参照した開始回数Ｓｃが予め定められたしきい値ｔｈ２を超えるか否かを判断する。ＣＰＵ１０２は、ステップＳ２０２３において、開始回数Ｓｃがしきい値ｔｈ２を超えると判断したとき、ステップＳ２０２４へ処理を進める。一方、ＣＰＵ１０２は、ステップＳ２０２３において、開始回数Ｓｃがしきい値ｔｈ２を超えないと判断したとき、ステップＳ２０２５へ処理を進める。
【００５９】
ステップＳ２０２４において、ＣＰＵ１０２は、第１の実施形態で説明したステップＳ１０４２の処理と同様に実行処理の割り当てを変更して実行処理情報を更新する。ＣＰＵ１０２は、ステップＳ２０２４の処理を完了すると、ステップＳ２０２６へ処理を進める。
【００６０】
ステップＳ２０２５において、ＣＰＵ１０２は、履歴情報を参照し、参照した履歴情報に基づいて、実行処理の割り当てを変更して実行処理情報を更新する。ここで、ＣＰＵ１０２が参照する履歴情報について説明する。図１０は、本実施形態に係る履歴情報の一例を示す図である。図１０に一例として示すように、履歴情報とは、実行処理の割り当ての変更時における変更後の割り当てを、割り当てを変更する度に記憶した履歴を示す情報である。図１０には、一例として、最新の割り当ての変更時から、２回だけ遡った割り当ての変更時までの３回分の変更時における変更後の割り当てを履歴１から履歴３として時間の経過にしたがって順番に記憶した履歴情報を示している。より具体的には、図１０に一例として示す履歴情報は、最新の割り当てを履歴１として示し、最も古い割り当てを履歴３として示す。
【００６１】
ＣＰＵ１０２は、ステップＳ２０２５において履歴情報を参照するとき、１度だけ遡った割り当ての変更時における変更後の割り当てと、最新の割り当ての変更時における変更後の割り当てとを参照する。そして、ＣＰＵ１０２は、ステップＳ２０２５において実行処理の割り当てを変更するときに、参照した割り当てと同一の実行処理の入れ替えとならないように割り当てを変更する。
【００６２】
このことを、図１０に示す一例を参照して説明する。図１０に一例として示される履歴情報を参照すると、１度だけ遡った割り当ての変更時における変更後の割り当ては、履歴２として示されるように、第１のＣＰＵコア１０２１に実行処理Ａ、及び実行処理Ｄが割り当てられ、第２のＣＰＵコア１０２２に実行処理Ｂ、及び実行処理Ｃが割り当てられている。そして、最新の割り当ての変更時における変更後の割り当ては、図１０に一例として示される履歴情報を参照すると、履歴１として示されるように第１のＣＰＵコア１０２１に実行処理Ｂ、及び実行処理Ｃが割り当てられ、第２のＣＰＵコア１０２２に実行処理Ａ、及び実行処理Ｄが割り当てられている。
【００６３】
つまり、図１０に示す一例では、最新の割り当ての変更時において、第１のＣＰＵコア１０２１に割り当てた２つの実行処理と、第２のＣＰＵコア１０２２に割り当てた２つの実行処理とが２つとも入れ替えて割り当てられている。この場合、ＣＰＵ１０２は、ステップＳ２０２５において、第１のＣＰＵコア１０２１に割り当てられている２つの実行処理と第２のＣＰＵコア１０２２に割り当てられている２つの実行処理とを２つとも入れ替える割り当ての変更はせずに、他の変更をする。例えば、ＣＰＵ１０２は、ステップＳ２０２５で割り当てを変更するときに、ランダムに入れ替えた割り当てが参照した割り当てと同一の実行処理の入れ替えとなったときには、再び割り当てをランダムに入れ替えて、同一の実行処理の入れ替えとならない割り当ての変更をする。
【００６４】
ＣＰＵ１０２は、ステップＳ２０２５で割り当てを変更すると、変更した割り当てを示すように実行処理情報を更新する。ＣＰＵ１０２は、ステップＳ２０２５の処理を完了すると、ステップＳ２０２６へ処理を進める。
【００６５】
ステップＳ２０２６において、ＣＰＵ１０２は、履歴情報を更新する。より詳細には、ＣＰＵ１０２は、ステップＳ２０２４、及びステップＳ２０２５のいずれか一方で変更した変更後の割り当てを最新の変更時における変更後の割り当てとして履歴情報に追加して更新する。このとき、ＣＰＵ１０２は、履歴情報における最も古い変更時における変更後の割り当てを示す履歴（図１０に示す例では履歴３）を削除してもよい。ＣＰＵ１０２は、ステップＳ２０２６の処理を完了すると、ステップＳ２０２７へ処理を進める。
【００６６】
ステップＳ２０２７において、ＣＰＵ１０２は、第１のＲＡＭ１０４に記憶されている実行処理情報更新フラグを削除する。ＣＰＵ１０２は、ステップＳ２０２７の処理を完了すると、ステップＳ２０２８へ処理を進める。
【００６７】
ステップＳ２０２８において、ＣＰＵ１０２は、開始回数Ｓｃをゼロにリセットする。上述の説明から明らかなように、ＣＰＵ１０２は、ステップＳ２０２８で開始回数Ｓｃをリセットしてから、次に割り当てを変更するまで、図８のフローチャートに示す処理を開始する度にステップＳ２０１で開始回数Ｓｃを１だけインクリメントする。これにより、ＣＰＵ１０２は、実行処理の割り当てを変更してから、次に実行処理の割り当てを変更するまでに図８のフローチャートに示すメインルーチンを開始した回数（実行処理を開始した回数）を開始回数Ｓｃとして計数することができる。ＣＰＵ１０２は、ステップＳ２０２８の処理を完了すると、ステップＳ２０２の終了処理のサブルーチンを終了して、図８のフローチャートに示すメインルーチンに処理を戻して、メインルーチンの処理を終了する。
【００６８】
本実施形態では、ＣＰＵ１０２が、ステップＳ２０２２〜ステップＳ２０２５の処理をすることにより、相対的に低い開始回数Ｓｃで割り当ての変更が生じる頻度を低下させることができる。より詳細には、本実施形態では、ＣＰＵ１０２がステップＳ２０２３の処理で開始回数Ｓｃがしきい値ｔｈ２を超えないと判断したときには、ステップＳ２０２５の処理で履歴を考慮して実行処理の割り当てを変更する。このときの割り当ての変更は、上述したように、一度だけ遡った変更時の変更後の割り当てから、最新の変更時の変更後の割り当てへ変更したときと同一の実行処理の入れ替えにならない変更となる。つまり、ステップＳ２０２５における割り当ての変更は、ステップＳ２０２５へ処理を進めたときのしきい値ｔｈ２未満となる開始回数Ｓｃで再び実行処理の割り当ての変更が生じる同一の実行処理の入れ替えではない変更となる。
【００６９】
したがって、本実施形態に係る処理回路切替装置１によれば、第１の実施形態で説明した効果に加えて、しきい値ｔｈ２未満の開始回数Ｓｃで前述の差Δｋがしきい値ｔｈ１を超えるような実行処理の割り当て、すなわち、少ない開始回数Ｓｃで演算回数の差Δｋの急激な上昇が生じる割り当てになる頻度を低下させて、それぞれのＣＰＵコアの寿命を延ばし、ＣＰＵ１０２が機能しなくなるまでの期間を延ばすことができるという効果を得られる。
【００７０】
以上が、本発明の第２の実施形態に係る処理回路切替装置１の説明である。
【００７１】
尚、第２の実施形態の説明では、実行処理の割り当てを変更する度に開始回数Ｓｃをリセットするものとした。しかしながら、開始回数Ｓｃは必ずしもリセットしなくてもよい。開始回数Ｓｃをリセットしない場合には、実行処理の割り当てを変更して履歴情報を上述したように更新するときに開始回数Ｓｃも対応させて記憶させる。そして、ステップＳ２０２３でしきい値ｔｈ２と比較するときには、現在の開始回数Ｓｃから、最新の割り当ての変更時における変更後の割り当てと対応させて記憶させた開始回数Ｓｃを引いた差としきい値ｔｈ２と比較する。これにより、第２の実施形態と同様に、実行処理の割り当てを変更してから、次に実行処理の割り当てを変更するまでに図８のフローチャートに示すメインルーチンを開始した回数をしきい値ｔｈ２と比較することができる。
【００７２】
また、上述した説明では、図４〜図６、及び図８〜図９のそれぞれに示す処理を２つのＣＰＵコアを含むＣＰＵ１０２が処理するものとして説明をした。しかしながら、これらの処理は、ＣＰＵ１０２に代えて、上述したそれぞれのＣＰＵコアと同等の機能を有する２つのＣＰＵを処理回路切替装置１に備えて実行させてもよい。また、上述した説明では、ＣＰＵ１０２が２つのＣＰＵコアを含むものとして説明したが、ＣＰＵ１０２は、３以上のＣＰＵコアを含むＣＰＵであってもよい。また、上述したＣＰＵ、或いはＣＰＵコアは典型的には半導体集積回路として製作されるものとする。
【００７３】
また、上述した説明では、図４〜図６、及び図８〜図９のそれぞれに示す処理をＯＳの処理を実現するプログラムで予め定められている任意のタイミングで開始されるものとした。ここで、本発明に係る処理回路切替装置１は、一例として、自動車などの移動体に搭載されるＥＣＵ（Electric Control Unit）を構成する処理回路切替装置であってもよい。より具体的には、ＥＣＵを構成するＣＰＵに含まれるＣＰＵコアで実行するプログラムを本発明に係る処理回路切替装置で割り当ててもよい。この場合、上述したＯＳの処理は、自動車のイグニッションスイッチ、或いはアクセサリースイッチがオンにされたときに開始されるものとする。すなわち、上述した図４〜図６、及び図８〜図９のそれぞれに示す処理もイグニッションスイッチ、或いはアクセサリースイッチがオンされた後、実行されるものとする。さらに、この場合、第２の実施形態で説明した開始回数Ｓｃは、イグニッションスイッチ、或いはアクセサリースイッチがオンにされた回数を示すこととなる。また、図６、及び図９の終了処理はイグニッションスイッチ、或いはアクセサリースイッチがオフにされたことを図７の定常処理におけるステップＳ１０３８において図示しない検知部で検知してから開始されることとなる。
【００７４】
また、第１の実施形態では、ステップＳ１０３７の処理で実行処理情報更新フラグを記憶させてから、ステップＳ１０４の終了処理で実行処理情報を更新するものとした。しかしながら、第１の実施形態では、ステップＳ１０３７の処理で実行処理情報更新フラグを記憶させることなく実行処理情報を更新してもよい。
【００７５】
以上、本発明を詳細に説明してきたが、上述の説明はあらゆる点において本発明の一例にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
【産業上の利用可能性】
【００７６】
本発明は、演算回数に応じて処理回路に処理させる割り当てを変更でき、例えば、車両に搭載されるＥＣＵに備える処理回路切替装置などに有用である。
【符号の説明】
【００７７】
１    処理回路切替装置
１０１  ＲＯＭ
１０２    ＣＰＵ
１０３    カウントレジスタ
１０４    第１のＲＡＭ
１０５    第２のＲＡＭ
１０２１    第１のＣＰＵコア
１０２２    第２のＣＰＵコア
２０１    命令回路
２０２１    第１の演算回路
２０２ｎ    第ｎの演算回路
【図１】
2011034348.tif 000003
【図２】
2011034348.tif 000004
【図３】
2011034348.tif 000005
【図４】
2011034348.tif 000006
【図５】
2011034348.tif 000007
【図６】
2011034348.tif 000008
【図７】
2011034348.tif 000009
【図８】
2011034348.tif 000010
【図９】
2011034348.tif 000011
【図１０】
2011034348.tif 000012