Nothing Special   »   [go: up one dir, main page]

JP4302641B2 - デバイスによるメモリへのアクセスの制御 - Google Patents

デバイスによるメモリへのアクセスの制御 Download PDF

Info

Publication number
JP4302641B2
JP4302641B2 JP2004570296A JP2004570296A JP4302641B2 JP 4302641 B2 JP4302641 B2 JP 4302641B2 JP 2004570296 A JP2004570296 A JP 2004570296A JP 2004570296 A JP2004570296 A JP 2004570296A JP 4302641 B2 JP4302641 B2 JP 4302641B2
Authority
JP
Japan
Prior art keywords
memory
secure
mode
safe
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
Application number
JP2004570296A
Other languages
English (en)
Other versions
JP2006506754A5 (ja
JP2006506754A (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 GB0226879A external-priority patent/GB0226879D0/en
Priority claimed from GB0226875A external-priority patent/GB0226875D0/en
Priority claimed from GB0303446A external-priority patent/GB0303446D0/en
Application filed by エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JP2006506754A publication Critical patent/JP2006506754A/ja
Publication of JP2006506754A5 publication Critical patent/JP2006506754A5/ja
Application granted granted Critical
Publication of JP4302641B2 publication Critical patent/JP4302641B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • 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
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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
    • 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
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • 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/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • 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
    • 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/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • 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/2149Restricted operating environment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)

Description

本発明はデバイスによるメモリへのアクセスの制御技術に関する。
データ処理システムは、このデータ処理システムにロードされたアプリケーションを実行するためのプロセッサを一般に含む。このプロセッサはオペレーティングシステムの制御により作動する。特定のアプリケーションを実行するのに必要なデータは一般にデータ処理装置のメモリに記憶される。これらのデータはアプリケーション内に含まれる命令および/またはプロセッサにおいてこれら命令を実行する間に使用される実際のデータ値から成ることが理解できよう。
アプリケーションのうちの少なくとも1つによって使用されるデータが、プロセッサで実行し得る他のアプリケーションによってアクセスできないような機密データとなっている場合が多い。一例として、データ処理装置がスマートカードであり、アプリケーションの1つが有効化、認証、暗号解読などを実行するために、例えば安全キーを使用するようなセキュリティアプリケーションである場合を挙げることができる。かかる状況では、機密データを安全に維持し、データ処理装置にロードできる他のアプリケーション、例えばその安全データにアクセスしようとする目的でデータ処理装置にロードされたハッキングアプリケーションによってアクセスできないようにすることは、明らかに重要である。
公知のシステムでは、オペレーティングシステムの制御により実行されている他のアプリケーションから1つのアプリケーションの安全データにアクセスできないように保証するために十分なセキュリティを提供することは、オペレーティングシステム開発者の仕事であった。しかしながら、システムがより複雑になるにつれ、一般的な傾向としてオペレーティングシステムはより大きく、かつ複雑となっている。かかる状況では、オペレーティングシステム自身の内部で十分なセキュリティを保証することは次第に困難となりつつある。
米国特許出願第US2002/0007456A1号および米国特許第US6,282,657B号、および同第US6,292,874B号には、安全データを安全に記憶し、かつ悪意のあるプログラムコードから保護しようとするシステムの例が記載されている。
従って、データ処理装置内に含まれるかかる安全データの機密を維持せんとする改善された技術を提供することが望ましい。
第1の特徴によれば、本発明は、安全ドメインと、非安全ドメインとを有し、前記安全ドメインにおいて非安全ドメインではアクセスできない安全データにアクセスするデータ処理装置において、デバイスバスと、前記デバイスバスに結合されており、前記安全ドメインまたは前記非安全ドメインに関係するメモリアクセスリクエストを発生するようになっているデバイスと、前記デバイスバスに結合されており、前記デバイスが必要とするデータを記憶するようになっているメモリとを備え、該メモリが安全データを記憶するための安全メモリと、非安全データを記憶するための非安全メモリとを備え、前記メモリ内のあるアイテムのデータへのアクセスが必要とされたときに、前記デバイスがメモリアクセスリクエストをデバイスバスに発生するようになっており、前記デバイスが発生したメモリアクセスリクエストが前記非安全ドメインに関するときはいつも、前記メモリアクセスリクエストが前記安全メモリへのアクセスを求めているかどうかを検出するようになっており、かかる検出時に前記メモリアクセスリクエストが指定するアクセスを防止するようになっている、前記デバイスバスに結合されたパーティションチェックロジックとを更に備えたデータ処理装置を提供するものである。
本発明によれば、デバイスバスを介し、メモリにデバイスが結合されており、このデバイスは安全ドメインまたは非安全ドメインのいずれかに関係するメモリアクセスリクエストを発生するようになっている。メモリはデバイスが必要とするデータを記憶するようになっており、安全データを記憶するための安全メモリと、非安全データを記憶するための非安全メモリとから成る。デバイスがメモリ内のあるアイテムのデータにアクセスしたいとき、デバイスはデバイスバスにメモリアクセスリクエストを発生するようになっている。本発明によれば、デバイスバスに結合されたパーティションチェックロジックが設けられており、このパーティションチェックロジックはデバイスが発生したメモリアクセスリクエストが前記非安全ドメインに関するときはいつも、メモリアクセスリクエストが安全メモリへのアクセスを求めているかどうかを検出するようになっており、かかる検出がなされたときにメモリアクセスリクエストによって指定されるアクセスを防止するようになっている。
従って、パーティションチェックロジックはデバイスによって発生されるメモリアクセスリクエストが非安全ドメインに関するものであるときに、安全メモリへのアクセスが起きないことを保証するように、メモリへのアクセスを監視するようになっている。
一実施例では、デバイスは非安全ドメインにおけるモードである少なくとも1つの非安全モードと、安全ドメインにおけるモードである少なくとも1つの安全モードとを備えた複数のモードで作動できる。
パーティションチェックロジックは安全メモリと非安全メモリとの間のパーティションに関する情報にアクセスする。安全メモリと非安全メモリとの間の物理パーティションを変更できない実施例では、このパーティション情報はハードによる配線で構成できると理解できよう。しかしながら、好ましい実施例では安全メモリと非安全メモリとの間のパーティションはデバイスが所定の安全モードで作動するときにはデバイスによって構成でき、かかる実施例ではパーティションチェックロジックはその所定の安全モードで作動しているときのデバイスによって管理される。従って、安全データへアクセスしようとする目的でデバイスに不正な(rogue)アプリケーションがインストールされた場合、そのアプリケーションは安全ドメインでは作動できないので、パーティション情報を変更できない。従って、安全メモリ内のあるロケーションにアクセスしようとしているメモリアクセスリクエストをそのアプリケーションが出力できても、そのパーティションチェックロジックはデバイスの非安全モードで実行中のアプリケーションが安全メモリロケーションにアクセスしようとしていることを検出し、アクセスが行われるのを防止する。
メモリアクセスリクエストが関係するのはどのドメインであるかに関する情報をパーティションチェックロジックがデバイスから受信できる異なる方法は多数あることが理解できよう。しかしながら、好ましい実施例では、デバイスが発生するメモリアクセスリクエストは、メモリアクセスリクエストが前記安全ドメインに関するものであるか、または前記非安全ドメインに関するものであるかを識別するドメイン信号を含む。
従って、一実施例では、このドメイン信号はデバイスが安全ドメインで作動しているのか、または非安全ドメインで作動しているのかを識別するので、デバイスが非安全ドメインで作動中であることをそのドメイン信号が表示する場合、メモリアクセスリクエストをチェックするようにパーティションチェックロジックをトリガーできる。好ましい実施例では、パーティションチェックロジックはデバイスが安全ドメインで作動中にパーティションチェックを実行しない。その理由は、好ましい実施例ではデバイスは安全モードで作動中に安全メモリと非安全メモリの双方にアクセスできるからである。
種々の方法でメモリアクセスリクエスト内にドメイン信号を組み込むことができることが理解できよう。ドメイン信号はハードウェアレベルでアサートすることが好ましいので、安全ドメインで作動できることをデバイス自身が証明したアプリケーションによってしかアサートできない。従って、デバイス上で実行中の不正アプリケーションがドメイン信号の設定を不正操作することはできない。より詳細には、好ましい実施例ではデバイスはデバイスバスにドメイン信号を出力するための所定のピンを有し、デバイスが非安全モードで作動中であることを示すようにデフォルトによってドメイン信号は設定されている。従って、一実施例ではデバイスが安全ドメインにおいて安全アプリケーションを実行しているときに限り、デバイスが安全ドメインで作動中であることを表示するように、ドメイン信号を設定できず、そのドメイン信号が設定された場合にしか、パーティションチェックロジックはメモリ内の安全データへのアクセスを許可しない。
パーティションチェックロジックは種々の方法で具現化できることを理解できよう。しかしながら、好ましい実施例ではデバイスバスで発生されたメモリアクセスリクエスト間の仲裁をするようにデバイスに結合されたアービッタ内にパーティションチェックロジックが設けられる。パーティションチェックロジックとアービッタとを関連させることが便利であることが判っている。この場合、アービッタは競合するメモリアクセスリクエストの間の優先権を決定し、パーティションチェックロジックはアービッタが付与したメモリアクセスリクエストが実際に発生することを許可できるかどうかを決定する。
好ましい実施例では、前記非安全ドメインにおいて、デバイスは非安全オペレーティングシステムの制御により作動でき、前記安全ドメインでは、デバイスは安全オペレーティングシステムの制御により作動できる。安全オペレーティングシステムは一般には非安全オペレーティングシステムよりもかなり小さく、所定の安全機能を制御するために提供された安全カーネルと見なすことができる。このようなアプローチにより安全ドメインは制御された環境内で所定の秘密動作を実行できるようにするための安全ワールドを提供すると見なすことができる。他のアプリケーションは非安全ワールドと見なすことができる非安全ドメインに留まる。
デバイスは種々の形態をとり得ることが理解できよう。バスに結合されたかかるデバイスは多数存在する。バスに多数のデバイスが結合されている場合、安全モードと非安全モードの双方で作動できる各デバイスは安全モードで作動しているときにパーティションチェックロジックを別々に制御してもよい。かかる状況では、各別個のデバイスに固有のパーティション情報にパーティションチェックロジックがアクセスする。しかしながら、デバイスの1つがパーティションチェックロジックの管理に責任を果たすことが好ましい。
好ましい実施例では少なくとも1つのデバイスはプロセッサを内蔵するチップであり、このチップはプロセッサがメモリアクセスリクエストを発生するときにデバイスバスへのメモリアクセスリクエストの発生を制御するための1つ以上の所定のアクセス制御機能を実行するように作動できるメモリ管理ユニットを更に含む。データ処理装置のうちの1つまたはそれ以上の他の部品を同じチップに設けたり、またはチップの外に設けたりすることができる。
デバイスバスに結合されるメモリは種々の形態をとり得る。例えばランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、ハードディスク、所定の周辺デバイス内に設けられたレジスタなどとすることができる。かかるメモリの他に、デバイスがシステムバスに関連するプロセッサを内蔵するチップであるとき、システムバスに接続された所定のメモリ、例えばキャッシュメモリ、密結合メモリ(TCM)などがあってもよいことも理解できよう。
従って、所定の実施例では、チップは更に、システムバスを介してプロセッサに結合された別のメモリを備え、該別のメモリは、プロセッサの必要とするデータを記憶するようになっており、該別のメモリが安全データを記憶するための別の安全メモリと、非安全データを記憶するための別の非安全メモリとを備え、前記非安全ドメインにおいて、非安全モードで作動中の前記プロセッサによって前記メモリアクセスリクエストが発生されるときはいつも、前記メモリアクセスリクエストが前記安全メモリまたは別の安全メモリのいずれにアクセスしようとしているかを検出するように作動し、かかる検出がなされたときに前記メモリアクセスリクエストが指定するアクセスを防止するように作動する、前記システムバスに結合された別のパーティションチェックロジックを前記チップが更に含む。
デバイスバスに結合されたパーティションチェックロジックはシステムバスに結合されたメモリに関するパーティションチェック機能を実行できないので、プロセッサが非安全モードで作動中には、デバイスバスに結合された安全メモリの一部となっているのか、または安全データを含む別のメモリの一部となっているのかにかかわらず、プロセッサが安全メモリシステムの一部にアクセスできないように保証するために、かかる実施例では別のパーティションチェックロジックが設けられている。
本発明の一実施例によれば、プロセッサは非安全ドメイン内のモードである少なくとも1つの非安全モードと、安全ドメイン内のモードである少なくとも1つの安全モードを含む複数のモードで作動できる。プロセッサが非安全作動モードにあるときには、非安全オペレーティングシステム、例えば標準的なあらかじめ存在するオペレーティングシステムの制御により作動できる。しかしながら、安全作動モードにあるときには、プロセッサは安全オペレーティングシステムの制御により作動できる。安全オペレーティングシステムは非安全オペレーティングシステムと比較して比較的小さいことが好ましいので、所定の安全機能を実行するときに使用するための安全カーネルの形態をとる。このようなアプローチにより、安全ドメインは制御された環境で所定の秘密動作を実行できるようにするための安全ワールドを提供するものと見なすことができる。他のアプリケーションは非安全ワールドとして見なすことができる非安全ドメイン内に留まる。
一実施例では、メモリ管理ユニットが設けられる。このメモリ管理ユニットはプロセッサがメモリ内のあるアイテムのデータにアクセスしたいときに、プロセッサが発生したメモリアクセスリクエストを受信すると、メモリへのメモリアクセスリクエストの発生を制御するための1つ以上の所定のアクセス制御機能を実行するようになっている。例えばかかる所定のアクセス制御機能が仮想アドレスから物理アドレスへの変換、現在の作動モードにあるプロセッサがリクエストされたデータアイテムへアクセスする権利が与えられることを保証するためのアクセス許可権利の検討、領域属性、例えば当業者であれば理解できるように、データアイテムがキャッシュ可能か、バッファ化可能かなどを判断するための領域属性の分析に関与できる。
更に本発明によれば、別のパーティションチェックロジックは安全オペレーティングシステムによって管理される。別のパーティションチェックロジックは安全オペレーティングシステムによって管理されるので、非安全アプリケーションによって別のパーティションチェックロジックの設定を変更することはできないので、安全データへの許可されていないアクセスを防止できる。
この別のパーティションチェックロジックは安全メモリと非安全メモリとの間のパーティションに関する情報にアクセスする。安全メモリと非安全メモリとの間の物理的パーティションを変更できないようになっている実施例では、このパーティション情報をハードによる配線で構成できることが理解できよう。しかしながら好ましい実施例では、プロセッサが所定の安全モードで作動しているときには、安全メモリと非安全メモリとの間のパーティションをプロセッサによって構成でき、かかる実施例では所定の安全モードで作動しているときに別のパーティションチェックロジックをプロセッサで管理する。従って、安全データへアクセスしようとする目的でデバイスに不正アプリケーションがインストールされた場合、そのアプリケーションは安全ドメインでは作動できないので、パーティション情報を変更できない。従って、安全メモリ内のあるロケーションにアクセスしようとしているメモリアクセスリクエストをそのアプリケーションが出力できても、そのパーティションチェックロジックはデバイスの非安全モードで実行中のアプリケーションが安全メモリロケーションにアクセスしようとしていることを検出し、アクセスが行われるのを防止する。
当業者であれば、メモリアクセスリクエストが仮想アドレスを指定できるか、または所定の実施例ではデータ処理装置のアーキテクチュアによっては物理アドレスを指定できることが理解できよう。しかしながら、好ましい実施例では、プロセッサが非安全モードで作動しているとき、メモリアクセスリクエストは、仮想アドレスを指定し、メモリ管理ユニットは、非安全、オペレーティングシステムによって制御される。かかる実施例では、メモリ管理ユニットによって実施される好ましいアクセス制御機能のうちの1つは前記仮想アドレスから物理アドレスへの変換を含み、前記メモリ管理ユニットが発生すべき前記物理アドレスが前記安全メモリ内にある場合に、前記別のパーティションチェックロジックは、前記メモリアクセスリクエストの指定するアクセスを防止するようになっている。
更に、好ましい実施例では、前記プロセッサが少なくとも1つの安全モードの1つで作動するときに、前記メモリアクセスリクエストは仮想アドレスを指定し、前記メモリ管理ユニットは前記安全オペレーティングシステムによって制御され、前記メモリ管理ユニットが実施する前記所定のアクセス制御機能のうちの1つが、前記仮想アドレスから物理アドレスへの変換を含み、前記別のパーティションチェックロジックは少なくとも1つの安全モードでは使用されない。
一実施例では、プロセッサのすべての作動モードは、メモリアクセスリクエストに対する仮想アドレスを使用し、前記別のパーティションチェックロジックが前記メモリ管理ユニット内に設けられ、前記プロセッサが前記少なくとも1つの非安全モードで作動するときはいつも、前記別のパーティションチェックロジックは作動可能である。従って、作動モードにかかわらず、必要なアドレス変換およびその他の任意の必要とされるアクセス制御機能を実行するのにメモリ管理ユニットが使用されるが、プロセッサが非安全モードで作動中は別のパーティションチェックロジックだけを使用することが好ましい。その理由は、一般にプロセッサが安全モードで作動中は、メモリ内のデータへのアクセスに制限がなくなるからである。しかしながら、別の実施例では所定の安全作動モードに対してある程度のパーティションチェックを行ってもよい。
本発明の別の実施例ではメモリアクセスリクエストが直接物理アドレスによって指定される少なくとも1つの特定の安全作動モードが設けられる。従って、かかる特定の安全モードでは仮想アドレスから物理アドレスへの変換を実行するための条件はない。物理アドレスを直接指定するこのアプローチは仮想アドレスアプローチよりもフレキシビリティが低いが、仮想アドレスと物理アドレスとのマッピングを実行する必要がないので、本来的により安全である。従って、特定の好ましい実施例では、メモリアクセスリクエストに対する物理アドレスを直接指定する安全モードは最も安全な作動モードであり、好ましい実施例ではこのモードをモニタ作動モードと称し、このモードは非安全ドメインと安全ドメインとの間のデータ処理装置の切り替えを管理する役割を果たす。
かかる好ましい実施例では、データ処理装置は、前記別のパーティションチェックロジックが内部に設けられたメモリ保護ユニットを更に備え、前記メモリ保護ユニットは前記安全オペレーティングシステムによって管理され、前記プロセッサが特定の安全モードで作動するときに、前記メモリアクセスリクエストはメモリロケーションに対する物理アドレスを指定し、前記メモリ管理ユニットは、使用されず、前記物理アドレスが指定するメモリロケーションが前記特定の安全モードでアクセスできるかどうかを証明するために前記メモリ保護ユニットが少なくともメモリアクセス許可処理を実行するようになっている。従って、プロセッサが、特定の安全モードで作動するとき、アクセスは、安全オペレーティングシステムで管理されるメモリ保護ユニットによって管理されるにすぎない。
好ましい実施例では、前記メモリは多数のメモリ領域の各々のための関連するデスクリプタを含む少なくとも1つのテーブルを含み、前記メモリ管理ユニットは前記デスクリプタから誘導され、前記メモリアクセスリクエストに対する所定のアクセス制御機能を実行するために前記メモリ管理ユニットが使用するアクセス制御情報を記憶するための内部記憶ユニットを備え、前記プロセッサが前記少なくとも1つの非安全モードで作動するときに前記安全メモリへのアクセスを可能にするアクセス制御情報を前記内部記憶ユニットが記憶しないように、前記別のパーティションチェックロジックが作動するようになっている。
当業者であれば理解できるように、かかるデスクリプタのテーブルは種々の形態をとることができるが、好ましい実施例ではかかるテーブルはメモリの多数のページの各々に対し、対応するデスクリプタを定めるページテーブルであり、このデスクリプタにおいてメモリのそのページに対応するアクセス制御情報が記述される。従って、デスクリプタは例えばそのページに対する仮想アドレス部分および対応する物理アドレス部分と、そのページがスーパーバイザーモード、ユーザーモードなどでアクセスできるかどうかのアクセス許可情報と、そのページ内に含まれるデータがキャッシュ可能か、バッファ化可能かなどに関する領域属性を定めることができる。
メモリアクセスリクエストが仮想アドレスを指定し、従ってテーブル内のデスクリプタが対応するメモリ領域に対する少なくとも1つの仮想アドレス部分およびそれに対応する物理アドレス部分を含む実施例では、前記プロセッサが前記少なくとも1つの非安全モードで作動するときに、前記仮想アドレスに対して発生される部分アドレスが前記安全メモリ内にある場合に、前記内部記憶ユニットが前記物理アドレス部分をアクセス制御情報として記憶しないように、前記別のパーティションチェックロジックが作動できる。
後に理解できるように、正しく作動中のシステムではプロセッサにより安全モードで作動中の非安全アプリケーションは一般に安全メモリについて知っておらず、プロセッサがかかる非安全モードで作動中に仮想アドレスから物理アドレスへ変換するのにプロセッサが参照するテーブルは、安全メモリの一部を含むメモリ領域を参照すべきでない。しかしながら、非安全アプリケーションが安全情報へのアクセスだけを求めているようになっているハッキングアプリケーションである場合、安全メモリの一部をポイントするマッピングを発生するのに非安全モードとなっているプロセッサが参照するテーブル内のデスクリプタを破壊する可能性があり得ることが理解できよう。しかしながら、別のパーティションチェックロジックは安全オペレーティングシステムにより安全ドメイン内で管理されるので、かかる活動によって破壊されることはなく、従って特定の仮想アドレスに対して発生される物理アドレスが安全メモリ内にあるように、デスクリプタから検索された物理アドレス部分となるかかる状況を検出することができる。従ってメモリ内のテーブルが不正に変更されたときに、安全メモリへのアクセスが生じる場合にメモリ管理ユニットの内部記憶ユニットが変更されたアクセス制御情報を記憶することを別のパーティションチェックロジックが防止し、よってアクセスが行われることを防止する。
メモリ管理ユニット内の内部記憶装置は、種々の形態を取り得る。しかしながら、好ましい実施例では、前記内部記憶ユニットは、少なくとも1つのテーブルから検索された対応するデスクリプタから得られた対応する物理アドレス部分を多数の仮想アドレス部分に対して記憶するようになっている変換ルックアサイドバッファ(TLB)である。
一実施例ではメモリ管理ユニット内に単一のTLBが含まれ、プロセッサが非安全モードで作動中であり、デスクリプタ内のアクセス制御情報に基づき発生される物理アドレスが安全メモリ内のロケーションをポイントする場合に、メモリ内のテーブルから検索されたデスクリプタがTLB内に記憶されないことを保証するように、別のパーティションチェックロジックが作動する。安全作動モードと非安全作動モードとの切り替え時には、非安全モードでは安全モードに対応するデスクリプタを利用できず、逆に安全モードでは非安全モードに対応するデスクリプタを利用できないようにTLBがフラッシングされる。
しかしながら、別の記憶ユニットはマイクロTLBとメインTLBの双方から成る、メインTLBがメモリ管理ユニットによりメモリ内の少なくとも1つのテーブルから検索されたデスクリプタを記憶するのに使用され、アクセス制御情報はメモリアクセスリクエストに対する所定のアクセス制御機能を実行するのに、メモリ管理ユニットによってその制御情報が使用される前に、メインTLBからマイクロTLBへ転送される。かかる実施例では、プロセッサが前記少なくとも1つの非安全モードで作動中は、別のパーティションチェックロジックは前記安全メモリへのアクセスを認めるアクセス制御情報をメインTLBからマイクロTLBへ転送することを防止するように作動する。
従って、かかる実施例ではメインTLBにデスクリプタをコピーできるが、プロセッサが非安全モードで作動中は別のパーティションチェックロジックは安全メモリへのアクセスを認めるアクセス制御情報がマイクロTLBへ送られないように、メインTLBとマイクロTLBとの間のインターフェースを監視するように作動できる。
好ましい実施例では、2つ以上のメモリが設けられ、作動モードに応じて異なるテーブルが使用される。これによって異なる作動モードに対して異なるアクセス制御情報を定義することが可能となる。より詳細には好ましい実施例では前記非安全オペレーティングが発生したデスクリプタを含み、前記プロセッサが前記少なくとも1つの非安全モードで作動しているときに使用するための非安全テーブルを前記少なくとも1つのテーブルが含み、前記非安全テーブル内のデスクリプタが前記安全メモリの一部を少なくとも部分的に内蔵するメモリ領域に関連する場合に、前記プロセッサが非安全モードで作動しているときに、前記仮想アドレスに対して発生される物理アドレスが安全メモリ内にある場合に、前記デスクリプタにより指定される物理アドレス部分をアクセス制御情報として前記内部記憶ユニットが記憶することを前記別のパーティションチェックロジックが防止するように作動できる。
更に少なくとも1つの安全モードで仮想アドレスから物理アドレスへの変換が行われるかかる好ましい実施例では、前記少なくとも1つのテーブルは前記安全オペレーティングシステムによって発生されたデスクリプタを含む安全メモリ内の安全テーブルを更に備え、そのデスクリプタが前記非安全テーブルからのものであるか、または前記安全テーブルからのものであるかを識別するための、前記メインTLB内に記憶された各デスクリプタに関連するフラグを前記メインTLBが含む。
対応するデスクリプタが非安全テーブルからのものであるか、または安全テーブルからのものであるかを表示するためのフラグをメインTLB内に組み込むことにより、安全ドメインと非安全ドメインとの間でプロセッサの作動が変化するときに、メインTLBをフラッシングする(flush)必要がなくなる。アクセス制御情報をメインTLB内のデスクリプタからマイクロTLBへ送るべきときには、プロセッサが作動している現在のドメインにおいて適当なデスクリプタだけを検討する。従って、プロセッサが非安全モードで作動しており、従って非安全ドメイン内にある場合、非安全適当なからのものであることを関連するフラグが表示するメインTLB内のデスクリプタだけを後方デスクリプタとして検討する。この後方デスクリプタからはマイクロTLBへ送るべきアクセス制御情報が得られる。
前記プロセッサの作動モードが安全モードと非安全モードとの間で切り替わるときはいつも、前記マイクロTLBをフラッシングすることが好ましく、前記安全モードにおいて前記関連するフラグが安全テーブルからのものであることを表示する前記メインTLB内のデスクリプタからマイクロTLBへアクセス制御情報が転送されるだけであり、前記関連するフラグが前記非安全転送されるからのものであることを表示する前記メインTLB内のデスクリプタから前記マイクロTLBへアクセス制御情報が転送されるだけである。このマイクロTLBは、メインTLBよりも一般に小さいので、安全ドメインと非安全ドメインとの間でプロセッサが変化するときのマイクロTLBのフラッシングは性能に大きな影響を与えない。メモリ管理ユニットで実行される所定のアクセス制御機能は、マイクロTLB内の制御情報へのアクセスに関して実行されるにすぎないので、上記メカニズムはプロセッサの任意の特定の作動モードに対し、マイクロTLBが適当なメモリテーブルから得られた、すなわちプロセッサが非安全モードで作動中に非安全テーブルから得られた、またはプロセッサが安全モードで作動中に安全テーブルから得られたデスクリプタから誘導されたアクセス制御情報しか含まない。
すべての安全作動モードは、メモリアクセスリクエスト内で直接物理アドレスを指定する実施例では、メインTLBは非安全デスクリプタを記憶するだけであるので、メインTLB内にかかるフラグは不要であることが理解できよう。
メモリは種々の形態をとることができ、データ処理装置内の種々の場所に設けることができることが理解できよう。例えばメモリは種々の素子のうちの1つ以上から構成できる。例えばランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、ハードディスクドライブ、密結合メモリ(TCM)、1つ以上のキャッシュ、周辺デバイス内に設けられる種々のレジスタから構成でき、メモリのアドレスレンジはメモリのこれら種々の素子を別々にアドレス指定できるような大きさとなる。従って、かかる実施例では上記デバイスバスにメモリの少なくとも一部を結合できるが、異なるバスにはメモリの別の部分を結合できる。
例えば一実施例では、プロセッサはシステムバスに結合され、メモリの一部はシステムバスに接続された密結合メモリ(TCM)を含む。当業者であれば理解できるように、システムバスを介したTCMへのアクセスは、外部メモリ、例えばデバイス上のメモリへのアクセスよりもかなり早いので、プロセッサにより頻繁に使用されるデータを記憶するのに、かかるTCMを使用することが多い。データ処理装置の制御レジスタ内でTCMに対する物理アドレスレンジを定義できることが多い。しかしながらこれにより、次の例によって示すことができるような安全上のある問題が生じ得る。
プロセッサが非安全モードで作動しているとき、安全メモリの一部にオーバーラップする物理アドレススペースをTCMメモリとして定義するよう、非安全オペレーティングシステムがその制御レジスタをプログラムすることを認めることが有り得る。その後、プロセッサが安全ドメイン内で作動するとき、安全オペレーティングシステムは安全データをこの安全メモリ部分に記憶させることができ、この場合、安全データは一般に外部メモリではなく、TCMに記憶される。その理由は、TCMは一般により高い優先権を有するからである。しかしながら、非安全オペレーティングシステムはその後、再びTCMに対する物理アドレスレンジの設定を変更し、よってメモリの非安全物理領域において前の安全メモリ部分がマッピングされた場合、非安全オペレーティングシステムは安全データにアクセスできることが理解できよう。その理由は、別のパーティションチェックロジックがそのエリアを非安全領域として見なし、アボートをアサートしないからである。従って、要約すれば、TCMがノーマルなローカルRAMとして作動するが、スマートキャッシュとしては作動しないように構成されている場合において、非安全オペレーティングシステムがTCMベースレジスタを非安全物理アドレスに移動させることができれば、非安全オペレーティングシステムが安全ワールドデータを読み出すことが可能である。
このようなシナリオを防止するために、好ましい実施例のデータ処理装置には制御フラグを設けることが好ましい。この制御フラグは特権安全モードで作動中に限り、密結合メモリをプロセッサによって制御できるのか、または少なくとも1つの非安全モードで作動中のプロセッサによって制御できるのかを表示するよう、特権安全モードで作動中のプロセッサにより設定可能である。この制御フラグは安全オペレーティングシステムにより設定され、実際にTCMを安全特権モードで制御するのか、または非安全モードで制御するのかを定める。従って、構成できる1つのコンフィギュレーションはプロセッサが特権安全作動モードで作動しているときに限り、TCMを制御することである。かかる実施例ではTCM制御レジスタに対して試みられる非安全アクセスにより、無定義命令例外に入ることになる。
別のコンフィギュレーションでは、非安全作動モードで作動中のプロセッサによりTCMを制御できる。かかる実施例では、TCMは非安全アプリケーションによってしか使用されない。TCMへ安全データを記憶したり、TCMから安全データをロードすることはできない。従って、安全アクセスを実行するときにアドレスがTCMアドレスレンジに一致しているかどうかを見るためのルックアップをTCM内で実行することはない。好ましい一実施例では、非安全オペレーティングシステムによってしか使用されないようにTCMが構成される。非安全オペレーティングシステムにとって利用できるTCMと共に、通常の態様で作動が続くので、非安全オペレーティングシステムを変更する必要はないという利点が得られる。
第2の特徴によれば、本発明は、安全ドメインと非安全ドメインとを有し、前記安全ドメインでは非安全ドメインでアクセスできない安全データにアクセスするようになっており、デバイスバスと、該デバイスバスに結合され、前記安全ドメインまたは前記非安全ドメインのいずれかに関係するメモリアクセスリクエストを発生するようになっているデバイスと、前記デバイスバスに結合されており、前記デバイスが必要とするデータを記憶するようになっているメモリとを備え、前記メモリが安全データを記憶するための安全メモリと、非安全データを記憶するための非安全メモリとを備えたデータ処理装置におけるメモリへのアクセスを制御する方法において、(i)前記メモリ内のあるアイテムのデータへのアクセスが求められると、前記デバイスから前記デバイスバスにメモリアクセスを発生するステップと、(ii)前記デバイスが発生した前記メモリアクセスリクエストが前記非安全ドメインに関するものであるときはいつも、そのメモリアクセスリクエストが安全メモリへのアクセスを求めているかどうかを検出するための、前記デバイスバスに結合されたパーティションチェックロジックを使用するステップと、(iii)かかる検出時に前記メモリアクセスリクエストが指定するアクセスを防止するステップとを備えた、データ処理装置におけるメモリへのアクセスを制御する方法を提供するものである。
別の特徴によれば、本発明は、安全ドメインと、非安全ドメインとを有し、前記安全ドメインにおいて非安全ドメインではアクセスできない安全データにアクセスするデータ処理装置において、デバイスバスと、前記デバイスバスに結合されており、前記デバイスが非安全ドメイン内のノードである少なくとも1つの非安全モードと、非安全ドメインにおけるモードである少なくとも1つの安全ドメインとを備えた、複数のモードおよび前記安全ドメインまたは前記非安全ドメインで作動できるデバイスと、前記デバイスバスに結合されており、前記デバイスが必要とするデータを記憶するようになっているメモリとを備え、該メモリが安全データを記憶するための安全メモリと、非安全データを記憶するための非安全メモリとを備え、前記メモリ内のデータのアイテムへのアクセスが必要とされたときに、前記デバイスがメモリアクセスリクエストをデバイスバスに発生するようになっており、少なくとも1つの前記非安全モードで作動中のデバイスによってメモリアクセスリクエストが発生されたときはいつも、前記メモリアクセスリクエストが前記安全メモリへのアクセスを求めているかどうかを検出するようになっており、かかる検出時に前記メモリアクセスリクエストが指定するアクセスを防止するようになっている、前記デバイスバスに結合されたパーティションチェックロジックとを更に備えたデータ処理装置を提供するものである。
別の特徴によれば、本発明は、デバイスバスと、前記デバイスバスに結合されており、前記安全ドメインまたは前記非安全ドメインに関係するメモリアクセスリクエストを発生するようになっているデバイスと、前記デバイスバスに結合されており、前記デバイスが必要とするデータを記憶するようになっているメモリとを備え、該メモリが安全データを記憶するための安全メモリと、非安全データを記憶するための非安全メモリとを備えたデータ処理装置におけるメモリへのアクセスを制御する方法において、(i)前記メモリ内のあるアイテムのデータへのアクセスが求められると、前記デバイスから前記デバイスバスにメモリアクセスを発生するステップと、(ii)前記デバイスが発生した前記メモリアクセスリクエストが前記非安全ドメインに関するものであるときはいつも、そのメモリアクセスリクエストが安全メモリへのアクセスを求めているかどうかを検出するための、前記デバイスバスに結合されたパーティションチェックロジックを使用するステップと、(iii)かかる検出時に前記メモリアクセスリクエストが指定するアクセスを防止するステップとを備えた、データ処理装置におけるメモリへのアクセスを制御する方法を提供するものである。
以下添付図面に示した好ましい実施例を参照し、単なる例として本発明について説明する。
図1は本発明の好ましい実施例に係わるデータ処理装置を示すブロック図である。このデータ処理装置にはプロセッサコア10が実装されており、このプロセッサコア10内には命令のシーケンスを実行するようになっている代数論理ユニット(ALU)16が設けられている。このALU16が必要とするデータはレジスタバンク14に記憶される。コア10にはプロセッサコアのアクティビティを表示する、診断データを捕捉できるようにするための種々のモニタ機能が設けられている。一例として、埋め込み型トレースモジュール(ETM)22が設けられているが、このETM22はどのアクティビティをトレースするかを定める、ETM22内の所定の制御レジスタ26のコンテンツに応じてプロセッサコアの所定アクティビティのリアルタイムのトレースを発生するようになっている。このトレース信号は一般にトレースバッファへ出力され、このバッファからこれらトレース信号をその後分析できる。種々の周辺機器(図示せず)によって立ち上げられ得る複数のインターラプトのサービスを管理するためのベクトル化されたインターラプトコントローラ21が設けられている。
更に図1に示されるように、コア10内に設けることができる別のモニタ機能として、デバッグ機能、1つ以上のスキャンチェーン12に結合されたジョイントテストアクセスグループ(JTAG)コントローラ18を介してコア10と通信できるデータ通信装置の外部のデバッギングアプリケーションが挙げられる。プロセッサコア10の種々の部分のステータスに関する情報は、スキャンチェーン12およびJTAGコントローラ18を介して外部デバッギングアプリケーションに出力できる。デバッグ機能をいつスタートし、停止すべきかを識別する条件をレジスタ24内に記憶するのに、インサーキットエミュレータ(ICE)20が使用され、従ってこのエミュレータ20は例えばブレークポイント、ウォッチポイントなどを記憶するのに使用される。
コア10はメモリ管理ロジック30を介してシステムバス40に結合されており、メモリ管理ロジック30はデータ処理装置のメモリ内のロケーションへアクセスするためにコア10が発生したメモリアクセスリクエストを管理するようになっている。メモリの所定の部分は、システムバス40に直接接続されたメモリユニット、例えば図1に示されるような密結合メモリ(TCM)36およびキャッシュ38によって具現化できる。かかるメモリにアクセスするのに別のデバイス、例えばダイレクトメモリアクセス(DMA)コントローラ32を設けることもできる。チップの種々の素子の所定の制御パラメータを定義するための種々の制御レジスタ34が一般に設けられ、これら制御レジスタを本明細書ではコプロセッサ15(CP15)のレジスタとも称す。
コア10を含むチップは外部バスインターフェース42を介し、外部バス70(例えばARMユナイテッド社によって開発された「高度マイクロコントローラバスアーキテクチャ」(AMBA)仕様に従って作動するバス)へ結合でき、この外部バス70に種々のデバイスを接続できる。これらデバイスはマスターデバイス、例えばデジタル信号プロセッサ(DSP)50またはダイレクトメモリアクセス(DMA)コントローラ52だけでなく、種々のスレーブデバイス、例えばブートROM44、スクリーンドライバ46、外部メモリ56、入出力(I/O)インターフェース60またはキー記憶ユニット64を含むことができる。図1に示されたこれら種々のスレーブデバイスはすべてデータ処理装置の全メモリの実装部分と見なすことができる。例えばブートROM44は外部メモリ56のようにデータ処理装置のアドレス指定可能なメモリの一部を形成する。更に、スクリーンドライバ46、I/Oインターフェース60およびキー記憶ユニット64などのデバイスはいずれも内部記憶素子、例えばレジスタまたはバッファ48、62、66を含み、これらはいずれもデータ処理装置の全メモリの一部として別々にアドレス指定できる。後により詳細に説明するように、メモリの一部、例えば外部メモリ56の一部を使用して、メモリアクセスの制御に対応する情報を定める1つ以上のページテーブル58を記憶する。
当業者であれば理解できるように、外部バス70には一般にアービタおよびデコーダロジック54が設けられる。アービタは多数のマスタースレーブ、例えばコア10、DMA32、DSP50、DMA52などが発生する多数のメモリアクセスリクエストの間の仲裁をするのに使用され、他方、デコーダは外部バス上のどのスレーブデバイスが特定のメモリアクセスリクエストを取り扱うべきかを決定するのを判断するのに使用される。
一部の実施例では、コア10を含むチップの外部に外部バスを設けることができるが、別の実施例では、外部バスはコア10を有するチップ上に設けられる。このことは、外部バスがオフチップであるときよりもより安全に、外部バス上の安全データを安全に維持できるという利点を有し、外部バスがオフチップである場合、安全データのセキュリティを高めるのにデータ暗号化技術を使用できる。
図2は、安全ドメインと非安全ドメインを有する処理システム上で作動する種々のプログラムを略図で示す。このシステムには少なくとも一部がモニタモードで実行されるモニタプログラム72が設けられている。この実施例では、セキュリティステータスフラグにはモニタモードでしか書き込みアクセス可能ではなく、このセキュリティステータスフラグはモニタプログラム72によって書き込みできる。このモニタプログラム72は両方向の安全ドメインと非安全ドメインとのすべての切り換えを管理する責任を果たす。コアの外部から見ればモニタモードは常に安全であり、安全メモリ内にモニタプログラムが存在する。
非安全ドメイン内には非安全オペレーティングシステム74と、この非安全オペレーティングシステム74と協働して実行される複数の非安全アプリケーションプログラム76、78が設けられている。安全ドメイン内には安全カーネルプログラム80が設けられている。この安全カーネルプログラム80は安全オペレーティングシステムを形成すると見なすことができる。一般に、かかる安全カーネルプログラム80は安全カーネル80をできるだけ小さく、かつ簡単にすることができるように、安全ドメイン内に設けなければならない処理アクティビティにとって不可欠な機能しか提供しないように設計されている。安全カーネル80をできるだけ小さく、かつ簡単にする理由は、このようにすると安全カーネルをできるだけ安全にできるからである。複数の安全アプリケーション82、84は安全カーネル80と組み合わせて実行されるように図示されている。
図3は、異なるセキュリティドメインに関連する処理モードのマトリックスを示す。この特定の例では、処理モードはセキュリティドメインに対して対称的であるので、モード1とモード2は安全な形態および非安全な形態の双方に存在する。
モニタモードはシステム内で最高レベルのセキュリティアクセスを有し、この実施例では、モニタモードはシステムを非安全ドメインと安全ドメインとに両方向に切り換えできる権利が与えられた唯一のモードである。従って、すべてのドメインの切り換えはモニタモードおよびモニタモードにあるモニタプログラム72の実行へ切り換えることにより行われる。
図4は、非安全ドメイン処理モード1、2、3、4および安全ドメイン処理モードa、b、cの別のセットを略図で示す。図3の対称的な構造と対照的に、図4は安全ドメインの一方または他方には処理モードの一部が存在できないことを示している。モニタモード86は再び非安全ドメインと安全ドメインとをまたがるように図示されている。モニタモード86は安全処理モードと見なすことができる。このモードでは安全ステータスフラグを変えることができ、モニタモードのモニタプログラム72は自ら安全ステータスフラグをセットする能力を有するので、このモニタプログラムは全体としてシステム内の究極的レベルのセキュリティを有効に提供する。
図5はセキュリティドメインに対する処理モードの別の構造を略図で示す。この構造では、安全ドメインおよび非安全ドメインの双方だけでなく、更に別のドメインも識別される。この別のドメインは図示されている安全ドメインまたは非安全ドメインのいずれとも相互作用しなくてもよいように、システムの他の部分からアイソレートされ、この別のドメインが安全ドメインおよび非安全ドメインのどれに属すかという問題関係のないようにできる。
後に理解できるように、マイクロプロセッサのような処理システムには通常レジスタバンク88が設けられ、このバンクにはオペランド値を記憶できる。図6は処理モードのうちの所定のモードにおけるレジスタ番号のうちの所定の番号に対して設けられた専用レジスタを有するレジスタバンクの一例の、プログラマーのモデル図を示す。より詳細には、図6の例は(英国ケンブリッジのARMリミテッド社のARM7(登録商標)プロセッサ内に設けられるような)公知のARMレジスタバンクの拡張であり、このレジスタバンクには各処理モードに対して専用のセーブされたプログラムステータスレジスタ、専用のスタックポインタレジスタおよび専用のリンクレジスタR14が設けられるが、この場合、このレジスタバンクはモニタモードを設けることによって拡張される。図6に示されるように、高速インターラプトモードは高速インターラプトモードに入ったときに他のモードからのレジスタコンテンツをセーブし、再記憶する必要がないように設けられた別の専用レジスタを有する。別の実施例では、このモニタモードには高速インターラプトモードと同じように別の専用レジスタを設け、安全ドメインの切り換えの処理をスピードアップし、かかる切り換えに関連したシステムの待ち時間(latency)を小さくできる。
図7は、安全ドメインおよび非安全ドメインでそれぞれ使用される2つの完全な別個のレジスタバンク状にレジスタバンク88が設けられた別の実施例を略図で示す。このことは非安全ドメインへの切り換えをしたときに安全ドメイン内で作動できる、レジスタ内に記憶された安全データにアクセス可能になることを防止する1つの方法である。しかしながら、この構造は非安全ドメインおよび安全ドメインの双方でアクセス可能なレジスタ内にデータを入れる、高速かつ効率的な手順を使用することにより、可能かつ好ましいように、非安全ドメインから安全ドメインへのデータが通過する可能性を阻止するものである。
安全レジスタバンクを設ける重要な利点は1つのワールドから別のワールドに切り換える前に、レジスタのコンテンツをフラッシングさせる必要をなくてもよいようにすることである。待ち時間(latency)が重要な問題でなければ、例えば図6のように安全ドメインのワールドに対して重複したレジスタを有しない、より簡単なハードウェアシステムを使用できる。このモニタモードはあるドメインから別のドメインへ切り換える役割を果たす。コンテンツのリストア、前のコンテンツのセーブだけでなく、レジスタのフラッシングはモニタモードで少なくとも部分的に作動中のモニタプログラムによって実行される。従って、このシステムは仮想化モデルのように働く。以下、このタイプの実施例について更に検討する。例えば本明細書に説明するセキュリティの特徴を構築したARM7のプログラマーのモデルについて参照すべきである。
プロセッサモード
安全ワールドにおける複製モードの代わりに同じモードが安全ドメインおよび非安全ドメインの双方をサポートする(図8参照)。モニタモードは(例えばコプロセッサコンフィギュレーションレジスタから記憶されたSビットを読み出すように)コアの現在のステータスが安全であるか、非安全であるかを知る。
図8ではSMI(ソフトウェアモニタインターラプト命令)が生じるたびに、コアはあるワールドから別のワールドに正しく切り換えるためのモニタモードに入る。
ユーザーモードからSMIが許可される図9を参照する。
1.スケジューラはスレッド1を開始する。
2.スレッド1は安全機能=>SMI安全コールを実行しなければならず、コアはモニタモードに入る。ハードウェアの制御により、R14_monおよびSPSR_mon(モニタモードのためのセーブされたプロセッサステータスレジスタ)が現在のPCおよびCPSR(現在のプロセッサステータスレジスタ)が記憶され、IRQ/FIQインターラプトがディスエーブルされる。
3.モニタプログラムは次のタスクを行う。
−Sビットをセットする(安全ステータスフラグ)。
−安全アプリケーションが作動中に例外が生じた場合でも、非安全コンテクストを失うことができないようにスタック内に少なくともR14_monおよびSPSR_monをセーブする。
−開始する新しいスレッド:安全スレッド1があるかどうかをチェックする。(一部の実施例におけるスレッドIDテーブルを介し)手順はスレッド1が安全ワールド内でアクティブであることを表示する。
−IRQ/FIQインターラプトを再イネーブルする。次に安全ユーザーモードで安全アプリケーションがスタートできる。
4.安全スレッド1が終了するまで作動し、モニタプログラムモードの安全機能からのリターンへ分岐(SMI)する(次にコアがモニタモードに入ったときにIRQ/FIQインターラプトがディスエーブルされる)。
5.安全からのリターン機能は次のタスクを行う。
−安全スレッド1が終了したことを表示する(例えばスレッドIDテーブルの場合、テーブルからスレッド1を除く)。
−スタックから非安全コンテクストをリストアし、必要なレジスタをフラッシングし、非安全ドメインへのリターンが一旦なされると、安全データを読み出しできないようにする。
−次にSUBS命令(この命令はプログラムカウンタを正しいポイントにリストアし、ステータスフラグを更新する)により非安全ドメインへ戻るように分岐し、(リストアされたR14_monからの)PCおよび(SPSR_monからの)CPSRをリストアする。よって、非安全ドメインにおけるポイントへのリターンはスレッド1において前に実行されたSMIに続く命令となる。
6.スレッド1はエンドまで実行され、スケジューラへ戻すようにハンドを与える。
上記機能の一部を、特定の実施例によっては、モニタプログラムと安全オペレーティングシステムとに分割できる。
別の実施例では、ユーザーモードではSMIが生じないようにすることが望ましい。
安全ワールドへの進入
リセット
ハードウェアのリセットが生じると、MMUはディスエーブルされ、ARMコア(プロセッサ)はセットされたSビットにより安全スーパーバイザーモードへ分岐する。一旦、安全ブートが終了されると、モニタモードに進むSMIを実行でき、所望した場合モニタは、非安全ワールド(非安全svcモード)におけるOSへ切り換えできる。遺産(legacy)OSを使用したい場合、このOSは単に安全スーパーバイザーモードへブートでき、安全ステートを無視できる。
SMI命令
この命令(モード切り換えソフトウェアインターラプト命令)は、非安全ドメイン内の非安全モードからコールできる(前に述べたようにSMIを特権モードに制限することが望ましいことがある)が、関連するベクトルによって決定されるターゲット進入ポイントは常に固定されており、モニタモード内にある。これは、実行すべき(例えば命令によってパスされるオペランドによって制御される)適当な安全機能に分岐するためのSMIハンドラーまでである。
図6のタイプのレジスタバンク内のレジスタバンクの共用レジスタを使用し、非安全ワールドから安全ワールドまでのパラメータのパスを実行できる。
非安全ワールド内でSMIが生じると、ARMコアがハードウェア内の次のアクションを行うことができる。
−モニタモードへのSMIベクトルへ分岐すること(次にモニタモードに入るので、安全メモリへのアクセスが許可される)。
−PCをR14_monにセーブし、CPSRをSPSR_monにセーブすること。
−モニタプログラムを使ってSビットをセットすること。
−モニタモードでの安全例外ハンドラーの実行をスタートすること(マルチスレッドの場合、コンテクストをリストア、すなわちセーブすること)。
−適当な機能を実行するための安全ユーザーモード(またはSVCモードのような別のモード)への分岐。
−コアがモニタモードとなっている間、IRQおよびFIQをディスエーブルすること(待ち時間(latency)が大きくなる)。
安全ワールドの出口
安全ワールドから出る可能性は2つある。すなわち、
−安全機能を終了し、この機能をコールした前の非安全モードに戻ること。
−非安全例外(例えばIRQ/FIQ/SMI)により安全機能をインターラプトすること。
安全機能の通常のエンド
安全機能は正常に終了し、SMIの直後の命令で非安全ワールド内のアプリケーションをレジュームしなければならない。安全ユーザーモードでは、「安全ワールドからのリターン」ルーチンに対応する適当なパラメータにより、モニタモードにリターンするようにSMI命令を実行する。このステージでは、非安全ワールドと安全ワールドとの間のデータの漏れを防止するためにレジスタをフラッシュし、非安全コンテクスト汎用レジスタをリストアし、非安全バンクレジスタが非安全ワールドで持っていた値により、非安全バンクレジスタを更新する。R14_monおよびSPSR_monは「MOVS PC、R14」命令を実行することにより、SMIの後で非安全アプリケーションをレジュームするように適当な値を得る。
非安全例外に起因する安全機能の出口
この場合、安全機能は終了せず、取り扱いの必要なインターラプトがあれば、非安全例外ハンドラーに進む前に安全コンテクストをセーブしなければならない。
安全インターラプト
安全インターラプトに対してはいくつかの可能性がある。
次のことに応じて2つの可能な解決案が提案される。
−どんな種類のインターラプトであるか(安全または非安全)。
−(安全ワールドまたは非安全ワールドのいずれかにおいて)IRQが生じたときにコアはどのモードになっているか。
解決案1
この解決案では、安全インターラプトおよび非安全インターラプトをサポートするのに2つの別個のピンが必要とされる。
非安全ワールド内にある間、
−IRQが生じた場合、コアはARM7のようなARMコアにおけるように、このインターラプトを取り扱うためにIRQモードに進む。
−SRIQが生じた場合、コアはモニタモードに進み、非安全コンテクストをセーブし、次に安全IRQハンドラーに進み、安全インターラプトを取り扱う。
安全ワールド内にある間、
−SIRQが生じた場合、コアは安全IRQハンドラーに進む。コアは安全ワールドから離れない。
−IRQが生じた場合、コアはモニタモードに進み、このモードで安全コンテクストがセーブされ、次に非安全IRQハンドラーに進み、この非安全インターラプトを取り扱う。
換言すれば、現在のワールドに属しないインターラプトが生じると、コアは直接モニタモードに進み、そうでない場合、コアは現在のワールドに留まる(図10参照)。
安全ワールドで発生するIRQ
図11A参照:
1.スケジューラはスレッド1を開始する。
2.スレッド1は安全機能=>SMI安全コールを実行しなければならず、コアはモニタモードに入る。R14_monおよびSPSR_monに現在のPCおよびCPSRが記憶され、IRQ/FIQインターラプトがディスエーブルされる。
3.モニタハンドラー(プログラム)は次のタスクを行う。
−Sビットをセットする。
−安全アプリケーションが作動中に例外が生じた場合でも、非安全コンテクストを失うことができないようにスタック内に少なくともR14_monおよびSPSR_monをセーブする(可能な場合には別のレジスタもプッシュする)。
−開始する新しいスレッド:安全スレッド1があるかどうかをチェックする。(スレッドIDテーブルを介し)手順はスレッド1が安全ワールド内でアクティブであることを表示する。
−次に安全ユーザーモードで安全アプリケーションがスタートでき、IRQ/FIQインターラプトを再イネーブルする。
4.安全スレッド1の実行中にIRQが生じる。コアは直接モニタモード(特殊ベクトル)にジャンプし、モニタモードでR14_monに現在のPCを記憶し、SPSR_monにCPSRを記憶する。
5.安全コンテクストをセーブしなければならず、前の非安全コンテクストをリストアする。モニタハンドラーは適当な値によりR14_IRQ/SPSR_IRQを更新するように、IRQモードとなることができ、次に制御を非安全IRQハンドラーへ移す。
6.IRQハンドラーはIRQをサービスし、次に非安全ワールドでスレッド1へ制御を戻す。CPSRおよびPCにSPRS_IRQおよびR14_IRQをリストアすることにより、次にスレッド1はインターラプトされたSMI命令をポイントする。
7.SMI命令を再実行する(2と同じ命令)。
8.モニタハンドラーはこのスレッドが前にインターラプトされていると判断し、スレッド1のコンテクストをリストアする。次に、ユーザーモードで安全スレッド1に分岐し、インターラプトされた命令をポイントする。
9.終了するまで安全スレッド1が作動し、モニタモード(専用SMI)で(安全からのリターン)機能に分岐する。
10.(安全からのリターン)機能は次のタスクを行う。
−安全スレッド1が終了したことを表示する(すなわちスレッドIDテーブルの場合、テーブルからスレッド1を除く)。
−スタックから非安全コンテクストをリストアし、必要なレジスタをフラッシングし、非安全ワールドへのリターンが一旦なされた場合に、安全データを読み出しできないようにする。
−SUBS命令により非安全ワールドに戻るように分岐し、(リストアされたR14_monからの)PCおよび(SPRS_monからの)CPSRをリストアする。よって、非安全ワールド内のリターンポイントはスレッド1において前に実行されたSMIに続く命令となるはずである。
11.エンドまでスレッド1が実行され、スケジューラに制御を戻す。
非安全ワールドで生じるSIRQ
図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イベントを再び作成する必要が生じる。
解決案2.
この手順(図12参照)では、2つの別個のピンまたは1つのピンだけで安全インターラプトおよび必要がインターラプトをサポートできる。2つのピンを設けることによってインターラプトの待ち時間(latency)を小さくできる。
非安全ワールド内にある場合に、
−IRQが生じた場合、コアはARM7のシステム内と同じようにこのインターラプトを取り扱うように、IRQモードに進む。
−SIRQが生じた場合、コアはIRQハンドラーに進み、ここでSMI命令がコアをモニタモードに分岐させ、非安全コンテクストをセーブし、次に安全IRQハンドラーに進み、安全インターラプトを取り扱う。
安全ワールド内にある間に、
−SIRQが生じた場合、コアは安全IRQハンドラーに進む。コアは安全ワールドを離れない。
−IRQが生じた場合、コアは安全IRQハンドラーに進み、ここでSMI命令がコアをモニタモード(ここで安全コンテクストがセーブされる)に分岐させ、次に非安全IRQハンドラーに進み、この非安全インターラプトを取り扱う。
安全ワールド内でのIRQの発生
図13A参照:
1.スケジュールがスレッド1を開始する。
2.スレッド1は安全機能=>SMI安全コールを実行しなければならず、コアはモニタモードに入る。R14_monおよびSPSR_monに現在のPCおよびCPSRが記憶され、IRQ/FIQがディスエーブルされる。
3.モニタハンドラーは次のタスクを行う。
−Sビットをセットする。
−安全アプリケーションが作動中に例外が生じた場合でも、非安全コンテクストを失うことができないようにスタック内(最終的には他のレジスタ内)に少なくともR14_monおよびSPSR_monをセーブする。
−ローンチする新しいスレッド:安全スレッド1があるかどうかをチェックする。(スレッドIDテーブルを介し)手順はスレッド1が安全ワールド内でアクティブであることを表示する。
−次に安全ユーザーモードで安全アプリケーションがスタートでき、IRQ/FIQを再イネーブルする。
4.安全スレッド1の実行中にIRQが生じる。コアは直接安全IRQモードにジャンプする。
5.コアはR14_IRQに現在のPCを記憶し、SPRS_IRQにCPSRを記憶する。IRQハンドラーはこれが非安全インターラプトであることを検出し、SMIを実行し、適当なパラメータによりモニタモードに入る。
6.安全コンテクストをセーブしなければならず、前の非安全コンテクストをリストアする。モニタハンドラーはCPSRを読み出すことにより、SMIがどこから来たものであるかを知る。モニタハンドラーはIRQモードに進み、R14_IRQ/SPSR_IRQを読み出し、安全なコンテクストを適当にセーブすることもできる。更に、モニタハンドラーはIRQルーチンが終了した場合、リストアしなければならない非安全コンテクストをこれら同じレジスタにセーブすることもできる。
7.IRQハンドラーはIRQをサービスし、次に非安全ワールドでスレッド1へ制御を戻す。SPRS_IRQおよびR14_IRQをCPSRおよびPCにリストアすることにより、次にコアはインターラプトされたSMI命令をポイントする。
8.SMI命令を再実行する(2と同じ命令)。
9.モニタハンドラーはこのスレッドが前にインターラプトされていると判断し、スレッド1のコンテクストをリストアする。次に、ユーザーモードで安全スレッド1に分岐し、インターラプトされた命令をポイントする。
10.終了するまで安全スレッド1が作動し、モニタモード(専用SMI)で(安全からのリターン)機能に分岐する。
11.(安全からのリターン)機能は次のタスクを行う。
−安全スレッド1が終了したことを表示する(すなわちスレッドIDテーブルの場合、テーブルからスレッド1を除く)。
−スタックから非安全コンテクストをリストアし、必要なレジスタをフラッシングし、非安全ワールドへのリターンが一旦なされた場合に、安全データを読み出しできないようにする。
−SUBS命令により非安全ワールドに戻るように分岐し、(リストアされたR14_monからの)PCおよび(SPRS_monからの)CPSRをリストアする。よって、非安全ワールド内のリターンポイントはスレッド1において前に実行されたSMIに続く命令となるはずである。
12.エンドまでスレッド1が実行され、スケジューラにハンドを戻す。
非安全ワールドで生じるSIRQ
図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命令が非安全コンテクストをリストアし、よってSUBS命令がコアを非安全ワールドに戻し、インターラプトされたIRQハンドラーをレジュームする。
7.IRQハンドラーは次にSUBSを実行することにより、非安全スレッドに戻ることができる。
8.スレッド1はエンドまで実行され、次に制御をスケジューラに戻す。

図12の手順により、入れ子状のインターラプトの場合、SIRQイベントを再作成する必要はないが、安全インターラプトが実行される保証はない。
例外ベクトル
仮想アドレスの見地から物理的ベクトルテーブルは単一ベクトルテーブルとして見えるが、少なくとも2つの物理的ベクトルテーブルが維持される。一方のテーブルは非安全メモリ内の非安全ワールドのためのものであり、一方は(非安全ワールドからアクセスできない)安全メモリ内の安全ワールドのためのものである。安全ワールドおよび非安全ワールド内に使用される仮想−物理メモリの異なるマッピングによって同じ仮想的メモリアドレスが効果的に物理メモリ内に記憶されている異なるベクトルテーブルにアクセスできるようになる。モニタモードは物理メモリ内の第3ベクトルテーブルを提供するのに常にフラットなメモリマッピングを使用できる。
インターラプトが図12の手順に従う場合、各テーブルに対し、図14に示されるような次のベクトルが生じる。このベクトルセットは安全メモリおよび非安全メモリの双方で重複する。
Figure 0004302641
注:リセットへの進入は安全ベクトルテーブル内でしかない。非安全ワールドでリセットが実行されると、コアハードウェアはスーパーバイザーモードに入ることおよびSビットのセットを強制し、安全メモリ内でリセットベクトルにアクセスできる。
図15は安全モード、非安全モードおよびモニタモードにそれぞれ適用できる3つの例外ベクトルテーブルを示す。これら例外ベクトルテーブルは安全および非安全オペレーティングシステムの条件および特性に一致するように例外ベクトルでプログラムすることができる。例外ベクトルテーブルの各々はメモリ内のテーブルをポイントするベースアドレスを記憶するCP15内の関連するベクトルテーブルベースアドレスレジスタを有することができる。例外が生じると、ハードウェアはシステムの現在のステートに対応するベクトルテーブルベースアドレスレジスタを基準にし、使用すべきベクトルテーブルのベースアドレスを決定する。これとは異なり、異なるモードで適用される仮想−物理メモリの異なるマッピングを使用して、異なる物理メモリアドレスに記憶された3つの異なるベクトルテーブルを分離できる。図16に示されるように、プロセッサのコアに関連するシステム(コンフィギュレーション制御)コプロセッサ(CP15)には例外トラップマスクレジスタが設けられている。この例外トラップマスクレジスタはそれぞれの例外のタイプに関連するフラグを提供し、これらフラグはハードウェアが処理を現在のドメイン内で関連する例外のためのいずれかのベクトルに向けて作動するのか、またはスイッチをモニタモード(ある種の安全モードである)へ切り換えるべきかを表示し、次にモニタモードベクトルテーブル内のベクトルに従う。この例外トラップマスクレジスタ(例外制御レジスタ)はモニタモードからしか書き込みできない。非安全モードでは、例外トラップマスクレジスタへの読み出しアクセスも阻止されるようにできる。更にシステムは安全ブートおよび後方へのコンパチビリティを保証するように、安全ベクトルテーブルで指定されるような安全スーパーバイザーモードでシステムをリセットベクトルに常にジャンプさせるように構成されているので、図16の例外トラップマスクレジスタはリセットベクトルのためのフラグを含まないことが理解できよう。また図15では、完全を期すために、安全スーパーバイザーモードの安全ベクトルテーブルを除くベクトルテーブルには、リセットベクトルが示されていることが理解できよう。
図16は、安全ブート中のモニタプログラムにより例外トラップマスクレジスタ内の異なる例外タイプに対するフラグをプログラムできることも示している。これとは異なり、フラグの一部またはすべてが物理的入力信号によって所定の実行手段で提供できる。すなわち安全インターラプト信号が受信されたときに、対応するモニタモードの安全インターラプトリクエストベクトルの実行およびモニタモードへの進入を常に強制するように、安全インターラプトフラグSIRQをハードウェア化できる。図16は非安全ドメインの例外に関係する例外トラップレジスタの部分しか示していない。安全例外に対してプログラマブルビットの同様なセットが提供される。
これまでの記載から、例外制御レジスタフラグに応じて1つのレベルではハードウェアは現在のドメイン例外ハンドラーによってインターラプトをサービスさせるか、またはモニタモード例外ハンドラーによってサービスさせるかのいずれかに作動することが理解できようが、これは適用される制御の第1レベルにすぎない。例えば安全モードで例外が生じて、安全モードの例外ベクトルが安全モード例外ハンドラーに従うことが可能であるが、この安全モード例外ハンドラーはこの例外が非安全例外ハンドラーによって良好に処理される性質のものであると判断する。従って、非安全モードへの切り換え、および非安全例外ハンドラーを呼び出すのにSMI命令を利用する。ハードウェアが非安全例外ハンドラーを開始するように働く場合、この逆も可能であるが、その場合、処理を安全例外ハンドラーまたはモニタモード例外ハンドラーに向ける命令を実行する。
図17は新しいタイプの例外に関連した別の可能性のあるタイプの切り換えリクエストをサポートするためのシステムの動作を略図で示すフローチャートである。ステップ98において、ハードウェアは現在のプログラムステータスレジスタ(CPSR)における表示としてモニタモードを変えようと試みる命令を検出する。かかる試みが検出されると、新しいタイプの例外がトリガーされる。本明細書ではこの例外をCPSR違反例外と称す。ステップ100におけるこのCPSR違反例外が発生する結果、モニタモード内での適当な例外ベクトルを参照し、ステップ102でCPSR違反例外を取り扱うためのモニタプログラムが作動される。
これまで説明したSMI命令のためのサポートの他に、図17に関連して説明した安全ドメインと非安全ドメインとの切り換えを開始するための手順を設けることができることも理解できよう。この例外手順は、SMI命令を介し、すべての正当な試みを行うべき切り換えモードに対する不正な試みに応答するように設けることができる。これとは異なり、かかる手順は安全ドメインと非安全ドメインとを切り換える正当な方法でもよいし、または安全ドメインと非安全ドメインとを切り換える不正な試みを真に行うとはしていない場合でも、正常な動作の一部として処理ステータスレジスタをクリアにしようとする現在のコードとの後方コンパチビリティを与えるように設けることもできる。
上記のように、一般にプロセッサがモニタモードで作動しているとき、インターラプトをディスエーブルする。これはシステムのセキュリティを高めるために行われる。インターラプトが生じると、このときのプロセッサのステートがインターラプト例外レジスタに記憶され、よってインターラプト機能の完了時にインターラプトポイントでインターラプトされた機能の処理をレジュームできる。このプロセスはモニタモードで許可される場合、このことはモニタモードのセキュリティを下げ、起こり得る安全データが漏れるパスを生じさせ得る。この理由からモニタモードではインターラプトは一般にディスエーブルされる。しかしながら、モニタモード中のインターラプトをディスエーブルする結果、インターラプトの待ち時間(latency)が大きくなる。
機能を実行するプロセッサのステートが記憶されていない場合、モニタモードでインターラプトを認めることが可能である。インターラプトに次いで、機能をレジュームしない場合に限り、これを行うことができる。従って、モニタモードでのインターラプトの待ち時間(latency)の問題は、安全に再スタートできる機能のモニタモードにしか、インターラプトを認めないことによって解決できる。この場合、モニタモードでのインターラプトの後で、機能の処理に関係するデータを記憶せず、投げ棄て、インターラプトが一旦終了すると、その開始から機能の処理をスタートするようにプロセッサに命令される。上記例では、プロセッサは単にモニタモードに切り換わったポイントに戻るだけであるので、これを行うことは簡単なことである。機能を再スタートすることは、再スタートできる所定の機能に対してのみ可能であり、機能の再スタートは繰り返すことができる結果を生じることに留意すべきである。機能を再スタートした場合にプロセッサが異なる結果を生じるように機能がプロセッサのステートを変える場合、機能を再スタートすることはよいアイデアではない。この理由から、安全に再スタートできる機能だけをモニタモードでインターラプトでき、他の機能に対してはインターラプトをディスエーブルする。
図18は、本発明の一実施例に従ってモニタモードで発生するインターラプトを取り扱う1つの方法を示す。非安全モードでは、タスクAの処理中にSMIが生じ、このことはプロセッサをモニタモードに切り換える。SMI命令は専用非安全SMIベクトルによりコアをモニタモードにする。PCの現在のステートがセーブされ、Sビットがセットされ、インターラプトがディスエーブルされる。一般に、非安全モードのPCおよびCPSRをセーブするのにLR_monおよびSPSR_monが使用される。
次に、1つの機能、すなわち機能Cがモニタモードで開始される。最初に機能Cが行うことは、インターラプトをイネーブルすることであり、次に機能Cが処理される。機能Cの処理中にインターラプトが生じた場合、インターラプトは受け入れられ実行されるように、インターラプトがディスエーブルされる。しかしながら、モニタモードインジケータはインターラプトの後で、機能をレジュームすべきでなく、むしろ再スタートすべきであることをプロセッサに表示する。これとは異なり、このことを別個の制御パラメータによりプロセッサに表示してもよい。従って、インターラプトに続き、インターラプト例外ベクトルをLR_monおよびSPSR_monの値で更新し、プロセッサの現在ステートを記憶しない。
図18に示されるように、インターラプトタスク、すなわちタスクBの完了の後でプロセッサはインターラプトレジスタにコピーされたSMI命令のアドレスを読み出し、SMIを実行し、機能Cの処理を再びスタートする。
上記プロセスは機能Cが再スタート可能な場合、すなわちプロセスCを再スタートする結果、処理ステップを繰り返しできるようになる場合にしか作動しない。このことは機能Cが将来の処理に影響を与えるスタックポインタのようなプロセッサのステートを変更する場合のケースである。このように繰り返し可能な機能はべき等性(idenpotence)を有すると称す。べき等性を有しない機能の問題を処理する1つの方法は、コードの最初の部分がべき等性を有するように機能を定義するコードを再配置することであり、べき等性を有するようにコードを構成し直すことができなかった場合、インターラプトをディスエーブルする。例えばコードCがスタックへの書き込みに関係する場合、少なくとも最初にスタックポインタを更新することなく、このようにすることが可能である。コードを安全に再スタートできないと判断できた場合、機能Cに対するコードはインターラプトをディスエーブルするようにプロセッサに命令し、プロセッサがスタックポインタを正しい位置に更新できる。このことは図18に示されており、ここでは機能Cの処理によりインターラプトは所定の方法でディスエーブルされる。
図19は若干異なる例を示す。この例では、タスクCを処理することによる所定の方法で別の制御パラメータがセットされる。このパラメータはタスクCのその後の部分、厳密にはべき等性ではなく、最初にアップルーチンを実行することを条件に安全に再スタートできることを示す。このフィックスアップルーチンはタスクCのスタートにプロセッサがどのようになっていたかを示すプロセッサのステートをリストアするように働くので、タスクCを安全に再スタートし、プロセッサが行ったときにインターラプトされていなかったタスクのエンド時に同じプロセッサのステートを発生できる。一部の実施例では、別の制御パラメータをセットしたポイントにおいて若干の間、インターラプトをディスエーブルできるが、プロセッサの一部のステートは更新されるスタックポインタのように補正される。これによってプロセッサを後にアイデムポテントステートにリストアすることが可能となる。
別の制御パラメータをセットした後にインターラプトが生じた場合に続行できる2つの方法がある。フィックスアップルーチンを(F1で)即座に実行し、次にインターラプトを処理してもよいし、またインターラプトを即座に処理し、インターラプトの完了後にSMIを実行し、タスクCの再スタート前に(F2で)フィックスアップルーチンを実行してもよい。理解できるように、これら実施例のいずれにおいても、フィックスアップルーチンはモニタモードで実行され得ので、安全ドメインであることを知らないか、またはモニタモードであることを知らない非安全ドメインでの実行には影響がない。
図19から判るように、コードCの最初の部分はべき等性を有し、インターラプトの後にこれを再スタートできる。フィックスアップルーチンが高速で実行されることを条件に、第2部分は再スタート可能であり、このことは「別の」制御パラメータをセットすることによって表示される。コードの最終部分は再スタートできないので、このコードを処理する前にインターラプトをディスエーブルする。
図20は別の例を示し、この場合、この例は他の例と異なっており、モニタモード中にインターラプトをイネーブルする。次に、モニタモードで作動する機能はインターラプトがもはや安全に再スタートできなくなるとすぐにインターラプトをディスエーブルするように働く。このことは、モニタモードでインターラプトされたすべての機能がレジュームされるのではなく、再スタートされた場合にしか可能ではない。
インターラプト時に所定のモードで作動するすべての機能をレジュームするのではなく再スタートすることを保証できるようにする方法は種々ある。1つの方法は、インターラプトされた命令がインターラプトされた命令のアドレスではなく、命令シーケンスのスタートのアドレスをセーブする新しいプロセッサステートを加える方法である。この場合、モニタモードは既にこのステートで作動する。別の方法は、各機能のスタート時にインターラプト例外レジスタに機能のスタートのアドレスをあらかじめロードし、インターラプト例外レジスタへのインターラプトの後のプロセッサのステートのその後の書き込みをディスエーブルする方法である。
図20に示された実施例では、インターラプト機能の終了直後に機能の再スタートを行ってもよいし、または必要であれば、機能を安全に再スタートできるようにするのにフィックスアップルーチンの後で行ってもよい。
安全および非安全ドメイン、ならびにモニタモードを有するシステムに関連して、インターラプト待ち時間(latency)を取り扱う上記方法について説明したが、この方法は特定の理由からレジュームすべきでない機能を有するシステムに明らかに適用できる。一般にかかる機能はインターラプトレジュームを大きくするインターラプトをディスエーブルすることによって作動する。再スタートを可能にすべき機能を補正し、インターラプト後に機能を再スタートするようにプロセッサを制御することにより、機能の処理の少なくとも一部に対してインターラプトをイネーブルできるようになり、更にインターラプトの待ち時間(latency)を小さくすることに役立つ。例えばオペレーティングシステムの通常のコンテクストの切り換えに役立つ。
安全メモリおよび非安全メモリへのアクセス
図1を参照して説明したように、データ処理装置は特にTCM36、キャッシュ38、ROM44、スレーブデバイスのメモリおよび外部メモリ56を含むメモリを有する。例えば図37を参照して説明したように、メモリは安全メモリと非安全メモリに分割されている。製造時にメモリの安全メモリ領域と非安全メモリ領域との間には一般に物理的な区別はないが、その代わり、これら領域は安全ドメインで作動しているときのデータ処理装置の安全オペレーティングシステムによって定められる。従って、メモリデバイスの物理的部分を安全メモリとして割り当て、任意の物理部分を非安全メモリとして割り当てできる。
図2〜5を参照して説明するように、処理システムは安全ドメインと非安全ドメインとを有する。安全ドメインでは安全カーネルプログラム80が設けられ、このプログラムは安全モードで実行される。安全ドメインと非安全ドメインとをまたがり、少なくとも一部がモニタモードで実行されるモニタプログラム72が設けられる。本発明の実施例ではモニタプログラムの一部はモニタモードで実行され、一部は安全モードで実行される。例えば図10に示されるように、特にスーパーバイザーモードSVCを含む安全モードは複数ある。
モニタプログラム72は両方向の安全ドメインと非安全ドメインとのすべての切り換えを管理する役割を果たす。「プロセッサモード」の章において、図8および9を参照し、これら機能の一部について説明する。モニタプログラムは前記非安全モードから前記安全モードへの切り換えを開始するために、非安全モードで発行されたモード切り換えリクエストSMIおよび前記安全モードから前記非安全モードへの切り換えを開始するために安全モードで発生されたモード切り換えリクエストSMIに対して応答できる。「ワールド間の切り換え」なる章で説明したように、モニタモードでは安全ドメインおよび非安全ドメインの一方から他方へのレジスタのうちの少なくとも一部の切り換えが行われる。このことはあるドメインに存在するレジスタのステートをセーブし、他のドメインにあるレジスタへの新しいステートの書き込み(または以前にセーブされたステートをレジスタにリストアすること)を必要とする。本明細書でも説明したように、かかる切り換えを実行する際には一部のレジスタへのアクセスをディスエーブルすることができる。好ましくはモニタモードではすべてのインターラプトモードをディスエーブルする。
モニタモードが実行されるモニタモードは安全ドメインと非安全ドメインとにまたがっているので、モニタプログラムが恐らく安全であることが重要である。すなわちモニタプログラムは実行しようとする機能しか実行しない。従って、モニタプログラムはできるだけ簡単であれば有利である。安全モードによってプロセスが安全ドメインでしか実行できないようにすることができる。本発明のこの実施例では、特権安全モードおよびモニタモードにより同じ安全メモリおよび非安全メモリにアクセスすることが可能となっている。特権安全モードが同じ安全メモリおよび非安全メモリを「見る」ことを保証することにより、モニタモードでしか実行されない機能を安全モードに移し、モニタプログラムの簡略化を可能にできる。更に、このことによって特権安全モードで作動するプロセスが直接モニタプログラムに切り換わり、逆にモニタモードから特権安全モードに切り換わることができるようになる。特権安全モードからモニタモードへの切り換えが許可されると、モニタモードで非安全モードへの切り換えを行うことができる。非特権安全モードはモニタモードに入るのにSMIを使用しなければならない。このシステムはリセット後、特権安全モードに入る。モニタモードと特権安全モードとの切り換えはドメイン間で移動するときのステートのセーブを容易にするように行われる。
別の実施例ではSフラグへのアクセスは安全特権モードからだけでなくモニタモードからでも認められる。プログラムフローの制御を維持しながら、プロセッサをモニタモードに切り換えるように安全特権モードが認められる場合、かかる安全特権モードは有効にSフラグ(ビット)を変える能力を既に有している。従って、モニタモードでしかSフラグを変更できないことを定めるが、追加されることは是認されない。その代わり、1つ以上の安全特権モードにより変更できる他のコンフィギュレーションフラグを同じようにSフラグを記憶できる。現在の技術には1つ以上の安全特権モード内でSフラグを変更できるかかる実施例が含まれる。
次に、前に説明した実施例に戻ると、本装置はモードを定め、かつモードの特権レベル、すなわちモードが認める機能のセットを定めるプロセッサコア10を有する。従って、このプロセッサコア10は安全モードおよびモニタモードが安全および非特権メモリにアクセスでき、モニタモードがアクセスを認めているすべてのメモリへアクセスできるようにし、かつ特権安全モードで作動中のプロセスが直接モニタモードへ切り換わり、モニタモードから特権安全モードに切り換えできるように公知の態様で構成されている。このプロセッサコア10は次のことを可能にするようになっていることが好ましい。
本発明の一例では、メモリは安全メモリと非安全メモリとに区分されており、安全メモリと非安全メモリの双方はモニタモードおよび安全モードでしかアクセスできない。非安全メモリはモニタモード、安全モードおよび非安全モードでアクセスできることが好ましい。
本発明の別の例では、モードおよび1つ以上の安全モードでは非安全メモリへのアクセスが安全モードに対して否定され、非安全モードでは非安全メモリへのアクセスが安全モードおよびモニタモードに対して否定される。従って、安全メモリはモニタモードおよび安全モードでしかアクセスできず、非安全メモリは非安全モードでしかアクセスできないので、セキュリティが高まる。
本発明の例では、装置のリセットまたはブートは安全モード、特権モードよりもより高い特権を有するモードと見なすことができるモニタモードで実行できる。しかしながら、本発明の多くの例では直接切り換えが安全モードとモニタモードとの間で認められているので、可能である安全モードでリセットまたはブートを行うようになっている。
図2を参照して説明したように、安全ドメインおよび安全モードでは安全カーネル80(またはオペレーティングシステム)が機能し、この安全カーネル80のもとで1つ以上の安全アプリケーションプログラム82、84が作動できる。安全カーネルおよび/または安全アプリケーションプログラム、または安全モードで作動するその他のプログラムコードは、安全メモリおよび非安全メモリの双方にアクセスすることが認められる。
プロセッサを有する装置を参照して本発明の例について説明したが、本発明は適当なプロセッサで作動するときにこの章で説明したように作動するようにプロセッサを構成するコンピュータプログラムによって実行できる。
プログラマーのモデルの見解から検討した本技術の別の実施例の説明を次のように図21〜23を参照して下記に示す。
次の説明では、英国ケンブリッジのARMリミテッド社によって設計されたようなARMプロセッサに関連して理解すべき次の用語を使用するものとする。
−Sビット:専用CP15レジスタに含まれる安全ステートビット。
−「安全/非安全ステート」。このステートはSビットの値によって定められ、このステートはコアが安全ワールドにアクセスできる(安全ステートとなっており、すなわちS=1となっているとき)のか、または非安全ワールドだけに制限されている(S=0)のかのいずれかを表示する。モニタモード(更に参照)は、Sビットステータスを無効にすることに留意されたい。
−「非安全ワールド」はセキュリティを要しない非安全アプリケーションにアクセスできるすべてのハードウェア/ソフトウェアをグループ分けする。
−「安全ワールド」は安全コードを実行するときにしかアクセスできないすべてのハードウェア/ソフトウェア(コア、メモリ....)をグループ分けする。
−モニタモード:安全ステートと非安全ステートとの間でコアを切り換える役割を果たす新しいモードである。
簡単な要約として、
−コアは常に非安全ワールドにアクセスできる。
−コアは安全ステートまたはモニタモードになっているときにしか、安全ワールドにアクセスできない。
−SMI:ソフトウェアモニタインターラプト:専用SMI例外ベクトルによりコアがモニタモードに入るようにする新しい命令である。「スレッドID」は(OSによって制御される)各スレッドに関連した識別子である。OSが非安全ワールドで作動する一部のタイプのOSに対し、安全機能がコールされるごとに現在のスレッドIDをパラメータとして送り、安全機能と、そのコールしている非安全アプリケーションとをリンクしなければならない。従って、安全ワールドはマルチスレッドをサポートできる。
−安全インターラプトは安全周辺機器が発生したインターラプトを定める。
プログラマーのモデル
カーボン(Carbon)コアの概観
本技術を使用するプロセッサに対して本明細書で使用する用語であるカーボンアーキテクチャの概念は、2つのワールド、すなわち安全ワールドと非安全ワールドとに分離することから成る。安全ワールドは非安全ワールドにどんなデータもリークしてはならない。
提案する解決案では、安全ステートと非安全ステートとは同じ(現在存在する)レジスタバンクを共用する。この結果、ARMコアに存在するすべての現在のモード(Abort(アボート)、Undef(無定義)、IRQ、User(ユーザー)、....が各ステートで存在することになる。
コアは専用CP15レジスタ内でインスタンス生成される新しいステートビット、S(安全)ビットにより、自らが安全ステートで作動しているのか、または非安全ステートで作動しているのかを知る。
Sビットを変更するのに、すなわちあるステートから別のステートに変更するのに、どの命令またはイベントを許可するかを制御することが、本システムのセキュリティのキーとなる特徴である。現在の解決案は新しいモード、すなわち2つのステートの間の切り換えを監督するモニタモードを追加することを提案する。モニタモードは適当なCP15レジスタへの書き込みによりSビットを変更することが認められた唯一のモードとなっている。
最後に、例外の取り扱いにある程度のフレキシビリティを追加することを提案するものである。リセットを除くすべての例外は、生じたステートまたはモニタモードに向けられたステートのいずれかで取り扱われ、この例外の取り扱いは専用CP15レジスタにより構成可能なままとされる。
次のパラグラフでこの解決案の詳細について説明する。
プロセッサステートおよびモード
カーボンの新しい特徴
安全または非安全ステート(Sビット)
カーボンコアの主な1つの特徴は、Sビットが存在していることであり、このSビットはコアが安全(S=1)ステートとなっているか、または非安全(S=0)ステートとなっているかのいずれかを表示する。安全ステートとなっているとき、コアは安全ワールドまたは非安全ワールド内のどのデータにもアクセスできる。非安全ステートとなっているときにコアは非安全ワールドだけに限定される。
この規則に対する唯一の例外は、Sビット情報を無効にするモニタモードに関係している。S=0でも、コアはモニタモードとなっていれば安全特権アクセスを実行する。更なる情報がほしい場合には次のパラグラフであるモニタモードを参照されたい。
Sビットはモニタモードで読み出し書き込みできるにすぎない。Sビットがどんな値となっていても、他のモードがこのビットにアクセスしようとしても、このアクセスは無視されるか、またはその結果、Undefined(無定義)例外が生じる。
リセットを除くすべての例外は安全ステートビットに影響しない。リセット時にSビットがリセットされ、コアはスーパーバイザーモードでスタートする。より詳細な情報がほしい場合にはブートの章を参照されたい。
安全ステート/非安全ステートは別個であり、ARM/Thumb/Java(登録商標)ステートと別個に作動する。
モニタモード
カーボンシステムの別の重要な特徴は、新しいモード、モニタモードを作成したことである。このモードは安全ステートと非安全ステートとの間のコアの切り換えを制御するのに使用される。このモニタモードは常に安全モードと見なされる。すなわちSビットの値がどんな値であってもコアがモニタモードになっていると、コアは常に外部ワールドへの安全特権アクセスを実行する。
CPSRモードビット(MSR、MOVSまたは等価的な命令)を書き込むだけで、どの安全特権モード(例えばS=1のときの特権モード)もモニタモードに切り換わることができる。しかしながら、この切り換えは非安全モードまたは安全ユーザーモードでは禁止される。このことが起こった場合、命令は無視されるか、または例外を生じさせる。
専用CPSR違反例外に対するニーズが生じ得る。この例外は非安全モードまたは安全ユーザーモードからCPSRを直接書き込むことにより、モニタモードへの切り換えの試みにより生じる。
モニタモードがアクティブとなっているときにはリセットを除くすべての例外を実際にディスエーブルする:
・すべてのインターラプトをマスクする。
・すべてのメモリ例外を無視するか、またはこれら例外によって致命的例外が生じる。
・無定義/Undefined/SWI/SMIを無視するか、またはこれらによって致命的例外が生じる。
モニタモードに入るとき、インターラプトを自動的にディスエーブルし、システムモニタが作動中は他のタイプの例外が全く生じないよう、システムモニタを書き込むべきである。
モニタモードはあるプライベートレジスタを有する必要がある。この解決案は、レジスタの最小のセット、すなわちR13(sp_mon)、R14(lr_mon)およびSPSR(spsr_mon)しか複製しないことを提案する。
モニタモードではMMUをディスエーブルする(フラットアドレスマップ)だけでなく、MPUまたはパーティションチェッカーもディスエーブルする(モニタモードは常に安全特権外部アクセスを実行する)。しかしながら、特別にプログラムされたMPU領域の属性(キャッシュ性....)はまだアクティブである。別の例として、モニタモードが安全ドメインによって使用されているどのマッピングも使用できる。
新しい命令
この提案は、現在のARM命令セットに1つの新しい命令を追加しなければならない。
モニタモードに入り、固定SMI例外ベクトルで分岐するのにSMI(ソフトウェアモニタインターラプト)命令が使用される。この命令は非安全ステートと安全ステートとの間で切り換わることをモニタに表示するのに主に使用される。
別の例として(またはその追加として)、モニタモードがモニタスタックに、またはモニタスタックから、他のモードのステートをセーブ/リストアし、コンテクスト切り換え性能を改善できるようにするために、新しい命令を追加することが可能である。
プロセッサモード
前のパラグラフで説明したように、コアでは1つの新しいモード、すなわちモニタモードしか追加されない。現在のすべてのモードは利用できるままであり、安全ステートおよび非安全ステートで存在する。
実際にカーボンユーザーは図21に示された構造を見ることになる。
プロセッサレジスタ
この実施例は、安全ワールドと非安全ワールドとが同じレジスタバンクを共用することを提案するものである。このことは、あるワールドからモニタモードを通して別のワールドに切り換わるときに、システムモニタは最初にワールドコンテクストをセーブし、第2のワールド内にコンテクストを作成(またはリストア)しなければならないことを意味する。
パラメータを送ることは容易なタスクとなる。システムモニタが一旦Sビットを切り換えた場合、最初のワールド内のレジスタに含まれたデータは第2ワールド内の同じレジスタで利用できるようになる。
しかしながら、厳密に制御しなければならないパラメータを送るための専用の限られた数のレジスタとは別に、安全データがリークするのを防止するために、安全ステートから非安全ステートに移る際に他のすべてのレジスタをフラッシングしなければならない。これはモニタカーネルによって保証しなければならない。
安全ステートから非安全ステートに切り換わるときに、レジスタを直接フラッシュするためのハードウェアメカニズムまたは新しい命令を実行できるようにすることも1つの可能性である。
提案される別の解決案は、現在存在するレジスタバンクのすべて(またはほとんど)をコピーし、よって安全ステートと非安全ステートとの間で2つの物理的に分離されたレジスタバンクを設けることである。この解決案はレジスタ内に含まれる安全データと非安全データとを明瞭に分離するという主な利点を有する。更にこのことは、安全ステートと非安全ステートとの間の高速のコンテクストの切り換えも可能にする。しかしながら、欠点として安全ワールドの非安全レジスタへのアクセスを可能にするある専用命令を作成しなければ、レジスタを通してパラメータを送ることが困難となるということが挙げられる。
図22は、プロセッサモードに応じて利用できるレジスタを示す。プロセッサのステートはこの主題に影響するものではないことに留意されたい。
例外
安全インターラプト
現在の解決案
現在のコア内と同じインターラプトピン、例えばIRQおよびFIQを維持することが現在提案されている。(本明細書の後半で定義する)例外トラップマスクレジスタに関連し、システムが異なる種類のインターラプトを実行し、取り扱いできるようにする十分なフレキシビリティがなければならない。
VICエンハンスメント
次のようにVIC(ベクトル化されたインターラプトコントローラ)を強化できる。このVICは各ベクトル化されたアドレスに関連する1つの安全情報ビットを含むことができる。このビットはモニタまたは安全特権モードでしかプログラムできない。このビットは当該インターラプトを安全として取り扱い、従って、安全側で取り扱うべきかどうかを表示する。
我々は2つの新しいベクトルアドレスレジスタも追加する。すなわち1つは、非安全ステートで生じるすべての安全インターラプト用のレジスタであり、他方は、安全ステートで生じるすべての非安全インターラプト用のレジスタである。
CP15に含まれるSビット情報は新しいVIC入力としてVICにも利用できる。
次の表は着信インターラプトのステータス(各インターラプトラインに関連するSビットによって表示される安全または非安全)およびコアのステート(CP15内のSビット=VIC上のS入力信号)に応じた異なる可能性のあるシナリオを要約したものである。
Figure 0004302641
例外取り扱いコンフィギュレーション性
Carbonのフレキシビリティを改善するためにCP15に新しいレジスタ、すなわち例外トラップマスクを追加する。このレジスタは次のビットを含む。
−ビット0:Undef例外 (非安全ステート)
−ビット1:SWI例外 (非安全ステート)
−ビット2:プリフェッチアボート例外 (非安全ステート)
−ビット3:データアボート例外 (非安全ステート)
−ビット4:IRQ例外 (非安全ステート)
−ビット5:FIQ例外 (非安全ステート)
−ビット6:SMI例外 (非安全ステート/安全ステートの双方)
−ビット16:Undef例外 (非安全ステート)
−ビット17:SWI例外 (非安全ステート)
−ビット18:プリフェッチアボート例外 (非安全ステート)
−ビット19:データアボート例外 (非安全ステート)
−ビット20:IRQ例外 (非安全ステート)
−ビット21:FIQ例外 (非安全ステート)
リセット例外はこのレジスタに対応するビットを有しない。リセットは常に専用ベクトルを通してコアを安全スーパーバイザーモードに進入させる。
ビットがセットされている場合、対応する例外はコアをモニタモードに進入させる。そうでない場合、例外が生じたワールド内の対応するハンドラー内で例外が取り扱われる。
このレジスタはモニタモードでしか見ることができない。他のモードにおいて、このレジスタにアクセスしようとする命令は無視される。
このレジスタはシステムがモニタをサポートしているか否かに応じてシステム固有の値に初期化すべきである。この機能はVICによって制御できる。
例外ベクトルの表
別個の安全ワールドと非安全ワールドとが生じるので、別個の安全例外別個の表と非安全例外ベクトルの表も必要となる。
更にモニタは一部の例外をトラップし得るので、モニタ専用の第3の例外ベクトルの表も必要となる。
次の表は3つの異なる例外ベクトルの表を要約したものである。
Figure 0004302641
Figure 0004302641
Figure 0004302641
モニタモードでは例外ベクトルがコピーされるので、各例外は2つの異なる関連ベクトルを有する。
−1つのベクトルは非安全ステートで生じた例外用のベクトルであり、
−1つのベクトルは安全ステートで生じた例外用のベクトルである。
モニタカーネルは例外が生じた場合に発生ステートを検出する必要性をそれ以上必要としないので、このことは例外待ち時間(latency)を小さくするのに有効となり得る。
この特徴は、数種の例外に限られており、SMIは安全ステートと非安全ステートとの切り換えを改善するための最も適当な候補の1つである。
ワールド間の切り換え
ステートを切り換える際に、モニタモードはそのモニタスタックに最初のステートのコンテクストをセーブし、モニタスタックからの第2のステートのコンテクストをリストアしなければならない。
従って、モニタモードはプライベートレジスタ(rl4、SPSR、....)を含む他の任意のモードのレジスタにアクセスしなければならない。
これを取り扱うために、提案された解決案はCPSRを書き込むだけでモニタモードに直接切り換える権利を、安全ステートにおける特権モードに与えることから成る。
かかるシステムでは、ワールド間の切り換えを次のように実行する。
−モニタモードに入る。
−Sビットをセットする。
−スーパーバイザーモードに切り換え、 −モニタスタックにスーパーバイザーレジスタをセーブする(当然ながらスーパーバイザーモードはモニタスタックポインタにアクセスしなければならないが、これは例えば共通レジスタ(R0〜R8)を使用することにより容易に行うことができる。
−システムモードに切り換え、 −モニタスタックにレジスタ(ユーザーモードと同じ)をセーブする。
−すべてのモードに対してモニタスタック上のIRQレジスタ....等々。
−すべてのモードのすべてのプライベートレジスタを一旦セーブすると、簡単なMSR命令によりモニタモードへ戻る(=CPSRモードフィールド内にモニタ値を単に書き込む)。
その他の解決案も検討した。
−モニタが自己のスタックに他のモードのプライベートレジスタをセーブできるようにする新しい命令を加えること。
−モニタを新しい「ステート」として実行すること。すなわち(適当なアクセス権を有するように)モニタステートとなり、IRQ(または他の)モードとなり、IRQ(または他の)プライベートレジスタを見ることができるようにすること。
基本的なシナリオ(図23参照)
1.スレッド1は非安全ワールドで作動中である(Sビット=0)。このスレッドは安全機能=>SMI命令を実行しなければならない。
2.SMI命令は非安全SMIベクトルを通してコアを入力モードにする。
非安全モードのPCおよびCPSRをセーブするようにLR_monおよびSPSR_monを使用する。
この段階ではSビットは無変更のままであるが、システムはそのときに安全ステートにある。
モニタカーネルはモニタに非安全コンテクストをセーブする。
モニタカーネルはLR_monおよびSPSR_monもプッシュする。
次にモニタカーネルはCP15レジスタに書き込むことによって「S」ビットを変更する。
この実施例ではモニタカーネルは(例えばスレッドIDテーブルを更新することにより)安全ワールドで「安全スレッド1」をスタートするトラックを維持する。
最後に、モニタカーネルはモニタモードから出て安全スーパーモードに切り換わる。「LR_monおよびSPSR_monを更新した後のMOVS命令」
3.安全カーネルはアプリケーションを正しい安全メモリロケーションへディスパッチし、(例えばMOVSを使って)ユーザーモードに切り換わる。
4.安全ユーザーモードで安全機能を実行する。一旦終了すると、安全機能は適当なSWIを実行することによって「出口」機能をコールする。
5.SWI命令は専用SWIベクトルを通してコアを安全SVCモードにし、次に専用SWIベクトルは「出口」機能を実行する。この「出口」機能はモニタモードに戻るように切り換わるよう、「SMI」により終了する。
6.SMI命令は専用安全SMIベクトルを通してコアをモニタモードにする。
安全svcモードのPCおよびCPSRをセーブするのにLR_monおよびSPSR_monを使用する。
Sビットは無変更のままである(すなわち安全ステート)。
モニタカーネルは安全スレッド1が終了した事実を登録する(スレッドIDテーブルから安全スレッド1のIDを除く)。
次にモニタカーネルはCP15レジスタに書き込みをすることにより「S」ビットを変更し、非安全ステートに戻る。
モニタカーネルはモニタスタックから非安全コンテクストをリストアする。
モニタカーネルはステップ2で前にセーブしたLR_monおよびCPSR_monもロードする。
最後に、モニタカーネルはSUBSによりモニタモードから出る。これによってコアは命令時に非安全ユーザーモードに戻る。
7.通常、スレッド1がレジュームできる。
図6を参照すると、すべてのレジスタは安全ドメインと非安全ドメインとの間で共用される。モニタモードでは安全ドメインおよび非安全ドメインのうちの一方から他方へレジスタを切り換える切り換えが行われる。これを行うには、上記「ワールド間の切り換え」の章でも説明したように、一方のドメインにあるレジスタのステートをセーブし、レジスタへの間のステートを他方のドメインに書き込み(またはレジスタ内の前にセーブしたステートをリストア)しなければならない。
この切り換えを行うのにかかる時間を短縮するのが望ましい。切り換えを行うのにかかる時間を短縮するには、安全ドメインと非安全ドメインとの切り換え時に共用されるレジスタをディスエーブルし、内部に記憶されているデータ値を変えないままにする。例えば非安全ドメインから安全ドメインへの切り換えを検討する。例えば図6に示されたFIQレジスタは安全ワールドでは必要でないと仮定する。従って、これらレジスタをディスエーブルし、これらレジスタを安全ドメインに切り換える必要はなく、これらレジスタのコンテンツをセーブする必要もない。
レジスタをディスエーブルすることはいくつかの方法で行うことができる。1つの方法は、これらレジスタを使用するモードをロックアウトすることである。モードをディスエーブルすることを表示する制御ビットをCP15レジスタに書き込むことによってこれを行う。
これとは異なり、CP15レジスタに再び制御ビットを書き込むことにより、命令に基づく方法によって命令時にレジスタへのアクセスをディスエーブルしてもよい。CP15レジスタに書き込まれるビットはモードではなくレジスタに明示的に関係しているので、モードはディスエーブルされず、このモードはディスエーブルされず、このレジスタへのアクセスがディスエーブルされる。
FIQレジスタは高速インターラプトに関連するデータを記憶する。FIQレジスタがディスエーブルされ、高速インターラプトが生じた場合、プロセッサはモニタでの例外を表示する信号を発生する。この例外に応答し、モニタモードは1つのドメインに関連し、前記ディスエーブルされたレジスタ内に記憶されていたデータ値をセーブし、他方のドメインに関連した新しいデータ値をディスエーブルされたレジスタにロードし、FIQモードレジスタを再イネーブルする。
プロセッサはドメインを切り換える際にモニタモードですべてのバンクレジスタをディスエーブルするようにプロセッサを構成できる。これとは異なり、ドメインを切り換える際に共用レジスタの所定のレジスタをディスエーブルし、他方をプログラマーの選択によってディスエーブルしてもよいという点で、レジスタのディスエーブル化を選択的とすることができる。
モニタモードでドメインを切り換える際に、1つ以上の共用レジスタをディスエーブルし、1つ以上の他方の共用レジスタが一方のドメインを出るときにセーブされたデータを有し、他方のドメインにロードされた新しいデータを有するようにプロセッサを構成してもよい。新しいデータをゼロデータとすることができる。
図24は従来のARMコアに安全処理オプションを追加する原理を略図で示す。この図は現在あるコアに安全処理オプションを追加することにより、安全処理オプションを含むプロセッサをどのように形成できるかを略図で示している。現在存在する遺産オペレーティングシステムと後方コンパーチブルとすべき場合、プロセッサの従来の非安全部分で作動する遺産システムが直観的に考えられる。しかしながら、この図の下方部分に略で示し、更に下記で詳細に説明するように、実際には遺産システムが作動するのはシステムの安全部分内である。
図25は安全および非安全ドメインを有するプロセッサを示し、更にリセットを示し、図2と同様な図となっている。図2は安全ドメインでの処理を制御する安全OSシステムおよび非安全ドメインでの処理を制御する非安全OSシステムにより、セキュリティ機密タイプのオペレーションを作動させるようになっているプロセッサを示す。しかしながら、このプロセッサは従来の遺産オペレーティングシステムに後方コンパーチブルでもあるので、プロセッサは遺産オペレーティングシステムを使ってセキュリティに機密でないように作動し得る。
図25に示されるように、リセットは安全ドメイン内にあり、ここではSビットまたはセキュリティステータスフラグセットによりどんなタイプのオペレーションのリセットも生じる。セキュリティ非機密タイプのオペレーションの場合、安全ドメインでリセットが生じ、処理は安全ドメイン内で続く。しかしながら、処理を制御する遺産オペレーティングシステムはシステムのセキュリティの特徴については知らない。
図25に示されるように、処理を安全機密状態とすべきか、または実際に安全に非機密状態とするのかに応じて、安全スーパーバイザーモード内での処理をスタートさせるアドレスを設定するようにリセットが行われる。一旦リセットが行われると、次にブートまたは再ブート手順内に存在する追加タスクが実行される。このブート手順については後述する。
ブート手順
ブート手順は次の特徴を尊重しなければならない。
−遺産OSとのコンパチビリティを維持すること。
−システムのセキュリティを保証するように、最も特権性のあるモードでブートすること。この結果、カーボンコアは安全スーパーバイザーモードでブートすることになる。
次に、異なるシステムは次のようになる。
−遺産OSを作動させたいシステムに対してはSビットを考慮せず、コアはスーパーバイザーモードでブートする
−カーボンの特性を使用したいシステムに対しては(潜在的にモニタモードにスワップした後に)コアはシステム内のすべての安全保護を構成できるようにしなければならない安全特権モードでブートする。
上記ブート手順の詳細に関し、本発明の実施例のプロセッサはすべてのケースにおいて安全スーパーバイザーモードで処理をスタートするようにプロセッサをリセットする。セキュリティに機密でないタイプのオペレーションの場合、Sビットがセットされているので(しかしながらオペレーティングシステムはこのことを知らない)セキュリティはここでは問題ではないが、オペレーティングシステムは実際には安全ドメインで作動中である。このことには、非安全ドメインからアクセスできないメモリ部分はこの状況ではアクセス可能であるという利点がある。
セキュリティに機密であるシステムはシステムのセキュリティを保証するのに役立つので、すべてのケースにおいて安全スーパーバイザーモードでブートすることはセキュリティに機密なシステムでも有利である。安全機密システムでは、ブート時に提供されるアドレスは安全スーパーバイザーモードでブートプログラムを記憶した場所をポイントするので、システムを安全システムとして構成し、モニタモードへの切り換えを可能にする。一般に安全スーパーバイザーモードからモニタモードへの切り換えが認められ、この切り換えはモニタモードコンフィギュレーションを初期化するよう、適当な時間の安全システムがモニタモードでの処理をスタートできるようにする。
図26はステップ1において非安全スレッドNSAが非安全オペレーティングシステムによって実行されることを示す。ステップ2において、非安全スレッドNSAはモニタモードを介して安全ドメインをコールし、ステップ3においてモニタモードプログラムを作動させる。モニタモードプログラムはSビットを変更し、ドメインを切り換え、ステップ5で安全オペレーティングシステムに移る前に必要なコンテクストのセーブおよびコンテクストのリストアを行う。次にステップ6においてインターラプトIRQを受ける前に、対応する安全スレッドSAを実行する。ステップ7でインターラプト取り扱いハードウェアがモニタモードへのリターンをトリガーし、ここでインターラプトを安全オペレーティングシステムで取り扱うのか、または非安全オペレーティングシステムで取り扱うのかが判断される。この場合、インターラプトはステップ9でスタートする非安全オペレーティングシステムによって取り扱われる。このインターラプトが非安全オペレーティングシステムによって取り扱われると、ステップ11において通常のスレッド切り換え動作の前に非安全スレッドNSAは非安全オペレーティングシステムにおける現在のタスクとしてレジュームされる。このスレッドの切り換えはタイミングイベントまたは同等なものの結果とすることができる。ステップ12では、非安全オペレーティングシステムにより非安全ドメインで異なるスレッドNSBが実行され、次にステップ14においてこのことは、モニタドメイン/プログラムを介し、安全ドメインへのコールを行う。ステップ7におけるモニタプログラムは安全スレッドが既に実行を終了しているので、または通常のリクエストが残っていることに起因し、安全オペレーティングシステムが残されているのではなく、インターラプトの結果として最後にサスペンドされたことを表示するためのフラグを記憶しており、他の一部の手順を使用する。従って、安全オペレーティングシステムはインターラプトによってサスペンドされたのでステップ15におけるモニタプログラムはリターンスレッドID(例えば非安全スレッドNSBがリクエストしたような安全オペレーティングシステムによってスタートすべきスレッドの識別子だけでなく、その他のパラメータデータ)を指定する、ソフトウェア疑似インターラプトを使用する安全オペレーティングシステムに再進入する。ソフトウェア疑似インターラプトのこれらパラメータをレジスタ値として送ることができる。
ソフトウェア疑似インターラプトはステップ15において安全オペレーティングシステムのリターンインターラプトハンドラールーチンをトリガーする。このリターンインターラプトハンドラールーチンはソフトウェア疑似インターラプトのリターンスレッドIDを検査し、このIDがサスペンド前に安全オペレーティングシステムが実行され、最後にインターラプトされた安全スレッドSAのスレッドIDと一致するかどうかを判断する。この場合、一致せず、従ってステップ16では安全オペレーティングシステムは安全スレッドSAのコンテクストがセーブされた後に、非安全スレッドNSBによって指定されたリターンスレッドへのスレッドの切り換えを実行するようにトリガーされる。次に、必要なようにインターラプトされたポイントから後に安全スレッドSAを再スタートできる。
図27は図26に示された挙動の別の例のタイプを略図で示す。この例では、IRQを取り扱うために非安全オペレーティングシステムの制御下で処理が続行される間、非安全スレッドの切り換えはないので、安全オペレーティングシステムのリターンインターラプトハンドラーによりソフトウェア疑似インターラプトが受信されると、オペレーティングシステムはスレッドの切り換えは不要であると判断し、ステップ15で安全スレッドSAをレジュームするだけである。
図28はリターンスレッドハンドラーによって実行される処理を略図で示すフローチャートである。ステップ4002において、リターンスレッドハンドラーがスタートされる。ステップ4004において、ソフトウェア疑似インターラプトからのリターンスレッド識別子が検査され、安全オペレーティングシステムがサスペンドされたときに、現在実行中の安全スレッドと比較される。これらが一致した場合、処理はステップ4006に進み、ここで安全スレッドがレジュームされる。ステップ4004での比較が一致していない場合、処理はステップ4008に進み、ここでステップ4010での新しい安全スレッドへの切り換えが行われる前に、(その後のレジュームのために)旧い安全スレッドのコンテクストがセーブされる。新しいスレッドは既に途中にあるので、ステップ4010はレジュームである。
図29はスレーブ安全オペレーティングシステムがマスター非安全オペレーティングシステムによって実行されるタスクの切り換えに従うことができるようにする処理を略図で示す。マスター非安全オペレーティングシステムは他のオペレーティングシステムとそのアクティビティを伝え、コーディネートする手順を有しない遺産オペレーティングシステムであり得るので、マスターとしてしか作動しない。図29における初期進入ポイントでは、非安全オペレーティングシステムは非安全スレッドNSAを実行中である。この非安全スレッドNSAはソフトウェアのインターラプト、例えばSMIコールを使って安全オペレーティングシステムにより実行すべき安全スレッドへのコールを行う。このSMIコールはステップ2においてモニタモードで実行中のモニタプログラムに進み、ここでモニタプログラムはステップ4における安全オペレーティングシステムへコールを送る前に、必要なコンテクストのセーブおよび切り換えを実行する。次に安全オペレーティングシステムは対応する安全スレッドSAをスタートさせる。この安全スレッドはモニタモードを介し、タイマー事象の結果として非安全オペレーティングシステムへ制御をリターンできる。ステップ9において非安全スレッドNSAが再び安全オペレーティングシステムに制御を送るとき、このNSAは元のソフトウェアインターラプトを再発生することによってこれを行う。ソフトウェアインターラプトはNSAを識別する非安全スレッドID、アクティブにすべきターゲット安全スレッドの安全スレッドID、例えば安全スレッドSAを識別するスレッドIDだけでなくその他のパラメータも含む。
ステップ9で発生したコールはモニタプログラムにより送られ、ステップ12にて安全オペレーティングシステムにより安全ドメイン内で受信されると、非安全オペレーティングシステムによるコンテクストの切り換えがあったかどうかの判断をするために非安全スレッドIDを検査できる。安全オペレーティングシステム下の正しいスレッドが新しいスレッドとして再スタートされたか、またはスタートされたかを見るために、ターゲットスレッドの安全スレッドIDを検査することもできる。図29の例では、安全オペレーティングシステムにより安全ドメイン内でスレッドの切り換えは不要とされる。
図30は図29に類似するが、ステップ9において、非安全オペレーティングシステムの制御下の非安全ドメイン内でスレッドの切り換えが行われる点が異なっている。従って、ステップ11において安全オペレーティングシステムに対し、ソフトウェアのインターラプトコールをするのは別の非安全スレッドNSBである。ステップ14では安全オペレーティングシステムは非安全スレッドNSBの異なるスレッドIDを認識し、よって安全スレッドSAのコンテクストをセーブし、安全スレッドSBをスタートさせることに関係するタスクの切り換えを行う。
図31は安全オペレーティングシステムのスレッドをスタートさせるか、またはスレッドをレジュームするためのコールとしてソフトウェアインターラプトを受信したときに安全オペレーティングシステムが実行する処理を略図で示すフローチャートである。ステップ4012ではコールが受信される。ステップ4014ではパラメータが安全オペレーティングシステムでの現在アクティブな安全スレッドに一致するかどうかを判断するように、コールのパラメータが検査される。一致している場合、ステップ4016でこの安全スレッドを再スタートする。一致していなければ、ステップ4018に進み、ここで新しくリクエストされたスレッドを利用できるかどうかの判断を行う。新たにリクエストされたスレッドが安全オペレーティングシステムで実行中の他のあるスレッドによって既に使用されている排他的リソースであるか、または排他的リソースを必要とするような理由により、利用できないことがある。かかるケースでは、非安全オペレーティングシステムにリターンされた適当なメッセージにより、ステップ4020でコールを拒否する。ステップ4018における判断の結果が新しいスレッドを利用できるという判断である場合、処理はステップ4022に進み、ここで後に起こり得るレジュームのために旧い安全スレッドのコンテクストをセーブする。ステップ4024において、安全オペレーティングシステムに対してなされたソフトウェアインターラプトコール内で指定された新しい安全スレッドへの切り換えが行われる。
図32は異なるインターラプトを有する多数のオペレーティングシステムを有するシステム内で取り扱いのインターラプトが異なるオペレーティングシステムによって処理されると、プライオリティの反転が生じ得るようなオペレーションを略図で示す。
この処理が安全スレッドSAを実行する安全オペレーティングシステムによりスタートする。この処理は最初のインターラプトInt1によりインターラプトされる。これはインターラプトを安全ドメイン内または非安全ドメイン内で処理すべきかどうかを判断するのに、モニタモード内のモニタプログラムをトリガーする。この場合、インターラプトは安全ドメイン内で処理すべきであり、処理は安全オペレーティングシステムに戻され、インターラプトInt1のためのインターラプト取り扱いルーチンがスタートされる。Int1のためのインターラプト取り扱いルーチンの実行の途中において、より高いプライオリティを有する別のインターラプトInt2が受信される。従って、Int1のためのインターラプトハンドラーが停止され、インターラプト2を取り扱うべきかどうかの判断をするのにモニタモード内のモニタプログラムが使用される。この場合、非安全オペレーティングシステムによりインターラプトInt2を取り扱うべきであるので、制御は非安全オペレーティングシステムへ送られ、Int2のためのインターラプトハンドラーがスタートされる。インターラプトInt2のためのこのインターラプトハンドラーが完了すると、非安全オペレーティングシステムは安全ドメイン内でサービスをサスペンドしたペンディング中のインターラプトInt1があるかどうかを表示する情報を有していない。従って、非安全オペレーティングシステムは別の処理、例えばタスクの切り換え、異なる非安全スレッドNSBのスタートを実行でき、他方、元のインターラプトInt1はサービスされないままである。
図33は、図32のオペレーションに関連する問題を回避できるようにする技術を示す。インターラプトInt1が生じると、モニタプログラムはこれを非安全ドメインへ送り、ここでスタブインターラプトハンドラーがスタートされる。このスタブインターラプトハンドラーは比較的小さく、モニタモードを介して処理を安全ドメインに迅速に戻し、安全ドメイン内のインターラプトInt1のためのインターラプトハンドラーをトリガーする。このインターラプトInt1は主に安全ドメイン内で処理され、非安全ドメイン内のスタブインターラプトハンドラーの開始は安全ドメイン内でインターラプトがペンディング中となっていることを非安全ドメインに表示するためのあるタイプのプレイスホルダと見なすことができる。
インターラプトInt1のための安全ドメイン内のインターラプトハンドラーは再び高いプライオリティのInt2を受ける。このことは前と同じように非安全ドメイン内のインターラプトInt2のためのインターラプトハンドラーの実行をトリガーする。しかしながらこの場合、Int2のためのそのインターラプトハンドラーが終了するとき、非安全オペレーティングシステムはインターラプトInt1のためのスタブインターラプトハンドラーが未解決であることを示すデータを有するので、このスタブインターラプトハンドラーをレジュームする。このスタブインターラプトハンドラーはあたかも安全ドメインへコールバックしたポイントでサスペンドされたかのように見えるので、このコールは再実行され、従って安全ドメインへの切り換えが行われる。一旦安全ドメインに戻ると、安全ドメイン自身はインターラプトInt1がサスペンドされたポイントにおいて、インターラプトInt1のためのインターラプトハンドラーを再スタートできる。安全ドメイン内でインターラプトInt1のためのインターラプトハンドラーが完了すると、もともと実行中の安全スレッドSAがレジュームされる前に非安全ドメイン内のスタブインターラプトハンドラーを閉じるよう、非安全ドメインに対するコールがなされる。
図34は関連するプライオリティを有する異なるタイプのインターラプトおよびそれらをどのように取り扱うことができるかを略図で示す。高いプライオリティのインターラプトは非安全ドメインによって取り扱われるより高いプライオリティのインターラプトがないことを条件に、純粋に安全なドメインのインターラプトハンドラーを使用して取り扱うことができる。その後のインターラプトよりも高いプライオリティを有し、非安全ドメイン内で取り扱われるインターラプトがあった場合、すべてのより低いインターラプトを純粋に安全ドメイン内で取り扱わなければならないか、またはこれらすべてのプライオリティの低いインターラプトは、図33に示されるスタブインターラプトハンドラー技術を利用しなければならず、よって安全ドメイン内で主な取り扱いが行われた場合でも非安全ドメインはこれらインターラプトのトラックを維持できる。
前に述べたように、安全ドメインと非安全ドメインとの切り換えを実行するのにモニタモードが使用される。2つの異なるドメインの間でレジスタを共用する実施例では、これらレジスタ内のステートをメモリにセーブし、宛て先ドメインのための新しいステートをメモリからこれらレジスタにロードしなければならない。2つのドメイン間では共用されないレジスタに関してはステートをセーブする必要はない。その理由は、これらレジスタには他のドメインからアクセスされることはなく、ステート間の切り換えは、安全ドメインと非安全ドメインの切り換えの直接の結果として実行される(すなわちCP15レジスタのうちの1つに記憶されたSビットの値は非共用レジスタのどれを使用するかを決定する)からである。
モニタモードの間で切り換えしなければならないステート部分はプロセッサによるメモリへのアクセスを制御するプロセッサコンフィギュレーションデータである。各ドメイン内にはメモリの異なるビュー、例えば安全データを記憶するために安全メモリにアクセスする安全ドメインがあり、この安全メモリは非共用ドメインからアクセスできないので、ドメイン間を切り換えるときにプロセッサコンフィギュレーションデータを変更しなければならないことは明らかである。
図35に示されるように、CP15レジスタ34内にはこのプロセッサコンフィギュレーションデータが記憶され、一実施例ではドメインの間でこれらレジスタが共用される。従って、安全ドメインと非安全ドメインとの間でモニタモードを切り換えるときには、そのときにCP15レジスタ34内にあるプロセッサコンフィギュレーションデータをCP15レジスタからメモリに切り換える必要があり、宛て先ドメインに関するプロセッサコンフィギュレーションデータをCP15レジスタ34にロードしなければならない。
CP15レジスタ内のプロセッサコンフィギュレーションデータは一般にシステム内のメモリへのアクセスに対して即座に生じる影響を及ぼすので、これら設定がモニタモードで作動している間にプロセッサによって更新される際に、これら設定は即座に有効となることは明らかである。しかしながら、このことは望ましくないことである。その理由はモニタモード中のメモリへのアクセスを制御するプロセッサコンフィギュレーションデータのスタティックなセットをモニタモードが有することが望ましいからである。
従って、図35に示されるように、本発明の一実施例では、プロセッサがモニタモードで作動している間にCP15レジスタ34内のプロセッサコンフィギュレーションデータを無効にするのに使用できるモニタモード固有のプロセッサコンフィギュレーションデータ2000が提供されている。図35に示された実施例では、このことはマルチプレクサ2010を設けることによって達成される。このマルチプレクサ2010はその入力端でCP15レジスタに記憶されたプロセッサコンフィギュレーションデータとモニタモード固有のプロセッサコンフィギュレーションデータ2000との双方を受信する。更にマルチプレクサ2010はプロセッサが現在モニタモードで作動しているのかどうかを表示する制御信号をパス2015を通して受信する。プロセッサがモニタモードで作動していない場合、システムにはCP15レジスタ34内のプロセッサコンフィギュレーションデータが出力されるが、プロセッサがモニタモードで作動している場合には代わりにマルチプレクサ2010はモニタモード固有のプロセッサコンフィギュレーションデータ2000を出力し、プロセッサがモニタモードで作動している間にプロセッサコンフィギュレーションデータの一貫したセットを適用することを保証する。
モニタモード固有のプロセッサコンフィギュレーションデータはシステム内でハードコピーでき、このデータを操作できないように保証できる。しかしながら、安全な特権モードで作動中にモニタモード固有のプロセッサコンフィギュレーションデータをプロセッサによってしか改変できないことを条件に、セキュリティを妥協することなく、モニタモード固有のプロセッサコンフィギュレーションデータ2000をプログラマブルにすることが可能である。このことは、モニタモード固有のプロセッサコンフィギュレーションデータの設定に関するある程度のフレキシビリティを認めるものである。モニタモード固有のプロセッサコンフィギュレーションデータがプログラマブルであるようになっている場合、そのコンフィギュレーションデータをシステム内、例えばCP15レジスタ34内の別個のセットのレジスタ内の適当な場所に記憶できる。
一般にモニタモード固有のプロセッサコンフィギュレーションデータはモニタモードでプロセッサを作動させるための極めて安全な環境を提供するように設定される。従って、上記実施例ではモニタモード固有のプロセッサコンフィギュレーションデータはプロセッサがモニタモードで作動している間、メモリ管理ユニット30をディスエーブルするように指定でき、よってそうしなければメモリ管理ユニットによって適用され得る仮想−物理アドレス変換をディスエーブルする。かかる状況ではプロセッサは常に、メモリアクセスリクエストを発生するとき、例えばフラットマッピングを使用するときに直接物理アドレスを発生するようになる。このことは、仮想−物理アドレスマッピングに対して不正操作がなされたかどうかに拘わらず、モニタモードで作動中にプロセッサは信頼できる状態でメモリにアクセスできることを保証するものである。
モニタモード固有のプロセッサコンフィギュレーションデータはプロセッサがモニタモードで作動中にプロセッサが安全データにアクセスすることを認めることも一般に指定する。このことはドメインステータスビットの形態をとるメモリ許可データによって指定することが好ましい。このドメインステータスビットは安全プロセッサコンフィギュレーションデータ内の対応するドメインステータスビット(Sビット)に対して指定される同じ値を有する。従って、CP15レジスタ内に記憶されるドメインステータスビットの実際の値に拘わらず、その値はモニタモードが安全データにアクセスすることを保証するよう、モニタモード固有のプロセッサコンフィギュレーションデータによって指定されるドメインステータスビットによって無効状態となる。
モニタモード固有のプロセッサコンフィギュレーションデータはメモリの一部へのアクセスを制御するのに使用される別のデータも指定できる。例えばモニタモード固有のプロセッサコンフィギュレーションデータはプロセッサがモニタモードで作動している間、データにアクセスするのにキャッシュ38を使用すべきでないことを指定できる。
上記実施例では、プロセッサコンフィギュレーションデータを含むCP15レジスタのすべてがドメイン間で共用されると仮定している。しかしながら別の実施例では、例えばプロセッサコンフィギュレーションデータの特定のアイテムを記憶するために2つのレジスタが設けられるよう、多数のCP15レジスタがバンク状となる。すなわち、一方のレジスタには非安全ドメイン内でアクセスでき、このレジスタは非安全ドメインのためのプロセッサコンフィギュレーションデータのそのアイテムの値を含み、他方のレジスタには安全ドメイン内でアクセスでき、このレジスタは安全ドメインのためのプロセッサコンフィギュレーションデータのそのアイテムの値を含む。
バンク状とされないCP15レジスタはSビットを含むレジスタであるが、基本的には他のCP15レジスタのいずれも、所望すればバンク状とすることができる。かかる実施例では、モニタモードによるプロセッサコンフィギュレーションの切り換えは共用されているレジスタ内にそのときにあるプロセッサコンフィギュレーションデータを、共用されているCP15レジスタからメモリに切り換え、共用されているCP15レジスタに宛て先ドメインに関係するプロセッサコンフィギュレーションデータをロードしなければならない。バンク状レジスタに対してはプロセッサコンフィギュレーションデータをメモリに記憶させる必要はなく、その代わり、対応する共用CP15レジスタ内に記憶されているSビットの値を変える結果として自動的に切り換えが行われる。
前に述べたように、モニタモード固有のプロセッサコンフィギュレーションデータは対応するCP15レジスタ内に記憶されているビットを無効にし、安全ドメインで使用されたドメインステータスビットに対して使用されたビットと同じ値(すなわち上記実施例では1のSビット値)を有するドメインステータスビットを含む。多数のCP15レジスタがバンク状となっていう場合、このことは図15内のモニタモード固有のプロセッサコンフィギュレーションデータ200の少なくとも一部をバンク状レジスタ内に記憶された安全プロセッサコンフィギュレーションデータから誘導できることを意味する。その理由は、レジスタのコンテンツは切り換えプロセッサ中にメモリに書き込まれることはないからである。
従って、一例としてモニタモード固有のプロセッサコンフィギュレーションデータはモニタモードでないときに使用したステータスビットを無効にするよう、ドメインステータスビットを指定し、好ましい実施例では、このステータスビットは安全ドメインで使用されたビットと同じ値を有するので、このことはバンク状CP15レジスタのどれにアクセスできるようにするかを選択するロジックが安全バンク状CP15レジスタへアクセスできるようにすることを意味する。モニタモード固有のプロセッサコンフィギュレーションデータの対応する部分として、モニタモードがこの安全プロセッサコンフィギュレーションデータを使用できるようにすることにより、ソースの節約を実行できる。その理由は、モニタモード固有のプロセッサコンフィギュレーションデータのアイテムに対してレジスタの別個のセットを設ける必要がなくなるからである。
図36は、1つのドメインと別のドメインとの間の切り換えが必要なときにプロセッサコンフィギュレーションを切り換えるのに実行されるステップを示すフローチャートである。前に述べたようにドメイン間の切り換えを起こすためにSMI命令が発せられる。従って、ステップ202においてSMI命令の発生が待たれる。SMI命令が受信されると、プロセッサはステップ2030へ進み、プロセッサはモニタモードでのモニタプログラムの実行を開始する。このことはマルチプレクサ2010へパス2015上の制御信号が入力される結果、モニタプログラム固有のプロセッサコンフィギュレーションデータが使用され、マルチプレクサがそのモニタモード固有のプロセッサコンフィギュレーションデータを切り換える。前に述べたように、これはデータの内蔵されたセットでもよいし、またはそのデータの所定の部分をバンク状レジスタ内に記憶された安全プロセッサコンフィギュレーションデータから誘導してもよい。
その後、ステップ2040においてドメインから現在のステートがセーブされ、SMI命令をメモリに発生する。このことは、そのドメインに対応するプロセッサコンフィギュレーションデータのステートを共用されているCP15レジスタからセーブすることを含む。一般にかかるステートの記憶をするためのメモリセットの一部が設けられる。次にステップ2050にて、宛て先ドメインのための対応するステートを含むメモリ部分をポイントするように、ステートポインタが切り換えられる。従って、一般にステート情報を記憶するためにメモリの2つの部分が割り当てられる。1つの部分は非安全ドメインのためのステートを記憶するために割り当てられ、他方は、安全ドメインのためのステートを記憶するために割り当てられるものである。
ステップ2050において、ステートポインタが一旦割り当てられると、ステートポインタによってそのときポイントされているステートがステップ2060にて対応する共用CP15レジスタにロードされる。このロードは宛て先ドメインのためのコンフィギュレーションデータを対応するプロセッサにロードすることを含む。その後、ステップ2070にてモニタモードと同じようにモニタプログラムから出て、プロセッサは宛て先ドメイン内の必要なモードに切り換わる。
図37は本発明の一実施例のメモリ管理ロジック30の作動をより詳細に示す。メモリ管理ロジックはメモリ管理ユニット(MMU)200と、メモリ保護ユニット(MPU)220とから成る。仮想アドレスを指定するコア10によって発生されるメモリアクセスのリクエストはパス234を通してMMU200へ送られる。MMU200は所定のアクセス制御機能、より詳細には仮想アドレスに対応する物理アドレスを決定するための役割およびアクセス許可権利を決定し、領域属性を決定する役割を果たす。
データ処理装置のメモリシステムは安全メモリと、非安全メモリとから成り、安全メモリはそのコアまたは他のデバイスが安全作動モードで作動中、従って安全ドメイン内で作動中に、コア10または1つ以上のその他のマスターデバイスにしかアクセスできないようになっている安全データを記憶するのに使用される。
図37に示される本発明の一実施例では、コア10上で非安全モードで作動するアプリケーションによる安全メモリ内の安全データへのアクセスの試みのポリシングをMPU220内のパーティションチェッカー222によって実行する。MPU220は安全オペレーティングシステムによって管理され、本明細書では安全カーネルとも称す。
本発明の好ましい実施例によれば非安全メモリ内、例えば外部メモリ56の非安全メモリ部分内には非安全ページテーブル58が設けられ、そのページテーブル内に定められた多数の非安全メモリ領域の各々のための対応するデスクリプタを記憶するのに使用される。このデスクリプタは情報を含み、この情報からMMU200が所定のアクセス制御機能を実行できるようにするのに必要なアクセス制御情報をMMUが誘導でき、従って図37を参照して説明した実施例では、このデスクリプタは仮想−物理アドレスマッピング、アクセス許可権利および領域属性に関する情報を提供する。
更に本発明の好ましい実施例によれば、メモリシステムの安全メモリ内、例えば外部メモリ56の安全部分内には、少なくとも1つの安全ページテーブル58が設けられ、再びこのページテーブルはテーブル内に定められた多数のメモリ領域のための関連するデスクリプタを提供する。プロセッサが非安全モードで作動しているときには、メモリアクセスを管理する際に使用するための適当なデスクリプタを得るために非安全ページテーブルが参照されるが、プロセッサが安全モードで作動しているときは安全ページテーブルからのデスクリプタが使用される。
適当なページテーブルからMMUへのデスクリプタの検索は次のように進む。コア10が発生したメモリアクセスリクエストが仮想アドレスを指定した場合、多数の仮想アドレス部分の1つに対し、適当なページテーブルから得られた対応する物理アドレス部分を記憶するマイクロTLB206内でルックアップが実行される。従って、マイクロTLB206は仮想アドレスの所定部分とマイクロTLB内に記憶された対応する仮想アドレス部分とを比較し、一致しているかどうかを判断する。比較された部分は一般に仮想アドレスの最大位ビットの所定の数となる。このビット数はページテーブル58内の粒度(granalarity)に応じてきまる。マイクロTLB206は比較的少数のエントリー、例えば8個のエントリーしか含まないので、マイクロTLB206内で実行されるルックアップは一般に比較的迅速である。
マイクロTLB206内で一致が見いだされなかった場合、メモリアクセスリクエストはパス242を通してメインTLB208へ送られる。このTLB208はページテーブルから得られた多数のデスクリプタを含む。後により詳細に説明するように、非安全ページテーブルと安全ページテーブルの双方からのデスクリプタがメインTLB208内に共存でき、メインTLB内の各エントリーは対応するフラグ(本明細書ではドメインフラグと称する)を有する。このフラグはそのエントリー内の対応するデスクリプタが安全ページテーブルから得られたものであるか、または非安全ページテーブルから得られたものであるかを表示するように設定可能である。すべての安全作動モードがメモリアクセスリクエスト内の物理アドレスを直接指定する実施例では、メインTLBは非安全デスクリプタしか記憶しないので、メインTLB内にかかるフラグは不要であることが理解できよう。
メインTLB208内ではメモリアクセスリクエスト内で発行された仮想アドレスの対応する部分が特定の作動モードに対応するメインTLB208内のデスクリプタに関連する仮想アドレス部分のいずれかに対応するかどうかを判断するために、同様なルックアッププロセスが実行される。従って、コア10が非安全モードで作動している場合、非安全ページテーブルから得られたメインTLB208内のデスクリプタしかチェックしないが、他方、コア10が安全モードで作動している場合、安全ページテーブルから得られたメインTLB内のデスクリプタしかチェックしない。
チェックプロセスの結果としてメインTLB内で一致があった場合、対応するデスクリプタからアクセス制御情報を抽出し、これをパス242を通して送り戻す。特にデスクリプタの仮想アドレス部分および対応する物理アドレス物理をパス242を通してマイクロTLB206へ送り、このマイクロTLB内のエントリー内に記憶する。アクセス許可ロジック202へはアクセス許可権利がロードされ、領域属性ロジック204内には領域属性がロードされる。マイクロTLBに対してアクセス許可ロジック202と領域属性ロジック204とは別個にしてもよいし、またはマイクロTLB内に組み込んでもよい。
このポイントでは、マイクロTLB206内には一致があるので、MMU200はメモリアクセスリクエストを処理できる。従って、マイクロTLB206は物理アドレスを発生し、この物理アドレスはパス238を通して対応するメモリへルーティングするためのシステムバス40へ出力できる。ルーティング先のメモリはオンチップメモリ、例えばTCM36、キャッシュ38など、または外部バスインターフェース42を介してアクセスできる外部メモリユニットの1つである。同時に、アクセス許可ロジック202はメモリアクセスを認めるかどうかを判断し、現在の作動モードで、指定されたメモリロケーションへコアがアクセスすることを許可しないと判断した場合、バス230を通してコア10へアボート信号を発生する。例えばコアがスーパーバイザーモードで作動しているときに、安全メモリ内、または非安全メモリ内のいずれかにあるメモリの所定の部分をコアによってしかアクセスできないものとして指定することができ、従って、例えばユーザーモードにあるときにコア10がかかるメモリロケーションへのアクセスを求めた場合、コア10がそのときに適当なアクセス権を有していないことをアクセス許可ロジック202が検出し、パス230を通してアボート信号を発生する。このことはメモリアクセスをアボートさせる。最終的に、領域属性ロジック204は特定のメモリアクセスのための領域属性、例えばアクセスがキャッシュ可能であるか、バッファ可能であるかを判断し、パス232を通してかかる信号を発生し、ここでかかる信号はメモリアクセスリクエストの対象であるデータを、例えばキャッシュ38内でキャッシュできるかどうか、書き込みアクセスの場合、書き込みデータをバッファ化できるかどうかを判断するのに使用される。
メインTLB208内で一致がなかった場合、対応するページテーブル58にアクセスするのに変換テーブルウォークロジック210が使用され、パス248を通して、必要とされるデスクリプタを検索し、次にパス246を通してメインTLB208へそのデスクリプタを送り、このメインTLBへ記憶する。非安全ページテーブルおよび安全ページテーブルの双方のためのベースアドレスはCP15 34のレジスタ内に記憶され、プロセッサコアが作動しているそのときのドメイン、すなわち安全ドメインまたは非安全ドメインもCP15のレジスタ内でセットされ、そのドメインのステータスレジスタは非安全ドメインと安全ドメインとの間の切り換えが行われるときにモニタモードでセットされる。本明細書では、ドメインステータスレジスタのコンテンツをドメインビットと称す。従って、変換テーブルウォークプロセスを実行しなければならない場合、変換テーブルウォークロジック210はどのドメインでコア10が作動しているか、従って、対抗するテーブルにアクセスするのにどのベースアドレスを使用するかについて知る。次に、仮想アドレスは適当なページテーブル内の適当なエントリーにアクセスし、必要なデスクリプタを得るためのベースアドレスに対するオフセットとして使用される。
デスクリプタが変換テーブルウォークロジック210によって検索され、そのデスクリプタがメインTLB208に入れられると、メインTLB内で一致が得られ、アクセス制御情報を検索し、これをマイクロTLB206、アクセス許可ロジック202および論理属性ロジック204内に記憶するのに、前に説明したプロセスが呼び出される。次に、MMU200によりメモリアクセスを作動させることができる。
先に述べたように、好ましい実施例ではメインTLB208は安全ページテーブルおよび非安全ページテーブルの双方からのデスクリプタを記憶できるが、一旦マイクロTLB206内に適当な情報が記憶されると、メモリアクセスリクエストはMMU200によってしか処理されない。好ましい実施例では、メインTLB208とマイクロTLB206との間の情報の転送はMPU220内に設けられたパーティションチェッカー222によってモニタされ、コア10が非安全モードで作動中にメインTLB208内のデスクリプタからのアクセス制御情報がマイクロTLB206内に転送された場合、安全メモリ内にある物理アドレスを発生させる場合にこのようなアクセス制御情報はマイクロTLB206へ転送されない。
安全メモリと非安全メモリとの間の区分を定義するパーティション情報をCP15 34のレジスタ内にセットできるメモリ保護ユニットが安全オペレーティングシステムにより管理される。次に、パーティションチェッカー222はこのパーティション情報を参照し、非安全モードにあるコア10による安全メモリへのアクセスを認めるマイクロTLB206へのアクセス制御情報を転送するかどうかを判断することができる。より詳細には、好ましい実施例ではコア10がCP15ドメインステータスレジスタ内のモニタモードによって設定されるドメインビットにより表示されるように、コア10が非安全作動モードで作動しているときには、パーティションチェッカー222はメインTLB208からマイクロTLB206へ検索しようとする物理アドレス部分をパス244を介してモニタし、かつ物理アドレス部分に基づき、仮想アドレスに対して発生される物理アドレスが安全メモリ内にあるかどうかを判断するようになっている。かかる状況では、パーティションチェッカー222はパス230を通してコア10へアボート信号を発生し、メモリアクセスが生じるのを防止する。
更にパーティションチェッカー222は実際に物理アドレス部分がマイクロTLB206に記憶されるのを防止するようにでき、またはこれとは異なり、物理アドレス部分をマイクロTLB206に記憶してもよいことが理解できよう。しかしながら、アボートプロセスの一部は、例えばマイクロTLB206をフラッシュすることによりマイクロTLB206からその不正確な物理アドレス部分を除くことである。
コア10がモニタモードを介し、非安全作動モードと安全作動モードとの間で切り換わるときはいつも、モニタモードはCP15ドメインステータスレジスタ内のドメインビットの値を変更し、プロセッサの作動が変化しているドメインを表示する。ドメイン間での転送プロセスの一部として、マイクロTLB206をフラッシュし、従って安全ドメインと非安全ドメインとの切り換えに従う第1メモリアクセスはマイクロTLB206内に不一致を発生し、メインTLB208から直接、または適当なページテーブルからの適当なデスクリプタを検索することにより、検索すべきアクセス情報を必要とする。
コアが非安全ドメインで作動中に安全メモリへのアクセスを可能にするアクセス制御情報をマイクロTLB206で検索しようとする試みがなされる場合、メモリアクセスのアボートを発生することをチェッカー222が保証することを、上記アプローチにより理解できよう。
プロセッサコア10が任意の作動モードにあるとき、メモリアクセスリクエストが直接物理アドレスを指定するようになっている場合、その作動モードにおいてMMU200がディスエーブルされ、物理アドレスがパス236を通してMPU220へ送られる。安全作動モードではアクセス許可ロジック224および領域属性ロジック226はCP15 34内のパーティション情報レジスタ内の対応する領域に対して識別された領域属性およびアクセス許可権利に基づき、必要なアクセスの許可および領域属性分析を実行する。アクセスされる安全メモリロケーションが所定作動モード、例えば安全特権モードでしかアクセスできない安全メモリの一部内にある場合、別の作動モード、例えば安全ユーザーモードになっているコアによるアクセスの試みは、かかる状況においてMMUのアクセス許可ロジック202がアボートを発生したのと同じように、アクセス許可ロジック224にパス230を通してコアにアボートを発生させる。同様に、領域属性ロジック226はMMUの領域属性ロジック204が仮想アドレスにより指定されたメモリアクセスリクエストに対して信号を発生したのと同じように、キャッシュ可能で、かつバッファ可能な信号を発生する。アクセスが許可されたと仮定した場合、アクセスリクエストがパス240を通してシステムバス40まで進み、このバスから適当なメモリユニットへルーティングされる。
アクセスリクエストが物理アドレスを指定する非安全アクセスを行うために、パス236を介し、パーティションチェッカー222へアクセスがルーティングされ、パーティションチェッカー222はCP15レジスタ34内のパーティション情報を参照し、パーティションのチェックを実行し、物理アドレスが安全メモリ内のロケーションを指定したかどうかを判断し、指定したと判断した場合、再びパス230を通してアボート信号が発生される。
次に図39および40のフローチャートを参照し、メモリ管理ロジックの上記処理について説明する。図39はコア10で作動しているプログラムがステップ300によって表示されるように、仮想アドレスを発生する状況を示す。モニタモードによってセットされるCP15ドメインステータスレジスタ34内の適当なドメインビットは、コアが安全ドメイン内で現在作動中であるか、非安全ドメイン内で作動中であるかを表示する。コアが安全ドメイン内で作動している場合、プロセスはステップ302へ分岐し、ここで仮想アドレスの対応する部分とマイクロTLB内の仮想アドレス部分の1つとが一致するかどうかを見るために、マイクロTLB206内でルックアップが実行される。ステップ302で一致した場合、プロセスはステップ312へ直接分岐し、ここでアクセス許可ロジック202は必要なアクセス許可分析を実行する。ステップ314において、アクセス許可違反があったかどうかが判断され、違反があった場合、プロセスはステップ316に進み、ここでアクセス許可ロジック202はパス230を通してアボートを発生する。違反がなければ、すなわちかかるアクセス許可違反がない場合、プロセスはステップ314からステップ318へ進み、ここでメモリアクセスが進む。特に領域属性ロジック204はパス232を通して必要なキャッシュ可能、かつバッファ可能な属性を出力し、マイクロTLB206は前に説明したようにパス238を通して物理アドレスを発生する。
ステップ302において、マイクロTLB内で一致がある場合、ステップ304にてメインTLB208内でルックアッププロセスが実行され、メインTLB内に必要な安全デスクリプタが存在するかどうかを判断する。存在しない場合、ステップ306でページテーブルウォークプロセスが実行され、変換テーブルウォークロジック210は図37を参照して前に説明したように、安全ページテーブルから必要なデスクリプタを入手する。次にプロセスがステップ308へ進むか、またはメインTLB208内に既に安全デスクリプタがある場合、ステップ304からステップ208へ直接進む。
ステップ308において、メインTLBが有効なタブの付いた安全デスクリプタを含むと判断され、従ってプロセスはステップ310まで進み、ここでマイクロTLBに物理アドレス部分を含むデスクリプタのサブ部分がロードされる。コア10はそのときに安全モードで作動中であるので、パーティションチェック機能を実行するのにパーティションチェッカー222は必要とされない。
次にプロセスはステップ312に進み、ここで残りのメモリアクセスが上記のように進行する。
非安全メモリアクセスの場合、プロセスはステップ300から320へ進み、ここで非安全デスクリプタからの対応する物理アドレス部分が存在するかどうかを判断するためのルックアッププロセスがマイクロTLB206で実行される。存在する場合、プロセスは直接ステップ336に分岐し、ここでアクセス許可ロジック202によりアクセス許可権がチェックされる。このポイントでは、適当な物理アドレス部分がマイクロTLB内に存在する場合、パーティションチェッカー222はマイクロTLB内に情報が記憶される前にこの情報を有効に規制するので、セキュリティ違反がないと見なし、よってマイクロTLB内にこの情報がある場合、適当な非安全情報であると判断することに注目することが重要である。ステップ336にて、アクセス許可がチェックされた場合、プロセスはステップ338に進み、ここで違反があるかどうかが判断され、違反がある場合、ステップ316でアクセス許可フォールト(fault)アボートが発生される。違反がない場合、プロセスはステップ318に進み、上記のように残りのメモリアクセスが実行される。
ステップ320において、マイクロTLB内に一致が発見されない場合、プロセスはステップ322に進み、ここで対抗する非安全デスクリプタが存在するかどうかを判断するためのルックアッププロセスがメインTLB208内で実行される。デスクリプタが存在しない場合、変換テーブルウォークロジック210によりステップ324でページテーブルウォークプロセスが実行され、非安全ページテーブルからの必要な非安全デスクリプタをメインTLB208へ検索する。次にプロセスはステップ326に進むか、またはステップ322内でメインTLB208内の一致が生じた場合にはステップ322から直接ステップ326へ進む。ステップ326ではメインTLBが当該仮想アドレスに対する有効なタグ付き非安全デスクリプタを含むと判断され、ステップ328においてパーティションチェッカー222は(デスクリプタ内の物理アドレス部分を仮定した場合)メモリアクセスリクエストの仮想アドレスから発生される物理アドレスが非安全メモリ内のロケーションをポイントしていることをチェックする。ポイントしていない場合、すなわち物理アドレスが安全メモリ内のロケーションをポイントしている場合、ステップ330にてセキュリティの違反があると判断され、プロセスはステップ332に進み、ここでパーティションチェッカー222により安全/非安全フォールトアボートが発生される。
しかしながら、パーティションチェッカーロジック222がセキュリティの違反がないと判断した場合、プロセスはステップ334へ進み、ここで物理アドレス部分を含む対応するデスクリプタのサブ部分がマイクロTLBにロードされ、その後、ステップ336で前に説明したようにメモリアクセスが処理される。
次に、図40を参照し、物理アドレスを直接発生するメモリアクセスリクエストの取り扱いについて説明する。上記のように、このシナリオではMMU200は使用が止められる。このことは、CP15レジスタの適当なレジスタ内の設定、例えばMMUのイネーブルビットによって達成することが好ましく、この設定プロセスはモニタモードで実行される。従って、ステップ350にてコア10は物理アドレスを発生し、この物理アドレスはパス236を通してMPU220へ送られる。次にステップ352において、MPUはリクエストされているメモリアクセスが所与の現在の作動モード、例えばユーザー、スーパーバイザーなどを進めることができることを証明するための許可をチェックする。更にコアは非安全モードで作動している場合、パーティションチェッカー222はステップ352にて非安全メモリ内に物理アドレスが存在するかどうかもチェックする。次にステップ354にて、違反があるかどうか、例えばアクセス許可処理が違反を明らかにしたか、すなわち非安全モードにおいてパーティションチェックプロセスが違反を識別したかどうかが判断される。これら違反のいずれかが生じた場合、プロセスはステップ356に進み、ここでMPU220によりアクセス許可フォールトアボートが発生される。所定の実施例では、2つのタイプのアボートには区別がないが、別の実施例ではアボート信号はこの信号がアクセス許可フォールトに関係するものであるのか、またはセキュリティフォールトに関係するものであるかどうかを表示できる。
ステップ354にて、違反が検出されない場合、プロセスはステップ358に進み、ここで物理アドレスによって識別されたロケーションへのメモリアクセスが行われる。
好ましい実施例では、モニタモードでしか物理アドレスを直接発生しないようになっているので、他のすべてのケースではMMU200がアクティブとされ、上記のようにメモリアクセスリクエストの仮想アドレスから物理アドレスが発生される。
図38はすべてのメモリアクセスリクエストが仮想アドレスを指定し、従って、いずれも作動モードでも直接物理アドレスが発生されない状況にあるメモリ管理ロジックの別の実施例を示す。このシナリオでは、別個のMPU220は必要ではなく、その代わりにMMU200内にパーティションチェッカー222を組み込んでもよいと理解できよう。この変化を別にすれば、図37および39を参照して前に説明したのと全く同じように処理が進む。
その他の種々のオプションも可能であることが理解できよう。例えば仮想アドレスを指定する安全モードおよび非安全モードの双方でメモリアクセスリクエストを発生できると仮定すれば、2つのMMUを設けることができる。1つは安全アクセスリクエスト用のものであり、1つは非安全アクセスリクエスト用のものである。すなわち図37のMPU220は完全なMMUに置換できる。これらケースでは、一方のMMUがそのメインTLBに非安全デスクリプタを記憶し、他方のMMUがメインTLB内に安全デスクリプタを記憶するので、デスクリプタが安全または非安全のいずれであるかを定めるための各MMUのメインTLBと共にフラグを使用する必要はない。当然ながら、コアが非安全ドメイン内にある間に安全メモリへのアクセスが試みられているかどうかをチェックするためのパーティションチェッカーがまだ必要である。
これとは異なり、すべてのメモリアクセスが直接指定された物理アドレスをリクエストする場合、別の実行例は2つのMPU(1つは安全アクセスリクエスト用であり、1つは非安全アクセスリクエスト用である)を使用すべきである。非安全アクセスリクエスト用に使用されるMPUは安全メモリへのアクセスが非安全モードでは認められないことを保証するよう、パーティションチェッカーによって規制されるアクセスリクエストを有する。
図37または図38の構造のいずれかを設けることができる別の特徴として、変換テーブルウォークロジック210のアクティビティを規制するために、一部のパーティションチェッカー222が一部のパーティションチェックを実行するようにできる。特にコアがそのときに非安全ドメイン内で作動中の場合、変換テーブルウォークロジック210がページテーブルへのアクセスを求めていること、すなわち安全ページテーブルではなく、非安全ページテーブルにアクセスしていることをパーティションチェッカー222がチェックするようにできる。違反が検出された場合、アボート信号を発生することが好ましい。変換テーブルウォークロジック210はページテーブルベースアドレスとメモリアクセスリクエストが発生する仮想アドレスの所定のビットとを組み合わせることにより、ページテーブルルックアップを一般に実行するので、このパーティションチェックは例えば変換テーブルウォークロジック210が安全ページテーブルのベースアドレスではなく非安全ページテーブルのベースアドレスを使用していることをチェックできる。
図41はコア10が非安全モードで作動中にパーティションチェッカー222によって実行されるプロセスを略図で示す。正常に動作しているときは、非安全ページテーブルから得られるデスクリプタは非安全メモリだけでマッピングされたページを記述する。しかしながら、ソフトウェアのアタックがあった場合にデスクリプタはメモリの非安全領域および安全領域の双方を含む部分を記述するように不正操作できる。従って、図41内の例を検討すると、不正操作された非安全デスクリプタは非安全領域370、372、374および安全領域376、378、380を含むページをカバーし得る。メモリアクセスリクエストの一部として発生された仮想アドレスが安全メモリ領域、例えば図41に示されるような安全メモリ領域376内の物理アドレスに対応する場合、パーティションチェッカー222はアクセスが生じないようにアボートを発生するようになっている。従って、安全メモリへアクセスしようとする試みで非安全デスクリプタが不正に操作された場合でも、パーティションチェッカー222はアクセスの発生を防止する。これと対照的に、このデスクリプタを使って誘導される物理アドレスが非安全メモリ領域、例えば図41に示されるような領域374に対応する場合、マイクロTLB206にロードされるアクセス制御情報はこの非安全領域374を識別するだけである。従って、非安全メモリ領域374内のアクセスが生じ得るが、安全領域376、378または380のいずれかへのアクセスは生じることができない。従って、メインTLB278が不正操作された非安全ページテーブルからのデスクリプタを含むことがあっても、マイクロTLBは非安全メモリ領域へのアクセスを可能にする物理アドレス部分しか含まないことが理解できよう。
上記のように、非安全モードおよび安全モードが仮想アドレスを指定するメモリアクセスリクエストを発生し得る実施例では、メモリは非安全メモリ内に非安全ページテーブルを含み、安全メモリ内に安全ページテーブルを含むことが好ましい。非安全モードでは、変換テーブルウォークロジック210によって非安全ページテーブルが参照され、他方、安全モードでは変換テーブルウォークロジック210によって安全ページテーブルが参照される。図42はこれら2つのページテーブルを示す。図42に示されるように、例えば図1の外部メモリ560内にあり得る非安全メモリ390は、ベースアドレス397を参照することによってCP15レジスタ34内に指定された非安全ページテーブル395を内部に含む。同様に、図1の外部メモリ56内に再びあり得る安全メモリ400内には、安全ページテーブルベースアドレス407により二重CP15レジスタ34内で指定される対応する安全ページテーブル405が設けられる。非安全ページテーブル395内の各デスクリプタは非安全メモリ390内の対応する非安全ページをポイントし、他方、安全ページテーブル405内の各デスクリプタは安全メモリ400内に対応する安全ページを定める。更により詳細に後述するように、メモリの所定領域を非安全モードと安全モードの双方によってアクセスできる共用メモリ領域410とすることができる。
図43は好ましい実施例に従ってメインTLB208内で実行されるルックアッププロセスをより詳細に示す。上記のように、メインTLB208は対応するデスクリプタ435が安全ページテーブルからのものか、または非安全ページテーブルからのものかのいずれかを識別するドメインフラグ425を含む。このことは、ルックアッププロセスを実行しているときはコア10が作動中の特定のドメインに対応するデスクリプタしかチェックしないことを保証している。図43は、安全ワールドとも称す安全ドメイン内でコアが作動中の一例を示す。図43から判るように、メインTLB208のルックアップが実行されるとき、この結果、デスクリプタ440が無視され、デスクリプタ445だけがルックアッププロセス用の候補として識別される。
好ましい実施例によれば、本明細書でASIDフラグとも称す別のプロセスIDフラグ430がプロセス固有のページテーブルからのデスクリプタを識別するように設けられる。従って、プロセスP1、P2およびP3の各々はメモリ内に設けられた対応するページテーブルを有し、更に非安全動作および安全動作のための異なるページテーブルを有することができる。更に、安全ドメイン内のプロセスP1、P2、P3は非安全ドメイン内のプロセスP1、P2、P3に対して完全に別個のプロセスとすることができると理解できよう。従って、図43に示されるように、メインTLBルックアップ208が必要とされるときのドメインのチェックのほかに、ASIDフラグもチェックする。
従って、安全ドメインにおいてプロセスP1が実行中の図43内の例では、このルックアッププロセスはメインTLB208内の2つのエントリー450を識別し、これら2つのデスクリプタ内の仮想アドレス部分がメモリアクセスリクエストによって発生される仮想アドレスの対応する部分と一致するかどうかに応じて、一致または不一致信号を発生する。一致した場合、対応するアクセス制御情報が抽出され、マイクロTLB206、アクセス許可ロジック202および領域属性ロジック204へ送られる。一致しない場合、すなわち不一致が生じた場合、変換テーブルウォークロジック210を使用し、安全プロセスP1に対して提供されるページテーブルからの必要なデスクリプタをメインTLB208内に検索する。当業者であれば理解できるように、TLBのコンテンツを管理する技術は多数あるので、メインTLB208内に記憶するように、新しいデスクリプタが検索される。メインTLBが既に満杯である場合、多数の公知の技術のうちの1つを使用して新しいデスクリプタ例えば少なくとも最近使用されたアプローチのための余裕を設けるために、どのデスクリプタをメインTLBから退却させるかを判断することができる。
安全作動モードで使用される安全カーネルは非安全オペレーティングシステムに対して完全に別個に開発できると理解できよう。しかしながら、所定の場合では安全カーネルと非安全オペレーティングシステムの開発は密接にリンクしており、かかる状況では安全アプリケーションは非安全デスクリプタを使用できるようにすることが適当であり得る。実際にこれによって仮想アドレスを知るだけで、安全アプリケーションが(共用のために)非安全データに直接アクセスできるようになる。当然ながらこのことは、特定のASIDに対して安全仮想マッピングと非安全仮想マッピングとが排他的であることを仮定するものである。かかるシナリオでは、安全デスクリプタと非安全デスクリプタとを区別するように、前に導入されたタグ(すなわちドメインフラグ)が不要となる。代わりに、利用できるすべてのデスクリプタによるTLB内のルックアップを実行する。
好ましい実施例では、メインTLBのこのコンフィギュレーションと、別個の安全デスクリプタおよび非安全デスクリプタを有する前に説明したコンフィギュレーションとの選択を、CP15制御レジスタ内で提供される特定のビットによって設定できる。好ましい実施例では、このビットは安全カーネルによってしかセットされない。
安全アプリケーションが直接非安全仮想アドレスを使用することが認められる実施例では、非安全スタックポインタが安全ドメインから利用できるようにすることが可能である。このことは、CP15レジスタ34内の専用レジスタ内に非安全スタックポインタを識別する非安全レジスタ値をコピーすることによって行うことができる。このことは、安全アプリケーションによって理解される方式に従い、スタックを介してパラメータを非安全アプリケーションが送ることを可能にする。
上記のように、メモリは非安全部分と安全部分とに分割でき、このような分割はパーティションチェッカー222専用のCP15レジスタ34を使って安全カーネルによって制御される。このような基本的なパーティション(分割)方法は、代表的なMPUデバイス内で定義できるような領域アクセス許可に基づくものである。従って、メモリは複数の領域に分割され、各領域はそのベースアドレス、サイズ、メモリ属性およびアクセス許可によって定義することが好ましい。更に、オーバーラップする領域にプログラムを組むときには、上部領域の属性が最も高いプライオリティを有する。更に、本発明の好ましい実施例によれば、対応する領域が安全メモリ内にあるのか、または非安全メモリ内にあるのかを定めるための新しい領域属性が提供される。この新しい領域属性は安全カーネルによって使用され、安全メモリとして保護すべきメモリ部分を定める。
ブート段階では、図44に示されるように、最初の分割が実行される。この最初の分割は非安全ワールド、非安全オペレーティングシステムおよび非安全アプリケーションに割り当てられるメモリ460の量を決定する。この量はこの分割で定められる非安全領域に対応する。次にこの情報はメモリ管理のために非安全オペレーティングシステムで使用される。安全として定められるメモリ462、464の残りの部分は非安全オペレーティングシステムにとっては未知である。非安全ワールドにおける完全性を保護するために、非安全メモリには安全特権モードだけのアクセス許可のプログラムを組むことができる。従って、安全アプリケーションは非安全アプリケーションを不正に改変しない。図44から判るように、このようなブート段階の分割の後で、メモリ460が非安全オペレーティングシステムによる使用のために利用できるようになり、メモリ462は安全カーネルによる使用に利用できるようになり、メモリ464は安全アプリケーションによる使用に利用できるようになる。
一旦ブート段階の分割を実行すると、非安全メモリ460のメモリマッピングはMMU200を使用する非安全オペレーティングシステムによって処理されるので、通常のように一連の非安全ページを定めることができる。これについては図45に示されている。
安全アプリケーションが非安全アプリケーションとメモリを共用しなければならない場合、安全カーネルはあるドメインから別のドメインへデータを人工的に転送するためのメモリの一部の権利を変更できる。従って、図46に示されるように、安全カーネルは非安全ページの完全性をチェックした後に、共用メモリとしてアクセスできる安全ページ466となるように、非安全ページの権利を変えることができる。
メモリのパーティションを変更するときに、マイクロTLB206をフラッシングする必要がある。従って、このシナリオでは、その後、非安全アクセスが行われるときにマイクロTLB206で不一致が生じるので、メインTLB208から新しいデスクリプタをロードしなければならない。この新しいデスクリプタはマイクロTLB206への検索を試みているものとしてMPUのパーティションチェッカー222によりその後チェックされ、よってメモリの新しいパーティションと一致する。
好ましい実施例では、キャッシュ38は仮想インデックスされ、物理的なタグがつけられるので、キャッシュ38内でアクセスを実行するときには最初にマイクロTLB206では既にルックアップが実行されている。従って、アクセス許可、特に安全許可および非安全許可はチェック済みである。従って、非安全アプリケーションによりキャッシュ38にはデータを記憶できない。キャッシュ38へのアクセスはパーティションチェッカー222により実行されるパーティションチェックの制御下にあるので、非安全モードでは安全データへのアクセスを実行できない。
しかしながら、生じ得る1つの問題は非安全ドメイン内のアプリケーションがキャッシュ動作レジスタを使用し、キャッシュを無効にし、クリーンにし、またはフラッシュできることである。かかる動作はシステムのセキュリティに影響しないように保証する必要がある。例えば非安全オペレーティングシステムがキャッシュ38をクリーンにすることなく、キャッシュ38を無効にした場合、置き換え前に外部メモリへ安全ダーティデータを書き込まなければならない。キャッシュ内では安全データにタグを付け、よってこのデータを所望する場合、異なるように取り扱うことができるようにすることが好ましい。
好ましい実施例では、「アドレスによるラインの無効化」動作が非安全プログラムによって実行される場合、物理アドレスはパーティションチェッカー222によりチェックされ、キャッシュラインが安全キャッシュラインである場合、動作は「クリーンおよび無効化」動作となり、システムのセキュリティを維持することを保証する。更に好ましい実施例では、非安全プログラムによって実行されるすべての「インデックスによるライン無効化」動作は「インデックスによるクリーンおよび無効化」動作となる。同様に、非安全プログラムによって実行されるすべての「すべてを無効化する」動作のいずれも、「すべてをクリーンにし、無効化する」動作となる。
更に図1を参照すると、DMA32によるTCM36へのアクセスはマイクロTLB206によって制御される。従って、DMA32がTLB内のルックアップを実行し、その仮想アドレスを物理アドレスに変換するときに、メインTLBで追加された、前に説明したフラグにより、ちょうどコア10によってアクセスリクエストが発生されたかのように、必要とされるセキュリティチェックが実行される。更に後述するように、好ましくはアービタ/デコーダブロック54内に設けることが好ましい外部バス70へレプリカパーティションチェッカーが結合されるので、DMA32が外部バスインデックス42を介し、外部バス70に結合されたメモリに直接アクセスした場合、その外部バスに接続されたレプリカパーティションチェッカーがアクセスの有効性をチェックする。更に所定の好ましい実施例では、非安全ドメイン内でDMAコントローラ32が使用されるかどうかを定めるためのビットをCP15レジスタ34に追加することができる。このビットは特権モードで作動している時にしか安全カーネルによってセットされない。
次に、TCM36を検討する。安全データがTCM36に置かれる場合、このデータは注意して取り扱われなければならない。一例として、TCMメモリ36に対する物理アドレスレンジが外部安全メモリ部分にオーバーラップするように、非安全オペレーティングシステムがTCMメモリ36に対する物理アドレスレンジをプログラムしているようなシナリオをイメージできる。次に、作動モードが安全モードに変化した場合、安全カーネルはデータをそのオーバーラップした部分に記憶させることができ、TCM36は外部メモリよりも高いプライオリティを有するので、一般にTCM36にデータが記憶されることになる。前の安全領域からメモリの非安全物理領域にマッピングされるよう、非安全オペレーティングシステムがTCM36に対する物理アドレススペースの設定を変えたとした場合、パーティションチェッカーはこのエリアを非安全エリアと見なし、アボートをアサートしないので、非安全オペレーティングシステムは安全データにアクセスできることが理解できよう。従って、要約すれば、TCMがスマートキャッシュとしてではなく、通常のローカルRAMとして作動するように構成されている場合において、非安全オペレーティングシステムがTCMベースレジスタを非安全物理アドレスまで移動できれば、非安全オペレーティングシステムは安全ワールドデータを読み出すことが可能である。
この種のシナリオを防止するために、好ましい実施例では、安全特権作動モードでしかアクセスできないCP15レジスタ34内に制御ビットが設けられ、この制御ビットは2つの可能なコンフィギュレーションを提供する。第1のコンフィギュレーションでは、この制御ビットは「1」にセットされ、この場合、TCMは安全特権モードによってしか制御できない。従って、CP15 34内のTCM制御レジスタに試みられる非安全アクセスは無定義命令例外を入力させる。従って、この第1コンフィギュレーションでは、安全モードと非安全モードの双方がTCMを利用できるが、TCMは安全特権モードによってしか制御できない。第2コンフィギュレーションでは、制御ビットは「0」にセットされ、この場合、TCMは非安全オペレーティングシステムによって制御できる。この場合、TCMは非安全アプリケーションによってしか使用されない。安全データはTCMに記憶することもTCMからロードすることもできない。従って、安全アクセスを実行するときに、アドレスがTCMアドレスレンジに一致しているかどうかを見るために、TCM内ではルックアップは実行されない。
デフォルトにより非安全オペレーティングシステムを変える必要がないこのようなシナリオのように、TCMを非安全オペレーティングシステムによってしか使用できないように考えつくことができる。
上記のように、MPU220内にパーティションチェッカー222を設けるほかに、本発明の好ましい実施例は、外部バス70に結合された類似するパーティションチェックブロックも提供している。この追加パーティションチェッカーは他のマスターデバイス、例えばデジタル信号プロセッサ(DSP)50、外部バスに直接結合されたDMAコントローラ52、外部バスインターフェース42を介して外部バスに接続できるDMAコントローラ32などにより、メモリへのアクセスを規制するのに使用される。実際に一部の実施例では、後述するように外部(またはデバイス)バスにパーティションチェックブロックを結合するだけでよく、メモリ管理ロジック30の一部としてパーティションチェッカーを設ける必要はない。かかる一部の実施例では、メモリ管理ロジック30の一部としてパーティションチェッカーをオプションで設けることができ、かかる場合、このパーティションチェッカーはデバイスバスに結合されたチェッカーのほかに設けられた別のパーティションチェッカーと見なされる。
上記のように、メモリシステム全体はいくつかのメモリユニットから構成でき、これら種々のメモリユニット、例えば外部メモリ56、ブートROM44またはスクリーンドライバ46、I/Oインターフェース60、キー記憶ユニット64などのような周辺デバイスに設けられたバッファまたはレジスタ48、62、66が外部バス70に存在し得る。例えばメモリシステムの異なる部分を安全メモリとして定義する必要がある。例えばキー記憶ユニット64内のキーバッファ66を安全メモリとして取り扱わなければならないことが望まれる。かかる安全メモリへのアクセスが外部バスに結合されているデバイスによって試みられる場合、コア10を含むチップ内に設けられた、前に説明したメモリ管理ロジック30は、かかるアクセスを規制できないことは明らかである。
図47は、本明細書でデバイスバスとも称す外部バスに結合された別のパーティションチェッカー492をどのように使用するかを示す。デバイス、例えばデバイス470、472によって外部バスにメモリアクセスリクエストが発生されるときは常に、そのメモリアクセスリクエストが作動モード、例えば特権モード、ユーザーモードなどを定める所定の信号も外部バスに含むように、外部バスを一般に構成する。本発明の好ましい実施例によれば、メモリアクセスリクエストはデバイスが安全モードで作動しているのか、または非安全モードで作動しているのかを識別するためのドメイン信号を外部バスに発生することも含む。このドメイン信号はハードウェアレベルで発生することが好ましく、好ましい実施例では安全ドメインまたは非安全ドメインで作動できるデバイスは外部バス内のパス490にドメイン信号を出力するための所定のピンを含む。図解のために、外部バス上の別の信号パス488とは別に、このパス490が示されている。
本明細書で「Sビット」とも称すこのドメイン信号は、メモリアクセスリクエストを発生したデバイスが安全ドメインで作動中か、または非安全ドメインで作動中かを識別し、この情報は外部バスに結合されたパーティションチェッカー492によって受信される。このパーティションチェッカー492はメモリのどの領域が安全であるか、または非安全であるかを識別するパーティション情報にもアクセスするので、Sビットが安全作動モードを識別するようにアサートされている場合にしかデバイスがメモリの安全部分にアクセスできないようにすることができる。
デフォルトによりSビットをアンアサートし、よって図47に示されているデバイス472のような、あらかじめ存在する非安全デバイスがアサートされたSビットを出力せず、従って、メモリの安全部分がレジスタまたはバッファ482、486内、スクリーンドライバ480、I/Oインターフェース484内、または外部メモリ474内にあるかどうかに応じ、メモリの安全部分へのパーティションチェッカー492によるアクセス権が付与されることはない。
説明の都合から、マスターデバイス、例えば470、472が発生するメモリアクセスリクエスト間の仲裁をするのに使用されるアービタブロック476は、メモリアクセスリクエストのサービスをするための適当なメモリデバイスを決定するのに使用されるデコーダ478に対して別々に示されており、パーティションチェッカー492と別個となっている。しかしながら、これら部品の1つ以上は所望すれば同じユニット内に組み込むこともできることが理解できよう。
図48は、パーティションチェッカー492が設けられず、その代わりに各メモリデバイス474、480、484がSビットの値に応じて自己のメモリアクセスを規制するようになっている別の実施例を示す。従って、デバイス470が安全メモリとしてマークされたスクリーンドライバ480内のレジスタ482に対して、非安全モードでメモリアクセスリクエストをアサートすると仮定した場合、スクリーンドライバ480はSビットがアサートされていないと判断し、メモリアクセスリクエストを処理しない。従って、種々のメモリデバイスを適当に設計することにより、外部バスと別個にパーティションチェッカー492を設けなくてもよいようにできる。
図47および48の上記説明では、「Sビット」はメモリアクセスリクエストを発生したデバイスは安全ドメインで作動中か、非安全ドメインで作動中かを識別すると述べられている。別の観点から見た場合、このSビットはメモリアクセスリクエストが安全ドメインに関するものであるか、または非安全ドメインに関するものであるかのいずれかを表示すると見ることができる。
図37および38を参照して説明した実施例では、ページテーブルの単一のセットと共に単一のMMUを使用して、仮想−物理アドレス変換を実行した。かかるアプローチでは、物理アドレス空間は図49に示されるように簡単な態様で、非安全メモリと安全メモリとに一般にセグメント化される。ここで、物理アドレス空間2100はメモリシステム内のメモリユニットのうちの1つ、例えば外部メモリ56に対し、アドレスゼロからスタートし、アドレスYまで拡張するアドレス空間を含む。各メモリユニットに対し、アドレス指定可能なメモリは一般に2つの部分、すなわち非安全メモリとして割り当てられた第1部分2110と安全メモリとして割り当てられた第2部分2120とに区分される。
かかるアプローチには特定のドメインにアクセスできない所定の物理アドレスが存在し、これらギャップはそれらドメインで使用されるオペレーティングシステムに対して明らかとなることが理解できよう。安全ドメイン内で使用されるオペレーティングシステムは非安全ドメインの知識を有するので、非安全ドメインに関係しないが、非安全ドメイン内のオペレーティングシステムは理想的には安全ドメインが存在することの知識を有しなくてもよく、代わりに安全ドメインがなかったかのように作動すべきである。
別の問題として、非安全オペレーティングシステムはアドレスゼロでスタートし、アドレスXまで拡張する外部メモリに対するアドレス空間をみて、非安全オペレーティングシステムは安全カーネルに関して、特にアドレスX+1からアドレスYまで延びる安全メモリの存在を全く知る必要はないことが理解できよう。これと対照的に、安全カーネルはオペレーティングシステムが一般に期待するアドレスではないアドレスゼロでスタートするアドレス空間を見ない。
図51には物理アドレス空間の非安全オペレーティングシステムのビューから安全メモリ領域を完全に隠すことができるようにし、安全ドメイン内の安全カーネルおよび非安全ドメイン内の非安全オペレーティングシステムの双方が、アドレスゼロでスタートする外部メモリに対するアドレス空間を見ることができるようにすることによって、上記問題を解決する一実施例が略図で示されている。ここで、物理アドレス空間2200はページレベルにて安全セグメントまたは非安全セグメントのいずれかにセグメント化できる。図51に示された例では、外部メモリのためのアドレス空間は2つの安全メモリ領域と2つの非安全メモリ領域とから成る4つの部分2210、2220、2230および2240にセグメント化されているように示されている。
単一ページテーブル変換により仮想アドレス空間と物理アドレス空間との間の切り換えを行うかわりに、第1ページテーブルおよび第2ページテーブルを参照し、2つの別個の層のアドレス変換を実行し、よってプロセッサが安全ドメインにあるのか、または非安全ドメインにあるのかに応じて異なるように配置できる中間アドレス空間の概念を導入することができる。より詳細には、図51に示されるように、ページテーブル2250の組内の安全ページテーブル内に設けられたデスクリプタを使用することにより、安全ドメインに対する中間アドレス空間内の1つの領域2265に対し、物理アドレス空間内の2つの安全メモリ領域2210および2230をマッピングできる。プロセッサで作動中のオペレーティングシステムに関し、中間アドレス空間を物理アドレス空間として満てMMUを使って仮想アドレスを中間アドレス空間内の中間アドレスに変換する。
同様に、非安全ドメインに対して中間アドレス空間2270を構成でき、この空間ではページテーブル2250のセット内の非安全ページテーブル内の対応するデスクリプタにより、非安全ドメインに対する中間アドレス空間内の非安全領域2275に対して物理アドレス空間内の2つの非安全メモリ領域2220および2240をマッピングする。
一実施例では、図50Aに示されるような2つの別個のMMUを使って中間アドレスを介した仮想アドレスから物理アドレスへの変換が取り扱われる。図50A内のMMU2150および2170の各々は、図37に示されたMMU200と同じように構成されていると見なすことができるが、図解を容易にするために図50Aでは所定の細部が省略されている。
第1MMU2150はマイクロTLB2155、メインTLB2160および変換テーブルウォークロジック2165を含み、同様に第2MMU2170はマイクロTLB2175、メインTLB2180および変換テーブルウォークロジック2185を含む。第1MMUはプロセッサが非安全ドメイン内で作動中は非安全オペレーティングシステムによって制御でき、プロセッサが安全ドメイン内で作動中は安全カーネルによって制御できる。しかしながら、好ましい実施例では、第2MMUは安全カーネルまたはモニタプログラムによってしか制御できない。
プロセッサコアがメモリアクセスリクエストを発生するとき、このコアはパス2153を通してマイクロTLB2155へ仮想アドレスを発生する。マイクロTLB2155はメインTLB2160内に記憶されたデスクリプタから検索された対応する中間アドレス部分を多数の仮想アドレス部分に対して記憶する。メインTLB2160内のデスクリプタは第1MMU2150に関連したページテーブルの第1のセット内のページテーブルから検索したものである。マイクロTLB2155内で一致が検出された場合、マイクロTLB2155はパス2153を通して受信された仮想アドレスに対応する中間アドレスをパス2157を通して発生できる。マイクロTLB2155内に一致がない場合、メインTLB内で一致が検出されたかどうかを見るためにメインTLB2160が参照され、一致が検出された場合、対応する仮想アドレス部分および対応する中間アドレス部分がマイクロTLB2155に検索され、その後、パス2157を通して中間アドレスを発生できる。
マイクロTLB2155およびメインTLB2160内で一致がなかった場合、第1MMU2150によってアクセスできるページテーブルの第1のセット内の所定のページテーブルからの必要なデスクリプタに関するリクエストを発生するのに、変換テーブルウォークロジック2165を使用する。一般に、安全ドメインまたは非安全ドメインの双方のための個々のプロセスに関連したページテーブルがあり、変換テーブルウォークロジック2165により、例えばCP15レジスタ34内の適当なレジスタからこれらページテーブルに対する中間ベースアドレスにアクセスできる。従って、変換テーブルウォークロジック2165は適当なページテーブルからデスクリプタをリクエストするよう、パス2167を通して中間アドレスを発生できる。
第2MMU2170はパス2157を通してマイクロTLB2155により、またはパス2167を通して変換テーブルウォークロジック2165により出力される中間アドレスを受信するようになっており、マイクロTLB2175内で一致が検出された場合、マイクロTLBはパス2192を通してメモリに必要な物理アドレスを発生し、データバス2190を通して必要なデータを検索させる。中間アドレスはパス2157を通して発生された場合、これによって必要なデータをコア10に戻され、一方、パス2167を通して発生される中間アドレスに対し、メインTLB2160に記憶できるように、第1MMU2150に対し、必要なデスクリプタがリターンされる。
マイクロTLB2175に不一致があった場合、メインTLB2180が参照され、メインTLB内に一致があった場合、必要な中間アドレス部分および対応する物理アドレス部分がマイクロTLB2175へ戻され、次にマイクロTLB2175がパス2192を通して必要な物理アドレスを発生できるようにする。しかしながら、マイクロTLB2175でもメインTLB2180でも一致がなかった場合、変換テーブルウォークロジック2185は第2MMU2170に関連したページテーブルの第2のセット内の対応するページテーブルから、必要なデスクリプタに対してパス2194を通してリクエストを出力するようになっている。このページテーブルの第2のセットは中間アドレス部分と物理アドレス部分を関連付けるデスクリプタを含み、一般に安全ドメインのための少なくとも1つのページテーブルおよび非安全ドメインのための1つのページテーブルが設けられる。パス2194を通してリクエストが発生されると、この結果、ページテーブルの第2のセットからの対応するデスクリプタが第2MMU2170へ戻され、メインTLB2180内に記憶できる。
次に、後述する特定の例により、更に図50Aに示されている実施例の作動について説明する。この例では、略語VAは仮想アドレスを示し、IAは中間アドレスを示し、PAは物理アドレスを示す。
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におけるデータがコアにリターンされる。
次の時間コアがメモリアクセスリクエスト(例えばVA3001....)を発生する。
1)コアがVA=3001を発生する。
2)MMU1のマイクロTLB内で一致があり、MMU2にリクエストIA5001が発生される。
3)MMU2のマイクロTLB内で一致があり、メモリへPA7001のためのリクエストが発生される。
4)PA7001におけるデータがコアにリターンされる。
上記例では、双方のMMU2のマイクロTLBおよびメインTLBの双方で一致が生じ、よってこの例は最悪ケースのシナリオを示していることが理解できよう。一般に、マイクロTLBまたはメインTLBの少なくとも1つで一致が観察され、従ってデータを検索するのにかかる時間が大幅に短縮されることが予想される。
図51に戻ると、好ましい実施例の安全領域における物理アドレス空間の所定の領域内には一般にページテーブルの第2のセット2250が設けられる。このページテーブルの第1セットは2つのタイプ、すなわち安全ページテーブルと非安全ページテーブルとに分割できる。非安全中間アドレス空間2275内の非安全ページテーブルと同じように、中間アドレス空間2265内には安全ページテーブルが連続的に生じることが好ましい。しかしながら、安全ページテーブルは物理アドレス空間内に連続的に設置する必要はないので、例えば安全領域2210、2230全体にページテーブルの第1セットのための安全ページテーブルを広げることができ、同じように非安全ページテーブルも非安全メモリ領域2220および2240全体に広げてもよい。
上記のようにページテーブルの2つのセットの2レベルのアプローチを使用する主な利点の1つとして、安全ドメインのオペレーティングシステムおよび非安全ドメインのオペレーティングシステムの双方に対し、物理アドレス空間が一般にオペレーティングシステムによって予想されるゼロでスタートするようにできる。更にオペレーティングシステムは中間アドレスの連続シーケンスを有するように配列できる中間アドレス空間を物理アドレス空間として見るので、「物理アドレス」空間の非安全オペレーティングシステムのビューから安全メモリ領域を完全に隠すことができる。
更に、かかるアプローチを使用することにより、非安全メモリと安全メモリとの間のメモリの領域をスワッピングする方法をかなり簡略化できる。このことは、図52を参照して略図で示されている。図52から分かるように、例えばメモリの単一ページとすることができるメモリの領域2300は非安全メモリ領域2220内に存在でき、同様にメモリ領域2310は安全メモリ領域2210内に存在できる。領域2300が安全領域の中間アドレス空間内の領域2305にマッピングされた安全領域となり、他方、領域2310が非安全ドメインの中間アドレス空間内の領域2315にマッピングされた非安全領域となるように、ページテーブルの第2の組内の対応するデスクリプタを変えるだけで、これら2つのメモリ領域2300と2310を容易にスワッピングできる。しかしながら、このことは安全ドメインおよび非安全ドメインの双方におけるオペレーティングシステムに対して完全にトランスペアレントに生じる。その理由は物理アドレス空間のビューは実際には安全ドメインまたは非安全ドメインの中間アドレス空間であるからである。従って、このアプローチは各オペレーティングシステム内の物理アドレス空間を再定義しなくてもよいようにできる。
次に、図52を参照し、2つのMMUも使用するが、図50Aの構造と別の構造となっている本発明の別の実施例について説明する。図50Bと図50Aとを比較することから判るように、構造はほとんど同じであるが、この実施例では第1MMU2150は仮想アドレスから物理アドレスへの変換を実行するようになっており、第2MMUは中間アドレスから物理アドレスへの変換を実行するようになっている。従って、図50Aで使用される第1MMU2150内のマイクロTLB2155から、第2MMU2170内のマイクロTLB2175へのパス2157の代わりに、第1MMU内のマイクロTLB2155が図50Bに示されるようにパス2192を通して直接物理アドレスを出力するようになっている。次に、図50Aの実施例に対してこれまで説明したように、同じコアメモリアクセスリクエストの処理を詳細に説明する下記のような特定の例により、図50bに示された実施例の作動について説明する。
1)コアがVA=3000を発生する。[IA=5000、PA=7000]
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」がリターンされる。
注: この変換はMMU2によって一時記憶装置に保持されるが、TLBに直接記憶されることはない。
8)MMU2の変換テーブルウォークロジックがIA=5000に対するMMU2にリクエストを発生する。
9)MMU2のマイクロTLBおよびメインTLB内でIA5000が不一致。
10)MMU2内の変換テーブルウォークロジックがページテーブルルックアップを実行し、
PA=12005を発生する。
ページテーブルデータとして「5000IA=7000PA」がリターンされる。
11)MMU2がマイクロTLBおよびメインTLB内に「5000IA=7000PA」を記憶する。この変換はMMU1にも伝えられる。
12a)MMU2がメモリへPA=7000アクセスを発生する。
12b)MMU1が「3000VA=5000IA」と「5000IA=7000PA」デスクリプタを組み合わせ、「3000VA=7000PA」デスクリプタを与え、このデスクリプタはmMU1のメインTLBおよびマイクロTLBに記憶される。
13)PA7000におけるデータはコアへリターンされる。
次の時間コアがメモリアクセスリクエスト(例えばVA3001....)を発生する。
1)コアがVA=3001を発生する。
2)MMU1のマイクロTLB内で一致があり、MMU1がPA7001に対するリクエストを発生する。
4)PA7001におけるデータがコアにリターンされる。
上記例と図50Aに対して提供された例との比較から判るように、主な差はMMU1が第1テーブルデスクリプタを直接記憶しないステップ7、およびMMU1がIA−>PA変換も受信し、これらの組み合わせを行い、組み合わされたデスクリプタをそのTLBに記憶するステップ12b(12aと12bとは同時に生じ得る)にある。
従って、この別の実施例は仮想アドレスから物理アドレスに変換するのにページテーブルの2つのセットを使用しているが、マイクロTLB2155とメインTLB2160とが直接の仮想アドレス−物理アドレス変換を記憶しているという事実により、マイクロTLB2155またはメインTLB2160のいずれかで一致が生じたときに、双方のMMUでルックアップを実行しなくてもよいようになる。かかるケースでは、第1MMUは第2MMUを参照することなく、コアからのリクエストを直接取り扱いできる。
第2MMU2170はマイクロTLB2175およびメインTLB2180を含まなくてもよいようにできることが理解できよう。この場合、第2MMUによる取り扱いを必要としたどのリクエストに対しても、ページテーブルウォークロジック2185が使用される。このことは、第2MMUの複雑さを下げ、コストを節約するので、第2MMUがあまり頻繁には必要とされないことを仮定すれば受け入れ可能である。どのリクエストに対しても第1MMUを使用しなければならないので、一般に第1MMUの動作速度を改善するのに第1MMU2150内にマイクロTLB2155およびメインTLB2160を設けることは好都合となる。
ページテーブル内のページはサイズが変わり得るので、変換の半分の2つのためのデスクリプタが異なるサイズのページに関連できることに留意すべきである。一般にMMU1のページのほうがMMU2のページよりも小さくなるが、必ずしもこのような場合になるわけではない。例えば、
テーブル1は0x40003000における4Kbを0x00081000にマッピングする。
テーブル2は0x00000000における1Mbを0x02000000にマッピングする。
ここで、組み合わせ変換を行うには2つのサイズのうちの小さい方を使用しなければならないので、組み合わせデスクリプタは次のようになる。
0x02081000に対する0x40003000における4Kbとなる。
しかしながら、(図52を参照して前に説明したように)ワールド間でデータをスワップする場合、この逆も真となり得る。例えば、
テーブル1は0xc0000000における1Mbを0x00000000にマッピングする。
テーブル2は0x00042000における4Kbを0x02042000にマッピングする。
次にコアからのアドレス0xc0042010におけるルックアップは次のマッピングを与える。
0x02042000に対する0xc0042000における4Kb
すなわち組み合わせマッピングに対して常に2つのサイズのうちの小さい方を使用する。
第2のケースでは、プロセスはより効率が低い。その理由は、テーブル1における(1Mbの)デスクリプタは繰り返しルックアップされ、異なる4Kbのエリアにアクセスされる際に廃棄されるからである。しかしながら、代表的なシステムでは大部分の時間でテーブル2のデスクリプタのほうが(第1の例のように)大きく、この場合の方がより効率的である(IAの空間の適当な部分をポイントする別の4Kbのページに対しては2Mbのマッピングをリサイクルできる)。
図50Aおよび50Bに示されるように、2つの別個のMMUを使用する別の例として、図53に示されるように単一のMMUを使用できる。メインTLB2420内で不一致が生じた場合、MMUによって例外が発生され、この例外はソフトウェアをコア10内で作動させ、ページテーブルの2つの異なるセットからのデスクリプタの組み合わせに基づき、仮想−物理アドレス変換を生じさせる。より詳細には、図53に示されるように、コア10はMMU2400に結合されており、このMMU2400はマイクロTLB2410とメインTLB2420とを含む。コア10がメモリアクセスリクエストを発生すると、パス2430を通して仮想アドレスが提供される。マイクロTLB内で一致が見いだされると、パス2440を通して対応する物理アドレスが直接出力され、データがパス2450を通してコア10へリターンされる。しかしながら、マイクロTLB2410内で不一致があった場合、メインTLB2420が参照され、メインTLB内に対応するデスクリプタが含まれている場合には関連する仮想アドレス部分および対応する物理アドレス部分がマイクロTLB2410に検索され、その後、パス2440を通して物理アドレスを発生できる。しかしながら、メインTLBが不一致も発生する場合、パス2422を通してコアに例外が発生される。次に、図54を参照し、かかる例外の受信からコア内で実行されるプロセスについて更に説明する。
図54に示されるように、ステップ2500でコアによりTLB不一致例外が検出された場合、コアはステップ2510にてその例外に対する所定のベクトルでモニタモードに入る。このことによって、ページテーブルマージコードが作動され、図54に示されたステップで他の部分を実行する。
より詳細には、ステップ2520にてパス2430を通して発生され、マイクロTLB2410およびメインTLB2420の双方での不一致を生じさせた仮想アドレス(以下、フォールト仮想アドレスと称す)が検索され、その後、ステップ2530にてテーブルの第1のセット内の適当なテーブルに対する中間ベースアドレスに応じて、必要な第1デスクリプタに対する中間アドレスが決定される。(一般に仮想アドレスと中間ベースアドレスとの所定の組み合わせにより)中間アドレスが一旦決定されると、テーブルの第2セット内の対応するテーブルが参照され、第1デスクリプタに対する対応する物理アドレスが得られる。その後、ステップ2550にてメモリから第1デスクリプタをフェッチし、フォールト仮想アドレスに対する中間アドレスを決定できる。
次にステップ2560にて再び第2テーブルを参照し、フォールト仮想アドレスの中間アドレスに対する物理アドレスを与える第2デスクリプタを探す。その後、ステップ2570にて第2デスクリプタをフェッチし、フォールト仮想テーブルに対する物理アドレスを得る。
一旦上記情報が得られると、プログラムは第1デスクリプタと第2デスクリプタとをマージし、必要な仮想アドレス−物理アドレス変換を与える新しいデスクリプタを発生する。このプロセスはステップ2580で実行される。図50Bを参照して前に説明したのと同じように、ソフトウェアによって実行されるマージは再び組み合わされた変換に対する最小のページテーブルサイズを使用する。その後、ステップ2590にてメインTLB2420内に新しいデスクリプタが記憶され、その後、ステップ2590にて例外からプロセスがリターンされる。
その後、コア10はパス2430を通してメモリアクセスリクエストに対する仮想アドレスを再発生するようになっており、この再発生の結果、マイクロTLB2410内で不一致が生じるが、メインTLB2420内では一致が生じる。従って、マイクロTLB2410内に仮想アドレス部分と対応する物理アドレス部分とを検索でき、その後、マイクロTLB2410はパス2440を通して物理アドレスを発生できるので、その結果、必要なデータがパス2450を通してコア10にリターンされる。
図50Aおよび50Bを参照してこれまで説明した実施例と別の実施例として、これら実施例における一方または双方のMMUは図53および54を参照してこれまで説明した原理を使用するソフトウェアによって管理できることが理解できよう。
図50Aまたは50Bに示されるように、2つのMMUを使用するか、または図53に示されるように、1つのMMUを使用するかのいずれに拘わらず、モニタモード(またはこれとは異なり、特権安全モード)で作動しているときに、ページテーブルの第2セットをプロセッサで管理することにより、これらページテーブルが安全となることを保証できる。この結果、プロセッサが非安全ドメインにあるとき、プロセッサは非安全メモリしか見ることができない。その理由は、プロセッサが非安全ドメインにあるときに見ることができるのは、ページテーブルの第2のセットにより非安全ドメインに対して発生される中間アドレス空間に限られるからである。この結果、図1に示されるようなメモリ管理ロジック30の一部としてパーティションチェッカーを設ける必要はない。しかしながら、システム内の他のバスマスターによってなされるアクセスをモニタするためのパーティションチェッカーが外部バスに設けられることになる。
図37および38を参照して前に説明した実施例では、MMU200に関連してパーティションチェッカー222が設けられていたので、キャッシュ38ないでアクセスを実行すべきときには、まずマイクロTLB206内ですでにルックアップが実行されており、従って、アクセス許可、特に安全許可および非安全許可がチェックされていたはずである。従って、かかる実施例では非安全アプリケーションによりキャッシュ38に安全データを記憶できない。キャッシュ38へのアクセスはパーティションチェッカー222により行われるパーティションチェックの制御下にあるので、非安全モードでは安全データへのアクセスを行うことができない。
しかしながら、本発明の別の実施例では、システムバス40を通してなされるアクセスをモニタするためのパーティションチェッカー222が設けられておらず、その代わりにデータ処理装置はその外部バスに接続されたメモリユニットへのアクセスをモニタするよう、外部バス70に結合された単一のパーティションチェッカーを有するに過ぎない。かかる実施例では、このことは外部パーティションチェッカーによりこれらアクセスを規制することなく、システムバス40に直接結合されたメモリユニット、例えばTCM36およびキャッシュ38にプロセッサコア10がアクセスできることを意味する。従って、非安全モードで作動している間にキャッシュ38内またはTCM36内の安全データにプロセッサコア10がアクセスしないように保証するためのある手順が必要である。
図55は本発明の一実施例に拘わるデータ処理装置を示し、この実施例では、MMU200に関連してパーティションチェックロジックを設けなくても、キャッシュ38および/またはTCM36がこれらへのアクセスを制御できるようにするための手順が設けられる。図55に示されるように、MMU200を介し、システムバス40にコア10が結合されており、キャッシュ38およびTCM36もシステムバス40に結合されている。コア10、キャッシュ38およびTCM36は外部バスインターフェース42を介して外部バス70に結合されており、外部バスは図55に示されるように、アドレスバス2620、制御バス2630およびデータバス2640から成る。
コア10、MMU200、キャッシュ38、TCM36および外部バスインターフェース42はデバイスバスとも称される外部バス70に接続された単一デバイスを構成すると見なすことができ、このデバイスバスには他のデバイス、例えば安全周辺デバイス470または非安全周辺デバイス472も接続できる。更に、デバイスバス70は1つ以上のメモリユニット、例えば外部メモリ56も接続される。更に、デバイスバス70にはバス制御ユニット2650が接続されており、この制御ユニットは一般にアービタ2652、デコーダ2654およびパーティションチェッカー2656を含む。デバイスバスに接続された構成部品の作動を一般に説明するには、前に説明した図47を参照すべきである。前に説明した図47では、アービタ2652とデコーダと、パーティションチェッカーは別個のブロックとして示されていたが、これら要素は単一制御ブロック2650に入れても同じように働く。
図56に図55のMMU200をより詳細に示す。図56と図37とを比較することにより、MMU200は図37のMMUと全く同じように構成され、唯一の差異はメインTLB208とマイクロTLB206との間でパス242を通して送られるデータをモニタするためのパーティションチェッカー222が設けられていないことであるということが理解できよう。プロセッサコア10が仮想アドレスを指定するメモリアクセスリクエストを発生した場合、このメモリアクセスリクエストはMMU200を通過するようにルーティングされ、図37を参照して前に説明したように処理され、この結果、マイクロTLB206からパス238を通してシステムバス40に物理アドレスが出力される。これと対照的に、メモリアクセスリクエストが直接物理アドレスを指定する場合、このアドレスはMMU200をバイパスし、代わりにパス236を介してシステムバス40に直接ルーティングされる。一実施例では、プロセッサがモニタモードで作動しているときにしか、物理アドレスを直接指定するメモリアクセスリクエストを発生しない。
MMU200の前の説明、および特に図43の説明から思い出されるように、メインTLB208は多数のデスクリプタ435を含み、各デスクリプタに対し、対応するデスクリプタが安全ページテーブルからのものであるか、または非安全ページテーブルからのものであるかを識別するためのドメインフラグ425が設けられる。図55のMMU200内にはこれらデスクリプタ435および関連するドメインフラグ425が略図で示されている。
コア10がメモリアクセスリクエストを発生すると、この結果、システムバス40にそのメモリアクセスリクエストのための物理アドレスが出力され、そのアドレスによって指定されるデータアイテムがキャッシュ内に記憶されているかどうかを判断するためのルックアッププロセスを一般に実行する。キャッシュ内に不一致が生じるときはいつも、すなわちアクセスリクエストを受けたデータアイテムがキャッシュ内に記憶されていなかったときはいつも、メモリアクセスリクエストの対象であるデータアイテムを含むデータのラインを外部メモリ45から検索するためのラインフィル手順がキャッシュにより開始される。特にキャッシュはアドレスバス2620に出力されたスタートアドレスにより、デバイスバス70の制御バス2630にEBI42を介してラインフィルリクエストを出力する。更にバス2632を通してHPROT信号が制御バス2630に出力され、このHPROT信号はメモリアクセスリクエストが発生されたときに、コアの作動モードを指定するドメイン信号を含む。従って、ラインプロセスをキャッシュ30に載る外部バスへの元のメモリアクセスリクエストの伝搬と見なすことができる。
このHPROT信号はパーティションチェッカー2656によって受信されるので、外部メモリ56から指定されたデータをリクエストするデバイス(この場合、デバイスはコア10およびキャッシュ38を実装している)が、メモリアクセスリクエストが発生されたときに安全ドメインで作動していたか、または非安全ドメインで作動していたかをパーティションチェッカーに対して識別する。パーティションチェッカー2656はメモリのどの領域が安全であるか、または非安全であるかを識別するパーティション情報にもアクセスするので、デバイスがリクエストしているデータにアクセスすることを許可されているかどうかを判断できる。従って、パーティションチェッカーはHPROT信号内のドメイン信号(本書ではSビットとも称す)が、安全作動モードで作動中のデバイスによって、このデータへのアクセスがリクエストされたことを識別するようにアサートされた場合にしか、デバイスがメモリの安全部分にアクセスできないようにすることができる。
コアが非安全モードで作動中であるが、メモリの安全領域内にある外部メモリからデータをラインフィルリクエストが検索しようとしていることを、例えばHPROT信号が識別しているので、リクエストされたデータへのアクセスをすることが、コア10には許可されていないとパーティションチェッカーが判断した場合、パーティションチェッカー2656は制御バス2630へアボート信号を発生し、この信号はパス2636を通してEBI42へ、更にこれからキャッシュ38へ送られ、この結果、パス2676を通してコア10にアボート信号が発生される。しかしながら、アクセスが許可されていないとパーティションチェッカー2656が判断した場合、パーティションチェッカーは外部メモリから検索されたデータが安全データであるか、または非安全であるかであるかを識別するSタグ信号を出力し、このSタグ信号はパス2645を通してEBI42に、更にこれからキャッシュ38へ送られ、ラインフィルプロセスの対象であるキャッシュライン2600に関連するフラグ2602の設定を可能にする。
同時に制御ロジック2650はリクエストされたラインフィルデータを出力するために外部メモリ56を認証する。このデータはパス2680を通し、EBI42を介し、キャッシュ38へ送られ、対応するキャッシュライン2600へ記憶される。従って、このプロセスの結果としてキャッシュライン38内の選択されたキャッシュラインには、外部メモリ56からのデータアイテムが満たされ、これらデータアイテムはコア10からの元のメモリアクセスリクエストの対象であるデータアイテムを含む。コアからのメモリアクセスリクエストの対象であるデータアイテムを次にキャッシュ38からコアにリターンできるか、これとは異なり、パス2660を通してEBI42からコア10へ直接提供できる。
好ましい実施例では、上記ラインフィルプロセスの結果として、キャッシュラインでのデータの元の記憶が行われるので、そのキャッシュラインに関係するフラグ2602はパーティションチェッカー2656によって提供される値に基づきセットされ、次にそのフラグはそのキャッシュライン2600内のデータアイテムへのその後のアクセスを直接制御するのに、キャッシュ38によって使用できる。従って、コア10がキャッシュ38の特定のキャッシュライン2600内で一致を生じさせるメモリアクセスリクエストをその後発生した場合、キャッシュ38は関連するフラグ2602の値を検討し、その値とコア10の現在の作動モードとを比較する。好ましい実施例では、コア10のそのときの作動モードはCP15ドメインステータスレジスタ内のモニタモードによってセットされるドメインビットによって表示される。従って、プロセッサコア10が安全作動モードで作動しているときにしか、対応するフラグ2602が安全データであると表示したキャッシュライン内のデータアイテムにプロセッサコアがアクセスできないように、キャッシュ38を構成できる。コアが非安全モードで作動している間のキャッシュ38内の安全データへのアクセスをする、コアによる試みがなされる結果、キャッシュ38はパス2670を通してアボート信号を発生する。
TCM36は種々の方法で設定できる。一実施例では、キャッシュのように作動するよう、セットできる。この実施例では、TCM36は複数のライン2610を含むように構成され、ラインの各々はキャッシュ38と同じようにラインに関連したフラグ2612を有する。キャッシュ38を参照して前に説明したのと全く同じように、TCM36へのアクセスが管理され、TCMの不一致の結果、ラインフィルプロセスが実行され、この結果、データが特定のライン2610に検索され、パーティションチェッカー2656がそのライン2610に関連したフラグ2612に記憶するための必要なSタグ値を発生する。
別の実施例では、外部メモリ56の延長としてTCM36を設定でき、プロセッサにより頻繁に使用されるデータを記憶するのにこのTCM36を使用できる。その理由は、システムバスを介したTCMのアクセスは、外部メモリのアクセスよりもかなり高速であるからである。かかる実施例では、TCM36はフラグ2612を使用せず、代わりにTCMへのアクセスを制御するのに異なる手順が使用される。特に前に説明したように、かかる実施例では、密に結合されたメモリが特権安全作動モードで作動中にしかプロセッサによって制御できないのか、または少なくとも1つの非安全モードで実行中のプロセッサによって制御できるのかのいずれかを表示するよう、特権安全モードで作動中のプロセッサによって設定可能な制御フラグを設けることができる。この制御フラグは安全オペレーティングシステムによってセットでき、実際にTCMが特権安全モードで制御するのか、または非安全モードで制御するのかを定める。従って、構成できる1つのコンフィギュレーションはプロセッサが特権安全作動モードで作動しているときにしか制御できないというコンフィギュレーションである。かかる実施例では、TCM制御レジスタで試みられる非安全アクセスは、無定義命令例外に進入させる。
別のコンフィギュレーションでは、非安全作動モードで作動中のプロセッサによってTCMを制御できる。かかる実施例では、TCMは非安全アプリケーションによってしか使用されない。TCMへ安全データを記憶したり、TCMから安全データをロードしたりすることはできない。従って、安全アクセスを実行するときには、アドレスがTCMアドレスレンジに一致しているかどうかを見るためのルックアップはTCM内では実行されない。
図57はプロセッサコア10で作動中の非安全プログラムが仮想アドレスを発生したとき(ステップ2700)に、図55の装置によって実行されるプロセスを示すフローチャートである。最初に、ステップ2705においてマイクロTLB206内でルックアップが実行され、この結果、一致が生じた場合、マイクロTLBはステップ2730でアクセス許可をチェックする。図56を参照すると、このプロセスはアクセス許可ロジック202によって実行されているものと見なすことができる。
ステップ2705において、マイクロTLBのルックアップ内で不一致が生じた場合、内部に記憶された非安全デスクリプタの間のルックアップがメインTLB208内で実行される(ステップ2710)。この結果不一致が生じた場合、ステップ2715へページテーブルウォークプロセス(これについては図37を参照して前に詳細に説明してある)が実行され、ここでステップ2720の後でメインTLBが有効なタグ付き非安全デスクリプタを含むと判断される。ステップ2710におけるルックアップが一致を生じさせた場合、プロセスは直接ステップ2720に進む。
その後、ステップ2725において、物理アドレスを含むデスクリプタ部分がマイクロTLBにロードされ、その後、ステップ2730にてマイクロTLBがアクセス許可をチェックする。
ステップ2730にて、アクセス許可の違反があったと判断された場合、プロセスはステップ2740に進み、ここでパス230(図55に示されたパス2670に類似する)を通してプロセッサコアにアボート信号が発生される。しかしながら、違反が検出されないと仮定した場合、ステップ3745において、アクセスがキャッシュ可能なデータアイテムに関係しているかどうかが判断される。関係していなければ、ステップ2790にて外部メモリ56からデータアイテムを検索するための外部アクセスが開始される。ステップ2795にて、パーティションチェッカー2656は安全パーティション違反があるかどうか、例えば非安全モードで作動中にプロセッサコア10が安全メモリ内のデータアイテムにアクセスしようとしているかどうかを判断する。違反が検出された場合、2775にてパーティションチェッカー2656はアボート信号を発生する。しかしながら、非安全パーティション違反がない場合、プロセスはステップ2785に進み、ここでデータアクセスが生じる。
ステップ2745にて、リクエストされているデータアイテムがキャッシュ可能であると判断された場合、ステップ2750にてキャッシュ内でキャッシュのルックアップが実行され、一致が検出されれば、キャッシュはステップ2755にて安全ラインタグ違反があるかどうかを判断する。従って、この段階でキャッシュはデータアイテムを含むキャッシュラインに関連したフラグ2602の値を検討し、そのフラグの値とコア10の作動モードとを比較し、リクエストされたデータアイテムへアクセスする権利がコアに与えられているかを判断する。安全ラインタグ違反が検出された場合、プロセスはステップ2760に進み、ここでキャッシュ38により安全違反フォールトアボート信号が発生され、パス2670を通してコア10へこの信号が送られる。しかしながら、ステップ2755にて非安全ラインタグ違反が検出されなかった場合、ステップ2785にてデータアクセスが実行される。
ステップ2750にてキャッシュのルックアップが実行されたときに、キャッシュの不一致が生じた場合、ステップ2765にてキャッシュのラインフィルが開始される。ステップ2770にてパーティションチェッカー2656は安全パーティションチェッカー違反があるかどうかを検出し、違反が検出されれば、ステップ2775にてアボート信号を発生する。しかしながら、非安全パーティション違反が検出されなかった場合、ステップ2780にてキャッシュラインフィルが進み、その結果、ステップ2785にてデータアクセスが完了する。
図57に示されるように、ステップ2705、2710、2715、2720、2725、2730および2735はMMU内で実行され、ステップ2745、2750、2755、2765、2780および2790はキャッシュによって実行され、ステップ2770およびステップ2795はパーティションチェッカーによって実行される。
図58はコアで実行中の安全プログラムが仮想アドレスを発生した場合(ステップ2800)に実行される類似のプロセスを示すフローチャートである。図58と図57とを比較すると、MMU内で実行されるステップ2805〜2835は、図57を参照して前に説明したステップ2705〜2735に類似していることが理解できよう。これらの違いはステップ2810にあり、メインTLB内に記憶された安全デスクリプタに関連してメインTLB内で実行されるルックアップが実行され、この結果、ステップ2820にてメインTLBは有効なタグの付いた安全デスクリプタを含む。
図58を参照した実施例では、安全プログラムは安全データと非安全データの双方にアクセスできると仮定しているので、キャッシュ内ではキャッシュは安全ラインタグ違反を探す必要はない。従って、ステップ2850にてキャッシュのルックアップ中に一致が生じた場合、プログラムは直接データアクセスステップ2885に進む。
同様に、(例えばステップ2865または2890にて)外部メモリへの外部アクセスが必要とされた場合、安全プログラムは安全データまたは非安全データのいずれにもアクセスできると仮定されているので、パーティションチェッカーはパーティションチェックを実行しなくてもよい。
キャッシュ内で実行されるステップ2845、2850、2865、2880および2890は、図57を参照して前に説明したステップ2745、2750、2765、2780および2790に類似している。
図57はプロセッサで作動する異なるモードおよびアプリケーションを示す。点線は本発明の実施例に従い、プロセッサのモニタ中に異なるモードおよび/またはアプリケーションを互いにどのように分離し、アイソレートできるかを示している。
生じ得る障害を発見し、なぜアプリケーションが期待するように作動しないかを発見するために、プロセッサをモニタする能力は極めて有効であり、多くのプロセッサはかかる機能を提供している。デバッグ機能およびトレース機能を含む種々の方法でモニタを行うことができる。
本技術に係わるプロセッサでは、フォールトデバッグモードおよびモニタデバッグモードを含むいくつかのモードでデバッグが作動できる。これらモードは侵襲的であり、このときに実行中のプログラムを停止させる。フォールトデバッグモードにおいて、ブレークポイントまたはウォッチポイントが発生すると、コアが停止され、システムの他の部分からアイソレートされ、コアはデバッグステートに入る。デバッグステートに入るときにコアはホールト(halt)されパイプラインがフラッシングされるが、命令はプリフェッチされない。PCはフリーズされ、どのインターラプト(IRQおよびFIQ)も無視される。(JTAGシリアルインターフェースを介し)コアの内部ステートだけでなくメモリシステムのステートも検査できる。そのときのモードを改善し、レジスタコンテンツなどを変更できるので、このステートはプログラムの実行に対して侵襲的である。デバッグが一旦終了すると、コアはデバッグTAP(テストアクセスポート)を通して再スタート命令でスキャンすることにより、デバッグステートから出ることができる。
モニタデバッグモードではブレークポイントまたはウォッチポイントはコアがアボートモードに入るようにさせ、それぞれプリフェッチまたはデータアボートベクトルを取り込む。この場合、コアはまだ機能モードにありホールトデバッグモードとなっているので、まだ停止されていない。アボートハンドラーはデバッグアプリケーションと通信し、プロセッサおよびコプロセッサのステートまたはダンプメモリにアクセスする。デバッグハードウェアとソフトウェアデバッガーとの間をデバッグモニタプログラムがインターフェースする。デバッグステートのビット11および制御レジスタDSCRがセット(後に参照)された場合、インターラプト(FIQおよびIRQ)を禁止できる。モニタデバッグモードではデータアボートおよびプリフェッチアボートでベクトルキャッチがディスエーブルされ、モニタデバッグモードに対して発生されたアボートの結果として、プロセッサが強制的にリカバー不能ステートされるのを防止する。モニタデバッグモードはある種のデバッグモードであり、安全ワールドと非安全ワールドとの間の切り換えをスーパーバイズ(監督)するモードであるプロセッサのモニタモードには関連していないことに留意すべきである。
デバッグはある瞬間においてプロセッサのステートのスナップショットを提供できる。デバッグはデバッグの開始リクエストが受信された瞬間における種々のレジスタ内の値に注目することによってこれを行う。これら値はスキャンチェーン(図67の541、544)に記録され、次にJTAGコントローラ(図1の18)を使ってシリアルに出力される。
コアをモニタする別の方法は、トレースすることである。このトレースは侵襲的ではなく、コアが作動し続ける際にその後のステートを記録する。トレースは図1の埋め込み型トレースマイクロセル(ETM)22、26で作動する。ETMはトレースポートを有し、このトレースポートを介してトレース情報がイクスポートされ、この情報は外部トレースポートアナライザによって分析される。
本技術の実施例のプロセッサは2つの別個のドメインで作動する。上記実施例では、これらドメインは安全ドメインと非安全ドメインとを含む。しかしながら、モニタ機能の目的のために、当業者であれば、これらドメインは両者の間でデータをリークしてはならない2つのドメインとなり得ることが明らかとなろう。本技術の実施例は2つのドメイン間でのデータのリークを防止することに関係するものであり、従来システム全体にアクセスが認められていたデバッグおよびトレースのようなモニタ機能はドメイン間でデータがリークする潜在的なソースである。
安全および非安全ドメインまたはワールドの上記例では、安全データは非安全ワールドに利用できるものであってはならない。更に、安全ワールドにおいてデバッグが許可された場合、安全ワールド内のデータの一部を制限したり、隠したりすることが有利となり得る。図59における点線はデータのアクセスをセグメント化し、異なるレベルの粒度を提供するために可能な方法のいくつかの例を示す。図59において、モニタモードがブロック500で示されており、すべてのモードのうちで最も安全なモードであり、安全ワールドと非安全ワールドとの切り換えを制御するものである。モニタモード500の下方にはスーパーバイザーモードが設けられており、このスーパーバイザーモードは安全スーパーバイザーモード510と非安全スーパーバイザーモード520とを含む。次に、アプリケーション522および524を有する非安全ユーザーモードおよびアプリケーション512、514および516を有する安全ユーザーモードがある。モニタモード(デバッグおよびトレース)は(点線501の左側までの)非安全モードをモニタするためにしか制御できない。これとは異なり、非安全ドメインまたはワールドおよび安全ユーザーモードはモニタすることが認められる(501の左および502の下方の501の右)。別の実施例では、非安全ワールドおよび安全ユーザードメインで作動する所定のアプリケーションが認められる。この場合、点線503による更なるセグメント化が行われる。かかる分割は異なるアプリケーションを作動させる可能性のある異なるユーザー間で安全データがリークすることを防止することを助ける。一部の制御されたケースでは、システム全体のモニタが認められる。必要な粒度によりコアの次の部分はモニタ機能中にアクセスを制御する必要がある。
デバッグイベントでセットできるレジスタは4つある。すなわち命令フォールトステータスレジスタ(IFSR)、データフォールトステータスレジスタ(DFSR)、フォールトアドレスレジスタ(FAR)および命令フォールトアドレスレジスタ(IFAR)である。安全ワールドから非安全ワールドに移る際に、一部の実施例ではデータのリークを防止するためにこれらレジスタをフラッシングしなければならない。
PCサンプラーレジスタ:デバッグTAPはスキャンチェーン7を通してPCにアクセスできる。安全ワールドでデバッギング中に、安全ワールドで選択されたデバッグ粒度に応じてその値をマスクできる。コアが安全ワールドで作動している間、非安全ワールドまたは非安全ワールド+安全ユーザーアプリケーションがPCのどの値も入手できないことが重要である。
TLBエントリー:CP15を使用することによりマイクロTLBのエントリーを読み出し、メインTLBエントリーを読み出し、かつ書き込むことができる。メインTLBおよびマイクロTLBへのロードおよびマッチングを制御することもできる。特に安全スレッドが知っているデバッグがMMU/MPUのアシスタンスを必要とする場合、この種の作動を厳密に制御しなければならない。
性能モニタ制御レジスタ:性能制御レジスタはキャッシュの不一致、マイクロTLBの不一致、外部メモリのリクエスト、実行された分布命令などに関する情報を与える。デバッグステートであっても、非安全ワールドはこのデータにアクセスすべきではない。安全ワールドでデバッグがディスエーブルされた場合でも、カウンターは安全ワールドで作動できなければならない。
キャッシュシステムにおけるデバッギング:キャッシュ化されたシステムではデバッグは非侵襲的にしなければならない。キャッシュと外部メモリとの間のコヒーレンスを維持することが重要である。キャッシュがCP15を使って無効にでき、キャッシュはすべての領域で強制的に書き込みスルーとすることができる。いずれのケースにおいても、デバッグにおけるキャッシュの挙動の変更を認めることはセキュリティに対して弱くなり、このことは制御されるべきである。
エンディアンネス:デバッグにアクセスできる非安全ワールドまたは安全ユーザーアプリケーションは、エンディアンネスの変更を認めるべきではない。エンディアンネスを変えることによって安全カーネルが誤作動する可能性があり、粒度に従ってデバッグにおいてエンディアンネスのアクセスを禁止する。
モニタ機能の開始時にはコアの一部にたいするモニタ機能のアクセスを制御できるデバッグおよびトレースは種々の方法で初期化される。本技術の実施例は、所定の条件での初期化を認めるだけで、コアの所定の安全部分に対するモニタ機能のアクセスを制御する。
本技術の実施例は次の粒度、すなわち
侵襲的、かつ観測可能な(トレース)デバッグを別々に制御することにより;
安全ワールドのみ、または安全ワールド全体においてデバッグが安全ユーザーモードに入ることを認めることにより;
安全ユーザーモードにおけるデバッグだけを認め、更にスレッドID(アプリケーション実行中)を考慮することにより、モニタ機能に入ることを制限せんとするものである。
モニタ機能の開始を制御するには、機能をどのように開始できるかを知ることが重要である。図60はモニタ機能を開始する可能な方法、開始されるモニタ機能のタイプおよびかかる開始命令をプログラムできる方法を示す表である。
一般に、ソフトウェアまたはハードウェアにより、例えばJTAGコントローラにより、これらモニタ命令に入ることができる。モニタ機能の開始を制御するには制御値を使用する。これらの値は条件に依存するイネーブルビットを含むので、特定の条件が存在する場合、イネーブルビットをセットする場合にしかモニタのスタートが認められない。これらビットはICE350(図67参照)内にある安全レジスタCP14、デバッグおよびステータス制御レジスタ(DSCR)に記憶される。
好ましい実施例では、侵襲的かつ観察可能なデバッグをイネーブル/ディスエーブルする4つのビットがある。これらビットは安全デバッグイネーブルビットと、安全トレースイネーブルビットと、安全ユーザーモードイネーブルビットと、安全スレッドアウェアイネーブルビットとを含む。これらの制御値はモニタ機能のためのある程度の制御可能な粒度を提供するように働き、特定のドメインからのデータのリークを停止させることに役立つことができる。図61はこれらビットの概要およびこれらビットにどのようにアクセスできるかを示している。
これら制御ビットは安全ドメイン内のレジスタに記憶され、このレジスタへのアクセスは3つの可能な例に制限される。ARMコプロセッサのMRC/MCR命令を介してソフトウェアアクセスが行われ、これら命令には安全スーパーバイザーモードしか認められない。これとは異なり、認証コードを使用することにより、他のどのモードからもソフトウェアアクセスを行うことができる。更に別の例は、ハードウェアアクセスに関係するものであり、JTAG上の入力ポートを介して書き込まれる命令を呼び出す。モニタ機能の利用可能性に関係する制御値を入力するのに使用される他に、この入力ポートはプロセッサの他の機能に関係する制御値を入力するのにも使用できる。
スキャンチェーンおよびJTAGに関する更なる細部を下記に示す。
レジスタロジックセル
どの集積回路(IC)も2つの種類のロジックから成る。
・AND、OR、INVゲートのような、組み合わせロジックセル。かかるゲートまたはかかるゲートの組み合わせは1つまたは数個の入力信号に従ってブール式を計算するのに使用される。
・LATCH、FLIP−FLOPのようなレジスタロジックセル。かかるセルは任意の信号値を記憶するのに使用される。図62は正のエッジでトリガーされるFLIP−FLOPの図を示す。
クロック信号(CK)で正のエッジが生じると、出力(Q)は入力(D)の値を受信する。そうでない場合、出力(Q)はメモリにその値を保持する。
スキャンチェーンセル
テストまたはデバッグ目的のためには、レジスタロジックセルの機能アクセスをバイパスさせ、レジスタロジックセルのコンテンツに直接アクセスすることが必要である。従って、図63に示されるように、レジスタセルはスキャンチェーンセル内に集積化されている。
機能モードでは、SE(スキャンイネーブル)はクリアであり、レジスタセルは単一レジスタセルとして働く。テストまたはデバッグモードでは、SEがセットされ、D入力の代わりにSI入力(スキャンIn)から入力データがくることができる。
スキャンチェーン
図64に示されるように、スキャンチェーンにはすべてのスキャンチェーンセルがチェーン状となっている。
機能モードではSEはクリアされ、通常どおりすべてのレジスタセルにアクセスでき、レジスタセルは回路の他のロジックと相互作用できる。テストまたはデバッグモードではSEはセットされ、スキャンチェーン内ですべてのレジスタは互いにチェーン状となっている。第1スキャンチェーンセルからデータがくることができ、各クロックサイクルのカデンスにおいて、他のスキャンチェーンセルを通してデータをシフトできる。レジスタのコンテンツを見るためにデータをシフトすることもできる。
TAPコントローラ
いくつかのスキャンチェーンを取り扱うのにTAPコントローラが使用される。このTAPコントローラは特定のスキャンチェーンを選択でき、「スキャンイン」および「スキャンアウト」信号を特定のスキャンチェーンに接続する。次に、データをチェーンへスキャン入力し、シフトし、スキャンアウトすることができる。TAPコントローラはJTAGオートインターフェースにより外部から制御できる。図65はTAPコントローラを略図で示す。
JTAG選択的ディスエーブルチェーンセル
セキュリティの理由から、デバッグまたはテストモードでの一部のレジスタに対してスキャンチェーンによりアクセスできない場合がある。JADI(JTAGアクセスディスエーブル)と称される新しい入力信号は、集積回路におけるスキャンチェーンの構造を変えることなく、全スキャンチェーンから1つのスキャンチェーンセルをダイナミックまたはスタティックに除くことを認めることができる。図66AおよびBはこの入力信号を略図で示す。
JADIが非アクティブ(JADI=0)である場合、機能モードまたはテストもしくはデバッグモードに拘わらず、スキャンチェーンは通常どおり作動する。JADIがアクティブ(JADI=1)であり、テストまたはデバッグモードとなっている場合、スキャンチェーン構造から(設計者によって選択した)あるスキャンチェーンセルを除くことができる。同じ数のスキャンチェーンセルを維持するためにJTAG選択的ディスエーブルスキャンチェーンセルは1つのバイパスレジスタを使用する。この場合、スキャンアウト(SO)およびスキャンチェーンセル出力(Q)は異なっていることに留意されたい。
図67はJTAGの部品を含むプロセッサを略図で示す。通常の作動では、メモリセル550はコアと通信し、所定の状況ではレジスタCP14とも通信でき、制御値をリセットできる。このことは一般に、安全スーパーバイザーモードからしか認められない。
デバッグが開始されると、デバッグTAP580を介して命令が入力され、コアを制御するのはこれら命令である。デバッグ中のコアはステップバイステップモードで作動する。デバッグTAPは(JADIピンとして示されたJSDAENピン上のアクセス制御信号入力、図45におけるJTAG ACCESS DISABLE INPUTに応じて)コアを介しCPU14にアクセスし、この方法で制御値をリセットすることもできる。
デバッグTAP580を介したCP14レジスタへのアクセスはアクセス制御信号JSDAENによって制御される。この信号はアクセスするための順序に特に許可すべき書き込みアクセスするための順序にJSDAENをハイにセットしなければならないようになっている。プロセッサ全体が検証中のボードステージの間では、JSDAENがハイにセットされ、デバッグは全システムでイネーブルされる。システムが一旦チェックされると、JSDAENピンをアースに結ぶことができる。このことは、安全モードでデバッグをイネーブルする制御値へのアクセスはデバッグTAP580を介しては利用できないことを意味する。一般に製造モードのプロセッサはアースに接続されたJSDAENを有する。従って、制御値へのアクセスは命令メモリ550を介したソフトウェアルートを通してしか利用できない。このルートを介した安全スーパーバイザーモードまたは認証コードが与えられることを条件にする別のモードに制限される(図68参照)。
デフォルトによりデバッグ(侵襲的かつ観測可能−トレース)は、非安全ワールドでしか利用できないことに留意すべきである。これらデバッグを安全ワールドで利用できるようにするには、制御値イネーブルビットをセットしなければならない。
この利点は非安全ワールドにおいて作動させるためにユーザーによって常にデバッグを開始できるということである。従って、デバッグではユーザーには一般に安全ワールドへのアクセスは利用できないが、この安全ワールドへのアクセスは制限されており、安全ワールドは利用できるようになる前にボード段階で完全に検証済みであるので、多くのケースではこのことは問題にならない。従って、多くのケースでは安全ワールドのデバッグは不要となることが予想される。必要であれば、CP14を書き込むソフトウェアルートによりデバッグを開始できる。
図68はデバッグ初期化の制御を略図で示している。この図では、コア600の一部は記憶素子601(この素子は前に説明したようなCP15レジスタでよい)を含み、この阻止にはシステムが安全ワールド内にあるかないかを表示する安全ステータスビットSが記憶される。コア600はプロセッサが作動しているモード、例えばユーザーモードを表示するビットを含むレジスタ602と、コアでそのときに作動中のアプリケーションまたはスレッドを識別するコンテクスト識別子を提供するレジスタ603も含む。
ブレークポイントに達すると、レジスタ611上に記憶されているブレークポイントと、レジスタ612に記憶されているコアのアドレスとを比較するコンパレータ610は制御ロジック620に信号を送る。制御ロジック620は安全ステートS、モード602およびスレッド(コンテクスト識別子)603を見て、これと制御値およびレジスタCP14に記憶されている条件インジケータとを比較する。システムが安全ワールドで作動中でなければ、630にて「デバッグ進入」信号が出力される。しかしながら、システムが安全ワールドで作動中であれば、制御ロジック620はモード602を見る。ユーザーモードであればユーザーモードイネーブルビットおよびデバッグイネーブルビットがセットされているかをチェックする。そうであれば、スレッドアウェアビットが初期化されていないことを条件にデバッグが初期化される。上記の説明は制御値の階層的性質を示すものである。
図68には、安全スーパーバイザーモード(この実施例ではプロセッサは製造段階にあり、JSDAENはアースに接続されている)のみからどのようにレジスタCP14に記憶されている制御値を制御するのか、ということと共に、モニタ制御のスレッドアウェア部分も略図で示されている。安全ユーザーモードからは認証コードを使って安全スーパーバイザーモードに入ることができ、CP14内で制御値をセットできる。
デバッグがスレッドに対して可能であることをスレッドコンパレータ640が示していることを条件に、ブレークポイントに達したことをアドレスコンパレータ610が表示したときに、制御ロジック620は「デバッグ進入」信号を出力する。このことは、CP15でスレッドアウェア初期化ビットがセットされることを仮定している。ブレークポイントの後でスレッドアウェア初期化ビットがセットされた場合、アドレスおよびコンテクストが、ブレークポイントおよび許可されたスレッドインジケータで表示されたそれぞれと一致した場合にしか、デバッグまたはトレースに入ることはできない。モニタ機能の開始後はコンテクスト識別子がコンパレータ640によって、許可されたスレッドとして検出されている間にしか、診断データの捕捉は続かない。実行中のアプリケーションが許可されているアプリケーションでないことをコンテクスト識別子が示した場合、診断データの捕捉は抑制される。
好ましい実施例では、粒度内にはある階層が存在することに留意すべきである。実際には安全デバッグまたはトレースイネーブルビットは頂部にあり、次に安全ユーザーモードイネーブルビットが続き、最後に安全スレッドアウェアイネーブルビットが入る。これについては図69Aおよび69Bに示されている(以下参照)。
「デバッグおよびステータス制御」レジスタ(CP14)内に保持された制御値はドメイン、モードおよび実行中のスレッドに従って安全デバッグの粒度を制御する。この安全デバッグ粒度は安全スーパーバイザーモードの頂部にあり、(デバッグおよびステータス制御)レジスタCP14が一旦構成されると、この安全デバッグ粒度はコアを「デバッグ進入」ステートにするよう、対応するブレークポイント、ウォッチポイントをプログラムするための安全スーパーバイザーモードまでである。
図69Aは侵襲的デバッグのための安全デバッグの粒度の概要を示す。リセット時のデフォルト値はグレー色で表示されている。
観測可能なデバッグに関するデバッグ粒度に対しては同じである。図69Bはこの場合における安全デバッグ粒度の概要を示し、ここでもリセット時のデフォルト値はグレー色で表示されている。
侵襲的かつ観測可能なデバッグに対しては安全ユーザーモードデバッグイネーブルビットと安全スレッドアウェアデバッグイネーブルビットとを共通に使用することに留意されたい。
レジスタCP14にはスレッドアウェア初期化ビットが記憶され、このビットはアプリケーションによる粒度が必要であるかどうかを表示する。スレッドアウェアビットが初期化されている場合、アプリケーション識別子またはスレッド603がスレッドアウェア制御値内で表示されたものであるかどうかを制御ロジックが更にチェックする。そうである場合、デバッグが初期化される。ユーザーモードまたはデバッグイネーブルビットのいずれかがセットされていないか、またはスレッドアウェアビットがセットされており、実行中のアプリケーションがスレッドアウェア制御値で表示されたものではない場合、ブレークポイントは無視され、コアは行ってきたことを続行し、デバッグは初期化されない。
モニタ機能の初期化を制御するほかに、モニタ機能中の診断データの捕捉も同じ制御できる。これを行うために、コアは双方の制御値、すなわちレジスタCP14に記憶されたイネーブルビット、およびモニタ機能の実行中にこれらイネーブルビットが関係する条件を検討し続けなければならない。
図70は実行中のモニタ機能の粒度を略図で示す。この場合、領域Aは診断データを捕捉することが許可されている領域に関係し、領域Bは診断データを捕捉することができないことをCP14に記憶されている制御値が表示する領域に関係している。
従って、デバッグが作動中であり、プログラムが領域Aで作動中であるとき、デバッグ中に診断データがステップバイステップの状態で出力される。作動が領域Bに切り換わり、この領域で診断データの捕捉が認められていないときは、デバッグはステップバイステップの状態では進行せず、むしろ自律的に進行し、データは捕捉されない。このことは、プログラムの動作が領域Aに再び入り、この領域で診断データの捕捉が再びスタートし、デバッグがステップバイステップの状態で続行するまで続く。
上記実施例では、安全ドメインがイネーブルされない場合、SMI命令は常にオートミックイベントとして見られ、診断データの捕捉が抑制される。
更にスレッドアウェア初期化ビットがセットされる場合、アプリケーションに対する作動中のモニタ機能の粒度を生じる。
観測可能なデバッグまたはトレースに関し、これはETMによって行われ、デバッグとは完全に独立している。トレースがイネーブルされると、ETMは通常どおり作動し、ディスエーブルされる、ETMは安全ワールド内のトレースまたは選択された粒度によっては安全ワールドの一部を隠す。ETMの捕捉およびトレースがイネーブルされたかったときの安全ドメインにおける診断データの捕捉を防止する1つの方法は、SビットがハイのときにETMを止めることである。このことは、SビットとETMPWRDOWN信号とを組み合わせることによって行うことができるので、コアが安全ワールドに入ったときに最後の値にETM値を保持される。従って、ETMはSMI命令をトレースしなければならないので、コアが非安全ワールドにリターンするまでストールしなければならない。従って、ETMが非安全アクティビティを見るだけである。
次に、異なるモニタ機能の一部およびそれらの粒度の概要を示す。
ボードステージでの侵襲的デバッグ
JSDAENピンが接続されていないときのボードステージでは、ブートセッションをスタートさせる前のどの場所でも、デバッグをイネーブルする能力がある。同様に、安全スーパーバイザーモードにある場合、同様の権利を有する。
ホールトデバッグモードでデバッグを初期化する場合、すべてのレジスタにアクセス可能であり(非安全および安全レジスタバンク)、制御デバッグ専用ビットを除き、全メモリをダンプできる。
どのモードからも、かつどのドメインからも、デバッグホールトモードに入ることができる。ブレークポイントおよびウォッチポイントは安全メモリまたは非安全メモリでセットできる。デバッグステートではMCR命令を介してSビットを変えるだけで安全ワールドに入ることができる。
安全例外が生じたときにデバッグモードに入ることができるので、次の新しいビットと共にベクトルトラップレジスタを拡張する。
SMIベクトルトラッピングイネーブル
安全データアボートベクトルトラッピングイネーブル
安全プリフェッチアボートベクトルトラッピングイネーブル
安全無定義ベクトルトラッピングイネーブル
モニタデバッグモードにおいて、どこをデバッグしてもよいと許可した場合、非安全ワールドでSMIがコールされても、ステップバイステップのデバッグで安全ワールドに入ることができる。安全ドメインでブレークポイントが生じると、安全アボートハンドラーは安全レジスタバンクおよび安全メモリをダンプするように作動できる。
安全ワールドおよび非安全ワールドにおける2つのアボートハンドラーは、それらの情報をデバッガーアプリケーションに与え、(PCを制御する関連するデバッグでの)デバッガーウィンドーは安全ワールドおよび非安全ワールドの双方におけるレジスタのステートを示すことができる。
図71Aはコアがモニタデバッグモードに構成されており、安全ワールドでデバッグがイネーブルされたときに何が生じるかを示している。図71Bはコアがモニタデバッグモードに構成され、安全ワールドでデバッグがディスエーブルされたときに何が生じるかを示している。この後者のプロセスについては後述する。
製造ステージにおける侵襲的デバッグ
JSDAENが接続され、デバッグが非安全ワールドに制限されている製造ステージでは、安全スーパーバイザーが判断しないかぎり、図71Bに示されたテーブルは何が生じるかを示す。この場合、SMIは常に自律命令と見なすべきであるので、デバッグステートに入る前に安全機能は常に終了される。
デバッグホールトモードに入ることは次の制限を受ける。
非安全ワールドだけでは外部デバッグリクエストまたは内部デバッグリクエストが考慮される。安全ワールドにある間にEDBGRQ(外部デバッグリクエスト)がアサートされた場合、安全機能が一旦終了すれば、コアはデバッグホールトモードに入り、非安全ワールドでコアがリターンされる。
安全メモリにブレークポイントまたはウォッチポイントをプログラムすることは効力がなく、プログラムされたアドレスが一致したときにコアは停止される。
ベクトルトラップレジスタ(このレジスタの細部については下記に示す)は、非安全例外にしか関係しておらず、効力を生じる前のすべての拡張トラッピングイネーブルビットについて説明する。
一旦ホールトデバッグモードになると、次の制限が適用される。
安全デバッグがイネーブルされなければ、安全ワールドに入るのにSビットを変えることはできない。
デバッグが安全スーパーバイザーモードでしか許可されていない場合、モードビットを変えることはできない。
安全デバッグを制御する専用ビットを変えることはできない。
(システム速度アクセスが)SMIにロードされ、SMIが実行された場合、安全機能が完全に実行されたときにしか、コアはデバッグステートに再進入できない。
モニタデバッグモードでは、安全ワールドでモニタを行うことはできないので、安全アボートハンドラーはデバッグモニタプログラムをサポートしなくてもよい。非安全ワールドでは、ステップバイステップが可能であるが、SMIが実行されているときはいつも安全機能が完全に実行される。換言すれば、XWSIの「ステップオーバー」しか認められないが、他のすべての命令では、「ステップイン」および「ステップオーバー」が可能である。従って、XWSIは自律命令と見なされる。
一旦安全デバッグがディスエーブルされた場合、次の制限を有する。
モニタモードに入る前に:
非安全ワールドに限りブレークポイントおよびウォッチポイントを考慮する。ビットSがセットされれば、ブレークポイント/ウォッチポイントをバイパスする。ブレークポイント/ウォッチポイントは安全メモリでは効果がないので、セキュリティの問題がないMCR/MRC(CP14)によってウォッチポイントユニットにもアクセスできることに留意されたい。
BKPTは通常、ブレークポイントがセットされた命令を置き換えるのに使用される。このことは非安全モードに限り可能なBKPT命令により、メモリにこの命令をオーバーライトすると仮定している。
ベクトルトラップレジスタは非安全例外にしか関係していない。前に説明したすべての拡張トラップイネーブルビットは効果がない。プロセッサが強制的にアンリカバブルステートにされるのを防止するには、データアボートおよびプリフェッチアボートイネーブルビットをディスエーブルすべきである。
JTAGを介し、ホールトモードに関して同じ制限を有する(Sビットは変更できないなど)。
一旦モニタモード(非安全アボートモード)となると、
非安全アボートハンドラーは非安全ワールドをダンプでき、安全バンク状レジスタだけでなく安全メモリでビジビリティを有しない。
アトミックSMI命令により安全機能を実行する。
安全ワールドへの進入を強制するためにSビットを変更できない。
安全スーパーバイザーモードでしかデバッグが許可されていない場合、モードビットを変更できない。
外部デバッグリクエスト(EDBGRQ)が生じた場合、次のことに留意されたい。
非安全ワールドではコアはそのときの命令を終了し、即座に(ホールトモードで)デバッグステートに入る。
安全ワールドではコアはそのときの機能を終了し、コアが非安全ワールドに戻ったときにデバッグステートに入る。
新しいデバッグ条件とは、コアハードウェアにおけるある変更を意味する。Sビットは注意深く制御しなければならず、セキュリティ上の理由からスキャンチェーンに安全ビットを挿入してはならない。
要約すれば、デバッグにおいて、デバッグが安全スーパーバイザーモードでイネーブルされた場合に限りモードビットを変更できる。このことはデバッグにアクセスするものが安全ドメインにおいてシステムを変更することによって(TBLエントリーなどを変えることにより)すべての安全ワールドへアクセスすることを防止するものである。このように、各スレッドは自己のコードしかデバッグできない。安全カーネルはセーフ状態を維持すべきである。従って、コアが非安全ワールドで作動している場合にデバッグに入る際にモードビットは、前と同じように変更できるだけである。
本技術の実施例は新しいベクトルトラップレジスタを使用するものである。このレジスタ内のビットの1つはハイにセットされており、対応するベクトルがトリガーした場合、モニタはブレークポイントがあたかも対応する例外ベクトルからの命令フェッチでセットされたかのようにデバッグステートに入る。これらビットの挙動はデバッグ制御レジスタ内の「安全ワールド内のデバッグイネーブル」ビットの値に従って異なることがある。
この新しいベクトルトラップレジスタは次のビット:すなわちD_s_アボート、P_S_アボート、S_undef、SMI、FIQ、IRQ、Unaligned、D_アボート、P_アボート、SWIおよびUndefを含む。
・D_s_アボートビットはデバッグが安全ワールドでイネーブルされたとき、およびデバッグがホールトデバッグモードで構成されたときに限りセットすべきである。モニタデバッグモードではこのビットをセットしてはならない。安全ワールドにおけるデバッグがディスエーブルされると、このビットはどんな値であっても効果がない。
・P_s_アボートビットはD_s_アボートビットと同じである。
・S_undefビットはデバッグが安全ワールドでイネーブルされているときに限りセットすべきである。安全ワールドにおけるデバッグがディスエーブルされている場合、このビットはどんな値であっても効果がない。
・SMIビットは安全ワールドにおいてデバッグがイネーブルされているときに限りセットすべきである。安全ワールドにおけるデバッグがディスエーブルされている場合、このビットはどんな値であっても効果がない。
・FIQ、IRQ、D_アボート、P_アボート、SWI、undefビットは非安全例外に対応するので、これらビットは安全ワールドにおけるデバッグがディスエーブルされても有効である。モニタモードではD_アボートおよびP_アボートはハイにアサートすべきでない。
・リセットビット:リセットが生じたときに安全ワールドが入るので、このビットは安全ワールドにおけるデバッグがイネーブルされたときにしか有効でなく、そうでない場合は効果がない。
以上で本発明の特定の実施例について説明したが、本発明はこれら実施例だけに限定されるものでなく、本発明の範囲内で多数の変形および追加を行うことができることが明らかとなろう。例えば本発明の範囲から逸脱することなく、次の従属請求項の特徴事項と独立請求項の特徴事項とを種々組み合わせできる。
本発明の好ましい実施例に係わるデータ処理装置を略図で示すブロック図である。 非安全ドメインおよび安全ドメインで作動する異なるプログラムを略図で示す。 異なるセキュリティドメインに関連した処理モードを略図で示す。 処理モードとセキュリティドメインとの間の異なる関係を略図で示す。 処理モードとセキュリティドメインとの間の異なる関係を略図で示す。 処理モードに応じたプロセッサのレジスタバンクのプログラマーのモデルを示す。 安全ドメインおよび非安全ドメインのために別個のレジスタバンクを提供する一例を示す。 別個のモニタモードを介して行われるセキュリティドメイン間の切り換えと共に、複数の処理モードを略図で示す。 モード切り換えソフトウェアインターラプト命令を使用するセキュリティドメインの切り換えのためのシナリオを略図で示す。 非安全インターラプトリクエストおよび安全インターラプトリクエストをどのようにシステムで処理できるかの一例を略図で示す。 図10に従った非安全インターラプトリクエスト処理の一例および安全インターラプトリクエスト処理の一例を略図で示す。 図10に従った非安全インターラプトリクエスト処理の一例および安全インターラプトリクエスト処理の一例を略図で示す。 図10に示された方式と比較された非安全インターラプトリクエスト信号および安全インターラプトリクエスト信号を取り扱うための別の方式を示す。 図12に示された方式に従った非安全インターラプトリクエストおよび安全インターラプトリクエストを取り扱うためのシナリオ例を示す。 図12に示された方式に従った非安全インターラプトリクエストおよび安全インターラプトリクエストを取り扱うためのシナリオ例を示す。 ベクトルインターラプトテーブルの一例である。 異なるセキュリティドメインに関連した多数のベクトルインターラプトテーブルを略図で示す。 例外制御レジスタを略図で示す。 セキュリティドメインの設定を変更するように処理ステータスレジスタを変更しようと試みる命令がどのように別個のモード変更例外を生じさせ、次にこの例外がモニタモードへの進入およびモニタプログラムの実行をトリガーするかを示すフローチャートである。 モニタモードにおけるタスクがインターラプトされる複数のモードで作動するプロセッサの制御スレッドを略図で示す。 複数のモードで作動中のプロセッサの制御の異なるスレッドを略図で示す。 インターラプトがモニタモードでイネーブルされる複数のモードで作動中のプロセッサの制御の別のスレッドを略図で示す。 別の実施例に従って安全ドメインと非安全ドメインとを切り換えるための異なる処理モードおよびシナリオの図を示す。 別の実施例に従って安全ドメインと非安全ドメインとを切り換えるための異なる処理モードおよびシナリオの図を示す。 別の実施例に従って安全ドメインと非安全ドメインとを切り換えるための異なる処理モードおよびシナリオの図を示す。 従来のARMコアに安全処理オプションを追加する原理を略図で示す。 安全および非安全ドメイン、およびリセットを有するプロセッサを略図で示す。 ソフトウェア疑似インターラプトを使用する、サスペンドされたオペレーティングシステムへ処理リクエストを送ることを略図で示す。 ソフトウェア疑似インターラプトを使用する、サスペンドされたオペレーティングシステムへ処理リクエストを送る別の例を略図で示す。 図26および27で発生されたタイプのソフトウェア疑似インターラプトの受信時に実行される処理を略図で示すフローチャートである。 非安全オペレーティングシステムによって行われる、可能なタスクの切り換えをトラックするために、安全オペレーティングシステムによるタスクのフォローを略図で示す。 非安全オペレーティングシステムによって行われる、可能なタスクの切り換えをトラックするために、安全オペレーティングシステムによるタスクのフォローを略図で示す。 図29および30の安全オペレーティングシステムでコールを受信した際に実行される処理を略図で示すフローチャートである。 異なるインターラプトを異なるオペレーティングシステムによって取り扱うことができる多数のオペレーティングシステムを有するシステムで生じ得る、インターラプトプライオリティの反転の問題を示す略図である。 図32に示された問題を防止するためのスタブインターラプトハンドラーの使用を示す略図である。 異なるオペレーティングシステムを使ってサービスされるインターラプトにより、インターラプトできるか否かに応じて、異なるタイプおよびプライオリティのインターラプトをどのように取り扱うことができるかを略図で示す。 プロセッサがモニタモードで作動しているときに、モニタモード固有のプロセッサコンフィギュレーションデータにより、どのようにプロセッサコンフィギュレーションデータが無効にされるかを示す。 本発明の一実施例に従って安全ドメインと非安全ドメインとを切り換える際に、プロセッサコンフィギュレーションデータをどのように切り換えるかを示すフローチャートである。 メモリへのアクセスを制御するために本発明の一実施例で使用されるメモリ管理ロジックを示す図である。 メモリへのアクセスを制御するために使用される本発明の第2実施例のメモリ管理ロジックを示すブロック図である。 仮想アドレスを指定するメモリアクセスリクエストを処理するためのメモリ管理ロジック内で、本発明の実施例で実行されるプロセスを示すフローチャートである。 物理アドレスを指定するメモリアクセスリクエストを処理するためのメモリ管理ロジック内で、本発明の実施例で実行されるプロセスを示すフローチャートである。 メモリアクセスリクエストを発生するデバイスが非安全モードで作動中に、安全メモリ内の物理アドレスへのアクセスを、好ましい実施例のパーティションチェッカーがどのように防止するかを略図で示す。 本発明の好ましい実施例における非安全ページテーブルおよび安全ページテーブルの双方の使用を示す図である。 好ましい実施例のメイン変換ルックアサイドバッファ(TLB)内で使用されるフラグの2つのフォームを示す図である。 本発明の一実施例におけるブートステージ後にメモリをどのように分割できるかを示す。 本発明の一実施例に係わるブート分割の実行後の、メモリ管理ユニットによる非安全メモリのマッピングを示す。 本発明の一実施例に従って安全アプリケーションが非安全アプリケーションとメモリを共用できるように、どのようにメモリの一部の権利を変更できるかを示す。 本発明の一実施例に係わるデータ処理装置の外部バスにデバイスをどのように接続できるかを示す。 本発明の第2実施例に従ってデバイスをどのように外部バスに結合できるかを示すブロック図である。 ページテーブルの単一のセットを使用する実施例における物理メモリの構造を示す。 中間アドレスを介して仮想−物理アドレス変換を実行するのに2つのMMUを使用する構造を示す。 中間アドレスを介して仮想−物理アドレス変換を実行するのに2つのMMUを使用する別の構造を示す。 安全ドメインおよび非安全ドメインの双方のための物理アドレス空間と中間アドレス空間との間の対応を例で示す。 第2MMUに関連したページテーブルの操作により、安全ドメインと非安全ドメインとの間のメモリ領域のスワッピングを示す。 仮想−物理アドレス変換を決定するためにメインTLBにおける不一致が例外を呼び出す、単一のMMUを使用した実行例を示す一実施例である。 図53のMMUのメインTLB内での不一致の発生時に発生される例外に作用するよう、プロセッサコアによって実行されるプロセスを示すフローチャートである。 個々のキャッシュラインに記憶されるデータが安全データであるか、または非安全であるかのいずれかに関する情報をキャッシュに提供する一実施例の、データ処理装置内に設けられた部品を示すブロック図である。 図55に示されたメモリ管理ユニットの構造を示す。 非安全メモリアクセスリクエストを処理するための、図55のデータ処理装置内で実行される処理を示すフローチャートである。 安全メモリアクセスリクエストを処理するための、図55のデータ処理装置内で実行される処理を示すフローチャートである。 プロセッサで作動するアプリケーションおよび異なるモードに対するモニタ機能の可能な粒度を略図で示す。 異なるモニタ機能を開始する可能な方法を示す。 異なるモニタ機能の利用可能性を制御するための制御値の表を示す。 正のエッジでトリガーされるフリップフロップの図を示す。 スキャンチェーンセルを示す。 スキャンチェーンにおける複数のスキャンチェーンセルを示す。 デバッグTAPコントローラを示す。 JADI入力を有するデバッグTAPコントローラを示す。 バイパスレジスタを有するスキャンチェーンセルを示す。 コア、スキャンチェーンおよびデバッグステータスおよび制御レジスタを含むプロセッサを略図で示す。 デバッグまたはトレースの初期化を制御する要素を略図で示す。 デバッグの粒度の概要を示す。 デバッグの粒度の概要を示す。 作動中のデバッグの粒度を略図で示す。 デバッグが安全ワールドでイネーブルされたときのモニタデバッグを示す。 デバッグが安全ワールドでイネーブルされていないときのモニタデバッグを示す。

Claims (48)

  1. 安全ドメインと、非安全ドメインとを有するデータ処理装置であって、該データ処理装置のデバイスが前記安全ドメインにおいて非安全ドメインではアクセスできない安全データにアクセスする前記データ処理装置において、
    デバイスバスと、
    前記デバイスバスに結合されており、各々が前記安全ドメインまたは前記非安全ドメインに関係するメモリアクセスリクエストを発生するようになっている複数のデバイスであって、該複数のデバイスの少なくとも1つが非安全ドメイン内のモードである少なくとも1つの非安全モードと、安全ドメインにおけるモードである少なくとも1つの安全モードとを備えた複数のモードで作動できる、前記複数のデバイスと、
    前記デバイスバスに結合されており、前記複数のデバイスが必要とするデータを記憶するようになっているメモリとを備え、該メモリが安全データを記憶するための安全メモリと、非安全データを記憶するための非安全メモリとを備え、前記メモリ内のあるアイテムのデータへのアクセスが必要とされたときに、前記複数のデバイスがメモリアクセスリクエストをデバイスバスに発生するようになっており、
    前記複数のデバイスのいずれかが発生したメモリアクセスリクエストが前記非安全ドメインに関するときはいつも、前記メモリアクセスリクエストが前記安全メモリへのアクセスを求めているかどうかを検出するようになっており、かかる検出時に前記メモリアクセスリクエストが指定するアクセスを防止するようになっている、前記デバイスバスに結合されたパーティションチェックロジックとを更に備えたデータ処理装置。
  2. 前記複数のデバイスの前記少なくとも1つに対し、前記複数のモードが前記安全ドメインと前記非安全ドメインにおいて存在する、請求項1記載のデータ処理装置。
  3. 前記安全ドメインにおける所定の安全モードで作動するときに、前記パーティションチェックロジックを前記複数のデバイスの1つによって管理する、請求項1または2記載のデータ処理装置。
  4. 前記メモリアクセスリクエストが前記安全ドメインに関するものであるか、または前記非安全ドメインに関するものであるかを識別するドメイン信号を、前記複数のデバイスによって発生される前記メモリアクセスリクエストは含み、前記ドメイン信号は前記メモリアクセスリクエストのアクセス対象へのアクセスを進めてよいかを判定するために前記パーティションチェックロジックで使われる、請求項1〜3のいずれかに記載のデータ処理装置。
  5. 前記複数のデバイスは所定のピン(pin)を有し、該所定のピンを介して前記デバイスバスに前記ドメイン信号を出力する、請求項4記載のデータ処理装置。
  6. 前記デバイスバスに発生されたメモリアクセスリクエストの間を仲裁するように、前記デバイスバスに結合されたアービッタ内に前記パーティションチェックロジックが設けられている、請求項1〜5のいずれかに記載のデータ処理装置。
  7. 前記非安全ドメインにおいて、前記複数のデバイスの前記少なくとも1つが非安全オペレーティングシステムの制御によって作動でき、
    前記安全ドメインにおいて、前記複数のデバイスの前記少なくとも1つが安全オペレーティングシステムの制御によって作動できる、請求項1〜6のいずれかに記載のデータ処理装置。
  8. 前記複数のデバイスの前記少なくとも1つがプロセッサを内蔵するチップであり、前記プロセッサがメモリアクセスリクエストを発生するときに1つ以上の所定のアクセス制御機能を奏し、前記デバイスバスへのメモリアクセスリクエストの発生を制御するように作動できるメモリ管理ユニットを前記チップが更に含む、請求項1〜7のいずれかに記載のデータ処理装置。
  9. 前記チップが更に、
    システムバスを介してプロセッサに結合された別のメモリを備え、該別のメモリがプロセッサの必要とするデータを記憶するようになっており、該別のメモリが安全データを記憶するための別の安全メモリと、非安全データを記憶するための別の非安全メモリとを備え、
    前記非安全ドメインにおいて、非安全モードで作動中の前記プロセッサによって前記メモリアクセスリクエストが発生されるときはいつも、前記メモリアクセスリクエストが前記安全メモリまたは別の安全メモリのいずれにアクセスしようとしているかを検出するように作動し、かかる検出がなされたときに前記メモリアクセスリクエストが指定するアクセスを防止するように作動する、前記システムバスに結合された別のパーティションチェックロジックを前記チップが含む、請求項8記載のデータ処理装置。
  10. 前記プロセッサが前記非安全ドメイン内のモードである少なくとも1つの非安全モードと、前記安全ドメインにおけるモードである少なくとも1つの安全モードとを含む複数のモードで作動でき、前記少なくとも1つの非安全モードにおいて、前記プロセッサが非安全オペレーティングシステムの制御によって作動でき、前記少なくとも1つの安全モードでは前記プロセッサが安全オペレーティングシステムの制御によって作動でき、
    前記別のパーティションチェックロジックが前記安全オペレーティングシステムによって管理される、請求項9記載のデータ処理装置。
  11. 前記プロセッサが少なくとも1つの非安全モードで作動するときに、前記メモリアクセスリクエストが仮想アドレスを指定し、前記メモリ管理ユニットが前記非安全オペレーティングシステムによって制御され、前記メモリ管理ユニットが実施する前記所定のアクセス制御機能のうちの1つが前記仮想アドレスから物理アドレスへの変換を含み、前記メモリ管理ユニットが発生すべき前記物理アドレスが前記安全メモリ内にある場合に、前記別のパーティションチェックロジックが前記メモリアクセスリクエストの指定するアクセスを防止するようになっている、請求項10記載のデータ処理装置。
  12. 前記プロセッサが少なくとも1つの安全モードの1つで作動するときに、前記メモリアクセスリクエストが仮想アドレスを指定し、前記メモリ管理ユニットが前記安全オペレーティングシステムによって制御され、前記メモリ管理ユニットが実施する前記所定のアクセス制御機能のうちの1つが、前記仮想アドレスから物理アドレスへの変換を含み、前記別のパーティションチェックロジックが少なくとも1つの安全モードでは使用されない、請求項10または11記載のデータ処理装置。
  13. 前記プロセッサのすべての作動モードに対し、前記メモリアクセスリクエストが仮想アドレスを指定し、前記別のパーティションチェックロジックが前記メモリ管理ユニット内に設けられ、前記プロセッサが前記少なくとも1つの非安全モードで作動するときはいつも、前記別のパーティションチェックロジックが作動可能である、請求項12記載のデータ処理装置。
  14. 前記別のパーティションチェックロジックが内部に設けられたメモリ保護ユニットを更に備え、前記メモリ保護ユニットが前記安全オペレーティングシステムによって管理されており、前記プロセッサが特定の安全モードで作動するときに、前記メモリアクセスリクエストがメモリロケーションに対する物理アドレスを指定し、前記メモリ管理ユニットが使用されず、前記物理アドレスが指定するメモリロケーションが前記特定の安全モードでアクセスできるかどうかを証明するために前記メモリ保護ユニットが少なくともメモリアクセス許可処理を実行するようになっている、請求項11または12記載のデータ処理装置。
  15. 前記メモリが少なくとも1つのテーブルを含み、該少なくとも1つのテーブルが、多数のメモリ領域の各々毎に、関連するデスクリプタを含み、前記メモリ管理ユニットが、前記メモリアクセスリクエストに対する所定のアクセス制御機能を実行するために前記メモリ管理ユニットが使用する、前記デスクリプタから誘導されたアクセス制御情報を記憶するための内部記憶ユニットを備え、前記プロセッサが前記少なくとも1つの非安全モードで作動するときに前記安全メモリへのアクセスを可能にするアクセス制御情報を前記内部記憶ユニットが記憶しないように、前記別のパーティションチェックロジックが作動するようになっている、請求項10〜14のいずれかに記載のデータ処理装置。
  16. 前記メモリアクセスリクエストが仮想アドレスを指定し、前記所定のアクセス制御機能のうちの1つが前記仮想アドレスから物理アドレスへの変換を含み、各デスクリプタが対応するメモリ領域に対する少なくとも1つの仮想アドレス部分およびそれに対応する物理アドレス部分を含み、前記プロセッサが前記少なくとも1つの非安全モードで作動するときに、前記仮想アドレスに対して発生される物理アドレスが前記安全メモリ内にある場合に、前記内部記憶ユニットが前記物理アドレス部分をアクセス制御情報として記憶しないように、前記別のパーティションチェックロジックが作動できる、請求項15記載のデータ処理装置。
  17. 前記内部記憶ユニットが少なくとも1つのテーブルから検索された対応するデスクリプタから得られた対応する物理アドレス部分を多数の仮想アドレス部分に対して記憶するようになっている変換ルックアサイドバッファ(TLB)となっている、請求項16記載のデータ処理装置。
  18. 前記TLBがマイクロTLBであり、前記内部記憶ユニットが前記メモリ管理ユニットにより前記少なくとも1つのテーブルから検索されたデスクリプタを記憶するためのメインTLBを更に備え、前記メモリアクセスリクエストに対する所定のアクセス制御機能を実行するための前記メモリ管理ユニットによるそのアクセス制御情報の使用前に、前記メインTLBからマイクロTLBへアクセス制御情報が転送され、前記プロセッサが前記少なくとも1つの非安全モードで作動しているときに、前記別のパーティションチェックロジックが前記メインTLBから前記安全メモリへのアクセスを許可するマイクロTLBへのアクセス制御情報の転送を防止するようになっている、請求項17記載のデータ処理装置。
  19. 前記非安全オペレーティングが発生したデスクリプタを含み、前記プロセッサが前記少なくとも1つの非安全モードで作動しているときに使用するための非安全テーブルを前記少なくとも1つのテーブルが含み、前記非安全テーブル内のデスクリプタが前記安全メモリの一部を少なくとも部分的に内蔵するメモリ領域に関連する場合に、前記プロセッサが非安全モードで作動しているときに、前記仮想アドレスに対して発生される物理アドレスが安全メモリ内にある場合に、前記デスクリプタにより指定される物理アドレス部分をアクセス制御情報として前記内部記憶ユニットが記憶することを前記別のパーティションチェックロジックが防止するように作動できる、請求項16〜18のいずれかに記載のデータ処理装置。
  20. 前記少なくとも1つのテーブルが前記安全オペレーティングシステムによって発生されたデスクリプタを含む安全メモリ内の安全テーブルを更に備え、そのデスクリプタが前記非安全テーブルからのものであるか、または前記安全テーブルからのものであるかを識別するための、前記メインTLB内に記憶された各デスクリプタに関連するフラグを前記メインTLBが含む、請求項18に記載する場合の、請求項19記載のデータ処理装置。
  21. 前記プロセッサの作動モードが安全モードと非安全モードとの間で切り替わるときはいつも、前記マイクロTLBがフラッシングされ、前記安全モードにおいて、前記関連するフラグによって安全テーブルからのものである、と示された前記メインTLB内のデスクリプタからマイクロTLBへアクセス制御情報が転送されるだけであり、前記非安全モードにおいて、前記関連するフラグによって前記非安全転送されるからのものである、と示された前記メインTLB内のデスクリプタから前記マイクロTLBへアクセス制御情報が転送されるだけである、請求項20記載のデータ処理装置。
  22. 前記メモリが少なくとも1つのテーブルを含み、該少なくとも1つのテーブルが、多数のメモリ領域の各々毎に、関連するデスクリプタを含み、前記メモリ管理ユニットが、前記メモリアクセスリクエストに対する所定のアクセス制御機能を実行するために前記メモリ管理ユニットが使用する、前記デスクリプタから誘導されたアクセス制御情報を記憶するための内部記憶ユニットを備え、前記プロセッサが前記少なくとも1つの非安全モードで作動するときに前記安全メモリへのアクセスを可能にするアクセス制御情報を前記内部記憶ユニットが記憶しないように、前記別のパーティションチェックロジックが作動するようになっていて、前記少なくとも1つのテーブルが少なくとも1つのページテーブルを含む、請求項10〜21のいずれかに記載のデータ処理装置。
  23. 前記別のメモリが前記システムバスに接続された密に結合されたメモリを備え、該密に結合されたメモリに対する物理アドレスレンジが制御レジスタ内で定義され、特権安全モードで作動しているときに限り、プロセッサによって前記密に結合されたメモリを制御できるか、または少なくとも1つの非安全モードで作動中にプロセッサによって制御可能かどうかを示すよう、特権安全モードで作動中のプロセッサによって制御フラグを設定できるようになっている、請求項10〜22のいずれかに記載のデータ処理装置。
  24. 前記少なくとも1つの非安全モードで作動中の前記プロセッサによって、前記密に結合されたメモリを制御できる場合に、安全データが前記密に結合されたメモリ内に記憶されないようになっている、請求項23記載のデータ処理装置。
  25. 安全ドメインと非安全ドメインとを有するデータ処理装置におけるメモリへのアクセスを制御する方法であって、該データ処理装置の複数のデバイスが前記安全ドメインでは非安全ドメインでアクセスできない安全データにアクセスするようになっており、前記データ処理装置が、
    デバイスバスと、
    該デバイスバスに結合され、各々が前記安全ドメインまたは前記非安全ドメインのいずれかに関係するメモリアクセスリクエストを発生するようになっている複数のデバイスであって、該複数のデバイスの少なくとも1つが非安全ドメイン内のモードである少なくとも1つの非安全モードと、安全ドメインにおけるモードである少なくとも1つの安全モードとを含む複数のモードで作動できる、前記複数のデバイスと、
    前記デバイスバスに結合されており、前記複数のデバイスが必要とするデータを記憶するようになっているメモリとを備え、
    該メモリが安全データを記憶するための安全メモリと、非安全データを記憶するための非安全メモリとを備えた、前記データ処理装置におけるメモリへのアクセスを制御する方法において、
    (i)前記メモリ内のデータへのアクセスが求められると、前記複数のデバイスのいずれかから前記デバイスバスにメモリアクセスリクエストを発生するステップと、
    (ii)前記いずれかのデバイスが発生した前記メモリアクセスリクエストが前記非安全ドメインに関するものであるときはいつも、そのメモリアクセスリクエストが安全メモリへのアクセスを求めているかどうかを検出するための、前記デバイスバスに結合されたパーティションチェックロジックを使用するステップと、
    (iii)かかる検出時に前記メモリアクセスリクエストが指定するアクセスを防止するステップと、を備えた、データ処理装置におけるメモリへのアクセスを制御する方法。
  26. 前記複数のデバイスの前記少なくとも1つに対し、前記複数のモードが前記安全ドメインと前記非安全ドメインにおいて存在する、請求項25記載の方法。
  27. 前記安全ドメインにおける所定の安全モードで作動するときに、前記パーティションチェックロジックが前記複数のデバイスの1つによって管理される、請求項25または26記載の方法。
  28. 前記複数のデバイスによって発生される各メモリアクセスリクエストは該メモリアクセスリクエストが前記安全ドメインに関するものであるか、または前記非安全ドメインに関するものであるかを識別するドメイン信号を含み、該ドメイン信号は前記メモリアクセスリクエストのアクセス対象へのアクセスを進めてよいかを判定するために前記パーティションチェックロジックで使われる、請求項25〜27のいずれかに記載の方法。
  29. 前記複数のデバイスは所定のピンを有し、該所定のピンを介して前記デバイスバスに前記ドメイン信号を出力する、請求項28記載の方法。
  30. 前記デバイスバスに発生されたメモリアクセスリクエストの間を仲裁するように、前記デバイスバスに結合されたアービッタ内に前記パーティションチェックロジックが設けられている、請求項25〜29のいずれかに記載の方法。
  31. 前記非安全ドメインにおいて、前記複数のデバイスの前記少なくとも1つが非安全オペレーティングシステムの制御によって作動でき、
    前記安全ドメインにおいて、前記複数のデバイスの前記少なくとも1つが安全オペレーティングシステムの制御によって作動できる、請求項25〜30のいずれかに記載の方法。
  32. 前記複数のデバイスの少なくとも1つがプロセッサを内蔵するチップであり、該チップが更にメモリ管理ユニットを備え、前記プロセッサがメモリアクセスリクエストを発生するときに、
    前記デバイスバスへのメモリアクセスリクエストの発生を制御するための1つ以上の所定のアクセス制御機能を実行するために、前記メモリ管理ユニットを使用するステップを備えた、請求項25〜31のいずれかに記載の方法。
  33. 前記チップがシステムバスを介して前記プロセッサに結合された別のメモリを更に備え、前記別のメモリがプロセッサが必要とするデータを記憶するようになっており、前記別のメモリが安全データを記憶するための別の安全メモリと、非安全データを記憶するための別の非安全メモリとを備え、前記チップが更に前記システムバスに結合された別のパーティションチェックロジックを備え、
    前記非安全ドメインにおいて非安全モードで作動している場合に、前記プロセッサによって前記メモリアクセスリクエストが発生されるときはいつも、前記メモリアクセスリクエストが前記安全メモリまたは前記別の安全メモリのいずれかへのアクセスを求めているかを検出するために前記別のパーティションチェックロジックを使用するステップと、
    かかる検出時に前記メモリアクセスリクエストが指定するアクセスを防止するステップとを備えた、請求項32記載の方法。
  34. 前記プロセッサが前記非安全ドメインにおけるモードである少なくとも1つの非安全モードと、前記安全ドメインにおけるモードである少なくとも1つの安全モードとを含む複数のモードで作動でき、前記少なくとも1つの非安全モードにおいて、前記プロセッサが非安全オペレーティングシステムの制御によって作動でき、前記少なくとも1つの安全モードでは前記プロセッサが安全オペレーティングシステムの制御によって作動でき、
    前記別のパーティションチェックロジックが前記安全オペレーティングシステムによって管理される、請求項33記載の方法。
  35. 前記プロセッサが前記少なくとも1つの非安全モードで作動しているときに、前記ステップ(i)で発生される前記メモリアクセスリクエストが仮想アドレスを指定し、1つ以上の所定のアクセス制御機能を実行するために前記メモリ管理ユニットを使用する前記ステップが、前記非安全オペレーティングシステムによって制御され、実行される前記所定のアクセス制御機能のうちの1つが前記仮想アドレスから物理アドレスへの変換を備え、前記メモリ管理ユニットによって発生される物理アドレスが安全メモリ内にある場合、前記メモリアクセスリクエストが指定するアクセスを前記別のパーティションチェックロジックが前記ステップ(iii)で防止するようになっている、請求項34記載の方法。
  36. 前記プロセッサが前記少なくとも1つの安全モードのうちの1つで作動しているときに、前記ステップ(i)で発生される前記メモリアクセスリクエストが仮想アドレスを指定し、1つ以上の所定のアクセス制御機能を実行するために前記メモリ管理ユニットを使用する前記ステップが、前記安全オペレーティングシステムによって制御され、実行される前記所定のアクセス制御機能のうちの1つが前記仮想アドレスから物理アドレスへの変換を備え、前記少なくとも1つの安全モードでは前記別のパーティションチェックロジックが使用されない、請求項34または35記載の方法。
  37. 前記プロセッサのすべての作動モードに対し、前記ステップ(i)で発生される前記メモリアクセスリクエストが仮想アドレスを指定し、前記別のパーティションチェックロジックが前記メモリ管理ユニット内に設けられ、前記プロセッサが前記少なくとも1つの非安全モードで作動するときはいつも、前記別のパーティションチェックロジックが作動可能である、請求項36記載の方法。
  38. 前記データ処理装置が、前記別のパーティションチェックロジックが内部に設けられたメモリ保護ユニットを更に備え、前記メモリ保護ユニットが前記安全オペレーティングシステムによって管理されており、前記プロセッサが特定の安全モードで作動するときに、前記ステップ(i)で発生される前記メモリアクセスリクエストがメモリロケーションに対する物理アドレスを指定し、1つ以上の所定のアクセス制御機能を実行するために前記メモリ管理ユニットを使用する前記ステップが使用されず、前記物理アドレスで指定されるメモリロケーションが前記特定の安全モードでアクセスできるかどうかを証明するために前記メモリ保護ユニットが少なくともメモリアクセス許可処理を実行するようになっている、請求項35または36記載の方法。
  39. 前記メモリが多数のメモリ領域の各々に対し、関連するデスクリプタを含む少なくとも1つのテーブルを備え、
    前記メモリアクセスリクエストに対し前記所定のアクセス制御機能を実行するために前記メモリ管理ユニットによって使用される、前記デスクリプタから誘導されたアクセス制御情報を記憶するための内部記憶ユニットをメモリ管理ユニット内に設けるステップと、
    前記プロセッサが少なくとも1つの非安全モードで作動するときに前記安全メモリへのアクセスを許可するアクセス制御情報を前記内部記憶ユニットが記憶しないようにするために前記別のパーティションチェックロジックを利用するステップとを備えた、請求項34〜38のいずれかに記載の方法。
  40. 前記ステップ(i)で発生される前記メモリアクセスリクエストが仮想アドレスを指定し、前記メモリ管理ユニットによって実行される前記所定のアクセス制御機能のうちの1つが前記仮想アドレスから物理アドレスへの変換を含み、各デスクリプタが対応するメモリ領域に対する少なくとも1つの仮想アドレス部分およびそれに対応する物理アドレス部分を含み、
    前記プロセッサが前記少なくとも1つの非安全モードで作動する場合に、前記仮想アドレスに対して発生される物理アドレスが前記安全メモリ内にあるときに、前記内部記憶ユニットが前記物理アドレス部分をアクセス制御情報として記憶しないように、前記別のパーティションチェックロジックを利用するステップを含む、請求項39記載の方法。
  41. 前記内部記憶ユニットが、前記少なくとも1つのテーブルから検索された対応するデスクリプタから得られた対応する物理アドレス部分を多数の仮想アドレス部分に対して記憶するようになっている変換ルックアサイドバッファ(TLB)となっている、請求項40記載の方法。
  42. 前記TLBが、マイクロTLBであり、前記内部記憶ユニットが前記メモリ管理ユニットにより前記少なくとも1つのテーブルから検索されたデスクリプタを記憶するためのメインTLBを更に備え、
    前記メモリアクセスリクエストに対する所定のアクセス制御機能を実行するための前記メモリ管理ユニットによるそのアクセス制御情報の使用前に、前記メインTLBからマイクロTLBへ前記アクセス制御情報を転送するステップと、
    前記プロセッサが前記少なくとも1つの非安全モードで作動しているときに、前記メインTLBから前記安全メモリへのアクセスを許可するマイクロTLBへのアクセス制御情報の転送を防止するように前記別のパーティションチェックロジックを利用するステップとを備えた、請求項41記載の方法。
  43. 前記非安全オペレーティングにより発生されたデスクリプタを含みかつ前記プロセッサが前記少なくとも1つの非安全モードで作動しているときに使用するための非安全テーブルを前記少なくとも1つのテーブルが含み、前記非安全テーブル内のデスクリプタが前記安全メモリの一部を少なくとも部分的に内蔵するメモリ領域に関連する場合に、
    前記プロセッサが非安全モードで作動しているときに、前記仮想アドレスに対して発生される物理アドレスが安全メモリ内にある場合に、前記デスクリプタにより指定される物理アドレス部分をアクセス制御情報として前記内部記憶ユニットが記憶することを防止するために前記別のパーティションチェックロジックを利用するステップを備えた、請求項40〜42のいずれかに記載の方法。
  44. 前記少なくとも1つのテーブルが前記安全オペレーティングシステムによって発生されたデスクリプタを含む安全メモリ内の安全テーブルを更に備え、前記メインTLBが前記メインTLB内に記憶された各デスクリプタに関連するフラグを含み、
    デスクリプタがメインTLB内に記憶されているときに、そのデスクリプタが前記非安全テーブルからのものであるか、または前記安全テーブルからのものであるかを識別するための前記関連するフラグを前記メインTLBが含む、請求項42に従属した場合に、請求項43記載の方法。
  45. 前記プロセッサの作動モードが安全モードと非安全モードとの間で切り替わるときはいつも、前記マイクロTLBをフラッシングするステップと、
    前記安全モードにおいて、前記関連するフラグによって安全テーブルからのものである、と示された前記メインTLB内のデスクリプタからマイクロTLBへアクセス制御情報を転送するだけのステップと、
    前記非安全モードにおいて、前記関連するフラグによって前記非安全テーブルからのものである、と示された前記メインTLB内のデスクリプタから前記マイクロTLBへアクセス制御情報を転送するだけのステップとを備えた、請求項44記載の方法。
  46. 前記メモリが多数のメモリ領域の各々に対し、関連するデスクリプタを含む少なくとも1つのテーブルを備え、
    前記メモリアクセスリクエストに対し前記所定のアクセス制御機能を実行するために前記メモリ管理ユニットによって使用される、前記デスクリプタから誘導されたアクセス制御情報を記憶するための内部記憶ユニットをメモリ管理ユニット内に設けるステップと、
    前記プロセッサが少なくとも1つの非安全モードで作動するときに前記安全メモリへのアクセスを許可するアクセス制御情報を前記内部記憶ユニットが記憶しないようにするために前記別のパーティションチェックロジックを利用するステップとを備え、
    前記少なくとも1つのテーブルが少なくとも1つのページテーブルを含む、請求項34〜45のいずれかに記載の方法。
  47. 前記別のメモリが前記システムバスに接続された密に結合されたメモリを備え、
    該密に結合されたメモリに対する物理アドレスレンジを制御レジスタ内で定義するステップと、
    特権安全モードで作動しているときに限りプロセッサによって前記密に結合されたメモリを制御できるか、または前記少なくとも1つの非安全モードで作動中にプロセッサによって制御可能かどうか、を示すよう、特権安全モードで作動中のプロセッサによって制御フラグを設定するステップと、を備えた請求項34〜46のいずれかに記載の方法。
  48. 前記少なくとも1つの非安全モードで作動中に前記プロセッサによって前記密に結合されたメモリを制御できる場合に、安全データが前記密に結合されたメモリ内に記憶されることを防止する、請求項47記載の方法。
JP2004570296A 2002-11-18 2003-10-27 デバイスによるメモリへのアクセスの制御 Expired - Lifetime JP4302641B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
GB0226879A GB0226879D0 (en) 2002-11-18 2002-11-18 Apparatus and method for controlling access to a memory
GB0226875A GB0226875D0 (en) 2002-11-18 2002-11-18 Control of access to a memory by a device
GB0303446A GB0303446D0 (en) 2002-11-18 2003-02-14 Apparatus and method for controlling access to a memory
PCT/GB2003/004629 WO2004046934A2 (en) 2002-11-18 2003-10-27 Secure memory for protecting against malicious programs

Publications (3)

Publication Number Publication Date
JP2006506754A JP2006506754A (ja) 2006-02-23
JP2006506754A5 JP2006506754A5 (ja) 2009-02-26
JP4302641B2 true JP4302641B2 (ja) 2009-07-29

Family

ID=32329547

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004570296A Expired - Lifetime JP4302641B2 (ja) 2002-11-18 2003-10-27 デバイスによるメモリへのアクセスの制御

Country Status (7)

Country Link
US (1) US7305534B2 (ja)
EP (1) EP1563388A2 (ja)
JP (1) JP4302641B2 (ja)
KR (1) KR101015456B1 (ja)
AU (1) AU2003278350A1 (ja)
GB (1) GB2411027B (ja)
WO (1) WO2004046934A2 (ja)

Families Citing this family (106)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
EP1331539B1 (en) * 2002-01-16 2016-09-28 Texas Instruments France Secure mode for processors supporting MMU and interrupts
KR100941104B1 (ko) * 2002-11-18 2010-02-10 에이알엠 리미티드 데이터 처리 장치, 데이터 처리 방법 및 컴퓨터 프로그램을 기억한 컴퓨터 판독가능한 기억매체
CN1717639A (zh) 2002-11-27 2006-01-04 皇家飞利浦电子股份有限公司 芯片集成保护装置
US8892878B2 (en) * 2003-05-09 2014-11-18 Oracle America, Inc. Fine-grained privileges in operating system partitions
EP1545131B1 (en) * 2003-12-19 2007-07-18 STMicroelectronics Limited Semiconductor circuit for restricting data access
FR2864658B1 (fr) * 2003-12-30 2006-02-24 Trusted Logic Controle d'acces aux donnees par verification dynamique des references licites
US7249208B2 (en) * 2004-05-27 2007-07-24 International Business Machines Corporation System and method for extending the cross-memory descriptor to describe another partition's memory
JP4447977B2 (ja) 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
JP2006048643A (ja) * 2004-07-08 2006-02-16 Namco Ltd 端末装置、プログラム、情報記憶媒体およびデータ処理方法
DE102004037590B4 (de) * 2004-08-03 2006-06-14 Infineon Technologies Ag Integrierte Schaltung und Verfahren zum Betrieb einer solchen
CN100489818C (zh) * 2004-11-26 2009-05-20 松下电器产业株式会社 处理器和安全处理系统
US7457960B2 (en) * 2004-11-30 2008-11-25 Analog Devices, Inc. Programmable processor supporting secure mode
US7673345B2 (en) * 2005-03-31 2010-03-02 Intel Corporation Providing extended memory protection
EP1713000A1 (en) * 2005-04-11 2006-10-18 Jaluna SA Memory protection system
JP4886682B2 (ja) * 2005-05-26 2012-02-29 パナソニック株式会社 データ処理装置
EP1890237A1 (en) * 2005-06-01 2008-02-20 Matsushita Electric Industrial Co., Ltd. Computer system and program creating device
EP1742152B1 (en) * 2005-07-07 2012-09-12 Texas Instruments Inc. Method and system for a multi-sharing memory access control
US9158941B2 (en) * 2006-03-16 2015-10-13 Arm Limited Managing access to content in a data processing apparatus
EP1850256B1 (en) * 2006-04-24 2010-06-09 Telefonaktiebolaget LM Ericsson (publ) Authorisation of the installation of a software version
US8560829B2 (en) * 2006-05-09 2013-10-15 Broadcom Corporation Method and system for command interface protection to achieve a secure interface
US8285988B2 (en) * 2006-05-09 2012-10-09 Broadcom Corporation Method and system for command authentication to achieve a secure interface
US8032761B2 (en) 2006-05-09 2011-10-04 Broadcom Corporation Method and system for memory attack protection to achieve a secure interface
US7836320B2 (en) * 2006-07-07 2010-11-16 Arm Limited Power management in a data processing apparatus having a plurality of domains in which devices of the data processing apparatus can operate
GB0615392D0 (en) * 2006-08-03 2006-09-13 Wivenhoe Technology Ltd Pseudo random number circuitry
US7529916B2 (en) * 2006-08-16 2009-05-05 Arm Limited Data processing apparatus and method for controlling access to registers
GB2440968B (en) * 2006-08-16 2011-02-02 Advanced Risc Mach Ltd Protecting system control registers in a data processing apparatus
US8959311B2 (en) * 2006-08-25 2015-02-17 Texas Instruments Incorporated Methods and systems involving secure RAM
WO2008025036A2 (en) * 2006-08-25 2008-02-28 Texas Instruments Incorporated Data processing systems utilizing secure memory
GB2442023B (en) 2006-09-13 2011-03-02 Advanced Risc Mach Ltd Memory access security management
JP4756603B2 (ja) * 2006-10-10 2011-08-24 ルネサスエレクトロニクス株式会社 データプロセッサ
KR20080067774A (ko) * 2007-01-17 2008-07-22 삼성전자주식회사 허가되지 않은 메모리 접근으로부터 비밀 영역을 보호하기위한 방법 및 시스템
GB2446658B (en) * 2007-02-19 2011-06-08 Advanced Risc Mach Ltd Hibernating a processing apparatus for processing secure data
US8689288B2 (en) 2007-04-16 2014-04-01 Samsung Electronics Co., Ltd. Apparatus and method for protecting system in virtualized environment
KR101405319B1 (ko) * 2007-04-16 2014-06-10 삼성전자 주식회사 가상화 환경에서의 안전한 시스템 보호 장치 및 방법
JP5049185B2 (ja) * 2007-04-19 2012-10-17 パナソニック株式会社 情報セキュリティ装置、セキュリティシステム及び入力情報漏洩防止方法
GB2448907B (en) 2007-05-02 2011-07-27 Advanced Risc Mach Ltd Reducng information leakage between processes sharing a cache
US8051263B2 (en) 2007-05-04 2011-11-01 Atmel Corporation Configurable memory protection
EP2187314B1 (en) 2007-09-04 2019-10-23 Nintendo Co., Ltd. Download security system
US9176897B2 (en) 2007-09-04 2015-11-03 Nintendo Co., Ltd. Writing area security system
FR2925968B1 (fr) * 2007-12-26 2011-06-03 Ingenico Sa Procede de securisation d'un microprocesseur, programme d'ordinateur et dispositif correspondants
US9418220B1 (en) 2008-01-28 2016-08-16 Hewlett Packard Enterprise Development Lp Controlling access to memory using a controller that performs cryptographic functions
GB2460393B (en) * 2008-02-29 2012-03-28 Advanced Risc Mach Ltd A data processing apparatus and method for controlling access to secure memory by virtual machines executing on processing circuitry
US8826037B2 (en) * 2008-03-13 2014-09-02 Cyberlink Corp. Method for decrypting an encrypted instruction and system thereof
US8127131B2 (en) * 2008-04-10 2012-02-28 Telefonaktiebolaget Lm Ericsson (Publ) System and method for efficient security domain translation and data transfer
WO2009153982A1 (ja) * 2008-06-20 2009-12-23 パナソニック株式会社 複数区分型不揮発性記憶装置およびシステム
US8726364B2 (en) * 2008-06-30 2014-05-13 Intel Corporation Authentication and access protection of computer boot modules in run-time environments
DE102008051578A1 (de) 2008-10-14 2010-04-15 Giesecke & Devrient Gmbh Datenkommunikation mit portablem Endgerät
DE102010004446A1 (de) 2010-01-13 2011-07-14 Giesecke & Devrient GmbH, 81677 Verfahren zum Bereitstellen eines sicheren Zählers auf einem Endgerät
JP5485055B2 (ja) * 2010-07-16 2014-05-07 パナソニック株式会社 共有メモリシステム及びその制御方法
US8539245B2 (en) * 2010-08-06 2013-09-17 Intel Corporation Apparatus and method for accessing a secure partition in non-volatile storage by a host system enabled after the system exits a first instance of a secure mode
US20120036308A1 (en) * 2010-08-06 2012-02-09 Swanson Robert C Supporting a secure readable memory region for pre-boot and secure mode operations
JP5541036B2 (ja) * 2010-09-21 2014-07-09 富士通株式会社 メモリアクセス制御プログラム、メモリアクセス制御方法、及び情報処理装置
US9087196B2 (en) * 2010-12-24 2015-07-21 Intel Corporation Secure application attestation using dynamic measurement kernels
JP2012216101A (ja) * 2011-04-01 2012-11-08 Sanyo Electric Co Ltd アクセス制御装置
JP5879527B2 (ja) 2011-05-25 2016-03-08 パナソニックIpマネジメント株式会社 情報処理装置および情報処理方法
US9465755B2 (en) 2011-07-18 2016-10-11 Hewlett Packard Enterprise Development Lp Security parameter zeroization
US9361305B2 (en) * 2011-08-09 2016-06-07 Kyocera Document Solutions Inc. Image forming apparatus having a file system
GB2498571A (en) 2012-01-20 2013-07-24 Intellectual Ventures Holding 81 Llc Base station able to communicate with a second device type on a narrow subset frequency band contained within a first main band
KR101897605B1 (ko) * 2012-02-24 2018-09-12 삼성전자 주식회사 휴대 단말기의 무결성 보호 방법 및 장치
US8984205B2 (en) * 2012-03-22 2015-03-17 Raytheon Company Data filter
FR2989801B1 (fr) 2012-04-18 2014-11-21 Schneider Electric Ind Sas Procede de gestion securisee d'un espace memoire pour microcontroleur
CN104471587B (zh) * 2012-05-16 2018-01-23 诺基亚技术有限公司 处理器中的方法,装置和计算机程序产品
US9075751B2 (en) * 2012-08-09 2015-07-07 Intel Corporation Secure data protection with improved read-only memory locking during system pre-boot
US8938796B2 (en) 2012-09-20 2015-01-20 Paul Case, SR. Case secure computer architecture
JP6106765B2 (ja) * 2013-02-05 2017-04-05 エイアールエム リミテッド メモリ保護ユニットを使用して、仮想化をサポートするゲスト・オペレーティング・システム
JP6158952B2 (ja) * 2013-02-05 2017-07-05 エイアールエム リミテッド データ処理装置のメモリ・アクセス動作の操作
US10061940B2 (en) 2013-07-09 2018-08-28 Andes Technology Corporation Secure protection processor and method including comparing an instruction security attribute of an instruction and a security attribute of an operational event
JP5911835B2 (ja) * 2013-09-17 2016-04-27 株式会社東芝 情報処理装置
JP6117068B2 (ja) 2013-09-20 2017-04-19 株式会社東芝 情報処理装置、およびプログラム
US9436823B1 (en) * 2013-12-17 2016-09-06 Google Inc. System and method for detecting malicious code
US9535856B2 (en) 2014-02-21 2017-01-03 International Business Machines Corporation Data access to a storage tier on a client in a multi-tiered storage system
US9413765B2 (en) * 2014-03-25 2016-08-09 Intel Corporation Multinode hubs for trusted computing
US9952887B2 (en) * 2014-06-23 2018-04-24 Vmware, Inc. Device simulation in a secure mode supported by hardware architectures
EP3029574B1 (en) * 2014-12-02 2019-09-18 ARM Limited Memory management
US20160170405A1 (en) * 2014-12-10 2016-06-16 General Electric Company Systems and methods for memory map utilization
JP6580138B2 (ja) * 2014-12-15 2019-09-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation セキュア・オブジェクトをサポートするプロセッサ、方法およびコンピュータ・プログラム
US20160224098A1 (en) * 2015-01-30 2016-08-04 Alexander Gendler Communicating via a mailbox interface of a processor
US10664179B2 (en) 2015-09-25 2020-05-26 Intel Corporation Processors, methods and systems to allow secure communications between protected container memory and input/output devices
GB2543096A (en) * 2015-10-09 2017-04-12 Secure Thingz Ltd Data Processing Device
US10776294B2 (en) * 2015-11-16 2020-09-15 Atmel Corporation System architecture with secure data exchange
US9824419B2 (en) * 2015-11-20 2017-11-21 International Business Machines Corporation Automatically enabling a read-only cache in a language in which two arrays in two different variables may alias each other
DE102015223757A1 (de) * 2015-11-30 2017-06-01 Robert Bosch Gmbh Verfahren zum Betreiben eines Mikrocontrollers
GB2546742B (en) * 2016-01-26 2019-12-11 Advanced Risc Mach Ltd Memory address translation management
FR3047587B1 (fr) 2016-02-10 2023-01-13 Dolphin Integration Sa Dispositif de traitement muni d'un mode d'acces a des donnees sensibles.
KR20170105353A (ko) * 2016-03-09 2017-09-19 삼성전자주식회사 전자장치 및 그 제어방법
US11379385B2 (en) * 2016-04-16 2022-07-05 Vmware, Inc. Techniques for protecting memory pages of a virtual computing instance
DE102016007690A1 (de) 2016-06-23 2017-12-28 Giesecke+Devrient Mobile Security Gmbh Zustandsloses Sicherheitselement
US10671744B2 (en) * 2016-06-23 2020-06-02 Intel Corporation Lightweight trusted execution for internet-of-things devices
US11442760B2 (en) * 2016-07-01 2022-09-13 Intel Corporation Aperture access processors, methods, systems, and instructions
KR102668431B1 (ko) 2017-01-17 2024-05-24 삼성전자주식회사 전자장치 및 그 제어방법
US10796004B1 (en) * 2017-06-16 2020-10-06 Sequitur Labs Inc. Split boot for computing devices with secure and insecure states
US20190042781A1 (en) * 2017-08-04 2019-02-07 Bitdefender IPR Management Ltd. Secure Storage Device
JP6776292B2 (ja) * 2018-03-20 2020-10-28 株式会社東芝 情報処理装置、情報処理方法、およびプログラム
GB2579034B (en) * 2018-11-15 2021-05-05 Trustonic Ltd Software installation method
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11455398B2 (en) * 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11283800B2 (en) 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging
EP3786826A1 (en) * 2019-08-30 2021-03-03 Barclays Execution Services Limited Secure validation pipeline in a third party cloud environment
US11734440B2 (en) * 2019-09-09 2023-08-22 Arm Limited Memory access transaction with security check indication
US11880718B2 (en) 2020-09-15 2024-01-23 Renesas Electronics Corporation System and method for generating secure partition regions in open and secure processor environments
CN115270100A (zh) * 2021-04-29 2022-11-01 华为技术有限公司 一种安全保护方法、装置及系统
US11809332B2 (en) 2021-12-13 2023-11-07 Micron Technology, Inc. Prefetch data associated with TLB fill requests
EP4276633A1 (en) * 2022-05-13 2023-11-15 Thales Dis France SAS Secured semiconductor device and method
US11907559B1 (en) 2022-08-09 2024-02-20 Winbond Electronics Corporation Physically secure memory partitioning

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4521852A (en) 1982-06-30 1985-06-04 Texas Instruments Incorporated Data processing device formed on a single semiconductor substrate having secure memory
US4787031A (en) * 1985-01-04 1988-11-22 Digital Equipment Corporation Computer with virtual machine mode and multiple protection rings
US4779187A (en) 1985-04-10 1988-10-18 Microsoft Corporation Method and operating system for executing programs in a multi-mode microprocessor
GB2176918B (en) 1985-06-13 1989-11-01 Intel Corp Memory management for microprocessor system
JPH02239349A (ja) * 1989-03-13 1990-09-21 Nec Corp 仮想計算機の例外検出回路
GB2260004B (en) 1991-09-30 1995-02-08 Apple Computer Memory management unit for a computer system
US5845129A (en) 1996-03-22 1998-12-01 Philips Electronics North America Corporation Protection domains in a single address space
US6282657B1 (en) 1997-09-16 2001-08-28 Safenet, Inc. Kernel mode protection
JP2000076087A (ja) * 1998-08-28 2000-03-14 Hitachi Ltd マルチオペレーティングシステム制御方法
US6292874B1 (en) 1999-10-19 2001-09-18 Advanced Technology Materials, Inc. Memory management method and apparatus for partitioning homogeneous memory and restricting access of installed applications to predetermined memory ranges
JP2001175486A (ja) * 1999-12-21 2001-06-29 Hitachi Ltd 計算機システム
US6986052B1 (en) 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US6820177B2 (en) * 2002-06-12 2004-11-16 Intel Corporation Protected configuration space in a protected environment

Also Published As

Publication number Publication date
GB2411027B (en) 2006-03-15
WO2004046934A3 (en) 2005-06-16
AU2003278350A8 (en) 2004-06-15
KR20050085000A (ko) 2005-08-29
JP2006506754A (ja) 2006-02-23
US7305534B2 (en) 2007-12-04
GB2411027A (en) 2005-08-17
US20040177261A1 (en) 2004-09-09
AU2003278350A1 (en) 2004-06-15
KR101015456B1 (ko) 2011-02-22
GB0507886D0 (en) 2005-05-25
WO2004046934A2 (en) 2004-06-03
EP1563388A2 (en) 2005-08-17

Similar Documents

Publication Publication Date Title
JP4302641B2 (ja) デバイスによるメモリへのアクセスの制御
JP4447471B2 (ja) 安全処理システムにおける例外タイプ
JP4220476B2 (ja) 安全ドメインおよび非安全ドメインを有するシステム内での仮想−物理メモリアドレスマッピング
JP4423206B2 (ja) 安全モードと非安全モードとを切り換えるプロセッサ
JP4302493B2 (ja) データ処理装置内のメモリへアクセスするための技術
JP4302492B2 (ja) メモリへのアクセスを管理するための装置および方法
JP4424973B2 (ja) マルチドメインプロセッサのためのモニタ制御
JP4302494B2 (ja) データ処理装置内のメモリへアクセスするための技術
JP4423012B2 (ja) マルチドメインプロセッサのための診断データ捕捉制御
JP4299107B2 (ja) サスペンドされたオペレーティングシステムへデータ処理リクエストを送る方法
US7171539B2 (en) Apparatus and method for controlling access to a memory
US7117284B2 (en) Vectored interrupt control within a system having a secure domain and a non-secure domain
US7370210B2 (en) Apparatus and method for managing processor configuration data
WO2004046925A1 (en) Security mode switching via an exception vector
JP2004171568A (ja) 多数のオペレーティングシステムを使用するデータ処理システムにおける多数の割り込みの取り扱い
CN100354829C (zh) 安全处理系统内的异常类型
JP4299108B2 (ja) 多数のオペレーティングシステムの間のタスクの追従
IL168336A (en) Control of access to a memory by a device

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060510

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060510

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080729

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081029

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081106

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081128

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081225

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20081225

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

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

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

Free format text: PAYMENT UNTIL: 20120501

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4302641

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

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term