(57)【要約】【課題】ＬＳＩピンの大幅な多ピン化を行うことなく、キャッシュアドレスとＶＳＣ命令のストアアドレスとのアドレス比較処理の高速化が可能な情報処理装置を提供する。【解決手段】ベクトルユニット２１，３１はフラッシュアドレスをフラッシュアドレスアレイ２４，３４へ出力する。マスタユニット２及びスレーブユニット３はフラッシュアドレスアレイ２４，３４でキャッシュに登録されているアドレスとフラッシュアドレスとの比較を行い、アドレスが一致していた場合に一致アドレスをアドレスアレイ２５へ送出する。フラッシュアドレスアレイ２４，３４から送出されたアドレスを基にアドレスアレイ２５の該当アドレスのフラッシュを行い、キャッシュ制御回路２３がマスタユニット２とスレーブユニット３との両方からのＥＮＤ信号を受信していた場合にフラッシュ処理を終了する。【選択図】　　　図１
2004013868.tif 000002
【特許請求の範囲】
【請求項１】
ベクトルユニットを複数の非同期動作ユニットに分割した構成をとり、直接メモリへアクセスする命令によってキャッシュメモリのデータと前記メモリのデータとの不一致が発生した時に該当キャッシュラインを無効化するキャッシュフラッシュ制御を行う情報処理装置であって、前記メモリへのストアアドレスを示すフラッシュアドレスと前記キャッシュメモリへのアドレスとの比較処理を前記複数の非同期動作ユニットで分割して実行することを特徴とする情報処理装置。
【請求項２】
前記複数の非同期動作ユニットから出力された前記フラッシュアドレスを用いて前記キャッシュフラッシュ制御を行うことを特徴とする請求項１記載の情報処理装置。
【請求項３】
ベクトルユニットをマスタユニットとスレーブユニットとに分割した構成をとり、直接メモリへアクセスする命令によってキャッシュメモリのデータと前記メモリのデータとの不一致が発生した時に該当キャッシュラインを無効化するキャッシュフラッシュ制御を行う情報処理装置であって、前記メモリへのストアアドレスを示すフラッシュアドレスと前記キャッシュメモリへのアドレスとの比較処理を前記マスタユニット及び前記スレーブユニットで分割して実行することを特徴とする情報処理装置。
【請求項４】
前記スレーブユニットから前記比較処理で一致したフラッシュアドレスのみを前記マスタユニット内のアドレスアレイへ出力することを特徴とする請求項３記載の情報処理装置。
【請求項５】
ベクトルユニットを複数の非同期動作ユニットに分割した構成をとり、直接メモリへアクセスする命令によってキャッシュメモリのデータと前記メモリのデータとの不一致が発生した時に該当キャッシュラインを無効化するキャッシュフラッシュ制御を行うキャッシュフラッシュ制御方法であって、前記メモリへのストアアドレスを示すフラッシュアドレスと前記キャッシュメモリへのアドレスとの比較処理を前記複数の非同期動作ユニットで分割して実行することを特徴とするキャッシュフラッシュ制御方法。
【請求項６】
前記複数の非同期動作ユニットから出力された前記フラッシュアドレスを用いて前記キャッシュフラッシュ制御を行うことを特徴とする請求項５記載のキャッシュフラッシュ制御方法。
【請求項７】
ベクトルユニットをマスタユニットとスレーブユニットとに分割した構成をとり、直接メモリへアクセスする命令によってキャッシュメモリのデータと前記メモリのデータとの不一致が発生した時に該当キャッシュラインを無効化するキャッシュフラッシュ制御を行うキャッシュフラッシュ制御方法であって、前記メモリへのストアアドレスを示すフラッシュアドレスと前記キャッシュメモリへのアドレスとの比較処理を前記マスタユニット及び前記スレーブユニットで分割して実行することを特徴とするキャッシュフラッシュ制御方法。
【請求項８】
前記スレーブユニットから前記比較処理で一致したフラッシュアドレスのみを前記マスタユニット内のアドレスアレイへ出力することを特徴とする請求項７記載のキャッシュフラッシュ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は情報処理装置及びそれに用いるキャッシュフラッシュ制御方法に関し、特にベクトル方式を用いる情報処理装置におけるキャッシュフラッシュの制御方法に関する。
【０００２】
【従来の技術】
近年、情報処理装置の動作周波数の向上によって、クロック分配回路の遅延が周波数の向上に対応することができず、その結果、異なる分割単位［ＣＰＵ（中央処理装置）／ＬＳＩ（大規模集積回路）等］を位相の一致したクロックで制御することが非常に困難になっている。
【０００３】
この問題に対する一つの解決策として、非同期クロックで動作するＣＰＵ間の同期をとる際に、ソフトウェアによって同期をとる手段がある。例えば、バリア同期／通信レジスタといったハードウェアの機能を利用し、コンパイラ／人手指定によって分割された複数のプロセスをＯＳ（Ｏｐｅｒａｔｉｎｇ　Ｓｙｓｔｅｍ）が異なるＣＰＵにディスパッチする方法である。
【０００４】
この方法では、プロセス群が全く異なるタイミングで動作する前提に基づいているので、ＣＰＵ間のクロックが非同期であっても、ハードウェア機能に起因する動作の不正問題が発生しない。このような方式は、例えばスカラ型並列スーパコンピュータと呼ばれている製品において実現されている。
【０００５】
上記のようなハードウェアによる並列処理サポート機能の実現は、マイクロプロセッサのクロック速度向上、ＣＰＵ−メモリ間のバンド幅拡大等の機能と比較すると、非常に安価で実現容易であり、見かけ上の性能価格比の向上策として一般的である。
【０００６】
しかしながら、上記のようなソフトウェアによる並列処理による速度向上には、プログラム並列化が非常に困難であるというような問題がある。具体的には、並列化されていないプログラムの並列化限界が、プログラムによって千差万別である。
【０００７】
また、仮に並列化することができたとしても、そのデバッグ作業が並列化されていないプログラムより格段に困難なことである。その作業は、性能チュ−ニングで行われるのが一般的であるが、並列コンピュータ技術に関する高度なスキルを必要とする。このような困難な作業を、ハードウェアがバージョンアップする毎に行う必要がある。
【０００８】
さらに、上記の理由からプログラムの膨大な資産を活かしにくい問題もある。仮に並列処理の技術的課題を克服したとしても、それを現場で運用するためには、人的リソース不足等の多くの問題が存在する。
【０００９】
このような問題の解決策の１つが、ハードウェアによる並列処理であり、その具体的な製品がベクトル型スーパコンピュータと呼ばれるものである。ベクトル方式とは、複数のデータに対して、同様の演算／メモリアクセスを行わせる並列処理方式［ＳＩＭＤ（Ｓｉｎｇｌｅ　Ｉｎｓｔｒａｃｔｉｏｎｓｔｒｅａｍ　Ｍｕｌｔｉｐｌｅ　Ｄａｔａｓｔｒｅａｍ：単一命令多重データ処理）型］の１つである。
【００１０】
その複数のデ−タを格納する部分をベクトルレジスタと呼び、そのベクトルレジスタの要素データ全てに対して同一の演算／メモリアクセス／転送を指示する命令をベクトル命令と呼ぶ。例えば、
ＬＶＬ　　ＶＬ＜−１２８
ＶＡＤＤ　Ｖ７＜−Ｖ５＋Ｖ４
のように、ＶＬ（ベクトル・レングス・レジスタ）に動作指示対象の要素数１２８をＬＶＬ（Ｌｏａｄ　ＶＬ）命令によってセットする。その後、ＶＡＤＤ（ベクトル加算）命令によって、Ｖ５／Ｖ４の各々の１２８要素をＶ７の１２８要素領域に加算してセットする。
【００１１】
以上のように、ベクトル方式ではプロセス間の同期が不要なので、シングルＣＰＵの延長で並列処理を実現することができる。また、並列化手法として実績があり、自動ベクトル化コンパイラ技術も製品レベルで発達している。
【００１２】
このようなベクトル命令を実行するベクトルユニットを複数の非同期動作ユニットにまたがる形で実現したとしても、ベクトル計算機風にＣＰＵをハードウェアによって同期させることで、プログラマにとっては容易に並列処理による演算の高速化を実現することができる。
【００１３】
このような有効なベクトル方式においても、実効的な性能向上を実現するには、それに見合ったＣＰＵ−メモリ間のバンド幅の確保が必要となる。しかしながら、ＬＳＩ１個当たりのメモリとの接続のために使用可能なピン数には限りがある。この問題の解決策の１つとして、ベクトルユニットを複数のＬＳＩに分割することで、ＣＰＵの多数ピン化にある程度の歯止めをかけることができる。
【００１４】
しかしながら、動作クロックが数１００ＭＨｚレベルになると、クロックスキューの増加等の要因によって、分割したＬＳＩが同期したクロックで動作することができなくなる。
【００１５】
【発明が解決しようとする課題】
上述した従来の情報処理装置では、ベクトルユニットを複数の非同期動作ユニットにまたがる形で実現した場合、ＶＳＣ（ベクトル・スキャタ）命令に関して下記のような問題がある。
【００１６】
ＶＳＣ命令はベクトル型計算機において、非常に重要な命令である。その命令仕様について、図６に基づいて説明する。ｙフィールドで指定されるベクトルレジスタＶｙの内容をアドレスとして、それに対応するＺフィールドで指定したベクトルレジスタＶｚの内容をメモリにストアする。
【００１７】
まず最初に、簡単にベクトル型ＣＰＵのベクトル命令処理を説明すると、ベクトル命令では一度に大量のデータ転送を行うため、キャッシュメモリ（以下、キャッシュとする）　にはアクセスせずに、直接メモリにアクセスする。しかしながら、通常のプログラムはスカラ演算とベクトル演算とが混在しており、スカラ演算ではキャッシュのデータを使用して演算を行う。
【００１８】
そのため、スカラ演算とベクトル演算とが共通のデータを利用する場合を考慮してキャッシュとメモリとのコヒーレンシを保つために、スカラストア命令の場合にはストアデータをキャッシュとメモリとに同時に書込み（Ｓｔｏｒｅ　Ｔｈｒｏｕｇｈ）、ベクトルストア命令の場合にはメモリに直接データを書込むと同時に、キャッシュに登録されているアドレスとベクトルストアアドレスとの比較を行い、アドレスが一致していた場合には該当キャッシュラインの無効化（フラッシュ）　を行う。
【００１９】
ここで、本発明で必要となるキャッシュの構造について図８を用いて説明する。例として、アドレスのビット数を４０ｂｉｔとする。キャッシュの構成は６４ＫＢ、２ｗａｙセットアソシアティブ、ラインサイズ２５６Ｂとする。この場合、図７に示すように、キャッシュのブロック内アドレスは８ｂｉｔ（最小アクセス単位を１Ｂ毎とすると、２５６Ｂ＝２の８乗Ｂとなるため）、インデックスアドレス（キャッシュのラインアドレス）は７ｂｉｔ（２ｗａｙの６４ＫＢ構成なので、（１ｗａｙ＝３２ＫＢ）／（１ライン２５６Ｂ）＝１２８＝２の７乗となるため）、タグアドレスは２５ｂｉｔ（４０−８−７＝２５ｂｉｔ）となる。
【００２０】
図８を参照すると、キャッシュはアドレスアレイ（以下、ＡＡとする）とデータアレイ（以下、ＤＡとする）とから構成される。ＡＡにはタグアドレスが格納され、ＤＡにはデータが格納されている。また、各ライン毎にラインが有効であることを示すＶＡＬＩＤｂｉｔ（以下、Ｖｂｉｔとする）を持つ。この場合、Ｖｂｉｔ＝１でキャッシュライン有効、Ｖｂｉｔ＝０でキャッシュライン無効となる。
【００２１】
次に、ＶＳＣ命令のキャッシュフラッシュ処理について、図９を用いて説明する。キャッシュフラッシュとは、ベクトルストア命令等の直接メモリへアクセスする命令によってキャッシュのデータとメモリのデータとの不一致が発生したために、該当するキャッシュラインを無効化する処理のことを指す。
【００２２】
キャッシュフラッシュはキャッシュライン毎に行われるため、図７に示すように、ブロック内アドレス（４０ｂｉｔの下位８ｂｉｔ）は比較する必要がなく、ＶＳＣ命令のストアアドレス（以下、このベクトル命令のフラッシュ処理に利用するストアアドレスをフラッシュアドレスとする）の上位３２ｂｉｔの比較で良い。
【００２３】
ＶＳＣ命令のフラッシュアドレスの下位７ｂｉｔをフラッシュアドレスアレイ（フラッシュ処理に用いるアドレスアレイのコピー、以下、ＦＡＡとする）のインデックスアドレス７ｂｉｔと比較し、一致するラインのタグアドレス２５ｂｉｔ及びＶｂｉｔがＦＡＡから出力される。
【００２４】
ＦＡＡから出力されたタグアドレス２５ｂｉｔとＶＳＣ命令のフラッシュアドレスの上位２５ｂｉｔとを比較する。比較した結果、全ｂｉｔが一致し、かつＶｂｉｔが１であった場合には、ＡＡの該当インデックスアドレスのＶｂｉｔを０にして、キャッシュラインのフラッシュを行う。
【００２５】
次に、キャッシュミス時のキャッシュ更新処理（アップデーション処理）について図１０を用いて説明する。キャッシュミスが発生した場合は、キャッシュの内容を更新する必要がある。ＡＡのアップデーションについて考えると、２ｗａｙ以上のキャッシュ構成の場合には、キャッシュ追い出しアルゴリズム［例えば、ＬＲＵ（Ｌｅａｓｔ　Ｒｅｃｅｎｔｌｙ　Ｕｓｅｄ）等］によって更新するｗａｙを決定する。これは２ｗａｙなので、２ｂｉｔで表すこととする。
【００２６】
キュッシュミスしたロード命令のアドレス４０ｂｉｔの下位８ｂｉｔはブロック内アドレスなので不必要となり、次の下位７ｂｉｔを更新するキャッシュラインのインデックスアドレスとし、対応するラインにタグアドレス２５ｂｉｔを書込む。
【００２７】
また、Ｖｂｉｔ＝１として更新したキャッシュラインが有効であることを示す。これで、アップデーション処理は終了となる。ちなみに、ＦＡＡはＡＡのコピーであるため、ＡＡのアップデーションを行う場合には、ＦＡＡも同時にアップデーションを行うことが必要となる。
【００２８】
これらをふまえて、ベクトルユニットを複数の非同期動作ユニットにまたがる形で実現した場合の従来技術について、図２（ｂ）及び図５を参照して説明する。図５に示すように、ＣＰＵ５はマスタユニット６とスレーブユニット７とから構成されている。このような構成の場合、キャッシュのコヒーレンシを保ちかつ制御を簡略化するためにキャッシュを共有する必要が生じる。
【００２９】
キャッシュの共有を考えた場合、マスタユニット６のアドレスアレイ６５のみを使用することになる。このような構成の場合、ＶＳＣ命令が実行されるとＶｚのストアデータをマスタユニット６のベクトルユニット６１では信号線５００、スレーブユニット７のベクトルユニット７１では信号線６００を用いてメモリユニット８に書込む［図２（ｂ）のＳ３１］。
【００３０】
同時に、ベクトルユニット６１はＶｙのフラッシュアドレスを信号線５０１を使用してＦＡＡ６４へ出力し［図２（ｂ）のＳ３２］、ベクトルユニット７１は信号線６０１を使用してＦＡＡ６４へ出力する［図２（ｂ）のＳ３３］。最後のベクトル要素までフラッシュアドレスの出力が終わると、ベクトルユニット６１は信号線５０２を使用してキャッシュ制御部６３へＥＮＤ信号を出力し、ベクトルユニット７１は信号線６０２を使用してキャッシュ制御部６３へＥＮＤ信号を出力する。
【００３１】
マスタユニット６のＦＡＡ６４でキャッシュに登録されているアドレスとフラッシュアドレスとの比較を行う［図２（ｂ）のＳ３４］。この比較結果において、アドレスが一致していた場合には一致アドレスをＡＡ６５へ送出する［図２（ｂ）のＳ３５］。
【００３２】
最後に、ＡＡ６５の該当アドレスのフラッシュを行いかつキャッシュ制御回路６３がマスタユニット６とスレーブユニット７との両方からのＥＮＤ信号を受信していた場合にフラッシュ処理を終了する［図２（ｂ）のＳ３６］。
【００３３】
ここで、マスタユニット６とスレーブユニット７とは各々ベクトル要素２５６ずつ処理することができるものと仮定し、ベクトルユニット７１とＦＡＡ６４とを接続する信号線６０１に注目すると、１Ｔ（１クロック）当たり一要素のフラッシュアドレス出力をすると、インデックスアドレス７ｂｉｔ＋タグアドレス２５ｂｉｔ＝合計３２ｂｉｔの信号線が必要となる。
【００３４】
この場合、ベクトル要素数が２５６であれば、フラッシュアドレス出力が終了するまでに２５６Ｔかかることになり、非現実的な処理速度となる。ＶＳＣ命令のフラッシュアドレスとキャッシュアドレスとの比較が終了するまでは、次の命令のキャッシュフラッシュ処理やキャッシュミス時に発生するキャッシュの更新処理が行えないため、性能向上のためにはアドレス比較処理の高速化が必須となる。
【００３５】
高速化のために、１Ｔ当たりにベクトル要素ｎ個を処理できるようにすると、３２ｂｉｔ×ｎ本の信号線６０１が必要となり、ＬＳＩピン数が飛躍的に増大するという問題がある。これによって、上記の背景で述べたベクトルユニットを複数のＬＳＩに分割することで、ＣＰＵの多数ピン化にある程度の歯止めをかけることができるという効果が無くなってしまう。
【００３６】
そこで、本発明の目的は上記の問題点を解消し、ＬＳＩピンの大幅な多ピン化を行うことなく、キャッシュアドレスとＶＳＣ命令のストアアドレスとのアドレス比較処理を高速に行うことができる情報処理装置及びそれに用いるキャッシュフラッシュ制御方法を提供することにある。
【００３７】
【課題を解決するための手段】
本発明による情報処理装置は、ベクトルユニットを複数の非同期動作ユニットに分割した構成をとり、直接メモリへアクセスする命令によってキャッシュメモリのデータと前記メモリのデータとの不一致が発生した時に該当キャッシュラインを無効化するキャッシュフラッシュ制御を行う情報処理装置であって、前記メモリへのストアアドレスを示すフラッシュアドレスと前記キャッシュメモリへのアドレスとの比較処理を前記複数の非同期動作ユニットで分割して実行している。
【００３８】
本発明による他の情報処理装置は、ベクトルユニットをマスタユニットとスレーブユニットとに分割した構成をとり、直接メモリへアクセスする命令によってキャッシュメモリのデータと前記メモリのデータとの不一致が発生した時に該当キャッシュラインを無効化するキャッシュフラッシュ制御を行う情報処理装置であって、前記メモリへのストアアドレスを示すフラッシュアドレスと前記キャッシュメモリへのアドレスとの比較処理を前記マスタユニット及び前記スレーブユニットで分割して実行している。
【００３９】
本発明によるキャッシュフラッシュ制御方法は、ベクトルユニットを複数の非同期動作ユニットに分割した構成をとり、直接メモリへアクセスする命令によってキャッシュメモリのデータと前記メモリのデータとの不一致が発生した時に該当キャッシュラインを無効化するキャッシュフラッシュ制御を行うキャッシュフラッシュ制御方法であって、前記メモリへのストアアドレスを示すフラッシュアドレスと前記キャッシュメモリへのアドレスとの比較処理を前記複数の非同期動作ユニットで分割して実行している。
【００４０】
本発明による他のキャッシュフラッシュ制御方法は、ベクトルユニットをマスタユニットとスレーブユニットとに分割した構成をとり、直接メモリへアクセスする命令によってキャッシュメモリのデータと前記メモリのデータとの不一致が発生した時に該当キャッシュラインを無効化するキャッシュフラッシュ制御を行うキャッシュフラッシュ制御方法であって、前記メモリへのストアアドレスを示すフラッシュアドレスと前記キャッシュメモリへのアドレスとの比較処理を前記マスタユニット及び前記スレーブユニットで分割して実行している。
【００４１】
すなわち、本発明の情報処理装置のキャッシュフラッシュ制御方法は、ＶＳＣ（ベクトル・スキャタ）命令のフラッシュアドレスとキャッシュアドレスとの比較処理を複数のユニットで分割して実行し、アドレス一致したもののみをマスタユニット内のアドレスアレイに出力し、キャッシュフラッシュ処理を行つている。
【００４２】
これによって、本発明では、ベクトルユニットを複数の非同期動作ユニットに分割した構成を採用するシステムにおいて、非同期動作する異なるユニット間でのＶＳＣ命令のキャッシュフラッシュ制御をＬＳＩピンの大幅な多ピン化を行わずに解決し、かつキャッシュアドレスとＶＳＣ命令のストアアドレスとのアドレス比較処理を高速化することが可能となる。
【００４３】
【発明の実施の形態】
次に、本発明の実施例について図面を参照して説明する。図１は本発明の一実施例による情報処理装置内のＣＰＵ（中央処理装置）の構成を示すブロック図である。図１において、１つのＣＰＵ１はマスタユニット２とスレーブユニット３との２つの非同期動作部分に分割される。これらマスタユニット２及びスレーブユニット３は異なる２つのＬＳＩである場合が多い。しかしながら、今後、クロックの高速化によって、同一ＬＳＩ内部であっても、非同期に動作する複数のユニットが存在することもありうる。
【００４４】
図１において、ＣＰＵ１はマスタユニット２とスレーブユニット３とに分割され、外部にメモリユニット４が接続されている。マスタユニット２はスカラユニット２０とベクトルユニット２１とから構成され、スレーブユニット３もスカラユニット３０とベクトルユニット３１とから構成されている。尚、１００〜１０５，２００〜２０４はそれぞれ信号線である。
【００４５】
スカラユニット２０は命令制御回路２２と、キャッシュ制御回路２３と、フラッシュアドレスアレイ２４と、アドレスアレイ２５とから構成され、スカラユニット３０は命令制御回路３２と、キャッシュ制御回路３３と、フラッシュアドレスアレイ３４と、アドレスアレイ３５とから構成されている。但し、本実施例において、スカラユニット３０のキャッシュ制御回路３３及びアドレスアレイ３５は未使用である。
【００４６】
図２は本発明の一実施例によるキャッシュフラッシュ制御動作を示すタイムチャートである。これら図１及び図２を参照して本発明の一実施例によるキャッシュフラッシュ制御について説明する。以下、アドレスアレイをＡＡとし、フラッシュ処理に用いるＡＡのコピーであるフラッシュアドレスアレイをＦＡＡとし、ＶＳＣ命令のストアアドレスをフラッシュアドレスとする。
【００４７】
ＶＳＣ命令が実行されると、マスタユニット２のベクトルユニット２１は信号線１００を介してＶｚのストアデータをメモリユニット４に書込み、スレーブユニット３のベクトルユニット３１は信号線２００を介してＶｚのストアデータをメモリユニット４に書込む［図２（ａ）のＳ１］。
【００４８】
同時に、マスタユニット２のベクトルユニット２１は信号線１０１を介してＶｙのフラッシュアドレスをＦＡＡ２４へ出力し［図２（ａ）のＳ２］、スレーブユニット３のベクトルユニット３１は信号線２０１を使用してＶｙのフラッシュアドレスをＦＡＡ３４へ出力する［図２（ａ）のＳ５］。
【００４９】
最後のベクトル要素までフラッシュアドレスの出力が終わると、ベクトルユニット２１は信号線１０５を使用してキャッシュ制御部２３へＥＮＤ信号を出力し、ベクトルユニット３１は信号線２０４を使用してキャッシュ制御部２３へＥＮＤ信号を出力する。
【００５０】
マスタユニット２ではＦＡＡ２４でキャッシュに登録されているアドレスとフラッシュアドレスとの比較を行い［図２（ａ）のＳ３］、スレーブユニット３ではＦＡＡ３４でキャッシュに登録されているアドレスとフラッシュアドレスとの比較を行う［図２（ａ）のＳ６］。
【００５１】
マスタユニット２のＦＡＡ２４で比較した結果、アドレスが一致していた場合には一致アドレスをＡＡ２５へ送出し［図２（ａ）のＳ４］、スレーブユニット３のＦＡＡ３４で比較した結果、アドレスが一致していた場合には一致アドレスをＡＡ２５へ送出する［図２（ａ）のＳ７］。
【００５２】
最後に、ＦＡＡ２４及びＦＡＡ３４から送出されたアドレスを基にＡＡ２５の該当アドレスのフラッシュを行い、かつキャッシュ制御回路２３がマスタユニット２とスレーブユニット３との両方からのＥＮＤ信号を受信していた場合にフラッシュ処理を終了する［図２（ａ）のＳ８］。
【００５３】
ところで、キャッシュミス時のアップデーション処理（キャッシュミス時のキャッシュ更新処理）は、本実施例では信号線１０３を使用してＡＡ２５、信号線１０４を使用してＦＡＡ２４、信号線２０３を使用してＦＡＡ３４に対して行う。
【００５４】
図３は本発明の一実施例によるＣＰＵ１の詳細な構成を示すブロック図である。図３において、マスタユニット２はスカラユニット２０と、ベクトルユニット２１とから構成されている。スカラユニット２０はキャッシュ制御回路２３と、ＦＡＡ２４と、ＡＡ２５と、フラッシュアドレスバッファ（以下、ＦＡＢＦとする）２６と、セレクタ２７とから構成されている。ベクトルユニット２１はベクトルレジスタ２１ａを備えている。
【００５５】
スレーブユニット３はスカラユニット３０と、ベクトルユニット３１とから構成されている。スカラユニット３０はＦＡＡ３４と、未使用のＡＡ３５と、ＦＡＢＦ３６と、セレクタ３７とから構成されている。ベクトルユニット３１はベクトルレジスタ３１ａを備えている。尚、１０１〜１０８，２０１〜２０７はそれぞれ信号線である。
【００５６】
図４は図３のＣＰＵ１におけるキャッシュフラッシュ制御動作を示すタイムチャートである。これら図３及び図４を参照してＣＰＵ１におけるキャッシュフラッシュ制御動作について説明する。
【００５７】
ＶＳＣ命令が実行されると、メモリユニット４への書込みが行われ（図４のＳ１１）、これと同時に、ベクトルレジスタ２１ａからＦＡＡ２４にＶＳＣ命令のフラッシュアドレスが出力され（図４のＳ１２）、アドレス比較が行われる（図４のＳ１３）。
【００５８】
このとき同時に、ベクトルレジスタ３１ａからＦＡＡ３４にＶＳＣ命令のフラッシュアドレスが出力され（図４のＳ１６）、アドレス比較が行われる（図４のＳ１７）。
【００５９】
アドレス比較はインデックスアドレス７ｂｉｔ及びタグアドレス２５ｂｉｔの合計３２ｂｉｔの比較となる。アドレスが一致した場合、ＦＡＡ２４はアドレスの一致したインデックスアドレス７ｂｉｔとｗａｙ番号とをＦＡＢＦ２６へ出力する（図４のＳ１４）。また、ＦＡＡ３４はアドレスの一致したインデックスアドレス７ｂｉｔとｗａｙ番号とをＦＡＢＦ３６へ出力する（図４のＳ１８）。
【００６０】
ＦＡＢＦ２６はアドレスアレイ２５へのアドレス出力時に、スレーブユニット３とのアドレス送出が競合した場合、アドレスの一致したインデックスアドレス７ｂｉｔとｗａｙ番号とを一時的に格納するバッファである。ＦＡＢＦ２６はアドレス送出の競合がない場合、信号線１０６を使ってバイパス可能である。信号線１０６（バイパス）と信号線１０７（ＦＡＢＦ２６の出力）との選択はセレクタ２７で行われる。
【００６１】
ＦＡＢＦ３６はスレーブユニット３からＡＡ２５へのアドレス出力時に、信号線２０７の本数が少なく、アドレス転送性能がネックになる場合に、アドレスの一致したインデックスアドレス７ｂｉｔとｗａｙ番号とを一時的に格納するバッファである。ＦＡＢＦ３６は十分なアドレス転送性能がある場合、信号線２０５を使ってバイパス可能である。信号線２０５（バイパス）と信号線２０６（ＦＡＢＦ３６の出力）との選択はセレクタ３７で行われる。
【００６２】
当然のことながら、これらのアドレス転送性能に不足がない構成の場合には、ＦＡＢＦ２６と信号線１０７とが存在しない構成、ＦＡＢＦ３６と信号線２０６とセレクタ３７とが存在しない構成も可能である。これらのＦＡＢＦ２６，３６を使用しない場合、図４のＳ１５及びＳ１９の動作はなくなる。
【００６３】
マスタユニット２内で比較されて一致したインデックスアドレス７ｂｉｔとｗａｙ番号とがＦＡＢＦ２６から出力され（図４のＳ１５）、スレーブユニット３内で比較されて一致したインデックスアドレス７ｂｉｔとｗａｙ番号とがＦＡＢＦ３６から出力され（図４のＳ１９）、セレクタ２７で競合調停され、ＡＡ２５のキャッシュフラッシュ処理を行う（図４のＳ２０）。
【００６４】
ＶＳＣ命令の全ベクトル要素２５６個のストアアドレスが出力が終わった場合、ベクトルユニット２１は信号線１０５を通してキャッシュ制御回路２３へＥＮＤ信号を出力し、ベクトルユニット３１は信号線２０４を通してキャッシュ制御回路２３へＥＮＤ信号を出力する。
【００６５】
キャッシュ制御回路２３は両方のＥＮＤ信号の受信を確認すると、ＶＳＣ命令のキャッシュフラッシュ処理終了とし、次の命令を実行することができる。それから、キャッシュミスが発生してキャッシュの更新作業が必要になった場合には、ＡＡ２５のみでなく、そのコピーであるＦＡＡ２４、ＦＡＡ３４の更新が必要となる。そのため、キャッシュ制御回路２３から信号線１０４を使用してＦＡＡ２４の更新を行い、キャッシュ制御回路２３から信号線２０３を使用してＦＡＡ３４の更新を行い、キャッシュ制御回路２３から信号線１０３を使用してＡＡ２５の更新を行う。
【００６６】
このように、本発明では、上記の構成をとる場合、従来技術と比較して、ベクトルレジスタ３１ａからスレーブユニット３内のスカラユニット３０にあるＦＡＡ３４を使用してアドレス比較を行うために、３２ｂｉｔのＶＳＣ命令のフラッシュアドレスをスレーブユニット３からマスタユニット２へ出力せずにすみ、ＬＳＩピン数が大幅に増加することはない。
【００６７】
但し、キャッシュミス時にＦＡＡ２４、ＦＡＡ３４、ＦＡＡ２５の同時更新が必要なため、信号線１０３，１０４，２０３が必要となるが、スカラロード命令によるキャッシュミスであれば、１命令１アドレスのため、ベクトル命令のようなｎ要素を同時に処理する必要はなく、「インデックスアドレス７ｂｉｔ＋タグアドレス２５ｂｉｔ＋ｗａｙ番号（例えば、２ｗａｙの場合２ｂｉｔ）＝合計３４ｂｉｔ」で十分であり、ＬＳＩピン数の増加も少ない。
【００６８】
また、更なる効果として、マスタユニット２内のＦＡＡ２４とスレーブユニット３内のＦＡＡ３４とで同時にアドレス比較しているため、約２倍のアドレス比較速度が得られる。アドレス一致した場合にＡＡ２５へ出力するためのアドレスは、先に述べたように、「インデックスアドレス７ｂｉｔとｗａｙ番号（例えば、２ｗａｙの場合２ｂｉｔ）＝合計９ｂｉｔ」となり、従来技術の３２ｂｉｔ×ｎ（ｎは１Ｔで同時に処理するベクトル要素数）と比較すると、大幅に少なくて良い。
【００６９】
さらに、実際のプログラムではＶＳＣ命令のストアアドレスを示すフラッシュアドレスとキャッシュアドレスとが一致する可能性が非常に低いデータも得られており、ベクトル命令といえども信号線２０７をｎ倍する必要はなく、ＬＳＩピン数削減の効果が非常に大きい。
【００７０】
上述したように、本発明では、ベクトルユニットを複数の非同期動作ユニットに分割した構成を採用するシステムにおいて、非同期動作する異なるユニット間でのＶＳＣ命令のキャッシュフラッシュ制御をＬＳＩピンの大幅な多ピン化を行わずに解決し、かつキャッシュアドレスとフラッシュアドレスとのアドレス比較処理を高速化することができる。
【００７１】
【発明の効果】
以上説明したように本発明は、ベクトルユニットをマスタユニットとスレーブユニットとに分割した構成をとり、直接メモリへアクセスする命令によってキャッシュのデータとメモリのデータとの不一致が発生した時にキャッシュラインを無効化するキャッシュフラッシュ制御を行うシステムにおいて、メモリへのストアアドレスとキャッシュへのアドレスとの比較処理をマスタユニット及びスレーブユニットで分割して実行することによって、ＬＳＩピンの大幅な多ピン化を行うことなく、キャッシュアドレスとＶＳＣ命令のストアアドレスとのアドレス比較処理を高速に行うことができる情報処理装置及びそれに用いるキャッシュフラッシュ制御方法を提供するという効果が得られる。
【図面の簡単な説明】
【図１】本発明の一実施例による情報処理装置内のＣＰＵの構成を示すブロック図である。
【図２】（ａ）は本発明の一実施例によるキャッシュフラッシュ制御動作を示すタイムチャートであり、（ｂ）は従来のキャッシュフラッシュ制御動作を示すタイムチャートである。
【図３】本発明の一実施例によるＣＰＵの詳細な構成を示すブロック図である。
【図４】図３のＣＰＵにおけるキャッシュフラッシュ制御動作を示すタイムチャートである。
【図５】従来のＣＰＵの詳細な構成を示すブロック図である。
【図６】ＶＳＣ命令の命令仕様を示す図である。
【図７】アドレスのｂｉｔ例を示す図である。
【図８】キャッシュの構造を説明するための図である。
【図９】キャッシュフラッシュ処理を説明するための図である。
【図１０】キャッシュアップデーション処理を説明するための図である。
【符号の説明】
１　ＣＰＵ
２　マスタユニット
３　スレーブユニット
４　メモリユニット
２０，３０　スカラユニット
２１，３１　ベクトルユニット
２２，３２　命令制御回路
２３，３３　キャッシュ制御回路
２４，３４　フラッシュアドレスアレイ
２５，３５　アドレスアレイ
２６，３６　フラッシュアドレスバッファ
２７，３７　セレクタ
【図１】
2004013868.tif 000003
【図２】
2004013868.tif 000004
【図３】
2004013868.tif 000005
【図４】
2004013868.tif 000006
【図５】
2004013868.tif 000007
【図６】
2004013868.tif 000008
【図７】
2004013868.tif 000009
【図８】
2004013868.tif 000010
【図９】
2004013868.tif 000011
【図１０】
2004013868.tif 000012