JP4424973B2 - マルチドメインプロセッサのためのモニタ制御 - Google Patents
マルチドメインプロセッサのためのモニタ制御 Download PDFInfo
- Publication number
- JP4424973B2 JP4424973B2 JP2003386042A JP2003386042A JP4424973B2 JP 4424973 B2 JP4424973 B2 JP 4424973B2 JP 2003386042 A JP2003386042 A JP 2003386042A JP 2003386042 A JP2003386042 A JP 2003386042A JP 4424973 B2 JP4424973 B2 JP 4424973B2
- Authority
- JP
- Japan
- Prior art keywords
- domain
- secure
- mode
- processor
- safety
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 230000015654 memory Effects 0.000 claims description 351
- 230000006870 function Effects 0.000 claims description 186
- 238000000034 method Methods 0.000 claims description 149
- 238000012544 monitoring process Methods 0.000 claims description 98
- 230000008569 process Effects 0.000 claims description 90
- 238000003860 storage Methods 0.000 claims description 26
- 231100000279 safety data Toxicity 0.000 claims description 21
- 230000001419 dependent effect Effects 0.000 claims description 5
- 230000000977 initiatory effect Effects 0.000 claims description 5
- 230000000903 blocking effect Effects 0.000 claims description 3
- 238000005192 partition Methods 0.000 description 100
- 238000012545 processing Methods 0.000 description 80
- 239000013598 vector Substances 0.000 description 69
- 238000013519 translation Methods 0.000 description 36
- 230000007246 mechanism Effects 0.000 description 24
- 230000008859 change Effects 0.000 description 18
- 238000013507 mapping Methods 0.000 description 14
- 102100024061 Integrator complex subunit 1 Human genes 0.000 description 13
- 101710092857 Integrator complex subunit 1 Proteins 0.000 description 13
- 230000001276 controlling effect Effects 0.000 description 13
- 230000000694 effects Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 238000006243 chemical reaction Methods 0.000 description 10
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical group [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 9
- 102100033265 Integrator complex subunit 2 Human genes 0.000 description 9
- 108050002021 Integrator complex subunit 2 Proteins 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 9
- 238000012360 testing method Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 239000000872 buffer Substances 0.000 description 6
- 229910052799 carbon Inorganic materials 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 206010000210 abortion Diseases 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000013475 authorization Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 239000013256 coordination polymer Substances 0.000 description 3
- 230000004224 protection Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013481 data capture Methods 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003416 augmentation Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/74—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2101—Auditing as a secondary aspect
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2105—Dual mode as a secondary aspect
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2149—Restricted operating environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2153—Using hardware token as a secondary aspect
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
Description
従って、ドメインの間でデータがリークする危険性を低減しながらプロセッサをモニタできるようにするモニタ機能制御する改良された方法を提供することが望ましい。
1つの条件に関連し、第1ドメインにおいて前記モニタ機能を許可できるかどうかを表示する少なくとも1つの制御値をセットする工程と、
前記モニタ機能が許可できることを、関連する制御値が表示した場合に、条件が存在するときにしか第1ドメインにおけるモニタ機能の開始を許可しない工程とを備えた、プロセッサのモニタ機能を制御する方法を提供するものである。
2つ以上のドメインで作動できるプロセッサにおけるモニタ機能がドメイン間でデータがリークする潜在的な原因であると本発明は認識している。しかしながら、モニタ機能がシステム全体にアクセスできないようにすることによって、かかるモニタ機能の障害を探す能力が深刻に制限され得る。所定の条件に関してモニタ機能の開始を制御できるような方法を提供することによって、これら条件に従い、許容されるモニタの程度を設定できる。従って、第1ドメインからデータがリークする危険性をより高める条件が広がった場合、このドメイン内でのモニタ機能の開始を不能にする。セキュリティの危険性が低いと判断された異なる条件では、モニタを許容できる。
少なくとも1つの制御値が関係する条件は種々の条件でよいが、好ましい実施例ではこれら条件はドメイン、モードまたはモニタシステムのタイプを含む。
特定のドメイン内、例えば非安全ドメインでしかモニタ機能を開始できないように指定できることが有効である。更に、モード、例えばユーザーモードまたはスーパーバイザーモードによる指定またはモニタ機能のタイプ、デバッグまたはトレースのタイプによる指定によって、モニタ機能を更に制御することが可能となり、種々の方法でセキュリティのリスクとモニタの必要性とのバランスを図ることができるように、制御の度合を更に増すことができる。
他の実施例では、安全ドメインは安全ユーザーモードを含むことができ、条件は安全ユーザーモードを含み、安全ユーザービットがセットされている場合にしか、安全ユーザーモードでのモニタの開始が許可されないように、制御値は安全ユーザーモードイネーブルビットを含む。
本発明の実施例はデバッグモニタ機能およびトレースモニタ機能を含むいくつかの異なるタイプのモニタ機能に対して実施できる。ある実施例では、条件はあるタイプのモニタ機能を含み、制御値がデバッグイネーブルビットを含む場合であって、このデバッグイネーブルビットがセットされている場合にしか、第1ドメインにおけるデバッグの開始を許可できないようになっている。
好ましくは安全ドメインイネーブル値は安全デバッグイネーブルビットおよび安全トレースイネーブルビットを含み、安全ドメインイネーブル値のそれぞれの部分がセットされた場合にしか、安全ドメインにおけるデバッグおよびトレースの開始を許可できない。
好ましくはこの方法は、各々が異なる条件に関連する複数の制御値をセットする工程と、条件のいずれかが存在する場合であって、存在する条件に関連する制御値の各々がモニタ機能を許可できることを表示する場合にしか、第1ドメインにおけるモニタ機能の開始を許可しない工程を含む。
好ましい実施例では、本方法は、特定のアプリケーションに対してしかモニタを許可できないことを表示する制御インジケータをセットする工程と、モニタ機能の開始に先立ち、アプリケーション識別子をチェックする工程と、現在実行中のアプリケーションがモニタを許可できるアプリケーションである場合にしか、モニタ機能の開始を許可しない工程を更に含む。
制御インジケータをセットする工程は、記憶素子内の所定位置に記憶された制御インジケータをセットすることを含むことが好ましい。
好ましくは、モニタ機能はプロセッサをモニタし、診断データを捕捉することを含み、本方法はモニタ機能の開始後にプロセッサで実行中のアプリケーションがモニタを許可できるアプリケーションである間にしか、第1ドメインにおける診断データの捕捉を許可しない工程を更に含む。
このように、制御値をセットする種々の方法があり、好ましい実施例では入力ポートを介して制御値を設定するか、または第1ドメインから制御値をセットするかのいずれかにより、少なくとも1つの制御値のセットを実行する。
従って、入力ポートを介するか、または第1ドメイン内部からのいずれかからしか、第1ドメインに対するモニタ機能のアクセスを制御する制御値をセットできない。
これによって、制御値、従って別の工程が実行された後のプロセッサに対するセキュリティが高まる。従って、この別の工程の後で、第1ドメインの内部からしか制御値にアクセスできず、従って第1ドメイン内部から第1ドメインのモニタが制御される。よって、第1ドメインにアクセスしたことがないものはモニタ機能を介して第1ドメインにアクセスすることが禁止される。
1つの実施例では、第1ドメインは第1ユーザーモードおよび第1特権モードを含み、一実施例では、第1ドメインにおいて少なくとも1つの制御値をセットする工程は、第1特権モードから制御値をセットする工程を含み、別の実施例では、第1ドメインにおいて少なくとも1つの制御値をセットする工程は、第1特権モードでないモードから認証コードを入力し、次に制御値をセットすることを含む。
制御値をセットする上記方法のいずれも、第1特権モードにアクセスする必要性または認証コードを知る必要性のいずれかを含む。一般に、認証コードの入力は特権モードへのアクセスを行う。
安全な世界におけるコピーモードの代わりに、同じモードが安全ドメインと非安全ドメインの双方をサポートしている(図8参照)。モニタモードは(例えばコプロセッサコンフィギュレーションレジスタから記憶されているSビットが読み出されるように)コアのその時のステータスが安全ステータスであるのか、または非安全ステータスであるのかを知る。
ユーザーモードからSMIが許可される図9を参照する:
1.スケジューラはスレッド1を起動する。
2.スレッド1は安全な機能(ファンクション)、=>SMI安全コールを実行しなければならず、コアはモニタモードに入る。ハードウェアの制御によりR14_monおよびSPSR_mon(モニタモードのためのセーブされたプロセッサステータスレジスタ)に現在のPCおよびSPSR(現在のプロセッサステータスレジスタ)が記憶され、IRQ/FIQ割り込みがディスエーブルされる。
3.モニタプログラムは次のタスクを実行する。
−Sビットをセットする(安全ステータスフラグ)
−安全アプリケーションの実行中に例外が生じても、非安全コンテクストが失われないよう、スタック内に少なくともR14_monおよびSPSR_monをセーブする。
−起動すべき新しいスレッド:安全スレッド1があるかどうかをチェックする。安全な世界においてスレッド1がアクティブであることを(一部の実施例におけるスレッドIDテーブルを介した)機構が示す。
−IRQ/FIQ割り込みを再イネーブルする。次に安全ユーザーモードで安全 アプリケーションがスタートできる。
4.スレッド1が終了するまでこれを実行し、モニタプログラムモードの「安全からのリータン」機能へのブランチ(SMI)を実行する。(コアがモニタモードに入ったときに、IRQ/FIQ割り込みをディスエーブルする。
5.「安全からのリータン」機能は次のタスクを実行する。
−スレッド1が終了したことを表示する(例えばスレッドIDテーブルの場合、テーブルからスレッド1を除く)。
−スタックから非安全コンテクストをリストア(復元)し、必要なレジスタをフラッシュし、よって一旦非安全ドメインへのリターンが行われると、安全データを読み出すことができなくなる。
−SUBS命令により非安全ドメインへ戻るように分岐し(これによってプログラムカウンタをカレントポイントにリストアし、ステータスフラグを更新する)、(リストアされたR14_monからの)PCおよび(SPSR_monらの)SPSRをリストアする。よって非安全ドメインにおけるリターンポイントはスレッド1における、前に実行されたSMIに続く命令となる。
6.終了するまでスレッド1が実行され、スケジューラへハンドを戻す。
特定の実施例によってはモニタプログラムと安全オペレーティングシステムとの間で上記機能の一部を分割してもよい。
別の実施例では、ユーザーモードでSMIが生じないようにすることが望ましい。
リセット
ハードウェアのリセットが生じると、MMUはディスエーブルされ、ARMコア(プロセッサ)はSビットの組により安全スーパーバイザーモードへ分岐する。安全ブートが一旦終了すると、モニタモードに進むSMIを実行することができ、モニタは必要な場合に非安全な世界内のOS(非安全svcモード)へ切り替わることができる。これまでのOSを使用することが望ましい場合、このOSを使用することによってスーパーバイザーモードで簡単にブートすることができ、安全ステートを無視できる。
非安全ドメインにおける非安全モード(上記のようにこのモードはSMIを特権モードに制限することが望ましい)からこの命令(モード切り替えソフトウェア割り込み命令)を呼び出すことができるが、関連するベクトルによって決定される目標となる入口ポイントは常に固定されており、モニタモード内にある。これは実行すべき(例えば命令によってパスされたオペランドによって制御される)適当な安全な機能へ分岐するためのSMIハンドラーまでである。
−モニタモードに入るSMIベクトルへのブランチ(モニタモードに入るので安全メモリではアクセスが認められる)。
−R14_monにPCをセーブし、SPSR_monへSPSRをセーブする。
−モニタプログラムを使ってSビットをセットする。
−モニタモードで安全な例外ハンドラーの実行をスタートする(マルチスレッドの場合、コンテクストをリストア/セーブ)。
−安全ユーザーモード(またはsvcモードのような別のモード)への分岐をし、適当な機能を実行する。
−コアがモニタモードにある間、IRQおよびFIQをディスエーブルする(待ち時間が増加する)。
安全な世界から出るのに2つの可能性がある。
−安全な機能を終了し、この機能を呼び出しした前の非安全モードに戻る場合。
−非安全な例外(例えばIRQ−FIQ−SMI)により安全な機能に割り込む。
安全な機能が正常に終了すると、SMIの直後の命令で非安全な世界内のアプリケーションを再開しなければならない。安全ユーザーモードでは「安全な世界からのリターン」ルーチンに対応する適当なパラメータを有するモニタモードへリターンするSMI命令を実行する。この段階では、非安全な世界と安全な世界との間のデータの漏れを防止するようにレジスタをフラッシュし、次に非安全コンテクスト用の汎用レジスタをリストアし、非安全な世界内に持っていた値で非安全バンクレジスタを更新する。従って、R14_monおよびSPSR_monに適当な値が与えられ、「MOVS PC、R14」命令を実行することによってSMIの後で非安全アプリケーションを再開する。
このケースでは、安全な機能を終了せず、非安全例外ハンドラーに進む前に安全コンテクストをセーブしなければならない、どの割り込みもこの要求が処理される。
安全な割り込みに対し、いくつかの可能性がある。
次の場合に応じた2つの可能な解決案が提案される。
−どんな種類の割り込みであるか(安全または非安全)
−IRQが生じたときにコアがどのモードとなっているか(安全な世界内か非安全な世界内か)
この解決案では安全および非安全な割り込みをサポートするのに2つの別個のピンが必要とされる。
非安全な世界内にある間に、
−IRQが生じた場合、コアはARMコア、例えばARM7内のように、この割り込みを処理するのにコアはIRQモードとなる。
−SIRQが生じた場合、コアはモニタモードに進み、非安全コンテクストをセーブし、次に安全なIRQハンドラーに進み、安全な割り込みを取り扱う。
安全な世界内にある間に、
−SIRQが生じた場合、コアは安全IRQハンドラーに進む。コアは安全な世界を離れない。
−IRQが生じた場合、コアは安全コンテクストがセーブされるモニタモードに進み、次に非安全IRQハンドラーに進み、この非安全割り込みを扱う。
換言すれば、現在の世界に属さない割り込みが生じたとき、コアは直接モニタモードとなり、そうでない場合、そのときの世界に留まる(図10参照)。
図11A参照:
1.スケジューラはスレッド1を起動する。
2.スレッド1は安全な機能、=>SMI安全コールを実行しなければならず、コアはモニタモードに入る。R14_monおよびSPSR_monにそのときのPCおよびCPSRが記憶され、IRQ/FRQがディスエーブルされる。
3.モニタハンドラー(プログラム)は次のタスクを実行する:
−Sビットをセットする。
−安全アプリケーションの実行中に例外が生じた場合に、非安全コンテクストが失われることがないよう、スタック(更に可能な場合には他のレジスタもプッシュする)内に少なくともR14_monおよびSPSR_monをセーブする。
−起動する新しいスレッド、例えば安全なスレッド1があるかどうかをチェックする。一つの機構が安全な世界内でスレッド1がアクティブであることを(スレッドIDテーブルを介し)表示する。
−安全ユーザーモードで安全アプリケーションがスタートできる。次にIRQ/FIQをイネーブルし直す。
4.安全なスレッド1が実行されている間にIRQが生じる。コアはモニタモード(特定ベクトル)に直接ジャンプし、モニタモードでR14_monにそのときのPCを記憶し、SPSR_monにCPSRを記憶し(IRQ/FIQを次にディスエーブルする)。
5.安全コンテクストはセーブしなければならず、前の非安全コンテクストをリストアする。R14_IRQ/SPSR_IRQを適当な値で更新するように、モニタハンドラーはIRQモードとなり、次に制御信号を非安全なIRQハンドラーへ送る。
6.IRQハンドラーはIRQにサービスし、次に非安全な世界内で制御信号をスレッド1へ与える。SPSR_IRQおよびR14_IRQをSPSRおよびPCにリストアすることにより、スレッド1は割り込まれたSMI命令を指示する。
7.SMI命令を再実行する(2.と同じ命令)。
8.モニタハンドラーはそのスレッドが以前割り込まれたものであるかどうかを見て、スレッド1のコンテクストをリストアする。次にユーザーモードで安全スレッド1に分岐し、割り込まれた命令をポイントする。
9.安全スレッド1は終了するまで作動し、次にモニタモード(専用SMI)で「安全からのリターン」機能に分岐する。
10.「安全からのリターン」機能は次のタスクを実行する。
−安全なスレッド1が終了したことを表示するタスク(例えばスレッドIDテーブルの場合、このテーブルからスレッド1を除く)。
−スタックから非安全コンテクストをリストアし、必要なレジスタをフラッシュし、よって非安全な世界に一旦リターンすると、非安全データを読み出すことができるようにするタスク。
−SUBS命令で非安全な世界に戻るよう分岐し、(リストアされたR14_monから)PCをリストアし、(SPSR_monから)CPSRをリストアするタスク。従って、非安全な世界内のリターンポイントはスレッド1で前に実行されたSMIに続く命令でなければならない。
11.スレッド1は終了まで実行され、次にスレッド1は制御信号をスケジューラに戻す。
図11B参照:
1.スケジューラはスレッド1を起動する。
2.安全なスレッド1が実行されている間にSIRQが生じる。コアはモニタモード(特定ベクトル)に直接ジャンプし、モニタモードにおいてR14_monにそのときのPCを記憶し、SPSR_monにCPSRを記憶し、IRQ/FIQをディスエーブルする。
3.非安全コンテクストをセーブしなければならず、コアは安全なIRQハンドラーに進む。
4.IRQハンドラーはSIRQにサービスし、次に、適当なパラメータを有するSMIを使ってモニタモードハンドラーへ制御を戻す。
5.SUBS命令がコアを非安全な世界にリターンし、割り込まれたスレッド1を再開させるように、モニタハンドラーは非安全コンテクストをリストアする。
6.終了点までスレッド1が実行され、ハンドをスケジューラに戻す。
図11Aの機構は安全な世界に入るための決定方法を与えることができるという利点を有する。しかしながら、割り込み優先権に関連したある問題が生じる。すなわち安全割り込みハンドラー内でSIRQが実行されている間、より高い優先権を有する非安全なIRQが生じることがある。一旦非安全なIRQが終了すると、コアが安全な割り込みを再開できるように、SIRQイベントを再形成する必要が生じる。
この機構(図12参照)では、2つの別個のピンまたは1つのピンだけで、安全な割り込みおよび非安全な割り込みをサポートできる。2つのピンを設けたことにより、割り込み待ち時間が下がる。
非安全な世界にある間に、
−IRQが生じた場合、コアはIRQモードに進み、ARM7システム内と同じようにこの割り込みを処理する。
−SIRQが生じた場合、コアはIRQハンドラーに進み、このハンドラーでSMI命令がコアをモニタモードに分岐させ、非安全コンテクストをセーブし、次に安全なIRQハンドラーに分岐し、安全な割り込みを取り扱う。
安全な世界にある間に、
−SIRQが生じた場合、コアは安全なIRQハンドラーに進む。コアは安全な世界から離れない。
−IRQが生じた場合、コアは安全なIRQハンドラーに進み、ここでSMI命令がコアをモニタモードに分岐させ(このモードで安全コンテクストがセーブされる)、次に非安全なIRQハンドラーに分岐し、この非安全な割り込みを取り扱う。
図13A参照:
1.スケジューラがスレッド1を起動する。
2.スレッド1は安全機能、=>SMI安全コールを実行しなければならず、コアはモニタモードに入る。R14_monおよびSPSR_monにそのときのPCおよびCPSRが記憶され、IRQ/FRQがディスエーブルされる。
3.モニタハンドラーは次のタスクを実行する:
−Sビットをセットする。
−安全なアプリケーションの実行中に例外が生じた場合に、スタック(最終的には他のレジスタ)内に少なくともR14_monおよびSPSR_monをセーブする。
−起動する新しいスレッド、例えば安全なスレッド1があるかどうかをチェックする。一つの機構が安全な世界内でスレッド1がアクティブであることを(スレッドIDテーブルを介し)表示する。
−安全なユーザーモードで安全なアプリケーションがスタートできる。次にIRQ/FIQをイネーブルし直す。
4.安全なスレッド1が実行されている間にIRQが生じる。コアは安全なIRQモードに直接ジャンプする。
5.コアはR14_irqにそのときのPCを記憶し、SPSR_irqにCPSRを記憶する。IRQハンドラーはこれが非安全な割り込みであることを検出し、適当なパラメータを有するモニタモードに入るためのSMIを実行する。
6.安全コンテクストはセーブしなければならず、前の非安全コンテクストをリストアする。モニタハンドラーはCPSRを読み出すことにより、SMIがどこから来たかを知る。モニタハンドラーはIRQモードに進み、R14_irq/SPSR_irqを読み出し、適当な安全なコンテクストをセーブすることもできる。更にIRQルーチンが一旦終了されると、リストアしなければならない非安全コンテクストをこれら同じレジスタにセーブすることもできる。
7.IRQハンドラーはIRQにサービスし、次に非安全な世界内で制御信号をスレッド1へ与える。SPSR_IRQおよびR14_IRQをSPSRおよびPCにリストアすることにより、スレッド1は割り込まれたSMI命令をポイントする。
8.SMI命令を再実行する(2.と同じ命令)。
9.モニタハンドラーはそのスレッドが以前割り込まれたものであるかどうかを見て、スレッド1のコンテクストをリストアする。次にユーザーモードで安全なスレッド1に分岐し、割り込まれた命令をポイントする。
10.安全なスレッド1は終了するまで作動し、次にモニタモード(専用SMI)で「安全からのリターン」機能に分岐する。
11.「安全からのリターン」機能は次のタスクを実行する。
−安全なスレッド1が終了したことを表示するタスク(例えばスレッドIDテーブルの場合、このテーブルからスレッド1を除く)。
−スタックから非安全コンテクストをリストアし、必要なレジスタをフラッシュし、よって非安全な世界に一旦リターンすると、非安全データを読み出すことができるようにするタスク。
−SUBS命令で非安全な世界に戻るよう分岐し、(リストアされたR14_monから)PCをリストアし、(SPSR_monから)CPSRをリストアするタスク。従って、非安全な世界内のリターンポイントはスレッド1で前に実行されたSMIに続く命令でなければならない。
12.スレッド1は終了まで実行され、次にスレッド1は制御信号をスケジューラに戻す。
図13B参照:
1.スケジューラはスレッド1を起動する。
2.安全なスレッド1が実行されている間にSIRQが生じる。
3.コアはIRQモードに直接ジャンプし、R14_irqにそのときのPCを記憶し、SPSR_irqにCPSRを記憶する。次にIRQをディスエーブルする。IRQハンドラーはこれがSIRQであることを検出し、適当なパラメータを有するSMI命令を実行する。
4.一旦、モニタモードとなると、非安全コンテクストをセーブしなければならず、次にコアは安全なIRQハンドラーへ進む。
5.安全なIRQハンドラーはSIRQのサービスルーチンをサービスし、次に、適当なパラメータを有するSMIを使って制御をモニタへ戻す。
6.SUBS命令がコアを非安全な世界にリターンさせ、割り込まれたIRQハンドラーを再開させるように、モニタハンドラーは非安全コンテクストをリストアする。
7.IRQハンドラーはSUBSを実行することにより、非安全なスレッドに戻ることができる。
8.終了点までスレッド1が実行され、ハンドをスケジューラに戻す。
図12の機構を用いると、入れ子式割り込みの場合にSIRQイベントを再形成する必要がなくなるが、安全な割り込みが実行される保証はない。
(仮想アドレスの見地から、物理ベクトルのテーブルは1つのベクトルテーブルとして見えるが)少なくとも2つの物理ベクトルのテーブルが維持され、一方のテーブルは非安全メモリ内の非安全な世界用のものであり、他方のテーブルは(非安全な世界からアクセスできない)安全メモリ内の安全な世界用のものである。安全な世界および非安全な世界で使用される仮想対物理メモリの異なるマッピングによって、同じ仮想メモリアドレスが物理メモリ内に記憶された異なるベクトルテーブルに効果的にアクセスできるようになる。モニタモードは物理メモリ内に第3のベクトルテーブルを提供するように、常にフラットなメモリマッピングを使用することができる。
図1を参照して説明するように、データ処理装置はメモリを有する。このメモリは特にTCM36、キャッシュ38、ROM44、スレーブデバイスのメモリおよび外部メモリ56を含む。例として図37を参照して説明するように、メモリは安全メモリと非安全なメモリとに区分されている。一般には製造時にはメモリの安全メモリ領域と非安全なメモリ領域との物理的な区別はないが、これら領域は安全ドメインで作動する際のデータ処理装置の安全なオペレーティングシステムによって定義されることが理解できよう。従って、メモリデバイスの任意の物理的部分を安全メモリとして割り当て、別の物理的部分を非安全メモリとして割り当てることができる。
−Sビット: 専用CP15レジスタ内に含まれる安全ステートビット
−「安全/非安全ステート」: このステートはSビットの値によって定められ、コアが安全な世界にアクセスできる(安全ステートのときにはS=1)かどうかを表示するか、または非安全な世界だけに制限される(S=0)。モニタモード(更に参照)はSビットのステータスを無効にする。
−「非安全な世界」: セキュリティを必要としない非安全アプリケーションへアクセスできるすべてのハードウェア/ソフトウェアのグループのことである。
−「安全な世界」: 安全コードを実行しているときにしかアクセスできないすべてのハードウェア/ソフトウェア(コア、メモリ...)のグループのことである。
−モニタモード: 安全ステートと非安全ステートとの間でコアを切り替える役割を果たす新しいモードである。
−コアは常に非安全な世界にアクセスできる。
−コアは安全な世界が安全ステートまたはモニタモードとなっているときにしか、安全な世界にアクセスできない。
−SMI: ソフトウェアモニタ割り込みのことであり、専用SMI例外ベクトルを通してコアをモニタモードにさせる新しい命令である。
−「スレッドID」: (OSによって制御される)各スレッドに関連する識別子である。OSが非安全な世界で実行されるあるタイプのOSに対しては、安全機能が呼び出される度に、パラメータとして現在のスレッドIDをパスし、呼び出している非安全アプリケーションに安全機能をリンクさせなければならない。従って、安全な世界は多数のスレッドをサポートできる。
−安全割り込みは安全周辺機器が発生する割り込みを定める。
カーボンコアの概観
本技術を使用するプロセッサのために本明細書で使用する用語である、カーボンアーキテクチャなる概念は、安全な世界と非安全な世界の2つに分離することから成る。安全な世界はどんなデータも非安全な世界にリークしてはならないようになっている。
プロセッサのステートおよびモード
カーボンアーキテクチャの新しい特徴
安全または非安全ステート(Sビット)
カーボンコアの主な特徴は、コアが安全ステート(S=1)または非安全ステート(S=0)にあるかどうかを表示するSビットが存在していることである。安全ステートにあるとき、コアは安全な世界または非安全な世界内のどのデータにもアクセスできる。非安全なステートにあるとき、コアは非安全な世界へのアクセスだけに限定される。
カーボンシステムの別の重要な特徴は、新しいモード、すなわちモニタモードを形成することである。このモードは安全ステートと非安全ステートとの間のコアの切り替えを制御するのに使用される。このモードは常に安全モードと見なされる。すなわちSビットの値がどんな値であっても、コアがモニタモードにあると、外部世界への安全特権アクセスを常に実行する。
・すべての割り込みをマスクする。
・すべてのメモリ例外は無視されるか、または致命的例外を生じさせる。
・無定義/SWI/SMIは無視されるか、または致命的例外を生じさせる。
この提案は現在のARM命令セットに1つの新しい命令を加えることを求める。
モニタモードに入れ、固定SMI例ベクトルで分岐するSMI(ソフトウェアモニタ割り込み)命令が使用される。この命令は主に非安全ステートと安全ステートとの間のスワップをするためのモニタに対する表示をするのに使用される。
前のパラグラフで説明したように、コアには新しい1つのモード、すなわちモニタモードしか追加されない。現在のすべてのモードは利用できる状態のままであり、安全ステートおよび非安全ステートの双方で存在する。
実際にはカーボンユーザーは図21に示される構造を見ることになる。
この実施例は、安全な世界と非安全な世界とが同じレジスタバンクを共用することを提案するものである。このことは、ある世界からモニタモードを通して別の世界に切り替わるときに、システムモニタは第1の世界のコンテクストをセーブし、第2の世界のコンテクストを発生(またはリストア)する必要があることを意味する。
例外
安全な割り込み
現在の解決案
現在のコア内に、例えばIRQおよびFIQと同じ割り込みピンを持たせることが現在提案されている。(本明細書で後に記載する)例外トラップマスクレジスタに関連し、異なる種類の割り込みを実現し、取り扱うシステムのために、フレキシビリティを十分にする必要がある。
次のように、VIC(ベクトル化された割り込みコントローラ)を増強することができる。このVICはベクトル化された各アドレスに関連した1つの安全情報ビットを含むことができる。このビットはモニタまたは安全特権モードでしかプログラムできない。このことは、検討する割り込みを安全として処理し、よって安全サイドで取り扱うべきか否かを示している。
CP15に含まれるSビット情報は新しいVIC入力としてVCIにも利用できる。
カーボンフレキシビリティを改善するためにCP15では新しいレジスタ、例外トラップマスクが追加される。このレジスタは次のビットを含むことになる。
− ビット0:Undef(未定義)例外 (非安全ステート)
− ビット1:SWI例外 (非安全ステート)
− ビット2:プリフェッチアボート例外 (非安全ステート)
− ビット3:データアボート例外 (非安全ステート)
− ビット4:IRQ例外 (非安全ステート)
− ビット5:FIQ例外 (非安全ステート)
− ビット6:SMI例外 (非安全ステートと安全ステ
ートの双方)
− ビット16:未定義例外 (安全ステート)
− ビット17:SWI例外 (安全ステート)
− ビット18:プリフェッチアボート例 (安全ステート)
− ビット19:データアボート例外 (安全ステート)
− ビット20:IRQ例外 (安全ステート)
− ビット21:FIQ例外 (安全ステート)
ビットがセットされると、対応する例外によってコアはモニタモードとなる。そうでない場合、例外が生じた世界内の対応するハンドラー内で例外が処理される。
レジスタはモニタモードでしか見ることができない。その他のモードではこのレジスタにアクセスしようとする命令は無視されることになる。
システムがモニタをサポートしているか否かに応じて、このレジスタはシステム固有の値に初期化しなければならない。この機能はVICによって制御できる。
別個の安全な世界と非安全な世界とが設けられるので、別個の安全例外ベクトルの表と非安全例外ベクトルのテーブルを必要とする。
更にモニタがある例外もトラップできるので、我々はモニタ専用の第3の例外ベクトルテーブルも必要とする。次のテーブルは3つの異なる例外ベクトルのテーブルを要約するものである。
− 非安全ステートで生じる例外用のベクトル
− 安全ステートで生じる例外用のベクトル
モニタカーネルは例外が生じた元のステートをそれ以上検出する必要はないので、このことは例外の時間待ちを少なくする上で有効である。
この特徴は数個の例外に制限されることに注意する必要がある。SMIは安全ステートと非安全ステートとの切り替えを採用する最も適当な候補の1つである。
ステートを切り替える時、モニタモードはそのモニタスタックに最初のステートのコンテクストをセーブし、モニタスタックから第2のステートのコンテクストをリストアしなければならない。
従って、モニタモードはプライベートレジスタ(r14SPSR、....)を含む他のモードのレジスタにアクセスしなければならない。
これを処理するために、提案される解決案はSPSRを書き込むだけで直接モニタモードに切り替える権利を安全ステートにある特権モードに与えることである。
かかるシステムでは、次のように世界間の切り替えが実行される。
− モニタモードに入る。
− Sビットをセットする。
− スーパーモードに切り替え−モニタスタックにスーパーバイザーレジスタをセーブする(当然ながらスーパーバイザーモードはモニタスタックポインタにアクセスしなければならないが、これは例えば共通レジスタ(R0〜R8)を使用することにより容易に実行できる)。
− システムモードへ切り替え−モニタスタックに(ユーザーモードと同じ)レジスタをセーブする。
− すべてのモードに対し、モニタスタックにIRQレジスタをセーブする。
− すべてのモードのすべてのプライベートレジスタがセーブされると、簡単なMSR命令(=CPSRモードフィールドにモニタの値を単に書き込む)によりモニタモードへ戻る。
次のその他の解決案を検討する。
− モニタが自身のスタックに他のモードのプライベートレジスタをセーブできるようにする新しい命令を追加する。
− 例えば(適当なアクセス権を有するために)モニタステートとなり、IRQ(または他の)プライベートレジスタを見るためにIRQ(または他の)モードとなることができる新しい「ステート」としてモニタを実現する。
1.スレッド1が非安全な世界(Sビット=0)で作動中である。
このスレッドは安全な機能、=>SMI命令を実行しなければならない。
2.このSMI命令は非安全SMIベクトルによりコアをモニタモードにする。
LR_monおよびSPSR_monを使用して非安全モードのPCおよびCPSRをセーブする。
システムは安全ステートであるが、この段階ではSビットは変化しないままである。
モニタカーネルがモニタに非安全コンテクストをセーブする。モニタはLR_monおよびSPSR_monもプッシュする。
次にモニタカーネルはCP15レジスタに書き込みをすることにより、「S」ビットを変える。
この実施例では、モニタカーネルは(例えばスレッドIDテーブルを更新することにより)安全な世界で「安全スレッド1」をスタートさせる道を維持する。
最後に、モニタモードから出て安全スーパーバイザーモードに切り替わる(LR_monおよびSPSR_monを更新した後のMOVS命令)。
3.安全カーネルが正しい安全メモリのロケーションへアプリケーションを送り(例えばMOVSを使って)、ユーザーモードに切り替わる。
4.安全ユーザーモードで安全機能が実行される。一旦終了すると安全機能は適当なSWIを実行することにより「退出」機能を呼び出しする。
5.SWI命令は専用SWIベクトルによりコアを安全svcモードにし、次にコアは「退出」機能を実行する。この「退出」機能はモニタモードに戻すよう切り替えるための「SMI」により終了する。
6.SMI命令は専用安全SMIベクトルによりコアをモニタモードにする。
安全SVCモードのPCおよびCPSRをセーブするのにLR_monおよびSPSR_monを使用する。
Sビットは変わらないままである(例えば安全ステート)。
安全なスレッド1が終了した事実をモニタカーネルが登録する(スレッドIDテーブルから安全なスレッド1のIDを除く)。
モニタカーネルがCP15レジスタに書き込むことにより「S」ビットを変え、非安全ステートに戻る。
モニタカーネルがモニタスタックから非安全コンテクストをリストアする。モニタカーネルはステップ2で前にセーブされたLR_monおよびCPSR_monもロードする。
最後に、モニタカーネルはSUBSによりモニタモードから出る。このSUBSは命令時に非安全ユーザーモードにコアを戻す。
7.スレッド1を正常に再開できる。
これとは異なり、再びCP15レジスタ内の制御ビットを書き込むことにより、命令に基づいて命令によるレジスタへのアクセスをディスエーブルしてもよい。CP15レジスタに書き込まれるビットはモードではなくレジスタに明らかに関係しているので、モードはディスエーブルされず、このモードにおけるレジスタへのアクセスがディスエーブルされる。
モニタモードにおいてプロセッサがドメインを切り替える際にすべてのバンク状レジスタがディスエーブルされるようにプロセッサを構成してもよい。これとは異なり、ドメインを切り替える際に共用レジスタの所定の一部がディスエーブルされ、他のレジスタをプログラマーの選択でディスエーブルできるように、レジスタのディスエーブル化を選択的にしてもよい。
図25に示されるように、処理をセキュリティに影響されるようにすべきか、または実際にセキュリティに影響されないようにすべきかに応じて、安全スーパーバイザーモード内の処理をスタートするアドレスを設定するようにリセットが実行される。一旦リセットが実行された場合、ブート機構またはリブート機構に存在する別のタスクが実行される。このブート機構について以下に説明する。
ブート機構は次の特徴を考慮しなければならない。
− 従来のOSとのコンパチビリティを維持すること
− ほとんどの特権モードにおいてシステムのセキュリティを保証するようにブートすること。
結果として安全スーパーバイザーモードでカーボンコアがブートする。
別のシステムは次のようになる。
− 従来のOSを実行するシステムに対してはSビットは考慮されず、コアはスーパーバイザーモードでブートするように見せる。
− カーボンの特徴を利用するシステムに対しては、コアは(潜在的にはモニタモードにスワップした後に)システム内のすべての安全保護を構成できなければならない安全特権モードでブートする。
ステップ4024にて、安全オペレーティングシステムに対して行われたソフトウェア割り込み呼び出しで指定された新しい安全スレッドへの切り替えが行われる。
非安全メモリアクセスの場合、ステップ300からステップ320にプロセスが進み、ステップ320にて非安全デスクリプタからの対応する物理アドレス部分が存在するかどうかの判断をするために、マイクロTLB206内でルックアッププロセスが実行される。存在する場合、プロセスは直接ステップ336に進み、このステップでアクセス許可ロジック202によりアクセス許可権がチェックされる。この時点では、対応する物理アドレス部分がマイクロTLB内にある場合、セキュリティの違反がないと見なすと考えるのが重要である。その理由は情報がマイクロTLB内に記憶される前にパーティションチェッカー222が情報を有効に規制し、よって状況がマイクロTLB内にある場合、この情報は適当な非安全情報であると考えられるからである。ステップ336でアクセス許可がチェックされると、ステップ338へ進み、違反があるかどうかの判断がされ、そこでアクセス許可が違反となると、ステップ316でアボート信号が発生される。違反がなければステップ318に進み、ここで前に述べたようにメモリアクセスの残りの部分が実行される。
1)コアがVA=3000を発生する [IA=5000、PA=7000]
2)MMU1のマイクロTLBで不一致(失敗)
3)MMU1の主TLBで不一致
ページテーブル1のベースアドレス=8000IA [PA=10000]
4)MMU1内の変換テーブルウォークロジックがページテーブルルックアップを実行し、IA=8003を発生する
5)MMU2のマイクロTLB内で不一致
6)MMU2の主TLB内で不一致
ページテーブル2のベースアドレス=12000PA
7)MMU2内の変換テーブルウォークロジックがページテーブルルックアップを実行し、PA=12008を発生する
ページテーブルデータとして戻された「8000IA=10000PA」
8)MMU2の主TLBに記憶される
9)MMU2のマイクロTLBに記憶される
10)MMU2内のマイクロTLBで一致(ヒット)し、PA=10003を発生
ページテーブルデータとして戻された「3000VA=5000IA」
11)MMU1の主TLBに記憶される
12)MMU1のマイクロTLBに記憶される
13)MMU1内のマイクロTLBで一致し、
データアクセスを実行するのにIA=5000を発生する
14)MMU2のマイクロTLB内で不一致
15)MMU2の主TLB内で不一致
16)MMU2内の変換テーブルウォークロジックがページテーブルルックアップを実行し、PA=12005を発生する
ページテーブルデータとして戻された「5000IA=7000PA」
17)MMU2の主TLB内に記憶される
18)MMU2のマイクロTLB内に記憶される
19)MMU2内のマイクロTLBで一致し、
データアクセスを実行するのにPA=7000を発生する
20)物理アドレス7000にあるデータがコアに戻される
1)コアがVA=3001を発生する
2)MMU1のマイクロTLB内で一致すると、リクエストIA5001がMMU2に発生される
3)MMU2のマイクロTLBで一致すると、PA7001に対するリクエストがメモリに対して発生される
4)PA7001におけるデータがコアに戻される
上記例では双方のMMUのマイクロTLBおよび主TLBの双方で不一致となるので、この例は最悪ケースのシナリオを示している。一般にマイクロTLBまたは主TLBの少なくとも一方で一致が発見されることが予想されるので、データを検索するのにかかる時間を大幅に短縮できる。
2)MMU1のマイクロTLBおよび主TLB内で不一致
ページテーブル1のベースアドレス=8000IA[PA=10000]
3)MMU1内の変換テーブルウォークロジックがページテーブルルックアップを実行し、
IA=8003を発生する
4)MMU2のマイクロTLBおよび主TLB内でIA8003が不一致
ページテーブル2のベースアドレス=12000PA
5)MMU2内の変換テーブルウォークロジックがページテーブルルックアップを実行し、
PA=12008を発生する
ページテーブルデータとして戻された[8000IA==10000PA]
6)MMU2の主およびマイクロTLBに「8000IA=10000PA」がマッピング記憶される
7)MMU2内のマイクロTLBはステップ(3)からPA10003へリクエストを変換でき、フェッチ信号を発生する
ページテーブルとして戻された「3000VA=5000IA」
注: この変換はMMU1によって一時記憶装置内に保持されるが、TLB内には直接記憶されない
8)次にMMU1の変換テーブルウォークロジックはIA=5000に対し、MMU2にリクエストを発生する
9)MMU2のマイクロTLBおよび主TLB内でIA=5000が不一致
10)MMU2内の変換テーブルウォークロジックがページテーブルルックアップを実行し、
PA=12005を発生する
ページテーブルデータとして戻された「5000IA=7000PA」
11)MMU2がマイクロTLBおよび主TLBに「5000IA=7000PA」を記憶する。この変換もMMU1に伝えられる
12a)MMU2がメモリへPA=7000のアクセスを発生する
12b)MMU2が「3000VA=5000IA」デスクリプタと、
「5000IA=7000PA」デスクリプタとを組み合わせ、「3000VA=7000PA」デスクリプタを発生し、このデスクリプタはMMU1の主TLBおよびマイクロTLBに記憶される
13)PA=7000にあるデータがコアに戻される
1)コアがVA=3001を発生する
2)MMU1、MMU2のマイクロTLB内での一致がPA=7001に対するリクエストを発生する
3)PA=7001におけるデータがコアに戻される
上記例と図50Aの例との比較から判るように、主な違いはMMU1が第1テーブルデスクリプタを直接記憶しないステップ7、およびMMU1もIA→PA変換を受信し、組み合わせを行わず、組み合わされたデスクリプタをそのTLBに記憶するステップ12B(ステップ12Aと12Bとは同時に生じ得る)にある。
従って、この別の実施例は仮想アドレスから物理アドレスへの変換をするのにまだページテーブルの2つの組を使用しているが、マイクロTLB2155と主TLB2160が直接仮想アドレス−物理アドレス変換を記憶することにより、マイクロTLB2155または主TLB2160のいずれかで一致が生じたときに、双方のMMUでルックアップを実行する必要がなくなることが理解できよう。かかるケースでは、第1MMUは第2MMUを参照することなく、コアからのリクエストを直接取り扱うことができる。
テーブル1は0x40003000における4Kbを0x00081000にマッピングする。
テーブル2は0x00000000における1Mbを0x02000000にマッピングする。
ここで組み合わせ変換に対しては2つのサイズのうちの小さい方のサイズを使用しなければならないので、組み合わせデスクリプタは0x40003000における4Kbを0x02081000へマッピングする。
しかしながら、(図52を参照して前に説明したように)世界間でデータがスワップされる場合、例えば反対も真となり得る。
テーブル1は0xc0000000から0x00000000への1Mbをマッピングする。
テーブル1は0x00042000から0x02042000への4Kbマッピングする。次に、コアからのアドレス0xc0042010におけるルックアップによって、次のマッピング、すなわち0xc0042000から0x02042000への4Kbのマッピングを生じさせる。
すなわち組み合わせマッピングに対して2つのサイズのうちの小さい方のサイズが常に使用される。
割り込み的なデバッグと観測可能な(トレース)デバッグとを別々に制御することにより;
安全ユーザーモードだけ、または全安全な世界におけるデバッグの進入を認めることにより;
安全ユーザーモードだけのデバッグを認め、更にスレッドID(アプリケーションの実行)を考慮することにより、モニタ機能への進入を制限する。
レジスタロジックセル
どの集積回路(IC)も2つの種類のロジックから成る。
・組み合わせロジックセル;AND、OR、INVゲートに類似する。かかるゲートまたはかかるゲートの組み合わせを使用し、1つまたは複数の入力信号に従い、ブール演算式を計算するのに使用される。
・レジスタロジックセル;ラッチ、フリップフロップに類似する。かかるセルは信号の値を記憶するのに使用される。図62は正のエッジでトリガーされるフリップフロップの図である。
クロック信号(CK)で正のエッジのイベントが生じると、出力(Q)は入力(D)の値を受信し、そうでない場合、出力(Q)はメモリにその状態を維持する。
テストまたはデバッグのためには、レジスタロジックセルの機能アクセスをバイパスさせ、直接レジスタロジックセルの内容にアクセスすることが必要である。従って、レジスタセルは図63に示されるようにスキャンチェーンセル内に集積化されている。
機能モードではSE(スキャンイネーブル)がクリアされ、レジスターセルは単一のレジスターセルとして働く。テストまたはデバッグモードではSEがセットされ、D入力の代わりにSI入力(スキャン入力)から入力データが出ることができる。
図64に示されるように、スキャンチェーンにおいてすべてのスキャンチェーンセルがチェーン化される。
機能モードではSEがクリアされ、すべてのレジスターセルに正常にアクセスすることができ、回路の他のロジックと相互作用することができる。テストまたはデバッグモードではSEがセットされ、スキャンチェーン内ですべてのレジスタが互いにチェーン化される。第1スキャンチェーンセルからデータが出ることができ、各クロックサイクルのカデンスにおいて他のスキャンチェーンシェルを通過するようにシフトできる。レジスタの内容を見るためにデータをシフトして出すこともできる。
いくつかのスキャンチェーンを取り扱うのにデバッグTAPコントローラが使用される。TAPコントローラは特定のスキャンチェーンを選択できる。例えば「スキャンイン」および「スキャンアウト」信号を特定のスキャンチェーンへ送り、データはチェーン内にスキャンし、シフトし、またはスキャンアウトできる。このTAPコントローラはJTAGポートインターフェースにより外部から制御される。図65はTAPコントローラを略図で示す。
セキュリティ上の理由から、デバッグモードまたはテストモードでもスキャンチェーンによって一部のレジスタにはアクセスできないようになっている。JADI(JTAGアクセスディスエーブル)と称される新しい入力信号は集積回路内のスキャンチェーン構造を変えることなく、スキャンチェーン全体からスキャンチェーンセルをダイナミックまたはスタティックに除去することを認めることができる。図66Aおよび66Bはこの入力を略図で示す。
ボード段階における割り込み的デバッグ
ボード段階においてJSDAENピンが結ばれていないときに、ブートセッションをスタートする前のどこでも、デバッグをイネーブルする能力がある。同様に、安全スーパーバイザーモードにある場合、同様な権利を有する。
SMIベクトルトラッピングイネーブル
安全データアボートベクトルトラッピングイネーブル
安全プリフェッチアボートベクトルトラッピングイネーブル
安全未定義ベクトルトラッピングイネーブル
である新しいビットによりベクトルトラップレジスタが拡張される。
安全な世界および非安全な世界における2つのアボートハンドラーは(PCを制御する関連するデバッグでの)デバッガーウィンドーが、安全な世界および非安全な世界の双方におけるレジスタのステートを示すことができるように、それらの情報をデバッガーアプリケーションへ与える。
JSDAENが結ばれ、デバッグが非安全な世界に制限される製造ステージでは、安全スーパーバイザーが判断をしない場合、図71Bに示されたテーブルは、何が生じるかを示す。この場合、SMIは常に原子命令と見なすべきであるので、デバッグステートに入る前に常に安全機能が終了する。
非安全な世界に限り、外部デバッグリクエストまたは内部デバッグリクエストが考慮される。安全な世界にある間、EDBGRQ(外部デバッグリクエスト)がアサートされるた場合、一旦安全機能が終了すれば、コアはデバッグ停止モードに入り、非安全な世界でコアが戻される。
ベクトルトラップレジスタ(この詳細を下記に示す)は非安全例外だけに関係する。前に説明したすべての拡張されたトラッピングイネーブルビットは効果がない。
安全デバッグをイネーブルしなければ、安全な世界への進入を強制するのにSビットを変更できない。
安全スーパーバイザーモードだけでしかデバッグが許可されていない場合、モードビットを変えることはできない。
安全デバッグを制御する専用ビットを変えることはできない。
(システムスピードアクセスにより)SMIをロードし、実行する場合、安全機能が完全に実行された場合にしかコアはデバッグステートに再進入しない。
モニタモードに入る前:
非安全な世界ではブレークポイントおよびウォッチポイントしか考慮しない。ビットSがセットされた場合、ブレークポイントおよびウォッチポイントがバイパスされる。安全メモリではブレークポイント/ウォッチポイントは効果を有しないので、セキュリティの問題ではないMCR/MRC(CP14)によってもウォッチポイントユニットにアクセス可能であることに留意されたい。
ベクトルトラップレジスタは非安全例外にしか関係しない。前に説明したすべての拡張トラッピングイネーブルビットは効果を有しない。データアボートおよびプリフェッチアボートイネーブルビットはプロセッサが強制的に回復不能なステートになるのを防止するためにディスエーブルしなければならない。
JTAGを介し、停止モードに対するのと同じ制限を有する(Sビットは変更できない、など)。
非安全アボートハンドラーは非安全な世界をダンプでき、安全バンクレジスタだけでなく安全メモリにも視覚性を有しない。
原子SMI命令により安全機能を実行。
安全な世界に入ることを強制するためにSビットを変えることはできない。
安全スーパーバイザーモードでしかデバッグが許可されない場合、モードビットを変えることはできない。
非安全な世界ではコアはそのときの命令を終了し、即座に(フォールトモードで)デバッグステートに入る。
安全な世界ではコアはそのときの機能を終了し、非安全な世界に戻ったときにデバッグステートとなる。
・D_s_アボートビット: 安全な世界でデバッグがイネーブルされるとき、およびデバッグがデバッグフォールトモードに構成されたときにしか、このビットをセットしてはならない。モニタデバッグモードではこのビットは決してセットしてはならない。安全な世界内のデバッグがディスエーブルされた場合、このビットはどんな値にも影響しない。
・P_sアボートビット: D_s_アボートビットと同じである。
・S_Undefビット: 安全な世界でデバッグがイネーブルされるときにしか、このビットをセットしてはならない。安全な世界におけるデバッグがディスエーブルされた場合、このビットは値がどんな値でも影響を与えない。
・SMIビット: 安全な世界でデバッグがイネーブルされたときにしか、これをセットしてはならない。安全な世界におけるデバッグがディスエーブルされた場合、このビットはどんな値であっても影響を与えない。
・FIQ、IRQ、D_アボート、P_アボート、SWI、Undefビット: これらビットは非安全例外に対応するので、安全な世界におけるデバッグがディスエーブルされた場合でも有効である。D_アボートおよびP_アボートはモニタモードでハイレベルにアサートしてはならない。
・リセットビット: リセットが生じたときに安全な世界に入る場合、安全な世界におけるデバッグがイネーブルされたときにしかこのビットは有効とならず、有効でない場合、影響を与えない。
14 レジスタバンク
16 演算論理ユニット
18 JTAGコントローラ
20 回路内エミュレータ
21 割り込みコントローラ
22 埋め込みトレースモジュール
24 レジスタ
26 制御レジスタ
30 メモリ管理ロジック
32 ダイレクトメモリアクセスコントローラ
34 制御レジスタ
36 TCM
38 キャッシュ
40 システムバス
42 外部バスインターフェース
44 ブートROM
46 スクリーンドライバ
50 デジタル信号プロセッサ
52 ダイレクトメモリアクセスコントローラ
54 アービッタ/デコーダ
56 外部メモリ
60 I/Oインターフェース
64 キー記憶ユニット
Claims (39)
- システム内の第1ドメインおよび第2ドメインを含む少なくとも2つのドメインで作動できるプロセッサであって、前記第1および第2ドメインの各々が少なくとも1つのモードを含む、プロセッサのモニタ機能を制御する方法であって、前記モニタ機能はデバッグのモニタ機能またはトレースのモニタ機能を含む、前記方法において、
1つの条件に関連し、第1ドメインにおいて前記モニタ機能を許可できるかどうかを表示する少なくとも1つの制御値をセットする工程と、
前記条件が満たされるときに、前記モニタ機能が許可できることを関連する制御値が表示した場合は、第1ドメインにおけるモニタ機能の開始を許可し、前記条件が満たされるときに、前記モニタ機能が許可できないことを関連する制御値が表示した場合は、第1ドメインにおけるモニタ機能の開始を許可しない工程とを備えた、前記プロセッサのモニタ機能を制御する方法。 - 前記第1ドメインが安全ドメインであり、前記第2ドメインが非安全ドメインであり、前記安全ドメイン内で安全モードでプログラムを実行中に、前記プロセッサが非安全ドメイン内で非安全モードで作動しているときにはアクセスできない安全データにプログラムがアクセスするように前記プロセッサが作動できる、請求項1記載の方法。
- 前記条件がドメインに関する条件、モードに関する条件、または、複数のタイプを有するモニタ機能であって、デバッグのモニタ機能、またはトレースのモニタ機能を含む前記モニタ機能に関する条件を含む、請求項1または2記載の方法。
- 前記条件が、プロセッサが安全ドメインで作動していることを含み、前記制御値が、安全ドメインにおけるモニタの開始を許可する場合にセットされる安全ドメインイネーブル値を含み、安全ドメインイネーブル値がセットされた場合にしか、安全ドメインにおけるモニタの開始を許可しない、請求項2に従属したときの請求項3記載の方法。
- プロセッサが前記安全ドメインで、安全ユーザーモードで作動できることを含み、前記条件が、プロセッサが安全ユーザーモードで作動していることを含む、請求項2に従属したときの請求項4または3記載の方法。
- 前記制御値が、安全ユーザーモードからのモニタの開始を許可する場合にセットされる安全ユーザーモードイネーブルビットを含み、前記安全ユーザーモードイネーブルビットがセットされた場合にしか、安全ユーザーモードからのモニタの開始を許可しない、請求項5記載の方法。
- 前記条件がデバッグのモニタ機能に関する条件、またはトレースのモニタ機能に関する条件を含む、請求項3〜5のいずれかに記載の方法。
- 前記条件が、プロセッサがデバッグモニタ機能を作動していることを含み、前記制御値がデバッグイネーブルビットを含み、前記デバッグイネーブルビットがセットされた場合にしか、前記第1ドメインにおけるデバッグの開始を許可しない、請求項7記載の方法。
- 前記条件が、プロセッサがトレースモニタ機能を作動していることを含み、前記制御値がトレースイネーブルビットを含み、前記トレースイネーブルビットがセットされた場合にしか、前記第1ドメインにおけるトレースの開始を許可しない、請求項7または8記載の方法。
- 前記安全ドメインイネーブル値が、前記安全ドメインにおけるデバッグの開始を許可できる場合にセットされる安全デバッグイネーブルビットおよび、前記安全ドメインにおけるトレースの開始を許可できる場合にセットされる安全トレースイネーブルビットを含み、前記安全ドメインイネーブル値の前記安全デバッグイネーブルビットがセットされた場合にしか、前記安全ドメインにおけるデバッグの開始を許可せず、前記安全ドメインイネーブル値の前記安全トレースイネーブルビットがセットされた場合にしか、前記安全ドメインにおけるトレースの開始を許可しない、請求項9記載の方法。
- 各々が異なる条件に関連する複数の制御値をセットする工程と、
前記条件のいずれかが満たされる場合であって、前記モニタ機能を許可できることを存在する条件に関連する制御値の各々が表示する場合にしか、前記第1ドメインにおけるモニタ機能の開始を許可しない工程とを備えた、請求項1〜10のいずれかに記載の方法。 - 特定のアプリケーションに対してしかモニタを許可できないことを表示する制御インジケータをセットする工程と、
モニタ機能の開始に先立ち、アプリケーション識別子をチェックする工程と、
現在実行中のアプリケーションがモニタを許可できるアプリケーションである場合にしか、モニタ機能の開始を許可しない工程とを備えた、請求項1〜11のいずれかに記載の方法。 - 制御インジケータを設定する工程が記憶素子内の所定位置に記憶された制御インジケータをセットすることを含む、請求項12記載の方法。
- 前記モニタ機能が前記プロセッサをモニタし、診断データを捕捉する請求項12または13記載の方法において、
前記モニタ機能の開始後に前記プロセッサで実行中のアプリケーションがモニタを許可できるアプリケーションである間にしか、前記第1ドメインにおける診断データの捕捉を許可しない工程を更に含む方法。 - 前記モニタ機能が前記プロセッサをモニタし、診断データを捕捉する請求項1〜11のいずれかに記載の方法において、
前記モニタ機能の開始後に条件が変化し、前記モニタ機能を許可できると変化した条件に関連する制御値が表示した場合にしか、前記第1ドメインにおける診断データの捕捉を許可しない工程を更に含む方法。 - 入力ポートを介して前記制御値をセットするか、または前記第1ドメインから前記制御値をセットするかのいずれかにより、少なくとも1つの制御値の前記設定を実行する、請求項1〜15のいずれかに記載の方法。
- 前記第1ドメインから前記制御値をセットすることによってしか、前記制御値をセットする前記工程をその後実行できないよう、前記入力ポートを介した前記制御値の書き込みアクセスをブロックする別の工程を更に含む、請求項16記載の方法。
- 前記第1ドメインが第1ユーザーモードおよび第1特権モードを含み、前記第1ドメインにおいて少なくとも1つの制御値をセットする前記工程が、前記第1特権モードから前記制御値をセットする工程を含む、請求項1〜17のいずれかに記載の方法。
- 前記第1ドメインが第1ユーザーモードおよび第1特権モードを含み、前記第1ドメインにおいて少なくとも1つの制御値をセットする前記工程が、第1特権モードでないモードから認証コードを入力し、次に前記制御値をセットすることを含む、請求項16または17のいずれかに記載の方法。
- 各ドメインが少なくとも1つのモードを含む、システム内の第1ドメインおよび第2ドメイン内で作動できるプロセッサであって、
デバッグのモニタまたはトレースのモニタを含むモニタロジックと、
ある条件に関連し、前記第1ドメインで前記モニタロジックの作動が許可できるかどうかを表示する少なくとも1つの制御値を含むようにセットされるようになっている記憶素子と、
前記条件が満たされるときに、前記モニタロジックの作動が許可できることを関連する制御値が表示した場合は、前記第1ドメインにおける前記モニタロジックの開始を許可し、前記条件が満たされるときに、前記モニタロジックの作動が許可できることを関連する制御値が表示した場合は、前記第1ドメインにおける前記モニタロジックの開始を許可しないよう、前記モニタロジックの開始を制御するようになっている制御ロジックとを備えた、前記プロセッサ。 - 前記第1ドメインが安全ドメインであり、前記第2ドメインが非安全ドメインであり、前記安全ドメイン内で安全モードでプログラムを実行中に、前記プロセッサが非安全ドメイン内で非安全モードで作動しているときにしかアクセスできない安全データにプログラムがアクセスするように前記プロセッサが作動できる、請求項20記載のプロセッサ。
- 前記条件がドメインに関する条件、モードに関する条件または、複数のタイプを有するモニタ機能であって、デバッグのモニタ機能、またはトレースのモニタ機能を含む前記モニタ機能に関する条件を含む、請求項20または21記載のプロセッサ。
- 前記条件が、プロセッサが安全ドメインで作動していることを含み、前記制御値が、安全ドメインにおけるモニタの開始を許可する場合にセットされる安全ドメインイネーブルビットを含み、前記記憶素子が安全ドメインイネーブルビットを含む場合にしか、前記安全ドメインにおけるモニタの開始を許可しない、請求項21に従属したときの請求項22記載のプロセッサ。
- プロセッサが前記安全ドメインで、安全ユーザーモードで作動できることを含み、前記条件が、プロセッサが安全ユーザーモードで作動していることを含む、請求項21に従属したときの請求項23または請求項22に記載のプロセッサ。
- 前記制御値が、安全ユーザーモードからのモニタロジックの開始を許可する場合にセットされる安全ユーザーモードイネーブルビットを含み、前記記憶素子が安全ユーザーモードイネーブルビットを含む場合にしか、安全ユーザーモードからのモニタロジックの開始を許可しないように前記制御ロジックが作動できる、請求項24記載のプロセッサ。
- 前記条件があるタイプのモニタ機能に関する条件を含む、請求項21記載のプロセッサ。
- 前記条件がデバッグモニタ機能に関する条件を含み、前記制御値がデバッグイネーブルビットを含み、前記記憶素子がデバッグイネーブルビットを含む場合にしか、前記第1ドメインにおけるモニタロジックの開始を許可しないように前記制御ロジックが作動できる、請求項26記載のプロセッサ。
- 前記条件がトレースモニタ機能に関する条件を含み、前記制御値がトレースイネーブルビットを含み、前記記憶素子が制御トレースイネーブルビットを含む場合にしか、前記第1ドメインにおける前記トレースロジックの開始を許可しないように前記制御ロジックが作動できる、請求項26記載のプロセッサ。
- 前記記憶素子が複数の制御値を含むようになっており、前記複数の制御値の各々が異なる条件に関連しており、
前記条件のいずれかが満たされ、前記モニタロジックが許可できることを、満たしている条件に関連する前記制御値の各々が表示した場合にしか、前記第1ドメインにおける前記モニタロジックの開始を許可しないように作動できる、請求項20〜28のいずれかに記載のプロセッサ。 - 1つの条件が、プロセッサが安全ドメインで作動していることを含み、対応する制御値が、安全ドメインにおけるモニタの開始を許可する場合にセットされる安全ドメインイネーブルビットを含み、別の条件が、プロセッサが安全ユーザーモードで作動していることを含み、対応する制御値が、安全ユーザーモードからのモニタロジックの開始を許可する場合にセットされる安全ユーザーモードイネーブルビットを含み、前記記憶素子が前記安全ユーザーモードイネーブルビットおよび前記安全ドメインイネーブルビットの双方を含む場合にしか、安全ユーザーモードからの前記モニタロジックの開始をしないように、前記制御ロジックが作動できる、請求項29記載のプロセッサ。
- 前記記憶素子が更に制御インジケータを含むようになっており、識別されたアプリケーションに対してしかモニタを許可しないことを前記制御インジケータが表示し、
前記制御ロジックが許可できるアプリケーションを識別する少なくとも1つの識別子をチェックするように作動でき、現在実行中のアプリケーションがモニタを許可できるアプリケーションであると識別されたアプリケーションである場合にしか、前記第1ドメインにおいて前記制御ロジックがモニタロジックを開始しないようになっている、請求項20〜29のいずれかに記載のプロセッサ。 - 許可できるアプリケーションを指定する少なくとも1つの識別子を含むようになっている別の記憶素子を含む、請求項31記載のプロセッサ。
- 前記モニタロジックが前記プロセッサをモニタし、診断データを捕捉するように作動でき、
実行中のアプリケーションが許可できるアプリケーションとして識別されたアプリケーションでないことを前記制御ロジックが検出したときに、前記第1ドメインにおける診断データの捕捉を抑制するように前記制御ロジックが前記モニタロジックを制御するようになっている、請求項31または32記載のプロセッサ。 - 入力ポートを更に含み、該入力ポートを介し、または前記第1ドメインからの入力を介し、前記制御値が前記記憶素子内で設定されるように作動できる、請求項20〜33のいずれかに記載のプロセッサ。
- 前記第1ドメインから前記制御値をセットすることによってしか、前記制御値をセットする前記工程をその後実行できないよう、前記入力ポートを介した前記制御値の書き込みアクセスをブロックする手段を含む、請求項34記載のプロセッサ。
- 前記第1ドメインが第1ユーザーモードおよび第1特権モードを含み、前記制御値が第1特権モードからの入力端を介し、前記記憶素子内にセットされるようになっている、請求項20〜35のいずれかに記載のプロセッサ。
- 前記第1ドメインが第1ユーザーモードおよび第1特権モードを含み、前記制御値の入力の前の第1特権モードでないモードからの認証コードを入力することにより、前記制御値を前記記憶素子にセットするようになっている、請求項35または36のいずれかに記載のプロセッサ。
- 前記記憶素子がレジスタを含む、請求項20〜37のいずれかに記載のプロセッサ。
- 前記別の記憶素子がレジスタを含む、請求項30〜38のいずれかに記載のプロセッサ。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0226887A GB0226887D0 (en) | 2002-11-18 | 2002-11-18 | Monitoring control for multi-Domain processors |
GB0303449A GB0303449D0 (en) | 2002-11-18 | 2003-02-14 | Task following between multiple operating systems |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004171564A JP2004171564A (ja) | 2004-06-17 |
JP4424973B2 true JP4424973B2 (ja) | 2010-03-03 |
Family
ID=29738113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003386042A Expired - Lifetime JP4424973B2 (ja) | 2002-11-18 | 2003-11-17 | マルチドメインプロセッサのためのモニタ制御 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7849296B2 (ja) |
JP (1) | JP4424973B2 (ja) |
GB (1) | GB2411254B (ja) |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI223756B (en) * | 2003-10-09 | 2004-11-11 | Univ Nat Sun Yat Sen | Automatic register backup/restore system and method |
JP4447977B2 (ja) | 2004-06-30 | 2010-04-07 | 富士通マイクロエレクトロニクス株式会社 | セキュアプロセッサ、およびセキュアプロセッサ用プログラム。 |
US7546642B2 (en) * | 2004-07-09 | 2009-06-09 | Arm Limited | Latching processor state information |
US8145816B2 (en) * | 2004-09-15 | 2012-03-27 | Intel Corporation | System and method for deadlock free bus protection of resources during search execution |
US7738484B2 (en) | 2004-12-13 | 2010-06-15 | Intel Corporation | Method, system, and apparatus for system level initialization |
US7734741B2 (en) * | 2004-12-13 | 2010-06-08 | Intel Corporation | Method, system, and apparatus for dynamic reconfiguration of resources |
WO2006126686A1 (ja) * | 2005-05-26 | 2006-11-30 | Matsushita Electric Industrial Co., Ltd. | データ処理装置 |
JP4850830B2 (ja) * | 2005-06-01 | 2012-01-11 | パナソニック株式会社 | コンピュータシステム及びプログラム生成装置 |
US7406711B2 (en) * | 2005-09-02 | 2008-07-29 | Motorola, Inc. | Method and apparatus for enforcing independence of processors on a single IC |
US20070067826A1 (en) * | 2005-09-19 | 2007-03-22 | Texas Instruments Incorporated | Method and system for preventing unsecure memory accesses |
US8959339B2 (en) | 2005-12-23 | 2015-02-17 | Texas Instruments Incorporated | Method and system for preventing unauthorized processor mode switches |
US20070226795A1 (en) * | 2006-02-09 | 2007-09-27 | Texas Instruments Incorporated | Virtual cores and hardware-supported hypervisor integrated circuits, systems, methods and processes of manufacture |
US20080077749A1 (en) * | 2006-09-22 | 2008-03-27 | Daniel Scott Cohen | Access control of memory space in microprocessor systems |
US8533530B2 (en) | 2006-11-15 | 2013-09-10 | Qualcomm Incorporated | Method and system for trusted/untrusted digital signal processor debugging operations |
US8341604B2 (en) * | 2006-11-15 | 2012-12-25 | Qualcomm Incorporated | Embedded trace macrocell for enhanced digital signal processor debugging operations |
US8370806B2 (en) * | 2006-11-15 | 2013-02-05 | Qualcomm Incorporated | Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor |
US8380966B2 (en) | 2006-11-15 | 2013-02-19 | Qualcomm Incorporated | Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging |
US8484516B2 (en) | 2007-04-11 | 2013-07-09 | Qualcomm Incorporated | Inter-thread trace alignment method and system for a multi-threaded processor |
JP5049185B2 (ja) * | 2007-04-19 | 2012-10-17 | パナソニック株式会社 | 情報セキュリティ装置、セキュリティシステム及び入力情報漏洩防止方法 |
US8037350B1 (en) * | 2008-04-30 | 2011-10-11 | Hewlett-Packard Development Company, L.P. | Altering a degree of redundancy used during execution of an application |
US8397306B1 (en) * | 2009-09-23 | 2013-03-12 | Parallels IP Holdings GmbH | Security domain in virtual environment |
US9026803B2 (en) | 2009-11-30 | 2015-05-05 | Hewlett-Packard Development Company, L.P. | Computing entities, platforms and methods operable to perform operations selectively using different cryptographic algorithms |
US20120093047A1 (en) * | 2010-10-14 | 2012-04-19 | Alcatel-Lucent USA Inc. via the Electronic Patent Assignment System (EPAS) | Core abstraction layer for telecommunication network applications |
GB2487575B (en) | 2011-01-28 | 2017-04-12 | Advanced Risc Mach Ltd | Controlling generation of debug exceptions |
JP5879527B2 (ja) | 2011-05-25 | 2016-03-08 | パナソニックIpマネジメント株式会社 | 情報処理装置および情報処理方法 |
US9053233B2 (en) * | 2011-08-15 | 2015-06-09 | Freescale Semiconductor, Inc. | Method and device for controlling debug event resources |
GB2501343A (en) * | 2012-02-08 | 2013-10-23 | Advanced Risc Mach Ltd | Data processing apparatus and method using secure domain and less secure domain |
US9250902B2 (en) * | 2012-03-16 | 2016-02-02 | International Business Machines Corporation | Determining the status of run-time-instrumentation controls |
US9578664B1 (en) | 2013-02-07 | 2017-02-21 | Sprint Communications Company L.P. | Trusted signaling in 3GPP interfaces in a network function virtualization wireless communication system |
US9436823B1 (en) * | 2013-12-17 | 2016-09-06 | Google Inc. | System and method for detecting malicious code |
KR20150070890A (ko) * | 2013-12-17 | 2015-06-25 | 삼성전자주식회사 | 파일 처리 방법 및 이를 지원하는 전자 장치 |
GB2530050B (en) * | 2014-09-10 | 2021-07-21 | Advanced Risc Mach Ltd | Debugging in a data processing apparatus |
US9565168B1 (en) * | 2015-05-05 | 2017-02-07 | Sprint Communications Company L.P. | System and method of a trusted computing operation mode |
US9686240B1 (en) | 2015-07-07 | 2017-06-20 | Sprint Communications Company L.P. | IPv6 to IPv4 data packet migration in a trusted security zone |
US9749294B1 (en) | 2015-09-08 | 2017-08-29 | Sprint Communications Company L.P. | System and method of establishing trusted operability between networks in a network functions virtualization environment |
US10542115B1 (en) | 2015-10-01 | 2020-01-21 | Sprint Communications Company L.P. | Securing communications in a network function virtualization (NFV) core network |
US9811686B1 (en) | 2015-10-09 | 2017-11-07 | Sprint Communications Company L.P. | Support systems interactions with virtual network functions in a trusted security zone |
US9781016B1 (en) | 2015-11-02 | 2017-10-03 | Sprint Communications Company L.P. | Dynamic addition of network function services |
US10572687B2 (en) * | 2016-04-18 | 2020-02-25 | America as represented by the Secretary of the Army | Computer security framework and hardware level computer security in an operating system friendly microprocessor architecture |
WO2017195276A1 (ja) * | 2016-05-10 | 2017-11-16 | 三菱電機株式会社 | 情報処理装置および再起動制御方法 |
US10250498B1 (en) | 2016-10-03 | 2019-04-02 | Sprint Communications Company L.P. | Session aggregator brokering of data stream communication |
US10348488B1 (en) | 2017-08-25 | 2019-07-09 | Sprint Communications Company L.P. | Tiered distributed ledger technology (DLT) in a network function virtualization (NFV) core network |
GB2589896B (en) * | 2019-12-11 | 2022-07-27 | Advanced Risc Mach Ltd | An apparatus and method for handling exceptions |
GB2593485B (en) * | 2020-03-24 | 2022-06-15 | Advanced Risc Mach Ltd | Apparatus and method using plurality of physical address spaces |
US11847205B1 (en) | 2020-10-26 | 2023-12-19 | T-Mobile Innovations Llc | Trusted 5G network function virtualization of virtual network function elements embedded on a system-on-chip |
US20220156381A1 (en) * | 2020-11-19 | 2022-05-19 | Moxa Inc. | Method of Handling Security of an Operating System |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5390310A (en) * | 1991-09-30 | 1995-02-14 | Apple Computer, Inc. | Memory management unit having cross-domain control |
US5491793A (en) * | 1992-07-31 | 1996-02-13 | Fujitsu Limited | Debug support in a processor chip |
US5809293A (en) * | 1994-07-29 | 1998-09-15 | International Business Machines Corporation | System and method for program execution tracing within an integrated processor |
US5574786A (en) * | 1995-02-06 | 1996-11-12 | International Business Machines Corporation | Securing trusted personal computer system against unauthorized movement |
FI108478B (fi) | 1998-01-21 | 2002-01-31 | Nokia Corp | Sulautettu jõrjestelmõ |
JP2000076087A (ja) | 1998-08-28 | 2000-03-14 | Hitachi Ltd | マルチオペレーティングシステム制御方法 |
CA2309627A1 (en) | 1998-09-25 | 2000-04-06 | Hughes Electronics Corporation | An apparatus for providing a secure processing environment |
US6604123B1 (en) * | 1999-02-23 | 2003-08-05 | Lucent Technologies Inc. | Operating system transfer of control and parameter manipulation using portals |
JP3659062B2 (ja) | 1999-05-21 | 2005-06-15 | 株式会社日立製作所 | 計算機システム |
JP4260984B2 (ja) | 1999-06-04 | 2009-04-30 | 株式会社東芝 | 情報処理装置および情報処理方法 |
JP3801833B2 (ja) | 2000-02-14 | 2006-07-26 | 株式会社東芝 | マイクロプロセッサ |
EP1162536A1 (en) | 2000-06-09 | 2001-12-12 | Hitachi, Ltd. | Multiple operating system control method |
US6981153B1 (en) | 2000-11-28 | 2005-12-27 | Xilinx, Inc. | Programmable logic device with method of preventing readback |
JP2002318700A (ja) | 2001-04-19 | 2002-10-31 | Hitachi Ltd | 仮想計算機システムの運用管理情報提供制御方法および仮想計算機システム |
US6883162B2 (en) * | 2001-06-06 | 2005-04-19 | Sun Microsystems, Inc. | Annotations for transaction tracing |
DE10136335B4 (de) * | 2001-07-26 | 2007-03-22 | Infineon Technologies Ag | Prozessor mit mehreren Rechenwerken |
-
2003
- 2003-10-27 GB GB0325010A patent/GB2411254B/en not_active Expired - Lifetime
- 2003-11-17 JP JP2003386042A patent/JP4424973B2/ja not_active Expired - Lifetime
- 2003-11-17 US US10/714,483 patent/US7849296B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
GB2411254A (en) | 2005-08-24 |
JP2004171564A (ja) | 2004-06-17 |
US7849296B2 (en) | 2010-12-07 |
GB0325010D0 (en) | 2003-12-03 |
GB2411254B (en) | 2006-06-28 |
US20040260910A1 (en) | 2004-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4424973B2 (ja) | マルチドメインプロセッサのためのモニタ制御 | |
JP4302493B2 (ja) | データ処理装置内のメモリへアクセスするための技術 | |
JP4302492B2 (ja) | メモリへのアクセスを管理するための装置および方法 | |
JP4423012B2 (ja) | マルチドメインプロセッサのための診断データ捕捉制御 | |
JP4302494B2 (ja) | データ処理装置内のメモリへアクセスするための技術 | |
JP4299107B2 (ja) | サスペンドされたオペレーティングシステムへデータ処理リクエストを送る方法 | |
JP4302641B2 (ja) | デバイスによるメモリへのアクセスの制御 | |
JP4220476B2 (ja) | 安全ドメインおよび非安全ドメインを有するシステム内での仮想−物理メモリアドレスマッピング | |
JP4447471B2 (ja) | 安全処理システムにおける例外タイプ | |
JP4423206B2 (ja) | 安全モードと非安全モードとを切り換えるプロセッサ | |
US8086829B2 (en) | Method and apparatus for processing data related to handling interrupts in data processing | |
US7661104B2 (en) | Task following between multiple operating systems | |
US7383587B2 (en) | Exception handling control in a secure processing system | |
US7231476B2 (en) | Function control for a processor | |
JP2004171568A (ja) | 多数のオペレーティングシステムを使用するデータ処理システムにおける多数の割り込みの取り扱い | |
JP4299108B2 (ja) | 多数のオペレーティングシステムの間のタスクの追従 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051208 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080708 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081008 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081107 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090306 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090527 |
|
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: 20091127 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20091208 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4424973 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121218 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121218 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131218 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |