JP2020516988A - メモリリフレッシュ技術及びコンピュータシステム - Google Patents

メモリリフレッシュ技術及びコンピュータシステム Download PDF

Info

Publication number
JP2020516988A
JP2020516988A JP2019553059A JP2019553059A JP2020516988A JP 2020516988 A JP2020516988 A JP 2020516988A JP 2019553059 A JP2019553059 A JP 2019553059A JP 2019553059 A JP2019553059 A JP 2019553059A JP 2020516988 A JP2020516988 A JP 2020516988A
Authority
JP
Japan
Prior art keywords
rank
refresh
threshold
memory controller
access
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.)
Granted
Application number
JP2019553059A
Other languages
English (en)
Other versions
JP6780897B2 (ja
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 JP2020516988A publication Critical patent/JP2020516988A/ja
Application granted granted Critical
Publication of JP6780897B2 publication Critical patent/JP6780897B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40618Refresh operations over multiple banks or interleaving
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40603Arbitration, priority and concurrent access to memory cells for read/write or refresh operations
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1636Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using refresh
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40611External triggering or timing of internal or partially internal refresh operations, e.g. auto-refresh or CAS-before-RAS triggered refresh
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/401Indexing scheme relating to cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C2211/406Refreshing of dynamic cells
    • G11C2211/4061Calibration or ate or cycle tuning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Dram (AREA)
  • Memory System (AREA)

Abstract

本願は、メモリリフレッシュ技術及びコンピュータシステムを提供する。メモリリフレッシュ技術は、メモリコントローラとダイナミックランダムアクセスメモリDRAMとを含むコンピュータシステムに適用される。このメモリリフレッシュ技術によれば、メモリコントローラはアクセス要求を受信する。メモリコントローラは、第1の期間内に受信したアクセス要求のターゲットrankの数が、指定された第1の閾値より小さく、且つアクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第2の閾値より大きい場合、複数のrankのうち第1のrankをT/Nの間隔でリフレッシュする。Tは標準的な平均リフレッシュ間隔を示すのに用いられ、Nは1より大きい整数である。本願において提供されるメモリリフレッシュ技術は、メモリリフレッシュプロセスにおけるコンピュータシステムのパフォーマンスを向上させることができる。

Description

本願は、コンピュータ技術の分野に関し、具体的には、メモリリフレッシュ技術及びコンピュータシステムに関する。
システムの従来型メインメモリは、通常、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)を含む。DRAMは、簡単な構造と高い読み出し速度を有する。DRAMの最も基本的な記憶単位はDRAM−cellであり、各DRAM−cellは1つのトランジスタと1つキャパシタを含む。DRAM−cellは、キャパシタ内の電荷量を用いて0又は1を示す。このように、1つのDRAM−cellは1つのビット(bit)を格納することができる。キャパシタ内の電荷は漏れ出ることがあり、キャパシタ内の電荷が不十分になると、格納されたデータの誤りにつながることがある。したがって、実際の応用では、キャパシタに格納された情報を保持するために、キャパシタを周期的に充電する必要がある。DRAMのキャパシタを充電するというこの動作は、リフレッシュと呼ばれる。
DRAMのDRAM−cellは、行列状に配置される。この行列はDRAM−bankと呼ばれる。DRAM−bankの任意のビットが、対応する行デコーダ及び列デコーダを用いて位置特定され得る。複数のDRAM−bankがDRAM−chipを形成してよく、複数のDRAM−chipがDRAM−rankを形成してよく、複数のDRAM−rankがデュアルインラインメモリモジュール(Dual−Inline−Memory−Modules、DIMM)に統合されてよい。DRAM−cellは、センスアンプ(Sense Amp)によって行ごとにリフレッシュされる。リフレッシュプロセスでは、1つ又は複数のbankの行が、リフレッシュコマンドに従ってリフレッシュされてよい。実際の応用では、リフレッシュは通常、rankを1つの単位として用いて行われる。具体的には、rankにある全てのbankの行を、保持時間(retention time)内に少なくとも一度リフレッシュする必要がある。保持時間とは、DRAM−cell内のデータをリフレッシュ動作なしで保持できる時間のことである。
当業者であれば、ダブルデータレート(double data rate、DDR)プロトコルには、1Xモード、2Xモード、及び4Xモードという3つのリフレッシュモードが指定されていることを認識しているであろう。異なるリフレッシュモードは異なるリフレッシュ頻度を有しており、異なるリフレッシュ頻度は異なるバス利用率につながる。したがって、リフレッシュプロセスでは、リフレッシュモードの選択もシステムパフォーマンスに影響を与える。過去の実行情報に基づいてリフレッシュモードを選択する方法が、先行技術に提供されている。この方法では、M個の時間ウィンドウに一度、リフレッシュテストが行われる。テストプロセスでは、N個の連続した時間ウィンドウ内で、1Xモード及び4Xモードで別々にリフレッシュテストが行われる。2つのモードでリフレッシュする際のバス利用率が比較され、バス利用率が高い方のリフレッシュモードが次のM個の時間ウィンドウで用いるリフレッシュモードとして選択される。この方法でリフレッシュモードが動的に調整され得るが、テストの繰り返しによってシステムパフォーマンスが浪費され、さらに、N個の時間ウィンドウ内でのテスト結果が、次のM個のウィンドウのモード選択と内部的にはあまり強く関連していない。したがって、そのような方式では、リフレッシュオーバヘッドを効果的に減らすことも、システムパフォーマンスを向上させることもできない。
本願は、メモリリフレッシュ技術およびコンピュータシステムを提供して、システムのリフレッシュロスを減らし、リフレッシュプロセスにおけるコンピュータシステムのパフォーマンスを向上させる。
第1の態様によると、本願はメモリリフレッシュ方法を提供する。本メモリリフレッシュ方法は、メモリコントローラ及びダイナミックランダムアクセスメモリDRAMを含むコンピュータシステムに適用され、DRAMは複数のrankを含む。本方法では、メモリコントローラはアクセス要求を受信する。第1の期間内に受信したアクセス要求のターゲットrankの数が、指定された第1の閾値より小さく、且つこれらのアクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第2の閾値より大きい場合、メモリコントローラは、複数のrankのうち第1のrankをT/Nの間隔でリフレッシュする。Tは標準的な平均リフレッシュ間隔を示すのに用いられ、Nは1より大きい整数である。
本願において提供されるメモリリフレッシュ方法では、メモリリフレッシュプロセスにおけるシステムパフォーマンスを向上させるために、アクセス要求のターゲットrankの分布と、これらのアクセス要求のうち読み出し要求又は書き込み要求の割合の状況とに基づいて、リフレッシュモードを動的に調整することができるので、tFAW制限によって生じるシステムパフォーマンスオーバヘッドを、リフレッシュ頻度を調整することで補償することができ、システムバス利用率を向上させることができ、さらに、リフレッシュプロセスにおけるシステムパフォーマンスを向上させることができる。さらに、先行技術と比較すると、本発明の本実施形態において提供されるメモリリフレッシュ方法では、現在のリフレッシュプロセスにおけるアクセス要求の特徴に基づいて、リフレッシュモードを決定することができるので、決定されたリフレッシュモードはリフレッシュプロセスと強く関連しており、そのため、リフレッシュオーバヘッドを効果的に減らして、システムパフォーマンスを向上させることができる。
第1の態様に関連して、第1の実行可能な実装例では、本方法はさらに、第2の期間内に受信したアクセス要求のターゲットrankの数が、指定された第1の閾値以上であるか、又はこれらのアクセス要求のうち読み出し要求若しくは書き込み要求の割合が、指定された第2の閾値以下である場合、メモリコントローラが第1のrankをTの間隔でリフレッシュする段階を含む。
第1の態様又は第1の態様の第1の実行可能な実装例に関連して、第2の実行可能な実装例では、本方法はさらに、第1のリフレッシュ要求を実行するプロセスにおいてメモリコントローラが、第1のrankにアクセスするための第1のアクセス要求を受信する段階と、メモリコントローラが、構成されたバッファキューに第1のアクセス要求をバッファリングする段階とを含む。メモリコントローラは、少なくともバッファキュー及びスケジューリングキューを含み、バッファキューは、リフレッシュ動作が行われているrankに対するアクセス要求をバッファリングするように構成され、スケジューリングキューは、リフレッシュ動作が行われていないrankに送信されるアクセス要求をバッファリングするように構成される。このように、第1のrankをリフレッシュするプロセスにおいて受信される、第1のrankに対するアクセス要求は、スケジューリングキューを混雑させることと、メモリコントローラによる別のrankに対するアクセス要求の処理に影響を与えることとを防止することができる。コンピュータシステム全体の処理効率がさらに向上する。
第1の態様の第2の実行可能な実装例に関連して、第3の実行可能な実装例では、本方法はさらに、DRAMの第2のrankにアクセスするための第2のアクセス要求をメモリコントローラが受信する段階と、第2のrankに対してリフレッシュ動作が何も行われていない場合、メモリコントローラが第2のアクセス要求をスケジューリングキューにバッファリングする段階とを含む。
第1の態様又は第1の態様の第1から第3の実行可能な実装例のうちのいずれか1つに関連して、第4の実行可能な実装例では、複数のrankのうち第1のrankをT/Nの間隔でメモリコントローラがリフレッシュする段階は、第1の期間内に受信したアクセス要求の数が第3の閾値より大きく、且つ受信したアクセス要求内にある第1のrankにアクセスするためのアクセス要求の数が第4の閾値より小さい場合、メモリコントローラが第1のrankをT/Nの間隔でリフレッシュする段階を含む。第1の期間内において、第1のrankにアクセスするためのアクセス要求の数は0より大きい。
本願において提供されるメモリリフレッシュ方法では、メモリリフレッシュプロセスによってコンピュータシステムのパフォーマンスに生じる影響をさらに軽減するために、受信したアクセス要求の状況及びアクセス対象ターゲットrankの状況の両方が、ターゲットrankをリフレッシュする必要があるかどうかを判定するために総合的に考慮される。このように、第1のrankがアイドル状態にならない場合でも、第1のrankは能動的にリフレッシュされ得る。したがって、アクセストラフィックが比較的激しい場合、第1のrankがアイドル状態にならなくても、第1のrankは時間に合わせてリフレッシュされ得る。リフレッシュ延期によって発生する受動リフレッシュによる、コンピュータシステムのパフォーマンスに生じる影響が軽減され、メモリリフレッシュの柔軟性が向上する。したがって、システムパフォーマンスを向上させることができ、リフレッシュオーバヘッドを減らすことができる。
第1の態様又は第1の態様の第1から第3の実行可能な実装例のうちのいずれか1つに関連して、第5の実行可能な実装例では、複数のrankのうち第1のrankをT/Nの間隔でメモリコントローラがリフレッシュする段階は、第1の期間内に受信したアクセス要求内にある第1のrankにアクセスするためのアクセス要求の数が第4の閾値以上であり、且つ第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、複数のrankのうち第1のrankをT/Nの間隔でメモリコントローラがリフレッシュする段階を含む。第5の閾値は、指定された警告値より小さく、警告値は、第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる。
第1の態様又は第1の態様の第1から第3の実行可能な実装例のうちのいずれか1つに関連して、第6の実行可能な実装例では、複数のrankのうち第1のrankをT/Nの間隔でリフレッシュする段階は、第1の期間内に受信したアクセス要求の数が、指定された第3の閾値以下であり、且つ第1のrankに対するアクセス要求の数が0より大きく、且つ第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、複数のrankのうち第1のrankをT/Nの間隔でメモリコントローラがリフレッシュする段階を含む。第5の閾値は、指定された警告値より小さく、警告値は、第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる。
第2の態様によれば、本願はコンピュータシステムを提供する。コンピュータシステムは、メモリコントローラと、メモリコントローラに接続されたダイナミックランダムアクセスメモリDRAMとを含み、DRAMは複数のrankを含む。メモリコントローラは、第1の態様又は第1の態様の実行可能な実装例のうちのいずれか1つにおいて説明された方法を実施するように構成される。
第3の態様によれば、本願はメモリコントローラを提供する。メモリコントローラは、通信インタフェースとリフレッシュ回路とを含む。通信インタフェースは、コンピュータシステム内のプロセッサから送信されるアクセス要求を受信するように構成される。第1の期間内に受信したアクセス要求のターゲットrankの数が、指定された第1の閾値より小さく、且つこれらのアクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第2の閾値より大きい場合、リフレッシュ回路は、複数のrankのうち第1のrankをT/Nの間隔でリフレッシュするように構成される。Tは標準的な平均リフレッシュ間隔を示すのに用いられ、Nは1より大きい整数である。
第3の態様に関連して、第1の実行可能な実装例では、リフレッシュ回路はさらに、第2の期間内に受信したアクセス要求のターゲットrankの数が、指定された第1の閾値以上であるか、又はこれらのアクセス要求のうち読み出し要求若しくは書き込み要求の割合が、指定された第2の閾値以下である場合、第1のrankをTの間隔でリフレッシュするように構成される。
第3の態様及び第3の態様の第1の実行可能な実装例に関連して、第2の実行可能な実装例では、通信インタフェースはさらに、第1のリフレッシュ要求を実行するプロセスにおいて、第1のrankにアクセスするための第1のアクセス要求を受信するように構成される。メモリコントローラはさらに、バッファを含む。バッファは、構成されたバッファキューに第1のアクセス要求をバッファリングするように構成される。バッファは、少なくともバッファキューとスケジューリングキューとを含む。バッファキューは、リフレッシュ動作が行われているrankに対するアクセス要求をバッファリングするように構成され、スケジューリングキューは、リフレッシュ動作が行われていないrankに送信されるアクセス要求をバッファリングするように構成される。
第3の態様の第2の実行可能な実装例に関連して、第3の実行可能な実装例では、通信インタフェースはさらに、DRAMの第2のrankにアクセスするための第2のアクセス要求を受信するように構成される。バッファはさらに、第2のrankに対してリフレッシュ動作が何も行われていない場合、第2のアクセス要求をスケジューリングキューにバッファリングするように構成される。
第3の態様又は第3の態様の第1から第3の実装例のうちのいずれか1つに関連して、第4の実行可能な実装例では、リフレッシュ回路は具体的に、第1の期間内に受信したアクセス要求の数が第3の閾値より大きく、且つ受信したアクセス要求内にある第1のrankにアクセスするためのアクセス要求の数が第4の閾値より小さい場合、第1のrankをT/Nの間隔でリフレッシュするように構成される。第1の期間において、第1のrankにアクセスするためのアクセス要求の数は0より大きい。
第3の態様又は第3の態様の第1から第3の実行可能な実装例のうちのいずれか1つに関連して、第5の実行可能な実装例では、リフレッシュ回路は具体的に、第1の期間内に受信したアクセス要求内にある第1のrankにアクセスするためのアクセス要求の数が第4の閾値以上であり、且つ第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、複数のrankのうち第1のrankをT/Nの間隔でリフレッシュするように構成される。第5の閾値は、指定された警告値より小さく、警告値は、第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる。
第3の態様又は第3の態様の第1から第3の実行可能な実装例のうちのいずれか1つに関連して、第6の実行可能な実装例では、リフレッシュ回路は具体的に、第1の期間内に受信したアクセス要求の数が、指定された第3の閾値以下であり、且つ第1のrankに対するアクセス要求の数が0より大きく、且つ第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、複数のrankのうち第1のrankをT/Nの間隔でリフレッシュするように構成される。第5の閾値は、指定された警告値より小さく、警告値は、第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる。
第4の態様によれば、本願はメモリリフレッシュ装置を提供する。メモリリフレッシュ装置は、コンピュータシステム内のダイナミックランダムアクセスメモリDRAMをリフレッシュするように構成され、DRAMは複数のrankを含む。メモリリフレッシュ装置は、第1の態様又は第1の態様の実行可能な実装例のうちのいずれか1つによる方法を実施するように構成された機能モジュールを含む。
第5の態様によれば、本願はさらに、プログラムコードを含むコンピュータプログラム製品を提供する。プログラムコードに含まれる命令がコンピュータにより実行されて、第1の態様又は第1の態様の実行可能な実装例のうちのいずれか1つによる方法が実施される。
第6の態様によれば、本願はさらにコンピュータ可読記憶媒体を提供する。コンピュータ可読記憶媒体は、プログラムコードを格納するように構成され、プログラムコードに含まれる命令がコンピュータにより実行されて、第1の態様又は第1の態様の実行可能な実装例のうちのいずれか1つによる方法が実施される。
本発明の実施形態又は先行技術における技術的解決手段をより明確に説明するために、以下では、これらの実施形態を説明するのに必要な添付図面を簡潔に説明する。以下の説明にある添付図面は、本発明のほんの一部の実施形態を示しているだけであることは明らかである。
本発明の一実施形態によるコンピュータシステムの概略アーキテクチャ図である。
本発明の一実施形態によるメモリコントローラの概略構造図である。
本発明の一実施形態によるメモリリフレッシュ方法の概略フローチャートである。
本発明の一実施形態による別のメモリリフレッシュ方法の概略フローチャートである。
本発明の一実施形態によるメモリリフレッシュ装置の概略構造図である。
本発明における技術的解決手段をより十分に当業者に理解してもらうために、以下では、本発明の実施形態における添付図面を参照して、本発明の実施形態における技術的解決手段を明確に説明する。説明する実施形態は、本発明の実施形態のほんの一部であって、全てではないことは明らかである。
図1は、本発明の一実施形態によるコンピュータシステムの概略アーキテクチャ図である。図1に示すように、コンピュータシステム100は、少なくともプロセッサ102と、メモリコントローラ106と、メモリ108とを含んでよい。通常、メモリコントローラ106はプロセッサ102に統合されてよい。本発明の本実施形態において提供されるコンピュータシステムでは、図1に示す構成要素に加えて、コンピュータシステム100はさらに、通信インタフェース、及び外部記憶装置としての機能を果たす磁気ディスクなどの他の構成要素を含んでよいことに留意されたい。本明細書では、いかなる制限も課すことはない。
プロセッサ(Processor)102は、コンピュータシステム100の演算装置及び制御装置(Control Unit)である。プロセッサ102は、複数のプロセッサコア(core)104を含んでよい。プロセッサ102は、超大規模集積回路であってよい。オペレーティングシステム及び別のソフトウェアプログラムがプロセッサ102にインストールされており、プロセッサ102は、メモリ108、バッファ、及び磁気ディスクにアクセスすることができる。本発明の本実施形態では、プロセッサ102のCore104は、例えば、中央演算処理装置(Central Processing unit、CPU)であってもよく、別の特定用途向け集積回路(Application−Specific Integrated Circuit、ASIC)であってもよいことが理解できるであろう。
メモリコントローラ(Memory Controller)106は、コンピュータシステム100の内部にある、メモリ108を制御するバス回路コントローラであり、メモリ108からCore104へのデータ伝送を管理し計画するように構成される。メモリ108は、メモリコントローラ106を介してCore104とデータをやり取りしてよい。メモリコントローラ106は、別個のチップであってよく、システムバスを介してCore104に接続されてよい。当業者であれば、メモリコントローラ106は(図1に示すように)プロセッサ102に統合されてもよく、又はノースブリッジに組み込まれてもよいことを認識しているであろう。メモリコントローラ20の具体的な位置は、本発明の本実施形態では限定されない。実際の応用では、メモリコントローラ106は、データをメモリ108に書き込むか、又はデータをメモリ108から読み出すために必要なロジックを制御してよい。
メモリ108は、コンピュータシステム100のメインメモリである。メモリ108は、ダブルデータレート(double data rate、DDR)バスを介してメモリ108に接続される。メモリ108は通常、オペレーティングシステム上で現在動いている様々なソフトウェアを格納し、データ、及び外部記憶装置とやり取りされる情報を入出力するように構成される。プロセッサ102のアクセス速度を上げるために、メモリ108は、アクセス速度が高いという利点を有する必要がある。従来のコンピュータシステムアーキテクチャでは、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)がメモリ108として通常用いられている。プロセッサ102は、メモリコントローラ106を介して高速でメモリ108にアクセスし、メモリ108 0の任意の記憶単位に対して読み出し動作及び書き込み動作を行うことができる。
本発明の本実施形態では、メモリ108がDRAMであることが、説明の一例として用いられる。したがって、メモリ108はDRAM108とも呼ばれることがある。データがDRAM108の記憶単位(これはDRAM−cellとも呼ばれることがある)に格納される。本発明の本実施形態では、記憶単位はデータを格納する最小の記憶単位(cell)である。一般に、1つの記憶単位が1ビット(bit)のデータを格納し得る。もちろん、いくつかの記憶単位が代替的に、複数の値を格納してもよい。上述したように、DRAMは、キャパシタ内の電荷量を用いてデータ0又は1を示す。キャパシタ内の電荷は漏れ出すことがあり、キャパシタ内の電荷が不十分な場合、格納されたデータの誤りにつながることがある。したがって、メモリコントローラ106は、ある期間の間隔でDRAM108内のデータをリフレッシュして、DRAM108内のデータ損失を回避する。さらに、DRAM108は揮発性であり、コンピュータシステム100の電源をオフにすると、DRAM108内の情報は保存されない。
実際の応用では、DRAM108のDRAM−cellが行列状に配置される。この行列は、DRAM−bankと呼ばれる。DRAM−bankの任意のビットが、対応する行デコーダ及び列デコーダを用いてメモリコントローラ106により位置特定され得る。複数のDRAM−bankによってDRAM−chip(これは、メモリチップとも呼ばれることがある)が形成されてよく、複数のDRAM−chipによってDRAM−rankが形成されてよい。複数のDRAM−rankが統合されて、デュアルインラインメモリモジュール(Dual−Inline−Memory−Modules、DIMM)になり得る。例えば、図1に示すように、DRAM108は、複数のチャネル(channel)110を含んでよい。各チャネル110は少なくとも1つのrankを含んでよく、各rankは少なくとも1つのbankを含んでよい。各bankは、データを格納する複数の記憶単位を含む。当業者であれば、rankとは、同じチップ選択(chip select)信号に接続されたメモリチップ(chip)であることを認識しているであろう。メモリコントローラ106は、同じrankのchipに対して書き込み動作を行うことができ、同じrankのchipが同じ制御信号を共有する。メモリコントローラ106は、DRAM108の各チャネルの記憶単位にあるデータにメモリバスを介してアクセスしてよい。
当業者であれば、DRAM−chipのリフレッシュサイクルがDRAM−chipの各記憶単位の保持時間(retention time)と関連していることを認識しているであろう。現在、一般的に見られるDRAM−chipの標準的なリフレッシュサイクルは全て一定になっている。一般に、標準的なリフレッシュサイクルは64ミリ秒である。先行技術のリフレッシュ手法では、メモリコントローラが、rankをリフレッシュする必要があるかどうかをtREFI時間の間隔で確認する。各リフレッシュでは、tRFC時間を費やす必要がある。tREFIとは、メモリの平均リフレッシュ間隔(average refresh interval)である。言い換えれば、tREFIは、メモリコントローラがリフレッシュコマンドを送信する平均間隔を示すのに用いられる。tREFIは、リフレッシュサイクルと、リフレッシュサイクルの間に送信されるリフレッシュコマンドの数とに基づいて、決定されてよい。例えば、tREFIは、64ミリ秒/8192=7.8マイクロ秒であってよく、64ミリ秒はリフレッシュサイクルであり、8192はリフレッシュサイクルの間に送信されるリフレッシュコマンドの数である。tRFCとは、行のリフレッシュサイクル時間(row refresh cycle time)である。言い換えれば、tRFCは、DRAM−rankにおいて1つのリフレッシュコマンドを実行するために必要な時間を示すのに用いられる。一般に、tREFIが長いほど、tRFCが大きいことを示し、tREFIが短いほど、tRFCが小さいことを示す。リフレッシュプロセスのtRFC時間内では、リフレッシュ中のrankが、当該rankに対する要求に応答することができない。したがって、リフレッシュによってシステムパフォーマンスに生じる影響を軽減するために、リフレッシュ頻度を調整してよい。
さらに、当業者であれば、異なるリフレッシュモードが異なるリフレッシュ頻度を有することを認識しているであろう。ダブルデータレート(double data rate、DDR)プロトコルでは、3つのリフレッシュモード、つまり1Xモード、2Xモード、及び4Xモードを指定している。1Xモードでは、DDRプロトコルで指定されたtREFI(base)の間隔で、リフレッシュ動作がメモリチップに対して行われ、1つのリフレッシュ要求を実行する時間がtRFC1である。2Xモードでは、tREFI(base)/2の間隔でメモリチップに対してリフレッシュ動作が行われ、1つのリフレッシュ要求を実行する時間がtRFC2である。4Xモードでは、tREFI(base)/4の間隔でメモリチップに対してリフレッシュ動作が行われ、1つのリフレッシュ要求を実行する時間がtRFC3であり、tRFC1>tRFC2>tFRC3という関係になる。tREFI(base)は、このコンピュータシステムが準拠するDDRプロトコルにおいて規定される標準的な平均リフレッシュ間隔を示すのに用いられる。通常、tREFI(base)は、DRAMチップの表面温度が標準温度範囲内(0℃から85℃)であるという条件において、1XモードのtREFIを示すのに用いられる。DDR4規格によれば、tREFI及びtRFCの値は、実際の状況に応じて設定されてよい。例えば、8Gbの容量を有する、1X構成のDRAM−chipの場合、tREFIは7.8マイクロ秒であってよく、tRFCは350ナノ秒であってよい。4X構成では、tREFIは1.95マイクロ秒であってよく、tRFCは160ナノ秒であってよい。動的なリフレッシュモード調整が、DDR4プロトコルにおいてサポートされる。DDR4プロトコルによれば、メモリリフレッシュプロセスにおいて、メモリリフレッシュモードが、1Xモード、2Xモード、及び4Xモードの間で、あるモードから別のモードに切り替えられてよい。
上述したように、先行技術では、rankをリフレッシュする必要があるかどうかを、メモリコントローラがtREFI時間の間隔で確認する。rankがアイドル状態の場合、メモリコントローラは当該rankをリフレッシュし、rankがアイドル状態ではない場合、メモリコントローラは当該rankのリフレッシュを延期する。延期時間がある閾値を超えると、メモリコントローラは強制的に当該rankをリフレッシュする。しかしながら、メモリ内のトラフィックが比較的激しい場合、rankがアイドル状態になることはほとんどなく、rankがアイドル状態にならないこともあり得る。rankがアイドルになった後にだけ、当該rankがリフレッシュされる場合、リフレッシュが継続して延期される必要がある。ついに、データ損失を回避するためにリフレッシュを行う必要がある場合、現在の期間内に行われるべきリフレッシュを行う必要があるだけでなく、以前に延期されたリフレッシュの再リフレッシュを行う必要もある。したがって、再リフレッシュを必要とする期間内に、比較的多数のリフレッシュが生じる。この場合、平均リフレッシュ間隔tREFIに達していなくても、リフレッシュを行う必要がある。言い換えれば、再リフレッシュを行う必要がある場合、受動リフレッシュの増加が生じる。rankにアクセスするための要求に対する応答が、リフレッシュの時間内には行えないため、比較的多数の受動リフレッシュがあると、アクセスサービスの中断時間が増える。したがって、プロセッサはストールすることがあり、又は効率の低い動作をすることがある。この場合、システムパフォーマンスが大きく影響を受け、より高いリフレッシュオーバヘッドが生じる。
当業者であれば、メモリ108の複数のrankに対するリフレッシュ動作が独立していることを認識しているであろう。研究過程において、発明者は、リフレッシュプロセスでは、異なるリフレッシュモードが異なるリフレッシュ頻度を有し、異なるリフレッシュ頻度が異なるバス利用率につながるので、リフレッシュプロセスでは、リフレッシュモードの選択もシステムパフォーマンスに影響を与えることが分かっている。さらに、DRAMをリフレッシュするプロセスでは、リフレッシュ中のrankがリフレッシュプロセスの間に要求に応答できないので、システムのリフレッシュオーバヘッドをもたらす。さらに、リフレッシュプロセスの間に、リフレッシュ中のrankに対する要求がスケジューリングキューを混雑させるため、別のrankに対する要求がスケジューリングキューに入ることができず、その結果、当該別のrankに時間内に送信されないという事態が生じる。このことも、総合的なシステムパフォーマンスに影響を与える原因である。
コンピュータシステムのリフレッシュオーバヘッドを減らし、リフレッシュプロセスにおけるコンピュータシステムの総合的なパフォーマンスを向上させるために、本発明の一実施形態がメモリリフレッシュ方法を提供し、これにより、メモリスケジューリングポリシーを向上させることができ、リフレッシュ頻度を動的に調整することで、システムバス利用率を向上させることができる。さらに、スケジューリングキューでのリフレッシュ動作の混雑が原因で、別のrankに対する要求を実行できないという事態も回避することができる。したがって、リフレッシュオーバヘッドを減らすことができ、リフレッシュプロセスにおけるシステムパフォーマンスを向上させることができる。以下では、本発明の本実施形態において提供されるコンピュータシステムのメモリリフレッシュ手法を、図1を参照して詳細に説明する。
図2は、本発明の一実施形態によるメモリコントローラ106の概略構造図である。明解な説明を目的に、図2も、メモリコントローラ106とプロセッサコア104との間、及びメモリコントローラ106とメモリ108との間の接続を概略的に示す。メモリ108は、rank0、rank1、及びrank2などの複数のrankを含んでよい。図2に示すように、メモリコントローラ106は、通信インタフェース1061、統計モジュール1062、リフレッシュ制御回路1064、バッファキュー1066、スケジューリングキュー1068、及びスケジューラ1069を含んでよい。
本発明の本実施形態では、メモリコントローラ106内の通信インタフェース1061は、コンピュータのプロセッサ102に接続されたフロントエンドインタフェースを含んでよく、またメモリ108に接続されたバックエンドインタフェースも含んでよい。具体的には、メモリコントローラ106は、通信インタフェース1061を介して、コンピュータシステムのプロセッサ(例えば図1のCore104)から送信されるアクセス要求を受信してよい。メモリコントローラ106は、通信インタフェース1061を介して、データをメモリ108に格納しても、データをメモリ108から読み出してもよい。
統計モジュール1062は、2つの態様で統計的機能を含んでよい。第一に、統計モジュール1062は、メモリコントローラ106が受信したアクセス要求のターゲットrankの分布に関する統計データと、これらのアクセス要求の動作タイプとを収集するように構成されてよい。ターゲットrankとは、アクセス要求を用いてアクセスされるrankである。アクセス要求の動作タイプは、読み出し動作及び書き込み動作などのタイプを含んでよい。具体的には、統計モジュール1062は、アクセス要求のターゲットrankに関する統計データを収集し、これらのアクセス要求内にある動作タイプを取得してよい。第二に、統計モジュール1062はさらに、メモリコントローラ106が受信したアクセス要求の数に関する統計データを収集してよい。具体的には、統計モジュール1062は、アクセス対象rankごとのアクセス要求の数と、メモリコントローラ106が受信したアクセス要求の総数とに関する統計データを収集してよい。統計モジュール1062は、バッファキュー1066及びスケジューリングキュー1068にバッファリングされたアクセス要求に基づいて、統計データを収集してよい。実際の応用では、統計モジュール1062はカウンタで実装されてよい。言い換えれば、統計モジュール1062は、1つ又は複数のカウンタを含んでよい。本発明の本実施形態では、アクセス要求は、メモリにアクセスするプロセッサの要求である。アクセス要求は、読み出し要求及び書き込み要求などを含んでよい。言い換えれば、プロセッサは、アクセス要求に従って、データをメモリから読み出しても、データをメモリに書き込んでもよい。
リフレッシュ回路1064は、統計モジュール1062の統計的な結果に基づくtREFI時間の間隔で、リフレッシュ要求を生成するかどうかを判定し、生成されたリフレッシュ要求をスケジューリングキューに入れるように構成される。例えば、あるrankに対するアクセス要求の要求数が指定された閾値より小さいことを、統計モジュール1062が統計データ収集を通じて取得した場合、リフレッシュ回路1064は、当該rankに対するリフレッシュ要求を生成し、当該リフレッシュ要求をスケジューリングキュー108に入れてよい。実際の応用では、リフレッシュ回路1064により生成されたリフレッシュ要求が、代替的にスケジューラ1069に直接送信されてもよく、これにより、スケジューラ1069は、生成されたリフレッシュ要求をメモリ108に送信し、メモリ108は、生成されたリフレッシュ要求に従って、対応するrankに対してリフレッシュ動作を行うことが理解できるであろう。tREFIは、平均リフレッシュ間隔を示すのに用いられることに留意されたい。実際の応用では、リフレッシュ回路1064は代替的に、tREFIより短い間隔でリフレッシュ要求を生成してもよい。例えば、再リフレッシュを行う必要がある場合、リフレッシュ回路1064は、tREFIより短い間隔でリフレッシュ要求を生成してよい。さらに、当業者であれば、tREFIが異なるリフレッシュモードによって変わることを認識しているであろう。
バッファキュー1066は、あるrankに対してリフレッシュ動作を行うプロセスにおいて、Core104から送信されるアクセス要求を当該rankのためにバッファリングするように構成される。言い換えれば、バッファキュー1066は、リフレッシュ動作が行われているrankに対する、新たに受信したアクセス要求をバッファリングするように構成される。例えば、メモリ108のrank0が一例として用いられる。rank0に対してリフレッシュ動作を行うプロセスでは、メモリコントローラ106がrank0に対するCore104からの読み出し要求を受信した場合、当該読み出し要求は、スケジューリングキュー1068ではなく、バッファキュー1066にバッファリングされてよい。実際の応用では、スケジューリング優先度がさらに、バッファキュー1066のアクセス要求に設定されてよい。例えば、いくつかのアクセス要求が、優先スケジューリング又は標準スケジューリングに設定されてよい。
スケジューリングキュー1068は、あるrankに送信されるアクセス要求をバッファリングするように構成される。例えば、スケジューリングキュー1068は、Core104から送信されるアクセス要求、及びリフレッシュ回路1064から送信されるリフレッシュ要求などの動作要求をバッファリングするように構成されてよい。さらに、本発明の本実施形態では、スケジューリングキュー1068は、リフレッシュ動作が行われていないrankに送信されるアクセス要求をバッファリングするように構成される。スケジューラ1069は、スケジューリングキュー1068内の動作要求(少なくともアクセス要求及びリフレッシュ要求を含む)をメモリ108に送信し、例えば、メモリ108にアクセスする又はメモリ108をリフレッシュする動作を実施するように構成される。本発明の本実施形態では、バッファキュー1066は、スケジューリングキュー1068のアップフロントバッファである。このように、バッファキュー1066は、スケジューリングキュー1068に入ることになるアクセス要求をバッファリングするように構成されてよい。本発明の本実施形態では、説明しやすいように、バッファキュー1066及びスケジューリングキュー1068を含む2つのレベルのバッファが構成されることが、本発明の本実施形態において一例として用いられる。実際の応用では、さらに多くのレベルのバッファが、要件に応じて構成されてよい。例えば、さらに多くのレベルのバッファキュー1066が、スケジューリングキュー1068の前に構成されてよい。
上述したように、ダブルデータレート(double data rate、DDR)プロトコルは、3つのリフレッシュモード、つまり1Xモード、2Xモード、及び4Xモードを指定している。本発明の本実施形態では、リフレッシュモードは、少なくとも第1のリフレッシュモード及び第2のリフレッシュモードを含んでよい。第1のリフレッシュモードでは、メモリコントローラはtREFI(base)/Nの間隔でリフレッシュを行う。第2のリフレッシュモードでは、メモリコントローラはtREFI(base)の間隔でリフレッシュを行う。例えば、第1のリフレッシュタイプは4Xモードであってよく、第2のリフレッシュタイプは1Xモードを含んでよい。tREFI(base)は、DDRプロトコルで規定される標準的な平均リフレッシュ間隔を示すのに用いられ、Nは1より大きい整数である。通常、tREFI(base)は、DRAMチップの表面温度が標準温度範囲内(0℃から85℃)であるという条件において、1XモードのtREFIを示すのに用いられる。説明しやすいように、tREFI(base)は、本発明の本実施形態においてTで示されてもよい。
メモリシステムの場合、リフレッシュ頻度の減少が、リフレッシュ延期の減少よりもシステムパフォーマンス向上にとって重要である。したがって、通常、4Xモードでリフレッシュを行うと、1Xモードでリフレッシュを行うよりもシステムパフォーマンスが低くなる。さらに、比較的高い割合の読み出し要求又は書き込み要求がアクセス要求内にある場合、メモリ108は、読み出しと書き込みとの間の切り替え回数が比較的少数であることに起因して、比較的高い帯域幅利用率を有する。しかしながら、本発明を実装するプロセスでは、発明者は、DDRプロトコルが4つのアクティブウィンドウ(Four Active Window、tFAW)を指定しているので、複数のアクセス要求に対して、比較的少数のアクセス対象ターゲットrankしかない場合、言い換えれば、複数のアクセス要求がメモリ108の比較的少数のrankに集中した場合、tFAW時間ウィンドウでは、同時に動作可能な1つのrankの行の数が制限されるので、その代わりに総合的なシステムパフォーマンスが低下することが分かる。tFAWは、tFAW時間ウィンドウ内で、1つのrankが、最大で4つの行アクティブコマンドを送信することが可能であることを意味する。メモリ108の2つのrankを一例にとってみる。読み出し要求又は書き込み要求の割合が比較的高く、アクセス要求が複数のrankのうちの1つに集中している場合、その他のrankはリフレッシュ中である。リフレッシュ時間が長いほど、単一のrankのアクセス期間が長く、総合的なシステムパフォーマンスの低下が大きいことを示す。
本発明を実施するプロセスでは、発明者は、4Xモードと1Xモードとを比較すると、4Xモードでのリフレッシュに対する1回のリフレッシュ時間tRFC3が比較的短いので、1回のリフレッシュプロセスでは、tFAW制限によってシステムに生じる影響が比較的小さく、総合的なシステムパフォーマンスの低下が比較的小さいことが分かる。したがって、本発明の本実施形態において、総合的なシステムパフォーマンスを向上させ、システム上のtFAW制限を減らすために、本発明の一実施形態において提供されるメモリリフレッシュ方法では、リフレッシュモードを動的に調整することができ、システムのリフレッシュオーバヘッドを減らし、システムパフォーマンスを向上させることができる。
以下では、本発明の一実施形態において提供されるメモリリフレッシュ方法を、図2を参照して詳細に説明する。図3は、本発明の一実施形態によるメモリリフレッシュ方法のフローチャートである。図3に示すメモリリフレッシュ方法は、図1及び図2に示すメモリコントローラ106により実行されてよい。図3に示すように、本方法は以下の段階を含んでよい。
段階301において、メモリコントローラ106は、Core104から送信されるアクセス要求を受信する。本発明の本実施形態では、アクセス要求は、メモリ108にアクセスするのに用いられる要求である。メモリコントローラ106は、アクセス要求に従って、データをメモリ108から読み出しても、データをメモリ108に書き込んでもよい。アクセス要求の動作タイプが、読み出し動作及び書き込み動作などのタイプを含んでよい。実際の応用では、メモリコントローラ106とCore104との間の通信インタフェースを介して、メモリコントローラ106は、Core104から送信されるアクセス要求を受信することができる。
段階302において、メモリコントローラ106は、第1の期間内に受信したアクセス要求のターゲットrankの数が、指定された第1の閾値より小さいかどうかを判定する。当業者であれば、rankをリフレッシュする必要があるかどうかを、メモリコントローラがtREFI時間の間隔で確認することを認識しているであろう。各リフレッシュは、tRFC時間を費やす必要がある。tREFIは、平均リフレッシュ間隔(average refresh interval)を示すのに用いられ、tRFCは、行のリフレッシュサイクル時間(Refresh Cycle Time)を示すのに用いられる。言い換えれば、tREFIは、メモリコントローラがリフレッシュコマンドを送信する間隔を示すのに用いられ、tRFCは、1つのリフレッシュコマンドをDRAM−rankで実行するのに必要な時間を示すのに用いられる。本発明の本実施形態では、説明しやすいように、あるrankをリフレッシュする必要があるかどうかをメモリコントローラ106が確認するプロセスは、リフレッシュポーリングプロセスと呼ばれる。1つのtREFI時間は、期間と呼ばれる。言い換えれば、メモリコントローラ106は、tREFI時間の間隔でリフレッシュポーリングを一度行う。
本発明の本実施形態では、1つのリフレッシュポーリングプロセスが、説明の一例として用いられる。この段階では、第1のリフレッシュポーリングプロセスにおいて、メモリコントローラ106内のリフレッシュ回路1064が、統計モジュール1062により統計データ収集を通じて取得されたアクセス要求のアクセス対象ターゲットrankの分布に基づいて、第1の期間内にメモリコントローラ106が受信したアクセス要求のターゲットrankの数が、指定された第1の閾値より小さいかどうかを判定してよい。本発明の本実施形態では、ターゲットrankとは、アクセス要求を用いてアクセスされるrankである。ターゲットrankの数は、アクセス要求を用いてアクセスされるrankの数である。あるケースでは、リフレッシュポーリングプロセスにおいて、メモリコントローラ106は、統計モジュール1062により統計データ収集を通じて取得された、メモリコントローラ106にバッファリングされている処理対象アクセス要求のターゲットrankの数に基づいて、ターゲットrankの数が、指定された第1の閾値より大きいかどうかを判定してよい。別のケースでは、メモリコントローラ106は、統計モジュール1062により統計データ収集を通じて取得された、指定期間内にメモリコントローラ106が受信したアクセス要求のターゲットrankの数に基づいて、ターゲットrankの数が第1の閾値より大きいかどうかを判定してよい。指定期間は、tREFI以下の期間であってよい。第1の閾値は0より大きく、第1の閾値はメモリ108のrank総数より小さい。実際の応用では、第1の閾値はメモリ108のrank総数に基づいて決定されてよい。例えば、第1の閾値は、DRAMのrank総数の半分に設定されてよい。アクセス要求のターゲットrankの数が第1の閾値より小さい場合、本方法は段階304に進む。アクセス要求のターゲットrankの数が第1の閾値以上である場合、本方法は段階306に進む。
この段階では、第1の閾値は、メモリコントローラが受信したアクセス要求のアクセス対象ターゲットrankが集中しているかどうかを判定するのに用いられる。本発明の本実施形態では、第1の閾値は、メモリ108のrank総数に基づいて決定されてよい。例えば、メモリ108が4つのrankを含む場合、第1の閾値は2に設定されてよい。
段階304において、メモリコントローラ106は、受信したアクセス要求のうち読み出し要求又は書き込み要求の割合が第2の閾値より大きいかどうかを判定する。上述したように、比較的高い割合の読み出し要求又は書き込み要求がアクセス要求内にある場合、メモリ108は、読み出しと書き込みとの間の切り替え回数が比較的少数であることに起因して、比較的高い帯域幅利用率を有する。本発明の本実施形態では、第2の閾値は、アクセス要求のうち読み出し要求又は書き込み要求の割合が比較的高いかどうかを判定するのに用いられる。したがって、実際の応用では、第2の閾値は、比較的高い割合に設定されてよい。例えば、読み出し要求の割合が、受信したアクセス要求総数のうち読み出し要求の数の割合で測定される場合、第2の閾値は60%であってよい。
本発明の本実施形態では、読み出し要求の割合は、受信したアクセス要求のうち読み出し要求の割合を示すのに用いられる。書き込み要求の割合は、受信したアクセス要求のうち書き込み要求の割合を示すのに用いられる。例えば、読み出し要求の割合は、アクセス要求総数のうち読み出し要求の数の割合で表されてよい。書き込み要求の割合は、アクセス要求総数のうち書き込み要求の数の割合で表されてよい。実際の応用では、読み出し要求の割合は、書き込み要求の数に対する読み出し要求の数の比率で表されてよい。書き込み要求の割合は、読み出し要求の数に対する書き込み要求の数の比率で表されてよい。読み出し要求の割合又は書き込み要求の割合を決定することができる限り、本明細書ではいかなる制限も課すことはない。
アクセス要求のうち読み出し要求の割合が第2の閾値より高い場合、それは、第1の期間内に比較的多数の読み出し要求があることを示していることが理解できるであろう。アクセス要求のうち書き込み要求の割合が第2の閾値より高い場合、それは、第1の期間内に比較的多数の書き込み要求があることを示している。本発明の本実施形態では、アクセス要求のうち読み出し要求又は書き込み要求の割合が第2の閾値より大きい場合、本方法は段階306に進む。アクセス要求のうち読み出し要求又は書き込み要求の割合が第2の閾値以下である場合、本方法は段階308に進む。
段階306において、メモリコントローラ106は、第1のリフレッシュモードに従って第1のリフレッシュ要求を生成する。本発明の本実施形態では、統計モジュール1062の統計的な結果に基づいて、アクセス要求のアクセス対象ターゲットrankの数が、指定された第1の閾値より小さく、且つこれらのアクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第2の閾値より大きいと、リフレッシュ回路1064が判定した場合、メモリコントローラ106内のリフレッシュ回路1064は、第1のrankを第1のリフレッシュモードでリフレッシュすると判定してよい。第1のリフレッシュモードにおいて、メモリコントローラは、tREFI(base)/Nの間隔でリフレッシュを行う。tREFI(base)は、標準的な平均リフレッシュ間隔を示すのに用いられ、Nは1より大きい整数である。例えば、第1のリフレッシュモードは、4Xモードでも2Xモードでもよい。言い換えれば、メモリコントローラ106が受信したアクセス要求のアクセス対象ターゲットrankが比較的集中しており、読み出し要求の割合又は書き込み要求の割合が比較的高い場合、第1のrankは、4Xモード又は2Xモードでリフレッシュされてよい。
段階308において、メモリコントローラ106は、第2のリフレッシュモードに従って第2のリフレッシュ要求を生成する。本発明の本実施形態では、統計モジュール1062の統計的な結果に基づいて、アクセス要求のアクセス対象ターゲットrankの数が、指定された第1の閾値以上であるか、又は受信したアクセス要求のうち読み出し要求又は書き込み要求の割合が第2の閾値以下であると、リフレッシュ回路1064が判定した場合、メモリコントローラ106内のリフレッシュ回路1064は、第1のrankを第2のリフレッシュモードでリフレッシュすると判定してよい。具体的には、メモリコントローラ106は、第2のリフレッシュモードに従って第2のリフレッシュ要求を生成してよい。第2のリフレッシュモードにおいて、メモリコントローラは、tREFI(base)の間隔でリフレッシュを行う。tREFI(base)は、標準的な平均リフレッシュ間隔を示すのに用いられる。本発明の本実施形態では、第2のリフレッシュモードは1Xモードであってよい。言い換えれば、メモリコントローラ106が受信したアクセス要求のアクセス対象ターゲットrankが集中せず、また読み出し要求の割合と書き込み要求の割合とが比較的等しく、読み出しと書き込みとの間で比較的多数の切り替えが必要であることを示している場合、第1のrankは1Xモードでリフレッシュされてよい。
段階310において、メモリコントローラ106は、第1のリフレッシュ要求に従ってメモリの第1のrankをリフレッシュする。第1のrankは、メモリ内のリフレッシュされる任意のランクである。具体的には、段階306において、メモリコントローラ106内のリフレッシュ回路1064が第1のリフレッシュ要求を生成した後に、メモリコントローラ106は、生成された第1のリフレッシュ要求をスケジューリングキュー1068に入れてよく、これにより、段階310において、スケジューリングキュー1068にある第1のリフレッシュ要求をスケジューラ1069がメモリ108に送信し、メモリ108は、メモリコントローラ106により生成された第1のリフレッシュ要求に従って、リフレッシュ動作を第1のrankに対して行ってよい。
段階312において、メモリコントローラ106は、第2のリフレッシュ要求に従ってメモリの第1のrankをリフレッシュする。具体的には、段階308において、メモリコントローラ106内のリフレッシュ回路1064が第2のリフレッシュ要求を生成した後に、メモリコントローラ106は、生成された第2のリフレッシュ要求をスケジューリングキュー1068に入れてよく、これにより、段階312において、スケジューリングキュー1068にある第2のリフレッシュ要求をスケジューラ1069がメモリ108に送信し、メモリ108は、メモリコントローラ106により生成された第2のリフレッシュ要求に従って、リフレッシュ動作を第1のrankに対して行ってよい。
図3は、一例として第1のリフレッシュポーリングプロセスのみを用いて説明されていることが理解できるであろう。実際の応用では、異なるリフレッシュポーリングプロセスにおいて、アクセス要求のアクセス対象ターゲットrankの分布と、読み出し要求又は書き込み要求の割合とに基づいて、第1のrankのリフレッシュモードが動的に調整されてよい。例えば、第1のリフレッシュポーリングプロセスでは、メモリコントローラ106は第1のrankを第1のリフレッシュモードでリフレッシュしてよい。第2のリフレッシュポーリングプロセスでは、メモリコントローラ106は第2のrankを第2のリフレッシュモードでリフレッシュしてよい。
最後に、アクセス要求のアクセス対象ターゲットrankが比較的集中しており、且つこれらのアクセス要求のうち読み出し要求又は書き込み要求の割合が比較的高い場合、1つのrankにある同時に動作可能な行の数がtFAWで制限されるので、リフレッシュプロセスの総合的なシステムパフォーマンスが著しく低下する。本発明の本実施形態では、システムパフォーマンスを向上させるために、アクセス要求のターゲットrankの分布と、これらのアクセス要求のうち読み出し要求又は書き込み要求の割合とに基づいて、リフレッシュモードが動的に調整されてよく、これにより、tFAW制限によって生じたシステムパフォーマンスオーバヘッドをリフレッシュ頻度の調整によって補償することができ、さらに、リフレッシュプロセスのシステムパフォーマンスを向上させることができる。さらに、先行技術と比較すると、本発明の本実施形態において提供されるメモリリフレッシュ方法では、現在のリフレッシュプロセスにおけるアクセス要求の特徴に基づいて、リフレッシュモードを決定することができるので、決定されたリフレッシュモードはリフレッシュプロセスと強く関連しており、そのため、リフレッシュオーバヘッドを効果的に減らし、システムパフォーマンスを向上させることができる。
前述の実施形態では、リフレッシュプロセスのシステムパフォーマンスが、リフレッシュ頻度の調整の観点から向上する。システムのリフレッシュパフォーマンスをさらに向上させるために、本発明の一実施形態では、先行技術のリフレッシュ方法がさらにリフレッシュ時間の観点から最適化され、メモリリフレッシュプロセスにおけるシステムの総合的パフォーマンスをさらに向上させる。以下では、本発明の本実施形態において提供されるメモリリフレッシュ方法を、図4を参照してさらに説明する。
段階402において、メモリコントローラ106は、受信したアクセス要求の数が第3の閾値より大きいかどうかを判定する。上述したように、メモリ内のデータ損失を回避するために、rankをリフレッシュする必要があるかどうかを、メモリコントローラ106がtREFI時間の間隔で確認する。具体的には、リフレッシュポーリングプロセスにおいて、メモリコントローラ106は、統計モジュール1062により統計データ収集を通じて取得された、メモリコントローラ106にバッファリングされている処理対象アクセス要求の数に基づいて、アクセス要求の数が第3の閾値より大きいかどうかを判定してよい。別のケースでは、メモリコントローラ106は、統計モジュール1062により統計データ収集を通じて取得された、指定期間内にメモリコントローラ106が受信したアクセス要求の数に基づいて、アクセス要求の数が第3の閾値より大きいかどうかを判定してよい。指定期間は、tREFI以下の期間であってよい。第3の閾値は0より大きい整数であり、第3の閾値は、実際の応用では、トラフィック量に従って予め設定されてよい。例えば、第3の閾値は100に設定されてよい。メモリコントローラ106が受信したアクセス要求の数が第3の閾値より大きく、比較的多数のアクセス要求があることを示している場合、本方法は段階404に進む。メモリコントローラ106が受信したアクセス要求の数が第3の閾値以下である場合、本方法は段階406に進む。
段階404において、メモリコントローラ106は、第1のrankにアクセスするためのアクセス要求の数が第4の閾値より大きいかどうかを判定する。第1のrankは、メモリ108の任意のランクであってよい。本発明の本実施形態では、メモリコントローラ106は、統計モジュール1062により統計データ収集を通じて取得された、第1のrankに対するアクセス要求の数に基づいて、第1のrankに対するアクセス要求の数が第4の閾値より小さいかどうかを判定してよい。第4の閾値は具体的に、応用シナリオに応じて設定されてよく、第4の閾値は0より大きい。第1のrankにアクセスするためのアクセス要求の数が第4の閾値より小さい場合、本方法は段階410に進む。第1のrankにアクセスするためのアクセス要求の数が第4の閾値より大きい場合、本方法は段階408に進む。第1のrankに対するアクセス要求の数は、段階402で指定された期間内にメモリコントローラ106が受信する第1のrankに対するアクセス要求の数であってもよく、又はメモリコントローラ106にバッファリングされている第1のrankに対する処理対象アクセス要求の数であってもよいことに留意されたい。
段階406において、メモリコントローラ106は、第1のrankがアイドル状態であるかどうかを判定する。具体的には、段階402において、受信したアクセス要求の数が第3の閾値より大きいとメモリコントローラ106が判定した場合、これは、メモリ全体が比較的激しいアクセストラフィックを有していることを示しており、この場合、メモリコントローラ106は、第1のrankをリフレッシュする必要があるかどうかをさらに判定する必要がある。第1のrankがアイドル状態にある場合、言い換えれば、第1のrankにアクセスするための要求がメモリコントローラのスケジューリングキューに存在しない場合、本方法は段階410に進む。第1のrankがアイドル状態ではない場合、言い換えれば、第1のrankにアクセスするためのアクセス要求がメモリコントローラのスケジューリングキューに存在する場合、本方法は段階408に進む。
段階408において、メモリコントローラ106は、第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きいかどうかを判定する。第1のrankに対する延期されたリフレッシュの数が第5の閾値より大きいと、メモリコントローラ106が判定した場合、本方法は段階410に進む。第1のrankに対する延期されたリフレッシュの数が第5の閾値以下であると、メモリコントローラ106が判定した場合、本方法は段階412に進む。本発明の本実施形態では、第5の閾値は1以上であり、且つ指定された警告値より小さい。警告値は、rankに対して延期可能なリフレッシュコマンド(postponing refresh commands)の最大数に基づいて決定されてよい。例えば、DDR4規格によれば、rankに対して最大8つのリフレッシュコマンドが延期可能であり、言い換えれば、警告値は8である。第5の閾値は8未満である必要がある。例えば、第5の閾値は6に設定されてよい。
本発明の本実施形態では、延期レジスタ(図2には示されていない)がリフレッシュ回路1064に配置されてよく、延期レジスタは、第1のrankに対する延期されたリフレッシュの数に関する統計データを収集するように構成されてよい。実際の応用では、延期レジスタは代替的に、リフレッシュ回路1064から独立して配置されてもよい。別のケースでは、延期カウンタが配置されなくてもよく、代わりに、第1のrankに対する延期されたリフレッシュの数は、ソフトウェアを用いて統計データ収集を通じて取得される。本発明の本実施形態では、第1のrankに対する延期されたリフレッシュの数を、統計データ収集を通じて具体的に取得する方式に関して、いかなる制限も課すことはない。
段階410において、メモリコントローラ106は第1のrankをリフレッシュする。具体的には、メモリコントローラ106内のリフレッシュ回路1064は、統計モジュール1062により統計データ収集を通じて取得されたアクセス要求の数、アクセス要求のタイプ、及びターゲットrankの分布に基づいて、リフレッシュモードを決定し、決定されたリフレッシュモードに従ってリフレッシュ要求を生成し、生成されたリフレッシュ要求に従って第1のrankをリフレッシュしてよい。具体的には、リフレッシュ回路1064は、決定されたリフレッシュモード(例えば、1Xモード又は4Xモード)に従って対応するリフレッシュ要求を生成し、生成されたリフレッシュ要求をスケジューリングキュー1068に入れるので、スケジューラ1069は生成されたリフレッシュ要求をメモリ108に送信し、メモリ108は、メモリコントローラ106により生成されたリフレッシュ要求に従って第1のrankに対してリフレッシュ動作を行ってよい。例えば、メモリコントローラ106が図3に示す方法に従って決定された第1のリフレッシュモードでリフレッシュを行う場合、この段階では、メモリコントローラ106は、生成された第1のリフレッシュ要求に従って第1のrankをリフレッシュしてよい。メモリコントローラ106が図3に示す方法に従って決定された第2のリフレッシュモードでリフレッシュを行う場合、この段階では、メモリコントローラ106は、生成された第2のリフレッシュ要求に従って第1のrankをリフレッシュしてよい。
第1のrankに対してリフレッシュ動作を行う必要があると、メモリコントローラ106が判定したときに、メモリコントローラ106が第1のrankに対するアクセス要求を実行している場合、又はスケジューリングキューが第1のrankに対するアクセス要求をまだ有している場合、メモリコントローラ106は、アクセス要求が第1のrankに対して実行され且つスケジューリングキューにある第1のrankに対するアクセス要求が処理された後にだけ、リフレッシュ要求を送信し、システムパフォーマンスへの影響を回避し得ることが理解できるであろう。
段階412において、メモリコントローラ106は、第1のrankに対するリフレッシュ動作を延期する。具体的には、段階408において、第1のrankに対する延期された動作の数が第5の閾値以下であると、メモリコントローラ106が判定した場合、メモリコントローラは、第1のrankに対するリフレッシュ動作を延期し、延期カウンタの値に1を加える。言い換えれば、メモリコントローラ106が段階406を通じて、第1のrankがアイドル状態ではないと判定した場合、すなわち、第1のrankに対するアクセス要求が処理中である場合、又はスケジューリングキューが第1のrankに対するアクセス要求をまだ含んでいる場合、第1のrankに対する延期の数が第5の閾値に達していなければ、第1のrankに対する比較的多数のアクセス要求があるとみなされてよい。パフォーマンスへの影響を回避するために、第1のrankに対してリフレッシュ動作は行われず、第1のrankに対するリフレッシュ動作は、次のポーリングプロセスで行われる。上述したように、第5の閾値は、指定された警告値より小さい。警告値は、第1のrankに対して延期可能なリフレッシュコマンドの最大数に基づいて決定されてよい。警告値は、第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる。言い換えれば、警告値は、第1のrankに対してリフレッシュ動作を強制的に行うようメモリコントローラ106に命令するのに用いられる。
リフレッシュ動作が第1のrankに対して強制的に行われる場合、以前に延期されたリフレッシュに対して再リフレッシュを行う必要があることが理解できるであろう。したがって、再リフレッシュを必要とする期間内に、比較的多数のリフレッシュが生じる。特定の再リフレッシュ期間内において、1つの態様では、第1のrankに対して、スケジューリングキューに入れられたアクセス要求を実行できないことが生じる可能性があり、その結果として、スケジューリングキュー1068のスペースが比較的長い時間占有され、別のrankに対するアクセス要求がスケジューリングキューに入ることができず、コンピュータシステム全体のパフォーマンスに影響を与える。別の態様では、短時間内のリフレッシュの増加が原因で、システムサービスが中断する可能性がある。つまり、第1のrankを強制的にリフレッシュすると、リフレッシュによるコンピュータシステム100の電力消費が増加し、システムパフォーマンスに影響を与える。
最後に、本発明の本実施形態において提供されるリフレッシュ方法では、1つのtREFIポーリングプロセスにおいて、以下に挙げるいくつかのケースが、第1のrankに対するリフレッシュ動作に関連して存在し得る。
ケース1:メモリコントローラ106が受信したアクセス要求の数が第3の閾値より大きく、且つ第1のrankにアクセスするためのアクセス要求の数が第4の閾値より小さい場合、メモリコントローラ106は、図3に示すメモリリフレッシュ方法に従って決定されたリフレッシュモードで、第1のrankに対してリフレッシュ動作を実行してよい。言い換えれば、コンピュータシステム100のアクセストラフィックが比較的激しい場合、第1のrankにアクセスするためのアクセス要求の数が比較的小さい場合に限り、メモリコントローラ106は、第1のrankがアイドル状態になった後にだけ第1のrankに対してリフレッシュ動作を行う代わりに、第1のrankに対してリフレッシュ動作を能動的に行ってよい。これは、コンピュータシステム100のアクセストラフィックが比較的激しい場合、第1のrankがアイドル状態になる可能性は非常に低いからである。また、データ損失を回避する次の強制的なリフレッシュの際に、リフレッシュが継続して延期された場合、リフレッシュの増加が特定の時間内に生じて、受動リフレッシュ状態になることがある。本発明の本実施形態において提供される、そのような能動的なリフレッシュ方式は、リフレッシュ延期によりもたらされた受動リフレッシュによってコンピュータシステムのパフォーマンスに生じる影響を軽減することができ、またメモリリフレッシュの柔軟性を向上させることができる。したがって、コンピュータシステムのパフォーマンスを向上させることができ、リフレッシュオーバヘッドを減らすことができる。もちろん、本発明の本実施形態では、第1のrankにアクセスするためのアクセス要求の数が、指定された第4の閾値より小さいことが、第1のrankがアイドルである場合を含むことが理解できるであろう。
ケース2:メモリコントローラ106が受信したアクセス要求の数が第3の閾値より大きく、且つ第1のrankにアクセスするためのアクセス要求の数が第4の閾値以上であり、且つ第1のrankに対する延期されたリフレッシュの数が第5の閾値より大きい場合、メモリコントローラ106は、図3に示すメモリリフレッシュ方法に従って決定されたリフレッシュモードで、第1のrankに対してリフレッシュ動作を行ってよい。言い換えれば、コンピュータシステム100内のメモリアクセストラフィックが比較的激しく、且つ第1のrankに対するアクセス要求の数も比較的大きい場合、第1のrankに対する延期数が第5の閾値より大きければ、第1のrankに対する延期されたリフレッシュの数が警告値に達したために強制的なリフレッシュを行う必要がある可能性を回避し、受動リフレッシュの増加によってコンピュータシステムのパフォーマンスに生じる影響を軽減するために、第1のrankに対してリフレッシュ動作を直ちに行う必要があり、これによってメモリリフレッシュの柔軟性が向上する。第3の閾値は、実際の応用では警告値を基準にして指定される閾値であり、これにより、コンピュータシステムは、パフォーマンスに影響を与えることなく、特定の範囲内でリフレッシュを延期することができるので、メモリリフレッシュの柔軟性が向上することが理解できるであろう。
ケース3:メモリコントローラ106が受信したアクセス要求の数は第3の閾値より大きく、且つ第1のrankにアクセスするためのアクセス要求の数が第4の閾値以上であり、且つ第1のrankに対する延期されたリフレッシュの数が第5の閾値以下である場合、第1のrankに対するリフレッシュ動作は延期されてよい。言い換えれば、本発明の本実施形態では、コンピュータシステム100のメモリアクセストラフィックが比較的激しく、且つ第1のrankに対するアクセス要求の数も比較的大きい場合、第1のrankに対する延期されたリフレッシュの数が、予め設定した第5の閾値に達していない限り、スケジューリングキュー108にある第1のrankに対するアクセス要求の処理に影響を与えることを回避するために、第1のrankに対するリフレッシュ動作は延期されてよい。
ケース4:メモリコントローラ106が受信したアクセス要求の数が第3の閾値以下であり、且つ第1のrankがアイドル状態にある場合、メモリコントローラ106は、図3に示すメモリリフレッシュ方法に従って決定されたリフレッシュモードで、第1のrankに対してリフレッシュ動作を行ってよい。言い換えれば、コンピュータシステム100のメモリトラフィックが比較的少なく、且つ第1のrankがアイドル状態にある場合、第1のrankに対するリフレッシュ動作は、コンピュータシステムのパフォーマンスに比較的小さい影響しかもたらさない。したがって、リフレッシュ動作は、第1のrankに対して直接行われてよい。
ケース5:メモリコントローラ106が受信したアクセス要求の数が第3の閾値以下であり、且つ第1のrankがアイドル状態ではなく、且つ第1のrankに対する延期されたリフレッシュの数が第5の閾値より大きい場合、メモリコントローラ106は、図3に示すメモリリフレッシュ方法に従って決定されたリフレッシュモードで、第1のrankに対してリフレッシュ動作を能動的に行う必要がある。言い換えれば、コンピュータシステム100のメモリトラフィックが比較的少なく、且つ第1のrankが比較的ビジーの状態である場合、第1のrankに対する強制的なリフレッシュを回避するために、現在のポーリングプロセスにおいて第1のrankに対してリフレッシュ動作を行う必要がある。その結果、延期されたリフレッシュの数が警告値に達したことによる、システム上での受動リフレッシュの増加を回避し、受動リフレッシュによるコンピュータシステムのパフォーマンスへの影響を軽減することができる。
ケース6:メモリコントローラ106が受信したアクセス要求の数が第3の閾値以下であり、且つ第1のrankがアイドル状態ではなく、且つ第1のrankに対する延期されたリフレッシュの数が第5の閾値以下である場合、メモリコントローラ106は、第1のrankに対するリフレッシュ動作を延期してよい。言い換えれば、コンピュータシステム100のメモリトラフィックが比較的少ないが、第1のrankが比較的ビジーの状態にあるときに、第1のrankに対するアクセス要求を可能な限り多く処理するために、第1のrankに対する延期の数がまだ第5の閾値以下の場合には、第1のrankに対するリフレッシュ動作を延期してよい。
本発明の本実施形態において提供されるメモリリフレッシュ方法に関する上記の説明は全て、一例として1つのリフレッシュポーリングプロセスにおける、メモリ108の第1のrankに対するリフレッシュ動作を用いて行われていることが理解できるであろう。実際の応用では、それぞれのリフレッシュポーリングプロセスにおいて、メモリコントローラは、上記に提供された方法に従って、メモリ108のrankをリフレッシュする必要があるかどうかを判定してよい。例えば、第1のリフレッシュポーリングプロセスでは、メモリコントローラ106は、ケース1に従って第1のrankをリフレッシュし、ケース2に従ってメモリ108の第2のrankをリフレッシュし、ケース3に従ってメモリ108の第3のrankに対するリフレッシュ動作を延期すると判定してよい。第2のリフレッシュポーリングプロセスでは、メモリコントローラ106は、ケース6に従って第1のrankのリフレッシュを延期し、ケース5に従って第2のrankをリフレッシュしてよい。
さらに、メモリコントローラ106は、リフレッシュ動作が第1のrankに対して行われているtRFC期間内に、第1のrankに対するアクセス要求に応答することができない。したがって、第1のrankに対するアクセス要求が、スケジューリングキュー1068を混雑させたり、別のrank(例えば第2のrank)に対するアクセス要求がスケジューリングキュー1068に入ることができないことを生じさせたり、またシステムパフォーマンスに影響を与えたりすることを防止するために、本発明の本実施形態では、リフレッシュ動作が第1のrankに対して行われているときに、メモリコントローラ106が第1のrankに対するアクセス要求を受信した場合、メモリコントローラ106は第1のrankに対するアクセス要求をバッファキュー1066に入れてよい。メモリコントローラ1068が第1のrankに対してリフレッシュ動作を行った後に、バッファキュー1066にある第1のrankに対するアクセス要求は、バッファキュー1066からスケジューリングキュー1068に入れられる。さらに、本発明の本実施形態では、第1のrankに対するリフレッシュ動作が行われた後に、メモリコントローラ106は、続いて新たに受信する第1のrankに対するアクセス要求を、バッファキュー1066ではなく、スケジューリングキュー108に直接入れてよい。
本発明の本実施形態では、リフレッシュ動作が第1のrankに対して行われているときに、メモリ108の第2のrankに対してリフレッシュ動作が何も行われていない場合、メモリコントローラ106は、受信した第2のrankに対するアクセス要求をスケジューリングキュー1068に直接入れてよいことが理解できるであろう。このスケジューリング方式では、スケジューリングキューにあるアクセス要求のターゲットrankが分散方式で分散されてよく、これにより、第1のrankに対してリフレッシュ動作を行うプロセスでは、リフレッシュ動作プロセスにおけるコンピュータシステム100のシステムオーバヘッドを減らし、コンピュータシステム100の実行効率を向上させるために、メモリコントローラ106は異なるrankに対するアクセス要求を可能な限り多く処理することができる。
本発明の本実施形態において提供されるリフレッシュ方法から、本発明の本実施形態では、メモリリフレッシュプロセスによってコンピュータシステムのパフォーマンスに生じる影響を軽減するために、受信したアクセス要求の状況と、アクセス対象ターゲットrankの状況とが両方とも、ターゲットrankをリフレッシュする必要があるかどうかを判定するために総合的に考慮されることが分かるであろう。このように、メモリコントローラのリフレッシュ時間を、既存のDDRプロトコルとの互換性に基づいて管理することにより、リフレッシュ延期によって生じた受動リフレッシュの増加によるコンピュータシステムのパフォーマンスへの影響が軽減され、メモリリフレッシュの柔軟性が向上し、リフレッシュオーバヘッドが減少する。さらに、本発明の本実施形態では、リフレッシュ動作を第1のrankに対して行う必要がある場合、異なるリフレッシュモードが、ターゲットrankの分布とアクセス要求のタイプ分布とに基づいてさらに選択されてよく、その結果、メモリコントローラのリフレッシュ効率が向上し、コンピュータシステムのパフォーマンスが向上する。
さらに、本発明の本実施形態では、アクセス要求の同時性を向上させて、第1のrankに対するリフレッシュ動作が別のrankに対するアクセス要求の処理に影響を与えないように、複数のバッファレベルがメモリコントローラに構成されてよい。例えば、スケジューリングキュー及びバッファキューが別々に構成されてよい。このように、リフレッシュ動作が第1のrankに対して行われているtRFC期間内に受信する第1のrankに対するアクセス要求が、バッファキューにバッファリングされてよく、その結果、tRFC期間内に受信する第1のrankに対するアクセス要求がスケジューリングキューを混雑させるのを防止し、第1のrankをリフレッシュするプロセスにおいて、別のrankに対するアクセス要求へのメモリコントローラの処理に影響を与えることを防止する。コンピュータシステム全体の処理効率がさらに向上する。
実際の応用では、図4に示す実施形態の各段階は、必ずしも行われないことに留意されたい。例えば、メモリリフレッシュ方法は、図4に示す実施形態におけるシステム全体、例えば、ポーリングプロセスのアクセストラフィック量を基準にして説明されており、段階402が最初に、メモリコントローラ106が受信したアクセス要求の数が第3の閾値より大きいかどうかを判定するために行われてよい。しかしながら、実際の応用では、システム全体のアクセストラフィック量が識別されなくてもよく、代わりに、リフレッシュ対象rankのアクセストラフィック状況に基づいて、処理が直接行われる。この場合、図4の実施形態の段階402は必要ない。言い換えれば、本発明の本実施形態において提供されるリフレッシュ方法は、システムのアクセストラフィックが激しい場合と、システムのアクセストラフィックが少ない場合との両方に用いることができる。本明細書では、いかなる制限も課すことはない。
図5は、本発明の一実施形態によるメモリリフレッシュ装置の概略構造図である。図5に示すメモリリフレッシュ装置500は、図1に示すメモリ108をリフレッシュするように構成される。図5に示すように、メモリリフレッシュ装置500は、受信モジュール502とリフレッシュモジュール506とを含んでよい。メモリ108は複数のrankを含む。
受信モジュール502は、アクセス要求を受信するように構成される。具体的には、受信モジュール502は、コンピュータシステム100の1つ又は複数のCore104から送信されるアクセス要求を受信してよい。受信モジュール502はさらに、メモリ108から返されるデータを受信するように構成されてよいことが理解できるであろう。受信モジュール502は具体的に、メモリコントローラ106とCore104との間に通信インタフェースを、またメモリコントローラ102とメモリ108との間に通信インタフェースを含んでよい。
リフレッシュモジュール506は、第1の期間内に受信したアクセス要求のターゲットrankの数が、指定された第1の閾値より小さく、且つこれらのアクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第2の閾値より大きい場合、複数のrankのうち第1のrankをT/Nの間隔でリフレッシュするように構成される。Tは標準的な平均リフレッシュ間隔を示すのに用いられ、Nは1より大きい整数である。
ある実行可能なケースでは、リフレッシュモジュール506はさらに、第2の期間内に受信したアクセス要求のターゲットrankの数が、指定された第1の閾値以上であるか、又はこれらのアクセス要求のうち読み出し要求若しくは書き込み要求の割合が、指定された第2の閾値以下である場合、第1のrankをTの間隔でリフレッシュするように構成される。
別の実行可能なケースでは、メモリリフレッシュ装置500はさらに、統計モジュール504を含んでよい。統計モジュール504は、受信したアクセス要求の数に関する統計データを収集するように構成される。実際の応用では、統計モジュール404はさらに、各rankにアクセスするためのアクセス要求の数に関する統計データを収集してよい。メモリリフレッシュ装置500が統計モジュール504を含む場合、リフレッシュモジュール506は、統計モジュール504の統計的な結果に基づいて、リフレッシュモードを動的に調整してよいことが理解できるであろう。
別の実行可能なケースでは、受信モジュール502はさらに、第1のリフレッシュ要求を実行するプロセスにおいて、第1のrankにアクセスするための第1のアクセス要求を受信するように構成される。メモリリフレッシュ装置はさらに、バッファモジュール508を含んでよい。バッファモジュール508は、構成されたバッファキューに第1のアクセス要求をバッファリングするように構成される。バッファモジュール508は、少なくともバッファキューとスケジューリングキューとを含む。バッファキューは、リフレッシュ動作が行われているrankに対するアクセス要求をバッファリングするように構成され、スケジューリングキューは、リフレッシュ動作が行われていないrankに送信されるアクセス要求をバッファリングするように構成される。
別の実行可能なケースでは、受信モジュール502はさらに、DRAMの第2のrankにアクセスするための第2のアクセス要求を受信するように構成される。バッファモジュール508は、第2のrankに対してリフレッシュ動作が何も行われていない場合、第2のアクセス要求をスケジューリングキューにバッファリングするように構成される。
別の実行可能なケースでは、リフレッシュモジュールは具体的に、第1の期間内に受信したアクセス要求の数が第3の閾値より大きく、且つ受信したアクセス要求内にある第1のrankにアクセスするためのアクセス要求の数が第4の閾値より小さい場合、第1のrankをT/Nの間隔でリフレッシュするように構成される。第1の期間において、第1のrankにアクセスするためのアクセス要求の数は0より大きい。
別の実行可能なケースでは、リフレッシュモジュールは具体的に、第1の期間内に受信したアクセス要求内にある第1のrankにアクセスするためのアクセス要求の数が第4の閾値以上であり、且つ第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、複数のrankのうち第1のrankをT/Nの間隔でリフレッシュするように構成される。第5の閾値は指定された警告値より小さく、警告値は、第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる。
別の実行可能なケースでは、リフレッシュモジュールは具体的に、第1の期間内に受信したアクセス要求の数が、指定された第3の閾値以下であり、且つ第1のrankに対するアクセス要求の数が0より大きく、且つ第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、複数のrankのうち第1のrankをT/Nの間隔でリフレッシュするように構成される。第5の閾値は指定された警告値より小さく、警告値は、第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる。
図5に示すメモリリフレッシュ装置500内のモジュールは、図2に示すメモリコントローラ内の1つ又は複数の構成要素に別々に位置してよいことが理解できるであろう。本発明の本実施形態では、図5に示す実施形態に含まれるモジュールの一部又は全てが、本実施形態の解決手段の目的を達成するために、実際の要件に応じて選択されてよい。図5の実施形態に詳細に説明されていない内容については、図3及び図4に示す方法の実施形態の関連する説明を参照されたい。
説明した装置の実施形態は、単なる例であることが理解できるであろう。例えば、モジュールの区分は単なる論理的な機能の区分であり、実際に実装する際には他の区分であってもよい。例えば、複数のモジュール若しくは構成要素が組み合わされても、別のシステムに統合されてもよく、又は、一部の特徴が無視されても、実行されなくてもよい。さらに、前述の実施形態で論じたモジュール間の接続が、電気的形態であっても、機械的形態であっても、他の形態であってもよい。別個の部分として説明されたモジュールは、物理的に分かれていてもいなくてもよく、またモジュールとして示された部分は、物理的なモジュールであってもなくてもよい。さらに、本願の実施形態に含まれる機能モジュールが個別に存在してもよく、又は1つの処理モジュールに統合されてもよい。例えば、図5に示す機能モジュールは、図2に示すメモリコントローラに統合されてよい。
本発明の一実施形態がさらに、プログラムコードを格納するコンピュータ可読記憶媒体を含んだ、データ処理用のコンピュータプログラム製品を提供する。プログラムコードに含まれる命令が、前述の方法の実施形態のうちのいずれか1つで説明された方法のプロセスを実行するのに用いられる。当業者であれば、前述の記憶媒体は、プログラムコードを格納できる任意の非一時的(non−transitory)機械可読媒体、例えば、USBフラッシュドライブ、取り外し可能なハードディスク、磁気ディスク、光ディスク、ランダムアクセスメモリ(Random−Access Memory、RAM)、ソリッドステートディスク(Solid State Disk、SSD)、又は不揮発性メモリ(non−volatile memory)などを含んでよいことを理解できるであろう。
本願において提供される実施形態は、単なる例であることに留意されたい。当業者であれば、説明の便宜上、説明を簡潔にするために、前述の実施形態では、これらの実施形態が異なる態様を強調しており、ある実施形態で詳細に説明されていない部分については、別の実施形態の関連する説明を参照してよいことを明確に認識しているであろう。本発明の実施形態、特許請求の範囲、及び添付図面に開示される特徴は、個別に存在しても、組み合わせて存在してもよい。本発明の実施形態においてハードウェア形態で説明された特徴がソフトウェアで実行されても、又はその逆であってもよく、これは本明細書で限定されることはない。
DRAMのDRAM−cellは、行列状に配置される。この行列はDRAM−bankと呼ばれる。DRAM−bankの任意のビットが、対応する行デコーダ及び列デコーダを用いて位置特定され得る。複数のDRAM−bankがDRAM−chipを形成してよく、複数のDRAM−chipがDRAM−rankを形成してよく、複数のDRAM−rankがデュアルインラインメモリモジュール(Dual In−line Memory Modules、DIMM)に統合されてよい。DRAM−cellは、センスアンプ(Sense Amp)によって行ごとにリフレッシュされる。リフレッシュプロセスでは、1つ又は複数のbankの行が、リフレッシュコマンドに従ってリフレッシュされてよい。実際の応用では、リフレッシュは通常、rankを1つの単位として用いて行われる。具体的には、rankにある全てのbankの行を、保持時間(retention time)内に少なくとも一度リフレッシュする必要がある。保持時間とは、DRAM−cell内のデータをリフレッシュ動作なしで保持できる時間のことである。
第1の態様によると、本願はメモリリフレッシュ方法を提供する。本メモリリフレッシュ方法は、メモリコントローラ及びダイナミックランダムアクセスメモリDRAMを含むコンピュータシステムに適用され、DRAMは複数のrankを含む。本方法では、メモリコントローラはアクセス要求を受信する。第1の期間内に受信したアクセス要求のターゲットrankの数が、指定された第1の閾値より小さく、且つこれらのアクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第2の閾値より大きい場合、メモリコントローラは、複数のrankのうち第1のrankをT/Nの間隔でリフレッシュする。Tは標準的な平均リフレッシュ間隔を示すのに用いられ、Nは1より大きい整数である。
第1の態様又は第1の態様の第1の実行可能な実装例に関連して、第2の実行可能な実装例では、本方法はさらに、第1のrankをリフレッシュするプロセスにおいてメモリコントローラが、第1のrankにアクセスするための第1のアクセス要求を受信する段階と、メモリコントローラが、構成されたバッファキューに第1のアクセス要求をバッファリングする段階とを含む。メモリコントローラは、少なくともバッファキュー及びスケジューリングキューを含み、バッファキューは、リフレッシュ動作が行われているrankに対するアクセス要求をバッファリングするように構成され、スケジューリングキューは、リフレッシュ動作が行われていないrankに送信されるアクセス要求をバッファリングするように構成される。このように、第1のrankをリフレッシュするプロセスにおいて受信される、第1のrankに対するアクセス要求は、スケジューリングキューを混雑させることと、メモリコントローラによる別のrankに対するアクセス要求の処理に影響を与えることとを防止することができる。コンピュータシステム全体の処理効率がさらに向上する。
第3の態様によれば、本願はメモリコントローラを提供する。メモリコントローラは、通信インタフェースとリフレッシュ回路とを含む。通信インタフェースは、コンピュータシステム内のプロセッサから送信されるアクセス要求を受信するように構成される。第1の期間内に受信したアクセス要求のターゲットrankの数が、指定された第1の閾値より小さく、且つこれらのアクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第2の閾値より大きい場合、リフレッシュ回路は、ダイナミックランダムアクセスメモリ(DRAM)の複数のrankのうち第1のrankをT/Nの間隔でリフレッシュするように構成される。Tは標準的な平均リフレッシュ間隔を示すのに用いられ、Nは1より大きい整数である。
第3の態様及び第3の態様の第1の実行可能な実装例に関連して、第2の実行可能な実装例では、通信インタフェースはさらに、第1のrankをリフレッシュするプロセスにおいて、第1のrankにアクセスするための第1のアクセス要求を受信するように構成される。メモリコントローラはさらに、バッファを含む。バッファは、構成されたバッファキューに第1のアクセス要求をバッファリングするように構成される。バッファは、少なくともバッファキューとスケジューリングキューとを含む。バッファキューは、リフレッシュ動作が行われているrankに対するアクセス要求をバッファリングするように構成され、スケジューリングキューは、リフレッシュ動作が行われていないrankに送信されるアクセス要求をバッファリングするように構成される。
本発明の実施形態における技術的解決手段をより明確に説明するために、以下では、これらの実施形態を説明するのに必要な添付図面を簡潔に説明する。以下の説明にある添付図面は、本発明のほんの一部の実施形態を示しているだけであることは明らかである。
メモリコントローラ(Memory Controller)106は、コンピュータシステム100の内部にある、メモリ108を制御するバス回路コントローラであり、メモリ108からCore104へのデータ伝送を管理し計画するように構成される。メモリ108は、メモリコントローラ106を介してCore104とデータをやり取りしてよい。メモリコントローラ106は、別個のチップであってよく、システムバスを介してCore104に接続されてよい。当業者であれば、メモリコントローラ106は(図1に示すように)プロセッサ102に統合されてもよく、又はノースブリッジに組み込まれてもよいことを認識しているであろう。メモリコントローラ106の具体的な位置は、本発明の本実施形態では限定されない。実際の応用では、メモリコントローラ106は、データをメモリ108に書き込むか、又はデータをメモリ108から読み出すために必要なロジックを制御してよい。
メモリ108は、コンピュータシステム100のメインメモリである。メモリ108は、ダブルデータレート(double data rate、DDR)バスを介してプロセッサ102に接続される。メモリ108は通常、オペレーティングシステム上で現在動いている様々なソフトウェアを格納し、データ、及び外部記憶装置とやり取りされる情報を入出力するように構成される。プロセッサ102のアクセス速度を上げるために、メモリ108は、アクセス速度が高いという利点を有する必要がある。従来のコンピュータシステムアーキテクチャでは、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)がメモリ108として通常用いられている。プロセッサ102は、メモリコントローラ106を介して高速でメモリ108にアクセスし、メモリ108の任意の記憶単位に対して読み出し動作及び書き込み動作を行うことができる。
さらに、当業者であれば、異なるリフレッシュモードが異なるリフレッシュ頻度を有することを認識しているであろう。ダブルデータレート(double data rate、DDR)プロトコルでは、3つのリフレッシュモード、つまり1Xモード、2Xモード、及び4Xモードを指定している。1Xモードでは、DDRプロトコルで指定されたtREFI(base)の間隔で、リフレッシュ動作がメモリチップに対して行われ、1つのリフレッシュ要求を実行する時間がtRFC1である。2Xモードでは、tREFI(base)/2の間隔でメモリチップに対してリフレッシュ動作が行われ、1つのリフレッシュ要求を実行する時間がtRFC2である。4Xモードでは、tREFI(base)/4の間隔でメモリチップに対してリフレッシュ動作が行われ、1つのリフレッシュ要求を実行する時間がtRFC3であり、tRFC1>tRFC2>tRFC3という関係になる。tREFI(base)は、このコンピュータシステムが準拠するDDRプロトコルにおいて規定される標準的な平均リフレッシュ間隔を示すのに用いられる。通常、tREFI(base)は、DRAMチップの表面温度が標準温度範囲内(0℃から85℃)であるという条件において、1XモードのtREFIを示すのに用いられる。DDR4規格によれば、tREFI及びtRFCの値は、実際の状況に応じて設定されてよい。例えば、8Gbの容量を有する、1X構成のDRAM−chipの場合、tREFIは7.8マイクロ秒であってよく、tRFCは350ナノ秒であってよい。4X構成では、tREFIは1.95マイクロ秒であってよく、tRFCは160ナノ秒であってよい。動的なリフレッシュモード調整が、DDR4プロトコルにおいてサポートされる。DDR4プロトコルによれば、メモリリフレッシュプロセスにおいて、メモリリフレッシュモードが、1Xモード、2Xモード、及び4Xモードの間で、あるモードから別のモードに切り替えられてよい。
当業者であれば、メモリ108の複数のrankに対するリフレッシュ動作が独立していることを認識しているであろう。研究過程において、リフレッシュプロセスでは、異なるリフレッシュモードが異なるリフレッシュ頻度を有し、異なるリフレッシュ頻度が異なるバス利用率につながるので、リフレッシュプロセスでは、リフレッシュモードの選択もシステムパフォーマンスに影響を与えることが分かっている。さらに、DRAMをリフレッシュするプロセスでは、リフレッシュ中のrankがリフレッシュプロセスの間に要求に応答できないので、システムのリフレッシュオーバヘッドをもたらす。さらに、リフレッシュプロセスの間に、リフレッシュ中のrankに対する要求がスケジューリングキューを混雑させるため、別のrankに対する要求がスケジューリングキューに入ることができず、その結果、当該別のrankに時間内に送信されないという事態が生じる。このことも、総合的なシステムパフォーマンスに影響を与える原因である。
コンピュータシステムのリフレッシュオーバヘッドを減らし、リフレッシュプロセスにおけるコンピュータシステムの総合的なパフォーマンスを向上させるために、本発明の一実施形態がメモリリフレッシュ方法を提供し、これにより、メモリスケジューリングポリシーを向上させることができ、リフレッシュ頻度を動的に調整することで、システムバス利用率を向上させることができる。さらに、スケジューリングキューでのリフレッシュ動作の混雑が原因で、別のrankに対する要求を実行できないという事態も回避することができる。したがって、リフレッシュオーバヘッドを減らすことができ、リフレッシュプロセスにおけるシステムパフォーマンスを向上させることができる。以下では、本発明の本実施形態において提供されるコンピュータシステムのメモリリフレッシュ手法を、図を参照して詳細に説明する。
図2は、本発明の一実施形態によるメモリコントローラ106の概略構造図である。明解な説明を目的に、図2も、メモリコントローラ106とプロセッサコア104との間、及びメモリコントローラ106とメモリ108との間の接続を概略的に示す。メモリ108は、rank0、rank1、及びrank2などの複数のrankを含んでよい。図2に示すように、メモリコントローラ106は、通信インタフェース1061、統計モジュール1062、リフレッシュ回路1064、バッファキュー1066、スケジューリングキュー1068、及びスケジューラ1069を含んでよい。
リフレッシュ回路1064は、統計モジュール1062の統計的な結果に基づくtREFI時間の間隔で、リフレッシュ要求を生成するかどうかを判定し、生成されたリフレッシュ要求をスケジューリングキューに入れるように構成される。例えば、あるrankに対するアクセス要求の数が指定された閾値より小さいことを、統計モジュール1062が統計データ収集を通じて取得した場合、リフレッシュ回路1064は、当該rankに対するリフレッシュ要求を生成し、当該リフレッシュ要求をスケジューリングキュー1068に入れてよい。実際の応用では、リフレッシュ回路1064により生成されたリフレッシュ要求が、代替的にスケジューラ1069に直接送信されてもよく、これにより、スケジューラ1069は、生成されたリフレッシュ要求をメモリ108に送信し、メモリ108は、生成されたリフレッシュ要求に従って、対応するrankに対してリフレッシュ動作を行うことが理解できるであろう。tREFIは、平均リフレッシュ間隔を示すのに用いられることに留意されたい。実際の応用では、リフレッシュ回路1064は代替的に、tREFIより短い間隔でリフレッシュ要求を生成してもよい。例えば、再リフレッシュを行う必要がある場合、リフレッシュ回路1064は、tREFIより短い間隔でリフレッシュ要求を生成してよい。さらに、当業者であれば、tREFIが異なるリフレッシュモードによって変わることを認識しているであろう。
上述したように、ダブルデータレート(double data rate、DDR)プロトコルは、3つのリフレッシュモード、つまり1Xモード、2Xモード、及び4Xモードを指定している。本発明の本実施形態では、リフレッシュモードは、少なくとも第1のリフレッシュモード及び第2のリフレッシュモードを含んでよい。第1のリフレッシュモードでは、メモリコントローラはtREFI(base)/Nの間隔でリフレッシュを行う。第2のリフレッシュモードでは、メモリコントローラはtREFI(base)の間隔でリフレッシュを行う。例えば、第1のリフレッシュモードは4Xモードであってよく、第2のリフレッシュモードは1Xモードを含んでよい。tREFI(base)は、DDRプロトコルで規定される標準的な平均リフレッシュ間隔を示すのに用いられ、Nは1より大きい整数である。通常、tREFI(base)は、DRAMチップの表面温度が標準温度範囲内(0℃から85℃)であるという条件において、1XモードのtREFIを示すのに用いられる。説明しやすいように、tREFI(base)は、本発明の本実施形態においてTで示されてもよい。
メモリシステムの場合、リフレッシュ頻度の減少が、リフレッシュ延期の減少よりもシステムパフォーマンス向上にとって重要である。したがって、通常、4Xモードでリフレッシュを行うと、1Xモードでリフレッシュを行うよりもシステムパフォーマンスが低くなる。さらに、比較的高い割合の読み出し要求又は書き込み要求がアクセス要求内にある場合、メモリ108は、読み出しと書き込みとの間の切り替え回数が比較的少数であることに起因して、比較的高い帯域幅利用率を有する。しかしながら、本発明を実装するプロセスでは、DDRプロトコルが4つのアクティブウィンドウ(Four Active Window、tFAW)を指定しているので、複数のアクセス要求に対して、比較的少数のアクセス対象ターゲットrankしかない場合、言い換えれば、複数のアクセス要求がメモリ108の比較的少数のrankに集中した場合、tFAW時間ウィンドウでは、同時に動作可能な1つのrankの行の数が制限されるので、その代わりに総合的なシステムパフォーマンスが低下することが分かる。tFAWは、tFAW時間ウィンドウ内で、1つのrankが、最大で4つの行アクティブコマンドを送信することが可能であることを意味する。メモリ108の2つのrankを一例にとってみる。読み出し要求又は書き込み要求の割合が比較的高く、アクセス要求が複数のrankのうちの1つに集中している場合、その他のrankはリフレッシュ中である。リフレッシュ時間が長いほど、単一のrankのアクセス期間が長く、総合的なシステムパフォーマンスの低下が大きいことを示す。
本発明を実施するプロセスでは、4Xモードと1Xモードとを比較すると、4Xモードでのリフレッシュに対する1回のリフレッシュ時間tRFC3が比較的短いので、1回のリフレッシュプロセスでは、tFAW制限によってシステムに生じる影響が比較的小さく、総合的なシステムパフォーマンスの低下が比較的小さいことが分かる。したがって、本発明の本実施形態において、総合的なシステムパフォーマンスを向上させ、システム上のtFAW制限を減らすために、本発明の一実施形態において提供されるメモリリフレッシュ方法では、リフレッシュモードを動的に調整することができ、システムのリフレッシュオーバヘッドを減らし、システムパフォーマンスを向上させることができる。
以下では、本発明の一実施形態において提供されるメモリリフレッシュ方法を、図を参照して詳細に説明する。図3は、本発明の一実施形態によるメモリリフレッシュ方法のフローチャートである。図3に示すメモリリフレッシュ方法は、図1及び図2に示すメモリコントローラ106により実行されてよい。図3に示すように、本方法は以下の段階を含んでよい。
本発明の本実施形態では、1つのリフレッシュポーリングプロセスが、説明の一例として用いられる。この段階では、第1のリフレッシュポーリングプロセスにおいて、メモリコントローラ106内のリフレッシュ回路1064が、統計モジュール1062により統計データ収集を通じて取得されたアクセス要求のアクセス対象ターゲットrankの分布に基づいて、第1の期間内にメモリコントローラ106が受信したアクセス要求のターゲットrankの数が、指定された第1の閾値より小さいかどうかを判定してよい。本発明の本実施形態では、ターゲットrankとは、アクセス要求を用いてアクセスされるrankである。ターゲットrankの数は、アクセス要求を用いてアクセスされるrankの数である。あるケースでは、リフレッシュポーリングプロセスにおいて、メモリコントローラ106は、統計モジュール1062により統計データ収集を通じて取得された、メモリコントローラ106にバッファリングされている処理対象アクセス要求のターゲットrankの数に基づいて、ターゲットrankの数が、指定された第1の閾値より大きいかどうかを判定してよい。別のケースでは、メモリコントローラ106は、統計モジュール1062により統計データ収集を通じて取得された、指定期間内にメモリコントローラ106が受信したアクセス要求のターゲットrankの数に基づいて、ターゲットrankの数が第1の閾値より大きいかどうかを判定してよい。指定期間は、tREFI以下の期間であってよい。第1の閾値は0より大きく、第1の閾値はメモリ108のrank総数より小さい。実際の応用では、第1の閾値はメモリ108のrank総数に基づいて決定されてよい。例えば、第1の閾値は、DRAMのrank総数の半分に設定されてよい。アクセス要求のターゲットrankの数が第1の閾値より小さい場合、本方法は段階304に進む。アクセス要求のターゲットrankの数が第1の閾値以上である場合、本方法は段階308に進む。
段階404において、メモリコントローラ106は、第1のrankにアクセスするためのアクセス要求の数が第4の閾値より小さいかどうかを判定する。第1のrankは、メモリ108の任意のランクであってよい。本発明の本実施形態では、メモリコントローラ106は、統計モジュール1062により統計データ収集を通じて取得された、第1のrankに対するアクセス要求の数に基づいて、第1のrankに対するアクセス要求の数が第4の閾値より小さいかどうかを判定してよい。第4の閾値は具体的に、応用シナリオに応じて設定されてよく、第4の閾値は0より大きい。第1のrankにアクセスするためのアクセス要求の数が第4の閾値より小さい場合、本方法は段階410に進む。第1のrankにアクセスするためのアクセス要求の数が第4の閾値以上である場合、本方法は段階408に進む。第1のrankに対するアクセス要求の数は、段階402で指定された期間内にメモリコントローラ106が受信する第1のrankに対するアクセス要求の数であってもよく、又はメモリコントローラ106にバッファリングされている第1のrankに対する処理対象アクセス要求の数であってもよいことに留意されたい。
本発明の本実施形態では、延期カウンタ(図2には示されていない)がリフレッシュ回路1064に配置されてよく、延期カウンタは、第1のrankに対する延期されたリフレッシュの数に関する統計データを収集するように構成されてよい。実際の応用では、延期カウンタは代替的に、リフレッシュ回路1064から独立して配置されてもよい。別のケースでは、延期カウンタが配置されなくてもよく、代わりに、第1のrankに対する延期されたリフレッシュの数は、ソフトウェアを用いて統計データ収集を通じて取得される。本発明の本実施形態では、第1のrankに対する延期されたリフレッシュの数を、統計データ収集を通じて具体的に取得する方式に関して、いかなる制限も課すことはない。
段階412において、メモリコントローラ106は、第1のrankに対するリフレッシュ動作を延期する。具体的には、段階408において、第1のrankに対する延期されたリフレッシュ動作の数が第5の閾値以下であると、メモリコントローラ106が判定した場合、メモリコントローラは、第1のrankに対するリフレッシュ動作を延期し、延期カウンタの値に1を加える。言い換えれば、メモリコントローラ106が段階406を通じて、第1のrankがアイドル状態ではないと判定した場合、すなわち、第1のrankに対するアクセス要求が処理中である場合、又はスケジューリングキューが第1のrankに対するアクセス要求をまだ含んでいる場合、第1のrankに対する延期されたリフレッシュの数が第5の閾値に達していなければ、第1のrankに対する比較的多数のアクセス要求があるとみなされてよい。パフォーマンスへの影響を回避するために、第1のrankに対してリフレッシュ動作は行われず、第1のrankに対するリフレッシュ動作は、次のポーリングプロセスで行われる。上述したように、第5の閾値は、指定された警告値より小さい。警告値は、第1のrankに対して延期可能なリフレッシュコマンドの最大数に基づいて決定されてよい。警告値は、第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる。言い換えれば、警告値は、第1のrankに対してリフレッシュ動作を強制的に行うようメモリコントローラ106に命令するのに用いられる。
ケース2:メモリコントローラ106が受信したアクセス要求の数が第3の閾値より大きく、且つ第1のrankにアクセスするためのアクセス要求の数が第4の閾値以上であり、且つ第1のrankに対する延期されたリフレッシュの数が第5の閾値より大きい場合、メモリコントローラ106は、図3に示すメモリリフレッシュ方法に従って決定されたリフレッシュモードで、第1のrankに対してリフレッシュ動作を行ってよい。言い換えれば、コンピュータシステム100内のメモリアクセストラフィックが比較的激しく、且つ第1のrankに対するアクセス要求の数も比較的大きい場合、第1のrankに対する延期されたリフレッシュの数が第5の閾値より大きければ、第1のrankに対する延期されたリフレッシュの数が警告値に達したために強制的なリフレッシュを行う必要がある可能性を回避し、受動リフレッシュの増加によってコンピュータシステムのパフォーマンスに生じる影響を軽減するために、第1のrankに対してリフレッシュ動作を直ちに行う必要があり、これによってメモリリフレッシュの柔軟性が向上する。第3の閾値は、実際の応用では警告値を基準にして指定される閾値であり、これにより、コンピュータシステムは、パフォーマンスに影響を与えることなく、特定の範囲内でリフレッシュを延期することができるので、メモリリフレッシュの柔軟性が向上することが理解できるであろう。
ケース3:メモリコントローラ106が受信したアクセス要求の数は第3の閾値より大きく、且つ第1のrankにアクセスするためのアクセス要求の数が第4の閾値以上であり、且つ第1のrankに対する延期されたリフレッシュの数が第5の閾値以下である場合、第1のrankに対するリフレッシュ動作は延期されてよい。言い換えれば、本発明の本実施形態では、コンピュータシステム100のメモリアクセストラフィックが比較的激しく、且つ第1のrankに対するアクセス要求の数も比較的大きい場合、第1のrankに対する延期されたリフレッシュの数が、予め設定した第5の閾値に達していない限り、スケジューリングキュー1068にある第1のrankに対するアクセス要求の処理に影響を与えることを回避するために、第1のrankに対するリフレッシュ動作は延期されてよい。
ケース6:メモリコントローラ106が受信したアクセス要求の数が第3の閾値以下であり、且つ第1のrankがアイドル状態ではなく、且つ第1のrankに対する延期されたリフレッシュの数が第5の閾値以下である場合、メモリコントローラ106は、第1のrankに対するリフレッシュ動作を延期してよい。言い換えれば、コンピュータシステム100のメモリトラフィックが比較的少ないが、第1のrankが比較的ビジーの状態にあるときに、第1のrankに対するアクセス要求を可能な限り多く処理するために、第1のrankに対する延期されたリフレッシュの数がまだ第5の閾値以下の場合には、第1のrankに対するリフレッシュ動作を延期してよい。
さらに、メモリコントローラ106は、リフレッシュ動作が第1のrankに対して行われているtRFC期間内に、第1のrankに対するアクセス要求に応答することができない。したがって、第1のrankに対するアクセス要求が、スケジューリングキュー1068を混雑させたり、別のrank(例えば第2のrank)に対するアクセス要求がスケジューリングキュー1068に入ることができないことを生じさせたり、またシステムパフォーマンスに影響を与えたりすることを防止するために、本発明の本実施形態では、リフレッシュ動作が第1のrankに対して行われているときに、メモリコントローラ106が第1のrankに対するアクセス要求を受信した場合、メモリコントローラ106は第1のrankに対するアクセス要求をバッファキュー1066に入れてよい。メモリコントローラ106が第1のrankに対してリフレッシュ動作を行った後に、バッファキュー1066にある第1のrankに対するアクセス要求は、バッファキュー1066からスケジューリングキュー1068に入れられる。さらに、本発明の本実施形態では、第1のrankに対するリフレッシュ動作が行われた後に、メモリコントローラ106は、続いて新たに受信する第1のrankに対するアクセス要求を、バッファキュー1066ではなく、スケジューリングキュー1068に直接入れてよい。
受信モジュール502は、アクセス要求を受信するように構成される。具体的には、受信モジュール502は、コンピュータシステム100の1つ又は複数のCore104から送信されるアクセス要求を受信してよい。受信モジュール502はさらに、メモリ108から返されるデータを受信するように構成されてよいことが理解できるであろう。受信モジュール502は具体的に、メモリコントローラ106とCore104との間に通信インタフェースを、またメモリコントローラ106とメモリ108との間に通信インタフェースを含んでよい。
別の実行可能なケースでは、メモリリフレッシュ装置500はさらに、統計モジュール504を含んでよい。統計モジュール504は、受信したアクセス要求の数に関する統計データを収集するように構成される。実際の応用では、統計モジュール504はさらに、各rankにアクセスするためのアクセス要求の数に関する統計データを収集してよい。メモリリフレッシュ装置500が統計モジュール504を含む場合、リフレッシュモジュール506は、統計モジュール504の統計的な結果に基づいて、リフレッシュモードを動的に調整してよいことが理解できるであろう。
別の実行可能なケースでは、受信モジュール502はさらに、第1のrankをリフレッシュするプロセスにおいて、第1のrankにアクセスするための第1のアクセス要求を受信するように構成される。メモリリフレッシュ装置はさらに、バッファモジュール508を含んでよい。バッファモジュール508は、構成されたバッファキューに第1のアクセス要求をバッファリングするように構成される。バッファモジュール508は、少なくともバッファキューとスケジューリングキューとを含む。バッファキューは、リフレッシュ動作が行われているrankに対するアクセス要求をバッファリングするように構成され、スケジューリングキューは、リフレッシュ動作が行われていないrankに送信されるアクセス要求をバッファリングするように構成される。
別の実行可能なケースでは、リフレッシュモジュール506は具体的に、第1の期間内に受信したアクセス要求の数が第3の閾値より大きく、且つ受信したアクセス要求内にある第1のrankにアクセスするためのアクセス要求の数が第4の閾値より小さい場合、第1のrankをT/Nの間隔でリフレッシュするように構成される。第1の期間において、第1のrankにアクセスするためのアクセス要求の数は0より大きい。
別の実行可能なケースでは、リフレッシュモジュール506は具体的に、第1の期間内に受信したアクセス要求内にある第1のrankにアクセスするためのアクセス要求の数が第4の閾値以上であり、且つ第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、複数のrankのうち第1のrankをT/Nの間隔でリフレッシュするように構成される。第5の閾値は指定された警告値より小さく、警告値は、第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる。
別の実行可能なケースでは、リフレッシュモジュール506は具体的に、第1の期間内に受信したアクセス要求の数が、指定された第3の閾値以下であり、且つ第1のrankに対するアクセス要求の数が0より大きく、且つ第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、複数のrankのうち第1のrankをT/Nの間隔でリフレッシュするように構成される。第5の閾値は指定された警告値より小さく、警告値は、第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる。
本願において提供される実施形態は、単なる例であることに留意されたい。当業者であれば、説明の便宜上、説明を簡潔にするために、前述の実施形態では、これらの実施形態が異なる態様を強調しており、ある実施形態で詳細に説明されていない部分については、別の実施形態の関連する説明を参照してよいことを明確に認識しているであろう。本発明の実施形態、特許請求の範囲、及び添付図面に開示される特徴は、個別に存在しても、組み合わせて存在してもよい。本発明の実施形態においてハードウェア形態で説明された特徴がソフトウェアで実行されても、又はその逆であってもよく、これは本明細書で限定されることはない。
(項目1)
メモリコントローラとダイナミックランダムアクセスメモリDRAMとを有するコンピュータシステムに適用されるメモリリフレッシュ方法であって、上記DRAMは複数のrankを含み、
上記方法は、
上記メモリコントローラがアクセス要求を受信する段階と、
第1の期間内に受信したアクセス要求のターゲットrankの数が、指定された第1の閾値より小さく、且つ上記アクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第2の閾値より大きい場合、上記メモリコントローラが上記複数のrankのうち第1のrankをT/Nの間隔でリフレッシュする段階であって、Tは標準的な平均リフレッシュ間隔を示すのに用いられ、Nは1より大きい整数である、段階と
を備える、方法。
(項目2)
上記方法はさらに、
第2の期間内に受信したアクセス要求のターゲットrankの数が、上記指定された第1の閾値以上であるか、又は上記アクセス要求のうち読み出し要求若しくは書き込み要求の割合が、上記指定された第2の閾値以下である場合、上記メモリコントローラが上記第1のrankをTの間隔でリフレッシュする段階を備える、項目1に記載の方法。
(項目3)
上記方法はさらに、
上記第1のリフレッシュ要求を実行するプロセスにおいて上記メモリコントローラが、上記第1のrankにアクセスするための第1のアクセス要求を受信する段階と、
上記メモリコントローラが、構成されたバッファキューに上記第1のアクセス要求をバッファリングする段階であって、上記メモリコントローラは少なくとも上記バッファキュー及びスケジューリングキューを有し、上記バッファキューは、リフレッシュ動作が行われているrankに対するアクセス要求をバッファリングするように構成され、上記スケジューリングキューは、リフレッシュ動作が行われていないrankに送信されるアクセス要求をバッファリングするように構成される、段階と
を備える、項目1又は2に記載の方法。
(項目4)
上記方法はさらに、
上記DRAMの第2のrankにアクセスするための第2のアクセス要求を上記メモリコントローラが受信する段階と、
上記第2のrankに対してリフレッシュ動作が何も行われていない場合、上記スケジューリングキューにある上記第2のアクセス要求を上記メモリコントローラがバッファリングする段階と
を備える、項目3に記載の方法。
(項目5)
上記メモリコントローラが上記複数のrankのうち第1のrankをT/Nの間隔で上記リフレッシュする段階は、
上記第1の期間内に受信した上記アクセス要求の数が第3の閾値より大きく、且つ受信した上記アクセス要求内にある上記第1のrankにアクセスするためのアクセス要求の数が第4の閾値より小さい場合、上記メモリコントローラが上記第1のrankを上記T/Nの間隔でリフレッシュする段階であって、上記第1の期間において、上記第1のrankにアクセスするための上記アクセス要求の上記数は0より大きい、段階を有する、項目1から4のいずれか一項に記載の方法。
(項目6)
上記メモリコントローラが上記複数のrankのうち第1のrankをT/Nの間隔で上記リフレッシュする段階は、
上記第1の期間内に受信した上記アクセス要求内にある上記第1のrankにアクセスするためのアクセス要求の数が第4の閾値以上であり、且つ上記第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、上記メモリコントローラが上記複数のrankのうち上記第1のrankを上記T/Nの間隔でリフレッシュする段階であって、上記第5の閾値は、指定された警告値より小さく、上記警告値は、上記第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、段階を有する、項目1から4のいずれか一項に記載の方法。
(項目7)
上記複数のrankのうち第1のrankをT/Nの間隔で上記リフレッシュする段階は、
上記第1の期間内に受信した上記アクセス要求の数が、指定された第3の閾値以下であり、且つ上記第1のrankに対するアクセス要求の数が0より大きく、且つ上記第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、上記メモリコントローラが上記複数のrankのうち上記第1のrankを上記T/Nの間隔でリフレッシュする段階であって、上記第5の閾値は、指定された警告値より小さく、上記警告値は、上記第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、段階を有する、項目1から4のいずれか一項に記載の方法。
(項目8)
メモリコントローラと、上記メモリコントローラに接続されたダイナミックランダムアクセスメモリDRAMとを備えるコンピュータシステムであって、上記DRAMは複数のrankを含み、
上記メモリコントローラは、
アクセス要求を受信することと、
第1の期間内に受信したアクセス要求のターゲットrankの数が、指定された第1の閾値より小さく、且つ上記アクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第2の閾値より大きい場合、上記複数のrankのうち第1のrankをT/Nの間隔でリフレッシュすることであって、Tは標準的な平均リフレッシュ間隔を示すのに用いられ、Nは1より大きい整数である、リフレッシュすることと
を行うように構成される、コンピュータシステム。
(項目9)
上記メモリコントローラはさらに、
第2の期間内に受信したアクセス要求のターゲットrankの数が、上記指定された第1の閾値以上であるか、又は上記アクセス要求のうち読み出し要求若しくは書き込み要求の割合が、上記指定された第2の閾値以下である場合、上記第1のrankをTの間隔でリフレッシュするように構成される、項目8に記載のコンピュータシステム。
(項目10)
上記メモリコントローラはさらに、
上記第1のリフレッシュ要求を実行するプロセスにおいて、上記第1のrankにアクセスするための第1のアクセス要求を受信することと、
上記第1のアクセス要求をバッファキューにバッファリングすることであって、上記メモリコントローラは少なくとも上記バッファキュー及びスケジューリングキューを有し、上記バッファキューは、リフレッシュ動作が行われているrankに対するアクセス要求をバッファリングするように構成され、上記スケジューリングキューは、リフレッシュ動作が行われていないrankに送信されるアクセス要求をバッファリングするように構成される、バッファリングすることと
を行うように構成される、項目8又は9に記載のコンピュータシステム。
(項目11)
上記メモリコントローラはさらに、
上記DRAMの第2のrankにアクセスするための第2のアクセス要求を受信し、
上記第2のrankに対してリフレッシュ動作が何も行われていない場合、上記第2のアクセス要求を上記スケジューリングキューにバッファリングする
ように構成される、項目10に記載のコンピュータシステム。
(項目12)
上記メモリコントローラは具体的に、
上記第1の期間内に受信した上記アクセス要求の数が第3の閾値より大きく、且つ受信した上記アクセス要求内にある上記第1のrankにアクセスするためのアクセス要求の数が第4の閾値より小さい場合、上記第1のrankを上記T/Nの間隔でリフレッシュすることであって、上記第1の期間において、上記第1のrankにアクセスするための上記アクセス要求の上記数は0より大きい、リフレッシュすることを行うように構成される、項目8から11のいずれか一項に記載のコンピュータシステム。
(項目13)
上記メモリコントローラは具体的に、
上記第1の期間内に受信した上記アクセス要求内にある上記第1のrankにアクセスするためのアクセス要求の数が第4の閾値以上であり、且つ上記第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、上記第1のrankを上記T/Nの間隔でリフレッシュすることであって、上記第5の閾値は、指定された警告値より小さく、上記警告値は、上記第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、項目8から11のいずれか一項に記載のコンピュータシステム。
(項目14)
上記メモリコントローラは具体的に、
上記第1の期間内に受信した上記アクセス要求の数が、指定された第3の閾値以下であり、且つ上記第1のrankに対するアクセス要求の数が0より大きく、且つ上記第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、上記第1のrankを上記T/Nの間隔でリフレッシュすることであって、上記第5の閾値は、指定された警告値より小さく、上記警告値は、上記第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、項目8から11のいずれか一項に記載のコンピュータシステム。
(項目15)
コンピュータシステム内のプロセッサにより送信されるアクセス要求を受信するように構成された通信インタフェースと、
第1の期間内に受信したアクセス要求のターゲットrankの数が、指定された第1の閾値より小さく、且つ上記アクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第2の閾値より大きい場合、上記複数のrankのうち第1のrankをT/Nの間隔でリフレッシュするように構成されたリフレッシュ回路であって、Tは標準的な平均リフレッシュ間隔を示すのに用いられ、Nは1より大きい整数である、リフレッシュ回路と
を備える、メモリコントローラ。
(項目16)
上記リフレッシュ回路はさらに、
第2の期間内に受信したアクセス要求のターゲットrankの数が、上記指定された第1の閾値以上であるか、又は上記アクセス要求のうち読み出し要求若しくは書き込み要求の割合が、上記指定された第2の閾値以下である場合、上記第1のrankをTの間隔でリフレッシュするように構成される、項目15に記載のメモリコントローラ。
(項目17)
上記通信インタフェースはさらに、上記第1のリフレッシュ要求を実行するプロセスにおいて、上記第1のrankにアクセスするための第1のアクセス要求を受信するように構成され、
上記メモリコントローラはさらに、
上記第1のアクセス要求を、構成されたバッファキューにバッファリングするように構成されたバッファであって、上記バッファは少なくとも上記バッファキュー及びスケジューリングキューを含み、上記バッファキューは、リフレッシュ動作が行われているrankに対するアクセス要求をバッファリングするように構成され、上記スケジューリングキューは、リフレッシュ動作が行われていないrankに送信されるアクセス要求をバッファリングするように構成される、バッファを備える、項目15又は16に記載のメモリコントローラ。
(項目18)
上記通信インタフェースはさらに、上記DRAMの第2のrankにアクセスするための第2のアクセス要求を受信するように構成され、
上記バッファはさらに、上記第2のrankに対してリフレッシュ動作が何も行われていない場合、上記第2のアクセス要求を上記スケジューリングキューにバッファリングするように構成される、項目17に記載のメモリコントローラ。
(項目19)
上記リフレッシュ回路は具体的に、
上記第1の期間内に受信した上記アクセス要求の数が第3の閾値より大きく、且つ受信した上記アクセス要求内にある上記第1のrankにアクセスするためのアクセス要求の数が第4の閾値より小さい場合、上記第1のrankを上記T/Nの間隔でリフレッシュすることであって、上記第1の期間において、上記第1のrankにアクセスするための上記アクセス要求の上記数は0より大きい、リフレッシュすることを行うように構成される、項目15から18のいずれか一項に記載のメモリコントローラ。
(項目20)
上記リフレッシュ回路は具体的に、
上記第1の期間内に受信した上記アクセス要求内にある上記第1のrankにアクセスするためのアクセス要求の数が第4の閾値以上であり、且つ上記第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、上記複数のrankのうち上記第1のrankを上記T/Nの間隔でリフレッシュすることであって、上記第5の閾値は、指定された警告値より小さく、上記警告値は、上記第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、項目15から18のいずれか一項に記載のメモリコントローラ。
(項目21)
上記リフレッシュ回路は具体的に、
上記第1の期間内に受信した上記アクセス要求の数が、指定された第3の閾値以下であり、且つ上記第1のrankに対するアクセス要求の数が0より大きく、且つ上記第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、上記複数のrankのうち上記第1のrankを上記T/Nの間隔でリフレッシュすることであって、上記第5の閾値は、指定された警告値より小さく、上記警告値は、上記第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、項目15から18のいずれか一項に記載のメモリコントローラ。
(項目22)
コンピュータシステム内のダイナミックランダムアクセスメモリDRAMをリフレッシュするように構成されるメモリリフレッシュ装置であって、上記DRAMは複数のrankを含み、
上記メモリリフレッシュ装置は、
アクセス要求を受信するように構成された受信モジュールと、
第1の期間内に受信したアクセス要求のターゲットrankの数が、指定された第1の閾値より小さく、且つ上記アクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第2の閾値より大きい場合、上記複数のrankのうち第1のrankをT/Nの間隔でリフレッシュするように構成されたリフレッシュモジュールであって、Tは標準的な平均リフレッシュ間隔を示すのに用いられ、Nは1より大きい整数である、リフレッシュモジュールと
を備える、メモリリフレッシュ装置。
(項目23)
上記リフレッシュモジュールはさらに、
第2の期間内に受信したアクセス要求のターゲットrankの数が、上記指定された第1の閾値以上であるか、又は上記アクセス要求のうち読み出し要求若しくは書き込み要求の割合が、上記指定された第2の閾値以下である場合、上記第1のrankをTの間隔でリフレッシュするように構成される、項目22に記載のメモリリフレッシュ装置。
(項目24)
上記受信モジュールはさらに、上記第1のリフレッシュ要求を実行するプロセスにおいて、上記第1のrankにアクセスするための第1のアクセス要求を受信するように構成され、
上記メモリリフレッシュ装置はさらに、
上記第1のアクセス要求を、構成されたバッファキューにバッファリングするように構成されたバッファモジュールであって、上記バッファモジュールは少なくとも上記バッファキュー及びスケジューリングキューを含み、上記バッファキューは、リフレッシュ動作が行われているrankに対するアクセス要求をバッファリングするように構成され、上記スケジューリングキューは、リフレッシュ動作が行われていないrankに送信されるアクセス要求をバッファリングするように構成される、バッファモジュールを備える、項目22又は23に記載のメモリリフレッシュ装置。
(項目25)
上記受信モジュールはさらに、上記DRAMの第2のrankにアクセスするための第2のアクセス要求を受信するように構成され、
上記バッファモジュールはさらに、上記第2のrankに対してリフレッシュ動作が何も行われていない場合、上記第2のアクセス要求を上記スケジューリングキューにバッファリングするように構成される、項目22に記載のメモリリフレッシュ装置。
(項目26)
上記リフレッシュモジュールは具体的に、
上記第1の期間内に受信した上記アクセス要求の数が第3の閾値より大きく、且つ受信した上記アクセス要求内にある上記第1のrankにアクセスするためのアクセス要求の数が第4の閾値より小さい場合、上記第1のrankを上記T/Nの間隔でリフレッシュすることであって、上記第1の期間において、上記第1のrankにアクセスするための上記アクセス要求の上記数は0より大きい、リフレッシュすることを行うように構成される、項目22から25のいずれか一項に記載のメモリリフレッシュ装置。
(項目27)
上記リフレッシュモジュールは具体的に、
上記第1の期間内に受信した上記アクセス要求内にある上記第1のrankにアクセスするためのアクセス要求の数が第4の閾値以上であり、且つ上記第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、上記複数のrankのうち上記第1のrankを上記T/Nの間隔でリフレッシュすることであって、上記第5の閾値は、指定された警告値より小さく、上記警告値は、上記第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、項目22から25のいずれか一項に記載のメモリリフレッシュ装置。
(項目28)
上記リフレッシュモジュールは具体的に、
上記第1の期間内に受信した上記アクセス要求の数が、指定された第3の閾値以下であり、且つ上記第1のrankに対するアクセス要求の数が0より大きく、且つ上記第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、上記複数のrankのうち上記第1のrankを上記T/Nの間隔でリフレッシュすることであって、上記第5の閾値は、指定された警告値より小さく、上記警告値は、上記第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、項目22から25のいずれか一項に記載のメモリリフレッシュ装置。

Claims (28)

  1. メモリコントローラとダイナミックランダムアクセスメモリDRAMとを有するコンピュータシステムに適用されるメモリリフレッシュ方法であって、前記DRAMは複数のrankを含み、
    前記方法は、
    前記メモリコントローラがアクセス要求を受信する段階と、
    第1の期間内に受信したアクセス要求のターゲットrankの数が、指定された第1の閾値より小さく、且つ前記アクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第2の閾値より大きい場合、前記メモリコントローラが前記複数のrankのうち第1のrankをT/Nの間隔でリフレッシュする段階であって、Tは標準的な平均リフレッシュ間隔を示すのに用いられ、Nは1より大きい整数である、段階と
    を備える、方法。
  2. 前記方法はさらに、
    第2の期間内に受信したアクセス要求のターゲットrankの数が、前記指定された第1の閾値以上であるか、又は前記アクセス要求のうち読み出し要求若しくは書き込み要求の割合が、前記指定された第2の閾値以下である場合、前記メモリコントローラが前記第1のrankをTの間隔でリフレッシュする段階を備える、請求項1に記載の方法。
  3. 前記方法はさらに、
    前記第1のリフレッシュ要求を実行するプロセスにおいて前記メモリコントローラが、前記第1のrankにアクセスするための第1のアクセス要求を受信する段階と、
    前記メモリコントローラが、構成されたバッファキューに前記第1のアクセス要求をバッファリングする段階であって、前記メモリコントローラは少なくとも前記バッファキュー及びスケジューリングキューを有し、前記バッファキューは、リフレッシュ動作が行われているrankに対するアクセス要求をバッファリングするように構成され、前記スケジューリングキューは、リフレッシュ動作が行われていないrankに送信されるアクセス要求をバッファリングするように構成される、段階と
    を備える、請求項1又は2に記載の方法。
  4. 前記方法はさらに、
    前記DRAMの第2のrankにアクセスするための第2のアクセス要求を前記メモリコントローラが受信する段階と、
    前記第2のrankに対してリフレッシュ動作が何も行われていない場合、前記スケジューリングキューにある前記第2のアクセス要求を前記メモリコントローラがバッファリングする段階と
    を備える、請求項3に記載の方法。
  5. 前記メモリコントローラが前記複数のrankのうち第1のrankをT/Nの間隔で前記リフレッシュする段階は、
    前記第1の期間内に受信した前記アクセス要求の数が第3の閾値より大きく、且つ受信した前記アクセス要求内にある前記第1のrankにアクセスするためのアクセス要求の数が第4の閾値より小さい場合、前記メモリコントローラが前記第1のrankを前記T/Nの間隔でリフレッシュする段階であって、前記第1の期間において、前記第1のrankにアクセスするための前記アクセス要求の前記数は0より大きい、段階を有する、請求項1から4のいずれか一項に記載の方法。
  6. 前記メモリコントローラが前記複数のrankのうち第1のrankをT/Nの間隔で前記リフレッシュする段階は、
    前記第1の期間内に受信した前記アクセス要求内にある前記第1のrankにアクセスするためのアクセス要求の数が第4の閾値以上であり、且つ前記第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、前記メモリコントローラが前記複数のrankのうち前記第1のrankを前記T/Nの間隔でリフレッシュする段階であって、前記第5の閾値は、指定された警告値より小さく、前記警告値は、前記第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、段階を有する、請求項1から4のいずれか一項に記載の方法。
  7. 前記複数のrankのうち第1のrankをT/Nの間隔で前記リフレッシュする段階は、
    前記第1の期間内に受信した前記アクセス要求の数が、指定された第3の閾値以下であり、且つ前記第1のrankに対するアクセス要求の数が0より大きく、且つ前記第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、前記メモリコントローラが前記複数のrankのうち前記第1のrankを前記T/Nの間隔でリフレッシュする段階であって、前記第5の閾値は、指定された警告値より小さく、前記警告値は、前記第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、段階を有する、請求項1から4のいずれか一項に記載の方法。
  8. メモリコントローラと、前記メモリコントローラに接続されたダイナミックランダムアクセスメモリDRAMとを備えるコンピュータシステムであって、前記DRAMは複数のrankを含み、
    前記メモリコントローラは、
    アクセス要求を受信することと、
    第1の期間内に受信したアクセス要求のターゲットrankの数が、指定された第1の閾値より小さく、且つ前記アクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第2の閾値より大きい場合、前記複数のrankのうち第1のrankをT/Nの間隔でリフレッシュすることであって、Tは標準的な平均リフレッシュ間隔を示すのに用いられ、Nは1より大きい整数である、リフレッシュすることと
    を行うように構成される、コンピュータシステム。
  9. 前記メモリコントローラはさらに、
    第2の期間内に受信したアクセス要求のターゲットrankの数が、前記指定された第1の閾値以上であるか、又は前記アクセス要求のうち読み出し要求若しくは書き込み要求の割合が、前記指定された第2の閾値以下である場合、前記第1のrankをTの間隔でリフレッシュするように構成される、請求項8に記載のコンピュータシステム。
  10. 前記メモリコントローラはさらに、
    前記第1のリフレッシュ要求を実行するプロセスにおいて、前記第1のrankにアクセスするための第1のアクセス要求を受信することと、
    前記第1のアクセス要求をバッファキューにバッファリングすることであって、前記メモリコントローラは少なくとも前記バッファキュー及びスケジューリングキューを有し、前記バッファキューは、リフレッシュ動作が行われているrankに対するアクセス要求をバッファリングするように構成され、前記スケジューリングキューは、リフレッシュ動作が行われていないrankに送信されるアクセス要求をバッファリングするように構成される、バッファリングすることと
    を行うように構成される、請求項8又は9に記載のコンピュータシステム。
  11. 前記メモリコントローラはさらに、
    前記DRAMの第2のrankにアクセスするための第2のアクセス要求を受信し、
    前記第2のrankに対してリフレッシュ動作が何も行われていない場合、前記第2のアクセス要求を前記スケジューリングキューにバッファリングする
    ように構成される、請求項10に記載のコンピュータシステム。
  12. 前記メモリコントローラは具体的に、
    前記第1の期間内に受信した前記アクセス要求の数が第3の閾値より大きく、且つ受信した前記アクセス要求内にある前記第1のrankにアクセスするためのアクセス要求の数が第4の閾値より小さい場合、前記第1のrankを前記T/Nの間隔でリフレッシュすることであって、前記第1の期間において、前記第1のrankにアクセスするための前記アクセス要求の前記数は0より大きい、リフレッシュすることを行うように構成される、請求項8から11のいずれか一項に記載のコンピュータシステム。
  13. 前記メモリコントローラは具体的に、
    前記第1の期間内に受信した前記アクセス要求内にある前記第1のrankにアクセスするためのアクセス要求の数が第4の閾値以上であり、且つ前記第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、前記第1のrankを前記T/Nの間隔でリフレッシュすることであって、前記第5の閾値は、指定された警告値より小さく、前記警告値は、前記第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、請求項8から11のいずれか一項に記載のコンピュータシステム。
  14. 前記メモリコントローラは具体的に、
    前記第1の期間内に受信した前記アクセス要求の数が、指定された第3の閾値以下であり、且つ前記第1のrankに対するアクセス要求の数が0より大きく、且つ前記第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、前記第1のrankを前記T/Nの間隔でリフレッシュすることであって、前記第5の閾値は、指定された警告値より小さく、前記警告値は、前記第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、請求項8から11のいずれか一項に記載のコンピュータシステム。
  15. コンピュータシステム内のプロセッサにより送信されるアクセス要求を受信するように構成された通信インタフェースと、
    第1の期間内に受信したアクセス要求のターゲットrankの数が、指定された第1の閾値より小さく、且つ前記アクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第2の閾値より大きい場合、前記複数のrankのうち第1のrankをT/Nの間隔でリフレッシュするように構成されたリフレッシュ回路であって、Tは標準的な平均リフレッシュ間隔を示すのに用いられ、Nは1より大きい整数である、リフレッシュ回路と
    を備える、メモリコントローラ。
  16. 前記リフレッシュ回路はさらに、
    第2の期間内に受信したアクセス要求のターゲットrankの数が、前記指定された第1の閾値以上であるか、又は前記アクセス要求のうち読み出し要求若しくは書き込み要求の割合が、前記指定された第2の閾値以下である場合、前記第1のrankをTの間隔でリフレッシュするように構成される、請求項15に記載のメモリコントローラ。
  17. 前記通信インタフェースはさらに、前記第1のリフレッシュ要求を実行するプロセスにおいて、前記第1のrankにアクセスするための第1のアクセス要求を受信するように構成され、
    前記メモリコントローラはさらに、
    前記第1のアクセス要求を、構成されたバッファキューにバッファリングするように構成されたバッファであって、前記バッファは少なくとも前記バッファキュー及びスケジューリングキューを含み、前記バッファキューは、リフレッシュ動作が行われているrankに対するアクセス要求をバッファリングするように構成され、前記スケジューリングキューは、リフレッシュ動作が行われていないrankに送信されるアクセス要求をバッファリングするように構成される、バッファを備える、請求項15又は16に記載のメモリコントローラ。
  18. 前記通信インタフェースはさらに、前記DRAMの第2のrankにアクセスするための第2のアクセス要求を受信するように構成され、
    前記バッファはさらに、前記第2のrankに対してリフレッシュ動作が何も行われていない場合、前記第2のアクセス要求を前記スケジューリングキューにバッファリングするように構成される、請求項17に記載のメモリコントローラ。
  19. 前記リフレッシュ回路は具体的に、
    前記第1の期間内に受信した前記アクセス要求の数が第3の閾値より大きく、且つ受信した前記アクセス要求内にある前記第1のrankにアクセスするためのアクセス要求の数が第4の閾値より小さい場合、前記第1のrankを前記T/Nの間隔でリフレッシュすることであって、前記第1の期間において、前記第1のrankにアクセスするための前記アクセス要求の前記数は0より大きい、リフレッシュすることを行うように構成される、請求項15から18のいずれか一項に記載のメモリコントローラ。
  20. 前記リフレッシュ回路は具体的に、
    前記第1の期間内に受信した前記アクセス要求内にある前記第1のrankにアクセスするためのアクセス要求の数が第4の閾値以上であり、且つ前記第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、前記複数のrankのうち前記第1のrankを前記T/Nの間隔でリフレッシュすることであって、前記第5の閾値は、指定された警告値より小さく、前記警告値は、前記第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、請求項15から18のいずれか一項に記載のメモリコントローラ。
  21. 前記リフレッシュ回路は具体的に、
    前記第1の期間内に受信した前記アクセス要求の数が、指定された第3の閾値以下であり、且つ前記第1のrankに対するアクセス要求の数が0より大きく、且つ前記第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、前記複数のrankのうち前記第1のrankを前記T/Nの間隔でリフレッシュすることであって、前記第5の閾値は、指定された警告値より小さく、前記警告値は、前記第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、請求項15から18のいずれか一項に記載のメモリコントローラ。
  22. コンピュータシステム内のダイナミックランダムアクセスメモリDRAMをリフレッシュするように構成されるメモリリフレッシュ装置であって、前記DRAMは複数のrankを含み、
    前記メモリリフレッシュ装置は、
    アクセス要求を受信するように構成された受信モジュールと、
    第1の期間内に受信したアクセス要求のターゲットrankの数が、指定された第1の閾値より小さく、且つ前記アクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第2の閾値より大きい場合、前記複数のrankのうち第1のrankをT/Nの間隔でリフレッシュするように構成されたリフレッシュモジュールであって、Tは標準的な平均リフレッシュ間隔を示すのに用いられ、Nは1より大きい整数である、リフレッシュモジュールと
    を備える、メモリリフレッシュ装置。
  23. 前記リフレッシュモジュールはさらに、
    第2の期間内に受信したアクセス要求のターゲットrankの数が、前記指定された第1の閾値以上であるか、又は前記アクセス要求のうち読み出し要求若しくは書き込み要求の割合が、前記指定された第2の閾値以下である場合、前記第1のrankをTの間隔でリフレッシュするように構成される、請求項22に記載のメモリリフレッシュ装置。
  24. 前記受信モジュールはさらに、前記第1のリフレッシュ要求を実行するプロセスにおいて、前記第1のrankにアクセスするための第1のアクセス要求を受信するように構成され、
    前記メモリリフレッシュ装置はさらに、
    前記第1のアクセス要求を、構成されたバッファキューにバッファリングするように構成されたバッファモジュールであって、前記バッファモジュールは少なくとも前記バッファキュー及びスケジューリングキューを含み、前記バッファキューは、リフレッシュ動作が行われているrankに対するアクセス要求をバッファリングするように構成され、前記スケジューリングキューは、リフレッシュ動作が行われていないrankに送信されるアクセス要求をバッファリングするように構成される、バッファモジュールを備える、請求項22又は23に記載のメモリリフレッシュ装置。
  25. 前記受信モジュールはさらに、前記DRAMの第2のrankにアクセスするための第2のアクセス要求を受信するように構成され、
    前記バッファモジュールはさらに、前記第2のrankに対してリフレッシュ動作が何も行われていない場合、前記第2のアクセス要求を前記スケジューリングキューにバッファリングするように構成される、請求項22に記載のメモリリフレッシュ装置。
  26. 前記リフレッシュモジュールは具体的に、
    前記第1の期間内に受信した前記アクセス要求の数が第3の閾値より大きく、且つ受信した前記アクセス要求内にある前記第1のrankにアクセスするためのアクセス要求の数が第4の閾値より小さい場合、前記第1のrankを前記T/Nの間隔でリフレッシュすることであって、前記第1の期間において、前記第1のrankにアクセスするための前記アクセス要求の前記数は0より大きい、リフレッシュすることを行うように構成される、請求項22から25のいずれか一項に記載のメモリリフレッシュ装置。
  27. 前記リフレッシュモジュールは具体的に、
    前記第1の期間内に受信した前記アクセス要求内にある前記第1のrankにアクセスするためのアクセス要求の数が第4の閾値以上であり、且つ前記第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、前記複数のrankのうち前記第1のrankを前記T/Nの間隔でリフレッシュすることであって、前記第5の閾値は、指定された警告値より小さく、前記警告値は、前記第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、請求項22から25のいずれか一項に記載のメモリリフレッシュ装置。
  28. 前記リフレッシュモジュールは具体的に、
    前記第1の期間内に受信した前記アクセス要求の数が、指定された第3の閾値以下であり、且つ前記第1のrankに対するアクセス要求の数が0より大きく、且つ前記第1のrankに対する延期されたリフレッシュの数が、指定された第5の閾値より大きい場合、前記複数のrankのうち前記第1のrankを前記T/Nの間隔でリフレッシュすることであって、前記第5の閾値は、指定された警告値より小さく、前記警告値は、前記第1のrankに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、請求項22から25のいずれか一項に記載のメモリリフレッシュ装置。
JP2019553059A 2017-04-14 2017-04-14 メモリリフレッシュ技術及びコンピュータシステム Active JP6780897B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/080637 WO2018188083A1 (zh) 2017-04-14 2017-04-14 内存刷新技术及计算机系统

Publications (2)

Publication Number Publication Date
JP2020516988A true JP2020516988A (ja) 2020-06-11
JP6780897B2 JP6780897B2 (ja) 2020-11-04

Family

ID=63793082

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019553059A Active JP6780897B2 (ja) 2017-04-14 2017-04-14 メモリリフレッシュ技術及びコンピュータシステム

Country Status (6)

Country Link
US (2) US11074958B2 (ja)
EP (1) EP3605541A4 (ja)
JP (1) JP6780897B2 (ja)
CN (1) CN110520929B (ja)
SG (1) SG11201908904TA (ja)
WO (1) WO2018188083A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020517024A (ja) * 2017-04-14 2020-06-11 華為技術有限公司Huawei Technologies Co.,Ltd. メモリリフレッシュ技術およびコンピュータシステム
US11074958B2 (en) 2017-04-14 2021-07-27 Huawei Technologies Co., Ltd. Memory refresh technology and computer system

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10685696B2 (en) 2018-10-31 2020-06-16 Micron Technology, Inc. Apparatuses and methods for access based refresh timing
CN113168861B (zh) 2018-12-03 2024-05-14 美光科技公司 执行行锤刷新操作的半导体装置
US10957377B2 (en) 2018-12-26 2021-03-23 Micron Technology, Inc. Apparatuses and methods for distributed targeted refresh operations
CN112466361B (zh) * 2020-11-25 2023-11-21 海光信息技术股份有限公司 一种dimm的数据初始化方法、装置、系统及设备
US11782851B2 (en) * 2021-09-01 2023-10-10 Micron Technology, Inc. Dynamic queue depth adjustment
JP2023133729A (ja) 2022-03-14 2023-09-27 株式会社デンソー メモリコントローラ
US12112787B2 (en) 2022-04-28 2024-10-08 Micron Technology, Inc. Apparatuses and methods for access based targeted refresh operations

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013030246A (ja) * 2011-07-28 2013-02-07 Elpida Memory Inc 情報処理システム
JP2014059831A (ja) * 2012-09-19 2014-04-03 Nec Computertechno Ltd メモリリフレッシュ装置、情報処理システム、メモリリフレッシュ方法、および、コンピュータ・プログラム
JP2015041395A (ja) * 2013-08-20 2015-03-02 キヤノン株式会社 情報処理装置及びその制御方法、並びに、そのプログラムと記憶媒体

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59181349A (ja) 1983-02-28 1984-10-15 Konishiroku Photo Ind Co Ltd 熱現像カラ−写真材料
US4680704A (en) * 1984-12-28 1987-07-14 Telemeter Corporation Optical sensor apparatus and method for remotely monitoring a utility meter or the like
US5557578A (en) * 1995-05-01 1996-09-17 Apple Computer, Inc. Dynamic memory refresh controller and method
JPH10149311A (ja) 1996-11-20 1998-06-02 Ricoh Co Ltd メモリ制御装置
JP4154010B2 (ja) 1997-07-17 2008-09-24 キヤノン株式会社 メモリ制御装置およびメモリ制御方法
US6330639B1 (en) * 1999-06-29 2001-12-11 Intel Corporation Method and apparatus for dynamically changing the sizes of pools that control the power consumption levels of memory devices
US7342841B2 (en) 2004-12-21 2008-03-11 Intel Corporation Method, apparatus, and system for active refresh management
TWI317945B (en) 2007-01-12 2009-12-01 Via Tech Inc Memory refresh method and system
CN101000798B (zh) 2007-01-12 2010-05-19 威盛电子股份有限公司 存储器刷新方法及存储器刷新系统
JPWO2009139109A1 (ja) 2008-05-13 2011-09-15 パナソニック株式会社 メモリ制御装置、およびこれを備えた情報処理装置
CN101640065B (zh) * 2008-07-29 2012-07-04 国际商业机器公司 用于嵌入式dram的刷新控制器及刷新控制方法
US8639874B2 (en) 2008-12-22 2014-01-28 International Business Machines Corporation Power management of a spare DRAM on a buffered DIMM by issuing a power on/off command to the DRAM device
JP5155221B2 (ja) 2009-03-11 2013-03-06 ルネサスエレクトロニクス株式会社 メモリ制御装置
CN101620883B (zh) * 2009-07-29 2014-07-09 无锡中星微电子有限公司 一种dram运行频率调整系统及方法
US8369178B2 (en) * 2010-03-08 2013-02-05 Micron Technology, Inc. System and method for managing self-refresh in a multi-rank memory
US8656198B2 (en) * 2010-04-26 2014-02-18 Advanced Micro Devices Method and apparatus for memory power management
US9111632B2 (en) * 2010-07-29 2015-08-18 Renesas Electronics Corporation Semiconductor device and data processing system with coordinated calibration and refresh operations
US9053812B2 (en) * 2010-09-24 2015-06-09 Intel Corporation Fast exit from DRAM self-refresh
US8489807B2 (en) 2010-12-03 2013-07-16 International Business Machines Corporation Techniques for performing refresh operations in high-density memories
US8775725B2 (en) 2010-12-06 2014-07-08 Intel Corporation Memory device refresh commands on the fly
US8539146B2 (en) 2011-11-28 2013-09-17 International Business Machines Corporation Apparatus for scheduling memory refresh operations including power states
US8645770B2 (en) * 2012-01-18 2014-02-04 Apple Inc. Systems and methods for proactively refreshing nonvolatile memory
US9269418B2 (en) 2012-02-06 2016-02-23 Arm Limited Apparatus and method for controlling refreshing of data in a DRAM
US8909874B2 (en) 2012-02-13 2014-12-09 International Business Machines Corporation Memory reorder queue biasing preceding high latency operations
KR101380452B1 (ko) 2012-08-14 2014-04-14 한국과학기술원 버퍼리스 온칩 네트워크의 전력 소모 감소를 위한 목적지 기반 크레딧 흐름 제어 방법 및 장치
US9299400B2 (en) 2012-09-28 2016-03-29 Intel Corporation Distributed row hammer tracking
US20150294711A1 (en) 2012-10-22 2015-10-15 Hewlett-Packard Development Company, L.P. Performing refresh of a memory device in response to access of data
CN103019974B (zh) * 2012-12-18 2016-08-03 北京华为数字技术有限公司 存储器访问处理方法及控制器
US9286964B2 (en) * 2012-12-21 2016-03-15 Intel Corporation Method, apparatus and system for responding to a row hammer event
US9196347B2 (en) 2013-03-14 2015-11-24 International Business Machines Corporation DRAM controller for variable refresh operation timing
BR112015019459B1 (pt) 2013-03-15 2021-10-19 Intel Corporation Dispositivo para uso em um módulo de memória e método realizado em um módulo de memória
US9245604B2 (en) * 2013-05-08 2016-01-26 International Business Machines Corporation Prioritizing refreshes in a memory device
CN104143355B (zh) 2013-05-09 2018-01-23 华为技术有限公司 一种刷新动态随机存取存储器的方法和装置
US9001608B1 (en) * 2013-12-06 2015-04-07 Intel Corporation Coordinating power mode switching and refresh operations in a memory device
US9431085B2 (en) * 2014-03-28 2016-08-30 Synopsys, Inc. Most activated memory portion handling
KR20150128087A (ko) * 2014-05-08 2015-11-18 에스케이하이닉스 주식회사 리프레쉬 오류를 방지할 수 있는 반도체 장치 및 이를 이용한 메모리 시스템
CN105280215B (zh) 2014-06-09 2018-01-23 华为技术有限公司 动态随机存取存储器dram的刷新方法、设备以及系统
EP3279899B1 (en) 2015-05-04 2020-10-07 Huawei Technologies Co. Ltd. Dram refreshing method, apparatus and system
US9685219B2 (en) 2015-05-13 2017-06-20 Samsung Electronics Co., Ltd. Semiconductor memory device for deconcentrating refresh commands and system including the same
CN105045722B (zh) 2015-08-26 2018-06-05 东南大学 一种ddr2-sdram控制器及其低延迟优化方法
US9812185B2 (en) * 2015-10-21 2017-11-07 Invensas Corporation DRAM adjacent row disturb mitigation
US9576637B1 (en) 2016-05-25 2017-02-21 Advanced Micro Devices, Inc. Fine granularity refresh
US10192607B2 (en) * 2016-05-31 2019-01-29 Qualcomm Incorporated Periodic ZQ calibration with traffic-based self-refresh in a multi-rank DDR system
US9965222B1 (en) * 2016-10-21 2018-05-08 Advanced Micro Devices, Inc. Software mode register access for platform margining and debug
CN106875971B (zh) 2017-02-16 2021-01-22 上海兆芯集成电路有限公司 动态随机存取存储器控制器及其控制方法
JP6780897B2 (ja) 2017-04-14 2020-11-04 ホアウェイ・テクノロジーズ・カンパニー・リミテッド メモリリフレッシュ技術及びコンピュータシステム
US10621121B2 (en) * 2017-12-01 2020-04-14 Intel Corporation Measurement and optimization of command signal timing margins
US10236035B1 (en) 2017-12-04 2019-03-19 Nanya Technology Corporation DRAM memory device adjustable refresh rate method to alleviate effects of row hammer events
US10503670B2 (en) * 2017-12-21 2019-12-10 Advanced Micro Devices, Inc. Dynamic per-bank and all-bank refresh
US10535393B1 (en) * 2018-07-21 2020-01-14 Advanced Micro Devices, Inc. Configuring dynamic random access memory refreshes for systems having multiple ranks of memory
US10969997B2 (en) 2018-11-07 2021-04-06 Intel Corporation Memory controller that filters a count of row activate commands collectively sent to a set of memory banks

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013030246A (ja) * 2011-07-28 2013-02-07 Elpida Memory Inc 情報処理システム
JP2014059831A (ja) * 2012-09-19 2014-04-03 Nec Computertechno Ltd メモリリフレッシュ装置、情報処理システム、メモリリフレッシュ方法、および、コンピュータ・プログラム
JP2015041395A (ja) * 2013-08-20 2015-03-02 キヤノン株式会社 情報処理装置及びその制御方法、並びに、そのプログラムと記憶媒体

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020517024A (ja) * 2017-04-14 2020-06-11 華為技術有限公司Huawei Technologies Co.,Ltd. メモリリフレッシュ技術およびコンピュータシステム
US11074958B2 (en) 2017-04-14 2021-07-27 Huawei Technologies Co., Ltd. Memory refresh technology and computer system
US11705180B2 (en) 2017-04-14 2023-07-18 Huawei Technologies Co., Ltd. Memory refresh technology and computer system

Also Published As

Publication number Publication date
CN110520929A (zh) 2019-11-29
JP6780897B2 (ja) 2020-11-04
WO2018188083A1 (zh) 2018-10-18
US20200066331A1 (en) 2020-02-27
SG11201908904TA (en) 2019-10-30
EP3605541A1 (en) 2020-02-05
CN110520929B (zh) 2022-07-22
US20210335417A1 (en) 2021-10-28
US11074958B2 (en) 2021-07-27
US11705180B2 (en) 2023-07-18
EP3605541A4 (en) 2020-04-01

Similar Documents

Publication Publication Date Title
JP2020516988A (ja) メモリリフレッシュ技術及びコンピュータシステム
CA3058778C (en) Memory refresh technology and computer system
US9858980B2 (en) Memory device refresh commands on the fly
US7496777B2 (en) Power throttling in a memory system
CN105320608B (zh) 用于控制存储器设备处理访问请求的存储器控制器和方法
EP3729280B1 (en) Dynamic per-bank and all-bank refresh
US7222224B2 (en) System and method for improving performance in computer memory systems supporting multiple memory access latencies
US10158712B2 (en) Source-side resource request network admission control
US8543759B2 (en) Method for scheduling memory refresh operations including power states
CN110556139B (zh) 用以控制存储器的电路及相关的方法
US10031884B2 (en) Storage apparatus and method for processing plurality of pieces of client data
JP7553062B2 (ja) メモリ管理技術及びコンピュータシステム
KR20140064015A (ko) 메모리 시스템 및 이의 동작 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191031

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191031

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200915

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201009

R150 Certificate of patent or registration of utility model

Ref document number: 6780897

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250