JP4477688B2 - キャッシュメモリアクセスを管理する方法と装置 - Google Patents

キャッシュメモリアクセスを管理する方法と装置 Download PDF

Info

Publication number
JP4477688B2
JP4477688B2 JP2008514886A JP2008514886A JP4477688B2 JP 4477688 B2 JP4477688 B2 JP 4477688B2 JP 2008514886 A JP2008514886 A JP 2008514886A JP 2008514886 A JP2008514886 A JP 2008514886A JP 4477688 B2 JP4477688 B2 JP 4477688B2
Authority
JP
Japan
Prior art keywords
cache
data
access
bank
shared
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.)
Expired - Fee Related
Application number
JP2008514886A
Other languages
English (en)
Other versions
JP2008542923A (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 JP2008542923A publication Critical patent/JP2008542923A/ja
Application granted granted Critical
Publication of JP4477688B2 publication Critical patent/JP4477688B2/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
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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
    • 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/0815Cache consistency protocols
    • G06F12/0837Cache consistency protocols with software control, e.g. non-cacheable data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Description

発明の分野
本発明は、一般にマイクロプロセッサに係り、特にマイクロプロセッサキャッシュの管理に関する。
発明の背景
より高い性能のマイクロプロセッサは、主メモリの基底量および緊密にプロセッサ速度にメモリの速度を一致させるために1以上の高レベルの小さくより速いキャッシュメモリを含む階層的メモリ構造をしばしば使用する。例えばレベル1(L1)キャッシュは一般にオンチップに存在し、マイクロプロセッサに利用可能な最も小さく、最も速いキャッシュを表わす。またレベル2(L2)キャッシュはオンチップあるいはオフチップに存在し、多少遅いが、典型的にマイクロプロセッサのためのL1キャッシュよりキャッシュメモリの大きな量を提供する。マイクロプロセッサと主メモリの間に追加のレベルの次第により遅い(かつより大きな)キャッシュメモリがあってもよい。
動作において、キャッシュメモリは、マイクロプロセッサと(比較的)遅い主メモリの間のバッファとして作動し、マイクロプロセッサによって恐らく最も必要な命令および/またはデータのコピーを保持するために使用される。必要とされる命令またはデータ項目のコピーがキャッシュに存在する場合、マイクロプロセッサは主メモリにアクセスする代わりにそのコピーを読み取り/書き込み、それにより潜在的に主メモリアクセスに関連したはるかに長いアクセス遅れを回避する。
キャッシュ動作はマルチプロセッサ環境においてより複雑になり、ここで2個以上のマイクロプロセッサがメモリ空間を共有する。そのような環境では、2個以上のマイクロプロセッサが主メモリから同じデータをキャッシュするかもしれない。すなわち、多数のマイクロプロセッサは各々、主メモリからの同じデータ項目のコピーをキャッシュするかもしれない。各マイクロプロセッサが与えられたデータ項目の最近の最新の値にアクセスすることを保証するために、マイクロプロセッサ中のキャッシュを同期させるある方法が使用されなくてはならない。キャッシュの同期は、個々のマイクロプロセッサが、その値が他のマイクロプロセッサの動作を通して古くなるデータ項目を使用するのを防ぐために、あるメカニズムを提供することによりキャッシュ「コヒーレンシイ」を維持する。キャッシュの同期はハードウェア強化コヒーレンシイ、あるいはキャッシュ管理命令を通してソフトウェアによって管理することができる。
1つのタイプのハードウェア強化キャッシュコヒーレンシイは「放送」タイプアプローチである。キャッシュ同期への放送に基づいたアプローチは、一般にデータメモリ動作と関係するメッセージを送信する各マイクロプロセッサに依存する。順番に、個々のマイクロプロセッサ、あるいはそれらのキャッシュコントローラ、モニタは、他のマイクロプロセッサの行動がそれらの関連するキャッシュに保持されたデータ項目を無効にしたかどうか判断するそれらのメッセージを「スヌープする」。
これらのいわゆる「スヌーピー」バスの使用は、マルチプロセッサシステムでキャッシュコヒーレンシイを維持する比較的簡単で有効な方法を表わす。しかしながら、与えられたキャッシュへのスヌープトラヒックアクセスが、マイクロプロセッサによってローカルに生成されたキャッシュアクセスに使用される同じ「ポート」あるいはアクセスバス上で典型的に支援されるので、スヌーピーバスはキャッシュメモリの有効なアクセス帯域幅を減少させることができる。スヌープトラヒックの量はマイクロプロセッサ総数が増加するとき著しく増加し、結局、スヌープトラヒックの量は全体のシステム性能を著しく制限することができる。
スヌープトラヒックの高い容量によって提起されたキャッシュアクセス干渉問題への様々な回避策は、マルチポートされたキャッシュメモリの使用を含み、スヌープトラヒックおよびローカルに発生されたトラヒックは異なるポートでキャッシュにアクセスする。しかしながら、そのような構成はキャッシュのサイズ、電力消費および費用を著しく増加させる場合がある。
発明の概要
バンクされたキャッシュ管理方法の少なくとも1つの実施例では、共有データキャッシュアクセス(例えば、スヌープトラヒックと関連されたキャッシュアクセス)および非共有データキャッシュアクセスとの間の干渉は、バンクされたキャッシュの少なくとも1つのキャッシュバンクにおける共有データおよび非共有データの混合を減少または除去することにより減少される。そのような混合の減少または除去は、共有データを保持し、指定された1つ以上のキャッシュバンクに共有データのためのキャッシュアクセスを指示するために、バンクされたキャッシュの1つ以上のバンクを指定することを含み得る。さらに、あるいは代わりに、そのような混合は、非共有データを保持し、指定された1つ以上のキャッシュバンクに非共有データのためのキャッシュアクセスを指示するために、バンクされたキャッシュの1つ以上のバンクを指定することにより減少または除去され得る。
例えば、与えられたキャッシュアクセス(読むまたは書く)は、1つ以上のキャッシュアクセスアドレス信号によって少なくとも一部分駆動される「バンク選択機能」に従って、特定のキャッシュバンクの特定のキャッシュ位置へ導かれる。ここに使用されるように、用語「バンク選択機能」は、特定のキャッシュアクセスアドレスに関して特定のバンクを選択するために使用される様々な異なる方法およびアルゴリズムを包含する。例えば、用語はアドレスおよび/または他の信号ハッシュ関数をカバーするか、あるいは簡単なアドレスデコーディングを表わすことができる。
しかしながら、バンク選択機能は、ここに教示されるようなキャッシュ管理の少なくとも1つの実施例に従って実施され、アクセスタイプ指標(例えば、共有アクセス指標)は、共有データおよび/または非共有データのためのキャッシュアクセスが、バンクされたキャッシュの1つ以上の指定されたバンクに指示(操縦)されるように、バンク選択機能を修正する。例えば、バンク選択機能は、共有アクセスバンクあるいは混合(共有及び非共有)アクセスバンクへの共有アクセスを指示され得る。そのような行動は、共有データを保持するための指定されたバンクにおける共有データに関してキャッシュアクセス活動を「集中させる」。同様に、アクセスタイプ指標は、非共有アクセスバンクあるいは混合アクセスバンクに非共有アクセスを指示し、非共有データを保持するための指定されたバンクの非共有データに関してキャッシュアクセス活動を集中させるために、バンク選択機能を修正するように使用されてもよい。両方の場合において、共有データアクセスおよび非共有データアクセス間の干渉は、バンクされたキャッシュにおける少なくとも1つのバンクについて減少または除去される。
バンクされたキャッシュにおける少なくとも1つのバンクのための共有データキャッシュアクセスおよび非共有データキャッシュアクセス間の干渉を減少させる広い方法は、第1のタイプのデータを保持するためのバンクされたキャッシュの1つ以上の第1のバンクを指定し、第1のタイプのデータは共有データおよび非共有データのうちの1つであり、第1のタイプのデータのためのキャッシュアクセスを1つ以上の第1のバンクに指示することを含む。方法はさらに、第2のタイプのデータを保持するためのバンクされたキャッシュの1つ以上の第2のバンクを指定し、前記第2のタイプのデータは他の1つの共有および非共有データであり、第2のタイプのデータのためのキャッシュアクセスを1つ以上の第2のバンクへ指示することを含んでもよい。任意のあるいはすべてのそのような指定は排他的あるいは非排他的(混合された)であってもよい。
上記の方法を具体化するバンクされたキャッシュの1つの実施例、すなわち上記の方法の変形は、第1のタイプのデータを保持するために指定されたバンクされたキャッシュの1つ以上の第1のキャッシュバンクに第1のタイプのデータのためのキャッシュアクセスを指示することに基づいて、共有データキャッシュアクセスおよび非共有データキャッシュアクセス間の干渉を減少させるように構成され、第1のタイプのデータが共有データおよび非共有データのうちの1つであるアクセス制御回路を含む。アクセス制御回路は、さらにバンクされたキャッシュの1つ以上の第2のキャッシュバンクへの第2のタイプのデータのためのキャッシュアクセスを指示してもよく、第2のタイプのデータは共有または非共有のデータの他の1つである。
そのような実施例では、アクセス制御回路は、アクセスタイプ指標に直接あるいは間接的に応答してもよく、指標はキャッシュアクセスと関連したバンクされたキャッシュに供給される共有アクセス信号であるかもしれない。論理状態または値、あるいは与えられたキャッシュアクセスが共有された(あるいは共有されない)データ向けかどうか示す共有アクセス指標信号の他のある特徴、およびアクセス制御回路のバンク選択機能は、従って適切なキャッシュバンクにキャッシュアクセスを指示するために修正される。
バンク選択機能は、さらにバンク構成信号によって修正されてもよい。すなわち、バンクされたキャッシュの構成は、共有データ、非共有データ、または混合されたデータのためにある1つ以上のバンクの指定が変更され得るように、必要によりまたは所望により変更されてもよい。そのような変更はコンピュータオペレーティングシステムレベルで制御され、および/またはバンクされたキャッシュに関連したプロセッサ上で作動する個々のプログラムによって制御されてもよい。
好ましい実施形態の詳細な説明
図1は、複数のマイクロプロセッサ10、および主メモリ16にシステムバス14によって接続された関連するメモリキャッシュ12を含むマルチプロセッサ回路8を少なくとも部分的に示す。プロセッサ10は、1つの集積回路素子、システムオンチップ回路(マルチチップモジュール)のように一緒に実施されてもよいし、あるいは別々に実施されてもよい。同様に、キャッシュメモリ12は全体あるいは一部分プロセッサ10へ統合されてもよいし、あるいは別々に実施されてもよい。例えば、キャッシュ12−1は、プロセッサ10−1に含まれているレベル1(L1)キャッシュを含んでいてもよいし、内部にあるいは外部的に実施されるレベル2(L2)キャッシュを含んでいてもよい。プロセッサ10−1の示された実施例は、多くのメモリ管理の特徴を含んでいるキャッシュコントローラ18−1を含んでいる。同様の構成は、プロセッサ10−2および10−3、およびそれらの対応するキャッシュ12−2および12−3に使用されてもよい。
もちろん、プロセッサ10およびキャッシュ12のために選ばれた一般的な物理的な実施は、一般にキャッシュアクセス制御方法およびここに議論した装置に密接な関係がなく、当業者は様々な回路実施の変化の機会を認識するだろう。例えば、示されたより大きいかより小さい数のプロセッサ10および対応するキャッシュ12が、必要によりまたは所望により使用されてもよい。
これらの変化を念頭において、マルチプロセッサ回路8は対称的な多重処理(SMP)回路として作動し、そこではプロセッサ10は協働的に1つ以上のコンピュータプログラム、プログラムスレッドなどを実行する。プロセッサ10は各々、1つ以上の命令実行パイプラインをもつコアユニットを含み、さらに命令とデータの予測キャッシングのためのプリフェッチユニット、メモリマッピングと許可などを追跡する変換索引バッファを含む、縮小命令セットコンピュータ(RISC)プロセッサを含んでもよい。また注意されることとして、プロセッサ10の各1つはさらにキャッシュコントローラ18を含み、それは、キャッシュ12のそれぞれの1つへ、システムバス14へおよび主メモリ16へプロセッサをインタフェースするより大きなメモリ管理ユニットの一部を含んでいてもよい。もちろん、プロセッサ10の各々はさらに、デバッグ回路などのように、示されない機能要素を含んでもよい。
主メモリ16は、任意の1つ以上のプロセッサ10により作動されるデータを保持するために使用された「共有される」メモリの1つ以上の範囲、およびプロセッサ10の特定のものによる使用のための「共有されていない」メモリの範囲で構成されてもよい。その文脈において、プロセッサ10はそれぞれ、キャッシュ12の対応する1つに非共有および共有データの混合をキャッシュしてもよい。1つ以上の実施例では、キャッシュ12の少なくとも1つは2つ以上のキャッシュバンクを含むバンクされたキャッシュとして構成される。好ましくは異なるバンクは、1つのバンクへのアクセスが他のバンクへのアクセスに干渉しないように、独立したアクセス可能性を提供する。
キャッシュ12中のデータコヒーレンシイを維持する必要のために、多重処理回路8は「スヌーピー」プロトコルと呼ばれるデータコヒーレンシイプロトコルに基づいた1つ以上の「放送」の形式を使用する。スヌープを用いて、共有データのキャッシュされたコピー上でプロセッサ10のうちの1つによるオペレーションは、残りのプロセッサ10によって認識され、その結果、適切なキャッシュフラッシングおよび/または主メモリ更新は、プロセッサ10の各1つがその共有データの有効で現在のコピーにより作動することを保証するようになされるかもしれない。
限定ではない例の方法により、多重処理回路のスヌーピングプロトコルは、書き込み放送に基づいてもよく、プロセッサ10の各1つおよび/または送られたキャッシュ12はシステムバス14上ですべて書き、その結果、他のプロセッサ/キャッシュが必要なときそれらのそれぞれのキャッシュされたデータを更新することができる。代わりに、書込み無効プロトコルが使用され、キャッシュ12のうちの1つで与えられたキャッシュラインに書くことが、任意の他のキャッシュ12に存在する同じキャッシュラインを無効にさせる。
(「キャッシュライン」は、一般に、主メモリ中の特定のアドレス範囲からキャッシュされる与えられたデータブロックを含む。)もちろん、他のスヌーピングプロトコルが、修正された-共有の-無効な(Modified -Shared-Invalid(MSI))、修正された-排他的な-共有の-無効な(Modified -Exclusive- Shared-Invalid(MESI))、または修正された-所有者-排他的な-共有の-無効な(Modified -Owner-Exclusive- Shared-Invalid(MOESI))のように、多重処理回路8のために実施されることができる。
システムバス14上で流れるトラヒックをスヌープする1つ以上の形式で、キャッシュ12へのアクセスはキャッシュ12を横切って維持する共有データコヒーレンシイに関連したスヌープトラヒックの重要な量を含んでいてもよい。さらに、プロセッサ10のそれぞれは、その関連するキャッシュ12に保持された共有データおよび非共有データの両方へのローカルアクセスを作り、その上で実行するコードの必要条件を満たす。例えば、キャッシュ12−1へのアクセスは、データコヒーレンシイを維持するためのスヌープ関連共有データアクセス、およびプログラム命令のその進行中の実行と関連して実行されたプロセッサ10−1によるローカルアクセスの混合を含む。通常、同じキャッシュポートに対するスヌープ関連および動作関連アクセス、あるいはバンクされたキャッシュにおける同じバンクへのアクセスは、全体のキャッシュアクセス帯域幅の点から互いと競合する。したがって、従来方式では、スヌープトラヒックは利用可能なキャッシュメモリ帯域幅に関して非スヌープキャッシュアクセスと競争することにより、有効な性能を減少させる。
図2は、プロセッサ10−1(また「P1」と呼ばれる)およびその関連するキャッシュ12−1の1つの実施例を示す。実例では、バンクされたキャッシュ12−1はアクセス制御回路20および4つのキャッシュバンク22−1乃至22−4を含む。キャッシュバンク22のより多いかより少ない数が必要または所望により実施されてもよい。さらに、バンクされたキャッシュ12−1がオフチップL2キャッシュを含む場合、バンクされたキャッシュ12−1の一部としてのアクセス制御回路20の実施は有利かもしれない。しかしながら、1つ以上の実施例では、アクセス制御回路20はプロセッサ10−1の一部として、オンボードで実施される。そのような実施例では、アクセス制御回路20はキャッシュコントローラ18−1の一部として実施されてもよい。
どんな場合も、オペレーションでは、アクセス制御回路20は非共有データあるいは共有データに関連づけられているようなキャッシュアクセスを認識し、バンク22に関連した、非共有/共有指定によってそれらのアクセスを相応して指示する。1つ以上の実施例では、そのような認識は、アクセス制御回路に共有アクセス指標信号および/またはバンク構成信号を供給するプロセッサ10−1に基づく。同じあるいは同様の構成は任意の1つ以上のプロセッサ10−2および10−3(つまりP2、P3)、およびそれらに対応するキャッシュ12−2および12−3のために適用されてもよい。
それでも、バンク22のうちの1つへのアクセスが残りのバンク22へのアクセスと干渉をしないように、与えられた1つのバンクされたキャッシュ12内のバンク22の各々は、好ましくは独立してアクセス可能である。そのキャッシュ構成で、バンク22の1つ以上は、非共有データ、共有データの保持、あるいはそれらの混合のために指定され得る。
バンク22の特定のものが排他的に非共有データの保持に対して指定されれば、共有データコヒーレンシイを維持するのに関連したスヌープ関連アクセスは、バンク22のそれらの特定のものに対してローカルな非共有データアクセスと干渉することはないであろう。もちろん、バンク22の特定のものは、排他的に共有データの保持のために、あるいは共有および非共有データの混合の保持のために指定されてもよい。一般に、バンク22の異なるものは、共有されていない使用、共有された使用あるいは混合された使用のために指定されることができ、また、バンク22の少なくとも1つのためにローカルプロセッサアクセス帯域幅を保存する方法は、その少なくとも1つのバンクから共有データを排除することを含む。この方法で共有および非共有データアクセスを指示することは、バンク22の特定のものに関連した異なる指定に依存する。
より広く、アクセス制御回路20の実施例は、バンクされたキャッシュにおける少なくとも1つのバンクについて、共有データキャッシュアクセスおよび非共有データキャッシュアクセス間の干渉を減少させる方法を実施するように構成することができる。例えば、アクセス制御回路20は、共有データおよび非共有データのうちの1つである第1のタイプのデータを保持し、1つ以上の第1のバンクに第1のタイプのデータについてキャッシュアクセスを指示するためのバンクされたキャッシュ12の1つ以上の第1のバンク22を指定することにより、そのような干渉を減少してもよい。アクセスは、キャッシュアクセスと関連したアクセス制御回路12に供給されるアクセスタイプ指標に基づいた第1のタイプのデータをターゲットとすることと認識されてもよい。
アクセス制御回路20は、共有および非共有データの他の1つである第2のタイプのデータを保持し、1つ以上の第2のバンク22へ第2のタイプのデータについてキャッシュアクセスを指示するためのバンクされたキャッシュ12の1つ以上の第2のバンク22を指定するようにさらに構成されてもよい。そのような実施例では、第1のタイプのデータを保持するためのバンクされたキャッシュ12の1つ以上の第1のバンク22を指定することが、共有データを保持するための第1のキャッシュバンク22を指定することを含んでもよい。同様に、第2のタイプのデータを保持するための1つ以上の第2のキャッシュバンク22を指定することは、非共有データを保持するための第2のキャッシュバンク22を指定することを含んでもよい。
そのような配置で、第1のタイプのデータのためのキャッシュアクセスは、キャッシュバンク22のその第1のものへ導かれ、また、非共有データのためのキャッシュアクセスはキャッシュバンク22のその第2のものへ導かれる。また注意すべきは、そのような指定の1つあるいは両方は、すべての共有および/または非共有のアクセスがバンクされたキャッシュ12において1つ以上の指定されたバンク22に排他的に導かれるような、排他的であることができる。しかしながら、共有および非共有のアクセスの両方が、少なくともキャッシュアドレスの与えられた範囲について同じバンクへ導かれるように、指示はまた非排他的であることができる。キャッシュバンク22の与えられたものが混合されたバンクとして指定される場合さえ、共有または非共有のデータのために使用されるそのバンクの量あるいはパーセントは制御されることができ、例えば、非一次的タイプのデータに対するそのバンクのアクセス干渉が最小であるように、それは共有または非共有のデータのために一次的に使用され得る。
アクセスタイプ指標は、ソフトウェア制御の下で設定された信号あるいは他のタイプの値であり得る。例えば、アクセスタイプ指標は、与えられたメモリアドレスに基づいたページテーブルルックアップを行なった後に、ハードウェア(例えばプロセッサ10)が指標にアクセスするような、ソフトウェアによって書かれたマイクロプロセッサ10内のページテーブルにビットを含んでもよい。他の実施例では、アクセスタイプ指標は、プロセッサ10内のあるソフトウェアで書かれた構成レジスタに対するアドレスデコード/比較の結果を含んでもよい。例えば、ソフトウェアは、共有領域の開始および終了を示す2つのレジスタを構成することができ、プロセッサ10は、与えられたアクセスが共有されるかどうか判断するために、これらのレジスタに対するアクセスアドレスの全部または一部を比較することにより、アクセスタイプ指標信号を適切な状態へ設定することができる。
また他の実施例では、プロセッサ10内のソフトウェアでプログラムされたレジスタは、あるアクセスのタイプが共有されるかどうか示すために使用され、したがって、そのレジスタの状態または値がアクセスタイプ指標信号として役立つ。共有/非共有の決定は、どんなタイプのアクセスがメモリのどの領域にアクセス可能であるかのソフトウェアの知識に基づくことができる。そのような配置は、キャッシュ管理オペレーション、変換索引バッファ(TLB)管理オペレーションおよび、データストリーミングなどのような、他の専用機能に関連したアクセスに役立つかもしれない。
とにかく、上記の共有または非共有アクセス指示する方法を念頭において、図3は共有および非共有アクセスを指示することの支援において実施することができる処理論理を示し、共有または非共有であるような任意の1つ以上のキャッシュ12のバンク22の特定のものを指定することから始まる(ステップ100)。このステップは、バンクされたキャッシュ12が予め定義された共有および非共有バンク指定で構成される暗黙のステップであるか、バンク指定が構成可能な実施例の明示的なステップであるかもしれない。
希望の指定がなされると仮定して、処理はキャッシュアクセスを作り(ステップ102)、共有または非共有としてアクセスタイプを決定する(ステップ104)ことにより継続する。アクセスが共有データに対してである場合(ステップ106のYES)、それは、共有データを保持するように指定されたバンク22のうちの1つへ導かれる。反対に、アクセスが非共有データに対してである場合(ステップ106のNO)、それは、非共有データを保持するための指定されたバンク22のうちの1つへ導かれる。
図4は、キャッシュアクセスのために生成された1つ以上のアドレスビットの「ハッシング」に基づいて、非共有または共有バンク22にキャッシュアクセスを導くように構成されたバンク選択回路24を含む、アクセス制御回路20の一実施例を示す。例えば、2つのバンク22をもち、1つ以上のアドレス線が、共有あるいは非共有のアクセスにそれぞれ対応して、「BANK0」選択信号あるいは「BANK1」選択信号を生成するように使用することができる。図5は2つのそのような選択的にアクセスされたバンク22を示す。
同様に図6と7は、それぞれアクセス制御回路20の他の実施例および共有および非共有バンク指定の対応する例を示す。特に、図6に示されたアクセス制御回路20の実施例は、1つ以上のアドレス線および共有アクセス指標信号、および選択的にバンク構成信号のハッシングの関数として非共有および共有データキャッシュアクセスを指示する。共有アクセス指標信号は1つ以上のビットを含み、与えられたキャッシュアクセスが主メモリの共有または非共有領域にマップするキャッシュライン向けであることを示すために、正または負論理によって表明することができる。そのような共有の指示は、プロセッサの使用のために記憶されたメモリページ情報の関数として容易に生成することができる。共有の指示信号のように、バンク構成信号は1つ以上のビットであり、プロセッサで生成されることができる。
例として役立つプロセッサ10−1で、キャッシュコントローラ18−1は、アクセス制御回路20のオペレーションを支援するため、共有の指標信号および/またはバンク構成信号を生成するように構成することができる。望まれた場合、キャッシュコントローラ18−1は、例えば主メモリ16の再マッピングに応答し、または異なるオペレーティングシステムあるいはプログラムモードに応答して、バンク構成信号をダイナミックに更新するように構成することができる。そのようなインスタンスでは、キャッシュコントローラ18−1は、共有/非共有のバンク指定を再構成する部分として、キャッシュ12−1をフラッシュ、そうでなければ無効、あるいはクリアするように構成することができる。当業者は、同様の構成が任意の1つ以上のプロセッサ10−2および10−3、キャッシュコントローラ18−2および18−3、およびバンクされたキャッシュ12−2および12−3に存在してもよいことを認識するだろう。
もちろん、当業者は、ここの議論が様々な例証となる実施例に関係があり、本発明を限定しないことを認識するべきであり、また、添付した図もそうである。さらに正確に言えば、本発明は次の請求項およびそれらの法的な均等物によってのみ制限される。
バンクされたキャッシュを含んでいるマルチプロセッサ回路を示すブロック図である。 与えられた1つのプロセッサ、および図1のマルチプロセッサ回路のバンクされたキャッシュを示すブロック図である。 非共有/共有データアクセスタイプの機能としてバンクされたキャッシュアクセスを制御する1つの実施例を示す論理フロー図である。 バンクされたキャッシュアクセスを制御するためのアクセス制御回路の1つの実施例を示すブロック図である。 非共有および共有バンクの配置をもつバンクされたキャッシュを示すブロック図である。 バンクされたキャッシュアクセスを制御するためのアクセス制御回路の他の実施例を示すブロック図である。 非共有および共有バンクの他の配置をもつバンクされたキャッシュを示すブロック図である。

Claims (21)

  1. バンクされたキャッシュにおいて、少なくとも1つのバンクについてマルチプロセッサシステムでのキャッシュスヌープトラヒックと関連された共有データキャッシュアクセスおよびアクセスするプロセッサ専用のデータに向けた非共有データキャッシュアクセスの間の干渉を減少させる方法であって、
    第1のタイプのデータを保持するための前記バンクされたキャッシュの1つ以上の第1のバンクを指定することであって、前記第1のタイプのデータは共有データおよび非共有データのうちの1つである、1つ以上の第1のバンクを指定することと、
    前記第1のタイプのデータのためのキャッシュアクセスを前記1つ以上の第1のバンクに指示することを含む方法。
  2. さらに、第2のタイプのデータを保持するための前記バンクされたキャッシュの1つ以上の第2のバンクを指定することであって、前記第2のタイプのデータは共有および非共有データのうちの他の1つである、1つ以上の第2のバンクを指定することと前記第2のタイプのデータのためのキャッシュアクセスを前記1つ以上の第2バンクへ指示することを含む請求項1の方法。
  3. 第1のタイプのデータを保持するための前記バンクされたキャッシュの1つ以上の第1のバンクを指定することは、共有データを保持するために前記バンクされたキャッシュの第1のキャッシュバンクを指定することを含み、第2のタイプのデータを保持するために前記バンクされたキャッシュの1つ以上の第2のバンクを指定することが、非共有データを保持するために前記バンクされたキャッシュの第2のキャッシュバンクを指定することを含む請求項2の方法。
  4. 第1のタイプのデータのためのキャッシュアクセスを前記1つ以上の第1のバンクに指示することは、共有データのためのキャッシュアクセスを前記第1のキャッシュバンクへ指示することであり、第2のタイプのデータのためのキャッシュアクセスを前記1つ以上の第2のバンクに指示することは、非共有データのためのキャッシュアクセスを前記第2のキャッシュバンクへ指示することである請求項3の方法。
  5. 第1のタイプのデータを保持するための前記バンクされたキャッシュの1つ以上の第1のバンクを指定することは、前記第1のタイプのデータを保持するための前記バンクされたキャッシュの少なくとも1つのバンクを排他的に指定することを含む請求項1の方法。
  6. 第1のタイプのデータを保持するための前記バンクされたキャッシュの1つ以上の第1のバンクを指定することは、前記第1のタイプのデータおよび第2のタイプのデータの混合を保持するための前記バンクされたキャッシュの少なくとも1つのバンクを指定することを含み、前記第2のタイプのデータは共有および非共有データのうちの他の1つである請求項1の方法。
  7. 前記第1のタイプのデータのためのキャッシュアクセスを前記1つ以上の第1のバンクに指示することは、キャッシュアクセスが前記第1のタイプのデータ向けであるかどうかを示すアクセスタイプ指標信号にバンク選択機能が応答してバンクを選択することを含む請求項1の方法。
  8. 前記バンク選択機能は、1つ以上のキャッシュアクセスアドレス信号およびアクセスタイプ指標信号に応答して前記バンクされたキャッシュの特定のバンクにおける特定の位置へのキャッシュアクセスを指示するように構成される請求項の方法。
  9. 第1のタイプのデータを保持するための前記バンクされたキャッシュの1つ以上の第1のバンクを指定することは、個々のキャッシュアクセスが前記第1のタイプのデータを含んでいるかどうかを示すアクセスタイプ指標信号に応答するように、前記バンクされたキャッシュにおける特定のバンクへキャッシュアクセスを指示するために使用されるバンク選択機能を構成することを含む請求項1の方法。
  10. 前記バンクされたキャッシュの前記1つ以上の第1のバンクの指定を変更することを必要とされたとき、前記バンク選択機能を再構成することをさらに含む請求項の方法。
  11. 指定の変更に応答して前記バンクされたキャッシュの前記1つ以上の第1のバンクから現在キャッシュされたデータをフラッシュすることをさらに含む請求項10の方法。
  12. マルチプロセッサシステムでのキャッシュスヌープトラヒックと関連された共有データのためのキャッシュアクセスとアクセスするプロセッサ専用である非共有データのためのキャッシュアクセスとの間のバンクされたキャッシュにおけるキャッシュアクセス干渉を減少させる方法であり、
    前記バンクされたキャッシュの少なくとも1つのキャッシュバンクにおける共有および非共有データの混合を減少または除去することと、
    共有または非共有データの一方に関連されたキャッシュアクセスを共有または非共有データのうちの他方が減少または除去されてしまった少なくとも1つのキャッシュバンクに指示することを含む方法。
  13. 前記バンクされたキャッシュの少なくとも1つのキャッシュバンクにおける共有および非共有データの混合を減少または除去することは、共有データを保持するための前記バンクされたキャッシュの1つ以上のバンクを指定し、共有データのためのキャッシュアクセスを前記指定された1つ以上のバンクに指示することを含む請求項12の方法。
  14. 前記バンクされたキャッシュの少なくとも1つのキャッシュバンクにおける共有および非共有データの混合を減少または除去することは、非共有データを保持するための前記バンクされたキャッシュの1つ以上のバンクを指定し、非共有データのためのキャッシュアクセスを前記指定された1つ以上のバンクに指示することを含む請求項12の方法。
  15. 第1のタイプのデータを保持するために指定されたバンクされたキャッシュの1つ以上の第1のキャッシュバンクに第1のタイプのデータのためのキャッシュアクセスを指示することにより、マルチプロセッサシステムでのキャッシュスヌープトラヒックと関連された共有データキャッシュアクセスおよびアクセスするプロセッサ専用のデータに向けた非共有データキャッシュアクセス間の干渉を減少させるように構成され、前記第1のタイプのデータが共有データおよび非共有データのうちの1つである、アクセス制御回路を含むバンクされたキャッシュ。
  16. 前記アクセス制御回路が、第2のタイプのデータのためのキャッシュアクセスを前記バンクされたキャッシュの1つ以上の第2のキャッシュバンクに指示するように構成され、前記第2のタイプのデータが共有および非共有データのうちの他の1つである請求項15のバンクされたキャッシュ。
  17. 前記アクセス制御回路は、与えられたキャッシュアクセスが、与えられたキャッシュアクセスと関連して前記バンクされたキャッシュに供給されるアクセスタイプ指標信号に基づいて、前記第1または第2のタイプのデータ向けであるかどうかを判断するように構成される、請求項16のバンクされたキャッシュ。
  18. 前記アクセス制御回路はキャッシュアクセスと関連したアクセスタイプ指標信号を受け取ることに基づいてバンク選択機能を実施するように構成され、与えられたキャッシュアクセスが前記第1のタイプのデータ向けであることを前記アクセスタイプ指標信号が示す場合に、前記アクセス制御回路が与えられたキャッシュアクセスを前記1つ以上の第1のキャッシュバンクに指示するように構成される、請求項15のバンクされたキャッシュ。
  19. 前記1つ以上の第1のキャッシュバンクの少なくとも1つが前記第1のタイプのデータを保持するために排他的に指定される、請求項15のバンクされたキャッシュ。
  20. 前記1つ以上の第1のキャッシュバンクの少なくとも1つが前記第1のタイプのデータを保持のために非排他的に指定される、請求項15のバンクされたキャッシュ。
  21. 前記アクセス制御回路は前記1つ以上の第1のキャッシュバンクの指定を変更することを可能にするように構成可能である、請求項15のバンクされたキャッシュ。
JP2008514886A 2005-06-02 2006-06-02 キャッシュメモリアクセスを管理する方法と装置 Expired - Fee Related JP4477688B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/144,207 US7353319B2 (en) 2005-06-02 2005-06-02 Method and apparatus for segregating shared and non-shared data in cache memory banks
PCT/US2006/021401 WO2006130809A2 (en) 2005-06-02 2006-06-02 Method and apparatus for managing cache memory accesses

Publications (2)

Publication Number Publication Date
JP2008542923A JP2008542923A (ja) 2008-11-27
JP4477688B2 true JP4477688B2 (ja) 2010-06-09

Family

ID=37027583

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008514886A Expired - Fee Related JP4477688B2 (ja) 2005-06-02 2006-06-02 キャッシュメモリアクセスを管理する方法と装置

Country Status (10)

Country Link
US (1) US7353319B2 (ja)
EP (1) EP1902370B1 (ja)
JP (1) JP4477688B2 (ja)
KR (1) KR100953854B1 (ja)
CN (1) CN101228512B (ja)
AT (1) ATE459920T1 (ja)
DE (1) DE602006012678D1 (ja)
IL (1) IL187807A0 (ja)
MX (1) MX2007015246A (ja)
WO (1) WO2006130809A2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8661265B1 (en) 2006-06-29 2014-02-25 David Dunn Processor modifications to increase computer system security
US7925815B1 (en) * 2006-06-29 2011-04-12 David Dunn Modifications to increase computer system security
US8041854B2 (en) * 2007-09-28 2011-10-18 Intel Corporation Steering data units to a consumer
US7809875B2 (en) * 2008-06-30 2010-10-05 Wind River Systems, Inc. Method and system for secure communication between processor partitions
US20100017569A1 (en) * 2008-07-16 2010-01-21 Agere Systems Inc. Pcb including multiple chips sharing an off-chip memory, a method of accessing off-chip memory and a mcm utilizing fewer off-chip memories than chips
US8112585B2 (en) * 2009-04-30 2012-02-07 Netapp, Inc. Method and apparatus for dynamically switching cache policies
JP5121896B2 (ja) * 2010-08-11 2013-01-16 株式会社東芝 マルチコアプロセッサシステムおよびマルチコアプロセッサ
US20130159630A1 (en) * 2011-12-20 2013-06-20 Ati Technologies Ulc Selective cache for inter-operations in a processor-based environment
US9195658B2 (en) 2012-12-12 2015-11-24 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Managing direct attached cache and remote shared cache
CN103268321B (zh) * 2013-04-19 2016-04-27 中国建设银行股份有限公司 高并发交易数据处理方法和装置
US20150370707A1 (en) * 2014-06-24 2015-12-24 Qualcomm Incorporated Disunited shared-information and private-information caches
JP6558009B2 (ja) * 2015-03-23 2019-08-14 富士ゼロックス株式会社 転送装置、転送システムおよびプログラム
KR102411920B1 (ko) 2017-11-08 2022-06-22 삼성전자주식회사 전자 장치 및 그 제어 방법
CN110688331B (zh) * 2018-07-05 2021-08-17 珠海全志科技股份有限公司 一种SoC芯片及读取数据的方法
GB2584440B (en) * 2019-06-03 2021-12-08 Advanced Risc Mach Ltd Cache arrangement for graphics processing systems

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69429777T2 (de) * 1993-09-30 2002-10-17 Apple Computer, Inc. System zur dezentralen massenspeichersteuerung eines rechners mit virtuellem speicher
US5854638A (en) * 1996-02-02 1998-12-29 Opti Inc. Unified memory architecture with parallel access by host and video controller
GB9701960D0 (en) 1997-01-30 1997-03-19 Sgs Thomson Microelectronics A cache system
US5943686A (en) 1997-04-14 1999-08-24 International Business Machines Corporation Multiple cache directories for non-arbitration concurrent accessing of a cache memory
US6029237A (en) * 1997-10-08 2000-02-22 Dell Usa, L.P. Method for simulating the presence of a diskette drive in a NetPC computer that contains only a hard disk drive
US6751704B2 (en) 2000-12-07 2004-06-15 International Business Machines Corporation Dual-L2 processor subsystem architecture for networking system
US7174415B2 (en) * 2001-06-11 2007-02-06 Zoran Corporation Specialized memory device

Also Published As

Publication number Publication date
KR100953854B1 (ko) 2010-04-20
WO2006130809A3 (en) 2007-02-08
EP1902370A2 (en) 2008-03-26
US20060277356A1 (en) 2006-12-07
EP1902370B1 (en) 2010-03-03
CN101228512B (zh) 2011-05-11
DE602006012678D1 (de) 2010-04-15
MX2007015246A (es) 2008-02-21
CN101228512A (zh) 2008-07-23
JP2008542923A (ja) 2008-11-27
US7353319B2 (en) 2008-04-01
KR20080014899A (ko) 2008-02-14
IL187807A0 (en) 2008-08-07
ATE459920T1 (de) 2010-03-15
WO2006130809A2 (en) 2006-12-07

Similar Documents

Publication Publication Date Title
JP4477688B2 (ja) キャッシュメモリアクセスを管理する方法と装置
US7162590B2 (en) Memory bus within a coherent multi-processing system having a main portion and a coherent multi-processing portion
US7925840B2 (en) Data processing apparatus and method for managing snoop operations
JP5650766B2 (ja) Tlbサポート設計のiommu
KR101569160B1 (ko) 캐시에서의 웨이 할당 및 웨이 로킹 방법
US8180981B2 (en) Cache coherent support for flash in a memory hierarchy
US7389402B2 (en) Microprocessor including a configurable translation lookaside buffer
US20090006756A1 (en) Cache memory having configurable associativity
US20050005073A1 (en) Power control within a coherent multi-processing system
US8521944B2 (en) Performing memory accesses using memory context information
US20050010728A1 (en) Coherent multi-processing system
US20110173393A1 (en) Cache memory, memory system, and control method therefor
US20200104259A1 (en) System, method, and apparatus for snapshot prefetching to improve performance of snapshot operations
GB2571538A (en) Memory interface
KR19980079433A (ko) 비포함 캐쉬 메모리 계층 구조에서 사용하기 위한 캐쉬 일관성 메카니즘 구현 방법 및 시스템
GB2571536A (en) Coherency manager
US20030115402A1 (en) Multiprocessor system
US8332592B2 (en) Graphics processor with snoop filter
JP2007156821A (ja) キャッシュシステム及び共用2次キャッシュ
US7779205B2 (en) Coherent caching of local memory data
US6345344B1 (en) Cache allocation mechanism for modified-unsolicited cache state that modifies victimization priority bits
JPH10143431A (ja) マイクロプロセッサおよびコンピュータシステムにおけるデータのキャッシング方法
JP2006244460A (ja) キャッシュメモリ及びプロセッサ
JPH07282023A (ja) データ転送量可変プロセッサ及びそれを用いたシステム
US20040250035A1 (en) Method and apparatus for affecting computer system

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091013

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100113

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: 20100209

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100311

R150 Certificate of patent or registration of utility model

Ref document number: 4477688

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140319

Year of fee payment: 4

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees