(57)【特許請求の範囲】
【請求項１】
複数のチャネルを備えたバーチャルチャネルメモリを制御するメモリ制御回路であって、
複数のメモリマスタにそれぞれ割り当てられ、かつ各前記チャネルに１対１対応し、前記チャネルを識別するチャネル番号および前記バーチャルチャネルメモリに対するアクセスに際したメモリアドレスを保持する複数の格納領域を備えるチャネル情報格納部と、
前記メモリマスタがアイドル状態になったことを検知してカウントアップし、前記メモリマスタからのアクセスが発生したらそのカウンタ値をクリアして、前記メモリマスタが長期間アクセスをしなかったことを判断するための情報を提供する前記メモリマスタ毎のアイドルカウンタと、
前記メモリマスタのアクセスが発生したらカウントアップし、前記アイドルカウンタが設定値までカウントアップしたら前記アイドルカウンタのカウンタ値をクリアして、前記メモリマスタのアクセス頻度を判断するための情報を提供する前記メモリマスタ毎のアクセスカウンタと、
前記アイドルカウンタが設定値までカウントアップしたら、対応する前記メモリマスタの名称をエントリし、各前記メモリマスタに割り当てられた前記格納領域を各メモリマスタ間で移動する必要性が生じたときに優先的に移動するための情報を提供する移動チャネルエントリ部と、
を有することを特徴とするメモリ制御回路。
【請求項２】
各前記メモリマスタに割り当てられた前記格納領域を各メモリマスタ間で移動する必要性が生じたときに、前記アクセスカウンタのカウンタ値および前記移動チャネルエントリ部からの情報に基づいて、各前記メモリマスタへの前記格納領域の割り当てを更新する移動チャネル制御部を有することを特徴とする請求項１記載のメモリ制御回路。
【請求項３】
複数のチャネルを備えたバーチャルチャネルメモリを制御するメモリ制御回路であって、
複数のメモリマスタにそれぞれ割り当てられ、かつ各前記チャネルに１対１対応し、前記バーチャルチャネルメモリに対するアクセスに際したメモリアドレスを保持する複数の格納領域を備えるチャネル情報格納部と、
前記バーチャルチャネルメモリへのアクセスに際し前記格納領域に対応した前記チャネルを識別するチャネル番号を作成する手段と、
前記メモリマスタがアイドル状態になったことを検知してカウントアップし、前記メモリマスタからのアクセスが発生したらそのカウンタ値をクリアして、前記メモリマスタが長期間アクセスをしなかったことを判断するための情報を提供する前記メモリマスタ毎のアイドルカウンタと、
前記メモリマスタのアクセスが発生したらカウントアップし、前記アイドルカウンタが設定値までカウントアップしたら前記アイドルカウンタのカウンタ値をクリアして、前記メモリマスタのアクセス頻度を判断するための情報を提供する前記メモリマスタ毎のアクセスカウンタと、
前記アイドルカウンタが設定値までカウントアップしたら、対応する前記メモリマスタの名称をエントリし、各前記メモリマスタに割り当てられた前記格納領域を各メモリマスタ間で移動する必要性が生じたときに優先的に移動するための情報を提供する移動チャネルエントリ部と、
を有することを特徴とするメモリ制御回路。
【請求項４】
各前記メモリマスタに割り当てられた前記格納領域を各メモリマスタ間で移動する必要性が生じたときに、前記アクセスカウンタのカウンタ値および前記移動チャネルエントリ部からの情報に基づいて、各前記メモリマスタへの前記格納領域の割り当てを更新する移動チャネル制御部を有することを特徴とする請求項３記載のメモリ制御回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メモリ制御回路に関し、特に、リースト・リースントリー・ユースト（以降ＬＲＵと記す）による制御方法を用いてバーチャルチャネルメモリ（以降、ＶＣＭと記す箇所もある）を制御するメモリ制御回路に関する。
【０００２】
【従来の技術】
従来のバーチャルチャネルメモリについて図面を参照して説明する。
図７は、バーチャルチャネルメモリの概念図である。
図８は、ＶＣＭを用いた従来の代表的なメモリシステムのブロック図である。
図７を参照すると、ＶＣＭ６０はそのメモリ内部に複数のチャネル５０（レジスタで構成される）およびメモリセル５１を備えている。メモリセル５１は、複数のセグメントから成る。それぞれのチャネル５０は、メモリセル５１の全てのセグメントと接続され、アクセス単位である全てのセグメントにアクセス可能である。チャネル５０には、個々を識別するためのチャネル番号が割り当てられる。また、図８を参照すると、メモリシステムは、ＶＣＭ６０と、メモリ制御回路６２と、メモリマスタ６７と、メモリマスタ７０と、メモリマスタ７３とから構成される。メモリマスタ６７〜メモリマスタ７３は、たとえば、ジョブを実行するプロセッサである。
【０００３】
メモリ制御回路６２は、チャネル５０に対してリード／ライト動作をする（フォアグランド処理）。メモリセル５１とチャネル５０との間のデータ転送や、メモリセル５１のプリチャージ、リフレッシュなどの内部動作はフォアグランド処理とは独立に行われる（バックグランド処理）。ＶＣＭ６０はこのフォアグランド処理とバックグランド処理とが独立に行うことにより、高い平均データ転送速度を可能にしている。
【０００４】
ＶＣＭ６０のチャネル５１とモリ制御回路６２とは専用のメモリバス６１で接続されている。メモリ制御回路６２は、メモリバス６１を制御するメモリインタフェース制御部６３と、各メモリマスタ６７、メモリマスタ７０、メモリマスタ７３のアクセス要求を調停するアービタ部６４と、ＶＣＭ６０の各チャネル５０の情報を格納するチャネル情報格納部６５、チャネル情報格納部６８、チャネル情報格納部７１と、チャネル情報格納部６５、チャネル情報格納部６８、チャネル情報格納部７１をそれぞれＬＲＵ制御するＬＲＵ制御部６６、ＬＲＵ制御部６９、ＬＲＵ制御部７２とを有する。
【０００５】
チャネル情報格納部６５、チャネル情報格納部６８、チャネル情報格納部７１およびＬＲＵ制御部６６、ＬＲＵ制御部６９、ＬＲＵ制御部７２は、ＶＣＭ６０の特徴を生かすために、それぞれメモリマスタ６７、メモリマスタ７０、メモリマスタ７３に対応して設けられており、メモリマスタ６７〜メモリマスタ７３によるマルチタスク処理に対して各メモリマスタ６７〜メモリマスタ７３毎に割り当てるチャネル５０の数を適宜変えて、各メモリマスタ６７〜メモリマスタ７３からのアクセスの待ち時間を短縮する。ここでは、例として、メモリマスタ６７には３つ、メモリマスタ７０には２つ、メモリマスタ７３には４つのチャネル５０が割り当てられたとする。ここで、チャネル５０は重複しては、割り当てられない。
【０００６】
以下に、上記のように構成されたメモリ制御回路６２の動作について説明する。たとえば、まず、メモリマスタ６７からサイクル要求（ＶＣＭ６０への要求）が発生する。このとき、メモリマスタ６７からのサイクル要求信号がアービタ部６４に入力され、当該サイクル要求が許可されたら、メモリアドレス（バンク、ロウ、セグメント、カラム）およびチャネル番号が、チャネル情報としてチャネル情報格納部６５のチャネル番号に対応する位置に格納される。
【０００７】
ＬＲＵ制御部６６は、メモリアドレスが格納されたチャネル（格納領域）をＬＲＵ制御の最下位にし、他の２つのチャネル（格納領域）をそれぞれ上位にする。メモリインタフェース制御部６３は、アクセス要求されたメモリアドレスによりメモリバス６１上にサイクルを発生させる。複数のメモリマスタからサイクル要求が同時に発生した場合は、アービタ部６４で決められた優先順位にしたがってアクセス順位が決まる。
【０００８】
アクセス要求されたサイクルのメモリアドレスが、すでに対応するチャネル情報格納部６５〜チャネル情報格納部７１に格納されているメモリアドレスと一致すれば、そのサイクルはヒットサイクルとして処理される。この際、アドレスが一致したチャネル情報格納部６５、チャネル情報格納部６８、チャネル情報格納部７１の格納領域がＬＲＵ制御の最下位でなければ最下位に移動し、他の格納領域はそれぞれ上位にシフトする。
【０００９】
アクセス要求されたサイクルのメモリアドレスが、すでに対応するチャネル情報格納部６５〜チャネル情報格納部７１に格納されているメモリアドレスのいずれとも一致せず、しかも対応するチャネル情報格納部６５〜チャネル情報格納部７１のすべてに他のアドレス情報が格納されている場合は、そのサイクルはチャネルミスとして処理される。この際、ＬＲＵ制御の最上位のチャネル（格納領域）がアクセス要求のメモリマスタに対応するものになり、ＬＲＵ制御の最下位に移動する。
【００１０】
ただし、メモリマスタ６７〜メモリマスタ７３の種類が異なるシステムでは、メモリアクセス頻度も異なるため、チャネル５０を効率よく使用するためにはそれぞれのシステムに合わせて各メモリマスタ６７〜メモリマスタ７３に割り当てるチャネル数を適切に設定する必要がある。
【００１１】
図９は、リードサイクルにおいてチャネルヒットした場合とチャネルミスした場合のタイムチャートである。
【００１２】
ここでＰＲＥはプリチャージコマンド（バンクアドレスを送出）、ＡＣＴはアクチベイトコマンド（バンク、ロウアドレスを送出）、ＰＦＣはプリフェッチコマンド（セグメントアドレス、チャネル番号を送出）、ＲＥＡＤはリードコマンド（チャネル番号、カラムアドレスを送出）をそれぞれ示している。チャネルミスの場合、つまり読み出そうとする有効データがチャネル５０に保持されていない場合は、メモリセル５１で活性化されているバンクをプリチャージコマンドにより非活性化した後、改めて有効データが格納されているロウアドレスをアクチベイトコマンドにより活性化、プリフェッチコマンドによりメモリセル５１からデータをチャネル５０にコピー、リードコマンドによりチャネル５０からデータをリードという手順をとる必要がある。これに対して、ヒットサイクルの場合、つまりチャネル５０に読み出そうとするデータがある場合は、リードコマンドのみでサイクルが終了する。図９を見るとわかるように、明らかにチャネルミスの場合はチャネルヒットよりもサイクルに要する時間が長い。
【００１３】
また、「特開平７−２２１７９７号公報」記載の発明は、データ発生頻度は高いがデータを発生するチャネルの数が１チャネルである情報発生源を持つ情報処理システムと、データ発生頻度は低いがデータを発生するチャネルの数が複数チャネルである情報発生源を持つ情報処理システムとに共通して用いることができ、しかもメモリ使用効率が高いＦＩＦＯメモリ制御方式を提供するものである。
【００１４】
【発明が解決しようとする課題】
上述した従来の技術の問題点は以下に示す。
各メモリマスタ６７〜モリマスタ７３に割り当てるチャネル数をコンフィグレーションレジスタ等の設定レジスタによって決定し、一度割り当てられたチャネル数はシステムを再起動させない限り変更することはできない。このため、各メモリマスタ６７〜メモリマスタ７３のメモリアクセス頻度を事前にもしくは自動的に理解して、各メモリマスタ６７〜メモリマスタ７３に割り当てるチャネル数を適切に調整することは非常に困難である。
【００１５】
たとえば、図８においてメモリマスタ７０のメモリアクセス頻度が非常に高く、メモリマスタ７３のメモリアクセス頻度が非常に低いとする。しかし、メモリアクセス頻度とは逆に、メモリマスタ７０に割り当てられたチャネル数は“２”と少なく、メモリマスタ７３に割り当てられたチャネル数は“４”と多い。割り当てられたチャネル数が少ないということは、それだけメモリバス６１を占有するチャネルミスが発生しやすいことになり、メモリアクセス頻度が高ければチャネルミスが発生する確率はさらに高まり、結果としてシステムとしての性能が低下する。
【００１６】
また、「特開平７−２２１７９７号公報」記載の発明は、ＦＩＦＯの分割の設定の組み合わせを変更するのみであり、変更の種類が限られているという欠点がある。
【００１７】
本発明の目的は、ＶＣＭを使用してＬＲＵによる制御方法を用いるシステムにおいて、アクセス頻度を考慮しながら制御するチャネルを各メモリマスタ間で移動することで、自動的にシステムに適したチャネル数を各メモリマスタに割り当て、ＶＣＭの持つチャネルの使用効率を高め、メモリアクセス性能を向上させることである。
【００１８】
【課題を解決するための手段】
本発明の第１のメモリ制御回路は、複数のチャネルを備えたバーチャルチャネルメモリを制御するメモリ制御回路であって、
複数のメモリマスタにそれぞれ割り当てられ、かつ各前記チャネルに１対１対応し、前記チャネルを識別するチャネル番号および前記バーチャルチャネルメモリに対するアクセスに際したメモリアドレスを保持する複数の格納領域を備えるチャネル情報格納部と、
前記メモリマスタがアイドル状態になったことを検知してカウントアップし、前記メモリマスタからのアクセスが発生したらそのカウンタ値をクリアして、前記メモリマスタが長期間アクセスをしなかったことを判断するための情報を提供する前記メモリマスタ毎のアイドルカウンタと、
前記メモリマスタのアクセスが発生したらカウントアップし、前記アイドルカウンタが設定値までカウントアップしたら前記アイドルカウンタのカウンタ値をクリアして、前記メモリマスタのアクセス頻度を判断するための情報を提供する前記メモリマスタ毎のアクセスカウンタと、
前記アイドルカウンタが設定値までカウントアップしたら、対応する前記メモリマスタの名称をエントリし、各前記メモリマスタに割り当てられた前記格納領域を各メモリマスタ間で移動する必要性が生じたときに優先的に移動するための情報を提供する移動チャネルエントリ部と、
を有する。
【００１９】
本発明の第２のメモリ制御回路は、前記第１のメモリ制御回路であって、各前記メモリマスタに割り当てられた前記格納領域を各メモリマスタ間で移動する必要性が生じたときに、前記アクセスカウンタのカウンタ値および前記移動チャネルエントリ部からの情報に基づいて、各前記メモリマスタへの前記格納領域の割り当てを更新する移動チャネル制御部を有する。
【００２０】
本発明の第３のメモリ制御回路は、
複数のチャネルを備えたバーチャルチャネルメモリを制御するメモリ制御回路であって、
複数のメモリマスタにそれぞれ割り当てられ、かつ各前記チャネルに１対１対応し、前記バーチャルチャネルメモリに対するアクセスに際したメモリアドレスを保持する複数の格納領域を備えるチャネル情報格納部と、
前記バーチャルチャネルメモリへのアクセスに際し前記格納領域に対応した前記チャネルを識別するチャネル番号を作成する手段と、
前記メモリマスタがアイドル状態になったことを検知してカウントアップし、前記メモリマスタからのアクセスが発生したらそのカウンタ値をクリアして、前記メモリマスタが長期間アクセスをしなかったことを判断するための情報を提供する前記メモリマスタ毎のアイドルカウンタと、
前記メモリマスタのアクセスが発生したらカウントアップし、前記アイドルカウンタが設定値までカウントアップしたら前記アイドルカウンタのカウンタ値をクリアして、前記メモリマスタのアクセス頻度を判断するための情報を提供する前記メモリマスタ毎のアクセスカウンタと、
前記アイドルカウンタが設定値までカウントアップしたら、対応する前記メモリマスタの名称をエントリし、各前記メモリマスタに割り当てられた前記格納領域を各メモリマスタ間で移動する必要性が生じたときに優先的に移動するための情報を提供する移動チャネルエントリ部と、
を有する。
【００２１】
本発明の第４のメモリ制御回路は、前記第３のメモリ制御回路であって、各前記メモリマスタに割り当てられた前記格納領域を各メモリマスタ間で移動する必要性が生じたときに、前記アクセスカウンタのカウンタ値および前記移動チャネルエントリ部からの情報に基づいて、各前記メモリマスタへの前記格納領域の割り当てを更新する移動チャネル制御部を有する。
【００２８】
【発明の実施の形態】
次に、本発明の第１実施の形態について図面を参照して詳細に説明する。
図１は、本発明の第１の実施の形態を示すブロック図である。
図１を参照すると、本発明の第１の実施の形態は、アクセス要求（ＶＣＭ２９への要求）を発生する複数のメモリマスタ１０、メモリマスタ１１、メモリマスタ１２と、バーチャルチャネルメモリであるＶＣＭ２９と、メモリ制御回路９０と、ＶＣＭ２９およびメモリ制御回路９０を接続するメモリバス８０とから構成される。
【００２９】
メモリ制御回路９０は、メモリマスタ１０〜メモリマスタ１２が発生するサイクルのバンクアドレス、ロウアドレス、カラムアドレス、セグメントアドレス、およびチャネル番号（これらを総称してチャネル情報と記す）を格納するチャネル情報格納部１３と、チャネル情報をＬＲＵ制御するメモリマスタ１０に対応するＬＲＵ制御部１６、メモリマスタ１１に対応するＬＲＵ制御部１７、およびメモリマスタ１２に対応するＬＲＵ制御部１８とを含む。
【００３０】
また、メモリ制御回路９０は、メモリマスタ１０がアイドル状態になったときに制御クロック（図示せず）によりカウントアップし、メモリマスタ１０からアクセスがあるとそのカウンタ値をクリアするアイドルカウンタ１９、メモリマスタ１１がアイドル状態になったときに制御クロックによりカウントアップし、メモリマスタ１１からアクセスがあるとそのカウンタ値をクリアするアイドルカウンタ２０、およびメモリマスタ１２がアイドル状態になったときに制御クロックによりカウントアップし、メモリマスタ１２からアクセスがあるとそのカウンタ値をクリアするアイドルカウンタ２１とを含む。
【００３１】
また、メモリ制御回路９０は、メモリマスタ１０がアクセス要求を発生させたときカウントアップし、アイドルカウンタ１９が設定値（適宜定めた値）までカウントアップしたらアイドルカウンタ１９をクリアするアクセスカウンタ２２と、メモリマスタ１１がアクセス要求を発生させたときカウントアップし、アイドルカウンタ２０が設定値までカウントアップしたらアイドルカウンタ２０をクリアするアクセスカウンタ２３と、メモリマスタ１２アクセス要求を発生させたときカウントアップし、アイドルカウンタ２１が設定値までカウントアップしたらアイドルカウンタ２１をクリアするアクセスカウンタ２２とを含む。
【００３２】
また、メモリ制御回路９０は、アイドルカウンタ１９〜アイドルカウンタ２１が設定値までカウントアップしたときに、それぞれ、メモリマスタ１０〜メモリマスタ１２の名称および設定値に到達した順番を格納する移動チャネルエントリ部２５と、アクセスカウンタ２２〜アクセスカウンタ２４および移動チャネルエントリ部２５のそれぞれの情報に基づいて、チャネルミス（メモリマスタ１０〜メモリマスタ１２からのアクセス要求のメモリアドレスと、チャネル情報格納部１３内の対応する位置のメモリとで一致するものが存在しなかった場合）の発生によりチャネル５０のメモリマスタ１０〜メモリマスタ１２への割り当ての変更を制御する移動チャネル制御部２６と、メモリマスタ１０〜メモリマスタ１２からのアクセス要求を調停するアービタ部２７と、アービタ部２７の結果およびチャネル情報格納部１３内のチャネル情報のアドレスにしたがってメモリバス８０上のサイクルを発生するメモリインタフェース制御部２８とを含む。
【００３３】
また、チャネル情報格納部１３〜１５は、各メモリマスタ１０〜メモリマスタ１２毎に割り当てられたチャネル数分だけチャネル情報を格納する領域を有している。
【００３４】
ただし、メモリマスタ１０〜メモリマスタ１２の他に、他の図示しないメモリマスタが接続されており、図示しない対応するＬＲＵ制御部、アイドルカウンタ、アクセスカウンタがメモリ制御回路９０に含まれているが、わかりやすくするため、これらに関しては説明を省略する。
【００３５】
ＶＣＭ２９は、図７に示すように、複数のチャネル５０とメモリセル５１とから構成される。メモリセル５１は、複数のセグメントから構成される。チャネル５０は、たとえば、レジスタで構成され、１つのチャネル５０は、全てのセグメントに接続されており、１セグメント分のデータを保持できる。チャネル５０にメモリセル５１から読み出されたデータ、あるいは、メモリ制御部から書き込まれたデータは、書き換えられるまで保持される。
【００３６】
メモリアドレスは、たとえば、図２に示すように、バンクアドレス（１ビット）、ロウアドレス（１３ビット）、セグメント単位を示すセグメントアドレス（２ビット）、カラムアドレス（７ビット）から構成される。チャネル情報としては、以上の他に、チャネル番号（４ビット）が含まれる。このメモリアドレスがメモリマスタ１０〜メモリマスタ１２から送出され、チャネル情報格納部１３の各格納領域に格納される。
【００３７】
また、チャネル番号は、全てのチャネル５０の番号を指定できるように設けられる。たとえば、チャネル５０が１６存在すれば、チャネル番号は、４ビットである。また、チャネル情報格納部１３は、各チャネル５０に対応する格納領域を含む。たとえば、図１４（ａ）を参照すると、チャネル情報格納部１３の格納領域０〜２は、メモリマスタ１０に、格納領域３〜４は、メモリマスタ１１に、格納領域１２〜１５は、メモリマスタ１２に対応するチャネル５０のチャネル情報を格納する。ここで、チャネル番号０〜１５と格納領域０〜１５は対応している。
【００３８】
チャネル番号０〜１５は、システムの初期化時に生成され、チャネル情報の一部として対応する格納領域０〜１５に格納される。
【００３９】
各格納領域０〜１５には、対応する有効フラグが設けられる（図示せず）。これは、その各格納領域内のチャネル情報が有効かどうかを示すものであり、初期値は、無効（空き）となっており、チャネル情報が格納されると、有効となり、チャネル情報が削除されると、無効（空き）となるように設定される。これについては、通常のキャッシュの有効フラグと同様に使用されるので、以降では、説明しない。
【００４０】
図３は、アイドルカウンタ１９〜アイドルカウンタ２１の機能を説明するフローチャートである。図３を参照すると、アイドルカウンタ１９〜アイドルカウンタ２１は、基本的に、対応するメモリマスタ１０〜メモリマスタ１２がアイドル状態になると（図３Ｓ３１／Ｙｅｓ）制御クロックにより設定値になるまで（図３Ｓ３２）カウントアップし（図３Ｓ３４）、カウンタ値を保持し（図３Ｓ３５）、対応するメモリマスタ１０〜メモリマスタ１２からのアクセス要求（図３Ｓ３１／Ｎｏ）またはチャネル移動の発生（図３Ｓ３６）が発生したらそのカウンタ値をクリアする（図３Ｓ３３）もので、これにより当該メモリマスタが長期間アクセスをしなかったかを判断することが可能である。
【００４１】
図４は、アクセスカウンタ２２〜アクセスカウンタ２４の機能を説明するフローチャートである。図４を参照すると、アクセスカウンタ２２〜アクセスカウンタ２４は、基本的に、対応するメモリマスタ１０〜メモリマスタ１２がアクセス要求を発生したら（図４Ｓ４３／Ｙｅｓ）、カウンタ値が適宜定めた設定値に達していなければ（図４Ｓ４４／Ｎｏ）、カウントアップし（図４Ｓ４５）、そうでなければ（図４Ｓ４４／Ｙｅｓ）、カウンタ値を保持する（図４Ｓ４６）。また、対応するアイドルカウンタ１９〜アイドルカウンタ２１が設定値までカウントアップしたら（図４Ｓ４１／Ｎｏ）、カウンタ値をクリアする（図４Ｓ４２）。
【００４２】
図５は、移動チャネルエントリ部２５の機能を説明するフローチャートである。図５を参照すると、移動チャネルエントリ部２５は、基本的に、アイドルカウンタ１９〜アイドルカウンタ２１が設定値までカウントアップしたら（図５Ｓ５４／Ｙｅｓ）、対応するメモリマスタ１０〜メモリマスタ１２をエントリするもの（図５Ｓ５５）で、チャネルミス等の発生によりチャネルを移動する必要性が生じたときに優先的に移動するチャネルの情報を得ることが可能である。また、エントリしたメモリマスタ１０〜メモリマスタ１２にアクセス要求が発生すると（図５Ｓ５１／Ｙｅｓ）、または、チャネル移動が発生すると（図５Ｓ５３／Ｙｅｓ）、対応するメモリマスタ１０〜メモリマスタ１２のエントリを削除する（図５Ｓ５２）。
【００４３】
図６は、移動チャネル制御部２６の機能を説明するフローチャートである。図６を参照すると、移動チャネル制御部２６は、アクセスカウンタ２２〜アクセスカウンタ２４と、移動チャネルエントリ部２５のそれぞれの情報に基づいて、チャネルミス等の発生によりチャネル５０をメモリマスタ１０〜メモリマスタ１２で移動する必要性が生じたらどのチャネル５０をどこに移動するかを制御する。
【００４４】
チャネル移動の必要が生じると（図６Ｓ６１／Ｙｅｓ）、移動チャネルエントリ部２５に移動可能チャネルの属するメモリマスタ１０〜メモリマスタ１２のエントリがあると（図６Ｓ６２／Ｙｅｓ）、エントリ順位の早かったメモリマスタ１０〜メモリマスタ１２に対応するチャネル５０の内、ＬＲＵの最上位のものを指定する（図６Ｓ６３）。
【００４５】
エントリが無いと（図６Ｓ６２／Ｎｏ）、各アクセスカウンタ２２〜アクセスカウンタ２４のカウンタ値を比較し（図６Ｓ６４）、カウンタ値が最小のものに対応するメモリマスタ１０〜メモリマスタ１２と、チャネルミスを発生したメモリマスタ１０〜メモリマスタ１２とが同一であれば（図６Ｓ６５／ＹｅＳ）、チャネル移動はせずに、対応するＬＲＵ制御部１６〜ＬＲＵ制御部１８のＬＲＵの更新を行う（図６Ｓ６６）。
【００４６】
同一でないと（図６Ｓ６５／Ｎｏ）、アクセスカウンタ２２〜アクセスカウンタ２４のカウンタ値で同一値のものがあれば（図６Ｓ６７／Ｙｅｓ）、優先順位（これは、あらかじめ、メモリマスタ１０〜メモリマスタ１２に対し、適宜設定しておく）の高いメモリマスタ１０〜メモリマスタ１２に対応するＬＲＵ制御部１６〜ＬＲＵ制御部１８のＬＲＵの最上位のものを指定する（図６Ｓ６８）。また、同一値のものがなければ（図６Ｓ６７／Ｎｏ）、アクセスカウンタ２２〜アクセスカウンタ２４のカウンタ値が最小であるものに対応するＬＲＵ制御部１６〜ＬＲＵ制御部１８のＬＲＵの最上位のものを指定する（図６Ｓ６９）。
【００４７】
次に、本発明の第１の実施の形態の動作について説明する。メモリマスタ１０、メモリマスタ１１、メモリマスタ１２以外のメモリマスタについては、説明を省略する。
【００４８】
まず、メモリマスタ１０からアクセス要求が発生した場合について説明する。このアクセス要求信号はアービタ部２７に入力され、このアクセス要求が許可されると、チャネル情報格納部１３のメモリマスタ１０に割り当てられた格納領域にチャネル情報が格納される。このとき、アイドルカウンタ１９がカウントアップしていればストップし、アイドルカウンタ１９は、そのカウンタ値をクリアする。また、ＬＲＵ制御部１６はチャネル情報が格納された格納領域をＬＲＵの最下位に移動し、他の２つの格納領域をそれぞれ上位にシフトする。さらに、アクセスカウンタ２２はそのカウンタ値を１つカウントアップし、メモリインタフェース制御部２８は、アクセス要求されたメモリアドレスでメモリバス８０上にサイクルを発生させる。サイクルが終了すると、アイドルカウンタ１９は再び制御クロックによりカウントアップを開始する。仮に、複数のメモリマスタからアクセス要求が同時に発生した場合は、アービタ部２７で決められた優先順位にしたがってアクセス順位が決まる。
【００４９】
もし、アクセス要求されたサイクルのメモリアドレスが、チャネル情報格納部１３の３つの格納領域０〜２にすでに格納されているものと一致すれば、そのサイクルはチャネルヒットとして処理される。この際、メモリアドレスが一致した格納領域がＬＲＵ制御の最下位でなければ最下位に移動し、他の２つの格納領域はそれぞれ上位にシフトされる。
【００５０】
逆に、アクセス要求されたサイクルのメモリアドレスが、チャネル情報格納部１３の３つの格納領域０〜２にすでに格納されているもののどれとも一致しなければ、そのサイクルはチャネルミスとして処理される。この際、ＬＲＵ制御の最上位の格納領域に要求されたメモリアドレスを格納し、ＬＲＵ制御の最下位に移動する。
【００５１】
メモリマスタ１０からのアクセス要求がなければ、アイドルカウンタ１９はカウントアップを続け、いずれは設定値までカウントアップする。ここでの設定値とは、メモリマスタからのアクセスが長期間なかったことを判断できる値である。アイドルカウンタ１９が設定値までカウントアップすると、アイドルカウンタ１９は設定値を超えてカウントアップはしないでその値を保持し、アクセスカウンタ２２はアイドルカウンタ１９のカウンタ値をクリアする。また、アイドルカウンタ１９が設定値までカウントアップされたメモリマスタ１０は、長期間アクセスがなかったと判断され、ＬＲＵ制御の最上位にある格納領域が他のメモリマスタへの移動が可能とみなされ、移動チャネルエントリ部２５にメモリマスタ１０の名称がエントリされる。
【００５２】
もし、このエントリ後にメモリマスタ１０からのアクセス要求が発生したら、移動チャネルエントリ部２５からメモリマスタ１０の名称を削除し、アイドルカウンタ１９のカウンタ値をクリアし、アクセスカウンタ２２を１つカウントアップする。
【００５３】
メモリマスタ１０が移動チャネルエントリ部２５にエントリされた状態で、メモリマスタ１１からアクセス要求が発生し、そのサイクルがチャネルミスになった（すなわち、これはメモリマスタ１１からのメモリアドレスがチャネル情報格納部１３の格納領域３〜４に格納されているいずれのメモリアドレスとも一致しない）場合、移動チャネルエントリ部２５には、移動可能なチャネルを持つメモリマスタ１０がエントリされているので、移動チャネル制御部２６はメモリマスタ１０に割り当てられたチャネル情報格納部１３の格納領域０〜２のうちＬＲＵ制御の最上位のものを移動可能チャネルとして指定する。
【００５４】
指定されたチャネル情報格納部１３の格納領域は、メモリマスタ１１に割り当てられ（たとえば、図１４（ｂ）のように、格納領域２がメモリマスタ１１に割り当てられ）、ＬＲＵ制御部１７は制御すべき格納領域を１つ追加して３つとして、移動してきた格納領域をＬＲＵ制御の最下位にランクする。
【００５５】
また、ＬＲＵ制御部１６は制御すべきチャネル数を１つ減らして２つとする。このようにしてチャネルの移動が完了すると、移動チャネルエントリ部２５にエントリされていたメモリマスタ１０はそのエントリから削除される。さらに、アイドルカウンタ１９も、設定値を保持していたそのカウンタ値をクリアする。
【００５６】
仮に、移動チャネルエントリ部２５に複数のメモリマスタがエントリされている状態で、同様にチャネルミス等の発生によりチャネルの移動の必要性が発生した場合は、移動チャネル制御部２６によって、移動チャネルエントリ部２５に先にエントリした方のメモリマスタが移動対象として指定される。このとき、移動チャネルエントリ部２５では、チャネルの移動が完了した後、指定されたメモリマスタが削除されると、残っているエントリされたメモリマスタのエントリ順位を１つずつシフトして次回のチャネルの移動が必要になったときに備える。
【００５７】
移動チャネルエントリ部２５に１つでもエントリされていれば、このような手順によりチャネルの移動が行われるが、チャネルミス等の発生によりチャネルの移動の必要性が生じたにも関わらず、移動チャネルエントリ部２５に何もエントリされていない場合もある。
【００５８】
たとえば、どのメモリマスタ１０〜メモリマスタ１２もアイドルカウンタ１９〜アイドルカウンタ２１が設定値までカウントアップするよりも短い時間で周期的に、かつ各アクセス要求が異なるアドレスを持って発生することによってチャネルミスが生じた場合がこれに相当する。このとき移動チャネル制御部２６は、それぞれのアクセスカウンタ２２〜アクセスカウンタ２４のカウンタ値を比較し、カウンタ値が一番小さかったメモリマスタに対応するチャネル情報格納領域のＬＲＵ制御の最上位の格納領域を移動対象として指定する。これにより、アイドルカウンタ１９〜アイドルカウンタ２１の設定値よりも短い時間で周期的にアクセス要求しているようなメモリマスタに対して、つまり全体のアクセス頻度か低いにも関わらずアイドルカウンタ１９〜アイドルカウンタ２１の設定値を満たさないため移動チャネルエントリ部２５にエントリされないメモリマスタに対して、過剰に割り当てられたチャネル数（格納領域の数）を適切なチャネル数（格納領域の数）にすることが可能である。
【００５９】
また、アクセスカウンタ２２〜アクセスカウンタ２４のカウンタ値を比較した際に、そのカウンタ値が最小となるメモリマスタが複数あり、かつそのカウンタ値が最小となるメモリマスタと、チャネルミスが発生したメモリマスタが一致した場合は、そのメモリマスタに対応するＬＲＵ制御部においてチャネル情報を更新するのみとし、チャネルの移動は行わない。一致しなかった場合は、あらかじめ決められた優先順位によって移動対象を決定する。
【００６０】
これにより、各メモリマスタに割り当てるチャネル数が適切でなかった場合でも、アクセス要求の頻度の高いメモリマスタには多くの格納領域を割り当て、アクセス要求の頻度の低いメモリマスタには少ない格納領域を割り当てることが自動的に可能となる。結果的に、アクセス要求の頻度が高かったためにチャネルミスの確率も高かったメモリマスタに多くのチャネルを割り当てることでチャネルミスの確率を低く、逆に言えばチャネルヒットの確率を高くすることができ、全体としてのメモリアクセス性能を向上させることが可能となる。
【００６１】
また、一度、メモリ制御回路９０からＶＣＭ２９へアクセス要求が出されると、読み出された、あるいは書き込まれたデータは、対応するチャネル５０に保持されている。ＶＣＭ２９は、チャネル５０に保持されているデータに対応するメモリアドレス（バンクアドレス、ロウアドレス、セグメントアドレス）を保持しており、その保持しているアドレスと同一のメモリアドレスに対する読み出し要求に対しては、メモリセル５１にはアクセスせず、チャネル５０に保持されているデータをメモリ制御回路９０に送る。
【００６２】
次に、本発明の第１の実施の形態の動作についてさらに詳細に図面を参照して説明する。
図１０は、本発明の第１の実施の形態の動作を示すタイムチャートである。
図１１は、チャネル情報格納部１３のＬＲＵ制御の動作を示すタイムチャートである。
図１２は、移動チャネルエントリ部２５および移動チャネル制御部２６の動作を示すタイムチャートである。
図１３は、移動チャネルエントリ部２５にエントリがなかった場合におけるチャネルの移動の動作を示すタイムチャートである。
【００６３】
図１１〜図１３において、チャネル情報１３１、１３２、１３３は、それぞれＬＲＵ制御部１６におけるＬＲＵの低い順（すなわち、最近アクセス要求のあった順位）におけるチャネル情報を示す。同様に、チャネル情報１４１、１４２は、それぞれＬＲＵ制御部１７のＬＲＵにおける低い順のチャネル情報を示し、チャネル情報１５１、１５２、１５３、１５４は、それぞれＬＲＵ制御部１８のＬＲＵにおける低い順のチャネル情報を示す。また、移動チャネル１５１、１５２、１５３は、移動チャネルエントリ部２５における削除される順位の高い順のエントリを示す。
【００６４】
まず、メモリマスタ１０〜メモリマスタ１２、アイドルカウンタ１９〜アイドルカウンタ２１、アクセスカウンタ２２〜アクセスカウンタ２４、チャネル情報格納部１３の動作について説明する。
【００６５】
図１０において、初期値ではメモリマスタ１０には３つのチャネル５０、メモリマスタ１１には２つのチャネル５０、メモリマスタ１２には４つのチャネル５０が割り当てられているとしており、チャネル情報格納部１３の対応する各格納領域は、図１４（ａ）に示すようである。また、各格納領域には、対応するチャネル番号がチャネル情報の一部として格納されている。
【００６６】
初期状態では、チャネル情報格納部１３にはチャネル情報は格納されていない（図１０Ｔ０）。また、パワーオン後からいずれかのメモリマスタ１０〜メモリマスタ１２からのアクセス要求が発生するまでは、アイドル状態であってもそれぞれのアイドルカウンタ１９〜アイドルカウンタ２１はカウントアップしない。
【００６７】
このような状態から、まず、メモリマスタ１０からアクセス要求が発生する（図１０Ｔ１）。メモリマスタ１０からのアクセス要求はメモリアドレスａｄｄ１０−１を伴って発生する。このアドレスａｄｄ１０−１には、バンクアドレス、ロウアドレス、セグメントアドレス、カラムアドレスが含まれている。
【００６８】
アービタ部２７に入力されたメモリマスタ１０からのアクセス要求が許可されると、メモリマスタ１０からのアクセス要求は解除される（図１０Ｔ２）。ここでは、メモリマスタ１０からのアクセス要求が許可されたとして、アービタ部２７からの許可信号に“１０”と示している。また、このときアクセスカウンタ２２はそのカウンタ値を１つカウントアップして“１”とし、ＬＲＵ制御部１６の最下位にランクされるチャネル情報格納部１３の格納領域０にアドレスａｄｄ１０−１が格納されると共にメモリバス８０上にはサイクルが発生する（図１０Ｔ３）。  ここでは、初期状態からどのロウアドレスも活性化されていないメモリへのライトサイクルが発生しているとしており、ＡＣＴコマンドにてロウアドレスを活性化し（図１０Ｔ３）、ＷＲＩＴＥコマンドにてデータを書き込んでいる（図１０Ｔ５〜Ｔ８）。
【００６９】
パワーオン後、いずれかのメモリマスタ、ここではメモリマスタ１０からのアクセス要求が発生したことが認識されると（図１０Ｔ３）、アクセス要求を発生しなかったメモリマスタ１１、メモリマスタ１２に対応するアイドルカウンタ２０、アイドルカウンタ２１はカウントアップを始める（図１０Ｔ４）。
【００７０】
アイドルカウンタ１９は、メモリマスタ１０からのサイクルが終了しアイドル状態になったことを認識するとカウントアップを始める（図１０Ｔ８）。
【００７１】
次に、メモリマスタ１０とメモリマスタ１１とから同時にアクセス要求が発生する（図１０Ｔ８）。アービタ部２７では、メモリマスタ１１の方がメモリマスタ１０よりも優先順位が高いとしておりアービタ部２７からはメモリマスタ１１への許可が発行される（図１０Ｔ９）。メモリマスタ１１からのアクセス要求が許可されたので、メモリマスタ１１はそのアクセス要求を解除するが（図１０Ｔ９）、メモリマスタ１０はアクセス要求が許可されていないので引き続きアクセス要求を発生し続ける。
【００７２】
メモリマスタ１１からのアクセス要求が許可されると、これに対応するアイドルカウンタ２０はそのカウンタ値をクリアし、アクセスカウンタ２３はそのカウンタ値を１つカウントアップして“１”とし、ＬＲＵ制御部１７の最下位にランクされるチャネル情報格納部１３の格納領域３にはａｄｄ１１−１が格納され、メモリバス８０上には要求されたサイクルが発生する（図１０Ｔ１０）。アイドルカウンタ２０は、メモリマスタ１１からのサイクルが終了しアイドル状態になったことを認識すると再度カウントアップを始める（図１０Ｔ１５）。
【００７３】
先にメモリマスタ１１からのアクセス要求と同時に発生していたメモリマスタ１０からのアクセス要求がアービタ部２７によって許可されると、メモリマスタ１０からのアクセス要求は解除され（図１０Ｔ１４）、アイドルカウンタ１９はそのカウント値をクリアし、アクセスカウンタ２２はそのカウンタ値を１つカウントアップして“２”とする（図１０Ｔ１５）。
【００７４】
ここで発生したアクセス要求でのアドレスａｄｄ１０−１は、先にメモリマスタ１０から発生したアクセス要求でのアドレスと一致し、これはすでにチャネル情報格納部１３の格納領域０に格納されているので、メモリマスタ１０からのサイクルはチャネルヒットと判断され、チャネル情報格納部１３には変化はなく、メモリバス８０上にはヒットサイクルが発生する（図１０Ｔ１５）。ここではリードサイクルが発生したものとしており、メモリバス８０上にはヒットサイクルのためＲＥＡＤコマンドのみが発生する（図１０Ｔ１５）。アイドルカウンタ１９は、メモリマスタ１０からのサイクルが終了しアイドル状態になったことを認識すると再度カウントアップを始める（図１０Ｔ２０）。
【００７５】
次に、チャネル情報格納部１３とＬＲＵ制御部１６〜ＬＲＵ制御部１８の動作について説明する。
【００７６】
図１１Ｔ０においては、メモリマスタ１０〜メモリマスタ１２はいずれもアイドル状態にあるが、メモリマスタ１０からは先に５回のサイクルの発生があったためアクセスカウンタ２２のカウンタ値は“５”、チャネル情報格納部１３の可能領域０〜２にはＬＲＵの優先順位の高い方からａｄｄ１０−１、ａｄｄ１０−２、ａｄｄ１０−３が格納されている。つまり、最近にメモリマスタ１０から発生したサイクルのアドレスはａｄｄ１０−１であり、ａｄｄ１０−１以外でその次の最近にメモリマスタ１０から発生したサイクルのアドレスはａｄｄ１０−２ということになる。また、図１１Ｔ０でのアイドルカウンタ１９の値は“１１”であるので、最近にメモリマスタ１０からサイクルが発生してから１１クロックが経過していることになる。
【００７７】
同様に、図１１Ｔ０ではアイドルカウンタ２０の値は“１３”、アクセスカウンタ２３の値は“４”、チャネル情報格納部１３の格納領域３〜４には、ａｄｄ１１−１、ａｄｄ１１−２が格納されており、アイドルカウンタ２１の値は“１９”、アクセスカウンタ２４の値は“７”、チャネル情報格納部１３の格納領域３〜４にはａｄｄ１２−１、ａｄｄ１２−２、ａｄｄ１２−３、ａｄｄ１２−４が格納されている。
【００７８】
このような状態において、メモリマスタ１０からアクセス要求が発生し（図１１Ｔ３）、このときのアドレスがａｄｄ１０−３である場合について説明する。アービタ部２７においてメモリマスタ１０からのアクセス要求が許可されると、メモリマスタ１０からのアクセス要求は解除され（図１１Ｔ４）、アイドルカウンタ１９はそのカウンタ値をクリアし、アクセスカウンタ２２はそのカウンタ値を１つカウントアップして“６”とする（図１１Ｔ５）。
【００７９】
ここで発生したアクセス要求のアドレスは、ａｄｄ１０−３であり、これはすでにチャネル情報格納部１３のうちＬＲＵ制御の最上位にランクされている格納領域２内のメモリアドレスと一致している。このため、チャネル情報格納部１３ではａｄｄ１０−３のチャネル情報をＬＲＵ制御部１６の最下位にランクし、ａｄｄ１０−１およびａｄｄ１０−２はそれぞれ１つずつ上位にシフトしてランクし、メモリバス８０上にはヒットサイクルが発生する（図１１Ｔ５）。アイドルカウンタ１９は、メモリマスタ１０からのサイクルが終了しアイドル状態になったことを認識すると再度カウントアップを始める（図１１Ｔ１０）。
【００８０】
次に、移動チャネルエントリ部２５および移動チャネル制御部２６の動作について説明する。
【００８１】
図１１と同様に、図１２Ｔ０ではメモリマスタ１０〜メモリマスタ１２はいずれもアイドル状態であり、アイドルカウンタ１９の値は“６０”、アクセスカウンタ２２の値は“５”、チャネル情報格納部１３の格納領域０〜３にはａｄｄ１０−１、ａｄｄ１０−２、ａｄｄ１０−３が格納されており、アイドルカウンタ２０の値は“５８”、アクセスカウンタ２３の値は“４”、チャネル情報格納部１３の格納領域３〜４にはａｄｄ１１−１、ａｄｄ１１−２が格納されており、アイドルカウンタ２１の値は“５６”、アクセスカウンタ２４の値は“７”、チャネル情報格納部１３の格納領域１２〜１５にはａｄｄ１２−１、ａｄｄ１２−２、ａｄｄ１２−３、ａｄｄ１２−４が格納されている。
【００８２】
いずれのメモリマスタ１０〜メモリマスタ１２もアイドル状態が続くと、それぞれのアイドルカウンタ１９〜アイドルカウンタ２１もカウントアップし続け、アイドルカウンタ１９のカウンタ値が“６４”となる（図１２Ｔ４）。この値は、予め初期化中などで設定され、メモリマスタ１０からのアクセス要求が長期間なかったことを判断できる値であり、一例として“６４”とする。アイドルカウンタ１９はメモリマスタ１０がアイドル状態であっても“６４”を超えてカウントアップしないでその値を保持し、アクセスカウンタ２２はそのカウンタ値をクリアする（図１２Ｔ５）。これによりメモリマスタ１０からは長期間アクセスがなかったと判断され、移動チャネルエントリ部２５の最上位にエントリされる（図１２Ｔ４）。ここでは、メモリマスタ１０に割り当てられたチャネル（格納領域）がエントリされたことを示すため、移動チャネルエントリ部２５の最上位に“１０”としてこれを示している。
【００８３】
同様に、アイドルカウンタ２０が設定値である“６４”までカウントアップしたため（図１２Ｔ６）、アイドルカウンタ２０はそれ以上カウントアップはせずにその値を保持し、アクセスカウンタ２３はそのカウンタ値をクリアし、移動チャネルエントリ部２５にはメモリマスタ１１を示す“１１”が１０の次にエントリされる。
【００８４】
さらに同様に、アイドルカウンタ２１が設定値である“６４”までカウントアップしたため（図１２Ｔ９）、アイドルカウンタ２１はそれ以上カウントアップはせずにその値を保持し、アクセスカウンタ２４はそのカウンタ値をクリアし、移動チャネルエントリ部２５にはメモリマスタ１２を示す１２が“１１”の次にエントリされる。
【００８５】
このとき、メモリマスタ１０からアクセス要求が発生する（図１２Ｔ９）。アービタ部２７にてこのアクセス要求が許可されると、メモリマスタ１０からのアクセス要求は解除され（図１２Ｔ１０）、アイドルカウンタ１９はその値をクリアし、アクセスカウンタ２２はその値を１つカウントアップして“１”とする（図１２Ｔ１１）。ここで発生したアクセス要求のメモリアドレスはａｄｄ１０−３であり、これはすでにチャネル情報格納部１３の格納領域０〜３のうちＬＲＵ制御の最上位にランクされているメモリアドレスと一致するので、チャネル情報格納部１３はａｄｄ１０−３のチャネル情報をＬＲＵ制御部１６の最下位にランクし、ａｄｄ１０−１およびａｄｄ１０−２をそれぞれ１つずつ上位にシフトしてランクし、メモリバス８０上にはヒットサイクルを発生する（図１２Ｔ１１）。
【００８６】
アイドルカウンタ１９は、メモリマスタ１０からのサイクルが終了しアイドル状態になったことを認識すると再度カウントアップを始める（図１２Ｔ１４）。また、移動チャネルエントリ部２５にエントリされた“１０”は削除され、“１０”よりも下位にエントリされていた“１１”、“１２”はそれぞれ上位にシフトしてエントリされる。このようにして、一度移動チャネルエントリ部２５にエントリされても、対応するメモリマスタからのサイクルが発生すればそのエントリが削除される。この一例では発生したアクセス要求のメモリアドレスとチャネル情報格納部１３に格納されているメモリアドレスとが一致していたが、これは一致するしないに関わらず同様の動作となる。
【００８７】
次に、再度、メモリマスタ１０からアクセス要求が発生する（図１２Ｔ１３）。アービタ部２７においてこのアクセス要求が許可されると、メモリマスタ１０からのアクセス要求は解除され（図１２Ｔ１４）、アイドルカウンタ１９はその値をクリアし、アクセスカウンタ２２はその値を１つカウントアップして“２”とする（図１２Ｔ１５）。ここで発生したアクセス要求のメモリアドレスはａｄｄ１０−４であり、これはチャネル情報格納部１３の格納領域０〜３に格納されているどのメモリアドレスとも一致しないため、チャネルミスと判断される。移動チャネルエントリ部２５には、アクセス要求を発生したメモリマスタ１０を示す“１０”がエントリされていないため、移動チャネル制御部２６は移動チャネルエントリ部２５の最上位にエントリされている“１１”に割り当てられたチャネル（格納領域）のうち、ＬＲＵ制御の最上位にランクされているチャネル（格納領域）を移動可能チャネルとして指定する。
【００８８】
メモリマスタ１１の指定された格納領域は、メモリマスタ１０の格納領域として移動する（図１２Ｔ１５）。チャネル情報格納部１３の格納領域は、割り当てられたチャネル（格納領域）が３つから４つに増えたことになり、アクセス要求のアドレスａｄｄ１０−４がＬＲＵ制御部１６の最下位にランクし、他のチャネル情報はそれぞれ１つずつ上位にシフトしてランクされる。また、チャネル（格納領域）が移動すると、移動チャネルエントリ部２５から移動したチャネル（格納領域）が削除され、残った“１２”が移動チャネルエントリ部２５の最上位にシフトしてエントリされる。また、チャネル（格納領域）が移動されたメモリマスタ１１のアイドルカウンタ２０はその値をクリアし、再度カウントアップを始める。アイドルカウンタ１９は、メモリマスタ１０からのサイクルが終了しアイドル状態になったことを認識すると再度カウントアップを始める（図１２Ｔ２６）。
【００８９】
次に、移動チャネルエントリ部２５にエントリがなかった場合におけるチャネルの移動について説明する。
【００９０】
図１１、図１２と同様に、図１３Ｔ０ではメモリマスタ１０〜メモリマスタ１２はいずれもアイドル状態であり、アイドルカウンタ１９の値は“２０”、アクセスカウンタ２２の値は“８”、チャネル情報格納部１３の格納領域０〜２にはａｄｄ１０−１、ａｄｄ１０−２、ａｄｄ１０−３が格納されており、アイドルカウンタ２０の値は“１０”、アクセスカウンタ２３の値は“５”、チャネル情報格納部１３の格納領３〜４にはａｄｄ１１−１、ａｄｄ１１−２が格納されており、アイドルカウンタ２１の値は“３０”、アクセスカウンタ２４の値は“４”、チャネル情報格納部１３の格納領域１２〜１５にはａｄｄ１２−１、ａｄｄ１２−２、ａｄｄ１２−３、ａｄｄ１２−４が格納されており、移動チャネルエントリ部２５には何もエントリされていない状態である。
【００９１】
このとき、メモリマスタ１０からアクセス要求が発生する（図１３Ｔ１）。アービタ部２７によりこのアクセス要求が許可されると、メモリマスタ１０からのアクセス要求は解除され（図１３Ｔ２）、アイドルカウンタ１９はその値をクリアし、アクセスカウンタ２２はその値を１つカウントアップして“５”とする（図１３Ｔ３）。ここで発生したアクセス要求のメモリアドレスはａｄｄ１０−４であり、これはチャネル情報格納部１３の格納領域０〜２に格納されているいずれのメモリアドレスとも一致しないためチャネルミスと判断され、メモリバス８０上にはチャネルミスが発生する。
【００９２】
チャネルミスと判断されてチャネルの移動が必要になったにも関わらず、移動チャネルエントリ部２５には何もエントリされていないため、移動チャネル制御部２６はそれぞれのアクセスカウンタ２２〜アクセスカウンタ２４のカウンタ値を比較する。ここで、アクセスカウンタ２２およびアクセスカウンタ２４のカウンタ値“４”が一番小さい値になるが、このようにカウンタ値の一番小さい値が複数ある場合は、カウンタ値の一番小さいアクセスカウンタ２２〜アクセスカウンタ２４がアクセス要求のあったメモリマスタ１０に対応するものかどうかを判断する。
【００９３】
ここでは、アクセス要求を発生したものはメモリマスタ１０であり、カウンタ値が一番小さいアクセスカウンタの１つがアクセスカウンタ２２で、アクセスカウンタ２２はメモリマスタ１０のものであるため、チャネル情報格納部１３のチャネル情報を更新するだけとする。つまり、チャネル情報格納部１３のうちＬＲＵ制御の最上位にランクされているチャネル情報のメモリアドレスをアクセス要求のメモリアドレスａｄｄ１０−４に変更し、ＬＲＵ制御の最下位にランクし、他のチャネル情報は１つずつ上位にシフトしてランクする（図１３Ｔ３）。アイドルカウンタ１９は、メモリマスタ１０からのサイクルが終了しアイドル状態になったことを認識すると再度カウントアップを始める（図１３Ｔ１４）。
【００９４】
次に、再度メモリマスタ１０からアクセス要求が発生する（図１３Ｔ１３）。アービタ部２７において、このアクセス要求が許可されると、メモリマスタ１０からのアクセス要求は解除され（図１３Ｔ１４）、アイドルカウンタ１９はその値をクリアし、アクセスカウンタ２２はその値を１つカウントアップして“６”とする（図１３Ｔ１５）。ここで発生したアクセス要求のメモリアドレスはａｄｄ１０−５であり、これはチャネル情報格納部１３の格納領域０〜３に格納されているいずれのメモリアドレスとも一致しないためチャネルミスと判断され、メモリバス８０上にはチャネルミスが発生する。
【００９５】
チャネルミスと判断されてチャネルの移動が必要になったにも関わらず、移動チャネルエントリ部２５には何もエントリされていないため、移動チャネル制御部２６はそれぞれのアクセスカウンタ２２〜アクセスカウンタ２４のカウンタ値を比較する。ここで、アクセスカウンタ２４のカウンタ値４が一番小さい値になるので、メモリマスタ１２に割り当てられたチャネルのうちＬＲＵ制御の最上位にランクされているチャネル（格納領域）を移動可能チャネルとして指定する。
【００９６】
指定されたチャネル（格納領域）は、メモリマスタ１０に対応するものとなる（図１３Ｔ１５）。チャネル情報格納部１３では、メモリマスタ１０に割り当てられたチャネル（格納領域）が３つから４つに増えたことになり、アクセス要求のアドレスａｄｄ１０−５がＬＲＵ制御部１６の最下位にランクし、他のチャネル情報はそれぞれ１つずつ上位にシフトしてランクされる。アイドルカウンタ１９は、メモリマスタ１０からのサイクルが終了しアイドル状態になったことを認識すると再度カウントアップを始める（図１３Ｔ２６）。
【００９７】
以上において、各メモリマスタ１０〜メモリマスタ１２に対応するチャネル情報格納部１３の各格納領域の対応は、図示しない制御部に対応情報として保持されており、チャネル移動が発生すると、対応情報が更新される。メモリ制御回路９０の各エレメントは、この対応情報を参照して動作する。
【００９８】
また、各ＬＲＵ制御部１６〜ＬＲＵ制御部１８は、たとえば、全ての格納領域に対する１６ビットのフラグを有し、各々に割り当てられた格納領域に対応するフラグをオンにし、他はオフにし、オンのフラグに対応する格納領域に対するＬＲＵ制御を実施する。そしてチャネル移動が発生すると、対応情報に基づいてフラグのオン、オフを更新する。
【００９９】
次に、本発明の第２の実施の形態について説明する。
本発明の第２の実施の形態は、チャネル情報格納部１３には、チャネル番号を格納せず、ＶＣＭ２９へのサイクルの際にメモリバス８０に送出する格納領域に対応するチャネル番号を対応情報から作成する手段を有するものである。これにより、チャネル情報格納部１３のハードウェア量が削減できる。
【０１００】
【発明の効果】
以上説明したように、本発明によれば、ＶＣＭを使用してＬＲＵによる制御方法を用いるシステムにおいて、各メモリマスタに割り当てるチャネル数が適切でなかった場合でも、アクセス頻度を考慮しながら制御するチャネルを各メモリマスタ間で移動することで、自動的にシステムに適したチャネル数が各メモリマスタに割り当てられ、ＶＣＭの持つチャネルの使用効率が高められメモリアクセス性能を向上させることが可能となる。
【図面の簡単な説明】
【図１】本発明の実施の形態を示すブロック図である。
【図２】チャネル情報を示す説明図である。
【図３】図１のアイドルカウンタの機能を示すフローチャートである。
【図４】図１のアクセスカウンタの機能を示すフローチャートである。
【図５】図１の移動チャネルエントリ部の機能を示すフローチャートである。
【図６】図１の移動チャネル制御部の機能を示すフローチャートである。
【図７】ＶＣＭの概念を示すブロック図である。
【図８】従来のＶＣＭを用いたメモリシステムを示すブロック図である。
【図９】ＶＣＭへのアクセスを示すタイムチャートである。
【図１０】本発明の実施の形態の動作を示すタイムチャートである。
【図１１】チャネル情報格納部でのＬＲＵ制御を示すタイムチャートである。
【図１２】移動チャネルエントリ部、チャネル移動制御部の動作を示すタイムチャートである。
【図１３】チャネルの移動の動作を示すタイムチャートである。
【図１４】チャネル情報格納領域の割り当てを示す説明図である。
【符号の説明】
１０    メモリマスタ
１１    メモリマスタ
１２    メモリマスタ
１３    チャネル情報格納部
１６    ＬＲＵ制御部
１７    ＬＲＵ制御部
１８    ＬＲＵ制御部
１９    アイドルカウンタ
２０    アイドルカウンタ
２１    アイドルカウンタ
２２    アクセスカウンタ
２３    アクセスカウンタ
２４    アクセスカウンタ
２５    移動チャネルエントリ部
２６    移動チャネル制御部
２７    アービタ部
２８    メモリインタフェース制御部
２９    ＶＣＭ
５０    チャネル
５１    メモリセル
６０    ＶＣＭ
６１    メモリバス
６２    メモリ制御回路
６３    メモリインタフェース制御部
６４    アービタ部
６５    チャネル情報格納部
６６    ＬＲＵ制御部
６７    メモリマスタ
６８    チャネル情報格納部
６９    ＬＲＵ制御部
７０    メモリマスタ
７１    チャネル情報格納部
７２    ＬＲＵ制御部
７３    メモリマスタ
８０    メモリバス
９０    メモリ制御回路
【図１】
0003546788.tif 000002
【図２】
0003546788.tif 000003
【図３】
0003546788.tif 000004
【図４】
0003546788.tif 000005
【図５】
0003546788.tif 000006
【図６】
0003546788.tif 000007
【図７】
0003546788.tif 000008
【図８】
0003546788.tif 000009
【図９】
0003546788.tif 000010
【図１０】
0003546788.tif 000011
【図１１】
0003546788.tif 000012
【図１２】
0003546788.tif 000013
【図１３】
0003546788.tif 000014
【図１４】
0003546788.tif 000015