(57)【要約】  【課題】  転送回数が不明な場合にも余分なアクセスを防ぐことが可能なメモリ制御方法及びメモリコントローラを提供することを目的とする。  【解決手段】  本発明に係るメモリのアクセス制御方法は、システムバスに接続されたマスタからメモリコントローラへの連続転送を制御する方法において、前記メモリコントローラに対して行われた連続転送の転送回数を保持しておき、前記メモリコントローラに対する転送回数が不定の場合に、前記保持された過去の転送回数に基づいて今回の転送回数を予測し、前記予測した転送回数に基づき、前記メモリコントローラに接続されたメモリへのアクセスを先行して行う。すなわち、メモリコントローラへの連続アクセス（バースト転送回数）が不定な時に、過去の転送回数の履歴より、現在行われている不定な連続アクセスの転送回数を予測して、無駄なアクセスを減らすことができる。  【選択図】  図２
2007034715.tif 000002
【特許請求の範囲】
【請求項１】
システムバスに接続されたマスタからメモリコントローラへの連続転送を制御する方法において、
前記メモリコントローラに対して行われた連続転送の転送回数を保持しておき、
前記メモリコントローラに対する転送回数が不定の場合に、前記保持された過去の転送回数に基づいて今回の転送回数を予測し、
前記予測した転送回数に基づき、前記メモリコントローラに接続されたメモリへのアクセスを先行して行うことを特徴とする制御方法。
【請求項２】
前記保持される転送回数は、転送回数不定の場合のみであることを特徴とする請求項１に記載の制御方法。
【請求項３】
前記メモリコントローラへの転送要求は、前記システムバスに接続された複数のマスタから行われることを特徴とする請求項１に記載の制御方法。
【請求項４】
前記複数のマスタの各々について、転送回数の保持及び予測を行うことを特徴とする請求項３に記載の制御方法。
【請求項５】
前記保持される転送回数は、転送回数不定の場合のみであることを特徴とする請求項４に記載の制御方法。
【請求項６】
前記メモリのアドレスの所定範囲毎に、前記転送回数の保持及び予測を行うことを特徴とする請求項１に記載の制御方法。
【請求項７】
前記保持される転送回数は、転送回数不定の場合のみであることを特徴とする請求項６に記載の制御方法。
【請求項８】
システムバスから外部メモリへのアクセスの制御を行うメモリコントローラにおいて、
前記メモリコントローラに対して行われた連続転送の転送回数を保持する転送回数保持回路と；
前記メモリコントローラに対する転送回数が不定の場合に、前記転送回数保持回路に保持された過去の転送回数に基づいて今回の転送回数を予測する転送回数予測回路とを備え、
前記転送回数予測回路で求められた転送回数に基づいて、前記メモリへのアクセスを先行して行うことを特徴とするメモリコントローラ。
【請求項９】
前記転送回数保持回路は、転送回数不定の場合の転送回数を保持する構成であることを特徴とする請求項８に記載のメモリコントローラ。
【請求項１０】
前記システムバスには複数のマスタが接続され、これらマスタのアクセス要求を択一的に処理することを特徴とする９又は１０に記載のメモリコントローラ。
【請求項１１】
前記転送回数保持回路及び前記転送回数予測回路は、前記複数のマスタの各々について設けられていることを特徴とする請求項１０に記載のメモリコントローラ。
【請求項１２】
前記転送回数保持回路は、転送回数不定の場合の転送回数を保持する構成であることを特徴とする請求項１０又は１１に記載のメモリコントローラ。
【請求項１３】
前記転送回数保持回路及び前記転送回数予測回路は、前記メモリのアドレスの所定範囲毎に、前記転送回数の保持及び予測を行うことを特徴とする請求項８に記載のメモリコントローラ。
【請求項１４】
前記転送回数保持回路は、転送回数不定の場合の転送回数を保持する構成であることを特徴とする請求項１３に記載のメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラに対する転送回数が不定な場合におけるアドレスの先読み制御に関するものである。
【背景技術】
【０００２】
メインメモリを制御するメモリコントローラは性能向上のため、リードアクセスにおいては、CPU、マスタなどと接続されるシステムバスの現在のアドレス、転送タイプなどから次のアドレスを予測して、先読みを行う場合がある。
【０００３】
この場合、予め転送回数が分かっている（固定されている）場合は、余分なアクセスを防ぐことが出きるが、転送回数が不明な場合には余分なアクセスを防ぐことが出来ない。これにより、余分な消費電力増加を招くこととなる。
【０００４】
ところで、特開２００４−３１８２５２号には、ＳＤＲＡＭの読み出し制御において、先読み動作を行うことが開示されている。
【特許文献１】特開２００４−３１８２５２号
【０００５】
しかしながら、上記文献に記載された発明は、先読みしたデータを有効データとしてキャッシュメモリのように再利用して性能向上を図っているのみであり、余分なアクセスを防ぐという効果は得られない。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、上記のような状況に鑑みて成されたものであり、転送回数が不明な場合にも余分なアクセスを防ぐことが可能なメモリ制御方法及びメモリコントローラを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の第１の態様に係るメモリのアクセス制御方法は、システムバスに接続されたマスタからメモリコントローラへの連続転送を制御する方法において、前記メモリコントローラに対して行われた連続転送の転送回数を保持しておき、前記メモリコントローラに対する転送回数が不定の場合に、前記保持された過去の転送回数に基づいて今回の転送回数を予測し、前記予測した転送回数に基づき、前記メモリコントローラに接続されたメモリへのアクセスを先行して行うことを特徴とする。
【０００８】
本発明の第２の態様は、システムバスから外部メモリへのアクセスの制御を行うメモリコントローラにおいて、前記メモリコントローラに対して行われた連続転送の転送回数を保持する転送回数保持回路と；前記メモリコントローラに対する転送回数が不定の場合に、前記転送回数保持回路に保持された過去の転送回数に基づいて今回の転送回数を予測する転送回数予測回路とを備えている。そして、前記転送回数予測回路で求められた転送回数に基づいて、前記メモリへのアクセスを先行して行うことを特徴とする。
【発明の効果】
【０００９】
以上説明したように、本発明ではメモリコントローラへの連続アクセス（バースト転送回数）が不定な時に、過去の転送回数の履歴より、現在行われている不定な連続アクセスの転送回数を予測して、無駄なアクセスを減らすことができる。その結果、消費電力増加を抑えることができるという効果がある。
【発明を実施するための最良の形態】
【００１０】
以下、本発明を実施するための最良の形態について、実施例を用いて詳細に説明する。図１は、本発明が適用されるバスシステムの概略構成を示すブロック図であり、システムバス１２に複数のマスタ１４ａ，１４ｂ，１４ｃが接続され、これら複数のマスタ１４ａ，１４ｂ，１４ｃによってシステムバス１２を共有する。マスタとしては、ＣＰＵの他にＤＭＡコントローラ等を接続することができる。システムバス１２には、また、スレーブとして機能するメモリコントローラ１０が接続されている。メモリコントローラ１０には、外部メモリ（メインメモリ）１６が接続されている。
【００１１】
システムバス１２は、各マスタ（CPU（１４ａ）、マスタ１（１４ｂ）、マスタ２（１４ｃ））から出力されるアドレス信号「addr」、バースト信号「burst」と、メモリコントローラ１０からの応答信号「ready」とリードデータを示す「rdata」を転送処理する。アドレス信号「addr」は、アクセス先（メモリ１６）のアドレスを示し、バースト信号「burst」は転送タイプを示す。バースト信号「burst」には、予め転送回数の決まったFIXED転送と、転送回数の決まっていないNOTFIXED転送とが存在する。
【００１２】
システムバス１２を使用するCPU１４ａ、マスタ１（１４ｂ）、マスタ２（１４ｃ）は、システムバス１２が使用可能な時に、システムバス１２を介してスレーブ（メモリコントローラ）１０にアドレス信号「addr」、バースト信号「burst」を出力する。メモリコントローラ１０は、外部メモリ１６とシステムバス１２の間を制御する機能を有する。メモリコントローラ１０は、システムバス１２からのアクセスに対して、アドレス信号「maddr」、制御信号「mctl」を生成し、メモリ１６に対してアクセスを行う。メモリコントローラ１０は、また、メモリ１６からのリードデータ「mdata」をシステムバス１２の「rdata」として出力する。メモリコントローラ１０が、マスタからのアクセスに対して、応答が完了したことを示す「ready」信号をデータ信号「rdata」と一緒に出力することで、マスタは自分の出力したアクセス要求に対する応答タイミングとリードデータを得ることが出来る。
【００１３】
図２は、本発明の第１実施例に係るメモリコントローラの構成を示すブロック図である。本実施例のメモリコントローラ１１０は、図１に示すメモリコントローラ１０として使用するものであり、madr生成ブロック１１２と、rdata生成ブロック１１４と、ready生成ブロック１１６と、アドレスデコーダ１１８と、制御信号生成ブロック１２０と、mctl生成ブロック１２８とを備えている。メモリコントローラ１１０は外部にメモリ１６を接続しており、このメモリ１６とシステムバス１２の間を制御する機能を持つ。メモリコントローラ１１０は、システムバス１２からのアクセスに対して、maddr, mctlを生成し、メモリ１６に対してアクセスを行い、メモリ１６からのmdataをシステムバス１２のrdataとして出力する。本発明の説明の簡略化のため、以下ではリードアクセスのみを対象とし、mctl=Hの時、メモリ１６へのリードを示し、mctl=Lの時は非リード状態とする。
【００１４】
図２、図４、図５において、記号「＝＝」、「＆＆」、「＞」、「！」は、一般的なHDL（ハードウェア記述言語）と同じ意味を示す。すなわち、「＝＝」は、左辺と右辺が一致した場合に１を示し、不一致の場合は０を示す。「＆＆」は、論理積を示す。「＞」は、左辺が右辺より大きい場合に１、そうでない場合は０を示す。「！」は、不定を示し、続く信号が０の時１を示し、続く信号が１の時０を示す。
【００１５】
madr生成ブロック１１２は、セレクタ１１２Ａと、フリップフロップ回路１１２Ｂと、加算器１１２Ｃとから構成されている。madr生成ブロック１１２は、ready生成ブロック１１６から供給されるready 信号、システムバス１２から転送されるアドレス信号 adr、制御信号生成ブロック１２０から供給される状態信号 state、次回転送数信号 nextburstcnt が入力される。そして、madr生成ブロック１１２は、これらの入力信号に基づいて、メモリ１６に対するアドレス信号 madr を生成するようになっている。
【００１６】
rdata生成ブロック１１４は、セレクタ１１４Ａと、フリップフロップ回路１１４Ｂとから構成されている。そして、madr生成ブロック１１２は、メモリ１６から出力されたリードデータ mdata に基づいて、システムバス１２に転送されるデータ信号 rdata を生成する。
【００１７】
ready生成ブロック１１６は、上述した ready信号をシステムバス１２、rdata生成ブロック１１４、madr生成ブロック１１２、制御信号生成ブロック１２０の各々に対して出力する。
【００１８】
アドレスデコーダ１１８は、システムバス１２から供給されるアドレス信号 adr をデコードし、信号 adrval
を生成して、制御信号生成ブロック１２０に対して出力する。信号 adrval は、メモリコントローラ１１０の有効アドレス範囲を示す。
【００１９】
図３は、第１実施例に係るメモリコントローラ１１０の要部である制御信号生成ブロック１２０の構成を示すブロック図である。制御信号生成ブロック１２０は、state生成ブロック１２２と、lastcnt生成ブロック１２４と、burstcnt生成ブロック１２６とを備えている。制御信号生成ブロック１２０には、ready信号、burst信号、adrval信号が入力される。上述したように、バースト信号「burst」には、予め転送回数の決まったFIXED転送と、転送回数の決まっていないNOTFIXED転送とがあり、本実施例では、ＦＩＸＥＤ＝４（４回の転送）とする。
【００２０】
state生成ブロック１２２は、リードアクセス中を示す信号であり、adrが有効な時(adrval==1)を記憶する回路となっている。
【００２１】
lastcnt生成ブロック１２４は、前回の不定（NOTFIXED）の転送回数を保持し、これに対応した信号 lastcnt を burstcnt生成ブロック１２６に対して出力する。lastcnt生成ブロック１２４は、セレクタ１２４Ａと、フリップフロップ回路１２４Ｂと、加算器１２４Ｃとから構成されている。具体的には、lastcnt生成ブロック１２４は、転送回数が不明な時（burst=NOTFIXED）に、前回のNOTFIXEDの転送回数を記憶する。
【００２２】
burstcnt生成ブロック１２６は、セレクタ１２６Ａと、フリップフロップ回路１２６Ｂと、加算器１２６Ｃとから構成されている。burstcnt生成ブロック１２６は、実際の転送回数を計算する回路であり、lastcnt生成ブロック１２４から供給されるlastcnt信号に基づいて、今回の不定（NOTFIXED）の転送回数nextburstcnt を予測し、当該予測値に対応した burstcnt信号をmctl生成ブロック１２８に対して出力する構成となっている。
【００２３】
mctl生成ブロック１２８は、上述した状態信号state、転送タイプ信号burstcnt に基づいて、メモリ１６を制御するメモリ制御信号mctl を生成し、メモリ１６に対して出力する。
【００２４】
図４は、第１実施例の動作を示すタイミングチャートである。本実施例において、以前に転送回数３のburst==NOTFIXED転送が発生していたとする。この時、lastcnt生成ブロック１２４には前回の転送回数３−１＝２が格納される。Ｔ２サイクルで有効アクセスadr=A、burst=NOTFIXEDを受け取ったメモリコントローラ１１０は、セレクタ１２６Ａの選択論理が２番となり、lastcntを用いて、burstcnt生成ブロック１２６の記憶素子（フリップフロップ回路１２６Ｂ）の前段の信号であるnextburstcntに前回のlastcnt＝３−１＝２を入力する。T３サイクルで、burstcntはnextburstcntを反映する。またこの時、セレクタ１２６Ａの選択論理は３番となり、転送毎に順次burstcntをカウントダウンしていく。
【００２５】
Ｔ５サイクルにおいて、nextburstcntが１であることにより、３回の転送が終わったと判断し、Ｔ６サイクルでは４回目の転送を行わない。一方、lastcntは、NOTFIXED転送毎にカウントアップしていく。Ｔ２サイクルでセレクタ１２４Ａの選択論理が１番となり、Ｔ３サイクルでlastcntには０が設定される。Ｔ３，Ｔ４サイクルでは、選択論理３番が選択され、lastcntの値は保存される。Ｔ５サイクルでは選択論理２番が選択され、lastcntはカウントアップする。Ｔ６サイクルでも同様に、カウントアップする。Ｔ７サイクルでは、セレクタ１２４Ａの選択論理３が選択され、転送回数３相当の２が保持され、以降のNOTFIXED転送時のburstcntの初期値として用いる。また、FIXED転送ではlastcntの値は変化せず、転送開始時にburstcntに設定される値もFIXED転送の固定値が選択される。lastcntはNOTFIXED転送時のみに用いられる。
【００２６】
FIXED転送の場合は、セレクタ１２６Ａでは選択論理１番が選択され、FIXED転送の転送回数４がburstcntに設定される。転送毎にburstcntを−１するのは、NOTFIXED転送と同様である。mctl生成ブロック１２８では、burstcntに基づいてmctl信号を生成する。この時、lastcntは変化させずに、今までの値を保持する。
【００２７】
maddr生成ブロック１１２においては、セレクタ１１２Ａによって、初期値adr（選択論理１）、現在のmaddrに＋１（選択論理２）、保持（選択論理３）のいずれかの値が出力される。
【００２８】
rdata生成ブロック１１４では、メモリ１６からのmdataをシステムバス１２のrdataとして返す動作を行う。
【００２９】
図５は、本発明の第２実施例に係るメモリコントローラの構成を示すブロック図である。図６は、第２実施例に係るメモリコントローラの要部であるlastcnt生成ブロックの構成を示すブロック図である。なお、図５及び図６において、図２及び図３と同一の構成要素については同一の符号を付し、重複した説明は省略する。また、第１実施例に対応する構成要素（２１２，２２２，２２６，２２８）については、同様の構成を採用可能であるため、簡略化して示すと共に、重複した説明は省略する。更に、本実施例の動作についても、以下に示す説明以外の部分については、第１実施例と同様であるため、ここでの説明は省略する。
【００３０】
本実施例は、複数のマスタを持つシステムにおけるメモリコントローラの先読み制御で、転送回数が不明（不定）な連続転送時に、マスタ毎に過去の履歴を取り、連続転送の回数を判断し、余分な先読みアクセスを防ぐものである。
【００３１】
本実施例のメモリコントローラ２１０は、図１に示すメモリコントローラ１０として使用するものであり、madr生成ブロック２１２と、rdata生成ブロック２１４と、ready生成ブロック２１６と、アドレスデコーダ２１８と、lastcnt生成ブロック２２０、state生成ブロック２２２、burstcnt生成ブロック２２６、mctl生成ブロック２２８とを備えている。
【００３２】
ここでは、冗長な説明を避けるため、上述した第１実施例との相違点を中心に説明する。最初に、busreq0, busreq1, busreq2及びbusgrant0, busgrant1, busgrant2 及び master信号について説明する。図５において、システムバス１２にCPU１４ａ、マスタ1（１４ｂ）、マスタ2（１４ｃ）、メモリコントローラ２１０が接続されており、CPU１４ａ、マスタ1（１４ｂ）、マスタ2（１４ｃ）はシステムバス１２の使用要求を、それぞれbusreq0, busreq1, busreq2 として、アービタ（調停回路）２３０に要求する。
【００３３】
アービタ２３０は、これらの要求を受けると、１つのマスタにシステムバス１２の許可信号を与える。CPU１４ａ、マスタ1（１４ｂ）、マスタ2（１４ｃ）に対して、それぞれbusgrant0, busgrant1, busgrant2 が許可信号に相当する。許可信号を受けたマスタは、システムバス１２を使用する権限が与えられたことになる。アービタ２３０が出力する信号「master」は、現在システムバス１２をどのマスタが使用しているか判別可能な値である。この信号masterは、アービタ２３０より容易に生成することができる。信号master が０の時はCPU１４ａ、信号master が１の時はマスタ1（１４ｂ）、信号master が１の時はマスタ2（１４ｃ）がシステムバス１２を使用可能とする。
【００３４】
lastcnt生成ブロック２２０は、セレクタ２２０Ａ１〜２２０Ａ７、フリップフロップ回路２２０Ｂ１〜２２０Ｂ３、加算器２２０Ｃ１〜２２０Ｃ３を備えている。ここで、セレクタ２２０Ａ１、２２０Ａ４、フリップフロップ回路２２０Ｂ１、加算器２２０Ｃ１が１つのユニットとして、ＣＰＵ１４ａ用として機能する。セレクタ２２０Ａ２、２２０Ａ５、フリップフロップ回路２２０Ｂ２、加算器２２０Ｃ２が１つのユニットとして、マスタ１（１４ｂ）用として機能する。また、セレクタ２２０Ａ３、２２０Ａ６、フリップフロップ回路２２０Ｂ３、加算器２２０Ｃ３が１つのユニットとして、マスタ１（１４ｂ）用として機能する。そして各ユニットの出力がセレクタ２２０Ａ７に入力される。
【００３５】
第1実施例と比較して、本実施例に係るメモリコントローラ２１０は、master信号とlastcnt生成ブロックが相違点となっている。lastcnt0 はCPU（master=0）の最後のNOTFIXED転送回数を示し、lastcnt1
はマスタ１(master==1) の最後のNOTFIXED転送回数を示し、lastcnt2 はマスタ２の最後のNOTFIXED転送回数を各々示す。マスタ毎に最後のNOTFIXED転送回数が記憶されることにより、転送回数が不定な転送回数の予測精度が高まる。なお、図６中のセレクタ２２０Ａ１，２２０Ａ２，２２０Ａ３は、図３のセレクタ１２４Ａと同様な構成であるが、セレクタ２２０Ａ４，２２０Ａ５，２２０６が、マスタ毎に動作して、マスタ毎の最後のNOTFIXED転送回数を保存するようになっている。
【００３６】
図７は、本発明の第３実施例に係るメモリコントローラの構成を示すブロック図である。図８は、第３実施例に係るメモリコントローラの要部であるlastcnt生成ブロックの構成を示すブロック図である。なお、図７及び図８において、図２〜図６と同一の構成要素については同一の符号を付し、重複した説明は省略する。また、第１実施例に対応する構成要素（３１２，３２２，３２６，３２８）については、同様の構成を採用可能であるため、簡略化して示すと共に、重複した説明は省略する。更に、本実施例の動作についても、以下に示す説明以外の部分については、第１実施例と同様であるため、ここでの説明は省略する。
【００３７】
本実施例は、メモリコントローラ３１０の先読み制御において、転送回数が不明な連続転送時に、アドレスごとに過去の履歴を取り、連続転送の回数を判断し、余分な先読みアクセスを防ぐものである。本実施例においては、メモリコントローラ３１０が担当するアドレス範囲を複数に分割し、分割した領域ごとに転送回数が不定な転送の転送回数を予測する。
【００３８】
本実施例と第1実施例との主な相違点は、lastcnt生成ブロック３２４の構成である。本実施例においては、メモリコントローラ３１０の担当するアドレス範囲を１〜ｎに分割した場合を示している。セレクタ３２４Ａ１、３２４Ａ２は、第１実施例のセレクタ１２４Ａと同じ構成である。セレクタ３２４Ａ３、セレクタ３２４Ａ４は分割されたアドレス領域毎に動作し、決められたアドレス範囲の時以外は、lastcnti (iは１〜ｎ)を保持する。例えば、アドレス範囲１のNOTFIXED転送の場合、セレクタ３２４Ａ３の選択論理は１となり、実施例１と同様にlastcnt1を計算する。また、その時のNOTFIXED転送回数を、第1実施例と同様にカウントし直し、lastcnt1に記憶する。本実施例は、アドレス範囲毎にNOTFIXED転送回数が異なる場合に特に有効である。
【００３９】
以上、本発明の実施例について説明したが、本発明はこれらの実施例に何ら限定されるものではなく、特許請求の範囲に示された技術的思想の範囲内において、適宜設計変更が可能なものである。
【００４０】
本発明において、「転送回数が不定」とは、例えば、バースト転送の際のバースト信号が特定の回数を示さない場合である。転送回数の予測は、有効アクセスとバースト信号を受け取った時点で行うことができる。また、「過去の転送回数に基づく予測」は、前回の転送回数に基づく値（同一など）を採用する他、過去数回の転送回数の平均値をとる方法等、過去の履歴に基づく種々の形態を採用することができる。
【００４１】
本発明は、メモリのアクセスアドレスが規則的なバースト転送について特に有効である。ここで、転送回数不定の場合の転送履歴のみを保持すれば、回路構成を簡略化することが可能となる。
【００４２】
システムバスに複数のマスタが接続されているケースでは、前記複数のマスタの各々について、転送回数の保持及び予測を行うことが好ましい。これにより、更なる転送回数の予測精度の向上、消費電力の低減を図ることが可能となる。
【００４３】
転送回数の予測精度を向上させる他の方法として、メモリコントローラが管理するメモリのアドレスの所定範囲毎に、前記転送回数の保持及び予測を行うことができる。これにより、更なる転送回数の予測精度の向上、消費電力の低減を図ることが可能となる。
【図面の簡単な説明】
【００４４】
【図１】図１は、本発明が適用されるバスシステムの概略構成を示すブロック図である。
【図２】図２は、本発明の第１実施例に係るメモリコントローラの全体構成を示すブロック図である。
【図３】図３は、第１実施例に係るメモリコントローラの要部である制御信号生成ブロックの構成を示すブロック図である。
【図４】図４は、第１実施例の動作を示すタイミングチャートである。
【図５】図５は、本発明の第２実施例に係るメモリコントローラの全体構成を示すブロック図である。
【図６】図６は、第２実施例に係るメモリコントローラの要部であるlastcnt生成ブロックの構成を示すブロック図である。
【図７】図７は、本発明の第３実施例に係るメモリコントローラの全体構成を示すブロック図である。
【図８】図８は、第３実施例に係るメモリコントローラの要部であるlastcnt生成ブロックの構成を示すブロック図である。
【図１】
2007034715.tif 000003
【図２】
2007034715.tif 000004
【図３】
2007034715.tif 000005
【図４】
2007034715.tif 000006
【図５】
2007034715.tif 000007
【図６】
2007034715.tif 000008
【図７】
2007034715.tif 000009
【図８】
2007034715.tif 000010