(57)【要約】【課題】バースト転送は、タイムラグが大きい。【解決手段】メモリ制御回路は、データバッファとコマンド分割回路とバースト長テーブルとバーストタイミング制御回路とを具備する。データバッファは、バースト転送される毎に指定される第１バースト長の転送データを格納する。コマンド分割回路は、第１バースト長を分割バースト長に分割する。予めメモリには１回のコマンド発行に応答してバースト転送可能な第２バースト長が設定されており、その第２バースト長で転送できるように分割バースト長が決められる。バースト長テーブルは、分割バースト長を記憶する。バーストタイミング制御回路は、データバッファに格納された転送データを、バースト長テーブルに記憶される前記分割バースト長ずつメモリにバースト転送する。バーストタイミング制御回路は、分割バースト長により示されるデータ数の転送データがデータバッファに格納されたとき、メモリに対するバースト転送を開始する。【選択図】図４
2007157029.tif 000002
【特許請求の範囲】
【請求項１】
第１のビット長のデータを第１のバースト回数回バースト送信して第１のビット長と第１のバースト回数の積で求まるデータ量のデータを送信する送信回路からのデータを受信し、第２のビット長のデータを第２のバースト回数回バースト受信することが可能な受信回路にバースト転送するメモリ制御回路であって、
受信した前記第１のビット長のデータ量が前記第２のビット長のデータと前記第２のバースト回数の積と同じかそれ以上になったとき、前記第１のビット長のデータの受信回数が前記第１のバースト回数に達していなくても受信済みのデータを前記第２のビット長のデータとして前記受信回路へバースト転送する制御部を備えることを特徴とするメモリ制御回路。
【請求項２】
前記第１のビット長及び前記第２のビット長を示す情報を記憶するレジスタを具備する
請求項１に記載のメモリ制御回路。
【請求項３】
前記第１のビット長及び前記第２のビット長を示す情報を外部から指定する外部端子を具備する
請求項１または請求項２に記載のメモリ制御回路。
【請求項４】
第１バースト長の転送データを格納するデータバッファと、第１バースト長はバースト転送される毎に指定され、
１回のコマンド発行に応答して前記転送データをメモリにバースト転送する時の予め定められた第２バースト長に従って、前記第１バースト長の転送を指示するコマンドを分割バースト長の転送を指示するコマンドに分割するコマンド分割回路と、
前記分割バースト長を記憶するバースト長テーブルと、
前記データバッファに格納された前記転送データを前記バースト長テーブルに記憶される前記分割バースト長ずつ前記メモリにバースト転送するバーストタイミング制御回路と
を具備する
メモリ制御回路。
【請求項５】
前記データバッファに格納される前記転送データの数が前記分割バースト長により示されるデータ数に達するか、或いは、超える時、前記バーストタイミング制御回路は、前記メモリに対するバースト転送を開始する
請求項４に記載のメモリ制御回路。
【請求項６】
前記コマンド分割回路は、
前記転送データの転送先の先頭アドレスが所定のアドレスと異なる場合、前記転送先の先頭アドレスから前記所定のアドレスまでのデータ数を分割バースト長とする
請求項４または請求項５に記載のメモリ制御回路。
【請求項７】
前記コマンド分割回路は、前記データバッファに格納される前記転送データの第１データ幅と、前記データバッファから前記メモリに転送される前記転送データの第２データ幅とに基づいて、前記分割バースト長を決定する
請求項４から請求項６のいずれかに記載のメモリ制御回路。
【請求項８】
前記第１データ幅及び前記第２データ幅を示す情報を記憶するレジスタを具備する
請求項７に記載のメモリ制御回路。
【請求項９】
前記第１データ幅及び前記第２データ幅を示す情報を外部から指定するバス幅指定端子を具備する
請求項７または請求項８に記載のメモリ制御回路。
【請求項１０】
前記データバッファに格納される転送データが転送されるデータバスと、
前記データバッファから読み出された転送データが転送されるデータバスとは、
電気的に分離されている
請求項４から請求項９のいずれかに記載のメモリ制御回路。
【請求項１１】
請求項４から請求項１０のいずれかに記載のメモリ制御回路とマイクロプロセッサとを内蔵する半導体集積回路。
【請求項１２】
バースト転送される毎に指定されるデータ数が第１バースト長で示される転送データをデータバッファに格納するデータ蓄積ステップと、
予めメモリに設定され、１回のコマンドによりバースト転送されるデータ数を示す第２バースト長で転送できるように、前記第１バースト長を分割バースト長に分割するコマンド分割ステップと、
前記分割バースト長をバースト長テーブルに格納するバースト長格納ステップと、
前記データバッファに格納された前記転送データを前記バースト長テーブルに格納される前記分割バースト長ずつ前記メモリにバースト転送するバーストタイミング制御ステップと
を具備するメモリ制御方法。
【請求項１３】
前記データ蓄積ステップが、前記分割バースト長により示されるデータ数の前記転送データを前記データバッファに格納したとき、
前記バーストタイミング制御ステップは、前記メモリに対するバースト転送を開始する
請求項１２に記載のメモリ制御方法。
【請求項１４】
前記コマンド分割ステップは、
前記転送データの転送先の先頭アドレスが所定のアドレスと異なる場合、前記転送先の先頭アドレスから前記所定のアドレスまでのデータ数を分割バースト長とする
請求項１２または請求項１３に記載のメモリ制御方法。
【請求項１５】
前記データバッファに格納される前記転送データの第１データ幅と、前記データバッファから前記メモリに転送される前記転送データの第２データ幅とが異なるとき、
前記コマンド分割ステップは、前記第１データ幅と前記第２データ幅に基づいて、前記分割バースト長を決定する
請求項１２から請求項１４のいずれかに記載のメモリ制御方法。
【請求項１６】
前記第１データ幅及び第２データ幅を記憶するデータ幅記憶ステップを備える
請求項１５に記載のメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御回路及びメモリ制御方法に関し、特に、バーストアクセスを制御する制御部を備えたメモリ制御回路及びそのメモリ制御方法に関する。
【背景技術】
【０００２】
近年、クロック信号に同期してデータを入出力するＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、所謂ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）は、高速大容量メモリをシステムに組み込む事ができるため、ＲＡＭの主流になっている。ＳＤＲＡＭは、データを連続的に入出力するバーストモードを備え、データの入出力を高速に行えるように構成されている。このようなＳＤＲＡＭの高速アクセス性能を充分に利用するためには、ＳＤＲＡＭとの接続にインターフェース回路が必要になる。
【０００３】
バーストアクセスを行う高速メモリのアクセスを制御する高速メモリアクセス制御装置に関する技術は、例えば、特開２００５−１４１６８２号公報に開示されている。この特許文献には、このバーストアクセスにより指定された数のワードが連続的に入出力され、その途中にメモリのページ境界がある場合の制御が示されている。
【０００４】
高速メモリアクセス制御装置は、例外アクセス情報決定手段とアドレス発生手段と切替制御手段とタイミング制御手段とを備えている。例外アクセス情報決定手段は、外部から供給されるバーストワード数およびアクセス開始アドレスに基づいてバーストアクセスが連続する２ページに亘る例外アクセスであることを判定する。それとともに、例外アクセス情報決定手段は、各ページにバーストアクセスするアクセスワード数を決定する。アドレス発生手段は、高速メモリにバーストアクセスを開始するための開始アドレスを発生する。それとともに、アドレス発生手段は、バーストアクセスを開始するページから次のページにアクセスするために開始アドレスを切り替える。切替制御手段は、バーストアクセスが連続する２ページにまたがると判定されたときに、決定されたバースト数に基づいてアドレス発生手段によるアドレスの切替タイミングを制御する。タイミング制御手段は、例外アクセス情報決定手段によって例外アクセスの判定およびバーストアクセスのワード数決定が行なわれた後に高速メモリへのアクセスを開始するようにアクセスのタイミングを制御する。
【０００５】
ＳＤＲＡＭは、例えば、図１に示されるように、マイクロプロセッサシステムのメインメモリとして使用される。このシステムにおいてバースト転送によるデータの書き込み動作を、図を参照して説明する。
【０００６】
マイクロプロセッサシステムは、中央演算処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）１２、入出力部（Ｉ／Ｏ）１８、ＳＤＲＡＭ制御回路１７、ＳＤＲＡＭ２０を具備する。ＣＰＵ１１、ＤＭＡＣ１２、ＳＤＲＡＭ制御回路１７、入出力部１８は、集積回路の集積度が向上して１チップに集積されることも多くなってきている。そのため、マイクロプロセッサシステムは、チップ１０とＳＤＲＡＭ２０との２チップで構成されることも多くなってきている。
【０００７】
ＣＰＵ１１、ＤＭＡＣ１２、ＳＤＲＡＭ制御回路１７、入出力部１８は、バス１５を介して接続される。ＣＰＵ１１は、メインメモリであるＳＤＲＡＭ２０をアクセスしてプログラムを実行し、入出力部１８からデータを取り込み、入出力部１８にデータを出力する。ＤＭＡＣ１２は、ＣＰＵ１１を介さずにメモリ間、メモリ入出力部間のデータ転送を制御する。ＳＤＲＡＭ制御回路１７は、ＣＰＵ１１或いはＤＭＡＣ１２によるＳＤＲＡＭ２０のアクセスを制御する。
【０００８】
ＳＤＲＡＭ制御回路１７は、図２に示されるように、コマンドバッファ９１、データ書込カウンタ９７、バースト長判定回路９５、バーストタイミング制御回路９６、データバッファ９８、データ読出カウンタ９９を備える。ここでは、ＳＤＲＡＭ２０に書き込む回路を主に説明する。
【０００９】
コマンドバッファ９１は、ＣＰＵ１１またはＤＭＡ１２からバス１５を介してコマンドＰＣＭＤを受け取る。コマンドバッファ９１は、コマンドＰＣＭＤとともに、転送するデータのバースト長ＰＢＬと、転送先のメモリのアドレスＰＡＤＲとを受け取る。受け取ったコマンドＰＣＭＤ、バースト長ＰＢＬ、アドレスＰＡＤＲは、バーストタイミング制御回路９６に出力されるとともに、バースト長ＰＢＬはバースト長判定回路９５にも出力される。
【００１０】
データ書込カウンタ９７は、データバッファ９８が受け取るライトデータの数をデータ有効信号ＤＶＡＬＤに基づいてカウントする。カウント結果ＷＣＮＴは、バースト長判定回路９５に出力される。バースト長判定回路９５は、データ書込カウンタ９７の値とコマンドバッファ９１のバースト長ＰＢＬとを比較し、一致したらバーストタイミング制御回路９６に転送開始を指示する。
【００１１】
バーストタイミング制御回路９６は、転送開始の指示を受けてＳＤＲＡＭ２０へのデータ転送を制御する。バーストタイミング制御回路９６は、データ転送のプロトコルに従ってＳＤＲＡＭ２０にコマンドＳＣＭＤを発行し、転送先アドレスＳＡＤＲを指定し、データバッファ９８にデータ出力を指示する。このとき、データ読出カウンタ９９のカウント値ＲＣＮＴを参照して、転送の終了を検知する。ＳＤＲＡＭ２０は、一度にバースト転送できるデータ数を予めモードレジスタに設定されている。バースト転送を継続するときは、バーストタイミング制御回路９６は、その設定されたバースト転送数毎にコマンドを発行する。
【００１２】
データバッファ９８は、バス１５を介して転送されるＳＤＲＡＭ２０に書き込むべきデータＰＤＡＴＡをデータ有効信号ＤＶＡＬＤに基づいて取り込む。取り込まれたデータは、一旦データバッファ９８に蓄積され、バーストタイミング制御回路９６の指示を受けてＳＤＲＡＭ２０に出力される（ＤＱ）。
【００１３】
データ読出カウンタ９９は、データバッファ９８が出力したデータの数をカウントし、カウント値ＲＣＮＴをバーストタイミング制御回路９６に出力する。また、データ読出カウンタ９９は、読出アドレスをデータバッファ９８に出力してもよい。
【００１４】
図３を参照して、ＳＤＲＡＭ制御回路１７の動作を説明する。ここでは、ＳＤＲＡＭ制御回路１７、バス１５、ＳＤＲＡＭ２０は、クロックＣＬＫに同期して動作し、バス１５を介して転送されるデータのデータ幅とＳＤＲＡＭ２０に格納されるデータのデータ幅とは等しいものとする。クロックの１周期毎に符号が付され、タイミングの説明に使われる（図３（ａ））。また、ＳＤＲＡＭ２０は、一度に受け取ることのできるバースト数に４が設定されているものとする。
【００１５】
ＳＤＲＡＭ２０にデータを書き込む指示であるコマンドＰＣＭＤが、バースト長ＰＢＬとアドレスＰＡＤＲと共にバス１５上に出力される。コマンドバッファ９１は、期間ｔ０の立ち上がりのタイミングでコマンドＰＣＭＤ：ＷＲと、バースト長ＰＢＬ：８とアドレスとを取り込む（図３（ｂ）（ｃ））。
【００１６】
データ有効信号ＤＶＡＬＤがバス１５上のデータＰＤＡＴＡが有効であることを示している期間ｔ１〜ｔ８において、データバッファ９８は、データＰＤＡＴＡ：Ｄ０〜Ｄ７を取り込む（図３（ｄ）（ｅ））。データ書込カウンタ９７は、このデータ有効信号ＤＶＡＬＤがアクティブである期間のクロックＣＬＫの立ち上がりを計数することによりデータ数を計数する（図３（ｆ））。
【００１７】
指示されたバースト長は８であるから、データ書込カウンタ９７のカウントＷＣＮＴが“８”になったとき、即ち、期間ｔ８において、バースト長判定回路９５は、バーストタイミング制御回路９６に対してＳＤＲＡＭ２０へのデータ転送開始を指示する。バーストタイミング制御回路９６は、データ転送開始の指示に応答して、ＳＤＲＡＭ２０に動作開始を指示するコマンドＳＣＭＤ：ＡＣＴをＳＤＲＡＭ２０が期間ｔ１０において受け取れるように出力する（図３（ｆ）（ｈ））。
【００１８】
バーストタイミング制御回路９６は、ＳＤＲＡＭ２０の動作準備が完了するまで待機し、期間ｔ１３にＳＤＲＡＭ２０が受け取れるようにデータ書き込みを指示するコマンドＳＣＭＤ：ＷＲを出力する。データバッファ９８は、バーストタイミング制御回路９６の指示に応答して、蓄積しているデータの出力を期間ｔ１３から開始する。ＳＤＲＡＭ２０は、期間ｔ１３の立ち上がりでコマンドＳＣＭＤを受け取り、次のクロック（ｔ１４）の立ち上がりからクロックに同期して書き込みデータを取り込む。データ読出カウンタ９９は、このデータバッファ９８に対するデータ出力の指示に同期して、データバッファ９８から出力されるデータ数を計数する（図３（ｇ）（ｈ）（ｉ））。
【００１９】
バーストタイミング制御回路９６は、ＳＤＲＡＭ２０のモードレジスタに設定されているバースト数に達する４ワード目のデータＤＱ：Ｄ３の出力と同時に、次の４ワードのデータの書き込みを指示するコマンドＳＣＭＤ：ＷＲをＳＤＲＡＭ２０に対して出力する。このタイミングでコマンドＳＣＭＤ：ＷＲを出力することにより、ＳＤＲＡＭ２０は、アドレスの指定なく連続してデータを受け取ることができる。
【００２０】
また、この２回目のコマンドＳＣＭＤ：ＷＲの出力により、ＳＤＲＡＭ制御回路１７に対して指示されたバースト長８のデータ転送のコマンドが全て出力されたことになり、コマンドバッファ９１は、次のコマンドＰＣＭＤを受け取ることができる。ここでは、そのタイミングは期間ｔ１８となる。
【００２１】
先のデータ転送は、データ読出カウンタ９９が期間ｔ２１において、ＲＣＮＴ＝８を示し、最後のデータＤＱ：Ｄ７が出力されたことをバーストタイミング制御回路９６に通知する。ここで先のデータ転送が終了する。
【００２２】
【特許文献１】特開２００５−１４１６８２号公報
【発明の開示】
【発明が解決しようとする課題】
【００２３】
このように、ＣＰＵ１１或いはＤＭＡＣ１２から指示されるデータ転送は、ＳＤＲＡＭ制御回路１７がバースト長のデータを全て受け取ってからＳＤＲＡＭ２０に対して書き込みを開始するため、タイムラグが大きくなってしまう。
【００２４】
また、転送データのバースト長がデータバッファ９８のサイズより大きい場合、データバッファのサイズに合わせて複数回に分けて転送する必要があり、余分に時間が掛かってしまう。
【課題を解決するための手段】
【００２５】
以下に、［発明を実施するための最良の形態］で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００２６】
本発明の観点では、メモリ制御回路（１７）は、データバッファ（３８）と、コマンド分割回路（３２）と、バースト長テーブル（３３）と、バーストタイミング制御回路（３６）とを具備する。データバッファ（３８）は、第１バースト長の転送データを格納する。この第１バースト長は、バースト転送される毎に指定される。コマンド分割回路（３２）は、第１バースト長を分割バースト長に分割する。予めメモリ（２０）には１回のコマンド発行に応答してバースト転送可能な第２バースト長が設定されており、その第２バースト長で転送できるように分割バースト長が決められる。バースト長テーブル（３３）は、分割バースト長を記憶する。バーストタイミング制御回路（３６）は、データバッファ（３８）に格納された転送データを、バースト長テーブル（３３）に記憶される前記分割バースト長ずつメモリ（２０）にバースト転送する。バーストタイミング制御回路（３６）は、分割バースト長により示されるデータ数の転送データがデータバッファ（３８）に格納されたとき、メモリ（２０）に対するバースト転送を開始する。
【００２７】
本発明の他の観点では、メモリ制御方法は、データ蓄積ステップと、コマンド分割ステップと、バースト長格納ステップと、バーストタイミング制御ステップとを具備する。データ蓄積ステップは、バースト転送される毎に指定されるデータ数が第１バースト長で示される転送データをデータバッファ（３８）に格納する。コマンド分割ステップは、第１バースト長を分割バースト長に分割する。予めメモリ（２０）には第２バースト長が設定されており、その第２バースト長で転送できるように分割バースト長が決められる。バースト長格納ステップは、分割バースト長をバースト長テーブル（３３）に格納する。バーストタイミング制御ステップは、データバッファ（３８）に格納されたデータを、バースト長テーブル（３３）に格納される分割バースト長ずつメモリ（２０）にバースト転送する。バーストタイミング制御ステップは、データ蓄積ステップが、分割バースト長により示されるデータ数の転送データをデータバッファ（３８）に格納したとき、メモリ（２０）に対するバースト転送を開始する。
【発明の効果】
【００２８】
本発明によれば、タイムラグの少ないデータ転送ができるＳＤＲＡＭ制御回路を提供することができる。また、本発明によれば、転送時間を短縮するＳＤＲＡＭ制御回路を提供することができる。
【発明を実施するための最良の形態】
【００２９】
図を参照して、本発明を実施するための最良の形態のＳＤＲＡＭ制御回路を説明する。図１は、メインメモリとしてＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）を使用するマクロプロセッサシステムの構成の概略を示すブロック図である。マイクロプロセッサシステムは、中央演算処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）１２、入出力部（Ｉ／Ｏ）１８、ＳＤＲＡＭ制御回路１７、ＳＤＲＡＭ２０を具備する。
【００３０】
ＣＰＵ１１、ＤＭＡＣ１２、ＳＤＲＡＭ制御回路１７、入出力部１８は、集積回路の集積度が向上して１チップに集積されることも多く、マイクロプロセッサシステムは、チップ１０とＳＤＲＡＭ２０との２チップで構成される。ＣＰＵ１１、ＤＭＡＣ１２、ＳＤＲＡＭ制御回路１７、入出力部１８は、バス１５を介して接続される。ＳＤＲＡＭ２０は、ＳＤＲＡＭ制御回路１７に接続される。
【００３１】
ＣＰＵ１１は、メインメモリであるＳＤＲＡＭ２０をアクセスしてプログラムを実行し、入出力部１８からデータを取り込み、入出力部１８にデータを出力する。ＤＭＡＣ１２は、ＣＰＵ１１を介さずにメモリ間、メモリ入出力部間のデータ転送を制御する。ＳＤＲＡＭ制御回路１７は、ＣＰＵ１１或いはＤＭＡＣ１２によるＳＤＲＡＭ２０のアクセスを制御する。
【００３２】
ＳＤＲＡＭ制御回路１７は、図４に示されるように、コマンドバッファ３１、先行コマンド分割回路３２、バースト長テーブル３３、バースト長判定回路３５、バーストタイミング制御回路３６、データ書込カウンタ３７、データバッファ３８、データ読出カウンタ３９を備える。ここでは、説明を簡単にするために、ＳＤＲＡＭ制御回路１７は、バス１５のデータ幅がＳＤＲＡＭ２０のデータ幅に等しいものとして説明する。また、ＳＤＲＡＭ制御回路１７は、ＳＤＲＡＭ２０からデータを取り出す読み出し側回路も当然備えているが、ここでは説明は省略し、ＳＤＲＡＭ２０にデータを転送する書き込み側の回路を説明する。
【００３３】
コマンドバッファ３１は、ＣＰＵ１１またはＤＭＡＣ１２からバス１５を介してコマンドＰＣＭＤを受け取る。コマンドバッファ３１は、コマンドＰＣＭＤとともに、転送するデータのバースト長ＰＢＬと、転送先のアドレスＰＡＤＲとを受け取り、保持する。受け取ったコマンドＰＣＭＤ、バースト長ＰＢＬ、アドレスＰＡＤＲは、バーストタイミング制御回路３６に出力されるとともに、先行コマンド分割回路３２にも出力される。
【００３４】
データバッファ３８は、バス１５を介してＣＰＵ１１またはＤＭＡＣ１２から転送されるデータＰＤＡＴＡを格納する。また、データバッファ３８は、バーストタイミング制御回路３６の指示に応答して、格納されているデータＤＱ（データＰＤＡＴＡ）をＳＤＲＡＭ２０に転送する。データバッファ３８から出力されたライトデータＰＤＡＴＡは、クロックに同期して、バス１５にその有効性を示す信号ＤＶＡＬＤとともにのせられる。従って、データ書込カウンタ３７は、データバッファ３８が受け取ったライトデータ数を計数するために、有効信号ＤＶＡＬＤがアクティブになっている期間のクロックを計数する。カウント結果ＷＣＮＴは、バースト長判定回路３５に出力される。
【００３５】
先行コマンド分割回路３２は、コマンドバッファ３１から受け取ったアドレスＰＡＤＲとバースト長ＰＢＬとに基づいて、ＳＤＲＡＭ２０がコマンド毎に受け取ることのできるＳＤＲＡＭバースト長に合せてコマンド（バースト長）を分割する。転送元が１回のコマンドによりＳＤＲＡＭ２０に転送するデータの数を示すバースト長ＰＢＬは、ＳＤＲＡＭ２０に対して発行される１回のコマンドによりＳＤＲＡＭ２０に転送されるデータの数を示す分割バースト長に分割される。先行コマンド分割回路３２は、その分割バースト長をバースト長テーブル３３に格納する。ＳＤＲＡＭバースト長は、予めＳＤＲＡＭ２０のモードレジスタに設定されている。また、ＳＤＲＡＭ２０は、例えば、０番地、８番地、１６番地などのバースト境界からバースト転送が開始される。従って、先行コマンド分割回路３２は、そのバースト境界までのデータを１バーストで転送するように第１分割バースト長を決定する。バースト境界以降のデータは、ＳＤＲＡＭバースト長に合せて分割される。即ち、分割バースト長は、単にＳＤＲＡＭバースト長に合わせるだけでなく、アドレスＰＡＤＲに基づいて決定されることになる。従って、分割バースト長は、等分であるとは限らない。
【００３６】
バースト長テーブル３３は、先行コマンド分割回路３２から分割バースト長を受け取って格納する。ｎ個に分割された場合、図５に示されるように、分割バースト長群は、第１分割バースト長、第２分割バースト長、…、第ｎ分割バースト長というように、使用される順に格納される。それぞれの分割バーストの転送が完了すると、分割バースト長は順次繰り上げられる。或いは、バースト長テーブル３３は、使用されるべき分割バースト長を示すポインタを備え、そのポインタの示す位置が移動する。
【００３７】
バースト長判定回路３５は、データ書込カウンタ３７のカウント値ＷＣＮＴと、バースト長テーブル３３に格納される分割バースト長とを比較する。カウント値ＷＣＮＴが分割バースト長に一致、或いは、超過すると、バースト長判定回路３５は、バーストタイミング制御回路３６に分割バースト転送の開始を指示する。即ち、バースト転送によりＳＤＲＡＭ２０に書き込むことが可能な数のデータがデータバッファ３８に書き込まれると、バースト転送が始まる。
【００３８】
バーストタイミング制御回路３６は、転送開始の指示を受けてＳＤＲＡＭ２０へのデータ転送を制御する。バーストタイミング制御回路３６は、ＳＤＲＡＭ２０のデータ転送のプロトコルに従って、ＳＤＲＡＭ２０にコマンドＳＣＭＤを発行するとともに、転送先アドレスＳＡＤＲを指定し、データバッファ３８にデータ出力を指示する。このとき、バーストタイミング制御回路３６は、データ読出カウンタ３９のカウント値ＲＣＮＴを参照して、転送の終了を検知する。このとき、ＳＤＲＡＭ２０に対する１つのコマンドによりバースト転送できるデータ数（ＳＤＲＡＭバースト長）が予めＳＤＲＡＭ２０のモードレジスタに設定されており、バースト転送を継続するときは、バーストタイミング制御回路３６は、その設定されたバースト転送数毎にコマンドを発行するものとする。
【００３９】
データバッファ３８は、バス１５を介して転送されるＳＤＲＡＭ２０に書き込むべきデータＰＤＡＴＡをデータ有効信号ＤＶＡＬＤに基づいて取り込む。取り込まれたデータは、一旦データバッファ３８内に蓄積され、バーストタイミング制御回路３６の指示に従ってＳＤＲＡＭ２０に出力される（ＤＱ）。データバッファ３８は、種々の構成により実現可能であるが、ここではＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）により実現される。したがって、書き込まれた順に読み出されるものとする。
【００４０】
データ読出カウンタ３９は、データバッファ３８が出力するデータの数を計数し、カウント値ＲＣＮＴをバーストタイミング制御回路３６に出力する。また、データ読出カウンタ３９は、読出アドレスをデータバッファ３８に出力しても良い。
【００４１】
図６を参照して、ＳＤＲＡＭ制御回路１７の動作を説明する。ここでは、ＳＤＲＡＭ制御回路１７、バス１５、ＳＤＲＡＭ２０は、クロックＣＬＫ（図６（ａ））に同期して動作し、バス１５のデータ幅とＳＤＲＡＭ２０のデータ幅は等しいものとする。また、ＳＤＲＡＭ２０のモードレジスタには、ＳＤＲＡＭバースト長、即ち、１回のコマンドにより受け取ることのできるバースト数として４が設定されているものとする。
【００４２】
まず、簡単にＳＤＲＡＭ２０へのデータ書き込みプロトコルを説明する。ＳＤＲＡＭ２０へのアクセスを制御するＳＤＲＡＭ制御回路１７は、ＲＡＳ（ロウアドレスストローブ）信号、ＣＡＳ（カラムアドレスストローブ）信号、ＣＳ（チップセレクト）信号、ＷＥＳ（ライトイネーブル）信号、アドレス信号等をＳＤＲＡＭ２０に対して出力する。これらの信号の組み合せにより、ＳＤＲＡＭ２０に対するコマンドおよびそのパラメータが示される。これらの個々の信号は、図６には示されず、コマンドのタイミングのみ示されている。例えば、ＣＳ＝“Ｌ”、ＲＡＳ＝“Ｌ”、ＣＡＳ＝“Ｈ”、ＷＥ＝“Ｈ”により示されるコマンドは、コマンド：ＡＣＴであり、メモリ動作の開始が指示される。このとき、ＳＤＲＡＭ制御回路１７はロウアドレスを出力し、ロウアドレスの取り込みを指示する。また、ＣＳ＝“Ｌ”、ＲＡＳ＝“Ｈ”、ＣＡＳ＝“Ｌ”、ＷＥ＝“Ｌ”により示されるコマンドは、コマンド：ＷＲであり、カラムアドレスの取り込みとデータ書き込み動作が指示される。このとき、ＳＤＲＡＭ制御回路１７は、カラムアドレスを出力している。
【００４３】
以下、ＳＤＲＡＭ２０に対してバースト転送によりデータを書き込む場合の手順について説明する。ＳＤＲＡＭ制御回路１７は、ＳＤＲＡＭ２０に対してアクセスの開始を示すコマンド：ＡＣＴを出力すると共に、ロウアドレス（アドレス信号の一部）を与える。次に、ＳＤＲＡＭ２０に対して書き込み動作の開始を示すコマンド：ＷＲを出力すると共に、カラムアドレス（アドレス信号の一部）を与える。ＣＡＳレイテンシにより設定される待ち時間の後、書き込みデータが転送される。書き込みデータは、各クロック毎に転送される。ＤＤＲ型等においては、更に高速に転送するため、別にストローブ信号を有する場合もあるが、ここでは単純な形式による転送で動作を説明する。
【００４４】
書き込みデータが転送されている間、ＳＤＲＡＭ制御回路１７からＳＤＲＡＭ２０に対するアドレスの指示は不要であり、転送速度の向上に役立つ。１度の書き込みコマンドＳＣＭＤ：ＷＲにより転送されるデータ数（ＳＤＲＡＭバースト長）は、ＳＤＲＡＭ２０に内蔵されるモードレジスタに予め設定されている。ここでは、モードレジスタへのデータ数の設定手順の説明を省略する。
【００４５】
次に、ＣＰＵ１１或いはＤＭＡＣ１２の指示によりＳＤＲＡＭ制御回路１７が行うバースト転送によるＳＤＲＡＭ２０への書き込み動作を、図６を参照して説明する。
【００４６】
ＳＤＲＡＭ２０にデータを書き込む指示であるコマンドＰＣＭＤ：ＷＲが、ＣＰＵ１１或いはＤＭＡＣ１２により、バースト長ＰＢＬ：８と書き込み先アドレスＰＡＤＲと共にバス１５上に出力される。バス１５上に出力されたコマンド、バースト長、アドレスは、期間ｔ０の立ち上がりのタイミングでコマンドバッファ３１に取り込まれる（図６（ｂ）、（ｃ））。
【００４７】
コマンドバッファ３１に取り込まれたコマンド、バースト長、アドレスは、先行コマンド分割回路３２に出力される。先行コマンド分割回路３２は、入力されたコマンドをＳＤＲＡＭ２０に転送する最適なバースト長に分割し、図５に示されるように、分割バースト長をバースト長テーブル３３に格納する。ＳＤＲＡＭ２０の書き込みアドレスが、バースト境界から始まる場合、ＳＤＲＡＭ２０のバースト長が４であるから、バースト長８の書き込みコマンドは、２回に分けてＳＤＲＡＭ２０に転送されることになる。即ち、バースト長テーブル３３には、第１分割バースト長＝４、第２分割バースト長＝４が格納される。分割された最初のバースト長である第１分割バースト長＝４が、バースト長判定回路３５に出力される。
【００４８】
一方、データ有効信号ＤＶＡＬＤがバス１５上のデータＰＤＡＴＡが有効であることを示している期間ｔ１〜ｔ８において、データバッファ３８は、データＰＤＡＴＡ：Ｄ０〜Ｄ７を取り込む（図６（ｄ）（ｅ））。データ書き込みカウンタ３７は、このデータ有効信号ＤＶＡＬＤがアクティブである期間のクロックを計数することにより転送数を計数する（図６（ｆ））。
【００４９】
バースト長判定回路３５は、バースト長テーブル３３から出力される分割バースト長と、データ書込カウンタ３７から出力されるカウント値ＷＣＮＴとを比較する。このとき、バースト長テーブルから得られる分割バースト長は“４”であるから、カウント値ＷＣＮＴが“４”になった時、即ち、期間ｔ４において、バースト長判定回路３５は、バーストタイミング制御回路３６に対してＳＤＲＡＭ２０へのデータ転送開始を指示するとともに、データ書込カウンタ３７に対してカウントリセットを指示し、バースト長テーブル３３に対して次の分割バースト長の出力を指示する（図６（ｆ））。
【００５０】
バーストタイミング制御回路３６によりカウントリセットの指示をされたデータ書込カウンタ３７は、カウント値ＷＣＮＴをリセットし、データＰＤＡＴＡ：Ｄ４から転送数を再計数する。
【００５１】
バーストタイミング制御回路３６は、１回目のデータ転送開始の指示、即ち期間ｔ４におけるバースト長判定回路３５からの指示に応答して、動作開始を指示するコマンドＳＣＭＤ：ＡＣＴを、期間ｔ６に出力する（図６（ｆ）（ｈ））。
【００５２】
続いて、バーストタイミング制御回路３６は、ＳＤＲＡＭ２０の動作準備が完了するまで待機し、動作準備が完了した期間ｔ９にデータ書き込みを指示するコマンドＳＣＭＤ：ＷＲを出力する（図６（ｈ））と共に、データバッファ３８に蓄積されているデータの期間ｔ９からの出力を指示する（図６（ｉ））。ＳＤＲＡＭ２０は、期間ｔ９の立ち上がりでコマンドＳＣＭＤ：ＷＲを受け取り、次のクロック（ｔ１０）の立ち上がりからクロックに同期してデータバッファ３８から出力される書き込みデータを取り込む。データ読出カウンタ３９は、このデータバッファ３８に対するデータ出力の指示に同期して読み出しデータ数を計数する（図６（ｇ））。
【００５３】
ここで、データ書込カウンタ３７は、期間ｔ８の立ち上がりでカウントが“４”となり、バースト長テーブル３３が第２分割バースト長“４”を出力しているため、バースト長判定回路３５は、期間ｔ８にバーストタイミング制御回路３６に対して２回目のデータ転送開始を指示するが、このとき、バーストタイミング制御回路３６は、まだＳＤＲＡＭ２０に対する１回目のバースト転送を指示しておらず、バースト長判定回路３５からの２回目のデータ転送開始指示は保留状態とされる（図６（ｆ）（ｈ））。バーストタイミング制御回路３６は、保留状態としていた２回目のデータ転送開始指示を、１回目のデータ転送終了直前即ち、データＤＱ：Ｄ３の出力と同時に次のバーストデータの書き込みを指示するコマンドＳＣＭＤ：ＷＲをＳＤＲＡＭ２０に出力する。それとともに、データ読出カウンタ３９はリセットされ、次のバースト転送のデータ読み出しに備える。これによりＳＤＲＡＭ２０へのバースト転送は途切れなく継続される。従って、ＳＤＲＡＭ２０は連続してデータを受け取ることが可能となる。従って、期間ｔ１４〜ｔ１７において、データＤＱ：Ｄ４〜Ｄ７がデータバッファ３８からＳＤＲＡＭ２０に転送される。期間ｔ１７において、データ読出カウンタ３９は２度目のカウント値ＲＣＮＴ“４”を示し、バースト長テーブル３３の分割バースト長に対応するデータは全て転送されたことになり、バースト転送が終了する。バースト転送の終了は、従来の回路の場合、期間ｔ２１であったので、４クロック短縮されたことになる。
【００５４】
また、この２回目のコマンドＳＣＭＤ：ＷＲの出力により、ＳＤＲＡＭ制御回路１７に対して指示されたバースト長“８”のデータ転送の分割コマンドが全て出力されたことになり、コマンドバッファ３１は、次のコマンドＰＣＭＤを受け取ることができる。ここでは、そのタイミングは期間ｔ１４となる。従来の回路では、次のコマンドＰＣＭＤを受け取ることのできるタイミングは、期間ｔ１８であったので、本発明の回路は４クロック短縮することができたことになる。
【００５５】
次に、書き込み開始アドレスがバースト境界ではない場合のＳＤＲＡＭ制御回路１７の動作を、図７を参照して説明する。ここでは、書き込み開始アドレスがバースト境界から２ワードずれているものを例にして説明する。
【００５６】
ＳＤＲＡＭ２０にデータを書き込む指示であるコマンドＰＣＭＤ：ＷＲが、ＣＰＵ１１或いはＤＭＡＣ１２により、バースト長ＰＢＬ：８と書き込み先アドレスＰＡＤＲと共にバス１５上に出力される。バス１５上に出力されたコマンド、バースト長、アドレスは、期間ｔ０の立ち上がりのタイミングでコマンドバッファ３１に取り込まれる（図７（ｂ）、（ｃ））。
【００５７】
コマンドバッファ３１に取り込まれたコマンド、バースト長、アドレスは、先行コマンド分割回路３２に出力される。先行コマンド分割回路３２は、入力されたコマンドをＳＤＲＡＭ２０に転送する最適な分割バースト長に分割し、図５に示されるように、分割バースト長をバースト長テーブル３３に格納する。書き込み開始アドレスが、バースト境界ではないため、バースト境界までの転送数が第１分割バースト長になる。ここでは、２ワードずれている。従って、第１分割バースト長は、２となる。
【００５８】
第１分割にてアドレスがバースト境界に一致するため、残りのバースト長は、ＳＤＲＡＭ２０のモードレジスタに設定されているＳＤＲＡＭバースト長で分割される。ＳＤＲＡＭバースト長は４であるから第２分割バースト長は４であり、残り２ワードが第３分割バースト長になる。即ち、バースト長８の書き込みコマンドは、３回に分けてＳＤＲＡＭ２０に転送される。バースト長テーブル３３には、第１分割バースト長＝２、第２分割バースト長＝４、第３分割バースト長＝２が格納される。コマンドの分割された最初のバースト長である第１分割バースト長＝２が、バースト長判定回路３５に出力される。
【００５９】
一方、データ有効信号ＤＶＡＬＤがバス１５上のデータＰＤＡＴＡが有効であることを示している期間ｔ１〜ｔ８において、データバッファ３８は、データＰＤＡＴＡ：Ｄ０〜Ｄ７を取り込む（図７（ｄ）（ｅ））。データ書き込みカウンタ３７は、このデータ有効信号ＤＶＡＬＤがアクティブである期間のクロックを計数することによりデータ数を計数する（図７（ｆ））。
【００６０】
バースト長判定回路３５は、バースト長テーブル３３から出力される分割バースト長と、データ書込カウンタ３７から出力されるカウント値ＷＣＮＴとを比較する。このとき、バースト長テーブルから得られる分割バースト長は“２”であるから、カウント値ＷＣＮＴが“２”になった時、即ち、期間ｔ２において、バースト長判定回路３５は、バーストタイミング制御回路３６に対してＳＤＲＡＭ２０へのデータ転送開始を指示するとともに、データ書込カウンタ３７に対してカウントリセットを指示し、バースト長テーブル３３に対して次の分割バースト長の出力を指示する（図７（ｆ））。
【００６１】
バーストタイミング制御回路３６によりカウントリセットの指示をされたデータ書込カウンタ３７は、カウント値ＷＣＮＴをリセットし、データＰＤＡＴＡ：Ｄ２から転送数を再計数する。
【００６２】
バースト長判定回路３５が２回目のデータ転送開始指示を出力すると、データ書込カウンタ３７はリセットされ、バースト長テーブル３３は次の第３分割バースト長“２”を出力する。データ書込カウンタ３７がデータＰＤＡＴＡ：Ｄ６、Ｄ７の２ワードの書き込みをカウントすると、第３分割バースト長に一致するため、バースト長判定回路３５は、３回目のデータ転送開始を指示する。ここでデータバッファ３８への書き込みは終了する（図７（ｆ）（ｈ））。
【００６３】
一方、バーストタイミング制御回路３６は、１回目のデータ転送開始の指示に応答して、ＳＤＲＡＭ２０に動作開始を指示するコマンドＳＣＭＤ：ＡＣＴを、期間ｔ４においてＳＤＲＡＭ２０が受け取ることができるように出力する（図７（ｆ）（ｈ））。
【００６４】
その後、バーストタイミング制御回路３６は、ＳＤＲＡＭ２０の動作準備が完了するまで待機し、動作準備が完了した期間ｔ７にデータ書き込みを指示するコマンドＳＣＭＤ：ＷＲを出力する（図７（ｈ））と共に、バースト境界から書き込み先アドレスまでの２ワード分のダミーデータが出力された後、データバッファ３８に蓄積されているデータの期間ｔ９からの出力を指示する（図７（ｉ））。ＳＤＲＡＭ２０は、期間ｔ７の立ち上がりでコマンドＳＣＭＤ：ＷＲを受け取り、次のクロック（ｔ８）からクロックの立ち上がりに同期してダミーデータｄｍ及びデータバッファ３８から出力される書き込みデータを取り込む。ＳＤＲＡＭ２０は、バースト境界からデータを取り込むように動作するが、バースト境界から転送先アドレスまでのダミーデータｄｍはメモリに書き込まれない。書き込まれるデータは、Ｄ０からとなる。データ読出カウンタ３９は、このデータバッファ３８に対するデータ出力の指示に同期して読み出しデータ数を計数する（図７（ｇ））。例えば、データ読出カウンタ３９は、ＳＤＲＡＭ２０に対するコマンドＳＣＭＤ：ＷＲが発行されるとリセットされ、データバッファ３８にデータ出力が指示されると、カウント値ＲＣＮＴを＋１する。従って、データ読出カウンタ３９は、データＤＱ：Ｄ０を出力するとカウント値ＲＣＮＴ“１”、データＤＱ：Ｄ１を出力するとカウント値ＲＣＮＴ“２”となる。
【００６５】
ここで、データ書込カウンタ３７は、期間ｔ６の立ち上がりでカウントが“４”となる。バースト長テーブル３３が第２分割バースト長“４”を出力しているため、バースト長判定回路３５は、期間ｔ６にバーストタイミング制御回路３６に対して２回目のデータ転送開始を指示するが、このとき、バーストタイミング制御回路３６は、まだＳＤＲＡＭ２０に対する１回目のバースト転送を開始しておらず、バースト長判定回路３５からの２回目のデータ転送開始指示は保留状態とされる（図７（ｆ）（ｈ））。バーストタイミング制御回路３６は、保留状態としていた２回目のデータ転送開始指示を、１回目のデータ転送終了直前即ち、データＤＱ：Ｄ１の出力と同時に次のバーストデータの書き込みを指示するコマンドＳＣＭＤ：ＷＲをＳＤＲＡＭ２０に出力する。それとともに、データ読出カウンタ３９はリセットされ、次のバースト転送のデータ読み出しに備える。これによりＳＤＲＡＭ２０へのバースト転送は途切れなく継続される。従って、ＳＤＲＡＭ２０は連続してデータを受け取ることが可能となる。従って、期間ｔ１２から期間ｔ１５までデータＤＱ：Ｄ２〜Ｄ５がデータバッファ３８からＳＤＲＡＭ２０に転送される（図７（ｈ）（ｉ））。データ読出カウンタ３９は、カウント値“４”まで計数する。
【００６６】
さらに、２回目のデータ転送の最後のデータＤＱ：Ｄ５を転送する前の期間ｔ１４までに３回目のデータ転送開始の指示があり、保留状態とされており、バーストタイミング制御回路３６は、ＳＤＲＡＭ２０に対して、データＤＱ：Ｄ５の出力と同時に次のバーストデータの書き込みを指示するコマンドＳＣＭＤ：ＷＲを出力する。データ読出カウンタ３９は、リセットされ、次のバースト転送のデータ読み出しに備える。従って、バースト転送は途切れなく継続される（図７（ｈ）（ｉ））。
【００６７】
３回目のバースト転送は、２ワードであるため、期間ｔ１６にデータＤＱ：Ｄ６、期間ｔ１７にデータＤＱ：Ｄ７が出力される。期間ｔ１７において、データ読出カウンタ３９はカウント値ＲＣＮＴ“２”を示し、バースト長テーブル３３の分割バースト長に対応するデータは全て転送されたことになる。その後、バースト転送は、バースト境界までダミーデータｄｍを転送して終了する。バースト転送は、バースト境界アドレスでバースト転送した従来の回路の場合の期間ｔ２１より２クロック短縮された期間ｔ１９に終了する。従来回路によるバースト境界ではない転送先アドレスに対するバースト転送の場合は、ダミーデータの転送時間が加わり、さらに時間を要する。従って、本発明の回路により大幅な時間短縮ができたことになる。
【００６８】
本実施の形態において、データ書込カウンタ３７は、バースト長をカウントするとリセットすることにした。バースト長テーブル３３に格納されるデータは、分割バースト長の代わりにバーストデータの分割位置としてもよく、データ書込カウンタ３７は、リセットせずに連続してカウントすることになる。その場合、バースト長テーブル３３に設定されるバースト長として、分割されたバーストデータの位置を示す数が設定されると、バースト長判定回路３５は構成が簡単になる。ここでは、データ書込カウンタ３７は、転送回数を計数することにしたが、データ転送量を計数してもよい。
【００６９】
また、本実施の形態において、バス１５のデータ幅（データＰＤＡＴＡのデータ幅）は、ＳＤＲＡＭ２０のデータ幅（データＤＱのデータ幅）と等しいものとして説明されたが、データ幅は異なっていてもよい。それぞれの転送数に応じた換算を行って、コマンドを分割すればよく、同じように動作させることができる。例えば、ＣＰＵ１１側のデータ幅が６４ビット（８＝２３バイト）、ＳＤＲＡＭ２０側のデータ幅が３２ビット（４＝２２バイト）とし、ＳＤＲＡＭ２０側では、コマンドＳＣＭＤ：ＷＲを１回発行する毎に４ワード（３２ビット／ワード）のバースト転送をするものとする。ＣＰＵ１１側のバースト長が８ワード（６４ビット／ワード）であれば、転送バイト数は６４バイトになる。ＳＤＲＡＭ２０は、１回のコマンドＣＭＤ：ＷＲにおいて４ワード＝１６バイトのバースト転送を行う。従って、ＳＤＲＡＭ２０に対して４回のコマンドＳＣＭＤ：ＷＲが発行され、合計１６ワード（３２ビット／ワード）のバースト転送が行われる。
【００７０】
通常、データ幅は２ｉバイト（ｉ＝０、１、…）で構成される。また、ＳＤＲＡＭ２０のバースト長も２、４等２ｊ回である。データバッファ３８は、バス１５のデータ転送速度が速いため、バス１５のデータ幅に基づいて構成される。データ転送数をバイト単位で表現すると、バス１５を介してデータ転送されるデータのデータ幅を２ｍバイト、データ転送の回数をＢとすると、データバッファ３８には“Ｂ×２ｍバイト”のデータが書き込まれる。一方、ＳＤＲＡＭ２０のデータ幅を２ｎバイトとすると、データＤＱのデータ幅“２ｎバイト”ずつ読み出される。ＳＤＲＡＭバースト長を２ｊとすると、ＳＤＲＡＭ２０は、１度のバースト書き込みにより“２ｎ＋ｊ”バイトのデータを受け取ることになる。従って、転送先の書き込みアドレスがバースト境界であれば、バースト長×２ｍ／２ｎ＋ｊ回（バースト長×２ｍ−ｎ−ｊ回）だけＳＤＲＡＭ２０に書き込みコマンドＳＣＭＤ：ＷＲが発行され、バースト転送される。
【００７１】
これは、データバッファ３８のデータ書込カウンタ３７がバースト長を計数するカウンタとｍビットカウンタとを備えることにより書き込みバイト数を計数できることを示している。また、データ読出カウンタ３９がＳＤＲＡＭバースト長を計数するｊビットカウンタとｎビットカウンタとを備えることにより読み出しバイト数を計数できることを示している。従って、バースト長テーブル３３に２ｎ＋ｊを設定し、蓄積されたデータのバイト数２ｍ×Ｂを比較することにより、バースト長判定回路３５は、ＳＤＲＡＭ２０へのデータ転送を開始できるか否かの判定ができる。即ち、データバッファ３８に格納されたデータは、２ｍ×Ｂバイトであり、これが２ｎ＋ｊに達するか、または超えたとき、ＳＤＲＡＭ２０へのデータ転送が開始される。そのときの転送数Ｂは、Ｂ≧２ｎ＋ｊ／２ｍ＝２ｎ＋ｊ−ｍで求められるため、次のように場合分けされる。
（１）ｎ＋ｊ＞ｍの場合、バス１５を介する１回のデータ転送では、ＳＤＲＡＭ２０へのバースト転送ができない。ＳＤＲＡＭ２０へのバースト転送は、バス１５を介してデータバッファ１５にＢ＝２ｎ＋ｊ−ｍ回のデータ転送が行われ、データが蓄積されたときに開始指示がなされる。例えば、本実施の形態において説明したバス１５のデータ幅とＳＤＲＡＭ２０のデータ幅とが等しい場合、ＳＤＲＡＭ２０に対するコマンドＳＣＭＤ：ＷＲは、データ書込カウンタ３７のカウント値ＷＣＮＴがＢ＝２ｊになると起動される。ｊ＝２であるから、Ｂ＝４毎に起動されることがわかる。
（２）ｎ＋Ｊ≦ｍの場合、バス１５のデータ幅が充分広く、バス１５を介したデータ転送１回に対して、２ｍ−ｎ−ｊ回のＳＤＲＡＭ２０へのバースト転送が行われることになる。
【００７２】
データバッファ３８は、バス１５のデータ転送速度が速いため、バス１５のデータ幅に基づいて構成される。従って、データバッファ３８から読み出したデータをＳＤＲＡＭ２０に転送するときにデータ幅の変換が行われる。ＳＤＲＡＭ２０のデータ幅がデータバッファ３８のデータ幅より狭い場合、データバッファ３８から読み出されたデータは複数回に分割されてＳＤＲＡＭ２０に転送される。これは、ＳＤＲＡＭ２０のデータ幅に合わせたデータ幅を有するマルチプレクサを備えることにより実現できる。また、ＳＤＲＡＭ２０のデータ幅がデータバッファ３８のデータ幅より広い場合、データバッファ３８から読み出された複数のデータは結合されてＳＤＲＡＭ２０に転送される。これは、読み出したデータを次のデータ読み出しまで保持するレジスタを備えることにより実現できる。さらに、転送先アドレスがバースト境界と異なる場合、ダミーデータ転送は、バースト境界とのアドレスのオフセット値を計数するカウンタを備えることにより実現できる。このカウンタによりデータバッファ３８から転送データを読み出すタイミングが決められる。即ち、このカウンタは、ＳＤＲＡＭ２０へのバースト転送開始から計数を開始し、オフセット値に達したとき、データ転送が開始される。従って、転送先アドレスにデータバッファ３８に格納されているデータがＳＤＲＡＭ２０に転送される。
【００７３】
それぞれのデータ幅を示す情報は、先行コマンド分割回路３２、バーストタイミング制御回路３６に必要に応じて設定されることが好ましい。データ幅を示す情報を設定する外部端子を設けてもよいし、データ幅の設定条件を記憶するレジスタを設け、コマンドにより上位装置から設定するようにしてもよい。
【００７４】
さらに、ＳＤＲＡＭ２０は、ＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）型、ＤＤＲ２型、その他の改良型でも、同じように動作することは明らかである。
【００７５】
このように、ＳＤＲＡＭ２０にバースト転送できるデータ数がデータバッファ３８に取り込まれたときからＳＤＲＡＭ２０に対してバースト転送を始めることができる。そのため、転送データを全てデータバッファに取り込んでからバースト転送を始める従来の回路に比べて、タイムラグが短くなる。また、ＳＤＲＡＭ２０にデータを書き込みながらＣＰＵ１１側のデータを取り込むため、データバッファの容量も小さくて済む。
【図面の簡単な説明】
【００７６】
【図１】メインメモリとしてＳＤＲＡＭを使用するマクロプロセッサシステムの構成例を示すブロック図である。
【図２】従来のＳＤＲＡＭ制御回路の構成を示すブロック図である。
【図３】従来のＳＤＲＡＭ制御回路の動作を示すタイミング図である。
【図４】本発明の実施の形態に係るＳＤＲＡＭ制御回路の構成を示すブロック図である。
【図５】同分割バースト長を格納するバースト長テーブルの構成を示す図である。
【図６】同ＳＤＲＡＭ制御回路の動作を示すタイミング図である。
【図７】同ＳＤＲＡＭ制御回路の他の動作を示すタイミング図である。
【符号の説明】
【００７７】
１０  マイクロプロセッサチップ
１１  中央演算処理装置（ＣＰＵ）
１２  ＤＭＡＣ
１５  バス
１７  ＳＤＲＡＭ制御回路
１８  入出力部
２０  ＳＤＲＡＭ
３１  コマンドバッファ
３２  先行コマンド分割回路
３３  バースト長テーブル
３５  バースト長判定回路
３６  バーストタイミング制御回路
３７  データ書込カウンタ
３８  データバッファ
３９  データ読込カウンタ
９１  コマンドバッファ
９５  バースト長判定回路
９６  バーストタイミング制御回路
９７  データ書込カウンタ
９８  データバッファ
９９  データ読込カウンタ
【図１】
2007157029.tif 000003
【図２】
2007157029.tif 000004
【図３】
2007157029.tif 000005
【図４】
2007157029.tif 000006
【図５】
2007157029.tif 000007
【図６】
2007157029.tif 000008
【図７】
2007157029.tif 000009