JP2019521409A - 仮想アドレスから物理アドレスへの変換を実行する入出力メモリ管理ユニットにおける複数のメモリ素子の使用 - Google Patents

仮想アドレスから物理アドレスへの変換を実行する入出力メモリ管理ユニットにおける複数のメモリ素子の使用 Download PDF

Info

Publication number
JP2019521409A
JP2019521409A JP2018555752A JP2018555752A JP2019521409A JP 2019521409 A JP2019521409 A JP 2019521409A JP 2018555752 A JP2018555752 A JP 2018555752A JP 2018555752 A JP2018555752 A JP 2018555752A JP 2019521409 A JP2019521409 A JP 2019521409A
Authority
JP
Japan
Prior art keywords
iommu
physical address
information
memory
selected memory
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.)
Granted
Application number
JP2018555752A
Other languages
English (en)
Other versions
JP7232644B2 (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2019521409A publication Critical patent/JP2019521409A/ja
Application granted granted Critical
Publication of JP7232644B2 publication Critical patent/JP7232644B2/ja
Active 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/1028Power efficiency
    • 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
    • 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/681Multi-level TLB, e.g. microTLB and main TLB
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

記載された実施形態は、2つ以上のメモリ素子と、コントローラと、を備える入出力メモリ管理ユニット(IOMMU)を含む。コントローラは、1つ以上の要因に基づいて、IOMMU内で仮想アドレスから物理アドレスへの変換を実行するために、2つ以上のメモリ素子から1つ以上の選択されたメモリ素子を選択するように構成されている。次に、コントローラは、1つ以上の選択されたメモリ素子を使用して、仮想アドレスから物理アドレスへの変換を実行する。【選択図】図3

Description

記載される実施形態は、コンピューティングデバイスに関する。より具体的には、記述される実施形態は、仮想アドレスから物理アドレスへの変換を実行するためのコンピューティングデバイスの入出力メモリ管理ユニット(IOMMU)において複数のメモリ素子を使用することに関する。
多くのコンピューティングデバイスは、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)等の周辺機器を含む。いくつかのコンピューティングデバイスにおいて、周辺機器の一部又は全てには、コンピューティングデバイス内のメモリ(例えば、コンピューティングデバイス内のメインメモリ)へのアクセスが提供される。これらのコンピューティングデバイスのいくつかでは、周辺機器は、メモリにアクセスするための「仮想メモリ」技術を使用する。仮想メモリ技術では、周辺機器(又は周辺機器によって実行される作業負荷)は、データが共有メモリに配置されている物理位置の「物理アドレス」を使用してメモリをアドレス指定する代わりに、周辺機器に固有のアドレス空間である「仮想アドレス空間」の「仮想アドレス」を使用して、メモリをアドレス指定する。仮想アドレス空間は、対応する周辺機器へ固有であるアドレス空間である。周辺機器によって使用される仮想アドレスは、物理アドレスに直接マッピングされない場合があり、対応するデータを実際に記憶する共有メモリ内の位置を示すことができない。したがって、コンピューティングデバイスは、周辺機器についての物理アドレス変換に対して仮想アドレスを提供するように構成された入出力メモリ管理ユニット(IOMMU)等の機構を含む。IOMMUは、仮想アドレスを含む周辺機器からの要求を受信すると、仮想アドレスを対応する物理アドレスに変換する。次に、IOMMUは、物理アドレスを、要求元の周辺機器に提供し、物理アドレスを使用してメモリアクセスを実行することができる。
上述した仮想アドレスから物理アドレスへの変換を有効にするために、コンピューティングデバイスは、「ページテーブル」を含む。ページテーブルは、メモリに記憶されたページ(例えば、4KBのデータブロック)についての仮想アドレスから物理アドレスへの変換情報を含む、エントリ又は「ページテーブルエントリ」を含むコンピューティングデバイスのメモリに記憶されたレコードである。IOMMUは、所定の仮想アドレスを変換する要求を周辺機器から受信すると、仮想アドレスに関連する物理アドレスを提供するページテーブルエントリについて、ページテーブルが検索される間、可能であればエントリ毎に「ページテーブルウォーク」を実行することによって、対応する物理アドレス情報をページテーブルから取得する。
ページテーブルウォークは比較的遅いため、ページテーブルウォークの実行を避けることが望ましい。したがって、IOMMUは、ページテーブルウォーク中に取得されたページテーブルエントリの限られた数のコピーを記憶するために使用されるローカルキャッシュであるトランスレーションルックアサイドバッファ(TLB)を含む。IOMMUは、最初に、仮想アドレスから物理アドレスへの変換を実行するために、キャッシュされたページテーブルエントリ情報を対応するTLBから取得しようと試みる。ページテーブルエントリ情報が、対応するTLBに存在しない場合(すなわち、「TLBミス」が発生した場合)、IOMMUは、上述したページテーブルウォークを実行し、次いで、取得したページテーブルエントリからの情報のコピーをTLBにキャッシュすることができる。
異なるコンピューティングデバイスでは周辺機器の構成が異なるので、TLB設計にワンサイズフィッツオール(one-size-fits-all)のアプローチを使用すると、IOMMUのパフォーマンスが最適にならなくなる場合がある。例えば、IOMMU内のTLBは、周辺機器の複数の可能な構成のうち少なくともいくつかの構成に最適ではないタイプのメモリ(例えば、同期ダイナミックランダムアクセスメモリ(SRAM))を使用して実装される場合がある。
いくつかの実施形態による、コンピューティングデバイスを示すブロック図である。 いくつかの実施形態による、入出力メモリ管理ユニット(IOMMU)を示すブロック図である。 いくつかの実施形態による、IOMMU内で仮想アドレスから物理アドレスへの変換を実行するために使用されるメモリ素子を選択するプロセスを示すフローチャートである。 いくつかの実施形態による、IOMMU内のメモリ素子内の仮想アドレスから物理アドレスへの変換情報を更新するために状態保持メモリ素子を使用するプロセスを示すフローチャートである。
図面及び説明全体に亘って、同じ参照番号は同じ図面要素を指す。
以下の説明は、記載された実施形態を当業者が生成し使用することを可能にするために提示され、特定の用途及びその要件の文脈に提供される。記載された実施形態に対する様々な変更は、当業者には容易に明らかであり、本明細書で定義される一般的な原理は、他の実施形態に適用されてもよい。したがって、記載された実施形態は、示された実施形態に限定されず、本明細書に開示された原理及び特徴と一致する最も広い範囲が与えられるべきである。
(仮想メモリ)
記載された実施形態は、コンピューティングデバイスで実行されるソフトウェアプログラム及びコンピューティングデバイスの周辺機器がデータアクセスを処理するために、「仮想メモリ」技術を使用する。記載された実施形態において、プログラム又は周辺機器がデータにアクセスする場合、データを含む所定サイズ(例えば、4KB、64KB等)のメモリブロックは、メモリの「ページ」と呼ばれ、大容量ストレージデバイスからコンピューティングデバイス内のメモリ内の利用可能な物理位置にコピーされ、又は、メモリ内の物理位置に新たに生成される。記載された実施形態では、プログラム又は周辺機器がメモリ内のページの物理位置の追跡を続けるように要求されるのを避けるために、対応するメモリ管理ユニット(又は、プロセッサ等の他のエンティティ)は、プログラム及び周辺機器用のページの物理位置を追跡する。例えば、プロセッサ内のメモリ管理ユニット(MMU)は、プロセッサによって実行されるプログラムのページの物理位置を追跡することができる。別の例として、入出力メモリ管理ユニット(IOMMU)は、周辺機器のページの物理位置を追跡することができる。これらの実施形態において、プログラム及び周辺機器(又は、周辺機器によって実行される作業負荷)は、ページの物理位置に基づくアドレス(又は「物理アドレス」)を使用してメモリをアドレス指定する代わりに、対応するプログラム又は周辺機器に固有のアドレス空間である「仮想アドレス空間」の「仮想アドレス」を使用して、メモリをアドレス指定する。プログラム又は周辺機器の観点から、仮想アドレスは、データが記憶されるメモリのページ内の位置を示しており、これに応じて、仮想アドレスを使用してメモリアクセスが行われる。しかしながら、仮想アドレスは、データが記憶されるメモリのページ内の物理位置の物理アドレスに直接マッピングされない場合がある。メモリ管理ユニットは、ページの物理位置を管理する一環として、メモリアクセス要求においてプログラム及び周辺機器によって使用される仮想アドレスを、データが実際に位置する物理アドレスに変換する。メモリ管理ユニットは、変換された物理アドレスをプログラム(若しくは、オペレーティングシステム等)又は周辺機器に提供し、この物理アドレスを使用してメモリアクセスを実行する。
上述した仮想アドレスから物理アドレスへの変換を可能にするために、記載された実施形態は、「ページテーブル」を含む。ページテーブルは、メモリに記憶されたページについての仮想アドレスから物理アドレスへの変換情報を含む、エントリ又は「ページテーブルエントリ」を含むコンピューティングデバイスのメモリに記憶されたレコードである。仮想アドレスでメモリにアクセスするためのプログラム又は周辺機器からの要求を受信すると、対応するメモリ管理ユニット(又は、プロセッサ等の他のエンティティ)は、仮想アドレスに関連する物理アドレスを提供するページテーブルエントリについて、ページテーブルが検索される間、可能であればエントリ毎に「ページテーブルウォーク」を実行することによって、対応する物理アドレス情報をページテーブルから取得する。
ページテーブルウォークは比較的遅いため、ページテーブルウォークの実行を避けることが望ましい。したがって、記載された実施形態は、ページテーブルウォーク中に取得されたページテーブルエントリに基づく限られた数の情報のコピーを記憶するために使用されるプロセッサ及びIOMMU(及び、可能であれば周辺機器)内のローカルキャッシュ、又は、これらに関連するローカルキャッシュであるトランスレーションルックアサイドバッファ(TLB)を含む。メモリ管理ユニットは、仮想アドレスから物理アドレスへの変換を実行する場合に、キャッシュされたページテーブルエントリ情報を対応するTLBから取得しようと試みる際に、対応するTLBにおいてルックアップを最初に実行する。ページテーブルエントリ情報が対応するTLB内に存在しない場合(すなわち、「ミス」が発生した場合)、メモリ管理ユニットは、上述したページテーブルウォークを実行して所望のページテーブルエントリを取得し、取得したページテーブルエントリからの情報のコピーを対応するTLBにキャッシュすることができる。
(概要)
記載された実施形態において、コンピューティングデバイスは、入出力メモリ管理ユニット(IOMMU)と、1つ以上の周辺機器と、を含む。概して、IOMMUは、仮想アドレスから物理アドレスへの変換を含む、コンピューティングデバイス内のメモリへの周辺機器によるアクセスを処理する。記載された実施形態において、IOMMUは、仮想アドレスから物理アドレスへの変換を実行するために使用可能な2つ以上のメモリ素子を含む。例えば、IOMMUは、第1タイプのメモリ回路(例えば、スタティックランダムアクセスメモリ(SRAM)等)を含む第1メモリ素子と、第2タイプのメモリ回路(例えば、相変化メモリ(PCM)等)を含む第2メモリ素子等と、を含み、これらの各々は、本明細書で説明する仮想アドレスから物理アドレスへの変換を実行するために使用することができる。
記載された実施形態において、IOMMU内の2つ以上のメモリ素子は、IOMMU内のトランスレーションルックアサイドバッファ(TLB)についての仮想アドレスから物理アドレスへの変換情報(例えば、仮想アドレスから物理アドレスへの変換のレコード、関連するメタデータ等)を記憶するために使用することができる。記載された実施形態において、IOMMU内のコントローラは、1つ以上の要因に基づいて、1つ以上のメモリ素子を、TLBの仮想アドレスから物理アドレスへの変換情報を記憶するために使用することを決定する。例えば、1つ以上の要因は、IOMMU、周辺機器等における仮想アドレスから物理アドレスへの変換のパフォーマンスに関連していてもよいし、これに依存していてもよいし、そうでなければ関係していてもよい。次に、コントローラは、TLBの仮想アドレスから物理アドレスへの変換情報を記憶するために、1つ以上のメモリ素子を使用する。記載された実施形態において、特定のメモリ素子が、TLBの仮想アドレスから物理アドレスへの変換情報を記憶するのに使用されないことを決定すると、コントローラは、当該特定のメモリ素子を無効(例えば、この素子をパワーダウン(電源オフ)する)にしてもよいし、当該特定のメモリ素子を他の用途に使用してもよい。
いくつかの実施形態において、2つ以上のメモリ素子のうちいくつか又は全てを、ページテーブル情報のブロックを記憶するために使用することができる。これらの実施形態において、ページテーブルのブロック(例えば、マルチエントリセクション、領域等)を、コンピューティングデバイスのメモリの位置からメモリ素子に移動させることができる。これらの実施形態のいくつかにおいて、IOMMU内のTLBの仮想アドレスから物理アドレスへの変換を記憶するために使用されていないメモリ素子(又は、この一部)を、ページテーブル情報のブロックを記憶するために使用することができる。
いくつかの実施形態において、IOMMUは、IOMMUをパワーダウン(電源オフ)するときに仮想アドレスから物理アドレスへの変換を実行するための情報を記憶する(すなわち、保持する)のに使用される不揮発性メモリ素子を含む。これらの実施形態において、IOMMUをパワーオン(電源オン)した後に、不揮発性メモリ素子からの情報を使用して、IOMMU内のTLBの仮想アドレスから物理アドレスへの変換情報のうちいくつか若しくは全て、及び/又は、IOMMU内のページテーブル情報のブロックを更新することができる。
上述したように、IOMMU内の2つ以上のメモリ素子を使用して仮想アドレスから物理アドレスへの変換を実行することによって、記載された実施形態は、IOMMU内の特定のタイプのメモリ素子、コンピューティングデバイス内の周辺機器等に適した方法で、IOMMU内のメモリ素子の使用を可能にする。これにより、メモリ素子のより効率的な、バランスの取れた、及び/又は、最適化された使用が可能になることから、IOMMU、周辺機器及びコンピューティングデバイスの全体的な動作を改善させることができる。
(コンピューティングデバイス)
図1は、いくつかの実施形態による、コンピューティングデバイス100を示すブロック図である。図1に示すように、コンピューティングデバイス100は、プロセッサ102と、メモリ104と、入出力(IO)ハブ106と、周辺機器108〜110と、を含む。プロセッサ102は、コンピューティングデバイス100において計算動作を実行する機能ブロックである。いくつかの実施形態において、プロセッサ102は、1つ以上の中央処理装置(CPU)コア、及び/又は、他の処理機能ブロックを含む。
メモリ104は、データ及び命令を、コンピューティングデバイス100内の他の機能ブロックに記憶し、提供するための動作を実行する機能ブロックである。メモリ104は、ダイナミックランダムアクセスメモリ(DRAM)、ダブルデータレート同期DRAM(DDR SDRAM)、並びに/又は、他の機能ブロックの命令及びデータを記憶するために使用される他のタイプの揮発性及び/若しくは不揮発性メモリ回路のうち1つ以上と、メモリ回路に記憶された命令及びデータへのアクセスを処理するための制御回路と、を備える。いくつかの実施形態において、メモリ104は、コンピューティングデバイス100内の「メインメモリ」である。
図1に示すように、プロセッサ102は、メモリ管理ユニット112を含む。メモリ管理ユニット112は、仮想アドレスから物理アドレスへの変換、メモリアクセス許可チェック等を行う等によって、プロセッサ102とメモリ104との間の相互作用を処理する機能ブロックである。
IOハブ106は、周辺機器108〜110等の周辺機器と、コンピューティングデバイス100内の他の機能ブロック(例えば、プロセッサ102、メモリ104等)との間の相互作用を処理する機能ブロックである。例えば、IOハブ106は、周辺機器108〜110からの通信(入力、イベント、割り込み、データ等)を受信し、コンピューティングデバイス100内の他の機能ブロックに通信を転送することができる。別の例として、IOハブ106は、プロセッサ102、メモリ104、及び/又は、コンピューティングデバイス100内の他の機能ブロックから通信(コマンド、出力、イベント、割り込み、データ等)を受信し、対応する周辺機器に通信を転送することができる。
図1に示すように、IOハブ106は、IOMMU114を含む。IOMMU114は、周辺機器108〜110とメモリ104との間の相互作用を処理する機能ブロックである。例えば、IOMMU114は、仮想アドレスから物理アドレスへの変換、周辺機器108〜110からのメモリ104に対するメモリアクセス保護、周辺機器のイベント及び割り込み処理等を実行することができる。記載された実施形態において、IOMMU114は、以下により詳細に説明するように、仮想アドレスから物理アドレスへの変換を実行するために使用されるメモリ素子を選択する。
周辺機器108〜110は、コンピューティングデバイス100内の他の機能ブロックと相互作用する実際/現実のデバイス又は仮想デバイスを含む。例えば、いくつかの実施形態において、周辺機器108〜110は、グラフィックス処理ユニット(GPU)、組み込みプロセッサ、特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、ディスクドライブ、拡張カード(例えば、ビデオカード、サウンドカード、ネットワークインタフェースコントローラ等)、マウス/キーボード、マイクロホン、メディアプレイヤ、コントローラ、及び/又は、他の周辺機器のうち1つ以上を含む。いくつかの実施形態において、周辺機器108〜110は、ローピンカウント(LPC)インタフェース、USB(商標)(universal serial bus)インタフェース、BeavertonのPCI−SIGによるPCIe(商標)(Peripheral Component Interconnect Express)バス、及び/又は、他の拡張バス等のうち1つ以上の対応するIOインタフェースを介してIOハブに接続されている。いくつかの実施形態において、一部又は全ての周辺機器は、オフロード機能を有しており、これにより、プロセッサ102及び/又はコンピューティングデバイス100内の他の機能ブロックから計算作業をオフロードすることができる。
いくつかの実施形態において、周辺機器108〜110の1つ以上は、仮想アドレスから物理アドレスへの変換を実行するために使用されるメモリ素子を含む。例えば、周辺機器108〜110は、周辺機器内のTLBの仮想アドレスから物理アドレスへの変換情報(仮想アドレスから物理アドレスへの変換、メタデータ等)を保持するために使用されるメモリ素子を含むことができる。これらの実施形態において、周辺機器108〜110は、かかる変換情報が周辺機器内のTLBに存在する場合に、変換要求をIOMMU114に通信する代わりに、周辺機器内のTLBにおいてルックアップを実行して、仮想アドレスを物理アドレスに変換することができる。
いくつかの実施形態において、コンピューティングデバイス100内の様々な素子(プロセッサ102、メモリ104等)の間は、矢印線で示すように、通信パス(バス、ワイヤ、ガイド、及び/又は、接続のうち1つ以上を含む)で接続されている。通信パスを使用して、コマンド、データ、イベント通知、割り込み、及び/又は、他の情報が各素子間で送信される。いくつかの実施形態において、一部又は全ての通信パスは、通信パス上の通信、プロトコル変換等を処理するための機能ブロックを含む。例えば、いくつかの実施形態において、1つ以上の通信パスは、バス間の通信を変換する(すなわち、ブリッジする)ための異なるプロトコル及び機能ブロックのバスを含む。いくつかの実施形態において、通信パスは、カリフォルニア州サニーベールのHyperTransport ConsortiumによるHyperTransport(商標)バス、クイックパスインターコネクト(QPI)バス、及び/又は、他のフロントサイドバスを含む。
コンピューティングデバイス100は、特定の構成の機能ブロックで説明されているが、いくつかの実施形態は、異なる数及び/又は構成の機能ブロックを含む。例えば、いくつかの実施形態は、図1の複数の素子及び省略記号で示すように、複数のプロセッサ、メモリ、及び/又は、IOハブを含む。別の例として、いくつかの実施形態において、コンピューティングデバイス100は、いくつかのキャッシュメモリを含む。さらに別の例として、いくつかの実施形態において、コンピューティングデバイス100は、異なる数の周辺機器(図1内の周辺機器108〜110間の省略記号によって示される)を含む。概して、記載された実施形態は、本明細書に記載の動作を実行することができる任意の数又は構成の機能ブロックを使用することができる。
特定のコンピューティングデバイス100が説明のために示されているが、いくつかの実施形態において、コンピューティングデバイス100は、本明細書に記載の動作及び/若しくは他の動作を実行するための追加の機能ブロック又は他の素子を含む。例えば、コンピューティングデバイス100は、電源コントローラ、バッテリ、メディアプロセッサ、通信機構(例えば、ノースブリッジ、サウスブリッジ等)、ネットワーキング機構、表示機構等を含むことができる。
コンピューティングデバイス100は、計算動作を実行する任意の電子デバイスであってもよいし、電子デバイス内に含まれてもよい。例えば、コンピューティングデバイス100は、デスクトップコンピュータ、ラップトップコンピュータ、ウェアラブルコンピューティングデバイス、タブレットコンピュータ、スマートフォン、サーバ、ネットワークアプライアンス、玩具、オーディオビジュアル機器、家電製品、コントローラ、及び/又は、これらの組み合わせ等の電子デバイスであってもよいし、この電子デバイス内に含まれてもよい。
(入出力メモリ管理ユニット)
図2は、いくつかの実施形態による、IOMMU114を示すブロック図である。図2に示すように、IOMMU114は、コントローラ200と、メモリ素子202〜204と、状態保持メモリ素子206と、を含む。コントローラ200は、周辺機器108〜110とメモリ104との間の相互作用を処理するための動作を実行する機能ブロックである。コントローラ200によって実行される動作は、仮想アドレスから物理アドレスへの変換、周辺機器108〜110からのメモリ104に対するメモリアクセス保護、周辺機器のイベント及び割り込み処理等を有することができる。いくつかの実施形態において、コントローラ200は、マイクロコントローラ、ASIC、組み込みプロセッサ、CPUコア、及び/又は、別の機能ブロックを含む。いくつかの実施形態において、コントローラ200は、本明細書に記載の動作の一部又は全てを実行するためのプログラムコード(例えば、ファームウェア、ソフトウェアルーチン等)を実行する汎用処理回路を含む。いくつかの実施形態において、コントローラ200は、本明細書に記載の動作の一部又は全てを実行する専用回路(例えば、論理回路、計算回路、ディスクリート回路素子等)を含む。
メモリ素子202〜204は、IOMMU114内で仮想アドレスから物理アドレスへの変換を実行するために使用されるメモリ回路を含む機能ブロックである。換言すれば、メモリ素子202〜204は、IOMMU114内のトランスレーションルックアサイドバッファ(TLB)及び/又はページテーブル情報のブロック(ここで、ページテーブル情報の「ブロック」は、複数のページテーブルエントリを含む)の仮想アドレスから物理アドレスへの変換情報及びメタデータを記憶するのに使用可能なメモリ回路を含む。メモリ素子202〜204の各々は、スタティックランダムアクセスメモリ(SRAM)、DRAM(DDR SDRAM等)、PCM、メモリスタ、磁気抵抗ランダムアクセスメモリ(MRAM)、スピン注入型MRAM(STT MRAM)、フラッシュメモリ、及び/若しくは、他のタイプのメモリ回路等の揮発性並びに/又は不揮発性メモリ回路を含む。
いくつかの実施形態において、各メモリ素子202〜204のメモリ回路は、1つ以上の異なる特性を有する。これらの特性には、例えば、速度、容量(利用可能なストレージのバイト数の観点から)、金銭的コスト、耐摩耗性(susceptibility to wear-out)消耗し易さ、エラーに対する平均読み出し/書き込みサイクル、電力消費、回路サイズ(レイアウト面積の観点から)、ハードウェアインタフェース、動作温度、ソフトウェアサポート(例えば、オペレーティングシステム、ドライバ、アプリケーション等のソフトウェアプログラムとの互換性)、通信インタフェース帯域幅、及び/又は、他の特性等が含まれ得る。例えば、いくつかの実施形態において、メモリ素子202は、高速であるが高価(金銭的コスト、電力消費、及び/又は、他のコストの観点から)である第1タイプのメモリ(例えば、SRAM)を含み、メモリ素子204は、より低速であるが、より安価で、さらにスケーラブルである第2タイプのメモリ(例えば、PCM)を含む(例えば、大きな容量、インストール、動作等においてメモリ素子202よりも安価に購入することができる)。
上述したように、一方又は両方のメモリ素子202〜204を、IOMMU114内のTLBの仮想アドレスから物理アドレスへの変換情報を記憶するために使用可能である。例えば、メモリ素子202〜204は、仮想アドレスから物理アドレスへの変換、仮想アドレスから物理アドレスへの変換に関連するメタデータ、仮想アドレスから物理アドレスへの変換に関する要約情報、及び/又は、IOMMU114内のTLBに記憶され若しくは関連する他の情報を記憶するのに用いられる。仮想アドレスから物理アドレスへの変換は、対応する仮想アドレスがマッピングされるメモリ104内の物理位置(例えば、ページ、領域等)を決定するための情報を含む。例えば、仮想アドレスの一部又は全てのビットが与えられると、対応する物理アドレスの一部又は全てのビットをメモリ素子202及び/又は204から取得することができる。メタデータは、1つ以上の対応する仮想アドレスから物理アドレスへの変換に関連する情報、これらを特徴付ける情報、これらを制御する情報及び/又は他の関連する情報(例えば、有効性情報、エージング、アクセス数及び/若しくはタイプ、アクセス許可(例えば、読み出し、読み出し/書き込み、アクセス権レベル等)、ページサイズインジケータ、ダーティインジケータ(例えば、対応するページのデータがいつ変更されたかを示す)、並びに/又は、他の情報等)を含む。要約情報は、アクセスされたページ又はアドレス、特定のアクセスタイプを有するページ又はアドレスのレコード、指定された特性を有するページ又はアドレス、1つ以上のアドレス及び/又はページにアクセスしている周辺機器の識別等のレコード等のように、TLB内の仮想アドレスから物理アドレスへの変換、TLBのアクセス等に関連する情報、これらを特徴付ける情報、これらを制御する情報、及び/又は、他の関連する情報を含む。
メモリ素子202〜204のうち何れかのメモリ素子を使用して、TLBの仮想アドレスから物理アドレスへの変換情報を記憶する場合に、コントローラ200(及び、より具体的には、IOMMU114)は、メモリ素子に記憶された情報を使用してTLB動作を実行することができる。例えば、コントローラ200は、仮想アドレスから物理アドレスへの変換、メタデータ取得、ページ許可チェック、TLB更新、要約データ取得等の動作を実行することができる。これらの実施形態において、コントローラ200は、TLBの仮想アドレスから物理アドレスへの変換情報をメモリ素子に記憶して、上述したTLB動作を実行できるようにする。例えば、メモリ素子を、1セットのTLBエントリに論理的に分割することができ、各TLBエントリは、対応するビット数(例えば、256ビット、96ビット等)を含み、一部のビットが、仮想アドレスから物理アドレスへの変換情報、メタデータ等を記憶するために使用される。
いくつかの実施形態において、TLB内の仮想アドレスから物理アドレスへの変換のルックアップに使用可能な2つ以上の階層ルックアップ構造を有する1つ以上のメモリ素子が構成される。例えば、1つ以上のメモリ素子を、可能な場合にフルルックアップを避けるために、TLB情報がTLBに存在しないかどうかを判別するために高速初期ルックアップを実行するのに用いられるディレクトリ、ブルームフィルタ等を記憶するために使用することができる。
記述された実施形態において、コントローラ200は、IOMMU114内のTLBの仮想アドレスから物理アドレスへの変換情報を記憶するために使用されるメモリ素子202〜204から1つ以上のメモリ素子を選択することができる。より具体的には、コントローラ200は、1つ以上の要因に基づいて、TLBの仮想アドレスから物理アドレスへの変換情報を記憶するために1つ以上のメモリ素子を使用することを決定する。概して、この要因には、IOMMU114及び/又は周辺機器108〜110(及び、より具体的には、コンピューティングデバイス100の動作)での仮想アドレスから物理アドレスへの変換のパフォーマンスに関連する要因、依存する要因又は他の関連する要因が含まれる(要因の例については後述する)。次に、コントローラ200は、TLBの仮想アドレスから物理アドレスへの変換情報を記憶するために、決定された1つ以上のメモリ素子を使用する。例えば、1つ以上のメモリ素子の各々を、TLBの仮想アドレスから物理アドレスへの変換情報の対応する「部分」を記憶する(例えば、TLBの仮想アドレスから物理アドレスへの変換情報のセットのうち対応するサブセットを記憶する等)ために使用されてもよい。例えば、1つ以上の選択されたメモリ素子は、仮想アドレスから物理アドレスへの変換情報の所定の割合(例えば、半分等)、特定の周辺機器に関連する仮想アドレスから物理アドレスへの変換情報、特定の仮想アドレス範囲に対する仮想アドレスから物理アドレスへの変換情報等を記憶することができる。
いくつかの実施形態において、コントローラ200は、仮想アドレスから物理アドレスへの変換情報を記憶するために使用される1つ以上のメモリ素子202〜204を決定した後に、電源投入し、電力状態間を移行し、及び/又は、他の方法によって、1つ以上のメモリ素子を利用可能にする。例えば、いくつかの実施形態において、メモリ素子は、無効にされており(例えば、パワーダウンや低電力状態等)、例えば、情報をメモリ素子に保持可能なレベルまでメモリ素子の電源電圧を設定することによって、メモリ素子の制御クロックを作動させることによって、メモリ素子のインタフェース機能ブロックを作動させること等によって、フルパワー状態に移行することができる。
いくつかの実施形態において、コントローラ200は、メモリ素子202〜204のうち特定のメモリ素子を、TLBの仮想アドレスから物理アドレスへの変換情報を記憶するために使用しないことを決定すると、特定のメモリ素子を無効にし(例えば、パワーオフや低電力状態等に移行又は維持される)又は他の用途に使用可能にする。
いくつかの実施形態において、メモリ素子202〜204は、他の情報を記憶するために使用されてもよい。例えば、1つ以上のメモリ素子202〜204の一部又は領域(例えば、メモリ素子内の所定位置から開始する所定バイト数)は、TLBの仮想アドレスから物理アドレスへの変換を記憶するために割り当てられ、リザーブ等されてもよい。また、メモリ素子の他の部分又は領域は、他の用途のために割り当てられてもよい。
いくつかの実施形態において、1つ以上のメモリ素子202〜204を使用して、ページテーブル情報のブロックを記憶することができる。換言すれば、メモリ素子は、対応する仮想アドレスから物理アドレスへの変換情報、メタデータ等を有する複数のページテーブルエントリ(及び、可能であれば多数のページテーブルエントリ)を含むページテーブルの一部、セクション等を記憶することができる。メモリ素子に記憶されたページテーブル情報のブロックは、メモリ104に記憶されたページテーブル情報と同様に構成される(例えば、同様に構成された同様の情報を含む)。これらの実施形態において、ページテーブルウォークを、メモリ素子に記憶されたページテーブル情報のブロックを用いて、少なくとも部分的に実行することができる。
いくつかの実施形態において、コンピューティングデバイス100(すなわち、コントローラ200又はプロセッサ102等のエンティティ)は、ページテーブルアクセスを監視し、IOMMU114及び/若しくは1つ以上の周辺機器がページテーブルの所定のブロックにアクセスしたこと、並びに/又は、アクセスが1つ以上のポリシー(例えば、アクセス数、アクセスする周辺機器の数等)に準拠することを認識することができる。次に、コンピューティングデバイス100は、ページテーブルの所定のブロックを、メモリ104から、IOMMU114内のページテーブルエントリのブロックを記憶するのに使用可能な1つ以上のメモリ素子202〜204に移動させることができる。換言すれば、ページテーブルのブロックを、メモリ104から除去又はコピーして、1つ以上のメモリ素子に記憶することができる。これらの実施形態において、1つ以上のメモリ素子に記憶されたページテーブルのブロックをウォークするコンピューティングデバイス100内のエンティティは、ページテーブルのブロックをメモリ素子から取得し、上述したようにこれを検索する。
いくつかの実施形態において、メモリ素子202〜204は、ページテーブル情報のブロックを記憶するために利用可能な場合に、コンピューティングデバイス100内のメモリ全体の一部として現れることができる。例えば、IOMMU114及びメモリ素子202〜204は、不均一メモリアクセス(NUMA)システム内のノードとして現れることがある。
状態保持メモリ素子206は、IOMMU114がパワーダウンされる場合に(例えば、IOMMU114が低電力モード又はパワーオフの場合に)、仮想アドレスから物理アドレスへの変換を実行するための情報を記憶するのに使用される不揮発性メモリ回路(例えば、フラッシュ等)を含む機能ブロックである。例えば、状態保持メモリ素子206は、TLBからの仮想アドレスから物理アドレスへの変換情報のコピー及び/又はページテーブル情報のブロックを記憶するために使用されてもよい。いくつかの実施形態において、状態保持メモリ素子206からの情報は、例えばIOMMU114の電源投入中又は電源投入後に取得されてもよいし、TLB内の仮想アドレスから物理アドレスへの変換情報及び/又はIOMMU内のページテーブル情報のブロックの一部又は全てを更新するために使用されてもよい。
いくつかの実施形態において、仮想アドレスから物理アドレスへの変換情報は、IOMMU114をパワーダウンするためのシーケンスの一部として状態保持メモリ素子206に記憶される。例えば、IOMMU114をパワーダウンする前に、TLBの仮想アドレスから物理アドレスへの変換情報及び/又はIOMMU内のページテーブル情報のブロックの一部又は全てを、状態保持メモリ素子206にコピーすることができる。いくつかの実施形態において、仮想アドレスから物理アドレスへの変換情報がTLBに記憶される場合、及び/又は、ページテーブル情報のブロックがIOMMU内に記憶される場合に、状態保持メモリ素子206が動的に更新される。
いくつかの実施形態において、状態保持メモリ素子206に記憶された情報の妥当性は、仮想アドレスから物理アドレスへの変換を実行するための情報及び/又はページテーブル情報のブロックが最新で正確であることを検証すること等によって、更新のために使用される前に検証される。例えば、コントローラ200は、情報が状態保持メモリ素子206内に記憶されたので、仮想アドレスと物理アドレスとの間のマッピングが変更されていないと決定することができる。
IOMMU114は、2つのメモリ素子(すなわち、メモリ素子202〜204)で示されているが、いくつかの実施形態において、IOMMU114は、(図2に省略記号で示すように)より多くのメモリ素子を含んでもよい。これらの実施形態において、本明細書に記載された動作(すなわち、選択されたメモリ素子の決定、選択されたメモリ素子の使用等)は、対応する数のメモリ素子に対して実行することができる。概して、記載された実施形態は、IOMMU114内のいくつかの数のメモリ素子を用いて使用することができる。また、IOMMU114は、状態保持メモリ素子206を含むように示されているが、いくつかの実施形態において、IOMMU114は、状態保持メモリ素子206を含まなくてもよい。
(要因)
上述したように、コントローラ(例えば、コントローラ200)は、1つ以上の要因に基づいて、IOMMU(例えば、IOMMU114)内の仮想アドレスから物理アドレスへの変換を実行するために使用されるメモリ素子を決定する。概して、決定を行う際に使用される要因には、IOMMU、周辺機器(例えば、周辺機器108〜110)及び/若しくはコンピューティングデバイス内の仮想アドレスから物理アドレスへの変換のパフォーマンスに関連する要因、これに依存する要因又は他に関連する要因が含まれる。要因は、IOMMU及び/若しくはIOMMU内のメモリ素子(例えば、メモリ素子202〜204)の動作、周辺機器及び周辺機器内のメモリ素子(存在する場合)の動作、並びに/又は、コンピューティングデバイスの動作の対応する態様を表すものである。例えば、要因は、仮想アドレスから物理アドレスへの変換がIOMMU及び/又は周辺機器において実行される速度に関連してもよいし、仮想アドレスから物理アドレスへの変換が実行されるIOMMU及び/又は周辺機器内の位置に関連してもよいし、IOMMU及び/又は周辺機器内のメモリ素子のタイプ等に関連してもよい。
いくつかの実施形態において、要因には、IOMMU内で利用可能なメモリ素子の特性が含まれる。例えば、いくつかの実施形態では、IOMMU内の第1メモリ素子は、小容量であるが高速なアクセス時間を有する特性を含んでおり、IOMMU内の第2メモリ素子は、より大きな容量を有するが、より低速なアクセス時間を有する特性を含む。コントローラは、メモリ素子の特性に少なくとも部分的に基づいて、IOMMU内で仮想アドレスから物理アドレスへの変換を実行するために使用される1つ以上のメモリ素子を決定することができる。いくつかの実施形態において、コントローラは、メモリ素子の特性に基づいて決定を行う場合に、IOMMU、周辺機器及び/又はコンピューティングデバイスの現在の動作条件、モード及び/又は状態(例えば、仮想アドレスから物理アドレスへの変換の実行回数、周辺機器の数等)を使用することができる。例えば、コントローラは、仮想アドレスから物理アドレスへの変換要求の数が多い可能性がある場合に、仮想アドレスから物理アドレスへの変換を実行するのに使用される、高速なメモリ素子を選択することができる。別の例として、コントローラは、IOMMUに記憶された仮想アドレスから物理アドレスへの変換がより多く存在する可能性がある場合に、より大容量のメモリ素子を選択することができる。説明したように、メモリ素子の特性を使用して、何れのメモリ素子を使用するかを決定することによって、IOMMUは、動作条件、モード又は状態に依存して、仮想アドレスから物理アドレスへの変換情報をより多く記憶し、仮想アドレスから物理アドレスへの変換をより速く実行し、より信頼性の高いメモリ回路を使用して仮想アドレスから物理アドレスへの変換を実行する等を行うことができる。
いくつかの実施形態において、要因は、周辺機器において仮想アドレスから物理アドレスへの変換を実行するために(すなわち、周辺機器が対応する仮想アドレスから物理アドレスへのIOMMUからの変換を要求する代わりに、仮想アドレスから物理アドレスへの変換を周辺機器において「ローカル」に実行するために)利用可能な(又は利用不可能な)メモリ素子を含む。例えば、いくつかの実施形態において、周辺機器がSRAM、DRAM、PCM等に実装された1つ以上のTLBを含む場合等のように、一部又は全ての周辺機器は、異なるタイプ及び/又はメモリ回路の構成を使用して実装されるローカルTLBを有する。これらの実施形態において、周辺機器内のTLBを使用して、仮想アドレスから物理アドレスへの変換情報(IOMMU内のTLBにキャッシュされてもよいし、されなくてもよい)をキャッシュすることができる。コントローラは、周辺機器内のTLBとして使用されるメモリ回路のタイプ及び構成に少なくとも部分的に基づいて、IOMMU内のTLBの仮想アドレスから物理アドレスへの変換を記憶するために使用されるIOMMU内の1つ以上のメモリ素子を決定することができる。例えば、周辺機器が、周辺機器内のTLBの仮想アドレスから物理アドレスへの変換情報を保持するために使用される所定の容量以上のメモリ素子(又は、複数のメモリ素子の組み合わせ)を有する場合に、コントローラは、仮想アドレスから物理アドレスへの変換をIOMMU内のTLBに保持するために、より小容量及び/又はより低速のメモリ素子を使用することを決定することができる。これにより、周辺機器が、自身の仮想アドレスから物理アドレスへの変換の殆どを実行することができるので、IOMMU内のTLBの仮想アドレスから物理アドレスへの変換を保持するために使用されるメモリ素子が不足している状況及び/又は必要以上に高速である状況を回避することができる。
いくつかの実施形態において、要因には、IOMMU内のTLBにおけるTLBエントリの複製量が含まれる。いくつかの実施形態において、周辺機器、及び、周辺機器によって実行されるプロセスは、IOMMU内のTLBを共有する。周辺機器及びプロセスは、(例えば、コンテキストスイッチの後等に)IOMMU内のTLBからのエントリのエビクトを引き起こす可能性があるため、周縁機器又はプロセスが、他の周辺機器又はプロセスによって使用されているTLBエントリをエビクトする可能性がある。IOMMU内のTLBのTLBエントリを複製することは、有用なTLBエントリのエビクトと、周辺機器及び/又はプロセスの対応する非効率な動作を回避することと、に役立つことができる。コントローラは、TLBエントリに使用される複製量に少なくとも部分的に基づいて、IOMMU内のTLBの仮想アドレスから物理アドレスへの変換を記憶するのに使用されるメモリ素子を決定することができる。例えば、コントローラは、複製量が閾値以上の場合、より大容量のメモリ素子を決定することができる。いくつかの実施形態において、IOMMU内のTLBのTLBエントリ(又は、要約情報)は、TLBエントリ及び/又は複製したTLBエントリにアクセスした周辺機器及び/又はプロセスに関する情報を含む。これらの実施形態のうちいくつかにおいて、周辺機器間のページの共有量、特定のページに依存する処理の分布及び/若しくは優先順位、並びに/又は、ページにアクセスする周辺機器の性質等の情報を、TLBエントリを複製する際及び/又は複製に基づいてメモリ素子を決定する際に使用することができる。
いくつかの実施形態において、要因には、IOMMU内及び/又は周辺機器内のメモリ素子の現在又は予測される将来の摩耗量(amount of wear)が含まれる。特定のタイプのメモリ技術(例えば、STT、PCM等)は、消耗し易い(すなわち、読み出し/書き込みサイクルの数が増加するにつれて、コンポーネント/回路のエラーの可能性がより高くなる)。コントローラは、摩耗量、周辺機器によるアクセス数及び/若しくはタイプ(例えば、TLBルックアップ等)、並びに/又は、周辺機器内のTLBの存在(若しくは欠如)に少なくとも部分的に基づいて、IOMMU内で仮想アドレスから物理アドレスへの変換を実行するために使用されるメモリ素子を決定することができる。例えば、コントローラは、IOMMU内のTLBにおいて、1つ以上の周辺機器によって閾値以上のTLBルックアップが行われるか予測される場合に、消耗し難いメモリを選択することができる。
いくつかの実施形態において、要因に関する情報は、決定に先立って既知であってもよいし、他の方法で取得されてもよい。例えば、コントローラは、(例えば、周辺機器内のTLBとして)仮想アドレスから物理アドレスへの変換を実行する際に使用される特定のメモリ素子を含むように、特定の周辺機器を(リスト、テーブル等を介して)知ることができる。別の例として、管理者、設計者又は他のユーザは、要因に関する情報をコントローラ(又は、より具体的には、コンピューティングデバイス)に入力し、又は、他の方法によってコントローラに提供することができる。さらに別の例として、コントローラは、要因についてコンピューティングデバイス及び/又は周辺機器からレポートを受信することができる。さらに別の例として、コントローラは、おおよその所定期間(例えば、秒、時間、日等)に亘る要因を決定するために、仮想アドレスから物理アドレスへの変換及び/又は他の動作を監視することができる。
いくつかの実施形態において、IOMMU及び周辺機器内で仮想アドレスを物理アドレスへの変換を実行するために使用されるメモリのタイプ間で所定の関係が維持される。例えば、周辺機器とIOMMUとの間の対応するTLBの仮想アドレスから物理アドレスへの変換情報を保持するための合計N個(Nは特定の整数)のエントリのターゲットを使用することができる。別の例として、周辺機器及びIOMMUによって実行可能な仮想アドレスから物理アドレスへの変換の数又は割合のターゲット又は推定値が使用されてもよい。
いくつかの要因を上述したが、いくつかの実施形態において、一部又は全ての要因が使用されず、他の要因が使用され、及び/又は、要因の組み合わせが使用される。例えば、IOMMU、周辺機器及び/又はコンピューティングデバイスの最新の動作条件、モード及び/又は状態は、例えば、複製、周辺機器内で利用可能なメモリ素子等の他の要因と組み合わせて使用されてもよい。上述したように、要因は、概して、IOMMU及び/若しくは周辺機器内での仮想アドレスから物理アドレスへの変換のパフォーマンスに関連する要因、これに依存する要因、又は、他の関連する要因である。したがって、各要因を使用する1つの可能な目的は、仮想アドレスから物理アドレスへの変換を実行するためにどのメモリ素子を使用するか(又は使用しないか)に関するより良い決定を可能にすることである。
(仮想アドレスから物理アドレスへの変換を実行するために使用されるメモリ素子の選択)
上述したように、記載された実施形態において、コントローラ(例えば、コントローラ200)は、仮想アドレスから物理アドレスへの変換を実行するために使用されるIOMMU(例えば、IOMMU114)内の利用可能なメモリ素子の中からメモリ素子を選択する。図3は、いくつかの実施形態による、仮想アドレスから物理アドレスへの変換を実行するために使用されるメモリ素子を選択するプロセスを示すフローチャートである。なお、図3に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として提示されることに留意されたい。他の実施形態によって実行される動作は、異なる動作及び/又は異なる順序で実行される動作を含む。また、動作を記載する際に特定の機構/素子(例えば、コントローラ等)が用いられているが、いくつかの実施形態において、他の機構が動作を実行し、及び/又は、動作が他の機構/素子上で実行されてもよい。
図3に示すプロセスは、コントローラが、1つ以上の要因に基づいて、仮想アドレスから物理アドレスへの変換を実行するために使用されるIOMMU内の利用可能なメモリ素子のセットの中から1つ以上の選択されたメモリ素子を決定する(ステップ300)場合に開始される。この動作中に、コントローラは、TLBの仮想アドレスから物理アドレスへの変換情報を記憶するのに使用されるメモリ素子を選択する。より具体的には、コントローラは、TLBの仮想アドレスから物理アドレスへの変換情報の対応する部分を記憶するためにどのメモリ素子を使用するかを決定する。上述したように、1つ以上の要因には、IOMMU及び/又は周辺機器内の仮想アドレスから物理アドレスへの変換のパフォーマンス(及び、より具体的には、IOMMUが配置されたコンピューティングデバイスの動作)に関連する要因、これに依存する要因、又は、他の関連する要因が含まれる。
いくつかの実施形態において、IOMMUがスタートアップすると(例えば、最初に電源投入された、低電力状態から復帰した等)、ステップ300が実行される。これらの実施形態において、TLBの仮想アドレスから物理アドレスへの変換情報を記憶するために使用される特定のメモリ素子は、スタートアップの際に設定される。これらの実施形態のうちいくつかにおいて、メモリ素子は、スタートアップの際に設定された後に変更されない。これらの実施形態のうち他において、メモリ素子は、動的に変更されてもよい(すなわち、IOMMUが動作すると、可能な場合に複数回変更される)。これらの実施形態のいくつかにおいて、コントローラは、仮想アドレスから物理アドレスへの変換を実行するために使用されるメモリ素子を定期的(例えば、所定のイベントが発生した場合にX秒毎等)に確認し、仮想アドレスから物理アドレスへの変換を実行するために使用されるメモリ素子を動的に変更することができる。メモリ素子の動的な変更をサポートする実施形態において、コントローラ(又は、コンピューティングデバイス内の別のエンティティ)は、変更を有効にするために、仮想アドレスから物理アドレスへの変換情報をメモリ素子間でコピーするためのコピー機構を含む。
いくつかの実施形態において、ステップ300の間、コントローラは、ページテーブル情報のブロックを記憶するために使用されるメモリ素子も選択する。これらの実施形態のうちいくつかにおいて、TLBの仮想アドレスから物理アドレスへの変換情報を記憶するのに使用されないメモリ素子及び/又はメモリ素子の一部を、ページテーブル情報のブロックを記憶するために使用することができる。例えば、メモリ素子の第1部分(例えば、半分、所定のバイト数等)は、TLBの仮想アドレスから物理アドレスへの変換情報を記憶するために予約され、割り当てられてもよく、第2部分は、ページテーブル情報のブロックを記憶するために予約又は割り当てられてもよい。
次に、コントローラは、IOMMU内で仮想アドレスから物理アドレスへの変換を実行するために、1つ以上の選択されたメモリ素子を使用する(ステップ302)。より具体的には、コントローラは、仮想アドレスから物理アドレスへの変換に関連するメタデータを取得するために、及び/又は、IOMMU内のTLBのデータ(可能な場合、要約データを含む)に依存する他の動作を実行するために、仮想アドレスから物理アドレスへの変換を実行するための少なくともいくつかのメモリ素子を使用する。例えば、コントローラは、周辺機器から(又は、周辺機器によって実行される作業負荷から)、仮想アドレスを含む変換要求を受信することができ、TLB内の(すなわち、対応するメモリ素子内の)対応する物理アドレスをルックアップすることができ、物理アドレスを要求元の周辺機器に返すことができる。また、コントローラは、ページテーブル情報のブロックを記憶するために、ページテーブル情報のブロックを記憶するのに使用されるメモリ素子(又は、その一部)を使用することができる。上述したように、この動作は、メモリ(例えば、メモリ104又はコンピューティングデバイス100内の他の場所)からメモリ素子へのページテーブル情報のブロックの移動又はコピーすることと、ページテーブルウォークを実行するためにページテーブル情報のブロックを使用することと、等を含む。
上述したように、コントローラは、仮想アドレスから物理アドレスへの変換を実行するために使用されるメモリ素子に電源投入することができる。例えば、いくつかの実施形態において、メモリ素子は、仮想アドレスから物理アドレスへの変換を実行するために使用されていない場合に、低電力状態(例えば、電源電圧の低下(おおよそゼロまで)、制御クロック周波数の低減(おおよそゼロまで)等)に移行又は維持される。これらの実施形態において、コントローラが、仮想アドレスから物理アドレスへの変換を実行するためにメモリ素子を使用することを決定した場合に、メモリ素子は、電源投入状態(例えば、1つ以上の動作電圧への電源電圧の増加、1つ以上の動作周波数への制御クロック周波数の増加等)に移行することができる。
(状態保持メモリ素子を使用した、メモリ素子の仮想アドレスから物理アドレスへの変換情報の更新)
図4は、いくつかの実施形態による、IOMMU(例えば、IOMMU114)内のメモリ素子の仮想アドレスから物理アドレスへの変換情報を更新するために、状態保持メモリ素子(例えば、状態保持メモリ素子206)を使用するプロセスを示すフローチャートである。図4に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として提示されることに留意されたい。他の実施形態によって実行される動作は、異なる動作及び/又は異なる順序で実行される動作を含む。また、動作を説明する際に特定の機構/素子(例えば、コントローラ等)が用いられているが、いくつかの実施形態において、他の機構が動作を実行し、及び/又は、動作が他の機構/素子上で実行されてもよい。
図4に示すプロセスは、コントローラ(例えば、コントローラ200)が、仮想アドレスから物理アドレスへの変換を実行するために使用される情報を状態保持メモリ素子に記憶する(ステップ400)場合に開始する。例えば、いくつかの実施形態において、コントローラは、IOMMU内のTLBからコピーされ及び/又は他の方法によりTLB内の情報に基づく、仮想アドレスから物理アドレスへの変換情報を、状態保持メモリ素子に記憶することができる。別の例として、いくつかの実施形態において、コントローラは、1つ以上のメモリ素子からコピーされたページテーブル情報のブロックを状態保持メモリ素子に記憶することができる。コントローラは、情報がIOMMU内のメモリ素子(例えば、メモリ素子202〜204)に追加、更新又は他の方法で変更される場合に、情報を状態保持メモリ素子に記憶することができ、及び/又は、IOMMUのパワーダウン動作の一部として(例えば、IOMMUがフルパワー状態から低電力状態に移行する場合に)実行することができる。
次に、IOMMUの電源が遮断される(ステップ402)。例えば、電力を節約するために、IOMMUを低電力状態に移行することができる。低電力状態において、仮想アドレスから物理アドレスへの変換情報を記憶するメモリ素子は、データをメモリ素子内に保持するには不十分な動作状態(すなわち、対応する電圧、電流、クロック周波数等)に維持され得る。仮想アドレスから物理アドレスへの変換情報を上述したように状態保持メモリ素子に記憶することによって、仮想アドレスから物理アドレスへの変換情報は、IOMMUが低電力状態にある間保持される。
次に、IOMMUの電力を復帰させる(ステップ404)。例えば、IOMMUは、低電力状態からフルパワー状態に移行することができる。フルパワー状態において、IOMMU内のメモリ素子は、データをメモリ素子内に保持するのに十分な動作状態に維持される。しかしながら、低電力状態を介した早期の移行により、メモリ素子は、仮想アドレスから物理アドレスへの変換情報をもはや保持していない可能性がある(すなわち、メモリ素子がパワーダウンされたときに情報が失われた可能性がある)。したがって、コントローラは、状態保持メモリ素子に保持された仮想アドレスから物理アドレスへの変換情報を、状態保持メモリ素子から取得する(ステップ406)。次いで、コントローラは、仮想アドレスから物理アドレスへの変換情報を使用して、メモリ素子内の仮想アドレスから物理アドレスへの変換情報の一部又は全てを更新する(ステップ408)。例えば、コントローラは、状態保持メモリ素子から取得した仮想アドレスから物理アドレスへの変換情報を使用して、IOMMU内のTLBを更新することができる(例えば、1つ以上のエントリをTLBに入力する等)。別の例として、コントローラは、ページテーブル情報のブロックを、状態保持メモリ素子からIOMMU内の1つ以上のメモリ素子にコピーすることができる。
いくつかの実施形態において、コントローラは、ステップ408のようにメモリ素子を更新する前に、仮想アドレスから物理アドレスへの変換情報の有効性を検証する。一般的に、この動作は、IOMMUの動作環境に少なくとも部分的に基づいて、仮想アドレスから物理アドレスへの変換情報が現在のままである(すなわち、IOMMUがパワーダウンされたため、変更されていない)ことを判別することを含む。例えば、コントローラは、IOMMUがパワーダウンさている間に、仮想アドレスから物理アドレスへの変換マッピング及び/又はページテーブル情報のブロックが変更されたかどうかを判別するために、コンピューティングデバイス(例えば、プロセッサ102等)内の1つ以上の他のエンティティに問い合わせることができる。
いくつかの実施形態において、コンピューティングデバイス(例えば、図1のコンピューティングデバイス100及び/又はその一部)は、非一時的なコンピュータ可読記憶媒体に記憶されたコード及び/又はデータを使用して、本明細書に記載された動作の一部又は全てを実行する。より具体的には、コンピューティングデバイスは、記載された動作を実行する場合に、コンピュータ可読記憶媒体からコード及び/又はデータを読み出して、コードを実行し及び/又はデータを使用する。
コンピュータ可読記憶媒体は、コンピューティングデバイスによって使用されるコード及び/又はデータを記憶する任意のデバイス、媒体、これらの組み合わせであってもよい。例えば、コンピュータ可読記憶媒体は、限定されないが、フラッシュメモリ、ランダムアクセスメモリ(SRAM、DRAM、DDR、DDR2/DDR3/DDR4 SDRAM等)、読み出し専用メモリ(ROM)、磁気若しくは光学記憶媒体(例えば、ディスクドライブ、磁気テープ、CD、DVD)を含む、揮発性メモリ又は不揮発性メモリを含むことができる。
いくつかの実施形態において、1つ以上のハードウェアモジュールは、本明細書に記載された動作を実行するように構成されている。例えば、ハードウェアモジュールには、限定されないが、1つ以上のプロセッサ/コア/中央処理装置(CPU)、特定用途向け集積回路(ASIC)チップ、フィールドプログラマブルゲートアレイ(FPGA)、コントローラ、メモリ管理ユニット(例えば、IOMMU、MMU等)、計算ユニット、組み込みプロセッサ、グラフィックスプロセッサ(GPU)/グラフィックスコア、パイプライン、アクセラレーテッドプロセッシングユニット(APU)、及び/又は、他のプログラマブルロジックデバイスが含まれる。このようなハードウェアモジュールが起動すると、ハードウェアモジュールは、一部又は全ての動作を実行する。いくつかの実施形態において、ハードウェアモジュールは、動作を実行する命令(プログラムコード、ファームウェア等)を実行することによって構成された1つ以上の汎用回路を含む。
いくつかの実施形態において、本明細書に記載された構造及び機構(例えば、コンピューティングデバイス100及び/又はその一部)のうち一部又は全てを表すデータ構造は、コンピューティングデバイスにより読み出され、直接的若しくは間接的に使用され、構造及び機構を含むハードウェアを製造することが可能な、データベース又は他のデータ構造を含むコンピュータ可読記憶媒体に記憶されている。例えば、データ構造は、Verilog又はVHDL等の高レベル設計言語(HDL)におけるハードウェア機能の動作レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。この記述は、上述した構造及び機構を含むハードウェアの機能を表す合成ライブラリからゲート/回路素子のリストを含むネットリストを生成するために当該記述を合成する合成ツールによって読み出されてもよい。次に、ネットリストを配置及びルーティングして、マスクに適用される幾何学的形状を記述するデータセットを生成することができる。次いで、マスクは、上述した構造及び機構に対応する1つ以上の半導体回路を製造するために、様々な半導体製造ステップで使用されてもよい。或いは、コンピュータアクセス可能記憶媒体上のデータベースは、所望によりネットリスト(合成ライブラリを含む若しくは含まない)又はデータセットであってもよいし、グラフィックデータシステム(GDS)IIデータであってもよい。
この記載では、いくつかの実施形態の説明において機能ブロックを参照することができる。一般に、機能ブロックは、記載された動作を実行する1つ以上の相互に関連する回路を含む。いくつかの実施形態において、機能ブロック内の回路は、記載された動作を実行するためにプログラムコード(例えば、マイクロコード、ファームウェア、アプリケーション等)を実行する回路を含む。
上述した実施形態の説明は、例示及び説明のために示されたものである。これらは、実施形態が網羅的であること、又は、実施形態が開示されたものに限定されることを意図していない。したがって、当業者には、多くの変更及び変形形態が明らかであろう。また、上記の開示は、本発明を限定するものではない。本発明の範囲は、添付の特許請求の範囲によって定義される。

Claims (20)

  1. 入出力メモリ管理ユニット(IOMMU)であって、
    2つ以上のメモリ素子と、
    コントローラと、を備え、
    前記コントローラは、
    1つ以上の要因に基づいて、前記IOMMU内で仮想アドレスから物理アドレスへの変換を実行するために、前記2つ以上のメモリ素子から1つ以上の選択されたメモリ素子を選択し、
    前記1つ以上の選択されたメモリ素子を使用して、前記仮想アドレスから物理アドレスへの変換を実行する、
    ように構成されている、
    IOMMU。
  2. 前記IOMMUに接続された1つ以上の周辺機器は周辺メモリ素子を含み、周辺メモリ素子の各々は、仮想アドレスから物理アドレスへの変換情報を記憶するために対応する周辺機器によって使用され、前記仮想アドレスから物理アドレスへの変換情報は、仮想アドレスから物理アドレスへの変換をローカルに実行するために前記対応する周辺機器によって使用され、
    前記1つ以上の要因は、前記1つ以上の周辺機器内の前記周辺メモリ素子のタイプを含み、
    前記1つ以上の選択されたメモリ素子を選択することは、前記1つ以上の周辺機器内の前記周辺メモリ素子のタイプに基づいて、前記IOMMU内で仮想アドレスから物理アドレスへの変換を実行するために使用される、少なくとも1つのタイプの選択されたメモリ素子を選択することを含む、
    請求項1のIOMMU。
  3. 前記1つ以上の要因は、仮想アドレスから物理アドレスへの変換情報の複製量を含み、
    前記1つ以上の選択されたメモリ素子を選択することは、前記複製量に基づいて、前記IOMMU内で仮想アドレスから物理アドレスへの変換を実行するために使用される、少なくとも1つのタイプの選択されたメモリ素子を選択することを含む、
    請求項1のIOMMU。
  4. 前記1つ以上の要因は、前記2つ以上のメモリ素子の一部又は全ての摩耗量を含み、
    前記1つ以上の選択されたメモリ素子を選択することは、前記摩耗量に基づいて、前記IOMMU内で仮想アドレスから物理アドレスへの変換を実行するために使用される、少なくとも1つのタイプの選択されたメモリ素子を選択することを含む、
    請求項1のIOMMU。
  5. 前記1つ以上の選択されたメモリ素子を使用することは、
    前記1つ以上の選択されたメモリ素子のうち少なくとも1つに対して、前記IOMMUのトランスレーションルックアサイドバッファの仮想アドレスから物理アドレスへの変換情報を記憶することを含む、
    請求項1のIOMMU。
  6. 前記1つ以上の選択されたメモリ素子を使用することは、
    前記1つ以上の選択されたメモリ素子のうち少なくとも1つに対して、ページテーブル情報の1つ以上のブロックのコピーを記憶することであって、ページテーブル情報の各ブロックは、仮想アドレスから物理アドレスへの変換情報を含む複数の対応するページテーブルエントリを含む、ことを含む、
    請求項1のIOMMU。
  7. 前記1つ以上の選択されたメモリ素子を使用することは、
    前記1つ以上の選択されたメモリ素子のうち低電力状態にあるメモリ素子を、前記低電力状態から電源投入状態に移行させることを含む、
    請求項1のIOMMU。
  8. 前記IOMMUの電源が遮断されている間、前記IOMMU内で仮想アドレスから物理アドレスへの変換を実行するのに使用される情報を記憶するように構成された不揮発性メモリ素子をさらに備え、
    前記コントローラは、前記IOMMUの電源が投入された後に、
    前記情報を前記不揮発性メモリ素子から取得し、
    前記情報に基づいて、前記1つ以上の選択されたメモリ素子の一部又は全てを更新する、
    ように構成されている、
    請求項1のIOMMU。
  9. 前記コントローラは、前記1つ以上の選択されたメモリ素子の一部又は全てを更新する前に、
    前記IOMMUの動作環境に少なくとも部分的に基づいて、前記情報の有効性を検証する、
    ように構成されている、
    請求項8のIOMMU。
  10. 前記2つ以上のメモリ素子のうち少なくとも1つは、不揮発性タイプのメモリである、
    請求項1のIOMMU。
  11. 2つ以上のメモリ素子を含む入出力メモリ管理ユニット(IOMMU)を動作させる方法であって、
    1つ以上の要因に基づいて、前記IOMMU内で仮想アドレスから物理アドレスへの変換を実行するために、前記2つ以上のメモリ素子から1つ以上の選択されたメモリ素子を選択することと、
    前記1つ以上の選択されたメモリ素子を使用して、前記仮想アドレスから物理アドレスへの変換を実行することと、を含む、
    方法。
  12. 前記IOMMUに接続された1つ以上の周辺機器は周辺メモリ素子を含み、周辺メモリ素子の各々は、仮想アドレスから物理アドレスへの変換情報を記憶するために対応する周辺機器によって使用され、前記仮想アドレスから物理アドレスへの変換情報は、仮想アドレスから物理アドレスへの変換をローカルに実行するために前記対応する周辺機器によって使用され、
    前記1つ以上の要因は、前記1つ以上の周辺機器内の前記周辺メモリ素子のタイプを含み、
    前記1つ以上の選択されたメモリ素子を選択することは、前記1つ以上の周辺機器内の前記周辺メモリ素子のタイプに基づいて、前記IOMMU内で仮想アドレスから物理アドレスへの変換を実行するために使用される、少なくとも1つのタイプの選択されたメモリを選択することを含む、
    請求項11の方法。
  13. 前記1つ以上の要因は、仮想アドレスから物理アドレスへの変換情報の複製量を含み、
    前記1つ以上の選択されたメモリ素子を選択することは、前記複製量に基づいて、前記IOMMU内で仮想アドレスから物理アドレスへの変換を実行するために使用される、少なくとも1つのタイプの選択されたメモリ素子を選択することを含む、
    請求項11の方法。
  14. 前記1つ以上の要因は、前記2つ以上のメモリ素子の一部又は全ての摩耗量を含み、
    前記1つ以上の選択されたメモリ素子を選択することは、前記摩耗量に基づいて、前記IOMMU内で仮想アドレスから物理アドレスへの変換を実行するために使用される、少なくとも1つのタイプの選択されたメモリ素子を選択することを含む、
    請求項11の方法。
  15. 前記1つ以上の選択されたメモリ素子を使用することは、
    前記1つ以上の選択されたメモリ素子のうち少なくとも1つに対して、前記IOMMUのトランスレーションルックアサイドバッファの仮想アドレスから物理アドレスへの変換情報を記憶することを含む、
    請求項11の方法。
  16. 前記1つ以上の選択されたメモリ素子を使用することは、
    前記1つ以上の選択されたメモリ素子のうち少なくとも1つに対して、ページテーブル情報の1つ以上のブロックを記憶することであって、ページテーブル情報の各ブロックは、仮想アドレスから物理アドレスへの変換情報を含む複数の対応するページテーブルエントリを含む、ことを含む、
    請求項11の方法。
  17. 前記1つ以上の選択されたメモリ素子を使用することは、
    前記1つ以上の選択されたメモリ素子のうち低電力状態にあるメモリ素子を、前記低電力状態から電源投入状態に移行させることを含む、
    請求項11の方法。
  18. 仮想アドレスから物理アドレスへの変換を実行するのに使用される情報を前記IOMMU内の不揮発性メモリ素子に記憶することと、
    前記IOMMUの電源を遮断することと、
    前記IOMMUへの電源を復帰することと、
    前記IOMMUへの電源を復帰した後に、前記情報を前記不揮発性メモリ素子から取得し、前記情報に基づいて、前記IOMMUにおいて前記1つ以上の選択されたメモリ素子の一部又は全てを更新することと、を含む、
    請求項11の方法。
  19. 前記1つ以上の選択されたメモリ素子の一部又は全てを更新する前に、
    前記IOMMUの動作環境に少なくとも部分的に基づいて、前記情報の有効性を検証することを含む、
    請求項18の方法。
  20. 前記2つ以上のメモリ素子のうち少なくとも1つは、不揮発性タイプのメモリである、
    請求項11の方法。
JP2018555752A 2016-05-27 2017-05-19 仮想アドレスから物理アドレスへの変換を実行する入出力メモリ管理ユニットにおける複数のメモリ素子の使用 Active JP7232644B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/167,038 US10678702B2 (en) 2016-05-27 2016-05-27 Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations
US15/167,038 2016-05-27
PCT/US2017/033514 WO2017205204A1 (en) 2016-05-27 2017-05-19 Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations

Publications (2)

Publication Number Publication Date
JP2019521409A true JP2019521409A (ja) 2019-07-25
JP7232644B2 JP7232644B2 (ja) 2023-03-03

Family

ID=60411875

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018555752A Active JP7232644B2 (ja) 2016-05-27 2017-05-19 仮想アドレスから物理アドレスへの変換を実行する入出力メモリ管理ユニットにおける複数のメモリ素子の使用

Country Status (6)

Country Link
US (2) US10678702B2 (ja)
EP (1) EP3433742B1 (ja)
JP (1) JP7232644B2 (ja)
KR (1) KR102423713B1 (ja)
CN (1) CN109154907B (ja)
WO (1) WO2017205204A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11762764B1 (en) * 2015-12-02 2023-09-19 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
US10936045B2 (en) * 2016-09-26 2021-03-02 Hewlett-Packard Development Company, L.P. Update memory management information to boot an electronic device from a reduced power mode
KR20180062812A (ko) 2016-12-01 2018-06-11 삼성전자주식회사 이종의 메모리 소자들을 포함하는 집적회로 소자 및 그 제조 방법
US10956332B2 (en) * 2017-11-01 2021-03-23 Advanced Micro Devices, Inc. Retaining cache entries of a processor core during a powered-down state
WO2019132976A1 (en) * 2017-12-29 2019-07-04 Intel Corporation Unified address translation for virtualization of input/output devices
US11573904B2 (en) * 2018-10-12 2023-02-07 Vmware, Inc. Transparent self-replicating page tables in computing systems
US11320995B2 (en) 2018-10-31 2022-05-03 Western Digital Technologies, Inc. Transferring computational operations to controllers of data storage devices
US11003588B2 (en) * 2019-08-22 2021-05-11 Advanced Micro Devices, Inc. Networked input/output memory management unit
KR102355374B1 (ko) 2019-09-27 2022-01-25 에스케이하이닉스 주식회사 이종 메모리를 이용하여 메모리 주소 변환 테이블을 관리하는 메모리 관리 유닛 및 이의 메모리 주소 관리 방법
US11409446B2 (en) * 2020-11-11 2022-08-09 Micro Technology, Inc. Media management on power-up
CN112527698B (zh) * 2020-12-04 2024-03-22 联想(北京)有限公司 一种处理方法、装置及设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020026814A (ko) * 2000-10-02 2002-04-12 포만 제프리 엘 컴퓨터 시스템의 중지 및 재개 동작을 위한 방법 및 장치
WO2004104841A1 (ja) * 2003-05-21 2004-12-02 Fujitsu Limited アドレス変換バッファの電力制御方法及びその装置
US20090119477A1 (en) * 2007-11-07 2009-05-07 Qualcomm Incorporated Configurable Translation Lookaside Buffer
US20100011147A1 (en) * 2006-01-17 2010-01-14 Hummel Mark D Virtualizing an IOMMU
US20110202724A1 (en) * 2010-02-17 2011-08-18 Advanced Micro Devices, Inc. IOMMU Architected TLB Support
US9058268B1 (en) * 2012-09-20 2015-06-16 Matrox Graphics Inc. Apparatus, system and method for memory management

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6370632B1 (en) 1997-11-18 2002-04-09 Intrinsity, Inc. Method and apparatus that enforces a regional memory model in hierarchical memory systems
US6963963B2 (en) * 2003-03-25 2005-11-08 Freescale Semiconductor, Inc. Multiprocessor system having a shared main memory accessible by all processor units
US20050080934A1 (en) 2003-09-30 2005-04-14 Cota-Robles Erik C. Invalidating translation lookaside buffer entries in a virtual machine (VM) system
US7222214B2 (en) 2004-03-25 2007-05-22 Lucent Technologies Inc. Device-level address translation within a programmable non-volatile memory device
US7543131B2 (en) * 2005-08-12 2009-06-02 Advanced Micro Devices, Inc. Controlling an I/O MMU
US7917723B2 (en) * 2005-12-01 2011-03-29 Microsoft Corporation Address translation table synchronization
US7739474B2 (en) * 2006-02-07 2010-06-15 International Business Machines Corporation Method and system for unifying memory access for CPU and IO operations
US7426627B2 (en) * 2006-03-10 2008-09-16 Microsoft Corporation Selective address translation for a resource such as a hardware device
US7813210B2 (en) 2007-08-16 2010-10-12 Unity Semiconductor Corporation Multiple-type memory
US8639943B2 (en) 2008-06-16 2014-01-28 Qualcomm Incorporated Methods and systems for checking run-time integrity of secure code cross-reference to related applications
US8291192B2 (en) * 2008-10-30 2012-10-16 Kyocera Document Solutions, Inc. Memory management system
US9569349B2 (en) 2008-12-19 2017-02-14 Ati Technologies Ulc Method and apparatus for reallocating memory content
US8832354B2 (en) * 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8386747B2 (en) * 2009-06-11 2013-02-26 Freescale Semiconductor, Inc. Processor and method for dynamic and selective alteration of address translation
JP2011203937A (ja) * 2010-03-25 2011-10-13 Nec Corp Dmaセキュリティチェック回路及びdmaセキュリティチェック方法
US8086765B2 (en) * 2010-04-29 2011-12-27 Hewlett-Packard Development Company, L.P. Direct I/O device access by a virtual machine with memory managed using memory disaggregation
US8239619B2 (en) * 2010-07-09 2012-08-07 Macronix International Co., Ltd. Method and apparatus for high-speed byte-access in block-based flash memory
US8635385B2 (en) * 2010-07-16 2014-01-21 Advanced Micro Devices, Inc. Mechanism to handle peripheral page faults
US8856475B1 (en) * 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
US9355031B2 (en) * 2011-04-21 2016-05-31 International Business Machines Corporation Techniques for mapping device addresses to physical memory addresses
US8631212B2 (en) * 2011-09-25 2014-01-14 Advanced Micro Devices, Inc. Input/output memory management unit with protection mode for preventing memory access by I/O devices
US8719464B2 (en) 2011-11-30 2014-05-06 Advanced Micro Device, Inc. Efficient memory and resource management
US20130262736A1 (en) 2012-03-30 2013-10-03 Ati Technologies Ulc Memory types for caching policies
US9086950B2 (en) * 2012-09-26 2015-07-21 Avaya Inc. Method for heap management
US10310973B2 (en) * 2012-10-25 2019-06-04 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
KR101463536B1 (ko) * 2012-11-30 2014-11-19 성균관대학교산학협력단 메모리 관리 장치, 방법 및 시스템
KR102014083B1 (ko) * 2012-12-31 2019-08-27 삼성전자주식회사 단말기의 메모리 관리방법 및 장치
US9342403B2 (en) 2014-03-28 2016-05-17 Intel Corporation Method and apparatus for managing a spin transfer torque memory
US10282100B2 (en) * 2014-08-19 2019-05-07 Samsung Electronics Co., Ltd. Data management scheme in virtualized hyperscale environments
US10275171B2 (en) 2014-09-16 2019-04-30 Kove Ip, Llc Paging of external memory
US9626300B2 (en) * 2015-07-27 2017-04-18 Google Inc. Address caching in switches

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020026814A (ko) * 2000-10-02 2002-04-12 포만 제프리 엘 컴퓨터 시스템의 중지 및 재개 동작을 위한 방법 및 장치
JP2002182803A (ja) * 2000-10-02 2002-06-28 Internatl Business Mach Corp <Ibm> コンピュータ・システムの動作のサスペンドとレジュームを行う方法および装置
WO2004104841A1 (ja) * 2003-05-21 2004-12-02 Fujitsu Limited アドレス変換バッファの電力制御方法及びその装置
US20100011147A1 (en) * 2006-01-17 2010-01-14 Hummel Mark D Virtualizing an IOMMU
US20090119477A1 (en) * 2007-11-07 2009-05-07 Qualcomm Incorporated Configurable Translation Lookaside Buffer
WO2009062077A1 (en) * 2007-11-07 2009-05-14 Qualcomm Incorporated Configurable translation lookaside buffer
JP2011503726A (ja) * 2007-11-07 2011-01-27 クゥアルコム・インコーポレイテッド コンフィギュラブル・トランスレーション・ルックアサイド・バッファ
US20110202724A1 (en) * 2010-02-17 2011-08-18 Advanced Micro Devices, Inc. IOMMU Architected TLB Support
WO2011103184A2 (en) * 2010-02-17 2011-08-25 Advanced Micro Devices, Inc. Iommu architected tlb support
US8244978B2 (en) * 2010-02-17 2012-08-14 Advanced Micro Devices, Inc. IOMMU architected TLB support
JP2013519965A (ja) * 2010-02-17 2013-05-30 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド Tlbサポート設計のiommu
US9058268B1 (en) * 2012-09-20 2015-06-16 Matrox Graphics Inc. Apparatus, system and method for memory management

Also Published As

Publication number Publication date
US10678702B2 (en) 2020-06-09
US11341059B2 (en) 2022-05-24
US20170344490A1 (en) 2017-11-30
KR20190002473A (ko) 2019-01-08
EP3433742A4 (en) 2019-11-20
KR102423713B1 (ko) 2022-07-21
EP3433742B1 (en) 2023-05-03
WO2017205204A1 (en) 2017-11-30
CN109154907B (zh) 2023-09-15
JP7232644B2 (ja) 2023-03-03
EP3433742A1 (en) 2019-01-30
US20200301849A1 (en) 2020-09-24
CN109154907A (zh) 2019-01-04

Similar Documents

Publication Publication Date Title
US11341059B2 (en) Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations
US11966581B2 (en) Data management scheme in virtualized hyperscale environments
JP5348429B2 (ja) 持続性メモリのためのキャッシュコヒーレンスプロトコル
US10019377B2 (en) Managing cache coherence using information in a page table
EP3382557B1 (en) Method and apparatus for persistently caching storage data in a page cache
US20130290643A1 (en) Using a cache in a disaggregated memory architecture
US10078588B2 (en) Using leases for entries in a translation lookaside buffer
WO2017105597A1 (en) Computing system having multi-level system memory capable of operating in a single level system memory mode
JP2019530112A (ja) 遅延キャッシュの利用のためのシステム及び方法
CN110597742A (zh) 用于具有持久***存储器的计算机***的改进存储模型
US20070038814A1 (en) Systems and methods for selectively inclusive cache
JP2024503259A (ja) 入出力デバイスによってアクセス可能なメモリのページの移行
US20220365881A1 (en) Memory Cache with Partial Cache Line Valid States
US20180365183A1 (en) Cooperative overlay
US11561906B2 (en) Rinsing cache lines from a common memory page to memory
US10591978B2 (en) Cache memory with reduced power consumption mode
JP2016508650A (ja) リフレクティブメモリとのコヒーレンシの実施
JP6786541B2 (ja) 管理装置、情報処理装置、管理方法、およびプログラム
US20210191641A1 (en) Systems and methods for reducing instruction code memory footprint for multiple processes executed at a coprocessor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200511

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210324

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210427

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210727

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211005

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220225

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220705

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221024

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20221024

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20221102

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20221108

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230220

R150 Certificate of patent or registration of utility model

Ref document number: 7232644

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150