(57)【要約】      （修正有）【課題】メモリアクセスサイクルの効率化、高速化を実現するメモリ・コントローラの提供。【解決手段】ＣＰＵ１０とメモリ３０との間に配設され、ＣＰＵ１０から、バスサイクルのタイプがシーケンシャルサイクルであるか、ノンシーケンシャルサイクルであるかを指示する制御信号を入力し、バスサイクルの完了を前記ＣＰＵに通知する制御信号（ＲＤＹ）を出力するメモリ・コントローラであって、バスサイクルの終了前に、シーケンシャルサイクルを前提としたアドレスをあらかじめ生成しておき、次のサイクルでメモリに出力し、前記シーケンシャルサイクルを前提としたアドレスに対応するメモリからのリードデータをＣＰＵへ出力し、その際、本来、ノンシーケンシャルサイクルに対応するアドレスのデータを供給すべきものである場合、ＲＤＹ信号を非活性化とすることで、ＣＰＵにおいて該リードデータを取り込まず、結果的に該リードデータを無効化する。【選択図】図３
2007094835.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵとメモリとの間でアドレス、データの授受を行い、バスサイクルのタイプが、前サイクルのアドレスと連続したアドレスのシーケンシャルサイクルであるか、前サイクルのアドレスと無関係なアドレスのノンシーケンシャルサイクルであるかを指示する情報を少なくとも含む第１の制御信号を、前記ＣＰＵより入力する、メモリ・コントローラであって、
現在のバスサイクルが終了する前に、次のバスサイクルがシーケンシャルサイクルであることを前提として、現在のアドレスに連続した値のアドレスを生成する第１の回路を備えている、ことを特徴とするメモリ・コントローラ。
【請求項２】
前記現在のアドレスは、現在のバスサイクルにおいて、前記ＣＰＵより出力されたアドレス、又は、前記メモリ・コントローラが前記メモリに出力しているアドレスである、ことを特徴とする請求項１記載のメモリ・コントローラ。
【請求項３】
前記第１の回路は、前記連続した値のアドレスを生成したクロックサイクルの次のクロックサイクルにおいて、前記第１の制御信号に基づき、前記連続した値のアドレス、又は、前記ＣＰＵより前記メモリ・コントローラに出力されたアドレスを、前記メモリに出力するように制御する回路を備えている、ことを特徴とする請求項１記載のメモリ・コントローラ。
【請求項４】
バスサイクルの完了を前記ＣＰＵに通知するための第２の制御信号を生成する第２の回路を備え、
前記第２の回路は、前バスサイクルが終了した次のクロックサイクルで、前記第１の制御信号に基づき、前記ＣＰＵに出力される前記第２の制御信号の活性化、非活性化を行う、ことを特徴とする請求項１記載のメモリ・コントローラ。
【請求項５】
前記第２の回路は、前バスサイクルが終了した次のクロックサイクルで、前記第１の制御信号に基づき、前記第２の制御信号の活性化、非活性化を操作することで、前記メモリ・コントローラより前記ＣＰＵに転送される、前記メモリからのリードデータの、前記ＣＰＵにおける取り込みをの有無を制御する、ことを特徴とする請求項４記載のメモリ・コントローラ。
【請求項６】
前記第２の回路は、前記連続した値のアドレスに対応する、前記メモリからのリードデータを、前記ＣＰＵへ出力するクロックサイクルにおいて、前記メモリ・コントローラより前記メモリへ出力されるアドレスが、前記ＣＰＵよりノンシーケンシャルサイクルとして前記メモリ・コントローラに供給されたアドレスである場合、前記第２の制御信号を非活性化状態とし、バスサイクルを、さらに１クロックサイクル分延長させる、ことを特徴とする請求項４記載のメモリ・コントローラ。
【請求項７】
前記第１の回路は、一のクロックサイクルの１つ前のクロックサイクルにおいて前記第２の制御信号が非活性化状態であるか、又は、前記一のクロックサイクルにおいて前記第１の制御信号がシーケンシャルサイクルを示す場合には、前記一のクロックサイクルにおいて前記メモリに出力しているアドレスに連続した値のアドレスを生成する回路の出力を選択し、それ以外の場合には、前記ＣＰＵから提供されたアドレスを選択する回路を備えている、ことを特徴とする請求項４記載のメモリ・コントローラ。
【請求項８】
前記第１の回路が、入力されたアドレスに対して、予め定められた所定値分インクリメントした値のアドレスを生成して出力する加算器と、
前記加算器の出力と、前記ＣＰＵからのアドレスとを入力し、一方を選択して出力するセレクタと、
前記セレクタの出力をサンプルするレジスタと、
を備え、前記レジスタの出力が前記加算器に入力される、ことを特徴とする請求項１記載のメモリ・コントローラ。
【請求項９】
前記第２の回路が、前記第２の回路から現在出力されている前記第２の制御信号をラッチする第１のラッチ回路と、
前記第１の制御信号を構成しシーケンシャルサイクルのとき活性化される信号と、前記第１のラッチ回路の出力信号との所定の論理演算結果を出力する第１の論理回路と、
前記第１の論理回路の出力信号をサンプルする第２のラッチ回路と、
前記第２のラッチ回路の出力信号と、前記第２の回路から現在出力されている前記第２の制御信号と、前記第１の制御信号を構成しノンシーケンシャルサイクルのとき活性化される信号との所定の論理演算結果を出力する第２の論理回路と、
前記第２の論理回路の出力信号をラッチする第３のラッチ回路と、
を備えている、ことを特徴とする請求項８記載のメモリ・コントローラ。
【請求項１０】
前記第１の論理回路が、前記シーケンシャルサイクルのとき活性化される信号と前記第１のラッチ回路の出力の反転信号を入力する論理和回路よりなり、
前記第２の論理回路が、前記第２のラッチ回路の出力信号と、前記第２の制御信号と、前記ノンシーケンシャルサイクルのとき活性化される信号と、を入力する否定論理積回路よりなる、ことを特徴とする請求項９記載のメモリ・コントローラ。
【請求項１１】
前記第１の論理回路の出力信号が、前記セレクタの選択制御信号とされる、ことを特徴とする請求項１０記載のメモリ・コントローラ。
【請求項１２】
ＣＰＵとメモリとの間でアドレス、データの授受を行い、
バスサイクルのタイプが、前サイクルのアドレスと連続したアドレスのシーケンシャルサイクルであるか、前サイクルのアドレスと無関係なアドレスのノンシーケンシャルサイクルであるかを指示する情報を少なくとも含む第１の制御信号を、前記ＣＰＵより入力し、
バスサイクルの完了を、前記ＣＰＵに通知する第２の制御信号を出力する、メモリ・コントローラであって、
現在のバスサイクルの終了前に、シーケンシャルサイクルを前提としたアドレスを、現在のアドレスからあらかじめ生成しておき、前記シーケンシャルサイクルを前提としたアドレスを生成したクロックサイクルの次のクロックサイクルで、前記シーケンシャルサイクルを前提としたアドレスを前記メモリに出力する手段と、
前記シーケンシャルサイクルを前提としたアドレスに対応する前記メモリからのリードデータを前記ＣＰＵへ出力し、その際、ノンシーケンシャルサイクルに対応するアドレスのリードデータを供給すべきものである場合、前記第２の制御信号を非活性化とすることで、前記ＣＰＵに出力された前記リードデータを無効化する手段と、
を備えている、ことを特徴とするメモリ・コントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ・コントローラに関し、ＣＰＵからのバスサイクルがシーケンシャルサイクルとノンシーケンシャルサイクルを含むバスに接続されるメモリ・コントローラに関する。
【背景技術】
【０００２】
はじめに、メモリ・コントローラの典型的な構成の一例について、図３を参照して説明しておく（なお、図３は、後述される本発明の実施例の説明でも参照される）。図３に示すように、メモリ・コントローラ２０は、上位装置であるＣＰＵ１０（プロセッサ）とは、アドレスバス（ＡＤＤＲ）、データバス（ＲＤＡＴＡ）、制御信号（例えばバス転送制御信号ＴＲＡＮＳ、転送単位のサイズを規定する信号ＳＩＺＥ、レディ信号ＲＤＹ）を介して接続され、メモリ３０の選択（チップセレクト信号ＭＣＳＺ）、メモリ３０へのアドレスＭＡＤＤＲの出力、及び、メモリ３０のデータＭＤＩＮの読み出し、ＣＰＵ１０へのデータの書込みの制御を行う。
【０００３】
なお、図３では、ＣＰＵ１０とメモリ・コントローラ２０間のライトデータバス（ＷＤＡＴＡ）、メモリ・コントローラ２０からメモリ３０へのライトデータＭＤＯＵＴは省略されており、メモリ・コントローラ２０からメモリ３０へのライトイネーブル信号、アウトプットイネーブル信号等の制御信号も省略されている。
【０００４】
図４は、図３のメモリ・コントローラの動作の一例を説明するためのタイミング波形図である。なお、図３に示した構成、及び、図４に示したタイミング動作は、例えば非特許文献１の記載に基づいて、本発明者が作成したものである。
【０００５】
図４において、ＣＬＫは、ＣＰＵ１０、メモリ・コントローラ２０を駆動するクロック信号である。
【０００６】
ＲＤＹ信号は、メモリ・コントローラ２０からＣＰＵ１０へ出力される制御信号であり、バスサイクル（メモリアクセスサイクル）の完了をＣＰＵ１０に通知する。図４に示す例では、ＣＰＵ１０は、クロック信号ＣＬＫの立ち上りエッジで、ＲＤＹ信号がハイレベル（活性状態）のとき、バスサイクルは完了したものと判断する。クロック信号ＣＬＫの立ち上りエッジでＲＤＹがロウレベル（非活性状態）のとき、バスサイクルは、クロックサイクル単位で延長される。なお、図４では、バスサイクルは、２クロックサイクルで完了しており、各クロックサイクル（１）から（１１）において、クロックサイクル単位で延長されたバスサイクルは示されていない。図３、図４のＲＤＹ信号は、例えば非特許文献１では、クロックイネーブル信号ＣＬＫＥＮに対応している。非特許文献１においては、ＣＰＵ（コア）では、ＣＬＫＥＮの値がクロック信号ＣＬＫの立ち上りエッジでサンプルされ、ＨＩＧＨレベルであればバスサイクルの完了、ＬＯＷレベルであればバスサイクル延長の制御がクロックサイクル単位で行われる。
【０００７】
バス転送制御信号ＴＲＡＮＳ（なお、ＴＲＡＮＳは「バス転送ステート信号」、あるいは「メモリ・リクエスト信号」ともいう）は、ＣＰＵ１０からメモリ・コントローラ２０へ出力される制御信号（２ビット）であり、
・ノンシーケンシャルサイクル（ＮｏｎＳｅｑ；「非連続アクセス」ともいう）、
・シーケンシャルサイクル（Ｓｅｑ；「連続アクセス」ともいう）、
・インターナルサイクル（ｉｎｔｅｒｎａｌ）等の、バスアクセスのタイプをメモリ・コントローラ２０に通知する。特に制限されないが、ＴＲＡＮＳは、バスサイクルのはじめに、クロック信号ＣＬＫの所定の立ち上りに同期して出力されるものとする。
【０００８】
ノンシーケンシャルサイクル（ＮｏｎＳｅｑ）は、今回のサイクルのアドレスが前のサイクルと全く関係のないアドレスが出力されることを指示する。
【０００９】
シーケンシャルサイクル（Ｓｅｑ）は、今回のサイクルのアドレスが前のサイクルをインクリメントしたアドレス（ハーフワード、フルワード）であることを指示する。シーケンシャルサイクル（Ｓｅｑ）は、例えばＤＲＡＭのメモリのバーストアクセス等に用いられる。
【００１０】
インターナルサイクル（ｉｎｔｅｒｎａｌ）は、ＣＰＵ１０が内部動作を行い、バス転送を行わないことを指示する。なお、シーケンシャルサイクル（Ｓｅｑ）において、図４では、簡単のため、ＣＰＵ１０は、前のサイクルのアドレスを１つインクリメントしたアドレスを、メモリ・コントローラ２０に出力するものとして記述されている。すなわち、連続アクセスアドレスのインクリメント単位を簡単のため１としている。
【００１１】
ＡＤＤＲは、ＣＰＵ１０からメモリ・コントローラ２０へ供給されるアドレスバス上のアドレス信号である。
【００１２】
ＭＡＤＤＲは、メモリ・コントローラ２０からメモリ３０に供給されるアドレスバス信号である。
【００１３】
ＭＤＩＮは、メモリ３０からメモリ・コントローラ２０に出力されるデータ（リードデータ）である。
【００１４】
ＲＤＡＴＡは、メモリ・コントローラ２０からＣＰＵ１０へのリードデータバス上に出力されるリードデータである。なお、図４において、図３のＭＣＳＺ、ＳＩＺＥは省略されている。
【００１５】
図４からもわかるように、リードアクセスのバスサイクルは、２クロックサイクルを要し、１クロックサイクル分のウエイトが常に挿入される。一のバスサイクルが終わった後の次のバスサイクルにおいて、該一のバスサイクルに対応するアドレスにて、メモリ・コントローラ２０からメモリ３０へのアクセスが行われる。より詳細には、あるバスサイクルにおいてＣＰＵ１０よりアドレスが出力された後（クロックサイクル（１）、（３）、（５）、…参照）、２クロックサイクル後に（クロックサイクル（３）、（５）、（７）、…参照）、メモリ・コントローラ２０からメモリ３０へのアドレスＭＡＤＤＲが出力される。そして、各バスサイクルの２クロック目の立ち上りエッジで、前のバスサイクルのアドレスに対応してメモリから読み出されたデータＭＤＩＮを、リードデータバスＲＤＡＴＡに出力している（クロックサイクル（２）、（４）、（６）、（８）、…参照）。
【００１６】
各バスサイクルにおいて、メモリ・コントローラ２０は、リードバスＲＤＡＴＡへリードデータを出力する２クロック目に、ＲＤＹ信号をアクティブ（ＨＩＧＨレベル）としており（クロックサイクル（２）、（４）、（６）、（８）、…参照）、１クロック分のウエイトサイクルが挿入される。
【００１７】
図４に示したタイミング動作について説明を補足しておく。クロックサイクル（１）において、バスサイクルのタイプは、ノンシーケンシャルサイクル（ＮｏｎＳｅｑ）とされ、当該バスサイクルにおいて、ＣＰＵ１０からアドレスＡａがＣＰＵからメモリ・コントローラ２０に供給され、当該アドレスに対応して、クロックサイクル（３）にて、メモリ・コントローラ２０からアドレス出力ＭＡＤＤＲとして、Ａａがメモリ３０に供給され、メモリ３０からのデータＭＤＩＮとしてＤａがメモリ・コントローラ２０に供給される。なお、メモリ・コントローラ２０は、クロックサイクル（２）のクロック信号ＣＬＫの立ち上りエッジに同期して、ＲＤＹ信号を活性状態（ＨＩＧＨレベル）とし、ＣＰＵ１０は、このＲＤＹ信号を受け（図４に示す例では、ＣＰＵ１０はクロックサイクル（２）のクロック信号ＣＬＫの立ち下りでＲＤＹ信号をサンプルする）、クロックサイクル（３）のクロックの立ち上りエッジに同期して、制御信号ＴＲＡＮＳ、アドレス信号ＡＤＤＲを出力する。
【００１８】
クロックサイクル（３）において、バスサイクルのタイプは、シーケンシャルサイクル（Ｓｅｑ）とされ、ＣＰＵ１０は、前バスサイクルのアドレスＡａをインクリメントしたアドレスＡａ＋１を生成してメモリ・コントローラ２０に出力し、クロックサイクル（５）にて、メモリ・コントローラ２０からのメモリアドレス出力ＭＡＤＤＲとしてＡａ＋１がメモリ３０に供給され、メモリ３０からのデータＭＤＩＮとしてアドレスＡａ＋１に対応するリードデータＤａ＋１がメモリ・コントローラ２０に供給される。
【００１９】
クロックサイクル（５）において、バスサイクルのタイプは、ノンシーケンシャルサイクル（ＮｏｎＳｅｑ）とされ、ＣＰＵ１０からアドレスＡｂがメモリ・コントローラ２０に供給され、当該アドレスＡｂに対応して、クロックサイクル（７）にてメモリ・コントローラ２０からのアドレス出力ＭＡＤＤＲとしてＡｂがメモリ３０に供給され、ＭＤＩＮとしてアドレスＡｂに対応するリードデータＤｂがメモリ３０からメモリ・コントローラ２０に供給される。以下、クロックサイクル（９）、（１１）も、ノンシーケンシャルサイクル（ＮｏｎＳｅｑ）とされる。
【００２０】
なお、特許文献１には、無駄なアドレス状態を削減し、効率的なデータ転送を実現するメモリ・コントローラ（メモリ制御装置）として、図５に示すような構成が提案されている。図５を参照すると、このメモリ・コントローラは、先読みアドレスを生成するアドレスカウンタ５２と、アドレスカウンタ５２によりカウントアップされたアドレスＣＴＡＤＲとリクエストアドレスＲＱＡＤＲを比較するアドレスコンパレータ５３と、アドレスカウンタ５２とアドレスコンパレータ５３を制御するカウンタメモリ・コントローラ５４と、カウントアドレスとリクエストアドレスを選択してメモリへのアドレスＢ２ＡＤＲをバス６に出力するアドレスセレクトドライバ５５とを備え、プロセッサが次のリクエストを発行するまでの間に、連続した次のメモリアドレスのデータを先読みして、無駄なアドレス状態を削減し、メモリへのアクセス性能の向上を図っている。なお、図５において、５１はバス３からのリクエストＢ１ＡＤＲをバッファリングするリクエストバッファ、５６は、バス６からのレスポンスデータＢ２ＤＡＴＡを受け取るレスポンスバッファ、５７はレスポンスデータＲＳＤＡＴＡを入力しバス３にレスポンスデータＢ１ＤＡＴＡを出力するレスポンスドライバである。図６に、特許文献１に記載されているタイミングチャートを示す。
【００２１】
図６に示すように、図５のメモリ・コントローラは、プロセッサからのコマンドＢ２ＣＭＤとして連続モードコマンド（ＣＲＤ）を検知したのちに、メモリへのアドレス出力Ｂ２ＡＤＲを、アドレスカウンタ５２の出力に切り替えて出力している。
【００２２】
また、メモリから出力されたデータＢ２ＤＡＴＡを、メモリ・コントローラに取り込む際に、先読みした誤ったデータＥＥを、レスポンスバッファ（ＲＳＢＦ）５６でラッチしないことで、無効化している。
【００２３】
また、バス３のアドレスＢ１ＡＤＲが１０Ｃ→２００へと、連続アクセス（ＣＲＤ）から非連続アクセス（ＲＤ）へ遷移する場合において、バス３のデータＢ１ＤＡＴＡから、連続アクセス（ＣＲＤ）の最後の「ＤＤ」を出力するのと、次のアドレスをメモリへバス６のアドレスＢ２ＡＤＲから出力するのに、数クロックを要している。
【００２４】
【特許文献１】特開平６−１６１８６８号公報
【非特許文献１】ARM社の「ARM7TDMI-S(Rev4) Technical Reference Manual」、第69-86頁、インターネット＜ULR：http://www.arm.com/pdfs/DDI0234A_7TDMIS_R4.pdf＞
【発明の開示】
【発明が解決しようとする課題】
【００２５】
上記したように、図４を参照して説明したメモリ・コントローラの場合、バスサイクルが完了後に、メモリアクセスを開始するため、１クロックサイクル分のウエイトサイクルが挿入され、高速化を困難としている。
【００２６】
また、特許文献１に記載のメモリ制御装置においては、メモリ制御装置が、連続モードを検知した後に、メモリへのアドレス出力を、アドレスカウンタの出力に切り替えて出力しており、かかる構成の場合、さらなる高速化を実現することは困難である。
【課題を解決するための手段】
【００２７】
本願で開示される発明は、上記課題を解決するため、概略以下の構成とされる。
【００２８】
本発明の１つの側面に係るメモリ・コントローラは、ＣＰＵとメモリとの間でアドレス、データの授受を行い、バスサイクルのタイプが、前サイクルのアドレスと連続したアドレスのシーケンシャルサイクルであるか、前サイクルのアドレスと無関係なアドレスのノンシーケンシャルサイクルであるかを指示する情報を少なくとも含む第１の制御信号を、前記ＣＰＵより入力する、メモリ・コントローラであって、現在のバスサイクルが終了する前に、次のバスサイクルがシーケンシャルサイクルであることを前提として、現在のアドレスに連続した値のアドレスを生成する第１の回路を備えている。
【００２９】
本発明において、前記第１の回路は、前記連続した値のアドレスを生成したクロックサイクルの次のクロックサイクルにおいて、前記第１の制御信号に基づき、前記連続した値のアドレス、又は、前記ＣＰＵより前記メモリ・コントローラに出力されたアドレスを、前記メモリに出力するように制御する回路を備えている。
【００３０】
本発明において、バスサイクルの完了を前記ＣＰＵに通知するための第２の制御信号を生成する第２の回路を備え、前記第２の回路は、前バスサイクルが終了した次のクロックサイクルで、前記第１の制御信号に基づき、前記ＣＰＵに出力される前記第２の制御信号の活性化、非活性化を行う。より詳しくは、前記第２の回路は、前バスサイクルが終了した次のクロックサイクルで、前記第１の制御信号に基づき、前記第２の制御信号の活性化、非活性化を操作することで、前記メモリ・コントローラより前記ＣＰＵに転送される、前記メモリからのリードデータの、前記ＣＰＵにおける取り込みをの有無を制御する。
【００３１】
本発明において、前記第２の回路は、前記連続した値のアドレスに対応する、前記メモリからのリードデータを、前記ＣＰＵへ出力するクロックサイクルにおいて、前記メモリ・コントローラより前記メモリへ出力されるアドレスが、前記ＣＰＵよりノンシーケンシャルサイクルとして前記メモリ・コントローラに供給されたアドレスである場合、前記第２の制御信号を非活性化状態とし、バスサイクルを、さらに１クロックサイクル分延長させる構成としてもよい。
【００３２】
本発明において、前記第１の回路は、前のクロックサイクルにおいて前記第２の制御信号が非活性化状態であるか、又は、現在のクロックサイクルにおいて前記第１の制御信号がシーケンシャルサイクルを示す場合には、現在のクロックサイクルにおいて前記メモリに出力しているアドレスに連続した値のアドレスを生成する回路の出力を選択し、それ以外の場合、前記ＣＰＵから提供されたアドレスを選択する回路を備えた構成としてもよい。
【００３３】
本発明において、前記第１の回路は、入力されたアドレスに対して、予め定められた所定値分インクリメントした値のアドレスを生成して出力する加算器と、前記加算器の出力と、前記ＣＰＵからのアドレスとを入力し、一方を選択して出力するセレクタと、前記セレクタの出力をサンプルするレジスタと、を備え、前記レジスタの出力が、前記加算器に入力される。
【００３４】
本発明において、前記第２の回路が、前記第２の回路から現在出力されている前記第２の制御信号をラッチする第１のラッチ回路と、前記第１の制御信号を構成しシーケンシャルサイクルのとき活性化される信号と、前記第１のラッチ回路の出力信号との所定の論理演算結果を出力する第１の論理回路と、前記第１の論理回路の出力をサンプルする第２のラッチ回路と、前記第２のラッチ回路の出力信号と、前記第２の回路から現在出力されている前記第２の制御信号と、前記第１の制御信号を構成しノンシーケンシャルサイクルのとき活性化される信号との所定の論理演算結果を出力する第２の論理回路と、前記第２の論理回路の出力をラッチする第３のラッチ回路と、を備えた構成としてもよい。
【００３５】
本発明において、前記第１の論理回路が、前記シーケンシャルサイクルのとき活性化される信号と前記第１のラッチ回路の出力の反転信号を入力する論理和回路よりなり、前記第２の論理回路が、前記第２のラッチ回路の出力信号と、前記第２の制御信号と、前記ノンシーケンシャルサイクルのとき活性化される信号と、を入力する否定論理積回路よりなる。
【００３６】
本発明において、前記第１の論理回路出力が前記セレクタの選択制御信号とされる。
【００３７】
本発明に係るメモリ・コントローラは、ＣＰＵとメモリとの間でアドレス、データの授受を行い、バスサイクルのタイプが、前サイクルのアドレスと連続したアドレスのシーケンシャルサイクルであるか、前サイクルのアドレスと無関係なアドレスのノンシーケンシャルサイクルであるかを指示する情報を少なくとも含む第１の制御信号を、前記ＣＰＵより入力し、バスサイクルの完了を、前記ＣＰＵに通知する第２の制御信号を出力する、メモリ・コントローラであって、現在のバスサイクルの終了前に、シーケンシャルサイクルを前提としたアドレスを、現在のアドレスから予め生成しておき、前記シーケンシャルサイクルを前提としたアドレスを生成したクロックサイクルの次のクロックサイクルで、前記シーケンシャルサイクルを前提としたアドレスを前記メモリに出力する手段と、前記シーケンシャルサイクルを前提としたアドレスに対応する前記メモリからのリードデータを前記ＣＰＵへ出力し、その際、ノンシーケンシャルサイクルに対応するアドレスのリードデータを供給すべきものである場合、前記第２の制御信号を非活性化とすることで、前記ＣＰＵに出力された前記リードデータを無効化する手段と、を備えている。
【発明の効果】
【００３８】
本発明によれば、シーケンシャルサイクルを前提としたアドレスをバスサイクルの終了前に予め生成しておき、次のサイクルでメモリに出力し、シーケンシャルサイクルを前提としたアドレスのリードデータをＣＰＵへ出力し、その際、ノンシーケンシャルサイクルに対応するアドレスのデータを供給すべきものである場合、バスサイクルの完了をＣＰＵに通知する制御信号を非活性化とすることで、ＣＰＵのメモリアクセスの仕様を何等変更することなく、メモリアクセスの効率化、高速化を実現することができる。
【発明を実施するための最良の形態】
【００３９】
上記した本発明についてさらに詳細に説述すべく添付図面を参照して以下に説明する。本発明は、その最良の一形態において、ＣＰＵ（図３の１０）とメモリ（図３の３０）との間に配設され、ＣＰＵから、バスサイクルのタイプが、前サイクルのアドレスとアドレスが連続するシーケンシャルサイクルであるか、前サイクルのアドレスと無関係のアドレスのノンシーケンシャルサイクルであるかを指示する制御信号（ＴＲＡＮＳ）を入力し、バスサイクルの完了を前記ＣＰＵに通知する制御信号（ＲＤＹ）を出力する、メモリ・コントローラであって、シーケンシャルサイクルを前提としたアドレスを、バスサイクルの終了前に、現在のアドレスから予め生成しておき、前記シーケンシャルサイクルを前提としたアドレスを次のサイクルで前記メモリに出力し、前記シーケンシャルサイクルを前提としたアドレスに対応する前記メモリからのリードデータをＣＰＵへ出力し、その際、本来、ノンシーケンシャルサイクルに対応するアドレスのデータを供給すべきものである場合（メモリへ出力されるアドレスがノンシーケンシャルサイクルのアドレスである場合）、制御信号（ＲＤＹ）を非活性化とすることで、ＣＰＵにおいて該リードデータを取り込まず、結果的に、該リードデータを無効化する制御を行う。以下実施例に即して説明する。
【実施例】
【００４０】
本発明のメモリ・コントローラと、ＣＰＵ、メモリとの接続は、図３に示したものと同様とされる。本発明のメモリ・コントローラにおいては、メモリへ出力するアドレスＭＡＤＤＲの制御と、バスサイクルの完了を示すＲＤＹ信号の制御が、従来のものと相違している。以下では、本実施例と、図４に示した従来のタイミング動作との相違点を明確とするため、本実施例の動作を説明するタイミング図である図１と、図３を参照して説明する。
【００４１】
図１は、本発明の一実施例の動作を説明するタイミング波形図である。本実施例においては、前バスサイクルが終了する前に、ＣＰＵ１０からのバス転送制御信号ＴＲＡＮＳに応じて、メモリ３０へのアドレス出力ＭＡＤＤＲとして、ＣＰＵ１０からのアドレスと、前のアドレスをインクリメントした値のいずれかを選択し、前バスサイクルが終了した次のクロックサイクルにて、バス転送制御信号ＴＲＡＮＳに応じて、ＣＰＵ１０へバスサイクルの完了を通知するＲＤＹ信号の活性化、非活性化を制御することで、メモリ３０からのリードデータをＣＰＵ１０に取り込むか否かを制御している（ＲＤＹ信号が非活性状態の場合、ＣＰＵ１０は該リードデータをサンプルしない）。なお、図１において、ＭＣＳＺは、メモリ・コントローラ２０からメモリ３０に供給されるチップセレクト信号（ＬＯＷアクティブ）である。
【００４２】
本実施例において、ＣＰＵ１０との間のバス転送（バスサイクル）のタイプとして、ノンシーケンシャルサイクル（ＮｏｎＳｅｑ）と、シーケンシャルサイクル（Ｓｅｑ）と、バス転送が行われない非バス転送サイクル（ｉｎｔｅｒｎａｌ）がある。
【００４３】
図１において、クロックサイクル（１）の前のサイクルは、ノンシーケンシャルサイクル（ＮｏｎＳｅｑ）であるものとする。クロックサイクル（２）のクロックＣＬＫの立ち上りエッジで、ＲＤＹ信号がＨＩＧＨレベルとされている（この場合、クロックサイクル（１）、（２）で１つのバスサイクルを構成する）。本実施例においては、バスサイクルが終わる前に、すなわちバスサイクルの終わりの１クロック前であるクロックサイクル（２）のクロック信号ＣＬＫの立ち上りエッジで、アドレスＡａをメモリ出力ＭＡＤＤＲとしてメモリ３０に出力している。このため、本実施例においては、バスサイクルとして、図４に示した従来のメモリ・コントローラ（バスサイクルの終了後、ＭＡＤＤＲをメモリに出力している）よりも１クロックサイクル分を削減している。
【００４４】
特に制限されないが、本実施例において、メモリ３０は、０ウエイトでアクセス可能であるものとしている。このため、メモリ３０にてアドレスＡａでリードされたデータＤａは、クロックサイクル（３）のクロックの立ち上りエッジで、ＣＰＵ１０にＲＤＡＴＡとして出力される。クロックサイクル（３）において、ＲＤＹ信号がＨＩＧＨレベルであるため、ＣＰＵ１０は、クロックサイクル（３）のクロックＣＬＫの立ち上りエッジでデータＤａをサンプルする。
【００４５】
図２は、本実施例のメモリ・コントローラの要部構成を示す図である。図２には、ＣＰＵ１０（図３参照）へのＲＤＹ信号を生成する回路と、メモリ３０（図３参照）へのアドレス出力ＭＡＤＤＲを生成する回路の構成が示されている。これらの回路構成は、本発明の主たる特徴の１部をなしている。
【００４６】
図２を参照すると、本実施例のメモリ・コントローラは、ＲＤＹ信号の生成回路として、現在出力されているＲＤＹ信号をデータ端子に受けクロック信号ＣＬＫのエッジでサンプルするＤ型フリップフロップ（ラッチ回路）２２−１と、Ｄ型フリップフロップ（ラッチ回路）２２−１の出力の反転信号と、ＣＰＵ１０（図３参照）からのバス転送制御信号ＴＲＡＮＳのうちバスサイクルがシーケンシャルサイクル（連続アクセス）であることを示す信号Ｓｅｑとを入力とする２入力ＯＲ回路２１と、ＯＲ回路２１の出力信号（ｉｎｃ＿ａｄｄｒ）をデータ端子に受けクロック信号ＣＬＫのエッジでサンプルするＤ型フリップフロップ（ラッチ回路）２２−２と、Ｄ型フリップフロップ２２−２の出力端子Ｑからの出力信号（ｐｏｓｔ＿ｉｎｃ＿ａｄｄｒ）と、ＣＰＵ１０（図３参照）からのバス転送制御信号ＴＲＡＮＳのうちバスサイクルがノンシーケンシャルサイクル（非連続アクセス）であることを示す信号ＮｏnＳｅｑと、現在出力されているＲＤＹ信号とを入力とする３入力ＮＡＮＤ回路２３と、ＮＡＮＤ回路２３の出力をデータ端子に受けクロックＣＬＫのエッジでサンプルするＤ型フリップフロップ（ラッチ回路）２２−３と、を備え、Ｄ型フリップフロップ２２−３の出力端子ＱよりＲＤＹ信号がＣＰＵ１０に出力される。なお、図２において、信号Ｓｅｑ、ＮｏｎＳｅｑは、ＣＰＵ１０（図３参照）からの信号ＴＲＡＮＳを入力とする不図示のデコーダでデコードして得られた信号である。
【００４７】
また、図２を参照すると、本実施例のメモリ・コントローラは、メモリ３０（図３参照）へのアドレス出力ＭＡＤＤＲの生成回路として、メモリ３０へのアドレス出力ＭＡＤＤＲ（例えば３２ビット）に、サイズ（ＳＩＺＥ）を加算する加算器２４と、加算器２４の出力と、ＣＰＵ１０からのアドレスＡＤＤＲを入力し、ＯＲ回路２１の出力ｉｎｃ＿ａｄｄｒを選択制御信号として一方を選択するセレクタ２５と、セレクタ２５からのアドレス出力信号を複数のデータ端子に並列に受けクロック信号ＣＬＫのエッジでサンプルしＭＡＤＤＲとして出力するＤ型レジスタ（ラッチ回路）２６と、を備えている。
【００４８】
ＲＤＹ信号がＬＯＷレベルの場合、ＮＡＮＤ回路２３の出力はＨＩＧＨレベルとなり、次のクロックサイクルのクロック信号ＣＬＫの立ち上りエッジで、Ｄ型フリップフロップ２２−３の出力端子Ｑから出力されるＲＤＹ信号はＨＩＧＨレベルとなる。
【００４９】
あるクロックサイクルにおいて、ＲＤＹ信号がＨＩＧＨレベル、ＮｏｎＳｅｑがＨＩＧＨレベル、ｐｏｓｔ＿ｉｎｃ＿ａｄｄｒがＨＩＧＨレベル（１つ前のクロックサイクルで、ＳｅｑがＨＩＧＨレベルであるか、又は、２つ前のクロックサイクルにおいてＲＤＹ信号がＬＯＷレベルの場合、ｐｏｓｔ＿ｉｎｃ＿ａｄｄｒが当該あるサイクルでＨＩＧＨレベルとなる）、ＮＡＮＤ回路２３の出力はＬＯＷレベルとなり、次のクロックサイクルのクロック信号ＣＬＫの立ち上りエッジで、Ｄ型フリップフロップ２２−２の出力端子Ｑから出力されるＲＤＹ信号はＬＯＷレベルとなる。
【００５０】
あるクロックサイクルでＳｅｑ信号がＬＯＷレベルであり（ＮｏｎＳｅｑはＨＩＧＨレベル）、且つ、１つ前のＲＤＹ信号がＨＩＧＨレベルの場合、ＯＲ回路２１の出力ｉｎｃ＿ａｄｄｒはＬＯＷレベルとなり、次のクロックサイクルのクロック信号の立ち上りエッジで、ｉｎｃ＿ａｄｄｒをサンプルするＤ型フリップフロップ２２−２の出力ｐｏｓｔ＿ｉｎｃ＿ａｄｄｒは、ＬＯＷレベルとなり、ＮＡＮＤ回路２３の出力はＨＩＧＨレベルとなり、Ｄ型フリップフロップ２２−３の出力であるＲＤＹ信号はＨＩＧＨレベルとなる。あるクロックサイクルでＳｅｑ信号がＨＩＧＨレベルであるか、又は、前のクロックサイクルでＲＤＹ信号がＬＯＷレベルの場合、ＯＲ回路２１の出力ｉｎｃ＿ａｄｄｒはＨＩＧＨレベルとなる。
【００５１】
セレクタ２５は、ｉｎｃ＿ａｄｄｒがＬＯＷレベル（論理０）のときは、ＣＰＵ１０からのＡＤＤＲを選択する。セレクタ２５は、ｉｎｃ＿ａｄｄｒがＨＩＧＨレベル（論理１）のときは、加算器２４の加算結果を選択する。
【００５２】
以下では、図２を参照して説明したメモリ・コントローラの一連の動作について、図１を参照してさらに説明する。
【００５３】
図１のクロックサイクル（１）では、Ｄ型フリップフロップ２２−１の出力はＨＩＧＨレベルとし、バス転送制御信号ＴＲＡＮＳがノンシーケンシャルサイクル（ＮｏｎＳｅｑ＝ＨＩＧＨレベル）を示し、ＳｅｑはＬＯＷレベルとされ、ＯＲ回路２１の出力（ｉｎｃ＿ａｄｄｒ）はＬＯＷレベルであり、セレクタ２５は、ＣＰＵ１０（図３参照）からのアドレスＡＤＤＲ（Ａａ）を選択する。次のクロックサイクル（２）のクロック信号ＣＬＫの立ち上りエッジで、Ｄ型レジスタ２６は、セレクタ２５からの出力Ａａをサンプルし、メモリ３０（図３参照）へのアドレス出力ＭＡＤＤＲとして出力する。
【００５４】
クロックサイクル（２）において、メモリ３０からの該アドレスＡａで読み出されたリードデータＤａがＭＤＩＮに出力される。クロックサイクル（１）におけるＬＯＷレベルのＲＤＹを受けるＮＡＮＤ回路２３の出力はＨＩＧＨレベルとされ、クロックサイクル（２）のクロック信号ＣＬＫの立ち上りエッジでＤ型フリップフロップ２２−３の出力であるＲＤＹ信号はＨＩＧＨレベルとなる。またクロックサイクル（２）のクロックの立ち上りエッジにおいてＤ型フリップフロップ２２−１の出力はＬＯＷレベルとなり、ＯＲ回路２１の出力（ｉｎｃ＿ａｄｄｒ）はＨＩＧＨレベルとなる。ｉｎｃ＿ａｄｄｒがＨＩＧＨレベル（論理１）となると、セレクタ２５は、加算器２４の出力を選択する。
【００５５】
なお、ＳＩＺＥは、ＣＰＵ１０から供給され、メモリ・コントローラ２０の加算器２４におけるインクリメントの単位を指定する信号である。ハーフワード、フルワードの指定に応じて、加算器２４における、インクリメント単位は、２、４等、可変に設定される。なお、本実施例では、簡単のため、ＳＩＺＥは１固定とする。
【００５６】
したがって、クロックサイクル（２）において、加算器２４は、メモリへのアドレス出力ＭＡＤＤＲ（＝Ａａ）と１を加算した結果Ａａ＋１を出力する。セレクタ２５は、加算器２４の出力Ａａ＋１を選択し、次のクロックサイクル（３）のクロックＣＬＫの立ち上りエッジで、Ｄ型レジスタ２６は、Ａａ＋１をＭＡＤＤＲとして出力する。
【００５７】
クロックサイクル（３）では、転送制御信号ＴＲＡＮＳが、シーケンシャルサイクルＳｅｑを示し（Ｓｅｑ＝ＨＩＧＨレベル）、ＯＲ回路２１の出力ｉｎｃ＿ａｄｄｒはＨＩＧＨレベルとされる。そして、前のクロックサイクル（２）において、加算器２４でインクリメントしたアドレスＡａ＋１が、Ｄ型レジスタ２６より、メモリ３０へのアドレス出力ＭＡＤＤＲとして出力される。またクロックサイクル（３）では、該アドレスＡａ＋１で読み出されたリードデータＤａ＋１がＭＤＩＮに出力され、次のクロックサイクル（４）にて、リードデータバスＲＤＡＴＡよりデータＤａ＋１がＣＰＵ１０に供給される。なお、クロックサイクル（２）において、ｐｏｓｔ＿ｉｎｃ＿ａｄｄｒはＬＯＷレベルであるため、ＮＡＮＤ回路２３の出力はＨＩＧＨレベルとされ、クロックサイクル（３）において、ＲＤＹ信号はＨＩＧＨレベルとされる。また、クロックサイクル（３）では、ｉｎｃ＿ａｄｄｒがＨＩＧＨレベルであり、セレクタ２５は、加算器２４の出力を選択する。加算器２４は、メモリ３０へのアドレス出力ＭＡＤＤＲＲ（＝Ａａ＋１）とＳＩＺＥ（＝１）の加算結果Ａａ＋２を出力する。そして、次のクロックサイクル（４）のクロックＣＬＫの立ち上りエッジで、Ｄ型レジスタ２６は、Ａａ＋２をＭＡＤＤＲとして出力する。
【００５８】
クロックサイクル（４）では、転送制御信号ＴＲＡＮＳがノンシーケンシャルサイクルＮｏｎＳｅｑ（ＮｏｎＳｅｑ＝ＨＩＧＨレベル）を示し、ＣＰＵ１０からのアドレスＡｂがクロックサイクル（５）のクロック信号ＣＬＫの立ち上りエッジでメモリ３０へのアドレス出力ＭＡＤＤＲとして出力される。
【００５９】
またクロックサイクル（４）において、ＳｅｑはＬＯＷレベルであり、クロックサイクル（３）のＲＤＹ信号がＨＩＧＨレベルであることから、Ｄ型フリップフロップ２２−１の出力はＨＩＧＨレベルとなり、ＯＲ回路２１の出力ｉｎｃ＿ａｄｄｒがＬＯＷレベルとなる。セレクタ２５は、ｉｎｃ＿ａｄｄｒがＬＯＷレベルであるため、ＣＰＵ１０からのＡＤＤＲ（＝Ａｂ）を選択する。次のクロックサイクル（５）のクロックの立ち上りエッジで、Ｄ型レジスタ２６は、アドレスＡｂをＭＡＤＤＲとして出力する。
【００６０】
クロックサイクル（４）において、ＮｏｎＳｅｑはＨＩＧＨレベル、ＲＤＹ信号はＨＩＧＨレベル、ｐｏｓｔ＿ｉｎｃ＿ａｄｄｒはいずれもＨＩＧＨレベルであるため、ＮＡＮＤ回路２３の出力はＬＯＷレベルとなり、クロックサイクル（５）のクロック信号ＣＬＫの立ち上りエッジに同期してＲＤＹ信号はＬｏｗレベルとなる。
【００６１】
なお、クロックサイクル（４）において、メモリ・コントローラ２０では、Ａａ＋１をインクリメントした連続アドレスＡａ＋２がＭＡＤＤＲとして出力され、連続アドレスＡａ＋２でメモリから読み出されたリードデータＤａ＋２がＭＤＩＮに出力される。
【００６２】
クロックサイクル（５）の立ち上りエッジに同期して、メモリ・コントローラ２０からＣＰＵ１０に、リードデータバスＲＤＡＴＡよりデータＤａ＋２が供給される。しかしながら、上記したように、クロックサイクル（５）において、ＲＤＹ信号は非活性状態（ＬＯＷレベル）に設定されており、このため（バスサイクルが完了していないため）、ＣＰＵ１０はリードデータバスＲＤＡＴＡ上のデータＤａ＋２を取り込まない。かかる構成により、メモリ・コントローラ２０側で予め作成したシーケンシャルサイクルＡａ＋２に対応するリードデータの実質的な無効化が行われる。
【００６３】
また、クロックサイクル（５）では、前のクロックサイクル（４）でＣＰＵ１０からメモリ・コントローラ２０に出力されたアドレスＡｂがＭＡＤＤＲとしてメモリ３０に出力され、アドレスＡｂに対応してメモリからリードされたデータＤｂが、メモリ・コントローラに出力される（ＲＤＡＴＡにはデータＤａが出力されている）。クロックサイクル（５）においてＲＤＹ信号は非活性状態とされ、当該バスサイクルは、１クロックサイクル延長される。
【００６４】
クロックサイクル（６）では、転送制御信号ＴＲＡＮＳがノンシーケンシャルサイクルＮｏｎＳｅｑ（ＮｏｎＳｅｑ＝ＨＩＧＨレベル）を示し、アドレスＡＤＤＲのままである。
【００６５】
なお、クロックサイクル（５）において、ＲＤＹ信号はＬＯＷレベルであるため、ＮＡＮＤ回路２３の出力はＨＩＧＨレベルとされ、クロックサイクル（６）のクロック信号の立ち上りエッジでＤ型フリップフロップ２２−３の出力であるＲＤＹ信号はＨＩＧＨレベルとなる。
【００６６】
また、クロックサイクル（６）では、クロックサイクル（５）でＣＰＵ１０から受け取ったアドレスＡｃがメモリ３０へのアドレス出力ＭＡＤＤＲとして出力され、アドレスＡｃでメモリ３０から読み出されたリードデータＤｃがＭＤＩＮに出力される。また、前のクロックサイクル（５）において、メモリ３０よりメモリ・コントローラ２０に供給されたデータＤｂが、ＲＤＡＴＡよりＣＰＵ１０に出力される。このとき、ＲＤＹ信号はＨＩＧＨレベルであるため、ＲＤＡＴＡ上のデータＤｂはＣＰＵ１０に取り込まれる。
【００６７】
次のクロックサイクル（７）では、転送制御信号ＴＲＡＮＳがノンシーケンシャルサイクルＮｏｎＳｅｑ（ＮｏｎＳｅｑ＝ＨＩＧＨレベル）を示し、ＣＰＵ１０からアドレスＡｄがメモリ・コントローラ２０に出力される。Ａｄは次のクロックサイクル（８）のクロックの立ち上りエッジでメモリ３０へのアドレス出力ＭＡＤＤＲとして出力される。
【００６８】
クロックサイクル（７）では、前のクロックサイクル（６）のアドレスＡｃを１つインクリメントしたアドレスＡｃ＋１がメモリ３０へのアドレス出力ＭＡＤＤＲとして出力され、アドレスＡｃ＋１でメモリ３０から読み出されたリードデータＤｃ＋１がＭＤＩＮに出力される。なお、クロックサイクル（７）では、前のサイクル（６）において、メモリ３０よりメモリ・コントローラ２０に供給されたデータＤｃがＲＤＡＴＡよりＣＰＵ１０に出力される。クロックサイクル（６）において、ＲＤＹ信号はＨＩＧＨレベル、ＮｏｎＳｅｑはＨＩＧＨレベル、ｐｏｓｔ＿ｉｎｃ＿ａｄｄｒはＨＩＧＨレベルであるため、ＮＡＮＤ回路２３の出力はＨＩＧＨレベルとされ、クロックサイクル（７）においても、ＲＤＹ信号はＨＩＧＨレベルとされる。このため、データＤｃはＣＰＵ１０に取り込まれる。なお、クロックサイクル（６）でＲＤＹ信号はＨＩＧＨレベルであり、クロックサイクル（７）でＳｅｑはＬＯＷレベルであるため、クロックサイクル（７）においてｉｎｃ＿ａｄｄｒはＬＯＷレベルとされる。
【００６９】
クロックサイクル（８）では、転送制御信号ＴＲＡＮＳがシーケンシャルサイクルＳｅｑ（NｏｎＳｅｑ＝ＨＩＧＨレベル）を示し、ＣＰＵ１０から前サイクルのアドレスＡｄをインクリメントしたアドレスＡｄ＋１が、メモリ・コントローラ２０に出力される。クロックサイクル（８）では、前のクロックサイクル（７）にＣＰＵ１０から供給されたアドレスＡｄがアドレス出力ＭＡＤＤＲとして出力される。このクロックサイクル（８）では、ｉｎｃ＿ａｄｄｒがＨＩＧＨレベルであるため、メモリ・コントローラ２０のセレクタ２５は、加算器２４の出力（＝Ａｄ＋１）を選択する。クロックサイクル（７）において、ＲＤＹ信号はＨＩＧＨレベル、ＮｏｎＳｅｑはＨＩＧＨレベル、ｐｏｓｔ＿ｉｎｃ＿ａｄｄｒはＨＩＧＨレベルであるため、ＮＡＮＤ回路２３の出力はＬＯＷレベルとなり、クロックサイクル（８）のクロック信号ＣＬＫの立ち上りエッジで、Ｄ型フリップフロップ２２−３の出力であるＲＤＹ信号はＬＯＷレベルとなる。
【００７０】
また、クロックサイクル（８）においては、アドレスＡｃ＋１でメモリ３０から読み出されたデータＤｃ＋１がメモリ・コントローラ２０からＲＤＡＴＡよりＣＰＵ１０に供給される。なお、クロックサイクル（８）では、ＲＤＹ信号はＬＯＷレベルであるため、ＲＤＡＴＡ上のデータＤｃ＋１はＣＰＵ１０に取り込まれず、無効化される。クロックサイクル（８）ではバスサイクルは完了せず、１クロックサイクル延ばされる。
【００７１】
クロックサイクル（９）は、クロックサイクル（８）のバスサイクルの延長であり、転送制御信号ＴＲＡＮＳは、クロックサイクル（８）と同じシーケンシャルサイクルＳｅｑを示し、またアドレスＡＤＤＲは、クロックサイクル（８）と同じＡｄ＋１のままである。メモリ・コントローラ２０では、ｉｎｃ＿ａｄｄｒがＨＩＧＨレベルであるため、セレクタ２５は、加算器２４の出力（＝Ａｄ＋２）を選択し、次のクロックサイクル（１０）では、Ａｄ＋２がメモリ３０へのアドレス出力ＭＡＤＤＲとして出力される。またクロックサイクル（８）ではＲＤＹ信号はＬＯＷレベルであるためＮＡＮＤ回路２３の出力はＨＩＧＨレベルとなり、クロックサイクル（９）のクロック信号ＣＬＫの立ち上りエッジで、Ｄ型フリップフロップ２２−３の出力であるＲＤＹ信号はＨＩＧＨレベルとなる。
【００７２】
クロックサイクル（９）では、アドレスＡｄ＋１でメモリ３０から読み出されたデータＤｄ＋１がメモリ・コントローラ２０からＲＤＡＴＡよりＣＰＵ１０に供給される。クロックサイクル（９）では、ＲＤＹ信号がＨＩＧＨレベルであるため、ＲＤＡＴＡ上のデータＤｄ＋１はＣＰＵ１０に取り込まれる。
【００７３】
クロックサイクル（１０）では、転送制御信号ＴＲＡＮＳがインターナルサイクルを示し、バスへのアクセスは行われない。
【００７４】
また、クロックサイクル（１１）において、チップセレクト信号ＭＣＳＺが非活性状態とされ、メモリ３０は非選択とされ、ＭＤＩＮは例えばＨＩＺ（ハイインピーダンス状態）とされる。
【００７５】
本実施例によれば、データの無効化が行われない場合のバスサイクルを最小単位の１クロックサイクルとし、ＲＤＹ信号の非活性化の制御によりデータの無効化を行うことで、ＣＰＵの仕様は何等変更することなく、メモリアクセスを高速化を実現している。
【００７６】
なお、上記実施例では、上記非特許文献１の仕様に基づく構成に即して説明したが、本発明は、上記実施例の構成にのみに制限されるものでなく、本発明の範囲内で当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【図面の簡単な説明】
【００７７】
【図１】本発明の一実施例の動作の一例を示すタイミング図である。
【図２】本発明の一実施例の構成を示す図である。
【図３】本発明の一実施例のメモリ・コントローラとＣＰＵ、メモリの接続構成の概略を示す図である。
【図４】従来の装置の動作の一例を示すタイミング図である。
【図５】特許文献１の構成を示す図である。
【図６】図４の装置の動作の一例を示すタイミング図である。
【符号の説明】
【００７８】
３、６  バス
１０  ＣＰＵ
２０  メモリ・コントローラ
２１  論理回路（２入力ＯＲ回路）
２２−１、２２−２、２２−３  Ｄ型フリップフロップ
２３  論理回路（３入力ＮＡＮＤ回路）
２４  加算器
２５  セレクタ
２６  Ｄ型レジスタ
３０  メモリ
５２  アドレスカウンタ
５３  アドレスコンパレータ
５４  カウンタメモリ・コントローラ
５５  アドレスセレクトドライバ
５１  リクエストバッファ
５６  レスポンスバッファ
５７  リスポンスドライバ
【図１】
2007094835.tif 000003
【図２】
2007094835.tif 000004
【図３】
2007094835.tif 000005
【図４】
2007094835.tif 000006
【図５】
2007094835.tif 000007
【図６】
2007094835.tif 000008