JP6701284B2 - Routing of direct memory access requests in a virtualized computing environment - Google Patents
Routing of direct memory access requests in a virtualized computing environment Download PDFInfo
- Publication number
- JP6701284B2 JP6701284B2 JP2018159455A JP2018159455A JP6701284B2 JP 6701284 B2 JP6701284 B2 JP 6701284B2 JP 2018159455 A JP2018159455 A JP 2018159455A JP 2018159455 A JP2018159455 A JP 2018159455A JP 6701284 B2 JP6701284 B2 JP 6701284B2
- Authority
- JP
- Japan
- Prior art keywords
- virtual address
- address
- value
- offset value
- processing path
- 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
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/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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/1016—Performance improvement
-
- 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/25—Using a specific main memory architecture
- G06F2212/253—Centralized memory
- G06F2212/2532—Centralized memory comprising a plurality of modules
-
- 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
-
- 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]
Description
入出力メモリ管理ユニット(IOMMU)は、ダイレクトメモリアクセス(DMA)対応デバイス(例えば、グラフィックスカード、ネットワークカード、サウンドカード等)とメインメモリとの間の通信を提供することができる。IOMMUは、DMA対応デバイスから受信したダイレクトメモリアクセス要求で特定される仮想メモリアドレスを、メインメモリの物理アドレスに変換することができる。IOMMUは、中央処理装置(CPU)を介してルーティングされることなく、メモリアクセスがDMA対応デバイスに提供されるように構成することができる。例えば、IOMMUは、仮想メモリアドレスを特定するメモリアクセス要求をDMA対応デバイスから受信し、仮想メモリアドレスを物理メモリアドレスにマッピングするページテーブル内の仮想メモリアドレスをルックアップすることができる。次に、物理メモリアドレスに記憶された情報は、DMA対応デバイスによって読み書きされる。 An input/output memory management unit (IOMMU) can provide communication between a direct memory access (DMA) enabled device (eg, graphics card, network card, sound card, etc.) and main memory. The IOMMU can convert the virtual memory address specified by the direct memory access request received from the DMA compatible device into the physical address of the main memory. The IOMMU can be configured such that memory access is provided to the DMA enabled device without being routed through a central processing unit (CPU). For example, the IOMMU can receive a memory access request specifying a virtual memory address from a DMA-enabled device and look up the virtual memory address in a page table that maps the virtual memory address to a physical memory address. The information stored at the physical memory address is then read and written by the DMA enabled device.
いくつかの可能な実施形態によれば、方法は、デバイスが、仮想アドレスを特定するダイレクトメモリアクセス要求を受信するステップを含むことができる。この方法は、デバイスが、仮想アドレスが仮想アドレスの特定の範囲内に存在するか否かを判別するステップを含むことができる。方法は、デバイスが、仮想アドレスが仮想アドレスの特定の範囲内に存在するか否かを判別するステップに基づいて、第1アクション又は第2アクションを選択的に実行するステップを含むことができる。第1アクションは、仮想アドレスが仮想アドレスの特定の範囲内に存在しない場合に、仮想アドレスをメモリデバイスに関連付けられた物理アドレスに変換するための第1アドレス変換アルゴリズムを実行するステップを含むことができる。第2アクションは、仮想アドレスが仮想アドレスの特定の範囲内に存在する場合に、仮想アドレスをメモリデバイスに関連付けられた物理アドレスに変換するための第2アドレス変換アルゴリズムを実行するステップを含むことができる。第2アドレス変換アルゴリズムは、第1アドレス変換アルゴリズムと異なっていてもよい。 According to some possible embodiments, the method may include the device receiving a direct memory access request identifying the virtual address. The method may include the device determining whether the virtual address is within a particular range of virtual addresses. The method may include the step of the device selectively performing the first action or the second action based on determining whether the virtual address is within a particular range of virtual addresses. The first action may include performing a first address translation algorithm to translate the virtual address into a physical address associated with the memory device if the virtual address is not within a particular range of virtual addresses. it can. The second action may include executing a second address translation algorithm to translate the virtual address into a physical address associated with the memory device if the virtual address is within a particular range of virtual addresses. it can. The second address translation algorithm may be different than the first address translation algorithm.
いくつかの可能な実施形態によれば、デバイスは、コントローラを備えてもよい。コントローラは、仮想アドレス値を特定するメモリアクセス要求を周辺デバイスから受信することができる。コントローラは、コントローラがアクセス可能なメモリに記憶された情報に基づいて、仮想アドレス値が仮想アドレス値の特定の範囲に含まれるか否かを判別することができる。コントローラは、仮想アドレス値が仮想アドレス値の特定の範囲に含まれるか否かを判別することに基づいて、第1アクション又は第2アクションを選択的に実行することができる。コントローラは、仮想アドレス値が仮想アドレス値の特定の範囲に含まれない場合に、第1アクションを実行することができる。第1アクションは、仮想アドレス値を、メモリデバイス内のメモリ位置を特定する物理アドレス値に変換するための第1アドレス変換アルゴリズムを実行することを含むことができる。コントローラは、仮想アドレス値が仮想アドレス値の特定の範囲に含まれる場合に、第2アクションを実行することができる。第2アクションは、仮想アドレス値を物理アドレス値に変換するための第2アドレス変換アルゴリズムを実行することを含むことができる。第2アドレス変換アルゴリズムは、第1アドレス変換アルゴリズムと異なっていてもよい。 According to some possible embodiments, the device may comprise a controller. The controller can receive a memory access request specifying the virtual address value from the peripheral device. The controller can determine whether the virtual address value falls within a particular range of virtual address values based on information stored in a memory accessible to the controller. The controller may selectively perform the first action or the second action based on determining whether the virtual address value falls within a particular range of virtual address values. The controller may perform the first action if the virtual address value is not within a particular range of virtual address values. The first action may include executing a first address translation algorithm to translate the virtual address value into a physical address value that identifies a memory location within the memory device. The controller may perform the second action when the virtual address value falls within a particular range of virtual address values. The second action can include performing a second address translation algorithm to translate the virtual address value into a physical address value. The second address translation algorithm may be different than the first address translation algorithm.
いくつかの可能な実施形態によれば、システムは、仮想アドレス値を特定するメモリアクセス要求を受信することができる。システムは、仮想アドレス値が仮想アドレス値の特定の範囲に含まれるか否かを判別することができる。システムは、仮想アドレス値が仮想アドレス値の特定の範囲に含まれるか否かを判別することに基づいて、第1アドレス変換アルゴリズム又は第2アドレス変換アルゴリズムを選択的に実行して、仮想アドレス値を、メモリデバイスに関連付けられた物理アドレス値に変換することができる。システムは、仮想アドレス値が仮想アドレス値の特定の範囲に含まれない場合に、第1アドレス変換アルゴリズムを実行することができる。システムは、仮想アドレス値が仮想アドレス値の特定の範囲に含まれる場合に、第2アドレス変換アルゴリズムを実行することができる。第2アドレス変換アルゴリズムは、第1アドレス変換アルゴリズムと異なっていてもよい。システムは、第1アドレス変換アルゴリズム又は第2アドレス変換アルゴリズムを選択的に実行することに基づいて、メモリアクセス要求と、物理アドレス値を特定する情報と、をメモリデバイスに向けてルーティングすることができる。 According to some possible embodiments, the system may receive a memory access request identifying a virtual address value. The system can determine whether the virtual address value falls within a particular range of virtual address values. The system selectively executes a first address translation algorithm or a second address translation algorithm based on determining whether the virtual address value is included in a specific range of the virtual address value to determine the virtual address value. Can be converted into a physical address value associated with the memory device. The system may perform a first address translation algorithm if the virtual address value is not within a particular range of virtual address values. The system may perform a second address translation algorithm if the virtual address value falls within a particular range of virtual address values. The second address translation algorithm may be different than the first address translation algorithm. The system can route a memory access request and information identifying a physical address value to a memory device based on selectively executing a first address translation algorithm or a second address translation algorithm. ..
例示的な実施形態の以下の詳細な説明は、添付図面を参照する。異なる図面における同一の参照番号は、同一又は類似の要素を特定し得る。 The following detailed description of the exemplary embodiments refers to the accompanying drawings. The same reference numbers in different drawings may identify the same or similar elements.
ダイレクトメモリアドレス(DMA)機能を有する周辺デバイスは、メモリアクセス要求を入出力メモリ管理ユニット(IOMMU)に提供することによって、仮想化されたコンピューティング環境で動作することができる。IOMMUは、メモリアクセス要求で特定される仮想アドレスを、メインメモリブロックに関連付けられた物理アドレスに変換することができる。このようにして、IOMMUは、仮想化されたコンピューティング環境で動作する周辺デバイスと、メインメモリとの間の通信を提供することができる。しかし、IOMMUを介してメモリアクセス要求をルーティングすることは、アドレス変換アルゴリズムを実行するのにIOMMUが必要とする演算能力の量、及び、様々な他のIOMMUプロセスを実行するのに必要な演算能力の量のために、低速及び/又はコストがかかる可能性がある。 Peripheral devices with direct memory address (DMA) functionality can operate in a virtualized computing environment by providing memory access requests to the input/output memory management unit (IOMMU). The IOMMU can translate the virtual address specified in the memory access request into a physical address associated with the main memory block. In this manner, the IOMMU can provide communication between peripheral devices operating in a virtualized computing environment and main memory. However, routing memory access requests through the IOMMU determines the amount of computing power that the IOMMU requires to perform the address translation algorithm, and the computing power needed to perform various other IOMMU processes. Can be slow and/or costly.
メモリアクセス要求のルーティングを高速化するために、IOMMU処理から特定の要求を除外する場合がある。例えば、ディスプレイデバイスのピクセルをリフレッシュするのに用いられるフレームバッファに関連付けられたアドレスを特定する要求は、IOMMU処理から除外されてもよい。しかしながら、このような除外は、セキュリティ問題を引き起こし、仮想化されたコンピューティング環境において周辺デバイスを動作させるのに必要なメモリアドレス変換を提供しない可能性がある。本明細書で説明する実施形態は、或る条件を満たす場合に、高速ルートを介してメモリアクセス要求をメインメモリにルーティングし、条件を満たさない場合に、低速ルートを介してメモリアクセス要求をメインメモリにルーティングするメカニズムを提供する。両方のルートは、メモリアドレス変換を提供し、これにより、周辺デバイスの性能を向上させながら、仮想化されたコンピューティング環境で周辺デバイスが動作することを可能にする。 Certain requests may be excluded from IOMMU processing to speed up the routing of memory access requests. For example, the request to identify the address associated with the frame buffer used to refresh the pixels of the display device may be excluded from IOMMU processing. However, such exclusions pose security issues and may not provide the memory address translation required to operate peripheral devices in a virtualized computing environment. The embodiments described herein route a memory access request to a main memory via a fast route when a certain condition is satisfied, and a main memory access request through a slow route when the condition is not satisfied. Provides a mechanism to route to memory. Both routes provide memory address translation, which allows the peripheral device to operate in a virtualized computing environment while improving the performance of the peripheral device.
図1は、本明細書で説明する例示的な実施形態の概要100を示す図である。図1に示すように、DMA対応デバイス(例えば、周辺デバイス)は、仮想アドレスを特定するDMA要求を、ルーティングコントローラに提供することができる。ルーティングコントローラは、DMA要求が、IOMMUを用いて当該要求を処理する第1ルート又はIOMMUを用いずに当該要求を処理する第2ルートを介してルーティングされるか否かを決定するルーティング決定を行うデバイスを含むことができる。ルーティングコントローラは、要求を分析して、1つ以上の条件を満たすか否かを判別することができる。例えば、ルーティングコントローラは、第2ルートを介するルーティングが有効であるか否か、仮想アドレスが第2ルートを介してルーティングされる仮想アドレスの範囲内にあるか否か、要求されたアクセスタイプ(例えば、読み出しアクセス、書き込みアクセス等)が許可されているか否か等を判別することができる。ルーティングコントローラは、割り当てられたレジスタセットを用いてこの分析を実行してもよい。
FIG. 1 is a diagram illustrating an
さらに図1に示すように、条件を満たさない場合に、ルーティングコントローラは、第1ルートを介してDMA要求をルーティングしてもよい。第1ルートは、IOMMUを含んでもよく、及び/又は、第1アドレス変換アルゴリズムを用いてメモリアクセス要求を処理して、仮想アドレスを、メインメモリに関連付けられた物理アドレスに変換することを含んでもよい。IOMMUは、アドレス変換を実行した後に、物理アドレスを特定する情報を含むダイレクトメモリアクセス要求を、メインメモリにルーティングするためのメモリコントローラにルーティングしてもよい。 Further, as shown in FIG. 1, if the condition is not met, the routing controller may route the DMA request via the first route. The first route may include an IOMMU and/or may include processing a memory access request using a first address translation algorithm to translate a virtual address into a physical address associated with main memory. Good. After performing the address translation, the IOMMU may route the direct memory access request including the information identifying the physical address to the memory controller for routing to the main memory.
一方、条件を満たす場合に、ルーティングコントローラは、第2ルートを介してDMA要求をルーティングしてもよい。第2ルートは、IOMMUを含まなくてもよく、及び/又は、第1アドレス変換アルゴリズムと異なる(より高速な)第2アドレス変換アルゴリズムを用いてメモリアクセス要求を処理することを含んでもよい。この場合、ルーティングコントローラは、割り当てられたレジスタセットを用いて仮想アドレスから物理アドレスを判別してもよく、物理アドレスを用いてメインメモリにルーティングするためにDMA要求をメモリコントローラにルーティングしてもよい。 On the other hand, if the condition is met, the routing controller may route the DMA request via the second route. The second route may not include the IOMMU and/or may include processing the memory access request using a second (faster) second address translation algorithm different from the first address translation algorithm. In this case, the routing controller may use the assigned set of registers to determine the physical address from the virtual address, and may use the physical address to route the DMA request to the memory controller for routing to main memory. .
第2アドレス変換アルゴリズムは、第1アドレス変換アルゴリズムよりも複雑でなく、より高速に実行されてもよい。さらに、又は代替として、第2ルートは、第1ルートでIOMMUが実行するいくつかの処理を除外してもよい。これにより、第2ルートは、DMA要求を、第1ルートより早くメインメモリに提供することができる。このようにして、ルーティングコントローラは、仮想化されたコンピューティング環境で動作するDMA対応デバイスの性能を向上させるとともに、DMA要求を分析することによってセキュリティを強化することができる。 The second address translation algorithm is less complex and may run faster than the first address translation algorithm. Additionally or alternatively, the second route may exclude some processing performed by the IOMMU on the first route. As a result, the second route can provide the DMA request to the main memory earlier than the first route. In this way, the routing controller can improve the performance of DMA-enabled devices operating in a virtualized computing environment and enhance security by analyzing DMA requests.
図2は、本明細書で説明する実施形態を実装し得る例示的なシステム200を示す図である。図2に示すように、システム200は、1つ以上の周辺デバイス210−1〜210−N(N≧1)(以下、「周辺デバイス210」と総称する)と、ルーティングコントローラ220と、IOMMU230と、メモリコントローラ240と、メインメモリ250と、を含む。システム200の各デバイスは、有線接続、無線接続等を介して接続されてもよい。
FIG. 2 is a diagram illustrating an
周辺デバイス210は、中央処理装置から独立して、ダイレクトメモリアクセスを介してメインメモリ250にアクセス可能な1つ以上のデバイスを含んでもよい。例えば、周辺デバイス210は、グラフィックス処理ユニット(GPU)、加速処理ユニット(APU)、ネットワークインタフェースカード、サウンドカード、ディスクドライブ、マザーボード等のDMA対応デバイスを含んでもよい。いくつかの実施形態では、周辺デバイス210は、他のコンピューティングデバイスのメインメモリ250へのリモートDMAアクセスを有するコンピューティングデバイスである。他の例として、周辺デバイス210は、他のプロセッサコアのメインメモリ250へのDMAアクセスを有するプロセッサコアを含んでもよい。周辺デバイス210は、(例えば、入力及び/又は命令に基づいて)DMA要求を生成してもよく、DMA要求をルーティングコントローラ220に提供してもよい。
ルーティングコントローラ220は、DMA要求を受信、処理、ルーティング、及び/又は、提供可能な1つ以上のデバイスを含んでもよい。例えば、ルーティングコントローラ220は、周辺デバイス210からDMA要求を受信してもよく、DMA要求を分析して、当該DMA要求を第1ルート又は第2ルートを介してメモリコントローラ240及び/又はメインメモリ250にルーティングするか否かを判別してもよい。上述したように、第1ルートはIOMMU230を含んでもよく、第2ルートはIOMMU230を含まなくてもよい。さらに、又は代替として、第1ルートは、第2ルートよりも多くDMA要求を処理することを含んでもよい。このため、第1ルートは、第2ルートよりも低速なルートであってもよい。ルーティングコントローラ220は、DMA要求の分析に基づいて、DMA要求をIOMMU230又はメモリコントローラ240に提供してもよい。いくつかの実施形態では、ルーティングコントローラ220は、DMA要求に含まれる仮想アドレスから物理アドレスを決定する。さらに、又は代替として、ルーティングコントローラ220は、DMA要求を他のデバイスに提供して、物理アドレスを決定してもよい。いくつかの実施形態では、周辺デバイス210の外部に存在するように示されているが、ルーティングコントローラ220は、周辺デバイス210内に統合されてもよい。さらに、又は代替として、システム200は、1つ以上の周辺デバイス210に関連付けられたルーティングをそれぞれ制御する複数のルーティングコントローラ220を含んでもよい。
The
IOMMU230は、DMA要求を受信、処理、及び/又は、提供可能な1つ以上のデバイスを含んでもよい。例えば、IOMMU230は、ルーティングコントローラ220からDMA要求を受信してもよく、DMA要求をメモリコントローラ240及び/又はメインメモリ250に提供する前に当該DMA要求を処理してもよい。IOMMU230は、例えば、仮想アドレスを物理アドレスに変換すること、DMA要求で要求されたアクセス及び/又はアクセスタイプを許可するのを検証すること等によって、DMA要求を処理してもよい。いくつかの実施形態では、IOMMU230は、第1ルートを介してルーティングされたDMA要求を処理する(例えば、アドレス変換を実行する)ために、DMA要求が第2ルートを介してルーティングされる場合にルーティングコントローラ220及び/又は他のデバイスによって用いられた第2アルゴリズムとは異なる第1アルゴリズムを使用する。いくつかの実施形態では、IOMMU230は、周辺機器相互接続(PCI)バス、PCI expressバス等を介して周辺デバイス210に電気的に接続される。
メモリコントローラ240は、メインメモリ250との間で行き来する情報のフローを管理することができ、並びに/又は、メインメモリ250からの読み出し及び/若しくはメインメモリ250への書き込みが可能な1つ以上のデバイスを含むことができる。例えば、メモリコントローラ240は、IOMMU230からのメモリアクセス要求を、周辺デバイス210から第1ルートを介して受信してもよいし、ルーティングコントローラ220からのメモリアクセス要求を、周辺デバイス210から第2ルートを介して受信してもよい。メモリアクセス要求は、メインメモリ250の物理アドレスを特定してもよく、物理アドレスに関連して実行される動作(例えば、読み出し動作、書き込み動作等)を特定してもよく、並びに/又は、当該物理アドレスから読み出され及び/若しくは当該物理アドレスに書き込まれる情報(例えば、データ、命令等)を特定してもよい。メモリコントローラ240は、メモリアクセス要求に基づいて、メインメモリ250から情報を読み出してもよいし、メインメモリ250に情報を書き込んでもよい。
The
メインメモリ250は、情報を記憶する1つ以上のデバイスを含んでもよい。例えば、メインメモリ250は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)等を含んでもよい。メインメモリ250は、物理メモリアドレスによって特定された情報を記憶することができる。
システム200は、本明細書で説明する1つ以上のプロセスを実行してもよい。システム200は、メインメモリ250等のコンピュータ可読媒体に記憶された命令(例えば、ソフトウェア命令)を実行するプロセッサに応じて、これらのプロセスを実行してもよい。コンピュータ可読媒体は、本明細書では、非一時的なメモリデバイスとして定義される。メモリデバイスは、単一の物理的な記憶装置のメモリ空間、又は、複数の物理的な記憶装置間に亘るメモリ空間を含む。
図2に示すデバイスの数は、一例として提供されている。実際には、システム200は、追加のデバイス、より少ないデバイス、異なるデバイス、又は、図2に示すデバイスとは配置の異なるデバイスを含んでもよい。また、システム200の1つ以上のデバイスは、システム200の1つ以上の他のデバイスによって実行されるように、上述した1つ以上の機能を実行してもよい。
The number of devices shown in FIG. 2 is provided as an example. In practice,
図3は、仮想化されたコンピューティング環境においてダイレクトメモリアクセス要求をルーティングする場合に用いられるメモリレジスタを割り当てるための例示的なプロセス300のフローチャートである。いくつかの実施形態では、図3の1つ以上のプロセスブロックは、ルーティングコントローラ220によって実行される。いくつかの実施形態では、図3の1つ以上のプロセスブロックは、周辺デバイス210、IOMMU230、メモリコントローラ240及び/又はメインメモリ250等のような、他のデバイス、又は、ルーティングコントローラ220から分離した、若しくはルーティングコントローラ220を含むデバイスのグループによって実行される。
FIG. 3 is a flowchart of an
図3に示すように、プロセス300は、メモリアクセス要求に関連するルーティング決定を行うために用いられる仮想アドレスの範囲を定義するベースアドレスレジスタ及び長さレジスタを割り当てること(ブロック310)を含んでもよい。例えば、ルーティングコントローラ220は、ベースアドレスレジスタ及び長さレジスタを割り当ててもよい。ベースアドレスレジスタは、仮想アドレスの範囲に関連するベースアドレスを特定する情報(例えば、仮想アドレスの範囲の一端を特定するベース仮想アドレス)を記憶してもよく、長さレジスタは、当該範囲の長さ(例えば、当該範囲に含まれる仮想アドレスの量)を特定する情報を記憶してもよい。同時に、ベースアドレス及びアドレスの量は、メモリアクセス要求に関連するルーティング決定を行うために、ルーティングコントローラ220によって用いられる仮想アドレスの範囲を定義することができる。
As shown in FIG. 3,
(単純なアドレス値を用いる)一例として、ベースアドレスレジスタがベースアドレスを1,001として特定すると仮定する。さらに、長さレジスタが500個の仮想アドレスの量を特定すると仮定する。これらの2つの値に基づいて、ルーティングコントローラ220は、1,001から1,500までの500の仮想アドレスの範囲を決定することができる。ルーティングコントローラ220は、この範囲に含まれない仮想アドレスを特定するメモリアクセス要求を受信すると、IOMMU230を含む第1ルートを介してメモリアクセス要求をルーティングしてもよい。一方、ルーティングコントローラ220は、この範囲に含まれる仮想アドレスを特定するメモリアクセス要求を受信すると、IOMMU230を含まない第2ルートを介してメモリアクセス要求をルーティングしてもよい。
As an example (using a simple address value), assume that the base address register specifies the base address as 1,001. Further assume that the length register specifies a quantity of 500 virtual addresses. Based on these two values, the
いくつかの実施形態では、仮想アドレスの範囲は、メインメモリ250に記憶されたフレームバッファを表す物理アドレスの範囲にマッピングされる。フレームバッファは、ディスプレイデバイス上に提供されるピクセルのカラー値を記憶してもよく、周辺デバイス210(例えば、GPU)によってアクセスされて、(例えば、ピクセルのカラー値を取得し、カラー値に基づいてピクセルを表示することができるディスプレイデバイスに値を提供することによって)ピクセルを周期的にリフレッシュしてもよい。
In some embodiments, the range of virtual addresses is mapped to a range of physical addresses representing the frame buffer stored in
さらに図3に示すように、プロセス300は、仮想アドレスを物理アドレスに変換するために用いられるリロケーションレジスタを割り当てること(ブロック320)を含んでもよい。例えば、ルーティングコントローラ220は、リロケーションレジスタを割り当ててもよい。リロケーションレジスタは、リロケーション値を特定する情報を記憶してもよい。ルーティングコントローラ220は、リロケーション値を用いて、メモリアクセス要求で特定された仮想アドレスをメインメモリ250に関連する物理アドレスに変換してもよい。
As further shown in FIG. 3,
いくつかの実施形態では、ルーティングコントローラ220は、ベースアドレス値、長さ値及び/又はリロケーション値を変更してもよい。例えば、ルーティングコントローラ220は、仮想アドレスの範囲及び/又は当該範囲の一部がエラー(例えば、メモリエラー)に関連付けられているという指標を受信してもよい。この場合、ルーティングコントローラ220は、(例えば、エラーが仮想メモリに関連付けられている場合等に)ベースアドレス及び/又は長さを変更してもよい。さらに、又は代替として、ルーティングコントローラ220は、(例えば、エラーが物理メモリに関連付けられている場合に)リロケーション値を変更してもよい。ルーティングコントローラ220は、変更を他のデバイス(例えば、周辺デバイス210、IOMMU230等)に通知してもよい。
In some embodiments, the
ベースアドレスレジスタ、長さレジスタ及びリロケーションレジスタを含むレジスタセット(例えば、トリプレット)は、メモリアクセス要求に関連するルーティング決定を行う場合にルーティングコントローラ220をサポートするために共に動作してもよい。いくつかの実施形態では、ルーティングコントローラ220は、(例えば、0セットのレジスタ、4セットのレジスタ、8セットのレジスタ等の)複数のセットのレジスタを割り当てる。この場合、(例えば、特定の周辺デバイス210、周辺デバイス210のセット、全ての周辺デバイス210等の)ルーティング決定を有効又は無効にするために、複数のセットのグループ全体が(例えば、IOMMU230に関連するルーティングコントロールフィールドを用いて)有効又は無効にされてもよい。
A set of registers (eg, triplets) including base address registers, length registers and relocation registers may work together to support
さらに、又は代替として、特定のレジスタセットは、ブロック330に関連して本明細書で説明するように、(例えば、1つ以上の周辺デバイス210の)ルーティング決定を行う場合に特定のレジスタセットの使用を有効又は無効にするために、イネーブルフィールドを用いて有効又は無効にされてもよい。さらに、又は代替として、ルーティングコントローラ220は、ブロック340に関連して本明細書で説明するように、アクセスコントロールフィールドを用いて、特定のレジスタセット及び/又は特定の周辺デバイス210のセットについてのアクセスコントロールを設定してもよい。
Additionally, or alternatively, the particular register set may be of a particular register set when making routing decisions (eg, of one or more peripheral devices 210), as described herein in connection with
ルーティングコントローラ220は、ベースアドレスレジスタ、長さレジスタ及びリロケーションレジスタ(例えば、レジスタセット)間の関係の指標を記憶してもよい。例えば、ルーティングコントローラ220は、レジスタセットセット内の各レジスタを、(例えば、メモリマップされた入出力(MMIO)アドレスページ内の)隣接するメモリアドレスに記憶してもよい。
The
さらに図3に示すように、プロセス300は、異なるルートを介してメモリアクセス要求のルーティングを有効又は無効にするためにイネーブルフィールドを割り当てること(ブロック330)を含んでもよい。例えば、ルーティングコントローラ220は、イネーブルフィールドを割り当ててもよい。いくつかの実施形態では、イネーブルフィールドは、リロケーションレジスタに含まれる。ルーティングコントローラ220は、イネーブルフィールドを用いて、メモリアクセス要求のルーティング決定を行う(例えば、複数のルートのうち1つのルートを選択する)か否か、単一のルートを介してメモリアクセス要求を転送するか否かを判別してもよい。例えば、イネーブルフィールドがルーティング無効であることを示す場合、ルーティングコントローラ220は、IOMMU230を含む第1ルートを介してメモリアクセス要求を転送してもよい。一方、イネーブルフィールドがルーティング有効であることを示す場合、ルーティングコントローラ220は、メモリアクセス要求を分析して、第1ルート又はIOMMU230を含まない第2ルートを介してメモリアクセス要求をルーティングするか否かを判別してもよい。
Further, as shown in FIG. 3,
いくつかの実施形態では、ルーティングコントローラ220は、複数の周辺デバイス210のルーティングを制御する。この場合、ルーティングコントローラ220は、ルーティング決定に関連する周辺デバイス210を示すイネーブルフィールドのセットを割り当ててもよい。例えば、ルーティングコントローラ220は、周辺デバイス210の第1セットから受信したメモリアクセス要求のルーティング決定を行ってもよく、周辺デバイス210の第2セットから受信したメモリアクセス要求のルーティング決定を行わなくてもよい(例えば、周辺デバイス210の第2セットから受信した要求をIOMMU230に転送してもよい)。ルーティングコントローラ220は、イネーブルフィールドのセットに記憶された情報に基づいて、特定の周辺デバイス210から受信したメモリアクセス要求のルーティング決定を行うか否かを判別してもよい。
In some embodiments, the
さらに図3に示すように、プロセス300は、要求されたアクセスタイプを許可又は拒否するためにアクセスコントロールフィールドを割り当てること(ブロック340)を含んでもよい。例えば、ルーティングコントローラ220は、アクセスコントロールフィールドを割り当ててもよい。いくつかの実施形態では、アクセスコントロールフィールドは、リロケーションレジスタに含まれてもよい。ルーティングコントローラ220は、アクセスコントロールフィールドを用いて、メモリアクセス要求によって特定される、要求されたアクセスタイプ(例えば、読み出しアクセス、書き込みアクセス、アクセス不可等)を許可又は拒否するかどうかを判別してもよい。
As further shown in FIG. 3,
いくつかの実施形態では、ルーティングコントローラ220は、複数の周辺デバイス210のルーティングを制御する。この場合、ルーティングコントローラ220は、周辺デバイス210のセットに関連するアクセスタイプを許可又は拒否するかどうかを示すアクセスコントロールフィールドのセットを割り当ててもよい。例えば、ルーティングコントローラ220は、周辺デバイス210の第1セットから受信したメモリアクセス要求に対して第1アクセスタイプ(例えば、読み出しアクセス)を適用し、周辺デバイス210の第2セットから受信したメモリアクセス要求に対して第2アクセスタイプ(例えば、読み出し/書き込みアクセス)を適用してもよい。ルーティングコントローラ220は、アクセスコントロールフィールドのセットに記憶された情報に基づいて、特定の周辺デバイス210から受信したメモリアクセス要求に適用されるアクセスタイプを判別してもよい。
In some embodiments, the
さらに図3に示すように、プロセス300は、割り当てられたレジスタを検証すること(ブロック350)を含んでもよい。例えば、ルーティングコントローラ220は、ベースアドレスレジスタ、長さレジスタ及び/又はリロケーションレジスタを検証してもよい。いくつかの実施形態では、ルーティングコントローラ220は、(例えば、IOMMU230を含む、及び/又は、ページテーブルを用いてアドレス変換を実行する)第1ルートを介してルーティングされる場合、並びに、(例えば、IOMMU230を含まない、及び/又は、メモリリロケーションアルゴリズムを用いてアドレス変換を実行する)第2ルートを介してルーティングされる場合に、特定の仮想アドレスが同一の物理アドレスに変換されるのを確実にすることによって、割り当てられたレジスタを検証する。
Further, as shown in FIG. 3,
いくつかの実施形態では、ルーティングコントローラ220は、仮想アドレスの複数の範囲を設定するプロセス300を繰り返す。異なる範囲は、異なるベースアドレス値、異なる長さの値、異なるリロケーション値等に関連してもよい。いくつかの実施形態では、ルーティングコントローラ220は、異なる範囲に対して、(例えば、同一のリロケーションレジスタに記憶された)同一のリロケーション値を用いる。さらに、又は代替として、ルーティングコントローラ220は、異なる範囲に対して同一のイネーブルフィールド及び/又はアクセスコントロールフィールドを用いてもよいし、異なる範囲に対して異なるイネーブルフィールド及び/又はアクセスコントロールフィールドを用いてもよい。このようにして、ルーティングコントローラ220は、メモリアクセス要求(例えば、仮想化されたコンピューティング環境におけるグラフィックス処理に関連するメモリアクセス要求)のより高速なルーティングのために、物理メモリの非連続範囲を設定してもよい。
In some embodiments, the
ルーティングコントローラ220が仮想アドレスの複数の範囲を割り当てる場合、ルーティングコントローラ220は、レジスタによって特定される複数の仮想アドレス範囲が重複しないことを確実にすることによって、割り当てられたレジスタを検証してもよい。例えば、ルーティングコントローラ220は、複数のベースアドレスレジスタ及び各々の長さレジスタを用いて、複数の仮想アドレス範囲を定義してもよい。ルーティングコントローラ220は、特定の仮想アドレスが複数の範囲に含まれるか否かを判別することによって、複数の範囲が重複しないことを確実にしてもよい。複数の範囲が重複しているとルーティングコントローラ220が判別した場合には、ルーティングコントローラ220は、エラー通知を提供し、及び/又は、これらの範囲が重複しないように1つ以上のレジスタを再割り当てしてもよい。
When the
図3はプロセス300の例示的なブロックを示しているが、いくつかの実施形態では、プロセス300は、図3に示されたブロックの追加ブロック、より少ないブロック、異なるブロック、異なる配置のブロックを含んでもよい。さらに、又は代替として、プロセス300のブロックのうち2つ以上のブロックは、並行して実行されてもよい。
Although FIG. 3 illustrates exemplary blocks of
図4A及び図4Bは、図3に示す例示的なプロセス300に関する例示的な実施形態400を示す図である。図4A及び図4Bは、仮想化されたコンピューティング環境においてダイレクトメモリアクセス要求をルーティングする場合に用いられるメモリレジスタを割り当てる例を示している。
4A and 4B are diagrams illustrating an
図4Aに示すように、ルーティングコントローラ220がベースアドレスレジスタ405を割り当てると仮定する。図示するように、ベースアドレスレジスタ405が64ビットレジスタ(例えば、ビット0〜63)を含むと仮定する。さらに、ビット0〜11及び52〜63が予約されていると仮定する。いくつかの実施形態では、予約されたビットは、デバッグ目的で用いられる。最後に、ビット12〜51(例えば、合計40ビット)を用いて、200の値を有するベースアドレスを特定すると仮定する。
Suppose the
さらに図4Aに示すように、ルーティングコントローラ220が長さレジスタ410を割り当てると仮定する。図示するように、長さレジスタ410が64ビットレジスタ(例えば、ビット0〜63)を含むと仮定する。さらに、ビット0〜11及び52〜63が予約されていると仮定する。最後に、ビット12〜51(例えば、合計40ビット)を用いて、500の値の長さを特定すると仮定する。
Further assume that
さらに図4Aに示すように、ベースアドレスレジスタ405及び長さレジスタ410に記憶された値が、IOMMU230を含まないルートを介してルーティングされる仮想アドレス空間415内の仮想アドレスの範囲を定義すると仮定する。符号420で示すように、ベースアドレスは、仮想アドレスの範囲の開始を特定する。仮想アドレスの範囲は、200の仮想アドレスで開始する。符号425で示すように、長さは、その範囲に含まれる仮想アドレスの数を特定する。この場合、符号430で示すように、200〜699の仮想アドレス範囲に500個の仮想アドレスが含まれる。
As further shown in FIG. 4A, assume that the values stored in
いくつかの実施形態では、仮想アドレス空間415は、メインメモリ250に記憶されたフレームバッファに対応する仮想アドレスの範囲を表す。フレームバッファは、ディスプレイデバイスのピクセルのカラー値を記憶してもよく、ピクセルを周期的にリフレッシュするGPUによってアクセスされてもよい。フレームバッファに関連するメモリアクセス要求を、IOMMU230を含まないより高速なルートを介してルーティングすることによって、ルーティングコントローラ220は、IOMMU230を含むより低速なルートを介してメモリアクセス要求をルーティングする場合と比較して、より迅速にディスプレイリフレッシュを実行することができる。
In some embodiments,
図4Bに示すように、ルーティングコントローラ220がリロケーションレジスタ435を割り当てると仮定する。図示するように、リロケーションレジスタ435が64ビットレジスタ(例えば、ビット0〜63)を含むと仮定する。さらに、ビット2〜11及び52〜63が予約されていると仮定する。符号440で示すように、ビット12〜51(例えば、合計40ビット)を用いて、値が400のリロケーション値を特定すると仮定する。符号445で示すように、ルーティングコントローラ220がメモリアクセス要求のルーティング決定を行うか否かを示すイネーブルビットとして、ビット0を用いると仮定する。符号450で示すように、メモリアクセス要求(例えば、読み出しアクセス、書き込みアクセス、読み出し及び書き込みアクセス等)について許可されたアクセスタイプを特定するアクセスコントロールビットとして、ビット1を用いると仮定する。
Suppose the
上述したように、図4A及び図4Bは単なる一例である。他の例も可能であり、図4A及び図4Bに関して説明したものとは異なっていてもよい。 As mentioned above, FIGS. 4A and 4B are merely examples. Other examples are possible and may be different than those described with respect to Figures 4A and 4B.
図5は、仮想化されたコンピューティング環境においてダイレクトメモリアクセス要求をルーティングするための例示的なプロセス500のフローチャートである。いくつかの実施形態では、図5の1つ以上のプロセスブロックは、ルーティングコントローラ220によって実行される。いくつかの実施形態では、図5の1つ以上のプロセスブロックは、周辺デバイス210、IOMMU230、メモリコントローラ240及び/又はメインメモリ250等のような、他のデバイス、又は、ルーティングコントローラ220から分離した、若しくはルーティングコントローラ220を含むデバイスのグループによって実行される。
FIG. 5 is a flowchart of an
図5に示すように、プロセス500は、仮想アドレスを特定するメモリアクセス要求を周辺デバイスから受信すること(ブロック510)を含んでもよい。例えば、ルーティングコントローラ220は、メモリアクセス要求を周辺デバイス210から受信してもよい。メモリアクセス要求は、いくつかの実施形態において、ダイレクトメモリアクセス要求を含む。さらに、又は代替として、メモリアクセス要求は、周辺デバイス210に関連するゲスト物理アドレス等の仮想アドレスを特定してもよい。
As shown in FIG. 5,
いくつかの実施形態では、メモリアクセス要求は、メモリアクセス要求に関連するアクセスタイプを特定する。例えば、メモリアクセス要求は、メインメモリ250から情報を読み出す要求、メインメモリ250に情報を書き込む要求等を含んでもよい。さらに、又は代替として、メモリアクセス要求は、メインメモリ250から読み出される情報、及び/又は、メインメモリ250に書き込まれる情報を特定してもよい。
In some embodiments, the memory access request identifies an access type associated with the memory access request. For example, the memory access request may include a request to read information from the
さらに図5に示すように、プロセス500は、ルーティングが有効であるか否かを判別すること(ブロック520)を含んでもよい。例えば、ルーティングコントローラ220は、(例えば、リロケーションレジスタに含まれる)イネーブルビットを読み出すことによって、ルーティングが有効であるか否かを判別してもよい。イネーブルビットの値は、ルーティングが、(例えば、イネーブルビットが例えば1という第1値を含む場合)有効であり、(例えば、イネーブルビットが例えば0という第2値を含む場合)無効であるという指標を提供してもよい。
Further, as shown in FIG. 5, the
ルーティングが有効でない場合(ブロック520:いいえ)、プロセス500は、メモリアクセス要求を、第1ルートを介してメインメモリにルーティングすること(ブロック530)を含んでもよい。例えば、ルーティングコントローラ220は、ルーティングが有効でないと判別した場合に(例えば、イネーブルビットが、ルーティングが有効でないことを示す場合に)、メモリアクセス要求を、第1ルートを介してメモリコントローラ240及び/又はメインメモリ250にルーティングしてもよい。
If routing is not enabled (block 520: NO),
いくつかの実施形態では、メモリコントローラ240及び/又はメインメモリ250への第1ルートはIOMMU230を含み、メモリコントローラ240及び/又はメインメモリ250への第2ルートはIOMMU230を含まない。さらに、又は代替として、第1ルートは、第2ルートよりも(例えば、IOMMU230による)メモリアクセス要求のさらなる処理を含んでもよい。さらに、又は代替として、第1ルートは、第2ルートと比べて、メモリコントローラ240及び/又はメインメモリ250に対するより高いレイテンシ(例えば、より高い平均レイテンシ)を有してもよい。
In some embodiments, the first route to
さらに、又は代替として、第1ルートを介してルーティングされたメモリアクセス要求は、第2ルートを介してルーティングされたメモリアクセス要求に関連して使用されたアルゴリズムとは異なるアルゴリズムを介してアドレス変換されてもよい。例えば、第1ルートにおけるアドレス変換は、1つ以上のページテーブルを用いて、仮想アドレスを物理アドレスに変換してもよい。いくつかの実施形態では、第1ルートは、複数のページテーブルを用いてアドレス変換を実行する。逆に、第2ルートにおけるアドレス変換は、何れのページテーブルも用いないことがある。むしろ、第2ルートにおけるアドレス変換は、別の値(例えば、仮想アドレス値、仮想アドレス値とベースアドレス値とに基づいて判別されたオフセット値等)に値を加えることによって、又は、当該別の値から値を引くことによって物理アドレスを判別する、メモリリロケーションアルゴリズムを用いてもよい。このようにして、第2ルートにおけるアドレス変換は、(例えば、メモリリロケーションが、ページテーブルを用いるよりも高速であるため)第1ルートにおけるアドレス変換よりも高速となり得る。 Additionally or alternatively, the memory access request routed via the first route is address translated via a different algorithm than the algorithm used in connection with the memory access request routed via the second route. May be. For example, the address translation in the first route may translate a virtual address into a physical address using one or more page tables. In some embodiments, the first route uses multiple page tables to perform address translation. Conversely, the address translation in the second route may not use any page table. Rather, the address translation in the second route is performed by adding a value to another value (for example, a virtual address value, an offset value determined based on the virtual address value and the base address value, or the like), or A memory relocation algorithm that determines a physical address by subtracting a value from a value may be used. In this way, address translation in the second route may be faster than address translation in the first route (eg, because memory relocation is faster than using a page table).
ルーティングが有効である場合(ブロック520:はい)、プロセス500は、仮想アドレス及びベースアドレスを比較することによってオフセット値を計算すること(ブロック540)を含んでもよい。例えば、ルーティングコントローラ220は、ルーティングが有効であると判別した場合に(例えば、イネーブルビットが、ルーティングが有効であることを示す場合に)、メモリアクセス要求で特定された仮想アドレスとベースアドレスとを比較することによって、オフセット値を計算してもよい。
If the routing is valid (block 520: yes),
いくつかの実施形態では、ルーティングコントローラ220は、仮想アドレスとベースアドレスとの差としてオフセット値を計算する。例えば、ルーティングコントローラ220は、仮想アドレス(例えば、仮想アドレスを表す値)からベースアドレス(例えば、ベースアドレスを表す値)を減算して、オフセット値を計算してもよい。一例として、ベースアドレス値が1,000であり、仮想アドレス値が1,300であると仮定すると、ルーティングコントローラ220は、300(1,300−1,000=300)というオフセット値を計算してもよい。
In some embodiments, the
さらに図5に示すように、プロセス500は、仮想アドレスが、メモリアクセス要求のルーティングに関連する仮想アドレスの範囲内に存在するか否かを判別すること(ブロック550)を含んでもよい。例えば、ルーティングコントローラ220は、仮想アドレスが、図3に関連して本明細書で説明したように決定された範囲内に存在するか否かを判別してもよい。いくつかの実施形態では、ルーティングコントローラ220は、仮想アドレスが、オフセット値に基づく範囲内に存在するか否かを判別する。例えば、ルーティングコントローラ220は、オフセット値を第1閾値(例えば、0)及び/又は第2閾値(例えば、長さレジスタで特定される長さ値)と比較して、仮想アドレスが当該範囲内に存在するか否かを判別することができる。
As further shown in FIG. 5,
ルーティングコントローラ220は、いくつかの実施形態において、メモリアクセス要求に適用する、割り当てられたレジスタのセットを判別する。例えば、複数のレジスタセットが割り当てられてもよく、ルーティングコントローラ220は、メモリアクセス要求に適用するレジスタセットを選択してもよい。さらに、又は代替として、ルーティングコントローラ220は、メモリアクセス要求で特定される仮想アドレスが特定のレジスタセットに関連する仮想アドレスの範囲内に存在すると判別されるまで、複数のレジスタセットをメモリアクセス要求に適用してもよい。この場合、ルーティングコントローラ220は、特定のレジスタセットをメモリアクセス要求に適用してもよい。仮想アドレスが何れの範囲内に存在しない場合に、ルーティングコントローラ220は、第1ルートを介してメモリアクセス要求をルーティングしてもよい。
The
いくつかの実施形態では、仮想アドレスの第1範囲は、仮想アドレスの第2範囲と重複する。この場合、ルーティングコントローラ220は、これらの範囲のうち1つの範囲を選択し、選択された範囲に関連するレジスタセットをメモリアクセス要求に適用してもよい。
In some embodiments, the first range of virtual addresses overlaps the second range of virtual addresses. In this case, the
仮想アドレスが範囲内に存在しない場合(ブロック550:いいえ)、プロセス500は、メモリアクセス要求を、第1ルートを介してメインメモリにルーティングすること(ブロック530)を含んでもよい。例えば、ルーティングコントローラ220は、仮想アドレスが範囲内に存在しないと判別した場合、ブロック530に関連して本明細書で説明したように、メモリアクセス要求を、第1ルートを介してメモリコントローラ240及び/又はメインメモリ250にルーティングしてもよい。
If the virtual address is not in range (block 550: NO),
いくつかの実施形態では、ルーティングコントローラ220は、オフセット値が第1閾値又は第2閾値を満たす場合に、仮想アドレスが範囲内に存在しないと判別する。第1閾値は0と等しくてもよく、第2閾値は長さ値に対応してもよい。例えば、ルーティングコントローラ220は、オフセット値が0よりも小さい場合に、仮想アドレスが範囲内に存在しないと判別してもよい。例えば、ルーティングコントローラ220が、900という仮想アドレスを特定するメモリアクセス要求を受信すると仮定する。さらに、ベースアドレス値が1,000であると仮定する。この例において、オフセット値は、−100(900−1,000=−100)である。−100は0より小さいため、このオフセット値は、(例えば、範囲が1,000で開始するため)900という仮想アドレスが範囲外であることを示す。
In some embodiments, the
さらに、又は代替として、ルーティングコントローラ220は、オフセット値が長さ値以上である場合、仮想アドレスが範囲内に存在しないと判別してもよい。例えば、オフセット値が300であり、長さ値が200であると仮定する。オフセット値が長さ値よりも大きいため、ルーティングコントローラ220は、仮想アドレスが範囲内に存在しないと判別して、第1ルートを介してメモリアクセス要求をルーティングする。この例では、1,000というベースアドレス値は、範囲の開始アドレス1,000を示し、200という長さ値は、(例えば、1,000〜1,199まで200の値がある)範囲の終了値1,199を示す。オフセット値300(1,300−1,000)を生成した1,300という仮想アドレスは、範囲外にある。同様に、長さ値に等しいオフセット値200を生成する1,200という仮想アドレスは、範囲外にある。
Additionally or alternatively, the
このようにして、ルーティングコントローラ220は、オフセット値が0未満である場合、又は、オフセット値が長さ値以上である場合に、仮想アドレスが範囲内に存在しないと判別することができる。ルーティングコントローラ220は、オフセット値を用いて仮想アドレスが範囲内に存在するか否かを判別することによって、仮想アドレスを範囲の終了値と直接比較することに対して、仮想アドレスが範囲内に存在するか否かを判別するのに必要な計算資源の量を低減することができる。
In this way, the
仮想アドレスが範囲内に存在する場合(ブロック550:はい)、プロセス500は、要求されたアクセスタイプが許可されているか否かを判別する(ブロック560)ことを含んでもよい。例えば、ルーティングコントローラ220は、仮想アドレスが範囲内に存在すると判別した場合に、メモリアクセス要求で特定されたアクセスタイプが許可されているか否かを判別してもよい。
If the virtual address is within the range (block 550: yes),
いくつかの実施形態では、ルーティングコントローラ220は、オフセット値が第1閾値及び第2閾値を満たす場合に、仮想アドレスが範囲内に存在すると判別する。第1閾値は0であってもよく、第2閾値は長さ値に対応してもよい。例えば、ルーティングコントローラ220は、オフセット値が0以上である場合、及び、オフセット値が長さ値よりも小さい場合に、仮想アドレスが範囲内に存在する判別してもよい。例えば、ルーティングコントローラ220が、1,300という仮想アドレスを特定するメモリアクセス要求を受信すると仮定する。また、ベースアドレス値が1,000であると仮定する。この例では、オフセット値は300(1,300−1,000=300)である。300は0より大きいため、このオフセット値は、1,300という仮想アドレスが(例えば、長さ値に依拠する)範囲内に存在することを示す。
In some embodiments, the
オフセット値が300である上記の例を続けると、長さ値が500であると仮定する。オフセット値が長さ値よりも小さいので、ルーティングコントローラ220は、仮想アドレスが範囲内に存在すると判別する。この例では、ベースアドレス値1,000は、範囲の開始アドレスを1,000と特定し、長さ値500は、(例えば、1,000〜1,499までに500の値がある)範囲について1,499という終了値を特定する。オフセット値300(1,300−1,000)を生成した1,300という仮想アドレスは、この範囲内に存在する。
Continuing with the example above where the offset value is 300, assume that the length value is 500. Since the offset value is smaller than the length value, the
ルーティングコントローラ220は、いくつかの実施形態では、要求されたアクセスタイプが許可されるか否かを、(例えば、リロケーションレジスタに含まれる)アクセスコントロールビットを読み出すことによって判別する。アクセスコントロールビットの値は、特定のアクセスタイプ(例えば、読み出しアクセス、書き込みアクセス等)を許可又は拒否するか否かの指標を提供してもよい。
The
要求されたアクセスタイプが許可されていない場合(ブロック560:いいえ)、プロセス500は、メモリアクセス要求を、第1ルートを介してメインメモリにルーティングすること(ブロック530)を含んでもよい。例えば、ルーティングコントローラ220は、(例えば、アクセスコントロールビットの読み出しに基づいて)要求されたアクセスタイプが許可されていないと判別した場合に、ブロック530に関連して本明細書で説明したように、メモリアクセス要求を、第1ルートを介してメモリコントローラ240及び/又はメインメモリ250にルーティングしてもよい。さらに、又は代替として、ルーティングコントローラ220は、要求されたアクセスタイプが許可されていない場合に、エラー表示を提供してもよい。
If the requested access type is not allowed (block 560: NO),
一例として、特定の仮想アドレスを特定するメモリアクセス要求が、メインメモリ250に書き込む要求を含むと仮定する。さらに、アクセスコントロールビットが、特定の仮想アドレス又は当該特定の仮想アドレスに関連する物理アドレスが読み出し専用であることを示すと仮定する。この場合、ルーティングコントローラ220は、メモリアクセス要求を、第1ルートを介して(例えば、IOMMU230を含む)メインメモリ250に向けてルーティングする。IOMMU230は、アクセスを拒否してもよいし、エラーを提供する等してもよい。
As an example, assume that a memory access request that identifies a particular virtual address includes a request to write to
要求されたアクセスタイプが許可された場合(ブロック560:はい)、プロセス500は、オフセット値及びリロケーション値を組み合わせることによって、仮想アドレスに対応する物理アドレスを判別すること(ブロック570)を含んでもよい。例えば、ルーティングコントローラ220は、(例えば、アクセスコントロールビットを読み出すことに基づいて、)要求されたアクセスタイプを許可すると判別した場合に、オフセット値と、リロケーションレジスタで特定されたリロケーション値と、を組み合わせて、仮想アドレスに対応する物理アドレス判別してもよい。
If the requested access type is granted (block 560: yes),
一例として、メモリアクセス要求は、読み出し要求を含んでもよく、アクセスコントロールビットは、読み出し要求が許可されることを示してもよい。さらに、又は代替として、メモリアクセス要求は、書き込み要求を含んでもよく、アクセスコントロールビットは、書き込み要求が許可されることを示してもよい。これらの場合、ルーティングコントローラ220は、仮想アドレスと、リロケーションレジスタで特定されたリロケーション値とに基づいて、仮想アドレスに対応する物理アドレスを計算してもよい。
As an example, the memory access request may include a read request and the access control bit may indicate that the read request is granted. Additionally or alternatively, the memory access request may include a write request and the access control bit may indicate that the write request is granted. In these cases, the
いくつかの実施形態では、ルーティングコントローラ220は、オフセット値及びリロケーション値を(例えば、加算、減算等で)組み合わせることによって、物理アドレスを判別する。たとえば、本明細書の他の箇所で説明したように、ルーティングコントローラ220は、300というオフセット値を判別したと仮定する。さらに、ルーティングコントローラ220は、リロケーションレジスタにおいて400というリロケーション値を特定すると仮定する。ルーティングコントローラ220は、これらの値を加算して、700(300+400=700)という物理アドレス値を判別し得る。
In some embodiments, the
さらに図5に示すように、プロセス500は、物理アドレスを含むメモリアクセス要求を、第2ルートを介してメインメモリにルーティングすること(ブロック580)を含んでもよい。例えば、ルーティングコントローラ220は、メモリアクセス要求を、メインメモリ250に関連する判別された物理アドレスに向けてルーティングしてもよい。いくつかの実施形態では、ルーティングコントローラ220は、メモリアクセス要求を、第2ルートを介してメインメモリ250にルーティングする。
Further, as shown in FIG. 5,
本明細書の他の箇所で説明したように、メモリコントローラ240及び/又はメインメモリ250への第2ルートは、IOMMU230を含まなくてもよい。さらに、又は代替として、第2ルートは、第1ルートよりも少ないメモリアクセス要求の処理を必要としてもよい。さらに、又は代替として、第2ルートは、第1ルートと比べて、メモリコントローラ240及び/又はメインメモリ250への小さいレイテンシ(例えば、より小さい平均レイテンシ)を有してもよい。さらに、又は代替として、第2ルートを介してルーティングされたメモリアクセス要求は、第1ルートを介してルーティングされたメモリアクセス要求に関連して用いられたアルゴリズムとは異なるアルゴリズムを介して、アドレス変換されてもよい。さらに、又は代替として、第2ルートは、1つ以上の予測アルゴリズム(例えば、バッファリング、ルックアヘッド等)を用いて、第1ルートに比べて性能を向上させることができる。さらに、又は代替として、第1ルートは、メモリアクセス要求に基づいて、1セットの動作を実行させてもよく、第2ルートは、メモリアクセス要求に基づいて、当該1セットの動作のサブセットを実行させてもよい。
The second route to the
メインメモリ250へメモリアクセス要求をルーティングすることは、メモリアクセス要求で特定された仮想アドレスに対応する物理アドレスから情報を読み出させ、及び/又は、当該物理アドレスに情報を書き込ませてもよい。いくつかの実施形態では、ルーティングコントローラ220及び/又はメモリコントローラ240は、複数の周辺デバイス210と中央処理装置との間、及び/又は、1つの周辺デバイス210と中央処理装置との間のキャッシュコヒーレンシを提供する。例えば、メモリコントローラ240は、第2デバイスがメインメモリ250の特定の物理アドレスに書き込んだ指標を、第1デバイスのキャッシュコントローラに提供してもよい。キャッシュコントローラは、第1デバイスに関連するキャッシュを変更して、キャッシュコヒーレンシを確保してもよい。例えば、キャッシュコントローラは、特定の物理アドレスに関連する、キャッシュされた書き込み動作を無効としてマークしてもよいし、特定の物理アドレスに関連する、キャッシュされた読み出し動作をフラッシュしてもよい。
Routing the memory access request to the
このようにして、ルーティングコントローラ220は、フレームバッファ等の特定のメモリリソースに関連するメモリアクセス要求を高速化する方法を提供することができる。また、ルーティングコントローラ220は、非仮想化コンピューティング環境に近いレベルで実行しながら、仮想化されたコンピューティング環境においてグラフィックスプロセッシングユニット等の周辺デバイスが動作するのを可能にすることができる。
In this way, the
図5は、プロセス500の例示的なブロックを示しているが、いくつかの実施形態では、プロセス500は、図5で示されたものに対して追加のブロック、より少ないブロック、異なるブロック、又は、これらと異なる配置のブロックを含む。さらに、又は代替として、プロセス500のブロックのうち2つ以上のブロックは、並行して実行されてもよい。
Although FIG. 5 shows exemplary blocks of
図6A〜図6Eは、図5に示す例示的なプロセス500に関する例示的な実施形態600を示す図である。図6A〜図6Eは、IOMMU230を含む第1ルートを介してメモリアクセス要求をルーティングする様々なルーティング決定の例を示している。
6A-6E are diagrams illustrating an
図6Aにおいて符号605で示すように、GPU210は、メモリアクセス要求をルーティングコントローラ220に提供すると仮定する。図示するように、メモリアクセス要求は、100という仮想アドレスを特定し、書き込みのアクセスタイプを特定し、100という仮想アドレスに対応する物理メモリアドレスに書き込まれるいくつかの情報を特定すると仮定する。ルーティングコントローラ220は、要求を受信し、リロケーションレジスタ435に記憶されたイネーブルビットの値を判別すると仮定する。符号610で示すように、イネーブルビットは、メモリアクセス要求を第2ルート(例えば、IOMMU230を含まないルート)を介してメインメモリ250にルーティングすることが無効であることを示す0の値を記憶していると仮定する。このようにして、符号615で示すように、ルーティングコントローラ220は、メモリアクセスを、IOMMU230を含む第1ルートを介してメモリコントローラ240にルーティングする。
Assume
図6Bの目的のために、ルーティングコントローラ220がGPU210から同一のメモリアクセス要求を受信すると仮定する。しかしながら、この場合、ルーティングコントローラ220が、第2ルートを介するルーティングが有効であると判別する(例えば、イネーブルビットが1という値を記憶していると判別する)と仮定する。符号620で示すように、ルーティングコントローラ220が、ベースアドレスレジスタ405に記憶された200というベースアドレス値を判別すると仮定する。符号625で示すように、ルーティングコントローラ220は、100という仮想アドレス値から200というベースアドレス値を減算し、−100(100−200=−100)というオフセット値を生成する。符号630で示すように、ルーティングコントローラ220は、オフセット値が0未満であると判別するため、100という仮想アドレスは、第2ルートを介するルーティングに関連する仮想アドレスの範囲外に存在する。このようにして、符号635に示すように、ルーティングコントローラ220は、メモリアクセスを、IOMMU230を含む第1ルートを介してメモリコントローラ240にルーティングする。
For purposes of FIG. 6B, assume that
図6Cにおいて符号640で示すように、GPU210が、他のメモリアクセス要求をルーティングコントローラ220に提供すると仮定する。図示するように、メモリアクセス要求は、800という仮想アドレスを特定し、書き込みというアクセスタイプを特定し、800という仮想アドレスに対応する物理メモリアドレスに書き込まれるいくつかの情報を特定すると仮定する。図6Cの目的のために、第2ルートを介するルーティングが有効であり、(例えば、図6Bに示すように、)ベースアドレス値が200であると仮定する。
Suppose
符号645で示すように、ルーティングコントローラ220が、800という仮想アドレス値から200というベースアドレス値を減算し、600(800−200=600)というオフセット値を生成すると仮定する。オフセット値が0よりも大きいので、ルーティングコントローラ220は、オフセット値を、長さレジスタ410に記憶された長さ値と比較することを決定する。符号650で示すように、ルーティングコントローラ220は、長さレジスタ410に記憶された500という長さ値を判別すると仮定する。符号655で示すように、ルーティングコントローラ220は、オフセット値と長さ値とを比較し、オフセット値が長さ値より大きいと判別し、これにより、800という仮想アドレスが、第2ルートを介してルーティングされる仮想アドレスの範囲内に存在しないと判別する。結果として、ルーティングコントローラ220は、符号660で示すように、メモリアクセスを、IOMMU230を含む第1ルートを介してメモリコントローラ240にルーティングする。
Assume that the
図6Dにおいて符号665で示すように、GPU210が他のメモリアクセス要求をルーティングコントローラ220に提供すると仮定する。図示するように、メモリアクセス要求が、600という仮想アドレスを特定し、書き込みというアクセスタイプを特定し、600という仮想アドレスに対応する物理メモリアドレスに書き込まれるいくつかの情報を特定すると仮定する。図6Dの目的のために、第2ルートを介するルーティングが有効であり、ベースアドレス値が200であり、長さ値が500であると仮定する。
Suppose
符号670で示すように、ルーティングコントローラ220は、600という仮想アドレス値から200というベースアドレス値を減算して、400(600−200=400)というオフセット値を計算する。符号675で示すように、ルーティングコントローラ220は、400というオフセット値が500という長さ値よりも小さいと判別する。この判別に基づき、ルーティングコントローラ220は、600という仮想アドレスが、第2ルートを介するルーティングに関連する仮想アドレスの範囲内に存在すると判別する。
As indicated by
図6Eでは、図6Dに示す例を続けて、ルーティングコントローラ220が受信したメモリアクセス要求で特定される600という仮想アドレスが、第2ルートを介するルーティングに関連する仮想アドレスの範囲内に存在すると仮定する。図6Eにおいて符号680で示すように、ルーティングコントローラ220は、リロケーションレジスタ435に記憶されたアクセスコントロールビットが、読み出し専用アクセスコントロールが有効であることを示す1という値を記憶している、と判別すると仮定する。メモリアクセス要求が、書き込み動作を特定すると仮定する。結果として、符号685で示すように、ルーティングコントローラ220は、メモリアクセスを、IOMMU230を含む第1ルートを介してメモリコントローラ240にルーティングする。しかしながら、メモリアクセス要求が読み出し動作を特定した場合には、ルーティングコントローラ220は、600という仮想アドレスに対応する物理アドレスを判別して、メモリアクセス要求を、第2ルート(例えば、IOMMU230を含まないルート)を介してメモリコントローラ240にルーティングする。
6E, continuing with the example shown in FIG. 6D, assume that the virtual address identified by the memory access request received by the
上述したように、図6A〜図6Eは単なる一例である。他の例も可能であり、図6A〜図6Eに関して説明したものとは異なっていてもよい。 As mentioned above, FIGS. 6A-6E are merely examples. Other examples are possible and may differ from those described with respect to FIGS. 6A-6E.
図7A及び図7Bは、図5に示す例示的なプロセス500に関する他の例示的な実施形態700を示す図である。図7A及び図7Bは、IOMMU230を含まない第2ルートを介してメモリアクセス要求をルーティングするルーティング決定の一例を示している。
7A and 7B are diagrams illustrating another
図7Aにおいて符号705で示すように、GPU210が、メモリアクセス要求をルーティングコントローラ220に提供すると仮定する。図示するように、メモリアクセス要求が、699という仮想アドレスを特定し、書き込みというアクセスタイプを特定し、699という仮想アドレスに対応する物理メモリアドレスに書き込まれるいくつかの情報を特定すると仮定する。符号710で示すように、第2ルートを介するルーティングが有効であり、書き込みアクセスが有効であると仮定する。符号715で示すように、ルーティングコントローラ220は、699という仮想アドレス値から200というベースアドレス値を減算して、499(699−200=499)というオフセット値を計算する。符号720で示すように、ルーティングコントローラ220は、499というオフセット値が0よりも大きく、且つ、500という長さ値よりも小さいと判別する。この判別に基づき、ルーティングコントローラ220は、699という仮想アドレスが、第2ルートを介するルーティングに関連する仮想アドレスの範囲内に存在すると判別する。
Suppose
図7Bにおいて符号725で示すように、ルーティングコントローラ220が、リロケーションレジスタ435に記憶された400というリロケーション値を判別すると仮定する。符号730で示すように、ルーティングコントローラ220は、400というリロケーション値を499というオフセット値に加算して、899(499+400=899)という物理アドレス値を生成する。符号735で示すように、ルーティングコントローラ220は、899という物理アドレスを特定する情報を含むメモリアクセス要求を、IOMMU230を含まない第2ルートを介してメモリコントローラ240にルーティングする。
Assume that
上述したように、図7A及び図7Bは単なる一例である。他の例も可能であり、図7A及び7Bに関して説明したものとは異なっていてもよい。 As mentioned above, FIGS. 7A and 7B are merely examples. Other examples are possible and may be different than those described with respect to Figures 7A and 7B.
上記の開示は、例示及び説明を提供するが、網羅的であること又は開示された正確な形態に実施形態を限定することを意図していない。修正及び変形が、上記の開示に照らして可能であり、実施形態の実施から得ることができる。 The above disclosure provides examples and explanations, but is not intended to be exhaustive or to limit the embodiments to the precise form disclosed. Modifications and variations are possible in light of the above disclosure and can be obtained from practice of the embodiments.
本明細書で用いられる場合、デバイス又はコンポーネントは、ハードウェア、ファームウェア、又は、ハードウェア及びソフトウェアの組み合わせとして広く解釈されることを意図している。 As used herein, a device or component is intended to be broadly construed as hardware, firmware, or a combination of hardware and software.
いくつかの実施形態では、閾値に関して記載されている。本明細書で用いられる場合、閾値を満たすことは、閾値より大きい(greater than)値、閾値以上(more than)の値、閾値より高い(higher than)値、閾値より大きいか等しい(greater than or equal to)値、閾値より小さい(less than)値、閾値以下(fewer than)の値、閾値より低い(lower than)値、閾値より小さいか等しい(less than or equal to)値、閾値に等しい値等に言及することができる。 In some embodiments, thresholds are mentioned. As used herein, satisfying a threshold is a value that is greater than the threshold, a value that is more than the threshold, a value that is higher than the threshold, and a value that is greater than or equal to the threshold. equal to) value, less than threshold value, less than threshold value, less than threshold value, lower than value, less than or equal to value, value equal to threshold value Etc. can be mentioned.
本明細書で説明するシステム及び/又は方法は、図面に示された実施形態において、ソフトウェア、ファームウェア及びハードウェアの多くの異なる形態で実施可能であることが明らかであろう。これらのシステム及び/又は方法を実装するために使用される実際のソフトウェアコード又は専用の制御ハードウェアは、実施形態を限定するものではない。したがって、システム及び/又は方法の動作及び挙動は、特定のソフトウェアコードに言及することなく説明されている。すなわち、ソフトウェア及びハードウェアは、本明細書の説明に基づいて、システム及び/又は方法を実装するように設計可能であることが理解される。 It will be appreciated that the systems and/or methods described herein may be implemented in many different forms of software, firmware and hardware in the embodiments illustrated in the drawings. The actual software code or specialized control hardware used to implement these systems and/or methods is not limiting of the embodiments. Thus, the operation and behavior of systems and/or methods are described without reference to specific software code. That is, it is understood that software and hardware can be designed to implement the system and/or method based on the description herein.
特徴の特定の組み合わせは、特許請求の範囲に記載及び/又は本明細書に開示されるが、これらの組み合わせは、可能な実施形態の開示を限定することを意図してしない。実際、これらの特徴の多くは、具体的に特許請求の範囲に記載されない方法、及び/又は、本明細書に開示されない方法で組み合わせることができる。下記の各従属請求項は1つの請求項のみに直接従属してもよいが、可能な実施形態の開示は請求項内の全ての他の請求項と組み合わせた各従属請求項を含む。 Although particular combinations of features are set forth in the claims and/or disclosed herein, these combinations are not intended to limit the disclosure of possible embodiments. In fact, many of these features may be combined in ways not specifically recited in the claims and/or not disclosed herein. Although each dependent claim below may be directly dependent on only one claim, the disclosure of possible embodiments includes each dependent claim in combination with all other claims within the claim.
本明細書で用いられた要素、動作又は命令は、明示的に記載されない限り、重要又は必須であると解釈されるべきではない。また、本明細書で用いられる冠詞「a」及び「an」は、1つ以上の項目を含むことを意図し、「1つ以上」と互換的に用いられてもよい。同様に、「セット」は、1つ以上の項目を含むことを意図しており、「1つ以上」と互換的に用いられてもよい。1つの項目のみを意図する場合、「one」という用語又は同様の言語を使用する。また、本明細書で用いられるように、「有する」という用語は、オープンエンドの用語であることを意図している。さらに、「基づいて」という表現は、特に明示的に記載のない限り、「少なくとも部分的に基づいて」を意味することを意図している。 No element, act, or instruction used herein should be construed as critical or essential unless explicitly stated. Also, the articles "a" and "an" as used herein are intended to include one or more items and may be used interchangeably with "one or more." Similarly, "set" is intended to include one or more items and may be used interchangeably with "one or more." When only one item is intended, the term "one" or similar language is used. Also, as used herein, the term “comprising” is intended to be an open-ended term. Furthermore, the phrase "based on" is intended to mean "based, at least in part," unless explicitly stated otherwise.
Claims (15)
デバイスが、前記受信した仮想アドレスに基づいてオフセット値を計算するステップであって、前記オフセット値は、前記受信した仮想アドレスからベースアドレスを減算した値に等しい、ステップと、
前記デバイスが、前記オフセット値が負である場合に、前記受信した仮想アドレスが所定の範囲外であると判別するステップと、
前記デバイスが、前記オフセット値がゼロ又は正である場合に、前記オフセット値を長さ値と比較するステップであって、前記オフセット値が前記長さ値よりも大きい場合に、前記受信した仮想アドレスは前記所定の範囲外であり、前記オフセット値がゼロに等しい場合又は前記オフセット値が前記長さ値よりも小さい場合に、前記受信した仮想アドレスは前記所定の範囲内である、ステップと、
前記デバイスが、前記受信した仮想アドレスが前記所定の範囲内にある場合に、前記受信した仮想アドレスに関連するアクセスタイプが許可されているか否かを判別するステップと、
前記デバイスが、前記アクセスタイプが許可されていない場合又は前記受信した仮想アドレスが前記所定の範囲外である場合に、第1処理経路を用いて前記物理アドレスを計算するステップと、
前記デバイスが、前記アクセスタイプが許可されている場合に、前記オフセット値とリロケーション値とに基づいて、第2処理経路を用いて前記物理アドレスを計算するステップであって、前記第2処理経路は前記第1処理経路よりも高速である、ステップと、を含む、
方法。 A method of calculating a physical address based on a received virtual address,
A device calculating an offset value based on the received virtual address, the offset value being equal to the received virtual address minus a base address;
The device determines that the received virtual address is outside a predetermined range when the offset value is negative;
Comparing the offset value with a length value if the offset value is zero or positive, the device receiving the virtual address if the offset value is greater than the length value. Is outside the predetermined range, if the offset value is equal to zero or if the offset value is less than the length value, the received virtual address is within the predetermined range, a step,
The device determining whether the access type associated with the received virtual address is permitted if the received virtual address is within the predetermined range;
The device calculating the physical address using a first processing path if the access type is not permitted or the received virtual address is outside the predetermined range;
Said device calculating said physical address using a second processing path based on said offset value and relocation value when said access type is allowed, said second processing path comprising: Is faster than the first processing path, and
Method.
請求項1の方法。 The received virtual address is included in the received direct memory access request,
The method of claim 1.
前記コントローラは、
受信した仮想アドレスに基づいてオフセット値を計算することであって、前記オフセット値は、前記受信した仮想アドレスからベースアドレスを減算した値に等しい、ことと、
前記オフセット値が負である場合に、前記受信した仮想アドレスが所定の範囲外であると判別することと、
前記オフセット値がゼロ又は正である場合に、前記オフセット値を長さ値と比較することであって、前記オフセット値が前記長さ値よりも大きい場合に、前記受信した仮想アドレスは前記所定の範囲外であり、前記オフセット値がゼロに等しい場合又は前記オフセット値が前記長さ値よりも小さい場合に、前記受信した仮想アドレスは前記所定の範囲内である、ことと、
前記受信した仮想アドレスが前記所定の範囲内にある場合に、前記受信した仮想アドレスに関連するアクセスタイプが許可されているか否かを判別することと、
前記アクセスタイプが許可されていない場合又は前記受信した仮想アドレスが前記所定の範囲外である場合に、第1処理経路を用いて物理アドレスを計算することと、
前記アクセスタイプが許可されている場合に、前記オフセット値とリロケーション値とに基づいて、第2処理経路を用いて前記物理アドレスを計算することであって、前記第2処理経路は前記第1処理経路よりも高速である、ことと、を行うように構成されている、
デバイス。 A device comprising a controller,
The controller is
Calculating an offset value based on the received virtual address, the offset value being equal to a value obtained by subtracting a base address from the received virtual address;
Determining that the received virtual address is outside a predetermined range when the offset value is negative;
Comparing the offset value with a length value when the offset value is zero or positive, wherein the received virtual address is the predetermined virtual address when the offset value is greater than the length value. Out of range, if the offset value is equal to zero or if the offset value is less than the length value, the received virtual address is within the predetermined range, and
Determining whether the access type associated with the received virtual address is permitted when the received virtual address is within the predetermined range;
And the virtual address, or if the receiving the access type is not allowed when the a predetermined range, calculating the physical address using the first processing path,
Calculating the physical address using a second processing path based on the offset value and the relocation value when the access type is permitted, wherein the second processing path is the first processing path. Configured to do things that are faster than the route,
device.
請求項9のデバイス。 The received virtual address is included in the received direct memory access request,
The device of claim 9.
前記コントローラは、仮想アドレス値の前記複数の範囲から前記所定の範囲を選択するように構成されている、請求項9のデバイス。 The predetermined range is one of a plurality of ranges of virtual address values,
The device of claim 9, wherein the controller is configured to select the predetermined range from the plurality of ranges of virtual address values.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/469,928 US20160062911A1 (en) | 2014-08-27 | 2014-08-27 | Routing direct memory access requests in a virtualized computing environment |
US14/469,928 | 2014-08-27 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017510839A Division JP2017529606A (en) | 2014-08-27 | 2015-08-25 | Routing direct memory access requests in virtualized computing environments |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018198088A JP2018198088A (en) | 2018-12-13 |
JP6701284B2 true JP6701284B2 (en) | 2020-05-27 |
Family
ID=55400808
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017510839A Ceased JP2017529606A (en) | 2014-08-27 | 2015-08-25 | Routing direct memory access requests in virtualized computing environments |
JP2018159455A Active JP6701284B2 (en) | 2014-08-27 | 2018-08-28 | Routing of direct memory access requests in a virtualized computing environment |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017510839A Ceased JP2017529606A (en) | 2014-08-27 | 2015-08-25 | Routing direct memory access requests in virtualized computing environments |
Country Status (6)
Country | Link |
---|---|
US (2) | US20160062911A1 (en) |
EP (1) | EP3186713B1 (en) |
JP (2) | JP2017529606A (en) |
KR (1) | KR101973732B1 (en) |
CN (1) | CN106796562B (en) |
WO (1) | WO2016033039A2 (en) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160062911A1 (en) * | 2014-08-27 | 2016-03-03 | Advanced Micro Devices, Inc. | Routing direct memory access requests in a virtualized computing environment |
US10078601B2 (en) * | 2014-11-14 | 2018-09-18 | Cavium, Inc. | Approach for interfacing a pipeline with two or more interfaces in a processor |
US9934117B2 (en) * | 2015-03-24 | 2018-04-03 | Honeywell International Inc. | Apparatus and method for fault detection to ensure device independence on a bus |
US11321267B2 (en) | 2016-09-30 | 2022-05-03 | Hewlett-Packard Development Company, L.P. | Safe peripheral device communications |
US10402355B2 (en) * | 2017-02-08 | 2019-09-03 | Texas Instruments Incorporated | Apparatus and mechanism to bypass PCIe address translation by using alternative routing |
US10198202B2 (en) * | 2017-02-24 | 2019-02-05 | Red Hat, Inc. | Safe userspace device access for network function virtualization using an IOMMU to map supervisor memory to a reserved range of application virtual addresses |
US20180285262A1 (en) * | 2017-03-31 | 2018-10-04 | Intel Corporation | Techniques for shared virtual memory access protection |
KR102540964B1 (en) | 2018-02-12 | 2023-06-07 | 삼성전자주식회사 | Memory Controller and Application Processor controlling utilization and performance of input/output device and Operating Method of Memory Controller |
US11768967B2 (en) * | 2018-03-15 | 2023-09-26 | Hewlett-Packard Development Company, L.P. | Address verification for direct memory access requests |
US11853179B1 (en) * | 2018-12-28 | 2023-12-26 | Teledyne Lecroy, Inc. | Detection of a DMA (direct memory access) memory address violation when testing PCIE devices |
US10936507B2 (en) * | 2019-03-28 | 2021-03-02 | Intel Corporation | System, apparatus and method for application specific address mapping |
US11386028B2 (en) * | 2019-03-29 | 2022-07-12 | Teledyne Lecroy, Inc. | Method to test direct memory access (DMA) address capabilities at high address values |
CN110187835B (en) * | 2019-05-24 | 2023-02-03 | 北京百度网讯科技有限公司 | Method, apparatus, device and storage medium for managing access requests |
US11003588B2 (en) | 2019-08-22 | 2021-05-11 | Advanced Micro Devices, Inc. | Networked input/output memory management unit |
CN112527698B (en) * | 2020-12-04 | 2024-03-22 | 联想(北京)有限公司 | Processing method, device and equipment |
US20230205705A1 (en) * | 2021-12-23 | 2023-06-29 | Advanced Micro Devices, Inc. | Approach for providing indirect addressing in memory modules |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63245743A (en) * | 1987-04-01 | 1988-10-12 | Fuji Electric Co Ltd | Memory access system |
US5961581A (en) * | 1996-06-27 | 1999-10-05 | Advanced Micro Devices, Inc. | Method and circuit for detecting address limit violations in a microprocessor-based computer |
US6282625B1 (en) * | 1997-06-25 | 2001-08-28 | Micron Electronics, Inc. | GART and PTES defined by configuration registers |
JP3264319B2 (en) * | 1997-06-30 | 2002-03-11 | 日本電気株式会社 | Bus bridge |
US6658521B1 (en) * | 2000-12-22 | 2003-12-02 | International Business Machines Corporation | Method and apparatus for address translation on PCI bus over infiniband network |
GB0123415D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Method of writing data to non-volatile memory |
US6889308B1 (en) * | 2002-01-18 | 2005-05-03 | Advanced Micro Devices, Inc. | Method and apparatus for protecting page translations |
JP2006525607A (en) * | 2003-04-30 | 2006-11-09 | シリコン・グラフィックス・インコーポレイテッド | System and method for performing address translation in a computer system |
US20070233727A1 (en) * | 2003-08-05 | 2007-10-04 | Gideon Guy | Multiple Virtual Devices |
US20050091383A1 (en) * | 2003-10-14 | 2005-04-28 | International Business Machines Corporation | Efficient zero copy transfer of messages between nodes in a data processing system |
US7552319B2 (en) * | 2004-06-30 | 2009-06-23 | Intel Corporation | Methods and apparatus to manage memory access |
US7370174B2 (en) * | 2005-01-05 | 2008-05-06 | Intel Corporation | Method, system, and program for addressing pages of memory by an I/O device |
US7543131B2 (en) | 2005-08-12 | 2009-06-02 | Advanced Micro Devices, Inc. | Controlling an I/O MMU |
US7650471B2 (en) * | 2006-01-06 | 2010-01-19 | Hewlett-Packard Development Company, L.P. | Head of queue cache for communication interfaces |
US7822941B2 (en) * | 2006-06-05 | 2010-10-26 | Oracle America, Inc. | Function-based virtual-to-physical address translation |
US7721068B2 (en) * | 2006-06-12 | 2010-05-18 | Oracle America, Inc. | Relocation of active DMA pages |
US8095773B2 (en) * | 2008-02-26 | 2012-01-10 | International Business Machines Corporation | Dynamic address translation with translation exception qualifier |
US8954959B2 (en) * | 2010-09-16 | 2015-02-10 | Red Hat Israel, Ltd. | Memory overcommit by using an emulated IOMMU in a computer system without a host IOMMU |
KR101383684B1 (en) | 2010-11-01 | 2014-04-09 | 도요타 지도샤(주) | Electric storage apparatus |
JP2013069139A (en) * | 2011-09-22 | 2013-04-18 | Fujitsu Ltd | Arithmetic processing unit and method for controlling arithmetic processing unit |
US20130275699A1 (en) * | 2012-03-23 | 2013-10-17 | Hicamp Systems, Inc. | Special memory access path with segment-offset addressing |
US9384153B2 (en) * | 2012-08-31 | 2016-07-05 | Freescale Semiconductor, Inc. | Virtualized local storage |
US9158704B2 (en) * | 2013-01-24 | 2015-10-13 | Wisconsin Alumni Research Foundation | Virtual memory management system with reduced latency |
US10108402B2 (en) * | 2014-01-30 | 2018-10-23 | Hewlett Packard Enterprise Development Lp | Persistent pointers for programs running on NVRAM based computers |
US20150281126A1 (en) * | 2014-03-31 | 2015-10-01 | Plx Technology, Inc. | METHODS AND APPARATUS FOR A HIGH PERFORMANCE MESSAGING ENGINE INTEGRATED WITHIN A PCIe SWITCH |
US20160062911A1 (en) * | 2014-08-27 | 2016-03-03 | Advanced Micro Devices, Inc. | Routing direct memory access requests in a virtualized computing environment |
-
2014
- 2014-08-27 US US14/469,928 patent/US20160062911A1/en not_active Abandoned
-
2015
- 2015-08-25 KR KR1020177005584A patent/KR101973732B1/en active IP Right Grant
- 2015-08-25 WO PCT/US2015/046687 patent/WO2016033039A2/en active Application Filing
- 2015-08-25 JP JP2017510839A patent/JP2017529606A/en not_active Ceased
- 2015-08-25 EP EP15836943.9A patent/EP3186713B1/en active Active
- 2015-08-25 CN CN201580046026.2A patent/CN106796562B/en active Active
-
2017
- 2017-04-19 US US15/491,616 patent/US10162765B2/en active Active
-
2018
- 2018-08-28 JP JP2018159455A patent/JP6701284B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3186713B1 (en) | 2020-02-12 |
JP2018198088A (en) | 2018-12-13 |
WO2016033039A3 (en) | 2016-05-06 |
WO2016033039A2 (en) | 2016-03-03 |
KR101973732B1 (en) | 2019-04-29 |
US20160062911A1 (en) | 2016-03-03 |
CN106796562B (en) | 2020-03-17 |
EP3186713A4 (en) | 2018-03-28 |
EP3186713A2 (en) | 2017-07-05 |
JP2017529606A (en) | 2017-10-05 |
US10162765B2 (en) | 2018-12-25 |
US20170220485A1 (en) | 2017-08-03 |
KR20170038873A (en) | 2017-04-07 |
CN106796562A (en) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6701284B2 (en) | Routing of direct memory access requests in a virtualized computing environment | |
US10545672B2 (en) | Method for accessing extended memory, device, and system | |
US10853277B2 (en) | Systems and methods for isolating input/output computing resources | |
US10025504B2 (en) | Information processing method, information processing apparatus and non-transitory computer readable medium | |
CN108351829B (en) | System and method for input/output computing resource control | |
CN109977037B (en) | DMA data transmission method and system | |
JP2014529829A (en) | Computer system with processor local coherency for virtualized input / output | |
CN107949837B (en) | Register file for I/O packet compression | |
TWI526832B (en) | Methods and systems for reducing the amount of time and computing resources that are required to perform a hardware table walk (hwtw) | |
KR101895852B1 (en) | MEMORY MANAGEMENT UNIT (MMU) Partitioned translation caches, and related devices, methods, and computer-readable mediums | |
KR101724590B1 (en) | Apparatus and Method for Protecting Memory in a Multi Processor System | |
US10310759B2 (en) | Use efficiency of platform memory resources through firmware managed I/O translation table paging | |
KR20190039006A (en) | Method and apparatus for control of a tiered memory system | |
TWI594124B (en) | Virtualization-aware prefetching | |
US11714753B2 (en) | Methods and nodes for handling memory | |
US20230418662A1 (en) | Operating system process scheduler with location inertia | |
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: 20180906 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20190814 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190820 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20191119 |
|
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: 20200407 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200501 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6701284 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |