JP2004507800A - スヌープ・ベースのキャッシュ整合性プロトコルでコンピュータ・システム内のトランザクションを並べ替える機構 - Google Patents
スヌープ・ベースのキャッシュ整合性プロトコルでコンピュータ・システム内のトランザクションを並べ替える機構 Download PDFInfo
- Publication number
- JP2004507800A JP2004507800A JP2001514672A JP2001514672A JP2004507800A JP 2004507800 A JP2004507800 A JP 2004507800A JP 2001514672 A JP2001514672 A JP 2001514672A JP 2001514672 A JP2001514672 A JP 2001514672A JP 2004507800 A JP2004507800 A JP 2004507800A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- address packet
- address
- packet
- queue
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
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)
- Multi Processors (AREA)
Abstract
マルチプロセッサ共用メモリ・システム内の要求の処理を促進する装置と方法が提供される。マルチプロセッサ共用メモリ・システムでは、要求は以下の2つの規則が遵守されれば任意の順序で処理できる。第1に、プロセッサにアクセス権を授与する要求はプロセッサからのアクセス権を取り消すより古い要求より先に処理できない。第2に、同じキャッシュ・ラインを参照するすべての要求は到着順に処理される。このようにして、要求を順不同に処理してキャッシュ間転送を加速することができる。特に、プロセッサがデータを提供することが必要な外部要求はデータ待ち状態の他のより古いローカル要求より先にそのプロセッサによって処理できる。さらに、古いローカル要求より先に新しいローカル要求を処理することもできる。その結果、本明細書に記載の装置と方法は有利なことにキャッシュ整合性プロトコルに関連する待ち時間を低減することでマルチプレクサ共用メモリ・システム内のパフォーマンスを向上させることができる。
Description
【0001】
本発明は、一般にコンピュータ・システムの分野に関し、より詳細には、多数のプロセッサを備えたコンピュータ・システム内のキャッシュ間転送の加速に関する。
【0002】
(従来の技術)
データ処理システムは共通のシステム・メモリを共用する多数のプロセッサを含むことが多い。本明細書内で使用するプロセッサという用語はシステム・メモリを使用する活動状態の装置を指すために使用している。プロセッサはマイクロプロセッサ、入出力ブリッジ、グラフィックス装置、周辺装置、またはシステム・メモリへの読み書きを行うその他の装置を含んでいてもよい。データ処理システム内のプロセッサはパフォーマンスを向上させるキャッシュを含むことが多い。マルチプロセッサ・システム内のキャッシュはキャッシュ・ラインごとにキャッシュ・タグを含むであろう。キャッシュ・タグは対応するプロセッサのアクセス権と所有権の責任とを指定できる。
【0003】
マルチプロセッサ共用メモリ・システム内のキャッシュは、整合し、首尾一貫した方法で保持する必要がある。システム・メモリ内に記憶されたデータが異なるキャッシュ内に記憶されていてもすべてのプロセッサから確実に同一であることを明らかにするため、キャッシュ・プロトコル規則の組を使用することができる。キャッシュの整合性を確保する1つの方法は、標準のスヌープ・プロトコルを使用する方法である。標準のスヌープ・プロトコル内では、各プロセッサは装置のキャッシュ・ライン要求をアドレス・バス上のすべての他のプロセッサにブロードキャストする。次いで、各プロセッサは他のプロセッサからの要求を「スヌープ」し、キャッシュ・タグを更新し、かつ/または他のプロセッサへのキャッシュ・ラインに対応するデータを送ることで適宜応答する。標準のスヌープ・プロトコルでは、要求は同じ順序ですべてのプロセッサに到達し、各プロセッサは要求を到着順に処理する。要求がプロセッサの内部状態に影響する時には、プロセッサは要求を「処理する」と言うことができる。標準のスヌープ・プロトコルでは、要求はローカル要求と外部要求とを含む。ローカル要求はプロセッサ自体によって生成された要求を含み、一方、外部要求は他のプロセッサからの外部要求を含む。要求は通常キャッシュ・ラインをそのアドレスで指定するので、アドレス・パケットとも呼ばれる。アドレス・パケットはアドレス・ブロードキャストとも呼ばれる。要求、アドレス・パケット、およびアドレス・ブロードキャストという用語は本明細書では交換可能に使用される。
【0004】
要求をその到着順に処理しなければならないという要件は標準のスヌープ・プロトコルのパフォーマンスの不利な点と考えられる。特に、この要件はキャッシュ間のデータ転送を遅延させることがある。またこの要件はデータがローカル要求に対応し、それより早いローカル要求の対応するデータより先に到着した場合にプロセッサによって受信されたこのデータの処理を遅延させることがある。ローカル要求を処理する際、プロセッサはローカル要求に対応するデータが他の要求の処理前に到着するのを待つ。潜在的に、単一のプロセッサがそのデータを受信するのを多数のプロセッサが待っている場合がある。この状況はシステム内の望ましくない待ち時間を発生させることがある。ただし、プロセッサが到着したローカル要求の対応するデータに先立って他の要求を処理することができれば、後続の要求がプロセッサがデータを受信する前にローカル要求のキャッシュ・ラインへのプロセッサのアクセス権を取り消す場合、資源が枯渇する危険がある。システムに資源枯渇の問題を引き起こすことなく標準のキャッシュ整合性プロトコルの待ち時間を低減するシステムが必要である。
【0005】
(概要)
上記の問題はその大半が本明細書に記載の装置と方法によって解決する。一般に、マルチプロセッサ共用メモリ・システム内の要求の処理を促進する装置と方法が提供される。マルチプロセッサ共用メモリ・システムでは、要求は以下の2つの規則が遵守されれば任意の順序で処理できる。第1に、プロセッサにアクセス権を授与する要求はプロセッサからのアクセス権を取り消すより古い要求より先に処理できない。第2に、同じキャッシュ・ラインを参照するすべての要求は到着順に処理される。このようにして、要求を順不同に処理してキャッシュ間転送を加速することができる。特に、プロセッサがデータを提供することが必要な外部要求はデータ待ち状態の他のより古いローカル要求より先にそのプロセッサによって処理できる。さらに、古いローカル要求より先に新しいローカル要求を処理することもできる。その結果、本明細書に記載の装置と方法は有利なことにキャッシュ整合性プロトコルに関連する待ち時間を低減することでマルチプレクサ共用メモリ・システム内のパフォーマンスを向上させることができる。
【0006】
一実施態様では、プロセッサは上記の規則を実施する第1の待ち行列と第2の待ち行列とを含むことができる。第1および第2の待ち行列は先入れ先出し(FIFO)方式で運用できる。プロセッサは第1の待ち行列内のプロセッサにアクセス権を授与するアクセス・パケットを第1の待ち行列内に記憶できる。プロセッサは第2の待ち行列内に他のすべてのアドレス・パケットを記憶できる。データを必要とするアドレス・パケットはデータが到着するまで待ち行列の先頭にとどまることができる。プロセッサは任意の順序でいずれかの待ち行列の先頭からアドレス・パケットを処理するように構成できる。このようにして、データを必要とする外部パケットをデータ待ち状態のより古いローカル・パケットより先に処理できる。
【0007】
本発明のその他の特徴および有利な点は本発明の以下の詳細な説明を読み、添付の図面を参照することで明らかになろう。
【0008】
本発明をさまざまに改変し代替形態で実施できるが、本発明の特定の実施形態を図に示し、本明細書で詳述する。ただし、図面と詳細な説明は本発明を開示された特定の形態に限定するものではなく、本発明は首記の請求の範囲に記載の本発明の範囲を逸脱しないすべての修正形態、等効形態、および代替形態を包含するものである。
【0009】
(実施形態の詳細な説明)
図1を参照すると、コンピュータ・システムの一実施形態のブロック図が示されている。これ以外の実施形態も可能であり企図できる。図1に、システム・メモリ100、プロセッサA110a、プロセッサB110b、プロセッサC100c、キャッシュA120a、キャッシュB120b、キャッシュC120c、アドレス・バス130、データ・バス140a、データ・バス140b、データ・バス140c、およびデータ・バス・スイッチ150が示されている。システム・メモリ100はアドレス・バス130とデータ・バス・スイッチ150に結合されている。プロセッサAはアドレス・バス130、データ・バス140a、およびキャッシュA120aに結合されている。プロセッサBはアドレス・バス130、データ・バス140b、およびキャッシュB120bに結合されている。プロセッサCはアドレス・バス130、データ・バス140c、およびキャッシュC120cに結合されている。
【0010】
図1で、プロセッサA110a、プロセッサB110b、およびプロセッサC110cはシステム・メモリ100にアクセスして、システム・メモリ100から取り出したデータをそれぞれキャッシュA120a、キャッシュB120b、キャッシュC120c内に記憶するように構成されている。上記のように、プロセッサという用語はシステム・メモリを使用する活動状態の装置を指すために使用できる。プロセッサはマイクロプロセッサ、入出力ブリッジ、グラフィックス装置、周辺装置、またはシステム・メモリへの読み書きを行うその他の装置を含むことができる。図1はプロセッサA110a、プロセッサB110b、およびプロセッサC110cを示しているが、その他のプロセッサをシステムに追加して別の方法でアドレス・バス130およびデータ・バス・スイッチ150に結合することができる。図1、図2、および図3の説明では、プロセッサA110a、プロセッサB110b、およびプロセッサC110cを個々に「プロセッサ」または集合的に「プロセッサ」と呼ぶことがある。同様に、キャッシュA120a、キャッシュB120b、およびキャッシュC120cを個々に「キャッシュ」または集合的に「キャッシュ」と呼ぶことがある。
【0011】
スヌープ・ベースのキャッシュ整合性プロトコルを使用するように構成された一実施形態では、プロセッサはアドレス・バス130上でデータ要求を送るように構成できる。上記のように、要求はアドレス・パケットまたはアドレス・ブロードキャストと呼ぶことができる。各プロセッサはすべての他のプロセッサの要求を受信するように構成できる。図1の実施形態では、アドレス・バス130は、アドレス・バス130上で送られる各要求が各プロセッサおよびシステム・メモリ100によって受信できるようにブロードキャスト・ネットワークを含むと言うことができる。プロセッサおよびシステム・メモリ100はシステムによって使用されるキャッシュ・プロトコルにもとづいて要求に応答するように構成できる。プロセッサはキャッシュ・プロトコルに従ってそのアクセス権を変更し、かつ/またはデータを提供することによって要求に応答できる。キャッシュ・プロトコルが、要求に応答してデータを提供することをプロセッサに要求しない場合、システム・メモリ100がデータを提供するように構成できる。図1で、プロセッサおよびシステム・メモリ100はデータをデータ・バス・スイッチ150に送ることで提供するように構成できる。データ・バス・スイッチ150は、プロセッサまたはシステム・メモリからのデータ受信に応答して、データを適切なプロセッサまたはシステム・メモリ100に転送するように構成できる。図1の実施形態では、データ・バス・スイッチ150とデータ・バス140a、140b、および140cはポイント・ツー・ポイント交換ネットワークを含むということができる。
【0012】
図1の実施形態では、要求は、システム・メモリ100内のデータのアドレスを使用して得られたデータを識別するように構成されている。データ受信に応答して、プロセッサはそのキャッシュ内にデータを記憶するように構成できる。一実施形態では、データはそのアドレスに従ってキャッシュ内のある位置に記憶される。データをアドレスから特定のキャッシュ・ラインにマッピングするようにキャッシュを構成できる。その結果、各プロセッサのキャッシュはデータをそれぞれのキャッシュの同じ場所にマッピングするように構成される。したがって、プロセッサからのデータ要求はキャッシュ・ライン要求とも言え、プロセッサは要求のアドレスに対応するそのキャッシュ内のキャッシュ・ラインに従って要求に応答することができる。
【0013】
一実施形態では、図1のキャッシュはキャッシュ・ラインごとにキャッシュ・タグを含む。キャッシュ・タグはキャッシュ・ラインへのプロセッサのアクセス権を示すように構成される。キャッシュ・プロトコルは、プロセッサがキャッシュ・ラインへのどのようなアクセス権を有するか、またプロセッサが要求に応答してキャッシュ・ラインを提供しなければならないか否かを定義できる。一実施形態では、アクセス権は共用状態、排他状態、および無効状態を含む。一般に、プロセッサはそのアクセス権が共用状態または排他状態の場合、キャッシュ・ラインへのアクセス権を有すると言える。プロセッサのアクセス権が排他状態のとき、他のプロセッサはキャッシュ・ラインに書込みも読み込みもできない。プロセッサのアクセス権が共用状態の場合、別のプロセッサもキャッシュ・ラインを読み出せるように共用アクセス権を有することができる。キャッシュ・ラインへのプロセッサのアクセス権が無効状態の場合、プロセッサはキャッシュ・ラインの読み出しまたは書き込み前にキャッシュ・ラインへのアクセス権を得なければならない。
【0014】
一実施形態では、MOSIキャッシュ・プロトコルを使用できる。MOSIキャッシュ・プロトコルでは、キャッシュ・ラインへのプロセッサのアクセス権は変更、所有、共用、または無効状態である。変更状態では、プロセッサはキャッシュ・ラインを読み書きし、別のプロセッサからの要求に応答してキャッシュ・ラインのデータを提供できる。所有状態では、プロセッサはキャッシュ・ラインの読み出しはできるがそれへの書き込みはできない。所有状態では、プロセッサはやはり別のプロセッサからの要求に応答してキャッシュ・ラインのデータを提供できる。共用状態では、キャッシュ・ラインの読み出しはできるがそれへの書き込みはできず、別のプロセッサからの要求に応答してキャッシュ・ラインのデータを提供できない。無効状態では、プロセッサはキャッシュ・ラインの読み書きはできず、アクセスを得るために要求を送らなければならない。どのプロセッサも所有または変更状態のキャッシュ・ラインを持たないと、システム・メモリ100は要求に応答してキャッシュ・ラインを提供できる。その他のキャッシュ・プロトコルを実施するためにその他の実施形態を構成することができる。
【0015】
上記のように、標準のスヌープ・プロトコルは一般にプロセッサが要求を到着順に処理することを必要とする。要求がプロセッサの内部状態に影響する時には、プロセッサは要求を「処理する」と言うことができる。ただし、図1のシステムによって使用されるプロトコルでは、要求は以下の2つの規則が遵守されれば任意の順序で処理できる。第1に、プロセッサにアクセス権を授与する要求はプロセッサからのアクセス権を取り消すより古い要求より先にそのプロセッサによって処理できない。第2に、同じキャッシュ・ラインを参照するすべての要求はプロセッサへの到着順に処理される。上記の規則で、アクセス権の授与と取り消しは要求を処理するプロセッサから確認できる。例えば、ある種の要求は1つのプロセッサにアクセス権を授与する一方で他のプロセッサのアクセス権を取り消すことができる。ただし、これらの規則は要求を処理するプロセッサ内部で要求の効果として定義される。
【0016】
2つの規則は任意のキャッシュ・プロトコルに適用できる。ただし、図を見やすくするために、規則をMOSIキャッシュ・プロトコルに関して説明する。上記のように、プロセッサはローカルおよび外部要求を受信して処理する。MOSIプロトコルでは、キャッシュ・ラインのアクセス権の現在の状態と要求のタイプにもとづいてアクセス権を授与または取り消すことができる。特に、現在の状態が無効であるキャッシュ・ラインへの共用アクセスのローカル要求はアクセス権の授与を構成する。現在の状態が無効、共用、または所有のキャッシュ・ラインへの排他的アクセスのローカル要求もアクセス権の授与を構成する。現在の状態が変更のキャッシュ・ラインへの共用アクセスへの外部要求はアクセス権の取り消しを構成する。現在の状態が変更、共用、または所有のキャッシュ・ラインへの排他的アクセスの外部要求もアクセス権の取り消しを構成する。
【0017】
授与でも取り消しでもない要求があることに注目すべきである。そのような要求は現在の状態が共用、所有、または無効のキャッシュ・ラインへの共用アクセスの外部要求を含む。その他の要求は授与でも取り消しでもよい。例えば、ローカルReadStreamパケットは、無効であるキャッシュ・ラインの読み出し専用の複製を要求できる。このようにして、ローカルReadStreamパケットはキャッシュ・ラインを読み出すアクセス権を授与でき、したがって、キャッシュが読み出されるとそのアクセス権を取り消すことができる。アクセス権を授与も取り消しもしない要求とアクセス権の授与および取り消し要求は上記の規則に従う方法で処理できる。
【0018】
上記の規則を使用することで要求は順不同に処理でき、他のシステムより優れたパフォーマンスを提供できる。例えば、上記の規則では、アクセス権を取り消す要求はその要求がより古い要求と同じキャッシュ・ラインを参照していない限り、より古い要求より先に処理できる。同様に、アクセス権を授与する要求はその要求が任意のより古い要求と同じキャッシュ・ラインを参照していない限り、アクセス権を授与するより古い要求より先に処理できる。
【0019】
この規則を使用することの他のシステムより優れた1つの点は、キャッシュ間転送を含む。プロセッサがキャッシュ・ラインへのアクセス権を変更または所有した場合、プロセッサはキャッシュ・ラインに対応するデータを提供して共用または排他的アクセスの外部要求を満足する。プロセッサが外部要求より先に受信されたローカル要求を有する場合、外部要求に対応するデータを送信する前にローカル要求を満足するデータの到着を待つ必要はない。言い換えると、プロセッサはより古い要求を満足するデータの受信前に外部要求を満足するデータを送信できる。上記の規則に関して、ローカル要求がプロセッサに対してアクセス権を授与し、外部要求がプロセッサのアクセス権を取り消すことが分かる。したがって、プロセッサがより古い要求を完了する前にそのキャッシュから別のプロセッサのキャッシュへデータを送る時に、キャッシュ間転送が促進できる。このようにして、この規則の使用はデータのキャッシュ間転送を加速すると言える。
【0020】
上記の規則の使用の別の利点はローカル要求の並べ替えに関する。この規則では、異なるキャッシュ・ラインを要求が参照する限り、プロセッサにアクセス権を授与するより古い要求より先にアクセス権を授与するローカル要求を処理できる。したがって、1つのローカル要求のデータがより古い要求のデータより先に到着した場合、プロセッサはより古い要求を処理する前に最新の要求を処理できる。このようにして、ローカル要求は促進された方法で処理され、他のシステムより優れたパフォーマンスを提供できる。
【0021】
上記の2つの例はマルチプロセッサ共用メモリ・システム内での上記規則の使用のパフォーマンスの利点を強調するためのものである。その他のパフォーマンスの利点も可能であり企図することができる。
【0022】
図2を参照すると、コンピュータ・システムの一実施形態のブロック図が示されている。これ以外の実施形態も可能であり企図できる。図2に、システム・メモリ100、プロセッサA110a、プロセッサB110b、プロセッサC110c、キャッシュA120a、キャッシュB120b、キャッシュC120c、アドレス・バス130、およびデータ・バス200が示されている。システム・メモリ100はアドレス・バス130とデータ・バス200に結合されている。プロセッサAはアドレス・バス130、データ・バス200、およびキャッシュA120aに結合されている。プロセッサBはアドレス・バス130、データ・バス200、およびキャッシュB120bに結合されている。プロセッサCはアドレス・バス130、データ・バス200、およびキャッシュC120cに結合されている。
【0023】
図2で、プロセッサA110a、プロセッサB110b、およびプロセッサC110cはシステム・メモリ100にアクセスして、システム・メモリ100から取り出したデータをそれぞれキャッシュA120a、キャッシュB120b、キャッシュC120c内に記憶するように構成できる。図2はプロセッサA110a、プロセッサB110b、およびプロセッサC110cを示しているが、その他のプロセッサをシステムに追加して別の方法でアドレス・バス130およびデータ・バス200に結合することができる。
【0024】
図2の実施形態は図1の上記のキャッシュ・プロトコル規則を使用するように構成できる。図2で、プロセッサおよびシステム・メモリ100はデータ・バス200上でデータを送ることでデータを提供するように構成できる。データ・バス200はブロードキャスト・ネットワークを含むと言うことができる。
【0025】
図3を参照すると、コンピュータ・システムの一実施形態のブロック図が示されている。これ以外の実施形態も可能であり企図できる。図3に、システム・メモリ100、プロセッサA110a、プロセッサB110b、プロセッサC110c、キャッシュA120a、キャッシュB120b、キャッシュC120c、およびアドレス/データ・バス300が示されている。システム・メモリ100はアドレス/データ・バス300に結合されている。プロセッサAはアドレス/データ・バス300およびキャッシュA120aに結合されている。プロセッサBはアドレス/データ・バス300およびキャッシュB120bに結合されている。プロセッサCはアドレス/データ・バス300およびキャッシュC120cに結合されている。
【0026】
図3で、プロセッサA110a、プロセッサB110b、およびプロセッサC110cはシステム・メモリ100にアクセスして、システム・メモリ100から取り出したデータをそれぞれキャッシュA120a、キャッシュB120b、キャッシュC120c内に記憶するように構成できる。図3はプロセッサA110a、プロセッサB110b、およびプロセッサC110cを示しているが、その他のプロセッサをシステムに追加して別の方法でアドレス/データ・バス300に結合することができる。
【0027】
図3の実施形態は図1の上記のキャッシュ・プロトコル規則を使用するように構成できる。図3で、プロセッサおよびシステム・メモリ100はアドレス/データ・バス300上でデータを送ることでデータを提供するように構成できる。アドレス/データ・バス300は、両方の要求、すなわちアドレス・パケットおよびデータを送信するように構成できるので、共用ブロードキャスト・ネットワークを含むと言うことができる。
【0028】
図4を参照すると、コンピュータ・システム内のアドレス・パケットを処理するように構成された装置の一実施形態のブロック図が示されている。これ以外の実施形態も可能であり企図できる。図4に、待ち行列410、待ち行列420、制御回路430、処理回路440、およびキャッシュ・タグ450が示されている。制御回路430は待ち行列410、待ち行列420、およびキャッシュ・タグ450に結合されている。処理回路440は待ち行列410および待ち行列420に結合されている。
【0029】
図4に図1の上記のキャッシュ・プロトコル規則を使用するように構成されたプロセッサ内の装置の一実施形態を示す。図4で、アドレス・パケットすなわち要求は制御回路430によって受信できる。制御回路430はアドレス・パケットがプロセッサに対してアクセス権を授与するか取り消すかを決定するように構成できる。また制御回路430は、アドレス・パケットがプロセッサ内のより古いアドレス・パケットと同じキャッシュ・ラインを参照するか否かを決定するように構成できる。次いで制御回路430は、アドレス・パケットを待ち行列410または420内に記憶するように構成できる。アドレス・パケットは待ち行列410または420からポッピングでき、上記のプロトコル規則に準拠する制御回路440によって処理できる。
【0030】
一実施形態では、制御回路430はアドレス・パケットを受信して、このパケットがプロセッサにアクセス権を授与するか否かを決定するように構成できる。制御回路430はプロセッサの現在のアクセス権をキャッシュ・タグ450から受信するように構成できる。一実施形態では、キャッシュ・タグ450は図1、図2、または図3に示すキャッシュの1つのようなキャッシュから提供できる、別の実施形態では、キャッシュ・タグ450はプロセッサ内に位置することができる。制御回路430はキャッシュ・タグ450から受信した現在のアクセス権をアドレス・パケット内に具体化された要求のタイプと比較してアドレス・パケットがプロセッサにアクセス権を授与するか否かを決定するように構成できる。アクセス権の授与と取り消しの両方を行うアドレス・パケット、例えば、ローカルReadStreamアドレス・パケットは、プロセッサにアクセス権を授与する。制御回路430がアドレス・パケットがプロセッサにアクセス権を授与するよう決定した場合、制御回路430はアドレス・パケットを待ち行列420に送るように構成できる。待ち行列420はアドレス・パケットを記憶するように構成できる。
【0031】
制御回路430はまた、アドレス・パケットが待ち行列420内に記憶されたアドレス・パケットと同じキャッシュ・ラインを参照するか否かを決定するように構成できる。制御回路430は、アドレス・パケットによって参照されるキャッシュ・ラインを待ち行列420内のアドレス・パケットによって参照されるキャッシュ・ラインと比較するように構成できる。制御回路430が待ち行列420内に記憶されたアドレス・パケットと同じキャッシュ・ラインを参照するよう決定した場合、制御回路430はアドレス・パケットを待ち行列420に送るように構成でき、待ち行列420はアドレス・パケットを記憶するように構成できる。
【0032】
制御回路430がアドレス・パケットがプロセッサにアクセス権を授与せず、アドレス・パケットが待ち行列420内に記憶されたアドレス・パケットと同じキャッシュ・ラインを参照しないよう決定した場合、制御回路430はアドレス・パケットを待ち行列410に送るように構成でき、待ち行列410はアドレス・パケットを記憶するように構成できる。プロセッサにアクセス権を授与しないアドレス・パケットはアクセス権を取り消すことができるか、またはアクセス権を授与することも取り消すこともできない。
【0033】
処理回路440は待ち行列410および420からアドレス・パケットを受信するように構成できる。一実施形態では、待ち行列410および420は厳密な先入れ先出し(FIFO)待ち行列である。この実施形態では、処理回路440は待ち行列410および420の先頭からアドレス・パケットを受信して処理するように構成できる。処理回路440は図1に示すプロトコル規則に準拠した順序で待ち行列410および420の先頭からアドレス・パケットを受信できることが分かる。一実施形態では、処理回路440は待ち行列420の先頭からアドレス・パケットを受信しようとする前に待ち行列410の先頭からアドレス・パケットを受信しようとするように構成できる。待ち行列410が空き状態か、処理回路440が待ち行列420の先頭のアドレス・パケットが待ち行列410の先頭のアドレス・パケットより古いと判定した場合、処理回路440は待ち行列420の先頭のアドレス・パケットを受信するように構成できる。別の実施形態では、処理回路440はプロトコル規則に準拠した他の方法でアドレス・パケットを待ち行列410と待ち行列420のどちらから受信するか決定するように構成できる。
【0034】
前述したように、待ち行列420はアクセス権を授与するアドレス・パケットと待ち行列420内に記憶されたより早いアドレス・パケットと同じキャッシュ・ラインを参照するアドレス・パケットとを含む。待ち行列410はアクセス権を授与しないアドレス・パケットと、待ち行列420内に記憶されたより早いアドレス・パケットと、同じキャッシュ・ラインを参照しないアドレス・パケットとを含む。この実施形態では待ち行列410と待ち行列420はFIFO待ち行列なので、アクセス権を授与しないが待ち行列420内のより早いアドレス・パケットと同じキャッシュ・ラインを参照するアドレス・パケットはより早いアドレス・パケットの後で処理される。したがって、アドレス・パケットはプロトコル規則に準拠した待ち行列410および420の先頭からポッピングして処理できる。特に、待ち行列410内のアドレス・パケットはプロトコル規則に違反することなく待ち行列420内のより古いアドレス・パケットより先に処理できる。このようにして、外部要求は待ち行列410内に記憶され、より古いローカル要求は待ち行列420内に記憶されるので、プロセッサからのデータを必要とする多数の外部要求はデータ待ち状態のより古いローカル要求より先に処理できる。したがって、図4に示す実施形態は図1に示すキャッシュ間転送を加速することができるので有利である。
【0035】
別の実施形態では、待ち行列420はFIFO待ち行列に対応しなくてもよい。この実施形態では、待ち行列410内のより早いアドレス・パケットより先に処理されない限り、また同じキャッシュ・ラインを参照する待ち行列410または待ち行列420内のより早いアドレス・パケットより先に処理されない限り、待ち行列420からのアドレス・パケットは任意の順序で処理できる。この実施形態では、処理回路440はこれらの条件を強制するように構成できる。その結果、処理回路440は待ち行列420からのより古いアドレス・パケットを処理する前に待ち行列420からのアドレス・パケットを処理するように構成できる。このようにして、データを受信するローカル要求はデータ待ち状態のより古いローカル要求より先に処理できる。前述したように、この実施形態はまた有利なことにキャッシュ間転送を加速できる。
【0036】
図5を参照すると、アドレス・パケットを処理する方法の流れ図が示されている。この方法の変更も可能であり企図できる。この方法はブロック500に示すようにプロセッサ内のアドレス・パケットを受信するステップを含む。ブロック502で、アドレス・パケットがプロセッサにアクセス権を授与するか否かを決定できる。アドレス・パケットがプロセッサにアクセス権を授与する場合、ブロック506に示すようにアドレス・パケットを第1の待ち行列内に記憶することができる。アドレス・パケットがプロセッサにアクセス権を授与しない場合、ブロック504に示すように、アドレス・パケットが第1の待ち行列内のアドレス・パケットと同じキャッシュ・ラインを参照するか否かを決定できる。アドレス・パケットが第1の待ち行列内のアドレス・パケットと同じキャッシュ・ラインを参照する場合、ブロック506に示すようにアドレス・パケットを第1の待ち行列内に記憶することができる。アドレス・パケットが第1の待ち行列内のアドレス・パケットと同じキャッシュ・ラインを参照しない場合、ブロック508に示すようにアドレス・パケットを第2の待ち行列内に記憶することができる。
【0037】
図6を参照すると、アドレス・パケットを処理できるか否かを決定する方法の流れ図が示されている。この方法の変更も可能であり企図できる。この方法はブロック600に示すようにプロセッサ内のアドレス・パケットを受信するステップを含む。ブロック602で、アドレス・パケットがプロセッサにアクセス権を授与するか否かを決定できる。アドレス・パケットがプロセッサにアクセス権を授与する場合、ブロック604に示すようにより古いアドレス・パケットがプロセッサのアクセス権を取り消すか否かを決定できる。図示のように、プロセッサのアクセス権を取り消す、より古いアドレス・パケットがなくなるまで流れ図の処理はブロック604にとどまる。プロセッサのアクセス権を取り消す、より古いアドレス・パケットがなくなった場合、ブロック606に示すように、より古いアドレス・パケットがこのアドレス・パケットと同じキャッシュ・ラインを参照するか否かを決定できる。このアドレス・パケットと同じキャッシュ・ラインを参照する、より古いアドレス・パケットがなくなるまで流れ図の処理はブロック606にとどまる。このアドレス・パケットと同じキャッシュ・ラインを参照するより古いアドレス・パケットがなくなった場合、ブロック610に示すようにアドレス・パケットを処理することができる。
【0038】
アドレス・パケットがプロセッサにアクセス権を授与しない場合、ブロック608に示すように、より古いアドレス・パケットがそのアドレス・パケットと同じキャッシュ・ラインを参照するか否かを決定することができる。そのアドレス・パケットと同じキャッシュ・ラインを参照する、より古いアドレス・パケットがなくなるまで流れ図の処理はブロック608にとどまる。そのアドレス・パケットと同じキャッシュ・ラインを参照する、より古いアドレス・パケットがなくなった場合、ブロック610に示すように、そのアドレス・パケットを処理することができる。
【0039】
図6は図1に示すプロトコル規則に準拠したアドレス・パケットを処理する方法を示す。したがって、この方法は、マルチプロセッサ共用メモリ・システム内のキャッシュ間転送を加速し、アドレス・パケットの順不同の処理を促進するために使用できる。
【0040】
図7を参照すると、多数のノードを備えた共用メモリ・コンピュータ・システムの一実施形態を示すブロック図が示されている。これ以外の実施形態も可能であり企図できる。図7は、メモリ702a、メモリ702b、メモリ702c、スケーラブル共用メモリ(SSM)700a、SSM700b、SSM700c、プロセッサA1 710a、キャッシュA1 720a、プロセッサA2 710b、キャッシュA2 720b、プロセッサB1 730a、キャッシュB 740a、プロセッサB2 730b、キャッシュB2 740b、プロセッサC1 750a、キャッシュC1 760a、プロセッサC2 750b、キャッシュC2 760bを示す。SSM700a、SSM700b、およびSSM700cはアドレス・バス708およびデータ・バス706に結合されている。プロセッサA1 710aおよびプロセッサA2 710bはアドレス・バス718とデータ・バス716とを介してSSM700aおよびメモリ702aに結合されている。プロセッサB1 730aおよびプロセッサB2 730bはアドレス・バス738とデータ・バス736とを介してSSM700およびメモリ702bに結合されている。プロセッサC1 750aおよびプロセッサC2 750bはアドレス・バス758とデータ・バス756とを介してSSM700cおよびメモリ702cに結合されている。図7に示すように、さまざまなキャッシュがさまざまなプロセッサに結合されている。図7で、メモリ702a、プロセッサA1 710a、キャッシュA1 720a、プロセッサA2 710b、キャッシュA2 720b、およびSSM700aをノードAの構成要素と呼ぶことができる。メモリ702b、プロセッサB1 730a、キャッシュB1 740a、プロセッサB2 730b、キャッシュB2 740b、およびSSM700bをノードBの構成要素と呼ぶことができる。メモリ702c、プロセッサC1 750a、キャッシュC1 760a、プロセッサC2 750b、キャッシュC2 760b、およびSSM700cをノードCの構成要素と呼ぶことができる。
【0041】
図7はマルチノード共用メモリ・コンピュータ・システムを示す。図示のように、図7は各々多数のプロセッサを含むノードA、ノードB、およびノードCを含む。別の実施形態では任意の数のプロセッサを備えた他のノードを含むことができる。さらに、図示のブロードキャスト・ネットワーク・アドレス・バスおよびデータ・バスの代わりにポイント・ツー・ポイント交換ネットワークまたは共用ブロードキャスト・ネットワークを含むように1つまたは複数のノードを構成することができる。
【0042】
図7の実施形態では、図1で前述したキャッシュ・プロトコル規則を使用するようにプロセッサを構成できる。その結果、プロトコル規則に準拠した図7のプロセッサ内で任意の順序で要求を処理できる。図7で、SSMはそれぞれのノード内のプロセッサから要求を受信するように構成できる。SSMは他のSSMに要求を送って自ノード内の他のプロセッサまたはメモリによって満足できない自ノード内のプロセッサからの要求を満足するように構成できる。またSSMは別のSSMからの要求に対応するデータを返送するために自ノード内のプロセッサとメモリに要求を送るように構成できる。このようにして、図1の上記利点は個々のノードとシステム全体の両方で達成できる。
【0043】
上記の実施形態について詳述してきたが、これ以外のバージョンも可能である。上記開示を十分に理解すれば、本発明をさまざまに変更および修正できることは当業者には明らかであろう。そのような変更および修正はすべて首記の請求の範囲に含まれる。
【図面の簡単な説明】
【図1】コンピュータ・システムの一実施形態を示すブロック図である。
【図2】コンピュータ・システムの一実施形態を示すブロック図である。
【図3】コンピュータ・システムの一実施形態を示すブロック図である。
【図4】コンピュータ・システム内のアドレス・パケットを処理するように構成された装置の一実施形態を示すブロック図である。
【図5】アドレス・パケットを処理する方法を示す流れ図である。
【図6】アドレス・パケットを処理できるか否かを判定する方法を示す流れ図である。
【図7】多数のノードを備えた共用メモリ・コンピュータ・システムの一実施形態を示すブロック図である。
本発明は、一般にコンピュータ・システムの分野に関し、より詳細には、多数のプロセッサを備えたコンピュータ・システム内のキャッシュ間転送の加速に関する。
【0002】
(従来の技術)
データ処理システムは共通のシステム・メモリを共用する多数のプロセッサを含むことが多い。本明細書内で使用するプロセッサという用語はシステム・メモリを使用する活動状態の装置を指すために使用している。プロセッサはマイクロプロセッサ、入出力ブリッジ、グラフィックス装置、周辺装置、またはシステム・メモリへの読み書きを行うその他の装置を含んでいてもよい。データ処理システム内のプロセッサはパフォーマンスを向上させるキャッシュを含むことが多い。マルチプロセッサ・システム内のキャッシュはキャッシュ・ラインごとにキャッシュ・タグを含むであろう。キャッシュ・タグは対応するプロセッサのアクセス権と所有権の責任とを指定できる。
【0003】
マルチプロセッサ共用メモリ・システム内のキャッシュは、整合し、首尾一貫した方法で保持する必要がある。システム・メモリ内に記憶されたデータが異なるキャッシュ内に記憶されていてもすべてのプロセッサから確実に同一であることを明らかにするため、キャッシュ・プロトコル規則の組を使用することができる。キャッシュの整合性を確保する1つの方法は、標準のスヌープ・プロトコルを使用する方法である。標準のスヌープ・プロトコル内では、各プロセッサは装置のキャッシュ・ライン要求をアドレス・バス上のすべての他のプロセッサにブロードキャストする。次いで、各プロセッサは他のプロセッサからの要求を「スヌープ」し、キャッシュ・タグを更新し、かつ/または他のプロセッサへのキャッシュ・ラインに対応するデータを送ることで適宜応答する。標準のスヌープ・プロトコルでは、要求は同じ順序ですべてのプロセッサに到達し、各プロセッサは要求を到着順に処理する。要求がプロセッサの内部状態に影響する時には、プロセッサは要求を「処理する」と言うことができる。標準のスヌープ・プロトコルでは、要求はローカル要求と外部要求とを含む。ローカル要求はプロセッサ自体によって生成された要求を含み、一方、外部要求は他のプロセッサからの外部要求を含む。要求は通常キャッシュ・ラインをそのアドレスで指定するので、アドレス・パケットとも呼ばれる。アドレス・パケットはアドレス・ブロードキャストとも呼ばれる。要求、アドレス・パケット、およびアドレス・ブロードキャストという用語は本明細書では交換可能に使用される。
【0004】
要求をその到着順に処理しなければならないという要件は標準のスヌープ・プロトコルのパフォーマンスの不利な点と考えられる。特に、この要件はキャッシュ間のデータ転送を遅延させることがある。またこの要件はデータがローカル要求に対応し、それより早いローカル要求の対応するデータより先に到着した場合にプロセッサによって受信されたこのデータの処理を遅延させることがある。ローカル要求を処理する際、プロセッサはローカル要求に対応するデータが他の要求の処理前に到着するのを待つ。潜在的に、単一のプロセッサがそのデータを受信するのを多数のプロセッサが待っている場合がある。この状況はシステム内の望ましくない待ち時間を発生させることがある。ただし、プロセッサが到着したローカル要求の対応するデータに先立って他の要求を処理することができれば、後続の要求がプロセッサがデータを受信する前にローカル要求のキャッシュ・ラインへのプロセッサのアクセス権を取り消す場合、資源が枯渇する危険がある。システムに資源枯渇の問題を引き起こすことなく標準のキャッシュ整合性プロトコルの待ち時間を低減するシステムが必要である。
【0005】
(概要)
上記の問題はその大半が本明細書に記載の装置と方法によって解決する。一般に、マルチプロセッサ共用メモリ・システム内の要求の処理を促進する装置と方法が提供される。マルチプロセッサ共用メモリ・システムでは、要求は以下の2つの規則が遵守されれば任意の順序で処理できる。第1に、プロセッサにアクセス権を授与する要求はプロセッサからのアクセス権を取り消すより古い要求より先に処理できない。第2に、同じキャッシュ・ラインを参照するすべての要求は到着順に処理される。このようにして、要求を順不同に処理してキャッシュ間転送を加速することができる。特に、プロセッサがデータを提供することが必要な外部要求はデータ待ち状態の他のより古いローカル要求より先にそのプロセッサによって処理できる。さらに、古いローカル要求より先に新しいローカル要求を処理することもできる。その結果、本明細書に記載の装置と方法は有利なことにキャッシュ整合性プロトコルに関連する待ち時間を低減することでマルチプレクサ共用メモリ・システム内のパフォーマンスを向上させることができる。
【0006】
一実施態様では、プロセッサは上記の規則を実施する第1の待ち行列と第2の待ち行列とを含むことができる。第1および第2の待ち行列は先入れ先出し(FIFO)方式で運用できる。プロセッサは第1の待ち行列内のプロセッサにアクセス権を授与するアクセス・パケットを第1の待ち行列内に記憶できる。プロセッサは第2の待ち行列内に他のすべてのアドレス・パケットを記憶できる。データを必要とするアドレス・パケットはデータが到着するまで待ち行列の先頭にとどまることができる。プロセッサは任意の順序でいずれかの待ち行列の先頭からアドレス・パケットを処理するように構成できる。このようにして、データを必要とする外部パケットをデータ待ち状態のより古いローカル・パケットより先に処理できる。
【0007】
本発明のその他の特徴および有利な点は本発明の以下の詳細な説明を読み、添付の図面を参照することで明らかになろう。
【0008】
本発明をさまざまに改変し代替形態で実施できるが、本発明の特定の実施形態を図に示し、本明細書で詳述する。ただし、図面と詳細な説明は本発明を開示された特定の形態に限定するものではなく、本発明は首記の請求の範囲に記載の本発明の範囲を逸脱しないすべての修正形態、等効形態、および代替形態を包含するものである。
【0009】
(実施形態の詳細な説明)
図1を参照すると、コンピュータ・システムの一実施形態のブロック図が示されている。これ以外の実施形態も可能であり企図できる。図1に、システム・メモリ100、プロセッサA110a、プロセッサB110b、プロセッサC100c、キャッシュA120a、キャッシュB120b、キャッシュC120c、アドレス・バス130、データ・バス140a、データ・バス140b、データ・バス140c、およびデータ・バス・スイッチ150が示されている。システム・メモリ100はアドレス・バス130とデータ・バス・スイッチ150に結合されている。プロセッサAはアドレス・バス130、データ・バス140a、およびキャッシュA120aに結合されている。プロセッサBはアドレス・バス130、データ・バス140b、およびキャッシュB120bに結合されている。プロセッサCはアドレス・バス130、データ・バス140c、およびキャッシュC120cに結合されている。
【0010】
図1で、プロセッサA110a、プロセッサB110b、およびプロセッサC110cはシステム・メモリ100にアクセスして、システム・メモリ100から取り出したデータをそれぞれキャッシュA120a、キャッシュB120b、キャッシュC120c内に記憶するように構成されている。上記のように、プロセッサという用語はシステム・メモリを使用する活動状態の装置を指すために使用できる。プロセッサはマイクロプロセッサ、入出力ブリッジ、グラフィックス装置、周辺装置、またはシステム・メモリへの読み書きを行うその他の装置を含むことができる。図1はプロセッサA110a、プロセッサB110b、およびプロセッサC110cを示しているが、その他のプロセッサをシステムに追加して別の方法でアドレス・バス130およびデータ・バス・スイッチ150に結合することができる。図1、図2、および図3の説明では、プロセッサA110a、プロセッサB110b、およびプロセッサC110cを個々に「プロセッサ」または集合的に「プロセッサ」と呼ぶことがある。同様に、キャッシュA120a、キャッシュB120b、およびキャッシュC120cを個々に「キャッシュ」または集合的に「キャッシュ」と呼ぶことがある。
【0011】
スヌープ・ベースのキャッシュ整合性プロトコルを使用するように構成された一実施形態では、プロセッサはアドレス・バス130上でデータ要求を送るように構成できる。上記のように、要求はアドレス・パケットまたはアドレス・ブロードキャストと呼ぶことができる。各プロセッサはすべての他のプロセッサの要求を受信するように構成できる。図1の実施形態では、アドレス・バス130は、アドレス・バス130上で送られる各要求が各プロセッサおよびシステム・メモリ100によって受信できるようにブロードキャスト・ネットワークを含むと言うことができる。プロセッサおよびシステム・メモリ100はシステムによって使用されるキャッシュ・プロトコルにもとづいて要求に応答するように構成できる。プロセッサはキャッシュ・プロトコルに従ってそのアクセス権を変更し、かつ/またはデータを提供することによって要求に応答できる。キャッシュ・プロトコルが、要求に応答してデータを提供することをプロセッサに要求しない場合、システム・メモリ100がデータを提供するように構成できる。図1で、プロセッサおよびシステム・メモリ100はデータをデータ・バス・スイッチ150に送ることで提供するように構成できる。データ・バス・スイッチ150は、プロセッサまたはシステム・メモリからのデータ受信に応答して、データを適切なプロセッサまたはシステム・メモリ100に転送するように構成できる。図1の実施形態では、データ・バス・スイッチ150とデータ・バス140a、140b、および140cはポイント・ツー・ポイント交換ネットワークを含むということができる。
【0012】
図1の実施形態では、要求は、システム・メモリ100内のデータのアドレスを使用して得られたデータを識別するように構成されている。データ受信に応答して、プロセッサはそのキャッシュ内にデータを記憶するように構成できる。一実施形態では、データはそのアドレスに従ってキャッシュ内のある位置に記憶される。データをアドレスから特定のキャッシュ・ラインにマッピングするようにキャッシュを構成できる。その結果、各プロセッサのキャッシュはデータをそれぞれのキャッシュの同じ場所にマッピングするように構成される。したがって、プロセッサからのデータ要求はキャッシュ・ライン要求とも言え、プロセッサは要求のアドレスに対応するそのキャッシュ内のキャッシュ・ラインに従って要求に応答することができる。
【0013】
一実施形態では、図1のキャッシュはキャッシュ・ラインごとにキャッシュ・タグを含む。キャッシュ・タグはキャッシュ・ラインへのプロセッサのアクセス権を示すように構成される。キャッシュ・プロトコルは、プロセッサがキャッシュ・ラインへのどのようなアクセス権を有するか、またプロセッサが要求に応答してキャッシュ・ラインを提供しなければならないか否かを定義できる。一実施形態では、アクセス権は共用状態、排他状態、および無効状態を含む。一般に、プロセッサはそのアクセス権が共用状態または排他状態の場合、キャッシュ・ラインへのアクセス権を有すると言える。プロセッサのアクセス権が排他状態のとき、他のプロセッサはキャッシュ・ラインに書込みも読み込みもできない。プロセッサのアクセス権が共用状態の場合、別のプロセッサもキャッシュ・ラインを読み出せるように共用アクセス権を有することができる。キャッシュ・ラインへのプロセッサのアクセス権が無効状態の場合、プロセッサはキャッシュ・ラインの読み出しまたは書き込み前にキャッシュ・ラインへのアクセス権を得なければならない。
【0014】
一実施形態では、MOSIキャッシュ・プロトコルを使用できる。MOSIキャッシュ・プロトコルでは、キャッシュ・ラインへのプロセッサのアクセス権は変更、所有、共用、または無効状態である。変更状態では、プロセッサはキャッシュ・ラインを読み書きし、別のプロセッサからの要求に応答してキャッシュ・ラインのデータを提供できる。所有状態では、プロセッサはキャッシュ・ラインの読み出しはできるがそれへの書き込みはできない。所有状態では、プロセッサはやはり別のプロセッサからの要求に応答してキャッシュ・ラインのデータを提供できる。共用状態では、キャッシュ・ラインの読み出しはできるがそれへの書き込みはできず、別のプロセッサからの要求に応答してキャッシュ・ラインのデータを提供できない。無効状態では、プロセッサはキャッシュ・ラインの読み書きはできず、アクセスを得るために要求を送らなければならない。どのプロセッサも所有または変更状態のキャッシュ・ラインを持たないと、システム・メモリ100は要求に応答してキャッシュ・ラインを提供できる。その他のキャッシュ・プロトコルを実施するためにその他の実施形態を構成することができる。
【0015】
上記のように、標準のスヌープ・プロトコルは一般にプロセッサが要求を到着順に処理することを必要とする。要求がプロセッサの内部状態に影響する時には、プロセッサは要求を「処理する」と言うことができる。ただし、図1のシステムによって使用されるプロトコルでは、要求は以下の2つの規則が遵守されれば任意の順序で処理できる。第1に、プロセッサにアクセス権を授与する要求はプロセッサからのアクセス権を取り消すより古い要求より先にそのプロセッサによって処理できない。第2に、同じキャッシュ・ラインを参照するすべての要求はプロセッサへの到着順に処理される。上記の規則で、アクセス権の授与と取り消しは要求を処理するプロセッサから確認できる。例えば、ある種の要求は1つのプロセッサにアクセス権を授与する一方で他のプロセッサのアクセス権を取り消すことができる。ただし、これらの規則は要求を処理するプロセッサ内部で要求の効果として定義される。
【0016】
2つの規則は任意のキャッシュ・プロトコルに適用できる。ただし、図を見やすくするために、規則をMOSIキャッシュ・プロトコルに関して説明する。上記のように、プロセッサはローカルおよび外部要求を受信して処理する。MOSIプロトコルでは、キャッシュ・ラインのアクセス権の現在の状態と要求のタイプにもとづいてアクセス権を授与または取り消すことができる。特に、現在の状態が無効であるキャッシュ・ラインへの共用アクセスのローカル要求はアクセス権の授与を構成する。現在の状態が無効、共用、または所有のキャッシュ・ラインへの排他的アクセスのローカル要求もアクセス権の授与を構成する。現在の状態が変更のキャッシュ・ラインへの共用アクセスへの外部要求はアクセス権の取り消しを構成する。現在の状態が変更、共用、または所有のキャッシュ・ラインへの排他的アクセスの外部要求もアクセス権の取り消しを構成する。
【0017】
授与でも取り消しでもない要求があることに注目すべきである。そのような要求は現在の状態が共用、所有、または無効のキャッシュ・ラインへの共用アクセスの外部要求を含む。その他の要求は授与でも取り消しでもよい。例えば、ローカルReadStreamパケットは、無効であるキャッシュ・ラインの読み出し専用の複製を要求できる。このようにして、ローカルReadStreamパケットはキャッシュ・ラインを読み出すアクセス権を授与でき、したがって、キャッシュが読み出されるとそのアクセス権を取り消すことができる。アクセス権を授与も取り消しもしない要求とアクセス権の授与および取り消し要求は上記の規則に従う方法で処理できる。
【0018】
上記の規則を使用することで要求は順不同に処理でき、他のシステムより優れたパフォーマンスを提供できる。例えば、上記の規則では、アクセス権を取り消す要求はその要求がより古い要求と同じキャッシュ・ラインを参照していない限り、より古い要求より先に処理できる。同様に、アクセス権を授与する要求はその要求が任意のより古い要求と同じキャッシュ・ラインを参照していない限り、アクセス権を授与するより古い要求より先に処理できる。
【0019】
この規則を使用することの他のシステムより優れた1つの点は、キャッシュ間転送を含む。プロセッサがキャッシュ・ラインへのアクセス権を変更または所有した場合、プロセッサはキャッシュ・ラインに対応するデータを提供して共用または排他的アクセスの外部要求を満足する。プロセッサが外部要求より先に受信されたローカル要求を有する場合、外部要求に対応するデータを送信する前にローカル要求を満足するデータの到着を待つ必要はない。言い換えると、プロセッサはより古い要求を満足するデータの受信前に外部要求を満足するデータを送信できる。上記の規則に関して、ローカル要求がプロセッサに対してアクセス権を授与し、外部要求がプロセッサのアクセス権を取り消すことが分かる。したがって、プロセッサがより古い要求を完了する前にそのキャッシュから別のプロセッサのキャッシュへデータを送る時に、キャッシュ間転送が促進できる。このようにして、この規則の使用はデータのキャッシュ間転送を加速すると言える。
【0020】
上記の規則の使用の別の利点はローカル要求の並べ替えに関する。この規則では、異なるキャッシュ・ラインを要求が参照する限り、プロセッサにアクセス権を授与するより古い要求より先にアクセス権を授与するローカル要求を処理できる。したがって、1つのローカル要求のデータがより古い要求のデータより先に到着した場合、プロセッサはより古い要求を処理する前に最新の要求を処理できる。このようにして、ローカル要求は促進された方法で処理され、他のシステムより優れたパフォーマンスを提供できる。
【0021】
上記の2つの例はマルチプロセッサ共用メモリ・システム内での上記規則の使用のパフォーマンスの利点を強調するためのものである。その他のパフォーマンスの利点も可能であり企図することができる。
【0022】
図2を参照すると、コンピュータ・システムの一実施形態のブロック図が示されている。これ以外の実施形態も可能であり企図できる。図2に、システム・メモリ100、プロセッサA110a、プロセッサB110b、プロセッサC110c、キャッシュA120a、キャッシュB120b、キャッシュC120c、アドレス・バス130、およびデータ・バス200が示されている。システム・メモリ100はアドレス・バス130とデータ・バス200に結合されている。プロセッサAはアドレス・バス130、データ・バス200、およびキャッシュA120aに結合されている。プロセッサBはアドレス・バス130、データ・バス200、およびキャッシュB120bに結合されている。プロセッサCはアドレス・バス130、データ・バス200、およびキャッシュC120cに結合されている。
【0023】
図2で、プロセッサA110a、プロセッサB110b、およびプロセッサC110cはシステム・メモリ100にアクセスして、システム・メモリ100から取り出したデータをそれぞれキャッシュA120a、キャッシュB120b、キャッシュC120c内に記憶するように構成できる。図2はプロセッサA110a、プロセッサB110b、およびプロセッサC110cを示しているが、その他のプロセッサをシステムに追加して別の方法でアドレス・バス130およびデータ・バス200に結合することができる。
【0024】
図2の実施形態は図1の上記のキャッシュ・プロトコル規則を使用するように構成できる。図2で、プロセッサおよびシステム・メモリ100はデータ・バス200上でデータを送ることでデータを提供するように構成できる。データ・バス200はブロードキャスト・ネットワークを含むと言うことができる。
【0025】
図3を参照すると、コンピュータ・システムの一実施形態のブロック図が示されている。これ以外の実施形態も可能であり企図できる。図3に、システム・メモリ100、プロセッサA110a、プロセッサB110b、プロセッサC110c、キャッシュA120a、キャッシュB120b、キャッシュC120c、およびアドレス/データ・バス300が示されている。システム・メモリ100はアドレス/データ・バス300に結合されている。プロセッサAはアドレス/データ・バス300およびキャッシュA120aに結合されている。プロセッサBはアドレス/データ・バス300およびキャッシュB120bに結合されている。プロセッサCはアドレス/データ・バス300およびキャッシュC120cに結合されている。
【0026】
図3で、プロセッサA110a、プロセッサB110b、およびプロセッサC110cはシステム・メモリ100にアクセスして、システム・メモリ100から取り出したデータをそれぞれキャッシュA120a、キャッシュB120b、キャッシュC120c内に記憶するように構成できる。図3はプロセッサA110a、プロセッサB110b、およびプロセッサC110cを示しているが、その他のプロセッサをシステムに追加して別の方法でアドレス/データ・バス300に結合することができる。
【0027】
図3の実施形態は図1の上記のキャッシュ・プロトコル規則を使用するように構成できる。図3で、プロセッサおよびシステム・メモリ100はアドレス/データ・バス300上でデータを送ることでデータを提供するように構成できる。アドレス/データ・バス300は、両方の要求、すなわちアドレス・パケットおよびデータを送信するように構成できるので、共用ブロードキャスト・ネットワークを含むと言うことができる。
【0028】
図4を参照すると、コンピュータ・システム内のアドレス・パケットを処理するように構成された装置の一実施形態のブロック図が示されている。これ以外の実施形態も可能であり企図できる。図4に、待ち行列410、待ち行列420、制御回路430、処理回路440、およびキャッシュ・タグ450が示されている。制御回路430は待ち行列410、待ち行列420、およびキャッシュ・タグ450に結合されている。処理回路440は待ち行列410および待ち行列420に結合されている。
【0029】
図4に図1の上記のキャッシュ・プロトコル規則を使用するように構成されたプロセッサ内の装置の一実施形態を示す。図4で、アドレス・パケットすなわち要求は制御回路430によって受信できる。制御回路430はアドレス・パケットがプロセッサに対してアクセス権を授与するか取り消すかを決定するように構成できる。また制御回路430は、アドレス・パケットがプロセッサ内のより古いアドレス・パケットと同じキャッシュ・ラインを参照するか否かを決定するように構成できる。次いで制御回路430は、アドレス・パケットを待ち行列410または420内に記憶するように構成できる。アドレス・パケットは待ち行列410または420からポッピングでき、上記のプロトコル規則に準拠する制御回路440によって処理できる。
【0030】
一実施形態では、制御回路430はアドレス・パケットを受信して、このパケットがプロセッサにアクセス権を授与するか否かを決定するように構成できる。制御回路430はプロセッサの現在のアクセス権をキャッシュ・タグ450から受信するように構成できる。一実施形態では、キャッシュ・タグ450は図1、図2、または図3に示すキャッシュの1つのようなキャッシュから提供できる、別の実施形態では、キャッシュ・タグ450はプロセッサ内に位置することができる。制御回路430はキャッシュ・タグ450から受信した現在のアクセス権をアドレス・パケット内に具体化された要求のタイプと比較してアドレス・パケットがプロセッサにアクセス権を授与するか否かを決定するように構成できる。アクセス権の授与と取り消しの両方を行うアドレス・パケット、例えば、ローカルReadStreamアドレス・パケットは、プロセッサにアクセス権を授与する。制御回路430がアドレス・パケットがプロセッサにアクセス権を授与するよう決定した場合、制御回路430はアドレス・パケットを待ち行列420に送るように構成できる。待ち行列420はアドレス・パケットを記憶するように構成できる。
【0031】
制御回路430はまた、アドレス・パケットが待ち行列420内に記憶されたアドレス・パケットと同じキャッシュ・ラインを参照するか否かを決定するように構成できる。制御回路430は、アドレス・パケットによって参照されるキャッシュ・ラインを待ち行列420内のアドレス・パケットによって参照されるキャッシュ・ラインと比較するように構成できる。制御回路430が待ち行列420内に記憶されたアドレス・パケットと同じキャッシュ・ラインを参照するよう決定した場合、制御回路430はアドレス・パケットを待ち行列420に送るように構成でき、待ち行列420はアドレス・パケットを記憶するように構成できる。
【0032】
制御回路430がアドレス・パケットがプロセッサにアクセス権を授与せず、アドレス・パケットが待ち行列420内に記憶されたアドレス・パケットと同じキャッシュ・ラインを参照しないよう決定した場合、制御回路430はアドレス・パケットを待ち行列410に送るように構成でき、待ち行列410はアドレス・パケットを記憶するように構成できる。プロセッサにアクセス権を授与しないアドレス・パケットはアクセス権を取り消すことができるか、またはアクセス権を授与することも取り消すこともできない。
【0033】
処理回路440は待ち行列410および420からアドレス・パケットを受信するように構成できる。一実施形態では、待ち行列410および420は厳密な先入れ先出し(FIFO)待ち行列である。この実施形態では、処理回路440は待ち行列410および420の先頭からアドレス・パケットを受信して処理するように構成できる。処理回路440は図1に示すプロトコル規則に準拠した順序で待ち行列410および420の先頭からアドレス・パケットを受信できることが分かる。一実施形態では、処理回路440は待ち行列420の先頭からアドレス・パケットを受信しようとする前に待ち行列410の先頭からアドレス・パケットを受信しようとするように構成できる。待ち行列410が空き状態か、処理回路440が待ち行列420の先頭のアドレス・パケットが待ち行列410の先頭のアドレス・パケットより古いと判定した場合、処理回路440は待ち行列420の先頭のアドレス・パケットを受信するように構成できる。別の実施形態では、処理回路440はプロトコル規則に準拠した他の方法でアドレス・パケットを待ち行列410と待ち行列420のどちらから受信するか決定するように構成できる。
【0034】
前述したように、待ち行列420はアクセス権を授与するアドレス・パケットと待ち行列420内に記憶されたより早いアドレス・パケットと同じキャッシュ・ラインを参照するアドレス・パケットとを含む。待ち行列410はアクセス権を授与しないアドレス・パケットと、待ち行列420内に記憶されたより早いアドレス・パケットと、同じキャッシュ・ラインを参照しないアドレス・パケットとを含む。この実施形態では待ち行列410と待ち行列420はFIFO待ち行列なので、アクセス権を授与しないが待ち行列420内のより早いアドレス・パケットと同じキャッシュ・ラインを参照するアドレス・パケットはより早いアドレス・パケットの後で処理される。したがって、アドレス・パケットはプロトコル規則に準拠した待ち行列410および420の先頭からポッピングして処理できる。特に、待ち行列410内のアドレス・パケットはプロトコル規則に違反することなく待ち行列420内のより古いアドレス・パケットより先に処理できる。このようにして、外部要求は待ち行列410内に記憶され、より古いローカル要求は待ち行列420内に記憶されるので、プロセッサからのデータを必要とする多数の外部要求はデータ待ち状態のより古いローカル要求より先に処理できる。したがって、図4に示す実施形態は図1に示すキャッシュ間転送を加速することができるので有利である。
【0035】
別の実施形態では、待ち行列420はFIFO待ち行列に対応しなくてもよい。この実施形態では、待ち行列410内のより早いアドレス・パケットより先に処理されない限り、また同じキャッシュ・ラインを参照する待ち行列410または待ち行列420内のより早いアドレス・パケットより先に処理されない限り、待ち行列420からのアドレス・パケットは任意の順序で処理できる。この実施形態では、処理回路440はこれらの条件を強制するように構成できる。その結果、処理回路440は待ち行列420からのより古いアドレス・パケットを処理する前に待ち行列420からのアドレス・パケットを処理するように構成できる。このようにして、データを受信するローカル要求はデータ待ち状態のより古いローカル要求より先に処理できる。前述したように、この実施形態はまた有利なことにキャッシュ間転送を加速できる。
【0036】
図5を参照すると、アドレス・パケットを処理する方法の流れ図が示されている。この方法の変更も可能であり企図できる。この方法はブロック500に示すようにプロセッサ内のアドレス・パケットを受信するステップを含む。ブロック502で、アドレス・パケットがプロセッサにアクセス権を授与するか否かを決定できる。アドレス・パケットがプロセッサにアクセス権を授与する場合、ブロック506に示すようにアドレス・パケットを第1の待ち行列内に記憶することができる。アドレス・パケットがプロセッサにアクセス権を授与しない場合、ブロック504に示すように、アドレス・パケットが第1の待ち行列内のアドレス・パケットと同じキャッシュ・ラインを参照するか否かを決定できる。アドレス・パケットが第1の待ち行列内のアドレス・パケットと同じキャッシュ・ラインを参照する場合、ブロック506に示すようにアドレス・パケットを第1の待ち行列内に記憶することができる。アドレス・パケットが第1の待ち行列内のアドレス・パケットと同じキャッシュ・ラインを参照しない場合、ブロック508に示すようにアドレス・パケットを第2の待ち行列内に記憶することができる。
【0037】
図6を参照すると、アドレス・パケットを処理できるか否かを決定する方法の流れ図が示されている。この方法の変更も可能であり企図できる。この方法はブロック600に示すようにプロセッサ内のアドレス・パケットを受信するステップを含む。ブロック602で、アドレス・パケットがプロセッサにアクセス権を授与するか否かを決定できる。アドレス・パケットがプロセッサにアクセス権を授与する場合、ブロック604に示すようにより古いアドレス・パケットがプロセッサのアクセス権を取り消すか否かを決定できる。図示のように、プロセッサのアクセス権を取り消す、より古いアドレス・パケットがなくなるまで流れ図の処理はブロック604にとどまる。プロセッサのアクセス権を取り消す、より古いアドレス・パケットがなくなった場合、ブロック606に示すように、より古いアドレス・パケットがこのアドレス・パケットと同じキャッシュ・ラインを参照するか否かを決定できる。このアドレス・パケットと同じキャッシュ・ラインを参照する、より古いアドレス・パケットがなくなるまで流れ図の処理はブロック606にとどまる。このアドレス・パケットと同じキャッシュ・ラインを参照するより古いアドレス・パケットがなくなった場合、ブロック610に示すようにアドレス・パケットを処理することができる。
【0038】
アドレス・パケットがプロセッサにアクセス権を授与しない場合、ブロック608に示すように、より古いアドレス・パケットがそのアドレス・パケットと同じキャッシュ・ラインを参照するか否かを決定することができる。そのアドレス・パケットと同じキャッシュ・ラインを参照する、より古いアドレス・パケットがなくなるまで流れ図の処理はブロック608にとどまる。そのアドレス・パケットと同じキャッシュ・ラインを参照する、より古いアドレス・パケットがなくなった場合、ブロック610に示すように、そのアドレス・パケットを処理することができる。
【0039】
図6は図1に示すプロトコル規則に準拠したアドレス・パケットを処理する方法を示す。したがって、この方法は、マルチプロセッサ共用メモリ・システム内のキャッシュ間転送を加速し、アドレス・パケットの順不同の処理を促進するために使用できる。
【0040】
図7を参照すると、多数のノードを備えた共用メモリ・コンピュータ・システムの一実施形態を示すブロック図が示されている。これ以外の実施形態も可能であり企図できる。図7は、メモリ702a、メモリ702b、メモリ702c、スケーラブル共用メモリ(SSM)700a、SSM700b、SSM700c、プロセッサA1 710a、キャッシュA1 720a、プロセッサA2 710b、キャッシュA2 720b、プロセッサB1 730a、キャッシュB 740a、プロセッサB2 730b、キャッシュB2 740b、プロセッサC1 750a、キャッシュC1 760a、プロセッサC2 750b、キャッシュC2 760bを示す。SSM700a、SSM700b、およびSSM700cはアドレス・バス708およびデータ・バス706に結合されている。プロセッサA1 710aおよびプロセッサA2 710bはアドレス・バス718とデータ・バス716とを介してSSM700aおよびメモリ702aに結合されている。プロセッサB1 730aおよびプロセッサB2 730bはアドレス・バス738とデータ・バス736とを介してSSM700およびメモリ702bに結合されている。プロセッサC1 750aおよびプロセッサC2 750bはアドレス・バス758とデータ・バス756とを介してSSM700cおよびメモリ702cに結合されている。図7に示すように、さまざまなキャッシュがさまざまなプロセッサに結合されている。図7で、メモリ702a、プロセッサA1 710a、キャッシュA1 720a、プロセッサA2 710b、キャッシュA2 720b、およびSSM700aをノードAの構成要素と呼ぶことができる。メモリ702b、プロセッサB1 730a、キャッシュB1 740a、プロセッサB2 730b、キャッシュB2 740b、およびSSM700bをノードBの構成要素と呼ぶことができる。メモリ702c、プロセッサC1 750a、キャッシュC1 760a、プロセッサC2 750b、キャッシュC2 760b、およびSSM700cをノードCの構成要素と呼ぶことができる。
【0041】
図7はマルチノード共用メモリ・コンピュータ・システムを示す。図示のように、図7は各々多数のプロセッサを含むノードA、ノードB、およびノードCを含む。別の実施形態では任意の数のプロセッサを備えた他のノードを含むことができる。さらに、図示のブロードキャスト・ネットワーク・アドレス・バスおよびデータ・バスの代わりにポイント・ツー・ポイント交換ネットワークまたは共用ブロードキャスト・ネットワークを含むように1つまたは複数のノードを構成することができる。
【0042】
図7の実施形態では、図1で前述したキャッシュ・プロトコル規則を使用するようにプロセッサを構成できる。その結果、プロトコル規則に準拠した図7のプロセッサ内で任意の順序で要求を処理できる。図7で、SSMはそれぞれのノード内のプロセッサから要求を受信するように構成できる。SSMは他のSSMに要求を送って自ノード内の他のプロセッサまたはメモリによって満足できない自ノード内のプロセッサからの要求を満足するように構成できる。またSSMは別のSSMからの要求に対応するデータを返送するために自ノード内のプロセッサとメモリに要求を送るように構成できる。このようにして、図1の上記利点は個々のノードとシステム全体の両方で達成できる。
【0043】
上記の実施形態について詳述してきたが、これ以外のバージョンも可能である。上記開示を十分に理解すれば、本発明をさまざまに変更および修正できることは当業者には明らかであろう。そのような変更および修正はすべて首記の請求の範囲に含まれる。
【図面の簡単な説明】
【図1】コンピュータ・システムの一実施形態を示すブロック図である。
【図2】コンピュータ・システムの一実施形態を示すブロック図である。
【図3】コンピュータ・システムの一実施形態を示すブロック図である。
【図4】コンピュータ・システム内のアドレス・パケットを処理するように構成された装置の一実施形態を示すブロック図である。
【図5】アドレス・パケットを処理する方法を示す流れ図である。
【図6】アドレス・パケットを処理できるか否かを判定する方法を示す流れ図である。
【図7】多数のノードを備えた共用メモリ・コンピュータ・システムの一実施形態を示すブロック図である。
Claims (20)
- アドレス・バスとデータ・バスとに結合されたシステム・メモリと、
前記アドレス・バスと前記データ・バスとに結合された第1のプロセッサと、
前記第1のプロセッサに結合された第1のキャッシュと、
前記アドレス・バスと前記データ・バスとに結合された第2のプロセッサと、
前記第2のプロセッサに結合された第2のキャッシュとを含む装置であって、
前記第1のプロセッサが前記アドレス・バス上で第1のアドレス・パケットを送るように構成され、前記第2のプロセッサが前記第1のアドレス・パケットを受信するように構成され、前記第2のプロセッサが前記第1のアドレス・パケットを受信する前に第2のアドレス・パケットを受信するように構成され、前記第2のプロセッサが、前記第2のアドレス・パケットとは異なるキャッシュ・ラインを参照する前記第1のアドレス・パケットに応答し、また前記第2のプロセッサの第1のアクセス権を取り消すように構成されていない前記第2のアドレス・パケットに応答して前記第2のアドレス・パケットより先に前記第1のアドレス・パケットを処理するように構成された装置。 - 前記データがポイント・ツー・ポイント交換ネットワークを含む請求項1に記載の装置。
- 前記第2のプロセッサが、前記異なるキャッシュ・ラインを参照する前記第1のアドレス・パケットに応答し、第2のアクセス権を前記第2のプロセッサに授与するように構成されている前記第2のアドレス・パケットに応答し、また第3のアクセス権を前記プロセッサに授与するように構成されている前記第1のアドレス・パケットに応答して、前記第2のアドレス・パケットより先に前記第1のアドレス・パケットを処理するように構成された請求項1に記載の装置。
- 前記第2のプロセッサが前記第1のアドレス・パケットの処理に応答して前記データ・バス上でデータを送るように構成された請求項1に記載の装置。
- 前記第2のプロセッサが前記第2のアドレス・パケットと同じキャッシュ・ラインを参照する前記第1のアドレス・パケットに応答して前記第2のアドレス・パケットの後で前記第1のアドレス・パケットを処理するように構成された請求項1に記載の装置。
- 前記第1のプロセッサと前記第2のプロセッサがMOSIキャッシュ整合性プロトコルを使用する請求項1に記載の装置。
- 前記第2のアドレス・パケットが前記第2のプロセッサによって生成される請求項1に記載の装置。
- 第1の待ち行列と、
第2の待ち行列と、
前記第1の待ち行列と前記第2の待ち行列とに結合された制御回路とを含むプロセッサであって、
前記制御回路が第1のアドレス・パケットを受信するように構成され、前記制御回路が前記プロセッサにアクセス権を授与するように構成された前記第1のアドレス・パケットに応答して前記第1の待ち行列内に前記第1のアドレス・パケットを記憶するように構成され、前記制御回路が前記第1の待ち行列内に記憶された第2のアドレス・パケットと同じキャッシュ・ラインを参照する前記第1のアドレス・パケットに応答して前記第1の待ち行列内に前記第1のアドレス・パケットを記憶するように構成され、前記制御回路が、前記プロセッサに前記アクセス権を授与するように構成されていない前記第1のアドレス・パケットに応答し、また前記第2のアドレス・パケットと同じキャッシュ・ラインを参照しない前記第1のアドレス・パケットに応答して、前記第2の待ち行列内に前記第1のアドレス・パケットを記憶するように構成されたプロセッサ。 - 前記第1の待ち行列と前記第2の待ち行列とに結合された処理回路であって、前記第2の待ち行列内に記憶された前記第1のアドレス・パケットに応答して前記第2のアドレス・パケットの処理に先立って前記第1のアドレス・パケットを処理するように構成された処理回路をさらに含む請求項8に記載のプロセッサ。
- 前記処理回路が前記第1の待ち行列内に記憶された前記第1のアドレス・パケットに応答し、また前記第2のアドレス・パケットと同じキャッシュ・ラインを参照しない前記第1のアドレス・パケットに応答して、前記第2のアドレス・パケットの処理に先立って前記第1のアドレス・パケットを処理するように構成された請求項9に記載のプロセッサ。
- 前記第2の待ち行列が第3のアドレス・パケットを含み、前記処理回路が前記第2の待ち行列内に記憶された前記第1のアドレス・パケットに応答し、また前記第3のアドレス・パケットと同じ前記キャッシュ・ラインを参照しない前記第1のアドレス・パケットに応答して、前記第3のアドレス・パケットの処理に先立って前記第1のアドレス・パケットを処理するように構成された請求項9に記載のプロセッサ。
- 前記処理回路が前記第1の待ち行列内に記憶された前記第1のアドレス・パケットに応答して前記第1のアドレス・パケットの処理に先立って前記第3のアドレス・パケットを処理するように構成された請求項11に記載のプロセッサ。
- 前記プロセッサが前記第1のアドレス・パケットに応答してデータを別のプロセッサに送る請求項9に記載のプロセッサ。
- プロセッサ内の第1のアドレス・パケットを受信するステップと、
前記第1のアドレス・パケットの前記受信に先立ってプロセッサ内の第2のアドレス・パケットを受信するステップと、
前記第2のアドレス・パケットが前記プロセッサの第1のアクセス権を取り消すように構成されているか否かを決定するステップと、
前記第1のアドレス・パケットが前記第2のアドレス・パケットと同じキャッシュ・ラインを参照するか否かを決定するステップと、
前記プロセッサの前記第1のアクセス権を取り消すように構成されていない前記第2のアドレス・パケットに応答し、また前記第2のアドレス・パケットと同じ前記キャッシュ・ラインを参照しない前記第1のアドレス・パケットに応答して前記第2のアドレス・パケットに先立って前記第1のアドレス・パケットを処理するステップとを含む方法。 - 前記プロセッサに第2のアクセス権を授与するように構成された前記第1のアドレス・パケットに応答し、前記第2のアドレス・パケットと同じ前記キャッシュ・ラインを参照しない前記第1のアドレス・パケットに応答し、また前記プロセッサに第3のアクセス権を授与するように構成された前記第2のアドレス・パケットに応答して、前記第2のアドレス・パケットに先立って前記第1のアドレス・パケットを処理するステップをさらに含む請求項14に記載の方法。
- 前記第2のアドレス・パケットと同じ前記キャッシュ・ラインを参照する前記第1のアドレス・パケットに応答して前記第2のアドレス・パケットの後で前記第1のアドレス・パケットを処理するステップをさらに含む請求項15に記載の方法。
- 前記第1のアドレス・パケットの処理に応答して前記プロセッサからデータを送るステップをさらに含む請求項14に記載の方法。
- 前記プロセッサに第2のアクセス権を授与するように構成された前記第1のアドレス・パケットに応答して第1の待ち行列内に前記第1のアドレス・パケットを記憶するステップと、
前記第2のアドレス・パケットと同じ前記キャッシュ・ラインを参照する前記第1のアドレス・パケットに応答して前記第1の待ち行列内に前記第1のアドレス・パケットを記憶するステップと、
前記プロセッサに前記第2のアクセス権を授与するように構成されていない前記第1のアドレス・パケットに応答し、また前記第2のアドレス・パケットと同じ前記キャッシュ・ラインを参照しない前記第1のアドレス・パケットに応答して第2の待ち行列内に前記第1のアドレス・パケットを記憶するステップとをさらに含む請求項14に記載の方法。 - 第1のプロセッサと、
前記第1のプロセッサに結合された第1のキャッシュと、
第2のプロセッサと、
前記第2のプロセッサに結合された第2のキャッシュとを含むコンピュータ・システムであって、
前記第1のプロセッサがローカル要求を受信するように構成され、前記第1のプロセッサが前記ローカル要求の受信後に前記第2のプロセッサから外部要求を受信するように構成され、前記第1のプロセッサが前記ローカル要求に対応するデータの受信に先立って前記外部要求に対応するデータを送るように構成されたコンピュータ・システム。 - 第1のプロセッサと、
前記第1のプロセッサに結合された第1のキャッシュと、
第2のプロセッサと、
前記第2のプロセッサに結合された第2のキャッシュとを含むコンピュータ・システムであって、
前記第1のプロセッサが第2のローカル要求の受信に先立って第1のローカル要求受信するように構成され、前記第1のプロセッサが前記第2のローカル要求に対応するデータの受信に応答して前記第1のローカル要求の処理に先立って前記第2のローカル要求を処理するように構成されたコンピュータ・システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/365,159 US6484240B1 (en) | 1999-07-30 | 1999-07-30 | Mechanism for reordering transactions in computer systems with snoop-based cache consistency protocols |
PCT/US2000/020198 WO2001009728A1 (en) | 1999-07-30 | 2000-07-25 | Mechanism for reordering transactions in computer systems with snoop-based cache consistency protocols |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004507800A true JP2004507800A (ja) | 2004-03-11 |
Family
ID=23437710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001514672A Pending JP2004507800A (ja) | 1999-07-30 | 2000-07-25 | スヌープ・ベースのキャッシュ整合性プロトコルでコンピュータ・システム内のトランザクションを並べ替える機構 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6484240B1 (ja) |
EP (1) | EP1200897B1 (ja) |
JP (1) | JP2004507800A (ja) |
AT (1) | ATE433156T1 (ja) |
AU (1) | AU6372300A (ja) |
DE (1) | DE60042332D1 (ja) |
WO (1) | WO2001009728A1 (ja) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1483672A4 (en) * | 2002-02-28 | 2008-03-26 | Silicon Graphics Inc | METHOD AND SYSTEM FOR CACHED MEMORY COHERENCE IN A MULTIPROCESSOR SYSTEM WITHOUT INCREASING THE SHARING VECTOR |
US6970979B2 (en) * | 2002-06-28 | 2005-11-29 | Sun Microsystems, Inc. | System with virtual address networks and split ownership and access right coherence mechanism |
US6970980B2 (en) * | 2002-06-28 | 2005-11-29 | Sun Microsystems, Inc. | System with multicast invalidations and split ownership and access right coherence mechanism |
US6928519B2 (en) * | 2002-06-28 | 2005-08-09 | Sun Microsystems, Inc. | Mechanism for maintaining cache consistency in computer systems |
US6973545B2 (en) * | 2002-06-28 | 2005-12-06 | Sun Microsystems, Inc. | System with a directory based coherency protocol and split ownership and access right coherence mechanism |
EP1658570A1 (en) * | 2003-08-19 | 2006-05-24 | Koninklijke Philips Electronics N.V. | Method of caching data assets |
US8145847B2 (en) * | 2004-01-20 | 2012-03-27 | Hewlett-Packard Development Company, L.P. | Cache coherency protocol with ordering points |
US20050160238A1 (en) * | 2004-01-20 | 2005-07-21 | Steely Simon C.Jr. | System and method for conflict responses in a cache coherency protocol with ordering point migration |
US7769959B2 (en) | 2004-01-20 | 2010-08-03 | Hewlett-Packard Development Company, L.P. | System and method to facilitate ordering point migration to memory |
US7620696B2 (en) * | 2004-01-20 | 2009-11-17 | Hewlett-Packard Development Company, L.P. | System and method for conflict responses in a cache coherency protocol |
US8176259B2 (en) | 2004-01-20 | 2012-05-08 | Hewlett-Packard Development Company, L.P. | System and method for resolving transactions in a cache coherency protocol |
US7818391B2 (en) | 2004-01-20 | 2010-10-19 | Hewlett-Packard Development Company, L.P. | System and method to facilitate ordering point migration |
US8090914B2 (en) * | 2004-01-20 | 2012-01-03 | Hewlett-Packard Development Company, L.P. | System and method for creating ordering points |
US8468308B2 (en) * | 2004-01-20 | 2013-06-18 | Hewlett-Packard Development Company, L.P. | System and method for non-migratory requests in a cache coherency protocol |
US7167956B1 (en) * | 2004-05-03 | 2007-01-23 | Sun Microsystems, Inc. | Avoiding inconsistencies between multiple translators in an object-addressed memory hierarchy |
US7783843B2 (en) * | 2005-05-16 | 2010-08-24 | Hewlett-Packard Development Company, L.P. | Bus interface adapted to coalesce snoop responses |
US7490184B2 (en) * | 2005-06-08 | 2009-02-10 | International Business Machines Corporation | Systems and methods for data intervention for out-of-order castouts |
JP4208895B2 (ja) * | 2006-05-30 | 2009-01-14 | 株式会社東芝 | キャッシュメモリ装置および処理方法 |
US8706925B2 (en) * | 2011-08-30 | 2014-04-22 | Apple Inc. | Accelerating memory operations blocked by ordering requirements and data not yet received |
US9817693B2 (en) | 2014-03-14 | 2017-11-14 | International Business Machines Corporation | Coherence protocol augmentation to indicate transaction status |
US10282109B1 (en) * | 2016-09-15 | 2019-05-07 | Altera Corporation | Memory interface circuitry with distributed data reordering capabilities |
EP3637272A4 (en) * | 2017-06-26 | 2020-09-02 | Shanghai Cambricon Information Technology Co., Ltd | DATA-SHARING SYSTEM AND RELATED DATA-SHARING PROCESS |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5432918A (en) | 1990-06-29 | 1995-07-11 | Digital Equipment Corporation | Method and apparatus for ordering read and write operations using conflict bits in a write queue |
US6311286B1 (en) * | 1993-04-30 | 2001-10-30 | Nec Corporation | Symmetric multiprocessing system with unified environment and distributed system functions |
US5778434A (en) * | 1995-06-07 | 1998-07-07 | Seiko Epson Corporation | System and method for processing multiple requests and out of order returns |
US5652859A (en) | 1995-08-17 | 1997-07-29 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues |
US5778438A (en) | 1995-12-06 | 1998-07-07 | Intel Corporation | Method and apparatus for maintaining cache coherency in a computer system with a highly pipelined bus and multiple conflicting snoop requests |
US5893160A (en) | 1996-04-08 | 1999-04-06 | Sun Microsystems, Inc. | Deterministic distributed multi-cache coherence method and system |
US6253291B1 (en) | 1998-02-13 | 2001-06-26 | Sun Microsystems, Inc. | Method and apparatus for relaxing the FIFO ordering constraint for memory accesses in a multi-processor asynchronous cache system |
US6189088B1 (en) * | 1999-02-03 | 2001-02-13 | International Business Machines Corporation | Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location |
-
1999
- 1999-07-30 US US09/365,159 patent/US6484240B1/en not_active Expired - Lifetime
-
2000
- 2000-07-25 AT AT00950648T patent/ATE433156T1/de not_active IP Right Cessation
- 2000-07-25 WO PCT/US2000/020198 patent/WO2001009728A1/en active Application Filing
- 2000-07-25 DE DE60042332T patent/DE60042332D1/de not_active Expired - Fee Related
- 2000-07-25 JP JP2001514672A patent/JP2004507800A/ja active Pending
- 2000-07-25 AU AU63723/00A patent/AU6372300A/en not_active Abandoned
- 2000-07-25 EP EP00950648A patent/EP1200897B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US6484240B1 (en) | 2002-11-19 |
WO2001009728A1 (en) | 2001-02-08 |
EP1200897B1 (en) | 2009-06-03 |
AU6372300A (en) | 2001-02-19 |
EP1200897A1 (en) | 2002-05-02 |
ATE433156T1 (de) | 2009-06-15 |
DE60042332D1 (de) | 2009-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10019366B2 (en) | Satisfying memory ordering requirements between partial reads and non-snoop accesses | |
JP2004507800A (ja) | スヌープ・ベースのキャッシュ整合性プロトコルでコンピュータ・システム内のトランザクションを並べ替える機構 | |
US7996625B2 (en) | Method and apparatus for reducing memory latency in a cache coherent multi-node architecture | |
EP0817074B1 (en) | Multiprocessing system employing a three-hop communication protocol | |
US8205045B2 (en) | Satisfying memory ordering requirements between partial writes and non-snoop accesses | |
JP3987162B2 (ja) | 読取り−共有トランザクションのための強化ブロッキング・メカニズムを含むマルチプロセス・システム | |
US6832282B2 (en) | System and method for providing forward progress and avoiding starvation and livelock in a multiprocessor computer system | |
EP0817070B1 (en) | Multiprocessing system employing a coherency protocol including a reply count | |
US20020147869A1 (en) | System and method of increasing bandwidth for issuing ordered transactions into a distributed communication system | |
US20050228952A1 (en) | Cache coherency mechanism | |
WO2011041095A2 (en) | Memory mirroring and migration at home agent | |
JP4673585B2 (ja) | メモリシステム制御装置およびメモリシステム制御方法 | |
JP2009176179A (ja) | キャッシュコヒーレンシ制御方法 | |
US7159079B2 (en) | Multiprocessor system | |
JPH07152647A (ja) | 共有メモリマルチプロセッサ | |
US20030126341A1 (en) | Method and apparatus for eliminating the software generated ready-signal to hardware devices that are not part of the memory coherency domain | |
US6826643B2 (en) | Method of synchronizing arbiters within a hierarchical computer system | |
JP2002024007A (ja) | プロセッサシステム | |
US6735654B2 (en) | Method and apparatus for efficiently broadcasting transactions between an address repeater and a client | |
JP4129578B2 (ja) | トランザクションを第1アドレスリピータと第2アドレスリピータとの間で効果的に同報通信するための方法および装置 | |
US20020133652A1 (en) | Apparatus for avoiding starvation in hierarchical computer systems that prioritize transactions |