JP2013250980A - プロセッサ資源および実行保護の方法および装置 - Google Patents

プロセッサ資源および実行保護の方法および装置 Download PDF

Info

Publication number
JP2013250980A
JP2013250980A JP2013115491A JP2013115491A JP2013250980A JP 2013250980 A JP2013250980 A JP 2013250980A JP 2013115491 A JP2013115491 A JP 2013115491A JP 2013115491 A JP2013115491 A JP 2013115491A JP 2013250980 A JP2013250980 A JP 2013250980A
Authority
JP
Japan
Prior art keywords
state
address
memory
authority
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2013115491A
Other languages
English (en)
Inventor
Daniel M Mccarthy
エム.マッカーシー ダニエル
Joseph C Circello
シー.サーチェロ ジョセフ
A Hausman Kristen
エイ.ハウスマン クリステン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NXP USA Inc
Original Assignee
Freescale Semiconductor Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Freescale Semiconductor Inc filed Critical Freescale Semiconductor Inc
Publication of JP2013250980A publication Critical patent/JP2013250980A/ja
Pending 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/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】本発明は、第1のレジスタ内に記憶される命令アドレス範囲指示子に基づいて、次の命令フェッチアドレスが、現在の権限状態に関連付けられる第1のメモリ領域内のロケーションに対応するか、または、異なる権限状態に関連付けられる第2のメモリ領域内のロケーションに対応するかを判定する処理システムに関する。
【解決手段】次の命令フェッチアドレスが第1のメモリ領域内にない場合、異なる権限状態への遷移が適正である場合にのみ、次の命令がフェッチされることを許可される。さらなる実施形態では、命令に対するデータ・アクセス・アドレスが生成される場合、第2のレジスタ内に記憶されるデータアドレス範囲指示子に基づいて、データ・アクセス・アドレスに対応するメモリロケーションに対するアクセスが許可されるかが判定される。現在の権限状態が、メモリロケーションに対するアクセスが許可される権限状態である場合、アクセスが許可される。
【選択図】図3

Description

本発明は、プロセッサ資源および実行保護の方法および装置一般に関する。
一般的なコンピュータシステムは、プロセッサ上で実行するコードに対して、種々のレベルのシステム資源アクセスを提供し得る。これは多くの場合、たとえば、複数の階層的権限レベルのうちの1つを、システム上で実行され得る各タイプのコードに対して関連付けることによって達成される。このようなシステムでは、最も信頼できるコード(たとえば、カーネルコード)に最高レベルの権限を付与し、それほど信頼できないコード(たとえば、デバイスドライバ、アプリケーション、および他のユーザコード)にはより低いレベルの権限を付与する。権限のレベルが高くなるほど、コードがアクセスできるシステム資源も多くなる。逆に、権限のレベルが低くなるほど、コードがアクセスできるシステム資源は少なくなる。たとえば、カーネルコードは、実質的に無制限にシステム資源にアクセスすることができ得、一方でアプリケーションコードは特定のメモリ領域、入出力(I/O)などへのアクセスを制限され得る。
悪意によるコードまたはフォールトを含んだコードがシステムのデータおよび/または機能を損壊し得る危険性を低減するために、階層的権限方式が一般的にハードウェアによって執行される。たとえば、プロセッサは階層的権限方式を執行するために「管理者」動作モードおよび「ユーザ」動作モードを実装し得る。このようなシステムでは、ハードウェア媒介フラグが実装され得、ここで、フラグの状態が、資源に影響するさまざまな動作の実行を許可すべきか否かを判定するために使用される。フラグは、システムが管理者モードにある間にセットされ得、たとえば、高い権限を有するコードがシステム資源への広範囲に及ぶアクセスを有することを可能にする。逆に、システムがユーザモードにある間はフラグはクリアされ得、したがって、低い権限を有するコードによる或る資源へのアクセスが制限される。
米国特許第6282657号
プロセッサ上でさまざまな権限レベルにおいてコードを実行することが可能であることによって、2つ以上のレベルのソフトウェアが、ハードウェアによって執行される分離を維持しながら共存することができるように、ソフトウェアがこれらの権限レベルを利用して構築されることが可能になる。しかしながら、この能力は一般的に、権限状態を追跡するとともに状態変化を制御するために、多大なプロセッサロジックを犠牲とすることによって得られる。一般的に、階層的権限方式のハードウェア執行を提供するためのロジックは、プロセッサ設計に欠くことのできない部分であり、既存のプロセッサアーキテクチャにこの機能を加えることは、ハードウェア開発およびサイクルタイムに関してコストを高くする可能性がある。
第1の実施形態によると、処理システムであって、メモリからフェッチされた命令のアドレスに基づいて、現在の権限状態が第1の権限状態であるか、または第2の権限状態であるかの知識を維持するための第1のモジュールと、次の命令フェッチアドレスを少なくとも1つの命令アドレス範囲指示子と比較することによって、前記次の命令フェッチアドレスが、前記現在の権限状態に関連付けられる第1のメモリ領域内のロケーションに対応するか、または、異なる権限状態に関連付けられる第2のメモリ領域内のロケーションに対応するかを判定するとともに、前記次の命令フェッチアドレスが前記現在の権限状態に関連付けられる前記第1のメモリ領域内にない場合は、前記現在の権限状態から前記異なる権限状態への遷移が適正である場合にのみ、前記次のコンピュータ命令がフェッチされることを許可するための第2のモジュールとを備える、処理システムを要旨とする。
第1の実施形態において、前記第1の権限状態は相対的に高い権限レベルを有する管理者状態であり、前記第2の権限状態は相対的に低い権限レベルを有するユーザ状態であってもよい。
第1の実施形態において、前記少なくとも1つの命令アドレス範囲指示子は、管理者状態に関連付けられる管理者コードを記憶するために割り当てられる第1のメモリ領域を規定するとともに、ユーザ状態に関連付けられるユーザコードを記憶するために割り当てられる第2のメモリ領域を規定し、前記第2のモジュールはさらに、前記次の命令フェッチアドレスが前記第1のメモリ領域内に入る場合には該次の命令フェッチアドレスが前記管理者状態に関連付けられるメモリ領域内にあることを判定し、および、前記次の命令フェッチアドレスが前記第2のメモリ領域内に入る場合には、該次の命令フェッチアドレスは前記ユーザ状態に関連付けられることを判定するものでもよい。
さらに、第1の実施形態において、前記少なくとも1つの命令アドレス範囲指示子は、前記第1の権限状態に関連付けられるコンピュータ命令を記憶するために割り当てられる1つまたは複数の第1のメモリ領域を規定するとともに、前記第2の権限状態に関連付けられるコンピュータ命令を記憶するために割り当てられる1つまたは複数の第2のメモリ領域を規定し、前記第2のモジュールは、前記次の命令フェッチアドレスが前記第1のメモリ領域のうちの1つに入る場合には前記次の命令フェッチアドレスが前記第1の権限状態に関連付けられるメモリ領域内にあることを判定し、および、前記次の命令フェッチアドレスが前記第2のメモリ領域のうちの1つに入る場合には、前記次の命令フェッチアドレスは前記第2の権限状態に関連付けられることを判定するものであってもよい。
第1の実施形態において、前記第2のモジュールはさらに、前記現在の権限状態から前記異なる権限状態への前記遷移が適正でない場合には、フォールトを生成するとともに、前記次のコンピュータ命令がフェッチされることを不許可とすることもできる。
第1の実施形態において、前記少なくとも1つの命令アドレス範囲指示子を記憶するためのレジスタをさらに備えるものであってもよい。
第1の実施形態において、コードメモリをさらに備え、前記命令アドレス範囲指示子は、前記第1の権限状態に関連付けられるコンピュータ命令を記憶するために割り当てられる前記コードメモリ内の1つまたは複数の第1のメモリ領域を規定し、前記命令アドレス範囲指示子は、前記第2の権限状態に関連付けられるコンピュータ命令を記憶するために割り当てられる前記コードメモリ内の1つまたは複数の第2のメモリ領域を規定することもできる。
第1の実施形態において、データ・アクセス・アドレスを少なくとも1つのデータアドレス範囲指示子と比較することによって、該データ・アクセス・アドレスが前記第1の権限状態に関連付けられるか、または前記第2の権限状態に関連付けられるかを判定するとともに、前記現在の権限状態が前記データ・アクセス・アドレスに対応するメモリロケーションへのアクセスが許可される権限状態である場合に前記メモリロケーションへのアクセスを許可するために、コンピュータ命令に対する前記データ・アクセス・アドレスが生成されると判定するための第3のモジュールをさらに備えるものであってもよい。
この場合、前記少なくとも1つのデータアドレス範囲指示子は、前記第1の権限状態に関連付けられるデータを記憶するために割り当てられる1つまたは複数の第1のメモリ領域を規定するとともに、前記第2の権限状態に関連付けられるデータを記憶するために割り当てられる1つまたは複数の第2のメモリ領域を規定し、前記第3のモジュールは、前記データ・アクセス・アドレスが前記第1のメモリ領域のうちの1つに入る場合、該データ・アクセス・アドレスが前記第1の権限状態に関連付けられることと、前記データ・アクセス・アドレスが前記第2のメモリ領域のうちの1つに入る場合には、該データ・アクセス・アドレスは前記第2の権限状態に関連付けられることを判定することもでき、あるいは、前記少なくとも1つのデータアドレス範囲指示子を記憶するためのレジスタをさらに備えるものであってもよく、または、データメモリをさらに備え、前記データアドレス範囲指示子は、前記第1の権限状態に関連付けられるデータを記憶するために割り当てられる前記データメモリ内の1つまたは複数の第1のメモリ領域を規定し、前記データアドレス範囲指示子は、前記第2の権限状態に関連付けられるデータを記憶するために割り当てられる前記データメモリ内の1つまたは複数の第2のメモリ領域を規定するものであってもよい。あるいは、前記第3のモジュールは、前記現在の権限状態が、前記データ・アクセス・アドレスに対応する前記メモリロケーションに対するアクセスが許可されない権限状態である場合、フォールトを生成するとともに、前記メモリロケーションに対するアクセスを禁止することもある。
第2の実施形態では、処理方法において、第1の権限状態に関連付けられるコンピュータ命令を記憶するために割り当てられる1つまたは複数の第1のメモリ領域を規定し、および第2の権限状態に関連付けられるコンピュータ命令を記憶するために割り当てられる1つまたは複数の第2のメモリ領域を規定する少なくとも1つの命令アドレス範囲指示子を記憶するステップと、メモリからフェッチされた命令のアドレスに基づいて、現在の権限状態を前記第1の権限状態または前記第2の権限状態として定義するステップと、次の命令フェッチアドレスを前記少なくとも1つの命令アドレス範囲指示子と比較することによって、前記次の命令フェッチアドレスが、前記現在の権限状態に関連付けられるメモリ領域内のロケーションに対応するか、または異なる権限状態に関連付けられるメモリ領域内のロケーションに対応するかを判定するステップと、前記次の命令フェッチアドレスが前記現在の権限状態に関連付けられる前記メモリ領域内のロケーションに対応しない場合、前記次のコンピュータ命令に、前記現在の権限状態から前記異なる権限状態への遷移が適正である場合にのみ、フェッチされることを許可するステップとを備える、処理方法を要旨とする。
第2の実施形態において、前記第1の権限状態は相対的に高い権限レベルを有する管理者状態であり、前記第2の権限状態は相対的に低い権限レベルを有するユーザ状態であることもある。
第2の実施形態において、前記現在の権限状態から前記異なる権限状態への前記遷移が適正でない場合には、フォールトを生成するとともに、前記次のコンピュータ命令がフェッチされることを不許可とするステップをさらに備えるものであってもよい。
第2の実施形態において、前記第1の権限状態に関連付けられるデータを記憶するために割り当てられる1つまたは複数の第3のメモリ領域を規定し、前記第2の権限状態に関連付けられるデータを記憶するために割り当てられる1つまたは複数の第4のメモリ領域を規定する少なくとも1つのデータアドレス範囲指示子を記憶するステップをさらに備えることもできる。この場合、データ・アクセス・アドレスがコンピュータ命令によって生成されると判定するステップと、前記データアクセスが発生すると、該データ・アクセス・アドレスを前記少なくとも1つのデータアドレス範囲指示子と比較することによって、該データ・アクセス・アドレスが前記第1の権限状態に関連付けられるメモリロケーションに対するものであるか、または、前記第2の権限状態に関連付けられるメモリロケーションに対するものであるかを判定するステップと、前記現在の権限状態が、前記データ・アクセス・アドレスに対応するメモリロケーションに対するアクセスが許可される権限状態である場合、前記メモリロケーションに対するアクセスを許可するステップとをさらに備えることもある。さらにここで、前記現在の権限状態が、前記データ・アクセス・アドレスに対応する前記メモリロケーションに対するアクセスが許可されない権限状態である場合、フォールトを生成するとともに、前記メモリロケーションに対するアクセスを禁止するステップをさらに備えることもできる。
第3の実施形態は、処理方法において、現在の権限状態を管理者状態またはユーザ状態として定義するステップと、次の命令フェッチアドレスを命令アドレス範囲指示子と比較することによって、該次の命令フェッチアドレスが、前記現在の権限状態に関連付けられるメモリ領域内のロケーションに対応するか、または、異なる権限状態に関連付けられるメモリ領域内のロケーションに対応するかを判定することであって、前記命令アドレス範囲指示子は、管理者コードを記憶するために割り当てられる管理者コードメモリ領域、およびユーザコードを記憶するために割り当てられるユーザコードメモリ領域を規定する、判定するステップと、前記次の命令フェッチアドレスが前記現在の権限状態に関連付けられる前記メモリ領域内のロケーションに対応しない場合、前記次のコンピュータ命令に、前記現在の権限状態から前記異なる権限状態への遷移が適正である場合にのみ、フェッチされることを許可するステップとを備えることを要旨とする。
第3の実施形態において、前記現在の権限状態が前記管理者状態であり、かつ前記異なる権限状態が前記ユーザ状態である場合は、前記管理者状態から前記ユーザ状態への前記遷移は、命令セット内の命令が実行される場合に適正であり、前記命令セットは割り込み命令からの復帰を含むことができる。
第3の実施形態において、前記現在の権限状態が前記ユーザ状態であり、かつ前記異なる権限状態が前記管理者状態である場合は、前記ユーザ状態から前記管理者状態への前記遷移は、命令セット内の命令が実行される場合であって、該命令セットはソフトウェア割り込み命令およびトラップ命令を含む、場合、または、例外条件が検出される場合に適正であることもある。
第3の実施形態データ・アクセス・アドレスがコンピュータ命令によって生成されると判定するステップと、前記データアクセスが発生する場合、該データ・アクセス・アドレスをデータアドレス範囲指示子と比較することによって、該データ・アクセス・アドレスが前記管理者状態に関連付けられるメモリロケーションに対するものであるか、または前記ユーザ状態に関連付けられるメモリロケーションに対するものであるかを判定するステップであって、前記データアドレス範囲指示子は、前記管理者状態に関連付けられるデータを記憶するために割り当てられる第3のメモリ領域を規定し、前記ユーザ状態に関連付けられるデータを記憶するために割り当てられる第4のメモリ領域を規定する、判定するステップと、前記現在の権限状態が前記管理者状態である場合、前記メモリロケーションに対するアクセスを許可するステップと、前記現在の権限状態が前記ユーザ状態である場合、前記データ・アクセス・アドレスが前記第4のメモリ領域内のメモリロケーションに対するものであるときにのみ前記メモリロケーションに対するアクセスを許可するステップとをさらに備えるものであってもよい。
例示的な実施形態による処理システムの簡略化されたブロック図。 例示的な実施形態による、区分化されたコードおよびデータメモリの簡略化された例を示す図。 例示的な実施形態による、資源および実行保護を実施するシステムを動作させるための方法の流れ図。 例示的な実施形態による、管理者状態およびユーザ状態ならびにそれらの間の遷移を示す簡略化された状態図。
本明細書に記載の実施形態は、処理システム内に実装されることができる資源および実行保護の方法および装置を含む。基本的に、実施形態は、資源および実行保護が、ハードウェアに関して低コストで実装されることを可能にする。たとえば、資源および実行保護は、さまざまな権限レベルを有するコードによってアクセスされ得る資源の指示を記憶するのに使用されるレジスタのセットとともに、プロセッサ内に実装される相対的に単純なロジックを使用するシステム内で実施され得る。ここで、資源および実行保護の実施形態が組み込まれている処理システムの例を説明する。後に説明されるように、図1の例示的なシステムは限定を意図するものではなく、実施形態は、大きく異なるアーキテクチャにおいても同様に実装され得る。
図1は、例示的な実施形態による処理システム100の簡略化されたブロック図である。最低でも、システム100は、1つまたは複数のプロセッサコア110と、メモリ資源(たとえば、不揮発性フラッシュメモリ160および揮発性ランダム・アクセス・メモリ(RAM)164)と、資源および実行保護に関連する情報が記憶され得る「保護」レジスタのセット130(または他のデータ記憶構造)とを含む。加えて、システム100は、1つまたは複数の周辺モジュール140、142を含み得る。たとえば、より具体的な実施形態によれば、保護レジスタのセット130は、コア110がシステムバス150を通してアクセス可能である周辺モジュール140の一部として実装される。加えて、または代替的に、直接シグナリング接続152がコア110と周辺モジュール140との間に(たとえば、コア110と保護レジスタ130との間で値の交換を容易にするために)存在し得る。他の実施形態では、保護レジスタ130のうちの1つまたは複数は他の場所に(たとえば、コア110内または何らかの他のロケーション)に位置し得る。後により詳細に説明されるように、保護レジスタ130は、システム100によって実行される資源および実行保護メカニズムの実施形態を実装するのに使用される。
フラッシュメモリ160およびRAM164は、コア110にとっても、それぞれフラッシュコントローラ162およびRAMコントローラ166を介して、システムバス150を通してアクセス可能である。システム100は、同様に、1つまたは複数の他のプロセッサコアと、バスと、周辺モジュールと、コードおよびデータ記憶構造と、入出力(I/O)と、他の構成要素とを含み得る。さまざまな実施形態において、システム100は、単一の集積回路上に(たとえば、システム・オン・チップとして)、または複数の集積回路上に(たとえば、システム・イン・パッケージ、もしくは複数の別個にパッケージされた集積回路を備えるシステムとして)実装され得る。
一実施形態では、コア110は、アドレス生成ユニット112と、プログラム制御ユニット114と、データ算術演算ユニット116と、命令フェッチアドレスレジスタ(IFAR)117と、プログラムカウンタ(PC)レジスタ118と、スタックポインタ(SP)レジスタ120と、さまざまなモジュール122、124、126、128とを含む。他の実施形態では、コア110は追加のまたは異なる構成要素を含み得る。IFAR117、PCレジスタ118、SPレジスタ120、およびモジュール122、124、126、128はアドレス生成ユニット112、プログラム制御ユニット114、およびデータ算術演算ユニット116とは明白に異なるものとして図示されているが、これは説明を簡便かつ明瞭にするために過ぎない。さまざまな実施形態において、IFAR117、PCレジスタ118、SPレジスタ120、および/またはモジュール122、124、126、128は、アドレス生成ユニット112、プログラム制御ユニット114、およびデータ算術演算ユニット116のうちの任意の1つまたは複数の中に組み込まれ得る。
基本的に、コア110は、コードをコンピュータ命令の形態でフェッチ、復号、および実行するように構成される。たとえば、限定ではないが、コア110は、コア110の外部にあるメモリ内に記憶されているコード(たとえば、フラッシュメモリ160内に記憶されているコード)をフェッチし得る。コード実行中、コア110は、システムバス150を通してメモリ(たとえば、RAM164)およびさまざまな周辺機器(たとえば、周辺モジュール140、142および他の周辺モジュール(図示せず))にアクセスする(たとえば、読み出す/書き込む)とともに、さまざまな算術演算的、論理的、およびI/O動作を実行し得る。コア110によって実行されるほとんどの命令は、1つまたは複数のオペランドを指定する。加えて、いくつかの事例においては、命令は、メモリまたは他の場所(たとえば、フラッシュメモリ160、RAM164、周辺モジュール140、142、または何らかの他のロケーション)内のアドレスを含むかまたは指定し得る。たとえば、命令は、フラッシュメモリ160内に、実行スレッドがジャンプすべき命令のロケーションを指示する、アドレスを含み得る。代替的に、命令は、RAM164、周辺機器140、142、または、データ値がそこからフェッチされるべき、もしくは、データ値がそこに記憶されるべきである、何らかの他のロケーション内のアドレスを含むかまたは指定し得る。そのような命令の実行は、データアクセス事象(たとえば、読み出しまたは書き込み事象)を発生させると考えられる。
以下により詳細に記載されるように、また、さまざまな実施形態によれば、コア110は、モジュール122、124、126、128、および保護レジスタ130に記憶されている情報を使用して資源および実行保護メカニズムを実装するように構成される。基本的に、モジュール122、124、126、128は、以下に記載される命令が実行されることを可能にするハードウェア(たとえば、論理および他の回路)を含む。いくつかの実施態様では、以下に記載される命令を実行するのに使用される「モジュール」は、ハードウェアおよびソフトウェアの両方を使用して実装され得る。したがって、「モジュール」という用語は、ハードウェア(たとえば、論理ゲート構成および他の関連回路)のみ、およびハードウェアとソフトウェアとの組み合わせを使用して実装される実施形態を含むように意図される。加えて、モジュール122、124、126、128は、互いに、およびコア110の他の部分から明白に異なるように図示されているが、モジュール122、124、126、128のうちのいくつかまたはすべては、完全にまたは部分的に互いに、および/またはコア110の他の部分と一体化されてもよい。本明細書における記載に基づいて、モジュール122、124、126、128を実装する方法を当業者は理解することになり、それゆえ、モジュール122、124、126、128の特定の構成は本明細書においては詳細には説明されない。
本明細書に記載の資源および実行保護メカニズムの実施形態は、相対的に高い権限レベルを有するコードおよびデータの、相対的に低い権限レベルを有するコードおよびデータからのハードウェアによって執行される分離をサポートする。本明細書において使用される場合、「管理者権限レベル」という用語は、システム100において実装される最高の権限レベルを指し、「ユーザ権限レベル」は、より低い権限レベルを指す。同様に、「管理者コード」という用語は、管理者権限レベルを有するように指定されるコード(たとえば、オペレーティング・システム・カーネル・コードおよび他の信頼性の高いコード)を指し、「ユーザコード」は、ユーザ権限レベルを有するように指定されるコード(たとえば、その実行がカーネルコードによって管理されるアプリケーションコード)を指す。本明細書において詳細に説明される実施形態は、2つのみの権限レベル(すなわち、管理者権限レベルおよびユーザ権限レベル)に言及しているが、他の実施形態は、3つ以上の権限レベルを有するコードのハードウェアによって執行される分離を実装してもよく、そのような実施形態は本発明の主題の範囲内に含まれるように意図される。資源および実行保護メカニズムの実施形態を詳細に説明する前に、まずコア110の基本動作を説明する。
コア110はパイプライン型アーキテクチャを有し得、命令実行は、連続するクロックサイクル中に実施される一連のステップとして実施される。たとえば、任意の特定の命令について、コア110は、命令をフェッチするステップ、命令を復号するステップ、命令を実行するステップ、(命令がフラッシュ160、RAM164、または他の場所内のアドレスを指定する場合は)メモリアクセスを実施するステップを実施し得、いくつかの事例においては、レジスタは命令実行の結果を書き戻す。一実施形態では、コア110は、パイプライン型アーキテクチャの実装を容易にする2つの命令アドレスレジスタを含む。これらの命令アドレスレジスタは、IFAR117およびPCレジスタ118を含む。
IFAR117は、本明細書においては「命令フェッチアドレス」と称される、現在命令フェッチパイプラインの先頭にある命令のメモリアドレスを定義するのに使用される。IFAR117は、命令フローの「切れ目」(たとえば、メモリ内の連続的なアドレス内に記憶されている命令に対するアクセスを含まないが、代わりに、不連続のアドレス内に記憶されている命令に対するアクセスを含む命令フロー遷移)ごとに命令フェッチアドレスをロードされ得る。たとえば、命令フローの切れ目は、特定の命令(たとえば、ソフトウェア割り込み、トラップ命令など)の実行に応答して、または、例外条件の発生に応答して、とられる分岐命令に起因して発生し得る。命令フェッチアドレスをロードされると、対応する命令フェッチが開始される。より具体的には、命令フェッチはシステムバス150に進み、メモリ(たとえば、フラッシュメモリ160)内の目標とされる宛先に進む。続いて、宛先メモリはフェッチされた命令をコア110に戻して返す。このフェチサイクルおよび各後続のフェッチサイクルが完了すると、IFAR117内のアドレスは、別の命令フェッチの切れ目が発生しない限り、命令フェッチの幅(または「フェッチ幅」)だけインクリメントされる。命令フェッチの切れ目がない場合、命令フェッチパイプラインは続いて、アドレスの生成および適切な宛先メモリへのアクセスを継続する。フェッチの流れの方向を変える命令フェッチの切れ目が発生する場合、IFAR117は新たな不連続の命令フェッチアドレスを再ロードされ、目標とされる宛先メモリがアクセスされ、命令フェッチパイプラインはその連続的なアドレスの生成および宛先メモリアクセスのプロセスを再開する。
フェッチされた命令がコア110に返されると、命令は実行パイプライン内にロードされる。PCレジスタ118は、本明細書においては「PCアドレス」と称される、現在実行パイプラインの先頭に存在する命令のメモリアドレスを定義するのに使用される。命令が実行パイプラインを通じて進行し始めると、PCレジスタ118内のPCアドレスが、(内部命令バッファ、またはシステムバス150上のフェッチサイクルのいずれかから)実行パイプラインの先頭に次の命令が到着すると同時に命令長に基づいてインクリメントされる。いくつかの事例においては、命令フェッチ幅(たとえば、命令フェッチバスの幅)と命令長は等しい場合があり(たとえば、両方とも2バイト、または何らかの他の長さ)、この場合、IFAR117およびPCレジスタ118内のアドレスは同じ値(すなわち、命令長)だけインクリメントされる。他の事例においては、命令フェッチ幅は命令長と異なってもよい(たとえば、命令長よりも広い)。たとえば、命令フェッチ幅は、命令長の二倍(たとえば、それぞれ4バイトおよび2バイト、または何らかの他の長さ)であり得、その場合、各命令フェッチの結果として同時に2つの命令がコア110内にフェッチされ得る。そのような実施形態では、命令フローの切れ目に遭遇するまで、IFAR117内のアドレスが命令フェッチ幅(たとえば、2xバイト)だけインクリメントされることになり、PCレジスタ118内のアドレスがIFAR117のインクリメントの割合の二倍である命令長(たとえば、xバイト)だけインクリメントされることになる。説明を容易にするために、下記の論述は、IFAR117内のアドレスに基づく「一つの命令」(“an instruction”)のフェッチに言及し得る。本明細書における記載に基づいて、複数の命令がIFAR117内のアドレスに基づいてフェッチされるときに(たとえば、命令フェッチ幅が命令長よりも広いときに)本発明の主題の実施形態がどのように変更され得るかを、当業者は理解するであろう。
システム起動(たとえば、電源投入)時に、アドレス生成ユニット112は、第1の命令フェッチアドレス(たとえば、リセットベクトル)をIFAR117内にロードする。第1の命令フェッチアドレスは、(たとえば、基本入出力システム(BIOS)およびカーネル初期化コードを含む)システムの初期化コードのメモリ内の(たとえば、フラッシュメモリ160内の)開始アドレスに対応する。次いで、コア110は、IFAR117において指定される命令フェッチアドレスに対応する1つまたは複数のメモリロケーション(たとえば、フラッシュメモリ160内)から(命令フェッチ幅に基づいて)1つまたは複数の第1の命令をフェッチする。PCレジスタ118は第1のフェッチされた命令のアドレスを用いて初期化され、次いで、対応する、フェッチされた命令が実行パイプラインに入る。実行パイプライン内に入ると、プログラム制御ユニット114が命令を復号しその実行を制御する。各命令フェッチが開始されると、アドレス生成ユニット112は、IFAR117内の命令フェッチアドレスがインクリメントされるべきか否か、または、命令内でいつ命令フローの切れ目が指示されるかを決定し、アドレス生成ユニット112は次にフェッチされるべき命令に対応する命令フェッチアドレスを決定する。いずれにせよ、IFAR117内の命令フェッチアドレスがその決定にしたがって変更され得る。
上記のように、管理者コード(たとえば、カーネルコード)の実行に加えて、コア110は、管理者コードの権限レベルと比較したときに相対的に低い権限レベルを有するユーザコードをも実行し得る。さまざまな実施形態は、コア110の管理者コードとユーザコードとの実行間の順序正しい遷移を企図する。より詳細には、一実施形態において、コア110は、少なくとも「管理者状態」(たとえば、図4の管理者状態410)および「ユーザ状態」(たとえば、図4のユーザ状態420)を含む状態機械を実装する。図3および図4に関連して後により詳細に記載されるように、状態は、コア110が(たとえば、IFAR117内の命令フェッチアドレスに基づいて)メモリからフェッチされることを許可した最近の命令のアドレスに基づいて決定される。たとえば、コア110がフェッチされることを許可した最近の命令が、管理者コードに割り当てられるメモリの一部(たとえば、図2の管理者コードメモリ領域216)からのものであるとき、コア110は管理者状態にある。逆に、コア110がフェッチされることを許可した最近の命令が、ユーザコードに割り当てられるメモリの一部(たとえば、図2のユーザコードメモリ領域218)からのものであるとき、コア110はユーザ状態にある。一実施形態では、コア110が最近にフェッチされることを許可した命令の権限レベルが「現在の権限状態」を定義する。後により詳細に説明されるように、コア110は、現在の権限状態を決定し、その知識を維持するように構成されるモジュール(図1において状態モジュール122として描かれている)を含む。より詳細には、一実施形態では、コア110は、少なくとも1つの命令アドレス範囲指示子(たとえば、図1および図2のユーザ・コード・ベース・アドレス・レジスタ(BAR)132、212内に記憶されている値、後述)を最近に許可された命令フェッチのアドレス(たとえば、IFAR117内の現在の命令フェッチアドレスに基づくアドレス)と比較することによって、現在の権限状態が管理者状態またはユーザ状態のいずれであるかを判定するように構成されるモジュール(たとえば、状態モジュール122)を含む。一実施形態では、状態モジュール122はプログラム制御ユニット114の一部を形成してもよい。他の実施形態では、この機能を実施するためのハードウェアは他の場所に位置してもよい。
一実施形態では、IFAR117内の値が更新されると、コア110は、現在の権限状態、次の命令がそこからフェッチされることになるアドレス(たとえば、IFAR117内の命令フェッチアドレスに基づくアドレス)、および保護レジスタ130内に記憶されている命令アドレス範囲指示子に基づいて次の命令がフェッチされるのを許可または不許可し得る。後により詳細に説明されるように、コア110は、命令のフェッチを許可とするか、または不許可とするかを決定するように構成されるモジュール(図1においてフェッチモジュール124として描かれている)を含む。より詳細には、一実施形態では、コア110は、次の命令フェッチアドレスを少なくとも1つの命令アドレス範囲指示子(たとえば、ユーザコードBAR132内に記憶されている値、後述)と比較することによって、フェッチされることになる次の命令のアドレス(たとえば、IFAR117内の命令フェッチアドレスに基づくアドレス)が、現在の権限状態に関連付けられる(たとえば、フラッシュメモリ160内の)メモリ領域内にあるか、または異なる権限状態に関連付けられるメモリ領域内にあるかを決定するように構成されるモジュール(たとえば、フェッチモジュール124)を含む。次の命令フェッチアドレスが現在の権限状態に関連付けられるメモリ領域内にない場合、コア110は、後に説明されるように、特定の条件下でのみ、次のコンピュータ命令がフェッチ、復号、および実行されることを許可するように構成される。一実施形態では、フェッチモジュール124はプログラム制御ユニット114の一部を形成してもよい。他の実施形態では、この機能を実施するためのハードウェアは他の場所に位置してもよい。命令のフェッチが許可されると仮定すると、プログラム制御ユニット114は、命令復号および実行のプロセスを制御する。たとえば、プログラム制御ユニット114の制御下で、データ算術演算ユニット116(またはコア110の他の部分)は、命令を実施(すなわち、実行)するのに必要であるさまざまな算術および論理演算のいずれかを実施し得る。
上記に記載したように、命令は、データ参照(たとえば、アドレス)を定義し得、これはシステム資源に(たとえば、RAM164、周辺機器140、142内のロケーション、または他の場所に)アクセスを開始し得る。システム100において実施される資源保護に関して、一実施形態では、コア110は、命令の権限レベル(または現在の権限状態もしくは命令がそこからフェッチされたアドレス)、および保護レジスタ130内に記憶されているデータアドレス範囲指示子に基づいて資源へのアクセスを許可または拒否し得る。後により詳細に説明されるように、コア110は、特定のシステム資源へのアクセスを許可または拒否するか否かを決定するように構成されるモジュール(図1においてアクセスモジュール126として描かれている)を含む。より具体的には、一実施形態において、コア110は、命令を実行するときにデータ・アクセス・アドレス(たとえば、RAM164を参照するアドレス)が生成されるかを判定するとともに、データ・アクセス・アドレスを少なくとも1つのデータアドレス範囲指示子(たとえば、図1および図2のユーザデータBAR133、222内に記憶されている値、後述)と比較することによって、データ・アクセス・アドレスが管理者状態と関連付けられるか、またはユーザ状態と関連付けられるかを判定するように構成されるモジュール(たとえば、アクセスモジュール126)を含む。現在の権限状態が、メモリロケーション(たとえば、RAM164内のロケーション)に対するアクセスが許可される権限状態である場合、コア110は、データ・アクセス・アドレスに対応するメモリロケーションに対するアクセスを許可するように構成される。一実施形態では、アクセスモジュール126はプログラム制御ユニット114の一部を形成してもよい。他の実施形態では、この機能を実施するためのハードウェアは他の場所に位置してもよい。
以前に示されたように、保護レジスタ130内の情報は、資源および実行保護機能を提供するのに関連してコア110によってアクセスされ得る。中でも、システム初期化コードは、実行されると、保護レジスタ130内のさまざまな設定または値を確立する命令を含み得る。たとえば、保護レジスタ130は、制御レジスタ131と、ユーザコードBAR132と、ユーザデータBAR133と、ユーザ周辺BAR134と、代替SPレジスタ135と、不正PCレジスタ136と、フォールトPCレジスタ137とを含み得る。
ここで、制御レジスタ131を簡潔に説明し、一方で他のレジスタ132〜137の各々の説明は下記に適切な節において記載する。一実施形態では、制御レジスタ131は、1つまたは複数のレジスタ・ロック・フラグおよびイネーブルフラグを含む。単一のレジスタ・ロック・フラグが含まれる場合、レジスタ・ロック・フラグは、クリアされると、(コアが適切な権限レベルを有すると仮定すると)保護レジスタ130内の値がコア110上で実行しているコードによって変更され得ることをコア110に指示する。逆に、レジスタ・ロック・フラグがセットされる場合、保護レジスタ130内の値は、改変されない場合がある(たとえば、周辺モジュール140または保護レジスタ130は、保護レジスタ130内の値を改変することをいかなるコードにも許可しない)。代替の実施形態では、制御レジスタ131は、保護レジスタ130に対するより精細な粒度のアクセスを提供するために複数のレジスタ・ロック・フラグを含んでもよい(たとえば、複数のレジスタ・ロック・フラグの各々が保護レジスタ130のうちの1つまたは複数から成る群に対するアクセスを制御するために使用され得る)。イネーブルフラグは、セットされると、システムの資源および実行保護メカニズムがイネーブルされること、およびコア110がこれらのメカニズムを実装すべきであることを指示する。イネーブルフラグがクリアされると、コア110は、資源および実行保護メカニズムに関連付けられる動作をディセーブルする。別の実施形態では、コアは、資源および実行保護メカニズムに関連付けられる動作を選択的にバイパスしてもよい。
一実施形態では、システム始動またはリセット時に、コア110は、資源および実行保護イネーブル信号が(たとえば、イネーブル入力を介して)システムに提供されたか否かを判定する。そうである場合、コア110は、初期化コードがイネーブルフラグをセットすることを許可する。加えて、レジスタ・ロック・フラグが(または複数のレジスタ・ロック・フラグが)システムリセット時にクリアされ、それによって、初期化コードは続いてレジスタ132〜137内のさまざまな値を確立し得る。それらの値がレジスタ132〜137内に確立されると、初期化コードはレジスタ・ロック・フラグ(複数の場合もあり)をセットし得、それによって、他のコードはセットされたフラグ(複数の場合もあり)に対応するレジスタ132〜137内の値を変更することができない。本明細書における記載は、保護レジスタ130(特にレジスタ132〜134)内の値が、システム100の通常動作中(たとえば、システム初期化後)に変更されないと仮定している。他の実施形態では、保護レジスタ132〜134のうちのいくつかまたはすべての中の値が、同様に(たとえば、特定の状況下および/またはさまざまな時点において)システム初期化後に再ロードまたは変更されてもよい。たとえば、保護レジスタ132〜134内の値は、管理者またはユーザコードによってアクセス可能な資源の量を増大および/または低減するように変更されてもよい。別の例として、特定の保護レジスタ132〜134内の値は、ユーザプロセス(たとえば、タスク)が実行を開始するたびごとにロード(または再ロード)されてもよい。保護レジスタ132〜134内の値は、同様に他の時点において変更されてもよい。そのような実施形態は本明細書においては詳細に説明されていないが、それらも本発明の主題の範囲内に含まれることが意図されている。
後により詳細に説明されるように、レジスタ132〜134は、さまざまな資源(たとえば、フラッシュメモリ160、RAM164、周辺機器など)の、管理者状態に関連付けられる部分、および資源の、ユーザ状態に関連付けられる部分を定義するのに使用される。一実施形態では、保護レジスタ130は、管理者コード(たとえば、カーネルコード)によってのみアクセスされ得、周辺モジュール140は、管理者レベルの資源であるとみなされる。
保護レジスタ130のうちの少なくともいくつかの中の値を確立することに加えて、初期化コードは、管理者コードが使用するためのスタック(本明細書において「管理者スタック」と称される(たとえば、図2の管理者スタック227))をも確立し得る。たとえば、管理者スタックは、「管理者スタックポインタ」をSPレジスタ120内にロードすることによって確立され得る。最初に、管理者スタックポインタは、管理者スタックの原点のメモリ内の(たとえば、RAM164内の)アドレス(すなわち、管理者スタックのベースアドレス)を指定し得る。管理者コードの実行中、管理者スタックポインタはコア110によって維持される。より具体的には、管理者コードがデータを管理者スタック上にプッシュし、データを管理者スタックから出すとき、SPレジスタ120内の管理者スタックポインタは、それにしたがってインクリメントおよびデクリメントされる。他の実施形態では、コア110は、異なる様式で動作するハードウェアスタックを使用してもよい。いずれにせよ、SPレジスタ120内の管理者スタックポインタは、管理者スタック内の最上部の要素を指すべきである。
コア110も、(たとえば、RAM164内で)ユーザコードが使用するための少なくとも1つの他のスタックを確立し得る。そのようなスタックは本明細書においては「ユーザスタック」(たとえば、図2のユーザスタック229)と称され、コア110がユーザコードを実行している間に、コア110はユーザスタックのためのスタックポインタ(本明細書においては「ユーザスタックポインタ」と称される)をも維持する。説明を容易にするために、単一のユーザスタックが本明細書において説明されるが、他の実施形態は複数のユーザスタックを実装してもよい。
コア110は管理者コードおよびユーザコードの実行の間で遷移することができるため、また、管理者コードとユーザコードの両方に関連付けられるスタック(および管理者コードとユーザコードの両方に関連付けられるスタックポインタ)が存在するため、さまざまな実施形態は、管理者状態とユーザ状態との間の遷移の間に管理者スタックポインタおよびユーザスタックポインタをスワッピングするためのメカニズムを含む。一実施形態では、システム100は、「代替」SPレジスタ135を含み、これは、コア110が異なる状態にある間に管理者スタックポインタまたはユーザスタックポインタのいずれかを記憶するのに使用され得る。換言すれば、コア110が管理者状態にある間は、管理者スタックポインタはコアのSPレジスタ120内に維持され、ユーザスタックポインタは代替SPレジスタ135内に保持される。コア110が管理者状態からユーザ状態に遷移すると、SPレジスタ120内の管理者スタックポインタの値が、代替SPレジスタ135内のユーザスタックポインタの値とスワッピングされる。コア110がユーザ状態にある間は、ユーザスタックポインタはコアのSPレジスタ120内に維持され、管理者スタックポインタは代替SPレジスタ135内に保持される。コア110がユーザ状態から管理者状態に戻って遷移すると、SPレジスタ120内のユーザスタックポインタの値が、代替SPレジスタ135内の管理者スタックポインタの値とスワッピングされる。換言すれば、任意の所与の時点において、SPレジスタ120内に記憶されているスタックポインタは、いずれのスタックが現在の権限状態に関連付けられているかに対応する。
一実施形態では、コア110は、管理者状態とユーザ状態との間の遷移の間にSPレジスタ120および代替SPレジスタ135内に記憶されているスタックポインタをスワッピングするように構成されるモジュール(図1にSPスワップモジュール128として描かれている)を含む。より詳細には、一実施形態では、コア110は、現在の権限状態と異なる権限状態との間で遷移が実施されると、SPレジスタ120からのスタックポインタを代替SPレジスタ135内へ移動し、同時に、代替SPレジスタ135からのスタックポインタをSPレジスタ120内へ移動するように構成されるモジュール(たとえば、SPスワップモジュール128)を含む。一実施形態によれば、SPレジスタ120および代替SPレジスタ135内のスタックポインタは、たとえば、直接シグナリング接続152を介して交換(または「スワッピング」)されてもよい。スワップモジュール128は、一実施形態では、プログラム制御ユニット114の一部を形成してもよい。他の実施形態では、この機能を実施するためのハードウェアは他の場所に位置してもよい。
一実施形態では、実行保護を実装するために、命令がその中に記憶されるメモリ(たとえば、フラッシュメモリ160またはコードメモリ210)は複数の領域に分割され、ここで、各領域は1つの権限レベルに対応する(たとえば、1つまたは複数の領域は管理者権限レベルに対応し、1つまたは複数の異なる領域はユーザ権限レベルに対応する)。それに対応して、コア110は、メモリ内の命令が記憶される(すなわち、命令が記憶される領域内の)アドレスに基づいて各命令に対する権限レベルを決定し得る。
コードメモリ領域(1つまたは複数のパーティションによって分離される)は、一実施形態では、少なくとも1つの「命令アドレス範囲指示子」を使用して画定される。アドレス範囲指示子(複数の場合もあり)は、管理者状態に関連付けられるコンピュータ命令(「管理者コード」)を記憶するのに割り当てられる1つまたは複数の第1のメモリ領域を画定し、ユーザ状態に関連付けられるコンピュータ命令(「ユーザコード」)を記憶するのに割り当てられる1つまたは複数の第2のメモリ領域を画定する。より具体的な実施形態では、命令アドレス範囲指示子は、管理者コードに関連付けられるメモリの第1の領域と、ユーザコードに関連付けられるメモリの第2の領域との間の(たとえば、フラッシュメモリ160またはコードメモリ210内の)境界を画定するアドレスを含む。命令アドレス範囲指示子未満の(または、代替の実施形態ではそれ以下の)アドレス内に記憶される任意の命令は管理者コードに対応し、命令アドレス範囲指示子以上の(または、別の実施形態ではそれを上回る)アドレス内に記憶される任意の命令はユーザコードに対応する。代替の実施形態では、逆のことが当てはまり得る。いずれにせよ、一実施形態において、フェッチモジュール124(または他の回路)は、次の命令フェッチアドレス(たとえば、IFAR117内の値に基づくアドレス)が管理者コードに割り当てられるメモリ領域内の1つの中に入る場合は、次の命令フェッチアドレスが管理者状態に関連付けられるメモリ領域(たとえば、フラッシュメモリ160またはコードメモリ210内の領域)内にあること、または、次の命令フェッチアドレスがユーザコードに割り当てられるメモリ領域のうちの1つの中に入る場合は、次の命令フェッチアドレスがユーザ状態に関連付けられることを判定するように構成される。
命令アドレス範囲指示子は、一実施形態では、ユーザコードをコードメモリ内に(たとえば、フラッシュメモリ160またはコードメモリ210内に)記憶するためのベースアドレスを指定する。代替的には、命令アドレス範囲指示子は、管理者コードをコードメモリ内に記憶するための最高のアドレス(上方境界)を指定してもよい。いずれにせよ、命令アドレス範囲指示子は、メモリ内で、管理者コード領域とユーザコード領域との間の境界を画定する。下記の記載は、命令アドレス範囲指示子が、ユーザコードをコードメモリ内に(たとえば、フラッシュメモリ160またはコードメモリ210内に)記憶するためのベースアドレスを指定するアドレスを含む一実施形態を説明するものであり、このアドレスは本明細書においては「ユーザ・コード・ベース・アドレス」と称される。一実施形態では、ユーザ・コード・ベース・アドレスは、システムの初期化コードの実行中にユーザコードBAR132内に確立(記憶)される。メモリの複数の不連続の領域が管理者コードおよび/またはユーザコードに割り当てられる実施形態では、複数の命令アドレス範囲指示子がシステム100内に(たとえば、複数のレジスタ内に)記憶され得る。そのような実施形態は本発明の主題の範囲内に含まれることが意図されているが、本明細書においては詳細に説明されていない。
一実施形態では、資源保護を実装するために、コア110によってアクセスされ得る資源(たとえば、RAM164、周辺機器140、142など)は複数のグループに分割され、各グループは1つの権限レベルに対応する(たとえば、1つまたは複数のグループは管理者権限レベルに対応し、1つまたは複数のグループはユーザ権限レベルに対応する)。それに対応して、コア110(またはより具体的にはアクセスモジュール126)は、権限レベルに関連付けられる命令が、その命令と同じ権限レベルを有する資源に対するアクセスを試みている(たとえば、データ参照を生成している)か、または異なる権限レベルを有する資源に対するアクセスを試みているかを判定し得る。
メモリタイプの資源(たとえば、RAM164またはデータメモリ220)は、一実施形態では、1つまたは複数の管理者データ領域および1つまたは複数のユーザデータ領域に分割され得、それらの領域は少なくとも1つの「データアドレス範囲指示子」を使用して画定される。データアドレス範囲指示子(複数の場合もあり)は、管理者状態に関連付けられるデータ(「管理者データ」)を記憶するのに割り当てられる1つまたは複数の第1のメモリ領域を画定し、ユーザ状態に関連付けられるデータ(「ユーザデータ」)を記憶するのに割り当てられる1つまたは複数の第2のメモリ領域を画定する。より具体的な実施形態では、データアドレス範囲指示子は、管理者データに関連付けられるメモリの第1の領域と、ユーザデータに関連付けられるメモリの第2の領域との間の(たとえば、RAM164またはデータメモリ220内の)境界を画定するアドレスを含む。コア110は、管理者コードには、いずれかのメモリ領域内に記憶されている任意のデータ(たとえば、管理者データとユーザデータの両方)にアクセスすることを許可し得るが、コア110は、ユーザコードには、データアドレス範囲指示子以上の(または、別の実施形態ではそれを上回る)アドレス内に記憶されているデータのみ(たとえば、ユーザデータのみ)に対するアクセスを許可し得る。代替の実施形態では、コア110は、ユーザコードに、データアドレス範囲指示子未満の(または、別の実施形態では、それ以下の)アドレス内に記憶されているデータのみにアクセスすることを許可し得る。いずれにせよ、一実施形態において、アクセスモジュール126(または他の回路)は、データ・アクセス・アドレスが管理者データに割り当てられるメモリ領域のうちの1つの中に入る場合には、データ・アクセス・アドレスが管理者状態に関連付けられることを、データ・アクセス・アドレスがユーザデータに割り当てられるメモリ領域のうちの1つの中に入る場合には、データ・アクセス・アドレスがユーザ状態に関連付けられることを判定するように構成される。
データアドレス範囲指示子は、一実施形態では、ユーザデータをメモリ資源内に(たとえば、RAM164またはデータメモリ220内に)記憶するためのベースアドレスを指定する。代替的には、データアドレス範囲指示子は、管理者データをメモリ資源内に記憶するための最高のアドレス(上方境界)を指定してもよい。いずれにせよ、データアドレス範囲指示子は、メモリ内で、管理者データ空間とユーザデータ空間との間の境界を画定する。下記の記載は、データアドレス範囲指示子が、ユーザデータをメモリ資源内に(たとえば、RAM164内に)記憶するためのベースアドレスを指定するアドレスを含む一実施形態を説明するものであり、このアドレスは本明細書においては「ユーザ・データ・ベース・アドレス」と称される。一実施形態では、ユーザ・データ・ベース・アドレスは、システムの初期化コードの実行中にユーザデータBAR133内に確立(記憶)される。メモリの複数の不連続の領域が管理者データおよび/またはユーザデータに割り当てられる実施形態では、複数のデータアドレス範囲指示子がシステム100内に(たとえば、複数のレジスタ内に)記憶され得る。そのような実施形態は本発明の主題の範囲内に含まれることが意図されているが、本明細書においては詳細に説明されていない。
一実施形態では、周辺資源(たとえば、周辺モジュール140、142、および他の周辺機器(図示せず))は、1つまたは複数の管理者周辺グループおよび1つまたは複数のユーザ周辺グループに分割され得、グループは、少なくとも1つの「周辺アドレス範囲指示子」を使用して画定される。より具体的な実施形態では、周辺アドレス範囲指示子は、管理者コードにアクセス可能な第1のセットの周辺機器(たとえば、周辺モジュール140はその一部である)と、管理者コードとユーザコードの両方にアクセス可能な第2のセットの周辺機器との間の境界を画定するアドレスを含む。コア110は、管理者コードには、いずれの周辺機器に対するアクセスも許可し得る(たとえば、管理者コードにアクセス可能な周辺機器に対する制約はない)が、コア110は、ユーザコードには、周辺アドレス範囲指示子以上の(または、別の実施形態では、それを上回る)アドレスを有する周辺機器のみに対するアクセスを許可し得る。代替の実施形態では、コア110は、ユーザコードに、周辺アドレス範囲指示子未満の(または、別の実施形態では、それ以下の)アドレスを有する周辺機器のみにアクセスすることを許可し得る。
周辺アドレス範囲指示子は、一実施形態では、ユーザコードがアクセスし得る周辺機器の最小のアドレスを指定する。代替的には、周辺アドレス範囲指示子は、管理者コードのみがアクセスし得る周辺機器の最大のアドレスを指定してもよい。代替的には、複数の周辺アドレス範囲指示子が、ユーザコード、管理者コード、またはその両方にとってアクセス可能であり得る複数のグループの周辺機器のアドレスを識別するために使用されてもよい。いずれにせよ、周辺アドレス範囲指示子は、管理者コードのみにとってアクセス可能である周辺機器のグループ、および、管理者コードとユーザコードの両方にとってアクセス可能である周辺機器のグループを画定する。下記の記載は、周辺アドレス範囲指示子が、特定の周辺機器のアドレスを指定するアドレスを含む一実施形態を説明するものであり、このアドレスは本明細書においては「ユーザ周辺ベースアドレス」と称される。一実施形態では、ユーザ周辺ベースアドレスは、システムの初期化コードの実行中にユーザ周辺BAR134内に確立(記憶)される。
保護レジスタ130を使用した資源分割の概念をより十分に伝えるために、図2が提供され、これは、例示的な実施形態による、分割されたコードメモリ210(たとえば、フラッシュメモリ160)および分割されたデータメモリ220(たとえば、RAM164)の簡略された例である。図2は、ユーザコードBAR212(たとえば、ユーザコードBAR132)およびユーザデータBAR222(たとえば、ユーザデータBAR133)をも示す。管理者状態およびユーザ状態に関連付けられる周辺機器のグループへの分割は図2には描かれていないが、周辺機器の分割は本明細書の他の場所の記載によって理解されるべきである。
一実施形態では、実行保護に関連して、命令アドレス範囲指示子がユーザコードBAR212内に(たとえば、システム初期化中または他の時点において)記憶され、命令アドレス範囲指示子は、管理者コードを記憶するために割り当てられる第1のメモリ領域216(「管理者コードメモリ領域」)と、ユーザコードを記憶するために割り当てられる第2のメモリ領域218(「ユーザコードメモリ領域」)との間のパーティション214を画定する。システム動作中、コア(たとえば、コア110)は、フェッチされることになる各次の命令のアドレス(たとえば、IFAR117内の値に基づくアドレス)を、命令アドレス範囲指示子と比較する。比較が、フェッチされることになる次の命令のアドレスが第1のメモリ領域216内に入ることを示す場合、コアは、フェッチされることになる次の命令が管理者コードであると判定する。逆に、比較が、フェッチされることになる次の命令のアドレスが第2のメモリ領域218内に入ることを示す場合、コアは、フェッチされることになる次の命令がユーザコードであると判定する。
コアは、次いで、次の命令がフェッチされることを許可すべきか否か、および/または、フェッチによって必要とされ得る状態変化が許可されるかを判定し得る。以前に言及したように、次の命令フェッチアドレス(たとえば、IFAR117内の値に基づくアドレス)が現在の権限状態に関連付けられるメモリ領域内にない場合、コアは、現在の権限状態から異なる権限状態への遷移が許可される場合にのみ、状態変化が発生し次のコンピュータ命令がフェッチされることを許可するように構成され得る。より具体的には、一実施形態では、ユーザ状態と管理者状態との間の状態変化は、特定の条件下でのみ許可され得る。
一実施形態では、現在の権限状態が管理者状態であり、かつ、次の命令フェッチアドレスがユーザコードメモリ領域218内にある場合、コアは、「管理者−ユーザ状態適正遷移事象」のみに応答して、管理者状態からユーザ状態への「通常」遷移を許可し得る(また、次の命令がフェッチされることを許可し得る)。たとえば、管理者−ユーザ状態適正遷移事象は、次の命令フェッチアドレス(たとえば、IFAR117内の値に基づくアドレス)が更新されるようにした、コアの第1のセットの命令の実行(たとえば、割り込み命令からの復帰を含む)を含み得る。逆に、次の命令フェッチアドレスが管理者−ユーザ状態適正遷移事象以外の何か(たとえば、コアの第1のセットの命令にない命令の実行)に応答して更新された場合、コアは状態変化を不許可とし(また、次の命令がフェッチされることを不許可とし)得る。
さらなる実施形態によれば、現在の権限状態がユーザ状態であり、かつ、次の命令フェッチアドレスが管理者コードメモリ領域216内にある場合、コアは、「ユーザ−管理者状態適正遷移事象」のみに応答して、ユーザ状態から管理者状態への「通常」遷移を許可し得る(また、次の命令がフェッチされることを許可し得る)。たとえば、ユーザ−管理者状態適正遷移事象は、1)次の命令フェッチアドレスが更新されるようにした、コアの第2のセットの命令の実行(たとえば、ソフトウェア割り込み命令、トラップ命令など)、および/または、2)コアに、その現在の実行スレッドを(少なくとも一時的に)中断させ、制御を管理者コードに(たとえば、例外条件をハンドリングするように構成されるカーネルの割り込み処理ルーチンに)渡し戻す例外条件の検出を含み得る。たとえば、例外条件は、I/O割り込み信号のアサート、または何らかの他の事象を含み得る。ユーザ状態から管理者状態への「通常」遷移に加えて、コアは、ユーザ状態から管理者状態への(たとえば、図3のブロック313、322に関連して後述するような誤りまたはフォールト状態の検出に応答して)「フォールトに基づく」遷移をも実施し得る。
資源保護に関連して、一実施形態では、データアドレス範囲指示子がユーザデータBAR222内に(たとえば、システム初期化中または他の時点において)記憶され、データアドレス範囲指示子は、管理者データを記憶するために割り当てられる第1のメモリ領域226(「管理者データメモリ領域」)と、ユーザデータを記憶するために割り当てられる第2のメモリ領域228(「ユーザデータメモリ領域」)との間のパーティション224を画定する。システム動作中、コア(たとえば、コア110)は、各要求されたデータアクセスのアドレスを、データアドレス範囲指示子と比較する。比較が、アクセスされることになるデータのアドレスが第1のメモリ領域226内に入ることを示す場合、コアは、アクセスされることになるデータが管理者データであると判定する。逆に、比較が、アクセスされることになるデータのアドレスが第2のメモリ領域228内に入ることを示す場合、コアは、アクセスされることになるデータがユーザデータであると判定する。
コアは、次いで、データアクセスを許可すべきか、または拒否すべきかを判定し得る。以前に言及されたように、管理者コードは、いずれのタイプのメモリ領域内に記憶されたいずれのデータ(たとえば、メモリ領域226、228内に記憶された管理者データとユーザデータの両方)にアクセスし得るが、ユーザコードは、ユーザデータメモリ領域のみに記憶されたデータにのみ(たとえば、メモリ領域228内に記憶されたユーザデータにのみ)アクセスし得る。したがって、現在の権限状態が管理者状態である場合、コアは、いずれの要求されたデータアクセスが実施されることも許可し得る。逆に、現在の権限状態がユーザ状態であり、かつ命令が管理者データメモリ領域226内のデータに対する参照を含む場合、コアはデータアクセスを許可しない。現在の権限状態がユーザ状態であり、かつ命令がユーザデータメモリ領域228内のデータに対する参照を含む場合、コアはデータアクセスを許可する。
一実施形態では、管理者データメモリ領域226の一部は管理者スタック227を割り当てられ、データメモリ領域228の一部はユーザスタック229を割り当てられる。換言すれば、管理者データメモリ領域226は管理者スタック227を含み、データメモリ領域228はユーザスタック229を含む。以前に説明されたように、システムは、管理者スタックの最上部のアドレスを指示する管理者スタックポインタ、および、ユーザスタックの最上部のアドレスを指示するユーザスタックポインタを維持する。コアが管理者状態にある間は、管理者スタックポインタがコアのスタック・ポインタ・レジスタ(たとえば、図1のSPレジスタ120)内に記憶され、コアがユーザ状態にある間は、ユーザスタックポインタがコアのスタック・ポインタ・レジスタ内に記憶される。現在の状態でないいずれかの状態に対応するスタックポインタは、代替スタック・ポインタ・レジスタ(たとえば、図1の代替SPレジスタ135)内に維持される。
図3は、例示的な実施形態による、資源および実行保護を実施するシステムを動作させるための方法の流れ図である。より良く理解するために、図3は、例示的な実施形態による、管理者状態410およびユーザ状態420ならびにそれらの間の遷移を示す簡略化された状態図である図4とともに見られるべきである。図3に描かれている動作の流れの説明の間、図4の管理者状態410およびユーザ状態420が参照される。理解を容易にするために、図3に描かれている流れ図は、パイプライン型アーキテクチャを実装するシステムにおいて採用され得る並列性は示さない。たとえば、流れ図はIFARを更新するステップ(ブロック306)、命令をフェッチおよび復号するステップ(ブロック314)、および命令を実行するステップ(ブロック318)を順次的に描いているが、最初の命令が命令パイプラインを通じて進行し始めると、これらのプロセスのうちの特定のものは、一連の命令の実行とともに並行して実施されてもよいことは理解されたい。パイプライン型アーキテクチャを含むシステムにおいて図3の流れ図にもともと備わっている概念を実装する方法を、当業者は理解するであろう。
方法は、ブロック302において、たとえば、コア(たとえば、図1のコア110)が電源投入(またはリセット)されると開始し得、システムは初期化コードの実行を通じて初期化される。本明細書において使用される場合、「初期化コード」は、コアによって、システムがいつでも通常動作(ユーザコードの実行を含む)を実施することができる時点までシステムを初期化するために実行される任意のコードを意味する。たとえば、システム初期化は、BIOSコード、パワーオン・セルフ・テスト(POST)コード、ブートストラップコード、および、オペレーティングシステムを起動する役割を担うカーネルコードの実行を含み得る。より具体的には、電源投入時に、第1の命令に対するアドレスがIFARおよびPCレジスタ内で確立され(たとえば、リセットベクトルに対応するアドレスが図1のIFAR117内にロードされ、対応するアドレスがPCレジスタ118内にロードされ)、対応する命令がメモリからフェッチされ、復号され、実行される。各命令が実行パイプラインを通じて進むと、IFARおよびPCレジスタ内のアドレスは更新され、次の命令がフェッチされ、復号され、実行される。最終的には初期化中、コアはカーネルの実行を開始する。一実施形態では、初期化コードは管理者コードであるとみなされ、コアは最初に、現在の権限状態を管理者状態410であると定義する。後に、下記に説明されるように、コアは、アドレス範囲指示子(複数の場合もあり)、および、現在実行している命令がメモリからフェッチされた元である命令アドレスに基づいて、現在の権限状態を管理者状態410またはユーザ状態420であると定義する。
一実施形態では、初期化コードによって実施される1つのプロセスは、システムを、資源および実行保護の目的のために利用されるレジスタ(たとえば、図1の保護レジスタ130)内の値の初期化によって資源および実行保護を実施するように構成することである。したがって、初期化コードは、下記に説明されるように、それらのレジスタ値に値を記憶する。より詳細には、また以前に説明されたように、保護レジスタのうちの1つは、1つまたは複数のレジスタ・ロック・フラグおよびイネーブルフラグを含む制御レジスタ(たとえば、図1の制御レジスタ131)を含む。一実施形態では、リセット時に、イネーブルフラグがセットされ(資源および実行保護イネーブル信号がシステムに提供されていると仮定する)、レジスタ・ロック・フラグが(または、複数のレジスタ・ロック・フラグが)クリアされる。次いで、初期化コードが、さまざまな保護レジスタ(たとえば、図1のレジスタ132〜134)内に値を書き込み得る。イネーブルフラグがセットされた状態で、コアは、さまざまな実施形態にしたがって資源および実行保護を実施する。
システムの資源および実行保護機能を構成するために、初期化コードは、保護レジスタ内に少なくとも1つの命令アドレス範囲指示子および少なくとも1つのデータアドレス範囲指示子を記憶する。たとえば、一実施形態では、初期化コードは、ユーザ・コード・ベース・アドレス・レジスタ(たとえば、図1のユーザコードBAR132)内に、メモリ内の(たとえば、図1のフラッシュメモリ160内の)管理者コード領域とユーザコード領域との間のパーティションを画定する命令アドレス範囲指示子(たとえば、図1のフラッシュメモリ160を参照するアドレス)を記憶し得る。より具体的には、また以前に説明されたように、命令アドレス範囲指示子は、管理者状態(たとえば、管理者状態410)に関連付けられるコンピュータ命令を記憶するために割り当てられるメモリ領域を画定し、ユーザ状態(たとえば、ユーザ状態420)に関連付けられるコンピュータ命令を記憶するために割り当てられるメモリ領域を画定する。加えて、初期化コードは、データ・コード・ベース・アドレス・レジスタ(たとえば、図1のユーザデータBAR133)内に、メモリ内の(たとえば、図1のRAM164内の)管理者データ領域とユーザデータ領域との間のパーティションを画定するデータアドレス範囲指示子(たとえば、図1のRAM164を参照するアドレス)を記憶し得る。より具体的には、また以前に説明されたように、データアドレス範囲指示子は、管理者状態(たとえば、管理者状態410)に関連付けられるデータを記憶するために割り当てられるメモリ領域を画定し、ユーザ状態(たとえば、ユーザ状態420)に関連付けられるデータを記憶するために割り当てられるメモリ領域を画定する。最後に、初期化コードは、周辺コード・ベース・アドレス・レジスタ(たとえば、図1のユーザ周辺BAR134)内に、管理者コードにとってアクセス可能である周辺デバイスのグループ、およびユーザコードにとってアクセス可能である周辺デバイスのグループを画定する周辺アドレス範囲指示子(たとえば、周辺アドレス)を書き込み得る。
システムは、一実施形態では、管理者コードが管理者データ領域および周辺機器とユーザデータ領域および周辺機器の両方にアクセスし得、ユーザコードがユーザデータ領域および周辺機器のみにアクセスし得るように構成される。管理者コード領域、データ領域、および周辺機器ならびにユーザコード領域、データ領域、および周辺機器を画定する保護レジスタが初期化されると、初期化コードは、(たとえば、図1の制御レジスタ131内の)対応するレジスタ・ロック・フラグ(複数の場合もあり)をセットし得、それによって、保護レジスタ内の値が不注意に上書きされることがない。一実施形態では、保護レジスタは管理者コードにとってのみアクセス可能であるように設計される周辺機器内にある(たとえば、周辺アドレス範囲指示子は、保護レジスタのための周辺機器が管理者コードのみにとってアクセス可能な周辺機器のグループ内にあるようなものである)。したがって、保護レジスタはユーザコードにとってはアクセス可能でない。
ブロック304において、初期化コードは、管理者スタックポインタをスタック・ポインタ・レジスタ(たとえば、図1のSPレジスタ120)内に書き込むことによって、管理者スタック(たとえば、図2の管理者スタック227)をも確立する。以前に説明されたように、初期管理者スタックポインタは、管理者スタックの原点に対応するメモリ内の(たとえば、RAM164内の)アドレス(たとえば、図2の管理者スタック227のベースアドレス)を指定し得る。一実施形態では、初期化コードは、この時点においてユーザスタック(たとえば、図2のユーザスタック229)をも確立し得るが、ユーザスタックは後に(たとえば、ユーザコードの最初のインスタンスが実行する直前のような、初期化コードが実行された後に)確立されてもよい。いずれにせよ、コア上で実行する管理者コードは、ユーザスタックの原点に対応するアドレス(たとえば、図2のユーザスタック229のベースアドレス)を代替スタック・ポインタ・レジスタ(たとえば、図1の代替SPレジスタ135)内に記憶することによって、ユーザスタックを確立し得る。以下の説明によって明らかになるように、コアのスタック・ポインタ・レジスタ(たとえば、図1のSPレジスタ120)内のスタックポインタは、現在の権限状態のためのスタックに対応し、代替スタック・ポインタ・レジスタ(たとえば、図1の代替SPレジスタ135)内のスタックポインタは、現在の権限状態以外の権限状態のためのスタックに対応する。換言すれば、たとえば、現在の権限状態が管理者状態である場合、コアのスタック・ポインタ・レジスタは管理者スタックのためのスタックポインタを含み、代替スタック・ポインタ・レジスタは、ユーザスタックのためのスタックポインタを含み得る。逆に、現在の権限状態がユーザ状態である場合、コアのスタック・ポインタ・レジスタはユーザスタックのためのスタックポインタを含み、代替スタック・ポインタ・レジスタは、管理者スタックのためのスタックポインタを含む。
システム初期化が完了すると、コアは、コアがプログラムフローにしたがって命令をフェッチ、復号、および実行する通常動作モードに入り得る。より具体的には、ブロック306において、各命令フェッチの前に、コアはIFAR(たとえば、図1のIFAR117)内のアドレスを、次の命令フェッチアドレスに対応するように更新し、後に、命令が実行パイプラインに入るとPCレジスタ(たとえば、図1のPCレジスタ118)内のアドレスを更新する。先行する命令において指定される分岐またはジャンプがない場合、コアは、IFARおよびPCレジスタ内のアドレスを、適切な時点においてそれぞれ命令フェッチ幅および命令長の分だけインクリメントする。そうでなく、先行する命令がメモリ内の不連続のアドレスにあるロケーションへの分岐またはジャンプを指定していた場合、コアは、IFAR内のアドレスを、指定されるアドレスに対応するように更新する。IFAR内のアドレスが更新されると、コアは、次の命令フェッチアドレスを評価する。
ブロック308において、評価の一部として、コアは、次の命令フェッチアドレスが、次の命令が現在の権限状態に対応するコードメモリの領域からアクセスされるべきであることを示すか、または、異なる権限状態に対応するコードメモリの領域からアクセスされるべきであることを示すかを判定する。これは、フェッチされるべき次の命令が記憶される領域を判定するために次の命令フェッチアドレスを(たとえば、図1のユーザコードBAR132内の)命令アドレス範囲指示子と(たとえば、図1のフェッチモジュール124によって)比較することによって、次いで、その領域が現在の権限状態と関連付けられるかが判定されることによって達成され得る。たとえば、現在の権限状態が管理者状態410であり、かつ次の命令フェッチアドレスがユーザコードに割り当てられるコードメモリの領域(たとえば、図2の領域218)内にある場合、コアは、次の命令フェッチアドレスは現在の権限状態と関連付けられるコードメモリの領域には対応しないと判定する。同様に、現在の権限状態がユーザ状態420であり、かつ次の命令フェッチアドレスが管理者コードに割り当てられるコードメモリの領域(たとえば、図2の領域216)内にある場合、コアは、次の命令フェッチアドレスは現在の権限状態と関連付けられるコードメモリの領域には対応しないと判定する。
次の命令フェッチアドレスが、次の命令が異なる権限状態に対応するコードメモリの領域からアクセスされるべきであることを示す場合、ブロック310において、状態遷移が適正状態遷移となるかが(たとえば、図1のフェッチモジュール124によって)さらに判定され得る。以前に説明されたように、たとえば、コアは、管理者−ユーザ状態適正遷移事象が発生した(たとえば、コアが、割り込み命令からの復帰を含む、第1のセットの命令のうちの1つを実行した)場合に、管理者状態410からユーザ状態420への状態遷移が許可されると判定し得る。同様に、コアは、ユーザ−管理者状態適正遷移事象が発生した(たとえば、コアが、ソフトウェア割り込み命令、トラップ命令などを含む、第2のセットの命令のうちの1つを実行した)、および/または、コアに、その現在の実行スレッドを中断させ、制御を管理者コードに渡し戻す例外条件(たとえば、I/O割り込み信号のアサート)が検出された場合、ユーザ状態420から管理者状態410への状態遷移が許可されると判定し得る。管理者−ユーザ状態適正遷移およびユーザ−管理者状態適正遷移は、図4において矢印430、432によって示されている。
コアが、(ブロック310において判定されるように)状態遷移が適正であると判定すると、ブロック312において、現在の権限状態を、フェッチされるべき次の命令(たとえば、ブロック310に関連して評価された命令)と関連付けられる権限状態に(たとえば、図1の状態モジュール122によって)変更することによって状態遷移が実施される。加えて、コアのスタック・ポインタ・レジスタ(たとえば、図1のSPレジスタ120)内に記憶されているスタックポインタが、代替スタック・ポインタ・レジスタ(たとえば、図1の代替SPレジスタ135)内に記憶されているスタックポインタと(たとえば、図1のSPスワップモジュール128によって)スワッピングされる。
ブロック310において状態遷移が適正でないと判定される場合、コアは、現在の権限状態を強制的に管理者状態にし(まだそうでない場合)、ブロック313において、フォールトハンドリング管理者コードが実行フォールトを生成する。たとえば、現在の権限状態が管理者状態410であり、かつ管理者コードが不正な命令(たとえば、割り込みタイプの命令からの復帰以外の命令)を使用してユーザコードへのジャンプを試みる場合、コアは(図4において矢印434によって示されるように)管理者状態410に留まり、実行フォールトが生成される。逆に、たとえば、現在の権限状態がユーザ状態420であり、かつユーザコードが不正な命令(たとえば、ソフトウェア割り込みタイプの命令以外の命令)を使用して管理者コードへのジャンプを試みる場合、コアは(図4において矢印436によって示されるように)ユーザ状態420から管理者状態410への遷移を実施し、実行フォールトが生成される。状態遷移に関連して、コアのスタック・ポインタ・レジスタ(たとえば、図1のSPレジスタ120)内のスタックポインタは、代替スタック・ポインタ・レジスタ(たとえば、図1の代替SPレジスタ135)内のスタックポインタとスワッピングされる。
一実施形態では、実行フォールトの生成は、不正命令に関連付けられるアドレス(すなわち、不正命令に対応するPCレジスタ118内のアドレス)を記憶する管理者コード(たとえば、カーネルフォールトハンドリングルーチン)を実行することを含む。たとえば、このアドレスは、フォールトの報告およびハンドリングに関連し得る他の情報とともに、保護レジスタ(たとえば、図1の不正PCレジスタ136)内に記憶され得る。フォールトが、プログラムフローに大きく割りこむことなくハンドリングされることができると仮定すると、方法は、ブロック306に戻って、IFAR内のアドレスを更新して、プログラムフローに関連付けられる命令の実行を継続し得る。そうでない場合、方法は終了し得る。
再びブロック308を参照して、現在の権限状態が管理者状態410であり、かつ次の命令アドレスが管理者コードに割り当てられるコアメモリの領域(たとえば、図2の領域216)内にある場合、コアは、次の命令アドレスは現在の権限状態と関連付けられるコードメモリの領域に対応すると判定し、方法はブロック314に進む。同様に、現在の権限状態がユーザ状態420であり、かつ次の命令アドレスがユーザコードに割り当てられるコアメモリの領域(たとえば、図2の領域218)内にある場合、コアは、次の命令アドレスは現在の権限状態と関連付けられるコードメモリの領域に対応すると判定し、方法はブロック314に進む。いずれの事例においても、図4内の矢印438、440によって示されているように、現在の権限状態は変更されない。
コアが、(ブロック308において)次の命令アドレスが現在の権限状態に関連付けられるコードメモリの領域に対応すると判定した場合、または、(ブロック312において)適正状態遷移が実施された場合、コアは、ブロック314において、IFAR内の次の命令フェッチアドレスに対応する命令をフェッチし得、命令を復号し得る。
ブロック316において、次いで、コアは、命令の実行によってデータアクセスが発生することになるかを判定する。たとえば、命令は、データメモリ内の(たとえば、図1のRAM164内の)データが記憶されるロケーションに対する参照を含み得る。命令の実行によってデータアクセスが発生しない場合、コアは、ブロック318において命令を実行し、方法は図示されるように(たとえば、プログラムフローに関連付けられる命令の実行を継続するために)反復する。
命令の実行によってデータアクセスが発生することになる場合、コア(たとえば、図1のアクセスモジュール126)は、データ・アクセス・アドレスが、現在の権限状態においてアクセスが許可されるデータメモリ(たとえば、図1のRAM164)の領域内にあるかを判定する。たとえば、以前に説明されたように、管理者コードは、管理者データ領域とユーザデータ領域の両方(たとえば、図2の領域226、228)内のデータにアクセスすることを許可され得、ユーザコードは、ユーザデータ領域ののみの(たとえば、図2の領域228)中のデータにアクセスすることを許可され得る。したがって、現在の権限状態が管理者状態である場合、コアは、いずれのデータアクセスも許可し得る。逆に、現在の権限状態がユーザ状態である場合、コアは、データ・アクセス・アドレスが管理者データ領域内のユーザデータ領域(たとえば、図2の領域228)内にある場合にのみデータアクセスを許可し得る。
一実施形態では、データ・アクセス・アドレスが位置する領域を判定するために、(たとえば、図1のアクセスモジュール126によって)データ・アクセス・アドレスと(たとえば、図1のユーザデータBAR133内の)データアドレス範囲指示子との間で比較が行われる。次いで、コアが現在の権限状態にある(たとえば、復号された命令に対応する権限状態にある)間にその領域内でデータアクセスが許可されるかが判定される。データアクセスが許可される場合、コアは、ブロック318において命令を実行し(データアクセスの実施を含む)、方法は図示されるように反復する(たとえば、ブロック306においてプログラムカウンタが更新され、方法は継続する)。
ブロック320において、データ・アクセス・アドレスが現在の権限状態においてアクセスが許可されないデータメモリ(たとえば、図1のRAM164)の領域内にあると判定される場合、コアは、現在の権限状態を強制的に管理者状態にし(まだなっていない場合)、ブロック322において、フォールトハンドリング管理者コードがアクセスフォールトを生成する。たとえば、現在の権限状態がユーザ状態420にあり、かつユーザコードが管理者データ領域(たとえば、図2の領域226)内にあるデータへのアクセスを試みる場合、コアは、(図4において矢印436によって示されているような)ユーザ状態420から管理者状態410への遷移を実施し、データアクセスが禁止され、アクセスフォールトが生成される。状態遷移に関連して、コアのスタック・ポインタ・レジスタ(たとえば、図1のSPレジスタ120)内のスタックポインタは、代替スタック・ポインタ・レジスタ(たとえば、図1の代替SPレジスタ135)内のスタックポインタとスワッピングされる。
一実施形態では、アクセスフォールトの生成は、不正命令に関連付けられるアドレスを記憶する管理者コード(たとえば、カーネルフォールトハンドリングルーチン)を実行することを含む。たとえば、このアドレスは、フォールトの報告およびハンドリングに関連し得る他の情報とともに、保護レジスタ(たとえば、図1のフォールトPCレジスタ137)内に記憶され得る。代替の実施形態では、フォールトデータアドレスが、レジスタ137内に記憶されてもよい(たとえば、レジスタ137は「不正データアドレス」レジスタであってもよい)。フォールトが、プログラムフローに大きく割りこむことなくハンドリングされることができると仮定すると、方法は、ブロック306に戻って、プログラムフローに関連付けられる命令の実行を継続し得る。そうでない場合、方法は終了し得る。
図3に示されているプロセスブロックのうちの特定のものは互いに並行してまたは他のプロセスを実行しながら実行されてもよいことを理解されたい。加えて、図3に示されているプロセスブロックの特定の順序は、実質的に同じ結果を達成しながら変更されてもよいことを理解されたい。したがって、このような変更は本発明の主題の範囲内に含まれるように意図される。
上述の実施形態は、主に2つの権限レベル(たとえば、管理者レベルおよびユーザレベル)が実装されるシステムに焦点を当てているが、実施形態は、3つ以上の権限レベルが実装されるシステム(たとえば、3つ以上の権限リングを有するリングベースのセキュリティ方式を実装するシステム)においても実装され得ることは理解されたい。本明細書における記載に基づいて、さまざまな記載されている実施形態を改変して3つ以上の権限レベルをサポートするシステム内で実施形態を実装する方法を、当業者は理解するであろう。加えて、特定のシステム構成が図1に関連して上記に記載されているが、実施形態は、他のアーキテクチャを有するシステム内でも同様に実装されてよい。たとえば、システム100は、資源および実行保護に関連して使用される値を記憶するのに使用されるさまざまな保護レジスタ130を含み、保護レジスタ130はコア110とは別個のものであり、コア110にとってバス150および/または他の接続152を通してアクセス可能であるモジュール140の一部であるが、他の実施形態は、コア110自体の中を含む他の場所に値を記憶するように構成されてもよい。さらに、実施形態は、マルチプロセッサシステム、および/または図1のものとは著しく異なるアーキテクチャを有するシステムにおいて実装されてもよい。これらのおよび他の変形形態は本発明の主題の範囲内に含まれるように意図される。
このように、資源および実行保護の方法および装置のさまざまな実施形態が上記で説明されてきた。処理システムの実施形態は、第1のモジュールと第2のモジュールとを含む。第1のモジュールは、メモリからフェッチされた命令のアドレスに基づいて、現在の権限状態が第1の権限状態であるか、または第2の権限状態であるかの知識を維持するように構成される。第2のモジュールは、次の命令フェッチアドレスを少なくとも1つの命令アドレス範囲指示子と比較することによって、次の命令フェッチアドレスが、現在の権限状態に関連付けられる第1のメモリ領域内のロケーションに対応するか、または、異なる権限状態に関連付けられる第2のメモリ領域内のロケーションに対応するかを判定するように構成される。次の命令フェッチアドレスが現在の権限状態に関連付けられる第1のメモリ領域内にない場合は、第2のモジュールは、現在の権限状態から異なる権限状態への遷移が適正である場合にのみ、次のコンピュータ命令がフェッチされることを許可する。
さらなる実施形態では、処理システムは、データ・アクセス・アドレスを少なくとも1つのデータアドレス範囲指示子と比較することによって、データ・アクセス・アドレスが第1の権限状態に関連付けられるか、または第2の権限状態に関連付けられるかを判定するとともに、現在の権限状態がデータ・アクセス・アドレスに対応するメモリロケーションへのアクセスが許可される権限状態である場合にメモリロケーションへのアクセスを許可するために、コンピュータ命令に対するデータ・アクセス・アドレスが生成されると判定するように構成される第3のモジュールを含む。
処理方法の実施形態は、第1の権限状態に関連付けられるコンピュータ命令を記憶するために割り当てられる1つまたは複数の第1のメモリ領域を画定し、第2の権限状態に関連付けられるコンピュータ命令を記憶するために割り当てられる1つまたは複数の第2のメモリ領域を画定する少なくとも1つの命令アドレス範囲指示子を記憶することを含む。方法は、メモリからフェッチされた命令のアドレスに基づいて、現在の権限状態を第1の権限状態または第2の権限状態として定義することと、次の命令フェッチアドレスを少なくとも1つの命令アドレス範囲指示子と比較することによって、次の命令フェッチアドレスが、現在の権限状態に関連付けられるメモリ領域内のロケーションに対応するか、または異なる権限状態に関連付けられるメモリ領域内のロケーションに対応するかを判定することとをさらに含む。次の命令フェッチアドレスが現在の権限状態に関連付けられるメモリ領域内のロケーションに対応しない場合、次のコンピュータ命令は、現在の権限状態から異なる権限状態への遷移が適正である場合にのみ、フェッチされることを許可される。
さらなる実施形態では、処理方法は、第1の権限状態に関連付けられるデータを記憶するために割り当てられる1つまたは複数の第3のメモリ領域を画定し、第2の権限状態に関連付けられるデータを記憶するために割り当てられる1つまたは複数の第4のメモリ領域を画定する少なくとも1つのデータアドレス範囲指示子を記憶することを含む。方法は、データ・アクセス・アドレスがコンピュータ命令によって生成されると判定することをさらに含む。データアクセスが発生すると、データ・アクセス・アドレスを少なくとも1つのデータアドレス範囲指示子と比較することによって、データ・アクセス・アドレスが第1の権限状態に関連付けられるメモリロケーションに対するものであるか、または、第2の権限状態に関連付けられるメモリロケーションに対するものであるかが判定される。現在の権限状態が、データ・アクセス・アドレスに対応するメモリロケーションに対するアクセスが許可される権限状態である場合、メモリロケーションに対するアクセスが許可される。
処理方法の別の実施形態は、現在の権限状態を管理者状態またはユーザ状態として定義することと、次の命令フェッチアドレスを命令アドレス範囲指示子と比較することによって、次の命令フェッチアドレスが、現在の権限状態に関連付けられるメモリ領域内のロケーションに対応するか、または、異なる権限状態に関連付けられるメモリ領域内のロケーションに対応するかを判定することとを含む。命令アドレス範囲指示子は、管理者コードを記憶するために割り当てられる管理者コードメモリ領域、およびユーザコードを記憶するために割り当てられるユーザコードメモリ領域を画定する。次の命令フェッチアドレスが現在の権限状態に関連付けられるメモリ領域内のロケーションに対応しない場合、次のコンピュータ命令は、現在の権限状態から異なる権限状態への遷移が適正である場合にのみ、フェッチされることを許可される。
さらなる実施形態では、処理方法は、データ・アクセス・アドレスがコンピュータ命令によって生成されると判定することと、データアクセスが発生する場合には、データ・アクセス・アドレスをデータアドレス範囲指示子と比較することによって、データ・アクセス・アドレスが管理者状態に関連付けられるメモリロケーションに対するものか、またはユーザ状態に関連付けられるメモリロケーションに対するものかを判定することとをも含む。データアドレス範囲指示子は、管理者状態に関連付けられるデータを記憶するために割り当てられる第3のメモリ領域を画定し、ユーザ状態に関連付けられるデータを記憶するために割り当てられる第4のメモリ領域を画定する。現在の権限状態が管理者状態である場合、メモリロケーションに対するアクセスが許可される。現在の権限状態がユーザ状態である場合、メモリロケーションに対するアクセスは、データ・アクセス・アドレスが第4のメモリ領域内のメモリロケーションに対するものである場合にのみ許可される。
本発明の主題の原理が特定のシステム、装置、および方法に関連して上記で説明されてきたが、この説明は例示のみを目的として為されており、本発明の主題に対する限定としてではないことは明瞭に理解されたい。本明細書において述べられ図面内に示されたさまざまな機能または処理ブロックは、ハードウェア、ファームウェア、ソフトウェアまたはそれらの任意の組み合わせにおいて実装されることができる。さらに、本明細書において採用されている表現または専門用語は説明を目的としており、限定ではない。
特定の実施形態の上記の記載は、他者が、現在の知識を適用することによって、一般的な概念から逸脱することなくさまざまな用途のためにそれを容易に改変および/または適合することができるだけ十分に本発明の主題の一般的な性質を公開している。したがって、このような適合および改変は開示されている実施形態の均等物の意図および範囲内にある。本発明の主題は、すべてのこのような代替形態、改変形態、均等物、および変形形態を、添付の特許請求の範囲の精神および広い範囲内に入るものとして包含する。

Claims (22)

  1. 処理システムであって、
    メモリからフェッチされた命令のアドレスに基づいて、現在の権限状態が第1の権限状態であるか、または第2の権限状態であるかの知識を維持するための第1のモジュールと、
    次の命令フェッチアドレスを少なくとも1つの命令アドレス範囲指示子と比較することによって、前記次の命令フェッチアドレスが、前記現在の権限状態に関連付けられる第1のメモリ領域内のロケーションに対応するか、または、異なる権限状態に関連付けられる第2のメモリ領域内のロケーションに対応するかを判定するとともに、前記次の命令フェッチアドレスが前記現在の権限状態に関連付けられる前記第1のメモリ領域内にない場合は、前記現在の権限状態から前記異なる権限状態への遷移が適正である場合にのみ、前記次のコンピュータ命令がフェッチされることを許可するための第2のモジュールとを備える、処理システム。
  2. 前記第1の権限状態は相対的に高い権限レベルを有する管理者状態であり、前記第2の権限状態は相対的に低い権限レベルを有するユーザ状態である、請求項1に記載の処理システム。
  3. 前記少なくとも1つの命令アドレス範囲指示子は、管理者状態に関連付けられる管理者コードを記憶するために割り当てられる第1のメモリ領域を規定するとともに、ユーザ状態に関連付けられるユーザコードを記憶するために割り当てられる第2のメモリ領域を規定し、
    前記第2のモジュールはさらに、前記次の命令フェッチアドレスが前記第1のメモリ領域内に入る場合には該次の命令フェッチアドレスが前記管理者状態に関連付けられるメモリ領域内にあることを判定し、および、前記次の命令フェッチアドレスが前記第2のメモリ領域内に入る場合には、該次の命令フェッチアドレスは前記ユーザ状態に関連付けられることを判定する、請求項1に記載の処理システム。
  4. 前記少なくとも1つの命令アドレス範囲指示子は、前記第1の権限状態に関連付けられるコンピュータ命令を記憶するために割り当てられる1つまたは複数の第1のメモリ領域を規定するとともに、前記第2の権限状態に関連付けられるコンピュータ命令を記憶するために割り当てられる1つまたは複数の第2のメモリ領域を規定し、
    前記第2のモジュールは、前記次の命令フェッチアドレスが前記第1のメモリ領域のうちの1つに入る場合には前記次の命令フェッチアドレスが前記第1の権限状態に関連付けられるメモリ領域内にあることを判定し、および、前記次の命令フェッチアドレスが前記第2のメモリ領域のうちの1つに入る場合には、前記次の命令フェッチアドレスは前記第2の権限状態に関連付けられることを判定する、請求項1に記載の処理システム。
  5. 前記第2のモジュールはさらに、前記現在の権限状態から前記異なる権限状態への前記遷移が適正でない場合には、フォールトを生成するとともに、前記次のコンピュータ命令がフェッチされることを不許可とする、請求項1に記載の処理システム。
  6. 前記少なくとも1つの命令アドレス範囲指示子を記憶するためのレジスタをさらに備える、請求項1に記載の処理システム。
  7. コードメモリをさらに備え、前記命令アドレス範囲指示子は、前記第1の権限状態に関連付けられるコンピュータ命令を記憶するために割り当てられる前記コードメモリ内の1つまたは複数の第1のメモリ領域を規定し、前記命令アドレス範囲指示子は、前記第2の権限状態に関連付けられるコンピュータ命令を記憶するために割り当てられる前記コードメモリ内の1つまたは複数の第2のメモリ領域を規定する、請求項1に記載の処理システム。
  8. データ・アクセス・アドレスを少なくとも1つのデータアドレス範囲指示子と比較することによって、該データ・アクセス・アドレスが前記第1の権限状態に関連付けられるか、または前記第2の権限状態に関連付けられるかを判定するとともに、前記現在の権限状態が前記データ・アクセス・アドレスに対応するメモリロケーションへのアクセスが許可される権限状態である場合に前記メモリロケーションへのアクセスを許可するために、コンピュータ命令に対する前記データ・アクセス・アドレスが生成されると判定するための第3のモジュールをさらに備える、請求項1に記載の処理システム。
  9. 前記少なくとも1つのデータアドレス範囲指示子は、前記第1の権限状態に関連付けられるデータを記憶するために割り当てられる1つまたは複数の第1のメモリ領域を規定するとともに、前記第2の権限状態に関連付けられるデータを記憶するために割り当てられる1つまたは複数の第2のメモリ領域を規定し、
    前記第3のモジュールは、前記データ・アクセス・アドレスが前記第1のメモリ領域のうちの1つに入る場合、該データ・アクセス・アドレスが前記第1の権限状態に関連付けられることと、前記データ・アクセス・アドレスが前記第2のメモリ領域のうちの1つに入る場合には、該データ・アクセス・アドレスは前記第2の権限状態に関連付けられることを判定する、請求項8に記載の処理システム。
  10. 前記少なくとも1つのデータアドレス範囲指示子を記憶するためのレジスタをさらに備える、請求項8に記載の処理システム。
  11. データメモリをさらに備え、前記データアドレス範囲指示子は、前記第1の権限状態に関連付けられるデータを記憶するために割り当てられる前記データメモリ内の1つまたは複数の第1のメモリ領域を規定し、前記データアドレス範囲指示子は、前記第2の権限状態に関連付けられるデータを記憶するために割り当てられる前記データメモリ内の1つまたは複数の第2のメモリ領域を規定する、請求項8に記載の処理システム。
  12. 前記第3のモジュールは、前記現在の権限状態が、前記データ・アクセス・アドレスに対応する前記メモリロケーションに対するアクセスが許可されない権限状態である場合、フォールトを生成するとともに、前記メモリロケーションに対するアクセスを禁止する、請求項8に記載の処理システム。
  13. 処理方法において、
    第1の権限状態に関連付けられるコンピュータ命令を記憶するために割り当てられる1つまたは複数の第1のメモリ領域を規定し、および第2の権限状態に関連付けられるコンピュータ命令を記憶するために割り当てられる1つまたは複数の第2のメモリ領域を規定する少なくとも1つの命令アドレス範囲指示子を記憶するステップと、
    メモリからフェッチされた命令のアドレスに基づいて、現在の権限状態を前記第1の権限状態または前記第2の権限状態として定義するステップと、
    次の命令フェッチアドレスを前記少なくとも1つの命令アドレス範囲指示子と比較することによって、前記次の命令フェッチアドレスが、前記現在の権限状態に関連付けられるメモリ領域内のロケーションに対応するか、または異なる権限状態に関連付けられるメモリ領域内のロケーションに対応するかを判定するステップと、
    前記次の命令フェッチアドレスが前記現在の権限状態に関連付けられる前記メモリ領域内のロケーションに対応しない場合、前記次のコンピュータ命令に、前記現在の権限状態から前記異なる権限状態への遷移が適正である場合にのみ、フェッチされることを許可するステップとを備える、処理方法。
  14. 前記第1の権限状態は相対的に高い権限レベルを有する管理者状態であり、前記第2の権限状態は相対的に低い権限レベルを有するユーザ状態である、請求項13に記載の方法。
  15. 前記現在の権限状態から前記異なる権限状態への前記遷移が適正でない場合には、フォールトを生成するとともに、前記次のコンピュータ命令がフェッチされることを不許可とするステップをさらに備える、請求項13に記載の方法。
  16. 前記第1の権限状態に関連付けられるデータを記憶するために割り当てられる1つまたは複数の第3のメモリ領域を規定し、前記第2の権限状態に関連付けられるデータを記憶するために割り当てられる1つまたは複数の第4のメモリ領域を規定する少なくとも1つのデータアドレス範囲指示子を記憶するステップをさらに備える、請求項13に記載の方法。
  17. データ・アクセス・アドレスがコンピュータ命令によって生成されると判定するステップと、
    前記データアクセスが発生すると、該データ・アクセス・アドレスを前記少なくとも1つのデータアドレス範囲指示子と比較することによって、該データ・アクセス・アドレスが前記第1の権限状態に関連付けられるメモリロケーションに対するものであるか、または、前記第2の権限状態に関連付けられるメモリロケーションに対するものであるかを判定するステップと、
    前記現在の権限状態が、前記データ・アクセス・アドレスに対応するメモリロケーションに対するアクセスが許可される権限状態である場合、前記メモリロケーションに対するアクセスを許可するステップとをさらに備える、請求項16に記載の方法。
  18. 前記現在の権限状態が、前記データ・アクセス・アドレスに対応する前記メモリロケーションに対するアクセスが許可されない権限状態である場合、フォールトを生成するとともに、前記メモリロケーションに対するアクセスを禁止するステップをさらに備える、請求項17に記載の方法。
  19. 処理方法において、
    現在の権限状態を管理者状態またはユーザ状態として定義するステップと、
    次の命令フェッチアドレスを命令アドレス範囲指示子と比較することによって、該次の命令フェッチアドレスが、前記現在の権限状態に関連付けられるメモリ領域内のロケーションに対応するか、または、異なる権限状態に関連付けられるメモリ領域内のロケーションに対応するかを判定することであって、前記命令アドレス範囲指示子は、管理者コードを記憶するために割り当てられる管理者コードメモリ領域、およびユーザコードを記憶するために割り当てられるユーザコードメモリ領域を規定する、判定するステップと、
    前記次の命令フェッチアドレスが前記現在の権限状態に関連付けられる前記メモリ領域内のロケーションに対応しない場合、前記次のコンピュータ命令に、前記現在の権限状態から前記異なる権限状態への遷移が適正である場合にのみ、フェッチされることを許可するステップとを備える、処理方法。
  20. 前記現在の権限状態が前記管理者状態であり、かつ前記異なる権限状態が前記ユーザ状態である場合は、前記管理者状態から前記ユーザ状態への前記遷移は、命令セット内の命令が実行される場合に適正であり、前記命令セットは割り込み命令からの復帰を含む、請求項19に記載の方法。
  21. 前記現在の権限状態が前記ユーザ状態であり、かつ前記異なる権限状態が前記管理者状態である場合は、前記ユーザ状態から前記管理者状態への前記遷移は、命令セット内の命令が実行される場合であって、該命令セットはソフトウェア割り込み命令およびトラップ命令を含む、場合、または、例外条件が検出される場合に適正である、請求項19に記載の方法。
  22. データ・アクセス・アドレスがコンピュータ命令によって生成されると判定するステップと、
    前記データアクセスが発生する場合、該データ・アクセス・アドレスをデータアドレス範囲指示子と比較することによって、該データ・アクセス・アドレスが前記管理者状態に関連付けられるメモリロケーションに対するものであるか、または前記ユーザ状態に関連付けられるメモリロケーションに対するものであるかを判定するステップであって、前記データアドレス範囲指示子は、前記管理者状態に関連付けられるデータを記憶するために割り当てられる第3のメモリ領域を規定し、前記ユーザ状態に関連付けられるデータを記憶するために割り当てられる第4のメモリ領域を規定する、判定するステップと、
    前記現在の権限状態が前記管理者状態である場合、前記メモリロケーションに対するアクセスを許可するステップと、
    前記現在の権限状態が前記ユーザ状態である場合、前記データ・アクセス・アドレスが前記第4のメモリ領域内のメモリロケーションに対するものであるときにのみ前記メモリロケーションに対するアクセスを許可するステップとをさらに備える、請求項19に記載の方法。
JP2013115491A 2012-05-31 2013-05-31 プロセッサ資源および実行保護の方法および装置 Pending JP2013250980A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/485,078 US9672164B2 (en) 2012-05-31 2012-05-31 Methods and systems for transitioning between a user state and a supervisor state based on a next instruction fetch address
US13/485,078 2012-05-31

Publications (1)

Publication Number Publication Date
JP2013250980A true JP2013250980A (ja) 2013-12-12

Family

ID=48576742

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013115491A Pending JP2013250980A (ja) 2012-05-31 2013-05-31 プロセッサ資源および実行保護の方法および装置

Country Status (4)

Country Link
US (2) US9672164B2 (ja)
EP (1) EP2669807B1 (ja)
JP (1) JP2013250980A (ja)
CN (1) CN103455733B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200010308A (ko) * 2017-05-25 2020-01-30 에이알엠 리미티드 자격 도메인을 관리하는 장치 및 방법
US11080058B2 (en) * 2017-06-15 2021-08-03 Arm Limited Apparatus and method for controlling a change in instruction set

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9129071B2 (en) 2012-10-24 2015-09-08 Texas Instruments Incorporated Coherence controller slot architecture allowing zero latency write commit
US10908909B2 (en) * 2015-06-09 2021-02-02 Optimum Semiconductor Technologies Inc. Processor with mode support
CN107122309A (zh) * 2016-02-25 2017-09-01 瑞昱半导体股份有限公司 电子装置及其控制方法
GB2547912B (en) 2016-03-02 2019-01-30 Advanced Risc Mach Ltd Register access control
GB2554940B (en) * 2016-10-14 2020-03-04 Imagination Tech Ltd Out-of-bounds recovery circuit
GB2554941B (en) 2016-10-14 2020-03-18 Imagination Tech Ltd Detecting out-of-bounds violations in a hardware design using formal verification
GB2564130B (en) * 2017-07-04 2020-10-07 Advanced Risc Mach Ltd An apparatus and method for controlling execution of instructions
KR102469958B1 (ko) * 2017-10-27 2022-11-25 삼성전자주식회사 블록 주소 없이 액세스되는 불휘발성 메모리 장치 및 그 동작 방법
US10831679B2 (en) * 2018-03-23 2020-11-10 Intel Corporation Systems, methods, and apparatuses for defending against cross-privilege linear probes
US10761855B2 (en) * 2018-05-02 2020-09-01 Micron Technology, Inc. Securing conditional speculative instruction execution
US10909046B2 (en) * 2018-06-15 2021-02-02 Micron Technology, Inc. Memory access determination
US11914726B2 (en) * 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
CN112395594B (zh) * 2019-08-15 2023-12-12 奇安信安全技术(珠海)有限公司 指令执行序列的处理方法、装置及设备
JP7391802B2 (ja) * 2020-09-11 2023-12-05 株式会社東芝 情報処理装置、情報処理方法及びコンピュータプログラム
JP7068595B1 (ja) * 2020-11-09 2022-05-17 ダイキン工業株式会社 管理装置
US11734017B1 (en) * 2020-12-07 2023-08-22 Waymo Llc Methods and systems for processing vehicle sensor data across multiple digital signal processing cores virtually arranged in segments based on a type of sensor
US20220283807A1 (en) * 2021-03-08 2022-09-08 Unisys Corporation System and method for the generation and storage of execution tracing information
US20220283808A1 (en) * 2021-03-08 2022-09-08 Unisys Corporation System and method for the detection of processing hot-spots
CN115083463B (zh) * 2022-08-23 2022-11-08 旋智电子科技(上海)有限公司 用于控制存储器访问权限的方法、电子系统和存储介质
CN117075969A (zh) * 2023-08-28 2023-11-17 中国科学院软件研究所 面向risc-v处理器特权指令集一致性的形式验证方法及装置
CN117453495B (zh) * 2023-12-26 2024-03-26 睿思芯科(成都)科技有限公司 支持在线纠错和调试的芯片、设计方法及相关设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040122834A1 (en) * 2002-12-13 2004-06-24 Paul Durrant Apparatus and method for switching mode in a computer system
US20050257016A1 (en) * 2004-05-17 2005-11-17 Brian Boles Digital signal controller secure memory partitioning

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5513337A (en) * 1994-05-25 1996-04-30 Intel Corporation System for protecting unauthorized memory accesses by comparing base memory address with mask bits and having attribute bits for identifying access operational mode and type
US6282657B1 (en) * 1997-09-16 2001-08-28 Safenet, Inc. Kernel mode protection
US6516395B1 (en) * 1997-11-20 2003-02-04 Advanced Micro Devices, Inc. System and method for controlling access to a privilege-partitioned address space with a fixed set of attributes
US6598050B1 (en) * 2000-02-11 2003-07-22 Integrated Device Technology, Inc. Apparatus and method for limited data sharing in a multi-tasking system
US7454453B2 (en) 2000-11-14 2008-11-18 Parkervision, Inc. Methods, systems, and computer program products for parallel correlation and applications thereof
GB2369464B (en) * 2000-11-27 2005-01-05 Advanced Risc Mach Ltd A data processing apparatus and method for saving return state
US7380106B1 (en) * 2003-02-28 2008-05-27 Xilinx, Inc. Method and system for transferring data between a register in a processor and a point-to-point communication link
US7380276B2 (en) 2004-05-20 2008-05-27 Intel Corporation Processor extensions and software verification to support type-safe language environments running with untrusted code
US7590830B2 (en) * 2004-05-28 2009-09-15 Sun Microsystems, Inc. Method and structure for concurrent branch prediction in a processor
US7406711B2 (en) * 2005-09-02 2008-07-29 Motorola, Inc. Method and apparatus for enforcing independence of processors on a single IC
US7734359B2 (en) * 2005-11-14 2010-06-08 General Electric Company Systems and methods for capturing data within an intelligent electronic device
US7681000B2 (en) * 2006-07-10 2010-03-16 Silverbrook Research Pty Ltd System for protecting sensitive data from user code in register window architecture
US7950002B2 (en) * 2006-10-02 2011-05-24 International Business Machines Corporation Testing a software product by initiating a breakpoint and executing a probe routine
GB2448149B (en) 2007-04-03 2011-05-18 Advanced Risc Mach Ltd Protected function calling
JP4514066B2 (ja) * 2008-04-28 2010-07-28 ルネサスエレクトロニクス株式会社 データ処理装置及びデータ処理装置におけるアクセス制御方法
US9325352B2 (en) * 2009-12-30 2016-04-26 Intel Deutschland Gmbh Control architectures for RF transceivers
US8301856B2 (en) * 2010-02-16 2012-10-30 Arm Limited Restricting memory areas for an instruction read in dependence upon a hardware mode and a security flag
GB2478733B (en) * 2010-03-15 2013-08-14 Advanced Risc Mach Ltd Apparatus and method for handling exception events

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040122834A1 (en) * 2002-12-13 2004-06-24 Paul Durrant Apparatus and method for switching mode in a computer system
US20050257016A1 (en) * 2004-05-17 2005-11-17 Brian Boles Digital signal controller secure memory partitioning

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200010308A (ko) * 2017-05-25 2020-01-30 에이알엠 리미티드 자격 도메인을 관리하는 장치 및 방법
KR102528701B1 (ko) * 2017-05-25 2023-05-04 에이알엠 리미티드 자격 도메인을 관리하는 장치 및 방법
US11080058B2 (en) * 2017-06-15 2021-08-03 Arm Limited Apparatus and method for controlling a change in instruction set

Also Published As

Publication number Publication date
CN103455733A (zh) 2013-12-18
US9672164B2 (en) 2017-06-06
US20130326193A1 (en) 2013-12-05
US10360162B2 (en) 2019-07-23
CN103455733B (zh) 2018-03-27
EP2669807B1 (en) 2015-07-08
EP2669807A2 (en) 2013-12-04
EP2669807A3 (en) 2014-03-19
US20170242803A1 (en) 2017-08-24

Similar Documents

Publication Publication Date Title
US10360162B2 (en) Processing systems and methods for transitioning between privilege states based on an address of a next instruction to be fetched
JP5668143B2 (ja) データ処理装置のデバッグ
US8132254B2 (en) Protecting system control registers in a data processing apparatus
EP3105681B1 (en) Region identifying operation for identifying region of a memory attribute unit corresponding to a target memory address
JP5571201B2 (ja) ハードウェアモードおよびセキュリティフラグに基づく、読み出される命令用のメモリエリアの制限
KR20210070974A (ko) 레인지 체킹 명령
US20180004943A1 (en) Systems and Methods of Asynchronous Analysis of Event Notifications for Computer Security Applications
TW201721438A (zh) 用於管理有界指標的裝置和方法
CN110574009B (zh) 用于管理对能力的使用的设备和方法
EP2885738A1 (en) A secure mechanism to switch between different domains of operation in a data processor
KR20160019454A (ko) 데이터 처리장치에서의 소프트웨어 라이브러리들의 보안 보호
US20220366037A1 (en) Domain transition disable configuration parameter
US8789169B2 (en) Microcomputer having a protection function in a register
KR20210060443A (ko) 스택 포인터의 검증
US20190089709A1 (en) Protecting supervisor mode information
EP4073635B1 (en) Intermodal calling branch instruction
WO2024027975A1 (en) Execution of instructions from trusted and untrusted memories
TW202343257A (zh) 記憶體管理

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160519

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170518

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170613

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170912

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180227