JP5651238B2 - ハイブリッド・メモリ・サーバにおけるデータ・アクセス管理 - Google Patents

ハイブリッド・メモリ・サーバにおけるデータ・アクセス管理 Download PDF

Info

Publication number
JP5651238B2
JP5651238B2 JP2013515737A JP2013515737A JP5651238B2 JP 5651238 B2 JP5651238 B2 JP 5651238B2 JP 2013515737 A JP2013515737 A JP 2013515737A JP 2013515737 A JP2013515737 A JP 2013515737A JP 5651238 B2 JP5651238 B2 JP 5651238B2
Authority
JP
Japan
Prior art keywords
data
accelerator
data set
server
given data
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
JP2013515737A
Other languages
English (en)
Other versions
JP2013531296A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2013531296A publication Critical patent/JP2013531296A/ja
Application granted granted Critical
Publication of JP5651238B2 publication Critical patent/JP5651238B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/177Initialisation or configuration control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5041Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
    • H04L41/5054Automatic deployment of services triggered by the service manager, e.g. service implementation by automatic configuration of network components
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • 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/602Details relating to cache prefetching

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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Description

本発明は、一般的にはアウト・オブ・コア処理に関し、特にアウト・オブ・コア処理環境にあるハイブリッド・メモリ・サーバに関する。
アウト・オブ・コア処理環境は、一般的に、より強力な処理装置により処理されるデータを記憶装置が維持し、現在処理されつつあるデータの部分だけが処理装置上に存在する環境を指す。例えば、記憶装置はモデル・データを包含することができ、計算処理はより強力な処理装置に割り当てられる。
2005年9月6日に出願された「Method and apparatus for balancing distributed applications」についての特許文献1は、ケーブル・テレビジョン・ネットワークのようなクライアント/サーバ・ネットワーク内で分散しているアプリケーションを平衡させるための改良された方法および装置を教示している。発明の一側面において、種々のサーバ部分(server portion(DASP))およびサーバ・マシンにおいて分散アプリケーション・クライアント部分(distributed application client portion(DACP))の負荷を平衡させる方法が開示されている。サーバの利用可能なリソースおよびそれらのローディングに関する統計が1つ以上のソフトウェア・プロセスによって維持される。クライアント・デバイス・ローディングが増大あるいは変化するときに最適システム性能を維持するために新しいプロセス・スレッドもしくは分散されているアプリケーション・サーバ部分またはその両方はサーバに割り当てられる。他の1つの側面では、垂直および水平の両方のパーティションおよび“ミュータブルな”(すなわち、トランスポート可能な)オブジェクトを使用するオブジェクト指向分散アプリケーション・ソフトウェア・アーキテクチャが開示されている。ミュータブルなオブジェクトは、少なくとも1つのネットワーク・パーティションを維持すると同時に、サーバまたは分散されたアプリケーションのクライアント部分に常駐することができる。プロセス間通信のために有益な効率的メッセージ・プロトコルを含む、前述のオブジェクト指向分散アプリケーションの動作に適合させられたランタイム環境も開示されている。サーバからDACPをダウンロードする方法、およびクライアント・デバイス・コンフィギュレーションに基づいてダウンロード時にDACPをスケーリングする方法がさらに開示されている。
2008年5月29日に出願された「Methods and Arrangements for Hybrid Data Storage」についての特許文献2は、以後一般的にハイブリッド・メモリ・デバイスまたはハイブリッド・キャッシュ・デバイスと称される2タイプ以上のメモリ・デバイスのアクセスを容易にするハイブリッド・メモリ・コントローラを含み得る実施態様を教示している。該ハイブリッド・メモリ・コントローラは、書き込み要求のデータを2つ以上の部分に分割して各部分を異なるタイプのデータ記憶装置に格納するかどうか決定する分割ロジックを含み得る。例えば、一実施態様は、データをSRAM装置およびDRAM装置の両方に格納するハイブリッド・メモリ・コントローラを含む。該SRAM装置およびDRAM装置は、ダイ上の別個の回路、チップ内の別個のダイ、メモリ・モジュール上の別個のチップ、別個のメモリ・モジュール等を含み得る。
米国特許第6,941,341号 米国特許出願公開第2008/0126716号
在来のアウト・オブ・コア処理環境は、一般的に、リソース利用、ユーザ・サポート、およびセキュリティに関して非能率的である。例えば、多くの在来のアウト・オブ・コア処理環境は一度に1ユーザだけをサポートできるに過ぎない。さらに、これらのシステムは、データ・セットがアクセラレータに常駐することを可能にし、これによりシステムをバルネラビリティに対して開放する。これらの在来の環境の多くはネットワーク・ファイル・システム(Network File System(NFS))を利用し、これはシステム応答低下につながるブロックをページ・アウトすることができる。これらの在来の環境は、さらに、読み出し専用モードで視覚化のためのモデル・データ・レンダリングをサポートし、データ・セットに対するアップデートおよび修正/アノテーションをサポートしない。さらに、これらの在来の環境の幾つかは、全てのモデル・データをキャッシュするためにダイナミック・ランダム・アクセス・メモリ(DRAM、dynamic random access memory)を使用するだけである。これは、或るユーセージ・モデルのためには高価であり得る。従って、前述の問題に対処する必要が当該技術には存在する。
第1の側面から見たとき、本発明は、アクセラレータ・システムにおけるアウト・オブ・コア処理環境にあるデータにアクセスする方法を提供する。該方法は、複数のデータ・セットを管理するサーバ・システムからデータ・アクセス・コンフィグレーションを受け取るステップを含む。該サーバ・システムから取り出されたデータ・セットは該データ・アクセス・コンフィグレーションに基づいて局所的に格納されると決定される。所与のデータ・セットとインタラクトする要求がユーザ・クライアントから受け取られる。その所与のデータ・セットの少なくとも1つの部分が該サーバ・システムから取り出される。その所与のデータ・セットのその少なくとも1つの部分は、受け取られた該データ・アクセス・コンフィグレーションに基づいてメモリに局所的に格納される。
他の1つの実施態様では、アウト・オブ・コア処理環境にあるサーバ・システムにおいてアクセラレータ・システムによるデータへのアクセスを管理する方法が開示される。該方法は、所与のデータ・セットへのアクセスを求めるアクセラレータ・システムからの要求を受け取るステップを含む。その所与のデータ・セットと関連付けられたアクセス・コンテキストが決定される。該アクセラレータは、決定された該アクセス・コンテキストに基づいて動的に設定され、サーバ・システムから直接該所与のデータ・セットにアクセスすること、該所与のデータ・セットの一部分を局所的にメモリに格納すること、および該所与のデータ・セットの全体を該メモリに局所的に格納することのうちの1つに設定される。
さらなる側面から見たとき、本発明は、アウト・オブ・コア処理環境にあるデータにアクセスするためのアクセラレータ・システムを提供する。該アクセラレータ・システムは、メモリと、該メモリに通信結合された処理コアとを含む。データ・アクセス・マネージャは、該メモリおよび該処理コアに通信結合され、1つの方法を実行するように設定される。該方法は、複数のデータ・セットを管理するサーバ・システムからデータ・アクセス・コンフィグレーションを受け取るステップを含む。該サーバ・システムから取り出されたデータ・セットは該データ・アクセス・コンフィグレーションに基づいて局所的に格納されると決定される。所与のデータ・セットとインタラクトする要求がユーザ・クライアントから受け取られる。その所与のデータ・セットの少なくとも1つの部分が該サーバ・システムから取り出される。その所与のデータ・セットのその少なくとも1つの部分は、受け取られた該データ・アクセス・コンフィグレーションに基づいてメモリに局所的に格納される。
さらなる側面から見たとき、本発明はアクセラレータ・システムによるデータへのアクセスを管理するためのアウト・オブ・コア処理環境にあるサーバ・システムを提供する。該サーバ・システムは、メモリと、該メモリに通信結合されたプロセッサとを含む。データ・アクセス・マネージャは、該メモリおよび該プロセッサに通信結合され、1つの方法を実行するように設定される。該方法は、所与のデータ・セットへのアクセスを求めるアクセラレータ・システムからの要求を受け取るステップを含む。その所与のデータ・セットと関連付けられたアクセス・コンテキストが決定される。該アクセラレータは、決定された該アクセス・コンテキストに基づいて動的に設定され、サーバ・システムから直接該所与のデータ・セットにアクセスする、該所与のデータ・セットの一部分を局所的にメモリに格納する、および該所与のデータ・セットの全体を該メモリに局所的に格納する、のうちの1つに設定される。
さらなる側面から見たとき、本発明は、アウト・オブ・コア処理環境にあるデータにアクセスするためのコンピュータ・プログラム製品を提供する。該コンピュータ・プログラム製品は、処理回路により読み出し可能であって1つの方法を実行するために該処理回路により実行されるべき命令を記憶する記憶媒体を含む。該方法は、複数のデータ・セットを管理するサーバ・システムからデータ・アクセス・コンフィグレーションを受け取るステップを含む。該サーバ・システムから取り出されたデータ・セットは該データ・アクセス・コンフィグレーションに基づいて局所的に格納されると決定される。所与のデータ・セットとインタラクトする要求がユーザ・クライアントから受け取られる。その所与のデータ・セットの少なくとも1つの部分が該サーバ・システムから取り出される。その所与のデータ・セットのその少なくとも1つの部分は、受け取られた該データ・アクセス・コンフィグレーションに基づいてメモリに局所的に格納される。
さらなる側面から見たとき、本発明はコンピュータ・プログラムを提供し、該コンピュータ・プログラムは、コンピュータ可読媒体に格納されてデジタル・コンピュータの内部メモリにロード可能であって、前記プログラムがコンピュータ上で実行されるときに本発明のステップを実行するためのソフトウェア・コード部分を含む。
単なる例示を目的として、本発明は、次に、添付の図に示されている好ましい実施態様を参照して説明される。
本発明の一実施態様に従う動作環境の一例を示すブロック図である。 本発明の一実施態様に従うアウト・オブ・コア処理環境にあるハイブリッド・メモリ・サーバ・コンフィグレーションの一例を示すブロック図である。 本発明の一実施態様に従うアウト・オブ・コア処理環境におけるアクセラレータ・コンフィグレーションの一例を示すブロック図である。 本発明の一実施態様に従うアウト・オブ・コア処理環境におけるアクセラレータ・コンフィグレーションの他の一例を示すブロック図である。 本発明の一実施態様に従うアウト・オブ・コア処理環境におけるハイブリッド・メモリ・サーバのトンネル・プロトコル・コンフィグレーションの一例を示すブロック図である。 本発明の一実施態様に従うアウト・オブ・コア処理環境におけるアクセラレータのプリフェッチ・コンフィグレーションの一例を示すブロック図である。 本発明の一実施態様に従うアウト・オブ・コア処理環境におけるアクセラレータの仮想化されたコンフィグレーションの一例を示すブロック図である。 本発明の一実施態様に従うアウト・オブ・コア処理環境におけるサーバ・システムでのデータ前処理の一例を示す動作流れ図である。 本発明の一実施態様のデータ・アクセス・コンフィグレーションに従って設定されたアウト・オブ・コア処理環境におけるアクセラレータの一例を示す動作流れ図である。 本発明の一実施態様に従う他の1つのデータ・アクセス・コンフィグレーションに従って設定されたアウト・オブ・コア処理環境におけるアクセラレータの一例を示す動作流れ図である。 本発明の一実施態様に従う他の1つのデータ・アクセス・コンフィグレーションに従うデータ・アクセス・コンフィグレーションに従って設定されたアウト・オブ・コア処理環境においてアクセラレータを動的に設定することの一例を示す動作流れ図である。 本発明の一実施態様に従う他の1つのデータ・アクセス・コンフィグレーションに従うアウト・オブ・コア処理環境においてサーバとアクセラレータとの間に保障されているリンクを動的に確立することの一例を示す動作流れ図である。 本発明の一実施態様に従うアウト・オブ・コア処理環境においてアクセラレータによりキャッシュされたデータのためにバルネラビリティ・ウィンドウを維持することの一例を示す動作流れ図である。 本発明の一実施態様に従うアウト・オブ・コア処理環境においてサーバでプロトコル・トンネルを利用することの一例を示す動作流れ図である。 本発明の一実施態様に従ってデータをアクセラレータへプッシュするためにセマンティック解析を利用するアウト・オブ・コア処理環境にあるサーバの一例を示す動作流れ図である。 本発明の一実施態様に従うサーバからデータをプリフェッチするアウト・オブ・コア処理環境にあるアクセラレータの一例を示す動作流れ図である。 本発明の一実施態様に従うアウト・オブ・コア処理環境にあるアクセラレータを複数の仮想化されたアクセラレータに論理的にパーティショニングすることの一例を示す動作流れ図である。 本発明の一実施態様に従う情報処理システムの詳細図を示すブロック図である。
要求されたとおりに、本発明の詳細な好ましい実施態様がここで開示されるけれども、その開示される実施態様は単に本発明を代表するに過ぎなくて、本発明は種々の形で具体化され得ることが理解されるべきである。従って、ここに開示される特定の構造上のおよび機能上の詳細は、限定をするものと解されるべきではなくて、単に、請求項のための基礎として、さらに実際上任意の適切な詳しい構造において本発明を様々に使用することを当業者に教えるための代表的基礎として、解されるべきである。さらに、ここで使用される用語および言い回しは、限定をするように意図されているのではなくて、発明についての理解可能な記述を提供するように意図されている。
ここで使用される用語“a”または“an”は、1つまたは2つ以上と定義される。ここで使用される複数(plurality)という用語は2つまたは3つ以上と定義される。複数形の用語および単数形の用語は、明示的に別様に述べられていなければ同じである。ここで使用される他の一つの(another)という用語は、少なくとも1つの第2のもしくはそれ以上と定義される。ここで使用される含む(including)という用語もしくは有する(having)という用語またはその両方は、包含する(comprising)であると定義される(すなわち、開放語)。ここで使用される結合される(coupled)という用語は、必ずしも直接的にではなく、さらに必ずしも機械的にではないが、接続される(connected)であると定義される。ここで使用される用語プログラム(program)、ソフトウェア・アプリケーション(software application)等は、コンピュータ・システム上で実行されるように設計された命令のシーケンスであると定義される。プログラム、コンピュータ・プログラム、あるいはソフトウェア・アプリケーションは、サブルーチン、ファンクション、プロシージャ、オブジェクト・メソッド、オブジェクト・インプリメンテーション、実行可能なアプリケーション、アプレット、サーブレット、ソース・コード、オブジェクト・コード、共用ライブラリ/ダイナミック・ロード・ライブラリ、もしくはその他の、コンピュータ・システム上で実行されるように設計された命令のシーケンス、またはこれらの組み合わせを含み得る。
動作環境
図1は、本発明の種々の好ましい実施態様に適用し得る動作環境の一例を示す。特に、図1は、サーバ・システム102、複数のアクセラレータ・システム104、および、1つ以上のネットワーク108を介して通信結合された1つ以上のユーザ・クライアント106を示す。1つ以上のネットワーク108は任意のタイプの有線通信ネットワークもしくは無線通信ネットワークまたはその両方であり得る。例えば、ネットワーク108は、イントラネット、エクストラネット、またはインターネットのようなインターネットワーク、あるいはそれらの組み合わせであり得る。ネットワーク(1つまたは複数)108は無線リンク、有線リンク、もしくは光ファイバ・リンクまたはそれらの組み合わせを含み得る。
一実施態様では、サーバ・システム102は、IBM(IBM社の登録商標)System z(IBM社の登録商標)サーバのような、ただしこれに限定はされない、任意のタイプのサーバ・システムである。サーバ・システム102は、アクセラレータ・システム104によって処理されてユーザ・クライアント106に伝送されるモデリング/シミュレーション・データのような、ただしこれに限定はされない、1つ以上のデータ・セット110を含むメモリ・サーバであり得る。アクセラレータ・システム104がサーバ・システム102上のデータ・セット110にアクセスするほかに、ユーザ・クライアント106もデータ・セット110にアクセスすることができる。サーバ102は、一実施態様では、データ・セット110と、それへのアクセスとを管理するデータ・アクセス・マネージャ118を含む。サーバ102は、データ・セット110のセキュリティを管理するセキュリティ・マネージャ122をも含む。セキュリティ・マネージャ122は、データ・アクセス・マネージャ118の中にまたは外に常駐することができる。データ・アクセス・マネージャ118およびセキュリティ・マネージャ122は以下でより詳しく論じられる。アクセラレータ104は、一実施態様では、ユーザ・クライアント106から受け取られた要求を管理し、それらの要求を満たすために該サーバからデータ110を取り出す要求マネージャ120を含む。アクセラレータ104は、一実施態様では、キャッシュされたデータに関してバルネラビリティ・ウィンドウを実装するためのセキュリティ・カウンタ124をも含むことができる。アクセラレータ104は、さらに、アクセラレータ104上のアプリケーションのレジリエンシーを提供するエラスティック・レジリエンス・モジュール126を含むことができる。要求マネージャ122、セキュリティ・カウンタ124、およびエラスティック・レジリエンス・モジュール126は以下でより詳しく論じられる。
アクセラレータ・システム104は、一実施態様では、IBM(IBM社の登録商標)System p(IBM社の登録商標)またはSystem x(IBM社の登録商標)サーバのような、ただしこれに限定はされない、ブレード・サーバである。アクセラレータ104の各々は、IBM(IBM社の登録商標)PowerPC(IBM社の登録商標)またはCell B/E処理コアのような、ただしこれらに限定はされない、1つ以上の処理コア112を含む。IBM、System z、System p、System x、およびPowerPCは、世界中の多くの法域において登録されたインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。アクセラレータ・システム104の各々は同じまたは異なるタイプの処理コアを含み得ることに留意するべきである。アクセラレータ・システム104は図1の環境100においてデータ処理の大部分を実行し、サーバ・システム102は大抵はデータ・セット110を管理するために使用される。ユーザ・クライアント106は、一実施態様では、ユーザがサーバ・システム102もしくはアクセラレータ・システム104またはその両方とインタラクトすることを可能にするワークステーション、デスクトップ、ノートブック、無線通信装置、ゲーミングコンソール等のような、ただしこれらに限定されない、任意の情報処理システムである。サーバ・システム102およびアクセラレータ・システム104の結合は、様々のシステム・タイプのサーバ102とアクセラレータ104とのヘテロジニアス結合の故に、ここではハイブリッド・サーバまたはハイブリッド・メモリ・サーバ114と称される。ユーザ・クライアント106は、ユーザがサーバ・システム102もしくはアクセラレータ・システム104またはその両方とインタラクトすることを可能にする1つ以上のインターフェース116を含む。上で与えられたサーバ・システム102、アクセラレータ・システム104、およびユーザ・クライアント106の例は単に例示を目的とするに過ぎず、他のタイプのシステムも適用可能であることに留意するべきである。
図1の環境100は、一実施態様では、アウト・オブ・コア処理環境である。図1のアウト・オブ・コア処理環境100は、一般的に、データの大部分を、サーバ・システム102に存在しもしくはサーバ・システム102に通信結合され、またはサーバ・システム102に存在しかつサーバ・システム102に通信結合されている1つ以上の記憶装置において維持し、処理されつつあるデータはアクセラレータ・システム104において維持するだけである。例えば、サーバ102に存在するデータ・セット110がモデリング・データである実施態様では、クライアント・システム106のところに存在するユーザはインターフェース116を介してモデルとインタラクトする。ユーザ・コマンドは、クライアント・システム106から1つ以上のアクセラレータ・システム104に伝達される。その1つ以上のアクセラレータ・システム104は、該ユーザ・コマンドを満たすモデリング・データの部分をサーバ・システム102から要求する。モデリング・データのこれらの部分はアクセラレータ・システム(1つまたは複数)104により処理される。該アクセラレータ・システム104は、該ユーザの要求を満たすために必要なサーバ・システム102からのモデル・データの部分だけを要求し処理する。従って、モデリング・データの大部分はサーバ・システム102上に留まっており、モデリング・データの処理されつつある部分だけがアクセラレータ・システム104に存在する。該アクセラレータ・システム(1つまたは複数)104は、その後、その処理された(例えば、グラフィカル・レンダリング、フィルタリング、変換)モデリング・データをユーザ・クライアント・システム106に提供する。サーバ・システム102はデータ・セットの所与のセットにアクセラレータの所与のセットを割り当てることができるけれども、これは必要ではないということに留意するべきである。
上で論じられたように、在来のアウト・オブ・コア処理環境はリソース利用、ユーザ・サポート、およびセキュリティに関して一般的に非能率的である。例えば、多くの在来のアウト・オブ・コア処理環境は、一度に一人のユーザをサポートできるに過ぎない。さらに、これらのシステムは、データ・セットがアクセラレータに存在することを可能にし、これによりシステムをバルネラビリティに対して開放する。これらの在来の環境の多くはネットワーク・ファイル・システム(NFS)を利用し、これはサーバ102におけるシステム応答の低下に到るブロックをページ・アウトすることができる。これらの在来の環境は、さらに読み出し専用モードでモデル・データ処理(レンダリング)をサポートし、データ・セットに対するアップデートおよび変更/アノテーションをサポートしない。さらに、これらの在来の環境のうちの幾つかは、全てのモデル・データをキャッシュするためにダイナミック・ランダム・アクセス・メモリ(DRAM)を使用するだけである。これは、或るユーセージ・モデルのためには高価であり得る。
従って、以下でより詳しく論じられるように、本発明の種々の好ましい実施態様は、在来のアウト・オブ・コア処理環境に関して上で論じられた問題を次のように克服する。1つ以上の実施態様は、アウト・オブ・コア処理環境100において複数のユーザがサポートされることを可能にする。例えば、これらの実施態様は、別々の物理的アクセラレータ、仮想化されたアクセラレータを利用し、もしくは同じ物理的アクセラレータで複数のユーザをサポートし、これにより同じキャッシュを共用し、または別々の物理的アクセラレータ、仮想化されたアクセラレータを利用し、かつ同じ物理的アクセラレータで複数のユーザをサポートし、これにより同じキャッシュを共用する。データ・セットがサーバ102においてのみキャッシュされる;データ・セットがサーバ102とアクセラレータ104とにおいてキャッシュされる;データ・セットがデマンド・ページングを用いてアクセラレータ104においてキャッシュされる;およびデータ・セットがシステム初期化時に該データ・セットをダウンロードすることによってアクセラレータ104においてキャッシュされるような種々のモードでアウト・オブ・コア処理環境100が使用されることを種々の実施態様が可能にする。
1つ以上の実施態様は、在来のアウト・オブ・コア処理環境で経験される待ち時間を、(i)明示プリフェッチング・プロトコルおよび(ii)待ち時間を短縮するために帯域幅を大きくするスペキュラティブ・プッシュ−プル・プロトコルを利用することによって短縮する。他の実施態様では、システム102のためのカスタム・メモリ・サーバ・デザインがゼロから実装され得る。あるいは、カスタム・メモリ・サーバ・デザインの要素が既存のNFSサーバ・デザインに付加され得る。他の実施態様においてアウト・オブ・コア処理環境100はデータの変更およびアノテーションをサポートする。さらに、或るユーセージ・モデルは、サーバがサーバとアクセラレータとの間で“コール−リターン”モードのみで使用されることを要求する。従って、1つ以上の実施態様は、データ集約的処理が“コール−リターン”モードで完了させられることを可能にする。さらに、1つ以上の実施態様において“モデル”、サーバ、アクセラレータ、およびユーザ・クライアント上のユーザを隔離するために安全な分散サンドボクシングが使用される。さらに、1つ以上の実施態様は、一定のデータがDRAMのような高速メモリにもフラッシュ・メモリのような低速メモリにもキャッシュされることを可能にする。
ヘテロジニアスなメモリを有するハイブリッド・サーバ
サーバ102は、一実施態様では、図2に示されているように、ヘテロジニアスなメモリ・システム202を含む。このヘテロジニアスなメモリ・システム202は、一実施態様では、DRAMのような高速メモリ204と、フラッシュ・メモリもしくはディスク記憶装置208またはその両方のような低速メモリ206とを含む。高速メモリ204は揮発性メモリとして構成され、低速メモリ206は不揮発性メモリとして構成されている。サーバ102は、データ・アクセス・マネージャ118を介して、データ・セット110を高速メモリ204に、低速メモリ206に、あるいはその両方の組み合わせに格納することができる。例えば、サーバ102がアプリケーションの部分を該部分が必要とされる前に動作させているとすれば、サーバ102は、これらの部分により要求されるデータ・セットを低速メモリ206に格納する。なぜならば、該データ・セットは将来の一時点のためのものであり、従って現時点では重要でないからである。例えば、仮想世界でのシミュレーションは、将来のリソース使用および他の種々のモデリング・シナリオのための計画を立てるために現時点より先に動作することができる。従って、種々の実施態様が、フラッシュ、DRAM、およびディスク・メモリのような種々のメモリ・タイプを利用する。さらに、1つ以上の実施態様において、高速メモリ204内で入れ替えられるブロックは始めに低速メモリ206に移され、次にディスク記憶装置208に移される。低速メモリ206はメタデータとして使用されることができ、データ交換の単位はNFSストレージ・ブロックではなくてデータ構造の基本構成要素である。
サーバ102上に存在するメモリ・システム202のほかに、サーバ102はアクセラレータ104上のゲーテッド・メモリ210にもアクセスすることができる。例えば、アクセラレータ104が所与のメモリ部分におけるデータ処理を終えると、アクセラレータ104は、このメモリ部分をサーバ102に解放し、サーバ102がこのメモリ部分を利用することを可能にする。ゲーテッド・メモリはサーバにも関連付けられる。サーバは、外部アクセラレータのアクセスを許さないことによってデータを処理して結果をメモリに格納することができる。サーバは、その後、メモリへの“ゲートを開くこと”によってアクセラレータのアクセスを許すことを選択することができる。さらに、メモリ・システム202は、一実施態様では、サーバ102自体によって管理されるメモリと、アクセラレータ104により管理されるメモリ(すなわち、サーバによりアクセラレータに解放されるメモリ)にパーティショニングされ得る。アクセラレータ104により管理されるメモリをメモリ・システム202の中に持つことにより、アクセラレータ104は、サーバ102に存在する処理リソースのいずれにも重い負担をかけること無くそのメモリに直接書き込むことができる。フラッシュ・メモリ・モジュールは、アクセラレータ104により直接アクセスされるようにサーバの入力/出力(Input/Output(I/O))バスに配置され得る。これらのフラッシュ・メモリ・モジュールは、アクセラレータ104からメッセージを受け取るネットワーク・リンクを持つことができる。該フラッシュ・メモリ・モジュール上のプロセッサは、これらのメッセージを処理して該フラッシュ・メモリI/Oモジュール上のフラッシュ・メモリに値を読み/書きすることができる。フラッシュ・メモリは、DRAMメモリと一緒にプロセッサ・システム・バスに取り付けられることもできる。リモート・アクセラレータは、システム・バスに取り付けられたフラッシュ・メモリ・モジュールに値を読み/書きするためにRDMA(Remote Direct Memory Access(リモート・ダイレクト・メモリ・アクセス))コマンドを使用することができる。
さらに、この構成は、このメモリが複数のアクセラレータ104間で共有されるので、アクセラレータ104同士が互いにメッセージを渡すことを可能にする。これらのメッセージは、重要性のより高い通信のための高速メモリ204を利用して、あるいは重要性のより低い通信のための低速メモリ206を利用して、アクセラレータ104同士の間で渡され得る。さらに、データもしくはメッセージまたはその両方は低速メモリ・モジュール間でも渡され得る。例えば、アクセラレータ104は、低速メモリ206からデータを取り出してそれを他の低速メモリ206に書き戻すことができる。あるいは、もし低速メモリ・モジュール同士が同じI/Oバス・ライン上にあるならば、低速メモリ・モジュール同士は互いにデータ/メッセージをやり取りすることができる。サーバ102上の低速メモリは、信頼できる一時ストレージまたはバッファ・ストレージとして動作する。これは、アクセラレータ104がデータを自分たちの希少なアクセラレータ存在メモリにバッファリングする必要を無くする。各アクセラレータ104は、全アクセラレータがアクセスできる公開メモリ領域と共に、自分に割り当てられたサーバ102上の私用フラッシュ・メモリ・モジュールを持つことができる。もしデータが他のアクセラレータに転送されなければならないとすれば、そのデータは、該アクセラレータのメモリに読み返されなくても良くて、フラッシュ・メモリ・モジュール間転送を用いてサーバ102の領域内で転送され得る。それらの転送は、システム・バスまたはI/Oバス上で完了させられ得る。これにより、アクセラレータ104は、他のアクセラレータへのデータのコピーのための数個のラウンド・トリップを省くことができる。従って、アクセラレータ104は、交換ネットワークを用いて自分たちの間で短いメッセージを伝え、サーバ102上の低速メモリを用いて長い/大量のメッセージまたは遅延動作要求を伴うメッセージを交換することができる。低速メモリは、アクセラレータ104が関連するデータ・アイテムのための処理を完了させて、その結果をサーバ102または他のアクセラレータにより消費されるように変換または整理することを必要とせずにこのメモリをサーバ102または他のアクセラレータに“解放する”ことを可能にするので、低速メモリは有利である。これは、システムの待ち時間および総合性能を改善する。
下記は、上記実施態様のより詳しい例である。一例では、データ・セット110は、該ファイルを“mmap”するクライアントを有するNFSシェアとして構成されたファイルである。“mmap”は、ランダム・アクセス・メモリ・セマンティクスを用いてファイルにアクセスするためにクライアントにより使用されるオペレーティング・システム・コールである。NFSファイル部分は、ファイル・バイトが触れられるときにDRAM内のNFSブロック・バッファ・キャッシュに格納される。しかし、或る場合には、メモリに格納されたブロックは、“エージ”ベースのあるいは使用されていない時間が最も長いものを選ぶ(least recently used(LRU))方式が実施されているならば、他のブロックと置換され得る。置換されたブロックは、ディスクへのアクセスが要求されるかもしれないので、さらなる待ち時間を招くであろう。従って、他の1つの実施態様は、DRAM内にランダム・アクセス・メモリ・ディスク(random−access−memory−disk(RAMdisk))を作って該RAMdiskファイル・システムをNFSファイル・システムにマッピングする。RAMdiskは、さらに他の1つの例では、フラッシュ・メモリを用いて作られ、RAMdiskファイル・システムはNFSファイル・システムにマッピングされる。DRAM帯域幅要件を伴うアプリケーションのためには、メタデータはフラッシュ・メモリに格納され、大帯域幅データはDRAMに格納される。置換されたDRAMブロックは、それらをディスクに書き込むのではなくてフラッシュ・メモリに格納され得る。フラッシュ・メモリは“犠牲”ストレージとして役立つことができる。
NFSブロックは始めにアクセラレータ104によりアクセスされることに留意するべきである。その後、関連データがNFSブロックから抽出される。本発明の1つ以上の好ましい実施態様のメモリ・デザインにおいては、データ交換のグラニュラリティはデータ構造の基本構成要素である。これは、データがサーバ102から直接アクセスされアクセラレータ・データ構造に直接書き込まれることを可能にする。例えば、3レベルを有するバイナリ・ツリーは基本構成要素として識別され得る。該基本構成要素は、サーバとアクセラレータとの間の転送の単位として使用され得る。
さらなる実施態様では、サーバ102は、前処理モジュール212を介して、メモリ・システム202に格納されているデータを、該データを改造することを要すること無く要求側アクセラレータ104の処理コア112によって処理され得るフォーマットにこのデータを変換するために、前処理することができる。換言すれば、サーバ102は、アクセラレータ104が該データを処理するためにさらなる動作を実行することを要求されることの無いように、このデータを事前記憶し事前構造化する。例えば、アクセラレータ104はIBM(IBM社の登録商標)Cell B/E処理コア112を含むことができる。従って、サーバ102は、アクセラレータ104が始めにデータを所要のフォーマットに変換することを要すること無く該データを処理できるように、データを前処理してCell B/E処理コアにより要求されるフォーマットまたはデータ構造とすることができる。データをアクセラレータ104により要求されるフォーマットに変換するほか、サーバ102はデータを所与の操作のためのフォーマットまたはデータ構造に変換することもできることに留意するべきである。例えば、所与のデータ・セットに普通はそこで分類操作を行わせるようにサーバ102が決定したとすれば、サーバ102はこのデータ・セットを分類操作に適する形に変換することができる。従って、アクセラレータ104が該データ・セットを受け取ると、該アクセラレータは、該データをフォーマットすることを必要とせずに該分類操作を実行することができる。
さらに、ユーザは、ユーザ・クライアント・システム106においてデータとインタラクトする間に該データ・セット110にアノテートすることができる。ユーザがデータ110にアノテートするとき、アクセラレータ104は、該アノテーション情報を、さらなるユーザが該アノテーションを見ることができるように、サーバ102に書き戻す。複数のユーザがモデルのようなデータ・セットにアクセスする実施態様では、ユーザは、始めに、アップデートされる必要のあるデータ領域への書き込みロックを得る。この書き込みロックは、データ・アクセス・マネージャ118によって許可されて管理される。アノテーションはロックを得ること無く行われ得るけれども、アノテーションに対する変更は書き込みロックを必要とする。クライアントによるデータ構造に対するアップデートは、エントリがキャッシュされたデータを有するクライアントにおいて無効とマークされるという結果をもたらす。これらのエントリは、その後、必要時にリフレッシュされる。
ハイブリッド・サーバにおけるデータのステージング
下記は、ハイブリッド・サーバ114においてデータをステージすることを目指す実施態様に関する詳細な議論である。上で論じられたように、ハイブリッド・サーバ114のサーバ・システム102は、アクセラレータ104により処理される1つ以上のデータ・セット110を含む。従って、アクセラレータ104により処理されるデータ・セット110の部分への安全で効率的なアクセスを提供するために、ハイブリッド・サーバ114において種々のデータ・ステージング・アーキテクチャが利用され得る。
一実施態様では、データ・アクセス・マネージャ118は、データがサーバ・システム102とアクセラレータ104との間でどのようにアクセスされるかを管理する。一実施態様では、データ・アクセス・マネージャ118は、サーバ・システム102、アクセラレータ104のうちの1つ以上、もしくはリモート・システム(図示されていない)またはこれらの組み合わせに存在する。一実施態様では、データ・アクセス・マネージャ118は、1セットのアクセラレータをサーバ・システムに存在する第1データ・セットに割り当て、他の1セットのアクセラレータを第2セット・データ・セットに割り当てることができる。この実施態様では、データ・セットに割り当てられたアクセラレータだけがそのデータ・セットにアクセスする。代わりに、データ・アクセス・マネージャ118はアクセラレータを複数のデータ・セットに割り当てることができる。
データ・アクセス・マネージャ118は、さらに、種々のデータ・アクセス・コンフィギュレーションに従ってアクセラレータ104を設定する。例えば、一実施態様では、データ・アクセス・マネージャ118は、直接サーバ・システム102からのデータ・セット110にアクセスするようにアクセラレータ104を設定する。別様に言えば、アクセラレータ104はデータ・セット110からのデータのどれをもキャッシュせず、データ・セット110はサーバ・システム102に格納されるだけである。この実施態様は、一般的にサーバ・システム102の方がアクセラレータ104よりも安全で信頼できるシステムを提供するので、データ・セット110の機密性/セキュリティおよび信頼性が重要である場合に有利である。
他の1つの実施態様では、図3に示されているように、データ・アクセス・マネージャ118は、アクセラレータ104を、該アクセラレータ104により処理されるべきデータ・セット110のデータの全てを取り出して自分に格納/キャッシュするように設定する。例えば、1つ以上のアクセラレータ104は、T1において、飛行機モデルのような所与のモデルとインタラクトする要求を受け取る。アクセラレータ(1つまたは複数)104に存在する要求マネージャ120は、T2で要求302を解析し、T3で、該ユーザの要求を満たすためにサーバ・システム102からデータ304の全部または実質的に全部を取り出す。次に、アクセラレータ104は、T4で、このデータを局所的にメモリ/キャッシュ306に格納する。次に、T5でユーザ・クライアント106からアクセス要求が受け取られると、アクセラレータ104は、T6で、サーバ・システム102から該データを要求することと比べてキャッシュされているデータ304に局所的にアクセスする。
他の1つの実施態様では、データ・アクセス・マネージャ118は、ユーザ・クライアントから最初の要求を受け取った後にデータ・セットを取り出して格納/キャッシュするのと比べて、システム初期化時にデータ・セットを取り出して格納/キャッシュするようにアクセラレータ104を設定するということに留意すべきである。アクセラレータ104へのデータ・セットのこのダウンロードは、アクセラレータ104とサーバ・システム102との高速接続で程よい量の時間で行われ得る。一旦メモリ306に格納されれば、データ・セット304は、上で論じられたようにアクセラレータ104において直接アクセスされ得る。
1つの代わりの実施態様では、データ・アクセス・マネージャ118は、図4に示されているように、ユーザの要求を満たすために必要とされるデータ・セット110の一部分404だけを取り出して格納/キャッシュするようにアクセラレータ104を設定し、そのデータ・セットの残りの部分はサーバ・システム102に留まる。例えば、1つ以上のアクセラレータ104は、T1で、クレジットカード不正検出モデルのような所与のモデルとインタラクトする要求402を受け取る。アクセラレータ104に存在する要求マネージャ120は、T2で、その要求を解析し、T3で、ユーザの要求を満たすデータ110を、それのメモリ406が許す量だけ、サーバ・システム102から取り出す。アクセラレータ104は、次にT4で、このデータ404を局所的にメモリ/キャッシュ406に格納する。次に、T5でアクセス要求がユーザ・クライアント106から受け取られると、アクセラレータ104は、キャッシュされているデータ404の部分で局所データが該ユーザの要求を満たし得るか否かにより、T6でキャッシュされているデータ404に局所的にアクセスするかもしくはT7でサーバ・システムに存在するデータ・セット110にアクセスし、またはT6でキャッシュされているデータ404に局所的にアクセスしかつT7でサーバ・システムに存在するデータ・セット110にアクセスする。この実施態様から分かるように、アクセラレータ104は必要に応じてサーバ・システム102上のデータにアクセスするだけである。
アクセラレータ104の設定は、データ・アクセス・マネージャ118によって静的にもしくは動的にまたは静的にかつ動的に行われ得る。例えば、システム・アドミニストレータは、上で論じられた実施態様のうちの1つに従ってアクセラレータを静的に設定するようにデータ・アクセス・マネージャ118に命令することができる。代わりに、データ・アクセス・ポリシーのセットがアクセラレータ104のうちの1つ以上と関連付けられ得る。これらのデータ・アクセス・ポリシーは、サーバ102からのデータにアクセスするためにアクセラレータ104をどのように設定するかを示す。この実施態様では、データ・アクセス・マネージャ118は、所与のアクセラレータ104と関連付けられたデータ・アクセス・ポリシーを識別し、そのデータ・アクセス・ポリシーにより示される上で論じられたデータ・アクセス実施態様のうちの1つに従ってそのアクセラレータ104を静的に設定する。
代わりに、データ・アクセス・マネージャ118は、アクセス・コンフィギュレーション、すなわち、データ・セット全体の全てを格納/キャッシュする、データ・セットの一部分を格納/キャッシュする、またはどのデータも全く格納/キャッシュしない、のうちの1つに基づいてアクセラレータ104の各々を動的に設定することができる。この実施態様では、データ・アクセス・マネージャ118は、アクセラレータ104をどのように動的に設定するかを決定するためにデータ・ポート、ユーザ属性、データと関連付けられたセキュリティ属性などのような種々のタイプの情報を含み得るアクセス・コンテキストを利用する。例えば、データ・アクセス・マネージャ118は、データがサーバ102からアクセラレータ104へ、もしくはアクセラレータ104からユーザ・クライアント106へ、またはサーバ102からアクセラレータ104へかつアクセラレータ104からユーザ・クライアント106へ転送されるポートを識別することができる。識別されたポートに基づいて、データ・アクセス・マネージャ118は、ポートと関連付けられたセキュリティもしくは信頼性またはその両方に依存してデータ・セット全体の全てを格納/キャッシュする、データ・セットの一部分を格納/キャッシュする、あるいはどのデータも全く格納/キャッシュしないようにアクセラレータ104を動的に設定することができる。データがポートの所与のセットを超えて送信されるときにどのアクセス・コンフィギュレーションが使用されるべきかを示すためにデータ・アクセス・ポリシーが使用され得る。
他の1つの例では、データ・アクセス・マネージャ118は、アクセスされるべきデータ・セット110に基づいてアクセラレータ104を動的に設定する。例えば、データ・セット110は異なるタイプのデータ、異なるタイプの機密性要件などを含み得る。アクセラレータ104をどのように動的に設定するかを決定するためにデータ・アクセス・マネージャ118により使用されるデータ・セット110と関連付けられたこの情報は、そのデータ・セット自体の中、そのデータ・セットと関連付けられたレコードの中、などに格納され得る。この情報に基づいてデータ・アクセス・マネージャ118は、上で論じられたアクセス・コンフィギュレーションのうちの1つに従ってアクセラレータ104を動的に設定する。例えば、所与のデータ・セット110が高度の機密性を要求するとデータ・アクセス・マネージャ118が判定したならば、データ・アクセス・マネージャ118は、データ・セット110を少しもキャッシュせずにサーバ102からのデータ・セット110にアクセスするだけであるようにアクセラレータ104を設定することができる。データ・セット110と関連付けられたメタデータにどのアクセス・コンフィギュレーションが基づくべきかを示すためにこの実施態様においてデータ・アクセス・ポリシーが使用され得る。
さらに、他の1つの例では、データ・アクセス・マネージャ118は、データ・セット110へのアクセスを要求しているユーザ・クライアント106に存在するユーザに基づいてアクセラレータ104を動的に設定する。例えば、ユーザは、自分に関連付けられた種々のアクセス権およびパーミッションを持ち得る。従って、この例では、データ・アクセス・マネージャ118は、アクセス権およびパーミッション、データ使用歴、要求タイプ(ユーザがそのデータで何をすることを要求しているか)、などのようなユーザと関連付けられた種々のメタデータを識別する。このユーザ・メタデータに基づいてデータ・アクセス・マネージャ118はアクセス・コンフィギュレーションのうちの1つに従ってアクセラレータ104を動的に設定する。該ユーザ・メタデータはサーバ102に存在するユーザ・レコード、アクセラレータ104、もしくはリモート・システムまたはそれらの組み合わせに格納され得ることに留意するべきである。
上で論じられたように、データ・アクセス・マネージャ118の他に、ハイブリッド・サーバ114はセキュリティ・マネージャ122も含む。セキュリティ・マネージャ122は、データ・アクセス・マネージャ118の一部であることができ、あるいはデータ・アクセス・マネージャ118の外側でサーバ・システム102、1つ以上のアクセラレータ104、もしくはリモート・システムまたはそれらの組み合わせの上にも存在することができる。セキュリティ・マネージャ122は、ハイブリッド・サーバ114のためにエラスティック・セキュリティを提供する。例えば、セキュリティ・マネージャ122は、上で論じられたアクセス・コンフィギュレーションに従ってアクセラレータ104の動的設定を管理することができる。さらに、セキュリティ・マネージャ122は、サーバ102と各アクセラレータ104との間の通信リンクに様々のレベルのセキュリティを動的に適用することができる。
この実施態様では、セキュリティ・マネージャ122は、サーバ102とアクセラレータ104との間の完全暗号化リンク、または、データの全ピースが暗号化されるわけではないので該リンク上の部分的なデータに関しての強度/暗号化はより低いけれども性能はより高い変形暗号化リンクを提供する。一実施態様では、システム・アドミニストレータまたはユーザ・クライアント106に存在するユーザは完全暗号化リンクまたは変形暗号化リンクを選択することができる。他の1つの実施態様では、セキュリティ・マネージャ122は、データ・アクセス・コンフィギュレーションに関して上で論じられたものと同様に、データが送信されもしくはデータがアクセスされまたはデータが送信されかつアクセスされるポートに基づいて完全暗号化リンクまたは変形暗号化リンクを選択する。さらに他の1つの実施態様では、セキュリティ・マネージャ122は、アクセラレータ104に適用されるアクセス・コンフィギュレーションに基づいて完全暗号化リンクまたは変形暗号化リンクを選択する。例えば、アクセラレータ104がサーバ102からのデータ・セット110にアクセスするだけで該データを全くキャッシュしないように設定されているとすれば、セキュリティ・マネージャ122はサーバ102とアクセラレータ104との間のリンクを完全に暗号化することができる。一方、アクセラレータ104がデータ・セット110をキャッシュするように設定されているとすれば、セキュリティ・マネージャ122はサーバ102とアクセラレータ104との間に部分的に暗号化される(暗号強度がより低い、あるいはデータが部分的に暗号化される)リンクを提供することができる。
データがアクセラレータ104においてキャッシュされる実施態様では(例えば、図3および図4)、セキュリティ・マネージャ122はバルネラビリティ・ウィンドウ・メカニズムも実装する。この実施態様では、セキュリティ・マネージャ122は、アクセラレータ104にキャッシュされているデータのためにカウンタ124を維持するようにアクセラレータ104に命令する。カウンタ124が所与の値に達すると、キャッシュ内のデータは最早アクセス不能となる。例えば、アクセラレータ104は、該データを削除し、該データに上書きする、などである。その所与の値は、時間間隔またはアクセスの回数のような、ただしこれらに限定はされない、デフォルト値であり得る。代わりに、セキュリティ・マネージャ122はその所与の値をセットして、この所与の値までカウントするようにアクセラレータ124に命令することができる。さらに、異なるデータ・セットあるいはデータ・セットの部分に異なる値が関連付けられ得る。例えば、アクセラレータ104においてキャッシュされているデータ・セット110の各部分が異なるカウンタおよび値と関連付けられ得る。データの全てがアクセラレータ104にキャッシュされて唯一のユーザがアクセスを要求するとすれば、該ユーザが該データへのアクセスを終了するとアクセラレータ104はバルネラビリティ・ウィンドウが終了する前に該データをキャッシュから除去することができるということに留意するべきである。しかし、複数のユーザがデータへのアクセスを要求しているとすれば、他のユーザがデータへのアクセスを要求することができるのでデータはバルネラビリティ・ウィンドウが終了するまでアクセラレータ104に残っていなければならない。
バルネラビリティ・ウィンドウ・メカニズムは、部分的に暗号化されるリンクが性能を高めると同時にアクセラレータが自分のキャッシュ内のデータを落とす/削除するように要求することによってデータのセキュリティをなお確保することを可能にするために、セキュリティ・マネージャ122がハイブリッド・サーバ114におけるセキュリティ・レベルを調整することを可能にする。システム設計者は、リンクの暗号強度とバルネラビリティ・ウィンドウの持続時間との適切なトレード・オフを行うことを選択することができる。アクセラレータ・システムのセキュリティ供給についての設計者の信頼レベルに基づいてバルネラビリティ・ウィンドウの持続時間をセットするために同様の考慮事項が用いられ得る。バルネラビリティ・ウィンドウ・メカニズムは、さらに、新しいデータがキャッシュされ得るようにデータがアクセラレータのキャッシュに長時間維持されないことも保証する。
セキュリティ・マネージャ122はサーバ102とアクセラレータ104との間の通信リンクを所与のレベルのセキュリティで設定するので、アクセラレータ104によりキャッシュされるデータは、或る実施態様では、暗号化される。或る場合には、2つ以上のアクセラレータ104が同じキャッシュされているデータ・セットにアクセスする。例えば、第1アクセラレータは第1ユーザからの要求を満たすことができ、第2アクセラレータは第2ユーザからの要求を満たすことができる。例えば、これらのユーザが同じモデルにアクセスするとすれば、第1ユーザおよび第2ユーザが同じデータへのアクセスを要求する高い確率が存在する。従って、アクセラレータのうちの1つが自分のキャッシュの中のデータを復号化するとき、該アクセラレータは、その復号化されたデータを、同じデータ・セットにアクセスしている他のアクセラレータと共有することができる。このようにして、該他のアクセラレータは、そのデータを復号化することを要求されなくて、処理リソースを節約することができる。第1アクセラレータにおいてこの復号化されたデータにバルネラビリティ・ウィンドウが適用されているとすれば、該データが第2アクセラレータと共有されているときには該復号化されたデータに対してこのバルネラビリティ・ウィンドウが適用されるということに留意するべきである。
上の議論から分かるように、アクセラレータ104は、ユーザの要求を満たすためにデータ・セットにアクセスするために様々の仕方で設定され得る。ハイブリッド・サーバ114は、サーバ102とアクセラレータ104との間の通信リンクに関して、さらにアクセラレータがデータをどのようにキャッシュするかに関してセキュリティ・レベルが調整され得る動的セキュリティ環境をも提供する。さらに、各アクセラレータ104は、エラスティック・レジリエンスを提供するように設定され得る。例えば、重要なデータが失われなくてユーザの体験が途切れずに続くようにアクセラレータ104におけるソフトウェア・クラッシュから回復し得ることが重要である。
一実施態様では、エラスティック・レジリエンスはアクセラレータにおいてエラスティック・レジリエンス・モジュール126により提供される。エラスティック・レジリエンス・モジュール126は、単一のインスタンスまたは一時点で動作しているソフトウェア・プログラムの複数のコピーを持つようにアクセラレータを動的に設定することができる。エラスティック・レジリエンス・モジュール126は、これらの設定をユーザの要求、アクセスされるデータの性質、必要とされる性能および利用可能なリソースに基づいて替えることができる。レジリエンスは、同時に動作している同じプログラムの少なくとも2つのコピーを持つことによって提供される。この実施態様では、各プログラムが他方が何を行っているかを常に知っているように、該ソフトウェア・プログラムは互いにチェックし合う。従って、該プログラムのうちの一方がクラッシュすると、他方のプログラムは、クラッシュしたプログラムのための処理を途切れること無く引き継ぐことができる。
協調スペキュラティブ・データ・プッシュ−プル
上で論じられたように、或るユーセージ・モデルはサーバ102がサーバ102とアクセラレータ104との間でコール−リターン・モードのみで使用されることを要求する。このタイプのコンフィギュレーションでは、アクセラレータ104自体はサーバ102へのアクセスを行うことを許されない。従って、図5に示されているように、1つ以上の実施態様において、ユーザのクライアント106は、要求、コマンドなどをアクセラレータ104に直接送ることと比べて、要求、コマンドなどをサーバ102に送る。これらの実施態様は、サーバ102を通るコール−リターン・パスを利用し、データ・スヌープを伴うプロトコル・トンネル502をセットアップする。コール−リターンは、ハイブリッド・サーバ114の安全な実装を可能にする。
これらの実施態様においてデータ・アクセス・マネージャ118は、ユーザ・クライアント106から直接サーバ102により受け取られた要求を様々な仕方で処理することができる。一例では、クライアント106から受け取られた要求は該サーバの入力から直接アクセラレータ104へトンネルされる。他の1つの例では、これらの要求はサーバ102で処理され、結果がユーザ・クライアント106に送り返される。ユーザ・クライアント106は、その後、このデータを処理のために1つ以上のアクセラレータへ“プッシュ”し、該アクセラレータ104は処理済みのデータをプロトコル・トンネル502に沿ってユーザ・クライアント106に送り返す。しかし、ユーザ・クライアント106がその処理自体を効率的に実行するのに充分なリソースを含むならば、ユーザ・クライアント106は該データをアクセラレータ104へプッシュする必要はない。さらに他の1つの例では、入ってきた要求はプロトコル・トンネル502に沿ってアクセラレータ104およびサーバ102の両方へミラーされる。例えば、サーバ102は実際の要求のコピーを維持し、該要求または該コピーをアクセラレータ104に渡す。さらに、サーバ102は、他の1つの例では、小さい要求に対応する結果データをユーザ・クライアント106へプッシュするけれども、長い/大量の結果がアクセラレータ102に対するユーザ・クライアントの要求によって提供されることを可能にする。例えば、長い/大量の結果をもたらす要求はアクセラレータ104に渡され、該アクセラレータはサーバ102から対応するデータを要求する。さらに、長い要求メッセージは、サーバ102での“代理”処理(アクセラレータ104に代わっての)を容易にするためにプロトコル・トンネル502に沿ってアクセラレータ104へ送られることができる。写しの要求はサーバ102において落とされることができる。
プロトコル・トンネルは、要求が1つのネットワーク・ポートで受け取られ、その後に他の1つのネットワーク・ポートを通ってアクセラレータ104へ送られることとなるように設定される。しかし、サーバ102は、図5に示されているように、データ・アクセス・マネージャの中にあるいはデータ・アクセス・マネージャの外側に存在することのできるスヌーピング・モジュール504を含む。スヌーピング・モジュール504は、要求を満たすためにアクセラレータにより必要とされるデータ・セットまたはデータ・セットの部分を識別するために、受け取られてアクセラレータに渡される要求をスヌープする。データ・アクセス・マネージャは、その後、識別されたデータ・セットまたはデータ・セットの部分をアクセラレータへプッシュすることができる。一実施態様では、サーバからアクセラレータにより受け取られたプッシュされたデータは、別個の“プッシュ”キャッシュに格納され、プルされたデータと共には格納されない。しかし、この実施態様は必要とはされない。従って、アクセラレータが要求を受け取るとき、サーバは必要とされるデータ・セットを既にアクセラレータに送り始めているのでアクセラレータはサーバから該データ・セットを取り出さなくても良い。ユーザ・クライアント106からの要求は、該要求のために必要とされるデータが既に途中にあることをアクセラレータに示す表示として役立つビットを付加されることができる。アクセラレータ104は、従って、サーバ102に対するデータ要求を回避することができる。このような“プッシュ−プル”プロトコルは、ユーザ・クライアント106がユーザの全ての可能性のある位置についての完全な知識を持っていないけれどもサーバ102がこの情報を持っていそうであって、異なる複数のユーザからの該データ・セットに対するアップデートが該データ・セットにおいて反映され、その後に他のユーザへ“プッシュ”され得るときに、有利である。
上記実施態様の1つの利点は、全てのユーザ要求が始めにサーバ102に向けられるのでサーバ102が複数のユーザ要求についての知識を有することである。例えば、在来のアウト・オブ・コア処理環境では、各アクセラレータは一般的に一度に一人のユーザをサポートできるに過ぎない。従って、これらの在来の環境は、普通は、他のユーザのユーセージ・パターンに基づく如何なるタイプのスペキュラティブ・プッシュ−プル・プロトコル操作も実行できない。しかし、本発明の1つ以上の好ましい実施態様ではユーザ・クライアント106からの要求は始めにサーバ102に送られるので、サーバ102はユーザ・クライアント106の全てがどんなデータ・セットにアクセスしているかを監視する。このことは、サーバ102が、過去に複数のユーザにより要求されたデータに基づいて、またはユーザにより現在要求されているデータに基づいて、所与のユーザ・クライアント(1つまたは複数)106のために将来どんなデータが必要とされることになるかを予測または推測することを可能にする。サーバ102は、その後、既に上で論じられた実施態様と同様に、このデータを適切なアクセラレータ104へプッシュ・アウトすることができる。
例えば、サーバ102が飛行機のモデルを含む実施態様を考察する。ユーザは、該ユーザのクライアント・マシン106上の実時間ディスプレイで飛行機のグラフィカル・モデルを通してナビゲートする。複数のユーザからの要求に基づいて、サーバ102は、ユーザの大部分が手荷物コンパートメントの第1レベルにいるときには彼らが手荷物コンパートメントの第2レベルへ移動すると判定する。このとき、受け取られた要求に基づいてユーザが手荷物コンパートメントの第1レベルにいるとサーバ102が判定すると、サーバ102は手荷物コンパートメントの第2レベルについてのデータを対応するアクセラレータ(1つまたは複数)104へプッシュすることができる。従って、アクセラレータ104は、ユーザからの第2レベルにアクセスする要求を受け取る前に手荷物コンパートメントの第2レベルについてのデータを既に持っている(さらに、場合によっては該データを既に処理してある)。この実施態様は、サーバ102からのこのデータにアクセスする前に第2レベルへのアクセスのための要求が受け取られるまでアクセラレータ104が待たなければならないコンフィギュレーションにおいてアクセラレータ104が通常経験する遅れを緩和する。
さらなる実施態様では、データ・アクセス・マネージャ118は、アクセラレータ104へプッシュするデータを決定する要求を満たすためにアクセラレータ104によりプルされているデータを監視する。これらの実施態様は、要求がユーザ・クライアント106からアクセラレータ104へ送られるかあるいは上で論じられたプロトコル・トンネリング実施態様を用いてユーザ・クライアント106からサーバ102へ送られる環境コンフィギュレーションに適用可能である。アクセラレータ104が要求を満たすためにサーバ102からデータをプルすると、サーバ102はどんな関連データをもアクセラレータ104へプッシュすることができるので、アクセラレータ104は必要時に既にこのデータを持っていて、さらなるプル操作を行わなくても良い。例えば、データ・セット110が階層ツリーのような階層性を持って格納されたデータを含む実施態様では、アクセラレータ104がツリーの頂部エレメントをプルしているとサーバ102が判定すると、サーバは、アクセラレータ104がそのプルされている頂部エレメントと関連する葉エレメントを結局は必要とするようになると予測/推測する。従って、サーバ102は、それらの葉エレメントをアクセラレータ104へプッシュする。一実施態様では、これらのプッシュ/プル操作はタンデム式に行われる、すなわち、サーバがデータをアクセラレータへプッシュ・アウトし、同時にアクセラレータは関連するデータをサーバからプルする。
他の1つの実施態様では、サーバ102は、アクセラレータ104へプッシュするデータを決定するために、データ・アクセス・マネージャを介して、アクセラレータ104によりプルされているデータのセマンティック解析を行う。換言すれば、サーバ102は、この実施態様では、アクセラレータ104により現在プルされつつあるデータに関連する全てのデータを送るだけではなくて、プルされたデータに関連のあるデータを送る。例えば、サーバ102に存在するデータ・セット110が仮想世界についてのものである例を考察する。ユーザはユーザ・クライアント106を介して、該ユーザが選択できる3つの異なる経路が存在するエリアへナビゲートする。これら3つの経路をユーザに対して表示するためにアクセラレータ104がデータをサーバ102からプルしているとき、サーバ102は、このプルされたデータをセマンティック解析し、ユーザは第2および第3の経路のための鍵を入手していないのでユーザは第1経路を選択できるだけであると判定する。従って、サーバ102は第1経路と関連付けられているデータをアクセラレータ104へプッシュするだけである。まさしくデータ・セット・ユーセージ・ローカリティに基づくデータをプッシュする強行アプローチは効率が悪そうであることが理解されるであろう。この強行アプローチは、アドレスされているデータ・アイテムに隣接しているけれどもユーザ・アプリケーションには役立たないデータ・アイテムをもたらすことがある。代わりに、本発明の1つ以上の好ましい実施態様は、データをアクセラレータ104へプッシュするためにユーザにより操作されるアプリケーション−レベル・オブジェクトとのローカリティおよびアフィニティが使用され得るように、要求をセマンティックに解析する。この方策は、待ち時間を減少させると共に、“プッシュ”されたデータをアプリケーション・ユーザ・コンテキストにもっと役立つようにすることによって効率向上を可能にする。
プッシュ/プル・データ移動は、より大きなモデルの中にネストさせられている複数のモデルの処理を著しく向上させることができるということに留意するべきである。アクセラレータ104がデータをサーバからプルし、そのデータが、独立のモデルが画定されているエンティティに関係するときには、サーバ102は該モデル・データを直接アクセラレータ104へプッシュすることができる。爾後のアクセスは全て、ネストさせられているモデルのローカル・コピーに向けられる。同時の読み出しおよび書き込みのための該モデルの共有は、ロッキングまたはコヒーレントなアップデートによって成し遂げられ得る。
プリフェッチ・パイプライニング
上述の協調スペキュラティブ・データ・プッシュ/プルの実施態様のほかに、ハイブリッド・サーバ114はアプリケーション・レベル・プリフェッチング、すなわち明示的プリフェッチングのためにも設定される。この実施態様では、NFSベースの読み出しの間に暗黙のプリフェッチングが行われ(mmapされたfileshareにおけるfreadまたはread)、明示的プリフェッチングは、実行されているアプリケーションのセマンティクスに基づいてデータをプリフェッチするために使用される。暗黙のプリフェッチングは、空間的ローカリティの故に切れ目無く配置されているデータ・ブロックをもたらすことができるけれども、アプリケーション・ユーザ・コンテキストには有用でないかもしれない。仮想世界またはモデリング/グラフィカル環境における1つの代表的なアプリケーション・ユーザ・コンテキストは、階層および関係を有する数百ないし数千のオブジェクトから成る。明示的プリフェッチングは、ユーザ・アプリケーション・コンテキストにおけるオブジェクト・ローカリティおよびアフィニティがプリフェッチングのために使用されることを可能にする。これらのオブジェクトは必ずしもメモリにおいて切れ目無く置かれない。明示的プリフェッチングは、ユーザの動作に従うので、ユーザにとっては強行的な暗黙のプリフェッチより役に立ちそうである。一実施態様では、アプリケーションにおけるユーザの状態情報に基づいて、該アプリケーションは、アプリケーションまたはユーザが必要とするかもしれないデータのブロックを前もって要求することができる。そのようなブロックは、エージング・アルゴリズムまたは使用されていない時間が最も長いものを選ぶ(least recently used(LRU))アルゴリズムを用いる適切な置換方策でスペキュラティブ・キャッシュに格納される。このことは、スペキュラティブ・ブロックがどのような決定性のキャッシュされているデータにも取って代わらないことを可能にする。
一実施態様では、1つ以上のアクセラレータ104は、図6に示されているように、ユーザ・クライアント106上で動作しているアプリケーション604のためにデータをプリフェッチする1つ以上のプリフェッチャ602を含む。ユーザ・クライアント106上で動作するアプリケーション604の状態維持処理はサーバ102上で動作し得ることが理解されるであろう。アプリケーション処理は実際にはサーバ102に分散させられることができ、ユーザ・クライアントのバット・プリフェッチ(but prefetch)はユーザ・クライアント106での処理によりトリガーされ得る。しかし、該1つ以上のプリフェッチャはサーバ・システム102にも同様に存在し得ることにも留意するべきである。プリフェッチャ(1つまたは複数)602は、該アプリケーションの現在の状態と関連付けられた複数の選択肢、状況、シナリオなどと関連付けられたデータをロードするn−ウェイ選択プリフェッチャである。該プリフェッチャは、複数の次元に沿うプリフェッチ選択を行うためにユーザ選択肢および優先権、ユーザ・インタラクションを必要とする有望なモデル、現在のアプリケーション状態、(サーバ102に)入ってくる外部ストリーム状態、などを含むことのできる、サーバ102もしくはアクセラレータ(1つまたは複数)104またはその両方において、あるいはユーザ・クライアント106において維持されている情報のセット606を分析する。該n−ウェイ・プリフェッチャは、入力として、1セットの種々のプリフェッチャのプリフェッチ要求を取る。各プリフェッチャは種々の選択基準に基づいて要求を行い、該n−ウェイ・プリフェッチャは1つ以上のプリフェッチャの要求を出すことを選ぶことができる。
例えば、サーバ102上で動作する仮想世界のようなアプリケーションを考察する。この例では、ユーザはユーザ・クライアント106を介して、ユーザが2方向のうちの1つに進むことを可能にするドアへ自身をナビゲートする。ユーザが該ドアに近づくと、該アプリケーションは、ユーザがアクセラレータ104で取ることのできる全ての可能な方向からブロックをキャッシュすることができる。ユーザが1つの方向を選ぶことを選択すると、1つの“方向”に対応するデータは維持されることができ、他の“方向”データは落とされ得る。ユーザはメモリ可用性およびサービス品質要件に依存して将来の使用のために全ての“方向”が維持され得るように、常に自分の歩みを後戻りすることができる。プリフェッチングは、もしデータがプリフェッチされなかったならば、ユーザが通常経験することになる遅延を減少させる。
さらに、或る場合にはユーザは2つの方向のうちのどちらをも選択できるというわけではなくて該方向のうちの一方だけを選択できる。従って、プリフェッチャ602は、ユーザが選択し得る経路を特定してその経路についてのデータだけをプリフェッチするために、ユーザ選択履歴のようなプリフェッチ情報606を解析する。これは、上で論じられたセマンティック解析実施態様に似ている。
一実施態様では、アクセラレータ104は、ユーザ・クライアント106に存在するアプリケーション604からのプリフェッチ要求を記憶するプリフェッチ要求キュー608を含む。例えば、複数の取られ得る経路を伴うドアがユーザに対して表示される状態にアプリケーション604があるとすれば、アプリケーション604は、該経路の各々について1つずつ、複数のプリフェッチ要求をアクセラレータ104に送る。これらのプリフェッチ要求は、アクセラレータ104が所与の経路に関連付けられているデータをプリフェッチすることを要求している。アクセラレータ104は、これらのプリフェッチ要求608の各々をプリフェッチ要求キュー610に格納する。プリフェッチ要求キュー610は、DRAMのような高速メモリ内の一時領域、高速メモリ内の専用部分であることができ、あるいはフラッシュ・メモリのような低速メモリ内に存在することができる。プリフェッチャ602は、プリフェッチ要求と関連付けられたリソース要件に基づいて該キュー内のプリフェッチ要求の各々にスコアを割り当てる。例えば、該スコアは、要求されたデータをプリフェッチするためのメモリ要件に基づくことができる。スコア割り当ては、プリフェッチングがユーザ経験をどれだけ増やすかということに基づくこともできる。例えば、スコアは、所与のデータ・セットをプリフェッチすることによって待ち時間がどれだけ減らされるかということに基づいて割り当てられることができる。
スコアが割り当てられると、プリフェッチャ602は、最高のスコアまたは所与のスレショルドより上のスコアのセットを有する、満たされるべきプリフェッチ要求のセットをプリフェッチ要求キュー610から選択する。アクセラレータ104は、必要とされるデータをプリフェッチするために該プリフェッチ要求をサーバ102に送る。複数のプリフェッチャ602が同じアクセラレータにおいてあるいは異なる複数のアクセラレータにわたって利用される実施態様では、もし同じデータがプリフェッチされるべく要求されたならば、同じデータ・セットに対するこれらの複数のプリフェッチ要求はマージされて単一の要求とされてサーバ102に送られることができる。
プリフェッチ要求はサーバ102によりあるいはアクセラレータ104により落とされ得ることに留意するべきである。例えば、大抵の場合に、プリフェッチングのために要求されるデータは将来の何時かに使用されるべきものであるので、該データはアプリケーション604にとっては重要ではない。従って、サーバ102またはアクセラレータ104がプリフェッチ要求を処理するための充分なリソースを含んでいなければ、該要求は落とされ/無視され得る。
サーバ102は、プリフェッチ要求を満たすためにデータを取り出し、このデータをアクセラレータ104に送り返す。一実施態様では、サーバ102は、データ・アクセス・マネージャを介して、追加のデータもプリフェッチされるべきであるかどうか判定するためにプリフェッチ・データを分析する。サーバ102は、プリフェッチされる現在のデータ・セットに関連する他のオブジェクトを識別し、これらの他のオブジェクトは同じアドレス空間内にまたは階層ツリーの同じノードにまたは不連続的アドレス空間にまたは該階層ツリーの異なるノード/層に存在することができる。例えば、プリフェッチされるデータ・セットが野球の試合における投手と関連付けられているとすれば、その投手キャラクタを試合に登場させるための情報を取り出すほかに、サーバは、その所与の投手キャラクタが投げることのできる直球、カーブ、スライダー、またシンカーのような投球のタイプ、および該投手キャラクタがこれらの投球を投げることのできるスピード範囲のような情報も取り出すことができる。
サーバ102は、その後、プリフェッチされたデータをアクセラレータ104に送る。アクセラレータ104は、このデータを、プリフェッチされたデータのために確保されているメモリ614部分612に格納する。例えば、DRAMのような高速メモリにプリフェッチ処理で負担が不必要にかからないように、アクセラレータ104はこのデータをフラッシュのような低速メモリの部分に格納する。上で論じられたように、プリフェッチ・データは将来の何時かに使用されるべきものであるので、該データは普通はアプリケーションにとって重要ではない。しかし、プリフェッチされたデータは高速メモリにも格納され得る。一実施態様では、メモリ内でこれらのプリフェッチ・データ部分の各々は1セットのアクセラレータを横断して集合させられる。従って、これらのプリフェッチ・データ部分は、該アクセラレータを横断して単一のキャッシュとして振る舞う。これは、アクセラレータ104が互いを横断してデータを共有することを可能にする。
アクセラレータ104は、一実施態様では、プリフェッチを記憶するメモリが満杯にならないように、あるいは新しいプリフェッチ・データが満杯時にプリフェッチ・メモリ612に書き込まれ得るように、ページ置換メカニズムを利用する。この実施態様では、アクセラレータ104は、プリフェッチ・メモリ612内のデータの使用を監視する。データが使用されるたびに、その所与のデータ・セットのためにカウンタがアップデートされる。アクセラレータ104は、所与のデータ・セットに関連する計算の複雑さも判定する。この計算の複雑さは、プリフェッチされたデータ・セットを処理するために必要とされるリソース、処理時間などを基礎とすることができる。アクセラレータ104は、該カウンタ・データもしくはそれと関連する計算の複雑さまたはその両方に基づいて各々のプリフェッチされたデータ・セットにスコア/ウェイトを割り当てる。プリフェッチャは、メモリ612が実質的に満杯になったときに新しいデータをその中に格納できるように、メモリ612から除去するべきプリフェッチされたデータ・セットを識別するためにこのスコアを用いる。プリフェッチ・エージェントが、アクセラレータ104上のプリフェッチャ602の補助としてサーバ102上で動作することができる。該プリフェッチ・エージェントは、要求をアクセラレータ104に集めて互いに関係付け、要求の重複を避けるためにサーバ・メモリ階層に要求の単一のセットを与える。該プリフェッチ・エージェントは、対応する結果を高級なDRAM、より安価なフラッシュ・メモリあるいはディスク記憶装置に保存するためにプリフェッチ要求の該“スコア”を用いることができる。
ハイブリッド・サーバにおいてユーザを多重化し仮想化を可能にすること
1つ以上の実施態様において、ハイブリッド・サーバ114は複数のユーザをサポートする。これは種々の仕方で成し遂げられる。例えば、別々の物理的アクセラレータ、プライベート・キャッシュ・クライアントを伴う仮想化されたアクセラレータ、スヌーピー・プライベート・クライアント・キャッシュを伴う仮想化されたアクセラレータ、エラスティック・プライベート・クライアント・キャッシュを伴う仮想化されたアクセラレータが使用され得る。別々の物理的アクセラレータ104が利用される1つの実施態様では、各ユーザに別々の物理的アクセラレータが割り当てられる。これは、共有および関連するセキュリティ問題のオーバーヘッド無しで各ユーザが1つの物理的アクセラレータに限定され得るので、有利である。図7は、仮想化されたアクセラレータが使用される1つの実施態様を示す。特に、図7は、アクセラレータ104のうちの1つ以上が論理的に1つ以上の仮想化されたアクセラレータ702、704にパーティショニングされ、その各々がプライベート・クライアント・キャッシュ706を含むことを示す。この実施態様では、各ユーザは1つの仮想化されたアクセラレータ702、704を割り当てられる。アクセラレータ104の物理的リソースは、仮想化されたアクセラレータ702、704間で共有される。各々の仮想化されたアクセラレータ702、704は1つのプライベート・クライアント・キャッシュ706を含み、該プライベート・クライアント・キャッシュは、自分がマッピングされる仮想化されたアクセラレータだけによって使用され得る。
仮想化されたアクセラレータ702、704を利用する他の1つの実施態様では、プライベート・キャッシュ706はスヌーピー・プライベート・クライアント・キャッシュである。これらのプライベート・クライアント・キャッシュは、少なくとも1つの共通モデル・アイデンティフィケーション(ID)またはデータ・セット識別子が異なるユーザ間で共有されているならば、他のクライアント・キャッシュへのトラフィックをスヌープすることができる。これらのプライベートな仮想化されたキャッシュ706は複数のバーチャル・アクセラレータ104に分散させられ得る。この実施態様では、仮想化されたアクセラレータ702、704は、同じ物理的アクセラレータ104上のデータをスヌープしている。物理的アクセラレータ104上の仮想化されたアクセラレータ702、704を管理する仮想化されたアクセラレータ・ディレクトリ・エージェント710は、同じデータ・セット110、例えばモデル・データ、を共有する他の仮想化されたアクセラレータ702、704に要求をブロードキャストする。プライベート・クライアント・キャッシュ706は、仮想化されたアクセラレータのうちの1つがサーバ102から要求したデータを該プライベート・クライアント・キャッシュが既に持っているならば、データで応答することができる。これは、仮想化されたアクセラレータ702、704間に仮想バスを生じさせる。物理的アクセラレータ104上の仮想化されたアクセラレータ702、704は、入力データおよび出力データを共有することができる。ユーザが同じ状態を含むとすれば、例えば、複数のユーザが仮想世界の同じエリアまたはボリュームの中に存在するとすれば、ユーザの要求およびデータをより効率良く処理するために、仮想化されたアクセラレータ702、704は結合される(すなわち、仮想アクセラレータ702は作業を仮想アクセラレータ704のためにも実行する)ことができ、あるいは論理的に分解されることができる。さらに、複数のデータ・セットが1つの仮想化されたアクセラレータ702、704上でデイジーチェーン接続されることができる。例えば、飛行機のモデルは複数のモデルから構成され得る。従って、1つの統合されているモデルと比べて、仮想化されたアクセラレータにおいてモデルの階層が作られ得る。例えば、そのモデル階層からのモデルが各仮想アクセラレータ702、704に割り当てられ得る。仮想アクセラレータ702、704は、所与の物理的アクセラレータ104上でインスタンス化され得る。これは、仮想アクセラレータ702、704がデータを共有することを可能にする。なぜならば、直ぐ近くの仮想アクセラレータ同士は全て同じ階層に属するデータ・セットをモデル化するので、データ・セットのアクセスはおそらく直ぐ近くの仮想アクセラレータから提供され得るからである。仮想アクセラレータ702、704は複数の物理的アクセラレータ104にまたがることもできる。この場合、プライベート・クライアント・キャッシュ706は、複数の物理的アクセラレータ104にまたがるメモリ・リソースから構成され得る。
エラスティック・プライベート・クライアント・キャッシュを伴う仮想化されたアクセラレータを利用する実施態様では、各ユーザは1つの仮想化されたアクセラレータ702、704に割り当てられる。プライベート・クライアント・キャッシュは複数の物理的アクセラレータにまたがって存在する、すなわち、メモリ・リソースは複数のアクセラレータ104にまたがって使用され得る。各プライベート・クライアント・キャッシュ706は、“公称”および“ハイ”キャッシュ・サイズを伴って作られる。キャッシュ・スペースが使用されているとき、仮想アクセラレータ702、704のキャッシュ・サイズは“ハイ”に増やされることができる。他の仮想アクセラレータ702、704が自分のキャッシュ・サイズを増やすことを選択したけれどもメモリ・リソースが利用可能でなければ、最高の優先順位を有する仮想アクセラレータ702、704が性能目的のためにより高いキャッシュ・サイズの使用を許され得る。アクセラレータのキャッシュ・サイズにおける弾力性(Elasticity)により、ユーザ・クライアントの要求を満たすために必要なすべてのデータをキャッシュすることが可能になる。
当業者により認められるであろうように、本発明の側面はシステム、方法、またはコンピュータ・プログラム製品として具体化され得る。従って、本発明の側面は、完全にハードウェアの実施態様、完全にソフトウェアの実施態様(ファームウェア、常駐ソフトウェア、マイクロ−コードなどを含む)、あるいは、ここで“回路”、“モジュール”もしくは“システム”と全て一般的に称され得るソフトウェアとハードウェア側面とを結合させた実施態様の形をとることができる。さらに、本発明の側面は、コンピュータ可読プログラム・コードがその上に具体化されている1つ以上のコンピュータ可読媒体において具体化されたコンピュータ・プログラム製品の形をとることができる。
1つ以上のコンピュータ可読媒体の任意の組み合わせが利用され得る。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であり得る。コンピュータ可読記憶媒体は、例えば、それらに限定はされないが、電子、磁気、光学、電磁、赤外線、もしくは半導体のシステム、装置、もしくはデバイス、または前記のものの任意の適切な組み合わせであり得る。コンピュータ可読記憶媒体のより具体的な例(非網羅的なリスト)は次のもの:1つ以上のワイヤを有する電気結線、携帯可能なコンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(random access memory(ROM))、消去可能でプログラマブルな読み出し専用メモリ(erasable programmable read−only memory(EPROM)もしくはフラッシュ・メモリ)、光ファイバ、携帯可能なコンパクト・ディスク読み出し専用メモリ(compact disc read−only memory(CD−ROM))、光記憶装置、磁気記憶装置、または前記のものの任意の適切な組み合わせ、を含む。この文書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、もしくはデバイスにより、またはこれらと関連して、使用されるプログラムを包含し、もしくは記憶することのできる任意の有形媒体であり得る。
コンピュータ可読信号媒体は、例えばベースバンドでまたは搬送波の一部としてその中にコンピュータ可読プログラム・コードが具体化されている伝播させられるデータ信号を含み得る。そのような伝播させられる信号は電磁、光学、もしくはそれらの任意の適切な組み合わせを含むがそれらに限定はされない種々の形のうちの任意の形を取り得る。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなくて、命令実行システム、装置、もしくはデバイスにより、またはこれらと関連して、使用されるプログラムを伝達し、伝播させ、もしくはトランスポートすることのできる任意のコンピュータ可読媒体であり得る。
コンピュータ可読媒体上に具体化されたプログラム・コードは、無線、ワイヤライン、光ファイバ・ケーブル、RFなど、または前記のものの任意の適切な組み合わせを含むが、これらに限定はされない、任意の適切な媒体を用いて伝送され得る。
本発明の態様のための操作を実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのようなオブジェクト指向プログラミング言語と、“C”プログラミング言語もしくは類似のプログラミング言語のような在来の手続き型プログラミング言語とを含む1つ以上のプログラミング言語の任意の組み合わせで書かれることができる。該プログラム・コードは、完全にユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上でかつ部分的にリモート・コンピュータ上で、または完全にリモート・コンピュータもしくはサーバ上で実行することができる。後者のシナリオでは、リモート・コンピュータはローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通してユーザのコンピュータに接続されることができ、あるいは接続は外部コンピュータへなされることができる(例えば、インターネット・サービス・プロバイダを用いてインターネットを通して)。
本発明の種々の好ましい実施態様の側面が、下で、本発明の実施態様に従う方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照して記載される。該フローチャート図もしくはブロック図またはその両方の各ブロックと、該フローチャート図もしくはブロック図またはその両方のブロックの組み合わせとはコンピュータ・プログラム命令により実装され得ることが理解されるであろう。これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラマブルなデータ処理装置のプロセッサを介して実行する該命令が該フローチャートもしくはブロック図またはその両方の1つもしくは複数のブロックにおいて明示される機能群/行為群を実行する手段を生じさせるように、汎用コンピュータ、専用コンピュータ、またはマシンを生じさせる他のプログラマブルなデータ処理装置のプロセッサに提供され得る。
これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に格納されている命令が該フローチャート図もしくはブロック図またはその両方の1つまたは複数のブロックにおいて明示される機能群/行為群を実行する命令を含む製品を生じさせるように、特定の仕方で機能するようにコンピュータ、他のプログラマブルなデータ処理装置、または他のデバイスを指揮することのできるコンピュータ可読媒体に格納されることもできる。
該コンピュータ・プログラム命令は、コンピュータまたは他のプログラマブルな装置上で実行する命令が該フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて明示される機能/行為を実行するためのプロセスを提供するように、コンピュータ実行プロセスを生じさせるために一連の動作ステップを該コンピュータ、他のプログラマブルな装置または他のデバイス上で実行させるべくコンピュータ、他のプログラマブルなデータ処理装置、または他のデバイスにロードされることもできる。
動作流れ図
ここで図8〜17を参照すると、図中のフローチャートおよびブロック図は、本発明の種々の好ましい実施態様に従うシステム、方法、およびコンピュータ・プログラム製品の可能な実現形態のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の中の各ブロックは、明示された論理機能(1つまたは複数)を実行するための1つ以上の実行可能な命令を含むコードのモジュール、セグメント、または部分を表すことができる。或る代わりの実現形態では、ブロック内に記されている機能は、図に記されている順序から外れて生じ得ることにも留意するべきである。例えば、連続して示されている2つのブロックは、実際には、関係する機能に依存して、実質的に同時に実行され得、あるいは、それらのブロックは時には逆の順序で実行され得る。ブロック図もしくはフローチャート図またはその両方の各ブロック、ならびにブロック図もしくはフローチャート図またはその両方の中のブロックの組み合わせは、明示されている機能または行為を実行する専用ハードウェア・ベースのシステムにより、または専用ハードウェアおよびコンピュータ命令の組み合わせにより、実行され得ることにも留意するべきである。
図8は、上で論じられたアウト・オブ・コア処理環境においてサーバ・システムでデータを前処理することの一例を示す動作流れ図である。図8の動作の流れは、ステップ802から始まって直ぐにステップ804に流入する。サーバ102は、ステップ804で、アクセラレータ104からデータ・セット110を求める要求を受け取る。サーバ102は、ステップ806で、その要求されているデータ・セットと関連付けられた操作のタイプ、もしくはアクセラレータ104に存在する処理コア112のタイプ、またはその両方を判定する。サーバ102は、ステップ808で、判定された操作タイプもしくは処理コアのタイプまたはその両方に基づいて該データを第1フォーマットから第2フォーマットに変換する。代わりに、サーバ102は、アクセラレータ104により直ちに消費され得る種々の形でデータを格納することができる。サーバ102は、ステップ810で、変換されたデータ・セットをアクセラレータ104に送る。制御の流れは、その後、ステップ812から出る。
図9は、上で論じられた第1データ・アクセス・コンフィギュレーションに従って設定されたアウト・オブ・コア処理環境にあるアクセラレータの一例を示す動作流れ図である。図9の動作の流れはステップ902から始まり、直ぐにステップ904に流入する。アクセラレータ104は、ステップ904で、データ・セット110とインタラクトする要求302をユーザ・クライアント106から受け取る。アクセラレータ104は、ステップ906で、該要求302を解析する。アクセラレータ104は、ステップ908で、要求302と関連付けられたデータ・セット110の全てまたは実質的に全てをサーバ102から取り出す。アクセラレータ104は、ステップ910で、取り出されたデータ304を局所的にキャッシュ306に格納する。アクセラレータ104は、ステップ912で、データ・セット110にアクセスする要求をユーザ・クライアント106から受け取る。アクセラレータ104は、ステップ914で、その要求を満たすために、局所的に格納されたデータ304を処理する。アクセラレータ104は、ステップ916で、その処理されたデータをユーザ・クライアント106に送る。制御の流れは、その後、ステップ918から出る。
図10は、上で論じられた第2データ・アクセス・コンフィギュレーションに従って設定されたアウト・オブ・コア処理環境にあるアクセラレータの他の1つの例を示す動作流れ図である。図10の動作の流れはステップ1002から始まって直ぐにステップ1004に流入する。アクセラレータ104は、ステップ1004で、データ・セット110とインタラクトする要求402をユーザ・クライアント106から受け取る。アクセラレータ104は、ステップ1006で、該要求402を解析する。アクセラレータ104は、ステップ1008で、該要求402と関連付けられているデータ・セット110の部分404をサーバ102から取り出す。アクセラレータ104は、ステップ1010で、取り出されたデータ部分404を局所的にキャッシュ406に格納する。アクセラレータ104は、ステップ1012で、データ・セット110にアクセスする要求をユーザ・クライアント106から受け取る。
アクセラレータ104は、ステップ1014で、該要求がデータ部分404により満たされ得るかどうか判定する。この判定の結果が否定であれば、アクセラレータ104は、ステップ1016で、追加のデータをサーバ102から取り出す。アクセラレータ104は、ステップ1108で、該要求を満たすためにデータ部分404と該追加のデータとを処理する。制御は、その後、ステップ1022へ流れる。もしステップ1014における結果が肯定であれば、アクセラレータ104は、ステップ1020で、該要求を満たすために、キャッシュされたデータ部分404を処理する。アクセラレータ104は、ステップ1022で、処理されたデータをユーザ・クライアント106に送る。制御の流れは、その後、ステップ1024から出る。
図11は、上で論じられたデータ・アクセス・コンフィギュレーションに従って設定されたアウト・オブ・コア処理環境にあるアクセラレータを動的に設定することの一例を示す動作流れ図である。図11の動作の流れはステップ1102から始まって直ぐにステップ1104に流入する。次に続くステップは、サーバ102もしくはアクセラレータ104またはその両方によって実行され得ることに留意するべきである。しかし、単に例示を目的として、以下の議論はサーバ102の観点からのものである。サーバ102は、ステップ1104で、データ・セット110を求める要求をアクセラレータ104から受け取る。サーバ102は、ステップ1106で、データを転送するためにサーバ102とアクセラレータ104との間で使用されるデータ・ポートの第1セットを識別する。
サーバ102は、ステップ1108で、データを転送するためにアクセラレータ104とユーザ・クライアント106との間で使用されるポートの第2セットを識別する。サーバ102は、ステップ1110で、アクセラレータ104により要求されているデータを識別する。サーバ102は、ステップ1112で、データ・セット110へのアクセスを要求しているユーザと関連付けられている属性のセットを特定する。サーバ102は、ステップ1112で、データ・ポートの該第1セット、データ・ポートの該第2セット、要求された該データ・セット、識別されているユーザと関連付けられている該属性とのうちの少なくとも1つに基づくデータ・アクセス・コンフィギュレーションに従ってアクセラレータ104を動的に設定する。制御の流れは、その後、ステップ1114から出る。
図12は、上で論じられたアウト・オブ・コア処理環境においてサーバとアクセラレータとの間に保障されているリンクを動的に確立することの一例を示す動作流れ図である。図12の動作の流れはステップ1202から始まり、直ぐにステップ1204に流入する。次に続くステップはサーバ102もしくはアクセラレータ104またはその両方により実行され得ることに留意するべきである。しかし、単に例示を目的として、以下の議論はサーバ102の観点からのものである。サーバ102は、ステップ1204で、ユーザが完全暗号化リンクを要求しているかどうか判定する。この判定の結果が肯定であるならば、サーバ102は、ステップ1206で、サーバ102とアクセラレータ104との間の通信リンクを完全に暗号化する。制御の流れは、その後、ステップ1208から出る。この判定の結果が否定であれば、サーバ102は、ステップ1210で、アクセラレータ104がサーバ102からのデータをキャッシュするように設定されているかどうか判定する。
この判定の結果が否定であれば、サーバ102は、ステップ1212で、サーバ102とアクセラレータ104との間の通信リンクを完全に暗号化する。制御の流れは、その後、ステップ1214から出る。この判定の結果が肯定であれば、サーバ102は、ステップ1216で、サーバ102とアクセラレータ104との間の通信リンクを、一部のデータを暗号化するかあるいは全てのデータをより低い強さで暗号化するように設定する。サーバ102は、ステップ1218で、部分的データ暗号化または低強度暗号化に起因するシステム信頼度の低下を埋め合わせるために、キャッシュされているデータのためにバルネラビリティ・ウィンドウ・メカニズムを利用するようにアクセラレータ104に命令する。制御の流れは、その後、ステップ1220から出る。
図13は、上で論じられたアウト・オブ・コア処理環境においてアクセラレータによりキャッシュされたデータのためにバルネラビリティ・ウィンドウを維持することの一例を示す動作流れ図である。図13の動作の流れはステップ1302から始まり、直ぐにステップ1304に流入する。サーバ102は、ステップ1304で、キャッシュされているデータのためにバルネラビリティ・ウィンドウ・メカニズムを利用するようにアクセラレータ104に命令する。アクセラレータ104は、ステップ1306で、キャッシュされているデータのためにセキュリティ・カウンタ124を維持する。アクセラレータ104は、ステップ1308で、セキュリティ・カウンタ124が所与のスレショルドより高いかどうか判定する。この判定の結果が否定であれば、制御の流れはステップ1306に戻る。この判定の結果が肯定であれば、アクセラレータ104は、ステップ1310で、データ304をキャッシュ306からパージする。制御の流れは、その後、ステップ1312から出る。
図14は、上で論じられたアウト・オブ・コア処理環境においてサーバでプロトコル・トンネルを利用することの一例を示す動作流れ図である。図14の動作の流れはステップ1402から始まり、直ぐにステップ1404に流入する。サーバ102は、ステップ1404で、プロトコル・トンネル502を確立する。サーバ102は、ステップ1406で、ユーザ・クライアント106からアクセス要求を受け取る。サーバ102は、ステップ1408で、該要求を解析する。サーバ102は、ステップ1410で、該アクセス要求により要求されたデータ・セットを特定する。サーバ102は、ステップ1412で、該アクセス要求をアクセラレータ104に渡し、識別されたデータをアクセラレータ104へプッシュする。結果データをプッシュすることとユーザ・クライアント要求とはアクセラレータ104に対してずらされ得ることに留意するべきである。アクセラレータ104は、ステップ1414で、該アクセス要求とプッシュされたデータとを受け取る。アクセラレータ104は、ステップ1416で、そのプッシュされたデータを、サーバ102からプルされたデータとは別に格納する。制御の流れは、その後、ステップ1418から出る。
図15は、上で論じられたアクセラレータへデータをプッシュするためにセマンティック解析を利用するアウト・オブ・コア処理環境にあるサーバの一例を示す動作流れ図である。図15の動作の流れはステップ1502から始まり、直ぐにステップ1504に流入する。サーバ102は、ステップ1504で、アクセラレータ104からプル要求を受け取る。サーバ102は、ステップ1506で、該プル要求を解析した。サーバ102は、ステップ1508で、要求されたデータが関連データと関連付けられていると特定する。サーバ102は、ステップ1510で、該データと関連付けられている現在のアプリケーション状態と関連付けられているセマンティック情報に基づいて該関連データのサブセットを選択する。サーバ102は、ステップ1512で、該プル要求により要求されたデータと関連データの該サブセットとをアクセラレータ104に送る。制御の流れは、その後、ステップ1514から出る。
図16は、上で論じられたサーバからデータをプリフェッチするアウト・オブ・コア処理環境にあるアクセラレータの一例を示す動作流れ図である。図16の動作の流れはステップ1602から始まり、直ぐにステップ1604に流入する。アクセラレータ104は、ステップ1604で、サーバ102およびユーザ・クライアントにおいて動作しているアプリケーション604からプリフェッチ要求608を受け取る。アクセラレータ104は、ステップ1606で、プリフェッチ要求608をプリフェッチ要求キュー610に格納する。アクセラレータ104は、ステップ1608で、少なくとも各要求608のリソース要件に基づいて各プリフェッチ要求608にスコアを割り当てる。アクセラレータ104は、ステップ1610で、所与のスレショルドより高いスコアを有するプリフェッチ要求のセットを選択する。アクセラレータ104は、ステップ1612で、そのプリフェッチ要求のセットと関連付けられたデータをサーバ102およびユーザ・クライアントからプリフェッチする。制御の流れは、その後、ステップ1614から出る。
図17は、アウト・オブ・コア処理環境にあるアクセラレータを上で論じられた複数の仮想化されたアクセラレータに論理的にパーティショニングすることの一例を示す動作流れ図である。図17の動作の流れはステップ1702から始まり、直ぐにステップ1704に流入する。次に続くステップはサーバ102もしくはアクセラレータ104またはその両方により実行され得ることに留意するべきである。サーバ102は、ステップ1704で、少なくとも1つのアクセラレータ104を1つ以上の仮想化されたアクセラレータ702、704に論理的にパーティショニングする。サーバ102は、ステップ1706で、各々の仮想化されたアクセラレータ702、704上にプライベート・クライアント・キャッシュ706を設定する。第1の仮想化されたアクセラレータ702は、ステップ1708で、第2の仮想化されたアクセラレータ704が同じデータ・セット110と関連付けられていると判定する。第1および第2の仮想化されたアクセラレータ702、704上のプライベート・キャッシュ706は、ステップ1710で、データのために互いを監視する。第1および第2の仮想化されたアクセラレータ702、704は、ステップ1712で、互いの間でデータを転送する。制御の流れは、その後、ステップ1714から出る。
情報処理システム
図18は、図1に関して上で論じられた動作環境100で利用され得る情報処理システム1800のより詳細な図を示すブロック図である。情報処理システム1800は、本発明の1つ以上の好ましい実施態様を実装するように適応させられた適切に設定された処理システムに基づいている。同様に、どのような適切に設定された処理システムも、本発明の好ましい実施態様によって情報処理システム1800として使用され得る。情報処理システム1800はサーバ・システム102またはアクセラレータ・システム104であり得ることに留意するべきである。
情報処理システム1800はコンピュータ1802を含む。コンピュータ1802は、メイン・メモリ1806、大容量記憶装置インターフェース1808、およびネットワーク・アダプタ・ハードウェア1810に接続されているプロセッサ(1つまたは複数)1804を有する。システム・バス1812は、これらのシステム・コンポーネントを相互接続する。メイン・メモリ1806は、一実施態様では、データ・セット110、データ・アクセス・マネージャ118、セキュリティ・マネージャ122、メモリ・システム202、データ・プリプロセッサ212、スヌーピング・モジュール504、およびアプリケーション604のようなサーバ・システム102のコンポーネント、または、上で論じられた要求マネージャ120、セキュリティ・カウンタ124、エラスティック・レジリエンス・モジュール126、ゲーテッド・メモリ210、要求302、キャッシュ306、プリフェッチャ602、およびプリフェッチ要求キュー610のようなアクセラレータ104のコンポーネントを含む。
メイン・メモリ1806に同時に存在するものとして図示されているけれども、メイン・メモリ1806のそれぞれのコンポーネントが完全にメイン・メモリ1806に常時あるいは同時にさえ存在する必要はないことは明らかである。一実施態様では、情報処理システム1800は、あたかもメイン・メモリ1806およびデータ記憶装置1816のような複数のより小型の記憶エンティティへのアクセスの代わりに、ここでコンピュータ・システム・メモリと称される大きな単一の記憶エンティティへのアクセスをプログラムが有するかのように該プログラムが振る舞うことを可能にする在来の仮想アドレス指定メカニズムを利用する。“コンピュータ・システム・メモリ”という用語は、ここでは情報処理システム1800の仮想メモリ全体を包括的に指すように使われていることに留意されたい。
大容量記憶装置インターフェース1808は、大容量記憶装置1814のような大容量記憶装置を情報処理システム1800に接続するために使用される。1つの特定のタイプのデータ記憶装置は、コンパクト・ディスク(Compact Disc(CD))ドライブまたはデジタル・バーサタイル・ディスク(Digital Versatile Disc(DVD))ドライブのようなオプティカル・ドライブであり、これらは、CD/DVD1816のような(ただし、これらに限定されない)コンピュータ可読媒体またはストレージ製品にデータを格納し、これらからデータを読み出すために使用され得る。他の1つのタイプのデータ記憶装置は、例えばニュー・テクノロジー・ファイル・システム(New Technology File System(NTFS))タイプのファイル・システム操作をサポートするように設定されたデータ記憶装置である。
コンピュータ1802のために唯一の中央処理システム(central processing system(CPU))1804が図示されているけれども、複数のCPUを有するコンピュータ・システムも同様に効果的に使用され得る。本発明の実施態様は、さらに、CPU1804から処理を下ろすために使用される別々の完全にプログラムされたマイクロプロセッサを各々含むインターフェースを組み込む。メイン・メモリに含まれるオペレーティング・システム(図示されていない)は、Linux(R)、UNIX(R)、Microsoft(R)のWindows XP、およびMicrosoft(R)のWindows Server 2003オペレーティング・システムのような適切なマルチタスキング・オペレーティング・システムである。Linuxは、米国、他の国、またはその両方におけるライナス・トーバルズの登録商標である。UNIXは、米国および他の国におけるジ・オープン・グループの登録商標である。Microsoft、およびWindowsおよびWindowsロゴは米国、他の国、あるいはその両方におけるマイクロソフト・コーポレーションの商標である。本発明の実施態様は、他の任意の適切なオペレーティング・システムを使用することができる。本発明の或る好ましい実施態様は、オペレーティング・システム(図示されていない)のコンポーネントの命令が情報処理システム1800の中に置かれた任意のプロセッサ上で実行されることを可能にする、オブジェクト指向フレームワーク・メカニズムのようなアーキテクチャを利用する。ネットワーク・アダプタ・ハードウェア1810は、ネットワーク108へのインターフェースを提供するために使用される。本発明の実施態様は、今日のアナログ技術もしくはデジタル技術またはその両方を含む任意のデータ通信接続で、あるいは将来のネットワーキング・メカニズムを介して動作するように適応させられ得る。
本発明の代表的な好ましい実施態様が完全に機能的なコンピュータ・システムの文脈で記述されたけれども、当業者は、様々な実施態様がCDまたはDVD、例えばCD1816、CDランダム・アクセス・メモリ(ROM)、もしくは他の形の記録可能媒体を介して、あるいは任意のタイプの電子伝送メカニズムを介してプログラム製品として配布され得ることを認めるであろう。
非限定的な例
本発明の特定の実施態様が開示されたけれども、当業者は、本発明の範囲から逸脱すること無く特定の実施態様に変更が加えられ得ることを理解するであろう。従って、本発明の範囲はそれらの特定の実施態様に限定されるべきではなくて、添付されている請求項は本発明の範囲内の全てのそのようなアプリケーション、改変、および実施態様を含むことが意図されている。
本発明の種々の好ましい実施態様例が完全に機能的なコンピュータ・システムの文脈で論じられたけれども、当業者は、CDまたはDVD、例えば、CD、CD−ROM、もしくは他の形の記録可能媒体を介して、あるいは任意のタイプの電子伝送メカニズムを介して代わりの実施態様に従って、またはその両方で、コンピュータ可読記憶媒体またはプログラム製品として種々の実施態様が配布され得ることを認めるであろう。

Claims (15)

  1. アクセラレータ・システムにおいて、アウト・オブ・コア処理環境にあるデータにアクセスする方法であって、
    複数のデータ・セットを管理するサーバ・システムからデータ・アクセス・コンフィギュレーションを受け取るステップと、
    前記データ・アクセス・コンフィギュレーションに基づいて、前記サーバ・システムから取り出されたデータ・セットが局所的に格納されるべきであると判定するステップと、
    前記データ・セットが局所的に格納さるべきであるとの判定に応答して、前記サーバ・システムと前記アクセラレータ・システムとの間の通信リンクを、一部のデータを暗号化するかあるいは全てのデータをより低い強さで暗号化するように設定するステップであって、前記より低い強さとは、前記データ・セットが局所的に格納されるべきでないとの判定に応答して前記サーバ・システムと前記アクセラレータ・システムとの間の通信リンクを完全に暗号化する場合と比較してより低い強さを意味する、前記ステップと、
    ユーザ・クライアントから、所与のデータ・セットとインタラクトする要求を受け取るステップと、
    前記所与のデータ・セットの少なくとも1つの部分を前記通信リンクを介して前記サーバ・システムから取り出すステップと、
    受け取られた前記データ・アクセス・コンフィギュレーションに基づいて前記所与のデータ・セットの前記少なくとも1つの部分を局所的にメモリに格納するステップと、
    を含む方法。
  2. 前記所与のデータ・セットにアクセスする要求を前記ユーザ・クライアントから受け取るステップと、
    局所的にメモリに格納された前記所与のデータ・セットの前記少なくとも1つの部分が前記アクセスする要求を満たすと判定するステップと、
    前記アクセスする要求に基づいて局所的にメモリに格納された前記所与のデータ・セットの前記少なくとも1つの部分を処理するステップと、
    処理された前記所与のデータ・セットの前記少なくとも1つの部分を前記ユーザ・クライアントに伝送するステップと、
    をさらに含む、請求項1に記載の方法。
  3. 前記サーバ・システムから前記所与のデータ・セットの少なくとも1つの部分を取り出す前記ステップは前記所与のデータ・セットの全体を取り出すことをさらに含む、請求項1ないし請求項2のいずれかに記載の方法。
  4. 前記所与のデータ・セットにアクセスする要求を前記ユーザ・クライアントから受け取るステップと、
    局所的にメモリに格納された前記所与のデータ・セットの前記部分が前記アクセスする要求を完全には満たさないと判定するステップと、
    前記判定に応答して、前記所与のデータ・セットの少なくとも1つの追加部分を前記サーバ・システムから取り出すステップと、
    前記アクセスする要求に基づいて局所的にメモリに格納された前記所与のデータ・セットの前記部分および前記追加部分を処理するステップと、
    処理された前記所与のデータ・セットの前記部分および前記追加部分を前記ユーザ・クライアントに伝送するステップと、
    をさらに含む、請求項1ないし請求項3のいずれかに記載の方法。
  5. 前記所与のデータ・セットの前記少なくとも1つの部分を局所的にメモリに格納することに応答して、前記所与のデータの前記部分と関連付けられたセキュリティ・カウンタを起動させるステップと、
    前記所与のデータの前記部分に関して、前記メモリの中での所与の量の時間と前記所与のデータの前記部分へのアクセスの数とを監視するステップと、
    前記メモリの中での前記所与の量の時間と前記所与のデータの前記部分へのアクセスの前記数とのうちの少なくとも1つに基づいて前記セキュリティ・カウンタをインクリメントするステップと、
    をさらに含む、請求項1ないし請求項4のいずれかに記載の方法。
  6. 前記セキュリティ・カウンタをインクリメントすることに応答して、前記セキュリティ・カウンタと関連付けられている値が所与のスレショルドより高いと判定するステップと、
    前記所与のデータの前記部分を前記メモリから除去するステップと、
    をさらに含む、請求項5に記載の方法。
  7. 前記所与のデータ・セットの前記少なくとも1つの部分を局所的にメモリに格納する前記ステップは、前記所与のデータ・セットの前記少なくとも1つの部分を局所的にキャッシュ・メモリに格納する前記ステップを含む、請求項1ないし請求項6に記載の方法。
  8. アウト・オブ・コア処理環境にあるサーバ・システムにおいて、アクセラレータ・システムによるデータへのアクセスを管理する方法であって、
    所与のデータ・セットへのアクセスを求めるアクセラレータ・システムからの要求を受け取るステップと、
    前記所与のデータ・セットと関連付けられたアクセス・コンテキストを決定するステップと、
    決定された前記アクセス・コンテキストに基づいて、前記アクセラレータ・システムを
    前記所与のデータ・セットに前記サーバ・システムから直接アクセスする、
    前記所与のデータ・セットの部分をメモリに局所的に格納する、および
    前記所与のデータ・セットの全体を前記メモリに局所的に格納する、
    のうちの1つに動的に設定するステップと、
    前記所与のデータ・セットの部分または全体のうちの1つを局所的に格納するように前記アクセラレータ・システムを動的に設定することに応答して、前記所与のデータ・セットと関連付けられた情報を転送するために前記アクセラレータとの部分的に暗号化される通信リンクを確立するステップであって、前記部分的に暗号化される通信リンクは、完全に暗号化される通信リンクよりは低い暗号化強度を含む、前記確立するステップと、
    を含む方法。
  9. 前記アクセス・コンテキストを決定する前記ステップは、
    前記所与のデータ・セットへのアクセスを要求しているユーザと関連付けられている属性のセット、
    前記所与のデータ・セットと関連付けられているセキュリティ属性のセット、および 前記所与のデータ・セットを伝送し受け取るために使用されるべきデータ・ポートのセット、
    のうちの少なくとも1つを識別することをさらに含む、請求項8に記載の方法。
  10. 前記所与のデータ・セットの前記部分または全体のうちの1つを局所的に格納するように前記アクセラレータ・システムを動的に設定することに応答して、前記所与のデータ・セットのためにセキュリティ・カウンタを維持するように前記アクセラレータ・システムに命令するステップと、
    スレショルド値を前記セキュリティ・カウンタと関連付けるステップであって、前記スレショルド値は、前記アクセラレータ・システムに対して、前記所与のデータ・セットの前記部分または全体のうちの前記1つを前記メモリから何時除去するかを明示する、前記関連付けるステップと、
    をさらに含む、請求項8または請求項9のいずれかに記載の方法。
  11. 前記所与のデータ・セットへのアクセスを求める前記要求と関連付けられたユーザからセキュリティ要求を受け取るステップと、
    前記ユーザが完全に暗号化される通信リンクを要求していることを前記セキュリティ要求が明示していると判定するステップと、
    前記所与のデータ・セットと関連付けられた情報を転送するために前記アクセラレータとの完全に暗号化される通信リンクを確立するステップと、
    をさらに含む、請求項8ないし請求項10のいずれかに記載の方法。
  12. 部分的に暗号化される通信リンクを確立することに応答して、前記所与のデータ・セットの前記部分または全体のうちの前記1つを前記メモリから何時除去するかを明示するセキュリティ・カウンタを維持するように前記アクセラレータ・システムに命令するステップと、
    をさらに含む、請求項8ないし請求項11のいずれかに記載の方法。
  13. 前記アクセラレータ・システムと関連付けられた処理コアのタイプを決定するステップと、
    前記所与のデータ・セットを、第1フォーマットから、決定された処理コアの前記タイプと関連付けられた第2フォーマットに変換するステップと、
    をさらに含む、請求項8ないし請求項12のいずれかに記載の方法。
  14. 請求項1から13に記載の方法の各ステップを実行する手段として機能する、コンピュータ・システム。
  15. 請求項1ないし請求項13のいずれかの方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
JP2013515737A 2010-06-24 2010-11-08 ハイブリッド・メモリ・サーバにおけるデータ・アクセス管理 Active JP5651238B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/822,760 US8898324B2 (en) 2010-06-24 2010-06-24 Data access management in a hybrid memory server
US12/822,760 2010-06-24
PCT/EP2010/067053 WO2011160728A1 (en) 2010-06-24 2010-11-08 Data access management in a hybrid memory server

Publications (2)

Publication Number Publication Date
JP2013531296A JP2013531296A (ja) 2013-08-01
JP5651238B2 true JP5651238B2 (ja) 2015-01-07

Family

ID=44118681

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013515737A Active JP5651238B2 (ja) 2010-06-24 2010-11-08 ハイブリッド・メモリ・サーバにおけるデータ・アクセス管理

Country Status (5)

Country Link
US (15) US8898324B2 (ja)
EP (1) EP2430576A1 (ja)
JP (1) JP5651238B2 (ja)
CN (1) CN102906738B (ja)
WO (1) WO2011160728A1 (ja)

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8874831B2 (en) * 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
US8904098B2 (en) 2007-06-01 2014-12-02 Netlist, Inc. Redundant backup using non-volatile memory
US8301833B1 (en) 2007-06-01 2012-10-30 Netlist, Inc. Non-volatile memory module
JP5484471B2 (ja) 2008-09-19 2014-05-07 オラクル・インターナショナル・コーポレイション 記憶側記憶要求管理
US10430338B2 (en) 2008-09-19 2019-10-01 Oracle International Corporation Selectively reading data from cache and primary storage based on whether cache is overloaded
US8868831B2 (en) 2009-09-14 2014-10-21 Oracle International Corporation Caching data between a database server and a storage system
US9369516B2 (en) * 2009-01-13 2016-06-14 Viasat, Inc. Deltacasting
US8898324B2 (en) 2010-06-24 2014-11-25 International Business Machines Corporation Data access management in a hybrid memory server
US9692825B2 (en) * 2010-11-16 2017-06-27 Intel Corporation Endpoint caching for data storage systems
US20180107591A1 (en) * 2011-04-06 2018-04-19 P4tents1, LLC System, method and computer program product for fetching data between an execution of a plurality of threads
US20120278760A1 (en) * 2011-04-28 2012-11-01 Medtronic, Inc. Predictive background data transfer for implantable medical devices
US10380022B2 (en) 2011-07-28 2019-08-13 Netlist, Inc. Hybrid memory module and system and method of operating the same
US10198350B2 (en) 2011-07-28 2019-02-05 Netlist, Inc. Memory module having volatile and non-volatile memory subsystems and method of operation
US10838646B2 (en) 2011-07-28 2020-11-17 Netlist, Inc. Method and apparatus for presearching stored data
US10592416B2 (en) 2011-09-30 2020-03-17 Oracle International Corporation Write-back storage cache based on fast persistent memory
US8977735B2 (en) * 2011-12-12 2015-03-10 Rackspace Us, Inc. Providing a database as a service in a multi-tenant environment
CN102594876B (zh) * 2012-01-19 2016-03-16 网宿科技股份有限公司 游戏实时数据和更新数据的混合加速系统
US9233304B2 (en) * 2012-03-22 2016-01-12 Empire Technology Development Llc Load balancing for game
KR20130113246A (ko) * 2012-04-05 2013-10-15 한국전자통신연구원 온 디맨드형 콘텐츠 전달 오버레이 네트워크 구성 방법 및 장치
US9747107B2 (en) 2012-11-05 2017-08-29 Nvidia Corporation System and method for compiling or runtime executing a fork-join data parallel program with function calls on a single-instruction-multiple-thread processor
US9721587B2 (en) 2013-01-24 2017-08-01 Microsoft Technology Licensing, Llc Visual feedback for speech recognition system
US9110592B2 (en) 2013-02-04 2015-08-18 Microsoft Technology Licensing, Llc Dynamic allocation of heterogenous memory in a computing system
US8868800B2 (en) * 2013-03-12 2014-10-21 Empire Technology Development Llc Accelerator buffer access
US9075904B2 (en) 2013-03-13 2015-07-07 Intel Corporation Vulnerability estimation for cache memory
US10372551B2 (en) 2013-03-15 2019-08-06 Netlist, Inc. Hybrid memory system with configurable error thresholds and failure analysis capability
US9436600B2 (en) 2013-06-11 2016-09-06 Svic No. 28 New Technology Business Investment L.L.P. Non-volatile memory storage for multi-channel memory system
US10229161B2 (en) 2013-09-20 2019-03-12 Oracle International Corporation Automatic caching of scan and random access data in computing systems
US10261813B2 (en) 2013-09-25 2019-04-16 Arm Limited Data processing system for dispatching tasks from a plurality of applications to a shared resource provided by an accelerator
US9525734B2 (en) 2013-10-30 2016-12-20 Annapurna Labs Ltd. Hybrid remote direct memory access
US10248328B2 (en) 2013-11-07 2019-04-02 Netlist, Inc. Direct data move between DRAM and storage on a memory module
US9576039B2 (en) 2014-02-19 2017-02-21 Snowflake Computing Inc. Resource provisioning systems and methods
US9350484B2 (en) * 2014-03-18 2016-05-24 Qualcomm Incorporated Transport accelerator implementing selective utilization of redundant encoded content data functionality
US9417773B2 (en) * 2014-10-16 2016-08-16 Yahoo! Inc. Mobile application pre-fetching using a state framework
US9712504B2 (en) * 2015-04-22 2017-07-18 Aruba Networks, Inc. Method and apparatus for avoiding double-encryption in site-to-site IPsec VPN connections
WO2016169032A1 (zh) * 2015-04-23 2016-10-27 华为技术有限公司 数据格式转换装置、缓冲芯片及方法
CN107615254A (zh) * 2015-05-21 2018-01-19 新加坡科技研究局 混合对象存储设备的高速缓存架构和算法
US20170078367A1 (en) * 2015-09-10 2017-03-16 Lightfleet Corporation Packet-flow message-distribution system
TWI588831B (zh) * 2016-01-29 2017-06-21 智原科技股份有限公司 非揮發性記憶體加速器及存取加速方法
US11112990B1 (en) 2016-04-27 2021-09-07 Pure Storage, Inc. Managing storage device evacuation
US9841921B2 (en) * 2016-04-27 2017-12-12 Pure Storage, Inc. Migrating data in a storage array that includes a plurality of storage devices
US11809727B1 (en) 2016-04-27 2023-11-07 Pure Storage, Inc. Predicting failures in a storage system that includes a plurality of storage devices
US10218811B1 (en) 2016-06-29 2019-02-26 Oath (Ameericas) Inc. Systems and methods for utilizing unused network capacity for prefetch requests
US10133667B2 (en) 2016-09-06 2018-11-20 Orcle International Corporation Efficient data storage and retrieval using a heterogeneous main memory
US10331573B2 (en) 2016-11-04 2019-06-25 Oracle International Corporation Detection of avoidable cache thrashing for OLTP and DW workloads
CN108073423B (zh) 2016-11-09 2020-01-17 华为技术有限公司 一种加速器加载方法、系统和加速器加载装置
CN108062239B (zh) 2016-11-09 2020-06-16 华为技术有限公司 一种加速器加载方法、系统和加速器加载装置
US20180150256A1 (en) * 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
US10664170B2 (en) * 2016-12-14 2020-05-26 Microsoft Technology Licensing, Llc Partial storage of large files in distinct storage systems
US10747565B2 (en) * 2017-04-18 2020-08-18 Amazon Technologies, Inc. Virtualization of control and status signals
CN107102824B (zh) * 2017-05-26 2019-08-30 华中科技大学 一种基于存储和加速优化的Hadoop异构方法和系统
US10803039B2 (en) 2017-05-26 2020-10-13 Oracle International Corporation Method for efficient primary key based queries using atomic RDMA reads on cache friendly in-memory hash index
US10719446B2 (en) 2017-08-31 2020-07-21 Oracle International Corporation Directly mapped buffer cache on non-volatile memory
US10732836B2 (en) 2017-09-29 2020-08-04 Oracle International Corporation Remote one-sided persistent writes
US10956335B2 (en) 2017-09-29 2021-03-23 Oracle International Corporation Non-volatile cache access using RDMA
US10802766B2 (en) 2017-09-29 2020-10-13 Oracle International Corporation Database with NVDIMM as persistent storage
US11086876B2 (en) 2017-09-29 2021-08-10 Oracle International Corporation Storing derived summaries on persistent memory of a storage device
EP4220396A1 (en) * 2017-11-15 2023-08-02 Huawei Technologies Co., Ltd. Acceleration resource scheduling method and acceleration system
US10740125B2 (en) 2018-01-30 2020-08-11 Hewlett Packard Enterprise Development Lp Memristive dot product engine virtualization
US11019132B2 (en) 2018-06-29 2021-05-25 R-Stor Inc. System and method for performing fast file transfers with dynamic bandwidth provisioning
CN110858173B (zh) * 2018-08-23 2024-05-28 北京搜狗科技发展有限公司 一种数据处理方法、装置和用于数据处理的装置
KR102323763B1 (ko) * 2019-01-04 2021-11-08 바이두닷컴 타임즈 테크놀로지(베이징) 컴퍼니 리미티드 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 제공하기 위한 방법 및 시스템
US11792114B2 (en) 2019-05-23 2023-10-17 Hewlett Packard Enterprise Development Lp System and method for facilitating efficient management of non-idempotent operations in a network interface controller (NIC)
WO2021034340A1 (en) * 2019-08-16 2021-02-25 R-Stor Inc. System and method for performing fast file transfers with dynamic bandwidth provisioning
CN110727612B (zh) * 2019-09-09 2021-01-15 无锡江南计算技术研究所 一种基于精确预取的计算缓存装置
US11580239B2 (en) * 2019-10-22 2023-02-14 Microsoft Technology Licensing, Llc Controlling access to cloud resources in data using cloud-enabled data tagging and a dynamic access control policy engine
US11914903B2 (en) * 2020-10-12 2024-02-27 Samsung Electronics Co., Ltd. Systems, methods, and devices for accelerators with virtualization and tiered memory
US11513772B1 (en) 2021-08-22 2022-11-29 Dataplate Ltd. System and method of providing an interactive development platform in a distributed computing environment

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10124359A (ja) 1996-10-15 1998-05-15 Hitachi Ltd キャッシュ選択方法およびデータ処理システム
US6185625B1 (en) 1996-12-20 2001-02-06 Intel Corporation Scaling proxy server sending to the client a graphical user interface for establishing object encoding preferences after receiving the client's request for the object
US6138213A (en) 1997-06-27 2000-10-24 Advanced Micro Devices, Inc. Cache including a prefetch way for storing prefetch cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line
US6363411B1 (en) * 1998-08-05 2002-03-26 Mci Worldcom, Inc. Intelligent network
US6081508A (en) 1998-02-25 2000-06-27 Indus River Networks, Inc. Remote computer communication
US20030036855A1 (en) 1998-03-16 2003-02-20 Praelux Incorporated, A Corporation Of New Jersey Method and apparatus for screening chemical compounds
US20010037400A1 (en) * 1998-07-22 2001-11-01 Uri Raz Method and system for decreasing the user-perceived system response time in web-based systems
US7188240B1 (en) 1999-07-15 2007-03-06 International Business Machines Corporation Method and system for encryption of web browser cache
US6415368B1 (en) 1999-12-22 2002-07-02 Xerox Corporation System and method for caching
US7243136B2 (en) 2000-01-18 2007-07-10 Inktomi Corporation Approach for managing and providing content to users
US6687735B1 (en) 2000-05-30 2004-02-03 Tranceive Technologies, Inc. Method and apparatus for balancing distributed applications
JP2001337888A (ja) 2000-05-25 2001-12-07 Toshiba Corp 情報中継装置及び情報中継方法
US8204082B2 (en) 2000-06-23 2012-06-19 Cloudshield Technologies, Inc. Transparent provisioning of services over a network
US7054924B1 (en) * 2000-09-29 2006-05-30 Cisco Technology, Inc. Method and apparatus for provisioning network devices using instructions in extensible markup language
US20020169926A1 (en) 2001-04-19 2002-11-14 Thomas Pinckney Systems and methods for efficient cache management in streaming applications
US7945688B1 (en) 2001-06-12 2011-05-17 Netapp, Inc. Methods and apparatus for reducing streaming media data traffic bursts
US7444662B2 (en) * 2001-06-28 2008-10-28 Emc Corporation Video file server cache management using movie ratings for reservation of memory and bandwidth resources
US7480703B2 (en) 2001-11-09 2009-01-20 Sony Corporation System, method, and computer program product for remotely determining the configuration of a multi-media content user based on response of the user
US20030095783A1 (en) 2001-11-21 2003-05-22 Broadbus Technologies, Inc. Methods and apparatus for generating multiple network streams from a large scale memory buffer
US8176186B2 (en) 2002-10-30 2012-05-08 Riverbed Technology, Inc. Transaction accelerator for client-server communications systems
US7188250B1 (en) 2002-12-13 2007-03-06 Nvidia Corporation Method and apparatus for performing network processing functions
US7349943B2 (en) * 2003-03-12 2008-03-25 Microsoft Corporation Protocol-independent client-side caching system and method
US8838950B2 (en) 2003-06-23 2014-09-16 International Business Machines Corporation Security architecture for system on chip
US7331038B1 (en) 2003-07-02 2008-02-12 Amazon.Com, Inc. Predictive prefetching to improve parallelization of document generation subtasks
EP1771998B1 (en) * 2004-07-23 2015-04-15 Citrix Systems, Inc. Systems and methods for optimizing communications between network nodes
JP4796346B2 (ja) 2004-07-28 2011-10-19 ルネサスエレクトロニクス株式会社 マイクロコンピュータ
US7937404B2 (en) 2005-02-04 2011-05-03 Hewlett-Packard Development Company, L.P. Data processing system and method
JP2006277186A (ja) 2005-03-29 2006-10-12 Fujitsu Ltd 分散計算機管理プログラム、分散計算機管理装置、分散計算機管理方法
US20060253584A1 (en) * 2005-05-03 2006-11-09 Dixon Christopher J Reputation of an entity associated with a content item
US7865570B2 (en) * 2005-08-30 2011-01-04 Illinois Institute Of Technology Memory server
US7372378B2 (en) * 2005-12-01 2008-05-13 Nvidia Corporation Efficient decoding of n-tuple variable bit length symbols
US8645376B2 (en) * 2008-05-02 2014-02-04 Salesforce.Com, Inc. Method and system for managing recent data in a mobile device linked to an on-demand service
CN100486170C (zh) * 2005-12-15 2009-05-06 国际商业机器公司 传送前摄http内容的方法和设备
US7756922B2 (en) 2006-01-27 2010-07-13 Oracle International Corporation Schema annotations for managing cached document fragments
JP2007213235A (ja) 2006-02-08 2007-08-23 Canon Inc ネームサービスキャッシュ装置、及びネームサービスキャッシュ方法
US8516193B1 (en) * 2006-03-30 2013-08-20 Pegasystems Inc. Techniques for content-based caching in a computer system
US9385914B1 (en) 2006-04-06 2016-07-05 Versata Development Group, Inc. Application state client-side cache for a state-based client-server application
WO2008031264A1 (fr) * 2006-09-07 2008-03-20 Lotus Pharmaceutical Co., Ltd. Composé de glycoside de furost-5-ène-3, 22, 26-triol pour la prévention et le traitement des cancers
US9154557B2 (en) * 2006-10-12 2015-10-06 Cisco Technology, Inc. Automatic proxy registration and discovery in a multi-proxy communication system
US7584335B2 (en) * 2006-11-02 2009-09-01 International Business Machines Corporation Methods and arrangements for hybrid data storage
US8468244B2 (en) * 2007-01-05 2013-06-18 Digital Doors, Inc. Digital information infrastructure and method for security designated data and with granular data stores
US7930270B2 (en) 2007-02-26 2011-04-19 Microsoft Corporation Managing files on multiple computing devices
US20080228864A1 (en) 2007-03-12 2008-09-18 Robert Plamondon Systems and methods for prefetching non-cacheable content for compression history
US8205205B2 (en) * 2007-03-16 2012-06-19 Sap Ag Multi-objective allocation of computational jobs in client-server or hosting environments
US9171006B2 (en) 2007-04-06 2015-10-27 Alcatel Lucent Mobile station with expanded storage space and method of retrieving files by the mobile station
JP4959425B2 (ja) 2007-06-04 2012-06-20 株式会社リコー 情報処理装置、プログラムおよび情報処理方法
US7885969B2 (en) 2007-09-17 2011-02-08 International Business Machines Corporation System and method for executing compute-intensive database user-defined programs on an attached high-performance parallel computer
US7797279B1 (en) 2007-12-31 2010-09-14 Emc Corporation Merging of incremental data streams with prior backed-up data
US8775824B2 (en) 2008-01-02 2014-07-08 Arm Limited Protecting the security of secure data sent from a central processor for processing by a further processing device
US8019511B2 (en) 2008-05-22 2011-09-13 Ford Global Technologies, Llc Vehicle rollover detection
US8060513B2 (en) * 2008-07-01 2011-11-15 Dossierview Inc. Information processing with integrated semantic contexts
US7975025B1 (en) 2008-07-08 2011-07-05 F5 Networks, Inc. Smart prefetching of data over a network
US7941591B2 (en) * 2008-07-28 2011-05-10 CacheIQ, Inc. Flash DIMM in a standalone cache appliance system and methodology
US9535967B2 (en) 2008-09-10 2017-01-03 Salesforce.Com, Inc. Method and system for providing efficient and complex database functionality to a mobile device
US8533129B2 (en) 2008-09-16 2013-09-10 Yahoo! Inc. Efficient data layout techniques for fast machine learning-based document ranking
US10430338B2 (en) 2008-09-19 2019-10-01 Oracle International Corporation Selectively reading data from cache and primary storage based on whether cache is overloaded
US9369516B2 (en) 2009-01-13 2016-06-14 Viasat, Inc. Deltacasting
US8521982B2 (en) 2009-04-15 2013-08-27 International Business Machines Corporation Load request scheduling in a cache hierarchy
US8898324B2 (en) * 2010-06-24 2014-11-25 International Business Machines Corporation Data access management in a hybrid memory server

Also Published As

Publication number Publication date
US10222999B2 (en) 2019-03-05
US20160239424A1 (en) 2016-08-18
US10592118B2 (en) 2020-03-17
US20120117312A1 (en) 2012-05-10
US20120096109A1 (en) 2012-04-19
US10585593B2 (en) 2020-03-10
US20180113617A1 (en) 2018-04-26
US9952774B2 (en) 2018-04-24
US20110320804A1 (en) 2011-12-29
US9418235B2 (en) 2016-08-16
US9933949B2 (en) 2018-04-03
WO2011160728A1 (en) 2011-12-29
US9069977B2 (en) 2015-06-30
US10235051B2 (en) 2019-03-19
US10831375B2 (en) 2020-11-10
US20160239425A1 (en) 2016-08-18
US20180113618A1 (en) 2018-04-26
CN102906738B (zh) 2016-04-20
US20190258398A1 (en) 2019-08-22
US20120102138A1 (en) 2012-04-26
US20190187895A1 (en) 2019-06-20
US8898324B2 (en) 2014-11-25
CN102906738A (zh) 2013-01-30
US10228863B2 (en) 2019-03-12
JP2013531296A (ja) 2013-08-01
US20200012428A1 (en) 2020-01-09
US20180074705A1 (en) 2018-03-15
US8914528B2 (en) 2014-12-16
US9542322B2 (en) 2017-01-10
US20130212376A1 (en) 2013-08-15
US10452276B2 (en) 2019-10-22
EP2430576A1 (en) 2012-03-21
US9857987B2 (en) 2018-01-02
US20170060419A1 (en) 2017-03-02
US20190187896A1 (en) 2019-06-20

Similar Documents

Publication Publication Date Title
JP5651238B2 (ja) ハイブリッド・メモリ・サーバにおけるデータ・アクセス管理
US8694584B2 (en) Speculative and coordinated data access in a hybrid memory server
US9274959B2 (en) Handling virtual memory address synonyms in a multi-level cache hierarchy structure
US9141648B1 (en) Management of database blocks
KR20210158430A (ko) 차용된 메모리를 이용한 지능형 콘텐츠 마이그레이션
JP2012517644A (ja) 高速記憶装置をキャッシュとして使用するストレージシステム
KR20220000415A (ko) 서비스로서의 메모리에 기초한 분산 컴퓨팅
WO2022179032A1 (zh) 用于存储管理的方法、设备、介质和程序产品

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130806

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140325

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140617

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140708

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141003

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141114

R150 Certificate of patent or registration of utility model

Ref document number: 5651238

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150