(57)【要約】【課題】メインプロセッサの管理機能の効果が低減する問題がある。【解決手段】メインメモリ１０６に動作可能に接続されるとともに、それぞれがローカルメモリに関連付けられた複数のプロセッサと、プロセッサによる、メインメモリ１０６内のデータおよびプロセッサ内のデータに対するアクセスを制御可能な少なくとも一つのメインプロセッサ１０２Ｅと、を含むマルチプロセッサシステムにおける方法および装置を提供する。その方法および装置は、少なくとも一つのプロセッサ１０２Ａがセキュアな動作モードに入り、メインプロセッサ１０２Ｅを用いて、複数のプロセッサのうちの前記少なくとも一つのプロセッサ１０２Ａ以外の他のプロセッサとは異なる少なくとも一つの別のプロセッサ１０２Ｃに関連付けられたデータに対して、前記少なくとも一つのプロセッサ１０２以外の他のプロセッサがアクセスすることを禁止する。【選択図】図２
2006221633.tif 000002
【特許請求の範囲】
【請求項１】
メインメモリに動作可能に接続されるとともに、それぞれが自身に関連付けられたローカルメモリを有し、それぞれが前記ローカルメモリ内での使用を目的として前記メインメモリから少なくともあるデータを要求できる複数のプロセッサと、
前記複数のプロセッサによる、前記メインメモリ内および前記複数のプロセッサ内のデータに対するアクセスを制御できる少なくとも一つのメインプロセッサと、
を備え、
前記複数のプロセッサのうちの少なくとも一つのプロセッサは、前記複数のプロセッサのうちの他のプロセッサにより開始されたところの、当該少なくとも一つのプロセッサ自身との間でのデータ転送に対する要求は受け付けないが、前記メインプロセッサによる前記アクセス制御に従うことを条件に、当該少なくとも一つのプロセッサ自身により開始されたところのそのデータ転送は受け付けるセキュアな動作モードに入る機能を有し、
前記メインプロセッサは、前記複数のプロセッサのうちの前記少なくとも一つのプロセッサ以外の他のプロセッサとは異なる少なくとも一つの別のプロセッサに関連付けられたデータに対して、前記少なくとも一つのプロセッサ以外の他のプロセッサがアクセスすることを禁止する機能を有することを特徴とする装置。
【請求項２】
前記メインメモリは、前記複数のプロセッサのそれぞれに対応して、プロセッサごとに少なくとも一つのサンドボックスを備え、前記メインプロセッサは、前記複数のプロセッサによる、それぞれの前記サンドボックス内のデータに対するアクセスを許可または禁止する機能を有することを特徴とする請求項１に記載の装置。
【請求項３】
前記メインプロセッサは、前記複数のプロセッサによる、前記複数のプロセッサのそれぞれが有するローカルメモリ内のデータに対するアクセスを許可または禁止する機能を有することを特徴とする請求項１または２に記載の装置。
【請求項４】
前記少なくとも一つのプロセッサおよび前記少なくとも一つの別のプロセッサは、これら両者の間で転送されるデータを暗号化できるセキュアなセッションに入る機能を有することを特徴とする請求項１から３のいずれかに記載の装置。
【請求項５】
前記メインプロセッサは、前記セキュアな動作モード中の前記少なくとも一つのプロセッサ以外のすべてのプロセッサ内のデータを監視する機能を有することを特徴とする請求項１から４のいずれかに記載の装置。
【請求項６】
前記セキュアな動作モード中の前記少なくとも一つのプロセッサは、前記少なくとも一つの別のプロセッサにデータを送信する機能を有し、前記少なくとも一つの別のプロセッサは、当該装置の処理能力を管理するために前記メインプロセッサにより使用されうる情報がアクセスされたときに、その情報を提供することを特徴とする請求項５に記載の装置。
【請求項７】
複数のサンドボックスを有するメインメモリに動作可能に接続されるとともに、それぞれが自身に関連付けられたローカルメモリを有し、それぞれが前記ローカルメモリ内での使用を目的として前記メインメモリから少なくともあるデータを要求でき、さらにそれぞれが１以上の前記サンドボックスに関連付けられる複数のプロセッサと、
前記複数のプロセッサによる、それぞれの前記サンドボックス内のデータに対するアクセスを許可または禁止すること、および、前記複数のプロセッサによる、前記複数のプロセッサ内のデータに対するアクセスを制御することのうち少なくとも一つを実施可能な少なくとも一つのメインプロセッサと、
を備え、
前記複数のプロセッサのうちの少なくとも一つのプロセッサは、前記複数のプロセッサのうちの他のプロセッサにより開始されたところの、当該少なくとも一つのプロセッサ自身との間でのデータ転送に対する要求は受け付けないが、前記メインプロセッサによるアクセス制御に従うことを条件に、当該少なくとも一つのプロセッサ自身により開始されたところのそのデータ転送は受け付けるセキュアな動作モードに入る機能を有し、
前記メインプロセッサは、前記複数のプロセッサのうちの前記少なくとも一つのプロセッサ以外の他のプロセッサとは異なる少なくとも一つの別のプロセッサのサンドボックスに対して、前記少なくとも一つのプロセッサ以外の他のプロセッサがアクセスすることを禁止する機能と、
前記複数のプロセッサのうちの前記少なくとも一つのプロセッサ以外の他のプロセッサとは異なる少なくとも一つの別のプロセッサに関連付けられたデータに対して、前記少なくとも一つのプロセッサ以外の他のプロセッサがアクセスすることを禁止する機能と、
のうち少なくとも一つを有することを特徴とする装置。
【請求項８】
前記メインプロセッサは、
前記複数のプロセッサによる、前記複数のプロセッサのそれぞれが有するローカルメモリ内のデータに対するアクセスを許可または禁止する機能と、
前記少なくとも一つのプロセッサ以外の他のプロセッサによる、前記少なくとも一つの別のプロセッサのローカルメモリに対するアクセスを禁止する機能と、
のうち少なくとも一つをさらに有することを特徴とする請求項７に記載の装置。
【請求項９】
メインメモリに動作可能に接続されるとともに、それぞれが自身に関連付けられたローカルメモリを有する複数のプロセッサと、前記複数のプロセッサによる、前記メインメモリ内および前記複数のプロセッサ内のデータに対するアクセスを制御できる少なくとも一つのメインプロセッサとを備えるマルチプロセッサシステムにおいて、
当該方法は、
前記複数のプロセッサのうちの少なくとも一つのプロセッサ内において、前記複数のプロセッサのうちの他のプロセッサにより開始されたところの、当該少なくとも一つのプロセッサ自身との間でのデータ転送に対する要求は受け付けないが、前記メインプロセッサによるアクセス制御に従うことを条件に、当該少なくとも一つのプロセッサ自身により開始されたところのそのデータ転送は受け付けるセキュアな動作モードに入るステップと、
前記メインプロセッサを用いて、前記複数のプロセッサのうちの前記少なくとも一つのプロセッサ以外の他のプロセッサとは異なる少なくとも一つの別のプロセッサに関連付けられたデータに対して、前記少なくとも一つのプロセッサ以外の他のプロセッサがアクセスすることを禁止するステップと、
を含むことを特徴とする方法。
【請求項１０】
前記メインメモリは、記複数のプロセッサのそれぞれに対応して、プロセッサごとに少なくとも一つのサンドボックスを備え、
当該方法は、前記メインプロセッサを用いて、前記複数のプロセッサによる、前記サンドボックス内のデータに対するアクセスを許可または禁止するステップをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記少なくとも一つのプロセッサ以外の他のプロセッサによる、前記少なくとも一つの別のプロセッサのサンドボックスの少なくとも一つに対するアクセスを禁止するステップをさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記メインプロセッサを用いて、前記複数のプロセッサによる、前記複数のプロセッサのそれぞれが有するローカルメモリ内のデータに対するアクセスを許可または禁止するステップをさらに含むことを特徴とする請求項１０または１１に記載の方法。
【請求項１３】
前記少なくとも一つのプロセッサ以外の他のプロセッサによる、前記少なくとも一つの別のプロセッサのサンドボックスに対するアクセスを禁止するステップと、
前記少なくとも一つのプロセッサ以外の他のプロセッサによる、前記少なくとも一つの別のプロセッサのローカルメモリに対するアクセスを禁止するステップと、
のうち少なくとも一つのステップをさらに含むことを特徴とする請求項１０から１２のいずれかに記載の方法。
【請求項１４】
前記メインプロセッサを用いて、前記複数のプロセッサによる、前記複数のプロセッサのそれぞれが有するローカルメモリ内のデータに対するアクセスを許可または禁止するステップをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１５】
前記少なくとも一つのプロセッサ以外の他のプロセッサによる、前記少なくとも一つの別のプロセッサのローカルメモリに対するアクセスを禁止するステップをさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記少なくとも一つのプロセッサおよび前記少なくとも一つの別のプロセッサ間に、これら両者の間で転送されるデータを暗号化できるセキュアなセッションを確立するステップをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１７】
前記メインプロセッサを用いて、前記セキュアな動作モード中の前記少なくとも一つのプロセッサ以外のすべてのプロセッサ内のデータを監視するステップをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１８】
装置の処理能力を管理するために前記メインプロセッサにより使用されうる情報がアクセスされたときにその情報を提供する前記少なくとも一つの別のプロセッサに、前記少なくとも一つのプロセッサからデータを送信するステップをさらに含むことを特徴とする請求項１７に記載の方法。
【請求項１９】
共有メモリに動作可能に接続されるとともに、それぞれが自身に関連付けられたローカルメモリを有する複数のプロセッサを備えるマルチプロセッサシステムにおいて、
当該方法は、
前記複数のプロセッサのうちの少なくとも一つのプロセッサ内において、前記複数のプロセッサのうちの他のプロセッサにより開始されたところの、当該少なくとも一つのプロセッサ自身との間でのデータ転送に対する要求は受け付けないが、当該少なくとも一つのプロセッサ自身により開始されたところのそのデータ転送は受け付けるセキュアな動作モードに入るステップと、
前記複数のプロセッサのうちの前記少なくとも一つのプロセッサ以外の他のプロセッサとは異なる少なくとも一つの別のプロセッサに関連付けられた、前記共有メモリ内のデータに対して、前記少なくとも一つのプロセッサ以外の他のプロセッサがアクセスすることを禁止するステップと、
前記少なくとも一つの別のプロセッサによる、前記少なくとも一つのプロセッサに関連付けられた、前記共有メモリ内のデータに対するアクセスを許可するステップと、
を含むことを特徴とする方法。
【請求項２０】
メインメモリに動作可能に接続されるとともに、それぞれが自身に関連付けられたローカルメモリを有する複数のプロセッサと、前記複数のプロセッサによる前記メインメモリ内および前記複数のプロセッサ内のデータに対するアクセスを制御できる少なくとも一つのメインプロセッサとを備えるマルチプロセッサシステムの一部をなすプロセッサに動作を実行せしめるソフトウエアプログラムを含む記憶媒体であって、
当該動作は、
前記複数のプロセッサのうちの少なくとも一つのプロセッサ内において、前記複数のプロセッサのうちの他のプロセッサにより開始されたところの、当該少なくとも一つのプロセッサ自身との間でのデータ転送に対する要求は受け付けないが、前記メインプロセッサによるアクセス制御に従うことを条件に、当該少なくとも一つのプロセッサ自身により開始されたところのそのデータ転送は受け付けるセキュアな動作モードに入るステップと、
前記メインプロセッサを用いて、前記複数のプロセッサのうちの前記少なくとも一つのプロセッサ以外の他のプロセッサとは異なる少なくとも一つの別のプロセッサに関連付けられたデータに対して、前記少なくとも一つのプロセッサ以外の他のプロセッサがアクセスすることを禁止するステップと、
を含むことを特徴とする記録媒体。
【請求項２１】
共有メモリに動作可能に接続されるとともに、それぞれが自身に関連付けられたローカルメモリを有する複数のプロセッサを備えるマルチプロセッサシステムの一部をなすプロセッサに動作を実行せしめるソフトウエアプログラムを含む記憶媒体であって、
当該動作は、
前記複数のプロセッサのうちの少なくとも一つのプロセッサ内において、前記複数のプロセッサのうちの他のプロセッサにより開始されたところの、当該少なくとも一つのプロセッサ自身との間でのデータ転送に対する要求は受け付けないが、当該少なくとも一つのプロセッサ自身により開始されたところのそのデータ転送は受け付けるセキュアな動作モードに入るステップと、
前記複数のプロセッサのうちの前記少なくとも一つのプロセッサ以外の他のプロセッサとは異なる少なくとも一つの別のプロセッサに関連付けられた、前記共有メモリ内のデータに対して、前記少なくとも一つのプロセッサ以外の他のプロセッサがアクセスすることを禁止するステップと、
前記少なくとも一つの別のプロセッサによる、前記少なくとも一つのプロセッサに関連付けられた、前記共有メモリ内のデータに対するアクセスを許可するステップと、
を含むことを特徴とする記録媒体。
【請求項２２】
メインメモリに動作可能に接続されるとともに、それぞれが自身に関連付けられたローカルメモリを有する複数のプロセッサと、前記複数のプロセッサによる前記メインメモリ内および前記複数のプロセッサ内のデータに対するアクセスを制御できる少なくとも一つのメインプロセッサとを備えるマルチプロセッサシステムの一部をなすプロセッサに動作を実行せしめるソフトウエアプログラムであって、
当該動作は、
前記複数のプロセッサのうちの少なくとも一つのプロセッサ内において、前記複数のプロセッサのうちの他のプロセッサにより開始されたところの、当該少なくとも一つのプロセッサ自身との間でのデータ転送に対する要求は受け付けないが、前記メインプロセッサによるアクセス制御に従うことを条件に、当該少なくとも一つのプロセッサ自身により開始されたところのそのデータ転送は受け付けるセキュアな動作モードに入るステップと、
前記メインプロセッサを用いて、前記複数のプロセッサのうちの前記少なくとも一つのプロセッサ以外の他のプロセッサとは異なる少なくとも一つの別のプロセッサに関連付けられたデータに対して、前記少なくとも一つのプロセッサ以外の他のプロセッサがアクセスすることを禁止するステップと、
を含むことを特徴とするプログラム。
【請求項２３】
共有メモリに動作可能に接続されるとともに、それぞれが自身に関連付けられたローカルメモリを有する複数のプロセッサを備えるマルチプロセッサシステムの一部をなすプロセッサに動作を実行せしめるソフトウエアプログラムであって、
当該動作は、
前記複数のプロセッサのうちの少なくとも一つのプロセッサ内において、前記複数のプロセッサのうちの他のプロセッサにより開始されたところの、当該少なくとも一つのプロセッサ自身との間でのデータ転送に対する要求は受け付けないが、当該少なくとも一つのプロセッサ自身により開始されたところのそのデータ転送は受け付けるセキュアな動作モードに入るステップと、
前記複数のプロセッサのうちの前記少なくとも一つのプロセッサ以外の他のプロセッサとは異なる少なくとも一つの別のプロセッサに関連付けられた、前記共有メモリ内のデータに対して、前記少なくとも一つのプロセッサ以外の他のプロセッサがアクセスすることを禁止するステップと、
前記少なくとも一つの別のプロセッサによる、前記少なくとも一つのプロセッサに関連付けられた、前記共有メモリ内のデータに対するアクセスを許可するステップと、
を含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムにおける一以上のプロセッサ間でのセキュアな連携を容易にする方法および装置に関する。
【背景技術】
【０００２】
最先端のコンピュータアプリケーションがますます複雑になり、処理システム（プロセッサシステム）に対する需要は絶えず増大しているため、近年、より速いコンピュータによる処理データスループットについて強い要望がある。そうした中、特にグラフィックスアプリケーションは、望ましい視覚結果を実現するために、比較的短い時間内で膨大な数のデータアクセス、データ計算、およびデータ操作を必要とし、処理システムに対する要求は最も高い。リアルタイムのマルチメディアアプリケーションもまた、処理システムに対する高い要求は高い。実際に、このようなアプリケーションは毎秒何千メガビットものデータ処理という非常に高速な処理を必要とする。
【０００３】
いくつかの処理システムは一つのプロセッサを用いて高速な処理速度を実現する一方、他の処理システムはマルチプロセッサアーキテクチャを用いて実装される。マルチプロセッサシステムにおいて、複数のサブプロセッサは並列に（少なくとも協調して）動作し、所望の処理結果を達成できる。マルチプロセッサシステム内でモジュラー構造を用いることも考えられる。なお、この構造において、計算モジュールには、（インターネットなどの）ブロードバンドネットワークを介してアクセスでき、その計算モジュールは多くのユーザ間で共有できる。このモジュラー構造についての詳細は、米国特許第６５２６４９１号に記載される。
【０００４】
なお、プロセッサシステムがネットワークを介して使用されるとき、あるいは共有資源の一部分であるときに問題が生じる。特に、プロセッサとそれに関連するハードウエア、ソフトウエア、データおよびそれらと同様のものは、意図的なハッキング、ウイルスやそれらと同様のものなどの外部要因にさらされやすい。他の問題として、実行前における、ある方法での認証がなされていない、起動ソフトウエアや、オペレーティングシステムソフトウエアや、アプリケーションソフトウエアやコンテンツ（データ）によりもたらされうる不正やあからさまな悪意が挙げられる。あいにく、ソフトウエアアプリケーション（あるいは、他の種類のデジタルコンテンツ）の従来の実行過程では、メモリからソフトウエアを読み出すこと、さらにプロセッサを用いてそのソフトウエアを実行することが指示される。たとえ、ソフトウエアを実行する処理システムにいくつかの種類のセキュリティ対策を施しても、そのソフトウエアが改ざんされる、あるいは、そのソフトウエアに対する実行権限がそもそも与えられていない場合もある。したがって、以降に施される任意のセキュリティ対策は十分に信頼性の高い（trusted；信頼のおける）ものにはなるとは限らず、さらに無駄になる（usurped）可能性もある。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
マルチプロセッサの状況において、そのシステム内の「セキュア（secure）」なプロセッサをあるモードにすることが考慮されてきた。そのモードでは、他のプロセッサにより開始されたところの、セキュアなプロセッサとの間でのデータ転送に対する要求は受け付けないが、セキュアなプロセッサにより開始されたそのデータ転送は受け付ける。このように、セキュアなプロセッサ内の処理環境は、機密性の高いオペレーションを実行してくれるものと考えられる。このセキュリティアプローチは、マルチプロセッサシステム内のプロセッサが完全に独立（autonomous）しているときに十分に機能する一方、そのシステム内の一以上のプロセッサが、セキュアなプロセッサ内のデータが要求される処理を管理または監視しようとするときに問題が生じる。
【０００６】
例えば、マルチプロセッサシステムにおいて、複数のプロセッサのうちの一つのプロセッサ（例えば、メインプロセッサ）による処理の移行を可能にするため、そのメインプロセッサが、他のプロセッサ（サブプロセッサ）上で実行されるアプリケーションプログラムおよびデータを監視するのが好ましい場合がある。例えば、メインプロセッサが、あるサブプロセッサから他のサブプロセッサにタスクを移行したり、複数のサブプロセッサ間でデータを配分したり、あるサブプロセッサ内のタスクの実行を中止したりすることなどを所望する場合がある。メインプロセッサはさらに、サブプロセッサの、任意のローカルメモリ、ハードウエアレジスタまたは他の構成要素内のデータを取得しようとする場合がある。なお、あるプロセッサがセキュアなモードであれば、メインプロセッサはそのデータにアクセスすることが許可されない場合があり、その結果、望ましくない結果として、メインプロセッサの管理機能の効果が低減する場合がある。
【０００７】
本発明の目的は、マルチプロセッサシステム内において、プロセッサ間のセキュアな連携関係（collaborative relationship）を可能にするセキュリティ対策を与える新規の方法および装置を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の一以上の態様によれば、セキュアなプロセッサとアンセキュアなプロセッサとの間において協力的でありながら一部独立（isolated；分離）した関係を確立する方法で、メインプロセッサはシステムのメモリ空間（memory space）を制御できる。
【０００９】
この点に関連して、そのシステムのプロセッサ群のうち少なくとも一つのプロセッサの中にセキュアな処理環境を確立するのが好ましい。セキュアな処理環境の確立には、外部から開始された、セキュアなプロセッサに対するデータアクセスリクエストに応答しない状態の呼び出しが含まれる。すなわち、セキュアなプロセッサは、データに対するどの外部のリクエスト（例えば、ローカルメモリまたはレジスタ上のコンテンツを読み出すというリクエスト）にも応じない。したがって、プロセッサがセキュアなモードに入る場合、信頼性の高い環境を形成する。
【００１０】
ここで、このプロセスには、セキュアな起動処理の呼び出しも含まれる。このセキュアな起動処理では、セキュアなプロセッサ（および可能であればそのシステムの他のプロセッサ）の起動コードが最初に認証され、その後、その起動コードの使用によりそのプロセッサが起動される。さらに、セキュアな動作モードに入れば、オペレーティングシステムソフトウエア、アプリケーションプログラムおよびコンテンツの認証も実行できる。ここで、本明細書で用いられる、「コンテンツ」および「データ」は、任意の種類のプログラムコード、アプリケーションプログラム、システムレベルのソフトウエア、任意の種類のデータ、データストリームなどを含むものと広く解釈される。
【００１１】
上述したように、セキュアなプロセッサと必ずしもセキュアな動作モードであるとは限らない一以上の別のプロセッサとの間で、セキュアな連携関係を確立するといった方法で、メインプロセッサはそのシステムのメモリ空間を制御できる。例えば、そのメインプロセッサは、あるプロセッサにより開始されるそのようなデータの転送先および転送元を制御できる。この制御は、マルチプロセッサシステム（そのシステムでは、各プロセッサは、共有メモリ内のある定義された作業領域「サンドボックス」を有する）の共有メモリに適用されうる。一般的に、各プロセッサは、共有メモリの自身による使用に制限を課すことができる一方、他のプロセッサはいずれのサンドボックスからのデータを少なくともコピーできる。なお、メインプロセッサは、どのプロセッサがどのサンドボックスにアクセスできるかを制御できる。メインプロセッサによるそのシステムのメモリ空間の制御方法についてのさらなる詳細は米国特許第６５２６４９１号に開示される。
【００１２】
メインプロセッサによるセキュアなプロセッサおよびアンセキュアなプロセッサの調整を通じて、連携関係を実現できる。例えば、そのメインプロセッサは、第２のプロセッサ（アンセキュアなプロセッサ）が、第１のプロセッサ（セキュアなプロセッサ）に関連付けられたメモリ空間にアクセスすることを許可できる。一方、そのメインプロセッサは、任意の他のプロセッサが、その第２のプロセッサに関連付けられたメモリ空間にアクセスすることを禁止できる。このように、第２のプロセッサは、第１のプロセッサとの間で独立した関係を形成する。そのセキュアなプロセッサは、そのシステムの他のプロセッサによる機密データおよび非機密データに対するアクセスを懸念することなく、そのアンセキュアなプロセッサとの間で、それらデータを共有できる。実際、そのシステムの他のプロセッサは、第２のプロセッサに関連付けられたメモリ空間にアクセスすることはできない。
【００１３】
この連携により、そのメインプロセッサは、（例えば、そのオペレーティングシステムを通じて）第２のプロセッサ（第１のプロセッサのデータを含みうる）のデータにアクセスできる。これにより、そのメインプロセッサによるタスクの移行や、データの配分や、タスクの実行の中止が可能になる。さらなる実施の形態によれば、２以上のプロセッサのそれぞれがセキュアなプロセッサとの間で独立した関係を形成することを可能にするため、２以上のプロセッサのそれぞれとセキュアなプロセッサとの間で機密データを共有できる。
【００１４】
本発明に係る一以上の実施の形態に係る装置は、メインメモリに動作可能に接続されるとともに、それぞれが自身に関連付けられたローカルメモリを有し、それぞれがローカルメモリ内での使用を目的としてメインメモリから少なくともあるデータを要求できる複数のプロセッサと、その複数のプロセッサによる、そのメインメモリ内およびその複数のプロセッサ内のデータに対するアクセスを制御できる少なくとも一つのメインプロセッサと、を備える。複数のプロセッサのうちの少なくとも一つのプロセッサは、その複数のプロセッサのうちの他のプロセッサにより開始されたところの、当該少なくとも一つのプロセッサ自身との間でのデータ転送に対する要求は受け付けないが、メインプロセッサによるアクセス制御に従うことを条件に、当該少なくとも一つのプロセッサ自身により開始されたところのそのデータ転送は受け付けるセキュアな動作モードに入る機能を有するのが好ましい。メインプロセッサは、その複数のプロセッサのうちの少なくとも一つのプロセッサ以外の他のプロセッサとは異なる少なくとも一つの別のプロセッサに関連付けられたデータに対して、その少なくとも一つのプロセッサ以外の他のプロセッサがアクセスすることを禁止する機能を有するのが好ましい。
【００１５】
本発明に係る一以上の別の実施の形態に係る装置は、複数のサンドボックスを有するメインメモリに動作可能に接続されるとともに、それぞれが自身に関連付けられたローカルメモリを有し、それぞれがローカルメモリ内での使用を目的として前記メインメモリから少なくともあるデータを要求でき、さらにそれぞれが１以上のサンドボックスに関連付けられる複数のプロセッサと、その複数のプロセッサによる、それぞれのサンドボックス内のデータに対するアクセスを許可または禁止すること、および、複数のプロセッサによる、その複数のプロセッサ内のデータに対するアクセスを制御することのうち少なくとも一つを実施可能な少なくとも一つのメインプロセッサと、を備える。その複数のプロセッサのうちの少なくとも一つのプロセッサは、その複数のプロセッサのうちの他のプロセッサにより開始されたところの、当該少なくとも一つのプロセッサ自身との間でのデータ転送に対する要求は受け付けないが、メインプロセッサによるアクセス制御に従うことを条件に、当該少なくとも一つのプロセッサ自身により開始されたところのそのデータ転送は受け付けるセキュアな動作モードに入る機能を有するのが好ましい。メインプロセッサは、その複数のプロセッサのうちのその少なくとも一つのプロセッサ以外の他のプロセッサとは異なる少なくとも一つの別のプロセッサのサンドボックスに対して、少なくとも一つのプロセッサ以外の他のプロセッサがアクセスすることを禁止する機能と、その複数のプロセッサのうちのその少なくとも一つのプロセッサ以外の他のプロセッサとは異なる少なくとも一つの別のプロセッサに関連付けられたデータに対して、その少なくとも一つのプロセッサ以外の他のプロセッサがアクセスすることを禁止する機能と、のうち少なくとも一つを有するのが好ましい。
【００１６】
本発明に係る一以上の別の実施の形態に係る方法は、複数のプロセッサのうちの少なくとも一つのプロセッサ内において、その複数のプロセッサのうちの他のプロセッサにより開始されたところの、当該少なくとも一つのプロセッサ自身との間でのデータ転送に対する要求は受け付けないが、そのメインプロセッサによるアクセス制御に従うことを条件に、当該少なくとも一つのプロセッサ自身により開始されたところのそのデータ転送は受け付けるセキュアな動作モードに入るステップと、その複数のプロセッサのうちの少なくとも一つのプロセッサ以外の他のプロセッサとは異なる少なくとも一つの別のプロセッサに関連付けられたデータに対して、その少なくとも一つのプロセッサ以外の他のプロセッサがアクセスすることを禁止するステップと、を含む。その方法はまた、少なくとも一つの別のプロセッサによる、少なくとも一つのプロセッサに関連付けられた、共有メモリ内のデータに対するアクセスを許可するステップを含んでもよい。
【００１７】
本発明の上記以外の態様、特徴、および利点などは、添付図面とともに以下の詳細な説明により当業者には明確に理解される。
【発明を実施するための最良の形態】
【００１８】
本発明の様々な実施の形態を示すために、現在のところ好適である図面を例示として添付するが、本発明は図面と同一の構成および手段に限定するものではない。
【００１９】
図において同一の符号は同一の要素を示すものとする。図１は、実施の形態に係る１以上の態様の実施に適したプロセッサシステム１００を示す。簡潔および明確にするために、図１の構成図を参照し装置１００を用いて説明するが、同一の主旨を有する様々な態様の方法にその説明を簡単に適用できるのは言うまでもない。装置１００は、バス１０８を介して接続された、ローカルメモリ１０４Ａ〜１０２Ｄに関連付けられた複数のプロセッサ１０２Ａ〜１０２Ｄとメインメモリ（すなわち共有メモリ）とを含むのが好ましい。４つのプロセッサ１０２を例として示すが、本発明の主旨および範囲を逸脱しない限り、いかなる数のプロセッサを用いてもよい。
【００２０】
プロセッサ１０２のそれぞれの構成は同一であってもよいし、異なってもよい。そのプロセッサ１０２は、システムメモリ１０６からのデータの要求を可能にし、そのデータを操作することで所望の結果への達成を可能にする任意の既知の技術を用いて実装されてもよい。例えば、プロセッサ１０２はソフトウエアおよび／またはファームウエアを実行可能な、標準マイクロプロセッサや分散型のマイクロプロセッサなどの任意の既知のマイクロプロセッサを用いることで実装されてもよい。例として、プロセッサ１０２は、ピクセルデータなどのデータを要求し操作できるグラフィックプロセッサであってもよい。なお、そのピクセルデータには、グレースケール情報や、カラー情報や、テクスチャデータや、ポリゴン情報や、ビデオフレーム情報などが含まれる。
【００２１】
システム１００の一つ以上のプロセッサ１０２は、メイン（または管理）プロセッサとして機能する。そのメインプロセッサは他のプロセッサによるデータの処理のスケジューリングと調整を行うことができる。
【００２２】
システムメモリ１０６は、メモリインタフェース回路（図示せず）を通じてプロセッサ１０２に接続されるダイナミックランダムアクセスメモリ（ＤＲＡＭ）であるのが好ましい。そのシステムメモリ１０６は、好適にはダイナミックランダムアクセスメモリだが、スタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。
【００２３】
それぞれのプロセッサ１０２は好適には、プロセッサコアと、そのコアに関連付けられた、プログラムを実行するためのローカルメモリ１０４とを含む。これらの構成要素は共通の半導体基板上に一体的に設けられるか、あるいは、設計者の意図により分離されて設けられてもよい。プロセッサコアは好適には、パイプライン処理を用いて実装される。なお、パイプライン処理においては、パイプライン型の方法で論理命令が処理される。そのパイプラインは命令が処理される任意の数のステージに分割されるが、一般的には、一つ以上の命令をフェッチするステージ、その命令をデコードするステージ、命令間の依存性をチェックするステージ、その命令を出力するステージ、その命令を実行するステージを有する。この点に関連して、そのプロセッサコアには、命令バッファ、命令デコード回路、依存性チェック回路、命令出力回路、および実行段階が含まれる。
【００２４】
ここで、ローカルメモリ１０４は、それぞれのプロセッサ１０２と同一チップ上に設けられるのが好ましい。なお、ローカルメモリ１０４は、ハードウェアキャッシュメモリではないことが好ましく、ローカルメモリ１０４には、ハードウェアキャッシュメモリ機能を実現するための、チップ内蔵またはチップ外に設けられたハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどが無いことが好ましい。他の実施の形態では、ローカルメモリ１０４はキャッシュメモリおよび／または付加的なキャッシュメモリであってもよい。チップ上の実装面積はしばしば限られているので、ローカルメモリ１０４のサイズは、共有メモリ１０６のサイズより遥かに小さい。プロセッサ１０２は、プログラムの実行とデータの操作のために、バス１０８を介してシステムメモリ１０６からそれぞれのローカルメモリ１０４にデータ（プログラムデータを含みうる）をコピーするためのデータアクセスリクエストを提供することが好ましい。データアクセスを容易にするメカニズムとして、例えばダイレクト・メモリ・アクセス（ＤＭＡ）技術など、任意の既知の技術を用いてもよい。
【００２５】
プロセッサ１０２およびローカルメモリ１０４は、一つの共通の集積回路として一体化されるのが好ましい。したがって、本明細書では、これらの要素を「プロセッサ１０２」と呼んでもよい。他の実施の形態では、記憶媒体もまた、その一以上の他の要素とともに、一つの共通の集積回路として一体化されてもよい。
【００２６】
ここで、図１の装置１００を参照し、本発明の一以上の態様に係る装置１００により実施される処理ステップの機能および流れを、図２および図３に示す。動作２００において、一以上のプロセッサ１０２（例えば、プロセッサ１０２Ａ）は、セキュアな動作モードに入ることができるのが好ましい。このセキュアな動作モードでは、セキュアなプロセッサ１０２Ａのローカルメモリ１０４（あるいは、任意の他のメモリデバイス、レジスタなど）内に保存されたデータに対する要求はいずれも受け付けられない。従って、機密性の高いオペレーションを実行するための信頼性の高い環境を保証できる。セキュアなモードであるにもかかわらず、セキュアなプロセッサ１０２Ａは、システムメモリ１０６からローカルメモリ１０４Ａへのデータ転送を要求できる。あるいは、ローカルメモリ１０４Ａからシステムメモリ１０６へのデータ転送を要求できる。さらに、セキュアな動作モードである間は、セキュアなプロセッサ１０２Ａは、自身が転送元であるか転送先であるかにかかわらず、信頼性の高い環境との間でのデータ転送を開始できる。
【００２７】
本発明に係る一以上の他の実施の形態によれば、セキュアなプロセッサ１０２Ａを、セキュアな方法で起動できる。そのセキュアな方法では、最初に起動コードが認証され、その後、起動が許可される。これにより、セキュアなプロセッサ１０２Ａがセキュアな動作モード２００に入るときに、よりレベルの高いセキュリティを保証できる。セキュアな起動処理に関するさらなる詳細は、米国特許出願第６０／６５０,７５４号と同日に米国特許商標庁に出願された「プロセッサ内でセキュアな起動シーケンスを提供する方法および装置」と題する米国特許出願第６０／６５０,５０６号（代理人番号５４５／１０、整理番号：ＳＣ０４０２８ＵＳ００）内に記載される。
【００２８】
例えば、その文献によれば、暗号化された起動コードをバスに接続されたセキュアな記憶媒体から読み出し、その暗号化された起動コードをプロセッサに関連付けられたローカルメモリ内に保存する。さらに、プロセッサの信頼のおける復号化機能を用いて暗号化された起動コードを復号化することにより、起動コードが真正であることを確認し、ローカルメモリから取得した起動コードを用いてプロセッサを起動する。
【００２９】
本実施の形態に関連して、プロセッサ群１０２のうちの一つ、例えばプロセッサ１０２Ｅは、メインプロセッサとして機能するのが好ましい。メインプロセッサ１０２Ｅが、例えば、他のプロセッサ１０２上で実行されるアプリケーションプログラムおよびデータを監視することにより、そのメインプロセッサ１０２Ｅによる処理の移行が可能になる。このような処理の移行には、一つのプロセッサ１０２から他のプロセッサ１０２へのタスクの移行や、複数のプロセッサ１０２間でのデータの配分などが含まれる。これに関連して、メインプロセッサ１０２Ｅは、任意のプロセッサ１０２内、例えば、任意のプロセッサのローカルメモリ１０４内、任意のプロセッサのハードウエア内などにあるデータを取得しようとする。セキュアなプロセッサ１０２Ａは、外部のエンティティ（entity；主体）からのデータの要求は受け付けないため（折れた矢印で示す）、メインプロセッサ１０２Ｅは、プロセッサ１０２Ａのローカルメモリ１０４Ａからデータを取得できない。同様に、他のプロセッサ、例えばプロセッサ１０２Ｂおよびプロセッサ１０２Ｄによるデータアクセスリクエストは、セキュアなプロセッサ１０２Ａによっては受け付けられない。
【００３０】
また、メインプロセッサ１０２Ｅは（他のプロセッサ１０２がセキュアなモードでない限りにおいては）、他のプロセッサ１０２による、メインメモリ１０６およびその他のプロセッサ１０２内のデータに対するアクセスを制御するのが好ましい。例えば、メインメモリは複数のサンドボックス１０６Ａ〜１０６Ｄを含みうる。ここでは、プロセッサ１０２Ａ〜１０２Ｄはそれぞれ、サンドボックス１０６Ａ〜１０６Ｄに関連付けられる。各サンドボックス１０６Ａ〜１０６Ｄは、メインメモリ１０６のある領域を画定し、特定のプロセッサ１０２または１組のプロセッサ１０２は、その領域を越えて、データの読み出しや書き込みを行うことはできない。メインプロセッサ１０２Ｅは、どのプロセッサ１０２がどのサンドボックス、あるいはどのサンドボックス群１０６Ａ〜１０６Ｄに対して、データの読み出しや書き込みを実行できるかを制御できるのが好ましい。このテーマについて様々な変形例があることは当業者にとって明らかである。一般的な出発点として、例えば、任意のプロセッサはすべてのサンドボックスのデータを少なくとも読み出し可能ではあるが、一方、プロセッサ１０２のそれぞれに、メインメモリ１０６内のそれぞれ一つのサンドボックスを関連付け、そのサンドボックス内においてデータの読み出しや書き込みが実行されることとしてもよい。なお、他の構成では、それぞれのプロセッサ１０２によるデータの読み出しや書き込みの対象が、メインメモリ１０６内の特定のサンドボックスのみに制限されることを要求できる。
【００３１】
動作２０２において、メインプロセッサ１０２Ｅは、別のプロセッサ、例えばプロセッサ１０２Ｃのデータに対するアクセスを禁止（排除）するのが好ましい。これは、任意の他のプロセッサ（プロセッサ１０２Ａを含んでもよいし、含まなくてもよい）による、その別のプロセッサ１０２Ｃに関連付けられたサンドボックス１０６Ｃに対するデータの読み出しや書き込みを防止することを伴ってもよい。セキュアなプロセッサ１０２Ａがこの情報（プロセッサ１０２Ｃのデータに対するアクセスが禁止されていること）を把握していると想定すれば、セキュアなプロセッサ１０２Ａとその別のプロセッサ１０２Ｃとの間で特別な関係を確立できる。すなわち、これらのプロセッサはお互いに連携し、セキュリティを害することなくそれらプロセッサ間でデータの受け渡しを実行できる。例えば、セキュアなプロセッサ１０２Ａは、別のプロセッサ１０２Ｃに機密性の高いデータを伝送し、あるいは伝送以外の方法で提供することで、サンドボックス１０６Ｃ内にそのデータを保存できる。すなわち、他のプロセッサ１０２Ｂおよびプロセッサ１０２Ｄのいずれも、メインプロセッサ１０２Ｅにより確立された制御により、サンドボックス１０６Ｃ内のそのようなデータにアクセスすることは不可能である。他に、またはさらに、動作２０４では、例えば、セキュアなプロセッサ１０２Ａおよび別のプロセッサ１０２Ｃ間の任意のデータ伝送が暗号化されることを保証することによって、セキュアなプロセッサ１０２Ａおよび別のプロセッサ１０２Ｃ間でセキュアなセッションを確立できる。
【００３２】
動作２０６では、別のプロセッサ１０２Ｃは、セキュアなプロセッサ１０２Ａにより与えられた、セキュアなプロセッサ１０２Ａの状態を示すデータを把握できる。メインプロセッサ１０２Ｅは、サンドボックス１０６Ｃを適切に制御し、そのサンドボックス１０６Ｃにアクセスすることで、この状態情報を入手できる。したがって、メインプロセッサ１０２Ｅは、プロセッサ間でタスクを移行したり、プロセッサ間でデータを配分したりするなどの管理機能の実行にあたり、セキュアなプロセッサ１０２Ａを含めた任意の数のプロセッサ１０２における処理の状態を把握できる。ここで、そのセキュアなプロセッサ１０２Ａは外部のデバイスからのデータリクエストを受け付けないため、セキュアなプロセッサ１０２Ａおよび別のプロセッサ１０２Ｃ間の連携なしに、そのセキュアなプロセッサ１０２Ａに関する状態情報を容易に取得することはできない。
【００３３】
動作２０８では、別のプロセッサ１０２Ｃは、メインプロセッサ１０２Ｅの制御に応じて、サンドボックス１０６Ａ内に含まれる、セキュアなプロセッサ１０２Ａに関連付けられたデータにアクセスできる。したがって、別のプロセッサ１０２Ｃは、セキュアなプロセッサ１０２Ａに関連したデータを取得することにより、自身のサンドボックス１０６Ｃ内でそのデータを操作（使用）し、および／または自身のサンドボックス１０６Ｃ内にそのデータを保存できる。
【００３４】
ここで、メインプロセッサ１０２Ｅにより実行される、メインメモリ１０６のサンドボックスに対するデータアクセスに関する制御は、装置１００の「メモリ空間」を制御することで実現できる。そのメモリ空間を、メインメモリ１０６のみを包含するものとして定義することができるし、あるいは、それぞれのプロセッサ１０２のローカルメモリ１０４、ハードウエアレジスタなどを含むものとして広く定義することもできる。したがって、メインプロセッサ１０２Ｅによるデータアクセス制御を、各プロセッサ１０２のローカルメモリ１０４、ハードウエアレジスタなどを含む、より大きなメモリ空間にまで拡張できる。
【００３５】
本発明に係る少なくとも一つの別の態様によれば、上述した方法および装置は、例えば、図に示す適切なハードウエアを用いて実現できる。そのようなハードウエアは任意の既知の技術を用いて実装できる。なお、その既知の技術として、例えば、標準のデジタル回路、ソフトウエアおよび／またはファームウエアプログラムを実行できる任意の既知のプロセッサ、プログラム可能な読み出し専用メモリ群（ＰＲＯＭ群）、プログラム可能なアレイ論理デバイス群（ＰＡＬ群）などの一以上のプログラム可能なデジタルデバイスまたはシステムが挙げられる。さらに図内の装置は、ある機能ブロックに分割されて示されているが、そのようなブロックは別々の回路で実装でき、および／または、一以上の機能ユニットに結合させることができる。さらに、本発明に係る様々な態様は、適切な記憶メディアや（フレキシブルディスク、メモリチップなどの）持ち運び可能な、および／または配布のためのメディア上に保存可能なソフトウエアおよび／またはファームウエアプログラムにより実装される。
【００３６】
ここでは本発明の具体例について説明したが、これらの実施例は単に本発明の趣旨と応用を示すものである。したがって、請求項により定義された本発明の主旨および範囲から逸脱しないかぎり、上述した実施形態に対して様々な変更を加えることができる。
【図面の簡単な説明】
【００３７】
【図１】実施の形態の１つ以上の態様に係る２以上のサブプロセッサを有するマルチプロセッサシステムの構成を示す図である。
【図２】実施の形態の１つ以上の態様に係る図１のマルチプロセッサシステムの構成要素間における関連性についてのフローおよび機能を示す図である。
【図３】実施の形態の１つ以上の態様に係る図１の処理システムにより実行されうる処理ステップの流れを示す図である。
【符号の説明】
【００３８】
１００  装置，プロセッサシステム、    １０２  プロセッサ、    １０２Ａ  セキュアなプロセッサ、    １０２Ｅ  メインプロセッサ、    １０４  ローカルメモリ、    １０６  共有メモリ，システムメモリ，メインメモリ、  １０６Ａ〜１０６Ｄ  サンドボックス。
【図１】
2006221633.tif 000003
【図２】
2006221633.tif 000004
【図３】
2006221633.tif 000005