(57)【要約】【課題】  処理の中間データを外部メモリに格納するような処理モジュール、或いは、一時的にＨＤＤのような記憶装置からメモリに読み出され、処理を行い、処理終了時にメモリ内容を破棄できるような使い方をするアドレスエリアに対する高速アクセスを可能とすることで、処理の高速化を図る。【解決手段】  メモリコントローラに接続されたチップ内部記憶領域をメモリコントローラ内のレジスタ設定によりチップ外に接続されたメモリの任意のアドレスに割り振ることで特定のマスタに対するアクセス（特に読み出し）を高速化させるとともに、処理モジュールの処理開始時に設定をしなおすことで以前設定した処理モジュールが処理を継続中であっても優先するモジュールの変更が動的に行える。【選択図】  図４
2007026364.tif 000002
【特許請求の範囲】
【請求項１】
メモリアクセスを要求する複数のマスターと、データを保持する外部メモリデバイスと、チップ内部に構成された内部記憶部とに接続されたメモリコントローラであって、前記メモリコントローラはメモリコントローラ内に有する設定手段により前記チップ内部記憶部を前記外部メモリデバイスに割り当てられた任意のアドレスにマッピングすることが可能でありかつ前記マスターからの書き込みは、前記外部メモリデバイスと前記チップ内部に構成された内部記憶部とに書き込まれることを特徴とするメモリコントローラ。
【請求項２】
前記内部記憶部がＳＲＡＭで構成されたことを特徴とする前記請求項１記載のメモリコントローラ。
【請求項３】
前記メモリコントローラ内の設定手段は前記チップ内部に構成された記憶部を複数の外部メモリアドレスエリアにマッピング可能であることを特徴とする前記請求項１記載のメモリコントローラ。
【請求項４】
前記メモリコントローラ内の設定手段は任意の優先タスクの処理開始時点で優先タスクの占有アドレスエリアに設定可能であることを特徴とする前記請求項1記載のメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、1つの共有メモリを複数のマスターが利用するシステムにおいて、一部のマスターにおけるメモリアクセスを高速に行わせ、結果、そのマスターの処理の高速化を行うものである。
【背景技術】
【０００２】
従来の複数のマスターが共有メモリを使用するシステムの一例を図６に示す。図６ではチップ外部に接続されたメモリ105を制御するメモリコントローラ104に3つのマスター（101、102、103）が接続されている例を示している。
【０００３】
このブロック図に示されたシステムで2つのマスターがメモリコントローラに対し読み出し要求を行った場合の動作例を図７に示す。
【０００４】
図７では、t1タイミングでマスター2が読み出し要求を、t2タイミングでマスター1がそれぞれ読み出し要求を行い、マスター2の読み出し要求はt3タイミングでメモリコントローラに受け付けられたことを示す信号GNTが返されている。一方、マスター1の読み出し要求はメモリコントローラによりt4のタイミングで読み出し要求が受け付けられたことを示す信号GNTが返されている。マスター2は高速動作を行うため、次の読み出し要求をメモリコントローラに対しt5のタイミングで発生させているが、先に要求した読み出しデータは、メモリコントローラからはt6のタイミングでやっと戻ってきている。マスター2の2度目の読み出し要求はt7のタイミングで受け付けられたことを示すGNT信号が返されているが、この時点では1回目の読み出し要求データの読み出し途中であり、この次にはマスター1の読み出し要求がメモリコントローラ内には控えており、マスター1の読み出しデータが帰って来て(t8)マスタ１の読み出しが終了するタイミング以後にならなければマスター2の読み出し要求データは戻ってこないことになる。
【０００５】
このような例において、従来では、処理を優先させたいマスターに対しては予めハード的にメモリアクセスを優先させるようにメモリコントローラ内のアービタ（図示せず）を作り、或いは、各マスターのメモリバスアクセス間隔を広げるように各マスター内に予めレイテンシータイマーを組み込んでおき、メモリバスアクセスを制限するといった方法がとられていた。
【０００６】
又、従来例としては、例えば特許文献１をあげることが出来る。
【特許文献１】特開平８−１０１８０２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、先に示した第1の方法では、優先されるマスターにおいては常に優先されるのでそれなりの処理速度がえられるが、優先されないマスターはメモリコントローラの混み具合によってメモリアクセスが制限され、処理が遅くなるといった問題がある。また先に示した第2の方法では、メモリコントローラの混み具合によらずレイテンシータイマーによりマスターのメモリバスアクセスが制限されるため高速処理を要求されるマスターがメモリアクセスをしていない時点でも不要なインターバルがメモリアクセスに入り全体の処理速度改善が行われないといった問題点があった。
【課題を解決するための手段】
【０００８】
本発明は上記問題点を改善し、高速処理を要求するマスターのメモリアクセス処理は高速に、また、その他のマスターのメモリアクセス処理も現状よりも高速に行えるようにすることにより、全体の処理速度の改善を図るものであり、そのため、本発明では、メモリコントローラに外部メモリの一部をコピーしておくための内部記憶エリアを接続し、かつ、この記憶エリアに記憶させる外部メモリのアドレスエリアを設定する機構を持たせることで前記外部メモリのアドレスエリアへのアクセスの際には前記内部記憶エリアへのアクセスで代用することでメモリアクセス処理の高速化を行うものである。
【０００９】
また、本発明では、任意の外部メモリアドレスを内部記憶領域に割り当てることが可能であるため、任意のマスターに対してメモリアクセスの高速化を割り当てることができる。
【発明の効果】
【００１０】
以上説明したように本発明によれば、メモリコントローラ内に内部記憶領域を持たせ、その内部記憶領域を外部の任意のメモリアドレスエリアに設定可能とすることで、外部メモリにアクセスを行う任意のマスターに対する読み出しアクセスを高速化できると同時に、外部メモリに対する読み出しアクセスの一部を行わせないことによりその他のマスターにおけるメモリアクセス処理の高速化も実現される。
【００１１】
また、メモリコントローラ内に内部記憶領域を持たせることで、その時々の処理状況に応じて高速動作が必要とされる任意の処理ブロックに対しメモリコントローラ内の内部記憶領域を割り当て、高速化を図ることが可能となる。
【発明を実施するための最良の形態】
【００１２】
（第1の実施例）
以下、図1〜図5に基づき、本発明によるメモリコントローラを説明する。
【００１３】
図1は本発明のメモリコントローラを用いたシステムの１例を示した図で、図1中、1はメモリアクセスを行うマスターのうちの1つのマスター１で以下、このマスターはＣＰＵであるとする、2、3はメモリアクセスを行うマスター2、3はともに画像処理を行うモジュールであるとする。4はメモリーバス、5は本発明のメモリコントローラ、6は本発明のメモリコントローラに接続された内部記憶領域、7は外部のメモリである。
【００１４】
図2は図1のメモリコントローラの内部ブロックと内部記憶領域の図であり、図中6は先の図と同じ内部記憶領域、8は内部記憶領域の割振りを予め設定する設定レジスタ、9はメモリバスにてメモリアクセスを行うマスターの調停を行うアービタ、10は外部メモリを制御する外部メモリ制御ブロックである。
【００１５】
今、図1のマスター１（ＣＰＵ）があるタスクを実行するために図示されていないハードディスク或いはＲＯＭからプログラムをメモリにコピー（ロード）し、その内容を実行する場合を考える、このとき、ＣＰＵはまず、ロードするプログラムのサイズを取得し、ＣＰＵが管理しているメモリエリア内の空き領域に先のプログラムをコピーする領域をアロケートする。アロケートが完了し、ロードするメモリアドレスとサイズが取得できたら、ＣＰＵはメモリコントローラに対し、優先設定を行う、つまり図2の設定レジスタ8に対しメモリアクセスを優先したい開始アドレスとそのサイズを設定する。これらが完了した後、図示されていないＨＤＤあるいはＲＯＭからプログラムのロードを行った後、先のプログラムの実行を行う。
【００１６】
プログラム実行中のメモリアクセスの様子の一例を図3に示す。図3にてメモリバスプロトコルは、アクセスしたいマスターはリクエスト信号ＲＥＱとともにアクセスの種類（ＲＤ／ＷＲ）とアクセスしたいアドレスＡＤＤＲ信号をメモリコントローラに出力する。メモリコントローラはマスターからのリクエストを受け付けたらＧＮＴ信号を返す。アクセスが受け付けられたマスターはＷＲアクセスであればメモリに書き込む信号をメモリバスに出力し、ＲＤアクセスであればメモリコントローラからのデータ出力を待つものとする。また、プログラム実行時であるため、メモリコントローラ内の内部記憶領域にはすでにプログラムのロードが完了しているものとする。
【００１７】
図3でｔ1のタイミングでまずマスター2が読み出し要求を行い、ｔ3のタイミングで要求が受け付けられたことを示すＧＮＴ信号を受け取り、ｔ6のタイミングからメモリコントローラからの読み出したデータを受け取る。一方ｔ2のタイミングでマスター３が書き込み要求を行い、書き込み要求が受け付けられたことを示すＧＮＴ信号をｔ5で受け取り、次のｔ6から書き込みデータをメモリコントローラに対し出力する。この書き込みデータはメモリコントローラ内の外部メモリコントローラ内のバッファに一時的に保存され、メモリデバイスに対する書き込み時にメモリに対し出力される。ＣＰＵであるマスター１はｔ4のタイミングで読み出し要求を行い、読み出し要求が受け付けられたことを示すＧＮＴ信号をｔ7のタイミングで受け取り、直後のｔ8から要求したアドレスメモリデータを受け取っている。
【００１８】
図3のタイミング図に示す動作をするようなメモリコントローラの動作を示すフローチャートは図４のようになる。まず、調停処理を行い41、次に要求されたメモリのアドレスをチェックする42、ｔ1で読み出し要求を行ったマスター２のアドレスエリアは内部領域に設定されていないので、要求したマスターに対し、ＧＮＴ信号を返し、外部メモリ制御ブロックのＱＵＥに読み出し要求を行ったマスターと、その要求アドレスを格納し、外部メモリへのアクセスの順番を待たせる（処理43）、ｔ2のタイミングで書き込み要求を行ったマスター３のアドレスエリアも先のマスター２と同様に内部領域に設定されていないので処理43が行われるが、要求が書き込みであるため処理43では書き込むデータもあわせて外部メモリ制御ブロックに格納され、外部メモリへのアクセスの順番待ちを行わせる。一方、ｔ4で行われたマスター1の読み出し要求は内部領域に設定されたアドレスエリアであるため、44にて書き込みか読み出しかを判断される。この例では読み出し要求であるため、内部記憶領域の該当するアドレスからデータを読み出し、読み出しができ次第マスター1に対しデータを返す（図3 ｔ7）。当然ながら、外部メモリ制御ブロックのＱＵＥに書き込まれることはなく、他のマスターからの要求に対する影響は発生しない。加えて、マスター１の要求後に他のマスターからの要求があった場合には、マスター1の読み出し要求はＱＵＥに存在しないためマスター１の読み出し要求後のアクセスは通常よりも早くアクセスが可能となる。
【００１９】
上記例で用いたアドレスマップの例を図5に示しておく。
【００２０】
上記説明では内部記憶領域に設定したアドレスエリアへの書き込み動作については説明しなかったが、内部記憶領域に設定したアドレスエリアへの書き込みは外部メモリ制御ブロックへのＱＵＥの書き込みと、内部記憶領域への書き込みの両方が実行される。このような構成とすることで、例えば、マスター2の処理開始時にマスター2の処理を優先するために最初はマスター2のアドレスエリアをメモリコントローラ内の内部記憶領域に割り当てていて、それ以上の優先度のタスクが例えばマスター1であるＣＰＵで発生した場合には、メモリコントローラ内のアドレス設定を優先度の高いタスクが使用するメモリアドレスに切り替えるだけでより優先度の高いタスクに対するアクセスの高速化を実現することができる。
【００２１】
また、先の例ではHDDからプログラムをロードする際の効果を説明したが、本発明を用いてプログラム実行時に高速化を行うこともできる。例えば、ループ処理を行い、比較的大きな中間バッファメモリエリアへのアクセスを行うようなプログラムの場合、アクセスが集中する中間バッファメモリエリアのスタートアドレスとサイズ（エンドアドレス）をループの開始時に設定することで、メモリからの読み出しに要する時間の短縮を図ることも可能となる。
【図面の簡単な説明】
【００２２】
【図１】本発明のメモリコントローラを用いたシステムブロックの一例
【図２】本発明のメモリコントローラの概略ブロック図
【図３】本発明のメモリコントローラを用いた場合の動作を示すタイミングチャート
【図４】本発明のメモリコントローラの動作フローを示す図
【図５】本発明のメモリコントローラの機能を示すアドレスマップ
【図６】従来のメモリコントローラを用いたシステムブロック図の一例
【図７】従来のメモリコントローラを用いた場合の動作を示すタイミングチャート
【符号の説明】
【００２３】
1  マスター１（ＣＰＵ）
2  マスター2
3  マスター3
4  メモリーバス
5  メモリコントローラー
6  内部記憶領域
7  外部メモリ
8  設定レジスタ
9  アービター
10  外部メモリ制御ブロック
【図１】
2007026364.tif 000003
【図２】
2007026364.tif 000004
【図３】
2007026364.tif 000005
【図４】
2007026364.tif 000006
【図５】
2007026364.tif 000007
【図６】
2007026364.tif 000008
【図７】
2007026364.tif 000009