JP2009535743A - 可変長命令をキャッシングするための方法及び装置 - Google Patents

可変長命令をキャッシングするための方法及び装置 Download PDF

Info

Publication number
JP2009535743A
JP2009535743A JP2009509929A JP2009509929A JP2009535743A JP 2009535743 A JP2009535743 A JP 2009535743A JP 2009509929 A JP2009509929 A JP 2009509929A JP 2009509929 A JP2009509929 A JP 2009509929A JP 2009535743 A JP2009535743 A JP 2009535743A
Authority
JP
Japan
Prior art keywords
instruction
cache
segment
data
boundary
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009509929A
Other languages
English (en)
Other versions
JP4755281B2 (ja
Inventor
モロー、マイケル・ウィリアム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2009535743A publication Critical patent/JP2009535743A/ja
Application granted granted Critical
Publication of JP4755281B2 publication Critical patent/JP4755281B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

命令キャッシュ制御器は、補助メモリを使用してキャッシュ境界位置に対応するキャッシングされた命令データの冗長コピーを記憶し、それによって、後続の、該境界位置を横断する命令の、1回キャッシュ・アクセス検索を可能にする。1又は複数の実施形態では、該キャッシュ制御器は、該境界後方位置に対する命令データを該補助メモリ中にコピーし、そして、該コピーされたデータを該境界前方位置から得られるキャッシュ・データの中に多重化する。

Description

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

Claims (37)

  1. 可変長命令をキャッシングする方法であって、
    キャッシュ・ラインに命令データを書き込むこと、及び
    1又は複数のキャッシュ境界位置に対して命令データの冗長コピーを記憶すること
    を具備する方法。
  2. 1又は複数のキャッシュ境界位置に対して命令データの冗長コピーを記憶することは、1又は複数のキャッシュ境界位置に対して命令データを補助メモリにコピーすることを具備する、請求項1の方法。
  3. 前記補助メモリは、前記命令キャッシュに関連付けられるタグ・アレイ、前記命令キャッシュに含まれる又は関連付けられる1又は複数の冗長メモリ素子、分離されたメモリ・アレイ、及び高レベル・キャッシュ、のうちの1つを具備する、請求項2の方法。
  4. 1又は複数のキャッシュ境界位置に対して命令データを補助メモリにコピーすることは、キャッシュ・ライン内境界位置に対して命令データを前記補助メモリにコピーすることを具備する、請求項2の方法。
  5. 1又は複数のキャッシュ境界位置に対して命令データを補助メモリにコピーすることは、キャッシュ・ライン間境界位置に対して命令データを前記補助メモリにコピーすることを具備する、請求項2の方法。
  6. 1又は複数のキャッシュ境界位置に対して命令データの冗長コピーを記憶することは、
    前記命令データに含まれる命令の整合不良のセグメントを特定すること、及び
    前記整合不良のセグメントを補助メモリにコピーすること
    を具備する、請求項1の方法。
  7. 前記命令データに含まれる命令の整合不良のセグメントを特定することは、前記命令をプレデコードして前記命令の境界交差セグメントを特定することを具備する、請求項6の方法。
  8. 前記命令データに含まれる命令の整合不良のセグメントを特定することは、前記命令のキャッシュ・ライン・エントリー位置を処理して前記命令の境界交差セグメントを特定することを具備する、請求項6の方法。
  9. 前記命令の前記キャッシュ・ライン・エントリー位置は、前記命令に関連付けられるフェッチ・アドレスに対応する、請求項8の方法。
  10. 前記命令データに含まれる命令の整合不良のセグメントを特定することは、前記命令に関連付けられる長さ情報を処理して前記命令の境界交差セグメントを特定することを具備する、請求項6の方法。
  11. 前記命令データに含まれる命令の整合不良のセグメントを特定することは、命令整合不良履歴データを処理して前記命令の境界交差セグメントを特定することを具備する、請求項6の方法。
  12. 前記命令データに含まれる命令の整合不良のセグメントを特定することは、前記命令の残部に先行してフェッチされる前記命令の一部を処理して前記命令の境界交差セグメントを特定することを具備する、請求項6の方法。
  13. 前記命令の前記残部に先行してフェッチされる前記命令の前記一部は、クリティカル・ワード優先(critical-word-first)メモリ・アクセス動作に応じてフェッチされる命令部分及びクリティカル・ダブル・ワード優先(critical-double-word-first)メモリ・アクセス動作に応じてフェッチされる命令部分、のうちの1つを具備する、請求項12の方法。
  14. 命令キャッシュに含まれるキャッシュ・ラインへの命令データの記憶を管理し、そして、1又は複数のキャッシュ境界位置に対する命令データの冗長コピーの記憶を管理するように、構成されるキャッシュ制御器、を具備する装置。
  15. 前記キャッシュ制御器は、1又は複数のキャッシュ境界位置に対して命令データを補助メモリへとコピーすることによって、1又は複数のキャッシュ境界位置に対する命令データの冗長コピーの記憶を管理するように構成される、請求項14の装置。
  16. 前記補助メモリは、前記命令キャッシュに関連付けられるタグ・アレイ、前記命令キャッシュに含まれる又は関連付けられる1又は複数の冗長メモリ素子、分離されたメモリ・アレイ、及び高レベル・キャッシュ、のうちの1つを具備する、請求項15の装置。
  17. 前記キャッシュ制御器は、キャッシュ・ライン内境界位置に対して命令データを補助メモリにコピーすることによって、1又は複数のキャッシュ境界位置に対して命令データを前記補助メモリにコピーするように構成される、請求項15の装置。
  18. 前記キャッシュ制御器は、キャッシュ・ライン間境界位置に対して命令データを補助メモリにコピーすることによって、1又は複数のキャッシュ境界位置に対して命令データを前記補助メモリにコピーするように構成される、請求項14の装置。
  19. 前記キャッシュ制御器は、前記命令データに含まれる命令の整合不良のセグメントを特定すること及び前記整合不良のセグメントを補助メモリへとコピーすることによって、1又は複数のキャッシュ境界位置に対する命令データの冗長コピーの記憶を管理するように構成される、請求項14の装置。
  20. 前記キャッシュ制御器は、前記命令の境界交差セグメントを特定するために前記命令に関連付けられるプレデコードされた情報を処理することによって、前記命令データに含まれる前記命令の整合不良のセグメントを特定するように構成される、請求項19の装置。
  21. 前記キャッシュ制御器は、前記命令の境界交差セグメントを特定するために前記命令のキャッシュ・ライン・エントリー位置を処理することによって、前記命令データに含まれる前記命令の整合不良のセグメントを特定するように構成される、請求項19の装置。
  22. 前記命令の前記キャッシュ・ライン・エントリー位置は、前記命令に関連付けられるフェッチ・アドレスに対応する、請求項21の装置。
  23. 前記キャッシュ制御器は、前記命令の境界交差セグメントを特定するために前記命令に関連付けられる長さ情報を処理することによって、前記命令データに含まれる前記命令の整合不良のセグメントを特定するように構成される、請求項19の装置。
  24. 前記キャッシュ制御器は、前記命令の境界交差セグメントを特定するために命令整合不良履歴データを処理することによって、前記命令データに含まれる命令の整合不良のセグメントを特定するように構成される、請求項19の装置。
  25. 前記キャッシュ制御器は、前記命令の境界交差セグメントを特定するために前記命令の残部に先行してフェッチされる前記命令の一部を使用することによって、前記命令データに含まれる前記命令の整合不良のセグメントを特定するように構成される、請求項19の装置。
  26. 前記命令の前記残部に先行してフェッチされる前記命令の前記一部は、クリティカル・ワード優先メモリ・アクセス動作に応じてフェッチされる命令部分及びクリティカル・ダブル・ワード優先メモリ・アクセス動作に応じてフェッチされる命令部分、のうちの1つを具備する、請求項25の装置。
  27. 前記キャッシュ制御器は、前記命令キャッシュから前記命令のセグメントを読み出すこと、及び補助メモリから前記命令の整合不良のセグメントを読み出すことによって、前記キャッシュ・ラインから前記命令データに含まれる命令を検索するように更に構成される、請求項14の装置。
  28. 前記キャッシュ制御器は、前記命令キャッシュから読み出した前記命令の前記セグメントを前記命令の前記整合不良のセグメントと結合するように更に構成される、請求項27の装置。
  29. 前記キャッシュ制御器は、前記命令キャッシュから読み出した前記命令の前記セグメントに前記命令の前記整合不良のセグメントを付加することによって、前記命令キャッシュから読み出した前記命令の前記セグメントを前記命令の前記整合不良のセグメントと結合するように構成される、請求項28の装置。
  30. 前記キャッシュ制御器は、前記命令の前記整合不良のセグメント、又は前記命令キャッシュの第1セクタから読み出した前記命令の前記セグメントの第1部分のうちの1つを選択し、そして前記命令の前記整合不良のセグメント又は前記命令キャッシュの前記第1セクタから読み出した前記命令の前記セグメントの前記第1部分のうちの前記選択された1つを前記キャッシュ・ラインの第2セクタから読み出した前記命令の第2部分と結合することによって、前記命令キャッシュから読み出した前記命令の前記セグメントを前記命令の前記整合不良のセグメントと結合するように構成される、請求項28の装置。
  31. 命令キャッシュに含まれるキャッシュ・ラインに命令データを記憶するように構成される命令キャッシュ、及び
    1又は複数のキャッシュ境界位置に対する命令データの冗長コピーの補助メモリへの記憶を管理するように構成されるキャッシュ制御器
    を具備するマイクロプロセッサ。
  32. 前記1又は複数のキャッシュ境界位置は、前記命令キャッシュの1又は複数のキャッシュ・ライン内境界位置及び前記命令キャッシュのキャッシュ・ライン間境界位置、を具備する、請求項31のマイクロプロセッサ。
  33. 前記補助メモリは、前記命令キャッシュに関連付けられるタグ・アレイ、前記命令キャッシュに含まれる又は関連付けられる1又は複数の付加メモリ素子、分離されたメモリ・アレイ、及び高レベル・キャッシュ、のうちの1つを具備する、請求項31のマイクロプロセッサ。
  34. キャッシングされた可変長命令を検索する方法であって、
    キャッシュ・ラインから命令のセグメントを読み出すこと、及び
    補助メモリから前記命令の整合不良のセグメントを読み出すこと
    を具備する方法。
  35. 前記命令の前記整合不良のセグメントを前記キャッシュ・ラインから読み出した前記命令の前記セグメントと結合することを更に具備する、請求項34の方法。
  36. 前記命令の前記整合不良のセグメントを前記キャッシュ・ラインから読み出した前記命令の前記セグメントと結合することは、前記命令の前記整合不良のセグメントを前記キャッシュ・ラインから読み出した前記命令の前記セグメントに付加すること、を具備する、請求項35の方法。
  37. 前記命令の前記整合不良のセグメントを前記キャッシュ・ラインから読み出した前記命令の前記セグメントと結合することは、
    前記命令の前記整合不良のセグメントと前記キャッシュ・ラインの第1セクタから読み出した前記命令の第1部分とのうちの1つを選択すること、及び
    前記命令の前記整合不良のセグメントと前記キャッシュ・ラインの前記第1セクタから読み出した前記命令の前記第1部分とのうちの前記選択された1つを前記キャッシュ・ラインの第2セクタから読み出した前記命令の第2部分と結合すること
    を具備する、請求項35の方法。
JP2009509929A 2006-05-01 2007-04-19 可変長命令をキャッシングするための方法及び装置 Expired - Fee Related JP4755281B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/381,038 US7337272B2 (en) 2006-05-01 2006-05-01 Method and apparatus for caching variable length instructions
US11/381,038 2006-05-01
PCT/US2007/066980 WO2007130789A2 (en) 2006-05-01 2007-04-19 Method and apparatus for caching variable length instructions

Publications (2)

Publication Number Publication Date
JP2009535743A true JP2009535743A (ja) 2009-10-01
JP4755281B2 JP4755281B2 (ja) 2011-08-24

Family

ID=38561189

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009509929A Expired - Fee Related JP4755281B2 (ja) 2006-05-01 2007-04-19 可変長命令をキャッシングするための方法及び装置

Country Status (10)

Country Link
US (1) US7337272B2 (ja)
EP (1) EP2089801B1 (ja)
JP (1) JP4755281B2 (ja)
KR (1) KR101005180B1 (ja)
CN (1) CN101432703B (ja)
BR (1) BRPI0711166A2 (ja)
CA (1) CA2649476C (ja)
MX (1) MX2008013776A (ja)
RU (1) RU2435204C2 (ja)
WO (1) WO2007130789A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015534687A (ja) * 2012-09-26 2015-12-03 クアルコム,インコーポレイテッド 異なるキャッシュ可能性を用いてページ横断命令を管理するための方法および装置

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7587580B2 (en) * 2005-02-03 2009-09-08 Qualcomm Corporated Power efficient instruction prefetch mechanism
US8261019B2 (en) * 2009-02-13 2012-09-04 Oracle America, Inc. Conveying critical data in a multiprocessor system
US8086801B2 (en) * 2009-04-08 2011-12-27 International Business Machines Corporation Loading data to vector renamed register from across multiple cache lines
CN101699391B (zh) * 2009-09-30 2013-01-16 江南大学 提高Java处理器取指令带宽的字节码缓冲装置及使用方法
US9460018B2 (en) 2012-05-09 2016-10-04 Qualcomm Incorporated Method and apparatus for tracking extra data permissions in an instruction cache
US9495297B2 (en) 2014-07-22 2016-11-15 International Business Machines Corporation Cache line crossing load techniques for a caching system
US20160179540A1 (en) * 2014-12-23 2016-06-23 Mikhail Smelyanskiy Instruction and logic for hardware support for execution of calculations
US10133627B2 (en) 2015-12-11 2018-11-20 SK Hynix Inc. Memory device controller with mirrored command and operating method thereof
CN106227676B (zh) * 2016-09-22 2019-04-19 大唐微电子技术有限公司 一种高速缓存以及从高速缓存中读取数据的方法和装置
US11334491B1 (en) * 2020-11-18 2022-05-17 Centaur Technology, Inc. Side cache array for greater fetch bandwidth

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS53109443A (en) * 1977-03-07 1978-09-25 Hitachi Ltd Data processor
JPS6020255A (ja) * 1983-07-15 1985-02-01 Fujitsu Ltd バツフア記憶制御方式
JPS63245745A (ja) * 1987-04-01 1988-10-12 Hitachi Ltd バツフア記憶制御装置
WO1999047999A1 (en) * 1998-03-18 1999-09-23 Qualcomm Incorporated A digital signal processor
JP2004078627A (ja) * 2002-08-20 2004-03-11 Nec Corp Vliwプロセッサにおける命令キャッシュ制御システム及び命令キャッシュ制御方法
JP2004531837A (ja) * 2001-06-26 2004-10-14 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド レベル2キャッシュへのeccビットおよびプリデコードビットの記憶を追跡するためのタイプビットの使用
JP2009503700A (ja) * 2005-07-29 2009-01-29 クゥアルコム・インコーポレイテッド 可変長命令の固定数を持つ命令キャッシュ

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
US6006324A (en) * 1995-01-25 1999-12-21 Advanced Micro Devices, Inc. High performance superscalar alignment unit
US5802323A (en) * 1996-06-14 1998-09-01 Advanced Micro Devices, Inc. Transparent burst access to data having a portion residing in cache and a portion residing in memory
US5892962A (en) * 1996-11-12 1999-04-06 Lucent Technologies Inc. FPGA-based processor
US7340495B2 (en) * 2001-10-29 2008-03-04 Intel Corporation Superior misaligned memory load and copy using merge hardware
US7243172B2 (en) * 2003-10-14 2007-07-10 Broadcom Corporation Fragment storage for data alignment and merger

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS53109443A (en) * 1977-03-07 1978-09-25 Hitachi Ltd Data processor
JPS6020255A (ja) * 1983-07-15 1985-02-01 Fujitsu Ltd バツフア記憶制御方式
JPS63245745A (ja) * 1987-04-01 1988-10-12 Hitachi Ltd バツフア記憶制御装置
WO1999047999A1 (en) * 1998-03-18 1999-09-23 Qualcomm Incorporated A digital signal processor
JP2004531837A (ja) * 2001-06-26 2004-10-14 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド レベル2キャッシュへのeccビットおよびプリデコードビットの記憶を追跡するためのタイプビットの使用
JP2004078627A (ja) * 2002-08-20 2004-03-11 Nec Corp Vliwプロセッサにおける命令キャッシュ制御システム及び命令キャッシュ制御方法
JP2009503700A (ja) * 2005-07-29 2009-01-29 クゥアルコム・インコーポレイテッド 可変長命令の固定数を持つ命令キャッシュ

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015534687A (ja) * 2012-09-26 2015-12-03 クアルコム,インコーポレイテッド 異なるキャッシュ可能性を用いてページ横断命令を管理するための方法および装置

Also Published As

Publication number Publication date
EP2089801A2 (en) 2009-08-19
CN101432703A (zh) 2009-05-13
KR101005180B1 (ko) 2011-01-04
BRPI0711166A2 (pt) 2011-08-23
EP2089801B1 (en) 2018-07-18
CA2649476C (en) 2012-02-07
CA2649476A1 (en) 2007-11-15
RU2435204C2 (ru) 2011-11-27
US20070255905A1 (en) 2007-11-01
KR20090018928A (ko) 2009-02-24
WO2007130789A2 (en) 2007-11-15
CN101432703B (zh) 2016-09-14
US7337272B2 (en) 2008-02-26
JP4755281B2 (ja) 2011-08-24
MX2008013776A (es) 2008-11-14
WO2007130789A3 (en) 2008-02-21
RU2008147131A (ru) 2010-06-10

Similar Documents

Publication Publication Date Title
JP4755281B2 (ja) 可変長命令をキャッシングするための方法及び装置
JP3794917B2 (ja) 分岐予測を迅速に特定するための命令キャッシュ内のバイト範囲に関連する分岐セレクタ
EP2519874B1 (en) Branching processing method and system
US6499097B2 (en) Instruction fetch unit aligner for a non-power of two size VLIW instruction
US6021471A (en) Multiple level cache control system with address and data pipelines
US5721957A (en) Method and system for storing data in cache and retrieving data from cache in a selected one of multiple data formats
JPH0321934B2 (ja)
JP3641031B2 (ja) 命令装置
JP3729545B2 (ja) キャッシュメモリへのアクセス
US5893146A (en) Cache structure having a reduced tag comparison to enable data transfer from said cache
EP1000398B1 (en) Isochronous buffers for mmx-equipped microprocessors
JPH0836491A (ja) パイプライン・ストア命令を実行する装置及びその方法
US6314509B1 (en) Efficient method for fetching instructions having a non-power of two size
US7134000B2 (en) Methods and apparatus for instruction alignment including current instruction pointer logic responsive to instruction length information
JP3896356B2 (ja) キャッシュラインにアクセスするための方法、システム、コンピュータ使用可能媒体、およびキャッシュラインセレクタ
US6321325B1 (en) Dual in-line buffers for an instruction fetch unit
US7640414B2 (en) Method and apparatus for forwarding store data to loads in a pipelined processor
JPH10116229A (ja) データ処理装置
US6904500B2 (en) Cache controller
JP3824657B2 (ja) 1クロックサイクル内でデータをストアするよう構成されたデータメモリユニット、およびその動作方法
JP2762797B2 (ja) 命令キャッシュを有するパイプライン構成の情報処理装置
US6735686B1 (en) Data processing device including two instruction decoders for decoding branch instructions
JPH0646381B2 (ja) 命令取出し装置
JPH09114733A (ja) キャッシュ記憶装置における非整列データ転送機構
KR100214072B1 (ko) 임시버퍼를 사용한 마이크로 프로세서

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091208

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100308

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100317

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100408

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100415

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101116

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110214

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110221

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110316

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110324

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110329

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110426

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110526

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140603

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4755281

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees