以下、図面を用いて実施形態を説明する。
図1は、記憶制御装置および記憶制御装置の制御方法の一実施形態を示す。図1に示す記憶制御装置100は、制御装置200と記憶装置300との間に接続され、制御装置200から出力されるメモリアクセス要求MRQに基づいて記憶装置300のアクセスを制御する。例えば、記憶制御装置100、制御装置200および記憶装置300は、情報処理装置等のシステムに含まれる。
制御装置200は、CPU(Central Processing Unit)またはDSP(Digital Signal Processor)等のコントローラである。記憶装置300は、SDRAMやSRAM(Static Random Access Memory)等の半導体メモリである。なお、記憶装置300は、メモリモジュールの形態であってもよい。
記憶制御装置100は、複数の要求保持部110(110a、110b、110c)、要求選択部120、出力生成部130および要求制御部140を有する。各要求保持部110a、110b、110cは、記憶装置300にアクセスするために制御装置200から出力されるメモリアクセス要求MRQをそれぞれ保持する。
要求選択部120は、要求保持部110a、110b、110cにそれぞれ保持されたメモリアクセス要求MRQのいずれかを選択する。特に限定されないが、要求選択部120は、出力生成部130が生成するコマンドCMDのエラーを検出したことを示すエラー情報ERRを記憶装置300から受信している間、メモリアクセス要求MRQの選択を抑止する。コマンドCMDは、記憶装置300を動作させる動作指示の一例である。
出力生成部130は、要求選択部120が選択したメモリアクセス要求MRQに基づいて、記憶装置300を動作させるコマンドCMDと、コマンドCMDのエラーを記憶装置300に検出させるエラー検出情報Pとを生成して記憶装置300に出力する。要求制御部140は、要求選択部120によるメモリアクセス要求MRQの選択から第1の時間T1が経過した場合、要求選択部120が選択したメモリアクセス要求MRQを要求保持部110のいずれかから削除する。要求制御部140は、エラー情報ERRを記憶装置300から受信した場合、要求選択部120による選択から第1の時間T1が経過していないメモリアクセス要求MRQを保持している要求保持部110からのアクセス要求の削除を抑止する。
図1の下側のかぎ括弧内は、記憶制御装置100の動作の一例を示す。この例では、制御装置200がメモリアクセス要求MRQa、MRQb、MRQcを順次に記憶制御装置100に出力する。記憶制御装置100は、メモリアクセス要求MRQa、MRQb、MRQcを要求保持部110にそれぞれ保持する(図1(a)、(b)、(c))。
要求選択部120は、要求保持部110aに保持されたメモリアクセス要求MRQaを選択し、出力生成部130および要求制御部140に出力する(図1(d))。出力生成部130は、メモリアクセス要求MRQaに基づいてコマンドCMDとエラー検出情報Pを生成し、記憶装置300に出力する(図1(e))。例えば、エラー検出情報Pは、コマンドCMDを表す制御信号の論理のパリティである。なお、出力生成部130は、エラー検出情報Pを、コマンドCMDとともに記憶制御装置100から記憶装置300に供給されるアドレスと、コマンドCMDとから生成してもよい。また、要求選択部120が、出力生成部130の機能を有してもよい。
記憶装置300は、エラー検出情報Pに基づいてコマンドCMDにエラーがないことを検出し、コマンドCMDにしたがって動作する。コマンドCMDがライトコマンドの場合、記憶装置300は、記憶制御装置100を介して制御装置200から受けるライトデータをメモリセルに書き込む。コマンドCMDがリードコマンドの場合、記憶装置300は、メモリセルからデータを読み出し、読み出したデータを、記憶制御装置100を介して制御装置200に出力する。
要求制御部140は、要求選択部120がメモリアクセス要求MRQaを選択した後、第1の時間T1の経過に基づいて、メモリアクセス要求MRQaを要求保持部110aから削除する削除指示DELを出力する(図1(f))。要求保持部110aは、削除指示DELに基づいてメモリアクセス要求MRQaを削除する。そして、要求保持部110aは、制御装置200からの新たなメモリアクセス要求MRQを保持可能な状態になる(図1(g))。
次に、要求選択部120は、要求保持部110bに保持されたメモリアクセス要求MRQbを選択し、出力生成部130および要求制御部140に出力する(図1(h))。出力生成部130は、メモリアクセス要求MRQbに基づいてコマンドCMDとエラー検出情報Pを生成し、記憶装置300に出力する(図1(i))。同様に、要求選択部120は、要求保持部110cに保持されたメモリアクセス要求MRQcを選択し、出力生成部130および要求制御部140に出力する(図1(j))。出力生成部130は、メモリアクセス要求MRQcに基づいてコマンドCMDとエラー検出情報Pを生成し、記憶装置300に出力する(図1(k))。
記憶装置300は、エラー検出情報Pに基づいてメモリアクセス要求MRQbに対応するコマンドCMDのエラーを検出し、エラー情報ERRを出力する(図1(l))。例えば、要求選択部120は、エラー情報ERRを受けている間、メモリアクセス要求MRQの選択を抑止する。これにより、コマンドCMDのエラーが発生し、アクセス動作を停止している記憶装置300に新たなコマンドCMDが供給されることを抑止することができ、記憶制御装置100および記憶装置300の誤動作を抑止することができる。
要求制御部140は、エラー情報ERRを受信した場合、要求選択部120による選択から第1の時間T1が経過していないメモリアクセス要求MRQb、MRQcの要求保持部110b、110cからの削除を抑止する(図1(m)、(n))。すなわち、要求制御部140は、メモリアクセス要求MRQb、MRQcの削除を指示する削除指示DELを出力しない(図1(m))。このため、要求保持部110b、110cは、削除が抑止された抑止対象の対象アクセス要求であるメモリアクセス要求MRQb、MRQcを削除することなく保持し続ける(図1(o)、(p))。
エラー情報ERRの出力が停止された後、要求選択部120は、削除が抑止されたメモリアクセス要求MRQbを選択する(図1(q))。出力生成部130は、メモリアクセス要求MRQbに基づいてコマンドCMDとエラー検出情報Pを生成し、記憶装置300に出力する(図1(r))。記憶装置300は、エラー検出情報Pに基づいてコマンドCMDにエラーがないことを検出し、コマンドCMDにしたがって動作する。
要求制御部140は、要求選択部120によるメモリアクセス要求MRQbの選択から第1の時間T1が経過した後、メモリアクセス要求MRQbを要求保持部110bから削除させる(図1(s))。これにより、要求保持部110bは、制御装置200からの新たなメモリアクセス要求MRQを保持可能な状態になる。
同様に、要求選択部120は、削除が抑止されたメモリアクセス要求MRQcを選択し、出力生成部130は、メモリアクセス要求MRQcに基づいてコマンドCMDとエラー検出情報Pを生成し、記憶装置300に出力する(図1(t)、(u))。そして、要求選択部120によるメモリアクセス要求MRQcの選択から第1の時間T1が経過した後、メモリアクセス要求MRQcは要求保持部110bから削除される(図1(v))。
以上、図1では、記憶装置300がコマンドCMDのエラーを検出した場合、要求選択部120により選択済みのメモリアクセス要求MRQb、MRQcは、第1の時間T1が経過した後も、削除されることなく要求保持部110b、110cに保持される。これにより、記憶制御装置100は、記憶装置300で実行されなかったメモリアクセス要求MRQb、MRQcを、記憶装置300に再発行(リトライ)することができる。この結果、記憶制御装置100、制御装置200および記憶装置300を含むシステムは、動作を停止させることなく継続することができる。すなわち、システムの信頼性が低下することを抑止することができ、システムの性能を向上することができる。
図2は、記憶制御装置および記憶制御装置の制御方法の別の実施形態を示す。図2において二重の四角印は、外部端子を示す。外部端子は、例えば、半導体チップ上のパッド、あるいは半導体チップが収納されるパッケージのリードである。外部端子を介して供給される信号には、端子名と同じ符号を使用する。なお、外部端子に接続されるバッファ回路等のI/O(Input/Output)回路は、記載を省略する。
図2に示す記憶制御装置MACは、アクセス要求保持部10、リフレッシュ制御部12、リフレッシュ要求保持部14、要求選択部16、アクセス信号生成部18、パイプライン制御部20、要求発行リリース通知生成部22を有する。また、記憶制御装置MACは、エラー検出部24、ライトデータ制御部26、リードデータ制御部28およびデータ入出力部30を有する。
記憶制御装置MACは、CPUとDIMM(Dual Inline Memory Module)との間に接続される。DIMMは、複数のSDRAMを含む。SDRAMは、ワード線とビット線とに接続される複数のダイナミックメモリセルを有する。SDRAMは、複数のバンクを含んでもよい。SDRAMおよびDIMMは、アクセス要求に基づいて記憶制御装置MACによりアクセスが制御される記憶装置の一例である。CPUは、SDRAM(DIMM)にアクセスするアクセス要求を出力する制御装置の一例である。CPU、記憶制御装置MACおよびDIMMは、情報処理装置等のシステムに含まれる。
記憶制御装置MACは、CPUからのメモリアクセス要求MRQに基づいて、コマンドCMDと、アドレスADと、コマンドCMDおよびアドレスADのパリティPとをSDRAMに出力し、SDRAMのアクセスを制御する。コマンドCMDは、チップアドレス信号、クロックイネーブル信号、ロウアドレスストローブ信号、コラムアドレスストローブ信号およびライトイネーブル信号を含む。コマンドCMDは、SDRAMおよびDIMMを動作させる動作指示の一例である。
CPUは、シングルコアタイプでもよく、マルチコアタイプでもよい。また、複数のCPUが記憶制御装置MACに接続されてもよく、DSPまたはDMAC(Direct Memory Access Controller)等のバスマスタが記憶制御装置MACに接続されてもよい。
SDRAMは、例えば、DDR4(Double Data Rate 4) SDRAM規格にしたがって設計されている。SDRAMは、パリティPに基づいて、コマンドCMDまたはアドレスADのエラーを検出した場合、コマンドパリティエラー情報CAPEを所定の期間出力し、コマンドCMDに基づくメモリアクセス動作の実行を抑止する機能を有する。
コマンドパリティエラー情報CAPEは、例えば、1ビットであり、パリティエラーが発生したコマンドCMDおよびアドレスADを識別する情報を含まない。このため、記憶制御装置MACは、コマンドパリティエラー情報CAPEを受信したときに要求選択部16から出力済みであり、アクセス動作が開始されていないコマンドCMDの全てを、パリティエラーの発生により影響を受けるコマンドCMDと判断する。記憶制御装置MACは、パリティエラーの発生により影響を受けると判断したコマンドCMDを、コマンドパリティエラー情報CAPEの出力が停止された後に再発行(リトライ)する。コマンドパリティエラー情報CAPEの発生に伴う再発行処理(リトライ処理)は、図9、図14等で説明する。
なお、SDRAMは、DDR3 SDRAM規格にしたがって設計されてもよい。この場合、DIMMは、パリティPに基づいて、コマンドCMDまたはアドレスADのエラーを検出した場合、コマンドパリティエラー情報CAPEを出力し、SDRAMに、コマンドCMDに基づくアクセス動作の実行を抑止させる機能を有する。
図2では、記憶制御装置MACは、4枚のDIMMに接続されるが、接続されるDIMMの枚数は、1枚でも2枚でもよい。例えば、各DIMMのデータバスの幅は、64ビットであり、4枚のDIMMのデータのビット幅は、256ビットである。DIMM内のSDRAMにデータのパリティ(例えば、8ビット)を記憶させる場合、72ビット幅のDIMMが使用される。なお、記憶制御装置MACは、SDRAMに直接接続されてもよい。
アクセス要求保持部10は、CPUからのメモリアクセス要求MRQを保持する複数のエントリENTを有し、各エントリENTに保持したメモリアクセス要求MRQを示すアクセス要求情報ARQIを要求選択部16に出力する。各エントリENTは、CPUから出力されるメモリアクセス要求MRQを保持する要求保持部の一例である。
各エントリENTは、アクセス要求発行通知ARQSに基づいて、要求選択部16がメモリアクセス要求MRQを選択したことを検出する。また、各エントリENTは、メモリアクセス要求MRQがSDRAMに受け付けられたことを示すアクセス要求完了通知ARQEに基づいて、エントリENTに保持しているアクセス要求情報ARQIを削除する。さらに、各エントリENTは、SDRAMからコマンドパリティエラー情報CAPEを受信した場合、コマンドCMD(ライトコマンドまたはリードコマンド)をリトライするために、アクセス要求情報ARQIの出力を維持する。アクセス要求保持部10の一例は、図4に示し、アクセス要求保持部10のエントリENTの動作の一例は、図5に示す。
リフレッシュ制御部12は、SDRAMにリフレッシュ動作を実行させるリフレッシュ要求RRQを所定の周期で出力する。リフレッシュ要求保持部14は、リフレッシュ要求RRQを保持する1つのエントリENTRを有し、エントリENTRに保持したリフレッシュ要求RRQを示すリフレッシュ要求情報RRQIを要求選択部16に出力する。また、エントリENTRは、リフレッシュ要求RRQがSDRAMに受け付けられたことを示すリフレッシュ要求完了通知RRQEに基づいて、エントリENTRに保持しているリフレッシュ要求情報RRQIを削除する。さらに、エントリENTRは、SDRAMからコマンドパリティエラー情報CAPEを受信した場合、コマンドCMD(リフレッシュコマンド)をリトライするために、リフレッシュ要求情報RRQIの出力を維持する。リフレッシュ要求保持部14の一例は、図6に示し、エントリENTRの動作の一例は、図7に示す。
要求選択部16は、アクセス要求情報ARQIまたはリフレッシュ要求情報RRQIのいずれかを選択し、発行要求情報RQINFとして出力する。要求選択部16は、リトライ制御要求RTRQに基づいてプリチャージ要求を示す発行要求情報RQINFを出力する。その後、要求選択部16は、コマンドCMDをリトライするために、アクセス要求情報ARQIまたはリフレッシュ要求情報RRQIのいずれかを示す発行要求情報RQINFを出力する。
要求選択部16は、プリチャージ要求を示す発行要求情報RQINFおよびリトライ要求(メモリアクセス要求MRQまたはリフレッシュ要求RRQ)を示す発行要求情報RQINFの出力タイミングを、モード情報MDに基づいて決定する。要求選択部16の動作の一例は、図9に示す。プリチャージ要求は、アクセス信号生成部18によりプリチャージコマンドに変換される。SDRAMは、プリチャージコマンドに基づいて、ワード線をリセットするとともに、ビット線を所定の電圧にプリチャージする。
アクセス信号生成部18は、発行要求情報RQINFに基づいて、SDRAMにアクセス動作を実行させるコマンドCMDおよびアドレスADを生成し、SDRAMに出力する。また、アクセス信号生成部18は、コマンドCMDおよびアドレスADの少なくともいずれかのパリティPを生成するパリティ生成器PGENを有し、生成したパリティPを、コマンドCMDおよびアドレスADとともにSDRAMに出力する。パリティPは、コマンドCMDのエラーをSDRAMに検出させるエラー検出情報の一例である。アクセス信号生成部18は、コマンドCMDを生成する出力生成部の一例である。
特に限定されないが、アクセス信号生成部18は、発行要求情報RQINFがSDRAMにデータを書き込むライト要求を示す場合、アクティブコマンドおよびオートプリチャージ付きのライトコマンドをSDRAMに順次に出力する。これにより、ライト要求に応答するライト動作後、SDRAMは、プリチャージされたスタンバイ状態になる。
アクセス信号生成部18は、発行要求情報RQINFがSDRAMからデータを読み出すリード要求を示す場合、アクティブコマンドおよびオートプリチャージ付きのリードコマンドをSDRAMに順次に出力する。これにより、リード要求に応答するリード動作後、SDRAMは、プリチャージされたスタンバイ状態になる。
アクセス信号生成部18は、発行要求情報RQINFがリフレッシュ要求を示す場合、オートリフレッシュコマンドをSDRAMに出力する。オートリフレッシュコマンドを受信したSDRAMは、内蔵するリフレッシュアドレスカウンタを用いて、リフレッシュアドレスを受信することなくリフレッシュ動作を実行し、スタンバイ状態に戻る。リフレッシュ動作により、SDRAM内のダイナミックメモリセルが保持しているデータは再書き込みされ、データは失われることなくダイナミックメモリセルに保持される。
このように、記憶制御装置MACは、スタンバイ状態のSDRAMにライト要求、リード要求またはリフレッシュ要求を供給する。記憶制御装置MACは、ライト要求、リード要求またはリフレッシュ要求をリトライする場合、SDRAMをスタンバイ状態に設定するために、プリチャージコマンドをSDRAMに供給する。これにより、SDRAMがアクティブコマンドを受けてアクティブ状態にある場合にも、SDRAMのリトライ動作を正しく実行することができる。リトライ動作およびリトライ用のプリチャージコマンドは、図9等で説明する。なお、記憶制御装置MACは、オートプリチャージ付きのライトコマンドおよびリードコマンドを用いてSDRAMにアクセスするため、リトライ以外でプリチャージコマンドを使用しない。
パイプライン制御部20は、要求選択部16からの発行要求情報RQINFを受信した後、記憶制御装置MAC内の各部の動作を制御する制御信号を、所定のクロックサイクル毎に出力するシーケンサの機能を有する。発行要求情報RQINFがライト要求の場合、パイプライン制御部20は、アクセス要求完了通知ARQE、ライトデータ要求WDRQ、ライトデータ制御信号WDCNTを順次に出力する。発行要求情報RQINFがリード要求の場合、パイプライン制御部20は、アクセス要求完了通知ARQE、リードデータ制御信号RDCNT、バリッド信号VLD(R)、要求識別番号RQID(R)を順次に出力する。発行要求情報RQINFが通常のリフレッシュ要求の場合、パイプライン制御部20は、リフレッシュ要求完了通知RRQEを出力する。発行要求情報RQINFがリトライ制御要求RTRQに基づくプリチャージコマンドを示す場合、パイプライン制御部20は、リトライ制御要求完了通知RTRQEを出力する。また、パイプライン制御部20は、コマンドパリティエラー情報CAPEに基づいて、リトライの対象のアクセス要求およびリトライの対象のリフレッシュ要求を検出する機能を有する。パイプライン制御部20の一例は、図10に示す。
要求発行リリース通知生成部22は、発行要求情報RQINFに基づいて、SDRAMにコマンドCMDが出力されることを示すアクセス要求発行通知ARQSまたはリフレッシュ要求発行通知RRQSを出力する。また、要求発行リリース通知生成部22は、アクセス要求完了通知ARQEに基づいて、メモリアクセス要求MRQがSDRAMに受け付けられたことを示すメモリアクセス要求リリース情報MRQRをCPUに出力する。なお、コマンドパリティエラー情報CAPEの受信により、アクセス要求完了通知ARQEが生成されない場合、要求発行リリース通知生成部22は、メモリアクセス要求リリース情報MRQRのCPUへの出力を抑止する。これにより、CPUは、SDRAMが受け付けていないメモリアクセス要求MRQに対応するアクセス動作が開始されたことを誤認識すること(すなわち、誤動作)を抑制することができる。要求発行リリース通知生成部22の一例は、図11に示す。
エラー検出部24は、コマンドパリティエラー情報CAPEおよびリトライ制御要求完了通知RTRQEに基づいて、コマンドのリトライを制御するリトライ制御要求RTRQと、エラー検出部24が制御するモードを示すモード情報MDを出力する。リトライ制御要求RTRQ(プリチャージ要求)は、図8に示すステートSTが”発行済み”のメモリアクセス要求MRQまたはリフレッシュ要求RRQに対応して出力される。エラー検出部24は、SDRAMからのコマンドパリティエラー情報CAPEの出力が停止された後、SDRAMをスタンバイ状態(プリチャージ状態)に設定するスタンバイ要求(プリチャージ要求)を生成するスタンバイ要求生成部の一例である。
また、エラー検出部24は、コマンドパリティエラー情報CAPEの発生回数(すなわち、リトライ回数)が所定の値VTになった場合、CPUにシステムエラー情報SYSEを出力する。例えば、記憶制御装置MACとDIMMとの間に配線されるコマンド線CMDが断線またはショートした場合、コマンドパリティエラー情報CAPEが繰り返し発生される。この場合、CPUは、システムエラー情報SYSEに基づいて故障を検出することができ、システムの信頼性が低下することを抑止することができる。
ライトデータ制御部26は、ライトデータ制御信号WDCNTに基づいて、CPUから出力されるライトデータWDを、データ入出力部30を介してDIMMに出力する。例えば、ライトデータ制御部26は、CPUから1024ビット(128バイト)のライトデータWDを4回に分けて受信し、受信したライトデータWDを4回に分けて4つのDIMMに出力する(バースト長=4)。なお、ライトデータのパリティをライトデータWDとともにDIMMに書き込む場合、ライトデータ制御部26は、パリティを生成するパリティ生成器を有してもよい。
リードデータ制御部28は、リードデータ制御信号RDNTに基づいて、データ入出力部30を介してDIMMから受信するリードデータRDTをCPUに出力する。例えば、リードデータ制御部28は、4つのDIMMから1024ビット(8バイト)のリードデータRDTを4回に分けて受信し(バースト長=4)、受信したリードデータRDTを4回に分けてCPUに出力する。なお、リードデータRDTとともにパリティをDIMMから受信する場合、リードデータ制御部28は、パリティに基づいてリードデータRDTのエラーを検出し、エラーを訂正する回路を有してもよい。
データ入出力部30は、DIMMのライトアクセス時にライトデータWDを、データ端子DTを介してDIMMに出力し、DIMMのリードアクセス時にリードデータRDTを、データ端子DTを介してDIMMから受信する。
図3は、図2に示す記憶制御装置MACで使用される信号の構成の一例を示す。バリッドVLDは、各信号が有効である場合に論理1に設定され、各信号が無効である場合に論理0に設定される。要求識別番号RQIDは、個々のメモリアクセス要求MRQを識別するための固有の番号であり、CPUにより割り当てられる。ライトデータ識別番号WDIDは、ライト要求を示すメモリアクセス要求MRQ毎にライトデータを識別するための固有の番号であり、CPUにより割り当てられる。アクセス要求情報ARQIのステートSTは、アクセス要求保持部10の各エントリENTの状態を示す。リフレッシュ要求情報RRQIのステートSTは、リフレッシュ要求保持部14のエントリENTRの状態を示す。アクセス要求保持部10およびリフレッシュ要求保持部14のステートSTの遷移の一例は、図8に示す。
メモリアクセス要求MRQにおいて、コマンドは、ライトコマンドまたはリードコマンドを示し、アドレスは、アクセスするメモリ空間の先頭アドレスを示す。リフレッシュ要求RRQにおいて、コマンドは、リフレッシュコマンドを示し、アドレスは、リフレッシュするメモリ空間の先頭アドレスを示す。リトライ制御要求RTRQにおいて、コマンドは、リトライするライトコマンド、リードコマンドまたはリフレッシュコマンドを示し、アドレスは、アクセスするメモリ空間またはリフレッシュするアドレス空間を示す。
発行要求情報RQINFにおいて、コマンドは、ライトコマンド、リードコマンドまたはリフレッシュコマンドを示し、アドレスは、アクセスするメモリ空間またはリフレッシュするアドレス空間を示す。リードデータRDにおいて、要求識別番号RQIDは、CPUが発行したメモリアクセス要求MRQ(リード要求)との対応付けのためにCPUに出力される。ライトデータ要求WDRQにおいて、ライトデータ識別番号WDIDは、記憶制御装置MACがCPUに要求するライトデータを識別するために使用される。
図4は、図2に示すアクセス要求保持部10の一例を示す。アクセス要求保持部10は、n個(nは2以上の整数)のエントリENT(ENT1、ENT2、ENT3、...、ENTn)を有する。各エントリENTは、互いに同一または同様であるため、以下では、エントリENT1の構成を説明する。
エントリENT1は、メモリアクセス要求MRQに含まれるバリッドVLD、コマンド、アドレス、要求識別番号RQIDおよびライトデータ識別番号WDIDを保持する保持領域HLDを有する。また、エントリENT1は、ステートSTを保持する領域を有するステート制御部STCNTを有する。ステート制御部STCNTは、メモリアクセス要求MRQ、アクセス要求発行通知ARQS、コマンドパリティエラー情報CAPEおよびアクセス要求完了通知ARQEの受信に基づいて、ステートSTを遷移させる。ステートSTの遷移の一例は、図8に示す。アクセス要求保持部10は、CPUからメモリアクセス要求MRQを受信した場合、ステートSTがアイドル状態のエントリENT1の1つに受信したメモリアクセス要求MRQを保持させる。エントリENT1は、保持しているバリッドVLD、コマンド、アドレス、要求識別番号RQIDおよびライトデータ識別番号WDIDと、ステートSTとを示すアクセス要求情報ARQIを要求選択部16に出力する。アクセス要求保持部10の各エントリENTの動作の一例は、図5に示す。
図5は、図4に示すアクセス要求保持部10の各エントリENTの動作の一例を示す。例えば、図5に示す処理は、各エントリENTのステート制御部STCNTのハードウェアにより実行される。なお、図5は、説明を分かりやすくするために各エントリENTの動作を分解して示したものであり、実際の動作では、各ステップの幾つかは、並列に実行されてもよい。例えば、ステップS104、S106は、並列に実行されてもよく、ステップS118、S120は並列に実行されてもよい。
まず、ステップS102において、エントリENTは、アクセス要求保持部10からメモリアクセス要求MRQの保持を指示されたか否かを判定する。エントリENTは、メモリアクセス要求MRQの保持を指示された場合、処理をステップS104に移行させ、メモリアクセス要求MRQの保持を指示されていない場合、ステップS102の処理を繰り返す。
ステップS104において、エントリENTは、メモリアクセス要求MRQに含まれるバリッドVLD、コマンド、アドレス、要求識別番号RQIDおよびライトデータ識別番号WDIDを保持領域HLDに保持する。保持領域HLDのバリッドVLDの領域には、有効なメモリアクセス要求MRQの保持を示す論理1が格納される。
次に、ステップS106において、エントリENTは、ステートSTを”未発行”を示す情報に書き替える。”未発行”は、エントリENTに保持されたメモリアクセス要求MRQが要求選択部16により選択されていないことを示す。すなわち、”未発行”は、エントリENTに保持されたメモリアクセス要求MRQが、DIMMに供給されていないことを示す。
次に、ステップS108において、エントリENTは、エントリENTに保持されたメモリアクセス要求MRQに対応するアクセス要求発行通知ARQSを受信したか否かを判定する。エントリENTは、対応するアクセス要求発行通知ARQSを受信した場合、処理をステップS110に移行させ、対応するアクセス要求発行通知ARQSを受信していない場合、ステップS108の処理を繰り返す。
ステップS110において、エントリENTは、ステートSTを”発行済み”を示す情報に書き替える。”発行済み”は、エントリENTに保持されたメモリアクセス要求MRQが要求選択部16により選択されたことを示す。すなわち、”発行済み”は、エントリENTに保持されたメモリアクセス要求MRQが、DIMMに供給されたことを示す。
次に、ステップS112において、エントリENTは、コマンドパリティエラー情報CAPEを受信したか否かを判定する。エントリENTは、コマンドパリティエラー情報CAPEを受信した場合、処理をステップS114に移行させ、コマンドパリティエラー情報CAPEを受信していない場合、処理をステップS116に移行させる。
ステップS114において、エントリENTは、ステートSTを”リトライ”を示す情報に書き替え、処理をステップS108に戻す。”リトライ”は、コマンドパリティエラー情報CAPEの発生により、エントリENTに保持されたメモリアクセス要求MRQをDIMMに再度発行することを示す。
アクセス要求発行通知ARQSを受信後、アクセス要求完了通知ARQEを受信していないメモリアクセス要求MRQは、SDRAMに受け付けられていないメモリアクセス要求MRQである。SDRAMがメモリアクセス要求MRQを受け付ける前にコマンドパリティエラーを検出し、コマンドパリティエラー情報CAPEを出力した場合、そのメモリアクセス要求MRQは、リトライの対象になる。
コマンドパリティエラー情報CAPEを受信しない場合、ステップS116において、エントリENTは、エントリENTに保持されたメモリアクセス要求MRQに対応するアクセス要求完了通知ARQEを受信したか否かを判定する。エントリENTは、対応するアクセス要求完了通知ARQEを受信した場合、エントリENTに保持されたメモリアクセス要求MRQがSDRAMに受け付けられたと判断し、処理をステップS118に移行させる。一方、エントリENTは、対応するアクセス要求完了通知ARQEを受信していない場合、エントリENTに保持されたメモリアクセス要求MRQがSDRAMに受け付けられていないと判断し、処理をステップS112に戻す。なお、アクセス要求完了通知ARQEは、図10で説明するように、要求選択部16が発行要求情報RQINFを出力した後、所定のクロックサイクル後に生成される。
ステップS118において、エントリENTは、保持部HLDに保持されたバリッドVLDをロウレベルL(論理0)にリセットし、エントリENTに保持されたメモリアクセス要求MRQを無効にする。次に、ステップS120において、エントリENTは、ステートSTを”アイドル”を示す情報に書き替える。”アイドル”は、エントリENTが有効なメモリアクセス要求MRQを保持しておらず、新たなメモリアクセス要求MRQを保持可能な空き状態であることを示す。エントリENTは、ステップS120の処理の後、処理をステップS102に戻す。そして、上述した動作が繰り返される。
図6は、図2に示すリフレッシュ要求保持部12の一例を示す。リフレッシュ要求保持部12は、1個のエントリENTRを有する。エントリENTRは、リフレッシュ要求RRQに含まれるバリッドVLD、コマンドおよびアドレスを保持する保持部HLDと、ステートSTを保持する領域を有するステート制御部STCNTとを有する。ステート制御部STCNTは、リフレッシュ要求RRQ、リフレッシュ要求発行通知RRQS、コマンドパリティエラー情報CAPEおよびリフレッシュ要求完了通知RRQEの受信に基づいて、ステートSTを遷移させる。ステートSTの遷移の一例は、図8に示す。エントリENTRは、保持しているバリッドVLD、コマンドおよびアドレスと、ステートSTとを示すリフレッシュ要求情報RRQIを出力する。リフレッシュ要求保持部12のエントリENTRの動作の一例は、図7に示す。
図7は、図6に示すリフレッシュ要求保持部12のエントリENTRの動作の一例を示す。図5に示す動作と同一または同様の動作は、図5と同じ符号を付し、詳細な説明は省略する。図7に示すフローは、図5に示すステップS102、S104、S108、S116が、ステップS102r、S104r、S108r、S116rに置き換えられる。
ステップS102rにおいて、エントリENTRは、リフレッシュ要求RRQを受信したか否かを判定する。エントリENTRは、リフレッシュ要求RRQを受信した場合、処理をステップS104rに移行させ、リフレッシュ要求RRQを受信していない場合、ステップS102rの処理を繰り返す。
ステップS104rにおいて、エントリENTRは、リフレッシュ要求RRQに含まれるバリッドVLD、コマンドおよびアドレスを保持部HLDに保持する。保持領域HLDのバリッドVLDの領域には、有効なメモリアクセス要求MRQの保持を示す論理1が格納される。ステップS106の処理は、図5と同様である。ステートSTの”未発行”は、エントリENTRに保持されたリフレッシュ要求RRQが要求選択部16により選択されていないことを示す。すなわち、”未発行”は、エントリENTRに保持されたリフレッシュ要求RRQが、DIMMに供給されていないことを示す。
次に、ステップS108rにおいて、エントリENTRは、エントリENTRに保持されたリフレッシュ要求RRQに対応するリフレッシュ要求発行通知RRQSを受信したか否かを判定する。エントリENTRは、対応するリフレッシュ要求発行通知RRQSを受信した場合、処理をステップS110に移行させ、対応するリフレッシュ要求発行通知RRQSを受信していない場合、ステップS108rの処理を繰り返す。
ステップS110の処理は、図5と同様である。ステートSTの”発行済み”は、エントリENTRに保持されたリフレッシュ要求RRQが要求選択部16により選択されたことを示す。すなわち、”発行済み”は、エントリENTRに保持されたリフレッシュ要求RRQが、DIMMに供給されたことを示す。
ステップS112、S114の処理は、図5と同様である。ステップS114におけるステートSTの”リトライ”は、コマンドパリティエラー情報CAPEの発生により、エントリENTに保持されたリフレッシュ要求RRQをDIMMに再度発行することを示す。
リフレッシュ要求発行通知RRQSを受信後、リフレッシュ要求完了通知RRQEを受信していないリフレッシュ要求RRQは、SDRAMに受け付けられていないリフレッシュ要求RRQである。SDRAMがリフレッシュ要求RRQを受け付ける前にコマンドパリティエラーを検出し、コマンドパリティエラー情報CAPEを出力した場合、そのリフレッシュ要求RRQは、リトライの対象になる。
コマンドパリティエラー情報CAPEを受信しない場合、ステップS116rにおいて、エントリENTRは、エントリENTRに保持されたリフレッシュ要求RRQに対応するリフレッシュ要求完了通知RRQEを受信したか否かを判定する。エントリENTRは、対応するリフレッシュ要求完了通知RRQEを受信した場合、エントリENTに保持されたリフレッシュ要求RRQがSDRAMに受け付けられたと判断し、処理をステップS118に移行させる。一方、エントリENTRは、対応するリフレッシュ要求完了通知RRQEを受信していない場合、エントリENTに保持されたリフレッシュ要求RRQがSDRAMに受け付けられていないと判断し、処理をステップS112に戻す。ステップS118、S120の処理は、図5と同様である。そして、エントリENTRは、ステップS120の処理の後、処理をステップS102rに戻す。
図8は、図4および図6に示すステート制御部STCNTのステートSTの遷移の一例を示す。図8において、下線を付した文字は、アクセス要求保持部10のステート制御部STCNTの動作を示し、括弧内の文字は、リフレッシュ要求保持部14のステート制御部STCNTの動作を示す。以下では、アクセス要求保持部10の各エントリENTのステート制御部STCNTにおけるステートSTの遷移が説明される。リフレッシュ要求保持部14のエントリENTRのステート制御部STCNTにおけるステートSTの遷移は、以下の説明を次のように読み替えることで説明される。メモリアクセス要求MRQは、リフレッシュ要求RRQに読み替え、アクセス要求発行通知ARQSは、リフレッシュ要求発行通知RRQSに読み替え、アクセス要求完了通知ARQEは、リフレッシュ要求完了通知RRQEに読み替える。
メモリアクセス要求MRQを受信する前、ステート制御部STCNTは、ステートSTを”アイドル”に設定する。”アイドル”は、記憶制御装置MACのパワーオン後またはリセット後の初期状態であり、メモリアクセス要求MRQの受信待ちの状態を示す。
”アイドル”中にメモリアクセス要求MRQを受信した場合、アクセス要求MRQを保持したエントリENTのステート制御部STCNTは、ステートSTを”未発行”に設定する。”未発行”は、アクセス要求発行通知ARQSの受信待ちの状態を示す。
”未発行”中にアクセス要求発行通知ARQSを受信した場合、アクセス要求発行通知ARQSに対応するメモリアクセス要求MRQを保持するエントリENTのステート制御部STCNTは、ステートSTを”発行済み”に設定する。”発行済み”は、アクセス要求完了通知ARQEの受信待ちの状態を示す。
”発行済み”中にアクセス要求完了通知ARQEを受信した場合、アクセス要求完了通知ARQEに対応するメモリアクセス要求MRQを保持するエントリENTのステート制御部STCNTは、ステートSTを”アイドル”に戻す。一方、”発行済み”中にコマンドパリティエラー情報CAPEを受信した場合、ステート制御部STCNTは、ステートSTを”リトライ”に設定する。”リトライ”は、リトライの対象のアクセス要求MRQに対応するアクセス要求発行通知ARQSの受信待ちの状態を示す。
”リトライ”中にアクセス要求発行通知ARQSを受信した場合、アクセス要求発行通知ARQSに対応するメモリアクセス要求MRQを保持するエントリENTのステート制御部STCNTは、ステートSTを”発行済み”に設定する。
図9は、図2に示す要求選択部16の動作の一例を示す。例えば、図9に示す処理は、要求選択部16のハードウェアにより実現される。なお、図9は、説明を分かりやすくするために要求選択部16の動作を分解して示したものであり、実際の動作では、各ステップの幾つかは、並列に実行されてもよい。例えば、ステップS202、S208、S210は、並列に実行されてもよい。
まず、ステップS202において、要求選択部16は、エラー検出部24からのモード情報MDが通常モードを示す場合、処理をステップS204に移行し、モード情報MDが通常モードを示さない場合、処理をステップS208に移行する。
ステップS204において、要求選択部16は、”未発行”のステートSTを含むアクセス要求情報ARQIまたはリフレッシュ要求情報RRQIがあるか否かを判定する。”未発行”のステートSTを含むアクセス要求情報ARQIまたはリフレッシュ要求情報RRQIがある場合、処理はステップS206に移行される。”未発行”のステートSTを含むアクセス要求情報ARQIおよびリフレッシュ要求情報RRQIがない場合、処理はステップS202に戻る。
ステップS206において、要求選択部16は、”未発行”のステートSTを含むアクセス要求情報ARQIまたはリフレッシュ要求情報RRQIのいずれか1つを選択し、発行要求情報RQINFとして出力する。すなわち、アクセス要求MRQまたはリフレッシュ要求RRQがDIMMに出力され、アクセス動作またはリフレッシュ動作が実行される。ステップS206の後、処理は、ステップS202に戻る。
一方、ステップS208において、要求選択部16は、モード情報MDが再開待ちモードを示す場合、処理をステップS202に戻し、モード情報MDが再開待ちモードを示さない場合、処理をステップS210に移行する。図13で説明するように、再開待ちモードは、SDRAMがコマンドの受付を禁止するコマンドパリティエラー情報CAPEのアサート期間であり、発行要求情報RQINFの出力の再開待ちの状態である。このため、要求選択部16は、アクセス要求MRQまたはリフレッシュ要求RRQを選択せず、コマンドCMDはSDRAMに供給されない。
ステップS210において、要求選択部16は、モード情報MDがリトライ前準備モードを示す場合、処理をステップS212に移行し、モード情報MDがリトライ前準備モードを示さない場合、処理をステップS216に移行する。なお、モード情報MDがリトライ前準備モードを示さない場合、要求選択部16は、モード情報MDがリトライモードであると判定する。
ステップS212において、要求選択部16は、エラー検出部24からリトライ制御要求RTRQ(プリチャージ要求)を受信した場合、処理をステップS214に移行し、リトライ制御要求RTRQを受信していない場合、処理をステップS202に戻す。ステップS214において、要求選択部16は、リトライ制御要求RTRQを選択して発行要求情報RQINFとして出力する。なお、アクセス信号生成部18は、リトライ制御要求RTRQに対応する発行要求情報RQINFに基づいて、例えば、オールバンクプリチャージコマンドをDIMMに出力する。DIMM内の全てのSDRAMは、オールバンクプリチャージコマンドを受けて全てのバンクでプリチャージ動作を実行し、アクティブコマンドおよびリフレッシュコマンドを受信可能なスタンバイ状態になる。
一方、ステップS216において、要求選択部16は、”リトライ”のステートSTを含むアクセス要求情報ARQIまたはリフレッシュ要求情報RRQIがあるか否かを判定する。”リトライ”のステートSTを含むアクセス要求情報ARQIまたはリフレッシュ要求情報RRQIがある場合、処理はステップS218に移行される。”リトライ”のステートSTを含むアクセス要求情報ARQIおよびリフレッシュ要求情報RRQIがない場合、処理はステップS202に戻る。
ステップS218において、要求選択部16は、”リトライ”のステートSTを含むアクセス要求情報ARQIまたはリフレッシュ要求情報RRQIのいずれか1つを選択し、発行要求情報RQINFとして出力する。すなわち、コマンドパリティエラーの発生により、SDRAMに実行されなかったコマンドをSDRAMに再度発行するリトライ処理が実行される。ステップS218の後、処理はステップS202に戻る。
図10は、図2に示すパイプライン制御部20の一例を示す。パイプライン制御部20は、発行要求情報RQINFをクロックサイクル毎に順次に保持するシフトレジスタSFTRを有する。また、パイプライン制御部20は、要求完了通知生成部RQEG、ライトデータ要求生成部WDRQG、ライトデータ制御信号生成部WDCNTG、リードデータ制御信号生成部RDCNTGおよびリードデータ生成部RDGを有する。
シフトレジスタSFTRは、発行要求情報RQINFを発行順に保持する複数のステージSTG(STG1−STG28)を有する。各ステージSTGは、コマンドパリティエラー情報CAPEと、発行要求情報RQINFに含まれるライトデータ識別番号WDID、要求識別番号RQID、アドレスAD、コマンドCMDおよびバリッドVLDとを保持する。各ステージSTGに保持されたコマンドパリティエラー情報CAPEおよび発行要求情報RQINFは、クロックに同期して次段のステージSTGに転送される。
例えば、図2に示す要求選択部16がメモリアクセス要求MRQまたはリフレッシュ要求RRQを選択した後、メモリアクセス要求MRQまたはリフレッシュ要求RRQに対応するコマンドCMDがSDRAMに受け付けられるまで最大7クロックサイクル掛かる。すなわち、要求選択部16が発行要求情報RQINFを出力した後、SDRAMが発行要求情報RQINFに対応するコマンドCMDにエラーがないことを判定するまでに最大7クロックサイクル掛かる。換言すれば、要求選択部16が発行要求情報RQINFを出力した後、SDRAMが発行要求情報RQINFに対応するコマンドCMDのエラーを示すコマンドパリティエラー情報CAPEを記憶制御装置MACが受信するまで最大7クロックサイクル掛かる。
このため、要求完了通知生成部RQEGは、コマンドCMDにエラーがないことの判明後にステージSTG8に保持された情報に基づいて、アクセス要求完了通知ARQE、リフレッシュ要求完了通知RRQEまたはリトライ制御要求完了通知RTRQEを出力する。リトライ制御要求完了通知RTRQEは、メモリアクセス要求MRQまたはリフレッシュ要求RRQをリトライする前に供給されるプリチャージコマンドがSDRAMに受け付けられたことを示す。
このように、記憶制御装置MACは、パイプライン制御部20を利用することで、SDRAMからコマンドCMDの受付状況の通知を受けることなく、コマンドがSDRAMに受け付けられたことを判断する。なお、発行要求情報RQINFの出力からコマンドCMDがSDRAMに受け付けられるまでの8クロックサイクルは、メモリ制御回路MACの動作仕様と、DIMMおよびSDRAMの動作仕様とに基づいて決められる。
要求完了通知生成部RQEGは、ステージSTG8の”CAPE”の領域に論理1が保持されている場合、アクセス要求完了通知ARQE、リフレッシュ要求完了通知RRQEおよびリトライ制御要求完了通知RTRQEの出力を抑止する。これにより、SDRAMが受け付けていないメモリアクセス要求MRQがアクセス要求保持部10から削除されることを抑止することができる。また、SDRAMが受け付けていないリフレッシュ要求RRQがリフレッシュ要求保持部14から削除されることを抑止することができる。さらに、SDRAMが受け付けていないリトライ制御要求RTRQ(プリチャージ要求)がエラー検出部24から削除されることを抑止することができる。
要求完了通知生成部RQEGおよび図4に示すステート制御部STCNTは、エントリENTの保持部HLDに保持されたメモリアクセス要求MRQを削除し、あるいはメモリアクセス要求MRQの削除を抑止する要求制御部の一例である。また、要求完了通知生成部RQEGおよび図6に示すステート制御部STCNTは、エントリENTRの保持部HLDに保持されたリフレッシュ要求RRQを削除し、あるいはリフレッシュ要求RRQの削除を抑止する要求制御部の一例である。
ライトデータ要求生成部WDRQGは、ステージSTG12に保持された情報に基づいて、ライトデータ要求WDRQを出力する。また、ライトデータ要求生成部WDRQGは、ステージSTG12の”CAPE”の領域に論理1が保持されている場合、ライトデータ要求WDRQの出力を抑止する。これにより、SDRAMがライトコマンドを受け付けていないにも拘わらず、ライトデータ要求WDRQが出力され、CPUがライトデータを出力すること(すなわち、誤動作)を抑止することができる。
ライトデータ制御信号生成部WDCNTGは、ステージSTG16に保持された情報に基づいて、ライトデータ制御信号WDCNTを出力する。また、ライトデータ制御信号生成部WDCNTGは、ステージSTG16の”CAPE”の領域に論理1が保持されている場合、ライトデータ制御信号WDCNTの出力を抑止する。これにより、SDRAMがライトコマンドを受け付けていないにも拘わらず、無効なライトデータがライトデータ制御部26からSDRAMに出力されること(すなわち、誤動作)を抑止することができる。
リードデータ制御信号生成部RDCNTGは、ステージSTG24に保持された情報に基づいて、リードデータ制御信号RDCNTを出力する。また、リードデータ制御信号生成部RDCNTGは、ステージSTG24の”CAPE”の領域に論理1が保持されている場合、リードデータ制御信号RDCNTの出力を抑止する。これにより、SDRAMがリードコマンドを受け付けていないにも拘わらず、リードデータ制御信号RDCNTが出力され、無効なリードデータがリードデータ制御部28からCPUに出力されること(すなわち、誤動作)を抑止することができる。
リードデータ生成部RDGは、ステージSTG28に保持された情報に基づいて、バリッド信号VLD(R)および要求識別番号RQID(R)を出力する。また、リードデータ生成部RDGは、ステージSTG28の”CAPE”の領域に論理1が保持されている場合、バリッド信号VLD(R)および要求識別番号RQID(R)の出力を抑止する。
上述したように、要求選択部16が発行要求情報RQINFを出力した後、SDRAMが発行要求情報RQINFに対応するコマンドCMDのエラーを示すコマンドパリティエラー情報CAPEを受信するまでの最大時間は、7クロックサイクルである。このため、発行要求情報RQINFの発行から7クロックサイクルが経過する前にコマンドパリティエラー情報CAPEを受信した場合、その発行要求情報RQINFはリトライの対象となる。すなわち、コマンドパリティエラー情報CAPEを受信した時点でステートSTが”発行済み”のメモリアクセス要求MRQおよびリフレッシュ要求RRQは、リトライの対象になる。
リトライの対象の発行要求情報RQINFに対応するアクセス要求完了通知ARQEおよびリフレッシュ要求完了通知RRQEの出力を抑制するために、ステージSTG1−STG8におけるコマンドパリティエラー情報CAPEの入力経路に論理回路が挿入される。
例えば、ステージSTG1は、DIMMからのコマンドパリティエラー情報CAPEとバリッドVLDとの論理積(AND)をとった論理を受ける。ステージSTG2−STG8は、DIMMからのコマンドパリティエラー情報CAPEとバリッドVLDとの論理積(AND)と、前段からのコマンドパリティエラー情報CAPEとの論理和(OR)をとった論理を受ける。ステージSTG9−STG28は、前段からのコマンドパリティエラー情報CAPEを受ける。
これにより、リトライの対象と判定されたメモリアクセス要求MRQ(ライトコマンド)に対応するライトデータ要求WDRQおよびライトデータ制御信号WDCNTが出力されることを抑止することができる。また、リトライの対象と判定されたメモリアクセス要求MRQ(リードコマンド)に対応するリードデータ制御信号RDCNT、バリッド信号VLD(R)および要求識別番号RQID(R)が出力されることを抑止することができる。パイプライン制御部20の動作の一例は、図21に示す。
図11は、図2に示す要求発行リリース通知生成部22の一例を示す。要求発行リリース通知生成部22は、要求リリース通知生成部221および要求発行通知生成部222を有する。要求リリース通知生成部221は、アクセス要求完了通知ARQEの受信に基づいて、メモリアクセス要求リリース情報MRQRをCPUに出力する。すなわち、CPUからのメモリアクセス要求MRQに対応するコマンドCMDがSDRAMに受け付けられたこと示すメモリアクセス要求リリース情報MRQRが出力される。
要求発行通知生成部222は、発行要求情報RQINFの受信に基づいて、アクセス要求発行通知ARQSまたはリフレッシュ要求発行通知RRQSを出力する。すなわち、メモリアクセス要求MRQがDIMMに供給されたことが、アクセス要求保持部10に通知され、またはリフレッシュ要求RRQがDIMMに供給されたことが、リフレッシュ要求保持部14に通知される。
図12は、図2に示すエラー検出部24の一例を示す。エラー検出部24は、リトライ制御部RTCNTを有する。リトライ制御部RTCNTは、メモリアクセス要求MRQまたはリフレッシュ要求RRQをリトライする場合に、リトライ処理の状態を示すモード情報MDを保持するレジスタMDRと、リトライ処理の回数を計数するカウンタRCOUNTとを有する。なお、カウンタRCOUNTは、エラー検出部24の外部に配置されてもよい。レジスタMDRによるモードの遷移の一例は、図13に示す。
リトライ制御部RTCNTは、メモリアクセス要求MRQまたはリフレッシュ要求RRQをリトライする場合に、SDRAMにプリチャージ動作を実行させるために、リトライ制御要求RTRQ(プリチャージ要求)を出力する。また、リトライ制御部RTCNTは、コマンドパリティエラー情報CAPEの受信毎にカウンタRCOUNTの計数値をカウントアップする。そして、リトライ制御部RTCNTは、コマンドパリティエラー情報CAPEの受信回数(すなわち、リトライ回数)が所定値VTになった場合、システムエラー情報SYSEをCPUに出力する。リトライ制御部RTCNTは、カウンタRCOUNTの計数値が所定値VTに達した場合に、CPUにシステムエラーを示すシステムエラー情報SYSEを出力するシステムエラー検出部の一例である。
図13は、図12に示すリトライ制御部RTCNTによるモード情報MDの遷移の一例を示す。コマンドパリティエラー情報CAPEを受信する前、リトライ制御部RTCNTは、モード情報MDを通常モードに設定する。通常モードは、記憶制御装置MACのパワーオン後またはリセット後の初期状態であり、リトライ処理が発生していない状態を示す。
通常モード中にコマンドパリティエラー情報CAPEを受信した場合、リトライ制御部RTCNTは、モード情報MDを再開待ちモードに遷移させる。発行要求情報RQINFの出力は、”再開待ち”の間抑制される。再開待ちモードは、アサート状態のコマンドパリティエラー情報CAPEがネゲートされるまでの状態であり、発行要求情報RQINFの出力の再開待ちの状態である。
再開待ちモード中にコマンドパリティエラー情報CAPEがネゲートされた場合、リトライ制御部RTCNTは、モード情報MDをリトライ前準備モードに遷移させる。リトライ前準備モードは、リトライ処理を実行する前にSDRAMの動作状態をリセット(プリチャージ)する状態である。
リトライ前準備モード中にリトライ制御要求完了通知RTRQEを受信した場合、リトライ制御部RTCNTは、モード情報MDをリトライモードに遷移させる。すなわち、SDRAMのプリチャージ動作が完了した場合、リトライ制御部RTCNTは、メモリアクセス要求MRQまたはリフレッシュ要求RRQのリトライを実行するために、モード情報MDをリトライモードに遷移する。リトライモード中にメモリアクセス要求MRQまたはリフレッシュ要求RRQのリトライが完了した場合、リトライ制御部RTCNTは、モード情報MDを通常モードに遷移させる。
図14は、図2に示す記憶制御装置MACにおけるコマンドパリティエラー情報CAPEの受信時の動作の一例を示す。図14は、記憶制御装置MACの全体の動作を示す。なお、図14は、説明を分かりやすくするために記憶制御装置MACの動作を分解して示しており、実際の動作では、各ステップの幾つかは、並列に実行されてもよい。
まず、ステップS302において、記憶制御装置MACは、コマンドパリティエラー情報CAPEがハイレベルHにアサートされた場合、処理をステップS400に移行する。コマンドパリティエラー情報CAPEがアサートされない場合(ロウレベル)、記憶制御装置MACは、ステップS302を繰り返す。ステップS400において、記憶制御装置MACは、図4および図6に示すステート制御部STCNTのステートSTの設定動作を実行する。ステップS400の一例は、図15に示す。
次に、ステップS306において、記憶制御装置MACは、図12に示すエラー検出部24のカウンタRCOUNTの計数値をカウントアップする。次に、ステップS308において、記憶制御装置MACは、エラー検出部24のモードレジスタMDRに再開待ちモードを示すモード情報MDを格納する。
次に、ステップS310において、記憶制御装置MACは、コマンドパリティエラー情報CAPEがロウレベルLにネゲートされるのを待ち、コマンドパリティエラー情報CAPEがネゲートされた場合、処理をステップS312に移行する。コマンドパリティエラー情報CAPEのアサート期間は、SDRAMがコマンドを受け付けない期間である。
ステップS312において、記憶制御装置MACは、エラー検出部24のモードレジスタMDRにリトライ前準備モードを示すモード情報MDを格納する。次に、ステップS314において、記憶制御装置MACは、エラー検出部24からリトライ制御要求RTRQを発行し、SDRAMにプリチャージ動作を実行させる。
次に、ステップS316において、記憶制御装置MACは、コマンドパリティエラー情報CAPEがハイレベルHにアサートされた場合(CAPEが連続して発生した場合)、処理をステップS332に移行する。コマンドパリティエラー情報CAPEがアサートされない場合、記憶制御装置MACは、処理をステップS318に移行する。
ステップS318において、記憶制御装置MACは、リトライ制御要求完了通知RTRQEが発生した場合、プリチャージコマンドがSDRAMに受け付けられたため、処理をステップS320に移行する。リトライ制御要求完了通知RTRQEが発生しない場合、記憶制御装置MACは、処理をステップS316に戻す。
ステップS320において、記憶制御装置MACは、エラー検出部24のモードレジスタMDRにリトライモードを示すモード情報MDを格納する。
次に、ステップS500において、記憶制御装置MACは、メモリアクセス要求MRQまたはリフレッシュ要求RRQのリトライ処理を実行する。ステップS500の一例は、図16に示す。
次に、ステップS324において、記憶制御装置MACは、コマンドパリティエラー情報CAPEがハイレベルHにアサートされた場合(リトライ用のコマンドMCDに対するCAPEの発生)、処理をステップS332に移行する。コマンドパリティエラー情報CAPEがアサートされない場合、記憶制御装置MACは、処理をステップS326に移行する。
ステップS326において、記憶制御装置MACは、全てのリトライ処理が完了した場合、処理をステップS328に移行し、実行していないリトライ処理がある場合、処理をステップS500に移行する。ステップS328において、記憶制御装置MACは、カウンタRCOUNTの計数値を”0”等の初期値にリセットする。次に、ステップS330において、記憶制御装置MACは、エラー検出部24のモードレジスタMDRに通常モードを示すモード情報MDを格納し、処理をステップS302に戻す。
一方、ステップS322において、記憶制御装置MACは、カウンタRCOUNTの計数値が閾値VTになったか否かを判定する。計数値が閾値VTになった場合、記憶制御装置MACは、処理をステップS334に移行する。計数値が閾値VTに到達していない場合、記憶制御装置MACは、処理をステップS400に戻す。
ステップS334において、記憶制御装置MACは、SDRAMまたはDIMMの動作が正常でないことを示すシステムエラー情報SYSEをCPUに出力し、動作を終了する。
図15は、図14に示すステップS400の動作の一例を示す。まず、ステップS402において、記憶制御装置MACは、変数kを”1”に初期化する。次に、ステップS404において、記憶制御装置MACは、アクセス要求保持部10においてk番目のエントリENTkのステートSTが”発行済み”であるか否かを判定する。k番目のエントリENTkのステートSTが”発行済み”の場合、メモリアクセス要求MRQをリトライさせるため、処理をステップS406に移行する。k番目のエントリENTkのステートSTが”発行済み”でない場合、リトライの対象のメモリアクセス要求MRQでないため、処理をステップS408に移行する。
ステップS406において、記憶制御装置MACは、メモリアクセス要求MRQをリトライさせるため、k番目のエントリENTkのステートSTを”リトライ”に設定し、処理をステップS408に移行する。ステップS408において、記憶制御装置MACは、変数kを”1”増加させ、処理をステップS410に移行する。
ステップS410において、記憶制御装置MACは、変数kがエントリENTの数nを超えた場合、処理をステップS412に移行し、変数kがエントリENTの数n以下の場合、処理をステップS404に移行する。
ステップS412において、記憶制御装置MACは、リフレッシュ要求保持部14のエントリENTRのステートSTが”発行済み”であるか否かを判定する。エントリENTRのステートSTが”発行済み”の場合、リフレッシュ要求RRQをリトライさせるため、処理をステップS414に移行する。エントリENTRのステートSTが”発行済み”でない場合、リトライの対象のリフレッシュ要求RRQがないため、動作を終了する。
ステップS414において、記憶制御装置MACは、リフレッシュ要求RRQをリトライさせるため、エントリENTRのステートSTを”リトライ”に設定し、動作を終了する。
図16は、図14に示すステップS500の動作の一例を示す。まず、ステップS502において、記憶制御装置MACは、アクセス要求発行通知ARQSが発生した場合、処理をステップS504に移行し、アクセス要求発行通知ARQSが発生していない場合、処理をステップS506に移行する。
ステップS504において、記憶制御装置MACは、発生したアクセス要求発行通知ARQSに含まれる要求識別番号RQIDと同じ要求識別番号RQIDを保持する該当エントリENTのステートSTを”発行済み”に設定する。記憶制御装置MACは、ステップS504の後、処理をステップS510に移行する。
ステップS506において、記憶制御装置MACは、リフレッシュ要求発行通知RRQSが発生した場合、処理をステップS508に移行し、リフレッシュ要求発行通知RRQSが発生していない場合、処理をステップS510に移行する。ステップS508において、記憶制御装置MACは、リフレッシュ要求保持部14のエントリENTRのステートSTを”発行済み”に設定し、処理をステップS510に移行する。
ステップS510において、記憶制御装置MACは、アクセス要求完了通知ARQEが発生した場合、処理をステップS512に移行し、アクセス要求完了通知ARQEが発生していない場合、処理をステップS516に移行する。
ステップS512において、記憶制御装置MACは、発生したアクセス要求完了通知ARQEに含まれる要求識別番号RQIDと同じ要求識別番号RQIDを保持する該当エントリENTのステートSTを”アイドル”に設定する。次に、ステップS514において、記憶制御装置MACは、ステートSTを”アイドル”に設定したエントリENTのバリッドVLDを論理0に設定し、メモリアクセス要求MRQを削除し、動作を終了する。
ステップS516において、記憶制御装置MACは、リフレッシュ要求完了通知RRQEが発生した場合、処理をステップS518に移行し、リフレッシュ要求完了通知RRQEが発生していない場合、動作を終了する。ステップS518において、記憶制御装置MACは、リフレッシュ要求保持部14のエントリENTRのステートSTを”アイドル”に設定し、処理をステップS520に移行する。
ステップS520において、記憶制御装置MACは、リフレッシュ要求保持部14のエントリENTRのバリッドVLDを論理0に設定し、リフレッシュ要求RRQを削除し、動作を終了する。
図17および図18は、図2に示す記憶制御装置MACの動作の一例を示し、図19および図20は、図17および図18の動作の続きを示す。図17から図20は、図17を左上、図18を左下、図19を右上、図20を右下に並べることで、1つのタイミング図になる。
図17から図20の上側に示す数字は、クロックサイクル数を示す。図17から図20において、符号W0、W3はライト要求(ライトコマンド)を示し、符号R1、R2はリード要求(リードコマンド)を示す。符号Rはリフレッシュ要求(リフレッシュコマンド)を示し、符号Pはプリチャージ要求(プリチャージコマンド)を示す。リード要求R1、R2の末尾の数字は、要求識別番号RQIDを示し、ライト要求W0、W3の末尾の数字は、要求識別番号RQIDおよびライトデータ識別番号WDIDを示す。メモリアクセス要求MRQ、リフレッシュ要求RRQ、発行要求情報RQINF、アクセス要求発行通知ARQS等において、バリッドVLDは、要求W0、R1、R2、W3、R、Pの発生時に論理1に設定される。アドレスADの記載は省略する。
アクセス要求保持部10のエントリENTk(”k”は、正の整数)、ENTk+1、ENTk+2、ENTk+3のステートSTにおいて、符号IDLは”アイドル”を示し、”未”は”未発行”を示し、”済”は”発行済み”を示す。リフレッシュ要求保持部14のエントリENTRのステートSTの符号も、エントリENTk、ENTk+1、ENTk+2、ENTk+3のステートSTの符号と同様である。
記憶制御装置MACは、4つのメモリアクセス要求MRQ(ライト要求W0、リード要求R1、R2およびライト要求W3)をCPUから順に受けて動作する(図17(a))。リフレッシュ制御部12は、リード要求R2とライト要求W3の間に、リフレッシュ要求RRQを出力する(図17(b))。
エントリENTkは、ライト要求W0の保持に伴い、ステートSTをアイドルIDLから”未発行”に遷移する(図17(c))。同様に、エントリENTk+1、ENTk+2、ENTk+3の各々は、リード要求R1、R2およびライト要求W3の保持に伴い、ステートSTをアイドルIDLから”未発行”に遷移する(図17(d)、(e)、(f))。エントリENTRは、リフレッシュ要求Rの保持に伴い、ステートSTをアイドルIDLから”未発行”に遷移する(図17(g))。
要求選択部16は、発行要求情報RQINFとしてライト要求W0およびリード要求R1、R2を順次に出力し、ライト要求W0およびリード要求R1、R2に対応するコマンドCMDは、DIMMに順次に供給される(図17(h))。パイプライン制御部20は、ライト要求W0およびリード要求R1、R2に対応するアクセス要求発行通知ARQSを順次に出力する(図17(i))。
エントリENTk、ENTk+1、ENTk+2のステートSTは、アクセス要求発行通知ARQS(W0、R1、R2)にそれぞれ基づいて”発行済み”に設定される(図17(j)、(k)、(l))。
要求選択部16は、リフレッシュ要求Rに対応する発行要求情報RQINFを出力し、リフレッシュ要求R2に対応するコマンドCMDは、DIMMに供給される(図17(m))。パイプライン制御部20は、リフレッシュ要求Rに対応するリフレッシュ要求発行通知RRQSを出力する(図17(n))。エントリENTRのステートSTは、リフレッシュ要求発行通知RRQS(R)に基づいて”発行済み”に設定される(図17(o))。
図18において、パイプライン制御部20のステージSTG1−STG28は、ライト要求W0およびリード要求R1、R2を順に転送する。そして、パイプライン制御部20は、ステージSTG8がライト要求W0およびリード要求R1をそれぞれ保持したことに基づいて、ライト要求W0およびリード要求R1に対応するアクセス要求完了通知ARQEを出力する(図18(a)、(b))。
図17に示すエントリENTk、ENTk+1は、対応するアクセス要求完了通知ARQEに基づいて、ステートSTをアイドルIDLに設定する(図17(p)、(q))。
パイプライン制御部20は、ステージSTG12がライト要求W0を保持したことに基づいて、ライト要求W0に対応するライトデータ要求WDRQをCPUに出力する(図18(c))。パイプライン制御部20は、ステージSTG16がライト要求W0を保持したことに基づいて、ライトデータ制御信号WDCNTを4クロックサイクル出力する(図18(d))。ライトデータ制御部26は、ライトデータ要求WDRQの出力期間にCPUから出力されるライトデータD0、D1、D2、D3をDIMMに転送する(図18(e))。そして、ライト要求W0に対応して実行されるSDRAMのライト動作が実行される。
パイプライン制御部20は、ステージSTG24がリード要求R1を保持したことに基づいて、リードデータ制御信号RDCNTを4クロックサイクル出力する(図18(f))。リードデータ制御部28は、リードデータ制御信号RDCNTの出力期間にDIMMから出力されるデータをリードデータD4、D5、D6、D7としてCPUに出力する(図18(g))。そして、リード要求R1に対応して実行されるDIMMのリード動作が完了する。
一方、図17において、DIMM(SDRAM)は、リード要求R2のパリティエラーを検出し、9クロックサイクルの期間、コマンドパリティエラー情報CAPEをアサートする(図17(r))。なお、コマンドパリティエラー情報CAPEのアサート期間は、9クロックサイクルに限定されない。モード情報MDは、コマンドパリティエラー情報CAPEに基づいて再開待ちモードに遷移し、カウンタRCOUNTの計数値は、インクリメントされて”1”になる(図17(s))。再開待ちモードは、コマンドパリティエラー情報CAPEを受信中であることを示し、要求選択部16によるメモリアクセス要求MRQおよびリフレッシュ要求RRQの選択は抑止される。SDRAMは、コマンドパリティエラー情報CAPEを出力中に、新たなコマンドCMDを受け付けない。このため、再開待ちモード中にメモリアクセス要求MRQおよびリフレッシュ要求RRQの選択を抑止することで、無駄なコマンドCMDがSDRAMに供給されることを抑止することができる。
ステートSTが”発行済み”のエントリENTk+2、ENTk+3が保持しているリード要求R2およびリフレッシュ要求Rは、リトライの対象になる。このため、エントリENTk+2、ENTk+3のステートSTは、”リトライ”に設定される(図17(t)、(u))。
図18において、コマンドパリティエラー情報CAPEがアサートされている期間にステージSTG1−STG8のいずれかに保持されたリード要求R2は、アクセス要求完了通知ARQEの出力がマスクされる(図18(h))。また、コマンドパリティエラー情報CAPEがアサートされている期間にステージSTG1−STG8のいずれかに保持されたリード要求R2は、リードデータ制御信号RDCNTの出力がマスクされる(図18(i))。同様に、コマンドパリティエラー情報CAPEがアサートされている期間にステージSTG1−STG8のいずれかに保持されたリフレッシュ要求Rは、リフレッシュ要求完了通知RRQEの出力がマスクされる(図18(j))。
なお、エントリENTk+2がリード要求R2の代わりにライト要求W2を保持し、ライト要求W2に対応してコマンドパリティエラーが発生した場合、対応するライトデータ要求WDRQおよびライトデータ制御信号WDCNTの出力がマスクされる。
図17において、エラー検出部24は、コマンドパリティエラー情報CAPEのネゲートを待って、リトライ制御要求RTRQ(プリチャージ要求P)を出力し、モード情報MDをリトライ前準備モードに設定する(図17(v))。要求選択部16は、リトライ制御要求RTRQ(プリチャージ要求P)に基づいて、プリチャージコマンドPをDIMMに出力する(図17(w))。
図18において、パイプライン制御部20は、ステージSTG8がプリチャージ要求Pを保持したことに基づいて、プリチャージ要求Pに対応するリトライ制御要求完了通知RTRQEを出力する(図18(k))。
図17において、エラー検出部24は、リトライ制御要求完了通知RTRQEに基づいて、モード情報MDをリトライモードに設定する(図17(x))。要求選択部16は、モード情報MDがリトライモードを示すため、リトライ用の発行要求情報RQINFとしてリード要求R2およびリフレッシュ要求Rを順次に出力する(図17(y)、(z))。SDRAMは、リード要求R2に対応するアクティブコマンド、リードコマンドおよびリフレッシュ要求Rに対応するリフレッシュコマンドを順次に受け、リード動作およびリフレッシュ動作を開始する。なお、図17に示す例では、リトライ用のリード要求R2およびリフレッシュ要求RRQのコマンドパリティエラーは発生しない。
パイプライン制御部20は、リトライ用のリード要求R2に対応するアクセス要求発行通知ARQSを出力し、リトライ用のリフレッシュ要求Rに対応するリフレッシュ要求発行通知RRQSを出力する(図17(a1、b1))。エントリENTk+2のステートSTは、アクセス要求発行通知ARQS(R2)に基づいて”発行済み”に設定される(図17(c1))。エントリENTk+3のステートSTは、リフレッシュ要求発行通知RRQS(R)に基づいて”発行済み”に設定される(図17(d1))。
図18において、パイプライン制御部20は、ステージSTG8がリード要求R2を保持したことに基づいて、リード要求R2に対応するアクセス要求完了通知ARQEを出力する(図18(l))。図17において、エントリENTk+2のステートSTは、アクセス要求完了通知ARQEに基づいてアイドルIDLに設定される(図17(e1))。
図20において、パイプライン制御部20は、ステージSTG8がリトライ用のリフレッシュ要求Rを保持したことに基づいて、リフレッシュ要求Rに対応するリフレッシュ要求完了通知RRQEを出力する(図20(a))。
図19に示すエントリENTRは、リフレッシュ要求完了通知RRQEに基づいて、ステートSTをアイドルIDLに設定する(図19(a))。エラー検出部24は、アクセス要求保持部10からのアクセス要求情報ARQIおよびリフレッシュ要求保持部14からのリフレッシュ要求情報RRQIに、”リトライ”を示すステートSTが存在しなくなった場合、全てのリトライが完了したことを検出する。そして、エラー検出部24は、カウンタRCOUNTの計数値をリセットし、モード情報MDを通常モードに設定する(図19(b))。
要求選択部16は、ライト要求W3に対応する発行要求情報RQINFを出力し、ライト要求W3に対応するアクティブコマンドおよびライトコマンドは、DIMMに供給される(図19(c))。パイプライン制御部20は、ライト要求W3に対応するアクセス要求発行通知ARQSを出力する(図19(d))。エントリENTk+3のステートSTは、ライト要求W3に対応するアクセス要求発行通知ARQSに基づいて”発行済み”に設定される(図19(e))。
図20において、パイプライン制御部20は、ステージSTG8がライト要求W3を保持したことに基づいて、ライト要求W3に対応するアクセス要求完了通知ARQEを出力する(図20(b))。
パイプライン制御部20は、ステージSTG12がライト要求W3を保持したことに基づいて、ライト要求W3に対応するライトデータ要求WDRQを出力する(図20(c))。パイプライン制御部20は、ステージSTG16がライト要求W3を保持したことに基づいて、ライトデータ制御信号WDCNTを4クロックサイクル出力する(図20(d))。ライトデータ制御部26は、ライトデータ要求WDRQの出力期間にCPUから出力されるライトデータD8、D9、Da、DbをDIMMに転送する(図20(e))。そして、ライト要求W3に対応して実行されるSDRAMのライト動作が開始される。
図19に示すエントリENTk+3は、対応するアクセス要求完了通知ARQE(W3)に基づいて、ステートSTをアイドルIDLに設定する(図19(f))。そして、CPUから供給されるライト要求W0、リード要求R1、R2、ライト要求W3と、リフレッシュ制御部12が生成するリフレッシュ要求Rに応答するライト動作、リード動作およびリフレッシュ動作が、SDRAMで実行される。
図21は、図10に示すパイプライン制御部20の動作の一例を示す。図21は、図17から図20に示す動作に対応するパイプライン制御部20の動作を示す。
パイプライン制御部20のシフトレジスタSFTRのステージSTG1に保持された発行要求情報RQINFに含まれる情報は、クロックサイクル毎に後段のステージSGに順次に転送される。また、コマンドパリティエラー情報CAPEのアサート期間にステージSTG1−STG8のいずれかに保持されているリード要求R2およびリフレッシュ要求Rは無効にされる。すなわち、2本の一点鎖線で挟まれた太枠で示すリード要求R2およびリフレッシュ要求Rは、無効にされ、リトライの対象にされる。
このため、パイプライン制御部20は、ステージSTG8が太枠のリード要求R2を保持した場合にも、アクセス要求完了通知ARQEを出力しない(図21(a))。パイプライン制御部20は、ステージSTG8が太枠のリフレッシュ要求Rを保持した場合にも、リフレッシュ要求完了通知RRQEを出力しない(図21(b))。
さらに、パイプライン制御部20は、ステージSTG24が太枠のリード要求R2を保持した場合にも、リードデータ制御信号RDCNTを出力しない(図21(c))。パイプライン制御部20は、ステージSTG28が太枠のリード要求R2を保持した場合にも、バリッド信号VLD(R)および要求識別番号RQID(R)を出力しない(図21(d))。
以上、図2から図21に示す実施形態においても、図1に示す実施形態と同様の効果を得ることができる。すなわち、SDRAMがコマンドCMDまたはアドレスADのパリティエラーを検出した場合、要求選択部16により選択済みのアクセス要求MRQは、ステージSTG8に保持された後も、削除されることなくアクセス要求保持部10に保持される。同様に、SDRAMがコマンドCMDまたはアドレスADのパリティエラーを検出した場合、要求選択部16により選択済みのリフレッシュ要求RRQは、ステージSTG8に保持された後も、削除されることなくリフレッシュ要求保持部14に保持される。
これにより、記憶制御装置MACは、SDRAMで実行されなかったメモリアクセス要求MRQおよびリフレッシュ要求RRQを、SDRAMに再度発行することができる。この結果、記憶制御装置MAC、CPUおよびDIMMを含むシステムは、コマンドパリティエラー情報CAPEが発生した場合にも、動作を停止させることなく継続することができる。コマンドパリティエラーの発生によりSDRAMに受け付けられなかったメモリアクセス要求MRQまたはリフレッシュ要求RRQは、その後リトライされため、システムの信頼性が低下することを抑止することができ、システムの性能の向上することができる。
さらに、図2から図21に示す実施形態では、SDRAMがコマンドCMDを受け付けていないにも拘わらず、CPUまたは記憶制御装置MACがコマンドCMDの受け付け後の動作を実行することを抑止することができる。この結果、CPUおよび記憶制御装置MACの誤動作を抑止することができる。
記憶制御装置MACは、コマンドパリティエラー情報CAPEの受信後、メモリアクセス要求MRQまたはリフレッシュ要求RRQのリトライ前に、SDRAMにプリチャージコマンドを発行する。これにより、SDRAMを誤動作させることなく、SDRAMにリトライ動作を実行させることができる。
図22は、記憶制御装置および記憶制御装置の制御方法の別の実施形態を示す。図2から図21で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図22に示す記憶制御装置MACaは、図2に示す記憶制御装置MACのアクセス要求保持部10およびリフレッシュ要求保持部14の代わりに、アクセス要求保持部10Aおよびリフレッシュ要求保持部14Aを有する。また、記憶制御装置MACaは、図2に示す記憶制御装置MACのパイプライン制御部20の代わりに、パイプライン制御部20Aを有する。さらに、記憶制御装置MACaは、図2に示す記憶制御装置MACの要求発行リリース通知生成部22およびエラー検出部24の代わりに、要求発行リリース通知生成部22Aおよびエラー検出部24Aを有する。記憶制御装置MACaのその他の構成は、図2に示す記憶制御装置MACと同様である。
アクセス要求保持部10Aは、アクセス要求完了通知ARQEをパイプライン制御部20Aから受けるのではなく、エントリENT毎にアクセス要求完了通知ARQEを自ら生成する。そして、アクセス要求保持部10Aは、生成したアクセス要求完了通知ARQEを要求発行リリース通知生成部22に出力する。アクセス要求保持部10Aの一例は、図23に示す。
リフレッシュ要求保持部14Aは、リフレッシュ要求完了通知RRQE(図2)をパイプライン制御部20Aから受けることなく動作することを除き、図2に示すリフレッシュ要求保持部14と同様の機能を有する。リフレッシュ要求保持部14Aの一例は、図25に示す。
パイプライン制御部20Aは、図2に示すパイプライン制御部20からアクセス要求完了通知ARQE、リフレッシュ要求完了通知RRQEおよびリトライ制御要求完了通知RTRQEを出力する機能を削除している。パイプライン制御部20Aの一例は、図28に示す。
エラー検出部24Aは、リトライ制御要求完了通知RTRQE(図2)をパイプライン制御部20Aから受けることなく動作することを除き、図2に示すエラー検出部24Aと同様の機能を有する。エラー検出部24Aの一例は、図29に示す。
図23は、図22に示すアクセス要求保持部10Aの一例を示す。図4に示すアクセス要求保持部10と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
アクセス要求保持部10Aは、各エントリENT1−ENTnのステート制御部STCNTが、タイマTMを有し、アクセス要求完了通知ARQEを出力する機能を有する。アクセス要求保持部10Aのその他の構成は、アクセス要求完了通知ARQEを受信しないことを除き、図4に示すアクセス要求保持部10と同様である。
各エントリENTのステート制御部STCNTは、エントリENTに保持されたメモリアクセス要求MRQに対応するアクセス要求発行通知ARQSの受信に応答してタイマTMを起動する。また、各エントリENTのステート制御部STCNTは、アクセス要求完了通知ARQE(図4)を受信することなく、タイマTMが所定時間を計測した場合、アクセス要求完了通知ARQEを出力し、ステートSTを”発行済み”から”アイドル”に遷移させる。タイマTMが計測する所定時間は、要求選択部16がメモリアクセス要求MRQを選択してから、図10に示す要求完了通知生成部RQEGがアクセス要求完了通知ARQEを出力するまでの時間と同等である。すなわち、各ステート制御部STCNTは、図2に示すパイプライン制御部20によるアクセス要求完了通知ARQEの出力タイミングと同様のタイミングを生成することができる。
各ステート制御部STCNTは、タイマTMが所定時間を計測する前にコマンドパリティエラー情報CAPEを受信した場合、アクセス要求完了通知ARQEを出力せず、ステートSTを”発行済み”に維持する。コマンドパリティエラー情報CAPEが発生した場合に、ステートSTが”発行済み”に維持されるため、メモリアクセス要求MRQのリトライを実行することができる。
なお、各ステート制御部STCNTは、タイマTMの代わりに、所定の周期毎にカウントアップまたはカウントダウンするカウンタを有してもよい。この場合、カウンタは、アクセス要求発行通知ARQSの受信に応答してカウント動作を開始し、所定の時間に対応する計数値を刻んだときにアクセス要求完了通知ARQEに対応するタイミング信号を出力する。
図24は、図23に示すアクセス要求保持部10Aの各エントリENTの動作の一例を示す。図5に示す動作と同一または同様の動作は、図5と同じ符号を付し、詳細な説明は省略する。図24に示すフローは、図5に示すフローに対して、ステップS110、S112の間にステップS111が挿入され、ステップS116がステップS115、S117に置き換えられる。
アクセス要求保持部10AのエントリENTは、アクセス要求発行通知ARQSを受信した後、ステップS111において、タイマTMを起動し、処理をステップS112に移行する。
ステップS115において、エントリENTは、タイマTMが所定時間の計測を完了したか否かを判定する。タイマTMが所定時間の計測を完了した場合、処理はステップS117に移行し、タイマTMが所定時間の計測を完了していない場合、処理はステップS112に戻る。ステップS117において、エントリENTは、アクセス要求完了通知ARQEを要求発行リリース通知生成部22Aに出力し、処理をステップS118に移行する。なお、要求発行リリース通知生成部22Aは、エントリENTからのアクセス要求完了通知ARQEに基づいて、メモリアクセス要求リリース情報MRQRをCPUに出力する。
以上の動作により、アクセス要求保持部10Aは、パイプライン制御部20Aを利用することなく、メモリアクセス要求リリース情報MRQRをCPUに出力するタイミングを生成することができる。
図25は、図22に示すリフレッシュ要求保持部12Aの一例を示す。図6に示すリフレッシュ要求保持部12と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
リフレッシュ要求保持部12Aは、エントリENTRのステート制御部STCNTが、タイマTMを有し、タイマTMによる所定時間の計測に基づいてステートSTを”発行済み”から”アイドル”に遷移させる機能を有する。リフレッシュ要求保持部12Aのその他の構成は、リフレッシュ要求完了通知RRQEを受信しないことを除き、図6に示すリフレッシュ要求保持部12と同様である。
エントリENTRのステート制御部STCNTの動作は、図23に示すアクセス要求保持部10Aのステート制御部STCNTの動作と同様である。すなわち、ステート制御部STCNTは、リフレッシュ要求発行通知RRQSの受信に応答してタイマTMを起動する。また、ステート制御部STCNTは、コマンドパリティエラー情報CAPEを受信することなく、タイマTMが所定時間を計測した場合、ステートSTを”発行済み”から”アイドル”に遷移させる。タイマTMの所定時間は、アクセス要求保持部10AのタイマTMと同様に、図2に示すパイプライン制御部20が、リフレッシュ要求RRQを示す発行要求情報RQINFを受信してからリフレッシュ要求完了通知RRQEを出力するまでの時間に等しい。
ステート制御部STCNTは、タイマTMが所定時間を計測する前にコマンドパリティエラー情報CAPEを受信した場合、ステートSTを”発行済み”に維持する。これにより、ステート制御部STCNTは、図6に示すリフレッシュ要求保持部14と同様に、コマンドパリティエラー情報CAPEが発生した場合に、ステートSTを”発行済み”に維持し、リフレッシュ要求RRQのリトライを実行することができる。
なお、ステート制御部STCNTは、タイマTMの代わりに、所定の周期毎にカウントアップまたはカウントダウンするカウンタを有してもよい。この場合、ステート制御部STCNTは、リフレッシュ要求発行通知RRQSの受信に応答してカウンタにカウント動作を開始させ、カウンタが所定の時間に対応する計数値を刻んだときにステートSTを”アイドル”に変更する。
図26は、図25に示すリフレッシュ要求保持部12Aの動作の一例を示す。図7および図24に示す動作と同一または同様の動作は、図7および図24と同じ符号を付し、詳細な説明は省略する。図26に示すフローは、図7に示すフローに対して、ステップS110、S112の間にステップS111が挿入され、ステップS116rがステップS115に置き換えられる。
リフレッシュ要求保持部14AのエントリENTは、リフレッシュ要求発行通知RRQSを受信した後、ステップS111において、タイマTMを起動し、処理をステップS112に移行する。
ステップS115において、エントリENTは、タイマTMが所定時間の計測を完了した場合、処理をステップS118に移行し、タイマTMが所定時間の計測を完了していない場合、処理をステップS112に戻す。
図27は、図23および図25に示すステート制御部STCNTのステートSTの遷移の一例を示す。図8と同様の遷移については、詳細な説明は省略する。図27においても、図8と同様に、下線を付した文字は、アクセス要求保持部10のステート制御部STCNTの動作を示し、括弧内の文字は、リフレッシュ要求保持部14のステート制御部STCNTの動作を示す。
図23および図25に示すステート制御部STCNTは、ステートSTが”発行済み”の期間に、タイマTMによる所定時間の計測の完了に基づいて、ステートSTを”アイドル”に遷移させる。その他の遷移は、図8と同様である。
図28は、図22に示すパイプライン制御部20Aの一例を示す。図10に示すパイプライン制御部20と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。パイプライン制御部20Aは、図10に示すパイプライン制御部20から要求完了通知生成部RQEGを削除している。パイプライン制御部20Aのその他の構成および機能は、図10に示すパイプライン制御部20と同様である。なお、図10に示すパイプライン制御部20の要求完了通知生成部RQEGが生成するアクセス要求完了通知ARQEは、図22に示すアクセス要求保持部10Aが生成する。
図29は、図22に示す要求発行リリース通知生成部22Aの一例を示す。図11に示す要求発行リリース通知生成部22と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
要求発行リリース通知生成部22Aの要求リリース通知生成部221は、アクセス要求保持部10Aの各エントリENTからのアクセス要求完了通知ARQEに基づいて、メモリアクセス要求リリース情報MRQRをCPUに出力する。要求発行リリース通知生成部22Aのその他の構成および機能は、図11に示す要求発行リリース通知生成部22と同様である。
図30は、図22に示すエラー検出部24Aの一例を示す。図12に示すエラー検出部24と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
エラー検出部24Aのリトライ制御部RTCNTは、リトライ制御要求RTRQ(プリチャージ要求)の出力から所定時間を計測するタイマTMを有する。リトライ制御部RTCNTは、タイマTMが所定時間の計測を完了したことに基づいてリトライ制御要求完了通知RTRQEを発生する。リトライ制御部RTCNTは、リトライ制御要求完了通知RTRQEの発生に基づいて、モード情報MDをリトライ前準備モードからリトライモードに遷移させる。エラー検出部24Aのその他の構成および機能は、リトライ制御要求完了通知RTRQEを受信しないことを除き、図12に示すエラー検出部24と同様である。リトライ制御部RTCNTによるモード情報MDの遷移は、図13と同一または同様である。
図22から図30に示す記憶制御装置MACaの動作は、図17から図20と同様である。すなわち、記憶制御装置MACaは、コマンドパリティエラー情報CAPEを受信した場合、ステートSTが”発行済み”のエントリENT(またはENTR)に保持されたメモリアクセス要求MRQ(またはリフレッシュ要求RRQ)をリトライの対象にする。記憶制御装置MACaは、リトライの対象のメモリアクセス要求MRQに対応するメモリアクセス要求リリース情報MRQRのCPUへの出力を抑止する。また、記憶制御装置MACaは、リトライの対象のメモリアクセス要求MRQ(またはリフレッシュ要求RRQ)をDIMMに再発行する前にプリチャージコマンドをDIMMに発行する。
以上、図22から図30に示す実施形態においても、図1から図21に示す実施形態と同様の効果を得ることができる。すなわち、記憶制御装置MACa、CPUおよびDIMMを含むシステムは、コマンドパリティエラー情報CAPEが発生した場合にも、動作を停止させることなく継続することができる。すなわち、システムの信頼性が低下することを抑止することができ、システムの性能の向上することができる。
さらに、図22から図30に示す実施形態では、パイプライン制御部20を経由することなく、アクセス要求完了通知ARQE、リフレッシュ要求完了通知RRQE、リトライ制御要求RTRQ、あるいは、これらに代わるタイミング信号を生成することができる。この結果、記憶制御装置MACa内の制御を、図2に示す記憶制御装置MAC内の制御に比べて簡易にすることができ、タイミング設計等を容易にすることができる。
なお、図2から図20に示す実施形態は、SRAM、強誘電体メモリ、MRAM(Magnetoresistive RAM)等の他の記憶装置のアクセスを制御する記憶制御装置に適用されてもよい。SRAMは、プリチャージコマンドを受けることなく、アクセス動作後にスタンバイ状態に戻る。このため、SRAMのアクセスを制御する記憶制御装置MAC、MACaのエラー検出部24、24Aは、モード情報MDとしてリトライ前準備モードを持たない。また、図2から図20に示す実施形態がSRAM、強誘電体メモリまたはMRAMに適用される場合、記憶制御装置MAC、MACaは、リフレッシュ制御部12およびリフレッシュ要求保持部14を持たない。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。