(57)【特許請求の範囲】
【請求項１】
複数のメモリバンクで構成されるメモリ装置と、複数のマスター装置のアクセスを受け付けるバスマトリクスと、前記バスマトリクスからアクセスされ一時的なデータを格納する複数のキャッシュと、複数の前記キャッシュからアクセスされその１つを選び前記メモリ装置にアクセスするアクセス制御装置とで構成するメモリ制御装置であって、
複数の前記キャッシュの数は前記メモリ装置のメモリバンクの数に等しく、前記バスマトリクスは複数の前記マスター装置のアドレス情報のうち前記メモリバンクに対応する前記キャッシュを同時にアクセスし、また重複する前記メモリバンクへのアクセスがあれば１つに調停し、前記アクセス制御装置は前記メモリ装置のメモリバンクの状態を管理し最も早くアクセスできる前記キャッシュのアクセスを選ぶことを特徴としたメモリ制御装置。
【請求項２】
請求項１記載のメモリ制御装置であって、
複数の前記メモリ装置にアクセスする複数の前記アクセス制御装置と、複数の前記キャッシュからアクセスされ複数の前記アクセス制御装置にアクセスする分離装置とで構成し、
複数の前記アクセス制御装置の数は複数の前記メモリ装置の数に等しくそれぞれ接続し、前記分離装置は複数の前記キャッシュのアドレス情報のうち前記アクセス制御装置に対応する前記アクセス制御装置を同時にアクセスし、また重複する前記アクセス制御装置へのアクセスがあれば１つに調停し、
前記分離装置は複数の前記メモリ装置間を跨ぐアクセスであれば直前のデータアクセス期間分前記アクセス制御装置へのアクセスを禁止し、跨がないアクセスであればそのまま前記アクセス制御装置へアクセスすることを特徴としたメモリ制御装置。
【請求項３】
請求項１記載のメモリ制御装置であって、
前記マスター装置はアクセスに関し優先度情報を加え、
前記優先度情報は前記マスター装置ごとに固定値もしくはアクセス量の時間変化に対する実測値と指定値の差分を与え、
前記バスマトリクスは複数の前記キャッシュそれぞれに対応する調停装置を備え、
前記調停装置は前記マスター装置が指定する優先度ごとにアクセスを分け、それぞれラウンドロビン方式で調停し、優先度の高い順から前記ラウンドロビン方式の調停結果の有無を調べ、優先度が同一の重複する前記メモリバンクへのアクセスのみ調停を行うことを特徴としたメモリ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリにアクセスする多数の装置があっても、高性能でかつ高効率なメモリアクセスを実現するためのメモリ制御装置に関する。
【背景技術】
【０００２】
画像の加工や解析など多くの処理装置は、解像度の増加やリアルタイム処理などのため、大容量で高性能なメモリが必要である。通常、安価で大容量なＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  ＲＡＭ）を使用し、それらを最適制御することで高性能化を図ることが多い。例えば、動作周波数の高いＳＤＲＡＭを複数個用いたり、処理装置を並列化することで高性能化する。従って、ＳＤＲＡＭの動作周波数やその数、および処理装置の数に従って、システムを都度最適化することになる。このため、システムの最適化が柔軟にかつ迅速に行えるメモリ制御装置が求められている。
【０００３】
このようなシステムの最適化を柔軟に行えるメモリ制御装置として、特開平１０−３２６２２５号公開公報がある。図２０を用いて説明する。
【０００４】
図２０において、１１から１６は任意の制御装置となるマスター、２１はマスター１１から１６それぞれのアクセスを束ねるバス、３１から３７はデータを一時蓄えるキャッシュ、４１はキャッシュ３１から３７のアクセスを束ねるバス、５１と５２はそれぞれメモリアクセスを制御するアクセス制御装置、６１と６２はそれぞれメモリ、３０１はバス２１とバス４１をバイパスするためのバッファ、３０２はキャッシュ３１から３７のアドレスを管理するキャッシュ制御装置である。ここで１００は、バス２１、キャッシュ３１から３７、バス４１、アクセス制御装置５１と５２からなるメモリ制御装置である。
【０００５】
マスター１１から１６は、メモリ６１とメモリ６２にアクセスするものであり、そのアクセス経路は、最初にバス２１へ、次にキャッシュ３１から３７のいずれかへ、次にアクセス制御装置５１か５２のいずれかへ、最後にバス４１に到達する。また、特別に、キャッシュ３１から３７の代わりにバッファ３０１を経由することもある。キャッシュ３１から３７もしくはバイパスバッファ３０１のいずれかを選ぶかは、キャッシュ制御装置３０２で管理する。
【０００６】
キャッシュ３１から３７にはそれぞれ管理番号が付与されており、マスター１１から１６は、キャッシュ制御装置３０２にそれらの番号を伝える。番号は直接指定するか、テーブル等で変換して間接指定する。従ってこれらは、キャッシュ３１から３７の選択番号になる。一方、バイパスバッファ３０１は、いずれのキャッシュにもアクセスせず、直接メモリ６１と６２に対して読み出したり書き出したりする場合に使用する。もちろん、キャッシュへの読み出しもしくは書き込みと同時に、バイパスバッファ３０１を通じて早くマスターもしくはメモリにデータを返したい場合にも利用する。
【０００７】
メモリ６１と６２に接続するアクセス制御装置５１と５２は、キャッシュ３１から３７内に記録されているアドレス情報により振り分けられる。このアドレス情報はマスターがアクセスする度に与えられる。また、バイパスバッファ３０１を利用する場合は、マスターが発行するアドレス情報を直接用いる。
【０００８】
バス２１とバス４１は同時に活性化できるため、マスター１１から１６のいずれかがキャッシュ３１から３７のいずれかにアクセスする場合と、キャッシュ３１から３７のいずれかがアクセス制御装置５１と５２にアクセスする場合とは、同時に実施できる。
【０００９】
以上のように、従来のメモリ制御装置は、マスターから直接または間接的に任意のキャッシュが選択可能である。システムの状況によって、一部のマスターに手厚くキャッシュを割り当てたりすることができ、限られたキャッシュ容量で効率よく高性能化を図ることができる。また、複数のキャッシュを用いているので、動作の遅いメモリ、例えばＳＤＲＡＭなどに対して一部のキャッシュがアクセスしている最中であっても、マスターは異なるキャッシュにアクセスでき、システム全体の高性能化が実現できる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平１０−３２６２２５号公開公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献１のような従来のメモリ制御装置にあっては、以下のような問題点があった。
【００１２】
メモリバンク構造（例えばＤｙｎａｍｉｃ  ＲＡＭが８バンク）を有しているＳＤＲＡＭなどを使用する場合、同一メモリバンクで基本管理単位であるページ長（例えば１０２４Byte）を跨ぐアクセスを行うと、前後処理のためアクセス効率が半分以下に低下する。逆に、異なるメモリバンクであれば、ページ長を跨ぐアクセスであっても前後処理が隠蔽されるため、アクセス効率は低下しない。このようなＳＤＲＡＭの特性から、後者になるようなメモリアドレッシングを実施するか、同一メモリバンク内でページ長を跨がないアドレッシングを実施するかのいずれかが高効率制御には不可欠である。以上のように、ＳＤＲＡＭの制約を回避するような制御が必要である。
【００１３】
一方、キャッシュを用いると、メモリへのアクセスはキャッシュ内にデータが無くなった場合にだけ生じるため予測しにくい。また、マスターからのアクセス単位は、短いほど無駄が生じない。例えば、ＣＰＵなどのプロセッサは３２Byte程度のアクセス単位であり、ＳＤＲＡＭのページ長１０２４Byte程度に比べて小さい。この結果、メモリへのアクセスはランダムで短いアクセス単位になることが多い。
【００１４】
また、マスターのアクセスに連動してキャッシュも動作するため、同時刻にマスターが１つのキャッシュしかアクセスできないと、同時刻にメモリにアクセスするキャッシュは１つかせいぜい２つ程度である。ここで２つになるのは、一方のキャッシュの終了動作が遅れ、もう一方のキャッシュの動作が開始する場合などで生じる。もちろん、遅れが極端に長くなるにつれ終了と開始が重畳し同時刻にアクセスする数も増えるが、このような場合は、マスター１１から１６がキャッシュ３１から３７に順番にアクセスするような数少ない条件でしか生じない。
【００１５】
以上のことから、１つか２つのキャッシュが順次メモリをアクセスすることになる。アクセス制御装置５１もしくは５２は、その順序に従ってＳＤＲＡＭを制御するしかなく、前述したＳＤＲＡＭの制約でアクセス効率が低下する場合であっても、それを回避することができない。即ち、従来のメモリ制御装置では、ＳＤＲＡＭ等の最適な制御が困難である。
【００１６】
このように、キャッシュが複数あっても同時刻に活性化しているキャッシュは、マスターからアクセスを受けたキャッシュと、メモリへのアクセスを行うキャッシュのたかだか２つである。従って、結局マスターとキャッシュを繋ぐバス２１がボトルネックになってしまう。これを解消するにはバス２１のアクセス幅を増加させる必要があるが、マスター全てに対策が必要なことから回路的に高価になる。また、マスターのアクセスの基本単位が比例して長くなるので、例えばランダムアクセスのような細かいアドレッシングを行うものには性能的に不利である。
【００１７】
同様に、メモリが複数あっても同時にキャッシュからアクセスできなければ、結局キャッシュとメモリを繋ぐバス４１がボトルネックになってしまう。これを解消するにはバス４１のアクセス幅を増加させる必要があるが、ＳＤＲＡＭなどのメモリのバス幅の変更は、例えばＬＳＩや基板の端子数増加につながるため困難なこともある。
【００１８】
さらに、従来のメモリ制御装置では、複数のマスターが特定のキャッシュを割り当てるため、キャッシュどうしで同じアドレスを管理してしまうことも考えられる。例えば、マスター１１がキャッシュ３１に対してアドレスＸ番地にデータＹを書くとする。一方、マスター１２がキャッシュ３２に対してアドレスＸ番地からデータを読むとする。この場合、キャッシュが異なるので、マスター１１が書いたデータＹはマスター１２から読めない。
【００１９】
もう一つの例として、マスター１１がキャッシュ３１に対してアドレスＸ番地にデータＹを書くとする。遅れて、マスター１２がキャッシュ３２に対してアドレスＸ番地にデータＺを書くとする。この場合もキャッシュが異なるので、最終のメモリに書かれるものはＹかＺかを保証できない。これは、キャッシュの書き出す順序が保証されていないためである。
【００２０】
これらは、コヒーレンス（一貫性）を欠く操作になるため、以下のいずれかを選択しなければならない。さもなければ、システム内でデータの加工順などが入れ替わって予期せぬ結果になったり、ハングアップなど致命的な状態になったりすることになる。
【００２１】
１つは、ソフトウェア等で、明らかにマスターごとに違うアドレスをアクセスするようにマスターを制御することである。もう１つは、ハードウェアで、マスターのアクセスを例えばキャッシュ制御装置３０２で常に監視し、マスターが指定していないキャッシュ内に該当データを見つけた場合、その見つかったキャッシュの内容を一旦メモリに書き出したり無効化したりすることである。
【００２２】
前者は完全なコヒーレンスは実現できないが安価である。後者は完全なコヒーレンスが実現できるが、キャッシュ内で管理しているアドレスの総チェックが必要なため高価で、コンフリクト時には余分なメモリアクセスが生じ性能も劣化する。
【００２３】
また前者を採用する場合、例えばマスター１１で画像の加工、マスター１２で加工された画像を再加工するには、同じデータをアクセスするため同じキャッシュを指定せざるを得ない。従って、一連のデータ加工においては、同じキャッシュグループを指定することが多く、使用されないキャッシュが出てくる可能性がある。
【００２４】
従って、いずれを選択しても、コヒーレンスを保証するには大きな制約が課せられる。
【課題を解決するための手段】
【００２５】
複数のメモリバンクで構成されるメモリ装置と、複数のマスター装置のアクセスを受け付けるバスマトリクスと、前記バスマトリクスからアクセスされ一時的なデータを格納する複数のキャッシュと、複数の前記キャッシュからアクセスされその１つを選び前記メモリ装置にアクセスするアクセス制御装置とで構成する。
【００２６】
複数の前記キャッシュの数は前記メモリ装置のメモリバンクの数に等しく、前記バスマトリクスは複数の前記マスター装置のアドレス情報のうち前記メモリバンクに対応する前記キャッシュを同時にアクセスし、また重複する前記メモリバンクへのアクセスがあれば１つに調停し、前記アクセス制御装置は前記メモリ装置のメモリバンクの状態を管理し最も早くアクセスできる前記キャッシュのアクセスを選ぶ。
【発明の効果】
【００２７】
本発明によれば、複数のマスターが同時にアクセスしても、同時にキャッシュもしくはバッファにアクセスが可能であるため、実装するメモリの性能（物理帯域）を超える性能（論理帯域）が実現できる。論理帯域はキャッシュの数に比例するため、システムの要求に合わせてキャッシュを増減すればいいだけである。
【００２８】
キャッシュにはマスターごとではなく、ＳＤＲＡＭ等が管理するバンクに対応させるので、マスターに対して均一なアクセス性能を提供する。それとともに、複数キャッシュが同時にメモリアクセスする相乗効果が生じ、ＳＤＲＡＭ等に最も適したアクセスを行うことができる。従って、ＳＤＲＡＭ等の最大性能を引き出すことができる。また、限られたキャッシュを満遍に隈なく使用できる。
【００２９】
しかも、ＳＤＲＡＭ等が管理するバンク即ちマスターが指定するアドレスで均等かつ排他的に振り分けるため、それぞれのキャッシュ間のコヒーレンスは完全に保たれる。それにかかるコストも、マスター間およびキャッシュ内の相互チェックだけを行うだけなので比較的小さい。
【００３０】
使用するＳＤＲＡＭ等の個数や速度などメモリシステムが変わっても、複数のキャッシュがそれらの差を吸収することから、全てマスターはこれらを全く意識する必要はない。マスター数が増えても同様である。即ち、ＳＤＲＡＭ等のメモリシステムの性能を最大限に引き出しながら、さまざまなマスター構成およびメモリ構成に対応できる柔軟さを持つ。
【００３１】
ＳＤＲＡＭ等はＲＤＲＡＭやＦＬＡＳＨ、その他のメモリで置き換えてもよいし、その実装数に制限はなく、また異なる種類のメモリの混在も可能である。
【００３２】
マスターそれぞれに対しての性能調整も容易である。これは優先順位とラウンドロビン形式の調停を組み合わせることによって成される。これにより、一部のマスターの処理を優先させたり、優先度をメモリ帯域の取得状況により変化させ、帯域を自動配分するなどの応用が可能である。
【００３３】
また、キャッシュをいくつかの領域に分け、それぞれＩＤを設けることによって、特定のマスターだけのアクセスを許可させたり、特定の領域だけキャッシュフラッシュしたりすることができる。これらは、ソフトウェアで制御できるため、システムの運用に合わせて都合よく実施可能である。
【図面の簡単な説明】
【００３４】
【図１】本発明のメモリ制御装置を説明する図である。
【図２】本発明の実施例１のバスマトリクスの動作を説明する図である。
【図３】本発明の実施例１のバスマトリクスの動作性能（密度１）を説明する図である。
【図４】本発明の実施例１のバスマトリクスの動作性能（密度０．５）を説明する図である。
【図５】本発明の実施例１のキャッシュとＳＤＲＡＭの関係を説明する図である。
【図６】本発明の実施例１のキャッシュ（倍増）とＳＤＲＡＭの関係を説明する図である。
【図７】本発明の実施例１のキャッシュ（半減）とＳＤＲＡＭの関係を説明する図である。
【図８】本発明の実施例１のキャッシュとＳＤＲＡＭ（２個）の関係を説明する図である。
【図９】本発明の実施例１のＳＤＲＡＭ内のバンクのアクセスを説明する図である。
【図１０】本発明の実施例１のＳＤＲＡＭ内のアクセスの選択を説明する図である。
【図１１】本発明の実施例１のＳＤＲＡＭ（同一特性）への分配を説明する図である。
【図１２】本発明の実施例１のＳＤＲＡＭ（異なる特性）への分配を説明する図である。
【図１３】本発明の実施例２のバスマトリクスの動作を説明する図である。
【図１４】本発明の実施例２の調停動作を説明する図である。
【図１５】本発明の実施例２の調停によるアクセス動作を説明する図である。
【図１６】本発明の実施例３のＳＤＲＡＭの構成を説明する図である。
【図１７】本発明の実施例３のアドレスマッピング（性能重視）を説明する図である。
【図１８】本発明の実施例３のアドレスマッピング（電力重視）を説明する図である。
【図１９】本発明の実施例４のキャッシュのＩＤ付与による動作を説明する図である。
【図２０】従来のメモリ制御装置を説明する図である。
【発明を実施するための形態】
【００３５】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【実施例１】
【００３６】
本発明の実施例１に係るメモリ制御装置について説明する。本実施の形態は、図１を用いて、計算機システムで広く使われているＳＤＲＡＭを適応した例で説明する。
【００３７】
図1において、１１から１６は任意の制御装置であるマスター、２１はマスターのアクセスをアドレスを参照して均一に分離しアクセスの衝突があれば調停を行うバスマトリクス、３１から３８はデータを一時蓄えるキャッシュ、４１はキャッシュ３１から３８のアクセスをＳＤＲＡＭターゲットごとにアドレスを参照して分離する分離装置、５１と５２は複数のメモリアクセスの要求からＳＤＲＡＭに最適なアクセスを選び出すアクセス制御装置、６１と６２はそれぞれＳＤＲＡＭである。ここで１は、バスマトリクス２１、キャッシュ３１から３８、分離装置４１、アクセス制御装置５１と５２、からなる本発明のメモリ制御装置である。
【００３８】
バスマトリクス２１は、マスター１１から１６の６つのアクセスを、キャッシュ３１から３８への８つアクセスに接続する。図２はこの接続を示したものである。図２において、２１１から２１８は同一キャッシュへアクセスするアクセスを集め、１つのアクセスを選択する調停装置である。説明の簡単のため、マスター１１から１６のそれぞれと、調停装置２１１との接続だけを示している。実際は、調停装置２１２から２１８も同様にマスター１１から１６のそれぞれに接続する。なお、調停装置２１１から２１８は全く同じ構造のものである。
【００３９】
調停装置２１１から２１８のそれぞれには、選択装置が組み込まれている。ここも説明の簡単のため、調停装置２１１内の２１１１の選択装置だけを示している。選択装置２１１１はセレクタ信号により、キャッシュ３１に対応するアクセスだけを抽出するフィルタの働きをする。
【００４０】
セレクタ信号はキャッシュ３１から３８を選択する番号であり、調整装置２１１から２１８それぞれの順番に等しい。例えば、調整装置２１１は０、調整装置２１２は１、調整装置２１８は７といった具合である。このセレクタ信号と、マスターのアドレス信号を比較することで、選択装置２２１のフィルタが実施される。アドレス信号の参照ビットは予め指定しておいてもよいし、レジスタ等で指示してもよい。
【００４１】
例えば、バイト単位でアクセスするアドレス信号が３２ビットあるものとする。下位６，５，４ビット目が参照ビットになるよう予め指定しておくと、アドレス０〜１５までのアクセスは下位６，５，４ビット目が全て０なので、選択装置２３１のセレクタ信号の０と一致し通過する。アドレス１６〜１２７までのアクセスは下位６，５，４ビット目が全て０でないので遮断する。アドレス１２８〜１４３はアドレス０〜１５の場合の動作と同じく通過、アドレス１４４〜２５５はアドレス１６〜１２７の場合の動作と同じく遮断、以下この繰り返しである。
【００４２】
調停装置２１２から２１８はセレクタ信号が１から７になるだけで、それぞれ下位６，５，４ビット目を参照し、同様のフィルタ処理を行う。
【００４３】
アドレスの参照ビットは、ＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）方向にすると、キャッシュ３１から３８に細かい単位で振り分けることになる。逆に、ＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）方向にすると、キャッシュ３１から３８に粗い単位で振り分けることになる。例えば、画像データは連続したアドレス領域に格納することが多いが、前者だと小さい単位でキャッシュ３１から３８にアクセスを配分することになる。後者だと、全てもしくは大きな単位で特定のキャッシュにアクセスを行うことになる。これらは、実施例３の説明でさらに詳細な説明を行う。
【００４４】
選択装置２１１１を通過したアクセスは、最大、マスターの数だけ存在する。これらを均一に処理するため、ラウンドロビン形式で調停するものとする。ラウンドロビン形式は、例えば、マスターの番号を指定するポインタを持ち、競合時はそのポインタが指し示す最も近くのマスターを選択するものである。ポインタはアクセスが成功するとそのマスターもしくはそのマスター＋１のポインタを指し、マスターの数を超える数字になるとマスターの数を減算する。即ちポインタは巡回する。このような方式をとると、競合アクセスで選ばれなかったアクセスは保留され、次のタイミングで同様の調停を受け、ポインタが一巡するまでには必ずアクセスが実施される。
【００４５】
なお、調停の形式は、ランダムな数字を発生させ、それをポインタにするものや、マスター番号の昇順もしくは降順で画一的に選択するものなどさまざまなものがある。しかしながら、調停の形式によって本発明の本質が何ら変わることはない。
【００４６】
調停装置２１２から２１８は、それぞれキャッシュ３１から３８に対応しており、同時に動作できる。このことから、マスター１１から１６のそれぞれは、同じキャッシュに対する競合が生じなければ、同時にキャッシュにアクセスすることが可能である。これは、キャッシュ３１から３８は同時に活性化できることを意味する。
【００４７】
競合は常に生じるものではないが、生じた場合はアクセス時間（レイテンシ）が延びて、アクセス性能が劣化する。図３に、８個のマスターと８個のキャッシュに対応するモデルを用いて、読み出しのランダムアクセスを実施した場合のレイテンシの分布を示す。横軸がレイテンシを示し、縦軸が分布Ｐ（％）を示す。また、棒グラフ（実線）はシミュレーション値、点線は理論値である。
【００４８】
次に、マスターのアクセス密度を半分、例えば、２サイクルに１回の割合のアクセスに変更した場合を図４に示す。
【００４９】
マスターがアクセスを行いデータが戻ってくるまでには、いくつかのフリップフロップで構成されるパイプライン遅延が加算される。図３と図４において、レイテンシが９から始まるのは、このモデルにおいて競合がなくてもこの遅延が生じるためである。遅延は、計算機システム上必ず生じるものであり、動作周波数や構成によってその値は異なる。
【００５０】
図３と図４の分布Ｐ（％）の統計上の理論値は、上記の初期レイテンシを引いた相対レイテンシｘ、１サイクルあたりのアクセス密度ρを用いて次のように計算できる。ここで、ｅｘｐ（）はネイピアｅの指数関数である。
【００５１】
Ｐ（ｘ）＝１００・ｅｘｐ（−ρ）・（１−ｅｘｐ（−ρ））＾ｘ．
【００５２】
図３と図４において、レイテンシｘとレイテンシの分布Ｐを掛け積分すると、レイテンシの期待値が算出できる。図３のマスターが常にアクセスする状態（ρ＝１）で１０、図４のマスターが１／２の割合でアクセスする状態（ρ＝０．５）で９．５となる。このことから分かるように、それぞれ初期レイテンシ９に比べ大きく性能劣化は生じていない。なお、実施例１の場合はマスター数が６であるから、マスター１１から１６が全てアクセスする状態なら、ρの最大は６／８である。
【００５３】
通常の計算機システムにおいて、全てのマスターが常にアクセスを行う機会は少なく、実際のρは１より小さくなる。即ち、レイテンシ増加は、ρ＝１の場合の１より小さくなる。このように、バスマトリクス２１の構成は、マスターが全てのキャッシュにアクセスできることに加え、最大、キャッシュのアクセス性能ｘキャッシュの実装数８の性能（論理帯域）まで発揮させることができる。
【００５４】
バスマトリクス２１で振り分けられたアクセスは、キャッシュ３１から３８のそれぞれに接続する。それぞれのキャッシュの動作は、一般的な計算機で使用するキャッシュに相当する。
【００５５】
キャッシュ３１から３８は、ＳＤＲＡＭ６１とＳＤＲＡＭ６２のバンク数に対応して８個ある。図５を用いて説明する。図５において、６３１から６３８はそれぞれＳＤＲＡＭ内の８つに分けられたＤＲＡＭバンク、６４１はＳＤＲＡＭ全体の制御とＤＲＡＭバンク６３１から６３８へのアクセスの分離を行うＳＤＲＡＭ制御装置である。説明の簡単のため、キャッシュ３１から３８のそれぞれと、ＳＤＲＡＭ６１との接続だけを示している。
【００５６】
図５に示すように、キャッシュ３１とＤＲＡＭバンク６３１、キャッシュ３２とＤＲＡＭバンク６３２というように、データの格納は１対１に対応する。従って、アクセス制御装置５１とＳＤＲＡＭ制御装置６４１が多重化と逆多重化を行うことになる。分離装置４１に関しては後述する。
【００５７】
ＳＤＲＡＭ制御装置６４１は、ＤＲＡＭバンク６３１から６３８のそれぞれに対し、ＤＲＡＭの特徴である活性化（Activate）、データのアクセス、非活性化（Pre-Charge）を順に実施する。データのアクセス期間だけが、実際のデータの読み書きに使用される。
【００５８】
図９を用いて簡単に説明する。図９において、横軸が時間、縦軸がＳＤＲＡＭ制御装置６４１および８個のＤＲＡＭバンク６３１から６３８における作業の様子を示す。ＳＤＲＡＭ制御装置６４１の作業は、読み出しデータのアクセス期間だけを実線で示している。８個のＤＲＡＭバンク６３１から６３８の作業は、Activate、Pre-Chargeを点線で、読み出しデータのアクセス期間を実線で示している。
【００５９】
ＳＤＲＡＭにとって最も最適な制御は、最大性能を得るため、物理的に接続されたデータ端子を常にデータの送受信のために使うことである。即ち、図９のＳＤＲＡＭ制御装置６４１の実線に隙間がなければいいことになる。キャッシュ３１から３８のアクセスの基本単位は従来のメモリ制御装置の説明で示したように、ＳＤＲＡＭのページ長より短くなることから、それぞれのＤＲＡＭバンクの読み出しデータのアクセス期間を、図８のようにバンクを細かく切り替えながら隙間なく並べる制御を行わなければいけない。
【００６０】
ただし、それぞれのＤＲＡＭバンクのActivateとPre-Chargeがデータのアクセス期間の前後に必要なことから、一度使用したＤＲＡＭバンクは直ぐには使用できない。例えば図７において、ＤＲＡＭバンク６３１が１−２のタイミングでデータをアクセスしたとすると、続くPre-Chargeのタイミング１−３では、次のActivateのタイミング２−１を重ねることができない。また、Activateのタイミング１−１、２−１分の遅延を考慮して実際のデータアクセスを行う必要がある。
【００６１】
本実施例では、ＤＲＡＭバンク６３１から６３８に対応するそれぞれのキャッシュは、同時にアクセス要求を行う。これは、複数のマスターが同時にまた均等にアクセスを振り分けているためである。そこで、アクセス制御装置５１は、各タイミングの重ね合わせに最適なＤＲＡＭバンクを選び、それに対応するキャッシュのアクセスをＳＤＲＡＭ６１に渡す。
【００６２】
アクセス制御装置５１の制御は、図９の各期間をテーブルで管理する。例えば、Activate、データのアクセス、Pre-Chargeの各期間を時間パラメータとして予め与え、アクセスが生じるたびにＤＲＡＭバンク６３１から６３８ごとに用意した予約テーブルに記録してゆく。
【００６３】
アクセス制御装置５１は予約テーブルを見て、予約されていないＤＲＡＭバンクを選び出し、それに対するキャッシュアクセスを選択するとともに、予約テーブルに予約開始を指示する。予約テーブルは予約開始が指示されると、該当するＤＲＡＭバンク用のカウンタにそれぞれの時間パラメータの合計をセットする。そして時間が経つごとに、それらのカウンタをデクリメントする。このカウンタが非０を示すＤＲＡＭバンクが予約されているとみなされる。
【００６４】
ただし、ＳＤＲＡＭは同じＤＲＡＭバンクアクセスでも、ＳＤＲＡＭのページ長内であればActivate作業は不要なため、例え予約されていても、直前の履歴を見てアクセスを許可する。図９において、８−２に続く８−３がそれを示している。
【００６５】
また、アクセス制御装置５１は、データのアクセス期間に該当するデータの読み書きを行うように、予約テーブルを参照してデータのアクセスタイミングを割り出す。具体的には、Pre-Charge期間＜カウンタの値＜Pre-Charge期間＋データのアクセス期間の真偽で判断する。
【００６６】
なお、読み出しに続く書き込み、もしくは書き込みに続く読み出しは、端子の入出力の切り替えが発生し、電気的な特性を考慮して通常１サイクル程度遅延させる必要がある。これを避けるため、読み出しもしくは書き込みが連続になるように制御してもよい。
【００６７】
図１０は、アクセス制御装置５１において、ＳＤＲＡＭ６１にアクセスできるキャッシュアクセスの選別に関するフローチャートを示している。アクセス制御装置５１は、キャッシュ３１から３８についてこの検査を行い、最後に残ったものを調停して実際にＳＤＲＡＭ６１にアクセスする。
【００６８】
調停に関しては、キャッシュ３１から３８それぞれに関係なく均一なアクセスを行うため、調停装置２１２から２１８で実施したようにラウンドロビンによる巡回型の調停を行うものとする。前述したように、調停の形式は変更してもよい。例えば、同一のキャッシュがＳＤＲＡＭのページ内に連続してアクセスする場合がある。このとき他のキャッシュはアクセスができないため、マスターから見て偏ったレイテンシが生じる。これを防ぐため、同一キャッシュの連続アクセス数の上限を定め、上限を超える場合は調停の優先度を下げるなどが考えられる。
【００６９】
図７に示したように、キャッシュ３１から３８と、ＤＲＡＭバンク６３１から６３８はそれぞれ１対１で関連付けられている。しかしマスター数が増えた場合、キャッシュも増やし論理帯域を上げたい場合がある。
【００７０】
ＳＤＲＡＭのＤＲＡＭバンク数は４個や８個など既に決定していることが多い。従って、キャッシュを増やす場合は、ＤＲＡＭバンクの数よりキャッシュの数が多くなる場合がある。このような場合は、ＤＲＡＭバンクの数の整数倍の数でキャッシュを構成する。図６を用いて説明する。
【００７１】
図６は図５からキャッシュの数を２倍に増やしたものである。ここで、３１ａから３８ａと３１ｂから３８ｂは単に同じキャッシュをコピーしたもので（ただしキャッシュ容量はキャッシュ３１から３８のものと異なってもよい）、３１ｃはキャッシュ３１ａ、３１ｂのアクセスを調停する調停装置である。３２ｃから３８ｃも同様の調停装置である。
【００７２】
調停に関しては、アクセス制御装置５１と同じあり。即ち、キャッシュそれぞれに関係なく均一なアクセスを行うため、調停装置２２２から２２８で実施したようにラウンドロビンによる巡回型の調停を行うものとする。前述したように、調停の形式は変更してもよい。
【００７３】
図６から分かるように、アクセス制御装置５１から見て、キャッシュ３１ａと３１ｂおよび調整装置３１ｃは、キャッシュ３１と等価である。従って、ＳＤＲＡＭのＤＲＡＭバンクを最適制御する上で、アクセス制御装置５１は特別なことをしなくてよい。その他のキャッシュ３２ａから３８ａ、キャッシュ３２ｂから３８ｂも同様である。
【００７４】
以上のように、キャッシュの数を増やしても、ＳＤＲＡＭ６１、６２を変えることなくマスターから見た論理帯域を増やすとともに、ＳＤＲＡＭの最適制御を行うことが可能である。キャッシュの数が２倍の場合以外も同様である。
【００７５】
逆に、マスター数が減る場合、キャッシュも減らしコストを削減したい場合がある。
【００７６】
上述したように、ＳＤＲＡＭのＤＲＡＭバンク数は変えないこととする。従って、キャッシュを減らす場合は、ＤＲＡＭバンクの数よりキャッシュの数が少なくなる。このような場合は、ＤＲＡＭバンクの数の１／２、１／４と２の累乗分の１のキャッシュの数で構成する。図７を用いて説明する。
【００７７】
図７は図５からキャッシュの数を１／２に減らしたものである。ここでは、キャッシュ３２、３４、３６、３８を間引く。また、間引いたキャッシュのアクセス分は、隣合うキャッシュ３１、３３、３５、３７のアクセスを分離装置４１に入れる。ただし、元のキャッシュ３１、３３、３５、３７のアクセスと、キャッシュ３２、３４、３６、３８の代わりに入れるアクセスは、アドレスのいずれかのビットでアクセスを排他的にマスクする。例えば、アドレスのＬＳＢが０だとキャッシュ３１、３３、３５、３７分のアクセスだけ、ＬＳＢが１だとキャッシュ３２、３４、３６、３８分のアクセスだけなど、奇数偶数でアクセスを分ける。
【００７８】
図７から分かるように、アクセス制御装置５１から見て間引かれたキャッシュ３２のアクセスは、キャッシュ３１のアクセスが兼ねる。しかし、前述したアクセスのマスクを行っているため、同時にアクセスすることはない。従って、ＳＤＲＡＭのＤＲＡＭバンク６３１か６３２かのいずれかしか選択しない。その他のキャッシュも同様である。
【００７９】
従って、キャッシュが８個だった場合に比べると、アクセスを選ぶ際の選択肢が少なくなるため、ＤＲＡＭバンクのＳＤＲＡＭの最適な制御はできない。このため、キャッシュの数を減らしてコストを削減するよりも、キャッシュ容量を減らしてコストを削減する方がよい。例えば、キャッシュ容量が３２ＫByteｘ８個であれば、３２ＫByteｘ４個にするより１６ＫByteｘ８個にする方がよい。ただし、これに限定するものではない。
【００８０】
次に、ＳＤＲＡＭ６１のＤＲＡＭバンクの数が４個に減った場合について述べる。これは比例の関係から、キャッシュの数が１６個、ＤＲＡＭバンクの数が８個の場合と同じ特徴になる。また、キャッシュの数を４個に減らせば、同じく比例の関係から、キャッシュの数が８個、ＤＲＡＭバンクの数が８個の場合と同じ特徴になる。
【００８１】
一方、キャッシュの数が８個のまま、同じＳＤＲＡＭを２個用いて見かけ上のＤＲＡＭバンクを増やし、キャッシュの数とＤＲＡＭバンクの数を一致させる方法がある。図８を用いて説明する。
【００８２】
図８は図５からＳＤＲＡＭ６１が２個になり（２つのＳｅｔ）、それぞれのＤＲＡＭバンクの数が４個に減ったものである。ここで、６１ａと６１ｂはＤＲＡＭバンクの数が４個のＳＤＲＡＭ、６４１ａと６４１ｂはそれぞれＳＤＲＡＭ６１ａと６１ｂのＳＤＲＡＭ制御装置である。
【００８３】
図８から見て分かるように、キャッシュ３１から３８、分離装置４１、アクセス制御装置５１は基本的に何ら変わらない。ＳＤＲＡＭは２個になったが、図９に示す制御は同じである。ただし、アクセス制御装置５１は、ＳＤＲＡＭ６１ａと６１ｂを分けて使用するため、別々のチップセレクトを用意しなければならない。チップセレクトはアドレスに関連付けられたＤＲＡＭバンクの番号で簡単に生成できる。例えば、ＤＲＡＭバンク番号０〜３はＳＤＲＡＭ６１ａのチップセレクト、ＤＲＡＭバンク番号４〜７はＤＲＡＭ６１ｂのチップセレクトといった具合である。
【００８４】
なお、キャッシュ３１から３８のアドレス情報は排他的であり、バスマトリクス２１で振り分けに使用したビット部分がバンク情報を表す。例えば、キャッシュ３１の該当ビットは０、キャッシュ３２の該当ビットは１になっており、そのままＤＲＡＭバンク番号に相当する。
【００８５】
以上のことから、キャッシュの数とＳＤＲＡＭのＤＲＡＭバンクの数、およびＳＤＲＡＭの数の３つのパラメータで、システムの性能を調整することができる。これは、システムを決定する上で非常に柔軟な選択ができることを意味する。
【００８６】
なお、図６において、キャッシュを３１ａから３８ａだけの８個にし、特別なマスターを用意しそのアクセスを選択装置２１１１と同等の働きをするものにより８つのアクセスに振り分け、キャッシュを３１ｂから３８ｂの代わりにすることも可能である。これは、特別なマスターがキャッシュをバイパスし、ＳＤＲＡＭに直接アクセスする場合に使用する。例えば、ＣＰＵなどの既にキャッシュを持っているマスターに応用できる。
【００８７】
一方、ＳＤＲＡＭの数を増やす異なる方法として、分離装置４１を利用する場合を説明する。
【００８８】
図１において、分離装置４１はキャッシュ３１から３８の特定のアドレスビットを参照して、アクセス制御装置５１と５２に振り分ける（２つのＧｒｏｕｐ）。この動作は図２の選択装置２３１と同じく、セレクタ信号を予め与えておき、特定のアドレスのビットと比較し振り分けを実施するものである。
【００８９】
アドレスの参照ビットは、ＬＳＢ方向にすると、ＳＤＲＡＭ６１と６２に細かい単位で振り分けることになる。逆に、ＭＳＢ方向にすると、ＳＤＲＡＭ６１と６２に粗い単位で振り分けることになる。これは調停装置２１１から２１８の説明と同様である。
【００９０】
図８で示したＳＤＲＡＭを２個使うもの（２つのＳｅｔ）と違うのは、キャッシュ３１から３８が、ＳＤＲＡＭ６１とＳＤＲＡＭ６２に対して同時にアクセスできることである。例えば、キャッシュ３１がアクセス制御装置５１を通ってＳＤＲＡＭ６１にアクセスし、キャッシュ３２がアクセス制御装置５２を通ってＳＤＲＡＭ６２にアクセスすることができる。
【００９１】
このように、分離装置４１の構成は、ＳＤＲＡＭのアクセス性能ｘＳＤＲＡＭの数２個の性能（物理帯域）まで発揮させることができる。なお、分離装置４１において、アドレスにより振り分けるのではなく、キャッシュの番号を用いて排他的に振り分けてもよい。
【００９２】
しかしながら、アクセス制御装置５１と５２は、それぞれのＳＤＲＡＭだけを管理するため、相互の状態は分からない。このため、同一キャッシュにおいて、異なるＳＤＲＡＭに対するアクセスが近づくと、例えば読み出しのデータがＳＤＲＡＭ６１のものとＳＤＲＡＭ６２のものが重なってしまうなどの問題がある。分離装置４１はこれを解消するため、同一キャッシュで前回アクセスしたＳＤＲＡＭと異なるＳＤＲＡＭをアクセスする場合、アクセス禁止期間を自動的に挿入する。
【００９３】
図１１を用いて説明する。図１１において、横軸が時間、縦軸が分離装置４１およびＳＤＲＡＭ６１と６２における作業の様子を示す。説明の簡単のため、アクセス制御装置５１と５２の動作は割愛している。また、ＳＤＲＡＭ６１と６２の作業は、読み出しデータのアクセス期間だけをそれぞれ実線と点線で示している。分離装置４１の作業としてアクセスの発行タイミングを黒丸で、データの受け取り期間を実線と点線で示している。
【００９４】
図１１に示したように、分離装置４１は前回と異なるＳＤＲＡＭにアクセスを行う場合、予め決められたＣＹＣサイクル分の期間をアクセス禁止にする（ＣＹＣ期間内に黒丸を存在させない）。この禁止期間を作ることにより、ＳＤＲＡＭ６１と６２から読み出されるデータは重複しない。ＣＹＣサイクルは実際のデータのアクセス期間とアクセス開始までの遅延時間を加えたものである。
【００９５】
もちろん分離装置４１は、同一ＳＤＲＡＭへのアクセスが続けば、これらの禁止期間は設けない。また、異なるキャッシュが異なるＳＤＲＡＭを前回アクセスしていても、禁止期間は設けない。これは、キャッシュとしてバスが分離されているため、重複することがないからである。
【００９６】
さらに、特性の異なるＳＤＲＡＭを実装することも可能である。例えば、ＳＤＲＡＭ６２のアクセスタイムがDelta分だけ遅くなったと仮定する。この場合、図１２に示したように、遅いＳＤＲＡＭから速いＳＤＲＡＭにアクセスする場合にのみ、ＣＹＣにDeltaを加えたものをアクセス禁止期間とする。即ち、前回アクセスしたＳＤＲＡＭのアクセス期間、跨ぐアクセスを禁止することになる。これにより、遅いＳＤＲＡＭのアクセスのタイミングに合わせてアクセスを調整することができる。
【００９７】
Deltaは予め与えておくか、レジスタ等で指定する。ＳＤＲＡＭごとに異なるＣＹＣサイクルを与えて、自動的に差分を計算してもよい。また、ＳＤＲＡＭの使用するバス幅が異なると、データを多重化したり逆多重化したりして、キャッシュ３１から３８のバス幅に合わせなければならないが、アクセス制御装置５１と５２でそれらを行い、アクセスタイムの違いだけにしておけば、前述した対応だけで済む。
【００９８】
以上説明したように、分離装置４１は複数のＳＤＲＡＭへアクセスを分配し物理帯域を拡大するとともに、異なる特性のＳＤＲＡＭの実装も可能とする。これらは、キャッシュの数やマスターの数に関係がなく、システム要件により自在に変更できる。
【００９９】
なお、実施例ではＳＤＲＡＭの数を２個として説明したが、それ以上であっても分離装置４１の分岐が増えるだけで問題はない。
【０１００】
また、図８で説明したＳＤＲＡＭを複数使う方法と、図１で説明したＳＤＲＡＭを複数使う方法は組み合わせてもよい（任意のＳｅｔと任意のＧｒｏｕｐ）。組み合わせることによって、物理帯域の拡大とＳＤＲＡＭのアクセス効率の向上がともに図れる。
【０１０１】
さらに、ＳＤＲＡＭの代わりにＲＤＲＡＭやＦＬＡＳＨメモリなど、バンク構造を採用しているメモリにも応用できる。
【実施例２】
【０１０２】
本発明の実施例２に係るメモリ制御装置について説明する。本実施の形態は、実施例１を参照しながら説明する。
【０１０３】
マスター１１から１６のアクセスは、バスマトリクス２１によって所望のキャッシュ３１から３８に到達するが、到達時刻はバスマトリクス２１の調停次第であり保証できない。例えば、マスター１１がキャッシュ３１とキャッシュ３２に続けてアクセスする場合、キャッシュ３１にアクセスが到達する時刻と、キャッシュ３２にアクセスが到達する時刻には揺らぎが生じる。このため、アクセスの前後が入れ替わる可能性がある。
【０１０４】
アクセスの前後が入れ替わると、マスターのデータ管理もそれに合わせて入れ替えなければならない。例えば、マスター１１がアドレスＡをキャッシュ３１に要求しデータＸが返るとする。一方、アドレスＢをキャッシュ３２に要求しデータＹが返るとする。この場合、Ｘ，Ｙの順でなく、Ｙ，Ｘの順でデータが返ることがある。このデータの入れ替わり情報をマスターに返すことで、マスターはデータの処理の順番を入れ替えなけねばならない（Out-of-Order制御）。
【０１０５】
これらは、マスターの作り方にも依存するため、対応できないマスターであれば接続できない。本実施例では、内部で順序を整えてこれを解消する、In-Order制御について図１３を用いて説明する。
【０１０６】
図１３において、７１から７６はそれぞれマスター１１から１６に対応するインターフェイス装置である。インターフェイス装置７１から７６は、マスター１１から１６とバスマトリクス２１間のブリッジとなる。インターフェイス装置７１から７６は同じ構造で同じ動作を行うため、インターフェイス装置７１だけ詳細に説明する。
【０１０７】
インターフェイス装置７１は、７１１のバースト分解装置、７１２の書き込みバッファ、７１３の読み出しバッファからなる。
【０１０８】
バースト分解装置７１１は、マスター１１がバーストアクセスを行う場合、それらを最小のアクセス単位であるワードに分解する。分解することで、これ以降のキャッシュなどの装置は、バーストを考慮する必要がなくなり、ワード単位の制御に簡単化できる。また、バースト単位で処理を行うと、個々のマスターに対するレイテンシが積算してしまうが、ワードに分解することで、レイテンシも平均化できる。
【０１０９】
例えば、マスター全てが１６ワードのバーストアクセスをする場合、実際のデータをアクセスできるタイミングは、最悪で調停１巡分の１６ワードｘ６マスター＝９６サイクルになる。一方、ワードに分解していると、調停１巡分は１ワードｘ６マスター＝６サイクルで済む。もちろん、全体的に遅延が平均化するだけで、スループット性能が変わるわけではない。
【０１１０】
バスマトリクス２１は調停を行う際、ユニークな数字のタグを生成する。タグは例えば、マスターの番号とアクセスした順番もしくは時刻などを組み合わせて生成する。
【０１１１】
マスター１１が書き込みアクセスを行うと、タグを生成しバッファ７１２に伝える。一方バッファ７１２は、マスター１１からの書き込みデータを蓄積しておく。蓄積可能なことから、マスター１１が書き込みで待たされることはバッファ７１２が満杯でない限りない。
【０１１２】
タグは書き込み順を情報として持っているため、バッファ７１２に対しそれを用いて、該当するデータを引き出す。引き出されたデータは、調停後のアクセス順に従いキャッシュ３１に書き込まれる。このように、マスター１１はバッファ７１２に対してIn-Order制御、バッファ７１２はキャッシュ３１に対してOut-of-Order制御となる。
【０１１３】
マスター１１が読み出しアクセスを行うと、同様にタグを生成しキャッシュ３１に伝える。キャッシュ３１はデータを返すまでタグを保存し、最終的にデータとタグをセットにしてバッファ７１３に返す。
【０１１４】
バッファ７１３はマスター１１が期待するアクセス順のデータが返ってくるかをタグによりチェックしており、有効なタグが返ってくればそのままマスター１１に返す。また、無効なタグが帰ってくれば蓄積しておく。もちろん、蓄積したデータでマスター１１へ返せるものがあれば、その蓄積したデータを返す。このように、マスター１１はバッファ７１３に対してIn-Order制御、バッファ７１３はキャッシュ３１に対してOut-of-Order制御となる。
【０１１５】
以上は、マスター１１以外のマスター、キャッシュ３１以外のキャッシュも同様である。このように、マスターはIn-Orderで処理することが可能で、本実施例のメモリ制御装置はOut-of-Orderで最適なアクセス順を選び処理することが可能である。
【０１１６】
次に、バスマトリクス２１の調停方式について詳しく説明する。
【０１１７】
ここで、マスター１１から１６のアクセスは特に同期しておらず、任意にアクセスできるものとする。例えば、マスター１１は時間内に画像の一定量を処理し外部に出力するものとし、マスター１２は時間制約なく別の画像を初期化するものとする。
【０１１８】
マスター１１とマスター１２は共にアクセス要求を常に出せるものとし、ＳＤＲＡＭ６１に対するアクセスのみを行うものとする。また、マスターそれぞれの論理帯域と、アクセス制御装置５１とＳＤＲＡＭ６１間の物理帯域とは等しいものとする。
【０１１９】
この例では、マスター１１とマスター１２はＳＤＲＡＭ６１をターゲットにアクセスを行うため、キャッシュ３１から３８にデータが常にない状態（キャッシュミス）だと、アクセス制御装置５１とＳＤＲＡＭ６１間の物理帯域がボトルネックになる。従って、マスター２個の論理帯域は、ＳＤＲＡＭの物理帯域を分け合うことになる。
【０１２０】
ここで、実施例１で示したように、調停装置２１１から２１８がラウンドロビン形式でアクセスを調停すると、マスター１１とマスター１２のアクセスは交互に受け付けられることになる。これは、マスター１１にとって論理帯域の最大近くの作業が必要になると、時間内に処理できなくなるといった不都合が生じる。
【０１２１】
このため、調停装置２１１から２１８は優先度制御を行うようにする。図１４を用いて、調停装置２１１に対する優先度制御を説明する。調停装置２１２から２１８は同じ構造なので説明を割愛する。
【０１２２】
図１４において、２１１２から２１１５は優先度選択装置、２１１６から２１１９はラウンドロビン調停装置、２１２０は優先調停装置である。また、マスター１１から１６は、任意のタイミングで優先度Priorityを２ビットで指示するものとする。優先度Priorityは、数字が大きいほど優先度が高いことを示す。
【０１２３】
実施例１で説明したように、選択装置２１１１はキャッシュ３１から３８それぞれに対するアクセスを選択する。図１４では簡単のため、キャッシュ３１に対する選択だけを記載している。選択装置２１１１でマスターごとにキャッシュ３１に対するアクセスを抽出した後、それらは全て優先度選択装置２１１２から２１１５に入力する。
【０１２４】
優先度選択装置２１１２は優先度Priorityが０のものだけを、優先度選択装置２１１３は優先度Priorityが１のものだけを、優先度選択装置２１１４は優先度Priorityが２のものだけを、優先度選択装置２１１５は優先度Priorityが３のものだけを抽出する。その抽出結果は、ラウンドロビン調停装置２１１６から２１１９にそれぞれ入力する。
【０１２５】
ラウンドロビン調停装置２１１６から２１１９は、実施例１で説明した調停装置２１１の役割を装置として置き換えたもので、全て同じ動作を行う。
【０１２６】
優先調停装置２１２０は、ラウンドロビン調停装置２１１６から２１１９の結果から、キャッシュ３１への最終的なアクセスを選択する。選択にあたっては、ラウンドロビン調停装置２１１６＜ラウンドロビン調停装置２１１７＜ラウンドロビン調停装置２１１８＜ラウンドロビン調停装置２１１９の順で優先的に決定する。例えば、ラウンドロビン調停装置２１１９にアクセスがあれば（ない場合は優先度Priorityが３を指示したマスターが存在しない）、他のラウンドロビン調停装置の結果に関係なくそれを最終的なアクセスとする。
【０１２７】
以上のことから、マスターが急を要するアクセスには、高い優先度Priorityを指示することにより、帯域を優先的に割り当てることができる。例えば、マスター１１は時間内に処理するため、高い優先度Priorityを指示しておく。次に、マスター１２は時間制約がないため、低い優先度Priorityを指示しておく。このようにすれば、競合してもマスター１１が優先的にアクセスできることになり、マスター１１に与えられた制約を満たすことができる。
【０１２８】
さらに、優先度Priorityを動的に制御すれば、マスターごとに任意の帯域を与える制御が可能である。以下、詳細に説明する。
【０１２９】
例えば、実現可能な目標帯域をそれぞれのマスターで設定する。それぞれのマスターにおいて、アクセス要求が受け付けられればアクセス分を加算、そうでない場合は１サイクルごともしくはシステムのタイマーを使用して一定間隔ごとに目標帯域分を減算する差分カウンターを備える。
【０１３０】
このカウンターの値の範囲を３レベル設定しておき、それにより優先度Priorityに＋１、±０、−１を加え修正する。なお、優先度Priorityは、アクセスそのものに直接影響しないので任意のタイミングで制御する。
【０１３１】
また、一定の条件で制御させるため、それぞれのマスターのベースとなる優先度Priorityを、１もしくは２のいずれかに定めておく。
【０１３２】
この手法は、安定的なフィードバック制御となり、使用帯域を目標帯域に収束させる。図１５に、８個のマスターと８個のキャッシュで構成される本実施例のメモリ制御装置をモデル化し、ランダムなアドレスとバースト長４でシミュレーションした波形を示す。ここで、Diff Countは上述した差分カウンター、Priorityは上述した優先度Priorityの修正分、Allocationはマスターのアクセス要求が受け付けられた瞬間を示す（バースト長４なので、データの数はこれに４を掛けたものになる）。また、これらの添え字はマスターの番号であり、横軸はシミュレーション時間の一部である。マスター０と１は１／１６、マスター２と３は１／８、マスター４と５は１／４、マスター６は１５／１６、マスター７は１／１の相対的な目標帯域を設定してある。
【０１３３】
図１５のAllocationから分かるように、目標帯域を多く設定したマスターのアクセスが相対的に多く受け付けられているのが分かる。また、マスターの帯域取得状況が分かるDiff Countを見ると、目標帯域を低く設定したマスターは十分な帯域を取得しているためPriorityが小さくなっており、逆に目標帯域を高く設定したマスターは取得帯域が目標帯域の前後で振れいているためPriorityも振られている。
【０１３４】
以上のように、優先度Priorityを設定し、それに応じてキャッシュへアクセスを配分することで、帯域制御が可能な柔軟性の高いメモリ制御装置が提供できる。
【０１３５】
なお、優先度Priorityは２ビットで説明したが、さらにビット数を上げ粒度を増やしてもよいし、逆にビット数を下げ粗く制御してもよい。また、目標帯域に対する制御をマスターでなく、本実施例のメモリ制御装置で実施してもよい。
【０１３６】
さらに、本実施例の調停装置を外部に複製し、マスター数を増やしてもよい。例えば、マスター１１の代わりに６個のマスターを調停する調停装置を取り付ければ、さらに６個のマスターが拡張できる（残り５個＋６個の合計１１個）。ただし、拡張した調停装置でアクセスが束ねられるので、拡張した複数のマスターはキャッシュに対して同時アクセスできない。
【実施例３】
【０１３７】
本発明の実施例３に係るメモリ制御装置について説明する。本実施の形態は、実施例１を参照しながら説明する。
【０１３８】
選択装置２１１１におけるキャッシュ１１から３８へのアクセスの分配（バンク分け）、分離装置４１におけるＳＤＲＡＭ６１と６２へのアクセスの分配（Ｇｒｏｕｐ分け）、アクセス制御装置５１におけるＳＤＲＡＭ６１ａと６１ｂへのアクセスの分配（Ｓｅｔ分け）のそれぞれについて説明する。
【０１３９】
選択装置２１１１と分離装置４１、およびアクセス制御装置５１にはアドレスの参照ビットをレジスタで与えることとする。調停装置２１２から２１８内の分離装置、およびアクセス制御装置５２も同様である。レジスタで与えることにより、アドレスによりどのＳＤＲＡＭおよびどのＤＲＡＭバンクにデータを格納するかのマッピングが任意に指定できる。
【０１４０】
図１６は、ＳＤＲＡＭ６１に代わり６１ａと６１ｂのＳＤＲＡＭに、ＳＤＲＡＭ６２に代わり６２ａと６２ｂのＳＤＲＡＭに、それぞれ２個づつ置き換えた構成図である。ＳＤＲＡＭ６１ａと６１ｂはＧｒｏｕｐ番号０でＳｅｔ番号がそれぞれ０と１、ＳＤＲＡＭ６２ａと６２ｂはＧｒｏｕｐ番号１でＳｅｔ番号がそれぞれ０と１とする。
【０１４１】
図１７は、アドレス４，５，６ビット目をバンク分けとして参照するよう選択装置２１１１およびその他調整装置内の選択装置に指示し、次にアドレス１２ビット目をＧｒｏｕｐ分けとして参照するよう分離装置４１に指示し、最後にアドレス１３ビット目をＳｅｔ分けとして参照するようアクセス制御装置５１と５２に指示した場合のメモリマッピングである。図１７の、Ｂ０、Ｂ１、Ｂ２はバンク分けのビット、ＧｒｐはＧｒｏｕｐ分けのビット、ＳｅｔはＳｅｔ分けのビットである。
【０１４２】
図１７に示したメモリマッピングは、データを１６ByteごとにそれぞれのＳＤＲＡＭのＤＲＡＭバンクへ、４ＫByteごとに異なるグループのＳＤＲＡＭへ、８ＫByteごとに異なるセットのＳＤＲＡＭへ分配する例である。この例では、データは細かく分断してＳＤＲＡＭに格納される。分断するとアクセスが平均化するため、複数のキャッシュと複数のＳＤＲＡＭが同時に動作することが多くなり、メモリ性能を引き出しやすい。
【０１４３】
図１８は、アドレス９，１０，１１ビット目をバンク分けとして参照するよう選択装置２１１１およびその他調整装置内の選択装置に指示し、次にアドレス３１ビット目をＧｒｏｕｐ分けとして参照するよう分離装置４１に指示し、最後にアドレス３０ビット目をＳｅｔ分けとして参照するようアクセス制御装置５１と５２に指示した場合のメモリマッピングである。図１８の、Ｂ０、Ｂ１、Ｂ２はバンク分けのビット、ＧｒｐはＧｒｏｕｐ分けのビット、ＳｅｔはＳｅｔ分けのビットである。
【０１４４】
図１８に示したメモリマッピングは、データを５１２ByteごとにそれぞれのＳＤＲＡＭのＤＲＡＭバンクへ、２ＧByteごとに異なるＧｒｏｕｐのＳＤＲＡＭへ、１ＧByteごとに異なるＳｅｔのＳＤＲＡＭへ分配する例である。この例では、データは固まってＳＤＲＡＭに格納される。固まるとアクセスが局所化するため、４個のＳＤＲＡＭが同時に動作することが少なくなり、消費電力を抑えやすい。
【０１４５】
以上のように、アドレスの任意の位置のビットを参照させることで、アクセスを任意の空間に分配することができる。なお、アドレスのビット参照位置はバラバラであっても、前後が入れ替わっても問題ない。
【０１４６】
前述した分配の全ては排他的である。例えば、選択装置２１１１で分配されるアクセスのアドレスは、完全に排他的であることから、キャッシュ内の管理も排他的である。これらは、異なるＳＤＲＡＭおよびＳＤＲＡＭ内のＤＲＡＭバンクにも当てはまる。
【０１４７】
データが排他的に管理されているため、キャッシュとＳＤＲＡＭの一貫性（コヒーレンス）は保証される。ただし、マスター１１から１６のアクセスが、調停装置２１１から２１８で調停されるまでの順序は守らなければならない。これは、前述した同一マスターのデータに関するIn-Order制御、Out-of-Order制御とは異なる。
【０１４８】
例えば、マスター１１がアドレスＡに書き込みを行い、マスター１２がアドレスＡを読み出す場合、調停装置２１１から２１８のいずれかに到達する順序さえ守られれば、キャッシュ３１から３８のいずれかでは順序通り処理をするので不整合は生じない。しかし、調停装置２１１から２１８のいずれかに到達する順序が入れ替わると、マスター１２の読み出しが先行して誤ったデータを返してしまう。
【０１４９】
調停装置２１１から２１８のいずれかに到達する順序を守る方法を説明する。マスター１１から１６の書き込みアドレスを、図１３のインターフェイス装置７１から７６のそれぞれに登録しておき、その書き込みアドレスが調停装置に到達すれば登録を抹消するようにする。登録されているアドレスは、各マスターごとに用意されたインターフェイス装置７１から７６全てから相互参照できるようにする。
【０１５０】
任意のマスターが読み出しもしくは書き込みを行う際、自らを除き、各インターフェイス装置７１から７６で登録されているアドレスとの一致を確認する。一致しなければそのままアクセスを受け付け、そうでなければアクセスを保留する。アクセスの保留は、登録されたアドレスが調停装置に到達した時点で解除される。
【０１５１】
この操作により、先行する書き込みアクセスは追い越されることがない。このような単純なアドレスの相互確認の仕組みにより、マスター間のコヒーレンスを確保することができる。
【０１５２】
次に、キャッシュがＳＤＲＡＭに対して行う、読み出しと書き込みにも注意する必要がある。例えば、マスターからの読み出しがキャッシュミスすると、新たな格納場所を空けるため一旦ＳＤＲＡＭに左記の格納場所にあったデータを書き込む。その後、必要なデータを空けた格納場所にＳＤＲＡＭから読み出す。この動作の順序も守らなければなければならない。
【０１５３】
この場合も同様に、ＳＤＲＡＭに対する書き込みアドレスを登録し、ＳＤＲＡＭに対するアドレスとの一致確認を行う。一致していれば、登録された書き込みアクセスが分離装置４１に到達するまでアクセスを保留させる。ただし、キャッシュ３１から３８はマスター１１から１６の場合と違いお互いが排他的なので、相互チェックは不要である。
【０１５４】
この操作により、先行する書き込みアクセスは追い越されることがない。このような単純なアドレスの相互確認の仕組みにより、キャッシュ内のコヒーレンスを確保することができる。
【０１５５】
以上のように、インターフェイス装置７１から７６と、キャッシュ３１から３８のそれぞれで、アドレスの相互チェック機能を導入することで、メモリ制御装置全体でのコヒーレンスを完全に保証することができる。
【０１５６】
なお、アドレスの登録および一致確認は、全てのビットに対して行う必要はない。回路規模を削減するため、ある範囲のビットだけを対象にしてもよい。ただし、ある範囲のビットだけで処理すると、アドレスの一致の疑いのあるアクセスも保留されるので、性能は劣化する。例えば、３２ビットに対して一部の１６ビットを対象にすれば、６５５３６のアクセスに一回程度（アクセス要求の頻度でさらに下がる）は、余分なアクセスの保留が生じることになる。
【実施例４】
【０１５７】
本発明の実施例４に係るメモリ制御装置について説明する。本実施の形態は、実施例１を参照しながら説明する。
【０１５８】
キャッシュ３１から３８の方式は、ダイレクトマップ、セットアソシアエイティブ、フルアソシアエイティブの任意のものを選択することができる。方式によって性能やコストは変わる。ここではいくつかの方式のうち、性能とコストのバランスに優れるセットアソシアエイティブを用いることにする。
【０１５９】
セットアソシアエイティブ型のキャッシュは、それぞれのデータ管理が排他的なＷａｙと呼ばれるバンクを持っている。即ち、Ｗａｙの１つだけにアクセスが行われる。いずれにアクセスするかは、そのときの状態に依存する。例えば、Ｗａｙが４つあり、３つには何か登録されており、１つには何も登録されていないとする。登録されているＷａｙへのアクセスは空きを作る作業が生じ性能が劣化する。そこで、何も登録されていないＷａｙへのアクセスが優先される。
【０１６０】
本実施例では、マスター１１から１６のアクセスをキャッシュ３１から３８に均等に振り分けることから、キャッシュ３１から３８のそれぞれは、複数のマスターが共有することになる。しかし、実施例２で述べたように、マスターが要求する論理帯域が違う場合、キャッシュにおいても優先的に、特定のマスターに割り当てる方が性能的に有利な場合がある。
【０１６１】
ここでは、キャッシュのＷａｙに識別子となるＩＤを付けておく。また、マスターからも、アドレスと同時にＩＤを指定してアクセスさせる。そして、ＩＤが一致するＷａｙだけがアクセスできるようにする。
【０１６２】
これは、特定のＩＤ専用のキャッシュを用意することを意味する。もちろん、異なるマスターが同じＩＤを用いてアクセスしてもよいし、マスター１つだけがユニークなＩＤを用いてアクセスしてもよい。Ｗａｙに付与するＩＤも同様である。なお、Ｗａｙに付与するＩＤは予めレジスタ等で与えておく。
【０１６３】
図１９で詳細に説明する。図１９において３１１から３１４はそれぞれ同じ動作、同じ容量の４個のＷａｙである。
【０１６４】
Ｗａｙ３１１から３１４には、それぞれＩＤとして０，０，０，１を付与しておく。マスターは任意のＩＤを指定してアクセスする。マスターが指定するＩＤが１であった場合、ＩＤ＝１が付与されたＷａｙ３１４だけがアクセスの対象となる。このＷａｙ３１４に所望のデータがあればキャッシュヒットとなり、なければキャッシュミスとなる。
【０１６５】
一方、マスターが指定するＩＤが０であった場合ＩＤ＝０が付与されたＷａｙ３１１、３１２、３１３がアクセスの対象となる。Ｗａｙに管理されているデータは排他的なので、Ｗａｙ３１１、３１２、３１３のいずれか１つだけが最後に選ばれる。
【０１６６】
しかし、マスターが指定するＩＤが２であった場合、どのＷａｙにもアクセスできない。この場合、エラーとしてアクセスを無効化するか、強制的にいずれかのＷａｙにアクセスさせるか、もしくはキャッシュをバイパスし直接メモリアクセスするか、のいずれかを選ばなくてはならない。これらは、選択して実装してもよいし、全てを実装しておいてレジスタ等で方式を切り替えてもよい。
【０１６７】
また、キャッシュにはフラッシュが必要である。フラッシュは、キャッシュに溜め込んだデータを一挙にＳＤＲＡＭに書き込み、キャッシュの内容とＳＤＲＡＭの内容を一致させるものである。キャッシュ全体にフラッシュを行うと、最大、キャッシュ容量分のメモリアクセスが生じてしまい、マスターからのアクセスが受け付けられにくくなるなど性能的に問題になることがある。
【０１６８】
本実施例では、ＷａｙにＩＤを付与しているので、特定のＩＤだけを選択してフラッシュすることが可能である。例えば、ＩＤ＝１のＷａｙ３１４だけをフラッシュするなら、キャッシュ全体のフラッシュに比べ１／４の範囲のフラッシュで済む。
【０１６９】
ここで、Ｗａｙの代わりに、特定のアドレス範囲ごとにＩＤを付与する方法もある。さらに、特定のＷａｙと特定のアドレス範囲を組み合わせてＩＤを付与する方法もある。例えば、特定のＩＤと特定のアドレス範囲の条件が合致した場合だけアクセス可能にするなどである。フラッシュにおいても、特定のＩＤでかつ特定のアドレス範囲だけフラッシュする場合なども考えれらる。
【０１７０】
なお、キャッシュのデータ入れ替え方式として、書き込むと同時にメモリにも書き込む方式と、新たなキャッシュへのアクセスにより空きがない場合だけ蓄積されたデータをメモリに退避させる方式とがあるが、本実施例のメモリ制御装置はいずれでもよい。
【０１７１】
さらに、キャッシュはFIFOなどの簡単なバッファに置き換えても、マスターが繰り返しアクセスする場合の効率が下がるだけなので、本実施例の本質には影響ない。
【産業上の利用可能性】
【０１７２】
本発明のメモリ制御装置は、計算機システムの応用であるデジタルＡＶ機器、携帯端末、携帯電話、コンピュータ機器、車載制御機器、医療機器などに応用できる。
【符号の説明】
【０１７３】
１  メモリ制御装置
１１  任意の制御装置であるマスター０
１２  任意の制御装置であるマスター１
１３  任意の制御装置であるマスター２
１４  任意の制御装置であるマスター３
１５  任意の制御装置であるマスター４
１６  任意の制御装置であるマスター５
２１  バスマトリクス
３１  キャッシュ（バンク０）
３２  キャッシュ（バンク１）
３３  キャッシュ（バンク２）
３４  キャッシュ（バンク３）
３５  キャッシュ（バンク４）
３６  キャッシュ（バンク５）
３７  キャッシュ（バンク６）
３８  キャッシュ（バンク７）
４１  分離装置
５１  アクセス制御装置０
５２  アクセス制御装置１
６１  ＳＤＲＡＭ０
６２  ＳＤＲＡＭ１
【図１】
0005640204.tif 000002
【図２】
0005640204.tif 000003
【図３】
0005640204.tif 000004
【図４】
0005640204.tif 000005
【図５】
0005640204.tif 000006
【図６】
0005640204.tif 000007
【図７】
0005640204.tif 000008
【図８】
0005640204.tif 000009
【図９】
0005640204.tif 000010
【図１０】
0005640204.tif 000011
【図１１】
0005640204.tif 000012
【図１２】
0005640204.tif 000013
【図１３】
0005640204.tif 000014
【図１４】
0005640204.tif 000015
【図１５】
0005640204.tif 000016
【図１６】
0005640204.tif 000017
【図１７】
0005640204.tif 000018
【図１８】
0005640204.tif 000019
【図１９】
0005640204.tif 000020
【図２０】
0005640204.tif 000021