JP2008542880A - 命令の型に応じて構成可能なキャッシュ・システム - Google Patents

命令の型に応じて構成可能なキャッシュ・システム Download PDF

Info

Publication number
JP2008542880A
JP2008542880A JP2008513691A JP2008513691A JP2008542880A JP 2008542880 A JP2008542880 A JP 2008542880A JP 2008513691 A JP2008513691 A JP 2008513691A JP 2008513691 A JP2008513691 A JP 2008513691A JP 2008542880 A JP2008542880 A JP 2008542880A
Authority
JP
Japan
Prior art keywords
cache
instruction
type
load
level
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.)
Abandoned
Application number
JP2008513691A
Other languages
English (en)
Inventor
トラン、タング、エム.
ガリベイ、ラウル、エイ.、ジュニア
シナコンダ、ムラリダーラン、エス.
ミラー、ポール、ケイ.
Original Assignee
テキサス インスツルメンツ インコーポレイテッド
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 テキサス インスツルメンツ インコーポレイテッド filed Critical テキサス インスツルメンツ インコーポレイテッド
Publication of JP2008542880A publication Critical patent/JP2008542880A/ja
Abandoned legal-status Critical Current

Links

Images

Classifications

    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/3824Operand accessing
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement

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

プロセッサ(51)は、フェッチされたそれぞれの命令について命令の型を判定するデコード論理演算回路(54)、第1のレベルのキャッシュ(L1)、第1のレベルのキャッシュに結合された第2のレベルのキャッシュ(L2)、ならびに第1および第2のレベルのキャッシュに動作するように結合された制御論理演算回路を備える。制御論理演算回路は、好ましくは、第1の型の命令についてキャッシュ・ミスがあった場合にキャッシュ・ラインフィルが第1のレベルのキャッシュに対し実行されるようにするが、第2の型の命令については第1のレベルのキャッシュに対しラインフィルが実行されるのを禁止する。

Description

本発明は、データ通信システムにおいて有用なマイクロプロセッサ・キャッシュ装置および方法に関する。
(背景)
オンチップ・キャッシュは、様々なマイクロプロセッサ設計において使用されており、頻繁に使用される情報を高速オンチップ・キャッシュ・メモリに格納することにより性能を向上させる。プログラム実行時に情報を素早く取り出せるため、性能が向上する。システムによっては、複数のキャッシュ・レベルを有するものがある。「L1」キャッシュは、典型的には、比較的小さいが、アクセス・タイムは、非常に高速である。「L2」キャッシュは、典型的には、L1キャッシュよりも大きいが、L1キャッシュよりも遅いアクセス・タイムを有する。
ターゲット・メモリ・ロケーションからデータを取り出そうとする、「ロード」命令の場合、プロセッサは、まず最初に、ターゲット・データがすでにL1キャッシュ内に入っているかどうかを判定する。データがL1キャッシュ内にある場合(キャッシュ「ヒット」と呼ばれる)、ターゲット・データは、L1キャッシュから取り出される。データがL1キャッシュ内にない場合(キャッシュ「ミス」と呼ばれる)、プロセッサは、次に、ターゲット・データがL2キャッシュ内にあるかどうかを判定する。もしあれば、ターゲット・データが、L2キャッシュから取り出される。最後に、ターゲット・データが、L1およびL2キャッシュのいずれにもない場合、ターゲット・データは、L1またはL2キャッシュのいずれよりも大きく、また遅い、システム・メモリから取り出される。
いくつかのシステムでは、ロード命令でL1キャッシュにキャッシュ・ミスが発生すると、ターゲット・データが現在置かれているどんな場所(L2キャッシュまたはシステム・メモリ)からもL1キャッシュにコピーされる。一般に、キャッシュ・ミスは、性能を損なうが、キャッシュ・ヒットは、性能を高める。一般に、L1および/またはL2キャッシュ・ミスが発生すると、プロセッサはデータが返されるのを待って、それから後続の命令を実行しなければならないため、プロセッサの性能が損なわれる。ターゲット・データを最速のL1キャッシュ・メモリ内に入れることにより、その後データが必要になっても、L1キャッシュから素早く応じられる。ターゲット・データをL1キャッシュに入れることは、複数クロック・サイクルを要するかなり大がかりなプロセスであるが、データがいったんL1キャッシュに入ってしまえば、その後そのデータにアクセスする場合に有利に働きうる。こうして、性能を改善することができる。
キャッシュ・システムでは、2つの効果−時間局所性と空間局所性−を利用する。時間局所性とは、1つのデータが一度、アクセスされた後、その同じデータが、近々再び必要とされる可能性のあることを意味する。空間局所性とは、1つのデータが一度、アクセスされた後、近隣データ(例えば、連続するメモリ・ロケーション内のデータ)が、近々アクセスされる可能性のあることを意味する。データがL1キャッシュにコピーされる場合、ターゲット・データは、隣接して囲むデータとともに、L1キャッシュの1「ライン」のところにコピーされる。このプロセスは、空間局所性の程度が高いデータ・セットにおいて生じうる、隣接データがその後必要になる場合に、システム性能を改善する。
空間および/または時間局所性が比較的低いデータ・セットは、キャッシュ・メモリを「汚染する」傾向がある。このことは、一部のデータがキャッシュ内に格納されることがあるが、近々必要とされる可能性がないということを意味する。このようなデータは、もしこのデータが占有していなかったならこのデータに比べてキャッシュの利用に適したデータが占有できたであろう領域を占有する。この問題は、L1キャッシュについては、L1キャッシュのサイズが比較的小さいことから、特に厄介である。
(概要)
様々な実施形態が、上記の課題の1つまたは複数を解決することを目的として開示されている。
一実施形態では、プロセッサは、フェッチされたそれぞれの命令について命令の型を判定するデコード論理演算回路、第1のレベルのキャッシュ、第1のレベルのキャッシュに結合された第2のレベルのキャッシュ、ならびに第1および第2のレベルのキャッシュに動作するように結合された制御論理演算回路を備える。制御論理演算回路では、好ましくは、第1の型の命令(例えば、ロード、ストア、ダイレクト・メモリ・アクセス、プリフェッチ)についてキャッシュ・ミスがあった場合にキャッシュ・ラインフィルが第1のレベルのキャッシュに対し実行されるが、第2の型の命令については第1のレベルのキャッシュに対しラインフィルが実行されるのを禁止する。制御論理演算回路は、第1の型の命令を実行するロード/ストア・ユニット、および第2の型の命令を実行するコプロセッサを備えることができる。一般に、キャッシュ・ミスで、ラインフィルを実行するかどうかは、命令の型(例えば、SIMD命令対非SIMD命令)および/またはコプロセッサまたはロード/ストア・ユニットが命令を実行すべきかどうかによって決まる。
命令の型を判定することを含む方法も開示される。この方法は、命令が第1の型であり、その結果第1のレベルのキャッシュに対しキャッシュ・ミスが生じた場合に、ラインフィルを第1のレベルのキャッシュに対し実行することを含む。しかし、この方法は、命令が第2の型であり、その結果第1のレベルのキャッシュに対しキャッシュ・ミスが生じた場合に、ラインフィルを第1のレベルのキャッシュに対し実行しないことを含む。他の実施形態では、ロードなどの第2の型の命令は、要求されたデータを外部メモリからロードし(つまり、キャッシュ・サブシステムを関与させずに)、例えば、コプロセッサに送るようにさせることができる。
これらおよび他の実施形態も本明細書で開示されている。
本発明の例示的な実施形態の詳細な説明に関して、付属の図面が参照される。
(表記と命名法)
特定のシステム・コンポーネントを参照するために、以下の説明および請求項全体を通していくつかの用語が使用される。当業者であれば理解するように、企業は、コンポーネントを異なる名称で呼ぶことがある。本明細書は、名称については異なっているが、機能については異なっていないコンポーネント同士を区別することを意図していない。以下の説明、および請求項では、「含む(including)」および「備える、含む(comprising)」という用語は、制約を設けずに使用されており、したがって、「限定はしないが、...を含む...」を意味するものと解釈すべきである。また、「結合する(coupleまたはcouples)」という用語は、間接的または直接的のいずれかの電気的接続を意味することが意図されている。そのため、第1のデバイスが第2のデバイスに結合する場合、その接続は、直接的電気的接続を通して、または他のデバイスおよび接続を介して間接的電気的接続を通して行ってよい。「システム」という用語は、広い意味で、2つまたはそれ以上のコンポーネントの集合体を指し、システム全体だけでなく、より大きなシステムの背景状況におけるサブシステムを指し示すために使用することができる。
(実施形態の詳細な説明)
以下の説明は、本発明の様々な実施形態を対象とする。これらの実施形態のうちの1つまたは複数が好ましいものである場合があるが、開示されている実施形態は、請求項を含めて、開示の範囲を制限するものとして、解釈されるか、または他の何らかの方法で使用される、ということがあってはならない。それに加えて、当業者であれば、以下の説明は広い範囲にわたって適用され、実施形態の説明はその実施形態を例示することのみを意図し、請求項を含む開示の範囲が、その実施形態に制限されることを暗示することを意図していないことを理解するであろう。
図1は、システム・メモリ68に結合されたプロセッサ51を備えるシステム50の好ましい一実施形態を示している。プロセッサは、好ましくは、フェッチ論理演算回路52、デコード論理演算回路54、ロード/ストア・ユニット56、プロセッサ命令実行論理演算ユニット58、コプロセッサ60、およびキャッシュ・サブシステム62を備える。キャッシュ・サブシステム62は、第2のレベルのキャッシュ(「L2」)に結合された第1のレベルのキャッシュ(「L1」)を備える。少なくとも1つの実施形態によれば、L1キャッシュは、32キロバイト・バッファを備えるが、L2キャッシュは、256キロバイト・バッファを備える。
一般に、フェッチ論理演算回路52は、例えば、システム・メモリ68から、または他の場所から、命令をフェッチし、フェッチされた命令をデコード論理演算回路54に送る。デコード論理演算回路54は、それぞれの命令の中の演算コード(「オペコード」)を調べ、命令が適切に処理されることができるように命令の種類を決定する。一般に、命令には、ロード、ストア、加算、乗算、などがある。ロード命令は、ターゲット・データをメモリから取り出して、プロセッサ内のレジスタ(特に図には示されていない)に送る。ストア命令は、データをメモリ内の特定のアドレスに書き込む。通常理解されているように、加算命令は、2つのオペランドを足し合わせ、乗算命令は、2つのオペランドを掛け合わせる。ダイレクト・メモリ・アクセス(DMA)およびプリフェッチなどの他の種類の命令も考えられる。
コプロセッサ60は、少なくとも1つの命令キュー61、データ・ロード・キュー63、および実行論理演算ユニット65を備える。コプロセッサ60は、命令をデコードするデコード論理演算回路などの他の論理演算回路も備えることができる。命令キュー61または実行論理演算ユニット65は、デコード論理演算回路を備えることができる。コプロセッサ60は、他のコンポーネントおよび論理演算回路も望むだけ備えることができる。命令キュー61は、実行論理演算ユニット65による実行を待つ間、命令実行論理演算ユニット58を介して受け取った命令(例えば、ロード、ストアなど)を格納するしておくものである。ロード命令によりキャッシュ・サブシステムおよび/またはメモリ68から取り出されたデータは、実行論理演算ユニット65により使用されるのを待つ間、ロード・キュー63に格納される。いくつかの実施形態では、コプロセッサ60は、単一命令複数データ(「SIMD」)命令を、命令実行論理演算回路58が非SIMD命令を実行している間に、実行する。一実施形態では、コプロセッサ60は、SIMD命令を実行することが意図されているが、他の実施形態では、コプロセッサ60は、他の型の命令を実行することができる。一般に、ロードおよびストア命令は、ロード/ストア・ユニット56により実行される。キャッシュ・サブシステム62からのロード・データは、ロード命令の型に応じて、命令実行論理演算回路58またはコプロセッサ60に送られる。
いくつかの実施形態では、複数のコプロセッサを備えることができる。図1には、第2のコプロセッサ69が示されている。2つよりも多いコプロセッサも、望むとおりに備えることができる。また、キャッシュ・サブシステム62は、単一のL1キャッシュおよび単一のL2キャッシュだけでなくそれ以上の個数のキャッシュを備えることができる。例えば、複数のL2キャッシュを備えることもできる。他の実施例によれば、キャッシュのレベルを増やし、図1に示されているL3キャッシュ67などを備えることができる。図1に示されている3個以外のレベルのキャッシュを追加することもでき、複数の種類のそれぞれのレベルのキャッシュを備えることができる。(複数の)L2キャッシュは、ストリーム・バッファ、連続アドレス・メモリ空間を有する1ブロック分のランダム・アクセス・メモリ(「RAM」)などのメモリ・システムを備えることができる。
非ロード/ストア命令(例えば、加算、乗算など)は、命令の「型」に応じて、命令実行論理演算ユニット58またはコプロセッサ60のいずれかに送られる。一般に、第1の型の命令は、命令実行演算論理ユニット58に送られてさらに処理され、第2の型の命令は、コプロセッサ60に送られてさらに処理される。命令の型は、命令の演算コード(「オペコード」)を調べることにより確認することができる。SIMD命令は、一般的に、非SIMD命令と区別できるオペコードを有する。少なくともいくつかの実施形態では、命令実行論理演算ユニット58は、比較的高い空間および/または時間局所性を有する傾向のあるデータに対し演算を実行する整数演算実行ユニットを備える。したがって、命令実行論理演算ユニット58により演算されるデータは、キャッシュ・サブシステムのL1キャッシュ内に格納するのに適している傾向がある。コプロセッサ60は、比較的低い空間および/または時間局所性を有しうるデータに対し演算を実行する命令あるいは比較的大きなメモリ空間へのアクセスを必要とする、または比較的高い帯域幅を必要とする命令/アプリケーションを実行するが、そのようなものであるため、L1キャッシュに格納するのに適さない場合がある。このような命令には、SIMD命令、浮動小数点命令、および他のマルチメディアベースの命令がある。
上で導入された第1および第2の型の命令は、ロードおよびストア命令にも当てはまる。第1の型のロードおよびストア命令は、ロード/ストア・ユニット56に送られてさらに処理され、ロードおよびストアが実行され、第2の型の命令のロードおよびストアは、コプロセッサ60に送られて実行される。第1の型のロードおよびストアは、命令実行論理演算ユニット58によりその後使用されるデータをターゲットとし、第2の型のロードおよびストアは、コプロセッサ60によりその後使用されるデータをターゲットとする。そのようなものとして、ロードまたはストアのターゲット・データは、空間および/または時間局所性が高いまたは低いデータ・セットからのデータとしてよい。さらに、ロードおよびストア・ターゲット・データは、L1キャッシュに格納するのに適したデータであってもよいし、適していないデータであってもよい。どのデータがL1キャッシュの使用に適しているか、どのデータがL1キャッシュの使用に適さないかを線引きする空間および/または時間局所性のレベルに制限はいっさい課されない。
いくつかの実施形態では、データを格納するL1キャッシュの使用は、データの性質に左右される。比較的低い空間および/または時間局所性を持つデータは、好ましくは、L1キャッシュに格納されることが禁止される。他のデータはすべて、L1キャッシュに格納されることが許される。好ましい実施形態によれば、プロセッサ51は、それぞれのロード命令に関連付けられた型を、ロードのターゲット・データが高いまたは低い空間および/または時間局所性を有しうるかどうかを判定する代用機能として使用する。ロードの第1の型(上述)は、比較的高い時間および/または空間局所性を有する傾向のあるデータに作用するロード(例えば、整数ロード)であることを意味する。このようなターゲット・データは、上で説明されているように命令実行論理演算ユニット58により使用される。ロードの第2の型は、比較的低い時間および/または空間局所性を有する傾向のあるデータに作用するロード(例えば、SIMDロード)であることを意味する。このようなターゲット・データは、上で説明されているように命令実行論理演算ユニット60により使用される。上述のように、ロードの型は、命令のオペコードから判定される。いくつかの実施形態では、特定のデータがL1キャッシュに格納されるかどうかは、データが実行論理演算ユニット58によってアクセスされ使用されるのか、またはコプロセッサ60よってアクセスされ使用されるのかによって決まる。そのため、比較的低い空間または時間局所性を有するデータ・セットであっても、そのまま、L1キャッシュに格納される場合がある。
本発明の好ましい一実施形態によれば、ロード/ストア・ユニット56は、第1の型に関連付けられているロード命令を処理する。ロード/ストア・ユニット56は、このようなロードを、コプロセッサ60により処理される第2の型のロード命令と異なった形で処理する。同様に、ロード/ストア・ユニット56は、ストアを、コプロセッサ60により処理される第2の型のストアと異なった形で処理する。ロード/ストア・ユニット56による処理の違いを引き起こすロードおよびストアの「型」は、上記のものなど適した型であればよい。
ロードが第1の型(例えば、整数ロード)の場合、ロード/ストア・ユニット56は、以下のように反応する。L1キャッシュ64は、ロードのターゲットとなっているデータがL1キャッシュにすでに存在するかどうかを判定するためにチェックされる。ロードがL1キャッシュ内でキャッシュ・ヒットした場合、データが、L1キャッシュから取り出される。しかし、L1キャッシュ内でロードがキャッシュ・ミスした場合、L2キャッシュがチェックされ、L1キャッシュへのアクセスは、メモリ参照が解決されるまで避けられる。ロードがL2キャッシュ内でキャッシュ・ヒットした場合、L2キャッシュからL1キャッシュへターゲット・データを書き込むために、好ましくは「ラインフィル」操作が実行される。ラインフィルは、ターゲット・データを含むキャッシュ・ライン全体をL1キャッシュに書き込むことを含む。本発明の少なくとも1つの実施形態では、キャッシュ・ラインのサイズは、64バイトである。ロードがL2キャッシュ内でキャッシュ・ミスした場合、システム・メモリ68からデータを取り出してL1および/またはL2キャッシュ内の対応するラインを埋めるために、ラインフィルが実行される。
ロードが第2の型(例えば、SIMDロード)の場合、コプロセッサ60は、以下のように反応する。L1キャッシュ64は、ロードのターゲットとなっているデータがL1キャッシュにすでに存在するかどうかを判定するためにチェックされる。ロードがL1キャッシュ内でキャッシュ・ヒットした場合、データが、L1キャッシュから取り出される。しかし、ロードがL1キャッシュ内でキャッシュ・ミスした場合、L2キャッシュがチェックされる。ロードがL2キャッシュ内でキャッシュ・ヒットした場合、コプロセッサ60は、「ラインフィル」操作が実行されるのを禁止するか、またはラインフィルを実行せず、それによりターゲット・データ(比較的低い空間および/または時間局所性を有するデータ・セットに関連しうる)がL1キャッシュ内に移動されないようにする。ロードがL2キャッシュ内でキャッシュ・ミスした場合、システム・メモリ68からデータを取り出してL2キャッシュ内の対応するラインを埋めるために、ラインフィルが実行されるが、L1キャッシュに対してはラインフィルは実行されない。それとは別に、ロードがL2キャッシュ内でキャッシュ・ミスした場合、外部システム・メモリ68からデータが返され、いずれのキャッシュ(L1またはL2)もラインフィルは実行されない。第2の型のロードは、コプロセッサのロード・キュー61により処理される。そのため、L1またはL2キャッシュ・ミスがあっても、そのようなキャッシュ・ミスは、プロセッサ51が第1の型のロードに対するL1キャッシュへのアクセスを止めることはない。したがって、L2キャッシュの長いアクセスタイムは、いずれの型(上記の第1の型または第2の型)のデータ・アクセスについてもプロセッサの性能に影響を及ぼさない。
第1の型のロードでは、L1のキャッシュ・ミスの発生後、L1キャッシュのラインフィルが実行されるが、第2の型のロードでは、L1のキャッシュ・ミスの発生後、L1キャッシュへのラインフィルを実行しない。ターゲット・データがたまたまL1キャッシュ内にすでにあった場合、例えば、これは、第1の型のロードの結果として生じることがあるが、ターゲット・データは、ロードの型に関係なくL1キャッシュから供給される。別の言い方をすると、少なくともいくつかの実施形態では、コプロセッサ60によりデータが処理されるロード命令はすべて、L1キャッシュのラインフィルなしで処理される。逆に、命令実行論理演算ユニット58に関連付けられているすべてのロード命令は、L1キャッシュ・ラインフィルで処理される。ロード命令の型を判定することは、ロード命令のオペコードの少なくとも一部を調べて、ロードのターゲットとなるデータを処理するのにどの命令実行論理演算ユニットが適しているかを判定することを含むことができる。L2キャッシュは、事実上、コプロセッサ60により処理される特定の型のロード命令(例えば、SIMD、浮動小数点、およびマルチメディア命令)に関してL1キャッシュとして機能する。そこで、プロセッサ51では、第1および第2のレベルのキャッシュに動作するように結合し、第1の型のロード命令(例えば、非SIMD命令)についてキャッシュ・ミスが発生した後第1のレベルのキャッシュに対しキャッシュ・ラインフィルが実行されるようにし、第2の型のロード命令(例えば、SIMD命令)については第1のレベルのキャッシュに対しラインフィルが実行されるのを禁止する、制御論理演算回路を備える。制御論理演算回路は、第1の型のロードを処理するプロセッサ命令実行論理演算回路58、および第2の型のロードを処理するコプロセッサを備える。他の実施形態では、ロード/ストア・ユニット56により実行される機能は、命令実行論理演算ユニット58内に組み込むことができる。
いくつかの実施形態では、ストア命令のキャッシュ・ミスの後、ラインフィルは実行されない。他の実施形態では、ストア命令は、上で説明されているようにロード命令と同様に処理することができる。つまり、特定の型(例えば、上記の第1の型)のストア命令は、以下のように取り扱われる。L1キャッシュ64は、ストアのターゲットとなっているデータがL1キャッシュにすでに存在するかどうかを判定するためにチェックされる。ストアがL1キャッシュ内でキャッシュ・ヒットした場合、L1キャッシュ内でターゲット・データが更新される。しかし、ストアがL1キャッシュ内でキャッシュ・ミスした場合、L2キャッシュがチェックされる。ストアがL2キャッシュ内でキャッシュ・ヒットした場合、L2キャッシュからL1キャッシュへターゲット・キャッシュ・ラインを書き込み、次いでストアのデータでL1キャッシュを更新するために、「ラインフィル」操作が実行される。ストアがL2キャッシュ内でキャッシュ・ミスした場合、システム・メモリ68からデータを取り出してL1および/またはL2キャッシュ内の対応するラインを埋め、次いでL1キャッシュ内のキャッシュ・ラインをストアのデータで更新するために、ラインフィルが実行される。
ストアが、他の型(例えば、上記の第2の型)である場合、ターゲット・データをL1キャッシュに入れるためにL1のラインフィルが実行されないことを除き、前の段落で説明されているところから類似のプロセスに続く。L1キャッシュに関してデータの処理を指示するストアの型は、ロードに関して上で説明されている型と同じであることも異なることもある。例えば、L1キャッシュ・ラインフィルを引き起こさないロードの型は、これもまたL1キャッシュ・ラインフィルを引き起こさないストアの型と同じ(または異なる)場合があり、実行論理演算ユニット58またはコプロセッサ60がストアを処理しているかどうかに基づいて決まる。
図2は、好ましい一実施形態によりロードおよびストア命令を処理する方法100を示している。この方法は、102で命令をフェッチし、104で命令をデコードすることを含む。命令がロードである場合、この方法は、106から継続する。命令がストアである場合、この方法は、120から継続する。最初に、ロードの処理について説明し、その後ストアの処理を説明する。
方法100は、106においてロード命令により要求されるデータについてL1キャッシュをチェックすることを含む。ロードがL1キャッシュ内でキャッシュ・ヒットした場合、決定108で判定されたように、制御は、110に渡され、そこで、L1キャッシュからターゲット・データが取り出される。しかし、L1キャッシュ内にキャッシュ・ミスがある場合、ターゲット・データがすでにL2キャッシュ内に存在すると仮定して、要求されたデータは、112でL2キャッシュから取り出される。そうでない場合、データは、システム・メモリ68から取り出され、後で使用できるようにコピーがL2キャッシュ内に入れられる。この方法は、114でロードが第1の型である場合にL1キャッシュ・ラインフィルを実行し、ロードが第2の型である場合にそれを実行しないことを含む。上で説明されているように、「第1」の型のロードは、実行論理演算ユニット58により実行され、および/または比較的高い空間および/または時間局所性を有しうるデータ・セットに作用するロード(例えば、整数ロード)に対応し、「第2」の型のロードは、コプロセッサ60により実行され、および/または比較的低い空間および/または時間局所性を有しうるデータ・セットに作用するロード(例えば、SIMD、浮動小数点)に対応する。常にではないが、時々ラインフィルを実行するように指示するロードの型の間の他の線引きも可能である。
命令がストアである場合、この方法は、アクション104から120へ流れ、そこでL1キャッシュは、キャッシュ・ヒットしたかどうかについてチェックされる。ストアがL1キャッシュ内でキャッシュ・ヒットした場合(判断122)、ストアは、124で、L1キャッシュ内の関連するキャッシュ・ラインを更新する。しかし、ストアに対しL1キャッシュにキャッシュ・ミスがある場合、命令の型に応じてアクション126または128が実行される。ストア命令が、第1の型である場合(126)、L1キャッシュへのラインフィルが実行され、関連するキャッシュ・ラインをL1キャッシュに入れ、そのラインは、ストア命令のデータで更新される。ストア命令が第2の型である場合(128)、L2キャッシュ内の関連するラインは、更新される(データがすでにL2キャッシュ内にあるか、データが、まだL2キャッシュに入っていないのであればL2キャッシュに入れられると仮定する)。第2の型のストアについては、L1キャッシュに対しラインフィルは実行されない。他の実施形態では、ストア命令の型に関係なく、ストアからのキャッシュ・ミスの後、ラインフィルは実行されない。
2つよりも多いキャッシュ・レベル(例えば、L1、L2、およびL3キャッシュ)を有する実施形態では、命令に応じて、様々なレベルのキャッシュを使用し、アクセスすることができる。つまり、L1およびL2キャッシュに関して上で説明されている概念は、追加したキャッシュ・レベルにも拡大適用することができる。命令のオペコードはデコードでき、オペコードに基づいて、特定のキャッシュ・レベルに対し上で説明されているようにキャッシュ・ラインフィルが実行されるか、または実行されない。
例えば、特定の型のロード命令は、以下のように動作しうる。L1キャッシュがまず最初にチェックされる。要求されたデータが、L1キャッシュ内にある場合、データは、そこから送られる。L1がキャッシュ・ミスした場合、L2キャッシュがチェックされる。要求されたデータが特定の型のデータである場合、L2キャッシュ内でキャッシュ・ヒットすると、データがL2キャッシュから返され、L1キャッシュに対しラインフィルは実行されない。しかし、L2がキャッシュ・ミスした場合、L3キャッシュがチェックされる。要求されたデータが特定の型のデータ(すぐ上で述べた「特定の型」と同じであっても、異なっていてもよい)である場合、L3でキャッシュ・ヒットすると、データがL3キャッシュから返され、L1またはL2キャッシュのいずれかに対しラインフィルは実行されない。それとは別に、L3のキャッシュ・ヒット後にL1キャッシュにラインフィルが実行されるのを禁止することが可能であり、またL2キャッシュに対するラインフィルを許可することが可能である。他の型の命令(つまり、ロード、DMA、プリフェッチ)に関して上で述べた概念は、このようにして拡張することもできる。
上で述べたように、それぞれの型の複数のキャッシュを備えることが可能である(例えば、複数のL2キャッシュ)。したがって、1つの特定のL2キャッシュをターゲットとするいくつかの命令は、上で説明されているように、L1キャッシュ・ラインフィルを禁止または許可するように動作することが可能であるが、異なるL2キャッシュをターゲットとする他の命令は、L1のキャッシュ・ミスおよびL2のキャッシュ・ヒットの後、L1キャッシュに対しラインフィルを常に実行するように動作することが可能である。
いくつかの実施形態では、プロセッサ50は、一般的に、命令が一般にプログラム順序で実行されることを意味する「in−order」プロセッサである。しかし、いくつかのSIMDロード(コプロセッサ60により実行される)は、複数のメモリ・ロードを完了させる必要がある場合がある。つまり、メモリから取り出されるデータは、第1のロード・サイクルと第2のロード・サイクルとを必要とする場合がある。このような複数のロード・サイクルは、例えば、ターゲット・データのサイズに関してキャッシュ・サブシステム62へのバスの幅に応じて、必要になることがある。上で説明されているように、パケット・データは、L1キャッシュ64内に存在することも、存在しないこともある。さらに、上記の第1のロード・サイクルでは、L1にキャッシュ・ミスが生じるが、第2のロード・サイクルでは、L1にキャッシュ・ヒットが生じることがありえる。そのため、この実施例を続けると、第2のロード・サイクルのターゲット・データが、第1のロード・サイクルのL1のキャッシュ・ミスのせいで第1のロード・サイクルのターゲット・データの前に返されることがありえる。コプロセッサ60は、好ましくは、順序が狂っている可能性のある、返されるデータを追跡し、2つのロード・サイクルがターゲット・データを順序の狂ったまま返すにもかかわらず、ロード・データを適切な順序に再配列することができる。
図3は、上で説明されている特徴を含むシステムの例示的な実施形態を示している。図3の実施形態は、電池式無線通信デバイス415を含む。図に示されているように、通信デバイスは、一体型キーパッド412およびディスプレイ414を備える。上で説明されているキャッシュ・サブシステムおよび/または上記キャッシュ・サブシステムを含むプロセッサは、キーパッド412、ディスプレイ414、および高周波(「RF」)通信トランシーバ416に結合することができるエレクトロニクス・パッケージ410に含まれることができる。RF回路416は、好ましくは、アンテナ418に結合されており、これにより、無線通信の送信および/または受信を行う。いくつかの実施形態では、通信デバイス415は、携帯電話を含む。
上の説明は、本発明の原理および様々な実施形態を例示することが意図されている。上記開示が完全に理解されれば、当業者には、多くの変更形態および修正形態が明白なものとなるであろう。請求されている発明は、このようなすべての変更形態および修正形態を包含するものと解釈することが意図されている。
本発明の好ましい実施形態によるキャッシュ・サブシステムを有するプロセッサ・アーキテクチャを示す図である。 好ましい実施形態による方法を示す図である。 電池式通信デバイスの形態のシステムの一実施形態を示す図である。

Claims (12)

  1. データ・プロセッサ装置であって、
    フェッチされたそれぞれの命令について命令の型を判定するデコード論理演算回路と、
    第1のレベルのキャッシュと、
    前記第1のレベルのキャッシュに結合された第2のレベルのキャッシュと、
    前記第1および第2のレベルのキャッシュに動作するように結合され、第1の型の命令についてキャッシュ・ミスが発生した後前記第1のレベルのキャッシュに対しキャッシュ・ラインフィルが実行されるようにし、第2の型の命令については前記第1のレベルのキャッシュに対しラインフィルが実行されることを禁止する、制御論理演算回路とを備えるデータ・プロセッサ装置。
  2. 前記制御論理演算回路は、前記第1の型の命令を実行するプロセッサ命令実行論理演算ユニットと前記第2の型の命令を実行するコプロセッサとを備える請求項1に記載の装置。
  3. 前記コプロセッサは、実行論理演算ユニットに結合された命令キューを備え、前記コプロセッサは、さらに、データ・ロード・キューを備える請求項2に記載の装置。
  4. 前記第1および第2の型の命令は、第1および第2の型のロード命令を含み、前記制御論理演算回路は、第3の型であるストア命令により第1のレベルのキャッシュにキャッシュ・ミスが発生した場合、前記第1のレベルのキャッシュへのラインフィルが実行されるのを禁止するが、第4の型であるストア命令により第1のレベルのキャッシュにキャッシュ・ミスが発生した場合は、前記第1のレベルのキャッシュへのラインフィルが実行されるのを許可する請求項1から3のいずれかに記載の装置。
  5. さらに、第1および第2の命令実行論理演算ユニットを備え、前記の第1の型の命令は、前記第1の命令実行論理演算ユニットにより処理されるデータをターゲットとし、前記の第2の型の命令は、前記第2の命令実行論理演算ユニットにより処理されるデータをターゲットとする請求項1から3のいずれかに記載の装置。
  6. さらに、前記第2のレベルのキャッシュに結合された第3のレベルのキャッシュを備え、前記制御論理演算回路は、前記第1または第2の型の命令についてキャッシュ・ミスが発生した後、前記第1および第2のレベルのキャッシュにキャッシュ・ラインフィルが実行されるようにするが、第3の型の命令については前記第1および第2のレベルのキャッシュに対しラインフィルが実行されることを禁止する請求項1から3のいずれかに記載の装置。
  7. 請求項1に記載の装置を含んだ通信システムであって、
    通信トランシーバと、
    前記第2のレベルのキャッシュに結合された前記第1のレベルのキャッシュを備える、前記通信トランシーバに動作するように結合されたキャッシュ・サブシステムと、
    前記第1および第2のレベルのキャッシュに動作するように結合されたロード/ストア・ユニットを備える前記デコード論理演算回路とを備え、
    前記制御論理演算回路は、前記第1および第2のレベルのキャッシュに動作するように結合されたコプロセッサを備え、
    前記ロード/ストア・ユニットは、第1の型の命令についてキャッシュ・ミスがあった場合にキャッシュ・ラインフィルが前記第1のレベルのキャッシュに対し実行されるようにし、前記コプロセッサは、第2の型の命令について前記第1のレベルのキャッシュに対しラインフィルが実行されるのを禁止する通信システム。
  8. 携帯電話を含む請求項7に記載のシステム。
  9. 方法であって、
    オペコードに基づいて命令の型を判定することと、
    命令が第1の型であり、その結果第1のレベルのキャッシュに対しキャッシュ・ミスが生じた場合に、ラインフィルを前記第1のレベルのキャッシュに対し実行することと、
    命令が第2の型であり、その結果前記第1のレベルのキャッシュに対しキャッシュ・ミスが生じた場合に、ラインフィルを前記第1のレベルのキャッシュに対し実行しないこととを含む方法。
  10. さらに、前記命令が前記第2の型であり、その結果前記第1のレベルのキャッシュに対しキャッシュ・ヒットが生じた場合に、前記第1のレベルのキャッシュからデータをロードすることを含む請求項9に記載の方法。
  11. 前記命令は、ロード、ストア、ダイレクト・メモリ・アクセス、またはプリフェッチを含む請求項8または9に記載の方法。
  12. 命令の型を判定することは、前記命令の中の演算コードの少なくとも一部を調べることを含む請求項8または9に記載の方法。
JP2008513691A 2005-05-24 2006-05-24 命令の型に応じて構成可能なキャッシュ・システム Abandoned JP2008542880A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/136,169 US7237065B2 (en) 2005-05-24 2005-05-24 Configurable cache system depending on instruction type
PCT/US2006/020163 WO2006127857A1 (en) 2005-05-24 2006-05-24 Configurable cache system depending on instruction type

Publications (1)

Publication Number Publication Date
JP2008542880A true JP2008542880A (ja) 2008-11-27

Family

ID=37452359

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008513691A Abandoned JP2008542880A (ja) 2005-05-24 2006-05-24 命令の型に応じて構成可能なキャッシュ・システム

Country Status (6)

Country Link
US (1) US7237065B2 (ja)
EP (1) EP1891530B1 (ja)
JP (1) JP2008542880A (ja)
CN (1) CN101180611A (ja)
DE (1) DE602006019584D1 (ja)
WO (1) WO2006127857A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015503805A (ja) * 2012-01-10 2015-02-02 クアルコム,インコーポレイテッド 物理アドレスを用いる非割当てメモリアクセス

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8131951B2 (en) * 2008-05-30 2012-03-06 Freescale Semiconductor, Inc. Utilization of a store buffer for error recovery on a store allocation cache miss
CN104615548B (zh) * 2010-03-29 2018-08-31 威盛电子股份有限公司 数据预取方法以及微处理器
US8904109B2 (en) 2011-01-28 2014-12-02 Freescale Semiconductor, Inc. Selective cache access control apparatus and method thereof
US8756405B2 (en) * 2011-05-09 2014-06-17 Freescale Semiconductor, Inc. Selective routing of local memory accesses and device thereof
WO2013101216A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Cache coprocessing unit
CN103631566A (zh) * 2013-11-29 2014-03-12 深圳中微电科技有限公司 一种用于处理器中的指令取得装置及其处理器
CN105183433B (zh) 2015-08-24 2018-02-06 上海兆芯集成电路有限公司 指令合并方法以及具有多数据通道的装置
CN107678781B (zh) * 2016-08-01 2021-02-26 北京百度网讯科技有限公司 处理器以及用于在处理器上执行指令的方法
US11016695B2 (en) 2016-12-20 2021-05-25 Intel Corporation Methods and apparatus to perform memory copy operations
US11036644B2 (en) * 2017-02-02 2021-06-15 Arm Limited Data processing systems
US10705590B2 (en) 2017-11-28 2020-07-07 Google Llc Power-conserving cache memory usage
CN116909943B (zh) * 2023-09-08 2023-12-19 飞腾信息技术有限公司 一种缓存访问方法、装置、存储介质及电子设备

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3207591B2 (ja) 1993-03-19 2001-09-10 株式会社日立製作所 キャッシュメモリを有する計算機の改良
US5878245A (en) 1993-10-29 1999-03-02 Advanced Micro Devices, Inc. High performance load/store functional unit and data cache
US5590352A (en) 1994-04-26 1996-12-31 Advanced Micro Devices, Inc. Dependency checking and forwarding of variable width operands
US5802588A (en) 1995-04-12 1998-09-01 Advanced Micro Devices, Inc. Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer
US6108769A (en) 1996-05-17 2000-08-22 Advanced Micro Devices, Inc. Dependency table for reducing dependency checking hardware
KR100243100B1 (ko) 1997-08-12 2000-02-01 정선종 다수의 주프로세서 및 보조 프로세서를 갖는 프로세서의구조 및 보조 프로세서 공유 방법
US6643745B1 (en) * 1998-03-31 2003-11-04 Intel Corporation Method and apparatus for prefetching data into cache
US6658552B1 (en) 1998-10-23 2003-12-02 Micron Technology, Inc. Processing system with separate general purpose execution unit and data string manipulation unit
KR100798020B1 (ko) * 2000-04-12 2008-01-24 엔엑스피 비 브이 데이터 처리 회로, 데이터 처리 회로를 포함하는 장치, 그리고 장치를 위한 컴퓨터 독출 가능 저장 매체
US6889314B2 (en) 2001-09-26 2005-05-03 Intel Corporation Method and apparatus for fast dependency coordinate matching
US20030196072A1 (en) 2002-04-11 2003-10-16 Chinnakonda Murali S. Digital signal processor architecture for high computation speed
US6963962B2 (en) 2002-04-11 2005-11-08 Analog Devices, Inc. Memory system for supporting multiple parallel accesses at very high frequencies
US20040158694A1 (en) 2003-02-10 2004-08-12 Tomazin Thomas J. Method and apparatus for hazard detection and management in a pipelined digital processor
US20040225840A1 (en) 2003-05-09 2004-11-11 O'connor Dennis M. Apparatus and method to provide multithreaded computer processing
US7302528B2 (en) * 2004-11-19 2007-11-27 Intel Corporation Caching bypass

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015503805A (ja) * 2012-01-10 2015-02-02 クアルコム,インコーポレイテッド 物理アドレスを用いる非割当てメモリアクセス

Also Published As

Publication number Publication date
CN101180611A (zh) 2008-05-14
EP1891530B1 (en) 2011-01-12
EP1891530A1 (en) 2008-02-27
DE602006019584D1 (de) 2011-02-24
EP1891530A4 (en) 2009-04-29
US20060271738A1 (en) 2006-11-30
WO2006127857A1 (en) 2006-11-30
US7237065B2 (en) 2007-06-26

Similar Documents

Publication Publication Date Title
JP2008542880A (ja) 命令の型に応じて構成可能なキャッシュ・システム
US10248570B2 (en) Methods, systems and apparatus for predicting the way of a set associative cache
US6832296B2 (en) Microprocessor with repeat prefetch instruction
US8185666B2 (en) Compare instruction
US20200364054A1 (en) Processor subroutine cache
JP3518770B2 (ja) 命令をその少なくとも1つの実行装置へ迅速にディスパッチする方法および装置
US8060701B2 (en) Apparatus and methods for low-complexity instruction prefetch system
US20070260853A1 (en) Switching processor threads during long latencies
CN117421259A (zh) 用飞行中预取服务于cpu需求请求
JP5625809B2 (ja) 演算処理装置、情報処理装置及び制御方法
GB2537357A (en) Cache operation in a multi-threaded processor
US10360037B2 (en) Fetch unit for predicting target for subroutine return instructions
US7913068B2 (en) System and method for providing asynchronous dynamic millicode entry prediction
JP5793061B2 (ja) キャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステム
CN112395000B (zh) 一种数据预加载方法和指令处理装置
US11036512B2 (en) Systems and methods for processing instructions having wide immediate operands
KR20000003930A (ko) 명령어 캐시 미스 시 손실을 줄이기 위한 명령어 페치 장치

Legal Events

Date Code Title Description
A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20090916