JP6134742B2 - セキュアドメインおよび低セキュアドメインを有するデータ処理装置の例外処理 - Google Patents

セキュアドメインおよび低セキュアドメインを有するデータ処理装置の例外処理 Download PDF

Info

Publication number
JP6134742B2
JP6134742B2 JP2014556134A JP2014556134A JP6134742B2 JP 6134742 B2 JP6134742 B2 JP 6134742B2 JP 2014556134 A JP2014556134 A JP 2014556134A JP 2014556134 A JP2014556134 A JP 2014556134A JP 6134742 B2 JP6134742 B2 JP 6134742B2
Authority
JP
Japan
Prior art keywords
exception
data
processing
secure
registers
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
JP2014556134A
Other languages
English (en)
Other versions
JP2015506525A (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
Priority claimed from US13/368,419 external-priority patent/US9477834B2/en
Priority claimed from GB201217531A external-priority patent/GB201217531D0/en
Application filed by エイアールエム リミテッド, エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JP2015506525A publication Critical patent/JP2015506525A/ja
Application granted granted Critical
Publication of JP6134742B2 publication Critical patent/JP6134742B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)

Description

本技術分野は、データ処理の分野に関し、具体的には、機密データおよびコードの処理に関する。
多くのデータ処理システムおよびアーキテクチャは、無許可の個人または過程による機密データおよびコードセクションをアクセスから隔離し、保護する方法を提供する。セキュリティを提供できることが重要であるが、この保護と関連付けられる性能および回路領域のオーバーヘッドがある。
マイクロコントローラ等の小型システムでは、これらのオーバーヘッドを低く保つことが非常に重要であり、したがって、セキュリティのレベルと性能との間のある妥協点を定めることが必要になり得る。
データおよびコードをセキュアに保つ1つの方法は、Trustzoneアーキテクチャを有する、英国CambridgeのARM(登録商標)によって提供され、該アーキテクチャでは、セキュア状態および非セキュア状態(セキュアドメインおよび非セキュアドメインとも称される)があり、それらの状態間の移行のために例外命令が使用され、例外ハンドラがセキュア側のセキュリティを保護する。この手法は、高度なセキュリティを提供するが、セキュリティ状態を変更するために、ソフトウェア例外ハンドラの形態でのかなりのソフトウェアの介入が必要とされ、該ソフトウェアの介入は、システムの性能を低減させるとともに、全ての呼び出しが例外ハンドラを通してプロキシされなければならないので、セキュアソフトウェアのための外部アプリケーションプログラムインターフェースAPIを開発するために必要とされる労力の量を増加させる。同様に、セキュアドメインにある間に発生し、非セキュアドメインでの処理を必要とする例外もまた、セキュア例外ハンドラを通してプロキシされる必要があり、これは、制御が非セキュア例外ハンドラに渡る前に、セキュア状態が保護されることを可能にする。
米国特許第7966466号および米国特許公開第2008/0250216号は、代替のセキュアシステムを開示しているが、これは、データ保存がセキュア側および非セキュア側を有し、現在実行されているコードのこのデータ保存内の場所は、プロセッサが動作しているドメイン、したがって、アクセスが許可されたデータを決定する。
第1の態様から概観すると、本発明は、データ処理装置を提供し、該データ処理装置は、プログラムコードに応じてデータ処理動作を行うように構成される処理回路であって、例外処理を制御するための例外制御回路を備える処理回路とデータを記憶するように構成されるデータ保存であって、セキュア領域および低セキュア領域を備える複数の領域を備え、セキュア領域は、セキュアドメインで動作するときには処理回路によってアクセスすることができ、低セキュアドメインで動作するときには処理回路によってアクセスすることができないデータを記憶するためのものであるデータ保存と、データを記憶するように構成される複数のレジスタであって、第1サブセットのレジスタおよび第2サブセットのレジスタを含み、前記処理回路上で実行する前記プログラムコードにアクセスすることが可能であり、例外に応じて、前記例外が処理されたときに当該レジスタからのデータの後からの復元を可能にするために、当該レジスタからのそのデータの状態保存が要求される複数のレジスタと、を備え、処理回路によって行われるバックグラウンド処理による初期例外に応じて、例外制御回路は、例外に対応する例外処理ルーチンを行うために処理回路を起動させる前に、第1サブセットのレジスタから前記データ保存へのデータの状態保存を行うように構成され、例外処理ルーチンは、第2サブセットのレジスタから前記データ保存へのデータの状態保存を行う責任を持ち、また、セキュアドメインで処理回路によってバックグラウンド処理が行われた場合に、セキュアドメインから低セキュアドメインへの移行を行わせる第1の例外に応じて、例外制御回路は、低セキュアドメインで例外処理ルーチンを行うために処理回路を起動させる前に、第2サブセットのレジスタから前記データ保存へのデータの追加的な状態保存を行うように構成される。
バックグラウンド処理中に例外が発生したときに、バックグラウンド処理は、データ値をレジスタに配置し得、よって、例外が終了したときにこれらのデータ値が保持され、復元されることを可能にするために、システムは、レジスタからデータ保存への(一般的に、データ保存に提供されるスタックへの)データの状態保存を行い得る。先に論じたように、いくつかのシステムについては、達成されるセキュリティのレベルと処理性能との間の妥協点を達成することが重要である。このことは、例外に応じて状態保存を行うときにも当てはまる。
性能的理由から、第1のサブセットおよび第2のサブセットのレジスタでデータの状態保存を行うことが有用であり得る。本発明によれば、第1のサブセットからのデータの状態保存は、例外処理ルーチンを起動させる前に、ハードウェアの例外制御回路によって行うことができる。対照的に、例外処理ルーチン(すなわち、ソフトウェア)は、第2サブセットのレジスタからのデータの状態保存を行う責任を持ち得る。
しかしながら、セキュリティの観点から、例外処理ルーチンの制御下で第2サブセットのレジスタの状態保存は、あるときには問題を含むことがあり得る。例外がセキュアドメインから低セキュアドメインへの移行を行わせた後に、セキュアドメインで行われるバックグラウンド処理が続く場合、例外処理ルーチンが、第2サブセットのレジスタに配置されるセキュアデータをセキュアドメインにある間に修正し得る。
このセキュリティ違反を防止するために、本発明によれば、セキュアドメインでバックグラウンド処理が行われた場合にセキュアドメインから低セキュア(本明細書では、非セキュアとも称される)ドメインへの移行を行わせる、第1の例外が発生した場合、例外制御回路は、低セキュアドメインで例外処理ルーチンを起動させる前に、第1サブセットのレジスタに加えて、第2サブセットのレジスタからのデータの追加的な状態保存を行う。例外処理ルーチンを起動させる前に、第2サブセットのレジスタの状態を保存するためのハードウェア機構を提供することによって、低セキュアドメインでのソフトウェアによるこのデータの修正を防止することができる。
したがって、本手法は、例外に応じて状態保存を行うときに、セキュリティと性能の間の改善されたバランスを達成することができる。本発明のハードウェア機構は、セキュア例外ハンドラを通してプロキシすることを必要とすることなく、低セキュア例外の有効な処理を可能にする。
第1の例外に応じて、例外制御回路は、一実施形態において、例外処理ルーチンを行うために処理回路を起動させる前に、第2のサブセットレジスタをクリアするように構成される。これは、セキュアドメインにある間には、より低セキュアドメインの例外処理ルーチンが、第2サブセットのレジスタに配置されるいかなるデータにもアクセスすることができないことを意味する。
さらに、一実施形態において、該第1の例外に応じて、データ処理装置は、例外制御回路が例外処理ルーチンを行うために処理回路を起動させる前に、第1サブセットのレジスタがセキュアデータを含まないことを確実にするように構成される。これを達成することができるいくつかの方法がある。例えば、ハードウェアまたはソフトウェアのいずれかは、第1サブセットのレジスタがいかなるセキュアデータも含まないように、第1サブセットのレジスタがクリアされることを確実にし得る。あるいは、第1サブセットのレジスタは、例外処理ルーチンを行うために処理回路が起動される前に、単に非セキュアデータを含むように操作することができる場合があり得、その場合、第1サブセットのレジスタをクリアすることを必要としない場合がある。
本出願において、「呼び出し元レジスタ」および「呼び出し先レジスタ」という用語は、それぞれ、第1サブセットのレジスタおよび第2サブセットのレジスタを示すために使用され得る。
例外処理ルーチンは、第2サブセットのレジスタ(呼び出し先レジスタ)からのデータの状態保存を行う責任を持つが、例外処理ルーチンが第2のサブセットからのデータの状態保存を実際に行うことが必ずしも不可欠であるというわけではない。例えば、例外制御回路が第2サブセットのレジスタの追加的な状態保存を既に行っていた場合、例外処理ルーチンは、これらのレジスタの状態保存を省略することができる。
あるいは、ハードウェアによって追加的な状態保存が既に実行された場合であっても、例外処理ルーチンが呼び出し先レジスタからのデータの状態保存を常時行うことがより容易であり得る。レジスタは、ハードウェアによって既にクリアされている場合があるので、例外処理ルーチンは、何らかの方法で以前に呼び出し先レジスタに保持されたいかなるセキュアデータ値へのアクセスも有さず、また、クリアしたデータ値をデータ保存の低セキュア領域に保存すること、およびその後で(例外が完了したときに)クリアしたデータ値を復元することと関連付けられるオーバーヘッドは、例外処理ルーチンが、ハードウェアが追加的な状態保存を既に行ったかどうかを検出することを可能にするための機構を提供することと関連付けられるオーバーヘッド未満であり得る。
第1サブセットのレジスタ(呼び出し元レジスタ)および第2のサブセットレジスタ(呼び出し先レジスタ)に関して、一実施形態では、例外ハンドラの前後に保存される必要があるレジスタの全てが第2のサブセットにあるように、第1サブセットのレジスタが、0個のレジスタを備えることが可能である。この場合、大部分の例外について、例外制御回路によっていかなる状態保存も行われず、例外処理ルーチンは、全てのレジスタを第2のサブセットに保存する責任を持つ。しかしながら、セキュアドメインから低セキュアドメインへの移行を行わせる第1の例外に応じて、追加的な状態保存は、低セキュアドメインの例外処理ルーチンによるこのデータへのアクセスを防止するために、例外制御回路を使用して、第2のサブセット(保存される必要がある全てのレジスタ)をハードウェアに保存し得る。
現在の例外が完了した時点で、さらなる例外を保留することが可能である。この場合、処理回路は、現在の例外の前に行われていたバックグラウンド処理に戻る前に、さらなる例外をサービスし得る。この状況は、「テールチェイニング」と称され、さらなる例外は、「テールチェイン」例外と称される。
追加的な状態保存を起動させる第1の例外は、処理回路がバックグラウンド処理を行っている間に発生する、初期例外であり得る。あるいは、第1の例外は、それ自体が、初期例外の後であるがバックグラウンド処理に戻る前に処理される、テールチェイン例外であり得る。
本出願において、「バックグラウンド処理」という用語は、より高い優先度の例外によって割り込まれた処理を示すために使用される。例外処理ルーチン自体がより高い優先度の例外(本明細書では、先取り例外と称される)によって割り込まれた場合、割り込まれた例外処理ルーチン自体が先取り例外のための「バックグラウンド処理」になり得、先取り例外は、次いで、割り込まれる前に例外処理ルーチンによって使用されているデータの状態保存を起動させ得る。
テールチェイニングが使用される一実施形態では、テールチェイン例外と関連して必要とされる状態保存の量を削減することが可能である。具体的には、一実施形態において、例外制御回路は、その対応する例外処理ルーチンがまだ行われている現在の例外よりも低い優先度の新しい例外に応じて、処理回路をバックグラウンド処理に戻す前に、テールチェイン例外として新しい例外の処理を制御するように構成される。さらに、例外制御回路は、該現在の例外が該セキュアドメインで実行される場合を除いて、新しい例外の処理を制御するときに、いかなるさらなる状態保存動作も行わないように構成され、該新しい例外が、該低セキュアドメインへの切り替えを示し、該バックグラウンド処理が、該セキュアドメインで行われる、そのすぐ後に、該例外制御回路は、該現在の例外のための例外処理ルーチンの完了に従って、該第2サブセットのレジスタからのデータの該追加的な状態保存を行い、また、新しい例外に対応する例外処理ルーチンを行うために処理回路を起動させる前に、該第2サブセットのレジスタがクリアされることを確実にするように構成される。先に述べたように、第1サブセットのレジスタをクリアすることは、実現例に依存して、必要である場合もあれば、必要でない場合もある。そのようなアプローチは、非セキュアのテールチェイン例外が、セキュアバックグラウンド処理における割り込みをそれ自体が行わせたセキュア例外に続くときに、データのセキュリティを維持することを可能にする。
さらに、テールチェイン例外を処理するときに、効率性を状態復元動作と関連させることもできる。例えば、一実施形態において、例外制御回路は、該現在の例外が該低セキュアドメインで実行される場合を除いて、新しい例外の処理を制御するときに、いかなる状態復元動作も行わないように構成され、該新しい例外が、該セキュアドメインへの切り替えを示し、該バックグラウンド処理が、該セキュアドメインで行われ、そのすぐ後に、該例外制御回路は、該現在の例外のための例外処理ルーチンの完了に従って、新しい例外に対応する例外処理ルーチンを行うために処理回路を起動させる前に、該第2サブセットのレジスタの中へのデータの状態復元動作を行うように構成される。
先に述べたように、現在の例外が処理されている間に発生するより高い優先度の例外は、先取り例外として処理される。現在の例外の処理においてそのような先取り例外が初期に発生した場合、具体的には、例外制御回路が、現在の例外に対して例外処理ルーチンを行うために処理回路を起動させる前に、先に述べた状態保存または追加的な状態保存動作をまだ処理している間、一実施形態では、例外制御回路の状態保存および追加的な状態保存動作が修正される可能性がある。具体的には、一実施形態において、第2サブセットのレジスタの追加的な状態保存を行っている間に、該第1の例外より高い優先度を有する先取り例外が発生し、かつ、先取り例外が、セキュアドメインから低セキュアドメインへの移行を必要としない場合、例外制御回路は、先取り例外の例外処理ルーチンを処理するために処理回路を起動させる前に、追加的な状態保存を逆転させるように構成される。
代替として、または加えて、現在の例外が、セキュアドメインから低セキュアドメインへの移行を行わせない場合、および現在の例外と関連付けられる例外処理ルーチンの処理が始まる前に、現在の例外よりも高い優先度を有し、かつセキュアドメインから低セキュアドメインへの移行を必要とする先取り例外が発生した場合、例外制御回路は、先取り例外の例外処理ルーチンを処理するために処理回路を起動させる前に、第2サブセットのレジスタからのデータの追加的な状態保存を追加的に行うように構成され得る。
例外制御回路が現在の例外に関して任意の必要とされる状態保存または追加的な状態保存を行った後、およびその現在の例外に対する例外処理ルーチンを行うために処理回路が起動された後、その例外処理ルーチンが完了する前に、先取り例外が発生した場合、一実施形態において、先取り例外の例外処理ルーチンを行うために処理回路を起動させる前に、該第1サブセットのレジスタの、または該第1サブセットのレジスタおよび該第2サブセットのレジスタの該状態保存が必要とされるかどうかを決定するときに、例外制御回路は、該バックグラウンド処理として現在の例外を扱うように構成される。
一実施形態において、データ保存は、セキュア領域にセキュアスタックを含み、低セキュア領域に低セキュアスタックを含む、複数のスタックを備える。そのような実施形態において、第1サブセットのレジスタからのデータの状態保存、および第2サブセットのレジスタからのデータの追加的な状態保存を行うときに、例外制御回路は、該バックグラウンド処理を行うときに処理回路が動作していたドメインのセキュリティに対応するセキュアスタックおよびより低セキュアスタックのうちの1つに、データを保存するように構成される。
一実施形態において、データ処理装置はさらに、該複数のレジスタのうちのどれが、現在実行しているセキュアデータを記憶するためのコードによる使用に利用可能であるのかを示す、セキュア構成値を記憶するためのセキュア構成の記憶場所を備え、セキュアドメインから低セキュアドメインへの移行を行わせる例外に応じて、例外制御回路は、該第2サブセットのレジスタ内に、該セキュア構成値によって示されるレジスタの1つ以上を含むように構成される。したがって、このことは、少なくとも第2サブセットのレジスタを形成するレジスタに関するいくらかの構成のし易さを可能にし、したがって、例外制御回路によって行われる追加的な状態保存動作をどのレジスタが受けるかについていくらかの構成のし易さを可能にする。
一実施形態において、データ処理装置はさらに、例外戻り値を記憶するための記憶場所を備え、該処理回路は、該バックグラウンド処理から初期例外の取得時に、該データ処理装置が動作しているドメインを示すために、該例外戻り値内のドメイン値を設定するように構成され、該例外制御回路は、該ドメイン値に依存して、該レジスタのうちのどれが状態保存または状態復元動作を受けるべきかを決定する。これは、例外制御回路が、任意の特定の状況において状態保存が必要とされるか、および/または追加的な状態保存が必要とされるか、を決定することを可能にするための単純な機構を提供する。
第2の態様から概観すると、本発明は、データ処理装置上でデータを処理する方法を提供し、該データ処理装置は、プログラムコードに応じてデータ処理動作を行うための処理回路であって、例外処理を制御するための例外制御回路を備える処理回路とデータを記憶するためのデータ保存であって、セキュア領域および低セキュア領域を含む複数の領域を備え、セキュア領域は、セキュアドメインで動作するときには処理回路によってアクセスすることができ、低セキュアドメインで動作するときには処理回路によってアクセスすることができないデータを記憶するためのものであるデータ保存と、データを記憶する用に構成される複数のレジスタであって、第1サブセットのレジスタおよび第2サブセットのレジスタを含み、処理回路上で実行するプログラムコードにアクセスすることが可能であり、例外に応じて、例外が処理されたときに当該レジスタからのデータの後からの復元を可能にするために、当該レジスタからのそのデータの状態保存が要求される複数のレジスタと、を備え、該方法は、処理回路によって行われるバックグラウンド処理による初期例外に応じて、例外に対応する例外処理ルーチンを行うために処理回路を起動させる前に、第1サブセットのレジスタからデータ保存へのデータの状態保存を行うために、例外制御回路を利用することであって、例外処理ルーチンは、第2サブセットのレジスタからデータ保存へのデータの状態保存を行う責任を持つように利用することと、セキュアドメインで処理回路によってバックグラウンド処理が行われた場合に、セキュアドメインからより低セキュアドメインへの移行を行わせる第1の例外に応じて、低セキュアドメインで例外処理ルーチンを行うために処理回路を起動させる前に、第2サブセットのレジスタからデータ保存へのデータの追加的な状態保存を行うために、例外制御回路を利用することと、を含む。
第3の態様から概観すると、本発明は、データ処理装置を提供し、該データ処理装置は、プログラムコードに応じてデータ処理動作を行うための処理手段であって、例外処理を制御するための例外制御手段を備える処理手段とデータを記憶するためのデータ保存手段であって、セキュア領域および低セキュア領域を含む複数の領域を備え、セキュア領域は、セキュアドメインで動作するときには処理手段によってアクセスすることができ、低セキュアドメインで動作するときには処理手段によってアクセスすることができないデータを記憶するためのものであるデータ保存手段と、データを記憶するように構成される複数のレジスタ手段であって、第1サブセットのレジスタ手段および第2サブセットのレジスタ手段を含み、処理手段上で実行するプログラムコードにアクセスすることが可能であり、例外に応じて、例外が処理されたときに当該レジスタ手段からのデータの後からの復元を可能にするために、当該レジスタ手段からのそのデータの状態保存が要求される複数のレジスタ手段と、を備え、処理手段によって行われるバックグラウンド処理による初期例外に応じて、例外制御手段は、例外に対応する例外処理ルーチンを行うために処理手段を起動させる前に、第1サブセットのレジスタ手段からデータ保存手段へのデータの状態保存を行い、例外処理ルーチンは、第2サブセットのレジスタ手段からデータ保存手段へのデータの状態保存を行う責任を持ち、また、セキュアドメインで処理手段によってバックグラウンド処理が行われた場合、セキュアドメインからより低セキュアドメインへの移行を行わせる第1の例外に応じて、例外制御手段は、低セキュアドメインで例外処理ルーチンを行うために処理手段を起動させる前に、第2サブセットのレジスタ手段からデータ保存手段へのデータの追加的な状態保存を行う。
以下、単なる例として、添付図面に示されているその実施形態を参照して、本発明をさらに説明する。
セキュア領域および非セキュア領域を有するデータ保存を有する、一実施形態によるデータ処理装置を示す図である。 データ処理装置の1組のレジスタが、一実施形態に従って、どのように呼び出し元レジスタおよび呼び出し先レジスタに分割され得るのかを概略的に図示する図である。 一実施形態に従って、例外制御回路によって行われるスタッキング動作およびスタッキング解除動作を概略的に図示する図である。 一実施形態に従って、例外制御回路によって行われるスタッキング動作およびスタッキング解除動作を概略的に図示する図である。 コード実行中の種々の異なるシナリオに対する例外(この実施例では、割り込み)の取得を概略的に示す図である。
一実施形態に従う、初期例外を受け取り、次いでさらなる例外を受け取ったときに保存される状態を示す表である。 例示的な実施形態について、例外を取得するために必要とされるドメインの移行に依存して、例外の取得時にその状態がスタックに保存されるレジスタを示す図である。 一実施形態に従う、2つの例示的なテールチェイニングシナリオを図示する図である。 一実施形態に従う、2つの例示的なテールチェイニングシナリオを図示する図である。 一実施形態に従う、2つのさらなるテールチェイニングシナリオを図示する図である。 一実施形態に従う、2つのさらなるテールチェイニングシナリオを図示する図である。
一実施形態に従う、2つの初期先取りシナリオを図示する図である。 一実施形態に従う、2つの初期先取りシナリオを図示する図である。 一実施形態に従って先取り例外を処理するときに使用することができる、分解手法を概略的に図示する図である。 一実施形態に従ってセキュリティビットを含む例外戻り値を記憶するための、リンクレジスタの使用を概略的に図示する図である。 一実施形態に従って例外の受け取り時に行われるスタッキング動作を図示するフロー図である。 一実施形態に従って例外の完了時に行われるスタッキング解除動作を図示するフロー図である。
図1は、例えばマイクロコントローラであり得る、データ処理装置10を示す。このデータ処理装置は、命令を処理するための処理回路20と、処理回路20によって処理されたデータを記憶するための、さらには、処理回路20が実行するプログラムコードを記憶するためのデータ保存30とを備える。
データ保存30は、異なるセキュリティの2つの領域、すなわち、セキュア領域32および非セキュア領域34(本明細書において、低セキュア領域とも称される)を有する。セキュア領域32に記憶されるデータは、それを実行しているときに、非セキュア領域34に記憶されるコードにアクセスできない。
データ処理装置10はまた、セキュア領域32および非セキュア領域34へのアクセスを制御するメモリ保護ユニットMPU40も有する。この制御は、メモリ保護ユニットを通して行われ得るが、他の実施形態では、処理装置内の回路によってより分散した様式で行われ得、該処理装置は、現在実行されているコードが記憶されている領域を監視し、また、このことに依存して、メモリの異なる領域へのアクセスを制御する。
この実施形態において、処理回路20を実行しているドメインのセキュリティは、現在実行されているコードが記憶されている領域から決定される(また、現在の動作のドメインを決定するための他の手法も可能である)。したがって、セキュアデータ保存32に記憶されるセキュアプログラムコードは、セキュアドメインで実行され、データ値を記憶するためにセキュアスタック36を使用する。同様に、非セキュアデータ保存34に記憶される非セキュアコードは、非セキュアドメイン(本明細書において、低セキュアドメインとも称される)で実行され、実行中に、データ値を記憶するための非セキュアスタック38を使用する。
処理回路20は、実行される命令をフェッチするためのフェッチ回路22を有する。また、これらの命令を復号化するための復号回路24、および該命令を実行するための実行回路26も有する。実行される命令は、メモリ保護ユニットMPU40を介して、フェッチ回路22によってデータ保存30からフェッチされる。命令およびデータは、セキュア領域および非セキュア領域へのアクセスを制御し、非セキュア側からセキュアデータを隔離するMPU40を介して検索される。
この実施形態では、データ処理中に使用される汎用レジスタを有するレジスタバンク60がある。これらの汎用レジスタは、どの命令が次に実行されるのかを示すプログラムカウンタPCと、スタックのどの地点に現在のスタックフレームが位置するのかを示すスタックポインタSPとを有する。この実施形態では、セキュア側のスタックおよび非セキュア側のスタックがあるので、セキュアスタックポインタSSPおよび非セキュアスタックポインタNSPがあるが、どの時点においても、実行されているプログラムは、これらのうちの1つだけしか直接見ることができない。いくつかの実施形態において、各スタックについて複数のスタックポインタがあり得るが、同じく、どの時点においても、1つだけしか見ることができないことに留意されたい。また、レジスタバンク60には、処理回路20によって処理されているデータ値を記憶するための汎用レジスタもある。この実施形態において、これらは、R0〜R12の記号が付される。
レジスタバンク60はまた、例外を取得したとき、または関数が呼び出されたときに戻り値を記憶するために使用され得るリンクレジスタ65も備える。戻り値は、システムが、戻りが例外戻りであるのか、関数戻りであるのかを決定すること、および例外および関数からの戻りに対して何の処理が必要とされるのかを決定することを可能にする。異なる種類の戻り値が使用され得、該戻り値としては、例外戻りを示し、バックグラウンド処理が処理されていたドメインのセキュリティレベルの指示等の情報を含むことができる、例外戻り(EXC_RETURN)値が挙げられ、プロセッサが、例外戻りをどのように処理するのか、例えば、状態を復元するときにどのスタックにアクセスするか、およびどれくらいのレジスタをロードする必要があるのかを決定することを可能にすることができる。
図1はまた、浮動小数点レジスタ等の追加的な特殊目的レジスタを有する追加的なレジスタバンク64も示す。一実施形態において、追加的なレジスタバンク64のレジスタのうちのどれかがセキュアデータを記憶することができるのかを識別するために、ある値をセキュア構成レジスタ(SCR)62に設定することができ、そしてその場合、それらのレジスタは、セキュアドメインから低セキュアドメインへの移行、およびその逆の移行を制御するときに管理する必要がある、(レジスタバンク60のレジスタとともに)1組のレジスタの一部を形成するとみなされる。
説明される実施形態によれば、セキュリティドメイン間を移行するために使用することができる1つの機構は、例外機構である。この機構によれば、例外の発生時に、現在のソフトウェアルーチンの実行が一時的に停止され、代わりに、実行は、例外を処理するために使用される例外処理ルーチンに分岐し、該例外処理ルーチンは、例外発生のタイプに依存する。例外処理ルーチンが実行されると、例外発生の結果として一時的に停止させた元のソフトウェアルーチンに戻すために、次いで、例外戻りが使用される。
例外制御回路28は、例外の取得を制御するために提供され、これらの例外が、高セキュアドメインからより低セキュアドメインへの移行をもたらす場合、これらのレジスタに記憶されるデータが非セキュア側で利用できるようになることを回避するために、例外を取得する前に、機密データを記憶し得る1組のレジスタがクリアされる。これらのレジスタのいくつかまたは全てに記憶される状態は、例外制御回路28の制御下で、セキュアスタック上に記憶され、よって、例外からの戻り時にその状態を復元することができる。
図1において、データ保存30は、単一のセキュア領域と、単一の非セキュア領域とを含むが、本明細書で説明される手法は、2つを超える異なるセキュリティ領域を備える異なる実現例にも等しく適用することができる。
また、図1は、例外制御回路28が実行ステージ26等の処理回路20の他の部分から分離しているように示しているが、実際には、例外制御回路28は、例外の処理を制御するために、処理回路20のいくつかの要素を少なくとも部分的に再使用し得る。
図2では、セキュアドメインから低セキュアドメインへの移行、およびその逆の移行を制御するときに管理する必要がある1組のレジスタ100が、概略的に図示される。説明される実施形態によれば、これらのレジスタのいくつかは、呼び出し元レジスタ110として定義されるが、レジスタの他のものは、呼び出し先レジスタ120として定義される。呼び出し元レジスタは、例外処理ルーチンを実行するドメインに関係なく、例外制御回路28が、スタック上へ状態を保存する責任を常時持つレジスタである。デフォルトで、例外処理ルーチンは、次いで、呼び出し先レジスタを状態保存する責任を持つ。具体的には、例外処理ルーチンは、次いで、例外処理ルーチンを実行しているドメインと関連付けられるスタック上へ呼び出し元レジスタの状態を保存する。さらに、例外処理ルーチンは、次いで、例外戻りを発行する前に、(一般的に、スタックからの呼び出し先レジスタを関連するレジスタに戻すようにコピーすることによって)そのような呼び出し先レジスタの状態を復元する責任を持つ。
しかしながら、説明される実施形態によれば、例外がセキュアドメインからより低セキュアドメインへの移行を必要とし、バックグラウンド処理がセキュアドメインで行われた状況において、例外制御回路28は、追加的に、処理回路が例外処理ルーチンの実行への移行を行わせる前に、セキュアスタック36のスタックフレーム内の呼び出し先レジスタを状態保存する責任を持つ。
先に論じたように、SCRレジスタ62の内容は、セキュアデータを記憶するためにどのレジスタが使用され得るか、およびしたがって、どのレジスタを1組のレジスタ100内に含める必要があるのかを定義する。一実施形態において、SCRレジスタ62の内容は、汎用レジスタ60に加えて、追加的な特殊目的レジスタ64のいずれかも1組のレジスタ100内に含めるかどうかを識別する。
図3Aは、3つの異なるシナリオについて、例外の発生時およびその後のその例外完了時の例外制御回路の動作を図示する。第1のシナリオは、バックグラウンド処理がセキュアドメインにおいて行われ、例外が、セキュアドメインで例外処理ルーチンによって処理される場合であり、第2のシナリオは、バックグラウンド処理が非セキュアドメインにおいて行われ、例外が、セキュアドメインで例外処理ルーチンによって処理される場合であり、そして第3のシナリオは、バックグラウンド処理が非セキュアドメインにおいて行われ、例外が、非セキュアドメインで例外処理ルーチンによって処理される場合である。
これらの3つのシナリオのそれぞれにおいて、バックグラウンド処理130が例外によって割り込まれたときに、例外制御回路28は、例外を処理するために必要とされる例外処理ルーチン140を行うために処理回路を起動させる前に、地点135で、呼び出し元レジスタからのデータを、バックグラウンド処理が行われているドメインと関連付けられるスタック上にスタックするように構成される。例外の完了時に、地点150でバックグラウンド処理を再開する前に、例外制御回路はまた、地点145で、以前にスタックしたデータを関連スタックから呼び出し元レジスタに戻すようにスタック解除する。
例外処理ルーチンは、一般的に、例外処理ルーチン中にこれらのレジスタを再使用する前に、呼び出し先レジスタからのデータをスタックし、その後で、例外処理ルーチンの終了前に、そのデータを呼び出し先レジスタに戻すようにスタック解除する責任を持つ。
図3Aの実施例において、呼び出し元レジスタは、特定の実現例に依存して、例外処理ルーチンが実行される前に、ハードウェアによってクリアされる場合もあれば、そうでない場合もある。一実施形態において、3つのシナリオは、例外を取得したときにドメインの移行をもたらさないか、または非セキュアドメインからセキュアドメインへの移行だけをもたらすか、のいずれか、および一実施形態において、セキュアドメインが非セキュアデータを見ることを許可されることを想定しているので、呼び出し元レジスタの内容はクリアされない。
図3Bは、バックグラウンド処理がセキュアドメインで処理されており、例外が非セキュア領域への移行を必要とするシナリオについて、例外の発生時およびその後のその例外の完了時の例外制御回路の動作を図示する。この実施例において、バックグラウンド処理160が例外によって割り込まれたときに、例外処理回路は、地点165で、呼び出し元レジスタからのデータをセキュアスタック上にスタックするように構成され、加えて、地点170で、呼び出し先レジスタからのデータをセキュアスタック上にスタックするように構成される。例外制御回路はまた、次いで、例外処理ルーチン175を行うために処理回路を起動させる前に、呼び出し元レジスタおよび呼び出し先レジスタの内容がクリアされることを確実にする。故に、このシナリオにおいて、非セキュア例外処理ルーチンは、呼び出し元レジスタまたは呼び出し先レジスタに以前に保持されたセキュアデータへのいかなるアクセスも有しない。
例外処理ルーチンの完了時に、地点190で、バックグラウンド処理を再開する前に、例外制御回路は、次いで、地点180で、以前にスタックした呼び出しデータをセキュアスタックから、呼び出し先レジスタに戻すようにスタック解除し、また、地点185で、以前にスタックしたセキュア呼び出しデータをセキュアスタックから呼び出し元レジスタに戻すようにスタック解除する。
特定の一実施形態において、非セキュア例外処理ルーチンは、それでも、呼び出し先レジスタの状態を通常通り保存するように構成することができるが、このシナリオにおいて、それらの呼び出し先レジスタは空であり、故に、例外処理ルーチンは、単にクリア値を非セキュアスタックに記憶するだけであり、この値は、後で、例外戻りを発行する前に、レジスタの中へ復元する。
上で説明されるように、アーキテクチャにおけるデフォルト位置として、レジスタ状態の一部は、例外(例えば、割り込み)が発生し、完了したきに、ハードウェアによって自動的に保存され、復元される。そのようなアーキテクチャを、レジスタ状態全体またはセキュアドメインが使用するレジスタ状態の少なくとも全てを保存し、クリアするように拡張することによって、割り込みがセキュアから非セキュアへの移行を行わせるイベントにおいて、ハードウェアは、例外の前後にセキュリティを維持することができる。
上の手法を使用することにより、例外制御回路に、呼び出し元レジスタおよび呼び出し先レジスタの全てを(単に、呼び出し元保存レジスタの代わりに)スタックにプッシュさせ、次いで、非セキュア状態に切り替え、例外処理ルーチン(割り込みの例では、割り込みベクトル)にジャンプする前にそれらの値をクリアするために、自動レジスタスタッキングシステムを拡張することによって、セキュア状態を通して割り込みをプロキシするための要件を取り除くことが可能である。割り込み待ち時間をできるだけ低く保つために、セキュア状態から非セキュア状態に移行するときに、追加的なレジスタ状態だけがスタック上へプッシュされる。これは、より高い優先度の例外(いわゆる、先取り例外)が例外処理中に発生したときに、またはテールチェイニング例外を処理するときに、いくらかの複雑さをもたらす。図4は、いくつかの実施例を示す。
第1の実施例において、バックグラウンドプログラムコードは、セキュア状態で実行され、第1のセキュア割り込みを受け取る。レジスタ(すなわち、呼び出し元レジスタ)のサブセットは、セキュアスタックに保存され、次いで(第1のセキュア割り込みが、適切な割り込みベクトルを介してまだ処理されている間に)非セキュアドメインで処理することを必要とする第2のより高い優先度の割り込みを受け取る。それは、非セキュアドメインでの処理を必要とするので、セキュアレジスタの中のどの情報も、新しい割り込みベクトルルーチンで見ることができてはならず、したがって、全てのセキュアレジスタ(呼び出し元レジスタおよび呼び出し先レジスタの双方)をセキュアスタックに保存し、次いで、この割り込みを取得する前にクリアしなければならない。第2の割り込みが完了したときに、処理は、完了していない初期のセキュア割り込みに戻り、第2の割り込みに応じてセキュアスタックにプッシュされたレジスタは、その時点で、セキュアスタックをポップすることによって復元される。次いで、この第1のセキュア割り込みを完了することができ、そのすぐ後に、スタックにプッシュされた元のサブセットを、次いで、セキュアバックグラウンド処理を再開する前に、セキュアスタックをポップすることによって復元することができる。
第2の実施例において、第2の割り込みは、第1の割り込みよりも低い優先度を有し、故に、第1の割り込みは、したがって、非セキュアの第2の割り込みを取得する前に完了する。第1の割り込みが完了すると、残りのレジスタ(すなわち、呼び出し先レジスタ)がセキュアスタックにプッシュされ、非セキュア割り込みを取得する前に、全てのレジスタがクリアされる。この時点で、呼び出し元レジスタおよび呼び出し先レジスタの双方がクリアされることが重要であるが、例外制御回路は、例えば呼び出し元レジスタが既に先にクリアされている場合があるので、実際には、この段階で全てのレジスタをクリアする必要がない場合がある。非セキュア割り込みの終了時点で、セキュアスタックにプッシュされたレジスタの全てが復元される。
第3の実施例は、セキュア割り込みを受け取り、そのすぐ後に、非セキュアスタックへのレジスタ(呼び出し元レジスタ)の部分的な保存がある非セキュアバックグラウンドコードを示す。次いで、より高い優先度を有する第2の非セキュア割り込みを受け取った場合、セキュアレジスタ(呼び出し元および呼び出し先)の全てを、セキュアスタックにプッシュし、それを取得することができるようになる前にクリアする必要がある。非セキュア割り込みが完了したときに、全てのセキュアレジスタがスタックからポップされることが必要であり、次いで、セキュア割り込みが完了したときに、非セキュアレジスタの元のサブセットがポップされる。
第4の実施例は、呼び出し元保存レジスタをセキュアスタックにプッシュさせるセキュア割り込みを受け取るが、この過程が完了する前に、第2のより高い優先度の非セキュア割り込みが発生するセキュアバックグラウンドコードを示す。この第2の割り込みは、呼び出し元レジスタがスタックされた後に、残りのレジスタ(すなわち、呼び出し先レジスタ)をセキュアスタック上へプッシュさせ、結果として、全てのレジスタのプッシュが行われる。全てのレジスタは、次いで、非セキュア割り込みを取得する前にクリアされる。この割り込み完了時に、呼び出し先保存レジスタが、セキュア割り込みを取得する前に、セキュアスタックからポップされる。セキュア割り込みが完了すると、元の呼び出し元レジスタがセキュアスタックからポップされる。
図5は、潜在的な割り込みおよび行うことが必要である状態保存を示す表を示す。これに関して、「サブセットをプッシュする」は、呼び出し元保存レジスタのサブセットをスタック上へプッシュすることであり、「残りをプッシュする」は、呼び出し先保存レジスタのサブセットをスタック上へプッシュすることであり、また、「全てをプッシュする」は、呼び出し元レジスタ状態および呼び出し先レジスタ状態の双方をスタック上へプッシュすることである。これに関して、いくつかのレジスタが機密データを記憶するために利用できず、それが分かっている場合、これらのレジスタは、スタック上へプッシュすることが必要でない場合がある。
表において、「例外エントリ」の欄は、初期割り込みの例外ベクトルへの分岐の前に、初期割り込みよりも高い優先度を有するさらなる割り込みが発生した場合に(本明細書において、初期先取りシナリオと称される)、どの状態がスタック上へプッシュされるのかを識別する。「例外戻り」の欄は、初期割り込み以下の優先度を有するさらなる割り込みが発生し、故に、初期割り込みが完了するまでさらなる割り込みが取得されない場合に(本明細書において、テールチェイニングシナリオと称される)、どの状態がプッシュ、ポップ、またはクリアされるのかを識別する。表で識別されるアクションは、一般的に、例外制御回路ハードウェア28によって行われるアクションであり、バックグラウンド処理が非セキュアドメインで行われた状況において、セキュア割り込みに続く非セキュア割り込みのテールチェイニングと関連付けられる呼び出し元レジスタをクリアするアクション(「サブセットをクリアする」)は、実際には、例外制御回路ハードウェアではなく、ソフトウェアによって行われ得る。これはまた、バックグランド処理がセキュアドメインで行われ、ソフトウェアが呼び出し元レジスタをクリアするように構成することができるが、ハードウェアが、次いで、呼び出し先レジスタをプッシュおよびクリアする状況において、セキュア割り込みに続く非セキュア割り込みのテールチェイニングと関連付けられるレジスタクリアリング(「残りをプッシュ、全てクリア」動作の一部を形成する)の少なくとも一部にも当てはまり得る。
図5の表の概観によって明らかなように、セキュア状態から非セキュア状態に移行するときに、非セキュア側がレジスタを利用できないようにし、したがって、通常の呼び出し元保存レジスタ状態に加えて、追加的な保存およびクリアリングが行われるように、セキュア状態を保存することができる全てのレジスタの値をレジスタから取り除く必要がある。
図6は、一実施形態のスタックフレームを示し、より具体的には、同じまたは低セキュア状態から割り込みを取得したときに、スタックのスタックフレーム上へ保存されるレジスタの内容(図6の左側)、および低セキュア状態に移行したときに、スタックフレーム上へ保存される内容(図6の右側)を示す。これに関して、後者の場合、セキュア状態は、低セキュア状態が利用できてはならず、レジスタは、いかなる状態も保存したままにしておくことができないので、より多くのレジスタを保存し、クリアする必要がある。
図6は、特定の実施形態に従って、どのレジスタが呼び出し元レジスタであるとみなされるか、およびどのレジスタが呼び出し先レジスタであるとみなされるかを識別する。しかしながら、先に論じたように、正確にどのレジスタを呼び出し元レジスタおよび呼び出し先レジスタ内に含める必要があるのかは、実施形態によって異なり得、セキュア構成レジスタ62の値によって示すことができ、よって、必要とされる状態の保存およびレジスタのクリアリングは、この値を使用することによって決定することができる。この値は、特定の装置のためのコンパイラによって設定され得、このことは、特定の装置を異なる方法で使用することを可能にし、いくらかの柔軟性を製品に提供する。他の実施形態において、この値は、例えばシステムが起動しているときに、ソフトウェアによって設定され得る。
上の説明から分かるように、例外制御回路は、例外が発生したときに、レジスタ状態の呼び出し元保存セクションをスタックに自動的にプッシュおよびポップし、また必要であれば、どのスタックポインタ、したがってどのスタックが使用されるのかを変更する。これは、セキュアドメインおよび低セキュアドメインを有するシステムにおいても、割り込み待ち時間の低減、割り込みジッタの低減、例外ハンドラをアセンブラの代わりにCで書くことができること、例外エントリに対する例外のような最適化を可能にすること、およびテールチェイニング、といった利点を提示することを可能にする。
図7Aおよび7Bは、いくつかの特定のテールチェイニング実施例のシナリオを図示する。図7Aの実施例において、地点250で、セキュアバックグラウンド処理が行われているが、地点255で、初期例外が発生し、セキュアドメインで例外処理ルーチンを実行することを必要とする。故に、地点255で、例外制御回路が呼び出し元レジスタからのデータをセキュアスタック上へスタックし、そのすぐ後に地点260で、例外処理ルーチンが実行される。
地点257で、さらなる低優先度の例外が発生し、故に、その例外は、地点265で初期例外が完了するまで保留のままである。この時点で、例外制御回路は、さらなる例外を処理するためにセキュアドメインから非セキュアドメインへの移行が必要であると決定し、故に、その時点で、呼び出し先レジスタをスタックする。それはまた、地点270でさらなる例外を処理するために、非セキュアドメインで必要とされる例外処理ルーチンを行うために処理回路を起動させる前に、呼び出し先レジスタがクリアされていること(呼び出し元レジスタは、例えばソフトウェアによって、以前にクリアされている)も確実にする。地点275でのさらなる例外の完了時に、例外制御回路は、次いで、地点280でバックグラウンド処理を再開する前に、呼び出し元レジスタおよび呼び出し先レジスタの全ての内容をスタック解除する。
図7Bは、類似する実施例を図示するが、この実施例において、地点300でのバックグラウンド処理は、非セキュアドメインで行われる。地点305で初期例外が発生したときに、例外制御回路は、次いで地点310で初期例外に対する例外処理ルーチンが行われる前に、図7Aの実施例で行ったように、呼び出し元レジスタをスタックする。よって、地点307で発生したさらなる低優先度の例外は、地点315で初期例外の処理が終了するまで保留のままである。しかしながら、この時点で、バックグラウンド処理が非セキュアで行われたので、例外制御回路は、いかなるスタッキングも行わない。図5の表を参照して先に論じたように、この段階で行われ得る随意のステップは、呼び出し元レジスタをクリアすることであるが、このステップは、代替として、例外制御回路ハードウェアの代わりにソフトウェアによって行われ得る。その後に、地点320で、さらなる例外に対する例外処理ルーチンが非セキュアドメインで処理される。地点325でのさらなる例外の完了時に、例外制御回路は、地点330でバックグラウンド処理に戻る前に、呼び出し元レジスタをスタック解除する。
一実施形態において、図7Aの実施例は一例に過ぎず、初期例外の完了に続いて、さらなる例外がテールチェイン例外として処理されたときに、例外制御回路がいくつかの追加的なスタッキングを行わなければならず、故に、スタッキングを行うことのオーバーヘッドが最小に保たれる一方で、テールチェイン例外を処理するときに、セキュアデータのセキュリティを保つ。
図8Aおよび8Bは、2つのさらなるテールチェイニングの実施例を図示する。図8Aの実施例において、地点350で、セキュアバックグラウンド処理が行われているが、地点355で、初期例外が発生し、非セキュアドメインで例外処理ルーチンを実行することを必要とする。故に、地点355で、例外処理回路が呼び出し元レジスタおよび呼び出し先レジスタからのデータをセキュアスタック上へスタックし、その後に地点360で、例外処理ルーチンが実行される。
地点357で、さらなる低優先度の例外が発生し、故に、その例外は、地点365で初期例外が完了するまで保留のままである。この時点で、例外制御回路は、地点370でさらなる例外を処理するために、セキュアドメインで必要とされる例外処理ルーチンを行うために処理回路を起動させる前に、さらなる例外を処理するために非セキュアドメインからセキュアドメインへの移行が必要であると決定し、それに応じて、その時点で呼び出し先レジスタをスタック解除する。地点375でのさらなる例外の完了時に、例外制御回路は、次いで、地点380でバックグラウンド処理を再開する前に、呼び出し元レジスタの内容をスタック解除する。
図8Bは、類似する実施例を図示するが、この実施例において、地点400でのバックグラウンド処理は、非セキュアドメインで行われる。地点405で初期例外が発生したときに、例外制御回路は、次いで地点410で初期例外に対する例外処理ルーチンが行われる前に、呼び出し元レジスタをスタックする。よって、地点407で発生したさらなる低優先度の例外は、地点415で初期例外の処理が終了するまで保留のままである。しかしながら、この時点で、例外制御回路は、いかなるスタック動作も必要とされないと決定する。その後に、地点420で、さらなる例外に対する例外処理ルーチンがセキュアドメインで処理される。地点425でのさらなる例外の完了時に、例外制御回路は、地点430でバックグラウンド処理に戻る前に、呼び出し元レジスタをスタック解除する。
一実施形態において、図8Aの実施例は、単純なテールチェイニング状況の一例に過ぎず、初期例外の完了に続いて、さらなる例外がテールチェイン例外として処理されたときに、例外制御回路がスタッキング解除動作を行わなければならず、故に、スタッキング解除を行うことのオーバーヘッドが同様に最小に保たれる一方で、テールチェイン例外を処理するときに、セキュアデータのセキュリティを保つ。
図9Aおよび9Bは、一実施形態に従う、2つの初期先取りシナリオを図示する。図9Aの実施例において、地点450で、セキュアドメインで行われるバックグラウンド処理は、優先度レベル1を有するが、レベル10を有し、セキュアドメインでの処理を必要とする例外を受け取った時点で、例外制御回路は、地点460でのセキュア例外処理ルーチンへの移行に備えて、地点455で、呼び出し元レジスタのスタッキングを開始する。しかしながら、呼び出し元レジスタのスタッキングの完了前に、地点465で、より高い優先度レベル(この実施例では、優先度レベル12)を有するさらなる例外を受け取り、非セキュアドメインへの移行を必要とする。図9Aの右側に示されるように、この時点で、例外制御回路のスタッキング行動は、呼び出し元レジスタおよび呼び出し先レジスタの双方をスタックする(地点470を参照されたい)ように修正され、その後に、地点475で、非セキュアドメインでさらなる例外に対する例外処理コードを実行するために、処理回路が起動される。その後に、優先度レベル10のセキュア例外を、次いで、テールチェイン例外として処理することができる。
図9Bの実施例において、地点500で、セキュアドメインで行われるバックグラウンド処理は、優先度レベル1を有するが、レベル10を有し、非セキュアドメインでの処理を必要とする処理を受け取った時点で、例外制御回路は、地点510での非セキュア例外処理ルーチンへの移行に備えて、地点505で、呼び出し元レジスタおよび呼び出し先レジスタのスタッキングを開始する。しかしながら、レジスタのスタッキングの完了前に、地点515で、より高い優先度レベル(この実施例では、優先度レベル12)を有するさらなる例外を受け取り、セキュアドメインへの移行を必要とする。図9Bの右側に示されるように、この時点で、例外制御回路のスタッキング行動は、呼び出し元レジスタだけをスタックする(地点520を参照されたい)ように修正され、必要であれば、これは、(例えば、影響を受けた呼び出し先レジスタに対するデータをスタック解除することによって)既に行われた任意の呼び出し先レジスタスタッキングの効果を逆にすることを伴う。その後に、地点525で、セキュアドメインでのさらなる例外に対する例外処理コードを実行するために、処理回路が起動される。その後に、優先度レベル10のセキュア例外を、次いで、テールチェイン例外として処理することができる。
図10は、一実施形態に従って先取り例外を処理するときに使用することができる分解手法を概略的に図示する。図9Aおよび9Bを参照して先に論じた実施例とは異なり、図10の実施例では、先取り例外が発生するまでに、現在の例外と関連付けられる任意の状態保存が既に行われ、必要な例外処理ルーチンを実行するために処理回路が起動されていると仮定される。故に、この時点で、先取り例外を取得することを可能にするために、次いで、現在の例外処理ルーチンの処理を割り込ませることが必要である。
図10で示されるように、そのようなシナリオにおいて、先取り例外の種々の階層は、バックグラウンド処理とみなされるものを変えることによって分解することができる。具体的には、移行550、560で示されるように、これらは、単純な事例565に分解することができ、故に、第1の例外を取得したときに、バックグラウンド処理は、セキュア処理Sであり、最終的に、第1の例外が完了したときに、バックグラウンド処理は再度Sに戻る。第2の例外の場合、先取り例外を取得した時点で、バックグラウンド処理の図は、点線の円555によって概略的に図示されるように変更され、よって、バックグラウンド処理は、非セキュア処理Nであるとみなされ、したがって、例外制御回路は、単純な事例570としてその先取り例外を扱う。したがって、例外Sを取得したときに、どの状態保存および/または復元が必要とされるのかを決定する目的で、例外制御回路は、バックグラウンド処理を非セキュア処理Nであるように扱う。
図11で示されるように、一実施形態において、例外制御回路が、例外が戻るときにどのスタックをそのレジスタ状態から復元するべきか、および処理回路がどのドメインを戻すべきか、を決定することができるように、リンクレジスタ590は、戻りアドレスではなく、特別なEXC_RETURN値に設定され得る。このEXC_RETURN値は、セキュリティビットを含み得、該セキュリティビットは、例外を取得する前にバックグラウンド処理が行われていたときに処理回路があったドメインのセキュリティレベルを処理装置に示す。プログラムカウンタが戻る実際の位置は、他のレジスタ状態とともに、このドメインのスタックに記憶される。この場合、EXC_RETURN値は、復帰アドレスがスタック上にあり、これがどのスタックであるのかを示す。
一実施例において、リンクレジスタ590は、例外処理ルーチンが実行されている時間全体にわたってEXC_RETURN値を保つ必要はなく、代わりに、開始時にこの値に設定し、次いで、直後にスタックに移動させ得る。例外が完了すると、ソフトウェアは、EXC_RETURN値によって示されるアドレスに分岐するが、CPUは、該アドレスが有効な命令アドレスではないので、特別なイベントとみなす。
先取り例外を取得した場合、現在の例外に対するEXC_RETURN値は、新しいEXC_RETURN値が新しい先取り例外に対するリンクレジスタに設定される前に(セキュリティビットSは、その処理が割り込まれている現在の例外のドメインを考慮して適切に設定される)、(先に論じた手順に従って)関連するスタックに記憶され得る。
図12は、一実施形態に従って例外の受け取り時に行われるスタッキング動作を示すフロー図である。ステップ600で、例外を受け取ったかどうかが決定され、受け取った場合、過程は、ステップ605に進み、そこでは、処理回路が現在バックグラウンド処理を行っているかどうかが決定され、それに応じて、この例外が、そのバックグラウンド処理からの初期例外となるかどうかが決定される。この例外が、バックグラウンド処理からの初期例外であると決定された場合、過程は、ステップ610に進み、そこでは、例外を取得したときにセキュアから非セキュアへの移行が必要とされるかどうか(すなわち、バックグラウンド処理がセキュアドメインで行われているかどうか、および必要とされる例外処理ルーチンを非セキュアドメインで実行することが必要となるかどうか)が決定される。当てはまる場合には、ステップ615で、呼び出し元レジスタおよび呼び出し先レジスタは、例外制御回路28によってセキュアスタックに保存したそれらのデータを有する。そうでない場合は、呼び出し元レジスタだけが、例外制御回路によってステップ620でスタックしたそれらのデータを有し、どのスタックがこのデータを保存するのかは、バックグラウンド処理が行われているドメインによって決定される。本方法は、次いで、ステップ600に戻る。
ステップ605で、ステップ600で受け取った例外がバックグラウンド処理からの初期例外でなかった場合、処理は、ステップ625に進み、そこでは、ステップ600で受け取ったこの新しい例外が、現在処理されている既存の例外よりも高い優先度であるかどうかが決定される。そうでない場合は、新しい例外がテールチェイン例外として扱われ、ステップ630で、現在の例外が終了したかどうかが決定される。現在の例外が終了すると、次いでステップ635で、Sビット595がEXC_RETURN値内に設定されているかどうかが決定される。設定されていない場合、過程は、ステップ640へ進み、そこでは、いかなるさらなるスタッキングも行われず、次いで、過程は、ステップ600に戻る。
しかしながら、Sビットが設定されている場合は、バックグラウンド処理から処理例外を取得した時点で、処理回路がセキュアドメインで動作していたことを示し、ステップ645で、必要とされる例外処理ルーチンが行われるために、新しい例外がセキュアから非セキュアへの移行を必要とするかどうかが決定される。設定されていない場合は、同じくステップ640でいかなるさらなるスタッキングも行われず、過程は、ステップ600に戻る。しかしながら、セキュアから非セキュアへの移行が必要とされる場合、過程は、ステップ650に進み、そこでは、過程が、次いで、ステップ600に戻る前に、呼び出し先レジスタ内のデータもセキュアスタック内にスタックされる。
ステップ625で、新しい例外が現在の例外よりも高い優先度を有すると決定された場合、新しい例外が先取り例外として扱われる。次いで、ステップ655で、現在の例外に対してスタッキングがまだ行われているかどうかが決定される。行われている場合は、ステップ660で、図9Aおよび9Bを参照して先に論じたように、スタッキングの挙動は、新しい例外に依存して修正される。その後に、本方法は、ステップ600に戻る。
ステップ655で、現在の例外に対してスタッキングがもう行われておらず、代わりに、処理回路が、その現在の例外に対して関連する例外処理ルーチンの実行を開始した場合、過程は、ステップ665に進み、そこでは、現在の例外がバックグランド処理として扱われ、次いで、過程は、ステップ610に戻る。故に、ステップ665で、図10を参照して先に論じた分解手法が行われる。
図13は、一実施形態に従って例外の完了時に行われるスタッキング解除動作を示すフロー図である。ステップ700で、例外が完了したかどうかが決定され、完了した場合、過程は、ステップ705に進み、そこでは、バックグラウンド処理がセキュアドメインで行われたかどうかが決定される。先に述べたように、これは、EXC_RETURN値内に記憶されるSビット595を参照して決定することができる。戻された例外が先取り例外である場合は、先に論じたように、バックグラウンド処理は、先取り例外によって割り込まれた例外処理ルーチンであるとみなされる。
バックグラウンド処理がセキュアドメインで行われた場合は、ステップ710で、現在の例外の完了の結果として、非セキュアからセキュアへの移行が必要とされるかどうかが決定される。必要とされる場合は、ステップ715で、呼び出し先レジスタの内容がスタック解除され、その後に、過程は、ステップ720に進む。ステップ710で、非セキュアからセキュアへの移行が必要とされないことが決定された場合、過程は、ステップ720に直接進む。
ステップ720で、例外の完了の結果として、バックグラウンド処理に戻ることが必要とされるかどうかが決定され、必要とされない場合、過程は、ステップ700に戻り、次の例外が完了するのを待つ。しかしながら、ステップ720で、バックグラウンド処理に戻ることが必要とされると決定された場合、過程は、ステップ725に進み、そこでは、過程がステップ700に戻る前に、呼び出し元レジスタの内容がスタック解除される。
上で説明される実施形態の手法は、例外に応じて状態保存を行うときに、セキュリティと性能との間の改善されたバランスを達成することを可能にし、例外制御回路のハードウェア機構は、例外ハンドラを通してプロキシすることを必要とすることなく、セキュア例外の効果的な処理を可能にする。
本出願の主題は、本発明の譲受人に譲渡された同時係属の米国特許出願第13/368,419号および英国特許出願第1217531.1号で論じられる主題に関連し、これらの文書の双方の内容全体が参照により本明細書に組み込まれる。
特定の実施形態を本明細書で説明してきたが、本発明は、それに限定されるものではなく、その実施形態への多くの変更および追加が本発明の範囲内で行われる場合があることが認識されるであろう。例えば、本発明の範囲を逸脱しない範囲で、以下の従属請求項の特徴の、独立請求項の特徴との種々の組み合わせを行うことができる。

Claims (19)

  1. データ処理装置であって、
    プログラムコードに応じてデータ処理動作を行うように構成される処理回路であって、例外処理を制御するための例外制御回路を備える処理回路と、
    データを記憶するように構成されるデータ保存であって、セキュア領域およびより低セキュア領域を備える複数の領域を備え、前記セキュア領域は、セキュアドメインで動作するときには前記処理回路によってアクセスすることができ、より低セキュアドメインで動作するときには前記処理回路によってアクセスすることができないデータを記憶するためのものであるデータ保存と、
    データを記憶するように構成される複数のレジスタであって、第1サブセットのレジスタおよび第2サブセットのレジスタを含み、前記処理回路上で実行する前記プログラムコードにアクセスすることが可能であり、例外に応じて、前記例外が処理されたときに当該レジスタからのデータの後からの復元を可能にするために、当該レジスタからのそのデータの状態保存が要求される複数のレジスタと、を備え、
    前記処理回路によって行われるバックグラウンド処理による初期例外に応じて、前記例外制御回路は、前記例外に対応する例外処理ルーチンを行うために前記処理回路を起動させる前に、前記第1サブセットのレジスタから前記データ保存へのデータの状態保存を行うように構成され、前記例外処理ルーチンは、前記第2サブセットのレジスタから前記データ保存へのデータの状態保存を行う責任を持ち、また、
    前記セキュアドメインで前記処理回路によって前記バックグラウンド処理が行われた場合に、前記セキュアドメインから前記より低セキュアドメインへの移行を行わせる第1の例外に応じて、前記例外制御回路は、前記より低セキュアドメインで前記例外処理ルーチンを行うために前記処理回路を起動させる前に、前記第2サブセットのレジスタから前記データ保存への前記データの追加的な状態保存を行うように構成される、データ処理装置。
  2. 前記第1の例外に応じて、前記例外制御回路は、前記例外処理ルーチンを行うために前記処理回路を起動させる前に、前記第2サブセットのレジスタをクリアするように構成される、請求項1に記載のデータ処理装置。
  3. 前記第1の例外に応じて、前記データ処理装置は、前記例外制御回路が前記例外処理ルーチンを行うために前記処理回路を起動させる前に、前記第1サブセットのレジスタがセキュアデータを含まないことを確実にするように構成される、請求項2に記載のデータ処理装置。
  4. 前記例外制御回路が、前記例外処理ルーチンを行うために前記処理回路を起動させる前に、前記追加的な状態保存を行った場合、前記例外処理ルーチンは、前記第2サブセットのレジスタの前記状態保存を行わない、請求項1〜3のいずれか1つに記載のデータ処理装置。
  5. 前記例外制御回路が、前記例外処理ルーチンを行うために前記処理回路を起動させる前に、前記追加的な状態保存を行った場合、前記例外処理ルーチンは、前記第2サブセットのレジスタの状態保存も行う、請求項1〜3のいずれか1つに記載のデータ処理装置。
  6. 前記第1の例外は、前記バックグラウンド処理中に発生する前記初期例外を含む、請求項1〜5のいずれか1つに記載のデータ処理装置。
  7. 前記第1の例外は、前記初期例外が処理された後、かつ前記初期例外の前に行われている前記バックグラウンド処理に戻る前に処理されるテールチェイン例外を含む、請求項1〜5のいずれか1つに記載のデータ処理装置。
  8. 前記初期例外が処理されたとき、かつ前記処理回路が前記初期例外の前に行われている前記バックグラウンド処理に戻る前に保留中であるさらなる例外に応じて、前記例外制御回路は、前記処理回路を前記バックグラウンド処理に戻す前に、テールチェイン例外として前記さらなる例外の処理を制御するように構成される、請求項1〜7のいずれか1つに記載のデータ処理装置。
  9. 前記例外制御回路は、その対応する例外処理ルーチンがまだ行われている現在の例外よりも低い優先度の新しい例外に応じて、前記処理回路を前記バックグラウンド処理に戻す前に、テールチェイン例外として前記新しい例外の処理を制御するように構成され、
    前記例外制御回路は、前記現在の例外が前記セキュアドメインで実行される場合を除いて、前記新しい例外の処理を制御するときに、いかなるさらなる状態保存動作も行わないように構成され、前記新しい例外が、前記低セキュアドメインへの切り替えを示し、前記バックグラウンド処理が、前記セキュアドメインで行われ、そのすぐ後に、前記例外制御回路は、前記現在の例外のための前記例外処理ルーチンの完了に従って、前記第2サブセットのレジスタからの前記データの前記追加的な状態保存を行い、また、前記新しい例外に対応する前記例外処理ルーチンを行うために前記処理回路を起動させる前に、前記第2サブセットのレジスタがクリアされることを確実にするように構成される、請求項1〜8のいずれか1つに記載のデータ処理装置。
  10. 前記例外制御回路は、その対応する例外処理ルーチンがまだ行われている現在の例外よりも低い優先度の新しい例外に応じて、前記処理回路を前記バックグラウンド処理に戻す前に、テールチェイン例外として前記新しい例外の処理を制御するように構成され、
    前記例外制御回路は、前記現在の例外が前記低セキュアドメインで実行される場合を除いて、前記新しい例外の処理を制御するときに、いかなる状態復元動作も行わないように構成され、前記新しい例外が、前記セキュアドメインへの切り替えを示し、前記バックグラウンド処理が、前記セキュアドメインで行われ、そのすぐ後に、前記例外制御回路は、前記現在の例外のための前記例外処理ルーチンの完了に従って、前記新しい例外に対応する前記例外処理ルーチンを行うために前記処理回路を起動させる前に、前記第2サブセットのレジスタの中への前記データの状態復元動作を行うように構成される、請求項1〜9のいずれか1つに記載のデータ処理装置。
  11. 前記第2サブセットのレジスタの前記追加的な状態保存を行っている間に、前記第1の例外よりも高い優先度を有する先取り例外が発生し、かつ、前記先取り例外が、前記セキュアドメインから前記低セキュアドメインへの移行を必要としない場合、前記例外制御回路は、前記先取り例外の前記例外処理ルーチンを処理するために前記処理回路を起動させる前に、前記追加的な状態保存を逆転させるように構成される、請求項1〜10のいずれか1つに記載のデータ処理装置。
  12. 現在の例外が、前記セキュアドメインから前記低セキュアドメインへの移行を行わせない場合、および前記現在の例外と関連付けられる前記例外処理ルーチンの処理を開始する前に、前記現在の例外よりも高い優先度を有し、かつ前記セキュアドメインから前記低セキュアドメインへの移行を必要とする先取り例外が発生した場合、前記例外制御回路は、前記先取り例外の前記例外処理ルーチンを処理するために前記処理回路を起動させる前に、前記第2サブセットのレジスタからの前記データの前記追加的な状態保存を追加的に行うように構成される、請求項1〜11のいずれか1つに記載のデータ処理装置。
  13. 前記例外処理回路が現在の例外に対応する前記例外処理ルーチンを行うために前記処理回路を起動させた後で、その例外処理ルーチンが完了する前に、先取り例外が発生した場合、前記先取り例外の前記例外処理ルーチンを行うために前記処理回路を起動させる前に、前記第1サブセットのレジスタの、または前記第1サブセットのレジスタおよび前記第2サブセットのレジスタの前記状態保存が必要とされるかどうかを決定するときに、前記例外制御回路は、前記バックグラウンド処理として前記現在の例外を扱うように構成される、請求項1〜12のいずれか1つに記載のデータ処理装置。
  14. 前記データ保存は、前記セキュア領域にセキュアスタックを含み、前記より低セキュア領域により低セキュアスタックを含む複数のスタックを備える、請求項1〜13のいずれか1つに記載のデータ処理装置。
  15. 前記第1サブセットのレジスタからのデータの前記状態保存、および前記第2サブセットのレジスタからのデータの前記追加的な状態保存において、前記例外制御回路は、前記バックグラウンド処理を行うときに前記処理回路が動作していた前記ドメインの前記セキュリティに対応する前記セキュアスタックおよび前記より低セキュアスタックのうちの1つに、前記データを保存するように構成される、請求項14に記載のデータ処理装置。
  16. 前記複数のレジスタのうちのどれが、現在実行しているセキュアデータを記憶するためのコードによる使用に利用可能であるのかを示すセキュア構成値を記憶するためのセキュア構成の記憶場所をさらに備え、前記セキュアドメインから前記低セキュアドメインへの移行を行わせる例外に応じて、前記例外制御回路は、前記第2サブセットのレジスタ内に、前記セキュア構成値によって示される前記レジスタの1つ以上を含むように構成される、請求項1〜15のいずれか1つに記載のデータ処理装置。
  17. 例外戻り値を記憶するための記憶場所をさらに備え、前記処理回路は、前記バックグラウンド処理からの初期例外の取得時に、前記データ処理装置が動作している前記ドメインを示すために、前記例外戻り値内のドメイン値を設定するように構成され、前記例外制御回路は、前記ドメイン値に依存して、前記レジスタのうちのどれが状態保存または状態復元動作を受けるべきかを決定する、請求項1〜16のいずれか1つに記載のデータ処理装置。
  18. データ処理装置上でデータを処理する方法であって、前記データ処理装置は、プログラムコードに応じてデータ処理動作を行うための処理回路であって、例外処理を制御するための例外制御回路を備える前記処理回路と、データを記憶するためのデータ保存であって、セキュア領域および低セキュア領域を含む複数の領域を備え、前記セキュア領域は、セキュアドメインで動作するときには前記処理回路によってアクセスすることができ、より低セキュアドメインで動作するときには前記処理回路によってアクセスすることができないデータを記憶するためのものであるデータ保存と、データを記憶するように構成される複数のレジスタであって、第1サブセットのレジスタおよび第2サブセットのレジスタを含み、前記処理回路上で実行する前記プログラムコードにアクセスすることが可能であり、例外に応じて、前記例外が処理されたときに当該レジスタからのデータの後からの復元を可能にするために、当該レジスタからのそのデータの状態保存が要求される複数のレジスタと、を備え、前記方法は、
    前記処理回路によって行われるバックグラウンド処理による初期例外に応じて、前記例外に対応する例外処理ルーチンを行うために前記処理回路を起動させる前に、前記第1サブセットのレジスタから前記データ保存へのデータの状態保存を行うことを、前記例外制御回路にさせることであって、前記例外処理ルーチンは、前記第2サブセットのレジスタから前記データ保存へのデータの状態保存を行う責任を持つようにさせることと、
    前記セキュアドメインで前記処理回路によって前記バックグラウンド処理が行われた場合に、前記セキュアドメインから前記より低セキュアドメインへの移行を行わせる第1の例外に応じて、前記より低セキュアドメインで前記例外処理ルーチンを行うために前記処理回路を起動させる前に、前記第2サブセットのレジスタから前記データ保存への前記データの追加的な状態保存を行うことを、前記例外制御回路にさせることと、
    を含む、方法。
  19. データ処理装置であって、
    プログラムコードに応じてデータ処理動作を行うための処理手段であって、例外処理を制御するための例外制御手段を備える処理手段と、
    データを記憶するためのデータ保存手段であって、セキュア領域および低セキュア領域を含む複数の領域を備え、前記セキュア領域は、セキュアドメインで動作するときには前記処理手段によってアクセスすることができ、低セキュアドメインで動作するときには前記処理手段によってアクセスすることができないデータを記憶するためのものであるデータ保存手段と、
    データを記憶するように構成される複数のレジスタ手段であって、第1サブセットのレジスタ手段および第2サブセットのレジスタ手段を含み、前記処理手段上で実行する前記プログラムコードにアクセスすることが可能であり、例外に応じて、前記例外が処理されたときに当該レジスタ手段からのデータの後からの復元を可能にするために、当該レジスタ手段からのそのデータの状態保存が要求される複数のレジスタ手段と、を備え、
    前記処理手段によって行われるバックグラウンド処理による初期例外に応じて、前記例外制御手段は、前記例外に対応する例外処理ルーチンを行うために前記処理手段を起動させる前に、前記第1サブセットのレジスタ手段から前記データ保存手段へのデータの状態保存を行い、前記例外処理ルーチンは、前記第2サブセットのレジスタ手段から前記データ保存手段へのデータの状態保存を行う責任を持ち、また、
    前記セキュアドメインで前記処理手段によって前記バックグラウンド処理が行われた場合に、前記セキュアドメインから前記低セキュアドメインへの移行を行わせる第1の例外に応じて、前記例外制御手段は、前記低セキュアドメインで前記例外処理ルーチンを行うために前記処理手段を起動させる前に、前記第2サブセットのレジスタ手段から前記データ保存手段への前記データの追加的な状態保存を行う、データ処理装置。
JP2014556134A 2012-02-08 2013-01-17 セキュアドメインおよび低セキュアドメインを有するデータ処理装置の例外処理 Active JP6134742B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US13/368,419 2012-02-08
US13/368,419 US9477834B2 (en) 2012-02-08 2012-02-08 Maintaining secure data isolated from non-secure access when switching between domains
GB1217531.1 2012-10-01
GB201217531A GB201217531D0 (en) 2012-10-01 2012-10-01 ARMv7-M Asset Protection Proposal
GB1220771.8 2012-11-19
GB1220771.8A GB2499287A (en) 2012-02-08 2012-11-19 Exception handling in data processing with different security domains
PCT/GB2013/050102 WO2013117899A1 (en) 2012-02-08 2013-01-17 Exception handling in a data processing apparatus having a secure domain and a less secure domain

Publications (2)

Publication Number Publication Date
JP2015506525A JP2015506525A (ja) 2015-03-02
JP6134742B2 true JP6134742B2 (ja) 2017-05-24

Family

ID=47521366

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014556134A Active JP6134742B2 (ja) 2012-02-08 2013-01-17 セキュアドメインおよび低セキュアドメインを有するデータ処理装置の例外処理
JP2013012980A Active JP6189039B2 (ja) 2012-02-08 2013-01-28 セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2013012980A Active JP6189039B2 (ja) 2012-02-08 2013-01-28 セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法

Country Status (10)

Country Link
EP (1) EP2812836B1 (ja)
JP (2) JP6134742B2 (ja)
KR (1) KR102075367B1 (ja)
CN (2) CN104115155B (ja)
GB (2) GB2501343A (ja)
IL (1) IL233521A (ja)
IN (1) IN2014DN05705A (ja)
MY (1) MY167888A (ja)
TW (1) TWI569164B (ja)
WO (1) WO2013117899A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117400387B (zh) * 2023-12-13 2024-03-15 邯郸市丰泰陶瓷贸易有限公司 一种高性能陶瓷坯料制作装置及其方法

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9268970B2 (en) 2014-03-20 2016-02-23 Analog Devices, Inc. System and method for security-aware master
GB2531844B (en) * 2014-10-31 2019-06-26 Hewlett Packard Development Co Hardware-protective data processing systems and methods using an application executing in a secure domain
CN107924441A (zh) 2015-08-25 2018-04-17 株式会社Seltech 具有虚拟机管理器的系统
GB2547912B (en) * 2016-03-02 2019-01-30 Advanced Risc Mach Ltd Register access control
GB2549774B (en) * 2016-04-28 2019-04-10 Imagination Tech Ltd Method for handling exceptions in exception-driven system
GB2552966B (en) * 2016-08-15 2019-12-11 Arm Ip Ltd Methods and apparatus for protecting domains of a device from unauthorised accesses
US11392438B2 (en) * 2017-02-09 2022-07-19 Arm Limited Responding to unresponsive processing circuitry
GB2562102B (en) * 2017-05-05 2019-09-04 Advanced Risc Mach Ltd An apparatus and method for managing use of capabilities
CN107436752B (zh) * 2017-07-20 2020-12-01 龙芯中科技术有限公司 异常现场恢复方法、装置及计算机可读存储介质
GB2577878B (en) 2018-10-08 2020-11-11 Advanced Risc Mach Ltd Transition disable indicator
GB2578135B (en) * 2018-10-18 2020-10-21 Advanced Risc Mach Ltd Range checking instruction
JP6877475B2 (ja) * 2019-03-11 2021-05-26 日立Astemo株式会社 電子制御装置及びスタック使用方法
GB2589897B (en) 2019-12-11 2022-03-23 Advanced Risc Mach Ltd Domain transition disable configuration parameter
GB2589895B (en) 2019-12-11 2022-03-16 Advanced Risc Mach Ltd Intermodal calling branch instruction
CN114490448A (zh) * 2020-11-13 2022-05-13 华为技术有限公司 一种切换执行环境的方法及其相关设备

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10228421A (ja) * 1997-02-14 1998-08-25 Nec Ic Microcomput Syst Ltd メモリアクセス制御回路
JP2990140B2 (ja) * 1998-01-09 1999-12-13 日本電気アイシーマイコンシステム株式会社 割り込み制御回路
JP3716604B2 (ja) * 1998-03-24 2005-11-16 富士電機機器制御株式会社 情報処理装置
JP2002526822A (ja) * 1998-09-25 2002-08-20 ヒューズ・エレクトロニクス・コーポレーション セキュリティ処理環境を提供するための装置
US6363474B1 (en) * 1999-06-30 2002-03-26 Bull Hn Information Systems Inc. Process switching register replication in a data processing system
GB2369464B (en) * 2000-11-27 2005-01-05 Advanced Risc Mach Ltd A data processing apparatus and method for saving return state
EP1331539B1 (en) * 2002-01-16 2016-09-28 Texas Instruments France Secure mode for processors supporting MMU and interrupts
GB2396034B (en) * 2002-11-18 2006-03-08 Advanced Risc Mach Ltd Technique for accessing memory in a data processing apparatus
GB0226874D0 (en) * 2002-11-18 2002-12-24 Advanced Risc Mach Ltd Switching between secure and non-secure processing modes
GB2411254B (en) * 2002-11-18 2006-06-28 Advanced Risc Mach Ltd Monitoring control for multi-domain processors
GB2396930B (en) * 2002-11-18 2005-09-07 Advanced Risc Mach Ltd Apparatus and method for managing access to a memory
US7539853B2 (en) * 2002-11-18 2009-05-26 Arm Limited Handling interrupts in data processing of data in which only a portion of a function has been processed
US7383587B2 (en) * 2002-11-18 2008-06-03 Arm Limited Exception handling control in a secure processing system
WO2004046924A1 (en) * 2002-11-18 2004-06-03 Arm Limited Processor switching between secure and non-secure modes
JP2004280801A (ja) * 2003-02-24 2004-10-07 Matsushita Electric Ind Co Ltd プロセッサおよびこのプロセッサ用のプログラムを生成するコンパイラ装置
WO2006052703A2 (en) * 2004-11-04 2006-05-18 Board Of Trustees Of Michigan State University Secure bit
US7401210B2 (en) * 2005-03-30 2008-07-15 Arm Limited Selecting subroutine return mechanisms
JP4519738B2 (ja) * 2005-08-26 2010-08-04 株式会社東芝 メモリアクセス制御装置
US8959339B2 (en) * 2005-12-23 2015-02-17 Texas Instruments Incorporated Method and system for preventing unauthorized processor mode switches
US8621607B2 (en) * 2006-05-18 2013-12-31 Vmware, Inc. Computational system including mechanisms for tracking taint
KR101306354B1 (ko) * 2006-09-06 2013-09-09 실리콘 하이브 비.브이. 복수의 명령어 모드를 구비한 데이터 처리회로
GB2448149B (en) 2007-04-03 2011-05-18 Advanced Risc Mach Ltd Protected function calling
GB2448151B (en) 2007-04-03 2011-05-04 Advanced Risc Mach Ltd Memory domain based security control within data processing systems
US8578483B2 (en) * 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
US8051467B2 (en) * 2008-08-26 2011-11-01 Atmel Corporation Secure information processing
JP2010186386A (ja) * 2009-02-13 2010-08-26 Oki Semiconductor Co Ltd プロセッサ
GB2471138B (en) * 2009-06-19 2014-08-13 Advanced Risc Mach Ltd Handling integer and floating point registers during a context switch
JP2011070290A (ja) * 2009-09-24 2011-04-07 Renesas Electronics Corp データプロセッサ
GB2478733B (en) * 2010-03-15 2013-08-14 Advanced Risc Mach Ltd Apparatus and method for handling exception events
GB2482701C (en) * 2010-08-11 2018-12-26 Advanced Risc Mach Ltd Illegal mode change handling

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117400387B (zh) * 2023-12-13 2024-03-15 邯郸市丰泰陶瓷贸易有限公司 一种高性能陶瓷坯料制作装置及其方法

Also Published As

Publication number Publication date
GB201220771D0 (en) 2013-01-02
GB2501343A (en) 2013-10-23
JP6189039B2 (ja) 2017-08-30
MY167888A (en) 2018-09-26
WO2013117899A1 (en) 2013-08-15
GB201220769D0 (en) 2013-01-02
CN104115155B (zh) 2016-12-28
IL233521A0 (en) 2014-08-31
CN103310163A (zh) 2013-09-18
TW201346625A (zh) 2013-11-16
CN104115155A (zh) 2014-10-22
EP2812836A1 (en) 2014-12-17
EP2812836B1 (en) 2016-01-06
IN2014DN05705A (ja) 2015-04-10
TWI569164B (zh) 2017-02-01
IL233521A (en) 2017-11-30
JP2015506525A (ja) 2015-03-02
KR20140123545A (ko) 2014-10-22
CN103310163B (zh) 2018-01-05
KR102075367B1 (ko) 2020-02-11
JP2013161479A (ja) 2013-08-19
GB2499287A (en) 2013-08-14

Similar Documents

Publication Publication Date Title
JP6134742B2 (ja) セキュアドメインおよび低セキュアドメインを有するデータ処理装置の例外処理
US9202071B2 (en) Exception handling in a data processing apparatus having a secure domain and a less secure domain
JP6204479B2 (ja) 安全なドメインとより安全性の低いドメインの間で切り替えるときに安全ではないアクセスから安全なデータ及びプログラム・コードを保護するためのデータ処理装置及び方法
JP6209611B2 (ja) 安全なドメイン及びより安全性の低いドメインを有するデータ処理装置における例外処理
JP6185487B2 (ja) ドメイン間で切り替わる際のセキュアなデータの非セキュアなアクセスから隔離された状態での維持
TWI808261B (zh) 使用轉換禁用指示符的設備、資料處理方法、電腦程式和電腦可讀取存儲媒體
KR20220108176A (ko) 도메인 전이 디스에이블 구성 파라미터
CN112805710B (zh) 数据处理装置和方法
KR20220108175A (ko) 모드간 호출 분기 명령어
JP2006011886A (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160112

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170215

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170424

R150 Certificate of patent or registration of utility model

Ref document number: 6134742

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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