(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-05
(54)【発明の名称】不揮発性メモリからプロセスアクセラレータにデータを転送するためのシステム及び方法
(51)【国際特許分類】
G06F 15/17 20060101AFI20240628BHJP
G06F 13/38 20060101ALI20240628BHJP
【FI】
G06F15/17 620Z
G06F13/38 330Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023576437
(86)(22)【出願日】2022-06-27
(85)【翻訳文提出日】2024-01-16
(86)【国際出願番号】 US2022035128
(87)【国際公開番号】W WO2023278331
(87)【国際公開日】2023-01-05
(32)【優先日】2021-06-28
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ポール ブリンザー
【テーマコード(参考)】
5B045
【Fターム(参考)】
5B045AA01
5B045AA02
5B045BB54
(57)【要約】
不揮発性メモリからプロセスアクセラレータメモリにデータを転送するための方法及び装置が開示される。一実施形態では、プロセスアクセラレータは、ホストファイルシステムのリソースに対する転送要求を発行する。プロセスアクセラレータは、転送要求に応じて、ホストファイルシステムからデータを受信し、データはリソースに対応し、プロセスアクセラレータは、ホストファイルシステムからデータを直接受信してホストのステージングメモリをバイパスする。プロセスアクセラレータは、リソースを取得するためにデータを操作する。このように、プロセスアクセラレータは、データの転送回数を最小限に抑えるために、ホストファイルシステムからリソースを直接取得することができる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
不揮発性ホストストレージからプロセスアクセラレータメモリにデータを転送するための方法であって、
プロセスアクセラレータが、ホストファイルシステムのリソースに対する転送要求を発行することと、
前記プロセスアクセラレータが、前記転送要求に応じて、前記ホストファイルシステムからデータを受信することであって、前記データは前記リソースに対応し、前記プロセスアクセラレータは、前記ホストファイルシステムから前記データを直接受信してホストのステージングメモリをバイパスする、ことと、
前記プロセスアクセラレータが、前記リソースを取得するために前記データを操作することと、を含む、
方法。
【請求項2】
前記転送要求は、前記データにアクセスするための位置データと、前記データの転送サイズを示すサイズデータと、前記データの圧縮タイプを示す圧縮データと、前記プロセスアクセラレータのターゲットリソースを示すターゲットデータと、を含む、
請求項1の方法。
【請求項3】
前記プロセスアクセラレータは、グラフィックスアクセラレータ又は機械学習アクセラレータのうち何れかである、
請求項1の方法。
【請求項4】
前記データは、前記リソースの暗号化形態、前記リソースの圧縮形態、又は、前記リソースのタイル形態のうち少なくとも1つである、
請求項1の方法。
【請求項5】
前記リソースを取得するために前記データを操作することは、前記データを解凍すること、前記データを復号すること、又は、前記データをタイル化することのうち少なくとも1つを含む、
請求項4の方法。
【請求項6】
前記プロセスアクセラレータは、直接メモリ転送によって前記ホストファイルシステムから前記データを受信する、
請求項1の方法。
【請求項7】
前記転送要求は、ホストシステムのディスパッチキューに発行される、
請求項1の方法。
【請求項8】
前記ホストファイルシステムは、独立ディスクの冗長アレイである、
請求項1の方法。
【請求項9】
不揮発性メモリからプロセスアクセラレータメモリにデータを転送するための装置であって、
プロセスアクセラレータを備え、
前記プロセスアクセラレータは、
ホストファイルシステムのリソースに対する転送要求を発行することと、
前記リソースに対する転送要求に応じて、前記ホストファイルシステムからデータを受信することであって、前記データは前記リソースに対応し、前記プロセスアクセラレータは、前記ホストファイルシステムから前記データを直接受信してホストのステージングメモリをバイパスする、ことと、
前記リソースを取得するために前記データを操作することと、
を行うように構成されている、
装置。
【請求項10】
前記転送要求は、前記データにアクセスするための位置データと、前記データの転送サイズを示すサイズデータと、前記データの圧縮タイプを示す圧縮データと、前記プロセスアクセラレータのターゲットリソースを示すターゲットデータと、を含む、
請求項9の装置。
【請求項11】
前記プロセスアクセラレータは、グラフィックスアクセラレータ又は機械学習アクセラレータのうち何れかである、
請求項9の装置。
【請求項12】
前記データは、前記リソースの暗号化形態、前記リソースの圧縮形態、又は、前記リソースのタイル形態のうち少なくとも1つである、
請求項9の装置。
【請求項13】
前記リソースを取得するために前記データを操作することは、前記データを解凍すること、前記データを復号すること、又は、前記データをタイル化することのうち少なくとも1つを含む、
請求項9の装置。
【請求項14】
前記プロセスアクセラレータは、直接メモリ転送によって前記ホストファイルシステムから前記データを受信する、
請求項9の装置。
【請求項15】
前記転送要求は、ホストシステムのディスパッチキューに発行される、
請求項9の装置。
【請求項16】
前記ホストファイルシステムは、独立ディスクの冗長アレイである、
請求項9の装置。
【請求項17】
コンピュータ可読記憶媒体に設けられたコンピュータプログラム製品であって、
前記コンピュータプログラム製品は、不揮発性メモリからプロセスアクセラレータメモリにデータを転送するためのコンピュータプログラム命令を含み、
前記コンピュータプログラム命令は、実行されると、
プロセスアクセラレータが、ホストファイルシステムのリソースに対する転送要求を発行することと、
前記プロセスアクセラレータが、前記転送要求に応じて、前記ホストファイルシステムからデータを受信することであって、前記データは前記リソースに対応し、前記プロセスアクセラレータは、前記ホストファイルシステムから前記データを直接受信してホストのステージングメモリをバイパスする、ことと、
前記プロセスアクセラレータが、前記リソースを取得するために前記データを操作することと、
を含むステップをコンピュータシステムに実行させる、
コンピュータプログラム製品。
【請求項18】
前記データは、前記リソースの暗号化形態、前記リソースの圧縮形態、又は、前記リソースのタイル形態のうち少なくとも1つである、
請求項17のコンピュータプログラム製品。
【請求項19】
前記リソースを取得するために前記データを操作することは、前記データを解凍すること、前記データを復号すること、又は、前記データをタイル化することのうち少なくとも1つを含む、
請求項18のコンピュータプログラム製品。
【請求項20】
前記転送要求は、前記データにアクセスするための位置データと、前記データの転送サイズを示すサイズデータと、前記データの圧縮タイプを示す圧縮データと、前記プロセスアクセラレータのターゲットリソースを示すターゲットデータと、を含む、
請求項17のコンピュータプログラム製品。
【発明の詳細な説明】
【背景技術】
【0001】
汎用プロセッサは、複雑な計算を含む多種多様な計算を実行するために、コンピューティングシステム内で使用される。しかしながら、グラフィックス加速(graphics acceleration)又は機械学習等の他のタスクは、並列に計算することができる多くの単純な計算を必要とする。これらのタスクは、汎用プロセッサ上で実行される場合に非効率的となり得る。現代のコンピュータは、汎用プロセッサ上では非効率的なプロセス及び計算を加速するために、追加のプロセスアクセラレータを有することができる。例えば、グラフィックスアクセラレータは、専用コアを使用して多数の計算を並列に実行してもよいし、機械学習プロセスアクセラレータは、行列乗算を効率的に実行するように設計されてもよい。典型的なコンピュータシステムにおけるプロセスアクセラレータは、システムメモリとは別の自身のローカル高帯域幅メモリを有してもよい。データがプロセスアクセラレータによって処理され得る前に、コンピューティングシステムは、そのNVM Express(登録商標)(NVMe(登録商標))が一例となる不揮発性メモリ(NVM)からステージング用のシステムメモリに、次いで、プロセスアクセラレータのローカル高帯域幅メモリに、データを転送する必要がある。
【図面の簡単な説明】
【0002】
【
図1】NVMからプロセスアクセラレータの高帯域幅メモリにデータを転送するための例示的なコンピューティングシステムのブロック図である。
【
図2】NVMストレージからプロセスアクセラレータのプロセスアクセラレータメモリにデータを転送するためのソフトウェアコンポーネントを示すソフトウェアコンポーネントブロック図である。
【
図3】NVMからプロセスアクセラレータメモリに流れる際のデータの経路を示すデータフロー図である。
【
図4】いくつかの実施形態による、ストレージスタック内のストレージドライバ及びファイルシステムフィルタドライバの高レベル設計図である。
【
図5】いくつかの実施形態による、ディスパッチキューを示す図である。
【
図6】不揮発性ストレージからプロセスアクセラレータメモリにデータを転送する例示的な方法を示すフローチャートである。
【
図7】不揮発性ストレージからプロセスアクセラレータメモリにデータを転送する例示的な方法を示すフローチャートである。
【発明を実施するための形態】
【0003】
いくつかの実施形態では、不揮発性メモリからプロセスアクセラレータメモリにデータを転送するための方法は、プロセスアクセラレータが、ホストファイルシステムのリソースに対する転送要求を発行することと、プロセスアクセラレータが、転送要求に応じて、ホストファイルシステムからデータを受信することであって、データがリソースに対応し、プロセスアクセラレータが、ホストファイルシステムから直接データを受信してホストのステージングメモリをバイパスする、ことと、プロセスアクセラレータが、リソースを取得するためにデータを操作することと、を含む。
【0004】
いくつかの実施形態では、転送要求は、データにアクセスするための位置データと、データの転送サイズを示すサイズデータと、データの圧縮タイプを示す圧縮データと、プロセスアクセラレータのターゲットリソースを示すターゲットデータと、を含む。いくつかの実施形態では、プロセスアクセラレータは、グラフィックスアクセラレータ又は機械学習アクセラレータのうち何れかである。いくつかの実施形態では、データは、リソースの暗号化形態(encrypted form of the resource)、リソースの圧縮形態(compressed form of the resource)、又は、リソースのタイル形態(tile form of the resource)のうち少なくとも1つである。
【0005】
いくつかの実施形態では、リソースを取得するためにデータを操作することは、データを解凍すること、データを復号すること、又は、データをタイル化することのうち少なくとも1つを含む。
【0006】
いくつかの実施形態では、プロセスアクセラレータは、直接メモリ転送によってホストファイルシステムからデータを受信する。
【0007】
いくつかの実施形態では、転送要求は、ホストシステムのディスパッチキューに発行される。
【0008】
いくつかの実施形態では、ホストファイルシステムは、独立ディスク(independent disks)の冗長アレイである。
【0009】
いくつかの実施形態では、不揮発性メモリからプロセスアクセラレータメモリにデータを転送するための装置は、プロセスアクセラレータが、ホストファイルシステムのリソースに対する転送要求を発行することと、プロセスアクセラレータが、転送要求に応じて、ホストファイルシステムからデータを受信することであって、データがリソースに対応し、プロセスアクセラレータが、ホストファイルシステムから直接データを受信してホストのステージングメモリをバイパスする、ことと、プロセスアクセラレータが、リソースを取得するためにデータを操作することと、を含むステップを実行するように構成されている。
【0010】
いくつかの実施形態では、転送要求は、データにアクセスするための位置データと、データの転送サイズを示すサイズデータと、データの圧縮タイプを示す圧縮データと、プロセスアクセラレータのターゲットリソースを示すターゲットデータと、を含む。いくつかの実施形態では、プロセスアクセラレータは、グラフィックスアクセラレータ又は機械学習アクセラレータのうち何れかである。いくつかの実施形態では、データは、リソースの暗号化形態、リソースの圧縮形態、又は、リソースのタイル形態のうち少なくとも1つである。
【0011】
いくつかの実施形態では、リソースを取得するためにデータを操作することは、データを解凍すること、データを復号すること、又は、データをタイル化することのうち少なくとも1つを含む。
【0012】
いくつかの実施形態では、プロセスアクセラレータは、直接メモリ転送によってホストファイルシステムからデータを受信する。
【0013】
いくつかの実施形態では、転送要求は、ホストシステムのディスパッチキューに発行される。
【0014】
いくつかの実施形態では、ホストファイルシステムは、独立ディスクの冗長アレイである。
【0015】
いくつかの実施形態では、非一時的なコンピュータ可読記憶媒体に設けられたコンピュータプログラム製品は、実行されると、プロセスアクセラレータが、ホストファイルシステムのリソースに対する転送要求を発行することと、プロセスアクセラレータが、転送要求に応じて、ホストファイルシステムからデータを受信することであって、データがリソースに対応し、プロセスアクセラレータが、ホストファイルシステムから直接データを受信してホストのステージングメモリをバイパスする、ことと、プロセスアクセラレータが、リソースを取得するためにデータを操作することと、を含むステップをコンピュータシステムに実行させる、不揮発性メモリからプロセスアクセラレータメモリにデータを転送するためのコンピュータプログラム命令を含む。
【0016】
いくつかの実施形態では、転送要求は、データにアクセスするための位置データと、データの転送サイズを示すサイズデータと、データの圧縮タイプを示す圧縮データと、プロセスアクセラレータのターゲットリソースを示すターゲットデータと、を含む。いくつかの実施形態では、プロセスアクセラレータは、グラフィックスアクセラレータ又は機械学習アクセラレータのうち何れかである。いくつかの実施形態では、データは、リソースの暗号化形態、リソースの圧縮形態、又は、リソースのタイル形態のうち少なくとも1つである。
【0017】
いくつかの実施形態では、リソースを取得するためにデータを操作することは、データを解凍すること、データを復号すること、又は、データをタイル化することのうち少なくとも1つを含む。
【0018】
いくつかの実施形態では、プロセスアクセラレータは、直接メモリ転送によってホストファイルシステムからデータを受信する。
【0019】
いくつかの実施形態では、転送要求は、ホストシステムのディスパッチキューに発行される。
【0020】
いくつかの実施形態では、ホストファイルシステムは、独立ディスクの冗長アレイである。
【0021】
本開示による実施形態は、
図1から始めて更に詳細に説明される。明細書及び図面を通じて、同じ符号は同じ構成要素を指す。
図1は、本開示のいくつかの実施形態による、データを転送するための非限定的な例示的システム100のブロック図である。例示的なシステム100は、パーソナルコンピュータ、ゲームコンソール、スマートフォン、モバイルデバイス、ワークステーションコンピュータ、サーバコンピュータ等を含む様々なコンピューティングデバイスとして実装することができる。例示的なシステム100は、プロセッサ102と、システムメモリ104と、NVM Express(登録商標)(NVMe(登録商標))が一例である不揮発性メモリ106(NVM)と、プロセスアクセラレータ108と、プロセッサ102、システムメモリ104、NVM106及びプロセスアクセラレータ108を相互接続するルートコンプレックス110と、を含む。図示されるコンポーネントは例示的なものであり、他のコンポーネントがコンピューティングシステム100に接続されてもよいし、これと通信してもよい。
【0022】
図1の例示的なシステム100では、プロセッサ102は、中央処理ユニット(CPU)112及び統合グラフィックス処理ユニット(iGPU)114(本明細書では「統合GPU」と呼ばれる)を統合する加速処理ユニット(APU)である。CPU112及び統合GPU114は、同じチップ上に実装されてもよく、したがって、システムメモリ104、メモリコントローラ116、システムメモリ104にアクセスするための直接メモリアドレス指定(DMA)エンジン118、パーソナルコンピューティングインターフェースエクスプレス(PCIe)インターフェース120等のバスインターフェース、並びに、ネットワークインターフェース、ユニバーサルシリアルバス(USB)インターフェース、ハードディスクドライブ(HDD)及びソリッドステートドライブ(SSD)インターフェース等の永続的ストレージインターフェースのような
図1に示されていない他のインターフェース及びアダプタ等のように、いくつかのコンポーネント及びインターフェースを共有してもよい。CPU112は、1つ以上のコア122(すなわち、実行エンジン)、キャッシュ構造(図示せず)、パイプラインコンポーネント(図示せず)等を含む。CPU112及び他の共有コンポーネントは、高速オンチップ通信ファブリック(図示せず)を介してGPU114に接続されている。別の例では、プロセッサ102は、
図1に示される全てのコンポーネントよりも少ないコンポーネントを有してもよい。例えば、プロセッサ102は、統合GPU114なしで実装されてもよい。
【0023】
図1の例示的なシステム100では、統合GPU114は、多くの並列処理ユニット(図示せず)を有する複数の単一命令複数データ(SIMD)処理コア126を含むGPU計算エンジン124を含む。GPU計算エンジン124は、ジオメトリプロセッサ、ラスタライザ、グラフィックコマンドプロセッサ、ハードウェアスケジューラ、非同期計算エンジン、キャッシュ、データ共有等のように、
図1に示されていない他のコンポーネントも含む。
図1の例では、統合GPU114は、加速されたビデオ符号化及び復号のためのビデオエンコーダ/デコーダ128(すなわち、「コーデック」)、加速されたオーディオ符号化及び復号のためのオーディオコーデック130、加速された表示処理のためのディスプレイコントローラ132、並びに、加速されたセキュリティプロトコルの実施及び準拠のためのセキュリティプロセッサ134等のように、特定用途向け集積回路又は機能論理ブロックの形態のハードウェアアクセラレータも含む。
【0024】
図1の例示的なシステム100では、プロセッサ102は、ルートコンプレックス110を介してプロセスアクセラレータ108と通信する。ルートコンプレックス110は、プロセッサ102、プロセスアクセラレータ108、システムメモリ104及びNVM106を通信可能に結合する複数の周辺接続インターフェースエクスプレス(PCIe)インターフェース又はコンピュートエクスプレスリンク(CXL)を供えてもよい。いくつかの例では、プロセッサ102及びプロセスアクセラレータ108は、同じ基板(例えば、プリント回路基板)上に実装されてもよい。別の例では、プロセスアクセラレータ108は、プロセッサ102の基板とは別のビデオカード又はグラフィックスカード上に実装される。
【0025】
図1の例のプロセスアクセラレータ108は、多くの並列処理ユニット(図示せず)を有する複数のSIMD処理コアを含み得るプロセス実行エンジン136を含む。プロセス実行エンジン136は、プロセスアクセラレータ108の機能に応じて、メモリコントローラ、DMAエンジン、機械学習プロセッサ、ジオメトリプロセッサ、ラスタライザ、グラフィックコマンドプロセッサ、ハードウェアスケジューラ、非同期計算エンジン、キャッシュ、データ共有等のように、
図1に示されていない他のコンポーネントも含み得る。
図1の例では、プロセスアクセラレータ108は、データの解凍及び/又は圧縮を加速するための圧縮エンジン138、並びに、データの復号及び/又は暗号化を加速するための暗号化エンジン140等のように、特定用途向け集積回路又は機能論理ブロックの形態のハードウェアアクセラレータも含む。プロセスアクセラレータ108は、高帯域幅メモリ(HBM)142も含む。
【0026】
図1の例示的なシステム100では、システムメモリ104(例えば、ダイナミックランダムアクセスメモリ(DRAM))は、上述したプロセッサリソース(すなわち、APU及びディスクリートGPU、並びに、それらの構成要素)のためのデバイスドライバ146とインターフェースするオペレーティングシステム144をホストする。システムメモリ104は、1つ以上のアプリケーション148もホストする。本開示に関連して、1つ以上のアプリケーションは、グラフィックスアプリケーション、マルチメディアアプリケーション、ビデオ編集アプリケーション、高性能計算アプリケーション、機械学習アプリケーション、又は、NVM106からプロセスアクセラレータ108への大量のデータの転送を必要とする他のアプリケーションであってもよい。1つ以上のアプリケーション148は、オペレーティングシステム144への呼び出しによってプロセスアクセラレータ108に割り当てられるワークロード(例えば、グラフィックスレンダリングワークロード、オーディオ/ビデオ転置ワークロード、メディア再生ワークロード、機械学習ワークロード等)を生成する。当業者である読者は、1つ以上のアプリケーションが、様々なワークロードタイプを生成する様々な追加のアプリケーションタイプであってもよく、その全てがここで識別されるわけではないことを理解するであろう。しかしながら、本開示内のアプリケーションタイプ及びワークロードタイプへの具体的な言及は、アプリケーションタイプ及びワークロードタイプを本明細書で識別されるものに限定すると解釈すべきではない。
【0027】
更なる説明のために、
図2は、
図1のNVM106等のNVMストレージ202から
図1のプロセスアクセラレータ108等のプロセスアクセラレータ206のプロセスアクセラレータメモリ204にデータを転送するためのソフトウェアコンポーネントを示すソフトウェアコンポーネントブロック
図200である。ソフトウェアコンポーネントは、アプリケーション208、既存のAPI210a、210b、210c(まとめて210)、ファイルシステムフィルタ212、ファイルシステム214、プロセスアクセラレータドライバ216、カーネルモードドライバ220、及び、ストレージシステムドライバ222を含む。
【0028】
本開示による実施形態は、NVMストレージ202からプロセスアクセラレータ206にデータを転送するための特定のOS有効化が必要とされないように、既存のAPIインフラストラクチャ及びエコシステムを使用することができる。例えば、アプリケーション208は、既存の呼び出しへのプロセスアクセラレータ固有のストレージヘッダ218の追加を伴って既存の呼び出し及びパラメータを使用して、プロセスアクセラレータメモリ204に転送するためのデータを要求することができる。例えば、Microsoft DirectStorage等のストレージAPIを使用するアプリケーション208は、代替的に、NVMストレージ202からプロセスアクセラレータメモリ204にデータを転送するために、本開示の実施形態を使用することができる。したがって、アプリケーション208は、ハードウェアサポートに応じて、既存のAPI210又は本開示の実施形態を使用することができる。ストレージヘッダ218は、独立ソフトウェアベンダ(ISV)の側で追加の作業を伴わずに、NVMからプロセスアクセラレータメモリ204への直接メモリアクセス(DMA)転送を容易にする。例えば、アプリケーション208は、記載された実施形態を使用して、ISVによる追加のプログラミングを全く伴わずに、NVMストレージ202からプロセスアクセラレータメモリ204へのデータの転送を開始してもよい。
【0029】
本開示による実施形態は、転送要求、ステータス要求、シグナリングイベントディスパッチ等を含むディスパッチキューの概念に基づいて構築されたユーザ空間ライブラリを使用することができる。このユーザ空間ライブラリは、ユーザ空間ライブラリを既存のユーザ空間ライブラリに置き換えることができるように、既存のユーザ空間ライブラリ関数及び呼び出しと一致し得る。本開示の例によるユーザ空間ライブラリでは、各ストレージ転送要求は、オブジェクトインターフェースのEnqueueRequest()、EnqueueStatus()、EnqueueSignal()等の関数を呼び出すことによってキューに配置することができる。次いで、これらの要求は、インフラストラクチャによって実行されるSubmit()メンバ関数によってディスパッチすることができ、又は、キューサイズが待機中の要求の数を超過した場合、インターフェースライブラリ自体によって自動送信をトリガすることができる。加えて、保留要求(CancelRequestsWithTag())をキャンセルするための方法、並びに、エラー情報を検出し、ステータス情報を照会し、キュー自体及びいくつかの補助ステージングバッファをステートフルに生成、破壊及びサイジングするためのいくつかの他のヘルパインターフェース方法等のような他の関数でキューを管理することができる。スレッドアフィニティ(thread affinity)等のための同様の管理機能もあってもよい。しかしながら、概して、キューにおけるデータのフローは、転送要求を非同期的にキューに入れる。アプリケーション208は、ステータスを照会し、転送要求がいつ完了するかを識別するためにCOMオブジェクト法を活用することにより、転送要求の進捗を追跡することができる。
【0030】
EnqueueRequest()は、データ(オフセット又は仮想アドレスを指定する値を有する、ファイルシステム又はメモリの何れか)、転送サイズ、圧縮フォーマット(又は圧縮されていない)、及び、宛先のソースを示すいくつかのパラメータフィールドを有することができ、これはメモリ、非構造化バッファリソース、テクスチャリソース、又は、タイル化リソースの何れかであり得る。注目すべきは、EnqueueRequest()が、ソース及びターゲットを明確に識別するために必要な全てのデータを含み、COM内部状態を非常に限られた状態照会機能の外部のアプリケーションレベルに対して参照しないことである。やはり注目すべきは、COMオブジェクト内の公共のインターフェース関数のためのC++仮想関数定義の使用であり、したがって原則的にソフトウェアが、本開示による特定の関数でインターフェース関数を過負荷にするためにオブジェクト継承を使用することを可能にする。
【0031】
更なる説明のために、
図3は、プロセスアクセラレータのためのターゲットリソース304を取得するために、NVM302a、302b(まとめて302)からプロセスアクセラレータに流れる際のデータの経路を示すデータフロー
図300である。
図3は、2つのNVM302ストレージデバイスを有する例を示すが、より多いか又は少ないストレージデバイスが可能である。本開示による実施形態は、NVM(複数のNVMドライブを使用するRAID構成であってもよい)からプロセスアクセラレータメモリバッファ306にデータを直接転送するために、スマートアクセスメモリ(SMA)を利用する。プロセスアクセラレータは、プロセスアクセラレータターゲットリソース304を取得するために、必要に応じて任意の必要なステージング、解凍及び/又は復号を実行し得る。
図3に示されるように、データはDMAを使用してNVMからプロセスアクセラレータに直接転送されるので、システムメモリ内でステージングは必要ない。本開示による実施形態は、圧縮、復号及び/又は他の処理がプロセスアクセラレータに対して直接行われるので、データがシステムメモリを通過することを必要としない。
図2のストレージヘッダ218を使用する転送要求は、入力ファイルハンドル及びオフセット(又はシステムメモリポインタ)、転送サイズ、圧縮フォーマット、ターゲットリソースプロセスアクセラレータハンドル、並びに、ターゲットリソースのタイプを含む、転送を完了するために必要な全ての情報を有する少なくとも1つのエントリを含み得る。
【0032】
更なる説明のために、
図4は、ストレージスタック内のストレージドライバ402及びファイルシステムフィルタドライバ404の高レベル設計400の一例を示す。使用中、アプリケーション412は、ストレージランタイム410を利用してファイルシステム405からリソースを要求する。ストレージランタイム410は、ファイルシステム呼び出しパラメータ408をファイルシステムフィルタドライバ404に発行し、リソースパラメータ418をユーザモードドライバ420に送信する。ファイルシステムフィルタドライバ404は、ファイルシステム呼び出しパラメータ408を、セクタ/ブロック番号422又は他の物理ドライブパラメータ、及び、ストレージドライバ402によって変換されたNVM426のためのメモリ記述子リスト(MDL)にマッピングする。いくつかの例では、ストレージドライバ402は、複数のNVMドライブ426にアクセスするRAIDドライバであってもよい。ファイルシステムフィルタドライバ404は、プロセスアクセラレータメモリ416のステージングバッファ物理メモリ情報414を検索するために、カーネルモードドライバ424と更にインターフェースする。バッファ物理メモリ情報414は、ファイルシステム呼び出しからストレージドライブによって変換されたセクタ/ブロック番号422にマッピングされる。既存のストレージAPIがシステムメモリバッファをセクタ/ブロック番号422にマッピングするいくつかの例では、プロセスアクセラレータメモリ416は、システムメモリをエイリアス化してもよく、NVMドライブがアプリケーション412に透過的にGPUメモリにデータを直接書き込むことを可能にする。
【0033】
カーネルモードドライバ424は、プロセスアクセラレータメモリ416内のターゲットメモリアドレスを識別し、物理メモリ情報414をファイルシステムフィルタドライバ404及びストレージドライバ402に提供するように構成されている。次いで、これらのドライバは、プロセスアクセラレータメモリ416内のDMAターゲット物理アドレスをマッピングすることができる。
【0034】
更なる説明のために、
図5は、本開示のいくつかの実施形態による、ディスパッチキュー500の例示的な図を示す。ディスパッチキュー500は、ファイルシステムフィルタドライバ404、ストレージドライバ402及びカーネルモードドライバ424の間の通信インターフェースを提供し、アトミックにインクリメントされた書き込み及び読み出しインデックスを有するロックフリーディスパッチキューであってもよい(例えば、コマンドプロデューサが、アトミックCAS操作を介してスロットを割り当て、タスクをディスパッチする場合にヘッドポインタ502をインクリメントし、コマンドパケットが消費されてしまうと、コマンドコンシューマがテールポインタ504をインクリメントする)。ディスパッチキュー500は、2のべき乗のコマンドキューサイズで整列されたラップアラウンドとすることができる。いくつかのコマンドパケットスロット506は、カーネルモードドライバ424と他のドライバとの間でペイロード情報を搬送するヘッドポインタ502とテールポインタ504との間に位置してもよい。ドライバの各々は、他方のコンポーネントがプライベートドライバインターフェースによって発見され得る要求をディスパッチすることができるように、
図5に示されるもの等のように、自身のコマンドキューインフラストラクチャを有してもよい。
【0035】
全体的なディスパッチフローは、以下のコマンドキューモデルに従ってもよい。
・「発呼者/プロデューサ」は、書き込みインデックスヘッドポインタ502をインクリメントすることによって、コマンドパケットスロット506をディスパッチキューに割り当てる。
・インクリメント操作の前の書き込みインデックス(ヘッドポインタ502)の値は、割り当てられたコマンドパケットのIDである。
・「発呼者/プロデューサ」は、「未定義/空白」から「準備完了」に設定するようにパケットフォーマットフィールドを変更することによって、パケットをディスパッチキュー500に割り当てる。他の全てのパケットデータ(パラメータ等)は、このステップの前にメモリに書き込まれてもよく、グローバルに見ることができる。
○「発呼者」がパケットを「被呼者」に割り当てると、パケットの所有権が転送される。「被呼者」は、パケット送信後の任意の時点で必要に応じてパケットコンテンツを更新してもよく、送信側の発呼者は、その後、パケットのコンテンツに依存すべきではない。
・読み出しインデックス(又はテールポインタ504)は、コマンドがいつ送信されたかを示すために、「被呼者」によってのみ更新される。「発呼者」は、末尾がキュースロットを通過した後、操作が消費されており、進行中であるが、完了していない可能性があると仮定することができる。
・コマンドパケットは、完了したパケット内の操作を示すために、「被呼者」によって書き込まれたシステムメモリ位置を参照することができる。
・ロックフリー同期を可能にするために、ドライバは、ヘッドポインタ502及びテールポインタ504へのアクセスのためにシステムメモリ上のatomicOpsを使用し、パケットを「準備完了」に更新することができる。
【0036】
以下のコマンドは、カーネルドライバによってサポートされ得る。
転送要求:これは、ユーザモードから転送されたパラメータを含んでもよいが(上記参照)、加えて、入力又はターゲットメモリ位置の何れかが存在する物理メモリ位置についてドライバのMDLの各々を追加してもよい。ターゲットサーフェスのKMDからターゲットリソースデータを検索し、ステージングバッファの物理メモリターゲット位置をエイリアス/再マッピングすることは、ファイルシステムフィルタ又はストレージドライバのタスクである。ユーザモードドライバは、特定の転送要求を一意に識別する64ビットID(自動的にインクリメントされる)を関連付けることができる。ストレージスタックがパラメータをそれ自身のデータと整列及び一致させてしまうと、ターゲットMDL情報(及びNVMセクタ/ブロックリスト)をストレージドライバに送信する(RAIDドライバは、ファイルシステムフィルタドライバによって提供されたデータからアライメントを修正する可能性がある)。次いで、ストレージドライバは、上位の層からの要求を実行することが期待され、完了ステータスがスタック上に浮上し、インフラストラクチャに到達すると、転送操作全体が完了し、データが更なるドライバ呼び出しで使用する準備ができていることをKMD及び任意の他のオブザーバに通知するために、コマンドパケット内の参照された位置に完了信号を発行する。
【0037】
Query Status:コマンドパケットは、特定の転送が進行中であり、ハードウェアリソースを安定に保つ必要があるか否かをKMDが識別することを可能にする。
【0038】
Initiate Device Power Down:コマンドパケットは、プロセスアクセラレータが一時停止状態にあるために直接メモリアクセスアパーチャが利用できない可能性があることをストレージスタックに示す。ストレージスタックは、保留中の転送を完了することが期待される。KMDは、プロセスアクセラレータの電源が完全に切れている間、DMA転送する代替のシステムメモリ位置をコマンドパケットで提供し得る。KMDは、「Initiate Device Power Up」を送信する前に、システムメモリバッファをプロセスアクセラレータメモリリソースに転送することが期待される。
【0039】
Initiate Device Power Up:コマンドパケットは、DMA操作が再開してもよく、プロセスアクセラレータメモリへのメモリリソースのマッピングが再開できることをストレージドライバに示す。
【0040】
コマンドパケットは、以下のパラメータを有してもよい。
struct_command{
uint64 command;//0=「空」であってもよいし、又は、他の全てのパラメータが書き込まれた後、コマンドを示す計数値のうち何れかが0からコマンドに遷移する必要がある
union{
handle fileID;
void * src_memory;
}input;
uint64 input_offset;//fileIDの場合に使用され、srcがメモリからのものである場合には相対バイトオフセットとして使用されてもよく、そうでなければ0である
uint64 transfer_size;//説明不要
handle target_resource;//これは、プロセスアクセラレータアパーチャメモリ、又は、電源オフ時のシステムメモリの何れかに割り当てられたリソースである
void * target_mdl;//KMDによって生成されたメモリ記述子リストへのポインタ
uint64 * completion_status;//観察された場合に、転送が完全に完了し、データが他のコマンドによって使用され得るか否かを示す、メモリ内の別の位置を指す
uint64 Reserved;
}COMMAND_PACKET;
【0041】
更なる説明のために、
図6は、本開示の実施形態による、ホストファイルシステム605からプロセスアクセラレータ601メモリにデータを転送する例示的な方法を示すフローチャートを示している。
図6の方法は、プロセスアクセラレータが、ホストファイルシステム605に記憶されたリソースの転送要求603を発行すること602を含む。転送要求を発行することは、ホストシステム600のプロセスアクセラレータ601によって実行されてもよい。
図1を参照すると、一例では、ホストシステム600のプロセスアクセラレータ601上で、
図1のアプリケーション148、オペレーティングシステム144及びデバイスドライバ146等のストレージドライバによってオペレーティングシステムリソースを使用して、転送要求603を発行するアプリケーションを含み得る。別の例では、
図4を参照すると、アプリケーション412は、ストレージランタイム410によってNVM426に記憶されたファイルシステム405からリソースを要求し得る。ストレージランタイム410は、リソースの入力ハンドル、リソースの転送サイズ、リソースの圧縮フォーマット及びリソースのターゲットハンドル、並びに、ターゲットリソースタイプを含むファイルシステム呼び出しパラメータ408を発行する。次いで、ファイルシステムフィルタドライバ404は、ファイルシステム呼び出しパラメータ408を、次にストレージドライバ402に送信されるセクタ、ブロック及びメディア記述子リストに変換し得る。ストレージランタイム410は、リソースハンドル、オフセット及びリソースのサイズを含むリソースパラメータ418をユーザモードドライバ420に送信する。ユーザモードドライバ420は、プロセスアクセラレータメモリ416の物理メモリ情報を取得するためにカーネルモードドライバ424とインターフェースし得る。
【0042】
例示的な転送要求は、データにアクセスするための位置データと、データの転送サイズを示すサイズデータと、データの圧縮タイプを示す圧縮データと、プロセスアクセラレータのターゲットリソースを示すターゲットデータと、を含み得る。例えば、
図4を参照すると、転送要求は、ファイルシステム呼び出しパラメータ408及びリソースパラメータ418を含むことができる。ファイルシステム呼び出しパラメータ408は、データにアクセスするための位置データと、データの転送サイズを示すサイズデータと、データの圧縮タイプを示す圧縮データと、プロセスアクセラレータのターゲットリソースを示すターゲットデータと、を含む。いくつかの例では、位置データは、データのファイルハンドル及びオフセットを含むことができ、リソースパラメータは、リソースハンドル、オフセット及びリソースのサイズを含むことができる。したがって、位置データは、ファイルシステム内のデータを識別し、ターゲットデータは、リソースがプロセスアクセラレータメモリ内の何処に配置されるかを識別する。
【0043】
図6の方法は、プロセスアクセラレータ601が、ホストファイルシステムでのリソースの転送要求に応じて、ファイルシステム605からデータ607を受信すること606であって、データ607がリソースに対応し、プロセスアクセラレータ601が、ホストファイルシステム605からデータを直接受信してホストシステムメモリをバイパスする、ことも含む。ファイルシステム605からデータを受信すること606は、ファイルシステム605を記憶するストレージデバイスのプロセスアクセラレータ601による直接メモリアクセス(DMA)によって実行されてもよい。
図1を参照すると、一例では、NVMストレージ106からプロセスアクセラレータ高帯域幅メモリ142へのDMA転送によってデータを受信するプロセスアクセラレータ108を含み得る。別の例では、
図4を参照すると、NVMストレージ426は、
図5に関連して記載されたように、DMA及びディスパッチキュー500を使用して、データをプロセスアクセラレータメモリ416に直接転送してもよい。
【0044】
図6の方法は、リソース609を取得するためにデータ607を操作すること608も含む。データを操作すること608は、計算エンジン又は他のコントローラを使用して、プロセスアクセラレータによって実行されてもよい。
図1を参照すると、一例では、プロセスアクセラレータ108が、リソースを取得するためにデータを操作することを含み得る。リソースは、NVM106において圧縮及び暗号化形態で記憶され得る。プロセスアクセラレータ108は、プロセス実行エンジン136又は圧縮エンジン138を使用してデータを解凍し、リソースを取得するためにプロセス実行エンジン136又は暗号化エンジン140を使用してデータを復号するように構成され得る。
【0045】
更なる説明のために、
図7は、本開示の実施形態による、ホストファイルシステム605からプロセスアクセラレータ601メモリにデータを転送する別の例示的な方法を示すフローチャートを示している。
図7の方法は、プロセスアクセラレータ601が、ホストファイルシステム605に記憶されたリソースの転送要求603を発行すること602と、プロセスアクセラレータ601が、ファイルシステム605からデータ607を受信すること606であって、データ607がリソースに対応し、プロセスアクセラレータ601がホストファイルシステム605からデータを直接受信してホストシステムメモリをバイパスする、ことと、リソース609を取得するためにデータ607を操作すること608と、を含むという点で、
図6の方法と同様である。
【0046】
図7の方法は、リソース609を取得するためにデータ607を操作すること608が、データ702を解凍すること、データ704を復号すること、又は、データ706をタイル化することのうち少なくとも1つを含む点で、
図6の方法とは異なる。データ702を解凍することは、データを解凍するためのプロセスアクセラレータ又は個別のエンジンを用いてプロセスアクセラレータ601によって実行されてもよい。データ702を復号することは、データを解凍するためのプロセスアクセラレータ又は個別のエンジンを用いてプロセスアクセラレータ601によって実行されてもよい。データ702をタイル化することは、データを解凍するためのプロセスアクセラレータ又は個別のエンジンを用いてプロセスアクセラレータ601によって実行されてもよい。当業者は、1つの操作の出力が別の操作への入力であり得る等のように、データ操作が連続して実行され得ることを認識するであろう。例えば、リソースを取得するためにデータが復号され、次いで解凍され、次いでタイル化されてもよい。
【0047】
上述した説明を考慮して、読者は、データを転送する利点が以下を含むことを認識するであろう。
・既存のAPI構造及び互換性のある拡張子を使用する、NVM高速負荷/解凍コンテンツ/データインフラストラクチャのサポート。
・コンテンツ負荷帯域幅をスケーリングするためのストレージのRAID構成の積極的活用
・スマートアクセスメモリ/サイズ変更可能なBARを使用してプロセスアクセラレータデバイスメモリにストレージDMAを直接活用する(従来のデータ転送設計におけるいくつかのコピー/ステージングバッファステップを排除する)
・アクセス待ち時間/性能を改善する、結合された解凍/復号最適化経路。
・バックエンドNVMストレージからプロセスアクセラレータメモリに直接コンテンツの動的負荷をトリガするためのプロセスアクセラレータフィードバック経路、改善された性能、データセクションをリロードするためにホストの関与をほとんど必要としない、より大きく洗練されたデータセットを可能にするアプリケーションエクスペリエンス。
【0048】
本開示の例示的な実施形態は、NVMからプロセスアクセラレータにデータを転送するための十分に機能的なコンピュータシステムのコンテキストで主に記載される。しかしながら、当業者の読者は、本開示が、任意の好適なデータ処理システムとともに使用するためにコンピュータ可読記憶媒体上に配置されたコンピュータプログラム製品に具現化され得ることを認識するであろう。そのようなコンピュータ可読記憶媒体は、磁気媒体、光学媒体又は他の好適な媒体を含む、機械可読情報のための任意の記憶媒体であり得る。そのような媒体の例としては、ハードドライブ又はディスケット内の磁気ディスク、光学ドライブのためのコンパクトディスク、磁気テープ、及び、当業者に着想されるような他のものを含む。当業者であれば、好適なプログラミング手段を有する任意のコンピュータシステムが、コンピュータプログラム製品で具現化された本開示の方法のステップを実行することが可能であることを直ちに認識するであろう。当業者であれば、本明細書に記載の例示的な実施形態のいくつかがコンピュータハードウェア上でインストール及び実行されるソフトウェアに向けられているが、それにもかかわらず、ファームウェアとして又はハードウェアとして実装される代替的な実施形態が、本開示の範囲内に十分にあることも認識するであろう。
【0049】
本開示は、システム、方法及び/又はコンピュータプログラム製品とすることができる。コンピュータプログラム製品は、プロセッサに本開示の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(又は複数の媒体)を含むことができる。
【0050】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持及び記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、又は、これらの任意の好適な組み合わせであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは、以下を含む。ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(read-only memory、ROM)、消去可能なプログラマブル読み取り専用メモリ(erasable programmable read-only memory、EPROM若しくはフラッシュメモリ)、スタティックランダムアクセスメモリ(static random access memory、SRAM)、携帯型コンパクトディスク専用メモリ(compact disc read-only memory、CD-ROM)、デジタル多用途デバイス(digital versatile disk、DVD)、メモリスティック、フロッピー(登録商標)ディスク、パンチカード又はその上に記録された命令を有する溝内の隆起構造等の機械的にコード化されたデバイス、及び、これらの任意の好適な組み合わせ。本明細書で使用される場合、コンピュータ可読記憶媒体は、電波若しくは他の自由に伝播する電磁波等のように、導波管若しくは他の伝送媒体(例えば、光ファイバケーブルを通過する光パルス)を通って伝播する電磁波、又は、ワイヤを通って伝送される電気信号等の一時的な信号それ自体であると解釈されるべきではない。
【0051】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、又は、ネットワーク(例えば、インターネット、ローカルエリアネットワーク、広域ネットワーク若しくは無線ネットワーク)を介して、外部コンピュータ若しくは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、又は、エッジサーバを含むことができる。各コンピューティング/処理デバイス内のネットワークアダプタカード又はネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために伝送する。
【0052】
本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(instruction-set-architecture、ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Smalltalk、C++等のオブジェクト配向プログラミング言語、並びに、「C」プログラミング言語又は同様のプログラミング言語等の従来の手続きプログラミング言語を含む1つ以上のプログラミング言語の任意の組み合わせで書き込まれたソースコード又はオブジェクトコードの何れかとすることができる。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロンソフトウェアパッケージとして、ユーザのコンピュータ上で部分的に、リモートコンピュータ上で部分的に、又は、リモートコンピュータ若しくはサーバ上で完全に実行することができる。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(local area network、LAN)若しくは広域ネットワーク(wide area network、WAN)を含む任意のタイプのネットワークを通してユーザのコンピュータに接続することができるか、又は、外部コンピュータ(例えば、インターネットサービスプロバイダを使用するインターネットを介して)に接続することができる。いくつかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(field-programmable gate array、FPGA)又はプログラマブルロジックアレイ(programmable logic array、PLA)を含む電子回路は、本開示の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによって、コンピュータ可読プログラム命令を実行することができる。
【0053】
本開示の態様は、本開示の実施形態による方法、装置(システム)及びコンピュータプログラム製品のフローチャート又はブロック図を参照して本明細書に記載されている。フローチャート又はブロック図の各ブロック、及び、フローチャート又はブロック図におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装され得ることが理解されるであろう。
【0054】
これらのコンピュータ可読プログラム命令は、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャート又はブロック図の1つ以上のブロックで指定された機能/行為を実施するための手段を生成するような機械を生成するように、汎用コンピュータ、専用コンピュータ又は他のプログラマブルデータ処理装置のプロセッサに提供することができる。これらのコンピュータ可読プログラム命令は、その上に記憶された命令を有するコンピュータ可読記憶媒体が、フローチャート又はブロック図の1つ以上のブロックで指定された機能/行為の態様を実装する命令を含む製造物品を含むように、コンピュータ、プログラマブルデータ処理装置又は他のデバイスに特定の方法で機能するように指示することができるコンピュータ可読記憶媒体に記憶することができる。
【0055】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブルデータ処理装置又は他のデバイスにロードされて、コンピュータ、他のプログラマブル装置又は他のデバイス上で実行される命令が、フローチャート又はブロック図の1つ以上のブロックで指定された機能/行為を実施するようにコンピュータ実施プロセスを生成するために、コンピュータ、他のプログラマブル装置又は他のデバイス上で一連の動作ステップを実施させることができる。
【0056】
図中のフローチャート及びブロック図は、本開示の様々な実施形態によるシステム、方法及びコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能及び動作を示す。これに関して、フローチャート又はブロック図の各ブロックは、指定された論理機能を実施するための1つ以上の実行可能命令を含む、命令のモジュール、セグメント又は部分を表すことができる。いくつかの代替的な実装形態では、ブロックに記載されている機能は、図に記載された順序から外れて発生する可能性がある。例えば、連続して示される2つのブロックは、実際には実質的に同時に実行されてもよく、又は、ブロックは、関与する機能に応じて、逆の順序で実行されてもよい。ブロック図又はフロー図の各ブロック、及び、ブロック図又はフロー図におけるブロックの組み合わせは、指定された機能若しくは行為を実行するか、又は、専用ハードウェアとコンピュータ命令との組み合わせを行う専用ハードウェアベースのシステムによって実装することができることにも留意されたい。
【0057】
本開示の様々な実施形態において修正及び変更を行うことができることは、上述した記載から理解されるであろう。本明細書における記載は、例示のみを目的としており、限定的な意味で解釈されるべきではない。本開示の範囲は、以下の特許請求の範囲の文言によってのみ限定される。
【手続補正書】
【提出日】2024-02-13
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
装置であって、
プロセッサと、
システムメモリと、
ファイルシステムをホスティングする不揮発性メモリと、
プロセスアクセラレータ
と、を備え、
前記プロセスアクセラレータは、
前記ファイルシステムのリソースに対する転送要求を発行することと、
前記リソースに対する転送要求に応じて、前
記ファイルシステムからデータを受信することであって、前記データは前記リソースに対応し、前記プロセスアクセラレータは、前
記ファイルシステムから前記データを直接受信して
前記システムメモリをバイパスする、ことと、
前記リソースを取得するために前記データを操作することと、
を行うように構成されている、
装置。
【請求項2】
前記転送要求は、前記データにアクセスするための位置データと、前記データの転送サイズを示すサイズデータと、前記データの圧縮タイプを示す圧縮データと、前記プロセスアクセラレータのターゲットリソースを示すターゲットデータと、を含む、
請求項
1の装置。
【請求項3】
前記プロセスアクセラレータは、グラフィックスアクセラレータ又は機械学習アクセラレータのうち何れかである、
請求項
1の装置。
【請求項4】
前記データは、前記リソースの暗号化形態、前記リソースの圧縮形態、又は、前記リソースのタイル形態のうち少なくとも1つである、
請求項
1の装置。
【請求項5】
前記リソースを取得するために前記データを操作することは、前記データを解凍すること、前記データを復号すること、又は、前記データをタイル化することのうち少なくとも1つを含む、
請求項
1の装置。
【請求項6】
前記プロセスアクセラレータは、直接メモリ転送によって前
記ファイルシステムから前記データを受信する、
請求項
1の装置。
【請求項7】
前記転送要求は、ホストシステムのディスパッチキューに発行される、
請求項
1の装置。
【請求項8】
前
記ファイルシステムは、独立ディスクの冗長アレイ
に記憶される、
請求項
1の装置。
【国際調査報告】