(57)【特許請求の範囲】
【請求項１】
アクセスサイクルの異なる複数のメモリデバイスにデータの読み書きを行うメモリコントローラにおいて、
前記複数のメモリデバイスに対するメモリアクセス要求を保持する保持手段と、
前記複数のメモリデバイス毎のレイテンシを示すレイテンシ情報を格納する第１レジスタと、
前記複数のメモリデバイス毎の配線遅延を示す配線遅延情報を格納する第２レジスタと、
前記保持手段に保持されたメモリアクセス要求をメモリデバイスに発行する際に、前記第１レジスタに格納しているレイテンシ情報と前記第２レジスタに格納している配線遅延情報とに基づいて、前記メモリアクセス要求を発行する順序を変更するように制御する制御手段とを有し、
前記制御手段は、前記保持手段に保持した先頭のメモリアクセス要求に対する配線遅延情報と、前記保持手段に保持した２番目のメモリアクセス要求に対する配線遅延情報とにより、前記先頭のメモリアクセス要求が前記２番目のメモリアクセス要求よりもアクセス待ち時間が多い場合、前記２番目のメモリアクセス要求を発行するように順番を変更することを特徴とするメモリコントローラ。
【請求項２】
複数のメモリデバイスに対するメモリアクセス要求を保持する保持手段と、前記複数のメモリデバイス毎のレイテンシを示すレイテンシ情報を格納する第１レジスタと、前記複数のメモリデバイス毎の配線遅延を示す配線遅延情報を格納する第２レジスタと、を備え、アクセスサイクルの異なる複数のメモリデバイスにデータの読み書きを行うメモリコントローラの制御方法であって、
前記保持手段に保持されたメモリアクセス要求をメモリデバイスに発行する際に、前記第１レジスタに格納しているレイテンシ情報と前記第２レジスタに格納している配線遅延情報とに基づいて、前記メモリアクセス要求を発行する順序を変更するように制御する制御工程を有し、
前記制御工程では、前記保持手段に保持した先頭のメモリアクセス要求に対する配線遅延情報と、前記保持手段に保持した２番目のメモリアクセス要求に対する配線遅延情報とにより、前記先頭のメモリアクセス要求が前記２番目のメモリアクセス要求よりもアクセス待ち時間が多い場合、前記２番目のメモリアクセス要求を発行するように順番を変更することを特徴とするメモリコントローラの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクセスサイクルの異なる複数のメモリデバイスにデータの読み書きを行うメモリコントローラ及びその制御方法に関する。
【背景技術】
【０００２】
図１は、従来のメモリシステムにおける構成の一例を示す図である。図１に示す１００はメモリコントローラを含むＡＳＩＣ（Application Specific Integrated Circuit）である。１０１はＡＳＩＣ１００に含まれるメモリコントローラである。１０２はＡＳＩＣ１００内でメモリコントローラ１０１と不図示の機能モジュールとを接続するチップ内部バスである。１０３はメモリコントローラ１０１と接続されるデバイスの条件を保存するレジスタである。
【０００３】
１０４はメモリコントローラ１０１に接続されるメモリデバイスへアクセスコマンドを発行するコマンド発行回路である。１０５はメモリコントローラ１０１に接続されるメモリデバイスとの間でデータの送受信を行うデータ発行／受信回路である。１０６〜１０９はメモリコントローラ１０１に接続されるメモリデバイスである。
【０００４】
次に、図１を用いて、従来のＡＳＩＣ１００内部のメモリコントローラ１０１の動作を説明する。まず、ＡＳＩＣ１００内の不図示の機能モジュールからメモリデバイス１０６〜１０９へのアクセス要求はチップ内部バス１０２を経由してメモリコントローラ１０１に伝えられる。一方、メモリコントローラ１０１は、受け取ったアクセス要求を解析し、該当する何れかのメモリデバイス１０６〜１０９に対して、要求されたアクセスを満たすためのコマンドをコマンド発行回路１０４にて生成する。そして、そのコマンドをチップ外部への接続信号（RAS、CAS、ADDR、CS0〜CS3）を用いて該当するメモリデバイスに発行し、データの送受信をデータ発行／受信回路１０５にて行う。
【０００５】
このときのチップ外部における信号の様子を図２に示す。図２では、RAS、CAS、ADDRは１つのコマンドに纏められている。また、メモリコントローラ１０１は、チップ内部バス１０２経由でメモリデバイス１０６〜１０９への読み出し要求を順番に受け取り、メモリデバイス１０６〜１０９に順に読み出しコマンドを発行する。
【０００６】
通常、メモリデバイス１０６〜１０９はバンクと呼ばれる複数の領域に分割され、各々の領域内の一部分をアクセス可能とし、それ以外の部分に対しては所定の手続きを行った後にアクセスが可能となる。この所定の手続きには、多くのクロックサイクルを必要とするが、各デバイスのバンク毎にアクセスできる部分は独立に設定できる。そこで、メモリコントローラ１０１内では要求されたコマンドを分析し、アクセスに際して所定の手続きが必要か否かを判断し、アクセスの順番を変更するといった操作が行われる場合が多い。これらの操作が行われている場合でも、図２に示すように、読み出しコマンドが連続し、該当するデバイスが異なれば、読み出しデータ（DQ及びDQS）が衝突しないように読み出しコマンドの発行タイミングを制御する必要がある。
【特許文献１】特開２００３−２７１４４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、昨今のメモリデバイスにおける動作周波数の向上に伴い、従来のメモリコントローラでは無視されていた基板上の配線遅延が無視できない状況となりつつある。この状況を図３及び図４を用いて説明する。
【０００８】
図３は、メモリコントローラとメモリデバイスとの関係を基板上のレイアウトイメージ的に書き直した図である。尚、図３に示す番号は、図１と同じものを用いている。図３に示すように、複数のメモリデバイス１０６〜１０９を接続した場合、各メモリデバイスのメモリコントローラ１０１からの距離はそれぞれ異なり、メモリデバイス１０６から順にメモリデバイス１０９まで徐々に遠くに置かれることとなる。
【０００９】
このような配置において、メモリコントローラ１０１が各メモリデバイスに読み出しを行った場合、各メモリデバイスとの距離の違いにより、読み出しデータの受け取りタイミングがメモリデバイスによって異なってくる。特に、クロック周期が短くなった場合には、クロックサイクルを超えたタイミングで読み出しデータがメモリコントローラ１０１に戻ってくる場合が考えられる。
【００１０】
図４は、メモリデバイスがメモリコントローラから遠くなるに従って読み出しデータが１サイクルずつ遅く取り込まれるレイアウトになった場合のメモリデバイス間の待ちサイクル数を示す図である。ここで、メモリデバイスが異なる場合には最大待ちサイクル数分の待ちサイクルを与えなければデータの衝突が起こるため、メモリコントローラ１０１のデータバス上の動作タイミングは図５に示すように効率の悪い状況となる。
【００１１】
本発明は、メモリデータバス上の効率を改善することを目的とする。
【課題を解決するための手段】
【００１２】
本発明は、アクセスサイクルの異なる複数のメモリデバイスにデータの読み書きを行うメモリコントローラにおいて、前記複数のメモリデバイスに対するメモリアクセス要求を保持する保持手段と、前記複数のメモリデバイス毎のレイテンシを示すレイテンシ情報を格納する第１レジスタと、前記複数のメモリデバイス毎の配線遅延を示す配線遅延情報を格納する第２レジスタと、前記保持手段に保持されたメモリアクセス要求をメモリデバイスに発行する際に、前記第１レジスタに格納しているレイテンシ情報と前記第２レジスタに格納している配線遅延情報とに基づいて、前記メモリアクセス要求を発行する順序を変更するように制御する制御手段とを有し、前記制御手段は、前記保持手段に保持した先頭のメモリアクセス要求に対する配線遅延情報と、前記保持手段に保持した２番目のメモリアクセス要求に対する配線遅延情報とにより、前記先頭のメモリアクセス要求が前記２番目のメモリアクセス要求よりもアクセス待ち時間が多い場合、前記２番目のメモリアクセス要求を発行するように順番を変更することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、複数のメモリデバイスとの間の配線遅延を示す情報と複数のメモリデバイスの各々のレイテンシ情報とに基づき、各メモリデバイスに対するメモリアクセス要求を発行する順序を変更するように制御することで、メモリデータバス上の効率を改善することが可能となる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
【００１６】
［第１の実施形態］
メモリコントローラがメモリデバイスへコマンドを発行する際に、デバイスレイテンシ情報と基板上の配線遅延情報に基づき、メモリデバイスへコマンドを発行する順序を制御する処理を、図６〜図９を用いて説明する。
【００１７】
まず、第１の実施形態におけるメモリコントローラの構成及び動作を、図６及び図７を用いて説明する。
【００１８】
図６は、第１の実施形態におけるメモリシステムの構成の一例を示す図である。図６に示す６００はメモリコントローラを含むＡＳＩＣである。６０１は第１の実施形態におけるメモリコントローラである。６０２はＡＳＩＣ６００内でメモリコントローラ６０１と不図示の機能モジュールとを接続するチップ内部バスである。不図示の機能モジュールとメモリコントローラの間のトランザクションはチップ内部バスを介して送受信される。
【００１９】
６０３はメモリコントローラ６０１と接続されるデバイスのレイテンシ条件を保持するレジスタである。６０４はメモリコントローラ６０１と接続されるデバイスの配線遅延情報を保持するレジスタである。
【００２０】
６０５はメモリコントローラ６０１に接続されるメモリデバイスへアクセスコマンドを発行するコマンド発行回路である。６０６はメモリコントローラ６０１に接続されるメモリデバイスとの間でデータの送受信を行うデータ発行／受信回路である。６０７〜６１０はメモリコントローラ６０１に接続されるメモリデバイスである。これ以降、メモリデバイスを単に「デバイス」と称す。
【００２１】
図７は、図６に示すコマンド発行回路６０５の構成の一例を示す図である。図７に示す７０１はバッファであり、チップ内部バス６０２から受け取ったメモリアクセスの要求を一時的に溜め込む。７０２は判断回路であり、バッファ７０１に溜められた複数の要求をデバイスに発行する際に、レイテンシ情報及び配線遅延情報に基づき、効率の良い順序に変更するように制御する。
【００２２】
まず、不図示の機能モジュールからチップ内部バス６０２を介してメモリアクセス要求がメモリコントローラ６０１へ伝達されると、その要求はコマンド発行回路６０５に伝えられる。これにより、コマンド発行回路６０５の内部では図７に示すように、伝えられたメモリアクセス要求は一旦バッファ７０１に蓄えられる。そして、判断回路７０２が、バッファ７０１が空でない場合に、バッファ７０１からその要求を取り出し、デバイスにコマンドとして発行し、かつ図６に示すデータ発行／受信回路６０６へ発行コマンドの情報を伝達する。
【００２３】
一方、データ発行／受信回路６０６は判断回路７０２から受け取った発行コマンド情報に基づき、デバイスへのデータの発行、メモリデバイスから受け取るデータのタイミング、チップ内部の受け取り機能モジュールの選択信号の生成を行う。
【００２４】
ここで、判断回路７０２が要求０を取り出した場合には、バッファ７０１は全ての要求を１つシフトする。つまり、現時点（シフト前）の要求１は判断回路７０２から要求０が取り出された場合には、新たに要求０の位置へと移動し、現時点での要求２は新たに要求１の位置へ移動する。また、判断回路７０２が要求１を取り出した場合には、要求０は変更無く、現時点での要求２は新たに要求１の位置へ移動する。
【００２５】
図８は、判断回路７０２で実行される判断処理を示すフローチャートである。図９は、バッファ７０１から取り出す要求を決定するときのタイミングを示す図である。尚、ここでは説明を簡単にするため、全ての要求は読み出し要求であるとし、各要求対象の領域は全てアクセス可能な状態になっているものとする。
【００２６】
また、要求は、要求０（デバイス６０７）→要求１（デバイス６１０）→要求２（デバイス６０８）→要求３（デバイス６０９）→要求４（デバイス６１０）の順番にバッファ７０１に格納されているものとする。そして、デバイス６０７への要求より先に発行したコマンドからは十分に間隔が取れているものとする。
【００２７】
まず、ステップＳ８０１で、判断回路７０２は、バッファ７０１内の要求が１つだけか否かを判定し、１つだけであればステップＳ８０５で、その要求のコマンド発行を行う。しかし、ステップＳ８０１で、前提のように、バッファ７０１内の要求が１つだけでなければステップＳ８０２で、先に発行したコマンドからの間隔が十分か否かを判断する。
【００２８】
ここでは、上述の前提からコマンド間隔が十分であるので、図９に示すｔ０でバッファ７０１内の先頭のコマンド発行（デバイス６０７への読み出し）を行う。また、バッファ７０１では、上述したシフトが全ての要求に対して行われる。このシフトにより、要求は、要求０（デバイス６１０）、要求１（デバイス６０８）、要求２（デバイス６０９）、要求３（デバイス６１０）の順番となる。
【００２９】
次に、バッファ７０１の内部が空でないことから、判断回路７０２は、次の要求の判断を開始する。そして、ステップＳ８０３で、判断回路７０２は、バッファ７０１の要求０（デバイス６１０）と要求１（デバイス６０８）のアクセス待ち時間を判定する。ここで、要求アクセス待ち時間は、レイテンシ情報を保持するレジスタ６０３と、配線遅延情報を保持するレジスタ６０４から得られるそれぞれのデバイス毎の読み出し要求発行後に、次のコマンド発行まで待たなければならない時間を示すものである。
【００３０】
いま、デバイスのレイテンシが全て同一であるとすると、要求アクセス待ち時間の差は配線遅延情報に依存する。このように、メモリコントローラ６０１は、アクセスサイクルの異なる複数のメモリデバイスにデータの読み書きを行う。しかし、デバイス間の必要待ち時間が図４に示したテーブルで与えられるとすると、要求０のデバイス６１０へのアクセスには３サイクルの待ち時間を必要とする。一方、要求１のデバイス６０８へのアクセスには待ち時間が１サイクルしか必要とされない。従って、先頭の要求アクセス待ち時間は２番目のアクセス待ち時間より多いため、判断回路７０２はステップＳ８０３で、Ｎｏと判定し、図９に示すｔ３でバッファ７０１内の２番目（要求１）のコマンド発行を行う。
【００３１】
また、バッファ７０１では、上述したシフトが全ての要求に対して行われる。その結果、要求は、要求０（デバイス６１０）はそのままで、要求２（デバイス６０９）が新たに要求１の位置に移動され、要求３（デバイス６１０）が新たに要求２の位置に移動される。
【００３２】
次に、バッファ７０１の内部が空でないことから、判断回路７０２は、次の要求の判断を開始する。そして、ステップＳ８０３で、判断回路７０２は、バッファ７０１の要求０（デバイス６１０）と要求１（デバイス６０９）のアクセス待ち時間を判定する。上述の結果と同様に、判断回路７０２は、Ｎｏと判定し、図９に示すｔ６でバッファ７０１内の２番目（要求１）のコマンド発行を行う。
【００３３】
また、バッファ７０１では、上述したシフトが全ての要求に対して行われる。その結果、要求は、要求０（デバイス６１０）はそのままで、要求２（デバイス６１０）が新たに要求１の位置に移動される。
【００３４】
次に、バッファ７０１の内部が空でないことから、判断回路７０２は、次の要求の判断を開始する。そして、ステップＳ８０３で、判断回路７０２は、バッファ７０１の要求０（デバイス６１０）と要求１（デバイス６１０）のアクセス待ち時間を判定する。ここで、アクセス対象が同一のデバイスであるため、判断回路７０２は、Ｙｅｓと判定し、図９に示すｔ９でバッファ７０１内の先頭の要求を実行する。
【００３５】
また、バッファ７０１では、上述したシフトが全ての要求に対して行われ、その結果、要求は、要求１（デバイス６１０）が新たに要求０の位置に移動される。
【００３６】
次に、バッファ７０１の内部が空でないことから、判断回路７０２は、次の要求の判断を開始する。この場合、バッファ７０１の内部の要求は要求０にあるデバイス６１０への要求のみであるので、判断回路７０２は、ステップＳ８０１でＹｅｓと判断し、ステップＳ８０５で、図９に示すｔ１１でバッファ７０１の先頭の要求を実行する。この際、直前のコマンド発行対象デバイスと今回のコマンド発行対象デバイスが同一であることから、メモリデータバス上の空きサイクル無しとなるようにコマンドが発行されることは従来と同様である。
【００３７】
以上、基板における配線遅延情報に基づく動作について説明を行ってきたが、本発明は接続される各メモリデバイスに読み出しレイテンシが異なるデバイスを接続した場合にも上記説明と同様な効果を有する。その場合、上述した配線遅延情報をメモリデバイス間のレイテンシの差分情報と読み替えれば良い。
【００３８】
［第２の実施形態］
次に、図面を参照しながら本発明に係る第２の実施形態を詳細に説明する。第１の実施形態では、各メモリデバイスの配線遅延情報をメモリコントローラ内の保持手段にて保持していた。しかし、各メモリデバイスの配線遅延情報をメモリコントローラ外部から端子にて供給するように構成しても良い。
【００３９】
図１０は、第２の実施形態におけるメモリシステムの構成の一例を示す図である。尚、図１０に示す１０００〜１０１０は、第１の実施形態の図６に示す６００〜６１０に相当するものである。しかし、第１の実施形態では、各メモリデバイスの配線遅延情報を図６に示すレジスタ６０４に保持していたが、第２の実施形態では、外部から供給されるように外部端子を備えるものである。
【００４０】
また、上述した各メモリデバイスの配線遅延情報を各メモリデバイスの読み出しレイテンシの差分情報に変えた場合にも第１の実施形態と同様な効果を得ることができる。
【００４１】
［第３の実施形態］
次に、図面を参照しながら本発明に係る第３の実施形態を詳細に説明する。第１の実施形態では、各メモリデバイスの共通なレイテンシ情報と、個別のデバイスの配線遅延情報とをそれぞれレジスタに保持する構成としていた。しかし、第２の実施形態では、共通なレイテンシ情報を含めた個別のデバイス毎の遅延情報を格納する格納手段を備えるものである。
【００４２】
図１１は、第３の実施形態におけるメモリシステムの構成の一例を示す図である。尚、図１１に示す１０００〜１００２、１００５〜１０１０は、第１の実施形態の図６に示す６００〜６０２、６０５〜６１０に相当するものである。
【００４３】
図１１に示す１１１１〜１１１４は、デバイスのレイテンシ情報とデバイスの配線遅延情報とをそれぞれ保持するレジスタである。
【００４４】
第３の実施形態によれば、第１の実施形態と同様な効果を得ることができる。
【００４５】
尚、本発明は複数の機器（例えば、ホストコンピュータ，インターフェース機器，リーダ，プリンタなど）から構成されるシステムに適用しても、１つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用しても良い。
【００４６】
また、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ若しくはＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行する。これによっても、本発明の目的が達成されることは言うまでもない。
【００４７】
この場合、コンピュータ読み取り可能な記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【００４８】
このプログラムコードを供給するための記録媒体として、例えばフレキシブルディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【００４９】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、次の場合も含まれることは言うまでもない。即ち、プログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合である。
【００５０】
更に、記録媒体から読出されたプログラムコードがコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００５１】
【図１】従来のメモリシステムにおける構成の一例を示す図である。
【図２】チップ外部における信号の様子を示す図である。
【図３】メモリコントローラとメモリデバイスとの関係を基板上のレイアウトイメージ的に書き直した図である。
【図４】メモリデバイスがメモリコントローラから遠くなるに従って読み出しデータが１サイクルずつ遅く取り込まれるレイアウトになった場合のメモリデバイス間の待ちサイクル数を示す図である。
【図５】メモリコントローラ１０１のデータバス上の動作タイミングを示す図である。
【図６】第１の実施形態におけるメモリシステムの構成の一例を示す図である。
【図７】図６に示すコマンド発行回路６０５の構成の一例を示す図である。
【図８】判断回路７０２で実行される判断処理を示すフローチャートである。
【図９】バッファ７０１から取り出す要求を決定するときのタイミングを示す図である。
【図１０】第２の実施形態におけるメモリシステムの構成の一例を示す図である。
【図１１】第３の実施形態におけるメモリシステムの構成の一例を示す図である。
【符号の説明】
【００５２】
６００  メモリコントローラを含むＡＳＩＣ
６０１  メモリコントローラ
６０２  チップ内部バス
６０３  デバイスのレイテンシ条件を保持するレジスタ
６０４  デバイスの配線遅延情報を保持するレジスタ
６０５  コマンド発行回路
６０６  データ発行／受信回路
６０７  メモリデバイス（Ｄｅｖ  ０）
６０８  メモリデバイス（Ｄｅｖ  １）
６０９  メモリデバイス（Ｄｅｖ  ２）
６１０  メモリデバイス（Ｄｅｖ  ３）
７０１  バッファ
７０２  判断回路
【図１】
0005349775.tif 000002
【図２】
0005349775.tif 000003
【図３】
0005349775.tif 000004
【図４】
0005349775.tif 000005
【図５】
0005349775.tif 000006
【図６】
0005349775.tif 000007
【図７】
0005349775.tif 000008
【図８】
0005349775.tif 000009
【図９】
0005349775.tif 000010
【図１０】
0005349775.tif 000011
【図１１】
0005349775.tif 000012