(57)【特許請求の範囲】
【請求項１】
メモリコントローラとダイナミックランダムアクセスメモリ（ＤＲＡＭ）とを有するコンピュータシステムに適用されるメモリリフレッシュ方法であって、前記ＤＲＡＭは複数のｒａｎｋを含み、
前記メモリリフレッシュ方法は、
前記メモリコントローラがアクセス要求を受信する段階と、
第１の期間内に受信したアクセス要求のターゲットｒａｎｋの数が、指定された第１の閾値より小さく、且つ前記アクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第２の閾値より大きい場合、前記メモリコントローラが前記複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔でリフレッシュする段階であって、Ｔは標準的な平均リフレッシュ間隔を示すのに用いられ、Ｎは１より大きい整数である、段階と
を備える、メモリリフレッシュ方法。
【請求項２】
前記メモリリフレッシュ方法はさらに、
第２の期間内に受信したアクセス要求のターゲットｒａｎｋの数が、前記指定された第１の閾値以上であるか、又は前記アクセス要求のうち読み出し要求若しくは書き込み要求の割合が、前記指定された第２の閾値以下である場合、前記メモリコントローラが前記第１のｒａｎｋをＴの間隔でリフレッシュする段階を備える、請求項１に記載のメモリリフレッシュ方法。
【請求項３】
前記メモリリフレッシュ方法はさらに、
前記第１のｒａｎｋをリフレッシュするプロセスにおいて前記メモリコントローラが、前記第１のｒａｎｋにアクセスするための第１のアクセス要求を受信する段階と、
前記メモリコントローラが、構成されたバッファキューに前記第１のアクセス要求をバッファリングする段階であって、前記メモリコントローラは少なくとも前記バッファキュー及びスケジューリングキューを有し、前記バッファキューは、リフレッシュ動作が行われているｒａｎｋに対するアクセス要求をバッファリングするように構成され、前記スケジューリングキューは、リフレッシュ動作が行われていないｒａｎｋに送信されるアクセス要求をバッファリングするように構成される、段階と
を備える、請求項１又は２に記載のメモリリフレッシュ方法。
【請求項４】
前記メモリリフレッシュ方法はさらに、
前記ＤＲＡＭの第２のｒａｎｋにアクセスするための第２のアクセス要求を前記メモリコントローラが受信する段階と、
前記第２のｒａｎｋに対してリフレッシュ動作が何も行われていない場合、前記スケジューリングキューにある前記第２のアクセス要求を前記メモリコントローラがバッファリングする段階と
を備える、請求項３に記載のメモリリフレッシュ方法。
【請求項５】
前記メモリコントローラが前記複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔で前記リフレッシュする段階は、
前記第１の期間内に受信した前記アクセス要求の数が第３の閾値より大きく、且つ受信した前記アクセス要求内にある前記第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値より小さい場合、前記メモリコントローラが前記第１のｒａｎｋを前記Ｔ／Ｎの間隔でリフレッシュする段階であって、前記第１の期間において、前記第１のｒａｎｋにアクセスするための前記アクセス要求の前記数は０より大きい、段階を有する、請求項１から４のいずれか一項に記載のメモリリフレッシュ方法。
【請求項６】
前記メモリコントローラが前記複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔で前記リフレッシュする段階は、
前記第１の期間内に受信した前記アクセス要求内にある前記第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値以上であり、且つ前記第１のｒａｎｋに対する延期されたリフレッシュの数が、指定された第５の閾値より大きい場合、前記メモリコントローラが前記複数のｒａｎｋのうち前記第１のｒａｎｋを前記Ｔ／Ｎの間隔でリフレッシュする段階であって、前記第５の閾値は、指定された警告値より小さく、前記警告値は、前記第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、段階を有する、請求項１から４のいずれか一項に記載のメモリリフレッシュ方法。
【請求項７】
前記複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔で前記リフレッシュする段階は、
前記第１の期間内に受信した前記アクセス要求の数が、指定された第３の閾値以下であり、且つ前記第１のｒａｎｋに対するアクセス要求の数が０より大きく、且つ前記第１のｒａｎｋに対する延期されたリフレッシュの数が、指定された第５の閾値より大きい場合、前記メモリコントローラが前記複数のｒａｎｋのうち前記第１のｒａｎｋを前記Ｔ／Ｎの間隔でリフレッシュする段階であって、前記第５の閾値は、指定された警告値より小さく、前記警告値は、前記第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、段階を有する、請求項１から４のいずれか一項に記載のメモリリフレッシュ方法。
【請求項８】
メモリコントローラと、前記メモリコントローラに接続されたダイナミックランダムアクセスメモリ（ＤＲＡＭ）とを備えるコンピュータシステムであって、前記ＤＲＡＭは複数のｒａｎｋを含み、前記メモリコントローラは、請求項１から７のいずれか一項に記載のメモリリフレッシュ方法を実行するように構成される、コンピュータシステム。
【請求項９】
コンピュータシステム内のプロセッサにより送信されるアクセス要求を受信するように構成された通信インタフェースと、
第１の期間内に受信したアクセス要求のターゲットｒａｎｋの数が、指定された第１の閾値より小さく、且つ前記アクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第２の閾値より大きい場合、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）の複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔でリフレッシュするように構成されたリフレッシュ回路であって、Ｔは標準的な平均リフレッシュ間隔を示すのに用いられ、Ｎは１より大きい整数である、リフレッシュ回路と
を備える、メモリコントローラ。
【請求項１０】
前記リフレッシュ回路はさらに、
第２の期間内に受信したアクセス要求のターゲットｒａｎｋの数が、前記指定された第１の閾値以上であるか、又は前記アクセス要求のうち読み出し要求若しくは書き込み要求の割合が、前記指定された第２の閾値以下である場合、前記第１のｒａｎｋをＴの間隔でリフレッシュするように構成される、請求項９に記載のメモリコントローラ。
【請求項１１】
前記通信インタフェースはさらに、前記第１のｒａｎｋをリフレッシュするプロセスにおいて、前記第１のｒａｎｋにアクセスするための第１のアクセス要求を受信するように構成され、
前記メモリコントローラはさらに、
前記第１のアクセス要求を、構成されたバッファキューにバッファリングするように構成されたバッファであって、前記バッファは少なくとも前記バッファキュー及びスケジューリングキューを含み、前記バッファキューは、リフレッシュ動作が行われているｒａｎｋに対するアクセス要求をバッファリングするように構成され、前記スケジューリングキューは、リフレッシュ動作が行われていないｒａｎｋに送信されるアクセス要求をバッファリングするように構成される、バッファを備える、請求項９又は１０に記載のメモリコントローラ。
【請求項１２】
前記通信インタフェースはさらに、前記ＤＲＡＭの第２のｒａｎｋにアクセスするための第２のアクセス要求を受信するように構成され、
前記バッファはさらに、前記第２のｒａｎｋに対してリフレッシュ動作が何も行われていない場合、前記第２のアクセス要求を前記スケジューリングキューにバッファリングするように構成される、請求項１１に記載のメモリコントローラ。
【請求項１３】
前記リフレッシュ回路は、
前記第１の期間内に受信した前記アクセス要求の数が第３の閾値より大きく、且つ受信した前記アクセス要求内にある前記第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値より小さい場合、前記第１のｒａｎｋを前記Ｔ／Ｎの間隔でリフレッシュすることであって、前記第１の期間において、前記第１のｒａｎｋにアクセスするための前記アクセス要求の前記数は０より大きい、リフレッシュすることを行うように構成される、請求項９から１２のいずれか一項に記載のメモリコントローラ。
【請求項１４】
前記リフレッシュ回路は、
前記第１の期間内に受信した前記アクセス要求内にある前記第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値以上であり、且つ前記第１のｒａｎｋに対する延期されたリフレッシュの数が、指定された第５の閾値より大きい場合、前記複数のｒａｎｋのうち前記第１のｒａｎｋを前記Ｔ／Ｎの間隔でリフレッシュすることであって、前記第５の閾値は、指定された警告値より小さく、前記警告値は、前記第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、請求項９から１２のいずれか一項に記載のメモリコントローラ。
【請求項１５】
前記リフレッシュ回路は、
前記第１の期間内に受信した前記アクセス要求の数が、指定された第３の閾値以下であり、且つ前記第１のｒａｎｋに対するアクセス要求の数が０より大きく、且つ前記第１のｒａｎｋに対する延期されたリフレッシュの数が、指定された第５の閾値より大きい場合、前記複数のｒａｎｋのうち前記第１のｒａｎｋを前記Ｔ／Ｎの間隔でリフレッシュすることであって、前記第５の閾値は、指定された警告値より小さく、前記警告値は、前記第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、請求項９から１２のいずれか一項に記載のメモリコントローラ。
【請求項１６】
コンピュータシステム内のダイナミックランダムアクセスメモリ（ＤＲＡＭ）をリフレッシュするように構成されるメモリリフレッシュ装置であって、前記ＤＲＡＭは複数のｒａｎｋを含み、
前記メモリリフレッシュ装置は、
アクセス要求を受信するように構成された受信モジュールと、
第１の期間内に受信したアクセス要求のターゲットｒａｎｋの数が、指定された第１の閾値より小さく、且つ前記アクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第２の閾値より大きい場合、前記複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔でリフレッシュするように構成されたリフレッシュモジュールであって、Ｔは標準的な平均リフレッシュ間隔を示すのに用いられ、Ｎは１より大きい整数である、リフレッシュモジュールと
を備える、メモリリフレッシュ装置。
【請求項１７】
前記リフレッシュモジュールはさらに、
第２の期間内に受信したアクセス要求のターゲットｒａｎｋの数が、前記指定された第１の閾値以上であるか、又は前記アクセス要求のうち読み出し要求若しくは書き込み要求の割合が、前記指定された第２の閾値以下である場合、前記第１のｒａｎｋをＴの間隔でリフレッシュするように構成される、請求項１６に記載のメモリリフレッシュ装置。
【請求項１８】
前記受信モジュールはさらに、前記第１のｒａｎｋをリフレッシュするプロセスにおいて、前記第１のｒａｎｋにアクセスするための第１のアクセス要求を受信するように構成され、
前記メモリリフレッシュ装置はさらに、
前記第１のアクセス要求を、構成されたバッファキューにバッファリングするように構成されたバッファモジュールであって、前記バッファモジュールは少なくとも前記バッファキュー及びスケジューリングキューを含み、前記バッファキューは、リフレッシュ動作が行われているｒａｎｋに対するアクセス要求をバッファリングするように構成され、前記スケジューリングキューは、リフレッシュ動作が行われていないｒａｎｋに送信されるアクセス要求をバッファリングするように構成される、バッファモジュールを備える、請求項１６又は１７に記載のメモリリフレッシュ装置。
【請求項１９】
前記受信モジュールはさらに、前記ＤＲＡＭの第２のｒａｎｋにアクセスするための第２のアクセス要求を受信するように構成され、
前記バッファモジュールはさらに、前記第２のｒａｎｋに対してリフレッシュ動作が何も行われていない場合、前記第２のアクセス要求を前記スケジューリングキューにバッファリングするように構成される、請求項１８に記載のメモリリフレッシュ装置。
【請求項２０】
前記リフレッシュモジュールは、
前記第１の期間内に受信した前記アクセス要求の数が第３の閾値より大きく、且つ受信した前記アクセス要求内にある前記第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値より小さい場合、前記第１のｒａｎｋを前記Ｔ／Ｎの間隔でリフレッシュすることであって、前記第１の期間において、前記第１のｒａｎｋにアクセスするための前記アクセス要求の前記数は０より大きい、リフレッシュすることを行うように構成される、請求項１６から１９のいずれか一項に記載のメモリリフレッシュ装置。
【請求項２１】
前記リフレッシュモジュールは、
前記第１の期間内に受信した前記アクセス要求内にある前記第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値以上であり、且つ前記第１のｒａｎｋに対する延期されたリフレッシュの数が、指定された第５の閾値より大きい場合、前記複数のｒａｎｋのうち前記第１のｒａｎｋを前記Ｔ／Ｎの間隔でリフレッシュすることであって、前記第５の閾値は、指定された警告値より小さく、前記警告値は、前記第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、請求項１６から１９のいずれか一項に記載のメモリリフレッシュ装置。
【請求項２２】
前記リフレッシュモジュールは、
前記第１の期間内に受信した前記アクセス要求の数が、指定された第３の閾値以下であり、且つ前記第１のｒａｎｋに対するアクセス要求の数が０より大きく、且つ前記第１のｒａｎｋに対する延期されたリフレッシュの数が、指定された第５の閾値より大きい場合、前記複数のｒａｎｋのうち前記第１のｒａｎｋを前記Ｔ／Ｎの間隔でリフレッシュすることであって、前記第５の閾値は、指定された警告値より小さく、前記警告値は、前記第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、請求項１６から１９のいずれか一項に記載のメモリリフレッシュ装置。
【請求項２３】
請求項１から７のいずれか一項に記載のメモリリフレッシュ方法をコンピュータに実行させるための、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、コンピュータ技術の分野に関し、具体的には、メモリリフレッシュ技術及びコンピュータシステムに関する。
【背景技術】
【０００２】
システムの従来型メインメモリは、通常、ダイナミックランダムアクセスメモリ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、ＤＲＡＭ）を含む。ＤＲＡＭは、簡単な構造と高い読み出し速度を有する。ＤＲＡＭの最も基本的な記憶単位はＤＲＡＭ−ｃｅｌｌであり、各ＤＲＡＭ−ｃｅｌｌは１つのトランジスタと１つキャパシタを含む。ＤＲＡＭ−ｃｅｌｌは、キャパシタ内の電荷量を用いて０又は１を示す。このように、１つのＤＲＡＭ−ｃｅｌｌは１つのビット（ｂｉｔ）を格納することができる。キャパシタ内の電荷は漏れ出ることがあり、キャパシタ内の電荷が不十分になると、格納されたデータの誤りにつながることがある。したがって、実際の応用では、キャパシタに格納された情報を保持するために、キャパシタを周期的に充電する必要がある。ＤＲＡＭのキャパシタを充電するというこの動作は、リフレッシュと呼ばれる。
【０００３】
ＤＲＡＭのＤＲＡＭ−ｃｅｌｌは、行列状に配置される。この行列はＤＲＡＭ−ｂａｎｋと呼ばれる。ＤＲＡＭ−ｂａｎｋの任意のビットが、対応する行デコーダ及び列デコーダを用いて位置特定され得る。複数のＤＲＡＭ−ｂａｎｋがＤＲＡＭ−ｃｈｉｐを形成してよく、複数のＤＲＡＭ−ｃｈｉｐがＤＲＡＭ−ｒａｎｋを形成してよく、複数のＤＲＡＭ−ｒａｎｋがデュアルインラインメモリモジュール（Ｄｕａｌ  Ｉｎ−ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅｓ、ＤＩＭＭ）に統合されてよい。ＤＲＡＭ−ｃｅｌｌは、センスアンプ（Ｓｅｎｓｅ  Ａｍｐ）によって行ごとにリフレッシュされる。リフレッシュプロセスでは、１つ又は複数のｂａｎｋの行が、リフレッシュコマンドに従ってリフレッシュされてよい。実際の応用では、リフレッシュは通常、ｒａｎｋを１つの単位として用いて行われる。具体的には、ｒａｎｋにある全てのｂａｎｋの行を、保持時間（ｒｅｔｅｎｔｉｏｎ  ｔｉｍｅ）内に少なくとも一度リフレッシュする必要がある。保持時間とは、ＤＲＡＭ−ｃｅｌｌ内のデータをリフレッシュ動作なしで保持できる時間のことである。
【０００４】
当業者であれば、ダブルデータレート（ｄｏｕｂｌｅ  ｄａｔａ  ｒａｔｅ、ＤＤＲ）プロトコルには、１Ｘモード、２Ｘモード、及び４Ｘモードという３つのリフレッシュモードが指定されていることを認識しているであろう。異なるリフレッシュモードは異なるリフレッシュ頻度を有しており、異なるリフレッシュ頻度は異なるバス利用率につながる。したがって、リフレッシュプロセスでは、リフレッシュモードの選択もシステムパフォーマンスに影響を与える。過去の実行情報に基づいてリフレッシュモードを選択する方法が、先行技術に提供されている。この方法では、Ｍ個の時間ウィンドウに一度、リフレッシュテストが行われる。テストプロセスでは、Ｎ個の連続した時間ウィンドウ内で、１Ｘモード及び４Ｘモードで別々にリフレッシュテストが行われる。２つのモードでリフレッシュする際のバス利用率が比較され、バス利用率が高い方のリフレッシュモードが次のＭ個の時間ウィンドウで用いるリフレッシュモードとして選択される。この方法でリフレッシュモードが動的に調整され得るが、テストの繰り返しによってシステムパフォーマンスが浪費され、さらに、Ｎ個の時間ウィンドウ内でのテスト結果が、次のＭ個のウィンドウのモード選択と内部的にはあまり強く関連していない。したがって、そのような方式では、リフレッシュオーバヘッドを効果的に減らすことも、システムパフォーマンスを向上させることもできない。
【発明の概要】
【０００５】
本願は、メモリリフレッシュ技術およびコンピュータシステムを提供して、システムのリフレッシュロスを減らし、リフレッシュプロセスにおけるコンピュータシステムのパフォーマンスを向上させる。
【０００６】
第１の態様によると、本願はメモリリフレッシュ方法を提供する。本メモリリフレッシュ方法は、メモリコントローラ及びダイナミックランダムアクセスメモリ（ＤＲＡＭ）を含むコンピュータシステムに適用され、ＤＲＡＭは複数のｒａｎｋを含む。本方法では、メモリコントローラはアクセス要求を受信する。第１の期間内に受信したアクセス要求のターゲットｒａｎｋの数が、指定された第１の閾値より小さく、且つこれらのアクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第２の閾値より大きい場合、メモリコントローラは、複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔でリフレッシュする。Ｔは標準的な平均リフレッシュ間隔を示すのに用いられ、Ｎは１より大きい整数である。
【０００７】
本願において提供されるメモリリフレッシュ方法では、メモリリフレッシュプロセスにおけるシステムパフォーマンスを向上させるために、アクセス要求のターゲットｒａｎｋの分布と、これらのアクセス要求のうち読み出し要求又は書き込み要求の割合の状況とに基づいて、リフレッシュモードを動的に調整することができるので、ｔＦＡＷ制限によって生じるシステムパフォーマンスオーバヘッドを、リフレッシュ頻度を調整することで補償することができ、システムバス利用率を向上させることができ、さらに、リフレッシュプロセスにおけるシステムパフォーマンスを向上させることができる。さらに、先行技術と比較すると、本発明の本実施形態において提供されるメモリリフレッシュ方法では、現在のリフレッシュプロセスにおけるアクセス要求の特徴に基づいて、リフレッシュモードを決定することができるので、決定されたリフレッシュモードはリフレッシュプロセスと強く関連しており、そのため、リフレッシュオーバヘッドを効果的に減らして、システムパフォーマンスを向上させることができる。
【０００８】
第１の態様に関連して、第１の実行可能な実装例では、本方法はさらに、第２の期間内に受信したアクセス要求のターゲットｒａｎｋの数が、指定された第１の閾値以上であるか、又はこれらのアクセス要求のうち読み出し要求若しくは書き込み要求の割合が、指定された第２の閾値以下である場合、メモリコントローラが第１のｒａｎｋをＴの間隔でリフレッシュする段階を含む。
【０００９】
第１の態様又は第１の態様の第１の実行可能な実装例に関連して、第２の実行可能な実装例では、本方法はさらに、第１のｒａｎｋをリフレッシュするプロセスにおいてメモリコントローラが、第１のｒａｎｋにアクセスするための第１のアクセス要求を受信する段階と、メモリコントローラが、構成されたバッファキューに第１のアクセス要求をバッファリングする段階とを含む。メモリコントローラは、少なくともバッファキュー及びスケジューリングキューを含み、バッファキューは、リフレッシュ動作が行われているｒａｎｋに対するアクセス要求をバッファリングするように構成され、スケジューリングキューは、リフレッシュ動作が行われていないｒａｎｋに送信されるアクセス要求をバッファリングするように構成される。このように、第１のｒａｎｋをリフレッシュするプロセスにおいて受信される、第１のｒａｎｋに対するアクセス要求は、スケジューリングキューを混雑させることと、メモリコントローラによる別のｒａｎｋに対するアクセス要求の処理に影響を与えることとを防止することができる。コンピュータシステム全体の処理効率がさらに向上する。
【００１０】
第１の態様の第２の実行可能な実装例に関連して、第３の実行可能な実装例では、本方法はさらに、ＤＲＡＭの第２のｒａｎｋにアクセスするための第２のアクセス要求をメモリコントローラが受信する段階と、第２のｒａｎｋに対してリフレッシュ動作が何も行われていない場合、メモリコントローラが第２のアクセス要求をスケジューリングキューにバッファリングする段階とを含む。
【００１１】
第１の態様又は第１の態様の第１から第３の実行可能な実装例のうちのいずれか１つに関連して、第４の実行可能な実装例では、複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔でメモリコントローラがリフレッシュする段階は、第１の期間内に受信したアクセス要求の数が第３の閾値より大きく、且つ受信したアクセス要求内にある第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値より小さい場合、メモリコントローラが第１のｒａｎｋをＴ／Ｎの間隔でリフレッシュする段階を含む。第１の期間内において、第１のｒａｎｋにアクセスするためのアクセス要求の数は０より大きい。
【００１２】
本願において提供されるメモリリフレッシュ方法では、メモリリフレッシュプロセスによってコンピュータシステムのパフォーマンスに生じる影響をさらに軽減するために、受信したアクセス要求の状況及びアクセス対象ターゲットｒａｎｋの状況の両方が、ターゲットｒａｎｋをリフレッシュする必要があるかどうかを判定するために総合的に考慮される。このように、第１のｒａｎｋがアイドル状態にならない場合でも、第１のｒａｎｋは能動的にリフレッシュされ得る。したがって、アクセストラフィックが比較的激しい場合、第１のｒａｎｋがアイドル状態にならなくても、第１のｒａｎｋは時間に合わせてリフレッシュされ得る。リフレッシュ延期によって発生する受動リフレッシュによる、コンピュータシステムのパフォーマンスに生じる影響が軽減され、メモリリフレッシュの柔軟性が向上する。したがって、システムパフォーマンスを向上させることができ、リフレッシュオーバヘッドを減らすことができる。
【００１３】
第１の態様又は第１の態様の第１から第３の実行可能な実装例のうちのいずれか１つに関連して、第５の実行可能な実装例では、複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔でメモリコントローラがリフレッシュする段階は、第１の期間内に受信したアクセス要求内にある第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値以上であり、且つ第１のｒａｎｋに対する延期されたリフレッシュの数が、指定された第５の閾値より大きい場合、複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔でメモリコントローラがリフレッシュする段階を含む。第５の閾値は、指定された警告値より小さく、警告値は、第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる。
【００１４】
第１の態様又は第１の態様の第１から第３の実行可能な実装例のうちのいずれか１つに関連して、第６の実行可能な実装例では、複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔でリフレッシュする段階は、第１の期間内に受信したアクセス要求の数が、指定された第３の閾値以下であり、且つ第１のｒａｎｋに対するアクセス要求の数が０より大きく、且つ第１のｒａｎｋに対する延期されたリフレッシュの数が、指定された第５の閾値より大きい場合、複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔でメモリコントローラがリフレッシュする段階を含む。第５の閾値は、指定された警告値より小さく、警告値は、第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる。
【００１５】
第２の態様によれば、本願はコンピュータシステムを提供する。コンピュータシステムは、メモリコントローラと、メモリコントローラに接続されたダイナミックランダムアクセスメモリＤＲＡＭとを含み、ＤＲＡＭは複数のｒａｎｋを含む。メモリコントローラは、第１の態様又は第１の態様の実行可能な実装例のうちのいずれか１つにおいて説明された方法を実施するように構成される。
【００１６】
第３の態様によれば、本願はメモリコントローラを提供する。メモリコントローラは、通信インタフェースとリフレッシュ回路とを含む。通信インタフェースは、コンピュータシステム内のプロセッサから送信されるアクセス要求を受信するように構成される。第１の期間内に受信したアクセス要求のターゲットｒａｎｋの数が、指定された第１の閾値より小さく、且つこれらのアクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第２の閾値より大きい場合、リフレッシュ回路は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）の複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔でリフレッシュするように構成される。Ｔは標準的な平均リフレッシュ間隔を示すのに用いられ、Ｎは１より大きい整数である。
【００１７】
第３の態様に関連して、第１の実行可能な実装例では、リフレッシュ回路はさらに、第２の期間内に受信したアクセス要求のターゲットｒａｎｋの数が、指定された第１の閾値以上であるか、又はこれらのアクセス要求のうち読み出し要求若しくは書き込み要求の割合が、指定された第２の閾値以下である場合、第１のｒａｎｋをＴの間隔でリフレッシュするように構成される。
【００１８】
第３の態様及び第３の態様の第１の実行可能な実装例に関連して、第２の実行可能な実装例では、通信インタフェースはさらに、第１のｒａｎｋをリフレッシュするプロセスにおいて、第１のｒａｎｋにアクセスするための第１のアクセス要求を受信するように構成される。メモリコントローラはさらに、バッファを含む。バッファは、構成されたバッファキューに第１のアクセス要求をバッファリングするように構成される。バッファは、少なくともバッファキューとスケジューリングキューとを含む。バッファキューは、リフレッシュ動作が行われているｒａｎｋに対するアクセス要求をバッファリングするように構成され、スケジューリングキューは、リフレッシュ動作が行われていないｒａｎｋに送信されるアクセス要求をバッファリングするように構成される。
【００１９】
第３の態様の第２の実行可能な実装例に関連して、第３の実行可能な実装例では、通信インタフェースはさらに、ＤＲＡＭの第２のｒａｎｋにアクセスするための第２のアクセス要求を受信するように構成される。バッファはさらに、第２のｒａｎｋに対してリフレッシュ動作が何も行われていない場合、第２のアクセス要求をスケジューリングキューにバッファリングするように構成される。
【００２０】
第３の態様又は第３の態様の第１から第３の実装例のうちのいずれか１つに関連して、第４の実行可能な実装例では、リフレッシュ回路は具体的に、第１の期間内に受信したアクセス要求の数が第３の閾値より大きく、且つ受信したアクセス要求内にある第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値より小さい場合、第１のｒａｎｋをＴ／Ｎの間隔でリフレッシュするように構成される。第１の期間において、第１のｒａｎｋにアクセスするためのアクセス要求の数は０より大きい。
【００２１】
第３の態様又は第３の態様の第１から第３の実行可能な実装例のうちのいずれか１つに関連して、第５の実行可能な実装例では、リフレッシュ回路は具体的に、第１の期間内に受信したアクセス要求内にある第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値以上であり、且つ第１のｒａｎｋに対する延期されたリフレッシュの数が、指定された第５の閾値より大きい場合、複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔でリフレッシュするように構成される。第５の閾値は、指定された警告値より小さく、警告値は、第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる。
【００２２】
第３の態様又は第３の態様の第１から第３の実行可能な実装例のうちのいずれか１つに関連して、第６の実行可能な実装例では、リフレッシュ回路は具体的に、第１の期間内に受信したアクセス要求の数が、指定された第３の閾値以下であり、且つ第１のｒａｎｋに対するアクセス要求の数が０より大きく、且つ第１のｒａｎｋに対する延期されたリフレッシュの数が、指定された第５の閾値より大きい場合、複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔でリフレッシュするように構成される。第５の閾値は、指定された警告値より小さく、警告値は、第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる。
【００２３】
第４の態様によれば、本願はメモリリフレッシュ装置を提供する。メモリリフレッシュ装置は、コンピュータシステム内のダイナミックランダムアクセスメモリＤＲＡＭをリフレッシュするように構成され、ＤＲＡＭは複数のｒａｎｋを含む。メモリリフレッシュ装置は、第１の態様又は第１の態様の実行可能な実装例のうちのいずれか１つによる方法を実施するように構成された機能モジュールを含む。
【００２４】
第５の態様によれば、本願はさらに、プログラムコードを含むコンピュータプログラム製品を提供する。プログラムコードに含まれる命令がコンピュータにより実行されて、第１の態様又は第１の態様の実行可能な実装例のうちのいずれか１つによる方法が実施される。
【００２５】
第６の態様によれば、本願はさらにコンピュータ可読記憶媒体を提供する。コンピュータ可読記憶媒体は、プログラムコードを格納するように構成され、プログラムコードに含まれる命令がコンピュータにより実行されて、第１の態様又は第１の態様の実行可能な実装例のうちのいずれか１つによる方法が実施される。
【図面の簡単な説明】
【００２６】
本発明の実施形態における技術的解決手段をより明確に説明するために、以下では、これらの実施形態を説明するのに必要な添付図面を簡潔に説明する。以下の説明にある添付図面は、本発明のほんの一部の実施形態を示しているだけであることは明らかである。
【００２７】
【図１】本発明の一実施形態によるコンピュータシステムの概略アーキテクチャ図である。
【００２８】
【図２】本発明の一実施形態によるメモリコントローラの概略構造図である。
【００２９】
【図３】本発明の一実施形態によるメモリリフレッシュ方法の概略フローチャートである。
【００３０】
【図４】本発明の一実施形態による別のメモリリフレッシュ方法の概略フローチャートである。
【００３１】
【図５】本発明の一実施形態によるメモリリフレッシュ装置の概略構造図である。
【発明を実施するための形態】
【００３２】
本発明における技術的解決手段をより十分に当業者に理解してもらうために、以下では、本発明の実施形態における添付図面を参照して、本発明の実施形態における技術的解決手段を明確に説明する。説明する実施形態は、本発明の実施形態のほんの一部であって、全てではないことは明らかである。
【００３３】
図１は、本発明の一実施形態によるコンピュータシステムの概略アーキテクチャ図である。図１に示すように、コンピュータシステム１００は、少なくともプロセッサ１０２と、メモリコントローラ１０６と、メモリ１０８とを含んでよい。通常、メモリコントローラ１０６はプロセッサ１０２に統合されてよい。本発明の本実施形態において提供されるコンピュータシステムでは、図１に示す構成要素に加えて、コンピュータシステム１００はさらに、通信インタフェース、及び外部記憶装置としての機能を果たす磁気ディスクなどの他の構成要素を含んでよいことに留意されたい。本明細書では、いかなる制限も課すことはない。
【００３４】
プロセッサ（Ｐｒｏｃｅｓｓｏｒ）１０２は、コンピュータシステム１００の演算装置及び制御装置（Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）である。プロセッサ１０２は、複数のプロセッサコア（ｃｏｒｅ）１０４を含んでよい。プロセッサ１０２は、超大規模集積回路であってよい。オペレーティングシステム及び別のソフトウェアプログラムがプロセッサ１０２にインストールされており、プロセッサ１０２は、メモリ１０８、バッファ、及び磁気ディスクにアクセスすることができる。本発明の本実施形態では、プロセッサ１０２のＣｏｒｅ１０４は、例えば、中央演算処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ、ＣＰＵ）であってもよく、別の特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ、ＡＳＩＣ）であってもよいことが理解できるであろう。
【００３５】
メモリコントローラ（Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ）１０６は、コンピュータシステム１００の内部にある、メモリ１０８を制御するバス回路コントローラであり、メモリ１０８からＣｏｒｅ１０４へのデータ伝送を管理し計画するように構成される。メモリ１０８は、メモリコントローラ１０６を介してＣｏｒｅ１０４とデータをやり取りしてよい。メモリコントローラ１０６は、別個のチップであってよく、システムバスを介してＣｏｒｅ１０４に接続されてよい。当業者であれば、メモリコントローラ１０６は（図１に示すように）プロセッサ１０２に統合されてもよく、又はノースブリッジに組み込まれてもよいことを認識しているであろう。メモリコントローラ１０６の具体的な位置は、本発明の本実施形態では限定されない。実際の応用では、メモリコントローラ１０６は、データをメモリ１０８に書き込むか、又はデータをメモリ１０８から読み出すために必要なロジックを制御してよい。
【００３６】
メモリ１０８は、コンピュータシステム１００のメインメモリである。メモリ１０８は、ダブルデータレート（ｄｏｕｂｌｅ  ｄａｔａ  ｒａｔｅ、ＤＤＲ）バスを介してプロセッサ１０２に接続される。メモリ１０８は通常、オペレーティングシステム上で現在動いている様々なソフトウェアを格納し、データ、及び外部記憶装置とやり取りされる情報を入出力するように構成される。プロセッサ１０２のアクセス速度を上げるために、メモリ１０８は、アクセス速度が高いという利点を有する必要がある。従来のコンピュータシステムアーキテクチャでは、ダイナミックランダムアクセスメモリ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、ＤＲＡＭ）がメモリ１０８として通常用いられている。プロセッサ１０２は、メモリコントローラ１０６を介して高速でメモリ１０８にアクセスし、メモリ１０８の任意の記憶単位に対して読み出し動作及び書き込み動作を行うことができる。
【００３７】
本発明の本実施形態では、メモリ１０８がＤＲＡＭであることが、説明の一例として用いられる。したがって、メモリ１０８はＤＲＡＭ１０８とも呼ばれることがある。データがＤＲＡＭ１０８の記憶単位（これはＤＲＡＭ−ｃｅｌｌとも呼ばれることがある）に格納される。本発明の本実施形態では、記憶単位はデータを格納する最小の記憶単位（ｃｅｌｌ）である。一般に、１つの記憶単位が１ビット（ｂｉｔ）のデータを格納し得る。もちろん、いくつかの記憶単位が代替的に、複数の値を格納してもよい。上述したように、ＤＲＡＭは、キャパシタ内の電荷量を用いてデータ０又は１を示す。キャパシタ内の電荷は漏れ出すことがあり、キャパシタ内の電荷が不十分な場合、格納されたデータの誤りにつながることがある。したがって、メモリコントローラ１０６は、ある期間の間隔でＤＲＡＭ１０８内のデータをリフレッシュして、ＤＲＡＭ１０８内のデータ損失を回避する。さらに、ＤＲＡＭ１０８は揮発性であり、コンピュータシステム１００の電源をオフにすると、ＤＲＡＭ１０８内の情報は保存されない。
【００３８】
実際の応用では、ＤＲＡＭ１０８のＤＲＡＭ−ｃｅｌｌが行列状に配置される。この行列は、ＤＲＡＭ−ｂａｎｋと呼ばれる。ＤＲＡＭ−ｂａｎｋの任意のビットが、対応する行デコーダ及び列デコーダを用いてメモリコントローラ１０６により位置特定され得る。複数のＤＲＡＭ−ｂａｎｋによってＤＲＡＭ−ｃｈｉｐ（これは、メモリチップとも呼ばれることがある）が形成されてよく、複数のＤＲＡＭ−ｃｈｉｐによってＤＲＡＭ−ｒａｎｋが形成されてよい。複数のＤＲＡＭ−ｒａｎｋが統合されて、デュアルインラインメモリモジュール（Ｄｕａｌ−Ｉｎｌｉｎｅ−Ｍｅｍｏｒｙ−Ｍｏｄｕｌｅｓ、ＤＩＭＭ）になり得る。例えば、図１に示すように、ＤＲＡＭ１０８は、複数のチャネル（ｃｈａｎｎｅｌ）１１０を含んでよい。各チャネル１１０は少なくとも１つのｒａｎｋを含んでよく、各ｒａｎｋは少なくとも１つのｂａｎｋを含んでよい。各ｂａｎｋは、データを格納する複数の記憶単位を含む。当業者であれば、ｒａｎｋとは、同じチップ選択（ｃｈｉｐ  ｓｅｌｅｃｔ）信号に接続されたメモリチップ（ｃｈｉｐ）であることを認識しているであろう。メモリコントローラ１０６は、同じｒａｎｋのｃｈｉｐに対して書き込み動作を行うことができ、同じｒａｎｋのｃｈｉｐが同じ制御信号を共有する。メモリコントローラ１０６は、ＤＲＡＭ１０８の各チャネルの記憶単位にあるデータにメモリバスを介してアクセスしてよい。
【００３９】
当業者であれば、ＤＲＡＭ−ｃｈｉｐのリフレッシュサイクルがＤＲＡＭ−ｃｈｉｐの各記憶単位の保持時間（ｒｅｔｅｎｔｉｏｎ  ｔｉｍｅ）と関連していることを認識しているであろう。現在、一般的に見られるＤＲＡＭ−ｃｈｉｐの標準的なリフレッシュサイクルは全て一定になっている。一般に、標準的なリフレッシュサイクルは６４ミリ秒である。先行技術のリフレッシュ手法では、メモリコントローラが、ｒａｎｋをリフレッシュする必要があるかどうかをｔＲＥＦＩ時間の間隔で確認する。各リフレッシュでは、ｔＲＦＣ時間を費やす必要がある。ｔＲＥＦＩとは、メモリの平均リフレッシュ間隔（ａｖｅｒａｇｅ  ｒｅｆｒｅｓｈ  ｉｎｔｅｒｖａｌ）である。言い換えれば、ｔＲＥＦＩは、メモリコントローラがリフレッシュコマンドを送信する平均間隔を示すのに用いられる。ｔＲＥＦＩは、リフレッシュサイクルと、リフレッシュサイクルの間に送信されるリフレッシュコマンドの数とに基づいて、決定されてよい。例えば、ｔＲＥＦＩは、６４ミリ秒／８１９２＝７．８マイクロ秒であってよく、６４ミリ秒はリフレッシュサイクルであり、８１９２はリフレッシュサイクルの間に送信されるリフレッシュコマンドの数である。ｔＲＦＣとは、行のリフレッシュサイクル時間（ｒｏｗ  ｒｅｆｒｅｓｈ  ｃｙｃｌｅ  ｔｉｍｅ）である。言い換えれば、ｔＲＦＣは、ＤＲＡＭ−ｒａｎｋにおいて１つのリフレッシュコマンドを実行するために必要な時間を示すのに用いられる。一般に、ｔＲＥＦＩが長いほど、ｔＲＦＣが大きいことを示し、ｔＲＥＦＩが短いほど、ｔＲＦＣが小さいことを示す。リフレッシュプロセスのｔＲＦＣ時間内では、リフレッシュ中のｒａｎｋが、当該ｒａｎｋに対する要求に応答することができない。したがって、リフレッシュによってシステムパフォーマンスに生じる影響を軽減するために、リフレッシュ頻度を調整してよい。
【００４０】
さらに、当業者であれば、異なるリフレッシュモードが異なるリフレッシュ頻度を有することを認識しているであろう。ダブルデータレート（ｄｏｕｂｌｅ  ｄａｔａ  ｒａｔｅ、ＤＤＲ）プロトコルでは、３つのリフレッシュモード、つまり１Ｘモード、２Ｘモード、及び４Ｘモードを指定している。１Ｘモードでは、ＤＤＲプロトコルで指定されたｔＲＥＦＩ（ｂａｓｅ）の間隔で、リフレッシュ動作がメモリチップに対して行われ、１つのリフレッシュ要求を実行する時間がｔＲＦＣ１である。２Ｘモードでは、ｔＲＥＦＩ（ｂａｓｅ）／２の間隔でメモリチップに対してリフレッシュ動作が行われ、１つのリフレッシュ要求を実行する時間がｔＲＦＣ２である。４Ｘモードでは、ｔＲＥＦＩ（ｂａｓｅ）／４の間隔でメモリチップに対してリフレッシュ動作が行われ、１つのリフレッシュ要求を実行する時間がｔＲＦＣ３であり、ｔＲＦＣ１＞ｔＲＦＣ２＞ｔＲＦＣ３という関係になる。ｔＲＥＦＩ（ｂａｓｅ）は、このコンピュータシステムが準拠するＤＤＲプロトコルにおいて規定される標準的な平均リフレッシュ間隔を示すのに用いられる。通常、ｔＲＥＦＩ（ｂａｓｅ）は、ＤＲＡＭチップの表面温度が標準温度範囲内（０℃から８５℃）であるという条件において、１ＸモードのｔＲＥＦＩを示すのに用いられる。ＤＤＲ４規格によれば、ｔＲＥＦＩ及びｔＲＦＣの値は、実際の状況に応じて設定されてよい。例えば、８Ｇｂの容量を有する、１Ｘ構成のＤＲＡＭ−ｃｈｉｐの場合、ｔＲＥＦＩは７．８マイクロ秒であってよく、ｔＲＦＣは３５０ナノ秒であってよい。４Ｘ構成では、ｔＲＥＦＩは１．９５マイクロ秒であってよく、ｔＲＦＣは１６０ナノ秒であってよい。動的なリフレッシュモード調整が、ＤＤＲ４プロトコルにおいてサポートされる。ＤＤＲ４プロトコルによれば、メモリリフレッシュプロセスにおいて、メモリリフレッシュモードが、１Ｘモード、２Ｘモード、及び４Ｘモードの間で、あるモードから別のモードに切り替えられてよい。
【００４１】
上述したように、先行技術では、ｒａｎｋをリフレッシュする必要があるかどうかを、メモリコントローラがｔＲＥＦＩ時間の間隔で確認する。ｒａｎｋがアイドル状態の場合、メモリコントローラは当該ｒａｎｋをリフレッシュし、ｒａｎｋがアイドル状態ではない場合、メモリコントローラは当該ｒａｎｋのリフレッシュを延期する。延期時間がある閾値を超えると、メモリコントローラは強制的に当該ｒａｎｋをリフレッシュする。しかしながら、メモリ内のトラフィックが比較的激しい場合、ｒａｎｋがアイドル状態になることはほとんどなく、ｒａｎｋがアイドル状態にならないこともあり得る。ｒａｎｋがアイドルになった後にだけ、当該ｒａｎｋがリフレッシュされる場合、リフレッシュが継続して延期される必要がある。ついに、データ損失を回避するためにリフレッシュを行う必要がある場合、現在の期間内に行われるべきリフレッシュを行う必要があるだけでなく、以前に延期されたリフレッシュの再リフレッシュを行う必要もある。したがって、再リフレッシュを必要とする期間内に、比較的多数のリフレッシュが生じる。この場合、平均リフレッシュ間隔ｔＲＥＦＩに達していなくても、リフレッシュを行う必要がある。言い換えれば、再リフレッシュを行う必要がある場合、受動リフレッシュの増加が生じる。ｒａｎｋにアクセスするための要求に対する応答が、リフレッシュの時間内には行えないため、比較的多数の受動リフレッシュがあると、アクセスサービスの中断時間が増える。したがって、プロセッサはストールすることがあり、又は効率の低い動作をすることがある。この場合、システムパフォーマンスが大きく影響を受け、より高いリフレッシュオーバヘッドが生じる。
【００４２】
当業者であれば、メモリ１０８の複数のｒａｎｋに対するリフレッシュ動作が独立していることを認識しているであろう。研究過程において、リフレッシュプロセスでは、異なるリフレッシュモードが異なるリフレッシュ頻度を有し、異なるリフレッシュ頻度が異なるバス利用率につながるので、リフレッシュプロセスでは、リフレッシュモードの選択もシステムパフォーマンスに影響を与えることが分かっている。さらに、ＤＲＡＭをリフレッシュするプロセスでは、リフレッシュ中のｒａｎｋがリフレッシュプロセスの間に要求に応答できないので、システムのリフレッシュオーバヘッドをもたらす。さらに、リフレッシュプロセスの間に、リフレッシュ中のｒａｎｋに対する要求がスケジューリングキューを混雑させるため、別のｒａｎｋに対する要求がスケジューリングキューに入ることができず、その結果、当該別のｒａｎｋに時間内に送信されないという事態が生じる。このことも、総合的なシステムパフォーマンスに影響を与える原因である。
【００４３】
コンピュータシステムのリフレッシュオーバヘッドを減らし、リフレッシュプロセスにおけるコンピュータシステムの総合的なパフォーマンスを向上させるために、本発明の一実施形態がメモリリフレッシュ方法を提供し、これにより、メモリスケジューリングポリシーを向上させることができ、リフレッシュ頻度を動的に調整することで、システムバス利用率を向上させることができる。さらに、スケジューリングキューでのリフレッシュ動作の混雑が原因で、別のｒａｎｋに対する要求を実行できないという事態も回避することができる。したがって、リフレッシュオーバヘッドを減らすことができ、リフレッシュプロセスにおけるシステムパフォーマンスを向上させることができる。以下では、本発明の本実施形態において提供されるコンピュータシステムのメモリリフレッシュ手法を、図２を参照して詳細に説明する。
【００４４】
図２は、本発明の一実施形態によるメモリコントローラ１０６の概略構造図である。明解な説明を目的に、図２も、メモリコントローラ１０６とプロセッサコア１０４との間、及びメモリコントローラ１０６とメモリ１０８との間の接続を概略的に示す。メモリ１０８は、ｒａｎｋ０、ｒａｎｋ１、及びｒａｎｋ２などの複数のｒａｎｋを含んでよい。図２に示すように、メモリコントローラ１０６は、通信インタフェース１０６１、統計モジュール１０６２、リフレッシュ回路１０６４、バッファキュー１０６６、スケジューリングキュー１０６８、及びスケジューラ１０６９を含んでよい。
【００４５】
本発明の本実施形態では、メモリコントローラ１０６内の通信インタフェース１０６１は、コンピュータのプロセッサ１０２に接続されたフロントエンドインタフェースを含んでよく、またメモリ１０８に接続されたバックエンドインタフェースも含んでよい。具体的には、メモリコントローラ１０６は、通信インタフェース１０６１を介して、コンピュータシステムのプロセッサ（例えば図１のＣｏｒｅ１０４）から送信されるアクセス要求を受信してよい。メモリコントローラ１０６は、通信インタフェース１０６１を介して、データをメモリ１０８に格納しても、データをメモリ１０８から読み出してもよい。
【００４６】
統計モジュール１０６２は、２つの態様で統計的機能を含んでよい。第一に、統計モジュール１０６２は、メモリコントローラ１０６が受信したアクセス要求のターゲットｒａｎｋの分布に関する統計データと、これらのアクセス要求の動作タイプとを収集するように構成されてよい。ターゲットｒａｎｋとは、アクセス要求を用いてアクセスされるｒａｎｋである。アクセス要求の動作タイプは、読み出し動作及び書き込み動作などのタイプを含んでよい。具体的には、統計モジュール１０６２は、アクセス要求のターゲットｒａｎｋに関する統計データを収集し、これらのアクセス要求内にある動作タイプを取得してよい。第二に、統計モジュール１０６２はさらに、メモリコントローラ１０６が受信したアクセス要求の数に関する統計データを収集してよい。具体的には、統計モジュール１０６２は、アクセス対象ｒａｎｋごとのアクセス要求の数と、メモリコントローラ１０６が受信したアクセス要求の総数とに関する統計データを収集してよい。統計モジュール１０６２は、バッファキュー１０６６及びスケジューリングキュー１０６８にバッファリングされたアクセス要求に基づいて、統計データを収集してよい。実際の応用では、統計モジュール１０６２はカウンタで実装されてよい。言い換えれば、統計モジュール１０６２は、１つ又は複数のカウンタを含んでよい。本発明の本実施形態では、アクセス要求は、メモリにアクセスするプロセッサの要求である。アクセス要求は、読み出し要求及び書き込み要求などを含んでよい。言い換えれば、プロセッサは、アクセス要求に従って、データをメモリから読み出しても、データをメモリに書き込んでもよい。
【００４７】
リフレッシュ回路１０６４は、統計モジュール１０６２の統計的な結果に基づくｔＲＥＦＩ時間の間隔で、リフレッシュ要求を生成するかどうかを判定し、生成されたリフレッシュ要求をスケジューリングキューに入れるように構成される。例えば、あるｒａｎｋに対するアクセス要求の数が指定された閾値より小さいことを、統計モジュール１０６２が統計データ収集を通じて取得した場合、リフレッシュ回路１０６４は、当該ｒａｎｋに対するリフレッシュ要求を生成し、当該リフレッシュ要求をスケジューリングキュー１０６８に入れてよい。実際の応用では、リフレッシュ回路１０６４により生成されたリフレッシュ要求が、代替的にスケジューラ１０６９に直接送信されてもよく、これにより、スケジューラ１０６９は、生成されたリフレッシュ要求をメモリ１０８に送信し、メモリ１０８は、生成されたリフレッシュ要求に従って、対応するｒａｎｋに対してリフレッシュ動作を行うことが理解できるであろう。ｔＲＥＦＩは、平均リフレッシュ間隔を示すのに用いられることに留意されたい。実際の応用では、リフレッシュ回路１０６４は代替的に、ｔＲＥＦＩより短い間隔でリフレッシュ要求を生成してもよい。例えば、再リフレッシュを行う必要がある場合、リフレッシュ回路１０６４は、ｔＲＥＦＩより短い間隔でリフレッシュ要求を生成してよい。さらに、当業者であれば、ｔＲＥＦＩが異なるリフレッシュモードによって変わることを認識しているであろう。
【００４８】
バッファキュー１０６６は、あるｒａｎｋに対してリフレッシュ動作を行うプロセスにおいて、Ｃｏｒｅ１０４から送信されるアクセス要求を当該ｒａｎｋのためにバッファリングするように構成される。言い換えれば、バッファキュー１０６６は、リフレッシュ動作が行われているｒａｎｋに対する、新たに受信したアクセス要求をバッファリングするように構成される。例えば、メモリ１０８のｒａｎｋ０が一例として用いられる。ｒａｎｋ０に対してリフレッシュ動作を行うプロセスでは、メモリコントローラ１０６がｒａｎｋ０に対するＣｏｒｅ１０４からの読み出し要求を受信した場合、当該読み出し要求は、スケジューリングキュー１０６８ではなく、バッファキュー１０６６にバッファリングされてよい。実際の応用では、スケジューリング優先度がさらに、バッファキュー１０６６のアクセス要求に設定されてよい。例えば、いくつかのアクセス要求が、優先スケジューリング又は標準スケジューリングに設定されてよい。
【００４９】
スケジューリングキュー１０６８は、あるｒａｎｋに送信されるアクセス要求をバッファリングするように構成される。例えば、スケジューリングキュー１０６８は、Ｃｏｒｅ１０４から送信されるアクセス要求、及びリフレッシュ回路１０６４から送信されるリフレッシュ要求などの動作要求をバッファリングするように構成されてよい。さらに、本発明の本実施形態では、スケジューリングキュー１０６８は、リフレッシュ動作が行われていないｒａｎｋに送信されるアクセス要求をバッファリングするように構成される。スケジューラ１０６９は、スケジューリングキュー１０６８内の動作要求（少なくともアクセス要求及びリフレッシュ要求を含む）をメモリ１０８に送信し、例えば、メモリ１０８にアクセスする又はメモリ１０８をリフレッシュする動作を実施するように構成される。本発明の本実施形態では、バッファキュー１０６６は、スケジューリングキュー１０６８のアップフロントバッファである。このように、バッファキュー１０６６は、スケジューリングキュー１０６８に入ることになるアクセス要求をバッファリングするように構成されてよい。本発明の本実施形態では、説明しやすいように、バッファキュー１０６６及びスケジューリングキュー１０６８を含む２つのレベルのバッファが構成されることが、本発明の本実施形態において一例として用いられる。実際の応用では、さらに多くのレベルのバッファが、要件に応じて構成されてよい。例えば、さらに多くのレベルのバッファキュー１０６６が、スケジューリングキュー１０６８の前に構成されてよい。
【００５０】
上述したように、ダブルデータレート（ｄｏｕｂｌｅ  ｄａｔａ  ｒａｔｅ、ＤＤＲ）プロトコルは、３つのリフレッシュモード、つまり１Ｘモード、２Ｘモード、及び４Ｘモードを指定している。本発明の本実施形態では、リフレッシュモードは、少なくとも第１のリフレッシュモード及び第２のリフレッシュモードを含んでよい。第１のリフレッシュモードでは、メモリコントローラはｔＲＥＦＩ（ｂａｓｅ）／Ｎの間隔でリフレッシュを行う。第２のリフレッシュモードでは、メモリコントローラはｔＲＥＦＩ（ｂａｓｅ）の間隔でリフレッシュを行う。例えば、第１のリフレッシュモードは４Ｘモードであってよく、第２のリフレッシュモードは１Ｘモードを含んでよい。ｔＲＥＦＩ（ｂａｓｅ）は、ＤＤＲプロトコルで規定される標準的な平均リフレッシュ間隔を示すのに用いられ、Ｎは１より大きい整数である。通常、ｔＲＥＦＩ（ｂａｓｅ）は、ＤＲＡＭチップの表面温度が標準温度範囲内（０℃から８５℃）であるという条件において、１ＸモードのｔＲＥＦＩを示すのに用いられる。説明しやすいように、ｔＲＥＦＩ（ｂａｓｅ）は、本発明の本実施形態においてＴで示されてもよい。
【００５１】
メモリシステムの場合、リフレッシュ頻度の減少が、リフレッシュ延期の減少よりもシステムパフォーマンス向上にとって重要である。したがって、通常、４Ｘモードでリフレッシュを行うと、１Ｘモードでリフレッシュを行うよりもシステムパフォーマンスが低くなる。さらに、比較的高い割合の読み出し要求又は書き込み要求がアクセス要求内にある場合、メモリ１０８は、読み出しと書き込みとの間の切り替え回数が比較的少数であることに起因して、比較的高い帯域幅利用率を有する。しかしながら、本発明を実装するプロセスでは、ＤＤＲプロトコルが４つのアクティブウィンドウ（Ｆｏｕｒ  Ａｃｔｉｖｅ  Ｗｉｎｄｏｗ、ｔＦＡＷ）を指定しているので、複数のアクセス要求に対して、比較的少数のアクセス対象ターゲットｒａｎｋしかない場合、言い換えれば、複数のアクセス要求がメモリ１０８の比較的少数のｒａｎｋに集中した場合、ｔＦＡＷ時間ウィンドウでは、同時に動作可能な１つのｒａｎｋの行の数が制限されるので、その代わりに総合的なシステムパフォーマンスが低下することが分かる。ｔＦＡＷは、ｔＦＡＷ時間ウィンドウ内で、１つのｒａｎｋが、最大で４つの行アクティブコマンドを送信することが可能であることを意味する。メモリ１０８の２つのｒａｎｋを一例にとってみる。読み出し要求又は書き込み要求の割合が比較的高く、アクセス要求が複数のｒａｎｋのうちの１つに集中している場合、その他のｒａｎｋはリフレッシュ中である。リフレッシュ時間が長いほど、単一のｒａｎｋのアクセス期間が長く、総合的なシステムパフォーマンスの低下が大きいことを示す。
【００５２】
本発明を実施するプロセスでは、４Ｘモードと１Ｘモードとを比較すると、４Ｘモードでのリフレッシュに対する１回のリフレッシュ時間ｔＲＦＣ３が比較的短いので、１回のリフレッシュプロセスでは、ｔＦＡＷ制限によってシステムに生じる影響が比較的小さく、総合的なシステムパフォーマンスの低下が比較的小さいことが分かる。したがって、本発明の本実施形態において、総合的なシステムパフォーマンスを向上させ、システム上のｔＦＡＷ制限を減らすために、本発明の一実施形態において提供されるメモリリフレッシュ方法では、リフレッシュモードを動的に調整することができ、システムのリフレッシュオーバヘッドを減らし、システムパフォーマンスを向上させることができる。
【００５３】
以下では、本発明の一実施形態において提供されるメモリリフレッシュ方法を、図３を参照して詳細に説明する。図３は、本発明の一実施形態によるメモリリフレッシュ方法のフローチャートである。図３に示すメモリリフレッシュ方法は、図１及び図２に示すメモリコントローラ１０６により実行されてよい。図３に示すように、本方法は以下の段階を含んでよい。
【００５４】
段階３０１において、メモリコントローラ１０６は、Ｃｏｒｅ１０４から送信されるアクセス要求を受信する。本発明の本実施形態では、アクセス要求は、メモリ１０８にアクセスするのに用いられる要求である。メモリコントローラ１０６は、アクセス要求に従って、データをメモリ１０８から読み出しても、データをメモリ１０８に書き込んでもよい。アクセス要求の動作タイプが、読み出し動作及び書き込み動作などのタイプを含んでよい。実際の応用では、メモリコントローラ１０６とＣｏｒｅ１０４との間の通信インタフェースを介して、メモリコントローラ１０６は、Ｃｏｒｅ１０４から送信されるアクセス要求を受信することができる。
【００５５】
段階３０２において、メモリコントローラ１０６は、第１の期間内に受信したアクセス要求のターゲットｒａｎｋの数が、指定された第１の閾値より小さいかどうかを判定する。当業者であれば、ｒａｎｋをリフレッシュする必要があるかどうかを、メモリコントローラがｔＲＥＦＩ時間の間隔で確認することを認識しているであろう。各リフレッシュは、ｔＲＦＣ時間を費やす必要がある。ｔＲＥＦＩは、平均リフレッシュ間隔（ａｖｅｒａｇｅ  ｒｅｆｒｅｓｈ  ｉｎｔｅｒｖａｌ）を示すのに用いられ、ｔＲＦＣは、行のリフレッシュサイクル時間（Ｒｅｆｒｅｓｈ  Ｃｙｃｌｅ  Ｔｉｍｅ）を示すのに用いられる。言い換えれば、ｔＲＥＦＩは、メモリコントローラがリフレッシュコマンドを送信する間隔を示すのに用いられ、ｔＲＦＣは、１つのリフレッシュコマンドをＤＲＡＭ−ｒａｎｋで実行するのに必要な時間を示すのに用いられる。本発明の本実施形態では、説明しやすいように、あるｒａｎｋをリフレッシュする必要があるかどうかをメモリコントローラ１０６が確認するプロセスは、リフレッシュポーリングプロセスと呼ばれる。１つのｔＲＥＦＩ時間は、期間と呼ばれる。言い換えれば、メモリコントローラ１０６は、ｔＲＥＦＩ時間の間隔でリフレッシュポーリングを一度行う。
【００５６】
本発明の本実施形態では、１つのリフレッシュポーリングプロセスが、説明の一例として用いられる。この段階では、第１のリフレッシュポーリングプロセスにおいて、メモリコントローラ１０６内のリフレッシュ回路１０６４が、統計モジュール１０６２により統計データ収集を通じて取得されたアクセス要求のアクセス対象ターゲットｒａｎｋの分布に基づいて、第１の期間内にメモリコントローラ１０６が受信したアクセス要求のターゲットｒａｎｋの数が、指定された第１の閾値より小さいかどうかを判定してよい。本発明の本実施形態では、ターゲットｒａｎｋとは、アクセス要求を用いてアクセスされるｒａｎｋである。ターゲットｒａｎｋの数は、アクセス要求を用いてアクセスされるｒａｎｋの数である。あるケースでは、リフレッシュポーリングプロセスにおいて、メモリコントローラ１０６は、統計モジュール１０６２により統計データ収集を通じて取得された、メモリコントローラ１０６にバッファリングされている処理対象アクセス要求のターゲットｒａｎｋの数に基づいて、ターゲットｒａｎｋの数が、指定された第１の閾値より大きいかどうかを判定してよい。別のケースでは、メモリコントローラ１０６は、統計モジュール１０６２により統計データ収集を通じて取得された、指定期間内にメモリコントローラ１０６が受信したアクセス要求のターゲットｒａｎｋの数に基づいて、ターゲットｒａｎｋの数が第１の閾値より大きいかどうかを判定してよい。指定期間は、ｔＲＥＦＩ以下の期間であってよい。第１の閾値は０より大きく、第１の閾値はメモリ１０８のｒａｎｋ総数より小さい。実際の応用では、第１の閾値はメモリ１０８のｒａｎｋ総数に基づいて決定されてよい。例えば、第１の閾値は、ＤＲＡＭのｒａｎｋ総数の半分に設定されてよい。アクセス要求のターゲットｒａｎｋの数が第１の閾値より小さい場合、本方法は段階３０４に進む。アクセス要求のターゲットｒａｎｋの数が第１の閾値以上である場合、本方法は段階３０８に進む。
【００５７】
この段階では、第１の閾値は、メモリコントローラが受信したアクセス要求のアクセス対象ターゲットｒａｎｋが集中しているかどうかを判定するのに用いられる。本発明の本実施形態では、第１の閾値は、メモリ１０８のｒａｎｋ総数に基づいて決定されてよい。例えば、メモリ１０８が４つのｒａｎｋを含む場合、第１の閾値は２に設定されてよい。
【００５８】
段階３０４において、メモリコントローラ１０６は、受信したアクセス要求のうち読み出し要求又は書き込み要求の割合が第２の閾値より大きいかどうかを判定する。上述したように、比較的高い割合の読み出し要求又は書き込み要求がアクセス要求内にある場合、メモリ１０８は、読み出しと書き込みとの間の切り替え回数が比較的少数であることに起因して、比較的高い帯域幅利用率を有する。本発明の本実施形態では、第２の閾値は、アクセス要求のうち読み出し要求又は書き込み要求の割合が比較的高いかどうかを判定するのに用いられる。したがって、実際の応用では、第２の閾値は、比較的高い割合に設定されてよい。例えば、読み出し要求の割合が、受信したアクセス要求総数のうち読み出し要求の数の割合で測定される場合、第２の閾値は６０％であってよい。
【００５９】
本発明の本実施形態では、読み出し要求の割合は、受信したアクセス要求のうち読み出し要求の割合を示すのに用いられる。書き込み要求の割合は、受信したアクセス要求のうち書き込み要求の割合を示すのに用いられる。例えば、読み出し要求の割合は、アクセス要求総数のうち読み出し要求の数の割合で表されてよい。書き込み要求の割合は、アクセス要求総数のうち書き込み要求の数の割合で表されてよい。実際の応用では、読み出し要求の割合は、書き込み要求の数に対する読み出し要求の数の比率で表されてよい。書き込み要求の割合は、読み出し要求の数に対する書き込み要求の数の比率で表されてよい。読み出し要求の割合又は書き込み要求の割合を決定することができる限り、本明細書ではいかなる制限も課すことはない。
【００６０】
アクセス要求のうち読み出し要求の割合が第２の閾値より高い場合、それは、第１の期間内に比較的多数の読み出し要求があることを示していることが理解できるであろう。アクセス要求のうち書き込み要求の割合が第２の閾値より高い場合、それは、第１の期間内に比較的多数の書き込み要求があることを示している。本発明の本実施形態では、アクセス要求のうち読み出し要求又は書き込み要求の割合が第２の閾値より大きい場合、本方法は段階３０６に進む。アクセス要求のうち読み出し要求又は書き込み要求の割合が第２の閾値以下である場合、本方法は段階３０８に進む。
【００６１】
段階３０６において、メモリコントローラ１０６は、第１のリフレッシュモードに従って第１のリフレッシュ要求を生成する。本発明の本実施形態では、統計モジュール１０６２の統計的な結果に基づいて、アクセス要求のアクセス対象ターゲットｒａｎｋの数が、指定された第１の閾値より小さく、且つこれらのアクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第２の閾値より大きいと、リフレッシュ回路１０６４が判定した場合、メモリコントローラ１０６内のリフレッシュ回路１０６４は、第１のｒａｎｋを第１のリフレッシュモードでリフレッシュすると判定してよい。第１のリフレッシュモードにおいて、メモリコントローラは、ｔＲＥＦＩ（ｂａｓｅ）／Ｎの間隔でリフレッシュを行う。ｔＲＥＦＩ（ｂａｓｅ）は、標準的な平均リフレッシュ間隔を示すのに用いられ、Ｎは１より大きい整数である。例えば、第１のリフレッシュモードは、４Ｘモードでも２Ｘモードでもよい。言い換えれば、メモリコントローラ１０６が受信したアクセス要求のアクセス対象ターゲットｒａｎｋが比較的集中しており、読み出し要求の割合又は書き込み要求の割合が比較的高い場合、第１のｒａｎｋは、４Ｘモード又は２Ｘモードでリフレッシュされてよい。
【００６２】
段階３０８において、メモリコントローラ１０６は、第２のリフレッシュモードに従って第２のリフレッシュ要求を生成する。本発明の本実施形態では、統計モジュール１０６２の統計的な結果に基づいて、アクセス要求のアクセス対象ターゲットｒａｎｋの数が、指定された第１の閾値以上であるか、又は受信したアクセス要求のうち読み出し要求又は書き込み要求の割合が第２の閾値以下であると、リフレッシュ回路１０６４が判定した場合、メモリコントローラ１０６内のリフレッシュ回路１０６４は、第１のｒａｎｋを第２のリフレッシュモードでリフレッシュすると判定してよい。具体的には、メモリコントローラ１０６は、第２のリフレッシュモードに従って第２のリフレッシュ要求を生成してよい。第２のリフレッシュモードにおいて、メモリコントローラは、ｔＲＥＦＩ（ｂａｓｅ）の間隔でリフレッシュを行う。ｔＲＥＦＩ（ｂａｓｅ）は、標準的な平均リフレッシュ間隔を示すのに用いられる。本発明の本実施形態では、第２のリフレッシュモードは１Ｘモードであってよい。言い換えれば、メモリコントローラ１０６が受信したアクセス要求のアクセス対象ターゲットｒａｎｋが集中せず、また読み出し要求の割合と書き込み要求の割合とが比較的等しく、読み出しと書き込みとの間で比較的多数の切り替えが必要であることを示している場合、第１のｒａｎｋは１Ｘモードでリフレッシュされてよい。
【００６３】
段階３１０において、メモリコントローラ１０６は、第１のリフレッシュ要求に従ってメモリの第１のｒａｎｋをリフレッシュする。第１のｒａｎｋは、メモリ内のリフレッシュされる任意のランクである。具体的には、段階３０６において、メモリコントローラ１０６内のリフレッシュ回路１０６４が第１のリフレッシュ要求を生成した後に、メモリコントローラ１０６は、生成された第１のリフレッシュ要求をスケジューリングキュー１０６８に入れてよく、これにより、段階３１０において、スケジューリングキュー１０６８にある第１のリフレッシュ要求をスケジューラ１０６９がメモリ１０８に送信し、メモリ１０８は、メモリコントローラ１０６により生成された第１のリフレッシュ要求に従って、リフレッシュ動作を第１のｒａｎｋに対して行ってよい。
【００６４】
段階３１２において、メモリコントローラ１０６は、第２のリフレッシュ要求に従ってメモリの第１のｒａｎｋをリフレッシュする。具体的には、段階３０８において、メモリコントローラ１０６内のリフレッシュ回路１０６４が第２のリフレッシュ要求を生成した後に、メモリコントローラ１０６は、生成された第２のリフレッシュ要求をスケジューリングキュー１０６８に入れてよく、これにより、段階３１２において、スケジューリングキュー１０６８にある第２のリフレッシュ要求をスケジューラ１０６９がメモリ１０８に送信し、メモリ１０８は、メモリコントローラ１０６により生成された第２のリフレッシュ要求に従って、リフレッシュ動作を第１のｒａｎｋに対して行ってよい。
【００６５】
図３は、一例として第１のリフレッシュポーリングプロセスのみを用いて説明されていることが理解できるであろう。実際の応用では、異なるリフレッシュポーリングプロセスにおいて、アクセス要求のアクセス対象ターゲットｒａｎｋの分布と、読み出し要求又は書き込み要求の割合とに基づいて、第１のｒａｎｋのリフレッシュモードが動的に調整されてよい。例えば、第１のリフレッシュポーリングプロセスでは、メモリコントローラ１０６は第１のｒａｎｋを第１のリフレッシュモードでリフレッシュしてよい。第２のリフレッシュポーリングプロセスでは、メモリコントローラ１０６は第２のｒａｎｋを第２のリフレッシュモードでリフレッシュしてよい。
【００６６】
最後に、アクセス要求のアクセス対象ターゲットｒａｎｋが比較的集中しており、且つこれらのアクセス要求のうち読み出し要求又は書き込み要求の割合が比較的高い場合、１つのｒａｎｋにある同時に動作可能な行の数がｔＦＡＷで制限されるので、リフレッシュプロセスの総合的なシステムパフォーマンスが著しく低下する。本発明の本実施形態では、システムパフォーマンスを向上させるために、アクセス要求のターゲットｒａｎｋの分布と、これらのアクセス要求のうち読み出し要求又は書き込み要求の割合とに基づいて、リフレッシュモードが動的に調整されてよく、これにより、ｔＦＡＷ制限によって生じたシステムパフォーマンスオーバヘッドをリフレッシュ頻度の調整によって補償することができ、さらに、リフレッシュプロセスのシステムパフォーマンスを向上させることができる。さらに、先行技術と比較すると、本発明の本実施形態において提供されるメモリリフレッシュ方法では、現在のリフレッシュプロセスにおけるアクセス要求の特徴に基づいて、リフレッシュモードを決定することができるので、決定されたリフレッシュモードはリフレッシュプロセスと強く関連しており、そのため、リフレッシュオーバヘッドを効果的に減らし、システムパフォーマンスを向上させることができる。
【００６７】
前述の実施形態では、リフレッシュプロセスのシステムパフォーマンスが、リフレッシュ頻度の調整の観点から向上する。システムのリフレッシュパフォーマンスをさらに向上させるために、本発明の一実施形態では、先行技術のリフレッシュ方法がさらにリフレッシュ時間の観点から最適化され、メモリリフレッシュプロセスにおけるシステムの総合的パフォーマンスをさらに向上させる。以下では、本発明の本実施形態において提供されるメモリリフレッシュ方法を、図４を参照してさらに説明する。
【００６８】
段階４０２において、メモリコントローラ１０６は、受信したアクセス要求の数が第３の閾値より大きいかどうかを判定する。上述したように、メモリ内のデータ損失を回避するために、ｒａｎｋをリフレッシュする必要があるかどうかを、メモリコントローラ１０６がｔＲＥＦＩ時間の間隔で確認する。具体的には、リフレッシュポーリングプロセスにおいて、メモリコントローラ１０６は、統計モジュール１０６２により統計データ収集を通じて取得された、メモリコントローラ１０６にバッファリングされている処理対象アクセス要求の数に基づいて、アクセス要求の数が第３の閾値より大きいかどうかを判定してよい。別のケースでは、メモリコントローラ１０６は、統計モジュール１０６２により統計データ収集を通じて取得された、指定期間内にメモリコントローラ１０６が受信したアクセス要求の数に基づいて、アクセス要求の数が第３の閾値より大きいかどうかを判定してよい。指定期間は、ｔＲＥＦＩ以下の期間であってよい。第３の閾値は０より大きい整数であり、第３の閾値は、実際の応用では、トラフィック量に従って予め設定されてよい。例えば、第３の閾値は１００に設定されてよい。メモリコントローラ１０６が受信したアクセス要求の数が第３の閾値より大きく、比較的多数のアクセス要求があることを示している場合、本方法は段階４０４に進む。メモリコントローラ１０６が受信したアクセス要求の数が第３の閾値以下である場合、本方法は段階４０６に進む。
【００６９】
段階４０４において、メモリコントローラ１０６は、第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値より小さいかどうかを判定する。第１のｒａｎｋは、メモリ１０８の任意のランクであってよい。本発明の本実施形態では、メモリコントローラ１０６は、統計モジュール１０６２により統計データ収集を通じて取得された、第１のｒａｎｋに対するアクセス要求の数に基づいて、第１のｒａｎｋに対するアクセス要求の数が第４の閾値より小さいかどうかを判定してよい。第４の閾値は具体的に、応用シナリオに応じて設定されてよく、第４の閾値は０より大きい。第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値より小さい場合、本方法は段階４１０に進む。第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値以上である場合、本方法は段階４０８に進む。第１のｒａｎｋに対するアクセス要求の数は、段階４０２で指定された期間内にメモリコントローラ１０６が受信する第１のｒａｎｋに対するアクセス要求の数であってもよく、又はメモリコントローラ１０６にバッファリングされている第１のｒａｎｋに対する処理対象アクセス要求の数であってもよいことに留意されたい。
【００７０】
段階４０６において、メモリコントローラ１０６は、第１のｒａｎｋがアイドル状態であるかどうかを判定する。具体的には、段階４０２において、受信したアクセス要求の数が第３の閾値より大きいとメモリコントローラ１０６が判定した場合、これは、メモリ全体が比較的激しいアクセストラフィックを有していることを示しており、この場合、メモリコントローラ１０６は、第１のｒａｎｋをリフレッシュする必要があるかどうかをさらに判定する必要がある。第１のｒａｎｋがアイドル状態にある場合、言い換えれば、第１のｒａｎｋにアクセスするための要求がメモリコントローラのスケジューリングキューに存在しない場合、本方法は段階４１０に進む。第１のｒａｎｋがアイドル状態ではない場合、言い換えれば、第１のｒａｎｋにアクセスするためのアクセス要求がメモリコントローラのスケジューリングキューに存在する場合、本方法は段階４０８に進む。
【００７１】
段階４０８において、メモリコントローラ１０６は、第１のｒａｎｋに対する延期されたリフレッシュの数が、指定された第５の閾値より大きいかどうかを判定する。第１のｒａｎｋに対する延期されたリフレッシュの数が第５の閾値より大きいと、メモリコントローラ１０６が判定した場合、本方法は段階４１０に進む。第１のｒａｎｋに対する延期されたリフレッシュの数が第５の閾値以下であると、メモリコントローラ１０６が判定した場合、本方法は段階４１２に進む。本発明の本実施形態では、第５の閾値は１以上であり、且つ指定された警告値より小さい。警告値は、ｒａｎｋに対して延期可能なリフレッシュコマンド（ｐｏｓｔｐｏｎｉｎｇ  ｒｅｆｒｅｓｈ  ｃｏｍｍａｎｄｓ）の最大数に基づいて決定されてよい。例えば、ＤＤＲ４規格によれば、ｒａｎｋに対して最大８つのリフレッシュコマンドが延期可能であり、言い換えれば、警告値は８である。第５の閾値は８未満である必要がある。例えば、第５の閾値は６に設定されてよい。
【００７２】
本発明の本実施形態では、延期カウンタ（図２には示されていない）がリフレッシュ回路１０６４に配置されてよく、延期カウンタは、第１のｒａｎｋに対する延期されたリフレッシュの数に関する統計データを収集するように構成されてよい。実際の応用では、延期カウンタは代替的に、リフレッシュ回路１０６４から独立して配置されてもよい。別のケースでは、延期カウンタが配置されなくてもよく、代わりに、第１のｒａｎｋに対する延期されたリフレッシュの数は、ソフトウェアを用いて統計データ収集を通じて取得される。本発明の本実施形態では、第１のｒａｎｋに対する延期されたリフレッシュの数を、統計データ収集を通じて具体的に取得する方式に関して、いかなる制限も課すことはない。
【００７３】
段階４１０において、メモリコントローラ１０６は第１のｒａｎｋをリフレッシュする。具体的には、メモリコントローラ１０６内のリフレッシュ回路１０６４は、統計モジュール１０６２により統計データ収集を通じて取得されたアクセス要求の数、アクセス要求のタイプ、及びターゲットｒａｎｋの分布に基づいて、リフレッシュモードを決定し、決定されたリフレッシュモードに従ってリフレッシュ要求を生成し、生成されたリフレッシュ要求に従って第１のｒａｎｋをリフレッシュしてよい。具体的には、リフレッシュ回路１０６４は、決定されたリフレッシュモード（例えば、１Ｘモード又は４Ｘモード）に従って対応するリフレッシュ要求を生成し、生成されたリフレッシュ要求をスケジューリングキュー１０６８に入れるので、スケジューラ１０６９は生成されたリフレッシュ要求をメモリ１０８に送信し、メモリ１０８は、メモリコントローラ１０６により生成されたリフレッシュ要求に従って第１のｒａｎｋに対してリフレッシュ動作を行ってよい。例えば、メモリコントローラ１０６が図３に示す方法に従って決定された第１のリフレッシュモードでリフレッシュを行う場合、この段階では、メモリコントローラ１０６は、生成された第１のリフレッシュ要求に従って第１のｒａｎｋをリフレッシュしてよい。メモリコントローラ１０６が図３に示す方法に従って決定された第２のリフレッシュモードでリフレッシュを行う場合、この段階では、メモリコントローラ１０６は、生成された第２のリフレッシュ要求に従って第１のｒａｎｋをリフレッシュしてよい。
【００７４】
第１のｒａｎｋに対してリフレッシュ動作を行う必要があると、メモリコントローラ１０６が判定したときに、メモリコントローラ１０６が第１のｒａｎｋに対するアクセス要求を実行している場合、又はスケジューリングキューが第１のｒａｎｋに対するアクセス要求をまだ有している場合、メモリコントローラ１０６は、アクセス要求が第１のｒａｎｋに対して実行され且つスケジューリングキューにある第１のｒａｎｋに対するアクセス要求が処理された後にだけ、リフレッシュ要求を送信し、システムパフォーマンスへの影響を回避し得ることが理解できるであろう。
【００７５】
段階４１２において、メモリコントローラ１０６は、第１のｒａｎｋに対するリフレッシュ動作を延期する。具体的には、段階４０８において、第１のｒａｎｋに対する延期されたリフレッシュ動作の数が第５の閾値以下であると、メモリコントローラ１０６が判定した場合、メモリコントローラは、第１のｒａｎｋに対するリフレッシュ動作を延期し、延期カウンタの値に１を加える。言い換えれば、メモリコントローラ１０６が段階４０６を通じて、第１のｒａｎｋがアイドル状態ではないと判定した場合、すなわち、第１のｒａｎｋに対するアクセス要求が処理中である場合、又はスケジューリングキューが第１のｒａｎｋに対するアクセス要求をまだ含んでいる場合、第１のｒａｎｋに対する延期されたリフレッシュの数が第５の閾値に達していなければ、第１のｒａｎｋに対する比較的多数のアクセス要求があるとみなされてよい。パフォーマンスへの影響を回避するために、第１のｒａｎｋに対してリフレッシュ動作は行われず、第１のｒａｎｋに対するリフレッシュ動作は、次のポーリングプロセスで行われる。上述したように、第５の閾値は、指定された警告値より小さい。警告値は、第１のｒａｎｋに対して延期可能なリフレッシュコマンドの最大数に基づいて決定されてよい。警告値は、第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる。言い換えれば、警告値は、第１のｒａｎｋに対してリフレッシュ動作を強制的に行うようメモリコントローラ１０６に命令するのに用いられる。
【００７６】
リフレッシュ動作が第１のｒａｎｋに対して強制的に行われる場合、以前に延期されたリフレッシュに対して再リフレッシュを行う必要があることが理解できるであろう。したがって、再リフレッシュを必要とする期間内に、比較的多数のリフレッシュが生じる。特定の再リフレッシュ期間内において、１つの態様では、第１のｒａｎｋに対して、スケジューリングキューに入れられたアクセス要求を実行できないことが生じる可能性があり、その結果として、スケジューリングキュー１０６８のスペースが比較的長い時間占有され、別のｒａｎｋに対するアクセス要求がスケジューリングキューに入ることができず、コンピュータシステム全体のパフォーマンスに影響を与える。別の態様では、短時間内のリフレッシュの増加が原因で、システムサービスが中断する可能性がある。つまり、第１のｒａｎｋを強制的にリフレッシュすると、リフレッシュによるコンピュータシステム１００の電力消費が増加し、システムパフォーマンスに影響を与える。
【００７７】
最後に、本発明の本実施形態において提供されるリフレッシュ方法では、１つのｔＲＥＦＩポーリングプロセスにおいて、以下に挙げるいくつかのケースが、第１のｒａｎｋに対するリフレッシュ動作に関連して存在し得る。
【００７８】
ケース１：メモリコントローラ１０６が受信したアクセス要求の数が第３の閾値より大きく、且つ第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値より小さい場合、メモリコントローラ１０６は、図３に示すメモリリフレッシュ方法に従って決定されたリフレッシュモードで、第１のｒａｎｋに対してリフレッシュ動作を実行してよい。言い換えれば、コンピュータシステム１００のアクセストラフィックが比較的激しい場合、第１のｒａｎｋにアクセスするためのアクセス要求の数が比較的小さい場合に限り、メモリコントローラ１０６は、第１のｒａｎｋがアイドル状態になった後にだけ第１のｒａｎｋに対してリフレッシュ動作を行う代わりに、第１のｒａｎｋに対してリフレッシュ動作を能動的に行ってよい。これは、コンピュータシステム１００のアクセストラフィックが比較的激しい場合、第１のｒａｎｋがアイドル状態になる可能性は非常に低いからである。また、データ損失を回避する次の強制的なリフレッシュの際に、リフレッシュが継続して延期された場合、リフレッシュの増加が特定の時間内に生じて、受動リフレッシュ状態になることがある。本発明の本実施形態において提供される、そのような能動的なリフレッシュ方式は、リフレッシュ延期によりもたらされた受動リフレッシュによってコンピュータシステムのパフォーマンスに生じる影響を軽減することができ、またメモリリフレッシュの柔軟性を向上させることができる。したがって、コンピュータシステムのパフォーマンスを向上させることができ、リフレッシュオーバヘッドを減らすことができる。もちろん、本発明の本実施形態では、第１のｒａｎｋにアクセスするためのアクセス要求の数が、指定された第４の閾値より小さいことが、第１のｒａｎｋがアイドルである場合を含むことが理解できるであろう。
【００７９】
ケース２：メモリコントローラ１０６が受信したアクセス要求の数が第３の閾値より大きく、且つ第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値以上であり、且つ第１のｒａｎｋに対する延期されたリフレッシュの数が第５の閾値より大きい場合、メモリコントローラ１０６は、図３に示すメモリリフレッシュ方法に従って決定されたリフレッシュモードで、第１のｒａｎｋに対してリフレッシュ動作を行ってよい。言い換えれば、コンピュータシステム１００内のメモリアクセストラフィックが比較的激しく、且つ第１のｒａｎｋに対するアクセス要求の数も比較的大きい場合、第１のｒａｎｋに対する延期されたリフレッシュの数が第５の閾値より大きければ、第１のｒａｎｋに対する延期されたリフレッシュの数が警告値に達したために強制的なリフレッシュを行う必要がある可能性を回避し、受動リフレッシュの増加によってコンピュータシステムのパフォーマンスに生じる影響を軽減するために、第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があり、これによってメモリリフレッシュの柔軟性が向上する。第３の閾値は、実際の応用では警告値を基準にして指定される閾値であり、これにより、コンピュータシステムは、パフォーマンスに影響を与えることなく、特定の範囲内でリフレッシュを延期することができるので、メモリリフレッシュの柔軟性が向上することが理解できるであろう。
【００８０】
ケース３：メモリコントローラ１０６が受信したアクセス要求の数は第３の閾値より大きく、且つ第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値以上であり、且つ第１のｒａｎｋに対する延期されたリフレッシュの数が第５の閾値以下である場合、第１のｒａｎｋに対するリフレッシュ動作は延期されてよい。言い換えれば、本発明の本実施形態では、コンピュータシステム１００のメモリアクセストラフィックが比較的激しく、且つ第１のｒａｎｋに対するアクセス要求の数も比較的大きい場合、第１のｒａｎｋに対する延期されたリフレッシュの数が、予め設定した第５の閾値に達していない限り、スケジューリングキュー１０６８にある第１のｒａｎｋに対するアクセス要求の処理に影響を与えることを回避するために、第１のｒａｎｋに対するリフレッシュ動作は延期されてよい。
【００８１】
ケース４：メモリコントローラ１０６が受信したアクセス要求の数が第３の閾値以下であり、且つ第１のｒａｎｋがアイドル状態にある場合、メモリコントローラ１０６は、図３に示すメモリリフレッシュ方法に従って決定されたリフレッシュモードで、第１のｒａｎｋに対してリフレッシュ動作を行ってよい。言い換えれば、コンピュータシステム１００のメモリトラフィックが比較的少なく、且つ第１のｒａｎｋがアイドル状態にある場合、第１のｒａｎｋに対するリフレッシュ動作は、コンピュータシステムのパフォーマンスに比較的小さい影響しかもたらさない。したがって、リフレッシュ動作は、第１のｒａｎｋに対して直接行われてよい。
【００８２】
ケース５：メモリコントローラ１０６が受信したアクセス要求の数が第３の閾値以下であり、且つ第１のｒａｎｋがアイドル状態ではなく、且つ第１のｒａｎｋに対する延期されたリフレッシュの数が第５の閾値より大きい場合、メモリコントローラ１０６は、図３に示すメモリリフレッシュ方法に従って決定されたリフレッシュモードで、第１のｒａｎｋに対してリフレッシュ動作を能動的に行う必要がある。言い換えれば、コンピュータシステム１００のメモリトラフィックが比較的少なく、且つ第１のｒａｎｋが比較的ビジーの状態である場合、第１のｒａｎｋに対する強制的なリフレッシュを回避するために、現在のポーリングプロセスにおいて第１のｒａｎｋに対してリフレッシュ動作を行う必要がある。その結果、延期されたリフレッシュの数が警告値に達したことによる、システム上での受動リフレッシュの増加を回避し、受動リフレッシュによるコンピュータシステムのパフォーマンスへの影響を軽減することができる。
【００８３】
ケース６：メモリコントローラ１０６が受信したアクセス要求の数が第３の閾値以下であり、且つ第１のｒａｎｋがアイドル状態ではなく、且つ第１のｒａｎｋに対する延期されたリフレッシュの数が第５の閾値以下である場合、メモリコントローラ１０６は、第１のｒａｎｋに対するリフレッシュ動作を延期してよい。言い換えれば、コンピュータシステム１００のメモリトラフィックが比較的少ないが、第１のｒａｎｋが比較的ビジーの状態にあるときに、第１のｒａｎｋに対するアクセス要求を可能な限り多く処理するために、第１のｒａｎｋに対する延期されたリフレッシュの数がまだ第５の閾値以下の場合には、第１のｒａｎｋに対するリフレッシュ動作を延期してよい。
【００８４】
本発明の本実施形態において提供されるメモリリフレッシュ方法に関する上記の説明は全て、一例として１つのリフレッシュポーリングプロセスにおける、メモリ１０８の第１のｒａｎｋに対するリフレッシュ動作を用いて行われていることが理解できるであろう。実際の応用では、それぞれのリフレッシュポーリングプロセスにおいて、メモリコントローラは、上記に提供された方法に従って、メモリ１０８のｒａｎｋをリフレッシュする必要があるかどうかを判定してよい。例えば、第１のリフレッシュポーリングプロセスでは、メモリコントローラ１０６は、ケース１に従って第１のｒａｎｋをリフレッシュし、ケース２に従ってメモリ１０８の第２のｒａｎｋをリフレッシュし、ケース３に従ってメモリ１０８の第３のｒａｎｋに対するリフレッシュ動作を延期すると判定してよい。第２のリフレッシュポーリングプロセスでは、メモリコントローラ１０６は、ケース６に従って第１のｒａｎｋのリフレッシュを延期し、ケース５に従って第２のｒａｎｋをリフレッシュしてよい。
【００８５】
さらに、メモリコントローラ１０６は、リフレッシュ動作が第１のｒａｎｋに対して行われているｔＲＦＣ期間内に、第１のｒａｎｋに対するアクセス要求に応答することができない。したがって、第１のｒａｎｋに対するアクセス要求が、スケジューリングキュー１０６８を混雑させたり、別のｒａｎｋ（例えば第２のｒａｎｋ）に対するアクセス要求がスケジューリングキュー１０６８に入ることができないことを生じさせたり、またシステムパフォーマンスに影響を与えたりすることを防止するために、本発明の本実施形態では、リフレッシュ動作が第１のｒａｎｋに対して行われているときに、メモリコントローラ１０６が第１のｒａｎｋに対するアクセス要求を受信した場合、メモリコントローラ１０６は第１のｒａｎｋに対するアクセス要求をバッファキュー１０６６に入れてよい。メモリコントローラ１０６が第１のｒａｎｋに対してリフレッシュ動作を行った後に、バッファキュー１０６６にある第１のｒａｎｋに対するアクセス要求は、バッファキュー１０６６からスケジューリングキュー１０６８に入れられる。さらに、本発明の本実施形態では、第１のｒａｎｋに対するリフレッシュ動作が行われた後に、メモリコントローラ１０６は、続いて新たに受信する第１のｒａｎｋに対するアクセス要求を、バッファキュー１０６６ではなく、スケジューリングキュー１０６８に直接入れてよい。
【００８６】
本発明の本実施形態では、リフレッシュ動作が第１のｒａｎｋに対して行われているときに、メモリ１０８の第２のｒａｎｋに対してリフレッシュ動作が何も行われていない場合、メモリコントローラ１０６は、受信した第２のｒａｎｋに対するアクセス要求をスケジューリングキュー１０６８に直接入れてよいことが理解できるであろう。このスケジューリング方式では、スケジューリングキューにあるアクセス要求のターゲットｒａｎｋが分散方式で分散されてよく、これにより、第１のｒａｎｋに対してリフレッシュ動作を行うプロセスでは、リフレッシュ動作プロセスにおけるコンピュータシステム１００のシステムオーバヘッドを減らし、コンピュータシステム１００の実行効率を向上させるために、メモリコントローラ１０６は異なるｒａｎｋに対するアクセス要求を可能な限り多く処理することができる。
【００８７】
本発明の本実施形態において提供されるリフレッシュ方法から、本発明の本実施形態では、メモリリフレッシュプロセスによってコンピュータシステムのパフォーマンスに生じる影響を軽減するために、受信したアクセス要求の状況と、アクセス対象ターゲットｒａｎｋの状況とが両方とも、ターゲットｒａｎｋをリフレッシュする必要があるかどうかを判定するために総合的に考慮されることが分かるであろう。このように、メモリコントローラのリフレッシュ時間を、既存のＤＤＲプロトコルとの互換性に基づいて管理することにより、リフレッシュ延期によって生じた受動リフレッシュの増加によるコンピュータシステムのパフォーマンスへの影響が軽減され、メモリリフレッシュの柔軟性が向上し、リフレッシュオーバヘッドが減少する。さらに、本発明の本実施形態では、リフレッシュ動作を第１のｒａｎｋに対して行う必要がある場合、異なるリフレッシュモードが、ターゲットｒａｎｋの分布とアクセス要求のタイプ分布とに基づいてさらに選択されてよく、その結果、メモリコントローラのリフレッシュ効率が向上し、コンピュータシステムのパフォーマンスが向上する。
【００８８】
さらに、本発明の本実施形態では、アクセス要求の同時性を向上させて、第１のｒａｎｋに対するリフレッシュ動作が別のｒａｎｋに対するアクセス要求の処理に影響を与えないように、複数のバッファレベルがメモリコントローラに構成されてよい。例えば、スケジューリングキュー及びバッファキューが別々に構成されてよい。このように、リフレッシュ動作が第１のｒａｎｋに対して行われているｔＲＦＣ期間内に受信する第１のｒａｎｋに対するアクセス要求が、バッファキューにバッファリングされてよく、その結果、ｔＲＦＣ期間内に受信する第１のｒａｎｋに対するアクセス要求がスケジューリングキューを混雑させるのを防止し、第１のｒａｎｋをリフレッシュするプロセスにおいて、別のｒａｎｋに対するアクセス要求へのメモリコントローラの処理に影響を与えることを防止する。コンピュータシステム全体の処理効率がさらに向上する。
【００８９】
実際の応用では、図４に示す実施形態の各段階は、必ずしも行われないことに留意されたい。例えば、メモリリフレッシュ方法は、図４に示す実施形態におけるシステム全体、例えば、ポーリングプロセスのアクセストラフィック量を基準にして説明されており、段階４０２が最初に、メモリコントローラ１０６が受信したアクセス要求の数が第３の閾値より大きいかどうかを判定するために行われてよい。しかしながら、実際の応用では、システム全体のアクセストラフィック量が識別されなくてもよく、代わりに、リフレッシュ対象ｒａｎｋのアクセストラフィック状況に基づいて、処理が直接行われる。この場合、図４の実施形態の段階４０２は必要ない。言い換えれば、本発明の本実施形態において提供されるリフレッシュ方法は、システムのアクセストラフィックが激しい場合と、システムのアクセストラフィックが少ない場合との両方に用いることができる。本明細書では、いかなる制限も課すことはない。
【００９０】
図５は、本発明の一実施形態によるメモリリフレッシュ装置の概略構造図である。図５に示すメモリリフレッシュ装置５００は、図１に示すメモリ１０８をリフレッシュするように構成される。図５に示すように、メモリリフレッシュ装置５００は、受信モジュール５０２とリフレッシュモジュール５０６とを含んでよい。メモリ１０８は複数のｒａｎｋを含む。
【００９１】
受信モジュール５０２は、アクセス要求を受信するように構成される。具体的には、受信モジュール５０２は、コンピュータシステム１００の１つ又は複数のＣｏｒｅ１０４から送信されるアクセス要求を受信してよい。受信モジュール５０２はさらに、メモリ１０８から返されるデータを受信するように構成されてよいことが理解できるであろう。受信モジュール５０２は具体的に、メモリコントローラ１０６とＣｏｒｅ１０４との間に通信インタフェースを、またメモリコントローラ１０６とメモリ１０８との間に通信インタフェースを含んでよい。
【００９２】
リフレッシュモジュール５０６は、第１の期間内に受信したアクセス要求のターゲットｒａｎｋの数が、指定された第１の閾値より小さく、且つこれらのアクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第２の閾値より大きい場合、複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔でリフレッシュするように構成される。Ｔは標準的な平均リフレッシュ間隔を示すのに用いられ、Ｎは１より大きい整数である。
【００９３】
ある実行可能なケースでは、リフレッシュモジュール５０６はさらに、第２の期間内に受信したアクセス要求のターゲットｒａｎｋの数が、指定された第１の閾値以上であるか、又はこれらのアクセス要求のうち読み出し要求若しくは書き込み要求の割合が、指定された第２の閾値以下である場合、第１のｒａｎｋをＴの間隔でリフレッシュするように構成される。
【００９４】
別の実行可能なケースでは、メモリリフレッシュ装置５００はさらに、統計モジュール５０４を含んでよい。統計モジュール５０４は、受信したアクセス要求の数に関する統計データを収集するように構成される。実際の応用では、統計モジュール５０４はさらに、各ｒａｎｋにアクセスするためのアクセス要求の数に関する統計データを収集してよい。メモリリフレッシュ装置５００が統計モジュール５０４を含む場合、リフレッシュモジュール５０６は、統計モジュール５０４の統計的な結果に基づいて、リフレッシュモードを動的に調整してよいことが理解できるであろう。
【００９５】
別の実行可能なケースでは、受信モジュール５０２はさらに、第１のｒａｎｋをリフレッシュするプロセスにおいて、第１のｒａｎｋにアクセスするための第１のアクセス要求を受信するように構成される。メモリリフレッシュ装置はさらに、バッファモジュール５０８を含んでよい。バッファモジュール５０８は、構成されたバッファキューに第１のアクセス要求をバッファリングするように構成される。バッファモジュール５０８は、少なくともバッファキューとスケジューリングキューとを含む。バッファキューは、リフレッシュ動作が行われているｒａｎｋに対するアクセス要求をバッファリングするように構成され、スケジューリングキューは、リフレッシュ動作が行われていないｒａｎｋに送信されるアクセス要求をバッファリングするように構成される。
【００９６】
別の実行可能なケースでは、受信モジュール５０２はさらに、ＤＲＡＭの第２のｒａｎｋにアクセスするための第２のアクセス要求を受信するように構成される。バッファモジュール５０８は、第２のｒａｎｋに対してリフレッシュ動作が何も行われていない場合、第２のアクセス要求をスケジューリングキューにバッファリングするように構成される。
【００９７】
別の実行可能なケースでは、リフレッシュモジュール５０６は具体的に、第１の期間内に受信したアクセス要求の数が第３の閾値より大きく、且つ受信したアクセス要求内にある第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値より小さい場合、第１のｒａｎｋをＴ／Ｎの間隔でリフレッシュするように構成される。第１の期間において、第１のｒａｎｋにアクセスするためのアクセス要求の数は０より大きい。
【００９８】
別の実行可能なケースでは、リフレッシュモジュール５０６は具体的に、第１の期間内に受信したアクセス要求内にある第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値以上であり、且つ第１のｒａｎｋに対する延期されたリフレッシュの数が、指定された第５の閾値より大きい場合、複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔でリフレッシュするように構成される。第５の閾値は指定された警告値より小さく、警告値は、第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる。
【００９９】
別の実行可能なケースでは、リフレッシュモジュール５０６は具体的に、第１の期間内に受信したアクセス要求の数が、指定された第３の閾値以下であり、且つ第１のｒａｎｋに対するアクセス要求の数が０より大きく、且つ第１のｒａｎｋに対する延期されたリフレッシュの数が、指定された第５の閾値より大きい場合、複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔でリフレッシュするように構成される。第５の閾値は指定された警告値より小さく、警告値は、第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる。
【０１００】
図５に示すメモリリフレッシュ装置５００内のモジュールは、図２に示すメモリコントローラ内の１つ又は複数の構成要素に別々に位置してよいことが理解できるであろう。本発明の本実施形態では、図５に示す実施形態に含まれるモジュールの一部又は全てが、本実施形態の解決手段の目的を達成するために、実際の要件に応じて選択されてよい。図５の実施形態に詳細に説明されていない内容については、図３及び図４に示す方法の実施形態の関連する説明を参照されたい。
【０１０１】
説明した装置の実施形態は、単なる例であることが理解できるであろう。例えば、モジュールの区分は単なる論理的な機能の区分であり、実際に実装する際には他の区分であってもよい。例えば、複数のモジュール若しくは構成要素が組み合わされても、別のシステムに統合されてもよく、又は、一部の特徴が無視されても、実行されなくてもよい。さらに、前述の実施形態で論じたモジュール間の接続が、電気的形態であっても、機械的形態であっても、他の形態であってもよい。別個の部分として説明されたモジュールは、物理的に分かれていてもいなくてもよく、またモジュールとして示された部分は、物理的なモジュールであってもなくてもよい。さらに、本願の実施形態に含まれる機能モジュールが個別に存在してもよく、又は１つの処理モジュールに統合されてもよい。例えば、図５に示す機能モジュールは、図２に示すメモリコントローラに統合されてよい。
【０１０２】
本発明の一実施形態がさらに、プログラムコードを格納するコンピュータ可読記憶媒体を含んだ、データ処理用のコンピュータプログラム製品を提供する。プログラムコードに含まれる命令が、前述の方法の実施形態のうちのいずれか１つで説明された方法のプロセスを実行するのに用いられる。当業者であれば、前述の記憶媒体は、プログラムコードを格納できる任意の非一時的（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）機械可読媒体、例えば、ＵＳＢフラッシュドライブ、取り外し可能なハードディスク、磁気ディスク、光ディスク、ランダムアクセスメモリ（Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、ＲＡＭ）、ソリッドステートディスク（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ、ＳＳＤ）、又は不揮発性メモリ（ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ）などを含んでよいことを理解できるであろう。
【０１０３】
本願において提供される実施形態は、単なる例であることに留意されたい。当業者であれば、説明の便宜上、説明を簡潔にするために、前述の実施形態では、これらの実施形態が異なる態様を強調しており、ある実施形態で詳細に説明されていない部分については、別の実施形態の関連する説明を参照してよいことを明確に認識しているであろう。本発明の実施形態、特許請求の範囲、及び添付図面に開示される特徴は、個別に存在しても、組み合わせて存在してもよい。本発明の実施形態においてハードウェア形態で説明された特徴がソフトウェアで実行されても、又はその逆であってもよく、これは本明細書で限定されることはない。
（項目１）
メモリコントローラとダイナミックランダムアクセスメモリＤＲＡＭとを有するコンピュータシステムに適用されるメモリリフレッシュ方法であって、上記ＤＲＡＭは複数のｒａｎｋを含み、
上記方法は、
上記メモリコントローラがアクセス要求を受信する段階と、
第１の期間内に受信したアクセス要求のターゲットｒａｎｋの数が、指定された第１の閾値より小さく、且つ上記アクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第２の閾値より大きい場合、上記メモリコントローラが上記複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔でリフレッシュする段階であって、Ｔは標準的な平均リフレッシュ間隔を示すのに用いられ、Ｎは１より大きい整数である、段階と
を備える、方法。
（項目２）
上記方法はさらに、
第２の期間内に受信したアクセス要求のターゲットｒａｎｋの数が、上記指定された第１の閾値以上であるか、又は上記アクセス要求のうち読み出し要求若しくは書き込み要求の割合が、上記指定された第２の閾値以下である場合、上記メモリコントローラが上記第１のｒａｎｋをＴの間隔でリフレッシュする段階を備える、項目１に記載の方法。
（項目３）
上記方法はさらに、
上記第１のリフレッシュ要求を実行するプロセスにおいて上記メモリコントローラが、上記第１のｒａｎｋにアクセスするための第１のアクセス要求を受信する段階と、
上記メモリコントローラが、構成されたバッファキューに上記第１のアクセス要求をバッファリングする段階であって、上記メモリコントローラは少なくとも上記バッファキュー及びスケジューリングキューを有し、上記バッファキューは、リフレッシュ動作が行われているｒａｎｋに対するアクセス要求をバッファリングするように構成され、上記スケジューリングキューは、リフレッシュ動作が行われていないｒａｎｋに送信されるアクセス要求をバッファリングするように構成される、段階と
を備える、項目１又は２に記載の方法。
（項目４）
上記方法はさらに、
上記ＤＲＡＭの第２のｒａｎｋにアクセスするための第２のアクセス要求を上記メモリコントローラが受信する段階と、
上記第２のｒａｎｋに対してリフレッシュ動作が何も行われていない場合、上記スケジューリングキューにある上記第２のアクセス要求を上記メモリコントローラがバッファリングする段階と
を備える、項目３に記載の方法。
（項目５）
上記メモリコントローラが上記複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔で上記リフレッシュする段階は、
上記第１の期間内に受信した上記アクセス要求の数が第３の閾値より大きく、且つ受信した上記アクセス要求内にある上記第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値より小さい場合、上記メモリコントローラが上記第１のｒａｎｋを上記Ｔ／Ｎの間隔でリフレッシュする段階であって、上記第１の期間において、上記第１のｒａｎｋにアクセスするための上記アクセス要求の上記数は０より大きい、段階を有する、項目１から４のいずれか一項に記載の方法。
（項目６）
上記メモリコントローラが上記複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔で上記リフレッシュする段階は、
上記第１の期間内に受信した上記アクセス要求内にある上記第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値以上であり、且つ上記第１のｒａｎｋに対する延期されたリフレッシュの数が、指定された第５の閾値より大きい場合、上記メモリコントローラが上記複数のｒａｎｋのうち上記第１のｒａｎｋを上記Ｔ／Ｎの間隔でリフレッシュする段階であって、上記第５の閾値は、指定された警告値より小さく、上記警告値は、上記第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、段階を有する、項目１から４のいずれか一項に記載の方法。
（項目７）
上記複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔で上記リフレッシュする段階は、
上記第１の期間内に受信した上記アクセス要求の数が、指定された第３の閾値以下であり、且つ上記第１のｒａｎｋに対するアクセス要求の数が０より大きく、且つ上記第１のｒａｎｋに対する延期されたリフレッシュの数が、指定された第５の閾値より大きい場合、上記メモリコントローラが上記複数のｒａｎｋのうち上記第１のｒａｎｋを上記Ｔ／Ｎの間隔でリフレッシュする段階であって、上記第５の閾値は、指定された警告値より小さく、上記警告値は、上記第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、段階を有する、項目１から４のいずれか一項に記載の方法。
（項目８）
メモリコントローラと、上記メモリコントローラに接続されたダイナミックランダムアクセスメモリＤＲＡＭとを備えるコンピュータシステムであって、上記ＤＲＡＭは複数のｒａｎｋを含み、
上記メモリコントローラは、
アクセス要求を受信することと、
第１の期間内に受信したアクセス要求のターゲットｒａｎｋの数が、指定された第１の閾値より小さく、且つ上記アクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第２の閾値より大きい場合、上記複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔でリフレッシュすることであって、Ｔは標準的な平均リフレッシュ間隔を示すのに用いられ、Ｎは１より大きい整数である、リフレッシュすることと
を行うように構成される、コンピュータシステム。
（項目９）
上記メモリコントローラはさらに、
第２の期間内に受信したアクセス要求のターゲットｒａｎｋの数が、上記指定された第１の閾値以上であるか、又は上記アクセス要求のうち読み出し要求若しくは書き込み要求の割合が、上記指定された第２の閾値以下である場合、上記第１のｒａｎｋをＴの間隔でリフレッシュするように構成される、項目８に記載のコンピュータシステム。
（項目１０）
上記メモリコントローラはさらに、
上記第１のリフレッシュ要求を実行するプロセスにおいて、上記第１のｒａｎｋにアクセスするための第１のアクセス要求を受信することと、
上記第１のアクセス要求をバッファキューにバッファリングすることであって、上記メモリコントローラは少なくとも上記バッファキュー及びスケジューリングキューを有し、上記バッファキューは、リフレッシュ動作が行われているｒａｎｋに対するアクセス要求をバッファリングするように構成され、上記スケジューリングキューは、リフレッシュ動作が行われていないｒａｎｋに送信されるアクセス要求をバッファリングするように構成される、バッファリングすることと
を行うように構成される、項目８又は９に記載のコンピュータシステム。
（項目１１）
上記メモリコントローラはさらに、
上記ＤＲＡＭの第２のｒａｎｋにアクセスするための第２のアクセス要求を受信し、
上記第２のｒａｎｋに対してリフレッシュ動作が何も行われていない場合、上記第２のアクセス要求を上記スケジューリングキューにバッファリングする
ように構成される、項目１０に記載のコンピュータシステム。
（項目１２）
上記メモリコントローラは具体的に、
上記第１の期間内に受信した上記アクセス要求の数が第３の閾値より大きく、且つ受信した上記アクセス要求内にある上記第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値より小さい場合、上記第１のｒａｎｋを上記Ｔ／Ｎの間隔でリフレッシュすることであって、上記第１の期間において、上記第１のｒａｎｋにアクセスするための上記アクセス要求の上記数は０より大きい、リフレッシュすることを行うように構成される、項目８から１１のいずれか一項に記載のコンピュータシステム。
（項目１３）
上記メモリコントローラは具体的に、
上記第１の期間内に受信した上記アクセス要求内にある上記第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値以上であり、且つ上記第１のｒａｎｋに対する延期されたリフレッシュの数が、指定された第５の閾値より大きい場合、上記第１のｒａｎｋを上記Ｔ／Ｎの間隔でリフレッシュすることであって、上記第５の閾値は、指定された警告値より小さく、上記警告値は、上記第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、項目８から１１のいずれか一項に記載のコンピュータシステム。
（項目１４）
上記メモリコントローラは具体的に、
上記第１の期間内に受信した上記アクセス要求の数が、指定された第３の閾値以下であり、且つ上記第１のｒａｎｋに対するアクセス要求の数が０より大きく、且つ上記第１のｒａｎｋに対する延期されたリフレッシュの数が、指定された第５の閾値より大きい場合、上記第１のｒａｎｋを上記Ｔ／Ｎの間隔でリフレッシュすることであって、上記第５の閾値は、指定された警告値より小さく、上記警告値は、上記第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、項目８から１１のいずれか一項に記載のコンピュータシステム。
（項目１５）
コンピュータシステム内のプロセッサにより送信されるアクセス要求を受信するように構成された通信インタフェースと、
第１の期間内に受信したアクセス要求のターゲットｒａｎｋの数が、指定された第１の閾値より小さく、且つ上記アクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第２の閾値より大きい場合、上記複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔でリフレッシュするように構成されたリフレッシュ回路であって、Ｔは標準的な平均リフレッシュ間隔を示すのに用いられ、Ｎは１より大きい整数である、リフレッシュ回路と
を備える、メモリコントローラ。
（項目１６）
上記リフレッシュ回路はさらに、
第２の期間内に受信したアクセス要求のターゲットｒａｎｋの数が、上記指定された第１の閾値以上であるか、又は上記アクセス要求のうち読み出し要求若しくは書き込み要求の割合が、上記指定された第２の閾値以下である場合、上記第１のｒａｎｋをＴの間隔でリフレッシュするように構成される、項目１５に記載のメモリコントローラ。
（項目１７）
上記通信インタフェースはさらに、上記第１のリフレッシュ要求を実行するプロセスにおいて、上記第１のｒａｎｋにアクセスするための第１のアクセス要求を受信するように構成され、
上記メモリコントローラはさらに、
上記第１のアクセス要求を、構成されたバッファキューにバッファリングするように構成されたバッファであって、上記バッファは少なくとも上記バッファキュー及びスケジューリングキューを含み、上記バッファキューは、リフレッシュ動作が行われているｒａｎｋに対するアクセス要求をバッファリングするように構成され、上記スケジューリングキューは、リフレッシュ動作が行われていないｒａｎｋに送信されるアクセス要求をバッファリングするように構成される、バッファを備える、項目１５又は１６に記載のメモリコントローラ。
（項目１８）
上記通信インタフェースはさらに、上記ＤＲＡＭの第２のｒａｎｋにアクセスするための第２のアクセス要求を受信するように構成され、
上記バッファはさらに、上記第２のｒａｎｋに対してリフレッシュ動作が何も行われていない場合、上記第２のアクセス要求を上記スケジューリングキューにバッファリングするように構成される、項目１７に記載のメモリコントローラ。
（項目１９）
上記リフレッシュ回路は具体的に、
上記第１の期間内に受信した上記アクセス要求の数が第３の閾値より大きく、且つ受信した上記アクセス要求内にある上記第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値より小さい場合、上記第１のｒａｎｋを上記Ｔ／Ｎの間隔でリフレッシュすることであって、上記第１の期間において、上記第１のｒａｎｋにアクセスするための上記アクセス要求の上記数は０より大きい、リフレッシュすることを行うように構成される、項目１５から１８のいずれか一項に記載のメモリコントローラ。
（項目２０）
上記リフレッシュ回路は具体的に、
上記第１の期間内に受信した上記アクセス要求内にある上記第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値以上であり、且つ上記第１のｒａｎｋに対する延期されたリフレッシュの数が、指定された第５の閾値より大きい場合、上記複数のｒａｎｋのうち上記第１のｒａｎｋを上記Ｔ／Ｎの間隔でリフレッシュすることであって、上記第５の閾値は、指定された警告値より小さく、上記警告値は、上記第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、項目１５から１８のいずれか一項に記載のメモリコントローラ。
（項目２１）
上記リフレッシュ回路は具体的に、
上記第１の期間内に受信した上記アクセス要求の数が、指定された第３の閾値以下であり、且つ上記第１のｒａｎｋに対するアクセス要求の数が０より大きく、且つ上記第１のｒａｎｋに対する延期されたリフレッシュの数が、指定された第５の閾値より大きい場合、上記複数のｒａｎｋのうち上記第１のｒａｎｋを上記Ｔ／Ｎの間隔でリフレッシュすることであって、上記第５の閾値は、指定された警告値より小さく、上記警告値は、上記第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、項目１５から１８のいずれか一項に記載のメモリコントローラ。
（項目２２）
コンピュータシステム内のダイナミックランダムアクセスメモリＤＲＡＭをリフレッシュするように構成されるメモリリフレッシュ装置であって、上記ＤＲＡＭは複数のｒａｎｋを含み、
上記メモリリフレッシュ装置は、
アクセス要求を受信するように構成された受信モジュールと、
第１の期間内に受信したアクセス要求のターゲットｒａｎｋの数が、指定された第１の閾値より小さく、且つ上記アクセス要求のうち読み出し要求又は書き込み要求の割合が、指定された第２の閾値より大きい場合、上記複数のｒａｎｋのうち第１のｒａｎｋをＴ／Ｎの間隔でリフレッシュするように構成されたリフレッシュモジュールであって、Ｔは標準的な平均リフレッシュ間隔を示すのに用いられ、Ｎは１より大きい整数である、リフレッシュモジュールと
を備える、メモリリフレッシュ装置。
（項目２３）
上記リフレッシュモジュールはさらに、
第２の期間内に受信したアクセス要求のターゲットｒａｎｋの数が、上記指定された第１の閾値以上であるか、又は上記アクセス要求のうち読み出し要求若しくは書き込み要求の割合が、上記指定された第２の閾値以下である場合、上記第１のｒａｎｋをＴの間隔でリフレッシュするように構成される、項目２２に記載のメモリリフレッシュ装置。
（項目２４）
上記受信モジュールはさらに、上記第１のリフレッシュ要求を実行するプロセスにおいて、上記第１のｒａｎｋにアクセスするための第１のアクセス要求を受信するように構成され、
上記メモリリフレッシュ装置はさらに、
上記第１のアクセス要求を、構成されたバッファキューにバッファリングするように構成されたバッファモジュールであって、上記バッファモジュールは少なくとも上記バッファキュー及びスケジューリングキューを含み、上記バッファキューは、リフレッシュ動作が行われているｒａｎｋに対するアクセス要求をバッファリングするように構成され、上記スケジューリングキューは、リフレッシュ動作が行われていないｒａｎｋに送信されるアクセス要求をバッファリングするように構成される、バッファモジュールを備える、項目２２又は２３に記載のメモリリフレッシュ装置。
（項目２５）
上記受信モジュールはさらに、上記ＤＲＡＭの第２のｒａｎｋにアクセスするための第２のアクセス要求を受信するように構成され、
上記バッファモジュールはさらに、上記第２のｒａｎｋに対してリフレッシュ動作が何も行われていない場合、上記第２のアクセス要求を上記スケジューリングキューにバッファリングするように構成される、項目２２に記載のメモリリフレッシュ装置。
（項目２６）
上記リフレッシュモジュールは具体的に、
上記第１の期間内に受信した上記アクセス要求の数が第３の閾値より大きく、且つ受信した上記アクセス要求内にある上記第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値より小さい場合、上記第１のｒａｎｋを上記Ｔ／Ｎの間隔でリフレッシュすることであって、上記第１の期間において、上記第１のｒａｎｋにアクセスするための上記アクセス要求の上記数は０より大きい、リフレッシュすることを行うように構成される、項目２２から２５のいずれか一項に記載のメモリリフレッシュ装置。
（項目２７）
上記リフレッシュモジュールは具体的に、
上記第１の期間内に受信した上記アクセス要求内にある上記第１のｒａｎｋにアクセスするためのアクセス要求の数が第４の閾値以上であり、且つ上記第１のｒａｎｋに対する延期されたリフレッシュの数が、指定された第５の閾値より大きい場合、上記複数のｒａｎｋのうち上記第１のｒａｎｋを上記Ｔ／Ｎの間隔でリフレッシュすることであって、上記第５の閾値は、指定された警告値より小さく、上記警告値は、上記第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、項目２２から２５のいずれか一項に記載のメモリリフレッシュ装置。
（項目２８）
上記リフレッシュモジュールは具体的に、
上記第１の期間内に受信した上記アクセス要求の数が、指定された第３の閾値以下であり、且つ上記第１のｒａｎｋに対するアクセス要求の数が０より大きく、且つ上記第１のｒａｎｋに対する延期されたリフレッシュの数が、指定された第５の閾値より大きい場合、上記複数のｒａｎｋのうち上記第１のｒａｎｋを上記Ｔ／Ｎの間隔でリフレッシュすることであって、上記第５の閾値は、指定された警告値より小さく、上記警告値は、上記第１のｒａｎｋに対してリフレッシュ動作を直ちに行う必要があることを示すのに用いられる、リフレッシュすることを行うように構成される、項目２２から２５のいずれか一項に記載のメモリリフレッシュ装置。
【図１】
0006780897.tif 000002
【図２】
0006780897.tif 000003
【図３】
0006780897.tif 000004
【図４】
0006780897.tif 000005
【図５】
0006780897.tif 000006