JP7232644B2 - 仮想アドレスから物理アドレスへの変換を実行する入出力メモリ管理ユニットにおける複数のメモリ素子の使用 - Google Patents
仮想アドレスから物理アドレスへの変換を実行する入出力メモリ管理ユニットにおける複数のメモリ素子の使用 Download PDFInfo
- Publication number
- JP7232644B2 JP7232644B2 JP2018555752A JP2018555752A JP7232644B2 JP 7232644 B2 JP7232644 B2 JP 7232644B2 JP 2018555752 A JP2018555752 A JP 2018555752A JP 2018555752 A JP2018555752 A JP 2018555752A JP 7232644 B2 JP7232644 B2 JP 7232644B2
- Authority
- JP
- Japan
- Prior art keywords
- iommu
- virtual
- physical address
- address translation
- 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.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims description 247
- 238000013519 translation Methods 0.000 title claims description 162
- 230000002093 peripheral effect Effects 0.000 claims description 123
- 238000000034 method Methods 0.000 claims description 25
- 230000010076 replication Effects 0.000 claims description 9
- 239000000872 buffer Substances 0.000 claims description 6
- 230000014616 translation Effects 0.000 description 131
- 230000007246 mechanism Effects 0.000 description 16
- 238000004891 communication Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 14
- 238000003860 storage Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 7
- 230000001419 dependent effect Effects 0.000 description 5
- 230000007704 transition Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000014759 maintenance of location Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 230000032683 aging Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/681—Multi-level TLB, e.g. microTLB and main TLB
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
Description
記載された実施形態は、コンピューティングデバイスで実行されるソフトウェアプログラム及びコンピューティングデバイスの周辺機器がデータアクセスを処理するために、「仮想メモリ」技術を使用する。記載された実施形態において、プログラム又は周辺機器がデータにアクセスする場合、データを含む所定サイズ(例えば、4KB、64KB等)のメモリブロックは、メモリの「ページ」と呼ばれ、大容量ストレージデバイスからコンピューティングデバイス内のメモリ内の利用可能な物理位置にコピーされ、又は、メモリ内の物理位置に新たに生成される。記載された実施形態では、プログラム又は周辺機器がメモリ内のページの物理位置の追跡を続けるように要求されるのを避けるために、対応するメモリ管理ユニット(又は、プロセッサ等の他のエンティティ)は、プログラム及び周辺機器用のページの物理位置を追跡する。例えば、プロセッサ内のメモリ管理ユニット(MMU)は、プロセッサによって実行されるプログラムのページの物理位置を追跡することができる。別の例として、入出力メモリ管理ユニット(IOMMU)は、周辺機器のページの物理位置を追跡することができる。これらの実施形態において、プログラム及び周辺機器(又は、周辺機器によって実行される作業負荷)は、ページの物理位置に基づくアドレス(又は「物理アドレス」)を使用してメモリをアドレス指定する代わりに、対応するプログラム又は周辺機器に固有のアドレス空間である「仮想アドレス空間」の「仮想アドレス」を使用して、メモリをアドレス指定する。プログラム又は周辺機器の観点から、仮想アドレスは、データが記憶されるメモリのページ内の位置を示しており、これに応じて、仮想アドレスを使用してメモリアクセスが行われる。しかしながら、仮想アドレスは、データが記憶されるメモリのページ内の物理位置の物理アドレスに直接マッピングされない場合がある。メモリ管理ユニットは、ページの物理位置を管理する一環として、メモリアクセス要求においてプログラム及び周辺機器によって使用される仮想アドレスを、データが実際に位置する物理アドレスに変換する。メモリ管理ユニットは、変換された物理アドレスをプログラム(若しくは、オペレーティングシステム等)又は周辺機器に提供し、この物理アドレスを使用してメモリアクセスを実行する。
記載された実施形態において、コンピューティングデバイスは、入出力メモリ管理ユニット(IOMMU)と、1つ以上の周辺機器と、を含む。概して、IOMMUは、仮想アドレスから物理アドレスへの変換を含む、コンピューティングデバイス内のメモリへの周辺機器によるアクセスを処理する。記載された実施形態において、IOMMUは、仮想アドレスから物理アドレスへの変換を実行するために使用可能な2つ以上のメモリ素子を含む。例えば、IOMMUは、第1タイプのメモリ回路(例えば、スタティックランダムアクセスメモリ(SRAM)等)を含む第1メモリ素子と、第2タイプのメモリ回路(例えば、相変化メモリ(PCM)等)を含む第2メモリ素子等と、を含み、これらの各々は、本明細書で説明する仮想アドレスから物理アドレスへの変換を実行するために使用することができる。
図1は、いくつかの実施形態による、コンピューティングデバイス100を示すブロック図である。図1に示すように、コンピューティングデバイス100は、プロセッサ102と、メモリ104と、入出力(IO)ハブ106と、周辺機器108~110と、を含む。プロセッサ102は、コンピューティングデバイス100において計算動作を実行する機能ブロックである。いくつかの実施形態において、プロセッサ102は、1つ以上の中央処理装置(CPU)コア、及び/又は、他の処理機能ブロックを含む。
図2は、いくつかの実施形態による、IOMMU114を示すブロック図である。図2に示すように、IOMMU114は、コントローラ200と、メモリ素子202~204と、状態保持メモリ素子206と、を含む。コントローラ200は、周辺機器108~110とメモリ104との間の相互作用を処理するための動作を実行する機能ブロックである。コントローラ200によって実行される動作は、仮想アドレスから物理アドレスへの変換、周辺機器108~110からのメモリ104に対するメモリアクセス保護、周辺機器のイベント及び割り込み処理等を有することができる。いくつかの実施形態において、コントローラ200は、マイクロコントローラ、ASIC、組み込みプロセッサ、CPUコア、及び/又は、別の機能ブロックを含む。いくつかの実施形態において、コントローラ200は、本明細書に記載の動作の一部又は全てを実行するためのプログラムコード(例えば、ファームウェア、ソフトウェアルーチン等)を実行する汎用処理回路を含む。いくつかの実施形態において、コントローラ200は、本明細書に記載の動作の一部又は全てを実行する専用回路(例えば、論理回路、計算回路、ディスクリート回路素子等)を含む。
上述したように、コントローラ(例えば、コントローラ200)は、1つ以上の要因に基づいて、IOMMU(例えば、IOMMU114)内の仮想アドレスから物理アドレスへの変換を実行するために使用されるメモリ素子を決定する。概して、決定を行う際に使用される要因には、IOMMU、周辺機器(例えば、周辺機器108~110)及び/若しくはコンピューティングデバイス内の仮想アドレスから物理アドレスへの変換のパフォーマンスに関連する要因、これに依存する要因又は他に関連する要因が含まれる。要因は、IOMMU及び/若しくはIOMMU内のメモリ素子(例えば、メモリ素子202~204)の動作、周辺機器及び周辺機器内のメモリ素子(存在する場合)の動作、並びに/又は、コンピューティングデバイスの動作の対応する態様を表すものである。例えば、要因は、仮想アドレスから物理アドレスへの変換がIOMMU及び/又は周辺機器において実行される速度に関連してもよいし、仮想アドレスから物理アドレスへの変換が実行されるIOMMU及び/又は周辺機器内の位置に関連してもよいし、IOMMU及び/又は周辺機器内のメモリ素子のタイプ等に関連してもよい。
上述したように、記載された実施形態において、コントローラ(例えば、コントローラ200)は、仮想アドレスから物理アドレスへの変換を実行するために使用されるIOMMU(例えば、IOMMU114)内の利用可能なメモリ素子の中からメモリ素子を選択する。図3は、いくつかの実施形態による、仮想アドレスから物理アドレスへの変換を実行するために使用されるメモリ素子を選択するプロセスを示すフローチャートである。なお、図3に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として提示されることに留意されたい。他の実施形態によって実行される動作は、異なる動作及び/又は異なる順序で実行される動作を含む。また、動作を記載する際に特定の機構/素子(例えば、コントローラ等)が用いられているが、いくつかの実施形態において、他の機構が動作を実行し、及び/又は、動作が他の機構/素子上で実行されてもよい。
図4は、いくつかの実施形態による、IOMMU(例えば、IOMMU114)内のメモリ素子の仮想アドレスから物理アドレスへの変換情報を更新するために、状態保持メモリ素子(例えば、状態保持メモリ素子206)を使用するプロセスを示すフローチャートである。図4に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として提示されることに留意されたい。他の実施形態によって実行される動作は、異なる動作及び/又は異なる順序で実行される動作を含む。また、動作を説明する際に特定の機構/素子(例えば、コントローラ等)が用いられているが、いくつかの実施形態において、他の機構が動作を実行し、及び/又は、動作が他の機構/素子上で実行されてもよい。
Claims (20)
- 入出力メモリ管理ユニット(IOMMU)であって、
2つ以上のメモリ素子と、
コントローラと、を備え、
前記コントローラは、
1つ以上の要因に基づいて、前記IOMMU内で仮想アドレスから物理アドレスへの変換を実行するために、前記2つ以上のメモリ素子から1つ以上の選択されたメモリ素子を選択することと、
前記1つ以上の選択されたメモリ素子を使用して、前記仮想アドレスから物理アドレスへの変換を実行することと、
前記2つ以上のメモリ素子のうち前記仮想アドレスから物理アドレスへの変換を実行するために選択されなかったメモリ素子である未選択のメモリ素子を、前記仮想アドレスから物理アドレスへの変換への実行以外の動作のために使用することと、
を行うように構成されている、
IOMMU。 - 前記IOMMUに接続された1つ以上の周辺機器は周辺メモリ素子を含み、周辺メモリ素子の各々は、仮想アドレスから物理アドレスへの変換情報を記憶するために対応する周辺機器によって使用され、前記仮想アドレスから物理アドレスへの変換情報は、仮想アドレスから物理アドレスへの変換をローカルに実行するために前記対応する周辺機器によって使用され、
前記1つ以上の要因は、前記1つ以上の周辺機器内の前記周辺メモリ素子のタイプを含み、
前記1つ以上の選択されたメモリ素子を選択することは、前記1つ以上の周辺機器内の前記周辺メモリ素子のタイプに基づいて、前記IOMMU内で仮想アドレスから物理アドレスへの変換を実行するために使用される、少なくとも1つのタイプの選択されたメモリ素子を選択することを含む、
請求項1のIOMMU。 - 前記1つ以上の要因は、仮想アドレスから物理アドレスへの変換情報の複製量を含み、
前記1つ以上の選択されたメモリ素子を選択することは、前記複製量に基づいて、前記IOMMU内で仮想アドレスから物理アドレスへの変換を実行するために使用される、少なくとも1つのタイプの選択されたメモリ素子を選択することを含む、
請求項1のIOMMU。 - 前記1つ以上の要因は、前記2つ以上のメモリ素子の一部又は全ての摩耗量を含み、
前記1つ以上の選択されたメモリ素子を選択することは、前記摩耗量に基づいて、前記IOMMU内で仮想アドレスから物理アドレスへの変換を実行するために使用される、少なくとも1つのタイプの選択されたメモリ素子を選択することを含む、
請求項1のIOMMU。 - 前記1つ以上の選択されたメモリ素子を使用することは、
前記1つ以上の選択されたメモリ素子のうち少なくとも1つに対して、前記IOMMUのトランスレーションルックアサイドバッファの仮想アドレスから物理アドレスへの変換情報を記憶することを含む、
請求項1のIOMMU。 - 前記1つ以上の選択されたメモリ素子を使用することは、
前記1つ以上の選択されたメモリ素子のうち少なくとも1つに対して、ページテーブル情報の1つ以上のブロックのコピーを記憶することであって、ページテーブル情報の各ブロックは、仮想アドレスから物理アドレスへの変換情報を含む複数の対応するページテーブルエントリを含む、ことを含む、
請求項1のIOMMU。 - 前記1つ以上の選択されたメモリ素子を使用することは、
前記1つ以上の選択されたメモリ素子のうち低電力状態にあるメモリ素子を、前記低電力状態から電源投入状態に移行させることを含む、
請求項1のIOMMU。 - 前記IOMMUの電源が遮断されている間、前記IOMMU内で仮想アドレスから物理アドレスへの変換を実行するのに使用される情報を記憶するように構成された不揮発性メモリ素子をさらに備え、
前記コントローラは、前記IOMMUの電源が投入された後に、
前記情報を前記不揮発性メモリ素子から取得し、
前記情報に基づいて、前記1つ以上の選択されたメモリ素子の一部又は全てを更新する、
ように構成されている、
請求項1のIOMMU。 - 前記コントローラは、前記1つ以上の選択されたメモリ素子の一部又は全てを更新する前に、
前記IOMMUの動作環境に少なくとも部分的に基づいて、前記情報の有効性を検証する、
ように構成されている、
請求項8のIOMMU。 - 前記2つ以上のメモリ素子のうち少なくとも1つは、不揮発性タイプのメモリである、
請求項1のIOMMU。 - 2つ以上のメモリ素子を含む入出力メモリ管理ユニット(IOMMU)を動作させる方法であって、
1つ以上の要因に基づいて、前記IOMMU内で仮想アドレスから物理アドレスへの変換を実行するために、前記2つ以上のメモリ素子から1つ以上の選択されたメモリ素子を選択することと、
前記1つ以上の選択されたメモリ素子を使用して、前記仮想アドレスから物理アドレスへの変換を実行することと、
前記2つ以上のメモリ素子のうち前記仮想アドレスから物理アドレスへの変換を実行するために選択されなかったメモリ素子である未選択のメモリ素子を、前記仮想アドレスから物理アドレスへの変換への実行以外の動作のために使用することと、を含む、
方法。 - 前記IOMMUに接続された1つ以上の周辺機器は周辺メモリ素子を含み、周辺メモリ素子の各々は、仮想アドレスから物理アドレスへの変換情報を記憶するために対応する周辺機器によって使用され、前記仮想アドレスから物理アドレスへの変換情報は、仮想アドレスから物理アドレスへの変換をローカルに実行するために前記対応する周辺機器によって使用され、
前記1つ以上の要因は、前記1つ以上の周辺機器内の前記周辺メモリ素子のタイプを含み、
前記1つ以上の選択されたメモリ素子を選択することは、前記1つ以上の周辺機器内の前記周辺メモリ素子のタイプに基づいて、前記IOMMU内で仮想アドレスから物理アドレスへの変換を実行するために使用される、少なくとも1つのタイプの選択されたメモリを選択することを含む、
請求項11の方法。 - 前記1つ以上の要因は、仮想アドレスから物理アドレスへの変換情報の複製量を含み、
前記1つ以上の選択されたメモリ素子を選択することは、前記複製量に基づいて、前記IOMMU内で仮想アドレスから物理アドレスへの変換を実行するために使用される、少なくとも1つのタイプの選択されたメモリ素子を選択することを含む、
請求項11の方法。 - 前記1つ以上の要因は、前記2つ以上のメモリ素子の一部又は全ての摩耗量を含み、
前記1つ以上の選択されたメモリ素子を選択することは、前記摩耗量に基づいて、前記IOMMU内で仮想アドレスから物理アドレスへの変換を実行するために使用される、少なくとも1つのタイプの選択されたメモリ素子を選択することを含む、
請求項11の方法。 - 前記1つ以上の選択されたメモリ素子を使用することは、
前記1つ以上の選択されたメモリ素子のうち少なくとも1つに対して、前記IOMMUのトランスレーションルックアサイドバッファの仮想アドレスから物理アドレスへの変換情報を記憶することを含む、
請求項11の方法。 - 前記1つ以上の選択されたメモリ素子を使用することは、
前記1つ以上の選択されたメモリ素子のうち少なくとも1つに対して、ページテーブル情報の1つ以上のブロックを記憶することであって、ページテーブル情報の各ブロックは、仮想アドレスから物理アドレスへの変換情報を含む複数の対応するページテーブルエントリを含む、ことを含む、
請求項11の方法。 - 前記1つ以上の選択されたメモリ素子を使用することは、
前記1つ以上の選択されたメモリ素子のうち低電力状態にあるメモリ素子を、前記低電力状態から電源投入状態に移行させることを含む、
請求項11の方法。 - 仮想アドレスから物理アドレスへの変換を実行するのに使用される情報を前記IOMMU内の不揮発性メモリ素子に記憶することと、
前記IOMMUの電源を遮断することと、
前記IOMMUへの電源を復帰することと、
前記IOMMUへの電源を復帰した後に、前記情報を前記不揮発性メモリ素子から取得し、前記情報に基づいて、前記IOMMUにおいて前記1つ以上の選択されたメモリ素子の一部又は全てを更新することと、を含む、
請求項11の方法。 - 前記1つ以上の選択されたメモリ素子の一部又は全てを更新する前に、
前記IOMMUの動作環境に少なくとも部分的に基づいて、前記情報の有効性を検証することを含む、
請求項18の方法。 - 前記2つ以上のメモリ素子のうち少なくとも1つは、不揮発性タイプのメモリである、
請求項11の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/167,038 | 2016-05-27 | ||
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 |
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 JP2019521409A (ja) | 2019-07-25 |
JP7232644B2 true 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)
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 |
WO2018057039A1 (en) * | 2016-09-26 | 2018-03-29 | Hewlett-Packard Development Company, L. | Update memory management information to boot an electronic device from a reduced power mode |
KR102702995B1 (ko) | 2016-12-01 | 2024-09-04 | 삼성전자주식회사 | 이종의 메모리 소자들을 포함하는 집적회로 소자 및 그 제조 방법 |
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 (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002182803A (ja) | 2000-10-02 | 2002-06-28 | Internatl Business Mach Corp <Ibm> | コンピュータ・システムの動作のサスペンドとレジュームを行う方法および装置 |
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 |
Family Cites Families (32)
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 |
US9058268B1 (en) * | 2012-09-20 | 2015-06-16 | Matrox Graphics Inc. | Apparatus, system and method for memory management |
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 |
-
2016
- 2016-05-27 US US15/167,038 patent/US10678702B2/en active Active
-
2017
- 2017-05-19 EP EP17803328.8A patent/EP3433742B1/en active Active
- 2017-05-19 CN CN201780029508.6A patent/CN109154907B/zh active Active
- 2017-05-19 WO PCT/US2017/033514 patent/WO2017205204A1/en active Application Filing
- 2017-05-19 KR KR1020187030779A patent/KR102423713B1/ko active IP Right Grant
- 2017-05-19 JP JP2018555752A patent/JP7232644B2/ja active Active
-
2020
- 2020-06-05 US US16/894,473 patent/US11341059B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
JP2013519965A (ja) | 2010-02-17 | 2013-05-30 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | Tlbサポート設計のiommu |
Also Published As
Publication number | Publication date |
---|---|
KR102423713B1 (ko) | 2022-07-21 |
CN109154907B (zh) | 2023-09-15 |
EP3433742A4 (en) | 2019-11-20 |
US11341059B2 (en) | 2022-05-24 |
EP3433742B1 (en) | 2023-05-03 |
CN109154907A (zh) | 2019-01-04 |
JP2019521409A (ja) | 2019-07-25 |
KR20190002473A (ko) | 2019-01-08 |
US10678702B2 (en) | 2020-06-09 |
US20170344490A1 (en) | 2017-11-30 |
WO2017205204A1 (en) | 2017-11-30 |
US20200301849A1 (en) | 2020-09-24 |
EP3433742A1 (en) | 2019-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7232644B2 (ja) | 仮想アドレスから物理アドレスへの変換を実行する入出力メモリ管理ユニットにおける複数のメモリ素子の使用 | |
US10019377B2 (en) | Managing cache coherence using information in a page table | |
US9811456B2 (en) | Reliable wear-leveling for non-volatile memory and method therefor | |
JP5348429B2 (ja) | 持続性メモリのためのキャッシュコヒーレンスプロトコル | |
US9235514B2 (en) | Predicting outcomes for memory requests in a cache memory | |
EP3382557B1 (en) | Method and apparatus for persistently caching storage data in a page cache | |
US10503655B2 (en) | Data block sizing for channels in a multi-channel high-bandwidth memory | |
WO2017105597A1 (en) | Computing system having multi-level system memory capable of operating in a single level system memory mode | |
CN110597742A (zh) | 用于具有持久系统存储器的计算机系统的改进存储模型 | |
JP7564830B2 (ja) | 入出力メモリ管理ユニットレジスタのコピーのゲストオペレーティングシステムへの提供 | |
JP2024503259A (ja) | 入出力デバイスによってアクセス可能なメモリのページの移行 | |
US9904622B2 (en) | Control method for non-volatile memory and associated computer system | |
US20180365183A1 (en) | Cooperative overlay | |
CN113272789A (zh) | 由输入输出存储器管理单元进行的域标识符和装置标识符转译 | |
EP3724774B1 (en) | Rinsing cache lines from a common memory page to memory | |
US10591978B2 (en) | Cache memory with reduced power consumption mode | |
US12086447B2 (en) | Systems and methods for reducing instruction code memory footprint for multiple processes executed at a coprocessor | |
US20230359556A1 (en) | Performing Operations for Handling Data using Processor in Memory Circuitry in a High Bandwidth Memory | |
JP6786541B2 (ja) | 管理装置、情報処理装置、管理方法、およびプログラム |
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 |