(57)【要約】命令キャッシュ制御器は、補助メモリを使用してキャッシュ境界位置に対応するキャッシングされた命令データの冗長コピーを記憶し、それによって、後続の、該境界位置を横断する命令の、１回キャッシュ・アクセス検索を可能にする。１又は複数の実施形態では、該キャッシュ制御器は、該境界後方位置に対する命令データを該補助メモリ中にコピーし、そして、該コピーされたデータを該境界前方位置から得られるキャッシュ・データの中に多重化する。
2009535743.tif 000002
【特許請求の範囲】
【請求項１】
可変長命令をキャッシングする方法であって、
キャッシュ・ラインに命令データを書き込むこと、及び
１又は複数のキャッシュ境界位置に対して命令データの冗長コピーを記憶すること
を具備する方法。
【請求項２】
１又は複数のキャッシュ境界位置に対して命令データの冗長コピーを記憶することは、１又は複数のキャッシュ境界位置に対して命令データを補助メモリにコピーすることを具備する、請求項１の方法。
【請求項３】
前記補助メモリは、前記命令キャッシュに関連付けられるタグ・アレイ、前記命令キャッシュに含まれる又は関連付けられる１又は複数の冗長メモリ素子、分離されたメモリ・アレイ、及び高レベル・キャッシュ、のうちの１つを具備する、請求項２の方法。
【請求項４】
１又は複数のキャッシュ境界位置に対して命令データを補助メモリにコピーすることは、キャッシュ・ライン内境界位置に対して命令データを前記補助メモリにコピーすることを具備する、請求項２の方法。
【請求項５】
１又は複数のキャッシュ境界位置に対して命令データを補助メモリにコピーすることは、キャッシュ・ライン間境界位置に対して命令データを前記補助メモリにコピーすることを具備する、請求項２の方法。
【請求項６】
１又は複数のキャッシュ境界位置に対して命令データの冗長コピーを記憶することは、
前記命令データに含まれる命令の整合不良のセグメントを特定すること、及び
前記整合不良のセグメントを補助メモリにコピーすること
を具備する、請求項１の方法。
【請求項７】
前記命令データに含まれる命令の整合不良のセグメントを特定することは、前記命令をプレデコードして前記命令の境界交差セグメントを特定することを具備する、請求項６の方法。
【請求項８】
前記命令データに含まれる命令の整合不良のセグメントを特定することは、前記命令のキャッシュ・ライン・エントリー位置を処理して前記命令の境界交差セグメントを特定することを具備する、請求項６の方法。
【請求項９】
前記命令の前記キャッシュ・ライン・エントリー位置は、前記命令に関連付けられるフェッチ・アドレスに対応する、請求項８の方法。
【請求項１０】
前記命令データに含まれる命令の整合不良のセグメントを特定することは、前記命令に関連付けられる長さ情報を処理して前記命令の境界交差セグメントを特定することを具備する、請求項６の方法。
【請求項１１】
前記命令データに含まれる命令の整合不良のセグメントを特定することは、命令整合不良履歴データを処理して前記命令の境界交差セグメントを特定することを具備する、請求項６の方法。
【請求項１２】
前記命令データに含まれる命令の整合不良のセグメントを特定することは、前記命令の残部に先行してフェッチされる前記命令の一部を処理して前記命令の境界交差セグメントを特定することを具備する、請求項６の方法。
【請求項１３】
前記命令の前記残部に先行してフェッチされる前記命令の前記一部は、クリティカル・ワード優先（critical-word-first）メモリ・アクセス動作に応じてフェッチされる命令部分及びクリティカル・ダブル・ワード優先（critical-double-word-first）メモリ・アクセス動作に応じてフェッチされる命令部分、のうちの１つを具備する、請求項１２の方法。
【請求項１４】
命令キャッシュに含まれるキャッシュ・ラインへの命令データの記憶を管理し、そして、１又は複数のキャッシュ境界位置に対する命令データの冗長コピーの記憶を管理するように、構成されるキャッシュ制御器、を具備する装置。
【請求項１５】
前記キャッシュ制御器は、１又は複数のキャッシュ境界位置に対して命令データを補助メモリへとコピーすることによって、１又は複数のキャッシュ境界位置に対する命令データの冗長コピーの記憶を管理するように構成される、請求項１４の装置。
【請求項１６】
前記補助メモリは、前記命令キャッシュに関連付けられるタグ・アレイ、前記命令キャッシュに含まれる又は関連付けられる１又は複数の冗長メモリ素子、分離されたメモリ・アレイ、及び高レベル・キャッシュ、のうちの１つを具備する、請求項１５の装置。
【請求項１７】
前記キャッシュ制御器は、キャッシュ・ライン内境界位置に対して命令データを補助メモリにコピーすることによって、１又は複数のキャッシュ境界位置に対して命令データを前記補助メモリにコピーするように構成される、請求項１５の装置。
【請求項１８】
前記キャッシュ制御器は、キャッシュ・ライン間境界位置に対して命令データを補助メモリにコピーすることによって、１又は複数のキャッシュ境界位置に対して命令データを前記補助メモリにコピーするように構成される、請求項１４の装置。
【請求項１９】
前記キャッシュ制御器は、前記命令データに含まれる命令の整合不良のセグメントを特定すること及び前記整合不良のセグメントを補助メモリへとコピーすることによって、１又は複数のキャッシュ境界位置に対する命令データの冗長コピーの記憶を管理するように構成される、請求項１４の装置。
【請求項２０】
前記キャッシュ制御器は、前記命令の境界交差セグメントを特定するために前記命令に関連付けられるプレデコードされた情報を処理することによって、前記命令データに含まれる前記命令の整合不良のセグメントを特定するように構成される、請求項１９の装置。
【請求項２１】
前記キャッシュ制御器は、前記命令の境界交差セグメントを特定するために前記命令のキャッシュ・ライン・エントリー位置を処理することによって、前記命令データに含まれる前記命令の整合不良のセグメントを特定するように構成される、請求項１９の装置。
【請求項２２】
前記命令の前記キャッシュ・ライン・エントリー位置は、前記命令に関連付けられるフェッチ・アドレスに対応する、請求項２１の装置。
【請求項２３】
前記キャッシュ制御器は、前記命令の境界交差セグメントを特定するために前記命令に関連付けられる長さ情報を処理することによって、前記命令データに含まれる前記命令の整合不良のセグメントを特定するように構成される、請求項１９の装置。
【請求項２４】
前記キャッシュ制御器は、前記命令の境界交差セグメントを特定するために命令整合不良履歴データを処理することによって、前記命令データに含まれる命令の整合不良のセグメントを特定するように構成される、請求項１９の装置。
【請求項２５】
前記キャッシュ制御器は、前記命令の境界交差セグメントを特定するために前記命令の残部に先行してフェッチされる前記命令の一部を使用することによって、前記命令データに含まれる前記命令の整合不良のセグメントを特定するように構成される、請求項１９の装置。
【請求項２６】
前記命令の前記残部に先行してフェッチされる前記命令の前記一部は、クリティカル・ワード優先メモリ・アクセス動作に応じてフェッチされる命令部分及びクリティカル・ダブル・ワード優先メモリ・アクセス動作に応じてフェッチされる命令部分、のうちの１つを具備する、請求項２５の装置。
【請求項２７】
前記キャッシュ制御器は、前記命令キャッシュから前記命令のセグメントを読み出すこと、及び補助メモリから前記命令の整合不良のセグメントを読み出すことによって、前記キャッシュ・ラインから前記命令データに含まれる命令を検索するように更に構成される、請求項１４の装置。
【請求項２８】
前記キャッシュ制御器は、前記命令キャッシュから読み出した前記命令の前記セグメントを前記命令の前記整合不良のセグメントと結合するように更に構成される、請求項２７の装置。
【請求項２９】
前記キャッシュ制御器は、前記命令キャッシュから読み出した前記命令の前記セグメントに前記命令の前記整合不良のセグメントを付加することによって、前記命令キャッシュから読み出した前記命令の前記セグメントを前記命令の前記整合不良のセグメントと結合するように構成される、請求項２８の装置。
【請求項３０】
前記キャッシュ制御器は、前記命令の前記整合不良のセグメント、又は前記命令キャッシュの第１セクタから読み出した前記命令の前記セグメントの第１部分のうちの１つを選択し、そして前記命令の前記整合不良のセグメント又は前記命令キャッシュの前記第１セクタから読み出した前記命令の前記セグメントの前記第１部分のうちの前記選択された１つを前記キャッシュ・ラインの第２セクタから読み出した前記命令の第２部分と結合することによって、前記命令キャッシュから読み出した前記命令の前記セグメントを前記命令の前記整合不良のセグメントと結合するように構成される、請求項２８の装置。
【請求項３１】
命令キャッシュに含まれるキャッシュ・ラインに命令データを記憶するように構成される命令キャッシュ、及び
１又は複数のキャッシュ境界位置に対する命令データの冗長コピーの補助メモリへの記憶を管理するように構成されるキャッシュ制御器
を具備するマイクロプロセッサ。
【請求項３２】
前記１又は複数のキャッシュ境界位置は、前記命令キャッシュの１又は複数のキャッシュ・ライン内境界位置及び前記命令キャッシュのキャッシュ・ライン間境界位置、を具備する、請求項３１のマイクロプロセッサ。
【請求項３３】
前記補助メモリは、前記命令キャッシュに関連付けられるタグ・アレイ、前記命令キャッシュに含まれる又は関連付けられる１又は複数の付加メモリ素子、分離されたメモリ・アレイ、及び高レベル・キャッシュ、のうちの１つを具備する、請求項３１のマイクロプロセッサ。
【請求項３４】
キャッシングされた可変長命令を検索する方法であって、
キャッシュ・ラインから命令のセグメントを読み出すこと、及び
補助メモリから前記命令の整合不良のセグメントを読み出すこと
を具備する方法。
【請求項３５】
前記命令の前記整合不良のセグメントを前記キャッシュ・ラインから読み出した前記命令の前記セグメントと結合することを更に具備する、請求項３４の方法。
【請求項３６】
前記命令の前記整合不良のセグメントを前記キャッシュ・ラインから読み出した前記命令の前記セグメントと結合することは、前記命令の前記整合不良のセグメントを前記キャッシュ・ラインから読み出した前記命令の前記セグメントに付加すること、を具備する、請求項３５の方法。
【請求項３７】
前記命令の前記整合不良のセグメントを前記キャッシュ・ラインから読み出した前記命令の前記セグメントと結合することは、
前記命令の前記整合不良のセグメントと前記キャッシュ・ラインの第１セクタから読み出した前記命令の第１部分とのうちの１つを選択すること、及び
前記命令の前記整合不良のセグメントと前記キャッシュ・ラインの前記第１セクタから読み出した前記命令の前記第１部分とのうちの前記選択された１つを前記キャッシュ・ラインの第２セクタから読み出した前記命令の第２部分と結合すること
を具備する、請求項３５の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に命令のキャッシング（caching）に係わり、特に可変長命令をキャッシングすることに関する。
【背景技術】
【０００２】
マイクロプロセッサのワード長は、データの基本動作単位の長さを（ビット又はバイトで）表す。例えば、３２ビット・マイクロプロセッサは、３２ビット（４バイト）の基準ワード長を有する。一様な長さの命令セットに関しては、命令は、通例自然なワード境界に基づいてメモリ中に記憶される。しかしながら、あるマイクロプロセッサは、例えば３２ビットの命令と１６ビットの命令の混合、６４ビットの命令と３２ビットの命令の混合のような、可変長命令を使用する。より短い長さの命令に対するサポートは、ある場合、レガシー互換性を提供し、少なくともより短い命令を利用することが出来るアプリケーションに対して、より小さい命令メモリ・フットプリントの機会を与える。
【０００３】
しかしながら、メモリ節約を実現することは、非自然境界に基づいて可変長命令を記憶することを要求する。命令が必ずしも自然ワード境界に基づいて記憶される必要がないメモリは、非整合メモリであると考えられることが出来る。他方、命令が自然ワード境界に基づいて記憶されるメモリは、整合メモリであると考えられることが出来る。非整合メモリが使用されることが出来る一例として、ＡＲＭｖ７ファミリーのマイクロプロセッサは、ワード命令とハーフ・ワード命令をサポートし、４バイトの命令が４バイトの境界を横断して記憶されることを許容する。
【０００４】
命令記憶のために非整合メモリを使用することは、空間的に高効率であるとは言え、命令実行性能を向上させるために使用される低待ち時間命令バッファは、通常自然ワード整合を使用する。例えば、キャッシュ・メモリは、しばしば、メイン・メモリであり得る外部メモリ又はより高レベルのキャッシュ・メモリのワード整合のセグメント（ライン）をバッファするキャッシュ・ラインへと編成される。
【０００５】
非整合命令を整合キャッシュ・ラインに読み込むことは、キャッシュ・ラインにおける境界位置が全命令ワードを含むことも或いは含まないこともあり得ることを意味する。即ち、ワード長の命令がキャッシュ境界と交差することがあり得る。ライン間境界、即ち、１つのキャッシュ・ラインから隣のキャッシュ・ラインへとつながる部分、は、１つの型のキャッシュ境界を表し、他方、それぞれのキャッシュ・ライン内のワード整合のセグメント境界のような、ライン内境界は、別の型のキャッシュ境界を表す。セグメント境界は、全キャッシュ・ライン幅に満たないワード整合の読出しポートの使用から発生し得る。
【０００６】
従来のキャッシュから境界交差（cross-boundary）命令を検索することは、２回のアクセス、即ち、境界位置に先行する命令データを読み出す第１アクセス及び境界位置より後ろの命令データを読む第２アクセス、を必要とする。第２アクセスは、境界交差命令の末尾（境界後方の）部分を検索する。明らかに、キャッシュ・メモリ内で整合不良の命令が広がることは、全体的なキャッシングの性能に負の影響を与える、その理由は、整合不良の、境界交差命令の末尾部分を検索するために追加のキャッシュ読み出しが必要とされるためである。
【発明の開示】
【発明の概要】
【０００７】
本明細書に教示される方法と装置に従い、命令キャッシュ制御器は、補助メモリを使用してキャッシュ境界位置に対応するキャッシングされた命令データの冗長コピーを記憶する、そしてそれによって後続の１回のキャッシュ・アクセスが該境界位置と交差する命令を検索することを可能にする。１又は複数の実施形態においては、該キャッシュ制御器は、該境界後方位置に対する命令データを補助メモリ中にコピーして、該コピーされたデータを該境界前方位置から求められたキャッシュ・データ中に多重化する。
【０００８】
キャッシュ制御器及び方法の１つの実施形態は、キャッシュ・ラインに命令データを書き込むことによって、及び、該ラインにおける１又は複数の境界位置に対して、該境界位置における命令データ、例えばそれぞれの境界後方位置におけるハーフ・ワード、の冗長コピーを記憶することによって、命令をキャッシングする。そのような操作は、キャッシュ・ラインから境界前方のデータを読み出しそして該境界データを記憶するために使用される補助メモリから境界後方のデータを読み出すことに基づいて、非整合の命令全体を該キャッシュから検索することを可能にする。
【０００９】
キャッシュ制御器の１つの実施形態では、該制御器は、命令キャッシュに含まれるキャッシュ・ラインへ命令データを記憶することを管理するように、そして１又は複数のキャッシュ境界位置に対する命令データの冗長コピーを記憶することを管理するように、構成される。冗長データは、例えば、命令キャッシュに関連付けられるタグ・アレイ、該命令キャッシュに含まれる又は関連付けられる１又は複数の付加メモリ、分離されたメモリ・アレイ、或いはより高レベルのキャッシュのような、補助メモリ中に記憶される。
【００１０】
キャッシュ制御器は、マイクロプロセッサ中に含まれることが出来る。１つの実施形態では、該マイクロプロセッサは、命令キャッシュとキャッシュ制御器とを具備する。該命令キャッシュは、命令データのラインをキャッシュするように構成され、そしてキャッシュ制御器は、該キャッシュ・ラインの境界位置に対応する命令データの冗長コピーを補助メモリ中に記憶するように構成される。補助メモリは、キャッシュ・ラインを具備するキャッシュ・メモリ中に統合されることが出来る、或いは、キャッシュ制御器又はマイクロプロセッサの他の場所に実装されることが出来る。
【００１１】
無論、本開示は、上記の実施形態に限定されない。下記の詳細な説明を読みそして付図を見れば、当業者等は、その他の可能な実施形態を気付くであろう。
【詳細な説明】
【００１２】
図１は、命令キャッシュ１０と命令キャッシュ１０に含まれる又は関連付けられる補助メモリ１２の一実施形態を図説する。命令キャッシュ１０に命じられるトランザクションをキャッシングする命令は、制御器１４によって管理され、該制御器は、キャッシュ１０中の１又は複数の境界位置に対する命令データの冗長コピーを記憶するために補助メモリ１２を使用するように構成される。更に、該制御器１４は、キャッシュ１０からの命令データの検索を管理し、その結果、少なくともある複数の整合不良の命令は、１回のアクセスで検索される。該制御器１４は、キャッシュ１０からの境界前方データを補助メモリ１２からの境界後方データと結合することによって、キャッシュ１０からの整合不良の命令の１回アクセス検索を可能にする。
【００１３】
制御器１４のこれ等の動作は、他の方法で非整合の命令をキャッシングすることによってもたらされる性能低下を除去する又は大いに低減することによってキャッシュの性能を改善する。このような動作は、可変長命令セットを使用し、そして、命令データ記憶のために非整合メモリを使用するシステムの性能を改善する。即ち、命令キャッシュ１０における記憶のために高レベルのキャッシュ又は外部メモリ（共に示されない）から受信される命令データは、種々異なる長さを有する命令の混合物を含むことが出来て、これは、命令境界が必ずしもキャッシュ境界と合致するとは限らないことを意味する。このような状況において、キャッシュ制御器１４は、１又は複数のキャッシュ境界位置に対して境界後方データの冗長記憶を使用して固定幅キャッシュに可変長命令を記憶することによってもたらされるキャッシュ境界侵害の有害な影響を軽減する。
【００１４】
ある複数の実施形態では、制御器１４は、データが整合不良の命令、即ちキャッシュ境界を横断する１又は複数のセグメントを有する命令、を含むかどうかとは無関係に、境界後方命令データを記憶する。従って、制御器１４は、ある特定の命令が整合不良であるかどうかを判定しない。その代りに、キャッシュ１０における１又は複数の境界位置に対して、制御器１４は、境界位置データの冗長コピーを、その通常のキャッシュ・フィル動作の一部として、補助メモリ１２内に記憶する。そのような実施形態では、制御器１０は、該境界データが実際に部分命令を表すかどうかを判定しない。それは、境界後方位置の命令データを、該データが境界前方位置に記憶される命令の末尾部分を表すと見込んで、単純にコピーする。
【００１５】
一例として、各キャッシュ・ラインは、ハーフライン読出しポート幅を表すセグメント境界を有することが出来る。制御器１４は、該セグメント境界の直後に位置するキャッシュ・ライン内のハーフ・ワードを（補助メモリ１２を介して）冗長的に記憶するように構成されることが出来て、その結果、該ハーフ・ワードは、該セグメントの直前に位置するハーフ・ワードを検索することと連係して検索されることが出来る。加えて、又はその代りに、制御器１４は、連続するキャッシュ・ライン中の最初のハーフ・ワードを、各キャッシュ・ラインを分離するライン終端境界にあるハーフ・ワード位置の末尾部分として、処理するように構成されることが出来る。このような構成では、制御器１４は、それぞれ次のキャッシュ・ラインの始端位置にある命令データの冗長コピーを、それぞれのキャッシュ・ラインの終端部分に記憶される命令データの末尾部分として、記憶する。このように、キャッシュ・ラインを越境する命令は、１回のキャッシュ・アクセスで検索されることが出来る。
【００１６】
境界位置のデータを補助メモリ１２中に盲目的にコピーすることの１つの利点は、操作の単純性である。すなわち、制御器１４の論理演算は、キャッシュ中の境界位置が実際に境界を横断する命令データを含むかどうかを判定することを実行しないことによって単純化される。しかしながら、他の実施形態では、制御器１４は、例えば、境界位置のデータが完全なハーフ・ワード命令であるか又は境界を横断するフル・ワード命令であるかを識別する又は少なくとも示唆するプレデコード動作に基づいて、境界位置データの冗長コピーを選択的に記憶する。
【００１７】
このような実施形態に従えば、制御器１４は、種々の整合不良インジケータの１つに応じて、何れの命令データが補助メモリ１２中に記憶されるべきかを選択的に決定する。制御器１４は、整合不良の命令データを識別して選択的に記憶することをサポートするという付加的な処理論理の煩雑性を含むけれども、該方法は、補助メモリ１２の利用効率の向上をもたらす、その理由は、境界位置のデータが該メモリ中に盲目的に書き込まれることがないからである。しかしながら、制御器１４が境界位置データをキャッシュ１０から補助メモリ１２中に盲目的に或いは選択的にコピーするかどうかとは無関係に、そのような冗長データの記憶は、１回キャッシュ・アクセス命令検索を可能にする。
【００１８】
更に詳しくは、命令キャッシュ１０は、キャッシュ・ブロックとも呼ばれる多数のキャッシュ・ライン１６〜２２を含む。それぞれのキャッシュ・ライン１６〜２２は、外部記憶源（示されない）から読み出した１又は複数の命令或いは命令のセグメントを記憶するように構成される。それぞれのキャッシュ・ライン１６〜２２は、一定の記憶容量、すなわち、ブロック・サイズとも呼ばれるライン・サイズ、を有する。従って、ある特定のキャッシュ・ライン中に記憶される最大データ量は、命令キャッシュ１０のライン・サイズによって決定される。更に、キャッシュ・ライン１６〜２２は、例えば、図１で示されるようにセクタ０とセクタ１のように、複数のセクタに細分化されることが出来る。１つの実施形態では、セクタ・サイズは、命令キャッシュ１０に関連づけられるメモリ・ポート・サイズに対応する。例えば、命令キャッシュ１０は、３２バイトのライン・サイズと１６バイトのメモリ・ポート幅を有することが出来て、かくして、キャッシュ・ライン毎に２つの１６バイトという結果になる。従って、例示的なキャッシュ・ライン１６〜２２は、２つの１６バイトのグループのデータをある特定のキャッシュ・ラインの２つのセクタに書き込むことによって埋められる。当業者等は、キャッシュ・ライン・サイズが任意の所望の値に設定されることが出来、そして、該キャッシュ・ラインは、任意の所望の数のセクタに細分化されることが可能であることを容易に理解する。
【００１９】
命令キャッシュ１０に記憶される可変長命令は、１又は複数のキャッシュ・ライン境界を横断することがあり、従って、整合不良であり得る。補助メモリ１２は、整合不良の命令に関連付けられる有害な影響を、整合不良の命令セグメント、即ち、キャッシュ・ライン境界を横断して記憶される命令のセグメント、の冗長コピーを記憶することによって、軽減する。命令セグメントは、命令に関連付けられるデータの任意のサイズのシーケンス、例えば、複数ワード、複数ハーフ・ワード、複数バイト、複数ニブル、等々、に等しいとすることが可能である。従って、命令キャッシュ１０に記憶される命令の１又は複数のセグメントがあるキャッシュ・ライン境界の外側に位置する場合、整合不良のセグメントの冗長コピーが補助メモリ１２中に記憶される。補助メモリ１２は、整合不良の命令セグメントを記憶するために多数の行２４〜３０を含み、各行は、１又は複数のカラム（columns）３２〜３４を有する。かくして、整合不良の命令セグメントの冗長コピーは、命令キャッシュ１０中に記憶される命令の整合セグメント、即ち、キャッシュ・ライン境界を横断しない命令のセグメント、との同時アクセスのために引き続き利用可能である。従って、キャッシュ１０中に記憶される境界を横断する命令は、命令キャッシュ１０から読み出される命令の整合セグメントを補助メモリ１２から読み出される命令の整合不良のセグメントと結合することによって、１回の命令キャッシュ・アクセスの間に検索されることが可能である。
【００２０】
限定的ではない例において、制御器１４は、図２のステップ１００によって説明されるように、命令データの書き込みのために命令キャッシュ１０の第１キャッシュ・ライン１６を選択する。例えば４つのセグメントＡ０−Ａ３を有する第１の命令が、図２のステップ１０２によって説明されるように、該選択されたキャッシュ・ラインに書き込まれる命令データの一部として外部メモリ又は別のキャッシュから検索される。該第１の命令は、第１キャッシュ・ライン１６中のセクタ０と１とを隔てるキャッシュ・ライン内境界を横断する２つのセグメントＡ２とＡ３を有する。かくして、図２のステップ１０４によって説明されるように、整合不良の命令セグメントＡ２とＡ３との冗長コピーＡ２´とＡ３´とが補助メモリ１２に書き込まれる。第１キャッシュ・ライン１６に書き込まれる命令データは又、第２の命令の第１セグメントＢ０も具備し、該第２の命令は２つのセグメントＢ０とＢ１とを有する。該命令の残部、セグメントＢ１、は、外部メモリ又は別のキャッシュから検索される後続グループの命令データの一部として、別のキャッシュ・ライン、例えば第２キャッシュ・ライン１８、に記憶される。例えば、命令データの第１及び第２グループは、キャッシュ１０の複数のラインを埋めるバースト・トランザクションの一部として検索される。
【００２１】
第２命令セグメントＢ１がキャッシュ１０に書き込まれるようにする特別な機構とは無関係に、第２セグメントＢ１は、キャッシュ・ライン間境界、例えばキャッシュ１０に属する第１キャッシュ・ライン１６と第２キャッシュ・ライン１８を隔てるキャッシュ・ライン間境界、を横断する方式で記憶される。このようにして、整合不良の命令セグメントＢ１の冗長コピーＢ１´は、補助メモリ１２中に記憶される。制御器１４によって続いて検索される命令データの第３グループは、４つのセグメントＣ０−Ｃ３を有する第３の命令を含み、それは第３キャッシュ・ライン２０に記憶される。この命令は、整合不良のセグメントを有しない、そしてそれゆえ、第３の命令に関連付けられるセグメントは、補助メモリ１２に記憶される必要がない。補助メモリ１２は、第３の命令に関するデータを含まない。その理由は、１回の命令キャッシュ・アクセスの間に、例えば第３キャッシュ・ライン２０のセクタ０にアクセスすることによって、第３の命令が、検索可能であるためである。
【００２２】
制御器１４は、図３のステップ２００によって説明されるように、所望の命令を含むキャッシュ・ラインを選択することによって、命令キャッシュ１０中に記憶された命令を検索する。例えば、制御器１４は、第１キャッシュ・ライン１６を選択してセグメントＢ０とＢ１とを有する第２可変長命令を検索する。次に、第２の命令の整合セグメントＢ０が、図３のステップ２０２によって説明されるように、選択されたキャッシュ・ライン１６から読み出される。整合不良の命令セグメントＢ１´の冗長コピーは、図３のステップ２０４によって説明されるように、補助メモリ１２から同時に読み出される。完全な命令Ｂ０Ｂ１は、第１キャッシュ・ライン１６から読み出した命令セグメントＢ０を補助メモリ１２から読み出した整合不良のセグメントＢ１´と結合することによって、再構成される。図３のステップ２０６は、このような動作を説明する。このような動作を用いて、制御器１４は、キャッシュ１０から整合不良の、境界を横断する命令を検索するために、複数回のキャッシュ・アクセスをする必要を免れる。
【００２３】
図４は、キャッシュ１０と補助メモリ１２とから可変長命令を検索するために、命令キャッシュ１０に含まれる或いは関連付けられる回路構成の１つの実施形態を図説する。ある命令が、命令キャッシュ１０の選択されたキャッシュ・ラインから読み出される該命令の整合セグメントを、補助メモリ１２から読み出される該命令の整合不良のセグメントと結合することによって検索される。特に、第１選択回路３６、例えばマルチプレクサ、は、そこに記憶された内容を検出すべき相手先の選択されたキャッシュ・ラインのセクタを識別する。例えば、制御器１４により供給されるアドレス制御入力（address control input）（ＡＤＤＲ）によって、マルチプレクサ３６は、命令キャッシュ１０のある選択されたキャッシュ・ラインの１つのセクタを選ぶ。このようにして、該選択されたキャッシュ・ライン・セクタの内容は、結合器回路３８に供給される。キャッシュ・ラインが２つのセクタに分割される１つの実施形態では、２つのハーフライン・データ（ＨＬ０又はＨＬ１）のうちの１つが結合器回路３８に供給される。他の実施形態では、異なる量のデータが結合器回路３８に供給される、この場合、該量は、キャッシュ・ライン・セクタの数、例えば、１／２ラインのデータ、１／４ラインのデータ、等、に対応する。
【００２４】
第２選択回路４０、例えば、第２マルチプレクサ、は、命令キャッシュ１０から検索される命令セグメントに対応する、補助メモリ１２中に記憶された整合不良の命令セグメントを選択する。例えば、制御器１４によって供給されるカラム選択信号（column select signal）（ＳＥＬ）によって、第２選択回路４０は、アクセスされるべき補助メモリ１２のカラムを選択する。もし補助メモリ１２が単一カラムのエントリーしか具備しない場合、第２選択回路４０は、不要である。このようにして、補助メモリ１２の該選択されたエントリーが結合器回路３８に供給される。もし補助メモリがエントリー毎に複数カラムの命令セグメント、例えば図４に図示されるように２つのカラム３２−３４、を含むならば、該複数カラムのうちの１つのカラムが第２選択回路４０によって選択される。選択されるカラムは、命令キャッシュ１０から現在検索されている命令によって横断される境界の型に対応する。例えば、第２カラム３４は、キャッシュ・ライン間境界を横断する整合不良の命令セグメントを記憶することが出来て、従って、もしセグメントＢ０とＢ１を含む該命令が命令キャッシュ１０から検索されているならば、選択される。このようにして、Ｂ０が命令キャッシュ１０から検索される一方で、整合不良の命令セグメントの冗長コピーＢ１´が、補助メモリ１２から同時に検索される。
【００２５】
結合器回路３８は、制御器１４によって供給される制御信号（control signal）（ＣＴＲＬ）に応答して、命令キャッシュ１０の選択された出力を補助メモリ１２の選択された出力と結合して、検索される命令を再構成する。例えば図４で説明されるセグメントＣ０−Ｃ３を有する命令のように、検索される命令がキャッシュ・ライン境界を横断しない場合、結合器回路３８は、命令キャッシュ１０の出力を補助メモリ１２に記憶されたデータと結合しない。その代りに、結合器回路３８は、命令キャッシュ１０からのみ読み出されたデータを出力する。その理由は、検索される命令が整合不良ではないからである。
【００２６】
キャッシュ・ライン境界をまたぐ命令が検索される場合、結合器回路３８は、命令キャッシュ１０と補助メモリ１２の選択された出力を種々の方法で結合することが出来る。１つの実施形態では、結合器回路３８は、キャッシュ１０から検索された命令セグメントを、検索される整合不良の命令セグメントのビット幅に対応するビット位置数だけ移動させ、次に該移動されたセグメントを該整合不良のセグメントと結合する。別の実施形態では、結合器回路３８は、補助メモリ１２から検索された整合不良の命令をキャッシュ１０から検索された命令セグメントに付加する。
【００２７】
個々の結合の実施とは無関係に、キャッシュ・ライン境界を横断する可変長命令は、命令キャッシュ１０と補助メモリ１２が同時にアクセス可能であるので、１つのキャッシュ・アクセスで検索可能である。例えば、制御器１４は、第１キャッシュ・ライン１６のハーフライン・セクタＨＬ１を選択して、それを補助メモリ１２から検索される整合不良の命令セグメントＢ１´と結合することによって、セグメントＢ０とＢ１とを含む命令を１回の命令キャッシュ・アクセスで検索する。従って、結合回路３８の出力は、補助メモリ１２に記憶された命令の整合不良のセグメントの冗長コピーＢ１´と結合された命令キャッシュ１０に記憶された命令のセグメント、Ｂ０、を含む。結果として、キャッシュ・ライン間境界を横断して記憶された命令のセグメント、即ち、セグメントＢ１を命令キャッシュ１０から検索するための後続の処理サイクルは、必要とされない。
【００２８】
図５は、キャッシュ１０と補助メモリ１２とから可変長命令を検索するための、及びしかも、検索された命令をレジスタ４２に供給するための、命令キャッシュ１０に含まれる或いはそれに関連付けられる回路構成の別の実施形態を図説する。レジスタ４２、例えば（示されてない）マイクロプロセッサに含まれる命令レジスタ、は、規定された幅を有する。更に、レジスタ４２は、命令キャッシュ１０から検索された命令の所望のセクションを記憶する。従って、命令の所望のセクションが命令キャッシュ１０及び／又は補助メモリ１２から選択されてレジスタ４２に読み込まれる。
【００２９】
その目的のために、第１選択回路４４、例えば第１マルチプレクサ、は、そこに記憶された内容が検索される相手先の選択される命令キャッシュ・ラインの１つのセクタを特定する。第２選択回路４６、例えば第２マルチプレクサ、は、補助メモリ１２に記憶された対応する冗長で整合不良の命令セグメントを選択する。第３選択回路４８、例えば第３マルチプレクサ、は、命令キャッシュ１０から読み出された出力又は補助メモリ１２から読み出された出力の何れかを選択して、該選択された出力をレジスタ４２に供給する。１つの実施形態では、第３選択回路４８は、選択された出力の所望のセクションのみをレジスタ４２に供給し、それによってレジスタ４２の決められたサイズを占有する。パススルー（pass-through）デバイス又はラッチ（latch）回路５０は、特定のキャッシュ・セクタから読み出された出力をレジスタ４２へ転送する。１つの実施形態では、パススルー・デバイス又はラッチ回路５０は、選択された出力の所望のセクションのみをレジスタ４２へ供給することによって、レジスタ４２の決められたサイズを占有する。
【００３０】
動作において、第１選択回路４４は、制御器１４によって供給されるアドレス制御入力（ＡＤＤＲ）に応じて、特定のキャッシュ・ラインのセクタの１つを選択する。第２選択回路４６は、制御器１４によって供給されるカラム選択信号（ＳＥＬ）に応じて、該選択されたキャッシュ・ラインとセクタに記憶された命令データに対応する整合不良の命令セグメントを、もしあれば、選択する。第３選択回路４８は、制御器１４によって供給される制御信号（ＣＴＲＬ）に応じて、命令キャッシュ１０から読み出したデータを選択するか或いは補助メモリ１２からから読み出したデータを選択するかどうか、を決定する。更に、第３選択回路４８は、該選択されたデータ又はその一部のみをレジスタ４２に供給する。第３選択回路４８の出力は、レジスタ４２の上位部、例えば上位ハーフ・ワード部分、を埋める。パススルー・デバイス又はラッチ回路５０の出力は、レジスタ４２の下位部、例えば下位ハーフ・ワード部分、を埋める。図５に図示される回路構成は、キャッシュ・ライン境界交差に関連する傾向を利用する。すなわち、可変長命令の下位部分が命令キャッシュ１０の第１セクタに記憶されることができ、他方で、該命令の上位部分が異なるセクタ又はキャッシュ・ラインに記憶されることができ、従ってキャッシュ・ライン境界を横断する。このようにして、パススルー・デバイス又はラッチ回路５０は、この傾向を利用し、そしてレジスタ４２の下位部分を命令キャッシュ１０から検索される下位の命令データで埋める。第３選択回路４８は、レジスタ４２の上位部分を、もし検索のために選択された該命令がキャッシュ・ライン境界を横断しない場合、命令キャッシュ１０から検索される対応する上位の命令データで埋める。
【００３１】
逆に、もし選択された命令がキャッシュ・ライン境界を横断する場合、第３選択回路４８は、レジスタ４２の上位部分を補助メモリ１２から検索された冗長上位命令データで埋める。このようにして、レジスタ４２は、特定の命令がキャッシュ・ライン境界を横断するかどうかとは無関係に、１回のアクセスで読み込まれることが出来る。
【００３２】
限定的ではない例において、該レジスタ４２は、３２ビットの幅を有し、そして上位ハーフ・ワード・セクションと下位ハーフ・ワード・セクションに分割される。更に、命令キャッシュ１０と補助メモリ１２に記憶されるそれぞれの命令セグメントは、１６ビットの幅を有する。その意味で、命令セグメントＡ１とＡ２とを検索するために、対応する整合不良の命令セグメントＡ２´は、補助メモリ１２から読み出され、そして、レジスタ４２の上位ハーフ・ワード（ＨＷ１）として第３選択回路４８によりレジスタ４２に読み込まれる。更に、別の所望の命令セグメント、Ａ１、は、命令キャッシュ１０から読み出され、そして、レジスタ４２の下位ハーフ・ワード（ＨＷ０）としてパススルー・デバイス又はラッチ回路５０によりレジスタ４２に同時に読み込まれる。このようにして、例え所望の命令がキャッシュ・ライン内境界を横断していても、レジスタ４２は、１回のアクセスで読み込まれる。
【００３３】
この点において、補助メモリ１２に記憶された整合不良の命令セグメントは、命令キャッシュ１０に記憶された対応する整合命令セグメントとリンクされ、従って記憶された命令の効率的検索を可能にする、ということは、注意しておく価値がある。例えば、１つの実施形態では、整合不良の命令セグメントの冗長コピーを含む補助メモリ１２の特定の行は、該命令の整合セグメントを含む命令キャッシュ１０中のある行に対応する又はリンクする。
【００３４】
更に、補助メモリ１２の容量は、所望の数の命令セグメントを収納するために好適な任意のサイズのデータ・セグメントに対応することが出来る。図１に図示されるように、補助メモリ１２は、エントリー毎に２カラムを有することが示される：命令キャッシュのセクタの間のキャッシュ・ライン内境界交差に対応する命令セグメントを記憶するための１つのカラム３２、及び、キャッシュ・ライン間境界交差に対応する命令セグメントを記憶する記憶するための第２カラム３４、である。しかしながら、補助メモリ１２は、整合不良の命令セグメントを記憶するために任意の好適な数のカラム、例えば、通常発生する境界交差の型に対応する１つのカラム、を具備することが出来る。
【００３５】
命令キャッシュ１０のキャッシュ・ラインが２超のセクタに分割される場合、補助メモリ１２は、複数のカラムに分割されることが出来る。１つのカラムは、キャッシュ・ライン間境界交差に対応することが出来て、残りのカラムは、キャッシュ・ライン・セクタの多さに関連するキャッシュ・ライン内境界交差に対応することが出来る。別の実施形態では、補助メモリ１２は、キャッシュ・ライン内境界又はキャッシュ・ライン間境界の何れかを横断する整合不良の命令セグメントを記憶するように動的に構成可能である単一カラムのエントリーを具備する。従って、該単一カラムのエントリーは、整合不良の命令セグメントの複合物を含むことが出来る。補助メモリ１２と命令キャッシュ１０の特定の構成とは無関係に、補助メモリ１２は、１回の命令キャッシュ・アクセスの間に命令キャッシュ・ライン境界を横断して記憶された可変長命令の検索を可能にする。
【００３６】
図６は、命令キャッシュ１０、補助メモリ１２、及び制御器１４を含むマイクロプロセッサ５２の一実施形態を図説する。補助メモリ１２は、命令キャッシュ１０に含まれる又は関連付けられることが出来る。その例として、キャッシュ１０に付加される、或いは第２レベル・キャッシュ（示されない）のような高レベル・キャッシュに含まれる又は関連付けられる１又は複数の追加のカラムがある。それに代わって、補助メモリ・デバイスは、命令キャッシュ１０に関連付けられるタグ・アレイ（示されない）に含まれる又は関連付けられることが出来る、或いは、プロセッサ５２に含まれる分離されたメモリ・アレイであることが出来る。プロセッサ５２は、更に命令ユニット５４、複数の実行ユニット５６、バス・インターフェース・ユニット５８及びデータ・キャッシュ６０を含む。
【００３７】
命令ユニット５４は、実行ユニット５６に対する命令フローの集中制御を行うことが出来る。実行ユニット５６は、１又は複数の読込／記憶ユニット（示されない）、浮動小数点ユニット（示されない）及び整数ユニット（示されない）を含み、複数の命令を並列に実行することが出来る。その意味で、プロセッサ５２は、スーパースカラー及び／又はスーパー・パイプラインであることが出来る。バス・インターフェース・ユニット５８は、プロッセッサ５２宛に／からデータ、宛先及び制御信号を転送するための機構を提供する。命令及びデータ・キャッシュ１０，６０は、実行ユニット５６がそれぞれ命令及びデータに迅速にアクセスすることを可能にする。
【００３８】
更に詳しくは、命令ユニット５４は、命令フェッチ・ユニット６２、分岐予測ユニット（Branch Prediction Unit）（ＢＰＵ）６４、命令キュー（queue）６６、及び命令ディスパッチ・ユニット６８を含む。フェッチ・ユニット６２は、命令キャッシュ１０から命令を検索し、それ等を復号し、そして該復号された命令を命令キュー６６に読み込ませる。命令ディスパッチ・ユニット６８は、順番待ちの（queued）命令を適切な実行ユニット５６にディスパッチする。ＢＰＵ６４は、分岐命令を検出し、そして、検出された分岐の型に応じて、種々の分岐予測手順を実行する、例えば、分岐先のアドレス及び／又はある特定の分岐が選択されるかどうかを予測する。
【００３９】
１つの実施形態では、補助メモリ１２は、制御器１４の制御の下で、キャッシュ・ライン境界交差が生じるかどうかとは無関係に、境界後方の命令データを記憶する。このような場合、補助メモリ１２中に含まれるある命令データは、整合不良ではない可能性があり、従って、命令キャッシュ１０から命令を検索する際に必要とされない。もしある命令が、１回の命令キャッシュ・アクセスで命令キャッシュから検索可能であるならば、補助メモリ１２中に記憶された冗長セグメントは、そのような命令が検索される場合には、単に無視又は破棄されることが出来る。別の実施形態では、補助メモリ１２は、制御器１４の制御の下で、整合不良の命令セグメントのみを選択的に記憶する。この実施形態に従えば、制御器１４は、種々のインジケータの１つに応答して、補助メモリ１２中への記憶のために整合不良の命令セグメントだけを選択的に特定する。
【００４０】
整合不良の命令セグメントを特定する１つの実施形態では、命令プレデコード（pre-decode）情報が制御器１４によって使用されどの命令セグメントが補助メモリ１２に記憶されるべきかを決定する。命令ユニット５４に含まれるプレデコード論理回路（示されない）は、諸命令をそれ等が命令キャッシュ１０に書き込まれている状態で検査する。命令プレデコードの期間にプレデコード論理回路は、あるキャッシュ・ライン境界が現在キャッシュ１０に書き込まれている命令によって横断されるかどうかを識別する。
【００４１】
ある複数の実施形態では、プレデコード論理回路は、境界交差の型、即ちキャッシュ・ライン内境界交差又はキャッシュ・ライン間境界交差、を決定する。制御器１４は、プレデコード論理回路によって生成された指示に応じて、補助メモリ１２にキャッシュ・ライン境界を横断する命令セグメントの冗長コピーを記憶するように命令する。更に、もし補助メモリ１２が種々異なる型の整合不良の命令セグメントを記憶するために複数のカラムを含むならば、プレデコード論理回路は、制御器１４にどの型のキャッシュ・ライン境界が横断されるかを指示する。このようにして、制御器１４は、補助メモリ１２に、該メモリ１２の特定のカラムに整合不良の命令セグメントを記憶するように命令する。
【００４２】
プレデコード論理回路は、命令キャッシュ１０に書き込まれている命令の命令長を確かめるように更に構成されることが出来る。従って、制御器１４は、該命令長情報を使用してある特定の命令がキャッシュ・ライン境界を横断するかどうかを判定する。それに代わって、制御器１４は、入力する命令の長さを決定するための論理回路を含む。それとは関係なく、制御器１４は、命令長情報を使用してある特定の命令がキャッシュ・ライン境界を横断するかどうかを判定する、そしてもしそうであるならば、それに従って補助メモリ１２を動かす。
【００４３】
整合不良の命令セグメントを特定する別の実施形態では、制御器１４は、命令キャッシュ１０に書き込まれている命令に関連付けられるキャッシュ・ライン・エントリー位置、即ち、命令の先頭が書き込まれるキャッシュ・ライン中の始点、をモニタする。制御器１４は、ある特定の入力する情報があるキャッシュ・ライン境界を横断するかどうかを、キャッシュ・ライン・エントリー位置情報を使用して判定する。例えば、もしキャッシュ・ライン・エントリー位置が、キャッシュ・セクタ又はキャッシュ・ライン中には２バイトしか残されていず、且つ、４バイトの命令が該セクタ又はラインに書き込まれようとしている、ということを示すならば、キャッシュ・ライン内境界交差又はキャッシュ・ライン間境界交差の何れかが発生する。従って、制御器１４は、このキャッシュ・ライン・エントリー情報を使用して、入力する命令がキャッシュ・ライン境界を横断するかどうかを判定し、そしてもしそうであるならば、整合不良の命令セグメントの補助記憶を命令する。
【００４４】
整合不良の命令セグメントを特定する更に別の実施形態では、制御器１４は、残部の情報に先立ってフェッチされた命令のセクションから取得された情報を使用して、キャッシュ・ライン境界交差が生じるかどうかを判定する。この実施形態に従えば、例えば、プロセッサ５２によって要求されるクリティカル・ワード優先（critical-word-first）メモリ・アクセス動作又はクリティカル・ダブル・ワード優先（critical-double-word-first）メモリ・アクセス動作に応じて、命令ユニット５４は、命令の一定部分が該命令の残部に先立ってフェッチされることを要求する。このような動作に応じて、所望の命令の一部は、該命令の残部が命令キャッシュ１０に書き込まれる前にフェッチされそして検査される。制御器１４、又はそれに代わって、命令ユニット５４中に含まれる論理回路は、命令の先行部分を検査して、該命令の残部が続いて命令キャッシュ１０に書き込まれる際に、キャッシュ・ライン境界を横断するかどうかを判定する。制御器１４は、先行命令部分を検査することによって取得される情報を使用し、該命令の残部がキャッシュ・ライン境界を横断するかどうかを判定する、そしてもしそうであるならば、それ等が命令キャッシュ１０に書き込まれる際に、整合不良の命令セグメントの補助記憶を命令する。
【００４５】
整合不良の命令セグメントを特定する更に別の実施形態では、整合不良の命令セグメントの履歴データが制御器１４によって使用されて、命令キャッシュ１０に書き込まれるある特定の命令がキャッシュ・ライン境界を横断するかどうかを予測する。限定的ではない例において、命令ユニット５４又は制御器１４は、命令キャッシュ１０に過去に書き込まれた命令に関連付けられるキャッシュ・ライン交差データを含む整合不良の命令セグメント履歴表（示されない）を維持管理する。該履歴表は又、キャッシュ１０に書き込まれるべき次の命令（単数又は複数）がキャッシュ・ライン境界を横断するかどうかを示す情報を含むことが出来る。制御器１４は、該履歴データを用いて、命令キャッシュ１０に書き込まれるある特定の命令がキャッシュ・ライン境界を横断するかどうかを予測する。
【００４６】
履歴データは、命令が命令キャッシュ１０に書き込まれる毎に更新されることが出来る、或いは、もっと少ない頻度で更新されることが出来る。更に、整合不良の命令セグメントの履歴データは、境界予測が正しいかどうかに基づいて、例えば、マイクロプロセッサにおける分岐予測を追跡し解決するために使用されたものと類似の技術を使用して、修正されることが出来る。
【００４７】
変形と適用の上記の範囲を念頭に置いて、本開示は、上記の説明によって限定されることはなく、又、添付図によって限定されることもない、ということは理解されるべきである。その代りに、本開示は、下記の請求の範囲とその法的な同等物によってのみ限定される。
【図面の簡単な説明】
【００４８】
【図１】本発明の命令キャッシュと補助メモリの一実施形態を示すブロック図。
【図２】本発明の可変長命令をキャッシングするためのプログラム論理の一実施形態を示す論理流れ図。
【図３】本発明のキャッシングされた可変長命令を検索するためのプログラム論理の一実施形態を示す論理流れ図。
【図４】本発明の命令キャッシュと補助メモリの別の実施形態を示すブロック図。
【図５】本発明の命令キャッシュと補助メモリの更に別の実施形態を示すブロック図。
【図６】本発明の命令キャッシュと補助メモリを含むマイクロプロセッサの一実施形態を示すブロック図。
【図１】
2009535743.tif 000003
【図２】
2009535743.tif 000004
【図３】
2009535743.tif 000005
【図４】
2009535743.tif 000006
【図５】
2009535743.tif 000007
【図６】
2009535743.tif 000008
【国際調査報告】
2009535743.tif 000009
2009535743.tif 000010