(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6463141
(24)【登録日】2019年1月11日
(45)【発行日】2019年1月30日
(54)【発明の名称】メモリローに対するアクティベーションをトラッキングする方法及びそのためのメモリコントローラ
(51)【国際特許分類】
G11C 11/406 20060101AFI20190121BHJP
G06F 12/00 20060101ALI20190121BHJP
【FI】
G11C11/406 140
G11C11/406 300
G06F12/00 550Z
G06F12/00 564A
【請求項の数】20
【全頁数】17
(21)【出願番号】特願2015-5870(P2015-5870)
(22)【出願日】2015年1月15日
(65)【公開番号】特開2015-133119(P2015-133119A)
(43)【公開日】2015年7月23日
【審査請求日】2017年12月20日
(31)【優先権主張番号】61/927,636
(32)【優先日】2014年1月15日
(33)【優先権主張国】US
(31)【優先権主張番号】14/560,674
(32)【優先日】2014年12月4日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
(74)【代理人】
【識別番号】110000051
【氏名又は名称】特許業務法人共生国際特許事務所
(72)【発明者】
【氏名】リン, ジアン
(72)【発明者】
【氏名】ギャレット, マシュー
【審査官】
篠塚 隆
(56)【参考文献】
【文献】
米国特許出願公開第2014/0006704(US,A1)
【文献】
特開2013−239228(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 11/406
G06F 12/16
G06F 12/00
G11C 29/00
G06F 11/30
(57)【特許請求の範囲】
【請求項1】
ページテーブルを有するメモリを制御するためのメモリコントローラであって、
前記ページテーブルは、第1エントリを含む第1テーブル及び第2エントリを含む第2テーブルを用いて格納するように構成され、
前記第1エントリは、
第1タイム区間の間に活性化されたメモリの第1メモリローを識別する第1識別子と、 前記第1タイム区間の間に残りの第1タイムを示すタイムアウトカウンターと、を含み、
前記第2エントリは、
少なくとも1つの第2タイム区間の間に活性化されたメモリの第2メモリローを識別する第2識別子と、
前記第2メモリローのアクティベーションの数量をカウントするアクティベーションカウンターと、
前記少なくとも1つの第2タイム区間の間に残りの第2タイムを示す第2タイムアウトカウンターと、を含むことを特徴とするメモリコントローラ。
【請求項2】
前記第2メモリローに隣接して位置するメモリの隣接メモリロー内に格納されたデータの劣化無しに前記第2メモリローの最大許容アクティベーション数が許容されるタイム区間である最大アクティベーションウインドーの間に、前記第2メモリローのアクティベーションの数量は、前記第2メモリローの最大許容アクティベーション数に寄与することを特徴とする請求項1に記載のメモリコントローラ。
【請求項3】
前記第2メモリローに隣接して位置するメモリの隣接メモリローのリフレッシュ無しに前記第2メモリローの最大許容アクティベーション数が許容されるタイム区間である最大アクティベーションウインドーの間に、前記第2メモリローのアクティベーションの数量は、前記第2メモリローの最大許容アクティベーション数に寄与することを特徴とする請求項1に記載のメモリコントローラ。
【請求項4】
前記少なくとも1つの第2タイム区間は、前記最大アクティベーションウインドー内で前記第2メモリローの最大許容アクティベーション数の各々の間の平均時間であることを特徴とする請求項3に記載のメモリコントローラ。
【請求項5】
前記メモリコントローラは、
前記メモリのメモリローをアクティベーションするためのリクエストを受信し、
前記メモリローが前記第2エントリの第2識別子によって識別された第2メモリローにマッチするか否かを決定し、
前記メモリローが前記第2エントリの第2識別子によって識別された第2メモリローにマッチすることを決定した結果に応答して、前記アクティベーションカウンターが前記最大許容アクティベーション数を示すか否かを決定し、
前記アクティベーションカウンターが前記最大許容アクティベーション数を示すことを決定した結果に応答して、前記メモリのリフレッシュ動作及び前記リクエストのストーリング動作(stalling operration)の中の1つを実行することを特徴とする請求項4に記載のメモリコントローラ。
【請求項6】
前記メモリコントローラは、前記アクティベーションカウンターが前記最大許容アクティベーション数を示さないことを決定した結果に応答して、前記アクティベーションカウンターを増加させ、前記第2メモリローをアクティベーションすることを特徴とする請求項5に記載のメモリコントローラ。
【請求項7】
前記メモリコントローラは、
前記メモリのメモリローをアクティベーションするためのリクエストを受信し、
前記メモリローが前記第1エントリの第1識別子によって識別された第1メモリローにマッチすることを決定し、
前記第1エントリの割当てを取り消し、
前記第2テーブル内で前記メモリローの対応エントリを割当て、
前記メモリローをアクティベーションすることを特徴とする請求項4に記載のメモリコントローラ。
【請求項8】
前記メモリコントローラは、
前記メモリのメモリローをアクティベーションするためのリクエストを受信し、
前記メモリローが前記第1エントリの第1識別子によって識別された第1メモリローにマッチしないことを決定し、
前記第1テーブル内で前記メモリローの対応エントリを割当てることを特徴とする請求項4に記載のメモリコントローラ。
【請求項9】
前記メモリコントローラは、
前記メモリのメモリローをアクティベーションするためのリクエストを受信し、
前記メモリローが前記第1エントリの第1識別子によって識別された第1メモリローにマッチすることを決定し、
前記第2テーブルが前記第1メモリローに対応する追加エントリを割当てることが不可能であることを決定し、
前記第2テーブルが前記第1メモリローに対応する追加エントリを割当てることが不可能であるとの決定に応答して、前記メモリのリフレッシュ動作及び前記リクエストのストーリング動作(stalling operration)の中の1つを実行することを特徴とする請求項4に記載のメモリコントローラ。
【請求項10】
前記メモリコントローラは、
前記少なくとも1つの第2タイム区間が前記第2タイムアウトカウンターから経過したか否かを決定し、
前記少なくとも1つの第2タイム区間が前記第2タイムアウトカウンターから経過したことを決定した結果に応答して、前記アクティベーションカウンターを減少させることを特徴とする請求項4に記載のメモリコントローラ。
【請求項11】
メモリコントローラによりメモリのメモリローに対するアクティベーションをトラッキングする方法であって、
メモリ内にページテーブルを格納する段階と、
前記ページテーブルを用いて前記メモリのメモリローに対するアクティベーションをトラッキングする段階と、を有し、
前記ページテーブルは、第1エントリを含む第1テーブル及び第2エントリを含む第2テーブルを用いて格納するように構成され、
前記第1エントリは、
第1タイム区間の間に活性化されたメモリの第1メモリローを識別する第1識別子と、
前記第1タイム区間の間に残りの第1タイムを示すタイムアウトカウンターと、を含み、
前記第2エントリは、
少なくとも1つの第2タイム区間の間に活性化されたメモリの第2メモリローを識別する第2識別子と、
前記第2メモリローのアクティベーションの数量をカウントするアクティベーションカウンターと、
前記少なくとも1つの第2タイム区間の間に残りの第2タイムを示す第2タイムアウトカウンターと、を含むことを特徴とするトラッキング方法。
【請求項12】
前記第2メモリローに隣接して位置するメモリの隣接メモリロー内に格納されたデータの劣化無しに前記第2メモリローの最大許容アクティベーション数が許容されるタイム区間である最大アクティベーションウインドーの間に、前記第2メモリローのアクティベーションの数量は、前記第2メモリローの最大許容アクティベーション数に寄与することを特徴とする請求項11に記載のトラッキング方法。
【請求項13】
前記第2メモリローに隣接して位置するメモリの隣接メモリローのリフレッシュ無しに前記第2メモリローの最大許容アクティベーション数が許容されるタイム区間である最大アクティベーションウインドーの間に、前記第2メモリローのアクティベーションの数量は、前記第2メモリローの最大許容アクティベーション数に寄与することを特徴とする請求項11に記載のトラッキング方法。
【請求項14】
前記少なくとも1つの第2タイム区間は、前記最大アクティベーションウインドー内で前記第2メモリローの最大許容アクティベーション数の各々の間の平均時間であることを特徴とする請求項13に記載のトラッキング方法。
【請求項15】
前記メモリのメモリローに対するアクティベーションをトラッキングする段階は、
前記メモリのメモリローをアクティベーションするためのリクエストを受信する段階と、
前記メモリローが前記第2エントリの第2識別子によって識別された第2メモリローにマッチするか否かを決定する段階と、
前記メモリローが前記第2エントリの第2識別子によって識別された第2メモリローにマッチすることを決定した場合、前記アクティベーションカウンターが前記最大許容アクティベーション数を示すか否かを決定する段階と、
前記アクティベーションカウンターが前記最大許容アクティベーション数を示すことを決定した場合、前記メモリのリフレッシュ動作及び前記リクエストのストーリング動作(stalling operration)の中の1つを実行する段階と、を含むことを特徴とする請求項14に記載のトラッキング方法。
【請求項16】
前記メモリのメモリローに対するアクティベーションをトラッキングする段階は、
前記アクティベーションカウンターが前記最大許容アクティベーション数を示さないことを決定した場合、前記アクティベーションカウンターを増加させ、前記第2メモリローをアクティベーションする段階を更に含むことを特徴とする請求項15に記載のトラッキング方法。
【請求項17】
前記メモリのメモリローに対するアクティベーションをトラッキングする段階は、
前記メモリのメモリローをアクティベーションするためのリクエストを受信する段階と、
前記メモリローが前記第1エントリの第1識別子によって識別された第1メモリローにマッチすることを決定する段階と、
前記第1エントリの割当てを取り消す段階と、
前記第2テーブル内で前記メモリローの対応エントリを割当てる段階と、
前記メモリローをアクティベーションする段階と、を含むことを特徴とする請求項14に記載のトラッキング方法。
【請求項18】
前記メモリのメモリローに対するアクティベーションをトラッキングする段階は、
前記メモリのメモリローをアクティベーションするためのリクエストを受信する段階と、
前記メモリローが前記第1エントリの第1識別子によって識別された第1メモリローにマッチしないことを決定する段階と、
前記第1テーブル内で前記メモリローの対応エントリを割当てる段階と、を含むことを特徴とする請求項14に記載のトラッキング方法。
【請求項19】
前記メモリのメモリローに対するアクティベーションをトラッキングする段階は、
前記メモリのメモリローをアクティベーションするためのリクエストを受信する段階と、
前記メモリローが前記第1エントリの第1識別子によって識別された第1メモリローにマッチすることを決定する段階と、
前記第2テーブルが前記第1メモリローに対応する追加エントリを割当てることが不可能であることを決定する段階と、
前記第2テーブルが前記第1メモリローに対応する追加エントリを割当てることが不可能であるとの決定に応答して、前記メモリのリフレッシュ動作及び前記リクエストのストーリング動作(stalling operration)の中の1つを実行する段階と、を含むことを特徴とする請求項14に記載のトラッキング方法。
【請求項20】
前記メモリのメモリローに対するアクティベーションをトラッキングする段階は、
前記少なくとも1つの第2タイム区間が前記第2タイムアウトカウンターから経過したか否かを決定する段階と、
前記少なくとも1つの第2タイム区間が前記第2タイムアウトカウンターから経過したことを決定した場合、前記アクティベーションカウンターを減少させる段階と、を含むことを特徴とする請求項14に記載のトラッキング方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリロー(row)に対するアクティベーションをトラッキングする方法及び装置に関し、より詳細には、減少された数のローアクティベーションカウンターを利用してメモリローに対するアクティベーションを効率的にトラッキングする方法及びそのためのメモリコントローラに関する。
【背景技術】
【0002】
ダイナミックランダムアクセスメモリ(以下、DRAM)のターゲットロー(選択された行)がタイム区間内にあまりにも頻繁にアクティベーション(活性化)される場合、ターゲットローに物理的に隣接する隣接ローに格納されたデータは乱(disturb)されるか、或いは消失(lost)することがある。特に、DRAM設計の密度(density)が増加することによって、隣接ローに格納されたデータはターゲットローの頻繁なアクティベーションから発生するノイズに起因して破損(corruption)することがある。
【0003】
従って、一部のDRAMディバイスに対して、製造業者(メーカー)は、DRAMのアーキテクチャ及びターゲットローのアクティベーションが隣接ロー内に格納されたデータを破損する割合(rate)等に基づいて、タイム区間内にターゲットローに対する最大アクティベーション数を決定する。タイム区間内で設定されたアクティベーション数に到達すると、複数の隣接ローは隣接ロー内に格納されたデータの破損を避けるためにリフレッシュされる。
【0004】
タイム区間内のターゲットローに対する最大アクティベーション数は、一般的に最大アクティベーションカウント(以下、MAC)と称される。MACは、隣接ローがデータ破損を避けるためにリフレッシュされる前の、タイム区間内のターゲットローに対する最大アクティベーション数、即ち最大アクティベーションウインドー(tMAC:the maximum activation window)である。
【0005】
ターゲットローの頻繁なアクティベーションに起因する隣接ロー内に格納されたデータ破損に関連する状況は、1つ又は2つの“アグレッサー(aggressor:加害者)”ローとターゲットワン“ビクティム(victim:被害者)”ローとの場合で発生する。例えば、隣接ビクティムローが配置される間に、マルチプルターゲットアグレッサーロー(multiple taget aggressor row)は頻繁にアクティベーションされる。従って、与えられたビクティムローに対する2つのアグレッサーローからのアクティベーションの合計は、両アグレッサーローに対するアクティベーションが隣接ビクティムローに格納されたデータ破損に寄与するため、MACを超過してはならない。
【0006】
ターゲットローに対する他のアクティベーションを送る前に、MAC制限が最大アクティベーションウインドー内に到達すると、メモリコントローラはDRAM内の全てのメモリローのリフレッシュ及びターゲットローリフレッシュ(TRR)の中の1つを遂行する。TRRは、オーバーアクティベーションされたターゲットローに隣接するメモリローのみをリフレッシュするか、或いはMAC制限が到達しない状況でターゲットローに対するアクティベーションをスロットル(調節)するために遂行される。MAC制限は全てのメモリローの完全なリフレッシュを遂行すること又はTRRを遂行することを避けることができるが、ローアクティベーションの実行を遅延する。
【0007】
上記シナリオで、ビクティムローに対するMACを管理することは、DRAM内のメモリローに対するアクティベーションを制御するメモリコントローラがメモリローの物理的オリエンテーションを知らないという事実に起因して複雑になる。例えば、メモリコントローラは与えられたビクティムローに対して2つのアグレッサーローのアクティベーションをトラッキング(追跡)することができない。ビクティムローに対するMAC超過を保護するために効果的なMAC値が最大アクティベーションウインドー内でMAC/2に設定される。
【0008】
MAC制限を管理することは、慣習的に最大アクティベーションウインドー内でDRAMの各メモリローに送られるアクティベーション数をトラッキングすることを要求する。各メモリローに対するアクティベーション数を実際にトラッキングすることは、DRAM内で各バンク及び各ランクに対する各メモリロー用カウンターを要求する。例えば、4ランク、ランク当たり16バンク、バンク当たり128Kローを有するDRAMで、Nビットをカウントするカウンターの個数は4×16×128K=8192Kになる。カウンターの数量とその管理のために要求される関連する空間はメモリコントローラ設計のパワー及び面積の観点で更に管理するのが難しくなる。
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、減少された数のローアクティベーションカウンターを利用してメモリローに対するアクティベーションを効率的にトラッキングする方法及びそのためのメモリコントローラを提供することにある。
【課題を解決するための手段】
【0010】
上記目的を達成するためになされた本発明の一態様による
ページテーブルを有するメモリを制御するためのメモリコントローラ
において、
前記ページテーブルは、第1エントリを含む第1
テーブル及び第2エントリを含む第2
テーブルを
用いて格納する
ように構成され、前記第1エントリは、第1タイム区間の間に活性化されたメモリの第1メモリローを識別する第1識別子と、前記第1タイム区間の間に残りの第1タイムを示すタイムアウトカウンターと、を含み、前記第2エントリは、少なくとも1つの第2タイム区間の間に活性化されたメモリの第2メモリローを識別する第2識別子と、前記第2メモリローのアクティベーションの数量をカウントするアクティベーションカウンターと、前記少なくとも1つの第2タイム区間の間に残りの第2タイムを示す第2タイムアウトカウンターと、を含む。
【0011】
上記目的を達成するためになされた本発明の一態様によるメモリコントローラによりメモリローに対するアクティベーションをトラッキングする方法は、メモリ内にページテーブルを格納する段階と、前記ページテーブルを
用いて前記メモリのメモリローに対するアクティベーションをトラッキングする段階と、を有し、前記ページテーブルは、第1エントリを含む第1
テーブル及び第2エントリを含む第2
テーブルを
用いて格納
するように構成され、前記第1エントリは、第1タイム区間の間に活性化されたメモリの第1メモリローを識別する第1識別子と、前記第1タイム区間の間に残りの第1タイムを示すタイムアウトカウンターと、を含み、前記第2エントリは、少なくとも1つの第2タイム区間の間に活性化されたメモリの第2メモリローを識別する第2識別子と、前記第2メモリローのアクティベーションの数量をカウントするアクティベーションカウンターと、前記少なくとも1つの第2タイム区間の間に残りの第2タイムを示す第2タイムアウトカウンターと、を含む。
【発明の効果】
【0012】
本発明によれば、減少された数のローアクティベーションカウンターを利用することでメモリローに対するアクティベーションが効率的にトラッキングされる。
【図面の簡単な説明】
【0013】
【
図1】本発明の一実施形態によるDRAMのタイミングパラメーターを示す図である。
【
図2】本発明の一実施形態によるページテーブルを示す図である。
【
図3】本発明の一実施形態によるメモリローに対するアクティベーションをトラッキングする方法を示すフローチャートである。
【
図4】本発明の一実施形態によるメモリコントローラを示す図である。
【
図5】本発明の一実施形態によるDDR4のディバイスパラメーターを示す図である。
【
図6】本発明の一実施形態によるメモリローに対するアクティベーションをトラッキングする方法及び
図5のディバイスパラメーターを適用した性能データテスティング結果を示す図である。
【発明を実施するための形態】
【0014】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。同じ参照符号を同じ構成要素に付す。
【0015】
“少なくとも1つの”等のような表現は、構成要素のリストに先行する場合、構成要素の全体リストを修飾するが、個別の構成要素のリストを修飾しない。
【0016】
図1は、本発明の一実施形態によるDRAMのタイミングパラメーターを示す図である。
【0017】
多様なDRAMタイミングパラメーターを理解することによって、最大アクティベーションウインドー(tMAW)内のDRAM内のターゲットロー、MAC制限の違反を避けるために同時にトラッキングされる必要があるメモリローの数、又は全体DRAMシステムの性能に対して大きい影響を及ぼすアクティベーションの個数制限は減少する。
【0018】
図1で、DRAMのタイミングパラメーターは、DRAMの最大アクティベーションウインドー(tMAW)及びtMAC内のメモリローに対する最大アクティベーション数(tMAC)を含む。このようなパラメーターは上述したように、DRAMの製造業者によって決定される。
【0019】
MACに対するローアクティベーショントラッキングを具現するために、本実施形態によるメモリコントローラは追加的なタイミングパラメーターtRCRowを含む。パラメーターtRCRowは同一のターゲットローに対するアクティベーション間の平均値として次のように計算される。
【0020】
tRCRow=tMAW/(MAC/2)である。
【0021】
上記計算式で(MAC/2)の値は有効MAC値になる。
【0022】
tRCRowの値は、上述したように初期化され、tRCRowウインドーの間にアクティベーションされたメモリローに対するアクティベーションActCTRの数に従って下記のようにリセットされる。
【0023】
tRCRow=tMAW/((MAC−ActCTR)/2)である。
【0024】
tRCRow計算内に含まれるActCTR値は最大アクティベーション数に基づく。最大アクティベーション数は、特定のメモリローに対するアクティベーション数を示すエントリを格納するページテーブル構造によってカウントされ、以下で説明する。ここで、特定のメモリローは1つ以上のtRCRowウインドーの間にアクティベーションされたメモリローを意味する。これはActCTRの幅によって決定される。従って、tRCRowはtRCRowウインドーの間にアクティベーションされたメモリローに対するアクティベーションActCTRの最大値に基づいてリセットされる。
【0025】
追加的なタイミングパラメーターは、リフレッシュインターバルtREF1、リフレッシュコマンドを完了するために要求されるタイムtRFC、パワー制限供給パラメーターtRRD_L及びtFAW、アップデートタイミングパラメーターtMOD、リードディレイタイミングパラメーターtRCD、及びバンクタイミングパラメーターtRAS、tRP、及びtRCを含む。このようなパラメーターも、アーキテクチャ選択に基づいて、DRAMの製造業者によって決定される。
【0026】
図2は、本発明の一実施形態によるページテーブルを示す図である。
【0027】
ページテーブル200は、減少された個数のローアクティベーションカウンターを利用してメモリローに対するアクティベーションを効率的にトラッキングするために、バンク当たり2つのページテーブル構造を含む。
【0028】
第1ページテーブル構造(RowOneAct)210はtRCRowウインドーの間にアクティベーションされたメモリローを示すエントリを格納する。例えば、第1ページテーブル構造210はtRCRowウインドーの間にメモリローのアクティベーションをトラッキングするためにバンク内で16エントリ構造になる。
【0029】
第1ページテーブル構造210はtRCRowウインドーの間にアクティベーションされたメモリロー(Row)230に関連し、メモリロー230に対するtRCRowウインドーの満了をトラッキングするためのタイムアウトカウンター(tRCRowCTR)240に関連する。
【0030】
メモリコントローラは、メモリローのアクティベーションが発生すると、メモリロー230に関する第1ページテーブル構造210に対するエントリを示し、タイムアウトカウンター240をtRCRowのような値に初期化する。また、メモリコントローラは、タイムアウトカウンター240に基づいて決定されたtRCRowが一旦経過すると、第1ページテーブル構造210からエントリを除去(purge)する。従って、メモリコントローラはtRCRowウインドーの間にアクティベーションされたメモリローを認識するために第1ページテーブル構造210を照会(query)する。
【0031】
第2ページテーブル構造(RowLeakBuck)220は1つ以上のtRCRowウインドーの間にアクティベーションされた特定のメモリローに対するアクティベーションの個数を示すエントリを格納する。
【0032】
第2ページテーブル構造220は、tRCRowウインドーの間にアクティベーションされたメモリロー(Row)250、メモリロー250に対する1つ以上のtRCRowウインドーの満了をトラッキングするためのタイムアウトカウンター(tRCRowCTR)260、及びtRCRowウインドーの間にアクティベーションされた特定のメモリロー250に対するアクティベーション数をカウントするアクティベーションカウンター(ActCTR)270に関連する。第2ページテーブル構造220内にエントリが示されると、タイムアウトカウンター260はtRCRowのような値に初期化されるか、或いはエントリが第1ページテーブル構造210から第2ページテーブル構造220に移動される場合に、後述するように、タイムアウトカウンター260はタイムアウトカウンター240の値のような値に交互に初期化される。付加的に、エントリが第2ページテーブル構造220内に示されると、アクティベーションカウンター270は1に初期化される。
【0033】
例えば、第2ページテーブル構造220は第2ページテーブル構造220内の各メモリロー250のエントリに対して8ビットのアクティベーションカウンター270を適用するバンク内で8エントリ構造になる。
【0034】
アクティベーションカウンター270は、第2ページテーブル構造220内でメモリロー250のエントリをマッチングする特別のメモリローがアクティベーションされる時毎に、例えば1ずつ増加される。上述したように、タイムアウトカウンター260は、メモリロー250のエントリをマッチングする特別のメモリローが一旦アクティベーションされると、初期化される。
【0035】
逆に、アクティベーションカウンター270は、タイムアウトカウンター260が終了されることに従ってtRCRow毎に、例えば1ずつ減少される。
【0036】
タイムアウトカウンター260の終了時、アクティベーションカウンター270がノンゼロ(non−zero)アクティベーション値を示すと、タイムアウトカウンター260は、上述したように、ノンゼロアクティベーション値に従ってその後にtRCRowのような値にリセットされる。
【0037】
アクティベーションカウンター270によって示したようにアクティベーションに対するカウンティングによって、tRCRowウインドーは最大アクティベーション数tMACがDRAMの最大アクティベーションウインドーtMAW内で発生しないことを保証するために制御される。
【0038】
タイムアウトカウンター260の終了時、アクティベーションカウンター270を減少させてリセットする動作は、アクティベーションカウンター270の値が0になる時まで繰返される。アクティベーションカウンター270が0に到達すると、対応するメモリロー250のエントリは第2ページテーブル構造220から除去される。
【0039】
従って、メモリコントローラは、隣接ローのデータ破損を防止するためにリフレッシュやアクティベーションの調節を必要とする、頻繁にアクティベーションされるメモリローに対するアクティベーション数と潛在的にオーバーアクティベーションされるメモリローを識別するために、第2ページテーブル構造220を照会する。
【0040】
図3は、本発明の一実施形態によるメモリローに対するアクティベーションをトラッキングする方法を示す図である。
【0041】
上述したように、メモリコントローラはメモリローに対する頻繁なアクセスから生じるデータ破損を防止するためにメモリローに対するアクティベーションをトラッキングする方法を実行する。
【0042】
段階S305で、メモリコントローラはメモリローに対するメモリアクセス用リクエストを受信する。
【0043】
段階S310で、メモリコントローラは要請されたメモリローが第2ページテーブル構造220内に存在するエントリのメモリロー250にマッチするか否かを決定するために第2ページテーブル構造220を照会する。
【0044】
要請されたメモリローが第2ページテーブル構造220内に存在するエントリのメモリロー250にマッチすることを決定した場合(段階S310で「はい」)、アクティベーションカウンター270をスレショルドと比較することによって、メモリコントローラは、段階S315で、要請されたメモリローがオーバーアクティブローであるか否かを決定する。スレショルドは、上述したように、要請されたメモリローに対するアクティベーション数が最大値に到達したことを示すアクティベーションカウンター270の値になる。
【0045】
メモリコントローラが、要請されたメモリローに対するアクティベーション数がスレショルドより小さいことを決定した場合(段階S315で「いいえ」)、メモリコントローラは、段階S320で、第2ページテーブル構造220のエントリ内のメモリロー250に対するアクティベーションカウンター270を増加させ、段階S355でローアクティベーションを遂行する。
【0046】
一方、メモリコントローラが、要請されたメモリローに対するアクティベーション数がスレショルドに到達したことを決定した場合(段階S315で「はい」)、メモリコントローラは、段階S325で、メモリアクティベーションのリフレッシュ又はスロットリング(throttling)を遂行する。ここで、メモリコントローラがリフレッシュを遂行すると、アクティベーションカウンター270は0にリセットされるか、或いはメモリロー250に対するエントリは第2ページテーブル構造220から再割当てされる。代わりに、メモリコントローラがスロットリングを遂行すると、メモリコントローラは、タイムアウトカウンター260によって表示されるウインドーの連続的な終了に基づいて、アクティベーションカウンター270が収容できる低いスレショルドに到達する時までメモリローのアクティベーションを調節(throttle)する。
【0047】
メモリアクセスに関する要請に対するメモリコントローラの受信に戻って(段階S315)、メモリコントローラが、要請されたメモリローが第2ページテーブル構造220内に存在するエントリにマッチしないことを決定した場合(段階S310で「いいえ」)、メモリコントローラは、段階S330で、要請されたメモリローが第1ページテーブル構造210内に存在するエントリにマッチするか否かを決定する。
【0048】
要請されたメモリローが第1ページテーブル構造210内に存在するエントリにマッチすることを決定した場合(段階S330で「はい」)、要請されたメモリローが現在のウインドーの間に既にアクティベーションされていることを示すことによって、メモリコントローラは、段階S350で、アクティベーション数をトラッキングするために追加エントリが第2ページテーブル構造220内に割当てられるか否かを決定する。
【0049】
メモリコントローラが、第2ページテーブル構造220がアクティブエントリにいっぱいに満たされ、追加エントリが第2ページテーブル構造220内に割当てられないことを決定した場合(段階S350で「はい」)、メモリコントローラは、段階S325で、メモリアクティベーションのリフレッシュ又は調節を遂行する。ここで、メモリコントローラがリフレッシュを遂行すると、メモリロー230に対するエントリは第1ページテーブル構造210から再割当てされる。代わりに、メモリコントローラがスロットリングを遂行すると、メモリコントローラはタイムアウトカウンター240に基づいて決定されるようにウインドーの満了時まで、メモリローのアクティベーションを調節し、メモリロー230に対するエントリは第1ページテーブル構造210から再割当てされる。
【0050】
一方、メモリコントローラは、第2ページテーブル構造220がアクティブエントリに満たされていないことを決定した場合(段階S350で「いいえ」)、段階S345で、第1ページテーブル構造210からメモリロー230に対するエントリの割当てを取り消し、第2ページテーブル構造220内に要請されたメモリローに対する対応する新しいエントリを割当て、段階S355でローアクティベーションを遂行する。
【0051】
要請されたローが第1ページテーブル構造210内に存在するエントリにマッチするか否かを判断するメモリコントローラの決定に戻って(段階S330)、要請されたローが第1ページテーブル構造210内に存在するエントリにマッチしないことを決定した場合(段階S330で「いいえ」)、メモリコントローラは、段階S335で、メモリローがウインドーの間にアクティベーションされたか否かをトラッキングするために追加エントリが第1ページテーブル構造内に割当てられるか否かを決定する。
【0052】
メモリコントローラが、第1ページテーブル構造がアクティブエントリでいっぱいに満たされ、追加エントリが第1ページテーブル構造210内に割当てられないことを決定した場合(段階S335で「はい」)、メモリコントローラは、段階S350で、アクティベーションの個数をトラッキングするために追加エントリが第2ページテーブル構造220内に割当てられるか否かを決定し、上述したような連続的な決定動作を遂行する。
【0053】
一方、メモリコントローラが、第1ページテーブル構造210がアクティブエントリに満たされていないことを決定した場合(段階S335で「いいえ」)、メモリコントローラは第1ページテーブル構造210内で要請されたメモリローに対する新しいエントリを割当て、段階S355でローアクティベーションを遂行する。
【0054】
図4は、本発明の一実施形態によるメモリコントローラを示す図である。
【0055】
図4に示したように、メモリコントローラ400は、システムインターフェイス410、アドレス変換ユニット420、メインリクエストキュー430、アービタ440、DDR物理レイヤーディバイス(DDR Physical Layer Device:DFI)インターフェイス450、セレクター460、及びページテーブル470を含む。
【0056】
図4に示したページテーブル470は
図2のページテーブル200と同様であるので、これに対する詳細な説明は省略する。
【0057】
システムインターフェイス410は、メモリコントローラ400に属するシステムの追加的なコンポーネントに対するインターフェイスである。メッセージ及びデータは、システムインターフェイス410を通じて伝送され、受信される。
【0058】
アドレス変換ユニット420は、システムインターフェイス410を通じて受信したメモリリクエストに対するアドレス変換を遂行する。
【0059】
メインリクエストキュー430は、システムインターフェイス410を通じて受信し、アドレス変換ユニット420によって変換されたメモリリクエストを格納する。
【0060】
アービタ440は、リクエスト信号(Pick Req)をメインリクエストキュー430内に格納されたリクエストの中の1つを選択するためのセレクター460に出力する。リクエスト信号はDFIインターフェイス450を通じて処理される。
【0061】
ページテーブル470は、メモリリクエストに対応されるメモリローをアクティベーションするか否かを決定するためにメインリクエストキュー内に格納されたリクエストと共に照会される。アクティベーションの決定に対する詳細な説明は、
図3に関連して説明したので、これに対する詳細な説明は省略する。
【0062】
ページテーブル470は、メモリローのアクティベーションに関連してDFIインターフェイス450からフィードバックを追加的に受信する。
【0063】
図5は、本発明の一実施形態によるDDR4のディバイスパラメーターを示す図である。
【0064】
図5に示したように、DDR4 DRAMディバイスパラメーターは示される。当業者であれば、DDR4 DRAMディバイスパラメーターは製造業者によって決定されることが理解される。
【0065】
図6は、本発明の一実施形態によるメモリローに対するアクティベーションをトラッキングする方法及び
図5のディバイスパラメーターを適用した性能データテスティング結果を示す図である。
【0066】
図示したように、3つのスキーム(スキーム1、スキーム2、及びスキーム3)に対する性能データを、7つのトラフィックパターンを利用して示す。即ち、アクティベーション当たり1CAS、Nローに対するラウンドロビンアクセス(round−robin access)(ここで、N=128K、16、8、6、4、2、1)である。パフォーマンスメトリックス(performance metrics)は、tMACウインドー内で、どの位多くのアクティベーションが1つのバンクに対して発せられる(イッシューされる)かに対する比較を示す。図示した実施形態によると、メモリチャンネル内で1つ以上のバンクが存在し、全てのトラフィックは1つのバンクのみに行くことと仮定する。
【0067】
図6に示した本実施形態によると、第1及び第2スキーム(Schemes)(スキーム1、及びスキーム2)は本発明の特徴を示す第3スキーム(スキーム3)に対する例と比較される。
【0068】
第1スキーム(スキーム1)で、バンクは最大アクティベーションカウント制限に到達することを避けるためにノーマルリフレッシュレートより更に頻繁にリフレッシュされる。この場合にはリフレッシュ(例えばTRR)モードに進入する必要がない。
【0069】
バンクは47ns(tRC)×300K=14.1ms内で300K(tMAC)回アクティベーションされる。全てのメモリローがこのウインドー内でリフレッシュされる場合、300Kを超えないアクティベーションが全てのローに対して適用されることが保証される。
【0070】
リフレッシュの性能オーバーヘッドはtRFC/tREFI×tMAW/14.1=20.4%である。ノーマルリフレッシュレートの性能オーバーヘッドはtRFC/tREFI=4.5%である。従って、第1スキームの性能オーバーヘッドは1−(1−20.4%)/(1−4.5%)=16.6%である。本実施形態によると、性能オーバーヘッドは全てのリストされたアクセスパターンと同一である。
【0071】
第2スキーム(スキーム2)で、カウンターは最近のアクティベーション数をトラッキングするために使用される。即ち、カウンターをtRCRow毎に減少させ、アクティベーションがメモリローに送られる時にカウンターを増加させる。リフレッシュ(例えば、TRRモード)はカウンターがオーバーフローするか、或いはカウンターが最大カウンター値に到達してアクティベーションが調節される時毎に初期化される。
【0072】
カウンター幅が19ビットである場合、バンク当たりの全体ストレージオーバーヘッドは2432Kbits(19bits/row×128Krows=2432Kbits)である。カウンターオーバーフローが発生した時にTRRモードが使用されると、tMAW内のオーバーフロー数は(64ms/47ns/300k<5)程バウンドされて性能オーバーヘッドは無視される。ストレージオーバーヘッドを減らすために、ビット数はカウンター当たり減少する。しかし、このようなトラフィックパターンに対してより小さいカウンターを利用する場合、オーバーフロー数は大きく、更に高い性能オーバーヘッドが必要になる。例えば、カウンター幅が8である場合、ストレージオーバーヘッドは1024Kbits/bankであり、性能劣化はN=1である場合に5.4%に増加する(1ローアクセスの場合)。
【0073】
TRRモードが使用されない場合、メモリコントローラはカウンターが最大値に到達する時にアクティベーションを調節する。例えば、N=1である場合(1ローアクセスの場合)に、メモリローのカウンターが最大値(300K)に到達すると、メモリコントローラはtRCRow(213.33ns)毎にアクティベーションを発(イッシュー)し、従ってパフォーマンスオーバーヘッドは1−47ns/213.ns=77.9%である。
【0074】
第3スキーム(スキーム3)で、
図3に示した完全な方法が具現される。
【0075】
性能オーバーヘッドは第2スキームと同一である。しかし、ストレージオーバーヘッドは非常に低い。このスキームに対して、168=(16+(8×19))カウンタービットが必要になる。カウンターはメモリロー当たりで格納されないため、エントリ当たりのローインデックス(17ローアドレスビット)が適用され、他の408ビット(24×17)を加える。
【0076】
このスキーム(168+408)に対する全体ストレージは他のスキームに比べて相変わらず非常に少ない。性能オーバーヘッドは第2スキームと同一である。なぜなら、8カウンターが(
図2の第2ページテーブル構造220内に具現したもののように)N<=4である場合、多くのアクティベーションを有するメモリローをキャプチャすることが十分であるためであり、N>4である場合、バンクは上述したようにコンフィギュレーション(configuration)に対するローハンマーイッシュー(row hammer issue)に適用されない。更に、第3スキームは第2スキームより低いストレージ及び性能オーバーヘッドを有し、第1スキームより非常に低い性能及びパワーオーバーヘッドを相対的に有する。
【0077】
特に、他のコンフィギュレーション(tMAW/tMAC)に対して、カウンターの数は(
図2の第2ページテーブル構造220内に具現したもののように)調節される。
【0078】
本実施形態の機能はコンピューター読み取り可能な記録媒体のコンピューター読み取り可能なコードで具現される。コンピューター読み取り可能な記録媒体はコンピューター読み取り可能なデータが格納される記録媒体の全ての種類を含む。例えば、コンピューター読み取り可能な記録媒体は、ROM、RAM、CD−ROM、マグネチックテープ、フロッピー(登録商標)ディスク、及び光学データストレージを含む。更に、記録媒体はインターネット伝送に利用されるような搬送波の形態でも具現される。加えて、コンピューター読み取り可能な記録媒体はネットワーク上のコンピューターシステムに分配される。コンピューターシステムはコンピューター読み取り可能なコードが格納され分配された手法で実行される。
【0079】
当該技術者によってよく理解されるように、本実施形態は、ソフトウェア及び/又はハードウェア素子、例えば与えられたタスクを遂行するフィールドプログラマブルゲートアレイ(FPGA)やASIC等のような任意の組合せによっても具現される。
【0080】
ユニット又はモジュールはアクセス可能なストレージ媒体上に存在するために構成され、1つ以上のプロセッサ又はマイクロプロセッサを実行するために構成される。従って、ユニット又はモジュールは、例えばソフトウェアコンポーネント、オブジェクト指向ソフトウェアコンポーネント、クラスコンポーネント、及びタスクコンポーネント、プロセス、機能、属性、プロシージャー、サブルーチン、プログラムコードのセグメント、ドライバー、ファームウェア、マイクロコード、回路等、データ、データベース、データ構造、テーブル、アレイ、及び変数等のようなコンポーネントを含む。
【0081】
コンポーネント及びユニット内に提供される機能性(functionality)は、少数のコンポーネント及びユニット、モジュール、更に分割された追加コンポーネント及びユニット、又はモジュールに結合される。
【0082】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【0083】
200、470 ページテーブル
210 第1ページテーブル構造(RowOneAct)
220 第2ページテーブル構造(RowLeakBuck)
230、250 メモリロー(Row)
240、260 タイムアウトカウンター(tRCRowCTR)
270 アクティベーションカウンター(ActCTR)
400 メモリコントローラ
410 システムインターフェイス
420 アドレス変換ユニット
430 メインリクエストキュー
440 アービタ
450 DFIインターフェイス
460 セレクター