JP2018503181A - キャッシュ一貫性を有するマルチコアプロセッサ - Google Patents
キャッシュ一貫性を有するマルチコアプロセッサ Download PDFInfo
- Publication number
- JP2018503181A JP2018503181A JP2017531592A JP2017531592A JP2018503181A JP 2018503181 A JP2018503181 A JP 2018503181A JP 2017531592 A JP2017531592 A JP 2017531592A JP 2017531592 A JP2017531592 A JP 2017531592A JP 2018503181 A JP2018503181 A JP 2018503181A
- Authority
- JP
- Japan
- Prior art keywords
- data
- core
- memory
- cores
- caching
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
キャッシュ一貫性をサポートするマルチコアプロセッサ、その使用によるデータ書き込みのための方法及び装置、メモリ割当てのための方法及び装置、ならびにシステム。キャッシュ一貫性をサポートするマルチコアプロセッサは、複数のコアを備え、複数のコアは、それぞれのローカルキャッシュに対応する。複数のコアのうちの各コアのローカルキャッシュは、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、複数のコアのうちの各コアは、複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする。
Description
関連出願の相互参照
本出願は、参照することにより全体が本明細書に組み込まれる2014年12月10日に出願された中国特許出願第201410756732.3号に対する利益を主張する。
本出願は、参照することにより全体が本明細書に組み込まれる2014年12月10日に出願された中国特許出願第201410756732.3号に対する利益を主張する。
本発明は、一般に、マルチコアプロセッサに関し、より詳細には、キャッシュ一貫性をサポートするマルチコアプロセッサに関する。本願は、マルチコアプロセッサの使用による、データ読み取りのための方法及び装置、データ書き込みのための方法及び装置、ならびにメモリ割当てのための方法及び装置と、キャッシュ一貫性をサポートするマルチコアプロセッサ及びシステムとを提供する。
コンピュータ技術の開発中、メインメモリ(すなわち、物理メモリまたは一般的にいわれるメモリ)は、CPUの速度よりも、常に、はるかに遅い速度でデータを記憶し、読み出し、それによって、CPUの高い処理能力を最大限に活かすことがない。CPUとメインメモリとの不釣り合いな処理速度をバッファリングするために、それらの間に高速キャッシュ(すなわち、一般にいわれるキャッシュ)が導入され得る。
キャッシュの記憶容量は、メインメモリの記憶容量よりもはるかに小さくなりがちであるが、キャッシュは、CPUの速度に釣り合う速度でデータを記憶し、読み出すことができる。プログラムの局所性の原理によれば、CPUによって現在アクセスされている命令及びデータは、その後、複数回アクセスされることが多く、同じことが、隣接するメモリセクションについても言える。そのため、コンピュータハードウェアは、通常、CPUがメモリの中のデータにアクセスしようとするとき、まずキャッシュにアクセスするように、CPUによって現在アクセスされているデータに関係するメモリセクションの中のデータを、自動的にキャッシュにロードするように設計されている。キャッシュミスが存在する場合には、CPUは、メモリにアクセスする。この手法を使用すると、CPUが直接、メモリにアクセスすることが最大限抑えられ、それによって、コンピュータシステムの全体的な処理速度を高めることができる。
近年、コンピュータシステムは、マルチコアプロセッサの方向に進化している。そのようなシステムの典型的なアーキテクチャが、図1に示されている。コンピュータシステム10は、複数のCPUコア12_0、12_1、…、12_n−1を含み、ここで、nは、1以上の自然数である。各コアは、CPUコア処理の速度向上を目的として、そのそれぞれのキャッシュ、たとえば、L1キャッシュ14_1、14_2、14_3、…、14_n、及びL2キャッシュ16_1、16_2、16_3、…、16_nに、アクセスすべきデータを記憶する。複数のコアのプライベートキャッシュによるこの方式により、いずれのデータも記憶されうるので、共有キャッシュが、キャッシュ冗長性を低減させるために導入される。通常、システム10はまた、システムの中のメモリコントローラ20にアクセスする前に、コアすべてによって共有される、キャッシュインデックス22、及び最終レベルのキャッシュ(LLC)18を含む。そのような共有キャッシュは、複数のコア間でデータを共有化し、通信遅延を抑え、同時にデータ冗長性を抑え、キャッシュスペース利用効率を高めることができる。
プライベートキャッシュが、同じデータの複数のコピーをキャッシングすることにつながるという事実により、データ一貫性を確保するために、現在の技術は、通常、インデックスベースの一貫性プロトコルを利用する。たとえば、キャッシュインデックスは、どのプライベートキャッシュがどのデータのコピーを有するかを記録していることから、相異なるコアの相異なるプライベートキャッシュの中のデータを追跡するのに利用可能であり、そのようなキャッシュインデックスに基づいて、データ読取り及びデータ書込み操作が実行されることになる。たとえば、CPUコアが、その対応するプライベートキャッシュにデータを書き込む必要があるとき、まず、CPUコアは、他のどのプライベートキャッシュもまた、そのデータのコピーを記憶しているかに関してキャッシュインデックスを参照し、対応するデータをNULLとして設定するようにそれらのプライベートキャッシュに通知し、次いで、データ書込み操作を実行して、キャッシュデータ一貫性を確保する。
しかしながら、上述のシステム及びキャッシュインデックスベースの一貫性プロトコルには問題がある。第1に、キャッシュインデックスが、相異なるCPUのプライベートキャッシュにおけるデータの追跡を続けることにより、CPUコアの数の増加が、結果的に、キャッシュインデックスのサイズの増大を招き、より多くのキャッシュスペースを占有し、プロセッサのコアの数の拡張可能性に深刻な影響をもたらす。
第2に、プライベートキャッシュと共有キャッシュとの間に不可避な対立が存在する。プライベートキャッシュが、同じデータの複数のコピーを有することは、キャッシュ使用効率の低下につながる。共有キャッシュは、データ冗長性、及びキャッシュスペース使用量の増加を低減させ得るが、コアの数が増加すること、及びLLCがあらゆるCPUコアと相互接続することにより、LLC設計に固有のハードウェア関連のレイテンシが増加し、キャッシュレイテンシの増加が生じることになる。
最後に、CPUコアすべてのプライベートキャッシュを分析するインデックスベースのデータ一貫性プロトコルの必要性は、制約されたデータ読取り及びデータ書込み操作につながる。たとえば、あらゆるデータ読取り操作は、現在、アクセスされているデータが、他のCPUコアのプライベートキャッシュにおけるコピーと確実に一致しているようにするために、LLC及びキャッシュインデックスを訪れなくてはならず、結果的に、データのアクセス性の低下を招く。
本開示は、キャッシュ一貫性をサポートするマルチコアプロセッサを提供し、現在の技術ではマルチコアプロセッサのキャッシュインデックスが、大量のキャッシュスペースを消費し、データのアクセス性に影響をもたらし、共有キャッシュにアクセスするときにレイテンシの増加を引き起こすという諸問題を解決する。本開示はさらに、すべてマルチコアプロセッサの使用による、データ読み取りのための方法及び装置、データ書き込みのための方法及び装置、メモリ割当てのための方法及び装置、ならびにシステムを提供する。
本開示の例示的な実施形態によれば、キャッシュ一貫性をサポートするマルチコアプロセッサは、複数のコアを備え、この複数のコアは、それぞれのローカルキャッシュに対応する。複数のコアのうちの各コアのローカルキャッシュは、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、複数のコアのうちの各コアは、複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする。
代替の実施形態の場合、マルチコアプロセッサの複数のコアは、コアのそれぞれのローカルキャッシュに対応するアドレス範囲におけるメモリスペースの中のメモリセクションにアクセスする。別の代替の実施形態の場合、マルチコアプロセッサは、複数のコアに操作可能に連結されてメモリスペースから複数のコアにデータを提供するメモリコントローラを含む。さらなる別の代替の実施形態の場合、マルチコアプロセッサの複数のコアのうちの各コアのローカルキャッシュは、レベル1(L1)キャッシュ及びレベル2(L2)キャッシュを含む。
本開示の別の例示的な実施形態によれば、上述のマルチコアプロセッサの使用によるデータ読み取りの方法は、データ読取り操作を実行すべきマルチコアプロセッサのコアが、読み取るべきデータのメモリアドレスに基づいて、コアがデータのキャッシングを担っているかどうかを判断するステップを含む。この方法はまた、コアがデータのキャッシングを担っているとの判断に応じて、コアのローカルキャッシュからデータを読み取るステップ、そうでない場合、データのキャッシングを担っているマルチコアプロセッサのリモートコアにデータ読取り要求を送信し、リモートコアによって返信されるデータを受信するステップを含む。
代替の実施形態の場合、コアが、読み取るべきデータのメモリアドレスに基づいて、データのキャッシングを担っているかどうかを判断する上述のステップは、データのメモリアドレスに基づいて、かつメモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、データのキャッシングを担っているコアのラベリング番号を計算することを含む。このステップは、計算されたラベリング番号がコアのラベリング番号と同じである場合、コアがデータのキャッシングを担っていると判断することをさらに含む。
別の代替の実施形態の場合、メモリスペースを対応するキャッシングのためのアドレスに分割するための上述の所定のポリシーは、MEM/N*nからMEM/N*(n+1)−1までのアドレス範囲におけるメモリスペースの中のデータのキャッシングを担うべき複数のコアのうちの各コアに向けられ、MEMはメモリスペースの容量であり、Nは複数のコアの総数であり、nは複数のコアのうちの各コアのラベリング番号であり、nは0からN−1までの範囲の値を有する。
さらなる別の代替の実施形態の場合、データのキャッシングを担っているコアの上述のラベリング番号は、数式:
Core No.=(A*N/MEM)mod N
を用いて計算され得、ただし、Core No.はコアのラベリング番号を示し、Aはデータのメモリアドレスである。
Core No.=(A*N/MEM)mod N
を用いて計算され得、ただし、Core No.はコアのラベリング番号を示し、Aはデータのメモリアドレスである。
さらなる別の代替の実施形態の場合、コアのローカルキャッシュからデータを読み取る上述のステップは、データのメモリアドレスに基づいて、コアのローカルキャッシュにおいてデータがキャッシュされているかどうかを判断することを含む。このステップは、データがコアのローカルキャッシュにおいてキャッシュされているとの判断に応じて、コアのローカルキャッシュからデータを読み取り、そうでない場合、メモリスペースにアクセスしてデータを読み取り、データを含んでいるメモリブロックをコアのローカルキャッシュにロードすることをさらに含む。
別の代替の実施形態の場合、データのキャッシングを担っているマルチコアプロセッサのリモートコアにデータ読取り要求を送信し、リモートコアによって返信されるデータを受信する上述のステップは、データのキャッシングを担っているリモートコアにデータ要求を送信することを含み、この要求は、データのメモリアドレス、及びデータ要求を送信するコアのラベリング番号を含む。このステップはまた、リモートコアが、リモートコアのローカルキャッシュからデータを読み取ることと、リモートコアが、データ要求を送信するコアにデータを返信することとを含む。
さらなる別の代替の実施形態の場合、リモートコアが、そのローカルキャッシュからデータを読み取る上述のステップは、リモートコアが、データのメモリアドレスに基づいて、データがリモートコアのローカルキャッシュにおいてキャッシュされているかどうかを判断することを含む。このステップはまた、データがリモートコアのローカルキャッシュにおいてキャッシュされているとの判断に応じて、リモートコアのローカルキャッシュからデータを読み取り、そうでない場合、データのメモリアドレスに基づいて、メモリスペースにアクセスしてデータを読み取り、データを含んでいるメモリブロックをリモートコアのローカルキャッシュにロードすることを含む。
本開示の別の例示的な実施形態によれば、上述のマルチコアプロセッサの使用によるデータ読み取りのための装置は、データ読取り操作を実行すべきマルチコアプロセッサのコアが、読み取るべきデータのメモリアドレスに基づいて、コアがデータのキャッシングを担っているかどうかを判断するように構成されたデータ読取り操作判断モジュールを含む。この装置は、コアがデータのキャッシングを担っているとの判断に応じて、コアのローカルキャッシュからデータを読み取るように構成されたローカルキャッシュ読み取りモジュールをさらに含む。装置はまた、コアがデータのキャッシングを担っていないとの判断に応じて、データのキャッシングを担っているマルチコアプロセッサのリモートコアに、データ読取り要求を送信し、リモートコアによって返信されるデータを受信するように構成されたリモートキャッシュ読み取りモジュールを含む。
代替の実施形態の場合、上述のデータ読取り操作決定モジュールは、データのメモリアドレスに基づいて、かつメモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、データのキャッシングを担っているコアのラベリング番号を計算するように構成された読取りラベリング番号計算サブモジュールを含む。データ読取り操作判断モジュールは、計算されたラベリング番号がコアのラベリング番号と同じである場合、コアがデータのキャッシングを担っていると決定するように構成されたラベリング番号決定サブモジュールをさらに含む。
別の代替の実施形態の場合、読取りラベリング番号計算サブモジュールの上述の所定のポリシーは、MEM/N*nからMEM/N*(n+1)−1までのアドレス範囲におけるメモリスペースの中のデータのキャッシングを担うべき複数のコアのうちの各コアに向けられ、MEMはメモリスペースの容量であり、Nは複数のコアの総数であり、nは複数のコアのうちの1つのコアのラベリング番号であり、nは0からN−1までの範囲の値を有する。
さらなる別の代替の実施形態の場合、上述の読取りラベリング番号計算サブモジュールは、数式:
Core No.=(A*N/MEM)mod N
を用いて、データのキャッシングを担っているコアのラベリング番号を計算し、Core No.はコアのラベリング番号を示し、Aはデータのメモリアドレスである。
Core No.=(A*N/MEM)mod N
を用いて、データのキャッシングを担っているコアのラベリング番号を計算し、Core No.はコアのラベリング番号を示し、Aはデータのメモリアドレスである。
さらなる別の代替の実施形態の場合、上述のローカルキャッシュ読み取りモジュールは、データのメモリアドレスに基づいて、データがコアのローカルキャッシュにおいてキャッシュされているかどうかを判断するように構成されたローカルキャッシュ判断サブモジュールを含む。ローカルキャッシュ読み取りモジュールは、データがコアのローカルキャッシュにおいてキャッシュされているとの判断に応じて、コアのローカルキャッシュからデータを読み取るように構成されたキャッシュ読取り実行サブモジュールと、データがコアのローカルキャッシュにおいてキャッシュされていないとの決定に応答して、データのメモリアドレスに基づいて、メモリスペースにアクセスしてデータを読み取り、データを含んでいるメモリブロックをコアのローカルキャッシュにロードするように構成されたメモリ読取りサブモジュールとをさらに含む。
別の代替の実施形態の場合、上述のリモートキャッシュ読み取りモジュールは、データのキャッシングを担っているリモートコアにデータ要求を送信するように構成された要求送信サブモジュールを含み、この要求は、データのメモリアドレス、及びデータ要求を送信するコアのラベリング番号を含む。リモートキャッシュ読み取りモジュールは、リモートコアがリモートコアのローカルキャッシュからデータを読み取るように構成されたリモート読取りサブモジュールと、リモートコアがデータ要求を送信するコアにデータを返信するように構成されたデータ返信サブモジュールとをさらに含む。
さらなる別の代替の実施形態の場合、上述のリモート読取りサブモジュールは、リモートコアが、データのメモリアドレスに基づいて、データがリモートコアのローカルキャッシュにおいてキャッシュされているかどうかを判断するように構成されたリモートキャッシュ判断サブモジュールを含む。リモート読取りサブモジュールは、データがリモートコアのローカルキャッシュにおいてキャッシュされているとの判断に応じて、リモートコアのローカルキャッシュからデータを読み取るように構成されたリモートキャッシュ読取り実行サブモジュールと、データがリモートコアのローカルキャッシュにおいてキャッシュされていないとの判断に応じて、データのメモリアドレスに基づいて、メモリスペースにアクセスしてデータを読み取り、データを含んでいるメモリブロックをリモートコアのローカルキャッシュにロードするように構成されたリモートメモリ読取りサブモジュールとをさらに含む。
本開示のさらなる別の例示的な実施形態によれば、上述のマルチコアプロセッサの使用によるデータ書き込みの方法は、データ書込み操作を実行すべきマルチコアプロセッサのコアが、書き込むべきデータのメモリアドレスに基づいて、そのコアがデータのキャッシングを担っているかどうかを判断するステップを含む。この方法はまた、コアがデータのキャッシングを担っているとの判断に応じて、コアのローカルキャッシュにデータを書き込み、そうでない場合、データのキャッシングを担っているマルチコアプロセッサのリモートコアにデータ書込み要求を送信するステップを含み、リモートコアは、リモートコアのローカルキャッシュにデータを書き込み、ここで、データ書込み要求は、データ書込み操作の書き込むべきデータのメモリアドレス及び内容を含む。
代替の実施形態の場合、コアが、データのキャッシングを担っているかどうかを判断する上述のステップは、データのメモリアドレスに基づいて、かつメモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、データのキャッシングを担っているコアのラベリング番号を計算することを含む。このステップはまた、計算されたラベリング番号がコアのラベリング番号と同じである場合、コアがデータのキャッシングを担っていると判断することを含む。
別の代替の実施形態の場合、データ書き込みの方法は、ローカルキャッシュにデータを書き込むとき、データ書込み操作を実行すべきコア、またはリモートコアが、データを含んでいるキャッシュラインにダーティマークを設定するステップと、マーク付けされたキャッシュラインが、ローカルキャッシュから置き換えられるとき、キャッシュラインのデータをメモリスペースの中の対応するアドレスに書き込むステップとをさらに含む。
本開示のさらなる別の例示的な実施形態によれば、上述のマルチコアプロセッサの使用によるデータ書き込みのための装置は、データ書込み操作を実行するマルチコアプロセッサのコアが、書き込むべきデータのメモリアドレスに基づいて、そのコアがデータのキャッシングを担っているかどうかを判断するように構成されたデータ書込み操作判断モジュールを含む。この装置は、コアがデータのキャッシングを担っているとの判断に応じて、コアのローカルキャッシュにデータを書き込むように構成されたローカルキャッシュ書き込みモジュールをさらに含む。装置はまた、コアがデータのキャッシングを担っていないとの判断に応じて、データのキャッシングを担っているマルチコアプロセッサのリモートコアにデータ書込み要求を送信するように構成されたリモートキャッシュ書き込みモジュールを含む。リモートコアは、リモートコアのローカルキャッシュにデータを書き込み、ここで、データ書込み要求は、データ書込み操作の書き込むべきデータのメモリアドレス及び内容を含む。
代替の実施形態の場合、上述のデータ書込み操作判断モジュールは、データのメモリアドレスに基づいて、かつメモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、データのキャッシングを担っているコアのラベリング番号を計算するように構成された書込みラベリング番号計算サブモジュールを含む。データ書込み操作判断モジュールはまた、計算されたラベリング番号がコアのラベリング番号と同じである場合、コアがデータのキャッシングを担っていると決定するように構成されたラベリング番号決定サブモジュールを含む。
別の代替の実施形態の場合、上述のローカルキャッシュ書き込みモジュールと、上述のリモートキャッシュ書き込みモジュールとはともに、ローカルキャッシュにデータを書き込むとき、データを含んでいるキャッシュラインにダーティマークを設定するように構成されたマーク設定サブモジュールを含み、これに対応して、装置はまた、マーク付けされたキャッシュラインがローカルキャッシュから書き換えられるとき、メモリスペースの中の対応するアドレスにキャッシュラインのデータを書き込むように構成されたメモリ同期モジュールを含む。
本開示のさらなる別の例示的な実施形態によれば、上述のマルチコアプロセッサの使用によるメモリ割当ての方法は、マルチコアプロセッサのコアからメモリ割当て要求を受信するステップを含む。この方法はまた、メモリスペースをキャッシングのためのアドレスに分割するための所定のポリシーに基づいて、コアがデータのキャッシングを担っているメモリスペースの中のアドレス範囲を決定するステップ、ならびにメモリ割当て要求における割り当てるべきメモリユニットの量に基づいて、そのアドレス範囲に対応するメモリスペースからコアにそのメモリユニットの量を割り当てるステップを含む。
本開示の別の例示的な実施形態によれば、上述のマルチコアプロセッサの使用によるメモリ割当てのための装置は、マルチコアプロセッサのコアからメモリ割当て要求を受信するように構成された要求受信モジュールを含む。この装置はまた、メモリスペースをキャッシングのためのアドレスに分割するための所定のポリシーに基づいて、コアがデータのキャッシングを担っているメモリスペースの中のアドレス範囲を決定するように構成されたアドレス範囲決定モジュールを含む。装置は、メモリ割当て要求における割り当てるべきメモリユニットの量に基づいて、そのアドレス範囲に対応するメモリスペースからコアにそのメモリユニットの量を割り当てるように構成されたメモリ割当て実行モジュールをさらに含む。
本開示のさらなる別の例示的な実施形態によれば、システムは、上述のマルチコアプロセッサと、マルチコアプロセッサの複数のコアに連結されてメモリスペースから複数のコアにデータを提供するメモリコントローラと、メモリコントローラに連結されて複数のコアによってアクセスすべきデータを記憶するメモリスペースとを含む。
代替の実施形態の場合、上述のシステムの複数のコアは、コアのローカルキャッシュに対応するアドレス範囲におけるメモリスペースの中のメモリセクションにアクセスする。
本開示のさらなる別の実施形態によれば、マルチコアプロセッサは、少なくとも2つのコアグループに分割される複数のコアと、コアグループに対応する複数のローカルキャッシュとを含む。コアグループのローカルキャッシュは、メモリスペースの中の相異なるアドレス範囲におけるデータのキャッシングを担い、コアグループは、別のコアグループのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする。
現在の技術との比較において、本開示による諸実施形態によって提供される主な相違及び効果は、以下である。まず、キャッシュ一貫性をサポートするマルチコアプロセッサと、その使用によるデータ読み取り及び書き込みの方法は、従来のマルチコアプロセッサシステムから、キャッシュインデックスと共有キャッシュとを排除することを可能にする。メモリスペースをCPUコアにマッピングするための所定のポリシーの使用によって、相異なる対応するアドレス範囲におけるメモリスペースの中のデータのキャッシングを相異なるコアに担わせることにより、キャッシュの中に複数のデータコピーが確実に存在しないことになる。したがって、キャッシュインデックスが存在しない場合であっても、キャッシュ一貫性は、依然として、実現可能であり、同時に、キャッシュスペースの使用量が保護され、データのアクセス性が高まる。さらには、各コアは、通信相互接続バスを介して、他のコアのローカルキャッシュにおけるデータにアクセスすることができるので、プライベートキャッシュは、コア間で共有され得、プライベートキャッシュと共有キャッシュとの間の対立を解決するだけでなく、プライベートキャッシュに固有の低いデータレイテンシを最大にし、システム機能性全体を高める。その上、LLCの排除により、相互接続アーキテクチャは、簡略化され得、それによって、エネルギー及びチップ表面積の使用量が保護されるとともに、キャッシュアクセスが高速化される。
本開示の1つまたは複数の実施形態の詳細を、添付の図面及び以下の説明に記載する。本開示の他の特徴、目的、及び利点は、説明、図面から、及び特許請求の範囲から明らかになろう。
本明細に組み込まれ、本明細書の一部を形成し、同様の数字が同様の要素を示す添付の図面は、本開示の実施形態を例示し、説明と併せて、本開示の原理を説明するのに役立つ。
以下の説明においては、多数の具体的な詳細を、本開示の完全な理解を提供するために記載する。しかしながら、本開示が、これらの具体的な詳細がなくても実施可能であることは、当業者には明らかになろう。本明細書における説明及び表現は、当該分野において経験を積み又は熟練した者が、自分の仕事の要旨を他の当業者に最も効果的に伝えるのに使用される共通の手段である。他の例においては、よく知られている方法、手順、構成要素、及び回路機構については、本開示の不必要に不明瞭な態様を避けるために、詳細には説明していない。
本明細書では、「1つの実施形態(one embodiment)」または「一実施形態(an embodiment)」に対する参照は、実施形態に関連して説明される特定の特徴、構造、または特性が、本開示の少なくとも1つの実施形態に含まれ得ることを意味している。本明細書における様々な箇所の「1つの実施形態においては(in one embodiment)」という語句の出現は、必ずしもすべて、同じ実施形態を参照しているわけでも、または他の実施形態の相互排他的な別個もしく代替の実施形態であるわけでもない。本明細書に使用される「上側(upper」、「下側(lower)」、「上部(top)」、底部(bottom)」、「中間(middle)」、「上向き(upwards)」、及び「下向き(downwards)」という用語は、説明を目的として相対的な位置を提供するように意図されており、絶対的座標系を指定するように意図するものではない。さらには、本開示の1つまたは複数の実施形態を表す処理フローチャートまたは図表におけるブロックの順序は、本質的に何らかの特定の順序を示すものでも、本開示における何らかの限定を暗示するものでもない。
本開示の実施形態により、マルチコアプロセッサと、マルチコアプロセッサの使用によるデータ読み取りのための方法及び装置と、マルチコアプロセッサの使用によるデータ書き込みのための方法及び装置と、マルチコアプロセッサの使用によるメモリ割当てのための方法及び装置と、マルチコアプロセッサのシステムとが例示されている。本開示の実施形態は、図2〜図11を参照してここに論じられる。しかしながら、当業者なら、これらの図を参照してここに与えられる詳細な説明は、説明のためのものであり、本開示は、これらの限定的な実施形態を越えて広がることを容易に認識するであろう。
図2を参照すると、本開示の一実施形態による、キャッシュ一貫性をサポートするマルチコアプロセッサの例示的なシステムのブロック図が示されている。キャッシュ一貫性サポーティングマルチコアプロセッサ200は、複数のコア201−1、201−2、201−3、…、201−nを含み、ただし、nは自然数である。複数のコアはそれぞれ、それぞれのCPU240_1、240_2、240_3、…、240_nに加えて、それぞれのL1キャッシュ260_1、260_2、260_3、…、260_n、及びそれぞれのL2キャッシュ280_1、280_2、280_3、…、280_nを含む、2つのレベルのローカルキャッシュを有する。マルチコアプロセッサ200はまた、複数のコアがメモリスペースの中のデータにアクセスするためにメモリコントローラ202を含むことができる。複数のコアのうちの異なるコアのローカルキャッシュは、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担っている。複数のコアの各コアは、相互接続バスまたはメインバス(図示せず)を介して、複数のコアのうちの別のコアのローカルキャッシュにおけるデータにアクセスする。
従来のマルチコアプロセッサは、キャッシュの中のデータ一貫性を維持することを目的として、キャッシュインデックスを維持し、そのようなキャッシュインデックスに頻繁にアクセスするために、一定量のキャッシュスペースを専有する。キャッシュ間のデータ矛盾の裏にある理由のうちの1つは、プライベートキャッシュ(すなわち、コアのローカルキャッシュ)を有する相異なる処理コアは、データの複数のコピーの可能性につながるという事実にある。この技術的な問題を解決するために、本開示は、キャッシュインデックスの使用を廃止する。代わりに、異なるコアのローカルキャッシュが、メモリスペースの中の相異なるアドレス範囲にあるデータのキャッシングを担っている場合、メモリスペースの中のデータは、1つのコアの1つのローカルキャッシュにおいてのみキャッシュされ得、それにより、キャッシュ一貫性は、キャッシュインデックスがなくてもなお維持される。例示を簡潔にするために、コアと、メモリスペースの中のそれらの対応するキャッシングアドレス範囲との関係性は、本明細書においては、ユニタリメモリマッピング機構(unitary memory mapping mechanism)と呼ばれる。
メモリアドレスをキャッシングのためのアドレス範囲に分割するための様々な手法が実施され得る。メモリの中のデータにアクセスする効率性を向上させるため、ならびにオペレーティングシステムによるメモリ割当て及び管理から結果的に生じる過度なメモリ断片化を回避するために、通常、メモリアドレスは、処理コアの数に従って、複数の連続するセクションに分割される。あるコアが、メモリスペースにおけるセクションのうちの1つの中のデータのキャッシングを担い、異なるコアは、異なるメモリセクションのデータのキャッシングを担うように予め指定され得る。
たとえば、マルチコアプロセッサが、256個のコア(N=256)を有し、そのメモリ容量が、1TByte(MEM=1TB)であり、メモリアドレスが、0x00 0000 0000から0xFF FFFF FFFFまでの16進形式で表される場合、メモリアドレスは、コアの数Nに従って分割され、すなわち、各メモリセグメントが1TByte/256=4GByteの大きさを有するように、256個の連続したメモリセグメントに分割され、それにより各メモリセグメントは、1TByte/256=4GByteの大きさを有する。マルチコアプロセッサの各コアは、MEM/N*nからMEM/N*(n+1)−1までのアドレス範囲におけるデータのキャッシングを担い、ただし、Nは、コアの数であり、nは、自然数である。以下は、コアと、キャッシングのためのメモリの中のそれぞれの対応するアドレス範囲との間のマッピング関係性を示している:
Core No.0:0x00 0000 0000 − 0x00 FFFF FFFF
Core No.1:0x00 0000 0000 − 0x01 FFFF FFFF
Core No.2:0x00 0000 0000 − 0x02 FFFF FFFF
・・・
Core No.255:0x00 0000 0000 − 0xFF FFFF FFFF
Core No.0:0x00 0000 0000 − 0x00 FFFF FFFF
Core No.1:0x00 0000 0000 − 0x01 FFFF FFFF
Core No.2:0x00 0000 0000 − 0x02 FFFF FFFF
・・・
Core No.255:0x00 0000 0000 − 0xFF FFFF FFFF
メモリスペースの上述の分割の場合、たとえば、コアNo.0のローカルキャッシュ、すなわち、L1キャッシュ及びL2キャッシュは、0x00 0000 0000から0x00 FFFF FFFFまでの範囲のメモリアドレスのデータのキャッシングを担うことになる。言い換えれば、各コアは、メモリの中の相異なるアドレス範囲にあるデータのキャッシングを担い、結果的に、キャッシュには、データの複数のコピーが存在しない。そのため、キャッシュインデックスが存在しない場合でもなお、キャッシュ一貫性は確保され、キャッシュインデックスによって占有されるキャッシュスペースは排除される。一方、特定のデータが特定のキャッシュによってのみキャッシュされているという事実により、コアは、キャッシュインデックスを参照することなく、直接、データにアクセスすることができ、したがって、データにアクセスするときの性能が高まる。
上述のユニタリメモリマッピング機構に基づいて、マルチコアプロセッサのコアは、相互接続されたメインバスを利用して、マルチコアプロセッサの他のコアのローカルキャッシュの中のデータにアクセスする。言い換えれば、各コアは、そのそれぞれのローカルキャッシュの中のデータにアクセスすることができるだけでなく、それはまた、複数のコアを相互接続する通信メインバスを介して、他のコアのローカルキャッシュにおけるデータにもアクセスすることができ、マルチコアプロセッサの複数のコア間のローカルキャッシュの共有化が実現される。
たとえば、コアNo.0が読み取る必要があるデータが、コアNo.1がキャッシュするためのメモリセクションに存在するとき、コアNo.0は、自身のキャッシュコントローラを介して、コアNo.1のキャッシュコントローラに、データ読取り要求を送信することになる。次いで、コアNo.1のキャッシュコントローラは、自身のローカルキャッシュからデータを読み出し、そのデータをコアNo.0へと返信する。実装においては、コアNo.1が、そのローカルL1キャッシュ及びL1キャッシュにおいて、キャッシュミスを被る場合、コアNo.1は、メモリスペースからデータを読み取ることになる。
本開示の上述の実施形態の場合、マルチコアプロセッサの各コアは、マルチコアプロセッサの他のコア間で、そのそれぞれのローカルキャッシュを共有し、ローカルキャッシュの共有化が可能になる。それは、プライベートキャッシュと共有キャッシュとの間の対立に関する現在の技法の問題を解決するだけでなく、プライベートキャッシュに固有の低いデータレイテンシからの恩恵を受けることによって、システム機能性全体もまた高める。
さらには、ローカルキャッシュの共有化を実現することにより、LLCは、マルチコアプロセッサから除去され得、それにより、システムの相互接続アーキテクチャが簡略化され得る。たとえば、8つのCPUのシステムの場合、コアと共有キャッシュとの間の相互接続または相互通信は、約1つのCPUの処理能力、及び総CPUの約半分(すなわち、4つのCPU)のチップ表面積を消費するとともに、相互通信のワイヤレイテンシに起因するLLCレイテンシの合計の約半分に寄与し得る。したがって、LLCを除去することにより、相互接続または相互通信アーキテクチャを大いに簡略化することができ、エネルギーとチップ表面積との両方の使用量が温存され、キャッシュにアクセスする速度が向上する。
上述のハードウェアシステムの使用によって、キャッシュ一貫性とプライベートキャッシュの共有化との両方が実現可能である。コアは、自身のローカルキャッシュに他のコアのものよりも速くアクセスするということを考慮し、本開示は、各コアが、そのコアのローカルキャッシュに対応するアドレス範囲におけるメモリセクションにアクセスするときに、コアのメモリ使用量に関する代替の実施形態として、上述のシステムの使用によるマルチコアプロセッサを提供する。ここで、コアのメモリ使用量は、コアにメモリを割り当て、割り当てられたメモリから読み取り、割り当てられたメモリに書き込み、解放されたメモリ割当てを管理してオペレーティングシステムに返信する、コアによるオペレーティングシステムに対する要求を参照する。
具体的には、コアが、メモリ割当て要求をオペレーティングシステムに送信するとき、オペレーティングシステムは、NUMA(Non−Uniform Memory Architecture:非一様メモリアーキテクチャ)などに類似のシステムを利用して、メモリセクションをそのコアに割り当てる。NUMAアーキテクチャの下では、複数のプロセッサが、メモリバスを介してメモリブロックと連結して、ノードを形成する。システム全体が、多数のそのようなノードに分割され、ノードにおけるメモリはローカルメモリと呼ばれ、一方、他のノードにおけるメモリは、当該ノードに対して、外部メモリと呼ばれる。プロセッサにおいて実行するプログラムにメモリを割り当てるとき、オペレーティングシステムは、通常、データのアクセス性を高めるように、その外部メモリからではなく、そのプロセッサのローカルメモリから割り当てる。
本開示の諸実施形態により、マルチコアプロセッサにおいて実行するオペレーティングシステムは、コアと、そのコアがデータのキャッシングを担っているメモリセクションとを仮想ノードとして指定する同様のメモリ割当て機構を利用することができる。コアがオペレーティングシステムにメモリ割当て要求を送信すると、オペレーティングシステムは、仮想ノードのローカルメモリ(すなわち、そのコアが、データのキャッシングを担っているメモリ部分セクション)から割り当てる。上述のユニタリメモリマッピング機構の使用によって、メモリセクションに存在するデータは、コアのローカルキャッシュにロードされることになり、コアは、それによって、そのローカルキャッシュに直接アクセスして、要求されたデータ読み取り及びデータ書き込みを達成することができ、他のコアのローカルキャッシュにアクセスすることによって生じるレイテンシが回避され、システムの全体的な機能性が高まる。
本開示の上述の実施形態の場合、マルチコアプロセッサのコアが、2つのレベルのローカルキャッシュと、メモリコントローラとを含むことを指摘する必要がある。本開示のいくつかの代替の実施形態においては、コアが、1つのレベルのローカルキャッシュを含むことも、または複数のレベルのローカルキャッシュを含むこともあり、またはマルチコアプロセッサの内部にメモリコントローラを有していないこともある。さらには、キャッシュと、メモリスペースの中のメモリ部分との間のマッピング関係は、上述したものとは異なる他の関係において実装されてもよい。その上、オペレーティングシステムはまた、他の機構を利用して、メモリを割り当てることもできる。それらのすべては、本開示の実施形態を実装する単なる変形形態にすぎない。実装が、メモリスペースの中の相異なるアドレス範囲に存在しているデータのキャッシングをそのローカルキャッシュにおいて担っている相異なるコア、ならびにメイン通信バスを介して、他のコアのローカルキャッシュにおけるデータにアクセスすることができるコアを提供する限り、LLC及びキャッシュインデックスが存在しない場合であっても、キャッシュ一貫性及びコア間のローカルキャッシュの共有化の実現の便益は達成され得る。
次に、図3を参照すると、本開示の一実施形態によるマルチコアプロセッサの使用によるデータ読み取りの例示的な方法のフローチャートが示されている。方法300は、判断ブロック301から開始し、ここで、データ読取り操作を行おうとしているコアが、読み取るべきデータのメモリアドレスに基づいて、そのコアがそのデータのキャッシングを担っているかどうかを判断する。コアがデータのキャッシングを担っている場合には、方法300は、YES分岐を辿り、ステップ302に進み、そうでない場合、方法300は、NO分岐を辿り、ステップ303に進む。
実装においては、コアによるデータ読み取り処理は、キャッシュコントローラによって行われ得る。現在の技術の場合、キャッシュコントローラは、まず、ローカルレベル1(L1)キャッシュの中のデータを検索することになる。キャッシュミスがある場合、キャッシュコントローラは、ローカルキャッシュの次のレベルのキャッシュの中のデータを続けて検索する。ローカルキャッシュがすべて、ミスを返信する場合、キャッシュコントローラは、メモリコントローラを通じてメモリからデータを読み取るように、及び読み取られたデータを、要求しているコアに返信するように、LOADコマンドまたは要求をメインバスに送信することになる。
本開示の諸実施形態によると、ユニタリメモリマッピング機構の使用によって、キャッシュコントローラは、まず、コアがデータ読取り要求を送信した後、要求されるデータのキャッシングをそのコアが担っているかどうかを判断することになり、次いで、対応するデータ読取り操作を行う。
図4を参照すると、コアが要求されるデータのキャッシングを担っているかどうかを判断する例示的な方法(判断ブロック301の例示的な実施態様)のフローチャートが示されている。方法400は、ステップ401−1から開始し、ステップ401−2により終了する。ステップ401−1においては、データのキャッシングを担っているコアのラベリング番号が、読み取るべきデータのメモリアドレスに基づいて、かつメモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、計算される。メモリスペースをキャッシングのためのアドレスに分割するためのそのようなポリシーは、状況に基づいて設定され得る。たとえば、例示的な実施形態においては、メモリスペースを分割するための単純かつ容易なポリシーは、マルチコアプロセッサのコアの数に基づいて、メモリアドレスを同じ大きさの連続したセグメントに分割するように、かつメモリセグメントとマルチコアプロセッサのコアと間のマッピング関係を確立するように実装され得る。
具体的には、上述の例示的なポリシーの場合、各コアは、アドレスMEM/N*nからMEM/N*(n+l)−lにおけるメモリの中のデータのキャッシングを担い、ただし、MEMは、メモリの容量であり、Nは、マルチコアプロセッサのコアの数であり、nは、コアのラベリング番号であり、nは、0からN−1までの範囲の値の自然数である。メモリアドレス範囲とコアとの間のマッピング関係は、第1の実施形態についての上の説明に示す通りである。
上述のメモリ分割ポリシーに基づいて、データのキャッシングを担っているコアのラベリング番号は、数式:
Core No.=(A*N/MEM)mod(N)
を用いて計算され得、ただし、Core No.は、コアのラベリング番号を示し、Aは、読み取るべきデータのメモリアドレスである。
Core No.=(A*N/MEM)mod(N)
を用いて計算され得、ただし、Core No.は、コアのラベリング番号を示し、Aは、読み取るべきデータのメモリアドレスである。
たとえば、本開示の第1の実施形態におけるマルチコアプロセッサが、256個のコア(N=256)、1TBybteのメモリ容量(MEM=1TB)、0x00 0000 0000から0xFF FFFF FFFFまでの16進形式で表されるメモリアドレスを有する場合、上述の分割ポリシーの使用によって、アドレスは、256個の連続したメモリセクションに分割され得、各セクションは、1Tbyte/256=4GByteの大きさを有する。読み取るべきデータのアドレスが、0x08 0000 A000(16進法)のアドレスにある場合、上述の数式の使用によって、コアのラベリング番号は8であり、すなわち、コアNo.8が、読み取るべきデータのキャッシングを担っている。
図4に戻って参照すると、ステップ401−2においては、コアについての計算されたラベリング番号が、当該コアについてのラベリング番号と同じであるかどうかが判断される。そうである場合、当該コアは、要求されたデータのキャッシングを担っていると判断され、方法400は、(判断ブロック301からのYES分岐を辿って)ステップ302に進む。そうでない場合、マルチコアプロセッサの別のコアが、要求されたデータのキャッシングを担い、方法400は、(判断ブロック301からのNO分岐を辿って)ステップ303に進む。
図3に戻って参照すると、方法300がステップ302に進む場合、読み取るべきデータは、要求しているコアのローカルキャッシュによってキャッシュされている判断される。プロセッサのハードウェアによって利用されるプログラムの局所性及び予測可能性の機構の理論によれば、通常、読み取るべきデータは、要求しているコアのローカルキャッシュからのキャッシュヒットである。それがキャッシュミスである場合、データは、データのメモリアドレスを使用してメモリから読み取られ得、データを含んでいるメモリブロックは、要求しているコアのローカルキャッシュにロードされ得、後続のデータアクセス性が向上する。実装においては、要求しているコアのキャッシュコントローラは、アドレスマッピング機構を利用して、メモリアドレスをキャッシュアドレスに変換し、データがそれ自体のローカルキャッシュにおけるキャッシュヒットであるかどうかを判断することができる。
たとえば、メモリとキャッシュとの間のデータ転送の最小単位は、キャッシュラインと呼ばれる。メモリアドレスは、タグ、セットインデックス、及びオフセットのフィールドを含むことができる。キャッシュの論理構造体は、複数のグループを含み、各グループは複数のキャッシュラインを有し、各キャッシュラインはタグ及び複数の記憶単位を有する。メモリアドレスのセットインデックスの値に基づいて、キャッシュの中のどのグループにデータが属するかが判断され得る。キャッシュラインのタグとメモリアドレスのタグとの値を比較することによって、キャッシュラインが、メモリアドレスと同じタグ値を有することが見出された場合には、データを含んでいるメモリブロックは、すでに、キャッシュにロードされている。その結果として、キャッシュヒットが存在し、データは、データのメモリアドレスの中のオフセットフィールドの値を利用してキャッシュラインから読み取られることになる。
ローカルキャッシュにキャッシュミスが存在する場合には、LOAD要求がメインバスに送信され、メモリコントローラは、データのメモリアドレスに基づいて、メモリから、要求されたデータを読み取り、読み取られたデータをキャッシュコントローラに送信することになり、このキャッシュコントローラは、ひいては、要求しているコアに、読み取られたデータを提供する。
読み取るべきデータは、要求しているコアにキャッシュする責任があるので、データが、上述の方法の使用によって、メモリから得られる場合、データは、要求しているコアのキャッシュにロードされることになる。実装においては、メモリとキャッシュとの間のデータ転送の最小単位がキャッシュラインであるという事実により、キャッシュラインの大きさに基づいて、キャッシュラインの大きさの対応する大きさで、かつ要求されたデータを含んでいるメモリブロックのデータは、要求しているコアのローカルキャッシュにロードされ得る。
図3を参照すると、ステップ303においては、データ読取り要求は、要求されたデータのキャッシングを担っているリモートコア(マルチコアプロセッサの別のコア)に送信され、読み取られたデータは、データを返信するリモートコアから受信される。
方法300がステップ303に進むとき、それは、読み取るべきデータが、当該要求しているコア以外のコアによってキャッシュされていることを意味する。要求しているコアと区別するために、そのようなデータのキャッシングを担っているコアは、本明細書においては、リモートコアと呼ばれる。そのため、要求しているコアは、そのローカルキャッシュの中のデータを検索せず、その代わりに、ステップ301の後、計算されたコアラベリング番号と一致するラベリング番号を有するリモートコアに、データ読取り要求を送信し、送信されたデータをそのようなリモートコアから受信する。
実装においては、要求しているコアのキャッシュコントローラは、データ読取り要求をリモートコアのキャッシュコントローラに送信するとき、要求されたデータのメモリアドレス、ならびに要求しているコアのコアラベリング番号を送信する。リモートコアのキャッシュコントローラは、ステップ302と同様のステップを利用して、そのローカルキャッシュの中のデータを検索する。キャッシュヒットが存在する場合、取り出されたデータを、要求しているコアのキャッシュコントローラへと直接返信し、そうでない場合、メモリからデータを読み取るためのデータのメモリアドレスに基づいて、要求しているコアへと、読み取られたデータを返信する。
要求されたデータは、リモートコアにキャッシュする責任があるので、データが上に説明したメモリからリモートコアによって得られる場合には、リモートコアのキャッシュコントローラは、メモリからそれを読み取った後、そのローカルキャッシュにデータをロードする。しかしながら、要求しているコアは、リモートコアからそれを受信した後、そのローカルキャッシュにデータをロードすることはない。要求しているコアが、同じデータにアクセスする必要がある次のとき、それはなおも、リモートコアに読取り要求を送信する。この方法の場合、データがリモートコアのローカルキャッシュにおいてのみキャッシュされることが確保され得、マルチコアプロセッサにデータの複数のコピーが存在する可能性が排除され、それによって、データ読取り操作の観点からキャッシュ一貫性が確保される。
次に、図5を参照すると、上述の方法に対応し、本開示の一実施形態による、マルチコアプロセッサの使用によるデータ読み取りのための例示的な装置のブロック図が示されている。データ読み取りのための装置の実施形態は、上述のデータ読み取りの方法の実施形態と実質的に同様であるので、この装置は、関連の詳細が方法実施形態において説明されている場合、ここでは比較的簡略化して示される。
データ読み取りのための装置500は、データ読取り操作を実行すべきコアが、読み取るべきデータのメモリアドレスに基づいて、当該コアがデータのキャッシングを担っているかどうかを判断するように構成されたデータ読取り操作判断モジュール501を含む。装置500は、コアがデータのキャッシングを担っているとの判断に応じて、コアのローカルキャッシュからデータを読み取るように構成されたローカルキャッシュ読み取りモジュール502をさらに含む。装置500はまた、コアがデータのキャッシングを担っていないとの判断に応じて、データのキャッシングを担っているマルチコアプロセッサのリモートコアに、データ読取り要求を送信し、リモートコアによって返信されるデータを受信するように構成されたリモートキャッシュ読み取りモジュール503を含む。
いくつかの代替の実施形態の場合、データ操作判断501は、読取りラベリング番号計算サブモジュールと、ラベリング番号判断サブモジュールとを含む。読取りラベリング番号計算サブモジュールは、データのメモリアドレスに基づいて、かつメモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、データのキャッシングを担っているコアのラベリング番号を計算するように構成されている。ラベリング番号判断サブモジュールは、計算されたラベリング番号がコアのラベリング番号と同じであるかどうかを判断し、2つのラベリング番号が同じである場合、コアがデータのキャッシングを担っていると判断するように構成されている。
いくつかの他の代替の実施形態の場合、読取りラベリング番号計算サブモジュールの所定のポリシーは、MEM/N*nからMEM/N*(n+1)−1までのアドレス範囲におけるメモリスペースの中のデータのキャッシングを担うべき複数のコアのうちの1つのコアに向けられ、ただし、MEMは、メモリスペースの容量であり、Nは、複数のコアの総数であり、nは、複数のコアのうちの1つのコアのラベリング番号であり、nは、0からN−1までの範囲の値を有する。
さらにいくつかの他の代替の実施形態の場合、読取りラベリング番号計算サブモジュールは、数式:
Core No.=(A*N/MEM)mod(N)
を用いて、データのキャッシングを担っているコアのラベリング番号を計算し、ただし、Core No.は、コアのラベリング番号を示し、Aは、読み取るべきデータのメモリアドレスである。
Core No.=(A*N/MEM)mod(N)
を用いて、データのキャッシングを担っているコアのラベリング番号を計算し、ただし、Core No.は、コアのラベリング番号を示し、Aは、読み取るべきデータのメモリアドレスである。
さらなる代替の実施形態の場合、ローカルキャッシュ読み取りモジュール502は、ローカルキャッシュ判断サブモジュールと、キャッシュ読取り実行サブモジュールと、メモリ読取りサブモジュールとを含む。ローカルキャッシュ判断サブモジュールは、データのメモリアドレスに基づいて、データがコアのローカルキャッシュにおいてキャッシュされているかどうかを判断するように構成されている。キャッシュ読取り実行サブモジュールは、データがコアのローカルキャッシュにおいてキャッシュされているとの判断に応じて、コアのローカルキャッシュからデータを読み取るように構成されている。さらには、メモリ読取りサブモジュールは、データがコアのローカルキャッシュにおいてキャッシュされていないとの判断に応じて、データのメモリアドレスに基づいて、メモリスペースにアクセスしてデータを読み取り、データを含んでいるメモリブロックをコアのローカルキャッシュにロードするように構成されている。
他の代替の実施形態の場合、リモートキャッシュ読み取りモジュール503は、要求送信サブモジュールと、リモート読取りサブモジュールと、データ返信サブモジュールとを含む。要求送信サブモジュールは、データ要求を、データのキャッシングを担っているリモートコアに送信するように構成され、この要求は、データのメモリアドレス及びデータ要求を送信しているコアのラベリング番号を含む。リモート読取りサブモジュールは、リモートコアが、リモートコアのローカルキャッシュからデータを読み取るように構成されている。さらには、データ返信サブモジュールは、リモートコアが、データ要求を送信するコアにデータを返信するように構成されている。
さらなる他の代替の実施形態の場合、リモート読取りサブモジュールは、リモートキャッシュ判断サブモジュールと、リモートキャッシュ読取り実行サブモジュールと、リモートメモリ読取りサブモジュールとを含む。リモートキャッシュ判断サブモジュールは、リモートコアが、データのメモリアドレスに基づいて、データがリモートコアのローカルキャッシュにおいてキャッシュされているかどうかを判断するように構成されている。リモートキャッシュ読取り実行サブモジュールは、データがリモートコアのローカルキャッシュにおいてキャッシュされているとの判断に応じて、リモートコアのローカルキャッシュからデータを読み取るように構成されている。さらには、リモートメモリ読取りサブモジュールは、データがリモートコアのローカルキャッシュにおいてキャッシュされていないとの判断に応じて、データのメモリアドレスに基づいて、メモリスペースにアクセスしてデータを読み取り、データを含んでいるメモリブロックをリモートコアのローカルキャッシュにロードするように構成されている。
図6を参照すると、本開示の一実施形態によるマルチコアプロセッサの使用によるデータ書き込みの例示的な方法のブロック図が示されている。データ書き込みの方法の実施形態は、上述のデータ読み取りの方法の実施形態とある種の類似性を共有するので、データ書き込みの方法は、関連の詳細が上の諸実施形態において説明されている場合、ここでは比較的簡略化して示される。
方法600は、判断ブロック601から開始し、ここで、データ書込み操作を実行するためのコアは、書き込むべきデータのメモリアドレスに基づいて、当該コアがデータのキャッシングを担っているかどうかを判断する。そのコアがデータのキャッシングを担っている場合には、方法600は、YES分岐を辿り、ステップ602に進み、そうでない場合、方法600は、NO分岐を辿り、ステップ603に進む。
実装においては、データ書込み操作を行うためのコアは、書き込むべきデータのメモリアドレスに基づいて、かつメモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、データのキャッシングを担っているコアのラベリング番号を計算することになる。次いで、コアは、計算されたラベリング番号がコアのラベリング番号と同じである場合、当該コアがデータのキャッシングを担っていると判断する。さらなる詳細は、上述の諸実施形態に示す通りである。
ステップ602においては、データは、ローカルキャッシュに書き込まれる。方法600がステップ602に進む場合、書き込むべきデータは、キャッシュするための要求しているコアに向けられることが判断される。そのため、要求しているコアは、まず、そのローカルキャッシュの中のデータを検索することになる。キャッシュヒットが存在する場合、データは、直接ローカルキャッシュに書き込まれる。そうでない場合、書き込むべきデータのメモリアドレス基づいて、方法600は、書き込むべきデータを含んでいるメモリブロックを要求しているコアのローカルキャッシュにロードし、ローカルキャッシュにそのデータを書き込むことになる。
実装においては、データ書込み要求を実行するためにコアのキャッシュコントローラは、アドレスマッピング機構を利用して、メモリアドレスをキャッシュアドレスに変換し、データがそれ自体のローカルキャッシュの中のキャッシュヒットであるかどうかを判断することができる。やはり、関連の詳細は、上述の第2の実施形態のステップ302に示す通りである。
キャッシュヒットの場合、メモリアドレスのオフセット値は、キャッシュヒットを含む当該キャッシュラインのデータユニットを決定するのに利用され得、データ書込み操作のデータが、決定されたデータユニットに書き込まれることになる。キャッシュミスが存在する場合、キャッシュラインは、書き込むべきデータのメモリアドレスに基づいて、書き込むべきデータを含んでいるメモリブロックに対応するローカルキャッシュに割り当てられ得る。対応するメモリブロックのデータは、ローカルキャッシュの中の新規に割り当てられたキャッシュラインにロードされ、次いで、書き込むべきデータのメモリアドレスのオフセット値に基づいて、データ書込み操作のデータは、キャッシュラインの対応するデータユニットに書き込まれる。
ステップ603においては、方法600は、データ書込み要求をデータのキャッシングを担っているマルチコアプロセッサのリモートコアに送信し、リモートコアは、リモートコアのローカルキャッシュにデータを書き込む。方法600がステップ603に進むとき、それは、書き込むべきデータが、当該要求しているコア以外のコア、すなわち、マルチコアプロセッサのリモートコアによってキャッシュされていることを意味する。そのため、要求しているコアは、そのローカルキャッシュにおけるデータ書込み要求を操作せず、代わりに、要求しているコアは、ステップ601において計算されたコアラベリング番号と一致するラベリング番号を有するリモートコアに、データ書込み要求を送信し、それにしたがって、リモートコアは、それ自体のローカルキャッシュにデータを書き込む。
実装においては、要求しているコアが、データ書込み要求をリモートコアのキャッシュコントローラに送信するとき、要求しているコアは、書き込むべきデータのメモリアドレスならびに書き込むべきデータの内容及び長さを送信する。リモートコアのキャッシュコントローラは、ステップ602と同様の方法を利用して、そのローカルキャッシュの中のデータを検索する。キャッシュヒットが存在する場合、リモートコアは、ヒットを含む対応するキャッシュラインのデータユニットに直接データを書き込み、そうでない場合、書き込むべきデータのメモリアドレスに基づいて、リモートコアは、まず、対応するメモリブロックをローカルキャッシュにロードし、次いで、書き込むべきデータをローカルキャッシュに書き込む。
ステップ602またはステップ603の実行により、データ書込み操作のデータは、データ書込み操作を要求するコアのローカルキャッシュか、またはリモートコアのローカルキャッシュかのいずれかに書き込まれる。そのため、データ書込み操作は、マルチコアプロセッサの2つのコアのローカルキャッシュにおいて行われることはなく、それによって、データ書き込み操作の観点から、キャッシュデータ一貫性が確保される。
実装においては、データが、その対応するメモリアドレスに書き込まれることなしに、データ書込み操作と同時にキャッシュにのみ書き込まれる場合、データの2つのコピー間に矛盾が生じることになる。メモリデータ及びキャッシュデータの一貫性を確保するために、現在の技法は、通常、WRITE THROUGH(ライトスルー)手法またはWRITE BACK(ライトバック)手法に依存している。
WRITE THROUGH手法の場合、そのローカルキャッシュにデータを直接、書き込むコアは、同時に、そのデータをメモリに書き込むことになり、それにより、メモリデータの同時更新が保証される。WRITE BACK手法の場合、コアは、そのローカルキャッシュにのみ、直接、データを書き込む。データが、再度、修正されるときのみ、コアは、前に更新されたデータをメモリに書き込み、次いで、新規更新されたデータをローカルキャッシュに書き込む。
現在の技法の場合、WRITE THROUGH手法が展開される場合、メモリへのアクセスが比較的、より低速であることに起因して、プロセッサの全体的なデータ書き込み速度は、低下することになる。WRITE BACK手法が展開される場合、メモリアクセスの数は、低減し得るにもかかわらず、マルチコアプロセッサの場合、キャッシュインデックスが、参照される必要があり、対応するNULL操作が行われる必要がある。たとえば、CPUがデータをそのプライベートキャッシュに書き込むとき、CPUは、まず、キャッシュインデックスを参照することによって、どのコアのプライベートキャッシュがデータのコピーを有するのかを判断する。キャッシュデータ一貫性を確保するために、次いで、CPUは、データ書込み操作を実行する前に、データを取得しているキャッシュラインをNULLに設定するように、それらのプライベートキャッシュに通知する。複数のコアが特定のメモリブロックにデータを書き込むために交代するとき、コアのプライベートキャッシュの中の対応するキャッシュラインは、NULLに繰り返し設定されることになり、結果的に、データアクセス可能性の低下をもたらすピンポン現象が引き起こされる。
本開示のデータ書込みの一実施形態により、データ書き込みの方法は、ユニタリメモリマッピング機構を利用するマルチコアプロセッサの使用による。そのようなシステムの場合、相異なるコアのローカルキャッシュは、メモリの中の相異なるアドレス範囲におけるデータのキャッシングを担っている。この状況下では、キャッシュインデックスを利用して、相異なるコアのプライベートキャッシュに常駐するデータを追跡する必要も、または上述のNULL操作を実行する必要もない。したがって、WRITE BACK手法の場合、メモリアクセス数は、いずれのピンポン効果も伴わずに低減することになり、データのアクセス性が著しく高まる。
具体的には、データ書込み要求しているコアもしくはリモートコアが、書き込むべきデータを対応するローカルキャッシュに書き込む場合のステップ602またはステップ603においては、それは、対応するメモリアドレスにデータを書き込まない。代わりに、データを含んでいるキャッシュラインには、データに対する変更があったことを示すダーティパリティ情報がマーク付けされる。
キャッシュが満たされると、キャッシュコントローラは、所定の手法を利用して、キャッシュラインを置き換えることになる。置き換えるべきキャッシュラインがダーティパリティマークを持っている場合には、キャッシュラインの中のデータは、対応するメモリアドレスに書き込まれて、キャッシュデータとメモリデータとの間の一貫性を確保することになる。
上述のデータ読み取り及びデータ書き込みの方法の場合、要求しているコアは、まず、要求しているコアが、アクセスすべきデータのキャッシングを担っているかどうかを決定する。そうである場合、それは、そのローカルキャッシュまたはその対応するメモリ内でデータアクセス操作を行う。そうでない場合、それは、対応するデータアクセス要求を処理し、そのようなデータアクセス要求の結果を返信するように、データ要求をリモートコアに送信する。データ読み取り及びデータ書き込みの上述の方法の使用によって、キャッシュインデックスにアクセスし、キャッシュインデックスを維持することに関連するコストならびに繰り返されるNULL操作の実行が排除され得、キャッシュデータ一貫性が確保され、データアクセス方法が簡略化され、同時に、データのアクセス性が高まる。
次に、図7を参照すると、上述の方法に対応し、かつ本開示の一実施形態によるマルチコアプロセッサの使用によるデータ書き込みのための例示的な装置のブロック図が示されている。データ書き込みのための装置の実施形態は、上述のデータ書き込みの方法の実施形態と実質的に同様であるので、この装置は、関連の詳細が方法の実施形態において説明されている場合、ここでは比較的簡略化して示される。
装置700は、データ書込み操作判断モジュール701と、ローカルキャッシュ書き込みモジュール702と、リモートキャッシュ書き込みモジュール703とを含む。データ書込み操作判断モジュール701は、データ書込み操作を実行すべきマルチコアプロセッサのコアが、書き込むべきデータのメモリアドレスに基づいて、コアがデータのキャッシングを担っているかどうかを判断するように構成されている。ローカルキャッシュ書き込みモジュール702は、コアがデータのキャッシングを担っているとの判断に応じて、コアのローカルキャッシュにデータを書き込むように構成されている。さらには、リモートキャッシュ書き込みモジュール703は、コアがデータのキャッシングを担っていないとの判断に応じて、データのキャッシングを担っているマルチコアプロセッサのリモートコアにデータ書込み要求を送信するように構成され、リモートコアが、リモートコアのローカルキャッシュにデータを書き込む。データ書込み要求は、データ書込み操作の書き込むべきデータのメモリアドレス及び内容を含む。
いくつかの代替の実施形態の場合、上述のデータ書込み操作決定モジュール701は、書込みラベリング番号計算サブモジュールと、ラベリング番号判断サブモジュールとを含む。書込みラベリング番号計算サブモジュールは、データのメモリアドレスに基づいて、かつメモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、データのキャッシングを担っているコアのラベリング番号を計算するように構成されている。さらには、ラベリング番号判断サブモジュールは、計算されたラベリング番号がコアのラベリング番号と同じである場合、当該コアがデータのキャッシングを担っていると判断するように構成されている。
いくつかの他の代替の実施形態の場合、上述のローカルキャッシュ書き込みモジュール702とリモートキャッシュ書き込みモジュール703とはともに、マーク設定サブモジュールをさらに含むことができる。マーク設定サブモジュールは、ローカルキャッシュにデータを書き込むとき、データを含んでいるキャッシュラインにダーティパリティマークを設定するように構成されている。それに対応して、装置はまた、メモリ同期モジュールも含むことができる。メモリ同期モジュールは、マーク付けされたキャッシュラインがローカルキャッシュから置き換えられるとき、メモリスペースの中の対応するアドレスにキャッシュラインのデータを書き込むように構成されている。
図8を参照すると、本開示の実施形態によるマルチコアプロセッサの使用によるメモリ割当ての例示的な方法のフローチャートが示されている。メモリ割当ての方法の実施形態は、上述のデータ読み取りの方法の実施形態とある種の類似性を共有するので、メモリ割当ての方法は、関連の詳細が上の諸実施形態において説明されている場合、ここでは比較的簡略化して示される。
方法800は、ステップ801から開始し、ここで、メモリ割当て要求が、コアから受信される。マルチコアプロセッサでは、コアがメモリにアクセスする必要がある場合、たとえば、当該コアにおいて実行するプログラム(たとえば、スレッド)が、データ構造体にメモリを割り当てる必要がある場合、それは、オペレーティングシステムがメモリスペースを割り当てる要求をオペレーティングシステムに送信するための関数を呼び出すことになる。したがって、オペレーティングシステムは、そのようなメモリ割り当て要求を受信することになり、この要求は、メモリスペースにおいて割り当てるべきデータユニットの量だけでなく、メモリ割当てを要求しているコアについての識別情報、たとえば、コアのラベリング番号も含む。データユニットは、本明細書においては、データがメモリに記憶され得る最も小さい単位、通常はまた、オペレーティングシステムがメモリ割当てを行う最も小さい単位も示す。たとえば、そのようなデータ単位は、8ビット、すなわち、1バイトとすることができる。
ステップ802においては、メモリスペースをキャッシングのためのアドレスに分割するための所定のポリシーに基づいて、コアがデータのキャッシングを担っているメモリスペースの中のアドレス範囲が決定される。コアがメモリスペースの中の異なるアドレス範囲からデータのキャッシングを担っている間、マルチコアプロセッサにおいて動作しているオペレーティングシステムもまた、そのようなアドレス範囲分割ポリシーに従って、メモリをマルチコアプロセッサのコアに割り当てる。
実装においては、メモリスペースをアドレス範囲に分割するためのそのようなポリシーは、状況に基づいて設定され得る。たとえば、例示的な実施形態においては、メモリスペースを分割するためのポリシーは、マルチコアプロセッサのコアの数に基づいて、メモリアドレスを同じ大きさの連続したセグメントに分割するように、かつメモリセグメントとマルチコアプロセッサのコアと間のマッピング関係を確立するように、実装され得る。関連の詳細は、上述の第1の実施形態に示す通りである。
当該ステップ802においては、要求に含まれているコアの識別情報ならびに上述の所定の分割ポリシーに基づいて、要求しているコアがデータのキャッシングを担っているメモリスペースの中のアドレス範囲が決定され得る。たとえば、第1の実施形態の例示的なメモリ分割ポリシーの場合、コアNo.1が、128バイトのメモリセグメントを割り当てる要求をオペレーティングシステムに送信する場合、当該コアは、0x01 0000 0000から0x01 FFFF FFFFまでの範囲のアドレスにおけるメモリスペースを担っていることが決定され得る。
ステップ803においては、メモリ割当て要求の中の割り当てるべきメモリユニットの量に基づいて、メモリユニットの対応する量が、アドレス範囲に対応するメモリスペースから、コアに割り当てられる。このステップにおいては、メモリ割当て要求及びステップ802において決定されたメモリアドレス範囲に指定されたデータユニットの量に基づいて、オペレーティングシステムは、要求されたデータユニットの量を満足させるのに十分な容量を有する、空いているメモリブロック(割り当てられていないメモリブロック)を検索する。特定のポリシーに従って、オペレーティングシステムは、対応する大きさのメモリブロックを選択し、選択されたメモリブロックの先頭アドレスを要求しているコアに返信する。言い換えれば、オペレーティングシステムが、選択されたメモリブロックを当該要求しているコアに割り当てると同時に、コアは、データ読み取り、データ書き込み、及び同様の操作に向けて、割り当てられたメモリブロックへのアクセスを開始することができる。
上述の実施形態により、そのようなマルチコアプロセッサにおいて動作しているオペレーティングシステムは、上述の方法を利用して、メモリブロックを各コアに割り当て、メモリブロックはすべて、コアがそれぞれデータのキャッシングを担っているアドレス範囲に存在している。メモリブロックのデータがキャッシュにロードすべきであるとき、それは、対応するコアのローカルキャッシュにロードされることになる。その結果として、メモリのコアのアクセスは、通常、まず、そのローカルキャッシュにおける検索を介して達成され得る。わずかな量の共有データの場合のみ、それは、他のコアのローカルキャッシュにアクセスする必要がある。低いキャッシュのレイテンシとローカルキャッシュへのアクセスに固有の高速度とに起因して、データのアクセス性はそれにより高まる。
図9を参照すると、上述のメモリ割当ての方法に対応し、かつ本開示の実施形態による、マルチコアプロセッサの使用によるメモリ割当てのための例示的な装置のブロック図が示されている。装置の実施形態は、方法の実施形態と実質的に同様であるので、メモリ割当てのための装置は、関連の詳細が上の方法実施形態に説明されている場合、ここでは比較的簡略化して示される。
装置900は、要求受信モジュール901と、アドレス範囲決定モジュール902と、メモリ割当て実行モジュール903とを含む。要求受信モジュール901は、マルチコアプロセッサのコアからメモリ割当て要求を受信するように構成されている。アドレス範囲決定モジュール902は、メモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに基づいて、コアがデータのキャッシングを担っているメモリスペースの中のアドレス範囲を決定するように構成されている。さらには、メモリ割当て実行モジュール903は、メモリ割当て要求に割り当てるべきメモリユニットの量に基づいて、アドレス範囲に対応するメモリスペースから、コアに、対応するメモリユニットの量を割り当てるように構成されている。
図10を参照すると、本開示の一実施形態によるマルチコアプロセッサの例示的なシステムのブロック図が示されている。装置1000は、上述の第1の実施形態に例示したキャッシュ一貫性サポーティングマルチコアプロセッサ1001と、マルチコアプロセッサの複数のコアに連結されてメモリスペースから複数のコアにデータを提供するメモリコントローラ1002と、メモリコントローラ1002に連結されてコアによってアクセスすべきデータを記憶するように構成されたメモリ1003とを含む。
上述のシステム1000は、コアによって共有される最終レベルキャッシュも、キャッシュインデックスも含んでいない。にもかかわらず、キャッシュ一貫性をサポートするマルチコアプロセッサの使用によって、複数のコアのうちの1つのコアのローカルキャッシュは、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、複数のコアのうちの各コアは、相互接続バスを介して、複数のコアのうちの別のコアのローカルキャッシュにおけるデータにアクセスする。そのため、キャッシュデータ一貫性及びコア間のローカルキャッシュの共有化が実現される。そのことは、プライベートキャッシュと共有キャッシュとの間の対立に関する現在の技法の問題を解決するだけでなく、キャッシュインデックス及びキャッシュインデックスによって消費されるキャッシュスペースを排除して、データのアクセス性を高め、プライベートキャッシュに固有の低いデータレイテンシからの恩恵を得ることによって、システムの機能性全体を向上させる。
データのアクセス性をさらに高めるために、装置1000のコアは、コアのローカルキャッシュに対応するアドレス範囲におけるメモリスペースの中のメモリセクションにアクセスする。関連の詳細は、上述の諸実施形態に示す通りである。
図11を参照すると、本開示の実施形態によるキャッシュ一貫性をサポートする例示的なマルチコアプロセッサのブロック図が、示されている。マルチコアプロセッサ1100は、複数のコア1120−0、1120−1、1120−3、1120−4、…、1120−2n−2、1120−2n−lから分割される複数のコアグループ1101−1、1101−2、…、1101−nを含み、ただし、nは、自然数である。この例においては、各コアグループは、2つのコアを含むことができ、すなわち、コアグループ1101−1は、コア1120−0及び1120−1を含み、コアグループ1101−2は、コア1120−2及び1120−3を含み、…、コアグループ1101−nは、コア1120−2n−2、1120−2n−1を含む。各コアグループはまた、それぞれのローカルキャッシュ:L1キャッシュ1140−1、1140−2、…、1140−nと、L2キャッシュ1142−0、1142−1、…、1142−nとを含む。マルチコアプロセッサはまた、メモリからデータを提供するためのメモリコントローラ1102を含むことができる。コアグループのローカルキャッシュは、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、コアグループは、相互接続バスを介して、別のコアグループのローカルキャッシュにおけるデータにアクセスする。
当該マルチコアプロセッサ実施形態のシステムにおいては、複数のコアは、n個のコアグループに分割される。あるコアグループの観点からすると、同じグループのコアは、L1キャッシュとL2キャッシュとを含む同じキャッシュを共有する。複数のコアグループの観点からすると、コアグループ内の共有キャッシュは、コアグループのローカルキャッシュである。コアグループが仮想コアと見なされる場合、当該実施形態は、理論上、第1の実施形態と実質的に同様であり、すなわち、仮想コア(コアグループ)のローカルキャッシュは、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、仮想コア(コアグループ)は、相互接続バスを介して、別の仮想コア(コアグループ)のローカルキャッシュにおけるデータにアクセスする。そのため、第1の実施形態のマルチコアプロセッサの使用によるデータ読み取り、データ書き込み、及びメモリ割当ての上述の方法は、同様に、当該実施形態のマルチコアプロセッサに当てはまる。
上述の実施形態は、単に一例にすぎず、実装においては、プロセッサのコアグループの数、コアグループの中のコアの数、コアグループの中のキャッシュレベルの数、及びメモリコントローラがマルチコアプロセッサの内部に集められているかどうかはすべて、したがって、諸状況の下、調整され、または設定され得る。
典型的な装置においては、コンピュータシステムは、1つまたは複数のCPU、I/Oインターフェース、ネットワークインターフェース、及びメモリを含む。メモリは、たとえば、非永続的ランダムアクセスメモリ(RAM)、及び/または読取り専用メモリ(ROM)もしくはフラッシュRAMなどの不揮発性メモリを使用して実装されるコンピュータ可読媒体を含むことができる。メモリは、例示的なコンピュータ可読媒体である。
本開示の諸実施形態は、ソフトウェア、ハードウェア、ファームウェア、及び/またはそれら組合せを使用して実装され得る。ソフトウェア、ハードウェア、ファームウェア、またはそれらの組合せを使用して実装されるかどうかにかかわらず、命令コードは、任意の種類のコンピュータ可読媒体(たとえば、永続的または修正型、揮発性または不揮発性、固体または非固体、固定または変更可能な媒体など)に記憶され得る。同様に、そのような媒体は、たとえば、プログラマブルアレイロジック(PAL)、ランダムアクセスメモリ(RAM)、プログラマブル読取り専用メモリ(PROM)、読取り専用メモリ(ROM)、電気的消去可能プログラマブルROM(EEPROM)、磁気記憶装置、光記憶装置、またはデジタル多用途ディスク(DVD)などを使用して実装され得る。
本開示の諸実施形態によって説明されているモジュールまたはブロックが、論理モジュールまたは論理ブロックであることを指摘する必要がある。物理的には、論理モジュールまたは論理ブロックは、物理モジュールもしくは物理ブロック、物理モジュールもしくは物理ブロックの一部、または複数の物理モジュールもしくは物理ブロックの組合せとすることができる。それらの論理モジュールまたは論理ブロックの物理的な実装態様は、本質ではない。モジュール、ブロック、及びそれらの組合せによって実現される、実現された機能性は、本開示によって対処される問題を解決するための鍵である。さらには、本開示の新規性を開示するために、上述の諸実施形態は、本開示によって対処される問題を解決することにあまり関係していないそれらのモジュールまたはブロックについては開示しておらず、そのことは、上述の諸実施形態が、他のモジュールまたはブロックを含むことができないということを意味するものではない。
また、本開示の特許請求の範囲及び明細書においては、第1、及び第2などの用語は、ある実施形態または操作を、別の実施形態または操作と区別するためにすぎないことを指摘する必要がある。それは、それらの実施形態または操作は、任意のそのような実際の関係または順序を有することを必要としておらず、または暗示もしていない。さらには、本明細書において使用されるとき、「備える(comprising)」、「含む(including)」という用語、または任意の他の変形形態は、非排他的包含をカバーするように意図されており、それにより、要素のリストを含むプロセス、方法、物品、または装置は、それらの要素を含むだけでなく、明示的にリストされていない、またはそのようなプロセス、方法、物品、または装置に固有の他の要素も含むことができる。さらなる限定が存在しない場合、「〜を備える(comprising a)」という語句によって列挙される要素は、そのような要素を備えるプロセス、方法、物品、または装置を他の同じ要素を含むことから除外しない。
前述の開示は、特定のブロック図、フローチャート、及び諸実施例を使用して様々な実施形態を説明しているが、各ブロック図構成要素、フローチャートステップ、操作、及び/または本明細書に説明され、かつ/もしくは示されている構成要素は、広範なハードウェア、ソフトウェア、もしくはファームウェア(または任意のそれらの組合せ)の構成を使用して、個々にかつ/または集合的に実装され得る。加えて、他の構成要素の中に含まれている構成要素の任意の開示は、多くの他のアーキテクチャが同じ機能性を達成するために実装され得るので、例として見なすべきである。
本明細書において説明され、かつ/または示されているプロセスパラメータ及び一連のステップは、例としてのみ与えられ、必要に応じて変更可能である。たとえば、本明細書において示され、かつ/または説明されているステップは、具体的な順序で示され、または論じられ得るが、これらのステップは、必ずしも、示され、または論じられている順序で行われる必要はない。本明細書において説明され、かつ/または示されている様々な例示的な方法はまた、本明細書において説明され、または示されているステップのうちの1つまたは複数を省略することも、あるいは開示されているものに加えて追加のステップを含むこともできる。
様々な実施形態が、完全に機能的なコンピューティングシステムの文脈で、本明細書において説明され、かつ/または示されてきたが、これらの例示的な実施形態のうちの1つまたは複数は、配布を実際に行うために使用される特定のタイプのコンピュータ可読媒体にもかかわらず、多様な形態におけるプログラム製品として配布され得る。本明細書において開示される諸実施形態はまた、特定のタスクを行うソフトウェアモジュールを使用して実装され得る。これらのソフトウェアモジュールは、スクリプト、バッチ、またはコンピュータ可読記憶媒体上にもしくはコンピューティングシステム内に記憶され得る他の実行可能ファイルを含むことができる。これらのソフトウェアモジュールは、本明細書において開示される例示的な実施形態のうちの1つまたは複数を行うようにコンピューティングシステムを構成設定することができる。本明細書において開示されるソフトウェアモジュールのうちの1つまたは複数は、クラウドコンピューティング環境において実装され得る。クラウドコンピューティング環境は、Internetを介して、様々なサービス及びアプリケーションを提供することができる。これらのクラウドベースのサービス(たとえば、サービスとしてのソフトウェア、サービスとしてのプラットフォーム、サービスとしてのインフラストラクチャなど)は、Webブラウザまたは他のリモートインターフェースを通じてアクセスでき得る。本明細書において説明される様々な関数は、リモートデスクトップ環境または任意の他のクラウドベースのコンピューティング環境を通じて提供され得る。
本開示及びその利点について詳細に説明してきたが、様々な変形、置換、及び代替が、添付の特許請求の範囲によって定義される本開示の趣旨及び範囲から逸脱することなく、本明細書において行われ得ることを理解すべきである。多くの修正形態及び変更形態が、上記教示を考慮して可能である。諸実施形態は、本開示の原理及びその実践的な適用例を最良に説明するために、選択され、記載され、それによって、当業者が、企図される具体的な使用に適している可能性がある様々な修正形態とともに本開示及び様々な実施形態を最良に利用することができるようになった。
その上、本出願の範囲は、本明細書に説明されたプロセス、機械、製造、物質の組成、手段、方法、及びステップの特定の実施形態に限定されるように意図するものではない。当業者は、現存のまたは後に開発されることになる本開示、プロセス、機械、製造、物質の組成、手段、方法、またはステップの開示から容易に理解することになり、本明細書に説明の対応する諸実施形態と同じ機能を実質的に行う、または同じ成果を実質的に達成するそれらは、本開示に従って利用され得る。したがって、添付の特許請求の範囲は、それらの範囲内に、そのようなプロセス、機械、製造、物質の組成、手段、方法、またはステップを含むように意図されている。
本開示による諸実施形態について、以上のように説明される。本開示は、特定の実施形態において説明されているが、本開示は、そのような実施形態によって限定されていると解釈すべきではなく、むしろ、添付の特許請求の範囲に従って解釈すべきであることを理解されたい。
Claims (32)
- キャッシュ一貫性をサポートするマルチコアプロセッサであって、
複数のコアと、前記複数のコアにそれぞれ対応する複数のローカルキャッシュとを備え、前記複数のコアのうちの各コアのローカルキャッシュが、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、前記複数のコアのうちの各コアが、前記複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続されたバスを介してアクセスする、前記マルチコアプロセッサ。 - 前記複数のコアのうちの各コアは、前記コアのローカルキャッシュに対応するアドレスの範囲におけるメモリスペースのメモリセクションが割り当てられる、請求項1に記載のマルチコアプロセッサ。
- 前記複数のコアに操作可能に連結されて前記メモリスペースから前記複数のコアにデータを提供するメモリコントローラをさらに備える、請求項1に記載のマルチコアプロセッサ。
- 前記複数のコアのうちの各コアのローカルキャッシュが、レベル1キャッシュ及びレベル2キャッシュを含む、請求項1に記載のマルチコアプロセッサ。
- マルチコアプロセッサの使用によるデータ読み取りの方法であって、
データ読取り操作を実行するマルチコアプロセッサのコアによって、読み取るべきデータのメモリアドレスに基づいて、前記コアが前記データのキャッシングを担っているかどうかを判断するステップと、
前記コアが前記データのキャッシングを担っているとの判断に応じて、前記コアのローカルキャッシュから前記データを読み取るステップと、
前記コアが前記データのキャッシングを担っていないとの判断に応じて、前記データのキャッシングを担っている前記マルチコアプロセッサのリモートコアにデータ読取り要求を送信し、前記リモートコアによって返信されるデータを受信するステップと
を含み、
前記マルチコアプロセッサが、複数のコアを備え、前記複数のコアが、それぞれのローカルキャッシュに対応し、前記複数のコアのうちの各コアのローカルキャッシュが、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、前記複数のコアのうちの各コアが、前記複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする、前記方法。 - 前記コアが前記データのキャッシングを担っているかどうかを判断する前記ステップが、
前記データの前記メモリアドレスに基づいて、かつ前記メモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、前記データのキャッシングを担っているコアのラベリング番号を計算することと、
前記計算されたラベリング番号が前記コアのラベリング番号と同じである場合、前記コアが前記データのキャッシングを担っていると決定することと
を含む、請求項5に記載の方法。 - 前記メモリスペースを対応するキャッシングのためのアドレスに分割するための前記所定のポリシーが、MEM/N*nからMEM/N*(n+1)−1のアドレス範囲における前記メモリスペースの中のデータのキャッシングを担うべき前記複数のコアのうちの各コアに向けられ、MEMは前記メモリスペースの容量であり、Nは前記複数のコアの総数であり、nは前記複数のコアのうちの各コアのラベリング番号であり、nは0からN−1までの範囲の値を有する、請求項6に記載の方法。
- 前記データのキャッシングを担っているコアのラベリング番号が、数式:ラベリング番号=(A*N/MEM)mod Nを用いて計算され、Aは前記データの前記メモリアドレスである、請求項7に記載の方法。
- 前記コアの前記ローカルキャッシュから前記データを読み取る前記ステップが、
前記データの前記メモリアドレスに基づいて、前記データが前記コアの前記ローカルキャッシュにおいてキャッシュされているかどうかを判断することと、
前記データが前記コアの前記ローカルキャッシュにおいてキャッシュされているとの判断に応じて、前記コアの前記ローカルキャッシュから前記データを読み取ることと、
前記データが前記コアの前記ローカルキャッシュにおいてキャッシュされていないとの判断に応じて、前記データの前記メモリアドレスに基づいて、前記メモリスペースにアクセスして前記データを読み取り、前記データを含んでいるメモリブロックを前記コアの前記ローカルキャッシュにロードすることと、
を含む、請求項5に記載の方法。 - 前記データのキャッシングを担っている前記マルチコアプロセッサのリモートコアにデータ読取り要求を送信し、前記リモートコアによって返信されるデータを受信する前記ステップが、
前記データのキャッシングを担っているリモートコアにデータ要求を送信するステップであって、前記要求が、前記データの前記メモリアドレス、及び前記データ要求を送信する前記コアのラベリング番号を含む、前記送信するステップと、
前記リモートコアによって、前記リモートコアのローカルキャッシュから前記データを読み取るステップと、
前記リモートコアによって、前記データ要求を送信する前記コアに前記データを返信するステップと
を含む、請求項9に記載の方法。 - 前記リモートコアが前記リモートコアのローカルキャッシュから前記データを読み取る前記ステップは、
前記リモートコアが、前記データの前記メモリアドレスに基づいて、前記データが前記リモートコアの前記ローカルキャッシュにおいてキャッシュされているかどうかを判断するステップと、
前記データが前記リモートコアの前記ローカルキャッシュにおいてキャッシュされているとの判断に応じて、前記リモートコアの前記ローカルキャッシュから前記データを読み取るステップと、
前記データが前記リモートコアの前記ローカルキャッシュにおいてキャッシュされていないとの判断に応じて、前記データの前記メモリアドレスに基づいて、前記メモリスペースにアクセスして前記データを読み取り、前記データを含んでいるメモリブロックを前記リモートコアの前記ローカルキャッシュにロードするステップと
を含む、請求項10に記載の方法。 - データ読み取りのための装置であって、
マルチコアプロセッサと、
前記プロセッサに操作可能に連結された非一時的コンピュータ可読媒体と
を備え、前記非一時的コンピュータ可読媒体が、前記プロセッサによってアクセスされるときに実行されるべきコンピュータ可読命令を記憶しており、前記命令は、
前記マルチコアプロセッサのコアが、データ読取り操作を実行して、読み取るべきデータのメモリアドレスに基づいて、前記コアが前記データのキャッシングを担っているかどうかを判断するように構成されたデータ読取り操作判断モジュール、
前記コアが前記データのキャッシングを担っているとの判断に応じて、前記コアのローカルキャッシュから前記データを読み取るように構成されたローカルキャッシュ読み取りモジュール、
前記コアが前記データのキャッシングを担っていないとの判断に応じて、前記データのキャッシングを担っている前記マルチコアプロセッサのリモートコアにデータ読取り要求を送信し、前記リモートコアによって返信されるデータを受信するように構成されたリモートキャッシュ読み取りモジュール
を含み、
前記マルチコアプロセッサが、複数のコアを備え、前記複数のコアが、それぞれのローカルキャッシュに対応し、前記複数のコアのうちの各コアのローカルキャッシュが、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、前記複数のコアのうちの各コアが、前記複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする、
前記装置。 - 前記データ読取り操作決定モジュールが、
前記データの前記メモリアドレスに基づいて、かつ前記メモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、前記データのキャッシングを担っているコアのラベリング番号を計算するように構成された読取りラベリング番号計算サブモジュールと、
前記計算されたラベリング番号が前記コアのラベリング番号と同じである場合、前記コアが前記データのキャッシングを担っていると判断するように構成されたラベリング番号判断サブモジュールと
を備える、請求項12に記載の装置。 - 前記読取りラベリング番号計算サブモジュールの前記所定のポリシーは、MEM/N*nからMEM/N*(n+1)−1のアドレス範囲における前記メモリスペースの中のデータのキャッシングを担うべき前記複数のコアのうちの各コアに向けられ、MEMは前記メモリスペースの前記容量であり、Nは前記複数のコアの総数であり、nは前記複数のコアのうちの各コアのラベリング番号であり、nは0からN−1までの範囲の値を有する、請求項13に記載の装置。
- 前記読取りラベリング番号計算サブモジュールが、数式:ラベリング番号=(A*N/MEM)mod Nを用いて前記データのキャッシングを担っているコアのラベリング番号を計算し、Aは前記データの前記メモリアドレスである、請求項14に記載の装置。
- 前記ローカルキャッシュ読み取りモジュールが、
前記データの前記メモリアドレスに基づいて、前記データが前記コアの前記ローカルキャッシュにおいてキャッシュされているかどうかを判断するように構成されたローカルキャッシュ判断サブモジュールと、
前記データが前記コアの前記ローカルキャッシュにおいてキャッシュされているとの判断に応じて、前記コアの前記ローカルキャッシュから前記データを読み取るように構成されたキャッシュ読取り実行サブモジュールと、
前記データが前記コアの前記ローカルキャッシュにおいてキャッシュされていないとの判断に応じて、前記データの前記メモリアドレスに基づいて、前記メモリスペースにアクセスして前記データを読み取り、前記データを含んでいるメモリブロックを前記コアの前記ローカルキャッシュにロードするように構成されたメモリ読取りサブモジュールと
を備える、請求項12に記載の装置。 - 前記リモートキャッシュ読み取りモジュールが、
前記データのキャッシングを担っているリモートコアにデータ要求を送信するように構成された要求送信サブモジュールであって、前記要求が、前記データの前記メモリアドレス、及び前記データ要求を送信する前記コアのラベリング番号を含む、前記要求送信サブモジュールと、
前記リモートコアが前記リモートコアのローカルキャッシュから前記データを読み取るように構成されたリモート読取りサブモジュールと、
前記リモートコアが前記データ要求を送信する前記コアに前記データを返信するように構成されたデータ返信サブモジュールと
を備える、請求項16に記載の装置。 - リモート読取りサブモジュールは、
前記リモートコアが、前記データの前記メモリアドレスに基づいて、前記データが前記リモートコアの前記ローカルキャッシュにおいてキャッシュされているかどうかを判断するように構成されたリモートキャッシュ判断サブモジュールと、
前記データが前記リモートコアの前記ローカルキャッシュにおいてキャッシュされているとの判断に応じて、前記リモートコアの前記ローカルキャッシュから前記データを読み取るように構成されたリモートキャッシュ読取り実行サブモジュールと、
前記データが前記リモートコアの前記ローカルキャッシュにおいてキャッシュされていないとの判断に応じて、前記データの前記メモリアドレスに基づいて、前記メモリスペースにアクセスして前記データを読み取り、前記データを含んでいるメモリブロックを前記リモートコアの前記ローカルキャッシュにロードするように構成されたリモートメモリ読取りサブモジュールと
を備える、請求項17に記載の装置。 - マルチコアプロセッサの使用によるデータ書き込みの方法であって、
データ書込み操作を実行するマルチコアプロセッサのコアが、書き込むべき前記データのメモリアドレスに基づいて、前記コアが前記データのキャッシングを担っているかどうかを判断するステップと、
前記コアが前記データのキャッシングを担っているとの判断に応じて、前記コアのローカルキャッシュに前記データを書き込むステップと、
前記コアが前記データのキャッシングを担っていないとの判断に応じて、前記データのキャッシングを担っている前記マルチコアプロセッサのリモートコアにデータ書込み要求を送信するステップであって、前記リモートコアが前記リモートコアのローカルキャッシュに前記データを書き込み、前記データ書込み要求が、前記データ書込み操作の書き込むべき前記データの前記メモリアドレス及び内容を含む、前記送信するステップと
を含み、
前記マルチコアプロセッサが、複数のコアを備え、前記複数のコアが、それぞれのローカルキャッシュに対応し、前記複数のコアのうちの各コアのローカルキャッシュが、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、前記複数のコアのうちの各コアが、前記複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする、
前記方法。 - 前記コアが前記データのキャッシングを担っているかどうかを判断する前記ステップが、
前記データの前記メモリアドレスに基づいて、かつ前記メモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、前記データのキャッシングを担っているコアのラベリング番号を計算するステップと、
前記計算されたラベリング番号が前記コアのラベリング番号と同じである場合、前記コアが前記データのキャッシングを担っていると判断するステップと
を含む、請求項19に記載の方法。 - 前記ローカルキャッシュに前記データを書き込むとき、前記データ書込み操作を実行する前記コアまたは前記リモートコアが、前記データを含んでいるキャッシュラインにダーティマークを設定するステップと、
前記マーク付けされたキャッシュラインが、前記ローカルキャッシュから置き換えられるとき、前記メモリスペースの中の対応するアドレスに前記キャッシュラインのデータを書き込むステップと
をさらに含む、請求項19に記載の方法。 - データ書き込みのための装置であって、
マルチコアプロセッサと、
前記プロセッサに操作可能に連結された非一時的コンピュータ可読媒体と
を備え、前記非一時的コンピュータ可読媒体が、前記プロセッサによってアクセスされるときに実行されるべきコンピュータ可読命令を記憶しており、前記命令は、
前記マルチコアプロセッサのコアが、データ書込み操作を実行して、書き込むべき前記データのメモリアドレスに基づいて、前記コアが前記データのキャッシングを担っているかどうかを判断するように構成されたデータ書込み操作判断モジュール、
前記コアが前記データのキャッシングを担っているとの判断に応じて、前記コアのローカルキャッシュに前記データを書き込むように構成されたローカルキャッシュ書き込みモジュール、ならびに
前記コアが前記データのキャッシングを担っていないとの判断に応じて、前記データのキャッシングを担っている前記マルチコアプロセッサのリモートコアにデータ書込み要求を送信するように構成されたリモートキャッシュ書き込みモジュールであって、前記リモートコアが、前記リモートコアのローカルキャッシュに前記データを書き込み、前記データ書込み要求が、前記データ書込み操作の書き込むべき前記データの前記メモリアドレス及び内容を含む、前記リモートキャッシュ書き込みモジュール
を備え、
前記マルチコアプロセッサが、複数のコアを備え、前記複数のコアが、それぞれのローカルキャッシュに対応し、前記複数のコアのうちの各コアのローカルキャッシュが、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、前記複数のコアのうちの各コアが、前記複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする、
前記装置。 - 前記データ書込み操作決定モジュールが、
前記データの前記メモリアドレスに基づいて、かつ前記メモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、前記データのキャッシングを担っているコアのラベリング番号を計算するように構成された書込みラベリング番号計算サブモジュールと、
前記計算されたラベリング番号が前記コアのラベリング番号と同じである場合、前記コアが前記データのキャッシングを担っていると判断するように構成されたラベリング番号判断サブモジュールと
を備える、請求項22に記載の装置。 - 前記ローカルキャッシュ書き込みモジュールが、前記ローカルキャッシュに前記データを書き込むときに前記データを含んでいるキャッシュラインにダーティマークを設定するように構成されたマーク設定サブモジュールを備え、前記リモートキャッシュ書き込みモジュールが、前記ローカルキャッシュに前記データを書き込むときに前記データを含んでいるキャッシュラインにダーティマークを設定するように構成されたマーク設定サブモジュールを備え、
当該装置が、前記マーク付けされたキャッシュラインが前記ローカルキャッシュから置き換えられると、前記メモリスペースの中の対応するアドレスに前記キャッシュラインのデータを書き込むように構成されたメモリ同期モジュールをさらに備える、
請求項22に記載の装置。 - マルチコアプロセッサの使用によるメモリ割当ての方法であって、
マルチコアプロセッサのコアからメモリ割当て要求を受信するステップと、
メモリスペースをキャッシングのためのアドレスに分割するための所定のポリシーに基づいて、前記コアが前記データを担っているメモリスペースにおけるアドレス範囲を決定するステップと、
前記メモリ割当て要求における割り当てるべきメモリユニットの量に基づいて、前記アドレス範囲に対応するメモリスペースから前記コアに前記メモリユニットの量を割り当てるステップと
を含む、前記方法。 - マルチコアプロセッサの使用によるメモリ割当てのための装置であって、
マルチコアプロセッサのコアからメモリ割当て要求を受信するように構成された要求受信モジュールと、
メモリスペースをキャッシングのためのアドレスに分割するための所定のポリシーに基づいて、前記コアがデータのキャッシングを担っているメモリスペースにおけるアドレス範囲を決定するように構成されたアドレス範囲決定モジュールと、
前記メモリ割当て要求における割り当てるべきメモリユニットの量に基づいて、前記アドレス範囲に対応するメモリスペースから、前記コアに前記メモリユニットの量を割り当てるように構成されたメモリ割当て実行モジュールと
を備え、
前記マルチコアプロセッサが、複数のコアを備え、前記複数のコアが、それぞれのローカルキャッシュに対応し、前記複数のコアのうちの各コアのローカルキャッシュが、メモリスペースにおける異なるアドレス範囲におけるデータのキャッシングを担い、前記複数のコアのうちの各コアが、前記複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする、
前記装置。 - 複数のコアを備えるマルチコアプロセッサであって、前記複数のコアが、それぞれのローカルキャッシュに対応し、前記複数のコアのうちの各コアのローカルキャッシュが、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、前記複数のコアのうちの各コアが、前記複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする、前記マルチコアプロセッサと、
前記マルチコアプロセッサの前記複数のコアに連結されて前記メモリスペースから前記複数のコアにデータを提供するメモリコントローラと、
前記メモリコントローラに連結されて前記複数のコアによってアクセスすべきデータを記憶するメモリスペースと
を備える、システム。 - 前記複数のコアのうちの各コアが、前記コアのローカルキャッシュに対応するアドレス範囲において前記メモリスペースにおけるメモリセクションにアクセスする、請求項27に記載のシステム。
- キャッシュ一貫性をサポートするマルチコアプロセッサであって、
少なくとも2つのコアグループに分割される複数のコアと、
前記コアグループに対応する複数のローカルキャッシュと
を備え、
コアグループのローカルキャッシュが、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、コアグループが、相互接続バスを介して、別のコアグループのローカルキャッシュにおけるデータにアクセスする、
前記マルチコアプロセッサ。 - プログラム命令を内部に埋め込んだ非一時的コンピュータ可読記憶媒体であって、前記プログラム命令は、デバイスの1つまたは複数のプロセッサによって実行されると、前記デバイスに、データ読み取りのための方法を実行させ、前記方法が、
データ読取り操作を実行するマルチコアプロセッサのコアが、読み取るべきデータのメモリアドレスに基づいて、前記コアが前記データのキャッシングを担っているかどうかを判断することと、
前記コアが前記データのキャッシングを担っているとの判断に応じて、前記コアのローカルキャッシュから前記データを読み取ることと、
前記コアが前記データのキャッシングを担っていないとの判断に応じて、前記データのキャッシングを担っている前記マルチコアプロセッサのリモートコアにデータ読取り要求を送信し、前記リモートコアによって返信されるデータを受信することと
を含み、
前記マルチコアプロセッサが、複数のコアを備え、前記複数のコアが、それぞれのローカルキャッシュに対応し、前記複数のコアのうちの各コアのローカルキャッシュが、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、前記複数のコアのうちの各コアが、前記複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする、
前記非一時的コンピュータ可読記憶媒体。 - プログラム命令を内部に埋め込んだ非一時的コンピュータ可読記憶媒体であって、前記プログラム命令は、デバイスの1つまたは複数のプロセッサによって実行されると、前記デバイスに、データ書き込みのための方法を実行させ、前記方法が、
データ書込み操作を実行するマルチコアプロセッサのコアが、書き込むべきデータのメモリアドレスに基づいて、前記コアが前記データのキャッシングを担っているかどうかを判断することと、
前記コアが前記データのキャッシングを担っているとの判断に応じて、前記コアの前記ローカルキャッシュに前記データを書き込むことと、
前記コアが前記データのキャッシングを担っていないとの判断に応じて、前記データのキャッシングを担っている前記マルチコアプロセッサのリモートコアにデータ書込み要求を送信することであって、前記リモートコアが、前記リモートコアのローカルキャッシュに前記データを書き込み、前記データ書込み要求が、前記データ書込み操作の書き込むべき前記データの前記メモリアドレス及び内容を含む、送信することと
を含み、
前記マルチコアプロセッサが、複数のコアを備え、前記複数のコアが、それぞれのローカルキャッシュに対応し、前記複数のコアのうちの1つのコアのローカルキャッシュが、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、前記複数のコアのうちの1つのコアが、相互接続バスを介して、前記複数のコアのうちの別のコアのローカルキャッシュにおけるデータにアクセスする、
前記非一時的コンピュータ可読記憶媒体。 - プログラム命令を内部に埋め込んだ非一時的コンピュータ可読記憶媒体であって、前記プログラム命令は、デバイスの1つまたは複数のプロセッサによって実行されると、前記デバイスに、メモリ割当てのための方法を実行させ、前記方法が、
マルチコアプロセッサのコアからメモリ割当て要求を受信するステップと、
メモリスペースをキャッシングするためのアドレスに分割するための所定のポリシーに基づいて、前記コアが前記データのキャッシングを担っているメモリスペースにおけるアドレス範囲を決定するステップと、
前記メモリ割当て要求における割り当てるべきメモリユニットの量に基づいて、前記アドレス範囲に対応するメモリスペースから、前記コアに前記メモリユニットの量を割り当てるステップと
を含み、
前記マルチコアプロセッサが、複数のコアを備え、前記複数のコアが、それぞれのローカルキャッシュに対応し、前記複数のコアのうちの各コアのローカルキャッシュが、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、前記複数のコアのうちの1つのコアが、前記複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする、
前記非一時的コンピュータ可読記憶媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410756732.3A CN105740164B (zh) | 2014-12-10 | 2014-12-10 | 支持缓存一致性的多核处理器、读写方法、装置及设备 |
CN201410756732.3 | 2014-12-10 | ||
PCT/US2015/065042 WO2016094686A1 (en) | 2014-12-10 | 2015-12-10 | Multi-core processor having cache consistency |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018503181A true JP2018503181A (ja) | 2018-02-01 |
Family
ID=56108197
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017531592A Pending JP2018503181A (ja) | 2014-12-10 | 2015-12-10 | キャッシュ一貫性を有するマルチコアプロセッサ |
Country Status (6)
Country | Link |
---|---|
US (1) | US10409723B2 (ja) |
EP (1) | EP3230850B1 (ja) |
JP (1) | JP2018503181A (ja) |
KR (1) | KR102505176B1 (ja) |
CN (1) | CN105740164B (ja) |
WO (1) | WO2016094686A1 (ja) |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10067763B2 (en) | 2015-12-11 | 2018-09-04 | International Business Machines Corporation | Handling unaligned load operations in a multi-slice computer processor |
US10318356B2 (en) * | 2016-03-31 | 2019-06-11 | International Business Machines Corporation | Operation of a multi-slice processor implementing a hardware level transfer of an execution thread |
CN106250492B (zh) * | 2016-07-28 | 2019-11-19 | 五八同城信息技术有限公司 | 索引的处理方法及装置 |
CN107894914A (zh) * | 2016-09-30 | 2018-04-10 | 华为技术有限公司 | 缓存一致性处理方法和装置 |
CN109164976B (zh) * | 2016-12-21 | 2021-12-31 | 北京忆恒创源科技股份有限公司 | 利用写缓存优化存储设备性能 |
CN106776046B (zh) * | 2017-01-13 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种scst读写优化方法及系统 |
US10528519B2 (en) * | 2017-05-02 | 2020-01-07 | Mellanox Technologies Ltd. | Computing in parallel processing environments |
CN109213641B (zh) * | 2017-06-29 | 2021-10-26 | 展讯通信(上海)有限公司 | 缓存一致性检测系统及方法 |
US11288010B2 (en) * | 2017-09-25 | 2022-03-29 | Intel Corporation | Efficiently storing computer processor data structures in computer memory |
CN109726017B (zh) * | 2017-10-30 | 2023-05-26 | 阿里巴巴集团控股有限公司 | 一种应用程序之间共享缓存的方法及装置 |
CN109753445B (zh) * | 2017-11-02 | 2022-12-27 | 华为技术有限公司 | 一种缓存访问方法、多级缓存系统及计算机系统 |
CN107844435A (zh) * | 2017-11-08 | 2018-03-27 | 北京锐安科技有限公司 | 一种缓存系统、方法及装置 |
CN108366111B (zh) * | 2018-02-06 | 2020-04-07 | 西安电子科技大学 | 一种用于交换设备的数据包低时延缓存装置与方法 |
CN109062613B (zh) | 2018-06-01 | 2020-08-28 | 杭州中天微系统有限公司 | 多核互联二级缓存访问验证方法 |
CN110874273B (zh) * | 2018-08-31 | 2023-06-13 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及装置 |
CN109684237B (zh) * | 2018-11-20 | 2021-06-01 | 华为技术有限公司 | 基于多核处理器的数据访问方法和装置 |
US10942853B2 (en) | 2018-12-20 | 2021-03-09 | International Business Machines Corporation | System and method including broadcasting an address translation invalidation instruction with a return marker to indentify the location of data in a computing system having mutiple processors |
CN109857342B (zh) * | 2019-01-16 | 2021-07-13 | 盛科网络(苏州)有限公司 | 一种数据读写方法及装置、交换芯片及存储介质 |
CN110018790B (zh) * | 2019-03-26 | 2020-05-19 | 华中科技大学 | 一种保证持久性内存中数据崩溃一致性的方法及系统 |
US10860487B2 (en) * | 2019-04-17 | 2020-12-08 | Chengdu Haiguang Integrated Circuit Design Co. Ltd. | Multi-core processing device and method of transferring data between cores thereof |
US10785098B1 (en) * | 2019-04-30 | 2020-09-22 | Alibaba Group Holding Limited | Network configuration using multicast address modulation |
CN110221985B (zh) * | 2019-06-06 | 2021-04-23 | 成都海光集成电路设计有限公司 | 跨芯片维护缓存一致性策略的装置与方法 |
CN112148665B (zh) * | 2019-06-28 | 2024-01-09 | 深圳市中兴微电子技术有限公司 | 缓存的分配方法及装置 |
CN112559433B (zh) * | 2019-09-25 | 2024-01-02 | 阿里巴巴集团控股有限公司 | 一种多核互联总线、核间通信方法及多核处理器 |
TWI719745B (zh) * | 2019-12-09 | 2021-02-21 | 瑞昱半導體股份有限公司 | 記憶體資料存取裝置及其方法 |
CN112988036A (zh) * | 2019-12-16 | 2021-06-18 | 瑞昱半导体股份有限公司 | 存储器数据存取装置及其方法 |
US11579799B2 (en) * | 2020-03-18 | 2023-02-14 | Micron Technology, Inc. | Dynamic selection of cores for processing responses |
CN111414318B (zh) * | 2020-03-24 | 2022-04-29 | 江南大学 | 一种基于提前更新的数据一致性实现方法 |
US11474885B2 (en) * | 2020-04-07 | 2022-10-18 | Micron Technology, Inc. | Method for an internal command of a first processing core with memory sub-system that caching identifiers for access commands |
CN111581133A (zh) * | 2020-05-06 | 2020-08-25 | 苏州浪潮智能科技有限公司 | 一种多核存储器一致性的方法、系统、设备及可读介质 |
US11227361B2 (en) | 2020-05-06 | 2022-01-18 | Renesas Electronics Corporation | Image processing device with parallel memory access |
CN112100093B (zh) * | 2020-08-18 | 2023-11-21 | 海光信息技术股份有限公司 | 保持多处理器共享内存数据一致性的方法和多处理器系统 |
CN112558861B (zh) * | 2020-09-29 | 2023-03-10 | 北京清微智能科技有限公司 | 一种面向多核处理器阵列的数据加载和存储系统及方法 |
US11663021B2 (en) * | 2020-11-24 | 2023-05-30 | Dell Products L.P. | System and method for providing granular processor performance control |
CN112463711B (zh) * | 2020-12-11 | 2023-03-31 | 北京航空航天大学 | 一种针对众核处理器的从核软件缓存共享方法 |
CN112559432A (zh) * | 2020-12-22 | 2021-03-26 | 上海金卓科技有限公司 | 一种多核通讯系统 |
WO2022150996A1 (zh) * | 2021-01-13 | 2022-07-21 | 王志平 | 一种处理器缓存结构的实现方法 |
WO2022199357A1 (zh) * | 2021-03-23 | 2022-09-29 | 北京灵汐科技有限公司 | 数据处理方法及装置、电子设备、计算机可读存储介质 |
CN115114192B (zh) * | 2021-03-23 | 2024-06-14 | 北京灵汐科技有限公司 | 存储器接口、功能核、众核系统和存储数据访问方法 |
US11520701B2 (en) * | 2021-04-02 | 2022-12-06 | Tenstorrent Inc. | Data structure optimized dedicated memory caches |
CN113254321B (zh) * | 2021-06-07 | 2023-01-24 | 上海恒为智能科技有限公司 | 一种评估处理器内存访问性能的方法及系统 |
CN114063921B (zh) * | 2021-11-12 | 2023-06-27 | 福建师范大学 | 一种基于强化学习的固态硬盘映射记录缓存管理方法 |
CN113986778B (zh) * | 2021-11-17 | 2023-03-24 | 海光信息技术股份有限公司 | 一种数据处理方法、共享缓存、芯片系统及电子设备 |
CN114416387A (zh) * | 2021-12-06 | 2022-04-29 | 合肥杰发科技有限公司 | 基于同构多核的多操作系统及通信方法、芯片 |
US11928038B2 (en) | 2022-06-21 | 2024-03-12 | International Business Machines Corporation | Managing data sets based on user activity |
CN115374046B (zh) * | 2022-10-21 | 2023-03-14 | 山东云海国创云计算装备产业创新中心有限公司 | 一种多处理器数据交互方法、装置、设备及存储介质 |
CN115587051B (zh) * | 2022-10-28 | 2023-06-16 | 海光信息技术股份有限公司 | 缓存目录更新方法、数据处理方法、相关装置及设备 |
WO2024117572A1 (ko) * | 2022-11-29 | 2024-06-06 | 한국전자통신연구원 | 대용량 온칩 메모리를 갖는 인공지능 프로세서를 위한 가상주소 기반의 캐시 코헤런시 지원 방법 및 이를 위한 장치 |
CN116167310A (zh) * | 2023-04-25 | 2023-05-26 | 上海芯联芯智能科技有限公司 | 一种验证多核心处理器缓存一致性的方法及装置 |
CN117608864B (zh) * | 2024-01-23 | 2024-04-09 | 中诚华隆计算机技术有限公司 | 一种多核缓存一致性方法及系统 |
Family Cites Families (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4442487A (en) * | 1981-12-31 | 1984-04-10 | International Business Machines Corporation | Three level memory hierarchy using write and share flags |
US5479624A (en) * | 1992-10-14 | 1995-12-26 | Lee Research, Inc. | High-performance interleaved memory system comprising a prime number of memory modules |
US6618117B2 (en) | 1997-07-12 | 2003-09-09 | Silverbrook Research Pty Ltd | Image sensing apparatus including a microcontroller |
DE19861088A1 (de) | 1997-12-22 | 2000-02-10 | Pact Inf Tech Gmbh | Verfahren zur Reparatur von integrierten Schaltkreisen |
US6859864B2 (en) * | 2000-12-29 | 2005-02-22 | Intel Corporation | Mechanism for initiating an implicit write-back in response to a read or snoop of a modified cache line |
US20110087859A1 (en) * | 2002-02-04 | 2011-04-14 | Mimar Tibet | System cycle loading and storing of misaligned vector elements in a simd processor |
US20060112226A1 (en) | 2004-11-19 | 2006-05-25 | Hady Frank T | Heterogeneous processors sharing a common cache |
US20070143546A1 (en) * | 2005-12-21 | 2007-06-21 | Intel Corporation | Partitioned shared cache |
US20070168620A1 (en) | 2006-01-19 | 2007-07-19 | Sicortex, Inc. | System and method of multi-core cache coherency |
US7565492B2 (en) * | 2006-08-31 | 2009-07-21 | Intel Corporation | Method and apparatus for preventing software side channel attacks |
US7853754B1 (en) | 2006-09-29 | 2010-12-14 | Tilera Corporation | Caching in multicore and multiprocessor architectures |
JP4294059B2 (ja) * | 2007-03-22 | 2009-07-08 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置および情報処理方法 |
JP5136550B2 (ja) * | 2007-06-01 | 2013-02-06 | 富士通株式会社 | 情報処理装置及び情報処理装置の再構成方法 |
US8948267B1 (en) | 2007-11-21 | 2015-02-03 | Marvell International Ltd. | System and method of video coding using adaptive macroblock processing |
CN101178933B (zh) * | 2007-12-05 | 2010-07-28 | 苏州壹世通科技有限公司 | 一种闪存阵列装置 |
US8621184B1 (en) | 2008-10-31 | 2013-12-31 | Netapp, Inc. | Effective scheduling of producer-consumer processes in a multi-processor system |
US8806129B2 (en) | 2008-11-21 | 2014-08-12 | International Business Machines Corporation | Mounted cache memory in a multi-core processor (MCP) |
WO2010093003A1 (ja) | 2009-02-13 | 2010-08-19 | 日本電気株式会社 | 演算資源割当装置、演算資源割当方法、及び、演算資源割当プログラム |
US9208093B2 (en) | 2009-04-21 | 2015-12-08 | Empire Technology Development Llc | Allocation of memory space to individual processor cores |
US8615633B2 (en) | 2009-04-23 | 2013-12-24 | Empire Technology Development Llc | Multi-core processor cache coherence for reduced off-chip traffic |
EP2441005A2 (en) * | 2009-06-09 | 2012-04-18 | Martin Vorbach | System and method for a cache in a multi-core processor |
US8751737B2 (en) | 2009-06-26 | 2014-06-10 | Alcatel Lucent | Method and apparatus for using a shared ring buffer to provide thread synchronization in a multi-core processor system |
EP2499576A2 (en) | 2009-11-13 | 2012-09-19 | Richard S. Anderson | Distributed symmetric multiprocessing computing architecture |
US8904114B2 (en) | 2009-11-24 | 2014-12-02 | Empire Technology Development Llc | Shared upper level cache architecture |
CN101706755A (zh) | 2009-11-24 | 2010-05-12 | 中国科学技术大学苏州研究院 | 片上多核处理器的高速缓存协作系统及其协作处理方法 |
US8874855B2 (en) | 2009-12-28 | 2014-10-28 | Empire Technology Development Llc | Directory-based coherence caching |
CN102947807B (zh) | 2010-06-14 | 2015-09-09 | 富士通株式会社 | 多核处理器系统、缓存一致性控制方法以及缓存一致性控制程序 |
JP5633564B2 (ja) | 2010-06-23 | 2014-12-03 | 富士通株式会社 | マルチコアシステムおよび外部入出力バス制御方法 |
JP5440702B2 (ja) | 2010-06-25 | 2014-03-12 | 富士通株式会社 | マルチコアプロセッサシステム、制御プログラム、および制御方法 |
WO2012026034A1 (ja) | 2010-08-27 | 2012-03-01 | 富士通株式会社 | スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法 |
US8554851B2 (en) * | 2010-09-24 | 2013-10-08 | Intel Corporation | Apparatus, system, and methods for facilitating one-way ordering of messages |
CN101958834B (zh) * | 2010-09-27 | 2012-09-05 | 清华大学 | 支持高速缓存一致的片上网络系统及数据请求方法 |
FR2970794B1 (fr) * | 2011-01-21 | 2013-03-08 | Commissariat Energie Atomique | Systeme multi-coeurs et procede de coherence de donnees dans un tel systeme |
EP2689336A1 (en) * | 2011-03-25 | 2014-01-29 | BlackBerry Limited | Dynamic power management of cache memory in a multi-core processing system |
US9619301B2 (en) | 2011-04-06 | 2017-04-11 | Telefonaktiebolaget L M Ericsson (Publ) | Multi-core memory model and speculative mode processor management |
US8892924B2 (en) | 2011-05-31 | 2014-11-18 | Intel Corporation | Reducing power consumption of uncore circuitry of a processor |
CN102591800B (zh) * | 2011-12-31 | 2015-01-07 | 龙芯中科技术有限公司 | 一种弱一致性存储模型的数据访存系统和方法 |
US8943287B1 (en) | 2012-07-17 | 2015-01-27 | Rockwell Collins, Inc. | Multi-core processor system configured to constrain access rate from memory |
US20140032854A1 (en) * | 2012-07-30 | 2014-01-30 | Futurewei Technologies, Inc. | Coherence Management Using a Coherent Domain Table |
US9342454B2 (en) * | 2012-08-02 | 2016-05-17 | International Business Machines Corporation | Nested rewind only and non rewind only transactions in a data processing system supporting transactional storage accesses |
US9218289B2 (en) | 2012-08-06 | 2015-12-22 | Qualcomm Incorporated | Multi-core compute cache coherency with a release consistency memory ordering model |
US9244853B2 (en) | 2012-08-10 | 2016-01-26 | Qualcomm Incorporated | Tunable multi-tiered STT-MRAM cache for multi-core processors |
US9229865B2 (en) | 2013-02-21 | 2016-01-05 | Empire Technology Development Llc | One-cacheable multi-core architecture |
US9223710B2 (en) | 2013-03-16 | 2015-12-29 | Intel Corporation | Read-write partitioning of cache memory |
JP5843801B2 (ja) * | 2013-03-19 | 2016-01-13 | 株式会社東芝 | 情報処理装置およびデバッグ方法 |
JP6060770B2 (ja) * | 2013-03-28 | 2017-01-18 | 富士通株式会社 | 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム |
CN104462007B (zh) | 2013-09-22 | 2018-10-02 | 南京中兴新软件有限责任公司 | 实现多核间缓存一致性的方法及装置 |
US9418018B2 (en) * | 2013-12-31 | 2016-08-16 | Samsung Electronics Co., Ltd. | Efficient fill-buffer data forwarding supporting high frequencies |
US9122800B1 (en) | 2014-05-30 | 2015-09-01 | Honeywell International Inc. | System and method of non-intrusive measurement of memory access profiles of threads in a multi-core processor |
CN104360981B (zh) | 2014-11-12 | 2017-09-29 | 浪潮(北京)电子信息产业有限公司 | 面向多核多处理器平台的Cache一致性协议的设计方法 |
-
2014
- 2014-12-10 CN CN201410756732.3A patent/CN105740164B/zh active Active
-
2015
- 2015-12-09 US US14/964,296 patent/US10409723B2/en active Active
- 2015-12-10 JP JP2017531592A patent/JP2018503181A/ja active Pending
- 2015-12-10 EP EP15868111.4A patent/EP3230850B1/en active Active
- 2015-12-10 KR KR1020177017191A patent/KR102505176B1/ko active IP Right Grant
- 2015-12-10 WO PCT/US2015/065042 patent/WO2016094686A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
CN105740164A (zh) | 2016-07-06 |
KR102505176B1 (ko) | 2023-02-28 |
EP3230850B1 (en) | 2021-01-13 |
KR20170095251A (ko) | 2017-08-22 |
EP3230850A1 (en) | 2017-10-18 |
US10409723B2 (en) | 2019-09-10 |
CN105740164B (zh) | 2020-03-17 |
US20160170886A1 (en) | 2016-06-16 |
EP3230850A4 (en) | 2018-06-20 |
WO2016094686A1 (en) | 2016-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2018503181A (ja) | キャッシュ一貫性を有するマルチコアプロセッサ | |
CN110869913B (zh) | 用于数据处理网络的存储器系统 | |
US11620060B2 (en) | Unified hardware and software two-level memory | |
US10572150B2 (en) | Memory network with memory nodes controlling memory accesses in the memory network | |
US10552337B2 (en) | Memory management and device | |
US11487675B1 (en) | Collecting statistics for persistent memory | |
US20160253123A1 (en) | NVMM: An Extremely Large, Logically Unified, Sequentially Consistent Main-Memory System | |
JP5573829B2 (ja) | 情報処理装置およびメモリアクセス方法 | |
US20160092362A1 (en) | Memory network to route memory traffic and i/o traffic | |
CN110892387B (zh) | 存储器节点控制器 | |
US10824555B2 (en) | Method and system for flash-aware heap memory management wherein responsive to a page fault, mapping a physical page (of a logical segment) that was previously reserved in response to another page fault for another page in the first logical segment | |
US20170083444A1 (en) | Configuring fast memory as cache for slow memory | |
JPWO2015046552A1 (ja) | ストレージシステムとノード装置とキャッシュ制御方法並びにプログラム | |
US10705977B2 (en) | Method of dirty cache line eviction | |
CN116302491A (zh) | 内存管理方法、装置、计算机设备及存储介质 | |
US20160085450A1 (en) | System for providing remote memory and temporary page pool operating method for providing remote memory | |
KR102027391B1 (ko) | 멀티 코어 시스템에서 데이터 방문자 디렉토리에 액세스하는 방법 및 장치 | |
CN116225693A (zh) | 元数据管理方法、装置、计算机设备及存储介质 | |
US10725675B2 (en) | Management apparatus, information processing apparatus, management method, and computer program product | |
JP2011186554A (ja) | メモリ管理装置及び方法 | |
JP7204020B2 (ja) | 制御方法 | |
JP7337228B2 (ja) | メモリシステムおよび制御方法 | |
JP7167295B2 (ja) | メモリシステムおよび制御方法 | |
JP2022121655A (ja) | メモリシステムおよび制御方法 | |
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 |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20181122 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190910 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20190911 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20200407 |