(57)【要約】【課題】プリチャージを行うコマンドの発行を適応的に制御することにより、メモリアクセス性能を向上させる。【解決手段】対応するバンクについてのコマンドを発行するメモリ制御装置は、対応するバンクについての転送要求を格納し、先頭に格納された転送要求の列アドレスと後続の複数の転送要求の列アドレスのそれぞれとを総当たりで比較し、先頭に格納された転送要求について、比較結果に応じて、プリチャージ付きのコマンドを発行するか、プリチャージ無しのコマンドを発行するかを判定し、判定されたコマンドを発行する。【選択図】  図１
2014092813.tif 000002
【特許請求の範囲】
【請求項１】
メモリを制御するコマンドを発行するメモリ制御装置であって、
入力された転送要求に基づいて、対応するバンクについてのコマンドを発行するコマンド制御手段を有し、
前記コマンド制御手段は、
前記対応するバンクについての転送要求を格納する転送要求格納手段と、
前記転送要求格納手段の先頭に格納された転送要求の列アドレスと後続の複数の転送要求の列アドレスのそれぞれとを総当たりで比較する転送要求比較手段と、
前記転送要求格納手段の先頭に格納された転送要求について、前記転送要求比較手段による比較結果に応じて、プリチャージ付きのコマンドを発行するか、プリチャージ無しのコマンドを発行するかを判定するコマンド判定手段と、
前記コマンド判定手段で判定されたコマンドを発行するコマンド発行手段とを備えることを特徴とするメモリ制御装置。
【請求項２】
前記コマンド判定手段は、前記後続の複数の転送要求の列アドレスの中に、前記転送要求格納手段の先頭に格納された転送要求の列アドレスと同一のものがある場合は、プリチャージ無しのコマンドを発行し、前記後続の複数の転送要求の列アドレスが、前記転送要求格納手段の先頭に格納された転送要求の列アドレスと異なる場合は、プリチャージ付きコマンドの設定が有効か否かの判断に基づき、プリチャージ付きのコマンドを発行するか、プリチャージ無しのコマンドを発行するかを判定することを特徴とする請求項１に記載のメモリ制御装置。
【請求項３】
前記コマンド判定手段は、前記後続の複数の転送要求の列アドレスの中に、前記転送要求格納手段の先頭に格納された転送要求の列アドレスと同一のものがある場合は、プリチャージ無しのコマンドを発行し、前記後続の複数の転送要求の列アドレスが、前記転送要求格納手段の先頭に格納された転送要求の列アドレスと異なる場合は、前記転送要求格納手段の先頭に格納された転送要求がバースト中断が可能な転送か否かの判断に基づき、プリチャージ付きのコマンドを発行するか、プリチャージ無しのコマンドを発行するかを判定することを特徴とする請求項１に記載のメモリ制御装置。
【請求項４】
前記コマンド判定手段は、前記後続の複数の転送要求の列アドレスの中に、前記転送要求格納手段の先頭に格納された転送要求の列アドレスと同一のものがある場合は、プリチャージ無しのコマンドを発行し、前記後続の複数の転送要求の列アドレスが、前記転送要求格納手段の先頭に格納された転送要求の列アドレスと異なる場合は、メモリのコマンドバスが混雑するか否かの判断に基づき、プリチャージ付きのコマンドを発行するか、プリチャージ無しのコマンドを発行するかを判定することを特徴とする請求項１に記載のメモリ制御装置。
【請求項５】
前記コマンドバスの混雑状態は、前記転送要求格納手段に格納される転送要求の数や転送要求に含まれる列アドレスで判定されることを特徴とする請求項４記載のメモリ制御装置。
【請求項６】
前記コマンド判定手段は、前記後続の複数の転送要求の列アドレスの中に、前記転送要求格納手段の先頭に格納された転送要求の列アドレスと同一のものがある場合は、プリチャージ無しのコマンドを発行し、前記後続の複数の転送要求の列アドレスが、前記転送要求格納手段の先頭に格納された転送要求の列アドレスと異なる場合は、前記後続の転送要求が空か否かの判断に基づき、プリチャージ付きのコマンドを発行するか、プリチャージ無しのコマンドを発行するかを判定することを特徴とする請求項１に記載のメモリ制御装置。
【請求項７】
前記コマンド発行手段は、対応するバンクへの転送要求であった場合のみ、前記コマンド判定手段によって判定されたコマンドを発行することを特徴とする請求項１乃至６のいずれか１項に記載のメモリ制御装置。
【請求項８】
入力された転送要求を、バンクごとに振り分けて、それぞれのバンクに対応する前記コマンド制御手段へ入力する転送要求振り分け手段を更に有することを特徴とする請求項１乃至７のいずれか１項に記載のメモリ制御装置。
【請求項９】
所定のルールに従って、それぞれのバンクに対応する前記コマンド制御手段によって発行されたコマンドのいずれかを選択して前記メモリを制御するコマンドを発行するコマンド選択手段を更に有することを特徴とする請求項１乃至８のいずれか１項に記載のメモリ制御装置。
【請求項１０】
前記メモリの列アドレスの現在の選択状態を記憶する列アドレス状態記憶手段を更に備え、
前記コマンド判定手段は、前記選択状態が前記転送要求格納手段の先頭に格納された転送要求の列アドレスではない場合に、プリチャージ付きのコマンドを発行するか、プリチャージ無しのコマンドを発行するかを判定する前に、列アドレスを指定するコマンドを発行するか、不活性化するコマンドを発行するかを判定することを特徴とする請求項１乃至９のいずれか１項に記載のメモリ制御装置。
【請求項１１】
前記メモリはDRAMであることを特徴とする請求項１乃至１０のいずれか１項に記載のメモリ制御装置。
【請求項１２】
複数のバンクを備えるメモリを制御するために、入力された転送要求に基づいて、当該転送要求が示すバンクについてのコマンドを発行するメモリ制御装置であって、
複数の転送要求を受信する受信手段と、
前記複数の転送要求を格納するコマンドキューと、
前記コマンドキューの先頭に格納されている転送要求を、後続の複数の転送要求のそれぞれと比較する比較手段と、
前記比較手段による比較結果に基づいて、前記後続の複数の転送要求のうち前記コマンドキューの先頭に格納されている転送要求と同じバンクに対する転送要求であって、前記コマンドキューの先頭に近い転送要求について、前記コマンドキューの先頭の転送要求と同じ列を指定しているか否かに応じて、プリチャージ付きのコマンドを発行するかプリチャージ無しのコマンドを発行するかを制御する発行手段とを備えることを特徴とするメモリ制御装置。
【請求項１３】
入力された転送要求に基づいて、対応するバンクについてのコマンドを発行するメモリ制御方法であって、
前記対応するバンクについての転送要求を格納する転送要求格納手段の先頭に格納された転送要求の列アドレスと後続の複数の転送要求の列アドレスのそれぞれとを比較する比較工程と、
前記転送要求格納手段の先頭に格納された転送要求について、前記比較に応じて、プリチャージ付きのコマンドを発行するか、プリチャージ無しのコマンドを発行するかを判定する判定工程と、
前記判定工程で判定されたコマンドを発行する工程とを備えることを特徴とするメモリ制御方法。
【請求項１４】
複数のバンクを備えるメモリと、当該メモリに対する複数の転送要求を保持するコマンドキューとを有する情報処理装置を
前記コマンドキューの先頭に格納されている転送要求を、後続の複数の転送要求とそれぞれ比較する比較手段と、
前記比較手段による比較結果に基づいて、プリチャージ付きのコマンドを発行するコマンド発行手段として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、使用するメモリアクセスコマンドを制御するメモリ制御装置、メモリ制御方法およびプログラムに関する。
【背景技術】
【０００２】
コンピュータシステムの主記憶装置として、一般的に同期DRAMが使用されている。コンピュータシステムの高機能化、高性能化に伴い、同期DRAMのアクセス性能に対する要求は高まっており、その性能を最大限に引き出すために、これまで同期DRAMのアクセスを制御するメモリ制御装置の様々な手法が提案されている。
【０００３】
同期DRAMについて複数のバンクへのメモリアクセスを独立に制御する場合に、複数のコマンドの発行タイミングが重なる場合がある。同期DRAMの仕様として、複数のコマンドを同一タイミングで発行することは出来ないため、いずれかのコマンドの発行を遅らせる必要があった。
【０００４】
特許文献１では、現在のメモリ転送の列アドレスと次のメモリ転送の列アドレスとを比較し、列アドレスが異なる場合は、READAコマンド（プリチャージ付きREADコマンド）またはWRITEAコマンド（プリチャージ付きライトコマンド）を発行している。一方、比較の結果、列アドレスが同一である場合は、列アドレスが同一であるREADコマンドまたはWRITEコマンドを連続的に発行する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２４９８３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１に示される手法によると、現在のメモリ転送の列アドレスを次のメモリ転送の列アドレスと比較しているが、次の次以降のメモリ転送アドレスとは比較していない。従って、同一列アドレスの転送が、コマンドを発行する転送の次の次にある場合、READAコマンドまたはWRITEAコマンドが使用される。ここで、次の転送が異なるバンクの転送の場合は、プリチャージせずにアクセスが可能であるため、不要なプリチャージが発生し、転送効率が低下することとなる。
【課題を解決するための手段】
【０００７】
本発明は、上記課題に鑑みてなされたものであり、プリチャージを行うコマンドの発行を適応的に制御することにより、メモリアクセス性能を向上させることを目的とする。
【０００８】
上記目的を達成するための、本発明の一態様によるメモリ制御装置は、以下の構成を備える。すなわち、メモリを制御するコマンドを発行するメモリ制御装置であって、入力された転送要求に基づいて、対応するバンクについてのコマンドを発行するコマンド制御手段を有し、前記コマンド制御手段は、前記対応するバンクについての転送要求を格納する転送要求格納手段と、前記転送要求格納手段の先頭に格納された転送要求の列アドレスと後続の複数の転送要求の列アドレスのそれぞれとを総当たりで比較する転送要求比較手段と、前記転送要求格納手段の先頭に格納された転送要求について、前記転送要求比較手段による比較結果に応じて、プリチャージ付きのコマンドを発行するか、プリチャージ無しのコマンドを発行するかを判定するコマンド判定手段と、前記コマンド判定手段で判定されたコマンドを発行するコマンド発行手段とを備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、プリチャージを行うコマンドの発行を適応的に制御することにより、メモリアクセス性能を向上させることが可能となる。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態によるメモリ制御装置の構成図。
【図２】第１実施形態によるコマンド発行制御部の処理の流れを示す図。
【図３】第２実施形態によるコマンド発行制御部の処理の流れを示す図。
【図４】第３実施形態によるコマンド発行制御部の処理の流れを示す図。
【図５】第４実施形態によるコマンド発行制御部の処理の流れを示す図。
【図６】第５実施形態によるメモリ制御装置の構成図。
【図７】同期DRAMの構成を説明する図。
【図８】（a）はREADコマンド及びWRITEコマンドによるメモリアクセス手順、（b）はREADAコマンド及びWRITEAコマンドによるメモリアクセス手順を説明する図。
【図９】（a）はREADコマンド及びWRITEコマンドによる４バンクメモリのメモリアクセス手順、（b）はREADAコマンド及びWRITEAコマンドによる４バンクメモリのメモリアクセス手順を説明する図。
【発明を実施するための形態】
【００１１】
［第１実施形態］
まず、本実施形態で用いる同期DRAMについて説明する。同期DRAMは、図７に示すように多数の記憶要素が二次元格子状に配置され、外部から入力される行アドレス及び列アドレスの組によって、アクセス対象となる記憶要素が特定される。図７では、網掛けを施して示した記憶要素が特定される様子を表している。同期DRAMへのデータの入出力は、メモリ制御装置が以下に示すコマンドを発行することによって行う。このようなコマンドとしては、
（A）列アドレスを指定して活性化するACTIVEコマンド、
（B）行アドレスの指定とデータの出力を指示するREADコマンド、
（C）行アドレスの指定とデータの格納を指示するWRITEコマンド、
（D）非活性化（プリチャージ）を行うPREコマンド、
（E）行アドレスの指定とデータの出力、及びデータの出力後に自動的にプリチャージを行うREADAコマンド、
（F）行アドレスの指定とデータの格納、及びデータの格納後に自動的にプリチャージを行うWRITEAコマンド等のコマンドがある。この他、同期DRAMへのリフレッシュを指示するREFRESHコマンド等がある。
【００１２】
同期DRAMからのデータの読み出しは、上記のコマンドを以下のように用いて実現できる。すなわち、
（1）ACTIVEコマンドによって列アドレスを指定し、
（2）READコマンドによって行アドレスを指定してデータを出力させる。また、同期DRAMへのデータの書き込みは、
（1）ACTIVEコマンドによって列アドレスを指定し、
（2）WRITEコマンドによって行アドレスを指定してデータを格納する。
【００１３】
このとき、図７で斜線を施して示した記憶要素のように、同一の列アドレスに対応する記憶要素へ続けてアクセスする場合は、２番目以降の読み出し又は書き込みでは、上記（1）に示すACTIVEコマンドを省略し、直前のREADコマンド又はWRITEコマンドに続けて次のREADコマンドまたはWRITEコマンドを発行することが可能である。従って、同期DRAMでは同一の列アドレス上の記憶要素に連続アクセスする場合、高速なメモリアクセスが可能という特徴がある。
【００１４】
一方、直前のメモリアクセスとは異なる列アドレス上の記憶要素へアクセスする場合は、一旦PREコマンドを発行して非活性化した後、ACTIVEコマンドを発行して、その異なる列アドレスを活性化し、READ又はWRITEを実行することになる。すなわち、上述の（1）及び（2）に続けて、
（3）PREコマンドによって非活性化を指示し、
（4）ACTIVEコマンドによって異なる列アドレスを指定し、
（5）READコマンド又はWRITEコマンドによってデータのリード又はライトを行う。
【００１５】
従って、異なる列アドレスに連続してアクセスする場合にREADコマンド及びWRITEコマンド使用すると、メモリ制御装置は、図８（a）に示すコマンド列を発行することが必要になる。すなわち、READコマンドとWRITEコマンドの間に、PREコマンドとACTIVEコマンドが必要となり、コマンドの数が多くなる。そこで、このようなメモリアクセスの場合には、自動的にプリチャージを行うREADAコマンド及びWRITEAコマンドを使用することで、図８（b）に示すようにコマンドの数を少なくして、図８（a）と同じアクセスを実現できる。即ち、PREコマンドの発行を省略できるので、READコマンド及びWRITEコマンドを使った場合に比べて発行するコマンドの数を少なくすることが出来る。
【００１６】
ところで、同期DRAMは、列アドレスと行アドレスの他に、バンクと呼ばれる単位で分かれており、各バンクへのメモリアクセスを独立に行うことが出来る。異なるバンクの異なる列アドレスに連続してアクセスする場合にREADコマンド及びWRITEコマンド使用すると、メモリ制御装置は、図９（a）に示すコマンド列を発行することが必要になる。このようなメモリアクセスの場合には、図８（b）と同様に、READAコマンド及びWRITEAコマンドを使用することで、図９（b）に示すように発行するコマンドの数を少なくすることが出来る。
【００１７】
次に、本実施形態について説明する。図１は、本実施形態による情報処理装置を説明する図であり、メモリ制御装置100の概略構成が示されている。メモリ制御装置100は、CPU13などの外部からメモリ転送要求を受け取り、この要求に基づいて同期DRAMとしてのメモリ101に対しコマンドを発行してメモリアクセスを行う。受け取ったメモリ転送要求は、転送要求振分け部102によって、アクセスするバンクごと（バンク0〜3）に用意されたコマンド制御部103〜106に振り分けられる。この振り分けは、メモリ転送要求に含まれるアドレス情報をデコードして得た情報に基づいて行われる。コマンド制御部103〜106は同じ構成を有し、ここでは、バンク0に振り分けられた転送要求を処理するコマンド制御部103について説明する。なお、CPU113はROM114で保持しているプログラムや、ROM114の内容をメモリ101に展開したプログラムに沿ってシステムバス115を介してメモリ転送要求を発行する。また、図１のメモリ制御装置100ではデータの経路について省略し、コマンドの経路しか図示していない。
【００１８】
バンクごと（ここではバンク0）に振分けられた転送要求は、コマンド制御部内の転送要求キュー（コマンドキュー）107に一旦格納される。図１の例では転送要求キューは４段であり、４つの転送要求を受け付け順にFIFO方式で保持することができる。転送要求比較部108は、転送要求格納部である転送要求キュー107に格納された先頭の転送要求に含まれるアクセス先の列アドレスを、後続の転送要求の其々に含まれるアクセス先の列アドレスに対して総当たりで比較する。従って、図１の例では転送要求比較部108は先頭の列アドレスと比較できる３つの比較器（コンパレーター）を有する。その後、転送要求比較部108は、同じ列アドレスの有無を、比較結果としてコマンド判定部109に出力する。
【００１９】
各コマンド制御部103〜106の列アドレス状態記憶部111は、コマンド発行部110が発行するコマンドを監視して、自コマンド制御部103〜106に対応するバンクについて現在の列アドレスの選択状態（列アドレス、プリチャージ状態等）を記憶し、さらにこの選択状態をコマンド判定部109へ出力する。なお、選択状態にあるアクティブな列は、ページと呼称される。コマンド判定部109は、転送要求キューから先頭に格納されている要求情報を受け、この情報と、転送要求比較部108から入力される比較結果及び列アドレス状態記憶部111から入力された選択状態とに基づいて、出力するコマンドを判定する。そして、判定結果をコマンド発行部110へ出力する。コマンド発行部110は、コマンド判定部109から入力される判定結果に基づき、コマンドを発行する。コマンド選択部112は、コマンド制御部103〜106から出力されたそれぞれのバンクごとのコマンドを、所定のルールに従い選択し、選択したコマンドをメモリ101に発行する。このルールとは、例えばバンク毎に固定の優先順位で決まる場合などが考えられる。
【００２０】
図１のメモリ制御装置100は、メモリアクセスのコマンドに着目して記載されているが、当然、データの入出力用のバッファ等も有する。なお、転送要求振分け部102の前段に転送要求の優先順位を決定する調停部が有る場合もあるが、本発明の本質とは直接関係ないため不図示としている。なお、図１ではバンクが４つの場合で、コマンド制御部の数が４の場合の例を示している、バンクの数に合わせて、コマンド制御部の数を設定可能である。また、転送要求キュー107に格納される転送要求の数は、いずれかの自然数を設定可能である。
【００２１】
図２は、本実施形態によるコマンド制御部103〜106が実行する処理を示すフローチャートである。コマンド判定部109は、転送要求キュー107の先頭に格納されている要求情報を用いて列アドレスを検出する（S201）。そして、コマンド判定部109は、列アドレス状態記憶部111から入力される選択状態情報により、検出した列アドレスが、現在指定（活性化）されているか否かを判定する（S202）。指定されていない場合（S202のNo）、コマンド判定部109は、列アドレス状態記憶部111から入力される選択状態情報により、現在、列アドレスが選択されているかを確認する（S203）。列アドレスが選択されている場合（S203のYes）は、現在、次にアクセスする列アドレスと別の列アドレスが指定されていることになり、コマンド発行部110は、PREコマンドを発行する（S204）。そして引き続き、列アドレスを指定するACTIVEコマンドを発行する（S205）。別の列アドレスも指定されていないプリチャージ状態の場合（S203のNo）は、コマンド発行部110は、PREコマンドは発行しないで、ACTIVEコマンドだけを発行する（S205）。ここまでのステップで、次にアクセスする列アドレスの指定が完了する。
【００２２】
コマンド判定部109は、次にアクセスする列アドレスの指定が完了すると、その列アドレスを転送要求比較部108へ出力する。転送要求比較部108は、転送要求キュー107に格納された後続の全ての転送を比較する（S206）。後続の転送群に、これからアクセスする列アドレスと同一の列アドレスのアクセスがある場合（S206のYes）は、自動的にプリチャージを行わない（プリチャージ無しの）、READまたはWRITEコマンドを発行してメモリアクセスする（S208）。また、後続の転送に、同一列アドレスのアクセスがない場合（S206のNo）は、プリチャージ付きコマンドを使用する設定が有効かどうかを確認する（S207）。有効ではない場合（S207のNo）、自動的にプリチャージを行わない、READまたはWRITEコマンドを発行してメモリアクセスする（S208）。プリチャージ付きコマンドを使用する設定が有効の場合（S207のYes）は、自動的にプリチャージを行う、READAまたはWRITEAコマンドを発行してメモリアクセスする（S209）。そして、転送要求キュー（コマンドキュー）107が空かどうかを判定し、空でなければ（S210のNo）、処理はS201に戻り、空であれば（S210のYes）、処理は終了する。
【００２３】
上述のようなコマンド制御部の処理は、バンクごと設けられた複数のコマンド制御部によって並列に実行される。また、プリチャージ付きコマンドを使用する設定が有効かどうかを判定する手段として、転送要求ごとにプリチャージ付きコマンドの有効・無効を示す属性情報を受信して、属性情報に基づいて判定することが考えられる。あるいは、メモリ制御装置に動作モード設定手段を設け、ソフトウェアの設定により決定することも可能である。
【００２４】
このように、本実施形態では、各バンクにおいて転送要求キューに格納されている複数の転送要求の比較を行うことで、異なるバンクの転送の場合にも、READまたはWRITEコマンドを発行できる。従って、不要なプリチャージの発生を抑制でき、転送効率の低下を防ぐことができる。なお、第１実施形態では、転送要求振り分け部102により、転送要求がバンクごとに転送要求キュー107に保持される。したがって、バンクごとのアクセスが、この転送要求キュー107に格納された順番で実行されることが保証されているのであれば、S207で直後の転送要求のアドレスのみを確認するようにしてもよい。
【００２５】
［第２実施形態］
１回のメモリ転送におけるデータ量が、DRAMのバースト転送単位よりも小さい場合、DRAMに対する不要なメモリアクセスを少なくするために、DRAMにはバースト転送を中断する機能が実装されている。例えば、DDR2仕様のDRAMの場合、READコマンドまたはWRITEコマンドは中断機能が使用出来るが、READAコマンドまたはWRITEAコマンドに対するバースト中断は禁止されている。従って、READAコマンドやWRITEAコマンドを使用することで、コマンドの総発行数を少なくすることは可能であるが、バースト中断することは出来ない。そこで、本実施形態ではバースト中断の必要がないREADコマンドやWRITEについて、プリチャージ付きコマンドを用いることを検討する。
【００２６】
図３は、本実施形態によるコマンド制御部103〜106が実行する処理を示すフローチャートである。図３のS301〜S305は、それぞれ図２のS201〜S205と同様の処理であり、S306以降の処理が第１実施形態と異なる。従って、S306以降の処理について説明する。列アドレスの指定が完了すると、転送要求キュー107に格納された後続の転送を確認する（S306）。後続の転送に、同一列アドレスのアクセスがある場合（S306のYes）は、自動的にプリチャージを行わない、READまたはWRITEコマンドを発行してメモリアクセスする（S308）。また、後続の転送に、同一列アドレスのアクセスがない場合（S306のNo）は、これから発行するメモリアクセスが、バースト中断することが出来るかを確認して（S307）、バースト中断が出来ない転送の場合（S307のNo）は、自動的にプリチャージを行う、READAまたはWRITEAコマンドを発行してメモリアクセスする（S309）。バースト中断が出来る場合（S307のYes）は、自動的にプリチャージを行わない、READまたはWRITEコマンドを発行してメモリアクセスし（S310）、バースト中断が可能なタイミングでバースト中断コマンドを発行する（S311）。そして、転送要求キュー（コマンドキュー）107が空かどうかを判定し、空でなければ（S312のNo）、処理はS301に戻り、空であれば（S312のYes）、処理は終了する。
【００２７】
バースト転送の中断が出来るかの判断は、制御するDRAMデバイスの仕様と、実際に転送が必要なバースト長と、DRAMデバイスに設定したバースト長で決定する。DRAMデバイスのバースト長が、転送要求されたメモリアクセスより短い場合は、DRAMデバイスがバースト中断機能を持つ場合、バースト転送を中断することが出来る。
【００２８】
このように、本実施形態では、バースト中断のコマンド発行が必要ない場合にのみプリチャージ付きコマンドを使用することで、バースト中断の機会を奪うことを避けながらメモリアクセスを行っている。従って、転送効率の低下を防ぐことができる。
【００２９】
［第３実施形態］
図４は、本実施形態によるコマンド制御部103〜106が実行する処理を示すフローチャートである。図４のS401〜S405は、それぞれ図２のS201〜S205と同様の処理であり、S406以降の処理が第１実施形態と異なる。従って、S406以降の処理について説明する。列アドレスの指定が完了すると、転送要求キュー107に格納された後続の転送群を確認する（S406）。後続の転送群に、同一列アドレスのアクセスがある場合（S406のYes）は、自動的にプリチャージを行わない、READまたはWRITEコマンドを発行してメモリアクセスする（S408）。また、後続の転送に、同一列アドレスのアクセスがない場合（S406のNo）は、DRAMコマンド発行の混雑を予測する（S407）。DRAMコマンドが混雑しないことが予測される場合（S407のNo）は、自動的にプリチャージを行わない、READまたはWRITEコマンドを発行してメモリアクセスする（S408）。DRAMコマンドが混雑することが予測される場合（S407のYes）は、READAまたはWRITEAコマンドを発行してメモリアクセスする（S409）。そして、転送要求キュー（コマンドキュー）107が空かどうかを判定し、空でなければ（S410のNo）、処理はS401に戻り、空であれば（S410のYes）、処理は終了する。
【００３０】
DRAMコマンド発行の混雑の予測は、各コマンド制御に格納された転送要求キュー107に格納されている転送要求を確認し、この転送要求の数によって決定することが可能である。また、転送要求キュー107の転送が、異なる列アドレスの転送の数が多いか、同一の列アドレスの転送の数が多いかによって決定することも可能である。また、これらの数を閾値等と比較して決定することも可能である。
【００３１】
このように、本実施形態では、DRAMのコマンドバスの混雑状態を監視して、コマンド発行が多い混雑状態の場合、すなわち、バースト中断コマンド発行が必要ない場合にのみプリチャージ付きコマンドを使用する。これにより、バースト中断の機会を奪うことを避けながらメモリアクセスを行うことができ、転送効率低下を防ぐことができる。
【００３２】
［第４実施形態］
図５は、本実施形態によるコマンド制御部103〜106が実行する処理を示すフローチャートである。図５のS501〜S505は、それぞれ図２のS201〜S205と同様の処理であり、S506以降の処理が第１実施形態と異なる。従って、S506以降の処理について説明する。列アドレスの指定が完了すると、転送要求キュー107に格納された後続の転送群を確認する（S506）。後続の転送群に、同一列アドレスのアクセスがある場合（S506のYes）は、自動的にプリチャージを行わない、READまたはWRITEコマンドを発行してメモリアクセスする（S508）。また、後続の転送に、同一列アドレスのアクセスがない場合（S506のNo）は、転送要求キュー107に格納されている後続の転送に、アクセスする転送とは別の列アドレスのアクセスがあるかを確認する（S507）。すなわち、転送要求キュー107が、後続のアクセスがなく空か、別の列アドレスのアクセスがあるかを確認する。別の列アドレスのアクセスがある場合（S507のYes）は、自動的にプリチャージを行う、READAまたはWRITEAコマンドを発行してメモリアクセスする（S509）。
【００３３】
転送要求キュー107が空の場合（S507のNo）は、プリチャージ付きコマンドを使用する設定が有効か確認する（S510）。これは、後続のアクセスが、同一ページと予想される場合はプリチャージせずに活性化状態を維持し、異なるページと予想される場合はプリチャージして不活性化することが好ましいためである。有効の場合（S510のYes）は、自動的にプリチャージを行う、READAまたはWRITEAコマンドを発行してメモリアクセスする（S509）。有効ではない場合（S510のNo）は、自動的にプリチャージを行わない、READまたはWRITEコマンドを発行してメモリアクセスする（S508）。なお、プリチャージ付きコマンドを使用する設定が有効かどうかを判定する手段については、前述のS207で説明したとおりである。そして、転送要求キュー（コマンドキュー）107が空かどうかを判定し、空でなければ（S511のNo）、処理はS501に戻り、空であれば（S511のYes）、処理は終了する。
【００３４】
このように、本実施形態では、転送要求キューに後続する転送要求がない場合に、プリチャージ付きコマンドの発行を制御することで、転送効率の低下を抑制することが出来るようになる。
【００３５】
［第５実施形態］
上述の実施形態においては、図１に示したように、メモリ転送要求は、転送要求振り分け部102によってアクセスするバンクごとに、コマンド制御部103〜106に振り分け、バンク毎にコマンド発行の制御を行う例を示した。しかし、メモリ転送要求の振り分けをせずに全てのメモリ転送要求を全てのコマンド制御部に入力してもよい。図６は、そのような第５実施形態によるメモリ制御装置100'の概略構成を説明する図である。図６は、図１と比較して転送要求振り分け部102とコマンド制御部104〜106がなく、全てのメモリ転送要求が全てのコマンド制御部に入力されている（なお、CPU、ROMバスは省略している）。また、本実施形態によるメモリ制御装置では、図１のコマンド発行部110に替えてコマンド発行部110'を有する。コマンド発行部110'は、対応するバンクへの転送要求であった場合に、コマンドを発行するようにする。他は第１実施形態において述べた動作と同様である。本実施形態の場合、異なるバンクへの転送要求が転送要求キュー107に混在することになるが、S206において複数の要求について調べることで、無駄なプリチャージの発生が防止される。
【００３６】
以上の実施形態において説明したように、本発明では、プリチャージを行うコマンドの発行を適応的に制御することにより、不要なプリチャージの発生を抑制することができ、転送効率の低下を抑制することが可能となる。
【００３７】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2014092813.tif 000003
【図２】
2014092813.tif 000004
【図３】
2014092813.tif 000005
【図４】
2014092813.tif 000006
【図５】
2014092813.tif 000007
【図６】
2014092813.tif 000008
【図７】
2014092813.tif 000009
【図８】
2014092813.tif 000010
【図９】
2014092813.tif 000011