JP6434168B2 - スイッチへのアドレスキャッシュ - Google Patents

スイッチへのアドレスキャッシュ Download PDF

Info

Publication number
JP6434168B2
JP6434168B2 JP2017556872A JP2017556872A JP6434168B2 JP 6434168 B2 JP6434168 B2 JP 6434168B2 JP 2017556872 A JP2017556872 A JP 2017556872A JP 2017556872 A JP2017556872 A JP 2017556872A JP 6434168 B2 JP6434168 B2 JP 6434168B2
Authority
JP
Japan
Prior art keywords
switch
address
physical address
memory
mapping
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
Application number
JP2017556872A
Other languages
English (en)
Other versions
JP2018526696A (ja
Inventor
セレブリン,ベンジャミン・シィ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of JP2018526696A publication Critical patent/JP2018526696A/ja
Priority to JP2018209836A priority Critical patent/JP6913663B2/ja
Application granted granted Critical
Publication of JP6434168B2 publication Critical patent/JP6434168B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/264Remote server
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/682Multiprocessor TLB consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

背景
本明細書は、スイッチ、たとえばスイッチチップに関する。
入出力メモリ管理ユニット(input/output memory management unit)(IOMMU)は、変換要求に応じて、仮想マシンを走らせるシステムにおける保護のために、ページテーブルウォークを行なってデバイスアドレスを変換する。いくつかの例において、IOMMUは、部分ページウォークキャッシュを行なう場合がある。部分ページウォークキャッシュを行なうのは、たとえば、a)利用できるメモリが限られているときに空間を節約するため、b)IOMMUが多数のデバイスのための変換要求に応じるとき、または、これら双方の場合である。
周辺コンポーネント相互接続エクスプレス(Peripheral Component Interconnect Express)(PCIe)アドレス変換サービス(address translation service)(ATS)により、デバイスは、IOMMUにアドレス変換を要求し、この変換を当該デバイス上に、たとえば変換ルックアサイドバッファ(translation lookaside buffer)(TLB)に、ローカルキャッシュすることができる。いくつかの場合において、デバイスのTLBは、このデバイスが使用するであろうすべての仮想アドレス−物理アドレスマッピングを格納するのに十分な大きさではない場合がある。
概要
バス、たとえばPCIまたは周辺コンポーネント相互接続エクスプレス(PCIe)バスに対して使用されるスイッチチップは、変換されたアドレスを受信し、この変換されたアドレスを使用して、当該スイッチチップによって少なくとも一部が管理される上記バスに接続されているデバイスからのメモリアクセス要求が有効であるか否かを検査する。たとえば、スイッチチップは、ページテーブルをキャッシュに格納し、または、仮想アドレスから物理アドレスへのマッピングを変換ルックアサイドバッファ(TLB)に格納し、このページテーブルまたはTLBからのアドレスを用いることにより、当該スイッチチップによって少なくとも一部が管理される上記バスに接続されているデバイスからの変換要求に応じるか、これらのデバイスからのアクセス要求を検査するか、またはこれら双方を行なう。簡略化のために、本明細書では、「スイッチチップに接続されている」デバイスと言う場合、これは、メモリ要求およびアドレス変換要求が少なくとも一部スイッチチップによって制御または管理される、バスへの接続、または、ポイント・ツー・ポイント接続を意味すると理解される。
スイッチチップは、デバイスごとにページテーブルまたはページテーブルの一部を格納する入出力メモリ管理ユニット(IOMMU)を含み得る。スイッチチップは、デバイスから変換要求を受けると、組込まれているIOMMUにこの変換要求を与え、それに応じた組込まれているIOMMUから物理アドレスを受け、上記デバイスにこの物理アドレスを与えることができる。
スイッチチップは、物理アドレスを含むメモリアクセス要求をデバイスから受けると、組込まれているIOMMUに格納されているこのデバイス用のページテーブルを用いて、このページテーブルが上記物理アドレスを含むか否かを検査し、含む場合、上記デバイスは、対応する記憶場所にアクセスすることができる。ページテーブルが上記物理アドレスを含まない場合、スイッチチップは、デバイスが上記記憶場所にアクセスすることを阻止する。
いくつかの例において、スイッチチップは、TLB、たとえばキャッシュを含む。スイッチチップは、TLB、たとえばキャッシュに、仮想アドレスを物理アドレスにマッピングするテーブルを、たとえばデバイスごとに格納する。スイッチチップは、個々のテーブルをデバイスに対応付けてもよく、この対応付けは、当該デバイスがこのスイッチチップと通信するときのポート番号を用いて行なわれてもよい。
スイッチチップは、デバイスから特定の仮想アドレスとともにアドレス変換要求を受けると、TLBがこの特定の仮想アドレスのマッピングを含むか否かを判断し、含む場合は、対応する物理アドレスを当該デバイスに与える。含まない場合、スイッチチップは、このアドレス変換要求を別のデバイス、たとえばルートコンプレックスに転送し、この別のデバイスから応答を受信する。スイッチチップは、この応答を、要求を出したデバイスに転送するとともに、TLBにキャッシュする。スイッチチップがデバイスごとにTLBを含む場合、スイッチは、当該デバイスのTLBの中だけを調べてマッピングを探してもよく、このマッピングがTLBに格納されていない場合は、上記別のデバイスから受けたマッピングを当該デバイス用のTLBに格納する。
スイッチチップは、デバイスからアクセス要求を受けると、当該デバイス用のTLBを用いて、このアクセス要求に含まれる物理アドレスによって特定される記憶場所に当該デバイスがアクセスできるか否かを検査する、たとえば、上記物理アドレスが当該デバイスのTLBに含まれているか否かを検査する。上記物理アドレスが当該デバイスのTLBに含まれている場合、スイッチチップは、当該デバイスが上記記憶場所にアクセスすることを許可する。上記物理アドレスが当該デバイスのTLBに含まれていない場合、スイッチチップは、当該デバイスが上記記憶場所にアクセスすることを阻止し、たとえば、この要求を別のデバイスに転送しない。
概して、本明細書に記載の主題のある革新的な側面は、以下のシステムにおいて実現することができる。このシステムは、バスに接続された1つ以上のデバイスからパケットを受信し当該1つ以上のデバイスにパケットを渡すスイッチを備え、スイッチとデバイス各々との間におけるバス上にコンポーネントは存在していない。上記システムはさらに、スイッチに組込まれ仮想アドレスから物理アドレスへのマッピングを格納するためのメモリと、スイッチに組込まれスイッチによって実行可能な命令を格納する非一時的なコンピュータ読取可能な記憶媒体とを備える。命令は実行されるとスイッチに複数の動作を実行させ、複数の動作は、スイッチが、バスによってスイッチに接続されているデバイスのためのアドレス変換要求に対する応答を受信することを含み、応答は、仮想アドレスから物理アドレスへのマッピングを含み、上記複数の動作は、デバイスのためのアドレス変換要求に対する応答を受信したことに応じて、仮想アドレスから物理アドレスへのマッピングをメモリに格納することを含む。この側面のその他の実施形態は、対応するコンピュータシステム、装置、方法、および、1つ以上のコンピュータ記憶装置に記録されたコンピュータプログラムを含み、これらは各々上記動作の処理を実行するように構成されている。1つ以上のコンピュータからなるシステムを、システムにインストールされ動作時にこのシステムに処理を実行させる、ソフトウェア、ファームウェア、ハードウェア、またはこれらを組合わせたものによって、特定の動作または処理を実行するように構成してもよい。1つ以上のコンピュータプログラムを、データ処理装置によって実行されるとこの装置に処理を実行させる命令を含むことによって、特定の動作または処理を実行するように構成してもよい。
概して、本明細書に記載の主題のある革新的な側面は、以下のシステムによって実現することができる。このシステムは、バスを通してパケットをルーティングするスイッチと、スイッチに組込まれ仮想アドレスから物理アドレスへのマッピングを格納するためのメモリと、スイッチに組込まれスイッチによって実行可能な命令を格納する非一時的なコンピュータ読取可能な記憶媒体とを備える。命令は、そのように実行されると、スイッチに以下の動作を実行させる。上記複数の動作は、スイッチが、デバイスのためのアドレス変換要求に対する、仮想アドレスから物理アドレスへのマッピングを含む応答を、受信することと、デバイスのためのアドレス変換要求に対する応答を受信したことに応じて、仮想アドレスから物理アドレスへのマッピングをメモリに格納することと、特定の物理アドレスを含むメモリアクセス要求をデバイスから受信することと、特定の物理アドレスがメモリに格納されていると判断することと、特定の物理アドレスがメモリに格納されていると判断したことに応じて、メモリアクセス要求をサービスのために別のデバイスに転送することとを含む。この側面のその他の実施形態は、対応するコンピュータシステム、装置、方法、および、1つ以上のコンピュータ記憶装置に記録されたコンピュータプログラムを含み、これらは各々上記動作の処理を実行するように構成されている。1つ以上のコンピュータからなるシステムを、システムにインストールされ動作時にこのシステムに処理を実行させる、ソフトウェア、ファームウェア、ハードウェア、またはこれらを組合わせたものによって、特定の動作または処理を実行するように構成してもよい。1つ以上のコンピュータプログラムを、データ処理装置によって実行されるとこの装置に処理を実行させる命令を含むことによって、特定の動作または処理を実行するように構成してもよい。
概して、本明細書に記載の主題のある革新的な側面は、以下のシステムによって実現することができる。このシステムは、バスを通してパケットをルーティングするスイッチと、スイッチに組込まれ仮想アドレスから物理アドレスへのマッピングを格納するためのメモリと、スイッチに組込まれスイッチによって実行可能な命令を格納する非一時的なコンピュータ読取可能な記憶媒体とを備える。命令は、そのように実行されると、スイッチに以下の動作を実行させる。上記複数の動作は、スイッチが、デバイスのためのアドレス変換要求に対する、仮想アドレスから物理アドレスへのマッピングを含む応答を、受信することと、デバイスのためのアドレス変換要求に対する応答を受信したことに応じて、仮想アドレスから物理アドレスへのマッピングをメモリに格納することと、特定の物理アドレスを含むメモリアクセス要求をデバイスから受信することと、特定の物理アドレスがメモリに格納されていないと判断することと、特定の物理アドレスがメモリに格納されていないと判断したことに応じて、メモリアクセス要求を破棄することとを含む。この側面のその他の実施形態は、対応するコンピュータシステム、装置、方法、および、1つ以上のコンピュータ記憶装置に記録されたコンピュータプログラムを含み、これらは各々上記動作の処理を実行するように構成されている。1つ以上のコンピュータからなるシステムを、システムにインストールされ動作時にこのシステムに処理を実行させる、ソフトウェア、ファームウェア、ハードウェア、またはこれらを組合わせたものによって、特定の動作または処理を実行するように構成してもよい。1つ以上のコンピュータプログラムを、データ処理装置によって実行されるとこの装置に処理を実行させる命令を含むことによって、特定の動作または処理を実行するように構成してもよい。
上記およびその他の実施形態は各々、任意で、以下の特徴のうちの1つ以上を、単独でまたは組合わせとして含み得る。上記システムは、スイッチに組込まれIOMMUメモリを含む入出力メモリ管理ユニット(IOMMU)を含み得る。メモリはIOMMUメモリを含み得る。スイッチが、デバイスのためのアドレス変換要求に対する応答を受信することは、スイッチが、デバイスのためのページテーブルの一部を受信することを含み得る。仮想アドレスから物理アドレスへのマッピングをメモリに格納することは、ページテーブルの一部をIOMMUに格納することを含み得る。
いくつかの実装例において、メモリは変換ルックアサイドバッファ(TLB)を含み得る。仮想アドレスから物理アドレスへのマッピングをメモリに格納することは、仮想アドレスから物理アドレスへのマッピングをTLBに格納することを含み得る。システムは、スイッチのための予め定められた数のポートを含み得る。ポートは各々、特定のデバイスに対応し、スイッチは、特定のデバイスに対して1つのTLBを含む。上記複数の動作は、デバイスのためのアドレス変換要求に対する応答を受信したことに応じて、TLBが空の場所を含まないと判断することと、TLB内の場所からエントリを削除することと、TLB内の場所に、仮想アドレスを物理アドレスにマッピングする新たなエントリを格納することとを含み得る。上記複数の動作は、デバイスがTLBを含むと判断するとともに仮想アドレスから物理アドレスへのマッピングをデバイスがデバイスのTLBに現在格納していることをデバイスのための設定が示すと判断することと、デバイスがTLBを含むと判断するとともに仮想アドレスから物理アドレスへのマッピングをデバイスがデバイスのTLBに現在格納していることをデバイスのための設定が示すと判断したことに応じて、デバイスのTLBからエントリを削除することをデバイスに指示するメッセージをデバイスに送信することと、デバイスがTLBを含むと判断するとともに仮想アドレスから物理アドレスへのマッピングをデバイスがデバイスのTLBに現在格納していることをデバイスのための設定が示すと判断したことに応じて、仮想アドレスから物理アドレスへのマッピングをデバイスに与えることとを含み得る。上記複数の動作は、デバイスがデバイスのTLBからエントリを削除したという確認を、デバイスから受信することを含み得る。仮想アドレスから物理アドレスへのマッピングをデバイスに与えることは、デバイスがデバイスのTLBからエントリを削除したという確認を受信したことに応じて、仮想アドレスから物理アドレスへのマッピングをデバイスに与えることを含む。
いくつかの実装例において、上記複数の動作は、特定の物理アドレスを含むメモリアクセス要求をデバイスから受信することと、特定の物理アドレスがメモリに格納されていると判断することと、特定の物理アドレスがメモリに格納されていると判断したことに応じて、メモリアクセス要求をサービスのために別のデバイスに転送することとを含み得る。メモリは、デバイスに固有のメモリであってもよく、バスによってスイッチに接続されているその他のデバイスのための仮想アドレスから物理アドレスへのマッピングを含まなくてもよい。システムは、スイッチに組込まれている1つ以上の追加のメモリを含み得る。追加のメモリ各々と、特定のデバイスに固有のメモリとは、バスによってスイッチに接続されている。特定の物理アドレスがメモリに格納されていると判断することは、スイッチにおける特定のポートがメモリアクセス要求を受信したと判断することと、特定のポートを用いてデバイスのためのメモリを選択することと、特定のポートを用いてデバイスのためのメモリを選択したことに応じて、特定の物理アドレスがメモリに格納されていると判断することとを含み得る。システムは、中央処理装置とキャッシュとを含み得る。デバイスのためのアドレス変換要求に対する応答を受信することは、仮想アドレスから物理アドレスへのマッピングをキャッシュから受信することを含み得る。メモリアクセス要求をサービスのために別のデバイスに転送することは、メモリアクセス要求を中央処理装置に転送することを含み得る。システムは、第2のバス上のコントローラを含み得る。コントローラは、第2のバスを介して、スイッチを、中央処理装置およびキャッシュに接続し、スイッチと中央処理装置およびキャッシュとの間でやり取りされる応答および要求を、第2のバスを用いてルーティングする。コントローラはルートコンプレックスを含み得る。システムは、上記スイッチを含む複数のスイッチと、第2のバス上のコントローラとを含み得る。コントローラは、第2のバスを介して、複数のスイッチ各々を、中央処理装置およびキャッシュに接続し、複数のスイッチ各々と中央処理装置およびキャッシュとの間でやり取りされる応答および要求を、第2のバスを用いてルーティングする。
いくつかの実装例において、システムは、マザーボードと、マザーボードに組込まれているバスとを備え、マザーボードに対し、スイッチは、ソースデバイスからの要求を宛先デバイスにルーティングすることにより、周辺装置がマザーボードに接続することを可能にするように構成されている。上記複数の動作は、特定の物理アドレスを含むメモリアクセス要求をデバイスから受信することと、デバイスは特定の物理アドレスによって特定される記憶場所にアクセスすることを許可されないと判断することと、デバイスは特定の物理アドレスによって特定される記憶場所にアクセスすることを許可されないと判断したことに応じて、メモリアクセス要求を破棄することとを含み得る。上記複数の動作は、特定の物理アドレスがメモリに格納されていないと判断したことに応じてデバイスをリセットすることを含み得る。
いくつかの実装例において、上記複数の動作は、スイッチが、デバイスから、仮想アドレスを含むアドレス変換要求を受信することと、仮想アドレスはメモリに格納されていないと判断することと、仮想アドレスから物理アドレスへのマッピングを要求することとを含み得る。スイッチが、デバイスのためのアドレス変換要求に対する応答を受信することは、仮想アドレスから物理アドレスへのマッピングを要求したことに応じて、応答を受信することを含む。上記複数の動作は、仮想アドレスから物理アドレスへのマッピングを用いて、仮想アドレスに対応する物理アドレスを求めることと、対応する物理アドレスを含む、変換要求に対する応答を、デバイスに与えることとを含み得る。上記複数の動作は、仮想アドレスから物理アドレスへのマッピングを要求するのと同時に、仮想アドレスから物理アドレスへのマッピングをメモリが含むか否かを判断することを含み得る。仮想アドレスから物理アドレスへのマッピングを要求することは、仮想アドレスから物理アドレスへのマッピングを中央処理装置に要求することを含み得る。仮想アドレスから物理アドレスへのマッピングを要求することは、仮想アドレスから物理アドレスへのマッピングをメモリに要求することを含み得る。仮想アドレスから物理アドレスへのマッピングを要求することは、仮想アドレスから物理アドレスへのマッピングを入出力メモリ管理ユニット(IOMMU)に要求することを含み得る。
いくつかの実装例において、システムは、スイッチに組込まれた予め定められた数のポートを含み得る。ポートは各々、特定のデバイスに対応し、特定のデバイスに対し、メモリは、仮想アドレスから物理アドレスへの対応するマッピングを格納するように構成され、メモリのサイズは予め定められた数のポートに対応する。スイッチはスイッチチップであってもよい。
本明細書に記載の主題は、特定の実施形態において実現することができ、その結果、以下の利点のうちの1つ以上が得られるであろう。いくつかの実装例において、システムは、仮想アドレスから物理アドレスへのマッピングを格納するメモリを有するスイッチチップを備えることにより、追加のスイッチチップが加えられるときにスケールアウトすることができる。たとえば、スイッチチップにより、システムは、当該スイッチチップによって少なくとも一部管理されるバスに接続されているより多くのデバイス、他のスイッチチップによって少なくとも一部管理されるバスに接続されているより多くのデバイス、またはこれら両方を、含むことができる。いくつかの実装例において、下記システムおよび方法により、システムは、仮想アドレスから物理アドレスへのマッピング用のメモリを有するスイッチチップを含まないシステムよりも素早く、アドレス変換要求に応じることができる。いくつかの実装例において、下記システムおよび方法により、システムは、デバイスからのメモリアクセス要求に含まれる特定の物理アドレスにデバイスがアクセスできるか否かを検査することができる。
本明細書の主題の1つ以上の実施形態の詳細は、添付の図面および以下の説明に記載されている。この主題のその他の特徴、側面、および利点は、以下の説明、図面、および請求項から明らかになるであろう。
仮想アドレスから物理アドレスへのマッピングをスイッチチップが格納する環境の一例を示す図である。 変換要求に応答するプロセスのフロー図である。 物理アドレスがメモリに格納されているか否かを判断するプロセスのフロー図である。
各種図面において同様の参照番号および符号は同様の要素を示す。
詳細な説明
概観
いくつかの実装例において、スイッチチップ、たとえば周辺コンポーネント相互接続エクスプレス(PCIe)スイッチチップは、当該スイッチチップが管理するバスに接続されているデバイスに代わってアドレス変換サービス(ATS)変換をキャッシュする。たとえば、あるデバイスが、周辺コンポーネント相互接続(PCI)読出または書込要求を、バス上に出力した場合、スイッチチップは、この要求に含まれている仮想アドレスを求めて、当該スイッチチップに含まれている変換ルックアサイドバッファ(TLB)を調べ、ヒットした場合はこの仮想アドレスを変換して物理アドレスを求める。当該スイッチチップは、この物理アドレスを上記デバイスに与える、または、この物理アドレスを上記要求に含めてこの要求をたとえばサービスのために別のデバイスに転送することができる。
TLBがミスの場合、スイッチチップは、ATS要求を、たとえば、別のバスによって当該スイッチチップに接続されているルートコンプレックス内の入出力メモリ管理ユニット(IOMMU)に、仮想アドレスの変換のために出力し、変換を受信し当該スイッチチップのTLBにキャッシュする。いくつかの実装例において、スイッチチップは、並列処理のために、仮想アドレスを求めてTLBをチェックしつつ、同時に未変換の元の要求をルートコンプレックスに送信してもよい。
スイッチチップは、当該スイッチチップによって少なくとも一部が管理されるバスに接続されているデバイスへのPCIeコンフィギュレーション空間アクセスをインターセプトすることにより、ATSケイパビリティ(capability)ビットを強制的に1にすることができる、たとえば、ATSケイパビリティビットをイネーブルすることができる。そうすると、上記スイッチチップおよびデバイスを含むハードウェア上で実行されているオペレーティングシステムまたはこのオペレーディングシステムのデバイスドライバは、このデバイスのためのATSをイネーブルすることができる。このデバイスのためのATSがイネーブルされると、IOMMUは、アドレス変換要求、読出もしくは書込アクセス要求、またはこれら双方に応じて、上記スイッチチップおよびデバイス(このデバイスがATSをサポートする場合)に、仮想アドレスから物理アドレスへのマッピングを与える。
いくつかの例において、オペレーティングシステムのデバイスドライバがデバイスのためのATSをイネーブルしたとき、このデバイスドライバは、オペレーティングシステムが、既知の信頼できるスイッチチップをホワイトリストに入れることを可能にする。たとえば、このデバイスドライバは、オペレーティングシステムが、メモリたとえばTLBを含むスイッチチップを含むハードウェア上で実行され仮想アドレス−物理アドレスマッピングを格納することを可能にし、メモリを含まないスイッチチップが、仮想アドレス−物理アドレスマッピングを格納することを可能にしてもよい。デバイスドライバは、メモリを含むスイッチチップをホワイトリストに入れることによってこれらのスイッチチップがマッピングを受信し得ることを示してもよく、これらのスイッチチップからの要求は検証不要であることを示してもよく、またはこれら両方であってもよい。
たとえば、スイッチチップは、自身のメモリに格納されているマッピングを用いて、当該スイッチチップによって少なくとも一部が管理されるバスに接続されているデバイスから受けた読出要求、書込要求、またはこれら双方を検証してもよい。別のハードウェアデバイス、たとえばIOMMUまたはプロセッサが当該スイッチチップから要求を受けたとき、この別のハードウェアデバイスは、ホワイトリストを利用することにより、上記要求を検証すべきか否かを判断するとともに上記要求を出したデバイスが対応する記憶場所にアクセスすることを許可すべきか否かを判断してもよい。この別のハードウェアデバイスは、ホワイトリスト上にないスイッチチップから要求を受けたときは、この要求を検証することによって、上記要求を出したデバイスが、たとえば悪意があるデバイスである場合、間違ったソフトウェアを含む場合、またはこれら双方の場合に、このデバイスがアクセスできない記憶場所にアクセスすることを許可されないことを保証してもよい。
いくつかの実装例において、スイッチチップたとえばPCIeスイッチチップは、IOMMUを含み、任意でページテーブル記憶装置を含む。たとえば、スイッチチップは、ページテーブルウォーカーと、ページテーブルを格納するためのオンボードメモリとを含む。スイッチチップは、当該スイッチチップによって少なくとも一部が管理されるバスに接続されているデバイスからアドレス変換要求を受け、対応する物理アドレスがページテーブルに含まれているか否かを判断してもよい。含まれている場合、スイッチチップは、要求を出したデバイスに、対応する物理アドレスを与える。含まれていない場合、スイッチチップは、この要求を別のデバイスたとえばキャッシュまたはルートコンプレックスIOMMUに転送し、この別のデバイスから受けた応答を、当該スイッチチップのメモリ、たとえばページテーブル記憶装置に格納してもよい。こうして当該スイッチチップは元の要求に応じることができる。
システムの例
図1は、仮想アドレスから物理アドレスへのマッピングをスイッチチップA 102aが格納する環境100の一例である。いくつかの実装例において、スイッチチップA 102aは、スイッチチップA 102aがマッピングを格納するTLB104を含む。
たとえば、デバイスA 108a〜デバイスC 108cのうちの1つが環境100に追加されスイッチチップA 102aにバス101を介して接続されると、スイッチチップA 102aは、ポートアドレスを、このデバイス、たとえばデバイスA 108aに割当てる。デバイスA 108aが、仮想アドレスから物理アドレスへの変換を要求すると、スイッチチップA 102aは、TLB104が要求された仮想アドレスの変換を含むか否かを判断する。スイッチチップA 102aは、最初に、TLB104がアドレス変換を含んでいないと判断し、変換を、コントローラ110に、たとえばコントローラ110に含まれるIOMMU112に、またはプロセッサ114もしくはキャッシュ116等の別のデバイスに要求してもよい。
いくつかの実装例において、環境100がPCIeバスを含む場合、たとえばバス101がPCIeバスである場合、コントローラ110はルートコンプレックスであってもよい。たとえば、ルートコンプレックスは、異なるスイッチチップA 102a〜スイッチチップC 102c間でデータをルーティングしこれらスイッチチップに対する要求を管理するスイッチであってもよい。
スイッチチップA 102aは、変換要求に対する応答を受け、要求された仮想アドレスに対する物理アドレスを求め、この物理アドレスをデバイスA 108aに与える。いくつかの例において、上記応答は、仮想アドレスから物理アドレスへの1つのマッピングを含み得る。いくつかの例において、この応答は、複数の異なる仮想アドレスのマッピングを含み得る。これらのマッピングは、デバイスA 108aに割当てられ、各々が、デバイスA 108aがアクセスできる対応する物理アドレスに対するマッピングである。
スイッチチップA 102aは、スイッチチップA 102aが管理するバス101にデバイスA 108aが接続されたときに、デバイスA 108aのためのマッピングを要求してもよい。たとえば、スイッチチップA 102aは、スイッチチップA 102aが管理するバス101にデバイスA 108aが接続されたときに、別のデバイス、たとえばコントローラ110に、予め定められた数のアドレス変換を要求してもよい。このアドレス変換は、数が小さい仮想アドレス、数が大きい仮想アドレス、デバイスA 108aがアクセスする可能性が最も高い仮想アドレス、またはこれらのうちの2つ以上を組合わせたものに対するアドレス変換であってもよい。
スイッチチップA 102aは、仮想アドレスから物理アドレスへのマッピングをTLB104に格納すると、別のデバイスに変換を要求することなく、デバイスA 108aからのアドレス変換要求に応じることができる。たとえば、スイッチチップA 102aは、特定の仮想アドレスについて、TLB104がこの特定の仮想アドレスから特定の物理アドレスへのマッピングを含むと判断してこの特定の物理アドレスをデバイスA 108aに与えることができる。
スイッチチップA 102aは、デバイスA 108aに関するポート番号、バス−デバイス−機能番号、またはこれら双方を用いることにより、デバイスA 108aに関するマッピングを求めてもよい。たとえば、TLB104は、デバイスA 108aおよびデバイスB 108b双方に関するマッピングを含んでいてもよく、スイッチチップA 102aは、デバイスA 108aに関するポート番号およびバス−デバイス−機能番号を用いることにより、デバイスB 108bではなくデバイスA 108aの特定の機能に関するマッピングのみに注目してもよい。
いくつかの例において、スイッチチップA 102aは、アドレス変換要求をデバイスA 108aから受けたとき、この要求を、サービスのために別のデバイスたとえばコントローラ110に転送してもよく、同時に、TLB104が上記要求に対する応答を含むか否かを判断してもよい。ここで、スイッチチップA 102aは、TLB104が対応する物理アドレスを含まないという判断を、上記要求をサービスのために別のデバイスに転送する前に下す。
たとえばスイッチチップA 102aが追加のマッピングをTLB104に格納できないとき、スイッチチップA 102aは、適切な追出(eviction)ポリシーを用いてTLB104からエントリを追出してもよい。たとえば、スイッチチップA 102aは、最も長く使用されていないエントリまたは最も最近使用されたエントリを追出してもよい。
あるデバイスが自身のメモリにマッピングを格納しておりスイッチチップA 102aがTLB104からあるエントリを追出す場合の実装例において、スイッチチップA 102aは、対応するデバイスたとえばデバイスA 108aにメッセージを送信してデバイスA 108aに同じエントリをこのデバイスのメモリから追出すことを指示してもよい。たとえば、TLB104がデバイスA 108aに関するマッピングを含まない場合にスイッチチップA 102aがデバイスA 108aからアドレス変換要求を受けたとき、スイッチチップA 102aは、コントローラ110に変換を要求してもよい。スイッチチップA 102aは、TLB104が未使用の記憶場所を含まないと判断するとともに、最も長く使用されていないエントリはTLB104から追出すべきであると判断する。スイッチチップA 102aは、コントローラ110から受信した変換を、新たに空にされた記憶場所に格納し、デバイスA 108aにメッセージを送信してデバイスAのメモリから同じ最も長く使用されていないエントリを追出すよう指示する。スイッチチップA 102aは、デバイスA 108aがエントリを追出したという確認を受けてもよい。スイッチチップA 102aは、たとえば最も長く使用されていないエントリをデバイスA 108aが追出したという確認を受けたことに応じて、コントローラ110から受けた変換をデバイスA 108aに送信する。
環境100は、アドレス変換サービス(ATS)を用いて、スイッチチップA 102a〜スイッチチップC 102cおよびデバイスA 108a〜デバイスC 108cがアドレス変換マッピングをメモリに格納し得るか否かを判断してもよい。たとえば、環境100は、ATSビットを用いることにより、デバイスA 108aがATSを使用することができATSの使用を許可されるか否かを示してもよい。デバイスA 108aが、スイッチチップA 102aによって管理されるバス101に接続すると、スイッチチップA 102aは、デバイスA 108aのためのコンフィギュレーション設定、たとえばPCIeコンフィギュレーション空間設定をインターセプトすることにより、デバイスA 108aに対するATSを「イネーブル」してもよい、たとえば、上記ビットを「1」という値に設定してもよい。
デバイスA 108aがATSをサポートしない例において、スイッチチップA 102aは、アクセス要求をデバイスA 108aから受信しこの要求を変換のためにコントローラ110に転送してもよい、または、このアクセス要求自体に含まれる1つまたは複数の仮想アドレスを変換してもよい。たとえば、スイッチチップA 102aは、デバイスA 108aのためのATSをイネーブルし、アクセス要求をデバイスA 108aから受け、この要求に含まれる仮想アドレスを求め、この要求中の仮想アドレスから対応する物理アドレスへのマッピングを求めるメッセージをコントローラ110に送り、このマッピングを受け、受けたマッピングを用いて、デバイスA 108aから受けた仮想アドレスを対応する物理アドレスに変換してもよい。
いくつかの実相例において、デバイスA 108aがATSをサポートしない場合、スイッチチップA 102aは、デバイスA 108aがATSをサポートしていることを示すATSビットはイネーブルしない。たとえば、スイッチチップA 102aが、デバイスA 108aから受けた要求中のいかなる仮想アドレスも対応する物理アドレスに変換しない場合、スイッチチップA 102aはATSビットをイネーブルしない。
デバイスA 108aがATSをサポートする例において、環境100は、デバイスA 108aがATS機能を使用することを許可してもしなくてもよい。たとえば、デバイスA 108aがATS機能を使用することを環境100が許可する場合、スイッチチップA 102aは、デバイスA 108aに関する設定をチェックすることにより、確実にATSビットがイネーブルされる、たとえば1に設定されるようにしてもよく、ATSビットがイネーブルされると判断すると、ATSビットを修正しなくてもよい。スイッチチップA 102aは、アドレス変換要求をデバイスA 108aから受けて上記のようにアドレス変換要求に応じてもよい。
スイッチチップA 102aは、デバイスA 108aからの、物理アドレス、たとえば変換されたアドレスを含む要求を、検証してもよい。たとえば、スイッチチップA 102aがデバイスA 108aからメモリアクセス要求を受けた場合、スイッチチップA 102aは、この要求がメモリアクセス要求であって、たとえば変換要求ではないと判断する。スイッチチップA 102aは、この要求に含まれる1つまたは複数の物理アドレスを求めこれらのアドレスがTLB104に含まれているか否かを判断する。これらのアドレスがTLB104に含まれている場合、スイッチチップA 102aはこの要求を、サービスのために、別のデバイス、たとえば、プロセッサ114、キャッシュ116、またはランダムアクセスメモリ118に転送する。
スイッチチップA 102aが、デバイスA 108aからのアクセス要求に含まれている物理アドレスのうちの1つ以上がTLB104に含まれていないと判断した場合、スイッチチップA 102aは、このアクセス要求を別のデバイスには転送しない。たとえば、スイッチチップA 102aは、デバイスA 108aが、TLB104に含まれていない物理アドレスにはアクセスできないと判断し、このアクセス要求をサービスすべきではないと判断する。
スイッチチップA 102aは、メモリアクセス要求をサービスすべきであると判断する場合、この要求をルートコンプレックスを介して転送してもよい。これらの例において、コントローラ110は、スイッチチップA 102aがこの要求を検証したと判断してもよく、たとえば、スイッチチップA 102aの識別子を用いることにより、スイッチチップA 102aが、自身が受けたすべてのメモリアクセス要求を検証すると判断する。コントローラは、この要求を、この要求をサービスする別のデバイス、たとえばこの要求における物理アドレスによって特定される記憶場所を含む別のデバイス、たとえば宛先デバイスに、転送してもよい。
デバイスA 108aがATSをサポートするがデバイスA 108aがATS機能を使用することを環境100が許可しない例において、スイッチチップA 102aは、デバイスA 108aからの要求を、デバイスA 108aがATS機能をサポートしないときと同様のやり方で、処理する。たとえば、スイッチチップ102aは、デバイスA 108aからのメモリアクセス要求に含まれている仮想アドレスを変換してもよい。いくつかの例において、スイッチチップ102aは、たとえば適切な方法を用いて、デバイスA 108aからの要求をチェックすることにより、これらの要求が物理アドレスを含まないと判断してもよい。
いくつかの実装例において、スイッチチップA 102aはIOMMU106を含み、スイッチチップA 102aはメモリアドレスをこのIOMMUに格納する。たとえば、スイッチチップA 102aは、IOMMU106を含むがTLB104は含まない。IOMMU106はメモリを含み、このメモリにIOMMUはページテーブル、たとえばページテーブル記憶装置を含めることができる。
デバイスB 108bが、スイッチチップA 102aによって管理されるバス101に接続したとき、たとえば、デバイスB 108bが、デバイスB 108bとプロセッサ114との間の経路上におけるバス101とスイッチチップA 102aとを含む物理接続を用いてマザーボードに接続したとき、スイッチチップA 102aは、デバイスB 108bのための1つ以上のページテーブルを要求してもよい。いくつかの例において、スイッチチップA 102aは、デバイスB 108bからアドレス変換要求を受けたことに応じて、またはデバイスB 108bからメモリアクセス要求を受けたことに応じて、または、これら両方を受けたことに応じて、デバイスB 108bのためのページテーブルを要求する。
スイッチチップA 102aは、デバイスB 108bのためのアドレス変換要求に対し、IOMMU106に格納されているページテーブルであって、たとえばバス101を介してスイッチチップA 102aが接続されている別のデバイスではなくデバイスB 108bに固有であるページテーブルを用いて、応答する。たとえば、スイッチチップA 102aは、仮想アドレスを含むアドレス変換要求をデバイスB 108bから受ける。スイッチチップA 102aは、IOMMU106がこの仮想アドレスから対応する物理アドレスへのマッピングを含むか否かを、たとえばIOMMU106に含まれるページテーブル記憶装置にアクセスするページテーブルウォーカーを用いて判断する。IOMMU106がこのマッピングを含む場合、スイッチチップA 102aは、対応する物理アドレスを求め、この物理アドレスをデバイスB 108bに与える。IOMMU106がこのマッピングを含まない場合、スイッチチップA 102aは、別のデバイス、たとえばキャッシュ116、ランダムアクセスメモリ118、またはコントローラ110内のIOMMU112に、追加のページテーブルを要求する。
IOMMU106は、IOMMUのメモリに格納されているページテーブルに対して追出ポリシーを用いてもよい。たとえば、IOMMU106が別のページテーブル用の空間を含まない場合、IOMMU106は、最も長く使用されていないまたは最も最近使用されたページテーブルを、たとえば、スイッチチップA 102aによって管理されるバス101に接続されているいずれかのデバイスのために、または、そのためにスイッチチップA 102aがIOMMU106内に新たなページテーブルを格納する特定のデバイスのために、追出してもよい。
スイッチチップA 102aは、デバイスB 108bからメモリアクセス要求を受けると、このメモリアクセス要求が仮想アドレスを含むのかまたは物理アドレスを含むのかを判断してもよい。このメモリアクセス要求が仮想アドレスを含む場合、スイッチチップA 102aは、IOMMU106中のページテーブルを用いて対応する物理アドレスを求め、メモリアクセス要求内の仮想アドレスのインスタンスを対応する物理アドレスに置換する。スイッチチップA 102aは次に、このメモリアクセス要求を、サービスのために別のデバイス、たとえばプロセッサ114、キャッシュ116、またはランダムアクセスメモリ118に転送してもよい。
スイッチチップA 102aは、物理アドレスを含むメモリアクセス要求をデバイスB 108bから受けたときは、この物理アドレスを検証する。たとえば、スイッチチップA 102aは、IOMMU106内のデバイスB 108b用のページテーブルを求め、求めたページテーブルにこの物理アドレスが含まれるか否かを判断する。スイッチチップA 102aは、デバイスB 108bに関するポート番号またはバス−デバイス−機能番号を用いて、IOMMU106内のデバイスB 108b用のページテーブルを求める。スイッチチップA 102aは、デバイスB 108b用のページテーブルを用いることにより、デバイスA 108aまたは別のデバイスはアクセスできるがデバイスB 108bはアクセスできない物理記憶場所にデバイスB 108bがアクセスしないことを保証する。
いくつかの実装例において、予め定められたページ範囲、たとえば4Kページ範囲ごとに、環境100たとえばスイッチチップA 102aは、当該ページ範囲がデバイスにマッピングされていることを示すビット、たとえば「マッピングされている」ビットを有する、または、読出および書込許可を示す2ビットを有する。環境100は、デバイスのバス−デバイス−機能番号ごとに、たとえばバス−デバイス−機能という組合わせごとに、ビット識別子、たとえば1ビットまたは2ビットを含んでいてもよい。
デバイスB 108b用のページテーブルに物理アドレスが含まれている場合、スイッチチップA 102aは、メモリアクセス要求をサービスのために別のデバイス、たとえばプロセッサ114、キャッシュ116、またはランダムアクセスメモリ118に転送する。デバイスB 108b用のページテーブルに物理アドレスが含まれていない場合、スイッチチップA 102aはこの要求をサービスしない。いくつかの例において、デバイスB 108b用のページテーブルに物理アドレスが含まれていない場合、スイッチチップA 102aは、デバイスB 108bをリセットしてもよく、またはデバイスB 108bを停止してもよく、または両方を行なってもよい。
いくつかの実装例において、環境100は、マザーボードと、1つのコンピュータ、またはたとえばa)スイッチチップA 102a〜スイッチチップC 102cのうちの1つ以上、b)コントローラ110、c)プロセッサ114、d)キャッシュ116、ランダムアクセスメモリ118、またはこれらのうちの2つ以上を含む、複数のコンピュータとを、含み得る。環境100は、ハードウェア上で実行される、たとえばマザーボード上で、またはコンピュータ上で、またはこれら双方の上で実行されるオペレーティングシステムを含む。
デバイスA 108aに対するATSビットをイネーブルすること、たとえばATSビットの値を1に設定することは、デバイスA 108aに対するATSをイネーブルすることにより、デバイスA 108aおよびスイッチチップA 102aが、仮想アドレスから物理アドレスへのマッピングをたとえばTLB104にキャッシュすることを許可するよう、スイッチチップA 102aを含むハードウェア上で実行されているオペレーティングシステムに指示することであってもよい。スイッチチップA 102aは、スイッチチップA 102aが管理するバス101にデバイスA 108aが接続したことに応じて、デバイスA 108aに対するATSビットをイネーブルしてもよい。
いくつかの例において、ソフトウェアに含まれるデバイスドライバは、たとえばスイッチチップA 108aが管理するバス101にデバイスA 108aが接続したときのスイッチチップA 102aからのメッセージに応答して、ATSビットをイネーブルしてもよい。これらの例において、デバイスドライバは、オペレーティングシステムが、アドレスマッピングをキャッシュすることができる既知のスイッチチップをホワイトリストに入れることによりこれらのスイッチチップがたとえばTLB104内のスイッチチップのメモリにアドレスマッピングをキャッシュできるようにすることを、許可してもよい。
環境100またはオペレーティングシステムは、上記ホワイトリストを用いることにより、対応するスイッチチップの機能を判断するとともに、このスイッチチップが特定のアクション、たとえばアドレスマッピングを一体化されたメモリにキャッシュすること、またはアドレスを検証すること、またはこれら両方を行なうことを許可すべきか否かを判断してもよい。たとえば、環境100は、異なる種類のスイッチチップを含んでいてもよく、ホワイトリストを用いて、これらのスイッチチップ各々がどのようなアクションの実行を許可されるかを判断してもよい。
いくつかの例において、スイッチチップA 102aはTLBを含んでいてもよく、スイッチチップB 102bはIOMMUを含んでいてもよく、スイッチチップC 102cはTLBおよびIOMMUどちらも含まなくてもよい。環境100は、ATSを用いるデバイスを、スイッチA 102aが管理するバス101に接続してもよく、別の方法を用いて物理記憶アドレスをデバイスにローカルにキャッシュするデバイスを、スイッチチップB 102bが管理する第2のバスに接続してもよく、物理記憶アドレスをデバイスにローカルにキャッシュしないデバイスを、スイッチチップC 102cが管理する第3のバスに接続してもよい。環境100は、適切な種類のデバイスが、対応するバスを介して適切な種類のスイッチチップに接続することを許可してもよい。
アドレス変換プロセスフローの例
図2は、変換要求に応答するプロセス200のフロー図である。たとえば、プロセス200は、環境100のスイッチA 102aによって使用されてもよい。
スイッチは、仮想アドレスを含むアドレス変換要求をデバイスから受信する(202)。たとえば、スイッチは、アドレス変換要求をATSイネーブルされたデバイスから受信する。
スイッチは、仮想アドレスはスイッチのメモリに格納されていないと判断する(204)。たとえば、スイッチは、当該スイッチに含まれるTLBまたはIOMMUをチェックすることにより、TLBまたはIOMMUが仮想アドレスおよび仮想アドレスから対応する物理アドレスへのマッピングを含むか否かを判断する。スイッチは、TLBまたはIOMMUが仮想アドレスおよび対応する物理アドレスを含まないと判断する。
スイッチは、仮想アドレスから物理アドレスへのマッピングを要求するためのアドレス変換要求を送信する(206)。いくつかの例において、仮想アドレスがメモリに格納されていないという判断に応じて、スイッチは、アドレス変換要求を別のデバイスに送信する。たとえば、スイッチは、このアドレス変換要求を、たとえばメモリがTLBのときはルートコンプレックスに送信する、または、たとえばメモリがIOMMUのときはキャッシュまたはランダムアクセスメモリに送信する。
スイッチは、アドレス変換要求に対する、仮想アドレスから物理アドレスへのマッピングを含む応答を受信する(208)。スイッチは、仮想アドレスから物理アドレスへのマッピングをメモリに格納する(210)。たとえば、スイッチは、アドレス変換要求を送信し、アドレス変換要求に対する応答を、たとえばルートコンプレックスから受信し、この応答またはこの応答からのデータを、メモリに格納する。スイッチは、この応答からのデータを用いることにより、TLB内のエントリを生成する。いくつかの例において、スイッチは、あるページテーブルの一部またはすべてを受けてこのページテーブルの一部をIOMMUに格納してもよい。
スイッチは、仮想アドレスから物理アドレスへのマッピングを用いて仮想アドレスに対する物理アドレスを求める(212)。たとえば、スイッチは、メモリに格納されている応答またはデータを用いることにより、仮想アドレスがマッピングされている物理アドレスを求める。
スイッチは、物理アドレスを含む、変換要求に対する応答を、デバイスに与える(214)。たとえば、スイッチは、ルートコンプレックスから受信した応答をデバイスに転送してもよい。いくつかの例において、スイッチは、物理アドレスを含む新たな応答を生成しこの新たな応答をデバイスに与える。
上記プロセス200におけるステップの順序は一例にすぎず、変換要求への応答は異なる順序で実行されてもよい。たとえば、スイッチは、アドレス変換要求の送信、たとえばステップ206を、仮想アドレスがメモリに格納されていないという判断、たとえばステップ204の実行の前に、実行してもよい。いくつかの例において、スイッチは、ステップ204とステップ206とを同時に実行してもよい。
いくつかの実装例において、プロセス200は、追加のステップを含んでいてもよく、より少ないステップを含んでいてもよく、または、上記ステップのうちのいくつかのステップが複数のステップに分割されてもよい。たとえば、スイッチは、アドレス変換要求を受け、たとえばステップ204〜210を実行することなく、仮想アドレスがメモリに格納されていると判断し、仮想アドレスから物理アドレスへのマッピングを用いて物理アドレスを求めてもよい。
いくつかの実装例において、スイッチは、複数の異なるアドレス変換要求に対し、プロセス200またはプロセス200の一部を実行してもよい。たとえば、スイッチは、第1のアドレス変換要求を第1のデバイスから受け、第1の要求に応じた第1の物理アドレスがメモリに格納されていると判断し、第1の物理アドレスを第1のデバイスに与えてもよい。スイッチは、第2のアドレス変換要求を第1のデバイスまたはそれとは異なる第2のデバイスから受け、第2の要求に応じた第2の物理アドレスがメモリに格納されていないと判断し、たとえば、第2の要求からの仮想アドレスがメモリに格納されていないと判断し、この仮想アドレスに対するマッピングを、別のデバイスたとえばルートコンプレックスまたはキャッシュに要求してもよい。スイッチは、上記別のデバイスから、この要求に対する、マッピングを含む応答を受け、第2の物理アドレスを、要求を出したデバイスに与える。
スイッチは、デバイスのために仮想アドレスから物理アドレスへのマッピングを格納しており、これらのデバイス各々について、独立したメモリを含んでいてもよい。いくつかの例において、スイッチは、TLBおよびIOMMU双方を含んでいてもよい。
検証プロセスフローの例
図3は、物理アドレスがメモリに格納されているか否かを判断するためのプロセス300のフロー図である。たとえば、プロセス300は、環境100のスイッチチップA 102aまたはコントローラ110によって使用されてもよい。
スイッチは、特定の物理アドレスを含むメモリアクセス要求をデバイスから受信する(302)。たとえば、スイッチは読出または書込要求を受信する。
スイッチは、この特定の物理アドレスがスイッチのメモリに格納されているか否かを判断する(304)。メモリは、TLBまたはIOMMUであってもよい。スイッチは、この特定の物理アドレスがメモリに格納されているか否かを判断しかつデバイスはこの特定の物理アドレスにアクセスすることを許可されるか否かを判断することにより、この要求を検証する。このメモリは、たとえば、スイッチが仮想アドレスから物理アドレスへのマッピングをデバイスごとに格納しておりスイッチがこのデバイスごとに1つのメモリを有するときは、デバイス固有のメモリであってもよい。メモリは、対応するバスを介してスイッチが接続しているすべてのデバイスのためのメモリであってもよい。
スイッチは、上記特定の物理アドレスがメモリに格納されていると判断する(306)。デバイスごとに1つのメモリがある場合に、この特定の物理アドレスがデバイス用のメモリに格納されているとスイッチが判断したときに、スイッチは要求を検証する。上記特定の物理アドレスがすべてのデバイス用の単一のメモリに格納されておりかつデバイスが上記特定の物理アドレスへのアクセスを許可されるとスイッチが判断したときに、スイッチは要求を検証する。
上記特定の物理アドレスがスイッチのメモリに格納されていると判断すると、スイッチは、メモリアクセス要求をサービスのために別のデバイスに転送する(308)。たとえば、スイッチは、要求を、この要求に応じたデータを有する宛先デバイスに転送する。この要求の転送は、この要求を1つ以上の中間デバイスを通してルーティングしてもよい。いくつかの例において、キャッシュがこの要求に応じたデータを含む場合、スイッチは、この要求をルートコンプレックスを介して上記キャッシュに転送してもよい。
スイッチは、上記特定の物理アドレスはメモリに格納されていないと判断する(310)。たとえば、スイッチは、上記特定の物理アドレスによって特定される記憶場所にアクセスすることをデバイスは許可されないと判断する。各デバイスが自身のメモリを有するときに、上記特定の物理アドレスが、デバイス用ではない、スイッチの別のメモリに格納されている場合、または、すべてのデバイス用の単一のメモリに格納されているものの上記特定の物理アドレスが当該デバイスに対応付けられていない場合、たとえばデバイスが特定の物理アドレスへのアクセスを許可されるべきではない場合、スイッチは要求を検証しない。
上記特定の物理アドレスがスイッチのメモリに格納されていないと判断したことに応じて、スイッチは、メモリアクセス要求を破棄する(312)。たとえば、スイッチは、この要求をサービスのために別のデバイスに転送しない、または、要求に応答しない、またはいずれも実行しない。いくつかの例において、スイッチは、破棄されたメモリアクセス要求の詳細を特定するエラーを、たとえば、スイッチのメモリに格納されていない上記特定の物理アドレスと、上記要求をスイッチに送信したソースデバイスの識別子とを、ログ記録してもよい。
上記特定の物理アドレスがスイッチのメモリに格納されていないと判断したことに応じて、スイッチはデバイスをリセットする(314)。たとえば、スイッチは、デバイスに悪意があるまたはソフトウェアバグがあるまたはこれら両方があると判断して、デバイスをリセットすることにより、たとえば、デバイスがアクセスできない記憶場所に当該デバイスがアクセスすることを防止してもよい。
上記プロセス300におけるステップの順序は一例にすぎず、物理アドレスがメモリに格納されているか否かの判断は、異なる順序で実行されてもよい。たとえば、スイッチはデバイスをリセットしてからメモリアクセス要求を破棄してもよい、たとえばステップ314を実行してからステップ312を実行してもよい。
いくつかの実装例において、プロセス300は、追加のステップを含んでいてもよく、より少ないステップを含んでいてもよく、または、上記ステップのうちのいくつかのステップが複数のステップに分割されてもよい。たとえば、複数の異なるメモリアクセス要求、複数の異なる種類のメモリアクセス要求たとえば読出要求、書込要求またはこれら両方、スイッチによって管理されるバスに接続されている複数の異なるデバイス、またはこれらのうちの2つ以上を組合わせたものに対し、スイッチは、プロセス300の一部を実行してもよくまたはすべてを実行してもよい。スイッチは、要求のうちのいくつかを検証してもよく、要求のうちのいくつかを無効にしてもよく、または、要求のうちのいくつかを検証するとともにいくつかを無効にしてもよい。
いくつかの実装例では、TLBまたはIOMMUを有する別のデバイスが要求を検証する。たとえば、ルートコンプレックスがプロセス300を実行することにより要求を検証してもよい。
任意の実装の詳細
いくつかの実装例において、スイッチチップは、デバイスごとにアドレスマッピングを格納しデバイスごとにTLBを含んでいてもよく、たとえば、スイッチチップが管理するバスにデバイスが接続できるようにする各ポートであってそのためにスイッチチップがアドレスマッピングを格納する各ポートについて、TLBを含んでいてもよい。スイッチチップは、ポート情報を用いることにより、どのTLBにアクセスすべきかを判断してもよく、たとえば、特定のデバイス用のアドレスマッピングを求めてもよく、または、特定のデバイスのメモリアクセス要求を検証してもよい。スイッチチップは、適切な方法を用いることにより、特定のデバイスのためにどのTLBにアクセスするかを判断してもよい。
いくつかの実装例において、スイッチチップは、識別子、たとえばポート識別子を用いることにより、デバイスを特定し、当該デバイスがアドレスマッピングをこのデバイスにローカルにキャッシュできるかできないかを判断してもよい。たとえば、スイッチチップは、バスを介してそのポートに接続されているデバイスがATSをサポートするか否かおよびスイッチチップがそのデバイスからのアドレス変換要求に応じるべきか否かを示すビットを、ポートごとに含む。
スイッチチップ内のメモリたとえばIOMMUのサイズは、そのためにメモリがアドレスマッピングを格納するデバイスの数に基づいて、たとえば、各ポートがデバイスに対応し当該デバイスはスイッチチップが管理するバスに接続することができIOMMUが当該デバイスのためにページテーブルを格納している場合はスイッチチップ内のポートの数に基づいて、選択されてもよい。たとえば、バスを介して接続する機能を有し16以下のデバイス用のページテーブルを格納するスイッチチップは、別のバスを介して接続する機能を有し4以下のデバイス用のページテーブルを格納する別のスイッチチップよりも、大きなIOMMUを含み得る。
いくつかの実装例において、IOMMUは、1つ以上のデバイス用のページテーブルの総数のうちのある割合を格納してもよい。たとえば、特定のデバイスが多数の記憶場所にアクセスし得る場合、IOMMUは、この特定のデバイス用のページテーブルのうちのすべてではなく一部を格納してもよい。
スイッチチップは、IOMMUのうちの所定の割合を、IOMMUがページテーブルを格納する対象である各デバイスのためのページテーブルの格納に割当ててもよい。たとえば、16以下のデバイスに対して、スイッチチップがバスを介して接続しページテーブルを格納することができ、かつ、当該スイッチチップが管理するバスに1つのデバイスが接続している場合、当該スイッチチップは、IOMMU全体を、この1つのデバイスのためのページテーブルを格納するために割当ててもよい。当該スイッチチップが管理するバスに別のデバイスが接続している場合、スイッチチップは、IOMMU内のメモリのうちの2分の1をデバイス各々に割当て、それ以外のデバイスに対しても同様に割当てを行なってもよい。いくつかの実装例において、IOMMUは、スイッチチップが管理するバスに実際に接続しているデバイスの数とは関係なく、メモリの16分の1を各デバイスに割当ててもよい。
いくつかの実装例において、スイッチチップは、IOMMUに代えてメモリ管理ユニット(MMU)を含み得る。たとえば、スイッチチップは、当該スイッチチップが管理するバスに接続されているデバイスのために、MMUを用いて仮想アドレスを物理アドレスに変換してもよい。
その他実装の詳細
本明細書に記載の主題および機能的動作の実施形態は、デジタル電子回路において、有形に実現されたコンピュータソフトウェアまたはファームウェアにおいて、本明細書に開示されている構造およびそれらの構造的均等物を含むコンピュータハードウェアにおいて、または、これらのうちの1つ以上を組合わせたものにおいて、実現することができる。本明細書に記載の主題の実施形態は、1つ以上のコンピュータプログラムとして、すなわち、データ処理装置によって実行されるかまたはデータ処理装置の動作を制御するための有形の非一時的なプログラムキャリア上で符号化されているコンピュータプログラム命令の1つ以上のモジュールとして、実現することができる。コンピュータ記憶媒体は、機械読取可能な記憶装置、機械読取可能な記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、または、これらのうちの1つ以上を組合わせたものであってもよい。
「データ処理装置」という用語は、データ処理ハードウェアのことであり、例として1つのプログラマブルプロセッサ、1つのコンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのすべての種類の装置、デバイス、およびマシンを包含する。この装置は、専用論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)であってもよく、これをさらに含んでいてもよい。この装置は、任意で、ハードウェアに加えて、コンピュータプログラムのための実行環境を生成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはこれらのうちの1つ以上を組合わせたものを構成するコードを、含み得る。
コンピュータプログラムは、プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、またはコードと呼ばれることもありまたはそういうものとして説明されることもあり、コンパイルされたもしくは解釈言語または宣言型もしくは手続型言語を含む任意の形態のプログラミング言語で書込むことができ、スタンドアロンプログラムとしてまたはモジュールまたはコンポーネントまたはサブルーチンまたは計算環境で使用するのに適したその他のユニットを含む、任意の形態で、デプロイすることができる。コンピュータプログラムは、ファイルシステム内のファイルに対応していてもよいが、ファイルシステム内のファイルに対応している必要はない。プログラムは、その他のプログラムまたはデータたとえばマークアップ言語文書に格納された1つ以上のスクリプトを保持するファイルの一部に、当該プログラム専用の1つのファイルに、または、複数の統合されたファイルたとえば1つ以上のモジュール、サブプログラム、またはコードの部分を格納するファイルに、格納することができる。コンピュータプログラムは、1つのコンピュータ上で、または、1つの場所に位置しまたは複数の場所に分散しており通信ネットワークによって相互に接続されている複数のコンピュータ上で、デプロイして実行することができる。
本明細書に記載のプロセスおよび論理フローは、1つ以上のコンピュータプログラムを実行して入力データに対して動作し出力を生成することによって機能を果たす1つ以上のプログラマブルコンピュータによって実行することができる。上記プロセスおよび論理フローは、専用論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行することもでき、装置は、専用論理回路、たとえばFPGAまたはASICとして実装することもできる。
コンピュータプログラム命令およびデータを格納するのに適したコンピュータ読取可能な媒体は、すべての形態の不揮発性メモリ、媒体、および記憶装置を含み、これらは例として、半導体記憶装置、たとえばEPROM、EEPROM、およびフラッシュメモリデバイスと、磁気ディスクたとえば内部ハードディスクまたはリムーバブルディスクと、光磁気ディスクと、CD-ROMおよびDVD−ROMディスクとを含む。プロセッサおよびメモリに、専用論理回路を補充してもよくまたは組込んでもよい。
本明細書には多数の具体的な実装の詳細が含まれているが、これらは、クレームし得るものの範囲を限定するものとして解釈されるべきものではなく、むしろ、特定の実施形態に固有であってもよい特徴の説明であると解釈されるべきものである。別々の実装例の文脈において本明細書に記載されている特定の特徴を、1つの実施形態における組合わせとして実装することも可能である。逆に、1つの実施形態の文脈において記載されているさまざまな特徴を、複数の実施形態において別々に、または適切なサブコンビネーションとして実装することも可能である。加えて、特徴は特定の組合わせにおいて作用するものとして説明されそういうものとして最初にクレームされる場合があるが、クレームされている組合わせからの1つ以上の特徴は、場合によってはこの組合わせから削除されることがあり、クレームされている組合わせが、サブコンビネーションまたはサブコンビネーションの変形に関連する場合がある。
同様に、図面では動作を特定の順序で示しているが、これは、所望の結果を得るために、このような動作を、示されている特定の順序でもしくは連続して順番に実行すること、または、示されているすべての動作を実行することを、要求しているのではない。特定の状況では、マルチタスキングおよび並列処理が好都合であろう。加えて、上記実施形態ではさまざまなシステムコンポーネントが分離されているが、これは、すべての実施形態においてこのような分離が必要であると理解されるべきものではなく、記載されているプログラムコンポーネントおよびシステムは概ね1つのソフトウェアプロダクトに統合することができるまたは複数のソフトウェアプロダクトにパッケージングすることができると理解されるべきものである。
主題の特定の実施形態について説明してきた。その他の実施形態は以下の請求項の範囲に含まれる。たとえば、請求項に記載の動作は、異なる順序で実行してもよくそれでもなお所望の結果を得ることができる。一例として、添付の図面に記載のプロセスは、所望の結果を得るために、必ずしも示されている特定の順序または連続した順序でなければならない訳ではない。場合によってはマルチタスクおよび並列処理が好都合であろう。

Claims (24)

  1. バスに接続された1つ以上のデバイスからパケットを受信し前記1つ以上のデバイスにパケットを渡すスイッチを備え、前記スイッチと前記1つ以上のデバイスの各々との間における前記バス上にコンポーネントは存在しておらず、
    前記スイッチに組込まれ仮想アドレスから物理アドレスへのマッピングを格納するためのメモリと、
    前記スイッチに組込まれ前記スイッチによって実行可能な命令を格納する非一時的なコンピュータ読取可能な記憶媒体とを備え、前記命令は実行されると前記スイッチに複数の動作を実行させ、前記複数の動作は、
    前記スイッチが、前記バスによって前記スイッチに接続されているデバイスのためのアドレス変換要求に対する応答を受信することを含み、前記応答は、仮想アドレスから物理アドレスへのマッピングを含み、前記複数の動作は、
    前記デバイスのための前記アドレス変換要求に対する前記応答を受信したことに応じて、前記仮想アドレスから前記物理アドレスへの前記マッピングを前記メモリに格納することと、
    特定の物理アドレスを含むメモリアクセス要求を前記デバイスから受信することと、
    前記特定の物理アドレスは前記メモリに格納されていると判断することと、
    前記特定の物理アドレスは前記メモリに格納されていると判断したことに応じて、前記メモリアクセス要求をサービスのために別のデバイスに転送することとを含む、システム。
  2. 前記スイッチに組込まれIOMMUメモリを含む入出力メモリ管理ユニット(IOMMU)を備え、
    前記メモリは前記IOMMUメモリを含み、
    前記スイッチが、前記デバイスのためのアドレス変換要求に対する応答を受信することは、前記スイッチが、前記デバイスのためのページテーブルの一部を受信することを含み、
    前記仮想アドレスから前記物理アドレスへの前記マッピングを前記メモリに格納することは、前記ページテーブルの前記一部を前記IOMMUに格納することを含む、請求項1に記載のシステム。
  3. 前記メモリは変換ルックアサイドバッファ(TLB)を含み、
    前記仮想アドレスから前記物理アドレスへの前記マッピングを前記メモリに格納することは、前記仮想アドレスから前記物理アドレスへの前記マッピングを前記TLBに格納することを含む、請求項1に記載のシステム。
  4. 前記スイッチのための予め定められた数のポートを備え、前記ポートは各々、特定のデバイスに対応し、前記スイッチは、前記特定のデバイスに対して1つのTLBを含む、請求項3に記載のシステム。
  5. 前記複数の動作は、
    前記デバイスのための前記アドレス変換要求に対する前記応答を受信したことに応じて、前記TLBは空の場所を含まないと判断することと、
    前記TLB内の場所からエントリを削除することと、
    前記TLB内の前記場所に、前記仮想アドレスを前記物理アドレスにマッピングする新たなエントリを格納することとを含む、請求項3に記載のシステム。
  6. 前記複数の動作は、
    仮想アドレスから物理アドレスへのマッピングを前記デバイスが前記デバイスのTLBに現在格納していることを前記デバイスに固有の設定が示すと判断することと、
    仮想アドレスから物理アドレスへのマッピングを前記デバイスが前記デバイスのTLBに現在格納していることを前記デバイスに固有の設定が示すと判断したことに応じて、前記デバイスのTLBからエントリを削除することを前記デバイスに指示するメッセージを前記デバイスに送信することと、
    仮想アドレスから物理アドレスへのマッピングを前記デバイスが前記デバイスのTLBに現在格納していることを前記デバイスに固有の設定が示すと判断したことに応じて、前記仮想アドレスから前記物理アドレスへの前記マッピングを前記デバイスに与えることとを含む、請求項3に記載のシステム。
  7. 前記複数の動作は、前記デバイスが前記デバイスのTLBから前記エントリを削除したという確認を、前記デバイスから受信することを含み、前記仮想アドレスから前記物理アドレスへの前記マッピングを前記デバイスに与えることは、前記デバイスが前記デバイスのTLBから前記エントリを削除したという確認を受信したことに応じて、前記仮想アドレスから前記物理アドレスへの前記マッピングを前記デバイスに与えることを含む、請求項6に記載のシステム。
  8. 前記スイッチは、前記デバイスを含む2つ以上のデバイスからパケットを受信し前記2つ以上のデバイスにパケットを渡し、前記2つ以上のデバイスは各々バスに接続されており、前記スイッチと前記2つ以上のデバイス各々との間における前記バス上にコンポーネントは存在しておらず、
    前記メモリは、前記デバイスに固有のメモリであり、前記バスによって前記スイッチに接続され前記2つ以上のデバイスに含まれるその他のデバイスのための仮想アドレスから物理アドレスへのマッピングを含まず、
    前記システムは、1つ以上の追加のメモリを備え、前記1つ以上の追加のメモリは各々、
    a)前記デバイス以外の前記2つ以上のデバイスのうちの特定のデバイスに固有であり、
    b)前記バスによって前記スイッチに接続され前記2つ以上のデバイスに含まれるその他のデバイスのための仮想アドレスから物理アドレスへのマッピングを含まない、請求項1に記載のシステム。
  9. 前記スイッチに組込まれている1つ以上の追加のメモリを備え、前記追加のメモリ各々と、特定のデバイスに固有の前記メモリとは、前記バスによって前記スイッチに接続されており、
    前記特定の物理アドレスが前記メモリに格納されていると判断することは、
    前記スイッチにおける特定のポートが前記メモリアクセス要求を受信したと判断することと、
    前記メモリと前記追加のメモリとを含む群から、前記特定のポートを用いて前記デバイスのための前記メモリを選択することと、
    前記特定のポートを用いて前記デバイスのための前記メモリを選択したことに応じて、前記特定の物理アドレスが前記メモリに格納されていると判断することとを含む、請求項1に記載のシステム。
  10. 中央処理装置と、
    キャッシュとを備え、
    前記デバイスのためのアドレス変換要求に対する応答を受信することは、前記仮想アドレスから前記物理アドレスへの前記マッピングを前記キャッシュから受信することを含み、
    前記メモリアクセス要求をサービスのために別のデバイスに転送することは、前記メモリアクセス要求を前記中央処理装置に転送することを含む、請求項1に記載のシステム。
  11. 第2のバス上のコントローラを備え、前記コントローラは、前記第2のバスを介して、前記スイッチを、前記中央処理装置および前記キャッシュに接続し、前記スイッチと前記中央処理装置および前記キャッシュとの間でやり取りされる応答および要求を、前記第2のバスを用いてルーティングする、請求項10に記載のシステム。
  12. 前記コントローラはルートコンプレックスを含む、請求項11に記載のシステム。
  13. 前記スイッチを含む複数のスイッチと、
    第2のバス上のコントローラとを備え、前記コントローラは、前記第2のバスを介して、前記複数のスイッチ各々を、前記中央処理装置および前記キャッシュに接続し、前記複数のスイッチ各々と前記中央処理装置および前記キャッシュとの間でやり取りされる応答および要求を、前記第2のバスを用いてルーティングする、請求項10に記載のシステム。
  14. マザーボードと、
    前記マザーボードに組込まれている前記バスとを備え、前記マザーボードに対し、前記スイッチは、ソースデバイスからの要求を宛先デバイスにルーティングすることにより、周辺装置が前記マザーボードに接続することを可能にするように構成されている、請求項1に記載のシステム。
  15. バスに接続された1つ以上のデバイスからパケットを受信し前記1つ以上のデバイスにパケットを渡すスイッチを備え、前記スイッチと前記1つ以上のデバイス各々との間における前記バス上にコンポーネントは存在しておらず、
    前記スイッチに組込まれ仮想アドレスから物理アドレスへのマッピングを格納するためのメモリと、
    前記スイッチに組込まれ前記スイッチによって実行可能な命令を格納する非一時的なコンピュータ読取可能な記憶媒体とを備え、前記命令は実行されると前記スイッチに複数の動作を実行させ、前記複数の動作は、
    前記スイッチが、前記バスによって前記スイッチに接続されているデバイスのためのアドレス変換要求に対する応答を受信することを含み、前記応答は、仮想アドレスから物理アドレスへのマッピングを含み、
    前記デバイスのための前記アドレス変換要求に対する前記応答を受信したことに応じて、前記仮想アドレスから前記物理アドレスへの前記マッピングを前記メモリに格納することと、
    特定の物理アドレスを含むメモリアクセス要求を前記デバイスから受信することと、
    前記仮想アドレスから前記物理アドレスへの前記マッピングを含む前記メモリからのデータを用いて、前記デバイスは前記特定の物理アドレスによって特定される記憶場所にアクセスすることを許可されないと判断することと、
    前記デバイスは前記特定の物理アドレスによって特定される記憶場所にアクセスすることを許可されないと判断したことに応じて、前記メモリアクセス要求を破棄することと、
    前記デバイスは前記特定の物理アドレスによって特定される記憶場所にアクセスすることを許可されないと判断したことに応じて、前記デバイスをリセットすることとを含む、システム。
  16. 前記複数の動作は、
    前記スイッチが、前記デバイスから、前記仮想アドレスを含む前記アドレス変換要求を受信することと、
    前記仮想アドレスは前記メモリに格納されていないと判断することと、
    前記仮想アドレスから前記物理アドレスへの前記マッピングを要求することとを含み、前記スイッチが、前記デバイスのためのアドレス変換要求に対する応答を受信することは、前記仮想アドレスから前記物理アドレスへの前記マッピングを要求したことに応じて、前記応答を受信することを含む、請求項1に記載のシステム。
  17. 前記複数の動作は、
    前記仮想アドレスから前記物理アドレスへの前記マッピングを用いて、前記仮想アドレスに対応する物理アドレスを求めることと、
    前記対応する物理アドレスを含む、前記アドレス変換要求に対する第2の応答を、前記デバイスに与えることとを含む、請求項16に記載のシステム。
  18. 前記複数の動作は、前記仮想アドレスから前記物理アドレスへの前記マッピングを要求するのと同時に、前記仮想アドレスから前記物理アドレスへの前記マッピングを前記メモリが含むか否かを判断することを含む、請求項16に記載のシステム。
  19. 前記仮想アドレスから前記物理アドレスへの前記マッピングを要求することは、前記仮想アドレスから前記物理アドレスへの前記マッピングを中央処理装置に要求することを含む、請求項16に記載のシステム。
  20. 前記仮想アドレスから前記物理アドレスへの前記マッピングを要求することは、前記仮想アドレスから前記物理アドレスへの前記マッピングをメモリに要求することを含む、請求項16に記載のシステム。
  21. 前記仮想アドレスから前記物理アドレスへの前記マッピングを要求することは、前記仮想アドレスから前記物理アドレスへの前記マッピングを入出力メモリ管理ユニット(IOMMU)に要求することを含む、請求項16に記載のシステム。
  22. 前記スイッチに組込まれた予め定められた数のポートを備え、前記ポートは各々、特定のデバイスに対応し、前記特定のデバイスに対し、前記メモリは、仮想アドレスから物理アドレスへの対応するマッピングを格納するように構成され、前記メモリのサイズは前記予め定められた数のポートに対応する、請求項1に記載のシステム。
  23. コンピュータによって実現される方法であって、
    スイッチが、バスによって前記スイッチに接続されているデバイスのためのアドレス変換要求に対する応答を受信するステップを含み、前記スイッチは、前記バスに接続された1つ以上のデバイスからパケットを受信し前記1つ以上のデバイスにパケットを渡し、前記スイッチと前記1つ以上のデバイス各々との間における前記バス上にコンポーネントは存在しておらず、前記応答は、仮想アドレスから特定の物理アドレスへのマッピングを含み、
    前記デバイスのための前記アドレス変換要求に対する前記応答を受信したことに応じて、前記スイッチに組込まれ仮想アドレスから物理アドレスへのマッピングを格納するためのメモリに、前記仮想アドレスから前記物理アドレスへのマッピングを格納するステップと、
    仮想アドレスから物理アドレスへのマッピングを前記デバイスが前記デバイスの変換ルックアサイドバッファ(TLB)に現在格納していることを、前記デバイスに固有の前記スイッチの設定が示すと判断するステップとを含み、前記スイッチの設定は前記スイッチに組み込まれたメモリに格納されており
    仮想アドレスから物理アドレスへのマッピングを前記デバイスが前記デバイスの変換ルックアサイドバッファ(TLB)に現在格納していることを、前記デバイスに固有の前記スイッチの設定が示すと判断したことに応じて、前記デバイスのTLBからエントリを削除することを前記デバイスに指示するメッセージを前記デバイスに送信するステップと、
    仮想アドレスから物理アドレスへのマッピングを前記デバイスが前記デバイスの変換ルックアサイドバッファ(TLB)に現在格納していることを、前記デバイスに固有の前記スイッチの設定が示すと判断したことに応じて、前記仮想アドレスから前記物理アドレスへの前記マッピングを前記デバイスに与えるステップとを含む、方法。
  24. 前記デバイスは前記特定の物理アドレスによって特定される記憶場所にアクセスすることを許可されないと判断することは、前記特定の物理アドレスは前記メモリに格納されていないと判断することを含む、請求項15に記載のシステム。
JP2017556872A 2015-07-27 2016-06-24 スイッチへのアドレスキャッシュ Active JP6434168B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018209836A JP6913663B2 (ja) 2015-07-27 2018-11-07 スイッチへのアドレスキャッシュ

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/810,062 US9626300B2 (en) 2015-07-27 2015-07-27 Address caching in switches
US14/810,062 2015-07-27
PCT/US2016/039333 WO2017019216A1 (en) 2015-07-27 2016-06-24 Address caching in switches

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2018209836A Division JP6913663B2 (ja) 2015-07-27 2018-11-07 スイッチへのアドレスキャッシュ

Publications (2)

Publication Number Publication Date
JP2018526696A JP2018526696A (ja) 2018-09-13
JP6434168B2 true JP6434168B2 (ja) 2018-12-05

Family

ID=56373146

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2017556872A Active JP6434168B2 (ja) 2015-07-27 2016-06-24 スイッチへのアドレスキャッシュ
JP2018209836A Active JP6913663B2 (ja) 2015-07-27 2018-11-07 スイッチへのアドレスキャッシュ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2018209836A Active JP6913663B2 (ja) 2015-07-27 2018-11-07 スイッチへのアドレスキャッシュ

Country Status (10)

Country Link
US (2) US9626300B2 (ja)
EP (3) EP4131013A1 (ja)
JP (2) JP6434168B2 (ja)
KR (2) KR101885185B1 (ja)
CN (2) CN111522755B (ja)
DE (2) DE112016002006B4 (ja)
DK (1) DK3329378T3 (ja)
GB (1) GB2556458B (ja)
HK (1) HK1253044A1 (ja)
WO (1) WO2017019216A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10007435B2 (en) * 2015-05-21 2018-06-26 Micron Technology, Inc. Translation lookaside buffer in memory
US9626300B2 (en) * 2015-07-27 2017-04-18 Google Inc. Address caching in switches
US10678702B2 (en) * 2016-05-27 2020-06-09 Advanced Micro Devices, Inc. Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations
KR102482516B1 (ko) 2016-11-29 2022-12-29 에이알엠 리미티드 메모리 어드레스 변환
US11082523B2 (en) * 2017-02-09 2021-08-03 International Business Machines Corporation System, method and computer program product for a distributed virtual address space
US20190044227A1 (en) * 2017-08-01 2019-02-07 Bby Solutions, Inc. Active Antenna
US10866904B2 (en) * 2017-11-22 2020-12-15 Arm Limited Data storage for multiple data types
US10831673B2 (en) 2017-11-22 2020-11-10 Arm Limited Memory address translation
US10929308B2 (en) 2017-11-22 2021-02-23 Arm Limited Performing maintenance operations
US10990554B2 (en) 2018-03-02 2021-04-27 Samsung Electronics Co., Ltd. Mechanism to identify FPGA and SSD pairing in a multi-device environment
US10635609B2 (en) * 2018-03-02 2020-04-28 Samsung Electronics Co., Ltd. Method for supporting erasure code data protection with embedded PCIE switch inside FPGA+SSD
US10929310B2 (en) * 2019-03-01 2021-02-23 Cisco Technology, Inc. Adaptive address translation caches
JP7080863B2 (ja) * 2019-08-02 2022-06-06 株式会社日立製作所 ストレージ装置
CN110716886B (zh) * 2019-09-29 2022-12-13 惠州市仲恺Tcl智融科技小额贷款股份有限公司 数据处理的方法、装置、存储介质以及终端
CN111988394B (zh) * 2020-08-18 2022-11-01 北京金山云网络技术有限公司 一种虚拟化环境中优化p2p数据传输的方法、装置及设备
CN115525596A (zh) * 2021-06-25 2022-12-27 许继电气股份有限公司 多主交换式高速互联背板总线及其控制方法、处理系统

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04308953A (ja) * 1991-04-05 1992-10-30 Kyocera Corp 仮想アドレス計算機装置
JPH06187286A (ja) * 1992-12-15 1994-07-08 Hitachi Ltd バス変換アダプタ
JP3296240B2 (ja) * 1997-03-28 2002-06-24 日本電気株式会社 バス接続装置
US7457897B1 (en) 2004-03-17 2008-11-25 Suoer Talent Electronics, Inc. PCI express-compatible controller and interface for flash memory
US20010049732A1 (en) * 2000-06-01 2001-12-06 Raciborski Nathan F. Content exchange apparatus
US7487327B1 (en) 2005-06-01 2009-02-03 Sun Microsystems, Inc. Processor and method for device-specific memory address translation
US7917723B2 (en) 2005-12-01 2011-03-29 Microsoft Corporation Address translation table synchronization
US7779197B1 (en) 2006-05-09 2010-08-17 Integrated Device Technology, Inc. Device and method for address matching with post matching limit check and nullification
US7707383B2 (en) * 2006-11-21 2010-04-27 Intel Corporation Address translation performance in virtualized environments
WO2008120325A1 (ja) * 2007-03-28 2008-10-09 Fujitsu Limited スイッチ、情報処理装置およびアドレス変換方法
JP5116497B2 (ja) * 2008-01-31 2013-01-09 株式会社日立製作所 情報処理システム、i/oスイッチ及びi/oパスの交替処理方法
JP2009199420A (ja) * 2008-02-22 2009-09-03 Panasonic Corp メモリ制御装置
CN102111459B (zh) 2009-12-28 2013-11-06 中兴通讯股份有限公司 Ip语音设备主备切换中的通话维护方法及装置
US8639976B2 (en) * 2011-02-15 2014-01-28 Coraid, Inc. Power failure management in components of storage area network
US8930715B2 (en) 2011-05-26 2015-01-06 International Business Machines Corporation Address translation unit, device and method for remote direct memory access of a memory
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
US9110830B2 (en) * 2012-01-18 2015-08-18 Qualcomm Incorporated Determining cache hit/miss of aliased addresses in virtually-tagged cache(s), and related systems and methods
US8837476B2 (en) * 2012-09-07 2014-09-16 International Business Machines Corporation Overlay network capable of supporting storage area network (SAN) traffic
CN103931144B (zh) * 2013-07-08 2015-11-25 华为技术有限公司 一种在虚拟域中通信的方法、设备和系统
US9626300B2 (en) * 2015-07-27 2017-04-18 Google Inc. Address caching in switches

Also Published As

Publication number Publication date
EP3923145A1 (en) 2021-12-15
KR20170130609A (ko) 2017-11-28
DE112016002006B4 (de) 2023-10-12
JP2018526696A (ja) 2018-09-13
DE112016002006T5 (de) 2018-03-01
WO2017019216A1 (en) 2017-02-02
US9626300B2 (en) 2017-04-18
KR101885185B1 (ko) 2018-08-03
KR20180088525A (ko) 2018-08-03
CN107949833B (zh) 2020-03-24
DK3329378T3 (da) 2021-12-06
CN107949833A (zh) 2018-04-20
HK1253044A1 (zh) 2019-06-06
US20170031835A1 (en) 2017-02-02
DE202016107024U1 (de) 2017-01-30
EP3329378B1 (en) 2021-09-08
US20170177532A1 (en) 2017-06-22
JP6913663B2 (ja) 2021-08-04
EP3329378A1 (en) 2018-06-06
GB2556458A (en) 2018-05-30
GB2556458B (en) 2021-11-24
CN111522755A (zh) 2020-08-11
EP4131013A1 (en) 2023-02-08
US9747241B2 (en) 2017-08-29
CN111522755B (zh) 2022-05-13
JP2019071064A (ja) 2019-05-09
GB201717591D0 (en) 2017-12-13
KR102015077B1 (ko) 2019-08-27

Similar Documents

Publication Publication Date Title
JP6434168B2 (ja) スイッチへのアドレスキャッシュ
US10031857B2 (en) Address translation services for direct accessing of local memory over a network fabric
JP5573829B2 (ja) 情報処理装置およびメモリアクセス方法
US10853277B2 (en) Systems and methods for isolating input/output computing resources
JP5841255B2 (ja) 仮想化入力/出力のためのプロセッサローカルコヒーレンシを有するコンピュータシステム
EP2472412B1 (en) Explicitly regioned memory organization in a network element
US10810133B1 (en) Address translation and address translation memory for storage class memory
US10310759B2 (en) Use efficiency of platform memory resources through firmware managed I/O translation table paging
US10762137B1 (en) Page table search engine
US20140244965A1 (en) Method and system for simplified address translation support for static infiniband host channel adaptor structures
JP2014160502A (ja) 情報処理装置およびメモリアクセス方法
JP6890131B2 (ja) ソリッドステート装置のための多重アドレスレジスタ用の装置および方法
US10754789B1 (en) Address translation for storage class memory in a system that includes virtual machines

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180612

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180612

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20180612

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20180622

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180626

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180926

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181107

R150 Certificate of patent or registration of utility model

Ref document number: 6434168

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250