(57)【要約】【課題】  ハードウェア規模を最小限に留めつつ、スレッドの切替処理のソフトウェア処理のオーバーヘッドを軽減して、時間粒度を改善し、リアルタイム性を確保すること。【解決手段】本発明は、時分割マルチスレッド処理を行うマルチスレッドプロセッサ装置であって、運用系のレジスタセットと待機系のレジスタセットの間で切替可能な少なくとも２つのレジスタセットと、スロットの切替に連動して運用系のレジスタセットと待機系のレジスタセットの間でのレジスタセットの切替を行うレジスタセット切替手段と、前記レジスタセット切替手段による切替後の待機系のレジスタセットに対してコンテキストの退避／復帰処理を行うコンテキスト退避／復帰手段とを備えることを特徴とする。【選択図】  図１
2010176403.tif 000002
【特許請求の範囲】
【請求項１】
時分割マルチスレッド処理を行うマルチスレッドプロセッサ装置であって、
運用系のレジスタセットと待機系のレジスタセットの間で切替可能な少なくとも２つのレジスタセットと、
スロットの切替に連動して運用系のレジスタセットと待機系のレジスタセットの間でのレジスタセットの切替を行うレジスタセット切替手段と、
前記レジスタセット切替手段による切替後の待機系のレジスタセットに対してコンテキストの退避／復帰処理を行うコンテキスト退避／復帰手段とを備えることを特徴とする、マルチスレッドプロセッサ装置。
【請求項２】
前記コンテキスト退避／復帰手段は、前のスロットで使用されたコンテキストをメモリに退避させると共に、次のスロットで使用するコンテキストをメモリから復帰させる、請求項１に記載のマルチスレッドプロセッサ装置。
【請求項３】
前記コンテキスト退避／復帰手段は、前記メモリへの退避及びメモリからの復帰をDMA（Direct Memory Access）転送により行う、請求項２に記載のマルチスレッドプロセッサ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時分割マルチスレッド処理を行うマルチスレッドプロセッサ装置に関する。
【背景技術】
【０００２】
従来から、パイプラインプロセッサにおいて、第１のプロセッサスレッドの状態を、パイプラインプロセッサの各パイプラインステージ間に配置された第１の組のレジスタに保存し、同様にパイプラインプロセッサの各パイプラインステージ間に配置された第２の組のレジスタから第２のプロセッサスレッドの状態をロードする構成とし、このレジスタの配置によって、高速のコンテキストスイッチ時間を可能とする技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−４７１４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、近年、車載電子システムの進化に伴いＥＣＵ搭載数が急速に増加しているが、搭載スペース上の問題により、ＥＣＵの機能統合化が進められている。ここで、全く異なる車載システム間の機能を統合する際のアプリケーション間の干渉を防止する策として、時分割マルチスレッディングが考えられる。
【０００５】
時分割マルチスレッディングでは、時分割にてアプリケーションを見かけ上並列に処理を行うことができるが、スレッドの切替処理（特にコンテキストの退避／復帰）のソフトウェア処理のオーバーヘッドが大きいと時間粒度を小さくできず、リアルタイム制御システムに応用し難いという問題があった。即ち、ソフトウェア処理によるマルチスレッドの場合は、処理実行効率の低下と処理応答性の劣化を招く虞があり、これは特に車載制御系のアプリケーションに対して大きな問題となる。
【０００６】
この点、上記の特許文献１では、コンテキストの退避／復帰（コンテキストスイッチ）は、主としてハードウェアを通じて、プログラマブルスレッド割り当てコントローラを使用して行われるので、ソフトウェア処理のオーバーヘッドを低減できるものの、スレッド毎にレジスタバンクを実装する必要があり、ハードウェア規模が過大になるという問題がある。
【０００７】
そこで、本発明は、ハードウェア規模を最小限に留めつつ、スレッドの切替処理のソフトウェア処理のオーバーヘッドを軽減して、時間粒度を改善し、リアルタイム性を確保することができるマルチスレッドプロセッサ装置の提供を目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明の一局面によれば、時分割マルチスレッド処理を行うマルチスレッドプロセッサ装置であって、
運用系のレジスタセットと待機系のレジスタセットの間で切替可能な少なくとも２つのレジスタセットと、
スロットの切替に連動して運用系のレジスタセットと待機系のレジスタセットの間でのレジスタセットの切替を行うレジスタセット切替手段と、
前記レジスタセット切替手段による切替後の待機系のレジスタセットに対してコンテキストの退避／復帰処理を行うコンテキスト退避／復帰手段とを備えることを特徴とする、マルチスレッドプロセッサ装置が提供される。
【発明の効果】
【０００９】
本発明によれば、ハードウェア規模を最小限に留めつつ、スレッドの切替処理のソフトウェア処理のオーバーヘッドを軽減して、時間粒度を改善し、リアルタイム性を確保することができるマルチスレッドプロセッサ装置が得られる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施例によるマルチスレッドプロセッサ装置１の主要構成を示す図である。
【図２】本実施例のマルチスレッドプロセッサ装置１によるスロット切替処理の手順の具体例を示すフローチャートである。
【図３】本実施例のマルチスレッドプロセッサ装置１によるスロット切替処理のタイミングチャートである。
【図４】本実施例のマルチスレッドプロセッサ装置１によるスロット切替処理の効果の説明図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して、本発明を実施するための最良の形態の説明を行う。
【００１２】
図１は、本発明の一実施例によるマルチスレッドプロセッサ装置１の主要構成を示す図である。
【００１３】
マルチスレッドプロセッサ装置１は、ＣＰＵ１０を備え、周辺機能としてＤＭＡＣ（Direct Memory Access Controller）２０、ＩＮＴＣ（Interrupt Controller）２２、及び、タイマ２４を有する。ＤＭＡＣ２０、ＩＮＴＣ２２及びタイマ２４は、任意の構成であってよく、一般的な構成であってよい。また、マルチスレッドプロセッサ装置１は、ＲＡＭ３０、及び、フラッシュメモリ（Flash ROM）３２を有する。ＲＡＭ３０は、後述の如くスロット数（スレッド数）に応じた数のレジスタ値（コンテキスト）を格納する領域を備える。
【００１４】
ＣＰＵ１０は、レジスタセット１２に関する構成を除いて、任意の構成であってよく、図示の例では、プログラムカウンタ１３や命令キュー１４、演算ユニット(ALU)、ロードストアユニット(LSU)、乗算器（MUL）や除算器（DIV）を備える。
【００１５】
ＣＰＵ１０のレジスタセット１２は、２面のレジスタセット１２Ａ，１２Ｂからなる。２面のレジスタセット１２Ａ，１２Ｂは、２つのレジスタバンクにより具現化されてもよいし、レジスタウインドウの切替により実現されてもよい。レジスタセット１２Ａ，１２Ｂは、一方が運用系レジスタセットとして機能し他方が待機系レジスタセットとして機能し、運用系レジスタセットと待機系レジスタセットの間で切替可能である。尚、ＣＰＵ１０の演算処理中は運用系レジスタセットのみが有効となるが、内部バスには運用系／待機系の双方のレジスタセットが見えており、ＤＭＡによるＲＡＭ３０とのデータ転送が実施可能である。
【００１６】
アプリケーション４０は、複数のアプリケーションからなる。マルチスレッドプロセッサ装置１は、時分割マルチスレッド処理によってアプリケーション４０のそれぞれを処理して、各種機能を実現する。各種のアプリケーション４０は、多様な車載電子システムを実現するために必要な任意のアプリケーションであってもよいし、他の用途（車載用途以外の用途）のアプリケーションであってもよい。
【００１７】
本実施例では、時分割マルチスレッド処理におけるスロット切替処理（又はスレッド切替処理、以下同じ）は、ハードウェア機構によりアシストされる。このハードウェア機構は、次の機構を装備する。
（１）２種類のレジスタセット１２Ａ，１２ＢをＣＰＵ１０が持つ。
（２）２種類のレジスタセット１２Ａ，１２Ｂの切替、即ち運用系レジスタセットと待機系レジスタセットの間の切替は１命令で実施される。
（３）待機系レジスタセットとメモリ（典型的には、ＲＡＭ３０）は、ＤＭＡでサイクルスチルでＣＰＵ１０への負荷無しでデータ転送できる。
（４）時分割マルチスレッドを切り替えるため（スレッド切替のため）のタイマ割込み処理機能を持つ。
【００１８】
本実施例では、スロット切替の処理は、以下の手順で実行される。
（１）周期タイマ（タイマ割込み）をトリガとしてスロット切替が開始される。
（２）待機レジスタ値と運用レジスタ値を切り替える命令（待機系レジスタセットと運用系レジスタセットを切り替える命令）を実行する。
（３）次のスロットの処理が開始されている裏で、待機レジスタ値をスタック領域にＤＭＡ転送により退避する。
（４）次のスロットのレジスタ値をスタック領域からＤＭＡ転送で待機系レジスタセットに復帰させる。
【００１９】
このスロット切替の処理は、次にスケジュールされるプロセスが予め予定されたものであり、それ故に次のプロセスのレジスタの内容を事前にＤＭＡ転送が可能であることに着目している。即ち、次にスケジュールされているプロセスに備えて、待機系レジスタセットからコンテキストを退避させ、次にスケジュールされているプロセスに係るコンテキストを復帰させることで、切替処理時間の短縮化を図ることができる。尚、プロセスとは、ＯＳによりＣＰＵ１０を仮想化させた実行単位であり、ＯＳによりスレッドやタスクとも呼ばれる。
【００２０】
図２は、本実施例によるスロット切替処理の手順の具体例を示すフローチャートである。
【００２１】
ステップ２００では、タイマ２４からの周期タイマ割込みが発生する。周期タイマ割込みは、クロック周期の所定数の周期に対応して発生してよく、この場合、所定数は例えばクロック周期の１０〜数１００倍の範囲内の固定値であってもよく、或いは、同範囲内でソフトウェアにより可変されてもよい。
【００２２】
ステップ２０２では、レジスタセットの切替命令（レジスタ切替命令）がＣＰＵ１０から発生する。
【００２３】
ステップ２０４では、上記ステップ２０２のレジスタ切替命令に従って、運用系レジスタセットと待機系レジスタセットの間の切替が実行されると共に、スレッド切替が実行される。
【００２４】
ステップ２０６では、ＤＭＡＣ２０により退避系レジスタセットのレジスタ値（コンテキスト）をＲＡＭ３０へＤＭＡ転送する。
【００２５】
ステップ２０８では、ＤＭＡＣ２０により次のスレッドのレジスタ値（コンテキスト）を退避系レジスタセットへＲＡＭ３０からＤＭＡ転送する。尚、次のスレッドは、スケジューラにより決定されたスケジュールに基づいて判断されてよい。ステップ２０８の処理が終了すると、今回の周期タイマ割込みに対するスロット切替の処理が完了する。従って、次の周期タイマ割込みが発生すると、運用系レジスタセットと待機系レジスタセットの間の切替時に、直ちに運用系レジスタセットのレジスタ値を用いて処理を開始することができる。
【００２６】
尚、上記のステップ２０２に関連して、レジスタ切替命令は、例えば次のような命令であってよい。
SWITCHREGSET reg1,reg2
ここで、reg1には、次にスケジュールされるスレッドのコンテキストを格納する先頭アドレスをセットして、ＤＭＡ転送をサイクルスチルで開始する。これは、コンテキストスイッチが完了した後は、ＣＰＵがプロセスに渡っておりアプリケーション４０が動作しているためＯＳが介在できないためである。このため、ＣＰＵ１０のレジスタ切替命令とＤＭＡ開始命令は１つの命令で実装される（即ち上記の例では、レジスタ切替命令は、ＤＭＡ開始命令をも含む命令とされる）。尚、ＤＭＡ転送が完了していない場合は、この命令で待ち合わせを行うこととしてよい。
【００２７】
図３は、本実施例によるスロット切替処理のタイミングチャートである。図３（Ａ）は、時分割マルチスレッドのスロット切替処理の全体を示し、図３（Ｂ）は、図３（Ａ）中の破線の囲み部分（切替処理部分とその前後部分）の詳細を示す。
【００２８】
図３（Ａ）に示す例では、ＥＣＵに複数のアプリケーション４０が搭載されており、単一のシングルコアマイコン上でアプリケーション４０が時分割マルチスレッドに割り振られており、スレッド数は“４”である。即ち、アプリケーション４０として４つのアプリケーション（アプリ＃Ａ，アプリ＃Ｂ，アプリ＃Ｃ及びアプリ＃Ｄ）が、各スロット（slot＃０，slot＃１，slot＃２，slot＃３）にそれぞれ割り当てられている。
【００２９】
図３（Ｂ）には、図２で示した各ステップ２００乃至２０８の実行タイミングが図示されている。図３（Ｂ）に示すように、アプリ＃Ａの実行中にタイマ割込みが発生すると、図２のステップ２００の処理がＣＰＵ１０により実行され、次いでＯＳによる切替処理が実行された後、図２のステップ２０２及びステップ２０４の処理がＣＰＵ１０により実行される。その後、ＣＰＵ１０は、運用系レジスタセットでアプリ＃Ｂを実行し、その間、ハードウェア機構では図２のステップ２０６及びステップ２０８の処理が実行される。ここでは、図２のステップ２０６の処理として、退避系レジスタセットのアプリ＃Ａのレジスタ値がＲＡＭ３０へＤＭＡ転送（退避）され、また、図２のステップ２０８の処理として、次のアプリ＃Ｃが予定されているので、ＲＡＭ３０内のアプリ＃Ｃのレジスタ値が退避系レジスタセットにＤＭＡ転送されることになる。
【００３０】
図４は、本実施例によるスロット切替処理の効果の説明図であり、図４（Ａ）は、従来的なソフトウェアによるスロット切替処理のタイミングチャートであり、図４（Ｂ）は、本実施例によるスロット切替処理のタイミングチャートである。尚、図４においても図３と同様、スレッド数は“４”であり、アプリケーション４０として４つのアプリケーション（アプリ＃Ａ，アプリ＃Ｂ，アプリ＃Ｃ及びアプリ＃Ｄ）が、各スロット（slot＃０，slot＃１，slot＃２，slot＃３）にそれぞれ割り当てられている。
【００３１】
本実施例によれば、上述の如く切替処理時間が短縮されるので、命令実行帯域と割込み応答性がそれぞれ以下のように改善される。
命令実行帯域の向上分＝｛Ｔａ１／（Ｔａ１＋Ｔａ２’）｝−｛Ｔａ１／（Ｔａ１＋Ｔａ２）｝
割込み応答性の短縮分＝（２×Ｔａ１＋３×Ｔａ２）−（２×Ｔａ１＋３×Ｔａ２’）
ここで、効果算出の簡略化のため、Ｔａ１＝４×Ｔａ２、Ｔａ２’＝１／２×Ｔａ２とすると、それぞれは、
命令実行帯域の向上分＝（８／９−８／１０）×Ｔａ２’＝８／９０×Ｔａ２’
割込み応答性の短縮分＝（２２−１９）×Ｔａ２’＝３×Ｔａ２’
となり、その結果、図４（Ａ）に示す従来構成に対する本実施例による改善効果は、
命令実行帯域＝（向上帯域：本実施例）／（改善前帯域：従来構成）×１００＝（８／９０×Ｔａ２’）／（８／９×Ｔａ２’）×１００＝１０％
割込み応答性＝（短縮時間：本実施例）／（改善前時間域：従来構成）×１００＝（３×Ｔａ２’）／（２２×Ｔａ２’）×１００＝１３．６％
となる。
【００３２】
以上説明した本実施例のマルチスレッドプロセッサ装置１によれば、とりわけ、以下のような優れた効果が奏される。
【００３３】
本実施例のマルチスレッドプロセッサ装置１によれば、上述の如く、切替処理時間の短縮化により命令実行帯域と割込み応答性を高めることができる。更に、２面のレジスタセット１２のみを使用するので、各スレッド毎にレジスタバンクを実装した場合と比較して、レジスタバンク数が（スレッド数）−２だけハードウェア規模を低減することができる。また、実ハード実装マルチスレッド数がソフトウェア処理マルチスレッド数よりも小さい場合に必要となるソフトウェアでのスロット切替処理のためのソフトウェアプログラムが不要となる。
【００３４】
以上、本発明の好ましい実施例について詳説したが、本発明は、上述した実施例に制限されることはなく、本発明の範囲を逸脱することなく、上述した実施例に種々の変形及び置換を加えることができる。
【００３５】
例えば、上述した実施例では、２面のレジスタセット１２のみを使用しているが、３面以上のレジスタセット１２を使用することも可能である。例えば、運用系レジスタセットに加えて、２つ以上の待機系レジスタセットを設定してもよい。この場合、２つ以上の待機系レジスタセットには、次のスレッド用、次の次のスレッド用といった具合に、スケジュールされる直近の２つ以上のスレッド用のレジスタ値が順次復帰されるようにしてもよい。この場合、待機系レジスタセットからの待機レジスタ値の退避と、待機系レジスタセットへのレジスタ値の復帰とは、それぞれ別々のスレッド処理の裏で実行されることとしてもよい。
【００３６】
また、上述した実施例では、単一のシングルコアマイコンで複数のアプリケーション４０を処理する構成であったが、本発明は、これに限られず、AMP（Asymmetric Multiprocessing）等にも適用可能である。
【符号の説明】
【００３７】
１    マルチスレッドプロセッサ装置
１０    ＣＰＵ
１２（１２Ａ，１２Ｂ）    レジスタセット（運用系又は待機系のレジスタセット）
１３    プログラムカウンタ
１４    命令キュー
２０    ＤＭＡＣ
２４    タイマ
３０    ＲＡＭ
３２    フラッシュメモリ
４０    アプリケーション
【図１】
2010176403.tif 000003
【図２】
2010176403.tif 000004
【図３】
2010176403.tif 000005
【図４】
2010176403.tif 000006