(57)【特許請求の範囲】
【請求項１】
複数のバンクから構成され、クロックを使用してデータの読み書きを行う同期型メモリ（以下、ＳＤＲＡＭという）を、制御するメモリ制御装置であって、
データの読み書きに関するコマンドを出力する転送要求手段と、
前記コマンドを入力し、当該コマンドに従って予め定めた制御信号を生成して出力すると共に、リードアクセスの最初の転送バイト数を出力するアドレス生成手段と、
前記クロックを発生して出力すると共に、前記制御信号および前記転送バイト数を入力し、当該制御信号に従って予め定めた制御コマンドを生成して出力し、前記ＳＤＲＡＭを制御するコマンド生成手段と、
前記制御コマンドを入力し、当該制御コマンドに従って前記転送要求手段と前記ＳＤＲＡＭとの間のデータ転送を仲介するデータ処理手段とを備え、
異なる前記バンクに対してバンク境界を超えて連続的にデータリードを行う際、前記コマンド生成手段は、前記転送バイト数に応じて最初のバンクに関するリードコマンドと後続のバンクに関するアクティブコマンドの発行順序を制御することを特徴とする、メモリ制御装置。
【請求項２】
前記コマンド生成手段は、
前記転送バイト数が各コマンド間の最低遷移クロック数より大きい場合は、前記最初のバンクに関するリードコマンドを前記後続のバンクに関するアクティブコマンドより先に発行し、前記転送バイト数が各コマンド間の最低遷移クロック数より小さい場合は、前記後続のバンクに関するアクティブコマンドを前記最初のバンクに関するリードコマンドより先に発行することを特徴とする、請求項１に記載のメモリ制御装置。
【請求項３】
複数のバンクから構成され、クロックを使用してデータの読み書きを行う同期型メモリ（以下、ＳＤＲＡＭという）を、制御するメモリ制御装置であって、
データの読み書きに関するコマンドを出力する転送要求手段と、
前記コマンドを入力し、当該コマンドに従って予め定めた制御信号を生成して出力すると共に、前記複数のバンクのうち処理を行う一つのバンクに関するリードデータの転送サイズを出力するアドレス生成手段と、
前記クロックを発生して出力すると共に、前記制御信号を入力し、当該制御信号に従って予め定めた制御コマンドを生成して出力し、前記ＳＤＲＡＭを制御するコマンド生成手段と、
前記コマンド生成手段のリードコマンド発行回数をカウントすると共に、前記転送サイズを入力し、当該カウントごとに当該転送サイズからバースト長を減算するカウンタと、
前記制御コマンドを入力し、当該制御コマンドに従って前記転送要求手段と前記ＳＤＲＡＭとの間のデータ転送を仲介するデータ処理手段とを備え、
前記カウンタは、前記減算後の転送サイズが前記バースト長以下に達した場合に前記コマンド生成手段へその旨を通知し、前記コマンド生成手段は、当該通知に応じて次回のリードコマンドを、リード処理が終了すれば自動的にプリチャージが行われるプリチャージ付きリードコマンドとして発行することを特徴とする、メモリ制御装置。
【請求項４】
複数のバンクから構成され、クロックを使用してデータの読み書きを行う同期型メモリ（以下、ＳＤＲＡＭという）を、制御するメモリ制御方法であって、
異なる前記バンクに対してバンク境界を超えて連続的にデータリードを行う際、
前記データリードに関するコマンドを出力するステップと、
前記コマンドを入力し、当該コマンドに従って予め定めた制御信号を生成して出力すると共に、リードアクセスの最初の転送バイト数を出力するステップと、
前記制御信号および前記転送バイト数に基づいて制御コマンドを発行するにあたり、当該転送バイト数に応じて最初のバンクに関するリードコマンドと後続のバンクに関するアクティブコマンドの発行順序を制御するステップとを備える、メモリ制御方法。
【請求項５】
前記制御コマンドを生成して出力するステップは、
前記転送バイト数が各コマンド間の最低遷移クロック数より大きい場合は、前記最初のバンクに関するリードコマンドを前記後続のバンクに関するアクティブコマンドより先に発行し、前記転送バイト数が各コマンド間の最低遷移クロック数より小さい場合は、前記後続のバンクに関するアクティブコマンドを前記最初のバンクに関するリードコマンドより先に発行することを特徴とする、請求項４に記載のメモリ制御方法。
【請求項６】
複数のバンクから構成され、クロックを使用してデータの読み書きを行う同期型メモリ（以下、ＳＤＲＡＭという）を、制御するメモリ制御方法であって、
データの読み書きに関するコマンドを出力するステップと、
前記コマンドに従って予め定めた制御信号を生成して出力すると共に、前記複数のバンクのうち処理を行う一つのバンクに関するリードデータの転送サイズを出力するステップと、
前記ＳＤＲＡＭに対するリードコマンド発行回数をカウントするステップと、
前記カウントごとに前記転送サイズからバースト長を減算し、当該減算後の転送サイズが当該バースト長以下に達した場合は、予め定めた通知を出力するステップと、
前記制御信号および前記通知に基づいて制御コマンドを発行するにあたり、当該通知があった場合は次回のリードコマンドを、リード処理が終了すれば自動的にプリチャージが行われるプリチャージ付きリードコマンドとして発行するステップとを備える、メモリ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メモリ制御装置および方法に関し、より特定的には、クロックに同期してデータ転送を行なうダイナミック・ランダム・アクセス・メモリ（Dynamic Random Access Memory；ＤＲＡＭ）、すなわち、シンクロナスＤＲＡＭ（Synchronous ＤＲＡＭ；ＳＤＲＡＭ）を制御する回路において、ＳＤＲＡＭの実質のバスバンド幅を向上させるメモリ制御装置および方法に関する。
【０００２】
【従来の技術】
従来から、データを記憶する装置の一つとして、ＳＤＲＡＭが存在する。このＳＤＲＡＭは、クロックに同期した連続的なデータ転送が可能であり、バースト転送を指定すると、指定したバイト数分のデータ転送を１クロック単位で連続して行うことができる。また、一般的に、ＳＤＲＡＭ内の記憶領域は、図７に示すように２つの領域（バンクＡ，Ｂ）に分割した構成をとっている。このように、記憶領域を分割するのは、バンクごとに切り替えてこのバースト転送を行うことで異なるページにアクセスする際に必要となるプリチャージ動作を隠蔽することが可能となり、転送レートを向上することができるからである。
【０００３】
なお、ＳＤＲＡＭの仕様に関して記載されている文献としては、例えば「ＮＥＣ  μＰＤ４５１６４２１，μＰＤ４５１６８２１，μＰＤ４５１６１６１データ・シート」（１９９５，ＮＥＣ）や、特開平６−７６５６７号公報「半導体記憶装置および同期型半導体記憶装置」等が存在する。
【０００４】
このような高性能のＳＤＲＡＭを効率よく制御するメモリ制御装置として、従来から以下に示すような装置が用いられている。
図８は、従来のメモリ制御装置の構成の一例を示すブロック図である。図８において、従来のメモリ制御装置は、転送要求ユニット８１と、アドレス生成部８２と、コマンド生成部８３と、データ処理部８４と、ＳＤＲＡＭ８５とを備える。
【０００５】
転送要求ユニット８１は、ＳＤＲＡＭ８５との間でデータ転送を行なうために、開始アドレス，転送サイズ，リード／ライト等のコマンドをアドレス生成部８２へ出力する。アドレス生成部８２は、転送要求ユニット８１から受け取ったコマンドに基づいて、開始アドレス，バースト長（１回のリードコマンドで連続的に転送可能なサイズを示す），リード／ライト等の複数の制御信号を生成し、コマンド生成部８３へ出力する。コマンド生成部８３は、アドレス生成部８２から受け取った制御信号に基づいて、クロック(clock；ＣＬＫ），ロー・アドレス・ストローブ（row address strobe；ＲＡＳ），コラム・アドレス・ストローブ(column address strobe；ＣＡＳ），ライト・イネーブル（write enable；ＷＥ），アドレス指定等の制御コマンドを生成し、ＳＤＲＡＭ８５およびデータ処理部８４を制御する。データ処理部８４は、コマンド生成部８３から受ける制御コマンドに従って、ＳＤＲＡＭ８５からのリードデータを転送要求ユニット８１へ転送し、ライトデータを転送要求ユニット８１からＳＤＲＡＭ８５へ転送する。
【０００６】
【発明が解決しようとする課題】
しかしながら、上記従来のメモリ制御装置の構成によるＳＤＲＡＭ８５の制御においては、データ転送の条件によってＳＤＲＡＭ８５の性能を効率よく利用できない場合が発生する。
【０００７】
例えば、記憶領域がバンクＡとバンクＢとに分割されているＳＤＲＡＭ８５において、図９に示すように、バンクＡに存在するデータａ１〜ａ２とバンクＢに存在するデータｂ１〜ｂ８の合計１０個のデータを、バンク境界を超えて連続して読み出す場合である。
【０００８】
上記のような場合、バンクＡのデータａ２とバンクＢのデータｂ１とは、同時にリード処理を行うことができないため、コマンド生成部８３からＳＤＲＡＭ８５へ発行されるコマンドの順序は、図１０に示すようになる。
なお、図１０において、バンクＡに対するプリチャージコマンドを“Ｐａ”と、バンクＢに対するプリチャージコマンドを“Ｐｂ”と、バンクＡに対するアクティブコマンドを“Ａａ”と、バンクＢに対するアクティブコマンドを“Ａｂ”と、バンクＡに対するリードコマンドを“Ｒａ”と、バンクＢに対するリードコマンドを“Ｒｂ”と表している。また、ＣＡＳレイテンシは「３」クロック、バースト長は「８」データとする。
【０００９】
ここで、プリチャージコマンドとは、ＳＤＲＡＭ８５内のデータを一時的に待機させる場所を初期化するコマンドである。アクティブコマンドとは、上記一時待機場所にリード対象のデータを書き込むコマンドである。リードコマンドとは、上記一時待機場所に書き込まれているデータを読み出すコマンドである。
また、同一バンクに対するプリチャージコマンド，アクティブコマンドおよびリードコマンドを発行できる間隔（Ｐａ⇒Ａａ⇒Ｒａ、または、Ｐｂ⇒Ａｂ⇒Ｒｂの間隔）、および、バンクＡとバンクＢとのアクティブコマンドの発行間隔（Ａａ⇔Ａｂの間隔）は、最低遷移時間であるＣＡＳレイテンシに制約されるため３クロックとなる。
【００１０】
図１０を参照して、コマンド生成部８３は、まず、データａ１，ａ２が存在するバンクＡに対し、当該データのリードを行うべく、Ｐａコマンドを発行する（第０サイクル）。続けて、バンクＡに対してＡａコマンドを発行したいのだが、ＣＡＳレイテンシの制約により連続して発行できないため、この間を利用してバンクＢに対してＰｂコマンドを発行しておく（第１サイクル）。その後、Ｐａコマンドの発行後３クロック目に、Ａａコマンドを発行する（第３サイクル）。
【００１１】
次に発行可能なコマンドを考えると、バンクＡに対するＲａコマンド、または、バンクＢに対するＡｂコマンドであるが、双方のコマンドともＣＡＳレイテンシに制約されるため、３クロックの経過を待たなければならない。ここで、コマンド生成部８３は、アドレス生成部８２から送られて来た制御信号の順に処理を実行するルールがある。従って、コマンド生成部８３は、３クロックの経過を待って、まず先にＲａコマンドを発行し（第６サイクル）、その後Ａｂコマンドを発行することになる（第７サイクル）。このため、Ｒｂコマンドは、早くても第１０サイクルの発行となる。
【００１２】
以上の処理により、データａ１，ａ２は、Ｒａコマンド発行から３クロック後の第９サイクルから、データｂ１〜ｂ８は、Ｒｂコマンド発行から３クロック後の第１３サイクルから順にリードされる。従って、すべてのデータリードが終了するのは、第２０サイクルとなる。
【００１３】
このように、従来のメモリ制御装置では、上述した固定的なルールおよび制約があるため、バンクＡのデータリードとバンクＢのデータリードとが連続的に行えず（図１０、第１１〜第１２サイクル）、すべてのデータリードの終了までに時間がかかってしまう場合が発生する。
すなわち、ＳＤＲＡＭ８５のある任意のアドレスからバンク境界を超えて連続的にデータ転送を行う場合、一義的に決定されるコマンド発行の手順に起因してデータ転送効率が悪くなるという問題が生じる。
【００１４】
それ故、本発明の目的は、アクセス内容とバンク境界との関係に対応してＳＤＲＡＭへのコマンド発行順序を常に最適化し、ＳＤＲＡＭのデータ転送性能を最大限に発揮できるメモリ制御装置を提供することである。
【００１５】
【課題を解決するための手段および発明の効果】
第１の発明は、複数のバンクから構成され、クロックを使用してデータの読み書きを行う同期型メモリ（以下、ＳＤＲＡＭという）を、制御するメモリ制御装置であって、
データの読み書きに関するコマンドを出力する転送要求手段と、
コマンドを入力し、当該コマンドに従って予め定めた制御信号を生成して出力すると共に、リードアクセスの最初の転送バイト数を出力するアドレス生成手段と、
クロックを発生して出力すると共に、制御信号および転送バイト数を入力し、当該制御信号に従って予め定めた制御コマンドを生成して出力し、ＳＤＲＡＭを制御するコマンド生成手段と、
制御コマンドを入力し、当該制御コマンドに従って転送要求手段とＳＤＲＡＭとの間のデータ転送を仲介するデータ処理手段とを備え、
異なるバンクに対してバンク境界を超えて連続的にデータリードを行う際、コマンド生成手段は、転送バイト数に応じて最初のバンクに関するリードコマンドと後続のバンクに関するアクティブコマンドの発行順序を制御することを特徴とする。
【００１６】
上記のように、第１の発明は、コマンド生成手段がアドレス生成手段において生成した転送バイト数に基づいて、最初のバンクに関するリードコマンドと後続のバンクに関するアクティブコマンドのどちらを先に発行するかを判断してＳＤＲＡＭの処理を制御する。
これにより、異なるバンクに対して連続したデータリードを行う場合に、常にデータ転送サイクルが最短で終了するようにコマンド発行を行うことができ、２つの連続したアクセスに必要なサイクル数を削減して、ＳＤＲＡＭの実効転送レートを向上することができる。
【００１７】
第２の発明は、第１の発明において、コマンド生成手段は、
転送バイト数が各コマンド間の最低遷移クロック数より大きい場合は、最初のバンクに関するリードコマンドを後続のバンクに関するアクティブコマンドより先に発行し、転送バイト数が各コマンド間の最低遷移クロック数より小さい場合は、後続のバンクに関するアクティブコマンドを最初のバンクに関するリードコマンドより先に発行することを特徴とする。
【００１８】
上記のように、第２の発明は、第１の発明におけるコマンド生成手段での典型的な制御方法を示したものである。
【００１９】
第３の発明は、複数のバンクから構成され、クロックを使用してデータの読み書きを行う同期型メモリ（以下、ＳＤＲＡＭという）を、制御するメモリ制御装置であって、
データの読み書きに関するコマンドを出力する転送要求手段と、
コマンドを入力し、当該コマンドに従って予め定めた制御信号を生成して出力すると共に、複数のバンクのうち処理を行う一つのバンクに関するリードデータの転送サイズを出力するアドレス生成手段と、
クロックを発生して出力すると共に、制御信号を入力し、当該制御信号に従って予め定めた制御コマンドを生成して出力し、ＳＤＲＡＭを制御するコマンド生成手段と、
コマンド生成手段のリードコマンド発行回数をカウントすると共に、転送サイズを入力し、当該カウントごとに当該転送サイズからバースト長を減算するカウンタと、
制御コマンドを入力し、当該制御コマンドに従って転送要求手段とＳＤＲＡＭとの間のデータ転送を仲介するデータ処理手段とを備え、
カウンタは、減算後の転送サイズがバースト長以下に達した場合にコマンド生成手段へその旨を通知し、コマンド生成手段は、当該通知に応じて次回のリードコマンドを、リード処理が終了すれば自動的にプリチャージが行われるプリチャージ付きリードコマンドとして発行することを特徴とする。
【００２０】
上記のように、第３の発明は、カウンタがコマンド生成手段のリードコマンドの発行回数を計数することで、複数のバンクのうち処理を行う一つのバンクに対する最後のデータ転送を検出し、コマンド生成手段がこの検出結果に従ってプリチャージ付きリードコマンドを発行してＳＤＲＡＭの処理を制御する。
これにより、プリチャージ付きコマンドが発行されたバンクは、一方のデータに関してリード処理が完了した後に他方のデータに関するプリチャージが自動的に実行されるため、プリチャージコマンドの発行タイミングが後続の他のコマンドの発行タイミングと一致した場合でもプリチャージ処理の開始が遅れることがなく、ＳＤＲＡＭの実効転送レートを向上することができる。
【００２１】
第４の発明は、複数のバンクから構成され、クロックを使用してデータの読み書きを行う同期型メモリ（以下、ＳＤＲＡＭという）を、制御するメモリ制御方法であって、
異なるバンクに対してバンク境界を超えて連続的にデータリードを行う際、
データリードに関するコマンドを出力するステップと、
コマンドを入力し、当該コマンドに従って予め定めた制御信号を生成して出力すると共に、リードアクセスの最初の転送バイト数を出力するステップと、
制御信号および転送バイト数に基づいて制御コマンドを発行するにあたり、当該転送バイト数に応じて最初のバンクに関するリードコマンドと後続のバンクに関するアクティブコマンドの発行順序を制御するステップとを備える。
【００２２】
上記のように、第４の発明は、リードアクセスの最初の転送バイト数に応じて、最初のバンクに関するリードコマンドと後続のバンクに関するアクティブコマンドのどちらを先に発行するかを判断してＳＤＲＡＭの処理を制御する。
これにより、異なるバンクに対して連続したデータリードを行う場合に、常にデータ転送サイクルが最短で終了するようにコマンド発行を行うことができ、２つの連続したアクセスに必要なサイクル数を削減して、ＳＤＲＡＭの実効転送レートを向上することができる。
【００２３】
第５の発明は、第４の発明において、制御コマンドを生成して出力するステップは、
転送バイト数が各コマンド間の最低遷移クロック数より大きい場合は、最初のバンクに関するリードコマンドを後続のバンクに関するアクティブコマンドより先に発行し、転送バイト数が各コマンド間の最低遷移クロック数より小さい場合は、後続のバンクに関するアクティブコマンドを最初のバンクに関するリードコマンドより先に発行することを特徴とする。
【００２４】
上記のように、第５の発明は、第４の発明における制御コマンドを生成するステップでの典型的な制御方法を示したものである。
【００２５】
第６の発明は、複数のバンクから構成され、クロックを使用してデータの読み書きを行う同期型メモリ（以下、ＳＤＲＡＭという）を、制御するメモリ制御方法であって、
データの読み書きに関するコマンドを出力するステップと、
コマンドに従って予め定めた制御信号を生成して出力すると共に、複数のバンクのうち処理を行う一つのバンクに関するリードデータの転送サイズを出力するステップと、
ＳＤＲＡＭに対するリードコマンド発行回数をカウントするステップと、
カウントごとに転送サイズからバースト長を減算し、当該減算後の転送サイズが当該バースト長以下に達した場合は、予め定めた通知を出力するステップと、
制御信号および通知に基づいて制御コマンドを発行するにあたり、当該通知があった場合は次回のリードコマンドを、リード処理が終了すれば自動的にプリチャージが行われるプリチャージ付きリードコマンドとして発行するステップとを備える。
【００２６】
上記のように、第６の発明は、ＳＤＲＡＭに対するリードコマンドの発行回数を計数することで、複数のバンクのうち処理を行う一つのバンクに対する最後のデータ転送を検出し、この検出結果に従ってプリチャージ付きリードコマンドを発行してＳＤＲＡＭの処理を制御する。
これにより、プリチャージ付きコマンドが発行されたバンクは、一方のデータに関してリード処理が完了した後に他方のデータに関するプリチャージが自動的に実行されるため、プリチャージコマンドの発行タイミングが後続の他のコマンドの発行タイミングと一致した場合でもプリチャージ処理の開始が遅れることがなく、ＳＤＲＡＭの実効転送レートを向上することができる。
【００２７】
【発明の実施の形態】
以下、本発明の実施形態について図を参照して説明する。
（第１の実施形態）
図１は、本発明の第１の実施形態に係るメモリ制御装置の構成を示すブロック図である。図１において、本第１の実施形態のメモリ制御装置は、転送要求ユニット１１と、アドレス生成部１２と、コマンド生成部１３と、データ処理部１４と、ＳＤＲＡＭ１５とを備える。
【００２８】
本発明の第１の実施形態に係るメモリ制御装置は、ＳＤＲＡＭ１５内の一方のバンク（以下、バンクＡと表現する）のアドレスからバンク境界を超えて他方のバンク（以下、バンクＢと表現する）のアドレスへと連続的にデータ転送を行う場合（図９を参照）、特に、最初に行うバンクＡに関するデータ転送のバイト数が、バースト長以下である場合に有効である。
【００２９】
転送要求ユニット１１は、読み出し（または、書き込み）を行うデータに関する開始アドレス（仮想アドレス），転送サイズおよびリード（または、ライト）の各コマンドをアドレス生成部１２へ出力する。
【００３０】
アドレス生成部１２は、転送要求ユニット１１からのコマンドを受けて、複数のデータ転送命令に分割した開始アドレス（物理アドレス），バースト長およびリード（または、ライト）の各制御信号を生成し、コマンド生成部１３へ出力する。また、アドレス生成部１２は、リードアクセスの最初の転送バイト数がバースト長の境界に対して何バイトあるかを表す転送バイト数情報を生成し、コマンド生成部１３へ出力する。
【００３１】
コマンド生成部１３は、クロック、およびアドレス生成部１２から受けた制御信号に従ってロー／カラムアドレスを指示する制御コマンドを生成して、ＳＤＲＡＭ１５に出力する。この際、コマンド生成部１３は、転送バイト数情報のバイト数を判断して、ＳＤＲＡＭ１５のデータ転送レートを向上することができる命令から実行するようにＳＤＲＡＭ１５を制御する。すなわち、コマンド生成部１３は、上述のようにＳＤＲＡＭ１５のバンク境界を超えてデータリードを行う場合、バンクＡに対するリード処理とバンクＢに対するアクティブ処理のどちらを先に実行するかを判断し、ＳＤＲＡＭ１５を制御するのである。具体的には、バンクＡからリードするデータの転送バイト数が、ＣＡＳレイテンシのサイクル数より大きい場合は、バンクＡのデータの読み出し開始を優先すべくリードコマンドを実行し、ＣＡＳレイテンシのサイクル数より小さい場合は、すべてのデータの読み出しを最短クロック数で完了すべくアクティブコマンドを実行する。
また、コマンド生成部１３は、データ処理部１４に対し、リード（または、ライト）を指示する制御コマンドを出力する。
【００３２】
データ処理部１４は、コマンド生成部１３からデータリードの制御コマンドを受けて、ＳＤＲＡＭ１５から上記クロックに同期してデータを読み出し、転送要求ユニット１１へ転送する（または、データライトの制御コマンドを受けて、転送要求ユニット１１からデータを読み出し、上記クロックに同期してＳＤＲＡＭ１５へ転送する）。
【００３３】
ＳＤＲＡＭ１５は、コマンド生成部１３から出力される制御コマンドを受けて動作するシンクロナス・ダイナミック・ランダム・アクセス・メモリである。
【００３４】
次に、本第１の実施形態に係るメモリ制御装置によってデータ転送効率が向上することを、具体的なデータ転送の一例を挙げて説明する。
図２〜図４は、バンク境界を超えてデータを連続して読み出す場合におけるデータリードタイミングの一例を示す図である。
【００３５】
図２は、バンクＡのデータａ１〜ａ２とバンクＢのデータｂ１〜ｂ８の合計１０個のデータを、バンク境界を超えて連続して読み出す場合における２通りのデータリードタイミングを示す図である。図３は、バンクＡのデータａ１〜ａ３とバンクＢのデータｂ１〜ｂ８の合計１１個のデータを、バンク境界を超えて連続して読み出す場合における２通りのデータリードタイミングを示す図である。図４は、バンクＡのデータａ１〜ａ４とバンクＢのデータｂ１〜ｂ８の合計１２個のデータを、バンク境界を超えて連続して読み出す場合における２通りのデータリードタイミングを示す図である。
また、図２〜図４のいずれについても、ＣＡＳレイテンシは「３」クロックと、バースト長は「８」データとする。
【００３６】
なお、図２〜図４において、バンクＡに対するプリチャージコマンドを“Ｐａ”と、バンクＢに対するプリチャージコマンドを“Ｐｂ”と、バンクＡに対するアクティブコマンドを“Ａａ”と、バンクＢに対するアクティブコマンドを“Ａｂ”と、バンクＡに対するリードコマンドを“Ｒａ”と、バンクＢに対するリードコマンドを“Ｒｂ”と表している。
【００３７】
まず、図２〜図４が示す内容をそれぞれ説明する。
図２（ａ）は、前述した図１０の場合と同様であり、先にＲａコマンドを発行しその後Ａｂコマンドを発行することで、データリードがすべて終了するまでに２１サイクルがかかる。一方、図２（ｂ）は、先にＡｂコマンドを発行しその後Ｒａコマンドを発行することで、最初のデータを読み出し開始するサイクルは遅れるが、データリードがすべて終了するのに２０サイクルで済んでいる。
図３（ａ）および（ｂ）においては、先にＲａコマンドを発行しその後Ａｂコマンドを発行する場合も、先にＡｂコマンドを発行しその後Ｒａコマンドを発行する場合も何ら変わりがなく、どちらの場合であってもデータリードがすべて終了するまでに２１サイクルかかる。
図４（ａ）は、先にＲａコマンドを発行しその後Ａｂコマンドを発行することで、データリードがすべて終了するまでに２１サイクルがかかる。これに対し、図４（ｂ）では、先にＡｂコマンドを発行しその後Ｒａコマンドを発行することで、逆にデータリードがすべて終了するのに２２サイクルかかっている。
【００３８】
このように、ある任意のアドレスからバンク境界を超えてデータ転送を行う場合、最初に行うバンクＡからのデータ転送バイト数によって、ＲａコマンドまたはＡｂコマンドのどちらを先に発行するかにより、すべてのデータリードが終了するのに要するサイクル数が異なる。上記図２〜図４の具体例においては、転送データ長がＣＡＳレイテンシ「３」より大きいか小さいかにより変化することがわかる。
【００３９】
従って、従来のメモリ制御装置では、固定的なルールおよび制約により、Ｒａコマンドを先に発行しその後Ａｂコマンドを発行する手順しか行えないため（図２（ａ），図３（ａ）および図４（ａ））、場合によってはデータ転送効率が劣化するということが発生する。
【００４０】
これに対し、本メモリ制御装置は、上述したように、アドレス生成部１２において最初にバンクＡに対して行う転送バイト数を算出し、転送バイト数情報としてコマンド生成部１３に送出する。そして、コマンド生成部１３は、最初にバンクＡに対して行う転送バイト数情報として得た転送バイト数を判断し、予め定められたＣＡＳレイテンシと比較することにより、ＳＤＲＡＭ１５を制御する。
例えば、上記具体例の場合においては、コマンド生成部１３には、予めしきい値「３」を与えておく。そして、コマンド生成部１３は、入力した転送バイト数Ｘが、Ｘ＜３であればＡｂコマンドを先に発行し（図２（ｂ））、Ｘ≧３であればＲａコマンドを先に発行する（図３（ａ）および図４（ａ））ようにＳＤＲＡＭ１５を制御してやれば、ＳＤＲＡＭ１５のデータ転送効率を向上することが可能となる。
【００４１】
以上のように、本発明の第１の実施形態に係るメモリ制御装置は、コマンド生成部１３が、アドレス生成部１２において生成した転送バイト数情報に基づいて、ＲａコマンドとＡｂコマンドのどちらを先に発行するかを判断してＳＤＲＡＭ１５の処理を制御する。
これにより、異なるバンクに対して連続したデータリードを行う場合に、常にデータ転送サイクルが最短で終了するようにコマンド発行を行うことができ、２つの連続したアクセス（バンクＡに対するアクセスとバンクＢに対するアクセス）に必要なサイクル数を削減して、ＳＤＲＡＭ１５の実効転送レートを向上することができる。
【００４２】
なお、上記具体的な実施例においては、条件としてＣＡＳレイテンシが「３」クロック、バースト長が「８」データである場合を述べたが、本メモリ制御装置の適用はこれに限られず、他の条件においても上記と同様の考え方でコマンドを制御することによりデータ転送サイクルを最適化することが可能である。
【００４３】
（第２の実施形態）
図５は、本発明の第２の実施形態に係るメモリ制御装置の構成を示すブロック図である。図５において、本第２の実施形態のメモリ制御装置は、転送要求ユニット５１と、アドレス生成部５２と、コマンド生成部５３と、データ処理部５４と、ＳＤＲＡＭ５５と、カウンタ５６とを備える。
【００４４】
本発明の第２の実施形態に係るメモリ制御装置は、ＳＤＲＡＭ５５内のバンクＡのアドレスからバンク境界を超えてバンクＢのアドレスへと連続的にデータ転送を行い、さらに続いて、別のバンクＡのアドレスからデータ転送を行う場合に有効である。
【００４５】
転送要求ユニット５１は、読み出し（または、書き込み）を行うデータに関する開始アドレス（仮想アドレス），転送サイズおよびリード（または、ライト）の各コマンドをアドレス生成部５２に出力する。
【００４６】
アドレス生成部５２は、転送要求ユニット５１からのコマンドを受けて、複数のデータ転送命令に分割した開始アドレス（物理アドレス），バースト長およびリード（または、ライト）の各制御信号を生成し、コマンド生成部５３へ出力する。また、アドレス生成部５２は、最初にバンクＡに対して転送するデータ転送サイズをカウンタ５６に出力する。
【００４７】
カウンタ５６は、コマンド生成部５３におけるリード（または、ライト）の実行回数をカウントし、当該カウントごとにアドレス生成部５２から与えられた転送サイズから転送したデータサイズ、すなわち、ＳＤＲＡＭ５５への一度のバースト命令で転送可能なデータサイズであるバースト長を減算する。そして、カウンタ５６は、減算していった転送サイズ（すなわち、転送すべきデータの残り）がバースト長以下になった時に、コマンド生成部５３へその旨を通知する。
【００４８】
コマンド生成部５３は、クロック、およびアドレス生成部５２から受けた制御信号に従ってロー／カラムアドレスを指示する制御コマンドを生成して、ＳＤＲＡＭ５５に出力する。ここで、コマンド生成部５３は、カウンタ５６から通知を受けた場合には、ＳＤＲＡＭ５５へ発行するバンクＡに対するリード（または、ライト）コマンドを次回のバンクＡに対するプリチャージコマンドを付随させたリード（／ライト）コマンドに変換してＳＤＲＡＭ５５へ送る。このプリチャージコマンドを付随させたリード（／ライト）コマンドとは、今現在行っているバンクＡの転送処理が終了した場合、バンクＢの転送処理を行っている間にプリチャージコマンドを発行することなく次回のバンクＡに対する処理のプリチャージを行わせるというものである。
また、コマンド生成部５３は、データ処理部５４に対し、リード（または、ライト）を指示する制御コマンドを出力する。
【００４９】
データ処理部５４は、コマンド生成部５３からデータリードの制御コマンドを受けて、ＳＤＲＡＭ５５から上記クロックに同期してデータを読み出し、転送要求ユニット５１へ転送する（または、データライトの制御コマンドを受けて、転送要求ユニット５１からデータを読み出し、上記クロックに同期してＳＤＲＡＭ５５へ転送する）。
【００５０】
ＳＤＲＡＭ５５は、コマンド生成部５３から出力される制御コマンドを受けて動作するシンクロナス・ダイナミック・ランダム・アクセス・メモリである。
【００５１】
次に、本第２の実施形態に係るメモリ制御装置によってデータ転送効率が向上することを、具体的なデータ転送の一例を挙げて、従来のメモリ制御装置でのデータ転送の場合と比較して説明する。
【００５２】
図６は、バンクＡのデータａ１〜ａ８とバンクＢのデータｂ１〜ｂ４の合計１２個のデータをバンク境界を超えて連続して読み出し、さらに続いて、バンクＡのデータａ９〜ａ１２を読み出す場合における２通りのデータリードタイミングを示す図である。
図６（ａ）は、図８に示すような従来のメモリ制御装置におけるデータリードタイミングを示している。図６（ｂ）は、本第２の実施形態に係るメモリ制御装置におけるデータリードタイミングを示している。
【００５３】
なお、図６において、バンクＡに対するプリチャージコマンドを“Ｐａ”と、バンクＢに対するプリチャージコマンドを“Ｐｂ”と、バンクＡに対するアクティブコマンドを“Ａａ”と、バンクＢに対するアクティブコマンドを“Ａｂ”と、バンクＡに対するリードコマンドを“Ｒａ”と、バンクＢに対するリードコマンドを“Ｒｂ”と、バンクＡに対するプリチャージ付きリードコマンドを“ＲａｗＰ”と表している。また、図６においては、ＣＡＳレイテンシは「２」クロックと、バースト長は「４」データとする。
【００５４】
図６（ａ）を参照して、コマンド生成部８３は、まず、データａ１〜ａ８が存在するバンクＡに対してデータリードを行うべく、Ｐａコマンドを発行する（第０サイクル）。なお、ＣＡＳレイテンシ間隔（２クロック）を利用して、バンクＢに対してもＰｂコマンドを発行しておく（第１サイクル）。その後、Ｐａコマンドの発行から２クロック後に、Ａａコマンドを発行する（第２サイクル）。そして、さらに２クロック後に、１回目のＲａコマンドを発行し（第４サイクル）、データａ１〜ａ４の転送を行う（バースト長「４」だからである）。ここで、バンクＡのデータ転送の間にＡｂコマンドを発行し、バンクＢをいつでもアクセスできるように準備しておく（第５サイクル）。そして、データａ４の転送後にすぐデータａ５〜ａ８のデータ転送が開始できるように、第８サイクルに２回目のＲａコマンドを発行する。
次に、コマンド生成部８３は、データａ８の転送が終了、すなわち、バンクＡに関するデータ転送の終了後にバンクＢに関するデータｂ１〜ｂ４の転送をすぐに行えるように、第１２サイクルでＲｂコマンドを発行する。以降、バンクＡの別のアドレスに存在するデータａ９〜ａ１２の転送に関しては、ＣＡＳレイテンシに従って、２クロック間隔でＰａ，ＡａおよびＲａを発行する（第１３，第１５，第１７サイクル）。
【００５５】
このように、従来のメモリ制御装置においては、バンクＢの転送処理終了と別のバンクＡの転送処理開始との間に、データ転送が行われないブランク期間（第１８サイクル）が生じる。この原因は、本来なら、第１２サイクルにおいてＲｂコマンドとＰａコマンドとを同時に発行したいのだが不可能なため、バンクＢのデータリードを優先すべくＲｂコマンドを先に発行し、その後Ｐａコマンドを発行しているためである。
【００５６】
これに対して、本第２の実施形態に係るメモリ制御装置は、以下のような方法によりこの問題を解決している。
なお、上述のとおり、アドレス生成部５２は、上記条件からカウンタ５６に対して、最初のバンクＡに関する転送データａ１〜ａ８の数「８」を転送サイズとして出力する（図５を参照）。
【００５７】
図６（ｂ）を参照して、図面上は第５サイクルまでは上記と同様であるが、第４サイクルの１回目のＲａコマンドが発行された際、カウンタ５６は、アドレス生成部５２から得た転送サイズ「８」から「４（データａ１〜ａ４の数）」を減算する。ここで、転送すべき残りデータ、すなわち、上記減算後の転送サイズ（＝４）がバースト長（＝４）以下となったため、カウンタ５６は、コマンド生成部５３に対してその旨を通知する。
続いて、コマンド生成部５３は、データａ４の転送後にすぐデータａ５〜ａ８のデータ転送が開始できるように、第８サイクルに２回目のＲａコマンドを発行するのだが、この際、カウンタ５６から受けた通知に従って、プリチャージ付きリードであるＲａｗＰコマンドを出力する。
【００５８】
このＲａｗＰコマンドにより、ＳＤＲＡＭ５５は、データａ８の転送が問題なく終了できる第１３サイクルにおいて、コマンド生成部５３から改めてＰａコマンドを受けるまでもなく、自らの判断でプリチャージを行うことができる。
これにより、その後のＡａコマンドおよびＲａコマンドの発行を１サイクル早く行うことができ（第１４，第１６サイクル）、その結果、図６（ａ）の第２２サイクルまでに対して第２１サイクルまでにすべてのデータ転送を終了することができる。
【００５９】
以上のように、本発明の第２の実施形態に係るメモリ制御装置は、カウンタ５６がコマンド生成部５３が発行するリードコマンドの回数を計数することで、処理を行う１つのバンクに対する最後のデータ転送を検出し、コマンド生成部５３がこの検出結果に従ってプリチャージ付きリードコマンドを発行してＳＤＲＡＭ５５の処理を制御する。
これにより、プリチャージ付きコマンドが発行されたバンクは、一方のデータに関してリード処理が完了した後に他方のデータに関するプリチャージが自動的に実行されるため、プリチャージコマンドの発行タイミングが後続の他のコマンドの発行タイミングと一致した場合でもプリチャージ処理の開始が遅れることがなく、ＳＤＲＡＭ５５の実効転送レートを向上することができる。
【００６０】
なお、上記具体的な実施例においては、条件としてＣＡＳレイテンシが「２」クロック、バースト長が「４」データである場合を述べたが、本メモリ制御装置の適用はこれに限られず、他の条件においても上記と同様の考え方でコマンドを制御することによりデータ転送サイクルを最適化することが可能である。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係るメモリ制御装置の構成を示すブロック図である。
【図２】バンク境界を超えてデータを連続して読み出す場合におけるデータリードタイミングの一例を示す図である。
【図３】バンク境界を超えてデータを連続して読み出す場合におけるデータリードタイミングの一例を示す図である。
【図４】バンク境界を超えてデータを連続して読み出す場合におけるデータリードタイミングの一例を示す図である。
【図５】本発明の第２の実施形態に係るメモリ制御装置の構成を示すブロック図である。
【図６】バンク境界を超えてデータを連続して読み出す場合におけるデータリードタイミングの一例を示す図である。
【図７】従来のＳＤＲＡＭの記録領域の構成を示す図である。
【図８】従来のメモリ制御装置の構成を示すブロック図である。
【図９】従来のメモリ制御装置の動作説明に用いるデータ配置を示す図である。
【図１０】従来のメモリ制御装置のデータリードタイミングの一例を示す図である。
【符号の説明】
１１、５１、８１…転送要求ユニット
１２、５２、８２…アドレス生成部
１３、５３、８３…コマンド生成部
１４、５４、８４…データ処理部
１５、５５、８５…ＳＤＲＡＭ
５６…カウンタ
【図１】
0003922487.tif 000002
【図２】
0003922487.tif 000003
【図３】
0003922487.tif 000004
【図４】
0003922487.tif 000005
【図５】
0003922487.tif 000006
【図６】
0003922487.tif 000007
【図７】
0003922487.tif 000008
【図８】
0003922487.tif 000009
【図９】
0003922487.tif 000010
【図１０】
0003922487.tif 000011