JP2023015243A - バイトアドレス可能メモリとして不揮発性メモリにアクセスする方法及び装置 - Google Patents

バイトアドレス可能メモリとして不揮発性メモリにアクセスする方法及び装置 Download PDF

Info

Publication number
JP2023015243A
JP2023015243A JP2022179600A JP2022179600A JP2023015243A JP 2023015243 A JP2023015243 A JP 2023015243A JP 2022179600 A JP2022179600 A JP 2022179600A JP 2022179600 A JP2022179600 A JP 2022179600A JP 2023015243 A JP2023015243 A JP 2023015243A
Authority
JP
Japan
Prior art keywords
block
data
command
memory location
memory
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.)
Withdrawn
Application number
JP2022179600A
Other languages
English (en)
Inventor
ジェフリー チェン ゴンシエン
Jeffrey Cheng Gongxian
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.)
ATI Technologies ULC
Original Assignee
ATI Technologies ULC
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 ATI Technologies ULC filed Critical ATI Technologies ULC
Publication of JP2023015243A publication Critical patent/JP2023015243A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • 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
    • 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/601Reconfiguration of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

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

Abstract

【課題】ブロックアドレス可能I/O、バイトアドレス可能I/O並びにホストプロセッサ、GPU及び任意の他のPCIe(Peripheral Component Interconnect Express)互換デバイスによるバイトアドレス可能メモリへのダイレクトアクセスを可能とする。【解決手段】ソリッドステートグラフィックス(SSG)カード310において、PCIeスイッチに接続されたフロントエンドプロセッサは、バイトアドレス可能性をエミュレートするために、ブロックアドレス可能I/Oデバイスへのフロントエンドインタフェースとして機能する。例えばグラフィックス処理ユニット(GPU)等のPCIeデバイスは、フロントエンドプロセッサを介して、ブロックアドレス可能I/Oデバイスから必要なバイトに直接アクセスすることができる。【選択図】図3

Description

(関連出願の相互参照)
本願は、2016年12月23日に出願された米国特許出願第15/389,811号の利益を主張するものであり、この内容は参照により本明細書に完全に記載されているものとして援用される。
グラフィックス処理ユニット(GPU)は、名目上、GPUで実行される動作をサービスするために、或る量のローカルメモリ又は専用メモリ(以下、ローカルと呼ぶ)で構成される場合がある。例えば、ローカルメモリは、ダイナミックランダムアクセスメモリとすることができる。また、そのローカルメモリ等のバイトアドレス可能デバイスを有するGPUは、一種のブロックアドレス可能メモリである不揮発性メモリ(NVM)にアクセスすることができる。GPU又は特定のアプリケーションがNVMとローカルメモリとの間のデータ転送を必要とする場合、ホストコンピューティングシステム上で動作するオペレーティングシステム(OS)、ディスプレイドライバ、デバイスドライバ、又は、同様のハードウェア/ソフトウェアエンティティは、通常、データ転送プロセスを制御又は管理する。このデータ転送プロセスは、2ホッププロセス(つまり、最初にNVMからシステムメモリに、次にシステムメモリからローカルメモリに)が必要である。特に、NVMデータは、最初に、NMVコントローラのブロック入出力(I/O)転送メカニズムを介して、システムメモリに転送されなければならない。次に、GPUは、ローカルメモリのデータにアクセスすることができる。これには、少なくともシステムメモリの使用が含まれ、トラフィック及び輻輳が増加する。
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
特定の実施形態による、ホストコンピューティングシステム及びソリッドステートグラフィックス(SSG)カードを有する処理システムを示す図である。 一般的なソフトウェアスタック及びハードウェアアーキテクチャを示す図である。 特定の実施形態による、ホストコンピューティングシステム及びソリッドステートグラフィックス(SSG)カードを有する処理システムを示す図である。 特定の実施形態による、ソフトウェアスタック及びハードウェアアーキテクチャを示す図である。 特定の実施形態による、図3及び図4の処理システムを使用するフロー図である。 特定の実施形態による、図3及び図4の処理システムを使用するフロー図である。 1つ以上の開示された実施形態を実施し得る例示的なデバイスのブロック図である。
本願は、2016年12月23日に出願された米国特許出願第15/389,596号の「Method and Apparatus for Connecting Direct Access From Non-Volatile Memory to Local Memory」という名称の同時係属出願、2016年12月23日に出願された米国特許出願第15/389,747号の「Method and Apparatus for Connecting Non-volatile Memory locally to GPU through a Local Switch」という名称の同時係続出願、及び、2016年12月23日に出願された米国特許出願第15/389,908号の「Method and Apparatus for Integration of Non-volatile Memory」という名称の同時係属出願に関連しており、これらは、言及することによって完全に記載されているかのように援用される。
本明細書では、ブロックアドレス可能入出力(I/O)デバイス(例えば、不揮発性メモリ(NVM)、及び、コントローラ又は他の同様に使用されるデバイス等)をバイトアドレス可能メモリとしてアクセスする方法及びシステムについて説明する。例えばPCIe(Peripheral Component Interconnect Express)ルートコンプレックス及びスイッチ(まとめてPCIeスイッチ)等の高速シリアルコンピュータ拡張バスに接続されたフロントエンドプロセッサは、バイトアドレス可能性をエミュレートするために、ブロックアドレス可能I/Oデバイスへのフロントエンドインタフェースとして機能する。例えばグラフィックス処理ユニット(GPU)又は他のPCIe互換デバイス等のPCIeデバイスは、フロントエンドプロセッサを介して、ブロックアドレス可能I/Oデバイスから必要なバイトにダイレクトアクセスする。すなわち、PCIe互換デバイスは、システムメモリ及びホストプロセッサを介することなく、ブロックアドレス可能I/Oデバイスからデータにアクセスすることができる。これは、ホストプロセッサの関与を回避し、システムメモリコピーを実行する必要がないため、帯域幅を節約するという意味でGPUの性能が向上する。
さらに、フロントエンドプロセッサは、アクセスされたブロックを記憶するためにキャッシュを使用するので、速度が向上し、レイテンシを減少させる。これにより、ブロックへのその後のアクセス時にブロック全体を転送する必要がなくなるので、利用可能な帯域幅及び容量が増加する。一実施形態では、システムは、ブロックアドレス可能I/Oと、バイトアドレス可能I/Oと、ホストプロセッサ、GPU及び任意の他のPCIe互換デバイスによるバイトアドレス可能メモリへのダイレクトアクセスをサポートするこれらのハイブリッドと、を含むことができる。図示及び説明のために、NVM及びNVMコントローラという用語は、本明細書及び特許請求の範囲を限定することなく、ブロックアドレス可能I/Oデバイスの一例として使用される。
図1は、特定の実施形態による、例示的な処理システム100を示す図である。処理システム100は、1つ以上のソリッドステートグラフィックス(SSG)カード110に接続されたホストコンピューティングシステム105を含むことができる。ホストコンピューティングシステム105は、1つ以上の中央処理装置(CPU)122とL2キャッシュ124とを含むプロセッサ120を含む。プロセッサ120は、例えばダイナミックランダムアクセスメモリ(DRAM)等のシステムメモリ126、及び、当業者に知られている他のコンポーネントに接続されるか通信する(まとめて「接続される」)ことができる。
概して、各SSGカード110は、プロセッサ120とインタフェースするための例えばPCIe(Peripheral Component Interconnect Express)スイッチ(PCIeスイッチ)130等の高速シリアルコンピュータ拡張バスを含むが、これに限定されない。PCIeスイッチ130は、例示目的で示されており、他の電気インタフェース又は通信インタフェースを使用することができる。各SSGカード110は、関連するNVM134及びPCIeスイッチ130を介して接続された1つ以上のGPU140にアクセスするために、例えばNVMe(NVM Express)又は不揮発性メモリホストコントローラインタフェース仕様(NVMHCI)デバイス等の1つ以上の不揮発性メモリ(NVM)コントローラ132をさらに含む。各GPU140は、L2キャッシュ142に接続することができ、メモリアーキテクチャにローカルに接続することができ、当該メモリアーキテクチャは、例えば、ローカルメモリ144、高帯域幅メモリ(HBM)、DDR4(double data rate fourth-generation synchronous dynamic random- access memory)、GDDR5(double data rate type five synchronous graphics random access memory)、ハイブリッドメモリキューブ、又は、例えば関連するコントローラと共に同様に使用される他のメモリとすることができる。図示及び説明のために、ローカルメモリという用語は、本明細書及び特許請求の範囲を限定することなく、メモリアーキテクチャの一例として使用される。各NVMコントローラ132は、関連するNVM134を管理し、アクセスすることができ、特に、ホストコンピューティングシステム105又はGPU140からの入力コマンドをデコードすることができる。この構成は例示的であり、他の構成も、本明細書及び特許請求の範囲内で実施することができる。
図2は、例えば図1の処理システム100等の処理システムのソフトウェア相互運用性を示す図である。図2は、単純化された処理システム205を使用して、ソフトウェアスタック200を使用するソフトウェア及びハードウェアの相互運用性を示している。処理システム205は、システムメモリ252に接続されたCPU250と、NVM264に接続されたNVMコントローラ262と、ローカルメモリ272に接続されたGPU270と、を含み、これら全ては、PCIeスイッチ280を介して接続されている。
ソフトウェアスタック200の機能は当業者には周知であり、以下は代表的且つ例示的な例である。概して、ソフトウェアスタック200は、CPU250上で動作する。ソフトウェアスタック200は、管理スタック210と、ブロックアクセスAPI(application program interface)220と、ファイルアクセスAPI230と、ファイルシステム240と、NVMデバイスドライバ245と、例えばオペレーティングシステム(OS)(図示省略)等の他のソフトウェアコンポーネントと、を含むが、これらに限定されない。管理スタック210は、システム管理ツールを提供し、ファイルシステム240を制御及び構成し、ボリュームをフォーマットし、他の同様の機能を実行するのに使用される管理ユーザインタフェース(UI)212及び管理ライブラリ214を含む。ブロックアクセスAPI220及びファイルアクセスAPI230は、入出力(I/O)API又はアクセスAPIである。ブロックアクセスAPI220は、アプリケーション222によって使用され、標準ローデバイスアクセスプロトコル(standard raw device access protocol)224を介して、例えば2K、4K、8K、16K、64K、128K等の様々なブロックサイズのメモリにアクセスする。ファイルアクセスAPI230は、標準ファイルAPI234を介してファイルシステム240にアクセスするために、アプリケーション232によって使用される。これは、例えばNFS(Network File System)又はSMB(Server Message Block)等の様々なアクセスプロトコルを使用して実行することができる。ブロックアクセスAPI220及びファイルアクセスAPI230の両方は、例えばNVMデバイスドライバ245等のデバイスドライバを使用して、例えばNVM264等のメモリにアクセスする。
ソフトウェアスタック200のI/O API又はファイルアクセスAPIによってアクセス動作が行われる例では、ファイルが開かれ、ファイルハンドルが生成されて、関数呼び出しのためにファイルを識別する。次に、ファイルハンドル用のファイルマッピングハンドル又はオブジェクトが生成される。これにより、CPU250がアクセスするファイルのサイズに対して仮想アドレス(VA)範囲又は空間が割り当てられる。ファイルは、割り当てられたVA空間にマッピングされる。アクセスの場合、VA空間は、CPU250からの関連するロードコマンド又はストアコマンドによってヒットされる。VA空間は、メモリの一部に物理的にマッピングされていないので、ロードコマンド又はストアコマンドは障害を発生させる。OSは、障害を見つけ、例えばNVMデバイスドライバ245を呼び出して、例えば、ブロックI/Oダイレクトメモリアクセス(DMA)コマンドをNVMコントローラ262に発行する。要求されたデータは、(データパス290によって示すように)NVM264からシステムメモリ252にコピーされる。OSは、システムメモリ252の一部を、障害が発生し、CPU250によるアクセスをブロック解除(unblock)した割り当てVA空間にマッピングする。図示するように、アプリケーション222又はアプリケーション232は、基本的なアクセスメカニズムを認識していない。OSは、例えばNVMコントローラ262及びNVM264等のブロックI/Oデバイスによって提供されるブロックI/O DMAコマンドを利用して、アクセスを実現する基本的な作業を実行する。
ハードウェアの観点から、CPU250は、(レジスタインタフェースである)ブロックI/Oプログラミングインタフェースを使用して、例えば4キロバイトの単位でデータのブロックをシステムメモリ252にコピーするDMAコマンドを発行する。これは、NVMコントローラ262のブロックI/O DMAコマンドを使用してデータをコピーし、システムメモリ252に送る、例えばNVMデバイスドライバ245等のデバイスドライバを使用して達成される。次に、CPU250は、システムメモリ252からのデータにアクセスすることができる。GPU270は、例えばPCIe等の相互接続バスを介して、システムメモリ252からのデータにアクセスすることができる。或いは、データのコピーが、最初に(データパス292によって示すように)システムメモリ252からローカルメモリ272にコピーされる。次に、GPU270は、ローカルメモリ272からのデータにアクセスすることができる。
上記は、一般的なメモリマッピングファイルI/Oメカニズム又はブロックI/Oアクセスモデルを説明している。一般的なメモリマップファイルI/Oメカニズムでは、GPU270がデータにアクセスする前に、一連のステップを順次完了する必要がある。特に、データは、コピーされ、システムメモリ252に記憶され、再びコピーされ、最終的にローカルメモリ272に記憶される。この間、GPU270は進行することができず、停止状態にある。問題として、GPU270は、NVM264にダイレクトアクセスすることができない。この問題に対する1つの潜在的な解決策は、バイトアドレス可能メモリマップデバイスである不揮発性デュアルインラインメモリモジュール(NVDIMM)を使用することである。しかしながら、NVDIMMがサポートされるのは、CPUに接続され、PCIeデバイスであるGPUに接続されていないダイナミックランダムアクセスメモリ(DRAM)インタフェースだけである。したがって、この提案された解決策は、ダイレクトアクセスを提供するのに不十分である。
図3は、特定の実施形態による、ブロックI/Oデバイスへのダイレクトアクセスを提供する例示的な処理システム300を示す図である。処理システム300は、1つ以上のSSGカード310に接続されたホストコンピューティングシステム305を含むことができる。ホストコンピューティングシステム305は、1つ以上のCPU322とL2キャッシュ324とを含むプロセッサ320を含む。プロセッサ320は、例えばDRAM等のシステムメモリ326、及び、当業者に知られている他のコンポーネントに接続することができる。
概して、各SSGカード310は、プロセッサ320とインタフェースするためのPCIeスイッチ330を含む。PCIeスイッチ330は、例示目的で示されており、他の電気インタフェース又は通信インタフェースを使用することができる。各SSGカード310は、関連するNVM334及びPCIeスイッチ330を介して接続される1つ以上のGPU340にアクセスするための例えばNVMeデバイス又はNVMHCIデバイス等の1つ以上のNVMコントローラ332を含む。各GPU340は、L2キャッシュ342に接続することができ、ローカルメモリ344にローカルに接続することができる。各SSGカード310は、PCIeスイッチ330と同じ場所に配置され、PCIeスイッチ330に接続され、1つ以上のNVMコントローラ332の各々にさらに接続されるフロントエンドプロセッサ350を含む。キャッシュ352は、フロントエンドプロセッサ350に接続されている。フロントエンドプロセッサ350は、マイクロプロセッサ、組み込み型マイクロプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、又は、PCIeバス上でバイトアドレス可能性をエミュレートするためにNVMコントローラ332及びNVM334へのフロントエンドインタフェースとして機能する同様のデバイスであってもよい。特に、図4に関してさらに説明するように、フロントエンドプロセッサ350は、ホストコンピューティングシステム305又はGPU340からの入力コマンドをデコードし、NVMコントローラ332及びNVM334から要求されたバイトを読み出し、バイトをCPU322又はGPU340に直接転送する。一実施形態では、CPU322又はGPU340によるアクセスのために、バイトをL2キャッシュ324又はL2キャッシュ342に転送することができる。この構成は例示的なものであり、他の構成も、本明細書及び特許請求の範囲内で実施することができる。
図4は、例えば図3の処理システム300等の処理システムのソフトウェア相互運用性を示す図である。図4は、単純化された処理システム405を使用して、ソフトウェアスタック400を使用するソフトウェア及びハードウェアの相互運用性を示している。概して、ソフトウェアスタック400は、CPU450上で動作する。ソフトウェアスタック400は、管理スタック410と、ブロックアクセスAPI420と、ファイルアクセスAPI430と、ファイルシステム440と、NVMデバイスドライバ445と、例えばOS(図示省略)等の他のソフトウェアコンポーネントと、を含むが、これらに限定されない。管理スタック410は、システム管理ツールを提供し、ファイルシステム440を制御及び構成し、ボリュームをフォーマットし、他の同様の機能を実行するのに使用される管理ユーザインタフェース(UI)412及び管理ライブラリ414を含む。ブロックアクセスAPI420及びファイルアクセスAPI430は、入出力(I/O)API又はアクセスAPIである。ブロックアクセスAPI420は、アプリケーション422によって使用され、標準ローデバイスアクセスプロトコル424を介して、例えば2K、4K、8K、16K、64K、128K等の様々なブロックサイズのメモリにアクセスする。ファイルアクセスAPI430は、標準ファイルAPI434を介してファイルアクセス440にアクセスするために、アプリケーション432によって使用される。
処理システム405は、システムメモリ452に接続されたCPU450と、NVM462に接続されたNVMコントローラ460と、ローカルメモリ472に接続されたGPU470と、を含み、これら全ては、PCIeスイッチ480を介して接続されている。処理システム405は、フロントエンドプロセッサ465をさらに含む。一実施形態では、フロントエンドプロセッサ465は、宛先メモリアドレスへのDMAデータ転送を開始することを意味するPCIeマスタ、及び、別のデバイスメモリアクセス要求に応じることを意味するPCIeスレーブの両方とすることができる。一実施形態では、フロントエンドプロセッサ465は、スレーブ要求を維持するために設けることができるキャッシュ467に接続されている。フロントエンドプロセッサ465は、レジスタアパーチャ482及びメモリアパーチャ484を介してPCIeスイッチ480と同じ場所に配置され、接続されている。レジスタアパーチャ482及びメモリアパーチャ484は、(ベースアドレスレジスタ(BAR)としても知られる)PCIeセマンティックスの下で定義され、例えばGPU470等のピアPCIeデバイスやCPU450が、標準PCIeアクセスサイクルを使用して、例えばNVMコントローラ460及びNVM462等のターゲットPCIeデバイスにアクセスできるようにする。
概して、データ転送コマンドが、レジスタアパーチャ482又はメモリアパーチャ484の何れかに該当するPCIe宛先アドレス(例えば、GPU470又はCPU450から受信される)を有する場合、データ転送コマンドは、フロントエンドプロセッサ465に転送される。PCIe宛先アドレスがレジスタアパーチャ482にある場合、フロントエンドプロセッサ465は、上述したようにNVMコントローラ460のブロックI/O DMAコマンドを介してブロックアドレス可能処理を実行する。PCIe宛先アドレスがメモリアパーチャ484にある場合、フロントエンドプロセッサ465は、バイトアドレス可能処理を実行する。一実施形態では、フロントエンドプロセッサ465は、例えば、読み出しアクセス及び書き込みアクセスのために動作することができる。読み出しアクセスの実施形態では、フロントエンドプロセッサ465は、(要求されたバイトが以前に要求されたブロックに存在する場合に)キャッシュ467からデータバイトを読み出すか、NVMコントローラ460のブロックI/O DMAコマンドを介してNVM462からデータブロックを読み出す。読み出されたデータブロックは、キャッシュ467に記憶され、要求されたバイトは、(データパス495によって示すように)CPU450又は(データパス496によって示すように)GPU470に転送される。書き込みアクセスの実施形態では、フロントエンドプロセッサ465は、データバイトをキャッシュ467に書き込み、(要求されたバイトがキャッシュ467に存在する場合に)NVMコントローラ460のブロックI/O DMAコマンドを介してデータをNVM462にフラッシュバックするか、NVMコントローラ460のブロックI/O DMAコマンドを介してデータをNVM462に書き込む。レジスタアパーチャ482及びメモリアパーチャ484の両方を設けることによって、ブロックアドレス可能性処理及びバイトアドレス可能性処理の両方が可能になる。
フロントエンドプロセッサ465及びメモリアパーチャ484を含むことは、例えば、ブロックアクセスAPI420及びファイルアクセスAPI430に加えて、パーシステントメモリスタック490の使用を可能にする。ブロックアクセスAPI420及びファイルアクセスAPI430の動作は、上述した通りである。パーシステントメモリスタック490は、例えば、アプリケーション491がNVM462に対してゼロコピーアクセスを実行するのを可能にする。すなわち、アプリケーション491は、I/O処理なし、キューイングなし、並びに、非同期読み出し及び/又は書き込みなしに、メモリマッピング処理493を介してロード/ストア処理492を実行することができる。
図5は、図3及び図4と連携して、読み出しアクセスシナリオにおいてブロックI/Oデバイスのバイトアドレス可能性を提供する例示的なフロー図500である。データ転送コマンド又はメモリアクセス要求は、例えばPCIeスイッチ330等のローカルスイッチを介して、例えばプロセッサ320又はGPU340等のプロセッサから例えばNVM334等の宛先デバイスに送信される(ステップ505)。一実施形態では、宛先アドレスにデータ転送コマンドを提供される。例えばフロントエンドプロセッサ350等のフロントエンドプロセッサは、データ転送コマンドが、ブロックアドレス可能処理を必要とするのか、又は、バイトアドレス可能処理を必要とするのかを判別する(ステップ510)。一実施形態では、データ転送コマンドがレジスタアパーチャにあるのか、又は、メモリアパーチャ484にあるのかによって、ブロックアドレス可能処理又はバイトアドレス可能処理の必要性が判別される。ブロックアドレス可能処理の場合、フロントエンドプロセッサは、要求されたブロックが、例えばキャッシュ352等の関連するキャッシュ内に存在するのかどうかを判別する(ステップ515)。要求されたブロックがキャッシュ内に存在する場合、要求されたブロックは、ブロックI/O処理を介して転送される(ステップ520)。一実施形態では、ブロックI/O処理は、ブロックI/O DMAコマンド処理であってもよい。要求されたブロックがキャッシュ内に存在しない場合、要求されたブロックは、宛先デバイスから読み出され(ステップ525)、ブロックI/O処理を介して転送される(ステップ520)。一実施形態では、要求されたブロック又は読み出されたブロックは、キャッシュに保存される。一実施形態では、要求されたブロックは、ターゲットデバイスに関係なく、システムメモリに転送される。
バイトアドレス可能処理の場合、フロントエンドプロセッサは、要求されたブロックが関連するキャッシュ内に存在するかどうかを判別する(ステップ530)。要求されたバイトがキャッシュ内に存在する場合、要求されたバイトは、ターゲットプロセッサに直接転送される(ステップ535)。要求されたバイトがキャッシュ内に存在しない場合、要求されたバイトを含むブロックは、宛先デバイスから読み出される(ステップ540)。フロントエンドプロセッサは、要求されたバイトをターゲットプロセッサに転送する(ステップ535)。一実施形態では、要求されたブロック又は読み出されたブロックは、キャッシュに保存される。
図6は、図3及び図4と連携して、書き込みアクセスシナリオにおいてブロックI/Oデバイスのバイトアドレス可能性を提供する例示的なフロー図600である。データ転送コマンド又はメモリアクセス要求は、例えばPCIeスイッチ330等のローカルスイッチを介して、プロセッサ320又はGPU340等のプロセッサから例えばNVM334等の宛先デバイスに送信される(ステップ605)。一実施形態では、宛先アドレスにデータ転送コマンドが提供される。例えばフロントエンドプロセッサ350等のフロントエンドプロセッサは、データ転送コマンドが、ブロックアドレス可能処理を必要とするのか、又は、バイトアドレス可能処理を必要とするのかを判別する(ステップ610)。一実施形態では、データ転送コマンドが、レジスタアパーチャにあるのか、又は、メモリアパーチャ484にあるのかによって、ブロックアドレス可能処理又はバイトアドレス可能処理の必要性が判別される。ブロックアドレス可能処理の場合、フロントエンドプロセッサは、要求されたブロックが、例えばキャッシュ352等の関連するキャッシュ内に存在するかどうかを判別する(ステップ615)。要求されたブロックがキャッシュ内に存在する場合、キャッシュは、データで更新され(ステップ620)、データは、NVMコントローラ332のブロックI/O DMAコマンドを介して、例えばNVM334等の宛先デバイスにフラッシュバックされる(ステップ622)。一実施形態では、キャッシュ内のデータが無効にされ(ステップ621)、データは、NVMコントローラ332のブロックI/O DMAコマンドを介して宛先デバイス内で更新される(ステップ622)。キャッシュの無効化は、様々な技術を用いて実施することができ、図6は例示的なものである。要求されたブロックがキャッシュ内に存在しない場合、データは、ブロックI/O DMAコマンドを介して宛先デバイス内で更新される(ステップ625)。
バイトアドレス可能処理の場合、フロントエンドプロセッサは、要求されたバイトが関連するキャッシュ内に存在するかどうかを判別する(ステップ630)。要求されたバイトがキャッシュ内に存在する場合、キャッシュは、直接(つまり、バイトレベルで)更新され(ステップ635)、データは、NVMコントローラ332のブロックI/O DMAコマンドを介して、例えばNVM334等の宛先デバイスにフラッシュバックされる(ステップ637)。一実施形態では、キャッシュ内のデータが無効にされ(ステップ636)、データは、NVMコントローラ332のブロックI/O DMAコマンドを介して宛先デバイス内で更新される(ステップ637)。要求されたバイトがキャッシュ内に存在しない場合、データは、ブロックI/O DMAコマンドを介して宛先デバイス内で更新される(ステップ640)。
図7は、1つ以上の開示された実施形態の一部を実施し得る例示的なデバイス700のブロック図である。デバイス700は、例えば、ヘッドマウントデバイス、サーバ、コンピュータ、ゲーム機、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータ等を含むことができる。デバイス700は、プロセッサ702と、メモリ704と、ストレージ706と、1つ以上の入力デバイス708と、1つ以上の出力デバイス710と、を含む。また、デバイス700は、オプションで入力ドライバ712及び出力ドライバ714を含むことができる。デバイス700は、図7に示されていない追加のコンポーネントを含み得ることが理解されるであろう。
プロセッサ702は、中央処理装置(CPU)、グラフィックス処理ユニット(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含んでもよく、各プロセッサコアは、CPU又はGPUであってもよい。メモリ704は、プロセッサ702と同じダイ上に配置されてもよいし、プロセッサ702とは別に配置されてもよい。メモリ704は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM、キャッシュ等)を含むことができる。
ストレージ706は、固定又は着脱可能なストレージ(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク若しくはフラッシュドライブ等)を含むことができる。入力デバイス708は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリクススキャナ又はネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信用の無線ローカルエリアネットワークカード)を含むことができる。出力デバイス710は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上のライト、アンテナ又はネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信用の無線ローカルエリアネットワークカード)を含むことができる。
入力ドライバ712は、プロセッサ702及び入力デバイス708と通信し、プロセッサ702が入力デバイス708から入力を受信するのを可能にする。出力ドライバ714は、プロセッサ702及び出力デバイス710と通信し、プロセッサ702が出力デバイス710に出力を送信するのを可能にする。入力ドライバ712及び出力ドライバ714がオプションのコンポーネントであることと、入力ドライバ712及び出力ドライバ714が存在しない場合には、デバイス700が同様に動作することと、に留意されたい。
概して、データを転送する方法は、プロセッサがブロック入出力(I/O)デバイスへのアクセスを必要とする場合に、フロントエンドプロセッサが、ローカルスイッチを介してデータ転送コマンドを受信することを含む。フロントエンドプロセッサは、第1パスを介してデータ転送コマンドを受信した場合にバイトアドレス可能処理を行い、バイトアドレス可能処理の場合に、データ転送コマンドにおいて要求されたバイトがフロントエンドプロセッサに関連するキャッシュ内に存在するかどうかをチェックする。フロントエンドプロセッサは、データ転送コマンドが読み出しである場合には、バイトがキャッシュ内に存在しない場合に、当該バイトを含むブロックをブロックI/Oデバイスから読み出し、当該バイトを、ローカルスイッチを介してフロントエンドプロセッサからターゲットプロセッサに直接転送する。一実施形態では、プロセッサは、グラフィックス処理ユニット(GPU)又は中央処理装置(CPU)であり、GPU又はCPUのターゲットプロセッサであり、ローカルスイッチは、PCIeスイッチ又はルートコンプレックスであり、ブロックI/Oデバイスは、不揮発性メモリ(NVM)デバイスである。一実施形態では、第1パスは、ローカルスイッチのメモリアパーチャでデータ転送コマンドを受信するためのものである。一実施形態では、方法は、データ転送コマンド内の宛先アドレスがメモリアパーチャにあるかどうかを判別する。一実施形態では、方法は、ブロックがブロックI/Oデバイスから読み出される場合、ブロックをキャッシュに記憶する。一実施形態では、フロントエンドプロセッサは、データ転送コマンドを第2パスを介して受信した場合に、ブロックアドレス可能処理を行う。一実施形態では、第2パスは、ローカルスイッチのレジスタアパーチャでデータ転送コマンドを受信するためのものである。一実施形態では、方法は、データ転送コマンド内の宛先アドレスがレジスタアパーチャにあるかどうかを判別する。一実施形態では、方法は、データ転送コマンドが書き込みである場合には、バイトがキャッシュ内に存在する場合にキャッシュを更新し、データをブロック入出力(I/O)デバイスにフラッシュバックする。
概して、データを転送する装置は、少なくとも1つのグラフィックス処理ユニット(GPU)と、少なくとも1つのブロック入出力(I/O)デバイスと、少なくとも1つのGPUに接続されたローカルスイッチと、ローカルスイッチ及び少なくとも1つのブロックI/Oデバイスに接続されたフロントエンドプロセッサと、フロントエンドプロセッサに接続されたキャッシュと、を含む。フロントエンドプロセッサは、少なくとも1つのブロックI/Oデバイスへのアクセスが必要な場合に、データ転送コマンドをGPUから受信し、データ転送コマンドを第1パスを介して受信した場合に、データ転送コマンドをバイトアドレス可能処理し、バイトアドレス可能処理の場合に、データ転送コマンドにおいて要求されたバイトがキャッシュ内に存在するかどうかをチェックする。データ転送コマンドが読み出しである場合、フロントエンドプロセッサは、バイトがキャッシュ内に存在しない場合に、当該バイトを含むブロックを少なくとも1つのブロックI/Oデバイスから読み出し、当該バイトをターゲットプロセッサに直接転送する。一実施形態では、装置は、ローカルスイッチ内にメモリアパーチャを含み、第1パスは、ローカルスイッチのメモリアパーチャでデータ転送コマンドを受信する。一実施形態では、フロントエンドプロセッサは、データ転送コマンドの宛先アドレスがメモリアパーチャにあるかどうかを判別する。一実施形態では、フロントエンドプロセッサは、ブロックが少なくとも1つのブロックI/Oデバイスから読み出される場合に、ブロックをキャッシュに記憶する。一実施形態では、フロントエンドプロセッサは、データ転送コマンドを第2パスを介して受信した場合、データ転送コマンドをブロックアドレス可能処理する。一実施形態では、装置は、ローカルスイッチ内にレジスタアパーチャを含み、第2パスは、ローカルスイッチのレジスタアパーチャでデータ転送コマンドを受信する。一実施形態では、フロントエンドプロセッサは、データ転送コマンドの宛先アドレスがレジスタアパーチャにあるかどうかを判別する。一実施形態では、データ転送コマンドが書き込みである場合、フロントエンドプロセッサは、バイトがキャッシュ内に存在する場合に、キャッシュを更新し、データを少なくとも1つのブロック入出力(I/O)でバスにフラッシュバックする。
概して、データを転送するシステムは、プロセッサ及びシステムメモリを含むホストプロセッサと、少なくとも1つのソリッドステートグラフィックス(SSG)カードと、を含む。各SSGカードは、少なくとも1つのグラフィックス処理ユニット(GPU)と、少なくとも1つのブロック入出力(I/O)デバイスと、ホストプロセッサ及び少なくとも1つのGPUに接続されたローカルスイッチと、ローカルスイッチ及び各ブロックI/Oデバイスに接続されたフロントエンドプロセッサと、フロントエンドプロセッサに接続されたキャッシュと、を含む。フロントエンドプロセッサは、少なくとも1つのブロックI/Oデバイスへのアクセスが必要な場合に、データ転送コマンドをGPU又はホストプロセッサから受信し、データ転送コマンドを第1パスを介して受信した場合、データ転送コマンドをバイトアドレス可能処理し、バイトアドレス可能処理の場合に、データ転送コマンドにおいて要求されたバイトがキャッシュ内に存在するかどうかをチェックする。データ転送コマンドが読み出しである場合、フロントエンドプロセッサは、バイトがキャッシュ内に存在しない場合に、当該バイトを含むブロックをブロックI/Oデバイスから読み出し、当該バイトを、ローカルスイッチを介してターゲットプロセッサに直接転送する。一実施形態では、システムは、ローカルスイッチのメモリアパーチャを含み、第1パスは、ローカルスイッチのメモリアパーチャでデータ転送コマンドを受信し、フロントエンドプロセッサは、データ転送コマンドの宛先アドレスがメモリアパーチャにあるかどうかを判別する。一実施形態では、フロントエンドプロセッサは、データ転送コマンドを第2パスを介して受信した場合に、データ転送コマンドをブロックアドレス可能処理し、ローカルスイッチは、レジスタアパーチャを含み、第2パスは、ローカルスイッチのレジスタアパーチャでデータ転送コマンドを受信する。
概して、処理システムで実行されると、データを転送する方法を処理システムに実行させる命令を含む非一時的なコンピュータ可読記憶媒体であって、方法は、プロセッサが、ブック入出力(I/O)デバイスへのアクセスが必要な場合に、フロントエンドプロセッサが、ローカルスイッチを介してデータ転送コマンドを受信するステップと、フロントエンドプロセッサが、データ転送コマンドを第1パスを介して受信した場合に、バイトアドレス可能処理を行うステップと、バイトアドレス可能処理の場合に、データ転送コマンドにおいて要求されたバイトが、フロントエンドプロセッサに関連するキャッシュ内に存在するかどうかをチェックするステップと、データ転送コマンドが読み出しである場合に、バイトがキャッシュ内に存在しない場合には、バイトを含むブロックをブロックI/Oデバイスから読み出すステップと、当該バイトを、ローカルスイッチを介してフロントエンドプロセッサからターゲットプロセッサに直接転送するステップと、を含む。一実施形態では、第1パスは、ローカルスイッチのメモリアパーチャでデータ転送コマンドを受信し、方法は、データ転送コマンド内の宛先アドレスがメモリアパーチャにあるかどうかを判別するステップと、データ転送コマンドを第2パスを介して受信した場合に、データ転送コマンドをブロックアドレス可能処理するステップと、を含み、第2パスは、ローカルスイッチのレジスタアパーチャでデータ転送コマンドを受信する。一実施形態では、非一時的なコンピュータ可読記憶媒体は、データ転送コマンドが書き込みである場合に、バイトがキャッシュに存在する場合にキャッシュを更新するするステップと、データをブロック入出力(I/O)デバイスにフラッシュバックするステップと、を含む。
概して、本明細書で説明する実施形態を限定することなく、非一時的なコンピュータ可読記憶媒体は、処理システムで実行されると、バイトアドレス可能メモリとして不揮発性メモリにアクセスする方法を処理システムに実行させる命令を含む。
本明細書の開示に基づいて多くの変形が可能であることを理解されたい。機能及び要素を特定の組み合わせで上記のように説明されているが、各機能又は要素は、他の機能や要素なしに単独で使用されてもよいし、他の機能や要素を伴って若しくは伴わずに様々な組み合わせで使用されてもよい。
提供された方法には、汎用コンピュータ、プロセッサ又はプロセッサコアにおける実施が含まれる。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、任意の他のタイプの集積回路(IC)、及び/又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語(HDL)命令、及び、ネットリストを含む他の中間データ(このような命令はコンピュータ可読媒体に記憶され得る)の結果を使用して製造プロセスを構成することによって製造されてもよい。このような処理の結果は、本実施形態の態様を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
本明細書で提供される方法又はフロー図は、汎用コンピュータ若しくはプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア、ファームウェアにおいて実施されてもよい。非一時的なコンピュータ可読記憶媒体の例には、ROM、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、光磁気媒体、光学媒体(CD-ROMディスク等)、デジタル多用途ディスク(DVD)等が含まれる。

Claims (23)

  1. データを転送する方法であって、
    フロントエンドプロセッサが、ローカルスイッチを介して、ブロックアドレス可能なアクセスを指定してブロックアドレス可能入出力デバイス(ブロックI/Oデバイス)のデータブロックを読み出すための第1コマンドをプロセッサから受信することと、
    前記第1コマンドを受信したことに応じて、前記データブロックを、前記ブロックI/Oデバイスのブロックアドレス可能メモリから、ブロックより小さいチャンクでアドレス可能な第2メモリ位置にコピーすることと、
    前記フロントエンドプロセッサが、前記ローカルスイッチを介して、ブロックより小さいチャンクによるアクセスを指定して前記ブロックI/Oデバイスのデータにアクセスするための第2コマンドを前記プロセッサから受信することと、
    前記第2コマンドを受信したことに応じて、前記データが前記第2メモリ位置に記憶された前記データブロックに含まれていることを判別することと、
    前記第2コマンドに従って、ブロックより小さいチャンクで前記第2メモリ位置の前記データにアクセスすることと、を含む、
    方法。
  2. 前記プロセッサは、グラフィックス処理ユニット(GPU)又は中央処理装置(CPU)であり、前記ローカルスイッチは、PCIe(Peripheral Component Interconnect Express)スイッチ又はルートコンプレックスであり、前記ブロックI/Oデバイスは、不揮発性メモリ(NVM)デバイスである、
    請求項1の方法。
  3. 前記第2コマンドは、前記ローカルスイッチのメモリアパーチャで受信される、
    請求項1の方法。
  4. 前記第2コマンドは読み出しコマンドを含み、
    前記第2コマンドに従って、前記第2メモリ位置の前記データにアクセスすることは、前記データをターゲットプロセッサに転送することを含む、
    請求項1の方法。
  5. 前記第2コマンドは書き込みコマンドを含み、
    前記第2コマンドに従って、前記第2メモリ位置の前記データにアクセスすることは、前記第2メモリ位置の前記データを更新することと、前記データを前記ブロックアドレス可能メモリにフラッシュすることと、を含む、
    請求項1の方法。
  6. 前記フロントエンドプロセッサが、前記ローカルスイッチを介して、前記第2メモリ位置に記憶されていない第2データブロックに書き込みするための第3コマンドを受信することと、
    前記第3コマンドに応じて、前記第2メモリ位置ではなく前記ブロックI/Oデバイスのデータブロックに書き込みすることと、を含む、
    請求項1の方法。
  7. 前記第1コマンドは、前記ローカルスイッチのレジスタアパーチャで受信される、
    請求項1の方法。
  8. 前記フロントエンドプロセッサが、前記ローカルスイッチを介して、前記第2メモリ位置に記憶されていない第2データに書き込みするための第3コマンドを受信することと、
    前記第3コマンドに応じて、前記第2メモリ位置ではなく前記ブロックI/Oデバイスの前記第2データに書き込みすることと、を含む、
    請求項1の方法。
  9. 前記フロントエンドプロセッサが、前記ローカルスイッチを介して、前記第2メモリ位置に記憶されていない第2データを読み出すための第3コマンドを受信することと、
    前記第3コマンドに応じて、前記第2メモリ位置ではなく前記ブロックI/Oデバイスから第2データを取得することと、を含む、
    請求項1の方法。
  10. データを転送する装置であって、
    少なくとも1つのグラフィックス処理ユニット(GPU)と、
    少なくとも1つのブロックアドレス可能入出力デバイス(ブロックI/Oデバイス)と、
    前記少なくとも1つのGPUに接続されたローカルスイッチと、
    前記ローカルスイッチ及び前記少なくとも1つのブロックI/Oデバイスに接続されたフロントエンドプロセッサと、
    前記フロントエンドプロセッサに接続された第2メモリ位置であって、ブロックより小さいチャンクでアドレス可能な第2メモリ位置と、を備え、
    前記フロントエンドプロセッサは、
    ブロックアドレス可能なアクセスを指定して前記少なくとも1つのブロックI/Oデバイスのうち何れかのブロックI/Oデバイスのデータブロックを読み出すための第1コマンドを前記GPUから受信することと、
    前記第1コマンドを受信したことに応じて、前記データブロックを、前記ブロックI/Oデバイスのブロックアドレス可能メモリから前記第2メモリ位置にコピーすることと、
    前記フロントエンドプロセッサにおいて、前記ローカルスイッチを介して、ブロックより小さいチャンクによるアクセスを指定して前記ブロックI/Oデバイスのデータにアクセスするための第2コマンドをプロセッサから受信することと、
    前記第2コマンドを受信したことに応じて、前記データが前記第2メモリ位置に記憶された前記データブロックに含まれていることを判別することと、
    前記第2コマンドに従って、ブロックより小さいチャンクで前記第2メモリ位置の前記データにアクセスすることと、
    を行うように構成されている、
    装置。
  11. 前記ローカルスイッチ内のメモリアパーチャであって、前記第2コマンドは、前記メモリアパーチャで受信される、メモリアパーチャを備える、
    請求項10の装置。
  12. 前記第2コマンドは読み出しコマンドを含み、
    前記第2コマンドに従って、前記第2メモリ位置の前記データにアクセスすることは、前記データをターゲットプロセッサに転送することを含む、
    請求項10の装置。
  13. 前記第2コマンドは書き込みコマンドを含み、
    前記第2コマンドに従って、前記第2メモリ位置の前記データにアクセスすることは、前記第2メモリ位置の前記データを更新することと、前記データを前記ブロックアドレス可能メモリにフラッシュすることと、を含む、
    請求項10の装置。
  14. 前記フロントエンドプロセッサは、
    前記フロントエンドプロセッサにおいて、前記ローカルスイッチを介して、前記第2メモリ位置に記憶されていない第2データブロックに書き込みするための第3コマンドを受信することと、
    前記第3コマンドに応じて、前記第2メモリ位置ではなく前記ブロックI/Oデバイスのデータブロックに書き込みすることと、
    を行うようにさらに構成されている、
    請求項10の装置。
  15. 前記ローカルスイッチのレジスタアパーチャであって、前記第1コマンドは、前記レジスタアパーチャで受信される、レジスタアパーチャを備える、
    請求項10の装置。
  16. 前記フロントエンドプロセッサは、
    前記フロントエンドプロセッサにおいて、前記ローカルスイッチを介して、前記第2メモリ位置に記憶されていない、ブロックよりも小さい第2データに書き込みするための第3コマンドを受信することと、
    前記第3コマンドに応じて、前記第2メモリ位置ではなく前記ブロックI/Oデバイスの前記第2データに書き込みすることと、
    を行うようにさらに構成されている、
    請求項10の装置。
  17. 前記フロントエンドプロセッサは、
    前記フロントエンドプロセッサにおいて、前記ローカルスイッチを介して、前記第2メモリ位置に記憶されていない、ブロックよりも小さい第2データを読み出すための第3コマンドを受信することと、
    前記第3コマンドに応じて、前記第2メモリ位置ではなく前記ブロックI/Oデバイスから第2データを取得することと、
    を行うようにさらに構成されている、
    請求項10の装置。
  18. データを転送するシステムであって、
    プロセッサ及びシステムメモリを含むホストプロセッサと、
    少なくとも1つのソリッドステートグラフィックス(SSG)カードと、を備え、
    各SSGカードは、
    少なくとも1つのグラフィックス処理ユニット(GPU)と、
    少なくとも1つのブロックアドレス可能入出力デバイス(ブロックI/Oデバイス)と、
    前記ホストプロセッサ及び前記少なくとも1つのGPUに接続されたローカルスイッチと、
    前記ローカルスイッチ及び各ブロックI/Oデバイスに接続されたフロントエンドプロセッサと、
    前記フロントエンドプロセッサに接続された第2メモリ位置であって、ブロックより小さいチャンクでアドレス可能な第2メモリ位置と、を備え、
    前記フロントエンドプロセッサは、
    ブロックアドレス可能なアクセスを指定して前記少なくとも1つのブロックI/Oデバイスのうち何れかのブロックI/Oデバイスのデータブロックを読み出すための第1コマンドを前記GPU又は前記ホストプロセッサから受信することと、
    前記第1コマンドを受信したことに応じて、前記データブロックを、前記ブロックI/Oデバイスのブロックアドレス可能メモリから前記第2メモリ位置にコピーすることと、
    前記フロントエンドプロセッサにおいて、前記ローカルスイッチを介して、ブロックより小さいチャンクによるアクセスを指定して前記ブロックI/Oデバイスのデータにアクセスするための第2コマンドを前記GPU又は前記ホストプロセッサから受信することと、
    前記第2コマンドを受信したことに応じて、前記データが前記第2メモリ位置に記憶された前記データブロックに含まれていることを判別することと、
    前記第2コマンドに従って、ブロックより小さいチャンクで前記第2メモリ位置の前記データにアクセスすることと、
    を行うように構成されている、
    システム。
  19. 前記ローカルスイッチのメモリアパーチャを備え、
    前記第2コマンドは、前記メモリアパーチャで受信される、
    請求項18のシステム。
  20. 前記第2コマンドは読み出しコマンドを含み、
    前記第2コマンドに従って、前記第2メモリ位置の前記データにアクセスすることは、前記データをターゲットプロセッサに転送することを含む、
    請求項18のシステム。
  21. 処理システムで実行されると、データを転送する方法を前記処理システムに実行させる命令を含むコンピュータ可読記憶媒体であって、
    前記方法は、
    フロントエンドプロセッサが、ローカルスイッチを介して、ブロックアドレス可能なアクセスを指定してブロックアドレス可能入出力デバイス(ブロックI/Oデバイス)のデータブロックを読み出すための第1コマンドをプロセッサから受信することと、
    前記第1コマンドを受信したことに応じて、前記データブロックを、前記ブロックI/Oデバイスのブロックアドレス可能メモリから、ブロックより小さいチャンクでアドレス可能な第2メモリ位置にコピーすることと、
    前記フロントエンドプロセッサが、前記ローカルスイッチを介して、ブロックより小さいチャンクによるアクセスを指定して前記ブロックI/Oデバイスのデータにアクセスするための第2コマンドを前記プロセッサから受信することと、
    前記第2コマンドを受信したことに応じて、前記データが前記第2メモリ位置に記憶された前記データブロックに含まれていることを判別することと、
    前記第2コマンドに従って、ブロックより小さいチャンクで前記第2メモリ位置の前記データにアクセスすることと、を含む、
    コンピュータ可読記憶媒体。
  22. 前記第2コマンドは、前記ローカルスイッチのメモリアパーチャで受信される、
    請求項21のコンピュータ可読記憶媒体。
  23. 前記第2コマンドは読み出しコマンドを含み、
    前記第2コマンドに従って、前記第2メモリ位置の前記データにアクセスすることは、前記データをターゲットプロセッサに転送することを含む、
    請求項21のコンピュータ可読記憶媒体。
JP2022179600A 2016-12-23 2022-11-09 バイトアドレス可能メモリとして不揮発性メモリにアクセスする方法及び装置 Withdrawn JP2023015243A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US15/389,811 US10521389B2 (en) 2016-12-23 2016-12-23 Method and apparatus for accessing non-volatile memory as byte addressable memory
US15/389,811 2016-12-23
PCT/CA2017/051471 WO2018112604A1 (en) 2016-12-23 2017-12-06 Method and apparatus for accessing non-volatile memory as byte addressable memory
JP2019534182A JP7227907B2 (ja) 2016-12-23 2017-12-06 バイトアドレス可能メモリとして不揮発性メモリにアクセスする方法及び装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2019534182A Division JP7227907B2 (ja) 2016-12-23 2017-12-06 バイトアドレス可能メモリとして不揮発性メモリにアクセスする方法及び装置

Publications (1)

Publication Number Publication Date
JP2023015243A true JP2023015243A (ja) 2023-01-31

Family

ID=62624080

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2019534182A Active JP7227907B2 (ja) 2016-12-23 2017-12-06 バイトアドレス可能メモリとして不揮発性メモリにアクセスする方法及び装置
JP2022179600A Withdrawn JP2023015243A (ja) 2016-12-23 2022-11-09 バイトアドレス可能メモリとして不揮発性メモリにアクセスする方法及び装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2019534182A Active JP7227907B2 (ja) 2016-12-23 2017-12-06 バイトアドレス可能メモリとして不揮発性メモリにアクセスする方法及び装置

Country Status (6)

Country Link
US (1) US10521389B2 (ja)
EP (1) EP3559815A4 (ja)
JP (2) JP7227907B2 (ja)
KR (1) KR102617360B1 (ja)
CN (1) CN110114762B (ja)
WO (1) WO2018112604A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10714179B2 (en) * 2016-10-07 2020-07-14 Hewlett-Packard Development Company, L.P. Hybrid memory devices
US10909012B2 (en) 2018-11-12 2021-02-02 H3 Platform, Inc. System having persistent memory
CN110209605B (zh) * 2019-05-31 2021-09-07 广州大学 Pcie总线网卡的寄存器读写方法和计算设备
US11467776B1 (en) * 2021-06-28 2022-10-11 H3 Platform Inc. System supporting virtualization of SR-IOV capable devices

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10269141A (ja) * 1997-03-28 1998-10-09 Fujitsu Ltd プロセッサボード回路
US20050251617A1 (en) 2004-05-07 2005-11-10 Sinclair Alan W Hybrid non-volatile memory system
JP4910360B2 (ja) * 2005-10-20 2012-04-04 ソニー株式会社 記憶装置、コンピュータシステム、およびデータ書き込み方法
US7739474B2 (en) * 2006-02-07 2010-06-15 International Business Machines Corporation Method and system for unifying memory access for CPU and IO operations
US20090203430A1 (en) 2008-02-07 2009-08-13 Igt Hybrid memory system and spin-buffer journaling in a gaming machine
KR101573047B1 (ko) * 2009-01-23 2015-12-02 삼성전자주식회사 복합 메모리 장치 및 이를 이용한 i/o 처리 방법
US9058675B2 (en) 2010-05-29 2015-06-16 Intel Corporation Non-volatile storage for graphics hardware
US9251058B2 (en) * 2010-09-28 2016-02-02 SanDisk Technologies, Inc. Servicing non-block storage requests
US8996781B2 (en) * 2012-11-06 2015-03-31 OCZ Storage Solutions Inc. Integrated storage/processing devices, systems and methods for performing big data analytics
US9003071B2 (en) 2013-03-13 2015-04-07 Futurewei Technologies, Inc. Namespace access control in NVM express PCIe NVM with SR-IOV
US9729659B2 (en) * 2013-03-14 2017-08-08 Microsoft Technology Licensing, Llc Caching content addressable data chunks for storage virtualization
US9311230B2 (en) * 2013-04-23 2016-04-12 Globalfoundries Inc. Local direct storage class memory access
US9311266B2 (en) 2013-06-14 2016-04-12 National Instruments Corporation Hidden base address register programming in peripheral component interconnect express buses
CN105706071A (zh) * 2013-09-26 2016-06-22 英特尔公司 持久性存储器的块存储孔
US9304690B2 (en) 2014-05-07 2016-04-05 HGST Netherlands B.V. System and method for peer-to-peer PCIe storage transfers
JP2016062406A (ja) * 2014-09-19 2016-04-25 国立大学法人 筑波大学 メモリシステム、メモリシステムの制御方法及びプログラム
US10275175B2 (en) 2014-10-06 2019-04-30 Western Digital Technologies, Inc. System and method to provide file system functionality over a PCIe interface
US9891824B2 (en) * 2015-04-24 2018-02-13 International Business Machines Corporation Sub-block input/output (I/O) commands for storage device including byte stream buffer
US20160350010A1 (en) * 2015-05-31 2016-12-01 Vmware, Inc. Providing block size compatibility with a storage filter

Also Published As

Publication number Publication date
CN110114762A (zh) 2019-08-09
KR102617360B1 (ko) 2023-12-26
JP7227907B2 (ja) 2023-02-22
US20180181519A1 (en) 2018-06-28
US10521389B2 (en) 2019-12-31
EP3559815A4 (en) 2020-07-29
JP2020502694A (ja) 2020-01-23
CN110114762B (zh) 2023-09-15
KR20190098146A (ko) 2019-08-21
WO2018112604A1 (en) 2018-06-28
EP3559815A1 (en) 2019-10-30

Similar Documents

Publication Publication Date Title
TWI779325B (zh) 實施用於雲端遊戲資料儲存及擷取之高速資料通信組構之系統及方法
JP2023015243A (ja) バイトアドレス可能メモリとして不揮発性メモリにアクセスする方法及び装置
US9785545B2 (en) Method and apparatus for providing dual memory access to non-volatile memory
US20200081848A1 (en) Storage device and system
EP3382557B1 (en) Method and apparatus for persistently caching storage data in a page cache
US20150261434A1 (en) Storage system and server
US10866737B2 (en) Apparatus, method and system to store information for a solid state drive
US11635902B2 (en) Storage device processing stream data, system including the same, and operation method
US10007464B1 (en) Method and apparatus for integration of non-volatile memory
US10761736B2 (en) Method and apparatus for integration of non-volatile memory
KR20170013882A (ko) 플래시 메모리 기반 저장 디바이스의 멀티 호스트 전력 제어기(mhpc)
US9904622B2 (en) Control method for non-volatile memory and associated computer system
KR20180041037A (ko) 멀티 코어 솔리드 스테이트 드라이브의 공유 분산 메모리 관리 방법
WO2020029619A1 (zh) 数据处理的方法、设备和服务器
JP7247405B2 (ja) ストレージコントローラ、計算ストレージ装置及び計算ストレージ装置の動作方法
KR20200051450A (ko) 스트림 데이터를 처리하는 스토리지 장치, 그것의 포함하는 컴퓨팅 시스템, 그리고 그것의 동작 방법
CN114546902A (zh) 基于多协议访问存储器的系统、设备和方法
US20170178275A1 (en) Method and system for using solid state device as eviction pad for graphics processing unit
US20230409495A1 (en) Storage device, operation method of the storage device, and electronic system including the storage device
US20230205420A1 (en) Flexible memory system
US11054993B2 (en) Mass storage system having peer-to-peer data movements between a cache and a backend store
TW202349214A (zh) 輸入/輸出裝置的位址變換預取出
JP2023507293A (ja) システムダイレクトメモリアクセスエンジンのオフロード
JP2021536643A (ja) ハイブリッドメモリシステムインタフェース

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221207

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20230224