(57)【要約】【課題】  メモリコントローラがメモリにコマンドを再送する際、システム要件に応じてどのコマンド種別を優先して再送するか異なる。また、コマンド種別毎に再送コマンドバッファを持つと回路規模が増大する。【解決手段】  再送バッファに保持されたコマンドのうち、コマンド種別に基づいて優先するコマンドから順に再送し、優先度の高いコマンドを早くメモリに実行させる。また、システム要件に応じて特定コマンドを優先して再送し易いバッファを提供することで、回路規模の増大を抑制する。【選択図】  図１
2016110516.tif 000002
【特許請求の範囲】
【請求項１】
コマンドをチップセレクトに従ってメモリに送信する送信手段と、
前記送信手段が送信したコマンドを保持する保持手段と、
前記送信手段が送信したコマンドの前記メモリにおける受信において、エラーが発生したことを前記メモリから通知された場合、前記保持手段に保持されたコマンドのうちコマンド種別に基づいて優先するコマンドから順に再送する再送手段と、を備えることを特徴とするメモリコントローラ。
【請求項２】
前記再送手段は、前記送信手段が送信したコマンドの順とは異なり、ＲＤ及びＷＲコマンドを優先して再送することを特徴とする請求項１記載のメモリコントローラ。
【請求項３】
前記メモリは、前記送信手段が送信したコマンドの前記メモリにおける受信においてエラーを検出するとページクローズ状態となるメモリであることを特徴とする請求項１記載のメモリコントローラ。
【請求項４】
前記保持手段は、コマンド種別毎に独立したバッファを持つことを特徴とする請求項１または２記載のメモリコントローラ。
【請求項５】
前記保持手段には、Ｎ段のバッファであり、一方のコマンド種別は１段からＮ段に向かってコマンドを書き込み、他方のコマンド種別はＮ段から１段に向かってコマンドを書き込まれ、
前記再送手段は、前記保持手段の異なる方向から読み出された２つのコマンド種別のコマンドを優先するコマンドから順に再送することを特徴とする請求項１または２記載のメモリコントローラ。
【請求項６】
前記再送手段は、前記送信手段が送信したコマンドの順とは異なり、前記メモリがページクローズ状態において発行可能なコマンドを優先して再送することを特徴とする請求項３記載のメモリコントローラ。
【請求項７】
前記メモリがページクローズ状態において発行可能なコマンドは、リフレッシュ、ＺＱキャリブレーション、モードレジスタコマンドであることを特徴とする請求項６記載のメモリコントローラ。
【請求項８】
前記送信手段では、前記コマンドに対して生成した第１のチェックビットを前記コマンドに付加して送信し、前記第１のチェックビットと前記メモリが受信したコマンド又はアドレスに対して生成した第２のチェックビットとに基づいて、前記メモリにおいて判断されたエラーを通知されることを特徴とする請求項１乃至７何れか１項に記載のメモリコントローラ。
【請求項９】
コマンドをチップセレクトに従ってメモリに送信する送信工程と、
前記送信工程で送信したコマンドを保持手段に保持する工程と、
前記送信工程で送信したコマンドの前記メモリにおける受信において、エラーが発生したことを前記メモリから通知された場合、前記保持手段に保持されたコマンドのうちコマンド種別に基づいて優先するコマンドから順に再送する再送工程と、を備えることを特徴とするメモリコントローラの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラに関し、特に、メモリがコマンドを正しく受信できなかった際にコマンドを再送するメモリコントローラに関する。
【背景技術】
【０００２】
ＤＲＡＭはメモリコントローラからコマンド信号及びアドレス信号を受信し、コマンド信号及びアドレス信号をデコードすることで、コマンドの種類を判別し、ＤＲＡＭのメモリセルやモードレジスタなどにアクセスする。
【０００３】
近年、ＤＲＡＭの規格としてＤＤＲ４が提案されている。ＤＤＲ４におけるコマンドの送受信は、８００ＭＨｚから１．６ＧＨｚの高速なクロックに同期して行われる。そのため、コマンド信号及びアドレス信号が正しく受信されたかを検証するＣＡ（Ｃｏｍｍａｎｄ  Ａｄｄｒｅｓｓ）パリティと呼ばれる機能がサポートされている。ＤＲＡＭはＣＡパリティエラー（以下、単に「パリティエラー」、「エラー」とも記載する。）を検出すると、エラーが起きたことをメモリコントローラに通知し、全Ｂａｎｋをページクローズ状態にする。（非特許文献１参照）
【０００４】
ＣＡパリティエラーが起こる前の数サイクルは、コマンドが実行されたか分からず、ＣＡパリティエラーが起こった後の数サイクルは、コマンドが実行されない。メモリコントローラはエラー通知を受けると、ＣＡパリティエラーが起こる前後数サイクルで、メモリコントローラから送った、実行されなかった可能性のあるコマンドをメモリデバイスに再送する必要がある。そこで、コマンドを再送するために、メモリコントローラは発行したコマンドで再送対象となるコマンドを一定時間格納する再送コマンドバッファ（以下、「コマンド保持回路」または「再送バッファ」とも記載する。）を持つ必要がある。正常動作時のスループット低下をさけるために、再送コマンドバッファは上記一定時間内にメモリコントローラが１つのメモリデバイスに発行するコマンドを少なくとも格納できる容量を持つ必要がある。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】ＪＥＤＥＣ  ＳＴＡＮＤＡＲＤ  ＤＤＲ４  ＳＤＲＡＭ  ＪＥＳＤ７９−４仕様規格書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＣＡパリティエラー検出後、ＤＲＡＭは全Ｂａｎｋをページクローズ状態にするため、メモリコントローラはエラーが起こる前と同じ順番でコマンドの再送を行うと性能低下が発生する場合がある。例えばＤＲＡＭがＣＡパリティエラーを検出する前にメモリコントローラがＲＤ→ＰＲＥＡ→ＲＥＦの順番でコマンドを発行していたとする。ＣＡパリティエラーが起きた後、同じ順番でコマンドの再送を行うとＤＲＡＭは全Ｂａｎｋページクローズ状態なので、まずＡＣＴを発行してからＲＤ→ＰＲＥＡ（Ｐｒｅｃｈａｒｇｅ Ａｌｌ  Ｂａｎｋ）→ＲＥＦ（Ｒｅｆｅｒｓｈ）を実行することになる。しかし、ＤＲＡＭ性能の観点ではＲＥＦを最初に実行するとＲＥＦ→ＡＣＴ（Ｂａｎｋ Ａｃｔｉｖａｔｅ）→ＲＤの順番となり、より短い時間でコマンドの実行を完了することが可能である。つまりページクローズ状態に発行可能なコマンドを最初に発行し、後からリード、ライトのようなページオープン時に発行可能なコマンドを発行することが望ましい。
【０００７】
一方、メモリアクセスしたマスタ性能の観点ではリード、ライトが早く完了することが望ましい。例えばＤＲＡＭがＣＡパリティエラーを検出する前にメモリコントローラはＲＥＦ→ＡＣＴ→ＲＤの順番でコマンドを発行していたとする。この場合、エラーが起こった後に、メモリがＲＤを最初に実行できるように、メモリコントローラがＲＤを優先して発行し、メモリアクセスしたマスタへリードレスポンスをより早く返信することが望ましい。つまりＡＣＴ→ＲＤ→ＰＲＥＡ→ＲＥＦと順番を替えてメモリコントローラがコマンドを発行することが望ましい。この場合、メモリは、リード、ライトを最初に実行し、後からその他コマンドを実行する。
【０００８】
その他にもシステム要件に応じて、どのコマンド種別を優先して再送するか選択できることが望ましい。
【０００９】
更に、再送コマンドバッファのコマンド格納方法について、一般的に単一の再送コマンドバッファに全コマンドを発行した順番で格納することが考えられる。この場合、コマンドを再送する際に再送コマンドバッファに優先するコマンドが存在するか検索し、検索した結果に基づいて再送するコマンドを選択する必要があり、再送するコマンドを選択するための回路が複雑となる。コマンド種別毎に独立した再送コマンドバッファを持つ場合、各再送コマンドバッファに再送対象のコマンドを格納しているかという情報だけで再送するコマンドを選択することが可能となり再送するコマンドを選択するための回路は単純となる。しかし、メモリコントローラは一定時間内にメモリコントローラが発行するコマンドを全て格納できる再送コマンドバッファをコマンド種別の数だけ持つことになり、回路規模が増大してしまう問題がある。
【００１０】
本発明は上記の課題に鑑みてなされたものである。すなわち、メモリコントローラがメモリにコマンドを再送する際に、システム要件に応じて特定コマンドを優先して再送するメモリコントローラを提供することを目的とする。また、その方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明に係るメモリコントローラは以下の構成を備える。即ち、コマンドをチップセレクトに従ってメモリに送信する送信手段と、前記送信手段が送信したコマンドを保持する保持手段と、前記送信手段が送信したコマンドの前記メモリにおける受信において、エラーが発生したことを前記メモリから通知された場合、前記保持手段に保持されたコマンドのうちコマンド種別に基づいて優先するコマンドから順に再送する再送手段。
【発明の効果】
【００１２】
本発明によれば、メモリコントローラがメモリにコマンドを再送する際に、システム要件に応じて特定コマンドを優先して再送することで、優先度の高いコマンドを早くメモリに実行させることが容易になる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施形態におけるメモリコントローラの概略構成例
【図２】本発明の第１の実施形態における再送コマンド選択回路の概略構成例
【図３】本発明の第１の実施形態におけるメモリコントローラの動作波形例
【図４】本発明の第１の実施形態における再送コマンド選択回路の動作波形例
【図５】本発明の第２の実施形態におけるメモリコントローラの概略構成例
【図６】本発明の第２の実施形態におけるコマンドバッファ回路の概略構成例
【発明を実施するための形態】
【００１４】
［実施形態１］
図１は本実施形態のメモリコントローラ１００の概略構成である。メモリコントローラ１００は、メモリ９００に接続され、コマンド、アドレス、チップセレクト、パリティビットを送信する。パリティビットについては、パリティ生成回路２０２の説明において後述する。前記メモリ９００は、コマンド、アドレス、パリティビットからパリティチェックを行い、チェック結果を、一定時間後に通知する。
【００１５】
コマンド生成回路２０１は、発行するコマンド及びアドレス及びチップセレクトを生成し、前記メモリ９００に発行する。
【００１６】
パリティ生成回路２０２は、前記コマンド及びアドレスからパリティビットを生成し、前記メモリ９００に発行する。コマンドを示す信号線とアドレスを示す信号線があり、それらのビットのうちＨｉｇｈになっているビット数が奇数か偶数かで、メモリコントローラはパリティビットを作る。そして、パリティビットをコマンド、アドレスに付加して送る。パリティビットは、メモリデバイス側でチェックビットとして用いられる。メモリ９００は、受信したコマンド信号、アドレス信号のＨｉｇｈのビット数からパリティビットを作る。そして、メモリコントローラ１００から送られてきたパリティビットと比較するパリティチェックを行う。比較結果が異なれば、ＣＡパリティエラーである。ＣＡパリティエラーが発生したことを検出した場合は、メモリ９００は、メモリコントローラ１００へエラーを通知する。
【００１７】
状態管理回路２０３は、前記メモリ９００からチェック結果がエラーである通知を受けると、再送待機モードとなる。再送待機モードは、前記メモリ９００がコマンドを受信可能になるまでの所定の一定時間が経過すると再送モードとなる。再送モード中に前記メモリ９００からエラーである通知を受けると再送モードから再送待機モードになる。コマンド保持回路２０４に保持された再送対象コマンドが全て再送され、前記一定時間経過すると再送モードから通常モードになる。再送モードでは、再送コマンドを再送中である。
【００１８】
前記コマンド保持回路２０４は、前記コマンド及びアドレス及びチップセレクトが前記メモリ９００に発行された際に、前記コマンド及びアドレス及びチップセレクトを再送対象として保持する。保持してから前記一定時間経つまで前記状態管理回路２０３が通常モードもしくは再送モードを示し続けていれば、前記コマンド及びアドレス及びチップセレクトを破棄する。前記状態管理回路２０３が再送モードを示すならば、前記コマンド及びアドレス及びチップセレクトが前記メモリ９００に発行された際に、前記コマンド及びアドレス及びチップセレクトを破棄する。前記コマンド保持回路２０４は、第一のコマンド種別に属するコマンドのコマンド及びアドレス及びチップセレクトを第一コマンドバッファ回路４０１に保持する。また、第二のコマンド種別に属するコマンドのコマンド及びアドレス及びチップセレクトを第二コマンドバッファ回路４０２に保持する。
【００１９】
本実施形態では説明の容易化のために、第一のコマンド種別はページオープン状態で発行可能となるＲＤ、ＷＲコマンドとし、第二のコマンド種別はページクローズ状態で発行可能となるＲＤ、ＷＲ以外のその他コマンドとする。例えば、第２コマンド種別に属するコマンドとして、リフレッシュ、ＺＱキャリブレーション、モードレジスタコマンドが挙げられる。前記第一コマンドバッファ回路４０１に保持しているコマンド及びアドレス及びチップセレクトを第一再送コマンド、アドレス、チップセレクトとして出力する。同様に、前記第二コマンドバッファ回路４０２に保持しているコマンド及びアドレス及びチップセレクトを第二再送コマンド、アドレス、チップセレクトとして出力する。前記状態管理回路２０３が通常モードもしくは再送モードから再送待機モードに遷移した際に、前記第一コマンドバッファ回路４０１及び前記第二コマンドバッファ回路４０２に保持していたコマンドを再送対象コマンドとする。前記状態管理回路２０３が再送モードの際、前記第一コマンドバッファ回路４０１に保持している前記再送対象コマンドの有無を第一コマンドバッファ情報で出力する。同様に、前記第二コマンドバッファ回路４０２に保持している前記再送対象コマンドの有無を第二コマンドバッファ情報で出力する。なお、前記第一コマンドバッファ回路４０１、第二コマンドバッファ回路４０２はそれぞれ前記一定時間内に発行されるコマンド及びアドレス及びチップセレクト全てを格納できるものとする。
【００２０】
前記コマンド生成回路２０１は、通常モードにおいては、通常コマンド生成回路３０１によりコマンドを生成し、再送モードにおいては、再送コマンド生成回路３０２によりコマンドを生成する。
【００２１】
再送コマンド選択回路２０５は、前記コマンド保持回路２０４から出力されるコマンド種別毎の再送コマンド及びアドレス及びチップセレクトから一つを選択し、前記再送コマンド生成回路３０２に再送コマンド及びアドレス及びチップセレクトを出力する。さらに、前記コマンド保持回路２０４から出力されるコマンド種別毎のコマンドバッファ情報から、コマンド保持回路２０４のいずれかのコマンドバッファ回路に再送対象コマンドが存在すれば、前記再送コマンド生成回路３０２にコマンド生成要求を出力する。
【００２２】
なおメモリ９００のページがクローズ状態なので、ＤＲＡＭ性能を優先するなら、前記再送コマンド生成回路３０２は、ＡＣＴ、ＰＲＥ、ＰＲＥＡコマンドなど、メモリのページクローズ状態で発行可能なコマンドをまず、生成・発行する。そして次に、ＲＤ、ＷＲ、その他コマンドを発行するものとする。
【００２３】
図２は前記再送コマンド選択回路２０５の概略構成である。再送コマンド調停回路５０１は、入力されるコマンド種別毎の再送コマンド及びアドレス及びチップセレクトから一つを選択し、選択した再送コマンド及びアドレス及びチップセレクトを出力する。また、有効な再送コマンド、アドレス、チップセレクトを選択した場合はコマンド生成要求を出力する。本実施形態ではＲＤ、ＷＲコマンドに対応する第一再送コマンド、アドレス、チップセレクト、第一コマンドバッファ情報とＲＤ、ＷＲ以外のその他コマンドに対応する第二再送コマンドアドレス、チップセレクト、第二コマンドバッファ情報が入力される。ここで前記第一コマンドバッファ情報と前記第二コマンドバッファ情報は値がＬＯＷの時、再送対象コマンドを保持していることを示す。反対に、ＨＩＧＨの時、再送コマンドを保持していないことを示す。再送コマンド優先度設定回路５０２は、前記再送コマンド選択回路５０１に入力されるコマンド種別毎に優先度を設定し、優先度情報を前記再送コマンド選択回路５０１に出力する。本実施形態ではシステム要件がマスタ性能を優先することであるとし、第一のコマンド種別のコマンド、つまりＲＤ、ＷＲコマンドを優先するように設定されているものとする。前記再送コマンド選択回路５０１は前記優先度情報に基づいて、優先度の高いコマンド種別の再送コマンド、アドレス、チップセレクトが存在すれば、前記優先度の高いコマンド種別の再送コマンド、アドレス、チップセレクトを優先して選択して出力する。従って、前記再送コマンド選択回路５０１は第一コマンドバッファ情報の値がＬＯＷであれば、第一のコマンド種別の再送コマンド、アドレス、チップセレクトを優先して選択して出力する。
【００２４】
図３は本実施形態における前記メモリコントローラ１００の動作波形である。本動作波形図では、エラーは前記メモリ９００から通知される信号であり、ＬＯＷアクティブな信号とする。時刻Ｔ０からＴ７にかけて前記状態管理回路２０３が示すモードは通常モードであり、前記通常コマンド生成回路３０１でコマンド及びアドレス及びチップセレクトを生成する。時刻Ｔ１でＲＤ、ＷＲ以外のその他コマンドであるＣＭＤ−１を前記メモリ９００に発行し、時刻Ｔ２でＣＭＤ−２を発行している。さらに時刻Ｔ３で時刻Ｔ４に発行するＲＤに対するＡＣＴ、時刻Ｔ４でＲＤという順で発行している。時刻Ｔ５で時刻Ｔ６に発行するＷＲに対するＡＣＴ、時刻Ｔ６でＷＲという順で発行している。時刻Ｔ８で前記メモリ９００からエラーが通知され、前記状態管理回路２０３のモードは再送待機モードへ遷移する。時刻Ｔ１２で前記メモリ９００はエラー通知を解除しコマンドを受信できるようになり、前記状態管理回路２０３のモードは再送モードに遷移する。再送モードでは前記再送コマンド生成回路３０２でコマンド及びアドレス及びチップセレクトを生成する。ここでは時刻Ｔ１から時刻Ｔ６で発行した前記ＣＭＤ−１、ＣＭＤ−２、ＲＤ、ＷＲを再送対象とする。時刻Ｔ３に発行していたＡＣＴは、前記再送コマンド生成回路３０２でＲＤ、ＷＲコマンド発行時にメモリ９００のページオープン状態に応じて自動で生成発行されるため、再送対象とはしない。本実施形態ではＲＤ、ＷＲコマンドを優先するため、前記ＣＭＤ−１、ＣＭＤ−２よりも前記ＲＤ、ＷＲコマンドが優先して再送される。従って、時刻Ｔ１３で前記再送コマンド生成回路３０２は前記ＲＤの発行のためにページをオープンするＡＣＴを発行し、時刻Ｔ１４で再送対象である前記ＲＤを再送する。同様に時刻Ｔ１５で前記再送コマンド生成回路３０２は前記ＷＲコマンドを発行するためにページをオープンするＡＣＴを発行する。このＡＣＴは時刻Ｔ５で送っていたＡＣＴの再送ではなく、自動生成して発行したものである。時刻Ｔ１６で再送対象である前記ＷＲコマンドを再送する。時刻Ｔ１７で前記ＲＤ、ＷＲコマンド再送後に前記ＣＭＤ−１を再送するためにページをクローズするＰＲＥＡを発行し、時刻Ｔ１８でＣＭＤ−１を再送、時刻Ｔ１９でＣＭＤ−２を再送する。
【００２５】
図４は、本実施形態における前記再送コマンド選択回路２０５の動作波形である。ここでは図３におけるモードが再送待機モードから再送モードに遷移する時刻Ｔ１１以降の動作を説明する。つまり、時刻Ｔ１１から時刻Ｔ２０は図３と図４で同時刻を示している。前記再送コマンド優先度設定回路５０２は第一のコマンド種別のコマンドであるＲＤ、ＷＲを優先するように設定されているため、優先度情報は第一のコマンド種別（ＲＤ、ＷＲ）優先を示している。また前記第一コマンドバッファ回路４０１に再送対象コマンドとしてＲＤ、ＷＲが存在しており、前記第二コマンドバッファ回路４０２にはその他コマンドであるＣＭＤ−１、ＣＭＤ−２が存在している。
【００２６】
時刻Ｔ１２でモードが再送モードへと遷移する。時刻Ｔ１３で前記コマンド保持回路２０４は再送モードであることを受け、前記第一コマンドバッファ情報と前記第二コマンドバッファ情報を出力する。時刻Ｔ１３から時刻Ｔ１６にかけて前記第一コマンドバッファ情報はＬＯＷのため、第一のコマンド種別のコマンドであるＲＤ、ＷＲが前記第一コマンドバッファ回路４０１に存在していることを示している。前記再送コマンド調停回路５０１は第一再送コマンド、アドレス、チップセレクトを選択して再送コマンド、アドレス、チップセレクトとして出力し、コマンド生成要求を生成する。時刻Ｔ１３から時刻Ｔ１４ではＲＤが選択され再送コマンド、アドレス、チップセレクトとして出力される。同様に時刻Ｔ１５から時刻Ｔ１６ではＷＲが選択され再送コマンド、アドレス、チップセレクトとして出力される。時刻Ｔ１７で前記第一コマンドバッファ情報がＨＩＧＨになり前記第一のコマンド種別のコマンドがすべて再送されたことを示している。前記再送コマンド調停回路５０１は前記第一コマンドバッファ情報のＨＩＧＨを確認し、次に前記第二コマンドバッファ情報を確認する。前記第二コマンドバッファ情報がＬＯＷであることを確認し、第二再送コマンド、アドレス、チップセレクトを選択して再送コマンド、アドレス、チップセレクトとして出力し、コマンド生成要求を生成する。時刻Ｔ１７から時刻Ｔ１９にかけて第二再送コマンド、アドレス、チップセレクトが選択され出力される。時刻Ｔ１７から時刻Ｔ１８では第二再送コマンド、アドレス、チップセレクトから入力されるＣＭＤ−１が選択され再送コマンド、アドレス、チップセレクトとして出力される。時刻Ｔ１９でＣＭＤ−２が選択され再送コマンド、アドレス、チップセレクトとして出力される。時刻Ｔ２０で前記再送コマンド調停回路５０１は前記第一コマンドバッファ回路４０１も前記第二コマンドバッファ回路４０２も再送対象コマンドを保持していないことを確認し、コマンド生成要求をデアサートする。
【００２７】
本実施形態によれば、コマンドを再送する際に、第一コマンドバッファ回路４０１に保持した、優先度の高いＲＤ、ＷＲをＲＤ、ＷＲ以外のその他コマンドよりも早く再送する。よって、メモリアクセスしたマスタ性能の観点で性能低下を抑制することが可能となる。
【００２８】
一方、前記再送コマンド優先度設定回路５０２に第二のコマンド種別に属するＲＤ、ＷＲ以外のその他コマンドを優先するように設定してある場合は、ＲＤ、ＷＲよりも、第二コマンドバッファ回路４０２に保持した、その他コマンドを優先して再送する。ＲＤ、ＷＲ以外のその他コマンドはページクローズ状態に発行可能なコマンドであるため、ＤＲＡＭ性能の観点で性能低下を抑制することが可能となる。
【００２９】
その他にもシステム要件に応じて優先したいコマンド種別に属するコマンドを分けて保持し、そのコマンド種別を優先するように設定することで、システム要件に応じて優先したいコマンド種別に属するコマンドを優先して再送することが可能となる。
【００３０】
［実施形態２］
実施形態２は、実施形態１におけるコマンド保持回路２０４を異なる形態にしたものである。図５は実施形態２における本実施形態のメモリコントローラ６００の概略構成である。なお実施形態２におけるコマンド保持回路７００以外の回路は実施形態１と同じである。
【００３１】
前記コマンド保持回路７００は、コマンド及びアドレス及びチップセレクトが前記メモリ９００に発行された際に、再送用に、前記コマンド及びアドレス及びチップセレクトを保持する。保持してから前記一定時間経つまで前記状態管理回路２０３が通常モードもしくは再送モードを示し続けていれば、前記コマンド及びアドレス及びチップセレクトを破棄する。前記状態管理回路２０３が再送モードの時、前記コマンド及びアドレス及びチップセレクトが前記メモリ９００に発行された際に、前記コマンド及びアドレス及びチップセレクトを破棄する。前記コマンド保持回路７００は、コマンド及びアドレス及びチップセレクトを保持するコマンドバッファ回路８００を持つ。
【００３２】
前記コマンドバッファ回路８００は、第一のコマンド種別に属するコマンドのコマンド及びアドレス及びチップセレクト、第二のコマンド種別に属するコマンドのコマンド及びアドレス及びチップセレクトを保持する。第一のコマンド種別、第二のコマンド種別については、実施形態１と同じである。前記コマンドバッファ回路８００に保持された第一のコマンド種別に属するコマンドのコマンド及びアドレス及びチップセレクトを第一再送コマンド、アドレス、チップセレクトで出力する。同様に、前記コマンドバッファ回路８００に保持された第二のコマンド種別に属するコマンドのコマンド及びアドレス及びチップセレクトを第二再送コマンド、アドレス、チップセレクトで出力する。前記状態管理回路２０３が通常モードもしくは再送モードから再送待機モードに遷移した際に、前記コマンドバッファ回路８００に保持していたコマンドを再送対象コマンドとする。前記状態管理回路２０３が再送モードの際、前記コマンドバッファ回路８００に保持している第一のコマンド種別に属する再送対象コマンドの有無を第一コマンドバッファ情報で出力する。同様に、前記コマンドバッファ回路８００に保持している第二のコマンド種別に属する再送対象コマンドの有無を第二コマンドバッファ情報で出力する。
【００３３】
プッシュ生成回路７０１はコマンド及びアドレス及びチップセレクトが発行された際に、第一のコマンド種別に属するコマンドであれば第一のコマンド種別に属するコマンドを保持することを指示する信号である第一プッシュをアサートする。同様に第二のコマンド種別に属するコマンドであれば第二プッシュをアサートする。前記コマンドバッファ回路８００は前記第一プッシュアサート時、第一書き込みコマンド、アドレス、チップセレクトとして入力される前記コマンド及びアドレス及びチップセレクトを保持する。同様に前記第二プッシュアサート時、第二書き込みコマンド、アドレス、チップセレクトとして入力される前記コマンド及びアドレス及びチップセレクトを保持する。
【００３４】
ポップ生成回路７０２は上述した前記コマンド及びアドレス及びチップセレクトを前記コマンドバッファ回路８００から破棄する条件が整うと、コマンド種別に応じて第一ポップもしくは第二ポップをアサートする。前記コマンドバッファ回路８００は前記第一ポップアサート時、保持している第一のコマンド種別に属するコマンドのうち最初に保持したコマンド及びアドレス及びチップセレクトを破棄する。同様に前記第二ポップアサート時、保持している第二のコマンド種別に属するコマンドのうち最初に保持したコマンド及びアドレス及びチップセレクトを破棄する。
【００３５】
図６は前記コマンドバッファ回路８００の概略構成である。第一ポインタ制御回路８０１は、第一プッシュ、第一ポップに基づいて、第一書き込みコマンド、アドレス情報の書き込み位置を計算して第一ポインタとして出力する。第一プッシュがアサートされると＋１、第一ポップがアサートされるとー１、というように計算する。ここで前記第一ポインタ制御回路８０１から出力される第一ポインタの初期値は０である。同様に、第二ポインタ制御回路８０２は第二プッシュ、第二ポップに基づいて、第二書き込みコマンド、アドレスの書き込み位置を計算して第二ポインタとして出力する。
【００３６】
コマンドバッファ状態信号生成回路８０３は、前記第一ポインタと第二ポインタの値からバッファ８０５の格納状態を計算し第一エンプティ、フル、第二エンプティ、フルを出力する。第一ポインタが０ならば第一エンプティをアサートし、０でなければデアサートする。同様に第二ポインタが０ならば第二エンプティをアサートし、０でなければデアサートする。前記バッファ８０５の最大段数をＤＰＴ（Ｎ段としてもよい）とすると、第一ポインタと第二ポインタの合計値がＤＰＴならば第一フル、第二フルを共にアサートし、合計値がＤＰＴでなければデアサートする。
【００３７】
書き込み制御回路８０４は第一プッシュがアサートされると、バッファ８０５中の第一ポインタで示された位置に第一書き込みコマンド、アドレス、チップセレクトの値を書き込む。第二プッシュがアサートされると、データバッファ８０５中の第二ポインタで示された値をＤＰＴ−１から引いた位置に第二書き込みコマンド、アドレス、チップセレクトの値を書き込む。つまり、第一書き込みコマンド、アドレス、チップセレクトは前記バッファ８０５の０段目から順に＋１シフトしながら書き込まれる。第二書き込みコマンド、アドレス、チップセレクトは前記データバッファ８０５のＤＰＴ−１段から順に−１シフトしながら書き込まれる。第一ポップがアサートされると前記バッファ８０５中の第一ポインタで示された位置より小さい段に格納されたコマンド、アドレス、チップセレクトをそれぞれー１シフトした位置に書き込む。第二ポップがアサートされると前記バッファ８０５中の第二ポインタで示された位置より大きい段に格納されたコマンド、アドレス、チップセレクトをそれぞれ＋１シフトした位置に書き込む。第一書き込みコマンド、第二書き込みコマンドそれぞれが、バッファ８０５の一方と他方の異なる方向から書き込まれている。
【００３８】
前記バッファ８０５はコマンド及びアドレス及びチップセレクトを格納するバッファであり、第一再送コマンド、アドレス、チップセレクトに０段目に格納されているコマンド、アドレス、チップセレクトを出力する。第二再送コマンド、アドレス、チップセレクトにはＤＰＴ−１段目に格納されているコマンド、アドレス、チップセレクトを出力する。
【００３９】
前記コマンド保持回路７００は前記状態管理回路２０３が通常モードもしくは再送モードから再送待機モードに遷移した際に、第一ポインタ及び第二ポインタの値からコマンド種別毎の再送対象コマンド数を判断することが可能である。前記コマンド種別毎の再送対象コマンド数と同数回、対応したコマンド種別に属するコマンドが再送されると、前記再送対象コマンドが無くなったことを前記第一コマンドバッファ情報及び第二コマンドバッファ情報で出力する。
【００４０】
本実施形態のコマンド保持回路７００は、２つのコマンド種別を同一のバッファで保持しつつ、独立して管理することが可能となる。これにより、一定時間内にメモリコントローラが発行するコマンドを全て格納できる再送コマンドバッファをコマンド種別の数だけ持つ必要がなくなり、回路規模の増大を抑制することが可能となる。さらに、実施形態１と同様にシステム要件に応じて優先度の高いコマンド種別のコマンドを優先して再送することで、性能低下を抑制することが可能となる。
【００４１】
本実施形態では再送モードの際、再送対象コマンドがメモリ９００に再送されるとコマンド保持回路７００から前記再送対象コマンドを破棄するとした。さらにコマンドバッファ回路８００からは常に０段目及びＤＰＴ−１段目に格納されているコマンド、アドレス、チップセレクトを出力すると説明した。しかし、再送モードの際のコマンドを破棄するタイミングは上記に限定するものではない。再送対象コマンドが前記メモリ９００に再送された時刻ではコマンド保持回路から前記再送対象コマンドを破棄せず、再送後一定時間経つまで状態管理回路２０３が再送モードであったら破棄するとしてもよい。この場合再送モードの際は、再送対象コマンドが前記メモリ９００に発行されても前記コマンド保持回路にコマンド及びアドレス及びチップセレクトは保持しない。またコマンドバッファ回路からは全ての段に格納されているコマンド、アドレス、チップセレクトを前記コマンド保持回路に出力する。前記コマンド保持回路は再送対象コマンドが前記メモリ９００に再送される毎に次に再送すべきコマンドを選択し、第一再送コマンド、アドレス、チップセレクト及び第二再送コマンド、アドレス、チップセレクトとして出力する。上記動作のコマンド保持回路、コマンドバッファ回路でも本実施形態のメモリコントローラと同等の効果を実現することが可能である。
【００４２】
実施形態１及び２では、通常コマンド生成回路３０１と再送コマンド生成回路３０２をそれぞれ別の回路として説明したが、１つの回路で両方の機能を実現させても構わない。
【００４３】
実施形態１では、再送コマンド優先度設定回路５０２で第一のコマンド種別のコマンドを優先するとして説明したが、第一のコマンド種別のコマンドに限定するものではなく、他コマンド種別のコマンドを優先しても構わない。
【００４４】
実施形態１では、コマンド保持回路２０４は２つのコマンド種別毎にバッファを持ち、再送コマンド選択回路２０５は２つのコマンド種別から選択するとして説明したが、コマンドの種別は２つに限定するものではない。コマンド種別は３つ以上であっても構わない。
【００４５】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００４６】
１００  メモリコントローラ
２０１  コマンド生成回路
２０２  パリティ生成回路
２０３  状態管理回路
２０４  コマンド保持回路
２０５  再送コマンド選択回路
３０１  通常コマンド生成回路
３０２  再送コマンド生成回路
４０１  第一コマンドバッファ回路
４０２  第二コマンドバッファ回路
５０１  再送コマンド調停回路
５０２  再送コマンド優先度設定回路
６００  メモリコントローラ
７００  コマンド保持回路
７０１  プッシュ生成回路
７０２  ポップ生成回路
８００  コマンドバッファ回路
８０１  第一ポインタ制御回路
８０２  第二ポインタ制御回路
８０３  コマンドバッファ状態信号生成回路
８０４  書きこみ制御回路
８０５  バッファ
９００  メモリ
【図１】
2016110516.tif 000003
【図２】
2016110516.tif 000004
【図３】
2016110516.tif 000005
【図４】
2016110516.tif 000006
【図５】
2016110516.tif 000007
【図６】
2016110516.tif 000008