(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-21
(45)【発行日】2024-10-29
(54)【発明の名称】メモリ管理装置、メモリ管理方法及びメモリ管理プログラム
(51)【国際特許分類】
G11C 11/406 20060101AFI20241022BHJP
G06F 12/06 20060101ALI20241022BHJP
【FI】
G11C11/406 300
G11C11/406 400
G06F12/06 540E
G06F12/06 550A
(21)【出願番号】P 2021064148
(22)【出願日】2021-04-05
【審査請求日】2024-01-11
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】中川 哲志
(72)【発明者】
【氏名】北村 泰浩
【審査官】豊田 真弓
(56)【参考文献】
【文献】特開2020-166832(JP,A)
【文献】特開2015-133119(JP,A)
【文献】特開2018-128991(JP,A)
【文献】特表2016-504702(JP,A)
【文献】特開2013-239228(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 11/406
G06F 12/06
(57)【特許請求の範囲】
【請求項1】
メモリが有する複数のバンクのうちの所定のグループに含まれる各前記バンクに対する活性化命令の発行の通知を受ける通知取得部と、
前記通知取得部により取得された前記通知の数をカウントするカウンターと、
前記カウンターがカウント値を増やしてから所定期間、前記カウンターによるカウントを停止させるカウント停止部と、
前記カウンターによるカウント値がリフレッシュ閾値に達した場合に、前記メモリのリフレッシュを行わせるリフレッシュ要求部と、
前記メモリのリフレッシュが行われた場合に、前記カウント値から前記リフレッシュ閾値を減らす減少部と
を備えたことを特徴とするメモリ管理装置。
【請求項2】
前記カウント値が発行停止上限値に達した場合に、前記所定のグループに含まれる前記バンクに対する前記活性化命令の発行を停止させる停止処理部をさらに備えたことを特徴とする請求項1に記載のメモリ管理装置。
【請求項3】
前記メモリに対するアクセス要求に対してパイプライン処理を行い、前記アクセス要求で指定された前記バンクに対して活性化命令を出力するパイプラインをさらに備えたことを特徴とする請求項1又は2に記載のメモリ管理装置。
【請求項4】
前記パイプラインは、前記リフレッシュ要求部により前記メモリのリフレッシュが指示された場合に、前記メモリをリフレッシュすることを特徴とする請求項3に記載のメモリ管理装置。
【請求項5】
前記リフレッシュ要求部からのリフレッシュの指示を受けた場合及び所定時間経過した場合に、内部コマンドを生成して前記メモリのリフレッシュを行わせる内部コマンド生成部をさらに備えたことを特徴とする請求項1~4のいずれか一つに記載のメモリ管理装置。
【請求項6】
メモリが有する複数のバンクのうちの所定のグループに含まれる各バンクに対する活性化命令の発行の通知を受信し、
受信した前記通知の数をカウンターでカウントし、
前記カウンターがカウント値を増やしてから所定期間、前記カウンターによるカウントを停止させ、
前記カウンターによるカウント値がリフレッシュ閾値に達した場合に、前記メモリのリフレッシュを行わせ、
前記メモリのリフレッシュが行われた場合に、前記カウント値から前記リフレッシュ閾値を減らす
ことを特徴とするメモリ管理方法。
【請求項7】
メモリが有する複数のバンクのうちの所定のグループに含まれる各バンクに対する活性化命令の発行の通知を受信し、
受信した前記通知の数をカウンターでカウントし、
前記カウンターがカウント値を増やしてから所定期間、前記カウンターによるカウントを停止させ、
前記カウンターによるカウント値がリフレッシュ閾値に達した場合に、前記メモリのリフレッシュを行わせ、
前記メモリのリフレッシュが行われた場合に、前記カウント値から前記リフレッシュ閾値を減らす
処理をコンピュータに実行させることを特徴とするメモリ管理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリ管理装置、メモリ管理方法及びメモリ管理プログラムに関する。
【背景技術】
【0002】
DRAM(Dynamic Random Access Memory)は、構造が単純で、比較的安い価格で大容量な製品を製造できるため、コンピュータのメインメモリなどに広く使われている。DRAMでは、情報を保持するために定期的なリフレッシュが行われる。さらに、近年のDRAMの高集積化に伴い、定期的なリフレッシュに加えて、追加でリフレッシュを行うリフレッシュマネジメントと呼ばれる機能が加えられたDRAMの使用も増えている。
【0003】
以下に、DRAMにおけるリフレッシュマネジメントについて簡単に説明する。DRAMは、読み書きをする前に駆動を開始するための活性化命令であるActivate(ACT)コマンドを受け付ける。メモリアクセスコントローラ(MAC)は、DRAMのバンク毎に、Rolling Accumulated Activate(RAA)カウンターを有する。そして、メモリアクセスコトンローラは、各バンク宛てのACTコマンドの発行のたびに、宛先のバンクのカウンターをインクリメントする。RAAカウンターがRAA Initial Management Threshold(RAAIMT)以上になると、メモリアクセスコントローラは、追加のリフレッシュとしてRefresh Management(RFM)コマンドを発行する。RFMコマンドを発行すると、メモリアクセスコントローラは、RAAカウンターをRAAIMTだけ減算する。
【0004】
定期的なリフレッシュのためのRefresh(REF)コマンドが発行された場合も、メモリアクセスコントローラは、RAAカウンターをRAAIMTだけ減算する。ただし、RAAカウンターの値がRAAIMTより小さい場合は、RAAカウンターはマイナスにならずに0となる。
【0005】
ACTコマンドが特定のバンク宛てに発行されるのに対して、RFMコマンドには宛先が異なる2種類が存在する。1つは、同一ランク内の全てのバンクグループの全バンク宛てであるRFMab(all bank)コマンドである。もう1つは、同一ランク内の全バンクグループの特定のバンクアドレスのバンク宛てであるRFMsb(same bank)コマンドである。また、REFコマンドにも、同様にREFabコマンドとREFsbの2種類のコマンドが存在する。
【0006】
また、RAAカウンターがRAA Maximum Management Threshold(RAAMMT)に達すると、メモリアクセスコントローラは、該当するバンクへのACTコマンドの発行を抑止する。
【0007】
DRAMのリフレッシュ機能に関して、メモリバンク毎にリフレッシュが実行されたか否かを記憶する記憶回路を配置してリフレッシュタイマーを1つにまとめた技術がある。また、リフレッシュコマンドを発行後所定期間にキャリブレーションコマンドの発行を抑制し、キャリブレーションコマンドの発行後所定期間にリフレッシュコマンドの発行を抑制する技術がある。
【先行技術文献】
【特許文献】
【0008】
【文献】特開2003-007054号公報
【文献】特開2016-012362号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、リフレッシュマネジメントの機能を実現するために、メモリアクセスコントローラには、制御対象となるDIMM(Dual Inline Memory Module)の総バンク数のRAAカウンターが配置される。例えば、メモリアクセスコントローラに接続されるDIMMの数が1枚であり、ランク数が16であり、バンクグループの数が8であり、同一バンクグループ内のバンク数が4である場合で説明する。この場合、総バンク数は、16×8×4=512となる。一方、RAAカウンターの最大値はRAAMMTである。例えばDDR(Double Data Rate)5SDRAM(Synchronous Dynamic Random Access Memory)であれば、RAAMMTの最大値は6×80=480である。この場合には、RAAカウンター1個あたりにつき9ビットが使用される。したがって、メモリアクセスコントローラに配置されるフリップフロップ(FF)のビット数は全体で、9×512=4608ビットとなり、RAAカウンターは大きな物量となる。近年のLSI(Large Scale Integration)は、消費電力の増大が問題となっており、なるべく小規模な回路で実装されることが望まれているが、このような方式のメモリアクセスコントローラでは回路規模を小さくすることは困難である。
【0010】
なお、メモリバンク毎に記憶回路を配置してリフレッシュタイマーを1つにまとめた技術では、リフレッシュタイマーの数は削減できるが、RAAカウンターは削減されないため、RAAカウンターによる回路規模の増大を抑えることは困難である。また、キャリブレーションコマンドの発行やリフレッシュコマンドの発行を所定期間抑制する技術では、RAAカウンターの規模への影響はないため、回路規模の増大を抑えることは困難である。
【0011】
開示の技術は、上記に鑑みてなされたものであって、回路規模及び消費電力を削減するメモリ管理装置、メモリ管理方法及びメモリ管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
本願の開示するメモリ管理装置、メモリ管理方法及びメモリ管理プログラムの一つの態様において、通知取得部は、メモリが有する複数のバンクのうちの所定のグループに含まれる各前記バンクに対する活性化命令の発行の通知を受ける。カウンターは、前記通知取得部により取得された前記通知の数をカウントする。カウント停止部は、前記カウンターがカウント値を増やしてから所定期間、前記カウンターによるカウントを停止させる。リフレッシュ要求部は、前記カウンターによるカウント値がリフレッシュ閾値に達した場合に、前記メモリのリフレッシュを行わせる。減少部は、前記メモリのリフレッシュが行われた場合に、前記カウント値から前記リフレッシュ閾値を減らす。
【発明の効果】
【0013】
1つの側面では、本発明は、回路規模及び消費電力を削減することができる。
【図面の簡単な説明】
【0014】
【
図1】
図1は、メモリアクセスコントローラ全体の構成図である。
【
図2】
図2は、実施例1に係るリフレッシュマネジメント制御部の詳細を表す回路図である。
【
図3】
図3は、実施例1に係るRAAカウンターの遷移を示すタイムチャートである。
【
図4】
図4は、実施例1に係るRFM発行要求が出力される場合のRAAカウンターの遷移を示すタイムチャートである。
【
図5】
図5は、実施例1に係るリフレッシュマネジメントのフローチャートである。
【
図6】
図6は、実施例2に係るリフレッシュマネジメント制御部の詳細を表す回路図である。
【
図7】
図7は、実施例2に係るRAAカウンターの遷移を示すタイムチャートであるである。
【
図8】
図8は、実施例2に係るRFM発行要求が出力される場合のRAAカウンターの遷移を示すタイムチャートである。
【
図9A】
図9Aは、実施例2に係るリフレッシュマネジメントの第1のフローチャートである。
【
図9B】
図9Bは、実施例2に係るリフレッシュマネジメントの第2のフローチャートである。
【
図10】
図10は、情報処理装置のハードウェア構成図である。
【発明を実施するための形態】
【0015】
以下に、本願の開示するメモリ管理装置、メモリ管理方法及びメモリ管理プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示するメモリ管理装置、メモリ管理方法及びメモリ管理プログラムが限定されるものではない。
【実施例1】
【0016】
図1は、メモリアクセスコントローラ全体の構成図である。本実施例に係るメモリアクセスコントローラ1は、
図1に示すように、パイプライン管理部10、リクエストキュー20、ライトデータキュー30及びリードデータキュー40を有する。
【0017】
リクエストキュー20は、メモリアクセス要求を受信する。メモリアクセス要求は、例えばCPU(Central Processing Unit)コアなどから送られる。そして、リクエストキュー20は、受信したメモリアクセス要求を蓄積し、パイプライン管理部10へ出力する。
【0018】
パイプライン管理部10は、リクエストキュー20から入力されたメモリアクセス要求に対してパイプライン処理及びリフレッシュコマンド用のコマンドなどを含む内部コマンドの生成を行う。パイプライン管理部10は、パイプライン101、リフレッシュマネジメント制御部102及び内部コマンド生成部103を有する。
【0019】
パイプライン101は、入力された要求に対する複数の一連の処理段階を有する。パイプライン101は、メモリアクセス要求の入力をリクエストキュー20から受ける。また、パイプライン101は、内部コマンドの入力を内部コマンド生成部103から受ける。
【0020】
パイプライン101は、入力されたメモリアクセス要求又は内部コマンドに対して、各処理段階で処理を行い次の処理段階に移すパイプライン処理を行う。そして、パイプライン101は、処理結果に応じたコマンドをメモリ2の物理層を介してメモリ2へ出力する。具体的には、パイプライン101は、メモリアクセス要求で指定されたバンクに対してACTコマンドをメモリ2に向けて発行する。その後、パイプライン101は、メモリアクセス要求の内容に応じてライトコマンド又はリードコマンドをメモリ2に向けて発行する。また、パイプライン101は、PREコマンドをメモリ2に向けて発行する。
【0021】
ACTコマンドは、Bank Address(バンクアドレス)、Bank Group Address(バンクグループアドレス)及びRow Addressの指定を含み、指定したバンクを活性化(ACTIVE)させ、Row Addressを選択するコマンドである。すなわち、ACTコマンドにより、バンクがIDLE状態からACTIVE状態に遷移する。リードコマンド及びライトコマンドは、Bank Address、Bank Group Address及びColumn Addressの指定を含み、指定したバンクのColumn Addressを選択して、読み出し又は書き込みを行うコマンドである。PREコマンドは、対応するバンクをプリチャージし、バンクの状態をIDLEに戻す、すなわちバンクの初期化を行うコマンドである。また、リードコマンド、ライトコマンド及びPREコマンドを一つにまとめたRDA/WRA(Read/Write with Auto Pre-charge)コマンドもある。
【0022】
また、パイプライン101は、ACTコマンドの発行抑止要求の入力をリフレッシュマネジメント制御部102から受ける。そして、パイプライン101は、ACTコマンドの発行を待機する。
【0023】
リフレッシュマネジメント制御部102は、パイプライン101がメモリ2へ送出したACTコマンド、REFコマンド、RFMコマンド及び発行通知の入力を受ける。そして、リフレッシュマネジメント制御部102は、取得した各信号を基に、RFMコマンドの発行やACTコマンドの発行の抑止を決定する。RFMコマンドの発行を決定した場合、リフレッシュマネジメント制御部102は、RFMコマンドの発行要求を内部コマンド生成部103へ出力する。また、ACTコマンドの発行の抑止を決定した場合、リフレッシュマネジメント制御部102は、ACTコマンドの発行抑止要求をパイプライン101へ出力する。リフレッシュマネジメント制御部102の動作については、後で詳細に説明する。
【0024】
内部コマンド生成部103は、自己が有するタイマーを用いて所定時間を計測する。そして、内部コマンド生成部103は、予め決められた所定時間が経過するとREFabコマンド又はREFsbコマンドを生成する。REFabコマンドを用いるか、REFsbコマンドを用いるかは、例えば、予め設定された動作モードにより決定される。そして、内部コマンド生成部103は、生成したREFabコマンド又はREFsbコマンドをパイプライン101へ出力する。
【0025】
また、内部コマンド生成部103は、RFMコマンドの発行要求をリフレッシュマネジメント制御部102から受ける。そして、内部コマンド生成部103は、入力された発行要求にしたがってRFMabコマンド又はRFMsbコマンドを生成する。その後、内部コマンド生成部103は、生成したRFMabコマンド又はRFMsbコマンドをパイプライン101へ出力する。
【0026】
ライトデータキュー30は、メモリ2へのライトデータの入力を受ける。そして、ライトデータキュー30は、入力されたライトデータを蓄積する。その後、ライトデータキュー30は、メモリアクセス要求により書き込み先のメモリ2のバンクがアクティベートされたことを通知する信号の入力をパイプライン管理部10から受ける。そして、ライトデータキュー30は、アクティベートされたバンクへ書き込むライトデータをメモリ2へ出力する。
【0027】
リードデータキュー40は、メモリアクセス要求により読み出し元のメモリ2のバンクがアクティベートされたことを通知する信号の入力をパイプライン管理部10から受ける。そして、リードデータキュー40は、アクティベートされたバンクから読み出されたリードデータをメモリ2から取得して蓄積する。その後、リードデータキュー40は、リードデータの宛先に対して順次リードデータを出力する。
【0028】
図2は、実施例1に係るリフレッシュマネジメント制御部の詳細を表す回路図である。リフレッシュマネジメント制御部102は、複数のバンクをまとめた各グループに対して1つずつリフレッシュマネジメント制御回路110を有する。この1つのグループに含まれるバンクの数に特に制限はなく、全てのバンクを含むグループとすることも可能である。1つのグループに含まれるバンクの数は、要求されるリフレッシュ時間を考慮してメモリ2の運用に合わせて決定されることが好ましい。本実施例では、同一ランク内のバンク全てを1つのグループとしてまとめて、1つのリフレッシュマネジメント制御回路110の管理対象とする場合で説明する。
【0029】
リフレッシュマネジメント制御回路110は、
図2に示すように、OR回路111、クロック出力回路112、RAAカウンターFF(Flip Flop)113、OR回路114、AND回路115、AND回路116及びOR回路117を有する。さらに、リフレッシュマネジメント制御回路110は、比較器118、比較器119、加算器120及び減算器121を有する。
【0030】
OR回路114は、管理対象のバンクに対するメモリアクセス要求がパイプライン101に投入されると、そのメモリアクセス要求で指定されたバンクに対するACTコマンドが発行されたことを通知するACT_GO信号の入力を受ける。すなわち、OR回路111は、リフレッシュマネジメント制御回路110が管理するグループに属する全てのバンクに対するACTコマンドの発行の通知を受ける。そして、管理対象のいずれかのバンクに対するACTコマンドの発行通知を受けると、OR回路114は、信号をOR回路111及びAND回路116へ出力する。このOR回路114が、「通知取得部」の一例にあたる。
【0031】
OR回路111は、管理対象のバンクに対するメモリアクセス要求がパイプライン101に投入されると、そのメモリアクセス要求で指定されたバンクに対するACTコマンドが発行されたことを通知するACT_GO信号の入力を、OR回路114から受ける。そして、OR回路111は、OR回路114からの信号の入力を受けると、クロック出力回路112にイネーブル信号を入力する。
【0032】
また、OR回路111は、RFMコマンド又はREFコマンドのいずれかのリフレッシュコマンドがパイプライン101からメモリ2に対して発行されると、リフレッシュコマンドが発行されたことを通知するREF_GO信号の入力を受ける。そして、OR回路111は、REF_GO信号の入力を受けると、クロック出力回路112にイネーブル信号を入力する。
【0033】
クロック出力回路112は、例えば発振器からクロック(CKL)の入力を受ける。イネーブル信号が入力されていない状態では、クロック出力回路112は、クロックの出力を待機する。そして、ACT_GO信号又はREF_GO信号の入力に応じてイネーブル信号がOR回路111から入力されると、クロック出力回路112は、クロックをRAAカウンターFF113へ入力する。
【0034】
AND回路115は、RAAカウンターFF113から出力されたRAAカウンターの値からRAAIMTを減算した値の入力を加算器121から受ける。ただし、RAAカウンターFF113から出力されたRAAカウンターの値がRAAIMT以下の場合、入力される値は0である。また、AND回路115は、内部コマンドであるRFMコマンド又はREFコマンドのリフレッシュコマンドがパイプライン101に投入され、パイプライン101から出力されると、リフレッシュコマンドの発行を通知するREF_GO信号の入力を受ける。REF_GO信号が入力されると、AND回路115は、RAAカウンターFF113から出力されたRAAカウンターの値からRAAIMTを減算した値をOR回路117へ出力する。
【0035】
AND回路116は、RAAカウンターFF113から出力されたRAAカウンターの値に1を加算した値の入力を加算器120から受ける。また、AND回路116は、メモリアクセス要求がパイプライン101に投入されると、ACT_GO信号の入力を受ける。ACT_GO信号の入力を受けると、AND回路116は、RAAカウンターFF113から出力されたRAAカウンターの値に1を加算した値をOR回路117へ出力する。
【0036】
OR回路117は、RAAカウンターFF113から出力されたRAAカウンターの値からRAAIMTを減算した値の入力をAND回路115から受ける。また、OR回路117は、RAAカウンターFF113から出力されたRAAカウンターの値に1を加算した値の入力をAND回路116から受ける。以下では、RAAカウンターFF113から出力されたRAAカウンターの値を「RAA_CT」と呼ぶ。OR回路117は、RAA_CTに1を加算した値の入力又はRAA_CTからRAAIMTを減算した値の入力を受けると、入力された信号をRAAカウンターFF113へ出力する。
【0037】
RAAカウンターFF113は、メモリアクセス要求がパイプライン101に投入された場合、クロックの入力をクロック出力回路112から受ける。その場合、RAAカウンターFF113は、前回出力したRAA_CTに1を加算した値の入力をOR回路117から受ける。そして、RAAカウンターFF113は、入力されたクロックを用いて、前回出力したRAA_CTに1を加算した値をRAAカウンターの値として出力する。すなわち、新たなRAA_CTは、前回出力したRAA_CTに1を加算した値となる。
【0038】
RAAカウンターFF113は、リフレッシュコマンドがパイプライン101に投入された場合、クロックの入力をクロック出力回路112から受ける。その場合、RAAカウンターFF113は、前回出力したRAA_CTからRAAIMTを減算した値の入力をOR回路117から受ける。ただし、前回出力したRAA_CTがRAAIMT以下の場合、前回出力したRAA_CTからRAAIMTを減算した値は0である。そして、RAAカウンターFF113は、入力されたクロックを用いて、前回出力したRAA_CTからRAAIMTを減算した値をRAAカウンターの値として出力する。すなわち、新たなRAA_CTは、前回出力したRAA_CTにからRAAIMTを減算した値となる。このRAAカウンターFF113が、「カウンター」の一例にあたる。
【0039】
図3は、実施例1に係るRAAカウンターの遷移を示すタイムチャートである。
図3における行201及び行202は、ACTコマンドの宛先となるバンクグループ及びバンクアドレスを表す。そして、行203は、RAAカウンターの値を表す。ここでは、同一ランク内のバンク全てが管理対象であるので、バンクグループが1~7のバンクは、1つのリフレッシュマネジメント制御回路110の管理対象となる。
【0040】
図3では、バンクグループが0且つバンクアドレスが0を宛先としてACTコマンドが発行され、これによりRAAカウンターは1になる。次に、バンクグループが1且つバンクアドレスが0を宛先としてACTコマンドが発行され、これによりRAAカウンターは2になる。次に、バンクグループが0且つバンクアドレスが2を宛先としACTコマンドが発行され、これによりRAAカウンターは3になる。次に、バンクグループが7且つバンクアドレスが3を宛先としてACTコマンドが発行され、これによりRAAカウンターは4になる。以降、リフレッシュマネジメント制御回路110のRAAカウンターは、バンクグループ1~7のバンクに対してACTコマンドが発行されると、1つずつインクリメントされる。このように、本実施例に係るリフレッシュマネジメント制御回路110におけるRAAカウンターは、管理対象となるバンクのいずれに対してACTコマンドが発行された場合でも、1つずつ値が増える。
【0041】
図2に戻って説明を続ける。比較器118は、RAAカウンターFF113から出力されたRAA_CTの入力を受ける。そして、比較器118は、RAA_CTがRAAIMT以上か否かを判定する。RAA_CTがRAAIMT以上の場合、比較器118は、RFMコマンドの発行要求であるRFM_REQ信号を内部コマンド生成部103へ出力する。この比較器118が、「リフレッシュ要求部」の一例にあたる。
【0042】
図4は、RFM発行要求が出力される場合のRAAカウンターの遷移を示すタイムチャートである。
図4における行211及び行212は、ACTコマンドの宛先となるバンクグループ及びバンクアドレスを表す。また、行213は、RFMabが出力されるタイミングを表す。そして、行214は、RAAカウンターの値を表す。ここでは、同一ランク内のバンク全てが管理対象であるため、バンクグループが1~7のバンクは、1つのリフレッシュマネジメント制御回路110の管理対象である。
【0043】
図4では、RAAカウンターの値が「RAAIMT-3」の状態で、バンクグループが1且つバンクアドレスが0を宛先としてACTコマンドが発行され、これによりRAAカウンターは1つ増えて「RAAIMT-2」になる。次に、バンクグループが7且つバンクアドレスが3を宛先とACTコマンドが発行され、これによりRAAカウンターは1つ増えて「RAAIMT-1」になる。次に、バンクグループが0且つバンクアドレスが2を宛先としてACTコマンドが発行され、これによりRAAカウンターは1つ増えて「RAAIMT」となる。
【0044】
この時点で、RAAカウンターがRAAIMT以上になったので、RFMabがパイプライン101からメモリ2に出力される。
図4では、チェック記号である「V」がRFMabの出力を表す。そして、REF_GO信号がリフレッシュマネジメント制御回路110に入力され、RAAカウンターからRAAIMTが減算されて0になる。
【0045】
その後、バンクグループが1且つバンクアドレスが1を宛先としてACTコマンドが発行され、これによりRAAカウンターは1になる。以降、リフレッシュマネジメント制御回路110のRAAカウンターは、バンクグループ1~7のバンクに対してACTコマンドが発行されると、1つずつインクリメントされる。このように、本実施例に係るリフレッシュマネジメント制御回路110では、管理対象の各バンクに対して発行されたACTコマンドの総数がRAAIMT以上になるとRFMabが送られて、RAAカウンターからRAAIMTが減算される。
【0046】
すなわち、本実施例に係るリフレッシュマネジメント制御回路110には、管理対象とするグループに含まれる全てのバンクのACTコマンドが入力される。そのため、RAAカウンターは、対象のグループに含まれる全てのバンク宛ての全てのACTコマンドをカウントする。したがって、最も早くリフレッシュのタイミングとなる1つのバンク宛てに連続でACTコマンドが発行された場合でも、比較器118は、RFM_REQ信号を出力することができる。すなわち、求められるリフレッシュのタイミング以前にメモリ2の追加のリフレッシュを行うことができ、メモリ2の情報を確実に保持して、メモリ2の性能を維持することが可能となる。
【0047】
図2に戻って説明を続ける。比較器119は、RAAカウンターFF113から出力されたRAA_CTの入力を受ける。そして、比較器119は、RAA_CTがRAAMMT以上か否かを判定する。RAAMMTは、RAAIMTよりも大きな値である。RFMコマンドは、他の内部コマンドやメモリアクセスとの兼ね合いから、直ぐにパイプライン101に投入できるとはかぎらない。そのため、RFMコマンドが発行されないまま、ACTコマンドが発行され続けると、RAA_CTは、RAAMMTに達する場合がある。
【0048】
RAA_CTがRAAMMT以上の場合、比較器119は、ACT発行抑止要求であるACT_STOP信号をパイプライン101へ出力する。その後、RFM_REQ信号の入力を受けた内部コマンド生成部103によりREFab又はREFsbがパイプライン101へ投入されることで、RAA_CTからRAAIMTが減算されると、比較器119は、ACT_STOP信号の出力を停止する。これにより、メモリ2へのアクセスが再開される。この比較器119が、「停止処理部」の一例にあたる。
【0049】
このように、ACTコマンドの発行の抑制についても、対象のグループに含まれる全てのバンク宛ての全てのACTコマンドをカウントするRAAカウンターを用いて行うので、求められるタイミング以前に実行することが可能となる。
【0050】
加算器120は、RAAカウンターFF113から出力されたRAA_CTの入力を受ける。そして、加算器120は、RAA_CTに1を加算した値をAND回路116へ出力する。
【0051】
減算器121は、RAAカウンターFF113から出力されたRAA_CTの入力を受ける。そして、減算器121は、RAA_CTからRAAIMTを減算した値をAND回路115へ出力する。
【0052】
図5は、実施例1に係るリフレッシュマネジメントのフローチャートである。次に、
図5を参照して、本実施例に係るリフレッシュマネジメントの流れについて説明する。ここでは、RFMコマンドの発行によるリフレッシュについて、RAAカウンター減算までの流れを説明する。
【0053】
パイプライン101にメモリアクセス要求が入力される。そして、パイプライン101からメモリ2の管理対象のいずれかのバンク宛てにACTコマンドが発行される(ステップS1)。
【0054】
その後、リフレッシュマネジメント制御回路110はACTコマンドの発行通知の入力をパイプライン101から受ける(ステップS2)。ACTコマンドの発行を通知するACT_GO信号は、OR回路111及びOR回路114へ入力される。
【0055】
OR回路114は、ACT_GO信号の入力を受けて、イネーブル信号をクロック出力回路112に入力する。クロック出力回路112は、イネーブル信号の入力を受けて、クロックをRAAカウンターFF113に入力する(ステップS3)。
【0056】
また、OR回路114は、管理対象のいずれのバンク宛てのACTコマンドであっても、入力されたACT_GO信号をAND回路116へ出力する。AND回路116は、ACT_GO信号の入力を受けて、RAA_CTに1を加算した値を、OR回路117を介してRAAカウンターFF113へ出力する(ステップS4)。
【0057】
RAAカウンターFF113は、クロック出力回路112から入力されたクロックを用いて、AND回路116から入力された前回のRAA_CTに1を加算した値をRAA_CTとして出力する。比較器118は、RAAカウンターFF113から出力されたRAA_CTがRAAIMT以上かを判定する(ステップS5)。RAA_CTがRAAIMT未満の場合(ステップS5:否定)、リフレッシュマネジメント処理はステップS1へ戻る。
【0058】
これに対して、RAA_CTがRAAIMT以上の場合(ステップS5:肯定)、比較器118は、RFM発行要求を内部コマンド生成部103へ出力する(ステップS6)。
【0059】
RFM発行要求を受け付けた内部コマンド生成部103は、RFMコマンドをパイプライン101に投入する。その後、リフレッシュマネジメント制御回路110はRFMコマンドの発行通知の入力を受けたか否かを判定する(ステップS7)。ここで、RFMコマンドの発行を通知するREF_GO信号がOR回路111及びAND回路115に入力されたか否かにより、RFMコマンドの発行通知の入力を受けたか否かが判定される。
【0060】
RFMコマンドの発行通知の入力を受けていない場合(ステップS7:否定)、比較器119は、RAA_CTがRAAMMT以上か否かを判定する(ステップS8)。RAA_CTがRAAMMT未満の場合(ステップS8:否定)、リフレッシュマネジメント処理はステップS1へ戻る。
【0061】
これに対して、RAA_CTがRAAMMT以上の場合(ステップS8:肯定)、比較器119は、ACT抑止要求をパイプライン101へ出力する(ステップS9)。その後、リフレッシュマネジメント処理はステップS7へ戻る。
【0062】
これに対して、RFMコマンドの発行通知の入力を受けた場合(ステップS7:肯定)、すなわち、REF_GO信号がOR回路111及びAND回路115に入力された場合、以下の処理が行われる。OR回路114は、REF_GO信号の入力を受けて、イネーブル信号をクロック出力回路112に入力する。クロック出力回路112は、イネーブル信号の入力を受けて、クロックをRAAカウンターFF113に入力する(ステップS10)。
【0063】
AND回路115は、REF_GO信号の入力を受けて、RAA_CTからRAAIMTを減算した値を、OR回路117を介してRAAカウンターFF113へ出力する(ステップS11)。
【0064】
その後、比較器119は、RAAMMT未満の値を有するRAA_CTの入力を受けて、ACT抑止要求を出力中か否かを判定する(ステップS12)。ACT抑止要求を出力していない場合(ステップS12:否定)、比較器119は、出力の状態を維持する。これに対して、ACT抑止要求を出力中の場合(ステップS12:肯定)、比較器119は、ACT抑止要求を解除する(ステップS13)。
【0065】
以上で、
図5のフローにおける処理は終了するが、実際には、その後に処理はステップS1に戻って、同様のリフレッシュマネジメント処理が繰り返される。
【0066】
以上のような構成でリフレッシュマネジメントを制御することで、例えば、同一ランク内のRAAカウンターを1つにまとめた場合、配備するFFの数はランクあたり9ビットとなり、16ランクであれば、9×16=144ビットとなる。したがって、バンク毎にRAAカウンターを設けた場合の1/32の物量に抑えることができる。
【0067】
以上に説明したように、本実施例に係るメモリアクセスコントローラは、複数のバンクを管理対象としてRAAカウンターを1つ用いて、追加のリフレッシュコマンドの発行を制御する。具体的には、メモリアクセスコントローラは、管理対象のバンクに発行されたACTコマンドの総数を用いてRAAカウンターでカウントを行い、追加のリフレッシュコマンドを発行させる。これにより、リフレッシュマネジメントを制御する回路の物量を削減できる。その結果、メモリアクセスコントローラの消費電力も削減することが可能となる。
【実施例2】
【0068】
図6は、実施例2に係るリフレッシュマネジメント制御部の詳細を表す回路図である。実施例1で説明した構成の場合、RAAカウンターの値が同一ランク内の各バンクに発行したACTコマンドの合計になるため、バンク個別のACTコマンド発行数よりも多くなる場合がある。その場合、RMFコマンドが過剰に発行される可能性や、RAAカウンターがRAAMMTを超えてACTコマンドが発行できなくなる可能性も大きくなる。RMFコマンドの頻繁な発行や、ACTコマンドが発行できなくなることで、リードコマンドやライトコマンドの発行が阻害され、メモリ2を用いた処理の処理性能が低下するおそれがある。そこで、本実施例に係るメモリアクセスコントローラ1は、一度RAAカウンターをインクリメントしたら、一定期間RAAカウンターのインクインクリメントを行わないことが実施例1と異なる。以下の説明では、実施例1と同様の各部の動作については説明を省略する場合がある。
【0069】
本実施例に係るリフレッシュマネジメント制御回路110は、実施例1の各部に加えて、AND回路122、OR回路123、クロック出力回路124、マスクカウンターFF125、OR回路126及びAND回路127を有する。さらに、リフレッシュマネジメント制御回路110は、加算器128、比較器129及び比較器130を有する。これらのAND回路122~比較器130が「カウント停止部」の一例にあたる。
【0070】
OR回路114は、メモリアクセス要求がパイプライン101に投入されると、そのメモリアクセス要求で指定されたバンクが管理対象のバンクであれば、管理対象のバンクに対するACTコマンドが発行されたことを通知するACT_GO信号の入力を受ける。そして、OR回路114は、信号をAND回路122へ出力する。
【0071】
AND回路122は、OR回路114とAND回路116との間に配置される。AND回路122は、OR回路114からの出力信号及び比較器130からの出力信号を反転させた信号の入力を受ける。以下では、比較器130からの出力信号を反転させた信号を単に比較器130からの反転信号と呼ぶ。そして、AND回路122は、比較器130から信号の入力を受けている場合、ACT_GO信号に基づく信号をAND回路116へ出力する。後述するように、比較器130はマスクカウンターの値が0以外の場合、すなわちマスクを行う場合に信号を出力する。すなわち、マスクされていない場合に、AND回路122は、比較器130からの反転信号の入力を受ける。したがって、マスクされていない場合に、AND回路122は、OR回路114から入力された信号をAND回路116へ出力する。
【0072】
OR回路111は、REF_GO信号の入力を受けると、信号をクロック出力回路112へ出力する。また、OR回路111は、マスクされていない場合、AND回路122からACT_GO信号に基づく信号の入力を受けて、入力された信号をクロック出力回路112へ出力する。
【0073】
クロック出力回路112、RAAカウンターFF113、AND回路115、OR回路117、比較器118、比較器119、加算器120及び減算器121の動作は実施例1と同様である。すなわち、これらの回路は、AND回路122からACT_GO信号に基づく信号が出力されると、RAAカウンターの値がRAAIMT未満であればRAAカウンターを1つインクリメントする。そして、RAAカウンターの値がRAAIMT以上であれば、これらの回路は、RFMコマンドの生成を内部コマンド生成部103に要求する。さらに、これらの回路は、RAAカウンターがRAAMMT以上になるとパイプライン101に対してACTコマンドの発行を停止させる。そして、RFMコマンドが発行されると、これらの回路は、RAAカウンターからRAAIMTを減算する。
【0074】
OR回路123は、REF_GO信号の入力を受ける。また、OR回路123は、比較器130からの出力信号の入力を受ける。すなわち、OR回路123は、マスクされていない場合、AND回路122からACT_GO信号に基づく信号の入力を受ける。また、OR回路123は、マスクカウンターFF125が0以外の場合、すなわちマスクを行う場合、比較器130から出力された信号の入力を受ける。いずれかの信号の入力を受けると、OR回路123は、信号をクロック出力回路124へ出力する。すなわち、マスクを行う場合に、OR回路123は、信号を出し続ける。また、マスクを行わない場合で、ACTコマンドが発行されると、OR回路123は、信号を出力する。また、リフレッシュコマンドがパイプライン101から発行された場合、OR回路123は、信号を出力する。
【0075】
クロック出力回路124は、発振器などからクロックの入力を受ける。そして、クロック出力回路124は、OR回路123からの信号の入力を受けると、有効となってクロックをマスクカウンターFF125へ出力する。すなわち、クロック出力回路124は、マスクを行う場合、マスクを行わない場合で且つACTコマンドが発行された場合、及び、リフレッシュコマンドが発行された場合に、クロックを出力する。
【0076】
OR回路126は、REF_GO信号の入力を受けて、信号のAND回路127へ出力する。また、OR回路126は、比較器129からの出力信号の入力を受ける。ここで、後述するように、比較器129は、マスク解除のタイミングで信号を出力し、それ以外の期間に信号を出力しない。すなわち、OR回路126は、マスク解除のタイミングで信号の入力を比較器129から受ける。そして、OR回路126は、REF_GO信号の入力又はマスク解除のタイミングでの比較器129からの信号の入力を受けた場合、信号をAND回路127へ出力する。
【0077】
AND回路127は、OR回路126からの出力信号を反転した信号の入力を受ける。すなわち、AND回路127は、リフレッシュコマンドが発行された場合及びマスク解除のタイミングで、OR回路126からの信号の入力が止まる。以下では、OR回路123からの出力信号を反転した信号を、OR回路123からの反転信号と呼ぶ。また、AND回路127は、前回出力されたマスクカウンターの値に1を加算した値の入力を加算器128から受ける。そして、AND回路127は、OR回路126からの反転信号の入力を受けている場合、前回出力されたマスクカウンターの値に1を加算した値をマスクカウンターFF125へ出力する。言い換えれば、リフレッシュコマンドが発行された場合及びマスク解除のタイミングで、AND回路127は、マスクカウンターFF125への信号出力を停止する。
【0078】
マスクカウンターFF125は、クロックの入力をクロック出力回路124から受ける。また、マスクカウンターFF125は、リフレッシュコマンドが発行された場合又はマスク解除のタイミング以外であれば、前回に出力したマスクカウンターの値の入力をAND回路127から受ける。そして、マスクカウンターFF125は、AND回路127から入力された値をクロックにしたがって出力する。これに対して、リフレッシュコマンドが発行された場合及びマスク解除のタイミングであれば、マスクカウンターFF125は、AND回路127から信号の入力を受けないため、マスクカウンターの値として0を出力する。すなわち、マスクカウンターFF125は、このタイミングでマスクカウンターを0に初期化する。以下では、マスクカウンターFF125から出力されたマスクカウンターの値を「MASK_CT」と表す。
【0079】
加算器128は、マスクカウンターFF125から出力されたMASK_CTの入力を受ける。そして、加算器128は、入力されたMASK_CTに1を加算した値をAND回路127へ出力する。
【0080】
比較器129は、マスクカウンターFF125から出力されたMASK_CTの入力を受ける。そして、比較器129は、入力されたMASK_CTとtRCとを比較する。ここで、tRCは、RAS(Row Address Select) Cycle timeである。tRCはRow Addressを選択するACTコマンドの発行間隔を示す。すなわち、1つのバンクに対してACTコマンドが発行された後、同じバンクに対してはtRCの期間はACTコマンドが発行されない。tRCの最小値はJEDECで規定されている。MASK_CTがtRCでなければ、比較器129は、信号を出力しない。そして、MASK_CTがtRCに達すると、比較器129は、信号を出力する。この場合、MASK_CTがtRCに達したタイミングが、tRCをマスク解除のタイミングとなる。このtRCが、「所定期間」の一例にあたる。
【0081】
比較器130は、マスクカウンターFF125から出力されたMASK_CTの入力を受ける。そして、比較器130は、入力されたMASK_CTが0か否かを判定する。MASK_CTが0以外の場合、比較器130は、信号を出力する。これに対して、MASK_CTが0の場合、比較器130は、信号を出力しない。すなわち、比較器130は、マスクカウンターが初期化されると信号の出力を停止し、その後ACTコマンドの発行を受けてカウントアップが始まると次に初期化が行われるまで信号を出力する。
【0082】
図7は、実施例2に係るRAAカウンターの遷移を示すタイムチャートである。次に、
図7を参照して、本実施例に係るRAAカウンターの遷移について説明する。ここでは、同一ランク内のバンク全てが管理対象であるため、バンクグループが1~7のバンクは、1つのリフレッシュマネジメント制御回路110の管理対象である。
【0083】
図7における行221及び行222は、ACTコマンドで指定されたバンクグループ及びバンクアドレスを示す。また、行223は、RAAカウンターの値を示す。さらに、行224は、マスクの状態を表す。
【0084】
RAAカウンターが0の状態で、バンクグループが0且つバンクアドレスが0を宛先としてACTコマンドが発行され、これによりRAAカウンターは1になる。このタイミングで、行224に示すようにマスクカウンターがtRCに達するまでのマスクが開始される。次に、バンクグループが1且つバンクアドレスが0を宛先としてACTコマンドが発行される。しかし、この場合、マスクが行われており信号がAND回路116に入力されず、結果的にRAAカウンターFF113に信号が入力されないため、RAAカウンターは増えずに1の値を維持する。この後、宛先をバンクグループが0且つバンクアドレスが2とするACTコマンド、バンクグループが7且つバンクアドレスが3を宛先としてACTコマンドが順次発行されるが、RAAカウンターは1の値を維持する。そして、バンクグループが1且つバンクアドレスが1を宛先としてACTコマンドが発行されたタイミングで、マスクカウンターがtRCに達しマスクが解除される。そして、次のバンクグループが0且つバンクアドレスが3を宛先とするACTコマンドが発行されると、RAAカウンターは1つ増えて2になる。このタイミングで、再度、行224に示すようにマスクカウンターがtRCに達するまでのマスクが開始される。このように、管理対象のバンクに対してACTコマンドが発行されても、マスクが行われている期間は、RAAカウンターは増えず、マスクが解除されたタイミングで増加する。
【0085】
図8は、実施例2に係るRFM発行要求が出力される場合のRAAカウンターの遷移を示すタイムチャートである。次に、
図8を参照して、パイプライン101に対してRFM発行要求を行った場合のRAAカウンターの遷移について説明する。ここでは、同一ランク内のバンク全てが管理対象であるため、バンクグループが1~7のバンクは、1つのリフレッシュマネジメント制御回路110の管理対象である。
【0086】
図8における行231及び行232は、発行されたACTコマンドの宛先のバンクグループ及びバンクアドレスを表す。また、行223は、RFMabの発行タイミングを表す。また、行234は、RAAカウンターの値を表す。また、行235は、マスクの状態を表す。
【0087】
図8では、RAAカウンターの値が「RAAIMT-1」の状態で、バンクグループが7且つバンクアドレスが2を宛先としてACTコマンドが発行され、これによりRAAカウンターは1つ増えて「RAAIMT」に達する。この時点で、RAAカウンターがRAAIMT以上になったので、RFM発行要求がパイプライン101へ出力される。そして、パイプライン101は、RFMabをメモリ2へ出力する。
図8では、チェック記号である「V」がRFMabの出力を表す。そして、REF_GO信号がリフレッシュマネジメント制御回路110に入力され、RAAカウンターからRAAIMTが減算されて0になる。
【0088】
その後、バンクグループが7且つバンクアドレスが4を宛先としてACTコマンドが発行され、これによりRAAカウンターは1になる。このタイミングで、行235に示すようにマスクカウンターがtRCに達するまでのマスクが開始される。そして、ACT_GO信号がリフレッシュマネジメント制御回路110に順次入力され、マスクカウンターがtRCに達するとマスクが解除される。その後、宛先をバンクグループが4且つバンクアドレスが3とするACTコマンドが発行され、これによりRAAカウンターは2になる。このタイミングで、再度、行235に示すようにマスクカウンターがtRCに達するまでのマスクが開始される。
【0089】
以降、リフレッシュマネジメント制御回路110のRAAカウンターは、バンクグループ1~7のバンクに対してACTコマンドが発行されると、tRCのマスクが解除されるたびに、1つずつインクリメントされる。このように、本実施例に係るリフレッシュマネジメント制御回路110では、管理対象の各バンクに対してACTコマンドが発行されると一定期間マスクが施されてACTコマンドの入力がカウントされず、マスク解除後にACTコマンドを1つ増やすことが繰り返される。そして、総数がRAAIMT以上になるとRFMabが送られて、RAAカウンターからRAAIMTが減算される。
【0090】
すなわち、本実施例に係るリフレッシュマネジメント制御回路110では、管理対象のバンクのいずれかにACTコマンドが入力されRAAカウンターがインクリメントされた後、tRC期間カウントを行わずに待機する。このようにRAAカウンターによるカウントを抑制することで、RAAカウンターが過剰にカウントアップされることを回避できる。また、tRCは1つのバンクに対してACTコマンドが発行された後、同じバンクに対してACTコマンドが発行されない期間であることから、この期間内に他のバンクに対して2つ以上のACTコマンドが発行されることはない。したがって、あるバンクにACTコマンドが発行され、RAAカウンターがインクリメントされた後、tRCの期間は同一バンクにACTコマンドは発行されず、他のバンク宛てのACTコマンドの発行数は高々1である。したがって、本実施例に係るRAAカウンターがRAAIMTに達した場合に、RAAIMTを超える数のACTコマンドを受け取ったバンクは存在せず、適切なリフレッシュが行われているといえる。
【0091】
図9Aは、実施例2に係るリフレッシュマネジメントの第1のフローチャートである。
図9Bは、実施例2に係るリフレッシュマネジメントの第1のフローチャートである。次に、
図9A及び9Bを参照して、本実施例に係るリフレッシュマネジメントの流れについて説明する。ここでは、RFMコマンドの発行によるリフレッシュについて、RAAカウンター減算までの流れを説明する。RAAカウンターとマスクカウンターとは並列に動作するので、それぞれのカウンターについての処理の流れを分けて説明する。最初に、
図9Aを参照して、RAAカウンターを用いた処理の流れについて説明する。
【0092】
パイプライン101にメモリアクセス要求が入力される。そして、パイプライン101からメモリ2の管理対象のいずれかのバンク宛てにACTコマンドが発行される(ステップS101)。
【0093】
その後、リフレッシュマネジメント制御回路110はACTコマンドの発行通知の入力をパイプライン101から受ける(ステップS102)。
【0094】
AND回路122は、マスクが有効か否かを比較器130からの反転信号で判定する(ステップS103)。マスクが有効な場合(ステップS103:肯定)、リフレッシュマネジメントの処理は、ステップS101へ戻る。
【0095】
これに対して、マスクが無効な場合(ステップS103:否定)、RAAカウンターFF113及びマスクカウンターFF125にクロックが入力される(ステップS104)。
【0096】
また、OR回路114は、管理対象のいずれのバンク宛てのACTコマンドであっても、入力されたACT_GO信号をAND回路116へ出力する。AND回路116は、ACT_GO信号の入力を受けて、RAA_CTに1を加算した値を、OR回路117を介してRAAカウンターFF113へ出力する(ステップS105)。
【0097】
RAAカウンターFF113は、クロック出力回路112から入力されたクロックを用いて、AND回路116から入力された前回のRAA_CTに1を加算した値をRAA_CTとして出力する。比較器118は、RAAカウンターFF113から出力されたRAA_CTがRAAIMT以上かを判定する(ステップS106)。RAA_CTがRAAIMT未満の場合(ステップS106:否定)、リフレッシュマネジメントの処理は、ステップS101へ進む。
【0098】
これに対して、RAA_CTがRAAIMT以上の場合(ステップS106:肯定)、比較器118は、RFM発行要求を内部コマンド生成部103へ出力する(ステップS107)。
【0099】
RFM発行要求を受け付けた内部コマンド生成部103は、RFMコマンドをパイプライン101に投入する。その後、リフレッシュマネジメント制御回路110はRFMコマンドの発行通知の入力を受けたか否かを判定する(ステップS108)。ここで、RFMコマンドの発行を通知するREF_GO信号がOR回路111及びAND回路115に入力されたか否かにより、RFMコマンドの発行通知の入力を受けたか否かが判定される。
【0100】
RFMコマンドの発行通知の入力を受けていない場合(ステップS108:否定)、比較器119は、RAA_CTがRAAMMT以上か否かを判定する(ステップS109)。RAA_CTがRAAMMT未満の場合(ステップS109:否定)、リフレッシュマネジメント処理はステップS101へ戻る。
【0101】
これに対して、RAA_CTがRAAMMT以上の場合(ステップS109:肯定)、比較器119は、ACT抑止要求をパイプライン101へ出力する(ステップS110)。その後、リフレッシュマネジメント処理はステップS101へ戻る。
【0102】
これに対して、RFMコマンドの発行通知の入力を受けた場合(ステップS108:肯定)、すなわち、REF_GO信号がOR回路111及びAND回路115に入力された場合、以下の処理が行われる。OR回路114は、REF_GO信号の入力を受けて、イネーブル信号をクロック出力回路112に入力する。クロック出力回路112は、イネーブル信号の入力を受けて、クロックをRAAカウンターFF113に入力する(ステップS111)。
【0103】
AND回路115は、REF_GO信号の入力を受けて、RAA_CTからRAAIMTを減算した値を、OR回路117を介してRAAカウンターFF113へ出力する(ステップS112)。
【0104】
その後、比較器119は、RAAIMT未満の値を有するRAA_CTの入力を受けて、ACT抑止要求を出力中か否かを判定する(ステップS113)。ACT抑止要求を出力していない場合(ステップS113:否定)、比較器119は、出力の状態を維持する。これに対して、ACT抑止要求を出力中の場合(ステップS113:肯定)、比較器119は、ACT抑止要求を解除する(ステップS114)。
【0105】
以上で、
図9Aのフローにおける処理は終了するが、実際には、その後に処理はステップS101に戻って、同様のリフレッシュマネジメント処理が繰り返される。また、次に、
図9Bを参照して、マスクカウンターを用いた処理の流れについて説明する。
【0106】
パイプライン101にメモリアクセス要求が入力される。そして、パイプライン101からメモリ2の管理対象のいずれかのバンク宛てにACTコマンドが発行される(ステップS121)。
【0107】
その後、リフレッシュマネジメント制御回路110はACTコマンドの発行通知の入力をパイプライン101から受ける(ステップS122)。
【0108】
OR回路123は、ACT_GO信号の入力を受けて、クロック出力回路124へ信号を出力する。クロック出力回路124は、クロックをマスクカウンターFF125へ出力する。この時、OR回路126は、REF_GO信号の入力も比較器129からの信号の入力も受けていないので、信号は出力しない。そこで、AND回路127は、OR回路126からの反転信号の入力を受ける。さらに、AND回路127は、マスクカウンターFF125から出力されるリセットされて0となったマスクカウンターの値に対する1の信号の入力を受ける。そして、AND回路127は、前回のマスクカウンターFF125から出力であるリセット状態のマスクカウンターの値に1が加算された値をマスクカウンターFF125へ出力する。マスクカウンターFF125は、AND回路127からの入力を次のMASK_CTとする。すなわち、マスクカウンターFF125は、MASK_CT+1を次のMASK_CTとする(ステップS123)。そして、マスクカウンターFF125は、MASK_CTを出力する。
【0109】
比較器129は、MASK_CTがtRCに達したか否かを判定する(ステップS124)。MASK_CTがtRCに達していない場合(ステップS124:否定)、比較器129は、信号を出力しない。そして、比較器130は、MASK_CTが0以外か否かを判定する(ステップS125)。MASK_CTが0の場合(ステップS125:否定)、リフレッシュマネジメント処理は、ステップS128へ進む。
【0110】
これに対して、MASK_CTが0以外の場合(ステップS125:肯定)、比較器130は、信号を出力する。この場合、AND回路122は、比較器130からの反転信号の入力を受けない。すなわち、比較器130は、マスクを有効にする(ステップS126)。その後、リフレッシュマネジメント処理は、ステップS123へ戻る。
【0111】
一方、MASK_CTがtRCに達した場合(ステップS124:肯定)、比較器129は、信号をOR回路126へ出力する。OR回路126は、AND回路127へ信号を出力する。これにより、AND回路127にOR回路126の反転信号が入力されなくなり、AND回路127は、信号の出力を停止する。AND回路127からの信号の入力が途絶えると、マスクカウンターFF125は、MASK_CTとして0を出力する。すなわち、マスクカウンターFF125は、マスクカウンターをリセットする(ステップS127)。MASK_CTが0にされると、リフレッシュマネジメント処理は、ステップS128へ進む。
【0112】
比較器130は、MASK_CTが0であることから、信号の出力を停止する。この場合、AND回路122は、比較器130からの反転信号の入力を受ける。すなわち、比較器130は、マスクを解除にする(ステップS128)。
【0113】
以上で、
図9Bのフローにおける処理は終了するが、実際には、その後に処理はステップS121に戻って、同様のリフレッシュマネジメント処理が繰り返される。
【0114】
以上のような構成でリフレッシュマネジメントを制御することで、RAAカウンターのカウント回数を低減することができる。例えば、現時点で使用化されているtRCの最大値はDDR5-6400Cの159サイクルであり、マスクカウンターのビット幅は8ビットとすることができる。その場合、用いるフリップフロップの数は、ランクあたり8+9=17ビットであり、16ランクであれば、用いるフリップフロップの数は、17×16=272ビットとなる。したがって、バンク毎にRAAカウンターを設けた場合の1/17程度の物量に抑えることができる。
【0115】
以上に説明したように、本実施例に係るメモリアクセスコントローラは、複数のバンクを管理対象としてRAAカウンターを1つにまとめたうえで、RAAカウンターの過剰なカウントを回避しつつ、追加のリフレッシュコマンドの発行を制御する。具体的には、あるバンクへのACTコマンド送信によりRAAカウンターをインクリメントした場合、その後、そのバンクに対するACTコマンド送信が認められるまでRAAカウンターのインクリメントを抑制する。これにより、追加のリフレッシュコマンドの過剰な発行をより抑えつつ、リフレッシュマネジメントを制御する回路の物量を削減できる。その結果、メモリアクセスコントローラの消費電力も削減することが可能となる。
【0116】
(情報処理装置)
図10は、情報処理装置のハードウェア構成図である。以上の各実施例で説明したメモリアクセスコントローラ1は、
図10に示すような情報処理装置90に搭載可能である。
【0117】
情報処理装置90は、メモリアクセスコントローラ1を有するCPU91、メモリ2、記憶装置92及び通信モジュール93を有する。CPU91は、メモリアクセスコントローラ1を介してメモリ2を制御する。また、CPU91は、記憶装置92及び通信モジュール93とバスで接続される。CPU91は、記憶装置92に格納されたプログラムなどを読み出して、メモリ2に展開して実行することで各種アプリケーションを動作させる。CPU91は、メモリアクセスコントローラ1を介してメモリ2に対するデータの読み書きを行いつつ各種アプリケーションを動作させることができる。
【0118】
また、以上の説明では電子回路を用いてメモリアクセスコントローラ1を実現したが、これに限らず、例えばプログラムをプロセッサにより動作させてメモリアクセスコントローラ1の各処理を実現してもよい。
【符号の説明】
【0119】
1 メモリアクセスコントローラ
2 メモリ
10 パイプライン管理部
20 リクエストキュー
30 ライトデータキュー
40 リードデータキュー
101 パイプライン
102 リフレッシュマネジメント制御部
103 内部コマンド生成部
110 リフレッシュマネジメント制御回路
111 OR回路
112,124 クロック出力回路
113 RAAカウンターFF
114,117,123,126 OR回路
115,116,122,127 AND回路
118,119,129,130 比較器
120,128 加算器
121 減算器
125 マスクカウンターFF