(57)【特許請求の範囲】
【請求項１】
第1のプロセッサおよび第1のメモリに連結されたインターフェースと、
メモリ管理ユニットと設定値を格納するように構成された第2のメモリとを含む第2のプロセッサであって、前記設定値は、前記インターフェースを経由して前記第1のプロセッサにより前記第1のメモリにプログラムされ、前記第2のプロセッサにより、前記第1のメモリから前記第2のメモリへロードされる、第2のプロセッサと
を備え、
前記第2のプロセッサは、アドレス変換を遂行するために前記第2のメモリの前記設定値の1つまたは複数を使用するように構成され、前記設定値は、アドレス変換テーブルの位置に対応し、
特定の設定値が前記第2のメモリに前もってロードされたと決定することに応じて、前記第2のプロセッサは前記第2のメモリに1つまたは複数の前記設定値のうちの前記特定の設定値をロードしない、装置。
【請求項２】
前記第2のプロセッサは、前記第2のプロセッサで実行されるロード操作、前記第2のプロセッサで実行されるストア操作、またはそれらの任意の組合せの間、または前記第2のプロセッサで実行されるフェッチ操作の間にアドレス変換を遂行するように構成される、請求項1に記載の装置。
【請求項３】
前記第2のプロセッサは、前記メモリ管理ユニットに前記1つまたは複数の設定値を格納するように構成される、請求項2に記載の装置。
【請求項４】
アドレス変換を遂行することは、仮想アドレスを中間物理アドレスに変換すること、中間物理アドレスを物理アドレスに変換すること、またはそれらの任意の組合せを備える、請求項1に記載の装置。
【請求項５】
前記第1のプロセッサおよび前記第2のプロセッサは同じプロセッサであるか、または、前記第1のプロセッサが中央処理ユニット(CPU)であり、前記第2のプロセッサはデジタルシグナルプロセッサ(DSP)である、請求項1に記載の装置。
【請求項６】
前記第1のプロセッサは第1の命令セットアーキテクチャと関連付けられ、前記第2のプロセッサは前記第1の命令セットアーキテクチャと異なる第2の命令セットアーキテクチャと関連付けられるか、または、
前記第1のプロセッサは第1のハイパーバイザと関連付けられ、前記第2のプロセッサは第2のハイパーバイザと関連付けられる、請求項1に記載の装置。
【請求項７】
インターフェースを経由して第1のプロセッサにより、前記インターフェースに連結され第2のプロセッサのメモリ管理ユニットの外部にあるメモリに設定値をプログラムするステップと、
前記第2のプロセッサが命令を実行することに応じて、前記設定値を前記メモリから前記第2のプロセッサの1つまたは複数のレジスタへロードするステップであって、前記1つまたは複数のレジスタはアドレス変換を遂行するために前記第2のプロセッサにより使用可能であり、前記設定値は、アドレス変換テーブルの位置に対応する、ステップと、
特定の設定値が前記1つまたは複数のレジスタに前もってロードされたと決定するステップに応じて、前記1つまたは複数のレジスタに1つまたは複数の前記設定値のうちの前記特定の設定値をロードしないステップと備える、方法。
【請求項８】
単一の命令の実行の間に前記プログラムするステップおよび前記ロードするステップを遂行するステップをさらに備える、請求項7に記載の方法。
【請求項９】
前記レジスタは前記命令により排他的に書き込み可能である、請求項7に記載の方法。
【請求項１０】
前記ロードするステップは、前記命令のオペランドに基づいて前記メモリ管理ユニットに格納されたテーブルを探索するステップを備える、請求項7に記載の方法。
【請求項１１】
前記命令が特定のオペランドを含むと決定するステップに応じて、前記1つまたは複数のレジスタにロードされた設定値をオーバーライドするステップをさらに備え、前記1つまたは複数の設定値は前記オーバーライドされた設定値を含む、請求項7に記載の方法。
【請求項１２】
前記命令のオペランドに基づいて、前記メモリに格納され前記命令の前記オペランドに基づいてインデックスを付けられたテーブルに基づいて、またはそれらの任意の組合せで、前記特定の設定値が前記1つまたは複数のレジスタに前もってロードされたと決定するステップをさらに備える、請求項7に記載の方法。
【請求項１３】
オーバーライドされる設定値は、ベースアドレスレジスタにロードされ仮想アドレスから中間物理アドレスへのアドレス変換を遂行するために使用可能なベースアドレスを備える、請求項9に記載の方法。
【請求項１４】
請求項7〜13のいずれか一項に記載の方法を実行するためにコンピュータにより実行可能な命令を格納する、非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、2013年3月14日出願の共有される米国非仮特許出願第13/828,718号からの優先権を主張し、2013年3月14日出願の同時係属の米国非仮特許出願第13/829,023号に関係する。これらの出願の各々の内容はその全体が参照により援用される。
【０００２】
本開示は一般にメモリ管理ユニット(MMU)に関する。
【背景技術】
【０００３】
技術の進歩はより小さくより強力な計算デバイスをもたらした。たとえば、携帯ワイヤレス電話、携帯情報端末(PDA)、タブレットコンピュータ、およびページングデバイスなどのワイヤレス計算デバイスを含む、小型、軽量、およびユーザによって容易に持ち運ばれる、いろいろな携帯用パーソナル計算デバイスが現在存在する。多くのそのような計算デバイスは、その中に搭載された他のデバイスを含む。たとえば、ワイヤレス電話は同様にデジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダ、およびオーディオファイルプレーヤを含むことができる。同様に、そのような計算デバイスは、インターネットにアクセスするために使用できるウェブブラウザアプリケーション、およびスチルまたはビデオカメラを利用しマルチメディア再生機能を提供するマルチメディアアプリケーションなどの、ソフトウェアアプリケーションを含む実行可能な命令を処理することができる。
【０００４】
モバイル電話などの電子デバイスは、複数のプロセッサを含むことができる。たとえば、モバイル電話は、(時々アプリケーションプロセッサと呼ばれる)中央処理ユニット(CPU)およびデジタルシグナルプロセッサ(DSP)を含むことができる。各々のプロセッサは、特定の計算タスクを遂行するのに他のプロセッサよりも適していることがある。たとえば、1次プロセッサとして作用することができモバイル電話オペレーティングシステムを実行することができるCPUは、ウェブブラウザおよびユーザインターフェースコードなどの「制御コード」を実行することにおいてより効率的であり得る。他方、DSPは信号処理および他の数値演算集中的な機能を実行するときにより効率的であり得る。
【０００５】
いくつかのマルチプロセッサデバイスにおいて、プロセッサの1つは「1次」プロセッサとして作用することができ、残りのプロセッサは「2次」プロセッサとして作用することができる。1次プロセッサは2次プロセッサができるおよびできないことに関してガイドラインを設定することができる。加えて、1次プロセッサは、2次プロセッサにおいてそのような設定情報を計算する代わりに、2次プロセッサに一定の設定情報について1次プロセッサに依存するように強いることができる。1次プロセッサは、(たとえば、データ整合性の喪失、デッドロックなどをもたらし得る、複数の2次プロセッサが同じ設定情報を定義しようと試みる状況を避けるため)、セキュリティ目的で2次プロセッサがそのような設定情報を計算することを制限することができる。
【発明の概要】
【課題を解決するための手段】
【０００６】
メモリ管理ユニット(MMU)およびMMUとともに使用するための実行可能な命令が開示される。有利には、MMUは2次プロセッサ内に含まれまたは連結されてもよく、1次プロセッサが2次プロセッサのためにMMUで使用するための設定値をプログラムできるように、1次プロセッサと互換性がある外部からプログラム可能なインターフェースを提示することができる。MMUは同様に、2次プロセッサが1次プロセッサに依存する必要なく1次プロセッサによって制限されない操作を遂行できるように、1次プロセッサによる外部プログラミングを必要としない内部インターフェースを提供することができる。
【０００７】
特定の実施形態において、装置は第1のプロセッサへのインターフェースを含む。装置はメモリ管理ユニットを含む第2のプロセッサを同様に含む。装置は1つまたは複数の設定値を格納するメモリデバイスをさらに含む。第1のプロセッサは、1つまたは複数の設定値をメモリデバイスにプログラムするためにインターフェースを使用するように構成される。第2のプロセッサは、アドレス変換を遂行するために1つまたは複数の設定値を使用するように構成される。たとえば、インターフェースはシステムMMU(SMMU)のインターフェースと一致することができ(たとえば、「SMMU互換」とすることができる)、インターフェースは第2のプロセッサによる使用のためにアドレス変換テーブルの位置をプログラムするように第1のプロセッサにより使用され得る。
【０００８】
別の特定の実施形態において、非一時的なコンピュータ可読媒体は、メモリ管理ユニットの記憶デバイスから1つまたは複数の設定値を読み込むことを含む操作を遂行するためにプロセッサにより実行可能な命令を格納する。操作は1つまたは複数の設定値をプロセッサの1つまたは複数のレジスタへロードすることを同様に含む。1つまたは複数のレジスタはプロセッサによりアドレス変換を遂行するために使用可能である。
【０００９】
別の特定の実施形態において、非一時的なコンピュータ可読媒体は、メモリから1つまたは複数の設定値を読み込むことおよび1つまたは複数の設定値をプロセッサの1つまたは複数のレジスタへロードすることを含む操作を遂行するためにプロセッサにより実行可能な命令を格納する。1つまたは複数のレジスタは命令により排他的に書き込み可能である。1つまたは複数の設定値はアドレス変換を遂行するためにプロセッサにより使用可能である。
【００１０】
別の特定の実施形態において、方法は、プロセッサにより、プロセッサのメモリ管理ユニットと関連付けられた記憶デバイスから1つまたは複数の設定値を読み込むことを含む。方法は、1つまたは複数の設定値をプロセッサの1つまたは複数のレジスタへロードすることを同様に含む。1つまたは複数のレジスタは、アドレス変換を遂行するためにプロセッサにより使用可能である。
【００１１】
別の特定の実施形態において、装置は処理するための第1の手段および処理するための第1の手段にインターフェースするための手段を含む。装置は処理するための第2の手段を同様に含む。処理するための第2の手段はメモリ管理ユニットを含む。装置は1つまたは複数の設定値を格納するための手段をさらに含む。処理するための第1の手段は、格納するための手段に1つまたは複数の設定値をプログラムするために、インターフェースするための手段を使用するように構成される。処理するための第2の手段は、アドレス変換を遂行するために1つまたは複数の設定値を使用するように構成される。
【００１２】
開示された実施形態の少なくとも1つにより提供される1つの特定の利点は、2次プロセッサのためにアドレス変換をプログラムするように1次プロセッサにより使用され得る外部からプログラム可能なMMUである。本開示の他の実施態様、利点、および特徴は、以下の図面の簡単な説明、発明を実施するための形態、および特許請求の範囲のセクションを含む、出願全体を概観した後明らかになるであろう。
【図面の簡単な説明】
【００１３】
【図１】外部からプログラム可能なメモリ管理ユニット(MMU)を含むシステムの特定の実施形態を例示するブロック図である。
【図２】外部からプログラム可能なMMUにアクセスする方法の特定の実施形態を例示するフローチャートである。
【図３】外部からプログラム可能なMMUを選択的に使用する命令を実行する方法の特定の実施形態を例示するフローチャートである。
【図４】外部からプログラム可能なMMUを含むワイヤレスデバイスのブロック図である。
【発明を実施するための形態】
【００１４】
図1は外部からプログラム可能なメモリ管理ユニット(MMU)を含むシステム100の特定の実施形態を例示するブロック図である。システム100で、「1次」プロセッサ(たとえば、中央処理ユニット(CPU))110は、インターフェース120を経由して「2次」プロセッサ(たとえば、デジタルシグナルプロセッサ(DSP))130のために設定値をプログラムすることができる。インターフェース120はシステムメモリ管理ユニット(SMMU)(同様に入力/出力MMU(IOMMU)と呼ばれる)のインターフェースと一致し得る。SMMU互換インターフェース120は、1次プロセッサ110による外部プログラミングのために1次プロセッサ110と互換であることができる。たとえば、SMMUインターフェースは標準化されたメモリ管理インターフェースとすることができる。本明細書でさらに説明されるように、SMMU互換インターフェース120は、設定値(たとえば、1つまたは複数のアドレス変換テーブルの1つまたは複数のアドレス)をプログラムするために1次プロセッサ110によりアクセスされ得る。プロセッサ130が設定値を自己プログラミングする代わりに、プロセッサ130は一定の設定値をプログラムすることをプロセッサ110に依存するので、プロセッサ110は「1次」プロセッサと見なすことができ、プロセッサ130は「2次」プロセッサと見なすことができる。
【００１５】
1次プロセッサ110および2次プロセッサ130は異なる命令セットアーキテクチャに関連付けられてもよい。たとえば、1次プロセッサ110はCPU固有の命令セットアーキテクチャと関連付けられてもよく、2次プロセッサ130はDSP固有の命令セットアーキテクチャと関連付けられてもよい。本明細書でさらに説明されるように、各々のプロセッサ110、130は1つもしくは複数の処理ユニット、コア、および/またはハードウェアスレッドを含んでもよい。マルチスレッドプロセッサは、同時に実行する複数のハードウェア実行コンテキストを有するプロセッサを介して、または、単一ハードウェア実行コンテキストを有する複数のプロセッサ(たとえば、対称型マルチプロセッシング(SMP)クラスタ)として、実装できる。本明細書におけるCPUおよびDSPの説明は一例にすぎないことは留意されるべきである。ネットワーク処理ユニット(NPU)、グラフィック処理ユニット(GPU)などの他のプロセッサまたはプロセッサのセットは同様にシステム100に含めることができる。
【００１６】
3つのタイプのメモリアドレスがシステム100で使用され得る。仮想アドレス(VA)、中間物理アドレス(IPA)(同様に擬似物理アドレスと呼ばれる)、および物理アドレス(PA)である。各々の仮想アドレスは仮想アドレス空間と関連付けられてもよく、各々の中間物理アドレスは中間物理アドレス空間と関連付けられてもよい。メモリ(たとえば、ランダムアクセスメモリ(RAM)、ディスクベースのメモリ、キャッシュメモリ、レジスタメモリなど)の領域およびメモリマップされたデバイス(たとえば、入力/出力(I/O)デバイス)に直接アクセスするために使用され得る物理アドレスは、単一の物理アドレス空間に属することができる。仮想アドレス、中間物理アドレス、および物理アドレスがシステム100で使用されるとき、2つのタイプのアドレス変換マッピングがシステム100で定義され得る。第1のタイプのアドレス変換マッピングは、仮想アドレスから中間物理アドレスへとすることができ、第2のタイプのアドレス変換マッピングは中間物理アドレスから物理アドレスへとすることができる。このように、システム100の仮想アドレスに対する「完全な」アドレス変換マッピングは、仮想アドレスから中間物理アドレスへの「第1段階」変換、そしてそれに続く中間物理アドレスから物理アドレスへの「第2段階」変換を含むことができる。
【００１７】
1次プロセッサ110は、2次プロセッサ130がアドレス変換を遂行するために使用できる情報をプログラムするためにインターフェース120を使用することができる。たとえば、インターフェース120はアドレス変換テーブルのアドレスを格納することができる。アドレス変換テーブルはメモリ(たとえば、ランダムアクセスメモリ(RAM))に格納可能であり、VAからIPAへの変換および/またはIPAからPAへの変換を定義できる。図1の実施例で、1次プロセッサ110は、第1のアドレス変換テーブルの第1のアドレス121および第2のアドレス変換テーブルの第2のアドレス122をプログラムする。2つのアドレス121、122(たとえば、ベースアドレス)が図1に示されるが、2より多いまたは少ないアドレスがインターフェース120を経由してプログラムされ得ることは留意されるべきである。
【００１８】
2次プロセッサ130はメモリ管理ユニット(MMU)131および1つまたは複数のレジスタ132を(たとえばレジスタファイルの一部として)含むことができる。2次プロセッサ130は、インターフェース120からレジスタ132へ設定値を選択的に検索およびロードするために命令133の実行をサポートすることができる。図1で、命令133は「LOAD_STREAMID」命令と名付けられる。LOAD_STREAMID命令133は1つまたは複数のオペランドを含むことができる。たとえば、LOAD_STREAMID命令133はインデックスオペランドを含むことができる。実行されるとき、LOAD_STREAMID命令133は、設定ブロックへのポインタにアクセスするためにインデックスオペランドを使用して、MMU131の記憶デバイスに格納されたテーブル134にアクセスすることができる。たとえば、図1はテーブル134がインデックス0で(第1のアドレス変換テーブルの第1のアドレス121を含む)設定ブロック0へのポインタ、および、インデックス1で(第2のアドレス変換テーブルの第2のアドレス122を含む)設定ブロック1へのポインタを格納することを例示する。設定ブロックは他のプロセスおよびゲスト環境パラメータを同様に含むことができる。設定ブロックへのポインタは、1次プロセッサ110により外部からプログラムすることができ、および/または2次プロセッサ130により決定することができる。
【００１９】
1つまたは複数のレジスタ132は、1次プロセッサ110によりプログラムされ2次プロセッサ130により検索される設定値を格納するために使用できる。たとえば、図1に示すように、第1のアドレス121および第2のアドレス122はインターフェース120から検索されレジスタ132に格納され得る。レジスタ132にロードされた値は、アドレス変換を遂行するために2次プロセッサ130により使用され得る。たとえば、レジスタ132にロードされる値は、(たとえば、ロード、ストア、またはフェッチ操作の間に)仮想アドレスから物理アドレスへのコンバージョンを格納するアドレス変換テーブルにアクセスするために2次プロセッサ130により使用され得る。1セットのレジスタ132が示されるが、これは一例にすぎないことは留意されるべきである。特定の実施形態において、2次プロセッサ130はマルチスレッドプロセッサまたはマルチプロセッサデバイスの一部であり、レジスタ132の異なるセットが各々のハードウェアスレッドまたはハードウェアプロセッサに対して使用される。
【００２０】
インターフェース120は2次プロセッサ130のMMU131への外部からプログラム可能な拡張または同等物とすることができる。インターフェース120は図1で2次プロセッサ130の外部にあるように例示されているが、これは一例にすぎないことは留意されるべきである。代替の実施形態において、インターフェース120のすべてまたは一部は2次プロセッサ130内に組み込まれてもよい。
【００２１】
操作の間に、1次プロセッサ110はインターフェース120にアドレス121、122をプログラムすることができる。2次プロセッサ130は、たとえば2次プロセッサ130のページテーブルウォーカーがアドレス変換を遂行するためにレジスタ132を使用できるように、命令133を使用してレジスタ132にアドレス121、122をロードすることができる。特定の実施形態において、セキュリティ目的のために、レジスタ132は命令133により排他的に書き込み可能である。すなわち、他の命令は2次プロセッサ130の他のレジスタに書き込み可能であり得るが、命令133のみがレジスタ132に書き込むことを許可される。たとえば、レジスタ132が書き込み可能であるか否かは、(たとえばプロセッサ間接続を経由して)1次プロセッサ110から2次プロセッサ130により受信された信号値に依存し得る。別の特定の実施形態において、2次プロセッサ130は、一定の状況で(たとえば、1次プロセッサ110を伴わず、かつソフトウェア命令を実行する必要なく2次プロセッサ130でデバッグを遂行するために)選択的にレジスタ132に書き込むことを許可され得る。
【００２２】
2次プロセッサ130はアドレス変換を遂行するためにレジスタ132にロードされた外部からプログラムされた設定値を使用することができる。たとえば、2次プロセッサ130はVAからIPAへの変換および/またはIPAからPAへの変換を遂行するためにレジスタ132に格納された設定値(たとえば、ベースアドレス)を使用することができる。
【００２３】
1次プロセッサ110および2次プロセッサ130は別個のプロセッサとして例示されているが、これは一例にすぎないことは留意されるべきである。代替の実施形態において、1次プロセッサ110および2次プロセッサ130は同じプロセッサとすることができる(すなわち、説明された技術はプロセッサによるMMUの自己プログラミングを可能とすることができる)。
【００２４】
特定の実施形態において、図1のシステム100はハイパーバイザ制御計算環境に組み込まれてもよい。たとえば、1次プロセッサ110は「1次」ハイパーバイザと関連付けられてもよく、2次プロセッサ130は「2次」ハイパーバイザと関連付けられてもよい。この場合、プロセッサ110、130の各々は、プロセッサ110、130上で実行するゲストオペレーティングシステムのタスクに対応している仮想プロセッサをスケジュールできる。特定の実施形態において、プロセッサ110またはプロセッサ130上で実行する少なくとも1つのゲストオペレーティングシステムはリアルタイムオペレーティングシステム(RTOS)である。特定の実施形態において、システム100がハイパーバイザ制御計算環境に組み込まれるとき、第1段階変換は個別のゲストオペレーティングシステムによりプログラムでき、第2段階変換はすべてのゲストオペレーティングシステムに対して1次ハイパーバイザにより遂行できる。
【００２５】
2次プロセッサ130上の仮想プロセッサの実行中、ページミスが起こるとき、MMU131はアドレス変換を遂行するためにレジスタ132の設定値にアクセスできる。仮想プロセッサ間のコンテキストスイッチが起こるとき、LOAD_STREAMID命令133は、レジスタ132に新しい仮想プロセッサのためのアドレス変換情報をロードするために2次プロセッサ130によって実行され得る。
【００２６】
特定の実施形態において、LOAD_STREAMID命令133は新しい仮想プロセッサに関連付けられたインデックスオペランドを含む。新しい仮想プロセッサに対する設定値が前もってレジスタ132にロードされた場合、LOAD_STREAMID命令133の実行はレジスタ132に設定値を再ロードすることなく完了することができ、それにより時間と計算リソースを節約できる。たとえば、MMU131は、LOAD_STREAMID命令133のインデックスオペランドに基づいて、値がレジスタ132に前もってロードされたことを決定できる。代わりに、または加えて、テーブル134に格納されているデータ(たとえば、インターフェース120の設定ブロック)に基づいて、値がレジスタ132に前もってロードされたことを決定できる。
【００２７】
特定の実施形態において、LOAD_STREAMID命令133は任意選択のオーバーライドオペランドをサポートする。オーバーライドオペランドが含まれるとき、LOAD_STREAMID命令133の実行は、レジスタ132にロードされた値をオーバーライドするという結果をもたらし得る。たとえば、2次プロセッサ130上で排他的に走るゲストオペレーティングシステムは複数のインターフェースブロックなしで複数のプロセスを作成することができる。そのような状況で、135で示されるように、オーバーライドオペランドは、VAからIPAへの変換のために異なったベースアドレスで(たとえば、ベースアドレスレジスタの)ベースアドレスをオーバーライドするように使用され得る。
【００２８】
図1のシステム100はこのように、外部プログラミングのために1次プロセッサ110と互換性があり、2次プロセッサ130によるアドレス変換の遂行およびデバッグでの使用のために(たとえば、レジスタ132を経由する)内部インターフェースを提供する、メモリ管理アーキテクチャを提供することができる。たとえば、インターフェース120は実際にはSMMUではないが、1次プロセッサ110が実際のSMMUと通信しているかのように1次プロセッサ110がインターフェース120と通信できるように、インターフェース120は1次プロセッサ110へのSMMU互換インターフェースを提示する。1次プロセッサ110は、第2段階変換を決定し、アドレス変換テーブルに第2段階変換を格納し、インターフェース120にアドレス変換テーブルのアドレスを格納することができる。2次プロセッサ130はコンテキストスイッチの間にインターフェース120からの値を使用して内部レジスタ132をリフレッシュできる。このように、1次プロセッサ110の見地から、システム100は、別のデバイスによって依存される値を格納できる外部からプログラム可能なMMUを提供できる。2次プロセッサ130の見地から、システム100は、外部からプログラムされた記憶デバイスから変換レジスタ値を満たすために実行され得る命令を提供できる。
【００２９】
図2は外部からプログラム可能なMMUにアクセスする方法200の特定の実施形態を例示するフローチャートである。実例となる実施形態において、方法200は図1のシステム100で遂行され得る。
【００３０】
202で、方法200は、プロセッサにより、プロセッサのMMUに関連付けられた記憶デバイスから1つまたは複数の設定値を読み込むことを含み得る。たとえば、記憶デバイスは、(たとえば、アドレス変換の間に)値がプロセッサのMMUによって使用されることになっている、SMMU互換インターフェースを経由して外部プロセッサによりプログラムされた設定値を格納することができる。特定の実施形態において、記憶デバイスはMMUの外部にある。たとえば、図1を参照すると、2次プロセッサ130はアドレス121および/または122などの設定値を読み込むことができ、設定値はインターフェース120を経由して1次プロセッサ110によりプログラムされる。
【００３１】
204で、方法200は、1つまたは複数の設定値をプロセッサの1つまたは複数のレジスタへロードすることを同様に含み得る。1つまたは複数のレジスタは、アドレス変換を遂行するためにプロセッサにより使用可能である。たとえば、図1を参照すると、設定値(たとえばアドレス121および/または122)をレジスタ132へロードし、アドレス変換(たとえば、VAからIPAへの変換および/またはIPAからPAへの変換)のために使用することができる。
【００３２】
図2の方法200はこのように、1つのプロセッサ(たとえば1次プロセッサ)によりプログラムされ別のプロセッサ(たとえば2次プロセッサ)により使用可能な設定値を通信するために、外部からプログラム可能なMMUの使用を可能とすることができる。
【００３３】
図2の方法200は、デジタルシグナルプロセッサ(DSP)、中央処理ユニット(CPU)などの処理ユニット、コントローラ、フィールドプログラマブルゲートアレイ(FPGA)デバイス、特定用途向け集積回路(ASIC)、別のハードウェアデバイス、ファームウェアデバイス、またはそれらの任意の組合せにより実行され得る。実施例として、図2の方法200は、図4に関して説明されるように、命令を実行するプロセッサにより遂行され得る。
【００３４】
図3は外部からプログラム可能なMMUを選択的に使用する命令を実行する方法300の特定の実施形態を例示するフローチャートである。実例となる実施形態において、方法300は図1の2次プロセッサ130で遂行され得る。
【００３５】
302で、方法300は、仮想プロセッサへのコンテキストスイッチを検出することを含むことができる。たとえば、図1において、特定の仮想プロセッサへのコンテキストスイッチは2次プロセッサ130により検出できる。304で、方法300は、コンテキストスイッチに応じてプロセッサにおいて命令を実行することを同様に含むことができ、ここで命令はインデックスオペランドを含む。たとえば、図1で、2次プロセッサ130はLOAD_STREAMID命令133を実行できる。306で、命令を実行することは、インデックスオペランドに基づいて、仮想プロセッサのための設定値が前もってロードされた(およびそのためにすでに利用可能である)かどうか決定することを含むことができる。たとえば、仮想プロセッサのための設定値は、VAからIPAへの変換、IPAからPAへの変換、および/または他のプロセス/環境データを遂行するために使用可能なデータを含むことができる。
【００３６】
308で、設定値は前もってロードされたと決定されるとき、方法300は316に進むことができる。308で、設定値は前もってロードされなかったと決定されるとき、方法300は、設定ブロックへのポインタを識別するためにインデックスオペランドを使用してMMUに格納されたテーブルを探索することを含むことができる。310で、設定ブロックに基づいて仮想プロセッサのための設定値が前もってロードされたかどうか決定できる。312で、設定値は前もってロードされたと決定されるとき、方法300は316に進むことができる。
【００３７】
312で、設定値は前もってロードされなかったと決定されるとき、314で、方法300は、(たとえば、設定ブロックから)設定値を読み込むことおよびプロセッサのレジスタへ設定値をロードすることを含むことができる。たとえば、図1で、アドレス121、122はレジスタ132にロードされ得る。セキュリティ目的のために、レジスタ132は命令により排他的に書き込み可能とすることができる。たとえば、レジスタ132が書き込み可能であるか否かは別のプロセッサ(たとえば、1次プロセッサ)から受信された書き込みイネーブル信号の値に依存し得る。
【００３８】
316に進んで、方法300は命令がオーバーライドオペランドを含むかどうか決定することを含むことができる。命令がオーバーライドオペランドを含むとき、318で、方法300は、レジスタの1つにロードされた設定値をオーバーライドすることを含むことができる。たとえば、VAからIPAへの変換のためにベースアドレスレジスタにロードされたベースアドレスはオーバーライドできる。320に続いて、方法300はアドレス変換(たとえば、ゲストオペレーティングシステムのタスクによって提供された仮想アドレスから中間物理アドレスへ変換すること、および/または中間物理アドレスからメモリの特定領域または特定のメモリマップされたデバイスに対応する物理アドレスへ変換すること)を遂行するために設定値を使用することを含むことができる。たとえば、アドレス変換は、図1の2次プロセッサ130でストア操作、ロード操作、またはフェッチ操作が実行されるとき遂行され得る。
【００３９】
図3の方法300はこのように、設定値がレジスタで利用可能でないとき内部のレジスタに外部からプログラムされた設定値を選択的にロードする命令を実行するために使用され得る。しかしながら、設定値がレジスタで使用可能な(たとえば、設定値がレジスタに前もってロードされた)場合、命令の実行は設定値にアクセスするための外部の読み出し操作を遂行することなく終了することができ、それは処理時間および計算リソースを節約できる。
【００４０】
図3の方法300は、デジタルシグナルプロセッサ(DSP)、中央処理ユニット(CPU)などの処理ユニット、コントローラ、フィールドプログラマブルゲートアレイ(FPGA)デバイス、特定用途向け集積回路(ASIC)、別のハードウェアデバイス、ファームウェアデバイス、またはそれらの任意の組合せにより実行され得る。実施例として、図3の方法300は、図4に関して説明されるように、命令を実行するプロセッサにより遂行され得る。
【００４１】
図4を参照すると、電子デバイス400のブロック図が示される。電子デバイス400は、中央処理ユニット(CPU)などの1次プロセッサ410およびデジタルシグナルプロセッサ(DSP)などの2次プロセッサ474を含み、その各々はメモリ432に連結される。1次プロセッサ410および2次プロセッサ474は異なる命令セットアーキテクチャを有してもよい。実例となる実施形態において、1次プロセッサ410は図1の1次プロセッサ110であり、2次プロセッサ474は図1の2次プロセッサ130である。電子デバイス400、またはその構成要素は、通信デバイス、携帯情報端末(PDA)、モバイル電話、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、固定ロケーションデータユニット、計算デバイス、またはそれらの任意の組合せに含まれ得る。
【００４２】
SMMUインターフェース480は1次プロセッサ410と2次プロセッサ474との間に配置できる。実例となる実施形態において、SMMUインターフェース480は図1のインターフェース120とすることができる。1次プロセッサ410は、SMMUインターフェース480のデータ記憶位置に、メモリに格納されたアドレス変換テーブルのアドレスなどの、設定値をプログラムすることができる。2次プロセッサ474は、コンテキストスイッチが発生するときSMMUインターフェース480から設定値を検索でき、検索された設定値を内部レジスタに格納でき、アドレス変換を遂行するために格納された設定値を使用できる。
【００４３】
図4は、プロセッサ410、474およびディスプレイ428に連結されたディスプレイコントローラ426を同様に示す。コーダ/デコーダ(CODEC)434はプロセッサ410、474に同様に連結できる。スピーカ436およびマイクロフォン438はCODEC434に連結できる。図4はワイヤレスコントローラ440がプロセッサ410、474およびアンテナ442に(たとえば、無線周波数(RF)インターフェースを経由して)連結できることを同様に示唆する。
【００４４】
メモリ432は、実行可能な命令456を含む、有形の非一時的なコンピュータ可読またはプロセッサ可読記憶媒体とすることができる。命令456は、図2の方法200および/または図3の方法300を含む、本明細書に説明された様々な機能および方法を遂行するために、プロセッサ410、474のセットなどのプロセッサにより、実行され得る。たとえば、命令456は図1のLOAD_STREAMID命令133を含むことができる。メモリは、(たとえば、1次プロセッサ410上で実行可能な)1次ハイパーバイザ457、(たとえば、2次プロセッサ474上で実行可能な)2次ハイパーバイザ458、ならびに1つまたは複数のゲストオペレーティングシステム459に対応する命令および/またはデータを同様に格納することができる。
【００４５】
特定の実施形態において、プロセッサ410、474、ディスプレイコントローラ426、メモリ432、CODEC434、およびワイヤレスコントローラ440は、システムインパッケージまたはシステムオンチップデバイス422に含まれる。特定の実施形態において、入力デバイス430および電源444はシステムオンチップデバイス422に連結される。その上、特定の実施形態において、図4に例示されるように、ディスプレイ428、入力デバイス430、スピーカ436、マイクロフォン438、アンテナ442、および電源444は、システムオンチップデバイス422の外部である。しかしながら、ディスプレイ428、入力デバイス430、スピーカ436、マイクロフォン438、アンテナ442、および電源444の各々は、インターフェースまたはコントローラなどの、システムオンチップデバイス422の構成要素に連結できる。
【００４６】
説明された実施形態と関連して、装置は処理するための第1の手段へのインターフェースを含む。たとえば、インターフェースは図1のインターフェース120、図4のSMMUインターフェース480、別のインターフェース、またはそれらの任意の組合せとすることができる。処理するための第1の手段は、図1の1次プロセッサ110もしくは図4の1次プロセッサ410などのハードウェアプロセッサ、データを処理する1つもしくは複数の他のデバイスもしくは回路、またはそれらの任意の組合せとすることができる。装置は処理するための第2の手段を同様に含む。処理するための第2の手段はメモリ管理ユニットを含む。たとえば、処理するための第2の手段は、図1の2次プロセッサ130もしくは図4の2次プロセッサ474などのハードウェアプロセッサ、データを処理する1つもしくは複数の他のデバイスもしくは回路、またはそれらの任意の組合せを含むことができる。メモリ管理ユニットは、MMU131、メモリを管理する1つもしくは複数の他のデバイスもしくは回路、またはそれらの任意の組合せを含むことができる。装置は1つまたは複数の設定値を格納するための手段を同様に含む。たとえば、格納するための手段は、図1のインターフェース120のメモリ、図4のSMMUインターフェース480のメモリ、プロセッサおよび/もしくはMMUの外部のメモリ、プロセッサおよび/もしくはMMUの内部のメモリ、データを格納する1つもしくは複数の他のデバイスもしくは回路、またはそれらの任意の組合せを含むことができる。処理するための第1の手段は、格納するための手段に1つまたは複数の設定値をプログラムするために、インターフェースを使用するように構成される。処理するための第2の手段は、アドレス変換を遂行するために1つまたは複数の設定値を使用するように構成され得る。特定の実施形態において、処理するための第1の手段は第1の命令セットアーキテクチャと関連付けられ、処理するための第2の手段は第1の命令セットアーキテクチャと異なる第2の命令セットアーキテクチャと関連付けられる。たとえば、処理するための第1の手段は第1の命令セットアーキテクチャ(たとえば、CPU固有の命令セットアーキテクチャ)と関連付けられてもよく、処理するための第2の手段は第2の命令セットアーキテクチャ(たとえば、DSP固有の命令セットアーキテクチャ)と関連付けられてもよい。
【００４７】
本明細書で開示された実施形態に関連して説明された論理ブロック、設定、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、プロセッサにより実行されるコンピュータソフトウェア、または両方の組合せとして実装できることを、当業者はさらに理解するであろう。様々な実例となる構成要素、ブロック、設定、モジュール、回路、およびステップは、一般にそれらの機能性に関して上に説明された。そのような機能性がハードウェアまたはプロセッサ実行可能な命令として実装されるかどうかは、特定のアプリケーションおよびシステム全体に課される設計制約に依存する。当業者は各々の特定のアプリケーションのために様々な方法で説明された機能性を実装できるが、そのような実装決定は本開示の範囲からの逸脱を生じさせるものとして解釈されるべきではない。
【００４８】
本明細書で開示された実施形態に関連して説明された方法またはアルゴリズムのステップは、ハードウェアで、プロセッサにより実行されるソフトウェアモジュールで、または2つの組合せで直接具現化できる。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、リードオンリメモリ(ROM)、プログラマブルリードオンリメモリ(PROM)、消去可能プログラマブルリードオンリメモリ(EPROM)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスクリードオンリメモリ(CD-ROM)、または当該技術分野に公知の任意の他の形態の非一時的記憶媒体に存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み込み記憶媒体に情報を書くことができるように、プロセッサに連結される。代替として、記憶媒体はプロセッサと一体であってもよい。プロセッサおよび記憶媒体は特定用途向け集積回路(ASIC)内に存在してもよい。ASICは計算デバイスまたはユーザ端末内に存在してもよい。代替として、プロセッサおよび記憶媒体は計算デバイスまたはユーザ端末内に個別の構成要素として存在してもよい。
【００４９】
開示された実施形態についての先の説明は、当業者が開示された実施形態を作るまたは使うことを可能とするために提供される。これらの実施形態への様々な修正は当業者には容易に明らかであろう。そして本明細書で定義された原理は本開示の範囲から逸脱することなく他の実施形態に適用され得る。このように、本開示は、本明細書で示された実施形態に限定されるように意図されるのでなく、次の特許請求の範囲により定義される原理および斬新な特徴と矛盾しない、可能な限り最も広い範囲を与えられるべきである。
【符号の説明】
【００５０】
100  システム
110  1次プロセッサ
120  インターフェース
121  テーブル1のアドレス
122  テーブル2のアドレス
130  2次プロセッサ
131  メモリ管理ユニット
132  レジスタ
133  LOAD_STREAMID命令
134  テーブル
135  オーバーライド
200  方法
300  方法
400  電子デバイス
410  1次プロセッサ
422  システムオンチップデバイス
426  ディスプレイコントローラ
428  ディスプレイ
430  入力デバイス
432  メモリ
434  CODEC
436  スピーカー
438  マイクロフォン
440  ワイヤレスコントローラ
442  アンテナ
444  電源
456  命令
457  1次ハイパーバイザ
458  2次ハイパーバイザ
459  ゲストオペレーティングシステム
474  2次プロセッサ
480  SMMUインターフェース
【図１】
0006345231.tif 000002
【図２】
0006345231.tif 000003
【図３】
0006345231.tif 000004
【図４】
0006345231.tif 000005