(57)【要約】      （修正有）【課題】イニシエータデバイスではなく、コヒーレンシコントローラでデータハザードを管理する、データ処理システムを提供する。【解決手段】２つの部分形式で書き込みリクエストを処理する。同じアドレスに対し同時保留の読み出しおよび書き込みが存在する時、書き込みの第１の部分に応答しないことでコヒーレンシコントローラにより延期され、イニシエータデバイス１０は、書き込みが保留中に関係なく、書き込みのアドレスに受信されたいずれのスヌープリクエストも処理するように進行する。保留中の読み出しが完了すると、コヒーレンシコントローラは、書き込みの第１の部分に応答し、イニシエータデバイスは、データおよびスヌープ後のデータの状態のインジケータを送信することによって、書き込みを完了する。コヒーレンシコントローラは、必要に応じてメモリを更新するためにこの情報を使用して潜在的なデータハザードも回避することができる。【選択図】図１
2013041581.tif 000002
【特許請求の範囲】
【請求項１】
イニシエータデバイスであって、
データアクセスリクエストを生成するための回路と、
データを記憶し、前記データに関連する状態インジケータを記憶するためのデータストアであって、前記状態インジケータが、前記データが無効であるか、有効でありかつ同じ値が他の場所に記憶されているか、有効でありかつ他の場所に記憶された前記データのバージョンのより新しいバージョンであるか、のうちの少なくとも１つを示す、データストアと、
コヒーレンシコントローラを介して、少なくとも１つのレシピエントデバイスへの伝送のために前記データアクセスリクエストを出力し、前記コヒーレンシコントローラから信号およびデータアクセスリクエストを受信するための少なくとも１つのポートと、を備え、
前記回路が、前記少なくとも１つのレシピエントデバイスのうちの１つに前記データストアに記憶されたデータを書き込むための書き込みリクエストと、前記少なくとも１つのレシピエントデバイスのうちの１つに記憶されたデータを読み出すための読み出しリクエストと、を生成するように構成され、
前記回路が、２つの部分で前記書き込みリクエストを生成するように構成され、第１の部分は、書き込みが実施されることの表示と、書き込まれる前記データのアドレスとを含み、第２の部分は、前記少なくとも１つのポートでのデータ受容保証の受信に応答して伝送され、
前記イニシエータデバイスが、制御回路をさらに備え、前記制御回路が、
前記少なくとも１つのポートでのスヌープリクエストの受信に応答して、前記スヌープリクエストを受容し、前記第１の部分が出力され、データ受容保証が全く受信されていない、保留中の書き込みリクエストの場所へのアクセスを前記スヌープリクエストが要求しているかに関係なく、実行されるように前記スヌープリクエストを制御し、
前記少なくとも１つのポートでの前記データ受容保証の受信、および書き込まれる前記データが有効かつ他の場所に記憶された前記データのバージョンのより新しいバージョンであるという現在の状態に応答して、前記データ書き込みの前記第２の部分として、前記データおよび前記データが書き込まれる前の前記データの前記現在の状態を出力するように構成される、イニシエータデバイス。
【請求項２】
前記制御回路が、実行される前記スヌープリクエストに応答して、適切な場合は前記データに関連する前記状態インジケータを更新し、前記スヌープリクエストに対する応答として、前記データとともに、前記更新の前および後の前記状態インジケータの表示を出力するように構成される、請求項１に記載のイニシエータデバイス。
【請求項３】
前記制御回路が、前記少なくとも１つのポートでの前記データ受容保証の受信に応答して、前記書き込みリクエスト前の前記データの前記状態に関係なく、前記データ書き込みリクエストの前記第２の部分として、前記データおよび前記書き込みが実施される前の前記データの状態を生成し、出力するように構成される、請求項１または２に記載のイニシエータデバイス。
【請求項４】
前記制御回路が、前記少なくとも１つのポートでの前記データ受容保証の受信、および前記書き込みが実施される前の前記データが無効であるという前記状態に応答して、前記データ書き込みリクエストの前記第２の部分として、書き込みキャンセルリクエストを出力するように構成される、請求項１〜３のいずれかに記載のイニシエータデバイス。
【請求項５】
前記制御回路が、前記少なくとも１つのポートでの前記データ受容保証の受信、および前記書き込みの前記第２の部分が実施される前の前記データが有効でありかつ他の場所に同じ値が記憶されているという前記状態に応答して、前記データ書き込みリクエストの前記第２の部分として、書き込みキャンセルリクエストを出力するように構成される、請求項４に記載のイニシエータデバイス。
【請求項６】
前記書き込みトランザクションリクエストの前記第１の部分のサイズが、読み出しトランザクションリクエストのサイズと同じである、請求項１〜５のいずれかに記載のイニシエータデバイス。
【請求項７】
少なくとも１つのイニシエータデバイスと、少なくとも１つのレシピエントデバイスとを備えるデータ処理装置の中に記憶されたデータのデータコヒーレンシを維持するためのコヒーレンシコントローラであって、
前記少なくとも１つのイニシエータデバイスからデータアクセスリクエストを受信し、前記少なくとも１つのイニシエータデバイスおよび前記少なくとも１つのレシピエントデバイスのうちの少なくとも１つへ、前記データアクセスリクエストおよびスヌープリクエストを伝送するための、少なくとも１つのポートと、
保留中のデータアクセスリクエストを記憶するためのバッファと、
前記データアクセスリクエストに応答して、前記スヌープリクエストを生成するためのスヌープリクエスト生成回路であって、前記スヌープリクエストが、アクセスされる前記データが前記イニシエータおよびレシピエントデバイスのうちの１つ以上にローカルに記憶されているかを判定するためのものである、スヌープリクエスト生成回路と、
読み出しリクエストが保留中であるアドレスに対して書き込みが実施されるという表示を含む、書き込みリクエストの第１の部分の受信に応答して、前記保留中の読み出しリクエストが完了される後まで、前記書き込みリクエストの前記第１の部分に応答しないことによって、前記書き込みリクエストを延期する、コヒーレンシ制御回路と、を備える、コヒーレンシコントローラ。
【請求項８】
前記コヒーレンシ制御回路が、前記読み出しリクエストの完了を示す信号の受信に応答して、前記書き込みリクエストの前記第１の部分に応答する、請求項７に記載のコヒーレンシコントローラ。
【請求項９】
前記コヒーレンシ制御回路が、データおよび前記書き込み前の前記データの状態の表示を含む、前記書き込みリクエストの前記第２の部分の受信に応答して、前記状態が前記データが有効でありかつ他の場所に記憶された前記データのバージョンよりも新しいバージョンであることを示す場合、前記データを前記レシピエントデバイスに書き込む、請求項８に記載のコヒーレンシコントローラ。
【請求項１０】
前記コヒーレンシ制御回路が、データ、および前記データの状態が無効であるという表示を含む、前記書き込みリクエストの前記第２の部分の受信に応答して、前記データをさらに書き込まない、請求項９に記載のコヒーレンシコントローラ。
【請求項１１】
前記コヒーレンシ制御回路が、データ、および前記データの状態が有効かつ他の場所に記憶された値と同じであるという表示を含む、前記書き込みリクエストの前記第２の部分の受信に応答して、前記データをさらに書き込まない、請求項１０に記載のコヒーレンシコントローラ。
【請求項１２】
前記コヒーレンシ制御回路が、書き込みリクエストのキャンセル表示を含む、前記書き込みリクエストの前記第２の部分の受信に応答して、前記保有された記憶場所を解放する、請求項１０または１１に記載のコヒーレンシコントローラ。
【請求項１３】
前記少なくとも１つのバッファ内の全ての記憶場所が、起動時に読み出しおよび書き込みの両方のリクエストを記憶するために利用可能であり、前記コヒーレンシ制御回路が、前記書き込みリクエストの前記第１の部分を受容時に、前記書き込みリクエストの前記第２の部分のための記憶場所を保有し、前記記憶場所が保有されていることを示すデータ受容保証応答を用いて前記書き込みリクエストの前記第１の部分に応答するように構成される、請求項７〜１２のいずれか１項に記載のコヒーレンシコントローラ。
【請求項１４】
請求項１〜６のいずれか１項に記載の少なくとも１つのイニシエータデバイスと、請求項７〜１３のいずれか１項に記載のコヒーレンシコントローラと、少なくとも１つのレシピエントデバイスと、を備えるデータ処理システム。
【請求項１５】
データアクセスリクエストを生成し、イニシエータデバイス内でスヌープリクエストを処理するための方法であって、
データを記憶し、前記データに関連する状態インジケータを記憶することとであって、前記状態インジケータが、前記データが有効であるか、他の場所に記憶されているか、および他の場所に記憶された前記データのバージョンよりも前記データの新しいバージョンであるか、のうちの少なくとも１つを示すことと、
コヒーレンシコントローラから信号およびデータアクセスリクエストを受信することと、
前記データストアに記憶されたデータを少なくとも１つのレシピエントデバイスに書き込むための書き込みリクエストと、前記少なくとも１つのレシピエントデバイスに記憶されたデータを読み出すための読み出しリクエストと、を生成することであって、
前記書き込みリクエストが、２つの部分で生成され、第１の部分が、書き込みが実施されることの表示と、書き込まれる前記データのアドレスとを含み、第２の部分が、前記少なくとも１つのポートでのデータ受容保証の受信に応答して伝送されることと、
スヌープリクエストの受信に応答して、前記スヌープリクエストを受容し、前記第１の部分が出力され、データ受容保証が全く受信されていない保留中の書き込みリクエストの場所へのアクセスを、前記スヌープリクエストが要求してもしなくても、同じ様式で実行されるように前記スヌープリクエストを制御することと、
前記データ受容保証の受信、および書き込まれる前記データが有効かつ他の場所に記憶された前記データのバージョンのより新しいバージョンであるという状態に応答して、前記データ書き込みの前記第２の部分として、前記データおよび前記データが書き込まれる前の前記データの前記現在の状態を出力することと、を含む、方法。
【請求項１６】
前記少なくとも１つのポートでの前記データ受容保証の受信に応答して、前記データ書き込みリクエストの前記第２の部分として、前記書き込みリクエスト前の前記データの状態に関係なく、前記データおよび前記書き込みが実施される前の前記データの状態を生成し、出力する、請求項１５に記載の方法。
【請求項１７】
前記データ受容保証の受信、および前記書き込みが実施される前の前記データが無効であるという前記状態に応答して、前記データ書き込みリクエストの前記第２の部分として、書き込みキャンセルリクエストを出力する、請求項１５に記載の方法。
【請求項１８】
データアクセスリクエストのコヒーレンシを維持する方法であって、
前記少なくとも１つのイニシエータデバイスからデータアクセスリクエストを受信することと、
前記少なくとも１つのイニシエータデバイスおよび前記少なくとも１つのレシピエントデバイスのうちの少なくとも１つへ、前記データアクセスリクエストおよびスヌープリクエストを伝送することと、
保留中のデータアクセスリクエストを記憶することと、
前記データアクセスリクエストに応答して、スヌープリクエストを生成することであって、前記スヌープリクエストが、アクセスされる前記データが前記イニシエータおよびレシピエントデバイスのうちの１つ以上にローカルに記憶されているかを判定するためであることと、
読み出しリクエストが保留中であるアドレスに対して書き込みが実施されるという表示を含む、書き込みリクエストの第１の部分の受信に応答して、前記保留中の読み出しリクエストが完了される後まで、前記書き込みリクエストの前記第１の部分に応答しないことによって、前記書き込みリクエストを延期することと、を含む、方法。
【請求項１９】
イニシエータ手段であって、
データアクセスリクエストを生成するための回路手段と、
データを記憶し、前記データに関連する状態インジケータを記憶するためのデータ記憶手段であって、前記状態インジケータが、前記データが有効であるか、他の場所に記憶されているか、および他の場所に記憶された前記データのバージョンよりも前記データの新しいバージョンであるか、のうちの少なくとも１つを示す、データ記憶手段と、
コヒーレンシコントローラを介して、少なくとも１つのレシピエントデバイスへ伝送するために前記データアクセスリクエストを出力し、前記コヒーレンシコントローラから信号およびデータアクセスリクエストを受信するための少なくとも１つのポート手段と、を備え、
前記回路手段が、前記データストアに記憶されたデータを前記少なくとも１つのレシピエントデバイスのうちの１つに書き込むための書き込みリクエストと、前記少なくとも１つのレシピエントデバイスのうちの１つに記憶されたデータを読み出すための読み出しリクエストと、を生成するためのものであり、
前記回路手段が、２つの部分で前記書き込みリクエストを生成するためのものであって、第１の部分は、書き込みが実施されることの表示と、書き込まれる前記データのアドレスとを含み、第２の部分は、前記少なくとも１つのポートでのデータ受容保証の受信に応答して伝送され、
前記イニシエータ手段が、スヌープリクエストを受容することによって、前記少なくとも１つのポートでの前記スヌープリクエストの受信に応答し、前記第１の部分が出力され、データ受容保証が全く受信されていない保留中の書き込みリクエストの場所へのアクセスを前記スヌープリクエストが要求してもしなくても、同じ様式で実行されるように前記スヌープリクエストを制御し、前記少なくとも１つのポート手段での前記データ受容保証の受信、および書き込まれる前記データが有効かつ他の場所に記憶された前記データのバージョンよりも新しいバージョンであるという状態に応答して、前記データ書き込みの前記第２の部分として、前記データおよび前記データが書き込まれる前の前記データの前記現在の状態を出力する、制御手段をさらに備える、イニシエータ手段。
【請求項２０】
少なくとも１つのイニシエータデバイスと、少なくとも１つのレシピエントデバイスとを備えるデータ処理装置の中に記憶されたデータのデータコヒーレンシを維持するためのコヒーレンシ制御実行手段であって、
前記少なくとも１つのイニシエータデバイスからデータアクセスリクエストを受信し、前記少なくとも１つのイニシエータデバイスおよび前記少なくとも１つのレシピエントデバイスのうちの少なくとも１つへ、データアクセスリクエストおよびスヌープリクエストを伝送するための、少なくとも１つのポート手段と、
保留中のデータアクセスリクエストを記憶するためのバッファ手段と、
前記データアクセスリクエストに応答して、前記スヌープリクエストを生成するためのスヌープリクエスト生成手段であって、前記スヌープリクエストが、アクセスされる前記データが前記イニシエータおよびレシピエントデバイスのうちの１つ以上にローカルに記憶されているかを判定するためのものである、スヌープリクエスト生成手段と、
前記保留中の読み出しリクエストが完了される後まで、前記書き込みリクエストの前記第１の部分に応答しないことにより前記書き込みリクエストを延期することによって、読み出しリクエストが保留中であるアドレスに対して書き込みが実施されるという表示を含む、書き込みリクエストの第１の部分の受信に応答するための、コヒーレンシ制御手段と、を備える、コヒーレンシ制御実行手段。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の背景
本発明の分野は、データ処理の分野に関し、具体的には、データコヒーレンシの維持の分野に関する。
【背景技術】
【０００２】
データ処理システムにおいて、データアクセス速度を向上するために、データはしばしば、プロセッサのローカルに記憶される。しかしながら、これによって、データの複数のコピーが保存されることになる可能性があり、データの異なるコピー間のデータコヒーレンシを確実にするよう対処しなければならない。このため、データをローカルに記憶する際、データとともに、データのコピーが有効または無効なコピーであるか、クリーン、すなわち、メモリに記憶されているのと同じバージョン、またはダーティ、すなわち、メモリに記憶されているバージョンよりも新しいバージョンであるかを示す、状態インジケータがしばしば記憶される。いくつかのシステムではその上、そのコピーが唯一のローカルコピーであることを示すデータ一意インジケータ、または２つ以上のローカルコピーが存在することを示す共有インジケータ等のインジケータが存在する場合がある。
【０００３】
データコヒーレンシは、読み出しリクエストに応答して、データの最新バージョンが記憶されている場所を確認するためにローカルデータストアをスヌープする、スヌープリクエストを用いて維持される。このデータは、次いで呼び出される場合があり、データに関連する状態インジケータが更新される場合がある。ローカルストアに記憶されたデータのコピーがダーティである場合、ローカルストアから出される前に、メモリに書き戻されなければならない。
【０００４】
データハザードは、あるアドレスに対する書き込みリクエストがリクエストされた時にそのアドレスに対する読み出しリクエストおよびそれが生成したスヌープがまだ保留中であると、発生する可能性がある。従来のシステムではこの問題に対応するために、書き込み保留を有するアドレスに対するスヌープ応答は、書き込みが完了するまでブロックされ、完了時に進行することができる。これは、書き込みが進行できない場合、デッドロック状況になる可能性がある、相互リソース依存性が存在する可能性があるので、書き込みの今後の進捗を保証する十分なバッファスペースを必要とするという欠点を有する。システムがさらに多くのレシピエントおよびイニシエータを備えて機能を高めるにつれ、書き込みの今後の進捗を保証する十分なバッファスペースを提供するというこの問題もさらに大きくなる。これは、電力および領域の密接な関係を有する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
電力消費およびダイ領域を過度に増大することなく、データハザードを回避することが望まれる。
【課題を解決するための手段】
【０００６】
本発明の第１の態様は、データアクセスリクエストを生成するための回路と、データを記憶し、当該データに関連する状態インジケータを記憶するためのデータストアであって、当該状態インジケータが、当該データが無効であるか、有効でありかつ同じ値が他の場所に記憶されているか、有効でありかつ他の場所に記憶された当該データのバージョンのより新しいバージョンであるか、のうちの少なくとも１つを示す、データストアと、コヒーレンシコントローラを介して、少なくとも１つのレシピエントデバイスへの伝送のために当該データアクセスリクエストを出力するため、および当該コヒーレンシコントローラから信号およびデータアクセスリクエストを受信するための少なくとも１つのポートと、を備え、当該回路が、当該データストアに記憶されたデータを当該少なくとも１つのレシピエントデバイスのうちの１つに書き込むための書き込みリクエストと、当該少なくとも１つのレシピエントデバイスのうちの１つに記憶されたデータを読み出すための読み出しリクエストとを生成するように構成され、当該回路が、書き込みが実施されるという表示と、書き込まれる当該データのアドレスとを含む第１の部分、および第２の部分という、２つの部分で当該書き込みリクエストを生成するように構成され、当該イニシエータデバイスは、制御回路をさらに備え、当該制御回路は、当該少なくとも１つのポートでのスヌープリクエストの受信に応答して当該スヌープリクエストを受容し、当該第１の部分が出力され、データ受容保証が全く受信されていない、保留中の書き込みリクエストの場所へのアクセスを当該スヌープリクエストが要求しているかに関係なく実行されるように当該スヌープリクエストを制御し、当該少なくとも１つのポートでの当該データ受容保証の受信、および書き込みされる当該データが有効かつ他の場所に記憶された当該データのバージョンのより新しいバージョンであるという現在の状態に応答して、当該データ書き込みの当該第２の部分として、当該データおよび当該データが書き込まれる前の当該データの当該現在の状態を出力するように構成される。
【０００７】
本発明は、いくつかのシステムにおいて、書き込みリクエストを２つの部分で送信することが利点である場合があることを認識する。例えば、書き込みリクエストがリモートのレシピエントへ送信される場合、レシピエントは書き込みを受容するための容量を有さない場合がある。このような場合、書き込みは、再び送信される必要があり、再び受容されない場合がある。書き込みリクエストでは通常のように、書き込みリクエストとともにデータが送信される場合、この書き込みリクエストを継続的に送信および再送信するために使用される帯域幅の量は大きい。いくつかのシステムでは、書き込みリクエストは、この問題に対応するために２つの部分で送信することができる。第１の部分は、リクエストが書き込みであることの表示、および書き込まれるアドレスの表示を提供する。完全な書き込みリクエストを受容することができると判定されると、書き込みリクエストの第１の部分が受容されるとともに応答が送信され、この応答に応答して、データを含む書き込みリクエストの第２の部分が送信される。これは、書き込みリクエストに遅延を追加する場合があるが、書き込みリクエストは実施が重要ではないので、これが許容可能な場合がある。
【０００８】
このように、本発明は、データが特定のアドレスに書き込まれることを示す第１の部分と、データが受容されることを保証する、第１の部分に対する応答が受信された際にデータを送信する第２の部分を含む、このような２つの部分の書き込みリクエストを利用する。これによって、レシピエントが受容できない場合に、データを添付したリクエストが複数回送信されることを防止する。
【０００９】
本発明はまた、この２つの部分の様式でデータ書き込みリクエストを実装するシステムでは、第１の部分に応答しないことによって、保留中のデータ書き込みを延期することが比較的簡単であることも認識する。このため、保留中の書き込みが存在する場合にスヌープ応答を延期するのではなく、本発明のイニシエータデバイスは、同じアドレスに対する書き込みが保留中であるかに関係なく、同じ様式でスヌープリクエストを取り扱う。すなわち、先行技術で発生するように、書き込みが完了する間、保留中のスヌープがブロックされず、書き込みの今後の進捗を保証するために必要な保有されたバッファ空間が要求されない。
【００１０】
同じアドレスに対するスヌープおよび書き込みリクエストが同時に保留中である際に発生する潜在的なデータハザードは、少なくとも、スヌープ後のデータがダーティデータである場合、データの状態およびデータ自体に関する情報もまたコヒーレンシコントローラに伝送されるという条件で、スヌープリクエストに対する応答および書き込みデータが送信されるコヒーレンシコントローラによって処理することができる。
【００１１】
データハザードが存在しなかったかのようにスヌープに応答することに加えて、データとともに状態情報をコヒーレンシコントローラに伝送することによって、コヒーレンシコントローラによってコヒーレンシ制御を管理することができ、イニシエータデバイスは、ハザードチェック回路を全く必要とせず、特に、多数のイニシエータデバイスを有する大型システムにおいて、顕著な領域の節約を提供する。
【００１２】
本システムのさらなる利点は、作成されるデータフローが均一で、潜在的なハザードにも関わらず、読み出し、スヌープ、および書き込みの各々が概して完了することである。これによって、モデリングおよび検証が簡単になる。
【００１３】
その上、同時保留中のリクエストのうちの１つを延期することに起因する追加の遅延は、読み出しではなく、書き込みに追加され、書き込みは実施が重要ではないため、利点である。
【００１４】
いくつかの実施形態では、当該制御回路は、実行されている当該スヌープリクエストに応答して、適切な場合は当該データに関連する当該状態インジケータを更新し、当該スヌープリクエストに対する応答として、当該データとともに、当該更新の前および後の当該状態インジケータの表示を出力するように構成される。
【００１５】
スヌープリクエストは、潜在的なデータハザードが存在してもしなくても同じ様式で処理される。このため、スヌープに応答して、スヌープ前のデータの状態およびスヌープ後のデータの状態とともに、データが返される。
【００１６】
いくつかの実施形態において、当該制御回路は、当該少なくとも１つのポートでの当該データ受容保証の受信に応答し、当該書き込みリクエスト前の当該データの当該状態に関係なく、当該データ書き込みリクエストの当該第２の部分として、当該データ、および当該書き込みの当該第２の部分が実施される前の当該データの状態を生成し、出力するように構成される。
【００１７】
データの状態インジケータが、いくつかの場合には、データ書き込みが実施される必要がないことを示す場合があり、このため、データがコヒーレンシコントローラへ伝送される必要がないが、全ての場合にデータおよびデータの状態を伝送することが利点である場合がある。これによって、必要以上に多くの情報が伝送されることになる場合があるが、イニシエータデバイスの動作が、データ状態に関係なく均一であることになり、これによって、ロジック回路およびこの回路の検証がより簡単になり、均一なデータフローを生成することにもなる。
【００１８】
いくつかの実施形態において、当該制御回路は、当該少なくとも１つのポートでの当該データ受容保証の受信、および当該書き込みリクエストの当該第２の部分が実施される前の当該データが無効であるという当該状態に応答して、当該データ書き込みリクエストの当該第２の部分として、書き込みキャンセルリクエストを出力するように構成される。
【００１９】
書き込みが事実キャンセルすることができ、データが送信される必要がない場合、スヌープ後にデータのいくつかの状態が存在するが、このような場合、データ書き込みリクエストの第２の部分として、書き込みキャンセルリクエストを伝送することが利点である場合がある。これは、データおよびデータの状態を伝送するよりも少ない帯域幅を必要とする。２つの部分の書き込みにおいて、書き込みリクエストの第１の部分は、リクエストが到着することを示し、書き込みリクエストの第１の部分が受容されると、次いで、データを受容することができるという保証が存在するので、応答が送信される。これは、このリクエストのために記憶場所が保有されることを意味する場合がある。このような場合、書き込みが進行することがない場合、このリクエストのために保有されたいずれかの記憶場所およびリクエストに関するデータを解放することができるように、書き込みリクエストがキャンセルされたという表示が送信されることが明らかに重要である。データの状態がスヌープ中に無効になった場合、データが明らかに、さらに書き込まれることは必要ではなく、したがって、この場合は、書き込みがキャンセルされなければならない。
【００２０】
いくつかの実施形態において、当該制御回路は、当該少なくとも１つのポートでの当該データ受容保証の受信、および当該書き込みが実施される前の当該データが有効でありかつ同じ値が他の場所に記憶されているという当該状態に応答して、当該データ書き込みリクエストの当該第２の部分として、書き込みキャンセルリクエストを出力するように構成される。
【００２１】
データが無効である場合に加えて、データが有効であるが、他の場所に記憶されたデータの同じバージョンが存在する等、クリーンである場合、書き込みは確かに完了する必要はないが、この場合完了することができる。このため、いくつかの実施形態において、イニシエータデバイスは、書き込みを進行し、データおよび状態の表示を伝送するように選択する場合があるが、一方、他の実施形態では、帯域幅を節約し、書き込みキャンセルリクエストを伝送するかもしれない。
【００２２】
いくつかの実施形態において、当該書き込みトランザクションリクエストの当該第１の部分のサイズは、読み出しトランザクションリクエストのサイズと同じである。
【００２３】
書き込みリクエストを２つの部分に分割することのさらなる利点は、これらの部分がより小さいことであり、第１の部分は、読み出しリクエストと同じサイズにすることができ、これらのリクエストを処理するためのロジックをより単純にする。
【００２４】
本発明の第２の態様は、少なくとも１つのイニシエータデバイスと、少なくとも１つのレシピエントデバイスとを備えるデータ処理装置の中に記憶されたデータのデータコヒーレンシを維持するためのコヒーレンシコントローラを提供し、当該コヒーレンシコントローラは、当該少なくとも１つのイニシエータデバイスからデータアクセスリクエストを受信し、当該少なくとも１つのイニシエータデバイスおよび当該少なくとも１つのレシピエントデバイスのうちの少なくとも１つへ、データアクセスリクエストおよびスヌープリクエストを伝送するための少なくとも１つのポートと、保留中のデータアクセスリクエストを記憶するためのバッファと、当該データアクセスリクエストに応答して、当該スヌープリクエストを生成するためのスヌープリクエスト生成回路であって、当該スヌープリクエストが、アクセスされる当該データが当該イニシエータおよびレシピエントデバイスのうちの１つ以上にローカルに記憶されているかどうかを判定するためのものである、スヌープリクエスト生成回路と、読み出しリクエストが保留中であるアドレスに対して書き込みが実施されることの表示を含む、書き込みリクエストの第１の部分の受信に応答して、当該保留中の読み出しリクエストが完了される後まで、当該書き込みリクエストの当該第１の部分に応答しないことによって、当該書き込みリクエストを延期する、コヒーレンシ制御回路とを備える。
【００２５】
本発明は、この２つの部分の様式でデータ書き込みリクエストを実装するシステムでは、第１の部分に応答しないことによって、保留中のデータ書き込みを延期することが比較的簡単であることを認識する。さらに、同じアドレスに対する、保留中の読み出し／スヌープリクエストと保留中の書き込みリクエストの間の潜在的データハザードに応答して、一方が、スヌープリクエストではなく書き込みリクエストを延期する場合、読み出しの遅延は影響されず、書き込みを記憶するための空間を保証し、それによって進捗を可能にすることに関連するバッファ要件が発生しないことを認識する。
【００２６】
このように、本発明の一態様によるコヒーレンシコントローラは、同じアドレスに対する保留中の読み出しリクエストに応答して、保留中の書き込みリクエストを延期し、書き込みリクエストが継続することを可能にする前に、読み出しリクエストが完了することを可能にする。少なくともいくつかの場合に、スヌープリクエストに応答して発生する、書き込まれるデータの状態の変化は、コヒーレンシコントローラへのいずれかの返されたデータとともに通信されるという条件で、コヒーレンシコントローラは、コヒーレンシを維持することができ、読み出しの完了時に、書き込みリクエストの第１の部分に応答することができ、それによって、書き込みを進行することができることを発信する。
【００２７】
これは、読み出しよりも書き込みの遅延を増加させ、スヌープが延期された場合に要求される、書き込みが今後進捗することが保証されることを確実にすることに関連するバッファ要件を回避するという利点を有し、さらに、読み出しおよび書き込みが同じロジックブロックを用いて処理することができる、同じ様式で処理されるという追加の利点を有する。
【００２８】
いくつかの実施形態において、当該コヒーレンシ制御回路は、当該読み出しリクエストの完了を示す信号の受信に応答して、当該書き込みリクエストの当該第１の部分に応答する。
【００２９】
読み出しリクエストが完了すると、コヒーレンシコントローラは、書き込みリクエストの第１の部分に応答することによって、書き込みがさらに進行することを可能にする。
【００３０】
いくつかの実施形態において、当該コヒーレンシ制御回路は、当該書き込み前のデータおよび当該データの状態の表示を含む、当該書き込みリクエストの当該第２の部分の受信に応答して、当該状態が、当該データが有効でありかつ他の場所に記憶された当該データのバージョンよりも新しいバージョンであることを示す場合、当該データを当該レシピエントデバイスに書き込む。
【００３１】
コヒーレンシ制御回路がデータおよびデータの状態を受信すると、次いで、状態に依存して、データを用いて何を実行するかを判定することができる。このように、データが有効かつ他の場所に記憶されたデータのバージョンよりも新しい場合、データをレシピエントデバイスに書き込むように進行する。しかしながら、データが無効な場合は、データをさらに書き込まないが、一方、データが有効であるがクリーン、すなわち、他の場所に記憶された値と同じ場合は、データをさらに書き込まないか、または進行してデータをさらに書き込むかのいずれかを選択することができる。後者の場合は、より多くの帯域幅を必要とするが、均一の進行様式であり、システムの試験および検証時には利点を有する場合がある。
【００３２】
いくつかの場合、書き込みリクエストの第２の部分として、データおよびデータの状態の表示を送信せず、書き戻されることを必要とせず、書き込みリクエストがキャンセルされるようなデータの状態を示す、書き込みキャンセルリクエストが送信される場合がある。書き込みリクエストの第１の部分に応答する前に、コヒーレンシコントローラの中の記憶場所がデータのために保有されていた場合があるため、これが送信されることが重要である。書き込みキャンセルリクエストは、コヒーレンシコントローラに対して、この記憶場所はもはや必要がなく、他のリクエストによって使用するために解放することができることを示す。
【００３３】
いくつかの実施形態において、当該少なくとも１つのバッファ内の全ての記憶場所が、起動時に読み出しおよび書き込み両方のリクエストを記憶するために利用可能であり、当該コヒーレンシ制御回路が、当該書き込みリクエストの当該第１の部分を受容時に当該書き込みリクエストの当該第２の部分のために記憶場所を保有し、当該記憶場所が保有されていることを示すデータ受容保証応答で当該書き込みリクエストの当該第１の部分に応答するように構成される。
【００３４】
先行技術のシステムでは、潜在的データハザードに応答して、スヌープリクエストがブロックされる場合、スヌープリクエストが継続できる前に完了することが必要である書き込みがブロックされ、デッドロック状態を発生させないように、書き込みトランザクションが今後進捗することを保証されることが重要である。これを確実にするために、コヒーレンシコントローラの中のバッファは、それらのバッファ内部に、保留中の書き込みトランザクション専用に保有された記憶場所を有していた。これは、これらのデバイス内に必要な記憶容量を増加させるという不利益を有し、これは、多数のそのようなデバイスを備えるより大型システムに関して顕著な影響を有する。本発明は、書き込みリクエストをブロックするのであって、スヌープ応答をブロックしないので、この様式で書き込みリクエストの今後の進捗を保証する必要がなく、このため、バッファ内部に書き込み専用に保有される所定の記憶場所を必要としない。このように、本発明の実施形態において、バッファは、起動時に読み出しおよび書き込み両方のリクエストを記憶するために利用可能であり、バッファ内の記憶場所が書き込みリクエストのために一時的に保有される場合があるという、応答が書き込みリクエストの第１の部分に与えられる場合の動作中に限定される。このため、各記憶場所が、読み出し、書き込み、またはスヌープいずれかのリクエストのために使用することができ、バッファをより小さくすることができるので、バッファのより効率的な使用が行われる。
【００３５】
本発明の第３の態様は、本発明の第１の態様による少なくとも１つのイニシエータデバイスと、本発明の第２の態様によるコヒーレンシコントローラと、少なくとも１つのレシピエントデバイスとを備える、データ処理システムを提供する。
【００３６】
本発明の第４の態様は、データアクセスリクエストを生成し、イニシエータデバイス内でスヌープリクエストを処理するための方法を提供し、データを記憶し、当該データに関連する状態インジケータを記憶することとであって、当該状態インジケータが、当該データが有効であるか、他の場所に記憶されているか、および他の場所に記憶された当該データのバージョンよりも当該データの新しいバージョンであるか、のうちの少なくとも１つを示すことと、コヒーレンシコントローラから信号およびデータアクセスリクエストを受信することと、当該データストアに記憶されたデータを少なくとも１つのレシピエントデバイスに書き込むための書き込みリクエストと、当該少なくとも１つのレシピエントデバイスに記憶されたデータを読み出すための読み出しリクエストとを生成することとを含み、当該書き込みリクエストが、２つの部分で生成され、第１の部分が、書き込みが実施されることの表示と、書き込まれる当該データのアドレスとを含み、第２の部分が、当該少なくとも１つのポートでのデータ受容保証の受信に応答して伝送され、スヌープリクエストの受信に応答して、当該スヌープリクエストを受容し、当該第１の部分が出力され、データ受容保証が全く受信されていない保留中の書き込みリクエストの場所へのアクセスを当該スヌープリクエストが要求しているかどうかに関係なく、同じ様式で実行されるように当該スヌープリクエストを制御することと、当該データ受容保証の受信、および書き込まれる当該データが有効かつ他の場所に記憶された当該データのバージョンのより新しいバージョンであるという状態に応答して、当該データ書き込みの当該第２の部分として、当該データ、および当該データが書き込まれる前の当該データの当該現在の状態を出力することとを含む。
【００３７】
本発明の第５の態様は、データアクセスリクエストのコヒーレンシを維持する方法を提供し、当該少なくとも１つのイニシエータデバイスからデータアクセスリクエストを受信することと、当該少なくとも１つのイニシエータデバイスおよび当該少なくとも１つのレシピエントデバイスのうちの少なくとも１つへ、当該データアクセスリクエストおよびスヌープリクエストを伝送することと、保留中のデータアクセスリクエストを記憶することと、当該データアクセスリクエストに応答して、当該スヌープリクエストを生成することであって、当該スヌープリクエストが、アクセスされる当該データが当該イニシエータおよびレシピエントデバイスのうちの１つ以上にローカルに記憶されているかどうかを判定するためのものであることと、読み出しリクエストが保留中であるアドレスに対して書き込みが実施されることの表示を含む、書き込みリクエストの第１の部分の受信に応答して、当該保留中の読み出しリクエストが完了される後まで、当該書き込みリクエストの当該第１の部分に応答しないことによって、当該書き込みリクエストを延期することとを含む。
【００３８】
本発明の第６の態様は、イニシエータ手段を提供し、データアクセスリクエストを生成するための回路手段と、データを記憶し、当該データに関連する状態インジケータを記憶するためのデータ記憶手段であって、当該状態インジケータが、当該データが有効であるか、他の場所に記憶されているか、および他の場所に記憶された当該データのバージョンよりも当該データの新しいバージョンであるか、のうちの少なくとも１つを示す、データ記憶手段と、コヒーレンシコントローラを介して、少なくとも１つのレシピエントデバイスへの伝送のために当該データアクセスリクエストを出力し、当該コヒーレンシコントローラから信号およびデータアクセスリクエストを受信するための少なくとも１つのポートと、を備え、当該回路手段が、当該データストアに記憶されたデータを当該少なくとも１つのレシピエントデバイスのうちの１つに書き込むための書き込みリクエストと、当該少なくとも１つのレシピエントデバイスのうちの１つに記憶されたデータを読み出すための読み出しリクエストとを生成するためであり、当該回路手段は、２つの部分で当該書き込みリクエストを生成するためであって、第１の部分が、書き込みが実施されることの表示と、書き込まれる当該データのアドレスとを含み、第２の部分は、当該少なくとも１つのポートでのデータ受容保証の受信に応答して伝送され、当該イニシエータ手段は、スヌープリクエストを受容することによって、当該少なくとも１つのポートでの当該スヌープリクエストの受信に応答して、当該第１の部分が出力され、データ受容保証が全く受信されていない保留中の書き込みリクエストの場所へのアクセスを当該スヌープリクエストが要求してもしなくても同じ様式で実行されるように当該スヌープリクエストを制御し、当該少なくとも１つのポート手段での当該データ受容保証の受信、および書き込まれる当該データが有効でかつ他の場所に記憶された当該データのバージョンよりも新しいバージョンであることに応答して、当該データ書き込みの当該第２の部分として、当該データ、および当該データが書き込まれる前の当該データの当該現在の状態を出力する、制御手段をさらに備える。
【００３９】
本発明の第７の態様は、少なくとも１つのイニシエータデバイスと、少なくとも１つのレシピエントデバイスとを備えるデータ処理装置の中に記憶されたデータのデータコヒーレンシを維持するためのコヒーレンシ制御手段を提供し、当該コヒーレンシ制御手段は、当該少なくとも１つのイニシエータデバイスからデータアクセスリクエストを受信し、当該少なくとも１つのイニシエータデバイスおよび当該少なくとも１つのレシピエントデバイスのうちの少なくとも１つへ、データアクセスリクエストおよびスヌープリクエストを伝送するための少なくとも１つのポート手段と、保留中のデータアクセスリクエストを記憶するためのバッファ手段と、当該データアクセスリクエストに応答して、当該スヌープリクエストを生成するためのスヌープリクエスト生成手段であって、当該スヌープリクエストが、アクセスされる当該データが当該イニシエータおよびレシピエントデバイスのうちの１つ以上にローカルに記憶されているかを判定するためのものである、スヌープリクエスト生成手段と、当該保留中の読み出しリクエストが完了される後まで、当該書き込みリクエストの当該第１の部分に応答しないことによって、当該書き込みリクエストを延期することによって、読み出しリクエストが保留中であるアドレスに対して書き込みが実施されることの表示を含む、書き込みリクエストの第１の部分の受信に応答するための、コヒーレンシ制御手段とを備える。
【００４０】
本発明の上記および他の目的、特長、および利点は、添付の図面を参照しながら一読される以下の発明を実施するための形態から明らかになるであろう。
【図面の簡単な説明】
【００４１】
【図１】本発明の実施形態によるイニシエータデバイスを示す。
【図２】本発明の実施形態によるコヒーレンシコントローラを示す。
【図３】本発明の実施形態によるデータ処理システムを示す。
【図４ａ】本発明の実施形態によるデータ処理システムによるトランザクションの進捗を模式的に示す。
【図４ｂ】本発明の実施形態によるデータ処理システムによるトランザクションの進捗を模式的に示す。
【図４ｃ】本発明の実施形態によるデータ処理システムによるトランザクションの進捗を模式的に示す。
【図５】本発明の実施形態によるイニシエータデバイスによって実施される方法のステップを例示するフロー図を示す。
【図６】本発明の実施形態によるコヒーレンシコントローラによって実施される方法のステップを例示するフロー図を示す。
【発明を実施するための形態】
【００４２】
図１は、本発明の実施形態によるイニシエータデバイス１０を示す。本イニシエータデバイス１０は、データ処理装置、プロセッサコア、ＤＭＡコントローラ、グラフィックスエンジン、またはデータアクセスリクエストを生成する実際の任意のデバイスの場合がある。示されているイニシエータデバイス１０には、データアクセスリクエストを生成する中央処理ユニット１２が存在する。また、データのローカルコピーを記憶するためのキャッシュ２０も存在する。キャッシュはそれ自身、キャッシュの中で実施されるコヒーレンシ動作および無効化動作に応答して、書き込みリクエストを生成することができる。
【００４３】
キャッシュ２０は、データのローカルコピーとともに、これらの特定のローカルコピーのステータスを示す状態インジケータ２２を記憶する。状態は、データが有効または無効であることを示す場合がある。キャッシュの中のデータエントリは、キャッシュラインが他のデータ項目を記憶するために自由に使用することができることを示すよう、無効としてマークされる。状態は、そこに記憶されたデータのコピーが、メモリに記憶されたコピーと同じであることを示す、「クリーン」の場合もある。状態はまた、データが「ダーティ」、すなわち、他の場所に記憶されたデータのいずれのコピーよりも、特にメモリに記憶されたデータのコピーよりも新しいコピーであることを示す場合もある。このデータの他のローカルコピーが他の場所に存在するかどうかを示す、「共有」および「一意」等、他の状態が存在する場合もある。
【００４４】
キャッシュ２０内部のデータにアクセスする際、このデバイスおよび他のデバイスの中で処理されているデータのコヒーレンシが維持されることを確実にするために、コヒーレンシ動作が実施される場合がある。これらのコヒーレンシ動作は、キャッシュ２０によって生成される書き込みリクエストになる場合がある。
【００４５】
このように、多様な書き込みおよび読み出しリクエストは、ＣＰＵ１２によって生成され、書き込みリクエストは、キャッシュ２０によって生成される場合があり、これらは、発信リクエストバッファ３０の中に記憶される。コヒーレンシコントローラを経由して、トランザクションリクエストのレシピエントに伝送するために、イニシエータデバイスから中間接続点に発行される準備が整うと、保留中リクエストバッファ４０に入る。このバッファは、これらのリクエストに関連するデータを記憶するための追加のスペースを有する場合がある。これらは、これらが送信されたデバイス、この場合はコヒーレンシコントローラからの応答が受信されるまで、このバッファに記憶される。
【００４６】
イニシエータデバイス１０はまた、リクエストの発行、ならびにポート１１に到着し、バッファ１４の中に保留中リクエストとして記憶される、データおよび着信スヌープリクエストの受信を制御する、制御回路５０も有する。イニシエータデバイス１０は、ローカル記憶装置２０を有するので、システムの異なるデバイスの中に記憶されたデータのコヒーレンシを制御している外部のコヒーレンシコントローラは、スヌープリクエストを生成し、イニシエータデバイス１０へ伝送して、キャッシュ２０が、アクセスを希望しているデータのローカルコピーを記憶しているかを判定する場合がある。このように、スヌープリクエストは、ポート１１で受信され、スヌープ応答は、制御５０からの制御信号に応答して、バッファ１５を介して出力される。これらのスヌープ応答は、ローカルに記憶されている場合はスヌープリクエストのデータを返し、スヌープリクエストがデータの状態を変更する場合があるので、スヌープの前および後のデータの状態の表示も返すことになる。この様式で状態を送信することによって、コヒーレンシコントローラは、コヒーレンシを維持するために要求される任意の必要な動作を実施することが可能である。
【００４７】
このイニシエータデバイスでは、データハザードチェックロジックが存在せず、このため、書き込みリクエストが保留中で、スヌープリクエストが保留中の書き込みリクエストと同じアドレスで受信された場合、スヌープリクエストは、保留中のスヌープリクエストが存在していないかのように同じ様式で処理されることになる。これは、イニシエータデバイスが、ハザードチェックロジックを有さないので、データハザードが存在する場合があることを認識しないためである。
【００４８】
この実施形態において、書き込みリクエストは２つの部分で生成され、このため、書き込みリクエストの第１の部分が発行され、これに対する応答が受信されると、データ、書き込みリクエストの第２の部分であることを特定する識別子、および書き込み前のデータの状態から成る、書き込みリクエストの第２の部分が、伝送される。書き込みリクエストの第１の部分に対する応答は、書き込みリクエストを受信しているデバイスが、データを記憶するための記憶空間を有し、このため、書き込みリクエストの第２の部分を受信する準備ができていることを示す。これによって、データが、それを受信する空間があるだろうという希望の下、推測して送信されることを回避する。データは、多量の帯域幅を利用し、このため、送信しなければならないものだけを送信することは、有利である。
【００４９】
書き込みリクエストの第１の部分が発行された後、同じアドレスに対するスヌープリクエストが受信される場合がある。イニシエータデバイス１０内部にデータハザードチェックロジックが存在しないことから、この潜在的なデータハザードは認識されず、スヌープリクエストは通常の様式で処理される。このように、スヌープリクエストは、書き込みリクエストによって書き込まれるデータにアクセスし、その現在の状態を判定し、データを返して、状態を適切として更新する。
【００５０】
制御回路５０は、書き込みリクエストを進行する前に、書き込みリクエストの第１の部分に対する応答の受信を待機し、これは、この応答を生成するコヒーレンシコントローラが、潜在的なデータハザードを管理中で、スヌープリクエストを受信し、それが関係する読み出しリクエストが完了するまで応答を生成しないので、スヌープリクエストが完了した後に受信される。書き込みリクエストの第１の部分に対する応答が受信されると、データならびにデータの現在の状態の表示、すなわち、スヌープリクエスト後のデータの状態が出力される。データの状態は、次いで、必要に応じて更新される場合がある。
【００５１】
ここで、いくつかの場合には、送信されるデータの状態がスヌープリクエストによって修正されていて、このため、書き込みがもはや必要とされない場合があることが、この時点で認識される。このため、いくつかの実施形態では、制御回路５０は、キャッシュ２０からデータの状態の表示を受信し、スヌープ後のデータの状態が書き込みがまだ必要とされると判定する場合にのみ、書き込みリクエストの第２の部分に応答する。データがもはや書き込まれる必要がないと判定された場合、データで応答することはないが、しかしながら、書き込みキャンセルリクエストで応答する場合がある。書き込みリクエストの第１の部分に対する応答が、コヒーレンシコントローラにデータのための保証された場所が存在することを示したので、これを実行する。これは概して、このデータのための記憶場所を保有することによって実行されており、このため、書き込みが進行しない場合、保有された記憶場所を解放できるように、コヒーレンシコントローラにこれを伝達することが重要である。
【００５２】
必要がない時にデータを送信しないことは帯域幅要件を削減することになるが、データとともに、書き込みのためにまだ必要であるかというデータの状態の表示を伝送することは、これが均一の動作であり、それを実装するために必要なロジックおよび回路を検証するために必要なロジックがより単純であるために、利点である場合がある。
【００５３】
図２は、本発明の実施形態によるコヒーレンシコントローラ６０を示す。コヒーレンシコントローラ６０は、ポート６２でイニシエータデバイス１０からリクエストを受信する。コヒーレンシコントローラ６０は、多様なイニシエータデバイスおよびメモリ等のレシピエントデバイスの中にローカルに記憶された異なるデータコピーのコヒーレンシを制御する。コヒーレンシコントローラ６０は、受信および出力されるリクエストを制御するための制御回路７０を有する。制御回路７０は、ポート６２に到着するリクエストを受信する、アロケータ８０を制御する。これらのリクエストは、書き込みリクエストの第１の部分または読み出しリクエストであってもよく、または記憶されるデータを含む書き込みリクエストの第２の部分であってもよい。アロケータ８０は、データバッファ８５に到着するデータを割り当てる。アロケータ８０は、読み出しリクエストおよび書き込みリクエストの第１の部分を、リクエストバッファ９０に対して割り当て、ハザードチェックロジック９２を通じて最初にチェックさせる。ハザードチェックロジック９２は、同じアドレスに対する任意の保留中リクエストが存在するかどうかを判定する。ハザードチェックロジック９２が、読み出しが保留中であるアドレスに対して受信された書き込みリクエストの第１の部分が存在すると判定すると、制御回路７０は、応答ジェネレータ１００が、書き込みリクエストのこの第１の部分に応答することを許可しない。書き込みリクエストの第１の部分が受信され、ハザードチェックロジック９２が、このアドレスに対する保留中の読み出しが存在すると判定した場合、制御回路７０は、保留中の読み出しリクエストおよび任意の他の保留中のハザードとなるリクエストが完了するまで、応答ジェネレータ１００が、書き込みリクエストの第１の部分に対する応答を生成することを阻止する。
【００５４】
コヒーレンシコントローラ６０はまた、特定アドレスに対する読み出しリクエストの受信に応答して、そのアドレスにスヌープリクエストを生成する、スヌープジェネレータ１０５も有する。これらのスヌープリクエストは、ローカル記憶装置を有するイニシエータデバイスに送信され、ローカルストアのいずれかのこのアドレスに記憶されたデータ項目が存在するかどうかをチェックする。コヒーレンシコントローラ６０はまた、これらのスヌープリクエストに対する応答を受信し、処理するためのスヌープ応答プロセッサ１１０も有する。スヌープ応答は、データならびにスヌープの前および後のデータの状態を返す場合があり、スヌープ応答プロセッサは、返されたデータをデータバッファ８５に記憶する。特定の読み出しに対するスヌープが完了すると、おそらく、メモリアドレスを読み出すことによって、またはおそらく、読み出しを生成したイニシエータデバイスにスヌープが返したデータを返すことによって、読み出しを完了することができる。制御回路７０はまた、データの状態がこれが要求されることを示す場合、スヌープによって返されたデータをメモリに書き込む場合もある。
【００５５】
読み出しリクエストに対する応答がコヒーレンシコントローラ６０で受信されると、制御回路７０は、記憶された書き込みリクエストが進行することを可能にする。これは、応答ジェネレータ１００を使用して、応答を発行することによって実行する。
【００５６】
書き込みのデータは、次いで、そのデータの状態とともに、コヒーレンシコントローラに返される場合がある。コヒーレンシコントローラは次いで、データの状態によって示されている何らかのステップを実施することによって、データコヒーレンシが維持されることを確実にすることができる。データとともに伝送されるデータの状態は、書き込みリクエストの第２の部分が実施される直前の状態である。このように、スヌープに起因して発生する状態の変更も発生したことになり、データとともに返された状態はこれを反映することになる。これによって、コヒーレンシコントローラ６０がデータのコヒーレンシを維持することを可能にし、このため、潜在的なデータハザードが存在し、イニシエータデバイスの中にはハザードチェックロジックが存在しないが、コヒーレンシが維持され、データハザードが回避される。
【００５７】
データの状態が、書き込みがもはや進行する必要がない場合、イニシエータデバイスはデータを伝送せず、書き込みリクエストの第２の部分の状態は、その代わりに書き込みリクエストがキャンセルされた信号を送信する場合がある。これはより少ない帯域幅を必要とし、したがって、いくらかの利点を有する。この書き込みリクエストがキャンセルされた信号がコヒーレンシコントローラ６０によって受信されると、制御回路７０は、書き込みのために保有されていた、データバッファ８５の中の場所を解放する。
【００５８】
記憶場所の保有は、個別の記憶場所が特定のデータ書き込みのために保有されたと記載されているが、実装は、書き込みリクエストの第２の部分のために保有される、データバッファのいくつかの場所を示すためのカウンタを単純に増分する場合があり、制御回路７０は、このいくつかの記憶場所が、利用可能に保たれ、書き込みリクエストの第２の部分によってのみ使用されることを確実にすることに注意されたい。
【００５９】
図３は、本発明の実施形態によるデータ処理システムを示す。このシステムには、処理コア、ＤＭＡコントローラ、入力／出力プロセッサ、およびグラフィックスエンジンから成る、いくつかのイニシエータデバイス１０が存在する。また、このシステムおよびメモリ２００の中にはいくつかのコヒーレンシコントローラ６０も存在する。この実施形態では、メモリ２００は、異なるデバイスによってアクセスするための異なる領域を有し、これらの領域のメモリのうちの１つ以上に特定するコヒーレンシコントローラおよびメモリコントローラが存在する。この実施形態では、メモリ２００にアクセスする２つのメモリコントローラ１３０および３つのコヒーレンシコントローラ６０が存在する。
【００６０】
トランザクションリクエストの進行のいくつかの例は図４ａ〜４ｃに示される。
【００６１】
図４ａは、ＲＮ０、ＲＮ１およびＲＮ２である、リクエストノードとして参照される、３つの異なるイニシエータデバイスと、図２のコヒーレンシコントローラ６０に対応するホームノードと、メモリコントローラＭＣとの間の例示的トランザクションリクエストフローを示す。
【００６２】
この実施形態では、読み出し共有リクエストは、ＲＮ２によって発行され、データのローカルコピーを記憶している場合がある、多様なイニシエータデバイスにクリーンなスヌープリクエストを出力する、ホームノードＨＮで受信される。クリーンなスヌープリクエストは、ＲＮ０へ送信される。ＲＮ０は、ほぼ同時に、同じアドレスに書き戻しを発行している。書き戻しリクエストは、メモリにダーティデータを書き込むためのリクエストである。このため、データの状態はこの場合には初期に一意で、ダーティであり、すなわち、それはそのデータの唯一のローカルコピーであり、メモリの中のコピーより新しい。このため、キャッシュの中のエントリが別のデータ項目によって使用することができる前に、書き戻しリクエストを使用してメモリに記憶されることが必要である。
【００６３】
このように、同じアドレスに対して２つの保留中リクエストが存在する。ホームノードＨＮは、書き戻しの受信時に、同じアドレスに対する保留中読み出しリクエストが存在することを認識し、第１の部分に応答しないことによって、２つの部分の書き込みの第１の部分である、書き戻しリクエストを延期する。
【００６４】
ＲＮ０は、データハザードチェックロジックを全く有さず、クリーンなスヌープリクエストに対する応答を送信することによって、保留中の書き戻しリクエストに関係なく、スヌープを処理し、この応答は、データならびにスヌープ前および後の状態の表示を返し、すなわち、返されるデータは、初期に一意でダーティであったが、現在は、ローカルストアの中で共有クリーンＳＣとしてマークされている。ホームノードＨＮは、このデータおよび状態の変化に関する情報を受信し、状態の共有クリーンが正しいように、メモリにデータを書き戻すことが必要であることを認識する。したがって、メモリコントローラに書き込みリクエストを発行し、メモリコントローラからの応答に応答して、データを発行する。その上、読み出しリクエストに対する応答をＲＮ２に発行し、データおよび応答に伴うデータの現在の状態を送信する。ＲＮ２から確認応答を受信すると、ホームノードＨＮは、それに応答することによって、書き戻しリクエストが進行することを可能にする。
【００６５】
この応答を受信することに応答して、イニシエータデバイスＲＮ０は、書き戻しが完了するとデータの共有クリーン状態を無効に更新し、データとともに、共有されたクリーンである書き込み完了前のデータの状態の表示をホームノードＨＮへ送信する。この受信に応答して、ホームノードＨＮは、データが現在クリーンで、書き戻しが実施される必要がないことを認識する。したがって、書き戻しを実施することができるか、またはデータをドロップすることができるかのいずれかである。
【００６６】
図４ｂは、ノードＲＮ０によって発行された書き戻しがＲＮ２によって発行された読み出し１回と同時に保留中である場合の異なる例を示す。これらがコヒーレンシコントローラまたはホームノードＨＮで受信されると、ＨＮは、それに応答しないことによって書き戻しを延期し、読み出し１回リクエストに応答して、非状態変更スヌープを発行する。スヌープは、ＲＮ０からのデータとともに、変化のない状態ＵＤの表示を返し、このデータは、ＲＮ２に送信される。状態はＲＮ０で変更されないので、ホームノードＨＮは、データをメモリに書き込まない。ＲＮ２から確認応答が受信されると、ＨＮは、読み出しが完了したことを理解し、書き戻しリクエストに対して書き込みが進行できることを示す応答信号を生成する。この応答の受信に応答して、イニシエータデバイスＲＮ０は、データとともに、データ状態ＵＤの表示を伝送し、状態を無効に更新して、書き戻しが実施されたので、キャッシュラインが別のデータ項目のために使用できることを示す。
【００６７】
ホームノードＨＮがデータを受信すると、状態ＵＤから、書き戻しが実施されることが必要であることを認識し、書き戻しを実施する。このように、ＨＮでのコヒーレンシコントローラは、スヌープリクエストを延期せず、かつ図１のイニシエータデバイスに対応する、リクエスタノード内にデータハザードチェックロジックが一切存在することなく、データのコヒーレンシを維持する。
【００６８】
図４ｃは、書き戻しリクエストがコヒーレンシコントローラＨＮで受信された際にいくつかの読み出し保留が存在する場合のトランザクションの進行のさらなる例を示す。このように、この例では、ＲＮ１およびＲＮ２はどちらも、ＲＮ０から保留中書き戻しトランザクションのアドレスに対して、読み出し共有トランザクションリクエストを発行している。このため、コヒーレンシデバイスＨＮで、書き戻しが延期され、ＲＮ２から受信された第１の読み出し共有が進行する。クリーンスヌープが送信され、アドレスに記憶されたデータが、このデータの状態が一意のダーティＵＤから共有されたクリーンなＳＣに変更されたという情報とともに返される。このデータおよび状態変化に関する情報の受信時、キャッシュコヒーレンシコントローラＨＮは、データをメモリに書き戻し、また、データをリクエストしたＲＮ２に対して、その新しい状態とともにデータを書き込む。この読み出しが完了すると、第２の読み出しが進行し、クリーンスヌープが実施され、今回、ＲＮ０に記憶されたデータは、共有されたクリーンなＳＣ状態にあると判定される。このため、スヌープ応答は、このデータとともに、スヌープの前および後の両方で、共有されたクリーンなＳＣ状態にあるという情報を返す。これに応答して、コヒーレンシコントローラＨＮは、ＲＮ１からの読み出し共有リクエストに対する応答を発行し、データおよびデータが共有されたクリーンなＳＣ状態にあることの表示を提供する。データ状態は、スヌープの前および後両方で共有されたクリーンであったので、データをメモリに書き込むことはない。ＲＮ１が読み出しを受信したということを確認応答すると、読み出しは実際に完了状態にあり、コヒーレンシコントローラＨＮは、ＲＮ０から受信された書き戻しが継続することを可能にする。このように、そのデータバッファに書き込みリクエストを受信するために十分な空間を有する場合、書き戻しに応答し、この応答の受診に応答して、ＲＮ０は、データとともに、書き戻し前のデータの状態が共有されたクリーンなＳＣであることの表示を送信する。データの状態は、次いで、無効に変更される。図４ａのように、キャッシュコントローラは、受信したデータをメモリに書き込む場合も書き込まない場合もある。データは、メモリによって要求されないが、データフローの均一性が好まれる場合は書き込まれる可能性がある。
【００６９】
これらの例では、書き戻しに応答して、データは、状態（共有されたクリーン）の表示とともに送り返されるが、いくつかの実施形態では、状態が共有されたクリーンである場合、データは実際には必要とされないので、書き込みキャンセルリクエストが送り返される場合がある。これは、コヒーレンシコントローラが、書き戻しデータのために保有されていた記憶場所を解放することを可能にするという効果を有することになり、より少ない帯域幅を使用するという利点を有する。しかしながら、さらなる書き込みキャンセルトランザクションの使用を必要とし、システムがあまり均一ではない。同様に、スヌープ後のデータの状態が無効である場合、データおよび無効状態は、書き込みリクエストの第２の部分として伝送される場合、または代わりに書き込みキャンセルリクエストが伝送される場合がある。
【００７０】
図５は、本発明の実施形態によるイニシエータデバイスによって実施されるステップのフロー図を示す。この実施形態では、イニシエータデバイスは、書き込みリクエストの第１の部分を発行し、次いで、同じアドレスに対するスヌープを受信する場合がある。そのアドレスに対して保留中の書き込みリクエストは存在しないかのように、スヌープを処理するように進行する。このように、スヌープが進行し、必要に応じてデータの状態を更新し、データは、スヌープリクエストに応答して、本来および更新された状態とともに返される。
【００７１】
書き込みリクエストの第１の部分に対する応答が次いで受信される。コヒーレンシコントローラは、同じアドレスにスヌープを生成した保留中の読み出しが完了するまで、書き込みリクエストの第１の部分に応答しないので、これより早く受信されることはない。書き込みリクエストの第１の部分に対する応答が受信されると、イニシエータデバイスは、データおよびスヌープリクエストの後のデータの状態を伝送することによって、書き込みリクエストを継続する。データの状態は、次いで、必要に応じて、書き込みリクエストに応答して更新される場合がある。データの状態が書き戻しがもはや必要ではないことを示す場合、幾つかの実施形態では、このフロー図の最後の２つのブロックを実施する代わりに、書き込みキャンセルリクエストが単純に伝送されることに注意されたい。
【００７２】
図６は、本発明の実施形態によるコヒーレンシコントローラで実施される方法のステップを示す。この実施形態では、書き込みリクエストの第１の部分が受信され、コヒーレンシコントローラは、そのハザードチェッキングロジックを用いて、同じアドレスに対する保留中の読み出しリクエストが存在するかどうかを判定する。存在しない場合、書き込みリクエストを処理するように進行することができる。存在する場合、書き込みリクエストを延期し、読み出しが完了したと判定するまで、書き込みリクエストを進行しない。これが完了したと判定すると、書き込みリクエストの第１の部分に対する応答を発行する。次いで、データおよびデータの状態を書き込みリクエストの第２の部分として受信し、データの状態に依存して、データをメモリに書き戻す場合も書き戻さない場合もある。この実施形態では、データ状態が無効である場合、書き戻すことはなく、無効でない場合、書き戻す。他の実施形態において、データがクリーンである場合、メモリに書き戻すことはないが、一方、ダーティである場合、メモリに書き戻す。クリーンなデータを書き戻すかどうかの選択は、実施の選択であるが、無効なデータは書き戻してはならない。
【００７３】
本発明の例示的な実施形態は添付の図面を参照しながらここに詳細を説明してきたが、本発明はこれらの明確な実施形態に限定されず、添付の請求項により定義される本発明の範囲および精神を逸脱することなく当業者によって多様な変更および変形がその中にもたらされ得ることを理解されたい。例えば、本発明の範囲を逸脱することなく、以下の従属請求項の特徴の多様な組み合わせは、独立請求項の特徴とともに作成することができる。
【図１】
2013041581.tif 000003
【図２】
2013041581.tif 000004
【図３】
2013041581.tif 000005
【図４ａ】
2013041581.tif 000006
【図４ｂ】
2013041581.tif 000007
【図４ｃ】
2013041581.tif 000008
【図５】
2013041581.tif 000009
【図６】
2013041581.tif 000010
【外国語明細書】
2013041581000001.pdf