(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-05
(45)【発行日】2024-01-16
(54)【発明の名称】メモリコントローラ、メモリコントローラで実施される方法および装置
(51)【国際特許分類】
G06F 12/06 20060101AFI20240109BHJP
【FI】
G06F12/06 550A
(21)【出願番号】P 2019203509
(22)【出願日】2019-11-08
【審査請求日】2022-11-08
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】白石 大介
(72)【発明者】
【氏名】伊藤 元久
【審査官】田中 啓介
(56)【参考文献】
【文献】特開2014-154119(JP,A)
【文献】特開2010-003067(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/00-12/06
G06F13/16-13/18
G11C11/401-11/4099
G11C11/56
(57)【特許請求の範囲】
【請求項1】
DRAMに接続されたメモリコントローラであって、
前記DRAMに対するメモリアクセス要求を格納する格納手段と、
前記格納手段に格納されているメモリアクセス要求の発行順を所定の基準に基づいて決定する決定手段と、
前記決定手段により決定された発行順に基づき前記DRAMへコマンドを発行する発行手段と、
前記発行手段が第一メモリアクセス要求のコマンドを前記DRAMへ発行する際に、前記第一メモリアクセス要求の次に同じバンクにコマンドを発行する第二メモリアクセス要求を、前記所定の基準に基づき決定された発行順にしたがって選択し、前記第一メモリアクセス要求と前記第二メモリアクセス要求とが同じページを対象とするか否かを判定
し、前記第一メモリアクセス要求の次に同じバンクにコマンドを発行するメモリアクセス要求がなかった場合、予め決められているページ制御に基づいて比較結果を出力する判定手段と、を備え、
前記発行手段は、前記判定手段が同じページを対象とすると判定した場合、オートプリチャージなしで前記第一メモリアクセス要求のコマンドを発行するメモリコントローラ。
【請求項2】
前記所定の基準は、メモリアクセス要求の優先順位および前記DRAMの状態のうちの少なくともひとつを含む請求項1に記載のメモリコントローラ。
【請求項3】
前記決定手段は、少なくとも前記DRAMの状態に基づいて発行順を決定し、
前記DRAMの状態は、
(1)決定対象のメモリアクセス要求に対応するコマンドの種別と、直前に発行されたコマンドの種別と、の異同、
(2)決定対象のメモリアクセス要求が対象とするバンクがリフレッシュ動作中であるか否か、
(3)決定対象のメモリアクセス要求が対象とするページがオープンか否か、
のうちの少なくともひとつを含む請求項2に記載のメモリコントローラ。
【請求項4】
前記判定手段は、前記第一メモリアクセス要求が対象とするバンクと同じバンクを対象とする複数のメモリアクセス要求が前記格納手段に格納されている場合、当該格納されている複数のメモリアクセス要求のなかから、前記第二メモリアクセス要求を前記所定の基準に基づき決定された発行順にしたがって選択する請求項1から3のいずれか一項に記載のメモリコントローラ。
【請求項5】
前記発行手段は、前記判定手段が同じページを対象としないと判定した場合、オートプリチャージ付きで前記第一メモリアクセス要求のコマンドを発行する請求項1から4のいずれか一項に記載のメモリコントローラ。
【請求項6】
オートプリチャージ付きのコマンドは、リードオートプリチャージまたはライトオートプリチャージである請求項5に記載のメモリコントローラ。
【請求項7】
前記決定手段は、前記判定手段における判定とは独立して発行順を決定する請求項1から6のいずれか一項に記載のメモリコントローラ。
【請求項8】
前記格納手段は、それぞれがメモリアクセス要求を格納するよう構成された複数のエントリを含み、
前記格納手段は、任意のエントリからメモリアクセス要求を読み出し可能に構成される請求項1から7のいずれか一項に記載のメモリコントローラ。
【請求項9】
前記決定手段により決定された発行順は、前記格納手段へのメモリアクセス要求の登録順とは異なる請求項1から8のいずれか一項に記載のメモリコントローラ。
【請求項10】
DRAMに接続されたメモリコントローラで実施される方法であって、前記メモリコントローラは前記DRAMに対するメモリアクセス要求を格納する格納手段を備え、前記方法は、
前記格納手段に格納されているメモリアクセス要求の発行順を所定の基準に基づいて決定することと、
決定された発行順に基づき前記DRAMへコマンドを発行することと、
第一メモリアクセス要求のコマンドを前記DRAMへ発行する際に、前記第一メモリアクセス要求の次に同じバンクにコマンドを発行する第二メモリアクセス要求を、前記所定の基準に基づき決定された発行順にしたがって選択し、前記第一メモリアクセス要求と前記第二メモリアクセス要求とが同じページを対象とするか否かを判定
し、前記第一メモリアクセス要求の次に同じバンクにコマンドを発行するメモリアクセス要求がなかった場合、予め決められているページ制御に基づいて比較結果を出力することと、を含み、
前記発行することは、同じページを対象とすると判定された場合、オートプリチャージなしで前記第一メモリアクセス要求のコマンドを発行することを含む方法。
【請求項11】
DRAMと、
前記DRAMに接続されたメモリコントローラと、を備え、
前記メモリコントローラは、
前記DRAMに対するメモリアクセス要求を格納する格納手段と、
前記格納手段に格納されているメモリアクセス要求の発行順を所定の基準に基づいて決定する決定手段と、
前記決定手段により決定された発行順に基づき前記DRAMへコマンドを発行する発行手段と、
前記発行手段が第一メモリアクセス要求のコマンドを前記DRAMへ発行する際に、前記第一メモリアクセス要求の次に同じバンクにコマンドを発行する第二メモリアクセス要求を、前記所定の基準に基づき決定された発行順にしたがって選択し、前記第一メモリアクセス要求と前記第二メモリアクセス要求とが同じページを対象とするか否かを判定
し、前記第一メモリアクセス要求の次に同じバンクにコマンドを発行するメモリアクセス要求がなかった場合、予め決められているページ制御に基づいて比較結果を出力する判定手段と、を備え、
前記発行手段は、前記判定手段が同じページを対象とすると判定した場合、オートプリチャージなしで前記第一メモリアクセス要求のコマンドを発行する装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリコントローラ、メモリコントローラで実施される方法および装置に関する。
【背景技術】
【0002】
コンピュータシステムの主記憶装置として、一般的にDRAM(Dynamic Random Access Memory)が使用されている。コンピュータシステムの高機能化、高性能化に伴い、DRAMに対する性能要求は高まっており、その性能を最大限に引き出すために様々なメモリコントローラが提案されている。
【0003】
DRAMの複数バンクへのメモリアクセスを独立に制御する場合に、複数のコマンドの発行タイミングが重なることがある。複数のコマンドを同時に発行することはできないため、いずれかのコマンド発行を遅らせる必要があり、メモリ利用効率が低下する要因となる。これに対して、アクセスしたページをメモリアクセス後にプリチャージするオートプリチャージ付きリードライトコマンドを利用することでコマンド発行数を少なくし、複数コマンドの発行タイミングが重なる蓋然性を減少させる工夫がなされている。
【0004】
特許文献1では、現在のメモリアクセスと次のメモリアクセスがアクセスするページを比較し、ページが異なる場合はオートプリチャージ付きリードライトコマンドを発行する。一方、ページが同じ場合はオートプリチャージなしでリードライトコマンドを発行する。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
近年、メモリコントローラは、バスから受信したメモリアクセス要求をメモリアクセス要求の優先順位やDRAM状態に基づいて並び替えるリオーダ機能によって、メモリ利用効率の向上、および、レイテンシ削減を実現している。
【0007】
特許文献1に示される手法によると、現在のメモリアクセスとその次にバスから受信したメモリアクセスとがアクセスするページを比較しており、リオーダ機能によるメモリアクセス要求の並び替えは考慮されていない。そのため、リオーダ機能によりメモリアクセス要求が並び替えられた場合に、後続に同じページへのメモリアクセスがあるにも関わらずオートプリチャージ付きリードライトコマンドを発行することがある。同様に、後続に異なるページへのメモリアクセスがあるにも関わらずオートプリチャージなしでリードライトを発行することがある。このように、メモリ利用効率が低下するおそれがある。
【0008】
本発明はこうした課題に鑑みてなされたものであり、その目的は、リオーダ機能を実装するメモリコントローラにおいてメモリ利用効率を高めることができる技術の提供にある。
【課題を解決するための手段】
【0009】
本発明のある態様はメモリコントローラに関する。このメモリコントローラは、DRAMに接続されたメモリコントローラであって、DRAMに対するメモリアクセス要求を格納する格納手段と、格納手段に格納されているメモリアクセス要求の発行順を所定の基準に基づいて決定する決定手段と、決定手段により決定された発行順に基づきDRAMへコマンドを発行する発行手段と、発行手段が第一メモリアクセス要求のコマンドをDRAMへ発行する際に、第一メモリアクセス要求の次に同じバンクにコマンドを発行する第二メモリアクセス要求を、所定の基準に基づき決定された発行順にしたがって選択し、第一メモリアクセス要求と第二メモリアクセス要求とが同じページを対象とするか否かを判定し、前記第一メモリアクセス要求の次に同じバンクにコマンドを発行するメモリアクセス要求がなかった場合、予め決められているページ制御に基づいて比較結果を出力する判定手段と、を備える。発行手段は、判定手段が同じページを対象とすると判定した場合、オートプリチャージなしで第一メモリアクセス要求のコマンドを発行する。
【発明の効果】
【0010】
本発明によれば、リオーダ機能を実装するメモリコントローラにおいてメモリ利用効率を高めることができる。
【図面の簡単な説明】
【0011】
【
図1】実施の形態に係るメモリコントローラを備える画像処理装置のハードウエア構成を示す図。
【
図2】
図1のメモリコントローラおよびそれに接続される部材の機能および構成を示すブロック図。
【
図3】
図2のメモリアクセス要求格納部を構成するエントリを示すデータ構造図。
【
図4】本実施の形態における格納部制御信号の構成図。
【
図5】
図2のメモリアクセス要求発行順決定部の機能および構成を示すブロック図。
【
図6】
図2のページ判定部におけるページ判定アルゴリズムを示すフローチャート。
【発明を実施するための形態】
【0012】
以下、添付図面を参照して実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る発明を限定するものではない。実施の形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。また、以下に示す実施の形態は、特に限定する場合を除き、ハードウエア上に実装しても、あるいはソフトウエアで実装しても構わない。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0013】
実施の形態では、DRAMのメモリコントローラにおいて、リオーダ機能によりメモリアクセス要求が並び替えられた場合であっても、並び替え後の実際のメモリアクセス要求の発行順に基づいて、同じバンクに次にアクセスするメモリアクセス要求とページを比較し、リードライトコマンドのオートプリチャージを制御する。これにより、不要なオートプリチャージを抑制することができ、メモリの利用効率を高めることができる。
【0014】
図1は、実施の形態に係るメモリコントローラ100を備える画像処理装置200のハードウエア構成を示す図である。画像処理装置200は例えばスマートフォンなどの小型電子機器である。画像処理装置200は、被写体を撮像し、リアルタイムでモニタに表示させる機能を有する。なお、以下では実施の形態に係るメモリコントローラ100が画像処理装置200に搭載される場合について説明する。しかしながら、当該メモリコントローラ100はデジタルカメラ等などの電子機器一般に広く搭載されうることは、本明細書に触れた当業者には明らかである。
【0015】
画像処理装置200は、少なくとも、撮像部201と、DRAM110と、画像処理部202と、システムバス204と、メモリコントローラ100と、表示部205と、バスマスタ120と、を備える。
【0016】
撮像部201は、被写体を撮像することで被写体の撮像画像を取得する。本実施の形態における撮像部201は、静止画像だけでなく、動画像を取得可能であり、所定の撮像タイミングで、動画像を構成する各フレーム画像を出力する。画像処理部202は、撮像部201で取得された画像に対して所望の画像処理を行う。画像処理は、輝度補正やガンマ補正などの一般的なものであり、詳細な説明は省略する。
【0017】
DRAM110は、撮像部201で取得された撮像画像や画像処理部202で画像処理された撮像画像を一時的に記憶するワークメモリとして利用される同期型メモリである。メモリコントローラ100は、DRAM110へのアクセスを制御するインタフェースである。メモリコントローラ100の構成や動作については後述する。
【0018】
表示部205は、画像処理部202で画像処理された画像を、所定の表示タイミングで表示するモニタである。以上の各処理部間のデータは、バスマスタ120による調停のもと、システムバス204を介して送受信される。メモリコントローラ100は、撮像部201で所定の撮像タイミングで取得された撮像画像が、画像処理部202で画像処理され、所定の表示タイミングで表示部205に表示されるようにするため、DRAM110へのアクセスを制御する。
【0019】
図2は、
図1のメモリコントローラ100およびそれに接続される部材の機能および構成を示すブロック図である。メモリコントローラ100は、DRAM110とバスマスタ120とに接続される。バスマスタ120は、アドレス情報と、書き込み要求であればライトデータと、を含むメモリアクセス要求をメモリコントローラ100に送信する。メモリコントローラ100は、バスマスタ120から受信したメモリアクセス要求を基にDRAMコマンドを生成し、DRAM110に送信する。また、送信したDRAMコマンドに基づいてDRAM110とデータ転送を行う。DRAM110はオートプリチャージ付きリードライトコマンドを受信すると、リードライトを実行した後に、アクセスしたページをプリチャージする。オートプリチャージ付きリードライトコマンドは、例えば、DDR3 SDRAMにおけるライトオートプリチャージやリードオートプリチャージである。メモリコントローラ100およびDRAM110はそれぞれ別個の半導体チップに設けられてもよいし、ひとつの半導体チップに設けられてもよい。あるいはまた、DRAM110はそれぞれが別個の半導体チップに設けられた複数のメモリデバイスであってもよい。
【0020】
DRAM110は複数のバンクと各種デコーダと入出力センスアンプとデータバスバッファとを含む。各バンクでは、記憶素子であるDRAMセルがマトリクス状に配置される。DRAM110は、DDR3 SDRAMやLPDDR4に準拠するDRAMメモリデバイスであってもよい。
【0021】
メモリコントローラ100は、DRAM110にコマンド(DRAMコマンド)とアドレスとを提供することでDRAM110を制御する。メモリコントローラ100はDRAM110に書き込み用のデータを送信し、DRAM110から読み出されたデータを受信する。メモリコントローラ100およびDRAM110は、システムバス204から供給される共通のクロック信号に同期して動作する。以下では、説明を簡略化するために、メモリコントローラ100のコマンドの発行に係る機能を中心に説明し、データ線(DQ)の制御などのメモリコントローラ100の他の機能については説明を省略する。
【0022】
メモリコントローラ100は、メモリアクセス要求格納部101と、メモリアクセス要求発行順決定部102と、ページ判定部103と、DRAMコマンド発行部104と、を備える。
【0023】
まず、メモリアクセス要求格納部101を説明する。メモリアクセス要求格納部101は、DRAM110に対するアクセス要求であるメモリアクセス要求を保持するバッファである。メモリアクセス要求格納部101はm(m≧2)個のエントリで構成し、各エントリには0からm-1までのエントリ番号を付与する。なお、本実施の形態は具体的なmの数に限定されない。
【0024】
図3は、
図2のメモリアクセス要求格納部101を構成するエントリ1011を示すデータ構造図である。本実施の形態では、メモリアクセス要求格納部101には、
図3に示すエントリ1011をm本有する。
図3に示すように、エントリ1011は、リクエスト種別フィールドと、対象バンクフィールドと、対象ページフィールドと、DRAMコマンド数フィールドと、インデックスフィールドと、を有している。
【0025】
各フィールドに格納する情報は次の通りである。
(a)リクエスト種別フィールド
当該エントリに格納したメモリアクセス要求の種別を示す。
WRITE メモリアクセス要求がライト(データの書込み)
READ メモリアクセス要求がリード(データの読込み)
(b)対象バンクフィールド
当該エントリに格納したメモリアクセス要求がアクセスするバンク番号
(c)対象ページフィールド
当該エントリに格納したメモリアクセス要求がアクセスするページ番号
(d)DRAMコマンド数フィールド
当該エントリに格納したメモリアクセス要求により実行されるDRAMコマンドの数
(e)インデックスフィールド
当該エントリに格納したメモリアクセス要求により実行されるDRAMコマンドのうち、次に発行するDRAMコマンドの番号(0、…、DRAMコマンド数-1)を示す
【0026】
メモリアクセス要求格納部101にメモリアクセス要求を新規に格納する場合、新規に格納するメモリアクセス要求を、既に格納されているメモリアクセス要求の最後尾に続いたエントリに格納する。メモリアクセス要求格納部101からメモリアクセス要求を読み出す場合、任意のエントリから読み出し可能である。
【0027】
表1を使用してメモリアクセス要求格納部101の動作を説明する。
【表1】
【0028】
表1中、REQ00、REQ01、REQ02、REQ03はそれぞれ、メモリアクセス要求格納部101が格納しているメモリアクセス要求を一意に識別するIDである。メモリアクセス要求格納部101の状態が、表1の列「現在の状態」に示す状態であったとする。すなわち、メモリアクセス要求格納部101のエントリ0からエントリ2に、それぞれREQ00、REQ01、およびREQ02が格納されている。一方、エントリ3から最後尾のエントリm-1までは、メモリアクセス要求を格納しておらず、空きである。
【0029】
ここで、新たなメモリアクセス要求であるREQ03を格納する動作を説明する。新たなメモリアクセス要求の格納先エントリは、メモリアクセス要求格納部101に既に格納されているメモリアクセス要求の最後尾に続いたエントリである。したがって、表1の列「現在の状態」に示す状態にREQ03を追加して格納する場合、REQ03をエントリ3に格納する。REQ03を格納した後の状態を、表1の列「メモリアクセス要求格納後」に示す。REQ03を格納した後、表1の列「メモリアクセス要求格納後」に示すように、エントリ0からエントリ3までの各エントリにメモリアクセス要求が格納されている。
【0030】
続いて、メモリアクセス要求格納部101に入力される格納部制御信号について説明する。
図4は、本実施の形態における格納部制御信号1021の構成図である。格納部制御信号1021は、エントリ番号フィールドと、パージフィールドと、更新不フィールドと、を含む。
【0031】
各フィールドが示す情報は次の通りである。
(a)エントリ番号フィールド
制御対象とするメモリアクセス要求格納部101のエントリを示す。
(b)パージフィールド
エントリ番号フィールドが示すメモリアクセス要求格納部101のエントリをパージすることを示す
1’b1:パージ、1’b0:バージ動作無し
(c)更新フィールド
エントリ番号フィールドが示すメモリアクセス要求格納部101のエントリを更新することを示す
1’b1:インデックスフィールドの値を+1、1’b0:更新動作無し
【0032】
格納部制御信号1021の更新フィールドに1が設定されている場合、メモリアクセス要求格納部101はエントリ番号フィールドが示すエントリのインデックスフィールドの値に1を加算する。また、パージフィールドに1が設定されている場合、エントリ番号フィールドが示すエントリをパージし、同時に空いたエントリに後続のエントリが格納しているメモリアクセス要求を一つずつ移動する。表1の列「メモリアクセス要求格納後」に示す状態から、エントリ1のREQ01をパージしたとする。パージ後、エントリ2以降のエントリに格納しているメモリアクセス要求は一つずつ若いエントリに移動する。エントリ1のREQ01をパージした後の状態を、表1の列「エントリパージ後」に示す。
【0033】
図2に戻り、メモリアクセス要求発行順決定部102を説明する。メモリアクセス要求発行順決定部102は、メモリアクセス要求格納部101が格納する格納済メモリアクセス要求の全てを参照可能である。メモリアクセス要求発行順決定部102は、メモリアクセス要求格納部101に格納されている格納済メモリアクセス要求のDRAM110への発行順を、メモリアクセス要求の優先順位およびDRAM110の状態のうちの少なくともひとつに基づいて、決定する。そして、格納済メモリアクセス要求の内で最初に発行するメモリアクセス要求を、発行対象メモリアクセス要求としてDRAMコマンド発行部104に出力する。
【0034】
メモリアクセス要求発行順決定部102は、後述のページ判定部103におけるページ判定とは独立して発行順を決定する。ページ判定部103の判定結果により影響を受けるのはDRAMコマンド発行部104であり、メモリアクセス要求発行順決定部102は当該判定結果を受け取らないので、その影響も受けない。
【0035】
メモリアクセス要求発行順決定部102により決定された発行順は、メモリアクセス要求格納部101へのメモリアクセス要求の登録順とは異なる。上述の通り、メモリアクセス要求はメモリアクセス要求格納部101に時系列で並ぶよう登録される。これに対して、発行の際には、古いメモリアクセス要求から順番に選択されるのではなく、メモリアクセス要求発行順決定部102が決めた発行順で任意のエントリからメモリアクセス要求が発行される。
【0036】
メモリアクセス要求発行順決定部102の入力は、メモリアクセス要求格納部101が格納する格納済メモリアクセス要求と、DRAMコマンド発行部104の出力であるDRAMコマンド発行状態と、である。
【0037】
DRAMコマンド発行状態は、発行したDRAMコマンドと、そのDRAMコマンドに関する情報と、を示す信号であり、次に挙げる状態を表す信号を含んでいる。
(a)cmd 発行したDRAMコマンド
(b)bank 発行したDRAMコマンドの対象バンク
(c)page 発行したDRAMコマンドの対象ページ
【0038】
メモリアクセス要求発行順決定部102の出力は、発行対象メモリアクセス要求と、格納部制御信号と、DRAM状態と、である。発行対象メモリアクセス要求は、格納済メモリアクセス要求のなかで最初に発行するメモリアクセス要求である。格納部制御信号は、メモリアクセス要求格納部101に対してエントリのパージまたは更新を指示する制御信号である。DRAM状態はメモリアクセス要求発行順決定部102が管理するDRAMの状態である。
【0039】
図5は、
図2のメモリアクセス要求発行順決定部102の機能および構成を示すブロック図である。メモリアクセス要求発行順決定部102は、DRAM状態管理部1022と、発行順決定部1023と、を含む。
【0040】
DRAM状態管理部1022は、DRAMコマンド発行状態の値を基にDRAM状態を管理している。DRAM状態管理部1022が管理しているDRAM状態は、少なくとも次に示す状態を含んでいる。
(a)ref(k)
バンクkが、リフレッシュ動作中であるか否かを示す
1’b1:リフレッシュ動作中
1’b0:非リフレッシュ動作中
(b)pcmd
直前に発行したDRAMコマンドのリクエスト種別
WRITE DRAMコマンドはデータの書込み
READ DRAMコマンドはデータの読込み
(c)padd(k)
バンクkがオープンしているページアドレス
(d)bst(k)
バンクkの状態を示す
1’b1:バンクkはページをオープンしている状態
1’b0:バンクkはページをクローズしている状態
【0041】
DRAM状態管理部1022をさらに詳しく説明する。まず、ref(k)の動作を説明する。DRAMコマンド発行部104が、バンクkに対してREFコマンドを発行すると、DRAM状態管理部1022はref(k)に1’b1を設定する。そして、リフレッシュ動作時間が経過した後、DRAM状態管理部1022はref(k)の値を1’b0に設定する。例えば、DRAMコマンド発行部104がバンク0に対してREFコマンドを発行したとする。この時、DRAMコマンド発行状態の値は、
(cmd,bank,page)==(REF,0,-)
に変化する。ここで、「-」はdon’t careを表すものとする。この変化に基づき、DRAM状態管理部1022は、バンク0に対するリフレッシュ動作の開始を認識する。リフレッシュ動作の開始を認識したことでref(0)に1’b1を設定する。
【0042】
pcmdは、直前に発行したリクエスト種別を保持している。例えば、DRAMコマンド発行部104がバンク0ページ0にWRコマンドを発行したとする。このとき、DRAMコマンド発行状態は、
(cmd,bank,page)==(WR,0,0)
に変化する。この変化に依り、DRAM状態管理部1022はWRコマンドの発行を認識し、pcmdに、WRコマンドのリクエスト種別であるWRITEを設定する。
【0043】
padd(k)とbst(k)とはバンクkの状態を示している。DRAMコマンド発行部104が、バンクkページpに対してACTコマンドを発行すると、DRAM状態管理部1022はバンクkページpがオープン状態になったことを認識する。そして、次の動作を実施する。
(a)padd(k)にpを設定
(b)bst(k)に1’b1(有効)を設定
【0044】
一方、DRAMコマンド発行部104が、バンクkページpに対してPREコマンドやオートプリチャージ付きリードライトコマンドを発行すると、DRAM状態管理部1022はバンクkがクローズ状態になったと認識する。そして、次の動作を実施する。
(a)bst(k)に1’b0を設定
なお、padd(k)の値は変化しない。
【0045】
例えば、DRAMコマンド発行部104がバンク0ページ5にACTコマンドを発行したとする。このとき、DRAMコマンド発行状態は、
(cmd,bank,page)==(ACT,0,5)
に変化する。この変化に基づき、DRAM状態管理部1022は、次の動作を実施する。
(a)padd(0)に5を設定
(b)bst(0)に1’b1を設定
【0046】
反対に、DRAMコマンド発行部104がバンク0ページ5にPREコマンドを発行したとする。このとき、DRAMコマンド発行状態は、
(cmd,bank,page)==(PRE,0,5)
に変化する。この変化に基づき、DRAM状態管理部1022は、次の動作を実施する。
(a)bst(0)に1’b0を設定
【0047】
DRAM状態管理部1022が管理するDRAM状態は発行順決定部1023およびページ判定部103に出力される。
【0048】
続けて、発行順決定部1023を説明する。発行順決定部1023は、次のDRAM状態基準にしたがって、格納済メモリアクセス要求の発行順を決定する。
(A)決定対象の格納済メモリアクセス要求に対応するDRAMコマンドの種別と、直前に発行されたDRAMコマンドの種別と、の異同、
(B)決定対象の格納済メモリアクセス要求が対象とするバンクがリフレッシュ動作中であるか否か、
(C)決定対象の格納済メモリアクセス要求が対象とするページがオープンか否か、
【0049】
発行順決定部1023は、格納済メモリアクセス要求の発行順を決定するに当たり、基準(A)から(C)を単独で適用してもよいし、複数の基準を同時に適用してもよい。また、本実施の形態では、複数の格納済メモリアクセス要求が基準を満たす場合、基準を満たす格納済メモリアクセス要求の内で最もエントリ番号が若いメモリアクセス要求を選択する。さらに、全ての格納済メモリアクセス要求が基準を満たさない場合、格納済メモリアクセス要求内で最もエントリ番号が若いメモリアクセス要求を選択する。
【0050】
本実施の形態では、DRAM状態を基に格納済メモリアクセス要求の発行順を決定しているが、発行順を決定する基準はDRAM状態に限られない。他の実施の形態では、別の基準、例えばメモリアクセス要求に付与される優先順位を基に発行順を決定してもよい。
【0051】
続いて、表2を用いて発行順決定部1023が格納部制御信号1021を生成する手順を説明する。
【表2】
【0052】
表2は、
図3に示すエントリ1011の各フィールドがとる値を、メモリアクセス要求毎に示している。表2の「インデックス」列は、当該エントリに格納したメモリアクセス要求により実行されるDRAMコマンドのうち、次に発行するDRAMコマンドの番号を示している。例えば、表2のエントリ0は「インデックス」列の値が0である。これは、0番目、すなわちメモリアクセス要求により実行されるDRAMコマンドの先頭に位置するDRAMコマンドが次に発行されることを示す。メモリアクセス要求により実行される最後のDRAMコマンドを発行すると、対応するメモリアクセス要求の処理は完了する。従って、メモリアクセス要求格納部101から対応するエントリをパージする。一方、DRAMコマンドを発行した場合、メモリアクセス要求格納部101の対応するエントリを更新する。ただし、最後のDRAMコマンドを発行した場合は対応するエントリを更新する必要はない。発行したDRAMコマンドが最後のDRAMコマンドであるかは、エントリ1011のDRAMコマンド数フィールドの値とインデックスフィールドの値とから判断する。(インデックスフィールドの値=DRAMコマンド数フィールドの値-1)の状態でDRAMコマンド発行状態がDRAMコマンド発行を示す場合に、最後のDRAMコマンドが発行されたことを示す。従って、DRAMコマンド発行状態がDRAMコマンドの発行を示し、かつ、(インデックスフィールドの値=DRAMコマンド数フィールドの値-1)の場合、対応するメモリアクセス要求のエントリをパージするように格納部制御信号1021を生成する。一方、DRAMコマンド発行状態がDRAMコマンドの発行を示し、かつ、(インデックスフィールドの値≠DRAMコマンド数フィールドの値-1)の場合、対応するメモリアクセス要求のエントリを更新するように格納部制御信号1021を生成する。
【0053】
ページ判定部103の動作を説明する。ページ判定部103は、DRAMコマンド発行部104が発行対象メモリアクセス要求のコマンドをDRAM110へ発行する際に、発行対象メモリアクセス要求の次に同じバンクにコマンドを発行する格納済メモリアクセス要求を、メモリアクセス要求発行順決定部102が用いた基準と同じ基準に基づき決定された発行順にしたがって選択する。ページ判定部103は、発行対象メモリアクセス要求と選択されたメモリアクセス要求とが同じページを対象とするか否かを判定する。ページ判定部103は、発行対象メモリアクセス要求が対象とするバンクと同じバンクを対象とする格納済メモリアクセス要求が複数ある場合、当該複数の格納済メモリアクセス要求のなかから、ひとつの格納済メモリアクセス要求を上記の発行順にしたがって選択する。
【0054】
図6は、
図2のページ判定部103におけるページ判定アルゴリズムを示すフローチャートである。ページ判定部103は、メモリアクセス要求発行順決定部102が出力する発行対象メモリアクセス要求に対して、その対象バンクに次にアクセスする格納済メモリアクセス要求を選択し、対象ページが同じか否かを判定する。そして、判定した結果をページ判定結果としてDRAMコマンド発行部104に出力する。
【0055】
ページ判定部103は、メモリアクセス要求発行順決定部102が出力する発行対象メモリアクセス要求と対象バンクが同じメモリアクセス要求がメモリアクセス要求格納部101に存在するかを判定する(S1031)。該当する格納済メモリアクセス要求が存在する場合(S1031のYES)、ページ判定部103は、該当するメモリアクセス要求が2つ以上格納されているかを判定する(S1032)。該当する格納済メモリアクセス要求が2つ以上存在する場合(S1032のYES)、ページ判定部103は、メモリアクセス要求発行順決定部102が発行順を決定する際の基準に基づいて、発行対象メモリアクセス要求と同じバンクに次に発行されるメモリアクセス要求を選択する(S1033)。ページ判定部103は、選択されたメモリアクセス要求の対象ページと発行対象メモリアクセス要求の対象ページとを比較する(S1034)。ページ判定部103は、S1034で比較した結果をDRAMコマンド発行部104にページ判定結果として出力する(S1035)。
【0056】
S1031にて、該当する格納済メモリアクセス要求が存在しなかった場合(S1031のNO)、ページ判定部103は、レジスタ設定で指定される、または、予め決められているページ制御に基づいて比較結果を生成する(S1037)。例えば、同じバンクを対象とする連続するメモリアクセス要求が異なるページにアクセスする蓋然性が高い場合、オートプリチャージありのリードライトコマンドを発行するために、ページ判定部103は「対象ページは異なる」という比較結果を生成する。逆に、2つのメモリアクセス要求が同じページにアクセスする蓋然性が高い場合、オートプリチャージなしでリードライトコマンドを発行するために、ページ判定部103は「対象ページは同じ」という比較結果を生成する。
【0057】
S1032にて、該当する格納済メモリアクセス要求が2つ以上存在しない場合(S1032のNO)、該当する格納済メモリアクセス要求はひとつのみであるから、ページ判定部103は、そのひとつのみの格納済メモリアクセス要求の対象ページと発行対象メモリアクセス要求の対象ページとを比較する(S1036)。
【0058】
以下に、メモリアクセス要求発行順決定部102およびページ判定部103の動作を条件Aと条件Bの2例を挙げて詳しく説明する。説明にあたり、メモリアクセス要求格納部101の状態を示す表2を使用する。なお、表2に記載の各メモリアクセス要求間に依存関係は無いものとし、任意の発行順に変更可能であるものとする。
【0059】
例を以下に示す。なお、DRAM状態は、説明に必要な情報のみ記載している。
[条件A]
・メモリアクセス要求発行順決定部102の選択基準は以下の通りとする。
(A)対象バンクはリフレッシュ動作中ではない
(B)直前に発行したDRAMリクエストと同一種別のDRAMリクエスト
(C)対象ページはオープン状態
・基準間の優先度は(A)>(B)>(C)とする。
・メモリアクセス要求格納部101の状態は表2の状態とする。
・DRAM状態は以下の通りとする。
(a)
ref(0)==1’b1 バンク0はリフレッシュ動作中
ref(1)==1’b0 バンク1は非リフレッシュ動作中
ref(2)==1’b0 バンク2は非リフレッシュ動作中
(b)
pcmd==WRITE 直前に発行したDRAMコマンドはWRITE
(c)
padd(1)==0 バンク1はページ0が対象
padd(2)==1 バンク2はページ1が対象
(d)
bst(1)==1 バンク1はページをオープンしている状態
bst(2)==1 バンク2はページをオープンしている状態
【0060】
表2中で、選択基準(A)、(B)、(C)の全てを満たすエントリは、エントリ3、エントリ4、エントリ6である。複数の格納済メモリアクセス要求が基準を満たす場合、メモリアクセス要求発行順決定部102は基準を満たす格納済メモリアクセス要求の内で最もエントリ番号が若いメモリアクセスを選択する。従って、メモリアクセス要求発行順決定部102はエントリ3を発行対象メモリアクセス要求として選択する。発行対象メモリアクセス要求としてエントリ3が選択されると、ページ判定部103は、エントリ3と対象バンクが同じであるメモリアクセス要求が格納済メモリアクセス要求内に存在するか確認する。ここでは、エントリ5とエントリ6の2つのエントリが該当する。そのため、ページ判定部103は、エントリ5とエントリ6のうち、発行対象メモリアクセス要求の次に対象バンクに発行するメモリアクセス要求を、選択基準(A)、(B)、(C)に基づき決定される発行順にしたがって選択する。DRAMコマンド発行部104が発行対象メモリアクセス要求であるエントリ3に対してDRAMコマンドを発行した後のDRAM状態を次に示す。
【0061】
エントリ3に対してDRAMコマンドを発行した後のDRAM状態:
(a)
ref(0)==1’b1 バンク0はリフレッシュ動作中
ref(1)==1’b0 バンク1は非リフレッシュ動作中
ref(2)==1’b0 バンク2は非リフレッシュ動作中
(b)
pcmd==WRITE 直前に発行したDRAMコマンドはWRITE
(c)
padd(1)==0 バンク1はページ0が対象
padd(2)==1 バンク2はページ1が対象
(d)
bst(1)==1 バンク1はページをオープンしている状態
bst(2)==1 バンク2はページをオープンしている状態
【0062】
上述するDRAM状態において、メモリアクセス要求発行順決定部102と同じ選択基準にしたがうと、エントリ5とエントリ6のうち、直前に発行したDRAMコマンドと同じリクエスト種別であるエントリ6が発行対象メモリアクセス要求として選択されることになる。このように、ページ判定部103はDRAM状態と発行対象メモリアクセス要求に基づいて、エントリ3の対象バンクへ次に発行されるメモリアクセス要求としてエントリ6を選択する。ページ判定部103は、選択されたエントリ6のメモリアクセス要求の対象ページと、発行対象メモリアクセス要求の対象ページと、を比較する。エントリ3の対象ページとエントリ6の対象ページとは同じであるため、ページ判定部103は発行対象メモリアクセス要求と、その対象バンクへ次にアクセスするメモリアクセス要求と、が同じページにアクセスするという比較結果をDRAMコマンド発行部104に出力する。
【0063】
[条件B]
・メモリアクセス要求発行順決定部102の選択基準は以下の通りとする。
(A)対象バンクはリフレッシュ動作中ではない
(B)直前に発行したDRAMリクエストと同一種別のDRAMリクエスト
(C)対象ページはオープン状態
・基準間の優先度は(A)>(B)>(C)とする。
・メモリアクセス要求格納部101の状態は表2の状態とする。
・DRAM状態は以下の通りとする。
(a)
ref(0)==1’b1 バンク0はリフレッシュ動作中
ref(1)==1’b0 バンク1は非リフレッシュ動作中
ref(2)==1’b0 バンク2は非リフレッシュ動作中
(b)
pcmd==WRITE 直前に発行したDRAMコマンドはWRITE
(c)
padd(1)==1 バンク1はページ1が対象
padd(2)==1 バンク2はページ1が対象
(d)
bst(1)==1 バンク1はページをオープンしている状態
bst(2)==1 バンク2はページをオープンしている状態
【0064】
表2中で、選択基準(A)(B)(C)の全てを満たすエントリはエントリ4のみであるから、メモリアクセス要求発行順決定部102はエントリ4を発行対象メモリアクセス要求として選択する。発行対象メモリアクセス要求としてエントリ4が選択されると、ページ判定部103は、エントリ4と対象バンクが同じであるメモリアクセス要求が格納済メモリアクセス要求内に存在するか確認する。ここでは、エントリ7とエントリ8の2つのエントリが該当する。そのため、ページ判定部103は、エントリ7とエントリ8のうち、発行対象メモリアクセス要求の次に対象バンクに発行するメモリアクセス要求を、選択基準(A)、(B)、(C)に基づき決定される発行順にしたがって選択する。DRAMコマンド発行部104が発行対象メモリアクセス要求であるエントリ4に対してDRAMコマンドを発行した後のDRAM状態を次に示す。
【0065】
エントリ4に対してDRAMコマンドを発行した後のDRAM状態:
(a)
ref(0)==1’b1 バンク0はリフレッシュ動作中
ref(1)==1’b0 バンク1は非リフレッシュ動作中
ref(2)==1’b0 バンク2は非リフレッシュ動作中
(b)
pcmd==WRITE 直前に発行したDRAMコマンドはWRITE
(c)
padd(1)==1 バンク1はページ1が対象
padd(2)==1 バンク2はページ1が対象
(d)
bst(1)==1 バンク1はページをオープンしている状態
bst(2)==1 バンク2はページをオープンしている状態
【0066】
上述するDRAM状態において、メモリアクセス要求発行順決定部102と同じ選択基準にしたがうと、エントリ7とエントリ8のうち、直前に発行したDRAMコマンドと同じリクエスト種別であるエントリ7が発行対象メモリアクセス要求として選択されることになる。このように、ページ判定部103はDRAM状態と発行対象メモリアクセス要求に基づいて、エントリ4の対象バンクへ次に発行されるメモリアクセス要求としてエントリ7を選択する。ページ判定部103は、選択されたエントリ7のメモリアクセス要求の対象ページと、発行対象メモリアクセス要求の対象ページと、を比較する。エントリ4の対象ページとエントリ7の対象ページは異なるため、ページ判定部103は発行対象メモリアクセス要求と、その対象バンクへ次にアクセスするメモリアクセス要求と、が異なるページにアクセスするという比較結果をDRAMコマンド発行部104に出力する。
【0067】
図2に戻り、DRAMコマンド発行部104の機能を説明する。DRAMコマンド発行部104は、メモリアクセス要求発行順決定部102により決定された発行順に基づきDRAM110へDRAMコマンドを発行する。DRAMコマンド発行部104は、ページ判定部103が同じページを対象とすると判定した場合、オートプリチャージなしで発行対象メモリアクセス要求のコマンドを発行し、ページ判定部103が同じページを対象としないと判定した場合、オートプリチャージ付きで発行対象メモリアクセス要求のコマンドを発行する。
【0068】
DRAMコマンド発行部104は、発行対象メモリアクセス要求およびページ判定結果に基づいてDRAMコマンドをDRAM110に発行する。まず、DRAMコマンド発行部104は、発行するDRAMコマンドが発行対象メモリアクセス要求により実行される最後のDRAMコマンドかを判定する。最後のDRAMコマンドであり、かつ、ページ判定部103が出力するページ判定結果が、対象バンクを次にアクセスするメモリアクセス要求が同じページにアクセスすることを示す場合、DRAMコマンド発行部104はオートプリチャージなしでコマンドを発行する。このコマンドは例えばリードコマンドやライトコマンドである。また、ページ判定結果が同じページにアクセスしないことを示す場合、DRAMコマンド発行部104は、オートプリチャージ付きコマンドを発行する。このコマンドは例えばリードオートプリチャージやライトオートプリチャージである。最後のDRAMコマンドでなかった場合、DRAMコマンド発行部104は、ページ判定結果に関わらずオートプリチャージなしでコマンドを発行する。
【0069】
本実施の形態に係るメモリコントローラ100によると、リオーダ機能を有するメモリコントローラ100であっても、実際のメモリアクセス要求の発行順に基づいて同じバンクに次にアクセスするメモリアクセス要求とページを比較してリードライトコマンドのオートプリチャージを制御する。これにより、メモリ利用効率を向上することができる。
【0070】
以上、実施の形態に係るメモリコントローラ100の構成と動作について説明した。この実施の形態は例示であり、その各構成要素や各処理の組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【0071】
実施の形態では、ページ判定部103がメモリアクセス要求発行順決定部102からDRAM状態を受け、受けたDRAM状態に基づき決定された発行順にしたがってメモリアクセス要求の選択を行う場合を説明したが、これに限られず、例えばページ判定部103はメモリアクセス要求発行順決定部102によって決定された発行順そのものを受けてもよい。
【0072】
本実施の形態に係る技術的思想は、DRAMに接続されてオートプリチャージ付きでリードライトコマンドを発行する様々なメモリコントローラに適用可能である。
【0073】
発明は上記実施の形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【0074】
100 メモリコントローラ、 110 DRAM、 120 バスマスタ。