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

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

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

<>
  • 特許-マルチバンクメモリコマンドの動的統合 図1
  • 特許-マルチバンクメモリコマンドの動的統合 図2
  • 特許-マルチバンクメモリコマンドの動的統合 図3
  • 特許-マルチバンクメモリコマンドの動的統合 図4
  • 特許-マルチバンクメモリコマンドの動的統合 図5
  • 特許-マルチバンクメモリコマンドの動的統合 図6
  • 特許-マルチバンクメモリコマンドの動的統合 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-01
(45)【発行日】2024-02-09
(54)【発明の名称】マルチバンクメモリコマンドの動的統合
(51)【国際特許分類】
   G06F 12/06 20060101AFI20240202BHJP
   G06F 12/00 20060101ALI20240202BHJP
【FI】
G06F12/06 550B
G06F12/00 560F
【請求項の数】 26
(21)【出願番号】P 2022574752
(86)(22)【出願日】2021-06-14
(65)【公表番号】
(43)【公表日】2023-07-11
(86)【国際出願番号】 US2021037290
(87)【国際公開番号】W WO2021253012
(87)【国際公開日】2021-12-16
【審査請求日】2023-06-02
(31)【優先権主張番号】16/900,526
(32)【優先日】2020-06-12
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ジョナサン オルソップ
(72)【発明者】
【氏名】シャイジーン ディラワーフセン アガ
【審査官】後藤 彰
(56)【参考文献】
【文献】国際公開第2015/025357(WO,A1)
【文献】特開平11-328095(JP,A)
【文献】特開2010-218350(JP,A)
【文献】特表2017-534943(JP,A)
【文献】特開2003-272384(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 12/06
(57)【特許請求の範囲】
【請求項1】
装置であって、
要求キューと、
制御ロジックと、を備え、
前記制御ロジックは、
1つ以上の条件を満たす、前記要求キュー内の第1の要求及び1つ以上の他の要求に基づいて、単一のマルチバンクコマンドを生成することと、
前記単一のマルチバンクコマンドと、前記単一のマルチバンクコマンドによってターゲットとされるメモリのサブセットを識別するマルチバンクコードと、を前記メモリに送信することであって、前記サブセットは、前記メモリの2つ以上のバンクを含み、前記単一のマルチバンクコマンドは、前記2つ以上のバンクの各々に送信される、ことと、
を行うように構成されている、
装置。
【請求項2】
前記1つ以上の条件は、
前記第1の要求及び前記1つ以上の他の要求が、複数のメモリバンクにわたる共通列をターゲットとすることと、
前記第1の要求及び前記1つ以上の他の要求が、共通のオペレータ識別子(ID)を共有することと、
のうち少なくとも1つを含む、
請求項1の装置。
【請求項3】
前記単一のマルチバンクコマンドは、複数のメモリバンクにわたる異なる行の前記共通列をターゲットとする単一のメモリ要求である、
請求項2の装置。
【請求項4】
前記制御ロジックは、前記単一のマルチバンクコマンドを前記メモリに送信する前に、行アクティブ化コマンドを1つ以上のメモリバンクの1つ以上の行に送信するように構成されている、
請求項の装置。
【請求項5】
前記1つ以上の条件は、前記第1の要求及び前記1つ以上の他の要求が複数のバンクにわたる共通行をターゲットとすることを含み、前記単一のマルチバンクコマンドは、複数のメモリバンクにわたる前記共通行をターゲットとする単一の行アクティブ化コマンドである、
請求項1の装置。
【請求項6】
前記第1の要求及び前記1つ以上の他の要求は、1つ以上のデータクライアントから受信される、
請求項1の装置。
【請求項7】
前記制御ロジックは、前記単一のマルチバンクコマンドを生成するために、
複数の行アクティブ化を前記単一のマルチバンクコマンドに統合することと、
複数の列アクセスを前記単一のマルチバンクコマンドに統合することと、
のうち何れかを実行するように構成されている、
請求項の装置。
【請求項8】
1つ以上の条件を満たす、要求キュー内の第1の要求及び1つ以上の他の要求に基づいて、単一のマルチバンクコマンドを生成することと、
前記単一のマルチバンクコマンドと、前記単一のマルチバンクコマンドによってターゲットとされるメモリのサブセットを識別するマルチバンクコードと、を前記メモリに送信することであって、前記サブセットは、前記メモリの2つ以上のバンクを含み、前記単一のマルチバンクコマンドは、前記2つ以上のバンクの各々に送信される、ことと、を含む、
方法。
【請求項9】
前記1つ以上の条件は、
前記第1の要求及び前記1つ以上の他の要求が、複数のメモリバンクにわたる共通列をターゲットとすることと、
前記第1の要求及び前記1つ以上の他の要求が、共通のオペレータ識別子(ID)を共有することと、
のうち少なくとも1つを含む、
請求項8の方法。
【請求項10】
前記単一のマルチバンクコマンドは、複数のメモリバンクにわたる異なる行の前記共通列をターゲットとする単一のメモリ要求である、
請求項9の方法。
【請求項11】
前記単一のマルチバンクコマンドを前記メモリに送信する前に、行アクティブ化コマンドを1つ以上のメモリバンクの1つ以上の行に送信することを更に含む、
請求項の方法。
【請求項12】
前記1つ以上の条件は、前記第1の要求及び前記1つ以上の他の要求が複数のバンクにわたる共通行をターゲットとすることを含み、前記単一のマルチバンクコマンドは、複数のメモリバンクにわたる前記共通行をターゲットとする単一の行アクティブ化コマンドである、
請求項8の方法。
【請求項13】
1つ以上のデータクライアントから前記第1の要求及び前記1つ以上の他の要求を受信することを更に含む、
請求項8の方法。
【請求項14】
前記1つ以上のデータクライアントは、プロセッサ及び/又はプロセッサの一部を含む、
請求項13の方法。
【請求項15】
システムであって、
複数のバンクを含むメモリと、
前記メモリに結合されたメモリコントローラと、を備え、
前記メモリコントローラは、
1つ以上の条件を満たす、要求キュー内の第1の要求及び1つ以上の他の要求に基づいて、単一のマルチバンクコマンドを生成することと、
前記単一のマルチバンクコマンドと、前記単一のマルチバンクコマンドによってターゲットとされる前記メモリのサブセットを識別するマルチバンクコードと、を前記メモリに送信することであって、前記サブセットは、前記メモリの2つ以上のバンクを含み、前記単一のマルチバンクコマンドは、前記2つ以上のバンクの各々に送信される、ことと、
を行うように構成されている、
システム。
【請求項16】
前記1つ以上の条件は、
前記複数の要求の各要求が複数のバンクにわたる共通列をターゲットとすることと、
前記複数の要求の各要求が共通のオペレータ識別子(ID)を共有することと、
のうち少なくとも1つ含む、
請求項15のシステム。
【請求項17】
前記単一のマルチバンクコマンドは、複数のバンクにわたる異なる行の前記共通列をターゲットとする単一のメモリ要求である、
請求項16のシステム。
【請求項18】
前記メモリコントローラは、前記単一のマルチバンクコマンドを前記メモリに送信する前に、行アクティブ化コマンドを1つ以上のバンクの1つ以上の行に送信するように構成されている、
請求項15のシステム。
【請求項19】
前記1つ以上の条件は、前記複数の要求の各要求が複数のバンクにわたる共通行をターゲットとすることを含み、前記単一のマルチバンクコマンドは、複数のバンクにわたる前記共通行をターゲットとする単一の行アクティブ化コマンドである、
請求項15のシステム。
【請求項20】
前記第1の要求及び前記1つ以上の他の要求は、1つ以上のデータクライアントから受信され、前記1つ以上のデータクライアントは、プロセッサ及び/又はプロセッサの一部を含む、
請求項15のシステム。
【請求項21】
メモリであって、
複数のバンクと、
前記複数のバンクに結合された制御ロジックと、を備え、
前記制御ロジックは、
読み出しコマンドを受信することと、
前記読み出しコマンドによってターゲットとされる前記複数のバンクのうち2つ以上のバンクを識別するマルチバンクコードを受信することと、
前記マルチバンクコードを、前記複数のバンクのサブセットをアクティブ化するための1つ以上の制御信号にデコードすることであって、前記サブセットは、前記複数のバンクのうち2つ以上のバンクを含む、ことと、
を行うように構成されている、
メモリ。
【請求項22】
前記複数のバンクのサブセットは、単一サイクルでアクティブ化される、
請求項21のメモリ。
【請求項23】
前記複数のバンクのサブセットから取り出されたデータに対して演算を実行するように構成された複数のプロセッシングインメモリ(PIM)デバイスを更に備える、
請求項21のメモリ。
【請求項24】
前記制御ロジックは、単一サイクルで前記複数のPIMデバイスをアクティブ化するための前記1つ以上の制御信号を生成するように構成されている、
請求項23のメモリ。
【請求項25】
前記制御ロジックは、前記複数のPIMデバイスをターゲットとするマルチバンクコマンドを受信するように構成されている、
請求項24のメモリ。
【請求項26】
前記マルチバンクコマンドは、前記複数のバンクのサブセットから取り出された前記データに対して実行する演算を指定する、
請求項25のメモリ。
【発明の詳細な説明】
【背景技術】
【0001】
(関連技術の説明)
コンピュータシステムにおいて、計算能力はメモリ帯域幅よりも速く成長している。同時に、この問題に対処するために、プロセッシングインメモリ(processing in memory、PIM)等の新たな技術が提案されているが、ダイナミックランダムアクセスメモリ(dynamic random-access memory、DRAM)デバイスにおけるコマンド及びデータ帯域幅要求のバランスをシフトさせている。これにより、メモリコマンド帯域幅が新たな潜在的なボトルネックとなる可能性がある。
【0002】
本明細書に記載の方法及びメカニズムの利点は、添付の図面と併せて以下の説明を参照することによって、よりよく理解され得る。
【図面の簡単な説明】
【0003】
図1】コンピューティングシステムの一実施形態のブロック図である。
図2】PIM対応システムの一実施形態のブロック図である。
図3】メモリデバイスの一実施形態のブロック図である。
図4】メモリコントローラの一実施形態のブロック図である。
図5】メモリコマンドをマルチバンクコマンドに動的に統合(coalescing)するための方法の一実施形態を示す一般化されたフロー図である。
図6】メモリコマンドをマルチバンクコマンドに動的に統合するための方法の一実施形態を示す一般化されたフロー図である。
図7】複数のコマンドを単一のマルチバンクコマンドに統合することができるメモリコントローラを動作させるための方法の一実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【0004】
以下の説明では、本明細書に提示される方法及びメカニズムの十分な理解を提供するために、多数の具体的な詳細が記載されている。しかしながら、当業者は、これらの具体的な詳細なしに様々な実施形態が実施され得ることを認識すべきである。いくつかの例では、本明細書に記載のアプローチを不明瞭にすることを避けるために、周知の構造、構成要素、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図示した要素が必ずしも縮尺通りに描かれているわけではないことを理解されたい。例えば、いくつかの要素の寸法は、他の要素に対して誇張されている場合がある。
【0005】
コマンドスループットを改善するためにマルチバンクメモリコマンドを動的に統合(合体)するための様々なシステム、装置及び方法が本明細書に開示されている。一実施形態では、システムは、マルチバンクプロセッシングインメモリ(PIM)コマンドを可能にするためにメモリコントローラにおける要求の動的統合を可能にするためのメカニズムを含み、これは、より帯域幅効率であり、したがって有効なコマンド帯域幅を改善することができる。これにより、コマンドスループットによってボトルネックとなっている新たなワークロードに対して性能を改善することが可能になる。これらのメカニズムは、より速い速度でダイナミックランダムアクセスメモリ(DRAM)にコマンドを供給するための新たなワークロードを可能にし、したがって、コマンドスループットがボトルネックであるシステムにおいてメモリ帯域幅をより効果的に利用する。これらのシステムは、スパースワークロード、不規則なワークロード、チャネル内のバンクにわたってターゲットデータが完全に整列していないワークロード、及び/又は、他のワークロードを実行するPIM対応デバイスを含む。本明細書に記載の技術は、マルチバンクメモリコマンドを動的に統合することに言及するが、これらの技術は、制御インターフェース(例えば、共有コマンドバス)を共有するメモリモジュールの任意のセットに適用されることを理解されたい。また、「バンク」は、より一般的に「モジュール」と呼ばれる場合があり、「マルチバンク」という用語は、「マルチキャスト」と呼ばれる場合があることに留意されたい。
【0006】
一実施形態では、システムは、PIM対応ハードウェアを含む。PIM対応ハードウェアは、計算をメモリに近づけ、メモリに近いロジックを利用できることは、ホストに対して利用可能なものよりも高いメモリ帯域幅の利益をもたらす。一例として、可能なPIM構成は、各DRAMバンク内にベクトル計算要素を追加することを含む。そのような構成では、ホストが、DRAMインターフェースを介したデータ移動を必要とせずに複数のDRAMバンクで並列に計算をトリガすることを可能にすることによって、PIM対応システムは、達成可能なメモリ帯域幅を増加させ、データ制限ワークロードの成長カテゴリの性能を改善することができる。
【0007】
一実施形態では、メモリは、メモリ内で計算を実行することができるPIM要素を含む。プロセッサは、メモリコントローラに送信されるメモリをターゲットとするメモリ要求を生成する。メモリコントローラは、プロセッサから受信した要求を1つ以上のキュー内に記憶し、メモリコントローラは、複数の要求を一緒に単一のマルチバンク要求に統合するための機会が存在するかどうかを判定する。複数の要求を単一の組み合わせ要求に統合した後、メモリコントローラは、単一の要求及び何れのバンクがターゲットとなっているかを指定するマルチバンクコードを、メモリバスを介して複数の個別のバンクに伝達する。メモリバンクは、要求を並列に処理し、PIM要素は、それぞれのバンクの次(隣)のデータを処理する。
【0008】
一実施形態では、スパース埋め込みルックアップ演算が実行され、これは、多くの推奨機械学習ネットワークに共通であり、ルックアップ演算が、多くの場合、実行時間を支配する。このルックアップ演算は、大量の埋め込みテーブル(数百万個の埋め込みエントリを含む)から大きな埋め込み(例えば、数百の要素を含むアレイ)をまばらに読み取り、それらを一緒に蓄積する。多くの場合、再利用が最小限であるため、性能はメモリ帯域幅に大きく依存する(highly sensitive)。PIM要素がDRAMに含まれるシステムでは、DRAMインターフェースを介したデータ転送を回避することができるため、性能は、PIMコマンドをDRAMに送信することができる速度によって制限される。複数のPIMコマンドを単一のマルチバンクコマンドに統合させると、有効なコマンド帯域幅を増加させ、これらのルックアップ動作の全体性能を改善する。
【0009】
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、少なくともプロセッサ105A~105Nと、入力/出力(input/output、I/O)インターフェース120と、バス125と、メモリコントローラ130と、ネットワークインターフェース135と、メモリデバイス140と、表示コントローラ150と、ディスプレイ155と、を含む。他の実施形態では、コンピューティングシステム100は、他の構成要素を含み、及び/又はコンピューティングシステム100は、別様に配置される。プロセッサ105A~Nは、システム100に含まれる任意の数のプロセッサを表す。
【0010】
一実施形態では、プロセッサ105Aは、中央処理ユニット(central processing unit、CPU)等の汎用プロセッサである。この実施形態では、プロセッサ105Aは、システム100内の他のプロセッサのうち1つ以上の演算を制御するためのドライバ110(例えば、グラフィックドライバ)を実行する。実施形態に応じて、ドライバ110は、ハードウェア、ソフトウェア及び/又はファームウェアの任意の好適な組み合わせを使用して実装可能であることに留意されたい。一実施形態では、プロセッサ105Nは、高度に並列アーキテクチャを有するデータ並列プロセッサである。データ並列プロセッサは、グラフィックス処理ユニット(graphics processing unit、GPU)、デジタル信号プロセッサ(digital signal processor、DSP)、フィールドプログラマブルゲートアレイ(field programmable gate array、FPGA)、特定用途向け集積回路(application specific integrated circuit、ASIC)等を含む。いくつかの実施形態では、プロセッサ105A~105Nは、複数のデータ並列プロセッサを含む。一実施形態では、プロセッサ105Nは、ディスプレイ155に送られるように表示コントローラ150にピクセルを提供するGPUである。
【0011】
メモリコントローラ130は、プロセッサ105A~105Nによってアクセス可能な任意の数及びタイプのメモリコントローラを表す。メモリコントローラ130は、プロセッサ105A~105Nから分離されているものとして示されているが、これは、単に1つの可能な実施形態を表すことを理解されたい。他の実施形態では、メモリコントローラ130は、プロセッサ105A~105Nのうち1つ以上の中に埋め込むことができ、及び/又は、メモリコントローラ130は、プロセッサ105A~105Nのうち1つ以上と同じ半導体ダイに位置することができる。メモリコントローラ130は、任意の数及びタイプのメモリデバイス140に結合されている。例えば、メモリデバイス140内のメモリのタイプは、高帯域幅メモリ(high-bandwidth memory、HBM)、不揮発性メモリ(non-volatile memory、NVM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(Static Random Access Memory、SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、強誘電体ランダムアクセスメモリ(Ferroelectric Random Access Memory、FeRAM)等を含む。一実施形態では、メモリデバイス140は、データにより近い計算を実行するためのプロセッシングインメモリ(PIM)デバイス145を含む。
【0012】
I/Oインターフェース120は、任意の数及びタイプのI/Oインターフェース(例えば、周辺構成要素相互接続(peripheral component interconnect、PCI)バス、PCI-拡張(PCI-Extended、PCI-X)、PCIE(PCI Express)(PCIエクスプレス)バス、ギガビットイーサネット(登録商標)(gigabit Ethernet、GBE)バス、ユニバーサルシリアルバス(universal serial bus、USB))を表す。様々なタイプの周辺デバイス(図示省略)がI/Oインターフェース120に結合されている。そのような周辺デバイスには、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック、他のタイプのゲームコントローラ、メディア記録デバイス、外部記憶デバイス、ネットワークインターフェースカード等が含まれるが、これらに限定されない。ネットワークインターフェース135は、ネットワーク(図示省略)にわたってネットワークメッセージを受信及び送信するために使用される。
【0013】
様々な実施形態において、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、ゲームコンソール、サーバ、ストリーミングデバイス、ウェアラブルデバイス、又は、様々な他のタイプのコンピューティングシステム若しくはデバイスの何れかである。コンピューティングシステム100の構成要素の数は、実装ごとに変化することに留意されたい。例えば、他の実施形態では、図1に示す数よりも多い又は少ない各構成要素が存在する。また、他の実施形態では、コンピューティングシステム100は、図1に示されていない他の構成要素を含むことにも留意されたい。さらに、他の実施形態では、コンピューティングシステム100は、図1に示す以外の方法で構成される。
【0014】
図2を参照すると、PIM対応システム200の一実施形態のブロック図が示されている。一実施形態では、PIM対応システム200は、メモリダイ202及びプロセッサダイ204の垂直ダイスタックを含む(図2の相対サイズ及び位置は必ずしも縮尺通りではない)。メモリダイ202は、スタックダイが、DRAM、SRAM、ROM等のメモリ回路を実装するスタックメモリデバイスを含む。プロセッサダイ204は、スタックメモリダイ202のメモリ回路にアクセスするためのハードワイヤードロジック及びルーティングロジックを実装する。PIM対応システム200は、様々な3D集積回路製造プロセスの何れかを使用して製造することができる。他の実施形態では、コマンド帯域幅によっても制限され得る非3Dスタックメモリを含むPIM対応システムの他の構成及び構造を利用可能であることに留意されたい。
【0015】
一実施形態では、プロセッサダイ204及びメモリダイ202は、アクティブデバイス及びアクティブ表面に形成された1つ以上の金属ルーティング層を有する個別の基板(例えば、バルクシリコン)として実装される。このアプローチは、ダイのマトリックスを含むウェハが製造され、薄くされ、スルーシリコンビア(through-silicon vias、TSV)がバルクシリコンを通してエッチングされるウェハオンウェハプロセスを含むことができる。次いで、複数のウェハがスタックされ、図示した層構成を達成し(例えば、4つのメモリ層のメモリ回路ダイを含む4つのウェハ及びプロセッサ層のロジックダイを含むウェハのスタック)、整列され、その後、熱圧縮を介して接合される。得られたスタックウェハセットは、個々の3DICデバイスを分離するために個片化される。他の実施形態では、PIM対応システム200を製造するための他の技術を利用することができる。
【0016】
図3を参照すると、メモリデバイス300の一実施形態のブロック図が示されている。メモリ300内のデータにアクセスするために、所定のアクセスのアドレス310に対応するバンク335A~335Nの行が、行デコーダ330A~330Nによってアクティブ化される。これは、行のデータが、バンク335A~335Nに関連付けられた行バッファ340A~340Nにコピーされるのを引き起こす。行が、行バッファ340A~340Nにコピーされた後、行バッファ340A~340N内の特定の列にアクセスするために、列コマンドが送信される。複数の行デコーダ330A~330Nが、アクセスによってどのくらいのバンクがターゲットであるかに応じて、単一のサイクルで複数の行をアクティブにすることができることに留意されたい。複数のバンクがアクセスによってターゲットにされている場合、マルチバンクコード320は、これらの複数のバンクを識別する。マルチバンクコード320は、制御ロジック325に結合されており、制御ロジック325の出力は、行デコーダ330A~330N及び/又はバンク335A~335Nに結合されている。一実施形態では、制御ロジック325は、マルチバンクコード320を、メモリ300内の様々な場所に結合される制御信号327にデコードする。
【0017】
所定のバンク335A~335Nがマルチバンクアクセスによってターゲットにされている場合、対応する行デコーダ330A~330Nによって指定された行がアクティブ化され、データが、バンクから対応する行バッファ340A~340Nに読み出される。複数の行を、複数のバンク335A~335Nから複数の行バンク340A~340Nに並列に任意の所定のサイクルで読み出すことができることに留意されたい。次いで、列デコーダ345A~345Nが、行バッファ340A~Nからターゲット列を読み出し、マルチプレクサ360を介してデータをメモリデータバスに提供する。列デコーダ345A~345Nによって取り出されたデータは、PIMデバイス350A~350Nによる演算のために対応するPIMデバイス350A~350Nに提供され、演算(例えば、加算、乗算、XOR)は、オペレータ識別子(identifier、ID)325によって指定される。複数のPIMデバイス350A~350Nは、対応する列コマンドによって任意の所定のサイクルでアクティブ化することができる。メモリデバイス300は、一実施形態に従ってマルチバンクコマンドを処理することができるメモリデバイスの一例であることに留意されたい。他の実施形態では、他のタイプの構成要素を有する及び/又は他の好適な様態で構造化された、他のタイプのメモリデバイスが可能である。
【0018】
図4を参照すると、メモリコントローラ400の一実施形態が示されている。一実施形態では、メモリコントローラ400は、データキュー405と、要求キュー410と、制御ロジック430と、バス435と、を含む。メモリコントローラ400は、メモリチャネル470を介して任意の数のメモリデバイス(例えば、図3のメモリデバイス300)に接続されている。メモリコントローラ400は、図を不明瞭にすることを避けるために図4に示されていない他の構成要素を含むことができることを理解されたい。メモリコントローラ400は、メモリコントローラの構成要素及び構造の一実施形態を表すことを意図していることに留意されたい。他の実施形態では、メモリコントローラ400は、他の構成要素を含むことができ、及び/又は、図4に示す以外の方法で構成され得る。
【0019】
メモリコントローラ400がメモリチャネル470を介してアクセス可能なメモリデバイスをターゲットとする要求を受信した場合、要求は、要求キュー410内にエンキューされる。一実施形態では、要求キュー410は、1つ以上のデータクライアントからの要求を含む。これらの1つ以上のデータクライアントは、(図1の)プロセッサ105A~105Nの1つ以上の部分であってもよい。制御ロジック430は、メモリチャネル470の限定された帯域幅をより効率的に利用するために、異なるモジュールへの複数の要求を単一のマルチキャスト要求にリオーダ及び/又は組み合わせる(統合する、合体する)機会を探すために要求を分析する。複数の要求を単一のマルチキャスト要求に組み合わせ(統合する、合体する)場合、制御ロジック430は、マルチモジュールコードを生成して、何れのモジュールがマルチキャスト要求によってターゲットとされるかを識別する。そのような機会を見つけるのを助けるために、要求キュー410内の各エントリは、制御ロジック430によって実行される分析を容易にするための追加のフィールドを含む。例えば、アドレスフィールド412及びオペレータIDフィールド414に加えて、代表的なエントリ411は、行バッファヒットフィールド416と、共通行要求フィールド418と、共通列要求フィールド420と、を含む。他の実施形態では、要求キュー410内の各エントリは、他のタイプのフィールドを含むことができる。フィールド416、418及び420は、まとめて「一致情報」と呼ぶことができることに留意されたい。
【0020】
一実施形態では、行バッファヒットフィールド416は、この特定の要求との行バッファヒットである要求キュー410内の後続の要求があるかどうかを指定するインジケータを記憶する。また、一実施形態では、共通行要求フィールド418は、共通行に要求するが、異なるバンクに要求する、要求キュー410内に後続のエントリがあるかどうかを指定するインジケータを記憶する。実施形態に応じて、共通行要求フィールド418内のインジケータは、単一ビット、カウンタ、又は、要求キュー410内の最初のそのような一致を指定する識別子であり得る。新しい要求がメモリコントローラ400によって受信されると、制御ロジック430は、要求キュー410の既存のエントリと存在し得る行及び列の一致を検索する。新しい要求と既存のエントリに記憶された何れかの要求との間にヒットが見つかった場合、一致するエントリの一致情報が更新される。
【0021】
また、一実施形態では、共通列要求フィールド420は、共通列に要求するが、異なるバンクに要求する、要求キュー410内に後続のエントリがあるかどうかを指定するインジケータを記憶する。共通列要求フィールド420に記憶されたインジケータは、単一ビット、カウンタ、又は、要求キュー410内の最初のそのような一致を指定する識別子であり得る。一実施形態では、潜在的なスケジューリング一致又は最適化が新しい要求で検出された場合、制御ロジック430は、新しい要求を古い要求に可能な限り近く挿入し(一致タイプ優先度に応じて、任意の他のマッチング要求の後)、古い要求の一致情報を更新する。一実施形態では、各メモリバンクについて、制御ロジック430は、保留中の行情報を追跡して、近い将来、現在アクティブ化されている行バッファでヒットが予想されるかどうかを示す。本明細書で使用される場合、「保留行情報」という用語は、各バンクと関連付けられた追加のインジケータとして定義され、これは、現在開いている行が、合体要求の一部としてアクティブ化されているかどうか、及び、その行へのキューに保留の列要求があるかどうかを示す。これは、a)異なるバンクへの複数の行アクティブ化が統合され、関連する列要求が続いて発行されるか、又は、b)複数の列演算を統合することができ、個々の行アクティブ化がこれより前に発行されている、の何れかを意味することができる。
【0022】
複数の要求をマルチバンク要求に組み合わせる(統合する、合体する)ことができる場合、制御ロジック430は、バス435に提供されるマルチバンクコード460を生成する。また、アドレス440及びオペレータID450は、要求キュー410によってバス435に提供される。マルチバンクコード460は、何れのバンクがマルチバンク要求によってターゲットとされるかを識別する。また、マルチバンクコード460は、本明細書では「マルチバンクマスク」と呼ぶことができることに留意されたい。マルチバンクコードをマルチバンクマスクと呼ぶことができるが、マルチバンクマスクは、バンクのサブセットへのビットの何れか任意のマッピングであり得ることを理解されたい。機能は、固定又はプログラム可能であってもよく、使用されるビット数及びマッピング機能は、ハードウェア又はランタイムソフトウェアによって通信される動的プロファイリング又は予想される行動に基づいて確立され得る。一実施形態では、マルチバンク要求は、メモリチャネル470を介して対応するメモリデバイス(例えば、図3のメモリデバイス300)に送信される。
【0023】
メモリチャネル470を介してマルチバンク要求を対応するメモリデバイスに伝達するための様々な異なる方法のうち何れかを使用することができ、その方法は、実施形態ごとに変化する。例えば、一実施形態では、指定されたオペコード及び/又はターゲットアドレスの組み合わせが、マルチバンクモードへの又はマルチバンクモードからの切り替えを示すために再利用(repurposed)される。次いで、マルチバンクモードは、演算IDの制限されたセットを有し、バンクアドレスビットのない低減されたビットのセットを使用する。スペアインターフェースビットが、マルチバンクコードを指定するために使用される。別の実施形態では、後続のPIMコマンドによってインデックス付けされるレジスタファイルにPIM演算情報を記憶する場合、マルチバンクコードがこれらのレジスタに記憶される。更なる実施形態では、未使用又は十分に使用されていないオペコードが再利用されて、単一の固定又はプログラム可能なタイプの統合要求(例えば、行アクティブ化)を表す。この実施形態では、メモリインターフェースのバンクビットが使用されて、この要求タイプのマルチバンクコードを指定する。
【0024】
コマンドを統合する機会を見つけるために、制御ロジック430は、要求キュー410に記憶されている要求の中に、異なるバンクではあるが同じ行又は列への要求を検出する。一実施形態では、制御ロジック430は、4つの個別のビットセットを並列に比較する。これらの4つの個別のビットセットには、要求のオペレータIDビット、バンクインデックスビット、行インデックスビット及び列インデックスビットが含まれる。行インデックスビットが異なるバンクへの複数の異なる要求に一致する場合、制御ロジック430は、複数の行アクティブ化をマルチバンクコマンドに統合する。オペレータIDビットが一致し、列インデックスビットが異なるバンクへの複数の異なる要求に一致する場合、制御ロジック430は、複数の列アクセスをマルチバンクコマンドに統合する。本明細書で使用される場合、「統合(合体)する」という用語は、要求がキューから取り出されてメモリチャネルに発行されようとしている時点で、複数の要求、アクセス又はアクティブ化を単一のコマンドに組み合わせる(統合する、合体する)こととして定義される。
【0025】
一実施形態では、制御ロジック430は、要求が要求キュー410に挿入された場合にはいつでも比較を実行する。一実施形態では、制御ロジック430は、要求キュー410内の全ての要求を一致するかチェックする。バリアパケットを使用してリオーダリングを制限する場合、直近のバリアパケットの後に到達した要求のみを比較する必要がある。一実施形態では、検出のコストを低減するために、制御ロジック430は、アドレスフィルタを使用して、比較を実行する前に潜在的な一致を検出する(例えば、バリアパケットごと又は定期的にリセットされるブルームフィルタ)。別の実施形態では、制御ロジック430は、一致検出をメモリキューのサブセットに制限する。例えば、この実施形態では、キュー内の直近のN個の要求のみが一致検出のために考慮されてもよく、ここで、Nは正の整数である。メモリ要求がバンクごとのキューに編成されている場合、検出オーバーヘッドも、何れのバンクが一致検出のために考慮されるかを制限することによって低減することができる。一実施形態では、隣接するバンクのみが検出のために考慮される。しかしながら、この実施形態では、隣接するバンクのみが検出のために考慮されたとしても、検出された一致ごとに隣接する一致を繰り返し探すことによって、検出された一致のチェーンが確立され得る場合、全てのバンクの統合が依然として可能である。
【0026】
図5を参照すると、メモリコマンドをマルチバンクコマンドに動的に統合するための方法500の一実施形態が示されている。説明のために、この実施形態におけるステップ及び図6図7のステップが順番に示されている。しかしながら、記載された方法の様々な実施形態において、記載された要素のうち1つ以上が、図示した順序とは異なる順序で同時に実行されてもよく、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素も実行される。本明細書に記載の様々なシステム又は装置の何れも方法500を実施するように構成されている。
【0027】
メモリコントローラは、メモリデバイスの個別のバンクをターゲット(標的)とする複数の要求を受信する(ブロック505)。メモリコントローラは、複数の要求が1つ以上の条件を満たすかどうかを判定する(ブロック510)。一実施形態では、1つ以上の条件は、要求が異なるバンクの同じ行をターゲットとすることを含む。別の実施形態では、1つ以上の条件は、要求が異なるバンクの同じ列をターゲットとすること、及び、要求が同じオペレータIDを共有することを含む。他の実施形態では、1つ以上の条件は、他のタイプの条件を含む。
【0028】
複数の要求が1つ以上の条件を満たす場合(条件付きブロック515、「はい」)、メモリコントローラは、複数のコマンドを単一のマルチバンクコマンドに組み合わせ(統合し、合体し)(ブロック520)、メモリコントローラは、統合ロジックの積極性に応じて追加のアクションをトリガし得る。例えば、一実施形態では、複数のコマンドは、行アクティブ化コマンドを含む。別の実施形態では、複数のコマンドは、列アクセスコマンドを含む。他の実施形態では、複数のコマンドは、元の要求に関連付けられた他のタイプのコマンドである。メモリコントローラによってトリガされる追加のアクションは、実施形態ごとに変化し得る。例えば、列がまだ開いていない行に一致する場合、メモリコントローラは、その行のための行アクティブ化コマンドを最初に生成する。キュー内の更に後方にある要求(又は要求のチェーン)からの行一致の場合、メモリコントローラは、これらの要求を、任意の介在する要求の前に同じバンクに移動させる。
【0029】
更に、メモリコントローラは、バンクの何れのサブセットが単一のマルチバンクコマンドによってターゲット(標的)にされるかを識別するマルチバンクコードを生成する(ブロック525)。次いで、メモリコントローラは、マルチバンクコマンド及びマルチバンクコードを単一サイクルでメモリに伝達する(ブロック530)。次に、メモリデバイスは、ターゲット(標的)バンク上で並列にマルチバンクコマンドを処理する(ブロック535)。ブロック535の後、方法500は終了する。複数の要求が1つ以上の条件を満たさない場合(条件付きブロック515、「いいえ」)、メモリコントローラは、対応するコマンドをメモリデバイスにシリアルで送信する(ブロック540)。次に、メモリデバイスは、コマンドを順次処理する(ブロック545)。ブロック545の後、方法500は終了する。
【0030】
図6を参照すると、メモリコマンドをマルチバンクコマンドに動的に統合するための方法600の一実施形態が示されている。メモリコントローラは、受信した要求を要求キュー(例えば、図4の要求キュー410)内にエンキューする(ブロック605)。メモリコントローラは、何れの要求をメモリに転送するかを判定する場合に、要求キュー内の所定(所与)の要求を調べる(ブロック610)。要求が1つ以上の条件を満たす場合(条件付きブロック615、「はい」)、メモリコントローラは、対応するコマンドを1つ以上の他のコマンドと組み合わせてマルチバンクコマンドにする(ブロック620)。例えば、一実施形態では、対応するコマンドは、行アクティブ化コマンドである。別の実施形態では、対応するコマンドは、列アクセスコマンドである。他の実施形態では、対応するコマンドは、元の要求に関連付けられた他のタイプのコマンドである。
【0031】
一実施形態では、1つ以上の条件は、要求が複数のバンクにわたる要求キュー内の他の要求として共通行をターゲットとすることを含む。別の実施形態では、1つ以上の条件は、要求が、異なるバンクであるが、要求キュー内の他の要求として共通列をターゲットとする一方、また、他の要求として共通オペレータIDを共有することを含む。他の実施形態では、1つ以上の条件は、他のタイプの条件を含む。ブロック620の後、メモリコントローラは、マルチバンクコマンドをメモリに送信する(ブロック625)。ブロック625の後、方法600は終了する。そうではなく、要求が1つ以上の条件を満たさない場合(条件付きブロック615、「いいえ」)、メモリコントローラは、対応するコマンドをそれだけでメモリに送信する(ブロック630)。ブロック630の後、方法600は終了する。
【0032】
図7を参照すると、複数のコマンドを単一のマルチバンクコマンドに統合することができるメモリコントローラを動作させるための方法700の一実施形態が示されている。メモリコントローラは、要求キュー内の次の要求を調べる(ブロック705)。次の要求によってアドレス指定されたターゲット(標的)バンク内のターゲット(標的)行が既に開いている場合(条件付きブロック710、「はい」)、非保留バンクへの共通列要求がある場合(条件付きブロック715、「はい」)、メモリコントローラは、必要に応じてこれらのバンクに対して行アクティブ化コマンドを発行する(ブロック720)。本明細書で使用される場合、「非保留バンク」は、将来の列アクセスが差し迫っていることを示さない保留行情報を有するバンクとして定義される。次に、メモリコントローラは、何れのバンクがアクセスされているかを指定するマルチバンクコードを用いてマルチバンク列アクセスを発行する(ブロック725)。次いで、メモリコントローラは、要求が関連する行ヒットを有しない限り、アクセスされたバンクの保留情報をリセットし、その場合、バンクは関連するヒット情報で更新される(ブロック730)。非保留バンクへの共通列要求がない場合(条件付きブロック715、「いいえ」)、メモリコントローラは、ターゲット(標的)バンク内のターゲット(標的)行への列アクセスを発行する(ブロック735)。ブロック735の後、方法700は終了する。
【0033】
次の要求によってアドレス指定されたターゲット(標的)バンク内のターゲット(標的)行がまだ開いていない場合(条件付きブロック710、「いいえ」)、ターゲット(標的)バンクが開いた保留中の行を有する場合(条件付きブロック740、「はい」)、メモリコントローラは、開いている行の保留情報をクリアする(ブロック745)。別の実施形態では、メモリコントローラは、保留情報をクリアするのではなく、ブロック745において保留中の行にアクセスする次の要求を見つけ、発行する。ブロック745に使用するための実施形態の選択は、帯域幅最適化の積極性に依存する。
【0034】
ターゲット(標的)バンクが開いた保留中の行を有しない場合(条件付きブロック740、「いいえ」)、メモリコントローラは、非保留バンクへの共通行要求があるかどうかを判定する(条件付きブロック750)。非保留バンクへの共通行要求がある場合(条件付きブロック750、「はい」)、メモリコントローラは、マルチバンク行アクティブ化コマンドを発行し、対応するバンクの保留情報を設定する(ブロック755)。ブロック755の後、方法700は終了する。非保留バンクへの共通行要求がない場合(条件付きブロック750、「いいえ」)、メモリコントローラは、単一バンク行アクティブ化コマンドをターゲット(標的)行及びバンクに発行する(ブロック760)。ブロック760の後、方法700は終了する。方法700は、メモリコントローラが要求キュー内の次の要求を選択する度に実行することができることに留意されたい。
【0035】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、本明細書に記載の方法及び/又はメカニズムを実装する。例えば、汎用又は専用プロセッサによって実行可能なプログラム命令が考えられる。様々な実施形態では、そのようなプログラム命令は、高レベルプログラミング言語によって表される。他の実装では、プログラム命令は、高レベルプログラミング言語からバイナリ、中間又は他の形式にコンパイルされる。あるいは、ハードウェアの動作又は設計を説明するプログラム命令が書かれる。そのようなプログラム命令は、C等の高レベルプログラミング言語によって表される。あるいは、Verilog等のハードウェア設計言語(hardware design language、HDL)が使用される。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体の何れかに記憶される。記憶媒体は、プログラム実行のためにプログラム命令をコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。一般的に言えば、そのようなコンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
【0036】
上記の実施形態は、実施形態の非限定的な例に過ぎないことを強調しておきたい。上記の開示が完全に理解されると、多数の変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲は、全てのそのような変形及び修正を包含すると解釈されることが意図されている。
図1
図2
図3
図4
図5
図6
図7