特許第6343722号(P6343722)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 華為技術有限公司の特許一覧

特許6343722マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス
<>
  • 特許6343722-マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス 図000002
  • 特許6343722-マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス 図000003
  • 特許6343722-マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス 図000004
  • 特許6343722-マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス 図000005
  • 特許6343722-マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス 図000006
  • 特許6343722-マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス 図000007
  • 特許6343722-マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス 図000008
  • 特許6343722-マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス 図000009
  • 特許6343722-マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス 図000010
  • 特許6343722-マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス 図000011
  • 特許6343722-マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス 図000012
  • 特許6343722-マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス 図000013
  • 特許6343722-マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス 図000014
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6343722
(24)【登録日】2018年5月25日
(45)【発行日】2018年6月13日
(54)【発明の名称】マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス
(51)【国際特許分類】
   G06F 12/08 20160101AFI20180604BHJP
【FI】
   G06F12/08 531E
   G06F12/08 531B
【請求項の数】19
【全頁数】32
(21)【出願番号】特願2017-542831(P2017-542831)
(86)(22)【出願日】2015年2月16日
(65)【公表番号】特表2018-508894(P2018-508894A)
(43)【公表日】2018年3月29日
(86)【国際出願番号】CN2015073192
(87)【国際公開番号】WO2016131175
(87)【国際公開日】20160825
【審査請求日】2017年9月25日
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】▲顧▼ 雄礼
(72)【発明者】
【氏名】方 磊
(72)【発明者】
【氏名】蔡 ▲衛▼光
(72)【発明者】
【氏名】▲劉▼ ▲鵬▼
【審査官】 後藤 彰
(56)【参考文献】
【文献】 特開2007−193805(JP,A)
【文献】 特開平10−91524(JP,A)
【文献】 米国特許出願公開第2014/0032848(US,A1)
【文献】 米国特許出願公開第2014/0229680(US,A1)
【文献】 米国特許出願公開第2011/0138128(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/08
(57)【特許請求の範囲】
【請求項1】
マルチコアシステムに適用される、前記マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法であり、前記マルチコアシステムは、共有データキャッシュと複数のプロセッサコアとを含み、前記共有データキャッシュ内のデータブロックは、前記複数のプロセッサコアのうち少なくとも1つのプロセッサコアにコピーされ、前記マルチコアシステムは、前記データ訪問者ディレクトリを更に含み、前記データ訪問者ディレクトリは、前記共有データキャッシュ内の前記データブロックの訪問者についての情報を記録するために使用され、前記データブロックの前記訪問者は、前記データブロックのコピーが記憶されている前記プロセッサコアであり、
前記データ訪問者ディレクトリは、単一ポインタエントリ配列と共有エントリ配列とを含み、前記単一ポインタエントリ配列内の各単一ポインタエントリは、データブロックの単一の訪問者についての情報を記録するため、或いは前記単一ポインタエントリと前記共有エントリ配列内の共有エントリとの間の関連付けについての情報を記録するために使用され、前記共有エントリ配列内の各共有エントリは、データブロックの複数の訪問者についての情報を記録するために使用される方法であって、
第1のプロセッサコアにより送信された第1のアクセス要求を受信するステップであり、前記第1のアクセス要求は、前記データ訪問者ディレクトリ内の第1のデータブロックに対応するエントリにアクセスするために使用されるステップと、
前記第1のアクセス要求に従って、前記単一ポインタエントリ配列が前記第1のデータブロックに対応する第1の単一ポインタエントリを有すると決定するステップと、
前記第1の単一ポインタエントリに従って、前記共有エントリ配列が前記第1の単一ポインタエントリに関連付けられた第1の共有エントリを有すると決定した場合、前記第1の共有エントリに従って、前記第1のデータブロックの複数の訪問者を決定するステップと
を含む方法。
【請求項2】
前記単一ポインタエントリ配列内の前記単一ポインタエントリは、前記データブロックが前記マルチコアシステム内の全てのプロセッサコアにより共有されることを示すために更に使用され、前記方法は、
前記第1の単一ポインタエントリに従って、前記共有エントリ配列が前記第1の単一ポインタエントリに関連付けられた第1の共有エントリを有さないと決定した場合、前記第1の単一ポインタエントリに従って、前記第1のデータブロックの単一の訪問者、又は前記第1のデータブロックが前記マルチコアシステム内の全ての前記プロセッサコアにより共有されることを決定するステップ
を更に含む、請求項1に記載の方法。
【請求項3】
第2のプロセッサコアにより送信された第2のアクセス要求を受信するステップであり、前記第2のアクセス要求は、前記データ訪問者ディレクトリ内の前記第1のデータブロックに対応する前記エントリにアクセスするために使用されるステップと、
前記第2のアクセス要求に従って、前記単一ポインタエントリ配列が前記第1のデータブロックに対応する前記第1の単一ポインタエントリを有すると決定するステップと、
前記第1の単一ポインタエントリに従って、前記共有エントリ配列が前記第1の単一ポインタエントリに関連付けられた共有エントリを有さないと決定した場合、前記第1の単一ポインタエントリに従って、前記第1のデータブロックの前記単一の訪問者が前記第1のプロセッサコアであると決定するステップと、
前記共有エントリ配列内の前記第1の共有エントリを割り当て、前記第1の単一ポインタエントリと前記第1の共有エントリとの間に関連付け関係を確立し、前記第1のプロセッサコアについての前記情報及び前記第2のプロセッサコアについての情報を前記第1の共有エントリに記録するステップと
を更に含む、請求項又はに記載の方法。
【請求項4】
前記共有エントリ配列内の前記第1の共有エントリを割り当てるステップは、
前記共有エントリ配列が未使用の共有エントリを有する場合、前記第1の共有エントリとして、前記未使用の共有エントリから共有エントリを選択するステップ、又は
前記共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者についての情報を記録する共有エントリを有する場合、前記第1の共有エントリとして、前記1つのみの訪問者についての前記情報を記録する前記共有エントリを選択するステップ、又は
前記共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者についての情報を記録する共有エントリも有さない場合、前記第1の共有エントリとして、最長時間未使用の原理に従って、共有エントリを選択するステップ
を含む、請求項に記載の方法。
【請求項5】
前記単一ポインタエントリは、タグと共有エントリ関連付けビットと単一ポインタとを含み、前記タグは、前記データブロックに対応させるために使用され、前記共有エントリ関連付けビットは、前記単一ポインタエントリが前記共有エントリに関連付けられているか否かを示すために使用され、前記単一ポインタは、前記データブロックが前記単一の訪問者を有する場合、前記データブロックの前記単一の訪問者についての前記情報を記録し、前記単一ポインタエントリが前記共有エントリに関連付けられている場合、前記単一ポインタエントリと前記共有エントリとの間の前記関連付けについての前記情報を記録するために使用され、
前記共有エントリは、共有者記録構造と関連付け構造とを含み、前記共有者記録構造は、前記データブロックの前記複数の訪問者についての前記情報を記録するために使用され、前記関連付け構造は、前記単一ポインタエントリを関連付けるために使用される、請求項1乃至のうちいずれか1項に記載の方法。
【請求項6】
前記単一ポインタエントリは、全共有ビットを更に含み、
前記全共有ビットは、前記単一ポインタエントリが前記共有エントリに関連付けられていない場合、前記データブロックが前記単一の訪問者を有することを示すため、或いは前記データブロックが前記マルチコアシステム内の全ての前記プロセッサコアにより共有されることを示すために使用される、請求項に記載の方法。
【請求項7】
マルチコアシステム内にあるデータ訪問者ディレクトリを記憶するように構成されたディレクトリ記憶ユニットであり、前記マルチコアシステムは、共有データキャッシュと複数のプロセッサコアとを含み、前記共有データキャッシュ内のデータブロックは、前記複数のプロセッサコアのうち少なくとも1つのプロセッサコアにコピーされ、前記データ訪問者ディレクトリは、前記共有データキャッシュ内の前記データブロックの訪問者についての情報を記録するために使用され、前記データブロックの前記訪問者は、前記データブロックのコピーが記憶されている前記プロセッサコアであり、前記データ訪問者ディレクトリは、単一ポインタエントリ配列と共有エントリ配列とを含み、前記単一ポインタエントリ配列内の各単一ポインタエントリは、データブロックの単一の訪問者についての情報を記録するため、或いは前記単一ポインタエントリと前記共有エントリ配列内の共有エントリとの間の関連付けについての情報を記録するために使用され、前記共有エントリ配列内の各共有エントリは、データブロックの複数の訪問者についての情報を記録するために使用されるディレクトリ記憶ユニットと、
第1のプロセッサコアにより送信された第1のアクセス要求を受信するように構成され、前記第1のアクセス要求は、前記データ訪問者ディレクトリ内の第1のデータブロックに対応するエントリにアクセスするために使用され、
前記第1のアクセス要求に従って、前記単一ポインタエントリ配列が前記第1のデータブロックに対応する第1の単一ポインタエントリを有すると決定するように構成され、
前記第1の単一ポインタエントリに従って、前記共有エントリ配列が前記第1の単一ポインタエントリに関連付けられた第1の共有エントリを有すると決定した場合、前記第1の共有エントリに従って、前記第1のデータブロックの複数の訪問者を決定するように構成された実行ユニットと
を含むディレクトリキャッシュデバイス。
【請求項8】
前記単一ポインタエントリ配列内の前記単一ポインタエントリは、前記データブロックが前記マルチコアシステム内の全てのプロセッサコアにより共有されることを示すために更に使用され、前記実行ユニットは、
前記第1の単一ポインタエントリに従って、前記共有エントリ配列が前記第1の単一ポインタエントリに関連付けられた第1の共有エントリを有さないと決定した場合、前記第1の単一ポインタエントリに従って、前記第1のデータブロックの単一の訪問者、又は前記第1のデータブロックが前記マルチコアシステム内の全ての前記プロセッサコアにより共有されることを決定するように更に構成される、請求項に記載のディレクトリキャッシュデバイス。
【請求項9】
前記実行ユニットは、
第2のプロセッサコアにより送信された第2のアクセス要求を受信するように更に構成され、前記第2のアクセス要求は、前記データ訪問者ディレクトリ内の前記第1のデータブロックに対応する前記エントリにアクセスするために使用され、
前記第2のアクセス要求に従って、前記単一ポインタエントリ配列が前記第1のデータブロックに対応する前記第1の単一ポインタエントリを有すると決定するように更に構成され、
前記第1の単一ポインタエントリに従って、前記共有エントリ配列が前記第1の単一ポインタエントリに関連付けられた共有エントリを有さないと決定した場合、前記第1の単一ポインタエントリに従って、前記第1のデータブロックの前記単一の訪問者が前記第1のプロセッサコアであると決定するように更に構成され、
前記共有エントリ配列内の前記第1の共有エントリを割り当て、前記第1の単一ポインタエントリと前記第1の共有エントリとの間に関連付け関係を確立し、前記第1のプロセッサコアについての前記情報及び前記第2のプロセッサコアについての情報を前記第1の共有エントリに記録するように更に構成される、請求項又はに記載のディレクトリキャッシュデバイス。
【請求項10】
前記実行ユニットは、
前記共有エントリ配列が未使用の共有エントリを有する場合、前記第1の共有エントリとして、前記未使用の共有エントリから共有エントリを選択するように構成され、或いは
前記共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者についての情報を記録する共有エントリを有する場合、前記第1の共有エントリとして、前記1つのみの訪問者についての前記情報を記録する前記共有エントリを選択するように構成され、或いは
前記共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者についての情報を記録する共有エントリも有さない場合、前記第1の共有エントリとして、最長時間未使用の原理に従って、共有エントリを選択するように構成される、請求項に記載のディレクトリキャッシュデバイス。
【請求項11】
前記単一ポインタエントリは、タグと共有エントリ関連付けビットと単一ポインタとを含み、前記タグは、前記データブロックに対応させるために使用され、前記共有エントリ関連付けビットは、前記単一ポインタエントリが前記共有エントリに関連付けられているか否かを示すために使用され、前記単一ポインタは、前記データブロックが前記単一の訪問者を有する場合、前記データブロックの前記単一の訪問者についての前記情報を記録し、前記単一ポインタエントリが前記共有エントリに関連付けられている場合、前記単一ポインタエントリと前記共有エントリとの間の前記関連付けについての前記情報を記録するために使用され、
前記共有エントリは、共有者記録構造と関連付け構造とを含み、前記共有者記録構造は、前記データブロックの前記複数の訪問者についての前記情報を記録するために使用され、前記関連付け構造は、前記単一ポインタエントリを関連付けるために使用される、請求項乃至10のうちいずれか1項に記載のディレクトリキャッシュデバイス。
【請求項12】
前記単一ポインタエントリは、全共有ビットを更に含み、
前記全共有ビットは、前記単一ポインタエントリが前記共有エントリに関連付けられていない場合、前記データブロックが前記単一の訪問者を有することを示すため、或いは前記データブロックが前記マルチコアシステム内の全ての前記プロセッサコアにより共有されることを示すために使用される、請求項11に記載のディレクトリキャッシュデバイス。
【請求項13】
複数のプロセッサコアと、共有データキャッシュと、請求項乃至12のうちいずれか1項に記載のディレクトリキャッシュデバイスとを含むマルチコアシステム。
【請求項14】
マルチコアシステム内にあるデータ訪問者ディレクトリを記憶するように構成されたディレクトリ記憶ユニットであり、前記マルチコアシステムは、共有データキャッシュと複数のプロセッサコアとを含み、前記共有データキャッシュ内のデータブロックは、前記複数のプロセッサコアのうち少なくとも1つのプロセッサコアにコピーされ、前記データ訪問者ディレクトリは、前記共有データキャッシュ内の前記データブロックの訪問者についての情報を記録するために使用され、前記データブロックの前記訪問者は、前記データブロックのコピーが記憶されている前記プロセッサコアであるディレクトリ記憶ユニットであって、
前記データ訪問者ディレクトリは、単一ポインタエントリ配列と共有エントリ配列とを含み、
前記単一ポインタエントリ配列内の各単一ポインタエントリは、データブロックの単一の訪問者についての情報を記録するため、或いは前記単一ポインタエントリと前記共有エントリ配列内の共有エントリとの間の関連付けについての情報を記録するために使用され、
前記共有エントリ配列内の各共有エントリは、データブロックの複数の訪問者についての情報を記録するために使用されるディレクトリ記憶ユニット。
【請求項15】
前記単一ポインタエントリは、タグと共有エントリ関連付けビットと単一ポインタとを含み、前記タグは、前記データブロックに対応させるために使用され、前記共有エントリ関連付けビットは、前記単一ポインタエントリが前記共有エントリに関連付けられているか否かを示すために使用され、前記単一ポインタは、前記データブロックが前記単一の訪問者を有する場合、前記データブロックの前記単一の訪問者についての前記情報を記録し、前記単一ポインタエントリが前記共有エントリに関連付けられている場合、前記単一ポインタエントリと前記共有エントリとの間の前記関連付けについての前記情報を記録するために使用され、
前記共有エントリは、共有者記録構造と関連付け構造とを含み、前記共有者記録構造は、前記データブロックの前記複数の訪問者についての前記情報を記録するために使用され、前記関連付け構造は、前記単一ポインタエントリを関連付けるために使用される、請求項14に記載のディレクトリ記憶ユニット。
【請求項16】
前記単一ポインタエントリは、全共有ビットを含み、
前記全共有ビットは、前記単一ポインタエントリが前記共有エントリに関連付けられていない場合、前記データブロックが前記単一の訪問者を有することを示すため、或いは前記データブロックが前記マルチコアシステム内の全てのプロセッサコアにより共有されることを示すために使用される、請求項15に記載のディレクトリ記憶ユニット。
【請求項17】
前記共有者記録構造はベクトルである、請求項15又は16に記載のディレクトリ記憶ユニット。
【請求項18】
コンピュータに、請求項1乃至6のうちいずれか1項に記載のマルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法を実行させるように構成されたコンピュータプログラム。
【請求項19】
請求項18に記載のコンピュータプログラムを記憶したコンピュータ読み取り可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報技術の分野に関し、より具体的には、マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法、ディレクトリキャッシュデバイス、マルチコアシステム及びディレクトリ記憶ユニットに関する。
【背景技術】
【0002】
マルチコア(Multi-Core)プロセッサ又は多コア(Many Core)プロセッサの用途には、データブロックがプロセッサ内の1つ以上のプロセッサコアによりアクセスされるいくつかのシナリオが存在する。このシナリオでは、データブロックは、通常では、1つ以上のプロセッサコアによりアクセスされるように、共有記憶空間に記憶される。データブロックへのアクセスを速めるために、データブロックのコピーが、データブロックにアクセスした1つ以上のプロセッサコア内のプライベートキャッシュ内に生成される(すなわち、データブロックは、プロセッサコア内の1つ以上のプライベートキャッシュに記憶される)。このように、データブロックにアクセスしたコアが再びデータブロックにアクセスする必要がある場合、コアは、コアのプライベートキャッシュ内のデータブロックを読み取りさえすればよい。データブロックのコピーは、1つ以上のプロセッサコア内にあり、アクセスされたプライベートキャッシュに記憶されているため、キャッシュ一貫性(Cache Coherence)問題と呼ばれるコピーの一貫性の問題を解決するように、複数のコア内のプライベートキャッシュ内にあるデータブロックのコピーの一貫性が維持される必要がある。キャッシュ一貫性問題を解決する基本的な原理は、コア内のデータブロックのコピーが変更された場合、他のコア内のデータブロックのコピーが更新される必要があること、或いはデータブロックが無効にされる必要があること(すなわち、データブロックが削除される)である。したがって、データブロックのコピーを記憶するマルチコアプロセッサ内のコアが決定される必要がある(すなわち、データブロックの訪問者が決定される)。
【0003】
一般的に使用されるキャッシュ一貫性の解決策は、スヌーピング(snooping)に基づく一貫性の解決策と、ディレクトリに基づく一貫性の解決策とを含む。前者に関して、コア内のデータブロックのコピーが変更された場合、データブロックが変更されたことを示すブロードキャストメッセージが、データブロックのコピーが記憶されている他のコアに送信される必要があり、これにより、これらのコアに対してデータブロックのコピーを更新するように、或いはデータブロックを無効にするように命令する。後者に関して、データブロックのアクセスディレクトリが、データブロックの訪問者(すなわち、マルチコアプロセッサ内でデータブロックが記憶されているコア)リストを記録するために使用される。コア内のデータブロックのコピーが変更された場合、データブロックが変更されたことを示す通知メッセージが他の訪問者のみに送信される。プロセッサコアの数量は絶えず増加しているため、スヌーピングに基づく一貫性の解決策は、性能及び帯域幅のボトルネックに直面するが(メッセージのブロードキャストは、大量の処理リソース及び大量の帯域幅を占有する必要がある)、ディレクトリに基づく一貫性のプロトコルは、そのより良いスケーラビリティの理由で広く適用される。
【0004】
従来のディレクトリに基づく一貫性の解決策では、データブロックの訪問者リストは、ベクトルの形式でディレクトリに記録される。N個のコアを含むマルチコアプロセッサシステムについては、ディレクトリ内の各ディレクトリエントリは、1つのNビットのベクトルを含み、ベクトル内の各ビットが1であるか否かは、N個のコア内にデータブロックのコピーが存在するか否かを示す。この機構では、ディレクトリエントリの数量は、コアの数量の増加と共に線形的に増加するが、データブロックのコピーを記憶するために使用されるキャッシュのサイズは、コアの数量の増加と共に増加しない。その結果、データブロックにより占有されるビットの数量に対してディレクトリにより占有されるビットの数量の比は、コアの数量の増加と共に増加する。したがって、ディレクトリを記憶するために使用される記憶空間がより大きくなり、これは、チップ上マルチコアプロセッサにおけるキャッシュ空間への課題をもたらす。
【発明の概要】
【0005】
本発明の実施例は、データ訪問者ディレクトリにより占有される記憶リソースを低減することができる、マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法、ディレクトリキャッシュデバイス、マルチコアシステム及びディレクトリ記憶ユニットを提供する。
【0006】
第1の態様によれば、マルチコアシステムに適用される、マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法が提供され、マルチコアシステムは、共有データキャッシュと複数のプロセッサコアとを含み、共有データキャッシュ内のデータブロックは、複数のプロセッサコアのうち少なくとも1つのプロセッサコアにコピーされ、マルチコアシステムは、データ訪問者ディレクトリを更に含み、データ訪問者ディレクトリは、共有データキャッシュ内のデータブロックの訪問者についての情報を記録するために使用され、データブロックの訪問者は、データブロックのコピーが記憶されているプロセッサコアであり、
ディレクトリは、単一ポインタエントリ配列と共有エントリ配列とを含み、単一ポインタエントリ配列内の各単一ポインタエントリは、データブロックの単一の訪問者についての情報を記録するため、或いは単一ポインタエントリと共有エントリ配列内の共有エントリとの間の関連付けについての情報を記録するために使用され、共有エントリ配列内の各共有エントリは、データブロックの複数の訪問者についての情報を記録するために使用され、
この方法は、
第1のプロセッサコアにより送信された第1のアクセス要求を受信するステップであり、第1のアクセス要求は、ディレクトリ内の第1のデータブロックに対応するエントリにアクセスするために使用されるステップと、
第1のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する第1の単一ポインタエントリを有すると決定するステップと、
第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた第1の共有エントリを有すると決定した場合、第1の共有エントリに従って、第1のデータブロックの複数の訪問者を決定するステップと
を含む。
【0007】
第1の態様を参照して、第1の可能な実現方式では、単一ポインタエントリ配列内の単一ポインタエントリは、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すために更に使用され、この方法は、
第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた第1の共有エントリを有さないと決定した場合、第1の単一ポインタエントリに従って、第1のデータブロックの単一の訪問者、又は第1のデータブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを決定するステップ
を更に含む。
【0008】
第1の態様又は第1の態様の第1の可能な実現方式を参照して、第2の可能な実現方式では、第1のプロセッサコアにより送信された第1のアクセス要求を受信した後に、この方法は、
第1のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する単一ポインタエントリを有さないと決定するステップと、
単一ポインタエントリ配列において、第1のデータブロックに対応する第1の単一ポインタエントリを第1のデータブロックに割り当て、第1のプロセッサコアについての情報を第1の単一ポインタエントリに記録するステップと
を更に含む。
【0009】
第1の態様の第2の可能な実現方式を参照して、第3の可能な実現方式では、単一ポインタエントリ配列において、第1のデータブロックに対応する第1の単一ポインタエントリを第1のデータブロックに割り当て、第1のプロセッサコアについての情報を第1の単一ポインタエントリに記録するステップは、
単一ポインタエントリ配列が未使用の単一ポインタエントリを有する場合、第1の単一ポインタエントリとして、未使用の単一ポインタエントリから単一ポインタエントリを選択し、第1のプロセッサコアについての情報を記録するステップ、又は
単一ポインタエントリ配列が未使用の単一ポインタエントリを有さない場合、最長時間未使用の原理に従って、単一ポインタエントリを選択し、選択された単一ポインタエントリが共有エントリに関連付けられておらず、単一の訪問者についての情報を記録する場合、無効メッセージを記録された単一の訪問者に送信し、第1のプロセッサコアについての情報を選択された単一ポインタエントリに記録するステップ、又は
選択された単一ポインタエントリが共有エントリに関連付けられておらず、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示す場合、無効メッセージを全てのプロセッサコアにブロードキャストし、第1のプロセッサコアについての情報を選択された単一ポインタエントリに記録するステップ、又は
選択された単一ポインタエントリが共有エントリに関連付けられている場合、選択された単一ポインタエントリに関連付けられた共有エントリに従って、関連付けられた共有エントリに記録された複数の訪問者を決定し、無効メッセージを記録された複数の訪問者に送信し、第1のプロセッサコアについての情報を選択された単一ポインタエントリに記録するステップ
を含む。
【0010】
第1の態様の第2又は第3の可能な実現方式を参照して、第4の可能な実現方式では、この方法は、
第2のプロセッサコアにより送信された第2のアクセス要求を受信するステップであり、第2のアクセス要求は、ディレクトリ内の第1のデータブロックに対応するエントリにアクセスするために使用されるステップと、
第2のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する第1の単一ポインタエントリを有すると決定するステップと、
第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた共有エントリを有さないと決定した場合、第1の単一ポインタエントリに従って、第1のデータブロックの単一の訪問者が第1のプロセッサコアであると決定するステップと、
共有エントリ配列内の第1の共有エントリを割り当て、第1の単一ポインタエントリと第1の共有エントリとの間に関連付け関係を確立し、第1のプロセッサコアについての情報及び第2のプロセッサコアについての情報を第1の共有エントリに記録するステップと
を更に含む。
【0011】
第1の態様の第4の可能な実現方式を参照して、第5の可能な実現方式では、共有エントリ配列内の第1の共有エントリを割り当てるステップは、
共有エントリ配列が未使用の共有エントリを有する場合、第1の共有エントリとして、未使用の共有エントリから共有エントリを選択するステップ、又は
共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者についての情報を記録する共有エントリを有する場合、1つのみの訪問者についての情報を記録する共有エントリを選択し、訪問者についての記録された情報を、選択された共有エントリに関連付けられた単一ポインタエントリに書き込むステップ、又は
共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者についての情報を記録する共有エントリも有さない場合、最長時間未使用の原理に従って、共有エントリを選択し、選択された共有エントリに記録された訪問者の数量が所定の閾値より大きい場合、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すように、選択された共有エントリに関連付けられた単一ポインタエントリを設定し、或いは選択された共有エントリに記録された訪問者の数量が所定の閾値より大きくない場合、記録された訪問者のうち1つの訪問者についての情報を、選択された共有エントリに関連付けられた単一ポインタエントリに書き込み、無効メッセージを記録された訪問者のうち他の訪問者に送信するステップ
を含む。
【0012】
第1の態様又は第1の態様の前述の可能な実現方式のいずれか1つを参照して、第6の可能な実現方式では、単一ポインタエントリは、タグと共有エントリ関連付けビットと単一ポインタとを含み、タグは、データブロックに対応させるために使用され、共有エントリ関連付けビットは、単一ポインタエントリが共有エントリに関連付けられているか否かを示すために使用され、単一ポインタは、データブロックが単一の訪問者を有する場合、データブロックの単一の訪問者についての情報を記録し、単一ポインタエントリが共有エントリに関連付けられている場合、単一ポインタエントリと共有エントリとの間の関連付けについての情報を記録するために使用され、
共有エントリは、共有者記録構造と関連付け構造とを含み、共有者記録構造は、データブロックの複数の訪問者についての情報を記録するために使用され、関連付け構造は、単一ポインタエントリを関連付けるために使用される。
【0013】
第1の態様の第6の可能な実現方式を参照して、第7の可能な実現方式では、単一ポインタエントリは、全共有ビットを更に含み、全共有ビットは、単一ポインタエントリが共有エントリに関連付けられていない場合、データブロックが単一の訪問者を有することを示すため、或いはデータブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すために使用される。
【0014】
第2の態様によれば、ディレクトリキャッシュデバイスが提供され、
マルチコアシステム内にあるデータ訪問者ディレクトリを記憶するように構成されたディレクトリ記憶ユニットであり、マルチコアシステムは、共有データキャッシュと複数のプロセッサコアとを含み、共有データキャッシュ内のデータブロックは、複数のプロセッサコアのうち少なくとも1つのプロセッサコアにコピーされ、ディレクトリは、共有データキャッシュ内のデータブロックの訪問者についての情報を記録するために使用され、データブロックの訪問者は、データブロックのコピーが記憶されているプロセッサコアであり、ディレクトリは、単一ポインタエントリ配列と共有エントリ配列とを含み、単一ポインタエントリ配列内の各単一ポインタエントリは、データブロックの単一の訪問者についての情報を記録するため、或いは単一ポインタエントリと共有エントリ配列内の共有エントリとの間の関連付けについての情報を記録するために使用され、共有エントリ配列内の各共有エントリは、データブロックの複数の訪問者についての情報を記録するために使用されるディレクトリ記憶ユニットと、
第1のプロセッサコアにより送信された第1のアクセス要求を受信するように構成され、第1のアクセス要求は、ディレクトリ内の第1のデータブロックに対応するエントリにアクセスするために使用され、
第1のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する第1の単一ポインタエントリを有すると決定するように構成され、
第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた第1の共有エントリを有すると決定した場合、第1の共有エントリに従って、第1のデータブロックの複数の訪問者を決定するように構成された実行ユニットと
を含む。
【0015】
第2の態様を参照して、第1の可能な実現方式では、単一ポインタエントリ配列内の単一ポインタエントリは、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すために更に使用され、実行ユニットは、
第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた第1の共有エントリを有さないと決定した場合、第1の単一ポインタエントリに従って、第1のデータブロックの単一の訪問者、又は第1のデータブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを決定するように更に構成される。
【0016】
第2の態様又は第2の態様の第1の可能な実現方式を参照して、第2の可能な実現方式では、実行ユニットが第1のプロセッサコアにより送信された第1のアクセス要求を受信した後に、実行ユニットは、
第1のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する単一ポインタエントリを有さないと決定し、
単一ポインタエントリ配列において、第1のデータブロックに対応する第1の単一ポインタエントリを第1のデータブロックに割り当て、第1のプロセッサコアについての情報を第1の単一ポインタエントリに記録するように更に構成される。
【0017】
第2の態様の第2の可能な実現方式を参照して、第3の可能な実現方式では、実行ユニットは、
単一ポインタエントリ配列が未使用の単一ポインタエントリを有する場合、第1の単一ポインタエントリとして、未使用の単一ポインタエントリから単一ポインタエントリを選択し、第1のプロセッサコアについての情報を記録するように更に構成され、或いは
単一ポインタエントリ配列が未使用の単一ポインタエントリを有さない場合、最長時間未使用の原理に従って、単一ポインタエントリを選択し、選択された単一ポインタエントリが共有エントリに関連付けられておらず、単一の訪問者についての情報を記録する場合、無効メッセージを記録された単一の訪問者に送信し、第1のプロセッサコアについての情報を選択された単一ポインタエントリに記録するように更に構成され、或いは
選択された単一ポインタエントリが共有エントリに関連付けられておらず、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示す場合、無効メッセージを全てのプロセッサコアにブロードキャストし、第1のプロセッサコアについての情報を選択された単一ポインタエントリに記録するように更に構成され、或いは
選択された単一ポインタエントリが共有エントリに関連付けられている場合、選択された単一ポインタエントリに関連付けられた共有エントリに従って、関連付けられた共有エントリに記録された複数の訪問者を決定し、無効メッセージを記録された複数の訪問者に送信し、第1のプロセッサコアについての情報を選択された単一ポインタエントリに記録するように更に構成される。
【0018】
第2の態様の第2又は第3の可能な実現方式を参照して、第4の可能な実現方式では、実行ユニットは、
第2のプロセッサコアにより送信された第2のアクセス要求を受信するように更に構成され、第2のアクセス要求は、ディレクトリ内の第1のデータブロックに対応するエントリにアクセスするために使用され、
第2のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する第1の単一ポインタエントリを有すると決定するように更に構成され、
第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた共有エントリを有さないと決定した場合、第1の単一ポインタエントリに従って、第1のデータブロックの単一の訪問者が第1のプロセッサコアであると決定するように更に構成され、
共有エントリ配列内の第1の共有エントリを割り当て、第1の単一ポインタエントリと第1の共有エントリとの間に関連付け関係を確立し、第1のプロセッサコアについての情報及び第2のプロセッサコアについての情報を第1の共有エントリに記録するように更に構成される。
【0019】
第2の態様の第4の可能な実現方式を参照して、第5の可能な実現方式では、実行ユニットは、
共有エントリ配列が未使用の共有エントリを有する場合、第1の共有エントリとして、未使用の共有エントリから共有エントリを選択するように構成され、或いは
共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者についての情報を記録する共有エントリを有する場合、1つのみの訪問者についての情報を記録する共有エントリを選択し、訪問者についての記録された情報を、選択された共有エントリに関連付けられた単一ポインタエントリに書き込むように構成され、或いは
共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者を記録する共有エントリも有さない場合、最長時間未使用の原理に従って、共有エントリを選択し、選択された共有エントリに記録された訪問者の数量が所定の閾値より大きい場合、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すように、選択された共有エントリに関連付けられた単一ポインタエントリを設定し、或いは選択された共有エントリに記録された訪問者の数量が所定の閾値より大きくない場合、記録された訪問者のうち1つの訪問者についての情報を、選択された共有エントリに関連付けられた単一ポインタエントリに書き込み、無効メッセージを記録された訪問者のうち他の訪問者に送信するように構成される。
【0020】
第2の態様又は第2の態様の前述の可能な実現方式のいずれか1つを参照して、第6の可能な実現方式では、単一ポインタエントリは、タグと共有エントリ関連付けビットと単一ポインタとを含み、タグは、データブロックに対応させるために使用され、共有エントリ関連付けビットは、単一ポインタエントリが共有エントリに関連付けられているか否かを示すために使用され、単一ポインタは、データブロックが単一の訪問者を有する場合、データブロックの単一の訪問者についての情報を記録し、単一ポインタエントリが共有エントリに関連付けられている場合、単一ポインタエントリと共有エントリとの間の関連付けについての情報を記録するために使用され、
共有エントリは、共有者記録構造と関連付け構造とを含み、共有者記録構造は、データブロックの複数の訪問者についての情報を記録するために使用され、関連付け構造は、単一ポインタエントリを関連付けるために使用される。
【0021】
第2の態様の第6の可能な実現方式を参照して、第7の可能な実現方式では、単一ポインタエントリは、全共有ビットを更に含み、
全共有ビットは、単一ポインタエントリが共有エントリに関連付けられていない場合、データブロックが単一の訪問者を有することを示すため、或いはデータブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すために使用される。
【0022】
第3の態様によれば、複数のプロセッサコアと、共有データキャッシュと、第2の態様又は第2の態様のいずれかの可能な実現方式によるディレクトリキャッシュデバイスとを含むマルチコアシステムが提供される。
【0023】
第4の態様によれば、マルチコアシステム内にあるディレクトリを記憶するように構成されたディレクトリ記憶ユニットが提供され、マルチコアシステムは、共有データキャッシュと複数のプロセッサコアとを含み、共有データキャッシュ内のデータブロックは、複数のプロセッサコアのうち少なくとも1つのプロセッサコアにコピーされ、ディレクトリは、共有データキャッシュ内のデータブロックの訪問者についての情報を記録するために使用され、データブロックの訪問者は、データブロックのコピーが記憶されているプロセッサコアであり、
ディレクトリは、単一ポインタエントリ配列と共有エントリ配列とを含み、
単一ポインタエントリ配列内の各単一ポインタエントリは、データブロックの単一の訪問者についての情報を記録するため、或いは単一ポインタエントリと共有エントリ配列内の共有エントリとの間の関連付けについての情報を記録するために使用され、
共有エントリ配列内の各共有エントリは、データブロックの複数の訪問者についての情報を記録するために使用される。
【0024】
第4の態様を参照して、第1の可能な実現方式では、単一ポインタエントリは、タグと共有エントリ関連付けビットと単一ポインタとを含み、タグは、データブロックに対応させるために使用され、共有エントリ関連付けビットは、単一ポインタエントリが共有エントリに関連付けられているか否かを示すために使用され、単一ポインタは、データブロックが単一の訪問者を有する場合、データブロックの単一の訪問者についての情報を記録し、単一ポインタエントリが共有エントリに関連付けられている場合、単一ポインタエントリと共有エントリとの間の関連付けについての情報を記録するために使用され、
共有エントリは、共有者記録構造と関連付け構造とを含み、共有者記録構造は、データブロックの複数の訪問者についての情報を記録するために使用され、関連付け構造は、単一ポインタエントリを関連付けるために使用される。
【0025】
第4の態様の第1の可能な実現方式を参照して、第2の可能な実現方式では、単一ポインタエントリは、全共有ビットを含み、
全共有ビットは、単一ポインタエントリが共有エントリに関連付けられていない場合、データブロックが単一の訪問者を有することを示すため、或いはデータブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すために使用される。
【0026】
第4の態様の第1又は第2の可能な実現方式を参照して、第3の可能な実現方式では、共有者記録構造はベクトルである。
【0027】
前述の技術的解決策に基づいて、本発明の実施例では、単一ポインタエントリ配列と共有エントリ配列とを含むディレクトリ構造が使用される。データブロックが単一の訪問者のみを有する場合、単一ポインタエントリのみが、訪問者についての情報を記録するために使用される。データブロックが複数の訪問者を有する場合、訪問者についての情報は、単一ポインタエントリを共有エントリに関連付ける方式で記録される。前述の方式では、ディレクトリ内のディレクトリエントリの平均サイズが比較的大きく圧縮されることが可能になり、性能ロスが比較的小さい。したがって、ディレクトリにより占有される記憶リソースは、低減されることが可能になり、システムのスケーラビリティが改善されることが可能になる。
【図面の簡単な説明】
【0028】
本発明の実施例における技術的解決策をより明確に説明するために、以下に、本発明の実施例を説明するために必要な添付図面について簡単に説明する。明らかに、以下の説明における添付図面は、単に本発明のいくつかの実施例を示しているに過ぎず、当業者は、創造的取り組みを行うことなく、依然としてこれらの添付図面から他の図面を導き得る。
図1】本発明の実施例における技術的解決策が適用され得るマルチコアシステムの概略図である。
図2】本発明の実施例によるディレクトリの概略図である。
図3】本発明の実施例による単一ポインタエントリの概略図である。
図4】本発明の実施例による共有エントリの概略図である。
図5】本発明の他の実施例によるディレクトリの概略図である。
図6】本発明の実施例によるディレクトリアクセス方法の概略フローチャートである。
図7a】本発明の他の実施例によるディレクトリアクセス方法の概略フローチャートである。
図7b】本発明の更に他の実施例によるディレクトリアクセス方法の概略フローチャートである。
図8】本発明の更に他の実施例によるディレクトリアクセス方法の概略フローチャートである。
図9a】本発明の更に他の実施例によるディレクトリアクセス方法の概略フローチャートである。
図9b】本発明の実施例に従って共有エントリを圧縮する概略図である。
図10】本発明の実施例によるディレクトリキャッシュデバイスの概略ブロック図である。
図11】本発明の実施例によるマルチコアシステムの概略図である。
【発明を実施するための形態】
【0029】
以下に、本発明の実施例における添付図面を参照して本発明の実施例における技術的解決策を明確且つ完全に説明する。明らかに、説明する実施例は、本発明の実施例の全てではなく、一部である。創造的取り組みを行うことなく本発明の実施例に基づいて当業者により得られる全ての他の実施例は、本発明の保護範囲内に入るものとする。
【0030】
この明細書を通じて、「マルチコアプロセッサシステム」又は「マルチコアシステム」という用語は、複数のプロセッサコア(Core)を含む処理システムを示す。システムは、チップ上マルチコアプロセッサ又は基板上マルチコア処理システムとして提示されてもよい。チップ上マルチコアプロセッサは、複数のプロセッサコア(Core)が1つのチップ(Chip)上に一体化されたプロセッサ(Processor)である。基板上マルチコア処理システムは、複数のプロセッサコアの各コアをプロセッサに別々にパッケージ化し、プロセッサを回路基板上に一体化することにより形成された処理システムを示す。
【0031】
ア(Core)はまた、カーネルとも呼ばれてもよく、CPU(Central Processing Unit)の最も重要なコンポーネントである。コアは、特定の生産プロセスを使用することにより、単結晶シリコンでできている。CPU内の計算、コマンド受信/記憶及びデータ処理の全ては、プロセッサコアにより実行される。「複数のプロセッサコア」という用語は、少なくとも2つのプロセッサコアが含まれることを意味する。「複数のプロセッサコア」は、従来技術におけるマルチコア(Multi-Core)及び他コア(Many Core)の用途の範囲をカバーする。
【0032】
この明細書を通じて、「ディレクトリキャッシュデバイス」とも呼ばれる「ディレクトリキャッシュ」という用語は、マルチコアシステムにおいてデータ訪問者ディレクトリを記憶するために使用される記憶デバイスを示す。ディレクトリアクセス率を増加させるために、記憶デバイスは、通常では、キャッシュ(Cache)の形式で実現される。ディレクトリキャッシュは、少なくとも2つの実現方式で実現される。1つの方式では、ディレクトリキャッシュは、プロセッサコアと独立して実現され、すなわち、ディレクトリ記憶のためのキャッシュとして使用されるように、チップ上マルチコア処理チップ上のキャッシュ(Cache)内の1つの記憶空間が割り当てられる。他の方式では、ディレクトリキャッシュは、分散方式で実現され、すなわち、ディレクトリは複数のブロックに分割され、ディレクトリブロックは、チップ上マルチコア処理チップ上の各プロセッサコアの内部のキャッシュに別々に記憶される。
【0033】
この明細書を通じて、「共有データキャッシュ」という用語は、複数のコアにより共有されるデータブロックを記憶するために使用される記憶デバイスを示す。データブロックアクセス率を増加させるために、記憶デバイスは、通常では、キャッシュ(Cache)の形式で実現される。具体的な実現処理では、共有データキャッシュは、一般的に、マルチコアプロセッサシステムにおけるレベル2(L2)キャッシュ又はレベル3(L3)キャッシュを示す。
【0034】
この明細書を通じて、「プライベートデータキャッシュ」という用語は、プロセッサコアのプライベートデータを記憶するために使用される、プロセッサコアの内部の記憶デバイスを示す。具体的な実現処理では、プライベートデータキャッシュは、一般的に、マルチコアプロセッサにおけるレベル1(L1)キャッシュを示す。マルチコアプロセッサの実現では、プロセッサコアがデータブロックにアクセスする効率を改善するために、プロセッサコアは、共有データの一部分を取得し、共有データのこの一部分をプライベートデータキャッシュに記憶してもよい。
【0035】
この明細書を通じて、「データブロック」という用語は、マルチコアプロセッサシステムにおいて各プロセッサコアがデータにアクセスする粒度を示す。具体的な実現では、データブロックは、マルチコアプロセッサシステムにおいて共有データキャッシュに記憶される。したがって、一般的な場合、データブロックの粒度はcache line(すなわち、キャッシュライン)である。具体的な実現では、データブロックの粒度は、cache lineの一部分又は複数のcache lineのような他の形式で提示されてもよい。この明細書では、詳細は限定されない。
【0036】
この明細書を通じて、「ディレクトリ構造」又は「データ訪問者ディレクトリ」とも呼ばれる「ディレクトリ」という用語は、データブロックの訪問者についての情報が記録されるデータ構造を示す。具体的な実現では、データ訪問者ディレクトリは、単一ポインタエントリ配列と共有エントリ配列とを含む。単一ポインタエントリ配列は、複数の単一ポインタエントリを含む。共有エントリ配列は、複数の共有エントリを含む。各単一ポインタエントリに記録される内容は、データブロックの訪問者の数量に従って変化する。データブロックが単一の訪問者を有する場合、データブロックの単一の訪問者についての情報が単一ポインタエントリに記録される。データブロックが複数の訪問者を有する場合、単一ポインタエントリはまた、単一ポインタエントリと単一ポインタエントリに対応する共有エントリとの間の関連付けについての情報を記録するために使用される。データブロックが複数(2つ以上)の訪問者を有する場合、共有エントリは、データブロックの複数の訪問者についての情報を記録するために使用される。「データ訪問者ディレクトリ」という用語は、1つ以上のデータ訪問者ディレクトリエントリを含む。
【0037】
この明細書を通じて、「データ訪問者ディレクトリエントリ」という用語は、「データ訪問者ディレクトリ」の構成単位を示す。ディレクトリ内の各エントリは、共有データキャッシュ内の各データブロックに対応する。具体的な実現では、データ訪問者ディレクトリは、単一ポインタエントリ配列と共有エントリ配列とを含む。したがって、データブロックが1つのみのデータ訪問者を有する場合、データブロックに対応するデータ訪問者ディレクトリエントリは、データブロックの単一の訪問者についての情報が記録される単一ポインタエントリを示す。データブロックが複数(2つ以上)の訪問者を有する場合、データブロックに対応するデータ訪問者ディレクトリエントリは、単一ポインタエントリと単一ポインタエントリに対応する共有エントリとの間の関連付けについての情報が記録される単一ポインタエントリと、データブロックの複数の訪問者についての情報が記録される共有エントリとを示す。
【0038】
この明細書を通じて、「訪問者」という用語は、データブロックにアクセスするプロセッサコアを示す。例えば、データブロックが3つのプロセッサコアによりアクセスされた場合、3つのプロセッサコアは、データブロックの訪問者と呼ばれる。
【0039】
この明細書を通じて、「アクセス要求」という用語は、プロセッサコアにより送信され、データブロックの訪問者についての情報を問い合わせるために使用される要求であるディレクトリアクセス要求を示す。
【0040】
この明細書を通じて、「関連付けについての情報」という用語は、データブロックが少なくとも2つの訪問者を有する場合、データブロックに対応する単一ポインタエントリにおいて、単一ポインタエントリに対応する共有エントリのアクセスインデックスが記録されることを示す。アクセスインデックスは、データブロックの単一ポインタエントリと単一ポインタエントリに対応する共有エントリとの間の関連付けについての情報として示される。関連付けについての情報は、データブロックの単一ポインタエントリと単一ポインタエントリに対応する共有エントリとの間に関連付け関係が存在することを示す。
【0041】
この明細書を通じて、「最長時間未使用(Least Recently Used、LRU)の原理」という用語は、エントリ(単一ポインタエントリ又は共有エントリ)がデータブロックに割り当てられる場合、その原理が、単一ポインタエントリ配列又は共有エントリ配列から、最近の期間に最も少なくアクセスされたエントリを選択するために使用され、これにより、データブロックのエントリとして使用されることを示す。
【0042】
この明細書を通じて、「無効メッセージ」という用語は、エントリ再割り当て中に、無効メッセージがエントリに元々記録されている訪問者に送信され、これにより、元のデータブロックを無効にすることを示す。
【0043】
図1は、本発明の実施例における技術的解決策が適用され得るマルチコアシステムの概略図である。
【0044】
図1に示すように、マルチコアシステム100は、複数のプロセッサコア110と、共有データキャッシュ120と、ディレクトリキャッシュ130とを含む。複数のプロセッサコア110は、共有データキャッシュ120内のデータブロック121にアクセスしてもよい。データブロック121のコピーは、データブロック121にアクセスしたプロセッサコア110内のプライベートキャッシュ111内に生成される。ディレクトリキャッシュ130では、対応するディレクトリエントリ131は、データブロック121について、データブロック121の訪問者リストを記録するために使用される。
【0045】
言い換えると、共有データキャッシュ120内のデータブロック121は、複数のプロセッサコア110のうち少なくとも1つのプロセッサコアにコピーされてもよい。データブロック121の訪問者は、データブロック121のコピーが記憶されているプロセッサコアである。
【0046】
ディレクトリは、訪問者リストが記録される構造である。これに基づいて、ディレクトリは、ディレクトリ構造として表現されてもよい。
【0047】
ディレクトリは、ディレクトリキャッシュ130に記憶され、具体的には、ディレクトリキャッシュ130内のディレクトリ記憶ユニットに記憶されてもよい。
【0048】
ディレクトリキャッシュは、集中式でもよく、或いは分散式でもよい。対応して、ディレクトリは、集中式ディレクトリでもよく、すなわち、キャッシュエリアは、ディレクトリを記憶するためにマルチコアシステム(例えば、マルチコアプロセッサチップ)内に設定される。ディレクトリはまた、分散式ディレクトリでもよく、すなわち、ディレクトリは、ブロックに分割され、ブロック分割後に取得された各ディレクトリ部分が、各プロセッサコアに記憶される。例えば、マルチコアシステムが128個のプロセッサコアを含むことを仮定すると、ディレクトリは、それぞれ128個のプロセッサコアに記憶される128個の部分に分割されてもよい。
【0049】
図2は、本発明の実施例によるディレクトリ200の概略図である。
【0050】
図2に示すように、ディレクトリ200は、単一ポインタエントリ配列210と共有エントリ配列220とを含む。
【0051】
単一ポインタエントリ配列210は、複数の単一ポインタエントリを含み、共有エントリ配列220は、複数の共有エントリを含む。
【0052】
単一ポインタエントリ配列210内の単一ポインタエントリは、データブロックの単一の訪問者についての情報を記録するため、或いは単一ポインタエントリと共有エントリ配列220内の共有エントリとの間の関連付けについての情報を記録するために使用される。すなわち、単一ポインタエントリは、データブロックが単一の訪問者を有する場合、データブロックの単一の訪問者についての情報を記録してもよく、或いはデータブロックが複数の訪問者を有する場合、単一ポインタエントリと共有エントリ配列220内の共有エントリとの間の関連付けについての情報を記録してもよい。共有エントリは、データブロックの複数の訪問者についての情報を記録するために使用される。
【0053】
scale-out(スケールアウト)の用途では、ほとんどのデータは、1つのみの訪問者を有する。データは、プライベートデータでもよく、或いはある期間内にプライベート特性を示してもよい。これに基づいて、ほとんどのディレクトリエントリは、単一ポインタを使用することにより、プロセッサコアについての情報、例えば、プロセッサコアの番号を記録しさえすればよく、本発明では、ディレクトリエントリは、単一ポインタエントリと呼ばれる。さらに、複数の訪問者を有するデータをトラッキングするために、いくつかのディレクトリエントリは、複数の訪問者をトラッキングするために使用され得るハードウェア構造(例えば、ベクトル、有限ポインタ(limited pointer)又は他の形式)を依然として使用し、本発明では、ディレクトリエントリは、共有エントリと呼ばれる。全ての単一ポインタエントリは、単一ポインタエントリ配列を構成し、全ての共有エントリは、共有エントリ配列を構成する。単一ポインタエントリ配列には比較的大量のエントリが存在してもよく、共有エントリ配列には比較的少量のエントリが存在してもよい。
【0054】
単一ポインタエントリは、訪問者を記録するために比較的少ないビット(bit)を使用してもよい。共有エントリは、複数の訪問者を記録するために比較的多くのビットを使用してもよい。データブロックが単一の訪問者を有する場合、単一ポインタエントリのみが、データブロックの単一の訪問者を記録するために使用される。この場合、単一ポインタエントリは、共有エントリに関連付けられていない。データブロックが複数の訪問者を有する場合、データブロックに対応する単一ポインタエントリは、共有エントリに関連付けられ、関連付けられた共有エントリは、データブロックの複数の訪問者を記録するために使用される。
【0055】
任意選択で、共有エントリにより占有される記憶空間を低減するために、全共有ビットが単一ポインタエントリ内に更に設定されてもよい。共有ビットが1に設定された場合、データブロックは、マルチコアシステム内の全てのプロセッサコアにより共有される。この場合、単一ポインタエントリは、共有エントリに関連付けられていない。すなわち、データブロックが全てのプロセッサコアにより共有される場合、単一ポインタエントリのみがまた使用される必要があり、共有エントリは関連付けられる必要はない。
【0056】
本発明のこの実施例によるディレクトリは、単一ポインタエントリ配列と共有エントリ配列とを含む構造を使用する。単一の訪問者が存在する場合、単一ポインタエントリのみが訪問者についての情報を記録するために使用され、複数の訪問者が存在する場合、訪問者についての情報は、単一ポインタエントリを共有エントリに関連付ける方式で記録される。前述の方式では、ディレクトリ内のディレクトリエントリの平均サイズが大きく圧縮されることが可能になり、性能ロスが非常に小さい。したがって、ディレクトリにより占有される記憶リソースは、低減されることが可能になり、システムのスケーラビリティが改善されることが可能になる。
【0057】
図3は、本発明の実施例による単一ポインタエントリの概略図である。図3に示すように、単一ポインタエントリは、タグ301と共有エントリ関連付けビット302と全共有ビット303と単一ポインタ304とを含んでもよい。
【0058】
タグ301は、データブロックに対応させるために使用される。例えば、タグは、データブロックのアドレスに対応してもよく、具体的には、データブロックのいくつかのアドレスビットに対応してもよい。したがって、データブロックに対応する単一ポインタエントリは、データブロックのアドレスとタグとの間の対応に従って検索されてもよい。
【0059】
共有エントリ関連付けビット302は、単一ポインタエントリが共有エントリに関連付けられているか否かを示すために使用される。例えば、共有エントリ関連付けビットの値が1であることは、単一ポインタエントリに関連付けられた共有エントリが存在することを示し、値が0であることは、単一ポインタエントリに関連付けられた共有エントリが存在しないことを示す。
【0060】
全共有ビット303は、データブロックが全てのプロセッサコアにより共有されることを示すため、或いはデータブロックが単一の訪問者を有することを示すために使用される。例えば、全共有ビット303の値が1である場合、データブロックは、全てのプロセッサコアにより共有され、共有エントリ関連付けビットが0であり、すなわち、共有エントリが関連付けられておらず、全共有ビットもまた0である場合、データブロックは、単一の訪問者を有する。
【0061】
単一ポインタ304は、データブロックが単一の訪問者を有する場合、データブロックの単一の訪問者についての情報を記録するために使用される。複数の訪問者が存在する場合、単一ポインタ304は、共有エントリを指すために、単一ポインタエントリと共有エントリとの間の関連付けについての情報を記録するために使用される。単一の訪問者についての情報は、訪問者の識別子として表されてもよく、例では、訪問者(プロセッサコア)の番号又は他の識別子情報が使用されてもよい。単一ポインタエントリと共有エントリとの間の関連付けについての情報は、ポインタ又はインデックス情報として表されてもよい。本発明のこの実施例では、その詳細は限定されない。
【0062】
例えば、共有エントリ関連付けビットが0であり、すなわち、共有エントリが関連付けられておらず、全共有ビットが0であり、すなわち、単一の訪問者が存在する場合、データブロックの単一の訪問者は、単一ポインタに記録され、共有エントリ関連付けビットが1であり、すなわち、共有エントリが関連付けられている場合、共有エントリとの関連付けについての情報は、単一ポインタ304に記録される。関連付けについての情報は、単一ポインタエントリに関連付けられた共有エントリを指すために使用される。
【0063】
図4は、本発明の実施例による共有エントリの概略図である。図4に示すように、共有エントリは、共有者記録構造401と上位アドレス402とウェイ選択ビット403とを含んでもよい。上位アドレス402及びウェイ選択ビット403は、関連付けについての情報を示す関連付け構造である。
【0064】
共有者記録構造401は、データブロックの複数の訪問者についての情報を記録するために使用される。共有者記録構造は、ベクトル又は複数の訪問者が記録されることができる他の構造でもよい。
【0065】
関連付け構造(上位アドレス402及びウェイ選択ビット403)は、単一ポインタエントリを指すために使用される。
【0066】
データブロックが単一の訪問者を有する比較的多くの場合が存在し、データブロックが複数の訪問者を有する比較的少ない場合が存在する。したがって、本発明のこの実施例では、単一ポインタエントリ配列が主な配列として使用され、共有エントリ配列が二次的な配列として使用される。図5に示すように、単一ポインタエントリ配列510及び共有エントリ配列520は、キャッシュのものと同様のセットアソシエイティブ構造をそれぞれ使用する。セット(配列の各行がセットである)の数量は、深度(depth)と呼ばれる。ウェイ(配列の各列がウェイである)の数量は、相関度(correlation)と呼ばれる。単一ポインタエントリ配列は、比較的大きい深度を有するが、中程度の相関度を有し、これにより、アクセス電力消費を低減する。共有エントリ配列は、比較的小さい深度を有するが、比較的大きい相関度を有し、これにより、共有エントリの利用を改善する。ディレクトリアクセスの間に、単一ポインタエントリ配列は、アクセス要求内のアドレス情報に従って検索され、例えば、単一ポインタエントリのタグは、単一ポインタエントリが存在するか否かを決定するために検索される。その後、単一ポインタエントリに従って共有エントリにアクセスし、共有エントリに従って単一ポインタエントリにアクセスすることは、「セットの番号+ウェイの番号」の方式で実現されてもよく、具体的な実現では、まずセットの番号を決定し、次にウェイの番号を決定することにより実現されてもよい。
【0067】
前述の単一ポインタエントリの全てのフィールドにおいて、全共有ビット303は任意選択のフィールドである点に留意すべきである。データブロックがマルチコアシステム内の全てのプロセッサコアにより共有される場合、共有エントリ内の共有者記録構造401は、データブロックが全てのプロセッサコアにより共有されることを示すために使用されてもよい。共有エントリの記憶空間を低減するために、全共有ビット303は、単一ポインタエントリに追加される。「データブロックがマルチコアシステム内の全てのプロセッサコアにより共有される」共有シナリオを示すために、全共有ビット303が1に設定される。
【0068】
図6は、本発明の実施例によるマルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法600の概略フローチャートである。ディレクトリは、本発明の前述の実施例におけるディレクトリである。この方法600は、ディレクトリキャッシュにより実行されてもよい。
【0069】
S610.第1のプロセッサコアにより送信された第1のアクセス要求を受信し、第1のアクセス要求は、ディレクトリ内の第1のデータブロックに対応するエントリにアクセスするために使用される。
【0070】
第1のアクセス要求は、データブロックのアドレス情報を搬送してもよい。ディレクトリは、アクセス要求内のアドレス情報に従ってアクセスされてもよく、データブロックに対応するエントリがディレクトリ内で検索される。
【0071】
S620.第1のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する第1の単一ポインタエントリを有すると決定する。
【0072】
第1のアクセス要求が受信された場合、データブロックに対応する単一ポインタエントリが存在するか否かを決定するために、まず単一ポインタエントリ配列がアクセスされる。具体的には、データブロックに対応する単一ポインタエントリが存在するか否かを決定するために、単一ポインタエントリ配列は、アクセス要求内のアドレス情報に従って検索されてもよい。例えば、図3に示す単一ポインタエントリの構造を例として使用して、データブロックに対応する単一ポインタエントリが存在するか否かを決定するために、アクセス要求内で搬送されたアドレス情報は、単一ポインタエントリ内のタグと比較されてもよい。この実施例では、単一ポインタエントリ配列は、第1のデータブロックに対応する第1の単一ポインタエントリを有する。
【0073】
S630.第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた第1の共有エントリを有すると決定された場合、第1の共有エントリに従って、第1のデータブロックの複数の訪問者を決定する。
【0074】
データブロック(第1のデータブロックとして表される)が対応する単一ポインタエントリ(第1の単一ポインタエントリとして表される)を有する場合、共有エントリ配列が第1の単一ポインタエントリに関連付けられた共有エントリを有するか否かは、第1の単一ポインタエントリに従って決定される。例えば、図3に示す単一ポインタエントリの構造を例として使用して、単一ポインタエントリに関連付けられた共有エントリが存在するか否かは、単一ポインタエントリ内の共有エントリ関連付けビットに従って決定されてもよい。第1の単一ポインタエントリに関連付けられた共有エントリが存在し、すなわち、第1の単一ポインタエントリが共有エントリ(第1の共有エントリとして表される)に関連付けられている場合、第1のデータブロックの複数の訪問者は、第1の共有エントリに従って決定される。具体的には、関連付けられた共有エントリは、単一ポインタエントリに記録された関連付けについての情報、例えば、図3に示す構造における単一ポインタに記録された関連付けについての情報に従って決定されてもよく、共有エントリは、共有エントリからデータブロックの複数の訪問者を取得するためにアクセスされる。
【0075】
図5に示すディレクトリの構造を例として使用して、共有エントリは、以下の方式で単一ポインタエントリに従ってアクセスされてもよい。
【0076】
1.共有エントリのセット番号を取得するために、単一ポインタエントリが属するセットの番号から下位ビットが抽出される。
【0077】
単一ポインタエントリ配列には比較的大量のセットが存在し、共有エントリ配列には比較的少量のセットが存在する。したがって、共有エントリのセット番号は、単一ポインタエントリのセット番号の下位ビットに従って決定されてもよい。
【0078】
単一ポインタエントリ配列が4個のウェイと64個のセットとを含み、共有エントリ配列が8個のウェイと16個のセットとを含むことが仮定される。
【0079】
現在アクセスされている単一ポインタエントリの共有エントリ関連付けビットが1である場合、共有エントリが関連付けられており、共有エントリ配列がアクセスされる必要がある。64セットの単一ポインタエントリ配列内のセットの番号は、6ビット(bit)を含み、単一ポインタエントリは、第55セットに属し、セットの番号は、b_110111(b_は2進数を表す)として表される。共有エントリ配列は、合計16セットを含み、4ビットを有するセット番号がインデックス化のために必要である。対応する共有エントリが共有エントリ配列内の第7セットに属することを取得するために、下位の4ビットb_0111がb_110111から抽出される。
【0080】
2.1つのセット内にある共有エントリの複数のウェイを読み取るために、共有エントリ配列がアクセスされる。
【0081】
セット内の8個の共有エントリ(8個のウェイ)を取得するために、共有エントリ配列内の第7セットが、前のステップにおいて取得されたセット番号に従ってアクセスされる。
【0082】
3.単一ポインタエントリ内の単一ポインタに従って共有エントリの複数のウェイに対してウェイ選択が実行される。
【0083】
8個のウェイからの選択は3ビットを必要とする。単一ポインタの値がb_1100であると仮定すると、関連付けられた共有エントリを取得するために、単一ポインタの値の下位の3ビットb_100、すなわち、第4ウェイが使用されてもよい。
【0084】
本発明のこの実施例では、任意選択で、図7aに示すように、この方法600は以下を更に含んでもよい。
【0085】
S640.第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた第1の共有エントリを有さないと決定された場合、第1の単一ポインタエントリに従って、第1のデータブロックの単一の訪問者、又は第1のデータブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを決定する。
【0086】
すなわち、第1の単一ポインタエントリが第1の共有エントリに関連付けられていない場合、第1のデータブロックの訪問者は、第1の単一ポインタエントリのみに従って決定される。具体的には、第1の単一ポインタエントリは、第1のデータブロックの単一の訪問者を記録するため、或いは第1のデータブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すために使用されてもよい。2つの場合の双方において、共有エントリが関連付けられる必要はなく、比較的少ないビットが表現のために使用されてもよい。具体的な例については、前述の実施例を参照し、詳細はここでは再び説明しない。
【0087】
本発明のこの実施例によるディレクトリアクセス方法では、単一ポインタエントリがまずアクセスされ、単一ポインタエントリが共有エントリに関連付けられている場合、関連付けられた共有エントリが次にアクセスされ、データブロックが単一の訪問者を有する場合、単一の訪問者は、単一ポインタエントリから取得されてもよく、データブロックが複数の訪問者を有する場合、複数の訪問者は、単一ポインタエントリに関連付けられた共有エントリから取得されてもよい。このように、ディレクトリ内のディレクトリエントリの平均サイズが大きく圧縮されることが可能になり、性能ロスが比較的非常に小さい。したがって、ディレクトリにより占有される記憶リソースは、低減されることが可能になり、システムのスケーラビリティが改善されることが可能になる。
【0088】
本発明のこの実施例では、単一ポインタエントリ配列がデータブロックに対応する単一ポインタエントリを有さない場合、対応する単一ポインタエントリは、データブロックに更に割り当てられてもよい。
【0089】
したがって、任意選択で、第1のプロセッサコアにより送信された第1のアクセス要求が受信された後に、図7bに示すように、この方法600は以下を更に含んでもよい。
【0090】
S662.第1のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する単一ポインタエントリを有さないと決定する。
【0091】
S663.単一ポインタエントリ配列において、第1のデータブロックに対応する第1の単一ポインタエントリを第1のデータブロックに割り当て、第1のプロセッサコアについての情報を第1の単一ポインタエントリに記録する。
【0092】
すなわち、データブロックが対応する単一ポインタエントリを有さない場合、単一ポインタエントリは、データブロックに割り当てられてもよく、単一の訪問者(すなわち、第1のプロセッサコア)についての情報が、割り当てられた単一ポインタエントリに記録される。
【0093】
具体的には、単一ポインタエントリ配列が未使用の単一ポインタエントリを有する場合、単一ポインタエントリは、第1の単一ポインタエントリとして、未使用の単一ポインタエントリから選択され、第1のプロセッサコアについての情報が記録される。
【0094】
単一ポインタエントリ配列が未使用の単一ポインタエントリを有さない場合、単一ポインタエントリは、最長時間未使用の原理に従って選択される。
【0095】
選択された単一ポインタエントリが共有エントリに関連付けられておらず、単一の訪問者についての情報を記録する場合、無効メッセージが、記録された単一の訪問者に送信され、第1のプロセッサコアについての情報が、選択された単一ポインタエントリに記録される。
【0096】
選択された単一ポインタエントリが共有エントリに関連付けられておらず、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示す場合、無効メッセージが、全てのプロセッサコアにブロードキャストされ、第1のプロセッサコアについての情報が、選択された単一ポインタエントリに記録される。
【0097】
選択された単一ポインタエントリが共有エントリに関連付けられている場合、関連付けられた共有エントリに記録された複数の訪問者が、選択された単一ポインタエントリに関連付けられた共有エントリに従って決定され、無効メッセージが、記録された複数の訪問者に送信され、第1のプロセッサコアについての情報が、選択された単一ポインタエントリに記録される。
【0098】
以下に、例を使用することにより、本発明のこの実施例によるディレクトリアクセス方法について詳細に説明する。
【0099】
図8は、本発明の他の実施例によるディレクトリアクセス方法の概略フローチャートである。
【0100】
801.単一ポインタエントリ配列にアクセスし、単一ポインタエントリにヒットした場合、ステップ802が実行され、或いは単一ポインタエントリにヒットしなかった場合、ステップ807が実行される。
【0101】
例えば、単一ポインタエントリ及び共有エントリがそれぞれ図3及び図4に示す構造を使用する場合、データブロックに対応する単一ポインタエントリが存在するか否かを決定するために、アクセス要求内で搬送されたアドレス情報は、単一ポインタエントリ内のタグと比較されてもよい。
【0102】
802.単一ポインタエントリが共有エントリに関連付けられているか否かを決定し、そうである場合、803が実行され、或いはそうでない場合、804が実行される。
【0103】
例えば、単一ポインタエントリが共有エントリに関連付けられているか否かは、ヒットした単一ポインタエントリ内の共有エントリ関連付けビットに従って決定されてもよい。共有エントリ関連付けビットが1である場合、共有エントリが関連付けられており、共有エントリ関連付けビットが0である場合、共有エントリが関連付けられていない。
【0104】
803.訪問者リストを取得するために、関連付けられた共有エントリにアクセスする。
【0105】
例えば、関連付けられた共有エントリは、単一ポインタエントリ内の単一ポインタに従って見つけられてもよく、これにより、関連付けられた共有エントリ内の共有者記録構造から訪問者リストを取得する。
【0106】
804.全共有が実現されているか否かを決定し、そうである場合、805が実行され、或いはそうでない場合、806が実行される。
【0107】
共有エントリが関連付けられていない場合、データブロックが全てのプロセッサコアにより共有されるか否かが決定される。例えば、全共有が実現されているか否かは、単一ポインタエントリ内の全共有ビットに従って決定されてもよい。全共有ビットが0である場合、データブロックは、単一の訪問者を有し、すなわち、全共有が実現されていない。全共有ビットが1である場合、データブロックは、全てのプロセッサコアにより共有され、すなわち、全共有が実現されている。
【0108】
805.データブロックが全てのプロセッサコアにより共有されることを決定する。
【0109】
806.単一の訪問者を取得する。
【0110】
例えば、単一の訪問者は、単一ポインタエントリ内の単一ポインタから取得されてもよい。
【0111】
807.未使用の単一ポインタエントリが存在するか否かを決定し、そうである場合、808が実行され、或いはそうでない場合、809が実行される。
【0112】
808.未使用の単一ポインタエントリを選択し、アクセスするプロセッサコアについての情報を記録する。
【0113】
例えば、プロセッサコアの識別子が記録されてもよい。64個のコアを例として使用して、6ビットの識別子が使用されてもよい。
【0114】
809.最長時間未使用である単一ポインタエントリを選択し、選択された単一ポインタエントリが共有エントリに関連付けられているか否かを決定し、そうである場合、810が実行され、或いはそうでない場合、811が実行される。
【0115】
810.複数の訪問者を無効にし、アクセスするプロセッサコアについての情報を記録する。
【0116】
関連付けられた共有エントリに記録された複数の訪問者は、関連付けられた共有エントリに従って決定される。無効メッセージが、複数の訪問者に送信され、アクセスするプロセッサコアについての情報が、選択された単一ポインタエントリに記録される。
【0117】
811.選択された単一ポインタエントリが全共有を示すか否かを決定し、そうである場合、812が実行され、或いはそうでない場合、813が実行される。
【0118】
812.無効メッセージをブロードキャストし、アクセスするプロセッサコアについての情報を選択された単一ポインタエントリに記録する。
【0119】
813.単一の訪問者を無効にし、アクセスするプロセッサコアについての情報を記録する。
【0120】
選択された単一ポインタエントリに記録された単一の訪問者が決定され、無効メッセージが単一の訪問者に送信され、アクセスするプロセッサコアについての情報が、選択された単一ポインタエントリに記録される。
【0121】
本発明のこの実施例では、単一ポインタエントリ(すなわち、第1の単一ポインタエントリ)がデータブロック(前述の第1のデータブロック)に割り当てられた後に、第1のデータブロックの単一の訪問者(すなわち、第1のプロセッサコア)が第1の単一ポインタエントリに記録される。この場合、第1のデータブロックは、第1のプロセッサコアによりプライベートに所有される。第1のデータブロックが他のプロセッサコア(第2のプロセッサコアとして表される)によりアクセスされた場合、共有エントリが共有エントリ配列において割り当てられる必要があり、複数の訪問者(第1のプロセッサコア及び第2のプロセッサコア)についての情報が、共有エントリを使用することにより記録される。
【0122】
したがって、任意選択で、図9aに示すように、この方法600は以下を更に含んでもよい。
【0123】
S671.第2のプロセッサコアにより送信された第2のアクセス要求を受信し、第2のアクセス要求は、ディレクトリ内の第1のデータブロックに対応するエントリにアクセスするために使用される。
【0124】
S672.第2のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する第1の単一ポインタエントリを有すると決定する。
【0125】
S673.第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた共有エントリを有さないと決定された場合、第1の単一ポインタエントリに従って、第1のデータブロックの単一の訪問者が第1のプロセッサコアであると決定する。
【0126】
S674.共有エントリ配列内の第1の共有エントリを割り当て、第1の単一ポインタエントリと第1の共有エントリとの間に関連付け関係を確立し、第1のプロセッサコアについての情報及び第2のプロセッサコアについての情報を第1の共有エントリに記録する。
【0127】
具体的には、第1の共有エントリが割り当てられるときに、共有エントリ配列が未使用の共有エントリを有する場合、共有エントリは、第1の共有エントリとして、未使用の共有エントリから選択される。
【0128】
共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者についての情報を記録する共有エントリを有する場合、1つのみの訪問者についての情報を記録する共有エントリが選択され、訪問者についての記録された情報が、選択された共有エントリに関連付けられた単一ポインタエントリに書き込まれる。
【0129】
共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者についての情報を記録する共有エントリも有さない場合、共有エントリは、最長時間未使用の原理に従って選択される。選択された共有エントリに記録された訪問者の数量が所定の閾値より大きい場合、選択された共有エントリに関連付けられた単一ポインタエントリが、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すように設定される。選択された共有エントリに記録された訪問者の数量が所定の閾値より大きくない場合、記録された訪問者のうち1つの訪問者についての情報が、選択された共有エントリに関連付けられた単一ポインタエントリに書き込まれ、無効メッセージが、記録された訪問者のうち他の訪問者に送信される。
【0130】
すなわち、共有エントリが割り当てられるときに、未使用の共有エントリが優先的に使用される。未使用の共有エントリが存在しない場合、使用されている共有エントリが取り消される必要があり、1つのみの訪問者を記録する共有エントリが優先的に選択される。1つのみの訪問者を記録する共有エントリが存在しない場合、最長時間未使用である共有エントリが選択される。1つのみの訪問者を記録する共有エントリが取り消される場合、単一の訪問者は、関連付けられた単一ポインタエントリに書き込まれる必要があり、これは、訪問者の情報の喪失を回避する。複数の訪問者を記録する共有エントリが取り消される場合、訪問者リストは、訪問者の数量に従って異なる方式で圧縮されてもよく、関連付けられた単一ポインタエントリに記憶されてもよい。具体的には、訪問者の数量が所定の閾値より大きい場合、関連付けられた単一ポインタエントリが、データブロックが全てのプロセッサコアにより共有されることを示すように設定され、これは、アップコンバージョンと呼ばれてもよい。訪問者の数量が所定の閾値より大きくない場合、訪問者のうち1つの訪問者が、関連付けられた単一ポインタエントリに書き込まれ、無効メッセージが、他の訪問者に送信され、すなわち、1つのみの訪問者が保持され、これは、ダウンコンバージョンと呼ばれてもよい。
【0131】
例えば、図9bに示すように、アップコンバージョンが実行される場合、関連付けられた単一ポインタエントリ内の全共有ビットは1に設定され、データブロックが全てのプロセッサコアにより共有されることを示す。ダウンコンバージョンが実行される場合、1つのみの訪問者(図9bに示す番号3の訪問者)が保持され、訪問者が関連付けられた単一ポインタエントリに記録される。
【0132】
取り消された共有エントリは、他のデータブロックに割り当てられてもよい。すなわち、本発明の実施例では、共有エントリは、データ共有における変化に従って動的に割り当てられてもよい。このように、ディレクトリリソースがより柔軟に利用され、ディレクトリリソースの利用が改善されることができる。
【0133】
共有エントリが取り消される場合、単一ポインタエントリは、共有エントリに従ってアクセスされる必要がある。この場合、関連付けられた単一ポインタエントリは、共有エントリに従って決定されてもよい。具体的には、関連付けられた単一ポインタエントリは、共有エントリ内の関連付け構造に従って決定されてもよい。
【0134】
図5に示すディレクトリ構造を例として使用して、単一ポインタエントリは、以下の方式で共有エントリに従ってアクセスされてもよい。
【0135】
1.単一ポインタエントリ配列内のセットの番号を取得するために、共有エントリが属するセットの番号及び上位アドレスが一緒に接合される。
【0136】
単一ポインタエントリ配列には比較的大量のセットが存在し、共有エントリ配列には比較的少量のセットが存在する。したがって、単一ポインタエントリのセット番号は、上位アドレスと共有エントリのセット番号とを結合することにより取得される必要がある。
【0137】
単一ポインタエントリ配列が4個のウェイと64個のセットとを含み、共有エントリ配列が8個のウェイと16個のセットとを含むことが仮定される。
【0138】
共有エントリが第5セット(b_0101)に属し、上位アドレスがb_10であり、ウェイ選択ビットがb_01であることを仮定すると、対応する単一ポインタエントリのセット番号は、共有エントリのセット番号と上位アドレスとを接合することにより取得され、b_100101、すなわち、37である。
【0139】
2.1つのセット内の単一ポインタエントリの複数のウェイを読み取るために、単一ポインタエントリ配列がアクセスされる。
【0140】
セット内の4個の単一ポインタエントリ(4個のウェイ)を取得するために、単一ポインタエントリ配列内の第37セットが、前述のステップにおいて取得されたセット番号に従ってアクセスされる。
【0141】
3.ウェイ選択が、共有エントリ内のウェイ選択ビットに従って単一ポインタエントリの複数のウェイに対して実行される。
【0142】
共有エントリ内のウェイ選択ビットがウェイ選択のために使用され、ウェイ選択ビットがb_01、すなわち、第1のウェイであり、これにより、関連付けられた単一ポインタエントリを取得する。
【0143】
本発明の様々な実施例において、前述の処理のシーケンス番号は実行順序を意味しないことが理解されるべきである。処理の実行順序は処理の機能及び固有の論理により決定されるべきであり、本発明の実施例の実現処理における限定として解釈されるべきではない。
【0144】
図10は、本発明の実施例によるディレクトリキャッシュデバイス1000の概略ブロック図である。図10に示すように、ディレクトリキャッシュデバイス1000は、ディレクトリ記憶ユニット1010と実行ユニット1020とを含む。
【0145】
ディレクトリ記憶ユニット1010は、マルチコアシステム内にあるディレクトリを記憶するように構成される。マルチコアシステムは、共有データキャッシュと複数のプロセッサコアとを含む。共有データキャッシュ内のデータブロックは、複数のプロセッサコアのうち少なくとも1つのプロセッサコアにコピーされる。ディレクトリは、共有データキャッシュ内のデータブロックの訪問者についての情報を記録するために使用される。データブロックの訪問者は、データブロックのコピーが記憶されているプロセッサコアである。ディレクトリは、単一ポインタエントリ配列と共有エントリ配列とを含み、単一ポインタエントリ配列内の各単一ポインタエントリは、データブロックの単一の訪問者についての情報を記録するため、或いは単一ポインタエントリと共有エントリ配列内の共有エントリとの間の関連付けについての情報を記録するために使用され、共有エントリ配列内の各共有エントリは、データブロックの複数の訪問者についての情報を記録するために使用される。
【0146】
実行ユニット1020は、
第1のプロセッサコアにより送信された第1のアクセス要求を受信するように構成され、第1のアクセス要求は、ディレクトリ内の第1のデータブロックに対応するエントリにアクセスするために使用され、
第1のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する第1の単一ポインタエントリを有すると決定するように構成され、
第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた第1の共有エントリを有すると決定した場合、第1の共有エントリに従って、第1のデータブロックの複数の訪問者を決定するように構成される。
【0147】
本発明のこの実施例によるディレクトリキャッシュデバイスでは、単一ポインタエントリ配列と共有エントリ配列とを含むディレクトリ構造が使用される。複数の訪問者が記録される必要がない場合、単一ポインタエントリは、共有エントリに関連付けられない。複数の訪問者が記録される必要がある場合、単一ポインタエントリは、共有エントリに関連付けられる。このように、ディレクトリ内のディレクトリエントリの平均サイズが大きく圧縮されることが可能になり、性能ロスが比較的非常に小さい。したがって、ディレクトリにより占有される記憶リソースは、低減されることが可能になり、システムのスケーラビリティが改善されることが可能になる。
【0148】
本発明のこの実施例では、任意選択で、単一ポインタエントリは、タグと共有エントリ関連付けビットと単一ポインタとを含む。タグは、データブロックに対応させるために使用される。共有エントリ関連付けビットは、単一ポインタエントリが共有エントリに関連付けられているか否かを示すために使用される。単一ポインタは、データブロックが単一の訪問者を有する場合、単一の訪問者についての情報を記録し、単一ポインタエントリが共有エントリに関連付けられている場合、単一ポインタエントリと共有エントリとの間の関連付けについての情報を記録するために使用される。
【0149】
共有エントリは、共有者記録構造と関連付け構造とを含む。共有者記録構造は、データブロックの複数の訪問者についての情報を記録するために使用され、関連付け構造は、単一ポインタエントリを関連付けるために使用される。
【0150】
本発明のこの実施例では、任意選択で、単一ポインタエントリは、全共有ビットを更に含む。
【0151】
全共有ビットは、単一ポインタエントリが共有エントリに関連付けられていない場合、データブロックが単一の訪問者を有することを示すため、或いはデータブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すために使用される。
【0152】
本発明のこの実施例では、任意選択で、単一ポインタエントリ配列内の単一ポインタエントリは、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すために更に使用され、実行ユニット1020は、
第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた第1の共有エントリを有さないと決定した場合、第1の単一ポインタエントリに従って、第1のデータブロックの単一の訪問者、又は第1のデータブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを決定するように更に構成される。
【0153】
本発明のこの実施例では、任意選択で、実行ユニット1020が第1のプロセッサコアにより送信された第1のアクセス要求を受信した後に、実行ユニット1020は、
第1のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する単一ポインタエントリを有さないと決定し、
単一ポインタエントリ配列において、第1のデータブロックに対応する第1の単一ポインタエントリを第1のデータブロックに割り当て、第1のプロセッサコアについての情報を第1の単一ポインタエントリに記録するように更に構成される。
【0154】
本発明のこの実施例では、任意選択で、実行ユニット1020は、
単一ポインタエントリ配列が未使用の単一ポインタエントリを有する場合、第1の単一ポインタエントリとして、未使用の単一ポインタエントリから単一ポインタエントリを選択し、第1のプロセッサコアについての情報を記録するように構成され、或いは
単一ポインタエントリ配列が未使用の単一ポインタエントリを有さない場合、最長時間未使用の原理に従って、単一ポインタエントリを選択し、選択された単一ポインタエントリが共有エントリに関連付けられておらず、単一の訪問者についての情報を記録する場合、無効メッセージを記録された単一の訪問者に送信し、第1のプロセッサコアについての情報を選択された単一ポインタエントリに記録するように構成され、或いは
選択された単一ポインタエントリが共有エントリに関連付けられておらず、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示す場合、無効メッセージを全てのプロセッサコアにブロードキャストし、第1のプロセッサコアについての情報を選択された単一ポインタエントリに記録するように構成され、或いは
選択された単一ポインタエントリが共有エントリに関連付けられている場合、選択された単一ポインタエントリに関連付けられた共有エントリに従って、関連付けられた共有エントリに記録された複数の訪問者を決定し、無効メッセージを記録された複数の訪問者に送信し、第1のプロセッサコアについての情報を選択された単一ポインタエントリに記録するように構成される。
【0155】
本発明のこの実施例では、任意選択で、実行ユニット1020は、
第2のプロセッサコアにより送信された第2のアクセス要求を受信するように更に構成され、第2のアクセス要求は、ディレクトリ内の第1のデータブロックに対応するエントリにアクセスするために使用され、
第2のアクセス要求に従って、単一ポインタエントリ配列が第1のデータブロックに対応する第1の単一ポインタエントリを有すると決定するように更に構成され、
第1の単一ポインタエントリに従って、共有エントリ配列が第1の単一ポインタエントリに関連付けられた共有エントリを有さないと決定した場合、第1の単一ポインタエントリに従って、第1のデータブロックの単一の訪問者が第1のプロセッサコアであると決定するように更に構成され、
共有エントリ配列内の第1の共有エントリを割り当て、第1の単一ポインタエントリと第1の共有エントリとの間に関連付け関係を確立し、第1のプロセッサコアについての情報及び第2のプロセッサコアについての情報を第1の共有エントリに記録するように更に構成される。
【0156】
本発明のこの実施例では、任意選択で、実行ユニット1020は、
共有エントリ配列が未使用の共有エントリを有する場合、第1の共有エントリとして、未使用の共有エントリから共有エントリを選択するように構成され、或いは
共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者についての情報を記録する共有エントリを有する場合、1つのみの訪問者についての情報を記録する共有エントリを選択し、訪問者についての記録された情報を、選択された共有エントリに関連付けられた単一ポインタエントリに書き込むように構成され、或いは
共有エントリ配列が未使用の共有エントリを有さず、1つのみの訪問者を記録する共有エントリも有さない場合、最長時間未使用の原理に従って、共有エントリを選択し、選択された共有エントリに記録された訪問者の数量が所定の閾値より大きい場合、データブロックがマルチコアシステム内の全てのプロセッサコアにより共有されることを示すように、選択された共有エントリに関連付けられた単一ポインタエントリを設定し、或いは選択された共有エントリに記録された訪問者の数量が所定の閾値より大きくない場合、記録された訪問者のうち1つの訪問者についての情報を、選択された共有エントリに関連付けられた単一ポインタエントリに書き込み、無効メッセージを記録された訪問者のうち他の訪問者に送信するように構成される。
【0157】
本発明のこの実施例では、ディレクトリキャッシュデバイス1000内のディレクトリ記憶ユニット1010に記憶されたディレクトリは、本発明の前述の実施例によるディレクトリでもよい。実行ユニット1020は、前述の方法の実施例における各処理を実行してもよい。対応する具体的な説明については、前述の実施例を参照する。簡潔にするために、詳細はここでは再び説明しない。
【0158】
本発明の実施例は、マルチコアシステムを更に提供する。図11に示すように、マルチコアシステム1100は、複数のプロセッサコア1110と、共有データキャッシュ1120と、本発明の前述の実施例におけるディレクトリキャッシュデバイス1000とを含む。
【0159】
具体的には、マルチコアシステム100と比べて、本発明のこの実施例におけるマルチコアシステム1100は、新たなディレクトリキャッシュデバイス1000を使用する。ディレクトリキャッシュデバイス1000は、本発明のこの実施例において提供される新たなディレクトリ構造を含む。
【0160】
当業者は、この明細書に開示された実施例に記載の例と組み合わせて、ユニット及びアルゴリズムのステップが、電子ハードウェア、コンピュータソフトウェア又はこれらの組み合わせにより実現され得ることを認識し得る。ハードウェアとソフトウェアとの間の互換性を明確に記載するために、前述では、機能に従って各例の構成及びステップを一般的に説明している。機能がハードウェアにより実行されるかソフトウェアにより実行されるかは、技術的解決策の特定の用途及び設計上の制約条件に依存する。当業者は、特定の用途毎に記載の機能を実現するために異なる方法を使用してもよいが、この実現が本発明の範囲を超えると考えられるべきではない。
【0161】
便宜上且つ簡潔な説明の目的で、前述のシステム、装置及びユニットの詳細な動作処理について、前述の方法の実施例における対応する処理に参照が行われてもよく、詳細はここでは再び説明しないことが当業者により明らかに理解され得る。
【0162】
この出願において提供されるいくつかの実施例において、開示のシステム、装置及び方法は、他の方式で実現されてもよいことが理解されるべきである。例えば、記載の装置の実施例は、単なる例である。例えば、ユニットの分割は、単に論理的な機能分割であり、実際の実現では他の分割でもよい。例えば、複数のユニット又はコンポーネントは結合されてもよく、或いは他のシステムに統合されてもよく、或いはいくつかの特徴が無視されてもよく或いは実行されなくてもよい。さらに、表示又は説明した相互結合若しくは直接結合又は通信接続は、いくつかのインタフェースを通じて実現されてもよい。装置又はユニットの間の間接結合又は通信接続は、電子的、機械的或いは他の形式で実現されてもよい。
【0163】
別々の部分として記載したユニットは、物理的に別々でもよく或いは別々でなくてもよく、ユニットとして表示された部分は、物理的なユニットでもよく或いは物理的なユニットでなくてもよく、1つの場所に位置してもよく、或いは複数のネットワークユニットに分散されてもよい。ユニットの一部又は全部は、本発明の実施例の解決策の目的を達成するために、実際のニーズに従って選択されてもよい。
【0164】
さらに、本発明の実施例における機能ユニットは、1つの処理ユニットに統合されてもよく、或いはユニットのそれぞれが物理的に単独で存在してもよく、或いは2つ以上のユニットが1つのユニットに統合されてもよい。統合されたユニットは、ハードウェアの形式で実現されてもよく、或いはソフトウェア機能ユニットの形式で実現されてもよい。
【0165】
統合されたユニットがソフトウェア機能ユニットの形式で実現され、独立したプロダクトとして販売又は使用される場合、統合されたユニットは、コンピュータ読み取り可能記憶媒体に記憶されてもよい。このような理解に基づいて、本発明の技術的解決策は、本質的に、或いは、従来技術に寄与する部分又は技術的解決策の全部若しくは一部は、ソフトウェアプロダクトの形式で実現されてもよい。ソフトウェアプロダクトは、記憶媒体に記憶され、コンピュータデバイス(パーソナルコンピュータ、サーバ又はネットワークデバイスでもよい)に対して本発明の実施例に記載の方法のステップの全部又は一部を実行するように命令するためのいくつかの命令を含む。前述の記憶媒体は、USBフラッシュドライブ、取り外し可能ハードディスク、読み取り専用メモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、磁気ディスク又は光ディスクのようなプログラムコードを記憶することができるいずれかの媒体を含む。
【0166】
前述の説明は、本発明の単に具体的な実施例に過ぎず、本発明の保護範囲を限定することを意図するものではない。本発明に開示された技術範囲内で当業者により容易に理解される如何なる変更又は置換も本発明の保護範囲内に入るものとする。したがって、本発明の保護範囲は、特許請求の範囲の保護範囲に従うものとする。
図1
図2
図3
図4
図5
図6
図7a
図7b
図8
図9a
図9b
図10
図11