(57)【要約】  キャッシュ一貫性をサポートするマルチコアプロセッサ、その使用によるデータ書き込みのための方法及び装置、メモリ割当てのための方法及び装置、ならびにシステム。キャッシュ一貫性をサポートするマルチコアプロセッサは、複数のコアを備え、複数のコアは、それぞれのローカルキャッシュに対応する。複数のコアのうちの各コアのローカルキャッシュは、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、複数のコアのうちの各コアは、複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする。
2018503181.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュ一貫性をサポートするマルチコアプロセッサであって、
複数のコアと、前記複数のコアにそれぞれ対応する複数のローカルキャッシュとを備え、前記複数のコアのうちの各コアのローカルキャッシュが、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、前記複数のコアのうちの各コアが、前記複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続されたバスを介してアクセスする、前記マルチコアプロセッサ。
【請求項２】
前記複数のコアのうちの各コアは、前記コアのローカルキャッシュに対応するアドレスの範囲におけるメモリスペースのメモリセクションが割り当てられる、請求項１に記載のマルチコアプロセッサ。
【請求項３】
前記複数のコアに操作可能に連結されて前記メモリスペースから前記複数のコアにデータを提供するメモリコントローラをさらに備える、請求項１に記載のマルチコアプロセッサ。
【請求項４】
前記複数のコアのうちの各コアのローカルキャッシュが、レベル１キャッシュ及びレベル２キャッシュを含む、請求項１に記載のマルチコアプロセッサ。
【請求項５】
マルチコアプロセッサの使用によるデータ読み取りの方法であって、
データ読取り操作を実行するマルチコアプロセッサのコアによって、読み取るべきデータのメモリアドレスに基づいて、前記コアが前記データのキャッシングを担っているかどうかを判断するステップと、
前記コアが前記データのキャッシングを担っているとの判断に応じて、前記コアのローカルキャッシュから前記データを読み取るステップと、
前記コアが前記データのキャッシングを担っていないとの判断に応じて、前記データのキャッシングを担っている前記マルチコアプロセッサのリモートコアにデータ読取り要求を送信し、前記リモートコアによって返信されるデータを受信するステップと
を含み、
前記マルチコアプロセッサが、複数のコアを備え、前記複数のコアが、それぞれのローカルキャッシュに対応し、前記複数のコアのうちの各コアのローカルキャッシュが、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、前記複数のコアのうちの各コアが、前記複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする、前記方法。
【請求項６】
前記コアが前記データのキャッシングを担っているかどうかを判断する前記ステップが、
前記データの前記メモリアドレスに基づいて、かつ前記メモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、前記データのキャッシングを担っているコアのラベリング番号を計算することと、
前記計算されたラベリング番号が前記コアのラベリング番号と同じである場合、前記コアが前記データのキャッシングを担っていると決定することと
を含む、請求項５に記載の方法。
【請求項７】
前記メモリスペースを対応するキャッシングのためのアドレスに分割するための前記所定のポリシーが、ＭＥＭ／Ｎ*ｎからＭＥＭ／Ｎ*（ｎ＋１）−１のアドレス範囲における前記メモリスペースの中のデータのキャッシングを担うべき前記複数のコアのうちの各コアに向けられ、ＭＥＭは前記メモリスペースの容量であり、Ｎは前記複数のコアの総数であり、ｎは前記複数のコアのうちの各コアのラベリング番号であり、ｎは０からＮ−１までの範囲の値を有する、請求項６に記載の方法。
【請求項８】
前記データのキャッシングを担っているコアのラベリング番号が、数式：ラベリング番号＝（Ａ*Ｎ／ＭＥＭ）ｍｏｄ  Ｎを用いて計算され、Ａは前記データの前記メモリアドレスである、請求項７に記載の方法。
【請求項９】
前記コアの前記ローカルキャッシュから前記データを読み取る前記ステップが、
前記データの前記メモリアドレスに基づいて、前記データが前記コアの前記ローカルキャッシュにおいてキャッシュされているかどうかを判断することと、
前記データが前記コアの前記ローカルキャッシュにおいてキャッシュされているとの判断に応じて、前記コアの前記ローカルキャッシュから前記データを読み取ることと、
前記データが前記コアの前記ローカルキャッシュにおいてキャッシュされていないとの判断に応じて、前記データの前記メモリアドレスに基づいて、前記メモリスペースにアクセスして前記データを読み取り、前記データを含んでいるメモリブロックを前記コアの前記ローカルキャッシュにロードすることと、
を含む、請求項５に記載の方法。
【請求項１０】
前記データのキャッシングを担っている前記マルチコアプロセッサのリモートコアにデータ読取り要求を送信し、前記リモートコアによって返信されるデータを受信する前記ステップが、
前記データのキャッシングを担っているリモートコアにデータ要求を送信するステップであって、前記要求が、前記データの前記メモリアドレス、及び前記データ要求を送信する前記コアのラベリング番号を含む、前記送信するステップと、
前記リモートコアによって、前記リモートコアのローカルキャッシュから前記データを読み取るステップと、
前記リモートコアによって、前記データ要求を送信する前記コアに前記データを返信するステップと
を含む、請求項９に記載の方法。
【請求項１１】
前記リモートコアが前記リモートコアのローカルキャッシュから前記データを読み取る前記ステップは、
前記リモートコアが、前記データの前記メモリアドレスに基づいて、前記データが前記リモートコアの前記ローカルキャッシュにおいてキャッシュされているかどうかを判断するステップと、
前記データが前記リモートコアの前記ローカルキャッシュにおいてキャッシュされているとの判断に応じて、前記リモートコアの前記ローカルキャッシュから前記データを読み取るステップと、
前記データが前記リモートコアの前記ローカルキャッシュにおいてキャッシュされていないとの判断に応じて、前記データの前記メモリアドレスに基づいて、前記メモリスペースにアクセスして前記データを読み取り、前記データを含んでいるメモリブロックを前記リモートコアの前記ローカルキャッシュにロードするステップと
を含む、請求項１０に記載の方法。
【請求項１２】
データ読み取りのための装置であって、
マルチコアプロセッサと、
前記プロセッサに操作可能に連結された非一時的コンピュータ可読媒体と
を備え、前記非一時的コンピュータ可読媒体が、前記プロセッサによってアクセスされるときに実行されるべきコンピュータ可読命令を記憶しており、前記命令は、
前記マルチコアプロセッサのコアが、データ読取り操作を実行して、読み取るべきデータのメモリアドレスに基づいて、前記コアが前記データのキャッシングを担っているかどうかを判断するように構成されたデータ読取り操作判断モジュール、
前記コアが前記データのキャッシングを担っているとの判断に応じて、前記コアのローカルキャッシュから前記データを読み取るように構成されたローカルキャッシュ読み取りモジュール、
前記コアが前記データのキャッシングを担っていないとの判断に応じて、前記データのキャッシングを担っている前記マルチコアプロセッサのリモートコアにデータ読取り要求を送信し、前記リモートコアによって返信されるデータを受信するように構成されたリモートキャッシュ読み取りモジュール
を含み、
前記マルチコアプロセッサが、複数のコアを備え、前記複数のコアが、それぞれのローカルキャッシュに対応し、前記複数のコアのうちの各コアのローカルキャッシュが、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、前記複数のコアのうちの各コアが、前記複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする、
前記装置。
【請求項１３】
前記データ読取り操作決定モジュールが、
前記データの前記メモリアドレスに基づいて、かつ前記メモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、前記データのキャッシングを担っているコアのラベリング番号を計算するように構成された読取りラベリング番号計算サブモジュールと、
前記計算されたラベリング番号が前記コアのラベリング番号と同じである場合、前記コアが前記データのキャッシングを担っていると判断するように構成されたラベリング番号判断サブモジュールと
を備える、請求項１２に記載の装置。
【請求項１４】
前記読取りラベリング番号計算サブモジュールの前記所定のポリシーは、ＭＥＭ／Ｎ*ｎからＭＥＭ／Ｎ*（ｎ＋１）−１のアドレス範囲における前記メモリスペースの中のデータのキャッシングを担うべき前記複数のコアのうちの各コアに向けられ、ＭＥＭは前記メモリスペースの前記容量であり、Ｎは前記複数のコアの総数であり、ｎは前記複数のコアのうちの各コアのラベリング番号であり、ｎは０からＮ−１までの範囲の値を有する、請求項１３に記載の装置。
【請求項１５】
前記読取りラベリング番号計算サブモジュールが、数式：ラベリング番号＝（Ａ*Ｎ／ＭＥＭ）ｍｏｄ  Ｎを用いて前記データのキャッシングを担っているコアのラベリング番号を計算し、Ａは前記データの前記メモリアドレスである、請求項１４に記載の装置。
【請求項１６】
前記ローカルキャッシュ読み取りモジュールが、
前記データの前記メモリアドレスに基づいて、前記データが前記コアの前記ローカルキャッシュにおいてキャッシュされているかどうかを判断するように構成されたローカルキャッシュ判断サブモジュールと、
前記データが前記コアの前記ローカルキャッシュにおいてキャッシュされているとの判断に応じて、前記コアの前記ローカルキャッシュから前記データを読み取るように構成されたキャッシュ読取り実行サブモジュールと、
前記データが前記コアの前記ローカルキャッシュにおいてキャッシュされていないとの判断に応じて、前記データの前記メモリアドレスに基づいて、前記メモリスペースにアクセスして前記データを読み取り、前記データを含んでいるメモリブロックを前記コアの前記ローカルキャッシュにロードするように構成されたメモリ読取りサブモジュールと
を備える、請求項１２に記載の装置。
【請求項１７】
前記リモートキャッシュ読み取りモジュールが、
前記データのキャッシングを担っているリモートコアにデータ要求を送信するように構成された要求送信サブモジュールであって、前記要求が、前記データの前記メモリアドレス、及び前記データ要求を送信する前記コアのラベリング番号を含む、前記要求送信サブモジュールと、
前記リモートコアが前記リモートコアのローカルキャッシュから前記データを読み取るように構成されたリモート読取りサブモジュールと、
前記リモートコアが前記データ要求を送信する前記コアに前記データを返信するように構成されたデータ返信サブモジュールと
を備える、請求項１６に記載の装置。
【請求項１８】
リモート読取りサブモジュールは、
前記リモートコアが、前記データの前記メモリアドレスに基づいて、前記データが前記リモートコアの前記ローカルキャッシュにおいてキャッシュされているかどうかを判断するように構成されたリモートキャッシュ判断サブモジュールと、
前記データが前記リモートコアの前記ローカルキャッシュにおいてキャッシュされているとの判断に応じて、前記リモートコアの前記ローカルキャッシュから前記データを読み取るように構成されたリモートキャッシュ読取り実行サブモジュールと、
前記データが前記リモートコアの前記ローカルキャッシュにおいてキャッシュされていないとの判断に応じて、前記データの前記メモリアドレスに基づいて、前記メモリスペースにアクセスして前記データを読み取り、前記データを含んでいるメモリブロックを前記リモートコアの前記ローカルキャッシュにロードするように構成されたリモートメモリ読取りサブモジュールと
を備える、請求項１７に記載の装置。
【請求項１９】
マルチコアプロセッサの使用によるデータ書き込みの方法であって、
データ書込み操作を実行するマルチコアプロセッサのコアが、書き込むべき前記データのメモリアドレスに基づいて、前記コアが前記データのキャッシングを担っているかどうかを判断するステップと、
前記コアが前記データのキャッシングを担っているとの判断に応じて、前記コアのローカルキャッシュに前記データを書き込むステップと、
前記コアが前記データのキャッシングを担っていないとの判断に応じて、前記データのキャッシングを担っている前記マルチコアプロセッサのリモートコアにデータ書込み要求を送信するステップであって、前記リモートコアが前記リモートコアのローカルキャッシュに前記データを書き込み、前記データ書込み要求が、前記データ書込み操作の書き込むべき前記データの前記メモリアドレス及び内容を含む、前記送信するステップと
を含み、
前記マルチコアプロセッサが、複数のコアを備え、前記複数のコアが、それぞれのローカルキャッシュに対応し、前記複数のコアのうちの各コアのローカルキャッシュが、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、前記複数のコアのうちの各コアが、前記複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする、
前記方法。
【請求項２０】
前記コアが前記データのキャッシングを担っているかどうかを判断する前記ステップが、
前記データの前記メモリアドレスに基づいて、かつ前記メモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、前記データのキャッシングを担っているコアのラベリング番号を計算するステップと、
前記計算されたラベリング番号が前記コアのラベリング番号と同じである場合、前記コアが前記データのキャッシングを担っていると判断するステップと
を含む、請求項１９に記載の方法。
【請求項２１】
前記ローカルキャッシュに前記データを書き込むとき、前記データ書込み操作を実行する前記コアまたは前記リモートコアが、前記データを含んでいるキャッシュラインにダーティマークを設定するステップと、
前記マーク付けされたキャッシュラインが、前記ローカルキャッシュから置き換えられるとき、前記メモリスペースの中の対応するアドレスに前記キャッシュラインのデータを書き込むステップと
をさらに含む、請求項１９に記載の方法。
【請求項２２】
データ書き込みのための装置であって、
マルチコアプロセッサと、
前記プロセッサに操作可能に連結された非一時的コンピュータ可読媒体と
を備え、前記非一時的コンピュータ可読媒体が、前記プロセッサによってアクセスされるときに実行されるべきコンピュータ可読命令を記憶しており、前記命令は、
前記マルチコアプロセッサのコアが、データ書込み操作を実行して、書き込むべき前記データのメモリアドレスに基づいて、前記コアが前記データのキャッシングを担っているかどうかを判断するように構成されたデータ書込み操作判断モジュール、
前記コアが前記データのキャッシングを担っているとの判断に応じて、前記コアのローカルキャッシュに前記データを書き込むように構成されたローカルキャッシュ書き込みモジュール、ならびに
前記コアが前記データのキャッシングを担っていないとの判断に応じて、前記データのキャッシングを担っている前記マルチコアプロセッサのリモートコアにデータ書込み要求を送信するように構成されたリモートキャッシュ書き込みモジュールであって、前記リモートコアが、前記リモートコアのローカルキャッシュに前記データを書き込み、前記データ書込み要求が、前記データ書込み操作の書き込むべき前記データの前記メモリアドレス及び内容を含む、前記リモートキャッシュ書き込みモジュール
を備え、
前記マルチコアプロセッサが、複数のコアを備え、前記複数のコアが、それぞれのローカルキャッシュに対応し、前記複数のコアのうちの各コアのローカルキャッシュが、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、前記複数のコアのうちの各コアが、前記複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする、
前記装置。
【請求項２３】
前記データ書込み操作決定モジュールが、
前記データの前記メモリアドレスに基づいて、かつ前記メモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、前記データのキャッシングを担っているコアのラベリング番号を計算するように構成された書込みラベリング番号計算サブモジュールと、
前記計算されたラベリング番号が前記コアのラベリング番号と同じである場合、前記コアが前記データのキャッシングを担っていると判断するように構成されたラベリング番号判断サブモジュールと
を備える、請求項２２に記載の装置。
【請求項２４】
前記ローカルキャッシュ書き込みモジュールが、前記ローカルキャッシュに前記データを書き込むときに前記データを含んでいるキャッシュラインにダーティマークを設定するように構成されたマーク設定サブモジュールを備え、前記リモートキャッシュ書き込みモジュールが、前記ローカルキャッシュに前記データを書き込むときに前記データを含んでいるキャッシュラインにダーティマークを設定するように構成されたマーク設定サブモジュールを備え、
当該装置が、前記マーク付けされたキャッシュラインが前記ローカルキャッシュから置き換えられると、前記メモリスペースの中の対応するアドレスに前記キャッシュラインのデータを書き込むように構成されたメモリ同期モジュールをさらに備える、
請求項２２に記載の装置。
【請求項２５】
マルチコアプロセッサの使用によるメモリ割当ての方法であって、
マルチコアプロセッサのコアからメモリ割当て要求を受信するステップと、
メモリスペースをキャッシングのためのアドレスに分割するための所定のポリシーに基づいて、前記コアが前記データを担っているメモリスペースにおけるアドレス範囲を決定するステップと、
前記メモリ割当て要求における割り当てるべきメモリユニットの量に基づいて、前記アドレス範囲に対応するメモリスペースから前記コアに前記メモリユニットの量を割り当てるステップと
を含む、前記方法。
【請求項２６】
マルチコアプロセッサの使用によるメモリ割当てのための装置であって、
マルチコアプロセッサのコアからメモリ割当て要求を受信するように構成された要求受信モジュールと、
メモリスペースをキャッシングのためのアドレスに分割するための所定のポリシーに基づいて、前記コアがデータのキャッシングを担っているメモリスペースにおけるアドレス範囲を決定するように構成されたアドレス範囲決定モジュールと、
前記メモリ割当て要求における割り当てるべきメモリユニットの量に基づいて、前記アドレス範囲に対応するメモリスペースから、前記コアに前記メモリユニットの量を割り当てるように構成されたメモリ割当て実行モジュールと
を備え、
前記マルチコアプロセッサが、複数のコアを備え、前記複数のコアが、それぞれのローカルキャッシュに対応し、前記複数のコアのうちの各コアのローカルキャッシュが、メモリスペースにおける異なるアドレス範囲におけるデータのキャッシングを担い、前記複数のコアのうちの各コアが、前記複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする、
前記装置。
【請求項２７】
複数のコアを備えるマルチコアプロセッサであって、前記複数のコアが、それぞれのローカルキャッシュに対応し、前記複数のコアのうちの各コアのローカルキャッシュが、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、前記複数のコアのうちの各コアが、前記複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする、前記マルチコアプロセッサと、
前記マルチコアプロセッサの前記複数のコアに連結されて前記メモリスペースから前記複数のコアにデータを提供するメモリコントローラと、
前記メモリコントローラに連結されて前記複数のコアによってアクセスすべきデータを記憶するメモリスペースと
を備える、システム。
【請求項２８】
前記複数のコアのうちの各コアが、前記コアのローカルキャッシュに対応するアドレス範囲において前記メモリスペースにおけるメモリセクションにアクセスする、請求項２７に記載のシステム。
【請求項２９】
キャッシュ一貫性をサポートするマルチコアプロセッサであって、
少なくとも２つのコアグループに分割される複数のコアと、
前記コアグループに対応する複数のローカルキャッシュと
を備え、
コアグループのローカルキャッシュが、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、コアグループが、相互接続バスを介して、別のコアグループのローカルキャッシュにおけるデータにアクセスする、
前記マルチコアプロセッサ。
【請求項３０】
プログラム命令を内部に埋め込んだ非一時的コンピュータ可読記憶媒体であって、前記プログラム命令は、デバイスの１つまたは複数のプロセッサによって実行されると、前記デバイスに、データ読み取りのための方法を実行させ、前記方法が、
データ読取り操作を実行するマルチコアプロセッサのコアが、読み取るべきデータのメモリアドレスに基づいて、前記コアが前記データのキャッシングを担っているかどうかを判断することと、
前記コアが前記データのキャッシングを担っているとの判断に応じて、前記コアのローカルキャッシュから前記データを読み取ることと、
前記コアが前記データのキャッシングを担っていないとの判断に応じて、前記データのキャッシングを担っている前記マルチコアプロセッサのリモートコアにデータ読取り要求を送信し、前記リモートコアによって返信されるデータを受信することと
を含み、
前記マルチコアプロセッサが、複数のコアを備え、前記複数のコアが、それぞれのローカルキャッシュに対応し、前記複数のコアのうちの各コアのローカルキャッシュが、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、前記複数のコアのうちの各コアが、前記複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする、
前記非一時的コンピュータ可読記憶媒体。
【請求項３１】
プログラム命令を内部に埋め込んだ非一時的コンピュータ可読記憶媒体であって、前記プログラム命令は、デバイスの１つまたは複数のプロセッサによって実行されると、前記デバイスに、データ書き込みのための方法を実行させ、前記方法が、
データ書込み操作を実行するマルチコアプロセッサのコアが、書き込むべきデータのメモリアドレスに基づいて、前記コアが前記データのキャッシングを担っているかどうかを判断することと、
前記コアが前記データのキャッシングを担っているとの判断に応じて、前記コアの前記ローカルキャッシュに前記データを書き込むことと、
前記コアが前記データのキャッシングを担っていないとの判断に応じて、前記データのキャッシングを担っている前記マルチコアプロセッサのリモートコアにデータ書込み要求を送信することであって、前記リモートコアが、前記リモートコアのローカルキャッシュに前記データを書き込み、前記データ書込み要求が、前記データ書込み操作の書き込むべき前記データの前記メモリアドレス及び内容を含む、送信することと
を含み、
前記マルチコアプロセッサが、複数のコアを備え、前記複数のコアが、それぞれのローカルキャッシュに対応し、前記複数のコアのうちの１つのコアのローカルキャッシュが、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、前記複数のコアのうちの１つのコアが、相互接続バスを介して、前記複数のコアのうちの別のコアのローカルキャッシュにおけるデータにアクセスする、
前記非一時的コンピュータ可読記憶媒体。
【請求項３２】
プログラム命令を内部に埋め込んだ非一時的コンピュータ可読記憶媒体であって、前記プログラム命令は、デバイスの１つまたは複数のプロセッサによって実行されると、前記デバイスに、メモリ割当てのための方法を実行させ、前記方法が、
マルチコアプロセッサのコアからメモリ割当て要求を受信するステップと、
メモリスペースをキャッシングするためのアドレスに分割するための所定のポリシーに基づいて、前記コアが前記データのキャッシングを担っているメモリスペースにおけるアドレス範囲を決定するステップと、
前記メモリ割当て要求における割り当てるべきメモリユニットの量に基づいて、前記アドレス範囲に対応するメモリスペースから、前記コアに前記メモリユニットの量を割り当てるステップと
を含み、
前記マルチコアプロセッサが、複数のコアを備え、前記複数のコアが、それぞれのローカルキャッシュに対応し、前記複数のコアのうちの各コアのローカルキャッシュが、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、前記複数のコアのうちの１つのコアが、前記複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする、
前記非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、参照することにより全体が本明細書に組み込まれる２０１４年１２月１０日に出願された中国特許出願第２０１４１０７５６７３２．３号に対する利益を主張する。
【０００２】
本発明は、一般に、マルチコアプロセッサに関し、より詳細には、キャッシュ一貫性をサポートするマルチコアプロセッサに関する。本願は、マルチコアプロセッサの使用による、データ読み取りのための方法及び装置、データ書き込みのための方法及び装置、ならびにメモリ割当てのための方法及び装置と、キャッシュ一貫性をサポートするマルチコアプロセッサ及びシステムとを提供する。
【背景技術】
【０００３】
コンピュータ技術の開発中、メインメモリ（すなわち、物理メモリまたは一般的にいわれるメモリ）は、ＣＰＵの速度よりも、常に、はるかに遅い速度でデータを記憶し、読み出し、それによって、ＣＰＵの高い処理能力を最大限に活かすことがない。ＣＰＵとメインメモリとの不釣り合いな処理速度をバッファリングするために、それらの間に高速キャッシュ（すなわち、一般にいわれるキャッシュ）が導入され得る。
【０００４】
キャッシュの記憶容量は、メインメモリの記憶容量よりもはるかに小さくなりがちであるが、キャッシュは、ＣＰＵの速度に釣り合う速度でデータを記憶し、読み出すことができる。プログラムの局所性の原理によれば、ＣＰＵによって現在アクセスされている命令及びデータは、その後、複数回アクセスされることが多く、同じことが、隣接するメモリセクションについても言える。そのため、コンピュータハードウェアは、通常、ＣＰＵがメモリの中のデータにアクセスしようとするとき、まずキャッシュにアクセスするように、ＣＰＵによって現在アクセスされているデータに関係するメモリセクションの中のデータを、自動的にキャッシュにロードするように設計されている。キャッシュミスが存在する場合には、ＣＰＵは、メモリにアクセスする。この手法を使用すると、ＣＰＵが直接、メモリにアクセスすることが最大限抑えられ、それによって、コンピュータシステムの全体的な処理速度を高めることができる。
【０００５】
近年、コンピュータシステムは、マルチコアプロセッサの方向に進化している。そのようなシステムの典型的なアーキテクチャが、図１に示されている。コンピュータシステム１０は、複数のＣＰＵコア１２＿０、１２＿１、…、１２＿ｎ−１を含み、ここで、ｎは、１以上の自然数である。各コアは、ＣＰＵコア処理の速度向上を目的として、そのそれぞれのキャッシュ、たとえば、Ｌ１キャッシュ１４＿１、１４＿２、１４＿３、…、１４＿ｎ、及びＬ２キャッシュ１６＿１、１６＿２、１６＿３、…、１６＿ｎに、アクセスすべきデータを記憶する。複数のコアのプライベートキャッシュによるこの方式により、いずれのデータも記憶されうるので、共有キャッシュが、キャッシュ冗長性を低減させるために導入される。通常、システム１０はまた、システムの中のメモリコントローラ２０にアクセスする前に、コアすべてによって共有される、キャッシュインデックス２２、及び最終レベルのキャッシュ（ＬＬＣ）１８を含む。そのような共有キャッシュは、複数のコア間でデータを共有化し、通信遅延を抑え、同時にデータ冗長性を抑え、キャッシュスペース利用効率を高めることができる。
【０００６】
プライベートキャッシュが、同じデータの複数のコピーをキャッシングすることにつながるという事実により、データ一貫性を確保するために、現在の技術は、通常、インデックスベースの一貫性プロトコルを利用する。たとえば、キャッシュインデックスは、どのプライベートキャッシュがどのデータのコピーを有するかを記録していることから、相異なるコアの相異なるプライベートキャッシュの中のデータを追跡するのに利用可能であり、そのようなキャッシュインデックスに基づいて、データ読取り及びデータ書込み操作が実行されることになる。たとえば、ＣＰＵコアが、その対応するプライベートキャッシュにデータを書き込む必要があるとき、まず、ＣＰＵコアは、他のどのプライベートキャッシュもまた、そのデータのコピーを記憶しているかに関してキャッシュインデックスを参照し、対応するデータをＮＵＬＬとして設定するようにそれらのプライベートキャッシュに通知し、次いで、データ書込み操作を実行して、キャッシュデータ一貫性を確保する。
【０００７】
しかしながら、上述のシステム及びキャッシュインデックスベースの一貫性プロトコルには問題がある。第１に、キャッシュインデックスが、相異なるＣＰＵのプライベートキャッシュにおけるデータの追跡を続けることにより、ＣＰＵコアの数の増加が、結果的に、キャッシュインデックスのサイズの増大を招き、より多くのキャッシュスペースを占有し、プロセッサのコアの数の拡張可能性に深刻な影響をもたらす。
【０００８】
第２に、プライベートキャッシュと共有キャッシュとの間に不可避な対立が存在する。プライベートキャッシュが、同じデータの複数のコピーを有することは、キャッシュ使用効率の低下につながる。共有キャッシュは、データ冗長性、及びキャッシュスペース使用量の増加を低減させ得るが、コアの数が増加すること、及びＬＬＣがあらゆるＣＰＵコアと相互接続することにより、ＬＬＣ設計に固有のハードウェア関連のレイテンシが増加し、キャッシュレイテンシの増加が生じることになる。
【０００９】
最後に、ＣＰＵコアすべてのプライベートキャッシュを分析するインデックスベースのデータ一貫性プロトコルの必要性は、制約されたデータ読取り及びデータ書込み操作につながる。たとえば、あらゆるデータ読取り操作は、現在、アクセスされているデータが、他のＣＰＵコアのプライベートキャッシュにおけるコピーと確実に一致しているようにするために、ＬＬＣ及びキャッシュインデックスを訪れなくてはならず、結果的に、データのアクセス性の低下を招く。
【発明の概要】
【００１０】
本開示は、キャッシュ一貫性をサポートするマルチコアプロセッサを提供し、現在の技術ではマルチコアプロセッサのキャッシュインデックスが、大量のキャッシュスペースを消費し、データのアクセス性に影響をもたらし、共有キャッシュにアクセスするときにレイテンシの増加を引き起こすという諸問題を解決する。本開示はさらに、すべてマルチコアプロセッサの使用による、データ読み取りのための方法及び装置、データ書き込みのための方法及び装置、メモリ割当てのための方法及び装置、ならびにシステムを提供する。
【００１１】
本開示の例示的な実施形態によれば、キャッシュ一貫性をサポートするマルチコアプロセッサは、複数のコアを備え、この複数のコアは、それぞれのローカルキャッシュに対応する。複数のコアのうちの各コアのローカルキャッシュは、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、複数のコアのうちの各コアは、複数のコアのうちの別のコアのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする。
【００１２】
代替の実施形態の場合、マルチコアプロセッサの複数のコアは、コアのそれぞれのローカルキャッシュに対応するアドレス範囲におけるメモリスペースの中のメモリセクションにアクセスする。別の代替の実施形態の場合、マルチコアプロセッサは、複数のコアに操作可能に連結されてメモリスペースから複数のコアにデータを提供するメモリコントローラを含む。さらなる別の代替の実施形態の場合、マルチコアプロセッサの複数のコアのうちの各コアのローカルキャッシュは、レベル１（Ｌ１）キャッシュ及びレベル２（Ｌ２）キャッシュを含む。
【００１３】
本開示の別の例示的な実施形態によれば、上述のマルチコアプロセッサの使用によるデータ読み取りの方法は、データ読取り操作を実行すべきマルチコアプロセッサのコアが、読み取るべきデータのメモリアドレスに基づいて、コアがデータのキャッシングを担っているかどうかを判断するステップを含む。この方法はまた、コアがデータのキャッシングを担っているとの判断に応じて、コアのローカルキャッシュからデータを読み取るステップ、そうでない場合、データのキャッシングを担っているマルチコアプロセッサのリモートコアにデータ読取り要求を送信し、リモートコアによって返信されるデータを受信するステップを含む。
【００１４】
代替の実施形態の場合、コアが、読み取るべきデータのメモリアドレスに基づいて、データのキャッシングを担っているかどうかを判断する上述のステップは、データのメモリアドレスに基づいて、かつメモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、データのキャッシングを担っているコアのラベリング番号を計算することを含む。このステップは、計算されたラベリング番号がコアのラベリング番号と同じである場合、コアがデータのキャッシングを担っていると判断することをさらに含む。
【００１５】
別の代替の実施形態の場合、メモリスペースを対応するキャッシングのためのアドレスに分割するための上述の所定のポリシーは、ＭＥＭ／Ｎ*ｎからＭＥＭ／Ｎ*（ｎ＋１）−１までのアドレス範囲におけるメモリスペースの中のデータのキャッシングを担うべき複数のコアのうちの各コアに向けられ、ＭＥＭはメモリスペースの容量であり、Ｎは複数のコアの総数であり、ｎは複数のコアのうちの各コアのラベリング番号であり、ｎは０からＮ−１までの範囲の値を有する。
【００１６】
さらなる別の代替の実施形態の場合、データのキャッシングを担っているコアの上述のラベリング番号は、数式：
Ｃｏｒｅ  Ｎｏ．＝（Ａ*Ｎ／ＭＥＭ）ｍｏｄ  Ｎ
を用いて計算され得、ただし、Ｃｏｒｅ  Ｎｏ．はコアのラベリング番号を示し、Ａはデータのメモリアドレスである。
【００１７】
さらなる別の代替の実施形態の場合、コアのローカルキャッシュからデータを読み取る上述のステップは、データのメモリアドレスに基づいて、コアのローカルキャッシュにおいてデータがキャッシュされているかどうかを判断することを含む。このステップは、データがコアのローカルキャッシュにおいてキャッシュされているとの判断に応じて、コアのローカルキャッシュからデータを読み取り、そうでない場合、メモリスペースにアクセスしてデータを読み取り、データを含んでいるメモリブロックをコアのローカルキャッシュにロードすることをさらに含む。
【００１８】
別の代替の実施形態の場合、データのキャッシングを担っているマルチコアプロセッサのリモートコアにデータ読取り要求を送信し、リモートコアによって返信されるデータを受信する上述のステップは、データのキャッシングを担っているリモートコアにデータ要求を送信することを含み、この要求は、データのメモリアドレス、及びデータ要求を送信するコアのラベリング番号を含む。このステップはまた、リモートコアが、リモートコアのローカルキャッシュからデータを読み取ることと、リモートコアが、データ要求を送信するコアにデータを返信することとを含む。
【００１９】
さらなる別の代替の実施形態の場合、リモートコアが、そのローカルキャッシュからデータを読み取る上述のステップは、リモートコアが、データのメモリアドレスに基づいて、データがリモートコアのローカルキャッシュにおいてキャッシュされているかどうかを判断することを含む。このステップはまた、データがリモートコアのローカルキャッシュにおいてキャッシュされているとの判断に応じて、リモートコアのローカルキャッシュからデータを読み取り、そうでない場合、データのメモリアドレスに基づいて、メモリスペースにアクセスしてデータを読み取り、データを含んでいるメモリブロックをリモートコアのローカルキャッシュにロードすることを含む。
【００２０】
本開示の別の例示的な実施形態によれば、上述のマルチコアプロセッサの使用によるデータ読み取りのための装置は、データ読取り操作を実行すべきマルチコアプロセッサのコアが、読み取るべきデータのメモリアドレスに基づいて、コアがデータのキャッシングを担っているかどうかを判断するように構成されたデータ読取り操作判断モジュールを含む。この装置は、コアがデータのキャッシングを担っているとの判断に応じて、コアのローカルキャッシュからデータを読み取るように構成されたローカルキャッシュ読み取りモジュールをさらに含む。装置はまた、コアがデータのキャッシングを担っていないとの判断に応じて、データのキャッシングを担っているマルチコアプロセッサのリモートコアに、データ読取り要求を送信し、リモートコアによって返信されるデータを受信するように構成されたリモートキャッシュ読み取りモジュールを含む。
【００２１】
代替の実施形態の場合、上述のデータ読取り操作決定モジュールは、データのメモリアドレスに基づいて、かつメモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、データのキャッシングを担っているコアのラベリング番号を計算するように構成された読取りラベリング番号計算サブモジュールを含む。データ読取り操作判断モジュールは、計算されたラベリング番号がコアのラベリング番号と同じである場合、コアがデータのキャッシングを担っていると決定するように構成されたラベリング番号決定サブモジュールをさらに含む。
【００２２】
別の代替の実施形態の場合、読取りラベリング番号計算サブモジュールの上述の所定のポリシーは、ＭＥＭ／Ｎ*ｎからＭＥＭ／Ｎ*（ｎ＋１）−１までのアドレス範囲におけるメモリスペースの中のデータのキャッシングを担うべき複数のコアのうちの各コアに向けられ、ＭＥＭはメモリスペースの容量であり、Ｎは複数のコアの総数であり、ｎは複数のコアのうちの１つのコアのラベリング番号であり、ｎは０からＮ−１までの範囲の値を有する。
【００２３】
さらなる別の代替の実施形態の場合、上述の読取りラベリング番号計算サブモジュールは、数式：
Ｃｏｒｅ  Ｎｏ．＝（Ａ*Ｎ／ＭＥＭ）ｍｏｄ  Ｎ
を用いて、データのキャッシングを担っているコアのラベリング番号を計算し、Ｃｏｒｅ  Ｎｏ．はコアのラベリング番号を示し、Ａはデータのメモリアドレスである。
【００２４】
さらなる別の代替の実施形態の場合、上述のローカルキャッシュ読み取りモジュールは、データのメモリアドレスに基づいて、データがコアのローカルキャッシュにおいてキャッシュされているかどうかを判断するように構成されたローカルキャッシュ判断サブモジュールを含む。ローカルキャッシュ読み取りモジュールは、データがコアのローカルキャッシュにおいてキャッシュされているとの判断に応じて、コアのローカルキャッシュからデータを読み取るように構成されたキャッシュ読取り実行サブモジュールと、データがコアのローカルキャッシュにおいてキャッシュされていないとの決定に応答して、データのメモリアドレスに基づいて、メモリスペースにアクセスしてデータを読み取り、データを含んでいるメモリブロックをコアのローカルキャッシュにロードするように構成されたメモリ読取りサブモジュールとをさらに含む。
【００２５】
別の代替の実施形態の場合、上述のリモートキャッシュ読み取りモジュールは、データのキャッシングを担っているリモートコアにデータ要求を送信するように構成された要求送信サブモジュールを含み、この要求は、データのメモリアドレス、及びデータ要求を送信するコアのラベリング番号を含む。リモートキャッシュ読み取りモジュールは、リモートコアがリモートコアのローカルキャッシュからデータを読み取るように構成されたリモート読取りサブモジュールと、リモートコアがデータ要求を送信するコアにデータを返信するように構成されたデータ返信サブモジュールとをさらに含む。
【００２６】
さらなる別の代替の実施形態の場合、上述のリモート読取りサブモジュールは、リモートコアが、データのメモリアドレスに基づいて、データがリモートコアのローカルキャッシュにおいてキャッシュされているかどうかを判断するように構成されたリモートキャッシュ判断サブモジュールを含む。リモート読取りサブモジュールは、データがリモートコアのローカルキャッシュにおいてキャッシュされているとの判断に応じて、リモートコアのローカルキャッシュからデータを読み取るように構成されたリモートキャッシュ読取り実行サブモジュールと、データがリモートコアのローカルキャッシュにおいてキャッシュされていないとの判断に応じて、データのメモリアドレスに基づいて、メモリスペースにアクセスしてデータを読み取り、データを含んでいるメモリブロックをリモートコアのローカルキャッシュにロードするように構成されたリモートメモリ読取りサブモジュールとをさらに含む。
【００２７】
本開示のさらなる別の例示的な実施形態によれば、上述のマルチコアプロセッサの使用によるデータ書き込みの方法は、データ書込み操作を実行すべきマルチコアプロセッサのコアが、書き込むべきデータのメモリアドレスに基づいて、そのコアがデータのキャッシングを担っているかどうかを判断するステップを含む。この方法はまた、コアがデータのキャッシングを担っているとの判断に応じて、コアのローカルキャッシュにデータを書き込み、そうでない場合、データのキャッシングを担っているマルチコアプロセッサのリモートコアにデータ書込み要求を送信するステップを含み、リモートコアは、リモートコアのローカルキャッシュにデータを書き込み、ここで、データ書込み要求は、データ書込み操作の書き込むべきデータのメモリアドレス及び内容を含む。
【００２８】
代替の実施形態の場合、コアが、データのキャッシングを担っているかどうかを判断する上述のステップは、データのメモリアドレスに基づいて、かつメモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、データのキャッシングを担っているコアのラベリング番号を計算することを含む。このステップはまた、計算されたラベリング番号がコアのラベリング番号と同じである場合、コアがデータのキャッシングを担っていると判断することを含む。
【００２９】
別の代替の実施形態の場合、データ書き込みの方法は、ローカルキャッシュにデータを書き込むとき、データ書込み操作を実行すべきコア、またはリモートコアが、データを含んでいるキャッシュラインにダーティマークを設定するステップと、マーク付けされたキャッシュラインが、ローカルキャッシュから置き換えられるとき、キャッシュラインのデータをメモリスペースの中の対応するアドレスに書き込むステップとをさらに含む。
【００３０】
本開示のさらなる別の例示的な実施形態によれば、上述のマルチコアプロセッサの使用によるデータ書き込みのための装置は、データ書込み操作を実行するマルチコアプロセッサのコアが、書き込むべきデータのメモリアドレスに基づいて、そのコアがデータのキャッシングを担っているかどうかを判断するように構成されたデータ書込み操作判断モジュールを含む。この装置は、コアがデータのキャッシングを担っているとの判断に応じて、コアのローカルキャッシュにデータを書き込むように構成されたローカルキャッシュ書き込みモジュールをさらに含む。装置はまた、コアがデータのキャッシングを担っていないとの判断に応じて、データのキャッシングを担っているマルチコアプロセッサのリモートコアにデータ書込み要求を送信するように構成されたリモートキャッシュ書き込みモジュールを含む。リモートコアは、リモートコアのローカルキャッシュにデータを書き込み、ここで、データ書込み要求は、データ書込み操作の書き込むべきデータのメモリアドレス及び内容を含む。
【００３１】
代替の実施形態の場合、上述のデータ書込み操作判断モジュールは、データのメモリアドレスに基づいて、かつメモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、データのキャッシングを担っているコアのラベリング番号を計算するように構成された書込みラベリング番号計算サブモジュールを含む。データ書込み操作判断モジュールはまた、計算されたラベリング番号がコアのラベリング番号と同じである場合、コアがデータのキャッシングを担っていると決定するように構成されたラベリング番号決定サブモジュールを含む。
【００３２】
別の代替の実施形態の場合、上述のローカルキャッシュ書き込みモジュールと、上述のリモートキャッシュ書き込みモジュールとはともに、ローカルキャッシュにデータを書き込むとき、データを含んでいるキャッシュラインにダーティマークを設定するように構成されたマーク設定サブモジュールを含み、これに対応して、装置はまた、マーク付けされたキャッシュラインがローカルキャッシュから書き換えられるとき、メモリスペースの中の対応するアドレスにキャッシュラインのデータを書き込むように構成されたメモリ同期モジュールを含む。
【００３３】
本開示のさらなる別の例示的な実施形態によれば、上述のマルチコアプロセッサの使用によるメモリ割当ての方法は、マルチコアプロセッサのコアからメモリ割当て要求を受信するステップを含む。この方法はまた、メモリスペースをキャッシングのためのアドレスに分割するための所定のポリシーに基づいて、コアがデータのキャッシングを担っているメモリスペースの中のアドレス範囲を決定するステップ、ならびにメモリ割当て要求における割り当てるべきメモリユニットの量に基づいて、そのアドレス範囲に対応するメモリスペースからコアにそのメモリユニットの量を割り当てるステップを含む。
【００３４】
本開示の別の例示的な実施形態によれば、上述のマルチコアプロセッサの使用によるメモリ割当てのための装置は、マルチコアプロセッサのコアからメモリ割当て要求を受信するように構成された要求受信モジュールを含む。この装置はまた、メモリスペースをキャッシングのためのアドレスに分割するための所定のポリシーに基づいて、コアがデータのキャッシングを担っているメモリスペースの中のアドレス範囲を決定するように構成されたアドレス範囲決定モジュールを含む。装置は、メモリ割当て要求における割り当てるべきメモリユニットの量に基づいて、そのアドレス範囲に対応するメモリスペースからコアにそのメモリユニットの量を割り当てるように構成されたメモリ割当て実行モジュールをさらに含む。
【００３５】
本開示のさらなる別の例示的な実施形態によれば、システムは、上述のマルチコアプロセッサと、マルチコアプロセッサの複数のコアに連結されてメモリスペースから複数のコアにデータを提供するメモリコントローラと、メモリコントローラに連結されて複数のコアによってアクセスすべきデータを記憶するメモリスペースとを含む。
【００３６】
代替の実施形態の場合、上述のシステムの複数のコアは、コアのローカルキャッシュに対応するアドレス範囲におけるメモリスペースの中のメモリセクションにアクセスする。
【００３７】
本開示のさらなる別の実施形態によれば、マルチコアプロセッサは、少なくとも２つのコアグループに分割される複数のコアと、コアグループに対応する複数のローカルキャッシュとを含む。コアグループのローカルキャッシュは、メモリスペースの中の相異なるアドレス範囲におけるデータのキャッシングを担い、コアグループは、別のコアグループのローカルキャッシュにおけるデータに相互接続バスを介してアクセスする。
【００３８】
現在の技術との比較において、本開示による諸実施形態によって提供される主な相違及び効果は、以下である。まず、キャッシュ一貫性をサポートするマルチコアプロセッサと、その使用によるデータ読み取り及び書き込みの方法は、従来のマルチコアプロセッサシステムから、キャッシュインデックスと共有キャッシュとを排除することを可能にする。メモリスペースをＣＰＵコアにマッピングするための所定のポリシーの使用によって、相異なる対応するアドレス範囲におけるメモリスペースの中のデータのキャッシングを相異なるコアに担わせることにより、キャッシュの中に複数のデータコピーが確実に存在しないことになる。したがって、キャッシュインデックスが存在しない場合であっても、キャッシュ一貫性は、依然として、実現可能であり、同時に、キャッシュスペースの使用量が保護され、データのアクセス性が高まる。さらには、各コアは、通信相互接続バスを介して、他のコアのローカルキャッシュにおけるデータにアクセスすることができるので、プライベートキャッシュは、コア間で共有され得、プライベートキャッシュと共有キャッシュとの間の対立を解決するだけでなく、プライベートキャッシュに固有の低いデータレイテンシを最大にし、システム機能性全体を高める。その上、ＬＬＣの排除により、相互接続アーキテクチャは、簡略化され得、それによって、エネルギー及びチップ表面積の使用量が保護されるとともに、キャッシュアクセスが高速化される。
【００３９】
本開示の１つまたは複数の実施形態の詳細を、添付の図面及び以下の説明に記載する。本開示の他の特徴、目的、及び利点は、説明、図面から、及び特許請求の範囲から明らかになろう。
【００４０】
本明細に組み込まれ、本明細書の一部を形成し、同様の数字が同様の要素を示す添付の図面は、本開示の実施形態を例示し、説明と併せて、本開示の原理を説明するのに役立つ。
【図面の簡単な説明】
【００４１】
【図１】従来技術のマルチコアプロセッサのシステムのブロック図である。
【図２】本開示の一実施形態による、キャッシュ一貫性をサポートするマルチコアプロセッサの例示的なシステムのブロック図である。
【図３】本開示の一実施形態による、マルチコアプロセッサの使用によるデータ読み取りの方法のフローチャートである。
【図４】本開示の一実施形態による、ローカルキャッシュがデータのキャッシングを担っているかどうかを決定する方法のフローチャートである。
【図５】本開示の一実施形態による、マルチコアプロセッサの使用によるデータ読み取りのための例示的な装置のブロック図である。
【図６】本開示の第２の実施形態による、マルチコアプロセッサの使用によるデータ書き込みの例示的な方法のフローチャートである。
【図７】本開示の一実施形態による、マルチコアプロセッサの使用によるデータ書き込みのための例示的な装置のブロック図である。
【図８】本開示の一実施形態による、マルチコアプロセッサの使用によるメモリ割当ての例示的な方法のフローチャートである。
【図９】本開示の一実施形態による、マルチコアプロセッサの使用によるメモリ割当てのための例示的な装置のブロック図である。
【図１０】本開示の一実施形態による、システムのブロック図である。
【図１１】本開示の一実施形態による、キャッシュ一貫性をサポートするマルチコアの例示的なシステムのブロック図である。
【発明を実施するための形態】
【００４２】
以下の説明においては、多数の具体的な詳細を、本開示の完全な理解を提供するために記載する。しかしながら、本開示が、これらの具体的な詳細がなくても実施可能であることは、当業者には明らかになろう。本明細書における説明及び表現は、当該分野において経験を積み又は熟練した者が、自分の仕事の要旨を他の当業者に最も効果的に伝えるのに使用される共通の手段である。他の例においては、よく知られている方法、手順、構成要素、及び回路機構については、本開示の不必要に不明瞭な態様を避けるために、詳細には説明していない。
【００４３】
本明細書では、「１つの実施形態（ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ）」または「一実施形態（ａｎ  ｅｍｂｏｄｉｍｅｎｔ）」に対する参照は、実施形態に関連して説明される特定の特徴、構造、または特性が、本開示の少なくとも１つの実施形態に含まれ得ることを意味している。本明細書における様々な箇所の「１つの実施形態においては（ｉｎ  ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ）」という語句の出現は、必ずしもすべて、同じ実施形態を参照しているわけでも、または他の実施形態の相互排他的な別個もしく代替の実施形態であるわけでもない。本明細書に使用される「上側（ｕｐｐｅｒ」、「下側（ｌｏｗｅｒ）」、「上部（ｔｏｐ）」、底部（ｂｏｔｔｏｍ）」、「中間（ｍｉｄｄｌｅ）」、「上向き（ｕｐｗａｒｄｓ）」、及び「下向き（ｄｏｗｎｗａｒｄｓ）」という用語は、説明を目的として相対的な位置を提供するように意図されており、絶対的座標系を指定するように意図するものではない。さらには、本開示の１つまたは複数の実施形態を表す処理フローチャートまたは図表におけるブロックの順序は、本質的に何らかの特定の順序を示すものでも、本開示における何らかの限定を暗示するものでもない。
【００４４】
本開示の実施形態により、マルチコアプロセッサと、マルチコアプロセッサの使用によるデータ読み取りのための方法及び装置と、マルチコアプロセッサの使用によるデータ書き込みのための方法及び装置と、マルチコアプロセッサの使用によるメモリ割当てのための方法及び装置と、マルチコアプロセッサのシステムとが例示されている。本開示の実施形態は、図２〜図１１を参照してここに論じられる。しかしながら、当業者なら、これらの図を参照してここに与えられる詳細な説明は、説明のためのものであり、本開示は、これらの限定的な実施形態を越えて広がることを容易に認識するであろう。
【００４５】
図２を参照すると、本開示の一実施形態による、キャッシュ一貫性をサポートするマルチコアプロセッサの例示的なシステムのブロック図が示されている。キャッシュ一貫性サポーティングマルチコアプロセッサ２００は、複数のコア２０１−１、２０１−２、２０１−３、…、２０１−ｎを含み、ただし、ｎは自然数である。複数のコアはそれぞれ、それぞれのＣＰＵ２４０＿１、２４０＿２、２４０＿３、…、２４０＿ｎに加えて、それぞれのＬ１キャッシュ２６０＿１、２６０＿２、２６０＿３、…、２６０＿ｎ、及びそれぞれのＬ２キャッシュ２８０＿１、２８０＿２、２８０＿３、…、２８０＿ｎを含む、２つのレベルのローカルキャッシュを有する。マルチコアプロセッサ２００はまた、複数のコアがメモリスペースの中のデータにアクセスするためにメモリコントローラ２０２を含むことができる。複数のコアのうちの異なるコアのローカルキャッシュは、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担っている。複数のコアの各コアは、相互接続バスまたはメインバス（図示せず）を介して、複数のコアのうちの別のコアのローカルキャッシュにおけるデータにアクセスする。
【００４６】
従来のマルチコアプロセッサは、キャッシュの中のデータ一貫性を維持することを目的として、キャッシュインデックスを維持し、そのようなキャッシュインデックスに頻繁にアクセスするために、一定量のキャッシュスペースを専有する。キャッシュ間のデータ矛盾の裏にある理由のうちの１つは、プライベートキャッシュ（すなわち、コアのローカルキャッシュ）を有する相異なる処理コアは、データの複数のコピーの可能性につながるという事実にある。この技術的な問題を解決するために、本開示は、キャッシュインデックスの使用を廃止する。代わりに、異なるコアのローカルキャッシュが、メモリスペースの中の相異なるアドレス範囲にあるデータのキャッシングを担っている場合、メモリスペースの中のデータは、１つのコアの１つのローカルキャッシュにおいてのみキャッシュされ得、それにより、キャッシュ一貫性は、キャッシュインデックスがなくてもなお維持される。例示を簡潔にするために、コアと、メモリスペースの中のそれらの対応するキャッシングアドレス範囲との関係性は、本明細書においては、ユニタリメモリマッピング機構（ｕｎｉｔａｒｙ  ｍｅｍｏｒｙ  ｍａｐｐｉｎｇ  ｍｅｃｈａｎｉｓｍ）と呼ばれる。
【００４７】
メモリアドレスをキャッシングのためのアドレス範囲に分割するための様々な手法が実施され得る。メモリの中のデータにアクセスする効率性を向上させるため、ならびにオペレーティングシステムによるメモリ割当て及び管理から結果的に生じる過度なメモリ断片化を回避するために、通常、メモリアドレスは、処理コアの数に従って、複数の連続するセクションに分割される。あるコアが、メモリスペースにおけるセクションのうちの１つの中のデータのキャッシングを担い、異なるコアは、異なるメモリセクションのデータのキャッシングを担うように予め指定され得る。
【００４８】
たとえば、マルチコアプロセッサが、２５６個のコア（Ｎ＝２５６）を有し、そのメモリ容量が、１ＴＢｙｔｅ（ＭＥＭ＝１ＴＢ）であり、メモリアドレスが、０ｘ００  ００００  ００００から０ｘＦＦ  ＦＦＦＦ  ＦＦＦＦまでの１６進形式で表される場合、メモリアドレスは、コアの数Ｎに従って分割され、すなわち、各メモリセグメントが１ＴＢｙｔｅ／２５６＝４ＧＢｙｔｅの大きさを有するように、２５６個の連続したメモリセグメントに分割され、それにより各メモリセグメントは、１ＴＢｙｔｅ／２５６＝４ＧＢｙｔｅの大きさを有する。マルチコアプロセッサの各コアは、ＭＥＭ／Ｎ*ｎからＭＥＭ／Ｎ*（ｎ＋１）−１までのアドレス範囲におけるデータのキャッシングを担い、ただし、Ｎは、コアの数であり、ｎは、自然数である。以下は、コアと、キャッシングのためのメモリの中のそれぞれの対応するアドレス範囲との間のマッピング関係性を示している：
Ｃｏｒｅ  Ｎｏ．０：０ｘ００  ００００  ００００  −  ０ｘ００  ＦＦＦＦ  ＦＦＦＦ
Ｃｏｒｅ  Ｎｏ．１：０ｘ００  ００００  ００００  −  ０ｘ０１  ＦＦＦＦ  ＦＦＦＦ
Ｃｏｒｅ  Ｎｏ．２：０ｘ００  ００００  ００００  −  ０ｘ０２  ＦＦＦＦ  ＦＦＦＦ
・・・
Ｃｏｒｅ  Ｎｏ．２５５：０ｘ００  ００００  ００００  −  ０ｘＦＦ  ＦＦＦＦ  ＦＦＦＦ
【００４９】
メモリスペースの上述の分割の場合、たとえば、コアＮｏ．０のローカルキャッシュ、すなわち、Ｌ１キャッシュ及びＬ２キャッシュは、０ｘ００  ００００  ００００から０ｘ００  ＦＦＦＦ  ＦＦＦＦまでの範囲のメモリアドレスのデータのキャッシングを担うことになる。言い換えれば、各コアは、メモリの中の相異なるアドレス範囲にあるデータのキャッシングを担い、結果的に、キャッシュには、データの複数のコピーが存在しない。そのため、キャッシュインデックスが存在しない場合でもなお、キャッシュ一貫性は確保され、キャッシュインデックスによって占有されるキャッシュスペースは排除される。一方、特定のデータが特定のキャッシュによってのみキャッシュされているという事実により、コアは、キャッシュインデックスを参照することなく、直接、データにアクセスすることができ、したがって、データにアクセスするときの性能が高まる。
【００５０】
上述のユニタリメモリマッピング機構に基づいて、マルチコアプロセッサのコアは、相互接続されたメインバスを利用して、マルチコアプロセッサの他のコアのローカルキャッシュの中のデータにアクセスする。言い換えれば、各コアは、そのそれぞれのローカルキャッシュの中のデータにアクセスすることができるだけでなく、それはまた、複数のコアを相互接続する通信メインバスを介して、他のコアのローカルキャッシュにおけるデータにもアクセスすることができ、マルチコアプロセッサの複数のコア間のローカルキャッシュの共有化が実現される。
【００５１】
たとえば、コアＮｏ．０が読み取る必要があるデータが、コアＮｏ．１がキャッシュするためのメモリセクションに存在するとき、コアＮｏ．０は、自身のキャッシュコントローラを介して、コアＮｏ．１のキャッシュコントローラに、データ読取り要求を送信することになる。次いで、コアＮｏ．１のキャッシュコントローラは、自身のローカルキャッシュからデータを読み出し、そのデータをコアＮｏ．０へと返信する。実装においては、コアＮｏ．１が、そのローカルＬ１キャッシュ及びＬ１キャッシュにおいて、キャッシュミスを被る場合、コアＮｏ．１は、メモリスペースからデータを読み取ることになる。
【００５２】
本開示の上述の実施形態の場合、マルチコアプロセッサの各コアは、マルチコアプロセッサの他のコア間で、そのそれぞれのローカルキャッシュを共有し、ローカルキャッシュの共有化が可能になる。それは、プライベートキャッシュと共有キャッシュとの間の対立に関する現在の技法の問題を解決するだけでなく、プライベートキャッシュに固有の低いデータレイテンシからの恩恵を受けることによって、システム機能性全体もまた高める。
【００５３】
さらには、ローカルキャッシュの共有化を実現することにより、ＬＬＣは、マルチコアプロセッサから除去され得、それにより、システムの相互接続アーキテクチャが簡略化され得る。たとえば、８つのＣＰＵのシステムの場合、コアと共有キャッシュとの間の相互接続または相互通信は、約１つのＣＰＵの処理能力、及び総ＣＰＵの約半分（すなわち、４つのＣＰＵ）のチップ表面積を消費するとともに、相互通信のワイヤレイテンシに起因するＬＬＣレイテンシの合計の約半分に寄与し得る。したがって、ＬＬＣを除去することにより、相互接続または相互通信アーキテクチャを大いに簡略化することができ、エネルギーとチップ表面積との両方の使用量が温存され、キャッシュにアクセスする速度が向上する。
【００５４】
上述のハードウェアシステムの使用によって、キャッシュ一貫性とプライベートキャッシュの共有化との両方が実現可能である。コアは、自身のローカルキャッシュに他のコアのものよりも速くアクセスするということを考慮し、本開示は、各コアが、そのコアのローカルキャッシュに対応するアドレス範囲におけるメモリセクションにアクセスするときに、コアのメモリ使用量に関する代替の実施形態として、上述のシステムの使用によるマルチコアプロセッサを提供する。ここで、コアのメモリ使用量は、コアにメモリを割り当て、割り当てられたメモリから読み取り、割り当てられたメモリに書き込み、解放されたメモリ割当てを管理してオペレーティングシステムに返信する、コアによるオペレーティングシステムに対する要求を参照する。
【００５５】
具体的には、コアが、メモリ割当て要求をオペレーティングシステムに送信するとき、オペレーティングシステムは、ＮＵＭＡ（Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｒｃｈｉｔｅｃｔｕｒｅ：非一様メモリアーキテクチャ）などに類似のシステムを利用して、メモリセクションをそのコアに割り当てる。ＮＵＭＡアーキテクチャの下では、複数のプロセッサが、メモリバスを介してメモリブロックと連結して、ノードを形成する。システム全体が、多数のそのようなノードに分割され、ノードにおけるメモリはローカルメモリと呼ばれ、一方、他のノードにおけるメモリは、当該ノードに対して、外部メモリと呼ばれる。プロセッサにおいて実行するプログラムにメモリを割り当てるとき、オペレーティングシステムは、通常、データのアクセス性を高めるように、その外部メモリからではなく、そのプロセッサのローカルメモリから割り当てる。
【００５６】
本開示の諸実施形態により、マルチコアプロセッサにおいて実行するオペレーティングシステムは、コアと、そのコアがデータのキャッシングを担っているメモリセクションとを仮想ノードとして指定する同様のメモリ割当て機構を利用することができる。コアがオペレーティングシステムにメモリ割当て要求を送信すると、オペレーティングシステムは、仮想ノードのローカルメモリ（すなわち、そのコアが、データのキャッシングを担っているメモリ部分セクション）から割り当てる。上述のユニタリメモリマッピング機構の使用によって、メモリセクションに存在するデータは、コアのローカルキャッシュにロードされることになり、コアは、それによって、そのローカルキャッシュに直接アクセスして、要求されたデータ読み取り及びデータ書き込みを達成することができ、他のコアのローカルキャッシュにアクセスすることによって生じるレイテンシが回避され、システムの全体的な機能性が高まる。
【００５７】
本開示の上述の実施形態の場合、マルチコアプロセッサのコアが、２つのレベルのローカルキャッシュと、メモリコントローラとを含むことを指摘する必要がある。本開示のいくつかの代替の実施形態においては、コアが、１つのレベルのローカルキャッシュを含むことも、または複数のレベルのローカルキャッシュを含むこともあり、またはマルチコアプロセッサの内部にメモリコントローラを有していないこともある。さらには、キャッシュと、メモリスペースの中のメモリ部分との間のマッピング関係は、上述したものとは異なる他の関係において実装されてもよい。その上、オペレーティングシステムはまた、他の機構を利用して、メモリを割り当てることもできる。それらのすべては、本開示の実施形態を実装する単なる変形形態にすぎない。実装が、メモリスペースの中の相異なるアドレス範囲に存在しているデータのキャッシングをそのローカルキャッシュにおいて担っている相異なるコア、ならびにメイン通信バスを介して、他のコアのローカルキャッシュにおけるデータにアクセスすることができるコアを提供する限り、ＬＬＣ及びキャッシュインデックスが存在しない場合であっても、キャッシュ一貫性及びコア間のローカルキャッシュの共有化の実現の便益は達成され得る。
【００５８】
次に、図３を参照すると、本開示の一実施形態によるマルチコアプロセッサの使用によるデータ読み取りの例示的な方法のフローチャートが示されている。方法３００は、判断ブロック３０１から開始し、ここで、データ読取り操作を行おうとしているコアが、読み取るべきデータのメモリアドレスに基づいて、そのコアがそのデータのキャッシングを担っているかどうかを判断する。コアがデータのキャッシングを担っている場合には、方法３００は、ＹＥＳ分岐を辿り、ステップ３０２に進み、そうでない場合、方法３００は、ＮＯ分岐を辿り、ステップ３０３に進む。
【００５９】
実装においては、コアによるデータ読み取り処理は、キャッシュコントローラによって行われ得る。現在の技術の場合、キャッシュコントローラは、まず、ローカルレベル１（Ｌ１）キャッシュの中のデータを検索することになる。キャッシュミスがある場合、キャッシュコントローラは、ローカルキャッシュの次のレベルのキャッシュの中のデータを続けて検索する。ローカルキャッシュがすべて、ミスを返信する場合、キャッシュコントローラは、メモリコントローラを通じてメモリからデータを読み取るように、及び読み取られたデータを、要求しているコアに返信するように、ＬＯＡＤコマンドまたは要求をメインバスに送信することになる。
【００６０】
本開示の諸実施形態によると、ユニタリメモリマッピング機構の使用によって、キャッシュコントローラは、まず、コアがデータ読取り要求を送信した後、要求されるデータのキャッシングをそのコアが担っているかどうかを判断することになり、次いで、対応するデータ読取り操作を行う。
【００６１】
図４を参照すると、コアが要求されるデータのキャッシングを担っているかどうかを判断する例示的な方法（判断ブロック３０１の例示的な実施態様）のフローチャートが示されている。方法４００は、ステップ４０１−１から開始し、ステップ４０１−２により終了する。ステップ４０１−１においては、データのキャッシングを担っているコアのラベリング番号が、読み取るべきデータのメモリアドレスに基づいて、かつメモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、計算される。メモリスペースをキャッシングのためのアドレスに分割するためのそのようなポリシーは、状況に基づいて設定され得る。たとえば、例示的な実施形態においては、メモリスペースを分割するための単純かつ容易なポリシーは、マルチコアプロセッサのコアの数に基づいて、メモリアドレスを同じ大きさの連続したセグメントに分割するように、かつメモリセグメントとマルチコアプロセッサのコアと間のマッピング関係を確立するように実装され得る。
【００６２】
具体的には、上述の例示的なポリシーの場合、各コアは、アドレスＭＥＭ／Ｎ*ｎからＭＥＭ／Ｎ*（ｎ＋ｌ）−ｌにおけるメモリの中のデータのキャッシングを担い、ただし、ＭＥＭは、メモリの容量であり、Ｎは、マルチコアプロセッサのコアの数であり、ｎは、コアのラベリング番号であり、ｎは、０からＮ−１までの範囲の値の自然数である。メモリアドレス範囲とコアとの間のマッピング関係は、第１の実施形態についての上の説明に示す通りである。
【００６３】
上述のメモリ分割ポリシーに基づいて、データのキャッシングを担っているコアのラベリング番号は、数式：
Ｃｏｒｅ  Ｎｏ．＝（Ａ*Ｎ／ＭＥＭ）ｍｏｄ（Ｎ）
を用いて計算され得、ただし、Ｃｏｒｅ  Ｎｏ．は、コアのラベリング番号を示し、Ａは、読み取るべきデータのメモリアドレスである。
【００６４】
たとえば、本開示の第１の実施形態におけるマルチコアプロセッサが、２５６個のコア（Ｎ＝２５６）、１ＴＢｙｂｔｅのメモリ容量（ＭＥＭ＝１ＴＢ）、０ｘ００  ００００  ００００から０ｘＦＦ  ＦＦＦＦ  ＦＦＦＦまでの１６進形式で表されるメモリアドレスを有する場合、上述の分割ポリシーの使用によって、アドレスは、２５６個の連続したメモリセクションに分割され得、各セクションは、１Ｔｂｙｔｅ／２５６＝４ＧＢｙｔｅの大きさを有する。読み取るべきデータのアドレスが、０ｘ０８  ００００  Ａ０００（１６進法）のアドレスにある場合、上述の数式の使用によって、コアのラベリング番号は８であり、すなわち、コアＮｏ．８が、読み取るべきデータのキャッシングを担っている。
【００６５】
図４に戻って参照すると、ステップ４０１−２においては、コアについての計算されたラベリング番号が、当該コアについてのラベリング番号と同じであるかどうかが判断される。そうである場合、当該コアは、要求されたデータのキャッシングを担っていると判断され、方法４００は、（判断ブロック３０１からのＹＥＳ分岐を辿って）ステップ３０２に進む。そうでない場合、マルチコアプロセッサの別のコアが、要求されたデータのキャッシングを担い、方法４００は、（判断ブロック３０１からのＮＯ分岐を辿って）ステップ３０３に進む。
【００６６】
図３に戻って参照すると、方法３００がステップ３０２に進む場合、読み取るべきデータは、要求しているコアのローカルキャッシュによってキャッシュされている判断される。プロセッサのハードウェアによって利用されるプログラムの局所性及び予測可能性の機構の理論によれば、通常、読み取るべきデータは、要求しているコアのローカルキャッシュからのキャッシュヒットである。それがキャッシュミスである場合、データは、データのメモリアドレスを使用してメモリから読み取られ得、データを含んでいるメモリブロックは、要求しているコアのローカルキャッシュにロードされ得、後続のデータアクセス性が向上する。実装においては、要求しているコアのキャッシュコントローラは、アドレスマッピング機構を利用して、メモリアドレスをキャッシュアドレスに変換し、データがそれ自体のローカルキャッシュにおけるキャッシュヒットであるかどうかを判断することができる。
【００６７】
たとえば、メモリとキャッシュとの間のデータ転送の最小単位は、キャッシュラインと呼ばれる。メモリアドレスは、タグ、セットインデックス、及びオフセットのフィールドを含むことができる。キャッシュの論理構造体は、複数のグループを含み、各グループは複数のキャッシュラインを有し、各キャッシュラインはタグ及び複数の記憶単位を有する。メモリアドレスのセットインデックスの値に基づいて、キャッシュの中のどのグループにデータが属するかが判断され得る。キャッシュラインのタグとメモリアドレスのタグとの値を比較することによって、キャッシュラインが、メモリアドレスと同じタグ値を有することが見出された場合には、データを含んでいるメモリブロックは、すでに、キャッシュにロードされている。その結果として、キャッシュヒットが存在し、データは、データのメモリアドレスの中のオフセットフィールドの値を利用してキャッシュラインから読み取られることになる。
【００６８】
ローカルキャッシュにキャッシュミスが存在する場合には、ＬＯＡＤ要求がメインバスに送信され、メモリコントローラは、データのメモリアドレスに基づいて、メモリから、要求されたデータを読み取り、読み取られたデータをキャッシュコントローラに送信することになり、このキャッシュコントローラは、ひいては、要求しているコアに、読み取られたデータを提供する。
【００６９】
読み取るべきデータは、要求しているコアにキャッシュする責任があるので、データが、上述の方法の使用によって、メモリから得られる場合、データは、要求しているコアのキャッシュにロードされることになる。実装においては、メモリとキャッシュとの間のデータ転送の最小単位がキャッシュラインであるという事実により、キャッシュラインの大きさに基づいて、キャッシュラインの大きさの対応する大きさで、かつ要求されたデータを含んでいるメモリブロックのデータは、要求しているコアのローカルキャッシュにロードされ得る。
【００７０】
図３を参照すると、ステップ３０３においては、データ読取り要求は、要求されたデータのキャッシングを担っているリモートコア（マルチコアプロセッサの別のコア）に送信され、読み取られたデータは、データを返信するリモートコアから受信される。
【００７１】
方法３００がステップ３０３に進むとき、それは、読み取るべきデータが、当該要求しているコア以外のコアによってキャッシュされていることを意味する。要求しているコアと区別するために、そのようなデータのキャッシングを担っているコアは、本明細書においては、リモートコアと呼ばれる。そのため、要求しているコアは、そのローカルキャッシュの中のデータを検索せず、その代わりに、ステップ３０１の後、計算されたコアラベリング番号と一致するラベリング番号を有するリモートコアに、データ読取り要求を送信し、送信されたデータをそのようなリモートコアから受信する。
【００７２】
実装においては、要求しているコアのキャッシュコントローラは、データ読取り要求をリモートコアのキャッシュコントローラに送信するとき、要求されたデータのメモリアドレス、ならびに要求しているコアのコアラベリング番号を送信する。リモートコアのキャッシュコントローラは、ステップ３０２と同様のステップを利用して、そのローカルキャッシュの中のデータを検索する。キャッシュヒットが存在する場合、取り出されたデータを、要求しているコアのキャッシュコントローラへと直接返信し、そうでない場合、メモリからデータを読み取るためのデータのメモリアドレスに基づいて、要求しているコアへと、読み取られたデータを返信する。
【００７３】
要求されたデータは、リモートコアにキャッシュする責任があるので、データが上に説明したメモリからリモートコアによって得られる場合には、リモートコアのキャッシュコントローラは、メモリからそれを読み取った後、そのローカルキャッシュにデータをロードする。しかしながら、要求しているコアは、リモートコアからそれを受信した後、そのローカルキャッシュにデータをロードすることはない。要求しているコアが、同じデータにアクセスする必要がある次のとき、それはなおも、リモートコアに読取り要求を送信する。この方法の場合、データがリモートコアのローカルキャッシュにおいてのみキャッシュされることが確保され得、マルチコアプロセッサにデータの複数のコピーが存在する可能性が排除され、それによって、データ読取り操作の観点からキャッシュ一貫性が確保される。
【００７４】
次に、図５を参照すると、上述の方法に対応し、本開示の一実施形態による、マルチコアプロセッサの使用によるデータ読み取りのための例示的な装置のブロック図が示されている。データ読み取りのための装置の実施形態は、上述のデータ読み取りの方法の実施形態と実質的に同様であるので、この装置は、関連の詳細が方法実施形態において説明されている場合、ここでは比較的簡略化して示される。
【００７５】
データ読み取りのための装置５００は、データ読取り操作を実行すべきコアが、読み取るべきデータのメモリアドレスに基づいて、当該コアがデータのキャッシングを担っているかどうかを判断するように構成されたデータ読取り操作判断モジュール５０１を含む。装置５００は、コアがデータのキャッシングを担っているとの判断に応じて、コアのローカルキャッシュからデータを読み取るように構成されたローカルキャッシュ読み取りモジュール５０２をさらに含む。装置５００はまた、コアがデータのキャッシングを担っていないとの判断に応じて、データのキャッシングを担っているマルチコアプロセッサのリモートコアに、データ読取り要求を送信し、リモートコアによって返信されるデータを受信するように構成されたリモートキャッシュ読み取りモジュール５０３を含む。
【００７６】
いくつかの代替の実施形態の場合、データ操作判断５０１は、読取りラベリング番号計算サブモジュールと、ラベリング番号判断サブモジュールとを含む。読取りラベリング番号計算サブモジュールは、データのメモリアドレスに基づいて、かつメモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、データのキャッシングを担っているコアのラベリング番号を計算するように構成されている。ラベリング番号判断サブモジュールは、計算されたラベリング番号がコアのラベリング番号と同じであるかどうかを判断し、２つのラベリング番号が同じである場合、コアがデータのキャッシングを担っていると判断するように構成されている。
【００７７】
いくつかの他の代替の実施形態の場合、読取りラベリング番号計算サブモジュールの所定のポリシーは、ＭＥＭ／Ｎ*ｎからＭＥＭ／Ｎ*（ｎ＋１）−１までのアドレス範囲におけるメモリスペースの中のデータのキャッシングを担うべき複数のコアのうちの１つのコアに向けられ、ただし、ＭＥＭは、メモリスペースの容量であり、Ｎは、複数のコアの総数であり、ｎは、複数のコアのうちの１つのコアのラベリング番号であり、ｎは、０からＮ−１までの範囲の値を有する。
【００７８】
さらにいくつかの他の代替の実施形態の場合、読取りラベリング番号計算サブモジュールは、数式：
Ｃｏｒｅ  Ｎｏ．＝（Ａ*Ｎ／ＭＥＭ）ｍｏｄ（Ｎ）
を用いて、データのキャッシングを担っているコアのラベリング番号を計算し、ただし、Ｃｏｒｅ  Ｎｏ．は、コアのラベリング番号を示し、Ａは、読み取るべきデータのメモリアドレスである。
【００７９】
さらなる代替の実施形態の場合、ローカルキャッシュ読み取りモジュール５０２は、ローカルキャッシュ判断サブモジュールと、キャッシュ読取り実行サブモジュールと、メモリ読取りサブモジュールとを含む。ローカルキャッシュ判断サブモジュールは、データのメモリアドレスに基づいて、データがコアのローカルキャッシュにおいてキャッシュされているかどうかを判断するように構成されている。キャッシュ読取り実行サブモジュールは、データがコアのローカルキャッシュにおいてキャッシュされているとの判断に応じて、コアのローカルキャッシュからデータを読み取るように構成されている。さらには、メモリ読取りサブモジュールは、データがコアのローカルキャッシュにおいてキャッシュされていないとの判断に応じて、データのメモリアドレスに基づいて、メモリスペースにアクセスしてデータを読み取り、データを含んでいるメモリブロックをコアのローカルキャッシュにロードするように構成されている。
【００８０】
他の代替の実施形態の場合、リモートキャッシュ読み取りモジュール５０３は、要求送信サブモジュールと、リモート読取りサブモジュールと、データ返信サブモジュールとを含む。要求送信サブモジュールは、データ要求を、データのキャッシングを担っているリモートコアに送信するように構成され、この要求は、データのメモリアドレス及びデータ要求を送信しているコアのラベリング番号を含む。リモート読取りサブモジュールは、リモートコアが、リモートコアのローカルキャッシュからデータを読み取るように構成されている。さらには、データ返信サブモジュールは、リモートコアが、データ要求を送信するコアにデータを返信するように構成されている。
【００８１】
さらなる他の代替の実施形態の場合、リモート読取りサブモジュールは、リモートキャッシュ判断サブモジュールと、リモートキャッシュ読取り実行サブモジュールと、リモートメモリ読取りサブモジュールとを含む。リモートキャッシュ判断サブモジュールは、リモートコアが、データのメモリアドレスに基づいて、データがリモートコアのローカルキャッシュにおいてキャッシュされているかどうかを判断するように構成されている。リモートキャッシュ読取り実行サブモジュールは、データがリモートコアのローカルキャッシュにおいてキャッシュされているとの判断に応じて、リモートコアのローカルキャッシュからデータを読み取るように構成されている。さらには、リモートメモリ読取りサブモジュールは、データがリモートコアのローカルキャッシュにおいてキャッシュされていないとの判断に応じて、データのメモリアドレスに基づいて、メモリスペースにアクセスしてデータを読み取り、データを含んでいるメモリブロックをリモートコアのローカルキャッシュにロードするように構成されている。
【００８２】
図６を参照すると、本開示の一実施形態によるマルチコアプロセッサの使用によるデータ書き込みの例示的な方法のブロック図が示されている。データ書き込みの方法の実施形態は、上述のデータ読み取りの方法の実施形態とある種の類似性を共有するので、データ書き込みの方法は、関連の詳細が上の諸実施形態において説明されている場合、ここでは比較的簡略化して示される。
【００８３】
方法６００は、判断ブロック６０１から開始し、ここで、データ書込み操作を実行するためのコアは、書き込むべきデータのメモリアドレスに基づいて、当該コアがデータのキャッシングを担っているかどうかを判断する。そのコアがデータのキャッシングを担っている場合には、方法６００は、ＹＥＳ分岐を辿り、ステップ６０２に進み、そうでない場合、方法６００は、ＮＯ分岐を辿り、ステップ６０３に進む。
【００８４】
実装においては、データ書込み操作を行うためのコアは、書き込むべきデータのメモリアドレスに基づいて、かつメモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、データのキャッシングを担っているコアのラベリング番号を計算することになる。次いで、コアは、計算されたラベリング番号がコアのラベリング番号と同じである場合、当該コアがデータのキャッシングを担っていると判断する。さらなる詳細は、上述の諸実施形態に示す通りである。
【００８５】
ステップ６０２においては、データは、ローカルキャッシュに書き込まれる。方法６００がステップ６０２に進む場合、書き込むべきデータは、キャッシュするための要求しているコアに向けられることが判断される。そのため、要求しているコアは、まず、そのローカルキャッシュの中のデータを検索することになる。キャッシュヒットが存在する場合、データは、直接ローカルキャッシュに書き込まれる。そうでない場合、書き込むべきデータのメモリアドレス基づいて、方法６００は、書き込むべきデータを含んでいるメモリブロックを要求しているコアのローカルキャッシュにロードし、ローカルキャッシュにそのデータを書き込むことになる。
【００８６】
実装においては、データ書込み要求を実行するためにコアのキャッシュコントローラは、アドレスマッピング機構を利用して、メモリアドレスをキャッシュアドレスに変換し、データがそれ自体のローカルキャッシュの中のキャッシュヒットであるかどうかを判断することができる。やはり、関連の詳細は、上述の第２の実施形態のステップ３０２に示す通りである。
【００８７】
キャッシュヒットの場合、メモリアドレスのオフセット値は、キャッシュヒットを含む当該キャッシュラインのデータユニットを決定するのに利用され得、データ書込み操作のデータが、決定されたデータユニットに書き込まれることになる。キャッシュミスが存在する場合、キャッシュラインは、書き込むべきデータのメモリアドレスに基づいて、書き込むべきデータを含んでいるメモリブロックに対応するローカルキャッシュに割り当てられ得る。対応するメモリブロックのデータは、ローカルキャッシュの中の新規に割り当てられたキャッシュラインにロードされ、次いで、書き込むべきデータのメモリアドレスのオフセット値に基づいて、データ書込み操作のデータは、キャッシュラインの対応するデータユニットに書き込まれる。
【００８８】
ステップ６０３においては、方法６００は、データ書込み要求をデータのキャッシングを担っているマルチコアプロセッサのリモートコアに送信し、リモートコアは、リモートコアのローカルキャッシュにデータを書き込む。方法６００がステップ６０３に進むとき、それは、書き込むべきデータが、当該要求しているコア以外のコア、すなわち、マルチコアプロセッサのリモートコアによってキャッシュされていることを意味する。そのため、要求しているコアは、そのローカルキャッシュにおけるデータ書込み要求を操作せず、代わりに、要求しているコアは、ステップ６０１において計算されたコアラベリング番号と一致するラベリング番号を有するリモートコアに、データ書込み要求を送信し、それにしたがって、リモートコアは、それ自体のローカルキャッシュにデータを書き込む。
【００８９】
実装においては、要求しているコアが、データ書込み要求をリモートコアのキャッシュコントローラに送信するとき、要求しているコアは、書き込むべきデータのメモリアドレスならびに書き込むべきデータの内容及び長さを送信する。リモートコアのキャッシュコントローラは、ステップ６０２と同様の方法を利用して、そのローカルキャッシュの中のデータを検索する。キャッシュヒットが存在する場合、リモートコアは、ヒットを含む対応するキャッシュラインのデータユニットに直接データを書き込み、そうでない場合、書き込むべきデータのメモリアドレスに基づいて、リモートコアは、まず、対応するメモリブロックをローカルキャッシュにロードし、次いで、書き込むべきデータをローカルキャッシュに書き込む。
【００９０】
ステップ６０２またはステップ６０３の実行により、データ書込み操作のデータは、データ書込み操作を要求するコアのローカルキャッシュか、またはリモートコアのローカルキャッシュかのいずれかに書き込まれる。そのため、データ書込み操作は、マルチコアプロセッサの２つのコアのローカルキャッシュにおいて行われることはなく、それによって、データ書き込み操作の観点から、キャッシュデータ一貫性が確保される。
【００９１】
実装においては、データが、その対応するメモリアドレスに書き込まれることなしに、データ書込み操作と同時にキャッシュにのみ書き込まれる場合、データの２つのコピー間に矛盾が生じることになる。メモリデータ及びキャッシュデータの一貫性を確保するために、現在の技法は、通常、ＷＲＩＴＥ  ＴＨＲＯＵＧＨ（ライトスルー）手法またはＷＲＩＴＥ  ＢＡＣＫ（ライトバック）手法に依存している。
【００９２】
ＷＲＩＴＥ  ＴＨＲＯＵＧＨ手法の場合、そのローカルキャッシュにデータを直接、書き込むコアは、同時に、そのデータをメモリに書き込むことになり、それにより、メモリデータの同時更新が保証される。ＷＲＩＴＥ  ＢＡＣＫ手法の場合、コアは、そのローカルキャッシュにのみ、直接、データを書き込む。データが、再度、修正されるときのみ、コアは、前に更新されたデータをメモリに書き込み、次いで、新規更新されたデータをローカルキャッシュに書き込む。
【００９３】
現在の技法の場合、ＷＲＩＴＥ  ＴＨＲＯＵＧＨ手法が展開される場合、メモリへのアクセスが比較的、より低速であることに起因して、プロセッサの全体的なデータ書き込み速度は、低下することになる。ＷＲＩＴＥ  ＢＡＣＫ手法が展開される場合、メモリアクセスの数は、低減し得るにもかかわらず、マルチコアプロセッサの場合、キャッシュインデックスが、参照される必要があり、対応するＮＵＬＬ操作が行われる必要がある。たとえば、ＣＰＵがデータをそのプライベートキャッシュに書き込むとき、ＣＰＵは、まず、キャッシュインデックスを参照することによって、どのコアのプライベートキャッシュがデータのコピーを有するのかを判断する。キャッシュデータ一貫性を確保するために、次いで、ＣＰＵは、データ書込み操作を実行する前に、データを取得しているキャッシュラインをＮＵＬＬに設定するように、それらのプライベートキャッシュに通知する。複数のコアが特定のメモリブロックにデータを書き込むために交代するとき、コアのプライベートキャッシュの中の対応するキャッシュラインは、ＮＵＬＬに繰り返し設定されることになり、結果的に、データアクセス可能性の低下をもたらすピンポン現象が引き起こされる。
【００９４】
本開示のデータ書込みの一実施形態により、データ書き込みの方法は、ユニタリメモリマッピング機構を利用するマルチコアプロセッサの使用による。そのようなシステムの場合、相異なるコアのローカルキャッシュは、メモリの中の相異なるアドレス範囲におけるデータのキャッシングを担っている。この状況下では、キャッシュインデックスを利用して、相異なるコアのプライベートキャッシュに常駐するデータを追跡する必要も、または上述のＮＵＬＬ操作を実行する必要もない。したがって、ＷＲＩＴＥ  ＢＡＣＫ手法の場合、メモリアクセス数は、いずれのピンポン効果も伴わずに低減することになり、データのアクセス性が著しく高まる。
【００９５】
具体的には、データ書込み要求しているコアもしくはリモートコアが、書き込むべきデータを対応するローカルキャッシュに書き込む場合のステップ６０２またはステップ６０３においては、それは、対応するメモリアドレスにデータを書き込まない。代わりに、データを含んでいるキャッシュラインには、データに対する変更があったことを示すダーティパリティ情報がマーク付けされる。
【００９６】
キャッシュが満たされると、キャッシュコントローラは、所定の手法を利用して、キャッシュラインを置き換えることになる。置き換えるべきキャッシュラインがダーティパリティマークを持っている場合には、キャッシュラインの中のデータは、対応するメモリアドレスに書き込まれて、キャッシュデータとメモリデータとの間の一貫性を確保することになる。
【００９７】
上述のデータ読み取り及びデータ書き込みの方法の場合、要求しているコアは、まず、要求しているコアが、アクセスすべきデータのキャッシングを担っているかどうかを決定する。そうである場合、それは、そのローカルキャッシュまたはその対応するメモリ内でデータアクセス操作を行う。そうでない場合、それは、対応するデータアクセス要求を処理し、そのようなデータアクセス要求の結果を返信するように、データ要求をリモートコアに送信する。データ読み取り及びデータ書き込みの上述の方法の使用によって、キャッシュインデックスにアクセスし、キャッシュインデックスを維持することに関連するコストならびに繰り返されるＮＵＬＬ操作の実行が排除され得、キャッシュデータ一貫性が確保され、データアクセス方法が簡略化され、同時に、データのアクセス性が高まる。
【００９８】
次に、図７を参照すると、上述の方法に対応し、かつ本開示の一実施形態によるマルチコアプロセッサの使用によるデータ書き込みのための例示的な装置のブロック図が示されている。データ書き込みのための装置の実施形態は、上述のデータ書き込みの方法の実施形態と実質的に同様であるので、この装置は、関連の詳細が方法の実施形態において説明されている場合、ここでは比較的簡略化して示される。
【００９９】
装置７００は、データ書込み操作判断モジュール７０１と、ローカルキャッシュ書き込みモジュール７０２と、リモートキャッシュ書き込みモジュール７０３とを含む。データ書込み操作判断モジュール７０１は、データ書込み操作を実行すべきマルチコアプロセッサのコアが、書き込むべきデータのメモリアドレスに基づいて、コアがデータのキャッシングを担っているかどうかを判断するように構成されている。ローカルキャッシュ書き込みモジュール７０２は、コアがデータのキャッシングを担っているとの判断に応じて、コアのローカルキャッシュにデータを書き込むように構成されている。さらには、リモートキャッシュ書き込みモジュール７０３は、コアがデータのキャッシングを担っていないとの判断に応じて、データのキャッシングを担っているマルチコアプロセッサのリモートコアにデータ書込み要求を送信するように構成され、リモートコアが、リモートコアのローカルキャッシュにデータを書き込む。データ書込み要求は、データ書込み操作の書き込むべきデータのメモリアドレス及び内容を含む。
【０１００】
いくつかの代替の実施形態の場合、上述のデータ書込み操作決定モジュール７０１は、書込みラベリング番号計算サブモジュールと、ラベリング番号判断サブモジュールとを含む。書込みラベリング番号計算サブモジュールは、データのメモリアドレスに基づいて、かつメモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに従って、データのキャッシングを担っているコアのラベリング番号を計算するように構成されている。さらには、ラベリング番号判断サブモジュールは、計算されたラベリング番号がコアのラベリング番号と同じである場合、当該コアがデータのキャッシングを担っていると判断するように構成されている。
【０１０１】
いくつかの他の代替の実施形態の場合、上述のローカルキャッシュ書き込みモジュール７０２とリモートキャッシュ書き込みモジュール７０３とはともに、マーク設定サブモジュールをさらに含むことができる。マーク設定サブモジュールは、ローカルキャッシュにデータを書き込むとき、データを含んでいるキャッシュラインにダーティパリティマークを設定するように構成されている。それに対応して、装置はまた、メモリ同期モジュールも含むことができる。メモリ同期モジュールは、マーク付けされたキャッシュラインがローカルキャッシュから置き換えられるとき、メモリスペースの中の対応するアドレスにキャッシュラインのデータを書き込むように構成されている。
【０１０２】
図８を参照すると、本開示の実施形態によるマルチコアプロセッサの使用によるメモリ割当ての例示的な方法のフローチャートが示されている。メモリ割当ての方法の実施形態は、上述のデータ読み取りの方法の実施形態とある種の類似性を共有するので、メモリ割当ての方法は、関連の詳細が上の諸実施形態において説明されている場合、ここでは比較的簡略化して示される。
【０１０３】
方法８００は、ステップ８０１から開始し、ここで、メモリ割当て要求が、コアから受信される。マルチコアプロセッサでは、コアがメモリにアクセスする必要がある場合、たとえば、当該コアにおいて実行するプログラム（たとえば、スレッド）が、データ構造体にメモリを割り当てる必要がある場合、それは、オペレーティングシステムがメモリスペースを割り当てる要求をオペレーティングシステムに送信するための関数を呼び出すことになる。したがって、オペレーティングシステムは、そのようなメモリ割り当て要求を受信することになり、この要求は、メモリスペースにおいて割り当てるべきデータユニットの量だけでなく、メモリ割当てを要求しているコアについての識別情報、たとえば、コアのラベリング番号も含む。データユニットは、本明細書においては、データがメモリに記憶され得る最も小さい単位、通常はまた、オペレーティングシステムがメモリ割当てを行う最も小さい単位も示す。たとえば、そのようなデータ単位は、８ビット、すなわち、１バイトとすることができる。
【０１０４】
ステップ８０２においては、メモリスペースをキャッシングのためのアドレスに分割するための所定のポリシーに基づいて、コアがデータのキャッシングを担っているメモリスペースの中のアドレス範囲が決定される。コアがメモリスペースの中の異なるアドレス範囲からデータのキャッシングを担っている間、マルチコアプロセッサにおいて動作しているオペレーティングシステムもまた、そのようなアドレス範囲分割ポリシーに従って、メモリをマルチコアプロセッサのコアに割り当てる。
【０１０５】
実装においては、メモリスペースをアドレス範囲に分割するためのそのようなポリシーは、状況に基づいて設定され得る。たとえば、例示的な実施形態においては、メモリスペースを分割するためのポリシーは、マルチコアプロセッサのコアの数に基づいて、メモリアドレスを同じ大きさの連続したセグメントに分割するように、かつメモリセグメントとマルチコアプロセッサのコアと間のマッピング関係を確立するように、実装され得る。関連の詳細は、上述の第１の実施形態に示す通りである。
【０１０６】
当該ステップ８０２においては、要求に含まれているコアの識別情報ならびに上述の所定の分割ポリシーに基づいて、要求しているコアがデータのキャッシングを担っているメモリスペースの中のアドレス範囲が決定され得る。たとえば、第１の実施形態の例示的なメモリ分割ポリシーの場合、コアＮｏ．１が、１２８バイトのメモリセグメントを割り当てる要求をオペレーティングシステムに送信する場合、当該コアは、０ｘ０１  ００００  ００００から０ｘ０１  ＦＦＦＦ  ＦＦＦＦまでの範囲のアドレスにおけるメモリスペースを担っていることが決定され得る。
【０１０７】
ステップ８０３においては、メモリ割当て要求の中の割り当てるべきメモリユニットの量に基づいて、メモリユニットの対応する量が、アドレス範囲に対応するメモリスペースから、コアに割り当てられる。このステップにおいては、メモリ割当て要求及びステップ８０２において決定されたメモリアドレス範囲に指定されたデータユニットの量に基づいて、オペレーティングシステムは、要求されたデータユニットの量を満足させるのに十分な容量を有する、空いているメモリブロック（割り当てられていないメモリブロック）を検索する。特定のポリシーに従って、オペレーティングシステムは、対応する大きさのメモリブロックを選択し、選択されたメモリブロックの先頭アドレスを要求しているコアに返信する。言い換えれば、オペレーティングシステムが、選択されたメモリブロックを当該要求しているコアに割り当てると同時に、コアは、データ読み取り、データ書き込み、及び同様の操作に向けて、割り当てられたメモリブロックへのアクセスを開始することができる。
【０１０８】
上述の実施形態により、そのようなマルチコアプロセッサにおいて動作しているオペレーティングシステムは、上述の方法を利用して、メモリブロックを各コアに割り当て、メモリブロックはすべて、コアがそれぞれデータのキャッシングを担っているアドレス範囲に存在している。メモリブロックのデータがキャッシュにロードすべきであるとき、それは、対応するコアのローカルキャッシュにロードされることになる。その結果として、メモリのコアのアクセスは、通常、まず、そのローカルキャッシュにおける検索を介して達成され得る。わずかな量の共有データの場合のみ、それは、他のコアのローカルキャッシュにアクセスする必要がある。低いキャッシュのレイテンシとローカルキャッシュへのアクセスに固有の高速度とに起因して、データのアクセス性はそれにより高まる。
【０１０９】
図９を参照すると、上述のメモリ割当ての方法に対応し、かつ本開示の実施形態による、マルチコアプロセッサの使用によるメモリ割当てのための例示的な装置のブロック図が示されている。装置の実施形態は、方法の実施形態と実質的に同様であるので、メモリ割当てのための装置は、関連の詳細が上の方法実施形態に説明されている場合、ここでは比較的簡略化して示される。
【０１１０】
装置９００は、要求受信モジュール９０１と、アドレス範囲決定モジュール９０２と、メモリ割当て実行モジュール９０３とを含む。要求受信モジュール９０１は、マルチコアプロセッサのコアからメモリ割当て要求を受信するように構成されている。アドレス範囲決定モジュール９０２は、メモリスペースを対応するキャッシングのためのアドレスに分割するための所定のポリシーに基づいて、コアがデータのキャッシングを担っているメモリスペースの中のアドレス範囲を決定するように構成されている。さらには、メモリ割当て実行モジュール９０３は、メモリ割当て要求に割り当てるべきメモリユニットの量に基づいて、アドレス範囲に対応するメモリスペースから、コアに、対応するメモリユニットの量を割り当てるように構成されている。
【０１１１】
図１０を参照すると、本開示の一実施形態によるマルチコアプロセッサの例示的なシステムのブロック図が示されている。装置１０００は、上述の第１の実施形態に例示したキャッシュ一貫性サポーティングマルチコアプロセッサ１００１と、マルチコアプロセッサの複数のコアに連結されてメモリスペースから複数のコアにデータを提供するメモリコントローラ１００２と、メモリコントローラ１００２に連結されてコアによってアクセスすべきデータを記憶するように構成されたメモリ１００３とを含む。
【０１１２】
上述のシステム１０００は、コアによって共有される最終レベルキャッシュも、キャッシュインデックスも含んでいない。にもかかわらず、キャッシュ一貫性をサポートするマルチコアプロセッサの使用によって、複数のコアのうちの１つのコアのローカルキャッシュは、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、複数のコアのうちの各コアは、相互接続バスを介して、複数のコアのうちの別のコアのローカルキャッシュにおけるデータにアクセスする。そのため、キャッシュデータ一貫性及びコア間のローカルキャッシュの共有化が実現される。そのことは、プライベートキャッシュと共有キャッシュとの間の対立に関する現在の技法の問題を解決するだけでなく、キャッシュインデックス及びキャッシュインデックスによって消費されるキャッシュスペースを排除して、データのアクセス性を高め、プライベートキャッシュに固有の低いデータレイテンシからの恩恵を得ることによって、システムの機能性全体を向上させる。
【０１１３】
データのアクセス性をさらに高めるために、装置１０００のコアは、コアのローカルキャッシュに対応するアドレス範囲におけるメモリスペースの中のメモリセクションにアクセスする。関連の詳細は、上述の諸実施形態に示す通りである。
【０１１４】
図１１を参照すると、本開示の実施形態によるキャッシュ一貫性をサポートする例示的なマルチコアプロセッサのブロック図が、示されている。マルチコアプロセッサ１１００は、複数のコア１１２０−０、１１２０−１、１１２０−３、１１２０−４、…、１１２０−２ｎ−２、１１２０−２ｎ−ｌから分割される複数のコアグループ１１０１−１、１１０１−２、…、１１０１−ｎを含み、ただし、ｎは、自然数である。この例においては、各コアグループは、２つのコアを含むことができ、すなわち、コアグループ１１０１−１は、コア１１２０−０及び１１２０−１を含み、コアグループ１１０１−２は、コア１１２０−２及び１１２０−３を含み、…、コアグループ１１０１−ｎは、コア１１２０−２ｎ−２、１１２０−２ｎ−１を含む。各コアグループはまた、それぞれのローカルキャッシュ：Ｌ１キャッシュ１１４０−１、１１４０−２、…、１１４０−ｎと、Ｌ２キャッシュ１１４２−０、１１４２−１、…、１１４２−ｎとを含む。マルチコアプロセッサはまた、メモリからデータを提供するためのメモリコントローラ１１０２を含むことができる。コアグループのローカルキャッシュは、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、コアグループは、相互接続バスを介して、別のコアグループのローカルキャッシュにおけるデータにアクセスする。
【０１１５】
当該マルチコアプロセッサ実施形態のシステムにおいては、複数のコアは、ｎ個のコアグループに分割される。あるコアグループの観点からすると、同じグループのコアは、Ｌ１キャッシュとＬ２キャッシュとを含む同じキャッシュを共有する。複数のコアグループの観点からすると、コアグループ内の共有キャッシュは、コアグループのローカルキャッシュである。コアグループが仮想コアと見なされる場合、当該実施形態は、理論上、第１の実施形態と実質的に同様であり、すなわち、仮想コア（コアグループ）のローカルキャッシュは、メモリスペースの中の異なるアドレス範囲におけるデータのキャッシングを担い、仮想コア（コアグループ）は、相互接続バスを介して、別の仮想コア（コアグループ）のローカルキャッシュにおけるデータにアクセスする。そのため、第１の実施形態のマルチコアプロセッサの使用によるデータ読み取り、データ書き込み、及びメモリ割当ての上述の方法は、同様に、当該実施形態のマルチコアプロセッサに当てはまる。
【０１１６】
上述の実施形態は、単に一例にすぎず、実装においては、プロセッサのコアグループの数、コアグループの中のコアの数、コアグループの中のキャッシュレベルの数、及びメモリコントローラがマルチコアプロセッサの内部に集められているかどうかはすべて、したがって、諸状況の下、調整され、または設定され得る。
【０１１７】
典型的な装置においては、コンピュータシステムは、１つまたは複数のＣＰＵ、Ｉ／Ｏインターフェース、ネットワークインターフェース、及びメモリを含む。メモリは、たとえば、非永続的ランダムアクセスメモリ（ＲＡＭ）、及び／または読取り専用メモリ（ＲＯＭ）もしくはフラッシュＲＡＭなどの不揮発性メモリを使用して実装されるコンピュータ可読媒体を含むことができる。メモリは、例示的なコンピュータ可読媒体である。
【０１１８】
本開示の諸実施形態は、ソフトウェア、ハードウェア、ファームウェア、及び／またはそれら組合せを使用して実装され得る。ソフトウェア、ハードウェア、ファームウェア、またはそれらの組合せを使用して実装されるかどうかにかかわらず、命令コードは、任意の種類のコンピュータ可読媒体（たとえば、永続的または修正型、揮発性または不揮発性、固体または非固体、固定または変更可能な媒体など）に記憶され得る。同様に、そのような媒体は、たとえば、プログラマブルアレイロジック（ＰＡＬ）、ランダムアクセスメモリ（ＲＡＭ）、プログラマブル読取り専用メモリ（ＰＲＯＭ）、読取り専用メモリ（ＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、磁気記憶装置、光記憶装置、またはデジタル多用途ディスク（ＤＶＤ）などを使用して実装され得る。
【０１１９】
本開示の諸実施形態によって説明されているモジュールまたはブロックが、論理モジュールまたは論理ブロックであることを指摘する必要がある。物理的には、論理モジュールまたは論理ブロックは、物理モジュールもしくは物理ブロック、物理モジュールもしくは物理ブロックの一部、または複数の物理モジュールもしくは物理ブロックの組合せとすることができる。それらの論理モジュールまたは論理ブロックの物理的な実装態様は、本質ではない。モジュール、ブロック、及びそれらの組合せによって実現される、実現された機能性は、本開示によって対処される問題を解決するための鍵である。さらには、本開示の新規性を開示するために、上述の諸実施形態は、本開示によって対処される問題を解決することにあまり関係していないそれらのモジュールまたはブロックについては開示しておらず、そのことは、上述の諸実施形態が、他のモジュールまたはブロックを含むことができないということを意味するものではない。
【０１２０】
また、本開示の特許請求の範囲及び明細書においては、第１、及び第２などの用語は、ある実施形態または操作を、別の実施形態または操作と区別するためにすぎないことを指摘する必要がある。それは、それらの実施形態または操作は、任意のそのような実際の関係または順序を有することを必要としておらず、または暗示もしていない。さらには、本明細書において使用されるとき、「備える（ｃｏｍｐｒｉｓｉｎｇ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」という用語、または任意の他の変形形態は、非排他的包含をカバーするように意図されており、それにより、要素のリストを含むプロセス、方法、物品、または装置は、それらの要素を含むだけでなく、明示的にリストされていない、またはそのようなプロセス、方法、物品、または装置に固有の他の要素も含むことができる。さらなる限定が存在しない場合、「〜を備える（ｃｏｍｐｒｉｓｉｎｇ  ａ）」という語句によって列挙される要素は、そのような要素を備えるプロセス、方法、物品、または装置を他の同じ要素を含むことから除外しない。
【０１２１】
前述の開示は、特定のブロック図、フローチャート、及び諸実施例を使用して様々な実施形態を説明しているが、各ブロック図構成要素、フローチャートステップ、操作、及び／または本明細書に説明され、かつ／もしくは示されている構成要素は、広範なハードウェア、ソフトウェア、もしくはファームウェア（または任意のそれらの組合せ）の構成を使用して、個々にかつ／または集合的に実装され得る。加えて、他の構成要素の中に含まれている構成要素の任意の開示は、多くの他のアーキテクチャが同じ機能性を達成するために実装され得るので、例として見なすべきである。
【０１２２】
本明細書において説明され、かつ／または示されているプロセスパラメータ及び一連のステップは、例としてのみ与えられ、必要に応じて変更可能である。たとえば、本明細書において示され、かつ／または説明されているステップは、具体的な順序で示され、または論じられ得るが、これらのステップは、必ずしも、示され、または論じられている順序で行われる必要はない。本明細書において説明され、かつ／または示されている様々な例示的な方法はまた、本明細書において説明され、または示されているステップのうちの１つまたは複数を省略することも、あるいは開示されているものに加えて追加のステップを含むこともできる。
【０１２３】
様々な実施形態が、完全に機能的なコンピューティングシステムの文脈で、本明細書において説明され、かつ／または示されてきたが、これらの例示的な実施形態のうちの１つまたは複数は、配布を実際に行うために使用される特定のタイプのコンピュータ可読媒体にもかかわらず、多様な形態におけるプログラム製品として配布され得る。本明細書において開示される諸実施形態はまた、特定のタスクを行うソフトウェアモジュールを使用して実装され得る。これらのソフトウェアモジュールは、スクリプト、バッチ、またはコンピュータ可読記憶媒体上にもしくはコンピューティングシステム内に記憶され得る他の実行可能ファイルを含むことができる。これらのソフトウェアモジュールは、本明細書において開示される例示的な実施形態のうちの１つまたは複数を行うようにコンピューティングシステムを構成設定することができる。本明細書において開示されるソフトウェアモジュールのうちの１つまたは複数は、クラウドコンピューティング環境において実装され得る。クラウドコンピューティング環境は、Ｉｎｔｅｒｎｅｔを介して、様々なサービス及びアプリケーションを提供することができる。これらのクラウドベースのサービス（たとえば、サービスとしてのソフトウェア、サービスとしてのプラットフォーム、サービスとしてのインフラストラクチャなど）は、Ｗｅｂブラウザまたは他のリモートインターフェースを通じてアクセスでき得る。本明細書において説明される様々な関数は、リモートデスクトップ環境または任意の他のクラウドベースのコンピューティング環境を通じて提供され得る。
【０１２４】
本開示及びその利点について詳細に説明してきたが、様々な変形、置換、及び代替が、添付の特許請求の範囲によって定義される本開示の趣旨及び範囲から逸脱することなく、本明細書において行われ得ることを理解すべきである。多くの修正形態及び変更形態が、上記教示を考慮して可能である。諸実施形態は、本開示の原理及びその実践的な適用例を最良に説明するために、選択され、記載され、それによって、当業者が、企図される具体的な使用に適している可能性がある様々な修正形態とともに本開示及び様々な実施形態を最良に利用することができるようになった。
【０１２５】
その上、本出願の範囲は、本明細書に説明されたプロセス、機械、製造、物質の組成、手段、方法、及びステップの特定の実施形態に限定されるように意図するものではない。当業者は、現存のまたは後に開発されることになる本開示、プロセス、機械、製造、物質の組成、手段、方法、またはステップの開示から容易に理解することになり、本明細書に説明の対応する諸実施形態と同じ機能を実質的に行う、または同じ成果を実質的に達成するそれらは、本開示に従って利用され得る。したがって、添付の特許請求の範囲は、それらの範囲内に、そのようなプロセス、機械、製造、物質の組成、手段、方法、またはステップを含むように意図されている。
【０１２６】
本開示による諸実施形態について、以上のように説明される。本開示は、特定の実施形態において説明されているが、本開示は、そのような実施形態によって限定されていると解釈すべきではなく、むしろ、添付の特許請求の範囲に従って解釈すべきであることを理解されたい。
【図１】
2018503181.tif 000003
【図２】
2018503181.tif 000004
【図３】
2018503181.tif 000005
【図４】
2018503181.tif 000006
【図５】
2018503181.tif 000007
【図６】
2018503181.tif 000008
【図７】
2018503181.tif 000009
【図８】
2018503181.tif 000010
【図９】
2018503181.tif 000011
【図１０】
2018503181.tif 000012
【図１１】
2018503181.tif 000013
【国際調査報告】
2018503181.tif 000014