JP2011216118A - データ処理命令を実行するためのデータ処理装置および方法 - Google Patents

データ処理命令を実行するためのデータ処理装置および方法 Download PDF

Info

Publication number
JP2011216118A
JP2011216118A JP2011158231A JP2011158231A JP2011216118A JP 2011216118 A JP2011216118 A JP 2011216118A JP 2011158231 A JP2011158231 A JP 2011158231A JP 2011158231 A JP2011158231 A JP 2011158231A JP 2011216118 A JP2011216118 A JP 2011216118A
Authority
JP
Japan
Prior art keywords
stack
data processing
return state
mode
processing unit
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
JP2011158231A
Other languages
English (en)
Inventor
Edward Colles Nevill
ネヴィル、エドワード、コールズ
Ian Victor Devereux
デヴェルー、イアン、ヴィクター
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.)
ARM Ltd
Original Assignee
ARM Ltd
Advanced Risc Machines 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 ARM Ltd, Advanced Risc Machines Ltd filed Critical ARM Ltd
Publication of JP2011216118A publication Critical patent/JP2011216118A/ja
Pending legal-status Critical Current

Links

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
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers

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)
  • Advance Control (AREA)

Abstract

【課題】本発明はリターンステートをセーブするためのデータ処理装置および方法を提供する。
【解決手段】このデータ処理装置はデータ処理命令を実行するための処理ユニットを備え、この処理ユニットは複数の作動モードを有し、各作動モードはそのモードに関連したデータを記憶するための対応するスタックを有する。処理ユニットは現在の作動モードからの処理ユニットのリターンステートデータを現在の作動モードと異なる作動モードに対応するスタックに書き込むよう、リターンステートデータ処理命令に応答自在である。このアプローチは公知の従来技術よりもコードサイズを大幅に縮小し、割り込みレイテンシーを改善する。
【選択図】図6

Description

本発明はリターンステートをセーブするためのデータ処理装置および方法に関し、より詳細には、複数の作動モードを有する処理ユニットを内蔵し、各作動モードがそのモードに関連したデータを記憶する、対応するスタックを有する、データ処理装置内にリターンステートをセーブすることに関する。
かかるデータ処理装置内では、そのときの作動モード(現在作動モード)に関連したスタックにリターンステートデータをセーブするようになっている命令を与えることが知られている。かかる命令が使用される代表的な例は、例外が発生する場合であり、この場合例外作動モードに関連したスタックにリターンステートデータがセーブされる。この手順は種々の理由から必要となり得る。例えばかかるデータ処理装置は一般にマルチタスクをサポートでき、別のタスクを実行できるようにコンテキストスイッチを実行すべき時に、その時のタスクの作動モードに関連するスタック(単数または複数)をスワップし、新しいタスクを実行できるようにしなければならない。スタックポインタを使ってスタックにアクセスするシステムでは種々のスタックのうちのスタックポインタ(単数または複数)をスワップすることによって通常このスワッピングが実行される。かかるデータ処理装置では一般にコンテキストスイッチングが生じたときにスワップするスタックにリターンステートデータをセーブしなければならない。
コンテキストスイッチングを容易にするためには、コンテキストスイッチング時に空でないすべてのスタックをスワップしなければならない。多数のスタックを有するプロセッサでは、これを行うには特定のタスクに属すスタックであれば、どのスタックもスワップしなければならない。更に、このようなアプローチを使用する場合、作動モードごとに1つの別個のスタックをタスクごとに維持しなければならないので、これによってメモリ消費量が増加し、各タスクに属す各スタックをスワップするのにかかる時間が長くなる。例えば、ARMリミティッド社によって製造されている現在のプロセッサは6つの作動モードに対応する6個の別個のスタックを有する。すなわちシステム/ユーザースタック、FIQ(高速割り込みリクエスト)スタック、スーパーバイザースタック、アボートスタック、IRQ(割り込みリクエスト)スタックおよび無定義スタックを有し、ここでFIQおよびIRQは2つの割り込み作動モードである。従って、上記アプローチを使用する場合、コンテキストスイッチは6個の別個のスタックをスワッピングしなければならず、各タスクは6個の別個のスタックのためのメモリをリザーブしなければならない。かかるアプローチの一例については図2Aおよび2Bを参照して後に説明する。図2Aおよび2Bはコンテキストスイッチングを生じさせない単一の高優先度の割り込みリクエスト用にFIQモードが保留されていると見なした場合の代表的なシステムの一例を示しているので、これら図は6このスタックではなく5個のスタックを有するシステムを示している。
より一般的に使用される別のアプローチは、タスク間で種々の例外スタックを共用し、例外へのエントリー時に例外スタック上の任意のデータをユーザースタックまたは単一のプロセスごとの特権モードスタックへ転送することである。ARMリミティッド社によって現在製造されているプロセッサの前の例を参照すると、この例はFIQスタック、アボートスタック、IRQスタックまたは無定義スタックからデータをユーザースタックまたはスーパーバイザースタックへ転送することに一致する。このアプローチはコンテキストスイッチングが必要とされ得るすべてのポイントですべての例外スタック(ARMプロセッサの例におけるFIQ、スタック、アボートスタック、IRQスタックおよび無定義スタック)が空状態のままとなることを保証する。
例外へのエントリー時にセーブされるデータは通常、例外が生じたポイントからタスクが実行を続けるのに必要とされるデータである。このデータを「リターンステートデータ」と称す。
上記第2アプローチによれば、例外へのエントリー時に例外作動モードに関連したスタックにリターンステートがセーブされ、プロセッサのユーザーモードまたは特権モードに入り、次に例外作動モードに関連したスタックから、そのリターンステートデータが読み戻され、ユーザーモードまたは特権モードに関連したスタックにセーブされる。ユーザーモードまたは特権モードに入った後でユーザーモードまたは特権モードから単にリターンステートをセーブすることはできない。その理由は、このモードからリターンステートにアクセスすることはできないからである。このプロセスについては図3Aおよび3Bの例を参照して後により詳細に説明する。
例外作動モードに属すスタックにリターンステートデータをセーブし、モードを変更し、例外作動モードに属すスタックからリターンステートデータをリカバーし、ユーザーモードスタックまたは特権モードスタックにリターンステートデータをセーブするこのプロセスは、かなりの数の命令を必要とし、このことはデータ処理装置のコードサイズおよび性能に悪影響を与える。
更にこのプロセスは割り込みがディスエーブルされる時に割り込み取り扱いにおけるクリティカルポイントで必要とされるので、割り込みのレイテンシーをかなりの値にすることに留意すべきである。別の割り込みに到着し、リターンステートデータをセーブする前にリターンステートデータをオーバーライトする場合、ユーザーモードスタックまたは特権モードスタックにリターンステートデータをセーブするまで割り込みを再イネーブルすることはできないことに留意すべきである。
従って、例外発生時にリターンステートデータをセーブするためのより効率的な技術を提供することが望ましい。
第1の様相によれば、本発明は、複数の作動モードを有し、各作動モードがその作動モードに関連するデータを記憶するための対応するスタックを有する、データ処理命令を実行するための処理ユニットを備え、前記処理ユニットが現在の作動モードからの処理ユニットのリターンステートデータを現在の作動モードと異なる作動モードに対応するスタックに書き込むよう、リターンステートデータ処理命令に応答自在である、データ処理装置を提供するものである。
本発明によれば、処理ユニットが現在の作動モードからの処理ユニットのリターンステートデータを現在の作動モードと異なる作動モードに対応するスタックに書き込むようにするのに使用されるリターンステートデータ処理命令が提供される。
本発明はコードサイズを縮小し、性能を改善できることが判っている。本発明は種々の実現例で利用できるが、リアルタイムオペレーティングシステム、特に高速コンテキストスイッチングを必要とするリアルタイムオペレーティングシステム、例えばライナックスのようなマルチタスクオペレーティングシステムで特に有利である。
好ましい実施例では、例外の発生時にリターンステートデータ処理命令を呼び出す。
例外は任意の適当な例外でよく、例えばすべてのタイプの割り込み、すべてのタイプのアボート、無定義命令例外、アドレス例外、ソフトウェアの割り込みおよび発生され得る他の任意の例外を含む、データ処理装置内で発生する標準的な例外のうちのいずれかとなり得ることが理解できよう。特に好ましい実施例では、例外はデータアボート、プリフェッチアボート、アドレス例外、無定義命令、リセット、ソフトウェアの割り込み、割り込みリクエストまたは高速割り込みリクエストのうちの1つ以上である。
従って、好ましい実施例ではデータ処理命令を呼び出す命令は所定の組の例外のうちの任意のものであり、その所定の組の命令は1つ以上の割り込みを含み得る。
本発明の好ましい実施例によれば、例外ハンドラーの開始時に必要とされる命令数を少なくすることにより、コードサイズを縮小できることが判っている。更に好ましい実施例によれば、例外ハンドラーの開始時に必要とされるサイクル数を少なくすることによって性能を改善できる。これらサイクルは割り込みがディスエーブルされるクリティカルポイントで一般に発生するので、本発明は割り込みのレイテンシーを大幅に小さくできるという利点を有する。本発明の好ましい実施例は種々の実現例で利用できるが、リアルタイムのオペレーティングシステム、特に極めて小さい割り込みレイテンシーを必要とするオペレーティングシステム、例えばディスクドライブを制御するオペレーティングシステムで特に有利である。
好ましい実施例ではデータ処理装置は各作動モードのための処理ユニットのリターンステートデータを記憶するための複数のリターンステートレジスタを備えた、一組のレジスタを更に備え、前記処理ユニットが現在の作動モードからの処理ユニットのリターンステートデータを含むリターンステートレジスタにのみアクセスできるようになっている。このため、一旦作動モードが変更されると、元の例外モードに再エントリーすることによりリターンステートレジスタにアクセスすることができなくなるので、作動モードを変更する前にリターンステートを適当なスタックにセーブしなければならない。
スタックは種々の方法で実現できることが理解できよう。しかしながら、好ましい実施例では、各スタックはそのスタック内のロケーションを識別する、そのスタックに関連するスタックポインタを有し、特定のスタックのための前記スタックポインタは対応する作動モードからしかアクセスできないようになっている。従って、特定の作動モードでは処理ユニットは一般にスタックのスタックポインタにしかアクセスしないので、処理ユニットは一般に対応するスタックにしかアクセスできない。
データ処理ユニット内に一組のレジスタが設けられる好ましい実施例では、前記レジスタの組は各スタックのためのスタックポインタを記憶するための複数のスタックポインタレジスタを含み、前記処理ユニットはその現在の作動モードに対応するスタックのためのスタックポインタを含むスタックポインタレジスタにのみアクセスできるようになっている。従って、現在の処理モードとなっている処理ユニットは対応するスタックのためのスタックポインタを得るようにスタックポイントレジスタにのみアクセスできる。
本発明によって提供されるリターンステートデータ処理命令は種々のフォームをとり得ることが理解できよう。しかしながら好ましい実施例では、前記リターンステートデータ処理命令は、処理ユニットのリターンステートデータを書き込むべきスタックを識別するためのスタック識別フィールドを含む。
好ましい実施例において、各スタックがこれに関連するスタックポインタを有する場合、処理ユニットがデスティネイションスタック内の適当なロケーションにリターンステートデータを書き込むのにスタックポインタについて知っていなければならないことは明らかである。従って、好ましい実施例では、前記スタック識別フィールドが前記処理ユニットのリターンステートデータを書き込むべきスタックのためのスタックポインタを特定するようになっており、よってリターンステートデータをそのスタックに書き込む際に前記処理ユニットがそのスタック内の適当なロケーションにアクセスできるようにする。
更に好ましい実施例では、前記リターンステートデータ処理命令はオプションの更新フィールドを含み、一旦リターンステートデータがスタックに書き込まれた場合にこの更新フィールドはスタックポインタを更新すべきことを示すようにセットされる。一般にスタックポインタが更新されるが、スタックポインタを更新することが適当でない状況があり得るので、このオプションの更新フィールドはスタックポインタを現在の値に残すか、またはスタックポインタを更新し、スタックに書き込まれるリターンステートデータを適当に扱うかのいずれかをとり得るフレキシビリティを与えている。
好ましい実施例では、どのようにスタックポインタを更新するかを決定するために、異なるアドレスモードを使用する異なるタイプのスタックを設けることができる。4つの異なるスタックのタイプの例としては次のものがある。
フル昇順−スタックはメモリ内で上に成長し、スタックポインタはスタックにプッシュされた最終ワードをポイントする。
空昇順−スタックはメモリ内で上に成長し、スタックポインタはスタックにプッシュされた最終ワードの1つ上のワードをポイントする。
フル降順−スタックはメモリ内で下方に成長し、スタックポインタはスタックにプッシュされた最終ワードをポイントする。
空降順−スタックはメモリ内で下方に成長し、スタックポインタはスタックにプッシュされた最終ワードの1つ下のワードをポイントする。
従って、好ましい実施例では、前記リターンステートデータ処理命令は、前記リターンステートデータを書き込むべきスタックのアドレスモードを識別するためのアドレスモードフィールドを含む。
例外の発生およびその他のシステムステートに応じ、常にリターンステートデータ処理命令を呼び出さなければならないことがあったり、代わりに特定の条件が生じた場合にリターンステートデータ処理命令を呼び出すだけでよいことがある。従って、好ましい実施例によれば、前記リターンステートデータ処理命令は前記リターンステートデータ処理命令を実行するための条件を特定するための条件フィールドを含み、よって条件が満たされた場合に前記リターンステートデータ処理命令は処理ユニットにしか実行されないようになっている。
好ましい実施例では、例外が発生すると、処理ユニットは対応する例外作動モードにされ、従って一例として割り込みが生じた場合、処理ユニットは、割り込み作動モードとされ、 アボートが生じた場合、処理ユニットは、アボート作動モードとされ、同様な動作が行われる。従ってリターンステートデータ処理命令が実行されるときのそのときの作動モードは、例外作動モードである。好ましい実施例では、リターンステートデータを記憶するのにスタックが使用される異なる作動モードは、特権作動モード、例えばシステムワイドな特権作動モードである。別の実施例では、異なる作動モードは、例外モードに入る前の処理ユニットの作動モードでよい。
リターンステートデータは、種々の形態となり得る。しかしながら好ましい実施例では、前記リターンステートデータは、セーブされたプログラムカウンタおよびセーブされたプロセッサステータスを含み、これらはプログラムカウンタおよび現在の、すなわち例外作動モードに入るために出た作動モードのプロセッサのステータスとなっている。
第2の様相によれば、本発明は複数の作動モードを有し、各作動モードがその作動モードに関連するデータを記憶するための対応するスタックを有する、データ処理命令を実行するための処理ユニットを備えたデータ処理装置を作動させるための方法において、現在の作動モードのままで現在の作動モードからの処理ユニットのリターンステートデータを現在の作動モードと異なる作動モードに対応するスタックに書き込むことにより、前記処理ユニットをリターンステートデータ処理命令に応答させる工程を備えた、データ処理装置を作動させる方法を提供するものである。
第3の様相によれば、本発明は本発明の第3の様相に係わる方法を実行するように作動できる、コンピュータプログラムを提供するものである。本発明はかかるコンピュータプログラムを備えたキャリア媒体にも関する。キャリア媒体は、適当な任意にデバイス、例えばCDROM,ディスケット等でよく、光ファイバー、無線信号等の伝送媒体でもよい。
各スタックが1つ以上の作動モードに関連しているマルチタスクを含むシステムコンフィギュレーションの一例を示す図である。 図1Aのシステムコンフィギュレーションにおける各作動モードに関連したレジスタを示す。 各タスクが5つの別個のスタックを有する場合の、3つのタスクを有する公知のシステムコンフィギュレーション例を示す。 図2Aに示されたシステムに関連するタスク制御ブロックの一部を示す。 各タスクが2つの別個のスタックを有するが、3つのタスクの間で3つの例外スタックを共用するようになっている3つのタスクを有する公知のシステムコンフィギュレーションを示す。 図3Aに示されたシステムに関連するタスク制御ブロックの一部を示す。 従来技術のアプローチに従った例外発生時に呼び出される命令のシーケンスを示す。 従来技術のアプローチに従った例外発生時に呼び出される命令のシーケンスを示す。 従来技術のアプローチに従った例外発生時に呼び出される命令のシーケンスを示す。 従来技術のアプローチに従った例外発生時に呼び出される命令のシーケンスを示す。 従来技術のアプローチに従った例外発生時に呼び出される命令のシーケンスを示す。 本発明の好ましい実施例に従って例外発生時に実行される命令のシーケンスを示す。 本発明の好ましい実施例に従って例外発生時に実行される命令のシーケンスを示す。 本発明の好ましい実施例に従って例外発生時に実行される命令のシーケンスを示す。 本発明の好ましい実施例に従って例外発生時に実行される命令のシーケンスを示す。 本発明の好ましい実施例に係わるデータ処理装置を内蔵するシステムの構造例を示すブロック図である。
以下、添付図面に示された本発明の好ましい実施例を参照して、単なる例により本発明について更に説明する。
図1Aおよび1Bは6つの作動モードおよびそれに対応する6つのスタックを有するシステム例を示すブロック図である。しかしながら、FIQモードはコンテキストスイッチングを生じさせない高優先度の割り込みに対してリザーブされているので、図には5つの作動モードおよびそれらに対応する5つのスタックしか示されておらず、次の説明ではこれらについてしか説明しない。従って、図1Aを参照し、5つのスタック100、110、120、130、140について説明する。各スタックは関連するスタックポインタレジスタ105、115、125、135、145を有し、各スタックポイントレジスタに対してはそのスタックに関連する作動モードからしかアクセスできない。5つの作動モード、すなわちユーザーモード、特権モード、割り込みモード、アボートモードおよび無定義モードの各々でアクセスできるレジスタを示す図1Bを参照すれば、このことが明らかとなる。図1Bから明らかなように、任意のモードから所定のレジスタにアクセス可能である。しかしながら、5つのモードに対するスタックポインタは本例ではSP、SP_SVC、SP_IRQ、SP_ABTおよびSP_UNDと称する。特定の作動モードではプロセッサはその作動モードに関連するスタックに対するスタックポインタを含むレジスタにしかアクセスできない。従って、プロセッサはその作動モードに属すスタックにしかアクセスできない。
特権モードおよび例外モード(割り込み、アボートおよび無定義)の各々は関連したリターンステートデータを有し、このデータにはそのリターンステートに関連した作動モードからしかアクセスできない。図1Bを参照すると、リターンステートはLR_SVC、LR_IRQ、LR_ABT、LR_UND、およびSPSR_SVC、SPSR_IRQ、SPSR_ABTおよびSPSR_UND、「Link Register」を意味するLR、および「Saved Processor Status Register」を意味するSPSRと称す。ユーザーモードもリンクレジスタを有しているが、このレジスタはユーザーモード用のリターンステートがない時にリターンステート情報を記憶するのには使用されない。その理由は、このユーザーモードは例外モードではないからである。すなわちユーザーモードにエントリーさせる例外はないので、ユーザーモードはリターンステートデータを記憶する必要はないからである。
図2Aは従来技術の第1システムコンフィギュレーションをブロック図として示している。この例ではシステムは3つのタスクを有し、各タスクは5つの作動モードに対応する5つのスタックを有する。従って、タスク1はプロセススタック200と、システムスタック210と、割り込みスタック220と、アボートスタック230と、無定義スタック240とを有し、タスク2はプロセススタック202と、システムスタック212と、割り込みスタック222と、アボートスタック232と、無定義スタック242とを有し、タスク3はプロセススタック204と、システムスタック214と、割り込みスタック224と、アボートスタック234と、無定義スタック244とを有する。
リターンステートデータは例外に対応するスタックにセーブされる。例えば割り込みの発生時に、タスクは割り込み作動モードとなり、割り込みスタックにリターンステート情報がセーブされる。図2Aから判るように、これによってタスクごとに5つのスタックを維持しなければならないことによりメモリ消費量の点で更にオーバーヘッドが課される。
図2Bは各タスク用のタスク制御ブロックの一部を示し、1つのタスク制御ブロックはタスクがコンテキストスイッチングに必要なすべての情報をセーブするメモリの一領域となっている。5つのスタックの各々に対するスタックポインタはこの情報の一部として記憶しなければならないので、タスク1のための制御ブロック250は5つのスタックポインタを記憶しなければならず、タスク2のための制御ブロック260は5つのスタックポインタを記憶しなければならず、タスク3のための制御ブロック270は5つのスタックポインタを記憶しなければならない。従って、タスクごとに5つのスタックを設けなければならないので、各タスク制御ブロックに必要とされる付加的メモリによるメモリ消費量およびタスク制御ブロック内の付加的レジスタをセーブし、レストアするのにかかる追加時間による性能の双方の点で、更にオーバーヘッドが課されることが理解できよう。
この公知の技術を改良する目的で、より一般的に使用される第2のアプローチはタスク間で所定の例外スタックを共用するシステムを提供することであり、図3Aにはかかるシステムの一例が示されている。図3Aの例によれば、1つのタスク当たり2つのスタックを有し、3つのタスクの間でワイドな別の3スタック共用システムを有するシステムが示されている。図示するために、図3Aに示されたシステムは図2Aに示されたシステムと同じ5つの実行モードを有すると見なすが、他の実施例はそれよりも多いか少ない実行モードを有することが理解できよう。
例外発生時に対応する例外スタック上のデータは対応するタスクのユーザー/プロセススタックまたはシステムスタックのいずれかに転送され、コンテキストスイッチングが必要とされるすべてのポイントで共用される例外スタックのすべが空のままとなることを保証できる。この結果、対応するタスク制御ブロックにユーザー/プロセスモードおよびシステムモード用のスタックポインタを記憶するだけでよく、このことはタスク1、2および3のそれぞれに対するタスク制御ブロック360、370および380を示す図3Bによって示されている。
図3Aおよび3Bから明らかなように、このアプローチを使用することによってメモリ消費および性能の点で大きな利点が得られる。図3Aおよび3Bに示されたシステムはNt×2+3個のスタックを必要とするが、図2Aおよび2Bに示されたシステムはNt×5個のスタックを必要とする。ここでNtはシステムにおけるタスクの数である。更に図2Aおよび2Bに示されたシステムはNt×5個のワードのコンテキストブロック情報を必要とするが、図3Aおよび3Bに示されたシステムはNt×2個のワードのコンテキストブロック情報を必要とする。性能の点で、図2Aおよび2Bに示されたシステム上のタスク間のコンテキストスイッチングは5つのワードのロードおよび記憶を必要とするが、図3Aおよび3Bに示されたシステム上のタスク間のコンテキストスイッチングは2つのワードのロードおよび記憶を必要とする。
公知の技術を使用して図3Aおよび3Bに示されたシステムを実現するのに、割り込みの開始時に必要なコードの一例を示すためにARMアセンブラで書かれたコードフラグメントを下記のように記載する。
;まず最初に、割り込みスタックにリターンステート(lrおよびspsrレジスタ
)をセーブする。リターンステートの他に一時的レジスタとして使用するため
にR0もセーブする。モードを切り換えるとすぐにリターンステートおよびセー
ブされたR0を割り込みスタックからローディングするので、スタックポインタ
はデクリメントしない。割り込みはディスエーブルされるので、モードを変え
た後にデータをセーブしてから、これを読み出すまでの間、割り込みをサービ
スできないことが判っているので、スタックポインタをデクリメントしないほ
うが安全である。
(D) SUB lr、lr、#4 ;リターンアドレスをポイントするようにLR_IRQを調
節する
(M) STR lr、[sp、#-4] ;割り込みスタックにLR_IRQをセーブする
(D) MRS lr、spsr ;SPSR_IRQを読み出す
(M) STR lr、[sp、#-8] ;割り込みスタックにSPSR_IRQをセーブする
(M) STR r0、[sp、#-12] ;割り込みスタックにROをセーブする
(D) MOV r0、sp ;R0内の割り込みスタックポインタを取り込む
;次にプロセッサモードをシステム(SVC)モードに変える
(D) MRS lr、cpsr ;現在のプロセッサステータスレジスタを読み出す
(D) BIC lr、lr、#0x1f ;ビットクリア動作を使ってモードビットをマスクアウ
トする
(D) ORR lr、lr、#0x13 ;SVCモードのために正しいモードビットであればORする
(D) MSR cpsr_c、lr ;新しいモードをcpsrに書き込む
;次にSVCスタックにレジスタをセーブするので、このレジスタを一時的レジス
タとして使用できる。次にリターンステート情報および割り込みスタックから
セーブしたR0をリカバーし、これをSVCスタックにセーブする。
(D) SUB sp、sp、#8*4 ;まずSVCスタックにスペースを設ける
(M) STR r1、[sp、#2*4] ;一時的レジスタとして使用するためにR1をセーブする
(M) LDR r1、[r0、#-4] ;セーブしたLR_IRQをR1にリカバーする
(M) STR r1、[sp、#7*4] ;LR_IRQをSVCスタックにセーブする
(M) LDR r1、[r0、#-8] ;セーブしたSPSR_IRQをR1にリカバーする
(M) STR r1、[sp、#0*4] ;SPSR_IRQをSVCスタックにセーブする
(M) LDR r1、[r0、#-12] ;セーブしたR0を割り込みスタックからリカバーする
;このポイントでは割り込みを再イネーブルするのが安全である。この前のポ
イントではそのようにすることは安全でない。その理由は、割り込みスタック
からすべてのデータを回収する前に第2の割り込みのサービスが認められた場
合、オーバーライトされ得る割り込みスタック上に記憶されたデータがあるか
らである。
(D) MRS r0、cpsr ;CPSRを読み出す
(D) BIC r0、r0、#0x80 ;割り込みディスエーブルビットをクリアする
(D) MSR cpsr_c、r0 ;CPSRを戻すように書き込む
;***INTERRUPT RE-ENABLE***
;割り込みを再イネーブルする前のサイクルカウント=11*D+9*Mとする
;プロセスコンテキストの残りのセーブを続けることができる
STR r1、[sp、#1*4] ;IRQスタックからリカバーしたR0をセーブする
STR r2、[sp、#3*4] ;SVCスタックにR0をセーブする
STR r3、[sp、#4*4] ;SVCスタックにR3をセーブする
STR R12、[sp、#5*4] ;SVCスタックにR12をセーブする
STR lr、[spc、#6*4] ;SVCスタックにLR_SVCをセーブする
.... ;次に割り込みを続け、サービスする
各命令の横にある括弧内の文字は、各命令に必要なメモリまたはデータサイクル数を示し、ここでMは1つのメモリサイクルに等しく、Dは1つのデータサイクルに等しい。サイクルの数は割り込みを再イネーブルできるポイントである「***INTERRUPT RE-ENABLE***」と表示されたポイントまで示されている。割り込みハンドラーの開始時からこのポイントまでのサイクルの数は、割り込みのレイテンシーを決定し、サイクル数が多い場合、割り込みのレイテンシーが大きくなり、他方、サイクル数が少なければ割り込みのレイテンシーは小さくなる。上記コードフラグメント内には割り込みハンドラーの第1命令に制御信号を送るためにハードウェアが必要とする多くの付加的サイクルは示されていない。本発明の好ましい実施例を使用する場合でも使用しない場合でも、このサイクル数は同じであるので、本書では簡潔にするために省略されている。
上記コードフラグメントに示された種々の命令により実行されるプロセスの説明を容易にするために図4A〜4Eを添付したので、次にこれら図について説明する。
この例では1つの割り込みの例外が生じたので、プロセッサは割り込み作動モードに入っており、このモードでプロセッサはレジスタ420にアクセスしたと見なす。図4Aにおいてレジスタ430として識別されたリターンステートレジスタにはこの割り込み作動モードからのプロセッサのリターンステートデータが記憶される。特にこのリターンステートデータはレジスタLR_IRQおよびSPSR_IRQを含む。
図4Aはスタックのうちの2つ、すなわち割り込み作動モードからアクセスできる割り込みスタック400およびスーパーバイザースタック410を示しており、割り込み作動モードではプロセッサはスーパーバイザースタックポインタSP_SVCを含むレジスタにはアクセスできないので、割り込み作動モードからスーパーバイザースタック410にはアクセスできない。
実行しなければならない最初のプロセスは、リターンステート、すなわちレジスタ430の内容を割り込みスタック400にセーブすることである。リターンステートのセーブの他に、割り込みスタック400にはR0の内容もセーブされるので、レジスタR0を一時的レジスタとして使用できる。この動作は図4Aで番号435によって表示されており、上記コードフラグメントに記載されている4つの命令によって実行される。開示した実現例ではリンクレジスタLR_IRQが正しくリターンアドレスをポイントするように、このリンクレジスタを調節しなければならないので、上記コードフラグメントに記載されている初期のSUB命令しか必要とされない。
従って、図4Bを参照すると、次に割り込みスタック400にLR_RIQ、SPSR_IRQおよびR0の内容が記憶されるポイントにある。割り込みスタック400のスタックポインタSP_IRQはデクリメントされない。その理由は、割り込みスタックにセーブされたばかりのリターンステートおよびR0データはプロセスがモードを変えるとすぐに割り込みスタックからロードされるからである。スタックポインタはデクリメントしないほうが安全である。その理由は、この時点では割り込みはディスエーブルされているので、データをセーブしてからモードを変えた後にデータを読み出すまでの間に、別の割り込みにサービスすることは不可能であるからである。
図4Bに示されているように、次のステップは割り込みスタックのスタックポインタSP_IRQをレジスタR0に記憶することであり、このレジスタは一時的レジスタとして使用されている。割り込み作動モードから一旦出ると、これによってそのスタックポインタにアクセスすることが可能となる。
この時点でプロセッサモードはシステムモードに変化する。この変化は図4B内の参照番号445で表示された4つの命令によって実行される。従って、図4Cに示されるように、次にプロセッサはスーパーバイザー作動モードとなり、この作動モードでプロセッサはレジスタ450にアクセスする。作動モードの間ではレジスタR0が共用されるので、レジスタR0はまだ割り込みスタック400のためのスタックポインタを含む。しかしながら、リターンステートはレジスタ440に記憶されている、スーパーバイザー作動モードからのプロセッサのリターンステートである。
次に、プロセスはスーパーバイザースタック上にレジスタのうちの1つの内容を記憶するので、この内容を一時的レジスタとして使用できる。この例ではレジスタR1の内容がスーパーバイザースタックに記憶される。次にプロセスは割り込みスタック400からリターンステート情報およびセーブされたR0値をリカバーし、これをスーパーバイザースタック410にスタックする。これらプロセスは図4C内の番号455で表示された7つの命令によって実行される。特にスーパーバイザースタックポインタを8個の4バイトワードだけデクリメントするのにSUB命令が使用される。次に、スーパーバイザースタック410内の特定のロケーション内にR1の内容を記憶するのに、STR命令が使用される。次に、スーパーバイザースタック上の特定のロケーションにLR_IRQを記憶するのにLDRおよびSTR命令が使用される。この場合次のLDRおよびSTR命令がスーパーバイザースタック上の特定ロケーションにSPSR_IRQを記憶するのに使用される。この目的のためには一時的レジスタR1が使用されることが理解できよう。割り込みスタック400に記憶されたR0の値を一時的レジスタR1に記憶するのに最後のLDR命令が使用される。しかしながら、スーパーバイザースタックにその値を記憶するのに必要な次のSTR命令は、すぐには使用されない。その理由は、この時点では割り込みを再イネーブルすることが安全であるからであり、割り込みのレイテンシーを最小にするために割り込みを再イネーブルすることに優先権が与えられる。前のポイントではイネーブルを再イネーブルすることは安全でないことに留意すべきである。その理由は、割り込みスタック400からデータのすべてをリカバーする前に第2の割り込みのサービスが許可された場合に、オーバーライトされ得るデータが割り込みスタック400に記憶されているからである。
従って、次に図4Dに移る。図4Dにおいて番号465で示され、前のコードフラグメントに含まれている3つの命令によって割り込みのイネーブル化が実行される。実際にはこれら命令はSPSRレジスタを読み出し、割り込みディスエーブルビットをクリアし、次に対応するデータをSPSRレジスタに戻すように書き込み、よって割り込みを再イネーブルする。
このポイントにおいて、次にプロセスコンテントの他の部分のセーブを続けることができる。このセーブは、図4D内の番号475によって示された5つのSTR命令によって実行される。特に最初のSTR命令はR1の内容をスーパーバイザースタック内の特定ロケーションに書き込むことに留意すべきである。このレジスタは実際に元のR0データ、すなわち図4Cにおいて実行される命令のうちの1つによりスーパーバイザースタック内に既に移動されたR1の内容を含む。次に、レジスタR2、R3、R12およびLR_SVCの内容もスーパーバイザースタック410へ移動される。他のレジスタの内容もATPCS(ARMサム手順コール規格)に従う、次にコールされるコードによって自動的にセーブされるので、(コードがATPCSに従わなければ)このポイントではスーパーバイザースタックに明示的にセーブする必要はない。
図4Eは次にこのポイントにおけるスーパーバイザースタック410の最終ステートを示している。図4Dおよび4Eでは、割り込みスタック400は最初に図4A内の割り込みスタックに移動したデータの3つの部分を含むものとして示されていることに留意すべきである。しかしながらこのデータはスーパーバイザースタックに記憶されているので冗長であり、よってすべての意図および目的に対し、割り込みスタック400を空であると見なすことができることは明らかである。したがって、このポイントでは割り込みスタック400を続け、これをサービスすることが安全である。この割り込みは別のタスクへのコンテキストスイッチングにより一般に生じる。
理解できるように、この公知の従来技術を使用した場合、割り込みハンドラーは割り込みを再イネーブルできるまでに11のDタイプのサイクルおよび9つのMタイプのサイクルを必要とするので、これによって割り込みレイテンシーが比較的大きくなる。割り込みを再イネーブル化するまでに必要な命令の数も重要である。図4A〜4Eと組み合わせて上記に添付したコードフラグメントから判るように、この従来技術のアプローチを使って割り込みを再イネーブル化できるまでに20の命令を実行しなければならない。
以上で公知の従来技術に従って、図3Aおよび3Bに示されているようなシステムを実現するために、割り込みのスタート時に必要なプロセスについて説明したので、次に本発明の好ましい実施例に従ってかかるシステムを実現するために割り込みのスタート時に必要なプロセスについて説明する。特に説明を助けるために、以下、本発明の好ましい実施例に従って図3Aおよび3Bに示されているようなシステムを実現するのに割り込みのスタート時に必要なコードを示すコードフラグメントについて記載する。
;SRS命令を使ってSVCスタックに直接リターンステートをセーブする
(D) SUB lr、lr、#4 ;リターンアドレスをポイントするようにLR_IRQを
調節する
(2M) SRSDB sp_svc! ;SVCスタックにリターンステータスをセーブする
;次にプロセッサをシステム(SVC)モードに変え、同時に割り込みを再イネー
ブルする。この時点ではSVCスタックにリターンステートがセーブされている
ので、割り込みを再イネーブルするのが安全である。従ってこの割り込みスタ
ックは空であり、割り込みスタックをコンテキストスイッチングすることなく
(すなわちタスクごとに別個の割り込みスタックを設けなくても)、コンテキ
ストスイッチングが可能である。
(D) MRS lr、cpsr ;cpsrを読み出す
(D) BIC lr、lr、#0x1f+0x80 ;モードビットをマスクアウトし、割り込み
をクリアする
(D) ORR lr、lr、#0x13 ;またはSVCモード用のモードビットをマスクインす

(D) MSR cpsr_c、lr ;新しいモードおよび割り込みビットを書き戻す
;*** INTRERUPT RE-ENABLE ***
;割り込みを再イネーブルする前のサイクルカウント=5*D+2*Mとする
;プロセスコンテキスト
STMDB sp!,{r0~r3,r12,lr}
.... ;次に割り込みを続け、サービスする
前に説明した従来技術のコードフラグメントと同じように、括弧内の文字はサイクル数を示し、SRSDB命令の横の文字2Mは2つのメモリサイクルであることを示す。
上記コードフラグメント内の種々の命令によって実行されるプロセスを略図で示す、図5A〜5Dを参照して、以下、このコードフラグメントについて説明する。
図4A〜4Eを参照して前に説明した例と同じように、この例では既に割り込みの例外が発生しており、よってプロセッサはレジスタ520にアクセスする割り込み作動モードに入っていると見なす。この割り込み作動モードからのプロセッサのリターンステートデータは図5A内にレジスタ530として表示されているリターンステートデータ内に記憶される。図5Aは割り込みスタック500およびスーパーバイザースタック510も示している。
コードフラグメントはこれまで説明した従来技術のコードフラグメントに含まれる命令に同一のSUB命令でスタートするが、この命令はこれまで説明したように、割り込みリンクレジスタLR_IRQが正しいリターンアドレスをポイントすることを保証するのに必要である。
次に、好ましい実施例によって提供される新しい命令、すなわちSRS命令は割り込み作動モードで作動しながらリターンステートデータを直接スーパーバイザースタック510にセーブするために実行される。以下、この命令のフォーマットについて詳細に説明する。しかしながら、この例「Decrement Before」におけるスーパーバイザースタックのアドレスモードを表示するために、SRS命令には文字DBが添付されていることに留意されたい。この命令はリターンステートデータをセーブすべきスタックを識別するフィールドも含み、本例におけるこのフィールドはスーパーバイザースタック510のためのスタックポインタSP_SVCを含む。最後に、命令の終了部にあるイクスクラメーションマークは、一旦リターンステートデータがセーブされると、スタックポインタを更新しなければならないことを示している。
一旦SRS命令が実行されると、割り込みスタックおよびスーパーバイザースタックの内容は図5Bに示されるようになる。特にスーパーバイザースタック510にはレジスタLR_IRQおよびSRSR_IRQの内容が追加され、スーパーバイザースタックポインタSP_SVCが更新されていることに留意すべきである。この段階では、割り込み作動モードからのリターンステートデータの内容はスーパーバイザースタックに記憶されているので、処理ユニットの作動モードをスーパーバイザーモードに変更することが可能である。更に、スーパーバイザースタック510にはこのリターンステートデータが直接記憶され、割り込みスタック500は空のままであるので、この時点で割り込みを再イネーブル化することは安全である。割り込みスタック500は空であるので、割り込みスタックをコンテキストスイッチングしなくても、すなわちタスクごとに別個の割り込みスタックを設けなくても、コンテキストスイッチングが認められる。従って、図3Aおよび3Bに示されているようなシステム内でこのプロセスを使用できる。
作動モードおよび再イネーブル可能な割り込みを変更するのに使用される4つの命令は、図5Cでは参照番号540がついている。図5Cはスーパーバイザー作動モードからのリターンステートを含むレジスタ560を備えた、スーパーバイザー作動モードからアクセス可能なレジスタ550を示している。
このポイントにおいてプロセスはプロセスコンテキストの残りをセーブし続けることができる。スーパーバイザースタックのうちの順次ロケーション内に関連するレジスタを記憶できるので、単一のSTM命令を介してこの動作を実行することができる。図5Cではこの命令は参照番号570によって表示されており、スーパーバイザーレジスタ550とスーパーバイザースタック510との間の種々のラインによってプロセスが略図で示されている。STM命令に添付された文字DBはスーパーバイザースタックがデクリメントビフォアアドレスモードで作動していることを示しており、STM命令内のスタックポインタIDの後のイクスクラメーションマークはスタックポインタを調節しなければならないことを示している。次に命令内で記憶すべきレジスタが識別される。
図5DはSTM命令を実行した後のスーパーバイザースタック510の内容を示す。スーパーバイザースタック510の内容はデータの順序が若干異なっているが、図4Eを参照して前に説明したスーパーバイザースタック410の内容と同じであることが理解できよう。従って、図5A〜5Dを参照して説明した好ましい実施例のプロセスは図4A〜4Eを参照して説明した従来技術のプロセスと同じ結果をもたらすことが理解できよう。従って、前記コードフラグメントから明らかなように、新しいSRS命令を含む好ましい実施例の技術によって、割り込みハンドラーは割り込みを再イネーブルできるようになるまでに5つのDタイプのサイクルおよび2つのMタイプのサイクルしかかからないよう保証できる。割り込みを再イネーブルできる前に必要な命令数を比較すると、好ましい実施例のアプローチを使用する割り込みハンドラーは従来技術のアプローチに従って実行するのに20の命令が必要であるのに対して、割り込みを再イネーブルできる前に6つの命令を実行するだけでよい。
従って、全体に本発明の好ましい実施例のアプローチを使用すると、割り込みハンドラーはより少ないDタイプのサイクル、より少ないMタイプのサイクルおよびより少ない命令しか必要としない。低速メモリシステムではMタイプのサイクルのほうがDタイプのサイクルよりもより低速であり、更に命令が実行されるごとに命令自体をフェッチするのに実行される追加メモリフェッチが必要となり得ることにも留意すべきである。
従って、DタイプのサイクルよりもMタイプのサイクルのほうが4倍低速であるシステム例を検討すると、このシステムは好ましい実施例の事実を使用した場合と使用しない場合とで割り込みハンドラーに対して次の性能指数を与える。次の式において、(D)はデータサイクル数を示し、(M)はメモリサイクル数を示し、(I)は実行される命令数を示し、命令の各々は付加的メモリフェッチを必要とする。
好ましい実施例の技術を利用しない場合:
11(D)+9(M)*4*20(I)*4=127サイクルとなり、
好ましい実施例の技術を使用した場合:
5(D)+2(M)*4+6(I)*4=37サイクルとなる。
以上で本発明の好ましい実施例のアプローチを利用する利点について説明したので、次に新しいSRS命令についてより詳細に説明する。特に本発明の好ましい実施例のSRS命令の簡略バッカス−ナウアー記法を次のように示す。
<COND> 説明 条件
EQ 等しい Z
NE 等しくない !Z
CS 桁上げセット C
HS 符号なし以上 C
CC 桁上げクリア !C
LO 符号なし小 !C
MI マイナス N
PL プラス !N
VS オーバーフローセット V
VC オーバーフロークリア !V
HI 符号なし大 C & !Z
LS 符号なし以下 !C │ Z
GE 以上 !(N ^ V)
LT 未満 N ^ V
GT より大 !Z & !(N ^ V)
LE 以下 Z │ (N ^ V)
AL 常時 1

<addr_mode> 説明
IA これより後をインクリメント(EAに等価)
EA 空昇順(IAに等価)
IB これより前をインクリメント(FAに等価)
FA フル昇順(IBに等価)
DB これより前をデクリメント(FDに等価)
FD フル降順(DBに等価)
DA これより後をデクリメント(EDに等価)
ED 空降順(DAに等価)

<fully_qualified_stack_pointer> 説明
SP_USER ユーザーモードスタックポインタ
SP_FIQ 高速割り込みリクエストスタッ
クポインタ
SP_IRQ 割り込みリクエストスタックポ
インタ
SP_SVC スーパーバイザースタックポインタ
SP_ABT アボートスタックポインタ
SP_UND 無定義スタックポインタ
当業者であれば、簡略バッカス−ナウアー記法に精通しているはずである。しかしながらここに簡単な説明をする。省略されたフォームでは、「{....}」内のアイテムはオプションアイテムを示し、アングル括弧「<....>」内のアイテムは図に示された記号の拡張と交換できる置換記号を示す。記号「│」はシンボルのリスト内のシンボルを分けるのに使用されており、これらシンボルのうちの1つを正確に置換記号として使用できることを示す「または」と解釈できる。
従って、SRS命令はプロセッサでの利用できるモードのうちの1つに属すスタックを特定する、<fully_qualified_stack_pointer>が指定するスタックへプロセッサのリターンステートをセーブすることが理解できよう。<fully_qualified_stack_pointer>の後に「!」記号が続く場合、このことは動作が完了した後に<fully_qualified_stack_pointer>が更新されることを示している。
ARMプロセッサの例を検討すると、6つの作動モードが得られる。すなわちユーザーモードと、スーパーバイザーモードと、アボートモードと、無定義モードと、2つの割り込みモード、すなわちIRQおよびFIQが得られる。従って、上記簡略バッカス−ナウアー記法に示めされているように、<fully_qualified_stack_pointer>は値SP_USER、SP_FIQ、SP_IRQ、SP_SVC、SP_ABTまたはSP_UNDのうちのいずれかをとり得る。
<COND>は作動を実行させるのに真となっていなければならない多数の条件のうちの1つを特定する。プロセッサがアクセスできるCPRレジスタは、以下、N、Z、V、Cと称す4つのフラグを示す。最後の代数学的演算の結果が負の場合、フラグNは1にセットされ、最後の代数学的演算の結果が0の場合、フラグZは1にセットされ、最後の代数学的演算の結果がオーバーフローした場合、フラグVは1にセットされ、最後の代数学的演算の結果が桁上げを生じさせた場合、フラグCは1にセットされる。SRS命令の上記簡略バッカス−ナウアー記法では、各値の説明と共に<COND>フィールドがとり得る種々の値およびCPSRレジスタで利用できるN、Z、VおよびCフラグに関し、このフィールドが何に一致するのかの判断を示すテーブルが提供される。したがって、このテーブルは実際にはCPSRレジスタ内に存在するN、Z、VおよびCフラグに基づき、命令を実行するかどうかをプロセッサがどのように判断するかを記述するものである。例として<COND>フィールドが値MIにセットされている場合、プロセッサはフラグNが1にセットされているかどうかを見るようにチェックし、1にセットされている場合、命令を実行し、そうでない場合、命令は実行されない。<COND>フィールドが特定されていない場合、このことは演算を常に実行すべきことを示す「AL」の<COND>を特定することと均等である。
<addr_mode>フィールドは作動のためのアドレス指定モードを特定し、好ましい実施例で利用できる種々のアドレス指定モードは命令の簡略バッカス−ナウアー記法に関連して上記のように記載される。前に述べたように、<fully_qualified_stack_pointer>はプロセッサの実行モードのうちの1つに属すスタックポインタの完全に許可された名称を特定する。
次は、簡略化バッカス−ナウアー記法から誘導できるSRS命令の例である。
SRSDB SP_SVC!
SRSEQDB SP_SVC!
SRSEQDB SP_SVC
図6は本発明の好ましい実施例に係わるデータ処理装置を内蔵するシステムを示すブロック図である。好ましい実施例ではデータ処理装置はCPU10内に設けられたCPUコア60のある形態をとる。CPUコア60はデータ処理命令を実行する処理ユニットおよびその処理ユニットがアクセスできる一組のレジスタ70を内蔵する。CPU10は一般にCPUコア60と、多数の別のオプションの素子、例えばメモリ管理ユニット(MMU)45およびキャッシュ50とを含む。
CPU10は一般にバス30を介して他の素子に接続され、従って、リードオンリーメモリ(ROM)40およびランダムアクセスメモリ(RAM)20に接続できる。ROM40は特にCPUコア60が実行する命令80を記憶するようになっている。本発明の好ましい実施例によれば、RAM20内には処理ユニットの各作動モードに対して設けられるスタック90を記憶できる。
本発明の好ましい実施例のこれまでの説明から、好ましい実施例を使用する結果、多数の利点が得られることが理解できよう。第1に、本発明の好ましい実施例を使用することによってコードサイズを小さくできる。前に述べた例では、好ましい実施例を使用すると、どのように割り込みハンドラーの開始時における命令数を20から6へ短縮できるかが示されている。更に好ましい実施例を使用する結果、一般に性能が改善される。再び上記例では、好ましい実施例は割り込みハンドラーの開始時のサイクルの数をどのようにして127から37に少なくできるかも示されている。サイクル数が少なくなることによって割り込みレイテンシーも小さくできる。この理由は、これらサイクルは一般に割り込みがディスエーブルされるクリティカルなポイントで生じるからである。
好ましい実施例の技術を利用する更に別の驚くべき利点は、この技術を使ってプロセッサの電力消費量を低減できることである。この電力消費量は携帯電話およびパーソナルデジタルアシスタント(PDA)などのバッテリー給電デバイスでは極めて重要なものである。これまで述べた例および説明に基づくシステムを検討し、高優先度の割り込みをサービスするのに10マイクロ秒の割り込み応答時間を維持するのに、常にこのシステムが必要であると仮定すると、公知の従来のアプローチを使用するシステムの場合、10マイクロ秒で127サイクルを実行できることを保証するためにシステムは充分な速度で作動しなければならないことが明らかである。しかしながら、システムが本発明の好ましい実施例の技術を使用する場合、10マイクロ秒で37サイクルを実行するのに充分な速度で作動するだけでよい。従って、次の式は必要とされる最低クロック速度を決定するものである。
好ましい実施例の技術を利用しない場合:
1.0E−5秒/127サイクル=7.874E−08秒/サイクル
1/7.874E−08=1.27E+7サイクル/秒=12.7MHz
となる。
好ましい実施例の技術を利用した場合:
1.0E−5秒/37サイクル=2.701E−08秒/サイクル
1/2.701E−08=3.7E+6サイクル/秒=3.7MHz
となる。
プロセッサによって消費される電力はほぼ周波数に対して線形であるので、好ましい実施例の技術を利用するシステムは好ましい実施例の技術を利用しない同様なシステムの電力の約29%(3.7÷12.8×100)しか利用しない。
以上で本発明の特定の実施例について説明したが、本発明はこの実施例だけに限定されるものではなく、本発明の範囲で多くの変形および追加を行うことが可能であることが明らかとなろう。例えば本発明の範囲から逸脱することなく、次の従属請求項の特徴と独立請求項の特徴とを種々組み合わせることができる。

Claims (18)

  1. 複数の作動モードを有し、各作動モードがその作動モードに関連するデータを記憶するための対応するスタックを有する、データ処理命令を実行するための処理ユニットを備え、
    前記処理ユニットが現在の作動モードからの処理ユニットのリターンステートデータを現在の作動モードと異なる作動モードに対応するスタックに書き込むよう、リターンステートデータ処理命令に応答自在である、データ処理装置。
  2. 前記リターンステートデータ処理命令が例外発生時に呼び出される、請求項1記載のデータ処理装置。
  3. 例外が所定の組の例外のうちのいずれかである、請求項2記載のデータ処理装置。
  4. 前記所定の組の例外が1つ以上の割り込みを含む、請求項3記載のデータ処理装置。
  5. 各作動モードのための処理ユニットのリターンステートデータを記憶するための複数のリターンステートレジスタを含む、一組のレジスタを更に備え、前記処理ユニットが現在の作動モードからの処理ユニットのリターンステートデータを含むリターンステートレジスタにしかアクセスできないようになっている、前の請求項に記載のデータ処理装置。
  6. 各スタックがそのスタック内のロケーションを識別する、そのスタックに関連するスタックポインタを有し、特定のスタックのための前記スタックポインタが対応する作動モードからしかアクセスできないようになっている、前の請求項に記載のデータ処理装置。
  7. 前記レジスタの組が各スタックのためのスタックポインタを記憶するための複数のスタックポインタレジスタを含み、前記処理ユニットがその現在の作動モードに対応するスタックのためのスタックポインタを含むスタックポインタレジスタにしかアクセスできないようになっている、請求項5に依存した時の請求項6記載のデータ処理装置。
  8. 前記リターンステートデータ処理命令が、処理ユニットのリターンステートデータを書き込むべきスタックを識別するためのスタック識別フィールドを含む、前の請求項に記載のデータ処理装置。
  9. 前記スタック識別フィールドが前記処理ユニットのリターンステートデータを書き込むべきスタックのためのスタックポインタを特定するようになっており、よってリターンステートデータをそのスタックに書き込む際に前記処理ユニットがそのスタック内の適当なロケーションにアクセスできるようにする、請求項8記載のデータ処理装置。
  10. 前記リターンステートデータ処理命令が、オプションの更新フィールドを含み、この更新フィールドが一旦リターンステートデータをスタックに書き込んだ場合にスタックポインタを更新すべきことを示すようにセットされている、請求項9記載のデータ処理装置。
  11. 前記リターンステートデータ処理命令が、前記リターンステートデータを書き込むべきスタックのアドレスモードを識別するためのアドレスモードフィールドを含む、請求項8〜10のいずれかに記載のデータ処理装置。
  12. 前記リターンステートデータ処理命令が前記リターンステートデータ処理命令を実行するための条件を特定するための条件フィールドを含み、よって条件が満たされた場合に前記リターンステートデータ処理命令が処理ユニットにしか実行できないようになっている、請求項8〜11のいずれかに記載のデータ処理装置。
  13. 現在の作動モードが例外モードであり、異なる作動モードが特権作動モードである、前の請求項に記載のデータ処理装置。
  14. 現在の作動モードが例外モードであり、異なる作動モードが例外モードに入る前の処理ユニットの作動モードである、前の請求項に記載のデータ処理装置。
  15. 前記リターンステートデータが、セーブされたプログラムカウンタおよびセーブされたプロセッサステータスを含む、前の請求項に記載のデータ処理装置。
  16. 複数の作動モードを有し、各作動モードがその作動モードに関連するデータを記憶するための対応するスタックを有する、データ処理命令を実行するための処理ユニットを備えたデータ処理装置を作動させるための方法において、
    現在の作動モードからの処理ユニットのリターンステートデータを現在の作動モードと異なる作動モードに対応するスタックに書き込むことにより、前記処理ユニットをリターンステートデータ処理命令に応答させる工程を備えた、データ処理装置を作動させる方法。
  17. データ処理装置が請求項16に記載の方法を実行するようになっている、コンピュータプログラム。
  18. 請求項17記載のコンピュータプログラムを備えたキャリア媒体。
JP2011158231A 2000-11-27 2011-07-19 データ処理命令を実行するためのデータ処理装置および方法 Pending JP2011216118A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0028869A GB2369464B (en) 2000-11-27 2000-11-27 A data processing apparatus and method for saving return state
GB0028869.6 2000-11-27

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2002545371A Division JP5295475B2 (ja) 2000-11-27 2001-09-24 データ処理命令を実行するためのデータ処理装置および方法

Publications (1)

Publication Number Publication Date
JP2011216118A true JP2011216118A (ja) 2011-10-27

Family

ID=9903938

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2002545371A Expired - Lifetime JP5295475B2 (ja) 2000-11-27 2001-09-24 データ処理命令を実行するためのデータ処理装置および方法
JP2011158231A Pending JP2011216118A (ja) 2000-11-27 2011-07-19 データ処理命令を実行するためのデータ処理装置および方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2002545371A Expired - Lifetime JP5295475B2 (ja) 2000-11-27 2001-09-24 データ処理命令を実行するためのデータ処理装置および方法

Country Status (13)

Country Link
US (1) US6904517B2 (ja)
EP (1) EP1337918B1 (ja)
JP (2) JP5295475B2 (ja)
KR (1) KR100848603B1 (ja)
CN (1) CN1227589C (ja)
AU (1) AU2001287927A1 (ja)
DE (1) DE60139567D1 (ja)
GB (1) GB2369464B (ja)
IL (2) IL155407A0 (ja)
MY (1) MY127357A (ja)
RU (1) RU2275679C2 (ja)
TW (1) TW556093B (ja)
WO (1) WO2002042914A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013161479A (ja) * 2012-02-08 2013-08-19 Arm Ltd セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法
US10025923B2 (en) 2012-02-08 2018-07-17 Arm Limited Data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains
US10083040B2 (en) 2012-02-08 2018-09-25 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
US10169573B2 (en) 2012-02-08 2019-01-01 Arm Limited Maintaining secure data isolated from non-secure access when switching between domains
US10210349B2 (en) 2012-02-08 2019-02-19 Arm Limited Data processing apparatus and method using secure domain and less secure domain

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69734399D1 (de) * 1996-01-24 2006-03-02 Sun Microsystems Inc Verfahren und vorrichtung zur stapel-cachespeicherung
US6880030B2 (en) * 2000-12-13 2005-04-12 Wind River Systems, Inc. Unified exception handling for hierarchical multi-interrupt architectures
US7313797B2 (en) * 2002-09-18 2007-12-25 Wind River Systems, Inc. Uniprocessor operating system design facilitating fast context switching
US7496896B2 (en) * 2003-07-17 2009-02-24 Computer Associates Think, Inc. Accessing return values and exceptions
ATE406613T1 (de) * 2004-11-30 2008-09-15 Koninkl Philips Electronics Nv Effiziente umschaltung zwischen priorisierten tasks
US7853960B1 (en) * 2005-02-25 2010-12-14 Vmware, Inc. Efficient virtualization of input/output completions for a virtual device
US7877629B2 (en) * 2005-06-01 2011-01-25 Sanmina-Sci Facilitating handling of exceptions in a program implementing a M-on-N threading model
TW200719141A (en) * 2005-11-07 2007-05-16 Cheertek Inc Flash memory access method and circuit of an embedded system
JP4961781B2 (ja) * 2006-03-14 2012-06-27 ソニー株式会社 情報処理装置、その起動方法およびプログラム
US7797681B2 (en) * 2006-05-11 2010-09-14 Arm Limited Stack memory selection upon exception in a data processing system
US7681022B2 (en) * 2006-07-25 2010-03-16 Qualcomm Incorporated Efficient interrupt return address save mechanism
US9652241B2 (en) * 2007-04-10 2017-05-16 Cambridge Consultants Ltd. Data processing apparatus with instruction encodings to enable near and far memory access modes
US7979685B1 (en) * 2007-11-27 2011-07-12 Oracle America, Inc. Multiple instruction execution mode resource-constrained device
US9645949B2 (en) * 2008-07-10 2017-05-09 Cambridge Consultants Ltd. Data processing apparatus using privileged and non-privileged modes with multiple stacks
US7853827B2 (en) * 2008-08-29 2010-12-14 International Business Machines Corporation Isotropic processor
GB2478733B (en) 2010-03-15 2013-08-14 Advanced Risc Mach Ltd Apparatus and method for handling exception events
US20120054773A1 (en) * 2010-08-31 2012-03-01 International Business Machines Corporation Processor support for secure device driver architecture
US9405637B2 (en) * 2011-01-18 2016-08-02 Texas Instruments Incorporated Locking/unlocking CPUs to operate in safety mode or performance mode without rebooting
US9202071B2 (en) 2012-02-08 2015-12-01 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
US9672164B2 (en) * 2012-05-31 2017-06-06 Nxp Usa, Inc. Methods and systems for transitioning between a user state and a supervisor state based on a next instruction fetch address
CN103268145B (zh) * 2013-03-06 2016-08-17 上海云间半导体科技有限公司 用于保存访存指令的虚拟地址的方法
GB2538091B (en) * 2015-05-07 2018-03-14 Advanced Risc Mach Ltd Verifying correct code execution context
GB2543306B (en) * 2015-10-14 2019-05-01 Advanced Risc Mach Ltd Exception handling
CN109409086B (zh) * 2018-09-21 2021-04-13 中国科学院信息工程研究所 基于新增指令的检测堆栈中返回地址被篡改的装置
CN109409083B (zh) * 2018-09-21 2021-04-13 中国科学院信息工程研究所 检测堆栈中返回地址被篡改的装置
CN115080122A (zh) * 2022-07-22 2022-09-20 飞腾信息技术有限公司 处理器、用于保存和恢复上下文数据的装置、方法及芯片

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01258040A (ja) * 1988-04-07 1989-10-16 Fujitsu Ltd スタック情報の退避,復元処理方式
JPH05108374A (ja) * 1991-10-18 1993-04-30 Matsushita Electric Ind Co Ltd マルチタスク実行装置
JPH06168145A (ja) * 1991-02-08 1994-06-14 Hitachi Ltd スタック制御方式及びマイクロコンピュータ
JPH1083305A (ja) * 1996-04-15 1998-03-31 Motorola Inc 自己整合スタック・ポインタを有するデータ処理システムおよびその方法
JPH10105415A (ja) * 1996-09-25 1998-04-24 Nippon Denki Micom Technol Kk リアルタイムos
JPH11143732A (ja) * 1997-11-06 1999-05-28 Hitachi Ltd マイクロコンピュータ及びエミュレータ

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3889243A (en) 1973-10-18 1975-06-10 Ibm Stack mechanism for a data processor
US4236204A (en) 1978-03-13 1980-11-25 Motorola, Inc. Instruction set modifier register
US4587632A (en) 1980-05-27 1986-05-06 At&T Bell Laboratories Lookahead stack oriented computer
US4922414A (en) 1982-12-17 1990-05-01 Symbolics Inc. Symbolic language data processing system
US4926322A (en) * 1987-08-03 1990-05-15 Compag Computer Corporation Software emulation of bank-switched memory using a virtual DOS monitor and paged memory management
DE3726192A1 (de) 1987-08-06 1989-02-16 Otto Mueller Stacksteuerung
US5136696A (en) 1988-06-27 1992-08-04 Prime Computer, Inc. High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions
US5440749A (en) 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
US5303378A (en) * 1991-05-21 1994-04-12 Compaq Computer Corporation Reentrant protected mode kernel using virtual 8086 mode interrupt service routines
US5640548A (en) * 1992-10-19 1997-06-17 Motorola, Inc. Method and apparatus for unstacking registers in a data processing system
US5455775A (en) 1993-01-25 1995-10-03 International Business Machines Corporation Computer design system for mapping a logical hierarchy into a physical hierarchy
GB2289353B (en) 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Data processing with multiple instruction sets
US5638525A (en) 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
US5752035A (en) 1995-04-05 1998-05-12 Xilinx, Inc. Method for compiling and executing programs for reprogrammable instruction set accelerator
US5619665A (en) 1995-04-13 1997-04-08 Intrnational Business Machines Corporation Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture
US5838948A (en) 1995-12-01 1998-11-17 Eagle Design Automation, Inc. System and method for simulation of computer systems combining hardware and software interaction
EP0976050B1 (en) 1996-01-24 2002-06-12 Sun Microsystems, Inc. Processor with array access bounds checking
EP0976029A2 (en) 1996-01-24 2000-02-02 Sun Microsystems, Inc. A processor for executing instruction sets received from a network or from a local memory
US6038643A (en) 1996-01-24 2000-03-14 Sun Microsystems, Inc. Stack management unit and method for a processor having a stack
US6026485A (en) 1996-01-24 2000-02-15 Sun Microsystems, Inc. Instruction folding for a stack-based machine
US5742802A (en) 1996-02-16 1998-04-21 International Business Machines Corporation Method and system for efficiently mapping guest instruction in an emulation assist unit
US6031992A (en) 1996-07-05 2000-02-29 Transmeta Corporation Combining hardware and software to provide an improved microprocessor
US5926832A (en) 1996-09-26 1999-07-20 Transmeta Corporation Method and apparatus for aliasing memory data in an advanced microprocessor
DE69723286T2 (de) 1996-11-13 2004-05-13 Paran, Arik, Sunnyvale Echtzeitprogramm-sprachbeschleuniger
US5937193A (en) 1996-11-27 1999-08-10 Vlsi Technology, Inc. Circuit arrangement for translating platform-independent instructions for execution on a hardware platform and method thereof
US5953741A (en) 1996-11-27 1999-09-14 Vlsi Technology, Inc. Stack cache for stack-based processor and method thereof
US6003038A (en) * 1997-03-31 1999-12-14 Sun Microsystems, Inc. Object-oriented processor architecture and operating method
US6009499A (en) 1997-03-31 1999-12-28 Sun Microsystems, Inc Pipelined stack caching circuit
US5875336A (en) 1997-03-31 1999-02-23 International Business Machines Corporation Method and system for translating a non-native bytecode to a set of codes native to a processor within a computer system
US6088786A (en) 1997-06-27 2000-07-11 Sun Microsystems, Inc. Method and system for coupling a stack based processor to register based functional unit
US5892966A (en) 1997-06-27 1999-04-06 Sun Microsystems, Inc. Processor complex for executing multimedia functions
US6003126A (en) 1997-07-01 1999-12-14 International Business Machines Special instruction register including allocation field utilized for temporary designation of physical registers as general registers
US6317872B1 (en) 1997-07-11 2001-11-13 Rockwell Collins, Inc. Real time processor optimized for executing JAVA programs
WO1999018484A2 (en) 1997-10-02 1999-04-15 Koninklijke Philips Electronics N.V. A processing device for executing virtual machine instructions
DE69839913D1 (de) 1997-10-02 2008-10-02 Koninkl Philips Electronics Nv Datenverarbeitungsgerät zur verarbeitung von befeh
US6009509A (en) 1997-10-08 1999-12-28 International Business Machines Corporation Method and system for the temporary designation and utilization of a plurality of physical registers as a stack
US6000029A (en) 1997-11-03 1999-12-07 Motorola, Inc. Method and apparatus for affecting subsequent instruction processing in a data processor
US6122638A (en) 1997-11-26 2000-09-19 International Business Machines Corporation Object-oriented processor and method for caching intermediate data in an object-oriented processor
US6070173A (en) 1997-11-26 2000-05-30 International Business Machines Corporation Method and apparatus for assisting garbage collection process within a java virtual machine
US6148391A (en) 1998-03-26 2000-11-14 Sun Microsystems, Inc. System for simultaneously accessing one or more stack elements by multiple functional units using real stack addresses
US6374286B1 (en) 1998-04-06 2002-04-16 Rockwell Collins, Inc. Real time processor capable of concurrently running multiple independent JAVA machines
FR2779842B1 (fr) * 1998-06-15 2001-07-13 Schlumberger Ind Sa Procede de gestion de l'execution d'un programme dans un dispositif a circuit integre
US6338134B1 (en) 1998-12-29 2002-01-08 International Business Machines Corporation Method and system in a superscalar data processing system for the efficient processing of an instruction by moving only pointers to data
JP4072271B2 (ja) * 1999-02-19 2008-04-09 株式会社日立製作所 複数のオペレーティングシステムを実行する計算機

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01258040A (ja) * 1988-04-07 1989-10-16 Fujitsu Ltd スタック情報の退避,復元処理方式
JPH06168145A (ja) * 1991-02-08 1994-06-14 Hitachi Ltd スタック制御方式及びマイクロコンピュータ
JPH05108374A (ja) * 1991-10-18 1993-04-30 Matsushita Electric Ind Co Ltd マルチタスク実行装置
JPH1083305A (ja) * 1996-04-15 1998-03-31 Motorola Inc 自己整合スタック・ポインタを有するデータ処理システムおよびその方法
JPH10105415A (ja) * 1996-09-25 1998-04-24 Nippon Denki Micom Technol Kk リアルタイムos
JPH11143732A (ja) * 1997-11-06 1999-05-28 Hitachi Ltd マイクロコンピュータ及びエミュレータ

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013161479A (ja) * 2012-02-08 2013-08-19 Arm Ltd セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法
US10025923B2 (en) 2012-02-08 2018-07-17 Arm Limited Data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains
US10083040B2 (en) 2012-02-08 2018-09-25 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
US10169573B2 (en) 2012-02-08 2019-01-01 Arm Limited Maintaining secure data isolated from non-secure access when switching between domains
US10210349B2 (en) 2012-02-08 2019-02-19 Arm Limited Data processing apparatus and method using secure domain and less secure domain

Also Published As

Publication number Publication date
US20020099933A1 (en) 2002-07-25
DE60139567D1 (de) 2009-09-24
GB2369464B (en) 2005-01-05
EP1337918A1 (en) 2003-08-27
CN1476559A (zh) 2004-02-18
RU2275679C2 (ru) 2006-04-27
GB0028869D0 (en) 2001-01-10
WO2002042914A1 (en) 2002-05-30
KR20030072550A (ko) 2003-09-15
IL155407A (en) 2008-03-20
IL155407A0 (en) 2003-11-23
AU2001287927A1 (en) 2002-06-03
JP2004514987A (ja) 2004-05-20
MY127357A (en) 2006-11-30
TW556093B (en) 2003-10-01
US6904517B2 (en) 2005-06-07
JP5295475B2 (ja) 2013-09-18
CN1227589C (zh) 2005-11-16
EP1337918B1 (en) 2009-08-12
KR100848603B1 (ko) 2008-07-28
GB2369464A (en) 2002-05-29

Similar Documents

Publication Publication Date Title
JP5295475B2 (ja) データ処理命令を実行するためのデータ処理装置および方法
US6044430A (en) Real time interrupt handling for superscalar processors
US5428779A (en) System and method for supporting context switching within a multiprocessor system having functional blocks that generate state programs with coded register load instructions
EP3754492A1 (en) Interrupt system for risc-v architecture
US20050015768A1 (en) System and method for providing hardware-assisted task scheduling
US20080201615A1 (en) Apparatus and computer program product for implementing atomic data tracing
JP2006338664A (ja) オペレーティングシステム初期化中においてコードを実行するためのシステム
JP2003502775A (ja) プロセッサのコンテンツ切替えおよびリスケジューリングを実施するシステムおよび方法
JP3970609B2 (ja) プロセッサシステム
US20060149940A1 (en) Implementation to save and restore processor registers on a context switch
WO2001038970A2 (en) Buffer memories, methods and systems for buffering having seperate buffer memories for each of a plurality of tasks
JP5289688B2 (ja) プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法
JP3088303B2 (ja) キャッシュ・メモリ・バンク制御装置
JPH0916409A (ja) マイクロコンピュータ
EP0297892A2 (en) Apparatus and method for control of asynchronous program interrupt events in a data processing system
JPH0756633B2 (ja) タスク切換え方式
EP1104899A2 (en) Data processing apparatus and method of controlling the same
JPS626329A (ja) デ−タ転送回路
JPH09319598A (ja) 低コストシグナルマスク制御方式
JPH04162135A (ja) データ処理装置
JP2002196938A (ja) 例外処理フロー用の装置及びその処理実行方法
JPS61184644A (ja) 仮想計算機システム制御方式
Carle CS61C: Machine Structures
JPH0486919A (ja) マイクロプログラム制御装置
JP2000076132A (ja) キャッシュメモリを備えた情報処理装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110818

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110818

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130308

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130612

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130906