(57)【要約】【課題】ＯＳ処理のオーバーヘッドを軽減して、処理実行効率と処理応答性を高めることができるマルチスレッドプロセッサ装置の提供。【解決手段】本発明は、時分割マルチスレッド処理のためのタスクスイッチを行うマルチスレッドプロセッサ装置１であって、ハードウェアスケジューラ２０を備え、前記ハードウェアスケジューラは、ＯＳスケジューラにより更新されるタスク管理テーブルを備え、前記ハードウェアスケジューラは、前記タスク管理テーブルに基づいて、タスクスイッチのための優先タスク検索処理を行うように構成されていることを特徴とする。【選択図】図１
2010165209.tif 000002
【特許請求の範囲】
【請求項１】
時分割マルチスレッド処理のためのタスクスイッチを行うマルチスレッドプロセッサ装置であって、
ハードウェアスケジューラを備え、
前記ハードウェアスケジューラは、ＯＳスケジューラにより更新されるタスク管理テーブルを備え、
前記ハードウェアスケジューラは、前記タスク管理テーブルに基づいて、タスクスイッチのための優先タスク検索処理を行うように構成されていることを特徴とする、マルチスレッドプロセッサ装置。
【請求項２】
前記タスク管理テーブルには、各タスクのステイタスを表す情報と、各タスクの優先度を表す優先度情報と、各タスクが動作するタイムパーティション番号を表す情報とが格納される、請求項１に記載のマルチスレッドプロセッサ装置。
【請求項３】
前記ハードウェアスケジューラによる前記優先タスク検索処理中は、前記ＯＳスケジューラによる前記タスク管理テーブル上の前記各種情報の更新が禁止される、請求項２に記載のマルチスレッドプロセッサ装置。
【請求項４】
タイムパーティション切替を行うハードウェア資源を更に備える、請求項１〜３のうちのいずれか１項に記載のマルチスレッドプロセッサ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時分割マルチスレッド処理のためのタスクスイッチを行うマルチスレッドプロセッサ装置に関する。
【背景技術】
【０００２】
従来から、スレッド生成、終了を順序つけ、スレッド生成を高々１回に規定することによって、効率的なスレッドスケジューリングを実現し、これにより、ハードウェアによってスレッド管理を行うことを可能とした技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−２７１０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、近年、車載電子システムの進化に伴いＥＣＵ搭載数が急速に増加しているが、搭載スペース上の問題により、ＥＣＵの機能統合化が進められている。ここで、全く異なる車載システム間の機能を統合する際のアプリケーション間の干渉を防止する策として、時分割マルチスレッディングが考えられる。
【０００５】
一般的な時分割マルチスレッディングでのタスクスイッチと時分割スレッドスイッチは、ソフトウェアで実現されている。リアルタイムＯＳでのタスクスイッチの主要な機能としては、レジスタ値の退避／復帰処理とタスクのスケジューリングとがある。ここで、前者のレジスタ値退避／復帰処理を加速させる手段としては、レジスタバンクなどのハードウェア資源が存在するが、後者のタスクのスケジューリングについてはソフトウェアでの処理が大半である。
【０００６】
現状のソフトウェア処理による時分割マルチスレッディングでは、タスクスイッチと時分割スレッドスイッチがソフトウェアの処理量の非常に多い機能となっている。即ち、時分割マルチスレッディングでの時分割スレッドスイッチ（タイムパーティション切替）は、タイマ割り込みによるソフトウェア処理であり、ソフトウェアの処理量が非常に多い機能となっている。また、リアルタイムＯＳでのタスクスイッチは、タスク毎に付与された優先度に基づいたプリエンプティブな優先度ベースのスケジューリング方式に従っており、こちらも同様にソフトウェアの処理量が非常に多い機能となっている。従って、現状のソフトウェア処理による時分割マルチスレッディングでは、処理実行効率の低下と処理応答性の劣化を招く虞があり、これは特に車載制御系のアプリケーションに対しては大きな問題である。
【０００７】
この点、上記の特許文献１では、スレッドスケジューリングを簡素化することで、ハードウェアによってスレッド管理を行うことを可能としているが、スレッドの実行手順やスケジュール可能なスレッド数に制約が多く柔軟性に欠けるという問題点がある。
【０００８】
そこで、本発明は、スケジューリングに柔軟性を持たせつつ、ＯＳ処理のオーバーヘッドを軽減して、処理実行効率と処理応答性を高めることができるマルチスレッドプロセッサ装置の提供を目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の一局面によれば、時分割マルチスレッド処理のためのタスクスイッチを行うマルチスレッドプロセッサ装置であって、
ハードウェアスケジューラを備え、
前記ハードウェアスケジューラは、ＯＳスケジューラにより更新されるタスク管理テーブルを備え、
前記ハードウェアスケジューラは、前記タスク管理テーブルに基づいて、タスクスイッチのための優先タスク検索処理を行うように構成されていることを特徴とするマルチスレッドプロセッサ装置が提供される。
【発明の効果】
【００１０】
本発明によれば、スケジューリングに柔軟性を持たせつつ、ＯＳ処理のオーバーヘッドを軽減して、処理実行効率と処理応答性を高めることができるマルチスレッドプロセッサ装置が得られる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施例によるマルチスレッドプロセッサ装置１の主要構成を示す図である。
【図２】タスク＃Ａからタスク＃Ｂにスイッチされる状況を示すタイミングチャートである。
【図３】最高優先タスク検索処理の要部の手順を示すフローチャートである。
【図４】タスク管理テーブルの一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して、本発明を実施するための最良の形態の説明を行う。
【００１３】
図１は、本発明の一実施例によるマルチスレッドプロセッサ装置１の主要構成を示す図である。
【００１４】
マルチスレッドプロセッサ装置１は、ＣＰＵ１０と、ハードウェアスケジューラ２０と、タイムパーティションを制御するタイムパーティションシステム（ＴＰＳ）３０とを備える。アプリケーション４０は、複数のアプリケーションからなる。マルチスレッドプロセッサ装置１は、時分割マルチスレッド処理によってアプリケーション４０のそれぞれを処理して、各種機能を実現する。アプリケーション４０には、ＯＳスケジューラが含まれる。各種のアプリケーション４０は、多様な車載電子システムを実現するために必要な任意のアプリケーションであってもよいし、他の用途（車載用途以外の用途）のアプリケーションであってもよい。
【００１５】
ＣＰＵ１０の構成は、任意であってよいが、図示の例では、プログラムをメモリから取得する機構である命令フェッチユニット（ＩＦＵ）と、プログラムカウンタなどのシステムレジスタと演算に用いる汎用レジスタとからなるレジスタセット（Ｒｅｇ）と、論理演算・乗算除算などを行う演算ユニット（Ｅｘｅ）と、メモリ・Ｉ／Ｏにアクセスする機構であるロードストアユニット（ＬＳＵ）と、ハードウェアスケジューラ２０をインタフェースする機構であるコプロセッサ・インターフェース（ＣＰ）とを含む。
【００１６】
ハードウェアスケジューラ２０は、ＣＰＵ１０のコプロセッサ・インターフェースと処理中のタスクＩＤを示すレジスタと、最高優先タスクを検索するタスク検索エンジンと、各タスクの各種情報を格納したタスク管理テーブルと、最高優先タスクを検索するためのタスク検索テーブル（２面）とを含む。タスク管理テーブルは、ソフトウェアから任意に書き換えることができる。ハードウェアスケジューラ２０からＣＰＵ１０へは、検索動作の完了を通知する割り込み信号である検索完了通知（Ｓｉｇ＃１）や、検索動作中のステイタスを通知する信号である検索状態通知（Ｓｉｇ＃２）が送られる。
【００１７】
タイムパーティションシステム３０は、マルチスレッドのタイムパーティション数や、各タイムパーティション（スレッド）のタイムウインドウをソフトウェアから設定するレジスタ（Ｒｅｇ）と、当該レジスタに設定されたタイムウインドウを計測する機構であるタイマとを含む。タイムパーティションシステム３０は、ソフトウェア設定の任意のタイムウインドウで切替信号を生成する。この切替信号は、タイムパーティションを通知する信号であるＴＰ通知（Ｓｉｇ＃３）として、タイムパーティションシステム３０からハードウェアスケジューラ２０へ送られる。
【００１８】
本実施例では、各アプリケーションのタスク調停は、ＯＳによって制御されたプリエンプティブな優先度ベースのスケジューリングに従う。但し、スケジューリングの最高優先タスクはハードウェアスケジューラ２０にて実施される。後の具体例で説明するように、ハードウェアスケジューラ２０は、タスクのステイタスとタスクの優先度に関する情報（タスク管理テーブル上の情報）に基づいて、最優先のタスクを検索・選出する。このようなハードウェアによるタスクスケジューリング処理により、ＯＳ処理のオーバーヘッドが軽減され、処理実行効率と割込み応答性が向上する。
【００１９】
以下、この最高優先タスク検索処理について詳説する。
【００２０】
ここでは、図２に示すような状況を想定する。図２に示す例で、タスク＃Ｂは、タスク＃Ａの処理中に割り込みによって起床されたタスクであり、タスク＃Ａよりも優先度が高く、それ故にプリエンプトされることになる。図中のＩＳＲ（Interrupt  Service  Routine）は、タスク＃Ｂの起床処理であり、これに伴ってハードウェアスケジューラ２０による最高優先タスク検索処理（図中のＨＷ−ＳＣＨ１のブロック）が実行される。また、同様にタスク＃Ｂのターミネート時にハードウェアスケジューラ２０による最高優先タスク検索処理（図中のＨＷ−ＳＣＨ２のブロック）が実行される。尚、従来は、「発明が解決しようとする課題」で上述した如く、このハードウェアスケジューラ２０による最高優先タスク検索処理が、ＯＳスケジューラにより実現されており、応答時間の長期化によるシステムの処理実行効率の低下とリアルタイム性の劣化が問題となっていた。本実施例では、実行すべきタスク(この例では、タスク＃Ｂ)のスケジューリングをハードウェアスケジューラ２０で実施することで、応答時間を短縮し、処理実行効率と割込み応答性を高めることができる。
【００２１】
図３は、最高優先タスク検索処理の要部の手順を示すフローチャートである。このフローチャートは、図２に示すような状況、即ち割込み発生により、タスク＃Ａからタスク＃Ｂにスイッチされるまでの手順を示す。
【００２２】
ステップ３００では、タスク＃Ａが実行されている。
【００２３】
ステップ３０２では、配下Ｉ／Ｏ若しくはタイマからの割込み信号をＣＰＵ１０（ＩＮＴＣ：割込みコントローラ）が検出する。
【００２４】
ステップ３０４では、割込みハンドラが起動され、タスク＃Ａのコンテキストを退避した後に、ＩＳＲがコールされる。尚、コンテキストの退避（復帰も同様）は、ソフトウェアで実現されてもよいし、レジスタバンクのようなハードウェアで実施されてもよい。
【００２５】
ステップ３０６では、ＩＳＲの中で、タスク＃Ｂが起床され、ＯＳスケジューラが呼ばれる。
【００２６】
ステップ３０８では、ＯＳスケジューラ処理の中で、ハードウェアスケジューラ２０のタスク管理テーブルが更新される。ハードウェアスケジューラ２０に装備されるタスク管理テーブルの一例は図４に示される。図４に示す例では、タスク管理テーブルに格納される情報は、以下の通りである。
・Task-ID：ＯＳで管理するタスクのＩＤを示す。
・Always：全てのタイムパーティションで動作（スケジューラ検索）されるタスクを示す。
・Time-Part：タスクが動作（スケジューラ検索）するタイムパーティション番号を示す。
・READY：タスク状態（実行・実行可能状態と、休止状態・待ち状態の２種があり、実行・実行可能状態でセット）を示す。
・Priority：タスクの優先度を示す。
・TCB-Pointer：タスクコントロールブロック（TCB）の先頭アドレスを示す。
【００２７】
ステップ３１０では、ハードウェアスケジューラ２０でのテーブル更新の検出でCPU１０へ検索状態が通知され（Ｓｉｇ＃２）、ＣＰＵ１０はフリーズする。即ち、次のステップ３１２の処理中に、ハードウェアスケジューラ２０のタスク管理テーブルがＯＳスケジューラにより更新されないように同期機構が設けられる。
【００２８】
ステップ３１２では、ハードウェアスケジューラ２０で最高優先タスク（本例ではタスク＃Ｂ）が検索され、ＯＳ（ＣＰＵ１０）へ通知される。この最高優先タスク検索処理の具体例は後述する。
【００２９】
ステップ３１４では、ＯＳでタスク＃Ｂがディスパッチされる。
【００３０】
ステップ３１６では、タスク＃Ｂが実行される。尚、タスク＃Ｂが実行されると、ステップ３００に戻る（タスク＃Ａをタスク＃Ｂに読み替えた手順となる）。また、タスク＃Ｂが終了すると、ステップ３０６と同様の処理に移行し、ＯＳスケジューラが呼ばれて、ステップ３０８以降の処理が続くことになる。
【００３１】
次に、上記ステップ３１２の処理の具体例、即ちハードウェアスケジューラ２０での最高優先タスク検索処理の具体例について説明する。ここでは、システムの前提を以下とする。
・Task-ID：タスクＩＤ＝２５６（０〜２５５）
・Time-Part：タイムパーティション＝４（０〜３）
・Priority：タスクの優先度＝１２８（０〜１２７）
【００３２】
最高優先タスク検索処理は、大きく２つのステップからなる。第１のステップでは、有効なタスクＩＤが検索される。有効なタスクＩＤを検索する手法の一例は、Always-bitがセットされているタスクＩＤ（即ち全てのタイムパーティションで動作されるタスクＩＤ）、若しくは、タイムパーティションが該当するタスクの中でREADY-bitがセットされているタスクＩＤを、有効なタスクＩＤとして検索する。具体的には、以下の式１となる。
［（Always-bit＝1）or（Time-Part「1：0］＝TPS：Sig#3）and（READY-bit＝1）  式１
第２のステップでは、第１のステップで検索された有効なタスクＩＤのうちから、優先度が最も高いタスクＩＤが検索される。即ち、有効なタスクから最高優先のエントリを検索する。この方法としては、タスクのステイタスを上位ビット、優先度を下位ビットにマッピングして、最大の値のタスクを検索する。このタスク検索方式は、ＭＳＢから１ビットずつ有効ビットを検索し、（タスク優先度ビット数＋１）サイクルで処理する。具体的には、以下のサブステップ１〜１０の手順となる。
【００３３】
サブステップ１：上記式１の結果をイネーブルにして、ハードウェアスケジューラ２０のタスク管理テーブルの優先度情報（Priority）を検索テーブル＃１（第１面）へコピーし、検索結果Ｒｅｇの“８”をセットする。
【００３４】
サブステップ２：検索テーブル＃１の優先度情報の７ビット目をイネーブルにして、検索テーブル＃２（第２面）へ優先度情報をコピーし、有効ビットが有った場合（即ち１であった場合）は、検索結果Ｒｅｇの“７”をセットする。他方、有効ビットが無かった場合は、全ての優先度情報をコピーし、検索結果Ｒｅｇには何もセットしない。
【００３５】
サブステップ３：検索テーブル＃２の優先度情報の６ビット目をイネーブルにして、検索テーブル＃１へ優先度情報をコピーし、有効ビットが有った場合は、検索結果Ｒｅｇの“６”をセットする。他方、有効ビットが無かった場合は、全ての優先度情報をコピーし、検索結果Ｒｅｇには何もセットしない。
【００３６】
サブステップ４：検索テーブル＃１の優先度情報の５ビット目をイネーブルにして、検索テーブル＃２へ優先度情報をコピーし、有効ビットが有った場合は、検索結果Ｒｅｇの“５”をセットする。他方、有効ビットが無かった場合は、全ての優先度情報をコピーし、検索結果Ｒｅｇには何もセットしない。
【００３７】
サブステップ５：検索テーブル＃２の優先度情報の４ビット目をイネーブルにして、検索テーブル＃１へ優先度情報をコピーし、有効ビットが有った場合は、検索結果Ｒｅｇの“４”をセットする。他方、有効ビットが無かった場合は、全ての優先度情報をコピーし、検索結果Ｒｅｇには何もセットしない。
【００３８】
サブステップ６：検索テーブル＃１の優先度情報の３ビット目をイネーブルにして、検索テーブル＃２へ優先度情報をコピーし、有効ビットが有った場合は、検索結果Ｒｅｇの“３”をセットする。他方、有効ビットが無かった場合は、全ての優先度情報をコピーし、検索結果Ｒｅｇには何もセットしない。
【００３９】
サブステップ７：検索テーブル＃２の優先度情報の２ビット目をイネーブルにして、検索テーブル＃１へ優先度情報をコピーし、有効ビットが有った場合は、検索結果Ｒｅｇの“２”をセットする。他方、有効ビットが無かった場合は、全ての優先度情報をコピーし、検索結果Ｒｅｇには何もセットしない。
【００４０】
サブステップ８：検索テーブル＃１の優先度情報の１ビット目をイネーブルにして、検索テーブル＃２へ優先度情報をコピーし、有効ビットが有った場合は、検索結果Ｒｅｇの“１”をセットする。他方、有効ビットが無かった場合は、全ての優先度情報をコピーし、検索結果Ｒｅｇには何もセットしない。
【００４１】
サブステップ９：検索結果Ｒｅｇにセットされている数字のタスクのビットを２５６エントリ分取得する（最高優先タスクにフラグが立っている）。
【００４２】
サブステップ１０：ＭＳＢ側（最老）の有効なビットの番号が検索されたタスクＩＤ（即ち最高優先タスクのタスクＩＤ）となる。
【００４３】
以上説明した本実施例のマルチスレッドプロセッサ装置１によれば、とりわけ、以下のような優れた効果が奏される。
【００４４】
本実施例のマルチスレッドプロセッサ装置１によれば、上述の如く、ハードウェアスケジューラ２０によるタスクスケジューリング処理により、ＯＳ処理（特にＯＳスケジューラによる処理）のオーバーヘッドが軽減され、処理実行効率と割込み応答性を効果的に改善することができる。また、タイムパーティション（スレッド）切替もハードウェア（タイムパーティションシステム３０）で実装されているため、切替の処理量自体が軽減され、更には、切替処理のジッタも改善される。
【００４５】
以上、本発明の好ましい実施例について詳説したが、本発明は、上述した実施例に制限されることはなく、本発明の範囲を逸脱することなく、上述した実施例に種々の変形及び置換を加えることができる。
【００４６】
例えば、上述した実施例では、単一のシングルコアマイコンで複数のアプリケーション４０を処理する構成であったが、本発明は、これに限られず、AMP（Asymmetric  Multiprocessing）等にも適用可能である。
【符号の説明】
【００４７】
１    マルチスレッドプロセッサ装置
１０    ＣＰＵ
２０    ハードウェアスケジューラ
３０    タイムパーティションシステム
４０    アプリケーション
【図１】
2010165209.tif 000003
【図２】
2010165209.tif 000004
【図３】
2010165209.tif 000005
【図４】
2010165209.tif 000006