(57)【要約】【課題】機能の異なるマスタ毎に先読み制御を変更することにより、性能向上と消費電力の低減を両立させる先読み制御方法を提供する。【解決手段】  複数のバスマスタ（１２，１３，１４）とメモリ１７が接続されたシステム１０に於ける選択された一つのバスマスタに対するメモリデータの先読み制御方法であって、当該選択されたバスマスタを判別する信号と、転送タイプを判別する信号とに基づいて先読み制御を行うか否かを判定するようにしている。【選択図】  図１
2006251923.tif 000002
【特許請求の範囲】
【請求項１】
複数のバスマスタとメモリが接続されたシステムに於ける選択された一つのバスマスタに対するメモリデータの先読み制御方法であって、
当該選択されたバスマスタを判別する信号と、転送タイプを判別する信号とに基づいて先読み制御を行うか否かを判定することを特徴とする先読み制御方法。
【請求項２】
複数のバスマスタとメモリが接続されたシステムに於ける選択された一つのバスマスタに対するメモリデータの先読み制御方法であって、
当該選択されたバスマスタを判別する信号と、転送タイプを判別する信号とに基づいて先読み制御を行うと判定された場合に、当該先読みアドレスを当該バスマスタの判別信号に基づいて制御可能としたことを特徴とする先読み制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は複数のマスタを持つシステムに於ける、メモリコントローラ内に配置されたリードバッファの先読み制御に関する。
【背景技術】
【０００２】
高速なデータ転送を要求するシステムではＣＰＵ以外に自発的にアクセス要求を発生させるマスタを備えることがある。また、メインメモリを制御するメモリコントローラは、性能向上のため、過去に受け付けたアクセスから、次に行われるアクセスを予測して先読みを行い、メモリコントローラ内のリードバッファに予め先読みしたデータを取り込んでおき、予測したアクセスが来るとリードバッファから直ぐにデータを返すことでシステム性能を向上させるようにしている。
【０００３】
図４は、複数のマスタを備える従来のシステム４０の構成を示す図であり、図５は、先読みが成功した場合の従来のシステムの動作タイミングを示した図である。
【０００４】
図４において、各マスタ（ＣＰＵ、マスタ１、マスタ２）からのアドレス信号（ａｄｄｒ）及び転送回タイプを示す信号（ｂｕｒｓｔ）と、スレーブからの応答信号であるｒｅａｄｙとリードデータを示すｒｄａｔａがシステムバス４１を介して入出力される。ａｄｄｒはアクセス先のアドレスを示し、ｂｕｒｓｔは転送タイプを示す。ｂｕｒｓｔのタイプとしては、予め転送数の決まった”ＦＩＸＥＤ”転送と転送数の決まっていない”ＮＯＴＦＩＸＥＤ”転送がある。
【０００５】
システムバス４１には、ＣＰＵ（４２）、マスタ１（４３）、マスタ２（４４）、メモリコントローラ４５が接続されており、ＣＰＵ、マスタ１、マスタ２はシステムバスの使用要求を、それぞれｂｕｓｒｅｑ０，ｂｕｓｒｅｑ１，ｂｕｓｒｅｑ２の信号を用いてアービタ４６に要求する。アービタ４６は要求を受けると、１つのマスタにシステムバスの許可信号を出力する。ｂｕｓｇｒａｎｔ０，ｂｕｓｇｒａｎｔ１，ｂｕｓｇｒａｎｔ２がＣＰＵ、マスタ１、マスタ２に対するそれぞれの許可信号に相当する。許可信号を受けたマスタはシステムバスを使用することができ、システムバス４１に対してａｄｄｒ信号及びｂｕｒｓｔ信号を出力する。
【０００６】
一方メモリコントローラ４５は、外部にメモリ４７を接続しており、このメモリとシステムバスの間を制御する機能を有する。システムバスからのアクセスに対して、メモリ制御部４５ａにてメモリのアドレス信号（ｍａｄｄｒ）と制御信号（ｍｃｔｌ）を生成し、メモリ４７に対してアクセスを行う。メモリからの読み出しデータ（ｍｄａｔａ）は、ｒｄａｔａとしてシステムバス４１上に出力される。また、マスタからのアクセスに対する応答が完了したことを示すｒｅａｄｙ信号がメモリ制御部４５ａから出力されるので、マスタは自分の出力したアクセスに対する応答タイミングとリードデータを得ることが出来る。
【０００７】
また図４のメモリコントローラ４５はリードバッファ４５ｂを備えており、マスタから送出されるアドレス信号（ａｄｄｒ）の示す内容が既にリードバッファ内にある場合には、メモリ制御部４５ａはメモリに対してアクセスを行わず、リードバッファからのデータを読み取りデータ（ｒｄａｔａ）として返送する。この時、メモリからの読み出しデータ（ｍｄａｔａ）を得てｒｅａｄｙ応答を行うよりも、高速にｒｅａｄｙ信号を返すことが出来る。
【０００８】
図５は、マスタからのアクセスに対して先読みを行い、次のアクセスに対して先読みが成功した場合の具体例を示すタイムチャートである。
【０００９】
マスタからのａｄｄｒ＝Ａ，Ａ＋１，ｂｕｒｓｔ＝”ＦＩＸＥＤ”（２連続のアクセスとする）を受けたメモリコントローラ４５はメモリ制御部４５ａから外部メモリ４７の実アドレスであるｍａｄｄｒ＝Ａ，Ａ＋１と適切な制御信号であるｍｃｔｌを出力し、メモリアクセスを行い、読み出しデータとしてｍｄａｔａ＝Ｄ，Ｄ＋１を得る（Ｔ２−Ｔ６）。ｍｄａｔａ＝Ｄ，Ｄ＋１を、それぞれＴ５，Ｔ７のタイミングにおいて、ｒｄａｔａとｒｅａｄｙによりシステムバスに応答する。
【００１０】
メモリ制御部４５ａは、受け付けたアクセスより、先読みを実行し、ｍａｄｄｒ＝Ａ＋２，Ａ＋３に対する読み取りデータＤ＋２，Ｄ＋３を取得し、リードバッファ４５ｂに保存しておく。Ｔ１１で、ａｄｄｒ＝Ａ＋２のアクセスを受け付けたメモリ制御部４５ａは、先読みが成功しているので、メモリにアクセスせずにリードバッファからＤ＋２を返す。
【特許文献１】特開２００１−２２９０７４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
（１）先読みルールがマスタごとに違う場合
図４のシステムにおいて、マスタ１，２とＣＰＵからメモリコントローラへの転送について分けて説明する。
【００１２】
マスタ１，２からメモリ４７への転送は、一般的にまとまったデータを一度に連続転送する場合があり、バスのプロトコルとして、転送数が予め決まったバースト転送（”ＦＩＸＥＤ”転送）が使われる場合がある。この理由として、（ａ）メモリが固定のページサイズを持っているものが多く、このページサイズ単位のブロック転送を行うと効率がよい、（ｂ）システムバス上の転送終了が予測できるため、マスタの切り替わり時の無駄時間を低減することが出来る等の利点が上げられる。
【００１３】
マスタ１，２が”ＦＩＸＥＤ”転送を行っている場合は、次も”ＦＩＸＥＤ”転送が行う可能性が高く、リードアクセスの場合、先読みが成功する可能性が高く、性能向上が期待できる。逆に”ＦＩＸＥＤ”転送でない場合には、連続転送中でない可能性が高く、先読みを行うと余計なアクセスとなり、消費電力増加を招く。図６は、”ＦＩＸＥＤ”転送でない場合に先読みを行った時のタイミングを示す。図６のＴ８、Ｔ１０のタイミングで行われたアクセスが無駄なアクセスとなり消費電力増加を招く。
【００１４】
一方ＣＰＵからは、命令体系にも依るが、”ＦＩＸＥＤ”転送以外で連続転送する場合があり、この場合、他のマスタと同じルールで先読み制御を行うと、連続転送時に先読みが行われなくなり、性能向上が薄れてしまう。この場合は”ＦＩＸＥＤ”転送時以外も図５に示したように先読みを行った方が性能向上が期待される。
【００１５】
従来においては、先読みするか、しないかの判断を各マスタ毎に行っておらず、性能向上と消費電力低減の両立を図れていなかった。
【００１６】
（２）アドレスが連続でない場合の先読みについて
あるマスタからメモリコントローラに対して連続転送を行う場合、アドレスが連続でない場合がある。その場合、先読みアドレスとして、現在のアドレスからインクリメントした値を用いると、必ず先読み失敗してしまい、無駄な消費電力増加となってしまう。この場合、マスタごとに機能が違うので、先読みの精度を高めるには、マスタに適した先読み予測方法を採る必要がある。
【００１７】
以上説明した様に、性能向上と消費電力低減を両立するには、先読みの予測精度が高いほど効果があり、動作の異なるマスタごとに先読みを行うかどうか判定した方が、予測精度が高くなると言える。
【００１８】
本発明の課題は、機能の異なるマスタ毎に先読み制御を変更することにより、性能向上と消費電力の低減を両立させる点にある。
【課題を解決するための手段】
【００１９】
請求項１に係る先読み制御方法は、複数のバスマスタとメモリが接続されたシステムに於ける選択された一つのバスマスタに対するメモリデータの先読み制御方法であって、当該選択されたバスマスタを判別する信号と、転送タイプを判別する信号とに基づいて先読み制御を行うか否かを判定するようにしている。
【００２０】
請求項２に係る先読み制御方法は、複数のバスマスタとメモリが接続されたシステムに於ける選択された一つのバスマスタに対するメモリデータの先読み制御方法であって、当該選択されたバスマスタを判別する信号と、転送タイプを判別する信号とに基づいて先読み制御を行うと判定された場合に、当該先読みアドレスを当該バスマスタの判別信号に基づいて制御可能としている。
【発明の効果】
【００２１】
以上詳細に説明したように、請求項１に係る発明では複数のマスタからのアクセスを受け取るメモリコントローラにおいて、バスマスタを判別する信号と、転送タイプを判別する信号とに基づいて、先読み制御を行うか否かを、マスタごとに制御することで、先読みの精度を高めることが出来、不要な先読みアクセスを減らすことで、消費電力増加を抑えることができる。
【００２２】
また、請求項２に係る発明では、アクセスするアドレスが非連続の時も、マスタごとに適切な先読みアドレスを予測することができ、先読みの精度を高め、消費電力増加を抑えると共に、先読み成功による性能向上も実現する。
【発明を実施するための最良の形態】
【００２３】
以下、この発明の実施の形態について、図面を参照して詳細に説明する。尚、各図面は、この発明が理解できる程度に概略的に示してあるに過ぎない。
【００２４】
［第１の実施形態］
第１の実施形態に於ける先読み制御方法は、複数のマスタからのアクセスを受けるメモリコントローラのリードバッファの先読み制御において、マスタからのアクセスを区別することで、マスタごとの動作の特徴より、先読み精度を高める方法である。図１は、この実施形態に於けるシステム１０の構成を示した図であり、図２は、その動作を説明するためのタイムチャートである。
【００２５】
図１において、システムバス１１には、各マスタ（ＣＰＵ（１２）、マスタ１（１３）、マスタ２（１４））から出力されるａｄｄｒ，ｂｕｒｓｔと、スレーブからの応答信号であるｒｅａｄｙと、リードデータを示すｒｄａｔａ等の各信号が入出力される。ａｄｄｒはアクセス先のアドレスを示し、ｂｕｒｓｔは転送タイプを示す。ｂｕｒｓｔとしては予め転送数の決まった”ＦＩＸＥＤ”転送と転送数の決まっていない”ＮＯＴＦＩＸＥＤ”転送がある。
【００２６】
システムバス１１には、ＣＰＵ（１２）、マスタ１（１３）、マスタ２（１４）、メモリコントローラ１５が接続されており、ＣＰＵ、マスタ１、マスタ２はシステムバス１１の使用要求を、それぞれ、バス要求信号であるｂｕｓｒｅｑ０，ｂｕｓｒｅｑ１，ｂｕｓｒｅｑ２等の信号を用いてアービタ１６に要求する。アービタ１６は要求を受けると、１つのマスタにシステムバス１１の許可信号を与える。ｂｕｓｇｒａｎｔ０，ｂｕｓｇｒａｎｔ１，ｂｕｓｇｒａｎｔ２は、それぞれＣＰＵ、マスタ１、マスタ２に対する許可信号に相当する。
【００２７】
許可信号を受けたマスタはシステムバスを使用することができ、ａｄｄｒ，ｂｕｒｓｔをメモリコントローラ１５に対して出力する。一方メモリコントローラ１５は、外部にメモリ１７を接続しており、このメモリ１７とシステムバス１１の間を制御する機能を有している。このメモリコントローラ１５は、システムバス１１からのアクセスに対して、メモリ制御部１５ａにて、アドレス信号（ｍａｄｄｒ），及び制御信号（ｍｃｔｌ）を生成し、メモリ１７にアクセスを行い、メモリ１７からの読み取りデータ（ｍｄａｔａ）を、読み取りデータ（ｒｄａｔａ）としてシステムバス１１に出力する。メモリ制御部１５ａは、マスタからのアクセスに対して、応答が完了したことを示すｒｅａｄｙ信号をｒｄａｔａと一緒に出力する。これにより、各マスタは自分の出力したアクセスに対する応答タイミングとリードデータを得ることが出来る。
【００２８】
また図１に示したメモリコントローラ１５は、更に、リードバッファ１５ｂを備えており、マスタからのアドレス信号（ａｄｄｒ）の示す内容が既にリードバッファ１５ｂ内に存在する場合には、メモリ制御部１５ａはメモリ１７に対してアクセスを行わず、リードバッファ１５ｂからのデータをメモリの読み取りデータ（ｒｄａｔａ）として返送する。この時、メモリからｍｄａｔａを得てｒｅａｄｙ応答を行うより、高速にｒｅａｄｙを返すことが出来る。
【００２９】
アービタ１６は、現在システムバス１１をどのマスタが使用しているか判別可能な信号（ｍａｓｔｅｒ）をメモリコントローラ１５に出力する。この信号（ｍａｓｔｅｒ）はアービタより容易に生成することができる。”ｐｒｅｆｅｔｃｈ”信号生成部１５ｃは、信号（ｍａｓｔｅｒ、ｂｕｒｓｔ、ｒｅａｄｙ、ａｄｄｒ）を入力して”ｐｒｅｆｅｔｃｈ”信号をメモリ制御部１５ａに出力し、メモリ制御部１５ａは、入力された”ｐｒｅｆｅｔｃｈ”の値に基づいて先読みを行うか否かを判断する。
【００３０】
図２は、第１の実施形態に於けるシステムの動作を示したタイムチャートであり、時刻Ｔ２で、アクセス元がマスタ１であることを示す信号（ｍａｓｔｅｒ）がアービタ１６からメモリコントローラ１５に出力され、この信号に基づく信号（ｍａｓｔｅｒｄ）が生成される。これと同時にシステムバス１１からの転送タイプを表す信号（ｂｕｒｓｔ）に基づく同期信号（ｂｕｒｓｔｄ）が”ｐｒｅｆｅｔｃｈ”信号生成部１５ｃで生成される。この場合は、ｂｕｒｓｔｄが”ＮｏｔＦＩＸＥＤ””であるので、図２の下側に例示した論理により、先読み信号”ｐｒｅｆｅｔｃｈ”＝０と設定され、先読みは行われない。
【００３１】
時刻Ｔ１１では、再度マスタ１からのアクセス要求が発生するが、この場合の転送タイプを示す信号（ｂｕｒｓｔ）から生成される同期信号（ｂｕｒｓｔｄ）が”ＦＩＸＥＤ”となっているので、同図の論理に従って、”ｐｒｅｆｅｔｃｈ”信号生成部１５ｃは”ｐｒｅｆｅｔｃｈ”＝１と設定して、先読み制御を行うようにメモリ制御部１５ａに対して指示する。これにより、アドレスＡ＋４，Ａ＋５に引き続いてアドレスＡ＋６のデータが先読みされる。
【００３２】
［第２の実施形態］
第２の実施形態に係る先読み制御方法では、複数のマスタからのアクセスを受けるメモリコントローラのリードバッファの先読み制御において、マスタからのアクセスを区別することで、マスタごとの動作の特徴より、次のアドレスが非連続の場合でも先読み精度を高める方法である。図３は、第２の実施形態に於けるシステム構成図である。
【００３３】
この実施形態に於けるシステムは、第１の実施形態に於けるシステムと同様に、システムバス３１，とアクセス要求を提出するマスタとしてのＣＰＵ（３２）、マスタ１（３３）、マスタ２（３４）、及びバスのアクセス要求を調停するアービタ３６、外部メモリ３７とシステムバス３１との間の制御を行うメモリコントローラ３５を備えている。また、メモリコントローラ３５は、第１の実施形態と同様に、メモリ制御部３５ａ、リードバッファ３５ｂ、”ｐｒｅｆｅｔｃｈ”信号生成部３５ｃを備えている。
【００３４】
この実施形態と第１の実施形態に於けるシステム構成の相違点は、”ｐｒｅｆｅｔｃｈ”信号生成部３５ｃに、マスタごとの先読みアドレスのルールが記載されている先読みアドレスオフセットテーブル３８が設けられている点である。例えば、アクセス要求を提出しているマスタがＣＰＵ（３２）である場合は、先読みアドレスとして、現在のアドレスに＋１した値が適切なら、テーブル内のＣＰＵの個所に＋１が設定される。マスタ１からのアクセス要求の場合に、先読みアドレスとして、現在のアドレスに＋８した値が適切なら、テーブル内のマスタ１の個所に＋８を設定しておく。マスタ２の場合も同様にテーブル内の対応するアドレスに適切な値が設定される。
【００３５】
メモリ制御部３５ａは”ｐｒｅｆｅｔｃｈ”信号で先読みを行う時、先読みアドレスオフセットテーブル３８からのｏｆｆｓｅｔの値を現在のアドレスに加算して先読みアドレスを生成する。動作タイミングは第１の実施形態に於ける動作と同様である。
【図面の簡単な説明】
【００３６】
【図１】本発明の方法が実装される第１の実施形態に於けるシステムの構成を示した図である。
【図２】第１の実施形態に於けるシステムの動作を説明するためのタイムチャートである。
【図３】本発明の方法が実装される第２の実施形態に於けるシステムの構成を示した図である。
【図４】複数のマスタを備える従来のシステム４０の構成を示す図である。
【図５】マスタからのアクセスに対して先読みを行い、次のアクセスに対して先読みが成功した場合の従来の具体例を示すタイムチャートである。
【図６】先読みが失敗した場合の従来の具体例を示すタイムチャートである。
【符号の説明】
【００３７】
１１，３１    システムバス
１２，３２    ＣＰＵ
１３，３３    マスタ１
１４，３４    マスタ２
１５，３５    メモリコントローラ
１５ａ，３５ａ  メモリ制御部
１５ｂ、３５ｂ  リードバッファ
１５ｃ、３５ｃ  ”ｐｒｅｆｅｔｃｈ”信号生成部
１６，３６    アービタ
１７，３７    メモリ
【図１】
2006251923.tif 000003
【図２】
2006251923.tif 000004
【図３】
2006251923.tif 000005
【図４】
2006251923.tif 000006
【図５】
2006251923.tif 000007
【図６】
2006251923.tif 000008