【手続補正書】
【提出日】平成17年1月24日(2005.1.24)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の対称的マルチプロセッサを備えたコンピュータシステムにおいて対称的マルチプロセッサのメモリに記憶されたデータへのアクセスを共用するためのソフトウェア実施方法であって、各々の対称的マルチプロセッサは、バスによって互いに接続された複数のプロセッサ、アドレスを有するメモリ及び入力／出力インターフェイスを備え、この入力／出力インターフェイスは、対称的マルチプロセッサをネットワークにより互いに接続し、上記方法は、
メモリの１組のアドレスを、共用データを記憶するための仮想共用アドレスとして指定し；
上記仮想共用アドレスの一部分を、共用データ構造体を記憶するために、いずれかのプロセッサで実行されるプログラムによりアクセスできる１つ以上のブロックとして割り当て、特定の割り当てられるブロックのサイズは、共用データ構造体のサイズと共に変化し、各ブロックは、整数本のラインを含み、そして各ラインは、所定のバイト数の共用データを含み；
複数の共用状態エントリーを含む共用状態テーブルを維持し、１つ以上のブロックの各ラインごとに１つの共用テーブルエントリーがあり、各共用状態エントリーは、ラインの考えられる状態を指示し、該考えられる状態は、無効、共用、排他的及び保留であり；
複数の対称的マルチプロセッサの各プロセッサごとにプライベート状態テーブルを維持し、各プライベート状態テーブルは、複数のプライベート状態エントリーを有し、特定のプライベート状態テーブルのプライベート状態テーブルエントリーは、それに関連する特定のプロセッサによりアクセスされる特定のラインの考えられる状態を指示し；
共用データ構造体の特定のブロックのディレクトリ情報をホームプロセッサのメモリに記憶し、ディレクトリ情報は、特定のブロックのサイズを含み；
データが使用できるかどうかチェックするために共用データをアクセスする命令においてプログラムを計装し；そして
共用データをアクセスするための要求を発している１つのプロセッサからアクセス要求を受信するのに応答して、特定のラインを含む特定のブロックと、その特定のブロックのサイズとを、ネットワークを経て、上記要求を発しているプロセッサへ送信し、可変サイズのブロックに記憶された共用データ構造体をプロセッサがネットワークを経て交換できるようにする、
という段階を備えたことを特徴とする方法。
【請求項２】
ホームプロセッサにより維持されたディレクトリにディレクトリ情報を記憶し、ディレクトリは、共用データ構造体の１つ以上のブロックの各ラインごとにエントリーを含み、各エントリーは、ラインを含む特定ブロックのサイズを含む請求項１に記載の方法。
【請求項３】
特定ブロックの各ラインのエントリーに、上記プロセッサのうちの制御しているプロセッサの識別を維持し、この制御しているプロセッサは特定のラインを含む特定のブロックの排他的コピーを最後に有する請求項２に記載の方法。
【請求項４】
各プロセッサごとに１つのビットを含むビットベクトルをエントリーに維持し、各ビットは、対応するプロセッサが特定ブロックの共用コピーを有するかどうか指示する請求項３に記載の方法。
【請求項５】
プログラムの実行中に共用データ構造体に対して割り当てられた１つ以上のブロックのサイズを動的に変更する請求項１に記載の方法。
【請求項６】
共用テーブルエントリーの１つを変更する前に共用状態テーブルをロックする請求項１に記載の方法。
【請求項７】
更に、１つ以上のブロックのサイズを動的に変更する前に１つ以上のブロックの各ラインの状態を無効にセットする請求項６に記載の方法。
【請求項８】
プライベート状態テーブルに関連したプロセッサのみによりプライベート状態テーブルの１つを変更する請求項７に記載の方法。
【請求項９】
特定のプロセッサに関連したプライベート状態テーブルの状態をダウングレードするときに、特定の対称的マルチプロセッサの特定の１つのプロセッサから、その特定の対称的マルチプロセッサの他のプロセッサへメッセージを選択的に送信する請求項８に記載の方法。
【請求項１０】
第１の共用データ構造体の１つ以上のブロックのラインの数は、第２のデータ構造体の１つ以上のブロックのラインの数とは異なる請求項１に記載の方法。
【請求項１１】
あるプログラムの第１データ構造体の１つのラインにおけるバイトの数は、別のプログラムの第２データ構造体の１つのラインにおけるバイトの数とは異なる請求項１に記載の方法。
【請求項１２】
上記指定する段階は、単一ローカルプロセッサによって使用されるデータ構造体を記憶するのに使用されるプライベートデータセクションを含む請求項１に記載の方法。
【請求項１３】
上記指定する段階は、上記共用状態テーブル及びプライベート状態テーブルを含む状態テーブルを与える請求項１に記載の方法。
【請求項１４】
上記状態テーブルは、共用部分及びプライベート部分を含む排他的テーブルをその一部分として含む請求項１３に記載の方法。
【請求項１５】
ネットワークと、上記ネットワークによって相互接続され各々が複数のプロセッサを含む複数の対称的マルチプロセッサと、各対称的マルチプロセッサに対するアドレスのレイアウトを有するメモリとを備えるシステムにおいて、各メモリアドレスは、共用データを記憶する指定された組の仮想共用アドレスを有し、上記仮想共用アドレスの一部分は、上記プロセッサのうちのいずれかにおいて実行されるプログラムによってアクセスしうる１つ以上のブロックとして共用データ構造体を記憶し、特定の割り当てられるブロックのサイズは、上記共用データ構造体のサイズと共に変化し、各ブロックは、整数本のラインを含み、各ラインは、所定のバイト数の共用データを含み、
上記レイアウトは、
ｉ）複数の共用状態エントリーを含む共用状態テーブルであって、１つ以上のエントリーの各ラインごとに１つの共用エントリーがあり、各共用エントリーは、ラインの考えられる状態を指示し、該考えられる状態は、無効、共用、排他的及び保留であるような共用状態テーブルと、
ii）上記複数の対称的マルチプロセッサの各プロセッサごとのプライベート状態テーブルであって、各プライベート状態テーブルは、複数のプライベート状態エントリーを有し、特定のプライベート状態テーブルのプライベート状態エントリーは、それに関連する特定のプロセッサによりアクセスされる特定のラインの考えられる状態を指示するようなプライベート状態テーブルと、
を含み、
上記共用データは、データが使用できるかどうかチェックするためにアクセスされ、可変サイズのブロックに記憶された共用データ構造体を交換するため要求を発しているプロセッサへ１つの他のプロセッサから上記ネットワークを経て特定のブロックが送られる、
ことを特徴とするシステム。
【請求項１６】
上記プライベート状態テーブルは、排他的テーブルを含む請求項１５に記載のシステム。
【請求項１７】
上記排他的テーブルは、共用部分及びプライベート部分を含む請求項１６に記載のシステム。
【請求項１８】
上記共用状態テーブルは、上記共用テーブルエントリーの１つが変更される前に、ロックされうる請求項１５に記載のシステム。
【請求項１９】
特定のプロセッサのプライベート状態テーブルは、上記プライベート状態テーブルに関連したプロセッサによってのみ変更しうる請求項１５に記載のシステム。
【請求項２０】
上記プロセッサの１つは、上記メモリにおける共用データ構造体の特定のブロックのディレクトリ情報を記憶するためのホームプロセッサとして指定され、上記ディレクトリ情報は、該ブロックのサイズを含む請求項１５に記載のシステム。