JP6378733B2 - 共有仮想メモリをサポートする異種コンピュータシステムにおけるtlbシュートダウンの方法および装置 - Google Patents

共有仮想メモリをサポートする異種コンピュータシステムにおけるtlbシュートダウンの方法および装置 Download PDF

Info

Publication number
JP6378733B2
JP6378733B2 JP2016207724A JP2016207724A JP6378733B2 JP 6378733 B2 JP6378733 B2 JP 6378733B2 JP 2016207724 A JP2016207724 A JP 2016207724A JP 2016207724 A JP2016207724 A JP 2016207724A JP 6378733 B2 JP6378733 B2 JP 6378733B2
Authority
JP
Japan
Prior art keywords
tlb
entry
pasid
core
devices
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
JP2016207724A
Other languages
English (en)
Other versions
JP2017037672A5 (ja
JP2017037672A (ja
Inventor
エム. サンカラン、ラジェシュ
エム. サンカラン、ラジェシュ
コーカー、アルトゥグ
ランツ、フィリップ
ケー. マリック、アシット
ケー. マリック、アシット
ビー. クロスランド、ジェームズ
ビー. クロスランド、ジェームズ
ナヴァレ、アディトヴァ
ネイガー、ギルバート
ブイ. アンダーソン、アンドリュー
ブイ. アンダーソン、アンドリュー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2017037672A publication Critical patent/JP2017037672A/ja
Publication of JP2017037672A5 publication Critical patent/JP2017037672A5/ja
Application granted granted Critical
Publication of JP6378733B2 publication Critical patent/JP6378733B2/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
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • 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/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/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/30Providing cache or TLB in specific location of a processing system
    • G06F2212/303In peripheral interface, e.g. I/O adapter or channel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/682Multiprocessor TLB consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation

Landscapes

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

Description

本開示は概して、コンピュータおよび/または通信の分野に関する。より詳細には、マルチコアシステムにおいて、仮想メモリを共有する異種デバイスのための、トランスレーション・ルックアサイド・バッファ(TLB)の効率的なシュートダウンに関する。
現代のプロセッサは多くの場合、キャッシュを設けて、命令および/またはデータのコピーを、小さく速いメモリに、最短アクセスレイテンシで提供することにより、外部メモリのアクセス性能を向上させている。更に、このようなキャッシュは、トランスレーション・ルックアサイド・バッファ(TLB)のようなデバイスを使用して、仮想アドレスから物理アドレスへの変更のサポートを提供してもよく、例えば、ページ化仮想メモリシステムにおけるシステムページテーブルからの、仮想−物理アドレス変換をキャッシュする。TLBにおいて、一仮想アドレスと、TLBに格納されている変換の一つとが一致するイベントは、TLBヒットと称され、読み出された物理アドレスを使用して、キャッシュまたはメインメモリへのアクセスをより速く行うことが可能となる。TLBにおいて、一仮想アドレスと、TLBに格納されている変換の一つとが一致しないイベントは、TLBミスまたはページミスと称され、メモリの対応するページテーブルを参照することにより、変換が続けられる。
典型的なマルチコアプロセッサまたはマルチコア処理システムは、様々な同種または異種環境の処理デバイスを有してもよく、例えば、幾つかの同種プロセッサコアを、1以上の異種のグラフィックスプロセッサまたはビデオプロセッサ等と共に有してもよい。これら同種または異種の処理デバイスは、仮想メモリアドレス空間を共有してもよい。典型的には、同種プロセッサコアは、キャッシュ階層(hierachies)およびTLBを有してもよく、上記したように、ページ化された仮想メモリシステムにおけるシステムページテーブルから、仮想−物理アドレス変換をキャッシュする。現代のプロセッサにおいて、同種プロセッサコアはまた、ハードウェアにページミスハンドラ(PMH)を有して、システムページテーブルのページウォーク(page walk)を高速に行ってもよい。これら同種プロセッサコアのうちの1つが、物理メモリにおいていずれにもマッピングされていない仮想メモリにおけるページにアクセスしようとすると、メモリアクセスはページフォルト(page fault)となり、オペレーティングシステムは、この問題を解決しなくてはならなくなる。
グラフィックスプロセッサのような異種処理デバイスも、仮想−物理アドレス変換を実行するためにTLBのようなメカニズムを有してもよいが、多くの場合、同種プロセッサコアで実行されるソフトウェアが存在し、異種処理デバイス間で、ページ化された仮想メモリシステムを限定的であるが共有するために、ページテーブル等を設定する異種処理デバイスのドライバと通信を行ってもよい。しかしながら、同種プロセッサコアとは異なり、これらのマシーンの能力は限られている場合があり、例えば、ページフォルトを扱う能力を有さない場合がある。したがって、これら異種処理デバイス間で共有されるページは、メモリにロックダウンする必要があり、要求に応じて、オペレーティングシステムが、ディスクからおよびディスクにこの共有されるページをページング(paging)するのを防ぐ。この場合、サポート可能なアプリケーションの数が限られる、または、必要となる物理的メモリの量が増える。また、異種処理デバイス間でページ化された仮想メモリを共有するべく、ページテーブル等を設定するのに、同種プロセッサで実行されるソフトウェアによって、パフォーマンスオーバーヘッドが生じ、異種処理デバイスを使用する効果が低減する可能性がある。
同種プロセッサコアで実行されるソフトウェア(例えば、オペレーティングシステム)が、ページテーブルに変更を行うと、システム内の様々なTLBにキャッシュされた対応する変換が無効化する必要がある。これは、TLBシュートダウンとして知られている。1つの簡単な解決方法は、システム内の全てのデバイスに、無効化のメッセージをブロードキャストすることであるが、この方法では、望ましくない通信の混雑状態が発生する可能性がある。更に、異種処理デバイスのために設定されたページテーブルは、同種プロセッサコアで使用されるページテーブルとは同じ出ない場合があり、異種処理デバイスで使用されるメカニズムは、自身で、TLBエントリを無効化する能力および新規のページテーブル情報を回復する能力が限定されている場合がある。
望ましくない通信の混雑を防ぐために、オペレーティングシステムは、レイジー無効化(lazy invalidation)スキームの形式を使用していた。オペレーティングシステムは、同種プロセッサコアで実行され、様々な同種プロセッサコアでアクティブとなっているプロセス、アプリケーションまたはスレッドへのアクセスを有することから、必要な場合に、"シュートダウン"またはTLBエントリの無効化をトリガする場合がある、すなわち、TLBエントリを使用していたプロセスをアクティブに実行していたコアのTLBのみ、および/または、そのTLBエントリを使用するプロセスをアクティベートしたいコアのTLBのみのエントリを無効化する場合がある。このようにすることで、不必要なアクティビティおよびTLBシュートダウンのオーバーヘッドを回避することができる。しかしながら、オペレーティングシステムは、異種処理デバイスでは実行されないことから、異種処理デバイスが、新規ページ情報を回復可能である、および/または、ページフォルトを生成可能であると仮定しても、オペレーティングシステムは、どのプロセスがアクティブで、どのTLBエントリを無効化する必要があるかについては、トラックすることができない。したがって、プロセス仮想アドレス空間を共有している可能性のある異種処理デバイスの全てに、ブロードキャストを送信する必要がある。
キャッシュにアクセスするまたは仮想メモリを使用する、処理コアおよびその他の異種処理デバイスの数が増加すると、複数のデバイスが仮想メモリ空間を共有する場合に、メモリの混雑および競合といった、問題が生じることが予想される。このような問題に対する解決策については、まだ調査されていない。
本発明を、添付の図面に例示して説明がなされるが、本発明は、これらに限定されることはない。
異種デバイス間で、マルチコアシステムにおける仮想メモリを共有する従来の技術を示した図である。
効率的なTLBシュートダウンをサポートする異種デバイス間で、マルチコアシステムにおける仮想メモリを共有するための装置の一実施形態を示した図である。
異種デバイス間で、マルチコアシステムにおける仮想メモリを共有するために、効率的なTLBシュートダウンをサポートするプロセスの一実施形態を示したフローチャートである。
異種デバイス間で、マルチコアシステムにおける仮想メモリを共有するために、効率的なTLBシュートダウンをサポートするプロセスの別の実施形態を示したフローチャートである。
異種デバイス間で、マルチコアシステムにおける仮想メモリを共有するために、効率的なTLBシュートダウンをサポートするプロセスおよび装置を使用したプロセッサの一実施形態を示した図である。
異種デバイス間で、マルチコアシステムにおける仮想メモリを共有するために、効率的なTLBシュートダウンをサポートするプロセスおよび装置を使用したシステムの一実施形態を示した図である。
マルチコアシステムにおける仮想メモリを共有する異種デバイスのための、効率的なTLB(トランスレーション・ルックアサイド・バッファ)シュートダウンの、方法および装置について開示する。効率的なTLBシュートダウンのための装置の実施形態は、仮想アドレス変換エントリを格納するTLB、および、仮想アドレス変換エントリに対応するPASID(プロセスアドレス空間識別子)ステートエントリを保持する、TLBに接続されたメモリ管理ユニットを備える。PASIDステートエントリは、アクティブリファレンスステート(active reference state)およびレイジー無効化ステート(lazy-invalidation state)を含んでもよい。メモリ管理ユニットは、マルチコアシステムのデバイスからのPASIDステート更新リクエストに応答して、PASIDステートエントリのアトミック修正(atomic modification)を実行し、PASIDステートエントリのレイジー無効化ステートの読み出しを実行してもよい。メモリ管理ユニットは、デバイスに、PASIDステート更新応答を送信して、対応するレイジー無効化ステートに応答する起動の前に、TLBエントリを同期させてもよい。
上記およびそのほかの実施形態は、以下に説明する教示に従って実現され、本発明の範囲内において、様々な変更および改良を以下の教示において行うことが可能である。したがって、本明細書および添付の図面は、限定するものではなく例示するものであると解釈されるべきであり、本発明は、添付の特許請求の範囲および均等物によってのみ評価されうる。
図1には、異種デバイス間で、マルチコアシステムにおける仮想メモリを共有する従来技術が示されている。マルチコアプロセッサまたはマルチコア処理システムは、様々な同種処理デバイスまたは異種処理デバイスを備える。例えば、図1に示すシステムは、幾つかの同種プロセッサコアを備え、それらのうちの2つが、コア102およびコア104として示されており、GFX106のような1以上の異種グラフィックスプロセッサ、または、例えば、デバイス109のようなビデオプロセッサも備える。コア102およびコア104は、デコード131およびデコード151、スレッド毎キュー133および153、浮動小数点/単一命令複数データレジスタFP/SIMD REGS135aおよびFP/SIMD REGS155a、汎用レジスタGEN REGS135bおよびGEN REGS155b、浮動小数点/単一命令複数データ実行ユニットFP/SIMD EXU 137aおよびFP/SIMD EXU 157a、ならびに、整数実行ユニットINT EXU 137bおよびINT EXU 157bを介して、それぞれ、複数のプロセススレッドを実行する、マルチスレッドコアであってもよい。コア102およびコア104はまた、バス/インターコネクト115を介して、物理メモリ105と接続されてもよく、また、バス/インターコネクトユニットB/I−U120およびB/I−U140を介して、メモリユニットMEM−U125およびMEM−U145と接続されてもよい。コア102および104は、物理メモリ105およびバス/インターコネクト115、場合によっては、ラストレベルキャッシュLLC116を介して、異種処理デバイスGFX106およびデバイス109と接続されてもよい。
これら、同種または異種の処理デバイスは、物理メモリ105、および、必要に応じて、ラストレベルキャッシュLLC116を介して、仮想メモリアドレス空間を共有してもよい。典型的には、同種プロセッサコアは、キャッシュ階層構造を有してもよく、例えば、I−キャッシュ123、D−キャッシュ124、L2 126およびI−キャッシュ143、D−キャッシュ144、L2 166を有してもよく、更に、例えば、I−TLB121、D−TLB122およびI−TLB141、D−TLB142のような、システム、OS154、ページテーブル、PTBL152からの仮想−物理アドレス変換をキャッシュするTLBを、ページ化仮想メモリシステムに有してもよい。
同種プロセッサコア102および104はまた、システムページテーブルPTBL152のページウォークを実行するべく、ハードウェアに、ページミスハンドラPMH130およびPMH150を備えてもよい。これら同種プロセッサコア102および104のうちの1つが、物理メモリ105にマッピングされていない仮想メモリのページにアクセスしようとすると、メモリアクセスはページフォルトを引き起こし、オペレーティングシステムOS154は、問題の"解決(fix)"を行う。
グラフィックスプロセッサGFX106およびデバイス109のような異種処理デバイスも、仮想アドレスから物理アドレスへの変換を実行するべく、TLBのようなメカニズムを有してもよいが、典型的には、同種プロセッサコア102および104で実行されるソフトウェアが存在し、異種処理デバイスGFX106およびデバイス109間で、ページ化された仮想メモリシステムを限定的に共有するために、ページテーブル等を設定する異種処理デバイスGFX106およびデバイス109のドライバと通信を行ってもよい。しかしながら、同種プロセッサコア102および104とは異なり、これらのマシーンの能力は限られている場合があり、例えば、ページフォルトを扱う能力を有さない場合がある。したがって、これら異種処理デバイス間で共有されるページは、物理メモリ105にロックダウンする必要があり、要求に応じて、オペレーティングシステムOS154が、ディスクからおよびディスクにこの共有されるページをページング(paging)するのを防ぐ。この場合、サポート可能なアプリケーションの数が限られる、または、必要となる物理的メモリの量が増える。また、異種処理デバイスGFX106およびデバイス109間でページ化された仮想メモリを共有するべく、ページテーブル等を設定するのに使用される、同種プロセッサ102または104で実行されるソフトウェアによって、パフォーマンスオーバーヘッドが生じ、異種処理デバイスGFX106およびデバイス109を使用する効果が低減する可能性がある。
同種プロセッサコア102および104で実行されるソフトウェア(例えば、オペレーティングシステムOS154)が、ページテーブルPTBL152に変更を行うと、様々なTLB、すなわち、I−TLB121、D−TLB122およびI−TLB141、D−TLB142、ならびに、GFX106および/またはデバイス109内のTLBにキャッシュされた対応する変換を、無効化する必要がある。システム内の全てのデバイスに、無効化メッセージをブロードキャストすると、望ましくない通信の混雑が発生する可能性がある。望ましくない通信の混雑を回避するべく、オペレーティングシステムOS152は、レイジー無効化(lazy invalidation)スキームを使用してもよい。オペレーティングシステムOS152は、同種プロセッサコア102および104で実行され、様々な同種プロセッサコアでアクティブとなっているプロセス、アプリケーションまたはスレッドへのアクセスを有することから、必要に応じて、"シュートダウン"またはTLBエントリの無効化をトリガする場合がある、すなわち、TLBエントリを使用していたプロセスをアクティブに実行していたコアのTLB、I−TLB121、 D−TLB122およびI−TLB141、D−TLB142、および/または、そのTLBエントリを使用するプロセスをアクティベートしたいコアのTLBのみにおいて、無効化する場合がある。このようにすることで、不必要なアクティビティおよびTLBシュートダウンのオーバーヘッドを回避することができるが、これは、同種プロセッサコア102および104に対してのみである。しかしながら、オペレーティングシステムOS152は、異種処理デバイスGFX106およびデバイス109では実行されないことから、異種処理デバイスGFX106およびデバイス109が、新規ページ情報を回復可能である、および/または、ページフォルトを生成可能であると仮定しても、オペレーティングシステムOS152は、どのプロセスがアクティブで、どのTLBエントリを無効化する必要があるかについては、トラックすることができない。したがって、プロセス仮想アドレス空間を共有している可能性のある異種処理デバイスGFX106およびデバイス109の全てに、ブロードキャストを送信する必要がある。
キャッシュにアクセスするまたは仮想メモリを使用する、処理コアおよびその他の異種処理デバイスの数が増加すると、複数のデバイスが仮想メモリ空間を共有する場合に、メモリの混雑および競合といった、問題が生じることが予想される。
図2には、効率的なTLBシュートダウンをサポートする異種デバイス間で、マルチコアシステムにおける仮想メモリを共有するための装置201の一実施形態が示されている。装置201は、仮想アドレス変換エントリを格納するためのIOTLB213を備える。メモリ管理ユニットIOMMU212は、IOTLB213およびPASIDステートストレージ214に接続されて、IOTLB213の仮想アドレス変換エントリの少なくとも一部分に対応するPASIDステートエントリを維持する。PASIDステートエントリの実施形態はそれぞれ、アクティブリファレンスステートおよびレイジー無効化ステートを含んでもよく、以下に詳細に説明する。例示のため、IOTLB213およびPASIDステートストレージ214が、IOMMU212に含まれているように示されているが、これらの一方または両方が、別個のハードウェアまたはソフトウェアデータ構造として実装されてもよく、また、IOMMU212の外側、例えば、メモリ205に存在してもよい。
装置201は、必要に応じて、ラストレベルキャッシュLLC116およびスケジューラ218を備え、これらがIOMMU212に含まれているように示されているが、別個のハードウェアまたはソフトウェアデータ構造として実装されてもよく、また、IOMMU212の外側に存在してもよい。
装置201は、動作可能にバス/インターコネクト215と接続されて、マルチコアプロセッサまたは異種デバイスを有するマルチコア処理システムとの通信を行い、異種デバイスを有するマルチコアシステムにおける仮想メモリを、メモリ205を介して共有する。システムは、複数の同種コアを備え、それらのうちの2つが、コア202およびコア204として示されており、ならびに、異種デバイスも備え、それらのうちの2つが、グラフィックスデバイスGFX206およびGFX208として示されており、必要に応じて、その他の異種デバイスも備え、例えば、ビデオデバイス207およびデバイス209も備えてもよい。
複数の同種コア202および204は、デコード231およびデコード251、スレッド毎キュー233および253、浮動小数点/単一命令複数データレジスタhomogeneous REGS235aおよびFP/SIMD REGS255a、汎用レジスタGEN REGS235bおよびGEN REGS255b、浮動小数点/単一命令複数データ実行ユニットFP/SIMD EXU 237aおよびFP/SIMD EXU 257a、ならびに、整数実行ユニットINT EXU 237bおよびINT EXU 257bを介して、それぞれ、複数のプロセススレッドを実行する、マルチスレッドコアであってもよい。コア202およびコア204はまた、バス/インターコネクト215を介して、メモリ205と接続されてもよく、また、バス/インターコネクトユニットB/I−U220およびB/I−U240を介して、メモリユニットMEM−U225およびMEM−U245と接続されてもよい。コア202および204は、メモリ205およびバス/インターコネクト215、場合によっては、ラストレベルキャッシュLLC116を介して、異種処理デバイスGFX206およびGFX208、ならびに、必要に応じてその他の異種デバイス、例えば、ビデオデバイス207およびデバイス209と接続されてもよい。
これら、同種または異種の処理デバイスは、メモリ205、および、必要に応じて、ラストレベルキャッシュLLC116を介して、仮想メモリアドレス空間を共有してもよい。典型的には、同種プロセッサコアは、キャッシュ階層構造を有してもよく、例えば、I−キャッシュ223、D−キャッシュ224、L2 226およびI−キャッシュ243、D−キャッシュ244、L2 266を有してもよく、更に、例えば、I−TLB221、D−TLB222およびI−TLB241、D−TLB242のような、システム、OS254、ページテーブル、PTBL252からの仮想−物理アドレス変換をキャッシュするTLBを、ページ化仮想メモリシステムに有してもよい。
同種プロセッサコア202および204はまた、システムページテーブルPTBL252のページウォークを実行するべく、ハードウェアに、ページミスハンドラPMH230およびPMH250を備えてもよい。これら同種プロセッサコア202および204のうちの1つが、物理メモリ205にマッピングされていない仮想メモリのページにアクセスしようとすると、メモリアクセスはページフォルトを引き起こし、オペレーティングシステムOS254は、問題の"解決(fix)"を行う。
グラフィックスプロセッサGFX206およびGFX208のような異種処理デバイス、ならびに、必要に応じて、ビデオデバイス207およびデバイス209のようなその他の異種デバイスも、仮想アドレスから物理アドレスへの変換を実行するべく、例えば、TLB262、TLB282、TLB272およびTLB292のようなTLBメカニズムを有してもよい。TLB262、TLB282、TLB272およびTLB292の様々な実施形態はそれぞれ、同じ能力、または、同種プロセッサコア202および204に相当する能力を有してもよいし、有さなくてもよい。異種処理デバイスGFX206、GFX208、および、場合によっては、ビデオデバイス207およびデバイス209は、異種処理デバイスGFX206、GFX208、ビデオデバイス207およびデバイス209において実行するプロセススレッドをスケジュールする、スケジューラ、例えば、SCHED 268、SCHED288、SCHED278およびSCHED298を有してもよい。スケジューラSCHED268、SCHED288、SCHED278およびSCHED298、ならびに、場合によっては、中央スケジューラSCHED218を含めたスケジューラは、異種処理デバイスおいてプロセススレッドをアクティベートまたは非アクティベート(deactivate)するために、異種処理デバイスからのPASIDステート更新リクエストを発行してもよい。
メモリ管理ユニットIOMMU212は、マルチコアシステム内の複数の異種デバイスのうちの1以上の対応する要求デバイスから、1以上のPASIDステート更新リクエストを受信してもよい。要求デバイスの1つからのPASIDステート更新リクエストを処理する場合、IOMMU212は、そのPASIDステート更新リクエストに対応するPASIDステートのアトミック修正を実行してもよい。このようなアトミック修正の一実施形態は、アトミック読み出し/修正/書き込みオペレーションの形式であり、IOMMU212は、PASIDステートエントリのレイジー無効化ステートを読み出し、対応するPASIDステートのレイジー無効化チェックを実行し、例えば、要求デバイスによってアクティベートされる前に、プロセスアドレス空間の仮想アドレス変換エントリを、システムページテーブルと同期する必要があるかをチェックする。そして、IOMMU212は、PASIDステート更新リクエストに対応する要求デバイスに、PASIDステート更新応答を送信して、例えば、要求デバイスに、アクティベーションにする前に、レイジー無効化ステートが設定されることに応じて、デバイスのTLBエントリを同期するように示す。
異種デバイスを有するマルチコアシステムにおける仮想メモリを共有するための、効率的なTLBシュートダウンをサポートする1以上のプロセスの実施形態について、特に、図3および図4を参照して以下に詳細に説明する。
図3は、異種デバイス間で、マルチコアシステムにおける仮想メモリを共有するために、効率的なTLBシュートダウンをサポートするプロセス301の一実施形態を示したフローチャートである本明細書に開示されるプロセス301およびその他のプロセスは、専用ハードウェアまたはソフトウェア、または、汎用マシーンまたは専用マシーンもしくはこれらの組み合わせによって実行可能なファームウェアオペレーションコードを備える処理ブロックによって実行される。
プロセス301の処理ブロック310において、1以上のPASIDステート更新リクエストが、マルチコアシステムにおける複数の異種デバイスの1以上の対応する要求デバイスから受信される。処理ブロック320において、PASIDステートのアトミック修正が、PASIDステート更新リクエストのうちの1つに応じて実行され、処理ブロック330において、対応するPASIDについて、レイジー無効化チェックが実行される。アトミック修正は、アトミック読み出し/修正/書き込みオペレーションの形式であってもよく、IOMMUは、PASIDステートエントリのレイジー無効化ステートを読み出し、対応するPASIDステートのレイジー無効化チェックを実行し、例えば、要求デバイスによってアクティブにされる前に、プロセスアドレス空間の仮想アドレス変換エントリを、システムページテーブルと同期する必要があるかをチェックする。そして、ブロック350において、PASIDステート更新応答が、対応するPASIDステート更新リクエストに対応する要求デバイスに送信され、例えば、レイジー無効化ステートが設定されることに応じて、デバイスのTLBエントリを同期するように要求デバイスに示す。
処理ブロック360において、マルチコアシステムのオペレーティングシステムからのTLBシュートダウンの処理が行われる。IOTLBエントリがアクティブになると、このIOTLBエントリを無効化することで、TLBシュートダウンの処理が開始する。このような処理は、例えば、PASIDステートエントリにおけるアクティブリファレンスカウントが、ゼロでない場合には、異種デバイスの1以上のデバイスTLBエントリを無効化することを含んでもよい。これに替えて、TLBシュートダウンを処理することは、PASIDステートエントリを読み出し、PASIDステートエントリにおけるアクティブリファレンスカウントが、ゼロの場合には、すなわち、このTLBエントリを現在使用しているデバイスは存在しないが、あるデバイスのTLBにおいては依然としてアクティブ状態である場合には、PASIDステートエントリに、レイジー無効化フィールドを設定することを含んでもよい。
例として、プロセス301のある実施形態では、処理を開始させるイベントは、別の順番で発生する可能性もあり、また、別のイベント発生と同時に起こる可能性もあることは明らかである。例えば、TLBシュートダウンは、IOMMUがPASIDステート更新リクエストを処理している間、任意の時間にオペレーティングシステムから受信される。したがって、競合状態から保護し、PASIDステートおよびTLBエントリに対する更新の順序付けが、システムページテーブルに対する変更に関して、構造における仮想アドレス変換の正確性を維持することを確かにすることが重要である。
図4は、異種デバイス間で、マルチコアシステムにおける仮想メモリを共有するために、効率的なTLBシュートダウンをサポートするプロセスの別の実施形態を示したフローチャートである。
プロセス401の処理ブロック410において、PASIDステート更新リクエストが、マルチコアシステムにおける複数の異種デバイスの要求デバイスから受信される。処理ブロック415において、更新リクエストが、要求デバイスに対するPASIDステートをアクティベートするものか、非アクティベートするものかを判断する。リクエストが、要求デバイスのPASIDステートをアクティベートするものである場合には、処理ブロック420において、PASIDステートのアトミック修正が、PASIDステート更新リクエストに応じて実行される。ここで、レイジー無効化ステートが読み出され、アクティブリファレンスカウントRCOUNTがインクリメントされ、レイジー無効化ステートがクリアされる。アトミック修正は、アトミック読み出し/修正/書き込みオペレーションの形式であってもよい。リクエストが、要求デバイスのPASIDステートを非アクティベートするものである場合には、処理ブロック425において、アクティブリファレンスカウントRCOUNTが、デクリメントされる。
処理ブロック430において、対応するPASIDステートに対して、レイジー無効化チェックが実行される。アトミック修正では、IOMMUは、PASIDステートエントリのレイジー無効化ステートを読み出していることから、対応するPASIDステートのレイジー無効化チェックは、例えば、要求デバイスによってアクティブにされる前に、プロセスアドレス空間の仮想アドレス変換エントリを、システムページテーブルと同期する必要があるかを判断するべく、前に設定されているかを確認するために読み出されたステートをチェックすることを含んでもよい。
上記の通りである場合、処理ブロック440において、PASIDステートエントリにおけるアクティブリファレンスカウントがゼロでなく、レイジー無効化ステートがすでに設定されていることから、IOTLBエントリの無効化が開始され、更に、システムページテーブルと同期が必要な1以上の異種デバイスのデバイスTLBエントリを無効化する同期フラグが設定される。そして、処理ブロック450において、PASIDステート更新応答が、同期フラグの設定と共に、特定のPASIDステート更新リクエストに対応する要求デバイスに送信されて、要求デバイスに対して、アクティベーションの前に、デバイスのTLBエントリを同期させる必要があることを通知する。
上記の通りでない場合、すなわち、非アクティベーションリクエストである場合、処理ブロック435に移り、同期フラグはクリアされる。そして、処理ブロック445では、PASIDステート更新応答が、特定のPASIDステート更新リクエストに対応する要求デバイスに送信されると同時に、同期フラグがクリアされて、要求デバイスに対して、アクティベーションの前に、デバイスのTLBエントリを同期させる必要がないことを通知する。
処理ブロック455において、要求デバイスは、PASIDステート更新応答における同期フラグの設定に基づいて、アクティベーションの前に、デバイスTLBエントリを同期する必要がある場合がある。このように、PASIDステートエントリにおけるアクティブリファレンスカウントが、ゼロから1にインクリメントされ、レイジー無効化ステートが以前に設定されていると、その都度、同期フラグが設定される。レイジー無効化ステートに基づき、複数のデバイスに対する同期のその他の実施形態を使用してもよい。
次いで、マルチコアシステムのオペレーティングシステムからのTLBシュートダウンの処理がプロセス402で実行され、最初に、処理ブロック460において、グローバルページが修正されたかを判断する。修正されている場合には、TLBシュートダウンの処理は、処理ブロック475において、IOTLBエントリおよび異種デバイスの対応するデバイスTLBエントリの全てを無効化する段階を含んでもよい。修正されていない場合には、処理ブロック465に移り、対応するPASIDステートエントリが読み出される。次いで処理ブロック470において、PASIDステートエントリにおけるアクティブリファレンスカウントがゼロであるかを判断する。ゼロでない場合には、TLBシュートダウンの処理は再び、処理ブロック475において、IOTLBエントリおよび異種デバイスの対応するデバイスTLBエントリの全てを無効化する段階を含む。PASIDステートエントリにおけるアクティブリファレンスカウントがゼロである場合には、PASIDステートエントリにおけるレイジー無効化フィールドが設定されて、処理ブロック420、430および440で説明したようなレイジー無効化がトリガされる。処理は、再び、プロセス401の処理ブロック410から繰り返される。
プロセス401および402のある実施形態において、プロセス401および402の処理を実行させるイベントは、別の順番で発生してもよいし、同時に発生してもよい。例えば、オペレーティングシステムから、TLBシュートダウンを任意のタイミングで受信することができ、プロセス402の処理を行い、同時に、IOMMUが、PASIDステート更新リクエストを処理してもよい。したがって、競合状態から保護し、PASIDステートおよびTLBエントリに対する更新の順序付けが、システムページテーブルに対する変更に関して、構造における仮想アドレス変換の正確性を維持することを確かにすることが重要である。読み出し−修正−書き込みおよびテスト−設定のようなアトミックオペレーション、ロックド比較交換命令(locked compare-and-exchange instruction)、および、重要な部分(例えば、セマフォ(semaphore))を扱うその他の技術の少なくとも1つを、上記の目的を達成するべく、当業者は様々な実施形態において使用できる。
図5は、異種デバイス506−509間で、マルチコアシステムにおける仮想メモリを共有するために、効率的なTLBシュートダウンをサポートする装置501、および、例えば、プロセス301を使用するプロセッサ503の一実施形態を示した図である。プロセッサ503装置501は、仮想アドレス変換エントリを格納するIOTLB513を備える。メモリ管理ユニット(MMU)512は、IOTLB513およびPASIDステートストレージ514に接続されて、IOTLB513の仮想アドレス変換エントリの少なくとも一部分に対応するPASIDステートエントリを維持する。PASIDステートエントリの実施形態はそれぞれ、アクティブリファレンスステートおよびレイジー無効化ステートを含んでもよい。IOTLB513およびPASIDステートストレージ514が、MMU512に含まれているように示されているが、これらの一方または両方が、別個のハードウェアまたはソフトウェアデータ構造として実装されてもよく、また、MMU512の外側、例えば、メモリ505に存在してもよい。
プロセッサ503の装置501は、必要に応じて、ラストレベルキャッシュLLC516およびスケジューラ518を備え、これらがMMU512に含まれているように示されているが、別個のハードウェアまたはソフトウェアデータ構造として実装されてもよく、また、MMU512の外側に存在してもよい。
プロセッサ503の装置501は、動作可能にバス/インターコネクト515および551と接続されて、マルチコアプロセッサまたは異種デバイスを有するマルチコア処理システムとの通信を行い、異種デバイスを有するマルチコアシステムにおける仮想メモリを、メモリ505を介したメモリ制御553を使用して、共有する。システムは、複数の同種コアを備えてもよく、それらのうちの2つが、コア502およびコア504として示されており、ならびに、異種デバイスも備え、それらのうちの2つが、グラフィックスデバイスGFX506およびGFX508として示されており、必要に応じて、その他の異種デバイスも備え、例えば、ビデオデバイス507およびデバイス509も備えてもよい。
複数の同種のコア502および504は、例えば、図2を参照して上記で説明したように、実行される複数のプロセススレッドを処理するマルチスレッドコアであってもよい。コア502およびコア504は、バス/インターコネクト515を介して様々なデバイスと接続されてもよく、例えば、I/O拡張デバイス537、NAND制御557、トランスポートプロセッサ558、セキュリティプロセッサ559、ビデオディスプレイロジック527、オーディオ/ビデオI/O548、オーディオデコードロジック549、および、必要に応じて単一命令複数データ(SIMD)コプロセッサ591と接続されてもよい。コア502およびコア504は、バス/インターコネクト551およびメモリ制御553を介して、メモリ505と接続されてもよい。コア502および504はまた、メモリ505、ならびに、バス/インターコネクト515および551を介して、場合によっては、ラストレベルキャッシュLLC516を介して、異種処理デバイスGFX506およびGFX508と接続されてもよく、必要に応じて、ビデオデバイス507およびデバイス509のようなその他の異種デバイスと接続されてもよい。
これら、同種または異種の処理デバイスは、メモリ505、および、必要に応じて、ラストレベルキャッシュLLC516を介して、仮想メモリアドレス空間を共有してもよい。典型的には、同種プロセッサコアは、キャッシュ階層構造を有してもよく、例えば、L2 526およびL2 546、ならびに、例えば、TLB522およびTLB242のようなTLBを含み、ページ化された仮想メモリシステムにおいて、システム、OS554、ページテーブル、PTBL552からの仮想−物理アドレス変換をキャッシュする。
同種プロセッサコア502および504はまた、システムページテーブルPTBL552のページウォークを実行するべく、ハードウェアに、ページミスハンドラ(図示せず)を備えてもよい。これら同種プロセッサコア502および504のうちの1つが、物理メモリ505にマッピングされていない仮想メモリのページにアクセスしようとすると、メモリアクセスはページフォルトを引き起こし、オペレーティングシステムOS554は、問題の"解決"を行う。
グラフィックスプロセッサGFX506およびGFX508のような異種処理デバイス、ならびに、場合によっては、ビデオデバイス507およびデバイス509のようなその他の異種デバイスも、仮想アドレスから物理アドレスへの変換を実行するべく、例えば、TLB562、TLB582、TLB 572およびTLB592であるTLBのようなメカニズムを有してもよい。TLB562、TLB582、TLB572およびTLB592の様々な実施形態はそれぞれ、同じ能力、または、同種プロセッサコア502および504に相当する能力を有してもよいし、有さなくてもよい。異種処理デバイスGFX506、GFX508、および、場合によっては、ビデオデバイス507およびデバイス509は、異種処理デバイスGFX506、GFX508、ビデオデバイス507およびデバイス509において実行するプロセススレッドをスケジュールする、スケジューラ、例えば、SCH568、SCH588、SCH578およびSCH598を有してもよい。スケジューラSCH568、SCH588、SCH578およびSCH598、ならびに、場合によっては、中央スケジューラSCH518を含めたスケジューラは、異種処理デバイスおいてプロセススレッドをアクティベートまたは非アクティベート(deactivate)するために、異種処理デバイスからのPASIDステート更新リクエストを発行してもよい。
メモリ管理ユニット512は、マルチコアシステム内の複数の異種デバイスのうちの1以上の対応する要求デバイスから、1以上のPASIDステート更新リクエストを受信してもよい。要求デバイスの1つからのPASIDステート更新リクエストを処理する場合、MMU512は、そのPASIDステート更新リクエストに対応するPASIDステートのアトミック修正を実行してもよい。このようなアトミック修正の一実施形態は、アトミック読み出し/修正/書き込みオペレーションの形式であり、MMU512は、PASIDステートエントリのレイジー無効化ステートを読み出し、対応するPASIDステートのレイジー無効化チェックを実行し、例えば、要求デバイスによってアクティベートされる前に、プロセスアドレス空間の仮想アドレス変換エントリを、システムページテーブルと同期する必要があるかをチェックする。そして、MMU512は、PASIDステート更新リクエストに対応する要求デバイスに、PASIDステート更新応答を送信して、例えば、要求デバイスに、アクティベーションの前に、レイジー無効化ステートが設定されることに応じて、デバイスのTLBエントリを同期するように示す。
図6は、異種デバイス606−609間で、マルチコアシステムにおける仮想メモリを共有するために、効率的なTLBシュートダウンをサポートするプロセス、例えば、プロセス301、および、装置601を使用したシステム610の一実施形態を示した図である。
システム610は、仮想アドレス変換エントリを格納するIOTLB613を含むプロセッサ603の装置601を備える。メモリ管理ユニット612は、IOTLB613およびPASIDステートストレージ614に接続されて、IOTLB613の仮想アドレス変換エントリの少なくとも一部分に対応するPASIDステートエントリを維持する。PASIDステートエントリの実施形態はそれぞれ、アクティブリファレンスステートおよびレイジー無効化ステートを含んでもよい。例示のため、IOTLB613およびPASIDステートストレージ614が、MMU612に含まれているように示されているが、これらの一方または両方が、別個のハードウェアまたはソフトウェアデータ構造として実装されてもよく、また、MMU612の外側、例えば、メモリ605に存在してもよい。
プロセッサ603の装置601は、必要に応じて、ラストレベルキャッシュLLC616およびスケジューラ618を備え、これらがMMU612に含まれているように示されているが、別個のハードウェアまたはソフトウェアデータ構造として実装されてもよく、また、MMU612の外側に存在してもよい。
プロセッサ603の装置601は、動作可能にバス/インターコネクト615および651とと接続されて、マルチコアプロセッサ、または、異種デバイスを有するマルチコア処理システムとの通信を行い、異種デバイスを有するマルチコアシステムにおける仮想メモリを、メモリ605を介してメモリ制御653を使用して共有する。システム610の実施形態を、マルチコアプロセッサまたはマルチコア処理システムとの通信を行う、例えば、PCI(Peripheral Component Interconnect)またはPCIエクスプレス、もしくは、SATA(Serial Advanced Technology Attachment)標準的なまたは非標準的な特許技術、インターフェース、バスまたはインターコネクト615および651を使用して実装してもよい。
システム610の別の実施形態は、標準的なまたは非標準的な特許技術、インターフェース、バスまたはインターコネクトを使用して実装してもよく、例えば、SPI(Serial Peripheral Interface)バス、ISA(Industry Standard Architecture)バス、PC/104、PC/104+および拡張ISA、USB(Universal Serial Bus)AVC(Audio Video Class)、AMBA(Advanced Microcontroller Bus Architecture)(Advanced Peripheral Bus)APB、ファイヤーワイヤ(IEEE規格1394a-2000 High Performance Serial Bus- Amendment 1, ISBN 0-7381-1958-X; IEEE規格1394b-2002 High Performance Serial Bus-Amendment 2, ISBN 0-7381-3253-5; IEEE規格I394c-2006, 2007-06-08, ISBN 0-7381-5237-4)、HDMI(登録商標)(High-Definition Multimedia Interface)、VESA(Video Electronic Standards Association)のディスプレイポートおよびミニディスプレイポート、MIPI(登録商標)(Mobile Industry Processor Interface)アライアンスの SLEVIbus(登録商標)(Serial Low-power Inter-chip Media Bus)、LLI(Low Latency Interface、CSI(Camera Serial Interface)DSI(Display Serial Interface)等を使用して実装してもよい。
システム610は、複数の同種コアを備えてもよく、それらのうちの2つが、コア602およびコア604として示されており、ならびに、異種デバイスも備え、それらのうちの2つが、グラフィックスデバイスGFX606およびGFX608として示されており、必要に応じて、その他の異種デバイスも備え、例えば、ビデオデバイス607およびデバイス609も備えてもよい
複数の同種のコア602および604は、実行される複数のプロセススレッドを処理するマルチスレッドコアであってもよい。同種プロセッサコア602およびコア604は、バス/インターコネクト615を介して、様々なデバイスに接続されてもよく、例えば、ブリッジ30、無線接続デバイス20、モデムデバイス26およびオーディオI/Oデバイス28に接続されてもよい。システム610のある実施形態は、例えば、タブレットコンピュータまたはスマートフォンで使用される、システムオンチップとして実装されてもよい。このような実施形態では、無線接続デバイス20は、無線LAN(ローカルエリアネットワーク)リンクを提供し、モデムデバイス26は、4G(第4世代)、5G(第5世代)またはそれ以降の世代の電話接続を提供し、オーディオIOデバイス28は、例えば、ヘッドセット、スピーカ、ハンドセットマイク、オーディオ入出力チャネルおよびアンプを含むオーディオヒユーマンインターフェースデバイスのセットを提供してもよい。
同種プロセッサコア602および604は、様々なその他のシステムデバイスと通信を行うために、バス/インターコネクト615、ブリッジ30およびバス/インターコネクト18と接続され、その他のシステムデバイスとしては、これに限定されないが、無線接続デバイス20、モデムデバイス26、および、オーディオI/Oデバイス28、カメラインターフェース21、Fast IrDA(赤外線通信協会)ポート23、HD(high definition)マルチメディアインターフェース24、USB25、ディスプレイコントロール27、および、代替マスターインターフェース29が挙げられる。同種プロセッサコア602および604は、様々なその他のシステムデバイスと通信を行うために、バス/インターコネクト615、ブリッジ30およびバス/インターコネクト11と接続され、その他のシステムデバイスとしては、これに限定されないが、フラッシュメモリ13、SD(セキュアデジタル)メモリ16、MMC(マルチメディアカード)17およびSSD(半導体ドライブ)19が挙げられる。同種プロセッサコア602および604は、様々なその他のシステムデバイスと通信を行うために、バス/インターコネクト615、ブリッジ30およびバス/インターコネクト18と接続され、その他のシステムデバイスとしては、これに限定されないが、UART(universal asynchronous receiver/transmitter)31、カメラ制御32、BlueTooth(登録商標) UART33、必要に応じて、Wi−Fi 802.11a/b/g送受信機および/またはGPS(Global Positioning System)送受信機、キーパッド634、バッテリー制御35、I/O拡張37およびタッチスクリーン制御39が挙げられる。
同種プロセッサコア602およびコア604は、バス/インターコネクト651およびメモリ制御653を介して、メモリ605と接続されてもよい。同種プロセッサコア602および604はまた、メモリ605、ならびに、バス/インターコネクト615および651を介して、場合によっては、ラストレベルキャッシュLLC616を介して、異種処理デバイスGFX606およびGFX608と接続されてもよく、必要に応じて、ビデオデバイス607およびデバイス609のようなその他の異種デバイスと接続されてもよい。システム610のメモリ605およびその他の有形記憶媒体は、OS654、MMU612、SCH618、668、678、688および698、ならびに、その他のデバイスおよび/またはドライバ(図示せず)の実行可能命令を含む、機能記述マテリアルを記録してもよく、これら命令は、マルチコアシステムにおける仮想メモリを異種デバイス606−609と共有するための、効率的なTLBシュートダウンをサポートするべく、同種プロセッサコア602および604によって実行されてもよい。
システム610の実施形態の一部は、1つのコンピュータ内で同時に実行される複数のオペレーティングシステムが、PCIエクスプレストポロジーにネイティブI/O仮想化を提供するシングルルートI/O仮想化(SRIOV)、または、複数のルートコンプレックスがPCIエクスプレス階層を共有するトポロジーに、ネイティブI/O仮想化を提供するマルチルートI/O仮想化(MRIOV)、のようにネイティブにデバイスを共有することを可能とする、業界標準規格に従ってもよい。システム610のある実施形態は、標準的なまたは非標準的な特許技術、インターフェース、バスまたはインターコネクトを含み、例えば、SPI(Serial Peripheral Interface)バス、USB、AMBA APB、FireWire、HDMI(登録商標)、ミニディスプレイポート、MIPI SLIMバス、MIPI LLI、MIPI CSI、MIPI DSI等を含む。
これら同種または異種処理デバイスは、メモリ605、および、場合によっては、ラストレベルキャッシュLLC616を介して、仮想メモリアドレス空間を共有してもよい。典型的には、同種プロセッサコアは、キャッシュ階層構造を有してもよく、例えば、L2 626およびL2 646、ならびに、例えば、TLB622およびTLB642のようなTLBを含み、ページ化された仮想メモリシステムにおいて、ホストまたはゲストシステム、OS654、ページテーブル、PTBL652からの仮想−物理アドレス変換をキャッシュする。
同種プロセッサコア602および604はまた、システムページテーブルPTBL652のページウォークを実行するべく、ハードウェアに、ページミスハンドラ(図示せず)を備えてもよい。これら同種プロセッサコア602および604のうちの1つが、物理メモリ605にマッピングされていない仮想メモリのページにアクセスしようとすると、メモリアクセスはページフォルトを引き起こし、オペレーティングシステムOS654は、問題の"解決"を行う。
グラフィックスプロセッサGFX606およびGFX608のような異種処理デバイス、ならびに、場合によっては、ビデオデバイス607およびデバイス609のようなその他の異種デバイスも、仮想アドレスから物理アドレスへの変換を実行するべく、例えば、TLB662、TLB682、TLB672およびTLB692であるTLBのようなメカニズムを有してもよい。TLB662、TLB682、TLB672およびTLB692の様々な実施形態はそれぞれ、同じ能力、または、同種プロセッサコア602および604に相当する能力を有してもよいし、有さなくてもよい。異種処理デバイスGFX606、GFX608、および、場合によっては、ビデオデバイス607およびデバイス609は、異種処理デバイスGFX606、GFX608、ビデオデバイス607およびデバイス609において実行するプロセススレッドをスケジュールする、スケジューラ、例えば、SCH668、SCH688、SCH678およびSCH698を有してもよい。スケジューラ、例えば、SCH668、SCH688、SCH678およびSCH698はそれぞれ、ならびに、場合によっては、中央スケジューラSCH618を含めたスケジューラは、異種処理デバイスおいてプロセススレッドをアクティベートまたは非アクティベート(deactivate)するために、異種処理デバイスからのPASIDステート更新リクエストを発行してもよい。
メモリ管理ユニット612は、マルチコアシステム内の複数の異種デバイスのうちの1以上の対応する要求デバイスから、1以上のPASIDステート更新リクエストを受信してもよい。要求デバイスの1つからのPASIDステート更新リクエストを処理する場合、MMU612は、そのPASIDステート更新リクエストに対応するPASIDステートのアトミック修正を実行してもよい。このようなアトミック修正の一実施形態は、アトミック読み出し/修正/書き込みオペレーションの形式であり、MMU612は、PASIDステートエントリのレイジー無効化ステートを読み出し、対応するPASIDステートのレイジー無効化チェックを実行し、例えば、要求デバイスによってアクティベートされる前に、プロセスアドレス空間の仮想アドレス変換エントリを、システムページテーブルと同期する必要があるかをチェックする。そして、MMU612は、PASIDステート更新リクエストに対応する要求デバイスに、PASIDステート更新応答を送信して、例えば、要求デバイスに、アクティベーションの前に、レイジー無効化ステートが設定されることに応じて、デバイスのTLBエントリを同期するように示す。
上記の説明は、本発明の望ましい実施形態を例示することを目的としている。上記の説明は、本発明の好ましい実施形態を述べたものであり、上述された考察から、特に成長が早く更なる発展を簡単に予測できない技術分野において、本発明の原則に反することなく特許請求の範囲および均等物の範囲内において、本発明における配置や細部構成に変更または改良を加えることが可能であることは、当業者にとって明らかである。本明細書によれば、以下の各項目に記載の事項もまた開示される。
[項目1]
仮想メモリを共有する複数の異種デバイスを有するマルチコアシステムにおける、効率的なTLBシュートダウンの方法であって、
前記マルチコアシステムにおける前記複数の異種デバイスのうちの1以上の要求デバイスから、対応する1以上のプロセスアドレス空間識別子(PASID)ステート更新リクエストを受信する段階と、
前記1以上のPASIDステート更新リクエストのうちの第1のPASIDステート更新リクエストに対応するPASIDステートのアトミック修正を実行する段階であって、前記PASIDステートのエントリがレイジー無効化ステートを含む段階と、
前記PASIDに対応する仮想アドレス変換エントリを、アクティブにされる前にシステムページテーブルと同期する必要があるかを判断すべく、前記対応するPASIDステートのレイジー無効化チェックを実行する段階と、
前記1以上のPASIDステート更新リクエストのうちの前記第1のPASIDステート更新リクエストに対応する要求デバイスに、PASIDステート更新応答を送信する段階と、を備える方法。
[項目2]
前記マルチコアシステムにおけるオペレーティングシステムからのTLBシュートダウンを処理する段階を更に備える、項目1に記載の方法。
[項目3]
前記TLBシュートダウンを処理する段階は、IOTLBエントリを無効化する段階を有する、項目2に記載の方法。
[項目4]
前記TLBシュートダウンを処理する段階は、前記複数の異種デバイスのうちの一のデバイスのデバイスTLBエントリを無効化する段階を備える、項目2または3に記載の方法。
[項目5]
前記TLBシュートダウンを処理する段階は、
PASIDステートエントリを読み出す段階と、
前記PASIDステートエントリにおけるアクティブリファレンスカウントがゼロである場合には、前記PASIDステートエントリにレイジー無効化フィールドを設定する段階と、を有する項目2に記載の方法。
[項目6]
前記TLBシュートダウンを処理する段階は、
前記PASIDステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、IOTLBエントリを無効化する段階と、
前記PASIDステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、前記複数の異種デバイスのうちの一のデバイスのデバイスTLBエントリを無効化する段階と、を有する項目5に記載の方法。
[項目7]
前記PASIDステートエントリに前記レイジー無効化フィールドを設定する段階は、ロックド比較交換命令(locked compare-and-exchange instruction)およびアトミック読み出し/修正/書き込みの少なくとも1つであるオペレーションを使用して実行される、項目5に記載の方法。
[項目8]
前記PASIDステートの前記アトミック修正を実行する段階は、
前記第1のPASIDステート更新リクエストが、非アクティベーション更新を示す場合には、アクティブリファレンスカウントをデクリメントする段階を有する、項目1から6の何れか一項に記載の方法。
[項目9]
前記PASIDステートの前記アトミック修正を実行する段階は、
レイジー無効化フィールドを含むPASIDステートエントリを読み出す段階と、
前記第1のPASIDステート更新リクエストが、アクティベーション更新を示す場合には、アクティブリファレンスカウントをインクリメントする段階と、
前記第1のPASIDステート更新リクエストが、アクティベーション更新を示す場合には、前記レイジー無効化フィールドをクリアする段階と、を有する、項目1から6の何れか一項に記載の方法。
[項目10]
読み出された前記PASIDステートエントリに含まれる前記レイジー無効化フィールドが設定された場合には、IOTLBエントリを無効化する段階と、
読み出された前記PASIDステートエントリに含まれる前記レイジー無効化フィールドが設定され、前記第1のPASIDステート更新リクエストが、アクティベーション更新を示す場合には、前記第1のPASIDステート更新リクエストに対してデバイス同期フラグを設定する段階とを更に備える、項目9に記載の方法。
[項目11]
複数の仮想アドレス変換エントリを格納するTLBと、
前記TLBに接続され、前記複数の仮想アドレス変換エントリの一部に対応する複数のプロセスアドレス空間識別子(PASID)ステートエントリを保持するメモリ管理ユニットとを備え、
前記複数のPASIDステートエントリはそれぞれ、レイジー無効化ステートを含み、
前記メモリ管理ユニットは、マルチコアシステムにおける複数の異種デバイスのうちの一のデバイスから、第1のPASIDステート更新リクエストを受信すると、第1のPASIDステートエントリのアトミック修正を実行し、前記第1のPASIDステートエントリの前記レイジー無効化ステートを読み出して、前記PASIDに対応する仮想アドレス変換エントリを、アクティベーションの前にシステムページテーブルと同期する必要があるかを判断し、
前記メモリ管理ユニットは、少なくとも前記レイジー無効化ステートが読み出されると、アクティベーションの前にデバイスTLBエントリを同期するべく、前記一のデバイスに、PASIDステート更新応答を送信する、装置。
[項目12]
前記第1のPASIDステートエントリの前記アトミック修正は、
レイジー無効化ステートを含む前記第1のPASIDステートエントリを読み出すこと、
前記第1のPASIDステート更新リクエストが、アクティベーション更新を示す場合には、アクティブリファレンスカウントをインクリメントすること、および、
前記第1のPASIDステート更新リクエストが、アクティベーション更新を示す場合には、前記レイジー無効化ステートをクリアすること、を含む、項目11に記載の装置。
[項目13]
前記メモリ管理ユニットは更に、少なくとも前記レイジー無効化ステートが読み出されると、
前記第1のPASIDステートエントリに対応するTLB仮想アドレス変換エントリを無効化し、および、
前記一のデバイスに送信される前記PASIDステート更新応答に対する同期フラグを設定する、項目11または12に記載の装置。
[項目14]
前記メモリ管理ユニットは更に、
前記マルチコアシステムにおけるオペレーティングシステムからのTLBシュートダウンを処理する、項目11または12に記載の装置。
[項目15]
前記TLBシュートダウンを処理することは、
TLB仮想アドレス変換エントリを無効化することを含む、項目14に記載の装置。
[項目16]
前記TLBシュートダウンを処理することは、
前記複数の異種デバイスのうちの一のデバイスのデバイスTLBエントリを無効化することを含む、項目14に記載の装置。
[項目17]
前記TLBシュートダウンを処理することは、
PASIDステートエントリを読み出すこと、および、
前記PASIDステートエントリにおけるアクティブリファレンスカウントがゼロである場合には、前記PASIDステートエントリにレイジー無効化フィールドを設定すること、を含む、項目14に記載の装置。
[項目18]
前記TLBシュートダウンを処理することは、
前記PASIDステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、前記TLBにおける仮想アドレス変換エントリを無効化すること、および、
前記PASIDステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、前記複数の異種デバイスのうちの一のデバイスのデバイスTLBエントリを無効化すること、を含む、項目17に記載の装置。
[項目19]
前記PASIDステートエントリに前記レイジー無効化フィールドを設定することは、ロックド比較交換命令(locked compare-and-exchange instruction)およびアトミック読み出し/修正/書き込みの少なくとも1つであるオペレーションを使用して実行される、項目17に記載の装置。
[項目20]
マルチコアプロセッサであって、
第1の複数の同種処理コアと、
異種処理デバイスと、
複数の仮想アドレス変換エントリを格納するTLBと、
前記TLBに接続され、前記複数の仮想アドレス変換エントリの一部に対応する複数のプロセスアドレス空間識別子(PASID)ステートエントリを保持するメモリ管理ユニットとを備え、
前記複数のPASIDステートエントリはそれぞれ、レイジー無効化ステートを含み、
前記メモリ管理ユニットは、マルチコアプロセッサにおける複数の異種デバイスのうちの一のデバイスから、第1のPASIDステート更新リクエストを受信すると、第1のPASIDステートエントリのアトミック修正を実行し、前記第1のPASIDステートエントリの前記レイジー無効化ステートを読み出して、前記PASIDに対応する仮想アドレス変換エントリを、アクティベーションの前にシステムページテーブルと同期する必要があるかを判断し、
前記メモリ管理ユニットは、少なくとも前記レイジー無効化ステートが読み出されると、アクティベーションの前にデバイスTLBエントリを同期するべく、前記一のデバイスに、PASIDステート更新応答を送信する、マルチコアプロセッサ。
[項目21]
前記第1のPASIDステートエントリの前記アトミック修正は、
レイジー無効化ステートを含む前記第1のPASIDステートエントリを読み出すこと、
前記第1のPASIDステート更新リクエストが、アクティベーション更新を示す場合には、アクティブリファレンスカウントをインクリメントすること、および、
前記第1のPASIDステート更新リクエストが、アクティベーション更新を示す場合には、前記レイジー無効化ステートをクリアすること、を含む、項目20に記載のマルチコアプロセッサ。
[項目22]
前記メモリ管理ユニットは更に、
オペレーティングシステムからのTLBシュートダウンを処理する、項目20または21に記載のマルチコアプロセッサ。
[項目23]
前記TLBシュートダウンを処理することは、
PASIDステートエントリを読み出すこと、および、
前記PASIDステートエントリにおけるアクティブリファレンスカウントがゼロである場合には、前記PASIDステートエントリにレイジー無効化フィールドを設定すること、を含む、項目22に記載のマルチコアプロセッサ。
[項目24]
前記TLBシュートダウンを処理することは、
前記PASIDステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、前記TLBにおける仮想アドレス変換エントリを無効化すること、および、
前記PASIDステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、前記複数の異種デバイスのうちの一のデバイスのデバイスTLBエントリを無効化すること、を含む、項目23に記載のマルチコアプロセッサ。
[項目25]
前記PASIDステートエントリに前記レイジー無効化フィールドを設定することは、ロックド比較交換命令(locked compare-and-exchange instruction)およびアトミック読み出し/修正/書き込みの少なくとも1つであるオペレーションを使用して実行される、項目23に記載のマルチコアプロセッサ。
[項目26]
マルチコアシステムであって、
複数の仮想アドレス変換エントリを含む複数のページテーブルを格納するメモリと、
第1の複数の同種処理コアと、
異種処理デバイスと、
前記複数の仮想アドレス変換エントリを格納するTLBと、
前記TLBに接続され、前記複数の仮想アドレス変換エントリの一部に対応する複数のプロセスアドレス空間識別子(PASID)ステートエントリを保持するメモリ管理ユニットとを備え、
前記複数のPASIDステートエントリはそれぞれ、レイジー無効化ステートを含み、
前記メモリ管理ユニットは、前記マルチコアシステムにおける複数の異種デバイスのうちの一のデバイスから、第1のPASIDステート更新リクエストを受信すると、第1のPASIDステートエントリのアトミック修正を実行し、前記第1のPASIDステートエントリの前記レイジー無効化ステートを読み出して、前記PASIDに対応する仮想アドレス変換エントリを、アクティベーションの前にシステムページテーブルと同期する必要があるかを判断し、
前記メモリ管理ユニットは、少なくとも前記レイジー無効化ステートが読み出されると、アクティベーションの前にデバイスTLBエントリを同期するべく、前記一のデバイスに、PASIDステート更新応答を送信する、マルチコアシステム。
[項目27]
前記メモリ管理ユニットは更に、
前記マルチコアシステムにおけるオペレーティングシステムからのTLBシュートダウンを処理する、項目26に記載のマルチコアシステム。
[項目28]
前記TLBシュートダウンを処理することは、
前記複数の異種デバイスのうちの一のデバイスのデバイスTLBエントリを無効化すること、を含む、項目27に記載のマルチコアシステム。
[項目29]
前記TLBシュートダウンを処理することは、
PASIDステートエントリを読み出し、
前記PASIDステートエントリにおけるアクティブリファレンスカウントがゼロである場合には、前記PASIDステートエントリにおけるレイジー無効化フィールドを設定することを含む、項目27に記載のマルチコアシステム。
[項目30]
前記TLBシュートダウンを処理することは、
前記PASIDステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、前記TLBにおける仮想アドレス変換エントリを無効化すること、および、
前記PASIDステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、前記複数の異種デバイスのうちの一のデバイスのデバイスTLBエントリを無効化すること、を含む、項目29に記載のマルチコアシステム。

Claims (13)

  1. スレッドをアクティベートするステート更新リクエストをメモリ管理ユニットに発行するデバイスを備え、
    前記メモリ管理ユニットは、前記スレッドに対応するアドレス空間のエントリの修正を実行し、前記ステート更新リクエストに対しデバイス同期フラグを設定し、
    前記デバイス同期フラグは、前記ステート更新リクエストを発行する前記デバイスにアクティベーション前に当該デバイスのTLBエントリを同期する必要があることを示す、システム。
  2. 前記メモリ管理ユニットはIOMMUである、請求項1に記載のシステム。
  3. 前記メモリ管理ユニットは、ステート更新応答を用いて前記ステート更新リクエストに応答する、請求項1または2に記載のシステム。
  4. 前記デバイスは、非中央処理ユニットデバイスである、請求項1〜3の何れか一項に記載のシステム。
  5. 前記アドレス空間は、プロセスアドレス空間識別子(PASID)を用いて識別される、請求項1〜4の何れか一項に記載のシステム。
  6. 前記アドレス空間のエントリはIOTLB内のエントリに対応する、請求項1〜5の何れか一項に記載のシステム。
  7. 前記デバイスは、前記スレッドのアクティベーションの前に、前記ステート更新応答に応じてTLBエントリを同期する、請求項3、または、請求項3に従属する請求項4〜6の何れか一項に記載のシステム。
  8. スレッドを非アクティベートするステート更新リクエストをメモリ管理ユニットに発行するデバイスを備え、
    前記メモリ管理ユニットは、前記スレッドに対応するアドレス空間のエントリの修正を実行し、前記ステート更新リクエストに対しデバイス同期フラグを設定する、システム。
  9. 前記メモリ管理ユニットはIOMMUである、請求項8に記載のシステム。
  10. 前記メモリ管理ユニットは、ステート更新応答を用いて前記ステート更新リクエストに応答する、請求項8または9に記載のシステム。
  11. 前記デバイスは、非中央処理ユニットデバイスである、請求項8〜10の何れか一項に記載のシステム。
  12. 前記アドレス空間は、プロセスアドレス空間識別子(PASID)を用いて識別される、請求項8〜11の何れか一項に記載のシステム。
  13. 前記アドレス空間のエントリはIOTLB内のエントリに対応する、請求項8〜12の何れか一項に記載のシステム。
JP2016207724A 2011-07-26 2016-10-24 共有仮想メモリをサポートする異種コンピュータシステムにおけるtlbシュートダウンの方法および装置 Expired - Fee Related JP6378733B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/191,327 US9916257B2 (en) 2011-07-26 2011-07-26 Method and apparatus for TLB shoot-down in a heterogeneous computing system supporting shared virtual memory
US13/191,327 2011-07-26

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2014522944A Division JP6032855B2 (ja) 2011-07-26 2012-07-24 共有仮想メモリをサポートする異種コンピュータシステムにおけるtlbシュートダウンの方法および装置

Publications (3)

Publication Number Publication Date
JP2017037672A JP2017037672A (ja) 2017-02-16
JP2017037672A5 JP2017037672A5 (ja) 2017-03-23
JP6378733B2 true JP6378733B2 (ja) 2018-08-22

Family

ID=47425977

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014522944A Expired - Fee Related JP6032855B2 (ja) 2011-07-26 2012-07-24 共有仮想メモリをサポートする異種コンピュータシステムにおけるtlbシュートダウンの方法および装置
JP2016207724A Expired - Fee Related JP6378733B2 (ja) 2011-07-26 2016-10-24 共有仮想メモリをサポートする異種コンピュータシステムにおけるtlbシュートダウンの方法および装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2014522944A Expired - Fee Related JP6032855B2 (ja) 2011-07-26 2012-07-24 共有仮想メモリをサポートする異種コンピュータシステムにおけるtlbシュートダウンの方法および装置

Country Status (9)

Country Link
US (1) US9916257B2 (ja)
JP (2) JP6032855B2 (ja)
KR (1) KR101604929B1 (ja)
CN (2) CN103827839B (ja)
DE (1) DE202012007252U1 (ja)
GB (1) GB2506788B (ja)
IN (1) IN2014CN00386A (ja)
TW (1) TWI489278B (ja)
WO (1) WO2013016345A2 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014016650A1 (en) * 2012-07-27 2014-01-30 Freescale Semiconductor, Inc. Circuitry for a computing system and computing system
WO2014133527A1 (en) * 2013-02-28 2014-09-04 Intel Corporation Leveraging an enumeration and/or configuration mechanism of one interconnect protocol for a different interconnect protocol
US9223690B2 (en) * 2013-10-04 2015-12-29 Sybase, Inc. Freeing memory safely with low performance overhead in a concurrent environment
US9411745B2 (en) 2013-10-04 2016-08-09 Qualcomm Incorporated Multi-core heterogeneous system translation lookaside buffer coherency
US9384133B2 (en) * 2014-05-30 2016-07-05 International Business Machines Corporation Synchronizing updates of page table status indicators and performing bulk operations
US9785554B2 (en) 2014-05-30 2017-10-10 International Business Machines Corporation Synchronizing updates of page table status indicators in a multiprocessing environment
US20160098203A1 (en) * 2014-12-18 2016-04-07 Mediatek Inc. Heterogeneous Swap Space With Dynamic Thresholds
CN105846859B (zh) * 2015-01-12 2019-05-24 芋头科技(杭州)有限公司 一种嵌入式操作系统实现蓝牙从设备功能的系统及方法
EP3054384B1 (en) * 2015-02-04 2018-06-27 Huawei Technologies Co., Ltd. System and method for memory synchronization of a multi-core system
WO2016206012A1 (en) * 2015-06-24 2016-12-29 Intel Corporation Systems and methods for isolating input/output computing resources
EP3353659A4 (en) * 2015-09-25 2019-05-01 Intel Corporation SYSTEMS AND METHODS FOR CONTROLLING INPUT / OUTPUT COMPUTER RESOURCES
US10942683B2 (en) 2015-10-28 2021-03-09 International Business Machines Corporation Reducing page invalidation broadcasts
US9898226B2 (en) * 2015-10-28 2018-02-20 International Business Machines Corporation Reducing page invalidation broadcasts in virtual storage management
US9892024B2 (en) * 2015-11-02 2018-02-13 Sony Interactive Entertainment America Llc Backward compatibility testing of software in a mode that disrupts timing
US10386904B2 (en) 2016-03-31 2019-08-20 Qualcomm Incorporated Hardware managed power collapse and clock wake-up for memory management units and distributed virtual memory networks
US10120814B2 (en) * 2016-04-01 2018-11-06 Intel Corporation Apparatus and method for lazy translation lookaside buffer (TLB) coherence
US10067870B2 (en) 2016-04-01 2018-09-04 Intel Corporation Apparatus and method for low-overhead synchronous page table updates
US10540292B2 (en) 2016-06-08 2020-01-21 Google Llc TLB shootdowns for low overhead
DK3502906T3 (da) * 2016-06-08 2021-08-30 Google Llc Tlb-shootdown for lav overhead
US10282308B2 (en) * 2016-06-23 2019-05-07 Advanced Micro Devices, Inc. Method and apparatus for reducing TLB shootdown overheads in accelerator-based systems
US20180276175A1 (en) * 2017-03-22 2018-09-27 National Instruments Corporation Direct Network Access by a Memory Mapped Peripheral Device for Scheduled Data Transfer on the Network
CN108932213A (zh) * 2017-10-10 2018-12-04 北京猎户星空科技有限公司 多操作系统间的通讯方法、装置、电子设备和存储介质
US10725932B2 (en) 2017-11-29 2020-07-28 Qualcomm Incorporated Optimizing headless virtual machine memory management with global translation lookaside buffer shootdown
US10990436B2 (en) * 2018-01-24 2021-04-27 Dell Products L.P. System and method to handle I/O page faults in an I/O memory management unit
US11106613B2 (en) * 2018-03-29 2021-08-31 Intel Corporation Highly scalable accelerator
US10846235B2 (en) 2018-04-28 2020-11-24 International Business Machines Corporation Integrated circuit and data processing system supporting attachment of a real address-agnostic accelerator
DE102018004086A1 (de) 2018-05-18 2019-11-21 Singulus Technologies Ag Durchlaufanlage und Verfahren zum Beschichten von Substraten
KR102655094B1 (ko) * 2018-11-16 2024-04-08 삼성전자주식회사 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법
US11036649B2 (en) 2019-04-04 2021-06-15 Cisco Technology, Inc. Network interface card resource partitioning
CN110968530B (zh) * 2019-11-19 2021-12-03 华中科技大学 一种基于非易失性内存的键值存储系统和内存访问方法
US12086082B2 (en) * 2020-09-21 2024-09-10 Intel Corporation PASID based routing extension for scalable IOV systems
CN116594925B (zh) * 2023-04-24 2024-09-27 上海天数智芯半导体有限公司 一种地址转换系统、处理器、地址转换方法及电子设备

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02183849A (ja) * 1989-01-11 1990-07-18 Fujitsu Ltd アドレス対応表無効化処理方式
JPH06139149A (ja) * 1992-10-29 1994-05-20 Mitsubishi Electric Corp 多重仮想空間制御装置
US6175876B1 (en) 1998-07-09 2001-01-16 International Business Machines Corporation Mechanism for routing asynchronous state changes in a 3-tier application
US6779049B2 (en) * 2000-12-14 2004-08-17 International Business Machines Corporation Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism
US7111145B1 (en) 2003-03-25 2006-09-19 Vmware, Inc. TLB miss fault handler and method for accessing multiple page tables
US7073043B2 (en) * 2003-04-28 2006-07-04 International Business Machines Corporation Multiprocessor system supporting multiple outstanding TLBI operations per partition
US7552254B1 (en) * 2003-07-30 2009-06-23 Intel Corporation Associating address space identifiers with active contexts
US7093100B2 (en) * 2003-11-14 2006-08-15 International Business Machines Corporation Translation look aside buffer (TLB) with increased translational capacity for multi-threaded computer processes
US7069389B2 (en) * 2003-11-26 2006-06-27 Microsoft Corporation Lazy flushing of translation lookaside buffers
US7562179B2 (en) * 2004-07-30 2009-07-14 Intel Corporation Maintaining processor resources during architectural events
US7376807B2 (en) 2006-02-23 2008-05-20 Freescale Semiconductor, Inc. Data processing system having address translation bypass and method therefor
US7555628B2 (en) * 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
US7917725B2 (en) 2007-09-11 2011-03-29 QNX Software Systems GmbH & Co., KG Processing system implementing variable page size memory organization using a multiple page per entry translation lookaside buffer
US8386745B2 (en) * 2009-07-24 2013-02-26 Advanced Micro Devices, Inc. I/O memory management unit including multilevel address translation for I/O and computation offload
US9535849B2 (en) * 2009-07-24 2017-01-03 Advanced Micro Devices, Inc. IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect
US8364902B2 (en) 2009-08-07 2013-01-29 Via Technologies, Inc. Microprocessor with repeat prefetch indirect instruction
US8719547B2 (en) 2009-09-18 2014-05-06 Intel Corporation Providing hardware support for shared virtual memory between local and remote physical memory
EP2622525A1 (en) 2010-09-30 2013-08-07 Hewlett-Packard Development Company, L.P. Virtual machines for virus scanning
JP5956754B2 (ja) 2012-01-06 2016-07-27 株式会社荏原製作所 真空排気システム

Also Published As

Publication number Publication date
GB2506788B (en) 2020-05-27
CN103827839B (zh) 2016-12-21
WO2013016345A3 (en) 2013-04-11
GB2506788A (en) 2014-04-09
TWI489278B (zh) 2015-06-21
IN2014CN00386A (ja) 2015-04-03
CN106776379B (zh) 2021-09-07
KR101604929B1 (ko) 2016-03-18
WO2013016345A2 (en) 2013-01-31
TW201333700A (zh) 2013-08-16
JP2014526102A (ja) 2014-10-02
JP6032855B2 (ja) 2016-11-30
GB201400358D0 (en) 2014-02-26
KR20140028137A (ko) 2014-03-07
US9916257B2 (en) 2018-03-13
JP2017037672A (ja) 2017-02-16
CN106776379A (zh) 2017-05-31
DE202012007252U1 (de) 2012-11-29
US20130031333A1 (en) 2013-01-31
CN103827839A (zh) 2014-05-28

Similar Documents

Publication Publication Date Title
JP6378733B2 (ja) 共有仮想メモリをサポートする異種コンピュータシステムにおけるtlbシュートダウンの方法および装置
US9921968B2 (en) Multi-core shared page miss handler
US20080162868A1 (en) Means to share translation lookaside buffer (TLB) entries between different contexts
US20120239904A1 (en) Seamless interface for multi-threaded core accelerators
US9465670B2 (en) Generational thread scheduler using reservations for fair scheduling
US20120159101A1 (en) Information processing device
WO2008005687A2 (en) Global overflow method for virtualized transactional memory
US20140173203A1 (en) Block Memory Engine
CN112463657B (zh) 一种地址转换缓存清除指令的处理方法和处理装置
US12072813B2 (en) Method for remapping virtual address to physical address and address remapping unit
US20230127938A1 (en) Method and device for rapidly searching cache
JP2015197802A (ja) 情報処理装置、情報処理方法及びプログラム
JP7359858B2 (ja) 仮想化された環境におけるパススルーデバイスのための直接メモリアクセストラッキング
JP2008123333A (ja) 半導体集積回路装置
JP2008123333A5 (ja)

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161121

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171023

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171031

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180130

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180330

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180501

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: 20180529

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180627

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180727

R150 Certificate of patent or registration of utility model

Ref document number: 6378733

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees