JP2018508894A - マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス - Google Patents

マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス Download PDF

Info

Publication number
JP2018508894A
JP2018508894A JP2017542831A JP2017542831A JP2018508894A JP 2018508894 A JP2018508894 A JP 2018508894A JP 2017542831 A JP2017542831 A JP 2017542831A JP 2017542831 A JP2017542831 A JP 2017542831A JP 2018508894 A JP2018508894 A JP 2018508894A
Authority
JP
Japan
Prior art keywords
entry
shared
single pointer
data block
array
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017542831A
Other languages
English (en)
Other versions
JP6343722B2 (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2018508894A publication Critical patent/JP2018508894A/ja
Application granted granted Critical
Publication of JP6343722B2 publication Critical patent/JP6343722B2/ja
Active 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories
    • 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
    • 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/0817Cache consistency protocols using directory methods
    • 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/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/314In storage network, e.g. network attached cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6032Way prediction in set-associative cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本発明は、マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法、ディレクトリキャッシュデバイス、マルチコアシステム及びディレクトリ記憶ユニットを開示する。この方法は、第1のプロセッサコアにより送信された第1のアクセス要求を受信するステップであり、第1のアクセス要求は、ディレクトリ内の第1のデータブロックに対応するエントリにアクセスするために使用されるステップと、第1のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する第1の単一ポインタエントリを有すると決定するステップと、第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた第1の共有エントリを有すると決定した場合、第1の共有エントリに従って、第1のデータブロックの複数の訪問者を決定するステップとを含む。本発明の実施例によれば、ディレクトリに占有される記憶リソースが低減されることが可能になる。

Description

本発明は、情報技術の分野に関し、より具体的には、マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法、ディレクトリキャッシュデバイス、マルチコアシステム及びディレクトリ記憶ユニットに関する。
マルチコア(Multi-Core)プロセッサ又は多コア(Many Core)プロセッサの用途には、データブロックがプロセッサ内の1つ以上のプロセッサコアによりアクセスされるいくつかのシナリオが存在する。このシナリオでは、データブロックは、通常では、1つ以上のプロセッサコアによりアクセスされるように、共有記憶空間に記憶される。データブロックへのアクセスを速めるために、データブロックのコピーが、データブロックにアクセスした1つ以上のプロセッサコア内のプライベートキャッシュ内に生成される(すなわち、データブロックは、プロセッサコア内の1つ以上のプライベートキャッシュに記憶される)。このように、データブロックにアクセスしたコアが再びデータブロックにアクセスする必要がある場合、コアは、コアのプライベートキャッシュ内のデータブロックを読み取りさえすればよい。データブロックのコピーは、1つ以上のプロセッサコア内にあり、アクセスされたプライベートキャッシュに記憶されているため、キャッシュ一貫性(Cache Coherence)問題と呼ばれるコピーの一貫性の問題を解決するように、複数のコア内のプライベートキャッシュ内にあるデータブロックのコピーの一貫性が維持される必要がある。キャッシュ一貫性問題を解決する基本的な原理は、コア内のデータブロックのコピーが変更された場合、他のコア内のデータブロックのコピーが更新される必要があること、或いはデータブロックが無効にされる必要があること(すなわち、データブロックが削除される)である。したがって、データブロックのコピーを記憶するマルチコアプロセッサ内のコアが決定される必要がある(すなわち、データブロックの訪問者が決定される)。
一般的に使用されるキャッシュ一貫性の解決策は、スヌーピング(snooping)に基づく一貫性の解決策と、ディレクトリに基づく一貫性の解決策とを含む。前者に関して、コア内のデータブロックのコピーが変更された場合、データブロックが変更されたことを示すブロードキャストメッセージが、データブロックのコピーが記憶されている他のコアに送信される必要があり、これにより、これらのコアに対してデータブロックのコピーを更新するように、或いはデータブロックを無効にするように命令する。後者に関して、データブロックのアクセスディレクトリが、データブロックの訪問者(すなわち、マルチコアプロセッサ内でデータブロックが記憶されているコア)リストを記録するために使用される。コア内のデータブロックのコピーが変更された場合、データブロックが変更されたことを示す通知メッセージが他の訪問者のみに送信される。プロセッサコアの数量は絶えず増加しているため、スヌーピングに基づく一貫性の解決策は、性能及び帯域幅のボトルネックに直面するが(メッセージのブロードキャストは、大量の処理リソース及び大量の帯域幅を占有する必要がある)、ディレクトリに基づく一貫性のプロトコルは、そのより良いスケーラビリティの理由で広く適用される。
従来のディレクトリに基づく一貫性の解決策では、データブロックの訪問者リストは、ベクトルの形式でディレクトリに記録される。N個のコアを含むマルチコアプロセッサシステムについては、ディレクトリ内の各ディレクトリエントリは、1つのNビットのベクトルを含み、ベクトル内の各ビットが1であるか否かは、N個のコア内にデータブロックのコピーが存在するか否かを示す。この機構では、ディレクトリエントリの数量は、コアの数量の増加と共に線形的に増加するが、データブロックのコピーを記憶するために使用されるキャッシュのサイズは、コアの数量の増加と共に増加しない。その結果、データブロックにより占有されるビットの数量に対してディレクトリにより占有されるビットの数量の比は、コアの数量の増加と共に増加する。したがって、ディレクトリを記憶するために使用される記憶空間がより大きくなり、これは、チップ上マルチコアプロセッサにおけるキャッシュ空間への課題をもたらす。
本発明の実施例は、データ訪問者ディレクトリにより占有される記憶リソースを低減することができる、マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法、ディレクトリキャッシュデバイス、マルチコアシステム及びディレクトリ記憶ユニットを提供する。
第1の態様によれば、マルチコアシステムに適用される、マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法が提供され、マルチコアシステムは、共有データキャッシュと複数のプロセッサコアとを含み、共有データキャッシュ内のデータブロックは、複数のプロセッサコアのうち少なくとも1つのプロセッサコアにコピーされ、マルチコアシステムは、データ訪問者ディレクトリを更に含み、データ訪問者ディレクトリは、共有データキャッシュ内のデータブロックの訪問者についての情報を記録するために使用され、データブロックの訪問者は、データブロックのコピーが記憶されているプロセッサコアであり、
ディレクトリは、単一ポインタエントリ配列と共有エントリ配列とを含み、単一ポインタエントリ配列内の各単一ポインタエントリは、データブロックの単一の訪問者についての情報を記録するため、或いは単一ポインタエントリと共有エントリ配列内の共有エントリとの間の関連付けについての情報を記録するために使用され、共有エントリ配列内の各共有エントリは、データブロックの複数の訪問者についての情報を記録するために使用され、
この方法は、
第1のプロセッサコアにより送信された第1のアクセス要求を受信するステップであり、第1のアクセス要求は、ディレクトリ内の第1のデータブロックに対応するエントリにアクセスするために使用されるステップと、
第1のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する第1の単一ポインタエントリを有すると決定するステップと、
第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた第1の共有エントリを有すると決定した場合、第1の共有エントリに従って、第1のデータブロックの複数の訪問者を決定するステップと
を含む。
第1の態様を参照して、第1の可能な実現方式では、単一ポインタエントリ配列内の単一ポインタエントリは、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すために更に使用され、この方法は、
第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた第1の共有エントリを有さないと決定した場合、第1の単一ポインタエントリに従って、第1のデータブロックの単一の訪問者、又は第1のデータブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを決定するステップ
を更に含む。
第1の態様又は第1の態様の第1の可能な実現方式を参照して、第2の可能な実現方式では、第1のプロセッサコアにより送信された第1のアクセス要求を受信した後に、この方法は、
第1のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する単一ポインタエントリを有さないと決定するステップと、
単一ポインタエントリ配列において、第1のデータブロックに対応する第1の単一ポインタエントリを第1のデータブロックに割り当て、第1のプロセッサコアについての情報を第1の単一ポインタエントリに記録するステップと
を更に含む。
第1の態様の第2の可能な実現方式を参照して、第3の可能な実現方式では、単一ポインタエントリ配列において、第1のデータブロックに対応する第1の単一ポインタエントリを第1のデータブロックに割り当て、第1のプロセッサコアについての情報を第1の単一ポインタエントリに記録するステップは、
単一ポインタエントリ配列が未使用の単一ポインタエントリを有する場合、第1の単一ポインタエントリとして、未使用の単一ポインタエントリから単一ポインタエントリを選択し、第1のプロセッサコアについての情報を記録するステップ、又は
単一ポインタエントリ配列が未使用の単一ポインタエントリを有さない場合、最長時間未使用の原理に従って、単一ポインタエントリを選択し、選択された単一ポインタエントリが共有エントリに関連付けられておらず、単一の訪問者についての情報を記録する場合、無効メッセージを記録された単一の訪問者に送信し、第1のプロセッサコアについての情報を選択された単一ポインタエントリに記録するステップ、又は
選択された単一ポインタエントリが共有エントリに関連付けられておらず、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示す場合、無効メッセージを全てのプロセッサコアにブロードキャストし、第1のプロセッサコアについての情報を選択された単一ポインタエントリに記録するステップ、又は
選択された単一ポインタエントリが共有エントリに関連付けられている場合、選択された単一ポインタエントリに関連付けられた共有エントリに従って、関連付けられた共有エントリに記録された複数の訪問者を決定し、無効メッセージを記録された複数の訪問者に送信し、第1のプロセッサコアについての情報を選択された単一ポインタエントリに記録するステップ
を含む。
第1の態様の第2又は第3の可能な実現方式を参照して、第4の可能な実現方式では、この方法は、
第2のプロセッサコアにより送信された第2のアクセス要求を受信するステップであり、第2のアクセス要求は、ディレクトリ内の第1のデータブロックに対応するエントリにアクセスするために使用されるステップと、
第2のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する第1の単一ポインタエントリを有すると決定するステップと、
第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた共有エントリを有さないと決定した場合、第1の単一ポインタエントリに従って、第1のデータブロックの単一の訪問者が第1のプロセッサコアであると決定するステップと、
共有エントリ配列内の第1の共有エントリを割り当て、第1の単一ポインタエントリと第1の共有エントリとの間に関連付け関係を確立し、第1のプロセッサコアについての情報及び第2のプロセッサコアについての情報を第1の共有エントリに記録するステップと
を更に含む。
第1の態様の第4の可能な実現方式を参照して、第5の可能な実現方式では、共有エントリ配列内の第1の共有エントリを割り当てるステップは、
共有エントリ配列が未使用の共有エントリを有する場合、第1の共有エントリとして、未使用の共有エントリから共有エントリを選択するステップ、又は
共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者についての情報を記録する共有エントリを有する場合、1つのみの訪問者についての情報を記録する共有エントリを選択し、訪問者についての記録された情報を、選択された共有エントリに関連付けられた単一ポインタエントリに書き込むステップ、又は
共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者についての情報を記録する共有エントリも有さない場合、最長時間未使用の原理に従って、共有エントリを選択し、選択された共有エントリに記録された訪問者の数量が所定の閾値より大きい場合、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すように、選択された共有エントリに関連付けられた単一ポインタエントリを設定し、或いは選択された共有エントリに記録された訪問者の数量が所定の閾値より大きくない場合、記録された訪問者のうち1つの訪問者についての情報を、選択された共有エントリに関連付けられた単一ポインタエントリに書き込み、無効メッセージを記録された訪問者のうち他の訪問者に送信するステップ
を含む。
第1の態様又は第1の態様の前述の可能な実現方式のいずれか1つを参照して、第6の可能な実現方式では、単一ポインタエントリは、タグと共有エントリ関連付けビットと単一ポインタとを含み、タグは、データブロックに対応させるために使用され、共有エントリ関連付けビットは、単一ポインタエントリが共有エントリに関連付けられているか否かを示すために使用され、単一ポインタは、データブロックが単一の訪問者を有する場合、データブロックの単一の訪問者についての情報を記録し、単一ポインタエントリが共有エントリに関連付けられている場合、単一ポインタエントリと共有エントリとの間の関連付けについての情報を記録するために使用され、
共有エントリは、共有者記録構造と関連付け構造とを含み、共有者記録構造は、データブロックの複数の訪問者についての情報を記録するために使用され、関連付け構造は、単一ポインタエントリを関連付けるために使用される。
第1の態様の第6の可能な実現方式を参照して、第7の可能な実現方式では、単一ポインタエントリは、全共有ビットを更に含み、全共有ビットは、単一ポインタエントリが共有エントリに関連付けられていない場合、データブロックが単一の訪問者を有することを示すため、或いはデータブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すために使用される。
第2の態様によれば、ディレクトリキャッシュデバイスが提供され、
マルチコアシステム内にあるデータ訪問者ディレクトリを記憶するように構成されたディレクトリ記憶ユニットであり、マルチコアシステムは、共有データキャッシュと複数のプロセッサコアとを含み、共有データキャッシュ内のデータブロックは、複数のプロセッサコアのうち少なくとも1つのプロセッサコアにコピーされ、ディレクトリは、共有データキャッシュ内のデータブロックの訪問者についての情報を記録するために使用され、データブロックの訪問者は、データブロックのコピーが記憶されているプロセッサコアであり、ディレクトリは、単一ポインタエントリ配列と共有エントリ配列とを含み、単一ポインタエントリ配列内の各単一ポインタエントリは、データブロックの単一の訪問者についての情報を記録するため、或いは単一ポインタエントリと共有エントリ配列内の共有エントリとの間の関連付けについての情報を記録するために使用され、共有エントリ配列内の各共有エントリは、データブロックの複数の訪問者についての情報を記録するために使用されるディレクトリ記憶ユニットと、
第1のプロセッサコアにより送信された第1のアクセス要求を受信するように構成され、第1のアクセス要求は、ディレクトリ内の第1のデータブロックに対応するエントリにアクセスするために使用され、
第1のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する第1の単一ポインタエントリを有すると決定するように構成され、
第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた第1の共有エントリを有すると決定した場合、第1の共有エントリに従って、第1のデータブロックの複数の訪問者を決定するように構成された実行ユニットと
を含む。
第2の態様を参照して、第1の可能な実現方式では、単一ポインタエントリ配列内の単一ポインタエントリは、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すために更に使用され、実行ユニットは、
第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた第1の共有エントリを有さないと決定した場合、第1の単一ポインタエントリに従って、第1のデータブロックの単一の訪問者、又は第1のデータブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを決定するように更に構成される。
第2の態様又は第2の態様の第1の可能な実現方式を参照して、第2の可能な実現方式では、実行ユニットが第1のプロセッサコアにより送信された第1のアクセス要求を受信した後に、実行ユニットは、
第1のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する単一ポインタエントリを有さないと決定し、
単一ポインタエントリ配列において、第1のデータブロックに対応する第1の単一ポインタエントリを第1のデータブロックに割り当て、第1のプロセッサコアについての情報を第1の単一ポインタエントリに記録するように更に構成される。
第2の態様の第2の可能な実現方式を参照して、第3の可能な実現方式では、実行ユニットは、
単一ポインタエントリ配列が未使用の単一ポインタエントリを有する場合、第1の単一ポインタエントリとして、未使用の単一ポインタエントリから単一ポインタエントリを選択し、第1のプロセッサコアについての情報を記録するように更に構成され、或いは
単一ポインタエントリ配列が未使用の単一ポインタエントリを有さない場合、最長時間未使用の原理に従って、単一ポインタエントリを選択し、選択された単一ポインタエントリが共有エントリに関連付けられておらず、単一の訪問者についての情報を記録する場合、無効メッセージを記録された単一の訪問者に送信し、第1のプロセッサコアについての情報を選択された単一ポインタエントリに記録するように更に構成され、或いは
選択された単一ポインタエントリが共有エントリに関連付けられておらず、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示す場合、無効メッセージを全てのプロセッサコアにブロードキャストし、第1のプロセッサコアについての情報を選択された単一ポインタエントリに記録するように更に構成され、或いは
選択された単一ポインタエントリが共有エントリに関連付けられている場合、選択された単一ポインタエントリに関連付けられた共有エントリに従って、関連付けられた共有エントリに記録された複数の訪問者を決定し、無効メッセージを記録された複数の訪問者に送信し、第1のプロセッサコアについての情報を選択された単一ポインタエントリに記録するように更に構成される。
第2の態様の第2又は第3の可能な実現方式を参照して、第4の可能な実現方式では、実行ユニットは、
第2のプロセッサコアにより送信された第2のアクセス要求を受信するように更に構成され、第2のアクセス要求は、ディレクトリ内の第1のデータブロックに対応するエントリにアクセスするために使用され、
第2のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する第1の単一ポインタエントリを有すると決定するように更に構成され、
第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた共有エントリを有さないと決定した場合、第1の単一ポインタエントリに従って、第1のデータブロックの単一の訪問者が第1のプロセッサコアであると決定するように更に構成され、
共有エントリ配列内の第1の共有エントリを割り当て、第1の単一ポインタエントリと第1の共有エントリとの間に関連付け関係を確立し、第1のプロセッサコアについての情報及び第2のプロセッサコアについての情報を第1の共有エントリに記録するように更に構成される。
第2の態様の第4の可能な実現方式を参照して、第5の可能な実現方式では、実行ユニットは、
共有エントリ配列が未使用の共有エントリを有する場合、第1の共有エントリとして、未使用の共有エントリから共有エントリを選択するように構成され、或いは
共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者についての情報を記録する共有エントリを有する場合、1つのみの訪問者についての情報を記録する共有エントリを選択し、訪問者についての記録された情報を、選択された共有エントリに関連付けられた単一ポインタエントリに書き込むように構成され、或いは
共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者を記録する共有エントリも有さない場合、最長時間未使用の原理に従って、共有エントリを選択し、選択された共有エントリに記録された訪問者の数量が所定の閾値より大きい場合、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すように、選択された共有エントリに関連付けられた単一ポインタエントリを設定し、或いは選択された共有エントリに記録された訪問者の数量が所定の閾値より大きくない場合、記録された訪問者のうち1つの訪問者についての情報を、選択された共有エントリに関連付けられた単一ポインタエントリに書き込み、無効メッセージを記録された訪問者のうち他の訪問者に送信するように構成される。
第2の態様又は第2の態様の前述の可能な実現方式のいずれか1つを参照して、第6の可能な実現方式では、単一ポインタエントリは、タグと共有エントリ関連付けビットと全共有ビットと単一ポインタとを含み、タグは、データブロックに対応させるために使用され、共有エントリ関連付けビットは、単一ポインタエントリが共有エントリに関連付けられているか否かを示すために使用され、全共有ビットは、単一ポインタエントリが共有エントリに関連付けられていない場合、データブロックが単一の訪問者を有することを示すため、或いはデータブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すために使用され、単一ポインタは、データブロックが単一の訪問者を有する場合、データブロックの単一の訪問者についての情報を記録し、単一ポインタエントリが共有エントリに関連付けられている場合、単一ポインタエントリと共有エントリとの間の関連付けについての情報を記録するために使用され、
共有エントリは、共有者記録構造と関連付け構造とを含み、共有者記録構造は、データブロックの複数の訪問者についての情報を記録するために使用され、関連付け構造は、単一ポインタエントリを関連付けるために使用される。
第2の態様の第6の可能な実現方式を参照して、第7の可能な実現方式では、単一ポインタエントリは、全共有ビットを更に含み、
全共有ビットは、単一ポインタエントリが共有エントリに関連付けられていない場合、データブロックが単一の訪問者を有することを示すため、或いはデータブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すために使用される。
第3の態様によれば、複数のプロセッサコアと、共有データキャッシュと、第2の態様又は第2の態様のいずれかの可能な実現方式によるディレクトリキャッシュデバイスとを含むマルチコアシステムが提供される。
第4の態様によれば、マルチコアシステム内にあるディレクトリを記憶するように構成されたディレクトリ記憶ユニットが提供され、マルチコアシステムは、共有データキャッシュと複数のプロセッサコアとを含み、共有データキャッシュ内のデータブロックは、複数のプロセッサコアのうち少なくとも1つのプロセッサコアにコピーされ、ディレクトリは、共有データキャッシュ内のデータブロックの訪問者についての情報を記録するために使用され、データブロックの訪問者は、データブロックのコピーが記憶されているプロセッサコアであり、
ディレクトリは、単一ポインタエントリ配列と共有エントリ配列とを含み、
単一ポインタエントリ配列内の各単一ポインタエントリは、データブロックの単一の訪問者についての情報を記録するため、或いは単一ポインタエントリと共有エントリ配列内の共有エントリとの間の関連付けについての情報を記録するために使用され、
共有エントリ配列内の各共有エントリは、データブロックの複数の訪問者についての情報を記録するために使用される。
第4の態様を参照して、第1の可能な実現方式では、単一ポインタエントリは、タグと共有エントリ関連付けビットと全共有ビットと単一ポインタとを含み、タグは、データブロックに対応させるために使用され、共有エントリ関連付けビットは、単一ポインタエントリが共有エントリに関連付けられているか否かを示すために使用され、全共有ビットは、単一ポインタエントリが共有エントリに関連付けられていない場合、データブロックが単一の訪問者を有することを示すため、或いはデータブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すために使用され、単一ポインタは、データブロックが単一の訪問者を有する場合、データブロックの単一の訪問者についての情報を記録し、単一ポインタエントリが共有エントリに関連付けられている場合、単一ポインタエントリと共有エントリとの間の関連付けについての情報を記録するために使用され、
共有エントリは、共有者記録構造と関連付け構造とを含み、共有者記録構造は、データブロックの複数の訪問者についての情報を記録するために使用され、関連付け構造は、単一ポインタエントリを関連付けるために使用される。
第4の態様の第1の可能な実現方式を参照して、第2の可能な実現方式では、単一ポインタエントリは、全共有ビットを含み、
全共有ビットは、単一ポインタエントリが共有エントリに関連付けられていない場合、データブロックが単一の訪問者を有することを示すため、或いはデータブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すために使用される。
第4の態様の第1又は第2の可能な実現方式を参照して、第3の可能な実現方式では、共有者記録構造はベクトルである。
前述の技術的解決策に基づいて、本発明の実施例では、単一ポインタエントリ配列と共有エントリ配列とを含むディレクトリ構造が使用される。データブロックが単一の訪問者のみを有する場合、単一ポインタエントリのみが、訪問者についての情報を記録するために使用される。データブロックが複数の訪問者を有する場合、訪問者についての情報は、単一ポインタエントリを共有エントリに関連付ける方式で記録される。前述の方式では、ディレクトリ内のディレクトリエントリの平均サイズが比較的大きく圧縮されることが可能になり、性能ロスが比較的小さい。したがって、ディレクトリにより占有される記憶リソースは、低減されることが可能になり、システムのスケーラビリティが改善されることが可能になる。
本発明の実施例における技術的解決策をより明確に説明するために、以下に、本発明の実施例を説明するために必要な添付図面について簡単に説明する。明らかに、以下の説明における添付図面は、単に本発明のいくつかの実施例を示しているに過ぎず、当業者は、創造的取り組みを行うことなく、依然としてこれらの添付図面から他の図面を導き得る。
本発明の実施例における技術的解決策が適用され得るマルチコアシステムの概略図である。 本発明の実施例によるディレクトリの概略図である。 本発明の実施例による単一ポインタエントリの概略図である。 本発明の実施例による共有エントリの概略図である。 本発明の他の実施例によるディレクトリの概略図である。 本発明の実施例によるディレクトリアクセス方法の概略フローチャートである。 本発明の他の実施例によるディレクトリアクセス方法の概略フローチャートである。 本発明の更に他の実施例によるディレクトリアクセス方法の概略フローチャートである。 本発明の更に他の実施例によるディレクトリアクセス方法の概略フローチャートである。 本発明の更に他の実施例によるディレクトリアクセス方法の概略フローチャートである。 本発明の実施例に従って共有エントリを圧縮する概略図である。 本発明の実施例によるディレクトリキャッシュデバイスの概略ブロック図である。 本発明の実施例によるマルチコアシステムの概略図である。
以下に、本発明の実施例における添付図面を参照して本発明の実施例における技術的解決策を明確且つ完全に説明する。明らかに、説明する実施例は、本発明の実施例の全てではなく、一部である。創造的取り組みを行うことなく本発明の実施例に基づいて当業者により得られる全ての他の実施例は、本発明の保護範囲内に入るものとする。
この明細書を通じて、「マルチコアプロセッサシステム」又は「マルチコアシステム」という用語は、複数のプロセッサコア(Core)を含む処理システムを示す。システムは、チップ上マルチコアプロセッサ又は基板上マルチコア処理システムとして提示されてもよい。チップ上マルチコアプロセッサは、複数のプロセッサコア(Core)が1つのチップ(Chip)上に一体化されたプロセッサ(Processor)である。基板上マルチコア処理システムは、複数のプロセッサコアの各コアをプロセッサに別々にパッケージ化し、プロセッサを回路基板上に一体化することにより形成された処理システムを示す。
この明細書を通じて、「プロセッサコア」という用語は、「プロセッサコア」の略称である。コア(Core)はまた、カーネルとも呼ばれてもよく、CPU(Central Processing Unit)の最も重要なコンポーネントである。コアは、特定の生産プロセスを使用することにより、単結晶シリコンでできている。CPU内の計算、コマンド受信/記憶及びデータ処理の全ては、プロセッサコアにより実行される。「複数のプロセッサコア」という用語は、少なくとも2つのプロセッサコアが含まれることを意味する。「複数のプロセッサコア」は、従来技術におけるマルチコア(Multi-Core)及び多コア(Many Core)の用途の範囲をカバーする。
この明細書を通じて、「ディレクトリキャッシュデバイス」とも呼ばれる「ディレクトリキャッシュ」という用語は、マルチコアシステムにおいてデータ訪問者ディレクトリを記憶するために使用される記憶デバイスを示す。ディレクトリアクセス率を増加させるために、記憶デバイスは、通常では、キャッシュ(Cache)の形式で実現される。ディレクトリキャッシュは、少なくとも2つの実現方式で実現される。1つの方式では、ディレクトリキャッシュは、プロセッサコアと独立して実現され、すなわち、ディレクトリ記憶のためのキャッシュとして使用されるように、チップ上マルチコア処理チップ上のキャッシュ(Cache)内の1つの記憶空間が割り当てられる。他の方式では、ディレクトリキャッシュは、分散方式で実現され、すなわち、ディレクトリは複数のブロックに分割され、ディレクトリブロックは、チップ上マルチコア処理チップ上の各プロセッサコアの内部のキャッシュに別々に記憶される。
この明細書を通じて、「共有データキャッシュ」という用語は、複数のコアにより共有されるデータブロックを記憶するために使用される記憶デバイスを示す。データブロックアクセス率を増加させるために、記憶デバイスは、通常では、キャッシュ(Cache)の形式で実現される。具体的な実現処理では、共有データキャッシュは、一般的に、マルチコアプロセッサシステムにおけるレベル2(L2)キャッシュ又はレベル3(L3)キャッシュを示す。
この明細書を通じて、「プライベートデータキャッシュ」という用語は、プロセッサコアのプライベートデータを記憶するために使用される、プロセッサコアの内部の記憶デバイスを示す。具体的な実現処理では、プライベートデータキャッシュは、一般的に、マルチコアプロセッサにおけるレベル1(L1)キャッシュを示す。マルチコアプロセッサの実現では、プロセッサコアがデータブロックにアクセスする効率を改善するために、プロセッサコアは、共有データの一部分を取得し、共有データのこの一部分をプライベートデータキャッシュに記憶してもよい。
この明細書を通じて、「データブロック」という用語は、マルチコアプロセッサシステムにおいて各プロセッサコアがデータにアクセスする粒度を示す。具体的な実現では、データブロックは、マルチコアプロセッサシステムにおいて共有データキャッシュに記憶される。したがって、一般的な場合、データブロックの粒度はcache line(すなわち、キャッシュライン)である。具体的な実現では、データブロックの粒度は、cache lineの一部分又は複数のcache lineのような他の形式で提示されてもよい。この明細書では、詳細は限定されない。
この明細書を通じて、「ディレクトリ構造」又は「データ訪問者ディレクトリ」とも呼ばれる「ディレクトリ」という用語は、データブロックの訪問者についての情報が記録されるデータ構造を示す。具体的な実現では、データ訪問者ディレクトリは、単一ポインタエントリ配列と共有エントリ配列とを含む。単一ポインタエントリ配列は、複数の単一ポインタエントリを含む。共有エントリ配列は、複数の共有エントリを含む。各単一ポインタエントリに記録される内容は、データブロックの訪問者の数量に従って変化する。データブロックが単一の訪問者を有する場合、データブロックの単一の訪問者についての情報が単一ポインタエントリに記録される。データブロックが複数の訪問者を有する場合、単一ポインタエントリはまた、単一ポインタエントリと単一ポインタエントリに対応する共有エントリとの間の関連付けについての情報を記録するために使用される。データブロックが複数(2つ以上)の訪問者を有する場合、共有エントリは、データブロックの複数の訪問者についての情報を記録するために使用される。「データ訪問者ディレクトリ」という用語は、1つ以上のデータ訪問者ディレクトリエントリを含む。
この明細書を通じて、「データ訪問者ディレクトリエントリ」という用語は、「データ訪問者ディレクトリ」の構成単位を示す。ディレクトリ内の各エントリは、共有データキャッシュ内の各データブロックに対応する。具体的な実現では、データ訪問者ディレクトリは、単一ポインタエントリ配列と共有エントリ配列とを含む。したがって、データブロックが1つのみのデータ訪問者を有する場合、データブロックに対応するデータ訪問者ディレクトリエントリは、データブロックの単一の訪問者についての情報が記録される単一ポインタエントリを示す。データブロックが複数(2つ以上)の訪問者を有する場合、データブロックに対応するデータ訪問者ディレクトリエントリは、単一ポインタエントリと単一ポインタエントリに対応する共有エントリとの間の関連付けについての情報が記録される単一ポインタエントリと、データブロックの複数の訪問者についての情報が記録される共有エントリとを示す。
この明細書を通じて、「訪問者」という用語は、データブロックにアクセスするプロセッサコアを示す。例えば、データブロックが3つのプロセッサコアによりアクセスされた場合、3つのプロセッサコアは、データブロックの訪問者と呼ばれる。
この明細書を通じて、「アクセス要求」という用語は、プロセッサコアにより送信され、データブロックの訪問者についての情報を問い合わせるために使用される要求であるディレクトリアクセス要求を示す。
この明細書を通じて、「関連付けについての情報」という用語は、データブロックが少なくとも2つの訪問者を有する場合、データブロックに対応する単一ポインタエントリにおいて、単一ポインタエントリに対応する共有エントリのアクセスインデックスが記録されることを示す。アクセスインデックスは、データブロックの単一ポインタエントリと単一ポインタエントリに対応する共有エントリとの間の関連付けについての情報として示される。関連付けについての情報は、データブロックの単一ポインタエントリと単一ポインタエントリに対応する共有エントリとの間に関連付け関係が存在することを示す。
この明細書を通じて、「最長時間未使用(Least Recently Used、LRU)の原理」という用語は、エントリ(単一ポインタエントリ又は共有エントリ)がデータブロックに割り当てられる場合、その原理が、単一ポインタエントリ配列又は共有エントリ配列から、最近の期間に最も少なくアクセスされたエントリを選択するために使用され、これにより、データブロックのエントリとして使用されることを示す。
この明細書を通じて、「無効メッセージ」という用語は、エントリ再割り当て中に、無効メッセージがエントリに元々記録されている訪問者に送信され、これにより、元のデータブロックを無効にすることを示す。
図1は、本発明の実施例における技術的解決策が適用され得るマルチコアシステムの概略図である。
図1に示すように、マルチコアシステム100は、複数のプロセッサコア110と、共有データキャッシュ120と、ディレクトリキャッシュ130とを含む。複数のプロセッサコア110は、共有データキャッシュ120内のデータブロック121にアクセスしてもよい。データブロック121のコピーは、データブロック121にアクセスしたプロセッサコア110内のプライベートキャッシュ111内に生成される。ディレクトリキャッシュ130では、対応するディレクトリエントリ131は、データブロック121について、データブロック121の訪問者リストを記録するために使用される。
言い換えると、共有データキャッシュ120内のデータブロック121は、複数のプロセッサコア110のうち少なくとも1つのプロセッサコアにコピーされてもよい。データブロック121の訪問者は、データブロック121のコピーが記憶されているプロセッサコアである。
ディレクトリは、訪問者リストが記録される構造である。これに基づいて、ディレクトリは、ディレクトリ構造として表現されてもよい。
ディレクトリは、ディレクトリキャッシュ(Directory Cache)に記憶され、具体的には、ディレクトリキャッシュ内のディレクトリ記憶ユニットに記憶されてもよい。
ディレクトリキャッシュは、集中式でもよく、或いは分散式でもよい。対応して、ディレクトリは、集中式ディレクトリでもよく、すなわち、キャッシュエリアは、ディレクトリを記憶するためにマルチコアシステム(例えば、マルチコアプロセッサチップ)内に設定される。ディレクトリはまた、分散式ディレクトリでもよく、すなわち、ディレクトリは、ブロックに分割され、ブロック分割後に取得された各ディレクトリ部分が、各プロセッサコアに記憶される。例えば、マルチコアシステムが128個のプロセッサコアを含むことを仮定すると、ディレクトリは、それぞれ128個のプロセッサコアに記憶される128個の部分に分割されてもよい。
図2は、本発明の実施例によるディレクトリ200の概略図である。
図2に示すように、ディレクトリ200は、単一ポインタエントリ配列210と共有エントリ配列220とを含む。
単一ポインタエントリ配列210は、複数の単一ポインタエントリを含み、共有エントリ配列220は、複数の共有エントリを含む。
単一ポインタエントリ配列210内の単一ポインタエントリは、データブロックの単一の訪問者についての情報を記録するため、或いは単一ポインタエントリと共有エントリ配列220内の共有エントリとの間の関連付けについての情報を記録するために使用される。すなわち、単一ポインタエントリは、データブロックが単一の訪問者を有する場合、データブロックの単一の訪問者についての情報を記録してもよく、或いはデータブロックが複数の訪問者を有する場合、単一ポインタエントリと共有エントリ配列220内の共有エントリとの間の関連付けについての情報を記録してもよい。共有エントリは、データブロックの複数の訪問者についての情報を記録するために使用される。
scale-out(スケールアウト)の用途では、ほとんどのデータは、1つのみの訪問者を有する。データは、プライベートデータでもよく、或いはある期間内にプライベート特性を示してもよい。これに基づいて、ほとんどのディレクトリエントリは、単一ポインタを使用することにより、プロセッサコアについての情報、例えば、プロセッサコアの番号を記録しさえすればよく、本発明では、ディレクトリエントリは、単一ポインタエントリと呼ばれる。さらに、複数の訪問者を有するデータをトラッキングするために、いくつかのディレクトリエントリは、複数の訪問者をトラッキングするために使用され得るハードウェア構造(例えば、ベクトル、有限ポインタ(limited pointer)又は他の形式)を依然として使用し、本発明では、ディレクトリエントリは、共有エントリと呼ばれる。全ての単一ポインタエントリは、単一ポインタエントリ配列を構成し、全ての共有エントリは、共有エントリ配列を構成する。単一ポインタエントリ配列には比較的大量のエントリが存在してもよく、共有エントリ配列には比較的少量のエントリが存在してもよい。
単一ポインタエントリは、訪問者を記録するために比較的少ないビット(bit)を使用してもよい。共有エントリは、複数の訪問者を記録するために比較的多くのビットを使用してもよい。データブロックが単一の訪問者を有する場合、単一ポインタエントリのみが、データブロックの単一の訪問者を記録するために使用される。この場合、単一ポインタエントリは、共有エントリに関連付けられていない。データブロックが複数の訪問者を有する場合、データブロックに対応する単一ポインタエントリは、共有エントリに関連付けられ、関連付けられた共有エントリは、データブロックの複数の訪問者を記録するために使用される。
任意選択で、共有エントリにより占有される記憶空間を低減するために、全共有ビットが単一ポインタエントリ内に更に設定されてもよい。共有ビットが1に設定された場合、データブロックは、マルチコアシステム内の全てのプロセッサコアにより共有される。この場合、単一ポインタエントリは、共有エントリに関連付けられていない。すなわち、データブロックが全てのプロセッサコアにより共有される場合、単一ポインタエントリのみがまた使用される必要があり、共有エントリは関連付けられる必要はない。
本発明のこの実施例によるディレクトリは、単一ポインタエントリ配列と共有エントリ配列とを含む構造を使用する。単一の訪問者が存在する場合、単一ポインタエントリのみが訪問者についての情報を記録するために使用され、複数の訪問者が存在する場合、訪問者についての情報は、単一ポインタエントリを共有エントリに関連付ける方式で記録される。前述の方式では、ディレクトリ内のディレクトリエントリの平均サイズが大きく圧縮されることが可能になり、性能ロスが非常に小さい。したがって、ディレクトリにより占有される記憶リソースは、低減されることが可能になり、システムのスケーラビリティが改善されることが可能になる。
図3は、本発明の実施例による単一ポインタエントリの概略図である。図3に示すように、単一ポインタエントリは、タグ301と共有エントリ関連付けビット302と全共有ビット303と単一ポインタ304とを含んでもよい。
タグ301は、データブロックに対応させるために使用される。例えば、タグは、データブロックのアドレスに対応してもよく、具体的には、データブロックのいくつかのアドレスビットに対応してもよい。したがって、データブロックに対応する単一ポインタエントリは、データブロックのアドレスとタグとの間の対応に従って検索されてもよい。
共有エントリ関連付けビット302は、単一ポインタエントリが共有エントリに関連付けられているか否かを示すために使用される。例えば、共有エントリ関連付けビットの値が1であることは、単一ポインタエントリに関連付けられた共有エントリが存在することを示し、値が0であることは、単一ポインタエントリに関連付けられた共有エントリが存在しないことを示す。
全共有ビット303は、データブロックが全てのプロセッサコアにより共有されることを示すため、或いはデータブロックが単一の訪問者を有することを示すために使用される。例えば、全共有ビット303の値が1である場合、データブロックは、全てのプロセッサコアにより共有され、共有エントリ関連付けビットが0であり、すなわち、共有エントリが関連付けられておらず、全共有ビットもまた0である場合、データブロックは、単一の訪問者を有する。
単一ポインタ304は、データブロックが単一の訪問者を有する場合、データブロックの単一の訪問者についての情報を記録するために使用される。複数の訪問者が存在する場合、単一ポインタ304は、共有エントリを指すために、単一ポインタエントリと共有エントリとの間の関連付けについての情報を記録するために使用される。単一の訪問者についての情報は、訪問者の識別子として表されてもよく、例では、訪問者(プロセッサコア)の番号又は他の識別子情報が使用されてもよい。単一ポインタエントリと共有エントリとの間の関連付けについての情報は、ポインタ又はインデックス情報として表されてもよい。本発明のこの実施例では、その詳細は限定されない。
例えば、共有エントリ関連付けビットが0であり、すなわち、共有エントリが関連付けられておらず、全共有ビットが0であり、すなわち、単一の訪問者が存在する場合、データブロックの単一の訪問者は、単一ポインタに記録され、共有エントリ関連付けビットが1であり、すなわち、共有エントリが関連付けられている場合、共有エントリとの関連付けについての情報は、単一ポインタ304に記録される。関連付けについての情報は、単一ポインタエントリに関連付けられた共有エントリを指すために使用される。
図4は、本発明の実施例による共有エントリの概略図である。図4に示すように、共有エントリは、共有者記録構造401と上位アドレス402とウェイ選択ビット403とを含んでもよい。上位アドレス402及びウェイ選択ビット403は、関連付けについての情報を示す関連付け構造である。
共有者記録構造401は、データブロックの複数の訪問者についての情報を記録するために使用される。共有者記録構造は、ベクトル又は複数の訪問者が記録されることができる他の構造でもよい。
関連付け構造(上位アドレス402及びウェイ選択ビット403)は、単一ポインタエントリを指すために使用される。
データブロックが単一の訪問者を有する比較的多くの場合が存在し、データブロックが複数の訪問者を有する比較的少ない場合が存在する。したがって、本発明のこの実施例では、単一ポインタエントリ配列が主な配列として使用され、共有エントリ配列が二次的な配列として使用される。図5に示すように、単一ポインタエントリ配列510及び共有エントリ配列520は、キャッシュのものと同様のセットアソシエイティブ構造をそれぞれ使用する。セット(配列の各行がセットである)の数量は、深度(depth)と呼ばれる。ウェイ(配列の各列がウェイである)の数量は、相関度(correlation)と呼ばれる。単一ポインタエントリ配列は、比較的大きい深度を有するが、中程度の相関度を有し、これにより、アクセス電力消費を低減する。共有エントリ配列は、比較的小さい深度を有するが、比較的大きい相関度を有し、これにより、共有エントリの利用を改善する。ディレクトリアクセスの間に、単一ポインタエントリ配列は、アクセス要求内のアドレス情報に従って検索され、例えば、単一ポインタエントリのタグは、単一ポインタエントリが存在するか否かを決定するために検索される。その後、単一ポインタエントリに従って共有エントリにアクセスし、共有エントリに従って単一ポインタエントリにアクセスすることは、「セットの番号+ウェイの番号」の方式で実現されてもよく、具体的な実現では、まずセットの番号を決定し、次にウェイの番号を決定することにより実現されてもよい。
前述の単一ポインタエントリの全てのフィールドにおいて、全共有ビット303は任意選択のフィールドである点に留意すべきである。データブロックがマルチコアシステム内の全てのプロセッサコアにより共有される場合、共有エントリ内の共有者記録構造401は、データブロックが全てのプロセッサコアにより共有されることを示すために使用されてもよい。共有エントリの記憶空間を低減するために、全共有ビット303は、単一ポインタエントリに追加される。「データブロックがマルチコアシステム内の全てのプロセッサコアにより共有される」共有シナリオを示すために、全共有ビット303が1に設定される。
図6は、本発明の実施例によるマルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法600の概略フローチャートである。ディレクトリは、本発明の前述の実施例におけるディレクトリである。この方法600は、ディレクトリキャッシュにより実行されてもよい。
S610.第1のプロセッサコアにより送信された第1のアクセス要求を受信し、第1のアクセス要求は、ディレクトリ内の第1のデータブロックに対応するエントリにアクセスするために使用される。
第1のアクセス要求は、データブロックのアドレス情報を搬送してもよい。ディレクトリは、アクセス要求内のアドレス情報に従ってアクセスされてもよく、データブロックに対応するエントリがディレクトリ内で検索される。
S620.第1のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する第1の単一ポインタエントリを有すると決定する。
第1のアクセス要求が受信された場合、データブロックに対応する単一ポインタエントリが存在するか否かを決定するために、まず単一ポインタエントリ配列がアクセスされる。具体的には、データブロックに対応する単一ポインタエントリが存在するか否かを決定するために、単一ポインタエントリ配列は、アクセス要求内のアドレス情報に従って検索されてもよい。例えば、図3に示す単一ポインタエントリの構造を例として使用して、データブロックに対応する単一ポインタエントリが存在するか否かを決定するために、アクセス要求内で搬送されたアドレス情報は、単一ポインタエントリ内のタグと比較されてもよい。この実施例では、単一ポインタエントリ配列は、第1のデータブロックに対応する第1の単一ポインタエントリを有する。
S630.第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた第1の共有エントリを有すると決定された場合、第1の共有エントリに従って、第1のデータブロックの複数の訪問者を決定する。
データブロック(第1のデータブロックとして表される)が対応する単一ポインタエントリ(第1の単一ポインタエントリとして表される)を有する場合、共有エントリ配列が第1の単一ポインタエントリに関連付けられた共有エントリを有するか否かは、第1の単一ポインタエントリに従って決定される。例えば、図3に示す単一ポインタエントリの構造を例として使用して、単一ポインタエントリに関連付けられた共有エントリが存在するか否かは、単一ポインタエントリ内の共有エントリ関連付けビットに従って決定されてもよい。第1の単一ポインタエントリに関連付けられた共有エントリが存在し、すなわち、第1の単一ポインタエントリが共有エントリ(第1の共有エントリとして表される)に関連付けられている場合、第1のデータブロックの複数の訪問者は、第1の共有エントリに従って決定される。具体的には、関連付けられた共有エントリは、単一ポインタエントリに記録された関連付けについての情報、例えば、図3に示す構造における単一ポインタに記録された関連付けについての情報に従って決定されてもよく、共有エントリは、共有エントリからデータブロックの複数の訪問者を取得するためにアクセスされる。
図5に示すディレクトリの構造を例として使用して、共有エントリは、以下の方式で単一ポインタエントリに従ってアクセスされてもよい。
1.共有エントリのセット番号を取得するために、単一ポインタエントリが属するセットの番号から下位ビットが抽出される。
単一ポインタエントリ配列には比較的大量のセットが存在し、共有エントリ配列には比較的少量のセットが存在する。したがって、共有エントリのセット番号は、単一ポインタエントリのセット番号の下位ビットに従って決定されてもよい。
単一ポインタエントリ配列が4個のウェイと64個のセットとを含み、共有エントリ配列が8個のウェイと16個のセットとを含むことが仮定される。
現在アクセスされている単一ポインタエントリの共有エントリ関連付けビットが1である場合、共有エントリが関連付けられており、共有エントリ配列がアクセスされる必要がある。64セットの単一ポインタエントリ配列内のセットの番号は、6ビット(bit)を含み、単一ポインタエントリは、第55セットに属し、セットの番号は、b_110111(b_は2進数を表す)として表される。共有エントリ配列は、合計16セットを含み、4ビットを有するセット番号がインデックス化のために必要である。対応する共有エントリが共有エントリ配列内の第7セットに属することを取得するために、下位の4ビットb_0111がb_110111から抽出される。
2.1つのセット内にある共有エントリの複数のウェイを読み取るために、共有エントリ配列がアクセスされる。
セット内の8個の共有エントリ(8個のウェイ)を取得するために、共有エントリ配列内の第7セットが、前のステップにおいて取得されたセット番号に従ってアクセスされる。
3.単一ポインタエントリ内の単一ポインタに従って共有エントリの複数のウェイに対してウェイ選択が実行される。
8個のウェイからの選択は3ビットを必要とする。単一ポインタの値がb_1100であると仮定すると、関連付けられた共有エントリを取得するために、単一ポインタの値の下位の3ビットb_100、すなわち、第4ウェイが使用されてもよい。
本発明のこの実施例では、任意選択で、図7aに示すように、この方法600は以下を更に含んでもよい。
S640.第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた第1の共有エントリを有さないと決定された場合、第1の単一ポインタエントリに従って、第1のデータブロックの単一の訪問者、又は第1のデータブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを決定する。
すなわち、第1の単一ポインタエントリが第1の共有エントリに関連付けられていない場合、第1のデータブロックの訪問者は、第1の単一ポインタエントリのみに従って決定される。具体的には、第1の単一ポインタエントリは、第1のデータブロックの単一の訪問者を記録するため、或いは第1のデータブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すために使用されてもよい。2つの場合の双方において、共有エントリが関連付けられる必要はなく、比較的少ないビットが表現のために使用されてもよい。具体的な例については、前述の実施例を参照し、詳細はここでは再び説明しない。
本発明のこの実施例によるディレクトリアクセス方法では、単一ポインタエントリがまずアクセスされ、単一ポインタエントリが共有エントリに関連付けられている場合、関連付けられた共有エントリが次にアクセスされ、データブロックが単一の訪問者を有する場合、単一の訪問者は、単一ポインタエントリから取得されてもよく、データブロックが複数の訪問者を有する場合、複数の訪問者は、単一ポインタエントリに関連付けられた共有エントリから取得されてもよい。このように、ディレクトリ内のディレクトリエントリの平均サイズが大きく圧縮されることが可能になり、性能ロスが比較的非常に小さい。したがって、ディレクトリにより占有される記憶リソースは、低減されることが可能になり、システムのスケーラビリティが改善されることが可能になる。
本発明のこの実施例では、単一ポインタエントリ配列がデータブロックに対応する単一ポインタエントリを有さない場合、対応する単一ポインタエントリは、データブロックに更に割り当てられてもよい。
したがって、任意選択で、第1のプロセッサコアにより送信された第1のアクセス要求が受信された後に、図7bに示すように、この方法600は以下を更に含んでもよい。
S662.第1のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する単一ポインタエントリを有さないと決定する。
S663.単一ポインタエントリ配列において、第1のデータブロックに対応する第1の単一ポインタエントリを第1のデータブロックに割り当て、第1のプロセッサコアについての情報を第1の単一ポインタエントリに記録する。
すなわち、データブロックが対応する単一ポインタエントリを有さない場合、単一ポインタエントリは、データブロックに割り当てられてもよく、単一の訪問者(すなわち、第1のプロセッサコア)についての情報が、割り当てられた単一ポインタエントリに記録される。
具体的には、単一ポインタエントリ配列が未使用の単一ポインタエントリを有する場合、単一ポインタエントリは、第1の単一ポインタエントリとして、未使用の単一ポインタエントリから選択され、第1のプロセッサコアについての情報が記録される。
単一ポインタエントリ配列が未使用の単一ポインタエントリを有さない場合、単一ポインタエントリは、最長時間未使用の原理に従って選択される。
選択された単一ポインタエントリが共有エントリに関連付けられておらず、単一の訪問者についての情報を記録する場合、無効メッセージが、記録された単一の訪問者に送信され、第1のプロセッサコアについての情報が、選択された単一ポインタエントリに記録される。
選択された単一ポインタエントリが共有エントリに関連付けられておらず、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示す場合、無効メッセージが、全てのプロセッサコアにブロードキャストされ、第1のプロセッサコアについての情報が、選択された単一ポインタエントリに記録される。
選択された単一ポインタエントリが共有エントリに関連付けられている場合、関連付けられた共有エントリに記録された複数の訪問者が、選択された単一ポインタエントリに関連付けられた共有エントリに従って決定され、無効メッセージが、記録された複数の訪問者に送信され、第1のプロセッサコアについての情報が、選択された単一ポインタエントリに記録される。
以下に、例を使用することにより、本発明のこの実施例によるディレクトリアクセス方法について詳細に説明する。
図8は、本発明の他の実施例によるディレクトリアクセス方法の概略フローチャートである。
801.単一ポインタエントリ配列にアクセスし、単一ポインタエントリにヒットした場合、ステップ802が実行され、或いは単一ポインタエントリにヒットしなかった場合、ステップ807が実行される。
例えば、単一ポインタエントリ及び共有エントリがそれぞれ図3及び図4に示す構造を使用する場合、データブロックに対応する単一ポインタエントリが存在するか否かを決定するために、アクセス要求内で搬送されたアドレス情報は、単一ポインタエントリ内のタグと比較されてもよい。
802.単一ポインタエントリが共有エントリに関連付けられているか否かを決定し、そうである場合、803が実行され、或いはそうでない場合、804が実行される。
例えば、単一ポインタエントリが共有エントリに関連付けられているか否かは、ヒットした単一ポインタエントリ内の共有エントリ関連付けビットに従って決定されてもよい。共有エントリ関連付けビットが1である場合、共有エントリが関連付けられており、共有エントリ関連付けビットが0である場合、共有エントリが関連付けられていない。
803.訪問者リストを取得するために、関連付けられた共有エントリにアクセスする。
例えば、関連付けられた共有エントリは、単一ポインタエントリ内の単一ポインタに従って見つけられてもよく、これにより、関連付けられた共有エントリ内の共有者記録構造から訪問者リストを取得する。
804.全共有が実現されているか否かを決定し、そうである場合、805が実行され、或いはそうでない場合、806が実行される。
共有エントリが関連付けられていない場合、データブロックが全てのプロセッサコアにより共有されるか否かが決定される。例えば、全共有が実現されているか否かは、単一ポインタエントリ内の全共有ビットに従って決定されてもよい。全共有ビットが0である場合、データブロックは、単一の訪問者を有し、すなわち、全共有が実現されていない。全共有ビットが1である場合、データブロックは、全てのプロセッサコアにより共有され、すなわち、全共有が実現されている。
805.データブロックが全てのプロセッサコアにより共有されることを決定する。
806.単一の訪問者を取得する。
例えば、単一の訪問者は、単一ポインタエントリ内の単一ポインタから取得されてもよい。
807.未使用の単一ポインタエントリが存在するか否かを決定し、そうである場合、808が実行され、或いはそうでない場合、809が実行される。
808.未使用の単一ポインタエントリを選択し、アクセスするプロセッサコアについての情報を記録する。
例えば、プロセッサコアの識別子が記録されてもよい。64個のコアを例として使用して、6ビットの識別子が使用されてもよい。
809.最長時間未使用である単一ポインタエントリを選択し、選択された単一ポインタエントリが共有エントリに関連付けられているか否かを決定し、そうである場合、810が実行され、或いはそうでない場合、811が実行される。
810.複数の訪問者を無効にし、アクセスするプロセッサコアについての情報を記録する。
関連付けられた共有エントリに記録された複数の訪問者は、関連付けられた共有エントリに従って決定される。無効メッセージが、複数の訪問者に送信され、アクセスするプロセッサコアについての情報が、選択された単一ポインタエントリに記録される。
811.選択された単一ポインタエントリが全共有を示すか否かを決定し、そうである場合、812が実行され、或いはそうでない場合、813が実行される。
812.無効メッセージをブロードキャストし、アクセスするプロセッサコアについての情報を選択された単一ポインタエントリに記録する。
813.単一の訪問者を無効にし、アクセスするプロセッサコアについての情報を記録する。
選択された単一ポインタエントリに記録された単一の訪問者が決定され、無効メッセージが単一の訪問者に送信され、アクセスするプロセッサコアについての情報が、選択された単一ポインタエントリに記録される。
本発明のこの実施例では、単一ポインタエントリ(すなわち、第1の単一ポインタエントリ)がデータブロック(前述の第1のデータブロック)に割り当てられた後に、第1のデータブロックの単一の訪問者(すなわち、第1のプロセッサコア)が第1の単一ポインタエントリに記録される。この場合、第1のデータブロックは、第1のプロセッサコアによりプライベートに所有される。第1のデータブロックが他のプロセッサコア(第2のプロセッサコアとして表される)によりアクセスされた場合、共有エントリが共有エントリ配列において割り当てられる必要があり、複数の訪問者(第1のプロセッサコア及び第2のプロセッサコア)についての情報が、共有エントリを使用することにより記録される。
したがって、任意選択で、図9aに示すように、この方法600は以下を更に含んでもよい。
S671.第2のプロセッサコアにより送信された第2のアクセス要求を受信し、第2のアクセス要求は、ディレクトリ内の第1のデータブロックに対応するエントリにアクセスするために使用される。
S672.第2のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する第1の単一ポインタエントリを有すると決定する。
S673.第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた共有エントリを有さないと決定された場合、第1の単一ポインタエントリに従って、第1のデータブロックの単一の訪問者が第1のプロセッサコアであると決定する。
S674.共有エントリ配列内の第1の共有エントリを割り当て、第1の単一ポインタエントリと第1の共有エントリとの間に関連付け関係を確立し、第1のプロセッサコアについての情報及び第2のプロセッサコアについての情報を第1の共有エントリに記録する。
具体的には、第1の共有エントリが割り当てられるときに、共有エントリ配列が未使用の共有エントリを有する場合、共有エントリは、第1の共有エントリとして、未使用の共有エントリから選択される。
共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者についての情報を記録する共有エントリを有する場合、1つのみの訪問者についての情報を記録する共有エントリが選択され、訪問者についての記録された情報が、選択された共有エントリに関連付けられた単一ポインタエントリに書き込まれる。
共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者についての情報を記録する共有エントリも有さない場合、共有エントリは、最長時間未使用の原理に従って選択される。選択された共有エントリに記録された訪問者の数量が所定の閾値より大きい場合、選択された共有エントリに関連付けられた単一ポインタエントリが、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すように設定される。選択された共有エントリに記録された訪問者の数量が所定の閾値より大きくない場合、記録された訪問者のうち1つの訪問者についての情報が、選択された共有エントリに関連付けられた単一ポインタエントリに書き込まれ、無効メッセージが、記録された訪問者のうち他の訪問者に送信される。
すなわち、共有エントリが割り当てられるときに、未使用の共有エントリが優先的に使用される。未使用の共有エントリが存在しない場合、使用されている共有エントリが取り消される必要があり、1つのみの訪問者を記録する共有エントリが優先的に選択される。1つのみの訪問者を記録する共有エントリが存在しない場合、最長時間未使用である共有エントリが選択される。1つのみの訪問者を記録する共有エントリが取り消される場合、単一の訪問者は、関連付けられた単一ポインタエントリに書き込まれる必要があり、これは、訪問者の情報の喪失を回避する。複数の訪問者を記録する共有エントリが取り消される場合、共有リストは、訪問者の数量に従って異なる方式で圧縮されてもよく、関連付けられた単一ポインタエントリに記憶されてもよい。具体的には、訪問者の数量が所定の閾値より大きい場合、関連付けられた単一ポインタエントリが、データブロックが全てのプロセッサコアにより共有されることを示すように設定され、これは、アップコンバージョンと呼ばれてもよい。訪問者の数量が所定の閾値より大きくない場合、訪問者のうち1つの訪問者が、関連付けられた単一ポインタエントリに書き込まれ、無効メッセージが、他の訪問者に送信され、すなわち、1つのみの訪問者が保持され、これは、ダウンコンバージョンと呼ばれてもよい。
例えば、図9bに示すように、アップコンバージョンが実行される場合、関連付けられた単一ポインタエントリ内の全共有ビットは1に設定され、データブロックが全てのプロセッサコアにより共有されることを示す。ダウンコンバージョンが実行される場合、1つのみの訪問者(図9bに示す番号3の訪問者)が保持され、訪問者が関連付けられた単一ポインタエントリに記録される。
取り消された共有エントリは、他のデータブロックに割り当てられてもよい。すなわち、本発明の実施例では、共有エントリは、データ共有における変化に従って動的に割り当てられてもよい。このように、ディレクトリリソースがより柔軟に利用され、ディレクトリリソースの利用が改善されることができる。
共有エントリが取り消される場合、単一ポインタエントリは、共有エントリに従ってアクセスされる必要がある。この場合、関連付けられた単一ポインタエントリは、共有エントリに従って決定されてもよい。具体的には、関連付けられた単一ポインタエントリは、共有エントリ内の関連付け構造に従って決定されてもよい。
図5に示すディレクトリ構造を例として使用して、単一ポインタエントリは、以下の方式で共有エントリに従ってアクセスされてもよい。
1.単一ポインタエントリ配列内のセットの番号を取得するために、共有エントリが属するセットの番号及び上位アドレスが一緒に接合される。
単一ポインタエントリ配列には比較的大量のセットが存在し、共有エントリ配列には比較的少量のセットが存在する。したがって、単一ポインタエントリのセット番号は、上位アドレスと共有エントリのセット番号とを結合することにより取得される必要がある。
単一ポインタエントリ配列が4個のウェイと64個のセットとを含み、共有エントリ配列が8個のウェイと16個のセットとを含むことが仮定される。
共有エントリが第5セット(b_0101)に属し、上位アドレスがb_10であり、ウェイ選択ビットがb_01であることを仮定すると、対応する単一ポインタエントリのセット番号は、共有エントリのセット番号と上位アドレスとを接合することにより取得され、b_100101、すなわち、37である。
2.1つのセット内の単一ポインタエントリの複数のウェイを読み取るために、単一ポインタエントリ配列がアクセスされる。
セット内の4個の単一ポインタエントリ(4個のウェイ)を取得するために、単一ポインタエントリ配列内の第37セットが、前述のステップにおいて取得されたセット番号に従ってアクセスされる。
3.ウェイ選択が、共有エントリ内のウェイ選択ビットに従って単一ポインタエントリの複数のウェイに対して実行される。
共有エントリ内のウェイ選択ビットがウェイ選択のために使用され、ウェイ選択ビットがb_01、すなわち、第1のウェイであり、これにより、関連付けられた単一ポインタエントリを取得する。
本発明の様々な実施例において、前述の処理のシーケンス番号は実行順序を意味しないことが理解されるべきである。処理の実行順序は処理の機能及び固有の論理により決定されるべきであり、本発明の実施例の実現処理における限定として解釈されるべきではない。
図10は、本発明の実施例によるディレクトリキャッシュデバイス1000の概略ブロック図である。図10に示すように、ディレクトリキャッシュデバイス1000は、ディレクトリ記憶ユニット1010と実行ユニット1020とを含む。
ディレクトリ記憶ユニット1010は、マルチコアシステム内にあるディレクトリを記憶するように構成される。マルチコアシステムは、共有データキャッシュと複数のプロセッサコアとを含む。共有データキャッシュ内のデータブロックは、複数のプロセッサコアのうち少なくとも1つのプロセッサコアにコピーされる。ディレクトリは、共有データキャッシュ内のデータブロックの訪問者についての情報を記録するために使用される。データブロックの訪問者は、データブロックのコピーが記憶されているプロセッサコアである。ディレクトリは、単一ポインタエントリ配列と共有エントリ配列とを含み、単一ポインタエントリ配列内の各単一ポインタエントリは、データブロックの単一の訪問者についての情報を記録するため、或いは単一ポインタエントリと共有エントリ配列内の共有エントリとの間の関連付けについての情報を記録するために使用され、共有エントリ配列内の各共有エントリは、データブロックの複数の訪問者についての情報を記録するために使用される。
実行ユニット1020は、
第1のプロセッサコアにより送信された第1のアクセス要求を受信するように構成され、第1のアクセス要求は、ディレクトリ内の第1のデータブロックに対応するエントリにアクセスするために使用され、
第1のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する第1の単一ポインタエントリを有すると決定するように構成され、
第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた第1の共有エントリを有すると決定した場合、第1の共有エントリに従って、第1のデータブロックの複数の訪問者を決定するように構成される。
本発明のこの実施例によるディレクトリキャッシュデバイスでは、単一ポインタエントリ配列と共有エントリ配列とを含むディレクトリ構造が使用される。複数の訪問者が記録される必要がない場合、単一ポインタエントリは、共有エントリに関連付けられない。複数の訪問者が記録される必要がある場合、単一ポインタエントリは、共有エントリに関連付けられる。このように、ディレクトリ内のディレクトリエントリの平均サイズが大きく圧縮されることが可能になり、性能ロスが比較的非常に小さい。したがって、ディレクトリにより占有される記憶リソースは、低減されることが可能になり、システムのスケーラビリティが改善されることが可能になる。
本発明のこの実施例では、任意選択で、単一ポインタエントリは、タグと共有エントリ関連付けビットと単一ポインタとを含む。タグは、データブロックに対応させるために使用される。共有エントリ関連付けビットは、単一ポインタエントリが共有エントリに関連付けられているか否かを示すために使用される。単一ポインタは、データブロックが単一の訪問者を有する場合、単一の訪問者についての情報を記録し、単一ポインタエントリが共有エントリに関連付けられている場合、単一ポインタエントリと共有エントリとの間の関連付けについての情報を記録するために使用される。
共有エントリは、共有者記録構造と関連付け構造とを含む。共有者記録構造は、データブロックの複数の訪問者についての情報を記録するために使用され、関連付け構造は、単一ポインタエントリを関連付けるために使用される。
本発明のこの実施例では、任意選択で、単一ポインタエントリは、全共有ビットを更に含む。
全共有ビットは、単一ポインタエントリが共有エントリに関連付けられていない場合、データブロックが単一の訪問者を有することを示すため、或いはデータブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すために使用される。
本発明のこの実施例では、任意選択で、単一ポインタエントリ配列内の単一ポインタエントリは、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すために更に使用され、実行ユニット1020は、
第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた第1の共有エントリを有さないと決定した場合、第1の単一ポインタエントリに従って、第1のデータブロックの単一の訪問者、又は第1のデータブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを決定するように更に構成される。
本発明のこの実施例では、任意選択で、実行ユニット1020が第1のプロセッサコアにより送信された第1のアクセス要求を受信した後に、実行ユニット1020は、
第1のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する単一ポインタエントリを有さないと決定し、
単一ポインタエントリ配列において、第1のデータブロックに対応する第1の単一ポインタエントリを第1のデータブロックに割り当て、第1のプロセッサコアについての情報を第1の単一ポインタエントリに記録するように更に構成される。
本発明のこの実施例では、任意選択で、実行ユニット1020は、
単一ポインタエントリ配列が未使用の単一ポインタエントリを有する場合、第1の単一ポインタエントリとして、未使用の単一ポインタエントリから単一ポインタエントリを選択し、第1のプロセッサコアについての情報を記録するように構成され、或いは
単一ポインタエントリ配列が未使用の単一ポインタエントリを有さない場合、最長時間未使用の原理に従って、単一ポインタエントリを選択し、選択された単一ポインタエントリが共有エントリに関連付けられておらず、単一の訪問者についての情報を記録する場合、無効メッセージを記録された単一の訪問者に送信し、第1のプロセッサコアについての情報を選択された単一ポインタエントリに記録するように構成され、或いは
選択された単一ポインタエントリが共有エントリに関連付けられておらず、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示す場合、無効メッセージを全てのプロセッサコアにブロードキャストし、第1のプロセッサコアについての情報を選択された単一ポインタエントリに記録するように構成され、或いは
選択された単一ポインタエントリが共有エントリに関連付けられている場合、選択された単一ポインタエントリに関連付けられた共有エントリに従って、関連付けられた共有エントリに記録された複数の訪問者を決定し、無効メッセージを記録された複数の訪問者に送信し、第1のプロセッサコアについての情報を選択された単一ポインタエントリに記録するように構成される。
本発明のこの実施例では、任意選択で、実行ユニット1020は、
第2のプロセッサコアにより送信された第2のアクセス要求を受信するように更に構成され、第2のアクセス要求は、ディレクトリ内の第1のデータブロックに対応するエントリにアクセスするために使用され、
第2のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する第1の単一ポインタエントリを有すると決定するように更に構成され、
第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた共有エントリを有さないと決定した場合、第1の単一ポインタエントリに従って、第1のデータブロックの単一の訪問者が第1のプロセッサコアであると決定するように更に構成され、
共有エントリ配列内の第1の共有エントリを割り当て、第1の単一ポインタエントリと第1の共有エントリとの間に関連付け関係を確立し、第1のプロセッサコアについての情報及び第2のプロセッサコアについての情報を第1の共有エントリに記録するように更に構成される。
本発明のこの実施例では、任意選択で、実行ユニット1020は、
共有エントリ配列が未使用の共有エントリを有する場合、第1の共有エントリとして、未使用の共有エントリから共有エントリを選択するように構成され、或いは
共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者についての情報を記録する共有エントリを有する場合、1つのみの訪問者についての情報を記録する共有エントリを選択し、訪問者についての記録された情報を、選択された共有エントリに関連付けられた単一ポインタエントリに書き込むように構成され、或いは
共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者を記録する共有エントリも有さない場合、最長時間未使用の原理に従って、共有エントリを選択し、選択された共有エントリに記録された訪問者の数量が所定の閾値より大きい場合、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すように、選択された共有エントリに関連付けられた単一ポインタエントリを設定し、或いは選択された共有エントリに記録された訪問者の数量が所定の閾値より大きくない場合、記録された訪問者のうち1つの訪問者についての情報を、選択された共有エントリに関連付けられた単一ポインタエントリに書き込み、無効メッセージを記録された訪問者のうち他の訪問者に送信するように構成される。
本発明のこの実施例では、ディレクトリキャッシュデバイス1000内のディレクトリ記憶ユニット1010に記憶されたディレクトリは、本発明の前述の実施例によるディレクトリでもよい。実行ユニット1020は、前述の方法の実施例における各処理を実行してもよい。対応する具体的な説明については、前述の実施例を参照する。簡潔にするために、詳細はここでは再び説明しない。
本発明の実施例は、マルチコアシステムを更に提供する。図11に示すように、マルチコアシステム1100は、複数のプロセッサコア1110と、共有データキャッシュ1120と、本発明の前述の実施例におけるディレクトリキャッシュデバイス1000とを含む。
具体的には、マルチコアシステム100と比べて、本発明のこの実施例におけるマルチコアシステム1100は、新たなディレクトリキャッシュデバイス1000を使用する。ディレクトリキャッシュデバイス1000は、本発明のこの実施例において提供される新たなディレクトリ構造を含む。
当業者は、この明細書に開示された実施例に記載の例と組み合わせて、ユニット及びアルゴリズムのステップが、電子ハードウェア、コンピュータソフトウェア又はこれらの組み合わせにより実現され得ることを認識し得る。ハードウェアとソフトウェアとの間の互換性を明確に記載するために、前述では、機能に従って各例の構成及びステップを一般的に説明している。機能がハードウェアにより実行されるかソフトウェアにより実行されるかは、技術的解決策の特定の用途及び設計上の制約条件に依存する。当業者は、特定の用途毎に記載の機能を実現するために異なる方法を使用してもよいが、この実現が本発明の範囲を超えると考えられるべきではない。
便宜上且つ簡潔な説明の目的で、前述のシステム、装置及びユニットの詳細な動作処理について、前述の方法の実施例における対応する処理に参照が行われてもよく、詳細はここでは再び説明しないことが当業者により明らかに理解され得る。
この出願において提供されるいくつかの実施例において、開示のシステム、装置及び方法は、他の方式で実現されてもよいことが理解されるべきである。例えば、記載の装置の実施例は、単なる例である。例えば、ユニットの分割は、単に論理的な機能分割であり、実際の実現では他の分割でもよい。例えば、複数のユニット又はコンポーネントは結合されてもよく、或いは他のシステムに統合されてもよく、或いはいくつかの特徴が無視されてもよく或いは実行されなくてもよい。さらに、表示又は説明した相互結合若しくは直接結合又は通信接続は、いくつかのインタフェースを通じて実現されてもよい。装置又はユニットの間の間接結合又は通信接続は、電子的、機械的或いは他の形式で実現されてもよい。
別々の部分として記載したユニットは、物理的に別々でもよく或いは別々でなくてもよく、ユニットとして表示された部分は、物理的なユニットでもよく或いは物理的なユニットでなくてもよく、1つの場所に位置してもよく、或いは複数のネットワークユニットに分散されてもよい。ユニットの一部又は全部は、本発明の実施例の解決策の目的を達成するために、実際のニーズに従って選択されてもよい。
さらに、本発明の実施例における機能ユニットは、1つの処理ユニットに統合されてもよく、或いはユニットのそれぞれが物理的に単独で存在してもよく、或いは2つ以上のユニットが1つのユニットに統合されてもよい。統合されたユニットは、ハードウェアの形式で実現されてもよく、或いはソフトウェア機能ユニットの形式で実現されてもよい。
統合されたユニットがソフトウェア機能ユニットの形式で実現され、独立したプロダクトとして販売又は使用される場合、統合されたユニットは、コンピュータ読み取り可能記憶媒体に記憶されてもよい。このような理解に基づいて、本発明の技術的解決策は、本質的に、或いは、従来技術に寄与する部分又は技術的解決策の全部若しくは一部は、ソフトウェアプロダクトの形式で実現されてもよい。ソフトウェアプロダクトは、記憶媒体に記憶され、コンピュータデバイス(パーソナルコンピュータ、サーバ又はネットワークデバイスでもよい)に対して本発明の実施例に記載の方法のステップの全部又は一部を実行するように命令するためのいくつかの命令を含む。前述の記憶媒体は、USBフラッシュドライブ、取り外し可能ハードディスク、読み取り専用メモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、磁気ディスク又は光ディスクのようなプログラムコードを記憶することができるいずれかの媒体を含む。
前述の説明は、本発明の単に具体的な実施例に過ぎず、本発明の保護範囲を限定することを意図するものではない。本発明に開示された技術範囲内で当業者により容易に理解される如何なる変更又は置換も本発明の保護範囲内に入るものとする。したがって、本発明の保護範囲は、特許請求の範囲の保護範囲に従うものとする。
第2の態様又は第2の態様の前述の可能な実現方式のいずれか1つを参照して、第6の可能な実現方式では、単一ポインタエントリは、タグと共有エントリ関連付けビットと単一ポインタとを含み、タグは、データブロックに対応させるために使用され、共有エントリ関連付けビットは、単一ポインタエントリが共有エントリに関連付けられているか否かを示すために使用され、単一ポインタは、データブロックが単一の訪問者を有する場合、データブロックの単一の訪問者についての情報を記録し、単一ポインタエントリが共有エントリに関連付けられている場合、単一ポインタエントリと共有エントリとの間の関連付けについての情報を記録するために使用され、
共有エントリは、共有者記録構造と関連付け構造とを含み、共有者記録構造は、データブロックの複数の訪問者についての情報を記録するために使用され、関連付け構造は、単一ポインタエントリを関連付けるために使用される。
第4の態様を参照して、第1の可能な実現方式では、単一ポインタエントリは、タグと共有エントリ関連付けビットと単一ポインタとを含み、タグは、データブロックに対応させるために使用され、共有エントリ関連付けビットは、単一ポインタエントリが共有エントリに関連付けられているか否かを示すために使用され、単一ポインタは、データブロックが単一の訪問者を有する場合、データブロックの単一の訪問者についての情報を記録し、単一ポインタエントリが共有エントリに関連付けられている場合、単一ポインタエントリと共有エントリとの間の関連付けについての情報を記録するために使用され、
共有エントリは、共有者記録構造と関連付け構造とを含み、共有者記録構造は、データブロックの複数の訪問者についての情報を記録するために使用され、関連付け構造は、単一ポインタエントリを関連付けるために使用される。
ア(Core)はまた、カーネルとも呼ばれてもよく、CPU(Central Processing Unit)の最も重要なコンポーネントである。コアは、特定の生産プロセスを使用することにより、単結晶シリコンでできている。CPU内の計算、コマンド受信/記憶及びデータ処理の全ては、プロセッサコアにより実行される。「複数のプロセッサコア」という用語は、少なくとも2つのプロセッサコアが含まれることを意味する。「複数のプロセッサコア」は、従来技術におけるマルチコア(Multi-Core)及び他コア(Many Core)の用途の範囲をカバーする。
ディレクトリは、ディレクトリキャッシュ130に記憶され、具体的には、ディレクトリキャッシュ130内のディレクトリ記憶ユニットに記憶されてもよい。
すなわち、共有エントリが割り当てられるときに、未使用の共有エントリが優先的に使用される。未使用の共有エントリが存在しない場合、使用されている共有エントリが取り消される必要があり、1つのみの訪問者を記録する共有エントリが優先的に選択される。1つのみの訪問者を記録する共有エントリが存在しない場合、最長時間未使用である共有エントリが選択される。1つのみの訪問者を記録する共有エントリが取り消される場合、単一の訪問者は、関連付けられた単一ポインタエントリに書き込まれる必要があり、これは、訪問者の情報の喪失を回避する。複数の訪問者を記録する共有エントリが取り消される場合、訪問者リストは、訪問者の数量に従って異なる方式で圧縮されてもよく、関連付けられた単一ポインタエントリに記憶されてもよい。具体的には、訪問者の数量が所定の閾値より大きい場合、関連付けられた単一ポインタエントリが、データブロックが全てのプロセッサコアにより共有されることを示すように設定され、これは、アップコンバージョンと呼ばれてもよい。訪問者の数量が所定の閾値より大きくない場合、訪問者のうち1つの訪問者が、関連付けられた単一ポインタエントリに書き込まれ、無効メッセージが、他の訪問者に送信され、すなわち、1つのみの訪問者が保持され、これは、ダウンコンバージョンと呼ばれてもよい。

Claims (21)

  1. マルチコアシステムに適用される、前記マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法であり、前記マルチコアシステムは、共有データキャッシュと複数のプロセッサコアとを含み、前記共有データキャッシュ内のデータブロックは、前記複数のプロセッサコアのうち少なくとも1つのプロセッサコアにコピーされ、前記マルチコアシステムは、前記データ訪問者ディレクトリを更に含み、前記ディレクトリは、前記共有データキャッシュ内の前記データブロックの訪問者についての情報を記録するために使用され、前記データブロックの前記訪問者は、前記データブロックのコピーが記憶されている前記プロセッサコアであり、
    前記ディレクトリは、単一ポインタエントリ配列と共有エントリ配列とを含み、前記単一ポインタエントリ配列内の各単一ポインタエントリは、データブロックの単一の訪問者についての情報を記録するため、或いは前記単一ポインタエントリと前記共有エントリ配列内の共有エントリとの間の関連付けについての情報を記録するために使用され、前記共有エントリ配列内の各共有エントリは、データブロックの複数の訪問者についての情報を記録するために使用される方法であって、
    第1のプロセッサコアにより送信された第1のアクセス要求を受信するステップであり、前記第1のアクセス要求は、前記ディレクトリ内の第1のデータブロックに対応するエントリにアクセスするために使用されるステップと、
    前記第1のアクセス要求に従って、前記単一ポインタエントリ配列が前記第1のデータブロックに対応する第1の単一ポインタエントリを有すると決定するステップと、
    前記第1の単一ポインタエントリに従って、前記共有エントリ配列が前記第1の単一ポインタエントリに関連付けられた第1の共有エントリを有すると決定した場合、前記第1の共有エントリに従って、前記第1のデータブロックの複数の訪問者を決定するステップと
    を含む方法。
  2. 前記単一ポインタエントリ配列内の前記単一ポインタエントリは、前記データブロックが前記マルチコアシステム内の全てのプロセッサコアにより共有されることを示すために更に使用され、前記方法は、
    前記第1の単一ポインタエントリに従って、前記共有エントリ配列が前記第1の単一ポインタエントリに関連付けられた第1の共有エントリを有さないと決定した場合、前記第1の単一ポインタエントリに従って、前記第1のデータブロックの単一の訪問者、又は前記第1のデータブロックが前記マルチコアシステム内の全ての前記プロセッサコアにより共有されることを決定するステップ
    を更に含む、請求項1に記載の方法。
  3. 第1のプロセッサコアにより送信された第1のアクセス要求を受信した後に、前記方法は、
    前記第1のアクセス要求に従って、前記単一ポインタエントリ配列が前記第1のデータブロックに対応する単一ポインタエントリを有さないと決定するステップと、
    前記単一ポインタエントリ配列において、前記第1のデータブロックに対応する前記第1の単一ポインタエントリを前記第1のデータブロックに割り当て、前記第1のプロセッサコアについての情報を前記第1の単一ポインタエントリに記録するステップと
    を更に含む、請求項1又は2に記載の方法。
  4. 前記単一ポインタエントリ配列において、前記第1のデータブロックに対応する前記第1の単一ポインタエントリを前記第1のデータブロックに割り当て、前記第1のプロセッサコアについての情報を前記第1の単一ポインタエントリに記録するステップは、
    前記単一ポインタエントリ配列が未使用の単一ポインタエントリを有する場合、前記第1の単一ポインタエントリとして、前記未使用の単一ポインタエントリから単一ポインタエントリを選択し、前記第1のプロセッサコアについての前記情報を記録するステップ、又は
    前記単一ポインタエントリ配列が未使用の単一ポインタエントリを有さない場合、最長時間未使用の原理に従って、単一ポインタエントリを選択し、前記選択された単一ポインタエントリが共有エントリに関連付けられておらず、単一の訪問者についての情報を記録する場合、無効メッセージを前記記録された単一の訪問者に送信し、前記第1のプロセッサコアについての前記情報を前記選択された単一ポインタエントリに記録するステップ、又は
    前記選択された単一ポインタエントリが共有エントリに関連付けられておらず、前記データブロックが前記マルチコアシステム内の全ての前記プロセッサコアにより共有されることを示す場合、無効メッセージを全ての前記プロセッサコアにブロードキャストし、前記第1のプロセッサコアについての前記情報を前記選択された単一ポインタエントリに記録するステップ、又は
    前記選択された単一ポインタエントリが共有エントリに関連付けられている場合、前記選択された単一ポインタエントリに関連付けられた前記共有エントリに従って、前記関連付けられた共有エントリに記録された前記複数の訪問者を決定し、無効メッセージを前記記録された複数の訪問者に送信し、前記第1のプロセッサコアについての前記情報を前記選択された単一ポインタエントリに記録するステップ
    を含む、請求項3に記載の方法。
  5. 第2のプロセッサコアにより送信された第2のアクセス要求を受信するステップであり、前記第2のアクセス要求は、前記ディレクトリ内の前記第1のデータブロックに対応する前記エントリにアクセスするために使用されるステップと、
    前記第2のアクセス要求に従って、前記単一ポインタエントリ配列が前記第1のデータブロックに対応する前記第1の単一ポインタエントリを有すると決定するステップと、
    前記第1の単一ポインタエントリに従って、前記共有エントリ配列が前記第1の単一ポインタエントリに関連付けられた共有エントリを有さないと決定した場合、前記第1の単一ポインタエントリに従って、前記第1のデータブロックの前記単一の訪問者が前記第1のプロセッサコアであると決定するステップと、
    前記共有エントリ配列内の前記第1の共有エントリを割り当て、前記第1の単一ポインタエントリと前記第1の共有エントリとの間に関連付け関係を確立し、前記第1のプロセッサコアについての前記情報及び前記第2のプロセッサコアについての情報を前記第1の共有エントリに記録するステップと
    を更に含む、請求項3又は4に記載の方法。
  6. 前記共有エントリ配列内の前記第1の共有エントリを割り当てるステップは、
    前記共有エントリ配列が未使用の共有エントリを有する場合、前記第1の共有エントリとして、前記未使用の共有エントリから共有エントリを選択するステップ、又は
    前記共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者についての情報を記録する共有エントリを有する場合、前記1つのみの訪問者についての前記情報を記録する前記共有エントリを選択し、前記訪問者についての前記記録された情報を、前記選択された共有エントリに関連付けられた単一ポインタエントリに書き込むステップ、又は
    前記共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者についての情報を記録する共有エントリも有さない場合、前記最長時間未使用の原理に従って、共有エントリを選択し、前記選択された共有エントリに記録された訪問者の数量が所定の閾値より大きい場合、前記データブロックが前記マルチコアシステム内の全ての前記プロセッサコアにより共有されることを示すように、前記選択された共有エントリに関連付けられた単一ポインタエントリを設定し、或いは前記選択された共有エントリに記録された訪問者の数量が所定の閾値より大きくない場合、前記記録された訪問者のうち1つの訪問者についての情報を、前記選択された共有エントリに関連付けられた単一ポインタエントリに書き込み、無効メッセージを前記記録された訪問者のうち他の訪問者に送信するステップ
    を含む、請求項5に記載の方法。
  7. 前記単一ポインタエントリは、タグと共有エントリ関連付けビットと単一ポインタとを含み、前記タグは、前記データブロックに対応させるために使用され、前記共有エントリ関連付けビットは、前記単一ポインタエントリが前記共有エントリに関連付けられているか否かを示すために使用され、前記単一ポインタは、前記データブロックが前記単一の訪問者を有する場合、前記データブロックの前記単一の訪問者についての前記情報を記録し、前記単一ポインタエントリが前記共有エントリに関連付けられている場合、前記単一ポインタエントリと前記共有エントリとの間の前記関連付けについての前記情報を記録するために使用され、
    前記共有エントリは、共有者記録構造と関連付け構造とを含み、前記共有者記録構造は、前記データブロックの前記複数の訪問者についての前記情報を記録するために使用され、前記関連付け構造は、前記単一ポインタエントリを関連付けるために使用される、請求項1乃至6のうちいずれか1項に記載の方法。
  8. 前記単一ポインタエントリは、全共有ビットを更に含み、
    前記全共有ビットは、前記単一ポインタエントリが前記共有エントリに関連付けられていない場合、前記データブロックが前記単一の訪問者を有することを示すため、或いは前記データブロックが前記マルチコアシステム内の全ての前記プロセッサコアにより共有されることを示すために使用される、請求項7に記載の方法。
  9. マルチコアシステム内にあるデータ訪問者ディレクトリを記憶するように構成されたディレクトリ記憶ユニットであり、前記マルチコアシステムは、共有データキャッシュと複数のプロセッサコアとを含み、前記共有データキャッシュ内のデータブロックは、前記複数のプロセッサコアのうち少なくとも1つのプロセッサコアにコピーされ、前記ディレクトリは、前記共有データキャッシュ内の前記データブロックの訪問者についての情報を記録するために使用され、前記データブロックの前記訪問者は、前記データブロックのコピーが記憶されている前記プロセッサコアであり、前記ディレクトリは、単一ポインタエントリ配列と共有エントリ配列とを含み、前記単一ポインタエントリ配列内の各単一ポインタエントリは、データブロックの単一の訪問者についての情報を記録するため、或いは前記単一ポインタエントリと前記共有エントリ配列内の共有エントリとの間の関連付けについての情報を記録するために使用され、前記共有エントリ配列内の各共有エントリは、データブロックの複数の訪問者についての情報を記録するために使用されるディレクトリ記憶ユニットと、
    第1のプロセッサコアにより送信された第1のアクセス要求を受信するように構成され、前記第1のアクセス要求は、前記ディレクトリ内の第1のデータブロックに対応するエントリにアクセスするために使用され、
    前記第1のアクセス要求に従って、前記単一ポインタエントリ配列が前記第1のデータブロックに対応する第1の単一ポインタエントリを有すると決定するように構成され、
    前記第1の単一ポインタエントリに従って、前記共有エントリ配列が前記第1の単一ポインタエントリに関連付けられた第1の共有エントリを有すると決定した場合、前記第1の共有エントリに従って、前記第1のデータブロックの複数の訪問者を決定するように構成された実行ユニットと
    を含むディレクトリキャッシュデバイス。
  10. 前記単一ポインタエントリ配列内の前記単一ポインタエントリは、前記データブロックが前記マルチコアシステム内の全てのプロセッサコアにより共有されることを示すために更に使用され、前記実行ユニットは、
    前記第1の単一ポインタエントリに従って、前記共有エントリ配列が前記第1の単一ポインタエントリに関連付けられた第1の共有エントリを有さないと決定した場合、前記第1の単一ポインタエントリに従って、前記第1のデータブロックの単一の訪問者、又は前記第1のデータブロックが前記マルチコアシステム内の全ての前記プロセッサコアにより共有されることを決定するように更に構成される、請求項9に記載のディレクトリキャッシュデバイス。
  11. 前記実行ユニットが前記第1のプロセッサコアにより送信された前記第1のアクセス要求を受信した後に、前記実行ユニットは、
    前記第1のアクセス要求に従って、前記単一ポインタエントリ配列が前記第1のデータブロックに対応する単一ポインタエントリを有さないと決定し、
    前記単一ポインタエントリ配列において、前記第1のデータブロックに対応する前記第1の単一ポインタエントリを前記第1のデータブロックに割り当て、前記第1のプロセッサコアについての情報を前記第1の単一ポインタエントリに記録するように更に構成される、請求項9又は10に記載のディレクトリキャッシュデバイス。
  12. 前記実行ユニットは、
    前記単一ポインタエントリ配列が未使用の単一ポインタエントリを有する場合、前記第1の単一ポインタエントリとして、前記未使用の単一ポインタエントリから単一ポインタエントリを選択し、前記第1のプロセッサコアについての前記情報を記録するように更に構成され、或いは
    前記単一ポインタエントリ配列が未使用の単一ポインタエントリを有さない場合、最長時間未使用の原理に従って、単一ポインタエントリを選択し、前記選択された単一ポインタエントリが共有エントリに関連付けられておらず、前記単一の訪問者についての情報を記録する場合、無効メッセージを前記記録された単一の訪問者に送信し、前記第1のプロセッサコアについての前記情報を前記選択された単一ポインタエントリに記録するように更に構成され、或いは
    前記選択された単一ポインタエントリが共有エントリに関連付けられておらず、前記データブロックが前記マルチコアシステム内の全ての前記プロセッサコアにより共有されることを示す場合、無効メッセージを全ての前記プロセッサコアにブロードキャストし、前記第1のプロセッサコアについての前記情報を前記選択された単一ポインタエントリに記録するように更に構成され、或いは
    前記選択された単一ポインタエントリが共有エントリに関連付けられている場合、前記選択された単一ポインタエントリに関連付けられた前記共有エントリに従って、前記関連付けられた共有エントリに記録された前記複数の訪問者を決定し、無効メッセージを前記記録された複数の訪問者に送信し、前記第1のプロセッサコアについての前記情報を前記選択された単一ポインタエントリに記録するように更に構成される、請求項11に記載のディレクトリキャッシュデバイス。
  13. 前記実行ユニットは、
    第2のプロセッサコアにより送信された第2のアクセス要求を受信するように更に構成され、前記第2のアクセス要求は、前記ディレクトリ内の前記第1のデータブロックに対応する前記エントリにアクセスするために使用され、
    前記第2のアクセス要求に従って、前記単一ポインタエントリ配列が前記第1のデータブロックに対応する前記第1の単一ポインタエントリを有すると決定するように更に構成され、
    前記第1の単一ポインタエントリに従って、前記共有エントリ配列が前記第1の単一ポインタエントリに関連付けられた共有エントリを有さないと決定した場合、前記第1の単一ポインタエントリに従って、前記第1のデータブロックの前記単一の訪問者が前記第1のプロセッサコアであると決定するように更に構成され、
    前記共有エントリ配列内の前記第1の共有エントリを割り当て、前記第1の単一ポインタエントリと前記第1の共有エントリとの間に関連付け関係を確立し、前記第1のプロセッサコアについての前記情報及び前記第2のプロセッサコアについての情報を前記第1の共有エントリに記録するように更に構成される、請求項11又は12に記載のディレクトリキャッシュデバイス。
  14. 前記実行ユニットは、
    前記共有エントリ配列が未使用の共有エントリを有する場合、前記第1の共有エントリとして、前記未使用の共有エントリから共有エントリを選択するように構成され、或いは
    前記共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者についての情報を記録する共有エントリを有する場合、前記1つのみの訪問者についての前記情報を記録する前記共有エントリを選択し、前記訪問者についての前記記録された情報を、前記選択された共有エントリに関連付けられた単一ポインタエントリに書き込むように構成され、或いは
    前記共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者についての情報を記録する共有エントリも有さない場合、前記最長時間未使用の原理に従って、共有エントリを選択し、前記選択された共有エントリに記録された訪問者の数量が所定の閾値より大きい場合、前記データブロックが前記マルチコアシステム内の全ての前記プロセッサコアにより共有されることを示すように、前記選択された共有エントリに関連付けられた単一ポインタエントリを設定し、或いは前記選択された共有エントリに記録された訪問者の数量が所定の閾値より大きくない場合、前記記録された訪問者のうち1つの訪問者についての情報を、前記選択された共有エントリに関連付けられた単一ポインタエントリに書き込み、無効メッセージを前記記録された訪問者のうち他の訪問者に送信するように構成される、請求項13に記載のディレクトリキャッシュデバイス。
  15. 前記単一ポインタエントリは、タグと共有エントリ関連付けビットと単一ポインタとを含み、前記タグは、前記データブロックに対応させるために使用され、前記共有エントリ関連付けビットは、前記単一ポインタエントリが前記共有エントリに関連付けられているか否かを示すために使用され、前記単一ポインタは、前記データブロックが前記単一の訪問者を有する場合、前記データブロックの前記単一の訪問者についての前記情報を記録し、前記単一ポインタエントリが前記共有エントリに関連付けられている場合、前記単一ポインタエントリと前記共有エントリとの間の前記関連付けについての前記情報を記録するために使用され、
    前記共有エントリは、共有者記録構造と関連付け構造とを含み、前記共有者記録構造は、前記データブロックの前記複数の訪問者についての前記情報を記録するために使用され、前記関連付け構造は、前記単一ポインタエントリを関連付けるために使用される、請求項9乃至14のうちいずれか1項に記載のディレクトリキャッシュデバイス。
  16. 前記単一ポインタエントリは、全共有ビットを更に含み、
    前記全共有ビットは、前記単一ポインタエントリが前記共有エントリに関連付けられていない場合、前記データブロックが前記単一の訪問者を有することを示すため、或いは前記データブロックが前記マルチコアシステム内の全ての前記プロセッサコアにより共有されることを示すために使用される、請求項15に記載のディレクトリキャッシュデバイス。
  17. 複数のプロセッサコアと、共有データキャッシュと、請求項9乃至16のうちいずれか1項に記載のディレクトリキャッシュデバイスとを含むマルチコアシステム。
  18. マルチコアシステム内にあるデータ訪問者ディレクトリを記憶するように構成されたディレクトリ記憶ユニットであり、前記マルチコアシステムは、共有データキャッシュと複数のプロセッサコアとを含み、前記共有データキャッシュ内のデータブロックは、前記複数のプロセッサコアのうち少なくとも1つのプロセッサコアにコピーされ、前記ディレクトリは、前記共有データキャッシュ内の前記データブロックの訪問者についての情報を記録するために使用され、前記データブロックの前記訪問者は、前記データブロックのコピーが記憶されている前記プロセッサコアであるディレクトリ記憶ユニットであって、
    前記ディレクトリは、単一ポインタエントリ配列と共有エントリ配列とを含み、
    前記単一ポインタエントリ配列内の各単一ポインタエントリは、データブロックの単一の訪問者についての情報を記録するため、或いは前記単一ポインタエントリと前記共有エントリ配列内の共有エントリとの間の関連付けについての情報を記録するために使用され、
    前記共有エントリ配列内の各共有エントリは、データブロックの複数の訪問者についての情報を記録するために使用されるディレクトリ記憶ユニット。
  19. 前記単一ポインタエントリは、タグと共有エントリ関連付けビットと単一ポインタとを含み、前記タグは、前記データブロックに対応させるために使用され、前記共有エントリ関連付けビットは、前記単一ポインタエントリが前記共有エントリに関連付けられているか否かを示すために使用され、前記単一ポインタは、前記データブロックが前記単一の訪問者を有する場合、前記データブロックの前記単一の訪問者についての前記情報を記録し、前記単一ポインタエントリが前記共有エントリに関連付けられている場合、前記単一ポインタエントリと前記共有エントリとの間の前記関連付けについての前記情報を記録するために使用され、
    前記共有エントリは、共有者記録構造と関連付け構造とを含み、前記共有者記録構造は、前記データブロックの前記複数の訪問者についての前記情報を記録するために使用され、前記関連付け構造は、前記単一ポインタエントリを関連付けるために使用される、請求項18に記載のディレクトリ記憶ユニット。
  20. 前記単一ポインタエントリは、全共有ビットを含み、
    前記全共有ビットは、前記単一ポインタエントリが前記共有エントリに関連付けられていない場合、前記データブロックが前記単一の訪問者を有することを示すため、或いは前記データブロックが前記マルチコアシステム内の全てのプロセッサコアにより共有されることを示すために使用される、請求項19に記載のディレクトリ記憶ユニット。
  21. 前記共有者記録構造はベクトルである、請求項19又は20に記載のディレクトリ記憶ユニット。
JP2017542831A 2015-02-16 2015-02-16 マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス Active JP6343722B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2015/073192 WO2016131175A1 (zh) 2015-02-16 2015-02-16 多核***中数据访问者目录的访问方法及设备

Publications (2)

Publication Number Publication Date
JP2018508894A true JP2018508894A (ja) 2018-03-29
JP6343722B2 JP6343722B2 (ja) 2018-06-13

Family

ID=56691906

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017542831A Active JP6343722B2 (ja) 2015-02-16 2015-02-16 マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス

Country Status (8)

Country Link
US (1) US20170364442A1 (ja)
EP (1) EP3249539B1 (ja)
JP (1) JP6343722B2 (ja)
KR (1) KR102027391B1 (ja)
CN (2) CN111488293B (ja)
CA (1) CA2976132A1 (ja)
SG (1) SG11201706340TA (ja)
WO (1) WO2016131175A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109117415B (zh) * 2017-06-26 2024-05-14 上海寒武纪信息科技有限公司 数据共享***及其数据共享方法
CN109684237B (zh) * 2018-11-20 2021-06-01 华为技术有限公司 基于多核处理器的数据访问方法和装置
CN112825072B (zh) * 2019-11-21 2023-02-17 青岛海信移动通信技术股份有限公司 通信终端以及数据共享方法
CN114880254A (zh) * 2022-04-02 2022-08-09 锐捷网络股份有限公司 一种表项读取方法、装置及网络设备
CN117807016B (zh) * 2024-03-01 2024-07-09 上海励驰半导体有限公司 多核异构***与外部设备的通信方法、设备、存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1091524A (ja) * 1996-06-18 1998-04-10 Internatl Business Mach Corp <Ibm> キャッシュ・コヒーレンシを維持するための方法及び装置
JP2007193805A (ja) * 2006-01-18 2007-08-02 Internatl Business Mach Corp <Ibm> デュアル・システム・ディレクトリ構造体を有するマルチプロセッサ・システムおよび方法
US20110138128A1 (en) * 2009-12-07 2011-06-09 Yen-Kuang Chen Technique for tracking shared data in a multi-core processor or multi-processor system
US20140032848A1 (en) * 2011-09-09 2014-01-30 University Of Rochester Sharing Pattern-Based Directory Coherence for Multicore Scalability ("SPACE")
US20140229680A1 (en) * 2013-02-11 2014-08-14 Empire Technology Development Llc Aggregating Cache Eviction Notifications to a Directory

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5197139A (en) * 1990-04-05 1993-03-23 International Business Machines Corporation Cache management for multi-processor systems utilizing bulk cross-invalidate
JP3132749B2 (ja) * 1994-12-05 2001-02-05 インターナショナル・ビジネス・マシーンズ・コーポレ−ション マルチプロセッサ・データ処理システム
US7509391B1 (en) * 1999-11-23 2009-03-24 Texas Instruments Incorporated Unified memory management system for multi processor heterogeneous architecture
US6922755B1 (en) * 2000-02-18 2005-07-26 International Business Machines Corporation Directory tree multinode computer system
US6725343B2 (en) * 2000-10-05 2004-04-20 Hewlett-Packard Development Company, L.P. System and method for generating cache coherence directory entries and error correction codes in a multiprocessor system
US6895476B2 (en) * 2002-10-03 2005-05-17 Hewlett-Packard Development Company, L.P. Retry-based late race resolution mechanism for a computer system
US20050273571A1 (en) * 2004-06-02 2005-12-08 Lyon Thomas L Distributed virtual multiprocessor
US7376793B2 (en) * 2005-07-21 2008-05-20 Sun Microsystems, Inc. Cache coherence protocol with speculative writestream
US20070233932A1 (en) * 2005-09-30 2007-10-04 Collier Josh D Dynamic presence vector scaling in a coherency directory
US8195890B1 (en) * 2006-08-22 2012-06-05 Sawyer Law Group, P.C. Method for maintaining cache coherence using a distributed directory with event driven updates
US8065487B2 (en) * 2007-03-21 2011-11-22 International Business Machines Corporation Structure for shared cache eviction
US7840759B2 (en) * 2007-03-21 2010-11-23 International Business Machines Corporation Shared cache eviction
CN100543687C (zh) * 2007-09-04 2009-09-23 杭州华三通信技术有限公司 一种多核***的资源管理方法和控制核
US20110004729A1 (en) * 2007-12-19 2011-01-06 3Leaf Systems, Inc. Block Caching for Cache-Coherent Distributed Shared Memory
US8607237B2 (en) * 2008-06-02 2013-12-10 Microsoft Corporation Collection with local lists for a multi-processor system
US8140825B2 (en) * 2008-08-05 2012-03-20 International Business Machines Corporation Systems and methods for selectively closing pages in a memory
CN101504617B (zh) * 2009-03-23 2011-05-11 华为技术有限公司 一种基于处理器共享内存的数据发送方法及装置
CN101859281A (zh) * 2009-04-13 2010-10-13 廖鑫 基于集中式目录的嵌入式多核缓存一致性方法
US9361297B2 (en) * 2009-07-30 2016-06-07 Adobe Systems Incorporated Web service-based, data binding abstraction method
CN102063406B (zh) * 2010-12-21 2012-07-25 清华大学 用于多核处理器的网络共享Cache及其目录控制方法
CN102346714B (zh) * 2011-10-09 2014-07-02 西安交通大学 用于多核处理器的一致性维护装置及一致***互方法
US9424191B2 (en) * 2012-06-29 2016-08-23 Intel Corporation Scalable coherence for multi-core processors
US9830265B2 (en) * 2013-11-20 2017-11-28 Netspeed Systems, Inc. Reuse of directory entries for holding state information through use of multiple formats
CN104133785B (zh) * 2014-07-30 2017-03-08 浪潮集团有限公司 采用混合目录的双控存储服务器的缓存一致性实现方法
WO2016049807A1 (zh) * 2014-09-29 2016-04-07 华为技术有限公司 多核处理器***的缓存目录处理方法和目录控制器

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1091524A (ja) * 1996-06-18 1998-04-10 Internatl Business Mach Corp <Ibm> キャッシュ・コヒーレンシを維持するための方法及び装置
JP2007193805A (ja) * 2006-01-18 2007-08-02 Internatl Business Mach Corp <Ibm> デュアル・システム・ディレクトリ構造体を有するマルチプロセッサ・システムおよび方法
US20110138128A1 (en) * 2009-12-07 2011-06-09 Yen-Kuang Chen Technique for tracking shared data in a multi-core processor or multi-processor system
US20140032848A1 (en) * 2011-09-09 2014-01-30 University Of Rochester Sharing Pattern-Based Directory Coherence for Multicore Scalability ("SPACE")
US20140229680A1 (en) * 2013-02-11 2014-08-14 Empire Technology Development Llc Aggregating Cache Eviction Notifications to a Directory

Also Published As

Publication number Publication date
KR102027391B1 (ko) 2019-10-01
CN111488293B (zh) 2024-06-25
CN106164874A (zh) 2016-11-23
CN106164874B (zh) 2020-04-03
EP3249539A4 (en) 2018-01-24
CA2976132A1 (en) 2016-08-25
US20170364442A1 (en) 2017-12-21
JP6343722B2 (ja) 2018-06-13
KR20170107061A (ko) 2017-09-22
WO2016131175A1 (zh) 2016-08-25
BR112017017306A2 (pt) 2019-12-17
EP3249539A1 (en) 2017-11-29
SG11201706340TA (en) 2017-09-28
CN111488293A (zh) 2020-08-04
EP3249539B1 (en) 2021-08-18

Similar Documents

Publication Publication Date Title
CN105740164B (zh) 支持缓存一致性的多核处理器、读写方法、装置及设备
US8285969B2 (en) Reducing broadcasts in multiprocessors
US20190026225A1 (en) Multiple chip multiprocessor cache coherence operation method and multiple chip multiprocessor
JP6343722B2 (ja) マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス
US20100325374A1 (en) Dynamically configuring memory interleaving for locality and performance isolation
EP3441884B1 (en) Method for managing translation lookaside buffer and multi-core processor
US9208088B2 (en) Shared virtual memory management apparatus for providing cache-coherence
CN109684237B (zh) 基于多核处理器的数据访问方法和装置
US10108553B2 (en) Memory management method and device and memory controller
CN107341114B (zh) 一种目录管理的方法、节点控制器和***
CN115292214A (zh) 页表预测方法、存储访问操作方法、电子装置和电子设备
KR980010819A (ko) 비포함적 메모리 억세스 메커니즘
CN115481054A (zh) 数据处理方法、装置及***、***级soc芯片及计算机设备
CN113138851B (zh) 一种数据管理方法、相关装置及***
US20180052778A1 (en) Increase cache associativity using hot set detection
JPH10301850A (ja) データ処理システム内のキャッシュ・コヒーレンシを維持するためにセクタ化キャッシュ・メモリに疑似精密包含方式を設ける方法及びシステム
KR101303079B1 (ko) 멀티-코어 기반의 가상화 환경에서 캐쉬 일관성을 제어하는 장치 및 방법
WO2019104978A1 (zh) 高速缓存cache地址映射方法以及相关设备
US10936219B2 (en) Controller-based inter-device notational data movement system
US20230100746A1 (en) Multi-level partitioned snoop filter
WO2024082702A1 (zh) 数据处理方法、装置、芯片以及计算机可读存储介质
US11281612B2 (en) Switch-based inter-device notational data movement system
CN116049031A (zh) 数据处理方法、装置、电子设备和存储介质
CN117093132A (zh) 数据处理方法、装置、处理器及计算机***
BR112017017306B1 (pt) Método para acessar dados em um sistema com múltiplos núcleos, dispositivo de cache de diretório, sistema com múltiplos núcleos, e unidade de armazenagem de diretório

Legal Events

Date Code Title Description
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: 20180424

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180521

R150 Certificate of patent or registration of utility model

Ref document number: 6343722

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250