(57)【特許請求の範囲】
【請求項１】
メモリと、
１つまたは複数のセキュアモードと１つまたは複数の非セキュアモードとを含む複数の動作モードを有する、プログラム命令に応答して処理動作を実行する処理回路であって、前記メモリが、
（ｉ）前記１つまたは複数のセキュアモードにおいてアクセス可能であり、且つ前記１つまたは複数の非セキュアモードにおいてアクセス不可能である、１つまたは複数のセキュア領域と、
（ｉｉ）前記１つまたは複数のセキュアモードにおいてアクセス可能であり、且つ前記１つまたは複数の非セキュアモードにおいてアクセス可能である、１つまたは複数の非セキュア領域とを備える処理回路と、
ページテーブルデータに応答して前記メモリに対するアクセスを管理するメモリ制御回路と、
を備え、
前記ページテーブルデータは、前記処理回路が前記１つまたは複数のセキュアモードで動作中、前記メモリに対するアクセスを管理するために用いられるセキュアモードページテーブルデータと、前記処理回路が前記１つまたは複数の非セキュアモードで動作中、前記メモリに対するアクセスを管理するために用いられる非セキュアモードページテーブルデータとを含み、
前記セキュアモードページテーブルデータは、第１ページテーブルレベルにおける第１レベルページテーブルが、前記第１ページテーブルレベルよりもヒエラルキーにおいてより低い第２ページテーブルレベルにおけるそれぞれの第２レベルページテーブルをポイントするページテーブルエントリーを含むよう、関連するページテーブルレベルが構成された状態である、ページテーブルの前記ヒエラルキーを含み、
前記第１レベルページテーブルの各ページテーブルエントリーは、前記ページテーブルエントリーによりポイントされる第２レベルページテーブルが前記１つまたは複数のセキュア領域内かまたは前記１つまたは複数の非セキュア領域内に格納されているかどうかを示すテーブルセキュリティフィールドを含む、
データ処理装置。
【請求項２】
前記メモリ制御回路は、ページテーブルウォーク動作を実行するよう構成され、前記ページテーブルウォーク動作においては、前記ヒエラルキーで前記ページテーブルレベルにおける降順で一連のページテーブルエントリーがアクセスされることにより、管理されるメモリアクセス動作の属性データが取得され、前記一連のページテーブルエントリーのうちのいずれかが、前記一連のページテーブルエントリーのうちの１つが前記１つまたは複数の非セキュア領域内に格納されていることを示す前記テーブルセキュリティフィールドの値を有する場合、前記メモリ制御回路は前記メモリアクセス動作を非セキュアメモリアクセス動作として特定する、請求項１に記載の装置。
【請求項３】
前記メモリ制御回路は、非セキュアテーブル属性を、前記メモリアクセス動作に対して取得された前記属性データ内に含めることにより、前記メモリアクセス動作を非セキュアメモリアクセス動作として特定する、請求項２に記載の装置。
【請求項４】
前記メモリアクセス動作が、前記メモリ制御回路により非セキュアメモリアクセス動作として特定され、前記メモリアクセス動作が、前記１つまたは複数のセキュア領域に向けられる場合、前記メモリは前記メモリアクセス動作をブロックする、請求項２および請求項３のうちのいずれか１つに記載の装置。
【請求項５】
前記ページテーブルデータは、メモリアクセス動作を受けるメモリアドレスに関連する属性データを提供し、前記処理回路は複数のソフトウェア処理を実行するよう構成され、前記メモリアドレスに対する前記属性データは、前記複数のソフトウェア処理のいずれかからのメモリアクセスに対して用いられるグローバル属性データか、または、個々のソフトウェア処理からのメモリアクセスに対して用いられる非グローバル属性データであるかのどちらかであり、前記メモリ制御回路はページテーブルウォーク動作を実行するよう構成され、前記ページテーブルウォーク動作においては、前記ヒエラルキーで前記ページテーブルレベルにおける降順で一連のページテーブルエントリーがアクセスされることにより、管理されるメモリアクセス動作の属性データが取得され、前記一連のページテーブルエントリーのうちのいずれかが、前記一連のページテーブルエントリーのうちの１つが前記１つまたは複数の非セキュア領域内に格納されていることを示す前記テーブルセキュリティフィールドの値を有する場合、前記メモリ制御回路は、あたかも非グローバル属性データであるかのように、前記属性データを取り扱うよう構成された、請求項１から請求項４のいずれか１つに記載の装置。
【請求項６】
前記ページテーブルデータは、メモリアクセス動作を受けるメモリアドレスと関連する属性データを提供し、前記属性データは、前記メモリアクセス動作の仮想メモリアドレスと、前記メモリ内の物理メモリアドレスとの間のマッピングを提供する、請求項１から請求項５のいずれか１つに記載の装置。
【請求項７】
前記１つまたは複数のセキュア領域の格納容量は、前記１つまたは複数の非セキュア領域の格納容量よりも小さい、請求項１から請求項６のいずれか１つに記載の装置。
【請求項８】
前記１つまたは複数の非セキュア領域のうちの少なくともいくつかは、第１集積回路および前記処理回路内に形成され、前記メモリ制御回路および前記１つまたは複数のセキュア領域は、前記第１集積回路とは別の第２集積回路内に形成された、請求項１から請求項７のいずれか１つに記載の装置。
【請求項９】
前記セキュアモードページテーブルデータの前記ヒエラルキーのエントリーポイントをポイントするベースアドレス値を格納するよう構成されたセキュア変換テーブルベースレジスタを含み、前記セキュア変換テーブルベースレジスタは、前記セキュアモードページテーブルデータの全部が前記１つまたは複数の非セキュア領域内に格納されているかどうかを示すセキュリティフィールドを格納するよう構成された、請求項１から請求項８のいずれか１つに記載の装置。
【請求項１０】
データを格納するためのメモリ手段と、
１つまたは複数のセキュアモードと１つまたは複数の非セキュアモードとを含む複数の動作モードを有する、プログラム命令のストリームに応答して処理動作を実行する処理手段であって、前記メモリ手段は、
（ｉ）前記１つまたは複数のセキュアモードにおいてアクセス可能であり、且つ前記１つまたは複数の非セキュアモードにおいてアクセス不可能である、１つまたは複数のセキュア領域と、
（ｉｉ）前記１つまたは複数のセキュアモードにおいてアクセス可能であり、且つ前記１つまたは複数の非セキュアモードにおいてアクセス可能である、１つまたは複数の非セキュア領域と、を備える、処理手段と、
ページテーブルデータに応答して前記メモリ手段に対するアクセスを管理するためのメモリ制御手段と
を備え、
前記ページテーブルデータは、前記処理手段が前記１つまたは複数のセキュアモードで動作中、前記メモリ手段に対するアクセスを管理するために用いられるセキュアモードページテーブルデータと、前記処理手段が前記１つまたは複数の非セキュアモードで動作中、前記メモリ手段に対するアクセスを管理するために用いられる非セキュアモードページテーブルデータとを備え、
前記セキュアモードページテーブルデータは、第１ページテーブルレベルにおける第１レベルページテーブルが、前記第１ページテーブルレベルよりもヒエラルキーにおいてより低い第２ページテーブルレベルにおけるそれぞれの第２レベルページテーブルをポイントするページテーブルエントリーを含むよう、関連するページテーブルレベルが構成された状態である、ページテーブルの前記ヒエラルキーを含み、
前記第１レベルページテーブルの各ページテーブルエントリーは、前記ページテーブルエントリーによりポイントされる第２レベルページテーブルが前記１つまたは複数のセキュア領域内か、または前記１つまたは複数の非セキュア領域内に格納されているかどうかを示すテーブルセキュリティフィールドを含む、データ処理装置。
【請求項１１】
１つまたは複数のセキュアモードと１つまたは複数の非セキュアモードとを含む複数の動作モードを有する、処理回路と関連付けられたメモリに対するアクセスを管理する方法であって、前記メモリは前記１つまたは複数のセキュアモードにおいてアクセス可能であり、且つ前記１つまたは複数の非セキュアモードにおいてアクセス不可能である、１つまたは複数のセキュア領域と、前記１つまたは複数のセキュアモードにおいてアクセス可能であり、且つ前記１つまたは複数の非セキュアモードにおいてアクセス可能である、１つまたは複数の非セキュア領域と、を備え、
前記処理回路が前記１つまたは複数のセキュアモードで動作中、セキュアモードページテーブルデータに応答して、前記メモリに対するアクセスを管理することと、
前記処理回路が前記１つまたは複数の非セキュアモードで動作中、非セキュアモードページテーブルデータに応答して、前記メモリに対するアクセスを管理することと、を含み、
前記セキュアモードページテーブルデータは、第１ページテーブルレベルにおける第１レベルページテーブルが、前記第１ページテーブルレベルよりもヒエラルキーにおいてより低い第２ページテーブルレベルにおけるそれぞれの第２レベルページテーブルをポイントするページテーブルエントリーを含むように、関連するページテーブルレベルが構成された状態である、ページテーブルの前記ヒエラルキーを含み、
前記第１レベルページテーブルの各ページテーブルエントリーは、前記ページテーブルエントリーによりポイントされる第２レベルページテーブルが前記１つまたは複数のセキュア領域内か、または前記１つまたは複数の非セキュア領域内に格納されていることを示すテーブルセキュリティフィールドを含む、方法。
【請求項１２】
ページテーブルウォーク動作を実行することを含み、前記ページテーブルウォーク動作においては、前記ヒエラルキーで前記ページテーブルレベルにおける降順で一連のページテーブルエントリーがアクセスされることにより、管理されるメモリアクセス動作の属性データが取得され、前記一連のページテーブルエントリーのうちのいずれかが、前記一連のページテーブルエントリーのうちの１つが前記１つまたは複数の非セキュア領域内に格納されていることを示す前記テーブルセキュリティフィールドの値を有する場合、前記メモリアクセス動作は非セキュアメモリアクセス動作として特定される、請求項１１に記載の方法。
【請求項１３】
非セキュアテーブル属性を、前記メモリアクセス動作に対して取得された前記属性データ内に含めることにより、前記メモリアクセス動作を非セキュアメモリアクセス動作として特定することを含む、請求項１２に記載の方法。
【請求項１４】
前記メモリアクセス動作が非セキュアメモリアクセス動作として特定され、前記メモリアクセス動作が前記１つまたは複数のセキュア領域に向けられる場合、前記メモリは前記メモリアクセス動作をブロックする、請求項１２および請求項１３のいずれか１つに記載の方法。
【請求項１５】
前記セキュアモードページテーブルデータおよび前記非セキュアモードページテーブルデータを含むページテーブルデータは、メモリアクセス動作を受けるメモリアドレスに関連する属性データを提供し、前記処理回路は複数のソフトウェア処理を実行し、前記メモリアドレスに対する前記属性データは、前記複数のソフトウェア処理のいずれかからのメモリアクセスに対して用いられるグローバル属性データか、または、個々のソフトウェア処理からのメモリアクセスに対して用いられる非グローバル属性データであるかのどちらかであり、ページテーブルウォーク動作を実行し、前記ページテーブルウォーク動作においては、前記ヒエラルキーで前記ページテーブルレベルにおける降順で一連のページテーブルエントリーがアクセスされることにより、管理されるメモリアクセス動作の属性データが取得され、前記一連のページテーブルエントリーのうちのいずれかが、前記一連のページテーブルエントリーのうちの１つが前記１つまたは複数の非セキュア領域内に格納されていることを示す前記テーブルセキュリティフィールドの値を有する場合、あたかも非グローバル属性データであるかのように、前記属性データを取り扱う、請求項１１から請求項１４のいずれか１つに記載の方法。
【請求項１６】
前記セキュアモードページテーブルデータおよび前記非セキュアモードページテーブルデータを含むページテーブルデータは、メモリアクセス動作を受けるメモリアドレスと関連する属性データを提供し、前記属性データは、前記メモリアクセス動作の仮想メモリアドレスと、前記メモリ内のメモリアドレスとの間のマッピングを提供する、請求項１１から請求項１５のいずれか１つに記載の方法。
【請求項１７】
前記１つまたは複数のセキュア領域の格納容量は、前記１つまたは複数の非セキュア領域の格納容量よりも小さい、請求項１１から請求項１６のいずれか１つに記載の方法。
【請求項１８】
前記１つまたは複数の非セキュア領域のうちの少なくともいくつかは、第１集積回路および前記処理回路内に形成され、前記１つまたは複数のセキュア領域は、前記第１集積回路とは別の第２集積回路内に形成された、請求項１１から請求項１７のいずれか１つに記載の方法。
【請求項１９】
セキュア変換テーブルベースレジスタは、前記セキュアモードページテーブルデータの前記ヒエラルキーのエントリーポイントをポイントするベースアドレス値を格納し、前記セキュア変換テーブルベースレジスタは、前記セキュアモードページテーブルデータの全部が前記１つまたは複数の非セキュア領域内に格納されているかどうかを示すセキュリティフィールドを格納する、請求項１１から請求項１８のいずれか１つに記載の方法。
【請求項２０】
コンピュータ装置上で実行されるコンピュータプログラムを格納した非一時的記憶媒体であって、前記コンピュータプログラムが請求項１から請求項１０のいずれか１つに記載のデータ処理装置にしたがう命令実行環境を実現する、非一時記憶媒体。
【請求項２１】
メモリと、
１つまたは複数のセキュアモードと１つまたは複数の非セキュアモードとを含む複数の動作モードを有する、プログラム命令に応答して処理動作を実行する処理回路であって、前記メモリが、
（ｉ）前記１つまたは複数のセキュアモードにおいてアクセス可能であり、且つ前記１つまたは複数の非セキュアモードにおいてアクセス不可能である、１つまたは複数のセキュア領域と、
（ｉｉ）前記１つまたは複数のセキュアモードにおいてアクセス可能であり、且つ前記１つまたは複数の非セキュアモードにおいてアクセス可能である、１つまたは複数の非セキュア領域とを備える処理回路と、
ページテーブルデータに応答して前記メモリに対するアクセスを管理するメモリ制御回路と、
を備え、
前記メモリ制御回路は、１つまたは複数のセキュアモードのうちの１つで動作中、前記メモリ制御回路が、前記１つまたは複数の非セキュア領域内に格納されたページテーブルデータが前記１つまたは複数のセキュアモードのうちの１つで動作するメモリアクセス要求に対するアクセスを管理するために用いられていることを示す信号を受信した場合、前記メモリ制御回路は、前記メモリアクセスを、あたかも前記メモリアクセスが前記１つまたは複数の非セキュアモードのうちの１つで実行中に生じたかのように前記メモリアクセスを取り扱うよう構成された、
データ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理システムに関する。さらに詳細には、本発明は、１つまたは複数のセキュア動作モードと１つまたは複数の非セキュア動作モードを有し、且つセキュアモードでの動作中はメモリへのアクセスを管理するためにセキュアモードページテーブルデータを利用する、データ処理システムに関する。
【背景技術】
【０００２】
１つまたは複数のセキュア動作モードおよび１つまたは複数の非セキュア動作モードを有する、英国ケンブリッジのＡＲＭ社のＴｒｕｓｔＺｏｎｅアーキテクチャを搭載するデータ処理システム等のデータ処理システムが提供されていることは、周知である。係るシステム内のメモリ（メモリアドレス空間）には、一般に、１つまたは複数のセキュア領域と、１つまたは複数の非セキュア領域とが提供される。なお、セキュア領域はセキュア動作モードにおいてアクセス可能であり、且つ非セキュア動作モードにおいてアクセス不可能であり、非セキュア領域はセキュア動作モードおよび非セキュア動作モードの両方においてアクセス可能である。このように、暗号鍵、財務データ、その他等の機密情報に関するデータはセキュア領域内に格納され、セキュア動作モードにおいて実行される信頼性の高い／セキュアなアプリケーションに対してのみアクセス可能であり得る。係るデータ処理システムは、非セキュアモードで実行されるが、メモリの非セキュア領域に対するアクセスのみを有する、非セキュアアプリケーションもサポートする。係るシステムは、例えば、暗号鍵等の機密上重要な秘密情報がメモリのセキュア領域内でセキュリティ保護され且つセキュアモードで実行されるセキュアなアプリケーションに対してのみアクセス可能であり得る、デジタル著作権管理において有用である一方で、係るシステムは、メモリのセキュア領域内に保持されたセキュア情報／機密情報を直接アクセスする必要がなく、且つ非セキュアモードで実行され、メモリの非セキュア領域を利用する、メディアプレーヤまたは関連のないアプリケーションもサポートする。
【０００３】
１つまたは複数のセキュアモードで動作中にメモリのセキュア領域に対するアクセスを管理するために、セキュアモードページテーブルデータが提供されていることが知られている。セキュアモードページテーブルデータは、メモリ管理ユニットまたはメモリ保護ユニット等のメモリ管理回路により、メモリを制御／管理するために用いられる。メモリ管理ユニットは、例えば、セキュアモードで生成された仮想アドレスを物理アドレスに変換するために用いられ得る。セキュアモードでアクセスされるメモリ内の領域は、セキュア領域と非セキュア領域との両方を含み得る。生じ得る問題は、メモリのセキュア領域に対するアクセスを管理するために用いられるセキュアモードページテーブルデータが不正に書き変えられ、その結果、例えば、セキュアモードにおけるアプリケーションが、当初の意図から逸脱してしまい、メモリのセキュア領域よりもむしろ、メモリの非セキュア領域にアクセスすることである。これにより、システムのセキュリティが危険にさらされることとなる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
この問題に対処するにあたり、セキュアモードページテーブルデータの全部をメモリのセキュア領域内に格納することが可能である。このようにして、セキュアモードページテーブルデータは、システムのセキュリティを免れようとする不正な書き変えから保護される。しかし、このアプローチにおける問題点は、セキュアモードページテーブルデータのサイズが大きく、メモリの１つまたは複数のセキュア領域のメモリ容量が不利に大量に消費されてしまうことである。したがって、メモリのセキュア領域は、例えば、暗号鍵、財務データ、セキュアプログラム命令コード等のセキュアデータ自体は比較的容量が小さいにも関わらず、単にセキュアモードページテーブルデータを記憶するためにのみ、大量の格納容量を有することが必要とされ得ることとなってしまう。
【課題を解決するための手段】
【０００５】
１つの態様から観ると、本発明は、
メモリと、
１つまたは複数のセキュアモードと１つまたは複数の非セキュアモードとを含む複数の動作モードを有する、プログラム命令のストリームに応答して処理動作を実行する処理回路であって、前記メモリが、
（ｉ）前記１つまたは複数のセキュアモードにおいてアクセス可能であり、且つ前記１つまたは複数の非セキュアモードにおいてアクセス不可能である、１つまたは複数のセキュア領域と、
（ｉｉ）前記１つまたは複数のセキュアモードにおいてアクセス可能であり、且つ前記１つまたは複数の非セキュアモードにおいてアクセス可能である、１つまたは複数の非セキュア領域とを備える処理回路と、
ページテーブルデータに応答して、前記メモリに対するアクセスを管理する、メモリ制御回路と、
を備え、
前記ページテーブルデータは、前記処理回路が前記１つまたは複数のセキュアモードでの動作中に前記メモリに対するアクセスを管理するために用いられるセキュアモードページテーブルデータと、前記処理回路が前記１つまたは複数の非セキュアモードで動作中に前記メモリに対するアクセスを管理するために用いられる非セキュアモードページテーブルデータとを備え、
前記セキュアモードページテーブルデータは、第１ページテーブルレベルにおける第１レベルページテーブルが、前記第１ページテーブルレベルよりもヒエラルキーにおいてより低い第２ページテーブルレベルにおけるそれぞれの第２レベルページテーブルをポイントするページテーブルエントリーを含むよう、関連するページテーブルレベルが構成された状態である、ページテーブルのヒエラルキーを備え、
前記第１レベルページテーブルの各ページテーブルエントリーは、前記ページテーブルエントリーによりポイントされる第２レベルページテーブルが前記１つまたは複数のセキュア領域内かまたは前記１つまたは複数の非セキュア領域内に格納されているかどうかを示すテーブルセキュリティフィールドを含む、
データ処理装置を提供する。
【０００６】
本発明は、１つまたは複数のセキュア動作モードがそれ自体のセキュアモードページテーブルデータを要求し得る一方で、このセキュアモードページテーブルデータの全部が、メモリのセキュア領域であり、および／または機密情報に関するデータ／秘密データを格納するメモリの領域に関するとは限らないことを認識する。したがって、セキュアモードページテーブルデータの全部がメモリのセキュア領域内に格納される必要があるというわけではない。メモリのセキュア領域に対するアクセスを管理するために用いられるセキュアモードページテーブルデータの部分はメモリのセキュア領域内に格納され得るが、メモリの非セキュア領域に対するアクセスを管理するために用いられるセキュアモードページテーブルデータの部分はメモリの非セキュア領域内に格納され得る。セキュアモードページテーブルデータをこのようにメモリのセキュア領域と非セキュア領域とに区分することをサポートおよび管理するために、ページテーブル内において少なくともいくつかのレベルのページテーブルの各ページテーブルエントリーは、そのエントリーによりポイントされるさらなるページテーブルがメモリのセキュア領域内かまたは非セキュア領域内に格納されるかどうかを示すテーブルセキュリティフィールドを含む。このように、ヒエラルキー的構造を有するセキュアモードページテーブルデータが、メモリ制御回路（メモリ管理ユニットまたはメモリ保護ユニット等の）によりアクセスされるので、そのアクセスにより用いられるセキュアモードページテーブルデータのいずれかがメモリの非セキュア領域内に格納されるかどうかについての判定がなされ得る。上記で参照された第１レベルページテーブルおよび第２レベルページテーブルが、ページテーブルヒエラルキー内のいずれかの特定の位置にある必要はなく、特に、レベル１またはレベル２のページテーブルである必要がないことが理解できるであろう。
【０００７】
本発明のいくつかの実施形態においては、メモリ制御回路は、ページテーブルウォーク動作を実施するよう構成される。なお、ページテーブルウォーク動作においては、ヒエラルキーにおいて一連のページテーブルレベルが降順でアクセスされ、それにより管理されるメモリアクセス動作の属性が取得される。このページテーブルウォークが実施される間に、アクセスされる一連のページテーブルエントリーのうちのいずれかが、アクセスされる一連のページテーブルエントリーの内の１つがメモリの非セキュア領域内に格納されることを示すテーブルセキュリティフィールドの値を有するならば、メモリ制御回路は、実行されるメモリアクセス動作を非セキュアメモリアクセス動作として認識することにより応答する。セキュリティを保護するために、セキュアモードで動作中にメモリアクセス動作に関するページテーブルデータの内のいずれかがメモリの非セキュア領域内に格納される場合、関連するメモリアクセス動作は、たとえセキュアモードで動作するプログラムにより開始されたものであったとしても、非セキュアメモリアクセス動作として取り扱われることとなる。
【０００８】
いくつかの実施形態においては、メモリ制御回路は、非セキュアであるテーブル属性をメモリアクセス動作と関連付けられた属性データ内に含むことにより、メモリアクセス動作を非セキュアメモリアクセス動作として認識し得る。この非セキュアテーブル属性は、メモリアクセスがセキュアモード内の動作から発したものであることを示す異なる属性とは別であり得る。この非セキュアなテーブル属性は、非セキュアメモリ内に格納されたページテーブルがそのメモリアクセス動作を管理するために用いられたことを示す。
【０００９】
メモリアクセス動作が非セキュアメモリアクセス動作であるとメモリ制御回路により認識され、且つメモリアクセス動作がメモリ内の１つまたは複数のセキュア領域に向けられた場合、メモリは、そのメモリアクセス動作をブロックすることにより応答し得る。メモリアクセス動作が非セキュアである場合、例えば、非セキュアメモリに格納されたページテーブルエントリーがそのメモリアクセス動作の管理の一部として用いられる場合、メモリがメモリのセキュア領域に対するアクセスを許可することは危険である。
【００１０】
処理回路は複数のソフトウェア処理を実行し得る。これらのソフトウェア処理のそれぞれは、それ自体のページテーブルデータを利用し得る。あるいは、いくつかのページテーブルデータは、複数のプロセスに適用され、グローバル属性により、これら複数のソフトウェア処理のうちのいずれかからのメモリアクセスに使用されるものとして認識されてもよい。他の属性データは非グローバルであり、非グローバル属性データに接続された個々のソフトウェア処理のみからのメモリアクセスに用いられ得る。
【００１１】
グローバル属性データおよび非グローバル属性データの両方をサポートするシステムの状況においては、メモリ管理回路は、そのメモリアクセスに関連するページテーブルウォークの一部としてアクセスされる一連のページテーブルエントリーのうちのいずれかがメモリの非セキュア領域に格納されるならば、属性データが強制的に非グローバル属性データとして取り扱われるよう構成され得る。したがって、メモリアクセスに関連付けられたページテーブルのうちのいずれかがメモリの非セキュア領域内に格納されるならば、メモリ制御回路は、それに反する内容を示すページテーブルデータ内のあらゆる情報をオーバーライドし、関連する属性データを強制的に非グローバル属性データとする。メモリの非セキュア領域に関連するページテーブルウォークから生成されたグローバル属性を許可することは、システムにおけるセキュリティ上の脆弱性を生じさせることとなる。
【００１２】
属性データが様々な異なる形態を取り得ること、例えば、どの特権動作レベルが関連するデータ（メモリページ）に対して許可されたアクセスであるか、その関連するデータが読み出し専用であるかどうか、その関連するデータがキャッシュ可能であるかどうか等を属性データが示し得ることが理解されるであろう。かかる使用は、アドレス変換がまったく実施されないメモリ保護ユニット（ＭＰＵ：ｍｅｍｏｒｙ  ｐｒｏｔｅｃｔｉｏｎ  ｕｎｉｔ）の状況においてなされ得る。本技術は、属性データが、メモリアクセス動作の仮想メモリアドレスと、そのメモリアクセス動作に対応するメモリ内の物理メモリアドレスとの間のマッピングを提供する場合に特に有用である。係るマッピングを保護することは、セキュリティ保護上重要である。
【００１３】
本技術は、１つまたは複数のセキュア領域の格納容量が１つまたは複数の非セキュア領域の格納容量より小さい実施形態において用いられ得る。このことは、特に、１つまたは複数の非セキュア領域が、処理回路、メモリ制御回路、および１つまたは複数のセキュア領域が形成された集積回路とは別の集積回路内に形成される場合に成り立つ。
【００１４】
本発明の実施形態は、セキュアモードページテーブルデータのヒエラルキーのエントリーポイントをポイントするベースアドレス値を格納するよう構成されたセキュアな変換テーブルベースレジスタも提供し得る。係るセキュアな変換テーブルベースレジスタは、セキュアモードページテーブルデータの全部が１つまたは複数の非セキュア領域に格納されているかどうかを示すセキュリティフィールドを含み得る。
【００１５】
他の態様から観ると、本発明は、
データを格納するためのメモリ手段と、
１つまたは複数のセキュアモードと１つまたは複数の非セキュアモードとを含む複数の動作モードを有する、プログラム命令のストリームに応答して処理動作を実行する処理手段であって、前記メモリ手段が、
（ｉ）前記１つまたは複数のセキュアモードにおいてアクセス可能であり且つ前記１つまたは複数の非セキュアモードにおいてアクセス不可能である、１つまたは複数のセキュア領域と、
（ｉｉ）前記１つまたは複数のセキュアモードにおいてアクセス可能であり且つ前記１つまたは複数の非セキュアモードにおいてアクセス可能である、１つまたは複数の非セキュア領域とを含む、処理手段と、
ページテーブルデータに応答して前記メモリ手段に対するアクセスを管理するメモリ制御手段と、
を備え、
前記ページテーブルデータは、前記処理手段が前記１つまたは複数のセキュアモードで動作中に前記メモリ手段に対するアクセスを管理するために用いられるセキュアモードページテーブルデータと、前記処理手段が前記１つまたは複数の非セキュアモードで動作中に前記メモリ手段に対するアクセスを管理するために用いられる非セキュアモードページテーブルデータとを含み、
前記セキュアモードページテーブルデータは、第１ページテーブルレベルにおける第１レベルページテーブルが、前記第１ページテーブルレベルよりもヒエラルキーにおいてより低い第２ページテーブルレベルにおけるそれぞれの第２レベルページテーブルをポイントするページテーブルエントリーを含むよう、関連するページテーブルレベルが構成された状態である、ページテーブルのヒエラルキーを含み、
前記第１レベルページテーブルのそれぞれのページテーブルエントリーは、前記ページテーブルエントリーによりポイントされる第２レベルページテーブルが前記１つまたは複数のセキュア領域内かまたは前記１つまたは複数の非セキュア領域内に格納されているかどうかを示すテーブルセキュリティフィールドを含む、データ処理装置を提供する。
【００１６】
さらなる態様から観ると、本発明は、１つまたは複数のセキュアモードと１つまたは複数の非セキュアモードを含む複数の動作モードを有する処理回路と関連付けられたメモリであって、前記１つまたは複数のセキュアモードにおいてアクセス可能であり且つ前記１つまたは複数の非セキュアモードにおいてアクセス不可能である１つまたは複数のセキュア領域と、前記１つまたは複数のセキュアモードにおいてアクセス可能であり且つ前記１つまたは複数の非セキュアモードにおいてアクセス可能である１つまたは複数の非セキュア領域を含むメモリに対するアクセスを管理する方法であって、
前記処理回路が前記１つまたは複数のセキュアモードで動作中、セキュアモードページテーブルデータに応答して前記メモリに対するアクセスを管理することと、
前記処理回路が前記１つまたは複数の非セキュアモードで動作中、非セキュアモードページテーブルデータに応答して前記メモリに対するアクセスを管理することと、を備え、
前記セキュアモードページテーブルデータは、第１ページテーブルレベルにおける第１レベルページテーブルが、前記第１ページテーブルレベルよりも前記ヒエラルキーにおいてより低い第２ページテーブルレベルにおけるそれぞれの第２レベルページテーブルをポイントするページテーブルエントリーを含むよう、関連するページテーブルレベルが構成された状態の、ページテーブルのヒエラルキーを含み、
前記第１レベルページテーブルの各ページテーブルエントリーは、前記ページテーブルエントリーによりポイントされる第２レベルページテーブルが前記１つまたは複数のセキュア領域内かまたは前記１つまたは複数の非セキュア領域内に格納されているかどうかを示すテーブルセキュリティフィールドを含む、方法を提供する。
【００１７】
さらなる態様から観ると、本発明は、
メモリと、
１つまたは複数のセキュアモードと１つまたは複数の非セキュアモードとを含む複数の動作モードを有する、プログラム命令に応答して処理動作を実行する処理回路であって、前記メモリが、
（ｉ）前記１つまたは複数のセキュアモードにおいてアクセス可能であり且つ前記１つまたは複数の非セキュアモードにおいてアクセス不可能である、１つまたは複数のセキュア領域と、
（ｉｉ）前記１つまたは複数のセキュアモードにおいてアクセス可能であり且つ前記１つまたは複数の非セキュアモードにおいてアクセス可能である、１つまたは複数の非セキュア領域とを含む処理回路と、
ページテーブルデータに応答して、前記メモリに対するアクセスを管理する、メモリ制御回路と、
を備え、
前記メモリ制御回路は、前記１つまたは複数のセキュアモードのうちの１つで動作し、且つ前記メモリ制御回路が、前記１つまたは複数の非セキュア領域内に格納されたページテーブルデータが、前記１つまたは複数のセキュアモードのうちの１つで動作するメモリアクセス要求に対するアクセスを管理するために用いられたことを示す信号を受信する場合、前記メモリ制御回路は前記メモリアクセスを、あたかも前記メモリアクセスが前記１つまたは複数の非セキュアモードのうちの１つにおいて動作中に生じたかのように処理するよう構成された、データ処理装置を提供する。
【００１８】
本発明の実施形態は、以下の添付の図面を参照しながら、例示としてのみ説明される。
【図面の簡単な説明】
【００１９】
【図１】処理回路と、メモリ管理回路と、セキュア領域および非セキュア領域の両方を備えるメモリとを組み込むデータ処理システムの概略図である。
【図２】１つまたは複数のセキュアモードと１つまたは複数の非セキュアモードとを含む、図１に示す処理回路の動作モードの概略図である。
【図３】セキュアモードで動作中のメモリアクセスを管理するための属性データを取得する、セキュアモードページテーブルデータにおけるページテーブルウォークの概略図である。
【図４】テーブルセキュリティフィールドと、グローバル／非グローバル属性フィールドとを含む、ページテーブルエントリーの概略図である。
【図５】トランスレーションルックアサイドバッファ内に格納された属性データを用いることにより、またはページテーブルウォークを介して属性データにアクセスすることにより、メモリアクセス動作を管理するプロセスを概略的に示すフローチャートである。
【図６】ページテーブルウォークの実行中にアクセスされる異なるページテーブルエントリー内に格納されたテーブルセキュリティフィールドデータに応答して回復された属性データを制御するためにページテーブルウォークの一部として実行されるプロセスを概略的に示すフローチャートである。
【図７】メモリアクセス要求に応答して、メモリアクセス要求に関するテーブル属性およびセキュリティモード属性に応じてメモリアクセス要求を許可またはブロックするセキュアなメモリ回路の動作を概略的に示すフローチャートである。
【図８】メモリアクセス要求に関する処理のいくつかを概略的に示すフローチャートである。
【図９】仮想機械実装の概略図である。
【発明を実施するための形態】
【００２０】
図１は、システムオンチップ集積回路４と、別個の非セキュアなメモリ集積回路６とを組み込んだ、データ処理装置２を概略的に示す。システムオンチップ集積回路４は、プロセッサ８の形態の処理回路を備える。なお、プロセッサ８は、命令パイプライン１０において受信されたプログラム命令Ｉに応答して、レジスタバンク１４、乗算器１６、シフト器１８、および加算器２０を含むデータパスを構成および制御する制御信号を生成する命令デコーダ１２を制御する。プロセッサ８は、プログラム命令Ｉの制御下でデータ処理動作を実行する。これらのデータ処理動作は、システムのメモリアドレス空間内におけるメモリアドレスからの読み出し、またはメモリアドレスへの書き込みを検索するメモリアクセス動作を含む。メモリアドレス空間の全部が、データ値を格納する能力を有する実際の物理メモリと関連付けられるわけではなく、例えば、メモリアドレス空間のうちには、使用不可能であるものもある。メモリアドレス空間の一部は、システムオンチップ集積回路４内に提供されたセキュアメモリ２２に対応する。メモリアドレス空間の一部は、非セキュアメモリ６に対応する。このように、セキュアメモリ２２は１つまたは複数のメモリのセキュア領域を提供し、非セキュアメモリ６は１つまたは複数のメモリの非セキュア領域を提供する。システムオンチップ集積回路４内には、メモリ管理ユニット２４（メモリ制御回路の形態）、外部メモリインターフェース２６およびキャッシュメモリ２８も提供される。
【００２１】
プロセッサ８は仮想アドレスを用いてメモリアクセスを生成する。キャッシュメモリ２８は、これらの仮想アドレスを用いて、キャッシュされたデータ値（データおよび命令の両方であり得る）を格納する。キャッシュミスが発生すると、アクセスされるデータ値は、セキュアメモリ２２または非セキュアメモリ６のうちの１つから読み出されることが必要となる。メモリ管理ユニット２４は、セキュアメモリ２２および非セキュアメモリ６が両方とも物理アドレスを有する装置であるため、仮想アドレスから物理アドレスへの変換を実施する。メモリ管理ユニット２４は、最近アクセスされたメモリのページの属性データを含むトランスレーションルックアサイドバッファ３０を備える。アクセスされる仮想アドレスが、トランスレーションルックアサイドバッファ３０内のエントリーのうちの１つに対応しない場合、ページテーブルデータに対するフルアクセスすなわちページテーブルウォークが実行される必要がある。
【００２２】
プロセッサ８は、１つまたは複数のセキュアモードおよび１つまたは複数の非セキュアモードにおいて動作可能である。セキュアモードでの実行時、これは、プロセッサ８からメモリ管理ユニット２４へと送信されるセキュアモード信号Ｓにより示される。２組のページテーブルデータが提供される。セキュアモードのうちの１つにおいて実行されるとき、セキュアモードページテーブルデータが用いられる。非セキュアモードのうちの１つにおいて実行されるとき、非セキュアモードページテーブルデータが用いられる。２つの変換テーブルベースレジスタ３２がメモリ管理ユニット２４内に提供され、それぞれが、セキュアモードページテーブルデータの開始点および非セキュアモードページテーブルデータの開始点に対するポインタを提供する。ページテーブルウォークは、関連する変換テーブルベースレジスタ値を読み取り、適切なページテーブルデータの組の開始点アドレスを見出し、次いで、そのヒエラルキー形態を用いて、ページテーブルウォークと従来称される方法で、このページテーブルデータをアクセスすることにより実施される。係るページテーブルウォークは、さらに下記で検討および説明されるであろう。
【００２３】
図１に見られるように、非セキュアモードページテーブルデータ３４は全部、非セキュアメモリ６内に格納される。セキュアモードページテーブルデータは、２つの部分において格納される。セキュアモードページテーブルデータの第１部分３６はセキュアメモリ２２内に格納され、セキュアモードページテーブルデータの第２部分３８は非セキュアメモリ６内に格納される。セキュアモードページテーブルデータの第２部分３８を非セキュアメモリ６内に格納する能力が存在することにより、システム全体が依然としてセキュアメモリ２２内および非セキュアメモリ６内に格納されたセキュアモードページテーブルデータの全セットを保持する一方で、他の目的のために用いられるセキュアメモリ２２の格納容量を節約し、オンチップセキュアメモリ２２をより小さくすることが可能となる。
【００２４】
セキュアメモリ２２内に格納されたセキュアモードページテーブルデータの第１部分３６は、通常は、セキュアモードのうちの１つのセキュアモード内で実行されるプログラムのみによりアクセスされるよう適切に予約されたセキュリティ保護に関するデータを格納するメモリの領域に関するページテーブルデータである。セキュアモードページテーブルデータの第２部分３８は、セキュアモードで動作中にアクセスされたとき機密情報に関わるデータを格納せず、且つセキュリティ上の脆弱性がこのセキュアモードページテーブルデータの第２部分３８を非セキュアメモリ６内に格納することを許可することにより提供されない、メモリの領域に関するものである。
【００２５】
図２は、図１に示すプロセッサ８の動作モードを概略的に示すものである。これらのモードは、１つまたは複数のセキュアモード４０と、１つまたは複数の非セキュアモード４２と、セキュアモード４０のうちの１つと非セキュアモード４２の１つとの間の遷移を許可するために提供されたモニタモード４４とを含む。１つまたは複数のセキュアモードは異なる特権レベルに関するモードを含み得るが、全部が、例えばセキュアユーザモードおよびセキュア特権モード等の、セキュアモードであることが当業者に理解される。同様に、例えば非セキュアユーザモードおよび非セキュア特権モード等の、異なる特権レベルのモードが非セキュアモード４２内に提供され得る。セキュアモードにおける動作時、プロセッサ８は、そのメモリアクセスを管理するためにセキュアモードページテーブルデータを利用する。非セキュアモードにおける動作時、プロセッサ８はそのメモリアクセスを管理するために非セキュアモードページテーブルデータを使用する。モニタモード４４はセキュアモードページテーブルデータを使用する。これらの動作モードは、データ処理システム２内のハードウェアが、現在の動作モードに応じて、例えばメモリ領域、制御レジスタ等のリソースに対して異なるレベルのアクセスを提供するため、ハードウェアモードである。
【００２６】
図３は、セキュアモードページテーブルデータにおけるページテーブルウォーク動作を概略的に示す。セキュアモードページテーブルデータは、レベルのヒエラルキーに配置された、複数のページテーブル４６、４８、５０、５２、５４、５６、および５８から形成される。ヒエラルキーにおける最高レベルにおいて、４つのエントリーを含むページテーブル４６が存在する。これがレベル０である。ページテーブル４８〜５８のそれぞれが、５１２個のページテーブルエントリーを含む。各ページテーブル４８〜５８は、従来は、サイズが４ｋＢである。すなわち、各ページテーブルエントリーは６４ビットである。
【００２７】
セキュアモードにおいて適用される変換テーブルベースレジスタ３２は、ページテーブル４６の開始点アドレスをポイントする。メモリアクセスが管理される仮想アドレス内のビットのフィールドは、次いで、ページテーブル４６内におけるページテーブルエントリー６６のうちの１つを選択するためのインデックス値を提供するために用いられる。例えば、仮想アドレスＶＡ［３１：３０］の上位２ビットは、ページテーブル４６内の４つのページテーブルエントリーのうちの１つを特定するためのインデックスを提供する。このページテーブルエントリー６６は、次の９ビットの仮想アドレスＶＡ［２９：２１］と組み合わされることにより、レベル１テーブル内の次のページテーブルエントリー７０に対するポインタが提供される、２０ビットフィールド（ＮｅｘｔＴａｂＩｅＰｔｒ＜３１：１２＞）を含む（最下位ビットがゼロであると仮定する）。ページテーブルエントリー７０は、他の９ビットの仮想アドレスＶＡ［２０：１２］と組み合わされることにより、レベル２テーブル内の次のページテーブルエントリー７４に対するポインタが提供される、２０ビットフィールド（ＮｅｘｔＴａｂｌｅＰｔｒ＜３１：１２＞）も含む。ページテーブルエントリー７４は、仮想アドレスＶＡ［１１：０］の最下位１２ビットと組み合わされることにより、この変換の結果、生成される全物理アドレスＰＡ［３１：０］が形成される、物理アドレス［３１：１２］の上位２０ビットを保持する。例えば４８ビット仮想アドレス等のより大きい仮想アドレスは、より多くのレベルのページテーブルウォークを必要とし得ることが理解されるであろう。ページテーブルエントリー６６は、そのページテーブルエントリー６６によりポイントされるページテーブル５０がメモリの非セキュア領域内かまたはメモリのセキュア領域内に格納されているかどうかを示すテーブルセキュリティフィールド６８を含む他の属性ビットも含む。このテーブルセキュリティフィールドはＮＳＴａｂｌｅビットである。これは、セットされた場合、ポイントされる次のページテーブルがメモリの非セキュア領域内に格納され（そしてバスアクセスが非セキュアであるとして取り扱われ）ることを示す。
【００２８】
図３に示す例においては、レベル０ページテーブル４６は、これもまたメモリのセキュア領域内に格納されたレベル１ページテーブル５０をポイントする。ページテーブルエントリー７０は、ページテーブルエントリー７０によりポイントされる次のページテーブル５６が、メモリのセキュア領域内かまたはメモリの非セキュア領域内に格納されるかどうかを示すそれ自体のテーブルセキュリティフィールド７２を含む。ページテーブルエントリー７０は、追加的な属性ビットも含み得る。
【００２９】
この例においては、セキュアページテーブルに対するページテーブルヒエラルキーのレベル２におけるページテーブル５６は、メモリの非セキュア領域内に格納される。このことは、ページテーブルエントリー７０内のテーブルセキュリティフィールド７２が設定された（ＮＳＴａｂｌｅ＝１）こと、すなわちポイントされる次のページテーブルが非セキュア領域内に格納されること、を示す。
【００３０】
テーブルセキュリティフィールド（すなわち、ＮＳＴａｂｌｅビット）がページテーブルウォーク内においてアクセスされる次のページテーブルに関することが理解されるであろう。このように、セキュア領域に格納されたページテーブルから非セキュア領域に格納されたページテーブルへと移動するとき、この変化を示すために用いられるテーブルセキュリティフィールドは、セキュア領域内に格納され、したがって、悪意ある改変から保護される。
【００３１】
ページテーブルウォークの各段階において、仮想アドレスの一部分は、仮想アドレスのその部分を変換し、ポインタを、その変換で用いられる次のページテーブルへのポインタをアクセスするために用いられるページテーブルエントリーを選択するためのインデックス値として用いられる。全ページテーブルウォークと関連付けられたページテーブルエントリー６６、７０、および７４のうちの少なくとも１つは、メモリ管理ユニット２４により用いられる、そのメモリアクセスと関連付けられたメモリ属性を含む。これらは、そのページテーブルウォークにより提供される仮想アドレスから物理アドレスへの変換が、全プロセッサにより用いられるグローバルな変換であるかまたはそのページテーブルウォークを現在トリガするプロセスに対して用いられる非グローバルな変換であるかどうか等の属性を含み得る。さらなる属性は、当業者に知られているように、関連するページテーブルが読み出し専用、キャッシュ可能、特権専用であるかどうかを含み得る。
【００３２】
図４は、図３に示すページテーブル４６〜５２のうちの１つ内のページテーブルエントリー７８を概略的に示す。レベル２におけるページテーブルエントリーは、ＮｅｘｔＴａｂＩｅＰｔｒ＜３１：１２＞フィールドに代わって、物理アドレスＰＡ［３１：１２］の２０ビットと同一であり得る。このページテーブルエントリー７８は、仮想アドレスからの９ビットを用いてインデックス（すなわち、ページテーブル内のその位置がアクセスのために選択され得るよう特定）される、関連するページテーブル内の位置に配置される。インデックスとして用いられる仮想アドレスの９ビットは、ページテーブルヒエラルキー内のどのレベルが、前述したページテーブルエントリー７８を含むページテーブルと関連付けられるかに依存する。ページテーブルエントリー７８は、ページテーブルエントリー７８内でＮｅｘｔＴａｂｌｅＰｔｒ＜３１：１２＞フィールドによりポイントされるページテーブルがメモリの非セキュア領域内かまたはメモリのセキュア領域内に格納されるかどうかを示すビットを格納するテーブルセキュリティフィールド８０を含む。ページテーブルエントリー７８は、そのページテーブルエントリーが、すべてのプロセッサにより用いられる属性データを与えるグローバルなページテーブルエントリーであるかまたはページテーブルウォークを現在トリガする処理に対してのみ用いられる属性データを与える非グローバルなページテーブルエントリーであるかどうかを示すフィールド８２も含む。他の属性８４は、ページテーブルエントリー７８内に格納され、係る属性はキャッシュ可能性、読み出し専用状態、その他を示し得る。
【００３３】
ページテーブルのヒエラルキー内におけるより低レベルのページテーブルエントリーが後続する各ページテーブルエントリー７８は、テーブルセキュリティフィールド８０を含むことが理解されるであろう。ヒエラルキーのレベル２における最も低いレベルのページテーブルは、任意の後続するページテーブルをポイントせず、したがって、テーブルセキュリティフィールドを含む必要がない。グローバル属性８２および他の属性８４は、ページテーブルウォークにおいて検索されるためにはページテーブル４６〜５８のうちの１つにおいて提供されていれば十分であり、すべてのページテーブルに格納されている必要はない。グローバル属性および他の属性８４がヒエラルキーにおける最も低いレベル（この例においてはレベル２に相当する）に格納されることは標準的である。なぜなら、これにより、メモリ属性がどのように特徴付けられるかおよび制御されるかに対する最も細かい精度の制御が得られるためである。ページテーブルヒエラルキーにおけるより高いレベルにおけるメモリ属性は、メモリの異なる領域の属性間において粗い精度レベルの差異を提供するために用いられ得る。
【００３４】
ページテーブルヒエラルキーが低くなるにしたがって、メモリアドレス空間内の精度レベルがより小さくなることが、当業者により理解される。したがって、通常、ヒエラルキー内の各レベルにおいて、ページテーブルの個数に増加が見られる。全メモリアドレス空間が最も細かい精度にマッピングされるならば、ページテーブルデータのサイズが大きくなる。メモリアドレス空間の全部が必ずしもフルレベルの精度にマッピングされるとは限らず、また、利用不可能としてまたはデフォルトのメモリ属性を有するとしてメモリのより高いレベルにおいてマークされるとは限らない。
【００３５】
図５は、セキュアモードでの動作時にメモリ管理ユニット２４によるメモリアクセスの処理を概略的に示すフローチャートである（セキュアモードにおいて動作中、バス上の信号により示されるように、少なくとも、「１」のＮＳＴａｂｌｅ値に出会うまでは、メモリアクセスはセキュアとして取り扱われるべきである）。ステップ８６において、メモリ管理ユニットはデータアクセスが発生するまで待機する。データアクセスが発生すると、セキュアメモリ２２に対するアクセスまたは非セキュアメモリ６に対するアクセスが必要となる。このことにより、プロセッサ８により生成された仮想アドレスから、セキュアメモリ２２および非セキュアメモリ６により使用される物理アドレスへの変換が必要となる。ステップ８８において、トランスレーションルックアサイドバッファ３０において、アクセスされる仮想アドレスに関するアドレスマッチが存在するかどうかを判定するために参照が実行される。アクセスされる仮想メモリのページが以前アクセスされたことがある場合、関連する変換データ（仮想アドレスから物理アドレスへの変換データ、キャッシュ可能状態、読み出し専用状態等の、メモリ属性データ）がトランスレーションルックアサイドバッファ３０内に格納されている可能性が存在し、実際に格納されている場合は、アドレスマッチが発生する。ステップ８８においてアドレスマッチが存在する場合、処理はステップ９０へと進行する。異なる処理識別子（ＡＳＩＤ）に対応する、いくつかのアドレスマッチがステップ８８において存在し得ることが理解されるであろう。これらは、ＴＬＢ３０内に格納された処理識別子により、ステップ９０において区別され、現在の処理とマッチするエントリーは（もし存在する場合）、ヒットが返された処理になり得るであろう。ステップ８８においてアドレスマッチが存在しない場合、ページテーブルウォークが必要となり、ページテーブルウォークは、図３および図４に関して前述した方法にしたがって、ステップ９２において実行される。
【００３６】
ステップ９２におけるページテーブルウォークが実行された後、新しいページテーブルデータ（ＮＳＴビットを含む）はステップ９４においてトランスレーションルックアサイドバッファ３０内に格納される。次いで、ステップ９６は、プロセッサ８が現在セキュア動作モードにあることを、および、メモリアクセスが、非セキュアメモリ６内に格納された少なくともいくつかのページテーブルデータを含むページテーブルデータを用いて形成されたかどうかを示す信号とともに取得された変換データを用いて生成された物理アドレスを用いて、メモリアクセスをセキュアメモリ２２または非セキュアメモリ６に対して発行する。
【００３７】
ステップ８８において、トランスレーションルックアサイドバッファ３０内においてアクセスされる仮想アドレスに対するマッチが存在することが判定された場合、ステップ９０は、プロセッサ８により現在実行される処理が、トランスレーションルックアサイドバッファ３０内においてステップ８８でアドレスがマッチした各エントリーと関連する処理とマッチするかどうかを判定する。係るマッチが存在する場合、ステップ９８は、関連するトランスレーションルックアサイドバッファエントリーを使用のために選択し、処理はステップ９６へと進行する。ステップ９０においてマッチが存在しなかった場合、処理はステップ１００へと進行し、ステップ１００において、ステップ８８におけるアドレスマッチによるトランスレーションルックアサイドバッファエントリーがすべての処理により用いられるグローバルエントリーとしてマークされているかどうかについての判定がなされる。当該エントリーがグローバルとしてマークされている場合、処理は再びステップ９８へと進行する。当該エントリーがグローバルとしてマークされていない場合、処理はステップ９２へと進行し、ページテーブルウォークを実行する。
【００３８】
図５に示す処理がシーケンシャルな処理として示されていることが理解できるであろう。実際には、メモリ管理ユニット２４の動作は、異なる順序で、および／または異なるレベルの並列性で、実行され得る。それにも関わらず、図５のフローチャートは、実行される全般的なレベルの処理および制御の１つの概観を示すものである。この処理の一部または全部がソフトウェアにより実行され得ることが理解される。
【００３９】
図６は、ページテーブルウォークの実行時におけるメモリアクセスに関するテーブルセキュリティ状態（ＮＳＴビット）の設定の制御を示す（このテーブルセキュリティ状態はやがては図１のアクセス制御回路１２８に戻される）。このテーブルセキュリティ状態（ＮＳＴビット）は、メモリの非セキュア領域に格納されたいずれかのセキュアページテーブルがセキュアモードページテーブルデータにおけるページテーブルウォークが実行される間に用いられるかどうかを示す。ステップ１０２において、処理は、セキュアなページテーブルウォークが必要とされることを待機する。係るウォークが必要となったとき、ステップ１０４は、テーブルセキュリティ状態の初期値を「０」に設定する。次いで、ステップ１０６は、セキュアモードページテーブルデータのレベル０ページテーブル４６に対するポインタを格納する変換テーブルベースレジスタが、セキュアモードページテーブルデータの全部がメモリの非セキュア領域内に格納されることを示すかどうかを判定する。ＴＴＢＲ３２は、この目的に対して特定のビットを提供する。ステップ１０６において、セキュアモードページテーブルデータの全部が非セキュアメモリ内に格納されることが判定された場合、ステップ１０８は、ＮＳＴビットを「１」に設定する。すなわち、アクセスは、プロセッサにより非セキュアとして取り扱われるべきである。ステップ１０６において、セキュアモードページテーブルデータの全部がメモリの非セキュア領域内に格納されるとは限らないことが判定された場合、ステップ１０８は回避される。
【００４０】
ステップ１１０において、実行中のメモリアクセスに関連する仮想アドレスの一部は、セキュアメモリ２２内に格納された、レベル０のページテーブル４６内にインデックスするために用いられる。次いで、このレベルのページテーブルエントリー６６が読み出され、ステップ１１２は、ページテーブルエントリー６６によりポイントされるレベル１のページテーブル５０が非セキュアメモリ内に格納されることがテーブルセキュリティフィールド６８により示されるかどうかを判定する。ページテーブル５０が非セキュアメモリ６内に格納されることが示された場合、ステップ１１４は、ステップ１１４において、テーブルセキュリティ状態ＮＳＴを「１」に設定するであろう。ステップ１１２において読み出されたテーブルセキュリティフィールド６８が設定されない場合、ステップ１１４は回避され、処理はステップ１１６へと進行する。ステップ１１６においては、次レベルのヒエラルキー（すなわちレベル１）内におけるテーブルセキュリティフィールドのチェックが実行され、次のページテーブル５６が非セキュアメモリ内に格納されることが、ページテーブルエントリー７０内のテーブルセキュリティフィールド７２により示される場合、テーブルセキュリティ状態は「１」に設定される。この例において、レベル２がヒエラルキーにおいて最も低いレベルであるため、より低いレベルに関するテーブルセキュリティフィールドは必要とされない。
【００４１】
ページテーブルウォークの実行時にアクセスされるページテーブル４６、５０、または５６のいずれかが非セキュアメモリ内に格納される場合、メモリアクセスに関連するテーブルセキュリティ状態ＮＳＴは、ステップ１０４において設定された初期開始値の「０」から、ステップ１０８、１１４、または１１８のいずれかで設定された値「１」に変化しているであろう。ＮＳＴビットの設定は、ハードウェア制御下で行われるページテーブルウォークの実行時にメモリ管理ユニット２４により決定され、したがって、セキュアな判定である。
【００４２】
ステップ１２２は、テーブルセキュリティ状態ＮＳＴが「１」に等しいかどうかを判定する。テーブル属性ビットＮＳＴが「１」に等しい場合、ステップ１２４は、トランスレーションルックアサイドバッファ３０内に格納されるよう戻された属性データが、属性データがセキュアモードページテーブルデータ自体内でどのようにマークされるかに関わりなく、現在の処理に対してのみ用いられるよう、強制的にＴＬＢエントリーを非グローバルとしてマークする。ステップ１２６において、メモリ属性データ、ＮＳＴビット、およびＳビット（システムがセキュアモードにあるかどうかを示す）はトランスレーションルックアサイドバッファ３０に戻され、セキュアメモリ２２または非セキュアメモリ６のうちの１つに対するメモリアクセスを形成および制御するためにも用いられる。
【００４３】
図７は、セキュアメモリ２２と関連する、アクセス制御回路１２８により実行される、セキュアメモリ２２に関連する処理を概略的に示すフローチャートである。ステップ１３０において、アクセス制御回路１２８はメモリアクセス要求を受け取る。ステップ１３２は、メモリアクセス要求が、そのメモリアクセス要求を発したプロセッサ８がセキュアモード４０のうちの１つで動作することを示す信号Ｓを伴うかどうかを判定する。メモリアクセス要求は、そのメモリアクセス要求を生成するために用いられたページテーブルのいずれかがメモリの非セキュア領域内に格納されているかどうかを示すテーブル属性ビットＮＳＴとも関連する。ステップ１３２における判定により、プロセッサ８がセキュアモードにある（すなわち、Ｓは０に等しい）こと、および、テーブル属性ビットが「０」であること（非セキュアモードページテーブルデータがそのメモリアクセス要求を生成するときに用いられていないことを示す）がＳビットにより示される場合、アクセス制御回路１２８により、ステップ１３４において、セキュアメモリ２２に対するメモリアクセスのみを通し且つ許可することが確実に行われる。アクセスは、例えば、標準的な技術により、特権レベルに基づいても、さらにゲート制御され得る。メモリアクセス要求がこれらの組み合わされたテストに失敗する場合、処理はステップ１３６へと進行する。ステップ１３６は、アクセスが読み出しであるかどうかを判定する。アクセスが読み出しである場合、ステップ１３８はその読み出しに対して全部０値を返す（あるいは、オペレーティングシステムが適切な反応を処理することができるよう、例外をトリガする）。アクセスが読み出しでない場合、ステップ１４０は書込動作をブロックする。
【００４４】
図１に戻ると、セキュアモードページテーブルデータの第１部分３６がセキュアメモリ２２内に格納されていることがわかる。セキュアモードページテーブルデータの第２部分３８は非セキュアメモリ６内に格納される。非セキュアメモリ６は、別の集積回路内に提供され、 セキュアメモリ２２よりも大きい格納容量を有する。セキュアモードページテーブルデータの第１部分３６は、セキュアメモリ２２内に格納され且つ機密情報に関するデータを格納するページに関連するページテーブルデータであり得る。一方、セキュアモードページテーブルデータの第２部分３８は、非セキュアメモリ６内に格納され且つ機密情報に関しないデータを含むページに関連し得る。セキュアメモリ２２内の制限された格納空間は、セキュアモードページテーブルデータの第２部分３８を格納するときに消費されず、替わって、セキュアモードページテーブルデータの第２部分３８は非セキュアメモリ６内に格納される。セキュアモードページテーブルデータの一部が非セキュアメモリ６内に格納されているかどうかを示すために、セキュアモードページテーブルデータをマークすることは、メモリアクセスが、セキュアモードページテーブルデータの一部を形成するにも関わらず、そのメモリアクセスと関連するページテーブルデータのいずれかが非セキュアメモリ６内に格納されるかどうかを示すテーブル属性ビットＮＳＴと関連付けられるよう、制御が実行されることを可能にする。このようにして、セキュアモードページテーブルデータの第１部分３６はセキュアメモリ２２内にセキュアな状態で保持され得る。なお、セキュアメモリ２２内においては、セキュアモードページテーブルデータの第１部分３６は悪意ある改変から保護され、テーブル属性ビットＮＳＴはハードウェア制御下で生成される。それにより、テーブル属性ビットＮＳＴは、セキュアモードページテーブルデータの第１部分３６のみを参照することによりメモリ管理ユニット２４により検出され得、且つセキュアモードページテーブルデータの第２部分３８を悪意ある改変を加えることで改変され得ない方法で、非セキュアメモリ６内に格納されたページテーブルデータが関与することを示す。
【００４５】
上述の技術を用いることにより、ＮＳＴａｂｌｅビットおよび関連する機構の存在を意識することおよびそれらを操作することの必要がない従来のソフトウェアを使用することが可能となることが理解されるであろう。例えば、非セキュアメモリがマッピングされた周辺装置または非セキュアな共有ライブラリコード等の、ページテーブルデータの部分を再利用することも可能となる。
【００４６】
図８は、メモリアクセス要求に関する処理のいくつかを概略的に示すフローチャートである。ステップ１４２において、処理はメモリアクセス要求を受け取るまで待機する。係るメモリアクセス要求は、ロード命令、格納命令、命令フェッチ動作、その他の結果である。メモリアクセスは、ランダムアクセスメモリ、リードオンリーメモリ、またはその他等の内部に格納されたメモリの一部分に対するものであり得るか、またはメモリアドレス空間内のメモリがマッピングされた周辺装置に対してであり得る。これらは、当業者には周知である。メモリアクセス要求がステップ１４２において受け取られると、処理はステップ１４４へと進行する。ステップ１４４において、トランスレーションルックアサイドバッファ３０において検索が実行され、メモリアクセス要求に関連する仮想アドレスに対応する、トランスレーションルックアサイドバッファ３０内のエントリーが存在するかどうかが判定される。トランスレーションルックアサイドバッファ３０が、直近で使用された変換に対して迅速にアクセスするためのマイクロトランスレーションルックアサイドバッファ、および、直近ではないが使用されたより多数の変換データが格納された、より大きいトランスレーションルックアサイドバッファを含む等の、トランスレーションルックアサイドバッファヒエラルキーに対応し得ることが理解されるであろう。トランスレーションルックアサイドバッファは、許可データ、ＮＳＴビットデータ、セキュアモードデータ、処理識別子（ＡＳＩＤ）、変換がグローバルであるか非グローバルであるかを示すデータ、その他を格納する等の、仮想アドレスから物理アドレスへの変換を可能にするデータよりも、より多数のデータを格納することが理解されるであろう。仮想アドレスがトランスレーションルックアサイドバッファ内に対応するデータを有するかどうかを判定するときに実行されたマッチは、仮想アドレスのビットを考慮するだけではなく、メモリ要求がセキュアモードから発せられたか、または非セキュアモードから発せられたかどうかを示すセキュアビットＳもマッチし得る。トランスレーションルックアサイドバッファ内のエントリーに対するＮＳＴビットも読み出される可能性があり、例えば、これが設定されると、グローバルとしてマークされたエントリーは、非グローバルへとダウングレードされ得る（すなわち、マッチする処理が特定された状態の、単一の処理に対して適用される）。
【００４７】
ステップ１４４において、トランスレーションルックアサイドバッファがマッチするエントリーを有さないことが判定されると、処理はステップ１４６へと進行する。ステップ１４６において、セキュアモードページテーブルデータまたは非セキュアモードページテーブルデータのうちの関連する１つにおいてページテーブルウォークが実行される。このページテーブルウォークは図３、図５、および図６に関して前述したものと同一であり得る。マイクロプロセッサがセキュアモードである場合、ページテーブルウォークアクセスは、少なくともＮＳTａble＝１の値が見出されるまで、セキュアとしてマークされる。ステップ１４８において、ページが物理メモリに対して正常にマッピングされたかどうかどうかの判定がなされる。正常なマッピングがなされなかった場合、処理はステップ１５０へと進行し、ステップ１５０において、例外処理がトリガされる。正常なマッピングがなされた場合、処理はステップ１５２へと進行し、ステップ１５２において、物理アドレス変換データ、ＮＳＴビットおよび他のアクセス許可ビットが、将来の使用のために、トランスレーションルックアサイドバッファ内に格納される。
【００４８】
ステップ１４４において、トランスレーションルックアサイドバッファにおいてマッチが存在すると判定された場合、処理はステップ１５４へと進行し、ステップ１５４において、マッチデータがトランスレーションルックアサイドバッファから読み出される。このマッチデータは、物理アドレス変換データと、アクセス許可と、ＮＳＴビットとを含む。ステップ１５２およびステップ１５４の両方の後、処理はステップ１５６へと進行し、ステップ１５６において、メモリアクセスが許可されていることが、取得されたアクセス許可データにより示されるかどうかの判定がなされる。例えば、特権モードで動作中、プロセッサが現在ユーザモードであり、したがって、アクセスが許可されるべきではない場合にのみ、メモリの一部がアクセス可能とマークされ得る。アクセスが、受け取られたアクセス許可により許可されない場合、処理はステップ１５０へと進行し、ステップ１５０において、例外が再びトリガされる。アクセス許可が、アクセスが許可されるべきであることを示す場合、処理はステップ１５８へと進行し、ステップ１５８において、物理アドレスが物理アドレス変換データおよびメモリアクセスの本来の仮想アドレスを用いて形成される。ステップ１６０は、ＮＳＴビットが０に設定されたかどうか、および、セキュアモードで実行中のプロセスからメモリアクセスが発せられたことがセキュアビットＳにより示されたかどうかを判定する。これらの条件が両方とも満足されない場合、処理はステップ１６２へと進行し、ステップ１６２において、メモリアクセスは、全物理アドレスを用いて非セキュアアクセスとして実行されるよう、試みられる。ステップ１６０の条件の両方が満足される場合、処理はステップ１６４へと進行し、ステップ１６４において、メモリアクセスを、全物理アドレスを用いてセキュアアクセスとして実行するよう、試みられる。ステップ１６２およびステップ１６４の両方の後、ステップ１６６は、物理アドレスがセキュアメモリかまたはセキュア周辺装置の領域に対応するかどうかを判定する。物理アドレスがセキュアメモリまたはセキュア周辺装置に対応しない場合、処理はステップ１６８へと進行し、ステップ１６８において、読み出しまたは書き込みのいずれであれ、メモリアクセスが実行される。ステップ１６６において、アドレスがセキュアメモリまたはセキュア周辺装置の領域に対応することが判定された場合、ステップ１７０は、アクセス制御回路１２８を用いて、ＮＳＴビットが０の値を持つという意味で、トランザクションがセキュアであるかどうかを判定する。トランザクションがセキュアである場合、処理は再びステップ１６８へと進行し、ステップ１６８において、アクセスが実行される。トランザクションがセキュアでない場合、処理はステップ１７２へと進行し、ステップ１７２において、アクセスが書き込みブロックされているか、またはアクセスが読み出しである場合、ゼロ値が返される。
【００４９】
図９は、用いられ得る仮想機械の実装を示す。これまでに説明してきた実施形態は、関連する技術をサポートする特定の処理ハードウェアを操作するための装置および方法の形で、本発明を具体化するが、ハードウェア装置のいわゆる仮想機械の実装を提供することも可能である。これらの仮想機械の実装は、仮想機械プログラム５１０をサポートするホストオペレーティングシステム５２０を通常、実行するホストプロセッサ５３０上で実行される。通常、大きい強力なプロセッサが、妥当なスピードで実行される仮想機械の実装を提供するために必要となる。しかし、係るアプローチは、互換性のために、または再利用の理由のために他のプロセッサに対してネイティブであるコードを実行することが望まれる場合等の特定の状況において正当化される。仮想機械プログラム５１０は、アプリケーションプログラム（またはオペレーティングシステム）５００を実行することにより、実際のハードウェア装置によりプログラムを実行することにより提供されるのと同一の結果を提供する能力を有する。したがって、上述したメモリアクセスの制御を含むプログラム命令は、仮想機械プログラム５１０を用いて、アプリケーションプログラム５００内から実行され得る。
【符号の説明】
【００５０】
４６、４８、５０、５２、５４、５６、５８  ページテーブル
６６、７０  ページテーブルエントリー
６８、７２  テーブルセキュリティフィールド
【図１】
0005581403.tif 000002
【図２】
0005581403.tif 000003
【図３】
0005581403.tif 000004
【図４】
0005581403.tif 000005
【図５】
0005581403.tif 000006
【図６】
0005581403.tif 000007
【図７】
0005581403.tif 000008
【図８】
0005581403.tif 000009
【図９】
0005581403.tif 000010