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

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

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

特表2024-512086メモリインターフェースを経由した合体(coalesced)マルチキャストデータ転送のためのシステム及び方法
<>
  • 特表-メモリインターフェースを経由した合体(coalesced)マルチキャストデータ転送のためのシステム及び方法 図1
  • 特表-メモリインターフェースを経由した合体(coalesced)マルチキャストデータ転送のためのシステム及び方法 図2
  • 特表-メモリインターフェースを経由した合体(coalesced)マルチキャストデータ転送のためのシステム及び方法 図3
  • 特表-メモリインターフェースを経由した合体(coalesced)マルチキャストデータ転送のためのシステム及び方法 図4
  • 特表-メモリインターフェースを経由した合体(coalesced)マルチキャストデータ転送のためのシステム及び方法 図5
  • 特表-メモリインターフェースを経由した合体(coalesced)マルチキャストデータ転送のためのシステム及び方法 図6
  • 特表-メモリインターフェースを経由した合体(coalesced)マルチキャストデータ転送のためのシステム及び方法 図7
  • 特表-メモリインターフェースを経由した合体(coalesced)マルチキャストデータ転送のためのシステム及び方法 図8
  • 特表-メモリインターフェースを経由した合体(coalesced)マルチキャストデータ転送のためのシステム及び方法 図9
  • 特表-メモリインターフェースを経由した合体(coalesced)マルチキャストデータ転送のためのシステム及び方法 図10
  • 特表-メモリインターフェースを経由した合体(coalesced)マルチキャストデータ転送のためのシステム及び方法 図11
  • 特表-メモリインターフェースを経由した合体(coalesced)マルチキャストデータ転送のためのシステム及び方法 図12
  • 特表-メモリインターフェースを経由した合体(coalesced)マルチキャストデータ転送のためのシステム及び方法 図13
  • 特表-メモリインターフェースを経由した合体(coalesced)マルチキャストデータ転送のためのシステム及び方法 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-18
(54)【発明の名称】メモリインターフェースを経由した合体(coalesced)マルチキャストデータ転送のためのシステム及び方法
(51)【国際特許分類】
   G06F 13/36 20060101AFI20240311BHJP
   G06F 12/04 20060101ALI20240311BHJP
   G06F 12/06 20060101ALI20240311BHJP
   G06F 12/00 20060101ALI20240311BHJP
   G06F 13/16 20060101ALI20240311BHJP
   G06F 12/02 20060101ALI20240311BHJP
【FI】
G06F13/36 530B
G06F12/04 520D
G06F12/06 521B
G06F12/00 560A
G06F13/16 520B
G06F12/02 580A
G06F13/36 310E
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023559702
(86)(22)【出願日】2022-03-23
(85)【翻訳文提出日】2023-10-31
(86)【国際出願番号】 US2022021529
(87)【国際公開番号】W WO2022212145
(87)【国際公開日】2022-10-06
(31)【優先権主張番号】17/218,700
(32)【優先日】2021-03-31
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ジョナサン オルソップ
(72)【発明者】
【氏名】ヌワン ジャヤセーナ
(72)【発明者】
【氏名】シャイジーン アガ
(72)【発明者】
【氏名】アンドリュー マクラブ
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA03
5B160MB08
(57)【要約】
メモリモジュールとプロセッサとの間のメモリチャネルを介したデジタルデータ転送を制御するための方法及び装置が開示される。メモリモジュール又はプロセッサのうち少なくとも1つは、複数の短いデータワードを、メモリチャネルを介して転送するための単一のデータブロックを含むマルチキャスト合体ブロックデータに合体する。複数の短いデータワードの各々は、メモリモジュール内の少なくとも2つの分割されたメモリサブモジュールのうち何れかに関連する。マルチキャスト合体ブロックデータは、メモリチャネルを介して通信される。
【選択図】図1
【特許請求の範囲】
【請求項1】
メモリモジュールとプロセッサとの間のメモリチャネルを介したデジタルデータ転送を制御するための方法であって、
前記メモリモジュール又は前記プロセッサのうち少なくとも1つが、複数の短いデータワードを、前記メモリチャネルを介して転送するための単一のデータブロックを含むマルチキャスト合体ブロックデータに合体することであって、前記複数の短いデータワードの各々は、前記メモリモジュール内の少なくとも2つの分割されたメモリサブモジュールのうち何れかに関連する、ことと、
前記メモリチャネルを介して前記マルチキャスト合体ブロックデータを通信することと、を含む、
方法。
【請求項2】
前記プロセッサが、短いデータワードの転送を示す条件を検出することと、
前記検出された条件に応じて、前記メモリモジュール又は前記プロセッサのうち少なくとも1つが、前記マルチキャスト合体ブロックデータの転送を容易にする第1のモードと、前記プロセッサと何れかのメモリサブモジュールとの間の連続ブロックデータの転送を容易にする第2のモードと、を切り替えることと、を更に含む、
請求項1の方法。
【請求項3】
前記プロセッサが、合体ロードコマンドを前記メモリモジュールに送信して、前記メモリモジュールに、前記メモリサブモジュールから前記短いデータワードを取得させ、マルチキャストメモリ合体動作を実行させて、前記短いデータワードを前記マルチキャスト合体ブロックデータに合体させることと、
前記マルチキャスト合体ブロックデータを受信したことに応じて、前記プロセッサが、前記マルチキャスト合体ブロックデータから前記短いデータワードの各々を抽出することと、を更に含む、
請求項1の方法。
【請求項4】
前記プロセッサが、前記メモリサブモジュール内の前記短いデータワードに関連付けられた複数のロケーションを識別する1つ以上のロケーション識別子を前記メモリモジュールに送信して、前記メモリモジュールに、前記メモリサブモジュール内の識別されたロケーションから前記短いデータワードを取得させることを更に含む、
請求項3の方法。
【請求項5】
前記プロセッサが、前記プロセッサがアクセス可能な前記短いデータワードを前記マルチキャスト合体ブロックデータに合体するために記憶するように、前記メモリサブモジュールの各々に関連付けられた少なくとも1つのレジスタを構成することを更に含む、
請求項1の方法。
【請求項6】
前記プロセッサが、前記メモリモジュールに転送される前記マルチキャスト合体ブロックデータを生成することと、
前記プロセッサが、合体記憶コマンドを前記メモリモジュールに送信して、前記メモリモジュールに、マルチキャストメモリ抽出動作を実行させて、前記マルチキャスト合体ブロックデータから前記短いデータワードを抽出することと、前記短いデータワードを前記メモリサブモジュールに分配することと、前記短いデータワードを前記メモリサブモジュール内に記憶することと、を行わせることと、を更に含む、
請求項1の方法。
【請求項7】
前記プロセッサが、前記メモリサブモジュール内の前記短いデータワードに関連付けられた複数のロケーションを識別する1つ以上のロケーション識別子を前記メモリモジュールに送信して、前記メモリモジュールに、前記メモリサブモジュール内の識別されたロケーションに前記短いデータワードを記憶させることを更に含む、
請求項6の方法。
【請求項8】
前記プロセッサが、前記メモリモジュールに転送される前記マルチキャスト合体ブロックデータを生成することと、
前記プロセッサが、前記メモリモジュールに、前記マルチキャスト合体ブロックデータから前記短いデータワードを抽出することと、前記短いデータワードを前記少なくとも1つのレジスタに記憶することと、を行わせるために、前記メモリサブモジュールに関連付けられた少なくとも1つのレジスタを構成することと、を更に含む、
請求項1のプロセッサ。
【請求項9】
前記プロセッサが、前記メモリモジュールに転送される前記マルチキャスト合体ブロックデータを生成することと、
前記メモリモジュールに、前記プロセッサによって供給された前記マルチキャスト合体ブロックデータ又は前記メモリモジュールに記憶された情報に基づいて、前記メモリサブモジュール内の前記短いデータワードに関連付けられた複数のロケーションを識別する1つ以上のロケーション識別子を判定させるように、前記プロセッサが、前記メモリモジュールを構成することと、を更に含む、
請求項1のプロセッサ。
【請求項10】
プロセッサであって、
メモリチャネルを介してメモリモジュールと通信するように構成されたメモリインターフェースと、
マルチキャスト合体ロジックと、を備え、
前記マルチキャスト合体ロジックは、
複数の短いデータワードを、転送する前に単一のデータブロックを含むマルチキャスト合体ブロックデータに合体させることによって、前記メモリチャネルを介した前記プロセッサと前記メモリモジュールとの間のデータ転送を実行することであって、前記複数の短いデータワードの各々は、少なくとも2つの分割されたメモリサブモジュールのうち何れかに関連する、ことと、
前記メモリチャネルを介して前記マルチキャスト合体ブロックデータを通信することと、
を行うように構成されている、
プロセッサ。
【請求項11】
前記マルチキャスト合体ロジックは、
前記メモリサブモジュールに関連付けられたメモリコントローラに、前記マルチキャスト合体ブロックデータの転送を容易にする第1のモードと、前記プロセッサと何れかのメモリサブモジュールとの間の連続ブロックデータの転送を容易にする第2のモードと、を切り替えるための条件を検出させるように、前記メモリコントローラを構成するように構成されており、
前記条件は、短いデータワードの転送を示す、
請求項10のプロセッサ。
【請求項12】
前記マルチキャスト合体ロジックは、
合体ロードコマンドを前記メモリモジュールに送信して、前記メモリモジュールに、前記メモリサブモジュールから前記短いデータワードを取得させ、マルチキャストメモリ合体動作を実行させて、前記短いデータワードを前記マルチキャスト合体ブロックデータに合体させることと、
前記マルチキャスト合体ブロックデータを受信したことに応じて、前記マルチキャスト合体ブロックデータから前記短いデータワードの各々を抽出することと、
を行うように構成されている、
請求項10のプロセッサ。
【請求項13】
前記マルチキャスト合体ロジックは、
前記メモリサブモジュール内の前記短いデータワードに関連付けられた複数のロケーションを識別する1つ以上のロケーション識別子を前記メモリモジュールに送信して、前記メモリモジュールに、前記メモリサブモジュール内の識別されたロケーションから前記短いデータワードを取得させるように構成されている、
請求項12のプロセッサ。
【請求項14】
前記マルチキャスト合体ロジックは、
前記メモリモジュールに、前記メモリサブモジュールから前記短いデータワードを読み取らせ、マルチキャストメモリ合体動作を実行させて、少なくとも1つのレジスタからの前記短いデータワードを前記マルチキャスト合体ブロックデータに合体させるように、前記メモリサブモジュールに関連付けられた前記少なくとも1つのレジスタを構成するように構成されている、
請求項10のプロセッサ。
【請求項15】
前記マルチキャスト合体ロジックは、
前記メモリモジュールに転送される前記マルチキャスト合体ブロックデータを生成することと、
合体記憶コマンドを前記メモリモジュールに送信して、前記メモリモジュールに、マルチキャストメモリ抽出動作を実行させて、前記マルチキャスト合体ブロックデータから前記短いデータワードを抽出することと、前記短いデータワードを前記メモリサブモジュールに分配することと、前記短いデータワードを前記メモリサブモジュール内に記憶することと、を行わせることと、
を行うように構成されている、
請求項10のプロセッサ。
【請求項16】
前記マルチキャスト合体ロジックは、
前記メモリサブモジュール内の前記短いデータワードに関連付けられた複数のロケーションを識別する1つ以上のロケーション識別子を前記メモリモジュールに送信して、前記メモリモジュールに、前記メモリサブモジュール内の識別されたロケーションに前記短いデータワードを記憶させるように構成されている、
請求項15のプロセッサ。
【請求項17】
前記マルチキャスト合体ロジックは、
前記メモリモジュールに転送される前記マルチキャスト合体ブロックデータを生成することと、
前記メモリモジュールに、前記マルチキャスト合体ブロックデータから前記短いデータワードを抽出することと、前記短いデータワードを少なくとも1つのレジスタに記憶することと、を行わせるために、前記メモリサブモジュールに関連付けられた前記少なくとも1つのレジスタを構成することと、
を行うように構成されている、
請求項10のプロセッサ。
【請求項18】
メモリモジュールであって、
メモリチャネルを介してプロセッサと通信するように構成されたプロセッサインターフェースと、
複数の分割されたメモリサブモジュールと、
マルチキャスト合体ロジックと、を備え、
前記マルチキャスト合体ロジックは、
複数の短いデータワードを、転送する前に単一のデータブロックを含む合体ブロックデータに合体させることによって、前記メモリチャネルを介した前記プロセッサと前記メモリモジュールとの間のデータ転送を実行することであって、前記複数の短いデータワードの各々は、何れかのメモリサブモジュールに関連する、ことと、
前記メモリチャネルを介して前記マルチキャスト合体ブロックデータを通信することと、
を行うように構成されている、
メモリモジュール。
【請求項19】
前記マルチキャスト合体データの転送を容易にする第1のモードと、前記プロセッサと何れかのメモリサブモジュールとの間の連続ブロックデータの転送を容易にする第2のモードと、を切り替えるように構成されたモード選択コンポーネントを更に備える、
請求項18のメモリモジュール。
【請求項20】
前記メモリサブモジュールに関連付けられたメモリコントローラであって、前記第1のモードと前記第2のモードとを切り替えるために、短いデータワードの転送を示す条件を検出するように構成されているメモリコントローラを更に備える、
請求項19のメモリモジュール。
【請求項21】
前記プロセッサによって供給された前記マルチキャスト合体ブロックデータ又は前記メモリモジュールに記憶された情報に基づいて、前記メモリサブモジュール内の前記短いデータワードに関連付けられた複数のロケーションを識別する1つ以上のロケーション識別子を判定するように構成された少なくとも1つのニアメモリプロセッサ又はインメモリプロセッサを更に備える、
請求項18のメモリモジュール。
【請求項22】
前記マルチキャスト合体ロジックは、
前記メモリサブモジュールと結合された複数のシフタロジックコンポーネントであって、前記シフタロジックコンポーネントの各々は、前記メモリサブモジュールのアドレスオフセットに基づいて、前記短いデータワードの位置をシフトするように構成されており、前記シフタロジックコンポーネントからの前記短いデータワードは、前記マルチキャスト合体ブロックデータを形成するために連結される、複数のシフタロジックコンポーネントを更に備える、
請求項18のメモリモジュール。
【請求項23】
前記マルチキャスト合体ロジックは、
前記プロセッサから合体ロードコマンドを受信したことに応じて、前記メモリサブモジュールから前記短いデータワードを取得することと、前記シフタ-セレクタロジックコンポーネントを使用して前記短いデータワードの位置をシフトし、前記短いデータワードを前記マルチキャスト合体ブロックデータに合体することによって、マルチキャストメモリ合体動作を実行することと、を行うように構成されている、
請求項22のメモリモジュール。
【請求項24】
前記マルチキャスト合体ロジックは、
前記短いデータワードが前記メモリサブモジュール内の識別されたロケーションから取得されるように、前記メモリサブモジュール内の前記短いデータワードに関連付けられた複数のロケーションを識別する1つ以上のロケーション識別子を前記プロセッサから受信するように構成されている、
請求項23のメモリモジュール。
【請求項25】
前記マルチキャスト合体ロジックは、
複数のセレクタロジックコンポーネントであって、前記セレクタロジックコンポーネントの各々は、何れかのメモリサブモジュールのアドレスオフセットに基づいて、前記何れかのメモリサブモジュールから取り出されたデータの一部から前記短いデータワードを選択するように構成されており、前記セレクタロジックコンポーネントからの前記短いデータワードは、前記マルチキャスト合体ブロックデータを形成するために連結される、複数のセレクタロジックコンポーネントを更に備える、
請求項18のメモリモジュール。
【請求項26】
前記メモリサブモジュールに関連付けられた少なくとも1つのレジスタであって、前記レジスタは、前記レジスタからの前記短いデータワードを前記マルチキャスト合体ブロックデータに合体するために、マルチキャストメモリ合体動作が実行されるまで、前記対応するメモリサブモジュールに関連付けられた前記短いデータワードを記憶するように構成されている、少なくとも1つのレジスタを更に備える、
請求項18のメモリモジュール。
【請求項27】
前記マルチキャスト合体ロジックは、
前記メモリサブモジュールと結合された複数のサブセット分配ロジックコンポーネントであって、前記サブセットドライバロジックコンポーネントの各々は、前記マルチキャスト合体ブロックデータから何れかの短いデータワードを抽出し、抽出された短いデータワードを何れかのメモリサブモジュールに分配するように構成されている、複数のサブセット分配ロジックコンポーネントを更に備える、
請求項18のメモリモジュール。
【請求項28】
前記マルチキャスト合体ロジックは、
前記プロセッサから合体記憶コマンドを受信したことに応じて、マルチキャストメモリ抽出動作を実行して、前記サブセット分配ロジックコンポーネントによって前記メモリサブモジュールに分配された前記短いデータワードを前記メモリサブモジュール内に記憶するように構成されている、
請求項27のメモリモジュール。
【請求項29】
前記マルチキャスト合体ロジックは、
前記短いデータワードが前記メモリサブモジュール内の識別されたロケーションに記憶されるように、前記メモリサブモジュール内の前記短いデータワードに関連付けられた複数のロケーションを識別する1つ以上のロケーション識別子を前記プロセッサから受信するように構成されている、
請求項28のメモリモジュール。
【請求項30】
前記メモリサブモジュールに関連付けられた少なくとも1つのレジスタであって、前記プロセッサから受信された前記マルチキャスト合体ブロックデータから抽出された前記短いデータワードを記憶するように構成されている、少なくとも1つのレジスタを更に備え、
前記マルチキャスト合体ロジックは、マルチキャストメモリ抽出動作を実行して、前記レジスタから前記短いデータワードを抽出して前記メモリサブモジュールに分配し、前記短いデータワードを前記メモリサブモジュール内に記憶するように構成されている、
請求項18のメモリモジュール。
【請求項31】
デジタルデータ転送を制御するためのシステムであって、
プロセッサと、
複数の分割されたメモリサブモジュールを含むメモリモジュールと、
前記プロセッサと前記メモリモジュールとの間に構成されたメモリチャネルと、
マルチキャスト合体ロジックと、を備え、
前記マルチキャスト合体ロジックは、
複数の短いデータワードを、転送する前に単一のデータブロックを含むマルチキャスト合体ブロックデータに合体させることによって、前記メモリチャネルを介した前記プロセッサと前記メモリモジュールとの間のデータ転送を実行することであって、前記複数の短いデータワードの各々は、何れかのメモリサブモジュールに関連する、ことと、
前記メモリチャネルを介して前記マルチキャスト合体ブロックデータを通信することと、
を行うように構成されている、
システム。
【請求項32】
前記マルチキャスト合体データの転送を容易にする第1のモードと、前記プロセッサと何れかのメモリサブモジュールとの間の連続ブロックデータの転送を容易にする第2のモードと、を切り替えるように構成されたモード選択コンポーネントと、
前記メモリサブモジュールに関連付けられたメモリコントローラであって、短いデータワードの転送を示す条件を検出し、検出された条件に基づいて、前記第1のモードと前記第2のモードとを切り替えるように前記モード選択コンポーネントを制御するように構成されたメモリコントローラと、を更に備える、
請求項31のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
キャッシュメモリは、典型的には、メインメモリから読み取られた情報又はメインメモリに書き込まれる情報が記憶されるキャッシュラインに編成されている。キャッシュメモリ内の情報を利用する際、キャッシュメモリからデータを読み取る(又はロードする)か、メインメモリにデータを書き込む(又は記憶する)かに関わらず、メモリインターフェースは、キャッシュライン全体の情報の一部のみが必要な場合でも、又は、キャッシュライン全体の情報の一部のみをメインメモリ内で更新する必要がある場合でも、キャッシュライン全体の情報を一度に読み取る又は書き込むように設計されている。その結果、狭いデータワードアクセスを実行する場合に、要求された情報をキャッシュに読み込むために又は情報をメインメモリに書き込むために必要とされるよりも多くのメモリトランザクションがしばしば存在する。過剰なメモリトランザクションは、オーバーヘッドを増加させることによって電力を消費するだけでなく、性能を低減させ、メモリの劣化を引き起こす。
【0002】
いくつかの従来のメモリモジュールは、典型的には、メモリへの及び/又はメモリからのデータの各転送が、メモリバスを経由してキャッシュラインサイズのバーストで行われるように、64バイトのキャッシュラインサイズを使用する。単純化した例を、単一のメモリバンクから広いアクセスを実装する従来技術のシステムの論理表現である図1に示す。一般的に、メモリモジュール100は、特定の幅、この場合には256ビットすなわち32バイトのメモリバス又はメモリチャネル108を介して、メモリモジュール100のロード動作及び記憶動作において実行される計算を調整するメインプロセッサとも称されるホストプロセッサ104のメモリインターフェース106と結合するホストインターフェース102を有する。したがって、いくつかの例では、メモリモジュール100は、任意のロード動作又は記憶動作のための粗い粒度の単一アクセス(すなわち、32バイト)のみをサポートすることができる。メモリモジュール100は、複数のメモリバンク又はサブモジュール112、114、116、118(本例では、16個のサブモジュールを有する)を含み、各々が、別のメモリチャネル110(本例では、256ビットのチャネル幅を有する)を介して、ホストインターフェース102に動作可能に結合される。各メモリサブモジュールは、ロード動作又は記憶動作によってアクセスされているメモリロケーションのアドレスを記憶するためのメモリアドレスレジスタ(memory address register、MAR)と、動作が実行されているデータを記憶するためのメモリデータレジスタ(memory data register、MDR)と、を含み得る。そのようなレジスタは、簡単にするために図示されていない。
【0003】
ホストプロセッサ104は、特定のメモリサブモジュールからメモリデータをロードするか又は当該メモリサブモジュールにデータを記憶する必要がある場合に、ロード要求又は記憶要求を発行する。指定されたサブモジュール(本例では、サブモジュール114)からの特定のビット数のデータをホストプロセッサ104に送信することをホストプロセッサ104が要求する等のように、ホストプロセッサ104とメモリモジュール100との間にデータ転送がある場合、広いアクセスが実行され、要求されたビット数のデータを含む連続データのキャッシュライン全体が、単一の指定されたサブモジュールからホストインターフェース102に転送される。このことは、まばらに(例えば、16ビット粒度で)データにアクセスする作業負荷の場合、データがメモリインターフェースを跨いで転送される場合にはいつでも、そのごく一部のみがアクセスされるので、著しい帯域幅の浪費につながる可能性がある。
【0004】
いくつかの従来のコンピューティングシステムは、サブキャッシュラインメモリアクセスの非効率性に対処しようとして、ソフトウェアを使用して、キャッシュ再利用の可能性が低いそのような短いアクセスを静的に識別する。いくつかのアプローチは、サブランク付けを伴い、これは、デュアルインラインメモリモジュール(dual in-line memory module、DIMM)又はRAMスティックの複数のメモリチップをサブセットにグループ化して、各サブセットが元の転送のサイズよりも小さいデータチャンクを提供することを可能にする。しかしながら、サブランク付けは、各サブランクに個別のコマンドを必要とし、その結果、共有コマンドバスに対するより高い要求に起因する低減された性能、又は、各サブランクに対して必要とされる専用コマンドパスに起因する増加されたハードウェアコストをもたらす。また、サブランク付けは、各データアクセスが単一のメモリモジュールによって提供される場合には非実用的でもある。いくつかのアプローチは、DRAMバンクの高さ(height)及び/又は幅(width)を低減することを伴うが、そのようなアプローチは、コアDRAMアレイ設計を変更することを伴い、高いオーバーヘッドを招く。
【0005】
他のアプローチは、ソフトウェアがキャッシュ再利用又はその欠如をしばしば予測することができる領域内にある、行列ベクトル乗算、疎行列代数、グラフ分析及びスパース機械学習を伴う。しかしながら、現代のメモリシステムは、依然として、そのような情報を活用してメモリ帯域幅利用を最適化することができないという問題を抱えており、まばらな作業負荷のためのメモリ効率及び有効帯域幅に関して、依然として改善の余地がある。
【0006】
したがって、過剰なメモリトランザクションを実行することなく、メモリサブモジュールからより狭いデータ幅の転送を可能にするように、メモリモジュールとホストプロセッサとの間の改善されたデータ転送を有することが非常に有利であろう。
【0007】
実施形態は、同様の符号が同様の要素を表す以下の図を伴う場合に、以下の説明を考慮してより容易に理解されるであろう。
【図面の簡単な説明】
【0008】
図1】ホストプロセッサがロード要求又は記憶要求を発行すると、連続データのキャッシュライン全体がメモリモジュールとホストプロセッサとの間で転送されるシステムのメモリモジュール及びホストプロセッサの一例を示す先行技術のブロック図である。
図2】本開示に記載される実施形態による、マルチキャストメモリ合体動作(multicast memory coalesce operations)を実行するように構成されたシステムのメモリモジュール及びホストプロセッサの一例を示すブロック図である。
図3図2に示されたシステムによって実行されたマルチキャストメモリ合体動作の結果として形成されている、マルチキャスト合体ブロックデータの一例を示すブロック図である。
図4】ホストプロセッサと結合された複数のメモリモジュールを有する、図2によるシステムの一例を示す図である。
図5】本開示に記載される一例による、マルチキャストメモリ合体動作を実行するための方法の一例を示すフローチャートである。
図6】本開示に記載される一例による、マルチキャストメモリ合体動作を容易にすることと、連続ブロックデータの転送を容易にすることと、の間で切り替えるための方法の一例を示すフローチャートである。
図7】本開示に記載される一例による、メモリサブモジュールからデータをロードするための方法の一例を示すフローチャートである。
図8】本開示に記載される一例による、メモリサブモジュールにデータを記憶するための方法の一例を示すフローチャートである。
図9】本開示に記載される一例による、システムの一例を示す図である。
図10】本開示に記載される一例による、メモリモジュールの一例を示す図である。
図11】本開示に記載される一例による、システムの一例を示す図である。
図12】本開示に記載される一例による、システムの一例を示す図である。
図13】本開示に記載される一例による、システムの一例を示す図である。
図14】本開示に記載される一例による、システムの一例を示す図である。
【発明を実施するための形態】
【0009】
簡単に言うと、システム及び方法は、複数の異種メモリサブモジュールからの短いデータワードを合体又は集約することと、本明細書ではマルチキャスト合体ブロックデータと称される合体データを、単一のブロックデータ転送でメモリチャネルを経由して同時に転送又は通信することと、によって、データ転送のオーバーヘッドを低減し、細粒度のデータ転送を容易にするのに役立つ。いくつかの実施形態では、短いデータワードが、分割されたメモリサブモジュールの集合体の各々から、単一のブロックデータ転送内の固有の位置にあるホストプロセッサに返されるか又はロードされる。いくつかの実施形態では、短いデータワードが、分割されたメモリサブモジュールの集合体の各々に、単一のブロックデータ転送内の固有の位置にあるホストプロセッサから書き込まれるか又は記憶される。いくつかの例では、メモリサブモジュールは、それに関連付けられたレジスタを有し、レジスタは、マルチキャストメモリ合体動作が実行されるまで、対応するサブモジュールからの短いデータワードを記憶するか、又は、プロセッサから受信されたマルチキャスト合体ブロックデータから抽出された短いデータワードを記憶する。いくつかの例では、レジスタは、ニアメモリ処理技術又はインメモリ処理技術の一部として実装され得る。
【0010】
特定の実施形態によれば、メモリモジュール又はプロセッサのうち少なくとも1つによって実行される、メモリモジュールとプロセッサとの間のメモリチャネルを介したデジタルデータ転送を制御するための方法は、複数の短いデータワードを、メモリチャネルを介した転送のための単一のデータブロックを含むマルチキャスト合体ブロックデータに合体する。複数の短いデータワードの各々は、メモリモジュール内の少なくとも2つの分割されたメモリサブモジュールのうちの1つに関連する。マルチキャスト合体ブロックデータは、メモリチャネルを経由して通信される。
【0011】
いくつかの例では、本方法は、プロセッサが、短いデータワードの合体の可能性を示す状態を検出することと、検出された条件に応じて、マルチキャスト合体ブロックデータの転送を容易にする第1のモードと、プロセッサとメモリサブモジュールのうち何れかとの間の連続ブロックデータの転送を容易にする第2のモードと、の間で切り替えることと、を含む。
【0012】
いくつかの例では、本方法は、プロセッサが、合体ロードコマンドをメモリモジュールに送信して、メモリモジュールに、メモリサブモジュールから短いデータワードを取り出させ、短いデータワードをマルチキャスト合体ブロックデータに合体させるためにマルチキャストメモリ合体動作を実行させることと、マルチキャスト合体ブロックデータを受信することに応じて、マルチキャスト合体ブロックデータから短いデータワードの各々を抽出することと、を含む。特定の例では、本方法は、プロセッサが、メモリサブモジュール内の短いデータワードに関連付けられた複数のロケーションを識別する1つ以上のロケーション識別子をメモリモジュールに送信して、メモリモジュールに、メモリサブモジュール内の識別されたロケーションから短いデータワードを取り出させることを含む。いくつかの例では、本方法は、メモリモジュールが、複数のメモリサブモジュール内の同じロケーション(例えば、アドレスオフセット又はニアメモリレジスタID)から短いデータワードを取り出し、取り出された短いデータワードを、マルチキャスト合体ブロックデータとして単一のデータブロックに合体するように、プロセッサが1つのロケーション識別子を送信することを含む。いくつかの例では、複数のロケーションは、複数のロケーション識別子に関連付けられるか、又は、複数のロケーション識別子によって識別される。
【0013】
いくつかの実施形態では、本方法は、プロセッサが、マルチキャスト合体ブロックデータに合体されるように、プロセッサによってアクセス可能な短いデータワードを記憶するように、メモリサブモジュールの各々に関連付けられた少なくとも1つのレジスタを構成することを含む。いくつかの例では、本方法は、プロセッサが、メモリモジュールに転送されるマルチキャスト合体ブロックデータを生成することと、合体記憶コマンドをメモリモジュールに送信することと、を含む。合体記憶コマンドは、メモリモジュールにマルチキャストメモリ抽出動作を実行させて、マルチキャスト合体ブロックデータから短いデータワードを抽出し、短いデータワードをメモリサブモジュールに分配し、短いデータワードをメモリサブモジュール内に記憶する。特定の例では、本方法は、プロセッサが、メモリサブモジュール内の短いデータワードに関連付けられた複数のロケーションを識別する1つ以上のロケーション識別子をメモリモジュールに送信して、メモリモジュールに、メモリサブモジュール内の識別されたロケーションに短いデータワードを記憶させることを含む。別の例では、方法は、メモリモジュールが合体データブロック内の短いデータワードを複数のメモリサブモジュール内の同じロケーション(アドレスオフセット又はニアメモリレジスタID)に記憶するように、プロセッサが1つのロケーション識別子を送信することを含む。
【0014】
いくつかの例では、本方法は、プロセッサが、メモリモジュールに転送されるマルチキャスト合体ブロックデータを生成することと、メモリモジュールに、マルチキャスト合体ブロックデータから短いデータワードを抽出することと、短いデータワードを少なくとも1つのレジスタに記憶することと、を行わせるように、メモリサブモジュールに関連付けられた少なくとも1つのレジスタを構成することと、を含む。いくつかの例では、本方法は、プロセッサが、メモリモジュールに転送されるマルチキャスト合体ブロックデータを生成することと、プロセッサによって供給されたマルチキャスト合体ブロックデータ又はメモリモジュールに記憶された情報に基づいて、メモリモジュールに、メモリサブモジュール内の短いデータワードに関連付けられた複数のロケーションを識別する1つ以上のロケーション識別子を判定させるように、メモリモジュールを構成することと、を含む。
【0015】
特定の実施形態によれば、プロセッサは、メモリチャネル及びマルチキャスト合体ロジックを介してメモリモジュールと通信するメモリインターフェースを含む。マルチキャスト合体ロジックは、複数の短いデータワードを、転送の前に単一のデータブロックを含むマルチキャスト合体ブロックデータに合体させることによって、メモリチャネルを介したプロセッサとメモリモジュールとの間のデータ転送を実行し、メモリチャネルを経由してマルチキャスト合体ブロックデータを通信する。複数の短いデータワードの各々は、少なくとも2つの分割されたメモリサブモジュールのうち何れかに関連する。
【0016】
いくつかの例では、マルチキャスト合体ロジックは、メモリサブモジュールに関連付けられたメモリコントローラに、マルチキャスト合体ブロックデータの転送を容易にする第1のモードと、プロセッサとメモリサブモジュールのうち何れかとの間の連続ブロックデータの転送を容易にする第2のモードと、の間で切り替えるための条件を検出させるように、メモリコントローラを構成し、条件は、短いデータワードの合体の可能性を示す。
【0017】
いくつかの例では、マルチキャスト合体ロジックは、合体ロードコマンドをメモリモジュールに送信して、メモリモジュールに、メモリサブモジュールから短いデータワードを取り出させ、短いデータワードをマルチキャスト合体ブロックデータに合体させるためにマルチキャストメモリ合体動作を実行させ、マルチキャスト合体ブロックデータを受信することに応じて、マルチキャスト合体ブロックデータから短いデータワードの各々を抽出する。特定の例では、マルチキャスト合体ロジックは、メモリサブモジュール内の短いデータワードに関連付けられた複数のロケーションを識別する1つ以上のロケーション識別子をメモリモジュールに送信して、メモリモジュールに、メモリサブモジュール内の識別されたロケーションから短いデータワードを取り出させる。
【0018】
いくつかの例では、マルチキャスト合体ロジックは、メモリモジュールに、メモリサブモジュールから短いデータワードを読み取らせ、短いデータワードをレジスタからマルチキャスト合体ブロックデータに合体させるためにマルチキャストメモリ合体動作を実行させるように、メモリサブモジュールに関連付けられた少なくとも1つのレジスタを構成する。いくつかの例では、レジスタは、サブモジュールごとのニアメモリレジスタ又はサブモジュールごとのインメモリレジスタであってもよく、マルチキャストメモリ合体動作を実行する際に、前のインメモリ動作又はニアメモリ動作からレジスタに記憶された短いデータワードが取り出され、単一のデータブロックに合体される。
【0019】
いくつかの例では、マルチキャスト合体ロジックは、メモリモジュールに転送されるマルチキャスト合体ブロックデータを生成し、合体記憶コマンドをメモリモジュールに送信して、メモリモジュールに、マルチキャストメモリ抽出動作を実行して、マルチキャスト合体ブロックデータから短いデータワードを抽出することと、短いデータワードをメモリサブモジュールに分配することと、短いデータワードをメモリサブモジュール内に記憶することと、を行わせる。特定の例では、マルチキャスト合体ロジックは、メモリサブモジュール内の短いデータワードに関連付けられた複数のロケーションを識別する1つ以上のロケーション識別子をメモリモジュールに送信して、メモリモジュールに、メモリサブモジュール内の識別されたロケーションに短いデータワードを記憶させる。
【0020】
いくつかの例では、マルチキャスト合体ロジックは、メモリモジュールに転送されるマルチキャスト合体ブロックデータを生成し、メモリモジュールに、マルチキャスト合体ブロックデータから短いデータワードを抽出することと、短いデータワードをレジスタに記憶することと、を行わせるように、メモリサブモジュールに関連付けられた少なくとも1つのレジスタを構成する。レジスタは、サブモジュールごとのニアメモリレジスタ又はサブモジュールごとのインメモリレジスタであり得る。
【0021】
特定の実施形態によれば、メモリモジュールは、メモリチャネルを介してプロセッサと通信するプロセッサインターフェースと、複数の分割されたメモリサブモジュールと、マルチキャスト合体ロジックと、を含む。マルチキャスト合体ロジックは、複数の短いデータワードを、転送の前に単一のデータブロックを含む合体ブロックデータに合体させることと、メモリチャネルを経由してマルチキャスト合体ブロックデータを通信することと、によって、メモリチャネルを介したプロセッサとメモリモジュールとの間のデータ転送を実行する。複数の短いデータワードの各々は、メモリサブモジュールのうち何れかに関連する。
【0022】
いくつかの例では、メモリモジュールは、トライステートゲート又はマルチプレクサを含むがこれらに限定されない、マルチキャスト合体データの転送を容易にする第1のモードと、プロセッサとメモリサブモジュールのうち何れかとの間の連続ブロックデータの転送を容易にする第2のモードと、の間で切り替えるモード選択コンポーネントを含む。特定の例では、メモリモジュールは、メモリサブモジュールに関連付けられたメモリコントローラであって、短いデータワードの合体の可能性を示す条件を検出し、第1のモードと第2のモードとの間で切り替えるメモリコントローラも含む。
【0023】
いくつかの例では、メモリモジュールは、プロセッサによって供給されたマルチキャスト合体ブロックデータ又はメモリモジュールに記憶された情報に基づいて、メモリサブモジュール内の短いデータワードに関連付けられた複数のロケーションを識別する1つ以上のロケーション識別子を判定する少なくとも1つのニアメモリ処理ロジック又はインメモリ処理ロジックを含む。
【0024】
いくつかの例では、メモリモジュールのマルチキャスト合体ロジックは、メモリサブモジュールと結合された複数のシフタロジックコンポーネントを含む。シフタロジックコンポーネントの各々は、メモリサブモジュールのアドレスオフセットに基づいて、短いデータワードの位置をシフトする。シフタロジックコンポーネントからの短いデータワードは、連結されて、マルチキャスト合体ブロックデータを形成する。特定の例では、マルチキャスト合体ロジックは、プロセッサから合体ロードコマンドを受信することに応じて、メモリサブモジュールから短いデータワードを取り出し、シフタロジックコンポーネントを使用して短いデータワードの位置をシフトし、短いデータワードをマルチキャスト合体ブロックデータに合体することによって、マルチキャストメモリ合体動作を実行する。特定の例では、マルチキャスト合体ロジックは、短いデータワードが、メモリサブモジュール内の識別されたロケーションから取り出されるように、メモリサブモジュール内の短いデータワードに関連付けられた複数のロケーションを識別する1つ以上のロケーション識別子をプロセッサから受信する。
【0025】
いくつかの例では、マルチキャスト合体ロジックは、複数のセレクタロジックコンポーネントを更に含む。セレクタロジックコンポーネントの各々は、メモリサブモジュールからのアドレスオフセットに基づいて、メモリサブモジュールのうち何れかから取り出されたデータの一部から短いデータワードを選択する。セレクタロジックコンポーネントからの短いデータワードは、連結されて、マルチキャスト合体ブロックデータを形成する。
【0026】
いくつかの例では、メモリモジュールは、メモリサブモジュールに関連付けられた少なくとも1つのレジスタを含む。レジスタは、レジスタからの短いデータワードをマルチキャスト合体ブロックデータに合体するために、マルチキャストメモリ合体動作が実行されるまで、対応するメモリサブモジュールに関連付けられた短いデータワードを記憶する。いくつかの例では、短いデータワードの各々は、対応するメモリサブモジュールから以前にロードされている場合があるか、又は、サブモジュールに記憶されたデータに基づいて、インメモリ処理ロジック又はニアメモリ処理ロジックによって計算されている場合がある。
【0027】
いくつかの例では、メモリモジュールのマルチキャスト合体ロジックは、メモリサブモジュールと結合された複数のサブセット分配ロジックコンポーネントを含む。サブセットドライバロジックコンポーネントの各々は、マルチキャスト合体ブロックデータから短いデータワードのうち何れかを抽出し、抽出された短いデータワードをメモリサブモジュールのうち何れかに分配する。いくつかの例では、メモリモジュールのマルチキャスト合体ロジックは、プロセッサから合体記憶コマンドを受信することに応じて、マルチキャストメモリ抽出動作を実行して、サブセット分配ロジックコンポーネントによってメモリサブモジュールに分配された短いデータワードをメモリサブモジュール内に記憶する。特定の例では、マルチキャスト合体ロジックは、短いデータワードが、メモリサブモジュール内の識別されたロケーションで記憶されるように、メモリサブモジュール内の短いデータワードに関連付けられた複数のロケーションを識別する1つ以上のロケーション識別子をプロセッサから更に受信する。
【0028】
いくつかの例では、メモリモジュールは、メモリサブモジュールに関連付けられた少なくとも1つのレジスタを含む。レジスタは、プロセッサから受信されたマルチキャスト合体ブロックデータから抽出された短いデータワードを記憶する。いくつかの例では、後続のメモリコマンドは、レジスタ内の短いデータワード及び/又は関連付けられたメモリサブモジュール内の短いデータワードを使用して、メモリ動作を実行し得る。いくつかの例では、マルチキャスト合体ロジックは、レジスタから短いデータワードを抽出してメモリサブモジュールに分配し、短いデータワードをメモリサブモジュール内に記憶するために、マルチキャストメモリ抽出動作を実行する。
【0029】
いくつかの実施形態によれば、デジタルデータ転送を制御するためのシステムは、プロセッサと、複数の区分されたメモリサブモジュールを含むメモリモジュールと、プロセッサとメモリモジュールとの間のメモリチャネルと、マルチキャスト合体ロジックと、を含む。マルチキャスト合体ロジックは、複数の短いデータワードを、転送の前に単一のデータブロックを含むマルチキャスト合体ブロックデータに合体させることと、メモリチャネルを経由してマルチキャスト合体ブロックデータを通信することと、によって、メモリチャネルを介したプロセッサとメモリモジュールとの間のデータ転送を実行する。複数の短いデータワードの各々は、メモリサブモジュールのうち何れかに関連する。いくつかの例では、システムは、マルチキャスト合体データの転送を容易にする第1のモードと、プロセッサとメモリサブモジュールのうち何れかとの間の連続ブロックデータの転送を容易にする第2のモードと、の間で切り替えるモード選択コンポーネントと、メモリサブモジュールに関連付けられたメモリコントローラと、を更に含む。メモリコントローラは、短いデータワードの合体の可能性を示す条件を検出し、検出された条件に基づいて、第1のモードと第2のモードとの間で切り替えるようにモード選択コンポーネントを制御する。
【0030】
以下の説明では、本明細書に提示される方法及び機構の十分な理解を提供するために、多数の具体的な詳細が記載されている。しかしながら、当業者は、様々な実施形態が、これらの具体的な詳細なしに実施され得ることを認識すべきである。いくつかの例では、本明細書において説明されるアプローチを不明瞭にすることを避けるために、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図に示される要素が必ずしも縮尺どおりに描かれているわけではないことが理解されよう。例えば、いくつかの要素の寸法は、他の要素に対して誇張されている場合がある。
【0031】
図2は、システム、より具体的には、ハードウェアサーバ、スマートフォン、ウェアラブル、プリンタ、ラップトップ、デスクトップ、又は、メモリモジュール100とホストプロセッサ104との間のデータ転送を利用する任意の他の好適なコンピューティングデバイスの一部等のような、コンピューティングシステムの一例の論理表現を示す。簡略化のために、単一のメモリモジュール及び単一のメモリチャネルが示されているが、本開示は、複数のメモリモジュール及びチャネルを有するシステムにも適用されることを理解されたい。本例では、メモリモジュール100は、中央処理ユニット(central processing unit、CPU)、グラフィックス処理ユニット(graphics processing unit、GPU)、アクセラレーテッド処理ユニット(accelerated processing unit、APU)、特定用途向け集積回路(application specific integrated circuit、ASIC)、又は、計算を実行し、メモリ要求をメモリモジュール100に発行する任意の他の好適な集積回路であり得るホストプロセッサ104のメインメモリであり得る。また、キャッシュストレージは、ホストプロセッサ、メモリモジュール又はその両方に存在し得る。図4に示すように、任意の数のメモリモジュールは、ホストプロセッサ104と結合され、システムは、互いに動作可能に結合された複数のホストプロセッサ104を実装し得ることを理解されたい。
【0032】
また、メモリサブモジュールは、本明細書ではメモリバンクと称され得る。メモリサブモジュール112、114、116、118は、異種であり、短いデータワードの転送用の複数のメモリチャネル又はデータリンク200、202、204、206を介して、ホストインターフェース102と動作可能に結合されている。16個のサブモジュールがある例では、16個の短いデータワードリンクが存在し、各短いデータワードリンクは、例えば、16ビットの短いデータワード転送を容易にし、各メモリリンクは、他のリンクから独立して動作する。リンクの各々は、共有メモリデータバス207等の共有メモリチャネルのサブセクションを占有し得る。データリンク200、202、204、206は、全てのデータリンク200、202、204、206の合計幅がメモリチャネル108の幅に等しくなるように、メモリチャネル108よりも狭いチャネル幅を有する。
【0033】
図示した例では、メモリモジュール100は、16個の短いワードリンクを含み、それぞれ16ビットの幅を有し、合計256ビットであり、これはメモリチャネル108の幅に等しい。メモリサブモジュールをホストインターフェース102と結合するために、他のリンクが存在し得ることを理解されたい。例えば、各サブモジュールは、図1に示すように、メモリチャネル110を介してホストインターフェース102と動作可能に結合されてもよく、その場合、データリンク200、202、204、206の何れよりも大きいチャネル幅を有するメモリチャネル110は、マルチキャスト合体ブロックデータの転送の代わりに、連続ブロックデータの転送のために使用され、その詳細は、本明細書で更に開示される。
【0034】
本明細書で開示されるシステム及び方法は、メモリサブモジュールが、ホストプロセッサからブロードキャスト命令ストリームを受信するために、メモリチャネルへのアクセスを共有するというコンテキストで説明される。しかしながら、本明細書で開示される技術は、ブロードキャスト命令を受信するメモリサブモジュール分類の他の形態にも拡張され得ることが当業者には明らかであろう。
【0035】
図3は、メモリモジュール100とホストプロセッサ104との間でメモリチャネル110を介して転送される、マルチキャスト合体ブロックデータ300の一例を示す。ブロックデータ300は、各データセグメントが個別のメモリサブモジュールに関連するか又は関連付けられるように、データセグメント302、304、306、310を含む。すなわち、ロードコマンドの場合、各データセグメントは、1対1の対応で何れかのメモリサブモジュールから取り出された短いデータワードであり、すなわち、各メモリサブモジュールは、ブロックデータ300に1つだけの短いデータワードを寄与し得る。記憶コマンドの場合、各データセグメントは、1対1の対応で何れかのメモリサブモジュール内のロケーションに記憶される短いデータワードであり、すなわち、各メモリサブモジュールは、そこに記憶されるブロックデータ300から1つだけの短いデータワードを受信し得る。各短いデータワードは、メモリモジュール内のメモリサブモジュールの数に応じて、チャネル幅及びキャッシュライン幅よりも小さい任意の好適なワードサイズ(例えば8ビット、16ビット、32ビット、64ビット等)を有し得る。
【0036】
図2に示された例示的なシステムでは、転送されるブロックデータ300は16個のデータセグメントを含み、各セグメントは16ビットを有し、各セグメントはメモリサブモジュールのうち何れかだけに割り当てられる。例えば、データセグメント302はメモリサブモジュール112に割り当てられ、データセグメント304はメモリサブモジュール114に割り当てられ、データセグメント306はメモリサブモジュール116に割り当てられ、データセグメント308はメモリサブモジュール118割り当てられ、以下同様である。例示のみを目的として、CLDは、各メモリサブモジュール(いくつかの例では、PIMユニットを含み得る)が、256ビット(単一チャネルのメモリインターフェースのデータ転送幅)を16個のメモリサブモジュールで分割することによって計算された、16ビットのデータを返すことを容易にする。したがって、メモリサブモジュール112からのデータは、ブロックデータ300のビット0~15を占有し、メモリサブモジュール114からのデータは、ブロックデータ300のビット16~31を占有し、メモリサブモジュール116からのデータは、ブロックデータ300のビット32~47を占有し、以下同様に、メモリサブモジュール118からのデータは、ブロックデータ300のビット240~255を占有し得る。ブロックデータ300は、次いで、メモリモジュール100とホストプロセッサ104との間の単一のブロックデータ転送において、メモリチャネル108を経由して転送又は通信される。また、ブロックデータ300は、複数の個別の独立して機能するメモリサブモジュールにアドレス指定される複数の個別の短いデータワードを含むブロックデータの性質により、マルチキャスト合体ブロックデータとも称され、個別の短いデータワードは、マルチキャスト合体ブロックデータがメモリチャネルを介して送信される場合に、単一のブロックデータ転送において同時に転送される。
【0037】
図4は、複数のメモリモジュールであって、各々がメモリチャネル108を介してホストプロセッサ104と動作可能に結合されている、複数のメモリモジュール100、400、402、404を有するシステムの一例を示す。各メモリモジュールは、1つ以上のメモリダイと、処理ニアメモリ(processing-near-memory、PNM)技術によって提供された内蔵計算能力を有する1つ以上の論理ダイと、を含み得る。例えば、メモリモジュール100の計算能力は、メモリダイと3D積層されている個別の論理ダイ406上に実装され、メモリダイは、メモリサブモジュール112、114、116、118とともに実装され得る。メモリバンクとも称されるメモリサブモジュール112、114、116、118は、いくつかの例では、ダイナミックランダムアクセスメモリ(dynamic random access memory、DRAM)デバイスであり得る。他のメモリモジュール400、402、404の各々は、同様に構築され得る。本明細書において説明される実施形態は、バンクレベルのメモリ内処理(processing-in-memory、PIM)システムのように、計算能力(すなわち、コンピューティングユニット)が各メモリバンク又はメモリモジュールに組み込まれる場合にも適用可能である。例えば、コンピューティングユニットは、個別の論理ダイ上の代わりに、メモリダイ上に直接実装され得る。ホストとPIMユニットとの間のコマンド帯域幅の制限を克服するために、コマンドのストリームは、メモリモジュール内の複数のPIMユニットにブロードキャストされ得る。そのような構成の例示的な実施形態は、各PIMコマンドが、単一のメモリチャネルに関連付けられた全てのメモリバンクにブロードキャストされることである。更に、本明細書において説明される実施形態は、様々な構成で相互接続された複数のホストプロセッサ及びメモリモジュールからなり得る他のシステム構成にも適用可能である。
【0038】
特定の実施形態では、メモリ等の非一時的な記憶媒体は、ホストプロセッサ104又はデータ処理能力を有するメモリモジュール100等の1つ以上のプロセッサによって実行される場合に、図5図8で開示されるメモリチャネルを介したデジタルデータ転送を制御するための方法を1つ以上のプロセッサに実行させる実行可能命令を含む。
【0039】
図5は、ホストプロセッサ104によって、又は、PNMによって提供されるような内蔵計算能力を有する論理ダイ、若しくは、各メモリダイがそれ自体の独立した計算能力を有するPIMによって提供されるような内蔵計算能力を有するメモリダイの何れかを有するメモリモジュール100によって実行される、合体ブロックデータの転送を実行する方法500を示す。ステップ502では、プロセッサ又はメモリモジュールが、複数の短いデータワードをマルチキャスト合体ブロックデータに合体する。マルチキャスト合体ブロックデータは、メモリチャネルを介した転送用の単一のデータブロックを含み、短いデータワードの各々は、メモリモジュール内の少なくとも2つの分割されたメモリサブモジュールのうち何れかに関連する。いくつかの例では、短いデータワードは、短いデータワードがメモリサブモジュール内の特定のロケーションからロードされるか、又は、メモリサブモジュール内の特定のロケーションに記憶されるように、メモリサブモジュールのサブセットに関連付けられている。ステップ504では、複数の短いデータワードを含有する単一のデータブロックが、単一のデータ転送においてメモリチャネルを介して転送される。転送は、プロセッサからメモリモジュールへ、又は、メモリモジュールからプロセッサへであり得る。
【0040】
図6は、システム内の異なるモード間で切り替える方法600を示し、一方のモードは、方法500で説明されるように、プロセッサとメモリサブモジュールのうち少なくとも2つとの間でマルチキャスト合体ブロックデータの形成及び転送を容易にし、他方のモードは、プロセッサと単一のメモリサブモジュールとの間の連続ブロックデータの転送を容易にする。ステップ602では、プロセッサが、短いデータワードの合体の可能性を示す条件を検出する。ステップ604では、検出された条件に応じて、メモリモジュール又はプロセッサが、マルチキャスト合体ブロックデータの転送を容易にする第1のモードと、プロセッサとメモリサブモジュールのうち何れかとの間の連続ブロックデータの転送を容易にする第2のモードと、の間で切り替える。
【0041】
いくつかの実施形態では、条件を検出し、第1のモードと第2のモードとの間で切り替えるコマンドを発行するプロセスは、ホストプロセッサのメモリインターフェースにおけるホスト側で完全に行われる。複数のメモリサブモジュールに関連付けられた短いデータワードを合体させるためのマルチキャストメモリ合体動作は、メモリモジュールのホストにおけるメモリ側で行われ得るが(すなわち、合体ロードコマンドがプロセッサによって発行される場合)、ホストプロセッサは、条件を検出し、合体ロードコマンドの一部として発行され得るマルチキャスト合体要求をメモリモジュールに発行する責任がある。
【0042】
いくつかの実施形態では、条件は、プロセッサ上で実行中のアプリケーション又はアプリケーションによって発行された命令(例えば、「合体を開始する」ための特殊なメモリコマンド、又は、合体をトリガするアプリケーションによって発行された明示的な合体メモリコマンド)によって、明示的にトリガされる。いくつかの実施形態では、条件は、メモリインターフェースにおける疎(sparse)メモリアクセス動作の指標を含む。疎メモリアクセスは、より多くのデータビットの単一の連続セクション(例えば、キャッシュライン又はデータブロック全体)が単一のメモリサブモジュールにおいてアクセスされる連続メモリアクセスとは対照的に、メモリサブモジュールのうち2つ以上において、より少ないデータビット(例えば、短いデータワード)にまばらにアクセスするものとして定義される。例えば、メモリインターフェースは、メモリサブモジュールごとに個別のキューが存在するように、プロセッサからの一連のメモリコマンドをキューに記憶する、メモリコントローラを含み得る。メモリコントローラは、各キューの先頭のコマンドが、疎ビット又は短いデータワード用のメモリコマンドからなるというヒント又は指標を検出し、検出に応じて、キューからの疎ビット又は短いデータワードは、マルチキャスト合体ブロックデータに連結又は合体される。
【0043】
いくつかの実施形態では、メモリコントローラは、一連のメモリコマンドを単一のメモリキューに記憶し得る。この場合、条件は、異なるメモリサブモジュールにマッピングする短いデータワードに対するメモリコマンドを見つけるためにキューを周期的に検索することによって検出され得る。追加的又は代替的に、キューは、メモリコマンドを短いデータワードに挿入する際に、それが合体され得る異なるサブモジュール内の短いデータワードと同じ又は同様のタイプの他のコマンドを見つけるために検索され得る。合体可能コマンド数の閾値は、条件をトリガするために実装され得る。合体が、いくつかのアドレスオフセットビットを共有する短いデータワードに限定されている場合(例えば、短いデータワードが同じDRAM列インデックス内の場合)、合体の機会を検索する際にアドレスビットも比較される。そのような実施形態では、キューエントリは、関連付けられたメモリコマンドが短いデータワードを対象にするかどうかに関する情報、複数の短いデータワードがキューエントリに合体されたかどうかに関する情報、及び、キューエントリによって対象にされた短いデータワードに関するオフセット情報も含有し得る。
【0044】
図7は、プロセッサによって合体メモリロード動作を実行する方法700を示す。ステップ702では、プロセッサが、合体ロードコマンドをメモリモジュールに送信する。コマンドは、メモリモジュールに、メモリサブモジュールから短いデータワードを取り出させ、短いデータワードを合体ブロックデータに合体させるためにマルチキャストメモリ合体動作を実行させる。ステップ704では、プロセッサが、合体コマンドがメモリサブモジュールを直接対象にするか、又は、コマンドがインメモリレジスタ又はニアメモリレジスタを対象にするかを判定する。いくつかの例では、合体されているコマンドのタイプは、メモリサブモジュール、又は、インメモリレジスタ若しくはニアメモリレジスタが対象にされるかどうかを指定する。
【0045】
合体コマンドがメモリサブモジュールを対象にする場合、ステップ706では、プロセッサが、1つ以上のロケーション識別子をメモリモジュールに通信する。1つ以上のロケーション識別子は、メモリサブモジュール内の短いデータワードに関連付けられた複数のロケーション識別子を識別する。プロセッサは、メモリモジュールに、メモリサブモジュール内の識別されたロケーションから短いデータワードを取り出させ得る。短いデータワードは、メモリチャネルを介して単一のデータブロックとして転送される前に、マルチキャスト合体ブロックデータに合体される。その後、ステップ708では、プロセッサが、マルチキャスト合体ブロックデータを受信することに応じて、マルチキャスト合体ブロックデータから短いデータワードの各々を抽出する(又は、合体解除する)。
【0046】
合体メモリコマンドがインメモリレジスタ又はニアメモリレジスタを対象にする場合、ステップ710では、プロセッサが、メモリモジュールに、合体される短いデータワードを合体ブロックデータに記憶させるように、メモリサブモジュールの各々に関連付けられた少なくとも1つのレジスタを構成する。いくつかの実施形態では、レジスタは、メモリサブモジュールごとに実装され、直接アクセスされ得る。同じレジスタ及びレジスタ内の同じオフセットが全てのメモリサブモジュールに対してアクセスされる場合、いくつかの例によれば、短いデータワードの各々についてロケーション情報を供給する必要がない場合がある。短いデータワードをレジスタに配列することは、いくつかの例では、メモリサブモジュールからのメモリローカルのロードコマンドを実行することによって、プロセッサによって事前に調整され得る。いくつかの例では、レジスタ内の短いデータワードの配列は、メモリモジュールのニアメモリ処理能力又はインメモリ処理能力を使用して、短いデータワードの各々を処理する(例えば、短いデータワードに対して計算を実行する)ことによって調整され得る。ステップ712では、マルチキャストメモリ合体動作がプロセッサによって実行され、ステップ708に進む前に、レジスタから短いデータワードを読み取り、マルチキャスト合体ブロックデータを形成する。
【0047】
図8は、プロセッサによって合体メモリ記憶動作を実行する方法800を示す。ステップ802では、プロセッサが、メモリモジュールに転送されるマルチキャスト合体ブロックデータを生成する。ステップ804では、プロセッサが、合体コマンドがメモリサブモジュールを対象にするか、又は、コマンドがインメモリレジスタ若しくはニアメモリレジスタ対象にするかを判定する。
【0048】
合体コマンドがメモリサブモジュールを対象にする場合、ステップ806では、プロセッサが、1つ以上のロケーション識別子をメモリモジュールに送信する。ロケーション識別子は、メモリサブモジュール内の短いデータワードに関連付けられたロケーションを識別し、これにより、メモリモジュールに、メモリサブモジュール内の識別されたロケーションに短いデータワードを記憶させる。ステップ808では、プロセッサが、合体記憶コマンドをメモリモジュールに送信する。コマンドは、メモリモジュールにマルチキャストメモリ抽出動作を実行させて、マルチキャスト合体ブロックデータから短いデータワードを抽出し、短いデータワードをメモリサブモジュールに分配し、短いデータワードをメモリサブモジュール内の識別されたロケーションに記憶する。ステップ806及びステップ808は、順次又は同時に実行され得る。いくつかの例では、ロケーション識別子は、サブモジュールごとのレジスタ又はメモリサブモジュールに記憶されたデータに基づいて、インメモリ処理ロジックコンポーネント又はニアメモリ処理ロジックコンポーネントによって生成又は計算され得る。
【0049】
合体メモリコマンドがインメモリレジスタ又はニアメモリレジスタを対象にする場合、プロセッサはステップ810に進み、メモリモジュールに、マルチキャスト合体ブロックデータから短いデータワードを抽出することと、短いデータワードを少なくとも1つのレジスタに記憶することと、を行わせるように、メモリサブモジュールに関連付けられた少なくとも1つのレジスタを構成する。例えば、短いデータワードがメモリサブモジュールに固有のレジスタに記憶された後、メモリサブモジュールのニアメモリコンピューティングコンポーネント又はインメモリコンピューティングコンポーネントは、更なる計算及び/又はデータ移動のためにレジスタにアクセスし得る。
【0050】
方法700及び方法800では、ロケーション識別子は、サブモジュールごとのロケーションビットを伝送するために、合体ロード/記憶コマンド及び/又はデータバス中の数ビットを使用することによって通信され得る。代替的に、ロケーション識別子は、サブモジュールごとのロケーション情報を計算することによって、例えば、ロケーション識別子をロードすること、及び/又は、ロケーション識別子をニアメモリで計算し、その後、それをニアメモリレジスタに記憶することによって取得され得る。いくつかの例では、静的なロケーション情報、又は、全てのメモリサブモジュールに共通であるロケーション情報は、個別に伝送される必要がない場合がある。例えば、追加のサブモジュールごとのロケーションビットが共通ベースアドレスに追加され、合体コマンドが各メモリサブモジュール又はニアメモリレジスタ内の同じオフセットにある短いデータワードを対象にする場合、追加のロケーション情報が提供されないことがある。
【0051】
図9図14に示されるもの等のように、本明細書に開示されるようなロジックコンポーネントの何れも、個別論理、1つ以上のステートマシン、フィールドプログラマブルゲートアレイ(field programmable gate array、FPGA)、又は、命令を実行するプロセッサ/処理ロジックコンポーネント及び他のハードウェアの任意の好適な組み合わせとして実装され得る。実施形態によれば、ロジックデバイス又はロジックコンポーネントは、論理演算を実行することができるデバイス又はコンポーネント、例えば、ブール論理演算を実行することができる装置を含む。機能ブロックが示されており、様々な動作が、所望通りに、組み合わされ得るか又は分離され得ることが認識されよう。全ての機能ブロックが、全ての実施形態において必要とされるわけではないことも認識されよう。図に示される矢印は、ハード配線、又は、データバス等のデータチャネルを介する等のように、任意の好適なデータ経路を使用して実装され得る、指定されたロード動作又は記憶動作中のコンポーネント間のデータ転送の方向を定める。また、いくつかの実施形態は、データが1つ以上のレジスタにバッファリングされる転送/動作のパイプライン化を伴い得る。更に、簡略化のために、本明細書において説明される実施形態は、データアクセスのキャッシュライン全体が単一のメモリモジュールから提供される高帯域幅メモリ(high bandwidth memory、HBM)であるメモリモジュール100に関連する。
【0052】
本開示は、複数のメモリモジュールが単一のデータアクセスに寄与する他のタイプのメモリにも適用可能であることを理解されたい。そのような場合、複数の短いデータ要素(すなわち、短いデータワード)の単一のデータブロックへの合体は、各関与するメモリモジュール内で行われ得る。更に、図面は、16個のメモリバンク又はサブモジュールと、単一チャネルを介したブロックデータ転送用の256ビットのデータ幅(すなわち、チャネルへの各ロード動作又は記憶動作で転送されたデータのサイズ)を有するメモリチャネルインターフェースと、を有する例示的なシステムのコンテキストで提示されているが、とりわけ、より多い又はより少ないメモリサブモジュール及び/又はより広い又はより狭いメモリチャネル等のように、異なるパラメータを有するシステムの他の実施形態が可能であることを理解されたい。
【0053】
図9は、システム、より具体的には、メモリモジュール100とホストプロセッサ104との間のデータ転送を利用するコンピューティングシステムの一例を示す。本例では、メモリモジュール100は、複数のレジスタ912、914、916、918を有する複数の処理ロジックコンポーネント902、904、906、908を含むマルチキャスト合体ロジック900を含み、各プロセッサ及びレジスタは、メモリサブモジュール112、114、116、118のうち何れかに関連付けられる。処理ロジック902、904、906、908は、メモリサブモジュールに計算能力を提供するように構成されたニアメモリコンピューティングコンポーネント又はインメモリコンピューティングコンポーネントである。マルチキャスト合体ロジック900は、短いデータワードがデータリンク200、202、204、206を介して共有データバス又はデータチャネル934を通じて転送されるように、データリンク200、202、204、206と結合される。
【0054】
例示のみを目的として、処理ロジック902から受信されるか、又は、処理ロジック902に送信される短いワードデータは、データチャネル934のビット0~15を占有し、処理ロジック904から受信されるか、又は、処理ロジック904に送信される短いワードデータは、データチャネル934のビット16~31を占有し、処理ロジック906から受信されるか、又は、処理ロジック906に送信される短いワードデータは、データチャネル934のビット32~47を占有し、以下同様に、処理ロジック908から受信されるか、又は、処理ロジック908に送信される短いワードデータは、データチャネル934のビット240~255を占有し得る。いくつかの実施形態では、処理ロジック902、904、906、908は、合体ロード(coalesced load、CLD)動作及び合体記憶(coalesced store、CST)動作をサポートするのに十分な処理能力を含み、そのような動作のみのサポート専用であり得る。
【0055】
メモリモジュール100は、例えば、トライステートゲート又はマルチプレクサとして実装され得るモード選択コンポーネントであるモードセレクタ922を更に含む。モードセレクタ922は、説明されるように、マルチキャスト合体ブロックデータの転送を容易にする第1のモードと、連続ブロックデータの転送を容易にする第2のモードと、の間のスイッチとして動作する。モードセレクタ922は、切り替えを作動させるために制御ビットが利用されるように、プログラマブルロジックデバイスとして実装され得る。モードセレクタ922は、第1のモードではデータチャネル934を通じてデータを転送し、第2のモードではメモリサブモジュールセレクタ924との間でデータを転送するように構成されている。メモリサブモジュールセレクタ924は、全てのメモリサブモジュールによって共有され、モードセレクタ922が第2のモードで動作している場合に、提供されたメモリサブモジュール識別子(identifier、ID)910に基づいて、何れのサブモジュールにアクセスするかを選択するように構成される。モードセレクタ922及びサブモジュールセレクタ924の各々は、いくつかの実施形態によれば、(図に示すように)単一の中央ロケーションにおける単一のロジックコンポーネントとして実装され得る。代替的に、いくつかの実施形態では、モードセレクタ922及びサブモジュールセレクタ924のうち一方又は両方は、モードセレクタ922及び/又はサブモジュールセレクタ924が複数の個別に機能するロジックコンポーネントを含み、メモリサブモジュールによる単一の共有データチャネル又はデータバスへのアクセスを制御するために、少なくとも1つのロジックコンポーネントがメモリサブモジュールの各々の近くに配置されるように、分散して実装され得る。いくつかの例では、ロジックコンポーネントは、マルチプレクサ又はトライステートゲートを含み得るが、これらに限定されない。
【0056】
また、ホストプロセッサ104は、メモリモジュール100のマルチキャスト合体ロジック900とは別のマルチキャスト合体ロジック926を含み、したがって、異なる機能を有する。マルチキャスト合体ブロックデータの転送を実行する例は、上述したコンポーネントを考慮して、以下で詳細に説明される。
【0057】
CLD動作のいくつかの実施形態では、PIM実装システムについて、PIMレジスタ識別子が、PIMサポートを利用して、各メモリバンク又はサブモジュールに関連付けられたPIMユニットに対して指定される。PIMユニットの各々は、識別されたレジスタの短いデータワード(例えば、16ビット)を合体出力にもたらす。レジスタが短いデータワードの長さよりも広い場合、いくつかの実施形態は、レジスタの下位16ビット又はレジスタの何らかの他の固定オフセットを返すことができる。他の実施形態では、CLD動作は、ホスト上のソフトウェアが、各PIMユニットがレジスタの何れの16ビットを返すべきかを指定することを可能にするパラメータを有し得る。他の実施形態では、レジスタは、CLD動作が発行される前に、先験的にPIMユニットにおいてプログラムされ得る。
【0058】
他の実施形態のうちいくつかでは、CLD動作は、指定されたメモリロケーションに記憶された短いワードデータ(例えば、16ビット)を各メモリサブモジュールが読み取り、それを返すように、各メモリバンク又はサブモジュール内のメモリアドレスを指定し得る。一実施形態では、このことは、各メモリモジュールがCLD動作の一部としてブロードキャストモジュール内メモリアドレスを受信し、各メモリサブモジュール内のそのロケーションにあるデータを返すことによって達成される。他の実施形態では、このことは、追加のアドレス情報を各メモリサブモジュールに通信するためのサポートを利用する。このことは、バンクローカルアドレスの生成を介するか又はコマンドインターフェースを強化することによって、例えば、データバスを使用してコマンド情報を送信することによって、又は、代替的に、対象のアドレスビットを共有するコマンドを合体することによって達成され得る。
【0059】
CLD動作では、メモリサブモジュールの集合体にブロードキャストされたコマンドに応じて、メモリサブモジュールの各々は、メモリインターフェースの広いロードデータ返送内の固定された固有の位置で、データのチャンク又はブロックを要求ホストに返す。各メモリサブモジュールが、ホストに返されたデータ内の特定の固有のロケーションにデータを返すと、関与する全てのメモリサブモジュールは、メモリデータバス又はチャネルを経由して単一ブロックデータ転送において、それぞれのデータを返す。
【0060】
具体的には、いくつかの例によるCLD動作中に、ホストプロセッサ104は、アクセスするメモリサブモジュール112、114、116、118に関連付けられたサブモジュール固有のレジスタ912、914、916、918を指定する。インメモリ処理ロジックコンポーネント又はニアメモリ処理ロジックコンポーネント902、904、906、908の各々は、データチャネル934及び936を介してホストインターフェース102に出力されるため、対応するレジスタに記憶されるように、所定のワード長(例えば、図示した例では16ビット)の短いデータワードをもたらす。
【0061】
レジスタ912、914、916、918が、短いデータワードのワード長よりも広い場合に、いくつかの実施形態では、下位16ビット(又は、短いデータワードの長さに関連するビット数)が返されるか、又は、代替的に、他のオフセットが、レジスタ内の異なるロケーションから短いデータワードを取り出すために採用され得る。いくつかの実施形態では、CLD動作を開始すると、ホストプロセッサ104は、処理ロジック902、904、906、908の各々がレジスタの何れのビットを返すべきかを指定するコマンドを発行し得る。いくつかの実施形態では、レジスタ912、914、916、918には、CLD動作がホストプロセッサ104によって発行される前に、先験的にメモリチャネル930を介して短いデータワードを取り出すことによって、対応する処理ロジック902、904、906、908によって短いデータワードが取り込まれ得る。図のように、メモリチャネル930は、サブモジュール112、114、116、118とメモリバンクセレクタ924との間でブロックデータを転送するためにも同じチャネルが使用され得るので、データリンク200、202、204、206よりも広い(例えば、256ビット)。
【0062】
いくつかの例では、レジスタ912、914、916、918に、それぞれの対応するメモリサブモジュール112、114、116、118からの短いデータワードが取り込まれた後、処理ロジック902、904、906、908は、マルチキャスト合体ブロックデータとしてデータチャネル934を介して短いデータワードを転送する。モードセレクタ922が、マルチキャスト合体ブロックデータの転送を容易にする第1のモードに切り替わる場合に、ホストプロセッサ104は、データチャネル934を介してブロックデータを取り出すことができる。そうでなければ、モードセレクタ922が、連続ブロックデータの転送を容易にする第2のモードに切り替わる場合に、ホストプロセッサ104は、ホストプロセッサ104によって提供されたサブモジュールID910によって決定されるように、メモリサブモジュール112、114、116、118のうち何れかから別のデータチャネル932を介して連続ブロックデータを取り出すことができる。
【0063】
メモリチャネル108を介してマルチキャスト合体ブロックデータ受信することに応じて、ホストプロセッサ104は、内部データチャネル938を介してブロックデータをマルチキャスト合体ロジック926に転送し、それに応じて処理される短いデータワードをブロックデータから抽出する。したがって、マルチキャスト合体ロジック926は、抽出部又は合体解除コンポーネントとして動作することもでき、メモリモジュール100内のマルチキャスト合体ロジック900は、合体記憶動作に関して本明細書で更に説明するように、そのような動作を実行することもできる。
【0064】
CST動作のいくつかの実施形態では、PIM実装システムについて、PIMレジスタ識別子が、PIMサポートを利用して、各メモリバンク又はサブモジュールに関連付けられたPIMユニットに対して指定される。PIMユニットの各々は、合体された入力から受け取った短いデータワードを、識別されたレジスタに書き込む。レジスタが、短いデータワード(例えば、16ビット)の長さよりも広い場合、いくつかの実施形態は、下位16ビット内のデータに対してPIM動作を記憶又は実行し、例えば、マスキングを介して、残りのビットを0にし得る。他の実施形態は、16ビットの短いデータワードを符号拡張し、指定されたPIMレジスタを対象とする拡張データを用いて、PIM動作を記憶又は実行し得る。更に他の実施形態では、CST動作は、ホスト上のソフトウェアが、各PIMユニットが対応するデータをレジスタのどの16ビットに書き込むべきかを指定することを可能にするパラメータを有し得る。他の実施形態では、レジスタは、CST動作が発行される前に、先験的にPIMユニットにおいてプログラムされ得る。
【0065】
他の実施形態のうちいくつかでは、CST動作は、指定されたメモリロケーションに短いワードデータ(例えば、16ビット)を各メモリサブモジュールが書き込むように、各メモリバンク又はサブモジュール内のメモリアドレスを指定し得る。一実施形態では、このことは、各メモリモジュールがCST動作の一部としてブロードキャストモジュール内メモリアドレスを受信し、各メモリサブモジュール内のそのロケーションにデータを記憶することによって達成される。他の実施形態では、このことは、追加のアドレス情報を各メモリサブモジュールに通信するためのサポートを利用する。このことは、バンクローカルアドレスの生成を介するか又はコマンドインターフェースを強化することによって、例えば、データバスを使用してコマンド情報を送信することによって、又は、代替的に、対象のアドレスビットを共有するコマンドを合体することによって達成され得る。
【0066】
具体的には、いくつかの例では、ホストプロセッサ104は、マルチキャスト合体ロジック926が、メモリモジュール100に転送される複数の短いデータワードの合体を単一のデータブロック(又は、単一の書き込み動作)として実行し、その後、短いデータワードが抽出され、メモリサブモジュール112、114、116、118にわたって分配されるように、CLD動作とは反対方向にデータを転送する。例として、データ分配は、以下のように実行され得る。ホスト提供マルチキャスト合体ブロックデータのビット0~15のデータがサブモジュール112に送信され、ホスト提供マルチキャスト合体ブロックデータのビット16~31のデータがサブモジュール114に送信され、ホスト提供マルチキャスト合体ブロックデータのビット32~47のデータがサブモジュール116に送信され、以下同様に、ホスト提供マルチキャスト合体ブロックデータのビット240~255のデータがサブモジュール118に送信される。
【0067】
いくつかの実施形態では、CST動作は、サブモジュール112、114、116、118に関連付けられたレジスタ912、914、916、918を指定し、対応する処理ロジック902、904、906、908は、レジスタ912、914、916、198に記憶されるマルチキャスト合体ブロックデータから抽出された短いデータワード(例えば、16ビット)を書き込む。
【0068】
レジスタ912、914、916、918が、短いデータワードのワード長よりも広い場合に、いくつかの実施形態では、短いデータワードは、残りのビットを0のままにしておきながら、下位16ビット(又は、短いデータワードの長さに関係するビット数)に記憶され得る。いくつかの実施形態では、短いデータワードに対して符号拡張動作が実行されて、そのデータ長を、それを記憶するか、又は、プロセッサによって処理動作を実行する前に拡張し、拡張されたデータは、指定されたレジスタ912、914、916、918を対象とする。他の実施形態では、CST動作は、レジスタ912、914、916、918に記憶されたビットのうち何れが、処理ロジック902、904、906、908によって、対応するメモリサブモジュール112、114、116、118に書き込まれるべきかについて、ホストが指定することを可能にするパラメータを有し得る。
【0069】
CLD動作及びCST動作の両方において、ホストプロセッサ104は、モードセレクタ922及びサブモジュールセレクタ924の動作に関する命令を提供し得る。例えば、マルチキャスト合体ロジック926は、コマンドチャネル又はコマンドバス928を介してCLD動作又はCST動作を提供する際、モードセレクタ922を、連続ブロックデータの転送を容易にする第2のモードから、マルチキャスト合体ブロックデータの転送を容易にする第1のモードに切り替えるためのコマンド又は命令940を開始し得る。第1のモードに切り替えるための命令は、例えば、制御ビットが1である場合に第1のモードが作動され、制御ビットが0である場合に第2のモードが作動されるように、モードセレクタ922内の制御ビットを作動させるのと同じくらい簡単であり得る。そうでなければ、ホストプロセッサ104がモードセレクタ922を第2のモードに戻すように切り替えることを意図する場合(例えば、マルチキャスト合体ブロックデータの転送が完了した後)、これは、制御ビットを切り替えることによって達成することができる。
【0070】
いくつかの実施形態では、ニアメモリ処理ロジックコンポーネント又はインメモリ処理ロジックコンポーネント902、904、906、908は、ホストプロセッサ104によって供給されたマルチキャスト合体ブロックデータ、又は、メモリモジュール100、例えばレジスタ912、914、916、918に記憶された情報に基づいて、メモリサブモジュール112、114、116、118内の短いデータワードに関連付けられた特定のロケーションを識別する1つ以上のロケーション識別子(例えば、メモリアレイの列インデックス等のアドレスビット)を判定することができる。更に、図9は、それ自体のニアメモリプロセッサ又はインメモリプロセッサに関連付けられた各メモリサブモジュールを示すが、いくつかの実施形態では、単一のニアメモリプロセッサ又はインメモリプロセッサの処理能力は、複数のメモリサブモジュール間で共有され得る。
【0071】
いくつかの実施形態では、上述した2つのモード間を切り替えるための命令は、ニアメモリストレージから、例えば、処理ロジックコンポーネント902、904、906、908の何れかからの合体構成ビット944の転送によって示されるように、ニアメモリプロセッサ又はインメモリプロセッサによって提供され得る。プロセッサは、合体モードと連続モードとの間で切り替える条件を判定するときはいつでも、自身のニアメモリ記憶値を更新し得る。例えば、プロセッサは、本明細書で上述したもの等のように、マルチキャスト合体ブロックデータの転送の可能性を示す条件を検出することが可能であり得る。更に、いくつかの実施形態は、データが1つ以上の中間バッファレジスタ、例えば、モードセレクタ922とマルチキャスト合体ロジック900との間に配置され得る図11図14に示されたブロックデータレジスタ1102にバッファリングされる転送/動作のパイプライン化も伴い得る。
【0072】
図10は、マルチキャスト合体ロジック900の一部として処理ロジックコンポーネント902、904、906、908によって利用され得る異なるタイプのレジスタを示す。いくつかの実施形態では、オフセットレジスタ1000、1002、1004、1006は、対応するサブモジュールからロードされるか又は対応するサブモジュールに記憶される短いデータワードのオフセット情報を記憶するように実装され得る。例えば、CLD動作では、オフセットレジスタ1000、1002、1004、1006は、短いデータワードが他の短いデータワードと合体されてマルチキャスト合体ブロックデータ(ビット0~15を占有するメモリサブモジュール112からの短いデータワード、ビット16~31を占有するメモリサブモジュール114からの短いデータワード等)になる場合に、短いデータワードの特定のアドレスオフセットを記憶し得る。各アドレスオフセットは、占有されたビットの意図せぬ重複に起因して、短いデータワードエントリが別の短いデータワードエントリを上書きすることを避けるために、対応するメモリサブモジュールに対して異なり、固有である。
【0073】
更に、CST動作では、アドレスオフセットは、処理ロジック902、904、906、908が、取り出された短いデータワードを対応するメモリサブモジュール112、114、116、118に記憶するために、マルチキャスト合体ブロックデータの何れのビットから短いデータワードを取り出すべきかを識別するのを支援し得る。いくつかの実施形態では、オフセットレジスタ1000、1002、1004、1006は、プロセッサがベースアドレスを供給する場合に、処理ロジック902、904、906、908が、記憶されたオフセット情報及び提供されたベースアドレスに基づいて、複数のメモリサブモジュールの各々に関連付けられた固有のロケーション情報を計算することができるように、複数のオフセット情報を含有する。レジスタに記憶されたオフセット値は、CLD動作又はCST動作がホストプロセッサ104によって発行される前に、事前にプログラムされるか、又は、先験的に記憶され得る。
【0074】
いくつかの実施形態では、合体構成レジスタ1008、1010、1012、1014は、マルチキャスト合体ブロックデータの転送を示す条件を検出することに応じて、処理ロジックコンポーネント902、904、906、908によって判定されるように、モードセレクタ922によって選択されるモードに関するデータを記憶するように実装され得る。レジスタは、単一ビットを示すことができ、ビットが1である場合に第1のモードが作動され、ビットが0である場合に第2のモードが作動される。短いデータレジスタ1016、1018、1020、1022は、CLD動作中にマルチキャスト合体ブロックデータに合体される短いデータワード、又は、CST動作中に対応するメモリサブモジュール112、114、116、118に記憶される短いデータワードを記憶するレジスタである。いくつかの例では、CLD動作は、短いデータワードを取得するために、短いデータレジスタ1016、1018、1020、1022(又は、1つ以上のサブモジュールごとのニアメモリレジスタ)から読み取り、その場合、短いデータワードは、前のニアメモリ処理動作の結果としてレジスタに既に記憶されている。したがって、短いデータワードは、動作が発行される前に、これらの短いデータレジスタに先験的に記憶され得る。
【0075】
図11は、メモリモジュール100とホストプロセッサ104との間のデータ転送を利用するコンピューティングシステムの一例を示す。本例では、ホストプロセッサ104は、モードセレクタ922を動作させる命令と、短いデータワードの各々についてのアドレスオフセットと、メモリサブモジュール112、114、116、118の各々についてのロケーションアドレスと、を提供する。アドレスオフセット及びロケーションアドレスは、命令コマンド1100として、マルチキャスト合体ブロックデータを記憶するためのブロックデータレジスタ1102と結合されたマルチキャスト合体ロジック900及びメモリサブモジュールに、ホストプロセッサ104からそれぞれ送信される。アドレスオフセットは、短いデータワードの位置が、マルチキャスト合体動作中にどれだけシフトされるかを定義し、ロケーションアドレスは、CLD動作又はCST動作のためにアクセスされる、指定されたメモリサブモジュール内の特定のロケーション(例えば、メモリサブモジュール内のメモリアレイの列インデックス)を定義する。いくつかの例では、ニアメモリ整数加算器が、メモリサブモジュールのロケーションアドレスを生成するように実装され得る。図12及び図14は、CLD動作中の図11に示されたシステム内のデータフローを示し、図13は、CST動作中のシステム内のデータフローを示す。
【0076】
図12は、CLD動作を動作させるシステムの一例を示し、マルチキャスト合体ロジック900は、アドレスシフトコンポーネントと結合された連結ロジック1200を含み、本例では、アドレスシフトコンポーネントは、プログラム可能であり、メモリサブモジュール112、114、116、118からロードされるデータを受信するように構成され得るシフタ/セレクタロジック1202、1204、1206、1208である。シフタ/セレクタロジック1202、1204、1206、1208は、対応するメモリサブモジュール112、114、116、118から連続ブロックデータを受信するように構成される。次いで、シフタ/セレクタロジック1202、1204、1206、1208は、(1)ブロックデータレジスタ1102に記憶するために、連続ブロックデータから短いデータワードを選択するか、又は、(2)ブロックデータレジスタ1102に短いデータワードを記憶する前に、アドレスオフセットだけ短いデータワードをシフトするように構成される。
【0077】
セレクタロジック(1)が実装される場合、短いデータワードは、アドレスシフトを実行することなく、所定のアドレスオフセットを使用して選択される。シフタロジック(2)が使用される場合、短いデータワードは、それぞれのオフセットを使用して、第1の所定数のビットに別々にシフトされ、第1のビットから始まる所定数のビットが、短いデータワードを取得するために選択される。記憶された短いデータワードは、文字列連結を実行して短いデータワードを端から端まで接合する連結ロジック1200を使用して合体される。
【0078】
図示されていないが、シフタ/セレクタロジック1202、1204、1206、1208は、(連続ブロックデータ内のどのビット又はロケーションが、短いデータワードとして選択されるべきかを判定する)ロケーションアドレス、及び/又は、(合体の前に短いデータワードに対して実行されるシフト量を判定する)アドレスオフセット値を記憶するように構成されたレジスタを含み得る。
【0079】
短いデータワード抽出ロジック1210は、単一のブロックデータ転送においてメモリチャネル108を介してマルチキャスト合体ブロックデータを受信した後に、マルチキャスト合体ブロックデータから個々の短いデータワードを抽出するために、ホストプロセッサ104において実装され得る。各シフタ/セレクタロジック1202、1204、1206、1208は、ホストプロセッサ104によって提供された命令コマンド1100内のアドレスオフセット情報を受信し、アドレスオフセット情報は、各メモリサブモジュールからの短いデータワードがマルチキャスト合体ブロックデータ内の何処に位置するべきかを定義する。各メモリサブモジュール112、114、116、118は、短いデータワードが取り出されるべきロケーションをメモリアドレスレジスタに記憶するために、命令コマンド1100中のロケーションアドレス情報を受信し得る。
【0080】
図13は、CST動作を動作させるシステムの一例を示し、ホストプロセッサ1300は、複数のメモリサブモジュール112、114、116、118に記憶される短いデータワードを含むマルチキャスト合体ブロックデータを形成するための連結ロジック1300を含む。マルチキャスト合体ロジック900は、この場合、合体解除経路を介してマルチキャスト合体ブロックデータを受信し、ホストプロセッサ104によって意図されるように、短いデータワードをそれぞれのメモリサブモジュールに分配するためのサブセット分配ロジック1302、1304、1306、1308を含む。いくつかの例では、サブセット分配ロジックは、何れの短いデータワードが書き込まれる必要があるかを示すために、及び、メモリアレイの列インデックス内の他のビットを書き込むことを防止するために、マルチキャスト合体ロジックからメモリサブモジュールに通信される追加のアドレスオフセットビットを更に実装する。
【0081】
ブロックデータレジスタ1102は、ホストプロセッサ104から受信したマルチキャスト合体ブロックデータを記憶し、記憶されたデータは、データチャネル1310、1312、1314、1316を介して各サブセット分配ロジック1302、1304、1306、1038に転送される。各サブセット分配ロジックは、ホストプロセッサ104によって提供された命令コマンド1100内のアドレスオフセット情報を受信し、アドレスオフセット情報は、マルチキャスト合体ブロックデータ内の何れのビットが何れのメモリサブモジュールに分配されるべきかを定義する。いくつかの例では、各サブセット分配ロジックは、ブロックデータレジスタ1102に記憶されたデータのサブセットを駆動するために利用され得る。各メモリサブモジュール112、114、116、118は、短いデータワードが記憶されるべきロケーションをメモリアドレスレジスタに記憶するために、命令コマンド1100中のロケーションアドレス情報を受信し得る。
【0082】
図14は、CLD動作を動作させるシステムの一例を示し、図12からのシフタ/セレクタロジック1202、1204、1206、1208がマルチキャスト合体ロジック900から除外されている。代わりに、ブロックデータレジスタ1102内の対応するメモリサブモジュール112、114、116、118からの短いデータワードのアドレスオフセットは、先験的に構成可能であるか、又は、予め定められている。すなわち、短いデータワードのオフセットは、静的オフセットであり、その場合、ブロックデータレジスタ1102内の適切なビットへのデータ接続は、各メモリサブモジュールからの短いデータワードのアドレスビットが、ブロックデータレジスタ1102内のある所定の又は事前構成されたビットに記憶されるように自動的にシフトされるように、ハード配線され得る(したがって、アドレスシフトコンポーネントを形成する)。
【0083】
更に、連結ロジック1200も、マルチキャスト合体ロジック900から除外されている。図12のようにブロックデータレジスタ1102に記憶されるデータの単一ブロックへの短いデータワードの合体を制御するために連結ロジック1200を使用する代わりに、メモリサブモジュール112、114、116、118からの位置シフトされた短いデータワードは、短いデータワードのビットをブロックデータレジスタ1102に転送するために、これらのメモリサブモジュールからの配線をデータバスに直接接合することによって互いに連結される。
【0084】
いくつかの実施形態では、CLD動作及びCST動作は、コマンドバスではなくデータバスを介して部分コマンド情報を通信することによって実行され得る。例えば、図9に示すようなPNM能力又はPIM能力を有するメモリモジュール100を伴うCLD動作では、組み合わされた短いデータワードは、マルチキャスト合体ブロックデータの一部を占有し、その結果、ブロックデータの残りの部分は、短いデータワードの各々についてのアドレスビット等の他の情報を記憶するために使用される。同様に、CST動作では、短いデータワードの各々に対するアドレスビットは、メモリサブモジュールに記憶される短いデータワードによって占有されないマルチキャスト合体ブロックデータの一部に実装され得る。
【0085】
特定の実施形態では、メモリ等の非一時的な記憶媒体は、ホストプロセッサ104又はPNM/PIMデバイス等の1つ以上のプロセッサによって実行される場合に、各メモリサブモジュール内の対応するロケーションに関連付けられた短いデータワードへのCLD動作及びCST動作を介した疎アクセスが調整され得るように、1つ以上のプロセッサに短いデータワードを配列させる、実行可能命令、コマンド又はアドレス情報を含む。これは、多次元行列又はテンソルの副軸に沿ったアクセス等の決定論的な疎アクセスパターンを有する状況又は機械学習ベースの推奨システムを伴うアプリケーションを含むがこれに限定されない、PNM動作又はPIM動作の効率的な使用のために、大きなテーブルエントリがメモリサブモジュールにわたって分割される状況において、適用可能であり得る。いくつかの実施形態では、合体は、ソフトウェアの実施形態を介して明示的に実行されてもよく、そのための実行可能命令は、非一時的な記憶媒体に記憶される。例えば、ソフトウェアを実行しているプロセッサは、キャッシュをバイパスする事前合体要求を送信してもよく、その要求は、合体のための追加のハードウェアを必要とせずに、メモリコントローラで処理される。
【0086】
いくつかの実施形態では、実行可能命令は、1つ以上のプロセッサによって実行される場合に、1つ以上のプロセッサに、独立した細粒度の疎アクセスを送信させ、これらのアクセスは、次に、例えば、個別論理、ステートマシン、FPGA、又は、命令を実行するプロセッサの任意の好適な組み合わせ等のハードウェアを介して合体される。ホストプロセッサ104は、独立アクセス及び同時アクセスによって対象にされたデータチャネル及びメモリサブモジュールを監視することに基づいて、合体の機会を動的に検出することが可能であり得る。また、ホストプロセッサ又はPNM/PIMデバイスは、独立した要求(すなわち、メモリサブモジュールへのアクセスを要求するCLDコマンド又はCSTコマンド)を統合又は合体することが可能であり、CLD動作又はCST動作中に応答を分割することが可能であり得る。
【0087】
疎コマンドがキャッシュ階層をトラバースすることが可能である場合、いくつかの例によれば、これらの要求は、キャッシュコントローラによって異なって処理されるため、疎アクセスと、単一のメモリサブモジュールを伴う連続ブロックデータアクセス等の非疎データアクセスと、を区別する必要があり得る。そのような状況では、区別は、例えば、コマンド内に追加のビット又はオペコードを実装することによって、容易にされ得る。いくつかの実施形態では、疎アクセスは、データの完全なキャッシュラインにアクセスしないので、疎アクセスは、非疎データアクセスとは異なって処理される。したがって、いくつかの例によれば、疎アクセスは、(例えば、キャッシュされていないアドレス範囲に対する既存のサポートを使用して)キャッシュを単純にバイパスし得る。代替的に、いくつかの例によれば、疎アクセスは、キャッシュをトラバースし得るが、ミス時にキャッシュブロックを割り振るか又は追加することを防止され得る。いくつかの実施形態では、キャッシュは、疎アクセスの粒度で状態情報を追跡するセクタマスクを用いて強化され、キャッシュが部分的に有効なキャッシュブロックを記憶することを可能にする。
【0088】
レジスタオフセット情報(PNM/PIMレジスタが実装される場合)又はアドレスオフセット情報を利用するマルチキャストメモリ合体動作の場合、ホストプロセッサからのコマンドは、非疎アクセスと比較して、追加のアドレス情報を必要とする場合がある。このことは、キャッシュライン内の何れのバイトが疎コマンドによってアクセスされるかを示すために、ビットマスク又はバイトマスクを使用して、要求をより多くのパケットに分割することによって、又は、コマンドバス928等の専用データパスに沿って要求の一部又は全てを送信することによって実装され得る。
【0089】
ホストプロセッサが合体の機会を動的に検出することができるシステムの場合、プロセッサは、疎メモリアクセスに関連付けられた要求及び応答を統合及び/又は分割するための手段とともに実装され得る。いくつかの実施形態では、合体動作は、メモリコントローラ内で行われ、要求は、対象のメモリサブモジュールに基づいて異なるキューに既にソートされている。複数のメモリサブモジュールのキューの先頭で疎メモリアクセスが検出された場合、メモリコントローラは、要求を一緒に統合し、メモリサブモジュールに関連付けられた全ての要求を含む単一のCLD動作又はCST動作を発行する。いくつかの実施形態では、疎メモリアクセスがバンクキューの先頭に到達する場合に、他のキュー内の要素(又は、他のキュー内の要素のサブセット)が、元の疎メモリアクセスを有する単一のメモリ要求に合体され得る疎メモリアクセスを見つけるために検索される。いくつかの実施形態では、疎メモリアクセス要求は、個別のキューに配列され、異なるサブモジュールへの合体可能な疎メモリアクセスの閾値に達した場合又はタイミング閾値を超えた場合に、疎メモリアクセス要求は、個別のキューから密メモリアクセス要求(すなわち、単一のメモリサブモジュールからのデータの連続ブロックにアクセスする要求)とインターリーブされる。
【0090】
CLD動作又はCST動作に関与する要求に対する応答を送信する際、メモリコントローラは、応答を分割し、個々の疎メモリアクセス応答を(場合によっては、キャッシュ階層を通じて)要求プロセッサに返し得る。このことは、全ての保留中の疎メモリアクセスについての応答メタデータ(例えば、要求元ID、疎アドレスオフセット又はアクセス粒度)をメモリコントローラ内の小さい構造に記憶することによって達成され得る。疎メモリアクセス応答がメモリモジュールから返される場合に、メモリコントローラは、疎粒度に基づいて、メモリモジュールのデータコンテンツを複数の応答パケットに分割し、記憶されたメタデータをこれらのパケットに付加し得る。疎メモリアクセス応答がキャッシュ階層を通じて要求元に返される場合、キャッシュは、有効状態追跡の粒度が疎粒度よりも大きい場合、このデータ用の空間を割り振ることができない。
【0091】
本明細書で開示されるようなマルチキャストメモリ合体/抽出動作を実行する能力を有するシステムを実装することの利点は、単一のロード動作において、メモリチャネルに関連付けられたPNM/PIMデバイスの集合体からホストプロセッサにメタデータ(例えば、各PNM/PIMデバイスにおける不規則計算に関与するデータ要素数)を読み出す/ロードする際の効率の向上を含む。また、メタデータ(例えば、異なるループ反復回数)は、単一の記憶動作において、メモリチャネルに関連付けられたPNM/PIMデバイスの集合体に効率的に書き込まれ/記憶され得る。条件コード(例えば、何れのPNM/PIMデバイスが、動的に計算されたデータ依存条件を満たすデータを有するか)は、単一のストア動作において、メモリチャネルに関連付けられたPNM/PIMデバイスの集合体の各々から効率的に読み出されるか又はロードされ得る。
【0092】
更に、メモリチャネルと結合されたメモリバンク又はサブモジュールの集合体にわたって分配された短いデータワードは、メモリサブモジュールの各々からデータの完全なキャッシュラインを無駄に転送する必要なく、効率的にロード又は記憶され得る。このことは、科学計算(例えば、高性能コンピューティング、すなわち、high-performance computing、HPC)及びグラフ分析等の多くのアプリケーションドメインの性能と、ハッシュ表及びセットメンバーシップデータ構造等の広く使用されているデータ構造を実装する性能と、を改善する。また、本明細書で開示されるシステム及び方法は、メモリバンク又はサブモジュールに関連付けられた複数のニアメモリ処理ユニット又はインメモリ処理ユニットへ又はそれらから短いデータワードを転送することが多い、ニアメモリ処理技術又はインメモリ処理技術の性能を改善する能力も提供する。追加的に、(例えば、高スループット細粒度アトミックアクセスのために)異なるメモリサブモジュールから短いデータワードをロードし、供給されたオペランドとメモリサブモジュールを組み合わせることを必要とするロード動作のために、細粒度のオペランドが複数のメモリサブモジュールに同時に効率的に提供され得る。また、本明細書で開示されるようなマルチキャストメモリ合体動作は、グラフ分析、疎行列代数、スパース機械学習モデル等に存在するもの等の疎メモリアクセスパターンに対するメモリモジュールの効率(例えば、DRAM効率)を改善する際にも有効である。
【0093】
特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。いくつかの実施形態において本明細書において説明される装置は、汎用コンピュータ又はプロセッサによる実施のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実施され得る。コンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(random-access memory、RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD)等の光学媒体が挙げられる。
【0094】
様々な実施形態の上述した詳細な説明では、その一部を形成し、本発明が実施され得る特定の好ましい実施形態を例として示す添付図面を参照した。これらの実施形態は、当業者が本発明を実施することを可能にするために十分に詳細に説明されており、他の実施形態が利用され、本発明の範囲から逸脱することなく論理的、機械的及び電気的変更が行われ得ることを理解されたい。当業者が、本発明を実施することを可能にするために、必要でない詳細を避けるために、説明は、当業者に知られている特定の情報を省略する場合がある。更に、本開示の教示を組み込む多くの他の様々な実施形態が当業者によって容易に構築され得る。したがって、本発明は、本明細書に記載される特定の形態に限定されることを意図するものではなく、逆に、本発明の範囲内に合理的に含まれ得るそのような代替形態、修正形態及び均等物を包含することを意図するものである。したがって、上述した詳細な説明は、限定的な意味で解釈されるべきではなく、本発明の範囲は、添付の特許請求の範囲によってのみ定義される。本明細書において説明される実施形態及び実施例の上記の詳細な説明は、限定ではなく、例示及び説明のためにのみ提示されている。例えば、説明された動作は、任意の好適な順序又は方法で行われる。したがって、本発明は、上記で開示され、本明細書で特許請求される基本的な基礎原理の範囲内に入るあらゆる修正、変形又は等価物を包含することが企図される。
【0095】
上述したように、本明細書で開示されるようなシステム及び方法は、複数の異種メモリサブモジュールからの短いデータワードを合体又は集約し、メモリチャネルを経由して、マルチキャスト合体ブロックデータを単一ブロックデータ転送において同時に転送又は通信することによって、データ転送オーバーヘッドを低減するのに役立つ。短いデータワードは、分割されたメモリサブモジュールの集合体の各々から、単一ブロックデータ転送内の固有の位置にあるホストプロセッサに戻されるか若しくはロードされるか、又は、単一ブロックデータ転送内の固有の位置にあるホストプロセッサから、分割されたメモリサブモジュールの集合体の各々に書き込まれるか若しくは記憶される。更に、実行ユニットがメモリバンクに関連付けられているいくつかのPIMアーキテクチャでは、例えば、データ依存の条件又はステータスをホストプロセッサに報告するために、又は、PIMユニット間で変化し得るループ反復回数を書き込むために、PIMユニットとメイン(又は、ホスト)プロセッサとの間で少量のデータを読み書きする必要がある場合がある。本明細書で開示するようなシステム及び方法は、そのような例における狭いデータアクセスのオーバーヘッドを低減することを容易にする。
【0096】
上記の詳細な説明及びそこで説明される実施例は、限定のためではなく、例示及び説明のためにのみ提示されている。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
【手続補正書】
【提出日】2023-11-28
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
メモリモジュールとプロセッサとの間のメモリチャネルを介したデジタルデータ転送を制御するための方法であって、
前記メモリモジュール又は前記プロセッサのうち少なくとも1つが、複数の短いデータワードを、前記メモリチャネルを介して転送するための単一のデータブロックを含むマルチキャスト合体ブロックデータに合体することであって、前記複数の短いデータワードの各々は、前記メモリモジュール内の少なくとも2つの分割されたメモリサブモジュールのうち何れかに関連する、ことと、
前記メモリチャネルを介して前記マルチキャスト合体ブロックデータを通信することと、を含む、
方法。
【請求項2】
前記プロセッサが、短いデータワードの転送を示す条件を検出することと、
前記検出された条件に応じて、前記メモリモジュール又は前記プロセッサのうち少なくとも1つが、前記マルチキャスト合体ブロックデータの転送を容易にする第1のモードと、前記プロセッサと何れかのメモリサブモジュールとの間の連続ブロックデータの転送を容易にする第2のモードと、を切り替えることと、を更に含む、
請求項1の方法。
【請求項3】
前記プロセッサが、合体ロードコマンドを前記メモリモジュールに送信して、前記メモリモジュールに、前記メモリサブモジュールから前記短いデータワードを取得させ、マルチキャストメモリ合体動作を実行させて、前記短いデータワードを前記マルチキャスト合体ブロックデータに合体させることと、
前記マルチキャスト合体ブロックデータを受信したことに応じて、前記プロセッサが、前記マルチキャスト合体ブロックデータから前記短いデータワードの各々を抽出することと、を更に含む、
請求項1の方法。
【請求項4】
前記プロセッサが、前記メモリサブモジュール内の前記短いデータワードに関連付けられた複数のロケーションを識別する1つ以上のロケーション識別子を前記メモリモジュールに送信して、前記メモリモジュールに、前記メモリサブモジュール内の識別されたロケーションから前記短いデータワードを取得させることを更に含む、
請求項3の方法。
【請求項5】
前記プロセッサが、前記プロセッサがアクセス可能な前記短いデータワードを前記マルチキャスト合体ブロックデータに合体するために記憶するように、前記メモリサブモジュールの各々に関連付けられた少なくとも1つのレジスタを構成することを更に含む、
請求項1の方法。
【請求項6】
前記プロセッサが、前記メモリモジュールに転送される前記マルチキャスト合体ブロックデータを生成することと、
前記プロセッサが、合体記憶コマンドを前記メモリモジュールに送信して、前記メモリモジュールに、マルチキャストメモリ抽出動作を実行させて、前記マルチキャスト合体ブロックデータから前記短いデータワードを抽出することと、前記短いデータワードを前記メモリサブモジュールに分配することと、前記短いデータワードを前記メモリサブモジュール内に記憶することと、を行わせることと、を更に含む、
請求項1の方法。
【請求項7】
前記プロセッサが、前記メモリサブモジュール内の前記短いデータワードに関連付けられた複数のロケーションを識別する1つ以上のロケーション識別子を前記メモリモジュールに送信して、前記メモリモジュールに、前記メモリサブモジュール内の識別されたロケーションに前記短いデータワードを記憶させることを更に含む、
請求項6の方法。
【請求項8】
前記プロセッサが、前記メモリモジュールに転送される前記マルチキャスト合体ブロックデータを生成することと、
前記プロセッサが、前記メモリモジュールに、前記マルチキャスト合体ブロックデータから前記短いデータワードを抽出することと、前記短いデータワードを前記少なくとも1つのレジスタに記憶することと、を行わせるために、前記メモリサブモジュールに関連付けられた少なくとも1つのレジスタを構成することと、を更に含む、
請求項1の方法
【請求項9】
前記プロセッサが、前記メモリモジュールに転送される前記マルチキャスト合体ブロックデータを生成することと、
前記メモリモジュールに、前記プロセッサによって供給された前記マルチキャスト合体ブロックデータ又は前記メモリモジュールに記憶された情報に基づいて、前記メモリサブモジュール内の前記短いデータワードに関連付けられた複数のロケーションを識別する1つ以上のロケーション識別子を判定させるように、前記プロセッサが、前記メモリモジュールを構成することと、を更に含む、
請求項1の方法
【請求項10】
プロセッサであって、
メモリチャネルを介してメモリモジュールと通信するように構成されたメモリインターフェースと、
マルチキャスト合体ロジックと、を備え、
前記マルチキャスト合体ロジックは、
複数の短いデータワードを、転送する前に単一のデータブロックを含むマルチキャスト合体ブロックデータに合体させることによって、前記メモリチャネルを介した前記プロセッサと前記メモリモジュールとの間のデータ転送を実行することであって、前記複数の短いデータワードの各々は、少なくとも2つの分割されたメモリサブモジュールのうち何れかに関連する、ことと、
前記メモリチャネルを介して前記マルチキャスト合体ブロックデータを通信することと、
を行うように構成されている、
プロセッサ。
【請求項11】
前記マルチキャスト合体ロジックは、
前記メモリサブモジュールに関連付けられたメモリコントローラに、前記マルチキャスト合体ブロックデータの転送を容易にする第1のモードと、前記プロセッサと何れかのメモリサブモジュールとの間の連続ブロックデータの転送を容易にする第2のモードと、を切り替えるための条件を検出させるように、前記メモリコントローラを構成するように構成されており、
前記条件は、短いデータワードの転送を示す、
請求項10のプロセッサ。
【請求項12】
前記マルチキャスト合体ロジックは、
合体ロードコマンドを前記メモリモジュールに送信して、前記メモリモジュールに、前記メモリサブモジュールから前記短いデータワードを取得させ、マルチキャストメモリ合体動作を実行させて、前記短いデータワードを前記マルチキャスト合体ブロックデータに合体させることと、
前記マルチキャスト合体ブロックデータを受信したことに応じて、前記マルチキャスト合体ブロックデータから前記短いデータワードの各々を抽出することと、
を行うように構成されている、
請求項10のプロセッサ。
【請求項13】
前記マルチキャスト合体ロジックは、
前記メモリサブモジュール内の前記短いデータワードに関連付けられた複数のロケーションを識別する1つ以上のロケーション識別子を前記メモリモジュールに送信して、前記メモリモジュールに、前記メモリサブモジュール内の識別されたロケーションから前記短いデータワードを取得させるように構成されている、
請求項12のプロセッサ。
【請求項14】
前記マルチキャスト合体ロジックは、
前記メモリモジュールに、前記メモリサブモジュールから前記短いデータワードを読み取らせ、マルチキャストメモリ合体動作を実行させて、少なくとも1つのレジスタからの前記短いデータワードを前記マルチキャスト合体ブロックデータに合体させるように、前記メモリサブモジュールに関連付けられた前記少なくとも1つのレジスタを構成するように構成されている、
請求項10のプロセッサ。
【請求項15】
前記マルチキャスト合体ロジックは、
前記メモリモジュールに転送される前記マルチキャスト合体ブロックデータを生成することと、
合体記憶コマンドを前記メモリモジュールに送信して、前記メモリモジュールに、マルチキャストメモリ抽出動作を実行させて、前記マルチキャスト合体ブロックデータから前記短いデータワードを抽出することと、前記短いデータワードを前記メモリサブモジュールに分配することと、前記短いデータワードを前記メモリサブモジュール内に記憶することと、を行わせることと、
を行うように構成されている、
請求項10のプロセッサ。
【請求項16】
前記マルチキャスト合体ロジックは、
前記メモリサブモジュール内の前記短いデータワードに関連付けられた複数のロケーションを識別する1つ以上のロケーション識別子を前記メモリモジュールに送信して、前記メモリモジュールに、前記メモリサブモジュール内の識別されたロケーションに前記短いデータワードを記憶させるように構成されている、
請求項15のプロセッサ。
【請求項17】
前記マルチキャスト合体ロジックは、
前記メモリモジュールに転送される前記マルチキャスト合体ブロックデータを生成することと、
前記メモリモジュールに、前記マルチキャスト合体ブロックデータから前記短いデータワードを抽出することと、前記短いデータワードを少なくとも1つのレジスタに記憶することと、を行わせるために、前記メモリサブモジュールに関連付けられた前記少なくとも1つのレジスタを構成することと、
を行うように構成されている、
請求項10のプロセッサ。
【請求項18】
ステムであって
数の分割されたメモリサブモジュールを含むメモリモジュールと、
請求項10~17の何れかのプロセッサと、を備える、
システム。
【国際調査報告】