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

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

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

特表2024-545215メモリコントローラにおいてニアメモリ処理命令及び非ニアメモリ処理命令を管理するためのアプローチ
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-05
(54)【発明の名称】メモリコントローラにおいてニアメモリ処理命令及び非ニアメモリ処理命令を管理するためのアプローチ
(51)【国際特許分類】
   G06F 12/00 20060101AFI20241128BHJP
   G11C 8/20 20060101ALI20241128BHJP
   G06F 12/02 20060101ALN20241128BHJP
【FI】
G06F12/00 560F
G11C8/20
G06F12/02 590
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024535347
(86)(22)【出願日】2022-12-01
(85)【翻訳文提出日】2024-06-26
(86)【国際出願番号】 US2022051511
(87)【国際公開番号】W WO2023121842
(87)【国際公開日】2023-06-29
(31)【優先権主張番号】17/561,454
(32)【優先日】2021-12-23
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ニティ マダン
(72)【発明者】
【氏名】ジョン カラマティアノス
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA06
5B160AA14
5B160MM01
5B160MM20
(57)【要約】
メモリコントローラにおいて、PIM命令及び非PIM命令を管理するためのアプローチが提供される。メモリコントローラは、PIM命令及び非PIM命令をキューに入れ、様々な選択基準に基づいて、処理すべき次の命令を選択する。メモリコントローラは、ページテーブルを維持及び使用して、PIM命令であっても非PIM命令であっても、次のメモリ命令のために、メモリモジュール内のバンク等のメモリ素子を適切に構成する。ページテーブルは、発行された最新のメモリ命令の時点でのメモリ素子のステータスを追跡する。ページテーブルは、直近のPIM命令を処理した後のバンクのステータスを示す「全バンク(All Bank)」エントリを含む。例えば、全バンクエントリは、全バンクが開いている行を有するかどうかを示し、そうであれば、全バンクの開いている行を指定する。
【選択図】図1A
【特許請求の範囲】
【請求項1】
メモリコントローラであって、
選択基準に基づいて、ブロードキャストニアメモリ処理命令又は非ニアメモリ処理命令を処理するために選択するように構成された処理ロジックを備える、
メモリコントローラ。
【請求項2】
前記選択基準は、命令割り当て帯域幅、保留中の命令の数、直近の命令が発行されてからの時間若しくは周期数、マーカの存在、又は、グローバルエイジのうち1つ以上を含む、
請求項1のメモリコントローラ。
【請求項3】
前記処理ロジックは、
直近のブロードキャストニアメモリ処理命令の後に2つ以上のメモリ素子のステータスをページテーブルにおいて維持するように構成されている、
請求項1のメモリコントローラ。
【請求項4】
前記直近のブロードキャストニアメモリ処理命令の後の2つ以上のメモリ素子のステータスは、前記ページテーブルの単一のエントリに維持される、
請求項3のメモリコントローラ。
【請求項5】
前記ステータスは、前記2つ以上のメモリ素子において現在開いている行を示す、
請求項3のメモリコントローラ。
【請求項6】
前記処理ロジックは、処理された先行メモリ命令が非ニアメモリ処理命令であり、且つ、前記ブロードキャストニアメモリ処理命令を処理するために選択したことに応じて、
メモリモジュール内の2つ以上のメモリ素子内の全ての開いている行を閉じることと、
前記メモリモジュール内の2つ以上のメモリ素子において、前記ブロードキャストニアメモリ処理命令によって指定された行を開くことと、
前記ブロードキャストニアメモリ処理命令によって指定された行が前記2つ以上のメモリ素子において開いていることを示すために、ページテーブル内の前記2つ以上のメモリ素子についての単一のステータスを更新することと、
を行うように構成されている、
請求項1のメモリコントローラ。
【請求項7】
前記処理ロジックは、処理された先行メモリ命令がブロードキャストニアメモリ処理命令であり、且つ、前記非ニアメモリ処理命令を処理するために選択したことに応じて、
メモリモジュール内の2つ以上のメモリ素子内の全ての開いている行を閉じることと、
前記非ニアメモリ処理命令によって指定された前記メモリモジュール内の2つ以上のメモリ素子の特定のメモリ素子内の特定の行を開くことと、
前記特定の行が前記特定のメモリ素子内で開いていることを示すために、ページテーブル内の前記特定のメモリ素子についてのステータスを更新することと、
を行うように構成されている、
請求項1のメモリコントローラ。
【請求項8】
処理のために選択された前記ブロードキャストニアメモリ処理命令は、複数のブロードキャストニアメモリ処理命令のうち最も古いブロードキャストニアメモリ処理命令である、
請求項1のメモリコントローラ。
【請求項9】
方法であって、
メモリコントローラが、選択基準に基づいて、ブロードキャストニアメモリ処理命令又は非ニアメモリ処理命令を処理するために選択することを含む、
方法。
【請求項10】
前記選択基準は、命令割り当て帯域幅、保留中の命令の数、直近の命令が発行されてからの時間若しくは周期数、マーカの存在、又は、グローバルエイジのうち1つ以上を含む、
請求項9の方法。
【請求項11】
直近のブロードキャストニアメモリ処理命令の後に2つ以上のメモリ素子のステータスをページテーブルにおいて維持することを含む、
請求項9の方法。
【請求項12】
前記直近のブロードキャストニアメモリ処理命令の後の2つ以上のメモリ素子のステータスは、前記ページテーブルの単一のエントリに維持される、
請求項11の方法。
【請求項13】
前記ステータスは、前記2つ以上のメモリ素子において現在開いている行を示す、
請求項11の方法。
【請求項14】
処理された先行メモリ命令が非ニアメモリ処理命令であり、且つ、前記ブロードキャストニアメモリ処理命令を処理するために選択したことに応じて、
メモリモジュール内の2つ以上のメモリ素子内の全ての開いている行を閉じることと、
前記メモリモジュール内の2つ以上のメモリ素子において、前記ブロードキャストニアメモリ処理命令によって指定された行を開くことと、
前記ブロードキャストニアメモリ処理命令によって指定された前記行が前記2つ以上のメモリ素子において開いていることを示すために、ページテーブル内の前記2つ以上のメモリ素子についての単一のステータスを更新することと、を含む、
請求項9の方法。
【請求項15】
処理された先行メモリ命令がブロードキャストニアメモリ処理命令であり、且つ、前記非ニアメモリ処理命令を処理するために選択したことに応じて、
メモリモジュール内の2つ以上のメモリ素子内の全ての開いている行を閉じることと、
前記非ニアメモリ処理命令によって指定された前記メモリモジュール内の2つ以上のメモリ素子の特定のメモリ素子内の特定の行を開くことと、
前記特定の行が前記特定のメモリ素子内で開いていることを示すために、ページテーブル内の前記特定のメモリ素子についてのステータスを更新することと、を含む、
請求項9の方法。
【請求項16】
処理のために選択された前記ブロードキャストニアメモリ処理命令は、複数のブロードキャストニアメモリ処理命令のうち最も古いブロードキャストニアメモリ処理命令である、
請求項9の方法。
【請求項17】
プロセッサであって、
命令キューと、
メモリコントローラと、を備え、
前記メモリコントローラは、
ブロードキャストニアメモリ処理命令及び非ニアメモリ処理命令を前記命令キューに記憶することと、
選択基準に基づいて、前記ブロードキャストニアメモリ処理命令又は前記非ニアメモリ処理命令を処理するために選択することと、
を行うように構成されている、
プロセッサ。
【請求項18】
前記メモリコントローラは、直近のブロードキャストニアメモリ処理命令の後の2つ以上のメモリ素子のステータスを、ページテーブルの単一のエントリに維持するように構成されており、
前記ステータスは、前記2つ以上のメモリ素子において現在開いている行を示す、
請求項17のプロセッサ。
【請求項19】
前記メモリコントローラは、処理された先行メモリ命令が非ニアメモリ処理命令であり、且つ、前記ブロードキャストニアメモリ処理命令を処理するために選択したことに応じて、
メモリモジュール内の2つ以上のメモリ素子内の全ての開いている行を閉じることと、
前記メモリモジュール内の2つ以上のメモリ素子において、前記ブロードキャストニアメモリ処理命令によって指定された行を開くことと、
前記ブロードキャストニアメモリ処理命令によって指定された行が前記2つ以上のメモリ素子において開いていることを示すために、ページテーブル内の前記2つ以上のメモリ素子についての単一のステータスを更新することと、
を行うように構成されている、
請求項17に記載のプロセッサ。
【請求項20】
前記メモリコントローラは、処理された先行メモリ命令がブロードキャストニアメモリ処理命令であり、且つ、前記非ニアメモリ処理命令を処理するために選択したことに応じて、
メモリモジュール内の2つ以上のメモリ素子内の全ての開いている行を閉じることと、
前記非ニアメモリ処理命令によって指定された前記メモリモジュール内の2つ以上のメモリ素子の特定のメモリ素子内の特定の行を開くことと、
前記特定の行が前記特定のメモリ素子内で開いていることを示すために、ページテーブル内の前記特定のメモリ素子についてのステータスを更新することと、
を行うように構成されている、
請求項17のプロセッサ。
【発明の詳細な説明】
【背景技術】
【0001】
本セクションに記載されているアプローチは、遂行され得るアプローチであるが、必ずしも以前に着想又は遂行されたアプローチではない。したがって、別段の指示がない限り、本セクションに記載されたアプローチの何れも、単に本セクションに含まれることによって、従来技術として適格であると仮定するべきではない。更に、本セクションに記載されたアプローチの何れも、単に本セクションに含まれることによって、よく理解されている、日常的である、又は、従来的であると仮定するべきではない。
【0002】
計算スループットは、メモリ帯域幅よりも速くスケーリングするので、増大する計算容量にデータを供給し続けるために、様々な技術が開発されてきた。プロセッシングインメモリ(Processing In Memory、PIM)は、タスクがメモリモジュール内で直接処理できるように、メモリモジュール内に処理能力を組み込む。ダイナミックランダムアクセスメモリ(Dynamic Random-Access Memory、DRAM)のコンテキストでは、例示的なPIM構成は、ベクトル計算素子及びローカルレジスタを含む。このベクトル計算要素及びローカルレジスタにより、メモリモジュールが、算術計算等の一部の計算をローカルに実行することが可能になる。これにより、メモリコントローラが、メモリモジュールインターフェースにわたるデータ移動を必要とすることなく、複数のメモリモジュールにおけるローカル計算を並行して起動することが可能になるが、これは、特に、データ集約的な作業負荷に対して性能を大幅に改善し得る。
【0003】
PIMの課題の1つは、PIM命令及び非PIM命令の両方を、それらの異なる処理要件を前提として、メモリコントローラにおいてどのように処理するかである。例えば、非PIM命令は、単一のDRAMバンクに向けられるが、PIM命令は、DRAMモジュール内の全バンクに向けられるブロードキャスト命令である。したがって、個々のバンクの状態を追跡する従来のページテーブルは、PIM命令には不十分である。別の例として、非PIM命令は、典型的には、メモリにデータを書き込み、メモリからデータを読み出すために、ホスト-メモリモジュールデータ通信を必要とする。対照的に、PIM命令は、データバスを介してメタデータを提供してPIM命令を処理すること以外に、ホスト-メモリモジュールデータ通信をトリガしない「ファイア・アンド・フォーゲット(fire and forget)」意味規則(セマンティック、semantic)を使用する。例示的なメタデータは、命令インデックス値、プロセス又はスレッドID、ソースオペランドを表す定数値、PIMレジスタインデックス等の情報を含む。したがって、メモリコントローラは、非PIM命令とは異なるようにPIM命令を処理しなければならない。
【0004】
これらの問題に対処する1つの可能な解決策は、2つの命令ストリームのうち何れかをブロックし、それらを別々に処理することによって、メモリコントローラに到着する場合に、PIM命令トラフィックと非PIM命令トラフィックとを分離することである。しかしながら、このアプローチは、2つの命令ストリームのうち何れかの処理を遅延させることに起因する、大きな性能ペナルティを引き起こす可能性がある。別の解決策は、PIM命令のための専用メモリコントローラを使用することであるが、これは、面積及び電力コストの増加を伴う。したがって、上記に鑑みて、現在の解決策の制限及びコストを回避する、メモリコントローラによってPIM命令及び非PIM命令の両方を処理するためのアプローチが必要とされている。
【0005】
実施例は、添付の図面において限定としてではなく例として示され、同様の符号は同様の素子を指す。
【図面の簡単な説明】
【0006】
図1A】メモリコントローラにおいて、ブロードキャストニアメモリ処理命令及び非ニアメモリ処理命令を管理するためのアプローチを示すフロー図である。
図1B】メモリ構成を示すブロック図である。
図1C】命令キュー、処理ロジック、命令メタデータ及びページテーブルを含むメモリコントローラの例示的な実施形態を示す図である。
図1D】第1段階ピッカー(first stage picker)及び第2段階ピッカー(second stage picker)を含む、スケジューラによって使用される2段階プロセスを論理的に示すブロック図である。
図2A図1Cのページテーブルの例示的な実施形態であるページテーブルを示す図である。
図2B】ページテーブルを使用して、非PIMから非PIMへの処理を実行することを示すフロー図である。
図2C】バンク3の行4に向けられた非PIM命令が処理された後のページテーブルの状態を示す図である。
図2D】非PIMからPIMへの遷移を示すフロー図である。
図2E】行5が全バンクにおいて開いていることを指定するために全バンクエントリが更新された後のページテーブルを示す図である。
図2F】開いている行を5から3に変更するために全バンクエントリが更新された後のページテーブルを示す図である。
図2G】PIMからPIMへの処理を実行するためのアプローチを示すフロー図である。
図2H】全バンクの行3に向けられたPIM命令が処理された後のページテーブルの状態を示す図である。
図2I】PIMから非PIMへの遷移を示すフロー図である。
図2J】全バンクエントリが無効化され、「PGT 0」エントリが、行8がバンク0内で開いていることを示すように更新された後のページテーブルを示す図である。
図3】メモリコントローラにおいて、PIM及び非PIM命令を処理するためのアプローチを示すフロー図である。
【発明を実施するための形態】
【0007】
以下の説明では、説明の目的のために、実施形態の十分な理解を提供するための多くの具体的な詳細が記載される。しかしながら、これらの特定の詳細なしに実施形態を実現し得ることが当業者には明らかであろう。他の例では、実施形態を不必要に不明瞭にすることを避けるために、周知の構造及びデバイスがブロック図で示されている。
I.概要
II.構造
III.処理のための命令の選択
IV.「全バンク(All banks)」ステータスを有する例示的なページテーブル
V.非PIMから非PIMへの処理
VI.非PIMからPIMへの遷移
VII.PIMからPIMへの処理
VIII.PIMから非PIMへの遷移
【0008】
(I.概要)
メモリコントローラにおいて、PIM命令及び非PIM命令を管理するためのアプローチが提供される。メモリコントローラは、PIM命令及び非PIM命令をキューに入れ、様々な選択基準に基づいて、処理すべき次の命令を選択する。選択基準の例には、命令割り当て帯域幅、保留中の命令の数、直近の命令が発行されてからの時間量又は周期数、マーカの存在、又は、グローバル・エイジ(global age)等が含まれるが、これらに限定されない。
【0009】
メモリコントローラは、ページテーブルを維持及び使用して、PIM命令であっても非PIM命令であっても、次のメモリ命令のために、メモリモジュール内のバンク等のメモリ素子を適切に構成する。ページテーブルは、発行された直近のメモリ命令の時点でのメモリ素子のステータスを追跡する。例えば、ページテーブルは、バンクが開いている行を有するかどうかを示し、もしそうであれば、バンクの開いている行を指定する。一実施形態によれば、ページテーブルは、直近のPIM命令を処理した後のバンクのステータスを示す「全バンク(All banks)」エントリを含む。例えば、全バンクエントリは、全バンクが開いている行を有するかどうかを示し、そうであれば、全バンクの開いている行を指定する。
【0010】
ページテーブル内の単一の全バンクエントリを使用して、直近のPIM命令を処理した後にメモリ素子のステータスを追跡するアプローチは、メモリコントローラが、計算コスト及び電力消費の両方の観点から、大きな性能ペナルティを引き起こす可能性があるPIM命令及び非PIM命令を分離する必要なく、PIM命令及び非PIM命令を効率的に管理することを可能にする。また、本アプローチは、メモリへの命令をスケジュールする面積及び電力コストを増加させる、PIM命令のための専用メモリコントローラを有することを回避する。実施形態は、正確性を維持するために、メモリコントローラがプログラム順にPIM命令を発行することを含む。実施形態は、説明のためにPIM命令及び非PIM命令のコンテキストで本明細書において説明されるが、実施形態は、任意のタイプのニアメモリ処理命令及び非ニアメモリ処理命令に適用可能である。
【0011】
図1Aは、メモリコントローラにおいてPIM命令及び非ニアメモリ処理命令を管理するためのアプローチを示すフロー図100である。ステップ102において、メモリコントローラは、メモリ命令を受信し、例えば、1つ以上のキューに記憶する。これらは、任意の数及びタイプのPIM命令及び非PIM命令を含む。
【0012】
ステップ104において、メモリコントローラは、処理されるメモリ命令を選択する。例えば、メモリコントローラは、様々な選択基準に基づいて、1つ以上のキューからメモリ命令を選択する。
【0013】
ステップ106において、メモリコントローラは、選択されたメモリ命令のためのターゲットメモリ素子(目的のメモリ素子)(target memory elements)を構成する。一実施形態によれば、メモリコントローラは、ページテーブル、特に、ページテーブル内の全バンクエントリを使用して、以下でより詳細に説明するように、メモリ素子の現在のステータスを決定し、それに応じて、ターゲットメモリ素子を構成する。
【0014】
ステップ108において、メモリコントローラは、選択されたメモリ命令を発行し、ステップ110において、メモリコントローラは、メモリ素子のステータスデータを更新する。これは、以下でより詳細に説明するように、ページテーブルを更新することを含む。
【0015】
(II.構造)
図1Bは、コンピューティング構成120を示すブロック図である。本コンピューティング構成120は、メモリコントローラ130及びメモリモジュール140を含む。コンピューティング構成120は、例えば、プロセッサ及びシステムオンチップ(System on a Chip、SoC)を含む任意のタイプのコンピューティングデバイスにおいて実装される。本メモリコントローラ130及び本メモリモジュール140は、命令バス150及びデータバス160を介して通信可能に連結されている。本明細書で使用される場合、「バス(bus)」という用語は、ワイヤ、電線及び/又は無線通信回線等の任意のタイプの有線又は無線の電気的連結を指す。実施形態が、説明のために単一のメモリモジュール140のコンテキストで図に示され、本明細書で説明されるが、実施形態は、任意の数のメモリモジュールを有するメモリ構成に適用可能である。コンピューティング構成120は、説明のために図に示されず、本明細書に記載されない他の要素を含む場合がある。
【0016】
メモリモジュール140は、例えば、DRAMメモリモジュールであってもよく、対応するPIM実行ユニット(PIM実行ユニット0~PIM実行ユニットN)を有するN+1個のバンク(バンク0~バンクN)を有するメモリアレイを含む。各バンクは、2次元アレイによって画定されたセルを含むが、実施形態は、DRAMメモリモジュール若しくはバンクそれ自体、又は、2次元アレイによって画定されたメモリセルを有するバンクに限定されず、他のメモリセル編成に適用可能である。メモリアレイ及びバンクは、バッファ及び復号器等の他の要素を含んでもよいが、これらの要素は、説明のために図に示されず、本明細書では説明されない。
【0017】
PIM実行ユニットは、PIM命令を処理するための、例えば、論理演算、算術演算等を実行するためのローカルレジスタ等の処理ロジック及びストレージを含む。図1の例では、各バンクに対して個別のPIM実行ユニットが示されているが、実施形態では、より少ない数のPIM実行ユニット、並びに、対応する処理ロジック及びストレージが、任意のタイプのニアメモリ処理を含む複数の(又は全ての)バンクにサービスを提供する。
【0018】
メモリコントローラ130は、メモリモジュール140を行ったり来たりするデータの流れを管理し、スタンドアロン要素として、例えば、マイクロプロセッサとは別のチップ上に実装され、マイクロプロセッサとは別であるが同じチップ上に実装され、又は、集積化メモリコントローラとしてマイクロプロセッサ中に集積化される。実施形態は、任意のタイプのメモリコントローラ130に適用可能であり、一実施形態によれば、メモリコントローラ130は、メモリモジュール140に命令を発行するように構成された処理ロジックを含む。
【0019】
図1Cは、メモリコントローラ130の例示的な実施形態を示し、命令キュー170、スケジューラ172、処理ロジック174、命令メタデータ176、及び、ページテーブル178を含む。メモリコントローラ130は、特定の実施形態に応じて異なり、説明のために図に示されず、本明細書で説明されない、より少ない又は追加の要素を含む。更に、メモリコントローラ130の様々な要素によって提供される機能は、特定の実施形態に応じて、任意の方法で組み合わされる。
【0020】
命令キュー170は、例えば、中央演算処理装置(Central Processing Unit、CPU)、グラフィックス処理装置(Graphics Processing Unit、GPU)又は他のプロセッサ上で実行する1つ以上のスレッドからメモリコントローラ130によって受信されたメモリ命令を記憶する。一実施形態によれば、メモリ命令は、PIM命令及び非PIM命令を含む。PIM命令は、DRAMメモリモジュール内の複数のバンク等のように、メモリモジュール内の複数のメモリ素子に向けられたブロードキャストメモリ命令である。ターゲットメモリ素子は、PIM命令内のビットマスク等の1つ以上のビット値によって指定され、利用可能なターゲットメモリ素子の全てを含む任意の数を指定する。PIM命令は、論理演算及び/又は計算等のいくつかの処理を、メモリモジュール130内の指定されたメモリ素子のうち全てを含む複数によって実行させる。1つの非限定的な例として、PIM命令は、各ターゲットバンクにおいて、値が指定された行及び列のメモリからローカルレジスタに読み取られ、算術演算が値に対して実行され、結果がメモリに戻されて記憶されることを指定する。非ニアメモリ処理命令の例としては、限定されるものではないが、ロード(読み出し)命令、ストア(書き込み)命令等がある。ブロードキャストメモリ処理命令であり、概して、複数のターゲットバンクに向けられるPIM命令とは異なり、非ニアメモリ処理命令は、単一のバンクに向けられる、すなわち、バンク固有である。
【0021】
命令キュー170は、メモリコントローラ130によって発行される命令を記憶する。一実施形態によれば、メモリコントローラ130は、PIM命令及び非PIM命令を、それらが受信された場合に、命令キュー170に記憶する。命令は、命令キュー170のオープンスロットに記憶され、命令は、特定の実施形態に応じて、タイプによって又はタイプにかかわらず、受信順にグループ化される。命令キュー170は、メモリ命令を記憶することができる任意のタイプのストレージによって実装される。実施形態は、単一の要素として実装される命令キュー170のコンテキストで図に示され、本明細書で説明されるが、実施形態はこの例に限定されず、実施形態によれば、命令キュー170は、複数の要素、例えば、メモリモジュール140内のバンクのそれぞれのための個別の命令キューによって実装される。スケジューラ172は、処理のために、メモリ命令をスケジューリングする。一実施形態によれば、スケジューラ172は、以下でより詳細に説明するように、様々な選択基準に基づいて、処理される命令を選択する。
【0022】
処理ロジック174は、メモリ命令を命令キュー170に記憶し、コンピュータハードウェア、コンピュータソフトウェア、又は、コンピュータハードウェア及びコンピュータソフトウェアの任意の組み合わせによって実装される。命令メタデータ176は、命令のタイプ、例えば、PIM又は非PIM、メモリ命令が命令キュー170に記憶された日付及び/又は時間、命令キュー170内のメモリ命令の相対的順序付け、命令のタイプ、命令ステータス等のように、命令キュー170に記憶されたメモリ命令の1つ以上の属性を指定する。
【0023】
ページテーブル178は、メモリモジュール内の1つ以上のメモリ素子の現在の状態を指定するデータを含み、メモリ命令を処理するようにメモリ素子を構成するために、処理ロジック174によって使用される。例えば、ページテーブル178は、メモリモジュール140の各バンクに対するエントリを含み、各エントリは、対応するバンクが、そのバンクに向けられた直近の非PIM命令からの開いている(実行開始、activated)行を現在有するかどうか、もしあれば、何れの行が現在開いているかを、例えば、行IDを介して指定する。行が開かれるか又は閉じられる(実行停止、deactivated)場合、処理ロジック174は、ページテーブル178内の対応するエントリを更新する。一実施形態によれば、ページテーブル178は、バンクが直近のPIM命令から開いている行を有するかどうか、及び、そうである場合、何れの行を有するかを指定する全バンクエントリも含む。PIM及び非PIM命令を管理するための、メモリコントローラ130による全バンクエントリの使用は、以下でより詳細に説明される。
【0024】
(III.処理のための命令の選択)
一実施形態によれば、スケジューラ172は、処理されるメモリ命令を選択するために、2段階プロセスを使用するように構成されている。第1段階において、スケジューラ172は、様々な基準に基づいて、PIM命令と候補非PIM命令のグループとの間で選択を行う。第2段階では、スケジューラ172は、第1段階でPIM命令又は候補非PIM命令のグループの何れが選択されたかに応じて、命令キュー170から特定のPIM命令を選択するか、あるいは、命令キュー170からの候補非PIM命令のグループから特定の非PIM命令を選択する。
【0025】
図1Dは、スケジューラ172によって使用される2段階プロセスを論理的に示すブロック図180であり、第1段階ピッカー180及び第2段階ピッカー182を含む。第1段階ピッカー180及び第2段階ピッカー182は、コンピュータハードウェア、コンピュータソフトウェア、又は、コンピュータハードウェアとコンピュータソフトウェアの任意の組み合わせで実装されるスケジューラ172の機能を表す。
【0026】
第1段階ピッカー180は、特定の実装に応じて変化する選択基準に基づいて、命令キュー170からのPIM命令又は候補非PIM命令のグループの間で選択するように構成されている。候補非PIM命令のグループについて、命令キュー170内の準備完了非PIM命令は、各命令によって指定されたバンク及び行、並びに、ページテーブル178内のバンク及び行のステータスに基づいて、ページヒット、ページミス又はページ競合として分類される。命令準備完了は、発行される次の命令、メモリタイミングパラメータに違反することなくこの命令が発行され得る最も早い時間、命令のメモリ素子(バンク)ステータス、及び、チャネルに発行された最後の命令によって定義される。実施形態によれば、非PIM命令は、限定されるものではないが、実時間トラフィック、例えば、ディスプレイリフレッシュ、I/Oデバイス(入出力デバイス、Input-Output devices)トラフィック等を含む他の基準によって更に分類される。1つの準備完了候補非PIMページヒット命令、1つの準備完了候補非PIMページミス命令、及び、1つの準備完了候補非PIMページ競合命令が、候補非PIM命令のグループに対して選択される。
【0027】
一実施形態によれば、選択基準は、命令帯域幅割り当てを含む。命令帯域幅は、PIM命令と非PIM命令との間に割り当てられ、割り当てのうち何れかが消費された場合に、第1段階ピッカー180は、他のタイプの命令に切り替わる。例えば、PIM命令に割り当てられた命令帯域幅が消費された場合に、次に、第1段階ピッカー180は、非PIM命令の処理に切り替わる。同様に、非PIM命令に割り当てられた命令帯域幅が消費された場合に、次に、第1段階ピッカー180は、PIM命令の処理に切り替わる。命令帯域幅割り当ては、例えば、システム構成情報によって指定される。
【0028】
別の実施形態によれば、選択基準は、保留中の命令の数の閾値を含む。本実施形態では、第1段階ピッカー180は、保留中のPIM命令又は非PIM命令の数が、それぞれ閾値に達した場合に、PIM命令の処理と非PIM命令の処理とを切り替える。特定の実施形態に応じて、同じ保留命令閾値がPIM命令及び非PIM命令の両方に使用されるか、あるいは、個別の閾値が使用されるが、閾値は、プログラムの構成情報を介して指定されてもよい。例えば、プログラマは、大きなPIMコード領域を含むワークロードに対して、より低い保留PIM命令閾値を指定してもよい。別の実施形態によれば、選択基準は、特定のタイプの命令が発行されてからの周期数又は時間を含む。例えば、第1段階ピッカー180は、最後の非PIM命令が処理されてから指定された周期数又は時間量が経過した場合に、PIM命令の処理から非PIM命令の処理に切り替え、その逆も同様である。これは、サービス品質要件を満たす状況において有用である。
【0029】
別の実施形態によれば、選択基準は、特定のマーカの存在を含む。例えば、指定されたマーカを有する命令が命令キュー170に存在することに基づいて、PIM命令の処理と非PIM命令の処理との間で切り替えが行われる。マーカは、例えば、PIM命令又は非PIM命令のグループのエンドポイントを示し、ソフトウェアによって指定されてもよく、例えば、ソフトウェア開発者によって追加されてもよい、又は、異なるプロセッサスレッドからであっても、PIM命令と非PIM命令との間でメモリアドレス依存関係、例えば、Write-After-Read(WAR)、Write-After-Write(WAW)、Read-After-Write(RAW)等のデータハザードが検出された場合に、メモリコントローラ130によって挿入されてもよい。
【0030】
更に別の実施形態によれば、選択基準はグローバルエイジを含む。グローバルエイジ基準の場合、第1段階ピッカー180は、命令メタデータ176に基づく命令キュー170内の最も古い命令タイプに基づいて、処理PIM命令と非PIM命令との間で選択を行う。例えば、命令キュー170内の最も古い命令がPIM命令である場合、PIM命令が処理のために選択され、逆もまた同様である。
【0031】
一実施形態によれば、バーストは、処理される次の命令を選択する際の係数として使用される。例えば、現在の命令がPIM命令である場合、非PIM命令が他の選択基準に基づいて通常選択されるとしても、現在のPIM命令と同じタイプ、すなわち、読み出し又は書き込みである、プログラム順序における次のPIM命令が、非PIM命令よりも優先して選択される。これは、より大きい読み出しPIM命令バースト又は書き込みPIM命令バーストを生成し、読み出しと書き込みとの間の切替え、例えば、読み出しターンアラウンド(送受反転、turnaround)と書き込みターンアラウンドとの間の切替えに関連するコストを低減することによって、処理効率を高める。
【0032】
上述した全ての選択基準は、特定の実施形態に応じて、PIM命令の処理と非PIM命令の処理との間のバランスの所望のレベルを達成するために、個別に又は任意の組み合わせで使用されてもよい。
【0033】
第1段階ピッカー180が処理のためにPIM命令を選択する場合、次に、第2段階ピッカー182では、命令が、命令キュー170にエンキューされた時間を示す命令メタデータ176に基づいて、命令キュー170から最も古いPIM命令が選択される。これにより、PIM命令のプログラム順序が維持され、PIMパイプラインにおける構造的ハザードが回避される。選択されたPIM命令の準備ができていない場合、次に、スケジューラ172は、選択されたPIM命令の準備ができるまで待機する。
【0034】
第1段階ピッカー180が候補非PIM命令のグループを選択する場合、次に、第2段階ピッカー182は、候補非PIM命令のうち何れか、すなわち、準備完了候補非PIMページヒット命令、ページミス命令又はページ競合命令の何れかを選択する。一実施形態によれば、第2段階ピッカー182は、命令メタデータ176に基づいて、これらの3つの準備完了候補非PIM命令のうち最も古いものを選択するが、これは、非PIM命令の正確性を維持するためには必要とされない。
【0035】
一実施形態によれば、メモリコントローラ130は、PIM命令の適切な処理を確実にするために、PIM要求トークンを管理するように構成されている。これは、命令キュー170からPIM命令を選択する場合に、書き込みバッファリング技術、例えば書き込みバーストがスケジューラ172によって使用されないように、通常はメモリ書き込み命令として処理される受信されたPIM命令をメモリ読み出し命令に変換することを含む。これにより、スケジューラ172は、非PIM命令と同様に、PIM命令を直ちに選択することができる。データファブリックは、PIM命令をメモリコントローラ130に送信する前に、データバッファトークンを予約して、対応するメタデータがメモリコントローラ130の専用PIMデータバッファにコピーされることを確実にする。PIM命令を発行する場合に、メモリからデータが返されないので、データバッファトークンは、PIM命令が発行されるまでのみ保持され、その後、PIM命令のメタデータを保持するデータバッファを再利用し得る。PIM命令のメタデータは、メモリコントローラ130によって使用されるか、あるいは、PIM命令が発行されている間にPIMデバイスに転送される。代替的に、十分な通知が利用可能である場合に、次に、PIM命令メタデータは、通知を介してメモリコントローラ130に提供されてもよい。
【0036】
(IV.「全バンク」ステータスを有する例示的なページテーブル)
図2Aは、図1Cのページテーブル178の例示的な実施形態である、ページテーブル200を示している。メモリコントローラ130は、ページテーブル200を使用してメモリモジュールバンクのステータスを追跡し、次のメモリ命令のためにバンクを適切に構成する。一実施形態によれば、ページテーブル200は、直近の非ニアメモリ処理命令、すなわち、非PIM命令の後の対応するバンクのステータスを追跡する各バンクのエントリを含む。また、ページテーブル200は、直近のPIM命令、すなわち、PIM命令の後の全バンクのステータスを追跡する単一のエントリを含む。
【0037】
図2Aの例では、ページテーブル200は、直近の非PIM命令の後の各バンクのステータスを示すエントリ「PGT 0」~「PGT N」を含む。各エントリは、該当する場合、ステータス、バンクID、行がバンクに対して開いているかどうか、及び、開いている行に対する行IDを指定する。状態値「Valid(有効)」は、バンクIDによって特定されるバンクが、現在開いている行を有していることを示し、状態値「Invalid(無効)」は、バンクIDによって特定されるバンクが、現在開いている行を有していないことを示す。バンクIDは、エントリに対応するバンクを識別するデータであり、開いている行列は、バンクが現在開いている行を有するか(Y)、又は、現在開いている行を有しないか(N)を示す。行IDは、バンクに対して現在開いている行を識別するデータであり、バンクが現在開いている行を有していない場合には「n/a」である。一例として、ページテーブル200内の第2のエントリ(PGT 1)内のステータスデータは、バンク1が、現在開いている行5を有することを指定する。エントリ「PGT 0」~「PGT N」のうち1つ以上は、非PIM命令が発行される毎にチェック及び/又は更新される。
【0038】
ページテーブル200内の第1のエントリは、直近のPIM命令を処理した結果として、バンクが現在開いている行を有するかどうかを指定し、そうであれば、何れの行を有するかを指定する新規の全バンクエントリである。例えば、メモリコントローラ130が、行6を指定するブロードキャストPIM命令を発行する、すなわち、全バンクが、行6及び特定の列において、ローカル計算を含み得る特定のメモリ動作を実行するものと仮定する。処理ロジック174は、「有効(Valid)」の状態値、「Y」の開いている行値、及び、6の行IDで、全バンクエントリを更新する。また、処理ロジック174は、必要に応じて、すなわち、発行された先行命令が非PIM命令であった場合に、非PIM命令に対して、ページテーブル178内のその他のバンク固有エントリPGT 0~PGT Nを無効にするが、これについては、以下でより詳細に説明する。メモリコントローラ130が連続したPIM命令を発行した際に、処理ロジック174は、直近のPIM命令によって指定された行で行IDの値を更新する。これは、メモリコントローラ130が非PIM命令を発行するまで続き、その後、処理ロジック174は、全バンクエントリを無効にし(すなわち、ステータスを「無効(Invalid)」に変更し、開いている行を「N」に変更し、行IDを「n/a」に変更することによって)、以下でより詳細に説明するように、非PIM命令によって指定された特定のターゲットバンクのエントリを更新する。したがって、全バンクエントリ内の「有効(Valid)」のステータスは、メモリコントローラ130によって発行された最後の命令が、全バンク又はバンクの指定されたサブセットに発行されたブロードキャストPIM命令であったことを示すが、全バンクエントリ内の「無効(Invalid)」のステータスは、メモリコントローラ130によって発行された最後の命令が、ブロードキャストPIM命令ではなく、代わりに、バンク固有の非ニアメモリ処理命令であったことを示す。
【0039】
(V.非PIMから非PIMへの処理)
図2Bは、ページテーブル200を使用して「非PIMから非PIMへの処理(Non-PIM to Non-PIM processing)」を実行すること、すなわち、発行された直近の命令が非PIM命令でもあった場合に、非PIM命令を処理することを示すフロー図である。ステップ202において、非PIM命令が、処理のために選択される。例えば、メモリコントローラ130は、選択基準に基づいて、命令キュー170から非PIM命令を選択する。本実施例では、非PIM命令が、バンク3、行4に向けられていると仮定する。
【0040】
ステップ204において、全バンクステータスがチェックされる。一実施形態によれば、処理ロジック174は、ページテーブル200内の全バンクエントリのステータスをチェックする。本例では、処理された先行命令が非PIM命令であったので、ページテーブル200内の全バンクエントリは「無効(Invalid)」のステータスを有し、処理ロジック174は、選択された命令についてページテーブルエントリをチェックして、ステータスを決定することに進む。本例では、処理ロジック174は、バンク3の第4のエントリ「PGT 3」を調査するが、これは、バンク3が現在開いている行を有していないことを示す。したがって、ページテーブル200においてページミスがあり、ステップ206において、処理ロジックは、命令によって要求されるバンク内の行を開く。本例では、処理ロジック174は、実行開始命令を発行して、バンク3内の行4を開く。次に、制御はステップ212に進み、処理ロジック174は、ページテーブルを更新して、バンク3のステータスの変更を記録する、すなわち、ステータスフィールドを「無効(Invalid)」から「有効(Valid)」に変更し、開いている行フィールドを「N」から「Y」に変更し、行IDフィールドを「n/a」から「4」に変更する。次に、処理ロジック212は、命令を発行する。
【0041】
ステップ204において、バンク3の行4が現在開いていた場合、次に、これは、ページヒットを表し、制御はステップ212に進む。しかしながら、ステップ204において、バンク3の異なる行が現在開いている場合、これは、ページ競合であり、ステップ208において、処理ロジック174は、例えば、バンク3にプリチャージ命令を発行することによって、現在開いている行を閉じる。ステップ210において、処理ロジック174は、次に、選択された命令を処理するために必要な行(本実施例では、行3)を、バンク3内の行4を開くための実行開始命令を発行することによって開く。次に、制御は、上述したように、ステップ212に進む。
【0042】
ステップ202~212は、任意の数の非PIM命令に対して繰り返され、処理ロジック174は、必要に応じてバンク内の行を開閉し、次に、ページテーブル200を更新する。図2Cは、バンク3の行4が開かれた後に、処理ロジック174によって更新された後のページテーブルを示す図である。
【0043】
(VI.非PIMからPIMへの遷移)
処理ロジック174は、最終的に、処理されるのPIM命令を選択し、非PIMモードからPIMモードに切り替え、本明細書では「非PIMからPIMへの遷移(Non-PIM to PIM Transition)」とも称される。一実施形態によれば、非PIMからPIMへの遷移の決定が行われると、スケジューラ172は、メモリモジュール140に対して未だ発行されていない全ての保留中の非PIM命令をブロックし、発行された非PIM命令が命令キュー170から除去されるために待機する。図2Cは、バンク3の行4に向けられた非PIM命令が処理された後の、この時点でのページテーブル200の状態を示し、全バンクエントリは無効である。図2Dは、非PIMからPIMへの遷移、すなわち、非PIM命令の処理からPIM命令への切り替えを示すフロー図である。
【0044】
ステップ220において、例えば、本明細書で上述した選択基準を使用して、PIM命令が処理のために選択される。本実施例では、処理ロジック174が、全バンクの行5においてメモリ命令を実行するPIM命令を選択すると仮定する。
【0045】
ステップ222において、全バンクステータスがチェックされる。一実施形態によれば、処理ロジック174は、ページテーブル200内の全バンクエントリのステータスをチェックする。本例では、処理された先行命令が非PIM命令であったので、ページテーブル200内の全バンクエントリは、ページ競合を表す「無効(Invalid)」のステータスを有し、制御はステップ224に進み、バンク内の開いている行の全てが閉じられる。例えば、処理ロジック174は、開いている行を有する各バンクに対して全バンクプリチャージ命令又は別のプリチャージ命令を発行することによって、これを達成する。開いている行を有する各バンクに対して、全バンクプリチャージ命令又は別のプリチャージ命令を使用するかどうかの決定は、開いている行を有するバンクに対して、全バンクプリチャージ命令を発行するコストとは別のプリチャージ命令を発行するコストとの比較に基づいて行われてもよい。例示的なコストは、計算コスト、電力消費等を含む。例えば、少数のバンクのみが開いている行を有し、それらのバンクに別のプリチャージ命令を発行することがより安価である状況では、次に、全バンクプリチャージ命令の代わりに、別のプリチャージ命令が使用される。しかし、多数のバンクが開いている行を有し、単一の全バンクプリチャージ命令を発行する方が、計算コストが低い場合、次に、各バンクに対する個別のプリチャージ命令の代わりに、全バンクプリチャージ命令が発行される。
【0046】
ステップ226において、PIM命令によって指定された行が全バンクにおいて開かれる。例えば、処理ロジック174は、行を開くために、バンクごとに実行開始命令を発行するか、あるいは、全バンク実行開始命令を発行する。本例では、処理ロジック174は、全バンクの行5を開く。ステップ228において、ページテーブルが更新され、PIM命令が処理される。例えば、処理ロジック174は、ページテーブル200内の全バンクエントリを更新する。図2Eは、行5が全バンクにおいて開いていることを指定するために、全バンクエントリが更新された後のページテーブル200を示す。このように全バンクエントリを使用することは、行5が開いていることを指定するためにページテーブル200内のエントリの全てを更新する必要がないという技術的利点を提供する。代わりに、全バンクエントリのみが更新される必要があるが、これは、計算リソース及び電力消費を低減する。
【0047】
(VII.PIMからPIMへの処理)
PIM命令が処理のために選択され続けると、処理ロジック174は、いわゆる「PIMからPIMへの処理(PIM to PIM Processing)」を実行する。図2Gは、PIMからPIMへの処理を実行するためのアプローチを示すフロー図である。
【0048】
ステップ230では、例えば、本明細書で上述した選択基準を使用して、別のPIM命令が処理のために選択される。本例では、処理ロジック174が、全バンクの行3においてメモリ命令を実行するPIM命令を選択すると仮定する。
【0049】
ステップ232において、全バンクステータスがチェックされる。一実施形態によれば、処理ロジック174は、ページテーブル200内の全バンクエントリのステータスをチェックする。本例では、処理された先行命令がPIM命令であったので、ページテーブル200内の全バンクエントリは、現在、「有効(Valid)」のステータスを有する。全バンクエントリ内の有効のステータスは、行が全バンク内で現在開いていることを意味し、ページテーブル200内の全バンクエントリによって示されるように、PIM命令によって指定された行が、バンク内で現在開いている行と同じであるか、異なるか、に応じて、ページヒット又はページ競合の何れかを表す。本例では、PIM命令がバンクの行3に対して実行されるメモリ動作を指定し、行5が現在開いているので、これは、ページ競合を表す。現在のPIM命令が行5を指定した場合、これは、ページヒットを表す。有効(Valid)のステータスは、PIM命令によって指定された行が、ページテーブル200内の全バンクエントリによって示されるように、全バンク内で現在開いている行と同じである場合に、ページヒットを表す。
【0050】
本例では、全バンクエントリのチェックの結果、ページ競合が生じるので、ステップ234において、全バンクにおいて開いている行が閉じられる。例えば、処理ロジック174は、全バンクプリチャージ命令を発行することによって、これを達成する。ステップ236において、PIM命令によって指定された行が、全バンクにおいて開かれる。例えば、処理ロジック174は、行を開くために、全バンク実行開始命令、又は、各バンクに対する実行開始命令を発行する。本例では、処理ロジック174は、全バンクの行3を開く。ステップ232における全バンクステータスのチェックの結果がページヒットである場合、すなわち、PIM命令によって指定された行が現在開いている行と同じである場合、ステップ234及び236は実行されない。
【0051】
ステップ238において、ページテーブルが更新され、PIM命令が処理される。例えば、処理ロジック174は、ページテーブル200内の全バンクエントリを更新して、開いている行を5から3に変更する。図2Fは、開いている行を5から3に変更するために、全バンクエントリが更新された後のページテーブル200を示している。上述したように、このように全バンクエントリを使用することは、行3が開いていることを指定するためにページテーブル200内のエントリの全てを更新する必要がないという技術的利点を提供する。代わりに、全バンクエントリのみが更新される必要があるが、これは、計算リソース及び電力消費を低減する。
【0052】
(VIII.PIMから非PIMへの遷移)
任意の数及びタイプのPIM命令であり得るPIM命令を処理した後、処理ロジック174は、処理される非PIM命令を選択し、PIMモードから非PIMモードに戻るように切り替えるが、本明細書では「PIMから非PIMへの遷移(PIM to non-PIM Transition)」とも称される。この決定が行われると、スケジューラ172は、現在のPIM命令の処理を完了し、更なるPIM命令の選択を停止する。また、スケジューラ172は、全ての非PIMトラフィックのブロックを解除する。図2Hは、全バンクの行3に向けられたPIM命令が処理された後のページテーブル200の状態を示している。従って、行3は、全バンクにおいて開いている。
【0053】
図2Iは、PIMから非PIMへの遷移、すなわち、PIM命令の処理から非PIM命令への切り替えを示すフロー図である。ステップ240では、例えば、本明細書で上述した選択基準を使用して、非PIM命令が処理のために選択される。本例では、処理ロジック174が、バンク0の行8においてメモリ動作を実行する非PIM命令を選択すると、仮定する。
【0054】
ステップ242において、全バンクステータスがチェックされる。一実施形態によれば、処理ロジック174は、ページテーブル200内の全バンクエントリのステータスをチェックする。本例では、処理された先行命令がPIM命令であったので、ページテーブル200内の全バンクエントリは、「有効(Valid)」のステータスを有するが、これは、バンクの全てが開いている行を有することを意味し、したがって、ステップ244で、バンクの全てにおいて、開いている行が閉じられる。例えば、処理ロジック174は、全バンクプリチャージ命令を発行することによって、これを達成する。
【0055】
ステップ246では、非PIM命令によって指定された行が、指定されたバンクにおいて開かれる。例えば、処理ロジック174は、バンク0に対して実行開始命令を発行して、行8を開く。ステップ248において、ページテーブルが更新され、非PIM命令が処理される。本例では、処理ロジック174は、全バンクエントリを無効にし、行8がバンク0に対して開いていることを指定するために、ページテーブル200内のエントリ「PGT 0」を更新する。図2Jは、全バンクエントリが無効化され、「PGT 0」エントリが、バンク0内で行8が開いていることを示すように更新された後のページテーブル200を示している。
【0056】
図2Iのプロセスの後、本明細書で上述した非PIMから非PIMへの処理を使用して、任意の数の非PIM命令が処理される。メモリコントローラが、PIM命令用のページテーブル内の単一のエントリを使用して非PIM命令及びPIM命令の両方を処理するための上記のアプローチは、効率的であり、PIM命令用のページテーブル内のバンクごとに個別のエントリを維持しなければならないことを回避する。
【0057】
図3は、メモリコントローラにおいて、PIM及び非PIM命令を処理するためのアプローチを示すフロー図300である。プロセスは、本明細書で上述したように、メモリコントローラ130が処理すべき次の命令を選択することから開始される。ステップ302において、選択された命令がPIM命令であるか否かが決定される。そうでない場合、次に、選択された命令は非PIM命令であり、ステップ304において、ページテーブル内の全バンクエントリのステータスがチェックされる。例えば、処理ロジック174は、ページテーブル200内の全バンクエントリをチェックする。ステップ306において、ページテーブル内の全バンクエントリが有効であるか否かが決定される。例えば、処理ロジック174は、ページテーブル200内の全バンクエントリのステータスが「有効(Valid)」であるか「無効(Invalid)」であるかを決定する。
【0058】
ステップ306において、全バンクエントリのステータスが無効であると決定された場合、処理された直近の命令は非PIM命令であり、ステップ308において、命令のターゲットバンクについてのページテーブルエントリがチェックされ、ページ状態が返される。例えば、非PIM命令がバンク3、行4に向けられていると仮定する。処理ロジック174は、ページテーブル200内のバンク3に対する第4のエントリ「PGT 3」を調査する。ステータスが「無効(Invalid)」の場合、バンク3は現在開いている行を有しておらず、処理ロジックはページ状態「ミス(Miss)」を返す。ステータスが「有効(Valid)」で、バンク3が現在開いている行4を有している場合、処理ロジック174は、ページ状態「ヒット(Hit)」を返す。ステータスが「有効(Valid)」であり、バンク3がその他の開いている行を有している場合、処理ロジック174は、ページ状態「競合(Conflict)」を返す。次に、制御はステップ310に進み、プロセスは完了する。
【0059】
ステップ306に戻って、全バンクエントリのステータスが有効であると決定された場合、処理された直近の命令はPIM命令であり、バンクの全てが同じ開いている行を有する。ステップ312において、ページテーブル内の全バンクエントリが無効化され、命令のターゲットバンクに対するエントリがチェックされ、「競合(Conflict)」のページ状態が返される。ステップ314において、全バンク内の全ての行が閉じられる。例えば、処理ロジック174は、全バンクプリチャージ命令を発行して、全バンク内の全行を閉じ、制御はステップ310に進み、プロセスは完了する。ステップ316で、命令を処理するために必要な行がターゲットバンク内で開かれる。現在の命令は非PIM命令であるので、命令によって指定された行がターゲットバンクにおいて開かれる。例えば、処理ロジック174は、処理のために選択された非PIM命令によって指定されたバンク及び行に対する実行開始命令を発行する。
【0060】
ステップ302に戻って、選択された命令がPIM命令であると決定された場合、ステップ318において、ページテーブル内の全バンクエントリのステータスがチェックされる。例えば、処理ロジック174は、ページテーブル200内の全バンクエントリをチェックする。ステップ320において、ページテーブル内の全バンクエントリが有効であるか否かが決定される。例えば、処理ロジック174は、ページテーブル200内の全バンクエントリのステータスが「有効(Valid)」であるか「無効(Invalid)」であるかを決定する。全バンクエントリのステータスが「無効(Invalid)」である場合、直近の処理された命令は非PIM命令であり、ステップ322において、ページテーブル内の全バンクエントリが検証される。例えば、処理ロジック174は、ページテーブル内の全バンクエントリのステータスを「有効(Valid)」に変更する。次に、制御は再びステップ314に進み、全バンク内の全ての行が閉じられて、先行非PIM命令によって開かれた行が閉じられる。ステップ316において、命令を処理するために必要とされる行がターゲットバンクにおいて開かれる。現在の命令が非PIM命令であるため、処理ロジック174が、PIM命令で指定された行に対して全バンクで実行開始命令を発行すること等によって、PIM命令で指定された行が全バンクで開かれる。
【0061】
ステップ320に戻って、ページテーブル内の全バンクエントリが有効であると決定された場合、直近の発行された命令もまPIM命令であったため、全バンクが開いている行を有する。ステップ324において、全バンクエントリのページ状態が決定され、返される。例えば、処理ロジック174は、ページテーブル200内の全バンクエントリによって指定された現在開いている行をチェックし、開いている行が、現在の(PIM)命令によって指定された行と同じである場合、ページステータスはページ「ヒット(Hit)」であり、現在の(PIM)命令を処理するために必要な行は全バンクにおいて既に開いているので、プロセスはステップ310で完了する。現在開いている行が、現在の(PIM)命令によって指定された行と異なる場合、ページステータスはページ「競合(Conflict)」であり、ステップ326において、全ての行が閉じられ、現在の(PIM)命令によって指定された行が全バンクにおいて開かれる。次に、プロセスは、ステップ310で完了する。
図1A
図1B
図1C
図1D
図2A
図2B
図2C
図2D
図2E
図2F
図2G
図2H
図2I
図2J
図3
【手続補正書】
【提出日】2024-08-14
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
メモリコントローラであって、
ロードキャストニアメモリ処理命令を処理するために選択することと、
前記ブロードキャストニアメモリ処理命令が2つ以上のメモリ素子によって処理された後に、前記2つ以上のメモリ素子のステータスを指定するステータスエントリを前記メモリコントローラに維持することと、
を行うように構成されている
メモリコントローラ。
【請求項2】
前記ブロードキャストニアメモリ処理命令の択は、命令割り当て帯域幅、保留中の命令の数、直近の命令が発行されてからの時間若しくは周期数、マーカの存在、又は、グローバルエイジのうち1つ以上を含む選択基準に基づいている
請求項1のメモリコントローラ。
【請求項3】
前記2つ以上のメモリ素子のステータスエントリをページテーブルの単一のエントリとして維持するように構成されている、
請求項1のメモリコントローラ。
【請求項4】
前記2つ以上のメモリ素子のステータスは、有効なステータス又は無効なステータスを示す、
請求項3のメモリコントローラ。
【請求項5】
前記2つ以上のメモリ素子のステータスは、前記2つ以上のメモリ素子において現在開いている行を示す、
請求項3のメモリコントローラ。
【請求項6】
理された先行メモリ命令が非ニアメモリ処理命令であり、且つ、前記ブロードキャストニアメモリ処理命令を処理するために選択したことに応じて、
メモリモジュール内の2つ以上のメモリ素子内の全ての開いている行を閉じることと、
前記メモリモジュール内の2つ以上のメモリ素子において、前記ブロードキャストニアメモリ処理命令によって指定された行を開くことと、
前記ブロードキャストニアメモリ処理命令によって指定された行が前記2つ以上のメモリ素子において開いていることを示すために、ページテーブル内の前記2つ以上のメモリ素子についての単一のステータスエントリを更新することと、
を行うように構成されている、
請求項1のメモリコントローラ。
【請求項7】
理された先行メモリ命令がブロードキャストニアメモリ処理命令であり、且つ、非ニアメモリ処理命令を処理するために選択したことに応じて、
メモリモジュール内の2つ以上のメモリ素子内の全ての開いている行を閉じることと、
前記非ニアメモリ処理命令によって指定された前記メモリモジュール内の2つ以上のメモリ素子の特定のメモリ素子内の特定の行を開くことと、
前記特定の行が前記特定のメモリ素子内で開いていることを示すために、ページテーブル内の前記特定のメモリ素子についてのステータスエントリを更新することと、
を行うように構成されている、
請求項1のメモリコントローラ。
【請求項8】
記ブロードキャストニアメモリ処理命令は、前記ブロードキャストニアメモリ処理命令及び非ニアメモリ処理命令を含むキューイングされた命令のセットの中から処理するために選択される
請求項1のメモリコントローラ。
【請求項9】
方法であって、
メモリコントローラが、ブロードキャストニアメモリ処理命令を処理するために選択することと、
前記メモリコントローラが、前記ブロードキャストニアメモリ処理命令が2つ以上のメモリ素子によって処理された後に、前記2つ以上のメモリ素子のステータスを指定するステータスエントリを前記メモリコントローラに維持することと、を含む、
方法。
【請求項10】
前記ブロードキャストニアメモリ処理命令の択は、命令割り当て帯域幅、保留中の命令の数、直近の命令が発行されてからの時間若しくは周期数、マーカの存在、又は、グローバルエイジのうち1つ以上を含む選択基準に基づいている
請求項9の方法。
【請求項11】
前記2つ以上のメモリ素子のステータスエントリをページテーブルの単一のエントリとして維持することを含む、
請求項9の方法。
【請求項12】
プロセッサであって、
命令キューと、
メモリコントローラと、を備え、
前記メモリコントローラは、
ブロードキャストニアメモリ処理命令を前記命令キューに記憶することと、
前記ブロードキャストニアメモリ処理命令を処理するために選択することと、
前記ブロードキャストニアメモリ処理命令が2つ以上のメモリ素子によって処理された後に、前記2つ以上のメモリ素子のステータスを指定するステータスエントリを前記メモリコントローラに維持することと、
を行うように構成されている、
プロセッサ。
【請求項13】
前記メモリコントローラは、前記2つ以上のメモリ素子のステータスエントリを、ページテーブルの単一のエントリとして維持するように構成されており、
前記ステータスは、前記2つ以上のメモリ素子において現在開いている行を示す、
請求項12のプロセッサ。
【請求項14】
前記メモリコントローラは、処理された先行メモリ命令が非ニアメモリ処理命令であり、且つ、前記ブロードキャストニアメモリ処理命令を処理するために選択したことに応じて、
メモリモジュール内の2つ以上のメモリ素子内の全ての開いている行を閉じることと、
前記メモリモジュール内の2つ以上のメモリ素子において、前記ブロードキャストニアメモリ処理命令によって指定された行を開くことと、
前記ブロードキャストニアメモリ処理命令によって指定された行が前記2つ以上のメモリ素子において開いていることを示すために、ページテーブル内の前記2つ以上のメモリ素子についての単一のステータスエントリを更新することと、
を行うように構成されている、
請求項12のプロセッサ。
【請求項15】
前記メモリコントローラは、処理された先行メモリ命令がブロードキャストニアメモリ処理命令であり、且つ、非ニアメモリ処理命令を処理するために選択したことに応じて、
メモリモジュール内の2つ以上のメモリ素子内の全ての開いている行を閉じることと、
前記非ニアメモリ処理命令によって指定された前記メモリモジュール内の2つ以上のメモリ素子の特定のメモリ素子内の特定の行を開くことと、
前記特定の行が前記特定のメモリ素子内で開いていることを示すために、ページテーブル内の前記特定のメモリ素子についてのステータスエントリを更新することと、
を行うように構成されている、
請求項12のプロセッサ。
【国際調査報告】