JP4170364B2 - プロセッサ - Google Patents

プロセッサ Download PDF

Info

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
Application number
JP2006535040A
Other languages
English (en)
Other versions
JPWO2006030564A1 (ja
Inventor
和司 蔵田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Publication of JPWO2006030564A1 publication Critical patent/JPWO2006030564A1/ja
Application granted granted Critical
Publication of JP4170364B2 publication Critical patent/JP4170364B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving 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つの仕事しか出来ないので、OS(Operating System)等の他の制御機構が、複数のタスクを非常に短い間隔で交互にプログラム実行機構に処理させることで、人の感覚からすれば同時進行しているかのように見せている。
従来、このマルチタスクを実現するための方法として、各タスクを一定時間ずつ順番に実行していくタイプのラウンドロビン方式がある。与えられたプログラム実行機構の時間(以下、「タイムスライス」という。)を使い果たしたタスクは、一旦中断されて、再度スケジューリングされ、再び自分の番が来たら、中断されていたタスクはその続きを再開する。
これらの各タスクは、その実行を一旦中断するときに、実行に必要な様々なレジスタ(以下、「レジスタ群」という。)に保持されている制御情報(以下、「コンテキスト」という。)をメモリに保存して、実行を再開するときに、メモリに保存してあるコンテキストをレジスタ群に格納し、中断時点から実行を再開する。
このマルチタスクに関して、複数のレジスタ群を切り替えて用いることにより、プログラム実行機構の無駄を省き、効率的に複数のタスクを実行することが出来る技術が公開されている(特許文献1参照)。この技術では、複数のレジスタ群のうちの1レジスタ群を用いてタスクが実行されている間に、次に実行するタスクのコンテキストを他のレジスタ群に予め格納する処理を行っておき、1レジスタ群を用いて実行しているタスクの持ち時間が終了した時点で、すぐに他のレジスタ群を用いて実行を行うことで効率化を図っている。
特開2003−271399号公報
しかし、タスクの実行中においては、タスクが持ち時間いっぱい実行できない場合、すなわち持ち時間の途中で、キャッシュミス等のタスクの実行を中断しなければならない場合が生じ得る。このような場合は、残りの時間は何も行わないか、ラウンドロビン方式等でのスケジューリングに沿って、次に実行する予定のタスクを行うことになる。
残りの時間に何も行わないのは、プログラム実行機構が遊んでしまうことになるし、次のタスクを行うためには、そのタスクのコンテキストをレジスタ群に格納する処理を行ってから、そのタスクを実行しなければならない場合が生ずることになるため、どちらにしてもプログラム実行機構の効率的な利用がなされているとは言い難い。
そこで、本発明は、タスクの中断に係る上記問題点に鑑みてなされたものであり、1つのプログラム実行機構で擬似並列的に複数のタスクを実行する場合に、より効率的にタスクの実行が可能なプロセッサの提供を目的とする。
上記課題を解決する為に、本発明のプロセッサは、複数のタスクを巡回的に、そのタスクに割当てられた時間ずつ実行するプロセッサであって、複数のタスク各々の実行制御用情報を記憶する記憶手段と、複数のレジスタ群と、順次、レジスタ群の1つを使用し、その使用するレジスタ群に保持されている実行制御用情報に基づいて、タスクを実行する実行手段と、次に実行するタスクを選択する選択手段と、前記実行手段でタスクが割当てられた時間実行されている間に、前記選択手段で選択されたタスクの実行制御用情報を、前記記憶手段から、現在使用しているレジスタ群以外のレジスタ群に読み込む復帰を行なう復帰手段と、前記実行手段で実行しているタスクを中断する必要がある中断事由を検出する検出手段と、前記復帰手段による復帰が開始される前に、前記検出手段により中断事由が検出された場合は、前記実行手段にタスクの実行を止めさせると共に、前記タスクの実行に使用していたレジスタ群以外のレジスタ群を次に使用させる制御を行ない、前記次に使用するレジスタ群と前記復帰を開始しようとしていたレジスタ群とが同じレジスタ群である場合には、前記復帰を取り止めさせる制御手段を備えることを特徴とする。
本発明に係るプロセッサは、上述の構成を備えることにより、実行中のタスクを中断せざる負えなくなっても、他のレジスタ群に残っている直前に実行していたタスクの情報を基に、レジスタ群を切り替えるだけでタスクを実行することが可能になるので、プログラム実行機構を無駄なく使用することができるようになる。
また、前記記憶手段は、更に、前記タスク各々の実行中に発生し得る中断事由ごとの解消に要する時間情報を記憶し、前記制御手段は、前記復帰手段による復帰が終了する前に前記検出手段により中断事由が検出され、該当の時間情報に基づいて、前記復帰が終了する時より前記中断事由が解消される時が遅いと判断した場合に限り、前記実行手段に実行を止めさせると共に、前記タスクの実行に使用していたレジスタ群以外のレジスタ群を次に使用させる制御を行なうこととしてもよい。
これにより、実行中のタスクに発生した中断事由が解消する方が、レジスタ群を切り替えて実行するよりも早い場合には、中断事由の解消を待つことができるので、無条件にレジスタ群を切り替えてタスクを実行するよりも、より効率的にプログラム実行機構を使用することができるようになる。
また、前記記憶手段は、更に、前記タスク各々の実行中に発生し得る中断事由に関する情報を記憶し、前記検出手段は、複数種類の中断事由を検出することができ、前記制御手段が、前記検出手段が検出した中断事由に基づき、前記実行手段に実行を止めさせた場合、前記選択手段は、前記記憶手段に記憶されている中断事由に関する情報に基づき、前記検出された中断事由と同じ種類の中断事由が生じ得ないタスクを選択することとしてもよい。
これにより、実行中のタスクに発生した中断事由が解消する前に、同じ中断事由が発生しないタスクを選択して実行することができるので、その中断事由の処理能力を超えることなくタスクを実行することができ、より効率的にプログラム実行機構を使用することができるようになる。
また、前記プロセッサは、更に、前記実行手段が実行しているタスクを止める原因となった中断事由が解消されたことを検出する解消検出手段を備え、前記検出手段は、複数種類の中断事由を検出することができ、前記制御手段は、前記検出手段が検出した中断事由に基づいて前記実行手段にタスクの実行を止めさせた後の別タスク実行中であって、前記解消検出手段が前記タスクの中断事由が解消されたことを検出するまでに、前記検出手段が前記中断事由と同じ種類の中断事由を検出した場合には、前記解消検出手段が前記検出をするまでの間、実行中のタスクの実行を止めさせ、他のタスクの実行も行なわせないこととしてもよい。
これにより、実行中のタスクに発生した中断事由が解消する前に、同じ中断事由が発生した場合には、前の中断事由が解消するまでタスクの実行を行わないので、中断事由が連続発生することを防止することができる。
すなわち、タスクの実行を止めている間は、プログラム実行機構を使用しない時間が生ずるが、中断事由の連続発生によって処理能力を超えることを防止することができる。
従って、結果的に、より効率的にプログラム実行機構を使用することができるようになる。
また、さらに、タスクの実行を止めている間のプログラム実行機構を使用しない時間は、クロックを供給しないことで消費電力を低減できるという利点もある。
<実施形態>
<本プロセッサの動作原理>
本発明に係るプロセッサは、2つのレジスタ群をもち、複数のタスクを擬似並列的に実行するものである。その動きを、図1(A)を用いて説明する。
図1(A)は、本プロセッサでのマルチタスクの実行例を表すタイムチャートである。
本プロセッサは、2つのレジスタ群を切り替えることができ、どちらのレジスタ群を使用しても同じように実行できるものである。
カレントレジスタは、現在実行に使用しているレジスタを示しており、REG1とREG2は、本プロセッサの保有しているレジスタ群を表す。例では、REG1とREG2を交互に切り替えながら実行している。
また、実行タスクは、カレントレジスタで実行しているタスクを表している。例では、タスクA、タスクB、タスクCの順番で、順々に実行している。
REG1とREG2は、それぞれのレジスタ群に保持しているコンテキストがどのタスクのものかを表している。
例えば、プログラム実行機構の割り当て時間帯であるタイムスライス101で示すカレントレジスタでは、REG2が使用されてタスクBが実行されている。REG2には、タスクBのコンテキストが、時間t10から時間t11の間に、書き込まれている(以下、「復帰」という。)。
この復帰の処理は、タイムスライス100で行われている。すなわち、REG1を使用してタスクAを実行している間に、使っていない他のレジスタであって、次に使用される予定のレジスタ(以下、「スタンバイレジスタ」という。)REG2に、実行中のタスクAの次に実行するタスクBのコンテキストを復帰しておくのである。
このように、次に実行するタスクのコンテキストを前倒しで復帰しておくことにより、レジスタを切り替えるのみで複数のタスクを効率よく実行できることになる。すなわち、プログラム実行機構が遊ぶことなく、実行できることになる。
尚、時間t10から時間t11の間に行う処理は、復帰の処理のみならず、レジスタに保持されているコンテキストのメモリへの退避、次に実行するタスクの選択も行われる。
次に、図1(B)を用いて、実行中のタスクに中断事由が発生し、タスクの実行が止められた場合について説明する。
図1(B)は、従来のプロセッサでの実行中のタスクが中断した例を表すタイムチャートである。
タイムスライス120で示すカレントレジスタでは、タスクBが実行されており、時間t12で中断事由(矢印)が発生し、タスクBの実行が止められたとする。
この場合の処理としては、2つ考えられる。1つは、タイムスライス120の残り時間は何も行わず、時間が来たらスタンバイレジスタであるREG1に切り替えてタスクCの実行を開始する方法である。
もう1つは、次に実行予定のタスクCを、時間を待たずに実行する方法である。
中断事由の発生時間である時間t12が時間t14よりも後に発生した場合は、スタンバイレジスタであるREG1に既にタスクCのコンテキストが復帰しているため、すぐにレジスタの切り替えを行い、タスクCの実行を開始する。
また、時間t12が時間t14より前に発生した場合は、すぐにスタンバイレジスタであるREG1にタスクCのコンテキストを復帰し、レジスタの切り替えを行い、タスクCの実行を開始する。時間t12が時間t14と時間t14の間に発生した場合は、タスクCのコンテキストの復帰完了を待って、タスクCの実行を開始する。
後者の方法が、前者の方法よりも、効率よくタスクの実行ができるが、時間t12が時間t13より前に発生した場合は、復帰の処理の時間分、プログラム実行機構が遊んでしまうことになる。
本プロセッサは、このような場合であっても、すなわち、実行しているタスクに中断事由が発生し、かつ、まだスタンバイレジスタに次に実行するタスクのコンテキストが復帰されていない場合でも、できるだけプログラム実行機構を遊ばせることなく動作させることができるものである。
図2を用いて、本プロセッサの動作の概要を説明する。
図2は、本プロセッサでの実行中のタスクが中断した例を表すタイムチャートである。
タイムスライス131のカレントレジスタ(REG2)でタスクBを実行中に、時間t22に中断事由(矢印)が発生した場合は、スタンバイレジスタ(REG1)に切り替えて、REG1をカレントレジスタとして、再度タスクAを実行する。すなわち、スタンバイレジスタ(REG1)に残っていたコンテキストを利用するのである。
このように切り替えを行えば、タイムスライス131のタスクBとタイムスライス132のタスクAが連続するため、プログラム実行機構が遊ばなくなる。
但し、時間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から構成される。
このプロセッサ1000は、複数の集積回路により構成されている。
本ブロック図では、プロセッサが通常有している機能である通信機能、割込み機能などは図示していない。
まず、スケジューリング制御部1100は、タスクの実行順序を制御する機能を有する。具体的には、後述する記憶部に記憶しているタスクに関する情報を基に、次に実行するタスクを選択する。また、時間を管理し、各タスクの割り当て時間が終了する前に、レジスタにコンテキストを復帰する処理を行う。
プログラム実行制御部1200は、プログラムの実行を制御する機能を有する。具体的には、実行中のプログラムから、外部メモリ3000へのアクセス依頼や、外部プロセッサ2000への処理依頼があった場合に、それぞれの外部機器とのデータのやり取り等を行う。同時に、プログラムからの中断事由を検出する役割を有することになる。また、レジスタ群の切替の指示をレジスタ切替部1600に出す機能等を有する。
コンテキスト記憶部1300は、タスクの実行に関する制御情報であるコンテキストを保存しておく機能を有する。複数のタスクが同時に実行されている場合に、それぞれのタスクのコンテキストを保存する。このコンテキストは、原則として、そのタスクのタイムスロットが終了し、タスクを一旦中断する場合に、カレントレジスタから書き込まれ、そのタスクが再開される場合に、スタンバイレジスタに読み出される。
第1レジスタ群1400及び第2レジスタ群1500は、プログラム実行部1700が処理を実行するために、一時的にデータを格納する場所であり、命令、アドレス、演算するデータ、演算実行後の結果などを格納する。また、本レジスタは、本プロセッサが実行に必要とする全てのレジスタ、例えば、スタックレジスタやプログラムカウンタなどの機能が限定されているものや、機能が限定されていない汎用レジスタを含むものとする。
第1レジスタ群1400と第2レジスタ群1500とは、基本的に同じものであり、レジスタ切替部1600によって、一方のレジスタ群が選択され、選択されたレジスタ群を使用してタスクが実行される。この、選択されて現在タスクが実行されている方のレジスタをカレントレジスタと呼ぶ。一方、現在選択されていない方のレジスタ群、すなわち次に選択される予定のレジスタ群をスタンバイレジスタと呼ぶ。
プログラム実行部1700は、カレントレジスタを使用しながら、プログラムを実行する機能を有する。このプログラム実行部1700は、いわゆるプログラム実行機構であり、同時に1つのプログラムのみを実行できるものである。
次に、タスク管理情報記憶部1800は、同時に実行している複数のタスクの状態を記憶する機能を有する。
また、プログラム情報記憶部1900は、タスクに割り当てられているプログラムの状態を示す情報を記憶する機能を有する。
このタスク管理情報記憶部1800とプログラム情報記憶部1900は、本実施形態においては、動作が極めて高速な記憶素子であるとする。
<データ>
以下、本プロセッサで用いる主なデータについて、図4から図8を用いて説明する。
図4(A)は、タスク制御テーブル1810の構成及び内容例を示し、図4(B)は、タスク情報1820の構成及び内容例を示す。
タスク制御テーブル1810及びタスク情報1820は、タスク管理情報記憶部1800に記憶されている。
図4(A)のタスク制御テーブル1810は、現在実行中のタスク、次に実行予定のタスク及び直前に実行したタスクを示す情報を保持している。
プレビアスタスクは、直前に実行したタスクを示す。カレントタスクは、現在実行中のタスクを示し、ネクストタスクは、次に実行予定のタスクを示している。
具体的には、タスク情報1820の該当するタスクを示す情報、例えば、インデックス値、アドレス等を記憶している。
このテーブルのタスクは、タイムスライスが1つ終了する毎にスケジューリング制御部1100が、書き換える。その書き換えは、基本的に、次の通りである。
実行しているカレントタスクの実行が終了すると、カレントタスクを新プレビアスタスクとし、ネクストタスクを新カレントタスクとする。新カレントタスクの次のタスクを新ネクストタスクとする。
次に、図4(B)のタスク情報1820は、タスクID1821、実行履歴情報1822とプログラム履歴1824で構成される。
タスクID1821は、タスクの識別子であり、タスク固有のものである。例では、「T0」等としている。
また、このタスク情報1820のインデックス順に、タスクは実行されるものとする。例でいえば、タスクID「T0」のタスクが実行され、次に、タスクID「T1」のタスク、「T2」のタスク、「T0」のタスク、と順に実行されることになる。
実行履歴情報1822は、タスクのタイムスライスが何度実行されたかを示す履歴を表している。
本情報は、3ビットで構成される。初期値は、「000」であり、タイムスライスが一回実行されるたびに、1加算され「001」、「010」と増えて行き、「100」の次は、「000」となる。
この情報は、タスクに割り当てられているプログラムの性質や、実行の状態などを基に、スケジューリング制御部1100が設定する。従って、常に同じではない。また、この例では、便宜上、タスクは4つ記載しているが、4つに限られないことはもちろんである。
プログラム履歴1824は、タスクに割り当てられているプログラムを示している。例えば、タスクID「T0」で表されるタスクに割り当てられているプログラムは、「P0」である。本実施形態では、タスクとプログラムは、1対1に割り当てられているものとして説明するが、タスクに割り当てられるプログラムとして、複数のプログラムが候補として存在し、状況に応じて最適なプログラムを候補の中から選択して割り当てることとしてもよい。
図5は、タスク制御テーブル1810とタスク情報1820の関係の例を示す図である。
この例では、タスク制御テーブル1810のプレビアスタスクが、タスク情報1820のタスクID1821が「T2」のタスクを指している。同様にカレントタスクがタスク「T0」を、ネクストタスクがタスク「T1」を指している。
このことは、現在実行中のタスクがタスク「T0」であり、タスク「T0]の直前に実行されていたタスクが「T2」で、実行中のタスク「T0」の次に実行されるのがタスク「T1」であることを表している。このポイント関係は、次に実行するタスクを選択する為にスケジューリング制御部1100が参照し、実行するタスクが変わるたびに、スケジューリング制御部1100が書き換える。
次に、図6は、プログラム情報1910の構成及び内容例を示す図である。
プログラム情報1910は、プログラム情報記憶部1900に記憶されている。
プログラム情報1910は、プログラムID1911、中断事由情報1912、解消時間情報1913及びプログラム状態情報1914とで構成される。
プログラムID1911は、プログラムの識別情報である。このプログラムID1911は、タスク情報1820のプログラム履歴1824で示されるものである。
中断事由情報1912は、プログラムID1911で示されるプログラムの実行中に起こり得る中断事由を表したものである。
この中断事由とは、この事由が発生した場合には、実行しているタスクの実行を中断せざるを得ないような事由をいう。本実施形態では、「キャッシュミス」、「DMA待ち」、「外部処理待ち」の3つの事由を中断事由としている。
「キャッシュミス」とは、キャッシュにアクセスしたが、要求されたデータが見つからないことをいい、ハードディスク等からデータを読み出すための時間を要する。
「DMA待ち」とは、各種装置とメモリ間でデータをやりとりする時間が発生することをいう。尚、DMA(Direct Memory Access)とは、プログラム実行機構であるプログラム実行部1700を介さずに各装置とメモリ間でデータのやりとりを行う方式をいう。
「外部処理待ち」とは、プログラム実行中に、外部プロセッサが処理すべきデータが発生し、外部プロセッサにその処理を依頼し、その処理待ちの場合や、処理を依頼した外部プロセッサの処理完了が遅くデータが滞り、データ待ちの状態になった場合などである。
次に、解消時間情報1913は、中断事由が解消するのに要する予想時間である。中断事由情報1912で、「あり」とされた中断事由が解消するのに要する時間を示している。この解消時間情報は、予め設定されているものとする。
例えば、プログラムID1911が「P1」で示されるプログラムは、実行中に「キャッシュミス」の中断事由が発生する可能性があり、それは、「100」クロックで解消されると予想される。
プログラム状態情報1914は、プログラムが実行可能であるか否かなどの、プログラムの状態を表す。本実施形態では、「実行中」、「実行待ち」、「中断中」の3状態があるとする。
「実行中」は、プログラムが、現在実行中であることを表す。「実行待ち」
は、実行する準備が出来ており、実行の順番が回ってくるのを待っている状態をいう。また、「中断中」は、いまだ実行の準備が出来ていない状態をいう。
図7は、コンテキスト情報1930の構成及び内容例を示す図である。
コンテキスト情報1930は、プログラム情報記憶部1900に記憶されている。
コンテキストは、プログラム毎にコンテキストの保存領域を確保しており、対応する領域に保存してある。プログラムが中断される場合に、カレントレジスタ群の内容をそのプログラムのコンテキスト領域に上書きする。また、再実行する場合に、実行するプログラムの領域に保存してあるコンテキストを読み出し、スタンバイレジスタに書き込む。これらの処理は、スケジューリング制御部1100によって行われる。
<動作>
以下、上述したプロセッサ1000の動作について図8〜図16を用いて説明する。
ここでは、実行するタスクを入れ替える処理、言い換えれば、次に実行するタスクを選択する処理について説明する。タスクを実行するための他の処理に関しては、通常のプロセッサと同様である(特許文献1参照)。
このタスク入替処理のフローチャートは、カレントレジスタを使用して実行中に、実行中のタスクに中断事由が発生した場合と、予定通りにタスクが実行されている場合との、2場面で行われる処理を示している。
本実施形態では、タスク入替処理の方法として、2つの方法について説明する。
2つの方法ともに、タスク情報1820の実行履歴情報1822(図4(B)参照)を使用して行う。
まず、1つ目の方法から説明する。
<その1>
1つ目の方法は、タスク情報1820の実行履歴情報1822を、実行したタイムスライスのカウンタとして使用する方法である。
図8は、タスク入替処理(その1)を表すフローチャートである。
図8の説明に際し、図10を参照する。図10は、タスク実行中の実行履歴情報1822の遷移を表した図である。図10では、3つのタスクが実行される例を示している。
図10(A)は、実行中のタスクに中断事由が発生しない例を表す図である。
タスクは、「T0」、「T1」、「T2」の順で実行されるものとする。例えば、最初、それぞれのタスクの実行履歴情報1822は、「000」である。タイムスライス200でタスク「T0」、すなわちプログラム「P0」が実行されると、タスク「T0」の実行履歴情報が1加算されて「001」となる。図では、便宜上、実行履歴情報が変化したときのみを記載している。
その後、それぞれのタスクが順に実行されていく毎に、そのタスクの実行履歴情報が1ずつ加算されていくことになる。
図10(B)は、実行中のタスクに中断事由が発生した例を表す図である。
この図10(B)を使用しながら、動作を説明する。また、タスクに割り当てられたプログラムは、実行待ちの状態であるとする。
まず、タイムスライス210において、カレントレジスタ(第1レジスタ群1400とする。)を使用してタスク「T1」に割り当てられているプログラム「P1」を、プログラム実行部1700が実行している。
プログラム「P1」は、プログラム実行制御部1200を通じて、外部メモリ3000にデータを読みに行く処理を行うが、中断事由である「キャッシュミス」を起し、その旨をプログラム実行制御部1200に通知される。
中断事由を通知されたプログラム実行制御部1200は、タスク入替処理をスケジューリング制御部1100に依頼する。
タスクの入替処理の依頼を受けたスケジューリング制御部1100は、この依頼が中断事由が発生した場合の依頼であることを判断し(ステップS10:YES)、スタンバイレジスタ「第2レジスタ群」に、次のタスク「T2」のコンテキストが既に復帰されているかを判断する(ステップS11)。
スケジューリング制御部1100が、タスク入替処理の依頼が中断事由が発生した場合の依頼であると判断できるのは、スケジューリング制御部1100が時間管理を行っているからである。実行中のタイムスライスの終了時間より前にこの依頼があれば、中断事由による依頼であると判断する。また、復帰の処理は、スケジューリング制御部1100自身が行うため、復帰中であるか否かは判断できる。
尚、このタイムスライス210のタスク「T1」実行中に発生した中断事由のタイミングは、まだ次のタスクの復帰処理が開始されていない時とする(以下、特に説明が無い場合は、同様とする。)。
従って、スケジューリング制御部1100は、スタンバイレジスタ「第2レジスタ群」に、次のタスク「T2」のコンテキストが復帰されておらず(ステップS11:NO)、復帰の処理を開始する前である場合(ステップS12:YES)であると判断し、スタンバイレジスタ「第2レジスタ群」に残っているコンテキスト、すなわちタスク「T0」を実行するための処理に移る。
スケジューリング制御部1100は、スタンバイレジスタに用意されているタスク「T0」に割り当てられているプログラム「P0」の実行履歴情報1822に1加算して、「011」とする(ステップS14)。その後、プログラム実行制御部1200に、タスクの入替処理が完了した旨を通知する。
タスクの入替処理が完了した旨の通知を受けたプログラム実行制御部1200は、スタンバイレジスタ「第2レジスタ群」を使用して実行するために、スタンバイレジスタ「第2レジスタ群」をカレントレジスタに切り替える旨をレジスタ切替部1600に通知する。その後、実行の開始をプログラム実行部に通知し、タスク「T0」の実行が開始される(ステップS15)。
これで、タイムスライス211で、タスク「T0」が実行されることになる。
尚、スタンバイレジスタ「第2レジスタ群」に、次のタスク「T2」のコンテキストが既に復帰されている場合(ステップS11:YES)には、スタンバイレジスタ「第2レジスタ群」に復帰済みのコンテキスト、すなわち次のタスク「T2」を実行するための処理に移る。
また、スタンバイレジスタ「第2レジスタ群」に、次のタスク「T2」のコンテキストが復帰されておらず(ステップS11:NO)、復帰している最中である場合(ステップS12:NO)には、次のタスク「T2」のコンテキストの復帰が完了するのを待って(ステップS13)、スタンバイレジスタ「第2レジスタ群」に復帰が完了したコンテキスト、すなわち次のタスク「T2」を実行するための処理に移る。
次に、タイムスライス212に実行するタスクを選択する方法について説明する。
タイムスライス211の時間が終了する所定時間前に、スケジューリング制御部1100は、タスクの入替処理を行う。
スケジューリング制御部1100は、タスクの入替処理がタイムスライスを使い果たす場合の入替処理であることから(ステップS10:NO)、次に実行するタスク選択処理を行う(ステップS16)。
この選択処理の詳細は、図9を用いて説明する。
図9は、次に実行するタスク選択処理(その1)を表すフローチャートである。
スケジューリング制御部1100は、次に実行するタスクを選択する場合に、タスク情報1820の実行履歴情報1822を検索し、実行履歴情報1822の値が最も小さいものを選び出す(ステップS20)。
検索結果が、1つである場合(ステップS21:NO)は、その該当タスクを次に実行するタスクとする(ステップS23)。
また、検索結果が複数ある場合(ステップS21:YES)は、その中で、実行順序の最も早いタスクを次に実行するタスクとする(ステップS22)。
例では、タイムスライス211の段階で、タイムスライス212で実行するタスクを選択する。従って、ステップS20では、タスク「T2」が検索される。
また、検索されたタスクは1つであることから、次に実行するタスクはタスク「T2」となる。
次に実行するタスク「T2」を選択したスケジューリング制御部1100は、スタンバイレジスタ「第1レジスタ群」のコンテキスト、すなわちタスク「T0」で実行したプログラム「P0」のコンテキストをタスク管理情報記憶部1800に保存しているコンテキスト情報1930のプログラム「P0」の部分に上書きし、退避する。その後、次に実行するタスク「T2」で実行するプログラム「P2」のコンテキストをコンテキスト情報1930からスタンバイレジスタ「第1レジスタ群」に読み込み、復帰する(ステップS17)。
その後、スタンバイレジスタ「第1ジスタ群」のコンテキストを使用して、タスク「T2」を実行するための処理(ステップS14,ステップS15)を行う。
これで、タイムスライス212で、タスク「T2」が実行される。
それ以降、中断処理が発生しなければ、タイムスライス213においてタスク「T0」を実行した段階で、タイムスライス211でタスク「T0」を前倒しで実行した分が解消され、タスク間の実行時間が保障されることになる。
<その2>
次に、タスク入替処理の2つ目の方法について、説明する。
1つ目の方法は、タスク情報1820の実行履歴情報1822を、実行したタイムスライスのカウンタとして使用していたが、これから説明する2つ目の方法は、実行履歴情報1822を、予定外に前倒しで実行したタイムスライスのカウンタとして使用する方法である。
図11は、タスク入替処理(その2)を表すフローチャートである。
図11の説明に際し、図13を参照する。図13は、タスク実行中の実行履歴情報1822の遷移を表した図である。図13(A)は、1回中断事由が発生した例を示す図であり、図13(B)は、連続して中断事由が発生した例を示す図である。図13(B)では、説明の便宜上、4つのタスクで説明する。
図11のタスク入替処理(その2)については、図8のタスク入替処理(その1)との差を中心に説明する。
ステップ10からステップ12の処理は、図8と同じである。
タイムスライス300においてタスク「T1」を実行中に中断事由が発生したことを検知したプログラム実行制御部1200は、タスクの入替処理をスケジューリング制御部1100に依頼する。
タスクの入替処理の依頼を受けたスケジューリング制御部1100は、この依頼が中断事由が発生した場合の依頼であることを判断し(ステップS10:YES)、スタンバイレジスタ「第2レジスタ群」に残っている、前に実行したタスク「T0」のコンテキストを使用して、タスクを実行するための処理に移る(ステップ11:YES、ステップ12:YES)。
ステップ43に関しては、特殊ケースであるため、図15及び図16を用いて後で説明する。通常は、NOのルートを通る。
スケジューリング制御部1100は、スタンバイレジスタに用意されているタスク「T0」に割り当てられているプログラム「P0」の実行履歴情報1822に1加算して、「01」とする(ステップS41)(図13(A)参照)。その後、プログラム実行制御部1200に、タスクの入替処理が完了した旨を通知する。
タスクの入替処理が完了した旨の通知を受けたプログラム実行制御部1200は、実行レジスタを切り替えて、プログラムを実行する(ステップS15)。
タスク入替処理(その2)では、図9のタスク入替処理(その1)と異なり、スタンバイレジスタに残っている、直前に実行したタスクのコンテキストを使用してタスクを実行する場合にのみ、実行履歴情報1822を加算する。
この違いに伴い、通常のタイムスライスが終了した場合の、次のタスクを選択する処理も異なる(ステップS42)。
次に実行するタスクを選択する処理(その2)については、図12、図13及び図14を用いて説明する。
まず、図12について図13を参照しながら説明する。
図12は、次に実行するタスク選択処理(その2)を表すフローチャートである。図13は、タスク入れ替処理(その2)を行う場合の実行履歴情報1822の遷移を表す図である。
スケジューリング制御部1100は、次に実行するタスクを選択する場合に、タスク制御テーブル1810のネクストタスクが示すタスクの実行履歴情報1822を検索し、実行履歴情報1822の値がゼロ(0x00)である場合、すなわち、一度も前倒しで実行してない場合(ステップS50:NO)は、そのネクストタスクを次に実行するタスクとする(ステップS53)。
実行履歴情報1822の値がゼロ(0x00)より上である場合、すなわち、一度でも前倒しで実行している場合(ステップS50:YES)は、その該当タスクの実行履歴情報1822から1減算する(ステップS51)。すなわち、一回飛ばすため、余分に前倒しで行っている回数を1減らす処理を行う。
その後、タスク制御テーブル1810の内容を、ネクストタスクを実行したとして、張り替える。すなわち、現ネクストタスクの次のタスクをカレントタスクとし、このカレントタスクの次のタスクをネクストタスクとし、現カレントタスクをプレビアスタスクとする(ステップS52)。
そして、ステップ50からステップ52の処理を繰り返し、実行履歴情報1822の値がゼロのタスクが出てきたら、そのタスクを次に実行するタスクとする(ステップS53)。
例の場合、タイムスライス302で実行中のタスク「T2」の次に実行予定のタスクはタスク「T0」であるが、タスク「T0」の実行履歴情報が「01」であるので、−1して「00」とし、今回の実行を飛ばしている。よって、タイムスライス303では、タスク「T0」ではなく、タスク「T1」が実行されている。
このタスク入替処理(その2)を行う場合の実行履歴情報1822及びタスク制御テーブル1810の遷移を、図13及び図14を用いて説明する。図14は、タスク入替処理(その2)を行う場合のタスク制御テーブル1810の例を表す図である。
図13(A)は、タイムスライス300で実行中のタスク「T1」が中断され、タイムスライス301で直前に実行していたタスク「T0」が実行されている。
図14(1)は、タスク「T1」が実行されているときの図である。その後タスク「T1」が中断されタスク「T0」が実行される場合、プレビアスタスクとカレントタスクを入れ替えて、図14(2)となる。
この時点で、タスク「T0」の実行履歴情報1822は、1加算され「01」となる。
その後、タイムスライス302で、ネクストタスク「T2」がカレントタスクとなって実行される。この時のタスク制御テーブル1810は図14(3)の通りである。
このタスク「T2」が終了すると、本来ならば次のタスクとなるべきネクストタスク「T0」の実行履歴情報1822がゼロではないため(図12ステップ50参照)、飛ばす処理、すなわち、実行履歴情報1822を1減算し、カレントタスクをタスク「T0」の次のタスクであるタスク「T1」にする。この時のタスク制御テーブル1810は図14(4)の通りである。
タイムスライス303で、タスク「T1」が実行され、タスク「T0」の実行履歴情報1822が「00」となっている。
図13(B)は、複数回、中断があった場合の例を示す図である。この場合は、便宜上、並列に実行するタスクは4つであるとする。
タイムスライス310で実行中のタスク「T1」の中断により、タスク「T0」が前倒しで実行されて、実行履歴情報1822は「01」となる。さらに、タイムスライス311で実行中のタスク「T2」の中断により、タスク「T0」が再度前倒しで実行されて、実行履歴情報1822は「10」になる。
その後、タスクが実行されていくに従い、タスク「T0」の実行履歴情報1822は「00」に戻っていく。すなわち「00」になった時点で、実行するタイムスライスの数が予定通りに戻ったことになる。
次に、図11のステップS43の説明を、図15及び図16を用いて行う。
このステップS43は、2回連続して中断処理が行われた場合、すなわち、プレビアスタスクが2度連続して実行される場合の処理を示す。図13(B)も同様ではあるが、違いは、図15は、並列実行するタスクの個数が3つであることである。ここでは、並列実行するタスクの数と中断処理の回数等により生じうる場合の特殊ケースの対処法を示す。
図15は、タスク入れ替処理(その2)を行う場合の実行履歴情報1822の遷移を表す図である。また、図16は、タスク入替処理(その2)を行う場合のタスク制御テーブル1810の例を表す図である。
図15では、タイムスライス400で実行中のタスク「T1」が中断され、タイムスライス401で直前に実行していたタスク「T0」が実行されている。
図16(1)は、タスク「T1」が実行されているときの図である。その後タスク「T1」が中断されタスク「T0」が実行される場合、プレビアスタスクとカレントタスクを入れ替えて、図16(2)となる。
この時点で、タスク「T0」の実行履歴情報1822は、1加算され「01」となる。
その後、タイムスライス402で、ネクストタスク「T2」がカレントタスクとなって実行される。この時のタスク制御テーブル1810は図16(3)の通りである。
このタスク「T2」の実行中に中断事由が発生する。本来ならばプレビアスタスク「T0」をカレントタスクとして実行する処理に移る。しかし、この時、タスク「T2」に中断事由が生じなかったとした場合に、タスク「T2」の次に実行するタスクすなわちネクストタスクもタスク「T0」である。すなわち、中断事由が生じたことで実行しようとしているタスクと、通常の順番からいくと次に実行するタスクとが同じタスクであることになる。
したがって、この場合は、実行履歴情報に手を加えずに、通常の処理と同様の処理を行うこととしている。この判定処理が、図11のステップS43である。中断事由が生じたことで実行しようとしているタスク、すなわち、スタンバイレジスタのタスクと通常順序のタスクが同じタスクである場合(ステップS43:YES)は、スタンバイレジスタの実行処理に移る。
タイムスライス403でタスク「T0」が実行されているが、タスク「T0」の実行履歴情報は「01」のままである。この時のタスク制御情報は、図16(4)のとおりである。
<変形例1>
<概要>
本変形例では、中断事由が発生した場合に、スタンバイレジスタに残っているコンテキストを使用してタスクを実行しようとする場合に、生じている中断事由と同じ中断事由が重ねて生じないようなするものである。中断事由の解消能力には一定の限界がある為、同じ中断事由が連続して生じた場合には、中断事由解消に必要以上の時間がかかる場合が生じうるからである。
<動作>
中断事由が連続して生じないタスクを選択する例を、図17の遷移図及び図6のプログラム情報1910を用いて説明する。
図17は、タスク実行中に中断事由が発生した場合の、実行タスク及び実行履歴情報の遷移を表す図である。
本変形例では、中断事由が発生した場合、スケジューリング制御部1100は、タスクに割り当てられ実行されているプログラムのプログラム状態情報1914を「中断中」と書き換える。また、中断事由を内部メモリ(図示していない。)に保存し、最新の中断事由のみを保存する。中断事由が解消すれば、プログラム状態情報1914を「実行待ち」とする。
また、スケジューリング制御部1100は、次に実行するタスクを選ぶ際、タスクに割り当てられているプログラムのプログラム情報1910を参照し、プログラム状態情報1914が「実行待ち」で、中断事由情報1912に保存している中断事由と同じ中断事由がないものを次に実行するプログラムとして選ぶことで、中断事由が連続して発生するのを防ぐ。
具体例を説明する。
タイムスライス600でタスク「T0」が実行されているときに中断事由が発生し、実行が中断される。プログラム「P0」のプログラム状態情報1914は「中断中」となり、中断事由が保存される。この例の場合の中断事由は、「キャッシュミス」とする。
その後、タイムスライス601でタスク「T1」が実行され、中断事由が発生する。中断事由は、「キャッシュミス」とする。
ここで、スケジューリング制御部1100は、直前に実行したタスク「T0」を選択しようとするが、プログラムID1911「P0」のプログラム状態情報1914が、「中断中」の為、次のタスク「T2」を選択しようとする。
スケジューリング制御部1100は、タスク「T2」に割り当てられているプログラム「P2」のプログラム状態情報1914が「実行待ち」であるが、中断事由情報1912の「キャッシュミス」が「あり」であることから、選択せず、タスク「T3」を選択しようとする。
タスク「T3」は、プログラム「P3」のプログラム状態情報1914が「実行待ち」であり、保存している中断事由と同じ中断事由情報1912の「キャッシュミス」が「なし」であることから、スケジューリング制御部1100は、次のタスクとして「T3」を選択する。
タイムスライス602で、タスク「T3」が前倒しで実行される。この時、実行しようとしているプログラムに同じ中断事由が発生しないかを判断することで、いくらかの性能劣化690が生じるが、同じ中断事由が発生しないことが保証されることになる。すなわち、ここで、タスク「T3」が実行されることにより、タスク「T2」を実行していたならばタスク「T1」の中断と重ねて発生していた中断が回避されたことになる。
次に、タイムスライス602において実行されているタスク「T3」の持ち時間が終了し、タイムスライス603でタスク「T2」が実行される。実行中のタスク「T2」に中断事由が発生し中断する。この後のタイムスライス604で、直前に実行していたタスク「T3」が実行されることになる。
<変形例2>
<概要>
本変形例では、中断事由が発生した場合に、その中断事由が解消するまでの時間によって、タスクを入れ替えるか否かを判断するものである。
本例では、2つ説明する。
1つ目は、中断事由の解消する時が、次のタスクの実行を開始する時よりも早い場合は、中断事由の解消を待つものである。
2つ目は、中断事由の解消に時間が係ると予想される場合に、同じ中断事由が重なって発生したら、最初の中断事由が解消するまで、クロックを供給しないで消費電力を抑えようとするものである。
2つに共通する点は、タスク実行中に中断事由が発生した場合には、無条件に、直前に実行していたタスクを実行するという実行方法を取らないで、一定の条件が満たされた場合には、実行を中断するという選択肢を持つことである。
<動作>
中断事由が発生した場合にその解消を待つ例を、図18の遷移図及び図6のプログラム情報1910を用いて説明する。
図18は、タスク実行中に中断事由が発生した場合の、実行タスクの遷移を表す図である。
まず、1つ目を説明する。
タイムスライス700で実行中のタスク「T1」に中断事由が発生した場合、スケジューリング制御部1100は、タスク「T1」に割り当てられているプログラム「P1」の解消時間情報1913を参照する。この例の場合、中断事由は「キャッシュミス」であるとする。とすると、解消時間は、「100」となる。
スケジューリング制御部1100は、レジスタを切り替えて、次のタスクの実行を開始する時よりも、発生している中断事由が解消する時、すなわち、中断事由が発生した時から解消時間が経過した時の方が早いと判断した場合には、その間、実行を中断する。
タイムスライス700で実行中に発生した中断事由は、解消する時のほうが早いと判断され、実行が止まっている図である。
2つ目を説明する。
タイムスライス701で実行中のタスク「T2」に1つ目の中断事由「キャッシュミス」が発生する。このとき、スケジューリング制御部1100は、タイムスライス701で直前に実施していたタスク「T1」を、次に実行する。
また、スケジューリング制御部1100は、プログラム情報1910の解消時間情報1913を参照し、中断事由解消に要する時間を得、この時間が所定時間以上であれば、同じ中断事由での中断、すなわち2つ目の「キャッシュミス」を処理しないようにマスクをかける。すなわち、同じ中断事由が発生したことをプログラム実行制御部1200から受付はするが、スタンバイレジスタに残っている直前に実行していたタスクを実行することは行わないようにする。
タイムスライス702でタスク「T1」実行され、タイムスライス703でタスク「T0」が実行される。このタスク「T0」の実行中に、2つ目の「キャッシュミス」が発生した場合、スケジューリング制御部1100は、マスクがかかっているため、前の「キャッシュミス」が解消するまで、スケジューリング制御部1100以外の部分へのクロックの供給を止める。
その後、1つ目の「キャッシュミス」が解消したら、クロックの供給を開始し、2つ目の「キャッシュミス」によるタスク入替処理を行う。この入替処理において、タスク「T1」の実行履歴情報が「00」となる。
次のタイムスライス704で、タスク入替処理で選択されたタスク「T2」の実行を再開する。このときには、まだ2つ目の「キャッシュミス」が解消されていないので、再度「キャッシュミス」が発生したとしても処理しないようにマスクがかかっている。
但し、1つ目の「キャッシュミス」の解消が予定の解消時間情報1913を過ぎても解消しない場合は、解消時間情報1913の時間経過後にタスクの入替処理が行われる。この入替処理において、タスク「T1」の実行履歴情報が「10」となる。
次のタイムスライス704で、タスク入替処理で選択されたタスク「T2」の実行を再開する。このときには、まだ2つ目の「キャッシュミス」が解消されていないので、再度「キャッシュミス」が発生したとしても処理しないようにマスクがかかっている。
これらの変形例1または変形例2の処理は、次に実行するタスク選択処理(図9、図12)で、追加的に行われることになる。
<補足>
以上、本発明に係るプロセッサについて実施形態に基づいて説明したが、このプロセッサを部分的に変形することもでき、本発明は上述の実施形態に限られないことは勿論である。即ち、
(1)実施形態では、擬似並列的に実行するタスクの数を3または4としているが、それ以上の数であってもよい。
(2)実施形態では、クロックの供給を止めるのは、スケジューリング制御部1100以外の部分としているが、それ以外の部分でもよい。例えば、スケジューリング制御部の中のクロックを制御する部分以外に、クロックの供給を止めることとしてもよい。
(3)実施形態では、2つのレジスタ群を使用しているが、3つ以上のレジスタ群を使用することとしてもよい。
この場合、実行中のタスクを中断した場合には、実行を中断したタスクが使用しているレジスタ群以外のレジスタ群に残っているコンテキストを利用して、タスクを実行する。すなわち、実施形態では、次に使用されるレジスタ群であるスタンバイレジスタに前に実行したタスクのコンテキストが残っている場合には、この残っているコンテキスト使用してタスクを実行するが、複数レジスタ群を使用する場合は、以前に使用したレジスタ群にコンテキストが残っている場合には、これらの1つを使用してタスクを実行することになる(図8等参照)。
具体例を、図2を用いて説明する。この例では、レジスタ群は、REG1とREG2の2つであるが、3つめのREG3があるとして、説明する。
まず、タイムスライス131で、REG2でタスクBを実行中に、REG1ではなくてREG3にタスクCを復帰して、タスクBの次にタスクCを実行する準備をしているとする。REG1には、タスクAは残ったままである。
この場合、タスクBの実行中で、Cの復帰開始前のt22に中断事由が発生し、Bを中断した場合には、REG1に残るタスクAを実行すればよい。REG3にはタスクCを復帰する処理を予定通り行う。
但し、タスクCの復帰をREG3にではなく、REG1に行おうとしている場合には、その復帰処理を行わずに、REG1に残っているタスクAを実行する。
複数のレジスタを使用して1つのプログラム実行機構で複数のタスクを順番に実行するプロセッサの場合に、実行中のタスクが予定外に中断したときに処理を続行するときに、特に有用である。
図1(A)は、本プロセッサでのマルチタスクの実行例を表すタイムチャートであり、図1(B)は、従来のプロセッサでの実行中のタスクが中断した例を表すタイムチャートである。 本プロセッサでの実行中のタスクが中断した例を表すタイムチャートである。 実施形態におけるプロセッサ1000の構成を示す機能ブロック図である。 図4(A)は、タスク制御テーブル1810の構成及び内容例を示す図であり、図4(B)は、タスク情報1820の構成及び内容例を示す図である。 タスク制御テーブル1810とタスク情報1820の関係の例を示す図である。 プログラム情報1910の構成及び内容例を示す図である。 コンテキスト情報1930の構成及び内容例を示す図である。 タスク入替処理(その1)を表すフローチャートである。 次に実行するタスク選択処理(その1)を表すフローチャートである。 タスク実行中の実行履歴情報1822の遷移を表した図である。図10(A)は、実行中のタスクに中断事由が発生しない例を表す図であり、図10(B)は、実行中のタスクに中断事由が発生した例を表す図である。 タスク入替処理(その2)を表すフローチャートである。 次に実行するタスク選択処理(その2)を表すフローチャートである。 タスク入れ替処理(その2)を行う場合の実行履歴情報1822の遷移を表す図である。図13(A)は、1回中断事由が発生した場合の図であり、図13(B)は、2回中断事由が発生した場合の図である。 タスク入替処理(その2)を行う場合のタスク制御テーブル1810の例を表す図である。 タスク入れ替処理(その2)を行う場合の特殊ケースの実行履歴情報1822の遷移を表す図である。 タスク入替処理(その2)を行う場合の特殊ケースのタスク制御テーブル1810の例を表す図である。 同じ中断事由が発生するタスクを選択しない場合の、実行タスク及び実行履歴情報の遷移を表す図である。 タスク実行中に同じ中断事由が発生した場合の、実行タスクの遷移を表す図である。
符号の説明
1000 1010 携帯通信端末
1100 スケジューリング制御部
1200 プログラム実行制御部
1300 コンテキスト記憶部
1400 1500 レジスタ群
1600 レジスタ切替部
1700 プログラム実行部
1800 タスク管理情報記憶部
1810 タスク制御テーブル
1820 タスク情報
1900 プログラム情報記憶部
1910 プログラム情報
1930 コンテキスト情報
2000 外部プロセッサ
3000 外部メモリ

Claims (4)

  1. 複数のタスクを巡回的に、そのタスクに割当てられた時間ずつ実行するプロセッサであって、
    複数のタスク各々の実行制御用情報を記憶する記憶手段と、
    複数のレジスタ群と、
    順次、レジスタ群の1つを使用し、その使用するレジスタ群に保持されている実行制御用情報に基づいて、タスクを実行する実行手段と、
    次に実行するタスクを選択する選択手段と、
    前記実行手段でタスクが割当てられた時間実行されている間に、前記選択手段で選択されたタスクの実行制御用情報を、前記記憶手段から、現在使用しているレジスタ群以外のレジスタ群に読み込む復帰を行なう復帰手段と、
    前記実行手段で実行しているタスクを中断する必要がある中断事由を検出する検出手段と、
    前記復帰手段による復帰が開始される前に、前記検出手段により中断事由が検出された場合は、前記実行手段にタスクの実行を止めさせると共に、前記タスクの実行に使用していたレジスタ群以外のレジスタ群に保持されている実行制御用情報に基づいてタスクを次に実行させるように前記実行手段の制御を行ない、前記次に実行させるタスクの実行制御情報が保持されているレジスタ群と前記復帰を開始しようとしていたレジスタ群とが同じレジスタ群である場合には、前記復帰を取り止めさせる制御手段を備えること
    を特徴とするプロセッサ。
  2. 前記記憶手段は、更に、前記タスク各々の実行中に発生し得る中断事由ごとの解消に要する時間情報を記憶し、
    前記制御手段は、前記復帰手段による復帰が終了する前に前記検出手段により中断事由が検出され、該当の時間情報に基づいて、前記復帰が終了する時より前記中断事由が解消される時が遅いと判断した場合に限り、前記実行手段に実行を止めさせると共に、前記タスクの実行に使用していたレジスタ群以外のレジスタ群に保持されている実行制御用情報に基づいてタスクを次に実行させるように前記実行手段の制御を行なう
    ことを特徴とする請求項1記載のプロセッサ。
  3. 前記記憶手段は、更に、前記タスク各々の実行中に発生し得る中断事由に関する情報を記憶し、
    前記検出手段は、複数種類の中断事由を検出することができ、
    前記制御手段が、前記検出手段が検出した中断事由に基づき、前記実行手段に実行を止めさせた場合、前記選択手段は、前記記憶手段に記憶されている中断事由に関する情報に基づき、前記検出された中断事由と同じ種類の中断事由が生じ得ないタスクを選択する
    ことを特徴とする請求項1記載のプロセッサ。
  4. 前記プロセッサは、更に、前記実行手段が実行しているタスクを止める原因となった中断事由が解消されたことを検出する解消検出手段を備え、
    前記検出手段は、複数種類の中断事由を検出することができ、
    前記制御手段は、前記検出手段が検出した中断事由に基づいて前記実行手段にタスクの実行を止めさせた後の別タスク実行中であって、前記解消検出手段が前記タスクの中断事由が解消されたことを検出するまでに、前記検出手段が前記中断事由と同じ種類の中断事由を検出した場合には、前記解消検出手段が前記検出をするまでの間、実行中のタスクの実行を止めさせ、他のタスクの実行も行なわせない
    ことを特徴とする請求項1記載のプロセッサ。
JP2006535040A 2004-09-17 2005-06-01 プロセッサ Expired - Fee Related JP4170364B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 移動通信端末および移動通信端末のアプリケーション起動制御方法

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