JP2010044699A - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP2010044699A
JP2010044699A JP2008209886A JP2008209886A JP2010044699A JP 2010044699 A JP2010044699 A JP 2010044699A JP 2008209886 A JP2008209886 A JP 2008209886A JP 2008209886 A JP2008209886 A JP 2008209886A JP 2010044699 A JP2010044699 A JP 2010044699A
Authority
JP
Japan
Prior art keywords
interrupt process
processing
interrupt
shared resource
priority
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
Application number
JP2008209886A
Other languages
English (en)
Inventor
Katsuhisa Ogasawara
克久 小笠原
Kazunari Otogawa
一成 乙川
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.)
Toyota Motor Corp
Original Assignee
Toyota Motor Corp
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 Toyota Motor Corp filed Critical Toyota Motor Corp
Priority to JP2008209886A priority Critical patent/JP2010044699A/ja
Publication of JP2010044699A publication Critical patent/JP2010044699A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Multi Processors (AREA)

Abstract

【課題】本発明は、シングルプロセッサシステムにおいて、実行中の処理に排他的制御がかけられていても、優先度の高い処理を先に処理できる情報処理装置を提供することを目的とする。
【解決手段】情報処理を実行する単一のプロセッサ10と、
前記情報処理を行うにあたり、参照又は書き込み対象とされる共有資源20と、
割込処理を検知する割込検知手段11と、
前記プロセッサが実行する各処理毎の優先度を管理する優先度監視手段12と、を有する情報処理装置であって、
前記共有資源がスピンロックにより排他制御をかけられて前記プロセッサが処理実行中に、前記割込検知手段が割込処理の発生を検知したときには、前記優先度監視手段は、実行中処理と前記割込処理の優先度を比較し、
前記割込処理の優先度が前記実行中処理よりも高いときには、前記プロセッサは、前記割込処理を中断し、前記実行中処理が前記共有資源の解放を行った後、前記割込処理を再開することを特徴とする。
【選択図】図6

Description

本発明は、情報処理装置に関し、特に、単一のプロセッサを有する情報処理装置に関する。
従来から、シングルプロセッサ構成のシステムにおいて、プロセッサがメモリに対して連続的にリクエストを発行する場合のリードリクエストの処理時間を短縮することを目的として、リードリクエストに対するリクエストアクノレッジをアサートしてからデータアクノレッジをアサートするまでの間に、後続のリクエストがアサートされた場合に、当該後続のリクエストは受け付けられてパイプライン処理され、先行的に後続のリードリクエストの処理を開始することによって、リードリクエストに続くリクエストの処理時間を短縮するようにしたシステムが知られている(例えば、特許文献1参照)。
特開2005−190320号公報
しかしながら、上述の特許文献1に記載の構成では、ライト処理を伴う処理においては、排他的制御が必須となるため、ライトリクエストが最初になされた場合には、排他的制御のため後続のライトリクエストをパイプライン処理することはできず、ライト処理には対応できないという問題があった。
そこで、本発明は、シングルプロセッサシステムにおいて、先に実行している処理に排他的制御がかけられている場合であっても、先に実行している処理の完了を待つことなく、優先度の高い処理を先に処理することができる情報処理装置を提供することを目的とする。
上記目的を達成するため、第1の発明に係る情報処理装置は、情報処理を実行する単一のプロセッサと、
前記情報処理を行うにあたり、参照又は書き込み対象とされる共有資源と、
前記プロセッサが実行する各処理毎の優先度を管理する優先度監視手段と、
割込処理を検知する割込検知手段と、を有する情報処理装置であって、
前記共有資源がスピンロックにより排他制御をかけられて前記プロセッサが処理実行中に、前記割込検知手段が割込処理の発生を検知したときには、前記優先度監視手段は、実行中処理と前記割込処理の優先度を比較し、
前記割込処理の優先度が前記実行中処理よりも高いときには、前記プロセッサは、前記割込処理を中断し、前記実行中処理が前記共有資源の解放を行った後、前記割込処理を再開することを特徴とする。
これにより、シングルプロセッサにおいて、先に実行している処理に排他的制御がかけられている場合であっても、先に実行している処理を待つことなく、優先レベルの高い処理を優先的に処理させることができる。
第2の発明は、第1の発明に係る情報処理装置において、
前記割込処理の中断は、前記プロセッサの実行権を、前記割込処理から前記実行中処理に切り替える処理を実行することにより行われることを特徴とする。
これにより、プロセッサの実行権を高優先度の割込処理から低優先度の実行中処理に一旦渡すことができ、共有資源を解放させる処理を行わせることができる。
第3の発明は、第2の発明に係る情報処理装置において、
前記割込処理の再開は、前記プロセッサの実行権を、前記実行中処理から前記割込処理に復帰させる処理を実行することにより行われることを特徴とする。
これにより、低優先度の実行中処理に共有資源を解放させた後は、高優先度の割込処理を再開させることができ、高優先度の割込処理が共有資源を占有して先に処理を行うことができる。
第4の発明は、第1〜3のいずれかの発明に係る情報処理装置において、
前記実行中処理は、前記割込処理よりも優先度の低い低優先度割込処理であることを特徴とする。
これにより、排他的制御機構を有する低優先度の割込処理が先に処理を行っている場合であっても、高優先度の割込処理に先に処理を行わせることができ、本来の目的に沿った優先度で処理を実行することができる。
第5の発明は、第1〜4のいずれかの発明に係る情報処理装置において、
前記実行中処理及び前記割込処理は、前記共有資源内で不連続な使用スタック領域を割り当てられていることを特徴とする。
これにより、実行中処理と割込処理との切り替えを行っても、各々の処理に使用するスタック領域を破壊するおそれが無く、安全に切り替え処理や復帰処理を行うことができる。
本発明によれば、シングルプロセッサシステムにおいて、排他的制御がかけられて先に処理が行われていても、優先度の高い割込処理を先に処理させることができる。
以下、図面を参照して、本発明を実施するための最良の形態の説明を行う。
図1は、本発明を適用した実施例に係る情報処理装置の全体構成を示した図である。図1において、本実施例に係る情報処理装置は、プロセッサ10と、メモリ50とを有する。
プロセッサ10は、制御装置と演算装置の役割を果たす処理装置であり、種々の情報処理を実行する処理手段である。プロセッサ10は、CPU(Central Processing Unit)又はMPU(Micro Processing Unit)と呼んでもよい。プロセッサ10は、メモリ50に記憶されたプログラムの指示に従って他の装置を制御したり、演算処理を行ったりし、用途に応じた種々の処理を行う。本実施例に係る情報処理装置は、種々の用途に適用することができ、例えば、車両用の電子制御ユニット(Electronic Control Unit)、携帯電話、電卓等の種々の電子機器に適用することができる。
プロセッサ10は、割込検知手段11を備える。割込検知手段11は、プロセッサ内部又は外部からの割込発生要因により発生した割込処理を検知する。
プロセッサ10は、プロセッサ10が実行する各処理の優先度を管理する優先度監視手段12を備える。割込検知手段11により割込処理の発生が検知されたら、優先度監視手段12は、現在実行中の処理と、割込検知手段11により検知された割込処理との優先度を比較し、優先順位の高い処理をプロセッサ10が優先的に処理実行するように設定がなされている。なお、処理の優先度は、実行レベルと呼んでもよく、実行レベルの高い処理の方が、優先順位は高いことになる。よって、優先度監視手段は、実行レベル監視手段と呼んでもよい。
なお、優先度監視手段12は、図1に示すように、プロセッサ10内で、割込検知手段11の一部として組み込まれて構成されてもよい。
メモリ50は、プロセッサ10に命令を与えて動作させるプログラム、計算対象となるデータ、プロセッサ10の計算結果等を記憶する記憶手段である。本実施例に係る情報処理装置のメモリ50は、共有資源20と、割込処理実行状態管理領域30と、共有資源管理領域40とを含む。
共有資源20は、プロセッサ10に実行させるプログラムを記憶した記憶手段であり、OS(オペレーティングシステム)の管理下にある通常のタスク処理の他、種々の割込処理のプログラムが記憶されている。
共有資源20は、複数の処理に共有で使用される資源であるため、1つの処理に排他的に占有されている場合には、他の処理は使用することができなくなる。本実施例に係る情報処理装置においては、メモリ50の一部の領域が共有資源20として利用されており、共有資源20は、割込処理1の使用スタック領域21と割込処理2の使用スタック領域22とを含んでいる。割込処理は、OSの処理よりも優先する処理であるので、その処理を行う場合には、排他的制御を行い、共有資源20を占有する。詳細は後述するが、本実施例に係る情報処理装置においては、そのような割込処理を、適切に実行する機能を有する。
複数の割込処理の間には、優先度が設定されていてよく、例えば、割込処理2が、割込処理1より高優先順位に設定されていてもよい。本実施例に係る情報処理装置においては、低優先度の割込処理が排他的制御をかけて処理実行中に、それよりも高優先度の割込処理が発生したときに、排他的制御を一旦解いて高優先度の割込処理を先に実行させる処理を行うが、詳細は後述する。
共有資源20内には、各処理に応じて使用スタック領域21、22、23が割り当てられているが、各使用スタック領域21、22、23同士は、共有資源20内の不連続なアドレス空間に配置されてよい。この点、詳細は後述する。また、各使用スタック領域21、22、23には、基底番地が設定されている。図1においては、割込処理1の使用スタック領域21の基底番地はX番地、割込処理2の使用スタック領域22の基底番地はY番地及びタスク処理の使用スタック領域23の基底番地はZ番地に設定されている。これにより、各処理の使用タスク領域21、22、23が定められる。
なお、共有資源20は、図1には、1つの共有資源20が示されているが、複数備えられていてもよい。
割込処理実行状態管理領域30は、割込処理の実行状態を管理する記憶領域であり、各割込処理に応じて、管理情報を記憶する記憶領域が定められてよい。図1においては、割込処理1管理情報記憶領域31、割込処理2管理情報記憶領域32、・・・第nの割込処理管理情報記憶領域が示されている。各割込処理の管理情報は、割込処理の実行状態に関する種々の項目の情報を記憶していてよい。例えば、図1においては、割込処理2管理情報記憶領域32が、実行状態記憶領域32a、スタック基底番地記憶領域32b、使用バンク番号記憶領域32c及び優先順位記憶領域32dを有しており、これらの情報を記憶している。これらの項目別の記憶領域32a〜32dは、スペースの都合上図示しないが、割込処理1管理情報記憶領域31も含む第nの割込処理管理情報記憶領域が、共通の項目について各々の記憶領域を備えていてよい。
実行状態記憶領域32aは、割込処理の実行状態を示す記憶領域であり、例えば、該当する割込処理が実行中、中断中又は休止中であるか否かを示すようにしてもよい。
スタック基底番地記憶領域32bは、該当する割込処理が使用するスタック領域の基底番地を示した情報を記憶する領域である。割込処理2の場合、Y番地が記憶される。
使用バンク番号記憶領域32cは、該当する割込処理が使用するレジスタバンクの番号の情報を記憶する領域である。各割込処理は、バンク切り替えによりメモリやレジスタが切り替えられるように設定されていてよく、使用バンク番号記憶領域32cは、該当する割込処理に対応する使用バンク番号を記憶する。
優先順位記憶領域32dは、割込処理の優先順位の情報を記憶する記憶領域である。優先順位記憶領域32dは、該当する割込処理の優先順位を、例えば1〜256というように数字で記憶しておく領域である。これにより、割込処理の優先順位を管理することができる。
共有資源管理領域40は、共有資源20の管理情報を記憶する記憶領域である。共有資源管理領域40は、共有資源20が複数備えられている場合には、各々の共有資源について、共有資源管理情報記憶領域を有する。図1においては、共有資源1管理情報記憶領域41、共有資源2管理情報記憶領域42・・・共有資源n管理情報記憶領域が示されている。
各共有資源管理情報記憶領域は、取得状態の情報と、取得処理IDの情報を記憶する領域を備える。図1においては、共有資源2管理情報記憶領域42が、取得状態記憶領域42aと、取得処理ID記憶領域42bを備えた状態が示されている。
取得状態記憶領域42aは、該当する共有資源の占有状態を示す領域であり、例えば、占有状態であれば1、解放状態であれば0というように占有状態を示してよい。取得処理ID記憶領域42bは、割込処理、タスク処理を示す処理単位の一意なIDを示す情報を記憶する領域である。これにより、該当する共有資源を、どの処理が取得しているかを知ることができる。
次に、図2を用いて、本実施例に係る情報処理装置の処理内容の概要を、従来の処理内容との比較において説明する。図2は、本実施例に係る情報処理装置と従来の情報処理装置の処理内容の概要比較図である。図2(a)は、本実施例に係る情報処理装置の処理内容の概要を示した図であり、図2(b)は、従来の処理内容の概要を示した図である。
図2(b)において、共有資源と低優先割込処理と高優先割込処理とが示されている。横軸は、時間軸である。まず、時刻t1で低優先の割込処理が発生したときには、低優先の割込処理は、時刻t2で共有資源20の獲得に成功する。このとき、排他的制御機構により、共有資源20は、低優先割込処理に排他的に占有された状態である。低優先割込処理が共有資源20を排他的に占有している状態で、時刻t3で低優先割込処理よりも優先順位が高い高優先割込処理による割り込みが発生したときには、プロセッサ10の実行権は高優先割込処理が保持するが、共有資源20は低優先割込処理が排他的に占有しているため、高優先割込処理は共有資源20を獲得することができない。よって、時刻t4に示すように、高優先割込処理は、共有資源20の獲得に失敗する。その後、高優先処理は、プロセッサ10の実行権を確保した状態で、共有資源20の解放を待ち続けるため、処理を継続することができない。
一方、図2(a)は、本実施例に係る情報処理装置の処理内容の概要を示した図である。共有資源、低優先割込処理及び高優先割込処理の処理内容が、横軸を時間軸として配列されている点は、図2(b)と同様である。
図2(a)において、時刻t1で低優先割込処理が発生し、時刻t2で共有資源20を獲得したとする。このとき、低優先割込処理は、スピンロックによる排他的制御機構により、排他的に共有資源20を占有する。そして、時刻t3で実行中の低優先割込処理よりも優先度の高い高優先割込処理が発生したときには、プロセッサ10の実行権は、高優先割込処理が保持する。そして、高優先割込処理は、処理の実行に必要な共有資源20を獲得しようとするが、共有背源20は、低優先割込処理に排他的に占有されているので、獲得できず、時刻t4の箇所に示すように、共有資源20の獲得に失敗する。ここまでは、図2(b)に示した従来の処理内容と同様である。
次に、高優先割込処理は、時刻t5で、切り替え処理を実行する。この切り替え処理は、高優先割込処理の処理を一時中断し、プロセッサ10の実行権を低優先割込処理に渡す切り替えを行う処理である。これにより、低優先割込処理は、確保している共有資源20を用いて、低優先処理を実行することが可能な状態となるが、ここで低優先処理を最後まで先に実行するのではなく、即座に又は区切りの良い短時間だけ低優先処理を行い、時刻t6に示すように、共有資源20を解放する処理を行う。そして、時刻t7で、プロセッサ10の実行権を高優先割込処理に復帰させる復帰処理を行う。
高優先割込処理は、プロセッサ10の実行権を取得したので、中断した処理を再開させるが、今度は、共有資源20が解放されているので、時刻t8に示すように、共有資源20を獲得することができる。そして、共有資源20を排他的に占有して高優先処理を最後まで実行することができ、高優先処理が終了したら、時刻t9に示すように、共有資源20を解放する。そして、時刻t10に示すように、プロセッサ10の実行権を低優先割込処理に渡すことにより、低優先割込処理は、中断していた自己の処理を再開することになる。
このように、本実施例に係る情報処理装置によれば、高優先割込処理が共有資源20の獲得に失敗した場合には、一旦プロセッサの実行権を、共有資源20を占有している低優先割込に渡す切り替え処理を行う。そして、CPU実行権を取得した低優先割込処理は速やかに共有資源20の解放し、高優先割込処理にCPU実行権を復帰させる復帰処理を実行させることにより、高優先割込処理を低優先割込処理より先に処理を行わせることが可能となる。
次に、図3を用いて、本実施例に係る情報処理装置の処理内容を実現するための共有資源20のスタック領域の配置の一例について説明する。図3は、本実施例に係る情報処理装置の共有資源20のスタック領域の配置の一例を示した図である。
図3(a)は、タスク処理、割込処理1及び割込処理2の処理の流れを模式的に示した図の一例である。各処理の実行レベルは、割込処理2、割込処理1、タスク処理の順で実行レベルが高く、この順位で優先的に処理が実行されるように優先度監視手段12は設定されている。また、図3(a)において、縦軸は時間の経過又は共有資源20のスタック領域を模式的に示している。
図3(a)において、プロセッサ10によりタスク処理が実行されているときに、A点で割込検知手段11により割込処理1の発生が検知されたら、優先度監視手段12によりタスク処理と割込処理1の優先度が比較され、割込処理1の優先度が高いと判定されたら、割込処理1の処理開始点のB点に処理が遷移し、割込処理1の処理を開始する。このとき、割込処理1は、共有資源20を確保するが、スピンロック機構により、排他的に共有資源20を占有する。
割込処理1をプロセッサ10が実行中に、C点で割込処理2の発生が割込検知手段10により検知され、優先度監視手段12により割込処理2の優先順位が割込処理1より高いと判定されたときには、割込処理2の処理開始点のD点に処理が遷移し、プロセッサ10は割込処理2を実行する。ここで、共有資源20は、割込処理1に排他制御がかけられて占有されているので、割込処理2は、共有資源の確保に失敗する。共有資源20の確保に失敗した割込処理2は、プロセッサ10の実行権を割込処理1に戻し、制御を割込処理1に戻す。従って、処理は、割込処理2のE点から、割込処理1のC点に遷移する。割込処理1は、プロセッサ10の実行権を取得したので、確保した共有資源20を用いて、割込処理1を実行するが、割込処理2の方が割込処理1よりも優先度が高く、共有資源20の解放を促されているので、最後まで割込処理1を実行するのではなく、なるべく短時間で自己の処理を切り上げ、共有資源20を解放する資源解放の処理を行う。資源解放処理が終わったら、割込処理1は、プロセッサ10の実行権を割込処理2に戻す。よって、処理は、割込処理1のF点から、割込処理2のE点に戻って遷移する。
割込処理2は、中断していた処理をE点から再開し、解放された共有資源20を確保し、割込処理2の処理を終了したら、共有資源20を解放する。よって、処理は、割込処理2の基底番地のY番地から、割込処理1のF点に処理が遷移する。割込処理1は、中断していた処理をF点から再開し、解放された共有資源20を用いて、最後まで処理を実行する。割込処理1が終了したら、共有資源20を解放するとともに、基底番地であるX番地から、タスク処理のA点に処理が遷移し、中断していたタスク処理を再開する。そして、基底番地Zまでタスク処理が終了したら、タスク処理、割込処理1及び割込処理2の総ての処理が優先度順位通りに終了する。
本実施例に係る情報処理装置では、このような処理の遷移により、共有資源20に排他的制御がかけられている状況であっても、高優先順位の処理から優先度に従って処理を行うことができるが、このような処理を実行するために、例えば、図3(b)に示すようなスタック領域を用いてもよい。
図3(b)は、本実施例に係る情報処理装置の共有資源20内のスタック領域の配置の一例を示した図である。図3(b)において、共有資源20内のタスク処理、割込処理1及び割込処理2は、不連続なスタック領域の配置がなされている。このように、本実施例に係る情報処理装置は、各処理毎に不連続なスタック領域を用いるようにしてよい。これにより、各処理間で処理遷移が発生しても、データの上書きを防止することができる。
図3(b)において、共有資源20内のスタック領域は、一番下にタスク処理の使用スタック領域23が割り当てされ、その上に間隔を空けて割込処理2の使用スタック領域22が割り当てられ、その上に更に間隔を空けて割込処理1の使用スタック領域21が割り当てられている。各処理へのスタックポインタを含むレジスタ切り替えは、バンク機構を使用して実現するものとする。初期化処理の設定として、例えば、割込処理1のバンクは1に設定し、スタック基底はX番地とし、割込処理2のバンクは2に設定し、スタック基底はY番地とし、タスク処理のバンクは15に設定し、スタック基底はZ番地とした場合を考える。なお、図3(b)中のA〜Zの記号は、図3(a)と一致する。
まず、タスク処理を実行中に、例えばA点で割込処理1が発生した場合には、バンクレジスタにより現在動作中のタスク処理のバンク番号(15)を取得し、割込処理1のバンク(1)に切り替え、スタック基底X番地より復帰情報を保存する。この動作により、タスク処理のA点から、割込処理1のB点に処理が遷移する。
割込処理1を開始し、割込処理1の実行中に、例えばC点で割込処理2が発生したときには、バンクレジスタにより現在動作中の割込処理1のバンク番号(1)を取得し、割込処理2のバンク(2)に切り替えるとともに、スタック基底Y番地より復帰情報を保存する。処理は、割込処理1のC点から、割込処理2のD点に遷移する。
割込処理2は、D点から処理が開始されるが、資源確保に失敗するため、E点において、低優先度の割込処理1にプロセッサ10の実行権を移す処理の遷移が実行される。よって、割込処理2の処理が一時中断し、処理は、E点から割込処理1のC点に遷移する。このときの処理遷移は、割込処理2の処理開始時にスタック領域に保存した割込処理1中断情報に従い実行する。また、このとき、バンクレジスタにより現在動作中の割込処理2のバンク番号(2)を取得し、割込処理1のバンク(1)に切り替えるとともに、スタック基底X番地より復帰情報を保存する。
割込処理1では、処理が再開されて実行されるが、ここで要求されているのは共有資源20の解放を行うための処理であるので、短時間で割込処理1を終了するとともに、共有資源20を解放する資源解放処理を実行する。ここで、プロセッサ10の処理は、割込処理1のF点から、再び割込処理2のE点に戻ることになる。ここで、割込処理1から割込処理2に復帰する復帰処理は、バンクレジスタにより現在動作中の割込処理1のバンク番号(1)を取得し、割込処理2のバンク(2)に切り替えるとともに、スタック基底Y番地より復帰情報を保存する。
割込処理2では、中断されていた処理が再開される。E点から処理が再開され、共有資源20を確保し、割込処理2の処理を最後まで実行する。割込処理2の処理が終了したら、割込処理2のスタック領域に保存した復帰情報を元に戻し、スタック領域に保存したバンク番号をバンクレジスタへ設定して、割込処理1にプロセッサ10の実行権を戻す。また、共有資源20も解放する。処理状態は、割込処理2のY番地から割込処理1のF点に戻ることになる。
割込処理1においては、F点から処理が再開される。共有資源20を再び占有し、割込処理1を実行する。割込処理1の実行終了後には、割込処理1のスタック領域に保存した復帰情報を戻し、スタック領域に保存したバンク番号をバンクレジスタへ設定して、タスク処理に実行権を戻す。また、共有資源20も解放する。処理は、割込処理1のX番地から、タスク処理のA点に遷移する。
タスク処理は、A点から再開され、Z番地に到達することにより、タスク処理、割込処理1及び割込処理2は総て優先順位に従って実行される。
このように、不連続なアドレス空間に割込処理1の使用スタック領域21、割込処理2の使用スタック領域22及びタスク処理の使用スタック領域23を配置することにより、各処理を遷移させることが可能となり、スタック領域を破壊することなく自由な移動が可能となる。
次に、対比のため、図4及び図5を用いて、従来の情報処理装置に用いられるスタック領域と、その処理内容との関係について説明する。
図4は、従来のリアルタイムOSでの多重割込とこれに用いられるスタック領域について示した図である。図4(a)は、割込処理間でも優先順位が設定できる多重割込の処理を示した図である。図4(a)に示すように、タスク処理の実行中に、割込処理1が発生した場合には(A点)、タスク処理を中断し、割込処理1を実行する(B点)。また、割込処理1の実行中に、割込処理1よりも実行レベルの高い割込処理2が発生した場合には(C点)、割込処理1を中断して、割込処理2を実行する(D点)。割込処理2が終了したら(E点)、中断していた割込処理1を再開し(C点)、割込処理1が終了したら(F点)、タスク処理に戻り(A点)、残りのタスク処理を実行するようにする。
図4(b)は、従来の情報処理装置のスタック領域を示した図である。図4(b)に示すように、従来のリアルタイムOSにおける割込処理の戻り先情報は、タスク処理で使用するスタック領域を連続して使用することにより、共有資源120を効率的に利用している。割込処理1がスピンロック機構を有しておらず、図4(a)に示したような実行レベル順の処理を実行でき、優先順位の高い割込処理2から順に割込処理1、タスク処理と処理してゆく場合には、このような連続配置でも問題無い。
図5は、低優先の割込処理が、排他的制御により共有資源20を確保するスピンロック機構を備えている場合の各処理とスタック領域を示した図である。
図5(a)は、従来の情報処理装置の各処理間の処理内容と遷移関係を示した図である。図5(a)に示すように、タスク処理実行中に割込処理1が発生した場合には(A点)、タスク処理を中断し、割込処理1を開始する(B点)。割込処理1は、共有資源20の確保に成功し、割込処理1を実行するが、割込処理1よりも優先度の高い割込処理2が発生した場合には(C点)、割込処理1を中断して、割込処理2を開始する(D点)。しかしながら、割込処理1は、スピンロックによる排他制御により共有資源120aを占有してしまうので、割込処理2は共有資源確保に失敗し、以後の処理が実行できなくなってしまう(E点)。
このような状況下で、仮に低優先の割込処理1に処理を遷移することができれば、図3で説明したように、処理を再開できる可能性があるが、スタック領域の構成により、そのような処理が実行できない場合がある。
図5(b)は、従来の情報処理装置におけるスタック領域の例を示した図である。図5(b)は、タスク処理、割込処理1及び割込処理2の使用スタック領域が、図4(b)と同様に連続配置されたアドレス空間を示している。このようなスタック領域の配置で、割込処理2から割込処理1に処理を切り替える処理を行うと、割込処理1が割込処理2の使用スタック領域を上書きして破壊するおそれがあり、実際上、このようなスタック配置をとることができない。
よって、図3(b)において説明したように、本実施例に係る情報処理装置においては、スタック領域を各処理間で不連続とし、間隔を置いた余裕のある配置としている。これにより、各処理間でスタック領域を破壊するおそれのない構成とすることができる。
次に、図6及び図1を用いて、本実施例に係る情報処理装置の処理内容を、更に詳細に説明する。図6は、本実施例に係る情報処理装置の各処理と処理間の遷移関係を示した図である。
図6において、プロセッサ10がタスク処理の実行中に、A点において割込処理1の発生が割込検知手段11により検知され、優先度監視手段12によりタスク処理と割込処理1の優先度を比較し、割込処理1の優先度の方が高いと判断されると、B点に処理が遷移し、割込処理1が開始される。
割込処理1は、スピンロック処理を行って、解放状態にある共有資源20を排他的に占有し、資源確保に成功する。割込処理1は、確保した共有資源20を用いて、処理を実行するが、C点において、割込検知手段11により新たな割込発生が検知された場合には、優先度監視手段12により、発生した割込処理と現在実行中の割込処理1との優先度が比較される。新たに発生した割込処理2の方が、割込処理1よりも実行レベルが高いと判定されたときには、プロセッサ10は割込処理1を中断し、割込処理2を開始する。このとき、処理はC点からD点に遷移する。プロセッサ10は、割込処理2を実行し、スピンロック処理により共有資源20を排他的に占有しようとする。しかし、共有資源20は、割込処理1によりスピンロックが掛かった状態であるので、割込処理2は共有資源20の確保に失敗する。
ここで、割込処理2は、共有資源20の確保を待ち続けると、そのままデッドロック状態となってしまうので、割込処理2を一時中断し、プロセッサ10の実行権を割込処理2に戻す切り替え処理を行う。切り替え処理は、割込処理2が共有資源20の確保に失敗したら、まず共有資源管理領域40において、共有資源20の獲得に失敗した対象の共有資源20がどの共有資源20であるのかを特定し、特定された共有資源20をどの処理が占有しているのかを特定する。例えば、図1において共有資源2管理情報記憶領域42に記憶されている共有資源2が対象の共有資源20である場合には、取得状態記憶領域42aが取得状態(例えば、1が立つ)となり、取得処理ID記憶領域32bを参照することにより、どの処理が占有しているのかを知ることができる。
次いで、バンクレジスタより現在動作中の割込処理2のバンク番号(例えば、(2))を取得し、割込処理1のバンク番号(例えば、(1))に切り替え、スタック基底(例えば、X番地)より復帰情報を保存する。図1においては、割込処理状態管理領域30の割込処理2管理情報記憶領域32の実行状態記憶領域32aが、実行中から中断の状態に書き換えられることになる。そして、図6に戻ると、プロセッサ10による処理は、割込処理2のE点から割込処理1のC点に切り替えられ、割込処理2は、C点から処理を再開する。
割込処理1は、処理を再開するが、割込処理1を最後まで行うのではなく、割込処理1の処理を中断のタイミングに適する最小限の量に留め、スピンロック処理により排他的に占有している共有資源20の解放処理を行う。このとき、共有資源管理領域40の該当する共有資源20(例えば、共有資源2)の取得状態記憶領域42aは、取得状態から解放状態に書き換えられる。次いで、割込処理1から、割込処理2にプロセッサ10の実行権を復帰させる復帰処理を行う。バンク機構を用いて、現在動作中の割込処理1のバンク番号(例えば、(1))から、割込処理2のバンク番号(例えば、(2))に切り替えられ、スタック基底(例えば、Y番地)より復帰情報を保存する。プロセッサ10の処理は、割込処理1のF点から割込処理2のE点に遷移する。
プロセッサ10は、F点から割込処理2を再開する。このとき、割込処理実行状態管理領域30の割込処理2管理情報記憶領域32の実行状態記憶領域32aは、中断状態から、実行状態に書き換えられる。次いで、割込処理2は、スピンロック処理を行い、共有資源20の確保を行うが、共有資源20は解放されているので、資源確保に成功する。このとき、共有資源管理領域40の対象の共有資源(例えば、共有資源2)の共有資源2管理情報記憶領域42の取得状態記憶領域42aは、解放状態から取得状態に書き換えられ、所得処理ID記憶領域42bには、割込処理2の処理IDが書き込まれる。そして、プロセッサ10は、確保した共有資源20を利用して割込処理2の処理を実行し、処理が終了したら、資源解放を行うとともに、割込処理2スタック領域22に保存した復帰情報を戻し、割込処理2スタック領域22に保存したバンク番号をバンクレジスタに設定して割込処理1にプロセッサ10の実行権を戻す。プロセッサ10による処理は、割込処理2のG点から、割込処理1のF点に移動する。
プロセッサ10は、F点から割込処理1を再開し、最後まで割込処理1を実行する。割込処理1が終了したら、割込処理1スタック領域21に保存した復帰情報を戻し、割込処理1スタック領域21に保存したバンク番号を、バンクレジスタに設定し、タスク処理に実行権を戻す。プロセッサ10による処理は、割込処理1のH点から、タスク処理のA点に移動する。
プロセッサ10は、タスク処理をA点から再開し、最後まで実行する。I点に到達したときに、タスク処理、割込処理1及び割込処理2は、総て優先度順に処理されたことになる。
このように、本実施例に係る情報処理装置によれば、低優先度の割込処理がスピンロック処理により共有資源20を排他的に占有している場合であっても、高優先度の割込処理を中断して低優先度の割込処理にCPU実行権を移す切り替え処理と、低優先度の割込処理が共有資源20を解放して高優先度の割込処理を復帰させる復帰処理を実行することにより、プロセッサ10に高優先度から順に処理を行わせることができる。
次に、図7乃至図9を用いて、スピンロック処理、切り替え処理及び復帰処理の各処理についての処理フローを説明する。
図7は、スピンロック処理の処理フロー図である。
ステップ100では、処理実行中に割込処理が発生し、発生した割込処理の方が実行中の処理よりも優先度が高い場合には、発生した割込処理が共有資源20をスピンロック処理により排他的占有を試みる。割込処理の発生は、割込処理検知手段11により検知されてよく、現在実行中の実行中処理と新たに発生した割込処理の優先度の比較は、優先度監視手段12により行われてよい。また、実行中処理は、タスク処理の他、自身よりも高優先度の割込処理が存在する低優先度の割込処理であってもよい。
ステップ110では、割込処理が共有資源20の獲得に成功したか否かの判定がなされる。共有資源管理領域40の、獲得しようとする共有資源n管理情報(例えば、共有資源2管理情報)の取得状態記憶領域42aを参照し、取得状態であるか解放状態であるかを判断する。取得状態であるか解放状態であるかは、例えば、取得状態であれば1が書き込まれ、解放状態であれば0が書き込まれているというように表現されてよい。ステップ110において、発生した割込処理が共有資源20を獲得できる状態(解放状態)である場合にはステップ120に進み、獲得できない状態(取得状態)の場合には、ステップ140に進む。
ステップ120では、共有資源管理領域40に取得処理情報の書き込みがなされる。取得処理情報の書き込みは、該当する共有資源の共有資源管理情報記憶領域(例えば、共有資源2管理情報記憶領域42)の取得状態記憶領域42aが取得状態に書き換えられ、取得処理ID記憶領域42bに発生した割込処理のIDが書き込まれて情報が記憶されてよい。
ステップ120で共有資源管理領域40に取得処理情報の書き込みが行われた場合には、ステップ130に進み、正常終了して処理フローを終了する。発生した割込処理は、共有資源20の獲得に成功したので、共有資源20を用いて、処理を実行することができる。
一方、ステップ110に戻り、共有資源20の獲得に失敗した場合には、ステップ140に進み、エラーを返して異常終了し、処理フローを終了する。
このように、スピンロック処理においては、共有資源20の獲得が試みられ、獲得できた場合には、そのまま共有資源20を用いて処理を実行し、獲得できなかった場合には、エラーにより異常終了する。これにより、割込処理が共有資源20の獲得に失敗したことを認識することができる。スピンロック処理が正常終了した場合には、そのまま通常の処理を継続して処理を終了するが、異常終了した場合には、次に切り替え処理を実行する。
図8は、切り替え処理の処理フローを示した図である。切り替え処理は、図7で示したスピンロック処理の処理フローにおいて、異常終了した場合に継続して実行される。従って、図8の切り替え処理の処理フローは、図7のスピンロック処理の異常終了した処理フローと連続している。
ステップ200では、復帰処理情報の保存が行われる。発生した割込処理は、図7の処理フローにおいて共有資源20の獲得に失敗したので、割込処理を中断させてプロセッサ10の実行権を手放す切り替え処理に入るが、切り替え処理を終えた後、復帰処理でプロセッサ10の実行権を取り戻して割込処理を再開するので、その際に中断した段階での処理状態に戻れるように、戻り情報をスタック領域に保存しておく。
ステップ210では、共有資源管理領域40に記憶されている情報を読み出し、共有資源20を現在占有している処理がどの処理であるかを特定する。共有資源20の占有主体の特定は、取得処理ID記憶領域42bに記憶されている取得処理IDを読み出すことにより、行うことができる。
ステップ220では、共有資源20を取得している取得処理が、割込処理であるか否かが判定される。この判定は、プロセッサ10が行ってよい。ステップ220において、共有資源20を取得している取得処理が割込処理であった場合には、ステップ230に進み、共有資源20を取得している取得処理がタスク処理であった場合には、ステップ240に進む。
ステップ230では、プロセッサ10が割込処理実行状態管理領域30を参照し、対象となる共有資源20の取得処理情報を特定し、切り替え処理のために必要な使用バンク番号等の情報を取得する。
一方、ステップ240では、OS内タスク管理テーブルより中断タスク情報を取り出し、OS管理下で通常のタスク処理を実行する。この場合には、OS管理下の通常の処理を行うので、本実施例に係る情報処理装置で説明した一連の処理を実行する必要はなく、通常のタスク処理を実行するようにしてよい。
ステップ250では、割込処理の情報を元に戻し、レジスタ及びバンクを復帰させる処理を行う。これにより、一旦、共有資源20を確保している低優先度の処理に実行権を渡しても、次の復帰処理で高優先度の割込処理に即座に復帰することが可能となる。
ステップ260では、切り替え処理が実行され、プロセッサ10の実行権の移動が行われる。割込処理は、自己の処理を中断させ、共有資源20を取得している処理に、プロセッサ10の実行権を渡す処理を行う。その際、レジスタ及びバンクに切り替え等が実行されてよい。また、割込処理実行状態管理領域30の実行状態記憶領域32aは、中断状態に書き換えられる。
以上の処理フローにより、切り替え処理が実行されるが、その後、プロセッサ10の実行権を取得した低優先度の処理は、自己の処理を再開させる。そして、共有資源20を解放するのに適するタイミングで、速やかに共有資源20を解放させる処理を行う。共有資源20の解放処理の際、共有資源管理領域40の取得状態記憶領域42aは、解放状態に書き換えられ、取得処理ID記憶領域42bの取得処理IDは消去される。
図9は、復帰処理の処理フローを示した図である。復帰処理フローは、低優先度の処理において、共有資源20を解放した後に行われる。
ステップ300では、共有資源20を解放した低優先度の処理から、プロセッサ10の実行権が高優先度の割込処理に移動するとともに、割込処理実行状態管理領域30の高優先度の割込処理の実行状態記憶領域32aが、中断状態から実行状態に書き換えられる。
ステップ310では、復帰情報より、高優先度の割込処理のレジスタ及びバンクを復帰させる。
ステップ320では、高優先度の割込処理の処理が実行される。このとき、スピンロック処理により共有資源20を排他的に占有し、共有資源20を利用して処理を実行するようにしてよい。
以上で、復帰処理の処理フローを終了し、その後は通常の処理を実行する。図2、図3及び図6で説明したように、高優先度の割込処理を最後まで実行し、その後低優先度の割込処理を実行し、最後にタスク処理が実行され、総ての処理が、優先度順位に従って実行される。
なお、図7〜図9の処理フローにおいて、図9の復帰処理実行中に、更に高優先度の割込処理が発生すれば、当該高優先度の割込処理において、更に図7〜図9の処理フローが実行されることになる。本実施例においては、理解の容易のため、最も簡素な例を挙げて説明しているが、優先度が何段階にも分かれている場合には、それらの優先度の関係同士で、各々本実施例に係る情報処理装置の処理内容を適用することができる。
以上、本発明の好ましい実施例について詳説したが、本発明は、上述した実施例に制限されることはなく、本発明の範囲を逸脱することなく、上述した実施例に種々の変形及び置換を加えることができる。
本発明を適用した実施例に係る情報処理装置の全体構成図である。 本実施例に係る情報処理装置と従来の情報処理装置の処理内容の比較図である。図2(a)は、本実施例に係る情報処理装置の処理内容の概要図である。図2(b)は、従来の処理内容の概要図である。 共有資源20のスタック領域の配置の一例を示した図である。図3(a)は、タスク処理、割込処理1及び割込処理2の処理の流れを模式的に示した図の一例である。図3(b)は、スタック領域の配置の一例を示した図である。 従来の多重割込と用いられるスタック領域について示した図である。図4(a)は、割込処理間で優先順位が設定できる多重割込の処理を示した図である。図4(b)は、従来の情報処理装置のスタック領域を示した図である。 割込処理がスピンロック機構を用いる場合の各処理とスタック領域を示した図である。図5(a)は、従来の情報処理装置の各処理と処理間の遷移関係を示した図である。図5(b)は、従来の情報処理装置におけるスタック領域の例を示した図である。 本実施例に係る情報処理装置の各処理と処理間の遷移関係を示した図である。 スピンロック処理の処理フロー図である。 切り替え処理の処理フローを示した図である。 復帰処理の処理フローを示した図である。
符号の説明
10 プロセッサ
11 割込検知手段
12 優先度監視手段
20 共有資源
21 割込処理1使用スタック領域
22 割込処理2使用スタック領域
23 タスク処理使用スタック領域
30 割込処理実行状態管理領域
31 割込処理1管理情報記憶領域
32 割込処理2管理情報記憶領域
32a 実行状態記憶領域
32b スタック基底番地記憶領域
32c 使用バンク番号記憶領域
32d 優先順位記憶領域
40 共有資源管理領域
41 共有資源1管理情報記憶領域
42 共有資源2管理情報記憶領域
42a 取得状態記憶領域
42b 取得処理ID記憶領域
50 メモリ

Claims (5)

  1. 情報処理を実行する単一のプロセッサと、
    前記情報処理を行うにあたり、参照又は書き込み対象とされる共有資源と、
    割込処理を検知する割込検知手段と、
    前記プロセッサが実行する各処理毎の優先度を管理する優先度監視手段と、を有する情報処理装置であって、
    前記共有資源がスピンロックにより排他制御をかけられて前記プロセッサが処理実行中に、前記割込検知手段が割込処理の発生を検知したときには、前記優先度監視手段は、実行中処理と前記割込処理の優先度を比較し、
    前記割込処理の優先度が前記実行中処理よりも高いときには、前記プロセッサは、前記割込処理を中断し、前記実行中処理が前記共有資源の解放を行った後、前記割込処理を再開することを特徴とする情報処理装置。
  2. 前記割込処理の中断は、前記プロセッサの実行権を、前記割込処理から前記実行中処理に切り替える処理を実行することにより行われることを特徴とする請求項1に記載の情報処理装置。
  3. 前記割込処理の再開は、前記プロセッサの実行権を、前記実行中処理から前記割込処理に復帰させる処理を実行することにより行われることを特徴とする請求項2に記載の情報処理装置。
  4. 前記実行中処理は、前記割込処理よりも優先度の低い低優先度割込処理であることを特徴とする請求項1乃至3のいずれか一項に記載の情報処理装置。
  5. 前記実行中処理及び前記割込処理は、前記共有資源内で不連続な使用スタック領域を割り当てられていることを特徴とする請求項1乃至4のいずれか一項に記載の情報処理装置。
JP2008209886A 2008-08-18 2008-08-18 情報処理装置 Pending JP2010044699A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008209886A JP2010044699A (ja) 2008-08-18 2008-08-18 情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008209886A JP2010044699A (ja) 2008-08-18 2008-08-18 情報処理装置

Publications (1)

Publication Number Publication Date
JP2010044699A true JP2010044699A (ja) 2010-02-25

Family

ID=42016016

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008209886A Pending JP2010044699A (ja) 2008-08-18 2008-08-18 情報処理装置

Country Status (1)

Country Link
JP (1) JP2010044699A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103179264A (zh) * 2012-09-20 2013-06-26 深圳市金立通信设备有限公司 一种手机智能通知系统及方法
JP2020194586A (ja) * 2016-04-08 2020-12-03 大日本印刷株式会社 電子情報記憶媒体、情報処理方法、及び情報処理プログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103179264A (zh) * 2012-09-20 2013-06-26 深圳市金立通信设备有限公司 一种手机智能通知系统及方法
CN103179264B (zh) * 2012-09-20 2015-04-08 深圳市金立通信设备有限公司 一种手机智能通知系统及方法
JP2020194586A (ja) * 2016-04-08 2020-12-03 大日本印刷株式会社 電子情報記憶媒体、情報処理方法、及び情報処理プログラム

Similar Documents

Publication Publication Date Title
JP5054665B2 (ja) スリープ‐起動機構を用いた比較および交換動作
US8607239B2 (en) Lock mechanism to reduce waiting of threads to access a shared resource by selectively granting access to a thread before an enqueued highest priority thread
CN101833475B (zh) 用于执行指令原子块的方法和装置
US7472228B2 (en) Read-copy update method
CN108920267B (zh) 任务处理装置
JP4963018B2 (ja) スケジューリング方法およびスケジューリング装置
JPH02224054A (ja) コンピュータシステム、および多重プロセッサシステム最小単位動作の実行方法
JPH08227364A (ja) 順序付きマルチスレッド実行方法とその実行装置
JP2007219581A (ja) メモリコントローラおよびこれを搭載する電子機器
WO2008101386A1 (fr) Procédé de récupération d'une exception à noyau unique dans un système à plusieurs noyaux
JP2010140290A (ja) マルチプロセッサシステム及びその排他制御の調停方法
US20130036426A1 (en) Information processing device and task switching method
JP2007034900A (ja) 情報処理方法および情報処理装置
JP2017037370A (ja) 計算機、プロセス制御方法およびプロセス制御プログラム
WO2011096163A1 (ja) 情報処理システム、排他制御方法および排他制御用プログラム
JP2011175378A (ja) マルチプロセッサシステム、及びマルチプロセッサシステムの動作方法
JP2009176146A (ja) マルチプロセッサシステム、障害検出方法および障害検出プログラム
JP2010044699A (ja) 情報処理装置
JP6645348B2 (ja) 情報処理装置、情報処理プログラム、及び情報処理方法
US8095784B2 (en) Computer system and method for activating basic program therein
JP2004152185A (ja) 排他制御装置、排他制御方法、プログラム、及び記録媒体
JP2009258984A (ja) 情報処理装置およびロード制御方法
WO2007094460A1 (ja) 並列処理装置及び排他制御方法
JP4006428B2 (ja) 計算機システム
JP4631442B2 (ja) プロセッサ