JP4381951B2 - ネスト状割込みシステムの割込み優先順位制御 - Google Patents

ネスト状割込みシステムの割込み優先順位制御 Download PDF

Info

Publication number
JP4381951B2
JP4381951B2 JP2004295495A JP2004295495A JP4381951B2 JP 4381951 B2 JP4381951 B2 JP 4381951B2 JP 2004295495 A JP2004295495 A JP 2004295495A JP 2004295495 A JP2004295495 A JP 2004295495A JP 4381951 B2 JP4381951 B2 JP 4381951B2
Authority
JP
Japan
Prior art keywords
interrupt
priority
active
interrupt processing
processing program
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.)
Active
Application number
JP2004295495A
Other languages
English (en)
Other versions
JP2005228294A (ja
Inventor
キメルマン ポール
フィールド イアン
ロイ グリゼンスウェート リチャード
Original Assignee
エイアールエム リミテッド
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 エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JP2005228294A publication Critical patent/JP2005228294A/ja
Application granted granted Critical
Publication of JP4381951B2 publication Critical patent/JP4381951B2/ja
Active 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Bus Control (AREA)

Description

本発明はデータ処理システムに関する。更に詳細には、本発明はネスト状になった割込みをサポートするデータ処理システムと、そのようなネスト状割込みシステムにおける割込み優先順位の制御とに関する。
ネスト状の割込みをサポートするデータ処理システムについては知られている。
ネスト状の割込みをサポートするデータ処理システムでは、既にアクティブな割込みがより優先度の高い新しい割込みによって取って代わられることが起こる。その結果、より優先度の高い割込みが後から到着することによって先取り(pre−emption)が繰り返されて、複数レベルにネスト化された割込み構造ができあがる。そのようなシステムは割込み駆動式処理の効率的な管理に適しており、特に優先度の高い割込みに迅速に応対することを可能にする。このような動作の結果、そのようなシステムは、実時間あるいは実時間に近い動作が望ましい埋め込み型の、特に深く埋め込まれた処理環境に適したものとなる。そのようなシステムでは、高い優先度の割込みを処理する動作が開始される前に要する時間がしばしば重要であり、それが動作特性を制約する。
そのようなネスト状のシステムでは、異なる割込みに付随する優先度を動的に変更できることもまた望まれている。そのような変更ができれば、システムが変化する環境に適合できるようになり、その結果、その他の割込みよりも高いあるいは低い優先度レベルを有する特別な割込みが得られる。そのようなことが望まれる例は、特別な割込みが何かの結果の判定に付随する場合である。それは特別に決められた締め切りまでに実現することが必要なものであり、その締め切りが近づくにつれて、問題の割込みを処理すべく催促され、それに伴ってその優先度も引き上げられる。
本発明のデータ処理システムはネスト状の割込みコントローラを備え、ネスト状のアクティブな割込みをサポートする。異なる割込みに付随する優先度レベルはシステムが稼動中にも変更(多分、プログラミング可能)できる。ネスト状になった割込み構造での優先度逆転に伴う問題を回避するために、ネスト状の割込みコントローラは、待機中の割込みが既存のアクティブな割込みに取って代わるべきかどうかを判断するときに、待機中の割込みの優先度を、一緒にネスト構造をなす現在アクティブな複数の割込みのうちで最も高い優先度と比較する。
1つの態様に従えば、本発明はデータ処理のための装置を提供し、前記装置は、
処理論理回路であって、プログラム命令の制御下で処理動作を実行するように動作し、また複数の割込み事象による割込みに対応する前記処理論理回路と、
ネスト状割込みコントローラであって、動作開始したが未終了の複数のアクティブな割込み処理プログラムのネスト的な実行を制御するように動作し、また前記複数の割込み処理プログラムのそれぞれに付随する優先度に応答して、1またはそれ以上のアクティブな割込み処理プログラムを待機中の割込み処理プログラムによって取って代える操作を制御する前記ネスト状割込みコントローラと、を含み、ここで
与えられたアクティブな割込み処理プログラムの優先度は、前記与えられたアクティブな割込み処理プログラムが動作開始したがまだ終了していない間に、変更可能であり、更に
前記ネスト状割込みコントローラは
(i)もし待機中(pending)の割込み処理プログラムの優先度が、アクティブな複数の割込み処理プログラムのうちの最も高い優先度よりも高いようであれば、前記待機中の割込み処理プログラムが前記複数のアクティブな割込み処理プログラムに取って代わることを許可するし、また
(ii)もし待機中の割込み処理プログラムの優先度が、アクティブな複数の割込み処理プログラムのうちの最も高い優先度よりも低いようであれば、前記待機中の割込み処理プログラムが前記複数のアクティブな割込み処理プログラムに取って代わることを許可しないように動作する。
本発明の方法は、割込みがネスト化され、割込みに付随する優先度が変更されるデータ処理装置においては、ネスト状の割込み構造中で優先度の逆転問題が起こりうることを認識している。そのような状況の一例は、現在1つの割込みが処理されていて、その背後で優先度の低い割込みがネスト状になっている状況において、その現在の割込み自体の優先度が低く変更された場合である。この場合には、現在優先度の高い割込みが、低い優先度の割込みの背後に回る事態に陥る。次にもし新しい割込みが現れて、それの優先度が現在実行中の割込みと比較されれば、それが現在実行中の割込みに取って代わる可能性があり、新しく到着した割込みよりも高い優先度を有する、本当ならより高い優先度のものがネスト構造中に深く埋め込まれて、その処理を更に遅らせることになるかもしれない。この問題の別の例は、既に取って代わられて現在実行中の割込みの背後にある割込みがその優先度を高く変更される場合である。後続の割込みは現在実行中の割込みよりも高いが埋め込まれた割込みよりも低い優先度を持つかもしれない。従って、新しく到着した割込みの優先度を現在実行中の割込みの優先度と比較することが不適切な先取りを生じさせ、高い優先度の割込みをネスト構造深く埋め込んで遅らせる可能性がある。
本発明の方法は、ネスト状割込みコントローラが現在実行中のアクティブな1つの割込みだけに基づくのではなく、ネスト状のアクティブな割込みすべての中での最も高い優先度に基づいて優先度の比較を行なった後で、先取りを許可するように配慮することでこの問題を解決する。ネスト状の割込みのスタックは、全体として、ネスト状スタックの中の最高優先度の割込みの優先度レベルを等価的に引き継ぐ。このようにすれば、優先度レベルの変更による優先度の逆転が発生しても、それ以上不適切な先取りは起こらず、高い優先度の割込みはクリアされ、それより前の割込みもクリアされる。
待機中の割込みが、複数のアクティブな割込みのうちで最も高い優先度よりも高いあるいは低い優先度を有するかどうかに基づいて先取りを制御することが明解なことは分かっているが、優先度が等しい場合には、好適な実施の形態は先取りを禁止するように動作する。これは、長時間にわたり突出してきた割込みを処理するほうが、優先度は同じだがつい最近現れた割込みを処理するよりも一般に好ましいからである。
明らかなように、優先度レベルの変更はいろんなやり方で行なうことができ、例えば検出された環境条件に直接応答して行なうことができるが、好適な実施の形態では優先度レベルはプログラミング可能な優先度レベルである。先取りすべきかどうかを決定する対象である待機中の割込み処理プログラムは、新しく検出された割込み事象、あるいはまだ対応する割込み処理プログラムは始動していない以前に検出されていた1またはそれ以上の割込み事象に対して応答することができる。現在実行中の割込みに取って代わるのに十分な優先度を持たないため、まだ始動していない多くの待機中割込みが存在できる。
各々の割込み事象に対して、それらに対応する割込み処理プログラムが待機中かアクティブかを表示するための値と、その割込みに付随する優先度レベルと、を保持するための記憶を備えたネスト状割込みコントローラを提供することが便利である。待機中およびアクティブの値はネスト状の割込みコントローラ自身によって設定でき、優先度レベルはユーザがプログラムできる。
本発明の方法の好適な実施の形態は先取りされた処理に対応する状態データを記憶するためにスタック・データ記憶(stack data storage)を利用する。スタック・データ記憶を使用するそのようなシステムでは、スタック・データ記憶容量を超えないように割込み処理を制御するためにアクティブな割込みに付随する優先度レベルの変更が行なわれる。特に、スタック・メモリ(stack memory)などのスタック・データ記憶にある空きスペースが、予め定められたレベル以下になるか、使い尽くされたときは、優先度レベルが増分される。このようにアクティブな割込みの優先度レベルを強化することによってそれらが先取りされないように、またそれらの実行が継続されるようにスタック・データ記憶が解放される。優先度レベルを増分する予め定められたレベルというのは、真に高優先度の割込みが出現したときに強化されたレベルを有する割込みに取って代わることができるように、実現可能な最高レベルにならないように選ばれる。スタック・データ記憶中の一定の容量は残しておいて、真に最高優先度の割込みが利用できる記憶場所を確保しておく。
そのような優先度レベル制御の別の一例は、現時点でアクティブな割込みと、ローカルCPU内のネスト構造のそれらの順位とを記憶するためにハードウエア・スタックを使用するマルチプロセッサ・システムに見られる。ハードウエア・スタックが満杯になるか、その空きスペースが一定のレベル以下に減少したときに、優先度が増分される。
別の態様から見たとき、本発明はデータを処理する方法を提供する。その方法は、
プログラム命令の制御下で、複数の割込み事象による割込みに対応する処理動作を実行する工程と、
動作開始したが未終了の複数のアクティブな割込み処理プログラムのネスト化された実行を制御する工程であって、前記複数の割込み処理プログラムのそれぞれのものに付随する優先度に基づいて、待機中の割込み事象が1またはそれ以上のアクティブな割込み処理プログラムに取って代わることを制御する前記工程と、
を含み、ここで
与えられたアクティブな割込み処理プログラムの優先度は、前記与えられたアクティブな割込み処理プログラムが動作開始したがまだ終了していない間に変更可能であり、更に
前記制御工程は
(i)もし待機中の割込み処理プログラムの優先度がアクティブな複数の割込み処理プログラムのうちの最も高い優先度よりも高いようであれば、前記待機中の割込み処理プログラムが前記複数のアクティブな割込み処理プログラムに取って代わることを許可するし、また
(ii)もし待機中の割込み処理プログラムの優先度がアクティブな複数の割込み処理プログラムのうちの最も高い優先度よりも低いようであれば、前記待機中の割込み処理プログラムが前記複数のアクティブな割込み処理プログラムに取って代わることを許可しないように動作する。
本発明の上記及びその他の目的、特徴、及び利点は添付図面と関連付けて読むべき以下の例示的な実施の形態についての詳細な説明から明らかであろう。
図1は、データ・メモリ6及び命令メモリ8につながれたプロセッサ・コア4を含むデータ処理システム2を模式的に示す。深く埋め込まれた割込み駆動式のシステムでは、データ・メモリ6及び命令メモリ8はそれぞれRAM及びフラッシュ・メモリの形で別々に設けられるのが普通である。
プロセッサ・コア4はレジスタ・バンク10、乗算器12、シフタ14、及び加算器16を含むが、これらは一緒になって、命令デコーダ18によって生成される制御信号の制御下でデータ処理動作を実行するように動作する処理論理回路を構成する。命令デコーダ18は命令パイプライン20に応答するが、後者は図示の例では3ステージの命令パイプラインであって、現在実行ステージにある命令が命令デコーダ18で復号され、用いられて処理論理回路10、12、14、及び16用の適切な制御信号を生成するようになっている。
プロセッサ・コア4中のロード記憶ユニット22はデータの値をデータ・メモリ6から読み出したり書き込んだりする作業を行なう。そのようなロード記憶ユニット22には必要に応じて書込みバッファ及び読み書きバッファを設けることができる。
プロセッサ・コア4は更に、外部からのリセット信号のほかに、N個の別々の割込み信号に応答するネスト状のベクトル割込みコントローラ24を含む。ネスト状のベクトル割込みコントローラ24はまた、故障(fault)及びアボート(abort)信号などの内部の割込み的信号も受け付ける。このネスト状のベクトル割込みコントローラには、別のマスキング不可能な割込み信号(図示されていない)も供給されよう。ネスト状のベクトル割込みコントローラ24は受信した割込み信号に応答して、以下で更に説明するが、プロセッサ・コア4による割込み処理を制御するための制御信号を生成する。特に、受信した割込み信号は既存のユーザ・プログラム型の処理や既存の割込み処理を、その割込みに付随する優先度レベルの値に依存して、先取りするかあるいは先取りしない。制御テーブル26がネスト状のベクトル割込みコントローラ24内部に設けられて、どの割込みが待機中でどれがアクティブであるかを追跡し、またプログラミング可能な優先度レベル値を記憶するように機能している。
図2はネスト状のベクトル割込みコントローラ24の制御テーブル26を模式的に示す。各々の割込み信号に対して、その割込み信号に対して割込みが待機中であるか、あるいは現在アクティブであるかを示すそれぞれの状態フラグが記憶されるようになっている。待機中の割込みというのは、割込み信号がネスト状のベクトル割込みコントローラ24で検出されたが、まだ起動されていない、すなわち付随する割込み処理プログラムがまだ実行を開始していないものを指す。アクティブな割込みというのは、割込み処理プログラムが実行を開始したものであるが、ただしそれ自身がもっと優先度の高い割込みによって取って代わられたため現時点では実行されていない場合もある。
図示の例では、現時点でアクティブなものは割込みInt0とInt3であることが分かる。これらのうちで現在実行中のものは1つだけで、他方は先取りされている。現在実行中の割込み処理プログラムは、その優先度がより高い場合にのみ、先に駆動されていた割込み処理プログラムに取って代わることができたはずである。割込みInt2は待機中であるがまだ駆動されていない。このことは割込みInt2が現在実行中の割込み処理プログラムより低いかあるいはそれと等しい優先度を有するため、それらの既存のアクティブな割込み処理プログラムに取って代わることができていないことを意味する。
図2は各々の割込みに付随する優先度レベルの値が第1部分28と第2部分29とに分離されていることを示す。明らかなように、これは好ましい特徴であるが、本発明の方法のすべての実施の形態がこの特徴を利用する必要はない。例えば、単純に1つに統合された優先度レベルの値を使用することもできる。これら2つの部分の境界はシステム全体で可変である。2つの部分の分割はプログラミング可能なマスク値によって等価的に実行されよう。第1の部分28は先取りグループ値であり、それはどの割込みが他の割込みに取って代わるかを制御するように機能する。同じ第1部分28を共有する割込みが互いに取って代わることはない。既存のアクティブな割込みよりも高い優先度に対応する第1部分28を有する割込みは、既存のアクティブな割込みが待機状態に入ったときにそれらに取って代わる。逆に、待機中の割込みの第1部分が現在アクティブな割込みの第1部分よりも低いときは、それは先取りを行なわず、その優先度の高いアクティブな割込みがその処理を完了するまで実行を開始しない。
優先度レベルの値の第2部分29は、同じ先取りグループの割込みのうちで、実行の相対的な順序を制御するように機能する。同じ先取りグループから2個以上の割込みが待機中であるときに効果を持つ。この場合、同じ先取りグループからのそれらの割込みを実行する順序は第2部分29で示される最も高い優先度を持つものによって制御される。このように、先取りを制御する第1部分28と先取りグループ内での相対順序を制御する第2部分とに分割する方法は、先取り行動の制御を細かく、複雑にレベル分けして行なうのに有効である。1つの特別な割込みに着目すると、それは状態の保存及び回復の点では先取りに伴う損失を正当化するのに十分高い優先度を持たないかもしれないが、それにも拘わらず、それと同じ先取りグループのうちから他の既存の待機中の割込みに先んじて実行するのに十分な高い優先度を持つかもしれない。
制御テーブル26に記憶された優先度レベルの値はプログラム制御下で動的に変更できる。制御テーブル26は、例えば、適当なソフトウエアで制御された書き込みによって、特別なメモリ場所にメモリ・マッピングされ、書き込まれよう。
図2に示すように、第1部分28及び第2部分29は連続しており、与えられた割込みに関する優先度レベルの値の内部で接している。図示した特別な例では、優先度レベルの値は4ビットの値であり、第1部分28に属する3ビットと、第2部分29に属する1ビットで構成されている。この構成は8レベルの先取りグループを提供し、先取りグループの中では2レベルの相対順序を提供する。完全に一致する優先度レベルの値を有する割込みは、それらの割込み番号の順に処理されるか、あるいはそれらが出現する順に処理されよう。
先に述べたように、第1部分28と第2部分29との分割は、先取りグループ・レベル及び順序レベルを異なる細かさのレベルになるようにプログラムによって設定できる。極端なケースを考えると、ただ1つの先取りグループを設けて、優先度レベルの値の4ビットをすべて割込み相互間の相対的順序の指定のために専用的に使用して、互いに先取りできないようにすることも可能である。
図3はスタック・メモリ30の形のスタック・データ記憶を模式的に示しているが、これはデータ・メモリ6中の1つの領域である。スタック・メモリ30を制御する場合の通常のやり方に従って、スタック・ポインタ値がスタックのトップの位置を示すように維持し、その位置からデータが読み出され、またその位置にデータは書き込まれる。コンテキスト/状態データを保存する必要があるときは、それは予め定められた順序でスタック・メモリ30に書き込まれる。図示した例では、保存された状態データはプロセッサ・ステータス・レジスタ値CPSR、プログラム・カウンタ値PC、リンク・レジスタ値LR、スクラッチ・レジスタ値R12、及び4個の汎用のプロセッサ・レジスタ値R0−R3を含む。割込みがネスト状になっているため、複数レベルのコンテキスト・データを保存する必要があり、従ってまたコンテキストもスタック・メモリ30に保存される。図3の例では、保存された最初の状態データはコンテキスト0に関連する。保存すべきコンテキスト0に関連するこの状態データをトリガーした割込みは次にそれ自身が先取りされて、その結果、部分的に完了した割込み処理プログラムのコンテキスト1に対応する状態データをスタック・メモリ30に保存することが必要になる。このように、割込み相互のネスト深度が増大及び減少するに従って、状態データがスタック・メモリ30に刻まれ、また解放される。R12及びR0−R3のようなレジスタ値を保存する役目のソフトウエアにとってそれは正常な状態である。この保存をハードウエアで行なえば、テイル・チェーン(tail chaining)技術に付随する処理が簡略化される。更に、割込み処理のためのソフトウエアは、特殊な割込み処理用ソフトウエアとは逆の通常のソフトウエアにより近いものにできる。
図4は図2の優先度レベルの値のプログラミング可能性に伴う問題点を模式的に示している。図4はスタック・メモリ32の一部を示しているが、そこでは割込みIntAに対応する現在実行中のアクティブな割込み処理プログラムが実行中で、割込みIntB及びIntCに対応するネスト状の割込みがその背後に存在する。これらの割込みは互いにうまく先取りできるので、1つがネスト階層を上方へ進むと割込みに付随する優先度レベルが単調に増大することが期待できる。現在実行中のアクティブな割込みIntAは最も高い優先度、すなわち優先度レベルの値として2を有する。
図4には、現在アクティブな割込みに付随する優先度レベルの値を変更して、スタック・メモリ32中で不適切な優先度の逆転が発生する2つの可能なケースが示されている。上の例では、割込みIntAはそれの優先度レベルが下げられて、今やそれ自身が取って代わった割込みIntBよりも低い優先度になっている。これは、もし割込みIntAよりも高いが、割込みIntBよりも低い優先度を有する別の割込みが出現すれば、それが不適切なやり方で現在実行中の割込みIntAに取って代わり、割込みIntBの完了を不利に遅らせるという問題を引き起こす原因となる可能性がある。この問題を回避するために、制御テーブル26に記憶した優先度の値を用いてネスト状のベクトル割込みコントローラ24が現在スタック・メモリに保持されているすべての割込みに対応する1つの優先度の値、更に詳細にはそれらの優先度の値のうちで最も高い値を決定する。このようにすれば、上述の上の例では、現在実行中のアクティブな割込み、すなわちIntAが優先度の値5を有するものの、スタックは優先度の値3を有するものとして取り扱われるため、新しく検出される割込みはIntAの実行継続に取って代わることがなく、そのためIntBの実行は、それが3よりも高い優先度を持たない限り遅らされてしまう。このことはIntBに付随する割込み処理が不適切に遅延されないことを保証する。
図4の下側の例は、割込みIntCに付随する優先度の値を、その割込みが既に先取りされて、スタック上のネスト状の割込み中に埋め込まれている状態で、どのように増大させればよいかを示している。本発明の方法に従えば、この埋め込まれた割込みIntCの優先度の変更はそのスタックに付随する優先度レベルの値全体に反映されるため、新たに出現する割込みが割込みIntCに付随するものよりも高い優先度レベルの値を有しない限り、割込みIntCがクリアされるまではそれ以上の先取りが許可されないことになる。
現在アクティブな割込み処理プログラムのスタックに付随する最も高い優先度レベルに等しい優先度レベルを有する待機中の割込みが出現した場合には、それは先取りを行わない。
図4に示す例は不適切な先取りの防止に関連する。現在は待機中でアクティブになるのを抑制されていた割込みが、スタック全体としての優先度レベルの低下の結果として先取りをトリガーすることが適当になるように優先度レベルを変更することも可能である。そのような待機中の割込みは新しく検出された割込みでもよいし、あるいは以前に検出されていたがまだ始動していない割込みでもよい。
上で述べた優先度レベルの値の変更は、スタック・メモリ30によって消費されるメモリ空間の大きさを制御する方法として実行することができる。スタック・メモリ資源が消費されるにつれて、ネスト状のアクティブな割込みに付随する優先度レベルは、スタック・メモリ資源を更に要求するであろう更なる先取りを防止するために増大させることができる。このようにすれば、スタックのオーバーフローを回避できる。特に好適な制御方法によれば、アクティブな割込みに付随する優先度レベルを上昇させることによって、スタック・メモリの使用量をその容量の四分の三に保持できる。スタック・メモリの四分の一を追加の先取り用として確保しておくことによって、最高優先度の割込み処理プログラムがそのスタック・メモリ上の空きスペースを利用して先取りを実行することが可能となる。
優先度レベルの値を増やすこの方法は図5に模式的に示すようなマルチプロセッサ・システムにも採用することができる。このシステムでは各々のプロセッサ82に対してアクティブな割込み80のハードウエア的スタックが用意されている。割込み分配器84は、テーブル88にプログラムされた優先度の階層構造に従って相互の待機関係が決まる割込み信号の配列86に応答する。テーブル88は、各割込みに対する優先度レベルを示すデータ及びそれがどのプロセッサ(単数または複数)82に宛てて発行されるかのデータを記憶する。割込み分配器84は分配バス90を介して、各プロセッサ82に付随する割込みコントローラ92と通信する。割込みコントローラ92はそれぞれの現在の最高優先度のアクティブな割込みを示す信号94を割込み分配器84に送る。この状況で、ハードウエア・スタック80が満杯あるいは満杯に近くなった場合には、スタック中に表示されている割込みの優先度レベルの値を等価的に増大させて、それ以上の先取りが発生するのを防止し、また提供されているハードウエア・スタックのオーバーフローを防止する。この優先度レベルの強化は信号(単数または複数)94によって通知される。
図6はメインの割込み制御の流れを模式的に示す。システムがリセットによって復帰するとリセット処理用ハードウエアが工程100でリセット処理を制御する。リセット処理が終了すると、通常のユーザ・プログラムが始動して、命令実行は工程102に進む。この命令実行の間で、工程104はネスト状のベクトル割込みコントローラ24によって検出されている待機中の割込みが存在するかどうかを検出し、あれば待機中として制御テーブル26に記録し、発生中のすべての既存の割込み処理よりも高い優先度を持つものとして記録する。そのような高い優先度の割込みが待機中でなければ、処理は工程106に進み、そこでプログラム・カウンタの値を調べて、それがメモリ位置の先頭のような予め定められた特別なリターン・アドレスに対応するリターン・アドレスでないかどうかを確認する。もしそのようなリターン・アドレスが検出されなければ、処理は工程102に戻り、次の命令を実行する。あるいは、割込み処理プログラムの終わりに割込み命令からの特別なリターンを配置することもできる。
もし工程104での判断が、それが割込みそれ自身であろうとあるいはユーザの処理であろうと現在処理中のものよりも高い優先度の割込みが待機中であるということであれば、工程108において、以下に詳細に説明するように先取り動作をトリガーする。このとき、2つ以上の待機中の割込みがあって、それらの優先度の値の第1部分28が等しく、またいずれも先取りをトリガーしても構わないほど十分高い優先度を有していれば、それらの優先度の値の第2部分29で大きいほうの割込みを選択する工程110が含まれる。次に工程102は新しく駆動された割込みの第1命令を実行する。
もし工程106での判断がプログラム・カウンタが割込み処理の終了を示す予め定められたアドレスを有しているということであれば、以下で詳細に説明するように、処理が工程104に戻る前に工程112が割込み動作からのリターンを実行する。
図7は、以下で述べるようなテイル・チェーンがサポートされている場合に取られるメインの割込み制御の流れを模式的に示す。明らかなように、本発明の方法の別の実施の形態は以下で、特に図7及び図10に関して述べる、テイル・チェーン技術を提供する必要はない。システムがリセットから復帰すると、リセット処理用ハードウエアが工程34でリセット処理を制御する。リセット処理が終了すると、通常のユーザ・プログラムが始動して、命令実行が工程36に進む。この命令実行の間に、工程38ではネスト状のベクトル割込みコントローラ24によって検出されている待機中の割込みが存在するかどうかを検出し、あれば待機中として制御テーブル26に記録し、発生中のすべての既存の割込み処理よりも高い優先度を持つものとして記録する。そのような高い優先度の割込みが待機中でなければ、処理は工程40に進み、そこでプログラム・カウンタの値を調べて、それがメモリ位置の先頭のような予め定められた特別なリターン・アドレスに対応するリターン・アドレスでないかどうかを確認する。もしそのようなリターン・アドレスが検出されなければ、処理は工程36に戻り、次の命令を実行する。あるいは、割込み処理プログラムの終わりに割込み命令からの特別なリターンを配置することもできる。
もし工程38での判断が、それが割込みそれ自身であろうとあるいはユーザの処理であろうと現在処理中のものよりも高い優先度の割込みが待機中であるということであれば、工程41において、以下に詳細に説明するように先取り動作をトリガーする。この先取り動作の後で、処理は工程36に進んで、その先取りを実行させた割込み処理プログラム中の最初の命令が実行される。
もし工程40での判断が、プログラム・カウンタが割込み処理の終了を示す予め定められたアドレスを有しているというものであれば、工程42が現在スタックにあるアクティブな割込みあるいはユーザ処理よりも高い優先度の値を有する待機中の割込みがないかどうかを確認する。もしそのような待機中の割込みが存在すれば、処理は工程44に進み、その待機中の割込みに対して、後に詳しく説明するように保存操作なしでテイル・チェーン操作が実行される。工程44におけるこのテイル・チェーン操作の後、工程36に戻って、そこで新しく駆動された割込み中の最初の命令が実行される。
もし工程42での判断が、スタック中にありアクティブな処理よりも高い優先度の割込みが待機中でないということであれば、工程46は以下で詳しく説明するように、その先取りされた処理が再開される工程36に処理が戻る前に、割込み処理からのリターンを実行する。
図8は先取りの間に実行される処理を模式的に示す。工程48で先取りが開始されると、命令側及びデータ側のハードウエア制御動作が並列的に始動する。データ側では、工程50において記憶すべき状態データがスタック・メモリ30にプッシュされる。多様なレジスタ値をプッシュするこの操作が完了するまでには複数の処理サイクルを必要とする。データ側操作と平行して、命令側では工程52において、その先取りをトリガーした割込みに付随するプロセッサのベクトル・テーブルから、標的割込み処理プログラムに関する新しいプログラム・カウンタ値を読み取る。次に、工程54はネスト状のベクトル割込み24によって生成される任意の後続の割込み信号の検出を確認して、工程48で始動した初期の先取りをトリガーした割込み事象よりも優先度の高い新しい割込み事象が検出されたことを表示する。もしそのような後続の割込み信号が検出されれば、処理は工程52に戻って、その後続の割込みに付随する新しいプログラム・カウンタ値がベクトル・テーブルから読み取られ、メモリから適切な割込み処理コードの読み出しと命令パイプライン20への送出が開始できるようにされる。もし工程54で後続の割込み信号が検出されなければ、工程56は命令パイプライン20を割込み処理コードで満たす動作を開始する。この割込み処理コードがパイプラインにロードされてしまうと、工程58では次の工程が実行されて、後続の割込み信号が発生していないかが再び確認される。もしそうであれば、工程52に戻ってその後続の割込みに対する処理が行なわれる。明らかなように、図8では後続の割込みの確認がパイプライン充填工程56を囲む工程54及び58で発生するように示されているが、実際には後続の割込み確認はパイプライン充填動作と平行して連続的に実行されよう。
命令側のパイプライン充填とデータ側の状態データ記憶がどちらも完了すると(工程60でシンクロナイザとして示すように)、処理は図示のように工程36に進んで命令が実行される。この並列操作によって処理速度が向上し、パイプライン充填の再起動によって後続の割込みが受け入れ可能となる。
図9は割込み処理の流れからのリターンを模式的に示す。割込みからのリターンが始まると、ネスト状のベクトル割込みコントローラ24は工程62でスタック・メモリ30から状態データを取り出すように機能する。工程64では、リターンを実行しようとしている割込みまたは処理よりも優先度が高い後続の割込みが到着していないか確認が行なわれる。もしそのような高優先度の割込みが検出されれば、工程66でテイル・チェーン動作が始動されて、スタック・メモリ30、スタック・ポインタ、あるいは取り出されたレジスタ上の保存データに対して必要とされる適切な修復が行なわれる。
もし工程64で高優先度の後続の割込みが検出されなければ、工程68では戻された割込みあるいは処理に関する状態データの最後のものの復元が検出され、それが終了すると処理は工程70に移って、スタック・ポインタの修正が行なわれ、工程36で命令実行が再開される前に、リンク・レジスタ及びパイプラインが再ロードされる。
もしシステムが割込み専用システムであれば、待機状態の割込みが存在しない場合の割込みからのリターンを利用して、ハードウエアが低電力消費のスリープ状態への移行をトリガーする。この状態では、処理は中断されて、次の割込み事象が検出されるのを待つ。
図10はテイル・チェーン処理の流れを模式的に示す。この処理の流れは図6に示したものと同じであるが、この例では1つの割込み処理プログラムが完了した後、以前の状態に戻ることなく別の1つが始動するときにテイル・チェーン動作が発生するため、工程50で状態データを保存する必要がない点が異なっている。従って、終了する割込み処理プログラムに付随する状態を保存する必要がない。割込みへ移行するときに状態データを保存するために要する時間が普通は制限要因になっている。命令パイプライン20に実行すべき割込み処理コードを再ロードすることは通常はもっとずっと高速で行なわれる。このように、割込み処理が次々と発生する状況で、テイル・チェーン技術は割込み応答をスピードアップすることができる。
本発明の例示的実施の形態について、ここに図面を参照しながら詳細に説明してきたが、本発明はそれらの正確な実施例に限定されないこと、また当業者であれば特許請求の範囲に定義された本発明の範囲及び精神から外れることなく、各種の変更及び修正を思いつくことを理解すべきである。
ネスト状のベクトル割込みコントローラを含むデータ処理システムの模式図。 ネスト状のベクトル割込みコントローラで使用される制御テーブルの模式図。 複数の状態データの組を含むスタック・メモリの模式図。 ネスト状の割込み中に発生しうる優先度の逆転の状況を示す2例の模式図。 本発明の方法のいずれかを採用するマルチプロセッサ・システムの模式図。 図1のシステムで行なわれる割込み駆動式処理に関するメインの制御フローを模式的に示すフロー図。 図1のシステムで行なわれる割込み駆動式処理に関する別のメインの制御フローを模式的に示すフロー図(遅れて到着する割込みの処理についての説明は含まない)。 先取りのフロー制御を模式的に示すフロー図。 割込みのフロー制御からのリターンを模式的に示すフロー図。 1つの割込みの処理の直後に別の割込みを処理するときの、フロー制御を模式的に示すフロー図。
符号の説明
2 データ処理システム
4 プロセッサ・コア
6 データ・メモリ
8 命令メモリ
10 レジスタ・バンク
12 乗算器
14 シフタ
16 加算器
18 命令デコーダ
20 命令パイプライン
22 ロード記憶ユニット
24 ベクトル割込みコントローラ
26 制御テーブル
28 第1部分
29 第2部分
30 スタック・メモリ
32 スタック・メモリ
80 アクティブな割込みのスタック
82 プロセッサ
84 割込み分配器
86 割込み信号の配列
88 テーブル
90 分配バス
92 割込みコントローラ
94 信号

Claims (20)

  1. 処理論理回路であって、プログラム命令の制御下で処理動作を実行するように動作し、また複数の割込み事象による割込みに対応する前記処理論理回路と、
    ネスト状割込みコントローラであって、動作開始したが未終了の複数のアクティブな割込み処理プログラムのネスト的な実行を制御するように動作し、また前記複数のアクティブな割込み処理プログラムのそれぞれに付随する優先度に応答して、当該複数のアクティブな割込み処理プログラムを待機中の割込み処理プログラムによって取って代える操作を制御する前記ネスト状割込みコントローラと、
    を含むデータ処理のための装置において、
    与えられた前記複数のアクティブな割込み処理プログラムの一つの優先度は、前記与えられた前記複数のアクティブな割込み処理プログラムの一つが動作開始したがまだ終了していない間に変更可能であり、更に、
    前記ネスト状割込みコントローラは、先取順序を保持して、複数のアクティブな割込み処理プログラムを連続して実行し、及び、
    (i)もし待機中(pending)の割込み処理プログラムの優先度が、前記複数のアクティブな割込み処理プログラムのうちの最も高い優先度よりも高いようであれば、前記待機中の割込み処理プログラムが前記複数のアクティブな割込み処理プログラムに取って代わることを許可し、
    (ii)もし待機中の割込み処理プログラムの優先度が前記複数のアクティブな割込み処理プログラムのうちの最も高い優先度よりも低いようであれば、前記待機中の割込み処理プログラムが前記複数のアクティブな割込み処理プログラムに取って代わることを許可しない、
    ようにした、前記データ処理装置。
  2. 請求項1に記載の装置であって、前記ネスト状の割込みコントローラが、前記待機中の割込み処理プログラムに付随する前記優先度が前記複数のアクティブな割込み処理プログラムに付随する最も高い優先度に等しい場合に、前記待機中の割込み処理プログラムが前記複数のアクティブな割込み処理プログラムに取って代わることを防止するように機能する、前記装置。
  3. 請求項1に記載の装置であって、1つの割込み処理プログラムの優先度が前記割込み処理プログラムに付随するプログラミング可能な優先度レベルによって設定される、前記装置。
  4. 請求項1に記載の装置であって、前記待機中の割込み処理プログラムが、
    新しく検出された割込み事象と、
    1またはそれ以上の以前に検出されている割込み事象であって対応する割込み処理プログラムがまだ始動していない割込み事象と、のうちの1つに対応している、前記装置。
  5. 請求項1に記載の装置であって、前記ネスト状の割込みコントローラが、対応する割込処理プログラムに関して、複数の割込み事象のそれぞれ1つに対応する記憶値に応答して、
    待機状態にある、前記対応する割込み処理プログラムと、
    アクティブ状態にある、前記対応する割込み処理プログラムと、
    前記対応する割込み処理プログラムに付随する優先度レベルと、
    を表示する、前記装置。
  6. 請求項1に記載の装置であって、前記複数のアクティブな割込み処理プログラムを待機中の割込み処理プログラムによって取って代える処理、に対応する状態データを記憶するように動作する、スタック・データ記憶を含む、前記装置。
  7. 請求項6に記載の装置であって、前記複数のアクティブな割込み処理プログラムの任意のものに付随する前記最も高い優先度が、前記スタック・データ記憶中の空きスペースが予め定められた空きスペース・レベルよりも低下したときに増分される、前記装置。
  8. 請求項7に記載の装置であって、前記複数のアクティブな割込み処理プログラムに付随する前記最も高い優先度が、可能な最大優先度レベルよりも低いプログラミング可能な優先度レベルに増分される、前記装置。
  9. 請求項8に記載の装置であって、前記予め定められた空きスペース・レベルが、前記プログラミング可能な優先度レベルよりも高い優先度を有する割込み処理プログラムによって取って代わられるときに利用できるように前記スタック・メモリ中に空きスペースを残すように設定される、前記装置。
  10. 請求項7に記載の装置であって、マルチプロセッサ・システム内に複数のプロセッサを含み、前記スタック・データ記憶が前記複数のプロセッサ間での通信用として使用される共用のハードウエア・スタックである、前記装置。
  11. 請求項6に記載の装置であって、前記スタック・データ記憶がスタック・メモリである、前記装置。
  12. データを処理する方法であって、前記方法は、
    プログラム命令の制御下で複数の割込み事象による割込みに対応する処理動作を実行する工程と、
    動作開始したが未終了の複数のアクティブな割込み処理プログラムのネスト化された実行を制御する工程であって、前記複数のアクティブな割込み処理プログラムのそれぞれのものに付随する優先度に基づいて、待機中の割込み処理プログラムが前記複数のアクティブな割込み処理プログラムに取って代わることを制御する前記工程と、
    を含み、ここで
    与えられた複数のアクティブな割込み処理プログラムの一つの優先度は、前記与えられた複数のアクティブな割込み処理プログラムの一つが動作開始したがまだ終了していない間に変更可能であり、更に
    前記制御工程は、先取順序を保持して、複数のアクティブな割込み処理プログラムを連続して実行し、及び、
    (i)もし待機中の割込み処理プログラムの優先度が前記複数のアクティブな割込み処理プログラムのうちの最も高い優先度よりも高いようであれば、前記待機中の割込み処理プログラムが前記複数のアクティブな割込み処理プログラムに取って代わることを許可し、また
    (ii)もし待機中の割込み処理プログラムの優先度が前記複数のアクティブな割込み処理プログラムのうちの最も高い優先度よりも低いようであれば、前記待機中の割込み処理プログラムが前記複数のアクティブな割込み処理プログラムに取って代わることを許可しない、
    前記方法。
  13. 請求項12に記載の方法であって、前記待機中の割込み処理プログラムに付随する前記優先度が前記複数のアクティブな割込み処理プログラムに付随する最も高い優先度に等しい場合に、前記待機中の割込み処理プログラムが前記複数のアクティブな割込み処理プログラムに取って代わることを防止する、前記方法。
  14. 請求項12に記載の方法であって、1つの割込み処理プログラムの優先度が前記割込み処理プログラムに付随するプログラミング可能な優先度レベルによって設定される、前記方法。
  15. 請求項12に記載の方法であって、前記待機中の割込み処理プログラムが、
    新しく検出された割込み事象と、
    1またはそれ以上の以前に検出されている割込み事象であって、対応する割込み処理プログラムがまだ始動していない割込み事象と、のうちの1つに対応している、前記方法。
  16. 請求項12に記載の方法であって、前記制御工程が対応する割込処理プログラムに関して、複数の割込み事象のそれぞれ1つに対応する記憶値に応答して、
    前記待機状態にある、対応する割込み処理プログラムと、
    前記アクティブ状態にある、対応する割込み処理プログラムと、
    前記対応する割込み処理プログラムに付随する優先度レベルと、
    を表示する、前記方法。
  17. 請求項12に記載の方法であって、スタック・データ記憶が、待機中の割り込み処理プログラムが前記複数のアクティブな割込み処理プログラムによって取って代える処理、に対応する状態データを記憶するように動作する、前記方法。
  18. 請求項17に記載の方法であって、前記複数のアクティブな割込み処理プログラムに付随する前記最も高い優先度が、前記スタック・データ記憶中の空きスペースが予め定められた空きスペース・レベルよりも低下したときに増分される、前記方法。
  19. 請求項18に記載の方法であって、前記複数のアクティブな割込み処理プログラムに付随する前記最も高い優先度が、可能な最大優先度レベルよりも低い、プログラミング可能な優先度レベルに増分される、前記方法。
  20. 請求項19に記載の方法であって、前記予め定められた空きスペース・レベルが、前記プログラミング可能な優先度レベルよりも高い優先度を有する割込み処理プログラムによって取って代わられるときに利用できるように、前記スタック・メモリ中に空きスペースを残すように設定される、前記方法。
JP2004295495A 2004-02-11 2004-10-08 ネスト状割込みシステムの割込み優先順位制御 Active JP4381951B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/775,334 US7206884B2 (en) 2004-02-11 2004-02-11 Interrupt priority control within a nested interrupt system

Publications (2)

Publication Number Publication Date
JP2005228294A JP2005228294A (ja) 2005-08-25
JP4381951B2 true JP4381951B2 (ja) 2009-12-09

Family

ID=32869922

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004295495A Active JP4381951B2 (ja) 2004-02-11 2004-10-08 ネスト状割込みシステムの割込み優先順位制御

Country Status (3)

Country Link
US (1) US7206884B2 (ja)
JP (1) JP4381951B2 (ja)
GB (1) GB2411023B (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4817834B2 (ja) * 2005-12-19 2011-11-16 ルネサスエレクトロニクス株式会社 割り込み制御装置及び割り込み制御方法
US7979618B2 (en) * 2007-07-12 2011-07-12 Samsung Electronics Co., Ltd. Image forming apparatus and control method thereof
GB2454885B (en) 2007-11-21 2012-06-06 Advanced Risc Mach Ltd Interrupt jitter suppression
JP5673672B2 (ja) * 2010-03-30 2015-02-18 富士通株式会社 マルチコアプロセッサシステム、制御プログラム、および制御方法
GB2503471B (en) * 2012-06-27 2015-05-06 Nordic Semiconductor Asa Integrated-circuit radio
US9372818B2 (en) * 2013-03-15 2016-06-21 Atmel Corporation Proactive quality of service in multi-matrix system bus
WO2015067993A1 (en) 2013-11-08 2015-05-14 Freescale Semiconductor, Inc. Processing system with stack management and method for stack management
GB2521607B (en) 2013-12-23 2016-03-23 Nordic Semiconductor Asa Integrated-Circuit Radio
EP3125125A4 (en) 2014-03-24 2018-07-25 Square Enix Co., Ltd. Interactive system, terminal device, server device, control method, program, and recording medium
FR3028065B1 (fr) * 2014-10-30 2017-12-22 Stmicroelectronics Rousset Procede de commande d'une unite de traitement ameliorant la gestion des taches a executer et unite de traitement correspondante
GB2550904B (en) * 2016-05-27 2020-07-15 Arm Ip Ltd Methods and Apparatus for Creating Module Instances
CN108595256B (zh) * 2018-03-20 2020-12-29 武汉市聚芯微电子有限责任公司 一种基于risc-v架构芯片采用软件实现中断嵌套的方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4038642A (en) * 1976-04-30 1977-07-26 International Business Machines Corporation Input/output interface logic for concurrent operations
US4488227A (en) * 1982-12-03 1984-12-11 Honeywell Information Systems Inc. Program counter stacking method and apparatus for nested subroutines and interrupts
EP0132161B1 (en) 1983-07-19 1988-06-15 Nec Corporation Apparatus for controlling a plurality of interruption processings
US5083261A (en) 1983-11-03 1992-01-21 Motorola, Inc. Dynamically alterable interrupt priority circuit
JPH0792782B2 (ja) 1985-09-30 1995-10-09 富士通株式会社 処理実行システム
EP0443557B1 (en) * 1990-02-20 1995-11-08 Nec Corporation Interrupt controller capable of realizing interrupt nesting function
JP2507833B2 (ja) * 1990-12-25 1996-06-19 三菱電機株式会社 マイクロコンピュ−タ
US5515538A (en) * 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US5642516A (en) * 1994-10-14 1997-06-24 Cirrus Logic, Inc. Selective shadowing of registers for interrupt processing
US5958036A (en) * 1997-09-08 1999-09-28 Lucent Technologies Inc. Circuit for arbitrating interrupts with programmable priority levels
US6108744A (en) * 1998-04-16 2000-08-22 Sun Microsystems, Inc. Software interrupt mechanism
US6081867A (en) * 1998-05-20 2000-06-27 Sony Corporation Software configurable technique for prioritizing interrupts in a microprocessor-based system
US6651126B1 (en) * 1999-10-29 2003-11-18 Texas Instruments Incorporated Snapshot arbiter mechanism
US6928502B2 (en) * 2003-01-31 2005-08-09 Via Telecom Co., Ltd. Method and apparatus for processing interrupts at dynamically selectable prioritization levels

Also Published As

Publication number Publication date
US20050177667A1 (en) 2005-08-11
JP2005228294A (ja) 2005-08-25
US7206884B2 (en) 2007-04-17
GB2411023B (en) 2006-12-13
GB0415340D0 (en) 2004-08-11
GB2411023A (en) 2005-08-17

Similar Documents

Publication Publication Date Title
US8799929B2 (en) Method and apparatus for bandwidth allocation mode switching based on relative priorities of the bandwidth allocation modes
JP7313381B2 (ja) ハードウェアアクセラレーションのためのハードウェアリソースの埋込みスケジューリング
US9727343B2 (en) Apparatus and method for handling exception events
JP7087029B2 (ja) 中央処理装置(cpu)と補助プロセッサとの間の改善した関数コールバック機構
US7734897B2 (en) Allocation of memory access operations to memory access capable pipelines in a superscalar data processing apparatus and method having a plurality of execution threads
JP4381951B2 (ja) ネスト状割込みシステムの割込み優先順位制御
GB2348306A (en) Batch processing of tasks in data processing systems
JP4610322B2 (ja) 割込み処理制御の方法と装置
JPH08221311A (ja) スーパースカラプロセッサにおけるロードバッファ及びストアバッファの優先順位の動的切換え
US20170212852A1 (en) Method and accelerator unit for interrupt handling
US20050028159A1 (en) Memory managing system and task controller in multitask system
US11734079B2 (en) Methods of hardware and software-coordinated opt-in to advanced features on hetero ISA platforms
JP7470685B2 (ja) 集積回路中の算出ユニットをプログラムおよび制御すること
US7080178B2 (en) Interrupt pre-emption and ordering within a data processing system
JPH0926928A (ja) 仮想入出力プロセッサ
US6704863B1 (en) Low-latency DMA handling in pipelined processors
JP2007207074A (ja) オペレーションシステム、スレッド制御機構、及び情報処理装置
JP2004287883A (ja) プロセッサ、計算機及び優先度決定方法
US7904703B1 (en) Method and apparatus for idling and waking threads by a multithread processor
JP6913689B2 (ja) レジスタ・アクセス制御
JP4756599B2 (ja) データ処理装置
JP2012168725A (ja) マルチスレッド・プロセッサ
JP7157542B2 (ja) プリフェッチコントローラ
CN115809121A (zh) 用于上下文切换的方法和装置
JP2011123804A (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081017

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090119

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090122

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090217

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090302

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090617

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: 20090904

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: 20090916

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121002

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4381951

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131002

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250