(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-08-07
(54)【発明の名称】メモリ管理技術及びコンピュータシステム
(51)【国際特許分類】
G06F 12/00 20060101AFI20230731BHJP
【FI】
G06F12/00 560B
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023503053
(86)(22)【出願日】2021-05-15
(85)【翻訳文提出日】2023-02-24
(86)【国際出願番号】 CN2021093982
(87)【国際公開番号】W WO2022012143
(87)【国際公開日】2022-01-20
(31)【優先権主張番号】202010693280.4
(32)【優先日】2020-07-17
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】202011176594.3
(32)【優先日】2020-10-28
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】シャオ、シハイ
(72)【発明者】
【氏名】リアン、チュアンゼン
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160CB01
(57)【要約】
メモリ管理技術及びコンピュータシステムが提供される。メモリ管理技術は、ダイナミックランダムアクセスメモリDRAMを備えるコンピュータシステムに適用され得る。メモリ管理技術によれば、対応する行管理ポリシーは、メモリアクセスのアクセスタイプに基づいて実行され得、ここで、メモリアクセスのアクセスタイプは、読み出しアクセス又は書き込みアクセスを含む。このメモリ管理技術において、異なるアクセスタイプの異なる局所性の要因は十分に考慮され、その結果、メモリ行管理をより正確にでき、不適切な行管理ポリシーによって引き起こされるメモリアクセスレイテンシを低減でき、メモリアクセス効率を改善できる。
【特許請求の範囲】
【請求項1】
メモリ管理方法であって、
メモリアクセスを取得する段階;
前記メモリアクセスのアクセスタイプを決定する段階、ここで、前記メモリアクセスの前記アクセスタイプは、読み出しアクセス又は書き込みアクセスを含む;及び
前記メモリアクセスの前記アクセスタイプに対応する行管理ポリシーを実行する段階
を備える方法。
【請求項2】
前記メモリアクセスは、メモリ内のターゲットメモリバンクにおけるターゲット行にアクセスするために使用され、前記メモリアクセスの前記アクセスタイプに対応する行管理ポリシーを実行する前記段階は、
前記メモリアクセスの前記アクセスタイプに対応する、前記ターゲットメモリバンクの行管理ポリシーを実行する段階、ここで、前記メモリは、1又は複数のメモリバンクを含み、前記ターゲットメモリバンクは前記1又は複数のメモリバンクのいずれか1つである、
を含む、請求項1に記載の方法。
【請求項3】
前記メモリアクセスの前記アクセスタイプ及びメモリ内のターゲットメモリバンクにおけるターゲット行の行ヒットステータスに基づいて、前記行管理ポリシーを調整する段階を更に備える、請求項1又は2に記載の方法。
【請求項4】
前記メモリアクセスの前記アクセスタイプ、及び、前記ターゲット行の行ヒットステータスに基づいて、前記ターゲットメモリバンクの前記行管理ポリシーを調整する前記段階は、
前記メモリアクセスが読み出しアクセスであるとき、前記ターゲット行の前記行ヒットステータスに基づいて、前記ターゲットメモリバンクの第1インジケータを調整する段階、ここで、前記第1インジケータは、前記読み出しアクセスが実行された後に前記ターゲット行を閉じるかどうかを示す、
を含む、請求項3に記載の方法。
【請求項5】
前記メモリアクセスの前記アクセスタイプ、及び、前記ターゲット行の行ヒットステータスに基づいて、前記ターゲットメモリバンクの前記行管理ポリシーを調整する前記段階は更に、
前記メモリアクセスが書き込みアクセスであるとき、前記ターゲット行の前記行ヒットステータスに基づいて前記ターゲットメモリバンクの第2インジケータを調整する段階、ここで、前記第2インジケータは、前記書き込みアクセスが実行された後に前記ターゲット行を閉じるかどうかを示す、
を含む、請求項4に記載の方法。
【請求項6】
前記メモリアクセスの前記アクセスタイプ、及び、前記ターゲット行の行ヒットステータスに基づいて、前記ターゲットメモリバンクの前記行管理ポリシーを調整する前記段階は更に、
前記メモリアクセスの前記アクセスタイプが書き込みアクセスであるとき、前記ターゲットメモリバンクの前記行管理ポリシーは、前記書き込みアクセスに対応するプリセット行管理ポリシーであると決定する段階、ここで、前記プリセット行管理ポリシーは、前記書き込みアクセスが実行された後に前記ターゲット行を閉じるかどうかを示す、
を含む、請求項4に記載の方法。
【請求項7】
前記行ヒットステータスは、行ヒット又は行競合を含み、前記ターゲット行の前記行ヒットステータスに基づいて前記ターゲットメモリバンクの第1インジケータ又は第2インジケータを調整する前記段階は、
前記メモリアクセスが行ヒットを引き起こす場合、前記第1インジケータ又は前記第2インジケータを第1指示に調整する段階、ここで、前記第1指示は、前記ターゲット行が閉じられていない、又は、前記ターゲット行が開状態に維持されていることを示す;又は、
前記メモリアクセスが行競合を引き起こす場合、前記第1インジケータ又は前記第2インジケータを第2指示に調整する段階、ここで、前記第2指示は、前記ターゲット行が閉じられていることを示す、
を含む、請求項4から6のいずれか一項に記載の方法。
【請求項8】
前記行ヒットステータスは行アイドルを含み、前記ターゲット行の前記行ヒットステータスに基づいて第1インジケータ又は第2インジケータを調整する前記段階は、
前記メモリアクセスが行アイドルを引き起こす場合、前記メモリアクセスが行ヒットを引き起こし得るかどうかを決定する段階;及び
前記メモリアクセスが行ヒットを引き起こし得る場合、前記第1インジケータ又は前記第2インジケータを第1指示に調整する段階、ここで、前記第1指示は、前記ターゲット行が閉じられていない、又は、前記ターゲット行が開状態に維持されることを示し、行ヒットが引き起こされ得ることは、前記ターゲットメモリバンクにおける最後に開かれた行が閉じられていない場合に前記行ヒットが引き起こされることを意味する;又は、
前記メモリアクセスが行競合を引き起こし得る場合、前記第1インジケータ又は前記第2インジケータを第2指示に調整する段階、ここで、前記第2指示は、前記ターゲット行が閉じられていることを示し、行競合が引き起こされ得ることは、前記ターゲットメモリバンクにおける最後に開かれた行が閉じられていない場合に行競合が引き起こされることを意味する、
を含む、請求項4から7のいずれか一項に記載の方法。
【請求項9】
前記方法は、前記メモリアクセスの前のメモリアクセスのアクセスタイプを決定する段階を更に備え;
前記ターゲット行の前記行ヒットステータスに基づいて、前記ターゲットメモリバンクの第1インジケータ又は第2インジケータを調整する前記段階は、
前記ターゲット行の前記行ヒットステータス、及び、前記メモリアクセスの前記前のメモリアクセスの前記アクセスタイプに基づいて、前記ターゲットメモリバンクの前記第1インジケータ又は前記第2インジケータを調整する段階
を含む、請求項4から8のいずれか一項に記載の方法。
【請求項10】
前記第1インジケータの初期値は、第2インジケータの初期値より大きい、請求項4から9のいずれか一項に記載の方法。
【請求項11】
前記第1インジケータが調整されるとき、第1指示への調整の第1調整幅は、第2指示への調整の第2調整幅より大きく;
第2インジケータが調整されるとき、前記第1指示への調整の第3調整幅は、前記第2指示への調整の第4調整幅より小さい、
請求項4から10のいずれか一項に記載の方法。
【請求項12】
前記メモリアクセスは第1バッチのメモリアクセスに属し、前記方法は更に、
前記第1バッチのメモリアクセスが完全に実行され、かつ、第2バッチのメモリアクセスが実行される予定であると決定する段階;及び
前記第1バッチのメモリアクセスのアクセスタイプが前記第2バッチのメモリアクセスのアクセスタイプと異なる場合、メモリ内のターゲットメモリバンクにおけるターゲット行を閉じる段階;
前記第1バッチのメモリアクセス及び前記第2バッチのメモリアクセスの両方が読み出しアクセスである場合、前記ターゲット行を開状態に維持する段階;又は
前記第1バッチのメモリアクセス及び前記第2バッチのメモリアクセスの両方が書き込みアクセスである場合、前記ターゲット行を閉じる段階
を備える、請求項1から11のいずれか一項に記載の方法。
【請求項13】
メモリ管理装置であって、
メモリアクセスを送信するように構成されているプロセッサ;並びに
前記メモリアクセスを取得し;
前記メモリアクセスのアクセスタイプを決定し、ここで、前記メモリアクセスの前記アクセスタイプは、読み出しアクセス又は書き込みアクセスを含み;及び
前記メモリアクセスの前記アクセスタイプに対応する行管理ポリシーを実行する
ように構成されているメモリコントローラ
を備える装置。
【請求項14】
前記メモリアクセスは、メモリ内のターゲットメモリバンクにおけるターゲット行にアクセスするために使用され、前記メモリコントローラは、前記メモリアクセスの前記アクセスタイプに対応する、前記ターゲットメモリバンクの行管理ポリシーを実行するように構成され、前記メモリは1又は複数のメモリバンクを含み、前記ターゲットメモリバンクは、前記1又は複数のメモリバンクのいずれか1つである、請求項13に記載の装置。
【請求項15】
前記メモリコントローラは更に、前記メモリアクセスの前記アクセスタイプ、及び、メモリ内のターゲットメモリバンクにおけるターゲット行の行ヒットステータスに基づいて、前記行管理ポリシーを調整するように構成されている、請求項13又は14に記載の装置。
【請求項16】
前記行管理ポリシーを前記調整する段階において、前記メモリコントローラは、前記メモリアクセスが読み出しアクセスであるとき、前記ターゲット行の前記行ヒットステータスに基づいて前記ターゲットメモリバンクの第1インジケータを調整するように構成されており、ここで、前記第1インジケータは、前記読み出しアクセスが実行された後に前記ターゲット行を閉じるかどうかを示す、請求項15に記載の装置。
【請求項17】
前記行管理ポリシーを調整する前記段階において、前記メモリコントローラは更に、前記メモリアクセスが書き込みアクセスであるとき、前記ターゲット行の前記行ヒットステータスに基づいて、前記ターゲットメモリバンクの第2インジケータを調整するように構成され、ここで、前記第2インジケータは、前記書き込みアクセスが実行された後に前記ターゲット行を閉じるかどうかを示す、請求項16に記載の装置。
【請求項18】
前記行管理ポリシーを決定する前記段階において、前記メモリコントローラは更に、前記メモリアクセスの前記アクセスタイプが書き込みアクセスであるとき、前記ターゲットメモリバンクの前記行管理ポリシーが、前記書き込みアクセスに対応するプリセット行管理ポリシーであると決定するように構成されており、ここで、前記プリセット行管理ポリシーは、前記書き込みアクセスが実行された後にターゲット行を閉じるかどうかを示す、請求項16に記載の装置。
【請求項19】
前記行ヒットステータスは、行ヒット又は行競合を含み、前記ターゲットメモリバンクの第1インジケータ又は第2インジケータを調整する前記段階において、前記メモリコントローラは、
前記メモリアクセスが行ヒットを引き起こす場合、前記第1インジケータ又は前記第2インジケータを第1指示に調整する、ここで、前記第1指示は、前記ターゲット行が閉じられていない、又は、前記ターゲット行が開状態に維持されていることを示す;又は、
前記メモリアクセスが行競合を引き起こす場合、前記第1インジケータ又は前記第2インジケータを第2指示に調整する、ここで、前記第2指示は、前記ターゲット行が閉じられていることを示す、
ように構成されている、請求項16から18のいずれか一項に記載の装置。
【請求項20】
前記行ヒットステータスは行アイドルを含み、前記ターゲットメモリバンクの第1インジケータ又は第2インジケータを調整する前記段階において、前記メモリコントローラは、
前記メモリアクセスが行アイドルを引き起こす場合、前記メモリアクセスが行ヒットを引き起こし得るかどうかを決定する;及び、
前記メモリアクセスが行ヒットを引き起こし得る場合、前記第1インジケータ又は前記第2インジケータを第1指示に調整する、ここで、前記第1指示は、前記ターゲット行が閉じられていない、若しくは、前記ターゲット行が開状態に維持されていることを示し、行ヒットが引き起こされ得ることは、前記ターゲットメモリバンクにおける最後に開かれた行が閉じられていない場合、行ヒットが引き起こされることを意味する、又は、
前記メモリアクセスが行競合を引き起こし得る場合、前記第1インジケータ又は前記第2インジケータを第2指示に調整する、ここで、前記第2指示は、前記ターゲット行が閉じられていることを示し、行競合が引き起こされ得ることは、前記ターゲットメモリバンクにおける最後に開かれた行が閉じられていない場合、行競合が引き起こされることを意味する
ように構成されている、請求項16から19のいずれか一項に記載の装置。
【請求項21】
前記メモリコントローラは更に、前記メモリアクセスの前のアクセスのアクセスタイプを決定するように構成されており、
前記ターゲット行の前記行ヒットステータスに基づいて前記ターゲットメモリバンクの第1インジケータ又は第2インジケータを調整する前記段階において、前記メモリコントローラは、
前記ターゲット行の前記行ヒットステータス、及び、前記メモリアクセスの前記前のアクセスの前記アクセスタイプに基づいて、前記ターゲットメモリバンクの前記第1インジケータ又は前記第2インジケータを調整するように構成されている、
請求項16から20のいずれか一項に記載の装置。
【請求項22】
前記第1インジケータの初期値は、第2インジケータの初期値より大きい、請求項16から21のいずれか一項に記載の装置。
【請求項23】
前記第1インジケータが調整されるとき、第1指示への調整の第1調整幅は、第2指示への調整の第2調整幅より大きく;
第2インジケータが調整されるとき、前記第1指示への調整の第3調整幅は、前記第2指示への調整の第4調整幅より小さい、
請求項16から22のいずれか一項に記載の装置。
【請求項24】
前記メモリアクセスは第1バッチのメモリアクセスに属し、前記メモリコントローラは更に、
前記第1バッチのメモリアクセスが完全に実行され、かつ、第2バッチのメモリアクセスが実行される予定であると決定する;及び
前記第1バッチのメモリアクセスのアクセスタイプが前記第2バッチのメモリアクセスのアクセスタイプと異なる場合、メモリ内のターゲットメモリバンクにおけるターゲット行を閉じる;
前記第1バッチのメモリアクセス及び前記第2バッチのメモリアクセスの両方が読み出しアクセスである場合、前記ターゲット行を開状態に維持する;又は
前記第1バッチのメモリアクセス及び前記第2バッチのメモリアクセスの両方が書き込みアクセスである場合、前記ターゲット行を閉じる
ように構成されている、請求項13から23のいずれか一項に記載の装置。
【請求項25】
コンピュータシステムのプロセッサによって送信されたメモリアクセスを受信するように構成されている通信インタフェース;及び
前記メモリアクセスに基づいて、請求項1から12のいずれか一項に記載のメモリ管理方法を実行するように構成されている論理回路
を備えるメモリコントローラ。
【請求項26】
メモリ及び請求項13から24のいずれか一項に記載のメモリ管理装置を備えるコンピュータシステム。
【請求項27】
コンピュータに、請求項1から12のいずれか一項に記載のメモリ管理方法を実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、コンピュータ技術の分野、特に、メモリ管理技術及びコンピュータシステムに関する。
【背景技術】
【0002】
ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory, DRAM)は半導体メモリである。ダイナミックランダムアクセスメモリの主な機能原理は、キャパシタに格納された電荷の量を使用して、バイナリビット(複数のビット)が1か、又は0かを示す。DRAMは通常、コンピュータのメモリ(又はメインストレージと称される)として使用され、中央処理装置(CPU, central processing unit)とデータを直接交換する内部メモリである。DRAM行管理ポリシー(DRAM Row Buffer Policy)又はDRAM行ポリシー(DRAM Row Policy)は、DRAMの行バッファについての管理ポリシーである。具体的には、当該ポリシーは、DRAMのメモリバンク(bank)における行が開かれた後に、当該行を閉じることがトリガされる特定の条件のポリシーである。代替的に、DRAM行管理ポリシーは、行のデータがバンクの行バッファに入った後に、対応するバンクの行バッファを閉じることがトリガされる特定の条件のポリシーである。
【0003】
メモリアクセス中に、メモリにおける行のステータスがメモリアクセスに及ぼす影響は、行ヒット及び行競合を含み得る。行ヒットは、アクセス予定の行が、アクセス予定のバンクにおける開かれた行と完全に一致することを示す。行ヒットの場合において、データは、1つの列アクセスコマンド(例えば、読み出し又は書き込みコマンド)のみを送信することによって読み出され、又は書き込まれ得る。行競合は、アクセス予定のバンクにおける行が開かれているが、現在開かれている行が、アクセス予定の行と同一でないことを示す。この場合、現在開かれている行は、まず閉じられる必要があり、次に、アクセス予定の行が開かれる必要があり、次に、列アクセスが実行される。通常、行ヒットのレイテンシは、行競合のレイテンシの約1/3である。したがって、メモリアクセス中に、メモリ行が閉じられるのが早すぎる場合、アクセスレイテンシが増加する。メモリ行が閉じられるのが遅すぎる場合、行競合が発生し、レイテンシが増加する。したがって、DRAM行管理ポリシーは、DRAMをアクセスすることについてのレイテンシ及び帯域幅に影響する主要な要因の1つである。
【発明の概要】
【0004】
本願は、メモリ管理技術及びコンピュータシステムを提供して、メモリアクセスレイテンシを低減しメモリアクセス効率を改善する。
【0005】
第1態様によれば、本発明の実施形態はメモリ管理方法を提供する。メモリ管理方法は、ダイナミックランダムアクセスメモリDRAMを備えるコンピュータシステムに適用され得る。方法は、コンピュータシステムにおけるメモリコントローラによって実装され得る。方法において、メモリアクセスを取得した後に、メモリコントローラは、メモリアクセスのアクセスタイプを決定し、メモリアクセスのアクセスタイプに対応する行管理ポリシーを実行し得る。メモリアクセスのアクセスタイプは読み出しアクセス及び書き込みアクセスを含む。
【0006】
本発明の本実施形態において提供されるメモリ管理方法によれば、異なるタイプのメモリアクセスの局所性の間の相違が十分に考慮され、対応する行管理ポリシーは、メモリアクセスのタイプに基づいて実行され、その結果、メモリ行管理をより正確にすることができ、不適切な行管理ポリシーによって引き起こされるメモリアクセスレイテンシを低減でき、メモリアクセス効率を改善できる。
【0007】
第1態様を参照すると、可能な実装において、メモリアクセスは、メモリにおけるターゲットメモリバンクにおけるターゲット行にアクセスするために使用される。メモリアクセスのアクセスタイプに対応する行管理ポリシーを実行することは、メモリアクセスのアクセスタイプに対応する、ターゲットメモリバンクの行管理ポリシーを実行することを含む。メモリは1又は複数のメモリバンクを含み、ターゲットメモリバンクは1又は複数のメモリバンクのいずれか1つである。この場合、異なる行管理ポリシーは、異なるターゲットメモリバンクについて実行され得、その結果、管理粒度がより小さくなり、管理がより精密になる。
【0008】
可能な実装において、行管理ポリシーは、メモリアクセスのアクセスタイプ、及び、ターゲット行の行ヒットステータスに基づいて更に調整され得る。具体的には、行ヒットステータスは、以下の状態、すなわち、行ヒット、行競合及び行アイドルのうちの少なくとも1つを含む。
【0009】
可能な実装において、ターゲットメモリバンクの行管理ポリシーが、メモリアクセスのアクセスタイプ、及び、ターゲット行の行ヒットステータスに基づいて調整されるとき、及び、メモリアクセスが読み出しアクセスであるとき、メモリコントローラは、ターゲット行の行ヒットステータスに基づいてターゲットメモリバンクの第1インジケータを調整し得る。第1インジケータは、ターゲットメモリバンクの第1行管理ポリシーを示し、第1行管理ポリシーは、読み出しアクセスが実行された後にターゲット行を閉じるかどうかを示す。
【0010】
このようにして、読み出しアクセスが実行された後に使用される行管理ポリシーを示す第1インジケータが指定され、第1インジケータは、読み出しアクセス、及び、ターゲット行の行ヒットステータスのみに基づいて調整され、その結果、調整がより正確になり、第1インジケータによって示される行管理ポリシーもより正確になり、メモリアクセスレイテンシを低減できる。
【0011】
別の可能な実装において、ターゲットメモリバンクの行管理ポリシーが、メモリアクセスのアクセスタイプ、及び、ターゲット行の行ヒットステータスに基づいて調整されるとき、及び、メモリアクセスが書き込みアクセスである場合、ターゲットメモリバンクの第2インジケータは、ターゲット行の行ヒットステータスに基づいて調整され得る。第2インジケータは、ターゲットメモリバンクの第2行管理ポリシーを示し、第2行管理ポリシーは、書き込みアクセスが実行された後にターゲット行を閉じるかどうかを示す。この場合、書き込みアクセスが実行された後に使用される行管理ポリシーを示す第2インジケータが指定され、第2インジケータは、書き込みアクセス、及び、ターゲット行の行ヒットステータスのみに基づいて調整される。したがって、読み出しアクセス及び書き込みアクセスが実行された後、異なる行管理ポリシーは、異なるインジケータの指示に基づいて実行され得、その結果、調整がより正確になり、メモリアクセスレイテンシを低減できる。
【0012】
別の可能な実装において、メモリアクセスのアクセスタイプ、及び、ターゲット行の行ヒットステータスに基づいてターゲットメモリバンクの行管理ポリシーを調整することは、メモリアクセスが書き込みアクセスである場合、ターゲットメモリバンクの行管理ポリシーが書き込みアクセスに対応するプリセット行管理ポリシーであると決定することを更に含み得る。プリセット行管理ポリシーは、書き込みアクセスが実行された後にターゲット行を閉じるかどうかを示す。この場合、読み出しアクセスが実行された後に使用される行管理ポリシーを示す第1インジケータのみがターゲットメモリバンクについて指定され得、第1インジケータは、ターゲットメモリバンクの読み出しアクセスのみに基づいて調整される。書き込みアクセスの局所性は悪いので、調整が実行された場合でも、効果は気付きにくい。したがって、プリセット行管理ポリシーが使用され得、メモリアクセス中に調整が実行されない。例えば、実際の適用において、書き込みアクセスの局所性が悪いことを考慮して、プリセット行管理ポリシーは、書き込みアクセスが完全に実行された後にターゲット行を閉じることを示し得る。言い換えれば、この場合、読み出しアクセスが実行された後に使用される行管理ポリシーのみが調整され得、書き込みアクセスが実行された後に使用される行管理ポリシーは調整されない。
【0013】
別の可能な実装において、行ヒットステータスは、行ヒット又は行競合を含む。ターゲット行の行ヒットステータスに基づいてターゲットメモリバンクの第1インジケータ又は第2インジケータを調整することは、メモリアクセスが行ヒットを引き起こす場合、第1インジケータ又は第2インジケータを第1指示に調整する、又は、メモリアクセスが行競合を引き起こす場合、第1インジケータ又は第2インジケータを第2指示に調整することを含む。第1指示は、ターゲット行が閉じられていないこと、又は、ターゲット行が、開状態に維持されていることを示し、第2指示は、ターゲット行が閉じられていることを示す。
【0014】
別の可能な実装において、行ヒットステータスは行アイドルを含む。ターゲット行の行ヒットステータスに基づいて第1インジケータ又は第2インジケータを調整することは、メモリアクセスが行アイドルを引き起こし得る場合、メモリアクセスが行ヒットを引き起こすかどうかを決定すること、及び、メモリアクセスが行ヒットを引き起こし得る場合、第1インジケータ又は第2インジケータを第1指示に調整することを含み、ここで、第1指示は、ターゲット行が閉じられていないこと、又は、ターゲット行が開状態に維持されていることを示し、行ヒットが引き起こされ得ることは、ターゲットメモリバンクにおける最後に開かれた行が閉じられていない場合、行ヒットが引き起こされることを意味し、又は、メモリアクセスが行競合を引き起こし得る場合、第1インジケータ又は第2インジケータを第2指示に調整し、ここで、第2指示は、ターゲット行が閉じられていることを示し、行競合が引き起こされ得ることは、ターゲットメモリバンクにおける最後に開かれた行が閉じられていない場合に行競合が引き起こされることを意味する。
【0015】
別の可能な実装において、方法は更に、メモリアクセスの前のメモリアクセスのアクセスタイプを決定する段階を備える。ターゲット行の行ヒットステータスに基づいて、ターゲットメモリバンクの第1インジケータ又は第2インジケータを調整することは、ターゲット行の行ヒットステータス、及び、メモリアクセスの前のメモリアクセスのアクセスタイプに基づいて、ターゲットメモリバンクの第1インジケータ又は第2インジケータを調整することを含む。
【0016】
別の可能な実装において、第1インジケータの初期値は第2インジケータの初期値より大きい。
【0017】
別の可能な実装において、第1インジケータが調整されるとき、第1指示への調整の第1調整幅は、第2指示への調整の第2調整幅より大きく、第2インジケータが調整されるとき、第1指示への調整の第3調整幅は、第2指示への調整の第4調整幅より小さい。
【0018】
前述の複数の調整方式において、読み出しアクセス及び書き込みアクセスの局所性の間の相違が十分に考慮され、ターゲットメモリバンクの第1インジケータ又は第2インジケータは、ターゲットメモリバンクのメモリアクセスのタイプ、現在のメモリアクセスの前のメモリアクセスのタイプ、及び、ターゲット行の行ヒットステータスに基づいて調整され、その結果、ターゲットメモリバンクの第1インジケータの値又は第2インジケータの値の調整がより正確になる。したがって、メモリコントローラは、ターゲットメモリバンクの第1インジケータ又は第2インジケータの指示に基づいて、ターゲットメモリバンクにおける行をいつ閉じるかを、より正確に決定し得る。これにより、不適切な行管理ポリシーによって引き起こされるメモリアクセスレイテンシを低減し、メモリアクセス効率を改善する。
【0019】
別の可能な実装において、メモリアクセスはメモリアクセスの第1バッチに属する。メモリアクセスの第1バッチが完全に実行され、かつ、メモリアクセスの第2バッチが実行される予定であると決定されたとき、メモリアクセスの第1バッチのアクセスタイプがメモリアクセスの第2バッチのアクセスタイプと異なる場合、ターゲット行は閉じられ、メモリアクセスの第1バッチ及びメモリアクセスの第2バッチの両方が読み出しアクセスである場合、ターゲット行は開状態に維持され、又は、メモリアクセスの第1バッチ及びメモリアクセスの第2バッチの両方が書き込みアクセスである場合、ターゲット行は閉じられる。メモリアクセスをバッチ単位でスケジューリングするこの方式において、同一タイプのメモリアクセスが、同一バッチにおいてスケジューリングされ得、その結果、読み出し-書き込みの切り替え回数が低減され、メモリアクセス効率が改善される。
【0020】
別の可能な実装において、第1インジケータ又は第2インジケータの指示に基づいてターゲットメモリバンクの行管理ポリシーを調整することは、第1インジケータの値又は第2インジケータの値がプリセット閾値より大きいとき、読み出しアクセスが完全に実行された後にターゲット行を開状態に維持し、開状態に維持する時間が、第1インジケータの値によって指示される時間、又は、第2インジケータの値によって指示される時間に達するまで、ターゲット行を閉じることを含み得る。
【0021】
別の可能な実装において、第1インジケータ又は第2インジケータの指示に基づいて、ターゲットメモリバンクの行管理ポリシーを調整することは、第1インジケータの値若しくは第2インジケータの値が、第1閾値より大きい又はそれに等しいとき、ターゲット行を開状態に維持すること、又は、第1インジケータの値若しくは第2インジケータの値が第1閾値より小さいとき、ターゲット行を閉じることを含み得る。
【0022】
第2態様によれば、本願はメモリ管理装置を提供する。装置は、少なくとも1つのプロセッサ、及び、第1態様又は第1態様の実装のいずれか1つにおけるメモリ管理方法を実装するように構成されているメモリコントローラを含む。
【0023】
第3の態様によれば、本願はメモリコントローラを提供する。メモリコントローラは、通信インタフェース、及び、第1態様、又は、第1態様の実装のいずれか1つにおけるメモリ管理方法を実行するように構成されている論理回路を含む。通信インタフェースは、コンピュータシステムのプロセッサによって送信されたメモリアクセスを受信するように構成されている。
【0024】
第4態様によれば、本願はコンピュータシステムを提供する。コンピュータシステムは、第2態様におけるメモリ及びメモリ管理装置を備える。
【0025】
第5態様によれば、本願はメモリ管理装置を提供する。メモリ管理装置は、第1態様又は第1態様の実装のいずれか1つにおけるメモリ管理方法を実装するように構成されている機能モジュールを備える。
【0026】
第6態様によれば、本願は更にコンピュータプログラム製品を提供する。コンピュータプログラム製品はプログラムコードを含む。プログラムコードに含まれる命令はコンピュータによって実行され、第1態様又は第1態様の実装のいずれか1つにおけるメモリ管理方法を実装する。
【0027】
第7態様によれば、本願は更にコンピュータ可読記憶媒体を提供する。コンピュータ可読記憶媒体は、プログラムコードを格納するように構成されている。プログラムコードに含まれる命令はコンピュータによって実行され、第1態様又は第1態様の実装のいずれか1つにおけるメモリ管理方法を実装する。
【図面の簡単な説明】
【0028】
本発明の実施形態における技術的解決手段をより明確に説明するべく、以下では、実施形態を説明するために添付図面を簡潔に説明する。以下の説明における添付図面は、本発明のいくつかの実施形態を示すに過ぎないことは明確である。
【0029】
【
図1】本発明の実施形態によるコンピュータシステムのアーキテクチャの概略図である。
【0030】
【
図2】本発明の実施形態によるメモリチップの構造の概略図である。
【0031】
【
図3】本発明の実施形態によるメモリアクセスレイテンシの概略図である。
【0032】
【
図4A】本発明の実施形態によるメモリ管理方法のフローチャートである。
【0033】
【
図4B】本発明の実施形態による別のメモリ管理方法のフローチャートである。
【0034】
【
図5A-1】本発明の実施形態による行管理ポリシーを調整するための方法のフローチャートである。
【
図5A-2】本発明の実施形態による行管理ポリシーを調整するための方法のフローチャートである。
【
図5B】本発明の実施形態による行管理ポリシーを調整するための方法のフローチャートである。
【
図5C-1】本発明の実施形態による行管理ポリシーを調整するための方法のフローチャートである。
【
図5C-2】本発明の実施形態による行管理ポリシーを調整するための方法のフローチャートである。
【
図5D】本発明の実施形態による行管理ポリシーを調整するための方法のフローチャートである。
【0035】
【
図6】本発明の実施形態によるメモリ行管理ポリシーを実行するための方法のフローチャートである。
【0036】
【
図7】本発明の実施形態による別のメモリ管理方法のフローチャートである。
【0037】
【
図8】本発明の実施形態によるメモリアクセスのスケジューリングの概略図である。
【0038】
【
図9】本発明の実施形態による別のメモリ管理方法のフローチャートである。
【0039】
【
図10】本発明の実施形態によるメモリ管理装置の概略図である。
【発明を実施するための形態】
【0040】
本発明における技術的解決手段をより十分に当業者に理解してもらうために、以下では、本発明の実施形態における添付図面を参照して、本発明の実施形態における技術的解決手段を明確に説明する。説明された実施形態は、本発明の実施形態の全部ではなく一部に過ぎないことは明確である。
【0041】
ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory, DRAM)は半導体メモリである。ダイナミックランダムアクセスメモリの主な機能原理は、キャパシタに格納された電荷の量を使用して、バイナリビット(複数のビット)が1か、又は0かを示す。DRAMは通常、コンピュータシステムのメモリ(又はメインストレージと称される)として使用され、中央処理装置(CPU, central processing unit)とデータを直接交換する内部メモリである。
図1は、本発明の実施形態によるコンピュータシステム100のアーキテクチャの概略図である。本発明の本実施形態において提供されるコンピュータシステムは、サーバ、デスクトップコンピュータ及び様々な専用コンピュータを含み得る。
図1に示すように、コンピュータシステム100は、少なくとも、プロセッサ102、メモリコントローラ106、及びメモリ108を含み得る。通常、メモリコントローラ106は、プロセッサ102に統合され得る。
図1に示すコンポーネントに加えて、コンピュータシステム100は更に、通信インタフェース、及び、外部記憶デバイスとして使用されるディスクなどの別のコンポーネントを含み得ることに留意されたい。ここでは、これについて限定しない。
【0042】
プロセッサ(Processor)102は、コンピュータシステム100のコンピューティングコア及び制御コアである。プロセッサ102は1又は複数のプロセッサコア(cores)104を含み得る。プロセッサ102は、ハイパースケール集積回路であり得る。オペレーティングシステム及び別のソフトウェアプログラムはプロセッサ102にインストールされ、その結果、プロセッサ102は、メモリ108、キャッシュ及び磁気ディスクにアクセスできる。本発明の本実施形態において、プロセッサ102におけるコア104は例えば、中央処理装置(central processing unit、CPU)であり得るか、又は、別の特定用途向け集積回路(Application-Specific Integrated Circuit, ASIC)であり得ることが理解され得る。実際の適用において、コンピュータシステム100は代替的に、複数のプロセッサを含み得る。
【0043】
メモリコントローラ(Memory Controller)106は、コンピュータシステム100におけるメモリ108を制御し、メモリ108からコア104へのデータ伝送を管理及び計画するように構成されているバス回路コントローラである。データは、メモリコントローラ106を通じてメモリ108とコア104との間で交換され得る。メモリコントローラ106は、別個のチップであり得、システムバスを通じてコア104に接続される。当業者であれば、メモリコントローラ106はプロセッサ102に統合され得(
図1に示される)、ノースブリッジに内蔵され得る、若しくは、独立のメモリコントローラチップであり得ることを認識し得る。メモリコントローラ106の特定の場所及び存在形態は本発明の実施形態において限定されない。実際の適用において、メモリコントローラ106は、必要なロジックを制御して、データをメモリ108に書き込み、又は、データをメモリ108から読み出し得る。メモリコントローラ106は、汎用プロセッサ、専用アクセラレータ、GPU、FPGA又は組み込みプロセッサなどのプロセッサシステムにおけるメモリコントローラであり得る。
【0044】
メモリ108はコンピュータシステム100のメインストレージである。メモリ108は、ダブルデータレート(double data rate, DDR)バスを通じてメモリコントローラ106に接続される。メモリ108は通常、オペレーティングシステムにおいて実行している様々なタイプのソフトウェア、入力及び出力データ、外部記憶デバイスとの間で交換された情報、及び同様のものを格納するように構成されている。プロセッサ102のアクセス速度を上げるために、メモリ108は、アクセス速度が高いという利点を有する必要がある。従来のコンピュータシステムアーキテクチャにおいて、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory, DRAM)は通常、メモリ108として使用される。プロセッサ102は、メモリコントローラ106を使用することによって、メモリ108に高速でアクセスし、メモリ108における任意のメモリセルに対して読み出動作及び書き込み動作を実行できる。
【0045】
実際の適用において、メモリ108は、1又は複数のデュアルインラインメモリモジュール(Dual In-line Memory Modules, DIMM)110を含み得る。
図1は、メモリ108が2のDIMM110を含む例を示す。通常、1のDIMMは1のメモリモジュールエンティティとして使用され得、1のメモリモジュールは2の側を有する。ハイエンドメモリモジュールについては、両側がメモリチップを有する。各側はランクと呼ばれる。すなわち、1のDIMMは、ランク0及びランク1を有する。
図1に示すように、1のDIMM110は、1又は複数のランク112を含み得る。各ランク112は複数のメモリチップ(chips)114を含み得る。
【0046】
当業者は、データがメモリ108に格納されていることを認識し得る。具体的には、データは、メモリチップ114におけるメモリセルに格納される。本発明の実施形態において、メモリセルは、データを格納するために使用される最小のメモリセル(cell)を指す。通常、1のメモリセルは、1ビット(bit)データを格納し得る。当然、いくつかのメモリセルはまた、多値ストレージを実装できる。DRAMがメモリ108として使用されるとき、DRAMにおけるメモリセル(また、DRAMセルと称され得る)は、マトリクス状に配置され、マトリクスはメモリバンク(memory bank)又はDRAMバンクと称される。この方式において、メモリチップ114におけるメモリセルは、複数のメモリバンク(banks)に論理的に分類され得、各メモリバンクは、複数のメモリセルを含むメモリアレイとして考慮され得る。メモリバンクにおける各メモリセル(memory cell)は、メモリセルが位置する行アドレス及び列アドレスを使用することによって識別される。メモリコントローラは、対応する行デコーダ及び対応する列デコーダを使用することによって、メモリバンクにおける任意のメモリセルを位置決めし得る。本発明の実施形態において、メモリバンクはまた、略してバンク(bank)と称され得る。
【0047】
図2は、本発明の実施形態によるメモリチップ114の構造の概略図である。
図2は、チップ114が8のバンクを含む例を示す。メモリチップ114は、制御及びリフレッシュ回路1140、複数のメモリバンク(memory banks)1142、行アドレスバッファ(row address buffer)1143、列アドレスバッファ(column address buffer)1144、行デコーダ(row decoder)1145、及び列デコーダ(column decoder)1146を含み得る。制御及びリフレッシュ回路1140は、メモリセル上のリフレッシュ動作を制御するように構成されている。当業者であれば、DRAMが、キャパシタに格納された電荷の量を使用して、データ0及び1を示し、揮発性メモリであることを認識し得る。リーク現象がキャパシタにおいて生じ得るので、電荷は、非常に短い時間だけ維持できる。キャパシタにおける電荷が不十分である場合、格納されたデータにおいてエラーが生じ得る。したがって、データを格納するために、制御及びリフレッシュ回路1140は、リフレッシュ動作を自動的に実行し、格納されたデータが「1」であるメモリセルを充電する必要があり、それにより、DRAM108がデータを失うことを防止する。
【0048】
メモリアクセス中に、メモリアクセス要求を受信した後、メモリコントローラ106は、受信されたメモリアクセス要求に基づいてアドレス信号及び制御信号を生成し、生成されたアドレス信号及び制御信号はDIMM110へ送信し、メモリにアクセスする。アドレス信号は、行アドレス信号及び列アドレス信号を含み得る。制御信号は、チップ選択(CS)信号、書き込み有効化(WE)信号、列アドレスストローブ(CAS)、行アドレスストローブ(RAS)及び同様のものを含み得る。これらの信号は、制御及びリフレッシュ回路1140によって受信され得る。行アドレス信号は行アドレスバッファ(row address buffer)1143にバッファリングされる。列アドレス信号は列アドレスバッファ(column address buffer)1144にバッファリングされる。制御信号は、アドレス信号によって指定された行アドレスに対応するバンクに転送される。
【0049】
行アドレスバッファ1143は、メモリコントローラ106によって送信された行アドレス信号をバッファリングするように構成されている。列アドレスバッファ1144は、メモリコントローラ106によって送信された列アドレス信号をバッファリングするように構成されている。行デコーダ1145は行アドレスバッファ1143及び複数のバンク1142に接続され、列デコーダ1146は列アドレスバッファ1144及び複数のバンク1142に接続される。行デコーダ(row decoder)1145は、行アドレス信号をデコードするように構成され、列デコーダ(column decoder)1146は、列アドレス信号をデコードするように構成され、その結果、バンク1142における対応するメモリセルは、デコードされた行アドレス信号及びデコードされた列アドレス信号に基づいて位置決めされ得る。
【0050】
メモリコントローラがDRAMにアクセスするとき、メモリコントローラ106はまず、アクセス予定のデータに対応するメモリ行を識別し、アクセス予定のメモリ行が属するバンクを決定する必要があり、次に、メモリコントローラ106は、バンク及びメモリ行を「開く」(opens)。いくつかの実装において、メモリ行はまた、「ページ」と称され得、「ページ」は論理的概念である。この場合、1のページは、DRAMにおける1のメモリ行のメモリセルを含む。通常、メモリページのサイズは、512、1024(1K)、2048(2K)、4098(4K)、8196(8K)、16392(16K)又は32,768(32K)ビットのデータを含み得る。
【0051】
通常、メモリアクセス中に、アクセス予定のメモリ行は、以下の3の状態、すなわち、行ヒット(row hit)、行アイドル(row idle)、又は行競合(row conflict)のうちの1つであり得る。行ヒット(row hit)は、アクセス予定のメモリ行が開かれたことを示す。具体的には、アクセス予定のメモリ行におけるデータは、行にデータを格納するバンクに対応する行バッファ(row buffer)にロードされており、列アクセスコマンドを直接送信することによって、データは行のメモリセルから読み出され、又は、行のメモリセルに書き込まれ得る。列アクセスコマンドは、読み出しコマンド又は書き込みコマンドを含み得る。行アイドル(row idle)は、アクセス予定のメモリ行に対応するバンクがアイドル状態にあり、開かれているメモリ行が無く、「アクティブ化」コマンドを使用することによってアクセス予定のメモリ行を開く必要があり、その後、アクセスされることを示す。言い換えれば、アクセス予定のメモリ行におけるデータは、「アクティブ化」コマンドを使用することによって、バンクに対応する行バッファにロードされる必要があり、その後、アクセスのために列アクセスコマンドを送信できる。行競合(row conflict)は、現在開かれているメモリ行がアクセス予定のメモリ行と異なることを示す。行競合の場合、現在開かれているメモリ行は、まず「閉じる」必要がある。これは具体的には、「プリチャージ」コマンドを使用することによって、開かれたメモリ行におけるデータを再びメモリアレイに書き込み、次に、アクティブ化(activate)コマンドを使用することによってアクセス予定の行におけるデータを対応する行バッファにロードし、その後、アクセスのために列アクセスコマンドを送信することを含む。本発明の実施形態において、アクセス予定のメモリ行の前述の3の状態は、メモリ行の行ヒットステータスと称され得る。「メモリ行」はまた、略して「行」と称され得、アクセス予定のメモリ行はまた、ターゲット行と称され得る。
【0052】
前述の説明から、メモリアクセス中に、アクセス予定の行の異なる状態は、異なるアクセスレイテンシを引き起こし得ることが分かる。
図3は、本発明の実施形態によるメモリアクセスレイテンシの概略図である。
図3に示されるように、行ヒット(row hit)状態(
図3において302によって示される)において、アクセス予定の行は開状態にあるので、メモリコントローラは列アクセスコマンドを直接送信できる。列アクセスコマンドが送信された後、データがメモリから読み出される、又は、メモリに書き込まれることができる。列アクセスコマンドが読み出しコマンドであるとき、レイテンシ303の後に、読み出しデータを取得できる。行アイドル(row idle)(
図3における304によって示される)の場合、バンクには開かれている行が無いので、「アクティブ化」コマンドを使用することによって、アクセス予定の行を開く必要があり、その後にアクセスされる。したがって、メモリコントローラ106はまず、行アクティブ化コマンドを送信し、その後、レイテンシ303の後に列アクセスコマンドを送信して、開かれた行にアクセスする必要がある。列アクセスコマンドが読み出しコマンドであるとき、読み出しデータは、レイテンシ305の後で初めて取得できる。行競合(row conflict)(
図3において306で示される)の場合、現在開かれている行はアクセス予定の行でないので、現在開かれている行を閉じるためにプリチャージ(pre-charge)コマンドをまず送信する必要があり、その後、レイテンシ307の後に、アクセス予定の行を開くために行アクティブ化コマンドが送信され、その後、アクセス予定の行にアクセスするために、レイテンシ305の後に、列アクセスコマンドが送信される。列アクセスコマンドが読み出しコマンドであるとき、列アクセスコマンドが送信された後、読み出しデータは、レイテンシ303の後で初めて取得できる。
【0053】
図3から、レイテンシは、行ヒットの場合に最小であることが分かる。この場合、現在開かれている行を閉じるのが早すぎる場合、行アイドル状態が引き起こされ、レイテンシが増加する。現在開かれている行を閉じるのが遅すぎる場合、行競合が生じ得、レイテンシも増加する。したがって、DRAMにおける行が開かれるとき、開かれた行を閉じることがトリガされる特定の条件のポリシーは、DRAMにアクセスするためのレイテンシ及び帯域幅に影響する重要な要因である。
【0054】
メモリ行管理ポリシーはまた、DRAM行管理ポリシー(DRAM row closing policy)又はDRAM行ポリシー(DRAM row Policy)と称され得、DRAMの行バッファ(ROW Buffer)を管理するために使用されるポリシーである。具体的には、当該ポリシーは、DRAMのバンクにおける行が開かれた後に、当該行を閉じることがトリガされる特定の条件のポリシーである。代替的に、DRAM行管理ポリシーは、行のデータがバンクのバッファ(Row Buffer)に入った後に、対応するバンクの行バッファ(ROW buffer)を閉じることがトリガされる特定の条件のポリシーである。したがって、DRAM行管理ポリシーは、DRAMにアクセスすることについてのレイテンシ及び帯域幅に影響する。
【0055】
本発明の実施形態は、メモリ管理技術を提供し、その結果、DRAMにおける各バンクの行管理ポリシーを動的に調整でき、メモリアクセスレイテンシを低減し、メモリアクセス効率を改善する。説明を容易にするべく、本発明の実施形態において、メモリ行管理ポリシーはまた、行管理ポリシーと称され得る。本発明の実施形態において提供されるメモリ管理技術は、
図1に示すコンピュータシステムに適用され得る。本発明の実施形態において、独立のポリシーインジケータが各メモリバンク(bank)について指定され、メモリコントローラは、バンクについて指定されたポリシーインジケータに基づいてメモリバンクの行管理ポリシーを調整し得る。読み出しコマンドを使用することによるアクセスの局所性と、書き込みコマンドを使用することによるアクセスの局所性との間の相違を考慮して、本発明の実施形態において、第1インジケータ及び第2インジケータが同一のバンクについて指定され得る。第1インジケータは、読み出しアクセスが実行された後に使用される行管理ポリシーを示し、第2インジケータは、書き込みアクセスが実行された後に使用される行管理ポリシーを示す。メモリコントローラは、第1インジケータ及び第2インジケータの両方に基づいて、対応するバンクの行管理ポリシーを決定し得る。
図4Aは、本発明の実施形態によるメモリ管理方法のフローチャートである。方法は、
図1に示すコンピュータシステムにおけるメモリコントローラによって実行され得、方法は以下の段階を備え得る。
【0056】
段階401:ターゲットメモリバンクのメモリアクセスを取得する。本発明の本実施形態において、メモリ110は1又は複数のメモリバンクを含み、ターゲットメモリバンクは、メモリ110における任意のメモリチップ114における任意のバンクであり得る。メモリアクセスは、ターゲットメモリバンクにおけるターゲット行にアクセスするために使用され得る。取得されたメモリアクセスは、読み出し/書き込み識別子、アドレス、要求IDなどの情報を含み得ることが理解され得る。加えて、メモリアクセスが書き込みアクセスである場合、書き込みアクセスは更に、メモリに書き込まれるデータを保持し得る。読み出し/書き込み識別子は、メモリアクセスのアクセスタイプを示す。アドレスは、アクセス予定のアドレスを示し、メモリアクセスのアクセス予定のバンクの識別子は、アドレスに基づいて取得され得る。要求IDはメモリアクセスを識別するために使用される。
【0057】
段階403:メモリコントローラがメモリアクセスのアクセスタイプを決定する。メモリアクセスは読み出しアクセス又は書き込みアクセスを含む。この段階において、メモリアクセスのアクセスタイプは、メモリアクセスにおける読み出し/書き込み識別子に基づいて決定され得る。
【0058】
段階405:メモリアクセスのアクセスタイプに対応する行管理ポリシーを実行する。本発明の本実施形態において、読み出しアクセスと書き込みアクセスとの間の局所性の特徴の相違を考慮すると、読み出しアクセスの局所性は通常、書き込みアクセスの局所性より良い。したがって、本発明の本実施形態において、読み出しアクセス及び書き込みアクセスに異なる行管理ポリシーが使用される。良い局所性とは、複数の連続するコマンドが、同一の行に繰り返しアクセスするために使用されることを意味することに留意されたい。悪い局所性とは、複数の連続するコマンドが、同一の行に繰り返しアクセスするために使用されないことを意味する。悪い局所性はまた、高いランダム性と称され得る。この段階において、メモリアクセスのアクセスタイプに対応する行管理ポリシーが実行され得る。実際の適用において、管理は代替的に、メモリバンクの粒度で実行され得る。この場合、各メモリバンクの異なるタイプのアクセスについて、異なる行管理ポリシーが設定され得る。したがって、この段階において、メモリアクセスのアクセスタイプに対応する、ターゲットメモリバンクの行管理ポリシーが実行され得る。
【0059】
具体的には、メモリアクセスが読み出しアクセスであるとき、ターゲットメモリバンクの行管理ポリシーは、指定された第1インジケータの指示に基づいて実行され得る。メモリアクセスが書き込みアクセスであるとき、ターゲットメモリバンクの行管理ポリシーは、指定された第2インジケータの指示に基づいて実行され得る。第1インジケータは、読み出しアクセスが実行された後に使用される行管理ポリシーを指示し、第2インジケータは、書き込みアクセスが実行された後に使用される行管理ポリシーを指示する。言い換えれば、第1インジケータは、読み出しアクセスが実行された後にターゲット行を閉じるかどうかを示し、第2インジケータは、書き込みアクセスが実行された後にターゲット行を閉じるかどうかを示す。本発明の本実施形態において、第1インジケータは、読み出しアクセスのみに基づいて調整され、第2インジケータは、書き込みアクセスのみに基づいて調整されることに留意されたい。
【0060】
具体的には、ターゲットメモリバンクの行管理ポリシーが第1インジケータの指示又は第2インジケータの指示に基づいて実行されるとき、以下の複数の実装が含まれ得る。1つの場合において、ターゲット行は、第1インジケータの指示又は第2インジケータの指示に基づいて、閉じられ得るか、又は、開状態に維持され得る。例えば、第1インジケータの値、又は、第2インジケータの値が「1」である場合、ターゲット行を開くことを示し、又は、第1インジケータの値若しくは第2インジケータの値が「0」である場合、ターゲット行を閉じることを示す。
【0061】
別の場合において、ターゲット行を閉じるかどうかは、第1インジケータの値、又は、第2インジケータの値、及びプリセット閾値に基づいて決定され得る。例えば、第1インジケータの値が第1閾値より大きい又はそれに等しいとき、読み出しアクセスが完全に実行された後にターゲット行は開状態に維持され、又は、第1インジケータの値が第1閾値より小さいとき、読み出しアクセスが完全に実行された後にターゲット行が閉じられる。第2インジケータの値が第2閾値より大きい又はそれに等しいとき、書き込みアクセスが完全に実行された後にターゲット行は開状態に維持され、又は、第2インジケータの値が第2閾値より小さいとき、書き込みアクセスが完全に実行された後にターゲット行は閉じられる。実際の適用において、第1閾値及び第2閾値は、同一でも異なってもよい。実際の適用において、代替的に、第1インジケータの値が第1閾値より小さいとき、読み出しアクセスが完全に実行された後にターゲット行は開状態に維持され得、又は、第1インジケータの値が第1閾値より大きいとき、読み出しアクセスが完全に実行された後にターゲット行は閉じられ得る。同様に、第2インジケータの値が第2閾値より小さいとき、書き込みアクセスが完全に実行された後にターゲット行は開状態に維持され、又は、第2インジケータの値が第2閾値より大きいとき、書き込みアクセスが完全に実行された後にターゲット行は閉じられる。
【0062】
更に別の場合において、ターゲット行の行管理ポリシーは代替的に、第1インジケータの値又は第2インジケータの値によって示される時間に基づいて実行され得る。例えば、メモリアクセスが読み出しアクセスであり、かつ、第1インジケータの値が第3閾値より大きい又はそれに等しい場合、読み出しアクセスが完全に実行された後にターゲット行は開状態に維持され、開状態に維持する時間が第1インジケータの値によって示される時間に達するまで、ターゲット行は閉じられる。メモリアクセスが書き込みアクセスであり、かつ、第2インジケータの値が第4閾値より大きい又はそれに等しい場合、書き込みアクセスが完全に実行された後にターゲット行は開状態に維持され得、開状態を維持する時間が第2インジケータの値によって示される時間に達するまで、ターゲット行は閉じられる。第3閾値及び第4閾値は同一でも異なってもよく、第3閾値及び第4閾値の両方は、0より大きい又はそれに等しい整数であり得る。
【0063】
更に別の場合において、方法は更に、段階407を含み得る。メモリコントローラは、メモリアクセスのアクセスタイプ及びターゲット行の行ヒットステータスに基づいて、対応する行管理ポリシーを調整し得る。ターゲット行の行ヒットステータスは、行ヒット、行競合、又は行アイドルを含み得る。具体的には、メモリコントローラは、メモリアクセスのアドレスに基づいてターゲット行の行ヒットステータスを決定し得る。メモリアクセスのアドレスがターゲットバンクにおける開かれた行のアドレスと一致するとき、メモリアクセスが行ヒットを引き起こすとみなされる。メモリアクセスのアドレスに基づいて、ターゲットバンクに開かれた行が無いと決定されたとき、メモリアクセスが行アイドルを引き起こすとみなされる。メモリアクセスのアドレスがターゲットバンクにおける開かれた行のアドレスと不一致であるとき、メモリアクセスが行競合を引き起こすとみなされる。
【0064】
実際の適用において、ターゲットバンクの行管理ポリシーは、行管理ポリシーに対応するポリシーインジケータを調整することによって調整され得る。本発明の本実施形態において、読み出しアクセスと書き込みアクセスとの間の局所性の相違を考慮すると、対応するポリシーインジケータは、異なるアクセスタイプに基づいて調整され、対応する行管理ポリシーを調整し得る。例えば、1の場合において、ターゲットバンクについて指定され得るポリシーインジケータは、第1インジケータ及び第2インジケータを含み得る。第1インジケータは、読み出しアクセスが実行された後にターゲット行を閉じるかどうかを示し、第2インジケータは、書き込みアクセスが実行された後にターゲット行を閉じるかどうかを示す。言い換えれば、第1インジケータは、読み出しアクセスに対応する行管理ポリシーを示し、第2インジケータは、書き込みアクセスに対応する行管理ポリシーを示す。段階403においてメモリアクセスが読み出しアクセスであると決定されるとき、ターゲットメモリバンクの第1インジケータは、この段階においてターゲット行の行ヒットステータスに基づいて調整され得る。段階403においてメモリアクセスが書き込みアクセスであると決定されるとき、ターゲットメモリバンクの第2インジケータは、この段階においてターゲット行の行ヒットステータスに基づいて調整され得る。特定の調整中に、例えば、メモリアクセスが行ヒットを引き起こす場合、第1インジケータ又は第2インジケータは第1指示に調整され、ここで、第1指示は、ターゲット行が閉じられていない、又は、ターゲット行が開状態に維持されていることを示す。メモリアクセスが行競合を引き起こす場合、第1インジケータ又は第2インジケータは第2指示に調整され、ここで、第2指示は、ターゲット行が閉じられていることを示す。具体的な調整方法については、
図5A-1及び
図5A-2~
図5Dにおける以下の説明を参照されたい。詳細については、ここで説明しない。別の場合において、この段階では、ターゲットバンクの第1インジケータは代替的に、読み出しアクセスのみに基づいて調整され得、書き込みアクセスに対応する行管理ポリシーは調整されない。
【0065】
実際の適用において、段階405及び段階407を実行する順序は限定されないことに留意されたい。ターゲットバンクの行管理ポリシーは、まずターゲット行のヒットステータスに基づいて調整され得、その後、メモリアクセスのタイプに対応する調整された行管理ポリシーが実行される。代替的に、メモリアクセスのタイプに対応する行管理ポリシーがまず実行され得、その後、行管理ポリシーは、メモリアクセス中にアクセスされるターゲット行の行ヒットステータスに基づいて調整される。
【0066】
本発明の本実施形態において、DRAMにおけるメモリ行の行管理ポリシーが実行されるとき、異なるアクセスタイプの局所性の間の相違が十分に考慮され、対応する行管理ポリシーはアクセスタイプに基づいて実行され、その結果、メモリ行管理をより正確にでき、不適切な行管理ポリシーによって引き起こされるメモリアクセスレイテンシを低減でき、メモリアクセス効率を改善できる。
【0067】
図4Aに示されるように、本発明の実施形態は、1のメモリアクセスの観点から説明を提供する。
図4Bに示すように、以下では、複数のメモリアクセスの観点から説明を提供する。
図4Bは、本発明の実施形態による別のメモリ管理方法のフローチャートである。方法は更に、
図1に示すコンピュータシステムにおけるメモリコントローラによって実行され得、方法は以下の段階を備え得る。
【0068】
段階402:ターゲットメモリバンクの複数のメモリアクセスをモニタリングする。複数のメモリアクセスは読み出しアクセス又は書き込みアクセスを含み得る。本発明の本実施形態において、ターゲットバンクの複数のメモリアクセスをモニタリングすることは、ターゲットバンクの複数のメモリアクセスを取得すること、並びに、ターゲットバンクの各メモリアクセスのアクセスタイプ及び行ヒットステータスを決定することを含み、ここで、行ヒットステータスは、行ヒット、行アイドル、又は行競合が引き起こされるかどうかを含む。具体的には、メモリアクセスのアクセスタイプは、メモリアクセスにおける読み出し/書き込み識別子に基づいて決定され得る。アクセス予定の行のステータスは、各メモリアクセスのアドレスに基づいて決定され得る。メモリアクセスのアドレスがターゲットバンクにおける開かれた行のアドレスと一致するとき、メモリアクセスが行ヒットを引き起こすとみなされる。メモリアクセスのアドレスに基づいて、ターゲットバンクに開かれた行が無いと決定されたとき、メモリアクセスが行アイドルを引き起こすとみなされる。メモリアクセスのアドレスがターゲットバンクにおける開かれた行のアドレスと不一致であるとき、メモリアクセスが行競合を引き起こすとみなされる。
【0069】
段階404:複数のメモリアクセスに基づいて、ターゲットバンクの行管理ポリシーを別々に調整する。例えば、第1インジケータは、複数のメモリアクセスにおける読み出しアクセスに基づいて調整され得、第2インジケータは、複数のメモリアクセスにおける書き込みアクセスに基づいて調整され得る。第1インジケータは、読み出しアクセスが実行された後に使用される行管理ポリシーを指示し、第2インジケータは、書き込みアクセスが実行された後に使用される行管理ポリシーを指示する。本発明の本実施形態において、読み出しアクセスと書き込みアクセスとの間の局所性の特徴の相違を考慮して、同一バンクの第2インジケータ及び第1インジケータが別々に指定される。説明を容易にするために、本発明の本実施形態において、メモリチップ114におけるバンクが説明のための例として使用される。
【0070】
本発明の本実施形態において、第2インジケータ及び第1インジケータは各々、カウンタ又はレジスタの形態で存在し得る。以下では、カウンタを例として使用することによって第2インジケータを説明する。初期化中に、異なる初期値が第1インジケータ及び第2インジケータに割り当てられ得る。読み出しアクセスの局所性が書き込みアクセスの局所性より良いことを考慮すると、第1インジケータの初期値は第2インジケータの初期値より大きいことがあり得る。
【0071】
初期化が完了した後に、第1インジケータの値は、バンクの読み出しアクセスに基づいて調整され得、第2インジケータの値は、バンクへの書き込みアクセスに基づいて調整され得る。本発明の本実施形態において、任意のバンクについて、バンクの第1インジケータが、バンクへの読み出しアクセスのみに基づいて調整され、バンクの第2インジケータは、バンクへの書き込みアクセスのみに基づいて調整されることに留意されたい。ターゲットバンクのメモリアクセスに基づいて、ターゲットバンクの第1インジケータの値又は第2インジケータの値をどのように調整するかについての詳細は、
図5A-1及び
図5A-2~
図5Dに示す実施形態を参照されたい。
【0072】
段階406:ターゲットバンクの行管理ポリシーを実行する。具体的には、第1インジケータの指示又は第2インジケータの指示に基づいてターゲットバンクの行管理ポリシーをどのように実行するかについての詳細は、
図4Aにおける段階405の説明を参照されたい。例えば、ターゲットバンクにおける行は、第1インジケータによって示される時間、又は、第2インジケータによって示される時間に基づいて閉じられ得る。代替的に、ターゲットバンクにおける行は、第1インジケータの指示又は第2インジケータの指示に基づいて閉じられ得、又は、ターゲットバンクにおける行は、プリセット閾値、及び、第1インジケータの値又は第2インジケータの値に基づいて閉じられ得る。第2インジケータの値又は第1インジケータの値に基づいてターゲットバンクの行管理ポリシーをどのように動的に調整するかについての詳細は、
図6における説明を参照されたい。
【0073】
図5A-1及び
図5A-2は、本発明の実施形態による行管理ポリシーを調整するための方法のフローチャートである。行管理ポリシーは、対応するポリシーカウンタを調整することによって調整され得ることが理解され得る。
図5A-1及び
図5A-2において、1のターゲットバンクが2のポリシーインジケータ(第1インジケータ及び第2インジケータを含む)に対応する例が使用される。
図5A-1及び
図5A-2において、1のメモリアクセスが説明のための例として使用される。
図4A及び
図4Bにおいてメモリコントローラによって取得される任意のメモリアクセスについて、対応する行管理ポリシーは、
図5A-1及び
図5A-2に示す方法に従って調整され得ることが理解され得る。具体的に、方法は、以下の段階を含んでよい。
【0074】
段階502:メモリコントローラがメモリアクセスを受信する。上で説明するように、受信されたメモリアクセスは、読み出し/書き込み識別子、アドレス及び要求IDなどの情報を含み得る。段階504:メモリコントローラが、メモリアクセスが読み出しアクセスであるか、又は書き込みアクセスであるかを決定する。メモリアクセスが読み出しアクセスである場合、方法は段階506に進む。メモリアクセスが書き込みアクセスである場合、方法は段階520に進む。段階502及び段階504は、
図4Aにおける段階401及び段階403及び、並びに
図4Bにおける段階402と同様であることが理解され得る。本実施形態において、明確にするために改めて説明を提供する。実際の適用において、段階502及び段階504は、
図4Aにおける段階401及び段階403が実行された後、又は、
図4Bにおける段階402が実行された後に実行される必要はない。
【0075】
メモリアクセスが読み出しアクセスであるとき、段階506において、ターゲットメモリバンク(略してメモリバンク又はバンク)の前のメモリアクセスが読み出しアクセスであるか、又は書き込みアクセスであるかを更に決定する。前のメモリアクセスが読み出しアクセスである場合、方法は段階508に進む。メモリアクセスの前のメモリアクセスが書き込みアクセスである場合、ランダム動作によって引き起こされる、読み出し-書き込みの切り替えに起因して、ターゲットバンクにおける行を不適切に閉じることを低減するために、方法は段階519に進む。段階508:メモリコントローラは、ターゲットバンクが開状態にあるか、又はアイドル状態にあるかを決定する。ターゲットバンクが開状態にある場合、方法は段階510に進む。ターゲットバンクがアイドル状態にある場合、方法は段階516に進む。
【0076】
ターゲットバンクが開かれるとき、段階510において、メモリコントローラは、メモリアクセスが行ヒットを引き起こすかどうかを決定する。具体的には、メモリコントローラは、メモリアクセスの行アドレスに基づいて、ターゲットバンクにおける開かれた行がヒットされるかどうかを決定し得る。メモリアクセスの行アドレスが、ターゲットバンクにおける開かれた行のアドレスと同一である場合、メモリアクセスは行ヒットを引き起こすとみなされる。そうでない場合、メモリアクセスは行競合を引き起こすとみなされる。メモリアクセスが行ヒットを引き起こす場合、行を開状態に維持する決定が正しいことを示し、方法は段階514に進む。段階514:メモリコントローラは、第1インジケータを第1指示に調整し得、ここで、第1指示は、ターゲット行が閉じられていない、又は、ターゲット行が開状態に維持されていることを示す。例えば、メモリコントローラは、第1プリセット値だけ第1インジケータの値を増加させ得、又は、ターゲットバンクの第1インジケータを調整せず、ターゲット行を開状態に維持し得る。第1プリセット値は1又は別の値であり得る。
【0077】
メモリアクセスが行競合を引き起こす場合、ターゲットバンクにおける現在開かれている行が、可能な限り早く閉じられるべきであることを示し、方法は段階512に進む。段階512:メモリコントローラがターゲットバンクの第1インジケータを第2指示に調整し、ここで、第2指示は、ターゲット行が閉じられていることを示す。例えば、段階512において、メモリコントローラは、ターゲットバンクの第1インジケータの値を第2プリセット値だけ減少させ得る。例えば、第2プリセット値は1又は別の値であり得る。第1プリセット値はまた、第1調整幅と称され得、第2プリセット値はまた、第2調整幅と称され得る。
【0078】
ターゲットバンクがアイドルである場合、段階516において、メモリコントローラは更に、メモリアクセスが行ヒットを引き起こし得るかどうかを決定する。行ヒットが引き起こされ得ることは、ターゲットバンクにおける最後に開かれた行が閉じられていない場合に行ヒットが引き起こされることを意味する。上で説明したように、ターゲットバンクがアイドルであるとき、ターゲットバンクには開状態にある行が無いことを示す。ターゲットバンクのアイドル状態は、ターゲットバンクの前のメモリアクセスが完全に実行された後にターゲットバンクにおける行が閉じられるので引き起こされ得る。具体的には、この段階において、メモリコントローラは、メモリアクセスの行アドレスを前のメモリアクセスの行アドレスと比較して、メモリアクセスが行ヒットを引き起こし得るかどうかを決定し得る。
【0079】
メモリアクセスの行アドレスが前のメモリアクセスの行アドレスと同一である場合、メモリアクセスは行ヒットを引き起こし得ると決定される。この場合、ターゲットバンクにおける最後に開かれた行は、より長い期間開かれるべきであるが、事前に閉じられることを示す。したがって、方法は段階518に進む。段階518:メモリコントローラがターゲットバンクの第1インジケータを第1指示に調整し、例えば、第1インジケータの値を第1プリセット値だけ増加させる。例えば、第1プリセット値は1又は別の値であり得る。メモリアクセスが行ヒットを引き起こさないことがあり得る、すなわち、メモリアクセスが行競合(row conflict)を引き起こし得ると決定される場合、ターゲットバンクにおける最後に開かれた行を閉じるポリシーは正しいことを示し、方法は段階519に進む。段階519:メモリコントローラは、ターゲットバンクの第1インジケータを調整しない。ターゲットバンクにおける最後に開かれた行はまた、メモリアクセスの前のメモリアクセスを使用することによってアクセスされた行と称され得る。
【0080】
方法は段階504に戻る。段階504において、メモリアクセスは書き込みアクセスであると決定された場合、段階520において、メモリコントローラは更に、メモリアクセスの前のメモリアクセスが読み出しアクセスであるか、又は書き込みアクセスであるかを決定する。メモリアクセスの前のメモリアクセスが読み出しアクセスである場合、方法は段階531に進む。メモリコントローラは、ターゲットバンクの書き込みカウンタを調整しない。メモリアクセスの前のメモリアクセスが書き込みアクセスである場合、方法は段階522に進む。段階522:メモリコントローラは、ターゲットバンクが開状態にあるか、又はアイドル状態にあるかを決定する。ターゲットバンクが開状態にある場合、方法は段階524に進む。ターゲットバンクがアイドル状態にある場合、方法は段階526に進む。本発明の実施形態において、ターゲットバンクが開状態にあることは、ターゲットバンクにおける行が開かれていることを意味することに留意されたい。
【0081】
ターゲットバンクが開状態にあるとき、段階524において、メモリコントローラは更に、メモリアクセスが行ヒットを引き起こすかどうかを決定する。具体的には、メモリコントローラは、メモリアクセスの行アドレスに基づいて、行ヒットが引き起こされるかどうかを決定し得る。メモリアクセスが行ヒットを引き起こす場合、ターゲットバンクにおける現在の行を開状態に維持するポリシーが正しいことを示し、方法は段階530に進む。段階530:メモリコントローラが第2インジケータを第1指示に調整し得、ここで、第1指示は、ターゲット行が閉じられていない、又は、ターゲット行が開状態に維持されていることを示す。例えば、
図5A-1及び
図5A-2に示すように、段階530において、メモリコントローラは、ターゲットバンクの第2インジケータの値を第3プリセット値だけ増加させ得るか、又は、第2インジケータを調整しないことがあり得る。メモリアクセスが行競合を引き起こす場合、言い換えれば、メモリアクセスがターゲットバンクにおける開かれた行にヒットしない場合、ターゲットバンクにおける現在開かれている行は、可能な限り早く閉じられるべきであることを示し、方法は段階528に進む。段階528:メモリコントローラは、第2インジケータを第2指示に調整し得、ここで、第2指示は、ターゲット行が閉じられていることを示す。例えば、メモリコントローラは、ターゲットバンクの第2インジケータの値を第4プリセット値だけ減少させ得る。第3プリセット値又は第4プリセット値は、1又は別の値であり得る。第3プリセット値はまた、第3調整幅と称され得、第4プリセット値は、第4調整幅と称され得る。
【0082】
ターゲットバンクがアイドルであるとき、段階526において、メモリコントローラは更に、メモリアクセスが行ヒットを引き起こし得るかどうかを決定する。上で説明されるように、行ヒットが引き起こされ得ることは、ターゲットバンクにおける最後に開かれた行が閉じられていない場合に行ヒットが引き起こされることを意味する。具体的には、この段階において、メモリコントローラは、メモリアクセスの行アドレスを最後に開かれた行の行アドレスと比較して、メモリアクセスが行ヒットを引き起こし得るかどうかを決定し得る。メモリアクセスの行アドレスが最後に開かれた行の行アドレスと同一である場合、行ヒットが引き起こされ得ると決定される。そうでない場合、行競合が引き起こされ得るとみなされる。メモリアクセスが行ヒットを引き起こし得ると決定される場合、ターゲットバンクにおける最後に開かれた行が事前に閉じられ、より長い期間開かれるべきであることを示す。ターゲットバンクにおける最後に開かれた行が、メモリアクセスの前のメモリアクセスを使用することによってアクセスされる行であることが理解され得る。この場合、方法は段階532に進む。段階532において、メモリコントローラは、ターゲットバンクに対応する第2インジケータを第1指示に調整する。例えば、メモリコントローラは、ターゲットバンクの第2インジケータの値を第4プリセット値だけ増加させ得る。第4プリセット値は、1又は別の値であり得る。メモリアクセスが行競合を引き起こし得ると決定される場合、ターゲットバンクにおける最後に開かれた行を閉じるポリシーは正しいことを示し、方法は段階531に進む。段階531:メモリコントローラは、ターゲットバンクの第2インジケータを調整しない。
【0083】
本発明の本実施形態における第1プリセット値、第2プリセット値、第3プリセット値及び第4プリセット値は、同一でも異なってもよいことに留意されたい。ここでは、これについて限定しない。第1プリセット値、第2プリセット値、第3プリセット値、及び第4プリセット値が異なるとき、読み出しアクセスと書き込みアクセスとの間の局所性の相違を考慮すると、読み出しアクセスの連続性がより良く、レイテンシが更に低減され、読み出しアクセスを使用することによってアクセスされる行は、より長い時間にわたって開いた状態に維持され得る。書き込みアクセスのランダム性はより高く、レイテンシが低減され、書き込みアクセスを使用することによってアクセスされる行は、より短い時間にわたって開いた状態に維持される必要があり、それにより、より多くの行競合を回避する。したがって、本発明の本実施形態において、第1プリセット値は、第2プリセット値より大きいことがあり得、第3プリセット値は、第4プリセット値より小さいことがあり得る。言い換えれば、第1インジケータが調整されるとき、第1指示への調整の第1調整幅は、第2指示への調整の第2調整幅より大きいことがあり得る。第2インジケータが調整されるとき、第1指示への調整の第3調整幅は、第2指示への調整の第4調整幅より小さいことがあり得る。
【0084】
図5A-1及び
図5A-2に示す実施形態において、読み出しアクセスと書き込みアクセスとの間の局所性の相違は十分に考慮され、ターゲットバンクの行管理ポリシーは、ターゲットバンクの複数のメモリアクセスのタイプ、現在のメモリアクセスの前のメモリアクセスのタイプ、及び、ターゲットバンクの現在のステータスに基づいて別々に調整される。例えば、第1インジケータは、読み出しアクセスに基づいて調整され得、読み出しアクセスに対応する行管理ポリシーを調整し、第2インジケータは、書き込みアクセスに基づいて調整され得、書き込みアクセスに対応する行管理ポリシーを調整し、その結果、ターゲットバンクの第1インジケータの調整及びターゲットバンクの第2インジケータの調整はより正確になる。したがって、メモリコントローラは、ターゲットバンクの第1インジケータの指示、及び、ターゲットバンクの第2インジケータの指示に基づいて、ターゲットバンクにおける行をいつ閉じるかを決定し得る。これにより、不適切な行管理ポリシーによって引き起こされるメモリアクセスレイテンシを低減し、メモリアクセス効率を改善する。
【0085】
別の場合において、行管理ポリシーがメモリアクセスのアクセスタイプ及び行ヒットステータスに基づいて調整されるとき、行アイドル状態において開かれている行が無いので、アクセスレイテンシに対する行アイドル状態の影響は小さいとみなされ得ると理解され得る。したがって、本実装において、アクセスレイテンシに対する行アイドル状態の影響は考慮されないことがあり得、行管理ポリシーは、2つの場合、すなわち、行ヒット及び行競合のみに基づいて調整される。このようにして、調整方法は、より単純になる。言い換えれば、この場合、メモリアクセスの行ヒットステータスは、2種類、すなわち、行ヒット及び行競合のみを含むとみなされ得、行アイドルの場合は考慮されない。具体的には、
図5Bに示すように、
図5A-1及び
図5A-2に示す調整方法と比較して、段階508、516、518、522、526及び532は、
図5Bに示す行管理ポリシーを調整するための方法において実行されない。
図5Bに示す行管理ポリシーを調整するための方法において、異なるメモリアクセスタイプが更に考慮され、第1インジケータ及び第2インジケータが、ターゲットバンクについて別々に指定され、第1インジケータの値又は第2インジケータの値は、メモリアクセスの異なるタイプに基づいて調整される。このようにして、読み出しアクセスと書き込みアクセスとの間の相違が調整中に考慮される。これによりメモリアクセスレイテンシを低減する。
【0086】
別の場合において、ポリシーカウンタが調整されるとき、代替的に、前のメモリアクセス要求のタイプは考慮されないことがあり得る。具体的には、
図5A-1及び
図5A-2に示す調整方法において、段階504が実行された後に、段階506又は段階520は実行されないことがあり得、方法は、段階508又は段階522に直接進み得る。言い換えれば、
図5A-1及び
図5A-2に示す調整方法において、段階506及び段階520は、任意選択の段階であり、実際の適用において実行されないことがあり得る。他の段階の説明については、
図5A-1及び
図5A-2に示す実施形態の説明を参照されたい。この調整方法は、
図5C-1及び
図5C-2に具体的に示され得る。
図5C-1及び
図5C-2に示すこの調整方式において、異なるポリシーインジケータが、読み出しアクセス及び書き込みアクセスに基づいて別々に調整される。このようにして、読み出しアクセスと書き込みアクセスとの間の局所性の相違が十分に考慮され、調整がより正確になり、メモリアクセスレイテンシも低減できる。加えて、前のメモリアクセス要求のタイプは考慮されないので、調整方式は、
図5A-1及び
図5A-2に示す実施形態より単純である。しかしながら、ランダム動作によって引き起こされる読み出し-書き込みの切り替えは、ターゲットバンクにおける行を不適切に閉じることを引き起こし得る。
【0087】
別の調整方法において、前のメモリアクセス要求のタイプも、ターゲットバンクがアイドルかどうかも考慮されないことがあり得るが、第1インジケータ又は第2インジケータは、受信されたメモリアクセスのタイプ、及び、メモリアクセスのヒットステータス(行ヒット及び行競合を含む)のみに基づいて調整される。具体的には、例えば、
図5A-1及び
図5A-2に示す調整方法において、段階502、504、510、512、514、524、528及び530のみが実行され得る。この方式において読み出しアクセスと書き込みアクセスとの間の局所性の相違が考慮される。したがって、調整方法がより単純になる。詳細は
図5Dに示される。
【0088】
前述の説明に基づいて、実際の適用において、
図5A-1及び
図5A-2における段階506、508及び516は、必ずしも実行されないことが分かる。特定の要件に基づいて、段階は、実行されても実行されなくてもよく、又は、段階の一部が実行され得る。行管理ポリシーが調整されるとき、異なる行管理ポリシーが、メモリアクセスの異なるタイプ、及び、ターゲット行のヒットステータスに基づいて別々に調整される限り、別の行管理ポリシー調整方式は、本発明の実施形態において限定されない。実際の適用において、1の場合において、ターゲット行のヒットステータスは、3種類、すなわち、行ヒット、行競合及び行アイドルを含み得る。別の場合において、ターゲット行のヒットステータスは代替的に、2種類、すなわち、行ヒット及び行競合のみを含み得る。
【0089】
図6を参照すると、以下では、段階405又は段階406において、メモリコントローラが、第2インジケータの値、又は、第1インジケータの値に基づいてメモリ行管理ポリシーをどのように実行するかを詳細に説明する。
図6は、本発明の実施形態によるメモリ行管理ポリシーを実行するための方法のフローチャートである。本発明の本実施形態において、メモリコントローラは、各バンクについてタイマを設定し得、その結果、メモリコントローラは、バンクの第1インジケータの値、又は、第2インジケータの値に基づいて、バンクにおける開かれた行をいつ閉じるかを決定し、バンクに対応する行管理ポリシーを実行し得る。説明を容易にするべく、
図6において、1のバンクが更に説明のための例として使用される。具体的に、方法は、以下の段階を含んでよい。
【0090】
段階602:メモリコントローラが、ターゲットバンクによって送信されたメモリアクセスコマンドをモニタリングする。具体的には、メモリコントローラがメモリアクセス要求を受信した後、メモリコントローラは、メモリアクセス要求のアドレスに基づいて、メモリ114におけるターゲットバンク1142にアクセスする。メモリコントローラは、ターゲットバンクの行のステータスに基づいて、メモリアクセスコマンドをターゲットバンクへ送信し得る。例えば、ターゲットバンクが行アイドル状態にあるとき、メモリコントローラはアクティブ化コマンドを送信し、メモリアクセスを使用することによってアクセスされる行をアクティブ化する。行ヒットの場合、メモリコントローラは、受信されたメモリアクセスに基づいて、読み出しコマンド又は書き込みコマンドを直接送信し得る。行競合の場合、メモリコントローラは、プリチャージコマンドをターゲットバンクへ送信して、ターゲットバンクにおける開かれた行を閉じ、その後、アクティブ化コマンドを送信してアクセス予定の行を開き、最後に、アクセスのために読み出しコマンド又は書き込みコマンドを送信する。メモリコントローラによってターゲットバンクへ送信されたコマンドは、少なくとも複数のタイプ、すなわち、アクティブ化コマンド、プリチャージコマンド、読み出しコマンド又は書き込みコマンドを含み得ることが分かる。
【0091】
段階604:メモリコントローラが、メモリアクセスコマンドが読み出しコマンドであるか、又は書き込みコマンドであるかを決定する。上で説明されたように、メモリコントローラによってターゲットバンクへ送信されたコマンドは、少なくとも複数のタイプ、すなわち、アクティブ化コマンド、プリチャージコマンド、読み出しコマンド又は書き込みコマンドを含み得る。したがって、段階604において、コマンドは読み出しコマンド又は書き込みコマンドであるとメモリコントローラが決定する場合、方法は段階606に進む。コマンドが読み出しコマンド又は書き込みコマンドでない場合、方法は段階620に進む。
【0092】
段階606:メモリコントローラは、メモリアクセスコマンドが属するメモリアクセス要求が、スケジューリングキューにおける、ターゲットバンクにアクセスするための最後のメモリアクセス要求であるかどうかを決定する。上で説明したように、メモリコントローラによってターゲットバンクへ送信された読み出しコマンド又は書き込みコマンドは、現在処理されているメモリアクセス要求に基づいて取得される。実際の適用において、メモリコントローラは、複数の受信されたメモリアクセス要求をバッファキューに配置し、特定のスケジューリングポリシーに従って、バッファキューにおけるメモリアクセス要求をスケジューリングキューにスケジューリングし、その後、スケジューリングキューにおけるメモリアクセス要求を別々に処理する。通常、バッファキューの空間は、スケジューリングキューの空間より大きく、スケジューリングキューにおけるメモリアクセス要求より、バッファキューにバッファリングされているメモリアクセス要求の方がより多い。
【0093】
この段階において、メモリコントローラは、スケジューリングキューにおける複数のメモリアクセス要求のアドレスに基づいて、メモリアクセスコマンドが属するメモリアクセス要求が、スケジューリングキューにおける、ターゲットバンクにアクセスするための最後のメモリアクセス要求(すなわち、現在処理されているアクセス要求)であるかどうかを決定し得る。言い換えれば、メモリコントローラは、各メモリアクセス要求のアドレスに基づいて、スケジューリングキューにおける、ターゲットバンクにアクセスするための別のメモリアクセス要求があるかどうかを決定し得る。コマンドが属するメモリアクセス要求(すなわち、現在処理されているアクセス要求)が、スケジューリングキューにおける、ターゲットバンクにアクセスするための最後のメモリアクセス要求である、言い換えれば、スケジューリングキューにおける、ターゲットバンクにアクセスするための他のメモリアクセス要求が無い場合、方法は段階608に進む。コマンドが属するメモリアクセス要求(すなわち、現在処理されているメモリアクセス要求)は、スケジューリングキューにおける、ターゲットバンクにアクセスするための最後のメモリアクセス要求でない、言い換えれば、スケジューリングキューにおける、ターゲットバンクにアクセスするための別のメモリアクセス要求がある場合、方法は段階620に進む。
【0094】
段階608:メモリコントローラは更に、メモリアクセスコマンドが読み出しコマンドであるか、又は、書き込みコマンドであるかを決定する。コマンドが読み出しコマンドである場合、方法は段階610に進む。メモリアクセスコマンドが書き込みコマンドである場合、方法は段階612に進む。段階610:メモリコントローラは、ターゲットバンクの第1インジケータの値を読み出し、方法は段階614に進む。段階612:メモリコントローラは、ターゲットバンクの第2インジケータの値を読み出し、その後、方法は段階614に進む。ターゲットバンクの第1インジケータの値及び第2インジケータの値は、
図5A-1及び
図5A-2~
図5Dに示す方法に基づく調整後に取得される値であり得るか、又は、調整前の値であり得ることが理解され得る。言い換えれば、実際の適用において、メモリアクセスが完全に実行された後に、ターゲットバンクに対応する行管理ポリシーがまず実行され得、その後、ターゲットバンクの行管理ポリシーを示す第1インジケータ又は第2インジケータが、実行されたメモリアクセスに基づいて調整される。代替的に、ターゲットバンクの行管理ポリシーを示す第1インジケータ又は第2インジケータが、メモリアクセスに基づいて調整された後に、調整された第1インジケータ又は第2インジケータによって示される行管理ポリシーが選択及び実行され得る。ここでは、これについて限定しない。
【0095】
段階614:メモリコントローラは、段階610又は段階612において読み出されたインジケータの値が、指定された閾値より小さいかどうかを決定する。第1インジケータの読み出し値又は第2インジケータの読み出し値が閾値より小さくない場合、方法は段階616に進む。第1インジケータの読み出し値又は第2インジケータの読み出し値が閾値より小さい場合、方法は段階620に進む。実際の適用において、閾値は0又は別の値に設定され得る。ここでは、これについて限定しない。
【0096】
段階616:メモリコントローラは、ターゲットバンクに対応するタイマを制御して、第1インジケータの読み出し値又は第2インジケータの読み出し値に基づいてタイミングを開始し、その後、方法は段階618に進む。段階618:メモリコントローラは、タイマがタイミング時間に達したとき、ターゲットバンクにおける開かれた行を閉じる。具体的には、メモリコントローラは、プリチャージコマンドをターゲットバンクへ送信し、ターゲットバンクにおける開かれた行を閉じ得る。タイマは、インクリメント又はデクリメント方式で、第1インジケータの値又は第2インジケータの値に基づいて、タイミングを開始し得ることが理解され得る。例えば、タイマは、0からタイミングを開始して、タイマの時間が第1インジケータの値又は第2インジケータの値に増加するまで続け得るか、又は、タイマは、タイマの時間が第1インジケータの値又は第2インジケータの値に設定された後に、デクリメント方式でタイミングを開始し得る。タイミング方式は本明細書において限定されない。
【0097】
図6に示す行管理ポリシーを実行する方法は、第1インジケータの値又は第2インジケータの値によって示される時間に基づいてターゲット行の行管理ポリシーを実行することである。これは、行管理ポリシーを実行する方式の例に過ぎない。実際の適用において、対応する行管理ポリシーは、タイマを設定することなく、第1インジケータの指示又は第2インジケータの指示に基づいて直接実行され得る。詳細については、段階405の関連する説明を参照されたい。
【0098】
前述の実施形態は、第1インジケータ及び第2インジケータが各バンクについて別々に指定される場合の調整方式を提供する。実際の適用において、書き込みアクセスの局所性が悪いので、固定ページポリシーが書き込みアクセスに使用され得る。例えば、1の方式において、固定行閉じ(row closing)ポリシーが使用され得、すなわち、書き込みアクセスを使用することによってアクセスされる行は、書き込みアクセスが完全に実行された直後に閉じられる。別の場合において、短い行閉じ時間が設定され得、書き込みアクセスを使用することによってアクセスされる行は、時間に達したときに閉じられる。固定的行管理ポリシーが書き込みアクセスに使用されるとき、第2インジケータは、設定されないことがあり得る。この方式において、1の第1インジケータのみが各バンクについて指定され得る。
【0099】
具体的には、
図7は、本発明の実施形態による別のメモリ管理方法のフローチャートである。方法は更に、
図1に示すコンピュータシステムにおけるメモリコントローラによって実行され得る。この方法は、以下の段階を含み得る。
【0100】
段階702:ターゲットメモリバンクのメモリアクセスを取得する。段階401と同様に、メモリアクセスは読み出しアクセス又は書き込みアクセスを含み得る。取得されたメモリアクセスは、読み出し/書き込み識別子、アドレス及び要求IDなどの情報を含み得る。加えて、メモリアクセスが書き込みアクセスである場合、書き込みアクセスは更に、メモリに書き込まれるデータを保持し得る。段階704:メモリコントローラは、メモリアクセスのアクセスタイプを決定し得る。メモリアクセスは読み出しアクセス又は書き込みアクセスを含む。この段階において、メモリアクセスのアクセスタイプは、メモリアクセスにおける読み出し/書き込み識別子に基づいて決定され得る。メモリアクセスが読み出しアクセスである場合、方法は段階706に進む。メモリアクセスが書き込みアクセスである場合、方法は段階710に進む。
【0101】
段階706:メモリコントローラは、メモリアクセスのターゲット行の行ヒットステータスに基づいてターゲットバンクの第1インジケータを調整する。上で説明されるように、行ヒットステータスは、行ヒット、行競合、又は行アイドルを含み得る。本発明の本実施形態において、第1インジケータは、読み出しアクセスが実行された後に使用される行管理ポリシーを示すために設定され得る。言い換えれば、読み出しアクセスが実行された後にターゲット行を閉じるかどうかは、第1インジケータの指示に基づいて決定され得る。この段階において、ターゲットバンクの第1インジケータは、メモリアクセスの行ヒットステータスに基づいて調整され得、その結果、ターゲットバンクの行管理ポリシーを動的に調整できる。具体的な調整方法については、
図5A-1及び
図5A-2~
図5Dにおける第1インジケータについての調整方法を参照されたい。本明細書では詳細について改めて説明しない。
【0102】
段階708:メモリコントローラが、第1インジケータの指示に基づいて対応する行管理ポリシーを実行する。具体的には、メモリアクセスが完全に実行された後に、対応する行管理ポリシーが、第1インジケータの指示に基づいて実行され得る。例えば、ターゲット行は、読み出しアクセスが実行された後に、第1インジケータの指示に基づいて、閉じられ得るか、若しくは、開状態に維持され得る、又は、ターゲット行は、第1インジケータによって示される時間に基づいて閉じられ得る。この段階については、段階405の説明を参照されたい。本明細書では詳細について改めて説明しない。第1インジケータに基づく対応する行管理ポリシーの実行については、
図6における第1インジケータの指示に基づいて対応する行管理ポリシーをどのように実行するかについての説明が参照されることが理解され得る。本明細書では詳細について改めて説明しない。
【0103】
段階710:メモリコントローラがプリセット行管理ポリシーを実行する。本発明の本実施形態において、メモリコントローラによって書き込みアクセスを処理するランダム性が高いことを考慮して、固定的行管理ポリシーが使用され得る。例えば、書き込みアクセスを使用することによってアクセスされる行は、書き込みアクセスが実行された後に閉じられ得る。具体的には、この段階において、プリセット行管理ポリシーは、書き込みアクセスが受信されるときに調整されないことがあり得るが、ターゲット行をいつ閉じるかは、書き込みアクセスが完全に実行された後にプリセット行管理ポリシーに従って決定される。
【0104】
図7に示す実施形態において、メモリアクセスにおける読み出しアクセス及び書き込みアクセスは更に区別される。読み出しアクセスが完全に実行された後に使用される行管理ポリシーを示す第1インジケータのみが設定されるので、第1インジケータの値は、受信された読み出しアクセスのみに基づいて調整され得る。受信された書き込みアクセスについては、書き込みアクセスのランダム性は高いので、プリセット行管理ポリシーは使用され得、プリセット行管理ポリシーは、書き込みアクセスが受信されるときに調整されないことがあり得る。
図4Bに示す実施形態と比較して、
図7に示す実施形態において、読み出しアクセスが処理されるとき、ターゲットバンクの行管理ポリシーは、第1インジケータの指定された値に基づいて動的に調整され得、書き込みアクセスは、固定的行管理ポリシーに従って処理されることが理解され得る。固定的行管理ポリシーは書き込みアクセスに使用されるので、第2インジケータは、バンクについて指定される必要がないことがあり得、ハードウェア構造をより単純にでき、調整方式がより単純になる。
【0105】
当業者であれば、ターゲットバンクの異なるメモリアクセス間の切り替えはアクセスレイテンシを引き起こすので、本発明の本実施形態において提供される方法において、メモリコントローラは、同一のバンクにアクセスするための複数のメモリアクセスをスケジューリングキューにおいて継続的にスケジューリングし得ることを認識する。加えて、同一バンクにおける同一行の複数の連続的な読み出しアクセス及び書き込みアクセスの間の切り替えはレイテンシも引き起こすこと、並びに、読み出しアクセス及び書き込みアクセスの間の局所性の相違に起因して、行管理ポリシーについて異なる要件があることを考慮すると、以下の実施形態において、読み出しアクセス及び書き込みアクセスが更にバッチ単位でスケジューリングされる。
図8は、本発明の実施形態によるメモリアクセスのスケジューリングの概略図である。具体的には、
図8に示すように、メモリコントローラ106は、メモリアクセスをバッチ単位でスケジューリングし得る。例えば、読み出しアクセス1~読み出しアクセスNは、スケジューリングキューにおいて、アクセス802の第1バッチとして配置され得、読み出しアクセスN+1から読み出しアクセス2Nは、スケジューリングキューにおいて、アクセス804の第2バッチとして配置され得、書き込みアクセス1~書き込みアクセスNは、スケジューリングキューにいて、アクセス806の第Kバッチとして配置され得る。各バッチは、同一バンクにアクセスするための複数の読み出しアクセス、又は、同一バンクにアクセスするための複数の書き込みアクセスを含み得る。
【0106】
このスケジューリングモードにおいて、バンクの行管理ポリシーは、アクセスの異なるバッチが実行されるとき、更に調整され得、アクセスレイテンシを低減し、アクセスの異なるタイプ間の切り替えによって引き起こされるバス帯域幅の浪費を低減する。アクセスの異なるバッチ間の切り替え中に行管理ポリシーを調整するための方法については、
図9を参照されたい。具体的には、
図9は、本発明の実施形態による別のメモリ管理方法のフローチャートである。
図9に示されるように、方法は、以下の段階を含み得る。
【0107】
段階902:メモリコントローラがアクセスの第iバッチを実行する。iの初期値は1に設定され得、iは1より大きい又はそれに等しい自然数である。上で説明したように、メモリアクセス要求を受信後、メモリコントローラは、複数の受信されたメモリアクセス要求をバッファキューに配置し、その後、バッファキューにおけるメモリアクセス要求をスケジューリングキューにスケジューリングし、別個に実行する。本発明の本実施形態において、メモリコントローラは、メモリアクセス要求のタイプに基づいて、複数のメモリアクセス要求をバッチ単位でスケジューリングキューにスケジューリングし得る。例えば、メモリコントローラは、
図8に示されるバッチ単位のスケジューリングの方式で、複数のメモリアクセス要求をスケジューリングキューにスケジューリングし得る。この段階において、メモリコントローラによって実行されるアクセスの第iバッチは、
図8に示されるアクセスの任意のバッチであり得る。例えば、第iバッチのアクセスは、第1バッチのアクセス802、第2バッチのアクセス804又は第Kバッチのアクセス806を指し得る。
【0108】
段階904:メモリコントローラは、第iバッチのアクセスが完全に実行されたかどうかを決定する。具体的には、メモリコントローラは、実行されたアクセスが、第iバッチの最後のアクセスであるかどうかを決定して、第iバッチのアクセスが完全に実行されたかどうかを決定し得る。代替的に、メモリコントローラは、スケジューリングキューにおいて別のアクセスがあるかどうかに基づいて、第iバッチのアクセスが完全に実行されたかどうかを決定し得る。加えて、メモリコントローラは代替的に、カウント方式で、第iバッチのアクセスが完全に実行されたかどうかを決定し得る。メモリコントローラが、第iバッチのアクセスが完全に実行されたかどうかを決定するための方法は本明細書において限定されない。第iバッチのアクセスが完全に実行されていない場合、方法は段階902に戻り、第iバッチのアクセスの実行を継続する。第iバッチのアクセスが完全に実行されたとメモリコントローラが決定する場合、方法は段階904に進み、メモリコントローラは更に、第(i+1)バッチのアクセスを実行するかどうかを決定する。具体的には、メモリコントローラは、スケジューリングキュー又はバッファキューにおいて別のアクセスがあるかどうかに基づいて、第(i+1)バッチのアクセスを実行する必要があるかどうかを決定し得る。第(i+1)バッチのアクセスを実行する必要がある場合、方法は段階908に進む。第(i+1)バッチのアクセスが実行される必要がないと決定される場合、実行される必要がある他のメモリアクセスが無いことを示し、方法は段階914に進む。
【0109】
段階908:メモリコントローラが、第iバッチのアクセス及び第(i+1)バッチのアクセスが同一タイプのメモリアクセスであるかどうかを決定する。
図9に示す実施形態において、メモリコントローラは、メモリアクセスのタイプに基づいて、バッチ単位でメモリアクセスをスケジューリングし、実行するので、メモリアクセスの同一バッチは、同一タイプの複数のメモリアクセス要求であり得る。したがって、この段階において、メモリコントローラは、第iバッチのアクセス及び第(i+1)バッチのアクセスのタイプが同一であるかどうか、例えば、第iバッチのアクセス及び第(i+1)バッチのアクセスの両方が、読み出しアクセスであるか、又は書き込みアクセスであるかを決定し得る。第iバッチのアクセス及び第(i+1)バッチのアクセスが同一タイプのメモリアクセスである場合、方法は段階910に進む。第iバッチのアクセス及び第(i+1)バッチのアクセスが異なるタイプのメモリアクセスである場合、方法は段階914に進む。
【0110】
段階910:メモリコントローラは更に、第iバッチのアクセス及び第(i+1)バッチのアクセスの両方が読み出しアクセスであるかどうかを決定する。第iバッチのアクセス及び第(i+1)バッチのアクセスの両方が読み出しアクセスである場合、方法は段階912に進む。第iバッチのアクセス又は第(i+1)バッチのアクセスが書き込みアクセスである場合、方法は段階914に進む。段階912において、メモリコントローラは、現在開かれている行を開状態に維持する。本発明の本実施形態において、第iバッチのアクセス及び第(i+1)バッチのアクセスの両方は読み出しアクセスなので、メモリコントローラは読み出しアクセスの処理において良い局所性を有する、言い換えれば、複数のコマンドが同一行に継続的にアクセスする確率が高いことを考慮すると、読み出しアクセスの前のバッチを実行するプロセスにおいて開かれた行が、切り替え中に開状態のままである場合、行は開状態に維持され得る。例えば、第1バッチのアクセス802と第2バッチのアクセス804との間の切り替え中に、第1バッチのアクセス802を実行するプロセスにおいて開かれた行が開状態のままである場合、行は開状態に維持され得る。次に、方法は段階916に進む。
【0111】
段階908において、第iバッチのアクセス及び第(i+1)バッチのアクセスが、異なるタイプのメモリアクセスであると決定される場合、例えば、第iバッチのアクセスが書き込みアクセスであり、又は、第(i+1)バッチのアクセスは書き込みアクセスである。この場合、メモリコントローラは、読み出しアクセスと書き込みアクセスとの間で切り替える必要がある。本発明の本実施形態において、読み出しアクセスと書き込みアクセスとの間の局所性の相違を考慮すると、書き込みアクセスのランダム性がより高くなる。レイテンシを低減するために、切り替え中に、方法は段階914に進み、第iバッチのアクセスを実行するプロセスにおいて開かれたすべての行を閉じ得る。例えば、
図8に示されるように、第2バッチのアクセス804が完全に実行された後に、次のバッチのアクセスを実行するために切り替えが実行される。第2バッチのアクセス804の次のバッチのアクセスが書き込みアクセスである場合(例えば、次のバッチのアクセスが第Kバッチのアクセス806であるとき)、第2バッチのアクセス804を実行するプロセスにおいて開かれたすべての行は、第2バッチのアクセス804が完全に実行された後に、閉じられ得る。その後、方法は段階916に進み、次のバッチのアクセスを実行する。
【0112】
段階910において、第iバッチのアクセス及び第(i+1)バッチのアクセスの両方が書き込みアクセスであると決定される場合、書き込みアクセスは高いランダム性及び悪い局所性を有するので、この場合、方法は代替的に、段階914に進み、第iバッチのアクセスを実行するプロセスにおいて開かれたすべての行を閉じ得る。次に、方法は段階916に進み、第(i+1)バッチのアクセスを実行することに切り替える。段階916:i=i+1とする。方法は段階902に戻り、次のバッチのメモリアクセスを実行する。このプロセスは、実行される必要がある複数のバッチのアクセスが完全に実行されるまで、繰り返される。iの値は、実行予定のアクセスのバッチの総量より大きくなることができないことが理解され得る。
【0113】
図9において提供されるメモリ管理方法によれば、スケジューリングがバッチ単位で実行されるので、読み出しアクセスと書き込みアクセスとの間の切り替え回数を更に低減できる。加えて、異なるバッチのアクセス間の切り替え中に異なる行管理ポリシーを使用できるので、異なるバッチ間の切り替え中に引き起こされ得る行競合を更に低減でき、メモリ行を不適切に閉じることによって引き起こされるレイテンシを低減でき、バス帯域幅の浪費を低減できる。
【0114】
実際の適用において、独立のポリシーカウンタは、いくつかの設計において、各バンクについて必ずしも指定される必要がないことに留意されたい。代替的に、複数のアドレスセグメントは、分割を通じて取得され得、ポリシーカウンタは各アドレスセグメントについて指定される。代替的に、複数のバンクが、同一のグループのポリシーカウンタを共有し得る。各アドレスセグメントが、複数のバンクのアドレスを含み得るか、又は、1のバンクにおけるアドレスの一部を含み得る。複数のバンクがポリシーカウンタのグループを共有する設計において、行管理ポリシーが調整されるとき、メモリアクセスを使用することによってアクセスされるバンクに対応するポリシーカウンタに対して動作を実行するために前述の実施形態が参照され得る。これらの方式によれば、実際の適用において、同一の行管理ポリシーが複数のバンクに使用され得、又は、少なくとも1つのアドレスセグメントに対応する同一の行管理ポリシーが複数のターゲット行アクセスに使用され得る。
【0115】
本発明の本実施形態において提供されるメモリ管理方法によれば、メモリアクセスにおける読み出しアクセスと書き込みアクセスとの間の局所性の相違が、メモリ行管理ポリシーを実行するプロセスにおいて考慮され、その結果、メモリ行管理は、メモリアクセスの特徴により良く適応し、メモリアクセスレイテンシが低減され、帯域幅の浪費が低減され、メモリアクセス効率が改善される。
【0116】
加えて、データがダイレクトメモリアクセス(Direct Memory Access, DMA)方式でメモリに書き込まれる場合が、実際の適用において存在する。本発明の実施形態は更に、DMA読み出し/書き込みのシナリオにおいて、メモリ行をどのように管理するかを提供する。DMA読み出し/書き込みは通常、大きいデータブロックの読み出し/書き込みであり、DMAは通常、一方向に一度実行される。データの整合性を確実にするために、DMAを使用することによってアクセスされているデータブロックは通常、別のソースによってアクセスされない。DMAの読み出し及び書き込み動作は、良い局所性を有し、別の要求とは無関係である。したがって、DMAシナリオにおけるメモリアクセスポリシーは、単独で考慮され得る。例えば、実際の適用において、DMAメモリアクセス及び非DMAメモリアクセスは、バッチ単位でスケジューリングされ得る。加えて、DMAメモリアクセスは更に、バッチ単位でスケジューリングするために、DMA読み出しアクセス及びDMA書き込みアクセスに分類され得る。
【0117】
非DMAアクセス間の切り替えについては、前述の実施形態を参照されたい。非DMAアクセスとDMAアクセスとの間の切り替えについては、メモリアクセスの現在のバッチが完全に実行された後に、メモリアクセスのバッチに関連するバンクにおける行は、直接閉じられ得る。DMAアクセス間の切り替えについては、同一のDMA動作に属するメモリアクセスの異なるバッチ間で切り替えが実行される場合、DMAアクセスの2つの隣接バッチのタイプが同一であるかどうかに関わらず、現在完了したDMAアクセスに関連するバンクにおける行は、切り替え中に開状態に維持され得る。DMAアクセスの2つの隣接バッチが、同一のDMA動作によって引き起こされたDMAアクセスでない場合、DMAアクセスの2つの隣接バッチのタイプが同一であるかどうか、又は、関連するDMAアクセスが読み出しアクセスであるか、若しくは書き込みアクセスであるかに関わらず、現在完了したDMAアクセスに関連するバンクにおける行は、切り替え中に閉じられ得る。
【0118】
本発明の本実施形態において提供されるメモリ管理方法によれば、DMAアクセスの良い局所性の特徴、及び、DMAアクセスと別のメモリアクセスとの間の非相関が考慮され、DMAアクセス及び非DMAメモリアクセスは区別され、バッチ単位でスケジューリングされる。これにより、DMAアクセスと共通メモリアクセスとの間の相互干渉を回避し、DMAアクセスの性能要件を確実にし、メモリアクセスレイテンシを低減する。
【0119】
本発明の実施形態は、メモリ管理装置を更に提供する。具体的には、本発明の本実施形態において提供されるメモリ管理装置は、
図1に示されるコンピュータシステムにおけるコンポーネントの少なくとも一部を含み得る。例えば、少なくとも1つのプロセッサ102及びメモリコントローラ106が含まれ得る。
【0120】
加えて、本発明の実施形態は更に、メモリコントローラを提供する。メモリコントローラは、通信インタフェース、及び、前述の実施形態におけるメモリ管理方法を実行するように構成されている論理回路を含む。通信インタフェースは、コンピュータシステムのプロセッサによって送信されたメモリアクセスを受信するように構成されている。本発明の本実施形態において提供されるメモリコントローラは、
図1におけるメモリコントローラ106として示され得る。
【0121】
図10は、本発明の実施形態による別のメモリ管理装置の概略図である。
図10に示すように、メモリ管理装置は、受信モジュール1002、決定モジュール1004、及び実行モジュール1006を含み得る。受信モジュール1002は、メモリアクセスを受信するように構成されており、ここで、メモリアクセスは、ターゲットメモリバンクにおけるターゲット行にアクセスするために使用され得る。決定モジュール1004は、メモリアクセスのアクセスタイプを決定するように構成されている。実行モジュール1006は、アクセスタイプに対応する行管理ポリシーを実行するように構成されている。
【0122】
具体的には、可能な場合において、メモリ管理装置は更に調整モジュール1005を含み得る。調整モジュール1005は、メモリアクセスのアクセスタイプ及びターゲット行の行ヒットステータスに基づいて行管理ポリシーを調整するように構成されている。行ヒットステータスは、以下の状態、すなわち、行ヒット、行競合及び行アイドルのうちの少なくとも1つを含む。
【0123】
可能な場合において、メモリ管理装置は更に第1インジケータ1008を含み得る。メモリアクセスが読み出しアクセスであるとき、調整モジュール1005は、ターゲット行の行ヒットステータスに基づいてターゲットメモリバンクの第1インジケータ1008を調整するように構成され、ここで、第1インジケータは、読み出しアクセスが実行された後にターゲット行を閉じるかどうかを示す。言い換えれば、第1インジケータは、読み出しアクセスが実行された後に使用される、ターゲットメモリバンクの行管理ポリシーを示す。したがって、実行モジュール1006は、第1インジケータ1008に基づいてターゲットメモリバンクの行管理ポリシーを実行し得る。第1インジケータ1008を調整することは、読み出しアクセスが実行された後に使用される行管理ポリシーを調整することとして理解され得る。
【0124】
可能な場合において、メモリ管理装置は更に第2インジケータ1010を含み得る。メモリアクセスが書き込みアクセスであるとき、調整モジュール1005は、ターゲット行の行ヒットステータスに基づいてターゲットメモリバンクの第2インジケータ1010を調整し得、ここで、第2インジケータは、書き込みアクセスが実行された後にターゲット行を閉じるかどうかを示す。実行モジュール1006は、第2インジケータ1010の指示に基づいて、ターゲットメモリバンクの行管理ポリシーを実行し得る。第2インジケータ1010を調整することは、書き込みアクセスが実行された後に使用される行管理ポリシーを調整することとして理解され得る。
【0125】
別の可能な場合において、第1インジケータ1008のみが設定され得、第2インジケータ1010は設定されない。実行モジュール1006は、受信された書き込みアクセスについて、プリセット行管理ポリシーを直接実行し得る。この場合、書き込みアクセスに対応するプリセット行管理ポリシーは調整されないことがあり得る。別の可能な場合において、第2インジケータ1010は代替的に設定され得るが、第2インジケータ1010は、書き込みアクセスに対応するプリセット行管理ポリシーを示し、プリセット行管理ポリシーは、受信された書き込みアクセスの行ヒットステータスに基づいて調整される必要がない。
【0126】
可能な場合において、調整モジュール1005が、ターゲット行の行ヒットステータスに基づいて第1インジケータ1008又は第2インジケータ1010を調整するとき、メモリアクセスが行ヒットを引き起こす場合、調整モジュール1005は、第1インジケータ又は第2インジケータを第1指示に調整し、ここで、第1指示は、ターゲット行が閉じられていないこと、又は、ターゲット行が開状態に維持されていることを示す。メモリアクセスが行競合を引き起こす場合、調整モジュール1005は、第1インジケータ又は第2インジケータを第2指示に調整し、ここで、第2指示は、ターゲット行が閉じられていることを示す。
【0127】
別の可能な場合において、調整モジュール1005が第1インジケータ1008又は第2インジケータ1010をターゲット行の行ヒットステータスに基づいて調整するとき、メモリアクセスが行アイドルを引き起こす場合、調整モジュール1005は、メモリアクセスが行ヒットを引き起こし得るかどうかを決定する。メモリアクセスが行ヒットを引き起こし得る場合、調整モジュール1005は、第1インジケータ又は第2インジケータを第1指示に調整し、ここで、第1指示は、ターゲット行が閉じられていない、又は、ターゲット行が開状態に維持されていることを示し、行ヒットが引き起こされ得ることは、ターゲットメモリバンクにおける最後に開かれた行が閉じられていない場合に行ヒットが引き起こされることを意味する。メモリアクセスが行競合を引き起こし得る場合、調整モジュール1005は、第1インジケータ又は第2インジケータを第2指示に調整し、ここで、第2指示は、ターゲット行が閉じられていることを示し、行競合が引き起こされ得ることは、ターゲットメモリバンクにおける最後に開かれた行が閉じられていない場合に行競合が引き起こされることを意味する。
【0128】
別の場合において、調整モジュール1005が、ターゲット行の行ヒットステータスに基づいて、第1インジケータ1008又は第2インジケータ1010を調整するとき、調整モジュール1005は、ターゲット行の行ヒットステータス、及び、メモリアクセスの前のメモリアクセスのアクセスタイプに基づいて、第1インジケータ又は第2インジケータを調整し得る。
【0129】
調整モジュール1005が第1インジケータ1008又は第2インジケータ1010をどのように調整するかの詳細については、前述の方法の実施形態における説明を参照されたい。本明細書では詳細について改めて説明しない。
【0130】
別の場合において、メモリアクセスがメモリアクセスの第1バッチに属する場合、実行モジュール1006は更に、第1バッチのメモリアクセスが完全に実行され、かつ、第2バッチのメモリアクセスが実行される予定であると決定し、第1バッチのメモリアクセスのアクセスタイプが、第2バッチのメモリアクセスのアクセスタイプと異なる場合、ターゲット行を閉じ、第1バッチのメモリアクセス及び第2バッチのメモリアクセスの両方が読み出しアクセスである場合、ターゲット行を開状態に維持し、又は、第1バッチのメモリアクセス及び第2バッチのメモリアクセスの両方が書き込みアクセスである場合、ターゲット行を閉じるように構成されている。
【0131】
本発明の本実施形態において提供されるメモリ管理装置は、
図1に示すメモリコントローラであり得るか、又は、
図1に示すメモリコントローラに統合され得ることが理解され得る。メモリ管理装置における各機能モジュールの実装については、前述の実施形態における対応する説明を参照されたい。本明細書では詳細について改めて説明しない。
【0132】
本発明の本実施形態において提供されるメモリ管理装置によれば、DRAMにおけるメモリ行の行管理ポリシーが実行されるとき、異なるアクセスタイプの局所性間の相違が十分に考慮され、対応する行管理ポリシーがアクセスタイプに基づいて実行され、対応する行管理ポリシーは、メモリアクセスの行ヒットステータスに基づいて調整され得、その結果、メモリアクセスの特徴をメモリ行管理において十分考慮でき、管理をより正確にでき、不適切な行管理ポリシーによって引き起こされるメモリアクセスレイテンシを低減でき、メモリアクセス効率を改善できる。
【0133】
本発明の実施形態は更に、メモリ管理方法を実行するためのコンピュータプログラム製品を提供する。コンピュータプログラム製品は、プログラムコードを格納するコンピュータ可読記憶媒体を含む。プログラムコードに含まれる命令は、前述の方法の実施形態のいずれか1つにおいて説明される方法プロセスを実行するために使用される。当業者であれば、前述の記憶媒体は、USBフラッシュドライブ、リムーバブルハードディスク、磁気ディスク、光ディスク、ランダムアクセスメモリ(random-access memory, RAM)、ソリッドステートドライブ(solid state disk, SSD)、又は不揮発性メモリ(non-volatile memory)など、プログラムコードを格納できる任意の非一時的(non-transitory)機械可読媒体を含み得ることを理解し得る。
【0134】
本願において提供される実施形態は、単なる例であることに留意されたい。当業者は、簡便かつ簡潔な説明のために、前述の実施形態において、実施形態は異なる態様を強調し、一実施形態において詳細に説明しない部分については、別の実施形態における関連する説明が参照されることを明確に知り得る。本発明の実施形態、特許請求の範囲及び添付図面において開示される特徴は、独立に存在し得るか、又は、組み合わせて存在し得る。本発明の実施形態においてハードウェアの形態で説明される特徴は、ソフトウェアによって実行され得、その逆も同様である。ここでは、これについて限定しない。
他の考え得る項目
(項目1)
メモリアクセスを取得する段階;
前記メモリアクセスのアクセスタイプを決定する段階、ここで、前記メモリアクセスの前記アクセスタイプは、読み出しアクセス又は書き込みアクセスを含む;及び
前記メモリアクセスの前記アクセスタイプに対応する行管理ポリシーを実行する段階
を備えるメモリ管理方法。
(項目2)
前記メモリアクセスは、メモリにおけるターゲットメモリバンクにおけるターゲット行にアクセスするために使用され、前記メモリアクセスの前記アクセスタイプに対応する行管理ポリシーを実行する前記段階は、
前記メモリアクセスの前記アクセスタイプに対応する、前記ターゲットメモリバンクの行管理ポリシーを実行する段階、ここで、前記メモリは、1又は複数のメモリバンクを含み、前記ターゲットメモリバンクは前記1又は複数のメモリバンクのいずれか1つである、
を含む、項目1に記載の方法。
(項目3)
前記メモリアクセスの前記アクセスタイプ及び前記ターゲット行の行ヒットステータスに基づいて、前記行管理ポリシーを調整する段階を更に備える、項目1又は2に記載の方法。
(項目4)
前記メモリアクセスの前記アクセスタイプ、及び、前記ターゲット行の行ヒットステータスに基づいて、前記ターゲットメモリバンクの前記行管理ポリシーを調整する前記段階は、
前記メモリアクセスが読み出しアクセスであるとき、前記ターゲット行の前記行ヒットステータスに基づいて、前記ターゲットメモリバンクの第1インジケータを調整する段階、ここで、前記第1インジケータは、前記読み出しアクセスが実行された後に前記ターゲット行を閉じるかどうかを示す、
を含む、項目3に記載の方法。
(項目5)
前記メモリアクセスの前記アクセスタイプ、及び、前記ターゲット行の行ヒットステータスに基づいて、前記ターゲットメモリバンクの前記行管理ポリシーを調整する前記段階は更に、
前記メモリアクセスが書き込みアクセスであるとき、前記ターゲット行の前記行ヒットステータスに基づいて前記ターゲットメモリバンクの第2インジケータを調整する段階、ここで、前記第2インジケータは、前記書き込みアクセスが実行された後に前記ターゲット行を閉じるかどうかを示す、
を含む、項目4に記載の方法。
(項目6)
前記メモリアクセスの前記アクセスタイプ、及び、前記ターゲット行の行ヒットステータスに基づいて、前記ターゲットメモリバンクの前記行管理ポリシーを調整する前記段階は更に、
前記メモリアクセスの前記アクセスタイプが書き込みアクセスであるとき、前記ターゲットメモリバンクの前記行管理ポリシーは、前記書き込みアクセスに対応するプリセット行管理ポリシーであると決定する段階、ここで、前記プリセット行管理ポリシーは、前記書き込みアクセスが実行された後に前記ターゲット行を閉じるかどうかを示す、
を含む、項目4に記載の方法。
(項目7)
前記行ヒットステータスは、行ヒット又は行競合を含み、前記ターゲット行の前記行ヒットステータスに基づいて前記ターゲットメモリバンクの第1インジケータ又は第2インジケータを調整する前記段階は、
前記メモリアクセスが行ヒットを引き起こす場合、前記第1インジケータ又は前記第2インジケータを第1指示に調整する段階、ここで、前記第1指示は、前記ターゲット行が閉じられていない、又は、前記ターゲット行が開状態に維持されていることを示す;又は、
前記メモリアクセスが行競合を引き起こす場合、前記第1インジケータ又は前記第2インジケータを第2指示に調整する段階、ここで、前記第2指示は、前記ターゲット行が閉じられていることを示す、
を含む、項目4から6のいずれか一項に記載の方法。
(項目8)
前記行ヒットステータスは行アイドルを含み、前記ターゲット行の前記行ヒットステータスに基づいて第1インジケータ又は第2インジケータを調整する前記段階は、
前記メモリアクセスが行アイドルを引き起こす場合、前記メモリアクセスが行ヒットを引き起こし得るかどうかを決定する段階;及び
前記メモリアクセスが行ヒットを引き起こし得る場合、前記第1インジケータ又は前記第2インジケータを前記第1指示に調整する段階、ここで、前記第1指示は、前記ターゲット行が閉じられていない、又は、前記ターゲット行が前記開状態に維持されることを示し、行ヒットが引き起こされ得ることは、前記ターゲットメモリバンクにおける最後に開かれた行が閉じられていない場合に前記行ヒットが引き起こされることを意味する;又は、
前記メモリアクセスが行競合を引き起こし得る場合、前記第1インジケータ又は前記第2インジケータを前記第2指示に調整する段階、ここで、前記第2指示は、前記ターゲット行が閉じられていることを示し、行競合が引き起こされ得ることは、前記ターゲットメモリバンクにおける最後に開かれた行が閉じられていない場合に行競合が引き起こされることを意味する、
を含む、項目4から7のいずれか一項に記載の方法。
(項目9)
前記方法は、前記メモリアクセスの前のアクセスのアクセスタイプを決定する段階を更に備え;
前記ターゲット行の前記行ヒットステータスに基づいて、前記ターゲットメモリバンクの第1インジケータ又は第2インジケータを調整する前記段階は、
前記ターゲット行の前記行ヒットステータス、及び、前記メモリアクセスの前記前のアクセスの前記アクセスタイプに基づいて、前記ターゲットメモリバンクの前記第1インジケータ又は前記第2インジケータを調整する段階
を含む、項目4から8のいずれか一項に記載の方法。
(項目10)
前記第1インジケータの初期値は、前記第2インジケータの初期値より大きい、項目4から9のいずれか一項に記載の方法。
(項目11)
前記第1インジケータが調整されるとき、前記第1指示への調整の第1調整幅は、前記第2指示への調整の第2調整幅より大きく;
前記第2インジケータが調整されるとき、前記第1指示への調整の第3調整幅は、前記第2指示への調整の第4調整幅より小さい、
項目4から10のいずれか一項に記載の方法。
(項目12)
前記メモリアクセスは第1バッチのメモリアクセスに属し、前記方法は更に、
前記第1バッチのメモリアクセスが完全に実行され、かつ、第2バッチのメモリアクセスが実行される予定であると決定する段階;及び
前記第1バッチのメモリアクセスのアクセスタイプが前記第2バッチのメモリアクセスのアクセスタイプと異なる場合、前記ターゲット行を閉じる段階;
前記第1バッチのメモリアクセス及び前記第2バッチのメモリアクセスの両方が読み出しアクセスである場合、前記ターゲット行を前記開状態に維持する段階;又は
前記第1バッチのメモリアクセス及び前記第2バッチのメモリアクセスの両方が書き込みアクセスである場合、前記ターゲット行を閉じる段階
を備える、項目1から11のいずれか一項に記載の方法。
(項目13)
メモリアクセスを送信するように構成されているプロセッサ;並びに
前記メモリアクセスを取得し;
前記メモリアクセスのアクセスタイプを決定し、ここで、前記メモリアクセスの前記アクセスタイプは、読み出しアクセス又は書き込みアクセスを含み;及び
前記メモリアクセスの前記アクセスタイプに対応する行管理ポリシーを実行する
ように構成されているメモリコントローラ
を備えるメモリ管理装置。
(項目14)
前記メモリアクセスは、メモリにおけるターゲットメモリバンクにおけるターゲット行にアクセスするために使用され、前記メモリコントローラは、前記メモリアクセスの前記アクセスタイプに対応する、前記ターゲットメモリバンクの行管理ポリシーを実行するように構成され、前記メモリは1又は複数のメモリバンクを含み、前記ターゲットメモリバンクは、前記1又は複数のメモリバンクのいずれか1つである、項目13に記載の装置。
(項目15)
前記メモリコントローラは更に、前記メモリアクセスの前記アクセスタイプ、及び、前記ターゲット行の行ヒットステータスに基づいて、前記行管理ポリシーを調整するように構成されている、項目13又は14に記載の装置。
(項目16)
前記行管理ポリシーを調整する前記段階において、前記メモリコントローラは、前記メモリアクセスが読み出しアクセスであるとき、前記ターゲット行の前記行ヒットステータスに基づいて前記ターゲットメモリバンクの第1インジケータを調整するように構成されており、ここで、前記第1インジケータは、前記読み出しアクセスが実行された後に前記ターゲット行を閉じるかどうかを示す、項目15に記載の装置。
(項目17)
前記行管理ポリシーを調整する前記段階において、前記メモリコントローラは更に、前記メモリアクセスが書き込みアクセスであるとき、前記ターゲット行の前記行ヒットステータスに基づいて、前記ターゲットメモリバンクの第2インジケータを調整するように構成され、ここで、前記第2インジケータは、前記書き込みアクセスが実行された後に前記ターゲット行を閉じるかどうかを示す、項目16に記載の装置。
(項目18)
前記行管理ポリシーを決定する前記段階において、前記メモリコントローラは更に、前記メモリアクセスの前記アクセスタイプが書き込みアクセスであるとき、前記ターゲットメモリバンクの前記行管理ポリシーが、前記書き込みアクセスに対応するプリセット行管理ポリシーであると決定するように構成されており、ここで、前記プリセット行管理ポリシーは、前記書き込みアクセスが実行された後にターゲット行を閉じるかどうかを示す、項目16に記載の装置。
(項目19)
前記行ヒットステータスは、行ヒット又は行競合を含み、前記ターゲットメモリバンクの第1インジケータ又は第2インジケータを調整する前記段階において、前記メモリコントローラは、
前記メモリアクセスが行ヒットを引き起こす場合、前記第1インジケータ又は前記第2インジケータを第1指示に調整する、ここで、前記第1指示は、前記ターゲット行が閉じられていない、又は、前記ターゲット行が開状態に維持されていることを示す;又は、
前記メモリアクセスが行競合を引き起こす場合、前記第1インジケータ又は前記第2インジケータを第2指示に調整する、ここで、前記第2指示は、前記ターゲット行が閉じられていることを示す、
ように構成されている、項目16から18のいずれか一項に記載の装置。
(項目20)
前記行ヒットステータスは行アイドルを含み、前記ターゲットメモリバンクの第1インジケータ又は第2インジケータを調整する前記段階において、前記メモリコントローラは、
前記メモリアクセスが行アイドルを引き起こす場合、前記メモリアクセスが行ヒットを引き起こし得るかどうかを決定する;及び、
前記メモリアクセスが行ヒットを引き起こし得る場合、前記第1インジケータ又は前記第2インジケータを前記第1指示に調整する、ここで、前記第1指示は、前記ターゲット行が閉じられていない、若しくは、前記ターゲット行が前記開状態に維持されていることを示し、行ヒットが引き起こされ得ることは、前記ターゲットメモリバンクにおける最後に開かれた行が閉じられていない場合、行ヒットが引き起こされることを意味する、又は、
前記メモリアクセスが行競合を引き起こし得る場合、前記第1インジケータ又は前記第2インジケータを前記第2指示に調整する、ここで、前記第2指示は、前記ターゲット行が閉じられていることを示し、行競合が引き起こされ得ることは、前記ターゲットメモリバンクにおける最後に開かれた行が閉じられていない場合、行競合が引き起こされることを意味する
ように構成されている、項目16から19のいずれか一項に記載の装置。
(項目21)
前記メモリコントローラは更に、前記メモリアクセスの前のアクセスのアクセスタイプを決定するように構成されており、
前記ターゲット行の前記行ヒットステータスに基づいて前記ターゲットメモリバンクの第1インジケータ又は第2インジケータを調整する前記段階において、前記メモリコントローラは、
前記ターゲット行の前記行ヒットステータス、及び、前記メモリアクセスの前記前のアクセスの前記アクセスタイプに基づいて、前記ターゲットメモリバンクの前記第1インジケータ又は前記第2インジケータを調整するように構成されている、
項目16から20のいずれか一項に記載の装置。
(項目22)
前記第1インジケータの初期値は、前記第2インジケータの初期値より大きい、項目16から21のいずれか一項に記載の装置。
(項目23)
前記第1インジケータが調整されるとき、前記第1指示への調整の第1調整幅は、前記第2指示への調整の第2調整幅より大きく;
前記第2インジケータが調整されるとき、前記第1指示への調整の第3調整幅は、前記第2指示への調整の第4調整幅より小さい、
項目16から22のいずれか一項に記載の装置。
(項目24)
前記メモリアクセスは第1バッチのメモリアクセスに属し、前記メモリコントローラは更に、
前記第1バッチのメモリアクセスが完全に実行され、かつ、第2バッチのメモリアクセスが実行される予定であると決定する;及び
前記第1バッチのメモリアクセスのアクセスタイプが前記第2バッチのメモリアクセスのアクセスタイプと異なる場合、前記ターゲット行を閉じる;
前記第1バッチのメモリアクセス及び前記第2バッチのメモリアクセスの両方が読み出しアクセスである場合、前記ターゲット行を前記開状態に維持する;又は
前記第1バッチのメモリアクセス及び前記第2バッチのメモリアクセスの両方が書き込みアクセスである場合、前記ターゲット行を閉じる
ように構成されている、項目13から23のいずれか一項に記載の装置。
(項目25)
コンピュータシステムのプロセッサによって送信されたメモリアクセスを受信するように構成されている通信インタフェース;及び
前記メモリアクセスに基づいて、項目1から12のいずれか一項に記載のメモリ管理方法を実行するように構成されている論理回路
を備えるメモリコントローラ。
(項目26)
メモリ及び項目13から24のいずれか一項に記載のメモリ管理装置を備えるコンピュータシステム。
(項目27)
プログラムコードを格納するように構成されているコンピュータ可読記憶媒体であって、前記プログラムコードに含まれる命令は、コンピュータによって実行され、項目1から12のいずれか一項に記載のメモリ管理方法を実装する、コンピュータ記憶媒体。
(項目28)
プログラムコードを含むコンピュータプログラム製品であって、前記プログラムコードに含まれる命令は、コンピュータによって実行され、項目1から12のいずれか一項に記載のメモリ管理方法を実装する、コンピュータプログラム製品。
【国際調査報告】