JP2023146524A - メモリコントローラ、メモリコントローラの制御方法およびプログラム - Google Patents
メモリコントローラ、メモリコントローラの制御方法およびプログラム Download PDFInfo
- Publication number
- JP2023146524A JP2023146524A JP2022053738A JP2022053738A JP2023146524A JP 2023146524 A JP2023146524 A JP 2023146524A JP 2022053738 A JP2022053738 A JP 2022053738A JP 2022053738 A JP2022053738 A JP 2022053738A JP 2023146524 A JP2023146524 A JP 2023146524A
- Authority
- JP
- Japan
- Prior art keywords
- command
- read
- write
- page
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 59
- 230000006870 function Effects 0.000 claims description 4
- 230000015556 catabolic process Effects 0.000 abstract 1
- 238000006731 degradation reaction Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 34
- 230000004044 response Effects 0.000 description 3
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/17—Embedded application
- G06F2212/173—Vehicle or other transportation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/4076—Timing circuits
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System (AREA)
- Dram (AREA)
Abstract
【課題】メモリの利用効率低下を抑制する。【解決手段】メモリコントローラは、1つ以上のリードまたはライトのアクセス要求を保持する保持手段と、保持手段に保持されているアクセス要求に基づいて、リードコマンドまたはライトコマンドを生成する第1の生成手段と、保持手段に保持されているアクセス要求に基づいて、ページ制御コマンドを生成する第2の生成手段と、第1の生成手段により生成されたリードコマンドまたはライトコマンドと第2の生成手段により生成されたページ制御コマンドとが競合する場合には、保持手段に保持されているアクセス要求のうちのページが既にオープンされているアクセス要求に基づき、第1の生成手段により生成されたリードコマンドまたはライトコマンドと第2の生成手段により生成されたページ制御コマンドのいずれかをメモリに発行する発行手段とを有する。【選択図】図4
Description
本開示は、メモリコントローラ、メモリコントローラの制御方法およびプログラムに関する。
コンピュータシステムの主記憶装置として、一般的にDRAMが使用されている。コンピュータシステムの高機能化と高性能化に伴い、DRAMに対する性能要求は高まっており、その性能を最大限に引き出すために、メモリコントローラの様々な手法が提案されている。
DRAMにコマンドを発行するタイミングで、異なるバンクへのリードライトコマンド発行要求とアクティブコマンドやプリチャージコマンドといったページ制御コマンド発行要求が同時に存在する場合、いずれかのコマンドを選択して発行する必要がある。選択されなかったコマンドは、次にDRAMにコマンドを発行できるタイミングになるまで発行できない。
特許文献1には、第1の優先モードと第2の優先モードとを選択的に切り替えるコマンド制御システムが記載されている。第1の優先モードは、CASコマンドの出力タイミングを変更せず、RASコマンドの出力タイミングを変更するためのモードである。第2の優先モードは、RASコマンドの出力タイミングを変更せず、CASコマンドの出力タイミングを変更するためのモードである。
特許文献1では、第1の優先モードと第2の優先モードの切り替え方法については記載されていない。第1の優先モードでは、遅れて発行したアクティブコマンドに対するリードライトコマンドが開始する前に、優先して発行したリードライトコマンドが完了する場合、データバスにギャップが発生してメモリ利用効率が低下してしまう。また、第2の優先モードでは、遅れて発行したリードライトコマンドが発行可能なリードライトコマンド数より多かった場合、データバスにリードライトコマンド発行の遅れによるギャップが発生してメモリ利用効率が低下してしまう。
本開示の目的は、メモリの利用効率低下を抑制することである。
メモリコントローラは、複数のバンクを有するメモリにアクセスするコマンドを発行するメモリコントローラであって、1つ以上のリードまたはライトのアクセス要求を保持する保持手段と、前記保持手段に保持されているアクセス要求に基づいて、リードコマンドまたはライトコマンドを生成する第1の生成手段と、前記保持手段に保持されているアクセス要求に基づいて、ページ制御コマンドを生成する第2の生成手段と、前記第1の生成手段により生成されたリードコマンドまたはライトコマンドと前記第2の生成手段により生成されたページ制御コマンドとが競合する場合には、前記保持手段に保持されているアクセス要求のうちのページが既にオープンされているアクセス要求に基づき、前記第1の生成手段により生成されたリードコマンドまたはライトコマンドと前記第2の生成手段により生成されたページ制御コマンドのいずれかを前記メモリに発行する発行手段とを有する。
本開示によれば、メモリの利用効率低下を抑制することができる。
(第1の実施形態)
図1は、第1の実施形態によるメモリコントローラ100の構成例を示す図である。メモリコントローラ100は、アクセス保持回路101と、リードライト制御回路102と、ページ制御回路103と、バンク状態管理回路104と、優先度制御回路105を有する。
図1は、第1の実施形態によるメモリコントローラ100の構成例を示す図である。メモリコントローラ100は、アクセス保持回路101と、リードライト制御回路102と、ページ制御回路103と、バンク状態管理回路104と、優先度制御回路105を有する。
メモリコントローラ100は、複数のバンクを有するDRAM110と、バスマスタ120に接続される。バスマスタ120は、アドレス情報を含むメモリアクセス要求をメモリコントローラ100に送信する。メモリアクセス要求は、アドレス情報および/またはライトデータを含む。メモリコントローラ100は、バスマスタ120から受信したメモリアクセス要求を基にDRAMコマンドを生成し、そのDRAMコマンドをDRAM110に送信する。また、メモリコントローラ100は、送信したDRAMコマンドに基づいて、DRAM110に対してデータ転送を行う。
まず、アクセス保持回路101を説明する。アクセス保持回路101は、DRAM110に対するアクセス要求(以下、メモリアクセス要求)を複数保持可能なバッファである。アクセス保持回路101は、m(m>=2)個のエントリで構成される。ここで、メモリコントローラ100は、mの数に依存するものではない。
図2は、アクセス保持回路101のエントリ1011の構成例を示す図である。アクセス保持回路101には、図2に示すエントリ1011がm個存在する。エントリ1011は、リクエスト種別1011aのフィールドと、対象バンク1011bのフィールドと、対象ページ1011cのフィールドと、対象カラム1011dのフィールドと、残りリードライトコマンド数1011eのフィールドを有する。
バスマスタ120は、メモリアクセス要求をメモリコントローラ100に送信する。アクセス保持回路101は、バスマスタ120からメモリアクセス要求を受信し、その受信したメモリアクセス要求をフィールド1011a~1011eに対応するように変換し、フィールド1011a~1011eを保持する。
リクエスト種別1011aは、当該エントリ1011に格納したメモリアクセス要求の種別を示す。リクエスト種別1011aは、メモリアクセス要求がDRAM110に対するライトデータの書き込みを示すWRITE、または、メモリアクセス要求がDRAM110に対するリードデータの読み出しを示すREADを示す。
対象バンク1011bは、当該エントリ1011に格納したメモリアクセス要求がアクセスするDRAM110のバンクアドレスを示す。
対象ページ1011cは、当該エントリ1011に格納したメモリアクセス要求がアクセスするDRAM110のページアドレスを示す。
対象カラム1011dは、当該エントリ1011に格納したメモリアクセス要求がアクセスするDRAM110の先頭カラムアドレスを示す。
残りリードライトコマンド数1011eは、当該エントリ1011に格納したメモリアクセス要求により実行されるDRAM110の残りリードライトコマンドの数を示す。
DRAM110は、複数のバンクを有する。その複数のバンクの各々は、複数のメモリセルを有し、バンクアドレスにより特定される。その複数のメモリセルの各々は、データを書き込みまたは読み出しが可能であり、ページアドレスおよびカラムアドレスにより特定される。
メモリコントローラ100は、アクセス保持回路101にメモリアクセス要求を格納する場合、格納しているメモリアクセス要求の最後尾に続いたエントリに、新たなメモリアクセス要求を格納する。また、メモリコントローラ100は、アクセス保持回路101からメモリアクセス要求を読み出す場合、任意のエントリからメモリアクセス要求を読み出し可能である。
続いて、リードライト制御回路102からアクセス保持回路101に入力されるエントリ制御信号について説明する。エントリ制御信号は、エントリ番号フィールドと、削除フィールドと、更新フィールドを有する。削除フィールドに1がセットされている場合、アクセス保持回路101は、エントリ番号フィールドが示すエントリを削除する。更新フィールドに1がセットされている場合、アクセス保持回路101は、エントリ番号フィールドが示すエントリの対象カラム1011dを次のDRAMコマンドがアクセスする先頭カラムアドレスに更新する。そして、アクセス保持回路101は、残りリードライトコマンド数1011eを1減算した値に更新する。
次に、リードライト制御回路102を説明する。リードライト制御回路102は、アクセス保持回路101が格納するメモリアクセス要求の全てを参照可能である。リードライト制御回路102は、アクセス保持回路101に格納されるメモリアクセス要求のうち、アクセスするページがオープンされているメモリアクセス要求から任意のメモリアクセス要求を選択する。メモリアクセス要求がアクセスするページがオープンされているか否かは、エントリ1011の対象バンク1011bおよび対象ページ1011cと、バンク状態管理回路104が生成するバンク状態から判断する。そして、リードライト制御回路102は、選択したメモリアクセス要求からリードコマンドやライトコマンドを生成し、リードコマンドやライトコマンドを優先度制御回路105に出力する。本実施形態のリードライト制御回路102は、リードライトのスイッチングペナルティを抑制するため、リードコマンドとライトコマンドを連続して発行するようにメモリアクセス要求を選択する。そして、リードライト制御回路102が現在リードアクセスとライトアクセスのどちらを優先して選択しているかを示す優先ディレクションをページ制御回路103と優先度制御回路105に出力する。
続いて、リードライト制御回路102がエントリ制御信号を生成する手順を説明する。リードライト制御回路102は、メモリアクセス要求により実行される最後のリードコマンドやライトコマンドを発行すると、対応するメモリアクセス要求の処理が完了する。従って、リードライト制御回路102は、アクセス保持回路101から対応するエントリを削除するように、エントリ制御信号を生成する。一方、リードライト制御回路102は、最後でないリードコマンドやライトコマンドを発行した場合、アクセス保持回路101の対応するエントリを更新するように、エントリ制御信号を生成する。ただし、リードライト制御回路102は、最後のリードコマンドやライトコマンドを発行した場合には、対応するエントリを更新する必要はない。発行したリードコマンドやライトコマンドが最後か否かは、エントリ1011の残りリードライトコマンド数1011eが1であるかで判断する。
次に、ページ制御回路103を説明する。ページ制御回路103は、アクセス保持回路101が格納するメモリアクセス要求の全てを参照可能である。ページ制御回路103の入力は、アクセス保持回路101が格納するメモリアクセス要求と、バンク状態管理回路104が出力するバンク状態と、リードライト制御回路102が出力する優先ディレクションである。ページ制御回路103は、アクセス保持回路101が格納するメモリアクセス要求とバンク状態と優先ディレクションに基づいて、アクティブコマンドまたはプリチャージコマンドのページ制御コマンドを生成する。そして、ページ制御回路103は、アクティブコマンドまたはプリチャージコマンドを優先度制御回路105に出力する。
アクティブコマンドは、これからアクセスするバンクアドレスとページアドレスを指定して、指定したバンクのページをオープンにし(有効にし)、リードまたはライトの準備を行うためのコマンドである。プリチャージコマンドは、アクティブコマンドで開いたバンクのページをクローズする(無効にする)ためのコマンドである。
次に、バンク状態管理回路104を説明する。バンク状態管理回路104は、優先度制御回路105から入力されるコマンド発行状態に基づいて、バンク状態を更新し、バンク状態をリードライト制御回路102とページ制御回路103と優先度制御回路105に出力する。コマンド発行状態は、DRAM110に発行したコマンド種別、および、コマンドが発行されたバンクとページを含む。バンク状態は、DRAM110を構成するバンク毎にページをオープンしているかと、オープンしているページアドレスを含む。
最後に、優先度制御回路105を説明する。優先度制御回路105は、アクセス保持回路101が格納するメモリアクセス要求の全てを参照可能である。優先度制御回路105は、アクセス保持回路101が格納するメモリアクセス要求と、バンク状態管理回路104が出力するバンク状態と、リードライト制御回路102が出力する優先ディレクションを入力し、ページオープン済メモリアクセス量を生成する。優先度制御回路105は、リードライト制御回路102から入力されるリードコマンドまたはライトコマンドとページ制御回路103から入力されるページ制御コマンドから、ページオープン済メモリアクセス量に基づいて1つを選択してDRAM110に発行する。図1には記載していないが、優先度制御回路105は、リフレッシュ等のコマンドも合わせて選択してもよい。また、優先度制御回路105は、DRAM110に発行したコマンドのコマンド種別、および、コマンドが発行されたバンクとページから構成されるコマンド発行状態をバンク状態管理回路104に出力する。
図3は、図1の優先度制御回路105の構成例を示す図である。優先度制御回路105は、ページオープン済メモリアクセス量生成回路1051と、コマンド選択回路1052を有する。優先ディレクションは、リードライト制御回路102から入力され、現在リードアクセスとライトアクセスのどちらを優先して選択しているかを示す。
ページオープン済メモリアクセス量生成回路1051は、バンク状態に基づいて、アクセス保持回路101が格納するメモリアクセス要求のそれぞれについての対象バンク1011bが対象ページ1011cをオープンしているか否かを判断する。そして、ページオープン済メモリアクセス量生成回路1051は、リクエスト種別1011aが優先ディレクションと一致するメモリアクセス要求について対象ページがオープンされていると判断されたメモリアクセス要求の残りリードライトコマンド数を合計する。ページオープン済メモリアクセス量生成回路1051は、その合計した残りリードライトコマンド数を、ページオープン済メモリアクセス量として生成し、ページオープン済メモリアクセス量をコマンド選択回路1052に出力する。
コマンド選択回路1052は、ページオープン済メモリアクセス量に基づいて、リードライト制御回路102から入力されるリードまたはライトコマンドと、ページ制御回路103から入力されるページ制御コマンドから1つを選択してDRAM110に発行する。図4を参照しながら、コマンド選択回路1052の動作をさらに詳しく説明する。
図4は、図3のコマンド選択回路1052の制御方法を示すフローチャートである。ステップS100では、コマンド選択回路1052は、リードライト制御回路102からリードコマンドまたはライトコマンド、ページ制御回路103からアクティブコマンドまたはプリチャージコマンドが出力されているか否かを判定する。出力されている場合には、処理はステップS101に進む。出力されていない場合には、処理はステップS100に戻る。
ステップS101では、コマンド選択回路1052は、リードコマンドまたはライトコマンドとページ制御コマンドが競合しているか否かを判定する。リードコマンドまたはライトコマンドとページ制御コマンドが競合していない場合には、処理はステップS102に進む。リードコマンドまたはライトコマンドとページ制御コマンドが競合している場合には、処理はステップS103に進む。
ステップS102では、コマンド選択回路1052は、発行要求があるリードコマンド、ライトコマンドまたはページ制御コマンドを選択してDRAM110に発行する。その後、処理はステップS100に戻る。
ステップS103では、コマンド選択回路1052は、ページ制御コマンドがアクティブコマンドであるか否かを判定する。ページ制御コマンドがアクティブコマンドである場合には、処理はステップS107に進む。ページ制御コマンドがアクティブコマンドでない場合には、ページ制御コマンドがプリチャージコマンドであるので、処理はステップS104に進む。
ステップS104では、コマンド選択回路1052は、次の条件が成立するか否かを判定する。
(ページオープン済メモリアクセス量)≧((tRPpb+tRCD)÷tCCD)(少数点以下は切り上げ)
(ページオープン済メモリアクセス量)≧((tRPpb+tRCD)÷tCCD)(少数点以下は切り上げ)
ここで、tRPpbは、ロウプリチャージ時間であり、図7のように、プリチャージコマンドから次のアクティブコマンドを発行可能な最小時間である。tRCDは、図5のように、同じバンクへのアクティブコマンドからリードコマンドまたはライトコマンドまでのタイミング制約期間である。tCCDは、図5のように、リードコマンド(ライトコマンド)から次のリードコマンド(ライトコマンド)を発行可能な最小時間である。
ステップS104の条件が成立する場合には、処理はステップS106に進む。ステップS104の条件が成立しない場合には、処理はステップS105に進む。
ステップS107では、コマンド選択回路1052は、次の条件が成立するか否かを判定する。
(ページオープン済メモリアクセス量)≧(tRCD÷tCCD)(少数点以下は切り上げ)
(ページオープン済メモリアクセス量)≧(tRCD÷tCCD)(少数点以下は切り上げ)
ステップS107の条件が成立する場合には、処理はステップS106に進む。ステップS107の条件が成立しない場合には、処理はステップS108に進む。
ステップS105では、コマンド選択回路1052は、プリチャージコマンドを選択してDRAM110に発行する。その後、処理はステップS100に戻る。
ステップS106では、コマンド選択回路1052は、リードコマンドまたはライトコマンドを選択してDRAM110に発行する。その後、処理はステップS100に戻る。
ステップS108では、コマンド選択回路1052は、アクティブコマンドを選択してDRAM110に発行する。その後、処理はステップS100に戻る。
なお、ステップS104およびS107にて、(tRPpb+tRCD)、および、tRCDの期間に発行できる最大のリードまたはライトコマンド数を閾値として用いているが、閾値を限定するものではない。よって、(tRPpb+tRCD)、および、tRCDの期間に発行できる最大のリードまたはライトコマンド数以外の値を閾値としてもよい。これにより、リードまたはライトコマンドとページ制御コマンドとの間の優先度を調整することができる。
図5~図8は、本実施形態におけるコマンド選択回路1052のコマンド選択の動作例(LPDDR4)を示す図である。これらの動作例の前提は、DRAM110としてLPDDR4のSDRAMを使用し、優先ディレクションはリードコマンドである。タイミング制約や時刻T1開始時のアクセス保持回路101に保持されるメモリアクセス要求の状態やバンク状態は、図中に示すものとする。また、アクセス保持回路101に保持されるメモリアクセス要求のそれぞれには、説明のため、メモリアクセス要求0~3と識別子を付与している。
図5(A)は、本実施形態におけるリードコマンド(READ)とアクティブコマンド(ACT)が競合した際に、コマンド選択回路1052が時刻T1でアクティブコマンドを選択する動作例(LPDDR4)を示す図である。メモリアクセス要求0~2は、アクセス先のページが既にオープンされているため、リードライト制御回路102は、メモリアクセス要求0に対するリードコマンドを出力する。メモリアクセス要求3は、アクセス先のバンクがページクローズしているため、ページ制御回路103は、メモリアクセス要求3に対するアクティブコマンドを出力する。時刻T1において、ページオープン済メモリアクセス量は3であり、閾値(4=tRCD÷tCCD(小数点以下切り上げ))未満である。よって、優先度制御回路105は、アクティブコマンドを選択してDRAM110に発行する。メモリアクセス要求0~3のリードコマンド発行は、時刻T16に完了する。
図5(B)は、リードコマンドとアクティブコマンドが競合した際に、コマンド選択回路1052が時刻T1でリードコマンドを選択する動作例(LPDDR4)を示す図である。この場合、メモリアクセス要求0~3のリードコマンド発行は、時刻T18に完了する。この完了時刻T18は、図5(A)のリードコマンド発行完了時刻T16より遅い。したがって、コマンド選択回路1052は、図5(A)のように、アクティブコマンドを選択するのが好ましい。
図6(A)は、本実施形態におけるリードコマンドとアクティブコマンドが競合した際に、コマンド選択回路1052が時刻T1でリードコマンドを選択する動作例(LPDDR4)を示す図である。メモリアクセス要求0~2は、アクセス先のページが既にオープンされているため、リードライト制御回路102は、メモリアクセス要求0に対するリードコマンドを出力する。メモリアクセス要求3は、アクセス先のバンクがページクローズされているため、ページ制御回路103は、メモリアクセス要求3に対するアクティブコマンドを出力する。時刻T1において、ページオープン済メモリアクセス量は4であり、閾値(4=tRCD÷tCCD(小数点以下切り上げ))以上である。よって、優先度制御回路105は、リードコマンドを選択してDRAM110に発行する。メモリアクセス要求0~3のリードコマンド発行は、時刻T18に完了する。
図6(B)は、リードコマンドとアクティブコマンドが競合した際に、コマンド選択回路1052が時刻T1でアクティブコマンドを選択する動作例(LPDDR4)を示す図である。この場合、メモリアクセス要求0~3のリードコマンド発行は、時刻T20に完了する。この完了時刻T20は、図6(A)のリードコマンド発行完了時刻T18より遅い。したがって、コマンド選択回路1052は、図6(A)のように、リードコマンドを選択するのが好ましい。
図7(A)は、本実施形態におけるリードコマンドとプリチャージコマンド(PRE)が競合した際に、コマンド選択回路1052が時刻T1でプリチャージコマンドを選択する動作例(LPDDR4)を示す図である。メモリアクセス要求0~2は、アクセス先のページが既にオープンされているため、リードライト制御回路102は、メモリアクセス要求0に対するリードコマンドを出力する。メモリアクセス要求3は、アクセス先のバンクでアクセスしたいページと異なるページがオープンされているため、ページ制御回路103は、メモリアクセス要求3に対するプリチャージコマンドを出力する。時刻T1において、ページオープン済メモリアクセス量は7であり、閾値(8=(tRPpb+tRCD)÷tCCD(小数点以下切り上げ))未満である。よって、優先度制御回路105は、プリチャージコマンドを選択してDRAM110に発行する。メモリアクセス要求0~3のリードコマンド発行は、時刻T31に完了する。
図7(B)は、リードコマンドとプリチャージコマンドが競合した際に、コマンド選択回路1052が時刻T1でリードコマンドを選択する動作例(LPDDR4)を示す図である。この場合、メモリアクセス要求0~3のリードコマンド発行は、時刻T34に完了する。この完了時刻T34は、図7(A)のリードコマンド発行完了時刻T31より遅い。したがって、コマンド選択回路1052は、図7(A)のように、プリチャージコマンドを選択するのが好ましい。
図8(A)は、本実施形態におけるリードコマンドとプリチャージが競合した際に、コマンド選択回路1052が時刻T1でリードコマンドを選択する動作例(LPDDR4)を示す図である。メモリアクセス要求0~2は、アクセス先のページが既にオープンされているため、リードライト制御回路102は、メモリアクセス要求0に対するリードコマンドを出力する。メモリアクセス要求3は、アクセス先のバンクでアクセスしたいページと異なるページがオープンされているため、ページ制御回路103は、メモリアクセス要求3に対するプリチャージコマンドを出力する。時刻T1において、ページオープン済メモリアクセス量は8であり、閾値(8=(tRPpb+tRCD)÷tCCD(小数点以下切り上げ))以上である。よって、優先度制御回路105は、リードコマンドを選択してDRAM110に発行する。メモリアクセス要求0~3のリードコマンド発行は、時刻T34に完了する。
図8(B)は、リードコマンドとプリチャージが競合した際に、コマンド選択回路1052が時刻T1でプリチャージコマンドを選択する動作例(LPDDR4)を示す図である。この場合、メモリアクセス要求0~3のリードコマンド発行は、時刻T35に完了する。この完了時刻T35は、図8(A)のリードコマンド発行完了時刻T34より遅い。したがって、コマンド選択回路1052は、図8(A)のように、リードコマンドを選択するのが好ましい。
図9~図12は、本実施形態におけるコマンド選択回路1052のコマンド選択の動作例(LPDDR5)を示す図である。これらの動作例の前提は、DRAM110としてLPDDR5のSDRAMを使用し、優先ディレクションはリードである。タイミング制約や時刻T1開始時のアクセス保持回路101に保持されるメモリアクセス要求の状態やバンク状態は、図中に示すものとする。LPDDR5のSDRAMで、所望のページをオープンする場合、アクティブコマンド1(ACT1)とアクティブコマンド2(ACT2)という2つのアクティブコマンドを発行する必要がある。
図9(A)は、本実施形態におけるリードコマンドとアクティブコマンドが競合した際に、コマンド選択回路1052が時刻T1でアクティブコマンド1を選択する動作例(LPDDR5)を示す図である。メモリアクセス要求0~2は、アクセス先のページが既にオープンされているため、リードライト制御回路102は、メモリアクセス要求0に対するリードコマンドを出力する。メモリアクセス要求3は、アクセス先のバンクがページクローズされているため、ページ制御回路103は、メモリアクセス要求3に対するアクティブコマンドを出力する。時刻T1において、ページオープン済メモリアクセス量は3であり、閾値(4=tRCD÷tCCD(小数点以下切り上げ))未満である。よって、優先度制御回路105は、アクティブコマンド1を選択してDRAM110に発行する。メモリアクセス要求0~3のリードコマンド発行は、時刻T9に完了する。
図9(B)は、リードコマンドとアクティブコマンドが競合した際に、コマンド選択回路1052が時刻T1でリードコマンドを選択する動作例(LPDDR5)を示す図である。この場合、メモリアクセス要求0~3のリードコマンド発行は、時刻T11に完了する。この完了時刻T11は、図9(A)のリードコマンド発行完了時刻T9より遅い。したがって、コマンド選択回路1052は、図9(A)のように、リードコマンドを選択するのが好ましい。
図10(A)は、本実施形態におけるリードコマンドとアクティブコマンドが競合した際に、コマンド選択回路1052が時刻T1でリードコマンドを選択する動作例(LPDDR5)を示す図である。メモリアクセス要求0~2は、アクセス先のページが既にオープンされているため、リードライト制御回路102は、メモリアクセス要求0に対するリードコマンドを出力する。メモリアクセス要求3は、アクセス先のバンクがページクローズされているため、ページ制御回路103は、メモリアクセス要求3に対するアクティブコマンドを出力する。時刻T1において、ページオープン済メモリアクセス量は4であり、閾値(4=tRCD÷tCCD(小数点以下切り上げ))以上である。よって、優先度制御回路105は、リードコマンドを選択してDRAM110に発行する。メモリアクセス要求0~3のリードコマンド発行は、時刻T11に完了する。
図10(B)は、リードコマンドとアクティブコマンドが競合した際に、コマンド選択回路1052が時刻T1でアクティブコマンド1を選択する動作例(LPDDR5)を示す図である。この場合、メモリアクセス要求0~3のリードコマンド発行は、時刻T11に完了する。この完了時刻T11は、図10(A)のリードコマンド発行完了時刻T11と同じである。
図11(A)は、本実施形態におけるリードコマンドとプリチャージコマンドが競合した際に、コマンド選択回路1052が時刻T1でプリチャージコマンドを選択する動作例(LPDDR5)を示す図である。メモリアクセス要求0~2は、アクセス先のページが既にオープンされているため、リードライト制御回路102は、メモリアクセス要求0に対するリードコマンドを出力する。メモリアクセス要求3は、アクセス先のバンクでアクセスしたいページと異なるページがオープンされているため、ページ制御回路103は、メモリアクセス要求3に対するプリチャージコマンドを出力する。時刻T1において、ページオープン済メモリアクセス量は7であり、閾値(8=(tRPpb+tRCD)÷tCCD(小数点以下切り上げ))未満である。よって、優先度制御回路105は、プリチャージコマンドを選択してDRAM110に発行する。メモリアクセス要求0~3のリードコマンド発行は、時刻T16に完了する。
図11(B)は、リードコマンドとプリチャージコマンドが競合した際に、コマンド選択回路1052が時刻T1でリードコマンドを選択する動作例(LPDDR5)を示す図である。この場合、メモリアクセス要求0~3のリードコマンド発行は、時刻T17に完了する。この完了時刻T17は、図11(A)のリードコマンド発行完了時刻T16より遅い。したがって、コマンド選択回路1052は、図11(A)のように、プリチャージコマンドを選択するのが好ましい。
図12(A)は、本実施形態におけるリードコマンドとプリチャージが競合した際に、コマンド選択回路1052が時刻T1でリードコマンドを選択する動作例(LPDDR5)を示す図である。メモリアクセス要求0~2は、アクセス先のページが既にオープンされているため、リードライト制御回路102は、メモリアクセス要求0に対するリードコマンドを出力する。メモリアクセス要求3は、アクセス先のバンクでアクセスしたいページと異なるページがオープンされているため、ページ制御回路103は、メモリアクセス要求3に対するプリチャージコマンドを出力する。時刻T1において、ページオープン済メモリアクセス量は8であり、閾値(8=(tRPpb+tRCD)÷tCCD(小数点以下切り上げ))以上である。よって、優先度制御回路105は、リードコマンドを選択してDRAM110に発行する。メモリアクセス要求0~3のリードコマンド発行は、時刻T17に完了する。
図12(B)は、リードコマンドとプリチャージが競合した際に、コマンド選択回路1052が時刻T1でプリチャージコマンドを選択する動作例(LPDDR5)を示す図である。この場合、メモリアクセス要求0~3のリードコマンド発行は、時刻T18に完了する。この完了時刻T18は、図12(A)のリードコマンド発行完了時刻T17より遅い。したがって、コマンド選択回路1052は、図12(A)のように、リードコマンドを選択するのが好ましい。
以上のように、本実施形態によれば、メモリコントローラ100は、DRAM110に対して、複数のメモリアクセス要求から任意のメモリアクセス要求を選択してコマンドを発行することができる。優先度制御回路105は、DRAM110に発行するコマンドの優先度を、アクセス先のページが既にオープンされているアクセス要求に基づいて変更することで、DRAM110のメモリ利用効率低下を抑制することができる。
以上のように、DRAM110は、ダイナミックランダムアクセスメモリである。メモリコントローラ100は、複数のバンクを有するDRAM110にアクセスするコマンドを発行する。
アクセス保持回路101は、保持部であり、1つ以上のリードまたはライトのアクセス要求を保持する。リードライト制御回路102は、生成部であり、アクセス保持回路101に保持されているアクセス要求に基づいて、リードコマンドまたはライトコマンドを生成する。ページ制御回路103は、生成部であり、アクセス保持回路101に保持されているアクセス要求に基づいて、ページ制御コマンドを生成する。
ページオープン済メモリアクセス量生成回路1051は、リードライト制御回路102からの優先ディレクションに基づき、ページオープン済メモリアクセス量を生成する。優先ディレクションは、現在、リードとライトのうちのいずれが優先される期間であるかを示す。
リードとライトのうちのリードが優先される期間では、ページオープン済メモリアクセス量は、アクセス保持回路101に保持されているリードのアクセス要求のうちのページが既にオープンされているリードのアクセス要求に基づくリードコマンドの数である。
リードとライトのうちのライトが優先される期間では、ページオープン済メモリアクセス量は、アクセス保持回路101に保持されているライトのアクセス要求のうちのページが既にオープンされているライトのアクセス要求に基づくライトコマンドの数である。
ステップS101では、リードライト制御回路102により生成されたリードコマンドまたはライトコマンドとページ制御回路103により生成されたページ制御コマンドとが競合する場合には、処理はステップS103に進む。
ステップS103では、ページ制御コマンドがアクティブコマンドである場合には、処理はステップS107に進み、ページ制御コマンドがプリチャージコマンドである場合には、処理はステップS104に進む。
ステップS104およびS107では、アクセス保持回路101に保持されているアクセス要求のうちのページが既にオープンされているアクセス要求に基づき、処理はステップS105、S106またはS108に進む。具体的には、アクセス保持回路101に保持されているアクセス要求のうちのページが既にオープンされているアクセス要求に基づくリードコマンドまたはライトコマンドの数に基づき、処理はステップS105、S106またはS108に進む。その場合、優先度制御回路105は、発行部として機能し、リードライト制御回路102により生成されたリードコマンドまたはライトコマンドとページ制御回路103により生成されたページ制御コマンドのいずれかをDRAM110に発行する。
ステップS107では、ページオープン済メモリアクセス量が第1の閾値未満である場合には、処理はステップS108に進む。ページオープン済メモリアクセス量が第1の閾値以上である場合には、処理はステップS106に進む。
ページオープン済メモリアクセス量は、アクセス保持回路101に保持されているアクセス要求のうちのページが既にオープンされているアクセス要求に基づくリードコマンドまたはライトコマンドの数である。
第1の閾値は、(tRCD÷tCCD)(少数点以下は切り上げ)である。tRCDは、同じバンクへのアクティブコマンドからリードコマンドまたはライトコマンドまでのタイミング制約期間である。すなわち、第1の閾値は、同じバンクへのアクティブコマンドからリードコマンドまたはライトコマンドまでのタイミング制約期間に発行できるリードコマンドまたはライトコマンドの数に基づく値である。例えば、第1の閾値は、同じバンクへのアクティブコマンドからリードコマンドまたはライトコマンドまでのタイミング制約期間に発行できるリードコマンドまたはライトコマンドの最大数である。
ステップS104では、ページオープン済メモリアクセス量が第2の閾値未満である場合には、処理はステップS105に進む。ページオープン済メモリアクセス量が第2の閾値以上である場合には、処理はステップS106に進む。
第2の閾値は、((tRPpb+tRCD)÷tCCD)(少数点以下は切り上げ)である。(tRPpb+tRCD)は、同じバンクへのプリチャージコマンドからリードコマンドまたはライトコマンドまでのタイミング制約期間である。すなわち、第2の閾値は、同じバンクへのプリチャージコマンドからリードコマンドまたはライトコマンドまでのタイミング制約期間に発行できるリードコマンドまたはライトコマンドの数に基づく値である。例えば、第2の閾値は、同じバンクへのプリチャージコマンドからリードコマンドまたはライトコマンドまでのタイミング制約期間に発行できるリードコマンドまたはライトコマンドの最大数である。
ステップS105では、優先度制御回路105は、ページ制御回路103により生成されたプリチャージコマンドをDRAM110に発行する。ステップS106では、優先度制御回路105は、リードライト制御回路102により生成されたリードコマンドまたはライトコマンドをDRAM110に発行する。ステップS108では、優先度制御回路105は、ページ制御回路103により生成されたアクティブコマンドをDRAM110に発行する。
以上のように、本実施形態によれば、優先度制御回路105は、アクセス先のページが既にオープンされているアクセス要求に基づくリードコマンドまたはライトコマンドの数に基づいて、DRAM110に発行するコマンドの優先度を変更する。これにより、DRAM110のメモリ利用効率低下を抑制することができる。
(第2の実施形態)
第2の実施形態によるメモリコントローラ100の構成は、図1と同じである。第2の実施形態によるメモリコントローラ100は、第1の実施形態によるメモリコントローラ100に対して、アクセス保持回路101と、リードライト制御回路102と、優先度制御回路105が異なる。第2の実施形態は、ページオープン済メモリアクセス量として、リードライトコマンド数ではなく、アクセスするデータ量を使用する。第2の実施形態で言及していないものは、第1の実施形態と同じである。
第2の実施形態によるメモリコントローラ100の構成は、図1と同じである。第2の実施形態によるメモリコントローラ100は、第1の実施形態によるメモリコントローラ100に対して、アクセス保持回路101と、リードライト制御回路102と、優先度制御回路105が異なる。第2の実施形態は、ページオープン済メモリアクセス量として、リードライトコマンド数ではなく、アクセスするデータ量を使用する。第2の実施形態で言及していないものは、第1の実施形態と同じである。
まず、アクセス保持回路101を説明する。図13は、第2の実施形態によるアクセス保持回路101のエントリ2011の構成例を示す図である。アクセス保持回路101には、図13に示すエントリ2011がm個存在する。図13のエントリ2011は、図2のエントリ1011に対して、残りリードライトコマンド数1011eのフィールドを残りデータ量2011eのフィールドに変更したものである。エントリ2011は、リクエスト種別1011aのフィールドと、対象バンク1011bのフィールドと、対象ページ1011cのフィールドと、対象カラム1011dのフィールドと、残りデータ量2011eのフィールドを有する。
アクセス保持回路101は、バスマスタ120から受信したメモリアクセス要求を各フィールド1011a~1011d,2011eに対応するように変換して保持する。残りデータ量2011eのフィールドは、当該エントリ2011に格納したメモリアクセス要求によりアクセスされる残りデータ量2011eを格納する。データ量は、バイト数に限定されるものではなく、特定バス上でのバースト長であってもよい。更新フィールドに1がセットされている場合、アクセス保持回路101は、エントリ番号フィールドが示すエントリの対象カラム1011dのフィールドを、次のDRAMコマンドがアクセスする先頭カラムアドレスに更新する。また、アクセス保持回路101は、残りデータ量2011eからリードライトコマンドでアクセスしたデータ量を減算した値に、残りデータ量2011eのフィールドを更新する。
次に、リードライト制御回路102を説明する。リードライト制御回路102は、メモリアクセス要求により実行される最後のリードコマンドやライトコマンドを発行すると、対応するメモリアクセス要求の処理が完了する。従って、リードライト制御回路102は、アクセス保持回路101から対応するエントリを削除するように、エントリ制御信号を生成する。一方、リードライト制御回路102は、最後でないリードコマンドやライトコマンドを発行した場合、アクセス保持回路101の対応するエントリを更新するように、エントリ制御信号を生成する。リードライト制御回路102は、発行したリードコマンドやライトコマンドが最後か否かは、エントリ2011の残りデータ量2011eが、発行したリードコマンドやライトコマンドでアクセスするデータ量以下であるか否かで判断する。
最後に、優先度制御回路105を説明する。図3に示すように、優先度制御回路105は、ページオープン済メモリアクセス量生成回路1051とコマンド選択回路1052を有する。ページオープン済メモリアクセス量生成回路1051は、バンク状態に基づいて、アクセス保持回路101が格納するメモリアクセス要求のそれぞれについての対象バンク1011bが対象ページ1011cをオープンしているか否かを判断する。そして、ページオープン済メモリアクセス量生成回路1051は、リクエスト種別1011aが優先ディレクションと一致するメモリアクセス要求について対象ページがオープンされていると判断されたメモリアクセス要求の残りデータ量2011eを合計する。ページオープン済メモリアクセス量生成回路1051は、その合計した残りデータ量を、ページオープン済メモリアクセス量として生成し、ページオープン済メモリアクセス量をコマンド選択回路1052に出力する。
コマンド選択回路1052は、ページオープン済メモリアクセス量に基づいて、リードライト制御回路102から入力されるリードまたはライトコマンドと、ページ制御回路103から入力されるページ制御コマンドから1つを選択してDRAM110に発行する。図14を参照しながら、コマンド選択回路1052の動作をさらに詳しく説明する。
図14は、第2の実施形態によるコマンド選択回路1052の制御方法を示すフローチャートである。ステップS200では、コマンド選択回路1052は、リードライト制御回路102からリードコマンドまたはライトコマンド、ページ制御回路103からアクティブコマンドまたはプリチャージコマンドが出力されているか否かを判定する。出力されている場合には、処理はステップS201に進む。出力されていない場合には、処理はステップS200に戻る。
ステップS201では、コマンド選択回路1052は、リードコマンドまたはライトコマンドとページ制御コマンドが競合しているか否かを判定する。リードコマンドまたはライトコマンドとページ制御コマンドが競合していない場合には、処理はステップS202に進む。リードコマンドまたはライトコマンドとページ制御コマンドが競合している場合には、処理はステップS203に進む。
ステップS202では、コマンド選択回路1052は、発行要求があるリードコマンド、ライトコマンドまたはページ制御コマンドを選択してDRAM110に発行する。その後、処理はステップS200に戻る。
ステップS203では、コマンド選択回路1052は、ページ制御コマンドがアクティブコマンドであるか否かを判定する。ページ制御コマンドがアクティブコマンドである場合には、処理はステップS207に進む。ページ制御コマンドがアクティブコマンドでない場合には、ページ制御コマンドがプリチャージコマンドであるので、処理はステップS204に進む。
ステップS204では、コマンド選択回路1052は、次の条件が成立するか否かを判定する。
(ページオープン済メモリアクセス量)≧((tRPpb+tRCD)の期間にメモリアクセスできる最大データ量)
(ページオープン済メモリアクセス量)≧((tRPpb+tRCD)の期間にメモリアクセスできる最大データ量)
ステップS204の条件が成立する場合には、処理はステップS206に進む。ステップS204の条件が成立しない場合には、処理はステップS205に進む。
ステップS207では、コマンド選択回路1052は、次の条件が成立するか否かを判定する。
(ページオープン済メモリアクセス量)≧(tRCDの期間にメモリアクセスできる最大データ量)
(ページオープン済メモリアクセス量)≧(tRCDの期間にメモリアクセスできる最大データ量)
ステップS207の条件が成立する場合には、処理はステップS206に進む。ステップS207の条件が成立しない場合には、処理はステップS208に進む。
ステップS205では、コマンド選択回路1052は、プリチャージコマンドを選択してDRAM110に発行する。その後、処理はステップS200に戻る。
ステップS206では、コマンド選択回路1052は、リードコマンドまたはライトコマンドを選択してDRAM110に発行する。その後、処理はステップS200に戻る。
ステップS208では、コマンド選択回路1052は、アクティブコマンドを選択してDRAM110に発行する。その後、処理はステップS200に戻る。
なお、ステップS204およびS207にて、(tRPpb+tRCD)、および、tRCDの期間にメモリアクセスできる最大データ量を閾値として用いているが、閾値を限定するものではない。よって、(tRPpb+tRCD)、および、tRCDの期間にメモリアクセスできる最大データ量以外の値を閾値としてもよい。これにより、リードまたはライトコマンドとページ制御コマンドとの間の優先度を調整することができる。
以上のように、ページオープン済メモリアクセス量生成回路1051は、リードライト制御回路102からの優先ディレクションに基づき、ページオープン済メモリアクセス量を生成する。優先ディレクションは、現在、リードとライトのうちのいずれが優先される期間であるかを示す。
リードとライトのうちのリードが優先される期間では、ページオープン済メモリアクセス量は、アクセス保持回路101に保持されているリードのアクセス要求のうちのページが既にオープンされているリードのアクセス要求に基づくリードのデータ量である。
リードとライトのうちのライトが優先される期間では、ページオープン済メモリアクセス量は、アクセス保持回路101に保持されているライトのアクセス要求のうちのページが既にオープンされているライトのアクセス要求に基づくライトのデータ量である。
ステップS201では、リードライト制御回路102により生成されたリードコマンドまたはライトコマンドとページ制御回路103により生成されたページ制御コマンドとが競合する場合には、処理はステップS203に進む。
ステップS203では、ページ制御コマンドがアクティブコマンドである場合には、処理はステップS207に進み、ページ制御コマンドがプリチャージコマンドである場合には、処理はステップS204に進む。
ステップS204およびS207では、アクセス保持回路101に保持されているアクセス要求のうちのページが既にオープンされているアクセス要求に基づき、処理はステップS205、S206またはS208に進む。具体的には、アクセス保持回路101に保持されているアクセス要求のうちのページが既にオープンされているアクセス要求に基づくリードまたはライトのデータ量に基づき、処理はステップS205、S206またはS208に進む。その場合、優先度制御回路105は、リードライト制御回路102により生成されたリードコマンドまたはライトコマンドとページ制御回路103により生成されたページ制御コマンドのいずれかをDRAM110に発行する。
ステップS207では、ページオープン済メモリアクセス量が第1の閾値未満である場合には、処理はステップS208に進む。ページオープン済メモリアクセス量が第1の閾値以上である場合には、処理はステップS206に進む。
ページオープン済メモリアクセス量は、アクセス保持回路101に保持されているアクセス要求のうちのページが既にオープンされているアクセス要求に基づくリードまたはライトのデータ量である。
第1の閾値は、tRCDの期間にリードまたはライトできる最大データ量である。tRCDの期間は、同じバンクへのアクティブコマンドからリードコマンドまたはライトコマンドまでのタイミング制約期間である。すなわち、第1の閾値は、同じバンクへのアクティブコマンドからリードコマンドまたはライトコマンドまでのタイミング制約期間にリードまたはライトできる最大データ量である。
ステップS204では、ページオープン済メモリアクセス量が第2の閾値未満である場合には、処理はステップS205に進む。ページオープン済メモリアクセス量が第2の閾値以上である場合には、処理はステップS206に進む。
第2の閾値は、(tRPpb+tRCD)の期間にリードまたはライトできる最大データ量である。(tRPpb+tRCD)の期間は、同じバンクへのプリチャージコマンドからリードコマンドまたはライトコマンドまでのタイミング制約期間である。すなわち、第2の閾値は、同じバンクへのプリチャージコマンドからリードコマンドまたはライトコマンドまでのタイミング制約期間にリードまたはライトできる最大データ量である。
ステップS205では、優先度制御回路105は、ページ制御回路103により生成されたプリチャージコマンドをDRAM110に発行する。ステップS206では、優先度制御回路105は、リードライト制御回路102により生成されたリードコマンドまたはライトコマンドをDRAM110に発行する。ステップS208では、優先度制御回路105は、ページ制御回路103により生成されたアクティブコマンドをDRAM110に発行する。
以上のように、本実施形態によれば、優先度制御回路105は、アクセス先のページが既にオープンされているアクセス要求に基づくリードまたはライトのデータ量に基づいて、DRAM110に発行するコマンドの優先度を変更する。これにより、DRAM110のメモリ利用効率低下を抑制することができる。
(その他の実施形態)
本開示は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本開示は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
なお、上述の実施形態は、何れも本開示を実施するにあたっての具体例を示したものに過ぎず、これらによって本開示の技術的範囲が限定的に解釈されない。すなわち、本開示はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
100:メモリコントローラ、101:アクセス保持回路、102:リードライト制御回路、103:ページ制御回路、104:バンク状態管理回路、105:優先度制御回路、110:DRAM、120:バスマスタ、1011:エントリ、1051:ページオープン済メモリアクセス量生成回路、1052:コマンド選択回路
Claims (17)
- 複数のバンクを有するメモリにアクセスするコマンドを発行するメモリコントローラであって、
1つ以上のリードまたはライトのアクセス要求を保持する保持手段と、
前記保持手段に保持されているアクセス要求に基づいて、リードコマンドまたはライトコマンドを生成する第1の生成手段と、
前記保持手段に保持されているアクセス要求に基づいて、ページ制御コマンドを生成する第2の生成手段と、
前記第1の生成手段により生成されたリードコマンドまたはライトコマンドと前記第2の生成手段により生成されたページ制御コマンドとが競合する場合には、前記保持手段に保持されているアクセス要求のうちのページが既にオープンされているアクセス要求に基づき、前記第1の生成手段により生成されたリードコマンドまたはライトコマンドと前記第2の生成手段により生成されたページ制御コマンドのいずれかを前記メモリに発行する発行手段と
を有することを特徴とするメモリコントローラ。 - 前記発行手段は、前記保持手段に保持されているアクセス要求のうちのページが既にオープンされているアクセス要求に基づくリードコマンドまたはライトコマンドの数に基づき、前記第1の生成手段により生成されたリードコマンドまたはライトコマンドと前記第2の生成手段により生成されたページ制御コマンドのいずれかを前記メモリに発行することを特徴とする請求項1に記載のメモリコントローラ。
- 前記発行手段は、
前記ページ制御コマンドがアクティブコマンドであり、前記保持手段に保持されているアクセス要求のうちのページが既にオープンされているアクセス要求に基づくリードコマンドまたはライトコマンドの数が第1の閾値未満である場合には、前記第2の生成手段により生成されたアクティブコマンドを前記メモリに発行し、
前記ページ制御コマンドがアクティブコマンドであり、前記保持手段に保持されているアクセス要求のうちのページが既にオープンされているアクセス要求に基づくリードコマンドまたはライトコマンドの数が第1の閾値以上である場合には、前記第1の生成手段により生成されたリードコマンドまたはライトコマンドを前記メモリに発行することを特徴とする請求項2に記載のメモリコントローラ。 - 前記第1の閾値は、同じバンクへのアクティブコマンドからリードコマンドまたはライトコマンドまでのタイミング制約期間に発行できるリードコマンドまたはライトコマンドの数に基づく値であることを特徴とする請求項3に記載のメモリコントローラ。
- 前記第1の閾値は、同じバンクへのアクティブコマンドからリードコマンドまたはライトコマンドまでのタイミング制約期間に発行できるリードコマンドまたはライトコマンドの最大数であることを特徴とする請求項4に記載のメモリコントローラ。
- 前記発行手段は、
前記ページ制御コマンドがプリチャージコマンドであり、前記保持手段に保持されているアクセス要求のうちのページが既にオープンされているアクセス要求に基づくリードコマンドまたはライトコマンドの数が第2の閾値未満である場合には、前記第2の生成手段により生成されたプリチャージコマンドを前記メモリに発行し、
前記ページ制御コマンドがプリチャージコマンドであり、前記保持手段に保持されているアクセス要求のうちのページが既にオープンされているアクセス要求に基づくリードコマンドまたはライトコマンドの数が第2の閾値以上である場合には、前記第1の生成手段により生成されたリードコマンドまたはライトコマンドを前記メモリに発行することを特徴とする請求項2~5のいずれか1項に記載のメモリコントローラ。 - 前記第2の閾値は、同じバンクへのプリチャージコマンドからリードコマンドまたはライトコマンドまでのタイミング制約期間に発行できるリードコマンドまたはライトコマンドの数に基づく値であることを特徴とする請求項6に記載のメモリコントローラ。
- 前記第2の閾値は、同じバンクへのプリチャージコマンドからリードコマンドまたはライトコマンドまでのタイミング制約期間に発行できるリードコマンドまたはライトコマンドの最大数であることを特徴とする請求項7に記載のメモリコントローラ。
- 前記発行手段は、前記保持手段に保持されているアクセス要求のうちのページが既にオープンされているアクセス要求に基づくリードまたはライトのデータ量に基づき、前記第1の生成手段により生成されたリードコマンドまたはライトコマンドと前記第2の生成手段により生成されたページ制御コマンドのいずれかを前記メモリに発行することを特徴とする請求項1に記載のメモリコントローラ。
- 前記発行手段は、
前記ページ制御コマンドがアクティブコマンドであり、前記保持手段に保持されているアクセス要求のうちのページが既にオープンされているアクセス要求に基づくリードまたはライトのデータ量が第1の閾値未満である場合には、前記第2の生成手段により生成されたアクティブコマンドを前記メモリに発行し、
前記ページ制御コマンドがアクティブコマンドであり、前記保持手段に保持されているアクセス要求のうちのページが既にオープンされているアクセス要求に基づくリードまたはライトのデータ量が第1の閾値以上である場合には、前記第1の生成手段により生成されたリードコマンドまたはライトコマンドを前記メモリに発行することを特徴とする請求項9に記載のメモリコントローラ。 - 前記第1の閾値は、同じバンクへのアクティブコマンドからリードコマンドまたはライトコマンドまでのタイミング制約期間にリードまたはライトできる最大データ量であることを特徴とする請求項10に記載のメモリコントローラ。
- 前記発行手段は、
前記ページ制御コマンドがプリチャージコマンドであり、前記保持手段に保持されているアクセス要求のうちのページが既にオープンされているアクセス要求に基づくリードまたはライトのデータ量が第2の閾値未満である場合には、前記第2の生成手段により生成されたプリチャージコマンドを前記メモリに発行し、
前記ページ制御コマンドがプリチャージコマンドであり、前記保持手段に保持されているアクセス要求のうちのページが既にオープンされているアクセス要求に基づくリードまたはライトのデータ量が第2の閾値以上である場合には、前記第1の生成手段により生成されたリードコマンドまたはライトコマンドを前記メモリに発行することを特徴とする請求項9~11のいずれか1項に記載のメモリコントローラ。 - 前記第2の閾値は、同じバンクへのプリチャージコマンドからリードコマンドまたはライトコマンドまでのタイミング制約期間にリードまたはライトできる最大データ量であることを特徴とする請求項12に記載のメモリコントローラ。
- 前記発行手段は、
リードとライトのうちのリードが優先される期間では、前記保持手段に保持されているリードのアクセス要求のうちのページが既にオープンされているリードのアクセス要求に基づくリードコマンドの数に基づき、前記第1の生成手段により生成されたリードコマンドと前記第2の生成手段により生成されたページ制御コマンドのいずれかを前記メモリに発行し、
リードとライトのうちのライトが優先される期間では、前記保持手段に保持されているライトのアクセス要求のうちのページが既にオープンされているライトのアクセス要求に基づくライトコマンドの数に基づき、前記第1の生成手段により生成されたライトコマンドと前記第2の生成手段により生成されたページ制御コマンドのいずれかを前記メモリに発行することを特徴とする請求項2~8のいずれか1項に記載のメモリコントローラ。 - 前記発行手段は、
リードとライトのうちのリードが優先される期間では、前記保持手段に保持されているリードのアクセス要求のうちのページが既にオープンされているリードのアクセス要求に基づくリードのデータ量に基づき、前記第1の生成手段により生成されたリードコマンドと前記第2の生成手段により生成されたページ制御コマンドのいずれかを前記メモリに発行し、
リードとライトのうちのライトが優先される期間では、前記保持手段に保持されているライトのアクセス要求のうちのページが既にオープンされているライトのアクセス要求に基づくライトのデータ量に基づき、前記第1の生成手段により生成されたライトコマンドと前記第2の生成手段により生成されたページ制御コマンドのいずれかを前記メモリに発行することを特徴とする請求項9~13のいずれか1項に記載のメモリコントローラ。 - 1つ以上のリードまたはライトのアクセス要求を保持する保持手段を有し、複数のバンクを有するメモリにアクセスするコマンドを発行するメモリコントローラの制御方法であって、
前記保持手段に保持されているアクセス要求に基づいて、リードコマンドまたはライトコマンドを生成する第1の生成ステップと、
前記保持手段に保持されているアクセス要求に基づいて、ページ制御コマンドを生成する第2の生成ステップと、
前記第1の生成ステップにより生成されたリードコマンドまたはライトコマンドと前記第2の生成ステップにより生成されたページ制御コマンドとが競合する場合には、前記保持手段に保持されているアクセス要求のうちのページが既にオープンされているアクセス要求に基づき、前記第1の生成ステップにより生成されたリードコマンドまたはライトコマンドと前記第2の生成ステップにより生成されたページ制御コマンドのいずれかを前記メモリに発行する発行ステップと
を有することを特徴とするメモリコントローラの制御方法。 - コンピュータを、請求項1~15のいずれか1項に記載されたメモリコントローラの各手段として機能させるためのプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022053738A JP2023146524A (ja) | 2022-03-29 | 2022-03-29 | メモリコントローラ、メモリコントローラの制御方法およびプログラム |
US18/189,104 US20230325121A1 (en) | 2022-03-29 | 2023-03-23 | Memory controller, control method for controlling memory controller, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022053738A JP2023146524A (ja) | 2022-03-29 | 2022-03-29 | メモリコントローラ、メモリコントローラの制御方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023146524A true JP2023146524A (ja) | 2023-10-12 |
Family
ID=88239241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022053738A Pending JP2023146524A (ja) | 2022-03-29 | 2022-03-29 | メモリコントローラ、メモリコントローラの制御方法およびプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230325121A1 (ja) |
JP (1) | JP2023146524A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6883764B2 (ja) * | 2018-09-28 | 2021-06-09 | パナソニックIpマネジメント株式会社 | コマンド制御システム、車両、コマンド制御方法及びプログラム |
-
2022
- 2022-03-29 JP JP2022053738A patent/JP2023146524A/ja active Pending
-
2023
- 2023-03-23 US US18/189,104 patent/US20230325121A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230325121A1 (en) | 2023-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6754783B2 (en) | Memory controller with power management logic | |
US7603512B2 (en) | Dynamic memory refresh controller, memory system including the same and method of controlling refresh of dynamic memory | |
KR101893895B1 (ko) | 메모리 시스템 및 그 동작 제어 방법 | |
CN101625892B (zh) | 动态随机访问存储器的控制器及用户指令处理方法 | |
JP2014154119A (ja) | メモリ制御装置及び半導体記憶装置 | |
CN105912270A (zh) | 一种面向pm的访存请求解析装置与方法 | |
JP2018205859A (ja) | メモリコントローラとその制御方法 | |
JP2023146524A (ja) | メモリコントローラ、メモリコントローラの制御方法およびプログラム | |
KR101436442B1 (ko) | 읽기 및 쓰기 접근에 따른 선택적 리프레쉬 기능을 구비한 동적 메모리 장치 및 그 선택적 리프레쉬 방법 | |
JP2022128226A (ja) | メモリ制御回路およびその制御方法 | |
CN118860296A (zh) | 流表项存储系统、设备以及集群 | |
US11694735B2 (en) | Memory controller and method of controlling the memory controller | |
US10592163B2 (en) | Controlling write pulse width to non-volatile memory based on free space of a storage | |
US11704246B2 (en) | Memory system for maintaining data consistency and operation method thereof | |
KR20200089886A (ko) | 데이터 저장 시스템 및 이를 위한 프리차지 정책 설정 방법 | |
CN112365910A (zh) | 一种存储器及神经形态芯片 | |
US8484411B1 (en) | System and method for improving access efficiency to a dynamic random access memory | |
US20240370173A1 (en) | Memory controller, control method for memory controller, and storage medium | |
CN113946435A (zh) | 内存管理技术及计算机系统 | |
US10185510B2 (en) | Bank interleaving controller and semiconductor device including the same | |
US12094515B2 (en) | Dynamic random access memory (DRAM) row hammering mitigation | |
CN112631960B (zh) | 高速缓冲存储器的扩展方法 | |
US20220319582A1 (en) | Memory management apparatus, memory management method, and computer-readable recording medium storing memory management program | |
JP2006511009A (ja) | メモリデバイスのメモリ動作を行う方法およびシステム | |
JP2006107245A (ja) | メモリコントローラ |