JP2016513846A - ネットワークを介したメモリー共有 - Google Patents

ネットワークを介したメモリー共有 Download PDF

Info

Publication number
JP2016513846A
JP2016513846A JP2016501760A JP2016501760A JP2016513846A JP 2016513846 A JP2016513846 A JP 2016513846A JP 2016501760 A JP2016501760 A JP 2016501760A JP 2016501760 A JP2016501760 A JP 2016501760A JP 2016513846 A JP2016513846 A JP 2016513846A
Authority
JP
Japan
Prior art keywords
memory
computing device
remote
namespace
request
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.)
Pending
Application number
JP2016501760A
Other languages
English (en)
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2016513846A publication Critical patent/JP2016513846A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Abstract

物理的に別個のネットワーク接続された計算デバイス間でメモリーを共有する。各計算デバイスは、ローカルに実行するプロセスからのコマンドを受け入れ、このようなコマンドを、リモート計算デバイスに送信可能な形態に変換するリモート・メモリー・インターフェース(RMI)を含む。また、RMIは、それに宛てられたリモート通信も受け入れて、これらを、ローカル・メモリーを対象とするコマンドに変換する。共有される記憶容量の量は、集中コントローラー、1つのコントローラー、コントローラーの階層的集合体、またはピア・ツー・ピア・ネゴシエーションのいずれかによって通知される。離れた高速不揮発性記憶媒体を対象とする要求は、検出されるか、またはフラグが立てられ、その要求を出したプロセスは、それを効率的に回復させることができるように保留される。リモート・メモリーによって供給される記憶容量は、ローカルに実行するプロセスのプロセス空間にマッピングされる。【選択図】図3b

Description

[0001] 計算デバイス間における通信のスループットが向上する程、計算デバイス同士でデーターを転送することが増々安価になる。その結果、離れて位置するサーバー計算デバイスが、大規模な処理を実行するために増々利用され、このような処理から得られるデーターが、コンピューター・ネットワークを介して伝達され、このようなサーバー計算デバイスに通信可能に結合されたローカルな個人用計算デバイスに戻される。
[0002] 従前からのサーバー計算デバイスは、通例、大量のこのようなサーバー計算デバイスを物理的に同じ位置に配置できるように最適化される。例えば、従前のサーバー計算デバイスは、多くの場合、「ブレード」アーキテクチャ(blade architecture)を利用して構築され、サーバー計算デバイスのハードウェアは、物理的な筐体内に配置される。この物理的な筐体は、物理的に小型であり、多数のこのようなブレードを「ラック」アーキテクチャ状に垂直に積み上げる(arranged vertically)ことができるように設計される。ラック内にある各サーバー計算デバイスは、一緒にネットワーク接続することができ、多数のこのようなラックを、データー・センター内におけるように、物理的に同じ位置に配置することができる。すると、1つのデーター・センター内にある多数のこのようなサーバー計算デバイスを跨いで計算タスクを分散することができ、これによって一層効率的なタスクの完了が可能になる。
[0003] 計算タスクを多数のサーバー計算デバイスにわたって分散するとき、これら多数のサーバー計算デバイスの各々は、1組のデーターにアクセスすることができる。この1組のデーターは、ストレージ・エリア・ネットワーク(SAN)または他の同様のメカニズムによってというようにして、多数のサーバー計算デバイスのいずれによっても等しくアクセスすることができるディスク・アレイという形態で編成されたコンピューター読み取り可能記憶媒体または他の同様のコンピューター読み取り可能記憶媒体の集合体に格納することができる。すると、計算タスクは、このような計算タスクが実行される格納データーのコピーを必ずしも多数作る必要なく、多数のサーバー計算デバイスによって並列に実行することができる。
[0004] 生憎、各サーバー計算デバイスの処理ユニットは、計算タスクを実行するためにこれらが利用できるメモリー量に限りがある。更に具体的には、各サーバー計算デバイスの処理ユニットは、当該処理ユニットと同じサーバー計算デバイス内に物理的にあるメモリーでなければ、直接アクセスすることはできない。所与のサーバー計算デバイス上に物理的にインストールされているメモリー量よりも多くのメモリーにアクセスする必要がある計算タスクの処理を可能にするためには、通例、仮想メモリー技法が利用される。このような仮想メモリー技法は、メモリーからディスクにデーターをスワップすることによって、見かけ上よりも大量のメモリーを生成することができる。生憎、メモリーからディスクへのデーター・スワップ、そして再度その逆のスワップを行うと、容認できない遅延が生ずる。このような遅延は、ディスクが物理的に同じサーバー計算デバイス上に配置されても、あるいは他の計算デバイス上、またはSANの一部として離れて配置されても、等しく発生する可能性がある。更に具体的には、このようなスワップをサポートするために使用される記憶媒体の速度を高めても、仮想メモリー技法の使用によって生ずる遅延を解決することにはならない。
[0005] 一実施形態では、物理的に1つの計算デバイスの一部であるメモリーを、この最初の計算デバイスに通信可能に結合された他の異なる計算デバイスのプロセス空間にマッピングし、この異なる計算デバイス上で実行するプロセスによって直接アクセス可能にすることができる。1つの計算デバイスのローカルにアクセス可能なメモリー名前空間(locally addressable memory namespace)は、これによって、物理的に他の異なる計算デバイス上に位置することができるメモリーによってサポートされる。
[0006] 他の実施形態では、リモート・メモリー・インターフェース(RMI)が、メモリー管理機能をローカルに実行するプロセスに提供することができ、ローカルに実行するプロセスからのコマンドを受け入れ、これらのコマンドを、ローカル・アドレス可能メモリー名前空間に送り出し、次いで、このようなコマンドを、リモート計算デバイスへの通信接続を介して送信可能な形態に変換し、リモート計算デバイスの物理メモリーが、ローカル・アドレス可能メモリー名前空間の一部をサポートする。また、RMIは、それに宛てられるリモート通信を受け入れ、これらの通信を、ローカルにインストールされたメモリーを対象とするコマンドに変換することもできる。
[0007] 更に他の実施形態では、コントローラーが、どれ位のメモリー記憶容量を、他の計算デバイス上で実行するプロセスと共有すべきか決定することができる。このようなコントローラーは、多数の計算デバイス間におけるメモリーの共有を調整することができる集中コントローラーとすることができ、または多数の計算デバイス自体の間でピア・ツー・ピア通信の形態で実現することができる。更に他の代替案では、このようなコントローラーは、階層的フォーマットで実現することができ、あるレベルのコントローラーが複数組の計算デバイス間におけるメモリーの共有を調整し、他のレベルのコントローラーが、個々の各組の計算デバイスにおいて個々の計算デバイス間における共有を調整する。
[0008] 更に他の実施形態では、ローカルに実行するプロセスが、リモート計算デバイス上の物理メモリーによってサポートされる、ローカル・アドレス可能メモリー名前空間の一部にアクセスしようとする場合、このようなアクセスを検出する、またはこのようなアクセスにフラグを立てることができ、このような要求を発生するタスクの実行は、データーのリモート・アクセスの完了まで保留することができる。このような保留は、このようなリモート・メモリー動作の効率に合わせて変更することができ、現在の仮想メモリー動作よりも数桁高速化することができる。
[0009] 更に他の実施形態では、メモリーを共有する個々の計算デバイスのオペレーティング・システムは、共有されるこのようなメモリーの記憶量を調節する機能、およびこのようなプロセスが実行している計算デバイスから離れているメモリーによってサポートされる記憶容量を、このような計算デバイス上で実行するプロセスのプロセス空間にマッピングする機能を含むことができる。
[0010] この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために使用されることを意図するのでもない。
[0011] 更に他の特徴および利点は、添付図面を参照して進められる以下の詳細な説明から明らかになるであろう。
[0012] 以下の詳細な説明は、添付図面と合わせて検討することによって、最良に理解することができる。
図1は、メモリー共有環境例のブロック図である。 図2は、メモリー共有を可能にするアーキテクチャ例のブロック図である。 図3aは、メモリー共有メカニズム例の流れ図である。 図3bは、メモリー共有メカニズム例の流れ図である。 図4は、汎用計算デバイス例を示すブロック図である。
[0017] 以下の説明は、ネットワークを介したメモリー共有に関する。ネットワークを介してというように、互いに通信可能に結合された計算デバイス間において、メモリーを共有することができる。各計算デバイスは、リモート・メモリー・インターフェース(RMI)を含むことができる。リモート・メモリー・インターフェースは、メモリー管理機能をローカルに実行するプロセスに提供することができ、ローカルに実行するプロセスからのコマンドを受け入れ、これらのコマンドを、ローカル・アドレス可能メモリー名前空間に送り出し、次いで、このようなコマンドを、リモート計算デバイスへの通信接続を介して送信可能な形態に変換する。また、RMIは、それに宛てられるリモート通信を受け入れ、これらの通信を、ローカル・メモリーを対象とするコマンドに変換することもできる。共有されるメモリー量は、集中コントローラー、1つのコントローラー、またはコントローラーの階層的集合体のいずれかによって通知することができ、あるいはメモリー共有を実行する個々の計算デバイス間におけるピア・ツー・ピア・ネゴシエーションによって通知することができる。実際にリモート・メモリーに格納されているデーターにアクセスする要求を検出する、またはこの要求にフラグを立てることができ、このような要求を発生するタスクの実行を保留し、リモート・メモリー・アクセスの効率に適した様態で、効率的に回復させるようにすることができる。オペレーティング・システムは、ローカルに実行するアプリケーションに、ローカル・アドレス可能メモリー名前空間を供給することができる。ローカル・アドレス可能メモリー名前空間は、1つ以上のリモート計算デバイスの物理メモリーによって実際にサポートされる容量を含む。このようなオペレーティング・システムのメカニズムは、多数の計算デバイス間において共有に利用可能なメモリー量を調節することもできる。
[0018] 本明細書において説明する技法は、特定のタイプの計算リソースの共有を引き合いに出す。具体的には、説明するメカニズムは、「メモリー」の共有を対象とする。本明細書において利用する場合、「メモリー」という用語は、ローカル・アドレス可能メモリー名前空間を介して、中央処理ユニット上で実行する命令に直接アクセス可能なデーターの格納をサポートする任意の物理記憶媒体を意味する。本明細書において定義される場合の「メモリー」という用語の例には、限定ではなく、ランダム・アクセス・メモリー(RAM)、ダイナミックRAM(DRAM)、スタティックRAM(SRAM)、サイリスターRAM(T−RAM)、ゼロ・キャパシターRAM(Z−RAM)、およびツイン・トランジスターRAM(TTRAM)が含まれる。このような例の列挙は限定されないが、「メモリー」という用語の定義を、以上で規定したこと以上に広げることも意図していない。特に、「メモリー」という用語は、本明細書において利用する場合、記憶名前空間またはファイル・システムを介してアクセス可能なデーターを格納する記憶媒体を特定的に除外する。
[0019] 必須ではないが、以下の説明の態様は、計算デバイスによって実行される、プログラム・モジュールのような、コンピューター実行可能命令という一般的なコンテキストにおいて行われる。更に具体的には、説明の態様は、別段指示がなければ、1つ以上の計算デバイスまたは周辺機器によって実行される動作(operation)のアクト(act)および象徴的表現を参照する。したがって、このようなアクトおよび動作は、場合によってはコンピューターによって実行されると言われることもあり、構造化形態でデーターを表現する電子信号の処理ユニットによる操作を含む。この操作は、データーを変形するか、またはそれをメモリー内の位置に維持し、当業者にはよく理解される方法で、計算デバイスまたは周辺機器の動作を再構成するか、またそうでなければ変化させる。データーが維持されるデーター構造は、データーのフォーマットによって定められる特定のプロパティを有する物理位置である。
[0020] 一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データー構造等を含み、特定のタスクを実行するか、または特定の抽象データー型を実装する。更に、計算デバイスは、従来のサーバー計算ラックや従来のパーソナル・コンピューターに限定される必要はなく、他の計算構成を含むことは、当業者には認められよう。他の計算構成には、ハンドヘルド・デバイス、マルチプロセッサー・システム、マイクロプロセッサー・ベースまたはプログラマブル消費者用電子機器、ネットワークPC、ミニコンピューター、メインフレーム・コンピューター等が含まれる。同様に、計算デバイスは、単体計算デバイスに限定される必要もない。何故なら、本メカニズムは、通信ネットワークを介してリンクされた分散型計算環境においても実施することができるからである。分散型計算環境では、プログラム・モジュールはローカルおよびリモート双方の記憶デバイスに配置されてもよい。
[0021] 図1を参照すると、計算デバイスのネットワーク190を含むシステム例100が示されている。以下の説明に対して基準の一例を設けるために、サーバー計算デバイス110、120、および130の形態である3つのサーバー計算デバイスが、ネットワーク190を介して互いに通信可能に結合されていることが示されている。サーバー計算デバイス110、120、および130の各々は、コンピューター実行可能命令を実行することができる処理ユニットを含むことができる。このようなコンピューター実行可能命令の実行中、処理ユニットによってデーターをメモリーに格納することができる。実行されるコンピューター実行可能命令に応じて、メモリーに格納することが望まれるデーター量が、サーバー計算デバイス上にインストールされた物理メモリーの記憶容量よりも大きくなる可能性がある。このような場合、通例、仮想メモリー・メカニズムが利用され、これによって、あるデーターがメモリーから、ハード・ディスク・ドライブのような、もっと遅い不揮発性記憶媒体に「スワップ」(swap)される。このようにして、より多くのメモリー容量が利用可能になる。メモリーからディスクにスワップされたデーターを、実行中のプロセスによってメモリーから読み出そうとすると、ページ・フォールトが発生する可能性がある。このようなデーターは、遅い方のディスクから読み出され再度メモリーに格納され、次いでメモリーから処理ユニットに供給することができるが、その間、処理は一時的に中断される可能性がある。当業者には認められようが、このようなプロセスは、特にサーバー計算のコンテキストにおいて、望ましくない可能性がある遅延を生ずるおそれがある。
[0022] 図1のシステム例100は、サーバー計算デバイス130にジョブ140が割り当てられ、ジョブ140は、処理機能を実行するために、サーバー計算デバイス130を必要とする可能性がある実施形態を示す。更に具体的には、サーバー計算デバイス130の中央処理ユニット(CPU)132のような、1つ以上の処理ユニットが、ジョブ140に関連するコンピューター実行可能命令を実行することができる。通例、ジョブ140に関連するコンピューター実行可能命令の実行は、サーバー計算デバイス130のメモリー135のような、メモリーにおけるデーターの格納を必要とする可能性がある。以下の説明に限って、ジョブ140に関連するコンピューター実行可能命令が必要とする可能性があるメモリー量は、メモリー135の量を超過する可能性がある、また更に正確には、ジョブ140の処理に割り当てることができるメモリー135のメモリー記憶容量を超過する可能性があるとする。
[0023] 図1に示す実施形態では、サーバー計算デバイス130のCPU132は、ジョブ140に関連するコンピューター実行可能命令を実行している可能性があり、メモリー135にデーターを格納し、そこからデーターを引き出すために、MMU133のような、1つ以上のメモリー管理ユニット(MMU)と通信することができる。当業者には認められようが、データーをメモリー135に格納するためには格納(STORE)命令を利用することができ、メモリー135からデーターを読み出してCPU132の1つ以上のレジスターにそれをロードするためにはロード(LOAD)命令を利用することができる。別々に示されているが、MMU133は、多くの場合、CPU132の一体部分である。先に示したように、ジョブ140に関連する実行可能命令を実行するときに、CPU132が、それに割り当てられたメモリー容量を超えるメモリーに追加のデーターを格納しようとする場合、一実施形態では、このような追加のメモリー容量は、リモート・メモリー・インターフェース(RMI)131の機能によって、ローカル・アドレス可能メモリー名前空間の一部として入手可能にすることができる。更に特定すれば、コンピューター実行可能命令によるローカル・アドレス可能メモリー名前空間の一部にアクセスする試みは、このようなアクセスをRMI131に送り出させることができる。RMI131は、このようなアクセスをネットワーク通信に変換し、例えば、サーバー計算デバイス110および120の内の1つのような、他の異なる計算デバイスと通信することができ、それによって、計算デバイス130上で実行するプロセスのために、このような他の計算デバイス上にインストールされた物理メモリーを利用することができる。
[0024] つまり、一実施形態では、リモート・メモリー・インターフェース131は、CPU132およびそれによって実行されるコンピューター実行可能命令の観点からは、MMU133のようなメモリー管理ユニットとして機能することができる。例えば、メモリー・ページ・テーブル、または他の同様のメモリー・インターフェース・メカニズムが、リモート・メモリー・インターフェース131と関連付けることができる特定のページまたは特定のアドレス範囲のような、ローカル・アドレス可能メモリー名前空間の特定部分を識別することができる。ローカル・アドレス可能メモリー名前空間のこれらの部分を対象とするロード命令または格納命令、あるいは他の同様の命令を、リモート・メモリー・インターフェース131に宛てることができる。つまり、サーバー計算デバイス130によって実行されるプロセスによって利用可能なローカル・アドレス可能メモリー名前空間は、物理メモリー135よりも大きいことが可能である。何故なら、リモート・メモリー・インターフェース131は、例えば、サーバー計算デバイス120のメモリー125、またはサーバー計算デバイス110のメモリー115のような、リモート計算デバイスのメモリーを利用して、計算デバイス130上において、拡大したメモリー名前空間をサポートできるからである。
[0025] このような実施形態では、計算デバイス130において、リモート・メモリー・インターフェース131によってサポートされるローカル・メモリー名前空間の部分を対象とするコマンドを受けたとき、リモート・メモリー・インターフェース131は、このコマンドを、サーバー計算デバイス110および120のような、1つ以上の他の計算デバイスにネットワーク190を介して通信することができるフォーマットに変換することができる。例えば、リモート・メモリー・インターフェース131は、ネットワーク190によって利用されるネットワーク・プロトコルによって定められたパケット構造にしたがって、メモリーをパケット化することができる。他の例として、リモート・メモリー・インターフェース131は、例えば、サーバー計算デバイス120のリモート・メモリー・インターフェース121、またはサーバー計算デバイス110のリモート・メモリー・インターフェース111のような、特定の計算デバイスのリモート・メモリー・インターフェースに通信を宛てるために、ネットワーク190によって使用されるプロトコルによって指令される通りに、しかるべきネットワーク・アドレシング情報および他の同様のルーティング情報を生成することができる。
[0026] 続いて、これら他の計算デバイス上のリモート・メモリー・インターフェースは、これらに宛てられたネットワーク通信を受信すると、これらのネットワーク通信をしかるべきメモリー中心コマンド(memory-centric command)に変換し、このようなネットワーク通信を受信したリモート・メモリー・インターフェースと同じ計算デバイス上に物理的に存在するメモリー上でこのようなコマンドを実行することができる。例えば、リモート・メモリー・インターフェース131から通信を受信すると、サーバー計算デバイス120上のリモート・メモリー・インターフェース121は、メモリー125の部分126に関するアクションを実行することができる。メモリー125の部分126は、以下で更に詳しく説明するように、他の計算デバイスと共有するために取り置きされている可能性がある部分とすることができる。同様に、サーバー計算デバイス110上のリモート・メモリー・インターフェース111は、サーバー計算デバイス130のリモート・メモリー・インターフェース131からの、ネットワーク190を介した、通信を受信したことに応答して、サーバー計算デバイス110のメモリー115の部分116に関するアクションを実行することができる。別個の物理部分として示されているが、メモリー115および125の部分116および125は、それぞれ、メモリー115および125のメモリー記憶容量の一部が、これらの計算デバイスのリモート・メモリー・インターフェース、即ち、それぞれリモート・メモリー・インターフェース111および121による利用のために保存されることを図式的に例示することを意図するに過ぎない。当業者には認められようが、ローカル・アドレス可能メモリー名前空間をサポートするメモリー115および125の、トランジスターのような、実際の物理データー記憶ユニットと、リモート・メモリー・インターフェース111および121それぞれによる利用のために保存されるメモリー記憶容量を提供する記憶ユニットとの間には、明確な境界が存在する必要はない。
[0027] 更に説明すると、例えば、ジョブ140を実行するとき、サーバー計算デバイス130のCPU132が、メモリー管理ユニット133ではなく、リモート・メモリー・インターフェース131によってサポートされるローカル・アドレス可能メモリー名前空間の一部にデーターを格納しようとした場合、このような要求をリモート・メモリー・インターフェース131に宛てることができ、次いで、リモート・メモリー・インターフェース131は、この要求をネットワーク通信に変換することができ、このネットワーク通信を、サーバー計算デバイス120上のリモート・メモリー・インターフェース121、およびサーバー計算デバイス110上のリモート・メモリー・インターフェース111に宛てることができる。このようなネットワーク通信を受信すると、リモート・メモリー・インターフェース121は、このネットワーク通信をデーター格納要求に変換することができ、次いでサーバー計算デバイス120のメモリー125の部分126へのデーターの格納を実行することができる。同様に、このようなネットワーク通信を受信すると、リモート・メモリー・インターフェース111もこのネットワーク通信をデーター格納要求に変換することができ、サーバー計算デバイス120のメモリー115の部分116へのそのデーターの格納を実行することができる。このように、サーバー計算デバイス130上で実行するプロセスによってアドレス可能であるメモリー名前空間は、サーバー計算デバイス130上に存在するメモリー135よりも大きくなることができる。更に特定すれば、そして以下で更に詳しく説明するように、サーバー計算デバイス120のメモリー125の部分126、およびサーバー計算デバイス110のメモリー115の部分116のような、他の計算デバイスからの共有メモリーは、例えば、ジョブ140に関連するプロセスのような、サーバー計算デバイス130上で実行するプロセスによってアドレス可能であるメモリー名前空間をサポートすることができ、これによって、このようなプロセスが実行しているサーバー計算デバイス130上のメモリー135から入手可能であるメモリーよりも多いメモリーを、このようなプロセスが利用することを可能にする。
[0028] 一実施形態では、共有のために利用可能とされるメモリー記憶容量の量は、メモリー共有コントローラー170のような、集中メカニズムによって調整することができる。例えば、メモリー共有コントローラー170は、サーバー計算デバイス例110、120、および130のような、計算デバイスから情報を受信し、このような受信した情報に基づいて、共有のために利用可能にすべきサーバー計算デバイス110、120、および130のメモリー記憶容量の量を決定することができる。例えば、メモリー共有コントローラー170は、サーバー計算デバイス120に、そのメモリー125の部分126を共有のために利用可能にするように命令することができる。同様に、メモリー共有コントローラー170は、サーバー計算デバイス110に、そのメモリー115の部分116を共有のために利用可能にするように命令することができる。応答して、サーバー計算デバイス110および120のオペレーティング・システムまたは他の同様のメモリー・コントローラー・プロセスが、メモリー115および125それぞれの部分116および126をそれぞれ取り置きし、これらのサーバー計算デバイス上でローカルに実行するプロセスには、これらの部分を利用しないようにすることができる。更に特定すれば、ローカル・アドレス可能メモリー名前空間を、リモート・メモリー・インターフェースによる利用のために保存され、これによって、リモート計算デバイス上で実行するプロセスによって共有されるメモリー記憶容量から明確に分けるために、メモリーの特定のページ、メモリーの特定のアドレス、または他の同様の識別子を利用することができる。つまり、例えば、サーバー計算デバイス120上で実行するプロセスによって利用することができる、ローカル・アドレス可能メモリー名前空間を、共有のために取り置かれた部分126を除くメモリー125の部分によってサポートすることができる。同様に、サーバー計算デバイス1110上で実行するプロセスによって利用することができるローカル・アドレス可能メモリー名前空間を、部分116を除くメモリー115の部分によってサポートすることができる。
[0029] サーバー計算デバイス例110、120、および130のような、計算デバイスからのメモリー共有コントローラー170によって受信された情報は、このような計算デバイス上に物理的にインストールされているメモリーの総量、またそうでなければこのような計算デバイスに入手可能なメモリーの総量を指定する情報、現在利用されているメモリー記憶容量の量、所望のメモリー記憶容量の量、および他の同様の情報を指定する情報を含むことができる。このような情報に基づいて、メモリー共有コントローラー170は、サーバー計算デバイス110、120、および130の各々によって共有のために利用可能にされるべきメモリー記憶容量の量を識別することができる。一実施形態では、メモリー共有コントローラー170は、サーバー計算デバイス110、120、および130にしかるべく命令することができ、一方、他の実施形態では、メモリー共有コントローラー170は単に要求を発行することもでき、個々の計算デバイスのオペレーティング・システムまたは他の同様の制御メカニズムは、この要求を受け入れることもまたは無視することもできる。
[0030] 一実施形態では、メモリー共有コントローラー170は、共有されるメモリー記憶容量の量を連続的に調節することができる。このような実施形態では、個々の計算デバイスのオペレーティング・システムまたは他の同様の制御メカニズムは、ローカル・アドレス可能メモリー名前空間のサイズを動的にランタイム中に変更できるメカニズムを含むことができる。例えば、サーバー計算デバイス130によるジョブ140の実行が、メモリーに対する要求増大になる可能性がある。応答して、サーバー計算デバイス130上で実行するプロセスは、メモリー共有コントローラー170と通信することができ、追加の共有メモリーを要求することができる。次いで、メモリー共有コントローラー170は、一例として、サーバー計算デバイス110が、共有のために利用可能にしたメモリー115の部分116を増大することを要求することができる。応答して、一実施形態では、サーバー計算デバイス110上で実行するオペレーティング・システムまたは他の同様の制御メカニズムは、サーバー計算デバイス110上でローカルに実行するプロセスに既に割り当てられたメモリー115の部分に格納されているデーターをスワップし、このようなデーターを、例えば、ディスク・ドライブに格納することができる。続いて、メモリー115のこれらの部分を、共有に利用可能である部分に追加することができ、これによって、共有に利用可能である部分116を増大させ、サーバー計算デバイス130上におけるジョブ140の実行によって増大した要求に対処する。次いで、サーバー計算デバイス110上でローカルに実行するプロセスが、このようなプロセスに既に割り当てられ、その後共有されている部分116に再度割り当てられたメモリー115の部分にアクセスしようとした場合、ページ・フォールトが発生する可能性があり、メモリー115の他の部分から他のデーターをディスクに移動させるために仮想メモリー・メカニズムを利用することができ、これによって、以前にスワップされてディスクに出されたデーターをメモリー115にスワップして戻すための余裕を作る。
[0031] 他の実施形態では、共有専用にされる個々の計算デバイスのメモリーの部分のその調節において、メモリー共有コントローラー170を制限することができる。例えば、メモリー共有コントローラー170は、例えば、計算デバイスが再起動している間、または計算デバイスが他のタスクの実行を中断した時間期間の間というような、定められた時間期間の間だけ、任意の特定の計算デバイスによって共有されるメモリーの量を調節できるのでもよい。
[0032] メモリー共有コントローラー170は、1つのデバイスとして示されているが、階層的手法も利用することができる。例えば、メモリー共有コントローラー170は、一般にデーター・センターにおいて見られるように、サーバー計算デバイスの1つのラック内というような、物理的に同じ位置に設けられたサーバー計算デバイス例110、120、および130のような、前述したサーバー計算デバイスへの共有メモリーの制御を行うことを専用にすることができる。そして、他の異なるメモリー共有コントローラーが、例えば、データー・センターにおける他のラックのサーバー計算デバイス間というような、他の1組の計算デバイス間における共有メモリーの制御を行うことを専用にすることができる。次いで、更に高いレベルのメモリー共有コントローラーが、サーバー計算デバイスの特定のラックに割り当てられた個々のメモリー共有コントローラーを制御することができる。例えば、ラック・レベルのメモリー共有コントローラーは、1つのラック内にあるサーバー計算デバイス間におけるメモリーの共有を制御することができ、一方データー・センター・レベルのメモリー共有コントローラーは、サーバー計算デバイスのラック間におけるメモリーの共有を制御することができ、ラック・レベルのメモリー共有コントローラーに、個々のサーバー計算レベルでのこのような共有の実施を任せる。
[0033] 更に他の実施形態では、メモリー共有コントローラー170は別個のプロセスまたはデバイスである必要はなく、むしろ、例えば、サーバー計算デバイス110、120、および130のような、それらのメモリーを共有する計算デバイス間におけるピア・ツー・ピア通信によって実現することもできる。更に特定すれば、サーバー計算デバイス110、120、および130の各々において個々に実行するプロセスが互いに通信することができ、サーバー計算デバイス110、120、および130の各々の共有されるメモリー115、125、および135の量をそれぞれネゴシエートすることができる。このようにローカルに実行するプロセスは、次いで、ネゴシエートされ同意された共有を実現するために、オペレーティング・システムのメモリー管理機能に関連するプロセスのような、他のプロセスに命令することができる。
[0034] 図2に移ると、そこに示されるシステム200は、リモート・メモリー・インターフェースの動作例を更に詳しく検証する一連の通信例を示す。説明の目的に限って、サーバー計算デバイス130の処理ユニット132が、ジョブ140に関連するコンピューター実行可能命令を実行するものとして示される。このようなコンピューター実行可能命令の実行の一部として、CPU132は、サーバー計算デバイス130上に物理的にインストールされたメモリー135によって表されるようなメモリーに、データーを格納するまたはこのメモリーからデーターを引きだそうとすることがある。図2のシステム200において、ローカル・アドレス可能メモリー名前空間231が示され、当業者には理解されるであろうが、計算デバイス130のCPU132上で実行するプロセスによって直接アクセスすることができるメモリーを含む。一実施形態では、そして以下で更に詳しく説明するように、ローカル・アドレス可能メモリー名前空間231は、ローカルにインストールされたメモリー135によってサポートすることができる部分234と、リモート・メモリー・インターフェース135によってサポートすることができる部分とを含むことができる。例えば、計算デバイス130が、16GBのローカル・インストール・メモリーを含む場合、ローカル・アドレス可能メモリー名前空間231の部分234も約16GBとすることができる。同様に、ローカル・アドレス可能メモリー名前空間231の部分235が4GBである場合、本明細書において説明するメカニズムによってサポートすることができる、リモート計算デバイス上の共有メモリーは、4GBにすることができる。
[0035] データーをメモリーに格納するために、CPU132は、周知の格納コマンドのような、しかるべきコマンドを発行することができ、このコマンドは1つ以上のメモリー管理ユニット133が受けることができる。一方、メモリー管理ユニット133は、メモリー135とインターフェースし、CPU132によって供給されたデーターを、物理メモリー135におけるしかるべき記憶位置、アドレス、ページ、または同様の記憶単位に格納することができる。同様に、高速揮発性記憶媒体からデーターを引き出すために、CPU132は、周知のロード・コマンドのような、他のしかるべきコマンドを発行することができ、このコマンドはMMU133によって受け取られることができる。一方、MMU133は、図1に示した物理メモリー135とインターフェースして、CPUによって要求されたデーターを該当する記憶位置から引き出し、ジョブ140に関連するコンピューター実行可能命令の実行の一部として、CPU132による更なる消費のために、CPU132のレジスター内にこのようなデーターをロードすることができる。CPU132によって発行される格納コマンドおよびロード・コマンドが、ローカル・インストール・メモリー135によってサポートされるローカル・アドレス可能メモリー名前空間231の部分234を対象とする範囲では、このような格納およびロード・コマンド、ならびにメモリー135に対して結果的に行われる動作は、通信221および222によって図2のシステム200において図式的に表されるように、メモリー管理ユニット233によって管理することができる。
[0036] 一実施形態では、ローカル・アドレス可能メモリー名前空間231は、計算デバイス130上にインストールされたメモリーよりも大きいことが可能である。このような実施形態では、ジョブ例140のような、計算デバイス130上で実行するプロセスは、より大きなローカル・アドレス可能メモリー名前空間231に直接アドレスすることができ、その部分をこれらのプロセスのプロセス空間にマッピングさせることができる。このようなより大きなローカル・アドレス可能メモリー名前空間231は、サーバー計算デバイス130上にインストールされたメモリー135だけでなく、他の異なる計算デバイス上に物理的にインストールされた、メモリー125のような、リモート・メモリーによってもサポートすることができる。しかしながら、計算デバイス130上で実行するプロセスは、ローカル・アドレス可能メモリー名前空間231によってどの物理メモリーが実際に表されるかについては、不可知論的であることが可能である。
[0037] 例えば、ジョブ140に関連するコンピューター実行可能命令は、CPU132上で実行する間、ローカル・アドレス可能メモリー名前空間231の部分235にデーターを格納しようとする。示されるように、このようなコンピューター実行可能命令は、ローカル・アドレス可能メモリー名前空間231のいずれの他の部分と同様に、ローカル・アドレス可能メモリー名前空間231を認識する。次いで、CPU132は、以上で説明した格納コマンドのような、部分235の一部であるローカル・アドレス可能メモリー名前空間231のある部分を識別するアドレス、ページ、または同様の位置識別子を指定する、しかるべきコマンドを発行することができる。このようなコマンドは、MMU133に宛てられるのではなく、代わりに、リモート・メモリー・インターフェース131に宛てることができる。例えば、変換索引バッファ(TLM)または他の同様のテーブル、あるいはデーターベースを参照して、CPU132によって発行されたメモリー中心コマンドによって指定された位置識別子が、部分234ではなく部分235の一部であり、したがって、このようなコマンドをリモート・メモリー・インターフェース131に宛てることができると判断することができる。図2のシステム例200では、このようなコマンドは、CPU132からリモート・メモリー・インターフェース131への通信223によって示される。
[0038] このようなコマンドを受けると、リモート・メモリー・インターフェース131は、このようなコマンドを、ネットワーク通信241のような、ネットワーク通信に変換し、これらのネットワーク通信を、例えば、サーバー計算デバイス120のリモート・メモリー・インターフェース121のような、1つ以上の他の計算デバイス上のリモート・メモリー・インターフェースにアドレスすることができる。コマンド223をネットワーク通信241に変換するとき、リモート・メモリー・インターフェース131はコマンドをパケット化することができ、またそうでなければ、ネットワーク10を実現するために利用されたプロトコルに適したネットワーク通信を生成することができる。例えば、ネットワーク190がイーサネット(登録商標)・ハードウェアを利用して実現される場合、リモート・メモリー・インターフェース131は、単位がイーサネット(登録商標)の最大通信単位を超えないネットワーク通信を生成することができる。同様に、ネットワーク190が送信制御プロトコル/インターネット・プロトコル(TCP/IP)を利用して実現される場合、リモート・メモリー・インターフェース131は、TCP/IPヘッダを有し、リモート・メモリー・インターフェース121のIPアドレスをそれらの宛先として指定することができるパケットを生成することができる。他の同様の変換も、ネットワーク190を実現するために利用されたプロトコルに応じて実行することができる。
[0039] 一旦ネットワーク通信241が、これらが宛てられた先のサーバー計算デバイス120のリモート・メモリー・インターフェース121によって受信されたなら、リモート・メモリー・インターフェース121は、このようなネットワーク通信241をしかるべきメモリー中心コマンド251に変換することができ、このメモリー中心コマンド251を、サーバー計算デバイス120上にインストールされたメモリー125を対象にすることができる。更に特定すれば、リモート・メモリー・インターフェース121は、ネットワーク通信241をパケット分解(un-packetize)することができ、メモリー125の部分126における1つ以上のアドレスに対してしかるべきメモリー中心コマンド251を生成することができる。メモリー125の部分126は、既に共有可能メモリーとして取り置きされており、したがって、例えば、計算デバイス120のメモリー管理単位ではなく、リモート・メモリー・インターフェース121の制御下に入ることができ、したがって、計算デバイス120上で実行するプロセスに利用可能にされたローカル・アドレス可能メモリー名前空間から除外することができる。
[0040] メモリー中心コマンド251に応答して、リモート・メモリー・インターフェース121は、コマンド251が格納コマンドであったときには、承認を受信することができ、コマンドがロード・コマンドであった場合には、要求したデーターを受信することができる。このような応答は、図2のシステム200において、メモリー125の部分126からリモート・メモリー・インターフェース121への通信252によって示される。応答通信252を受信すると、リモート・メモリー・インターフェース121はそれらをネットワーク通信252に変換することができ、通信241を送信したリモート・メモリー・インターフェース131に、ネットワーク通信242を宛てることができる。リモート・メモリー・インターフェース131を参照して先に詳細に説明したように、リモート・メモリー・インターフェース121は、通信252をネットワーク通信242に変換するとき、ネットワーク190を実現するために利用されたプロトコルにしたがって、通信252をネットワーク通信242にパケット化する、パッケージ化する、フォーマットする、またそうでなければ変換することができる。
[0041] リモート・メモリー・インターフェース131がネットワーク通信242を受信すると、それをパケット分解し、通信225によって示されるように、CPU132に対してしかるべき応答を生成することができる。更に特定すれば、CPU132からの通信223が格納コマンドであった場合、通信225は、データーが適正に格納されたことの承認とすることができるが、本例では、このような承認は、データーが実際にはサーバー計算デバイス120のメモリー125の部分126に適正に格納されたことの承認となる。同様に、CPU132からの通信223がロード・コマンドであった場合、通信225は、CPU132がそのレジスターの1つ以上にロードすることを要求したデーター、即ち、本例では、メモリー125の部分126から読み出されたデーターとすることができる。
[0042] このように、サーバー計算デバイス130上で実行するプロセスは、それらの知識がなくても、そしてこのようなプロセス自体に対する変更を全くすることなく、例えば、計算デバイス120のメモリー125のような、他の計算デバイス上にインストールされたメモリーを利用することができる。更に特定すれば、リモート・メモリー・インターフェース131は、メモリーと通信するメモリー管理ユニットとして機能し、サーバー計算デバイス130上で実行するプロセスによって直接アドレスすることができる、ローカル・アドレス可能メモリー名前空間231の一部であるように見える。
[0043] コマンド223の受信と応答225の供給との間のレイテンシーを低減するために、一実施形態では、リモート・メモリー・インターフェース131が、サーバー計算デバイス130の一部であるネットワーキング・ハードウェアと直接通信することができる。例えば、リモート・メモリー・インターフェース131は、サーバー計算デバイス130のネットワーク・インターフェースへの直接接続を含む専用プロセッサーであることが可能である。このような専用プロセッサーは、周知のメモリー管理ユニット・プロセッサー(MMU)に類似することができ、単体プロセッサーとすることができ、または1つ以上のCPUというような他のプロセッサーと統合することもできる。また、リモート・メモリー・インターフェース121も、サーバー計算デバイス120のネットワーク・インターフェースへの直接接続を含む専用プロセッサーであることが可能であり、これによって通信の他端におけるレイテンシーを低減する。
[0044] 他の実施形態では、リモート・メモリー・インターフェース131によって設けられると以上で説明した機能は、サーバー計算デバイス130上で実行するオペレーティング・システムまたはユーティリティにおいて実現することができる。同様に、リモート・メモリー・インターフェース121によって設けられると以上で説明した機能も同様に、サーバー計算デバイス120上で実行するオペレーティング・システムまたはユーティリティにおいて実現することができる。このような実施形態では、このようなリモート・メモリー・インターフェースによって生成されそれに宛てられる通信は、少ないネットワーク・スタックを通過し、レイテンシーを低減することができる。例えば、このようなリモート・メモリー・インターフェースを表すコンピューター実行可能命令に、内蔵ドライバまたは該当する機能を有することによってというようにして、ネットワーキング・ハードウェアへの直接アクセスを設ける。
[0045] 当業者には認められようが、以上で説明したメカニズムは、従前からの仮想メモリー・メカニズムとは異なり、データーがメモリーからスワップされる記憶媒体の交換に過ぎない。したがって、応答225は、従前からの仮想メモリーのコンテキストで可能であったよりも遙かに素早く供給することができるので、軽量保留および再開(lightweight suspend and resume)を、コマンド223のようなコマンドを発行する実行プロセスに適用することができる。更に特定すれば、そして当業者には認められようが、仮想メモリーのコンテキストでは、もはやメモリーには格納されていないデーターがそのようなメモリーに要求され、そのデーターが代わりにディスクにスワップされている場合、要求元プロセスの実行は、このようなデーターが遅い方のディスクからメモリーに戻されるまで、保留することができる。このようなスワップが完了すると、要求元プロセスを再開することができ、例えば、1つ以上の処理ユニットのしかるべきレジスターにロードすることによってというようにして、要求されたデーターをそれに供給することができる。しかし、以上で説明したメカニズムを使用すれば、遅い方のディスク媒体からスワップするときよりも、遙かに素早くデーターをリモート物理メモリーから得ることができる。これは、物理的にディスクがこのようなプロセスが実行している計算デバイスの一部であっても、当てはまる。したがって、より一層完全に保留された実行スレッドまたは他の同様の処理を再開するときの不必要な遅延を回避するために、軽量保留および再開を利用することができる。
[0046] 例えば、一実施形態では、コマンド223によって指定される、またはコマンド223が対象とするメモリー・アドレス、ページ、あるいは他の同様の位置識別情報に基づいて、コマンド223がアドレス可能なリモート・メモリー235を対象とすると判定することができる。このような実施形態では、コマンド223が、リモート・メモリーによってサポートされるローカル・アドレス可能メモリー名前空間231の部分235を対象とすると判定された場合、CPU132によって実行されるプロセスを保留状態に置くことができ、この状態から、従前の保留状態よりも素早く再開することができる。更に特定すれば、実行されつつあるプロセスは、それ自体で、実行中のプロセスによって指定されたメモリー位置に基づいて、コマンド223が部分235を対象とすると判断することができる。したがって、実行中のプロセスは、自動的にそれ自体を保留状態に置くことができ、この保留状態から、従前の保留状態よりも素早く再開することができる。あるいは、このような決定は、CPU132によって、または実行中のプロセスを自動的に保留状態に置く能力を有する他の同様のコンポーネントによって下すこともできる。
[0047] 他の実施形態では、リモート・メモリー・インターフェース131、または他のメモリー管理コンポーネントが、コマンド223が部分235を対象とすることを検出することができ、それにしたがって実行中のプロセスに通知することができる。更に特定すれば、そして既に示したように、コマンド223が対象とするメモリー位置を検出することができ、これらのメモリー位置から、コマンド223が部分235を対象とするのか否かについて判断することができる。コマンド223が部分235を対象とすると判断された場合、実行中のプロセスにまたはプロセス管理コンポーネントにというような、通知を生成することができる。このような通知に応答して、実行中のプロセスはそれ自体を保留状態に置くことができ、この保留状態から、従前の保留状態よりも素早く再開することができ、あるいは通知が実行中のプロセスに直接供給されたのか、またはプロセス管理コンポーネントに供給されたのかに応じて、保留状態に置くことができる。
[0048] 図3aおよび図3bに移ると、そこには流れ図301および302がそれぞれ示されており、物理的にリモート計算デバイス上にインストールされたメモリーを、ローカルに実行するプロセスによって利用することができる一連のステップ例を示す。まず図3aに進み、最初にステップ310において、ローカル・リモート・メモリー・インターフェースにアドレスされたネットワーク通信を受信することができる。一旦受信されると、これらのネットワーク通信は、ロード・コマンドまたは格納コマンドのような、しかるべきネットワーク中心コマンドに組み立てることができる。このような組立は、ステップ315の一部として行うことができ、既に示したように、種々の計算デバイス間の通信が確立されたネットワーク・プロトコルを想定して、該当するいずれのフォーマットからでも、ネットワーク通信のパッケージ分解を行うことを伴うことができる。ステップ320において、ローカル・メモリーを使用して、該当するコマンドを実行することができる。例えば、受信したコマンドが格納コマンドであり、特定のメモリー・アドレスにおいて開始してデーターを格納することを指定する場合、ステップ320において、あるアドレス、または受信したコマンドによって指定されたアドレスに相応する他の同様のメモリー位置から開始して、このようなデーターをローカル・メモリーに格納することができる。同様に、受信したコマンドがロード・コマンドであり、指定されたアドレスまたは他の同様のメモリー位置から開始してローカル・メモリーに格納されているデーターを要求する場合、ステップ320において、ローカル・メモリーの相応する位置に格納されているデーターを得ることができる。一実施形態では、受信したコマンドが、ローカル・メモリーと関連して利用されるアドレスを指定することができ、一方、他の実施形態では、受信したコマンドによって指定されるアドレスを、共有されるメモリーとして定められているアドレス、ページ、または他の位置の範囲にしたがって変換することができる。
[0049] ステップ320において要求されたコマンドを実行した結果、例えば、データーがローカル・メモリーに格納された場合には承認応答のような応答を得ることができ、またはローカル・メモリーから読み出すことが要求されたデーターを含む応答を得ることができる。このような応答は、ステップ325において受信することができる。ステップ330において、このような応答をネットワーク通信に変換することができ、次いでこのネットワーク通信を、ステップ310において受信されたネットワーク通信を送った計算デバイスのリモート・メモリー・インターフェースに宛てることができる。既に示したように、ステップ330における応答のネットワーク通信への変換は、他の計算デバイスとの通信が確立されたときに経由したネットワークによって履行されるネットワーク・プロトコルにしたがって、応答をパケット化することを含むことができ、例えば、しかるべきパケット・ヘッダを適用し、データーを最大送信単位に相応するサイズに分割し、しかるべきアドレシング情報を提供し、更に他の同様のアクションを含む。ネットワーク通信は、一旦生成されると、ステップ335において、ステップ310においてネットワーク通信を送信した計算デバイスのリモート・メモリー・インターフェースに送信することができる。次いで、ステップ340において、関連する処理を終了することができる。
[0050] 図3bに移り、類似する1組のステップがステップ350において開始することができ、ローカル・アドレス可能メモリー名前空間を対象とするロード・コマンドまたは格納コマンドのようなメモリー中心コマンドを、ローカル・プロセスから受信する。この要求は、ローカル・アドレス可能メモリー名前空間における1つ以上のアドレス、または他の同様の位置識別子を指定することができる。したがって、初期の事項として、一実施形態では、ステップ355において、ステップ350のメモリー中心コマンドによって指定されたアドレスが、先に詳細に説明したような、リモート・メモリー・インターフェースによってサポートされるアドレス範囲内に入るか否かについてチェックを行うことができる。ステップ355において、メモリー中心コマンドが、ローカルにインストールされたメモリーによってサポートされるローカル・アドレス可能メモリー名前空間のアドレス範囲内にあるアドレスを対象とする場合、リモート・メモリー共有に関連する処理は、流れ図302において示すように、ステップ385において終了することができる。しかしながら、逆に、ステップ355において、メモリー中心コマンドが、リモート・メモリー・インターフェースによってサポートされるローカル・アドレス可能メモリー名前空間のアドレス範囲内にあるアドレスを対象とすると判断された場合、処理はステップ360に進む。
[0051] ステップ360において、ステップ350において受けた要求の対象であったアドレスを、1つ以上のリモート計算デバイスの識別に変換することができる。このリモート計算デバイスのメモリーは、要求の対象であるデーターを格納するために使用される。更に特定すれば、一実施形態では、リモート・メモリー・インターフェースが格納コマンドを受信し、先に詳細に説明したようにしてというように、リモート計算デバイスのメモリーにデーターを格納する毎に、リモート・メモリー・インターフェースは、格納コマンドの対象となった、ローカル・アドレス可能メモリー名前空間のアドレスと、このようなデーターが最終的にメモリーに格納されるリモート計算デバイスの、ネットワーク・アドレスのような、識別子との間の関連を記録することができる。その後、ロード・コマンドが、ローカルに実行するプロセスから、ローカル・アドレス可能メモリー名前空間における同じアドレスに対して発行されると、リモート・メモリー・インターフェースは、以前に記録された関連を参照し、そのデーターを得るためにはどのリモート計算デバイスと通信すればよいか判定することができる。加えて、一実施形態では、ローカル・アドレス可能メモリー名前空間における特定のアドレスに宛てられた格納コマンドを最初に受信したとき、リモート・メモリー・インターフェースは、メモリー共有コントローラーによってリモート・メモリー・インターフェースに対して識別することができるリモート計算デバイスの共有メモリー内に、またはメモリー共有コントローラーによって識別された計算デバイスの中からリモート・メモリー・インターフェースによって選択することができる、リモート計算デバイスの共有メモリー内に、このようなデーターを格納しようとすることができる。一旦ステップ360においてリモート計算デバイスが識別されたなら、処理はステップ365に進むことができる。ステップ365において、ステップ350において受信した要求を、ステップ360において識別された計算デバイスの識別されたリモート・メモリー・インターフェースにアドレスすることができる、ネットワーク通信に変換することができる。既に示したように、このような変換は、ローカル計算デバイスと、メモリーを含むリモート計算デバイスとの間で通信が搬送されるネットワークによって利用されるプロトコルにしたがって要求をパケット化すること、およびそれ以外でデーター・ストリームを生成することを含むことができる。
[0052] ステップ365における送信に応答して、ステップ370において、ローカル計算デバイス上のリモート・メモリー・インターフェースに宛てられた応答ネットワーク通信を受信することができる。ステップ375において、これらのネットワーク通信を、先に詳細に説明したようにしてというように、ステップ350において受信した要求に対する応答に組み立てることができる。ステップ380において、このような応答を、ステップ350において受けられた要求を生成した実行中のプロセスに供給することができる。次いで、関連する処理はステップ385において終了することができる。
[0053] 図4に移ると、計算デバイス例が示されており、これは、以上で詳細に説明したメカニズムの一部を実行することができるような汎用計算デバイス、および以上で説明したスイッチのような、特殊目的計算デバイスの双方を含むことができる。計算デバイス例400は、1つ以上の中央処理ユニット(CPU)420、システム・メモリー430、およびシステム・メモリーから処理ユニット420までを含む種々のシステム・コンポーネントを結合するシステム・バス421を含むことができるが、これらに限定されるのではない。システム・バス421は、メモリー・バスまたはメモリー・コントローラー、周辺バス、および種々のバス・アーキテクチャーの内任意のものを使用するローカル・バスを含む、様々なタイプのバス構造の内任意のものでよい。具体的な物理的実施態様に依存して、CPU420、システム・メモリー430、および計算デバイス400の他のコンポーネントの内1つ以上を、単体チップ上のように、物理的に同じ場所に配置することができる。このような場合、システム・バス421の一部または全部は、単体チップ構造内部の通信経路と全く同様にすることができ、図4におけるその図示は、例示を目的とした表記上の都合に他ならない。
[0054] また、計算デバイス400は、通例、コンピューター読み取り可能媒体も含み、コンピューター読み取り可能媒体は、計算デバイス400によってアクセスすることができる任意の入手可能な媒体を含むことができる。一例として、そして限定ではなく、コンピューター読み取り可能媒体は、コンピューター記憶媒体および通信媒体を含むことができる。コンピューター記憶媒体は、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターというような情報の格納のためのいずれかの方法または技術で実現される媒体を含む。コンピューター記憶媒体は、RAM、ROM、EEPROM、フラッシュ・メモリーまたは他のメモリー技術、CD−ROM、ディジタル・バーサタイル・ディスク(DVD)または他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたは他の磁気記憶デバイス、または所望の情報を格納するために使用することができそして計算デバイス400によってアクセスすることができる他のあらゆる媒体を含む。しかしながら、コンピューター記憶媒体は、通信媒体を含まない。通信媒体は、通例、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターを、搬送波のような変調データー信号または他の移送メカニズムに具体化し、任意の情報配信媒体を含む。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続というような有線媒体と、音響、RF、赤外線、および他のワイヤレス媒体というようなワイヤレス媒体とを含む。以上の内任意のものの組み合わせも、コンピューター読み取り可能媒体の範囲に含まれてしかるべきである。
[0055] システム・メモリー530は、リード・オンリー・メモリー(ROM)431およびランダム・アクセス・メモリー(RAM)432のような、揮発性および/または不揮発性メモリーの形態としたコンピューター記憶媒体を含む。基本入力/出力システム433(BIOS)は、起動中におけるように、コンピューター400内部にあるエレメント間で情報を転送するのに役立つ基本的なルーチンを含み、通例ROM431に格納される。RAM432は、通例、処理ユニット420によって直ちにアクセス可能なデーターおよび/または現在処理ユニット420によって処理されているデーターおよび/またはプログラム・モジュールを含む。一例として、そして限定ではなく、図4は、オペレーティング・システム434、他のプログラム・モジュール435、およびプログラム・データー436を示す。
[0056] 通信媒体を使用するとき、計算デバイス400は、1つ以上のリモート・コンピューターへの論理接続を介して、ネットワーク接続環境において動作することができる。図4に示す論理接続は、ネットワーク190への汎用ネットワーク接続471であり、これはローカル・エリア・ネットワーク(LAN)、インターネットのようなワイド・エリア・ネットワーク(WAN)、またはその他のネットワークとすることができる。計算デバイス400は、ネットワーク・インターフェースまたはアダプター470を介して汎用ネットワーク接続471に接続され、一方、ネットワーク・インターフェースまたはアダプター470はシステム・バス421に接続される。ネットワーク接続環境では、計算デバイス400またはその一部または周辺部に関して図示したプログラム・モジュールは、汎用ネットワーク接続471を介して計算デバイス400に通信可能に結合された1つ以上の他の計算デバイスのメモリーに格納することもできる。尚、図示したネットワーク接続は一例であり、計算デバイス間に通信リンクを確立する他の手段を使用してもよいことは認められよう。
[0057] また、計算デバイス500は、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピューター記憶媒体も含むことができる。一例としてに過ぎないが、図4は、非リムーバブル、不揮発性媒体に対して読み取りおよび書き込みを行うハード・ディスク・ドライブ441を示す。この計算デバイス例と共に使用することができる他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピューター記憶媒体には、磁気テープ・カセット、フラッシュ・メモリー・カード、ディジタル・バーサタイル・ディスク、ディジタル・ビデオ・テープ、ソリッド・ステートRAM、ソリッド・ステートROM等が含まれる。ハード・ディスク・ドライブ441は、通例、インターフェース440のような非リムーバブル・メモリー・インターフェースを介して、システム・バス421に接続される。
[0058] 以上で論じ図4に示すこれらのドライブおよびそれに関連するコンピューター記憶媒体は、計算デバイス400のためのコンピューター読み取り可能命令、データー構造、プログラム・モジュール、および他のデーターの格納を行う。図4では、例えば、ハード・ディスク・ドライブ441は、オペレーティング・システム444、他のプログラム・モジュール445、およびプログラム・データー446を格納することが示される。尚、これらのコンポーネントは、オペレーティング・システム434、他のプログラム・モジュール435、およびプログラム・データー436と同一であること、または異なることもできることを注記しておく。オペレーティング・システム444、他のプログラム・モジュール445、およびプログラム・データー446は、ここでは、少なくともこれらが異なるコピーであることを示すために、異なる番号が与えられる。
[0059] 以上の説明から分かるように、多数の物理的に別個の計算デバイス間でメモリーを共有するメカニズムを紹介した。本明細書において説明した主題には多くの可能な変形があることを考慮して、以下の請求項およびその均等物の範囲に該当し得る全ての実施形態を本発明として、特許請求する。

Claims (10)

  1. 多数の計算デバイス間でメモリー記憶容量を共有する方法であって、
    第1計算デバイスにおいて、前記第1計算デバイス上で実行するプロセスから、前記第1計算デバイスのローカル・アドレス可能メモリー名前空間におけるメモリー・アドレスを指定するメモリー中心要求を受けるステップと、
    前記第1計算デバイスにおいて、前記指定されたメモリー・アドレスが、第2計算デバイス上にインストールされたメモリーによってサポートされると判断するステップと、
    前記第1計算デバイスにおいて、前記受けた要求を、前記第2計算デバイスに宛てられるネットワーク通信に変換するステップと、
    前記第1計算デバイスにおいて、前記第2計算デバイスからのネットワーク通信を受信するステップと、
    前記第1計算デバイスにおいて、前記第2計算デバイスから受信した前記ネットワーク通信を、前記要求に対する応答に変換するステップと、
    前記第1計算デバイスにおいて、前記プロセスに前記応答を供給するステップと、
    を含む、方法。
  2. 請求項1に記載の方法であって、更に、
    前記第2計算デバイスにおいて、前記第2計算デバイスに宛てられた前記ネットワーク通信を受信するステップと、
    前記第2計算デバイスにおいて、前記第2計算デバイスに宛てられた前記ネットワーク通信をメモリー中心要求に変換するステップと、
    前記第2計算デバイスにおいて、前記第2計算デバイス上にインストールされた前記メモリーの位置部分に対して前記メモリー中心要求を実行するステップと、
    前記第2計算デバイスにおいて、前記第2計算デバイス上にインストールされた前記メモリーの前記位置部分に対する前記メモリー中心要求の実行に対する応答を受けるステップと、
    前記第2計算デバイスにおいて、前記メモリー中心要求の実行に対する前記応答を、前記第2計算デバイスからの前記ネットワーク通信に変換するステップと、
    を含む、方法。
  3. 請求項1に記載の方法であって、更に、
    前記第1計算デバイスのメモリーにおいて、前記多数の計算デバイス間で共有される部分を識別するステップと、
    前記第1計算デバイスの前記メモリーの前記識別された部分が、前記第1計算デバイスの前記ローカル・アドレス可能メモリー名前空間の一部となることを禁止するステップと、
    を含む、方法。
  4. 請求項3に記載の方法において、前記識別するステップが、前記多数の計算デバイス間で前記メモリー記憶容量の共有を調整するメモリー共有コントローラーから受信される通信に応答して実行される、方法。
  5. 請求項3に記載の方法において、前記識別するステップが、前記多数の計算デバイス間におけるピア・ツー・ピア・ネゴシエーションに応答して実行される、方法。
  6. 請求項1に記載のステップを実行することを目的とするコンピューター実行可能命令を含む1つ以上のコンピューター読み取り可能媒体。
  7. 多数の計算デバイス間でメモリー記憶容量を共有するシステムであって、
    第1計算デバイスであって、
    第1ローカル・アドレス可能メモリー名前空間と、
    第1メモリーと、
    第1リモート・メモリー・インターフェースと、
    前記第1計算デバイス上で実行する第1プロセスと、
    を含む、第1計算デバイスと、
    前記第1計算デバイスとは物理的に別個である第2計算デバイスであって、
    第2オペレーティング・システムと、
    一部が前記システムの他の計算デバイスとの共有のために利用可能な第2メモリーであって、前記一部が前記第2オペレーティング・システムによってその境界が定められる、第2メモリーと、
    前記第2メモリーの前記一部に対して直接アクセスが可能な第2リモート・メモリー・インターフェースと、
    を含む、第2計算デバイスと、
    を含み、
    前記第1ローカル・アドレス可能メモリー名前空間が、前記第1計算デバイスの前記第1メモリーと、前記第2計算デバイスの前記第2メモリーの前記一部との双方によってサポートされる、システム。
  8. 請求項7に記載のシステムにおいて、前記第1リモート・メモリー・インターフェースが、
    前記第1プロセスから、前記第1ローカル・アドレス可能メモリー名前空間におけるメモリー・アドレスを指定するメモリー中心要求を受けるステップと、
    前記指定されたメモリー・アドレスが、前記第2メモリーの前記一部によってサポートされる前記第1ローカル・アドレス可能メモリー名前空間の一部に対応すると判断するステップと、
    前記受けた要求を、前記第2計算デバイスに宛てられるネットワーク通信に変換するステップと、
    前記第2計算デバイスからネットワーク通信を受信するステップと、
    前記第2計算デバイスから受信した前記ネットワーク通信を、前記要求に対する応答に変換するステップと、
    前記応答を前記第1プロセスに供給するステップと、
    を実行する、システム。
  9. 請求項7に記載のシステムであって、更に、第1メモリー共有コントローラーを含み、前記第1メモリー共有コントローラーが、共有のために利用される前記第1メモリーの一部と前記第2メモリーの前記一部とを決定する、システム。
  10. 第1計算デバイス上に物理的にインストールされたリモート・メモリー・インターフェースであって、
    前記計算デバイス上で実行するプロセスから、前記第1計算デバイスのローカル・アドレス可能メモリー名前空間におけるメモリー・アドレスを指定するメモリー中心要求を受けるステップであって、前記ローカル・アドレス可能メモリー名前空間が、前記第1計算デバイス上にインストールされた第1メモリーと、第2計算デバイス上にインストールされた第2メモリーの一部との双方によってサポートされる、ステップと、
    前記指定されたメモリー・アドレスが、前記第2計算デバイス上にインストールされた前記第2メモリーの前記一部に対応すると判断するステップであって、前記第2計算デバイスが、前記第1計算デバイスとは離れている、ステップと、
    前記受けた要求を、前記第2計算デバイスに宛てられるネットワーク通信に変換するステップと、
    前記第2計算デバイスからネットワーク通信を受信するステップと、
    前記第2計算デバイスから受信した前記ネットワーク通信を、前記要求に対する応答に変換するステップと、
    前記応答を前記プロセスに供給するステップと、
    を実行するように構成される、リモート・メモリー・インターフェース。
JP2016501760A 2013-03-15 2014-03-13 ネットワークを介したメモリー共有 Pending JP2016513846A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/831,753 2013-03-15
US13/831,753 US20140280669A1 (en) 2013-03-15 2013-03-15 Memory Sharing Over A Network
PCT/US2014/025145 WO2014151168A1 (en) 2013-03-15 2014-03-13 Memory sharing over a network

Publications (1)

Publication Number Publication Date
JP2016513846A true JP2016513846A (ja) 2016-05-16

Family

ID=50442697

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016501760A Pending JP2016513846A (ja) 2013-03-15 2014-03-13 ネットワークを介したメモリー共有

Country Status (12)

Country Link
US (1) US20140280669A1 (ja)
EP (1) EP2972917A1 (ja)
JP (1) JP2016513846A (ja)
KR (1) KR20150132432A (ja)
CN (1) CN105190581A (ja)
AU (1) AU2014235261A1 (ja)
BR (1) BR112015019796A8 (ja)
CA (1) CA2898664A1 (ja)
MX (1) MX354310B (ja)
RU (1) RU2015139097A (ja)
TW (1) TW201502801A (ja)
WO (1) WO2014151168A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104166628B (zh) * 2013-05-17 2018-05-18 华为技术有限公司 管理内存的方法、装置和系统
US20150271096A1 (en) * 2014-03-24 2015-09-24 Google Technology Holdings LLC Allocation of Client Device Memory for Content from Content Sources
US10110707B2 (en) 2015-12-11 2018-10-23 International Business Machines Corporation Chaining virtual network function services via remote memory sharing
US11861025B1 (en) 2018-01-08 2024-01-02 Rankin Labs, Llc System and method for receiving and processing a signal within a TCP/IP protocol stack
US11689543B2 (en) 2018-08-10 2023-06-27 Rankin Labs, Llc System and method for detecting transmission of a covert payload of data
US10880361B2 (en) * 2018-09-26 2020-12-29 Micron Technology, Inc. Sharing a memory resource among physically remote entities
US11197136B2 (en) * 2018-09-26 2021-12-07 Micron Technology, Inc. Accessing a memory resource at one or more physically remote entities
WO2020154223A1 (en) 2019-01-21 2020-07-30 John Rankin Systems and methods for processing network traffic using dynamic memory
WO2020214757A1 (en) 2019-04-17 2020-10-22 John Rankin Virtual memory pool within a network which is accessible from multiple platforms
US11061819B2 (en) 2019-05-28 2021-07-13 Micron Technology, Inc. Distributed computing based on memory as a service
US11334387B2 (en) 2019-05-28 2022-05-17 Micron Technology, Inc. Throttle memory as a service based on connectivity bandwidth
US11372773B2 (en) 2019-05-28 2022-06-28 Rankin Labs, Llc Supporting a virtual memory area at a remote computing machine
US11256624B2 (en) 2019-05-28 2022-02-22 Micron Technology, Inc. Intelligent content migration with borrowed memory
US11169930B2 (en) 2019-05-28 2021-11-09 Micron Technology, Inc. Fine grain data migration to or from borrowed memory
US11438414B2 (en) * 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections
US11100007B2 (en) 2019-05-28 2021-08-24 Micron Technology, Inc. Memory management unit (MMU) for accessing borrowed memory

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10276198A (ja) * 1997-03-28 1998-10-13 Mitsubishi Electric Corp 分散共有メモリネットワーク装置
JP2002229967A (ja) * 2001-02-01 2002-08-16 Nec Corp 計算機システム及びcpu・メモリ搭載装置並びに入出力制御装置
JP2003283532A (ja) * 2002-03-22 2003-10-03 Oki Electric Ind Co Ltd 通信ネットワークにおける貸リソースの設定処理方法及びその通信システム並びにプログラム

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6026474A (en) * 1996-11-22 2000-02-15 Mangosoft Corporation Shared client-side web caching using globally addressable memory
US5968170A (en) * 1997-04-23 1999-10-19 Advanced Micro Devices, Inc. Primary swap size increase on a UNIX based computer system
US5941972A (en) * 1997-12-31 1999-08-24 Crossroads Systems, Inc. Storage router and method for providing virtual local storage
US20030070065A1 (en) * 1999-03-31 2003-04-10 Fleming Bruce L. Suspending to nonvolatile storage
US6604148B1 (en) * 1999-10-01 2003-08-05 International Business Machines Corporation Method, system, and program for accessing a network namespace
US7069306B1 (en) * 2000-07-20 2006-06-27 Silicon Graphics, Inc. Providing shared and non-shared access to memory in a system with plural processor coherence domains
AU2002220999A1 (en) * 2000-11-22 2002-06-03 Zend Technologies Ltd. Method and apparatus for dynamic shared-memory caching of scripting engine product
US6829637B2 (en) * 2001-07-26 2004-12-07 International Business Machines Corporation Distributed shared memory for server clusters
US6922766B2 (en) * 2002-09-04 2005-07-26 Cray Inc. Remote translation mechanism for a multi-node system
US7174437B2 (en) * 2003-10-16 2007-02-06 Silicon Graphics, Inc. Memory access management in a shared memory multi-processor system
US8316074B2 (en) * 2005-03-11 2012-11-20 Network Appliance, Inc. Network-accessible memory
US7509460B2 (en) * 2006-05-04 2009-03-24 Sun Microsystems, Inc. DRAM remote access cache in local memory in a distributed shared memory system
US20080005529A1 (en) * 2006-06-30 2008-01-03 Morris Robert P Methods, Systems, and Computer Program Products for Providing Access to Addressable Entities Using a Non-Sequential Virtual Address Space
US8015367B1 (en) * 2007-02-16 2011-09-06 Vmware, Inc. Memory management methods in a computer system with shared memory mappings
US8230050B1 (en) * 2008-12-10 2012-07-24 Amazon Technologies, Inc. Providing access to configurable private computer networks
US8332593B2 (en) * 2008-12-24 2012-12-11 Nuon, Inc. Memory space management and mapping for memory area network
US8239866B2 (en) * 2009-04-24 2012-08-07 Microsoft Corporation Reduction of memory latencies using fine grained parallelism and FIFO data structures
US8719547B2 (en) * 2009-09-18 2014-05-06 Intel Corporation Providing hardware support for shared virtual memory between local and remote physical memory
US8739164B2 (en) * 2010-02-24 2014-05-27 Advanced Micro Devices, Inc. Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof
US9331955B2 (en) * 2011-06-29 2016-05-03 Microsoft Technology Licensing, Llc Transporting operations of arbitrary size over remote direct memory access
US9304828B2 (en) * 2012-09-27 2016-04-05 Hitachi, Ltd. Hierarchy memory management

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10276198A (ja) * 1997-03-28 1998-10-13 Mitsubishi Electric Corp 分散共有メモリネットワーク装置
JP2002229967A (ja) * 2001-02-01 2002-08-16 Nec Corp 計算機システム及びcpu・メモリ搭載装置並びに入出力制御装置
JP2003283532A (ja) * 2002-03-22 2003-10-03 Oki Electric Ind Co Ltd 通信ネットワークにおける貸リソースの設定処理方法及びその通信システム並びにプログラム

Also Published As

Publication number Publication date
CA2898664A1 (en) 2014-09-25
EP2972917A1 (en) 2016-01-20
US20140280669A1 (en) 2014-09-18
TW201502801A (zh) 2015-01-16
KR20150132432A (ko) 2015-11-25
MX2015012827A (es) 2016-02-03
BR112015019796A8 (pt) 2017-11-07
CN105190581A (zh) 2015-12-23
WO2014151168A1 (en) 2014-09-25
RU2015139097A (ru) 2017-03-17
BR112015019796A2 (ja) 2017-08-22
MX354310B (es) 2018-02-23
AU2014235261A1 (en) 2015-08-06

Similar Documents

Publication Publication Date Title
JP2016513846A (ja) ネットワークを介したメモリー共有
US20200104275A1 (en) Shared memory space among devices
JP5841255B2 (ja) 仮想化入力/出力のためのプロセッサローカルコヒーレンシを有するコンピュータシステム
US20130013889A1 (en) Memory management unit using stream identifiers
EP2284702A1 (en) Operating cell processors over a network
US20130047157A1 (en) Information processing apparatus and interrupt control method
US8738890B2 (en) Coupled symbiotic operating system
US9584628B2 (en) Zero-copy data transmission system
CN111309649B (zh) 一种数据传输和任务处理方法、装置及设备
JP2015022553A (ja) 計算機の制御方法及び計算機
US20170228164A1 (en) User-level instruction for memory locality determination
US20230195633A1 (en) Memory management device
US10013199B2 (en) Translation bypass by host IOMMU for systems with virtual IOMMU
US11150928B2 (en) Hypervisor translation bypass
JP7056870B2 (ja) 情報処理装置、情報処理方法及びプログラム
CN105612505B (zh) Cpu调度的方法和装置
CN110447019B (zh) 存储器分配管理器及由其执行的用于管理存储器分配的方法
US11860792B2 (en) Memory access handling for peripheral component interconnect devices
US11003488B2 (en) Memory-fabric-based processor context switching system
US10255198B2 (en) Deferring registration for DMA operations
JP5471677B2 (ja) 仮想ディスク制御システム、方法及びプログラム
JP2015197802A (ja) 情報処理装置、情報処理方法及びプログラム
JP2019159735A (ja) コントローラおよびデータ転送方法
TW201342061A (zh) 用於增加虛擬記憶體效能之電腦可讀儲存媒體、設備及電腦實施方法
JP2013037589A (ja) 画像形成装置および画像形成プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170216

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180327

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180402

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180629

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180831

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20181119