JP4170364B2 - プロセッサ - Google Patents
プロセッサ Download PDFInfo
- Publication number
- JP4170364B2 JP4170364B2 JP2006535040A JP2006535040A JP4170364B2 JP 4170364 B2 JP4170364 B2 JP 4170364B2 JP 2006535040 A JP2006535040 A JP 2006535040A JP 2006535040 A JP2006535040 A JP 2006535040A JP 4170364 B2 JP4170364 B2 JP 4170364B2
- Authority
- JP
- Japan
- Prior art keywords
- task
- execution
- executed
- interruption
- time
- 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
Images
Classifications
-
- 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/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Description
このマルチタスクに関して、複数のレジスタ群を切り替えて用いることにより、プログラム実行機構の無駄を省き、効率的に複数のタスクを実行することが出来る技術が公開されている(特許文献1参照)。この技術では、複数のレジスタ群のうちの1レジスタ群を用いてタスクが実行されている間に、次に実行するタスクのコンテキストを他のレジスタ群に予め格納する処理を行っておき、1レジスタ群を用いて実行しているタスクの持ち時間が終了した時点で、すぐに他のレジスタ群を用いて実行を行うことで効率化を図っている。
残りの時間に何も行わないのは、プログラム実行機構が遊んでしまうことになるし、次のタスクを行うためには、そのタスクのコンテキストをレジスタ群に格納する処理を行ってから、そのタスクを実行しなければならない場合が生ずることになるため、どちらにしてもプログラム実行機構の効率的な利用がなされているとは言い難い。
また、前記記憶手段は、更に、前記タスク各々の実行中に発生し得る中断事由ごとの解消に要する時間情報を記憶し、前記制御手段は、前記復帰手段による復帰が終了する前に前記検出手段により中断事由が検出され、該当の時間情報に基づいて、前記復帰が終了する時より前記中断事由が解消される時が遅いと判断した場合に限り、前記実行手段に実行を止めさせると共に、前記タスクの実行に使用していたレジスタ群以外のレジスタ群を次に使用させる制御を行なうこととしてもよい。
また、前記記憶手段は、更に、前記タスク各々の実行中に発生し得る中断事由に関する情報を記憶し、前記検出手段は、複数種類の中断事由を検出することができ、前記制御手段が、前記検出手段が検出した中断事由に基づき、前記実行手段に実行を止めさせた場合、前記選択手段は、前記記憶手段に記憶されている中断事由に関する情報に基づき、前記検出された中断事由と同じ種類の中断事由が生じ得ないタスクを選択することとしてもよい。
また、前記プロセッサは、更に、前記実行手段が実行しているタスクを止める原因となった中断事由が解消されたことを検出する解消検出手段を備え、前記検出手段は、複数種類の中断事由を検出することができ、前記制御手段は、前記検出手段が検出した中断事由に基づいて前記実行手段にタスクの実行を止めさせた後の別タスク実行中であって、前記解消検出手段が前記タスクの中断事由が解消されたことを検出するまでに、前記検出手段が前記中断事由と同じ種類の中断事由を検出した場合には、前記解消検出手段が前記検出をするまでの間、実行中のタスクの実行を止めさせ、他のタスクの実行も行なわせないこととしてもよい。
すなわち、タスクの実行を止めている間は、プログラム実行機構を使用しない時間が生ずるが、中断事由の連続発生によって処理能力を超えることを防止することができる。
また、さらに、タスクの実行を止めている間のプログラム実行機構を使用しない時間は、クロックを供給しないことで消費電力を低減できるという利点もある。
<本プロセッサの動作原理>
本発明に係るプロセッサは、2つのレジスタ群をもち、複数のタスクを擬似並列的に実行するものである。その動きを、図1(A)を用いて説明する。
図1(A)は、本プロセッサでのマルチタスクの実行例を表すタイムチャートである。
カレントレジスタは、現在実行に使用しているレジスタを示しており、REG1とREG2は、本プロセッサの保有しているレジスタ群を表す。例では、REG1とREG2を交互に切り替えながら実行している。
REG1とREG2は、それぞれのレジスタ群に保持しているコンテキストがどのタスクのものかを表している。
例えば、プログラム実行機構の割り当て時間帯であるタイムスライス101で示すカレントレジスタでは、REG2が使用されてタスクBが実行されている。REG2には、タスクBのコンテキストが、時間t10から時間t11の間に、書き込まれている(以下、「復帰」という。)。
このように、次に実行するタスクのコンテキストを前倒しで復帰しておくことにより、レジスタを切り替えるのみで複数のタスクを効率よく実行できることになる。すなわち、プログラム実行機構が遊ぶことなく、実行できることになる。
次に、図1(B)を用いて、実行中のタスクに中断事由が発生し、タスクの実行が止められた場合について説明する。
図1(B)は、従来のプロセッサでの実行中のタスクが中断した例を表すタイムチャートである。
この場合の処理としては、2つ考えられる。1つは、タイムスライス120の残り時間は何も行わず、時間が来たらスタンバイレジスタであるREG1に切り替えてタスクCの実行を開始する方法である。
中断事由の発生時間である時間t12が時間t14よりも後に発生した場合は、スタンバイレジスタであるREG1に既にタスクCのコンテキストが復帰しているため、すぐにレジスタの切り替えを行い、タスクCの実行を開始する。
また、時間t12が時間t14より前に発生した場合は、すぐにスタンバイレジスタであるREG1にタスクCのコンテキストを復帰し、レジスタの切り替えを行い、タスクCの実行を開始する。時間t12が時間t14と時間t14の間に発生した場合は、タスクCのコンテキストの復帰完了を待って、タスクCの実行を開始する。
本プロセッサは、このような場合であっても、すなわち、実行しているタスクに中断事由が発生し、かつ、まだスタンバイレジスタに次に実行するタスクのコンテキストが復帰されていない場合でも、できるだけプログラム実行機構を遊ばせることなく動作させることができるものである。
図2は、本プロセッサでの実行中のタスクが中断した例を表すタイムチャートである。
タイムスライス131のカレントレジスタ(REG2)でタスクBを実行中に、時間t22に中断事由(矢印)が発生した場合は、スタンバイレジスタ(REG1)に切り替えて、REG1をカレントレジスタとして、再度タスクAを実行する。すなわち、スタンバイレジスタ(REG1)に残っていたコンテキストを利用するのである。
但し、時間t22は、スタンバイレジスタ(REG1)に次に実行するタスクの復帰を開始する予定の時間t23より前である必要がある。復帰の処理を開始する前であれば、現在実行中のタスクBの前に実行したタスクAのコンテキストがまだ残っているからである。
その理由は、次に実行するタスクを選んで復帰する処理は、タスクの切り替え直前が最も望ましいからである。
というのは、タスクには、そのタスクで実行するプログラムが割り当てられているが、そのプログラムは、常に実行可能な状態ではなく、時間的に後になればなるほど実行可能である確率が上がるからである。すなわち、プログラムが実行できない場合とは、データ待ちや、資源待ちで止まっている場合が多いことから、時間的に後に判断すればするほど、待ちが解消して実行可能な確率が上がることになるからである。
ここで、問題となるのは、タスクを順々に実行していく周期が崩れることであり、この例の場合、タスクAが他のタスクよりも結果的に優先的に実行されてしまう場合が生じ得ることである。
したがって、周期が崩れないことが、プログラムをタスクに割り当てる際の前提条件となる。
例では、タイムスライス130からタイムスライス135の範囲でみれば、タスクA、タスクB、タスクCはそれぞれ2回ずつ実行されていることになる。このタイムスライス130からタイムスライス135の時間幅は、プログラム全体の実行時間に比べれば、非常に小さいものであり、プログラムの実行になんら影響を与えるものではない。
<構成>
図3は、実施形態におけるプロセッサ1000の構成を示す機能ブロック図である。
プロセッサ1000は、スケジューリング制御部1100、プログラム実行制御部1200、コンテキスト記憶部1300、第1レジスタ群1400、第2レジスタ群1500、レジスタ切替部1600、プログラム実行部1700、タスク管理情報記憶部1800及びプログラム情報記憶部1900から構成される。
本ブロック図では、プロセッサが通常有している機能である通信機能、割込み機能などは図示していない。
まず、スケジューリング制御部1100は、タスクの実行順序を制御する機能を有する。具体的には、後述する記憶部に記憶しているタスクに関する情報を基に、次に実行するタスクを選択する。また、時間を管理し、各タスクの割り当て時間が終了する前に、レジスタにコンテキストを復帰する処理を行う。
次に、タスク管理情報記憶部1800は、同時に実行している複数のタスクの状態を記憶する機能を有する。
このタスク管理情報記憶部1800とプログラム情報記憶部1900は、本実施形態においては、動作が極めて高速な記憶素子であるとする。
<データ>
以下、本プロセッサで用いる主なデータについて、図4から図8を用いて説明する。
タスク制御テーブル1810及びタスク情報1820は、タスク管理情報記憶部1800に記憶されている。
図4(A)のタスク制御テーブル1810は、現在実行中のタスク、次に実行予定のタスク及び直前に実行したタスクを示す情報を保持している。
具体的には、タスク情報1820の該当するタスクを示す情報、例えば、インデックス値、アドレス等を記憶している。
このテーブルのタスクは、タイムスライスが1つ終了する毎にスケジューリング制御部1100が、書き換える。その書き換えは、基本的に、次の通りである。
次に、図4(B)のタスク情報1820は、タスクID1821、実行履歴情報1822とプログラム履歴1824で構成される。
また、このタスク情報1820のインデックス順に、タスクは実行されるものとする。例でいえば、タスクID「T0」のタスクが実行され、次に、タスクID「T1」のタスク、「T2」のタスク、「T0」のタスク、と順に実行されることになる。
本情報は、3ビットで構成される。初期値は、「000」であり、タイムスライスが一回実行されるたびに、1加算され「001」、「010」と増えて行き、「100」の次は、「000」となる。
プログラム履歴1824は、タスクに割り当てられているプログラムを示している。例えば、タスクID「T0」で表されるタスクに割り当てられているプログラムは、「P0」である。本実施形態では、タスクとプログラムは、1対1に割り当てられているものとして説明するが、タスクに割り当てられるプログラムとして、複数のプログラムが候補として存在し、状況に応じて最適なプログラムを候補の中から選択して割り当てることとしてもよい。
この例では、タスク制御テーブル1810のプレビアスタスクが、タスク情報1820のタスクID1821が「T2」のタスクを指している。同様にカレントタスクがタスク「T0」を、ネクストタスクがタスク「T1」を指している。
プログラム情報1910は、プログラム情報記憶部1900に記憶されている。
プログラム情報1910は、プログラムID1911、中断事由情報1912、解消時間情報1913及びプログラム状態情報1914とで構成される。
プログラムID1911は、プログラムの識別情報である。このプログラムID1911は、タスク情報1820のプログラム履歴1824で示されるものである。
この中断事由とは、この事由が発生した場合には、実行しているタスクの実行を中断せざるを得ないような事由をいう。本実施形態では、「キャッシュミス」、「DMA待ち」、「外部処理待ち」の3つの事由を中断事由としている。
「DMA待ち」とは、各種装置とメモリ間でデータをやりとりする時間が発生することをいう。尚、DMA(Direct Memory Access)とは、プログラム実行機構であるプログラム実行部1700を介さずに各装置とメモリ間でデータのやりとりを行う方式をいう。
次に、解消時間情報1913は、中断事由が解消するのに要する予想時間である。中断事由情報1912で、「あり」とされた中断事由が解消するのに要する時間を示している。この解消時間情報は、予め設定されているものとする。
プログラム状態情報1914は、プログラムが実行可能であるか否かなどの、プログラムの状態を表す。本実施形態では、「実行中」、「実行待ち」、「中断中」の3状態があるとする。
は、実行する準備が出来ており、実行の順番が回ってくるのを待っている状態をいう。また、「中断中」は、いまだ実行の準備が出来ていない状態をいう。
図7は、コンテキスト情報1930の構成及び内容例を示す図である。
コンテキスト情報1930は、プログラム情報記憶部1900に記憶されている。
以下、上述したプロセッサ1000の動作について図8〜図16を用いて説明する。
ここでは、実行するタスクを入れ替える処理、言い換えれば、次に実行するタスクを選択する処理について説明する。タスクを実行するための他の処理に関しては、通常のプロセッサと同様である(特許文献1参照)。
本実施形態では、タスク入替処理の方法として、2つの方法について説明する。
2つの方法ともに、タスク情報1820の実行履歴情報1822(図4(B)参照)を使用して行う。
<その1>
1つ目の方法は、タスク情報1820の実行履歴情報1822を、実行したタイムスライスのカウンタとして使用する方法である。
図8は、タスク入替処理(その1)を表すフローチャートである。
図10(A)は、実行中のタスクに中断事由が発生しない例を表す図である。
タスクは、「T0」、「T1」、「T2」の順で実行されるものとする。例えば、最初、それぞれのタスクの実行履歴情報1822は、「000」である。タイムスライス200でタスク「T0」、すなわちプログラム「P0」が実行されると、タスク「T0」の実行履歴情報が1加算されて「001」となる。図では、便宜上、実行履歴情報が変化したときのみを記載している。
図10(B)は、実行中のタスクに中断事由が発生した例を表す図である。
この図10(B)を使用しながら、動作を説明する。また、タスクに割り当てられたプログラムは、実行待ちの状態であるとする。
プログラム「P1」は、プログラム実行制御部1200を通じて、外部メモリ3000にデータを読みに行く処理を行うが、中断事由である「キャッシュミス」を起し、その旨をプログラム実行制御部1200に通知される。
タスクの入替処理の依頼を受けたスケジューリング制御部1100は、この依頼が中断事由が発生した場合の依頼であることを判断し(ステップS10:YES)、スタンバイレジスタ「第2レジスタ群」に、次のタスク「T2」のコンテキストが既に復帰されているかを判断する(ステップS11)。
従って、スケジューリング制御部1100は、スタンバイレジスタ「第2レジスタ群」に、次のタスク「T2」のコンテキストが復帰されておらず(ステップS11:NO)、復帰の処理を開始する前である場合(ステップS12:YES)であると判断し、スタンバイレジスタ「第2レジスタ群」に残っているコンテキスト、すなわちタスク「T0」を実行するための処理に移る。
タスクの入替処理が完了した旨の通知を受けたプログラム実行制御部1200は、スタンバイレジスタ「第2レジスタ群」を使用して実行するために、スタンバイレジスタ「第2レジスタ群」をカレントレジスタに切り替える旨をレジスタ切替部1600に通知する。その後、実行の開始をプログラム実行部に通知し、タスク「T0」の実行が開始される(ステップS15)。
尚、スタンバイレジスタ「第2レジスタ群」に、次のタスク「T2」のコンテキストが既に復帰されている場合(ステップS11:YES)には、スタンバイレジスタ「第2レジスタ群」に復帰済みのコンテキスト、すなわち次のタスク「T2」を実行するための処理に移る。
タイムスライス211の時間が終了する所定時間前に、スケジューリング制御部1100は、タスクの入替処理を行う。
スケジューリング制御部1100は、タスクの入替処理がタイムスライスを使い果たす場合の入替処理であることから(ステップS10:NO)、次に実行するタスク選択処理を行う(ステップS16)。
図9は、次に実行するタスク選択処理(その1)を表すフローチャートである。
スケジューリング制御部1100は、次に実行するタスクを選択する場合に、タスク情報1820の実行履歴情報1822を検索し、実行履歴情報1822の値が最も小さいものを選び出す(ステップS20)。
また、検索結果が複数ある場合(ステップS21:YES)は、その中で、実行順序の最も早いタスクを次に実行するタスクとする(ステップS22)。
例では、タイムスライス211の段階で、タイムスライス212で実行するタスクを選択する。従って、ステップS20では、タスク「T2」が検索される。
次に実行するタスク「T2」を選択したスケジューリング制御部1100は、スタンバイレジスタ「第1レジスタ群」のコンテキスト、すなわちタスク「T0」で実行したプログラム「P0」のコンテキストをタスク管理情報記憶部1800に保存しているコンテキスト情報1930のプログラム「P0」の部分に上書きし、退避する。その後、次に実行するタスク「T2」で実行するプログラム「P2」のコンテキストをコンテキスト情報1930からスタンバイレジスタ「第1レジスタ群」に読み込み、復帰する(ステップS17)。
これで、タイムスライス212で、タスク「T2」が実行される。
それ以降、中断処理が発生しなければ、タイムスライス213においてタスク「T0」を実行した段階で、タイムスライス211でタスク「T0」を前倒しで実行した分が解消され、タスク間の実行時間が保障されることになる。
次に、タスク入替処理の2つ目の方法について、説明する。
1つ目の方法は、タスク情報1820の実行履歴情報1822を、実行したタイムスライスのカウンタとして使用していたが、これから説明する2つ目の方法は、実行履歴情報1822を、予定外に前倒しで実行したタイムスライスのカウンタとして使用する方法である。
図11の説明に際し、図13を参照する。図13は、タスク実行中の実行履歴情報1822の遷移を表した図である。図13(A)は、1回中断事由が発生した例を示す図であり、図13(B)は、連続して中断事由が発生した例を示す図である。図13(B)では、説明の便宜上、4つのタスクで説明する。
ステップ10からステップ12の処理は、図8と同じである。
タイムスライス300においてタスク「T1」を実行中に中断事由が発生したことを検知したプログラム実行制御部1200は、タスクの入替処理をスケジューリング制御部1100に依頼する。
スケジューリング制御部1100は、スタンバイレジスタに用意されているタスク「T0」に割り当てられているプログラム「P0」の実行履歴情報1822に1加算して、「01」とする(ステップS41)(図13(A)参照)。その後、プログラム実行制御部1200に、タスクの入替処理が完了した旨を通知する。
タスク入替処理(その2)では、図9のタスク入替処理(その1)と異なり、スタンバイレジスタに残っている、直前に実行したタスクのコンテキストを使用してタスクを実行する場合にのみ、実行履歴情報1822を加算する。
次に実行するタスクを選択する処理(その2)については、図12、図13及び図14を用いて説明する。
まず、図12について図13を参照しながら説明する。
スケジューリング制御部1100は、次に実行するタスクを選択する場合に、タスク制御テーブル1810のネクストタスクが示すタスクの実行履歴情報1822を検索し、実行履歴情報1822の値がゼロ(0x00)である場合、すなわち、一度も前倒しで実行してない場合(ステップS50:NO)は、そのネクストタスクを次に実行するタスクとする(ステップS53)。
その後、タスク制御テーブル1810の内容を、ネクストタスクを実行したとして、張り替える。すなわち、現ネクストタスクの次のタスクをカレントタスクとし、このカレントタスクの次のタスクをネクストタスクとし、現カレントタスクをプレビアスタスクとする(ステップS52)。
例の場合、タイムスライス302で実行中のタスク「T2」の次に実行予定のタスクはタスク「T0」であるが、タスク「T0」の実行履歴情報が「01」であるので、−1して「00」とし、今回の実行を飛ばしている。よって、タイムスライス303では、タスク「T0」ではなく、タスク「T1」が実行されている。
図13(A)は、タイムスライス300で実行中のタスク「T1」が中断され、タイムスライス301で直前に実行していたタスク「T0」が実行されている。
この時点で、タスク「T0」の実行履歴情報1822は、1加算され「01」となる。
その後、タイムスライス302で、ネクストタスク「T2」がカレントタスクとなって実行される。この時のタスク制御テーブル1810は図14(3)の通りである。
図13(B)は、複数回、中断があった場合の例を示す図である。この場合は、便宜上、並列に実行するタスクは4つであるとする。
タイムスライス310で実行中のタスク「T1」の中断により、タスク「T0」が前倒しで実行されて、実行履歴情報1822は「01」となる。さらに、タイムスライス311で実行中のタスク「T2」の中断により、タスク「T0」が再度前倒しで実行されて、実行履歴情報1822は「10」になる。
次に、図11のステップS43の説明を、図15及び図16を用いて行う。
このステップS43は、2回連続して中断処理が行われた場合、すなわち、プレビアスタスクが2度連続して実行される場合の処理を示す。図13(B)も同様ではあるが、違いは、図15は、並列実行するタスクの個数が3つであることである。ここでは、並列実行するタスクの数と中断処理の回数等により生じうる場合の特殊ケースの対処法を示す。
図15では、タイムスライス400で実行中のタスク「T1」が中断され、タイムスライス401で直前に実行していたタスク「T0」が実行されている。
この時点で、タスク「T0」の実行履歴情報1822は、1加算され「01」となる。
その後、タイムスライス402で、ネクストタスク「T2」がカレントタスクとなって実行される。この時のタスク制御テーブル1810は図16(3)の通りである。
<変形例1>
<概要>
本変形例では、中断事由が発生した場合に、スタンバイレジスタに残っているコンテキストを使用してタスクを実行しようとする場合に、生じている中断事由と同じ中断事由が重ねて生じないようなするものである。中断事由の解消能力には一定の限界がある為、同じ中断事由が連続して生じた場合には、中断事由解消に必要以上の時間がかかる場合が生じうるからである。
中断事由が連続して生じないタスクを選択する例を、図17の遷移図及び図6のプログラム情報1910を用いて説明する。
図17は、タスク実行中に中断事由が発生した場合の、実行タスク及び実行履歴情報の遷移を表す図である。
タイムスライス600でタスク「T0」が実行されているときに中断事由が発生し、実行が中断される。プログラム「P0」のプログラム状態情報1914は「中断中」となり、中断事由が保存される。この例の場合の中断事由は、「キャッシュミス」とする。
その後、タイムスライス601でタスク「T1」が実行され、中断事由が発生する。中断事由は、「キャッシュミス」とする。
スケジューリング制御部1100は、タスク「T2」に割り当てられているプログラム「P2」のプログラム状態情報1914が「実行待ち」であるが、中断事由情報1912の「キャッシュミス」が「あり」であることから、選択せず、タスク「T3」を選択しようとする。
タイムスライス602で、タスク「T3」が前倒しで実行される。この時、実行しようとしているプログラムに同じ中断事由が発生しないかを判断することで、いくらかの性能劣化690が生じるが、同じ中断事由が発生しないことが保証されることになる。すなわち、ここで、タスク「T3」が実行されることにより、タスク「T2」を実行していたならばタスク「T1」の中断と重ねて発生していた中断が回避されたことになる。
<変形例2>
<概要>
本変形例では、中断事由が発生した場合に、その中断事由が解消するまでの時間によって、タスクを入れ替えるか否かを判断するものである。
1つ目は、中断事由の解消する時が、次のタスクの実行を開始する時よりも早い場合は、中断事由の解消を待つものである。
2つ目は、中断事由の解消に時間が係ると予想される場合に、同じ中断事由が重なって発生したら、最初の中断事由が解消するまで、クロックを供給しないで消費電力を抑えようとするものである。
<動作>
中断事由が発生した場合にその解消を待つ例を、図18の遷移図及び図6のプログラム情報1910を用いて説明する。
まず、1つ目を説明する。
タイムスライス700で実行中のタスク「T1」に中断事由が発生した場合、スケジューリング制御部1100は、タスク「T1」に割り当てられているプログラム「P1」の解消時間情報1913を参照する。この例の場合、中断事由は「キャッシュミス」であるとする。とすると、解消時間は、「100」となる。
タイムスライス700で実行中に発生した中断事由は、解消する時のほうが早いと判断され、実行が止まっている図である。
タイムスライス701で実行中のタスク「T2」に1つ目の中断事由「キャッシュミス」が発生する。このとき、スケジューリング制御部1100は、タイムスライス701で直前に実施していたタスク「T1」を、次に実行する。
また、スケジューリング制御部1100は、プログラム情報1910の解消時間情報1913を参照し、中断事由解消に要する時間を得、この時間が所定時間以上であれば、同じ中断事由での中断、すなわち2つ目の「キャッシュミス」を処理しないようにマスクをかける。すなわち、同じ中断事由が発生したことをプログラム実行制御部1200から受付はするが、スタンバイレジスタに残っている直前に実行していたタスクを実行することは行わないようにする。
次のタイムスライス704で、タスク入替処理で選択されたタスク「T2」の実行を再開する。このときには、まだ2つ目の「キャッシュミス」が解消されていないので、再度「キャッシュミス」が発生したとしても処理しないようにマスクがかかっている。
次のタイムスライス704で、タスク入替処理で選択されたタスク「T2」の実行を再開する。このときには、まだ2つ目の「キャッシュミス」が解消されていないので、再度「キャッシュミス」が発生したとしても処理しないようにマスクがかかっている。
<補足>
以上、本発明に係るプロセッサについて実施形態に基づいて説明したが、このプロセッサを部分的に変形することもでき、本発明は上述の実施形態に限られないことは勿論である。即ち、
(1)実施形態では、擬似並列的に実行するタスクの数を3または4としているが、それ以上の数であってもよい。
(2)実施形態では、クロックの供給を止めるのは、スケジューリング制御部1100以外の部分としているが、それ以外の部分でもよい。例えば、スケジューリング制御部の中のクロックを制御する部分以外に、クロックの供給を止めることとしてもよい。
(3)実施形態では、2つのレジスタ群を使用しているが、3つ以上のレジスタ群を使用することとしてもよい。
まず、タイムスライス131で、REG2でタスクBを実行中に、REG1ではなくてREG3にタスクCを復帰して、タスクBの次にタスクCを実行する準備をしているとする。REG1には、タスクAは残ったままである。
但し、タスクCの復帰をREG3にではなく、REG1に行おうとしている場合には、その復帰処理を行わずに、REG1に残っているタスクAを実行する。
1100 スケジューリング制御部
1200 プログラム実行制御部
1300 コンテキスト記憶部
1400 1500 レジスタ群
1600 レジスタ切替部
1700 プログラム実行部
1800 タスク管理情報記憶部
1810 タスク制御テーブル
1820 タスク情報
1900 プログラム情報記憶部
1910 プログラム情報
1930 コンテキスト情報
2000 外部プロセッサ
3000 外部メモリ
Claims (4)
- 複数のタスクを巡回的に、そのタスクに割当てられた時間ずつ実行するプロセッサであって、
複数のタスク各々の実行制御用情報を記憶する記憶手段と、
複数のレジスタ群と、
順次、レジスタ群の1つを使用し、その使用するレジスタ群に保持されている実行制御用情報に基づいて、タスクを実行する実行手段と、
次に実行するタスクを選択する選択手段と、
前記実行手段でタスクが割当てられた時間実行されている間に、前記選択手段で選択されたタスクの実行制御用情報を、前記記憶手段から、現在使用しているレジスタ群以外のレジスタ群に読み込む復帰を行なう復帰手段と、
前記実行手段で実行しているタスクを中断する必要がある中断事由を検出する検出手段と、
前記復帰手段による復帰が開始される前に、前記検出手段により中断事由が検出された場合は、前記実行手段にタスクの実行を止めさせると共に、前記タスクの実行に使用していたレジスタ群以外のレジスタ群に保持されている実行制御用情報に基づいてタスクを次に実行させるように前記実行手段の制御を行ない、前記次に実行させるタスクの実行制御情報が保持されているレジスタ群と前記復帰を開始しようとしていたレジスタ群とが同じレジスタ群である場合には、前記復帰を取り止めさせる制御手段を備えること
を特徴とするプロセッサ。 - 前記記憶手段は、更に、前記タスク各々の実行中に発生し得る中断事由ごとの解消に要する時間情報を記憶し、
前記制御手段は、前記復帰手段による復帰が終了する前に前記検出手段により中断事由が検出され、該当の時間情報に基づいて、前記復帰が終了する時より前記中断事由が解消される時が遅いと判断した場合に限り、前記実行手段に実行を止めさせると共に、前記タスクの実行に使用していたレジスタ群以外のレジスタ群に保持されている実行制御用情報に基づいてタスクを次に実行させるように前記実行手段の制御を行なう
ことを特徴とする請求項1記載のプロセッサ。 - 前記記憶手段は、更に、前記タスク各々の実行中に発生し得る中断事由に関する情報を記憶し、
前記検出手段は、複数種類の中断事由を検出することができ、
前記制御手段が、前記検出手段が検出した中断事由に基づき、前記実行手段に実行を止めさせた場合、前記選択手段は、前記記憶手段に記憶されている中断事由に関する情報に基づき、前記検出された中断事由と同じ種類の中断事由が生じ得ないタスクを選択する
ことを特徴とする請求項1記載のプロセッサ。 - 前記プロセッサは、更に、前記実行手段が実行しているタスクを止める原因となった中断事由が解消されたことを検出する解消検出手段を備え、
前記検出手段は、複数種類の中断事由を検出することができ、
前記制御手段は、前記検出手段が検出した中断事由に基づいて前記実行手段にタスクの実行を止めさせた後の別タスク実行中であって、前記解消検出手段が前記タスクの中断事由が解消されたことを検出するまでに、前記検出手段が前記中断事由と同じ種類の中断事由を検出した場合には、前記解消検出手段が前記検出をするまでの間、実行中のタスクの実行を止めさせ、他のタスクの実行も行なわせない
ことを特徴とする請求項1記載のプロセッサ。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004272096 | 2004-09-17 | ||
JP2004272096 | 2004-09-17 | ||
PCT/JP2005/010046 WO2006030564A1 (ja) | 2004-09-17 | 2005-06-01 | プロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2006030564A1 JPWO2006030564A1 (ja) | 2008-05-08 |
JP4170364B2 true JP4170364B2 (ja) | 2008-10-22 |
Family
ID=36059825
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006535040A Expired - Fee Related JP4170364B2 (ja) | 2004-09-17 | 2005-06-01 | プロセッサ |
Country Status (6)
Country | Link |
---|---|
US (1) | US8042116B2 (ja) |
EP (1) | EP1811375B1 (ja) |
JP (1) | JP4170364B2 (ja) |
CN (1) | CN100440153C (ja) |
DE (1) | DE602005021239D1 (ja) |
WO (1) | WO2006030564A1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8645955B2 (en) * | 2006-06-12 | 2014-02-04 | Samsung Electronics Co., Ltd. | Multitasking method and apparatus for reconfigurable array |
US8694999B2 (en) * | 2006-12-07 | 2014-04-08 | Wind River Systems, Inc. | Cooperative scheduling of multiple partitions in a single time window |
JP5061671B2 (ja) * | 2007-03-15 | 2012-10-31 | 富士通株式会社 | 演算プログラム、分散処理プログラム、分散処理システムおよび演算処理方法 |
US8407715B2 (en) * | 2007-04-30 | 2013-03-26 | National Tsing Hua University | Live range sensitive context switch procedure comprising a plurality of register sets associated with usage frequencies and live set information of tasks |
WO2010097847A1 (ja) * | 2009-02-24 | 2010-09-02 | パナソニック株式会社 | プロセッサ装置、マルチスレッドプロセッサ装置 |
US10303575B2 (en) * | 2017-01-10 | 2019-05-28 | International Business Machines Corporation | Time-slice-instrumentation facility |
CN109947548B (zh) * | 2019-03-15 | 2020-11-20 | 美智光电科技股份有限公司 | 分配时间片的方法和装置及控制任务执行的方法和装置 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59146387A (ja) | 1983-02-10 | 1984-08-22 | Fujitsu Ltd | マルチプロセスにおけるスタツク制御方式 |
JPH02148223A (ja) | 1988-11-30 | 1990-06-07 | Toshiba Corp | レジスタ退避復活装置 |
GB2234613B (en) * | 1989-08-03 | 1993-07-07 | Sun Microsystems Inc | Method and apparatus for switching context of state elements in a microprocessor |
KR960001273B1 (ko) * | 1991-04-30 | 1996-01-25 | 가부시키가이샤 도시바 | 단일칩 마이크로컴퓨터 |
JPH0830562A (ja) | 1994-07-19 | 1996-02-02 | Nec Corp | マルチプロセッサシステム |
US5857102A (en) * | 1995-03-14 | 1999-01-05 | Sun Microsystems, Inc. | System and method for determining and manipulating configuration information of servers in a distributed object environment |
JPH096633A (ja) * | 1995-06-07 | 1997-01-10 | Internatl Business Mach Corp <Ibm> | データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム |
JPH1011301A (ja) | 1996-06-25 | 1998-01-16 | Masaharu Imai | マルチタスク処理装置及びマルチタスク処理制御方法 |
US5933627A (en) * | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
JPH1139171A (ja) * | 1997-07-18 | 1999-02-12 | Masaharu Imai | マルチタスク処理装置、マルチタスク処理制御方法及び制御プログラム記憶媒体 |
US6697935B1 (en) * | 1997-10-23 | 2004-02-24 | International Business Machines Corporation | Method and apparatus for selecting thread switch events in a multithreaded processor |
US6408325B1 (en) * | 1998-05-06 | 2002-06-18 | Sun Microsystems, Inc. | Context switching technique for processors with large register files |
US6266781B1 (en) * | 1998-07-20 | 2001-07-24 | Academia Sinica | Method and apparatus for providing failure detection and recovery with predetermined replication style for distributed applications in a network |
US7748005B2 (en) * | 2000-01-28 | 2010-06-29 | Hewlett-Packard Development Company, L.P. | System and method for allocating a plurality of resources between a plurality of computing domains |
US6931641B1 (en) * | 2000-04-04 | 2005-08-16 | International Business Machines Corporation | Controller for multiple instruction thread processors |
US6684342B1 (en) | 2000-06-22 | 2004-01-27 | Ubicom, Inc. | Apparatus and method of dynamic and deterministic changes in clock frequency for lower power consumption while maintaining fast interrupt handling |
JP2002132517A (ja) | 2000-10-18 | 2002-05-10 | Canon Inc | 電子機器、カメラおよび視線入力装置 |
US7516191B2 (en) * | 2001-03-26 | 2009-04-07 | Salesforce.Com, Inc. | System and method for invocation of services |
US7000100B2 (en) * | 2001-05-31 | 2006-02-14 | Hewlett-Packard Development Company, L.P. | Application-level software watchdog timer |
US7136991B2 (en) * | 2001-11-20 | 2006-11-14 | Henry G Glenn | Microprocessor including random number generator supporting operating system-independent multitasking operation |
JP3813930B2 (ja) * | 2002-01-09 | 2006-08-23 | 松下電器産業株式会社 | プロセッサ及びプログラム実行方法 |
US7340740B2 (en) | 2003-04-22 | 2008-03-04 | International Business Machines Corporation | Cooperatively multitasking in an interrupt free computing environment |
JP2005301791A (ja) * | 2004-04-14 | 2005-10-27 | Nec Corp | 移動通信端末および移動通信端末のアプリケーション起動制御方法 |
-
2005
- 2005-06-01 US US11/661,273 patent/US8042116B2/en active Active
- 2005-06-01 WO PCT/JP2005/010046 patent/WO2006030564A1/ja active Application Filing
- 2005-06-01 CN CNB2005800297089A patent/CN100440153C/zh not_active Expired - Fee Related
- 2005-06-01 EP EP05745951A patent/EP1811375B1/en not_active Expired - Fee Related
- 2005-06-01 DE DE602005021239T patent/DE602005021239D1/de active Active
- 2005-06-01 JP JP2006535040A patent/JP4170364B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP1811375A4 (en) | 2009-01-07 |
CN100440153C (zh) | 2008-12-03 |
EP1811375A1 (en) | 2007-07-25 |
DE602005021239D1 (de) | 2010-06-24 |
JPWO2006030564A1 (ja) | 2008-05-08 |
EP1811375B1 (en) | 2010-05-12 |
WO2006030564A1 (ja) | 2006-03-23 |
US20080256542A1 (en) | 2008-10-16 |
US8042116B2 (en) | 2011-10-18 |
CN101027642A (zh) | 2007-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5469940B2 (ja) | 計算機システム、仮想計算機モニタ及び仮想計算機モニタのスケジューリング方法 | |
JP4170364B2 (ja) | プロセッサ | |
TWI426452B (zh) | Work processing device | |
JP5548037B2 (ja) | 命令発行制御装置及び方法 | |
JP2008084009A (ja) | マルチプロセッサシステム | |
JP2006040141A (ja) | マルチスレッドプロセッサ | |
TWI426451B (zh) | Work processing device | |
JP2008090546A (ja) | マルチプロセッサシステム | |
US20100050184A1 (en) | Multitasking processor and task switching method thereof | |
WO2009150815A1 (ja) | マルチプロセッサシステム | |
JP2017037370A (ja) | 計算機、プロセス制御方法およびプロセス制御プログラム | |
US20130311751A1 (en) | System and data loading method | |
JP2010044460A (ja) | 電源制御装置、計算機システム、電源制御方法、電源制御プログラムおよび記録媒体 | |
JP4837247B2 (ja) | プロセッサ | |
JP4723465B2 (ja) | ジョブ割当プログラム及びジョブ割当方法 | |
JP2019160155A (ja) | 情報処理装置、情報処理方法、及びプログラム | |
JP2009140130A (ja) | データ処理装置及びデータ処理装置の制御方法 | |
KR100728899B1 (ko) | 복수의 레지스터 집합과 하드웨어 작업 관리자를 가진고성능 멀티쓰레드 임베디드 프로세서 | |
JP2000215068A (ja) | マルチタスクスケジュ―リング装置 | |
JP2007193744A (ja) | 情報処理装置、プログラム、およびスケジューリング方法 | |
JPH10340197A (ja) | キャッシング制御方法及びマイクロコンピュータ | |
JP3795055B1 (ja) | 値予測装置、マルチプロセッサシステムおよび値予測方法 | |
JP2005071141A (ja) | スタック管理方法及び装置並びにスタック管理プログラム | |
WO2006016283A2 (en) | Task scheduling using context switch overhead table | |
JP2010044699A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20080715 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080806 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110815 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110815 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120815 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130815 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |