(57)【特許請求の範囲】
【請求項１】
命令とその命令に関連したデータとを記憶するキャッシュと、
キャッシュ記憶可能な反復命令を検出する命令タイプ検出装置と、
キャッシュ記憶可能な反復命令を前記命令タイプ検出装置が検出したのに応じて、計数レジスタの内容により決定する所定回数だけキャッシュ非動作指示信号を出力する実行ユニットと、
少なくとも１つのキャッシュ・ライン幅を記憶可能な、少なくとも１つの記憶バッファと、
を備え、
前記キャッシュ非動作指示信号が出力された場合に、
前記実行ユニットが、前記キャッシュ記憶可能な反復命令に関連したデータを、前記キャッシュに記憶させずに前記記憶バッファに記憶させて使用する、ことを特徴とする処理装置。
【請求項２】
前記キャッシュ記憶可能な反復命令は、
比較ストリング、スキャン・ストリング、ロード・ストリング、記憶ストリング、ＯＵＴストリング、ＩＮストリング、移動ストリング、
の中から選ばれた少なくとも１つの命令タイプを含む、ことを特徴とする請求項１に記載の処理装置。
【請求項３】
前記記憶バッファは２つのレジスタを有する、ことを特徴とする請求項１または２に記載の処理装置。
【請求項４】
前記レジスタは、キャッシュ・ライン幅の２倍のレジスタ幅を有することを特徴とする請求項３に記載の処理装置。
【請求項５】
命令とその命令に関連したデータとを記憶する第１キャッシュおよび第２キャッシュと、
キャッシュ記憶可能な反復命令を検出する命令タイプ検出装置と、
キャッシュ記憶可能な反復命令を前記命令タイプ検出装置が検出したのに応じて、計数レジスタの内容により決定する所定回数だけキャッシュ非動作指示信号を出力する実行ユニットと、
少なくとも１つのキャッシュ・ライン幅を記憶可能な、少なくとも１つの記憶バッファと、
前記キャッシュ非動作指示信号を受け取り、命令及びその命令に関連したデータの前記第２キャッシュへの記憶を制御するキャッシュ制御部と、
を備え、
前記キャッシュ非動作指示信号が出力された場合に、
前記実行ユニットが、前記キャッシュ記憶可能な反復命令に関連したデータを、前記第２キャッシュに記憶させずに前記記憶バッファに記憶させて使用する、ことを特徴とする情報処理システム。
【請求項６】
前記キャッシュ記憶可能な反復命令は、
比較ストリング、スキャン・ストリング、ロード・ストリング、記憶ストリング、ＯＵＴストリング、ＩＮストリング、移動ストリング、
の中から選ばれた少なくとも１つの命令タイプを含む、ことを特徴とする請求項５に記載の情報処理システム。
【請求項７】
前記記憶バッファは２つのレジスタを有する、ことを特徴とする請求項５または６に記載の情報処理システム。
【請求項８】
前記レジスタは、キャッシュ・ライン幅の２倍のレジスタ幅を有することを特徴とする請求項７に記載の情報処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は中央処理装置（以下、ＣＰＵと称す）の分野に関し、特にＣＰＵ支援キャッシュに関する。
【０００２】
【従来の技術】
高性能のコンピュータ・システムの需要が増大するにつれ、そうしたコンピュータ・システムに組み込まれたＣＰＵの設計はますます洗練されてきている。高い性能を得るために、ＣＰＵは、システム・メモリに比べてＣＰＵに近接するように構成された内部キャッシュ（Ｌ１）あるいは外部キャッシュ（Ｌ２）を利用する。キャッシュはＣＰＵとシステム・メモリ間にある高速記憶装置である。通常、初めにデータあるいは命令が主メモリからアクセスされ、コピーがキャッシュに入れられる。このデータあるいは命令を再度アクセスすれば、キャッシュが主メモリよりも高速なので迅速に検索することが可能である。しかし、通常、キャッシュの記憶容量は主メモリに代表されるメモリの記憶容量よりはるかに小さい。それゆえ、キャッシュの統一技術が、データおよび命令をキャッシュ内でどのように維持するか決定するため存在する。これらの技術は「高い瞬断率」を維持すること（できるかぎり頻繁にキャッシュから命令やデータを得ること）に依存する。
【０００３】
スタティック等速呼出しメモリ（以後、ＳＲＡＭと称す）である高速装置から成るキャッシュは、ＣＰＵが前回使用したデータを記憶することによりＣＰＵの性能を向上する。ＣＰＵに近接していることと、高速であることで、キャッシュはシステム・メモリからデータを得るための長いメモリ・サイクルを起動することなく、ＣＰＵがかなり速く必要なデータにアクセスすることを可能とする。
【０００４】
ＳＲＡＭ装置を組み込むコストのため、キャッシュはサイズが限られる。今日の、通常のＬ１キャッシュのサイズは８Ｋバイトから６４Ｋバイトであり、Ｌ２キャッシュのサイズは１２８Ｋバイトから１Ｍバイトである。一般的に、コンピュータ・システムやＣＰＵは、新たなキャッシュ・データの転送がキャッシュの容量の限界を越えることになると、古いキャッシュ・データを封殺、つまり追放するように設計されている。一般的に使用されているＣＰＵプラットフォームの１つはＩｎｔｅｌ  Ｘ８６（商標）グループのプロセッサであり、そのいくつかのものがＬ１キャッシュを有するＣＰＵを提供する。例えば、Ｉｎｔｅｌ  ４８６  プロセッサは８Ｋバイトの内部キャッシュＬ１を含む。ところが、Ｉｎｔｅｌ  Ｐｅｎｔｉｕｍ  Ｐｒｏｃｅｓｓｏｒ（商標）は１６ＫバイトのＬ１キャッシュと５１２ＫバイトのＬ２キャッシュを有する。
【０００５】
【発明が解決しようとする課題】
しかし、Ｘ８６グループのプロセッサに有効なソフトウェアの多くは、反復（ＲＥＰ）命令のような特定の命令のタイプを使用し、不要なデータが有用なキャッシュ・データを追い出すことになる。この有用なＣＰＵデータの追放は、こうしたデータはＣＰＵにより作られた長いシステム・メモリ・サイクルにより再度満たされなくてはならないので、ＣＰＵの性能を低下させる。ＲＥＰ命令はデータ・ブロックを操作するために使用される。この操作の目的は、メモリのある領域から他の領域へデータを移動させ、特定のパターンあるいは類似のオペレーションを有するデータ・ブロックを探索するために、あるデータ・ブロックを別のデータ・ブロックと比較させることである。ＲＥＰ命令の長所は、データ・ブロックが単一の命令で操作可能なことであるが、ＲＥＰ命令はキャッシュを追い出す傾向がある。すなわち、反復オペレーションがデータ・ブロックを移動させていると、そのデータ・ブロックもそのキャッシュ内に入ってしまい、既にそのキャッシュ内にあるデータ・ブロックを除去してしまう。多くの場合、データはキャッシュにあるが、ＣＰＵはそれをもう必要としない。しかし、ＣＰＵが必要としていたデータが除去され、そのデータは付随の低機能でメモリからアクセスしなければならない。それゆえ、反復ストリング探索命令が、有用なキャッシュ・データの損失を犠牲にしても不要なストリング・データでＬ１キャッシュを満たすようにしている。従って、ある命令がＣＰＵで実行される時のＣＰＵ性能を改良する必要がある。
【０００６】
【課題を解決するための手段】
本発明による中央処理装置（ＣＰＵ）は、所定の幅を有するデータ・バスを介してキャッシュ装置に接続されている。このＣＰＵは、命令タイプ・フィールドを持つＣＰＵ命令を処理するための命令処理ユニットを有する。この命令処理ユニットはキャッシュ記憶可能命令タイプあるいはキャッシュ記憶不可能命令タイプを検出する命令タイプ検出装置を有する。ＣＰＵはその命令を実行するための実行ユニットも有する。その実行ユニットは、命令タイプ検出装置により検出された命令タイプに応じて、検出した命令タイプに付随したデータがキャッシュ記憶可能かどうかを示すＣＰＵ出力信号を提供する。
【０００７】
【発明の実施の形態】
図１は本発明のＣＰＵを組み込んだコンピュータ・システムの一例を示すブロック図を示す。コンピュータ・システム１００は、ＩＢＭ  ＰＣ（商標）あるいはそれと互換性のあるシステムのようなパーソナル・コンピュータ・システムから成る。このコンピュータ・システム１００は、独立型デスクトップ・ワークステーションとして操作可能、あるいはクライアント・ステーションかサーバ・ステーションのどちらかとして操作する大型コンピュータ・ネットワークの一部としても可能である。
【０００８】
このコンピュータ・システム１００は２つの処理系統を有し、その一方はホスト処理系統１１０で、オペレーティング・システムやアプリケーションにより特定されるような、高レベルの処理機能を実行し、他方はローカル処理系統１２０で、このコンピュータ・システム１００用の記憶媒体インターフェースや通信インターフェースを提供するような周辺機能を実行する。ホスト処理系統１１０とローカル処理系統１２０は入力／出力（Ｉ／Ｏ）拡張バス１３０を介して互いに接続されている。Ｉ／Ｏ拡張バス１３０は多くの適切なＩ／Ｏ拡張バス・プロトコルの１つに従い、データ・ブロックをそのＩ／Ｏ拡張バス１３０を通って転送するような、特定の機能を実行するためローカル・インターフェース制御装置がバスの制御をおこなうことを可能とする。
【０００９】
ホスト処理系統１１０はコンピュータ・システム１００の全体的な機能を制御するために単一の中央処理装置１０３、あるいは多重処理システムにおいては、複数の中央処理装置を有する。中央処理装置１０３は多数の市販されている物の１つであり、例えば、Ｉｎｔｅｌ社製のＰｅｎｔｉｕｍ  Ｐｒｏｃｅｓｓｏｒ（商標）やＩＢＭ社製のＰｏｗｅｒＰＣ（商標）などがある。周知のように、中央処理装置１０３は読取り専用記憶装置（ＲＯＭ）１０１に記憶されたファームウェア命令を実行することにより初めて操作を行う。ファームウェア命令はＢａｓｉｃ  Ｉ／Ｏ  Ｓｙｓｔｅｍ（基本入出力ルーチン）あるいは  ＢＩＯＳとしても知られており、付属装置を検知するための命令およびパワーオン自己試験（ＰＯＳＴ）の命令を含む。一般的に、ファームウェア命令の完了の時に、中央処理装置１０３はローカル処理系統の記憶装置１１４からオペレーティング・システムをシステム・メモリ１０７にロードすることによりオペレーティング・システム命令を実行する。中央処理装置１０３、ＲＯＭ１０１およびシステム・メモリ１０７間でのデータ転送はメモリ制御装置１０９により制御される。ところが、ホスト処理系統１１０とＩ／Ｏ拡張バス１３０間のデータの転送はＩ／Ｏブリッジ・インターフェース１１１により制御される。プロセッサの性能を向上させるために、中央処理装置１０３は内部キャッシュ（Ｌ１キャッシュ）１０４とオプションの外部キャッシュ（Ｌ２キャッシュ）１０５を有し、直前に使用したデータおよび命令を記憶し、長いシステム・メモリのアクセス・サイクルを起動する必要は回避できる。キャッシュは一般的に高速のスタティック等速呼出しメモリ（ＳＲＡＭ）から成り、中央処理装置１０３に近接した位置に配置されている。Ｌ１、Ｌ２キャッシュからのデータ転送、およびＬ１、Ｌ２キャッシュへのデータ転送は公知のキャッシュ制御装置１０６により制御される。そのキャッシュ制御装置は、キャッシュ・ラインと呼ばれる複数のデータ・バス幅でデータを記憶したりフェッチする。Ｉ／Ｏブリッジ・インターフェース１１１は、メモリ制御装置１０９と中央処理装置１０３間を外部キャッシュ制御装置１０６とＩ／Ｏ拡張バス１３０を介してインターフェースするように設計されている。この中央処理装置１０３は適切なバス・ブリッジＩ／Ｏブリッジ・インターフェース１１１を介してＩ／Ｏ拡張バス１３０、続いてローカル処理系統１２０とインターフェースを行う。
【００１０】
後に詳細に説明するように、記憶装置１１４はローカル・インターフェース制御装置１１３を介してＩ／Ｏ拡張バス１３０とインターフェースを行う。図示のホスト処理系統１１０は単に一例を示したものであり、アプリケーションにより様々なシステム構成（単一処理あるいは多重処理）がホスト処理系統１１０の機能上の要求を履行実行するように設計可能である。
【００１１】
ローカル処理系統１２０では、コンピュータ・システム１００が複数のローカル・インターフェース制御装置１１３を有する。この制御装置１１３は、例えばＳＣＳＩインターフェース（小型コンピュータ・システム・インターフェース）であり、様々な周辺装置１１５と接続されている。このように、記憶装置、通信装置、印刷装置、ネットワーク接続装置、画像読取り装置等が加えられシステムの機能や特徴を実行する。例えば、コンピュータ・システム１００は、記憶装置として安価なドライバの冗長配列（ＲＡＩＤ）を備えた高速ワイドＳＣＳＩローカル・インターフェース制御装置を有するサーバ・ステーションとして利用することができる。
【００１２】
図２には、中央処理装置（ＣＰＵ）２００の一例のブロック図が示されている。ＣＰＵ２００は、内部Ｌ１命令キャッシュ装置２０５からの命令を受け取る命令処理装置２０１を含む。Ｌ１命令キャッシュ装置２０５は複数の命令を記憶する。その命令は、処理のために命令フェッチ制御装置２０３によりフェッチされる。
【００１３】
公知のように、Ｌ１命令キャッシュ装置２０５は、データ・バス２３５、アドレス・バス２３７、制御バス２３９から成るＣＰＵバス２３０を通じて命令を受け取り、かつ記憶する。ＣＰＵローカル・バスは、図１に示したＬ２外部キャッシュおよびシステム・メモリのような外部構成要素とＣＰＵをインターフェースを行うためのＣＰＵインターフェース装置２２３と接続され、かつインターフェースを行う。データ・バス２３５とアドレス・バス２３７は、所定のビット数から成る所定の幅を有する。データおよびアドレス・バスの幅はデータ転送能力およびＣＰＵによりアドレス可能なシステム・メモリの領域のサイズを特徴づける。従って、例えばデータ・バス２３５は１６ビット、３２ビット、あるいは６４ビットのデータ幅を持ち、またアドレス・バスは１６から６４ビットの幅を持つ。特に命令処理装置は命令のタイプを判定し、それを１以上の実行ユニット２２１に適切に送る。公知のように、超スカラＣＰＵは複数のタスクを同時に実行するための複数の実行ユニットを有する。実行ユニットは、例えば、命令によって提供されたオペランド・データについて数学的オペレーションあるいは論理オペレーションを行う。この実行ユニットは、ＣＰＵバスを通じて受け取ったデータあるいは実行ユニット２１７から受け取ったデータを記憶するＬ１命令キャッシュと同様のＬ１データ・キャッシュ２０７から必要なデータを受け取る。また、ＣＰＵは、命令３００により指図された命令オペランド、一時的なデータ、インデックスを公知の方法で記憶するための、ＡＸからＥＸで識別した一組の汎用レジスタを有する。命令３００を受け取った時の命令処理装置は、その命令を処理して、復号化により命令タイプを判定する。命令の復号化は命令復号装置２０９により行われる。その命令を実行する際、実行ユニットはＣＰＵインターフェース装置２２３を通じてデータ・バス２３５、アドレス・バス２３７、および／あるいは制御バス２３９に信号を出力する。
【００１４】
図３には、命令３００の例を図解したものを示す。図示の命令３００は、Ｉｎｔｅｌ社により提供されたＸ８６プロセッサのプラットホームに使用された複雑命令セット・コマンド（ＣＩＳＣ）命令フォーマットと互換性のあるＣＩＳＣフォーマットを有する命令である。命令３００は、プレフィックス部３０１、実行ユニット２２１により行われるべき論理コマンドあるいは数学的コマンドを定義するＯＰコード部３０３、アドレス指定モード特定フィールド３０５、アドレス置換フィールド３０７、および即時データ・フィールド３０９を有する。公知のように、ＣＩＳＣ命令は変化可能の長さを有し、いくつかのＯＰコードは命令フィールドの全てを利用しないことがある。Ｉｎｔｅｌ社のＣＩＳＣ命令フォーマットおよびプログラミングは当業界では公知となっている。
【００１５】
本発明によれば、命令処理装置２０１はＯＰコードより先の命令のタイプが反復可能なタイプかどうか判定するための命令タイプ検出装置２１１を有する。例えば、プレフィックス部３０１が反復オペレーションを示していれば、この命令タイプ検出装置２１１はこの反復命令タイプを検出するようになっている。実行ユニット２１７は、この命令タイプ検出装置２１１の反復可能命令タイプの検出に応じて、検出した命令に組み合わされたデータがキャッシュに入れられないことを示す信号を生成する。Ｄｏｅｓ  Ｎｏｔ  Ｃａｃｈｅ  （ＤＮＣ）（キャッシュ非作動）指示信号２１５がバス・インターフェース装置２２３を経由してＣＰＵから出力される。ＣＰＵ１０３はさらに１組のバッファ２１９を有しており、それらのバッファは検出された反復命令に関連したデータについてのオペレーションを行うために一時的な記憶域として使用される。望ましい実施例では、１組のバッファ２１９は２個のバッファから成り、各々が２つのキャッシュ・ライン幅を持つ。すなわち、このバッファ組２１９の各バッファの幅はキャッシュ・ラインのサイズの２倍に等しい。このバッファのサイズは反復移動命令による全てのデータが適切に記憶されることを保証する。
【００１６】
ＤＮＣ信号は、キャッシュ可能な（メモリにマップされないＩ／Ｏ等）データあるいは命令のフェッチ操作あるいは記憶操作と共に用いられ、以下に示す方法でデータを取り扱うための全てのキャッシュを単純に示している。
【００１７】
（プログラム・リスト中の英文はコマンドなどを表す記号であり、翻訳できない）
ＩＦデータをプロセッサ内にロードすべき  ＡＮＤ  ＤＮＣ信号がセットされている
ＴＨＥＮ
ＩＦデータがキャッシュ内に現在ある
ＴＨＥＮプロセッサにそのデータを含むキャッシュ・ラインをｇｉｖｅ
ＥＬＳＥデータがキャッシュ内に現在ない
ＤＯ
データのキャッシュ・ラインをｆｅｔｃｈ
プロセッサにそのデータを含んだキャッシュ・ラインをｇｉｖｅ
キャッシュにキャッシュ・ラインをｓｔｏｒｅしない
ＥＮＤ
ＩＦプロセッサからデータを記憶すべき  ＡＮＤ  ＤＮＣ信号がセットされている
ＴＨＥＮ
ＩＦデータがキャッシュ内に現在ある
ＴＨＥＮプロセッサからのデータでキャッシュをｕｐｄａｔｅ
ＥＬＳＥデータがキャッシュ内に現在ない
ＤＯ
データを含むキャッシュ・ラインをｏｕｔｐｕｔ
キャッシュにキャッシュ・ラインをｓｔｏｒｅせず、またキャッシュ・メモリをｕｐｄａｔｅすることもせず
ＥＮＤ
ＩＦ  ＤＮＣ信号がセットされてない
ＴＨＥＮデータはＲＥＰ命令と関連してない
【００１８】
反復（ＲＥＰ）命令は命令の１クラスであり、その命令は所定回数だけ自動的に反復させられる。命令を再実行する回数は、その命令がＣＰＵ内の特定の汎用レジスタ（ＧＰＲ）の内容により実行させられる時に決定する。この汎用レジスタは計数レジスタ（ＣＲＥＧ）と称される。
【００１９】
反復可能な命令は以下に示す。
【００２０】
比較ストリング（ＣＭＰＳ）
ソース・レジスタにより指摘されたメモリ・アドレスでスタートするストリングと宛先レジスタにより指摘されたメモリ・アドレスでスタートするストリングを比較する。命令の特定のＯＰコードに応じて、比較はバイト、ワード、あるいはダブルワードを基本に行うことができる。ＲＥＰオペレーションにたいし、ソースおよび宛先アドレスが増加され、次に続くバイト、ワード、あるいはダブルワードが比較される。このオペレーションはＣＲＥＧにより指定された回数繰り返す。
【００２１】
スキャン・ストリング（ＳＣＡＳ）
ソース・レジスタの内容と宛先レジスタにより指摘されたメモリ・アドレスでスタートするストリングを比較する。命令の特定のＯＰコードに応じて、比較はバイト、ワード、あるいはダブルワードを基本に行うことができる。ＲＥＰオペレーションにたいし、宛先アドレスが増加され、次に続くバイト、ワード、あるいはダブルワードが比較される。このオペレーションはＣＲＥＧにより指定された回数繰り返す。
【００２２】
ロード・ストリング（ＬＯＤＳ）
ソース・レジスタにより指摘されたメモリ・アドレスでスタートするストリングで宛先レジスタをロードする。命令の特定のＯＰコードに応じて、ロードはバイト、ワード、あるいはダブルワードを基本に行うことができる。ＲＥＰオペレーションにたいし、ソース・アドレスが増加され、次に続くバイト、ワード、あるいはダブルワードがロードされる。このオペレーションはＣＲＥＧにより指定された回数繰り返す。
【００２３】
記憶ストリング（ＳＴＤＳ）
宛先レジスタにより指摘されたメモリ・アドレスでソース・レジスタの内容を記憶させる。命令の特定のＯＰコードに応じて、記憶はバイト、ワード、あるいはダブルワードを基本に行うことができる。ＲＥＰオペレーションにたいし、宛先アドレスが増加され、ソース・レジスタの内容がメモリの次に続くバイト、ワード、あるいはダブルワード・アドレスに記憶される。このオペレーションはＣＲＥＧにより指定された回数繰り返す。
【００２４】
ＯＵＴストリング（ＯＵＴＳ）
宛先レジスタにより指摘されたＩ／Ｏポート・アドレスに、ソース・レジスタにより指摘されたメモリ位置の内容を記憶させる。命令の特定のＯＰコードに応じて、記憶はバイト、ワード、あるいはダブルワードを基本に行うことができる。ＲＥＰオペレーションにたいし、ソース・アドレスが増加され、メモリの次に続くバイト、ワード、あるいはダブルワードが宛先レジスタにより指摘されたＩ／Ｏポート・アドレスに記憶される。このオペレーションはＣＲＥＧにより指定された回数繰り返す。
【００２５】
ＩＮストリング（ＩＮＳ）
ソース・レジスタにより指摘されたＩ／Ｏポート・アドレスからのデータを宛先レジスタにより指摘されたメモリ位置にロードさせる。命令の特定のＯＰコードに応じて、ロードはバイト、ワード、あるいはダブルワードを基本に行うことができる。ＲＥＰオペレーションにたいし、宛先アドレスが増加される。このオペレーションはＣＲＥＧにより指定された回数繰り返す。
【００２６】
移動ストリング（ＭＯＶＳ）
ソースの内容により指摘されたメモリ位置のデータを宛先位置により指摘されたメモリ位置に移動させる。命令の特定のＯＰコードに応じて、記憶はバイト、ワード、あるいはダブルワードを基本に行うことができる。ＲＥＰオペレーションにたいし、ソースおよび宛先アドレスが増加され、メモリの次に続くバイト、ワード、あるいはダブルワードが移動させられる。このオペレーションはＣＲＥＧにより指定された回数繰り返す。
【００２７】
上記定義のＲＥＰ命令の各々に対する本発明の擬似コードの履行実行を説明する。
まず第一に、以下のオペレーションの全てに対し、反復すべき命令の実行の前に実行すべき反復オペレーションの回数をＣＲＥＧにロードさせておく。以下のオペレーション全てに対し、２つのバッファ２１９はＡバッファとＢバッファと称する。
【００２８】
ＲＥＰ  ＣＭＰＳ
実行ユニットのバッファをＣＨＥＣＫ。
ＩＦ必要なデータが現在これらバッファにある
ＴＨＥＮ
キャッシュをアクセスする必要なし。
ＥＬＳＥ
ＤＯ
実行ユニットによりデータ読取り要求をＩＳＳＵＥ。
ＤＮＣ信号がＳＥＴされる。
データのキャッシュ・ライン量がＡバッファにＬＯＡＤされる
ＷＨＥＮロードが完了する、
ＤＮＣ信号がＲＥＳＥＴされる。
第２データ読取り要求が実行ユニットによりＩＳＳＵＥされる。
ＤＮＣ信号がＳＥＴされる。
データのキャッシュ・ライン量がＢバッファにＬＯＡＤされる。
ＷＨＥＮロードが完了する、
ＤＮＣ信号がＲＥＳＥＴされる。
ＥＮＤ
比較オペレーションがＥＸＥＣＵＴＥされる。
ＣＲＥＧをＤＥＣＲＥＭＥＮＴし、かつＩＦゼロでない、オペレーションをＲＥＰＥＡＴ。
【００２９】
ＲＥＰ  ＳＣＡＳ
実行ユニットのバッファをＣＨＥＣＫ。
ＩＦ要求のデータが現在バッファにある
ＴＨＥＮキャッシュにアクセスする必要なし
ＥＬＳＥ
ＤＯ
データ読取り要求が実行ユニットによりＩＳＳＵＥされる。
ＤＮＣ信号がＳＥＴされる。
データのキャッシュ・ライン量がＡバッファにＬＯＡＤされる。
ＷＨＥＮロードが完了する、
ＴＨＥＮ  ＤＮＣ信号がＲＥＳＥＴされる。
ＥＮＤ
スキャン・オペレーションがＥＸＥＣＵＴＥされる。
ＣＲＥＧをＤＥＣＲＥＭＥＮＴし、かつＩＦゼロでない、オペレーションをＲＥＰＥＡＴ。
【００３０】
ＲＥＰ  ＬＯＤＳ
実行ユニットのＡバッファをＣＨＥＣＫ。
ＩＦ必要なデータが現在このバッファにある
ＴＨＥＮキャッシュをアクセスする必要なし。
ＥＬＳＥ
ＤＯ
データ読取り要求が実行ユニットによりＩＳＳＵＥされる。
ＤＮＣ信号がＳＥＴされる。
データのキャッシュ・ライン量がＡバッファにＬＯＡＤされる。
ＷＨＥＮロードが完了する
ＤＮＣ信号がＲＥＳＥＴされる。
ＥＮＤ
ロード・オペレーションがＥＸＥＣＵＴＥされる。
ＣＲＥＧをＤＥＣＲＥＭＥＮＴし、かつＩＦゼロでない、オペレーションをＲＥＰＥＡＴ。
【００３１】
ＲＥＰ  ＳＴＤＳ
データ記憶が実行ユニットによりＩＳＳＵＥされる。
ＤＮＣ信号がＳＥＴされる。
ＷＨＥＮ記憶が完了する、
ＤＮＣ信号がＲＥＳＥＴされる。
ＣＲＥＧをＤＥＣＲＥＭＥＮＴし、かつＩＦゼロでない、オペレーションをＲＥＰＥＡＴ。
【００３２】
ＲＥＰ  ＯＵＴＳ
ＩＦ要求のデータがＡバッファに現在ない
ＴＨＥＮ
ＤＯ
データ読取り要求が実行ユニットによりＩＳＳＵＥされる。
ＤＮＣ信号がＳＥＴされる。
ＷＨＥＮ記憶が完了する
ＤＮＣ信号がＲＥＳＥＴされる。
ＥＮＤ
ポートにデータをＳＥＮＤ
ＣＲＥＧをＤＥＣＲＥＭＥＮＴし、かつＩＦゼロでない、オペレーションをＲＥＰＥＡＴ。
【００３３】
ＲＥＰ  ＩＮＳ
ＩＦこれまでにＲＥＰオペレーションの中で初めて、
ＴＨＥＮ
ＤＯ
実行ユニットによりデータ要求がＩＳＳＵＥされた
ＤＮＣ信号がＳＥＴされる。
データのキャッシュ・ライン量をＡバッファにＲＥＣＥＩＶＥ
ＷＨＥＮロードが完了
ＤＮＣ信号をＲＥＳＥＴ
ＥＮＤ
ＥＬＳＥこれがＲＥＰオペレーションの中で初めてではない
ＴＨＥＮ
ＤＯ
ＩＦ要求のデータ位置がＡバッファ内に現在ない
ＴＨＥＮ
ＤＯ
Ａバッファのデータ記憶をＩＳＳＵＥ
ＤＮＣ信号をＳＥＴ
ＷＨＥＮデータ記憶が完了した
ＤＮＣ信号をＲＥＳＥＴ
実行ユニットによりデータ要求がＩＳＳＵＥされる。
ＤＮＣ信号がＳＥＴされる。
データのキャッシュ・ライン量をＡバッファにＲＥＣＥＩＶＥ
ＷＨＥＮロードが完了
ＤＮＣ信号をＲＥＳＥＴ
ＥＮＤ
ＡバッファからＢバッファへデータをＭＯＶＥ
ＥＮＤ
ＣＲＥＧをＤＥＣＲＥＭＥＮＴし、かつＩＦゼロでない、オペレーションをＲＥＰＥＡＴ
ＷＨＥＮ  ＣＲＥＧがゼロに等しい、ＲＥＰ  ＩＮがその時点でＣＯＭＰＬＥＴＥされる
Ａバッファのデータ記憶が実行ユニットによりＩＳＳＵＥされる。
同時に、ＤＮＣ信号がＳＥＴされる。
ＷＨＥＮその記憶が完了する、ＤＮＣ信号がＲＥＳＥＴされる。
ポートからそのデータをＡバッファにＬＯＡＤ。
【００３４】
ＲＥＰ  ＭＯＶＳ
実行ユニットのＡバッファをＣＨＥＣＫ。
ＩＦ要求のデータが現在そのバッファにある
ＴＨＥＮキャッシュにアクセスする必要はない。
ＥＬＳＥ
ＤＯ
データ要求が実行ユニットによりＩＳＳＵＥされる。
ＤＮＣ信号がＳＥＴされる。
データのキャッシュ・ライン量をＡバッファにＲＥＣＥＩＶＥ
ＷＨＥＮロードが完了、
ＤＮＣ信号をＲＥＳＥＴ
実行ユニットのＢバッファをＣＨＥＣＫ。
ＥＮＤ
ＩＦ要求の記憶位置が現在Ｂバッファにある
ＴＨＥＮ
ＤＯ
キャッシュにアクセスする必要はない。
ＡバッファからＢバッファへデータをＭＯＶＥ
ＥＮＤ
ＥＬＳＥ
ＩＦこれがＲＥＰオペレーションの中で初めて、
ＴＨＥＮ
ＤＯ
データ要求が実行ユニットによりＩＳＳＵＥされる。
ＤＮＣ信号がＳＥＴされる。
データのキャッシュ・ライン量をＡバッファにＲＥＣＥＩＶＥ
ＷＨＥＮロードが完了
ＴＨＥＮ  ＤＮＣ信号をＲＥＳＥＴ
ＥＮＤ
ＥＬＳＥこれがＲＥＰオペレーションの中で初めてではない
ＤＯ
Ｂバッファのデータ記憶をＩＳＳＵＥ
ＤＮＣ信号がＳＥＴされる。
ＷＨＥＮデータ記憶が完了
ＤＮＣ信号をＲＥＳＥＴ
実行ユニットによりデータ要求がＩＳＳＵＥされる。
ＤＮＣ信号がＳＥＴされる。
データのキャッシュ・ライン量をＢバッファにＲＥＣＥＩＶＥ
ＷＨＥＮロードが完了
ＴＨＥＮ
ＤＯ
ＤＮＣ信号をＲＥＳＥＴ
ＡバッファからＢバッファへデータをＭＯＶＥ
ＥＮＤ
ＥＮＤ
ＣＲＥＧをＤＥＣＲＥＭＥＮＴ
ＩＦゼロでない、オペレーションをＲＥＰＥＡＴ
ＷＨＥＮ  ＣＲＥＧがゼロに等しい
ＲＥＰ  ＭＯＶＳがその時点でＣＯＭＰＬＥＴＥされる。
Ｂバッファのデータ記憶が実行ユニットによりＩＳＳＵＥされる。
同時に、ＤＮＣ信号がＳＥＴされる。
ＷＨＥＮその記憶が完了する、ＤＮＣ信号がＲＥＳＥＴされる。
【００３５】
本発明は、反復命令をキャッシュ（あるいは多重レベルのＣＰＵキャッシュを有するシステム用のキャッシュ）への影響から保護することによりキャッシュの反復命令時の追放の問題を無くすことが分かる。ＤＮＣ信号は、データが転送される時にそのデータがキャッシュ可能であるように処理すべき際に固有のものである。データは一回に一本のキャッシュ・ラインで転送される。しかしＤＮＣ信号がセットされると、キャッシュはシステム内のデータの一貫性を維持するように矛盾なくデータをそのキャッシュにロードあるいは記憶しなくなる。
【００３６】
上記のように、本発明はＤＮＣ（キャッシュ非作動）と称する新しい信号を使用することによりこれを達成する。ＤＮＣはキャッシュにたいするインディケータであり、この要求に関連したデータをキャッシュに入れる必要がない時を除いて、この基準は通常のキャッシュ・アクセスとして取り扱われるべきである。これはキャッシュ不可能な要求とは異なる。キャッシュ不可能なデータとはキャッシュに入れないデータである。メモリ・マップした入出力がこうしたデータの一例である。キャッシュ不可能データは通常、このシステムにより別に扱われる。通常、キャッシュ不可能データがフェッチされると、それはキャッシュ・ラインとしてフェッチされない。また、キャッシュ不可能データは通常、キャッシュ探索に関するものとは別に扱われる。本発明によれば、反復命令の全てのタイプはキャッシュ不可能として示されている。つまり、この命令のタイプに関連したデータはキャッシュ不可能である。この指示は反復移動命令において生じる価値のあるキャッシュ・データを放り出し、使用しないデータと入れ替わることを避けるために作られた。代わりに、一組のバッファ２１９を反復コマンドのタイプに関連したデータを記憶するための仮記憶スペースとして使用する。このように、各バッファはＣＰＵバスのデータ幅の倍数に等しい幅を有するように考えられている。
【００３７】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００３８】
（１）所定のデータ・バス幅を有するデータ・バスを介して中央処理装置に接続したキャッシュ装置を有するコンピュータ・システムの中央処理装置（ＣＰＵ）において、命令のタイプを判定するため、該命令を復号化する命令復号装置を有し、ＣＰＵ命令を処理する命令処理装置と、キャッシュ可能命令タイプあるいはキャッシュ不可能命令タイプを検出する命令タイプ検出装置と、前記命令を実行する実行ユニットとを有し、該実行ユニットは前記命令タイプ検出装置に反応し、検出した命令タイプに関連したデータがキャッシュ可能かどうか示すキャッシュ能力インディケータ信号を出力することを特徴とする中央処理装置。
（２）前記命令タイプ検出装置は反復タイプ命令を検出し、前記実行ユニットは該反復タイプ命令の検出に反応し、キャッシュ不可能である反復タイプ命令に関連したデータを示す前記キャッシュ能力インディケータ信号を出力することを特徴とする上記（１）に記載の中央処理装置。
（３）前記反復命令タイプに関連したデータを記憶するための記憶バッファをさらに有することを特徴とする上記（２）に記載の中央処理装置。
（４）前記記憶バッファは２つのレジスタを有することを特徴とする上記（３）に記載の中央処理装置。
（５）前記レジスタはデータ・バス幅の整数倍にほぼ匹敵するレジスタ幅を有することを特徴とする上記（４）に記載の中央処理装置。
（６）前記レジスタ幅はデータ・バス幅の２倍にほぼ等しいことを特徴とする上記（５）に記載の中央処理装置。
（７）さらに内部キャッシュ制御装置を有し、該制御装置は前記キャッシュ能力インディケータ信号に反応し、前記内部キャッシュへの命令タイプに関連したデータのキャッシュ能力を判定することを特徴とする、上記（１）に記載の中央処理装置。
（８）Ａ．システム・メモリと、Ｂ．オプションの外部キャッシュと、Ｃ．前記システム・メモリを制御するメモリ制御装置と、Ｄ．命令を処理する中央処理装置とを有し、前記中央処理装置は、ａ．命令タイプを判定する前記命令を復号化する命令復号装置と、ｂ．キャッシュ可能命令タイプあるいはキャッシュ不可能命令タイプを検出する命令タイプ検出装置と、ｃ．前記命令タイプ検出装置に反応し、検出した命令タイプに関連したデータがキャッシュ可能かどうかを示すキャッシュ能力インディケータ信号を出力する、前記命令を実行する実行ユニットとを有する、ことを特徴とするコンピュータ・システム。
（９）前記命令タイプ検出装置は反復タイプ命令を検出し、前記実行ユニットは該反復タイプ命令の検出に反応し、キャッシュ可能ではない反復タイプ命令に関連したデータを示す前記キャッシュ能力インディケータ信号を出力することを特徴とする、上記（８）に記載のコンピュータ・システム。
（１０）前記反復命令タイプに関連したデータを記憶するための記憶バッファを、さらに有することを特徴とする上記（９）に記載のコンピュータ・システム。
（１１）前記記憶バッファは２つのレジスタを有することを特徴とする上記（１０）に記載のコンピュータ・システム。
（１２）前記レジスタはデータ・バス幅の整数倍にほぼ匹敵するレジスタ幅を有することを特徴とする上記（１１）に記載のコンピュータ・システム。
（１３）前記レジスタ幅はデータ・バス幅の２倍にほぼ等しいことを特徴とする上記（１２）に記載のコンピュータ・システム。
（１４）さらに内部キャッシュ制御装置を有し、該制御装置は前記キャッシュ能力インディケータ信号に反応し、前記内部キャッシュへの命令タイプに関連したデータのキャッシュ能力を判定することを特徴とする、上記（８）に記載のコンピュータ・システム。
（１５）前記メモリ制御装置は前記キャッシュ能力インディケータ信号に反応し、前記内部キャッシュへの命令タイプに関連したデータのキャッシュ能力を判定することを特徴とする、上記（８）に記載のコンピュータ・システム。
【００３９】
【発明の効果】
本発明は、反復命令をキャッシュへの影響から保護することによりキャッシュの反復命令時の必要な記憶データ追放の問題を無くすことができる。
【図面の簡単な説明】
【図１】本発明のＣＰＵを組み込んだコンピュータ・システムの一例を示すブロック図である。
【図２】本発明によるＣＰＵのブロック図である。
【図３】図１のＣＰＵにより実行される命令フォーマットの図である。
【符号の説明】
１００  コンピュータ・システム
１０１  読取り専用記憶装置（ＲＯＭ）
１０３  中央処理装置
１０４  Ｌ１キャッシュ
１０５  Ｌ２キャッシュ
１０６  キャッシュ制御装置
１０７  システム・メモリ（ホスト・メモリ）
１０９  メモリ制御装置
１１０  ホスト処理系統
１１１  Ｉ／Ｏブリッジ・インターフェース
１１３  ローカル・インターフェース制御装置
１１４  記憶装置
１１５  ローカル装置
１２０  ローカル処理系統
１３０  入力／出力（Ｉ／Ｏ）拡張バス
２００  中央処理装置
２０１  命令処理装置
２０３  命令フェッチ
２０５  Ｌ１命令キャッシュ装置
２０７  Ｌ１データ・キャッシュ
２０９  命令復号装置
２１１  命令タイプ検出装置
２１７  実行ユニット
２１９  バッファ
２２３  ＣＰＵバス・インターフェース装置
２３０  ＣＰＵバス
２３５  データ・バス
２３７  アドレス・バス
２３９  制御バス
３００  命令
３０１  プレフィックス・フィールド
３０３  ＯＰコード・フィールド
３０５  アドレス指定モード特定フィールド
３０７  アドレス置換フィールド
３０９  即時データ・フィールド
【図１】
0003609552.tif 000002
【図２】
0003609552.tif 000003
【図３】
0003609552.tif 000004