JP2023507293A - システムダイレクトメモリアクセスエンジンのオフロード - Google Patents

システムダイレクトメモリアクセスエンジンのオフロード Download PDF

Info

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
Application number
JP2022535068A
Other languages
English (en)
Inventor
カリヤナスンダラム ヴィドヒャナサン
カマット ナレンドラ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2023507293A publication Critical patent/JP2023507293A/ja
Pending 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/4027Coupling between buses using bus bridges
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation

Abstract

ダイレクトメモリアクセス用のシステム、デバイス及び方法が提供される。プロセッサダイ上に配置されたシステムダイレクトメモリアクセス(SDMA)デバイスは、ソースバッファ及び宛先バッファの物理アドレス並びにデータ転送のサイズを含むメッセージをデータファブリックデバイスに送信する。データファブリックデバイスは、ソース及び宛先バッファの物理アドレス並びにデータ転送のサイズを含む命令を第1のエージェントデバイスに送信する。第1のエージェントデバイスの各々は、ソースバッファの物理アドレスにあるメモリデバイスからソースバッファの一部を読み取る。第1のエージェントデバイスの各々は、ソースバッファの一部を何れかの第2のエージェントデバイスに送信する。第2のエージェントデバイスの各々は、ソースバッファの一部を宛先バッファに書き込む。【選択図】図5

Description

(関連出願の相互参照)
本願は、2019年12月20日出願の米国特許出願第16/723,709号の利益を主張し、その内容は、参照することによって本明細書に組み込まれる。
システムダイレクトメモリアクセス(SDMA)エンジンは、デバイスとメモリ間、又は、コンピュータシステム内のメモリ内の異なる位置間でのデータのダイレクトメモリアクセス(DMA)転送を調整するデバイスである。SDMAエンジンは、通常、グラフィックプロセッサ(GPU)等のプロセッサ上に位置し、プロセッサ上で実行されているアプリケーションからコマンドを受信する。コマンドに基づいて、SDMAエンジンは、SDMAソース(例えば、メインメモリ内に定義された第1のメモリバッファ)からデータを読み取り、SDMA宛先(例えば、メインメモリ内に定義された第2のバッファ)にデータを書き込む。
SDMAソースとSDMA宛先(destination)とは、場合によっては、物理的に異なるデバイスに位置する。マルチプロセッサシステムでは、SDMAソースとSDMA宛先とは、場合によっては、異なるプロセッサに関連付けられた異なるデバイスに位置する。このような場合、SDMAエンジンは、仮想アドレスを解決して物理アドレスを取得し、リモート読み取り及び/又は書き込みコマンドを発行してDMA転送を実行する。
添付の図面と併せて例として与えられる以下の説明から、より詳細な理解を得ることができる。
本開示の1つ以上の特徴を実装することができる例示的なデバイスのブロック図である。 例示的なコンピューティングシステムの一部を示すブロック図である。 例示的なマルチプロセッサコンピューティングシステムの一部を示すブロック図である。 例示的なダイレクトメモリアクセスメッセージングを示すメッセージシーケンスチャートである。 ダイレクトメモリアクセスの例示的な方法を示すフローチャートである。
いくつかの実施形態では、ダイレクトメモリアクセス用に構成されたコンピューティングシステムが提供される。システムは、プロセッサダイ上の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)

  1. ダイレクトメモリアクセス用に構成されたコンピューティングシステムであって、
    プロセッサダイ上に配置され、ソースバッファの物理アドレス、宛先バッファの物理アドレス、及び、前記ソースバッファから前記宛先バッファへのデータ転送のサイズを含むメッセージをデータファブリックデバイスに送信するように構成されたシステムダイレクトメモリアクセス(SDMA)デバイスと、
    前記ソースバッファの物理アドレス、前記宛先バッファの物理アドレス、及び、前記データ転送のサイズを含む少なくとも1つの命令を、第1の複数のエージェントデバイスに送信するように構成されたデータファブリックデバイスと、
    第1の複数のエージェントデバイスであって、各々が、前記ソースバッファの物理アドレスにあるメモリデバイスから前記ソースバッファの一部を読み取ることと、前記ソースバッファの一部を第2の複数のエージェントデバイスのうち何れかに送信することと、を実行するように構成された第1の複数のエージェントデバイスと、
    第2の複数のエージェントデバイスであって、各々が、メモリコントローラを動作して、前記ソースバッファの一部を前記宛先バッファに書き込むように構成された第2の複数のエージェントデバイスと、を備える、
    システム。
  2. 前記SDMAデバイスは、
    前記ソースバッファの仮想アドレス及び前記宛先バッファの仮想アドレスを示す少なくとも1つの命令を前記プロセッサダイのプロセッサから受信することと、
    前記ソースバッファの仮想アドレスを前記ソースバッファの物理アドレスに変換することと、
    前記宛先バッファの仮想アドレスを前記宛先バッファの物理アドレスに変換することと、
    を実行するようにさらに構成されている、
    請求項1のシステム。
  3. 前記データファブリックデバイスは、データファブリックのMISC(miscellaneous)機能ブロックを含む、
    請求項1のシステム。
  4. 前記エージェントデバイスは、データファブリックのコヒーレントスレーブデバイスを含む、
    請求項1のシステム。
  5. 前記第1の複数のエージェントデバイスは、前記プロセッサダイ上に配置されており、
    前記第2の複数のエージェントデバイスは、リモートプロセッサダイ上に配置されている、
    請求項1のシステム。
  6. 前記第2の複数のエージェントデバイスは、前記プロセッサダイ上に配置されており、
    前記第1の複数のエージェントデバイスは、リモートプロセッサダイ上に配置されている、
    請求項1のシステム。
  7. 前記第1の複数のエージェントデバイスの各々は、前記ソースバッファの一部を前記第2の複数のエージェントデバイスのうち何れかに送信する前に、前記ソースバッファの一部をローカルバッファに格納するようにさらに構成されている、
    請求項1のシステム。
  8. 前記プロセッサダイとリモートプロセッサダイとの間にコヒーレントリンクをさらに備え、
    前記第1の複数のエージェントデバイスは、前記コヒーレントリンクを介して前記第2の複数のエージェントデバイスと通信するようにさらに構成されている、
    請求項1のシステム。
  9. 前記第1の複数のエージェントデバイスの各々は、メモリコントローラを動作して、前記ソースバッファの物理アドレスにある前記メモリデバイスから前記ソースバッファの一部を読み取るようにさらに構成されている、
    請求項1のシステム。
  10. 前記データファブリックデバイスは、前記少なくとも1つの命令を前記第1の複数のエージェントデバイスにブロードキャストするようにさらに構成されている、
    請求項1のシステム。
  11. ダイレクトメモリアクセスのための方法であって、
    ソースバッファの物理アドレス、宛先バッファの物理アドレス、及び、前記ソースバッファから前記宛先バッファへのデータ転送のサイズを含むメッセージを、プロセッサダイ上に配置されたシステムダイレクトメモリアクセス(SDMA)デバイスからデータファブリックデバイスに送信することと、
    前記データファブリックデバイスが、前記ソースバッファの物理アドレス、前記宛先バッファの物理アドレス、及び、前記データ転送のサイズを含む少なくとも1つの命令を、第1の複数のエージェントデバイスに送信することと、
    前記第1の複数のエージェントデバイスの各々が、前記ソースバッファの物理アドレスのメモリデバイスから前記ソースバッファの一部を読み取ることと、
    前記第1の複数のエージェントデバイスの各々が、前記ソースバッファの一部を第2の複数のエージェントデバイスのうち何れかに送信することと、
    前記第2の複数のエージェントデバイスの各々が、前記ソースバッファの一部を前記宛先バッファに書き込むことと、を含む、
    方法。
  12. 前記SDMAデバイスが、前記ソースバッファの仮想アドレス及び前記宛先バッファの仮想アドレスを示す少なくとも1つの命令を前記プロセッサダイのプロセッサから受信することと、
    前記SDMAデバイスが、前記ソースバッファの仮想アドレスを前記ソースバッファの物理アドレスに変換することと、
    前記SDMAデバイスが、前記宛先バッファの仮想アドレスを前記宛先バッファの物理アドレスに変換することと、をさらに含む、
    請求項11の方法。
  13. 前記データファブリックデバイスは、データファブリックのMISC(miscellaneous)機能ブロックを含む、
    請求項11の方法。
  14. 前記エージェントデバイスは、データファブリックのコヒーレントスレーブデバイスを含む、
    請求項11の方法。
  15. 前記第1の複数のエージェントデバイスは、前記プロセッサダイ上に配置されており、
    前記第2の複数のエージェントデバイスは、リモートプロセッサダイ上に配置されている、
    請求項11の方法。
  16. 前記第2の複数のエージェントデバイスは、前記プロセッサダイ上に配置されており、
    前記第1の複数のエージェントデバイスは、リモートプロセッサダイ上に配置されている、
    請求項11の方法。
  17. 前記第1の複数のエージェントデバイスの各々が、前記ソースバッファの一部を前記第2の複数のエージェントデバイスのうち何れかに送信する前に、前記ソースバッファの一部をローカルバッファに格納することをさらに含む、
    請求項11の方法。
  18. 前記第1の複数のエージェントデバイスが、前記プロセッサダイとリモートプロセッサダイとの間のコヒーレントリンクを介して前記第2の複数のエージェントデバイスと通信することをさらに含む、
    請求項11の方法。
  19. 前記第1の複数のエージェントデバイスの各々が、メモリコントローラを動作して、前記ソースバッファの物理アドレスにあるメモリデバイスから前記ソースバッファの一部を読み取ることをさらに含む、
    請求項11の方法。
  20. 前記データファブリックデバイスが、前記少なくとも1つの命令を前記第1の複数のエージェントデバイスにブロードキャストすることをさらに含む、
    請求項11の方法。
JP2022535068A 2019-12-20 2020-11-19 システムダイレクトメモリアクセスエンジンのオフロード Pending JP2023507293A (ja)

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)

* Cited by examiner, † Cited by third party
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

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