(57)【要約】半導体データプロセッサは、キャッシュメモリを構成する第１メモリ（６）と、前記第１メモリによるキャッシュの対象とされ又はキャッシュの非対象とされることが可能な第２メモリ（２０）と、前記第２メモリが前記キャッシュ非対象としてリードアクセスされるときそのアクセスに応ずるデータの出力動作可能にされるリードバッファ（１２）とを有する。シーケンシャルアクセスはキャッシュメモリによるアクセス高速化を期待し難い。キャッシュ非対象とされる第２メモリをシーケンシャルアクセスするとき、リードバッファからシーケンシャルアクセスに応答するデータを出力することにより、シーケンシャルリードアクセスを高速化することができる。このシーケンシャルアクセスに際して第１メモリのキャッシュ動作は行なわれず、再アクセスの可能性の低いシーケンシャルアクセスデータによって第１メモリに保有されているキャッシュエントリデータが不所望に書換えられることも無い。
2004031963.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリを構成する第１メモリと、前記第１メモリによるキャッシュの対象とされ又はキャッシュの非対象とされることが可能な第２メモリと、前記第２メモリが前記キャッシュ非対象としてリードアクセスされるときそのアクセスに応ずるデータの出力動作可能にされるリードバッファと、を有することを特徴とする半導体データプロセッサ。
【請求項２】
前記リードバッファは前記キャッシュ非対象として前記第２メモリがアクセスされたとき所定のアクセスデータとアドレスを一時的に保持することを特徴とする請求の範囲第１項記載の半導体データプロセッサ。
【請求項３】
前記リードバッファはリード要求の上流側から第１バスに接続され、リード要求下流側から第２バスに接続され、前記第２バスは第１バスによる並列アクセスデータビット数以上の並列ビット数でデータを伝達可能なバスであることを特徴とする請求の範囲第２項記載の半導体データプロセッサ。
【請求項４】
前記リードバッファは、前記第１メモリから前記第２バスを経由して伝達されるリードデータを保持するデータレジスタと、そのデータのアドレスを保持するアドレスレジスタと、アドレスレジスタに保持されたアドレスに一致するアドレスのリード要求に対して前記データレジスタのデータを第１バスに出力させる制御回路とを有することを特徴とする請求の範囲第３項記載の半導体データプロセッサ。
【請求項５】
前記第１バス及び第２バスはシーケンシャルアクセス専用バスとされる請求項１記載の半導体データプロセッサ。
【請求項６】
前記キャッシュ対象として前記第２メモリをアクセスするとき第１及び第２バスによる径路と異なる径路で前記第１メモリを第２メモリに接続可能にする第３バスを有することを特徴とする請求の範囲第５項記載の半導体データプロセッサ。
【請求項７】
前記第３バスに、周辺バスインタフェースコントローラ接続されることを特徴とする請求項６記載の半導体データプロセッサ。
【請求項８】
前記第２バスと第３バスに接続され、前記第２メモリに対するアクセスインタフェース制御を行う内部メモリコントローラを有することを特徴とする請求の範囲第６項記載の半導体データプロセッサ。
【請求項９】
前記第３バスに、前記第２メモリを前記第１メモリに対する２次キャッシュメモリとして制御する２次キャッシュメモリコントローラを有することを特徴とする請求の範囲第８項記載の半導体データプロセッサ。
【請求項１０】
前記２次キャッシュメモリコントローラは第１メモリのキャッシュ無効化を示す信号に応答して第２メモリをキャッシュ無効化することを特徴とする請求の範囲第９項記載の半導体データプロセッサ。
【請求項１１】
前記内部メモリコントローラと前記２次キャッシュメモリコントローラを排他的に動作可能に設定する制御レジスタを有することを特徴とする請求の範囲第９項記載の半導体データプロセッサ。
【請求項１２】
キャッシュメモリを構成する第１メモリと、前記第１メモリに対して２次キャッシュメモリ又はキャッシュメモリではないメモリとされることが可能な第２メモリと、前記第２メモリを２次キャッシュメモリ又はキャッシュメモリではないメモリの何れかに選択的に指定する指定手段と、を有することを特徴とする半導体データプロセッサ。
【請求項１３】
前記第２メモリを前記第１メモリの２次キャッシュメモリとしてアクセスインタフェース制御を行う２次キャッシュメモリコントローラを有することを特徴とする請求の範囲第１２項記載の半導体データプロセッサ。
【請求項１４】
前記第２メモリに対しキャッシュメモリではないメモリとしてアクセスインタフェース制御を行う内部メモリコントローラを有することを特徴とする請求の範囲第１３項記載の半導体データプロセッサ。
【請求項１５】
前記指定手段はコントロールレジスタであることを特徴とする請求の範囲第１４項記載の半導体データプロセッサ。
【請求項１６】
キャッシュメモリではないメモリとされることが選択された第２メモリは第１メモリによるキャッシュの対象とされ又はキャッシュの非対象とされることが可能であることを特徴とする請求の範囲第１５項記載の半導体データプロセッサ。
【請求項１７】
前記キャッシュ非対象として前記第２メモリがリードアクセスされるときそのアクセスに応ずるデータの出力動作可能にされるリードバッファを有することを特徴とする請求の範囲第１６項記載の半導体データプロセッサ。
【請求項１８】
前記リードバッファは前記キャッシュ非対象として前記第２メモリがアクセスされるときそのアクセスに応ずるデータを保有していないとき当該アクセスに応ずるデータとアドレスを新たに保持することを特徴とする請求の範囲第１７項記載の半導体データプロセッサ。
【請求項１９】
前記リードバッファはリード要求の上流側から第１バスに接続され、リード要求下流側から前記第１バスよりもバス幅の広い第２バスに接続されることを特徴とする請求の範囲第１８項記載の半導体データプロセッサ。
【発明の詳細な説明】
【技術分野】  本発明は、オンチップメモリを有するデータプロセッサ、特にそのオンチップメモリのアクセス制御に関し、例えばシングルチップのマイクロコンピュータに適用して有効な技術に関する。
【背景技術】  データプロセッサにおいて、高速なメモリを内蔵することによって性能向上を達成することが行われている。例えば、データプロセッサ内蔵の高速メモリを、外部メモリと同様にＣＰＵ（中央処理装置）のアドレス空間に配置して使用することが挙げられる。また、内蔵メモリをキャッシュメモリとして利用し、キャッシュシステムを構成することによって、メモリアクセスを高速化することも行われている。前者の例として特開平５−３０７４８５号公報があり、後者の例として特開平６−１０３０６４号公報がある。
前者の例では、データプロセッサにメモリを内蔵するだけでは性能向上は得られず、動作するプログラムにおいて頻繁に参照されるメモリ領域を予め調査して、その部分をデータプロセッサ内蔵メモリに割り付けることが必要である。要するにデータプロセッサで実行する動作プログラムに応じた内蔵メモリのアドレスマッピングの仕方がデータ処理性能に大きく影響する。
また、後者の例ではプログラムからのメモリアクセスの度に、メモリ領域のアクセス頻度を自動的に判断してキャッシュメモリに格納するため、頻繁に参照されるメモリ領域を予め調査する必要はないが、アクセス頻度を判定するアルゴリズムに応じて、性能向上が得られないアクセスパターンが存在する。即ち、キャッシュメモリは同じデータが複数回アクセスされる場合にメモリアクセス性能を向上させることができ、直列的に順次走査されるような画像データ等に対してはメモリアクセス性能を逆に低下させる場合がある。例えば、一般的なアルゴリズムでは、あるメモリ領域を開始アドレスから終了アドレスまで１回ずつ、シーケンシャルにメモリアクセス（シーケンシャルアクセス）するプログラムと、様々なアドレスをランダムにアクセス（ランダムアクセス）するプログラムを、時分割にて擬似的に同時に実行する状況においては、性能向上が得られないことがある。
本発明の目的は、内蔵メモリに対するアクセス性能を向上させることが容易な半導体データプロセッサを提供することにある。
本発明の別の目的は、内蔵メモリに対するランダムアクセスの性能を低下させることなくシーケンシャルアクセスを効率化することができる半導体データプロセッサを提供することにある。
本発明の更に別の目的は、内蔵メモリに対するシーケンシャルアクセスとランダムアクセスの双方に対してアクセス性能を向上させることが容易な半導体データプロセッサを提供することにある。
本発明の上記並びにその他の目的と新規な特徴は本明細書の以下の記述と添付図面から明らかにされるであろう。
【発明の開示】
〔１〕半導体データプロセッサは、キャッシュメモリを構成する第１メモリと、前記第１メモリによるキャッシュの対象とされ又はキャッシュの非対象とされることが可能な第２メモリと、前記第２メモリが前記キャッシュ非対象としてリードアクセスされるときそのアクセスに応ずるデータの出力動作可能にされるリードバッファとを有する。第２メモリに対するキャッシュ対象とキャッシュ非対象の指定は第２メモリがマッピングされるメモリ空間に対するキャッシュ対象又は非対象の指定によって決められる。その指定は例えばデータプロセッサの動作モードにより、或いはコントロールレジスタに対する設定で行うようにしてよい。
シーケンシャルアクセスのようにキャッシュメモリによるアクセス高速化の効果を期待し難い利用形態を想定する。キャッシュ非対象とされる第２メモリをシーケンシャルアクセスするとき、リードバッファからシーケンシャルアクセスに応答するデータを出力することにより、シーケンシャルリードアクセスを高速化することができる。上記シーケンシャルアクセスに際して第１メモリのキャッシュ動作は行なわれず、再アクセスの可能性の低いシーケンシャルアクセスデータによって第１メモリに保有されているキャッシュエントリデータが不所望に書換えられ若しくはリプレースされることもない。これにより、内蔵メモリに対するランダムアクセスの性能を低下させることなくシーケンシャルアクセスを効率化することができる。
本発明の一つの望ましい態様として、前記リードバッファは前記キャッシュ非対象として前記第２メモリがアクセスされたとき所定の当該アクセスデータとアドレスを一時的に保持する。例えば、前記第２メモリがアクセスされたときリードバッファがそのアクセスに応ずるデータを保有していないとき当該アクセスに応ずるデータとアドレスを新たに保持する。保持したデータが第２メモリのリードアクセスに代えてリードバッファから出力されるデータになる。要するに、リードバッファは直前のメモリアクセスの内容を含むデータを保持するように動作され、保持するデータと同じデータのアクセスを検出したときはこれに応答して、既に保持するデータを第２メモリのアクセスに代えて出力する。
本発明の一つの望ましい態様として、前記リードバッファはリード要求の上流側から第１バスに接続され、リード要求下流側から第２バスに接続される。第２バスは第１バスによる並列アクセスデータビット数以上の並列ビット数でデータを伝達可能なバスである。シーケンシャルアクセスされるデータを第２バスを経由してまとめてリードバッファに蓄えることができる。リードバッファは蓄えたデータを第２メモリへの何回分かのリードアクセスに応答して出力することができる。
本発明の一つの望ましい態様として、前記リードバッファは、前記第１メモリから前記第２バスを経由して伝達されるリードデータを保持するデータレジスタと、そのデータのアドレスを保持するアドレスレジスタと、アドレスレジスタに保持されたアドレスに一致するアドレスのリード要求に対して前記データレジスタのデータを第１バスに出力させる制御回路とを有する。
本発明の一つの望ましい態様として、前記第１バス及び第２バスはシーケンシャルアクセス専用バスとされる。また、前記キャッシュ対象として前記第２メモリをアクセスするとき第１及び第２バスによる径路と異なる径路で前記第１メモリを第２メモリに接続可能にする第３バスを有する。周辺バスインタフェースコントローラがある時はこれを前記第３バスに接続する。シーケンシャルアクセス専用バスとして専用化される第２バスに対するインタフェース制御は専用化されるが故にインタフェース制御がシンプルで高速アクセスに好都合である。
本発明の一つの望ましい態様として、前記第２バスと第３バスに接続され、前記第２メモリに対するアクセスインタフェース制御を行う内部メモリコントローラを有する。また、前記第３バスに、前記第２メモリを前記第１メモリに対する２次キャッシュメモリとして制御する２次キャッシュメモリコントローラを有する。前記２次キャッシュメモリコントローラは第１メモリのキャッシュ無効化を示す信号に応答して第２メモリをキャッシュ無効化する。１次キャッシュと２次キャッシュの記憶情報の整合を採るのに便利である。第２メモリに対する利用形態よりすれば前記内部メモリコントローラと前記２次キャッシュメモリコントローラは排他的に動作可能にされればよく、これを制御レジスタで設定するようにすればよい。
〔２〕半導体データプロセッサは、キャッシュメモリを構成する第１メモリと、前記第１メモリに対して２次キャッシュメモリ又はキャッシュメモリではないメモリとされることが可能な第２メモリと、前記第２メモリを２次キャッシュメモリ又はキャッシュメモリではないメモリの何れかに選択的に指定する指定手段とを有する。上記した手段によれば、第２メモリを２次キャッシュメモリとして用いるのがデータ処理上望ましいとされる場合、或いは第２メモリをＣＰＵのアドレス空間に配置されたメモリとして用いるのがデータ処理上望ましいとされる場合、の何れに対しても適切に対応することが可能である。したがって、データプロセッサによるデータ処理形態に応じて内蔵第２メモリに対するアクセス性能を向上させることが容易である。
本発明の一つの望ましい態様として、前記第２メモリを前記第１メモリの２次キャッシュメモリとしてアクセスインタフェース制御を行う２次キャッシュメモリコントローラを有する。また、前記第２メモリに対しキャッシュメモリではないメモリとしてアクセスインタフェース制御を行う内部メモリコントローラを有する。キャッシュメモリではないメモリとされることが選択された第２メモリは第１メモリによるキャッシュの対象とされ又はキャッシュの非対象とされることが可能であってよい。前記キャッシュ非対象として前記第２メモリがリードアクセスされるときそのアクセスに応ずるデータの出力動作可能にされるリードバッファを有してよい。
【図面の簡単な説明】  第１図は本発明の一例に係るマイクロコンピュータを例示するブロック図である。
第２図はリードバッファの詳細を例示する論理回路図である。
第３図はリードバッファを利用しない場合或いはリードバッファがない場合にシーケンシャルアクセス用のインタフェースバスからデータをリードする場合を比較例として示すタイミングチャートである。
第４図はリードバッファを利用してシーケンシャルアクセス用のインタフェースバスからデータをリードする動作を示すタイミングチャートである。
第５図はマイクロコンピュータの別の例を示すブロック図である。
【発明を実施するための最良の形態】  第１図には本発明の一例に係るマイクロコンピュータが例示される。同図に示されるマイクロコンピュータ１は、単結晶シリコンのような１個の半導体基板（半導体チップ）に公知のＣＭＯＳ集積回路製造技術により形成される。
第１図ではプロセッサコアと内蔵メモリとの間のインタフェース部分が代表的に示される。プロセッサコア２は、例えばＣＰＵ（中央処理装置）３、ＦＰＵ（浮動小数点演算ユニット）４、１次キャッシュメモリコントローラ（Ｌ１ＣＣ）５、第１メモリとしての１次キャッシュメモリ（Ｌ１ＣＭ）６を有する。ＣＰＵ３は命令制御部と実行部から成る。前記命令制御部は、命令をフェッチし、フェッチした命令を解読して、制御信号を生成する。前記実行部は汎用レジスタや算術論理演算器等を有し、その動作が前記制御信号で生成され、フェッチしたオペランド等を用いた演算を行う。ＦＰＵ４は、特に制限されないが、ＣＰＵ３が浮動小数点命令をフェッチしたとき、ＣＰＵ３より浮動小数点演算コマンドを受け取り、ＣＰＵ３がアクセスした演算オペランドを受け取って、浮動小数点演算を行う。
前記１次キャッシュメモリ６は、特に制限されないが、セットアソシアティブ形態の連想メモリ構造を有する。１次キャッシュメモリコントローラ５は、キャッシュブルエリア（キャッシュ対象領域）のアクセスがあると、１次キャッシュメモリ６を連想検索し、キャッシュヒットであれば１次キャッシュメモリ６をアクセスし、キャッシュミスであれば後述する内部メモリ２０等の下位側のメモリアクセスを行って必要なデータや命令を取得し、１次キャッシュメモリ６に対するキャッシュフィル、必要な場合にはキャッシュエントリのリプレースを制御する。内部メモリ２０は例えばＳＲＡＭ（スタティック・ランダム・アクセス・メモリ）から成る。
下位側のメモリアクセス等に用いる経路として、１次キャッシュメモリコントローラ５には第１バスとしてのシーケンシャルアクセス用インターフェースバス１１、第３バスとしてのランダムアクセス用インターフェースバス１０が接続される。シーケンシャルアクセス用インターフェースバス１１はリードバッファ１２の一方のアクセスポートに接続され、リードバッファ１２の他方のアクセスポートは第２バスとしてのインタフェースバス１３に接続される。インタフェースバス１０、１１、１３はアドレス、データ、及びアクセス制御信号の信号線を含む。インタフェースバス１３の並列アクセスデータビット数はインタフェースバス１１の並列アクセスデータビット数以上とされる。例えばインタフェースバス１３の並列アクセスデータビット数は２５６ビット、インタフェースバス１１の並列アクセスデータビット数は６４ビットである。インタフェースバス１０の並列アクセスデータビット数は６４ビットである。
前記リードバッファ１２は、インターフェースバス１１からのアクセス要求がリード、かつアクセス要求アドレスがリードバッファ１２内に格納されているアドレスと一致する場合に、リードバッファ１２が保有するデータを１次キャッシュメモリコントローラ５に伝える。リード、かつアドレスが一致しない場合は、アクセス要求のデータ幅を置き換えて、例えば６４ビットから２５６ビットに置き換えて、インタフェースバス１３にインターフェース要求を発行する。また、ライトアクセスの場合はインターフェースバス１１から伝達されるアクセス要求をそのままインターフェースバス１３にインタフェース要求として出力する。
インターフェースバス１３からのアクセス要求は内部メモリコントローラ（ＲＡＭＣ）１４に伝達される。インターフェースバス１０からのアクセス要求は周辺バスインタフェースコントローラ（ＰＢＩＣ）１５に伝達され、そこから、周辺バス２３を介して単数又は複数の周辺回路２４に、第３バスとしてのインタフェースバス１６を介して前記内部メモリコントローラ１４に伝えられ、また、２次キャッシュメモリコントローラ２１にも伝えられる。
内部メモリコントローラ１４は前記内部メモリ２０に対するアクセスインタフェース制御を行う。２次キャッシュメモリコントローラ２１は前記内部メモリ２０をキャッシュメモリ６に対する２次キャッシュメモリとして制御する。
周辺バスインタフェースコントローラ１６は、周辺回路２４及び内部メモリ２０に対するアドレスマッピングの情報を有し、インタフェースバス１０からのアクセス要求が周辺回路に対するものであれば周辺バス２３にアクセス要求を出力し、内部メモリ２０に対するものであればインタフェースバス１５にアクセス要求を出力する。周辺回路２４にはＤＭＡＣ（ダイレクト・メモリ・アクセス・コントローラ）等のバスマスタモジュール、或いはタイマ・カウンタ、シリアルインタフェースなどのバススレーブモジュールを含むことがある。
内部メモリコントローラ１４は、インターフェースバス１３からのアクセス要求とインターフェースバス１６からのアクセス要求とを調停し、バス１７に内部メモリ２０に対するアクセス制御信号を出力する。インタフェースバス１３からのアクセス要求は前記内部メモリ２０を１次キャッシュメモリ６によるキャッシュ非対象としてアクセスするときのアクセス要求である。これに対し１０，１６を介するアクセス要求は前記内部メモリ２０を１次キャッシュメモリ６によるキャッシュ対象としてアクセスするときのアクセス要求である。内部メモリ２０に対するアクセス要求が１次キャッシュメモリ６のキャッシュ対象であるか否かは１次キャッシュメモリコントローラ５がアクセスアドレスに基づいて判定する。内部メモリ２０に対するキャッシュ対象（キャッシャブル）とキャッシュ非対象（ノンキャッシャブル）の指定は内部メモリ２０がマッピングされるメモリ空間に対するキャッシュ対象又は非対象の指定によって決められる。その指定は例えばマイクロコンピュータ２１の動作モードにより、或いはコントロールレジスタ（図示せず）に対する設定で行なわれる。
また、２次キャッシュメモリコントローラ２１はインタフェースバス１６からのアクセス要求に応答して、当該アクセス要求に含まれるアクセスアドレスのアドレスタグを２次キャッシュメモリコントローラ２１内のキャッシュタグと比較し、キャッシュヒットであれば内部メモリ２０をキャッシュメモリとして操作するためのキャッシュエントリ操作のアクセス制御信号をバス１８に出力する。
バス１７からのアクセス制御信号とバス１８からのアクセス制御信号は、セレクタ１９によりどちらか一方が内部メモリ２０に伝達される。内部メモリ２０は伝達されたアクセス制御信号によってアクセスされる。内部メモリ２０に対するアクセス動作指示がリードアクセスである場合、内部メモリ２０はその読み出しデータをバス２６に出力し、内部メモリコントローラ１４又は２次キャッシュメモリコントローラ２１に伝達する。ライト動作の場合には書き込みデータが内部メモリコントローラ１４又は２次キャッシュメモリコントローラ２１からバス２６を介してメモリ２０に与えられる。尚、２次キャッシュメモリコントローラ２１からバス２６を介するメモリ２０への書き込み指示は、２次キャッシュメモリのリードミスに伴うキャッシュフィル、ライトミスに伴うキャッシュフィル動作等に際して指示される。
前記セレクタ１９による選択は、モード制御レジスタ２２の設定値に従ってに決定される。また、内部メモリコントローラ１４と、２次キャッシュメモリコントローラ２１も該レジスタ２２の設定値に従って動作のオン、オフが決まる。内部メモリコントローラ１４の動作が選択される（有効である）場合には、２次キャッシュメモリコントローラ２１は動作されず、内部メモリコントローラ１４の出力がセレクタ１９で選択される。逆に２次キャッシュメモリコントローラ２１が有効である場合には、内部メモリコントローラ１４は動作されず、２次キャッシュメモリコントローラ２１の出力がセレクタ１９で選択される。
内部メモリコントローラ１４はインタフェースバス１３又は１６にに、アクセス要求に応答する結果を出力する。また、２次キャッシュメモリコントローラ２１は、インタフェースバス１６に、アクセス要求に応答する結果を出力する。
１次キャッシュメモリコントローラ５は１次キャッシュメモリ６に対す一括無効化が行われたとき、２次キャッシュメモリコントローラ２１へのキャッシュエントリ一括無効化要求信号３０を出力する。この信号３０はＣＰＵ３が１次キャッシュメモリ６に対する一括無効化の操作命令を実行中にプログラムの指示によって生成される。一括無効化要求信号３０は周辺バスインタフェースコントローラ１５を介して、一括無効化要求信号３１として２次キャッシュメモリコントローラ２１に供給される。２次キャッシュメモリコントローラ２１は信号３１に応答して、２次キャッシュメモリコントローラ２１内に保有するキャッシュタグの全キャッシュエントリの有効ビットを無効化し、内部メモリ２０のキャッシュエントリのクリアを行う。
第２図には前記リードバッファ１２の詳細が例示される。４１〜４５はインタフェースバス１１を分割して示したものである。４１はアクセス要求の種別を示し、リード要求、ライト要求、もしくはアクセス要求がないこと（ＮＯＰ）を示す。４２はアクセス要求のデータ幅を示し、１バイト、２バイト、４バイト、８バイト、３２バイトの種類がある。４３はアクセス要求のアドレスであり、２２ビット幅である。４４はアクセス要求がリード要求である場合に、読み出しデータを返す信号であり、６４ビット幅（８バイト分）である。４５はアクセス要求がライトの時に、ライトデータを渡す信号である。４６および４７は、アドレス４３の上位１７ビット分のアドレス信号である。
また、４８〜５０と、４３及び４５を組み合わせたものが前記バス１３に対応される。４８は４１と、４９は４２と、５０は４４と同等である。
５１は２５６ビット幅のデータレジスタであり、前回のアクセスのデータを保持する。５２は１７ビット幅のアドレスレジスタであり、前回のアクセスのアドレスの上位１７ビット分を保持する。５３は、１ビットのレジスタであり、レジスタ５１およびレジスタ５２に保持されている内容が有効である場合は”１”を、無効である場合は”０”を保持する。
５４は比較器であり、信号４１がリード要求である場合に”１”を出力する。５５は比較器であり、信号４７とアドレスレジスタ５２に保持されている内容が一致する場合に”１”を出力する。５６はＮＡＮＤ（ナンド）ゲートである。ＮＡＮＤゲート５６の出力は、「信号４１がリード要求、かつ信号４７とレジスタ５２に保持されている内容が一致、かつレジスタ５３が有効を示す”１”である」場合に”０”となる。すなわち、ＮＡＮＤゲート５６の出力が”０”の場合は、リードバッファ１２のヒットを示す。５７は比較器であり、信号４１がライト要求である場合に”１”を出力する。
比較器５４の出力が”１”、すなわち信号４１がリード要求である場合、セレクタ６０によって、信号４９の出力は３２バイトのアクセス要求に置き換えられる。比較器５４の出力が”０”、すなわち信号４１がリード要求でない場合には、信号４２の入力がそのまま信号４９に出力される。
ＮＡＮＤゲート５６の出力が”０”、すなわちリードバッファ１２がヒットの場合、セレクタ６１によって、信号４８の出力はＮＯＰに置き換えられる。ＮＡＮＤゲート５６の出力が”１”の場合は、信号４１の出力がそのまま信号４８に出力される。
また、ＮＡＮＤゲート５６の出力が”０”の場合、セレクタ６２によって、レジスタ５１の出力がアライナ（ＡＬＧＮ）６３に入力される。ＮＡＮＤゲート５６の出力が”１”の場合は、信号５０の入力がアライナ６３に入力される。アライナ６３は、信号４２および信号４３の内容にしたがって、入力データのビット位置の並び替えを行って信号４４に出力する。
レジスタ５１およびレジスタ５２は、ＮＡＮＤゲート５６の出力が”１”の場合に、それぞれ信号５０、信号４６の内容を取り込む。５３の保持内容は、比較器５７の出力が”１”の場合には”０”に変化する。ライトの時もリードバッファミスの場合と同様にレジスタ５１及び５２にデータ及びアドレスを入力するからである。また、比較器５４の出力が”１”、かつＮＡＮＤゲート５６の出力が”１”の場合には、”１”に変化する。次のリード動作でレジスタ５２のアドレス比較結果に従ってレジスタ５１のデータを利用可能にするためである。
第３図はリードバッファ１２を利用しない場合或いはリードバッファ１２がない場合にシーケンシャルアクセス用のインタフェースバス１１からデータをリードする場合のタイミングチャートを比較例として示す。第４図はリードバッファ１２を利用してシーケンシャルアクセス用のインタフェースバス１１からデータをリードする場合のタイミングチャートを示す。
ここでは、リードバッファ１２とプロセッサコア２が同じ周波数で動作し、リードバッファ１２の動作周波数と、内部メモリ２０の動作周波数の比を２：１と想定し、プロセッサコア２からのシーケンシャルアクセスが８バイト（６４ビット）毎のリードが連続する動作を考えている。
第３図において３０１はプロセッサコア２のクロック信号、３０２は内部メモリ２０のクロック信号、３０３はプロセッサコア２からの信号４１，４２によるアクセス要求、３０４は内部メモリ２０からバス４４へのデータ出力、３０５は内部メモリ２０および内部メモリコントローラ１４の動作を示している。また、３１１〜３２０はプロセッサコア２のクロック周期を示している。
３２１はプロセッサコア２からの８バイトリード要求であり、内部メモリコントローラ１４はこの要求に対して３１２〜３１３の期間に、３２２に示すようにリード動作を行い、３１４の期間にリードデータである３２３を出力する。３３１〜３３３、３４１〜３４３、３５１〜３５３も、３２１〜３２３と同様の動作であり、３２１、３３１、３４１、３５１の８バイトリード要求はアドレスが連続している。この場合、最初のリード要求３２１から、最後のデータ出力３５３まで、プロセッサコア２のクロックで１０サイクルの動作期間が必要である。
第４図のリードバッファ１２を設けた場合のタイミングチャートにおいて、４０１、４０２、４０３は３０１、３０２、３０３と同様である。４０４はリードバッファのヒット信号であり、第２図のＮＡＮＤゲート５６の出力に相当する。４０５はリードバッファ１２からバス４４へのデータ出力であり、４０６は内部メモリ２０および内部メモリコントローラ１４の動作を示す。また、４１１〜４１７はプロセッサコア２のクロック周期を示している。
４２１はプロセッサコア２からの８バイトリード要求である。これに対応する内蔵メモリの動作は４２２であるが、この動作はリードバッファ１２にて要求の置き換えを行っており、８バイトリードではなく３２バイトリードである。４２３はプロセッサコア２へのデータ出力であり、４２２の動作終了後４１４の期間に行われる。また、４１４の期間に２回目の８バイトリード要求である４３１がプロセッサコア２から発行されるが、１回目のリード要求４２１の際に３２バイトリードを行っているため、リードバッファ１２にヒットし、４０４の信号（ＮＡＮＤゲート５６の出力信号）が“１”から“０”に変化する。４３１に対するデータ出力４３３は、期間４１５に行われる。３回目、４回目の８バイトリード要求である４４１、４５１に対してもリードバッファ１２がヒットするため、それぞれ期間４１６、４１７にデータ出力４４３、４５３が行われる。
第５図にはマイクロコンピュータの別の例が示される。第５図に示されるマイクロコンピュータ３３は、第１図の周辺バスインタフェースコントローラ１５が省略され、プロセッサコア２は第３バスとしてのインタフェースバス３４を介して直接前記内部メモリコントローラ１４と２次キャッシュメモリコントローラ２１に接続される。また、１次キャッシュメモリコントローラ５から出力される２次キャッシュメモリコントローラ２１への一括無効化要求を示す信号３０がそのまま２次キャッシュメモリコントローラ２１に供給される。その他の第１図と同じ構成にはそれと同一符号を付してその詳細な説明を省略する。
第１図と第５図の構成の相違について比較する。第１図の例では周辺バスインタフェースコントローラ１５は１次キャッシュメモリコントローラ５からのアクセス要求に対して、その要求先をアドレスから判定し、判定したアクセス要求先に対して必要なアクセス制御信号を出力する。或はＤＭＡＣ等のバスマスタモジュールを構成する周辺回路２４からのデータ転送要求に対しても同様にその要求先をアドレスから判定し、判定したアクセス要求先に対して必要なアクセス制御信号を出力する。したがって、インタフェースバス１０，１６は特定のメモリや周辺回路にに対する専用バスにはならない。これに対してインタフェースバス１１，１３はシーケンシャルアクセス専用バスとされる。したがって、メモリコントローラ１４経由で同じ内部メモリ２０をアクセスするためのアクセス径路をシーケンシャルアクセスとランダムアクセスで分けた構成を採用すれば、シーケンシャルアクセス用径路を専用化でき、特定のインタフェースプロトコルを実現すればよく、その他のメモリや周辺回路との汎用利用を考慮しなくてもよいよい分だけ、シーケンシャルアクセスのためのインタフェース動作の高速化を図るのに好都合である。第５図の構成ではインタフェースバス３４には周辺バスインタフェースコントローラ１５が配置されていないが、メモリコントローラ１４と２次キャッシュメモリコントローラ２１の双方に接続されるという意味で、双方の回路の入力容量の点でバス３４の駆動負荷が比較的大きくなる。周辺バスインタフェースコントローラ１５が配置されていない場合にも、その点で、シーケンシャルアクセスのためのバスをバス１１，１３によって専用化すりうことは、シーケンシャルアクセス動作の高速化を図るのに好都合である。
また、第１図の構成では、レジスタ２２の設定により内部メモリ２０を有効としている場合に、プロセッサコア２で実行中のプログラムが、シーケンシャルアクセス用のインターフェースバス１１，１３を通じて内部メモリ２０をアクセスしながら、周辺バス（プロセッサバス）２３側からの内部メモリアクセス要求もランダムアクセス用のインターフェースバス１６を通じて受け付けることができる。
以上説明したマイクロコンピュータによれば、画像データや音楽データなど、内部メモリ２０へのシーケンシャルアクセスが存在するプログラムでは、通常メモリモード（内部メモリコントローラ１４を有効にする動作モード）を用いる。特に、シーケンシャルアクセス用のリードバッファ１２による性能向上が期待できる。また、リードバッファ１２は回路量が少なく、内部メモリ２０よりも高い周波数での動作が期待できる。第１図に基づいて説明したように、リードバッファ１２とプロセッサコア２が同じ周波数で動作し、リードバッファ１２の動作周波数と、内部メモリ２０の動作周波数の比を２：１である場合には、リードバッファ１２が無い場合に最初のリード要求から最後のデータ出力まで、プロセッサコア２のクロックで１０サイクル必要であるのに対し、リードバッファ１２を設けた場合、７サイクルに短縮され、性能を向上できる。また、内部メモリ２０のアクセス回数も４回から１回に減少する。
上記シーケンシャルアクセスに際して１次キャッシュメモリ６のキャッシュ動作は行なわれず、再アクセスの可能性の低い画像データなどのシーケンシャルアクセスデータによって１次キャッシュメモリ６に保有されているキャッシュエントリデータ不所望に書換えられることも無い。
また、内部メモリの制御を通常メモリモードと２次キャッシュモード（２次キャッシュメモリコントローラ２１を有効にする動作モード）に切り替えることが可能であるから、プログラムの処理内容に応じて最適な形態で内部メモリ２０を活用することが可能になり、データ処理性能の向上に寄与する。メモリ２０へのランダムアクセスが多いプログラムでは、２次キャッシュモードを活用することにより、１次キャッシュミスのペナルティを減らすことができ、データ処理性能の向上に寄与する。
以上、本発明を具体的に説明したが、本発明はそれに限定されず、その要旨を逸脱しない範囲で種々の変形が可能である。例えば、プロセッサコアには論理アドレスを物理アドレスに変換するメモリ管理ユニットを設けてもよい。１次キャッシュメモリはデータと命令でそれぞれ別々に設けてもよい。その場合にリードバッファに接続されるのは専らデータキャッシュメモリに限定しても良い。また、１次キャッシュメモリコントローラ５から出力される２次キャッシュメモリコントローラ２１への一括無効化要求は個別信号で指示する場合に限定されずインタフェエースバスを介してコマンドで指示を与えるようにしてもよい。第１図及び第５図の例ではマイクロコンピュータの外部とインタフェースされる外部入出力回路について図示を省略してあるが、実際には外部入出力回路が設けられていることは言うまでも無い。
【産業上の利用可能性】  本発明は、マイクロコンピュータ、マイクロプロセッサ、更にはそれを利用する電子回路に広く適用することができる。
【図１】
2004031963.tif 000003
【図２】
2004031963.tif 000004
【図３】
2004031963.tif 000005
【図４】
2004031963.tif 000006
【図５】
2004031963.tif 000007
【手続補正書】
【提出日】平成15年2月14日(2003.2.14)
【手続補正００１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１
【補正方法】変更
【補正の内容】
【請求項１】キャッシュメモリを構成する第１メモリと、前記第１メモリによるキャッシュの対象又はキャッシュの非対象とされることが選択可能な第２メモリと、前記第２メモリが前記キャッシュ非対象としてリードアクセスされるとき、そのアクセスアドレスに応ずるデータを保有しているときは当該保有データの出力動作可能にされ、そのアクセスアドレスに応ずるデータを保有していないときは前記リードアクセスに並行して当該アクセスアドレスとその近傍のアドレスのデータを取り込んで保持することが可能にされるリードバッファと、を有することを特徴とする半導体データプロセッサ。


【手続補正００２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項２
【補正方法】変更
【補正の内容】
【請求項２】前記リードバッファは前記リードアクセスに並行してデータを取り込むとき当該データに応ずるアドレスも取り込んで保持し、保持したアドレスは前記第２メモリがキャッシュ非対象としてリードアクセスされるときそのリードアドレスと比較されて、当該リードアドレスに応ずるデータを保有しているか否かの判定に利用することを特徴とする請求の範囲第１項記載の半導体データプロセッサ。




【国際調査報告】
2004031963.tif 000008
2004031963.tif 000009
2004031963.tif 000010
2004031963.tif 000011