(57)【特許請求の範囲】
【請求項１】
複数のコマンドを独立に処理可能なプロセッサと、該プロセッサからのアクセス要求に応じて動作するキャッシュメモリを有するプロセッサシステムにおいて、
前記キャッシュメモリが複数のバンクを有するとともに複数個のポートを有し、該複数個のポートを介して前記プロセッサから送信される命令フェッチを含む複数の制御コマンド及び複数のアドレス信号を同時に処理することが可能であり、さらに、
前記キャッシュメモリは、前記キャッシュメモリのアドレス及びデータ書込みを制御するキャッシュ制御部と、前記キャッシュ制御部を制御する制御信号を生成する信号生成部と、前記信号生成部を制御するバンク制御フィールドを備えるキャッシュ制御レジスタとを有し、
前記信号生成部は、前記制御信号を、アドレスに設けた特定ビットの値に対応させ、かつ前記バンク制御フィールドに応じて出力し、
前記キャッシュ制御部は、前記制御信号及び前記アクセス要求に応じて前記キャッシュメモリのアドレス及びデータ書込みをそれぞれ制御するアドレス選択制御信号又は書き込みデータ選択制御信号を出力し、
前記キャッシュメモリは、前記アドレス選択制御信号又は書き込みデータ選択制御信号に応じて統合型キャッシュメモリとして機能するか、分離型キャッシュメモリとして機能するかが選択されることを特徴とするプロセッサシステム。
【請求項２】
命令フェッチとデータアクセスを独立に処理可能なプロセッサと、該プロセッサからのアクセス要求に呼応して動作するキャッシュメモリを有するプロセッサシステムにおいて、
前記キャッシュメモリを複数のセレクタ及び複数のアドレスの一部によって指定される複数バンクによって構成し、各バンクを１ポートキャッシュとし、前記命令フェッチ要求と前記データアクセス要求が異なるバンクに対するものであれば同時処理、同一バンクに対する場合は逐次処理し、さらに、
前記キャッシュメモリは、前記キャッシュメモリのアドレス及びデータ書込みを制御するキャッシュ制御部と、前記キャッシュ制御部を制御する制御信号を生成する信号生成部と、前記信号生成部を制御するバンク制御フィールドを備えるキャッシュ制御レジスタとを有し、
前記信号生成部は、前記制御信号を、アドレスに設けた特定ビットの値に対応させ、かつ前記バンク制御フィールドに応じて出力し、
前記キャッシュ制御部は、前記制御信号及び前記アクセス要求に応じて前記キャッシュメモリのアドレス及びデータ書込みをそれぞれ制御するアドレス選択制御信号又は書き込みデータ選択制御信号を出力し、
前記キャッシュメモリは、前記アドレス選択制御信号又は書き込みデータ選択制御信号に応じて統合型キャッシュメモリとして機能するか、分離型キャッシュメモリとして機能するかが選択されることを特徴とするプロセッサシステム。
【請求項３】
請求項１記載のプロセッサシステムにおいて、
前記複数の制御コマンドは、命令フェッチ要求とデータアクセス要求、或いは前記命令フェッチ要求、前記データアクセス要求及び外部アクセス要求の内の何れか１組から成り、前記複数のアドレス信号は、命令アドレス信号とデータアドレス信号、或いは前記命令アドレス信号、前記データアドレス信号及び外部アドレス信号の内の何れか１組から成ることを特徴とするプロセッサシステム。
【請求項４】
請求項３記載のプロセッサシステムにおいて、
前記キャッシュ制御部は前記命令フェッチ要求、前記データアクセス要求及び前記制御信号の入力に対し、前記制御信号に基づいて指定されたバンクに既に前記データアクセス要求が割り当てられた場合は、更なる割り当てを実行しないように遅延信号を生成し、前記制御信号に基づいて指定されたバンクに未だ前記データアクセス要求が割り当てられていない場合は、前記アドレス選択制御信号又は書き込みデータ選択制御信号を生成することを特徴とするプロセッサシステム。
【請求項５】
請求項３記載のプロセッサシステムにおいて、
さらに前記命令フェッチ要求、前記データアクセス要求及び前記外部アクセス要求並びに前記制御信号の入力により前記キャッシュ制御部にて生成される前記アドレス選択制御信号及び書き込みデータ選択制御信号の制御により、前記アドレス信号及び書き込みデータから複数のセレクタの各々を介して、複数のバンク内の異なるバンクに対しては同時に、同一バンクに対しては逐次的に、複数のアクセスアドレスを与えることを特徴とするプロセッサシステム。
【請求項６】
請求項５記載のプロセッサシステムにおいて、
さらに前記複数のバンクの各々において、前記複数のアクセスアドレスへの前記書き込みデータの書き込みまたは前記アクセスアドレスからのデータ読出しを、前記異なるバンクに対しては同時に、前記同一バンクに対しては逐次的に任意に行うことを特徴とするプロセッサシステム。
【請求項７】
請求項２記載のプロセッサシステムにおいて、
前記複数のアドレスの一部は、前記複数のアドレスの各々における特定のビットの事であり、前記キャッシュメモリ内の前記複数バンクの各々を指定する際に、前記特定のビットを用いることにより命令データ統合型のキャッシュメモリとして動作し、前記特定のビットの一部の代わりに所定の値を用いて生成する前記制御信号の入力に基づき、前記キャッシュメモリ内に有するキャッシュ制御部にて生成される複数のアドレス選択制御信号及び書き込みデータ選択制御信号の制御により前記複数のセレクタの各々を介して前記バンクを指定することにより、命令データ分離型キャッシュメモリとして動作することを特徴とするプロセッサシステム。
【請求項８】
請求項３から６のいずれかに記載のプロセッサシステムにおいて、
前記キャッシュメモリは更に外部からのアクセス要求である前記外部アクセス要求を処理するポートを有し、前記命令フェッチ要求、前記データアクセス要求、および前記外部アクセス要求のうち、少なくとも２つの要求を同時に処理することを特徴とするプロセッサシステム。
【請求項９】
複数のコマンドを独立に処理可能なプロセッサと、該プロセッサからのアクセス要求に応じて動作するキャッシュメモリを有するプロセッサシステムにおいて、
前記キャッシュメモリが複数個のポートを有し、該複数個のポートを介して前記プロセッサから送信される命令フェッチを含む複数の制御コマンド及び複数のアドレス信号を同時に処理することが可能であり、さらに、
前記複数の制御コマンドは、命令フェッチ要求及びデータアクセス要求から成り、前記複数のアドレス信号は命令アドレス信号及びデータアドレス信号から成り、前記キャッシュメモリはさらに前記キャッシュメモリを制御するキャッシュ制御部、前記キャッシュ制御部を制御する統合ビット及びウェイ選択フィールドを備えるキャッシュ制御レジスタ、複数個のウェイ、複数のセレクタ及びウェイ選択制御部を含み、
前記統合ビットは、前記キャッシュメモリが統合型か分離型かを区別するビットであり、
前記キャッシュメモリは、前記統合ビットに基づいて統合型キャッシュメモリとして機能するか、分離型キャッシュメモリとして機能するかが選択され、
前記ウェイ選択フィールドは、前記統合ビットの値により、前記複数個のウェイのそれぞれにおけるデータアクセス、命令アクセスに対する優先度を示す信号か、前記複数個のウェイのそれぞれをデータアクセス用、命令アクセス用として指定する信号かに切り替えられることを特徴とするプロセッサシステム。
【請求項１０】
請求項９記載のプロセッサシステムにおいて、
さらに前記命令フェッチ要求と前記データアクセス要求の入力により前記キャッシュ制御部にて生成されるアドレス選択制御信号及び書き込みデータ選択制御信号により、前記複数のアドレス信号及び書き込みデータから前記複数のセレクタの各々を介して、前記複数個のウェイ内の異なるウェイに対しては同時に、同一ウェイに対しては逐次的に、複数のアクセスアドレス又は前記書き込みデータを与えることを特徴とするプロセッサシステム。
【請求項１１】
請求項１０記載のプロセッサシステムにおいて、
さらに前記複数個のウェイの各々において、前記アクセスアドレスへの書き込みデータの書き込みまたは前記アクセスアドレスからのデータ読出しを前記異なるウェイに対しては同時に、前記同一ウェイに対しては逐次的に任意に行うことを特徴とするプロセッサシステム。
【請求項１２】
請求項９記載のプロセッサシステムにおいて、
前記複数個のウェイの各々に対して命令またはデータの内何れか１つのみをキャッシングすることにより、命令データ分離型キャッシュメモリとして動作することを特徴とするプロセッサシステム。
【請求項１３】
請求項１から１２のいずれかに記載のプロセッサシステムにおいて、
前記プロセッサおよび前記キャッシュメモリが同一チップ上に集積されていることを特徴とするプロセッサシステム。
【請求項１４】
複数のバンクを備え、該複数のバンクを制御するコントローラを有し、該コントローラは前記複数のバンクの各々に命令或いはデータの書き込み又は読み出しを行う為の制御信号を生成し、前記複数のバンク内の異なるバンクに対し前記命令或いはデータの書き込み或いは読み出し動作を同時に行うキャッシュメモリであって、
前記キャッシュメモリは、前記制御信号を生成するときに前記コントローラを制御するバンク制御フィールドを備えるキャッシュ制御レジスタを備え、
前記コントローラは、前記制御信号を、アドレスに設けた特定ビットの値に対応させ、かつ前記バンク制御フィールドに応じて出力し、さらに、前記制御信号及びアクセス要求に応じて前記キャッシュメモリのアドレス及びデータ書込みをそれぞれ制御するアドレス選択制御信号又は書き込みデータ選択制御信号を出力し、
前記キャッシュメモリは、前記アドレス選択制御信号又は書き込みデータ選択制御信号に応じて統合型キャッシュメモリとして機能するか、分離型キャッシュメモリとして機能するかが選択されることを特徴とするキャッシュメモリ。
【請求項１５】
請求項１４記載のキャッシュメモリにおいて、
さらに前記コントローラの制御により前記アドレス選択制御信号又は前記書き込みデータ選択制御信号を前記複数のバンクの各々に供給し、同一のバンクに対し、前記命令或いはデータの書き込み或いは読み出し動作を逐次に行うことを特徴とするキャッシュメモリ。
【請求項１６】
複数のウェイを備え、該複数のウェイを制御するコントローラを有し、該コントローラは前記複数のウェイの各々に命令或いはデータの書き込み又は読み出しを行う為の制御信号を生成し、前記コントローラの制御により該制御信号を前記複数のウェイに供給し、前記複数のウェイ内の異なるウェイに対し前記命令或いはデータの書き込み或いは読み出し動作を同時に行い、さらに前記コントローラの制御により前記制御信号を前記複数のウェイの各々に供給し、同一のウェイに対し、前記命令或いはデータの書き込み或いは読み出し動作を逐次に行うキャッシュメモリであって、
前記キャッシュメモリは、前記制御信号を生成するときに前記コントローラを制御する統合ビット及びウェイ選択フィールドを備えるキャッシュ制御レジスタを備え、
前記統合ビットは、前記キャッシュメモリが統合型か分離型かを区別するビットであり、
前記キャッシュメモリは、前記統合ビットに基づいて統合型キャッシュメモリとして機能するか、分離型キャッシュメモリとして機能するかが選択され、
前記ウェイ選択フィールドは、前記統合ビットの値により、前記複数個のウェイのそれぞれにおけるデータアクセス、命令アクセスに対する優先度を示す信号か、前記複数個のウェイのそれぞれをデータアクセス用、命令アクセス用として指定する信号かに切り替えられることを特徴とするキャッシュメモリ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はキャッシュメモリを有するプロセッサシステムに係わり、特に複数のコマンドを処理可能なプロセッサと該プロセッサからのアクセス要求に応じて動作しうるキャッシュメモリを有するプロセッサシステムに関する。更に、統合型および分離型の双方のキャッシュメモリシステムを同一アーキテクチャで実現することを可能にし、また、統合型キャッシュメモリシステムを分離型並に高速化することを可能にするものである。
【０００２】
【従来の技術】
図１にキャッシュメモリアーキテクチャの変遷の概略を示す。キャッシュメモリ導入以前は（１）のようにプロセッサＣＰＵとメインメモリＭＭは直接命令およびデータをやり取りしていた。その後、メインメモリＭＭの容量増大およびプロセッサＣＰＵの高速化によって、メインメモリＭＭの速度がプロセッサシステムの性能を律速するようになった。
【０００３】
そこで、（２）のようにメインメモリＭＭに比べて小容量かつ高速なのキャッシュメモリＵＣをプロセッサＣＰＵとメインメモリＭＭの間に配置して性能を向上させた。初期のキャッシュメモリＵＣは命令とデータの双方を扱う統合型であった。
【０００４】
その後、（３）のようにプロセスの微細化によってプロセッサＣＰＵとキャッシュメモリＵＣを同一チップ上に集積することが可能になった。これによってプロセッサＣＰＵとキャッシュメモリＵＣを結ぶ信号線数を大幅に増加させることが可能となり、（４）のように、キャッシュメモリＵＣを命令キャッシュＩＣとデータキャッシュＤＣに分離して同時アクセスを可能にした、ハーバードアーキテクチャが登場した。そして、高性能なキャッシュアーキテクチャはハーバードアーキテクチャであるということが常識となった。
【０００５】
その後、スーパスカラまたはＶＬＩＷ  （Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）  アーキテクチャが登場し、同時に複数のデータアクセスを行うことが可能となった。このため、（５）のようにデータキャッシュＤＣを複数ポート化したプロセッサが登場した。この複数ポート化はバンクインターリーブ方式によって異なるバンクへのアクセスのみ同時実行するのが一般的である。
【０００６】
また、統合型キャッシュメモリアーキテクチャがハーバードアーキテクチャより低コストであることから、同一のプロセッサファミリにおいて、ローエンド版は統合型、ハイエンド版はハーバードアーキテクチャという場合がある。例えば、「Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ｒｅｐｏｒｔ  Ｖｏｌ．９，  ｎｏ．３，３／６／９５，  ｐ．１２」記載のＳＨ−３と「Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ｒｅｐｏｒｔ  Ｖｏｌ．１０，  ｎｏ．１４，  １０／２８／９６，  ｐｐ．３２−３５」記載のＳＨ−４は同じＳｕｐｅｒＨ  シリーズのプロセッサであるが、前者は統合型、後者はハーバードアーキテクチャである。
【０００７】
近年、プロセッサに依存しないプログラミング言語としてＪＡＶＡが急速に普及しつつある。ＪＡＶＡは命令の書き換えを行う言語である。初回に実行した複雑な命令を、一度実行することによって確定した情報をもとに高速実行する命令に書き換える。更に、ＪＡＶＡで書かれたプログラムを高速実行するために、実行頻度の高いルーチンを検出してプロセッサ固有の機械語のプログラムに書き換えて高速実行する方式もＪＩＴ  （Ｊｕｓｔ−ｉｎ−ｔｉｍｅ）  コンパイル方式として一般化している。
【０００８】
キャッシュメモリによる性能向上はメモリアクセスの空間的時間的局所性を前提としている。したがって、該局所性がない場合は有効に働かない。例えば、「Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ｒｅｐｏｒｔ  Ｖｏｌ．１３，  ｎｏ．１２，９／１３／９９，  ｐｐ１，６−１０」記載のネットワークプロセッサＩＸＰ１２００はデータキャッシュを内蔵せず、外付けのＳＲＡＭやＳＤＲＡＭに直接アクセスする。また、「Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ｒｅｐｏｒｔ  Ｖｏｌ．１３，  ｎｏ．５，  ４／１９／９９，  ｐｐ１，６−１１」記載のエモーションエンジンＥＥのベクトル浮動小数点ユニットＶＰＵはキャッシュの代わりに専用のＲＡＭを持っている。そして、ソフトウェアによって制御されるダイレクトメモリアクセスユニットが該ＲＡＭへのデータアクセスを行う。
【０００９】
【発明が解決しようとする課題】
上記のようなキャッシュアーキテクチャの歴史的変遷の結果、性能を重視する場合はハーバードアーキテクチャ、コストを重視する場合は統合型キャッシュメモリアーキテクチャとすることが常識となっている。しかし、プロセス微細化に伴う集積度の向上により、統合型アーキテクチャとハーバードアーキテクチャのコストの差がチップ全体のコストに比べて小さくなってきており、２種類のキャッシュメモリアーキテクチャを製品別に作り分けるメリットがなくなってきている。
【００１０】
また、上記ＪＡＶＡのように命令の書き換えを行う言語が普及してくると、ハーバードアーキテクチャが必ずしも良いとは限らない。ハーバードアーキテクチャにおいては命令の書き換えをハードウェアで検出しないのが一般的である。このため、命令を書き換えた場合はソフトウェア責任で書き換え前の命令が実行されないことを保証しなければならない。命令書き換え時には、書き換えられる命令はデータとして扱われるため、書き換えた命令はデータキャッシュＤＣに格納される。この時、書き換え前の命令が命令キャッシュＩＣに存在しても更新されない。
【００１１】
ソフトウェアは、命令キャッシュＩＣ上の書き換え前命令をクリアし、データキャッシュＤＣ上の書き換え後、命令をメインメモリＭＭに書き戻してから、書き換え後の命令を実行する。すると、ハードウェアは書き換え後の命令をメインメモリＭＭからフェッチして実行する。尚、命令の書き換えをハードウェアで検出したとしても、上記ソフトウェア処理をハード化するだけなので効率的な処理は困難である。
【００１２】
一方、統合型キャッシュメモリアーキテクチャでは命令書き換えによってキャッシュメモリＵＣ上の命令が書き換えられる。したがって、命令書き換え後にキャッシュメモリＵＣから命令フェッチすれば書き換え後命令をフェッチすることが出来る。このためには、通常のパイプライン方式のプロセッサでは、命令書き換え後にパイプライン上に存在する実行中の命令をキャンセルするだけでよい。したがって、命令書き換えをサポートするには統合型キャッシュメモリアーキテクチャの方が適している。
【００１３】
プロセス微細化に伴う集積度の向上により、小規模システムではメインメモリＭＭをオンチップ化することが可能となってきている。また、上記エモーションエンジンＥＥのように命令またはデータをオンチップメモリに載せ、ダイレクトメモリアクセス等により、ソフトウェアであらかじめオンチップメモリに命令やデータを転送して、実際に使用する際に確実に高速アクセスすることも可能である。こうすることにより、使用する命令やデータが予測可能であれば、メモリアクセスに空間的時間的局所性がなくても高速化が可能である。このような状況では、キャッシュメモリが不要であったり、命令キャッシュとデータキャッシュのうち一方のみが必要であったりする。
【００１４】
更に、プロセッサシステムが、メインフレーム、ワークステーション、ＰＣ等に限定されていた時代から、携帯電話、デジタル家電、自動車といった多種多様な製品に搭載される時代となり、用途に応じてキャッシュメモリの最適な構成も多様化している。したがって、同一プロセッサで多様なキャッシュメモリ構成を取れることも重要になってきている。
【００１５】
本発明が解決しようとする第１の課題は、従来、ハーバードアーキテクチャでのみ達成可能であった命令フェッチとデータアクセスの同時実行を統合型キャッシュメモリアーキテクチャで達成することである。これによって、高性能と命令書き換えの容易性とを同時に達成することが可能となる。また、命令とデータの一方を重点的にキャッシングしたいアプリケーションの場合でも、ハーバードアーキテクチャのように一方のキャッシュが無駄になることなく、全容量を活用することが出来る。
【００１６】
本発明が解決しようとする第２の課題は、同一のプロセッサで統合型キャッシュメモリアーキテクチャとハーバードアーキテクチャの双方を実現することである。そして更に、同一プロセッサで多様なキャッシュメモリ構成を実現することである。
【００１７】
【課題を解決するための手段】
上記第１の課題は、統合型キャッシュメモリを複数ポート化することによって解決される。これによって命令フェッチとデータアクセス要求を同時に処理することが可能となり、ハーバードアーキテクチャと同等の性能が達成される。但し、純粋な複数ポート化はハードウェア量を増大させ、同一面積で実現できるキャッシュメモリ容量が小さくなってしまう。そこで、キャッシュメモリをアドレスの一部によって指定される複数バンクによって構成し、各バンクを１ポートキャッシュとし、命令フェッチとデータアクセス要求が異なるバンクに対するものであれば同時処理、同一バンクに対する場合は逐次処理することにより、完全な複数ポートキャッシュメモリよりも、ハードウェア量を削減し、キャッシュメモリ容量を維持することが出来る。プロセス微細化に伴ってキャッシュメモリの大容量化が可能となっているが、大容量化にはメモリマットの分割が必要であり、分割されたメモリマットをバンクに割当てれば、バンク分割に伴うコストの増大は回避できる。
【００１８】
上記第２の課題は、上記ポートまたはバンクの指定にアドレスの一部だけでなく命令フェッチとデータアクセス要求の識別信号も用いることによって解決される。統合型キャッシュメモリアーキテクチャとして使用する場合はアドレスの一部を、ハーバードアーキテクチャとして使用する場合は識別信号を使用する。このようにポートまたはバンク指定に使用する信号を切替えることにより、２つのキャッシュメモリアーキテクチャを同一のプロセッサで実現する。更に、信号切替の仕方によってハーバードアーキテクチャの命令キャッシュとデータキャッシュの容量配分を変えることも可能である。また、複数ポート化を複数のウェイに対して異なるアドレスでアクセスできるようにすることによっても、同様に上記第１および第２の課題の解決が可能である。
【００１９】
さらに、上記課題を解決する為に、本発明は複数のコマンドを独立に処理可能なプロセッサと、該プロセッサからのアクセス要求に応じて動作するキャッシュメモリを有するプロセッサシステムにおいて、前記キャッシュメモリが複数個のポートを有し、該複数個のポートを介して前記プロセッサから送信される命令フェッチを含む複数の制御コマンド及び複数のアドレス信号を同時に処理しうることを特徴とするプロセッサシステムを提供することにある。
【００２０】
さらに、本発明は命令フェッチとデータアクセスを独立に処理可能なプロセッサと、該プロセッサからのアクセス要求に呼応して動作するキャッシュメモリを有するシステムにおいて、前記キャッシュメモリを複数のセレクタ及び複数のアドレスの一部によって指定される複数バンクによって構成し、各バンクを１ポートキャッシュとし、前記命令フェッチ要求と前記データアクセス要求が異なるバンクに対するものであれば同時処理、同一バンクに対する場合は逐次処理することを特徴とするプロセッサシステムを提供することにある。
【００２１】
さらに、本発明は複数のバンクを備え、該複数のバンクを制御するコントローラを有し、該コントローラは前記複数のバンクの各々に命令或いはデータの書き込み又は読み出しを行う為の制御信号を生成し、前記コントローラの制御により該制御信号を前記複数のバンクに供給し、前記複数のバンク内の異なるバンクに対し前記命令或いはデータの書き込み或いは読み出し動作を同時に行い、同一のバンクに対し、前記命令或いはデータの書き込み或いは読み出し動作を逐次に行うことを特徴とするキャッシュメモリを提供することにある。
【００２２】
【発明の実施の形態】
以下、本発明の各実施例を図を用いて説明する。各実施例の図における同一符号は同一物または相当物を示す。図２は本発明を適用したプロセッサシステムの例である。プロセッサＬＳＩおよびメインメモリＭＭから成る。プロセッサＬＳＩは中央処理装置ＣＰＵ、キャッシュメモリＣＭ、外部メモリインタフェイスＥＭＩ、および周辺モジュールＰＭから成り、内部バスＩＢで接続されている。中央処理装置ＣＰＵは命令フェッチユニットＩＦＵ、実行ユニットＥＸＵ、およびバスインタフェイスユニットＢＩＵから成る。又、当該プロセッサ及びキャッシュメモリＣＭは同一のＬＳＩチップ上に集積されている。
【００２３】
中央処理装置ＣＰＵの基本動作は以下の通りである。まず、命令フェッチユニットＩＦＵがキャッシュメモリＣＭに命令アドレスＡＩと共に命令フェッチ要求ＲＥＱＩを出す。キャッシュメモリＣＭは要求ＲＥＱＩに応じて読出した命令ＲＩを命令フェッチユニットＩＦＵに返す。命令フェッチユニットＩＦＵは命令ＲＩを実行ユニットＥＸＵに供給する。実行ユニットＥＸＵは命令ＲＩをデコードし実行する。デコードした命令がメモリ読出し命令の場合は、データアドレスＡＤと共にデータアクセス要求ＲＥＱＤを出す。キャッシュメモリＣＭは要求ＲＥＱＤに応じて読出したデータＲＤを実行ユニットＥＸＵに返す。また、デコードした命令がメモリ書込み命令の場合は、データアドレスＡＤおよび書込みデータＷＤと共にデータアクセス要求ＲＥＱＤを出す。キャッシュメモリＣＭは要求ＲＥＱＤに応じてデータＷＤを書込む。
【００２４】
命令フェッチ要求ＲＥＱＩまたはデータアクセス要求ＲＥＱＤがキャッシュミスした場合は、バスインタフェイスユニットＢＩＵが該要求に関連する命令アドレスＡＩ、データアドレスＡＤおよび書込みデータＷＤ等を受け取り、内部バスＩＢを経由して外部メモリインタフェイスＥＭＩに外部メモリフェッチ要求を出す。外部メモリインタフェイスＥＭＩは要求に応じてメインメモリＭＭにアドレスＡを出力して外部メモリフェッチ要求を出し、メインメモリＭＭはこれに呼応してデータＤを返す。外部メモリインタフェイスＥＭＩは内部バスＩＢを経由してデータＤをバスインタフェイスユニットＢＩＵに返す。バスインタフェイスユニットＢＩＵは、外部アドレスＡＸ、書込みデータＷＸと共に外部アクセス要求ＲＥＱＸを出し、キャッシュメモリＣＭは外部アクセス要求ＲＥＱＸ（外部からのアクセス要求である）を処理するポートを有し、要求ＲＥＱＸに応じて書込みデータＷＸを書込む。
【００２５】
中央処理装置ＣＰＵにおいてパイプライン動作が行われると、命令フェッチユニットＩＦＵは実行ユニットＥＸＵの命令処理と同時に後続命令のフェッチを行う。更に、実行ユニットＥＸＵのデータアクセスがノンブロッキングであると、キャッシュメモリＣＭのデータアクセスミスによる外部メモリアクセスと同時に後続命令によるデータアクセスが行われる。このため、キャッシュメモリＣＭには、命令フェッチ要求とデータアクセス要求、或いは命令フェッチ要求ＲＥＱＩ、データアクセス要求ＲＥＱＤ、および外部アクセス要求ＲＥＱＸの内の何れか１組から成る複数の制御コマンド、及び命令アドレス信号ＡＩとデータアドレス信号ＡＤ、或いは信号ＡＩ、信号ＡＤと外部アドレス信号ＡＸの内の何れか１組から成る複数のアドレス信号を同時に処理する能力が必要である。
【００２６】
図３は本発明を適用したキャッシュメモリＣＭの第１の実施例である。キャッシュメモリＣＭはキャッシュ制御レジスタＣＣＲ、バンク信号生成部ＢＫＧ（或いは信号生成部）、ＣＭを制御するキャッシュ制御部ＣＣ、およびキャッシュ本体から成る。ＢＫＧは複数のアドレス信号に基づき、ＣＣに与える複数の制御信号（ＢＫＩ，ＢＫＤ，ＢＫＸ）を生成する。
【００２７】
キャッシュメモリ本体は、複数のアドレス信号（ＡＩ，ＡＤ，及びＡＸ）の各々における該複数のアドレスの一部で有る特定のビットによって指定される４つのバンクＢＫ０〜ＢＫ３に分割されており異なるバンクへの同時アクセスが可能である。
【００２８】
キャッシュメモリ内の複数バンクの各々を指定する際に、上記特定のビットの代わりに命令フェッチ要求又はデータアクセス要求、及び上記複数の制御信号の入力に基づき、キャッシュメモリ内に有するキャッシュ制御部にて生成される複数のアドレス選択制御信号及び書き込みデータ選択制御信号の制御により複数のセレクタの各々を介してバンクを指定することにより、命令データ分離型キャッシュメモリとして動作する。
【００２９】
バンクＢＫ０〜ＢＫ３はそれぞれアクセスアドレスＡ０〜Ａ３、書込み時は更に書込みデータＷ０〜Ｗ３を受取って、読出しまたは書込み動作を行い、読出し時には読出しデータＲ０〜Ｒ３を出力する。バンクＢＫ０〜ＢＫ３の各々は１ポートキャッシュと見なされる。アクセスアドレスＡ０〜Ａ３はそれぞれアドレスマルチプレクサ（又はセレクタ）ＡＭ０〜ＡＭ３において、アドレス選択制御信号ＣＡ０〜ＣＡ３によって、アドレスＡＩ、ＡＤ、またはＡＸから選択される。書込みデータＷ０〜Ｗ３はそれぞれ書込みデータマルチプレクサ（又はセレクタ）ＷＭ０〜ＷＭ３において、書込みデータ選択制御信号ＣＷ０〜ＣＷ３によって、書込みデータＷＤまたはＷＸから選択される。読出しデータＲＩ、ＲＤ、およびＲＸはそれぞれ読出しデータマルチプレクサ（又はセレクタ）ＲＭＩ、ＲＭＤ、およびＲＭＸにおいて、読出しデータ選択制御信号ＣＲＩ、ＣＲＤ、およびＣＲＸによって、読出しデータＲ０〜Ｒ３から選択される。尚、図中の各マルチプレクサの入力信号に振られた番号は、その入力を選択する場合にアサートされる選択制御信号のビット番号である。
【００３０】
図４は第１の実施例のキャッシュ制御部ＣＣの詳細である。バンク信号生成部ＢＫＧからの命令バンクＢＫＩ、データバンクＢＫＤ、および外部バンクＢＫＸと、命令フェッチ要求ＲＥＱＩ、データアクセス要求ＲＥＱＤ、および外部アクセス要求ＲＥＱＸとから、キャッシュ本体の各マルチプレクサの制御信号を生成する。
【００３１】
詳細に説明すると、キャッシュ制御部は命令フェッチ要求、データアクセス要求及び複数の制御信号（ＢＫＩ，ＢＫＤ，ＢＫＸ）の入力に対し、制御信号に基づいて指定されたバンクに既にデータアクセス要求が割り当てられた場合は、更なる割り当てを実行しないように遅延信号を生成し、制御信号に基づいて指定されたバンクに未だデータアクセス要求が割り当てられていない場合は、複数のアドレス選択制御信号又は書き込みデータ選択制御信号を生成する。
【００３２】
図３の読出しデータ選択制御信号ＣＲＩ、ＣＲＤ、およびＣＲＸは４入力マルチプレクサを制御する４ビットの信号である。それぞれ２ビットの命令バンクＢＫＩ、データバンクＢＫＤ、および外部バンクＢＫＸを単純にデコードすれば生成できるので図示していない。
【００３３】
アドレス選択制御信号ＣＡ０〜ＣＡ３および書込みデータ選択制御信号ＣＷ０〜ＣＷ３は命令フェッチ、データアクセス、および外部アクセスの優先度を決定しなければ生成できない。最も単純な優先度決定方式はプログラム本来の逐次実行順序を守ることである。外部アクセスは先行するキャッシュアクセスのミスによって生じるので最も逐次実行順序が早い。また、命令フェッチは後続命令の準備であり最も逐次実行順序が遅い。したがって、優先度は第１が外部アクセス、第２がデータアクセス、第３が命令フェッチである。
【００３４】
しかしながら、高度に最適化されたプログラムでは命令やデータをプリフェッチ命令等によって事前にメインメモリＭＭからキャッシュメモリＣＭにキャッシングし、実際に使用する際にキャッシュミスが起こらないようにする。このようなプログラムでは外部アクセスの優先度を下げた方が性能は向上する。ジャストオンタイムでキャッシングするようにプログラムを最適化することは困難なので、少し余裕時間を見てキャッシングした場合、本来必要な時刻より早くキャッシングするので、これを待たせて内部動作をストールさせない方が良いからである。そこで、本実施例では優先度を第１がデータアクセス、第２が命令フェッチ、第３が外部アクセスとする。
【００３５】
図３に示すアクセスアドレスＡ０〜Ａ３はアドレスＡＩ、ＡＤ、またはＡＸから選択されるので、アドレスマルチプレクサＡＭ０〜ＡＭ３は３入力であり、制御信号ＣＡ０〜ＣＡ３は３ビットである。そこで、制御信号のビット番号は命令アドレスに２、データアドレスに１、外部アドレスに０を割当てる。
【００３６】
まず、図４に示す通り、最優先のデータアクセス要求ＲＥＱＤがアサートされたら、データバンクＢＫＤで指定されるバンクを割当て、アドレス選択制御信号ＣＡ０〜ＣＡ３のうち割当てたバンクの制御信号のビット１をアサートする。即ち、２ビットのデータバンクＢＫＤをデータバンクデコーダＢＤＤによってデコードした４ビット信号のそれぞれとデータアクセス要求ＲＥＱＤのＡＮＤ論理を取る。
【００３７】
次に、命令フェッチ要求ＲＥＱＩがアサートされたら、命令バンクＢＫＩで指定されるバンクを割当てる。この時、該当バンクに既にデータアクセスが割当てられていた場合は、命令フェッチ遅延信号ＤＬＩをアサートし、命令フェッチの割当ては行わない。割当てを行った場合はアドレス選択制御信号ＣＡ０〜ＣＡ３のうち割当てたバンクの制御信号のビット２をアサートする。即ち、２ビットの命令バンクＢＫＩを命令バンクデコーダＢＤＩによってデコードした４ビット信号のそれぞれと命令アクセス要求ＲＥＱＩのＡＮＤ論理を取り、更に、アドレス選択制御信号ＣＡ０〜ＣＡ３のビット１の反転信号とＡＮＤ論理を取る。アドレス選択制御信号ＣＡ０〜ＣＡ３のビット０は該当バンクにデータアクセスも命令アクセスも行わない場合にアサートする。即ち、アドレス選択制御信号ＣＡ０〜ＣＡ３のビット１の反転信号と、ビット２の元になっている命令アクセス要求ＲＥＱＩと当該ＢＤＩからの信号とのＡＮＤ論理を取った信号の反転信号とのＡＮＤ論理を取った信号である。
【００３８】
また、２ビットの外部バンクＢＫＸを外部バンクデコーダＢＤＸによってデコードした４ビット信号のそれぞれと外部アクセス要求ＲＥＱＸのＡＮＤ論理を取った信号がアサートされて、該当バンクへの外部アクセス要求が出たにもかかわらず、該当バンクアドレスとして外部アドレスを選択する信号、即ち、アドレス選択制御信号ＣＡ０〜ＣＡ３のビット０がアサートされない場合、必要なバンクが選択できなかったので外部アクセス遅延信号ＤＬＸをアサートする。
【００３９】
図３に示す書込みデータＷ０〜Ｗ３は書込みデータＷＤまたはＷＸから選択されるので、書込みデータマルチプレクサＷＭ０〜ＷＭ３は２入力であり、制御信号ＣＷ０〜ＣＷ３は２ビットである。そこで、制御信号のビット番号はデータアドレスに１、外部アドレスに０を割当てる。まず、書込みデータ選択制御信号ＣＷ０〜ＣＷ３のビット１は、アドレス選択制御信号ＣＡ０〜ＣＡ３のビット１と同一論理である。データアクセスがない場合は、書込みデータとして図３に示す外部書込みデータＷＸを選択するので、図４に示す通り、書込みデータ選択制御信号ＣＷ０〜ＣＷ３のビット０はビット１の反転である。
【００４０】
図５はバンク信号生成部ＢＫＧの第１の例である。キャッシュメモリＣＭの容量を１２８ＫＢとし、４ウェイセットアソシアティブ方式とすると、１ウェイ当りの容量は３２ＫＢであり、インデクスは１５ビットである。バンクインタリーブ方式ではバンク指定にインデクスの一部を使用する。本実施例ではバンク数が４なので、バンク指定に２ビット使用する。どのビットをバンク指定に用いたときにバンク競合によるストール頻度が最小になるかはプログラムに依存する。逆に、バンク指定ビットをプログラマに公開することによって競合を抑えたプログラムを作成することも可能である。図５ではアドレスのビット１４〜０をインデクスとし、インデクスの上位２ビットをバンク指定ビットとする。したがって、ビット１４〜１３がバンク指定ビットである。
【００４１】
バンク信号生成部ＢＫＧは、キャッシュ制御レジスタＣＣＲのバンク制御フィールドＢＣによって制御される。図５ではバンク制御フィールドＢＣは１ビットで、バンクマルチプレクサＢＭＩ、ＢＭＤ、およびＢＭＸを制御して２ビットのバンク信号ＢＫＩ、ＢＫＤ、およびＢＫＸの上位ビットを選択する。本実施例では下位ビットは常にアドレスＡＩ、ＡＤ、およびＡＸのビット１３である。図５においてバンクマルチプレクサＢＭＩ、ＢＭＤ、およびＢＭＸの入力信号に振られた番号は、該入力信号を選択する時のバンク制御フィールドＢＣの値である。即ち、バンク制御フィールドＢＣが１であれば、バンク信号ＢＫＩ、ＢＫＤ、およびＢＫＸの上位ビットとして、それぞれアドレスＡＩ、ＡＤ、およびＡＸのビット１４を選択する。一方、バンク制御フィールドＢＣが０であれば、それぞれ値０、値１、および外部データアクセス信号ＤＡを選択する。外部データアクセス信号ＤＡは外部アクセスがデータ系である時にアサートされる。
【００４２】
この結果、バンク制御フィールドＢＣが１であれば、バンク信号ＢＫＩ、ＢＫＤ、およびＢＫＸはそれぞれアドレスＡＩ、ＡＤ、およびＡＸのビット１４〜１３となる。したがって、キャッシュメモリＣＭは統合型の４バンクインタリーブキャッシュとなる。
【００４３】
バンク制御フィールドＢＣが０であれば、バンク信号ＢＫＩはアドレスＡＩのビット１３の値に応じて０または１となり、バンク信号ＢＫＤはアドレスＡＤのビット１３の値に応じて２または３となり、バンク信号ＢＫＸはアドレスＡＸのビット１３の値に応じて、外部データアクセス信号ＤＡがネゲートされれば０または１、アサートされれば２または３となる。
【００４４】
したがって、命令フェッチおよび命令系外部アクセスに対しては、バンク信号ＢＫＩおよびＢＫＸが常にバンク０または１を指定し、データアクセスおよびデータ系外部アクセスに対してはバンク信号ＢＫＤおよびＢＫＸが常にバンク２または３を指定する。この結果、バンク０および１が２バンクインタリーブ命令キャッシュ、バンク２および３が２バンクインタリーブデータキャッシュとして動作する。そして、アクセスするバンクが異なれば同時アクセス可能なので、ハーバードアーキテクチャとなる。尚、この時アドレスのビット１４は常にタグとして使用する。バンク制御フィールドＢＣが１であればビット１４をタグとすることは冗長であるが誤動作はせず、バンク制御フィールドＢＣが０であればビット１４はタグとして必要である。１ビットの冗長性を取り除こうとするとかえって論理が複雑になり速度が低下する。
【００４５】
図６はバンク生成部ＢＫＧの第２の例である。通常、システムによってプログラムを置くアドレス空間とデータを置くアドレス空間はあらかじめ決まっていることが多いので、これら２つの空間を識別するアドレスのビットがあれば、これをバンク指定ビットとすることにより、命令とデータのバンク競合を避けることができる。この結果、統合型の４バンクインタリーブキャッシュでありながら、ハーバードアーキテクチャと同等の性能を得ることが出来る。
【００４６】
図６の例ではバンク制御フィールドＢＣを２ビットとし、図５のバンク制御フィールドＢＣが０および１の場合に加えて、２および３の場合を追加している。そして、バンク制御フィールドＢＣが２の場合にはアドレスのビット２０を、３の場合にはビット２４を選択する。
【００４７】
この結果、プログラムサイズが１ＭＢ程度の比較的小さいシステムではビット２０を、１６ＭＢ程度のやや大きなシステムではビット２４をバンク指定ビットとすることにより、命令とデータのバンク競合を避けることができる。この場合も図５の場合と同様に、ビット２４、２０、１４は常にタグとしても使用する。
【００４８】
図７〜９は本実施例の第１の動作例である。図７はバンク生成部ＢＫＧの動作例である。図中太い信号線はアサート、細い信号線はネゲートとなっている。本動作例ではキャッシュコントロールレジスタＣＣＲのバンク制御フィールドＢＣが１で統合型キャッシュモードであるとする。そして、命令アドレスＡＩ、データアドレスＡＤ、および外部アドレスＡＸを１６進数で００００１２３０、００１０２４６８、００１０４８Ｃ０とし、命令フェッチ要求ＲＥＱＩ、データアクセス要求ＲＥＱＤ、および外部アクセス要求ＲＥＱＸが全てアサートされたとする。
【００４９】
尚、図７においてはビット１４〜１３の値が明確と成るように１６進数を２進数に展開してある。バンク制御フィールドＢＣが１なので、命令バンクマルチプレクサＢＭＩ、データバンクマルチプレクサＢＭＤ、および外部バンクマルチプレクサＢＭＸはそれぞれ命令アドレスＡＩ、データアドレスＡＤ、および外部アドレスＡＸのビット１４を選択し、それぞれ０、０、および１を出力する。該出力と常にバンク指定信号として使用されるビット１３とを結合した信号がバンク信号であるから、命令バンクＢＫＩ、データバンクＢＫＤ、および外部バンクＢＫＸはそれぞれ０、１、および２となる。
【００５０】
図８はキャッシュ制御部ＣＣの動作例である。図中太い信号線はアサート、細い信号線はネゲートとなっている。命令バンクＢＫＩ、データバンクＢＫＤ、および外部バンクＢＫＸはそれぞれ命令バンクデコーダＢＤＩ、データバンクデコーダＢＤＤ、および外部バンクデコーダＢＤＸによってデコードされ、該デコーダ出力のそれぞれビット０、１、および２がアサートされる。
【００５１】
命令フェッチ要求ＲＥＱＩ、データアクセス要求ＲＥＱＤ、および外部アクセス要求ＲＥＱＸは全てアサートされているので、これらの信号とのＡＮＤ論理後もアサート状態を保つ。そして優先度判定論理のＡＮＤゲートにより、アドレス選択制御信号はＣＡ０のビット２、ＣＡ１のビット１、ＣＡ２のビット０、ＣＡ３のビット０がアサートされ、書込みデータ選択信号はＣＷ０のビット０、ＣＷ１のビット１、ＣＷ２のビット０、ＣＷ３のビット０がアサートされる。
【００５２】
また、バンク競合判定論理により命令フェッチ遅延ＤＬＩおよび外部アクセス遅延ＤＬＸはネゲートされる。また、図示していないが、読出しデータ選択信号ＣＲＩ、ＣＲＤ、およびＣＲＸは命令バンクＢＫＩ、データバンクＢＫＤ、および外部バンクＢＫＸの単純デコードであるから、それぞれビット０、１、および２がアサートされる。
【００５３】
図９はキャッシュメモリＣＭの動作例である。キャッシュ制御部ＣＣからの制御信号ＣＴＬとして、アドレス選択制御信号はＣＡ０のビット２、ＣＡ１のビット１、ＣＡ２のビット０、ＣＡ３のビット０、書込みデータ選択信号はＣＷ１のビット１、他ＣＷ０，２，３のビット０、読出しデータ選択信号はＣＲＩのビット０、ＣＲＤのビット１、およびＣＲＸのビット２がアサートされている。
【００５４】
この結果、アドレスＡ０〜Ａ３にはそれぞれ命令アドレスＡＩ、データアドレスＡＤ、および外部アドレスＡＸが選択される。また、書込みデータＷ０〜Ｗ３としては、Ｗ１には書込みデータＷＤが、他には書込みデータＷＸが選択される。そして、読出しデータＲＩ、ＲＤ、およびＲＸにはそれぞれ読出しデータＲ０、Ｒ１、およびＲ２が選択される。
【００５５】
以上のようにキャッシュコントロールレジスタＣＣＲのバンク制御フィールドＢＣを１として統合型キャッシュモードとし、バンク指定ビットとして使用されるビット１４〜１３が異なるアドレスでアクセスすれば、命令フェッチ要求、データアクセス要求、および外部アクセス要求を同時に異なるバンクで処理することが出来る。すなわち、同時処理が実行される。
【００５６】
図１０〜１２は本実施例の第２の動作例である。本動作例でもキャッシュコントロールレジスタＣＣＲのバンク制御フィールドＢＣが１で統合型キャッシュモードであるとする。そして、命令アドレスＡＩ、データアドレスＡＤ、および外部アドレスＡＸを１６進数で００００１２３０、００１０１３５７、００１００２４０とし、命令フェッチ要求ＲＥＱＩ、データアクセス要求ＲＥＱＤ、および外部アクセス要求ＲＥＱＸが全てアサートされたとする。
【００５７】
すると、図１０のように、命令バンクマルチプレクサＢＭＩ、データバンクマルチプレクサＢＭＤ、および外部バンクマルチプレクサＢＭＸは全て０を出力する。更にビット１３と結合すると、命令バンクＢＫＩ、データバンクＢＫＤ、および外部バンクＢＫＸは全て０となる。
【００５８】
図１１はキャッシュ制御部ＣＣの動作例である。命令バンクデコーダＢＤＩ、データバンクデコーダＢＤＤ、および外部バンクデコーダＢＤＸの出力は全てビット０がアサートされ、命令フェッチ要求ＲＥＱＩ、データアクセス要求ＲＥＱＤ、および外部アクセス要求ＲＥＱＸとのＡＮＤ論理後もアサート状態を保つ。そして優先度判定論理のＡＮＤゲートにより、アドレス選択制御信号としてはＣＡ０のビット１、他ＣＡ１〜３のビット０がアサートされ、書込みデータ選択信号としてはＣＷ０のビット１、他ＣＷ１〜３のビット０がアサートされる。
【００５９】
また、バンク競合判定論理により命令フェッチ遅延ＤＬＩおよび外部アクセス遅延ＤＬＸがアサートされる。即ち、命令フェッチおよび外部アクセスは待たされる。また、図示していないが、読出しデータ選択信号ＣＲＩ、ＣＲＤ、およびＣＲＸは命令バンクＢＫＩ、データバンクＢＫＤ、および外部バンクＢＫＸの単純デコードであるから、全て０がアサートされる。
【００６０】
図１２はキャッシュメモリＣＭの動作例である。キャッシュ制御部ＣＣからの制御信号ＣＴＬとして、アドレス選択制御信号はＣＡ０のビット１、他ＣＡ１〜３のビット０、書込みデータ選択信号はＣＷ０のビット１、他ＣＷ１〜３のビット０、読出しデータ選択信号は全てビット０がアサートされている。
【００６１】
この結果、アドレスＡ０にはデータアドレスＡＤ、他のアドレスＡ１からＡ３には外部アドレスＡＸが選択される。また、書込みデータＷ０には書込みデータＷＤが、他の書込みデータＷ１〜Ｗ３には書込みデータＷＸが選択される。そして、読出しデータＲＩ、ＲＤ、およびＲＸには全て読出しデータＲ０が選択される。
【００６２】
以上のようにキャッシュコントロールレジスタＣＣＲのバンク制御フィールドＢＣを１として統合型キャッシュモードとし、バンク指定ビットとして使用されるビット１４〜１３が同一のアドレスでアクセスすると、バンク競合によりデータアクセスのみが実行され、命令フェッチおよび外部アクセスは待たされる。即ち、逐次処理が実行される。
【００６３】
図１３〜１５は第３の動作例である。第２の動作例と同一のアドレスによるアクセス要求を用い、キャッシュコントロールレジスタＣＣＲのバンク制御フィールドＢＣを０としてハーバードアーキテクチャモードとする。また、外部アクセスはデータ系のアクセスとする。即ち外部データアクセス信号ＤＡをアサートする。すると、図１３のようにバンク制御フィールドＢＣが０なので、命令バンクマルチプレクサＢＭＩ、データバンクマルチプレクサＢＭＤ、および外部バンクマルチプレクサＢＭＸはそれぞれ値０、値１、および外部データアクセス信号ＤＡの値１を選択して出力する。該出力と常にバンク指定信号として使用されるビット１３とを結合した信号がバンク信号であるから、命令バンクＢＫＩ、データバンクＢＫＤ、および外部バンクＢＫＸはそれぞれ０、２、および２となる。
【００６４】
図１４はキャッシュ制御部ＣＣの動作例である。命令バンクデコーダＢＤＩ、データバンクデコーダＢＤＤ、および外部バンクデコーダＢＤＸの出力はそれぞれビット０、２、および２がアサートされ、命令フェッチ要求ＲＥＱＩ、データアクセス要求ＲＥＱＤ、および外部アクセス要求ＲＥＱＸとのＡＮＤ論理後もアサート状態を保つ。そして優先度判定論理のＡＮＤゲートにより、アドレス選択制御信号はＣＡ０のビット２、ＣＡ１のビット０、ＣＡ２のビット１、ＣＡ３のビット０がアサートされ、書込みデータ選択信号はＣＷ２のビット１、他ＣＷ０，１，３のビット０がアサートされる。また、バンク競合判定論理により外部アクセス遅延ＤＬＸがアサートされる。即ち、外部アクセスは待たされる。また、図示していないが、読出しデータ選択信号ＣＲＩ、ＣＲＤ、およびＣＲＸは命令バンクＢＫＩ、データバンクＢＫＤ、および外部バンクＢＫＸの単純デコードであるから、それぞれビット０、２、および２がアサートされる。
【００６５】
図１５はキャッシュメモリＣＭの動作例である。キャッシュ制御部ＣＣからの制御信号ＣＴＬとして、アドレス選択制御信号はＣＡ０のビット２、ＣＡ１のビット０、ＣＡ２のビット１、ＣＡ３のビット０が、書込みデータ選択信号はＣＷ２のビット１、他ＣＷ０，１，３のビット０、読出しデータ選択信号はＣＲＩのビット０、ＣＲＤのビット２、およびＣＲＸのビット２がアサートされている。
【００６６】
この結果、アドレスＡ０〜Ａ３にはそれぞれ命令アドレスＡＩ、外部アドレスＡＸ、データアドレスＡＤ、および外部アドレスＡＸが選択される。また、書込みデータＷ０〜Ｗ３に関しては、Ｗ２には書込みデータＷＤが、他Ｗ０，１，３には書込みデータＷＸが選択される。そして、読出しデータＲＩ、ＲＤ、およびＲＸにはそれぞれ読出しデータＲ０、Ｒ２、およびＲ２が選択される。
【００６７】
以上のようにキャッシュコントロールレジスタＣＣＲのバンク制御フィールドＢＣを０としてハーバードアーキテクチャモードとすると、第２の動作例と同一アドレスでアクセスしても、命令フェッチとデータアクセスのバンク競合を回避できる。一方、データアクセスとデータ系外部アクセスのバンク競合は回避できないが、これは通常のハーバードアーキテクチャでも回避できない。
【００６８】
図１６はバンク信号生成部の第４の動作例である。第２の動作例と同一のアドレスによるアクセス要求を処理しているが、図６のバンク生成部ＢＫＧを用い、キャッシュコントロールレジスタＣＣＲのバンク制御フィールドＢＣを２とする。また、プログラムとデータのアドレス空間を区別するアドレスビットはビット２０とする。
【００６９】
すると、図１６のようにバンク制御フィールドＢＣが２なので、命令バンクマルチプレクサＢＭＩ、データバンクマルチプレクサＢＭＤ、および外部バンクマルチプレクサＢＭＸはそれぞれ０、１、および１を出力する。該出力と常にバンク指定信号として使用されるビット１３とを結合した信号がバンク信号であるから、命令バンクＢＫＩ、データバンクＢＫＤ、および外部バンクＢＫＸはそれぞれ０、２、および２となる。即ち、第３の動作例と同一のバンク信号を出力する。この結果、キャッシュ制御部ＣＣおよびキャッシュメモリＣＭも同様に動作し、統合型キャッシュでありながら、ハーバードアーキテクチャと同様、命令フェッチとデータアクセスの競合を回避できる。
【００７０】
前述した各図の動作例をまとめると命令フェッチ要求、データアクセス要求及び外部アクセス要求並びに複数の制御信号（ＢＫＩ，ＢＫＤ，ＢＫＸ）の入力によりキャッシュ制御部にて生成される複数のアドレス選択制御信号及び書き込みデータ選択制御信号の制御により、複数のアドレス信号（ＡＩ，ＡＤ，ＡＸ）及び書き込みデータ（ＷＤ，ＷＸ）から複数のセレクタの各々を介して、複数のバンク内の異なるバンクに対しては同時に、同一バンクに対しては逐次的に、複数のアクセスアドレスを与える。
【００７１】
さらに上記複数のバンクの各々において、複数のアクセスアドレスへの書き込みデータの書き込みまたは各々のアクセスアドレスからのデータ読出しを、異なるバンクに対しては同時に、同一バンクに対しては逐次的に任意に行う。
【００７２】
特に逐次処理について換言して表現すれば、キャッシュ制御部ＣＣ（コントローラ）の制御により制御信号（ＣＡ０〜３、ＣＷ０〜３）を複数のバンクの各々に供給し、同一のバンクに対し、命令或いはデータの書き込み或いは読み出し動作を逐次に行う。
【００７３】
図１７は本発明の第２の実施例のキャッシュメモリＣＭである。バンク毎に優先的に選択するアクセス要求を、キャッシュ制御レジスタＣＣＲのバンク選択フィールドＢＳ０〜ＢＳ３によってあらかじめ指定しておき、同時に２つ以上アクセス要求がきた場合はバンク毎に優先度の高いアクセス要求を受け付ける。図３に示す第１の実施例との違いはキャッシュ制御レジスタＣＣＲからキャッシュ制御部ＣＣへバンク選択フィールドＢＳ０〜ＢＳ３を出力し、これと命令フェッチ要求ＲＥＱＩおよびデータアクセス要求ＲＥＱＤとの入力からキャッシュ制御信号ＣＴＬを生成している点である。
【００７４】
図１８は第２の実施例のキャッシュ制御部ＣＣである。本方式の長所は、アクセス要求に比べて確定の遅いアドレス情報をバンク選択に使用しないため、高速にキャッシュアクセスを開始できることである。バンクの使用効率よりキャッシュのアクセス速度を重視する場合に適している。アドレスから生成されるバンク信号ＢＫＩ、ＢＫＤ、およびＢＫＸを使用せずにアドレス選択制御信号ＣＡ０〜ＣＡ３および書込みデータ選択制御信号ＣＷ０〜ＣＷ３を生成する。
【００７５】
アドレス選択制御信号ＣＡ０はバンク選択フィールドＢＳ０と命令フェッチ要求ＲＥＱＩおよびデータアクセス要求ＲＥＱＤとから以下のように生成する。バンク選択フィールドＢＳ０は命令フェッチ優先時に０、データアクセス優先時に１となる。アドレス選択制御信号ＣＡ０のビット２、１、および０はそれぞれ命令アドレスＡＩ、データアドレスＡＤ、および外部アドレスＡＸに対応する。
【００７６】
まず、ビット２は命令フェッチ要求ＲＥＱＩがアサートされた場合に、データアクセス要求ＲＥＱＤがネゲートされているか、又はバンク選択フィールドＢＳ０が０で命令フェッチ優先である場合にアサートされる。同様にビット１はデータアクセス要求ＲＥＱＤがアサートされた場合に、命令フェッチ要求ＲＥＱＩがネゲートされているか、又はバンク選択フィールドＢＳ０が１でデータアクセス優先である場合にアサートされる。ビット０は命令フェッチ要求ＲＥＱＩおよびデータアクセス要求ＲＥＱＤのどちらもネゲートされている場合にアサートする。アドレス選択制御信号ＣＡ１〜ＣＡ３も同様にバンク選択フィールドＢＳ１〜ＢＳ３と命令フェッチ要求ＲＥＱＩおよびデータアクセス要求ＲＥＱＤとから生成される。書込みデータ選択制御信号ＣＷ０〜ＣＷ３は、図４に示す第１の実施例同様、ビット１はアドレス選択制御信号ＣＡ０〜ＣＡ３のビット１と同一論理であり、ビット０はビット１の反転である。
【００７７】
尚、本実施例においても読出しデータ選択信号ＣＲＩ、ＣＲＤ、およびＣＲＸはそれぞれバンク信号ＢＫＩ、ＢＫＤ、およびＢＫＸのデコードによって得られる。アクセス要求ＲＥＱＩ、ＲＥＱＤ、およびＲＥＱＸとバンク選択フィールドＢＳ０〜３のみでバンク選択を行うので、各アクセスに必要なバンクが確保されたかをチェックし、確保できなかった場合はアクセス遅延信号ＤＬＩ、ＤＬＤ、およびＤＬＸをアサートして、アクセスを待たせる。このチェックはキャッシュアクセスと並列に行えばよい。
【００７８】
具体的には、第１の実施例と同様にバンク信号ＢＫＩまたはＢＫＤとアクセス要求ＲＥＱＩまたはＲＥＱＤとからアクセスすべきバンクを決定し、そのバンクにおいてアドレス選択制御信号ＣＡ０〜ＣＡ３によって、命令アドレスＡＩまたはデータアドレスＡＤが選択されていなければ、それぞれアクセス遅延信号ＤＬＩまたはＤＬＤをアサートする。本実施例では外部アクセスは全てのバンクで常に優先度が低いのでアクセス要求ＲＥＱＩまたはＲＥＱＤが出ているとバンクを確保できない。このため、バンクに依らずアクセス要求ＲＥＱＸアサート時にＲＥＱＩまたはＲＥＱＤがアサートされていればアクセス遅延信号ＤＬＸをアサートする。
【００７９】
第２の実施例では外部アクセスは常に優先度を最低にしているが、外部アクセスを含めて自由に優先度を可変にすることは可能である。第１および第２の実施例は４バンク構成の場合であるが、様々なバンク数の場合に本発明を拡張することは本発明の属する分野の通常の技術者であれば可能である。
【００８０】
図１９は本発明の第３の実施例のキャッシュメモリＣＭである。複数ウェイ構成のキャッシュメモリを全て命令データ共用にするか、ウェイ毎に命令用、データ用のいずれかに指定するかする。バンク数が２の累乗でないと実現困難であるのに対し、ウェイ数は任意の数が可能なので設計の自由度が増す。また、バンクインタリーブ化する必要もない。例えば４ウェイセットアソシアティブの統合型キャッシュメモリを、全てのウェイを命令データ共用とすればそのまま統合型に、２ウェイを命令用、残りの２ウェイをデータ用とすればハーバードアーキテクチャになる。複数個のウェイの各々に対して命令またはデータの内何れか１つのみをキャッシングすることにより、命令データ分離型キャッシュメモリとして動作させることが出来る。但し、バンクインタリーブ化しないと外部アクセスと命令またはデータアクセスを同時に実行することは出来ない。また、ウェイ毎に異なるアドレスを指定する必要があるため、１つのメモリマットに複数のウェイを実装することは出来ない。
【００８１】
さて、第２と第３の実施例のキャッシュメモリＣＭの違いは、図１７と図１９に示されるＣＭを構成するブロックの違いである。まず、キャッシュメモリ本体はバンクＢＫ０〜ＢＫ３の代わりにウェイＷＹ０〜ＷＹ３に分割されて、それぞれのウェイがアドレスマルチプレクサＡＭ０〜ＡＭ３（又はセレクタ）によって選択される固有のアドレスでアクセスされる。そして、バンクはないのでバンク生成部ＢＫＧはない。また、外部アクセスと命令またはデータアクセスを同時に実行することは出来ないので、外部アクセス専用のポートは不要である。
【００８２】
図２２はキャッシュメモリ本体にウェイを使用した場合のプロセッサ構成例を示した図である。外部アクセスは命令系とデータ系に分けて、通常のハーバードアーキテクチャのように、事前に命令アクセスおよびデータアクセスにマージしておく。プロセッサＣＰＵから命令フェッチ要求ＲＥＱＩ，データアクセス要求ＲＥＱＤから成る複数の制御コマンド及びＡＩ，ＡＤから成る複数のアドレス信号がキャッシュメモリ本体に送信される。
【００８３】
前述したバンクＢＫ０〜ＢＫ３を採用したキャッシュメモリＣＭを備えたプロセッサシステム（図２）とバンクの代わりにウェイを採用したＣＭを備えたプロセッサシステム（図２２）の相違点としては、実行ユニットＥＸＵからＣＭに送信される書き込みデータＷＤ及びＢＩＵからＣＭに送信される書き込みデータの内、何れか１データがセレクタにて選択されＣＭに書き込まれ、並行してＢＩＵからの命令系書き込みデータＷＩがＣＭに書き込まれることにある。
【００８４】
同図２２のプロセッサシステムを採用した結果、図１７に示すキャッシュメモリ構成例と比較し、図１９のキャッシュメモリ構成においてアドレスマルチプレクサＡＭ０〜ＡＭ３は命令アドレスＡＩとデータアドレスＡＤの２入力に、書込みデータマルチプレクサＷＭ０〜ＷＭ３の外部書込みデータＷＸ（図１７）は、命令系は命令系書込みデータＷＩに、データ系はデータ系書込みデータＷＤにマージされて不要になる。命令系外部アクセスＡＸ（図１７）をマージした結果、マージ前にはなかった命令系書込みデータＷＩ（図１９）が存在する。
【００８５】
更に、バンクインタリーブ方式では単純なバンク信号のデコード結果であった読出しデータ選択制御信号ＣＲＩおよびＣＲＤは、図１９のキャッシュメモリＣＭに具備されるウェイ選択制御部ＷＳＣによって生成される。ウェイ選択制御部ＷＳＣの詳細を図２０に示す。キャッシュ制御部ＣＣ（図２１）からの読出しデータ選択制御信号ＣＲ０〜ＣＲ３と各ウェイからのヒット信号ＨＴ０〜ＨＴ３とのＡＮＤ論理によって上記信号ＣＲＩ及びＣＲＤは生成される。図１９に示すように読出しデータＲＩ、ＲＤは読出しデータ選択制御信号ＣＲＩ及びＣＲＤによる制御の下、それぞれ読出しデータマルチプレクサＲＭＩ及びＲＭＤを介して、各ウェイＷＹ０〜ＷＹ３から読み出される読出しデータＲ０〜Ｒ３から選択される信号である。
【００８６】
図２１は図１９に示す第３の実施例のキャッシュメモリＣＭ内のキャッシュ制御部ＣＣを示している。キャッシュ制御レジスタＣＣＲには統合ビットＵ（キャッシュメモリが統合型か分離型かを区別するビット）およびウェイ選択フィールドＷＳ０〜ＷＳ３がある。統合ビットＵは全てのウェイを命令データ共用にすることを示す。ウェイ選択フィールドＷＳ０〜ＷＳ３は、統合ビットＵがアサートされている時には命令データアクセス競合においてウェイ毎にどちらのアクセスを優先するかを示し、統合ビットＵがネゲートされている時にはウェイが命令用かデータ用かを示す。ウェイ選択フィールドＷＳ０〜ＷＳ３は命令選択時に０、データ選択時に１とする。この時、キャッシュ制御部ＣＣから出力されるアドレス選択制御ＣＡ０〜ＣＡ３、書込みデータ選択制御ＣＷ０〜ＣＷ３、および読出しデータ選択制御ＣＲ０〜ＣＲ３は全て同一論理で生成できる。尚、図中１、０はビット１、０を表し、それぞれ命令系およびデータ系の選択制御信号である。
【００８７】
例えば、図１９に示す通リ、アドレス選択制御信号ＣＡ０のビット０はウェイ０のデータアドレスＡＤの選択制御信号である。データアドレスＡＤを選択する条件は、図２１にてデータアクセス要求ＲＥＱＤアサート時に、命令アクセス要求ＲＥＱＩがネゲートされているか、ウェイ選択フィールドＷＳ０が１の場合である。この時、ウェイ０は、統合ビットＵの値によってデータアクセスが優先されているか、データ用であるかのいずれかである。いずれの場合もデータアクセスを行う。アドレス選択制御ＣＡ０のビット１はビット０の反転信号である。このため、本実施例では命令アクセス要求ＲＥＱＩおよびデータアクセス要求ＲＥＱＤの双方がネゲートされた場合等、アドレスとしてどちらを選択しても良い場合は、命令アドレスＡＩが選択される。他の制御信号も同様に生成される。
【００８８】
統合ビットＵは通常のキャッシュアクセスでは不要であるが、キャッシュエントリのリプレース時に必要となる。統合ビットＵがアサートされている場合は、リプレースエントリの候補は全ウェイである。この結果、命令とデータの混在した統合型キャッシュメモリとなる。統合ビットＵがネゲートされている場合は、リプレースエントリの候補となるウェイは、命令リプレース時はウェイ選択フィールドＷＳ０〜ＷＳ３が０であるウェイ、データリプレース時はウェイ選択フィールドＷＳ０〜ＷＳ３が１であるウェイのみである。この結果、ウェイ毎に命令またはデータのみが書込まれるため、ハーバードアーキテクチャとなる。
【００８９】
前述したキャッシュメモリＣＭにウェイを使用した際の動作例をまとめると、命令フェッチ要求ＲＥＱＩとデータアクセス要求ＲＥＱＤの入力によりキャッシュ制御部ＣＣにて生成される複数のアドレス選択制御信号及び書き込みデータ選択制御信号により、複数のアドレス信号（ＡＩ，ＡＤ）及び書き込みデータ（ＷＩ，ＷＤ）から複数のセレクタの各々を介して、複数個のウェイ内の異なるウェイに対しては同時に、同一ウェイに対しては逐次的に、複数のアクセスアドレス又は書き込みデータを与える。
【００９０】
さらに複数個のウェイの各々において、アクセスアドレスへの書き込みデータの書き込みまたはアクセスアドレスからのデータ読出しを異なるウェイに対しては同時に、同一ウェイに対しては逐次的に任意に行う。
【００９１】
【発明の効果】
本発明によって、従来、ハーバードアーキテクチャでのみ達成可能であった命令フェッチとデータアクセスの同時実行を統合型キャッシュメモリアーキテクチャで達成することが可能となる。これによって、命令書き換えの容易性と高性能とを同時に達成することができる。
【００９２】
また、アプリケーションを使用し、が命令とデータの一方を重点的にキャッシングしたい場合でも、ハーバードアーキテクチャのように一方のキャッシュが無駄になることなく、全容量を活用することが出来る。
【００９３】
また、同一のプロセッサで統合型キャッシュメモリアーキテクチャとハーバードアーキテクチャの双方を実現することが可能となる。更に、同一プロセッサで多様なキャッシュメモリ構成を実現することも可能となる。
【図面の簡単な説明】
【図１】キャッシュメモリアーキテクチャの変遷を示す図である。
【図２】本発明を適用したプロセッサシステムの例を示す図である。
【図３】本発明を適用したキャッシュメモリの第１の実施例を示す図である。
【図４】本発明の第１の実施例のキャッシュ制御部を示す図である。
【図５】バンク信号生成部の第１の例を示す図である。
【図６】バンク信号生成部の第２の例を示す図である。
【図７】バンク信号生成部の第１の動作例を示す図である。
【図８】キャッシュ制御部の第１の動作例を示す図である。
【図９】キャッシュメモリの第１の動作例を示す図である。
【図１０】バンク信号生成部の第２の動作例を示す図である。
【図１１】キャッシュ制御部の第２の動作例を示す図である。
【図１２】キャッシュメモリの第２の動作例を示す図である。
【図１３】バンク信号生成部の第３の動作例を示す図である。
【図１４】キャッシュ制御部の第３の動作例を示す図である。
【図１５】キャッシュメモリの第３の動作例を示す図である。
【図１６】バンク信号生成部の第４の動作例を示す図である。
【図１７】本発明を適用したキャッシュメモリの第２の実施例を示す図である。
【図１８】第２の実施例のキャッシュ制御部を示す図である。
【図１９】本発明を適用したキャッシュメモリの第３の実施例を示す図である。
【図２０】第３の実施例のウェイ選択制御部を示す図である。
【図２１】第３の実施例のキャッシュ制御部を示す図である。
【図２２】本発明を適用したキャッシュメモリにおいて、バンクの代わりにウェイを使用した場合のプロセッサシステムの例を示す図である。
【符号の説明】
ＣＰＵ：中央処理装置、ＩＦＵ：命令フェッチユニット、ＥＸＵ：実行ユニット、ＢＩＵ：バスインタフェイスユニット、ＡＩ：命令アドレス、ＡＤ：データアドレス、ＡＸ：外部アドレス、ＲＥＱＩ：命令フェッチ要求、ＲＥＱＤ：データアクセス要求、ＲＥＱＸ：外部アクセス要求、ＲＩ、ＲＤ、ＲＸ：読出しデータ、ＷＤ、ＷＸ：書込みデータ。
【図１】
0004068828.tif 000002
【図２】
0004068828.tif 000003
【図３】
0004068828.tif 000004
【図４】
0004068828.tif 000005
【図５】
0004068828.tif 000006
【図６】
0004068828.tif 000007
【図７】
0004068828.tif 000008
【図８】
0004068828.tif 000009
【図９】
0004068828.tif 000010
【図１０】
0004068828.tif 000011
【図１１】
0004068828.tif 000012
【図１２】
0004068828.tif 000013
【図１３】
0004068828.tif 000014
【図１４】
0004068828.tif 000015
【図１５】
0004068828.tif 000016
【図１６】
0004068828.tif 000017
【図１７】
0004068828.tif 000018
【図１８】
0004068828.tif 000019
【図１９】
0004068828.tif 000020
【図２０】
0004068828.tif 000021
【図２１】
0004068828.tif 000022
【図２２】
0004068828.tif 000023