IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

特表2024-500779アドレスマッピング認識型タスク処理機構
<>
  • 特表-アドレスマッピング認識型タスク処理機構 図1
  • 特表-アドレスマッピング認識型タスク処理機構 図2A
  • 特表-アドレスマッピング認識型タスク処理機構 図2B
  • 特表-アドレスマッピング認識型タスク処理機構 図3A
  • 特表-アドレスマッピング認識型タスク処理機構 図3B
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-10
(54)【発明の名称】アドレスマッピング認識型タスク処理機構
(51)【国際特許分類】
   G06F 9/50 20060101AFI20231227BHJP
   G06F 12/00 20060101ALI20231227BHJP
【FI】
G06F9/50 150D
G06F12/00 560F
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023537089
(86)(22)【出願日】2021-12-07
(85)【翻訳文提出日】2023-07-31
(86)【国際出願番号】 US2021062216
(87)【国際公開番号】W WO2022146628
(87)【国際公開日】2022-07-07
(31)【優先権主張番号】17/135,381
(32)【優先日】2020-12-28
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ジョナサン オルソップ
(72)【発明者】
【氏名】シャイジーン アガ
(72)【発明者】
【氏名】ヌワン ジャヤセーナ
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160MM20
(57)【要約】
アドレスマッピング認識型タスク処理(AMAT)機構は、計算タスクデータを管理し、計算タスクデータを作成したスレッドの代わりに計算タスクを発行する。AMAT機構は、ホストスレッドによって生成された計算タスクデータをパーティションのセットに記憶し、各パーティションは、特定のメモリモジュールに対して指定される。AMAT機構は、アドレス情報をパーティションにマッピングするアドレスマッピングデータを維持する。スレッドは、スレッド自体の計算タスクを生成して発行する代わりに、計算タスクデータをAMAT機構にプッシュする。AMAT機構は、計算タスクデータ及びアドレスマッピングデータに含まれるアドレス情報を使用して、計算タスクデータを記憶するパーティションを決定する。次に、AMAT機構は、パーティションに記憶された計算タスクデータに基づいて、対応するメモリモジュールの近くで(すなわち、PIM実行ユニット又はNUMA計算ノードにおいて)実行される計算タスクを発行する。
【選択図】図1
【特許請求の範囲】
【請求項1】
マイクロプロセッサであって、
タスク処理機構を備え、
前記タスク処理機構は、
第1の計算タスクデータを受信することと、
前記第1の計算タスクデータを第1のメモリロケーションに記憶すること、又は、前記第1のメモリロケーションの指標を返すことのうち1つ以上を実行することと、
記憶された前記第1の計算タスクデータに基づいて第1の計算タスクを生成し、前記第1の計算タスクをメモリシステムに発行させることと、
を行うように構成されている、
マイクロプロセッサ。
【請求項2】
前記タスク処理機構は、前記第1の計算タスクデータに対応する第1のメモリ素子を、前記第1のメモリ素子を含む複数のメモリ素子のリソース使用量に基づいて決定するように構成されている、
請求項1のマイクロプロセッサ。
【請求項3】
前記タスク処理機構は、
前記第1の計算タスクデータ内のアドレス情報を処理して処理結果を生成することと、
前記処理結果を使用して、前記第1の計算タスクデータに対応する第1のメモリ素子を決定することと、
を行うように構成されている、
請求項1のマイクロプロセッサ。
【請求項4】
前記タスク処理機構は、前記第1の計算タスクデータに基づいて、前記第1の計算タスクデータに対応する第1のメモリ素子を、
前記第1の計算タスクデータ内のアドレス情報の少なくとも一部にマスクを適用すること、又は、
ハッシュ関数を使用して、前記第1の計算タスクデータ内のアドレス情報の少なくとも一部を処理すること、
のうち1つ以上によって決定するように構成されている、
請求項1のマイクロプロセッサ。
【請求項5】
前記タスク処理機構は、
前記第1の計算タスクデータとは異なる第2の計算タスクデータを受信することと、
前記第2の計算タスクデータを前記第1のメモリロケーション又は第2のメモリロケーションのうち1つ以上に記憶することであって、前記第1のメモリロケーション及び前記第2のメモリロケーションの両方は同じメモリ素子内にある、ことと、
記憶された前記第2の計算タスクデータに基づいて第2の計算タスクを生成し、前記第2の計算タスクを前記メモリシステムに発行させることと、
を行うように構成されている、
請求項1のマイクロプロセッサ。
【請求項6】
前記第1の計算タスクデータは、第1のスレッドから受信され、前記第2の計算タスクデータは、前記第1のスレッドとは異なる第2のスレッドから受信される、
請求項5のマイクロプロセッサ。
【請求項7】
前記タスク処理機構は、
前記第1の計算タスクデータとは異なる第2の計算タスクデータを受信することと、
前記第2の計算タスクデータを、前記第1のメモリロケーションとは異なるメモリ素子内にある第2のメモリロケーションに記憶することと、
記憶された前記第2の計算タスクデータに基づいて第2の計算タスクを生成し、前記第2の計算タスクを前記メモリシステムに発行させることと、
を行うように構成されている、
請求項1のマイクロプロセッサ。
【請求項8】
前記第2の計算タスクは、前記第1の計算タスクと並行して前記メモリシステムに発行される、
請求項7のマイクロプロセッサ。
【請求項9】
前記第1の計算タスクは、PIM対応メモリ素子に対するPIMコマンドであり、
前記第1の計算タスクを前記メモリシステムに発行させることは、前記PIMコマンドをPIM対応メモリ素子に発行させることを含む、
請求項1のマイクロプロセッサ。
【請求項10】
コンピュータ実行方法であって、
マイクロプロセッサ内のタスク処理機構が、
第1の計算タスクデータを受信することと、
前記第1の計算タスクデータを第1のメモリロケーションに記憶すること、又は、前記第1のメモリロケーションの指標を返すことのうち1つ以上を実行することと、
記憶された前記第1の計算タスクデータに基づいて第1の計算タスクを生成し、前記第1の計算タスクをメモリシステムに発行させることと、を含む、
コンピュータ実行方法。
【請求項11】
前記タスク処理機構が、前記第1の計算タスクデータに対応する第1のメモリ素子を、前記第1のメモリ素子を含む複数のメモリ素子のリソース使用量に基づいて決定することを含む、
請求項10のコンピュータ実行方法。
【請求項12】
前記タスク処理機構が、前記第1の計算タスクデータ内のアドレス情報を処理して処理結果を生成することと、
前記タスク処理機構が、前記処理結果を使用して、前記第1の計算タスクデータに対応する第1のメモリ素子を決定することと、を含む、
請求項10のコンピュータ実行方法。
【請求項13】
前記タスク処理機構が、前記第1の計算タスクデータに基づいて、前記第1の計算タスクデータに対応する第1のメモリ素子を、
前記第1の計算タスクデータ内のアドレス情報の少なくとも一部にマスクを適用すること、又は、
ハッシュ関数を使用して、前記第1の計算タスクデータ内のアドレス情報の少なくとも一部を処理すること、
のうち1つ以上によって決定することを含む、
請求項10のコンピュータ実行方法。
【請求項14】
前記タスク処理機構が、前記第1の計算タスクデータとは異なる第2の計算タスクデータを受信することと、
前記タスク処理機構が、前記第2の計算タスクデータを前記第1のメモリロケーション又は第2のメモリロケーションのうち1つ以上に記憶することであって、前記第1のメモリロケーション及び前記第2のメモリロケーションの両方は同じメモリ素子内にある、ことと、
前記タスク処理機構が、記憶された前記第2の計算タスクデータに基づいて第2の計算タスクを生成し、前記第2の計算タスクを前記メモリシステムに発行させることと、を含む、
請求項10のコンピュータ実行方法。
【請求項15】
前記第1の計算タスクデータは、第1のスレッドから受信され、前記第2の計算タスクデータは、前記第1のスレッドとは異なる第2のスレッドから受信される、
請求項14のコンピュータ実行方法。
【請求項16】
前記タスク処理機構が、前記第1の計算タスクデータとは異なる第2の計算タスクデータを受信することと、
前記タスク処理機構が、前記第2の計算タスクデータを、前記第1のメモリロケーションとは異なるメモリ素子内にある第2のメモリロケーションに記憶することと、
前記タスク処理機構が、記憶された前記第2の計算タスクデータに基づいて第2の計算タスクを生成し、前記第2の計算タスクを前記メモリシステムに発行させることと、を含む、
請求項10のコンピュータ実行方法。
【請求項17】
前記第2の計算タスクは、前記第1の計算タスクと並行して前記メモリシステムに発行される、
請求項16のコンピュータ実行方法。
【請求項18】
前記第1の計算タスクは、PIM対応メモリ素子に対するPIMコマンドであり、
前記第1の計算タスクを前記メモリシステムに発行させることは、前記PIMコマンドをPIM対応メモリ素子に発行させることを含む、
請求項10のコンピュータ実行方法。
【請求項19】
システムであって、
複数のメモリ素子を含むメモリシステムと、
タスク処理機構を含むマイクロプロセッサと、を備え、
前記タスク処理機構は、
第1の計算タスクデータを受信することと、
前記第1の計算タスクデータを第1のメモリロケーションに記憶すること、又は、前記第1のメモリロケーションのアドレスを返すことのうち1つ以上を実行することと、
記憶された前記第1の計算タスクデータに基づいて第1の計算タスクを生成し、前記第1の計算タスクをメモリシステムに発行させることと、
を行うように構成されている、
システム。
【請求項20】
前記第1の計算タスクは、PIM対応メモリ素子に対するPIMコマンドであり、
前記第1の計算タスクを前記メモリシステムに発行させることは、前記PIMコマンドをPIM対応メモリ素子に発行させることを含む、
請求項19のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
このセクションに記載されているアプローチは、遂行され得るアプローチであるが、必ずしも以前に着想又は遂行されたアプローチではない。したがって、別段の指示がない限り、このセクションに記載されたアプローチの何れも、単にこのセクションに含まれることによって、従来技術として適格であると仮定すべきではない。更に、このセクションに記載されたアプローチの何れも、単にこのセクションに含まれることによって、よく理解されている、日常的である又は従来的であると仮定すべきではない。
【0002】
計算スループットは、メモリ帯域幅よりも速くスケーリングするので、増大する計算容量にデータを供給し続けるために様々な技術が開発されてきた。プロセッシングインメモリ(Processing In Memory、PIM)は、タスクがメモリモジュール内で直接処理できるように、メモリモジュール内に処理能力を組み込む。ダイナミックランダムアクセスメモリ(Dynamic Random-Access Memory、DRAM)のコンテキストでは、例示的なPIM構成は、ベクトル計算素子及びローカルレジスタを含む。これは、メモリコントローラが、メモリモジュールインターフェースにわたるデータ移動を必要とせずに、複数のメモリモジュールにわたる計算を並行してトリガすることを可能にし、これにより、特に、データ制限された作業負荷について、性能を大幅に改善することができる。
【0003】
PIMを効果的に使用するためには、ハードウェアの詳細、具体的には、メモリアドレスからメモリモジュールへのマッピングを認識してソフトウェアを開発する必要がある。これが必要なのは、単一バンクローカルPIM実行ユニット内のメモリデータの複数の素子に対して動作するために、例えば、アレイ内の素子の低減を実行するために、ターゲットオペランドの全てのメモリアドレスが同じ物理メモリバンクにマッピングされなければならないからである。また、同じバンク及びPIMレジスタを使用する個別のホストスレッドからのPIMコマンドは、PIM実行ユニットによって同時に処理することができない。なぜなら、そうすることにより、いわゆる「PIM衝突」が引き起こされ、中間データが破損する場合があるからである。したがって、ソフトウェアは、同じバンク及びPIMレジスタをターゲットとする異なるコアからの複数のPIMコマンドが同時に発行されることを防止しなければならず、これにより、PIMが提供する帯域幅の利点が低減される。
【0004】
PIMがなくても、メモリモジュールマッピングに対するメモリアドレスのソフトウェア認識は、不均等メモリアクセス(Non-Uniform Memory Access、NUMA)システムにおける並列アプリケーションの効率的な実行に有益である。システムが複数の計算モジュール及びメモリモジュールを含むようにスケーリングするにつれて、計算モジュールの、それがアクセスするメモリモジュールに対する相対位置は、性能に著しく影響を及ぼす場合がある。マッピング情報のソフトウェア認識(software awareness)は、このシナリオではアプリケーションの正確さのために必要でない場合があるが、計算タスクが、これらがアクセスするメモリモジュールの近くの計算モジュール上でスケジュールされる場合、性能を大幅に改善することができる。
【0005】
ソフトウェアがメモリアドレスからメモリモジュールへのマッピングを認識することを要求することは、複数の理由から望ましくない。マッピング関数は、異なるアーキテクチャに対して異なることが多く、コードのポータブル性を低下させる。また、マッピング関数は、同じアーキテクチャ上であっても、異なる実施形態ごとに異なる場合があり、これは、任意のマッピング認識型ソフトウェアに追加の複雑さを加えることになる。例えば、マッピング関数を動的にプログラムして、異なる作業負荷に対してデータインターリーブ戦略を最適化してもよい。更に、ハードウェアレベルのメモリアドレスマッピングをユーザソフトウェアに公開することは、悪意のあるソフトウェアが利用できるセキュリティの脆弱性をもたらす可能性がある。最後に、多くのソフトウェア開発者は、ソフトウェアを開発するときにハードウェアの基礎となる詳細を考慮することは望ましくないと感じており、これは生産性に悪影響を及ぼす。
【0006】
これらの問題に対処するための既存のアプローチは、パーティション化されたグローバルアドレス空間、分散されたタスク待ち行列構造、ファーストタッチページ割り当て、及び、ページ移動を使用することを含む。これらの機構は、主に、高い規則性を有するパターン、又は、粗い、すなわち、ページレベルの粒度でのデータマッピングを共有するために設計される。これらは、頻繁な動的アドレス変換及びきめの細かいアドレスストライドパターンの考慮を必要とし得るきめの細かい構成可能なマッピング戦略及び不規則なアクセスパターンに関する上記の問題に十分に対処していない。規則的なコードパターンの場合、アクセスパターン及び依存性が静的に知られており、基礎となるハードウェアのデータマッピングのためにスケジュールを最適化できる場合、場合によっては、正確且つ効率的なタスクスケジューリングを自動化することが可能であり得る。しかしながら、これは、不規則性又は任意の種類のランタイムデータ依存性を示すアルゴリズムでは不可能である。したがって、メモリアドレスからメモリモジュールへのマッピングの認識を必要とせず、不規則なデータアクセスパターンを伴うアプリケーションにおいて効果的な方法で、PIM対応システム又はNUMAシステムを使用するための解決策が必要である。
【0007】
実施形態は、添付の図面の図において、限定としてではなく例として示され、同様の符号は同様の素子を指す。
【図面の簡単な説明】
【0008】
図1】マイクロプロセッサ構成を示すブロック図である。
図2A】計算タスクデータをタスク処理機構にプッシュするスレッドを示すフロー図である。
図2B】計算タスクを生成して発行するタスク処理機構を示すフロー図である。
図3A】マルチスレッド環境においてPIMコマンドを管理するための従来のベースラインタスク処理アプローチを示すブロック図である。
図3B】タスク処理機構を使用してマルチスレッド環境においてPIMコマンドを管理することを示すブロック図である。
【発明を実施するための形態】
【0009】
以下の説明では、説明の目的のために、実施形態の十分な理解を提供するために、多くの具体的な詳細が記載される。しかしながら、これらの特定の詳細なしで実施形態を実施し得ることは当業者には明らかであろう。他の例では、実施形態を不必要に不明瞭にすることを避けるために、周知の構造及びデバイスがブロック図で示されている。
I.概要
II.アーキテクチャ
III.タスク処理機構を使用した計算タスクデータの管理
【0010】
I.概要
アドレスマッピング認識型タスク処理(Address Mapping-Aware Tasking、AMAT)機構は、計算タスク及びタスクデータを編成し、計算タスク実行の正しい/効率的な配置を容易にすることによって、マルチスレッド環境においてPIM対応システム又はNUMAシステムを使用することに関連する問題に対する技術的解決策を提供する。本明細書で使用される場合、「計算タスク」という用語は、単一のロケーションで、すなわち、単一のPIMモジュール又はNUMA計算ノードで一緒に実行される1つ以上のPIM命令又は非PIM命令を指す。「計算タスクデータ」という用語は、このような計算タスクの1つ以上の入力パラメータを指定するデータを指し、例えば、実行される1つ以上の演算、1つ以上のアドレス又はインデックス値、1つ以上のデータ値、依存情報、優先度情報等を含み得る。
【0011】
AMAT機構は、ホストスレッドによって生成された計算タスクデータをメモリ内の論理パーティションのセットに記憶し、各パーティションは、特定のメモリモジュール又はメモリサブモジュールに対して指定される。AMAT機構は、アドレス情報をパーティションにマッピングするアドレスマッピングデータを維持して、計算タスクデータが特定のパーティションに記憶されることを可能にする。計算タスクのデータのために選択されるパーティションは、計算タスクデータ自体に含まれるアドレス情報、例えば、入力インデックスパラメータに従ってタスクによって処理されるデータを含むメモリモジュールに対応するAMATパーティションに基づいてもよく、又は、例えば、計算タスクデータにタスクがアクセスする全てのデータが含まれる場合に計算モジュール及びメモリモジュール間の負荷不均衡を低減するために、何れのパーティションの占有が最も少ないかに基づいてもよい。
【0012】
演算中、スレッドは、計算タスクが実行される前に、計算タスクデータをAMAT機構にプッシュする。AMAT機構は、本明細書に記載されるようにタスクのパーティションを決定し、計算タスクデータをそのパーティションに記憶する。AMATパーティションに記憶された後、各パーティション内の計算タスクは、次いで、計算タスクデータを含むメモリモジュールの近くで実行されるように独立して処理することができる。
【0013】
PIM対応システムの場合、AMAT機構は、PIMタスクの処理中にアクセスされるデータの全てが同じメモリ素子に位置されることを保証する。また、AMAT機構は、異なるスレッドからのPIMコマンドが同じPIM対応メモリ素子に同時に発行できないことを保証し、したがって、PIM衝突を回避する。NUMAシステムの場合、AMAT機構は、計算タスクの処理中にアクセスされるデータのいくつか又は全てが、そのタスクを実行する計算モジュールに近いメモリ素子にマッピングされることを保証する。また、AMAT機構は、同時に実行されるタスクが異なるメモリ素子内のデータにアクセスすることを保証し、競合及び不均衡を低減する。PIM対応ユースケースでは、異なるPIM実行ユニットへのPIMコマンドが同時に発行されることを可能にすることによって、スループット及び並列性が改善される。この性能上の利点は、まばらなメモリアクセス又は不規則なメモリアクセス及びデータの最小限の再利用を伴う機械学習等のように、メモリ帯域幅に敏感なアプリケーションにおいて特に重要である。これらの利点の全ては、アドレスマッピングがAMAT機構によって処理されるので、メモリアドレスが特定のメモリ素子又はPIM実行ユニットにどのようにマッピングされるかをスレッドが認識する必要なく、AMAT機構によって実現される。実施形態は、説明の目的のために、PIM対応メモリコンテキストにおいて以下で説明されるが、実施形態は、このコンテキストに限定されず、NUMAシステム等の他のコンテキストに適用可能である。
【0014】
II.アーキテクチャ
図1は、マイクロプロセッサ構成100を示すブロック図である。マイクロプロセッサ構成100は、マイクロプロセッサ110及びメモリモジュール120を含む。マイクロプロセッサ構成100は、図示されていないか又は説明のために本明細書に記載されていない追加の素子を含んでもよい。
【0015】
メモリモジュール120は、任意のタイプのコンピュータメモリによって実装されてもよく、実施形態は、任意の特定のタイプのメモリに限定されない。一実施形態によれば、メモリモジュール120は、N個のPIM対応メモリ素子を含み、各PIM対応メモリ素子は、1つ以上のバンクと、PIMコマンドを実行するように構成された対応するPIM実行ユニットと、を含むが、実施形態は、ダイナミックランダムアクセスメモリ(DRAM)又はバンクの形態のメモリ素子に限定されない。各PIM実行ユニットは、演算論理ユニット(Arithmetic Logic Unit、ALU)、軽量中央処理ユニット(Central Processing Unit、CPU)、グラフィックス処理ユニット(Graphics Processing Unit、GPU)、マイクロコントローラ等の処理論理回路と、1つ以上のレジスタ等のローカルストレージと、を含む。
【0016】
マイクロプロセッサ110は、任意のタイプのCPU、GPU、マイクロコントローラ又は論理回路であってもよい。マイクロプロセッサ110は、特定の実施形態に応じて、単一のコア又は複数のコアを有してもよく、実施形態は、任意の特定の数のコア又は特定のタイプのコアを有するマイクロプロセッサに限定されない。1つのマイクロプロセッサのみが示されているが、実施形態は、分散同期のためのよく研究された先行技術を使用して、各々が1つ以上のスレッドを有する複数のマイクロプロセッサにわたって分散されてもよい。マイクロプロセッサ110は、スレッド130及びタスク処理機構140を含む。スレッド130は、マイクロプロセッサスレッドであり、任意の数のスレッド及び任意のタイプのスレッドを含んでもよい。図1に示す例では、スレッドは、説明のためにT1~T4で識別される4つのスレッドを含む。マイクロプロセッサ110は、1つ以上のメモリコントローラ、キャッシュ、バス、インターフェース等のように、図示されず、説明のために本明細書に記載されない他の素子を含んでもよい。マイクロプロセッサ110及びメモリモジュール120は、例えば、1つ以上のコマンドバス及びデータバスを介して通信可能に結合される。
【0017】
タスク処理機構140は、計算タスクデータを管理し、同時計算タスクの正確且つ効率的な実行を容易にする。タスク処理機構140は、パーティション142、アドレスマッピングデータ144、管理データ146、及び、タスク処理マネージャ148を含む。タスク処理機構140は、コンピュータハードウェア、コンピュータソフトウェア、又は、コンピュータハードウェアとソフトウェアとの任意の組み合わせによって実装されてもよく、特定の実施形態に応じて変化し得る追加の構成要素及びデータを含んでもよい。
【0018】
パーティション142は、計算タスクデータの概念的な分割を表し、各パーティションに含まれるデータは、メモリモジュール120内の対応するメモリ素子に物理的に位置される。したがって、PIM対応メモリのコンテキストでは、N個のパーティションの各々は、特定のPIM対応メモリモジュール及び対応するPIM実行ユニットのための計算タスクデータを含む。パーティション142は、1つ以上のレジスタ、1つ以上のキャッシュ又はスクラッチパッド、メインメモリの一部分、PIMローカルレジスタ等のように、計算タスクデータを記憶することができる任意のタイプのメモリに実装され得る。パーティション142は、説明のためにマイクロプロセッサ110上に位置するものとして図1に示されているが、実施形態は、この例に限定されず、パーティション142は、特定の実施形態に応じて、マイクロプロセッサ110内、メモリモジュール120内、又は、他の場所に位置し得る。パーティション142のサイズは、例えば、計算タスクデータのサイズ及び特定の実施形態に必要とされるパーティション入力の最大数に基づいて指定され得る。パーティション142を記憶するために指定されたメモリの部分は、メモリの連続部分であっても不連続部分であってもよく、パーティションごとに異なっていてもよい。例えば、いくつかのパーティションは、メモリの連続部分に実装されてもよく、他のパーティションは、メモリの不連続部分に実装されてもよい。パーティション142のアドレス範囲及び他のデータは、以下でより詳細に説明するように、管理データ146に記憶されてもよい。
【0019】
アドレスマッピングデータ144は、スレッド130から受信した計算タスクデータを何れのパーティション142に記憶するかを決定するために、タスク処理マネージャ148によって使用されるデータである。アドレスマッピングデータ144は、メモリアドレス情報をパーティション及び/又はメモリ素子にマッピングして、特定のパーティション及び/又はメモリ素子が所定のメモリアドレス情報から決定されることを可能にする。一実施形態によれば、アドレスマッピングデータ144は、メモリアドレス情報をパーティション識別データ(Identification Data、ID)及びメモリ素子IDにマッピングする。以下でより詳細に説明するように、タスク処理マネージャ148は、計算タスクデータを適切なパーティションに記憶し、次いで、計算タスクデータを使用して計算タスクを発行する。所定の計算タスクのためのパーティションIDは、アドレスマッピングデータによって指定される、計算タスクデータ内のアドレスビットのサブセットのいくつかの関数によって決定され得る。アドレスマッピングデータ144は、1つ以上のレジスタを含む専用メモリロケーション、メインメモリの領域等のように、タスク処理機構140がアクセス可能な任意のロケーションに記憶され得る。いくつかの実施形態では、ユーザレベルコードは、アドレスマッピングデータ144に直接アクセスすること、又は、アドレスマッピングデータ144を操作することを防止してもよく、その結果、ユーザソフトウェアは、基礎となるアドレスマッピングの詳細を直接推測することができず、パーティショニングは、ユーザソフトウェアに対して完全にトランスペアレントに行うことができる。
【0020】
タスク処理マネージャ148は、パーティション142に記憶された計算タスクデータを管理し、これは、パーティション142に計算タスクデータを記憶することと、パーティション142に記憶された計算タスクデータを使用して計算タスクを発行することと、を含む。一実施形態によれば、タスク処理マネージャ148は、計算タスクデータをタスク処理機構140に、より具体的にはパーティション142のうち何れかに記憶する機能を提供する、本明細書では「プッシュ」とも呼ばれるマイクロプロセッサプリミティブ、命令、又は、メモリマップドターゲットアドレスによって実装される。また、タスク処理機構140に、パーティション142に記憶された計算タスクデータに基づいて次の計算タスクを実行させるためのプリミティブ又は命令も提供され、これは、以下では「ポップ」とも呼ばれる。別の実施形態では、ハードウェアプリミティブは、計算タスクデータアドレスをパーティションIDに変換する命令であり、これは、計算タスクデータを計算タスクデータソフトウェア構造の適切なパーティションにプッシュするためにスレッドを使用することができる。別の実施形態では、ハードウェアプリミティブは、アドレスマッピングデータ(例えば、何れのアドレスビットがパーティションIDを指定するかを示すビットマスク)を抽出するためのインターフェース(例えば、メモリマップドアドレス又はレジスタ)を単に表し、アドレスマッピングデータは、次いで、スレッドによって使用されて、計算タスクデータアドレスからパーティションIDを生成し、計算タスクデータをソフトウェアにおける正しいパーティションにプッシュすることができる。
【0021】
管理データ146は、タスク処理マネージャ148がパーティション142を管理するために使用するデータである。これは、例えば、パーティション142の各々について、パーティションのアドレス範囲、次の計算タスクデータがパーティションに記憶される次のプッシュアドレス、及び、次の計算タスクデータがパーティションから取り出され、計算タスクを発行するために使用される次のポップアドレスを含んでもよい。管理データ146は、特定の実施形態に応じて、他のデータ(例えば、次のプッシュ/次のポップアドレスの代わりに、リンクされたリスト又はグラフ内の1つ以上のヘッド/テール/ルート/リーフノードのアドレス)を含んでもよい。
【0022】
III.タスク処理機構を使用した計算タスクデータの管理
図2A及び図2Bは、それぞれ、タスク処理機構を使用して計算タスクデータを管理することを示すフロー図200、250である。図2Aのフロー図200は、説明のために計算タスクデータをタスク処理機構140にプッシュする単一スレッドを示すが、任意の数のスレッドからの計算タスクデータを処理することに適用可能である。
【0023】
ステップ202では、スレッドは、計算タスクデータを生成する。これは、スレッド実行中の任意の時間に行ってもよい。例えば、データに対して演算を実行している間、スレッドは、特定のメモリアドレスに記憶されたデータに対して実行される1つ以上の次の演算を決定し、演算、メモリアドレス及び値を指定する計算タスクデータを生成する。1つの非限定的な例の演算は、特定のメモリアドレスに記憶されたデータに対して実行される加算、減算等の算術演算である。スレッドは、計算タスクデータを、例えば、1つ以上のレジスタ、キャッシュ、メインメモリ等に記憶してもよい。
【0024】
ステップ204では、計算タスクデータを生成したスレッドは、プッシュプリミティブ又は命令を呼び出して、スレッドが生成した計算タスクデータをタスク処理機構140にプッシする、より具体的には、計算タスクデータをパーティション142のうち何れかに記憶させる。スレッドは、プリミティブ又は命令を呼び出す場合の引数として、計算タスクデータ内のアドレス情報、又は、ターゲット仮想アドレスを計算タスクデータに提供し得る。スレッドは、スレッドが計算タスクデータを生成するとき又は後で、プッシュプリミティブ又は命令を呼び出してもよい。一実施形態によれば、スレッドは、通常行われるように計算タスクを発行する代わりに、プリミティブ又は命令を使用して、計算タスクデータをタスク処理機構140にプッシュする。
【0025】
ステップ206では、計算タスクデータ内のアドレス情報が処理されて、計算タスクデータを記憶するパーティション、すなわち、宛先パーティションが決定される。アドレス情報に基づいて宛先パーティションを決定するために、様々な技術が使用され得る。一実施形態によれば、アドレスマッピングデータ144によって供給されるビットマスクは、結果として得られるビットを生成するために、計算タスクデータ内のメモリアドレスビットに適用される。ビットマスクは、特定の実施形態及びアドレスマッピングパターンに応じて変化し得る任意の数のビットを含み得る。次に、結果として得られたビットを使用して、計算タスクデータが記憶されるパーティションを決定し、計算タスクデータは、基礎となるアドレスマッピング戦略において元のアドレスがマッピングされるメモリ素子に対応する。
【0026】
別の実施形態では、パーティションは、計算タスクと関連付けられたアドレス情報の代わりに又はこれと併せて、管理データに存在するリソース使用情報に基づいて選択される。例えば、計算タスクのために必要とされるデータが最小であるか、又はデータ局所性がシステムにおいてあまり重要でない場合、ターゲットパーティションを選択する場合に、利用可能なメモリ素子内の利用可能なメモリ空間の量、又は、各メモリ素子において保留中であるタスクの数を変化させることから生じる負荷不均衡も考慮することが好ましい場合がある。管理データ146から問い合わせることができるこのデータを考慮することは、異なるメモリ素子にわたる負荷不均衡又はメモリ空間不均衡を低減するのに役立つことができる。
【0027】
一実施形態によれば、例えば、ビットマスクを適用することによる、アドレス情報に基づくターゲットパーティションの決定は、指定されたアドレス情報の物理アドレスビットに基づいて行われる。いくつかの実施形態では、供給されたアドレス情報から物理アドレスを生成することは、計算及び/又は変換を必要とする。完全なアドレスではなく、基底アドレス及びインデックスオフセットがアドレス情報において供給されてもよく、ターゲットアドレスは、基底アドレス及びインデックスオフセットに基づいて計算される。この計算は、実行経路に沿ってソフトウェア又はハードウェアで実装されてもよい(関連データを既存の演算ユニットにルーティングするか、又は、この実行経路のためにこれらの演算ユニットの全て若しくは一部を複製する)。
【0028】
いくつかの実施形態では、アドレス情報は、仮想アドレス空間で指定され、仮想アドレス情報は、物理アドレス空間に変換される。しかしながら、いくつかの実施形態では、ターゲットパーティション計算のいくつか又は全ては、変換の前に実行され得る。ページベースの仮想アドレスから物理アドレスへの変換を有するシステムでは、ビットマスクの場合、仮想アドレスのページオフセット領域に入る任意のビットを変換なしに適用することができる。一実施形態によれば、変換を実行する前に、ターゲット仮想アドレスのページサイズが(ハードウェア又はソフトウェアにおいて)検査されて、これが全てのビットマスクビットを包含するかどうかを判定する(又は、これが事前に判定され得る場合、ターゲット仮想アドレスはレジスタに記憶されているか、又は、ハードワイヤードされている)。変換が必要でない場合、パーティション決定は、仮想アドレスに基づいて直ちに計算することができる。変換が必要な場合、仮想アドレスは、変換機構に送信されて、対応する物理アドレスが生成される。
【0029】
一実施形態によれば、メモリアドレスビット値は、メモリマッピングを決定するためのハッシュ値を生成するためにハッシュ関数を使用して処理される。ハッシュ関数は、任意のタイプのハッシュ関数であってもよく、実施形態は、任意の特定のタイプのハッシュ関数に限定されない。次に、ハッシュ値を使用して、対応するパーティション及びメモリ素子を決定する。この例では、アドレスマッピングデータ144は、ハッシュ値をパーティションID及びメモリ素子IDにマッピングする。
【0030】
ステップ206で宛先パーティションが決定された後、ステップ208では、次のプッシュアドレスが宛先パーティションにおいて決定される。次のプッシュアドレスは、計算タスクデータを記憶するためのパーティション内の次に利用可能なアドレスである。一実施形態によれば、宛先パーティションのパーティションIDは、管理データ146の次のプッシュアドレスをルックアップするために使用される。管理データ146は、パーティションIDを次のプッシュアドレスにマッピングするデータを含む。例えば、タスク処理マネージャ148は、宛先パーティションのパーティションID及び管理データ146を使用して、宛先パーティションの次のプッシュアドレスを決定する。一実施形態によれば、各パーティションの次のプッシュアドレスは、管理データ146の代わりにアドレスマッピングデータ144に維持される。パーティションの次のプッシュアドレスは、パーティションがメモリにどのように記憶されるかに応じて、最後の計算タスクデータがパーティションに記憶されたアドレスと連続していてもよいし、連続していなくてもよい。メモリ割り当てもまた必要な場合があり、プッシュプリミティブ又は命令は、計算タスクデータを適切なメモリ素子にマッピングするメモリ内の位置に記憶するために必要な任意の割り当て及びメモリストライドを処理する。一実施形態では、プッシュプリミティブは、ターゲットパーティションID及び計算タスクデータを入力として受け取り、必要に応じてターゲットパーティション内の計算タスクデータのための空間を割り当て(システムコールを開始し、次いで、基礎となるデータ構造のために必要に応じて任意のコピー又はポインタ更新を実行する)、次の呼出し側のための「次のプッシュ」情報を更新し(例えば、連続パーティション割り当ての場合、これは、「次のプッシュ」ポインタを計算タスクデータのサイズだけインクリメントすることを含むことができる)、割り当てられた空間にポインタを返すハードウェア機構として実装される。
【0031】
ステップ210では、計算タスクデータは、宛先パーティションに記憶される。例えば、タスク処理マネージャ148は、ステップ208で決定された宛先パーティションの次のプッシュアドレスに計算タスクデータを記憶する。これは、タスク処理マネージャ148が1つ以上の記憶コマンドを生成して発行することによって達成され得る。計算タスクデータ及びアドレスマッピングデータのサイズに応じて、これらが同じメモリ素子にマッピングすることを確実にするために、複数の記憶コマンドをメモリの非連続ストライドに発行する必要があり得る。タスク処理マネージャは、このストライドを処理し、また、次のプッシュアドレスをパーティション内の次の利用可能なメモリアドレスにインクリメントし、パーティションの次のプッシュアドレスがどこに記憶されているかに応じて、管理データ146又はアドレスマッピングデータ144の何れかを新しい次のプッシュアドレスで更新する。
【0032】
一実施形態によれば、計算タスクデータは、計算タスクデータがパーティションに記憶された時間に基づいてパーティション内に順序付けされる。順序は、時系列(先入れ先出し方式)、逆時系列(先入れ後出し方式)、指定又は推測された依存性に基づくツリー又はグラフ構造を介した部分的順序付け等であってもよい。したがって、複数のスレッドから受信した計算タスクデータは、計算タスクデータがスレッドの各々によってタスク処理機構140にいつプッシュされたかに基づいて、パーティション142に一緒に記憶される。
【0033】
一実施形態によれば、プッシュプリミティブ又はコマンドが呼び出された場合、計算タスクデータを宛先パーティションに記憶する代わりに、宛先パーティションのアドレスがスレッドに返される。次に、スレッド自体が、受信したアドレスを使用して計算タスクデータをパーティションに記憶する。例えば、スレッドT1が特定の計算タスクデータのためのプッシュプリミティブ又は命令を呼び出すと仮定する。宛先パーティションは、計算タスクデータに対応する宛先パーティション決定するために、計算タスクデータに含まれるアドレス情報に基づいて、例えば、上述したようなビットマスク又はハッシュ関数を使用して決定される。宛先パーティションの次のプッシュアドレス、例えば、宛先パーティションの次の計算タスクデータが記憶されるメモリアドレスは、管理データ146を使用して決定され、スレッドT1に返される。次に、スレッドT1は、特定のパーティションの次に利用可能なアドレスにおいて計算タスクデータを記憶するためのコマンドを発行する。
【0034】
一実施形態によれば、プッシュプリミティブ又はコマンドが呼び出された場合、計算タスクデータを宛先パーティションに記憶する代わりに、宛先パーティションの指標(例えば、数値識別子)がスレッドに返される。次に、スレッド自体が、計算タスクデータを識別されたパーティションに記憶する。いくつかのこのような実施形態では、各アプリケーションは、それ自体の仮想アドレス空間内の各パーティションのための次のプッシュアドレスのセットを維持し得る。例えば、スレッドT1が特定の計算タスクデータのためのプッシュプリミティブ又は命令を呼び出すと仮定する。宛先パーティションは、計算タスクデータに対応する宛先パーティション決定するために、計算タスクデータに含まれるアドレス情報に基づいて、例えば、上述したようなビットマスク又はハッシュ関数を使用して決定される。宛先パーティションの指示がスレッドT1に返され、次に、スレッドT1は、宛先パーティションのためにスレッドT1が維持する次のプッシュアドレス、例えば、宛先パーティションの次の計算タスクデータが記憶されるメモリアドレスを参照し、次に、特定のパーティションの次の利用可能なアドレスにおいて計算タスクデータを記憶するためのコマンドを発行する。ステップ202~210は、任意の数のスレッド及び任意の数のプッシュに対して繰り返され、これにより、計算タスクデータがPIM実行ユニットによって一緒にグループ化される。
【0035】
図2Bのフロー図250は、タスク処理機構140がパーティション142に記憶された計算タスクデータを使用して計算タスクをどのように生成して発行するかを示す。ステップ252では、スレッドは、ポッププリミティブ又は命令を呼び出して、タスク処理マネージャ148に、パーティションに記憶された計算タスクデータに基づいて計算タスクを生成して発行させる。ポッププリミティブ若しくは命令を呼び出すスレッドは、タスク処理マネージャ148を含むタスク処理機構140上で実行される管理スレッド若しくはバックグラウンドスレッド等の任意のスレッド、又は、スレッド130内のスレッドT1等の作業を実行するスレッドであってもよく、ポッププリミティブ又は命令を呼び出すスレッドは、計算タスクデータを生成したスレッドと同じ又は異なるスレッドであってもよい。ポッププリミティブ又は命令を呼び出すスレッドは、例えば、パーティションIDを指定することによって、計算タスクが発行されるソースパーティションを指定し得る。あるいは、ポッププリミティブ又は命令は、計算タスクを、計算タスクデータを含み、対応するコマンド実行ユニットが次の計算タスクを実行する準備ができている各パーティションから生成して発行させ得る。
【0036】
ステップ254では、タスク処理機構140は、ソースパーティション内の次のポップアドレスを決定する。例えば、タスク処理マネージャ148は、ポッププリミティブ又は命令が呼び出された場合に指定されたソースパーティションの次のポップアドレスを管理データ146内で調べる。また、最高優先順位の計算タスク又は発行される次の「準備完了」計算タスクを見つけるために、計算タスクデータを検査する等の追加のチェックを実行してもよい。
【0037】
ステップ256では、計算タスクデータがソースパーティションから取り出される。例えば、タスク処理マネージャ148は、ステップ254で決定された次のポップアドレスから計算タスクデータをロードする。一実施形態によれば、タスク処理マネージャ148は、ソースパーティションに対するポインタ等の次のポップアドレスを更新し、更新されたポップアドレスで管理データ146を更新する。
【0038】
ステップ258では、取り出された計算タスクデータに基づいて計算タスクが発行される。例えば、PIMのコンテキストでは、タスク処理マネージャ148は、計算タスクデータを使用して、例えば、計算タスクデータが指定したアドレス、演算及び値と、ソースパーティションに対応するPIM実行ユニットのIDとを使用して、完全に有効なPIMコマンドを構築する。ステップ260では、計算タスクが発行される。例えば、タスク処理マネージャ148は、ステップ258で生成されたPIMコマンドをマイクロプロセッサ構成100のメモリシステムに発行させる。
【0039】
ステップ252~260は、任意の回数、及び、任意の数のパーティションに対して並行して繰り返され得る。PIMコマンドは、異なるPIM実行ユニットに発行されるので、異なるパーティションに対するPIMコマンドが生成され、それらのそれぞれのPIM実行ユニットに並行して発行されてもよい。
【0040】
上述したアプローチを使用して、タスク処理機構140は、スレッドがメモリモジュールの特定のハードウェア実施形態、より具体的には、アドレスがPIM実行ユニット等の物理メモリ素子にどのようにマッピングされるかを認識する必要なく、PIMコマンドのターゲットオペランドの全てが同じメモリ素子にマッピングされる一方で、個別のスレッドからのPIM衝突又はメモリ競合を回避することを保証する。
【0041】
図3Aは、不規則なアプリケーションを実行するマルチスレッド環境においてPIMコマンドを管理するための従来のベースラインタスク処理アプローチを示すブロック図である。図3A及び図3Bでは、「モジュール」という用語は、メモリ素子を指す。ホストスレッドは、メモリから計算タスクデータをロードし、PIMコマンドを生成する。例えば、スレッドは、アドレス、算術演算等の演算及び値を指定する計算タスクデータをロードする。スレッドは、メモリからロードされた計算タスクデータを使用してPIMコマンドを生成する。複数のホストスレッドからのPIMコマンドは、PIM衝突を回避するためにシリアル化され、一度に1つずつメモリシステムに発行される。これは、データが何処に記憶され、何れの宛先PIM実行ユニットがPIMコマンドを処理するかについて安全に仮定することができないので、必要である。これは、いくつかのPIM実行ユニットが次のPIMコマンドを待つ間にアイドル状態のままにされ得るので、異なる宛先PIM実行ユニットに対するPIMコマンドが十分にインターリーブされない場合に、性能低下をもたらす可能性がある。
【0042】
図3Bは、タスク処理機構を使用してマルチスレッド環境においてPIMコマンドを管理することを示すブロック図である。本明細書で上述したように、スレッドは、自身のPIMコマンドを生成して発行する代わりに、計算タスクデータをタスク処理機構にプッシュする。これは、計算タスクデータが生成されるとすぐに実行されてもよく、計算タスクデータをメモリに記憶する従来のステップを排除する。タスク処理機構は、計算タスクデータを、計算タスクデータ内のアドレス情報に基づいてパーティションに記憶し、その結果、各宛先PIM実行ユニットに対する計算タスクデータの全てが一緒にグループ化される。図3Bに示すように、1つ以上のポップコマンドに応じて、タスク処理機構は、複数のPIM実行ユニット及びメモリモジュールに対して並行して実行され得るPIMコマンドを生成してメモリシステムに発行する。このようにしてタスク処理機構を使用することにより、並列性が改善され、PIM衝突が排除され、メモリアドレスが物理メモリ素子に、より具体的には、PIM実行ユニット及びメモリモジュールに、どのようにマッピングされるかをホストスレッドが認識する必要なく、PIMコマンドのオペランドの全てが同じメモリ素子にマッピングされることが保証される。PIM衝突を回避することを除いて、これらの利点の全ては、NUMA実施形態においても実現される。
図1
図2A
図2B
図3A
図3B
【手続補正書】
【提出日】2023-08-17
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
マイクロプロセッサであって、
タスク処理機構を備え、
前記タスク処理機構は、
第1の計算タスクデータを受信することと、
前記第1の計算タスクデータを第1のメモリロケーションに記憶すること、又は、前記第1のメモリロケーションの指標を返すことのうち1つ以上を実行することと、
記憶された前記第1の計算タスクデータに基づいて第1の計算タスクを生成し、前記第1の計算タスクをメモリシステムに発行させることと、
を行うように構成されている、
マイクロプロセッサ。
【請求項2】
前記タスク処理機構は、前記第1の計算タスクデータに対応する第1のメモリ素子を、前記第1のメモリ素子を含む複数のメモリ素子のリソース使用量に基づいて決定するように構成されている、
請求項1のマイクロプロセッサ。
【請求項3】
前記タスク処理機構は、
前記第1の計算タスクデータ内のアドレス情報を処理して処理結果を生成することと、
前記処理結果を使用して、前記第1の計算タスクデータに対応する第1のメモリ素子を決定することと、
を行うように構成されている、
請求項1のマイクロプロセッサ。
【請求項4】
前記タスク処理機構は、前記第1の計算タスクデータに基づいて、前記第1の計算タスクデータに対応する第1のメモリ素子を、
前記第1の計算タスクデータ内のアドレス情報の少なくとも一部にマスクを適用すること、又は、
ハッシュ関数を使用して、前記第1の計算タスクデータ内のアドレス情報の少なくとも一部を処理すること、
のうち1つ以上によって決定するように構成されている、
請求項1のマイクロプロセッサ。
【請求項5】
前記タスク処理機構は、
前記第1の計算タスクデータとは異なる第2の計算タスクデータを受信することと、
前記第2の計算タスクデータを前記第1のメモリロケーション又は第2のメモリロケーションのうち1つ以上に記憶することであって、前記第1のメモリロケーション及び前記第2のメモリロケーションの両方は同じメモリ素子内にある、ことと、
記憶された前記第2の計算タスクデータに基づいて第2の計算タスクを生成し、前記第2の計算タスクを前記メモリシステムに発行させることと、
を行うように構成されている、
請求項1のマイクロプロセッサ。
【請求項6】
前記第1の計算タスクデータは、第1のスレッドから受信され、前記第2の計算タスクデータは、前記第1のスレッドとは異なる第2のスレッドから受信される、
請求項5のマイクロプロセッサ。
【請求項7】
前記タスク処理機構は、
前記第1の計算タスクデータとは異なる第2の計算タスクデータを受信することと、
前記第2の計算タスクデータを、前記第1のメモリロケーションとは異なるメモリ素子内にある第2のメモリロケーションに記憶することと、
記憶された前記第2の計算タスクデータに基づいて第2の計算タスクを生成し、前記第2の計算タスクを前記メモリシステムに発行させることと、
を行うように構成されている、
請求項1のマイクロプロセッサ。
【請求項8】
前記第2の計算タスクは、前記第1の計算タスクと並行して前記メモリシステムに発行される、
請求項7のマイクロプロセッサ。
【請求項9】
前記第1の計算タスクは、PIM対応メモリ素子に対するPIMコマンドであり、
前記第1の計算タスクを前記メモリシステムに発行させることは、前記PIMコマンドをPIM対応メモリ素子に発行させることを含む、
請求項1のマイクロプロセッサ。
【請求項10】
コンピュータ実行方法であって、
マイクロプロセッサ内のタスク処理機構が、
第1の計算タスクデータを受信することと、
前記第1の計算タスクデータを第1のメモリロケーションに記憶すること、又は、前記第1のメモリロケーションの指標を返すことのうち1つ以上を実行することと、
記憶された前記第1の計算タスクデータに基づいて第1の計算タスクを生成し、前記第1の計算タスクをメモリシステムに発行させることと、を含む、
コンピュータ実行方法。
【請求項11】
前記タスク処理機構が、前記第1の計算タスクデータに対応する第1のメモリ素子を、前記第1のメモリ素子を含む複数のメモリ素子のリソース使用量に基づいて決定することを含む、
請求項10のコンピュータ実行方法。
【請求項12】
システムであって、
複数のメモリ素子を含むメモリシステムと、
タスク処理機構を含むマイクロプロセッサと、を備え、
前記タスク処理機構は、
第1の計算タスクデータを受信することと、
前記第1の計算タスクデータを第1のメモリロケーションに記憶すること、又は、前記第1のメモリロケーションのアドレスを返すことのうち1つ以上を実行することと、
記憶された前記第1の計算タスクデータに基づいて第1の計算タスクを生成し、前記第1の計算タスクをメモリシステムに発行させることと、
を行うように構成されている、
システム。
【請求項13】
前記第1の計算タスクは、PIM対応メモリ素子に対するPIMコマンドであり、
前記第1の計算タスクを前記メモリシステムに発行させることは、前記PIMコマンドをPIM対応メモリ素子に発行させることを含む、
請求項12のシステム。
【国際調査報告】