JP2010165209A - マルチスレッドプロセッサ装置 - Google Patents
マルチスレッドプロセッサ装置 Download PDFInfo
- Publication number
- JP2010165209A JP2010165209A JP2009007432A JP2009007432A JP2010165209A JP 2010165209 A JP2010165209 A JP 2010165209A JP 2009007432 A JP2009007432 A JP 2009007432A JP 2009007432 A JP2009007432 A JP 2009007432A JP 2010165209 A JP2010165209 A JP 2010165209A
- Authority
- JP
- Japan
- Prior art keywords
- task
- scheduler
- priority
- thread
- search
- 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】OS処理のオーバーヘッドを軽減して、処理実行効率と処理応答性を高めることができるマルチスレッドプロセッサ装置の提供。
【解決手段】本発明は、時分割マルチスレッド処理のためのタスクスイッチを行うマルチスレッドプロセッサ装置1であって、ハードウェアスケジューラ20を備え、前記ハードウェアスケジューラは、OSスケジューラにより更新されるタスク管理テーブルを備え、前記ハードウェアスケジューラは、前記タスク管理テーブルに基づいて、タスクスイッチのための優先タスク検索処理を行うように構成されていることを特徴とする。
【選択図】図1
【解決手段】本発明は、時分割マルチスレッド処理のためのタスクスイッチを行うマルチスレッドプロセッサ装置1であって、ハードウェアスケジューラ20を備え、前記ハードウェアスケジューラは、OSスケジューラにより更新されるタスク管理テーブルを備え、前記ハードウェアスケジューラは、前記タスク管理テーブルに基づいて、タスクスイッチのための優先タスク検索処理を行うように構成されていることを特徴とする。
【選択図】図1
Description
本発明は、時分割マルチスレッド処理のためのタスクスイッチを行うマルチスレッドプロセッサ装置に関する。
従来から、スレッド生成、終了を順序つけ、スレッド生成を高々1回に規定することによって、効率的なスレッドスケジューリングを実現し、これにより、ハードウェアによってスレッド管理を行うことを可能とした技術が知られている(例えば、特許文献1参照)。
ところで、近年、車載電子システムの進化に伴いECU搭載数が急速に増加しているが、搭載スペース上の問題により、ECUの機能統合化が進められている。ここで、全く異なる車載システム間の機能を統合する際のアプリケーション間の干渉を防止する策として、時分割マルチスレッディングが考えられる。
一般的な時分割マルチスレッディングでのタスクスイッチと時分割スレッドスイッチは、ソフトウェアで実現されている。リアルタイムOSでのタスクスイッチの主要な機能としては、レジスタ値の退避/復帰処理とタスクのスケジューリングとがある。ここで、前者のレジスタ値退避/復帰処理を加速させる手段としては、レジスタバンクなどのハードウェア資源が存在するが、後者のタスクのスケジューリングについてはソフトウェアでの処理が大半である。
現状のソフトウェア処理による時分割マルチスレッディングでは、タスクスイッチと時分割スレッドスイッチがソフトウェアの処理量の非常に多い機能となっている。即ち、時分割マルチスレッディングでの時分割スレッドスイッチ(タイムパーティション切替)は、タイマ割り込みによるソフトウェア処理であり、ソフトウェアの処理量が非常に多い機能となっている。また、リアルタイムOSでのタスクスイッチは、タスク毎に付与された優先度に基づいたプリエンプティブな優先度ベースのスケジューリング方式に従っており、こちらも同様にソフトウェアの処理量が非常に多い機能となっている。従って、現状のソフトウェア処理による時分割マルチスレッディングでは、処理実行効率の低下と処理応答性の劣化を招く虞があり、これは特に車載制御系のアプリケーションに対しては大きな問題である。
この点、上記の特許文献1では、スレッドスケジューリングを簡素化することで、ハードウェアによってスレッド管理を行うことを可能としているが、スレッドの実行手順やスケジュール可能なスレッド数に制約が多く柔軟性に欠けるという問題点がある。
そこで、本発明は、スケジューリングに柔軟性を持たせつつ、OS処理のオーバーヘッドを軽減して、処理実行効率と処理応答性を高めることができるマルチスレッドプロセッサ装置の提供を目的とする。
上記目的を達成するため、本発明の一局面によれば、時分割マルチスレッド処理のためのタスクスイッチを行うマルチスレッドプロセッサ装置であって、
ハードウェアスケジューラを備え、
前記ハードウェアスケジューラは、OSスケジューラにより更新されるタスク管理テーブルを備え、
前記ハードウェアスケジューラは、前記タスク管理テーブルに基づいて、タスクスイッチのための優先タスク検索処理を行うように構成されていることを特徴とするマルチスレッドプロセッサ装置が提供される。
ハードウェアスケジューラを備え、
前記ハードウェアスケジューラは、OSスケジューラにより更新されるタスク管理テーブルを備え、
前記ハードウェアスケジューラは、前記タスク管理テーブルに基づいて、タスクスイッチのための優先タスク検索処理を行うように構成されていることを特徴とするマルチスレッドプロセッサ装置が提供される。
本発明によれば、スケジューリングに柔軟性を持たせつつ、OS処理のオーバーヘッドを軽減して、処理実行効率と処理応答性を高めることができるマルチスレッドプロセッサ装置が得られる。
以下、図面を参照して、本発明を実施するための最良の形態の説明を行う。
図1は、本発明の一実施例によるマルチスレッドプロセッサ装置1の主要構成を示す図である。
マルチスレッドプロセッサ装置1は、CPU10と、ハードウェアスケジューラ20と、タイムパーティションを制御するタイムパーティションシステム(TPS)30とを備える。アプリケーション40は、複数のアプリケーションからなる。マルチスレッドプロセッサ装置1は、時分割マルチスレッド処理によってアプリケーション40のそれぞれを処理して、各種機能を実現する。アプリケーション40には、OSスケジューラが含まれる。各種のアプリケーション40は、多様な車載電子システムを実現するために必要な任意のアプリケーションであってもよいし、他の用途(車載用途以外の用途)のアプリケーションであってもよい。
CPU10の構成は、任意であってよいが、図示の例では、プログラムをメモリから取得する機構である命令フェッチユニット(IFU)と、プログラムカウンタなどのシステムレジスタと演算に用いる汎用レジスタとからなるレジスタセット(Reg)と、論理演算・乗算除算などを行う演算ユニット(Exe)と、メモリ・I/Oにアクセスする機構であるロードストアユニット(LSU)と、ハードウェアスケジューラ20をインタフェースする機構であるコプロセッサ・インターフェース(CP)とを含む。
ハードウェアスケジューラ20は、CPU10のコプロセッサ・インターフェースと処理中のタスクIDを示すレジスタと、最高優先タスクを検索するタスク検索エンジンと、各タスクの各種情報を格納したタスク管理テーブルと、最高優先タスクを検索するためのタスク検索テーブル(2面)とを含む。タスク管理テーブルは、ソフトウェアから任意に書き換えることができる。ハードウェアスケジューラ20からCPU10へは、検索動作の完了を通知する割り込み信号である検索完了通知(Sig#1)や、検索動作中のステイタスを通知する信号である検索状態通知(Sig#2)が送られる。
タイムパーティションシステム30は、マルチスレッドのタイムパーティション数や、各タイムパーティション(スレッド)のタイムウインドウをソフトウェアから設定するレジスタ(Reg)と、当該レジスタに設定されたタイムウインドウを計測する機構であるタイマとを含む。タイムパーティションシステム30は、ソフトウェア設定の任意のタイムウインドウで切替信号を生成する。この切替信号は、タイムパーティションを通知する信号であるTP通知(Sig#3)として、タイムパーティションシステム30からハードウェアスケジューラ20へ送られる。
本実施例では、各アプリケーションのタスク調停は、OSによって制御されたプリエンプティブな優先度ベースのスケジューリングに従う。但し、スケジューリングの最高優先タスクはハードウェアスケジューラ20にて実施される。後の具体例で説明するように、ハードウェアスケジューラ20は、タスクのステイタスとタスクの優先度に関する情報(タスク管理テーブル上の情報)に基づいて、最優先のタスクを検索・選出する。このようなハードウェアによるタスクスケジューリング処理により、OS処理のオーバーヘッドが軽減され、処理実行効率と割込み応答性が向上する。
以下、この最高優先タスク検索処理について詳説する。
ここでは、図2に示すような状況を想定する。図2に示す例で、タスク#Bは、タスク#Aの処理中に割り込みによって起床されたタスクであり、タスク#Aよりも優先度が高く、それ故にプリエンプトされることになる。図中のISR(Interrupt Service Routine)は、タスク#Bの起床処理であり、これに伴ってハードウェアスケジューラ20による最高優先タスク検索処理(図中のHW−SCH1のブロック)が実行される。また、同様にタスク#Bのターミネート時にハードウェアスケジューラ20による最高優先タスク検索処理(図中のHW−SCH2のブロック)が実行される。尚、従来は、「発明が解決しようとする課題」で上述した如く、このハードウェアスケジューラ20による最高優先タスク検索処理が、OSスケジューラにより実現されており、応答時間の長期化によるシステムの処理実行効率の低下とリアルタイム性の劣化が問題となっていた。本実施例では、実行すべきタスク(この例では、タスク#B)のスケジューリングをハードウェアスケジューラ20で実施することで、応答時間を短縮し、処理実行効率と割込み応答性を高めることができる。
図3は、最高優先タスク検索処理の要部の手順を示すフローチャートである。このフローチャートは、図2に示すような状況、即ち割込み発生により、タスク#Aからタスク#Bにスイッチされるまでの手順を示す。
ステップ300では、タスク#Aが実行されている。
ステップ302では、配下I/O若しくはタイマからの割込み信号をCPU10(INTC:割込みコントローラ)が検出する。
ステップ304では、割込みハンドラが起動され、タスク#Aのコンテキストを退避した後に、ISRがコールされる。尚、コンテキストの退避(復帰も同様)は、ソフトウェアで実現されてもよいし、レジスタバンクのようなハードウェアで実施されてもよい。
ステップ306では、ISRの中で、タスク#Bが起床され、OSスケジューラが呼ばれる。
ステップ308では、OSスケジューラ処理の中で、ハードウェアスケジューラ20のタスク管理テーブルが更新される。ハードウェアスケジューラ20に装備されるタスク管理テーブルの一例は図4に示される。図4に示す例では、タスク管理テーブルに格納される情報は、以下の通りである。
・Task-ID:OSで管理するタスクのIDを示す。
・Always:全てのタイムパーティションで動作(スケジューラ検索)されるタスクを示す。
・Time-Part:タスクが動作(スケジューラ検索)するタイムパーティション番号を示す。
・READY:タスク状態(実行・実行可能状態と、休止状態・待ち状態の2種があり、実行・実行可能状態でセット)を示す。
・Priority:タスクの優先度を示す。
・TCB-Pointer:タスクコントロールブロック(TCB)の先頭アドレスを示す。
・Task-ID:OSで管理するタスクのIDを示す。
・Always:全てのタイムパーティションで動作(スケジューラ検索)されるタスクを示す。
・Time-Part:タスクが動作(スケジューラ検索)するタイムパーティション番号を示す。
・READY:タスク状態(実行・実行可能状態と、休止状態・待ち状態の2種があり、実行・実行可能状態でセット)を示す。
・Priority:タスクの優先度を示す。
・TCB-Pointer:タスクコントロールブロック(TCB)の先頭アドレスを示す。
ステップ310では、ハードウェアスケジューラ20でのテーブル更新の検出でCPU10へ検索状態が通知され(Sig#2)、CPU10はフリーズする。即ち、次のステップ312の処理中に、ハードウェアスケジューラ20のタスク管理テーブルがOSスケジューラにより更新されないように同期機構が設けられる。
ステップ312では、ハードウェアスケジューラ20で最高優先タスク(本例ではタスク#B)が検索され、OS(CPU10)へ通知される。この最高優先タスク検索処理の具体例は後述する。
ステップ314では、OSでタスク#Bがディスパッチされる。
ステップ316では、タスク#Bが実行される。尚、タスク#Bが実行されると、ステップ300に戻る(タスク#Aをタスク#Bに読み替えた手順となる)。また、タスク#Bが終了すると、ステップ306と同様の処理に移行し、OSスケジューラが呼ばれて、ステップ308以降の処理が続くことになる。
次に、上記ステップ312の処理の具体例、即ちハードウェアスケジューラ20での最高優先タスク検索処理の具体例について説明する。ここでは、システムの前提を以下とする。
・Task-ID:タスクID=256(0〜255)
・Time-Part:タイムパーティション=4(0〜3)
・Priority:タスクの優先度=128(0〜127)
・Task-ID:タスクID=256(0〜255)
・Time-Part:タイムパーティション=4(0〜3)
・Priority:タスクの優先度=128(0〜127)
最高優先タスク検索処理は、大きく2つのステップからなる。第1のステップでは、有効なタスクIDが検索される。有効なタスクIDを検索する手法の一例は、Always-bitがセットされているタスクID(即ち全てのタイムパーティションで動作されるタスクID)、若しくは、タイムパーティションが該当するタスクの中でREADY-bitがセットされているタスクIDを、有効なタスクIDとして検索する。具体的には、以下の式1となる。
[(Always-bit=1)or(Time-Part「1:0]=TPS:Sig#3)and(READY-bit=1) 式1
第2のステップでは、第1のステップで検索された有効なタスクIDのうちから、優先度が最も高いタスクIDが検索される。即ち、有効なタスクから最高優先のエントリを検索する。この方法としては、タスクのステイタスを上位ビット、優先度を下位ビットにマッピングして、最大の値のタスクを検索する。このタスク検索方式は、MSBから1ビットずつ有効ビットを検索し、(タスク優先度ビット数+1)サイクルで処理する。具体的には、以下のサブステップ1〜10の手順となる。
[(Always-bit=1)or(Time-Part「1:0]=TPS:Sig#3)and(READY-bit=1) 式1
第2のステップでは、第1のステップで検索された有効なタスクIDのうちから、優先度が最も高いタスクIDが検索される。即ち、有効なタスクから最高優先のエントリを検索する。この方法としては、タスクのステイタスを上位ビット、優先度を下位ビットにマッピングして、最大の値のタスクを検索する。このタスク検索方式は、MSBから1ビットずつ有効ビットを検索し、(タスク優先度ビット数+1)サイクルで処理する。具体的には、以下のサブステップ1〜10の手順となる。
サブステップ1:上記式1の結果をイネーブルにして、ハードウェアスケジューラ20のタスク管理テーブルの優先度情報(Priority)を検索テーブル#1(第1面)へコピーし、検索結果Regの“8”をセットする。
サブステップ2:検索テーブル#1の優先度情報の7ビット目をイネーブルにして、検索テーブル#2(第2面)へ優先度情報をコピーし、有効ビットが有った場合(即ち1であった場合)は、検索結果Regの“7”をセットする。他方、有効ビットが無かった場合は、全ての優先度情報をコピーし、検索結果Regには何もセットしない。
サブステップ3:検索テーブル#2の優先度情報の6ビット目をイネーブルにして、検索テーブル#1へ優先度情報をコピーし、有効ビットが有った場合は、検索結果Regの“6”をセットする。他方、有効ビットが無かった場合は、全ての優先度情報をコピーし、検索結果Regには何もセットしない。
サブステップ4:検索テーブル#1の優先度情報の5ビット目をイネーブルにして、検索テーブル#2へ優先度情報をコピーし、有効ビットが有った場合は、検索結果Regの“5”をセットする。他方、有効ビットが無かった場合は、全ての優先度情報をコピーし、検索結果Regには何もセットしない。
サブステップ5:検索テーブル#2の優先度情報の4ビット目をイネーブルにして、検索テーブル#1へ優先度情報をコピーし、有効ビットが有った場合は、検索結果Regの“4”をセットする。他方、有効ビットが無かった場合は、全ての優先度情報をコピーし、検索結果Regには何もセットしない。
サブステップ6:検索テーブル#1の優先度情報の3ビット目をイネーブルにして、検索テーブル#2へ優先度情報をコピーし、有効ビットが有った場合は、検索結果Regの“3”をセットする。他方、有効ビットが無かった場合は、全ての優先度情報をコピーし、検索結果Regには何もセットしない。
サブステップ7:検索テーブル#2の優先度情報の2ビット目をイネーブルにして、検索テーブル#1へ優先度情報をコピーし、有効ビットが有った場合は、検索結果Regの“2”をセットする。他方、有効ビットが無かった場合は、全ての優先度情報をコピーし、検索結果Regには何もセットしない。
サブステップ8:検索テーブル#1の優先度情報の1ビット目をイネーブルにして、検索テーブル#2へ優先度情報をコピーし、有効ビットが有った場合は、検索結果Regの“1”をセットする。他方、有効ビットが無かった場合は、全ての優先度情報をコピーし、検索結果Regには何もセットしない。
サブステップ9:検索結果Regにセットされている数字のタスクのビットを256エントリ分取得する(最高優先タスクにフラグが立っている)。
サブステップ10:MSB側(最老)の有効なビットの番号が検索されたタスクID(即ち最高優先タスクのタスクID)となる。
以上説明した本実施例のマルチスレッドプロセッサ装置1によれば、とりわけ、以下のような優れた効果が奏される。
本実施例のマルチスレッドプロセッサ装置1によれば、上述の如く、ハードウェアスケジューラ20によるタスクスケジューリング処理により、OS処理(特にOSスケジューラによる処理)のオーバーヘッドが軽減され、処理実行効率と割込み応答性を効果的に改善することができる。また、タイムパーティション(スレッド)切替もハードウェア(タイムパーティションシステム30)で実装されているため、切替の処理量自体が軽減され、更には、切替処理のジッタも改善される。
以上、本発明の好ましい実施例について詳説したが、本発明は、上述した実施例に制限されることはなく、本発明の範囲を逸脱することなく、上述した実施例に種々の変形及び置換を加えることができる。
例えば、上述した実施例では、単一のシングルコアマイコンで複数のアプリケーション40を処理する構成であったが、本発明は、これに限られず、AMP(Asymmetric Multiprocessing)等にも適用可能である。
1 マルチスレッドプロセッサ装置
10 CPU
20 ハードウェアスケジューラ
30 タイムパーティションシステム
40 アプリケーション
10 CPU
20 ハードウェアスケジューラ
30 タイムパーティションシステム
40 アプリケーション
Claims (4)
- 時分割マルチスレッド処理のためのタスクスイッチを行うマルチスレッドプロセッサ装置であって、
ハードウェアスケジューラを備え、
前記ハードウェアスケジューラは、OSスケジューラにより更新されるタスク管理テーブルを備え、
前記ハードウェアスケジューラは、前記タスク管理テーブルに基づいて、タスクスイッチのための優先タスク検索処理を行うように構成されていることを特徴とする、マルチスレッドプロセッサ装置。 - 前記タスク管理テーブルには、各タスクのステイタスを表す情報と、各タスクの優先度を表す優先度情報と、各タスクが動作するタイムパーティション番号を表す情報とが格納される、請求項1に記載のマルチスレッドプロセッサ装置。
- 前記ハードウェアスケジューラによる前記優先タスク検索処理中は、前記OSスケジューラによる前記タスク管理テーブル上の前記各種情報の更新が禁止される、請求項2に記載のマルチスレッドプロセッサ装置。
- タイムパーティション切替を行うハードウェア資源を更に備える、請求項1〜3のうちのいずれか1項に記載のマルチスレッドプロセッサ装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009007432A JP2010165209A (ja) | 2009-01-16 | 2009-01-16 | マルチスレッドプロセッサ装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009007432A JP2010165209A (ja) | 2009-01-16 | 2009-01-16 | マルチスレッドプロセッサ装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010165209A true JP2010165209A (ja) | 2010-07-29 |
Family
ID=42581307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009007432A Pending JP2010165209A (ja) | 2009-01-16 | 2009-01-16 | マルチスレッドプロセッサ装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010165209A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9183047B2 (en) | 2011-05-13 | 2015-11-10 | Samsung Electronics Co., Ltd. | Classifying requested application based on processing and response time and scheduling threads of the requested application according to a preset group |
-
2009
- 2009-01-16 JP JP2009007432A patent/JP2010165209A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9183047B2 (en) | 2011-05-13 | 2015-11-10 | Samsung Electronics Co., Ltd. | Classifying requested application based on processing and response time and scheduling threads of the requested application according to a preset group |
US9594593B2 (en) | 2011-05-13 | 2017-03-14 | Samsung Electronics Co., Ltd | Application execution based on assigned group priority and priority of tasks groups of the application |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9047120B2 (en) | Virtual queue processing circuit and task processor | |
US7698540B2 (en) | Dynamic hardware multithreading and partitioned hardware multithreading | |
US8695002B2 (en) | Multi-threaded processors and multi-processor systems comprising shared resources | |
US8341641B2 (en) | Task processor | |
US9753779B2 (en) | Task processing device implementing task switching using multiple state registers storing processor id and task state | |
JP5411587B2 (ja) | マルチスレッド実行装置、マルチスレッド実行方法 | |
US20030154235A1 (en) | Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor | |
JP2006243865A (ja) | プロセッサおよび情報処理方法 | |
JP5745868B2 (ja) | マルチプロセッサシステム | |
US20090183163A1 (en) | Task Processing Device | |
KR20140127341A (ko) | 휴대용 컴퓨팅 디바이스에서 요청들을 스케쥴링하기 위한 방법 및 시스템 | |
JPWO2009150815A1 (ja) | マルチプロセッサシステム | |
WO2012113232A1 (zh) | 调整时钟中断周期的方法和装置 | |
JP4609113B2 (ja) | プロセッサ | |
US20030177163A1 (en) | Microprocessor comprising load monitoring function | |
EP2159691A1 (en) | Simultaneous multithreaded instruction completion controller | |
JP2007164421A (ja) | 並列処理装置及び並列処理方法及び並列処理プログラム | |
JPWO2003040948A1 (ja) | コンピュータ及び制御方法 | |
JP2006146758A (ja) | コンピュータシステム | |
JP2001117786A (ja) | プロセススケジューリング装置およびプロセススケジューリング方法 | |
JP2010165209A (ja) | マルチスレッドプロセッサ装置 | |
JP2010176403A (ja) | マルチスレッドプロセッサ装置 | |
JP2013061783A (ja) | マルチコア・プロセッサ | |
US20150363227A1 (en) | Data processing unit and method for operating a data processing unit | |
Moisuc et al. | Hardware event handling in the hardware real-time operating systems |