(57)【特許請求の範囲】
【請求項１】
キャッシュメモリと、前記キャッシュメモリを制御するキャッシュ制御部と、メモリにアクセスするためのメモリ制御部とを有し、
前記キャッシュ制御部は、キャッシュフィルアドレス生成回路を有し、
前記メモリ制御部は、前記メモリへの１回のバースト動作で得られるデータの個数であるバースト長を示すための第１情報を保持し、バースト動作可能なメモリをアクセスするとき、前記第１情報に基づいて前記キャッシュメモリのライン長に見合う個数のデータを得るに必要な回数のバースト動作を制御可能であり、前記バースト動作で得られるデータの区切りに対応する第１の制御信号と、前記バースト動作が前記第１情報が示すバースト長に基づくラップアラウンドであることを示す第２の制御信号を生成し、
前記キャッシュフィルアドレス生成回路は、前記第１及び第２の制御信号に基づいて、前記バースト動作で得られるデータ毎に、前記バースト動作で得られる順序に対応する順序で、格納すべき前記キャッシュメモリのキャッシュフィルアドレスを生成し、
前記キャッシュ制御部は、前記バースト動作で得られるデータを前記キャッシュメモリに、前記キャッシュフィルアドレスに従って順次格納するものであることを特徴とするデータ処理装置。
【請求項２】
前記メモリ制御部は、キャッシュミスヒットに応答して複数回のバースト動作でメモリアクセスを行うとき、先頭のバースト動作ではキャッシュミスヒットに係るアドレスのデータ位置を基点にバースト動作を制御し、前記先頭のバースト動作の後続のバースト動作では前記バースト長で規定されるデータブロックのバウンダリの先頭アドレスのデータ位置を基点にバースト動作を制御するものであることを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記キャッシュメモリと、前記キャッシュメモリを制御するキャッシュ制御部と、前記メモリ制御部とを同一半導体基板上に形成したことを特徴とする請求項１又は２記載のデータ処理装置。
【請求項４】
キャッシュメモリと、前記キャッシュメモリを制御するキャッシュ制御部と、バースト動作可能であって前記キャッシュメモリに対し主メモリを構成するメモリと、前記メモリにアクセスするためのメモリ制御部とを有し、
前記キャッシュ制御部は、キャッシュフィルアドレス生成回路を有し、
前記メモリ制御部は、前記メモリへの１回のバースト動作で得られるデータの個数であるバースト長を示すための第１情報を保持し、前記メモリをアクセスするとき、前記第１情報に基づいて前記キャッシュメモリのライン長に見合う個数のデータを得るに必要な回数のバースト動作を制御可能であり、前記バースト動作で得られるデータの区切りに対応する第１の制御信号と、前記バースト動作が前記第１情報が示すバースト長に基づくラップアラウンドであることを示す第２の制御信号を生成し、
前記キャッシュフィルアドレス生成回路は、前記第１及び第２の制御信号に基づいて、前記バースト動作で得られるデータ毎に、前記バースト動作で得られる順序に対応する順序で、格納すべき前記キャッシュメモリのキャッシュフィルアドレスを生成し、
前記キャッシュ制御部は、前記バースト動作で得られるデータを前記キャッシュメモリに、前記キャッシュフィルアドレスに従って順次格納するものであることを特徴とするデータ処理装置。
【請求項５】
キャッシュメモリと、前記キャッシュメモリを制御するキャッシュ制御部と、バースト動作可能であって前記キャッシュメモリに対し主メモリを構成する第１および第２のメモリと、前記第１および第２のメモリにアクセスするためのメモリ制御部とを有し、
前記キャッシュ制御部は、キャッシュフィルアドレス生成回路を有し、
前記メモリ制御部は、前記第１のメモリのバースト長を示すための第１情報と、前記第２のメモリのバースト長を示すための第２情報とを保持し、
前記キャッシュ制御部は、前記第１のメモリをアクセスするとき、前記アクセスの対象である前記メモリに対応する前記第１情報に基づいて前記キャッシュメモリのライン長に見合う個数のデータを得るに必要な第１の回数のバースト動作を制御可能であり、前記第２のメモリをアクセスするとき、前記アクセスの対象である前記メモリに対応する前記第２情報に基づいて前記キャッシュメモリのライン長に見合う個数のデータを得るに必要な第２の回数のバースト動作を制御可能であり、前記第１もしくは第２のメモリをアクセスする前記バースト動作で得られるデータの区切りに対応する第１の制御信号と、前記バースト動作が前記第１情報又は前記第２情報が示すバースト長に基づくラップアラウンドであることを示す第２の制御信号を生成し、
前記キャッシュフィルアドレス生成回路は、前記第１及び第２の制御信号に基づいて、前記バースト動作で得られるデータ毎に、前記バースト動作で得られる順序に対応する順序で、格納すべき前記キャッシュメモリのキャッシュフィルアドレスを生成し、
前記キャッシュ制御部は、前記バースト動作で得られるデータを前記キャッシュメモリに、前記キャッシュフィルアドレスに従って順次格納するものであることを特徴とするデータ処理装置。
【請求項６】
前記データ処理装置は、キャッシュミスヒットに応答して複数回のバースト動作でメモリアクセスを行うとき、先頭のバースト動作ではキャッシュミスヒットに係るアドレスのデータ位置を基点にバースト動作を制御し、前記先頭のバースト動作の後続のバースト動作では前記バースト長で規定されるデータブロックのバウンダリの先頭アドレスのデータ位置を基点にバースト動作を制御するものであることを特徴とする請求項４又は５記載のデータ処理装置。
【請求項７】
前記キャッシュメモリと、前記キャッシュ制御部と、前記メモリ制御部とを第１の半導体基板上に形成し、前記メモリを第１の半導体基板とは別の単数もしくは複数の半導体基板上に形成したことを特徴とする請求項４乃至６のうちいずれか１項記載のデータ処理装置。
【請求項８】
前記メモリがシンクロナスＤＲＡＭであることを特徴とする請求項３乃至７のうちいずれか１項記載のデータ処理装置。
【請求項９】
キャッシュメモリと、前記キャッシュメモリを制御するキャッシュ制御部と、メモリにアクセスするためのメモリ制御部とを有し、
前記キャッシュ制御部は、キャッシュフィルアドレス生成回路を有し、
前記メモリ制御部は、前記メモリへの１回のバースト動作で得られるデータの個数であるバースト長ｎ（nは自然数）を示すための第１情報を保持し、バースト動作可能なメモリをアクセスするとき、前記第１情報に基づいて前記キャッシュメモリのライン長Ｌ（Ｌは自然数）に見合う個数のデータを得るに必要な回数ｍ（ｍは自然数）のバースト動作を制御可能であり、前記バースト動作で得られるデータの区切りに対応する第１の制御信号と、前記バースト動作が前記第１情報が示すバースト長に基づくラップアラウンドであることを示す第２の制御信号を生成し、
前記キャッシュフィルアドレス生成回路は、前記第１及び第２の制御信号に基づいて、前記ｍ回のバースト動作で得られるn×ｍ個のデータ毎に、前記ｍ回のバースト動作で得られる順序と同一の順序で、格納すべき前記キャッシュメモリのn×ｍ個のキャッシュフィルアドレスを生成し、
前記キャッシュ制御部は、前記バースト動作で得られるデータを前記キャッシュメモリに、前記キャッシュフィルアドレスに従って順次格納するものであることを特徴とするデータ処理装置。
【請求項１０】
前記メモリ制御部は、キャッシュミスヒットに応答して前記ｍ回のバースト動作でメモリアクセスを行うとき、先頭のバースト動作ではキャッシュミスヒットに係るアドレスのデータ位置を基点にバースト動作を制御し、前記先頭のバースト動作の後続のバースト動作では前記バースト長で規定されるデータブロックのバウンダリの先頭アドレスのデータ位置を基点にバースト動作を制御するものであることを特徴とする請求項９記載のデータ処理装置。
【請求項１１】
前記キャッシュメモリと、前記キャッシュメモリを制御するキャッシュ制御部と、前記メモリ制御部とを同一半導体基板上に形成したことを特徴とする請求項９又は１０記載のデータ処理装置。
【発明の詳細な説明】
技術分野
本発明は、キャッシュメモリを持つマイクロプロセッサやＤＳＰ（ディジタル信号処理プロセッサ）等のデータ処理装置、更にはそのようなデータ処理装置と共にバースト動作可能なメモリを有するデータ処理システムに関する。
背景技術
マイクロプロセッサ等のデータ処理装置を用いたデータ処理システムにおいて、高速のデータアクセス若しくは高いデータ転送性能を得る上で、使用するメモリとしてはシンクロナスＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）に代表されるバースト動作（バースト転送とも称する）をサポートしたメモリが好適とされる。すなわち、その種のメモリによると、メモリ内の内部アドレスカウンタのような回路を含む動作制御系によって、連続データを高速に読み出したり、高速に書き込んだりできることとなり、処理システムの高速、高性能化をすすめることが容易になる。
前記シンクロナスＤＲＡＭは、モードレジスタを持ち、かかるモードレジスタによってその動作モードが指定される。シンクロナスＤＲＡＭのためのバースト転送長ないしはブロック転送長とも称するバースト長情報を含むモード情報は、例えば処理システムのパワーオンリセット後に実行されるシステム初期化設定プログラムのような設定プログラムに従ってモードレジスタに設定される。バースト長情報のような情報の設定のためには、バースト動作とは異なる設定期間を要する。すなわち、モードレジスタにモード情報を設定するには比較的時間がかかる。このため、パワーオンリセットに伴って一旦設定されたようなバースト長情報は後から変更しないのが一般的となる。
ここで、バースト動作においては、前記バースト長を大きく設定すれば、大量のデータを転送する場合には一度のシンクロナスＤＲＡＭへのアクセスで転送できるデータ量が多くなり、高いデータ転送性能を得ることができる。しかしながら、設定したバースト長よりも少量のデータを転送すればよい場合には、設定されたバースト長でブロック転送を行なうために、無駄なデータ転送サイクルが増大し、データ転送性能が低下してしまう。
シンクロナスＤＲＡＭに代表されるバースト転送をサポートしたメモリにおいては、バースト転送の際に、バースト転送のバウンダリ間の任意のアドレスのデータから転送を開始することのできるラップアラウンド機能がサポートされる。バウンダリ間のロケーションアドレスは、アクセスするデータの先頭ロケーションが外部から指示され、その後続のロケーションアドレスはメモリ内部のカラムアドレスカウンタのような内部カウンタで生成される。ＳＤＲＡＭは、例えばアクセス単位が４バイトでバースト長が１６バイトとされる。それにおいて、バイト単位のカラムアドレスがカラムアドレスカウンタにプリセットされ、このプリセットアドレスを基点に、その最下位から４ビット目までが順次３回カウンタ動作され、それによって連続的なアクセス動作が行われる。例えば、バースト動作のバウンダリ間の４バイト単位のデータロケーションをＮ＋００番地（以下＠００のように記す）、＠０４、＠０８、＠１２とするとき、バースト動作によりアクセスするデータの先頭ロケーションを＠０８とすれば、＠０８、＠１２、＠００、＠０４の順にラップアラウンドして、データアクセスが行われる。
このラップアラウンド機能を活用することで、ＣＰＵが要求したデータをバースト転送の最初に外部メモリから取得することができる。これによって、例えば、キャッシュミスヒットの際、ＣＰＵがデータ待ちをするサイクル数を小さくすることができる。
シンクロナスＤＲＡＭに代表されるバーストアクセスをサポートしたメモリは、既に述べたようなバースト長に応じた特徴をもたらす。そこで、その種のメモリとしては、バースト長を大きく設定したい要求と、小さく設定したい要求の双方に適合できることが望ましい。そこで、本発明者等は、異なるバースト長でラップアラウンドを行なうメモリ、例えば、バースト長が３２バイトのシンクロナスＤＲＡＭとバースト長が１６バイトのシンクロナスＤＲＡＭとを併存させて利用する制御方式の有効性について検討した。
本発明者等は、検討によって以下事項を明らかにした。すなわち、バースト長が１６バイトのシンクロナスＤＲＡＭを１６バイトのカラムアドレスロケーションの中の８バイト目を基点にラップアラウンドでバースト動作させた場合と、バースト長が３２バイトのシンクロナスＤＲＡＭを３２バイトのカラムアドレスロケーションの中の８バイト目を基点にラップアラウンドでバースト動作させた場合とでは、シンクロナスＤＲＡＭからラップアラウンド動作にて返されるデータ順が、異なってくる。そこで、シンクロナスＤＲＡＭを制御するメモリ制御回路は、バースト長の相違によるデータ配置の不整合を認識し、或いはそれを解消するための手法をとるように構成される必要が生ずる。
そのための手法として例えば以下の２つを挙げることができる。
第１手法は、ブロック転送長が１６バイトのメモリから返される１６バイト２組みのデータを、バースト長が３２バイトのラップアラウンド動作のデータ順と同じデータ順に統一するものである。この場合、メモリ制御回路とともに、バッファメモリ、及びデータ並べ替えのためのアライナが設定される。メモリ制御回路は、例えばバースト読み出し動作においては、１６バイトでラップアラウンドしたデータ２組を３２バイトのラップアラウンド動作で得られるデータ順に一致させるよう、メモリから出力されたデータを一旦バッファメモリにバッファリングさせ、その後で、アライナを用いてデータの並べ替えを行ってから、データを出力させるように制御動作を行う。この第１の手法による場合には、データの並べ替えを行う為のデータバッファリングに余計な待ち時間を費やすことになる。
第２の手法は、メモリアクセス開始アドレスに１６バイトバウンダリ固定の制約を設け、データの返り順の不一致を発生させないようにするものである。これにより、１６バイトのバースト長でバースト動作を２回行ったときのデータ順はバースト長３２バイトで１回バースト動作を行ったときのデータ順に一致される。
しかしながら、本発明者等は、上記何れの手法もデータ処理性能の低下を伴うことに注目した。以下、これを説明する。
ここで、マイクロプロセッサはＣＰＵ、キャッシュメモリ、及び外部シンクロナスＤＲＡＭを含む外部メモリをアクセスするメモリ制御回路を含むものとされる。今、キャッシュメモリのキャッシュライン長が３２バイトとされ、ＣＰＵによるメモリのＮ＋０８番地（Ｎは３２の倍数）からのアクセス開始に対してキャッシュミスヒットとなり、それに応じて外部メモリアクセス行なわれ、キャッシュラインに対するキャッシュフィルが行われ、その後、ＣＰＵが続けて、Ｎ＋１２，Ｎ＋１６，Ｎ＋２０，Ｎ＋２４，Ｎ＋２８と連続したアドレスのデータを要求する場合を考える。なお、このような連続したアドレスへのアクセスは、命令アクセスの場合や連続した領域に配置されたデータの処理等で頻繁に発生するごく自然な例であると考えて良い。以下、Ｎ＋０８番地のデータを＠０８，Ｎ＋１２番地のデータを＠１２のように表記する。
この条件において、前記第１の手法では、１６バイトのブロック転送長によるバースト動作でメモリから得られるデータ順は、例えば＠０８，＠１２，＠００，＠０４，＠２４，＠２８，＠１６，＠２０とされる。これを３２バイトのバースト長によるバースト動作の場合と同じデータ順に並べ替えてキャッシュメモリへ返すためにはいくつかのペナルティーサイクルが発生し、バス性能若しくはＣＰＵのデータ処理性能を低下させてしまう。すなわち、そのデータ順の場合、３２バイトのバースト動作に対応されるデータ順は、＠０８，＠１２，＠１６，＠２０，＠２４，＠２８，＠００，＠０４の順となる。データをその順に替えてキャッシュメモリに返すには、３２バイトのバースト動作に対応される第３番目に返す必要のあるデータ＠１６は１６バイトのバースト動作ではメモリから第７番目にしか到着せず、少なくとも４サイクルのペナルティサイクルが発生することになる。
第２の手法では、ＣＰＵが最初に必要とするデータが＠０８であるときに対応する、外部メモリからのデータ順、キャッシュへのデータ順は、ともに、＠００，＠０４，＠０８，＠１２，＠１６，＠２０，＠２４，＠２８となる。すなわち、ＣＰＵが最初に要求するデータ＠０８は第３番目のデータとなる。これに応じてＣＰＵは、それが必要とする先頭のデータ到着を少なくとも２サイクル待つことになる。このように、第２の手法においてもＣＰＵ性能の低下を引き起こす。
尚、ＭＩＣＲＯＰＲＯＣＥＳＳＯＲ  ＲＥＰＯＲＴ  ＶＯＬＵＭＥ１０，ＮＵＭＢＲＥ２  ＦＥＢＲＵＡＲＹ  １２、１９９６の第９頁及びＴａｂｌｅ２．には、３２ビットマイクロプロセッサにおいて、キャッシュメモリのミスワードを先頭とするようにキャッシュフィルの順番を制御する記載がある。しかし、これには、シンクロナスＤＲＡＭのバースト長とキャッシュフィルのデータ順との関係についての着眼はない。
本発明の目的は、キャッシュメモリのキャッシュライン長より短いサイズでバースト動作可能であってラップアラウンド機能を有するメモリを用いるときでもキャッシュミスに係るデータを獲得するまでのＣＰＵの待ち時間を短縮でき、データ処理性能の向上に寄与できるデータ処理装置、更にはデータ処理システムを提供することにある。
本発明の別の目的は、ラップアラウンド機能を有し相互にバースト長の異なるメモリを複数個接続して利用しても、メモリアクセスにおけるペナルティーサイクルが少なく、バス性能およびＣＰＵ性能を向上させることができるデータ処理装置、更にはデータ処理システムを提供することにある。
本発明のその他の目的は、ラップアラウンド機能を有しバースト動作可能なメモリの多様な接続構成若しくは利用形態に対応することが可能なデータ処理装置を提供することにある。
本発明の上記並びにその他の目的と新規な特徴は本明細書の以下の記述と添付図面から明らかにされるであろう。
発明の開示
〔１〕データ処理装置は、ＣＰＵ、前記ＣＰＵによってアクセス可能なキャッシュメモリ、前記キャッシュメモリを制御するキャッシュ制御部、及び前記キャッシュメモリのキャッシュミスヒットに応答してメモリアクセスが可能なメモリ制御部を有する。前記メモリ制御部は、バースト動作可能なメモリをキャッシュミスヒットに応答してアクセスするとき、前記キャッシュメモリのキャッシュライン長に対する前記メモリのバースト長を示すための第１情報を形成し、前記第１情報に基いて前記キャッシュライン長に見合うデータ長を得るのに必要な単数又は複数回のバースト動作を制御可能である。前記キャッシュ制御部は、前記単数又は複数回のバースト動作で得られたデータを前記第１情報に基づいてラップアラウンドでキャッシュメモリにキャッシュフィルする動作を制御可能である。
上記手段によれば、前記第１情報によってキャッシュライン長に対するアクセス対象メモリのバースト長が明らかになり、これに基いてアクセス対象メモリに呼応したバースト動作回数が制御され、キャッシュライン長に応ずるブロックデータを前記メモリからバースト動作で得ることができる。得られたブロックデータは、第１情報から把握されるバースト長に合わせて、キャッシュ制御部がキャッシュメモリにラップアラウンド動作により転送されてくるブロックデータをキャッシュフィル可能にされる。そのためメモリから出力されるデータをアライナで並べ変えなくてもよく、また、バースト動作対象とされるデータブロックのバウンダリ先頭をアクセス開始アドレスに固定する制約を設けなくてもよい。したがって、キャッシュメモリのキャッシュライン長より短いサイズでバースト動作可能であってラップアラウンド機能を有するメモリを用いるときでもキャッシュミスに係るデータを獲得するまでのＣＰＵの待ち時間を短縮でき、データ処理性能の向上に寄与できる。
前記キャッシュ制御部は、前記キャッシュフィル動作において、キャッシュミスヒットに係るアドレス情報、前記第１情報、及び前記メモリ制御部によるバースト動作で得られるデータの区切りに同期する同期信号を入力し、前記第１情報が意味するバースト長の範囲で前記アドレス情報を基点とするラップアラウンド制御を行って、前記同期信号に同期しながらキャッシュフィルのデータ順を決定するキャッシュフィルアドレスを生成するように構成してよい。
これにより、メモリ制御部がキャッシュミスヒットに応答してメモリからバースト動作でデータを順次読み出してくる動作に追従しながら、キャッシュフィル動作を進めることができ、メモリのバースト長に拘わらず高速なキャッシュフィル動作を保証することができる。
前記メモリ制御部は、キャッシュミスヒットに応答して複数回のバースト動作でメモリアクセスを行うとき、先頭のバースト動作ではキャッシュミスヒットに係るアドレスのデータ位置を基点にラップアラウンドでバースト動作を制御し、その後続のバースト動作では前記バースト長で規定されるデータブロックのバウンダリ先頭を基点にバースト動作を制御するように構成してよい。
プログラムやある種のデータは連続したアドレスに配置される場合が多いという事実に鑑みると、前述のように、バースト動作の複数回のアクセスのうち、最初のアクセス以外は、バースト長で規定されるバウンダリ先頭からメモリアクセスを行なえば、連続したデータアクセス時にＣＰＵが先にアクセスすることになるデータを先にキャッシュメモリ又はＣＰＵに到達させることになるから、データ処理性能の向上に役立つ。
以上のデータ処理装置によれば、キャッシュメモリのキャッシュライン長（例えば３２バイト）よりも比較的短いバースト長（例えば１６バイト）をメモリに設定しておくと、バーストアクセス動作を行うメモリからラップアラウンドに出力されるブロックデータを複数個結合してキャッシュメモリにキャッシュフィルすることができる。また、キャッシュメモリのキャッシュライトヒットに対する処理の一つとしてライトスルーを採用しているとき、書込みデータをキャッシュライン長よりも短い（例えば８バイト）ライトスルーバッファから前記メモリに書込むような場合には、前記比較的短いバースト長故にデータ転送サイクルの無駄が少ない。この時のバーストアクセス動作の後半の８バイトはデータマスクを行って実際のデータ書込み動作を抑止すればよい。
したがって、３２バイトのような大容量のデータをキャッシュメモリ等に効率良く転送できる性能を損なわずに、８バイトのような比較的小さなデータの転送には無駄なサイクルを最小限に抑えることができ、データ処理性能を向上させることができる。
〔２〕データ処理システムは、ＣＰＵ及びキャッシュメモリを有するデータ処理装置と、前記データ処理装置に接続され、バースト動作可能であって前記キャッシュメモリに対し主メモリを構成するメモリとを有する。前記メモリは単数であっても複数であっても良い。夫々のバースト長は相違しても、同一であってもよい。前記キャッシュメモリはＬバイトのキャッシュライン長を有する。前記メモリは、前記Ｌの２のｎ乗分の１（ｎは自然数）バイトのバースト長の範囲でラップアラウンドでバースト動作が可能である。このとき、前記データ処理装置は、前記キャッシュメモリのキャッシュミスヒットに応答して、前記キャッシュメモリのキャッシュライン長に対する前記メモリのバースト長を示すための第１情報を形成し、前記第１情報に基いて前記キャッシュライン長に見合うデータ長を得るのに必要な単数又は複数回前記メモリをバースト動作させ、これによって得られる複数のブロック転送データを結合してキャッシュメモリへＬバイトのデータを返す制御を行なうものである。
上記データ処理システムによれば、キャッシュメモリのキャッシュライン長（例えば３２バイト）よりも比較的短いバースト長（例えば１６バイト）を第１のメモリに設定しておくと、バーストアクセス動作を行うメモリからラップアラウンドに出力されるブロックデータを複数個結合してキャッシュメモリにキャッシュフィルすることができる。キャッシュライン長に等しいバースト長を設定した第２のメモリがデータ処理システムに含まれている場合、その第２のメモリを対象とするキャッシュミスヒットに対する処理では、当該第２のメモリのバースト長に応じたキャッシュフィル動作が可能にされる。
また、キャッシュメモリのキャッシュライトヒットに対する処理としてライトスルーを採用しているとき、書込みデータをキャッシュライン長よりも短い（例えば８バイト）ライトスルーバッファから前記第１のメモリに書込むような場合には、前記比較的短いバースト長故にデータ転送サイクルに無駄が少ない。この時のバーストアクセス動作の後半の８バイトはデータマスクを行って実際のデータ書込み動作を抑止すればよい。キャッシュライン長に等しいバースト長が設定される前記第２のメモリがライトスルーによる書込み対象になる場合は、書込みマスクを行っても第１のメモリに比べると無駄なサイクルは増える。そうであっても、第２のメモリを一時的にキャッシュの対象から外した状態では一度にアクセス若しくは転送できるデータ量を大きくすることが可能である。
したがって、３２バイトのような大容量のデータをキャッシュメモリ等に効率良く転送できる性能を損なわずに、８バイトのような比較的小さなデータの転送には無駄なサイクルを極力抑えることができ、バースト長の異なるメモリを複数個有するようなメモリの多様な接続構成若しくは利用形態が実現され、データ処理システムにおけるデータ処理性能を向上させることができる。
前記データ処理システムにおいても、前記データ処理装置は、前記単数又は複数回のバースト動作で得られたデータを、前記第１情報に基づいて、ラップアラウンド動作で転送されてくるデータをキャッシュメモリにキャッシュフィルする制御を行うように構成してよい。この時も、前記データ処理装置は、前記キャッシュフィル動作において、前記バースト動作で前記メモリから得られるデータの区切りに同期する同期信号を生成し、前記第１情報が意味するバースト長の範囲で前記アドレス情報を基点とするラップアラウンド制御を行って、前記同期信号に同期しながらキャッシュフィルのデータ順を決定するキャッシュフィルアドレスを生成するように構成してよい。更に、前記データ処理装置は、キャッシュミスヒットに応答して複数回のバースト動作でメモリアクセスを行うとき、先頭のバースト動作ではキャッシュミスヒットに係るアドレスのデータ位置を基点にラップアラウンドでバースト動作を制御し、その後続のバース動作では前記バースト長で規定されるデータブロックのバウンダリ先頭を基点にバースト動作を制御するように構成してよい。
発明を実施するための最良の形態
第１図に本発明に係るデータ処理システムの一例が示される。同図に示されるデータ処理システムは、本発明に係るデータ処理装置の一例であるマイクロプロセッサ１、バースト動作可能な外部メモリの一例であるシンクロナスＤＲＡＭ２、及びＲＯＭ（リード・オンリ・メモリ）１４を代表的に備えている。前記シンクロナスＤＲＡＭ２及びＲＯＭ１４の他に別の周辺回路を備えてもよい。
マイクロプロセッサ１は、特に制限されないが、ＣＰＵ３、キャッシュメモリ４、キャッシュ制御部５、及びメモリ制御部６を有し、例えば１個の半導体基板（半導体チップ）に形成されている。データバス８，９，１０は、特に制限されないが、４バイト（３２ビット）とされる。
前記ＣＰＵ３は、図示を省略する制御部と実行部を有し、前記実行部は例えば汎用レジスタファイルと演算器を有し、前記制御部はフェッチした命令を解読して前記実行部の演算などを制御する。
前記キャッシュメモリ４は、所謂データアレイを有している。データアレイは、例えばＳＲＡＭ（スタティック・ランダム・アクセス・メモリ）によって構成され、マトリクス配置されたメモリセルを有し、メモリセルの選択端子は例えば行毎にワード線に接続され、メモリセルのデータ入出力端子は列毎に相補ビット線に接続されている。データアレイにおいてワード線はキャッシュ制御部５から与えられるインデックスアドレスによって選択される。データアレイにおいてインデックスアドレスで選択される行毎の単位がキャッシュラインである。キャッシュラインは、特に制限されないが、３２バイトのキャッシュライン長を有する。選択されたキャッシュラインに対しては、キャッシュ制御部５から与えられるロングワード選択信号によって４バイトの選択が行われる。前記インデックスアドレス及びロングワード選択信号はキャッシュアクセスアドレス信号７として図示されている。
キャッシュ制御部５は、所謂アドレスアレイとキャッシュ制御論理とを有する。アドレスアレイもデータアレイと同様にＳＲＡＭによって構成される。アドレスアレイには個々のキャッシュラインに１対１対応でタグフィールドを有する。タグフィールドには対応キャッシュラインのタグやキャッシュラインの有効性を示すバリッドビット等を保有する。タグフィールドも前記インデックスアドレスで選択される。キャッシュ制御論理は、キャッシュヒット・キャッシュミスヒットの判定、キャッシュミスヒット時におけるキャッシュフィル制御、等を行う。
メモリ制御部６は、ＣＰＵ３及びキャッシュ制御部５の指示に従ってシンクロナスＤＲＡＭ２やＲＯＭ１４をアクセスするためのバス制御を行う。メモリ制御部６は外部データバス１０及び外部アドレスバス１３等を介して、前記代表的に示されたシンクロナスＤＲＡＭ２等に接続される。外部バスアクセス若しくは外部メモリアクセスのためのストローブ信号などの制御信号を伝達するコントロールバスは図示を省略してある。前記メモリ制御部６は所謂バスステートコントローラ、若しくはそれに含まれている一部のメモリコントローラとして把握してよい。
ＣＰＵ３が出力する実効アドレス１１の一部がインデックスアドレスとされ、前記アドレスアレイでインデックスされたタグフィールドのタグは、前記キャッシュ制御論理により、前記実効アドレス１１の一部に含まれるタグアドレスと比較され、一致であれば、キャッシュヒット、不一致であればキャッシュミスヒットとされる。
ＣＰＵ３のリードアクセスにおいて、キャッシュヒット（キャッシュリードヒット）であれば、インデックスされたキャッシュラインの対応する４バイトのデータがデータバス８を介してＣＰＵ３に供給される。リードアクセスにおいてキャッシュミスヒット（キャッシュリードミスヒット）のとき、キャッシュ制御部５は、メモリアクセスアドレス１２を生成し、メモリ制御部６にメモリアクセスアドレス１２と共にメモリアクセス要求ＭＲＥＱを与える。これによって、メモリ制御部６は、例えばシンクロナスＤＲＡＭ２より１キャッシュライン分のデータを読み込み、読み込んだデータを、データバス９を介してキャッシュメモリ４に供給し、これに同期してキャッシュ制御部５は、キャッシュアクセスアドレス７を生成して、そのデータを所要のキャッシュラインにキャッシュフィルする。また、キャッシュ制御部５は、当該キャッシュラインに対応するタグフィールドにそのキャッシュラインのデータに応ずるタグを格納する。このとき、キャッシュミスに係るデータはデータバス８を介してＣＰＵ３に与えられる。
ＣＰＵ３のライトアクセスにおいて、キャッシュヒット（キャッシュライトヒット）であれば、インデックスされたキャッシュラインの対応する４バイトにＣＰＵ３からデータバス８を介して書込みデータが供給される。ライトアクセスにおいてキャッシュミスヒット（キャッシュライトミスヒット）であれば、キャッシュ制御部５は、メモリアクセスアドレス１２を生成し、メモリ制御部６にメモリアクセス要求ＭＲＥＱを与える。メモリ制御部６は、メモリアクセスアドレス１２に従って例えばシンクロナスＤＲＡＭ２より１キャッシュライン分のデータを読み込み、読み込んだデータをデータバス９を介してキャッシュメモリ４に与え、これに同期してキャッシュ制御部５はキャッシュラインにそのデータをフィルし、当該キャッシュラインに対応するタグフィールドにはそのキャッシュラインのデータに応ずるタグを格納する。
キャッシュメモリ４が保有するデータとシンクロナスＤＲＡＭ２のような外部メモリが格納するデータとの間の整合を保つ手法として、例えばライトスルー方式を採用する。即ち、キャッシュメモリ４は、キャッシュライトヒット時の書込みデータを保持する図示を省略するライトスルーバッファを有する。キャッシュライトヒット時、キャッシュ制御部５はキャッシュライトヒットに係るライトデータをキャッシュメモリ４に書込むと、その後に、対応するシンクロナスＤＲＡＭ２などの対応アドレスに書込む指示をメモリ制御部６に与える。これによって、メモリ制御部６は、ライトスルーバッファが保有するデータをシンクロナスＤＲＡＭ２に書込み制御する。
前記シンクロナスＤＲＡＭ２はダイナミック型メモリセルをマトリクス配置したメモリセルアレイを有し、情報記憶形式はＤＲＡＭと同様にストレージキャパシタを介してダイナミックに行われ、記憶情報のリフレッシュも必要とされる。ＤＲＡＭとの大きな相違点は、動作が外部クロック信号に同期動作され、また、ラップアラウンドでバースト動作可能にされている点である。例えば、外部から供給されるカラムアドレス信号をラッチするカラムアドレスカウンタを有し、ロウアドレスによるワード線選択状態を保ったまま、カラムアドレスカウンタのプリセット値を基点に、順次カラムアドレスをカラムアドレスカウンタで更新して連続的なデータアクセス動作を能率的に行えるようになっている。連続データアクセス数をバースト長と称し、バースト長で規定される回数だけカラムアドレスカウンタをカウント動作する。例えば、アクセス単位が４バイトでバースト長が１６バイトのシンクロナスＤＲＡＭにおいて、バイト単位のカラムアドレスをカラムアドレスカウンタにプリセットし、このプリセットアドレスを基点に、その最下位から４ビット目までを順次３回カウンタ動作させて、連続的なアクセス動作を行えばよい。したがって、１６バイトのカラムデータロケーションにおいて４バイト単位のアクセスの基点が前記ロケーションのバウンダリでない場合には、カラムアドレスカウンタによるカウンタアドレスは、途中で次の１６バイトカラムデータロケーションとのバウンダリから前の１６バイトカラムデータロケーションとのバウンダリに戻ってアドレスカウントを行う。即ち、バースト動作のアクセス順は１６バイトカラムデータロケーション内でラップアラウンドに行われる。
前記バースト長はシンクロナスＤＲＡＭ２のモードレジスタに設定される。例えばパワーオンリセット処理でＣＰＵ３からメモリ制御部６に設定されるメモリ制御データ１５の一部がバースト長を示すデータとしてＣＰＵ３から前記モードレジスタにも初期設定される。バースト長は、特に制限されないが、１６，３２バイトから選択して設定できる。
シンクロナスＤＲＡＭ２の動作は、ロウアドレスストローブ（ＲＡＳ）、カラムアドレスストローブ（ＣＡＳ）、ライトイネーブル（ＷＥ）、データマスク（ＤＭ）、データストローブ（ＤＱＳ）等の信号の状態によって指示される。前記信号はメモリ制御部６が生成する。前記信号の特定の状態毎にコマンドが規定されていて、シンクロナスＤＲＡＭ２は、コマンドの指示に従って動作を行う。例えば、ロウアドレス信号を伴うアクティブコマンドによってワード線選択動作が指示される。カラムアドレス信号を伴うリードコマンドは、既にアクティブにされているワード線のメモリセルに対するリード動作を指示する。また、カラムアドレス信号を伴うライトコマンドは、既にアクティブにされているワード線のメモリセルに対するライト動作を指示する。前記リード動作及びライト動作は前記モードレジスタに設定されたバースト長により、ラップアラウンド可能なバーストアクセスで行われる。前記書込み動作において、前記データマスク（ＤＭ）信号がイネーブルにされているアクセスサイクルにおいては、アクセスサイクルだけが費やされ、実際のデータ書込みは抑止される。
次に、シンクロナスＤＲＡＭ２のバースト長に応じたメモリ制御及びキャッシュフィル動作について説明する。
先ず第１図に基いてその概要を説明する。前記メモリ制御部６には、ブロック転送長判定部２０と外部メモリアドレス生成部３０が代表的に示されている。ブロック転送長判定部２０は、キャッシュミスヒットによるキャッシュ制御部５からのメモリアクセス要求ＭＲＥＱに答えてシンクロナスＤＲＡＭ２をアクセスするとき、前記キャッシュメモリ４のキャッシュライン長（３２バイト）に対する前記シンクロナスＤＲＡＭ２のバースト長を示すための第１情報であるラップアラウンド情報ＷＲＰＡを形成する。外部メモリアドレス生成部３０は、前記ラップアラウンド情報ＷＲＰＡに基いて前記キャッシュライン長に見合うデータ長を得るのに必要な単数又は複数回のバースト動作を制御してシンクロナスＤＲＡＭ２からデータをバーストリードする。バースト長が１６バイトであればバーストアクセスを２回起動し、バースト長が３２バイトであればバーストアクセスを１回起動すればよい。バーストリードの先頭はキャッシュミスに係るアドレスのデータである。前記キャッシュ制御部５は、バーストリードでメモリ制御部６がリードした３２バイトのデータを４バイト毎にラップアラウンドでキャッシュメモリ４に書込むためのキャッシュフィルアドレスを生成する。この時の、ラップアラウンド動作のデータブロックはシンクロナスＤＲＡＭ２のバースト長に対応させ、バースト長が１６バイトであれば１６バイトアドレス範囲毎にラップアラウンド動作させ、バースト長が３２バイトであれば３２バイトのアドレス範囲でラップアラウンド動作させる。ラップアラウンド動作のキャッシュフィルアドレスは前述のインデックスアドレス及びロングワード選択信号７であり、ロングワード選択信号は、バーストリードでメモリ制御部６がリードしてデータバス９に４バイト毎に出力するデータの区切りを示すデータレディー信号ＤＲＤＹに同期される。
第２図にはブロック転送長判定部５の詳細な一例が示される。ブロック転送長判定部２０は、アクセスリクエスト判定回路２２、メモリコントロールレジスタ２３、及びブロック転送長判定回路２４を有する。前記メモリコントロールレジスタ２３は、マイクロプロセッサ１の外部アドレスエリアに対するデータバス幅、アクセスサイクル数、バースト長などの外部メモリ情報１５がＣＰＵ３によって初期設定される。ＣＰＵ３によってシンクロナスＤＲＡＭ２に設定されたバースト長を示すバースト長データも前記メモリコントロールレジスタ２３に設定されている。
前記アクセスリクエスト判定回路２２は、キャッシュ制御部５からのメモリアクセス要求ＭＲＥＱとメモリアクセスアドレス１２とを入力し、アクセス対象が前記シンクロナスＤＲＡＭ２であるとき、検出信号２５を活性化する。尚、前記アクセスリクエスト判定回路２２は、メモリアクセス要求ＭＲＥＱによってメモリアクセス要求を検出した後、メモリアクセスアドレス１２をデコードし、アクセス対象エリアに応じてエリア選択をし、アクセスエリア選択信号（図示を省略する）を生成する。このエリア選択信号は例えば、メモリのチップ選択信号或いはメモリイネーブル信号などとして利用される。
ブロック転送長判定回路２４は、前記検出信号２５と、メモリコントロールレジスタ２３に設定されたシンクロナスＤＲＡＭ２のバースト長の情報２６を入力して、ラップアラウンド情報ＷＲＰＡを出力する。ここでは、シンクロナスＤＲＡＭ２のバースト長は１６バイト又は３２バイトであり、キャッシュメモリ４のキャッシュライン長は３２バイトであるから、ラップアラウンド情報ＷＲＰＡは、特に制限されないが、１ビットの情報であり、例えば、その論理値“０”はバースト長１６バイトを意味し、論理値“１”はバースト長３２バイトを意味する。
第３図には前記外部メモリアドレス生成回路３０の一例が示される。外部メモリアドレス生成部３０は、アドレスバッファ３１、後続アクセスアドレス生成回路３１、及びセレクタ３２を有する。外部メモリアドレス生成部３０は、キャッシュ制御部５からのメモリアクセスアドレス１２を受けると、これをアドレスバッファ３１に保持する。次に、アドレスバッファ３１に保持したアドレスをセレクタ３３に選択させて外部メモリアドレス１６として、アドレスバス１３に出力させる。この時の前記リクエスト判定回路２２によるエリア選択がシンクロナスＤＲＡＭ２であるなら、シンクロナスＤＲＡＭ２がチップ選択され、また、メモリ制御部６内の図示を省略するシンクロナスＤＲＡＭ制御論理を介してリード、ライト等のコマンドが供給される。これによってシンクロナスＤＲＡＭ２がバースト動作される。ラップアラウンド情報ＷＲＰＡが論理値“１”であるなら、バースト動作は１回で終了される。ラップアラウンド情報ＷＲＰＡが論理値“０”であるなら、シンクロナスＤＲＡＭ２を２回バースト動作させるために、後続アクセスアドレス生成回路３２は、後述のアドレス生成論理に従って、例えば、アドレスバッファ３１のアドレス（バイトアドレス）に＋１６を行い、次のバースト動作の先頭アドレスを生成する。後続アクセスアドレスの生成論理について詳細は後述する。２回目のバースト動作では、その後続アクセスアドレス生成回路３２の出力がセレクタ３３で選択されてシンクロナスＤＲＡＭ２に供給される。
第４図には後続アクセスアドレスの生成論理の規則が例示されている。ここでは、キャッシュライン長が３２バイト、シンクロナスＤＲＡＭのバースト長が３２バイト又は１６バイト、データバス幅を４バイトとする場合を想定し、Ｎを３２の倍数とし、アドレスＮから４バイトのデータをＤ１、アドレスＮ＋４から４バイトのデータをＤ２というように表現するものとする。
第４図において第１アクセスアドレスとは第１回目のバースト動作の開始アドレス、第２アクセスアドレスとは、バースト長が１６バイトのときに必要となる第２回目のバースト動作の開始アドレスを意味する。第２回目のアクセスアドレスは第１回目のアクセスアドレスに対して一律に１６バイトを加算した値とはしない。バースト長が１６バイトのとき、第１アクセスアドレスがＮ＋４、Ｎ＋８，Ｎ＋１２の場合には第２回目のアクセスアドレスをＮ＋１６とする。したがって、第２回目のバーストアクセスではデータ出力はアドレス順になる。プログラムやある種のデータは連続したアドレスに配置される場合が多いという事実に鑑みると、前述のように、バースト動作の複数回のアクセスのうち、最初のアクセス以外は、バースト長で規定されるバウンダリの先頭からメモリアクセスを行なえば、連続したデータアクセス時にＣＰＵ３が先にアクセスすることになるデータが先にキャッシュメモリ４又はＣＰＵ３に到達するから、データ処理性能の向上に役立つ。これに合わせて、第１アクセスアドレスがＮ＋２０、Ｎ＋２４，Ｎ＋２８の場合も、第２回目のアクセスアドレスをＮ＋０としている。
第５図には３２バイトのバースト長を設定したシンクロナスＤＲＡＭ２に対するバースト動作のタイミングチャートが例示される。ここでは、外部メモリアドレス生成部３０から与えられる転送開始アドレスがＮ＋８、ラップアラウンド情報が３２バイトを意味している。この場合には、当然シンクロナスＤＲＡＭは第２回目のバーストアクセスを必要としない。第５図においてリードコマンドの前に図示を省略するバンクアクティブコマンドが発行されていて、既にワード選択動作は完了されているものと理解されたい。第５図から明らかなように、Ｄ３、Ｄ４，Ｄ５，Ｄ６，Ｄ７，Ｄ８，Ｄ１，Ｄ２の順にラップアラウンドで３２バイトのバーストリードが行われる。
第６図には１６バイトのバースト長を設定したシンクロナスＤＲＡＭ２に対するバースト動作のタイミングチャートが例示される。ここでは、外部メモリアドレス生成部３０から与えられる最初の転送開始アドレスがＮ＋８、第２回目もバースト動作の転送開始アドレスが第４図に従ったＮ＋１６にされ、第６図において最初にリードコマンドの前には図示を省略するバンクアクティブコマンドが発行されていて、既にワード選択動作は完了されているものと理解されたい。第４図の論理より明らかなように、第１回目のバースト動作ではＤ３，Ｄ４，Ｄ１，Ｄ２の順にラップアラウンドでバーストリードされている。第２回目のバースト動作では、データブロックの先頭からＤ５，Ｄ６，Ｄ７，Ｄ８の順にバーストリードが行われる。
第７図にはキャッシュ制御部２におけるキャッシュアクセスアドレス及びメモリアクセスアドレス生成のための論理構成の一例が示される。キャッシュ制御部５は、アドレスバッファ４０、メモリアクセスアドレス生成回路４１、キャッシュフィルアドレス生成回路４２、及びセレクタ４３を有する。キャッシュ制御部５は、ＣＰＵ３からの実効アドレス１１を受けると、これをアドレスバッファ４０に保持する。次に、アドレスバッファ３０が保有するアドレスをセレクタ４３で選択してキャッシュアクセスアドレス７としてキャッシュメモリ４に供給する。キャッシュアクセスアドレスに応答するキャッシュラインのキャッシュエントリがキャッシュミスヒットである場合、メモリアクセスアドレス生成回路４１はこれに応答して、キャッシュミスヒットに係るメモリアクセスアドレス１２を生成する。メモリアクセスアドレス１２を用いたメモリ制御部６によるシンクロナスＤＲＡＭ２のアクセス制御は前述の通りである。
前記キャッシュフィルアドレス生成回路４２は、バーストリードでメモリ制御部６がシンクロナスＤＲＡＭ２からリードした３２バイトのデータを４バイト毎にラップアラウンドでキャッシュメモリ４に書込むためのキャッシュフィルアドレスを生成する。この時の、キャッシュフィルアドレス生成回路４２はラップアラウンド動作のデータブロックをシンクロナスＤＲＡＭ２のバースト長に対応可能なように、ラップアラウンド情報ＷＲＰＡを入力し、バースト長が１６バイトであれば１６バイトアドレス範囲毎でラップアラウンド動作させ、バースト長が３２バイトであれば３２バイトのアドレス範囲でラップアラウンド動作させる。ラップアラウンド動作のキャッシュフィルアドレスの先頭アドレスは、アドレスバッファ４０に保持されているキャッシュミスに係るアドレスである。ラップアラウンド動作のキャッシュフィルアドレスは前述のインデックスアドレス及びロングワード選択信号７である。バーストリードでメモリ制御部６はシンクロナスＤＲＡＭ２からリードしたデータをデータバス９に４バイト毎に出力するとき、そのデータの区切りを示すデータレディー信号ＤＲＤＹを出力する。キャッシュフィルアドレス生成回路４２は、前記データレディー信号ＤＲＤＹに同期して、キャッシュフィルアドレスの前記先頭アドレスを順次＋４インクリメントして行く。
第８図にはキャッシュフィルアドレス生成回路４２のアドレス生成論理が例示される。キャッシュフィルアドレスの先頭アドレスはキャッシュミスヒットに係る実効アドレスによって決るので、第８図ではキャッシュミスヒットに係る実効アドレス毎に、バースト長３２バイト、１６バイトの場合のキャッシュフィルアドレスとそれに対応するデータとを対で示してある。
第８図において、Ｎを３２の倍数とし、アドレスＮのデータをＤ１、アドレスＮ＋４のデータをＤ２、アドレスＮ＋２８のデータをＤ８のように呼ぶものとする。このとき、例えばＣＰＵ３からの実効アドレスが、Ｎ＋８であり、ラップアラウンド情報が１６バイトを意味した場合、シンクロナスＤＲＡＭ２から返されるデータの順序は、Ｄ３，Ｄ４，Ｄ１，Ｄ２，Ｄ５，Ｄ６，Ｄ７，Ｄ８である。これをキャッシュの正しい位置にフィルするために、キャッシュフィルアドレス生成回路４２は、データの切り替わりと同期してメモリ制御部６より発行されるデータレディ信号ＤＲＤＹにしたがって、キャッシュフィルアドレスを、Ｎ＋８，Ｎ＋１２，Ｎ，Ｎ＋４，Ｎ＋１６，Ｎ＋２０，Ｎ＋２４，Ｎ＋２８の順とするように、キャッシュアクセスアドレス７を生成する。
第９図には以上説明したマイクロプロセッサ１によるキャッシュフィル動作を比較例も含めて示してある。従来技術において、キャッシュミスヒットに係るアドレスをＮ＋８とするとき、バースト長３２バイトのシンクロナスＤＲＡＭからバースト動作で読み出されるデータは第９図の（Ａ）に示されるように、＠０８、＠１２、＠１６、＠２０、＠２４、＠２８、＠００、＠０４の順になる。バースト長１６バイトのシンクロナスＤＲＡＭから２回のバースト動作で読み出されるデータは第９図の（Ｂ）に示されるように、＠０８、＠１２、＠００、＠０４、＠２４、＠２８、＠１６、＠２０の順になる。このようにシンクロナスＤＲＡＭから読み出されるデータ順はバースト長によって相違される。この不整合のままキャッシュフィルされないように、キャッシュフィルの前に３２バイトバースト動作時のデータ順に統一するデータアライナを設ける従来技術では、第９図の（Ｃ）のように、データ並び替えに伴うペナルティサイクルが４サイクル発生し、バス性能が低下する。一方、アクセス開始アドレスにバウンダリ固定の制約を付ける従来技術では、第９図の（Ｄ）に例示されるように、キャッシュミスヒットがアドレスＮ＋８で生じたにもかかわらず、最初のデータはバウンダリ固定のアドレスＮ＋０に固定されるため、ＣＰＵが最初に必要とするデータを最初に供給できず、２サイクルのペナルティーを生じ、ＣＰＵ性能を低下させてしまう。それらに対して前記マイクロプロセッサ１では、バーストリードデータをバッファリングして並べ替える処理を行わなず、第９図の（Ｅ）のように、メモリ制御部がラップアラウンド情報に基づいて、バーストリードデータのバースト長に応じてキャッシュフィルアドレスを生成するから、第９図の（Ｃ）のようなペナルティーを生じない。また、第９図の（Ｅ）より明らかなように、バーストアクセスの開始アドレスにバウンダリ固定の制約を設けないから、第９図の（Ｄ）のようなペナルティーも生じない。更に、第９図の（Ｅ）のように第２回目のバーストアクセス先頭アドレスを第４図の論理に従ってバウンダリ先頭にするから、ＣＰＵ３が連続データを要求する場合には、その要求に早く答えることが可能になる。
第９図を参照しながら更に具体的に作用を説明する。ＣＰＵ３がＮ＋０８番地からアクセスを開始してキャッシュミスによるメモリアクセスが発生し、ＣＰＵ３が続けて、Ｎ＋１２，Ｎ＋１６，Ｎ＋２０，Ｎ＋２４，Ｎ＋２８と連続したアドレスのデータを要求する場合に、第９図の（Ｃ）の手法では、シンクロナスＤＲＡＭからのデータ順は、＠０８，＠１２，＠００，＠０４，＠２４，＠２８，＠１６，＠２０であり、ＣＰＵが第３番目に要求しているデータである＠１６がメモリから第７番目にしか到着せず、少なくとも４サイクルのペナルティーサイクルが発生する。これに対して、第９図の（Ｅ）の手法を用いれば、シンクロナスＤＲＡＭ２からのデータ順は、＠０８，＠１２，＠００，＠０４，＠１６，＠２０，＠２４，＠２８であり、ＣＰＵ３が第３番目に要求しているデータ＠１６がシンクロナスＤＲＡＭ２から第５番目に到着することができ、ペナルティーサイクルを２サイクルに軽減することができ、ＣＰＵ３によるデータ処理性能の向上を実現できる。このような連続したアドレスへのアクセスは、命令アクセスの場合や連続したデータ処理等、極めて頻繁に発生するから、データ処理効率を向上させる上で、大きな効果を得ることができる。
また、キャッシュ制御部５が、このシンクロナスＤＲＡＭ２からのデータと併せてラップアラウンド情報ＷＲＰＡを受けることで、バースト長で規定されるデータブロックのバウンダリ先頭以外からのアクセスも開始することが可能になり、ＣＰＵによるデータ処理性能を向上することができる。具体的には、第９図の（Ｄ）では、ＣＰＵが最初に必要とするデータは＠０８であるにも拘わらず、メモリから返されるデータ順がメモリブロックの先頭を基点にする制限があるためにデータ＠０８からのメモリアクセスを行なうことができず、バースト転送開始アドレスがＮ＋０になり、メモリから返されるデータ順は、＠００，＠０４，＠０８，＠１２，＠１６，＠２０，＠２４，＠２８である。この結果、データ＠０８は第３番目となり、ＣＰＵが先頭のデータ到着を少なくとも２サイクル待つことになり、ＣＰＵのデータ処理性能の低下を引き起こす。これに対して、第９図の（Ｅ）に代表される制御手法を用いれば、バースト転送開始アドレスをＮ＋８にすることができ、メモリからのデータ順は、＠０８，＠１２，＠００，＠０４，＠１６，＠２０，＠２４，＠２８であり、ＣＰＵ３が第１番目に要求しているデータ＠０８をシンクロナスＤＲＡＭ２から第１番目に到着させることができ、ＣＰＵ３のペナルティーサイクルを２サイクルに軽減することができ、ＣＰＵ３のデータ処理性能の向上を実現できる。
更に第９図の（Ｅ）の処理は第８図のキャッシュフィルアドレス生成論理を適用しているから、同図に例示されるように、ＣＰＵ３が第３番目に必要とするデータ＠１０を得るとき、第９図の（Ｃ）では４サイクル発生していたペナルティーサイクルを、２サイクルに抑えることができ、この点においても、ＣＰＵによるデータ処理性能を向上させることができる。
以上説明したマクロプロセッサ１によって得られる作用効果を整理して説明する。
マイクロプロセッサ１において、メモリ制御部６は、前記ラップアラウンド情報ＷＲＰＡによってキャッシュライン長に対するアクセス対象メモリ（シンクロナスＤＲＡＭ）２のバースト長を把握し、これに基いてアクセス対象メモリ２に呼応したバースト動作回数を制御して、キャッシュライン長に応ずるブロックデータを前記シンクロナスＤＲＡＭ２からバースト動作で得ることができる。得られたブロックデータは、ラップアラウンド情報ＷＲＰＡから把握されるバースト長に合わせてキャッシュ制御部５がキャッシュメモリ４にラップアラウンドでキャッシュフィル可能にされるから、シンクロナスＤＲＡＭ２から出力されるデータをアライナで並べ変えなくてもよく、また、バースト動作されるデータブロックのバウンダリ先頭をアクセス開始アドレスに固定する制約を設けなくてもよい。したがって、キャッシュメモリのキャッシュライン長より短いサイズでバースト動作可能であってラップアラウンド機能を有するメモリを用いるときでもキャッシュミスに係るデータを獲得するまでのＣＰＵの待ち時間を短縮でき、データ処理性能の向上に寄与することができる。
また、前記キャッシュ制御部５は、メモリ制御部６がキャッシュミスヒットに応答してシンクロナスＤＲＡＭ２からバースト動作でデータを順次読み出してくる動作に追従しながら、キャッシュフィル動作を進めることができるから、高速なキャッシュフィル動作を保証することができる。
プログラムやある種のデータは連続したアドレスに配置される場合が多いという事実に鑑みると、前述のように、バースト動作の複数回のアクセスのうち、最初のアクセス以外は、バースト長で規定されるバウンダリ先頭からメモリアクセスを行なえば、連続したデータアクセス時にＣＰＵが先にアクセスすることになるデータを先にキャッシュメモリ又はＣＰＵに到達させることができるから、データ処理性能の向上に役立つ。
第１図に例示されるデータ処理システムでは、前記マイクロプロセッサ１に一つのシンクロナスＤＲＡＭ２を接続している。前記キャッシュメモリ４のキャッシュライン長（例えば３２バイト）よりも比較的短いバースト長（例えば１６バイト）をシンクロナスＤＲＡＭ２に設定しておくと、バーストアクセス動作を行うシンクロナスＤＲＡＭ２からラップアラウンドに出力されるブロックデータを複数個結合してキャッシュメモリ４にキャッシュフィルすることができる。また、キャッシュメモリ４のキャッシュライトヒットに対する処理の一つとしてライトスルーを採用しているとき、書込みデータをキャッシュライン長よりも短い（例えば８バイト）ライトスルーバッファから前記シンクロナスＤＲＡＭ２に書込むような場合には、前記比較的短いバースト長故にデータ転送サイクルの無駄が少ない。この時のバーストアクセス動作の後半の８バイトに対しては、前記データマスク信号ＤＭによってデータマスクを行うことにより、実際のデータ書込み動作を抑止すればよい。
したがって、３２バイトのような大容量のデータをキャッシュメモリ４等に効率良く転送できる性能を損なわず、更に、ライトスルーバッファのデータ書き戻し動作のような比較的小さなデータの転送では無駄なサイクルを最小限に抑えることができ、データ処理性能を向上させることができる。
第１０図にはデータ処理装置の別の例が示される。同図に示されるデータ処理システムは、バースト動作をラップアラウンドに行なうことができるメモリ、例えば２個のシンクロナスＤＲＡＭ２Ａ，２Ｂを設けたものである。夫々のシンクロナスＤＲＡＭ２Ａ，２Ｂは前記シンクロナスＤＲＡＭ２と同様の構成を有し、一方のシンクロナスＤＲＡＭ２Ａには１６バイトのバースト長が設定され、他方のシンクロナスＤＲＡＭ２Ｂには３２バイトのバースト長が設定されるようになっている。それぞれのシンクロナスＤＲＡＭ２Ａ，２Ｂのバースト長は、パワーオンリセット後に、ソフトウェアにより個別にＣＰＵ３よりシンクロナスＤＲＡＭ２Ａ，２Ｂのモードレジスタに設定される。このとき、メモリ制御部６内のメモリコントロールレジスタ２３には、シンクロナスＤＲＡＭ２Ａ，２Ｂ等の外部メモリのバースト長等のバス制御情報が設定される。その他の構成は第１図と同様であるので詳細な説明は省略する。
第１０図の上記データ処理システムによれば、キャッシュメモリ４のキャッシュライン長（例えば３２バイト）よりも比較的短いバースト長（例えば１６バイト）をシンクロナスＤＲＡＭ２Ａに設定しておくと、シンクロナスＤＲＡＭ２Ａからラップアラウンドに出力されるブロックデータを複数個結合してキャッシュメモリ４にキャッシュフィルすることができる。キャッシュライン長に等しいバースト長を設定したシンクロナスＤＲＡＭ２Ｂがデータ処理システムに含まれている場合、そのシンクロナスＤＲＡＭ２Ｂを対象とするキャッシュミスヒットに対する処理では、当該シンクロナスＤＲＡＭ２Ｂのバースト長に応じたキャッシュフィル動作も可能にされる。
また、キャッシュメモリ４のキャッシュライトヒットに対する処理としてライトスルーを採用しているとき、書込みデータをキャッシュライン長よりも短い（例えば８バイト）ライトスルーバッファから前記シンクロナスＤＲＡＭ２Ａに書込むような場合には、前記比較的短いバースト長故にデータ転送サイクルの無駄が少ない。この時のバーストアクセス動作の後半の１２バイトは、前記データマスク信号ＤＭによってデータマスクを行い、実際のデータ書込み動作を抑止すればよい。キャッシュライン長に等しいバースト長が設定される前記シンクロナスＤＲＡＭ２Ｂがライトスルーによる書込み対象になる場合は、書込みマスクを行ってもシンクロナスＤＲＡＭ２Ａに比べると無駄なサイクルは増えるが、シンクロナスＤＲＡＭ２Ｂを一時的にキャッシュの対象から外した状態では、シンクロナスＤＲＡＭ２Ｂに対して一度にアクセス若しくは転送できるデータ量を大きくすることが可能になり、ＣＰＵ３によるデータ処理性能の向上に寄与することができる。シンクロナスＤＲＡＭ２Ｂを一時的にキャッシュの対象から外す制御は、マイクロプロセッサ１の動作モード、或いはキャッシュ制御部５の図示を省略するキャッシュ制御レジスタに対するＣＰＵ３による設定で行うことができる。
したがって、複数個のシンクロナスＤＲＡＭに異なるバースト長を設定した上記データ処理システムにおいては、３２バイトのような大容量のデータをキャッシュメモリ等に効率良く転送できる性能を損なわずに、８バイトのような比較的小さなデータの転送には無駄なサイクルを極力抑えることができ、バースト長の異なるメモリを複数個有するようなメモリの多様な接続構成若しくは利用形態が実現される。
また、マイクロプロセッサ１で動作するプログラムの構成上、シンクロナスＤＲＡＭ２Ｂには、プログラムコード及びキャッシュライン長と同じかそれ以上のサイズを有するデータを保持するようにし、シンクロナスＤＲＡＭ２Ａには、キャッシュライン長より小さなサイズを有するデータを保持するようにすることで、マイクロプロセッサ１の処理性能の向上を図ることも可能となる。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、キャッシュメモリはプログラム格納用、或いはデータとプログラムを混在させて格納するものであってもよい。また、キャッシュメモリに、セットアソシアティブ、フルアソシアティブ或いはダイレクトマップ等の連想記憶形式を採用することができる。また、キャッシュメモリには前記ライトスルー方式に代えてライトバック方式を採用してもよい。
また、データ処理装置は、浮動小数点演算ユニットなどその他の演算ユニット、ダイレクトメモリアクセスコントローラのようなその他のバスマスタモジュール、タイマやＲＡＭなどその他の周辺回路を内蔵してもよい。バースト動作可能なメモリはシンクロナスＤＲＡＭに限定されず、シンクロナスＳＲＡＭなどであってもよい。データ処理システムに含まれるバースト動作可能なメモリの数は適宜増やしてよい。
産業上の利用可能性
本発明は、バースト動作可能なメモリをアクセスすることができるデータ処理装置、そしてデータ処理システムに広く適用することができ、例えば、マイクロプロセッサ、マイクロコンピュータ、データプロセッサ、ＤＳＰなどと称される種々の半導体集積回路化されたデータ処理装置等に適用することができる。
【図面の簡単な説明】
第１図は本発明に係るデータ処理システムの一例を示すブロック図である。
第２図はブロック転送長判定部の詳細な一例を示すブロック図である。
第３図は外部メモリアドレス生成回路の一例を示すブロック図である。
第４図は後続アクセスアドレスの生成論理のアドレス生成規則を例示する説明図である。
第５図は３２バイトのバースト長を設定したシンクロナスＤＲＡＭに対するバースト動作を例示するタイミングチャートである。
第６図は１６バイトのバースト長を設定したシンクロナスＤＲＡＭに対するバースト動作を例示するタイミングチャートである。
第７図はキャッシュ制御部におけるキャッシュアクセスアドレス及びメモリアクセスアドレス生成のための論理構成の一例を示すブロック図である。
第８図はキャッシュフィルアドレス生成回路のアドレス生成論理を例示する説明図である。
第９図は第１図のマイクロプロセッサによるキャッシュフィル動作を比較例も含めて示したタイミングチャートである。
第１０図は本発明に係るデータ処理システムの別の例を示すブロック図である。
【図１】
0003967921.tif 000002
【図２】
0003967921.tif 000003
【図３】
0003967921.tif 000004
【図４】
0003967921.tif 000005
【図５】
0003967921.tif 000006
【図６】
0003967921.tif 000007
【図７】
0003967921.tif 000008
【図８】
0003967921.tif 000009
【図９】
0003967921.tif 000010
【図１０】
0003967921.tif 000011