JP6453997B2 - ヘテロジニアスプロセッサシステムにおけるキャッシュ間のデータ移動 - Google Patents

ヘテロジニアスプロセッサシステムにおけるキャッシュ間のデータ移動 Download PDF

Info

Publication number
JP6453997B2
JP6453997B2 JP2017506322A JP2017506322A JP6453997B2 JP 6453997 B2 JP6453997 B2 JP 6453997B2 JP 2017506322 A JP2017506322 A JP 2017506322A JP 2017506322 A JP2017506322 A JP 2017506322A JP 6453997 B2 JP6453997 B2 JP 6453997B2
Authority
JP
Japan
Prior art keywords
cache
data items
data
moving
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.)
Active
Application number
JP2017506322A
Other languages
English (en)
Other versions
JP2017527027A5 (ja
JP2017527027A (ja
Inventor
グー ジュンリ
グー ジュンリ
エム. ベックマン ブラッドフォード
エム. ベックマン ブラッドフォード
シエ ユエン
シエ ユエン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2017527027A publication Critical patent/JP2017527027A/ja
Publication of JP2017527027A5 publication Critical patent/JP2017527027A5/ja
Application granted granted Critical
Publication of JP6453997B2 publication Critical patent/JP6453997B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • 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/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control

Landscapes

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

Description

(関連出願の相互参照)
本願は、2014年8月5日に出願された、米国特許出願第14/452,058号の優先権を主張する。
本開示の実施形態は、概して、キャッシュへのデータの移動、特に、データが要求される前にヘテロジニアスプロセッサシステム内のキャッシュへ当該データを移動させることに関する。
いくつかのシステムは、ヘテロジニアスプロセッサを有している。例えば、中央処理装置(CPU)と複数のコア(以降、「CPU」及び「コア」は区別なく使用され得る)とを有するシステムは、グラフィカルプロセシングユニット(GPU)も含むことができ、GPUは、複数のコア(以降、「GPU」及び「コア」は区別なく使用され得る)を含むことが多い。CPU及びGPUは、キャッシュを大抵含む同一のメモリを共有することができる。キャッシュは、メモリのより小さな部分であり、アクセスに要する時間がメインメモリより短く、大抵、1つ以上のプロセッサによってプライベートに使用される。メインメモリの一部は、CPU及びGPUのキャッシュにコピーされる。メインメモリの一部における複数のコピーを異なるプロセッサが使用するには、キャッシュとメインメモリとを互いに一致又は一貫させておくための方法が必要になる。ヘテロジニアスシステムでは、データは、大抵、例えばCPU等の第1のプロセッサタイプのキャッシュと、例えばGPU等の第2のプロセッサタイプのキャッシュとの間で移動される。
複数のデータアイテムを第1のキャッシュ又は第2のキャッシュに移動させる装置、コンピュータ可読媒体、集積回路及び方法を提供する。方法は、第1のキャッシュが複数のデータアイテムを要求したという指示を受信することを含む。方法は、第1のキャッシュが複数のデータアイテムを要求したことを示す情報を記憶することを含んでもよい。情報は、複数のデータアイテムの各々のアドレスを含んでもよい。方法は、記憶情報に少なくとも基づいて、複数のデータアイテムを第2のキャッシュに移動させることを決定することと、複数のデータアイテムを第2のキャッシュに移動させることと、を含んでもよい。方法は、第1のキャッシュが複数のデータアイテムを要求したという指示を受信することと、複数のデータアイテムを第2のキャッシュに移動させることと、の間の期間を決定することを含んでもよい。また、スクラッチパッドメモリが開示されている。
複数のデータアイテムを第1のキャッシュ又は第2のキャッシュに移動させるためのシステムが開示される。システムは、第1のキャッシュが複数のデータアイテムを要求したという指示を受信するように構成されている。システムは、第1のキャッシュが複数のデータアイテムを要求したことを示す情報を記憶するように構成されている。情報は、複数のデータアイテムの各々のアドレスを含んでもよい。システムは、記憶情報に少なくとも基づいて、複数のデータアイテムを第2のキャッシュに移動させると決定するように構成されている。システムは、複数のデータアイテムを第2のキャッシュに移動させるように構成されている。
複数のデータアイテムを第1のキャッシュ又は第2のキャッシュに移動させるための集積回路(IC)が開示される。ICは、1つ以上のデータアイテムを、前記1つ以上のデータアイテムの各々に関連付けられたアドレスを用いて記憶するように構成されたスクラッチパッドメモリを含む。ICは、1つ以上のデータアイテムを記憶するように構成された第1のキャッシュを含んでもよく、第1のキャッシュは、1つ以上のデータアイテムのうち何れかのデータアイテムをスクラッチパッドメモリにライトスルーするように構成されている。ICは、1つ以上のデータアイテムを記憶するように構成された第2のキャッシュを含み、第2のキャッシュは、1つ以上のデータアイテムのうち何れかのデータアイテムをスクラッチパッドメモリにライトスルーするように構成されている。ICは、データアイテムが第1のキャッシュに存在することに基づいて前記データアイテムが第2のキャッシュに関連付けられたプロセッサによって要求されるのを決定したことに基づいて、前記データアイテムをスクラッチパッドメモリから第2のキャッシュに移動させるように構成された通信検出器を含んでもよい。
より詳細な理解は、添付の図面と併せて一例として提供された以下の説明から得ることができる。
1つ以上の開示された実施形態を実装することができる例示的なデバイスのブロック図である。 いくつかの実施形態による、ヘテロジニアスプロセッサシステムにおけるキャッシュインジェクションのための装置の一実施例を示す概略図である。 いくつかの実施形態による、CPUが実行可能な例示的なコンピュータ疑似コードを概略的に示す図である。 いくつかの実施形態による、GPUが実行可能な例示的なコンピュータ疑似コードを概略的に示す図である。 CPU及びGPU間のデータの移動を概略的に示す図である。 CPU及びGPU間のデータの移動を概略的に示す図である。 ヘテロジニアスプロセッサシステムのキャッシュにデータを移動させる方法を示す図である。 ヘテロジニアスプロセッサシステムのキャッシュにデータを移動させるシステムを概略的に示す図である。
図1は、1つ以上の開示された実施形態を実装することができる例示的なデバイス100のブロック図である。例示的なデバイス100は、コンピュータ、ゲームデバイス、携帯型デバイス、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータを含む。デバイス100は、プロセッサ102と、メモリ104と、ストレージ106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。デバイス100は、入力ドライバ112と、出力ドライバ114と、を任意に含む。デバイス100は、図1に示されていない追加的な構成要素を含んでもよいことが理解されるであろう。
図示されたように、プロセッサ102は、異なる種類のプロセシングユニット(例えば、1つ以上のコア138を含む1つ以上の中央処理装置(CPU)128(つまり、第1のプロセッサタイプ)と、1つ以上のコア134又はGPUコアを含む1つ以上のグラフィックスプロセシングユニット(GPU)130(つまり、第2のプロセッサタイプ))を含む。当業者に周知であるように、CPU及びGPUとは異なる種類のプロセッサが知られている。これらの他のプロセッサは、例えば、デジタルシグナルプロセッサ、アプリケーションプロセッサ等を含む。CPU128及びGPU130は、同じウェハ上又は複数のウェハ上に配置されてもよい。GPU130は、1つ以上のコア134を制御するコマンドプロセッサ(図示省略)を含んでもよい。各コア134は、単一命令複数データ(SIMD)プロセシング要素として動作する2つ以上のプロセシング要素(図示省略)を含んでもよい。
CPU128は、1つ以上のコア138と、1つ以上のキャッシュ140と、を含む。GPU130は、1つ以上のコア134と、1つ以上のキャッシュ136と、を含む。CPU128及びGPU130は、同じウェハ上又は複数のウェハ上に配置されてもよい。各プロセッサコアは、CPU128であってもよいし、GPU130であってもよい。GPU130は、1つ以上のコア134と、1つ以上のキャッシュ136と、を含む。GPU130及びCPU128は、他の種類の計算ユニットであってもよい。いくつかの実施形態では、計算ユニットは、メモリ要求を生成するウェハの一部を含む。メモリ104は、プロセッサ102と同じウェハ上に配置されてもよいし、プロセッサ102とは別に配置されてもよい。メモリ104は、揮発性メモリ又は不揮発メモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)又はキャッシュ)を含んでもよい。メモリ104は、1つ以上のメモリコントローラ132と、1つ以上のキャッシュ126と、を含む。メモリコントローラ132は、CPUと同じウェハ上又は別のウェハ上に配置されてもよい。キャッシュ126を、プロセッサ102に関連付けてもよいし、メモリ104に関連付けてもよい。キャッシュ126及びメモリ104は、キャッシュ126及びメモリ104に対してコヒーレンシを提供するための通信ライン(図示省略)を含む。キャッシュ126及びメモリ104は、以下に開示するキャッシュコヒーレンシを提供するためのディレクトリ(図示省略)を含む。いくつかの実施形態では、キャッシュ126は、コヒーレンシプロトコルのために構成されたコントローラ(図示省略)を含む。
ストレージ106は、固定又は取り外し可能なストレージ(例えば、ハードディスクドライブ、半導体ドライブ、光ディスク又はフラッシュドライブ)を含んでもよい。例示的な入力デバイス108は、キーボード、キーパッド、タッチ画面、タッチパッド、検出器、マイク、加速度計、ジャイロスコープ、生体スキャナ又はネットワーク接続(例えば、ワイヤレスIEEE802信号の送信及び/若しくは受信のためのワイヤレスローカルエリアネットワークカード、又は、ブルートゥース(登録商標))を含む。例示的な出力デバイス110は、ディスプレイ、スピーカー、プリンタ、触覚フィードバックデバイス、1つ以上の光、アンテナ又はネットワーク接続(例えば、ワイヤレスIEEE802信号の送信及び/若しくは受信のためのワイヤレスローカルエリアネットワークカード)を含む。
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108からの入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に対して出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114は、任意の構成要素である。
図2は、いくつかの実施形態による、ヘテロジニアスプロセッサシステムにおけるキャッシュインジェクションのためのシステム200の一実施例を示す概略図である。図2では、CPU210と、GPU212と、キャッシュ通信検出器230と、メモリテーブル290と、メモリトラフィック280と、メモリ250と、が示されている。通信検出器230は、メモリトラフィック280の少なくとも一部を監視しており、メモリトラフィック280に基づいて、データ270をCPU210のキャッシュ218又はGPU212のキャッシュ220に移動させるかどうかを決定する。
CPU210は、キャッシュ218を含む。CPU210は、例えばCPU128等の第1のプロセッサタイプのプロセシングユニットである。キャッシュ218は、CPU210が使用するデータ270.2及び/又は命令300.1(図3A参照)を記憶するキャッシュ218である。CPU210は、命令300.1を実行する。命令300.1は、データ270.2を処理するための命令を含んでもよい。命令300.1は、図3Aに示す疑似コード又は他の適切な命令に基づくものである。
GPU212は、キャッシュ220を含む。GPU212は、例えばGPU130等の第2のプロセッサタイプのプロセシングユニットである。キャッシュ220は、GPU212が処理するデータ270.3及び/又は命令300.2(図3B参照)を記憶するキャッシュ220である。GPU212は、命令300.2を実行する。命令300.2は、データ270.3を処理するための命令を含んでもよい。命令300.2は、図3Bに示す疑似コード又は他の適切な命令に基づくものであってもよい。
メモリテーブル290は、メモリエントリ292を含むテーブルである。メモリエントリ292は、アドレス272と、情報294と、を含む。メモリテーブル290は、メモリ250、又は、通信検出器230がアクセス可能な別の場所に記憶されている。例えば、通信検出器230は、メモリテーブル290又は他のデータを記憶するためのキャッシュ(図示省略)であって、通信検出器230に関連付けられたキャッシュを有してもよい。アドレス272は、メモリエントリ292のアドレスである。情報294は、メモリエントリ292に関する情報を含む。例えば、情報294は、アドレス272を有するメモリエントリ292がキャッシュ218にロードされたことを示す情報294等であってもよい。いくつかの実施形態では、情報294は、キャッシュ218とキャッシュ220との間でデータ270が移動した回数のカウンタを含む。いくつかの実施形態では、通信検出器230は、メモリテーブル290とは異なるデータ構造を用いる。
通信検出器230は、間隔232を決定及び/又は記憶する。いくつかの実施形態では、間隔232は、データ270がキャッシュ218にロードされたときと、データ270がキャッシュ220によって要求されたときとの間の時間の間隔(期間)232である。通信検出器230は、データ270を、CPU210のキャッシュ218及び/又はGPU212のキャッシュ220に移動させるように構成されている。通信検出器230は、メモリトラフィック280を監視して、キャッシュ218及び/又はキャッシュ220がデータ270を要求する前に、CPU210のキャッシュ218及び/又はGPU212のキャッシュ220がデータ270をいつ必要とするのかを予測する。通信検出器230は、メモリテーブル290をメンテナンスすることによって、メモリトラフィック280を監視する。通信検出器230は、メモリテーブル290内でメモリエントリ292をメンテナンスする。通信検出器230は、例えば、データ270がキャッシュ218、キャッシュ220の何れに現在存在しているのかに関する情報294等の情報294と、データ270がどれだけ頻繁に使用されているかについての指示と、アドレス272に関連付けられたデータ270をキャッシュ218、キャッシュ220に移動させるかどうかを通信検出器230が決定するのに有用となり得る他の情報と、をメンテナンスする。
通信検出器230は、CPU210のキャッシュ218とGPU212のキャッシュ220との間のデータ270の動きを検出するように構成されている。通信検出器230は、データ270が、CPU210のキャッシュ218からGPU212のキャッシュ220に移動されるときと、その逆のときと、の間の間隔232を決定し、決定した間隔232に基づいて、データをキャッシュ218に移動させる。例えば、通信検出器230は、メモリトラフィック280を監視して、メモリテーブル290をメンテナンスする。メモリテーブル290は、データ270がキャッシュ218にいつロードされたのかを示すメモリエントリ292を含んでもよい。そして、通信検出器230は、メモリトラフィック280を監視して、キャッシュ220がメモリエントリ292に対応するデータ270をいつ要求するのかを判断する。通信検出器230は、メモリエントリ292がキャッシュ218によって要求されたとき又はメモリエントリ292がキャッシュ218にロードされたときと、メモリエントリ292がキャッシュ220によって要求されたとき又はメモリエントリ292がキャッシュ220にロードされたときと、の間の間隔232を決定する。
データ270は、CPU210のキャッシュ218と、GPU212のキャッシュ220と、の間を移動してもよい。通信検出器230は、決定した間隔232を用いて、データ270をキャッシュ218,220のうち一方から他方にいつ移動させるのかを決定する。通信検出器230は、データ270をキャッシュ218,220にロードするためにコマンドをメモリ250に送信することによって、データ270をキャッシュ218に移動させる。
通信検出器230は、メモリ250、CPU210及び/又はGPU212の一部として実装されてもよい。通信検出器230は、ソフトウェア、ファームウェア又は電子回路によって実装されてもよい。通信検出器230は、2つ以上の部分を用いて実装されてもよい。例えば、通信検出器230は、メモリ250に関連付けられた部分と、CPU210に関連付けられた部分と、を有してもよい。通信検出器230は、一部が集積回路であって、一部がソフトウェア又はファームウェアであってもよい。
キャッシュ218,220は、ライトバックキャッシュであってもよい。キャッシュ218,220は、ライトスルーキャッシュであってもよい。キャッシュ218,220は、コヒーレントキャッシュシステムの一部であってもよい。
メモリ250は、ディレクトリと、他のキャッシュ(図示省略)と、を含む。メモリ250は、キャッシュ218,220がコヒーレントメモリシステムの一部であるセントラルメモリヒエラルキーの一部である。いくつかの実施形態では、メモリ250は、L3キャッシュである。メモリ250は、通信検出器230から命令を受けて、アドレス272を有するデータ270をキャッシュ218,220にロードする。メモリ250は、アドレス272によってアクセスされるデータ270から構成される。キャッシュ218,220は、コヒーレントアドレスシステムの一部であるか、又は、別のアドレスシステムを有する。
メモリトラフィック280は、メモリ250への命令を含む。例えば、メモリトラフィック280は、書き込み要求、読み出し要求、ライトバック要求等を含んでもよい。
いくつかの実施形態において、キャッシュ218とキャッシュ220との間には、ダイレクトメモリ接続が存在する。通信検出器230は、2つのキャッシュ218,220間のメモリトラフィック280を監視して、2つのキャッシュ218,220間でデータ270を移動させるコマンドを送信する。
図3A及び図3Bは、いくつかの実施形態による、CPU210及びGPU212が実行するコンピュータ疑似コードの例示的なブロックを概略的に示す図である。図4A及び図4Bは、CPU210とGPU212との間のデータの動きを概略的に示す図である。図3A、図3B、図4A及び図4Bを互いに関連させて説明する。CPU210は、メモリ250内のスペースを「data」のために割り当てる命令「data=malloc(...)」302を実行することによって開始する。「data」は、例えば、数百万の数から成るアレイであってもよく、データ270.1〜データ270.Nとして記憶されている。続いて、CPU210は、「initialize(data)」303を実行する。CPU210は、データを初期化するために、当該データをメモリ250からCPUキャッシュ218に移動させることを要求する。このことは、図4Aに例示されている。データ270.1〜データ270.Nは、CPU210がデータ270.1〜データ270.Nを要求することによって、メモリ250からキャッシュ218に移動している。通信検出器230は、データ270を監視して、メモリテーブル290をメンテナンスする。例えば、通信検出器230は、データ270.1〜データ270.Nの各々に対するエントリを行って、情報294をデータ270に関連付ける。情報294は、CPU210がデータ270.1〜データ270.Nを要求して、データ270.1〜データ270.Nが現在キャッシュ218内に存在する、という指示を含んでもよい。
CPU210は、DOループを開始する「do{」304に続く。次いで、CPU210は、「kernel<<<blocks,threads>>>(data)」305を実行する。このコマンドでは、GPU212に制御を渡す。GPU212は、疑似コードの開始の指示である「kernel(){」351を実行する。次に、GPU212は、「process(data)」352を実行する。GPU212は、例えば、データ270.1〜データ270.Nまでの数百万の数に対して計算を実行する。GPU212は、キャッシュ220を共有する多くのプロセシング要素から構成されてもよい。GPU212のキャッシュ220は、GPU212がデータを処理するために、データ270.1〜データ270.Nを要求する。GPU212がデータ270.1〜データ270.Nを要求したときにはデータ270.1〜データ270.Nがキャッシュ220に存在しないので、キャッシュ220は、データ270.1〜データ270.Nを要求する。データ270.1〜データ270.Nを、CPU210のキャッシュ218からGPU212のキャッシュ220に移動させてもよい。例えば、メモリ250のディレクトリ(図示省略)は、データ270.1〜データ270.Nを解放する要求をキャッシュ218に送信し、その後、データ270.1〜データ270.Nをキャッシュ220に送信する。図4Bは、データ270.1〜データ270.Nが、GPU212によって、CPU210のキャッシュ218からGPU212のキャッシュ220に移動したことを示している。データ270.1〜データ270.Nの一部又は全てを、CPU210のキャッシュ218からメモリ250に移動させ、その後、メモリ250からGPU212のキャッシュ220に移動させてもよい。通信検出器230は、データ270.1〜データ270.Nの動きを監視して、データ270.1〜データ270.NがGPU212のキャッシュ220に移動したことを情報294において示す。いくつかの実施形態では、通信検出器230は、間隔232を決定する。
GPU212は、「}」353を実行する。ここで、制御がCPU210に戻る。次に、CPU210は、「re−processes(data)」306を実行する。CPU210は、データ270.1〜データ270.Nを再処理するために、データ270.1〜データ270.Nを再度要求する。データ270.1〜データ270.Nは、GPU212のキャッシュ220からCPU210のキャッシュ218に移動する。データ270.1〜データ270.Nは、図4Aに例示した位置に戻されてもよい。通信検出器230は、データ270.1〜データ270.Nの動きを監視して、データ270.1〜データ270.NがGPU212のキャッシュ220からCPU210のキャッシュ218に移動したことを情報294において示す。
次いで、CPU210は、「}while(work left)」307を実行する。いくつかの実施形態では、残りの作業が存在する場合には、CPU210は、304に戻る。
CPU210は、上述したように、DOループの開始である「do{」304を実行する。CPU210は、「kernel<<<blocks,threads>>>(data)」305を続ける。このコマンドでは、上述したように、GPU212に制御を渡す。次に、GPU212は、疑似コードの開始を示す「kernel(){」351を実行する。GPU212は、「process(data)」352を実行する。GPU212は、例えば、上述したように、数百万の数に対して計算を実行する。GPU212がデータを処理するために、GPU212は、データ270.1〜データ270.Nを要求する。図4Bは、データ270.1〜データ270.Nがキャッシュ218からGPU212のキャッシュ220に移動したことを示している。
いくつかの実施形態では、通信検出器230は、CPU210によるデータ270.1〜データ270.Nの処理と、GPU212がデータ270.1〜データ270.Nの処理を開始可能であるとGPU212が示したことと、の間の間隔232を決定することによって、GPU212がデータ270.1〜データ270.Nの処理を開始していることを検出する。通信検出器230は、データ270.1〜データ270.Nの動きを監視して、データ270.1〜データ270.NがGPU212のキャッシュ220に移動したことを情報294において示す。
GPU212は、疑似コード300.2の終了を示す「}」353を実行する。制御は、CPU210に戻る。次いで、CPU210は、「re−processes(data)」306を実行する。通信検出器230は、データ270.1〜データ270.NをCPU210のキャッシュ218に移動させて、CPU210がデータ270.1〜データ270.Nを要求したときには、データがCPU210のキャッシュ218に既に存在するようにしてもよい。いくつかの実施形態では、データ270.1〜データ270.Nの一部のみを「re−processes(data)」して、CPU210のキャッシュ218に移動させる。
次に、CPU210は、「post−process(data)」308を実行する。CPU210は、データ270.1〜データ270.Nの一部又は全てを処理する。いくつかの実施形態では、新たなデータ270が生成され、CPU210によって処理されてもよい。通信検出器230は、CPU210が308で処理するデータ270.1〜データ270.Nの一部又は全てを移動させてもよい。疑似コード300.1は終了してもよい。疑似コード300.1は、304に戻るように307でループし続けてもよく、この場合、データ270.1〜データ270.Nは、キャッシュ218(図4A)とキャッシュ220(図4B)との間を行き来し続ける。通信検出器230は、メモリトラフィック280を監視し続けて、キャッシュ218,220間を行き来しているデータ270.1〜データ270.Nに基づいて、間隔232を改善する。また、通信検出器230は、メモリトラフィック280を監視し、他の指示に基づいて、データ270.1〜データ270.Nを他のキャッシュに移動させるように決定してもよい。例えば、通信検出器230は、異なるデータアイテム(図示省略)がキャッシュ218によって要求されたときに、CPU210がデータ270.1〜データ270.Nの使用を終了することによって、データ270.1〜データ270.Nをキャッシュ220に移動させるべきである、と決定してもよい。
図5は、ヘテロジニアスプロセッサシステムのキャッシュにデータを移動させる方法500を示す図である。方法500は、開始502から始まる。方法500は、続いて、第1のキャッシュが複数のデータアイテムを要求したという指示を受信する。例えば、図4A及び図4Bを参照すると、CPU210は、キャッシュ218に存在していないデータ270.1〜データ270.Nを要求してもよい。キャッシュ218は、メモリ250からのデータ270.1〜データ270.Nを要求する。通信検出器230は、キャッシュ218からメモリ250へのデータ270.1及びデータ270.Nの要求についてのメモリトラフィック280を検出する。
方法500は、506にて、第1のキャッシュが1つ以上のデータアイテムを要求したことを示す情報を記憶する。例えば、通信検出器230は、データ270.1〜データ270.Nがキャッシュ218に移動したことをメモリテーブル290に記憶させる。通信検出器230は、データ270.1〜データ270.Nがキャッシュ218に移動した時間を記憶する。通信検出器230は、データ210が書き込まれたか否か等の他の情報294を記憶してもよい。いくつかの実施形態では、通信検出器230は、カーネル完了信号を監視して、記憶する。いくつかの実施形態では、データ270.1〜データ270.Nの一部又は全ては、キャッシュ218と、キャッシュ220と、の間を行き来する。通信検出器230は、データ270.1〜データ270.Nがキャッシュ218に移動したときと、データ2701.1〜データ270.Nがキャッシュ220に移動したときと、の時間の間隔(期間)232を決定してもよい。いくつかの実施形態では、通信検出器230は、同期メモリアクセスを監視することに基づいて間隔232を決定する。いくつかの実施形態では、通信検出器230は、同期メモリアクセスを監視することのみに基づいて間隔232を決定する。いくつかの実施形態では、通信検出器230は、カーネル完了信号を監視することに基づいて間隔232を決定する。
方法500は、508にて、1つ以上のデータアイテムを第2のキャッシュに移動させることを決定する。例えば、通信検出器230は、間隔232に基づいて、データ270.1〜データ270.Nを移動させることを決定する。例えば、通信検出器230は、間隔232が発生したと判断して、間隔232の後にいくらかの期間待機し、その後、データ270.1〜データ270.Nを移動させることを決定する。通信検出器230は、キャッシュ220からのメモリトラフィック280が、データ270.1〜データ270.Nのうち何れかに対する要求を含んでいたと判断した後に、データ270.1〜データ270.Nを移動させることを決定してもよい。例えば、キャッシュ220は、データ270.1に対する要求を、270.1〜270.Nがキャッシュ218に存在しているときに行ってもよい。通信検出器230は、メモリトラフィック280を監視することと、キャッシュ220がデータ270.1を要求したという指示を受信したことと、に基づいて、データ270.2〜データ270.Nをキャッシュ220に移動させることを決定してもよい。通信検出器230は、カーネル完了信号に基づいて、データ270.2〜データ270.Nをキャッシュ220に移動させることを決定してもよい。例えば、通信検出器230は、データ270.2〜データ270.Nにアクセスするキャッシュ220内で実行しているカーネルからカーネル完了信号を受信したことを検出し、カーネル完了信号を受信したことに基づいて、データ270.2〜データ270.Nの少なくとも一部をキャッシュ218に移動させる。
通信検出器230は、メモリトラフィック280を監視して、データ270.1〜データ270.Nが書き戻されたときに、データ270.1〜データ270.Nをキャッシュ220に移動させるべきと決定してもよい。例えば、通信検出器230は、データ270.1〜データ270.100が書き戻されたことを検出し、この決定に基づいて、データ270.1〜データ270.100をキャッシュ220にロードしてもよい。
方法500は、510にて、1つ以上のデータアイテムを第2のキャッシュに移動させる。例えば、通信検出器230は、メモリ250に対して、データ270.1〜データ270.Nをキャッシュ220にロードする要求を行う。いくつかの実施形態では、通信検出器230は、データ270.1〜データ270.Nの一部をキャッシュ220に移動させ、その後、データ270.1〜データ270.Nの第2の部分をキャッシュ220に移動させる。例えば、通信検出器230は、データ270.1〜データ270.100をキャッシュ220に移動させ、その後、270.101〜270.200をキャッシュ220に移動させる。通信検出器230は、GPU212がキャッシュ220内にデータ270.1〜データ270.Nを必要とする時間の長さを予測することに基づいて、データ270.1〜データ270.Nを部分的に移動させてもよい。
図6は、ヘテロジニアスプロセッサシステムのキャッシュにデータを移動させる例示的なシステム600を概略的に示す図である。システム600は、スクラッチパッドメモリ602を含む。スクラッチパッドメモリ602は、アドレス604と、実データ606と、他の情報608と、を記憶するように構成されている。CPU210及びGPU212は、データ270を各々のキャッシュ218,220に書き込むときに、いくつかの選択されたデータ270.1〜データ270.Nをスクラッチパッドメモリ602の実データ606にも書き込むように構成されている。データ270は、キャッシュ218,220と、スクラッチパッドメモリ602と、に存在してもよい。スクラッチパッドのデータ270は、通信検出器230がデータ270を移動させる前にオーナーキャッシュ218,220がデータ270に再度書き込んだ場合に、更新され得る。通信検出器230は、データ270.1〜データ270.Nをスクラッチパッドからキャッシュ218,220の何れか一方のキャッシュに移動させ、データ270.1〜データ270.Nが何れか他方のキャッシュ218,220によって使用されるとき、又は、「kernel(){」351が終了したときに、何れか他方のキャッシュ218,220のデータ270.1〜データ270.Nを無効にしてもよい。他の情報608は、キャッシュ218,220の何れのキャッシュがデータ606を所有しているのかと、データ606が有効か否かと、の指示を含んでもよい。
多くの変形が、本明細書の開示に基づいて可能である、ということを理解すべきである。上述したように、特徴及び要素を特定の組み合わせで説明したが、特徴又は要素の各々は、他の特徴及び要素なしに単体で使用してもよく、他の機能及び要素の有無にかかわらず様々な組み合わせで使用することができる。
提供された方法を、汎用コンピュータ、プロセッサ又はプロセッサコアで実装してもよい。適切なプロセッサは、一例として、汎用プロセッサ、グラフィックスプロセシングユニット(GPU)、専用プロセッサ、従来のプロセッサ、デジタルシグナルプロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特殊用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、任意の他の種類の集積回路(IC)、及び/又は、状態機械を含む。(コンピュータ可読媒体に記憶可能な命令等の)処理されたハードウェア記述言語(HDL)命令の結果と、ネットリストを含む他の中間データと、を用いた製造プロセスを構成することによって、かかるプロセッサを製造してもよい。かかる処理の結果は、マスクワークであってもよく、マスクワークは、後に半導体製造プロセスで用いられて、開示の実施形態の態様を実装するプロセッサを製造する。
本明細書で提供した方法又はフローチャートを、汎用コンピュータ又はプロセッサによる実行のためにコンピュータ可読ストレージ媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実装することができる。いくつかの実施形態では、コンピュータ可読ストレージ媒体は、非一時的なコンピュータ可読ストレージ媒体である。コンピュータ可読ストレージ媒体の例としては、リードオンリーメモリ(ROM)と、ランダムアクセスメモリ(RAM)と、レジスタと、キャッシュメモリと、半導体メモリデバイスと、内蔵ハードディスク及び取り外し可能ディスク等の磁気媒体と、磁気光学媒体と、CD−ROMディスクなどの光媒体と、デジタル多用途ディスク(DVD)と、が含まれる。

Claims (12)

  1. 複数のデータアイテムを移動させる方法であって、
    1のキャッシュが前記複数のデータアイテムを受信したという第1の指示を受信することと、
    前記第1のキャッシュで受信された前記複数のデータアイテムに対する第2のキャッシュによる要求を受信することと、
    前記第1のキャッシュが前記複数のデータアイテムを受信したときの時間を示す第1の情報を記憶することであって、前記第1の情報は、前記複数のデータアイテムの各々のアドレスを含む、ことと、
    前記第2のキャッシュが前記複数のデータアイテムを要求したときの時間を示す第2の情報を記憶することであって、前記第2の情報は、前記複数のデータアイテムの各々の前記アドレスを含む、ことと、
    前記複数のデータアイテムを前記第1のキャッシュから前記第2のキャッシュに移動させることと、
    前記第1のキャッシュが前記複数のデータアイテムを受信したときから前記第2のキャッシュが前記複数のデータアイテムを要求したときまでの時間に対応する時間間隔を決定することと、
    前記複数のデータアイテムが前記第2のキャッシュに移動された後に、前記第1のキャッシュが前記複数のデータアイテムを再度受信したという第2の指示を受信することと、
    前記第2の指示に基づいて、前記第1のキャッシュが前記複数のデータアイテムを再度受信したときを示す情報を記憶することと、
    前記時間間隔と、前記第1のキャッシュが前記複数のデータアイテムを再度受信したときと、に基づいて、前記複数のデータアイテムを前記第のキャッシュに移動させることと、
    を備える、方法。
  2. 前記第1のキャッシュが前記複数のデータアイテムを再度受信したときから前記第2のキャッシュが前記複数のデータアイテムを再度要求したときまでの更なる時間に基づいて、前記時間間隔を更新することと、
    更新された前記時間間隔と、前記第1のキャッシュが前記複数のデータアイテムを再度受信したときと、に基づいて、前記複数のデータアイテムを前記第のキャッシュに移動させることと、
    をさらに備える、請求項1に記載の方法。
  3. 前記第2のキャッシュによる要求は、メモリ読み出し要求、メモリ読み出し/書き込み要求、同期メモリ読み出し要求、同期メモリ読み出し/書き込み要求、及び、カーネル完了信号のうち少なくとも1つである、請求項1に記載の方法。
  4. 前記決定することは、
    前記複数のデータアイテムのサブセットが前記第1のキャッシュ内で変更されたという第3の指示を受信することと、
    前記第3の指示を受信したことに基づいて、前記複数のデータアイテムを前記第2のキャッシュに移動させることと、
    をさらに備える、請求項1に記載の方法。
  5. 前記第1のキャッシュは第1の種類の第1のプロセッサと通信し、前記第2のキャッシュは、前記第1の種類の第1のプロセッサとは異なる第2の種類の第2のプロセッサと通信する、請求項1に記載の方法。
  6. 複数のデータアイテムを移動させるための処理デバイスであって、
    第1の種類の第1のプロセッサと通信する第1のキャッシュと、
    第2の種類の第2のプロセッサと通信する第2のキャッシュと、
    前記第1の種類の第1のプロセッサ及び前記第2の種類の第2のプロセッサと通信する通信検出器と、を備え、
    前記通信検出器は、
    前記第1のキャッシュが前記複数のデータアイテムを受信したという第1の指示を受信することと、
    前記第1のキャッシュで受信された前記複数のデータアイテムに対する第2のキャッシュによる要求を受信することと、
    前記第1のキャッシュが前記複数のデータアイテムを受信したときの時間を示す第1の情報を記憶することであって、前記第1の情報は、前記複数のデータアイテムの各々のアドレスを含む、ことと、
    前記第2のキャッシュが前記複数のデータアイテムを要求したときの時間を示す第2の情報を記憶することであって、前記第2の情報は、前記複数のデータアイテムの各々の前記アドレスを含む、ことと、
    前記複数のデータアイテムを前記第1のキャッシュから前記第2のキャッシュに移動させることと、
    前記第1のキャッシュが前記複数のデータアイテムを受信したときから前記第2のキャッシュが前記複数のデータアイテムを要求したときまでの時間に対応する時間間隔を決定することと、
    前記複数のデータアイテムが前記第2のキャッシュに移動された後に、前記第1のキャッシュが前記複数のデータアイテムを再度受信したという第2の指示を受信することと、
    前記第2の指示に基づいて、前記第1のキャッシュが前記複数のデータアイテムを再度受信したときを示す情報を記憶することと、
    前記時間間隔と、前記第1のキャッシュが前記複数のデータアイテムを再度受信したときと、に基づいて、前記複数のデータアイテムを前記第1のキャッシュから前記第2のキャッシュに移動させることと、
    を行うように構成されている、処理デバイス
  7. 前記通信検出器は、
    前記第1のキャッシュが前記複数のデータアイテムを再度受信したときから前記第2のキャッシュが前記複数のデータアイテムを再度要求したときまでの更なる時間に基づいて、前記時間間隔を更新することと、
    更新された前記時間間隔と、前記第1のキャッシュが前記複数のデータアイテムを再度受信したときと、に基づいて、前記複数のデータアイテムを前記第のキャッシュに移動させることと、
    を行うようにさらに構成されている、請求項に記載の処理デバイス
  8. 前記第2のキャッシュによる要求は、メモリ読み出し要求、メモリ読み出し/書き込み要求、同期メモリ読み出し要求、同期メモリ読み出し/書き込み要求、及び、カーネル完了信号のうち少なくとも1つである、請求項に記載の処理デバイス
  9. 前記決定することは、
    前記複数のデータアイテムのサブセットが前記第1のキャッシュ内で変更されたという第3の指示を受信することと、
    前記第3の指示を受信したことに基づいて、前記複数のデータアイテムを前記第2のキャッシュに移動させることと、
    をさらに備える、請求項に記載の処理デバイス
  10. 前記通信検出器は、
    前記複数のデータアイテムの第1の部分を前記第2のキャッシュに移動させることと、
    所定期間待機することと、
    前記複数のデータアイテムの残りの部分を前記第2のキャッシュに移動させることと、
    行うようにさらに構成されている、請求項に記載の処理デバイス
  11. 前記第1のキャッシュが前記複数のデータアイテムを再度受信したときと、前記時間間隔と、に基づいて、前記第2のキャッシュがデータを要求する前に前記複数のデータアイテムを前記第1のキャッシュから前記第2のキャッシュに移動させること、
    をさらに備える、請求項1に記載の方法。
  12. 前記第1のキャッシュが前記複数のデータアイテムを再度受信したときから前記時間間隔が経過したと判別することと、
    前記時間間隔の経過後の期間内に前記複数のデータアイテムを前記第1のキャッシュから前記第2のキャッシュに移動させること、
    をさらに備える、請求項1に記載の方法。
JP2017506322A 2014-08-05 2015-08-04 ヘテロジニアスプロセッサシステムにおけるキャッシュ間のデータ移動 Active JP6453997B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/452,058 US9652390B2 (en) 2014-08-05 2014-08-05 Moving data between caches in a heterogeneous processor system
US14/452,058 2014-08-05
PCT/US2015/043620 WO2016022566A1 (en) 2014-08-05 2015-08-04 Moving data between caches in a heterogeneous processor system

Publications (3)

Publication Number Publication Date
JP2017527027A JP2017527027A (ja) 2017-09-14
JP2017527027A5 JP2017527027A5 (ja) 2018-09-13
JP6453997B2 true JP6453997B2 (ja) 2019-01-16

Family

ID=55264432

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017506322A Active JP6453997B2 (ja) 2014-08-05 2015-08-04 ヘテロジニアスプロセッサシステムにおけるキャッシュ間のデータ移動

Country Status (5)

Country Link
US (1) US9652390B2 (ja)
EP (1) EP3178006B1 (ja)
JP (1) JP6453997B2 (ja)
KR (1) KR102479394B1 (ja)
WO (1) WO2016022566A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180189641A1 (en) 2017-01-04 2018-07-05 Stmicroelectronics S.R.L. Hardware accelerator engine
CN108269224B (zh) 2017-01-04 2022-04-01 意法半导体股份有限公司 可重新配置的互连
US11520913B2 (en) * 2018-05-11 2022-12-06 International Business Machines Corporation Secure execution support for A.I. systems (and other heterogeneous systems)
US11029950B2 (en) 2019-07-03 2021-06-08 International Business Machines Corporation Reducing latency of common source data movement instructions
US11593609B2 (en) 2020-02-18 2023-02-28 Stmicroelectronics S.R.L. Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks
US11531873B2 (en) 2020-06-23 2022-12-20 Stmicroelectronics S.R.L. Convolution acceleration with embedded vector decompression

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6704842B1 (en) * 2000-04-12 2004-03-09 Hewlett-Packard Development Company, L.P. Multi-processor system with proactive speculative data transfer
US6633959B2 (en) * 2001-06-21 2003-10-14 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that provides notification of remote deallocation of shared data
US6615322B2 (en) * 2001-06-21 2003-09-02 International Business Machines Corporation Two-stage request protocol for accessing remote memory data in a NUMA data processing system
US20040111563A1 (en) 2002-12-10 2004-06-10 Edirisooriya Samantha J. Method and apparatus for cache coherency between heterogeneous agents and limiting data transfers among symmetric processors
US7093080B2 (en) 2003-10-09 2006-08-15 International Business Machines Corporation Method and apparatus for coherent memory structure of heterogeneous processor systems
US7934054B1 (en) * 2005-11-15 2011-04-26 Oracle America, Inc. Re-fetching cache memory enabling alternative operational modes
US20090172353A1 (en) * 2007-12-28 2009-07-02 Optillel Solutions System and method for architecture-adaptable automatic parallelization of computing code
EP2399198A4 (en) 2009-02-17 2012-07-25 Rambus Inc COALESCENCE TECHNIQUE OF ATOMIC OPERATIONS IN MULTIPLE CHIP SYSTEMS
US20110066830A1 (en) * 2009-09-11 2011-03-17 Andrew Wolfe Cache prefill on thread migration
US8782236B1 (en) * 2009-06-16 2014-07-15 Amazon Technologies, Inc. Managing resources using resource expiration data
KR101662829B1 (ko) 2009-11-19 2016-10-05 삼성전자주식회사 다중 프로세서 및 그것의 캐시 일관성 관리 장치 및 방법
JP2012064158A (ja) * 2010-09-17 2012-03-29 Toshiba Corp メモリ管理装置及びメモリ管理方法
US9135172B2 (en) * 2012-08-02 2015-09-15 Qualcomm Incorporated Cache data migration in a multicore processing system
US9218289B2 (en) 2012-08-06 2015-12-22 Qualcomm Incorporated Multi-core compute cache coherency with a release consistency memory ordering model
US20140205012A1 (en) * 2013-01-21 2014-07-24 Mediatek Inc. Method and apparatus using software engine and hardware engine collaborated with each other to achieve hybrid video encoding
US9325639B2 (en) * 2013-12-17 2016-04-26 At&T Intellectual Property I, L.P. Hierarchical caching system for lossless network packet capture applications
US10409725B2 (en) * 2014-05-29 2019-09-10 Samsung Electronics Co., Ltd. Management of shared pipeline resource usage based on level information

Also Published As

Publication number Publication date
EP3178006A4 (en) 2018-01-24
EP3178006B1 (en) 2021-05-19
WO2016022566A1 (en) 2016-02-11
JP2017527027A (ja) 2017-09-14
US20160041909A1 (en) 2016-02-11
US9652390B2 (en) 2017-05-16
EP3178006A1 (en) 2017-06-14
KR102479394B1 (ko) 2022-12-20
KR20170041816A (ko) 2017-04-17

Similar Documents

Publication Publication Date Title
JP6453997B2 (ja) ヘテロジニアスプロセッサシステムにおけるキャッシュ間のデータ移動
JP6983806B2 (ja) タグ付きオブジェクトメモリのモニタリング方法及び処理装置
JP6470300B2 (ja) データ処理のための方法及びプロセッサ
US20110167222A1 (en) Unbounded transactional memory system and method
JP6170553B2 (ja) 異種プロセッサを使用するアプリケーションに低レイテンシを提供するためのシステムおよび方法
JP6908608B2 (ja) アプリケーション移行のためのシステム及び方法
JP2018511105A (ja) マルチクラスタシステムにおいて利用可能なキャッシュを選択する方法
JP2023507292A (ja) ゼロ値メモリ圧縮
CN109716305B (zh) 实现异步高速缓存维护操作的方法、计算设备以及介质
JP2017527027A5 (ja)
EP2901287B1 (en) System cache with sticky removal engine
JP5996828B2 (ja) コヒーレントバスを介したセマフォ管理シーケンスのパフォーマンスを改善するための方法および装置
JP2018511111A (ja) ビクティムキャッシュモードを向上させるためのプロセススケジューリング
US11561906B2 (en) Rinsing cache lines from a common memory page to memory
US11687460B2 (en) Network cache injection for coherent GPUs
US11226819B2 (en) Selective prefetching in multithreaded processing units
JP6740719B2 (ja) 情報処理装置、情報処理方法、およびプログラム
US20220197506A1 (en) Data placement with packet metadata
US20140281234A1 (en) Serving memory requests in cache coherent heterogeneous systems
KR20240063607A (ko) 데이터 및 데이터 블록을 제공하는 스왑 메모리 장치, 이의 동작하는 방법, 및 이를 포함하는 전자 장치의 동작하는 방법
JP2023507293A (ja) システムダイレクトメモリアクセスエンジンのオフロード
JP2022540750A (ja) コンピューティングデバイスのメモリ管理

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180803

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180803

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20180803

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20181108

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181114

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181127

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181213

R150 Certificate of patent or registration of utility model

Ref document number: 6453997

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250