(57)【特許請求の範囲】
【請求項１】
キャッシュメモリであって、
それぞれ１つ以上のデータ語を記憶し、記憶しているデータ語をエネイブル信号に応答して出力する、複数のデータメモリ部分と、
それぞれ別個のデータメモリ部分に対応し、前記対応するデータメモリ部分内に記憶している各データ語のメモリアドレスを表すアドレス情報を記憶する、複数のタグメモリ部分と、
必要なデータ語のメモリアドレスと前記タグメモリ部分内に記憶している前記アドレス情報とを比較する比較手段であって、前記必要なデータ語を前記データメモリ部分の中に記憶しているかどうかを表す信号で、記憶している場合は、前記必要なデータ語を記憶している前記データメモリ部分の１つを識別する、一致信号を生成する比較手段、を備え、
少なくとも第１モードと第２モードで選択的に動作し、
（１）  前記第１モードでは、前記一致信号に応答して前記必要なデータ語を記憶している前記データメモリ部分の１つだけを読み出し動作可能にし、
（２）  前記第２モードでは、前記比較手段の動作と実質的に同時に２つ以上の前記データメモリ部分を動作可能にし、前記一致信号を用いて前記データメモリ部分の１つの出力を選択する、
キャッシュメモリ。
【請求項２】
請求項１記載のキャッシュメモリであって、各データメモリ部分はデータ語の配列を記憶し、前記配列内の各データ語の位置は前記データ語のメモリアドレスの選択されたビットで決定する、キャッシュメモリ。
【請求項３】
請求項１記載のキャッシュメモリであって、前記各データメモリ部分からのデータ出力を受けるよう接続されたマルチプレクサを備え、前記マルチプレクサは前記一致信号に応答して前記データメモリ部分の１つの出力を選択する、キャッシュメモリ。
【請求項４】
請求項１記載のキャッシュメモリであって、前記第１モード動作では前記一致信号を別個のエネイブル信号として前記データメモリ部分に送り、前記第２モード動作ではすべての前記データメモリ部分を使用可能にする、キャッシュメモリ。
【請求項５】
請求項１記載のキャッシュメモリ内に記憶されたデータにアクセスする中央処理装置であって、
前記キャッシュメモリからのデータ処理命令をプリフェッチしバッファするプリフェッチ装置と、
前記プリフェッチ装置内に記憶している前記命令に応答して、前記第１モード動作か前記第２モード動作で前記キャッシュメモリを動作させる手段、を備える中央処理装置。
【請求項６】
請求項５記載の中央処理装置であって、前記プリフェッチ装置内に少なくとも所定数の命令がバッファされている場合は、前記プリフェッチ装置は前記第１モードを選択する、中央処理装置。
【請求項７】
請求項５記載の中央処理装置であって、前記プリフェッチ装置内にバッファされている前記命令内に分岐命令が検出された場合は、前記プリフェッチ装置は前記第１モードを選択する、中央処理装置。
【請求項８】
請求項６記載の中央処理装置であって、前記プリフェッチ装置内にバッファされている前記命令内に分岐命令が検出された場合は、前記プリフェッチ装置は前記第１モードを選択する、中央処理装置。
【請求項９】
データ処理装置であって、
請求項１記載のキャッシュメモリと、
請求項５記載の中央処理装置、
を備えるデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明はキャッシュメモリへのアクセスに関する。
【０００２】
【従来の技術】
データ処理システムの中央処理装置（ＣＰＵ）の性能を向上させるのにキャッシュメモリが用いられている。
キャッシュメモリは比較的小型で高速のランダムアクセスメモリ（ＲＡＭ）で、ＣＰＵが頻繁に必要とするデータを記憶（格納）するのに用いる。一般にキャッシュメモリにはＣＰＵから直接アクセスし（たとえば外部のメモリ管理装置（ＭＭＵ）を経由せず）、物理的にＣＰＵの近くに設けてＣＰＵとキャッシュメモリの間の信号伝播時間を小さくする。したがって、キャッシュメモリとのデータの授受は非常に高速で行われる。
【０００３】
キャッシュメモリが記憶できるデータはデータ処理装置が処理するデータのほんの一部なので、あるデータをキャッシュメモリから読むか、（より遅い）システムメモリから読むかをＣＰＵは知る必要がある。したがって、従来のキャッシュメモリの設計には、タグメモリと、関連するデータメモリを備えるようにしたものがある。タグメモリは、キャッシュメモリに現在記憶しているデータの項目に関するシステムアドレスを記憶するのに用いる。あるデータ項目にＣＰＵがアクセスするときは、そのデータ項目に関するシステムアドレスとタグメモリ内のアドレスとを比較する。現在のデータ項目のアドレスとタグメモリ内のアドレスとが一致した場合は、ＣＰＵはデータメモリ内のそのデータ項目にアクセスすることができる。
【０００４】
従来の設計の中には、タグメモリとデータメモリをいくつかの部分に分割し、各データメモリ部分とタグメモリ部分を対応させる方式のものがある。各タグメモリ部分は、対応するデータメモリ部分内に現在保持されているデータ項目に関係するシステムアドレスを記憶する。このような設計では、あるデータ項目にＣＰＵがアクセスする場合、そのデータ項目に関連するシステムアドレスと各タグアドレス部分内のアドレスとを比較する。一致するものがある場合は、一致したアドレスを持つタグメモリ部分は対応するデータメモリ部分を起動し（動作可能すなわちエネイブルにし）、そのデータ項目の内容を読み出す。他のデータメモリ部分は動作可能にしない。
【０００５】
【発明が解決しようとする課題】
このような多重部分方式すなわち「アソシアティブ（associative ）」キャッシュ方式を用いると、キャッシュ「不在（miss）」（すなわち、必要なデータ項目がキャッシュ内にない）の可能性が小さくなる。また読出し動作中は必要なデータメモリ部分だけに電力を供給するので、電力消費も少ない。しかしこの方式では、キャッシュにアクセスする度に、タグメモリの比較を完了してからデータメモリの読出し動作を始めるという２段階動作を行うので好ましくない。
この発明の目的は、電力消費もキャッシュメモリのアクセス時間も共に向上させることである。
【０００６】
【課題を解決するための手段】
この発明が提供するキャッシュメモリは、
それぞれ１つ以上のデータ語を記憶し、記憶しているデータ語をエネイブル信号に応答して出力する、複数のデータメモリ部分と、
それぞれ別個のデータメモリ部分に対応し、前記対応するデータメモリ部分内に記憶している各データ語のメモリアドレスを表すアドレス情報を記憶する、複数のタグメモリ部分と、
必要なデータ語のメモリアドレスとタグメモリ部分内に記憶しているアドレス情報とを比較する比較手段であって、前記必要なデータ語を前記データメモリ部分の中に記憶しているかどうかを表す信号で、記憶している場合は、必要なデータ語を記憶しているデータメモリ部分を識別する、一致信号を生成する比較手段、を備え、
前記キャッシュメモリは、少なくとも第１モードと第２モードで選択的に動作し、
（１）  第１モードでは、一致信号に応答して必要なデータ語を記憶しているデータメモリ部分の１つだけを動作可能にし、
（２）  第２モードでは、比較手段の動作と実質的に同時に２つ以上のデータメモリ部分を動作可能にし、一致信号を用いてデータメモリ部分の１つの出力を選択する。
【０００７】
この発明は、タグメモリの比較動作とデータメモリの読出し動作を並行して行い、次にタグメモリ出力を用いてデータメモリ部分の中の該当するデータを選択して読み出すので、迅速なアクセスができる。このようにして動作を２段階から１段階に減らすことにより、アクセス時間はほぼ半分になる。
【０００８】
しかしこの発明を用いてこのようにアクセス時間を向上させると、キャッシュメモリの電力消費が大幅に増加するという犠牲を払う。たとえば４部分から成るキャッシュメモリでは、読出し動作を行う度にデータメモリ部分をすべてに電力を供給すると電力消費は約３．５倍になる。
【０００９】
この明らかに矛盾する要求に対処するため、この発明は直列（２段階）モードと並列（１段階）モードを選択して動作させるキャッシュメモリを提供する。
並列アクセスはアクセス時間が厳しいときに用い、ゆっくりした直列アクセスは、たとえばいくつかの必要なデータ項目が待機状態ですでにバッファされている（たとえば、プリフェッチ装置内にデータ処理命令がバッファされている）ような場合に用いる。
【００１０】
当業者に周知のように、「語」という用語は、たとえば３２ビット語というようないろいろの長さのビットのディジタルデータを指す。
各データメモリ部分はデータ語の配列を記憶する。配列内の各データ語の位置はそのデータ語のメモリアドレスの中の選択されたビットにより決定するとよい。
【００１１】
一致信号を用いて必要なデータメモリ部分の出力を選択するために、キャッシュメモリは各データメモリ部分からのデータ出力を受けるマルチプレクサを備え、このマルチプレクサは一致信号に応答してデータメモリ部分の中の１つの出力を選択することが望ましい。
第１モードか第２モードかを選択するには、論理手段を用いて、第１モード動作では一致信号を別々のエネイブル信号としてデータメモリ部分に出し、第２モード動作ではすべてのデータメモリ部分を動作可能にする方式が望ましい。特に簡単な実施態様では、この論理手段は、アクティブ高の一致信号と「第２モード／非第１モード」制御信号とを組み合わせたＯＲゲートの配列でよい。
【００１２】
またこの発明は、上に説明したキャッシュメモリに記憶しているデータにアクセスする中央処理装置を提供する。中央処理装置は、
データ処理命令をキャッシュメモリから先取り（プリフェッチ）してバッファするプリフェッチ装置と、
プリフェッチ装置に記憶された命令に応答し、キャッシュメモリを制御して第１モード動作か第２モード動作で動作させる手段、
を備える。
【００１３】
少なくとも所定数の命令がプリフェッチ装置内にバッファされている場合は、プリフェッチ装置は第１モードを選択することが望ましい。また、プリフェッチ装置内にバッファされている命令の中に分岐命令があることを検出した場合は、プリフェッチ装置は第１モードを選択することが望ましい。
またこの発明は、
上に定義したキャッシュメモリと、
上に定義した中央処理装置、
を備えるデータ処理装置を提供する。
【００１４】
【発明の実施の形態】
【実施例】
図１において、データ処理装置は中央処理装置（ＣＰＵ）１００と、キャッシュメモリ（ＲＡＭ）１１０を備える。ＣＰＵ１００とキャッシュメモリ１１０は、同じ集積回路上に別個の部品として製作してよい。
図１は、ＣＰＵとキャッシュＲＡＭの非常に簡単化した動作を示す。ＣＰＵ１００はデータ処理命令を実行するプロセッサコア１０２と、キャッシュＲＡＭ１１０から命令を検索してバッファするプリフェッチ装置１０４を備える。
【００１５】
動作を説明すると、プリフェッチ装置１０４はキャッシュＲＡＭ１１０にアドレスを送り、キャッシュＲＡＭから読み出す次の命令を指定する。キャッシュＲＡＭからこの命令を読み出してプリフェッチ装置１０４に戻し、先入れ先出し（ＦＩＦＯ）バッファ内に記憶する。プロセッサコアはＦＩＦＯバッファの出力から命令を取り出して実行する。
【００１６】
またプリフェッチ装置は「並列／非直列」信号と呼ぶ別の信号をキャッシュＲＡＭに送る。この信号は、キャッシュＲＡＭの動作が直列アクセスモードか並列アクセスモードかを指定する。プリフェッチ装置１０４による並列／非直列信号の生成と、並列／非直列信号がキャッシュＲＡＭ１１０の動作に与える効果については、以下に詳しく説明する。
並列／非直列信号は制御論理（図示せず）にも送られる。制御論理は以下に説明するようにキャッシュＲＡＭ１１０の各部の動作を制御する。
【００１７】
図２はキャッシュメモリ１１０で、タグＲＡＭ１２０とデータＲＡＭ１３０を備える。タグＲＡＭは４個のタグユニット１４０を備え、各タグユニット１４０は６４個のタグライン１５０を備える。同様にデータＲＡＭは４個のデータＲＡＭユニット１６０を備え、各データＲＡＭユニット１６０は６４個のキャッシュライン１７０を備える。各キャッシュラインは８データ語を記憶し、各データ語は３２ビット（４バイト）のデータを持つ。
【００１８】
あるアドレスのデータにＣＰＵ１００がアクセスする場合は、３２ビットのアドレス信号Ａ［３１：０］をキャッシュメモリ１１０に送る。ここでは主としてキャッシュＲＡＭ１１０からデータ処理命令をプリフェッチする動作を説明するので、図２から図４では、プリフェッチ装置へデータを伝送するデータバスを「データ出力」と示している。しかし実際は、ＣＰＵとキャッシュＲＡＭとの間のデータ伝送は双方向である。
【００１９】
アドレス信号の３２ビットの中の第５ビットから第１０ビット、すなわちＡ［１０：５］は、タグＲＡＭ１２０の一部であるタグライン選択器２００と、データＲＡＭ１３０の一部であるるキャッシュライン選択器２１０に送る。これらの６アドレスビットは、タグライン１５０とキャッシュライン１７０の中の特定のラインを指定する。図２では、現在選択されているタグライン１５０とキャッシュライン１７０を斜線部分で示している。
【００２０】
タグライン１５０は、データアドレスの第１１ビットから第３１ビットに相当する２１ビットのアドレスを記憶する。あるデータアドレスに対応するデータがデータＲＡＭ１３０内に記憶されているかどうかを検出するには、ＣＰＵ１００のプリフェッチ装置が生成したアドレスの第１１ビットから第３１ビットすなわちＡ［３１：１１］と４個の各タグユニット１４０内の現在選択されているタグライン１５０の内容とを比較する。
【００２１】
各タグユニット１４０について、そのタグユニット１４０内の選択されたタグラインの内容が、ＣＰＵ１００が出力した現在のアドレスの高位の２１ビットＡ［３１：１１］と等しい場合は、そのタグユニットの一致信号２２０をセットする。
【００２２】
一致信号を各論理ＯＲゲート２２２に送り、プリフェッチ装置１０４からの並列／非直列信号と組み合わせる。この組合わせの結果は次の通りである。
１．  並列／非直列信号が高（キャッシュＲＡＭ１１０が並列で動作することを示す）の場合は、各ＯＲゲート２２２の出力も高である。これにより、一致信号の状態にかかわらず、データＲＡＭユニット１６０はすべて動作可能になる（straight away ）。この場合は、アドレスとタグＲＡＭの内容との比較は、すべてのデータＲＡＭ  ユニットから選択されたキャッシュライン１７０の読出しと並列に行う。タグＲＡＭが生成した一致信号は、特定のデータＲＡＭユニットを選択して動作させるために用いるのではなく、マルチプレクサ２２４
内のデータＲＡＭユニットの中から１つの出力を選択するのに用いる。
【００２３】
２．  並列／非直列信号が低（キャッシュＲＡＭ１１０が直列で動作することを示す）の場合は、どの一致信号も高でなければ各ＯＲゲート２２２の出力は低である。一致信号の１つが高になると、その一致信号に関するＯＲゲートの出力は高になり、タグが一致したそのデータＲＡＭユニットだけが使用可能にな
る。
したがってこの場合は、タグユニットの１つが一致するまではデータＲＡＭユニットは電力を供給されない。一致すると、必要なデータＲＡＭユニットだけが電力を供給される。この直列すなわち２段階アクセス方式は上に説明した並列アクセス方式より遅いが、必要なデータＲＡＭユニットだけが電力を供給さ
れるので消費電力は小さい。
【００２４】
４個のデータＲＡＭユニット１６０のデータ出力はマルチプレクサ２２４に送られ、マルチプレクサ２２４はタグＲＡＭ１２０が生成した一致信号にしたがって出力の１つを通す。
並列アクセスモードを用いる場合は、キャッシュのデータラインはすでに各データＲＡＭユニットから読み出されており、マルチプレクサ２２４を用いてそれらのデータラインの中から必要な１つを選択する。
【００２５】
対照的に、直列アクセス方式を用いる場合は、データＲＡＭユニットの１つだけが一連のデータを読み出す。これが（定義により）必要なラインである。しかしこの実施態様の構成を簡単にするために、直列方式を用いる場合でもマルチプレクサを信号路内に置く。現在のデータＲＡＭユニットはマルチプレクサ２２４に送る一致信号と同じ信号で動作可能になるので、マルチプレクサ２２４は必ず正しいデータＲＡＭユニットが出力するデータラインを通す。
【００２６】
次に、マルチプレクサ２２４が出力する一連のデータ（８データ語から成る）をマルチプレクサ２３０に送る。マルチプレクサ２３０は、ＣＰＵ１００が出力したアドレス信号の第２ビットから第４ビット（すなわち、Ａ［４：２］）にしたがってアクセス用のデータ語の１つを選択する。
各出力データ語は３２ビットデータ語で、４バイトのデータを含む。一般には３２ビット語全体にアクセスする（たとえば３２ビット命令の取出し中）。しかし特定のバイトにアクセスする必要がある場合は、アクセスするバイトをデータアドレスの第０ビットと第１ビットＡ［１：０］で示す。
【００２７】
アドレス信号Ａ［３１：０］の各部のアドレス機能を次の表に示す。
0003729545.tif 000002
【００２８】
図３は、直列アクセスモード（すなわち、並列／非直列信号が低）にあるキャッシュＲＡＭ１１０の動作を示す略図である。ここではＯＲゲート２２２の実際の動作を、タグユニット１４０の一致出力２２０とデータＲＡＭユニット１６０の動作可能（エネイブル）入力とを接続したものとして図示する。言い換えると、必要な１つのデータＲＡＭユニットだけに一致信号を直接通して動作可能にし、またそれはタグＲＡＭアドレスの比較を完了した後にだけ行う。
【００２９】
図４は、並列アクセスモード（すなわち、並列／非直列信号が高）にあるキャッシュＲＡＭ１１０の動作を示す略図である。ここではＯＲゲート２２２の実際の動作を、どのタグユニットが一致信号を出力するかにかかわらず、またタグＲＡＭ比較を行うのと同時に、すべてのデータＲＡＭユニットにエネイブル信号を送るものとして図示する。
【００３０】
図５はプリフェッチ装置１０４の略図で、直列アクセスと並列アクセスのどちらを用いるかを決定するのに用いる１組の規則の例を、この図で説明する。
プリフェッチ装置はＦＩＦＯバッファ２５０を備え、キャッシュＲＡＭから読み出した命令を入力２５２に受けて記憶する。命令はＦＩＦＯバッファ出力２５４から出すので、記憶された命令はバッファ内を進む。
【００３１】
図５に示すバッファは４命令を記憶する。しかし実際には、この実施態様のバッファは８命令を記憶する。この図でバッファを小さく示したのは、動作原理の説明を簡単にするためである。
バッファの内容は、バッファ占有度検出器２６０と分岐命令予測器２７０で監視する。
【００３２】
バッファ占有度検出器は、バッファ２５０内に記憶している命令数を検出する。これは既知のものであって、バッファがすでに十分な数の命令を取り出して保持している場合に、さらに命令を取り出さないようにするのに用いる。しかしここでは、バッファが所定の数以上の命令を保持しているかどうかを検出するのにもバッファ占有度検出器を用いる。たとえば、バッファ占有度検出器は、バッファが半分満たされている（８命令バッファの場合は４命令を保持）かどうかを検出する。半分満たされている場合は、その後の取り出し動作は遅い直列アクセスモードで行ってよい。このため、バッファがｎ命令以上を保持している場合はバッファ占有度検出器は高出力を出し、ＮＯＲゲート２８０を通し、並列／非直列信号を形成する（上に説明したように、直列アクセスが必要な場合は並列／非直列信号は低である）。
【００３３】
分岐命令予測器２７０も既知のものであり、バッファ内の命令を検査して、実行しそうな分岐命令（たとえば無条件分岐か、または分岐命令予測器が分岐条件と知ったまたは見なした条件付き分岐）が命令の中にあるかどうかを検出する。この場合は、分岐はＦＩＦＯバッファ２５０の出力２５４からの命令の中の少なくとも所定数（たとえば、ＦＩＦＯバッファ２５０の出力の中の少なくとも第２命令）であると仮定して、分岐先の命令すなわち目標アドレスは、直列アクセスモードを用いてゆっくり取り出してよい（ＦＩＦＯバッファ内の分岐命令の位置は、従来の分岐命令予測器により容易に検出することができる）。したがってこのような場合は、分岐命令予測器２７０は高信号をＮＯＲゲート２８０に送り、ＮＯＲゲート２８０は並列／非直列信号として低値を出力する。
【００３４】
この発明の例示の実施態様を添付の図面を参照して詳細に説明したが、この発明はこれらの実施態様だけに限定されるものではなく、特許請求の範囲に規定されているこの発明の範囲と精神から逸れずに、当業者はいろいろの変更や修正を行うことができる。
【図面の簡単な説明】
この発明の目的と特徴と利点は、以下の図面を参照して例示の実施態様の詳細な説明を読めば明らかになる。
【図１】中央処理装置とキャッシュメモリを備えるデータ処理装置の略図。
【図２】この発明の一実施態様のキャッシュメモリの略図。
【図３】直列アクセスモードで動作する、図２のキャッシュメモリを示す略図。
【図４】並列アクセスモードで動作する、図２のキャッシュメモリを示す略図。
【図５】プリフェッチ装置の略図。
【符号の説明】
１００  中央処理装置（ＣＰＵ）
１０２  プロセッサコア
１０４  プリフェッチ装置
１１０  キャッシュメモリ（ＲＡＭ）
１２０  タグＲＡＭ
１３０  データＲＡＭ
１４０  タグユニット
１５０  タグライン
１６０  データＲＡＭユニット
１７０  キャッシュライン
２００  タグＲＡＭのライン選択器
２１０  データＲＡＭのライン選択器
２２２  論理ＯＲゲート
２２４  マルチプレクサ
２３０  マルチプレクサ
【図１】
0003729545.tif 000003
【図２】
0003729545.tif 000004
【図３】
0003729545.tif 000005
【図４】
0003729545.tif 000006
【図５】
0003729545.tif 000007