(57)【要約】【課題】メモリアクセスをより効率的にすることを目的とする。【解決手段】１つ又は複数のバスマスタより受けたメモリアクセス要求のページミスを検出し、ページミスが検出されると、ページミスが発生したメモリアクセス要求と依存関係がないバンクを決定し、決定されたバンクで活性化されているページに対するプリフェッチのアドレスが指定されると、ページミスに係る処理の期間にプリフェッチのアドレスを指定してプリフェッチコマンドを発行することによって課題を解決する。【選択図】図１
2011100273.tif 000002
【特許請求の範囲】
【請求項１】
バンクを有する１つ又は複数のバスマスタからのメモリアクセス要求を受けてメモリデバイスへのコマンドを発行するメモリ制御回路であって、
前記メモリデバイスに対するプリフェッチのアドレスを指定する指定手段と、
前記１つ又は複数のバスマスタより受けたメモリアクセス要求のページミスを検出する検出手段と、
前記検出手段によりページミスが検出されると、前記ページミスが発生したメモリアクセス要求と依存関係がないバンクを決定する決定手段と、
前記指定手段により、前記決定手段により決定されたバンクで活性化されているページに対するプリフェッチのアドレスが指定されると、前記ページミスに係る処理の期間に前記プリフェッチのアドレスを指定してプリフェッチコマンドを発行する発行手段と
を有することを特徴とするメモリ制御回路。
【請求項２】
前記指定手段は、前記１つ又は複数のバスマスタより受けたメモリアクセス要求についてのアクセス履歴より、前記メモリアクセス要求に係る近傍アドレスを指定することを特徴とする請求項１記載のメモリ制御回路。
【請求項３】
前記決定手段は、依存関係がないバンクが複数存在した場合、前記複数のバンクのうち最近アクセスされたバンクを選択することを特徴とする請求項１又は２記載のメモリ制御回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御回路に関する。
【背景技術】
【０００２】
ＤＲＡＭの内部は、複数のバンクで構成され、各バンクは、ページと称される複数の領域に分割されている。図５に、ＤＲＡＭへのメモリアクセス時の処理に係るフローチャートを示す。ＤＲＡＭに対するメモリアクセスでは、バンク及び行アドレスを指定し、ページを活性化させるコマンド（アクティブコマンド）を発行することによりページの選択が行われる（以下、ページオープンと称する。）。その後に、列アドレスを指定し、リードコマンド又はライトコマンドといった列コマンド（メモリアクセスコマンド）を発行することでＤＲＡＭに対するメモリアクセスが実現される。継続して同一のページ内のアドレスに対してメモリアクセスする場合には、再度ページオープン処理を行う必要は無く、列アドレスを指定し、メモリアクセスコマンドを発行することによりアクセス可能である。
しかしながら、同一バンク内で活性化されているページ以外の別のページへメモリアクセスする場合には、一旦バンク内の活性化されているページを非活性化するコマンド（プリチャージコマンド）を発行する。その後に、アクセス対象のページオープンに係る処理を行った後に、メモリアクセスコマンドを発行する必要がある。このように、活性化されているページ以外の別のページへメモリアクセスすることは、ページミスと称され、それに要するプリチャージコマンドの発行とページオープンに係る処理とに要する期間は、ページミスペナルティと称される。
【０００３】
一般にＬＳＩを用いて構築されるシステムは、内部にＣＰＵやハードウエア処理モジュールを搭載すると共に、外部記憶デバイスを主記憶としてＤＲＡＭを搭載し、システムとしての機能を実現している。半導体に関する技術の向上に伴い、ＬＳＩ内部の動作周波数が高速化しており、ＬＳＩ内部の処理を高速に行うことが可能になっている。しかしながら、ＬＳＩ内部の処理において高速化が進む一方、ＤＲＡＭといった外部記憶デバイスへのアクセス時間の向上は少ない。
近年、主流となっているＤＤＲ（Double Data Rate）と称されるクロックの立ち上がりと立ち下がりとの双方に同期してデータ転送するメモリデバイスでは、メモリアクセス帯域が大幅に改善されている。しかしながら、メモリデバイスへのアクセス応答時間は、改善されていない。ＬＳＩ内部の動作周波数の向上に対し、メモリデバイスへのアクセス時間が変わらない場合、特に読み出し（リード）を中心に行う処理においては、その応答に要するクロック数が増加する傾向にあり、周波数向上分の性能改善が困難となっている。
このようなリード時の応答時間の性能への影響を回避する手法としてプリフェッチと称される手法が一般的に用いられている。プリフェッチとは、データが必要となるサイクルに先立って必要となるデータを保持し、データを必要となったタイミングで、保持されたデータを使用する手法である。プリフェッチを用いることによりメモリデバイスへのアクセス応答時間を隠蔽し、バスマスタは見かけ上、短時間でリードに係る処理を終了することが可能となるため、プリフェッチは、システムでの処理性能の向上に寄与し得る。
【０００４】
そこで、メモリデバイスに対するアクセス履歴やアクセス特性情報を参照して、連続領域アクセスの傾向がある場合は、バスマスタからのリード要求（メモリアクセスコマンドの発行）に先立ちプリフェッチを行う技術が開示されている（特許文献１参照。）。また、過去のアクセス履歴と過去のアクセスのアドレス差分とを保持して参照し、過去のアドレス差分と同一であった場合に、そのアドレス差分を持つメモリ領域についてプリフェッチする技術が開示されている（特許文献２参照。）。これらの先行技術では、バスマスタからのメモリアクセスに先立ちプリフェッチコマンドを発行してデータを保持することで、短期間でリードに係る処理を終了することが可能となる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０９−１９８３００号公報
【特許文献２】特開平１１−１６７５２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のプリフェッチの手法においては、プリフェッチのためのプリフェッチコマンドが特定の事象やタイミングにて発行される。このため、複数のバスマスタや複数のプロセスからのメモリアクセスがプリフェッチアクセスと競合した場合、メモリアクセスのアクセス時間を増加させるといった問題が生じていた。例えば、特許文献１に示されるようなプリフェッチの事象が発生すると同時に、あるバスマスタからのメモリアクセスが競合した場合は、バスマスタからのメモリアクセスが行われる以前にプリフェッチアクセス（リード処理）が行われることになる。よって、バスマスタからの明示的なメモリアクセスの応答時間が長くなりバスマスタの処理性能を低下させてしまう。
また、特許文献２に記載の技術おいては、あるアドレス差分をもったメモリ領域のプリフェッチアクセスと他のバスマスタからのメモリアクセスとでページミスが発生すると、ページミスペナルティが印加されて処理性能を低下させるおそれがある。図６に、バスマスタからのメモリアクセスとプリフェッチアクセスとの競合に関する影響を表す波形図を示す。ここでは、ａ及びｂのメモリアクセスがバスマスタからのアクセスであり、ａ及びｂともに、ページヒットのアクセスであると仮定する。
図６（ａ）では、プリフェッチコマンドが発行されていない場合を示し、図６（ｂ）では、ａとｂとの転送間でｃというプリフェッチアクセスが挿入された場合を示している。このときｃは、ａ及びｂのページに対してページミスとなるアドレス空間へのアクセスとする。図６（ａ）では、３サイクルでメモリアクセスコマンドの発行が行われているのに対して、図６（ｂ）では、ａとｂとの間にｃのプリフェッチコマンドを発行するために、ページミスペナルティが発生した上でリードコマンドが発行される。更にｂへのアクセス発行時には再度ページミスペナルティが加えられるために、本来バスマスタが必要とするアクセスに対して余分なメモリアクセスの応答時間が加算されてしまう。
このように、プリフェッチアクセスが現在必要とされるメモリアクセスを阻害してしまい、ある処理モジュールの性能の向上を引き出すためのプリフェッチが他の処理の性能を低下させる問題がある。
【０００７】
本発明はこのような問題点に鑑みなされたもので、メモリアクセスをより効率的にすることを目的とする。
【課題を解決するための手段】
【０００８】
そこで、本発明は、バンクを有する１つ又は複数のバスマスタからのメモリアクセス要求を受けてメモリデバイスへのコマンドを発行するメモリ制御回路であって、前記メモリデバイスに対するプリフェッチのアドレスを指定する指定手段と、前記１つ又は複数のバスマスタより受けたメモリアクセス要求のページミスを検出する検出手段と、前記検出手段によりページミスが検出されると、前記ページミスが発生したメモリアクセス要求と依存関係がないバンクを決定する決定手段と、前記指定手段により、前記決定手段により決定されたバンクで活性化されているページに対するプリフェッチのアドレスが指定されると、前記ページミスに係る処理の期間に前記プリフェッチのアドレスを指定してプリフェッチコマンドを発行する発行手段とを有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、メモリアクセスをより効率的にすることができる。
【図面の簡単な説明】
【００１０】
【図１】メモリ制御回路を含むシステムに係る構成の例を示す図である。
【図２】メモリバンク管理機構で管理されるバンク管理情報の例を示す図である。
【図３】メモリ制御回路の処理に係るフローチャートを示す図である。
【図４】メモリバンク管理機構で管理されるバンク管理情報の例を示す図である。
【図５】メモリアクセス制御の処理に係るフローチャートを示す図である。
【図６】メモリアクセス波形の例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について図面に基づいて説明する。
【００１２】
図１に、本実施形態に係るメモリ制御回路を含むシステムに係る構成の例を示す。本システムは、１つ又は複数のバスマスタ１０３を含んで構成される。バスマスタ１０３は、バス１０２を介してメモリコントローラ１００（メモリ制御回路）に接続され、メモリコントローラ１００を介して外部に接続されるメモリデバイス１０１へのメモリアクセス要求（コマンド等）を発行する。本実施形態では、メモリデバイス１０１として、行コマンド及び列コマンドに分割してアクセスされるダイナミックランダムアクセスメモリ（ＤＲＡＭ）を想定する。メモリコントローラ１００は、バスマスタ１０３のメモリアクセス要求を受信するバスインターフェース１０９を有し、メモリアクセス要求は、コマンドバッファ１０８を介してメモリアクセス制御部１０４に順次転送される。
プリフェッチアドレスリスト１０６は、プリフェッチの候補となるアドレス（プリフェッチアドレス）を保持する。本実施形態では、バスマスタ１０３からのメモリアクセス要求（リードアクセス）を履歴情報として保持し、履歴情報からバンク毎にプリフェッチアドレスを算出する。例えば、バンク０の０番地へのリードアクセスが発行されると、プリフェッチアドレスリスト１０６には、バンク０の２０番地をプリフェッチアドレスとして保持する。プリフェッチアドレスリスト１０６には、少なくともバンク毎のプリフェッチアドレスがリストとして保持されるものとする。例えば、４バンクのメモリデバイスが４チップセレクト（デバイス）分接続されるシステムにおいては、プリフェッチアドレスリスト１０６には、少なくとも１６アドレスが保持される。本実施形態においては、プリフェッチアドレスをリードアクセス受信時に、その近傍のアドレス（近傍アドレス）として採用したが、本主旨を逸脱しない限り種々の変更が可能である。
【００１３】
プリフェッチ制御部１０７は、後述するメモリアクセス制御部１０４からのバンク及び行アドレスの指定に従い、指定されたバンクと行アドレスとが合致するプリフェッチアドレスをプリフェッチアドレスリスト１０６から選択する。そして、選択されたプリフェッチアドレスは、メモリアクセス制御部１０４に伝達され、プリフェッチコマンドがメモリデバイス１０１に対して発行される。アドレス指定を行うメモリアクセス制御部１０４によってプリフェッチされたデータ（リードデータ）は、プリフェッチアドレスと関連付けられてプリフェッチバッファ１１０に保持される。
バスマスタ１０３より発行されたメモリアクセス要求は、バスインターフェース１０９を介してコマンドバッファ１０８へ伝達される。コマンドバッファ１０８は、リード（読み出しアクセス）又はライト（書き込みアクセス）のアクセス方向を検出する。また、コマンドバッファ１０８は、アクセス対象のアドレスと、アクセス方向と、プリフェッチバッファ１１０に保持されているプリフェッチされたアドレスとに係る比較を行う。
例えば、メモリアクセスが読み出し方向であり、アクセス対象のアドレスがプリフェッチバッファ１１０に保持されているアドレスと同一である場合、コマンドバッファ１０８は、バスインターフェース１０９を介してバスマスタ１０３にリードデータを送信する。そして、コマンドバッファ１０８は、該当メモリアクセス要求をコマンドバッファ１０８から削除する。
メモリアクセスが書き込み方向であり、アクセス対象のアドレスがプリフェッチバッファ１１０に保持されているアドレスと同一である場合は、コマンドバッファ１０８は、プリフェッチバッファ１１０に保持されている該当エントリーを廃棄又は無効化を行う。このとき、該当メモリアクセス要求は、コマンドバッファ１０８に一旦保持され、あるタイミングでメモリアクセス制御部１０４に伝達される。上記２つの場合に該当しないときは、該当メモリアクセス要求は、コマンドバッファ１０８に一旦保持され、あるタイミングでメモリアクセス制御部１０４に伝達される。
【００１４】
メモリアクセス制御部１０４は、メモリバンク管理機構１０５を有している。メモリバンク管理機構１０５は、発行されたメモリアクセス要求のアドレスよりメモリデバイス１０１のバンクアドレス、行アドレス、及び列アドレスを算出すると共に、メモリデバイス１０１の各バンクの活性化状態を参照する。そして、メモリバンク管理機構１０５は、接続されるメモリデバイス１０１の各バンクについて、現在活性化されている行アドレス情報（バンク管理情報）を保持している。
図２に、メモリバンク管理機構１０５におけるバンク管理情報の例を示す。図２では、２つのデバイスで各デバイスが４バンクの構成のメモリデバイス１０１に関するバンク管理情報を示している。デバイス（Device）とバンク（Bank）との組み合わせに対して、ページがオープン状態であるか否かを示すＯｐｅｎＦｌａｇ（Open Flag）とオープンとなる行アドレス（Row Address）とをテーブルとして保持している。
例えば、デバイス０のバンク０の組は、ページがクローズされた状態であり、デバイス０のバンク１の組は、行アドレス（0x1234）がオープン状態であることを示している。
【００１５】
また、メモリアクセス制御部１０４は、バスマスタ１０３からのメモリアクセス要求について、外部のメモリデバイス１０１との通信のためのアクセスプロトコルに適した変換を行い、メモリアクセスコマンドの発行処理を実施する。図３に、メモリアクセス制御部１０４の処理に係るフローチャートを示す。
メモリアクセス制御部１０４は、メモリアクセス要求より算出されたバンクアドレス及び行アドレスと、メモリバンク管理機構１０５に保持されているアクセス対象のバンクに対応する活性化されている行アドレスとに係る比較を行う。当該デバイスとバンクの組について、ページオープンの状態で保持されている行アドレスと、発行されたメモリアクセス要求の行アドレスとが同一であれば、メモリアクセス制御部１０４は、ページヒットとして列コマンドを発行してメモリアクセスを行う。
他方、異なる行アドレスである場合は、メモリアクセス制御部１０４は、ページミスの処理として以下の処理を実施する。メモリアクセス制御部１０４は、ページミスが発生すると判別すると、該当活性化されているバンクについてのプリチャージコマンドを発行する。そして、メモリアクセス制御部１０４は、該当バンクと依存関係がない、かつ活性化されているバンクと行アドレスとの組み合わせをプリフェッチ制御部１０７に対して通知を行う。その後、メモリアクセス制御部１０４は、プリフェッチ制御部１０７よりプリフェッチアドレスの通知を受ける。ここでいう、該当バンクと依存関係がないバンクとは、該当バンクのプリチャージ中に列コマンドが発行可能なバンクのことである。依存関係がないバンクが複数存在した場合、バンク選択の方法は任意である。本実施形態では、依存関係がないバンクのうち最近アクセスされたバンクを選択（決定）するものとする。
【００１６】
図４に、本実施形態におけるメモリバンク管理機構１０５で保持されるバンク管理情報の例を示す。バンク管理情報には、デバイス（Device）、バンク（Bank）、ＯｐｅｎＦｌａｇ（Open Flag）、行アドレス（Row Address）に加え、最近アクセスされた順番を示すアクセス履歴（History）が含まれる。図４（ａ）の例では、最近アクセスされたデバイス及びバンクの組は（０、１）であり、その次が（１、０）であることを示している。
図４（ｂ）では、図４の（ａ）の状態からデバイス０のバンク２に対して行アドレス（0x0400）へのページミスに係るメモリアクセス要求が発行された場合のバンク管理情報の例を示す。デバイス及びバンクの組（０、２）が最新のアクセスとして示され、その他のデバイス及びバンクの組の履歴情報をそれぞれ更新することで最新の状態を保持している。
本実施形態では、同一のデバイスであっても、依存関係がないバンクである場合、本デバイスを含めたデバイスを対象として最近アクセスされた組み合わせが選択され、プリフェッチ制御部１０７に対して本組み合わせが通知される。この例では、組み合わせとして、デバイス０、バンク１、行アドレス（0x1234）が選択される。なお、上記場合において、依存関係があるバンクを有するデバイスであるときは、他のデバイスを対象として最近アクセスされた組み合わせ（例えば、デバイス１、バンク０、行アドレス（0x0040））が選択される構成を採用してもよい。
【００１７】
メモリアクセス制御部１０４は、プリフェッチ制御部１０７より受信したプリフェッチアドレスに対するプリフェッチリード（プリフェッチコマンド）を発行し、メモリデバイス１０１からの読み出し結果（リードデータ）をプリフェッチバッファ１１０に伝達する。メモリアクセス制御部１０４は、プリフェッチコマンドを発行後、ページミスに係る処理のプリチャージ期間の終了を待って行アドレスの活性化を行い、バスマスタ１０３から要求されたメモリアクセス（列コマンド）をメモリデバイス１０１に対して発行する。なお、バスマスタ１０３より発行されたデバイスとバンクの組のページがオープンされていない場合は、メモリアクセス制御部１０４は、該当バンクの活性化を行う。
ここで、メモリアクセス制御部１０４は、活性化コマンド（アクティブコマンド）の発行と列コマンドの発行との間にプリフェッチリード（プリフェッチコマンド）を発行できるか否かの判定を行う。より具体的には、メモリアクセス制御部１０４に別途動作パラメータとして設定されるＲＡＳ−ＣＡＳディレイ値（ｔＲＡＳ）を参照する。ＲＡＳ−ＣＡＳディレイ後に発行される列コマンドによるメモリデバイス１０１に対するデータ転送とプリフェッチコマンドによるデータ転送の衝突の有無を判定する。衝突しないと判定した場合は、メモリアクセス制御部１０４は、活性化コマンド（アクティブコマンド）の発行に引き続き、プリフェッチコマンドを発行し、列コマンドを発行する。その際、プリフェッチコマンドの発行先のアドレス（プリフェッチアドレス）の選択については、上記に示す内容と同様である。
【００１８】
本実施形態では、プリチャージコマンドの発行、プリフェッチ、ページミスに係る処理のバンク活性化、メモリアクセスコマンドの発行というシーケンスを示している。しかしながら、本主旨は、ページミスペナルティ時にプリフェッチコマンドを発行することであり、上記シーケンスに限られるものではない。また、ページミスペナルティのサイクル如何によっては、プリフェッチコマンドを複数回発行することも可能である。
上述した構成によれば、プリフェッチコマンドの発行時に生じていたバスマスタ１０３へのメモリアクセスの応答時間の増加を低減すると共に、プリフェッチによる性能の向上の効果を得ることができる。また、メモリバス効率を低下させる要因となるページミスペナルティにおいてプリフェッチコマンドを発行することにより、システムが使用するメモリバス効率が改善され、システムの性能の向上を可能とする。
【００１９】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００２０】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００２１】
１００  メモリ制御回路、１０４  メモリアクセス制御部、１０５  メモリバンク管理機構、１０６  プリフェッチアドレスリスト、１０７  プリフェッチ制御部、１０８  コマンドバッファ、１０９  バスインターフェース、１１０  プリフェッチバッファ
【図１】
2011100273.tif 000003
【図２】
2011100273.tif 000004
【図３】
2011100273.tif 000005
【図４】
2011100273.tif 000006
【図５】
2011100273.tif 000007
【図６】
2011100273.tif 000008