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

JP6345231B2 - 外部からプログラム可能なメモリ管理ユニット - Google Patents

外部からプログラム可能なメモリ管理ユニット Download PDF

Info

Publication number
JP6345231B2
JP6345231B2 JP2016501279A JP2016501279A JP6345231B2 JP 6345231 B2 JP6345231 B2 JP 6345231B2 JP 2016501279 A JP2016501279 A JP 2016501279A JP 2016501279 A JP2016501279 A JP 2016501279A JP 6345231 B2 JP6345231 B2 JP 6345231B2
Authority
JP
Japan
Prior art keywords
processor
memory
instruction
address
interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2016501279A
Other languages
English (en)
Other versions
JP2016515265A5 (ja
JP2016515265A (ja
Inventor
クリストファー・エドワード・クーブ
エリック・ジェームズ・プロンドケ
ピユシュ・パテル
トーマス・アンドリュー・サルトリウス
ルシアン・コドレスク
Original Assignee
クアルコム,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2016515265A publication Critical patent/JP2016515265A/ja
Publication of JP2016515265A5 publication Critical patent/JP2016515265A5/ja
Application granted granted Critical
Publication of JP6345231B2 publication Critical patent/JP6345231B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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/1008Correctness of operation, e.g. memory ordering
    • 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/1048Scalability
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

関連出願の相互参照
本出願は、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インターフェース

Claims (14)

  1. 第1のプロセッサおよび第1のメモリに連結されたインターフェースと、
    メモリ管理ユニットと設定値を格納するように構成された第2のメモリとを含む第2のプロセッサであって、前記設定値は、前記インターフェースを経由して前記第1のプロセッサにより前記第1のメモリにプログラムされ、前記第2のプロセッサにより、前記第1のメモリから前記第2のメモリへロードされる、第2のプロセッサと
    を備え、
    前記第2のプロセッサは、アドレス変換を遂行するために前記第2のメモリの前記設定値の1つまたは複数を使用するように構成され、前記設定値は、アドレス変換テーブルの位置に対応
    特定の設定値が前記第2のメモリに前もってロードされたと決定することに応じて、前記第2のプロセッサは前記第2のメモリに1つまたは複数の前記設定値のうちの前記特定の設定値をロードしない、装置。
  2. 前記第2のプロセッサは、前記第2のプロセッサで実行されるロード操作、前記第2のプロセッサで実行されるストア操作、またはそれらの任意の組合せの間、または前記第2のプロセッサで実行されるフェッチ操作の間にアドレス変換を遂行するように構成される、請求項1に記載の装置。
  3. 前記第2のプロセッサは、前記メモリ管理ユニットに前記1つまたは複数の設定値を格納するように構成される、請求項2に記載の装置。
  4. アドレス変換を遂行することは、仮想アドレスを中間物理アドレスに変換すること、中間物理アドレスを物理アドレスに変換すること、またはそれらの任意の組合せを備える、請求項1に記載の装置。
  5. 前記第1のプロセッサおよび前記第2のプロセッサは同じプロセッサであるか、または、前記第1のプロセッサが中央処理ユニット(CPU)であり、前記第2のプロセッサはデジタルシグナルプロセッサ(DSP)である、請求項1に記載の装置。
  6. 前記第1のプロセッサは第1の命令セットアーキテクチャと関連付けられ、前記第2のプロセッサは前記第1の命令セットアーキテクチャと異なる第2の命令セットアーキテクチャと関連付けられるか、または、
    前記第1のプロセッサは第1のハイパーバイザと関連付けられ、前記第2のプロセッサは第2のハイパーバイザと関連付けられる、請求項1に記載の装置。
  7. インターフェースを経由して第1のプロセッサにより、前記インターフェースに連結され第2のプロセッサのメモリ管理ユニットの外部にあるメモリに設定値をプログラムするステップと、
    前記第2のプロセッサが命令を実行することに応じて、前記設定値を前記メモリから前記第2のプロセッサの1つまたは複数のレジスタへロードするステップであって、前記1つまたは複数のレジスタはアドレス変換を遂行するために前記第2のプロセッサにより使用可能であり、前記設定値は、アドレス変換テーブルの位置に対応する、ステップと、
    特定の設定値が前記1つまたは複数のレジスタに前もってロードされたと決定するステップに応じて、前記1つまたは複数のレジスタに1つまたは複数の前記設定値のうちの前記特定の設定値をロードしないステップと備える、方法。
  8. 単一の命令の実行の間に前記プログラムするステップおよび前記ロードするステップを遂行するステップをさらに備える、請求項7に記載の方法。
  9. 前記レジスタは前記命令により排他的に書き込み可能である、請求項7に記載の方法。
  10. 前記ロードするステップは、前記命令のオペランドに基づいて前記メモリ管理ユニットに格納されたテーブルを探索するステップを備える、請求項7に記載の方法。
  11. 前記命令が特定のオペランドを含むと決定するステップに応じて、前記1つまたは複数のレジスタにロードされた設定値をオーバーライドするステップをさらに備え、前記1つまたは複数の設定値は前記オーバーライドされた設定値を含む、請求項7に記載の方法。
  12. 前記命令のオペランドに基づいて、前記メモリに格納され前記命令の前記オペランドに基づいてインデックスを付けられたテーブルに基づいて、またはそれらの任意の組合せで、前記特定の設定値が前記1つまたは複数のレジスタに前もってロードされたと決定するステップをさらに備える、請求項7に記載の方法。
  13. オーバーライドされる設定値は、ベースアドレスレジスタにロードされ仮想アドレスから中間物理アドレスへのアドレス変換を遂行するために使用可能なベースアドレスを備える、請求項9に記載の方法。
  14. 請求項7〜13のいずれか一項に記載の方法を実行するためにコンピュータにより実行可能な命令を格納する、非一時的なコンピュータ可読記憶媒体。
JP2016501279A 2013-03-14 2014-03-11 外部からプログラム可能なメモリ管理ユニット Expired - Fee Related JP6345231B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/828,718 2013-03-14
US13/828,718 US10114756B2 (en) 2013-03-14 2013-03-14 Externally programmable memory management unit
PCT/US2014/023552 WO2014159418A1 (en) 2013-03-14 2014-03-11 Externally programmable memory management unit

Publications (3)

Publication Number Publication Date
JP2016515265A JP2016515265A (ja) 2016-05-26
JP2016515265A5 JP2016515265A5 (ja) 2018-02-01
JP6345231B2 true JP6345231B2 (ja) 2018-06-20

Family

ID=50933473

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016501279A Expired - Fee Related JP6345231B2 (ja) 2013-03-14 2014-03-11 外部からプログラム可能なメモリ管理ユニット

Country Status (6)

Country Link
US (1) US10114756B2 (ja)
EP (1) EP2972898B1 (ja)
JP (1) JP6345231B2 (ja)
KR (1) KR20150130382A (ja)
CN (1) CN105144122B (ja)
WO (1) WO2014159418A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10437591B2 (en) 2013-02-26 2019-10-08 Qualcomm Incorporated Executing an operating system on processors having different instruction set architectures
US9606818B2 (en) 2013-03-14 2017-03-28 Qualcomm Incorporated Systems and methods of executing multiple hypervisors using multiple sets of processors
US9396012B2 (en) 2013-03-14 2016-07-19 Qualcomm Incorporated Systems and methods of using a hypervisor with guest operating systems and virtual processors
WO2014142254A1 (ja) * 2013-03-15 2014-09-18 ピーエスフォー ルクスコ エスエイアールエル 半導体記憶装置及びこれを備えるシステム
GB2536201B (en) 2015-03-02 2021-08-18 Advanced Risc Mach Ltd Handling address translation requests
GB2536880B (en) * 2015-03-24 2021-07-28 Advanced Risc Mach Ltd Memory management
US10474461B2 (en) * 2016-09-22 2019-11-12 Qualcomm Incorporated Instruction-based synchronization of operations including at least one SIMD scatter operation
US10514943B2 (en) 2016-11-17 2019-12-24 Qualcomm Incorporated Method and apparatus for establishing system-on-chip (SOC) security through memory management unit (MMU) virtualization
US10736154B2 (en) 2017-06-13 2020-08-04 Rumfert, Llc Wireless real-time data-link sensor method and system for small UAVs
US11132044B2 (en) 2018-05-08 2021-09-28 Micron Technology, Inc. Dynamic P2L asynchronous power loss mitigation
US11867529B2 (en) 2018-06-01 2024-01-09 Rumfert, Llc Altitude initialization and monitoring system and method for remote identification systems (remote Id) monitoring and tracking unmanned aircraft systems (UAS) in the national airspace system (NAS)
CN112015474B (zh) * 2020-08-28 2024-01-26 格兰菲智能科技有限公司 电子装置及其命令数量减少方法
US11416960B2 (en) * 2020-11-06 2022-08-16 Samsung Electronics Co., Ltd. Shader accessible configurable binning subsystem

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6286092B1 (en) 1999-05-12 2001-09-04 Ati International Srl Paged based memory address translation table update method and apparatus
US6516373B1 (en) 1999-06-18 2003-02-04 Samsung Electronics Co., Ltd. Common motherboard interface for processor modules of multiple architectures
US6526462B1 (en) 1999-11-19 2003-02-25 Hammam Elabd Programmable multi-tasking memory management system
US6981132B2 (en) * 2000-08-09 2005-12-27 Advanced Micro Devices, Inc. Uniform register addressing using prefix byte
US6904483B2 (en) 2001-03-20 2005-06-07 Wind River Systems, Inc. System and method for priority inheritance
US6684305B1 (en) 2001-04-24 2004-01-27 Advanced Micro Devices, Inc. Multiprocessor system implementing virtual memory using a shared memory, and a page replacement method for maintaining paged memory coherence
GB2378277B (en) 2001-07-31 2003-06-25 Sun Microsystems Inc Multiple address translations
JP2003099272A (ja) 2001-09-20 2003-04-04 Ricoh Co Ltd タスク切替システムと方法およびdspとモデム
US7620678B1 (en) 2002-06-12 2009-11-17 Nvidia Corporation Method and system for reducing the time-to-market concerns for embedded system design
US6981072B2 (en) 2003-06-05 2005-12-27 International Business Machines Corporation Memory management in multiprocessor system
US7134007B2 (en) 2003-06-30 2006-11-07 Intel Corporation Method for sharing firmware across heterogeneous processor architectures
US7424709B2 (en) 2003-09-15 2008-09-09 Intel Corporation Use of multiple virtual machine monitors to handle privileged events
US20050251806A1 (en) 2004-05-10 2005-11-10 Auslander Marc A Enhancement of real-time operating system functionality using a hypervisor
US8127098B1 (en) 2004-05-11 2012-02-28 Globalfoundries Inc. Virtualization of real mode execution
US8271976B2 (en) 2004-06-30 2012-09-18 Microsoft Corporation Systems and methods for initializing multiple virtual processors within a single virtual machine
US7299337B2 (en) 2005-05-12 2007-11-20 Traut Eric P Enhanced shadow page table algorithms
US7739476B2 (en) 2005-11-04 2010-06-15 Apple Inc. R and C bit update handling
US7945913B2 (en) 2006-01-19 2011-05-17 International Business Machines Corporation Method, system and computer program product for optimizing allocation of resources on partitions of a data processing system
US20070283336A1 (en) 2006-06-01 2007-12-06 Michael Karl Gschwind System and method for just-in-time compilation in a heterogeneous processing environment
US8700883B1 (en) * 2006-10-24 2014-04-15 Nvidia Corporation Memory access techniques providing for override of a page table
US8082551B2 (en) 2006-10-30 2011-12-20 Hewlett-Packard Development Company, L.P. System and method for sharing a trusted platform module
US7681012B2 (en) * 2007-01-30 2010-03-16 Texas Instruments Incorporated Method, system and device for handling a memory management fault in a multiple processor device
US7685409B2 (en) 2007-02-21 2010-03-23 Qualcomm Incorporated On-demand multi-thread multimedia processor
US8789063B2 (en) 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems
US8250254B2 (en) 2007-07-31 2012-08-21 Intel Corporation Offloading input/output (I/O) virtualization operations to a processor
US8245236B2 (en) 2008-02-27 2012-08-14 International Business Machines Corporation Lock based moving of threads in a shared processor partitioning environment
US20090282198A1 (en) 2008-05-08 2009-11-12 Texas Instruments Incorporated Systems and methods for optimizing buffer sharing between cache-incoherent cores
US8127086B2 (en) 2008-06-06 2012-02-28 International Business Machines Corporation Transparent hypervisor pinning of critical memory areas in a shared memory partition data processing system
US8504839B2 (en) * 2008-10-27 2013-08-06 Advanced Micro Devices, Inc. Method, apparatus, and device for protecting against programming attacks and/or data corruption
US8301863B2 (en) 2008-11-17 2012-10-30 International Business Machines Corporation Recursive logical partition real memory map
US8291414B2 (en) 2008-12-11 2012-10-16 International Business Machines Corporation Shared resource service provisioning using a virtual machine manager
US20100242014A1 (en) 2009-03-17 2010-09-23 Xiaohan Zhu Symmetric multi-processor operating system for asymmetric multi-processor architecture
US9152200B2 (en) 2009-06-23 2015-10-06 Hewlett-Packard Development Company, L.P. Resource and power management using nested heterogeneous hypervisors
US8479196B2 (en) 2009-09-22 2013-07-02 International Business Machines Corporation Nested virtualization performance in a computer system
US8443376B2 (en) 2010-06-01 2013-05-14 Microsoft Corporation Hypervisor scheduler
US20110320766A1 (en) 2010-06-29 2011-12-29 Youfeng Wu Apparatus, method, and system for improving power, performance efficiency by coupling a first core type with a second core type
US20120072638A1 (en) 2010-09-16 2012-03-22 Unisys Corp. Single step processing of memory mapped accesses in a hypervisor
US8307169B2 (en) 2011-03-10 2012-11-06 Safenet, Inc. Protecting guest virtual machine memory
JP5648544B2 (ja) 2011-03-15 2015-01-07 富士通株式会社 スケジューリングプログラム、および情報処理装置
US8984330B2 (en) * 2011-03-28 2015-03-17 Siemens Corporation Fault-tolerant replication architecture
US9043562B2 (en) 2011-04-20 2015-05-26 Microsoft Technology Licensing, Llc Virtual machine trigger
US8677360B2 (en) 2011-05-12 2014-03-18 Microsoft Corporation Thread-related actions based on historical thread behaviors
US20130013889A1 (en) * 2011-07-06 2013-01-10 Jaikumar Devaraj Memory management unit using stream identifiers
US9250969B2 (en) 2011-08-30 2016-02-02 At&T Intellectual Property I, L.P. Tagging a copy of memory of a virtual machine with information for fetching of relevant portions of the memory
US20140053272A1 (en) 2012-08-20 2014-02-20 Sandor Lukacs Multilevel Introspection of Nested Virtual Machines
US10437591B2 (en) * 2013-02-26 2019-10-08 Qualcomm Incorporated Executing an operating system on processors having different instruction set architectures
US9606818B2 (en) * 2013-03-14 2017-03-28 Qualcomm Incorporated Systems and methods of executing multiple hypervisors using multiple sets of processors
US9396012B2 (en) 2013-03-14 2016-07-19 Qualcomm Incorporated Systems and methods of using a hypervisor with guest operating systems and virtual processors

Also Published As

Publication number Publication date
EP2972898B1 (en) 2017-11-22
KR20150130382A (ko) 2015-11-23
EP2972898A1 (en) 2016-01-20
JP2016515265A (ja) 2016-05-26
US10114756B2 (en) 2018-10-30
WO2014159418A1 (en) 2014-10-02
US20140281332A1 (en) 2014-09-18
CN105144122B (zh) 2018-10-26
CN105144122A (zh) 2015-12-09

Similar Documents

Publication Publication Date Title
JP6345231B2 (ja) 外部からプログラム可能なメモリ管理ユニット
JP6430970B2 (ja) 異なる命令セットアーキテクチャを有するプロセッサ上におけるオペレーティングシステムの実行
JP6240745B2 (ja) 複数のハイパーバイザを実行するシステムおよび方法
TWI574156B (zh) 具有獨立的使用者和監管者域的記憶體保護鑰結構
JP2021077408A (ja) アルゴリズム整合、機能無効化、または性能制限による後方互換性
JP6293795B2 (ja) スカラーレジスタデータ値に基づいたベクトルレジスタアドレス指定および関数
US10565131B2 (en) Main memory including hardware accelerator and method of operating the same
JP2015191657A (ja) 一方のアーキテクチャのコードモジュールが他方のアーキテクチャのライブラリモジュールを用いることを可能にするインターアーキテクチャ互換性モジュール
US10713021B2 (en) Geometric 64-bit capability pointer
KR101623465B1 (ko) 변환 색인 버퍼(tlb)에 대한 중첩 체크
US10248574B2 (en) Input/output translation lookaside buffer prefetching
CN112654965A (zh) 动态模块的外部分页和交换
US20150178203A1 (en) Optimized write allocation for two-level memory
JP2017219931A (ja) 情報処理装置、情報処理方法、およびプログラム
US20230393849A1 (en) Method and apparatus to expedite system services using processing-in-memory (pim)
US12061550B2 (en) Coherent multiprocessing enabled compute in storage and memory
US12007902B2 (en) Configurable memory system and memory managing method thereof
US20150186140A1 (en) Opcode trapping

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170216

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171214

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20171214

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20180226

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180305

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180417

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180427

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180522

R150 Certificate of patent or registration of utility model

Ref document number: 6345231

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees