JP2024511751A - プロセッシングインメモリ同時処理システム及び方法 - Google Patents
プロセッシングインメモリ同時処理システム及び方法 Download PDFInfo
- Publication number
- JP2024511751A JP2024511751A JP2023556927A JP2023556927A JP2024511751A JP 2024511751 A JP2024511751 A JP 2024511751A JP 2023556927 A JP2023556927 A JP 2023556927A JP 2023556927 A JP2023556927 A JP 2023556927A JP 2024511751 A JP2024511751 A JP 2024511751A
- Authority
- JP
- Japan
- Prior art keywords
- pim
- kernel
- module
- instructions
- processing
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 123
- 238000000034 method Methods 0.000 title claims description 38
- 230000015654 memory Effects 0.000 claims description 68
- 230000008569 process Effects 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 9
- 238000010586 diagram Methods 0.000 abstract description 8
- 230000008901 benefit Effects 0.000 description 8
- 238000013507 mapping Methods 0.000 description 8
- 239000004744 fabric Substances 0.000 description 7
- 238000004891 communication Methods 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000001427 coherent effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Software Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
Abstract
処理システム(100)は、処理モジュール(104、106)及びメモリデバイス(112)を含む。メモリデバイスは、処理モジュールの代わりに処理動作を実行するプロセッシングインメモリ(PIM)モジュール(120)を含む。PIMモジュールの命令セットアーキテクチャ(ISA)は、処理モジュールのISAよりも少ない命令を有する。処理モジュールから受信された命令は、PIMモジュールの処理リソースが仮想化されるように変換される。結果として、PIMモジュールは、処理モジュールの複数のスレッド又はアプリケーションに対する処理動作を同時に実行する。【選択図】図2
Description
処理システムは、多くの場合、プロセッサ(例えば、中央処理ユニット(CPU)又はグラフィックス処理ユニット(GPU))によって比較的迅速にアクセスされ得るローカルメモリリソースと、アクセスするのに比較的長い時間を要する外部メモリリソースと、を含む。場合によっては、外部メモリリソースは、プロセッサとは異なるチップ上に配置される。しかしながら、場合によっては、より長いアクセス時間に起因して、外部メモリリソースに記憶されたデータを伴う命令は、処理するのに望ましくないほど長い時間を要する。加えて、場合によっては、外部メモリリソースとプロセッサとの間のデータ通信は、望ましくない量の相互接続容量を消費する。場合によっては、外部メモリリソースへのアクセス数を低減するために、プロセッサにデータをもたらすのではなく、外部メモリリソースにおいてデータを処理するために、プロセッシングインメモリ(PIM)回路が使用される。PIM回路は、より一般的なプロセッサの電力消費又は面積使用なしに、外部メモリリソースに記憶されたデータに対して制限された処理アプリケーションを実行する。結果として、場合によっては、プロセッサと外部メモリリソースとの間の通信の数が低減され、外部メモリリソースに記憶されたデータを伴ういくつかの命令の処理時間が低減される。しかしながら、この制限されたアーキテクチャのために、複数のカーネルを同時に処理するためにハードウェア並列性を利用することが困難である。例えば、仮想化の欠如に起因して、PIM回路は、一度に1つのカーネルのコマンドのみをロードし、場合によっては、データ依存性に起因してシリアル化ボトルネック(serialization bottleneck)を生成する。
1つの一般的な態様では、メモリデバイスは、処理ユニットで実行されるプログラムの代わりにデータを記憶するように構成された複数の記憶デバイスを含み、処理ユニットはメモリデバイスの外部にあり、プロセッシングインメモリ(PIM)モジュールは、処理ユニットからのプログラムに対応するカーネル命令に応じてPIMコマンドを処理するように構成されており、PIMコマンドを含み、PIMモジュールによって実装される命令セットアーキテクチャ(ISA)は、処理ユニットによって実装されるISAよりも少ない命令を有し、PIMモジュールの処理リソースは、PIMモジュールが複数のPIMカーネルからのPIMコマンドを同時に処理するように仮想化されるように構成されている。
別の一般的な態様によれば、方法は、プロセッシングインメモリ(PIM)演算論理ユニット(ALU)において、処理ユニットから、PIM ALUによって同時に処理される複数のカーネルのためのカーネル命令を受信することを含み、PIM ALUによって実装される命令セットアーキテクチャ(ISA)は、処理ユニットによって実装されるISAよりも少ない命令を有する。本方法は、PIMコマンド記憶(PCS)モジュールからカーネル命令に対応するPIM ALUコマンドを取り出すことを更に含み、少なくとも1つのPIM命令は、少なくとも2つのカーネルに対応する。また、本方法は、PIM ALUを含むメモリのレジスタバンクにカーネルのうち少なくとも2つのためのデータを記憶することを含む、PIM ALUコマンドを実行することを含む。
更に別の一般的な態様によれば、システムは、複数のプログラムを実行するように構成された処理ユニットを含む。システムは、処理ユニットからカーネル命令を受信するように構成されたメモリデバイスを更に含み、カーネル命令は、メモリデバイスのプロセッシングインメモリ(PIM)モジュールに、複数のPIMカーネルに対するPIMコマンドを同時に処理させ、PIMコマンドを同時に処理することは、仮想レジスタバンクとして動作するように構成されたメモリデバイスの複数の記憶デバイスにPIMカーネルの少なくともいくつかに対するデータを記憶することを含み、PIMコマンドを含み、PIMモジュールによって実装される命令セットアーキテクチャ(ISA)は、処理ユニットによって実装されるISAよりも少ない命令を有する。
本開示は、添付の図面を参照することによってより良好に理解され、その多くの特徴及び利点が当業者に明らかになる。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
処理システムは、処理ユニットと、処理ユニットの外部のメモリデバイスと、を含む。メモリデバイスは、処理システムの代わりにデータを処理するプロセッシングインメモリ(PIM)モジュールを含む。PIMモジュールの命令セットアーキテクチャ(ISA)は、場合によっては、PIMコマンドが処理ユニットのISAの命令のサブセットであるように、処理ユニットのISAよりも小さい。例えば、場合によっては、PIMモジュールは、演算論理ユニット(ALU)である。結果として、GPU等の別のプロセッサに命令を送信するCPU等のプロセッサと比較して、更なる命令がPIMモジュールに送信される。いくつかの実施形態において、更なる命令は、実行されるPIMコマンドを示すカーネル命令として送信される。カーネル命令に応じて、PIMモジュールは、メモリデバイスに記憶されたデータを使用してPIMコマンドを処理する。
場合によっては、PIMモジュールは、複数のアプリケーションのPIMコマンド、又は、同じアプリケーションの異なるスレッドを同時に処理する。アドレス仮想化は、一般に、複数のアプリケーションが単一のアドレスを使用しようとすることによるエラーを防止し、アプリケーションが物理アドレスの使用により他のアプリケーションに関する情報を受信することによる潜在的なセキュリティ問題を低減するために使用される。しかしながら、アドレス仮想化は、処理ユニットと比較してPIMモジュールが比較的単純であるために、いくつかのPIMモジュールでは困難である。結果として、これらのPIMモジュールは、リソース(例えば、PIMモジュール及びレジスタファイル等の関連する記憶デバイス)へのアクセスをシリアルに与える。いくつかの実施形態では、インスタントメモリデバイスは、PIMモジュールの代わりに仮想-物理レジスタマッピングを実行し、メモリデバイスにおけるレジスタアドレス仮想化を可能にし、PIMモジュールが複数のカーネルを同時に処理することを可能にするPIMカーネルスケジューラを更に含む。
PIMコマンドは、PIMコマンド記憶(PCS)モジュールに記憶される。しかしながら、いくつかの実施形態では、PCSモジュール内の記憶空間が制限されている。結果として、場合によっては、PIMカーネルスケジューラは、複数の命令セットが同じ動作を要求するか否かを識別するために、着信カーネル命令を更に分析する。同じ動作が要求されていることを検出したことに応じて、PIMカーネルスケジューラは、カーネル命令を組み合わせ、PCSモジュールに単一のPIMコマンドのみを記憶させる。結果として、PCSモジュールによるリソース利用が増加する。更に、いくつかの実施形態では、複数のカーネルの命令が同時にPCSモジュールに記憶されるように、PCSアドレスが仮想化される。したがって、場合によっては、同じ動作が複数のカーネルによって要求されていることを検出したことに応じて、PIMカーネルスケジューラは、複数のカーネルからのカーネル命令を組み合わせる。
本明細書で使用される場合、「同時に処理する」とは、別のアプリケーション又はカーネルの一部の開始後であるが完了前に、アプリケーション又はカーネルの少なくとも一部を実行することを指す。例えば、第2のカーネルの一部が第1のカーネルの第1の部分に続いて実行されるが、第1のカーネルの第2の部分の前に実行されるように、2つのカーネルの一部がインターリーブ方式で実行される場合、第1のカーネル及び第2のカーネルは「同時に処理される」と考えられる。別の例として、第1のカーネルの一部がパイプラインの第1の部分にあり、第2のカーネルの一部がパイプラインの第2の部分にあるパイプライン化されたプロセッサは、2つのカーネルを「同時に処理」していると考えられる。2つのアプリケーション又はカーネルは、「同時に処理される」と考えられるために、全く同じハードウェアデバイスによって全くの同時に処理される必要はない。
本明細書で説明される技術は、異なる実施形態では、様々な並列プロセッサ(例えば、ベクトルプロセッサ、グラフィックス処理ユニット(graphics processing unit、GPU)、汎用GPU(general-purpose GPU、GPGPU)、非スカラプロセッサ、高並列プロセッサ、人工知能(artificial intelligence、AI)プロセッサ、推論エンジン、機械学習プロセッサ、他のマルチスレッド処理ユニット等)の何れかを使用して用いられる。説明を容易にするために、本明細書では、処理モジュールが用いられる例示的なシステム及び方法を参照する。しかしながら、本明細書で説明するシステム及び技術は、別段の記載がない限り、他のタイプの並列プロセッサの使用にも等しく適用されることが理解されよう。
図1は、少なくともいくつかの実施形態による、PIMモジュールにおいてアプリケーションを同時に処理する処理システム100を示している。処理システム100は、処理モジュール104~106、1つ以上のメモリコントローラ108、及び、1つ以上のI/Oハブ110等の複数の処理モジュールを含む、処理システム100の様々なコンポーネントを相互接続するために使用されるデータファブリック102を含む。各メモリコントローラ108自体は、システムメモリ112に結合され、各I/Oハブ110は、I/Oデバイス114、115等の1つ以上のI/Oデバイスに結合されている。少なくとも1つのシステムメモリ112は、PIMモジュール120を含む。
処理モジュール104~106は、1つ以上のプロセッサコア及びローカルキャッシュ階層を含む。プロセッサコアは、例えば、CPUコア、GPUコア、DSPコア、並列プロセッサコア、又は、それらの組み合わせを含む。処理クライアントのローカルキャッシュ階層は、1つ以上のレベルのキャッシュを含む。いくつかの実施形態では、処理モジュール104~106のうち少なくとも1つは、処理モジュール104~106のうち少なくとも1つの他の処理モジュールと異なる(すなわち、処理モジュール104~106は異種である)。他の実施形態では、処理モジュール104~106は同種である。場合によっては、図2を参照して以下で更に説明するように、処理モジュール104~106のうち1つ以上は、処理モジュール104~106の代わりにタスクを実行する1つ以上のコプロセッサを含む。
メモリコントローラ108は、対応するシステムメモリ112と処理システム100の他のコンポーネントとの間のインターフェースとして動作する。したがって、処理クライアントのローカルキャッシュ階層にキャッシュされるデータは、通常、「キャッシュライン」と称されるデータのブロックとして操作され、システムメモリ112の物理アドレスを使用してメモリ階層にアドレス指定されるか、又は、別様に配置される。キャッシュラインは、処理クライアントからのアクセス要求に応じて、メモリコントローラ108によってシステムメモリ112からアクセスされ、キャッシュラインは、処理クライアントの1つ以上のキャッシュにインストール又はキャッシュされる。同様に、変更されたデータを含むキャッシュラインが処理クライアントのローカルキャッシュ階層から追い出され(エビクトされ)、したがってシステムメモリ112内で更新される必要がある場合、メモリコントローラ108は、このライトバックプロセスを管理する。更に、図2~図5を参照して以下で説明するように、場合によっては、PIMモジュール120は、処理モジュール104~106のうち1つ以上に代わってデータを処理する。いくつかの実施形態において、処理システム100は、複数のシステムメモリ112を含む。加えて、いくつかの実施形態において、システムメモリ112は、複数のPIMモジュール120を含む。
I/Oデバイス114、115は、DMAアクセス動作を使用して処理システム100との間でデータを転送するように動作する。例えば、I/Oデバイス114、115のうち何れかは、データを受信及び送信するためにノードをネットワークに接続するためのネットワークインターフェースカード(network interface card、NIC)、又は、処理モジュール104~106によって使用される比較的大量のデータの不揮発性記憶のためのハードディスクドライブ(hard disk drive、HDD)若しくは他の大容量記憶デバイス等を含むことができる。少なくとも1つの実施形態では、I/Oハブ110は、I/Oデバイス114、115を管理し、データファブリック102とI/Oデバイス114、115との間のインターフェースとして機能する。例示するために、いくつかの実施形態では、I/Oハブ110は、I/Oデバイス114、115とデータファブリック102との間のPCIeインターコネクトとして動作するように、ペリフェラルコンポーネントインターコネクトエクスプレス(Peripheral Component Interconnect Express、PCIe)ルートコンプレックスを含む。
一般的な動作概要として、データファブリック102は、処理システム100の他のコンポーネント間で、及び、処理システム100と他のノード141との間で、コマンド、データ、要求、ステータス通信及び他のシグナリングをトランスポートする。これらのトランスポート動作の1つのそのようなサブセットは、処理モジュール104~106のうち1つ以上による使用のためにシステムメモリ112においてI/Oデバイス114、115によって提供されるデータの記憶である。図2~図5に関して更に説明するように、場合によっては、システムメモリ112に記憶されたデータは、データファブリック102を介して処理モジュール104~16のうち1つ以上から送信されたカーネル命令に応じて、PIMモジュール120を使用して処理される。I/Oエージェント140は、I/Oハブ110及びI/Oデバイス114、115のためのコヒーレントエージェントとして動作する。更に、いくつかの実施形態では、トランスポート層130は、1つ以上のブリッジコンポーネント又はコヒーレントエージェント(図示せず)を介して、1つ以上の他のノード141の対応するトランスポート層又は処理モジュール104~16に結合される。様々な実施形態では、データファブリック102は、HyperTransport(商標)仕様又はInfinity Fabric(商標)仕様等の1つ以上の標準化された相互接続仕様と互換性がある。
図2は、いくつかの実施形態による、処理システム100のPIMアーキテクチャ200のブロック図である。他の実施形態では、PIMアーキテクチャ200は、処理システム100に対して更なるコンポーネント又はより少ないコンポーネントを含む異なる処理システムに対応する。図示した実施形態では、PIMアーキテクチャは、少なくとも処理モジュール104及びシステムメモリ112を含む。処理モジュール104は、共同処理モジュール202を含む。システムメモリ112は、メモリモジュール210を含む。メモリモジュール210は、PCSモジュール212、PIMカーネルスケジューラ214、記憶デバイス216、ストレージマップ218、及び、PIMモジュール120を含む。図示した実施形態は、コンポーネントの特定の構成を示すが、様々な実施形態では、コンポーネントの他の組み合わせが考えられる。例えば、いくつかの実施形態において、システムメモリ112は、単一のメモリモジュール210のみを含む。別の例として、いくつかの実施形態では、処理モジュール104は、共同処理モジュール202を含まない。更に、いくつかの実施形態では、バッファ又はデータファブリック102等の更なるコンポーネントが考えられるが、説明を容易にするために示されていない。
処理モジュール104は、様々なプログラムを実行する。これらのプログラムのうち少なくともいくつかのためのデータは、システムメモリ112に(例えば、記憶デバイス216に)記憶される。場合によっては、処理モジュール104とシステムメモリ112との間でデータ要求及び応答を繰り返し送信するのではなく、システムメモリ112において(例えば、PIMモジュール120のうち1つ以上を使用して)少なくともいくつかの処理機能を実行する決定が行われる。したがって、処理モジュール104、又は、場合によって共同処理モジュール202は、カーネル命令204をシステムメモリ112に送信する。図示した実施形態では、カーネル命令204は、複数のアプリケーション、単一のアプリケーション内の異なるスレッド、又は、その両方に対応し、システムメモリ112内の個別のPIMカーネルとして実行される。いくつかの実施形態において、処理モジュール104は、いくつかのカーネル命令(例えば、PIMモジュール120のISAの一部ではないカーネル命令、又は、PIMモジュール120が実行する帯域幅を有さないカーネル命令)を更に実行する。
図示した実施形態では、カーネル命令204は、1つ以上のコマンドインデックス206及び1つ以上のバンクローカルアドレス208を含む。コマンドインデックス206は、PIMモジュール(例えば、PIMモジュール120-1)によって実行されるPIMコマンドを示す。場合によっては、コマンドインデックス206は、それぞれの命令識別子を介して実行されるそれぞれのPIMコマンドを示す。更に、図3を参照して以下で説明するように、場合によっては、コマンドインデックス206の少なくともいくつかは、PIMコマンドを実行することの一部として使用されるシステムメモリ112内(例えば、記憶デバイス216-2内)のレジスタを示す仮想レジスタアドレスを含む。バンクローカルアドレス208は、PIMコマンドがメモリ動作(例えば、ロード動作)を実行する場合にアクセスする、システムメモリ112の記憶デバイス(例えば、記憶デバイス216-1)内の1つ以上のメモリアドレスを示す。いくつかの実施形態では、バンクローカルアドレス208は、フルメモリアドレスである。他の実施形態では、バンクローカルアドレス208は、システムメモリ112によって(例えば、メモリアレイのベースアドレスをデータ要素のインデックスに追加することによって)変更又は生成される。PIMモジュール120は、例えば、処理モジュール104~106と比較して、より小さいISA及びより少ないハードウェアリソースを有するので、いくつかの実施形態では、個別のカーネル命令204が各PIMコマンドに対して送信される(例えば、1つのカーネル命令がロード動作を実行するために送信され、第2のカーネル命令が加算動作を実行するために送信される)。いくつかの実施形態では、1つのアプリケーション又は複数のアプリケーションのためのカーネル命令204の複数のセット(例えば、5つのカーネル命令又は50のカーネル命令)が一緒に送信され、場合によっては、複数のPIMコマンドが、PIMモジュール120のうち1つ以上による処理のために、PCSモジュール212のそれぞれのエントリに記憶される。しかしながら、いくつかの実施形態では、処理リソース(例えば、PCSモジュール212内の記憶空間)が制限され、したがって、カーネル命令204のより小さいグループが送信される。加えて、上述したように、場合によっては、いくつかのカーネル命令が処理モジュール104で実行される。更に、場合によっては、少なくともいくつかのPIMコマンドは、類似の動作を実行するために処理モジュール104で実行される対応する命令とは異なる。結果として、場合によっては、コマンドインデックス206は、処理モジュール104において、対応するPIMコマンドに変換される。他の実施形態では、PIMカーネルスケジューラ214は、カーネル命令204によって示されるコマンドを対応するPIMコマンドに変換する。
システムメモリ112は、1つ以上のメモリモジュール210を含む。様々な実施形態において、メモリモジュール210は、同じアプリケーション又は異なるアプリケーションのための動作を実行する。いくつかの実施形態において、メモリモジュール210は、ダイナミックランダムアクセスメモリ(DRAM)デバイスである。しかしながら、他の実施形態では、メモリモジュール210は、他のタイプのメモリデバイス(例えば、スタティックランダムアクセスメモリ(SRAM)デバイス、シンクロナスDRAM(SDRAM)メモリデバイス、フラッシュメモリデバイス等)である。いくつかの実施形態において、メモリモジュール210は、同じタイプのメモリデバイスである。他の実施形態では、メモリモジュール210は、異なるメモリデバイスである。いくつかの実施形態では、メモリモジュール210のうち1つ以上は、より少ない又は更なるコンポーネントを含む。例えば、いくつかの実施形態において、PIMカーネルスケジューラ214-1は、メモリモジュール210-1及び210-2の両方に対応し、メモリモジュール210-2は、PIMカーネルスケジューラ214-2を含まない。いくつかの実施形態において、メモリモジュール210は、記憶デバイス216においてレジスタバンクとして編成された(例えば、物理的に編成された、又は、仮想的に編成された)それぞれのレジスタを含む。他の実施形態では、レジスタは、メモリモジュール210のうち1つ以上に関連付けられた1つ以上の個別のデバイスの一部である。
PCSモジュール212は、PIMコマンドを記憶し、実行のためにPIMコマンドを1つ以上のPIMモジュール120に送信する。図4の例で更に説明するように、いくつかの実施形態では、PCSモジュール212のうち1つ以上が仮想化される。例えば、場合によっては、PCSモジュール212-2は、PIMモジュール120-2によって実行されるPIMコマンドのシーケンスを記憶し、PIMコマンドは、複数のそれぞれのアプリケーションに対応する複数のPIMカーネルの一部である。
PIMカーネルスケジューラ214は、1つ以上のPCSモジュール212の仮想化を管理する。例えば、上述したように、コマンドインデックス206は、実行されるそれぞれのPIMコマンドを示す。いくつかの実施形態において、PIMカーネルスケジューラ214-2は、PCSモジュール212-2を投入(ポピュレート)し、PIMモジュール120-2にアドレス指定されたコマンドインデックス206をPCSモジュール212-2内の位置に変換し、それぞれの位置は、対応するPIMコマンドを記憶する。加えて、いくつかの実施形態では、PIMカーネルスケジューラ214のうち1つ以上は、ストレージマップ218-2、PIMコマンドによって使用されるデータが記憶される(例えば、記憶デバイス216-2の)物理レジスタを示す仮想-物理マッピングテーブルを維持し、投入する。いくつかの実施形態において、ストレージマップ218のうち1つ以上は、それぞれのPIMモジュール120に物理的に近い(例えば、同じチップ上の)記憶デバイスに記憶される。いくつかの実施形態では、ストレージマップ218のうち1つ以上は、メモリモジュール210とは別であるが、1つ以上のメモリモジュール210に関連付けられる。
いくつかの実施形態では、PCSモジュール212を投入する間のPCSリソース使用量を低減するために、PIMカーネルスケジューラ214は、少なくとも2つのPIMカーネルに対応する少なくとも2つのカーネル命令204の部分を組み合わせる。例えば、図4を参照して以下で更に説明するように、2つのカーネル命令がPIMモジュール120-1から「LOAD R0←[ADDR]」を要求する場合、PIMカーネルスケジューラ214-1は、PCSモジュール212-1に「LOAD R0←[ADDR]」の単一の指標のみを投入し、したがって、PCSモジュール212-1の記憶空間を節約し、PCSモジュール212-1がプログラムされる回数を低減する。加えて、いくつかの実施形態では、PCSモジュール212、PIMカーネルスケジューラ214、又は、両方のうち1つ以上は、複数のPIMモジュール120間で共有される。したがって、いくつかの実施形態では、PIMカーネルスケジューラは、PIMモジュール120-1及び120-2の各々が、異なるPIMカーネルに対して「LOAD R0←[ADDR]」を実行することを検出し、「LOAD R0←[ADDR]」の単一の指標のみをPCSモジュール212-1に記憶する。
様々な実施形態において、PIMカーネルスケジューラ214は、PIMモジュール120においてスケジューリングするPIMカーネルの組み合わせを更に決定し、場合によっては、少なくともいくつかのPIMコマンドの実行を遅延させる。これらの組み合わせは、PIMカーネル間のそれぞれのカーネル命令の共通性、PIMカーネルのそれぞれの優先順位、PIMカーネルの予想されるリソース使用量(例えば、PIMモジュール使用量、メモリ帯域幅使用量、通信帯域幅等)、(例えば、処理モジュール104から受信した依存性グラフに示される)PIMカーネルの依存性等の様々な要因を示す組み合わせメトリックに基づいて決定される。いくつかの実施形態では、組み合わせは、処理モジュール104によって(例えば、コンパイラから)示される。他の実施形態では、組み合わせは、PIMカーネルの依存性グラフを受信すること等によって、実行時にPIMカーネルスケジューラ214によって決定される。また、PIMコマンドの順序は、PIMカーネル間のそれぞれのカーネル命令の共通性、PIMカーネルのそれぞれの優先順位、PIMカーネルの予想されるリソース使用量、PIMカーネルの依存性(例えば、処理モジュール104から受信された依存性グラフに示される)、又は、対応するカーネル命令が受信された時間等の様々な要因に基づいて決定される。
PIMモジュール120は、PCSモジュール212からPIMコマンドを受信し、場合によっては記憶デバイス216及び記憶デバイス216のレジスタに記憶されたデータを使用して、それらのPIMコマンドを処理する。いくつかの実施形態において、PIMモジュール120のうち1つ以上は、演算論理ユニット(ALU)である。加えて、いくつかの実施形態では、記憶デバイス216は、PIMモジュール120のための物理レジスタバンク又は仮想レジスタバンクとして編成されたレジスタファイルである。場合によっては、レジスタバンクの少なくともいくつかのレジスタが第1のカーネルに割り当てられ、レジスタバンクの少なくともいくつかのレジスタが第2のカーネルに割り当てられる。(例えば、カーネル命令204を介した)処理モジュール104からの要求に応じて、PIMモジュール120は、データを処理モジュール104に返す。したがって、メモリモジュール210の処理リソースは、場合によっては、PIMモジュール120が複数のPIMカーネルを同時に処理するように仮想化される。
いくつかの実施形態では、1つ以上のストレージマップ218及び1つ以上のストレージマップ218に対応するPIMカーネルスケジューラ214の一部は、処理モジュール104上のスクラッチパッドに記憶される。結果として、これらの実施形態では、カーネル命令204がシステムメモリ112に送信される前に、バンクローカルアドレス208上で変換が行われる。
図3は、少なくともいくつかの実施形態による、例示的な300仮想-物理カーネルレジスタマッピング310を示している。上述したように、いくつかの実施形態では、仮想-物理カーネルレジスタマッピング310は、図2のPIMカーネルスケジューラ214-1等のPIMカーネルスケジューラ214によって実行される。図示した例300では、カーネル1仮想レジスタマップ302及びカーネル2仮想レジスタマップ304は、PIMカーネルスケジューラ214において受信される。カーネル1仮想レジスタマップ302の命令によって示されるレジスタは、R0、R1、R2である。PIMカーネルスケジューラ214は、受信された仮想レジスタアドレスを物理レジスタアドレス[0]、[2]、[7]にそれぞれ変換し、レジスタアドレスは、記憶デバイス216-1のレジスタ等のように、PIMカーネルスケジューラ214に関連付けられた記憶デバイス内のアドレスに対応する。同様に、カーネル2仮想レジスタマップ304の命令によって示されるレジスタは、R0、R1、R2、R3である。PIMカーネルスケジューラは、これらの受信された仮想レジスタアドレスを物理レジスタアドレス[3]、[4]、[8]、[9]にそれぞれ変換する。したがって、PIMモジュールは、仮想インデックスを示すカーネル命令を処理することができる。加えて、場合によっては、少なくともいくつかのレジスタが第1のカーネルに割り当てられ、少なくともいくつかのレジスタが第2のカーネルに割り当てられる。
図4は、少なくともいくつかの実施形態による、カーネル命令マージ及びマッピング420の例400を示している。上述したように、いくつかの実施形態では、マージ及びマッピング420は、図2のPIMカーネルスケジューラ214-2等のPIMカーネルスケジューラによって実行される。図示した例400では、カーネル1命令402及びカーネル2命令404の各々は、それぞれのインデックスに対応する。PCSモジュール212-2等のPCSモジュールに記憶する前に、命令がマージされて、PCSモジュール内のストレージ利用率を低減する。したがって、カーネル1命令402及びカーネル2命令404の両方の「LOAD R0←[ADDR]」は、カーネル1命令インデックス406及びカーネル2命令インデックス408内の物理インデックス0にマージされる。加えて、PIMカーネルスケジューラは、命令の順序を決定し、PCSマージされたカーネルコンテンツ410をもたらす。結果として、カーネル1命令402及びカーネル2命令404は、示された順序でPIMモジュール120-2等のPIMモジュールによって同時に処理される。個々のPIMカーネルのためのバンクローカルアドレスは、ホスト命令によって生成され、それぞれのPCSモジュールインデックスとともに送信されるので、場合によっては、同じPCSモジュールエントリが複数のカーネルによって使用されても、異なる物理レジスタが使用される。したがって、PIMモジュールは、複数のカーネルに対するカーネル命令を同時に処理することができ、PCSモジュールのリソース消費が低減される。
図5は、いくつかの実施形態による、PIM同時処理システムを使用して複数のカーネルのためのカーネル命令を同時に処理する方法500を示すフロー図である。いくつかの実施形態では、方法500は、コンピュータ可読記憶媒体によって記憶された1つ以上の命令に応じて、1つ以上のプロセッサによって開始される。
ブロック502において、PIM ALUによって同時に処理される複数のカーネルのためのカーネル命令が受信される。例えば、PIMモジュール120-1によって処理される複数のカーネルに対応するカーネル命令204は、処理モジュール104から受信され、PIMモジュール120-1によって実装されるISAは、処理モジュール104によって実装されるISAよりも少ない命令を有する。ブロック504において、カーネル命令によって示されるコマンドの仮想レジスタアドレスが、物理レジスタアドレスに変換される。例えば、PIMカーネルスケジューラ214-1は、カーネル命令204によって示される仮想レジスタアドレスを、記憶デバイス216-1のレジスタの物理レジスタアドレスに変換する。
ブロック506において、カーネル命令によって示されるPIMコマンドの少なくともいくつかがマージされる。例えば、PIMカーネルスケジューラ214-1は、カーネル命令204によって示されるPIMコマンドを分析し、組み合わせメトリックに基づいて少なくともいくつかのPIMコマンドをマージする。ブロック508において、変換されマージされたコマンドがPCSモジュールに記憶される。例えば、変換されマージされたコマンドは、PCSモジュール212-1に記憶される。ブロック510において、少なくとも1つのマージされたコマンドが取り出され、実行される。例えば、少なくとも2つのPIMカーネルに対応する少なくとも1つのPIMコマンドが、PCSモジュール212-1から取り出され、実行のためにPIMモジュール120-1に送信される。したがって、複数のカーネルに対するカーネル命令を同時に処理する方法が示される。
いくつかの実施形態では、コンピュータ可読記憶媒体は、コンピュータシステムに命令及び/又はデータを提供するために使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。かかる記憶媒体には、限定されるものではないが、光学媒体(例えば、コンパクトディスク(compact disc、CD)、デジタル多用途ディスク(digital versatile disc、DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、又は、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)又はキャッシュ)、不揮発性メモリ(例えば、読み取り専用メモリ(Read-Only Memory、ROM)若しくはフラッシュメモリ)、又は、マイクロ電気機械システム(Microelectromechanical System、MEMS)系記憶媒体が挙げられ得る。いくつかの実施形態では、コンピュータ可読記憶媒体は、コンピュータシステムに組み込まれる(例えば、システムRAM又はROM)、コンピュータシステムに取り付け固定される(例えば、磁気ハードドライブ)、コンピュータシステムに取り外し可能に取り付けられる(例えば、光ディスク又はユニバーサルシリアルバス(Universal Serial Bus、USB)ベースのフラッシュメモリ)、又は、有線若しくは無線ネットワークを介してコンピュータシステム(例えば、ネットワークアクセス可能ストレージ(network accessible storage、NAS))に結合される。
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装される。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されるか、別の方法で明確に具体化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、命令及び特定のデータを含んでもよく、当該命令及び特定のデータは、1つ以上のプロセッサによって実行されると、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する。非一時的なコンピュータ可読記憶媒体は、例えば、磁気又は光ディスク記憶デバイス、フラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス(単数又は複数)等を含み得る。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され若しくは別の方法で実行可能な他の命令形式で実装可能である。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
本開示内では、場合によっては、異なるエンティティ(これらは、「コンポーネント」、「ユニット」、「デバイス」等と様々に称される)が1つ以上のタスク又は動作を実行するように「構成されている」と説明又は特許請求される。この明確な語句[1つ以上のタスクを実行する]ように構成されるエンティティは、本明細書では構造(すなわち、電子回路等の物理的なもの)を指すために使用される。より具体的には、この明確な語句は、この構造が動作中に1つ以上のタスクを実行するようになっていることを示すために使用される。構造は、構造が現在動作されていなくても、何らかのタスクを実行するように「~するように構成されている」と言うことができる。「データを記憶するように構成されたメモリデバイス」は、例えば、対象の集積回路が現在使用されていなくても(例えば、電源がそれに接続されない)、動作中にデータを記憶する回路を有する集積回路を包含するように意図される。したがって、いくつかのタスクを実行するように「~するように構成されている」と説明又は列挙されるエンティティは、デバイス、回路、タスクを実施するために実行可能なプログラム命令を記憶するメモリ等の物理的な何かを指す。この句は、無形の何かを指すために本明細書では使用されない。更に、「~するように構成されている」という用語は、「ように構成可能である」ことを意味することを意図しない。例えば、プログラムされていないフィールドプログラマブルゲートアレイは、何らかの特定の機能を果たすように「~するように構成されている」とは見なされないが、プログラミング後にその機能を果たす「~するように構成可能である」となり得る。加えて、構造が1つ以上のタスクを実行する「~するように構成されている」と添付の特許請求の範囲に記載することは、ミーンズプラスファンクション要素を有すると解釈されることを明確に意図していない。
Claims (16)
- メモリデバイスであって、
処理ユニットで実行するプログラムの代わりにデータを記憶するように構成された複数の記憶デバイスであって、前記処理ユニットは前記メモリデバイスの外部にある、複数の記憶デバイスと、
前記処理ユニットからの前記プログラムに対応するカーネル命令に応じてプロセッシングインメモリ(PIM)コマンドを処理するように構成されたPIMモジュールであって、前記PIMコマンドを含み、前記PIMモジュールによって実装される命令セットアーキテクチャ(ISA)は、前記処理ユニットによって実装されるISAよりも少ない命令を有し、前記PIMモジュールの処理リソースは、前記PIMモジュールが複数のPIMカーネルからのPIMコマンドを同時に処理するように仮想化されるように構成されている、PIMモジュールと、を備える、
メモリデバイス。 - 前記PIMコマンドを記憶し、前記PIMコマンドを前記PIMモジュールに提供するように構成されたPIMコマンド記憶(PCS)モジュールであって、前記PIMモジュールの処理リソースは前記PCSモジュールを含む、PCSモジュールを更に備える、
請求項1のメモリデバイス。 - 少なくとも2つのPIMカーネルに対応する少なくとも2つのカーネル命令の一部を組み合わせ、前記PCSモジュールにおいて前記少なくとも2つのカーネル命令に対応する単一のPIMコマンドを記憶するように構成されたPIMカーネルスケジューラを更に備える、
請求項2のメモリデバイス。 - 前記PIMカーネルスケジューラは、組み合わせメトリックに基づいて前記少なくとも2つのカーネル命令を組み合わせるように構成されている、
請求項3のメモリデバイス。 - 前記組み合わせメトリックは、前記PIMモジュールでの実行を待っているPIMカーネル間のそれぞれのカーネル命令の共通性、対応するPIMカーネルのリソース使用量に基づいて予想されるカーネル命令の重み付けされた組み合わせ、又は、前記処理ユニットから受信された前記PIMカーネルの依存性グラフのうち少なくとも1つに基づいている、
請求項4のメモリデバイス。 - 前記複数の記憶デバイスは、レジスタバンクとして構成されたレジスタファイルを更に備え、
前記PIMカーネルスケジューラは、前記カーネル命令によって示された仮想レジスタアドレスを前記レジスタファイルの物理レジスタアドレスに変換するように構成されている、
請求項3のメモリデバイス。 - 前記複数の記憶デバイスは、レジスタバンクとして構成されたレジスタファイルを更に備え、
前記PIMモジュールの処理リソースは、前記レジスタファイルを含み、前記レジスタファイルの少なくともいくつかのレジスタ、前記少なくとも2つのPIMカーネルのうち第1のPIMカーネルに割り当てられるように構成されており、前記レジスタファイルの少なくともいくつかのレジスタは、前記少なくとも2つのPIMカーネルのうち第2のPIMカーネルに割り当てられる、
請求項3のメモリデバイス。 - 前記PIMカーネルスケジューラは、前記処理ユニットからの前記カーネル命令に基づいて、前記PIMモジュールで実行するための前記PIMコマンドをスケジューリングするように構成されている、
請求項3のメモリデバイス。 - 方法であって、
プロセッシングインメモリ(PIM)演算論理ユニット(ALU)において、処理ユニットから、前記PIM ALUによって同時に処理される複数のカーネルのためのカーネル命令を受信することであって、前記PIM ALUによって実装される命令セットアーキテクチャ(ISA)は、前記処理ユニットによって実装されるISAよりも少ない命令を有する、ことと、
PIMコマンド記憶(PCS)モジュールから前記カーネル命令に対応するPIM ALUコマンドを取り出すことであって、少なくとも1つのPIM命令は、少なくとも2つのカーネルに対応する、ことと、
前記カーネルのうち少なくとも2つのためのデータを、前記PIM ALUを含むメモリのレジスタバンクに記憶することを含む前記PIM ALUコマンドを実行することと、を含む、
方法。 - 前記カーネル命令は、それぞれのPIM ALUコマンド及び少なくとも1つのそれぞれのバンクローカルアドレスを示すそれぞれのコマンドインデックスを含む、
請求項9の方法。 - 前記PCSモジュールから前記PIM ALUコマンドを取り出す前に、前記カーネル命令によって示される前記PIM ALUコマンドのうち少なくとも2つが同じ動作を要求することを検出したことに応じて、前記少なくとも2つのPIM ALUコマンドの指標を前記PCSモジュールの単一のエントリに記憶することを更に含む、
請求項9の方法。 - 前記PIM ALUコマンドを取り出すことは、対応するPIMカーネルの依存性に基づいて、前記PIM ALUコマンドのうち少なくとも1つの実行を遅延させることを含む、
請求項9の方法。 - システムであって、
複数のプログラムを実行するように構成された処理ユニットと、
前記処理ユニットからカーネル命令を受信するように構成されたメモリデバイスであって、前記カーネル命令は、前記メモリデバイスのプロセッシングインメモリ(PIM)モジュールに、複数のPIMカーネルのためのPIMコマンドを同時に処理させ、PIMコマンドを同時に処理することは、仮想レジスタバンクとして動作するように構成された前記メモリデバイスの複数の記憶デバイスに前記PIMカーネルの少なくともいくつかのためのデータを記憶することを含み、前記PIMコマンドを含み、前記PIMモジュールによって実装される命令セットアーキテクチャ(ISA)は、前記処理ユニットによって実装されるISAよりも少ない命令を有する、メモリデバイスと、を備える、
システム。 - 前記メモリデバイスは、前記PIMコマンドを記憶し、前記PIMコマンドを前記PIMモジュールに提供するように構成されたPIMコマンド記憶(PCS)モジュールを備え、
前記処理ユニットは、アプリケーションアドレスをPCSアドレスに変換し、前記カーネル命令の一部として前記PCSアドレスを送信するPIMカーネルスケジューラの一部を備える、
請求項13のシステム。 - 前記メモリデバイスは、第2の複数のPIMカーネルのための第2のPIMコマンドを同時に処理するように構成された第2のPIMモジュールを備える、
請求項13のシステム。 - 前記処理ユニットは、前記カーネル命令を前記メモリデバイスに送信するように構成されたコプロセッサを備える、
請求項13のシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/217,792 US11468001B1 (en) | 2021-03-30 | 2021-03-30 | Processing-in-memory concurrent processing system and method |
US17/217,792 | 2021-03-30 | ||
PCT/US2022/022357 WO2022212383A1 (en) | 2021-03-30 | 2022-03-29 | Processing-in-memory concurrent processing system and method |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024511751A true JP2024511751A (ja) | 2024-03-15 |
Family
ID=83449773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023556927A Pending JP2024511751A (ja) | 2021-03-30 | 2022-03-29 | プロセッシングインメモリ同時処理システム及び方法 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11468001B1 (ja) |
EP (1) | EP4315041A1 (ja) |
JP (1) | JP2024511751A (ja) |
KR (1) | KR20240004361A (ja) |
CN (1) | CN117377943A (ja) |
WO (1) | WO2022212383A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11468001B1 (en) * | 2021-03-30 | 2022-10-11 | Advanced Micro Devices, Inc. | Processing-in-memory concurrent processing system and method |
US11977782B2 (en) * | 2022-06-30 | 2024-05-07 | Advanced Micro Devices, Inc. | Approach for enabling concurrent execution of host memory commands and near-memory processing commands |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10558490B2 (en) * | 2012-03-30 | 2020-02-11 | Intel Corporation | Mechanism for issuing requests to an accelerator from multiple threads |
US10346195B2 (en) * | 2012-12-29 | 2019-07-09 | Intel Corporation | Apparatus and method for invocation of a multi threaded accelerator |
US20150106574A1 (en) * | 2013-10-15 | 2015-04-16 | Advanced Micro Devices, Inc. | Performing Processing Operations for Memory Circuits using a Hierarchical Arrangement of Processing Circuits |
WO2016126474A1 (en) | 2015-02-06 | 2016-08-11 | Micron Technology, Inc. | Apparatuses and methods for parallel writing to multiple memory device locations |
US10048888B2 (en) * | 2016-02-10 | 2018-08-14 | Micron Technology, Inc. | Apparatuses and methods for partitioned parallel data movement |
KR101847262B1 (ko) * | 2016-03-18 | 2018-05-28 | 연세대학교 산학협력단 | 하드웨어 가속기를 포함하는 메인 메모리 및 메인 메모리의 동작 방법 |
US10453502B2 (en) | 2016-04-04 | 2019-10-22 | Micron Technology, Inc. | Memory bank power coordination including concurrently performing a memory operation in a selected number of memory regions |
US10282308B2 (en) * | 2016-06-23 | 2019-05-07 | Advanced Micro Devices, Inc. | Method and apparatus for reducing TLB shootdown overheads in accelerator-based systems |
US10802883B2 (en) * | 2018-08-21 | 2020-10-13 | Intel Corporation | Method, system, and device for near-memory processing with cores of a plurality of sizes |
US10483978B1 (en) * | 2018-10-16 | 2019-11-19 | Micron Technology, Inc. | Memory device processing |
CN111679785A (zh) | 2019-03-11 | 2020-09-18 | 三星电子株式会社 | 用于处理操作的存储器装置及其操作方法、数据处理系统 |
KR20200129843A (ko) | 2019-05-10 | 2020-11-18 | 에스케이하이닉스 주식회사 | 연산 회로를 포함하는 메모리 장치, 이를 제어하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
US20220206869A1 (en) * | 2020-12-28 | 2022-06-30 | Advanced Micro Devices, Inc. | Virtualizing resources of a memory-based execution device |
KR20220107617A (ko) * | 2021-01-25 | 2022-08-02 | 에스케이하이닉스 주식회사 | 인메모리 프로세싱을 수행하는 병렬 처리 시스템 |
US11468001B1 (en) * | 2021-03-30 | 2022-10-11 | Advanced Micro Devices, Inc. | Processing-in-memory concurrent processing system and method |
-
2021
- 2021-03-30 US US17/217,792 patent/US11468001B1/en active Active
-
2022
- 2022-03-29 JP JP2023556927A patent/JP2024511751A/ja active Pending
- 2022-03-29 CN CN202280025112.5A patent/CN117377943A/zh active Pending
- 2022-03-29 EP EP22782028.9A patent/EP4315041A1/en active Pending
- 2022-03-29 WO PCT/US2022/022357 patent/WO2022212383A1/en active Application Filing
- 2022-03-29 KR KR1020237036802A patent/KR20240004361A/ko unknown
- 2022-09-13 US US17/943,527 patent/US11868306B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11468001B1 (en) | 2022-10-11 |
US20230099163A1 (en) | 2023-03-30 |
EP4315041A1 (en) | 2024-02-07 |
US20220318012A1 (en) | 2022-10-06 |
CN117377943A (zh) | 2024-01-09 |
US11868306B2 (en) | 2024-01-09 |
WO2022212383A1 (en) | 2022-10-06 |
KR20240004361A (ko) | 2024-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10860326B2 (en) | Multi-threaded instruction buffer design | |
TWI620128B (zh) | 在中央處理單元與圖形處理單元間分享資源之裝置與系統 | |
US11892949B2 (en) | Reducing cache transfer overhead in a system | |
TW201734758A (zh) | 使用硬體佇列裝置的多核心通訊加速 | |
US11868306B2 (en) | Processing-in-memory concurrent processing system and method | |
US10216413B2 (en) | Migration of peer-mapped memory pages | |
JP2014075147A (ja) | システム管理モードのためのプロセッサにおける状態記憶の提供 | |
JP4931828B2 (ja) | ライン・アクセスおよびワード・アクセスの結合を用いてメモリをアクセスするためのシステムおよび方法 | |
US9727465B2 (en) | Self-disabling working set cache | |
WO2017172240A1 (en) | Processors, methods, systems, and instructions to fetch data to indicated cache level with guaranteed completion | |
CN108733585B (zh) | 缓存系统及相关方法 | |
US20180336034A1 (en) | Near memory computing architecture | |
US8862786B2 (en) | Program execution with improved power efficiency | |
US9330024B1 (en) | Processing device and method thereof | |
US20120110594A1 (en) | Load balancing when assigning operations in a processor | |
US9305036B2 (en) | Data set management using transient data structures | |
US10051087B2 (en) | Dynamic cache-efficient event suppression for network function virtualization | |
Ma et al. | The performance improvements of highly-concurrent grid-based server |