JP2019531546A - 高度dramメモリコントローラの内部キャッシュをバイパスするための方法および装置 - Google Patents

高度dramメモリコントローラの内部キャッシュをバイパスするための方法および装置 Download PDF

Info

Publication number
JP2019531546A
JP2019531546A JP2019513044A JP2019513044A JP2019531546A JP 2019531546 A JP2019531546 A JP 2019531546A JP 2019513044 A JP2019513044 A JP 2019513044A JP 2019513044 A JP2019513044 A JP 2019513044A JP 2019531546 A JP2019531546 A JP 2019531546A
Authority
JP
Japan
Prior art keywords
memory
address
circuit
addresses
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2019513044A
Other languages
English (en)
Inventor
ロイ,ジャン−フランソワ
ドゥヴォー,ファブリス
Original Assignee
アップメム
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アップメム filed Critical アップメム
Publication of JP2019531546A publication Critical patent/JP2019531546A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

本発明は、以下を備える計算システムに関する。命令で制御される1つまたは複数のプロセッサコアと、キャッシュメモリ(114)を備えるメモリコントローラとを有する演算装置と、データバス(106A)およびアドレスバス(106B)を介してメモリコントローラ(112)に接続されたメモリ回路(104)とを備える。メモリ回路(104)は、アドレスバス(106)上に提供される複数の第1アドレスによってアクセス可能な第1のmビットメモリロケーションを有するように適合される。演算装置(102)は、第1のmビットメモリロケーションにアクセスするメモリ動作ごとに、複数の第1のアドレスの中からアドレスを選択するように構成される。

Description

〔関連出願に対する相互参照〕
本願は、2016年6月10日に出願された仏国特許出願第FR2017/58373号に対する優先権を主張し、該文献は、本願明細書に統合された一部とみなされる。
本開示は、プロセッサ、メモリ、およびプロセッサとメモリの間のコントロールインターフェースとを備える計算システムに関する。
PIM(Processor In Memory) プロセッサは、メモリ回路、例えば、DRAMメモリ回路に直接的に集積されたプロセッサである。本明細書では、このメモリ回路をPIM回路と呼ぶ。
PIMプロセッサは、メインプロセッサ、典型的にはIntel(登録商標)、ARM、またはPower Processorによって制御される。本明細書では、このプロセッサをHCPU(ホストCPU)と呼ぶ。
PIMプロセッサおよびHCPUは、PIMプロセッサが集積されているメモリにアクセスする。本明細書では、このメモリをPIMメモリと呼ぶ。
仏国特許出願公開第3032814号明細書は、PIM及びHCPUプロセッサがPIMメモリにアクセスすることを可能にする方法を記載している。
各PIMプロセッサは、HCPUがそれを制御できるようにするレジスタを有する。HCPUによってアクセス可能なこれらのレジスタは、PIM回路の物理アドレス空間において視認することができる。本明細書では、これらのレジスタをインタフェースレジスタと呼び、PIMプロセッサの全てのインタフェースレジスタをこのPIMプロセッサのインタフェースと呼び、HCPU上で動作しこのインタフェースを制御するソフトウェアをインタフェースソフトウェアと呼ぶ。
仏国特許出願公開第3032814号
(コミュニケーションの特徴)
HCPUは、通常、PIMプロセッサを使用するために、以下の動作を実行する。
・PIMメモリに、パラメータ、命令、およびデータを多数入力する。
・このPIMプロセッサのいくつかのインタフェースレジスタにおいて、比較的少ないパラメータ、命令、データおよびコマンドを入力する。
・PIMプロセッサのインタフェースレジスタから、比較的少ないステータスおよび結果を読み取る。
・PIMメモリからの多くの結果を読み取る。
(遅延入力の問題)
HCPUによって生成され、PIMプロセッサのインターフェース、PIMメモリのいずれかを送信先とする入力は、遅延なく処理されなければならない。
HCPUはキャッシュシステムを有しており、このことがPIM回路への入力を未決定の時間だけ遅延させ得る。
HCPUプロセッサは、プロセッサのキャッシュメモリにだけ書き込まれたアドレスによって指定されたデータのメインメモリにおける更新を強制するキャッシュメモリ管理のための命令を有する。
残念ながら、HCPUなどの高性能プロセッサでは、DRAMコントローラのキャッシュメモリを有する場合、これらのキャッシュメモリ管理命令は、DRAMコントローラのキャッシュメモリに影響を及ぼさない。
さらに、これらの更新命令は、書き込まれたデータがDRAMコントローラに転送されることを保証するが、メモリ回路に転送されることを保証しない。
システムが集積PIMプロセッサを備えず通常のメモリを有する場合、メモリ回路に入力が迅速に到達するかどうかは問題ではないので、ソフトウェアは入力後にキャッシュメモリ管理命令を使用する必要がない。
本明細書では、キャッシュメモリ管理命令によって影響を受けるキャッシュメモリを「CPUキャッシュメモリ」と呼び、これらの命令によって影響を受けないキャッシュメモリを「DRAMキャッシュメモリ」と呼ぶ。
(不揮発性メモリの入力遅延の問題)
遅延入力は、PIMプロセッサを備えない不揮発性メモリにとっても問題である。
例えば、エバースピン社が製造したMRAMメモリのようないくつかのMRAMメモリ(磁気メモリ)は、DRAM互換インターフェースを提供し、DRAMコントローラとの使用を可能にするように設計されている。
このようなメモリを使用するコンピュータシステムの電力供給を遮断できるようになる前に、キャッシュメモリDRAM内の待機状態にあるMRAMをターゲットとする入力がそれ以上存在しないことを確認できるようにすることが重要であり、そうでなければ、電力供給が遮断された場合にこれらの記録が失われることになる。
(マージされる入力の問題)
別の問題は、あるアドレスに書き込まれるべきClデータがDRAMキャッシュメモリに記憶される場合、同じアドレスに新しくC2データが到着すると、このデータはC2データで置き換えられてしまう。DRAMキャッシュメモリは、Clデータをメモリ回路に書き込まず、C2データによって置き換えることが最適であると推論してしまう。
この推論がメモリにとって正しければ、HCPUのコマンドを受け取るインタフェースレジスタにとっては正しくない。ClデータおよびC2データが2つの別個のコマンドである場合、まずClデータが、次にC2データがPIM回路に書き込まれる必要がある。
(並べ替え入力の問題)
また、DRAMキャッシュメモリは、データ入力の実行順序を変更する可能性があり、これらの入力が異なるアドレスを持っている場合でも問題となる。
従って、以下の順序、
・まず、PARAMと呼ばれるインターフェースレジスタへコマンドパラメータの入力する
・次に、CMDと呼ばれる別のインターフェースレジスタへ対応するコマンドを入力する
で構成されるコマンドは、DRAMキャッシュメモリによって反対の順序で実行できるので、CMDに書き込まれたコマンドは、まだ新しいパラメータが書き込まれていないPARAMレジスタの古い値を、パラメータとして用いて実行されるであろう。
(古い隠れた値の問題)
HCPUがAVアドレスで値V2を読み取る場合、この値V2はPIMプロセッサによって生成されたため、HCPUによって読み取られる値は、この最新の値V2であり、この同じAVアドレスでのV2生成前の読み取り中にキャッシュメモリにコピーされた以前の値V1ではないことが重要である。
HCPUプロセッサはキャッシュメモリ管理命令を有し、キャッシュメモリ内のアドレスによって指定されたデータを無効にすることができる。
また、AVアドレスをパラメータとしてこのような命令を実行した後、値V1はもはやキャッシュメモリ内に存在せず、HCPUがAVアドレスでデータを読み直す場合、HCPUはメモリ回路から値V2を取得し、キャッシュメモリはその値V2を隠す。
残念ながら、これらのキャッシュメモリ管理命令は、DRAMキャッシュメモリに影響を及ぼさない。
AVアドレスをターゲットとする無効化命令は、値V1がもはやそのCPUキャッシュメモリ内に存在しないことを保証するが、値V1がDRAMキャッシュメモリ内に存在しないことは保証しない。
そうである場合、このアドレスはもはやCPUキャッシュメモリ内にないので、HCPUがAVアドレスを再度読み取るとき、HCPUは、DRAMコントローラからのAVアドレスでの読み取りを要求する。しかし、後者は、そのDRAMキャッシュメモリからの次のような入力を有する。
・有効であり、
・AVアドレスに対応し、
・まだ古い値V1を含んでいる。
したがって、PIM回路から値V2を読み出す代わりに、DRAMコントローラは、そのDRAMキャッシュメモリから値V1を返すだけである。
システムが、集積PIMプロセッサを備えず、通常のメモリを有する場合、ソフトウェアは、データを読み取る前にキャッシュメモリ管理命令を使用する必要がない。HCPUだけがメモリを変更するので、CPUキャッシュメモリ内のデータは常に最新である。一方で、PIMプロセッサを有するシステムでは、PIMプロセッサもメモリを変更することができる。
(HCPUの変更)
最も論理的な解決策は、キャッシュメモリ管理命令がDRAMキャッシュにも影響を与えるようにHCPUを変更することである。
残念ながら、HCPU製造業者にそのように変更を説得することは非常に難しい。
・HCPUの設計コストは非常に高く、そのような設計には数年かかる。
・このような変更によるHCPUの設計の遅れは、製造業者にとって非常に高いコストとなる。
・このような変更によるPIMプロセッサのサポートは、製造業者の工業およびマーケッティング戦略に反する可能性がある。
したがって、HCPUの変更を必要とせず、PIMプロセッサのインタフェースにおいて、インタフェースソフトウェアによって完全に実施される、HCPUとDRAMに集積されたPIMプロセッサ間の通信の問題に対する解決策が必要である。
(発明の概要)
したがって、実施形態は、以下を備える計算システムを提供する。計算システムは、1つ又は複数の命令によって制御されるプロセッシングコア及びキャッシュメモリを備えるメモリコントローラを有する演算装置、および、データバス及びアドレスバスを介して前記メモリコントローラに接続されるメモリ回路と、を備える。前記メモリ回路は、前記アドレスバス上に提供される複数の第1のアドレスによってアクセス可能な第1のmビットメモリロケーションを有するように構成され、前記演算装置は、前記第1のmビットメモリロケーションにアクセスするメモリの動作ごとに、前記複数の第1のアドレスからアドレスを選択するように構成される。
一実施形態によれば、第1のmビットメモリロケーションは、P個の複数の第1のアドレスによってアクセス可能であり、演算装置は、第1のメモリロケーションにアクセスするためのN番目および(N+P)番目の動作中に、第1のアドレスのうちの1つを使用して第1のメモリロケーションにアクセスするように構成される。
一実施形態によれば、複数の第、のアドレスのそれぞれのアドレスは、nビットの第1の値と、pビットの第2の値とを含み、演算装置は、書き込みデータに従って生成された第1の選択されたnビット値および第2のpビット値を有する第1のアドレスのうちの1つを使用して、第1のメモリロケーションの読み出し動作を実行することによって、第1のロケーションメモリのmビットへのデータ書き込み動作を実行するように構成される。
一実施形態によれば、メモリ回路は、第1のアドレスのうちの1つを使用する第1のメモリロケーションにおける読み出し動作を受信することに応じて、第1のメモリロケーションにおけるアドレスの第2のpビット値が書き込まれるように適合される。
一実施形態によれば、pおよびnは整数であり、nはp以上である。
一実施形態によれば、メモリ回路は、アドレスバス上に提供される複数の第2のアドレスを介してアクセス可能な第2のメモリロケーションを有するように適合される。
一実施形態によれば、第1および第2のメモリロケーションは、メモリ回路の第1のメモリロケーション範囲の一部であり、第1のメモリロケーション範囲は、スライディングアドレスウィンドウによって選択され、第1のメモリロケーション範囲のメモリロケーションは、以下によって、アドレス指定可能である:
第1の複数のアドレスのうちの1つおよび第2の複数のアドレスのうちの1つを含むアドレスの第1の範囲内の対応するアドレス;
第1の複数のアドレスのうちの1つおよび第2の複数のアドレスのうちの1つを含む第2のアドレス範囲における対応するアドレス;
前記メモリ回路は、前記第1および第2のアドレス範囲のアドレスを前記スライディングアドレスウィンドウの対応するアドレスに変換するように適合されたアドレス変換回路を含む。
一実施形態によれば、アドレス変換回路は、スライディングアドレスウインドウの位置を定義する少なくとも1つのプログラマブルレジスタを含む。
別の実施形態によれば、前記少なくとも1つのアドレス変換回路レジスタは、スライディングアドレスウィンドウの位置およびサイズを定義するようにプログラム可能である。
別の実施形態によれば、メモリコントローラは、キャッシュメモリ退避の動作を実行するように構成され、キャッシュメモリ退避動作は、以下の結果をもたらすメモリコントローラによって実行される1つまたは複数のメモリアクセス命令シーケンスを含む。
・メモリコントローラのキャッシュメモリに格納されたキャッシュメモリ書き込みトランザクションの全部又は一部がメモリ回路に書き込まれる。
・メモリコントローラのメモリキャッシュに記憶された読み出しデータの全部または一部がメモリキャッシュから除去され、読み出しデータはキャッシュの退避動作によってメモリ回路から読み出されたデータを含む。
・メモリコントローラのメモリキャッシュに記憶されたキャッシュメモリ読み出しトランザクションの全部または一部がメモリ回路に書き込まれ、メモリコントローラのキャッシュメモリに記憶された読み出しデータの全部または一部がキャッシュメモリからクリアされる。
別の実施形態によれば、メモリ回路は、補助プロセッサをさらに含み、記憶アクセス命令のシーケンスは、補助プロセッサを制御するためにメモリ回路の1つ以上の制御レジスタにアクセスするためのレジスタアクセス命令のみを含む。
別の実施形態によれば、メモリ回路は、演算装置によってアクセス可能であり、メモリ回路で実行される記憶アクセストランザクションを記録するように適合されたモニタリング回路を含み、演算装置は、モニタリング回路によって記録されたトランザクションに基づいて前記1つまたは複数のメモリアクセス命令シーケンスを生成するように構成される。
別の実施形態によれば、メモリは補助プロセッサをさらに含み、第1および第2のメモリロケーションは補助プロセッサ制御レジスタである。
別の実施形態によれば、演算装置は、第1のタイプおよび第2のタイプのコマンドを生成するように構成され、メモリ回路は、計算装置から受信したコマンドの順序を、第1のタイプの第1のコマンドと第2のコマンドとの間で計算装置によって生成された第2のタイプのコマンドの第1のグループについて、第2のタイプのコマンドグループに関する第1のタイプの第1のコマンドおよび第2のコマンドの順序が尊重されるように変更するように適合される。
別の実施形態によれば、メモリ回路は、少なくとも第1のタイプの各コマンドに関連付けられた順序値に基づいてコマンドの順序を変更するように適合され、各順序の順序値は、以下の何れかに含まれる:
コマンドの受信体のアドレス、
コマンド自体、または
部分的にはコマンド受信体のアドレスに、部分的にはコマンド自体に。
別の実施形態によれば、演算装置は、キャッシュメモリ管理命令によって設定することができるCPUキャッシュメモリをさらに含み、メモリコントローラのキャッシュメモリは、キャッシュメモリ管理命令によって設定することができない。
別の実施形態によれば、メモリは不揮発性メモリマトリクスを含む。
別の実施形態は、データバスおよびアドレスバスを介して演算装置のメモリコントローラに接続されたメモリ回路へのアクセスプロセスを提供し、計算デバイスは、1つまたは複数のプロセッシングコアと、キャッシュメモリを備えたメモリコントローラを有し、前記プロセスは、演算装置によって、メモリ回路の第1のmビットメモリロケーションにアクセスするメモリの動作ごとに、複数の第1のアドレスから1つを選択することを含み、第1のmビットメモリロケーションは、アドレスバス上に提供される複数の第1のアドレスのそれぞれによってアクセス可能である。
別の実施形態によれば、メイン回路と少なくとも1つのメモリ回路とから構成されるシステムが提供される。メイン回路は、少なくとも1つのメインプロセッサと、メモリ回路に接続されたメモリコントローラとを備え、メモリコントローラは、メインプロセッサのキャッシュメモリ管理命令によって影響を受けないキャッシュメモリを備える。メモリ回路は、少なくとも1つの補助プロセッサを備え、この補助プロセッサは、メインプロセッサにアクセス可能なインタフェースを備え、このインタフェースはレジスタを備え、各インタフェースレジスタは、複数のアドレスを介してメインプロセッサによってアクセス可能であり、このインタフェースは、メインプロセッサ上で動作するソフトウェアによって制御され、ソフトウェアは、インタフェースの所与のレジスタへのアクセスごとに、所与のレジスタに対応する複数のアドレスから1つのアドレスを選択する。
別の実施形態によれば、所与のインターフェースレジスタにアクセスするためのアドレスの選択は、このレジスタへのN番目アクセス中に使用されるアドレスが、このレジスタへの(N+P)番目アクセス中に使用されるように行われ、Pは、このレジスタに関連する複数のアドレスを構成するアドレスの数である。
別の実施形態によれば、少なくとも1つのインターフェースレジスタへのアクセスアドレスは、メジャーフィールドと呼ばれる第1のnビットフィールドを、マイナーフィールドと呼ばれる第2のpビットフィールドと組み立てることによって構築され、メジャーフィールドの値は、複数の値の中から選択され、マイナー・フィールドの値は、0と(2^P)−1との間に含まれる任意の値を有することができ、アドレス{メジャーフィールド、マイナーフィールド}でのインターフェースレジスタの読み取りは、マイナーフィールド値によるその書き込みを含み、ソフトウエアは、レジスインターフェースに値を書き込むためにそのような読み取りを使用する。
別の実施形態によれば、マイナーフィールドの考えられる値は、インターフェースレジスタに書き込むことができる値に制限される。
読み出し動作中に、メモリに書き込まれるビットを送信するためにアドレスフィールドを使用することの利点は、書き込み動作の場合のように、読み出し動作がキャッシュメモリにおいて待機状態に置かれる可能性が低いことである。
別の実施形態によれば、インターフェースレジスタは、メモリ回路の記憶範囲上の追加のアクセスウィンドウの位置、および必要に応じて、その大きさを設定することを可能にし、このアクセスウィンドウは、複数のアドレス範囲を介してアクセス可能であり、インターフェースソフトウェアは、アクセスウィンドウを関係するメモリ範囲上に配置することによって、回路メモリのメモリへのアクセスを提供し、そのアクセスウィンドウにアクセスすることを可能にする複数のアドレス範囲の中からアクセスアドレスを選択する。
別の実施形態によれば、インターフェースソフトウェアは、アクセスウインドウへのN番目アクセスのアドレスが所与のアドレス範囲から選択される場合、(N+P)番目のアクセスのアドレスが同じアドレス範囲(Pは複数のアドレス範囲を構成するアドレス範囲の数)で選択されるように、アクセスウインドウにアクセスするアドレスを選択する。
別の実施形態によれば、インターフェースを制御するソフトウェアは、1組の所定のアクセスシーケンスから選択されたアクセスシーケンスを使用して、このシーケンスの前に発行された書き込みトランザクションをメモリコントローラのキャッシュから除去し、したがって、これらの書き込みトランザクションの効果的な実行を強制し、所定のアクセスシーケンスの決定は、メモリコントローラのキャッシュから、既知の特性または観測から推定された特性から行われる。
別の実施形態によれば、インターフェースを制御するソフトウェアは、1組の所定のアクセスシーケンスから選択されたアクセスシーケンスを使用して、このシーケンスの前に読み取られたデータをコントローラメモリキャッシュから除去し、所定のシーケンスの決定は、コントローラメモリキャッシュの観測から既知または推測される特性から行われる。
別の実施形態によれば、インターフェースを制御するソフトウェアは、1組の所定のアクセスシーケンスの中から選択されたアクセスシーケンスを使用して、コントローラメモリキャッシュから書き込みトランザクションおよびこのシーケンスの前に読み取られたデータを除去し、所定のシーケンスの決定は、メモリ・コントローラ・キャッシュの既知のまたは観察から推論された特性に基づく。
別の実施形態によれば、アクセスシーケンスは、メモリ回路に関連づけられる物理アドレスのサブセットに対応して、書き込みトランザクションまたはリードデータがメモリコントローラキャッシュから退避するのを保証するだけであるように低減される。
別の実施形態によれば、前記所定のアクセスシーケンスは、インターフェースレジスタへのアクセスのみを含む。
別の実施形態によれば、インターフェースは、メモリ回路に最後に到達したトランザクションを記録するメカニズムを含み、この記録メカニズムは、インターフェース自体を介してメインプロセッサによってアクセス可能である。別の実施形態によれば、インターフェースを制御するソフトウェアは、前もって最後のトランザクションの記録メカニズムを使用して、前記所定のアクセスシーケンスを自動的に決定する。
別の実施形態によれば、インターフェースは、HCPUからコマンドを受け取ることができる少なくとも1つのコマンドレジスタを含み、これらのコマンドは、高く順序付けられたコマンドと低く順序付けられたコマンドとに分類される。2つの高く順序付けられたコマンド間に発行される低く順序付けられたコマンドは、低く順序付けられたコマンドが順不同で実行されることができる低く順序付けられたコマンドのセットを形成し、高く順序付けられたコマンドは、他の高く順序付けられたコマンドに対して、および低く順序付けられたコマンドのセットに対して、順序付けられて実行される。
別の実施形態によれば、インターフェースは、HCPUからコマンドを受け取ることができる少なくとも1つのコマンドレジスタを備え、これらのコマンドはすべて高い順序に順序付けられている。
別の実施形態によれば、コマンドは、コマンド自体に含まれる数の使用によって並べ替えられる。
別の実施形態によれば、コマンドは、コマンドアドレスに含まれる数の使用によって並べ替えられる。
別の実施形態によれば、コマンドは、数の使用によって並べ替えられ、数の一部はコマンド自体に含まれ、残りはコマンドのアドレスに含まれる。
別の実施形態によれば、補助プロセッサはメモリ回路に集積されず、メモリ回路に接続された回路に埋め込まれる。
別の実施形態によれば、集積プロセッサはなく、メモリは不揮発性である。
これらおよび他の特徴および利点は、添付の図面に関連して以下の特定の実施形態の網羅的でない記述において詳述される。
図1は、実施形態による計算システムを模式的に示す。 図2は、実施形態による図1のシステムのメモリインターフェースをより詳細に示す。 図3は、別の実施形態による図1のシステムのより詳細なメモリインターフェースを示す。
(DRAMキャッシュ)
(DRAMキャッシュメモリのサイズ)
DRAMキャッシュメモリの存在は、以下の最適化を可能にする。
・ページオープン、特に低速動作を最小限に抑えるために、特にリフレッシュ要求を含むメモリ回路への要求を再スケジューリングすること。
・近い将来おそらくアクセスされるデータの予想される読み込み。
CPUキャッシュメモリのサイズがかなり大きい(最大数十Mb)ということは、DRAMキャッシュメモリが、それが達成できる性能向上の本質的な部分に対して大きなサイズである必要がないことを意味する。
HCPU製造業者のマーケティング文書は、常に、CPUキャッシュメモリのサイズには言及しているが、DRAMキャッシュメモリについては存在そのものに言及していないことは注目に値する。これは、DRAMキャッシュメモリのサイズが、CPUキャッシュメモリのサイズに比べて、重要でないからである。
(応用可能性)
これらの技術がDRAMキャッシュメモリ上で動作するならば、それらがCPUキャッシュメモリ上でも動作するであろうことが想像できるので、キャッシュメモリ管理命令なしで完全に実行するために、以下に説明する技術を使用するかどうかという問題が生じる。
しかし、これらの技術は大きなキャッシュメモリに適用される場合には効果的ではなく、そのため、キャッシュメモリ管理命令は、そのようなキャッシュメモリの管理によく適合される。
また、キャッシュメモリ管理命令を使用しない理由はなく、記述された技術は、それらを完成させ、置き換えないために使用される。
(規約:キャッシュメモリ管理命令の暗黙の使用)
本明細書では、説明を簡略化するために、キャッシュメモリ管理命令は、以下の場合に暗黙的に使用されるものとする。
「HCPUがデータを書き込む」といった場合は、HCPUは実際には以下の2つの動作を実行することを理解されたい。
・HCPUは、通常の書き込み命令を用いてこのデータをメモリに書き込む。
・HCPUは、CPUキャッシュメモリの対応する入力を更新するが、DRAMキャッシュメモリに影響しないキャッシュメモリ管理命令を使用する。
「HCPUがデータを読み取る」といった場合には、HCPUは実際には以下の2つの動作を実行することを理解されたい。
・HCPUは、CPUキャッシュメモリの対応する入力を無効にするが、DRAMキャッシュメモリに影響しないキャッシュメモリ管理命令を使用する。
・HCPUは、通常の書き込み命令を用いてメモリ内のこのデータ読み出す。
(メモリバリア命令の暗黙の使用)
HCPUは、通常、高性能のプロセッサであり、したがって、順序を変えて命令を実行することができ(Out of order processor:000プロセッサ)、キャッシュメモリ管理命令に加えて、「メモリバリア」命令の使用が可能であり、適切な順序で命令の実行を強制することができる。
MB(Memory Barrier)命令は、BM命令の後の命令によって生成されるアクセスが実行される前に、BM命令の前の命令によって生成されるすべてのアクセスがCPUキャッシュメモリの観点から完全に実行されることを保証する。
HCPUの命令のセットは、最適性能のために、この概念に近い変形を含み、例えば、書込みのみまたは読込みのみのためのバリア命令を含む。
これら全ては当業者に周知であり、適用可能な場合には、当業者は最も適切なバリア命令を選択する。
(インターフェースレジスタの解決法)
上記課題を解決するための技術は、以下を含む。
・インタフェースレジスタに関する問題の解決。
・PIMメモリに関する問題の解決
インタフェースレジスタの数がPIMメモリのメモリワードの数よりもはるかに少ないという事実から差異が生じる。
「マッピングされた」レジスタという表現は、レジスタが物理アドレスによってアクセス可能であることを意味する。レジスタは数回マッピングすることができる。それは、いくつかの異なる物理アドレスによってアクセス可能であることを意味する。
(インタフェースレジスタ数の削減)
図1は、例えば、DDRタイプ(英語の「ダブルデータレート」から)のバスによってメモリ回路104に接続されたプロセッシング装置102を含む計算システムを示している。バスは、例えば、データバス106Aおよびアドレスバス106Bを含む。
装置102は、例えば、1つ以上の処理コア108、CPU(Central Processing Unit)キャッシュメモリ110、およびキャッシュメモリ114を含むメモリコントローラ112を含む。キャッシュメモリ114は、例えば、メモリ回路104がDRAM型メモリである場合にはDRAMキャッシュである。
メモリ回路104は、例えば、メモリ116、プロセッシング装置118、およびインターフェース120を含む。さらに、回路104は、例えば、1つ以上のレジスタ124およびモニタリング回路126を含むアドレス変換回路122を含む。
この解決法によれば、各インタフェースレジスタは数回マッピングすることができ、その回数はDRAMキャッシュメモリの特性に依存する。
所定サイズの物理アドレスの範囲では、インターフェースレジスタの数が少なければ少ないほど、それらの各々を多数回マッピングすることができる。非常に少ないインターフェースレジスタを有するインターフェースを実装することも可能であり、したがって、間接アクセスシステムを使用して、そのレジスタの各々を多数回マッピングさせることができる。
例えば、PIMプロセッサ118のインターフェースは、直接アクセス可能なレジスタを3個だけ備え、はるかに多くのレジスタへの間接アクセスを可能にすることができる。
・index_register、書き込み時のみアクセス可能
・write_register、書き込み時のみアクセス可能
・read_register、読み取り時のみアクセス可能
このようなインターフェースは、多数のレジスタへの間接的なアクセスを提供する。
間接的にしかアクセスできないレジスタを読み取るには、
・このレジスタのインデックスを、インデックスレジスタに書き込む必要がある。
・read_registerを読み込む必要がある。
間接的にしかアクセスできないレジストリを書き込むには、
・このレジスタのインデックスは、インデックスレジスタに書き込む必要がある。
・書き込むべきデータを、書き込みレジスタに書き込む必要がある。
本明細書では、HCPUによって直接アクセス可能なPIMプロセッサのインタフェースレジスタのセットのみが、このPIMプロセッサのインタフェースと呼ばれ、本発明の観点からは、間接的にアクセス可能なレジスタは、PIMプロセッサのインタフェースの一部ではない。
(インタフェースレジスタ毎の多数アドレスの生成)
図2に示されるように、メモリ回路104は2^Nのメモリワードを含むが、多くのアドレスを生成するために、これはi>0である2^(N+i)のメモリワードを有すると記述される。
サイズが2^Nである物理アドレスの範囲は、メモリワードをマッピングするために割り当てられ、PIMプロセッサのインターフェース120のレジスタ202および204をマッピングするために利用可能なサイズが((2^i)−1)x(2^N)である物理アドレスの範囲が残り、これらのレジスタの各々を多数回マッピングすることが可能になる。
ブートコード(BIOS/ブート・ファームウェア)およびオペレーティングシステム(OS)は、記述されたサイズではなく、メモリの実際のサイズを考慮に入れなければならない。
・システム起動中に実行されるメモリテストは、実際のメモリに対応する物理アドレスの範囲のみに関係するものでなければならない。
・OSは、メモリの実際のサイズを考慮に入れて、そのメモリアロケータのデータベースを初期化しなければならない。
(インタフェースレジスタのための本発明のメカニズム)
インターフェースレジスタの場合、インターフェースソフトウェアは、レジスタへのアクセス(例えば、図2のレジスタ202へのアクセス208、およびレジスタ204へのアクセス210)ごとに、それをマッピングする異なるアドレスを使用する。
結果として、
・DRAMキャッシュメモリは、アドレスが一致しないので、その入力の1つに既に持っているデータを提供せず、DRAMキャッシュメモリに影響しないキャッシュメモリ無効化命令の問題を解決する。
・マージにはトランザクションが同じアドレスを有するが必要なので、DRAMキャッシュメモリは、書き込みトランザクションをマージしない。
・DRAMキャッシュメモリはすぐに「オーバーフロー」してしまうので、当然、そこに格納された書き込みトランザクションを転送する。
最後の点について、インタフェースソフトウェアには、以下のことが可能である。
・アドレス指定されたインタフェースレジスタを再度読出すことによって、書込みが実際に実行されることを、いつでも保証する(もちろん、このレジスタをマッピングする別のアドレスを使用して)。
・一連の入力の後、読み出しまたは書き込みで、DRAMキャッシュメモリから以前の書き込みを押し出すことを唯一の目的とする「偽」アクセスを生成することができる(そして、これらの入力が実際に行われたことを確認でき、そうでない場合には、新しい偽アクセスを生成することができる)。
もちろん、インターフェースレジスタは、無限の回数だけマッピングすることはできないので、このレジスタへのアクセスがある回数を過ぎると、それをマッピングするアドレスのセットが使い尽くされ、すでに利用されているアドレスが再び利用されることになる。
このため、アドレスが再利用される前に、DRAMキャッシュへの入力がこのアドレスに関連付けられることがないように、各インタフェースレジスタの利用可能なアドレスのセットは十分に多くなければならない。
インタフェースレジスタをマッピングする全てのアドレスの最小サイズは、もちろん、 DRAMキャッシュメモリのサイズおよび特性によって決まる。
(アドレスリストの簡単な生成)
制御レジスタをマッピングする一連のアドレスは、円関数Fによって生成される:
アドレスA1を利用する場合、次のアドレスA2は、F(A1)で与えられる
「現在のアドレス」と呼ばれるメモリワードに関連する状態は、その最後のアクセスに利用されたアドレスによって要約される(アドレスの一部が固定されている場合は、このアドレスのフィールドを参照のこと)。
(共用アドレスのシリーズ)
いくつかのインターフェースレジスタは、それぞれが個々の現在のアドレスに関連付けられる代わりに、共用の現在のアドレスを利用することができ、これは、以下のように、アクセスごとに管理される。
・レジスタへのアクセスのためのアドレスは、考慮されるレジスタに依存するオフセットと、共用の現在のアドレスとの和の結果である。
・アクセスに続いて、共用の現在アドレスが関数Fによって更新される。
(コマンドライティングのリスケジュール)
本明細書では、コマンドを受け取ることができるインタフェースレジスタを、ドキュメントコントロールレジスタと呼び、このようなレジスタに到着するコマンドは2つのクラスに分けられる。
弱く順序付けられたクラス:例えば、データ書き込みコマンド、命令およびパラメータを含む。
高く順序付けられたクラス:例えば、以下のコマンドを含む;
・PIMプロセッサの起動
・PIMプロセッサの停止
・PIMプロセッサのステータスの取得
コマンドの一方または他方のクラスへの帰属は、コマンド自体にコード化される。順序付けの規則は、以下の通りである。
弱く順序付けられたコマンドは、他の弱く順序付けられたコマンドに対して、順序付けがされない。したがって、
・別の弱く順序付けられたコマンドより前に発行された弱く順序付けられたコマンドは、それ(他の弱く順序付けられたコマンド)より後に実行することができる。
弱く順序付けられたコマンドは、高く順序付けられたコマンドに対して、順序付けがされる。したがって、
・強く順序付けられたコマンドの前に発行された弱く順序付けられたコマンドは、後者の後に実行することができない。
・高く順序が付けられたコマンドの後に発行された弱く順序付けられたコマンドは、後者の前に実行することができない。
高く順序付けられたコマンドどうしは、互いに対して順序付けられる。したがって、
・別の高く順序付けられたコマンドの前に発行された高く順序付けられたコマンドは、後者の後で実行できない。
(高く順序付けられたコマンドのリスケジューリング)
DRAMキャッシュメモリがあるために、強く順序付けられたコマンドは、コマンドレジストリを受信することによって、順不同に受信され得るが、これらのコマンドは、コマンド生成の順序で実行されなければならない。この目的のために、強く順序付けられたコマンドは、コマンド生成中に番号が付けられる。
(コマンドの番号付)
この方法では、あるコマンドレジスタに宛てられた強く順序付けられた各コマンドは、コマンドに番号を付けるために使用されるnビットの範囲を含む。
さらに、以下のハードウェアリソースがコマンドレジスタに関連付けられる:
・実行すべき高く順序付けられたコマンドの現在の番号を含む、「現在コマンド番号」と呼ばれるnビットのカウンタ。
・コントロールバッファと呼ばれる2^N個の入力のメモリであって、それぞれの入力は、以下の通りである。
(1)有効状態、無効状態いずれも取り得、
(2)初期では、無効状態であり、
(3)有効状態においては、高く順序付けられたコマンドを記憶することができる。
これらのハードウェアリソースは、以下のアルゴリズムに従う:
・高く順序付けられたコマンドがコマンドレジスタに書き込まれると、その番号Vが現在コマンド番号と比較される。
(1)番号が一致する場合、コマンドが実行され、
(2)そうでなければ、コマンドはバッファコマンド入力に[V]と記録され、この入力は有効として記録され、
(3)コマンドが完了すると、現在コマンド番号はインクリメントされ、その新しい値はWと記される。
コマンドバッファへの[W]入力が有効である場合、それを含むコマンドが実行され、入力は無効として記録される。
インタフェースソフトウェアは、最後に実行されたコマンドを確認するために現在コマンド番号を読み取ることができ、それによって、どれだけのコマンドが実行されたか、したがって、コマンドバッファの容量を超えることなく、どれだけの新しい強く順序付けられたコマンドを生成できるかを知ることができる。したがって、前のコマンドが実行されるごとに、高く順序付けられたコマンドを生成することができる。
高く順序付けられたコマンドと弱く順序付けられたコマンドとの区別を確立することのより、以下のことが可能となる。
・コマンドバッファのサイズを制限する。
・弱く順序付けられたコマンドを、発行順ではなく到着順で実行し、そのことによって性能を向上させる。
・インタフェースがそれをサポートする内部並列処理機構を有する場合、弱く順序付けられたコマンドを並列して実行する。
(アドレスの番号付け)
この方法は、前述した方法の変形例であり、コマンドが書き込まれるアドレスの一部をコマンド番号として用いる。
コマンドレジスタをマッピングする一連のアドレスは、円関数Fによって生成される:
Alアドレスが利用される場合、A2によるアドレスはF(Al)によって与えられる。
関数Fは:
・CAとマークされたアドレスのnビット範囲のみを修正する。
・CAのM個の可能な値のうちE個のセットを定義する。
コマンドレジスタは、以下のハードウェアリソースに関連付けられる。
・実行すべき高く順序付けられたコマンドの現在の番号を含む、現在コマンド番号と呼ばれるnビットのカウンタ。
・コマンドバッファと呼ばれるM個の入力のメモリであり、各入力は、
(1)組Eの値のうち1つによってのみインデックス付けされ、
(2)有効状態または無効状態にすることができ、
(3)初期では無効状態であり、
(4)有効状態において、高く順序付けられたコマンドを保存することができる。
これらのハードウェアリソースは、以下のアルゴリズムに従う:
・高く順序が付けられたコマンドがコマンドレジスタに到着すると、そのCAフィールドは、現在コマンド番号の値と比較される。
(1)CAと現在コマンド番号が一致する場合、コマンドが実行され、
(2)さもなければ、コマンドは、このCAインデックスを有するコマンドバッファのエントリに記録され、この入力は有効と記録される。
高く順序付けられたコマンドが完了すると、現在コマンド番号は関数Fによって変更される。そして、
(1)新しい現在コマンド番号によって指定されたコマンドバッファの入力が有効である場合、それを含むコマンドが実行され、その入力は無効としてフラグが立てられる。
(混合番号付)
この方法は、上述の両方の方法を利用する。コマンド番号は、部分的にはアドレスフィールドと、部分的にはコマンドフィールドとから構成される。
(弱く順序付けられたコマンドのリスケジュール)
弱く順序付けられたコマンドは、リスケジュールされる必要はなく、以下のことが保障されるだけでよい。
(1)弱く順位付けられたコマンドを生成する前に、実行されることを待つ高く順位付けられたコマンドがないこと、
(2)高く順位付けられたコマンドを生成する前に、実行されるのを待つ弱く順位付けられたコマンドがないこと。
上記第1の点は、インタフェースソフトウェアによって、以下の事項を知ることができるため、容易に確認される。
・高く順位付けられたコマンドがいくつ発行されたか
・現在コマンド番号を読み込むことで、高く順位付けられたコマンドがいくつ実行されたか。
第2の点は、各コマンドレジスタによって受信された弱く順位付けられたコマンドがいくつ実行されたかをカウントするレジスタを、各コマンドレジスタに関連付けることによって容易に確認される。
注:コマンドの到着速度が、コマンドの実行速度よりも高い場合には、弱く順序付けられたコマンドを記憶するためにFIFOを利用してもよい。
(早期読取りの回避)
DRAMキャッシュメモリが早期読み取りを実行することを避けることが望ましい。このタイプの読み取りは、DRAMキャッシュが、各アクセスがその前のアクセスから固定された「アドレス距離」(厳密なアドレス)で起こる一連のアクセスのような、通常のアクセスパターンに従うときに、自動的に引き起こされる可能性がある。DRAMキャッシュメモリは、このようなアクセスパターンを検出し、このアクセスパターンに基づいて予めデータの読み出しを決定することができるロジックを有することができる。
注:最も一般的な割当てポリシーである遅延書込み割当てポリシー(「ライトバック」)を有するCPUキャッシュメモリでは、平均してメモリへの書込みが最も効率的であるため、最初に読取りが実行される。
早期の読み取りを避けるために、同じインタフェースレジスタの利用可能なアドレスのセットは、このレジスタへの3つの連続するアクセス、N、N+1およびN+2に対して以下のように走査されることが望ましい。
アドレス(N+2)−アドレス(N+l)<>アドレス(N+l)−アドレス(N)
DRAMキャッシュメモリの早期読取りのこのロジックに関し、これは、一連のアクセスのアドレスが同じDRAMページに残っているか否かという事実を考慮に入れる可能性が高く、インターフェースレジスタにアクセスするために利用される一連のアドレスは、この事実を考慮に入れなければならない。
当業者は、DRAMキャッシュメモリの早期読出しストラテジの機能に応じて、アドレス使用の順序が多かれ少なかれ複雑になり得るが、早期ローディングストラテジが起動されず、いかなる通常のアクセスパターンも認識しないような順序を生成することが可能であるとき、容易に理解するであろう。
いずれにせよ、起こり得る早期の読み取りから保護するために、PIMプロセッサのインターフェースは、それらの読取りによって変更されるレジスタを含まないことが望ましい。
(PIMメモリ用の解決)
インタフェースレジスタへのアクセスの問題は、基本的に、これらのレジスタの各々が複数回マッピングされるという事実によって解決される。
これは、PIMメモリでは不可能である。例えば、2^(N+2)個のメモリワードを含むメモリとして記述されるが、実際には2^個のメモリワードしか含まないメモリを考える。そのようなメモリは、メモリワードより4倍多いアドレスを有する。
対称性によって、PIMメモリへのアクセスの問題を解決し、いくつかのメモリワードを他のメモリワードよりも多くマッピングすることは有益ではないと考えるのが妥当である。したがって、以下の分配を行うことが論理的であろう:
・メモリ回路の物理アドレス空間の1/4は、PIMプロセッサのインタフェースに充てる。そのレジスタの数は非常に少ないので、これらのレジスタの各々は何百万回もマッピングされ、これらのインタフェースレジスタに対するアクセス問題を容易に解決することができる。
物理アドレス空間の3/4は、PIMメモリ自体のマッピング専用であり、実際には各メモリワードを3回しかマッピングすることができない。
結論として、アドレス変更機構が各アクセスに対して有効であるのに十分な回数だけメモリワードをマッピングすることは不可能である。
(スライドウインドウを利用した解決法)
メモリが4倍大きいことを公表する代わりに、さらに大きいことを公表することが必要であるが、これは、DRAMメモリコントローラによってサポートされていないメモリ構成に相当するため、一般的に不可能である。
図3に示されるように、解決法は、スライディングウィンドウと呼ばれるアクセスウィンドウ305を使用することであり、PIMメモリ302内のアクセスウィンドウ305の位置304(および場合によってはサイズも)は、インターフェースレジスタを介して設定することができる。このスライディングウィンドウは、マルチプルウィンドウと呼ばれる広い範囲の物理アドレス306に何度もマッピングされる。
(物理アドレスの編成)
例えば、前述の実施例のように、公表されたサイズが実際のサイズより4倍大きいPIMメモリを考えると、PIM回路の物理アドレスは以下のように編成され得る。
・最初の2^N個の物理アドレスは、従来通り、実際のメモリをマッピングする。
・次の2^N個の物理アドレスは、インターフェースを何度もマッピングし、
・2^N(N+l)個の物理アドレスはマルチプルウィンドウを構成し、マルチプルウィンドウではスライディングウィンドウが何度もマッピングされる。
注:従来PIMメモリをマッピングしていた物理アドレス空間は、PIMプロセッサによってアクセスされないPIMメモリの範囲にアクセスするために、HCPUによって利用され得る。
注:スライディングウインドウが配置されるPIMメモリ範囲は、実施形態によって、PIMメモリの従来の物理アドレス空間を介してアクセス可能であってもよいし、またはアクセス可能でなくてもよい。
次に、スライディングウィンドウ内のアクセス(例えば、図3のアクセス308、310、および312)が、このスライディングウィンドウが通常配置されるPIMメモリ範囲内のアクセス(例えば、図3のアクセス308’、310’、312’)で処理される。
スライディングウィンドウは、複数の物理アドレス範囲を介してアクセス可能であり、これらの物理アドレス範囲はすべて、マルチプルウィンドウを構成する。
スライディングウィンドウは、それがDRAMからのページ上に完全に含まれるようなものであり、スライディングウィンドウの位置は、対{x、y}として表すことができる。
・xはページ番号であり、
・yはページ上のバイトオフセットである。
ここで、スライディングウィンドウのサイズおよびyの可能な値は、スライディングウィンドウ内で、PIMメモリの2つのページが重なり合わないようなものである。
インタフェースソフトウェアがPIMメモリ範囲にアクセスしたい場合は、
・スライディングウインドウが考慮されるメモリ範囲と一致するように1つまたは複数のインタフェースレジスタを構成する。
・所望のアクセスを実行するために、変更するアドレスを用いてアクセスする。
・スライディングウインドウを介したすべてのアクセスが実行されたならば、次の範囲に移動することができる。
・書き込みは有効である。
・読み取りは有効である。
注:最後の2つのサブ項目に関して言うと、HCPUが000プロセッサである場合、メモリバリア命令の利用が必要となる場合がある。
インタフェースソフトウェアが関係するすべての範囲を書き込んだとき、偽のアクセスを利用して、DRAMキャッシュメモリからそこに見つかる可能性のある待機中の最後の書込みを押し出す。
一般に、インタフェースソフトウェアは、現在スライディングウィンドウによってターゲットとされているPIMメモリにアクセスするために、共用の現在のアドレスの利用を含む、インタフェースレジスタにアクセスするための上述の解決策をすべて利用することができる。
(スライディングウィンドウの移動)
スライディングウィンドウの移動は、現在のアドレスまたは共用のアドレスを変更しない。インタフェースソフトウェアは、個々の現在のアドレスまたは共通のアドレスがアクセスに利用される場合に限り、これを変更する。スライディングウィンドウを動かしても変更されない。
スライディングウインドウの位置を利用したアクセスはすべて、ウインドウが別の位置に移動される前は、有効でなければならない(メモリ回路に到達していなければならない)。
(本発明を具体化するロジックを横切る時間に関する考察
何度もマッピングされるインターフェースレジスタをいくつか実装することは、特にそのようなレジスタの数が非常に少ないので、ロジックの速度に関していうと、あまり困難ではない。
一方、スライディングウィンドウ機構を実装するロジックの速度は、以下に説明するように、より問題となり得る。
前述のように、スライディングウィンドウの位置は、対{x、y}によって表すことができる。
xは、ページ番号で、
yは、ページ上のバイトオフセットである。
したがって、スライディングウィンドウは、PIMメモリのページxに関連付けられ、この関連付けは、インターフェースレジスタを介してプログラム可能である。
DRAMメモリコントローラが、マルチプルウィンドウの任意のページPをターゲットとするページアクティベーショントランザクションを発行する場合、ページPの番号をページ番号xで置き換えなければならない。
このページがマルチプルウィンドウに属することを決定するには、ページ番号の非常に少ないビットを調べれば十分であるため、この場合の復号化は単純である。
それにもかかわらず、この単純な復号化、および値xによる値Pの置換は、メモリ回路の起動ロジックによって構成されるロジック経路の交差時間をわずかに増加させる。
ロジックウィンドウ機構を実装するために、起動動作の待ち時間をわずかに延長するようにしてよく、この値は、メモリコントローラにおいてプログラム可能である。
(アクセスバリアの方法)
この方法では、DRAMキャッシュを重要性のないトランザクションで満たすために、所定のアクセスシーケンスが利用される。
保留中の書き込みを追跡して、更新を行い、
読み取ったデータを追跡して、無効化する。
DRAMキャッシュメモリの特性を知ることにより、以下のアクセスシーケンスを作成することが可能である。
DCW BARRIER (Dram Cache Write Barrier)、DRAMキャッシュの書き込みバリアである:DCW_BARRIERの開始前に行われたすべての書き込みが、DCW_BARRIERの終了時に有効(PIMプロセッサによって可視)になることを保証する。
DCR_BARRIER (Dram Cache Read Barrier)は、DCR_BARRIERの終了後に読み取られるすべてのデータが、DCR_BARRIERが開始された日付よりも新しいことを保証する、DRAMキャッシュの読み取りバリアである。
DCM_BARRIER (Dram Cache Memory Barrier)DRAMキャッシュに対する読出しおよび書込みバリアであり、以下のいずれかに等しい。
DCR_BARRIERの前のDCW_BARRIER、または、DCW_BARRIERの前のDCR_BARRIER。
DCW_BARRIERおよびDCR_BARRIERは両方とも、DRAMキャッシュメモリから前のデータを追跡することによって動作するので、DRAMキャッシュメモリが読取りおよび書込みの管理において非対称でない限り、通常、以下の結果となる。
DCW_BARRIER= DCR_BARRIER= DCM_BARRIER
いくつかのDRAMキャッシュ・アーキテクチャは、DCW_BARRIER、DCR_BARRIERおよびDCM_BARRIERのシーケンスの減少を可能にし、したがって、これらのバリアの効果が、指定されたパラメータを有するアドレス範囲にのみ適用される場合、それらの実行時間の減少を可能にすることができる。
例えば、アドレス範囲が先頭アドレスと末尾アドレスで指定されている場合、以下のBARRIERアクセスシーケンスの変形例が使用されてもよい。
DCW_BARRIER(start_addr、end_addr)は、アドレス範囲{start_addr、end_addr}内のDCW_BARRIER(start_addr、end_addr)の開始前に実行されるすべての書き込みが、DCW_BARRIER(start_addr、end_addr)の終了時に有効であることを保証する。
DCR_BARRIER(start_addr、end_addr)は、DCR_BARRIER(start_addr、end addr)の終了後にアドレス範囲{start_addr、end addr}で読み込まれたすべての値が、DCR_BARRIER(start_addr、end addr)が開始された日付よりも最近であることを保証する。
DCM_BARRIER(start addr、end_addr)は、以下の何れかに等しい。
DCR−BARRIER(start_addr、end_addr)の前のDCW_BARRIER(start_addr、end_addr)、または、DCR−BARRIER(start_addr、end_addr)の前のDCR_BARRIER(start_addr、end_addr)。
(不揮発性メモリへの応用)
PIMプロセッサは、不揮発性メモリを有しないにも関わらず、本発明の全ての態様の使用を可能にするインターフェースを有することができ、特に以下のものを許容する。
・DRAMキャッシュメモリから待機中の入力を転送し、
・PIMメモリへの書き込みが有効であることを確認する。
(DRAMキャッシュメモリの特性の決定)
本発明で使用されるアドレスシーケンスは、DRAMキャッシュの特性に依存する。
(資料の入手)
HCPU製造業者にそのHCPUを変更するように依頼するよりも、HCPU製造業者からDRAMキャッシュに関する文書を入手する方がはるかに容易である。
(DRAMキャッシュメモリの挙動の分析)
HCPU内に存在するDRAMキャッシュに関する情報が入手できない場合、HCPUプロセッサのDRAMメモリコントローラによって生成されるトラフィックを解析することが可能である。この種の分析は、DRAMおよびDIMMメモリカードの製造業者によって、特に、それらの製品を開発し、それらの適合性を検査するために、一般に行われるが、HCPUプロセッサを使用するコンピュータ製造業者によっても、それらのシステムの開発のために行われる。
Tektronix社製の分析システムのようないくつかの分析システムは、HCPUプロセッサのDRAMコントローラのトラフィックを分析することができる。
この目的のために設計されたプログラムをHCPU上で実行し、Tektronix社のトラフィック分析ツールなどを使用することによって、とりわけ、以下のDRAMキャッシュパラメータを決定することが可能である。
・DRAMキャッシュエントリの最大サイズ。
・DRAMキャッシュメモリの結合性(associativity)は、
・DRAMキャッシュメモリ内の入力の数。
・代替ポリシー
(インターフェースを介したDRAMキャッシュメモリの分析)
インターフェースは、受信されたN個の最後のトランザクション、または少なくともそれらの特性の十分な部分を記録する物理的手段を含むことができ、この記録は、インターフェース自体を介してアクセス可能である。
これらの記録手段の存在は、インターフェースソフトウェアの開発担当者が、非常に高価な外部分析手段の使用を避けることを可能にする。
多くの場合、外部分析手段なしに、DRAMキャッシュメモリの特性を自動的に決定することができ、したがって、DCR_BARRIER、DCW_BARRIER、およびDCM_BARRIERアクセスシーケンスの作成を自動化することができるインターフェースソフトウェアを設計することさえ可能である。
(DRAM回路ベンチの検討)
DRAMメモリは、ベンチ、ページ、および列に編成される。
簡単にするために、本発明の記載では、ベンチの存在を考慮に入れておらず、DRAMは、ベンチ、ページ、およびメモリワードに編成されている。基本的に、DRAMにおけるベンチの存在によって、数ページオープン(多くとも、ベンチ当たり1ページオープン)を有することを可能にする。当業者によって容易に理解されるように、本明細書に記載される発明は、ベンチの存在によって変更されない。

Claims (18)

  1. 命令で制御される1つ以上のプロセッシングコア(108)と、キャッシュメモリ(114)を含むメモリコントローラ(112)とを有する演算装置(102)と、
    データバス(106A)およびアドレスバス(106B)を介して前記メモリコントローラに接続されるメモリ回路(104)と、を備える計算システムであって、
    前記メモリ回路(104)は、アドレスバス(106B)上に提供される複数の第1アドレスによってアクセス可能な第1のmビットのメモリロケーションを有するように適合され、
    前記演算装置(102)は、前記第1のmビットのメモリロケーションにアクセスするメモリの動作ごとに、前記複数の第1アドレスのうちの1つのアドレスを選択するように構成される、計算システム。
  2. 前記第1のmビットのメモリロケーションは、複数のP個の第1アドレスによってアクセス可能であり、
    前記演算装置(102)は、前記第1のメモリロケーションにアクセスするN番目と(N+P)番目のアクセス動作中に、前記第1のメモリロケーションにアクセスするために、前記アドレスのうち1番目を使用するように構成されている、請求項1に記載の計算システム。
  3. 前記複数の第1アドレスの各アドレスは、第1のnビット値および第2のpビット値を含み、
    前記演算装置(102)は、第1の選択されたnビット値および書込データに従って生成された第2のpビット値を有する前記第1アドレスのうちの1つを使用して、前記第1のメモリロケーションの読み出し動作を実行することによって、mビットの前記第1のメモリロケーションに前記書込データを書き込む動作を実行するように構成される,請求項1または2に記載の計算システム。
  4. 前記メモリ回路(104)は、前記第1アドレスのうちの1つを使用して、前記第1のメモリロケーションに向けられた読み出し動作を受信することに応じて、前記アドレスの前記第2のpビット値を前記第1のメモリロケーションに書き込むように適合される、請求項3に記載の計算システム。
  5. pおよびmは正の整数であり、mがP以上である、請求項3または4に記載の計算システム。
  6. 前記メモリ回路(104)は、前記アドレスバス(106B)上に提供される複数の第2アドレスによってアクセス可能な第2のメモリロケーションを有するように適合される、請求項1から5のいずれか1項に記載の計算システム。
  7. 前記第1および第2のメモリロケーションは、前記メモリ回路(104)の第1のメモリロケーション範囲(304)の一部であり、前記第1のメモリロケーション範囲はスライディングアドレスウィンドウ(305)によって選択され、前記スライディングアドレスウィンドウ中では前記第1のメモリロケーション範囲のメモリロケーションが以下の(1)および(2)によってアドレス可能であり、
    前記メモリ回路(104)は、第1および第2のアドレス範囲(R0,R1)内のアドレスを、前記スライディングアドレスウィンドウ(305)内の対応するアドレスに変換するように適合されたアドレス変換回路を含む、請求項6に記載の計算システム:
    (1)前記第1の複数のアドレスのうちの1つおよび前記第2の複数のアドレスのうちの1つを含む第1のアドレスの範囲(R0)における対応するアドレス;
    (2)前記第1の複数のアドレスのうちの別の1つのアドレスと前記第2の複数のアドレスのうちの別の1つのアドレスとを含む第2のアドレスの範囲(R1)における対応するアドレス。
  8. 前記アドレス変更回路(122)は、前記スライディングアドレスウィンドウ(305)の位置を定義するためにプログラム可能な少なくとも1つのレジスタを含む、請求項7に記載の計算システム。
  9. 前記アドレス変更回路(122)の前記少なくとも1つのレジスタは、前記スライディングアドレスウィンドウ(305)の位置およびサイズを定義するようにプログラム可能である、特徴とする請求項8に記載の計算システム。
  10. 前記メモリコントローラ(112)は、キャッシュクリア動作を実行するように適合され、前記キャッシュクリア動作は、前記メモリコントローラによって実行されるメモリアクセス命令の1つまたは複数のシーケンスを含み、以下の(1)、(2)、または(3)の結果ことをとなる、請求項1から9のいずれか1項に記載の計算システム:
    (1)前記メモリコントローラ(112)の前記キャッシュメモリ(114)に格納されたキャッシュメモリ書き込みトランザクションの全部又は一部が、前記メモリ回路(104)に書き込まれる;
    (2)前記メモリコントローラ(112)の前記キャッシュメモリ(114)に格納され、キャッシュクリア動作前に前記メモリ回路から読み出されたデータを含む読み出しデータの全部または一部を、前記キャッシュメモリからクリアする;または、
    (3)前記メモリコントローラ(112)の前記キャッシュメモリ(114)に格納されたキャッシュメモリ書き込みトランザクションの全部または一部が前記メモリ回路(104)に書き込まれ、かつ、前記メモリコントローラの前記キャッシュメモリ(114)に格納された前記読み出しデータの全部または一部がキャッシュメモリからクリアされる。
  11. 前記メモリ回路(104)は、補助プロセッサ(118)をさらに含み、前記メモリアクセス命令シーケンスは、前記補助プロセッサを制御するために、前記メモリ回路(104)の1つまたは複数のコマンドレジスタにアクセスするためのレジスタアクセス命令のみを含む、請求項10に記載の計算システム。
  12. 前記メモリ回路(104)は、前記演算装置(102)によってアクセス可能であり、前記メモリ回路(104)において実行されるメモリアクセストランザクションを記録するように適合されたモニタリング回路(126)を含み、前記演算装置(102)は、前記モニタリング回路(126)によって記録された前記トランザクションに基づいて、前記1つまたは複数のメモリアクセス命令シーケンスを生成するように構成される、請求項10または11に記載の計算システム。
  13. 前記メモリ回路(104)は、さらに補助プロセッサ(118)を含み、前記第1および第2のメモリロケーションは、前記補助プロセッサの制御レジスタである、請求項6に記載の計算システム。
  14. 前記演算装置(102)は、第1および第2のタイプのコマンドを生成するように構成され、前記メモリ回路(104)は、前記演算装置(102)から受信されたコマンドの順序を変更するように適合され、それにより、前記第1のタイプの第1のコマンドと第2のコマンドの間で前記演算装置(102)によって生成された前記第2のタイプのコマンドの第1のグループについて、前記第2のタイプのコマンドのグループに関連して、前記第1のタイプの前記第1および第2のコマンドの順序が尊重される、請求項13に記載の計算システム。
  15. 前記メモリ回路(104)は、少なくとも前記第1のタイプの各順序に関連付けられた順序値に基づいて、前記コマンドの順序を変更するように適合され、前記各コマンドの順序値は以下の(1)から(3)の何れかに含まれる、請求項14に記載の計算システム:
    (1)前記コマンドの受信体の前記アドレス;
    (2)前記コマンド自体;
    (3)部分的に前記コマンドの受信体の前記アドレス、および部分的に前記コマンド自体。
  16. 前記演算装置(102)は、キャッシュメモリ管理命令によって設定可能なCPUキャッシュメモリをさらに含み、前記コントローラメモリの前記キャッシュメモリ(114)は、キャッシュメモリ管理命令によって設定可能ではない、請求項1から15のいずれか1項に記載の計算システム。
  17. 前記メモリ回路(104)は、不揮発性メモリマトリックスを含む、請求項1から16のいずれか1項に記載の計算システム。
  18. データバス(106A)およびアドレスバス(106B)を介して演算装置(102)のメモリコントローラ(112)に接続されたメモリ回路(104)にアクセスする方法であって、
    前記演算装置(102)は、1つまたは複数のコアプロセッサ(108)と、キャッシュメモリ(114)を含むメモリコントローラを備え、
    前記プロセスは、前記演算装置によって、前記メモリ回路(104)の第1のmビットのメモリロケーションにアクセスするメモリの動作ごとに、複数の第1アドレスから1つのアドレスを選ぶことを含み、
    前記第1のmビットのメモリロケーションは、前記アドレスバス(106B)上に提供される前記複数の第1のアドレスのそれぞれによって、アクセス可能である方法。
JP2019513044A 2016-09-08 2017-09-06 高度dramメモリコントローラの内部キャッシュをバイパスするための方法および装置 Pending JP2019531546A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR1658373A FR3055715B1 (fr) 2016-09-08 2016-09-08 Methodes et dispositifs pour contourner le cache interne d'un controleur memoire dram evolue
FR1658373 2016-09-08
PCT/FR2017/052368 WO2018046850A1 (fr) 2016-09-08 2017-09-06 Methodes et dispositifs pour contourner le cache interne d'un controleur memoire dram evolue

Publications (1)

Publication Number Publication Date
JP2019531546A true JP2019531546A (ja) 2019-10-31

Family

ID=57750074

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019513044A Pending JP2019531546A (ja) 2016-09-08 2017-09-06 高度dramメモリコントローラの内部キャッシュをバイパスするための方法および装置

Country Status (6)

Country Link
US (1) US11494308B2 (ja)
JP (1) JP2019531546A (ja)
KR (1) KR102398616B1 (ja)
CN (1) CN109952567B (ja)
FR (1) FR3055715B1 (ja)
WO (1) WO2018046850A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7218556B2 (ja) * 2018-12-06 2023-02-07 富士通株式会社 演算処理装置および演算処理装置の制御方法
US11048636B2 (en) * 2019-07-31 2021-06-29 Micron Technology, Inc. Cache with set associativity having data defined cache sets
US11481255B2 (en) * 2019-09-10 2022-10-25 International Business Machines Corporation Management of memory pages for a set of non-consecutive work elements in work queue designated by a sliding window for execution on a coherent accelerator
US11403111B2 (en) 2020-07-17 2022-08-02 Micron Technology, Inc. Reconfigurable processing-in-memory logic using look-up tables
US11355170B1 (en) 2020-12-16 2022-06-07 Micron Technology, Inc. Reconfigurable processing-in-memory logic
US12073251B2 (en) 2020-12-29 2024-08-27 Advanced Micro Devices, Inc. Offloading computations from a processor to remote execution logic
US11868657B2 (en) * 2021-02-08 2024-01-09 Samsung Electronics Co., Ltd. Memory controller, method of operating the memory controller, and electronic device including the memory controller
US11354134B1 (en) * 2021-03-25 2022-06-07 Micron Technology, Inc. Processing-in-memory implementations of parsing strings against context-free grammars
US11921634B2 (en) * 2021-12-28 2024-03-05 Advanced Micro Devices, Inc. Leveraging processing-in-memory (PIM) resources to expedite non-PIM instructions executed on a host

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040155885A1 (en) * 2000-06-28 2004-08-12 Aaftab Munshi Cache invalidation method and apparatus for a graphics processing system
JP2006127251A (ja) * 2004-10-29 2006-05-18 Canon Inc データ処理装置及びデータ処理装置におけるメモリ割り当て方法
JP2007249314A (ja) * 2006-03-14 2007-09-27 Yaskawa Electric Corp 高速データ処理装置
WO2016132052A1 (fr) * 2015-02-18 2016-08-25 Upmem Circuit dram muni d'un processeur integre

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3451099B2 (ja) * 1991-12-06 2003-09-29 株式会社日立製作所 外部記憶サブシステム
US5361391A (en) * 1992-06-22 1994-11-01 Sun Microsystems, Inc. Intelligent cache memory and prefetch method based on CPU data fetching characteristics
JP3964049B2 (ja) * 1997-06-06 2007-08-22 テキサス インスツルメンツ インコーポレイテツド マイクロプロセッサ
US6125422A (en) * 1999-03-17 2000-09-26 Rambus Inc Dependent bank memory controller method and apparatus
US6983354B2 (en) * 2002-05-24 2006-01-03 Micron Technology, Inc. Memory device sequencer and method supporting multiple memory device clock speeds
US20060090034A1 (en) * 2004-10-22 2006-04-27 Fujitsu Limited System and method for providing a way memoization in a processing environment
US8253751B2 (en) * 2005-06-30 2012-08-28 Intel Corporation Memory controller interface for micro-tiled memory access
US7975109B2 (en) * 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US8386723B2 (en) * 2009-02-11 2013-02-26 Sandisk Il Ltd. System and method of host request mapping
JP5526697B2 (ja) * 2009-10-14 2014-06-18 ソニー株式会社 ストレージ装置およびメモリシステム
US10020036B2 (en) * 2012-12-12 2018-07-10 Nvidia Corporation Address bit remapping scheme to reduce access granularity of DRAM accesses
US9075557B2 (en) * 2013-05-15 2015-07-07 SanDisk Technologies, Inc. Virtual channel for data transfers between devices
KR101842621B1 (ko) * 2013-09-26 2018-03-27 인텔 코포레이션 지속 메모리에 대한 블록 저장 애퍼처들
US9208103B2 (en) * 2013-09-26 2015-12-08 Cavium, Inc. Translation bypass in multi-stage address translation
US9690928B2 (en) * 2014-10-25 2017-06-27 Mcafee, Inc. Computing platform security methods and apparatus
EP3018587B1 (en) * 2014-11-05 2018-08-29 Renesas Electronics Europe GmbH Memory access unit

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040155885A1 (en) * 2000-06-28 2004-08-12 Aaftab Munshi Cache invalidation method and apparatus for a graphics processing system
JP2006127251A (ja) * 2004-10-29 2006-05-18 Canon Inc データ処理装置及びデータ処理装置におけるメモリ割り当て方法
JP2007249314A (ja) * 2006-03-14 2007-09-27 Yaskawa Electric Corp 高速データ処理装置
WO2016132052A1 (fr) * 2015-02-18 2016-08-25 Upmem Circuit dram muni d'un processeur integre

Also Published As

Publication number Publication date
US20210349826A1 (en) 2021-11-11
US11494308B2 (en) 2022-11-08
KR102398616B1 (ko) 2022-05-16
CN109952567B (zh) 2023-08-22
KR20190067171A (ko) 2019-06-14
FR3055715A1 (fr) 2018-03-09
WO2018046850A1 (fr) 2018-03-15
CN109952567A (zh) 2019-06-28
FR3055715B1 (fr) 2018-10-05

Similar Documents

Publication Publication Date Title
CN109952567B (zh) 用于旁通高级dram存储器控制器的内部高速缓存的方法和装置
US10908821B2 (en) Use of outstanding command queues for separate read-only cache and write-read cache in a memory sub-system
CN107636625B (zh) 用于共享系统高速缓存的虚拟化控制的方法和装置
US8205061B2 (en) Seamless application access to hybrid main memory
US10133677B2 (en) Opportunistic migration of memory pages in a unified virtual memory system
US10061526B2 (en) Frame buffer access tracking via a sliding window in a unified virtual memory system
US9811456B2 (en) Reliable wear-leveling for non-volatile memory and method therefor
EP3279788A1 (en) Access method, device and system for expanding memory
US20100088459A1 (en) Improved Hybrid Drive
US9830262B2 (en) Access tracking mechanism for hybrid memories in a unified virtual system
US11914520B2 (en) Separate read-only cache and write-read cache in a memory sub-system
US12007917B2 (en) Priority scheduling in queues to access cache data in a memory sub-system
CN111201518B (zh) 用于管理能力元数据的设备和方法
CN110597742A (zh) 用于具有持久系统存储器的计算机系统的改进存储模型
US20190138448A1 (en) Read-with-invalidate modified data in a cache line in a cache memory
US10635614B2 (en) Cooperative overlay
JP2021506028A (ja) 共通のメモリページからメモリへのキャッシュラインのリンス
US12086447B2 (en) Systems and methods for reducing instruction code memory footprint for multiple processes executed at a coprocessor
CN111742304B (zh) 当调试要在处理电路上执行的程序时访问元数据的方法
US11734011B1 (en) Context partitioning of branch prediction structures

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200825

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210915

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211026

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220118

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220628