JP2023507293A - システムダイレクトメモリアクセスエンジンのオフロード - Google Patents
システムダイレクトメモリアクセスエンジンのオフロード Download PDFInfo
- Publication number
- JP2023507293A JP2023507293A JP2022535068A JP2022535068A JP2023507293A JP 2023507293 A JP2023507293 A JP 2023507293A JP 2022535068 A JP2022535068 A JP 2022535068A JP 2022535068 A JP2022535068 A JP 2022535068A JP 2023507293 A JP2023507293 A JP 2023507293A
- Authority
- JP
- Japan
- Prior art keywords
- buffer
- agent devices
- source buffer
- source
- physical address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 239000000872 buffer Substances 0.000 claims abstract description 148
- 239000003795 chemical substances by application Substances 0.000 claims abstract description 73
- 239000004744 fabric Substances 0.000 claims abstract description 36
- 238000012546 transfer Methods 0.000 claims abstract description 36
- 238000000034 method Methods 0.000 claims abstract description 28
- 230000001427 coherent effect Effects 0.000 claims description 36
- 238000010586 diagram Methods 0.000 abstract description 7
- 238000012545 processing Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 7
- 239000004065 semiconductor Substances 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 230000001186 cumulative effect Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 239000000523 sample Substances 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000000098 azimuthal photoelectron diffraction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1056—Simplification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
Abstract
ダイレクトメモリアクセス用のシステム、デバイス及び方法が提供される。プロセッサダイ上に配置されたシステムダイレクトメモリアクセス(SDMA)デバイスは、ソースバッファ及び宛先バッファの物理アドレス並びにデータ転送のサイズを含むメッセージをデータファブリックデバイスに送信する。データファブリックデバイスは、ソース及び宛先バッファの物理アドレス並びにデータ転送のサイズを含む命令を第1のエージェントデバイスに送信する。第1のエージェントデバイスの各々は、ソースバッファの物理アドレスにあるメモリデバイスからソースバッファの一部を読み取る。第1のエージェントデバイスの各々は、ソースバッファの一部を何れかの第2のエージェントデバイスに送信する。第2のエージェントデバイスの各々は、ソースバッファの一部を宛先バッファに書き込む。【選択図】図5
Description
(関連出願の相互参照)
本願は、2019年12月20日出願の米国特許出願第16/723,709号の利益を主張し、その内容は、参照することによって本明細書に組み込まれる。
本願は、2019年12月20日出願の米国特許出願第16/723,709号の利益を主張し、その内容は、参照することによって本明細書に組み込まれる。
システムダイレクトメモリアクセス(SDMA)エンジンは、デバイスとメモリ間、又は、コンピュータシステム内のメモリ内の異なる位置間でのデータのダイレクトメモリアクセス(DMA)転送を調整するデバイスである。SDMAエンジンは、通常、グラフィックプロセッサ(GPU)等のプロセッサ上に位置し、プロセッサ上で実行されているアプリケーションからコマンドを受信する。コマンドに基づいて、SDMAエンジンは、SDMAソース(例えば、メインメモリ内に定義された第1のメモリバッファ)からデータを読み取り、SDMA宛先(例えば、メインメモリ内に定義された第2のバッファ)にデータを書き込む。
SDMAソースとSDMA宛先(destination)とは、場合によっては、物理的に異なるデバイスに位置する。マルチプロセッサシステムでは、SDMAソースとSDMA宛先とは、場合によっては、異なるプロセッサに関連付けられた異なるデバイスに位置する。このような場合、SDMAエンジンは、仮想アドレスを解決して物理アドレスを取得し、リモート読み取り及び/又は書き込みコマンドを発行してDMA転送を実行する。
添付の図面と併せて例として与えられる以下の説明から、より詳細な理解を得ることができる。
いくつかの実施形態では、ダイレクトメモリアクセス用に構成されたコンピューティングシステムが提供される。システムは、プロセッサダイ上のSDMAデバイスを含む。SDMAデバイスは、データファブリックデバイスにメッセージを送信する。メッセージには、ソースバッファの物理アドレス、宛先バッファの物理アドレス、及び、ソースバッファから宛先バッファへのデータ転送のサイズが含まれる。データファブリックデバイスは、1つ以上の命令を第1のエージェントデバイスに送信する。命令には、ソースバッファの物理アドレス、宛先バッファの物理アドレス、及び、データ転送のサイズが含まれる。第1のエージェントデバイスの各々は、ソースバッファの物理アドレスにあるメモリデバイスからソースバッファの一部を読み取る。また、第1のエージェントデバイスの各々は、ソースバッファの一部を1つの第2のエージェントデバイスに送信する。第2のエージェントデバイスの各々は、メモリコントローラを動作して、ソースバッファの一部を宛先バッファに書き込む。
いくつかの実施形態では、SDMAデバイスは、プロセッサダイ上のプロセッサから1つ以上の命令を受信する。1つ以上の命令は、ソースバッファの仮想アドレス及び宛先バッファの仮想アドレスを示す。SDMAデバイスは、ソースバッファの仮想アドレスをソースバッファの物理アドレスに変換する。SDMAデバイスは、宛先バッファの仮想アドレスを宛先バッファの物理アドレスに変換する。いくつかの実施形態では、データファブリックデバイスは、データファブリックのMISC(miscellaneous)機能ブロックを含む。いくつかの実施形態では、エージェントデバイスは、データファブリックのコヒーレントスレーブデバイスを含む。いくつかの実施形態では、第1のエージェントデバイスがプロセッサダイ上にあり、第2のエージェントデバイスがリモートプロセッサダイ上にある。いくつかの実施形態では、第2のエージェントデバイスがプロセッサダイ上にあり、第1のエージェントデバイスがリモートプロセッサダイ上にある。いくつかの実施形態では、第1のエージェントデバイスの各々は、ソースバッファの一部を1つの第2のエージェントデバイスに送信する前に、ソースバッファの一部をローカルバッファに格納する。いくつかの実施形態では、プロセッサダイとリモートプロセッサダイとの間にコヒーレントリンクを含み、第1のエージェントデバイスは、コヒーレントリンク上で第2のエージェントデバイスと通信する。いくつかの実施形態では、第1のエージェントデバイスの各々は、メモリコントローラを動作して、ソースバッファの物理アドレスにあるメモリデバイスからソースバッファの一部を読み取る。いくつかの実施形態では、データファブリックデバイスは、1つ以上の命令を第1のエージェントデバイスにブロードキャスト(一斉送信)する。
いくつかの実施形態は、ダイレクトメモリアクセスのための方法を提供する。方法は、プロセッサダイ上に配置されたシステムダイレクトメモリアクセス(SDMA)デバイスからデータファブリックデバイスにメッセージを送信することを含む。メッセージには、ソースバッファの物理アドレス、宛先バッファの物理アドレス、及び、ソースバッファから宛先バッファへのデータ転送のサイズが含まれる。また、方法は、1つ以上の命令をデータファブリックデバイスにより第1のエージェントデバイスに送信することを含む。1つ以上の命令には、ソースバッファの物理アドレス、宛先バッファの物理アドレス、及び、データ転送のサイズが含まれる。また、方法は、ソースバッファの物理アドレスにあるメモリデバイスからソースバッファの一部を読み取る第1のエージェントデバイスの各々を含む。また、方法は、ソースバッファの一部を1つの第2のエージェントデバイスに送信する第1のエージェントデバイスの各々を含む。また、方法は、ソースバッファの一部を宛先バッファに書き込む第2のエージェントデバイスの各々を含む。
いくつかの実施形態は、プロセッサダイのプロセッサから1つ以上の命令を受信するSDMAデバイスを含む。命令は、ソースバッファの仮想アドレス及び宛先バッファの仮想アドレスを示す。いくつかの実施形態では、ソースバッファの仮想アドレスをソースバッファの物理アドレスに変換するSDMAデバイスを含む。いくつかの実施形態では、宛先バッファの仮想アドレスを宛先バッファの物理アドレスに変換するSDMAデバイスを含む。いくつかの実施形態では、データファブリックデバイスは、データファブリックのMISC(miscellaneous)機能ブロックを含む。いくつかの実施形態では、エージェントデバイスは、データファブリックのコヒーレントスレーブデバイスを含む。いくつかの実施形態では、第1のエージェントデバイスがプロセッサダイ上にあり、第2のエージェントデバイスがリモートプロセッサダイ上にある。いくつかの実施形態では、第2のエージェントデバイスがプロセッサダイ上にあり、第1のエージェントデバイスがリモートプロセッサダイ上にある。いくつかの実施形態では、ソースバッファの一部を1つの第2のエージェントデバイスに送信する前に、ソースバッファの一部をローカルバッファに格納する第1のエージェントデバイスの各々を含む。いくつかの実施形態は、プロセッサダイとリモートプロセッサダイとの間のコヒーレントリンク上で第2のエージェントデバイスと通信する第1のエージェントデバイスを含む。いくつかの実施形態では、メモリコントローラを動作して、ソースバッファの物理アドレスにあるメモリデバイスからソースバッファの一部を読み取る第1のエージェントデバイスの各々を含む。いくつかの実施形態では、1つ以上の命令を第1のエージェントデバイスにブロードキャストするデータファブリックデバイスを含む。
図1は、開示の1つ以上の特徴を実装することができる例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲーミングデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータを含み得る。デバイス100は、プロセッサ102と、メモリ104と、ストレージ106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、オプションで、入力ドライバ112及び出力ドライバ114を含み得る。デバイス100は、図1に示されていない追加の構成要素を含むことができることを理解されたい。
様々な代替例では、プロセッサ102は、中央処理装置(CPU)、グラフィックスプロセシングユニット(GPU)、同一のダイ上に位置するCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアはCPU又はGPUであってもよい。様々な代替例では、メモリ104は、プロセッサ102と同一のダイ上に位置してもよいし、プロセッサ102とは別に位置してもよい。メモリ104は、揮発性又は不揮発性のメモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM、キャッシュ)を含む。
ストレージ106は、固定式ストレージ又はリムーバブルストレージ(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックススキャナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上のライト、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114がオプションのコンポーネントであることと、入力ドライバ112及び出力ドライバ114が存在しない場合にはデバイス100が同様に動作することと、に留意されたい。出力ドライバ114は、表示デバイス118に結合されたアクセラレーテッド処理デバイス(APD)116を含む。APDは、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受け入れ、それらの計算コマンド及びグラフィックスレンダリングコマンドを処理し、表示のために表示デバイス118にピクセル出力を提供する。以下にさらに詳細に説明するように、APD116は、単一命令複数データ(SIMD)パラダイムに従って計算を実行する1つ以上の並列処理ユニットを含む。次のように、本明細書では、様々な機能がAPD116によって又はAPD116と協働して実行されるものとして説明しているが、様々な代替形態では、このAPD116によって実行されるものとして説明する機能が、ホストプロセッサ(例えば、プロセッサ102)によって駆動されない、表示デバイス118にグラフィック出力を提供する同様の性能を有する他のコンピューティングデバイスによって追加的又は代替的に実行される。例えば、SIMDパラダイムに従って処理タスクを実行する任意の処理システムが、本明細書で説明する機能を実行し得ることが企図されている。代替として、SIMDパラダイムに従って処理タスクを行わないコンピューティングシステムが本明細書で説明する機能を行うことが想到される。
図2は、例示的なコンピューティングシステム200の一部を示すブロック図である。いくつかの例では、コンピューティングシステム200は、図1に関して示され、説明されるように、デバイス100の一部又は全部を使用して実装される。コンピューティングシステム200は、第1の半導体ダイ205を含む。半導体ダイ205は、1つ以上のプロセッサ210A~210Nと、入力/出力(I/O)インターフェース220と、相互接続230と、メモリコントローラ(複数可)240と、ネットワークインターフェース250と、を含む。他の例では、コンピューティングシステム200は、さらなる構成要素、異なる構成要素を含み、及び/又は、異なる方法で構成される。
いくつかの実施形態では、プロセッサ210A~210Nの各々は、1つ以上の処理デバイスを含む。この例では、プロセッサ210A~210Nのうち少なくとも1つは、CPU等の1つ以上の汎用処理デバイスを含む。いくつかの実施形態では、そのような処理デバイスは、図1に関して示され、説明されるようにプロセッサ102を使用して実装される。この例では、プロセッサ210A~210Nのうち少なくとも1つは、1つ以上のデータ並列プロセッサを含む。データ並列プロセッサの例として、GPU、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)等が挙げられる。いくつかの実施形態では、そのような処理デバイスは、図1に関して示され、説明されるように、APD116を使用して実装される。
いくつかの実施形態では、各プロセッサは、1つ以上のレベルのキャッシュを備えたキャッシュサブシステムを含む。いくつかの実施形態では、各コアコンプレックス210A~210Nは、複数のプロセッサコア間で共有されるキャッシュ(例えば、レベル3(L3)キャッシュ)を含む。
メモリコントローラ240は、例えば、相互接続230を介して、コア複合体210A~210Nによってアクセス可能な少なくとも1つのメモリコントローラを含む。メモリコントローラ240は、任意の適切なタイプのメモリコントローラのうち1つ以上を含む。メモリコントローラの各々は、任意の数及びタイプのメモリデバイス(図示省略)に結合され(又は他の方法で通信して)、アクセスを制御する。いくつかの実施形態では、こうしたメモリデバイスには、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、強誘電体ランダムアクセスメモリ(FeRAM)、及び/又は、他の適切なメモリデバイスが挙げられる。相互接続230は、バス、データファブリック等のように、図2に示すデバイス間の通信に適した任意のコンピュータ通信媒体を含む。
I/Oインターフェース220は、1つ以上のI/Oインターフェース(例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス、PCIエクステンデッド(PCI-X)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB)等)を含む。いくつかの実施形態では、I/Oインターフェース220は、図1に関して示され、説明されるように、入力ドライバ112及び/又は出力ドライバ114を使用して実装される。様々なタイプの周辺機器は、I/Oインターフェース220に結合され得る。そのような周辺デバイスには、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック又は他のタイプのゲームコントローラ、メディア記録デバイス、外部ストレージデバイス、ネットワークインターフェースカード等が含まれる(ただし、これらに限定されない)。いくつかの実施形態では、こうした周辺デバイスは、図1に関して示され、説明されるように、入力デバイス108及び/又は出力デバイス110を使用して実装される。
図3は、例示的なマルチプロセッサコンピューティングシステム300の一部を示すブロック図である。システム300又はその一部は、半導体ダイ205(図2に関して示され、説明されるように)及び/又はデバイス100(図1及び2に関して示され、説明されるように)の一部又は全部を使用して実装可能である。
システム300は、相互接続330を介して(例えば、他の構成要素を介して)プロセッサ310A~310Nと通信する1つ以上のプロセッサ310A~310N及び1つ以上のメモリコントローラ340A~340Nを含む。いくつかの例では、プロセッサ310A~310Nは、コヒーレントマスター315A~315Nを介して相互接続330に結合され、メモリコントローラ340A~340Nは、コヒーレントスレーブ345A~345Nを介して相互接続330に結合される。相互接続330、コヒーレントマスター315A~315N及びコヒーレントスレーブ345A~345Nは、システム300の構成要素間の通信を容易にするデータファブリックの一部を形成する。
システム300は、この例では半導体ダイ0及び半導体ダイ1を含み、コヒーレントリンク350は、相互接続330及びI/Oインターフェース360A~360B(これもデータファブリックの一部を形成する)を介して両方のダイにわたってデータファブリックを拡張する。相互接続330は、バス、データファブリック等のように、図3に示すデバイス間の通信に適した任意のコンピュータ通信媒体を含む。プロセッサ310A~310Nの各々は、1つ以上のプロセッサコア(例えば、図2に関して説明したように、CPU及び/又はGPU)を含む。プロセッサ310A~310Nの各々は、対応するSDMAエンジン370A~370Nも含む。
各プロセッサ310A~310Nは、対応するコヒーレントマスター315A~315Nと通信する。いくつかの実施形態では、コヒーレントマスターは、相互接続(例えば、相互接続330)上を流れるトラフィックを処理し、接続されたCPU又はコアコンプレックスのコヒーレンシを管理するエージェントである。いくつかの実施形態では、コヒーレンシを管理するために、コヒーレントマスターは、コヒーレンシ関連のメッセージ及びプローブを受信及び処理し、コヒーレンシ関連の要求及びプローブを生成及び送信する。
各プロセッサ310A~310Nは、対応するコヒーレントマスター315A~315Nを介して、及び、相互接続330を介して、1つ以上のコヒーレントスレーブ345A~345Nと通信する。コヒーレントスレーブは、メモリコントローラ(例えば、コヒーレントスレーブに接続されたメモリコントローラ)のコヒーレンシを管理するエージェントデバイスである。いくつかの実施形態では、コヒーレンシを管理するために、コヒーレントスレーブは、対応するメモリコントローラを対象とする要求及びプローブを受信及び処理する。
プロセッサ310Aは、図3の例では、コヒーレントマスター315A及び相互接続330を介してコヒーレントスレーブ345Aと通信する。コヒーレントスレーブ(CS)345Aは、メモリデバイス(例えば、メインメモリDRAMデバイス)を制御するメモリコントローラ(MC)340Aと通信する。いくつかの実施形態では、各プロセッサ310A~310Nは、対応するコヒーレントマスター315A~315N及び対応するコヒーレントスレーブ340A~340Nを介して、任意の適切な数のメモリコントローラ340A~340Nと通信する。
プローブには、コヒーレンシポイント(例えば、コヒーレントスレーブ)からコンピュータシステム内の1つ以上のキャッシュに渡されるメッセージが含まれ、キャッシュにデータブロックのコピーがあるかどうかを示す応答を要求し、いくつかの実施形態では、キャッシュがデータのブロックを配置するキャッシュ状態を示す。いくつかの実施形態では、コヒーレントスレーブがその対応するメモリコントローラを対象とするメモリ要求を受信する場合(例えば、コヒーレントスレーブがコヒーレンシを管理するメモリコントローラによって制御されるメモリ内のアドレス又はアドレスの領域に格納されたデータに対するメモリ要求)、コヒーレントスレーブは、その対応するキャッシュディレクトリへのルックアップ(例えば、タグベースのルックアップ)を実行して、要求が何れかのキャッシュサブシステムの少なくとも1つのキャッシュラインにキャッシュされたメモリアドレス又は領域をターゲットにするかどうかを判断する。
SDMAエンジン370A~370Nは、システム300内のデバイスとメモリ間、又は、メモリ内の異なる位置間のデータのDMA転送を調整する。SDMAエンジン370A~370Nは、それらの対応するプロセッサ310A~310Nから命令を受信することができる。受信した命令に基づいて、場合によっては、SDMAエンジン370A~370Nは、データファブリックを介して任意のメモリからデータを読み取り及びバッファリングし、データファブリックを介して任意のメモリにバッファリングされたデータを書き込む。いくつかの実施形態では、受信した命令に基づいて、SDMAエンジン370A~370Nは、DMAを実行するための命令とともに、データファブリックのMISC(miscellaneous)ブロック等のデータファブリックデバイスにメッセージを送信する。
MISCブロック380A~380Bは、他の機能を処理するデータファブリックデバイスである。場合によっては、MISCブロック380A~380Bは、電力管理をホストし、機能を中断する。場合によっては、MISCブロック380A~380Bは、本明細書で説明するようにSDMA機能をホストする。例えば、MISCブロック380Aは、物理アドレスのソースバッファから物理アドレスの宛先バッファに指定されたサイズのDMA転送を実行するための命令を伴うメッセージをSDMAエンジン370Aから(例えば、コヒーレントマスター315A等のエージェントデバイスを介して)受信する。この例では、MISCブロック380Aは、例えば本明細書でさらに説明するように、DMA転送を実行するために、同じダイ上のエージェントデバイス(例えば、コヒーレントスレーブ345A~345D)に対応するコマンドをブロードキャストする。
いくつかの実施形態では、相互接続330は、説明を容易にするために図3に示されていない他の構成要素に接続されており、及び/又は、他の構成要素と通信する。例えば、いくつかの実施形態では、相互接続330は、図2に関して示され、説明されるように、1つ以上のネットワークインターフェース250への接続を含む。
図4は、例えば、図3に関して示され、説明されるように、システム300のデバイス間で実装可能な例示的なダイレクトメモリアクセスメッセージング400を示すメッセージシーケンスチャートである。
SDMA370Aは、プロセッサ310Aのローカルメモリに物理的に配置された(すなわち、オンダイメモリコントローラ340A~440Bを介してアクセス可能な)ソースメモリバッファから、プロセッサ310Nのローカルメモリに物理的に配置された(すなわち、オンダイメモリコントローラ340E~340Nを介してアクセス可能な)宛先バッファにDMAを調整する。これは、本明細書では「ローカル読み取り、リモート書き込み」DMAと呼ばれる。対応する「リモート読み取り、ローカル書き込み」動作は、それに応じてメッセージングを再配置することによって実行される。同様に、対応する「ローカル読み取り、ローカル書き込み」又は「リモート読み取り、リモート書き込み」動作は、それに応じてメッセージングを再配置することによって実行される。
プロセッサ310Aは、ソースバッファの仮想アドレス、宛先バッファの仮想アドレス、及び、データ転送のサイズを含むSDMAコマンドを、命令405でSDMA370Aに送信する。命令405は、いくつかの実施形態では、複数の命令及び/又はメッセージを含むことに留意されたい。
SDMA370Aは、ステップ410で、ソースバッファ及び宛先バッファの仮想アドレスから物理アドレスへの変換を実施して、ソースバッファの物理アドレスと宛先バッファの物理アドレスの各々を取得する。
SDMA370Aは、ソースバッファの物理アドレス、宛先バッファの物理アドレス、及び、SDMAメッセージ415内のデータ転送のサイズをMISCブロック380Aに送信する。
MISCブロック380Aは、ソースバッファの物理アドレス、宛先バッファの物理アドレス、及び、データ転送のサイズを含むSDMAコマンドブロードキャスト420を、ダイ0上の全てのコヒーレントスレーブデバイスに送信する。この例では、CS345A~Dはダイ0にある。
CS345A~345Dの各々は、関連するローカルMC340A~340Dに読み取りコマンド425を送信する。各MC340A~340Dは、ステップ430でソースバッファの対応する部分を読み取り、ステップ435でソースバッファデータをCS340A~340Dに返す。各CS340A~340Dは、送信のために(及び/又は必要に応じて)ローカルバッファ440にソースバッファデータをバッファリングする。
CS345A~345Dの各々は、リモート書き込みコマンド445をリモートCS345E~345Nに送信し、リモートCS345E~345Nの各々は、書き込みコマンド450を関連するMC340E~340Nに送信する。各MC340E~340Nは、ステップ455で宛先バッファの対応する部分を書き込み、確認応答460をCS345E~345Nの各々に返す。いくつかの実施形態では、確認応答は、最後の転送(すなわち、最後の書き込みコマンド450)に対してのみ要求され、したがって、全ての書き込みコマンド450に対して1つの確認応答460のみが返される。
宛先バッファが完全に書き込まれた後、すなわち、最終的なMC340E~340NがCS345E~345Nの各々に確認応答を返した後、最終的な確認応答(又は最後の書き込みコマンド450に対してのみ確認応答が要求される場合の唯一の確認応答)を受信するCS445E~445Nは、CS445A~445Dへの累積確認応答465を返す。累積確認応答465を受信した後、各CS345A~345Dは、MISCブロック380Aにコマンド470を発行して、転送の完了を示す。いくつかの実施形態では、コマンド470は、転送の識別(例えば、転送ID)を含む。コマンド470に基づいて、MISCブロック380Aは、転送の完了を示す指標475をSDMA370Aに送信する。
図5は、ダイレクトメモリアクセスの例示的な方法を示すフローチャートである。方法500は、例えば、システム300(図3に関して示され、説明されている)に実装可能であり、及び/又は、いくつかの例では、シグナリング400(図4に関して示され、説明されている)を使用して実装可能である。
ブロック505で、SDMA370Aは、プロセッサ310Aから命令を受信する。命令は、例えば、命令405のように(図4に関して示され、説明されるように)ソースバッファの仮想アドレス、宛先バッファの仮想アドレス、及び、データ転送のサイズを含むSDMAコマンドであってもよい。
ブロック510で、SDMA370Aは、ソースバッファの仮想アドレス及び宛先バッファの仮想アドレスから物理アドレスへの変換を実施して、ソースバッファの物理アドレス及び宛先バッファの物理アドレスの各々を取得する(例えば、図4に関して示され、説明される410に関して示され、説明されるように)。
ブロック515で、SDMA370Aは、ソースバッファの物理アドレス、宛先バッファの物理アドレス、及び、データ転送のサイズをブロック515内のMISCブロック380Aに送信する(例えば、図4に関して示され、説明されるメッセージ415)。
ブロック520で、MISCブロック380Aは、メッセージを受信し、ブロック525で、ソースバッファの物理アドレス、宛先バッファの物理アドレス、及び、データ転送のサイズを含むSDMAコマンドブロードキャスト(例えば、図4に関して示され、説明されるブロードキャスト420)をダイ0上の全てのコヒーレントスレーブデバイスに送信する。この例では、CS345A~345Dはダイ0にある。いくつかの実施形態では、ブロードキャスト420には、転送ジョブを識別するため転送の識別(例えば、転送ID)が含まれる。
ソースバッファがローカルで宛先バッファがリモートであるという条件530で、ブロック535では、ローカルCS345A345~Dの各々は、各MC340A~340Dが、ソースバッファの対応する部分(存在する場合)を読み取り、ソースバッファデータをCS340A~340Dに返すように、関連するMC340A~340Dに読み取りコマンド(例えば、図4に関して示され、説明されるコマンド425)を送信する。各CS340A~340Dは、送信のために(及び/又は必要に応じて)ローカルバッファにソースバッファデータをバッファリングする。
ブロック540で、ローカルCS345A~345Dの各々は、リモート書き込みコマンドをリモートCS345E~345Nに送信して、バッファをリモートメモリに書き込む。ブロック545で、リモートCS345E~345Nの各々は、各MC340E~340Nが、ソースバッファデータの対応する部分を、関連するメモリ内の宛先バッファに書き込むように関連するMC340E~340Nに書き込みコマンドを送信する。宛先バッファの対応する部分を書き込んだ後、各MC340E~340Nは、確認応答をCS345E~345Nの各々に返す。
ブロック550で、宛先バッファが完全に書き込まれた後、すなわち、最終的なMC340E~340NがCS345E~345Nの各々に確認応答を返した後、最終的な確認応答を受信するCS345E~345Nは、ローカルCS345A~345Dに累積確認応答465を返す。累積確認応答465を受信した後、各CS345A~345Dは、MISCブロック380Aにコマンドを発行して、転送の完了を示す。いくつかの実施形態では、コマンドは、転送の識別(例えば、転送ID)を含む。コマンドに基づいて、MISCブロック380Aは、転送の完了を示す指標をSDMA370Aに送信する。
ソースバッファがリモートであり、宛先バッファがローカルであるという条件530で、ローカルCS345A~345Dの各々は、ブロック555でリモートCS345E~345Nにリモート読み取りコマンドを送信する。リモート読み取りコマンドに基づいて、リモートCS345E~345Nの各々は、MC340E~340NがソースバッファデータをCS345E~345Nに返すように、ブロック560で関連するMC340E~340Nに読み取りコマンドを送信する。CS345E~345Nは、送信のために(及び/又は必要に応じて)ローカルバッファにソースバッファデータをバッファリングする。
リモートCS345E~345Nは、バッファリングされたデータを、ブロック565でコヒーレントリンクを介してローカルCS345A~Dに送信する。ローカルCS345A~345Dは、ブロック570において関連するMC340A~340Dを介して、物理メモリアドレスの宛先バッファにデータを書き込む。宛先バッファが完全に書き込まれた後、すなわち、最終MC340A~340DがCS345A~345Dの各々に確認応答を返した後、最終確認応答を受信するCS345A~345Dは、転送の完了を示すために、ブロック575においてMISCブロック380Aにコマンドを発行する。いくつかの実施形態では、コマンドは、転送の識別(例えば、転送ID)を含む。コマンドに基づいて、MISCブロック380Aは、転送の完了を示す指標をSDMA370Aに送信する。
本明細書の開示に基づいて、多くの変形形態が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されたが、各特徴又は要素は、他の特徴及び要素無しに単独で、又は、他の特徴及び要素を有する若しく有しない様々な組み合わせで使用することができる。
図に示す及び/又は本明細書で説明する様々な機能ユニット(限定するものではないが、プロセッサ102、入力ドライバ112、入力デバイス108、出力ドライバ114、出力デバイス110、アクセラレーテッド処理デバイス116を含む)は、汎用コンピュータ、プロセッサ若しくはプロセッサコアとして、又は、プログラム、ソフトウェア若しくはファームウェアとして実装され、非一時的なコンピュータ可読記憶媒体又は別の媒体に記憶され、汎用コンピュータ、プロセッサ又はプロセッサコアによって実行可能であり得る。提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施することができる。適切なプロセッサは、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタルシグナルプロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、他のタイプの集積回路(IC)、及び/又は、状態機械を含む。このようなプロセッサは、ハードウェア記述言語(HDL)命令の結果や、(コンピュータ可読媒体に格納することができる命令のような)ネットリストを含む他の中間のデータを処理した結果を用いて製造プロセスを構成することによって製造することができる。このような処理の結果は、本開示の特徴を実装するプロセッサを製造する半導体製造プロセスにおいて使用されるマスクワークであってもよい。
本明細書に提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実施することができる。非一時的なコンピュータ可読記憶媒体の例は、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバルディスク等の磁気媒体、光磁気媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体を含む。
Claims (20)
- ダイレクトメモリアクセス用に構成されたコンピューティングシステムであって、
プロセッサダイ上に配置され、ソースバッファの物理アドレス、宛先バッファの物理アドレス、及び、前記ソースバッファから前記宛先バッファへのデータ転送のサイズを含むメッセージをデータファブリックデバイスに送信するように構成されたシステムダイレクトメモリアクセス(SDMA)デバイスと、
前記ソースバッファの物理アドレス、前記宛先バッファの物理アドレス、及び、前記データ転送のサイズを含む少なくとも1つの命令を、第1の複数のエージェントデバイスに送信するように構成されたデータファブリックデバイスと、
第1の複数のエージェントデバイスであって、各々が、前記ソースバッファの物理アドレスにあるメモリデバイスから前記ソースバッファの一部を読み取ることと、前記ソースバッファの一部を第2の複数のエージェントデバイスのうち何れかに送信することと、を実行するように構成された第1の複数のエージェントデバイスと、
第2の複数のエージェントデバイスであって、各々が、メモリコントローラを動作して、前記ソースバッファの一部を前記宛先バッファに書き込むように構成された第2の複数のエージェントデバイスと、を備える、
システム。 - 前記SDMAデバイスは、
前記ソースバッファの仮想アドレス及び前記宛先バッファの仮想アドレスを示す少なくとも1つの命令を前記プロセッサダイのプロセッサから受信することと、
前記ソースバッファの仮想アドレスを前記ソースバッファの物理アドレスに変換することと、
前記宛先バッファの仮想アドレスを前記宛先バッファの物理アドレスに変換することと、
を実行するようにさらに構成されている、
請求項1のシステム。 - 前記データファブリックデバイスは、データファブリックのMISC(miscellaneous)機能ブロックを含む、
請求項1のシステム。 - 前記エージェントデバイスは、データファブリックのコヒーレントスレーブデバイスを含む、
請求項1のシステム。 - 前記第1の複数のエージェントデバイスは、前記プロセッサダイ上に配置されており、
前記第2の複数のエージェントデバイスは、リモートプロセッサダイ上に配置されている、
請求項1のシステム。 - 前記第2の複数のエージェントデバイスは、前記プロセッサダイ上に配置されており、
前記第1の複数のエージェントデバイスは、リモートプロセッサダイ上に配置されている、
請求項1のシステム。 - 前記第1の複数のエージェントデバイスの各々は、前記ソースバッファの一部を前記第2の複数のエージェントデバイスのうち何れかに送信する前に、前記ソースバッファの一部をローカルバッファに格納するようにさらに構成されている、
請求項1のシステム。 - 前記プロセッサダイとリモートプロセッサダイとの間にコヒーレントリンクをさらに備え、
前記第1の複数のエージェントデバイスは、前記コヒーレントリンクを介して前記第2の複数のエージェントデバイスと通信するようにさらに構成されている、
請求項1のシステム。 - 前記第1の複数のエージェントデバイスの各々は、メモリコントローラを動作して、前記ソースバッファの物理アドレスにある前記メモリデバイスから前記ソースバッファの一部を読み取るようにさらに構成されている、
請求項1のシステム。 - 前記データファブリックデバイスは、前記少なくとも1つの命令を前記第1の複数のエージェントデバイスにブロードキャストするようにさらに構成されている、
請求項1のシステム。 - ダイレクトメモリアクセスのための方法であって、
ソースバッファの物理アドレス、宛先バッファの物理アドレス、及び、前記ソースバッファから前記宛先バッファへのデータ転送のサイズを含むメッセージを、プロセッサダイ上に配置されたシステムダイレクトメモリアクセス(SDMA)デバイスからデータファブリックデバイスに送信することと、
前記データファブリックデバイスが、前記ソースバッファの物理アドレス、前記宛先バッファの物理アドレス、及び、前記データ転送のサイズを含む少なくとも1つの命令を、第1の複数のエージェントデバイスに送信することと、
前記第1の複数のエージェントデバイスの各々が、前記ソースバッファの物理アドレスのメモリデバイスから前記ソースバッファの一部を読み取ることと、
前記第1の複数のエージェントデバイスの各々が、前記ソースバッファの一部を第2の複数のエージェントデバイスのうち何れかに送信することと、
前記第2の複数のエージェントデバイスの各々が、前記ソースバッファの一部を前記宛先バッファに書き込むことと、を含む、
方法。 - 前記SDMAデバイスが、前記ソースバッファの仮想アドレス及び前記宛先バッファの仮想アドレスを示す少なくとも1つの命令を前記プロセッサダイのプロセッサから受信することと、
前記SDMAデバイスが、前記ソースバッファの仮想アドレスを前記ソースバッファの物理アドレスに変換することと、
前記SDMAデバイスが、前記宛先バッファの仮想アドレスを前記宛先バッファの物理アドレスに変換することと、をさらに含む、
請求項11の方法。 - 前記データファブリックデバイスは、データファブリックのMISC(miscellaneous)機能ブロックを含む、
請求項11の方法。 - 前記エージェントデバイスは、データファブリックのコヒーレントスレーブデバイスを含む、
請求項11の方法。 - 前記第1の複数のエージェントデバイスは、前記プロセッサダイ上に配置されており、
前記第2の複数のエージェントデバイスは、リモートプロセッサダイ上に配置されている、
請求項11の方法。 - 前記第2の複数のエージェントデバイスは、前記プロセッサダイ上に配置されており、
前記第1の複数のエージェントデバイスは、リモートプロセッサダイ上に配置されている、
請求項11の方法。 - 前記第1の複数のエージェントデバイスの各々が、前記ソースバッファの一部を前記第2の複数のエージェントデバイスのうち何れかに送信する前に、前記ソースバッファの一部をローカルバッファに格納することをさらに含む、
請求項11の方法。 - 前記第1の複数のエージェントデバイスが、前記プロセッサダイとリモートプロセッサダイとの間のコヒーレントリンクを介して前記第2の複数のエージェントデバイスと通信することをさらに含む、
請求項11の方法。 - 前記第1の複数のエージェントデバイスの各々が、メモリコントローラを動作して、前記ソースバッファの物理アドレスにあるメモリデバイスから前記ソースバッファの一部を読み取ることをさらに含む、
請求項11の方法。 - 前記データファブリックデバイスが、前記少なくとも1つの命令を前記第1の複数のエージェントデバイスにブロードキャストすることをさらに含む、
請求項11の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/723,709 US11210248B2 (en) | 2019-12-20 | 2019-12-20 | System direct memory access engine offload |
US16/723,709 | 2019-12-20 | ||
PCT/US2020/061358 WO2021126460A1 (en) | 2019-12-20 | 2020-11-19 | System direct memory access engine offload |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023507293A true JP2023507293A (ja) | 2023-02-22 |
Family
ID=76438315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022535068A Pending JP2023507293A (ja) | 2019-12-20 | 2020-11-19 | システムダイレクトメモリアクセスエンジンのオフロード |
Country Status (6)
Country | Link |
---|---|
US (2) | US11210248B2 (ja) |
EP (1) | EP4078388A4 (ja) |
JP (1) | JP2023507293A (ja) |
KR (1) | KR20220113500A (ja) |
CN (1) | CN114846455A (ja) |
WO (1) | WO2021126460A1 (ja) |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7100020B1 (en) * | 1998-05-08 | 2006-08-29 | Freescale Semiconductor, Inc. | Digital communications processor |
US6412029B1 (en) * | 1999-04-29 | 2002-06-25 | Agere Systems Guardian Corp. | Method and apparatus for interfacing between a digital signal processor and a baseband circuit for wireless communication system |
GB2371641B (en) * | 2001-01-27 | 2004-10-06 | Mitel Semiconductor Ltd | Direct memory access controller for circular buffers |
US7248585B2 (en) | 2001-10-22 | 2007-07-24 | Sun Microsystems, Inc. | Method and apparatus for a packet classifier |
KR100591996B1 (ko) * | 2003-12-22 | 2006-06-21 | 한국전자통신연구원 | 스마트 안테나 기지국 변조 장치 |
US7633955B1 (en) | 2004-02-13 | 2009-12-15 | Habanero Holdings, Inc. | SCSI transport for fabric-backplane enterprise servers |
US7418572B2 (en) * | 2004-08-18 | 2008-08-26 | International Business Machines Corporation | Pretranslating input/output buffers in environments with multiple page sizes |
JP4841861B2 (ja) * | 2005-05-06 | 2011-12-21 | ルネサスエレクトロニクス株式会社 | 演算処理装置及びデータ転送処理の実行方法 |
US7260681B2 (en) * | 2005-06-02 | 2007-08-21 | Seagate Technology Llc | Stripe buffer list |
US7814166B2 (en) | 2006-01-27 | 2010-10-12 | Sony Computer Entertainment Inc. | Methods and apparatus for virtualizing an address space |
JP2007207026A (ja) * | 2006-02-02 | 2007-08-16 | Matsushita Electric Ind Co Ltd | Dma転送装置 |
US7822903B2 (en) * | 2006-02-24 | 2010-10-26 | Qualcomm Incorporated | Single bus command having transfer information for transferring data in a processing system |
US8477801B2 (en) * | 2009-12-15 | 2013-07-02 | Qualcomm Incorporated | Backoff procedure for post downlink SDMA operation |
US20110205913A1 (en) * | 2010-02-23 | 2011-08-25 | Qualcomm Incorporated | Beamforming and sdma methods for wireless lan and other applications |
US20110280314A1 (en) * | 2010-05-12 | 2011-11-17 | Texas Instruments Incorporated | Slice encoding and decoding processors, circuits, devices, systems and processes |
US9460019B2 (en) * | 2014-06-26 | 2016-10-04 | Intel Corporation | Sending packets using optimized PIO write sequences without SFENCEs |
US9477631B2 (en) * | 2014-06-26 | 2016-10-25 | Intel Corporation | Optimized credit return mechanism for packet sends |
KR20180041037A (ko) * | 2016-10-13 | 2018-04-23 | 삼성전자주식회사 | 멀티 코어 솔리드 스테이트 드라이브의 공유 분산 메모리 관리 방법 |
US20180239725A1 (en) | 2017-02-17 | 2018-08-23 | Intel Corporation | Persistent Remote Direct Memory Access |
US10776282B2 (en) * | 2017-12-15 | 2020-09-15 | Advanced Micro Devices, Inc. | Home agent based cache transfer acceleration scheme |
US11099789B2 (en) | 2018-02-05 | 2021-08-24 | Micron Technology, Inc. | Remote direct memory access in multi-tier memory systems |
-
2019
- 2019-12-20 US US16/723,709 patent/US11210248B2/en active Active
-
2020
- 2020-11-19 CN CN202080088640.6A patent/CN114846455A/zh active Pending
- 2020-11-19 WO PCT/US2020/061358 patent/WO2021126460A1/en unknown
- 2020-11-19 JP JP2022535068A patent/JP2023507293A/ja active Pending
- 2020-11-19 EP EP20902749.9A patent/EP4078388A4/en active Pending
- 2020-11-19 KR KR1020227024000A patent/KR20220113500A/ko active Search and Examination
-
2021
- 2021-12-27 US US17/562,457 patent/US20220197840A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US11210248B2 (en) | 2021-12-28 |
US20220197840A1 (en) | 2022-06-23 |
WO2021126460A1 (en) | 2021-06-24 |
EP4078388A4 (en) | 2023-12-27 |
KR20220113500A (ko) | 2022-08-12 |
US20210191890A1 (en) | 2021-06-24 |
EP4078388A1 (en) | 2022-10-26 |
CN114846455A (zh) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3796179A1 (en) | System, apparatus and method for processing remote direct memory access operations with a device-attached memory | |
EP3529706B1 (en) | Gpu remote communication with triggered operations | |
TW201905714A (zh) | 以輔助處理器記憶體進行儲存裝置的直接輸入輸出操作的計算系統操作方法、計算系統、車輛及電腦可讀媒體 | |
US20200081848A1 (en) | Storage device and system | |
US7934029B2 (en) | Data transfer between devices within an integrated circuit | |
US20190171392A1 (en) | Method of operating storage device capable of reducing write latency | |
KR102428563B1 (ko) | 수눕 작동을 관리하는 코히런트 인터커넥트와 이를 포함하는 데이터 처리 장치들 | |
JP2023507292A (ja) | ゼロ値メモリ圧縮 | |
KR102617360B1 (ko) | 바이트 어드레스 지정 가능한 메모리로서 비-휘발성 메모리에 액세스하는 방법 및 장치 | |
JP2019133662A5 (ja) | ||
KR20170041816A (ko) | 이종 프로세서 시스템 내 캐시들 간에 데이터 이동 | |
US20220114099A1 (en) | System, apparatus and methods for direct data reads from memory | |
US11275632B2 (en) | Broadcast command and response | |
WO2023076591A1 (en) | Hardware management of direct memory access commands | |
EP4124963A1 (en) | System, apparatus and methods for handling consistent memory transactions according to a cxl protocol | |
US11687460B2 (en) | Network cache injection for coherent GPUs | |
US11275707B2 (en) | Multi-core processor and inter-core data forwarding method | |
US9652560B1 (en) | Non-blocking memory management unit | |
JP2023507293A (ja) | システムダイレクトメモリアクセスエンジンのオフロード | |
CN115563053A (zh) | 高性能片上内存控制器及其执行的方法 | |
US20140281234A1 (en) | Serving memory requests in cache coherent heterogeneous systems | |
US11321254B2 (en) | Computing system for transmitting completion early between serially connected electronic devices | |
JP6565729B2 (ja) | 演算処理装置、制御装置、情報処理装置及び情報処理装置の制御方法 | |
WO2022212081A1 (en) | Methods and apparatus for offloading tiered memories management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231113 |