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