JP2023072873A - メモリ制御装置及びその制御方法 - Google Patents
メモリ制御装置及びその制御方法 Download PDFInfo
- Publication number
- JP2023072873A JP2023072873A JP2021185570A JP2021185570A JP2023072873A JP 2023072873 A JP2023072873 A JP 2023072873A JP 2021185570 A JP2021185570 A JP 2021185570A JP 2021185570 A JP2021185570 A JP 2021185570A JP 2023072873 A JP2023072873 A JP 2023072873A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- refresh operation
- access request
- command
- block
- 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
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Memory System (AREA)
- Dram (AREA)
Abstract
【課題】ダイナミックメモリに対するリフレッシュ動作及びアクセスリクエストを適切に実行することが可能なメモリ制御装置及びその制御方法を提供する。【解決手段】ダイナミックメモリを制御するメモリ制御装置110は、ダイナミックメモリ120に対するアクセスリクエストを保持するアクセスリクエスト保持部と、ダイナミックメモリのリフレッシュ動作が完了してからの経過時間を計時する計時部と、リフレッシュ動作及びアクセスリクエストの選択に係る重みと、計時部が計時した時間とに基づいて、リフレッシュ動作を起動するメモリコマンド又はアクセスリクエスト保持部が保持するアクセスリクエストに対応するメモリコマンドを生成してダイナミックメモリに発行するメモリコマンド生成・発行部と、を有する。【選択図】図1
Description
本発明は、ダイナミックメモリを制御するメモリ制御装置及びその制御方法に関する。
情報処理装置等のメモリシステムに使用するメモリデバイスの1つに、キャパシタ(コンデンサ)を記憶素子に使用したダイナミックメモリがある。ダイナミックメモリは、時間の経過とともに記憶素子のキャパシタから電荷が喪失し記憶している情報が破損しないよう、定期的に記憶素子のキャパシタに電荷を更新するリフレッシュ動作が必要である。ダイナミックメモリは、すべての記憶素子に対して、リフレッシュ動作から所定の時間以内に次のリフレッシュ動作を実行することを要求しており、この要求を満たさない場合には記憶している情報が破損するおそれが生じる。一方、リフレッシュ動作を実行中は、メモリ内容の読み出しなどのアクセスリクエストを処理することができない。したがって、記憶している情報の破損を防止するためにリフレッシュ動作を優先して実行すると、ダイナミックメモリの動作性能が低下する。つまり、ダイナミックメモリでは、アクセスリクエストの実行に優先してリフレッシュ動作を実行すると動作性能は低下する。反対に、アクセスリクエストの実行をリフレッシュ動作に優先すると、必要なリフレッシュ動作が実行できないおそれが生じる。
ダイナミックメモリを制御対象とするメモリ制御装置において、リフレッシュ動作とアクセスリクエストの調停に係る技術が提案されている。特許文献1には、アクセスリクエストの実行順を入れ替えることでリフレッシュ動作とアクセスリクエストを調停する技術が開示されている。特許文献2には、リフレッシュ動作の対象ブロックを選択するにあたり、アクセスリクエストの対象ブロックとは別のブロックを選択する技術が開示されている。特許文献3には、リフレッシュ動作の対象ブロックが動作中ならば別のブロックに対するリフレッシュ動作を先行して実行し、先行したリフレッシュ動作の完了に続いて待ち合わせたリフレッシュ動作を実行する技術が開示されている。
しかし、特許文献1に開示された技術では、常にリフレッシュ動作をアクセスリクエストに優先して実行するため、ダイナミックメモリの動作性能が低下してしまう。また、特許文献2及び特許文献3に開示された技術では、アクセスリクエストをリフレッシュ動作に優先して実行するため、リフレッシュ動作を確実に実施できないおそれがある。本発明は、このような事情に鑑みてなされたものであり、ダイナミックメモリに対するリフレッシュ動作及びアクセスリクエストを適切に実行できるようにすることを目的とする。
本発明に係るメモリ制御装置は、ダイナミックメモリを制御するメモリ制御装置であって、前記ダイナミックメモリに対するアクセスリクエストを保持する保持手段と、前記ダイナミックメモリのリフレッシュ動作が完了してからの経過時間を計時する計時手段と、前記リフレッシュ動作及び前記アクセスリクエストの選択に係る重みと、前記計時手段が計時した時間とに基づいて、前記リフレッシュ動作を起動するメモリコマンド又は前記保持手段が保持する前記アクセスリクエストに対応するメモリコマンドを生成し、前記ダイナミックメモリに発行するコマンド生成手段とを有することを特徴とする。
本発明によれば、ダイナミックメモリに対するリフレッシュ動作及びアクセスリクエストを適切に実行することが可能となる。
以下、本発明の実施形態を図面に基づいて説明する。ただし、本発明の趣旨及びその範囲から逸脱することなく、実施形態を変更することは可能であり、本実施の形態は記載内容に限定するものではない。また、以下に示す実施形態は、特に限定する場合を除き、ハードウェア上に実装しても、あるいはソフトウェアで実装しても構わない。なお、以下の説明において、同一の機能を有する構成には同一の符号を付し、重複する説明は省略する。
(第1の実施形態)
図1は、第1の実施形態に係るメモリ制御装置(メモリコントローラ)110の構成例を示すブロック図である。メモリ制御装置110は、アクセスリクエスト保持部111、計時部112、メモリコマンド生成・発行部113、及びメモリ状態保持部114を有する。メモリ制御装置110は、ダイナミックメモリ120の動作を制御する。ダイナミックメモリ120は、例えばDRAM(Dynamic Random Aceess Memory)である。
図1は、第1の実施形態に係るメモリ制御装置(メモリコントローラ)110の構成例を示すブロック図である。メモリ制御装置110は、アクセスリクエスト保持部111、計時部112、メモリコマンド生成・発行部113、及びメモリ状態保持部114を有する。メモリ制御装置110は、ダイナミックメモリ120の動作を制御する。ダイナミックメモリ120は、例えばDRAM(Dynamic Random Aceess Memory)である。
アクセスリクエスト保持部111は、ダイナミックメモリ120を参照する機能モジュール、例えばCPU(Central Processing Unit)が、メモリ制御装置110に対して発行するアクセスリクエストREQを保持する。アクセスリクエスト保持部111は、保持している情報の参照順に制限は存在せず、保持している情報を任意に参照可能とする。計時部112は、経過時間を計時する。本実施形態では計時部112の示す値をTcとする。メモリコマンド生成・発行部113は、制御対象のダイナミックメモリ120に対して動作を指示するメモリコマンドを生成し、生成したメモリコマンドMCMDをダイナミックメモリ120に発行する。メモリ状態保持部114は、ダイナミックメモリ120の動作状態を保持する。ダイナミックメモリ120の動作状態には、例えば、コマンド受付可能、動作中、及び回復期間の各状態がある。
ここで、以下の説明に適用する諸元あるいは記号を説明する。まず、経過時間の計時は、メモリ制御装置110を初期化した時刻又はダイナミックメモリ120に対するリフレッシュ動作が完了した時刻から実施する。すなわち、メモリ制御装置110が動作中は、リフレッシュ動作が完了する度に経過時間を計時している計時部112の値Tcを初期値に設定してから計時を再開する。本実施形態では初期値は0とする。
また、ダイナミックメモリ120が記憶している情報を保持するために必要なリフレッシュ動作の最大間隔をtREFとする。つまり、ダイナミックメモリ120が記憶している情報を確実に保持するためには、時刻tREFまでに次のリフレッシュ動作を起動しなければならない。時刻tREFまでに次のリフレッシュ動作を起動しないならば、ダイナミックメモリ120が記憶している情報が破損するおそれが生じる。
リフレッシュ動作が完了してから次にリフレッシュ動作を起動すべき時刻(次のリフレッシュ動作の実行期限)までの期間、すなわち、時刻0から時刻tREFまでの期間を(n+1)個の複数の期間Pに分割する。ここで、nは0以上の整数とする。分割した(n+1)個の期間Pは、時刻tREFに近い期間から、P0、P1、P2、・・・とし、最も時刻0に近い期間をPnとする。また、期間Pm(mは添え字であり、0≦m≦nの整数、以下についても同様)の開始時刻SPmと終了時刻EPmは、下記(式1)で定義する係数kmを適用し、下記(式2)で定義する値とする。ただし、期間Pnの開始時刻SPnは時刻0とする。
また、期間Pmに対応して、期間Pmにおいてリフレッシュ動作を選択する割合を示す重みwmを定義する。すなわち、期間毎にリフレッシュ動作を選択する割合を示す重みwを定義する。本実施形態では、重みwmを下記(式3)で定義する。リフレッシュ動作及びアクセスリクエストの選択において、重みwmの値が1であるならば常にリフレッシュ動作を選択し、反対に重みwmの値が0であるならば常にアクセスリクエストを選択するものとする。本実施形態では、重みw0の値は恒常的に1とし、重みwnの値は恒常的に0とする。すなわち、期間P0ではアクセスリクエストの有無にかかわらず常にリフレッシュ動作が選択され、期間Pnではアクセスリクエストが存在するならば常にアクセスリクエストが選択される。また、重みwmは、下記(式3)で定義されるよう、mの値が小さくなるに伴って値が大きくなるように、すなわちリフレッシュ動作が完了してからの経過時間が長くなるに伴ってリフレッシュ動作を選択する割合が大きくなるように設定される。
続いて、第1の実施形態における動作を詳しく説明する。メモリ制御装置110は、ダイナミックメモリ120を参照する機能モジュール、例えばCPUから発行されたアクセスリクエストREQを受信すると、アクセスリクエストと付随情報を受信した順番にアクセスリクエスト保持部111に格納する。付随情報は、例えばメモリアクセスに係るアクセスアドレス、参照バイト数、及び書き込みデータ等である。アクセスリクエスト保持部111が保持している情報の参照は、格納順にかかわらず任意に参照可能である。
計時部112は、ダイナミックメモリ120に対するリフレッシュ動作が完了した時刻から経過時間の計時を実行する。ダイナミックメモリ120に対するコマンド発行や応答の処理はメモリコマンド生成・発行部113が実行している。したがって、ダイナミックメモリ120のリフレッシュ動作が完了したことをメモリコマンド生成・発行部113が検知すると、メモリコマンド生成・発行部113は計時部112に初期化要求を送信する。この初期化要求を受信した計時部112は、経過時間を初期値に設定する。本実施形態では、経過時間の初期値は0とし、経過時間は加算方式で計時するとする。したがって、計時部112が示す値Tcは、リフレッシュ動作が完了した時点からの経過時間である。
メモリコマンド生成・発行部113は、期間Pm及びそれに対応する重みwmに従って、リフレッシュ動作を起動するメモリコマンド(リフレッシュコマンド)、あるいはアクセスリクエストに対応するメモリコマンドを生成する。メモリコマンド生成・発行部113は、生成したメモリコマンドMCMDをダイナミックメモリ120に発行する。メモリコマンド生成・発行部113が、メモリコマンドを生成し発行する処理を、図2及び図3を参照して説明する。
図2は、メモリコマンド生成・発行部113の動作を説明する図である。図2には、メモリコマンド生成・発行部113の動作を時間の経過を基に図示しており、リフレッシュ動作の完了時刻を時刻0とし、リフレッシュ実行期限、すなわち時刻tREFまでの各期間におけるメモリコマンド生成・発行部113の動作を示している。
図2において、リフレッシュ実行期限に最も近い期間P0は、他の期間と比較してリフレッシュ実行期限までの残り時間が最小である。この期間P0に現時点が存在するならば、メモリコマンド生成・発行部113は、常にリフレッシュ動作を選択し、リフレッシュ動作を起動するメモリコマンドを生成し発行する。つまり、メモリコマンド生成・発行部113は、計時部112が計時した時間に基づいて、次のリフレッシュ実行期限までの残り時間が閾値未満(k1*tREF未満)であれば、リフレッシュ動作を起動するメモリコマンドを生成し発行する。
一方、期間Pnは、他の期間と比較してリフレッシュ実行期限までの残り時間が最大である。この期間Pnに現時点が存在し、かつアクセスリクエスト保持部111にアクセスリクエストが存在するならば、メモリコマンド生成・発行部113は、アクセスリクエストを選択する。そして、メモリコマンド生成・発行部113は、選択したアクセスリクエストに対応するメモリコマンドを生成し発行する。
期間P0と期間Pn以外の期間である期間P1~Pn-1では、メモリコマンド生成・発行部113は、各期間に対応する重みwmに従いリフレッシュ動作を選択する。また、期間P1~Pn-1では、リフレッシュ動作を選択せず、かつアクセスリクエスト保持部111にアクセスリクエストが存在するならば、メモリコマンド生成・発行部113は、アクセスリクエストを選択する。そして、メモリコマンド生成・発行部113は、選択したリフレッシュ動作又はアクセスリクエストに応じて、メモリコマンドを生成し発行する。
なお、メモリコマンド生成・発行部113は、期間P0~期間Pn-1の各期間におけるアクセスリクエストの選択において、アクセスリクエスト保持部111にアクセスリクエストが複数保持されている場合、その内の1つのアクセスリクエストを選択する。本実施形態では、メモリコマンド生成・発行部113は、アクセスリクエスト保持部111に保持されている複数のアクセスリクエストの内から、アクセスリクエスト保持部111に存在している経過時間が最長のアクセスリクエストを選択する。すなわち、メモリコマンド生成・発行部113は、アクセスリクエスト保持部111への格納が最先のアクセスリクエスト(時間的に最も古いアクセスリクエスト)を選択する。
図3は、メモリコマンド生成・発行部113の動作例を示すフローチャートである。メモリコマンド生成・発行部113は、図3に示すS301からS309までの各工程を繰り返し実行し、メモリコマンドの生成と発行を行う。
S301にて、メモリコマンド生成・発行部113は、計時部112が示す値Tcに基づいて、現時点が存在する期間Pcを判断する。メモリコマンド生成・発行部113は、計時部112が示す値Tcと、前述した(式2)で定義される期間Pmの開始時刻SPm及び終了時刻EPmとを比較することで、現時点が期間P0から期間Pnまでの期間の内のいずれの期間に存在しているかを判断する。
例えば、n=2、Tc=7、tREF=20、k1=0.6、k2=0.3であったとする。すなわち、この例では、時刻0から時刻tREFまでの期間を3(=n+1)個の期間P0、P1、P2に分割している。また、期間P1の開始時刻SP1が6(=k2*tREF)であり、期間P1の終了時刻EP1が12(=k1*tREF)である。したがって、メモリコマンド生成・発行部113は、計時部112が示す値Tcが7であるので、現時点が存在する期間Pcが期間P1であると判断する。
S302にて、メモリコマンド生成・発行部113は、S301において求めた現時点が存在する期間Pcが期間P0であるか否かを判定する。現時点が存在する期間Pcが期間P0であるならば、他の期間P1~Pnのいずれの期間と比較して、次のリフレッシュ動作を実行すべき時刻tREFまでの残り時間が少ない。したがって、メモリコマンド生成・発行部113は、現時点が存在する期間Pcが期間P0であると判定した場合(S302でYES)、アクセスリクエストの有無にかかわらずリフレッシュ動作を選択し、S305へ分岐する。一方、メモリコマンド生成・発行部113は、現時点が存在する期間Pcが期間P0ではないと判定した場合(S302でNO)、S303へ分岐する。
S303にて、メモリコマンド生成・発行部113は、S301において求めた現時点が存在する期間Pcが期間Pnであるか否かを判定する。現時点が存在する期間Pcが期間Pnであるならば、他の期間P0~Pn-1のいずれの期間と比較して、次のリフレッシュ動作を実行すべき時刻tREFまでの残り時間が多い。したがって、メモリコマンド生成・発行部113は、現時点が存在する期間Pcが期間Pnであると判定した場合(S303でYES)、アクセスリクエストの実行を選択し、S306へ分岐する。一方、メモリコマンド生成・発行部113は、現時点が存在する期間Pcが期間Pnではないと判定した場合(S303でNO)、S304へ分岐する。
S304は、現時点が存在する期間Pcが期間P0あるいは期間Pnのどちらにも存在しないとメモリコマンド生成・発行部113が判定した場合に実行する。S304にて、メモリコマンド生成・発行部113は、リフレッシュ動作又はアクセスリクエストの実行を重みwに従って選択する。メモリコマンド生成・発行部113が、重みwに従ってリフレッシュ動作あるいはアクセスリクエストの実行を選択する処理の詳細については後述する。リフレッシュ動作を選択したならば(S304でYES)、メモリコマンド生成・発行部113は、S305へ分岐する。一方、アクセスリクエストの実行を選択したならば(S304でNO)、メモリコマンド生成・発行部113は、S306へ分岐する。
S305は、メモリコマンド生成・発行部113がリフレッシュ動作を選択した場合に実行する。S305にて、メモリコマンド生成・発行部113は、リフレッシュ動作を起動するメモリコマンド(リフレッシュコマンド)を生成する。
S306は、メモリコマンド生成・発行部113がアクセスリクエストの実行を選択した場合に実行する。S306にて、メモリコマンド生成・発行部113は、アクセスリクエスト保持部111にアクセスリクエストが存在するか否かを判定する。メモリコマンド生成・発行部113は、アクセスリクエスト保持部111にアクセスリクエストが存在すると判定した場合(S306でYES)、アクセスリクエストに対応するメモリコマンドを生成するためにS307に分岐する。一方、メモリコマンド生成・発行部113は、アクセスリクエスト保持部111にアクセスリクエストが存在しないと判定した場合(S306でNO)、ダイナミックメモリ120に対するメモリコマンドの発行はなく、この時刻の図3に示す動作を終了する。
S307にて、メモリコマンド生成・発行部113は、アクセスリクエスト保持部111が保持しているアクセスリクエストに対応するメモリコマンドを生成する。アクセスリクエスト保持部111が保持しているアクセスリクエストが1つである場合、メモリコマンド生成・発行部113は、そのアクセスリクエストに対応するメモリコマンドを生成する。一方、アクセスリクエスト保持部111が複数のアクセスリクエストを保持している場合、メモリコマンド生成・発行部113は、アクセスリクエスト保持部111に存在している時間が最も長いアクセスリクエストを選択し、対応するメモリコマンドを生成する。
S308にて、メモリコマンド生成・発行部113は、制御対象のダイナミックメモリ120の状態がコマンド受付可能の状態、すなわちメモリコマンドをダイナミックメモリ120に発行可能であるか否かを判定する。この判定は、メモリ状態保持部114が保持しているダイナミックメモリ120の状態に基づいて判定する。メモリコマンド生成・発行部113は、ダイナミックメモリ120の状態がコマンド受付可能の状態であると判定した場合(S308でYES)、S309へ分岐する。一方、メモリコマンド生成・発行部113は、ダイナミックメモリ120の状態がコマンド受付可能の状態ではないと判定した場合(S308でNO)、ダイナミックメモリ120の状態がコマンド受付可能の状態に遷移するまでS308で待機する。
S309にて、メモリコマンド生成・発行部113は、S305において生成したリフレッシュ動作を起動するメモリコマンド、又はS307で生成したアクセスリクエストに対応するメモリコマンドを、ダイナミックメモリ120に発行する。
図3に示した本実施形態におけるメモリコマンドの生成・発行手順は、逐次的に各工程の処理を実行して、メモリコマンドを生成・発行している。しかし、メモリコマンドの生成・発行に係る処理は、逐次処理に限定したものではない。メモリコマンドの生成・発行に係る工程のうち、並行して実施可能な工程は並行に実施し、逐次的に処理しなければならない工程は逐次的に処理することで、メモリコマンドの生成・発行を実施するようにしてもよい。
ここで、メモリコマンド生成・発行部113が、リフレッシュ動作又はアクセスリクエストの実行を選択する処理について説明する。メモリコマンド生成・発行部113は、例えば、以下のようにして、期間Pmにおいてリフレッシュ動作を選択する割合を示す重みwm(0≦wm≦1)に基づいて、リフレッシュ動作あるいはアクセスリクエストの実行を選択する。メモリコマンド生成・発行部113は、所定のタイミングで値が変化する、0≦RN<1の範囲の乱数RNを発生する機能を有している。
メモリコマンド生成・発行部113は、重みwmが1である、すなわち現時点が存在する期間が期間P0であれば、アクセスリクエストの有無にかかわらず、常にリフレッシュ動作を選択する。一方、メモリコマンド生成・発行部113は、重みwmが1ではない場合、乱数RNの値と重みwmの値とを比較し、比較結果に応じてリフレッシュ動作あるいはアクセスリクエストの実行を選択する。メモリコマンド生成・発行部113は、乱数RNの値が重みwmの値未満(RN<wm)であればリフレッシュ動作を選択し、乱数RNの値が重みwmの値以上(wm≦RN)であればアクセスリクエストの実行を選択する。このようにして、メモリコマンド生成・発行部113は、重みwmに基づいて、wmの割合でリフレッシュ動作を選択し、(1-wm)の割合でアクセスリクエストの実行を選択する。
次に、メモリ状態保持部114の動作を説明する。メモリ状態保持部114は、制御対象であるダイナミックメモリ120の状態を保持している。本実施形態において、メモリ状態保持部114が保持するダイナミックメモリ120の状態は、以下の3状態とする。
a)コマンド受付可能
b)動作中
c)回復期間
a)コマンド受付可能
b)動作中
c)回復期間
ここで、メモリ状態保持部114では、図4に示す状態遷移図に従ってダイナミックメモリ120の状態が遷移する。図4を参照してメモリ状態保持部114の動作を説明する。メモリ制御装置110を初期化すると、メモリ状態保持部114が保持するダイナミックメモリ120の状態は、コマンド受付可能の状態401に遷移する。このコマンド受付可能の状態401は、ダイナミックメモリ120がメモリコマンドを受付可能な状態であることを示している。このコマンド受付可能の状態401の時に限り、メモリコマンド生成・発行部113は、ダイナミックメモリ120にメモリコマンドを発行することができる。
メモリコマンド生成・発行部113がメモリコマンドを発行し、ダイナミックメモリ120がメモリコマンドに対応した動作を開始すると、メモリ状態保持部114が保持するダイナミックメモリ120の状態は、動作中の状態402に遷移する。そして、ダイナミックメモリ120においてメモリコマンドに対応した動作が完了すると、メモリ状態保持部114が保持するダイナミックメモリ120の状態は、回復期間の状態403に遷移する。この回復期間の状態403は、ダイナミックメモリ120においてメモリコマンドに対応した動作は完了しているが、新たなメモリコマンドは受付不可能な状態であることを示している。
ダイナミックメモリ120が新たなメモリコマンドを受付可能な状態になると、メモリ状態保持部114が保持するダイナミックメモリ120の状態は、コマンド受付可能の状態401に遷移する。メモリコマンドに対応した動作が完了してから次のメモリコマンドを受付可能になるまでの時間は、制御対象のダイナミックメモリにより異なる。したがって、メモリ制御装置110には、接続する制御対象のダイナミックメモリの仕様に基づいて、回復期間の状態403からコマンド受付可能の状態401への遷移条件を設定しておく。あるいは、接続することが予想される制御対象のダイナミックメモリのうちで、最長の回復期間に合わせて、回復期間の状態403からコマンド受付可能の状態401への遷移条件を設定するようにしてもよい。
次に、図5(a)及び図5(b)を参照して、本実施形態におけるメモリコマンド実行の一例を説明する。図5(a)及び図5(b)は、メモリコマンドに応じて実行されるダイナミックメモリ120の動作(メモリ動作)と、アクセスリクエスト保持部111が保持しているアクセスリクエスト(保持コマンド)の変化を時系列で示した図である。
図5(a)及び図5(b)には、リフレッシュ動作が完了してから次のリフレッシュ動作の実行期限までの期間、すなわち、時刻0から時刻tREFまでの期間が3つの期間P0、P1、P2に分割される例を示している。また、図5(a)及び図5(b)に示したメモリ動作において、“Ref”はリフレッシュ動作の実行を表し、“Write”はライトコマンドの処理の実行を表し、“Read”はリードコマンドの処理の実行を表すものとする。
また、図5(a)及び図5(b)に示す例において、メモリ制御装置110に対して、以下の順でアクセスリクエストが発行され、アクセスリクエスト保持部111に格納されるものとする(括弧内は図5(a)及び図5(b)における表記を示す)。
1)2ビートライトリクエスト (2bwrite)
2)1ビートリードリクエスト (1bread)
3)2ビートリードリクエスト (2bread)
4)1ビートリードリクエスト (1bread)
1)2ビートライトリクエスト (2bwrite)
2)1ビートリードリクエスト (1bread)
3)2ビートリードリクエスト (2bread)
4)1ビートリードリクエスト (1bread)
図5(a)において、リフレッシュ動作501が完了した時刻、すなわち時刻0には、アクセスリクエスト保持部111は、2ビートライトリクエスト511と、1ビートリードリクエスト512を保持している。
リフレッシュ動作完了後、時刻k2*tREFまでの期間P2では、アクセスリクエスト保持部111にアクセスリクエストが存在するならば、メモリコマンド生成・発行部113は、アクセスリクエストを選択してメモリコマンドを生成・発行する。図5(a)に示すように、期間P2の開始時、アクセスリクエスト保持部111は、2ビートライトリクエスト511と1ビートリードリクエスト512とを保持している。この2つのアクセスリクエストの内、アクセスリクエスト保持部111が保持している時間がより長いアクセスリクエストは、2ビートライトリクエスト511である。よって、メモリコマンド生成・発行部113は、図3に示したS307で2ビートライトリクエスト511に対応するメモリコマンド(ライトコマンド)を生成し、ダイナミックメモリ120に発行する。ダイナミックメモリ120は、そのライトコマンドを受け付け、ライトコマンドを処理する。図5(a)に示す例では、第1番目の期間P2で、ダイナミックメモリ120が、2ビートライトリクエスト511に対応したライトコマンドの処理502、503を実行していることを示している。
ライトコマンドの処理502、503の完了後、ダイナミックメモリ120が次のメモリコマンドを受付可能な状態になったとする。すなわち、図4に示した状態遷移図で、回復期間の状態403を経過しコマンド受付可能の状態401に遷移している。また、この状態遷移に伴う時間経過に因り、現時刻は期間P2から期間P1に遷移したとする。
期間P1では、メモリコマンド生成・発行部113は、重みw1に従ってリフレッシュ動作とアクセスリクエストの実行の選択割合を定める。メモリコマンド生成・発行部113は、前述したように、例えば乱数RN及び重みw1を用いて、w1の割合でリフレッシュ動作を選択し、(1-w1)の割合でアクセスリクエストの実行を選択する。図5(a)に示す例では、メモリコマンド生成・発行部113がアクセスリクエストの実行を選択したとする。このとき、アクセスリクエスト保持部111は、1ビートリードリクエスト512と2ビートリードリクエスト513とを保持している。よって、メモリコマンド生成・発行部113は、より古いアクセスリクエストである1ビートリードリクエスト512に対応するメモリコマンド(リードコマンド)を生成し、ダイナミックメモリ120に発行する。このリードコマンドを受けて、ダイナミックメモリ120が、1ビートリードリクエスト512に対応したリードコマンドの処理504を実行する。
リードコマンドの処理504の完了後、ダイナミックメモリ120が次のメモリコマンドを受付可能な状態になったとする。すなわち、図4に示した状態遷移図で、回復期間の状態403を経過しコマンド受付可能の状態401に遷移している。今回は1ビートリードリクエストに対応するリードコマンドの処理であったことから時間の経過は小さく、コマンド受付可能の状態401に遷移した時点で期間P1に留まっているとする。
現時刻が期間P1に存在しているので、前回と同様に、メモリコマンド生成・発行部113は、重みw1に従って、w1の割合でリフレッシュ動作を選択し、(1-w1)の割合でアクセスリクエストの実行を選択する。図5(a)に示す例では、メモリコマンド生成・発行部113が再びアクセスリクエストの実行を選択したとする。このとき、アクセスリクエスト保持部111は、2ビートリードリクエスト513と1ビートリードリクエスト514とを保持している。よって、メモリコマンド生成・発行部113は、より古いアクセスリクエストである2ビートリードリクエスト513に対応するメモリコマンド(リードコマンド)を生成し、ダイナミックメモリ120に発行する。このリードコマンドを受けて、ダイナミックメモリ120が、2ビートリードリクエスト513に対応したリードコマンドの処理505、506を実行する。
2ビートリードリクエストに対応するリードコマンドは処理時間が長い。図5(a)に示すように、リードコマンドの処理505、506の完了後、ダイナミックメモリ120が次のメモリコマンドを受付可能な状態に遷移した時点で、現時刻は期間P1から期間P0に遷移している。
期間P0では、メモリコマンド生成・発行部113は、アクセスリクエスト保持部111の状態にかかわらずリフレッシュ動作を選択する。したがって、メモリコマンド生成・発行部113は、リフレッシュ動作を起動するメモリコマンド(リフレッシュコマンド)を生成し、ダイナミックメモリ120に発行する。このリフレッシュコマンドを受けて、ダイナミックメモリ120が、リフレッシュ動作507を実行する。このリフレッシュコマンドによるリフレッシュ動作507が完了した時点で、メモリ制御装置110は計時部112の初期化を実施する。この初期化により、計時部112が示す値Tcが0に初期化されることで時刻は0に戻り、期間P2に遷移する。
期間P2に遷移したことで、アクセスリクエスト保持部111にアクセスリクエストが存在するならば、メモリコマンド生成・発行部113は、アクセスリクエストを選択してメモリコマンドを生成・発行する。図5(a)に示すように、第2番目の期間P2の開始時、アクセスリクエスト保持部111は、1ビートリードリクエスト514を保持している。よって、メモリコマンド生成・発行部113は、1ビートリードリクエスト514に対応するメモリコマンド(リードコマンド)を生成し、ダイナミックメモリ120に発行する。このリードコマンドを受けて、ダイナミックメモリ120が、1ビートリードリクエスト514に対応したリードコマンドの処理508を実行する。
続いて、本実施形態におけるメモリコマンド実行の他の例を、図5(b)を参照して説明する。図5(b)に示す例においても、図5(a)に示した例と同様に、リフレッシュ動作521が完了した時刻、すなわち時刻0には、アクセスリクエスト保持部111は、2ビートライトリクエスト531と、1ビートリードリクエスト532を保持している。
リフレッシュ動作完了後、時刻k2*tREFまでの期間P2では、アクセスリクエスト保持部111にアクセスリクエストが存在するならば、メモリコマンド生成・発行部113は、アクセスリクエストを選択してメモリコマンドを生成・発行する。図5(b)に示す例では、図5(a)に示した例と同様に、メモリコマンド生成・発行部113は、図3に示したS307で2ビートライトリクエスト531に対応するメモリコマンド(ライトコマンド)を生成し、ダイナミックメモリ120に発行する。ダイナミックメモリ120は、そのライトコマンドを受け付け、ライトコマンドを処理する。図5(a)に示した例と同様に、図5(b)に示す例でも、第1番目の期間P2で、ダイナミックメモリ120が、2ビートライトリクエスト531に対応したライトコマンドの処理522、523を実行していることを示している。そして、図5(b)に示す例においても、図5(a)に示した例と同様に、ライトコマンドの処理522、523の完了後、現時刻は期間P2から期間P1に遷移する。
期間P1では、メモリコマンド生成・発行部113は、重みw1に基づき、w1の割合でリフレッシュ動作を選択し、(1-w1)の割合でアクセスリクエストの実行を選択する。図5(b)に示す例では、図5(a)に示した例と同様に、メモリコマンド生成・発行部113がアクセスリクエストの実行を選択したとする。このとき、アクセスリクエスト保持部111は、1ビートリードリクエスト532と2ビートリードリクエスト533とを保持している。したがって、メモリコマンド生成・発行部113は、より古いアクセスリクエストである1ビートリードリクエスト532に対応するメモリコマンド(リードコマンド)を生成し、ダイナミックメモリ120に発行する。このリードコマンドを受けて、ダイナミックメモリ120が、1ビートリードリクエスト532に対応したリードコマンドの処理524を実行する。
リードコマンドの処理524の完了後、ダイナミックメモリ120の状態がコマンド受付可能の状態に遷移した時点で期間P1に留まっているとする。これは、1ビートリードリクエストに対応するリードコマンドの処理であったことから時間の経過は小さいためである。
現時刻が期間P1に存在しているので、前回と同様に、メモリコマンド生成・発行部113は、重みw1に従って、w1の割合でリフレッシュ動作を選択し、(1-w1)の割合でアクセスリクエストの実行を選択する。図5(b)に示す例では、メモリコマンド生成・発行部113がリフレッシュ動作を選択したとする。したがって、メモリコマンド生成・発行部113は、リフレッシュ動作を起動するメモリコマンド(リフレッシュコマンド)を生成し、ダイナミックメモリ120に発行する。このリフレッシュコマンドを受けて、ダイナミックメモリ120が、リフレッシュ動作525を実行する。このリフレッシュコマンドによるリフレッシュ動作525が完了した時点で、メモリ制御装置110は計時部112の初期化を実施する。この初期化により、計時部112が示す値Tcが0に初期化されることで時刻は0に戻り、期間P2に遷移する。
期間P2に遷移したことで、アクセスリクエスト保持部111にアクセスリクエストが存在するならば、メモリコマンド生成・発行部113は、アクセスリクエストを選択してメモリコマンドを生成・発行する。図5(b)に示すように、第2番目の期間P2の開始時、アクセスリクエスト保持部111は、2ビートリードリクエスト533と1ビートリードリクエスト534とを保持している。したがって、メモリコマンド生成・発行部113は、より古いアクセスリクエストである2ビートリードリクエスト533に対応するメモリコマンド(リードコマンド)を生成し、ダイナミックメモリ120に発行する。このリードコマンドを受けて、ダイナミックメモリ120が、2ビートリードリクエスト533に対応したリードコマンドの処理526、527を実行する。
このリードコマンドの処理526、527の完了後、ダイナミックメモリ120の状態がコマンド受付可能の状態に遷移した時点で期間P1に遷移したとする。期間P1であるので、メモリコマンド生成・発行部113は、重みw1に基づき、w1の割合でリフレッシュ動作を選択し、(1-w1)の割合でアクセスリクエストの実行を選択する。図5(b)に示す例では、第2番目の期間P1において、メモリコマンド生成・発行部113がアクセスリクエストの実行を選択したとする。アクセスリクエスト保持部111は、1ビートリードリクエスト534を保持している。したがって、メモリコマンド生成・発行部113は、1ビートリードリクエスト534に対応するメモリコマンド(リードコマンド)を生成し、ダイナミックメモリ120に発行する。このリードコマンドを受けて、ダイナミックメモリ120が、1ビートリードリクエスト534に対応したリードコマンドの処理528を実行する。
本実施形態によれば、常にリフレッシュ動作又はアクセスリクエストの一方を優先して実行するのではなく、リフレッシュ動作を完了してからの経過時間に応じて値が異なる重みに従ってリフレッシュ動作又はアクセスリクエストを選択し実行する。これにより、リフレッシュ動作及びアクセスリクエストを適切に実行することができ、ダイナミックメモリの動作性能が低下することなく、リフレッシュ動作を確実に実行することが可能となる。
本実施形態では、計時部112は、その初期値を0とし、時間の経過とともに値が増加する。しかし、計時部112は、これに限定されるものではなく、例えば、初期値をtREFとし、時間の経過とともに値が減少するようにしてもよい。この場合には、係数kmは下記(式3)によって定義される係数を適用すればよい。
また、本実施形態では、重みwmとしてリフレッシュ動作を選択する割合を示す重みを用いているが、アクセスリクエストの実行を選択する割合を示す重みを用いてもよい。アクセスリクエストの実行を選択する割合を示す場合、重みwmは、mの値が小さくなるに伴って値が小さくなるように設定すればよい。すなわち、重みwmは、リフレッシュ動作が完了してからの経過時間が長くなるに伴ってアクセスリクエストの実行を選択する割合が小さくなるように設定すればよい。そして、メモリコマンド生成・発行部113は、重みwmに従ってリフレッシュ動作又はアクセスリクエストの実行を選択する際、(1-wm)の割合でリフレッシュ動作を選択し、wmの割合でアクセスリクエストの実行を選択するようにすればよい。
(第2の実施形態)
ダイナミックメモリには、複数のブロックを包含したダイナミックメモリが存在する。この複数のブロックを有するダイナミックメモリは、それぞれのブロックでリフレッシュ動作あるいはアクセスリクエスト動作が実施可能である。このブロックのことをバンクと称することもある。以下では、名称をブロックに統一して説明する。
ダイナミックメモリには、複数のブロックを包含したダイナミックメモリが存在する。この複数のブロックを有するダイナミックメモリは、それぞれのブロックでリフレッシュ動作あるいはアクセスリクエスト動作が実施可能である。このブロックのことをバンクと称することもある。以下では、名称をブロックに統一して説明する。
以下に説明する第2の実施形態では、制御対象のダイナミックメモリは、複数のブロックを有するものとする。ダイナミックメモリが有するブロックの数をbとし、個々のブロックをブロック0~ブロック(b-1)とする。また、以下の条件(A-1)及び(A-2)を満たすならば、当該ブロックに対するリフレッシュ動作が可能とする。
(A-1)いずれのブロックもリフレッシュ動作中ではない。
(A-2)リフレッシュ動作の対象ブロックは、アクセスリクエスト動作中ではない。
また、以下の条件(B-1)及び(B-2)を満たすならば、当該ブロックに対するアクセスリクエスト動作が可能とする。
(B-1)いずれのブロックもアクセスリクエスト動作中ではない。
(B-2)アクセスリクエスト動作の対象ブロックは、リフレッシュ動作中ではない。
(A-1)いずれのブロックもリフレッシュ動作中ではない。
(A-2)リフレッシュ動作の対象ブロックは、アクセスリクエスト動作中ではない。
また、以下の条件(B-1)及び(B-2)を満たすならば、当該ブロックに対するアクセスリクエスト動作が可能とする。
(B-1)いずれのブロックもアクセスリクエスト動作中ではない。
(B-2)アクセスリクエスト動作の対象ブロックは、リフレッシュ動作中ではない。
例えば、制御対象のダイナミックメモリが、ブロック0とブロック1との2つのブロックを有するとする。各ブロックの動作は、下記の表に示す組合せで同時に実行可能である。表に示した以外の動作の組合せ、例えばブロック0及びブロック1ともにリフレッシュ動作は実行不可能であり、ブロック0及びブロック1ともにアクセスリクエスト動作は実行不可能である。
図6を参照して、第2の実施形態に係るメモリ制御装置について説明する。図6は、第2の実施形態に係るメモリ制御装置(メモリコントローラ)610の構成例を示すブロック図である。第2の実施形態の説明にあたり、第2の実施形態で新たに追加した機能、及び第1の実施形態と異なる機能を中心に説明する。一方、第1の実施形態と同一の機能は説明を省略する。
メモリ制御装置610は、第1の実施形態に係るメモリ制御装置110と同様に、アクセスリクエスト保持部111、計時部112、メモリコマンド生成・発行部113、及びメモリ状態保持部114を有する。メモリ制御装置610は、ダイナミックメモリ620の動作を制御する。ダイナミックメモリ620は、例えばDRAM(Dynamic Random Aceess Memory)である。
本実施形態に係るメモリ制御装置610が第1の実施形態に係るメモリ制御装置110と異なるのは、ダイナミックメモリ620が有するブロック毎に、計時部112及びメモリ状態保持部114をそれぞれ合計b個設けている点である。ここで、ブロックaに対応する計時部112であることを明示的に示す必要があるならば、計時部[a]112と記述する。同様に、ブロックaに対応するメモリ状態保持部114であることを明示的に示す必要があるならば、メモリ状態保持部[a]114と記述する。
例えば、計時部[0]112は、ブロック0の経過時間を計時する。計時部[0]112は、メモリ制御装置610を初期化した時刻又はダイナミックメモリ620のブロック0に対するリフレッシュ動作が完了した時刻に初期化される。計時部[0]112は、ダイナミックメモリ620の他のブロック1~ブロック(b-1)に対するリフレッシュ動作が完了しても初期化されず、経過時間の計時を継続する。また、メモリ状態保持部[0]114は、ダイナミックメモリ620のブロック0の動作状態を保持する。ダイナミックメモリ620の各ブロックの動作状態には、例えば、コマンド受付可能、動作中、及び回復期間の各状態がある。
次に、図7を参照して、本実施形態におけるメモリコマンド実行の一例を説明する。図7は、メモリコマンドに応じて実行されるダイナミックメモリ620の各ブロックの動作(メモリ動作)と、アクセスリクエスト保持部111が保持しているアクセスリクエスト(保持コマンド)の変化を時系列で示した図である。図7に示す例においては、ダイナミックメモリ620は、ブロック0とブロック1との2つのブロックを有するものとする。
図7には、リフレッシュ動作が完了してから次のリフレッシュ動作の実行期限までの期間、すなわち、時刻0から時刻tREFまでの期間が3つの期間に分割される例を示している。ブロック0について、分割した3つの期間Pは、時刻tREFに近い期間から、P00、P01、P02とする。同様に、ブロック1について、分割した3つの期間Pは、時刻tREFに近い期間から、P10、P11、P12とする。また、図7に示したメモリ動作において、“Ref”はリフレッシュ動作の実行を表し、“Write”はライトコマンドの処理の実行を表し、“Read”はリードコマンドの処理の実行を表すものとする。
また、図7に示す例において、メモリ制御装置610に対して、以下の順でアクセスリクエストが発行され、アクセスリクエスト保持部111に格納されるものとする(括弧内は図7における表記を示す)。
1)ブロック0に対する2ビートライトリクエスト (0-2bwrite)
2)ブロック0に対する2ビートリードリクエスト (0-2bread)
3)ブロック1に対する2ビートリードリクエスト (1-2bread)
4)ブロック0に対する1ビートリードリクエスト (0-1bread)
5)ブロック1に対する2ビートライトリクエスト (1-2bwrite)
1)ブロック0に対する2ビートライトリクエスト (0-2bwrite)
2)ブロック0に対する2ビートリードリクエスト (0-2bread)
3)ブロック1に対する2ビートリードリクエスト (1-2bread)
4)ブロック0に対する1ビートリードリクエスト (0-1bread)
5)ブロック1に対する2ビートライトリクエスト (1-2bwrite)
図7において、ブロック0に対するリフレッシュ動作701が完了した時刻、すなわちブロック0の時刻0で、アクセスリクエスト保持部111は、2つのアクセスリクエストを保持している。アクセスリクエスト保持部111は、ブロック0に対する2ビートライトリクエスト721と、同じくブロック0に対する2ビートリードリクエスト722を保持している。
このブロック0に対する2つのアクセスリクエストの内、アクセスリクエスト保持部111が保持している時間がより長いアクセスリクエストは、2ビートライトリクエスト721である。したがって、メモリコマンド生成・発行部113は、ブロック0に対する2ビートライトリクエスト721を選択し、それに対応するブロック0に対するメモリコマンド(ライトコマンド)を生成して、ダイナミックメモリ620に発行する。このブロック0に対するライトコマンドを受けて、ダイナミックメモリ620が、ブロック0に対する2ビートライトリクエスト721に対応したブロック0に対するライトコマンドの処理702、703を実行する。
ブロック1に対する動作はブロック0とは独立して制御可能であるから、並行してメモリコマンド生成・発行部113はブロック1に対する動作を選択する。図7に示すように、ブロック0に対して2ビートライトリクエスト721を選択した同時刻は、ブロック1では期間P11である。そこで、メモリコマンド生成・発行部113は、重みw11を適用して図3に示した手順でブロック1に対する動作を選択する。期間P11は、期間P0あるいは期間Pnの何れにも該当しない。したがって、メモリコマンド生成・発行部113は、図3に示したS304で重みw11の値に従い、リフレッシュ動作か、あるいはアクセスリクエスト保持部111が保持しているアクセスリクエストの実行を選択する。
図7に示す例では、メモリコマンド生成・発行部113は、ブロック1に対する動作としてリフレッシュ動作を選択したとする。前述の表にケース5で示したように、ブロック0に対するアクセスリクエスト動作とブロック1に対するリフレッシュ動作とは、同時に実行可能である。よって、メモリコマンド生成・発行部113は、ブロック1に対するリフレッシュ動作を起動するメモリコマンド(リフレッシュコマンド)を生成し、ダイナミックメモリ620に発行する。このブロック1に対するリフレッシュコマンドを受けて、ダイナミックメモリ620が、ブロック1に対するリフレッシュ動作711を実行する。図7に示すように、ブロック0に対するライトコマンドの処理702、703の実行と並行してブロック1に対するリフレッシュ動作711が実行される。そして、ブロック1に対するリフレッシュ動作711が完了すると、メモリコマンド生成・発行部113は計時部[1]112を初期化し、ブロック1の時刻を0とする。
図7に示す例において、ブロック1に対するリフレッシュ動作711が完了した時点で、アクセスリクエスト保持部111は、ブロック0に対する2ビートリードリクエスト722と、ブロック1に対する2ビートリードリクエスト723を保持している。ブロック1に対するリフレッシュ動作711が完了した時点では、ブロック0でライトコマンドの処理702、703を実行中である。よって、メモリコマンド生成・発行部113は、ブロック0以外のブロックを対象とし、アクセスリクエスト保持部111が保持している時間がより長いアクセスリクエストを選択する。図7に示す例では、メモリコマンド生成・発行部113は、ブロック1に対する2ビートリードリクエスト723を選択し、それに対応する対応するブロック1に対するメモリコマンド(リードコマンド)を生成する。
しかし、ブロック0でライトコマンドの処理702、703を実行中であることから、異なるブロックに対するリードコマンドを発行することができない。したがって、メモリコマンド生成・発行部113は、生成したブロック1に対するリードコマンドの発行を、図3に示したS308で待ち合わせる。ブロック0で実行中のライトコマンドの処理702、703が終了し、ブロック1がメモリコマンドを受付可能であると、メモリコマンド生成・発行部113は、発行待ちのブロック1に対するリードコマンドを、ダイナミックメモリ620に発行する。このブロック1に対するリードコマンドを受けて、ダイナミックメモリ620が、ブロック1に対する2ビートリードリクエスト723に対応したブロック1に対するリードコマンドの処理712、713を実行する。
ブロック1がリードコマンドの処理712、713を実行中は、ブロック0はメモリコマンドを受け付けることが不可能である。したがって、アクセスリクエスト保持部111がブロック0に対する2ビートリードリクエスト722を保持していても、この2ビートリードリクエスト722に対応するメモリコマンド(リードコマンド)は発行することができない。ブロック0に対する2ビートリードリクエスト722に対応するリードコマンドが発行可能になるのは、ブロック1でリードコマンドの処理712、713の実行が終了し、ブロック0がメモリコマンドを受付可能である時点である。その時点で、メモリコマンド生成・発行部113は、ブロック0に対する2ビートリードリクエスト722に対応するブロック0に対するリードコマンドを、ダイナミックメモリ620に発行する。このブロック0に対するリードコマンドを受けて、ダイナミックメモリ620が、ブロック0に対する2ビートリードリクエスト722に対応したブロック0に対するリードコマンドの処理704、705を実行する。
図7に示すように、このブロック0に対する2ビートリードリクエスト722に対応するリードコマンドの処理704、705は期間P00に完了するとする。期間P00では、メモリコマンド生成・発行部113は、ブロック0についてはアクセスリクエストの有無にかかわらずリフレッシュ動作を選択する。よって、ブロック0でリードコマンドの処理704、705が完了した後、メモリコマンド生成・発行部113は、直ちにブロック0に対するリフレッシュ動作を起動するメモリコマンド(リフレッシュコマンド)を生成する。図7に示すように、ブロック0に対するリフレッシュコマンドを生成した同時刻に、ブロック1ではライトコマンドの処理715、716を実行中である。ブロック0に対するリフレッシュ動作とブロック1に対するライトコマンドの処理は同時に実行可能であるから、メモリコマンド生成・発行部113は、ブロック0に対するリフレッシュコマンドを、ダイナミックメモリ620に発行する。このブロック0に対するリフレッシュコマンドを受けて、ダイナミックメモリ620が、ブロック0に対するリフレッシュ動作706を実行する。そして、ブロック0に対するリフレッシュ動作706が完了すると、メモリコマンド生成・発行部113は計時部[0]112を初期化し、ブロック0の時刻を0とする。
ブロック1でリードコマンドの処理712、713の実行が完了した時点で、ブロック1の時刻は期間P11に存在する。メモリコマンド生成・発行部113は、ブロック1に対する動作として、重みw11に従って、リフレッシュ動作か、あるいはアクセスリクエストの実行を選択する。図7に示す例では、メモリコマンド生成・発行部113は、ブロック1に対する動作としてリフレッシュ動作を選択したとする。メモリコマンド生成・発行部113は、ブロック1に対するリフレッシュ動作を起動するメモリコマンド(リフレッシュコマンド)を生成し、ダイナミックメモリ620に発行する。このブロック1に対するリフレッシュコマンドを受けて、ダイナミックメモリ620が、ブロック1に対するリフレッシュ動作714を実行する。そして、ブロック1に対するリフレッシュ動作714が完了すると、メモリコマンド生成・発行部113は計時部[1]112を初期化し、ブロック1の時刻を0とする。
ブロック1に対するリフレッシュ動作714が完了した時点で、アクセスリクエスト保持部111は、ブロック0に対する1ビートリードリクエスト724と、ブロック1に対する2ビートライトリクエスト725を保持している。ブロック1に対するリフレッシュ動作714が完了した時点では、ブロック0でリードコマンドの処理704、705を実行中である。よって、メモリコマンド生成・発行部113は、ブロック0以外のブロックを対象とし、アクセスリクエスト保持部111が保持している時間がより長いアクセスリクエストを選択する。図7に示す例では、メモリコマンド生成・発行部113は、ブロック1に対する2ビートライトリクエスト725を選択し、それに対応する対応するブロック1に対するメモリコマンド(ライトコマンド)を生成する。
しかし、ブロック0でリードコマンドの処理704、705を実行中であることから、メモリコマンド生成・発行部113は、生成したブロック1に対するライトコマンドの発行を待ち合わせる。ブロック0で実行中のリードコマンドの処理704、705が終了し、ブロック1がメモリコマンドを受付可能であると、メモリコマンド生成・発行部113は、発行待ちのブロック1に対するライトコマンドを、ダイナミックメモリ620に発行する。このブロック1に対するライトコマンドを受けて、ダイナミックメモリ620が、ブロック1に対する2ビートライトリクエスト725に対応したブロック1に対するライトコマンドの処理715、716を実行する。
また、ブロック0に対するリフレッシュ動作706が完了した時点で、アクセスリクエスト保持部111は、ブロック0に対する1ビートリードリクエスト724を保持している。よって、ブロック0に対するリフレッシュ動作706が完了すると、メモリコマンド生成・発行部113は、ブロック0に対する1ビートリードリクエスト724を選択し、それに対応するブロック0に対するメモリコマンド(リードコマンド)を生成する。しかし、ブロック1でライトコマンドの処理715、716を実行中であることから、メモリコマンド生成・発行部113は、生成したブロック0に対するリードコマンドの発行を待ち合わせる。そして、ブロック1でライトコマンドの処理715、716が終了すると、メモリコマンド生成・発行部113は、発行待ちのブロック0に対するリードコマンドを、ダイナミックメモリ620に発行する。このブロック0に対するリードコマンドを受けて、ダイナミックメモリ620が、ブロック0に対する1ビートリードリクエスト724に対応したブロック0に対するリードコマンドの処理707を実行する。
本実施形態によれば、常にリフレッシュ動作又はアクセスリクエストの一方を優先して実行するのではなく、リフレッシュ動作を完了してからの経過時間に応じて値が異なる重みに従ってリフレッシュ動作又はアクセスリクエストを選択し実行する。これにより、複数のブロックを有するダイナミックメモリに対して、リフレッシュ動作及びアクセスリクエストを適切に実行することができ、ダイナミックメモリの動作性能が低下することなく、リフレッシュ動作を確実に実行することが可能となる。
(第3の実施形態)
図8は、第3の実施形態に係るメモリ制御装置(メモリコントローラ)810の構成例を示すブロック図である。第3の実施形態に係るメモリ制御装置810は、係数k及び重みwの値を変更可能である。図8において、図1及び図6に示した構成要素と同様の構成要素には同一の符号を付し、重複する説明は省略する。
図8は、第3の実施形態に係るメモリ制御装置(メモリコントローラ)810の構成例を示すブロック図である。第3の実施形態に係るメモリ制御装置810は、係数k及び重みwの値を変更可能である。図8において、図1及び図6に示した構成要素と同様の構成要素には同一の符号を付し、重複する説明は省略する。
メモリ制御装置810は、アクセスリクエスト保持部111、計時部112、メモリコマンド生成・発行部113、メモリ状態保持部114、及び係数・重み変更部115を有する。メモリ制御装置810は、ダイナミックメモリ820の動作を制御する。ダイナミックメモリ820は、例えばDRAM(Dynamic Random Aceess Memory)である。本実施形態に係るメモリ制御装置810においても、ダイナミックメモリ820が有するブロック毎に、計時部112及びメモリ状態保持部114をそれぞれ設けている。
続いて、係数・重み変更部115は、内部に係数k及び重みwの値を保持するレジスタを有する。ここで、ブロックaの期間Pmに対応する係数kをkamと表し、同様に重みwをwamと表す。本実施形態では、係数kamと、それに対応する重みwamとを組にして、ひとつのレジスタに割当てている。ただし、期間P0に対応する係数ka0の値は常に1であり、重みwa0の値も常に1であることから、係数ka0と重みwa0の組にはレジスタを割当てないようにしてもよい。また、期間の数が(n+1)である場合、期間Pnに対応する係数kanの値は常に0であり、重みwanの値も常に0であることから、係数kanと重みwanの組にはレジスタを割当てないようにしてもよい。例えば、ダイナミックメモリ820が有するブロック数が2であり、時刻0から時刻tREFまでを分割した期間の数が3であるならば、(k01、w01)の組と(k11、w11)の組に対応した2組のレジスタを設ける。
係数・重み変更部115において、係数k及び重みwを保持するレジスタは、係数・重み変更部115に入力するアドレスADDで指定する。そして、アドレスADDで指定したレジスタの値は、データDTで入力する値で書き換える。あるいは、アドレスADDで指定したレジスタの値は、データDTを経由して読み出す。例えば、アドレスADDとデータDTをLSI内部のデータバスに接続し、データバス上のアドレス空間に係数k及び重みwを保持するレジスタを割り付ける。このようにすることで、データバスに接続されたマスタデバイスから係数k及び重みwの値を変更すること、及び係数k及び重みwの値を参照することが可能である。
本実施形態によれば、係数k及び重みwの値を変更することで、リフレッシュ動作及びアクセスリクエストをより適切に実行することができ、ダイナミックメモリの動作性能が低下することなく、リフレッシュ動作を確実に実行することが可能となる。
(第4の実施形態)
第4の実施形態に係るメモリ制御装置(メモリコントローラ)の構成は、図8に示した第3の実施形態に係るメモリ制御装置(メモリコントローラ)810と同様である。第4の実施形態に係るメモリ制御装置810は、第3の実施形態と同様に、係数k及び重みwの値を変更可能である。ただし、第4の実施形態に係るメモリ制御装置810は、第3の実施形態とは異なり、メモリコマンド生成・発行部113が、メモリ制御装置810の動作状況に基づいて適応的に係数k及び重みwの値を変更する。
第4の実施形態に係るメモリ制御装置(メモリコントローラ)の構成は、図8に示した第3の実施形態に係るメモリ制御装置(メモリコントローラ)810と同様である。第4の実施形態に係るメモリ制御装置810は、第3の実施形態と同様に、係数k及び重みwの値を変更可能である。ただし、第4の実施形態に係るメモリ制御装置810は、第3の実施形態とは異なり、メモリコマンド生成・発行部113が、メモリ制御装置810の動作状況に基づいて適応的に係数k及び重みwの値を変更する。
本実施形態では、メモリ制御装置810の動作状況は、以下の3指標を基にする。
a)アクセスリクエスト保持部111が保持しているアクセスリクエストの数
b)アクセスリクエスト保持部111内のアクセスリクエストの平均滞留時間
c)リフレッシュ動作の実行頻度
a)アクセスリクエスト保持部111が保持しているアクセスリクエストの数
b)アクセスリクエスト保持部111内のアクセスリクエストの平均滞留時間
c)リフレッシュ動作の実行頻度
例えば、アクセスリクエスト保持部111が保持しているアクセスリクエストの数が増加傾向にあれば、動作性能の低下を抑制するために、アクセスリクエスト動作の割当てを増やす必要がある。しかし、リフレッシュ動作は確実に実行しなければならない。そこで、リフレッシュ動作の実行頻度も加味して、リフレッシュ動作とアクセスリクエスト動作を選択する割合を調整する。
例えば、リフレッシュ動作の実行頻度が、必要数以上に設定した閾値を満たしているならば、リフレッシュ動作を選択する割合を減らし、アクセルリクエスト動作を選択する割合を増やしてもよい。リフレッシュ動作を選択する割合を減らし、アクセルリクエスト動作を選択する割合を増やすには、重みwの値を小さくする。そこで、時刻0に近い期間の重みwの減少量を相対的に大きくし、反対に時刻tREFに近い期間の重みwの減少量を相対的に小さくする。あるいは、時刻tREFに近い期間では、重みwの値を変更せずに維持するようにしてもよい。
このように重みwの値を変更することにより、必要なリフレッシュ動作の実行頻度は確保し、同時にアクセスリクエスト動作の割当てが増加する。その結果、動作性能の低下を抑制することが可能である。
一方、アクセスリクエスト保持部111が保持しているアクセスリクエストの数が0、あるいは0に近ければ、リフレッシュ動作を選択する割合を増やしてもよい。この場合には、時刻0に近い期間の重みwの増加量を相対的に大きくし、反対に時刻tREFに近い期間の重みwの増加量を相対的に小さくする。あるいは、時刻tREFに近い期間では、重みwの値を変更せずに維持するようにしてもよい。
アクセスリクエスト保持部111内のアクセスリクエストの平均滞留時間を適用して係数k及び重みwの値を適応的に変更する場合も同様である。アクセスリクエストの平均滞留時間が増加傾向で、かつリフレッシュ動作の実行頻度が、必要数以上に設定した閾値を満たしているならば、リフレッシュ動作を選択する割合を減らし、アクセルリクエスト動作を選択する割合を増やしてもよい。この場合には、時刻0に近い期間の重みwの減少量を相対的に大きくし、反対に時刻tREFに近い期間の重みwの減少量を相対的に小さくする。あるいは、時刻tREFに近い期間では、重みwの値を変更せずに維持するようにしてもよい。
一方、アクセスリクエストの平均滞留時間が予め設定した閾値未満であるならば、リフレッシュ動作を選択する割合を増やしてもよい。この場合には、時刻0に近い期間の重みwの増加量を相対的に大きくし、反対に時刻tREFに近い期間の重みwの増加量を相対的に小さくする。あるいは、時刻tREFに近い期間では、重みwの値を変更せずに維持するようにしてもよい。
リフレッシュ動作の実行頻度が低下している場合について説明する。リフレッシュ動作の実行頻度が必要数に近づくと、確実なリフレッシュ動作の実行が不可能となるおそれが生じる。そこで、リフレッシュ動作の実行頻度が低下し、かつ必要数に近いならば、例えば係数k1の値を小さくするように変更し、アクセスリクエストの有無にかかわらず、必ずリフレッシュ動作を実行する期間(期間P0)を拡大する。
ここで、係数k1の値の変更を起動する、リフレッシュ動作の実行頻度の閾値を予め設定しておく。この閾値をリフレッシュ動作の実行頻度が下回ったならば、係数k1の変更を実施する。この係数k1の変更に当たっては、係数kの間の大小関係を保つ必要がある。したがって、係数k1以外の係数kの値も併せて変更する可能性がある。係数kの間の大小関係は、計時部112の動作に応じて、前述した(式1)あるいは(式3)で規定している。すなわち、計時部112が、初期値が0で時間の経過とともに値が増加するならば(式1)を満たすように係数kを変更し、反対に初期値がtREFで時間の経過とともに値が減少するならば(式3)を満たすように係数kを変更する。例えば、計時部112の初期値が0で時間の経過とともに値が増加するならば、期間P0を拡大するには係数k1の値を減少させる。
本実施形態によれば、メモリ制御装置810の動作状況に基づいて適応的に係数k及び重みwの値を変更し、リフレッシュ動作及びアクセスリクエストをより適切に実行することができる。したがって、ダイナミックメモリの動作性能が低下することなく、リフレッシュ動作を確実に実行することが可能となる。なお、前述した説明では、メモリ制御装置810の動作状況を示す指標として3つの指標を示しているが、これら3つの指標に限定されるものではない。前述した3つの指標以外の動作状況を示す指標を適用して、係数k及び重みwの値を適応的に変更するようにしてもよい。
(第5の実施形態)
第5の実施形態に係るメモリ制御装置(メモリコントローラ)の構成は、図6に示した第2の実施形態に係るメモリ制御装置(メモリコントローラ)610と同様である。なお、図8に示した第3の実施形態に係るメモリ制御装置(メモリコントローラ)と同様の構成であってもよい。第5の実施形態では、メモリコマンド生成・発行部113は、アクセスリクエスト保持部111にアクセスリクエストが存在しないならばリフレッシュ動作を選択する。
第5の実施形態に係るメモリ制御装置(メモリコントローラ)の構成は、図6に示した第2の実施形態に係るメモリ制御装置(メモリコントローラ)610と同様である。なお、図8に示した第3の実施形態に係るメモリ制御装置(メモリコントローラ)と同様の構成であってもよい。第5の実施形態では、メモリコマンド生成・発行部113は、アクセスリクエスト保持部111にアクセスリクエストが存在しないならばリフレッシュ動作を選択する。
図9は、第5の実施形態におけるメモリコマンド生成・発行部113の動作例を示すフローチャートである。メモリコマンド生成・発行部113は、図9に示すS901からS912までの各工程を繰り返し実行し、メモリコマンドの生成と発行を行う。本実施形態において、制御対象のダイナミックメモリ620は、複数のブロックを有するダイナミックメモリであるとする。
S901にて、メモリコマンド生成・発行部113は、計時部112が示す値Tbcに基づいて、現時点が存在する期間Pbcを判断する。ここで、値Tbcは、ダイナミックメモリ620のブロックbに対応する計時部[b]112が示す値である。本工程は、ダイナミックメモリ620が有するすべてのブロックに対して実行し、期間P0から期間Pnまでの期間の内のいずれの期間に存在しているかをブロック毎に判断する。
S902にて、メモリコマンド生成・発行部113は、S901において求めた現時点が存在する期間Pbcが期間P0であるか否かを判定する。Tbcが存在する期間PbcがP0と一致するかを判定する。本工程は、ダイナミックメモリ620が有するすべてのブロックに対して実行する。メモリコマンド生成・発行部113は、現時点が存在する期間Pbcが期間P0であると判定した場合(S902でYES)、そのブロックをリフレッシュ動作の対象としてS903へ分岐する。このとき、現時点が存在する期間Pbcが期間P0であると判定したブロックが複数存在するならば、計時部112が示す値Tbcが最も大きいブロックをリフレッシュ動作の対象としてS903へ分岐し、それ以外のブロックについてはS904へ分岐する。一方、メモリコマンド生成・発行部113は、現時点が存在する期間Pbcが期間P0であると判定したブロックがひとつも存在しない場合(S902でNO)、S904へ分岐する。
S903にて、メモリコマンド生成・発行部113は、S902においてリフレッシュ動作の対象としたブロックを、リフレッシュ対象のブロックに設定し記憶する。
S904にて、メモリコマンド生成・発行部113は、アクセスリクエスト保持部111にアクセスリクエストが存在するか否かを判定する。メモリコマンド生成・発行部113は、アクセスリクエスト保持部111に、どのブロックに対するアクセスリクエストも存在しないと判定した場合(S904でYES)、S905へ分岐する。一方、メモリコマンド生成・発行部113は、アクセスリクエスト保持部111に、任意のブロックに対するアクセスリクエストが存在すると判定した場合(S904でNO)、S906へ分岐する。
S905にて、メモリコマンド生成・発行部113は、リフレッシュ対象のブロックが未設定であるか否かを判定する。メモリコマンド生成・発行部113は、リフレッシュ対象のブロックが未設定であると判定した場合(S905でYES)、S908へ分岐する。一方、メモリコマンド生成・発行部113は、リフレッシュ対象のブロックがすでに設定されていると判定した場合(S905でNO)、S910へ分岐する。S903においてリフレッシュ対象のブロックの設定を行っていれば、メモリコマンド生成・発行部113は、本工程の実行によりS910へ分岐する。
S906にて、メモリコマンド生成・発行部113は、アクセスリクエスト保持部111に少なくとも1つのアクセスリクエストが存在しているが、リフレッシュ対象のブロックが未設定であるか否かを判定する。メモリコマンド生成・発行部113は、リフレッシュ対象のブロックが未設定であると判定した場合(S906でYES)、S907へ分岐する。一方、メモリコマンド生成・発行部113は、リフレッシュ対象のブロックがすでに設定されていると判定した場合(S906でNO)、S909へ分岐する。S903においてリフレッシュ対象のブロックの設定を行っていれば、メモリコマンド生成・発行部113は、本工程の実行によりS909へ分岐する。
S907にて、メモリコマンド生成・発行部113は、ブロック毎に重みwに従ってリフレッシュ動作を選択するか否かを決定する。リフレッシュ動作を選択するか否かは、重みwに基づいて、wの割合でリフレッシュ動作を選択し、(1-w)の割合でアクセスリクエストの実行を選択するものとして決定する。メモリコマンド生成・発行部113は、リフレッシュ動作を選択したブロックが存在する場合(S907でYES)、そのブロックをリフレッシュ動作の対象としてS908へ分岐する。このとき、リフレッシュ動作を選択したブロックが複数存在するならば、計時部112が示す値Tbcが最も大きいブロックをリフレッシュ動作の対象としてS908へ分岐する。一方、メモリコマンド生成・発行部113は、リフレッシュ動作を選択したブロックがひとつも存在しない場合(S907でNO)、S909へ分岐する。
S908にて、メモリコマンド生成・発行部113は、S903と同様に、リフレッシュ動作の対象としたブロックを、リフレッシュ対象のブロックに設定し記憶する。
S909にて、メモリコマンド生成・発行部113は、アクセスリクエスト保持部111が保持しているアクセスリクエストの内から、以下の条件1と条件2をともに満たすアクセスリクエストを選択する。
条件1)リフレッシュ対象のブロックに対するアクセスリクエストではない
条件2)条件1)を満たすアクセスリクエストの内、最も長くアクセスリクエスト保持部111に存在しているアクセスリクエスト
条件1)リフレッシュ対象のブロックに対するアクセスリクエストではない
条件2)条件1)を満たすアクセスリクエストの内、最も長くアクセスリクエスト保持部111に存在しているアクセスリクエスト
S910にて、メモリコマンド生成・発行部113は、リフレッシュ対象のブロックの設定がなされていれば、そのブロックに対するリフレッシュ動作を起動するメモリコマンド(リフレッシュコマンド)を生成する。また、メモリコマンド生成・発行部113は、アクセスリクエストの選択がなされていれば、そのアクセスリクエストに対応するメモリコマンドを生成する。
S911にて、メモリコマンド生成・発行部113は、制御対象のダイナミックメモリ620の状態がコマンド受付可能の状態、すなわちメモリコマンドをダイナミックメモリ620に発行可能であるか否かを判定する。メモリコマンド生成・発行部113は、ダイナミックメモリ620の状態がコマンド受付可能の状態であると判定した場合(S911でYES)、S912へ分岐する。一方、メモリコマンド生成・発行部113は、ダイナミックメモリ620の状態がコマンド受付可能の状態ではないと判定した場合(S911でNO)、ダイナミックメモリ620の状態がコマンド受付可能の状態に遷移するまでS911で待機する。
S912にて、メモリコマンド生成・発行部113は、S910において生成したリフレッシュ動作を起動するメモリコマンド、あるいはアクセスリクエストに対応するメモリコマンドを、ダイナミックメモリ620に発行する。
図9に示した本実施形態におけるメモリコマンドの生成・発行手順は、逐次的に各工程の処理を実行して、メモリコマンドを生成・発行している。しかし、メモリコマンドの生成・発行に係る処理は、逐次処理に限定したものではない。メモリコマンドの生成・発行に係る工程のうち、並行して実施可能な工程は並行に実施し、逐次的に処理しなければならない工程は逐次的に処理することで、メモリコマンドの生成・発行を実施するようにしてもよい。
本実施形態によれば、複数のブロックを有するダイナミックメモリに対して、リフレッシュ動作及びアクセスリクエストを適切に実行することができ、ダイナミックメモリの動作性能が低下することなく、リフレッシュ動作を確実に実行することが可能となる。また、アクセスリクエスト保持部111にアクセスリクエストが存在しないならば、メモリコマンド生成・発行部113がリフレッシュ動作を選択して実行するので、リフレッシュ動作の実行頻度を高めることができる。
(本発明の他の実施形態)
本発明は、前述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、前述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
110、610、810:メモリ制御装置 111:アクセスリクエスト保持部 112:計時部 113:メモリコマンド生成・発行部 114:メモリ状態保持部 115:係数・重み変更部 120、620、820:ダイナミックメモリ
Claims (11)
- ダイナミックメモリを制御するメモリ制御装置であって、
前記ダイナミックメモリに対するアクセスリクエストを保持する保持手段と、
前記ダイナミックメモリのリフレッシュ動作が完了してからの経過時間を計時する計時手段と、
前記リフレッシュ動作及び前記アクセスリクエストの選択に係る重みと、前記計時手段が計時した時間とに基づいて、前記リフレッシュ動作を起動するメモリコマンド又は前記保持手段が保持する前記アクセスリクエストに対応するメモリコマンドを生成し、前記ダイナミックメモリに発行するコマンド生成手段とを有することを特徴とするメモリ制御装置。 - 前記リフレッシュ動作が完了してからの経過時間に応じて値が異なる前記重みを設定し、
前記コマンド生成手段は、前記計時手段が計時した時間に応じた前記重みに従って、前記リフレッシュ動作又は前記アクセスリクエストを選択することを特徴とする請求項1に記載のメモリ制御装置。 - 前記リフレッシュ動作が完了してからの経過時間が長くなるに伴って、前記リフレッシュ動作を選択する割合が大きくなるよう前記重みを設定したことを特徴とする請求項2に記載のメモリ制御装置。
- 前記コマンド生成手段は、前記計時手段が計時した時間に基づく次の前記リフレッシュ動作の実行期限までの残り時間が閾値未満であれば、前記リフレッシュ動作を起動するメモリコマンドを生成し発行することを特徴とする請求項1~3の何れか1項に記載のメモリ制御装置。
- 前記リフレッシュ動作が完了してから次の前記リフレッシュ動作の実行期限までの期間を複数の期間に分割し、分割した期間毎に前記重みを設定したことを特徴とする請求項1~3の何れか1項に記載のメモリ制御装置。
- 前記コマンド生成手段は、分割した複数の期間のうち、次の前記リフレッシュ動作の実行期限に最も近い期間では、前記リフレッシュ動作を起動するメモリコマンドを生成し発行することを特徴とする請求項5に記載のメモリ制御装置。
- 分割した複数の期間のそれぞれの開始時刻及び終了時刻と、前記重みとの少なくとも一方は、変更可能であることを特徴とする請求項5又は6に記載のメモリ制御装置。
- 分割した複数の期間のそれぞれの開始時刻及び終了時刻と、前記重みとの少なくとも一方は、前記メモリ制御装置の動作状況に基づいて変更可能であることを特徴とする請求項5~7の何れか1項に記載のメモリ制御装置。
- 前記メモリ制御装置の動作状況は、前記保持手段が保持している前記アクセスリクエストの数、前記保持手段における前記アクセスリクエストの平均滞留時間、及び前記リフレッシュ動作の実行頻度の内の少なくとも1つを含むことを特徴とする請求項8に記載のメモリ制御装置。
- 前記ダイナミックメモリが複数のブロックを有するダイナミックメモリであり、
前記計時手段を前記ブロック毎に設け、
前記重みを前記ブロック毎に設定し、
前記コマンド生成手段は、前記ブロックに対応する前記重みと、該ブロックに対応する前記計時手段が計時した時間とに基づいて、前記リフレッシュ動作又は前記アクセスリクエストを選択することを特徴とする請求項1~9の何れか1項に記載のメモリ制御装置。 - ダイナミックメモリを制御するメモリ制御装置の制御方法であって、
前記ダイナミックメモリに対するアクセスリクエストを保持手段に保持する保持工程と、
前記ダイナミックメモリのリフレッシュ動作が完了してからの経過時間を計時手段が計時する計時工程と、
前記リフレッシュ動作及び前記アクセスリクエストの選択に係る重みと、前記計時手段が計時した時間とに基づいて、前記リフレッシュ動作を起動するメモリコマンド又は前記保持手段が保持する前記アクセスリクエストに対応するメモリコマンドを生成し、前記ダイナミックメモリに発行するコマンド生成工程とを有することを特徴とする制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021185570A JP2023072873A (ja) | 2021-11-15 | 2021-11-15 | メモリ制御装置及びその制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021185570A JP2023072873A (ja) | 2021-11-15 | 2021-11-15 | メモリ制御装置及びその制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023072873A true JP2023072873A (ja) | 2023-05-25 |
Family
ID=86425357
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021185570A Pending JP2023072873A (ja) | 2021-11-15 | 2021-11-15 | メモリ制御装置及びその制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2023072873A (ja) |
-
2021
- 2021-11-15 JP JP2021185570A patent/JP2023072873A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6146128B2 (ja) | データ処理装置 | |
JP2014517431A (ja) | メモリコントローラおよびかかるメモリコントローラの動作方法 | |
JP7407167B2 (ja) | メモリの複数のランクを有するシステムのダイナミックランダムアクセスメモリリフレッシュの構成 | |
US9594700B2 (en) | Speculative memory controller | |
JP2009193107A (ja) | メモリアクセス装置 | |
JP2008276391A (ja) | メモリアクセス制御装置 | |
US20130047004A1 (en) | Task scheduling method of a semiconductor device | |
JP4388005B2 (ja) | コンテキスト切替え装置 | |
JP2006527878A (ja) | 多重メモリを有するデータ処理回路 | |
JP2023072873A (ja) | メモリ制御装置及びその制御方法 | |
JP2005523536A (ja) | シングルポートメモリ装置へのアクセスを実行する方法、メモリアクセス装置、集積回路装置、および集積回路装置を使用する方法 | |
US10198301B2 (en) | Semiconductor device | |
JP2010061620A (ja) | Dma装置及びdma転送方法 | |
WO2010122607A1 (ja) | 記憶制御装置及びその制御方法 | |
JP5000514B2 (ja) | Ram制御装置及びこれを用いたメモリ装置 | |
JP2006215621A (ja) | Dma制御装置 | |
JP2011034214A (ja) | メモリ制御装置 | |
JP2004310394A (ja) | Sdramアクセス制御装置 | |
JP2022128226A (ja) | メモリ制御回路およびその制御方法 | |
JP4633334B2 (ja) | 情報処理装置およびメモリアクセス調停方法 | |
JP7373034B1 (ja) | 擬似スタティックランダムアクセスメモリ | |
JP7493311B2 (ja) | バスシステムおよびその制御方法 | |
US11797462B2 (en) | Arithmetic processing device and memory access method | |
JP4610961B2 (ja) | アクセス制御装置 | |
JP6161395B2 (ja) | 演算装置 |