(57)【要約】【課題】  マルチスレッド・コンピュータにおけるコンピュータ・リソースの割り付け方法を提供すること。【解決手段】  スレッドに関連付けされる特定の『型』を基礎として、スレッドが動的に複数の物理サブシステムを含むマルチスレッドコンピュータのコンピュータ・リソースに割り当てられる。スレッド型に、コンピュータ内の同一物理サブシステム内に常駐するリソースが割り付けられ、その結果、特定スレッド型の、新しく作られたスレッドおよび／または再アクティブ化されたスレッドが、それぞれのスレッド型に割り付けられたリソースに動的に割り当てられる。したがって、同一型を共有するスレッドが、コンピュータの同一物理サブシステム内に常駐するコンピュータ・リソースに割り当てられ、多くの場合はそれが、コンピュータ内の複数の物理サブシステム間における交差トラフィックを減少させ、システム全体のパフォーマンスを最適化する。【選択図】      図３
2004220608.tif 000002
【特許請求の範囲】
【請求項１】
複数の個別の物理サブシステムを含むマルチスレッド・コンピュータにおいてコンピュータ・リソースを動的に割り付ける方法であって、
（ａ）複数のスレッド型のうちの各スレッド型に関して、そのスレッド型と、前記マルチスレッド・コンピュータ内の共通の物理サブシステム内に物理的に配置されたコンピュータ・リソースのセットを関連付けすること、および、
（ｂ）スレッドをアクティブ化する要求に応答して、前記スレッドを、該スレッドの前記スレッド型に関連付けされているコンピュータ・リソースのセットに割り当てること、
を含む方法。
【請求項２】
前記複数のスレッド型のうちの第１のスレッド型に前記コンピュータ・リソースのセットを関連付けすることが、前記第１のスレッド型にコンピュータ・リソースが関連付けされていないとき、前記第１のスレッド型を有するスレッドをアクティブ化する要求に応答して実行される、請求項１に記載の方法。
【請求項３】
前記複数のスレッド型のうちの第１のスレッド型に前記コンピュータ・リソースのセットを関連付けすることが、前記第１のスレッド型を有するスレッドをアクティブ化する要求を受け取ることに先行して実行される、請求項１に記載の方法。
【請求項４】
前記複数のスレッド型のうちの前記第１のスレッド型に前記コンピュータ・リソースのセットを関連付けすることが、前記第１のスレッド型にリソースをあらかじめ割り付ける要求に応答して実行される、請求項３に記載の方法。
【請求項５】
前記複数のスレッド型のうちの前記第１のスレッド型に前記コンピュータ・リソースのセットを関連付けすることが、前記マルチスレッド・コンピュータ内の論理サブシステムを開始する要求に応答して実行される、請求項３に記載の方法。
【請求項６】
前記複数のスレッド型が、実行優先度、バッファに対する割り当て、ユーザ・アイデンティティ、ユーザ・プロファイル、メモリ・サブシステム、親タスク、親スレッド、親ジョブ、親アプリケーション、親論理サブシステム、ユーザの権限、およびこれらの組み合わせからなるグループから選択された特性を基礎として区別される、請求項１に記載の方法。
【請求項７】
各物理サブシステムが、メモリおよび少なくとも１つのプロセッサを含む、請求項１に記載の方法。
【請求項８】
各物理サブシステムが複数のプロセッサを含み、前記メモリの少なくとも一部が、前記複数のプロセッサによって共有される、請求項７に記載の方法。
【請求項９】
各物理サブシステムが、さらにキャッシュを含む、請求項７に記載の方法。
【請求項１０】
各物理サブシステムが、固有のマルチ‐チップ・モジュール（ＭＣＭ）を含む、請求項７に記載の方法。
【請求項１１】
前記複数のスレッド型のうちの第１のスレッド型が、前記複数の物理サブシステムのうちの第１の物理サブシステム内に物理的に配置されたコンピュータ・リソースの第１のセットに関連付けされ、さらに、
（ａ）前記第１のスレッド型と、前記マルチスレッド・コンピュータ内の、前記第１の物理サブシステムと異なる物理サブシステム内に物理的に配置されたコンピュータ・リソースの第２のセットを関連付けすること、および、
（ｂ）前記第１のスレッド型のスレッドをアクティブ化する要求に応答して、該スレッドを、前記第１のスレッド型に関連付けされているコンピュータ・リソースの前記第１および第２のセットの１つに割り当てること、
を含む請求項１に記載の方法。
【請求項１２】
複数の個別の物理サブシステムを含むマルチスレッド・コンピュータにおいてコンピュータ・リソースを動的に割り付ける方法であって、
（ａ）複数のスレッド型のうちの第１のスレッド型に関して、該第１のスレッド型と、前記マルチスレッド・コンピュータ内の第１および第２の物理サブシステムのそれぞれに物理的に配置されたコンピュータ・リソースの第１および第２のセットを関連付けすること、
（ｂ）前記第１のスレッド型の第１のスレッドをアクティブ化する要求に応答して、前記第１のスレッドを前記コンピュータ・リソースの第１のセットに割り当て、その結果、前記第１のスレッドが、前記第１のスレッドの実行間に、前記コンピュータ・リソースの第１のセット内のリソースを使用するようにすること、および、
（ｃ）前記第１のスレッド型の第２のスレッドをアクティブ化する要求に応答して、前記第２のスレッドを前記コンピュータ・リソースの第２のセットに割り当て、その結果、前記第２のスレッドが、前記第２のスレッドの実行間に、前記コンピュータ・リソースの第２のセット内のリソースを使用するようにすること、
を含む方法。
【請求項１３】
（ａ）複数の個別の物理サブシステムを含むマルチスレッド・コンピュータ、および、
（ｂ）前記マルチスレッド・コンピュータ上に常駐するプログラム・コードであって、複数のスレッド型のうちの各スレッド型に関して、該スレッド型と、前記マルチスレッド・コンピュータ内の共通の物理サブシステム内に物理的に配置されたコンピュータ・リソースのセットを関連付けし、かつ、スレッドをアクティブ化する要求に応答して、前記スレッドを、該スレッドのスレッド型に関連付けされているコンピュータ・リソースのセットに割り当てるべく構成されたプログラム・コード、
を備える装置。
【請求項１４】
前記複数のスレッド型のうちの第１のスレッド型に前記コンピュータ・リソースのセットを関連付けることが、前記第１のスレッド型にコンピュータ・リソースが関連付けされていないとき、前記第１のスレッド型を有するスレッドをアクティブ化する要求に応答して行われるように前記プログラム・コードが構成されている、請求項１３に記載の装置。
【請求項１５】
前記複数のスレッド型のうちの第１のスレッド型に前記コンピュータ・リソースのセットを関連付けることが、前記第１のスレッド型を有するスレッドをアクティブ化する要求を受け取ることに先行して行われるように前記プログラム・コードが構成されている、請求項１３に記載の装置。
【請求項１６】
前記複数のスレッド型のうちの前記第１のスレッド型に前記コンピュータ・リソースのセットを関連付けることが、前記第１のスレッド型に関してリソースをあらかじめ割り付ける要求に応答して行われるように前記プログラム・コードが構成されている、請求項１５に記載の装置。
【請求項１７】
前記複数のスレッド型のうちの前記第１のスレッド型に前記コンピュータ・リソースのセットを関連付けることが、前記マルチスレッド・コンピュータ内の論理サブシステムを開始する要求に応答して行われるように前記プログラム・コードが構成されている、請求項１５に記載の装置。
【請求項１８】
前記複数のスレッド型が、実行優先度、バッファに対する割り当て、ユーザ・アイデンティティ、ユーザ・プロファイル、メモリ・サブシステム、親タスク、親スレッド、親ジョブ、親アプリケーション、親論理サブシステム、ユーザの権限、およびこれらの組み合わせからなるグループから選択された特性を基礎として区別される、請求項１３に記載の装置。
【請求項１９】
各物理サブシステムが、メモリおよび少なくとも１つのプロセッサを含む、請求項１３に記載の装置。
【請求項２０】
各物理サブシステムが複数のプロセッサを含み、前記メモリの少なくとも一部が、前記複数のプロセッサによって共有される、請求項１９に記載の装置。
【請求項２１】
各物理サブシステムが、さらにキャッシュを含む、請求項１９に記載の装置。
【請求項２２】
各物理サブシステムが、固有のマルチ‐チップ・モジュール（ＭＣＭ）を含む、請求項１９に記載の装置。
【請求項２３】
前記複数のスレッド型のうちの第１のスレッド型が、前記複数の物理サブシステムのうちの第１の物理サブシステム内に物理的に配置されたコンピュータ・リソースの第１のセットに関連付けされ、かつ前記プログラム・コードが、さらに、前記第１のスレッド型と、前記マルチスレッド・コンピュータ内の、前記第１の物理サブシステムと異なる物理サブシステム内に物理的に配置されたコンピュータ・リソースの第２のセットを関連付けし、かつ、前記第１のスレッド型のスレッドをアクティブ化する要求に応答して、該スレッドを、前記第１のスレッド型に関連付けされているコンピュータ・リソースの前記第１および第２のセットの１つに割り当てるべく構成されている、請求項１３に記載の装置。
【請求項２４】
（ａ）複数の個別の物理サブシステムを含むタイプのマルチスレッド・コンピュータ上に常駐するプログラム・コードであって、複数のスレッド型のうちの各スレッド型に関して、そのスレッド型と、前記マルチスレッド・コンピュータ内の共通の物理サブシステム内に物理的に配置されたコンピュータ・リソースのセットを関連付けし、かつ、スレッドをアクティブ化する要求に応答して、前記スレッドを、該スレッドのスレッド型に関連付けされているコンピュータ・リソースのセットに割り当てるべく構成されたプログラム・コード、および、
（ｂ）前記プログラム・コードを担持する信号担持メディア、
を備えるプログラム・プロダクト。
【請求項２５】
前記信号担持メディアが、伝達メディアおよび書き込み可能メディアのうちの少なくとも一方を含む、請求項２４に記載のプログラム・プロダクト。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータならびにコンピュータ・ソフトウエアに関し、特に、マルチスレッド・コンピュータにおけるコンピュータ・リソースの割り付けに関する。
【背景技術】
【０００２】
現代社会におけるコンピュータへの依存の継続的な増加を考えると、コンピュータ・テクノロジは、増大する需要に追いつくために多方面おいて先行する必要があった。重要な研究開発努力の１つは、並列処理、すなわち並列に複数タスクを実行することである。
【０００３】
多数のコンピュータ・ソフトウエアおよびハードウエア・テクノロジが開発され、並列処理の増大が促進された。ソフトウエアの観点からは、マルチスレッド・オペレーティング・システムおよびカーネルが開発されており、それらは、コンピュータ・プログラムが複数の『スレッド』において同時に実行することを可能にし、その結果、複数のタスクを本質的に同時に実行することが可能になる。スレッドは、概して、プログラムに関する実行の独立したパスを表す。たとえば、電子商取引コンピュータ・アプリケーションの場合であれば、異なるスレッドが異なるカスタマに割り当てられ、それにより各カスタマ固有の電子商取引が独立のスレッド内において取り扱われるといったことが可能になる。
【０００４】
ハードウエアの観点からは、コンピュータは作業負荷キャパシティの増加を提供するべく複数マイクロプロセッサへの依存がますます高まっている。さらに、複数のスレッドを並列に実行する機能をサポートするマイクロプロセッサも開発されており、複数マイクロプロセッサの使用を介して達成可能な同一パフォーマンス・ゲインの多くを実質的に提供している。
【０００５】
しかしながら、マルチ‐プロセッサ・コンピュータに生じ得る重大なボトルネックは、各マイクロプロセッサ間相互のデータの転送に関連し、しばしばそれが通信コストという言葉で表される。多くのコンピュータは、コンピュータ用の主要な作業ストレージとして機能するメイン・メモリに依存している。しかしながら、メイン・メモリからのデータの取り出し、およびメイン・メモリへのデータの書き戻しには、多くの場合、マイクロプロセッサ内において内部的にデータが転送されるレートに比べて極めて遅いレートにおける実行が強いられる。しばしばキャッシュとして知られる中間バッファが用いられて、データがマイクロプロセッサによって使用されているとき、そのデータを一時的にストアしている。これらのキャッシュは、多くはサイズが小さいが、メイン・メモリよりはるかに高速である。キャッシュは、しばしば一般にデータの時間的ならびに空間的局所性を利用し、結果的に、多くの場合においてコンピュータ内において生じる比較上遅いメイン・メモリのアクセス数を著しく抑え、コンピュータが受ける全体的な通信コストが縮小される。
【０００６】
コンピュータ内のすべてのマイクロプロセッサが同一のメイン・メモリを共有するようになることも少なくない、すなわち、対称型マルチプロセッシング（ＳＭＰ）としばしば呼ばれるアーキテクチャである。しかしながら、この種のコンピュータの１つの限界は、複数のマイクロプロセッサとメイン・メモリの間におけるすべての通信が共通バスまたは相互接続を介して発生するという典型的な要件の結果として生じる。１台のコンピュータ内のマイクロプロセッサの数が増加すれば、中間キャッシュの使用とは無関係にメイン・メモリに対する通信トラフィックがシステムのパフォーマンスにおけるボトルネックとなる。
【０００７】
この潜在的なボトルネックを解決するために、多くのコンピュータ設計は、Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ（ＮＵＭＡ）を頼っており、それによれば複数のメイン・メモリが実質的にコンピュータ全体にわたって分散され、物理的に、マイクロプロセッサならびにキャッシュのセットとともに物理サブシステムまたはモジュールにグループ化される。ＮＵＭＡコンピュータの各物理サブシステム内のマイクロプロセッサ、キャッシュ、およびメモリは、通常、同一の回路基板もしくはカード上にマウントされて、物理サブシステムに『ローカルな』すべてのコンポーネント間における比較的高速のインタラクションを提供する。また物理サブシステムは、システム・バスあるいはポイント‐ツー‐ポイント相互接続の集合等のネットワークを介して互いに結合され、それによって１つの物理サブシステム内のマイクロプロセッサが、別の物理サブシステム内にストアされているデータにアクセスすることが可能になり、したがってコンピュータの全体的なキャパシティが実質的に拡張される。しかしながらメモリ・アクセスについては、ローカル・メモリ（つまり、マイクロプロセッサと同一の物理サブシステム内に常駐するメモリ）内にストアされているデータに関するアクセス時間が、しばしばリモート・メモリ（つまり、別の物理サブシステム内に常駐するメモリ）内にストアされているデータに関するアクセス時間より著しく短いことから『非一様』と呼ばれる。
【０００８】
つまり、通信コストの観点からは、各物理サブシステム内におけるデータ・トラフィックを局所化し、かつ物理サブシステム間においてデータを渡さなければならない回数を最小化することによってＮＵＭＡコンピュータのパフォーマンスが最大化される。
【０００９】
コンピュータ内におけるハードウエア・リソースの効率的な利用は、多くの場合、ソフトウエアおよびハードウエアの間の共働的な努力を必要とする。前述したように、ソフトウエアの観点からは、コンピュータによって実行される作業の多くが各種のスレッドによって扱われる。最適パフォーマンスを確実にするためには、使用可能なコンピュータ・リソースの間に均等にコンピュータの作業負荷が分配されるように、使用可能なコンピュータ・リソースのサブセットに一般にスレッドが割り当てられる。
【００１０】
マイクロプロセッサの効率的な使用のためには、たとえば、使用可能なマイクロプロセッサの間にスレッドを均等に分配し、各個別のマイクロプロセッサの作業負荷をバランスさせることが望ましい、すなわち『対称』リソース割り付けと呼ばれるプロセスである。しかしながら、通信コストがシステムのパフォーマンスに著しい影響も持ち得るとすれば、スレッドと、それが使用することになるデータを論理的に結びつけることも望ましく、その結果、そのスレッドによるデータへのアクセスが、可能なときは常に、キャッシュ内、あるいはＮＵＭＡコンピュータの場合であれば、少なくとも同一の物理サブシステム内のいずれかにおいて局所化される。それがなければ、非局所化データにアクセスする通信コストがスレッドの対称分配の利点を超えることもある。通常、データとスレッドの結びつけは、人間が決定を行って共通型のスレッドと、物理的に局所化されたメモリ、プロセッサ、および関連リソースを関連付けすることを必要とする。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
対称リソース管理スキームにおいては、スレッドがアクティブ化されるとき、たとえばスレッドが作られる都度あるいは再アクティブ化される都度、分配される。アクティブ化されたスレッドは、通常、もっとも可用性のある、またはもっとも負荷の低いリソースもしくはリソースのセットに割り当てられる。しかしながら、通信コストを解決するためのメモリ・リソース等のリソースの非一様分配は、通常、その種の自動化されたトランスペアレントな態様において実装されていない。むしろ非一様リソース管理は、しばしば実質的なユーザによる分析ならびにカスタム構成を必要とし、それには、たとえばリソース割り付け問題を特別に解決するコンピュータ・プログラムのカスタム・プログラミングが含まれる。
【００１２】
リソース管理は、より望ましくはコンピュータのオペレーティング・システムもしくはカーネル・レベルにおいて扱われ、コンピュータにインストールできるアプリケーションもしくはそのほかのコンピュータ・プログラムに適用される任意の特定プログラミング・テクニックから独立であるとする。より詳しくは、リソース管理が、オペレーティング・システムもしくはカーネルに埋め込まれていれば、コンピュータ・リソースの最適割り付けをサポートするために、より高いレベルのコンピュータ・プログラムを特別にカスタム化する必要がなく、したがって可能性としては、所定のコンピュータ上において実行されているすべてのコンピュータ・プログラムにパフォーマンスの恩典が提供される。特に、個別の物理サブシステム内においてスレッドが使用するリソースの局所化を通じてパフォーマンスの恩典が達成されるＮＵＭＡコンピュータの場合には、効率的なリソース割り付けが、よりトランスペアレントな態様で実装され、著しいカスタム化を伴わないことが極めて望ましい。
【課題を解決するための手段】
【００１３】
本発明は、従来技術に関連するこれらの、ならびにそのほかの問題を、スレッドに関連付けされる特定の『型』を基礎としてそれらのスレッドが動的にコンピュータ・リソースに割り当てられる装置、プログラム・プロダクト、および方法を提供することによって解決する。より詳細には、スレッド型に、コンピュータ内の同一物理サブシステム内に常駐するリソースが割り付けられ、その結果、それらの特定スレッド型の、新しく作り出されたスレッドおよび／または再アクティブ化されたスレッドが、それぞれのスレッド型に割り付けられたリソースに動的に割り当てられる。したがって、これらの同一型を共有するスレッドは、コンピュータの同一物理サブシステム内に常駐するコンピュータ・リソースに、概して、かつ多くの場合は実質的にトランスペアレントな態様で割り当てられ、しかもその種のスレッドが関連付けされるコンピュータ・プログラムの著しいカスタム化を伴わない。
【００１４】
以下の説明からより明らかなものとなろうが、各種のスレッド型へのスレッドの分類においては、スレッドの任意数の属性または特性を使用することができる。そのほかの可能性のある区別の中でもスレッド型は、実行プロパティ、バッファに対する割り当て、ユーザ・アイデンティティ、ユーザ・プロファイル、メモリ・サブシステム、親タスク、親スレッド、親ジョブ、親アプリケーション、およびユーザの権限のうちの１ないしは複数を基礎として定義することができる。
【００１５】
多くの場合、ここで述べているスレッドの割り当ては、特定の物理サブシステム内のリソースが別の物理サブシステム内に常駐するリソースとインタラクションする必要性を著しく抑えることになる。むしろ、特定スレッドに関する通信トラフィックならびにプロセッシング・オーバーヘッドが単一物理サブシステム内に限定されやすくなり、したがってサブシステム間通信に関連するオーバーヘッドが排除され、システム・パフォーマンスが最大化される。
【００１６】
いくつかの実施態様においては、所定のスレッド型に関連付けされるリソースが単一の物理サブシステムに限定される。それに対して、別の実施態様においては、スレッド型に、複数の物理サブシステムからのリソースが割り付けられる。しかしながら、後者の実施態様においても、所定のスレッド型の個別のスレッドを、そのスレッド型用に割り付けられているリソースに関する物理サブシステムの１つだけに常駐するリソースに割り当てることが望ましいものとなり得る。
【００１７】
本発明を特徴付けるこれらの、およびそのほかの利点ならびに特徴は、これに付属し、これの一部を形成する特許請求の範囲に示されている。しかしながら、本発明およびその使用を通じて達成される利点ならびに目的のより良好な理解のために、図面ならびにその記述を参照するが、それらは本発明の例とする実施態様を示している。
【発明を実施するための最良の形態】
【００１８】
以下に論じている実施態様は、少なくとも部分的にスレッド型を基礎として複数の物理サブシステムを含むタイプのマルチスレッド・コンピュータ内においてリソースをスレッドに割り付ける動的リソース割り付けメカニズムを使用する。本発明を一貫すれば、特定のスレッド型が特定のリソースのセットに関連付けされているときには常に、その後に続く、アクティブ化され、かつそのスレッド型に一致するすべてのスレッドが、同一のリソースのセットに割り当てられる。さらにリソースのセットは、通常、個別の物理サブシステムに拘束されており、コンピュータ内の複数の物理サブシステム間における交差トラフィックが最小化され、システム全体のパフォーマンスが最適化される。
【００１９】
したがって、本発明と矛盾のない実施態様においては、通常、ほかにない型のスレッドが作成されたときにのみリソースの対称割り当てが生じる、それ以外の場合には、以前にリソースが割り付けられている別のスレッドと同一のスレッド型を共有するスレッドに関して非対称割り当てが生じる。ほかの非一様リソース割り当てと同様に、型によるスレッドのグループ化は、通常特定のスレッドに必要とされるリソースが著しい遅延を伴うことなく直ちに使用可能になる可能性を高めるという点において利点を提供することになる。
【００２０】
以下に論じている実施態様では、１つのコンピュータ・システム内において、通常、リソースの割り当てを比較的トランスペアレントに実装することができる。スレッドの型設定に関する規則が定義された後は、通常、リソースの割り当てが、多くの場合には明示的なユーザの管理を伴うことなく生じ得る。これは、しばしば明示的な構成、カスタム化、およびユーザの分析が求められる従来のＮＵＭＡアーキテクチャと対照的である。またこれは、通常、スレッドが作成されるか再アクティブ化される時点において、複数のスレッドの間の特別な結合性とは無関係に、それらのスレッドがもっとも可用性の高いリソースに割り当てられる従来の対称リソース管理スキームとも対照的である。
【００２１】
以下の議論では、特定のリソースのセットに割り当てられるエンティティを『スレッド』と呼んでいる。しかしながら、別の用語を用いてもコンピュータ・システム内における実行の一意的なパスを定義するエンティティを記述できることを認識されるであろう。したがって、用語『スレッド』は、コンピュータ・システム内における特定の実行パスを定義するコンピュータ内における任意のエンティティに対応すると考えるべきである。
【００２２】
本発明の関連においては、スレッド型が、実際上はスレッドのあらゆる属性もしくはそのほかの識別可能な特徴を含むものであってよく、それには、限定を意図するわけではないが、実行優先度、同一の仮想もしくは物理バッファまたはメモリに対する割り当て、ユーザ・アイデンティティ、親の論理サブシステム、ジョブ、アプリケーション、タスクまたはスレッド、同一メモリ・サブシステムに対する割り当て、スレッド開始時に実行されることになる初期プログラムの名前、スレッドの権限、およびユーザ・プロファイルが含まれる。
【００２３】
上記に加えて、リソースのセットは、プロセッサ、ローカル・キャッシュ、共有キャッシュ、共有メモリといったコンピュータ・リソースの任意の組み合わせを含むことができる。さらに、コンピュータ・リソースには、各種入力／出力（Ｉ／Ｏ）リソース等の、そのほかの形式のリソースを含めることができる。通常、非対称の結合性を介したセットとしての割り当てに適したリソースは、コンピュータの、特定かつ個別の物理サブシステム内に局所化されており、それにおいて物理サブシステムは、概して、ほかの物理サブシステム内のリソースとのインタラクションに比べると、より効率的に互いにインタラクションを行うコンピュータ・リソースのグループであると見なされる。以下に論じている実施態様においては、たとえば、物理サブシステムが、同一のモジュール、たとえば同一回路カードもしくはマルチ‐チップ・モジュール（ＭＣＭ）上に配置されており、かつそれによって直接アクセスされ、あるいはコントロールされるモジュール内に配置されるハードウエア・リソースのグループによって定義される。たとえば、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ社のｅＳｅｒｖｅｒ  ｉＳｅｒｉｅｓのミッドレンジ・コンピュータ・システムにおいては、物理サブシステムが、各種レベル（たとえばＬ１、Ｌ２、および／またはＬ３）の中間の共有および／またはローカル・キャッシュとともに、一意的もしくは個別のＭＣＭの組み込みマルチ・プロセッサおよび共有メモリを含むことができる。さらに、場合によっては、物理サブシステムの残りの部分とは別のカード上にメモリを配置することもできるが、それにもかかわらず、当該ＭＣＭ上に常駐するコントローラを使用した直接アクセスが可能である。その種の実施態様においては、多くの場合に、所定のＭＣＭ上のリソース間の通信が、異なるＭＣＭ上のリソース間の通信より著しく高速になる。したがって、関連のあるスレッドの、単一ＭＣＭ上に配置されたリソースに対する割り当ては、ＭＣＭ内通信を増加させる形となってＭＣＭ間通信トラフィックを最小化することができ、その結果、コンピュータ・システムの全体的なパフォーマンスを最適化することができる。
【００２４】
例示の実施態様においては、スレッドがアクティブ化されるとき、たとえばそれらが作り出されるとき（新規の場合）および／またはそれらが再アクティブ化されるとき（存在しているが、現在は非アクティブであるかあるいは休眠中のとき）は常に、それらのスレッドが特定のリソースのセットに割り当てられる。しかしながら異なる実施態様においては、特定のスレッド型に対するリソース・セットの割り付けを、異なる時点において実行することができる。一実施態様においては、たとえばスレッド型に対するリソースの割り当てが、まだリソースが割り付けられていない型、および／または追加のリソースが必要とされる型のスレッドのアクティブ化に関連して実行され得る。しかしながら、別の実施態様においては、スレッド型に対するリソースの割り当てを、その型の任意のスレッドのアクティブ化に先行して実行させることが可能であり、たとえばアプリケーションの起動、論理サブシステムの起動に関連して、あるいは特定スレッド型に関してリソースをあらかじめ割り付けることを指示する特定のプログラム・インストラクションに応答して実行させることができる。これについては、論理サブシステムが、互いに論理的に関係するアプリケーション、ジョブ、スレッド、またはタスクの任意の集合を事実上含むことができる。
【００２５】
さらに、以下の説明からより明らかなものとなろうが、いくつかの実施態様においては、スレッド型に、コンピュータ・システム内の複数の物理サブシステムに関連付けされたコンピュータ・リソースのセットを割り付けることができる。たとえば、特定のスレッド型が、所定の物理サブシステム内において使用可能と見られるより多くのリソース要求することが期待されるとき、複数の物理サブシステムからのコンピュータ・リソースを割り付けると望ましいことがある。また、１つの物理サブシステム上に配置されたリソースが、著しく過小使用となる場合には、複数の物理サブシステムに負荷の共有を許可すると望ましいことがある。しかしながら、そういった場合においても、部分型を定義すること、あるいは少なくとも、所定の型の特定のスレッドを、１つの物理サブシステム上にだけ配置されているリソースのセットに割り付けることは望ましいとされる（たとえば、特定のスレッドに関して、そのスレッドを単一ＭＣＭ上に配置されているプロセッサならびにメモリに割り当てる）。
【００２６】
さらに別の実施態様においては、スレッド型を、所定の物理サブシステム内の使用可能なコンピュータ・リソースのサブセットだけを含むコンピュータ・リソースのセットに割り付けることができる。
【００２７】
次に図面を参照するが、それにおいては、いくつかの図面を通じて同一の番号は同一の要素を示しており、図１は、本発明と矛盾のない動的リソース割り付けを組み込んでいるコンピュータ１０内の基本的なハードウエア・コンポーネントを図示している。コンピュータ１０は、ネットワーク・サーバ、ミッドレンジ・コンピュータ、メインフレーム・コンピュータ等、たとえばＡＳ／４００またはｅＳｅｒｖｅｒ  ｉＳｅｒｉｅｓのミッドレンジ・コンピュータ・システムといった多数あるマルチ‐ユーザ・コンピュータのいずれかを包括的に表している。しかしながら、本発明は、このほかのコンピュータおよびデータ処理システム、たとえばワークステーション、デスクトップ・コンピュータ、ポータブル・コンピュータ等のシングル‐ユーザ・コンピュータ、あるいはこのほかのプログラマブル電子デバイス（たとえば、埋め込み型コントローラを組み込んだデバイス等）内において実装することもできることを認識されたい。
【００２８】
コンピュータ１０は、概して、システム・バスもしくはそのほかの通信インターフェースを介して互いに接続される複数の物理サブシステム１２を備えている。それに加えてコンピュータ１０は、通常、包括的に１６に示されている各種Ｉ／Ｏリソースを備え、それには、ストレージ・デバイス、ワークステーション、端末、ネットワーク、イメージング・デバイスといった各種タイプのリソースが含まれる。
【００２９】
各物理サブシステム１２は、コンピュータ・リソースのセット、たとえば共有メモリ１８、１以上のマイクロプロセッサ２０、共有キャッシュ２２および１以上のローカル・キャッシュ２４などの１以上のレベルのキャッシュ・メモリを含んでいる。各物理サブシステム１２内のリソース１８〜２４は、別の物理サブシステム１２内のリソースとインタラクションもしくは通信を行うときに比べて、より効率的に互いにインタラクションもしくは通信を行うことができるという特徴を有する。たとえば、各物理サブシステム１２内のリソースは、同一のマルチ‐チップ・モジュール（ＭＣＭ）または回路カード上に配置されており、その結果、その種のリソースの間の相互接続が、システム・バス１４に結合される相互接続に比べて、１桁もしくはそれ以上に高速になる。
【００３０】
このほかの、コンピュータ・リソースの物理的分割を、本発明の別の実施態様において使用してもよい。さらに、このほかのコンピュータ・ハードウエア・アーキテクチャに、ここで論じている動的リソース割り付けテクニックを使用することもできる。このように本発明が、図１に示されている特定のハードウエア実装に限定されることはない。
【００３１】
次に、図１のコンピュータ１０において使用され得る一例のソフトウエア・アーキテクチャ３０を図２に示す。これに示されているように、アーキテクチャ３０は、複数のジョブまたはアプリケーションが実行されるオペレーティング・システム３２に依存できる。いくつかの実施態様においては、１以上のアプリケーションを、共通の論理サブシステム３６内において互いに関連付けし、そのほかのアプリケーションは、特定の論理サブシステムと関連付けしないといったことが許される。
【００３２】
図２に示されているように、マルチスレッド・コンピュータとするコンピュータ１０は、複数のスレッド３８の実行もしくは処理を行って、要求されたタスクをユーザに代わって実行することができる。スレッド３８は、オペレーティング・システム３２内、特定のアプリケーション３４内、特定の論理サブシステム３６内、および／またはアーキテクチャ３０内のいずれかの場所を含む多数のコンテキスト内において使用されることがある。いくつかのアーキテクチャにおいては、複数の論理パーティションをさらに定義することができ、その結果、独立にオペレーティング・システムを実行するパーティションを含む複数の論理パーティションが所定のアーキテクチャの中に見られることもある。したがってスレッド３８は、所定のコンピュータ・アーキテクチャ内の事実上随所に論理的に常駐することができる。
【００３３】
一般にスレッド３８の管理は、特定のスレッドに対するリソースの割り付けを含め、オペレーティング・システム３２内に通常は常駐するスレッド・ディスパッチャ４０によって実行される。前述したｅＳｅｒｖｅｒ  ｉＳｅｒｉｅｓ実装においては、たとえば、スレッド・ディスパッチャ４０が、その種のコンピュータのライセンス済み内部コード（ＬＩＣ）内に常駐することができる。ここでは、本発明と矛盾のないいくつかの実施態様において、スレッド・ディスパッチャが、コンピュータ内の可能性のあるスレッドのサブセットの管理だけを行い得ることについても認識されよう。
【００３４】
概して言えば、本発明の実施態様の実装のために実行されるルーチンは、オペレーティング・システムの一部として実装されるか、あるいは特定のアプリケーション、コンポーネント、プログラム、オブジェクト、モジュールもしくはインストラクションのシーケンス、あるいはそれらのサブセットとして実装されるかによらず、ここでは『コンピュータ・プログラム・コード』または単に『プログラム・コード』と呼ばれる。プログラム・コードは、通常、様々な時点においてコンピュータ内の各種のメモリならびにストレージ・デバイス内に常駐し、かつコンピュータ内の１以上のプロセッサによって読み出され、実行されたときには、そのコンピュータに、本発明の各種側面を具体化するステップもしくはエレメントの実行に必要なステップを実行させる１以上のインストラクションからなる。さらに、以上ならびに以下において、完全に機能的なコンピュータおよびコンピュータ・システムに関して本発明を説明しているが、当業者であれば、本発明の各種実施態様が各種形態のプログラム・プロダクトとして配布可能であること、および本発明が、当該配布を実際に行うために使用される特定タイプの信号担持メディアとは無関係に等しく適用されることを認識されるであろう。信号担持メディアの例としては、限定する意図ではないが、特に揮発性および不揮発性メモリ・デバイス、フレキシブル・ディスクならびにそのほかのリムーバブル・ディスク、ハードディスク・ドライブ、磁気テープ、光ディスク（たとえば、ＣＤ‐ＲＯＭ、ＤＶＤ等）等の書き込み可能タイプのメディア、およびディジタルおよびアナログ通信リンク等の伝達タイプのメディアが挙げられる。
【００３５】
上記に加えて、以下に述べる各種プログラム・コードは、本発明の特定の実施態様においてそれが実装されるアプリケーションもしくはソフトウエア・コンポーネントに基づいて識別され得る。しかしながら、以下のあらゆる特定プログラム名は単なる便宜から使用されており、したがって本発明は、その種の名前によって識別され、かつ／または含意されるいずれかの特定のアプリケーション内における使用だけに限定されるとするべきでないことを認識されたい。さらに、コンピュータ・プログラムをルーチン、プロシージャ、メソッド、モジュール、オブジェクト等に系統化できる無数の方法をはじめ、一般的なコンピュータ内に常駐する各種のソフトウエア・レイヤ（たとえば、オペレーティング・システム、ライブラリ、ＡＰＩ、アプリケーション、アプレット等）に沿ってプログラムの機能を割り付ける各種の方法を前提とすれば、本発明がここに記述されている特定の構成ならびにプログラム機能の割り付けに限定されないことを認識される必要がある。
【００３６】
当業者であれば、図１ならびに２に例示されている環境が、本発明を限定する意図でないことは認識されるであろう。実際、当業者であれば認識されることになろうが、このほかの代替ハードウエアおよび／またはソフトウエア環境を、本発明の範囲から逸脱することなく使用することができる。
【００３７】
次に、本発明の特定の実施態様を考察するが、図３を参照すると、スレッドのアクティブ化、たとえば作成または再アクティブ化の要求に応答して図２のスレッド・ディスパッチャ４０によって実行され得る一例のスレッド・アクティブ化ルーチン５０が示されている。ルーチン５０は、ブロック５２において開始し、そのスレッドに関連付けされているスレッド型を決定する。前述したように、スレッドの任意数の特性または属性を使用し、スレッドを型によって区別することができる。たとえば、以下において論じている例は、親のアプリケーションまたは論理サブシステムによって定義されるスレッド型に注目しており、その結果、特定のアプリケーションまたは論理サブシステムに代わって開始したすべてのスレッドは、同一の型を共有することになる。概して、そのタイプのスレッドに、リソースの異なるセットではなく、リソースの共通セットが割り付けられるならば、比較的良好なパフォーマンスをもたらすであろうスレッドの任意の特性または属性は、本発明と矛盾のないスレッドの分類を行うために使用できる。
【００３８】
スレッド型が決定されると、次にブロック５４が、決定されたスレッド型にリソースのセットがすでに割り付けられている否かを決定する。最初は、決定されたスレッド型にリソースが割り付けられていないものと仮定するが、その場合はブロック５４がコントロールをブロック５６に渡し、物理サブシステム上のリソースのセットを決定されたスレッド型に、たとえば単一もしくは既知の物理サブシステムのセットに局所化されているもっとも可用性の高いリソースのセットに対する対称割り当てによって割り当てる。たとえば、異なるリソースのセットごとに異なる物理サブシステムに関連付けする場合であれば、ブロック５６は、もっとも可用性の高い物理サブシステムに関するリソースを、決定されたスレッド型に割り当てることができる。また、単一物理サブシステム上のリソースを割り付けることが可能でないか、実際的でない場合には、スレッド型を複数の部分型にトランスペアレントに分割し、複数の物理サブシステム上のリソースの個別のセットに１つの型を関連付けすることができる。
【００３９】
リソースがスレッド型に割り付けられると、次にブロック５８が、アクティブ化されるスレッドに、決定されたスレッド型に割り付けられたリソースを割り当てる。続いてそのスレッドが、従来の態様に従ってアクティブ化されてルーチン５０が完了する。
【００４０】
ブロック５４に戻るが、決定されたスレッド型にすでにリソースが割り付けられている場合には、ブロック５６をバイパスしてコントロールを直接ブロック５８に渡し、新しいスレッドを、そのスレッド型にすでに割り付け済みのリソースに割り当てることができる。この変形においては、図３に示されているように、ブロック５４がコントロールをブロック６０に渡して、そのスレッド型に追加のリソースが必要であるか否かを動的に決定することができる。たとえば、特定のスレッド型に関連付けされたリソースが完全に使われてしまっている場合には、コントロールをブロック５６に渡して、そのスレッド型に追加のリソースを割り付けると望ましいことがある（通常、可能であれば同一物理サブシステム内に配置されたリソースを使用して行う）。それに該当しなければ、コントロールをブロック６０からブロック５８に渡せばよい。しかしながら、別の実施態様においては、追加のリソースの動的割り付けがサポートされないこともある。
【００４１】
図３のルーチン５０を使用して、以前にリソースが割り付けられていない型を有するスレッドのアクティブ化に関連してスレッド型用にリソースが割り付けられることがわかる。しかしながら、図３のスレッド・アクティブ化ルーチンに対する変形として、スレッドのアクティブ化と分離されたオペレーションにおいて、所定のスレッド型に関してコンピュータ・リソースをあらかじめ割り付けると望ましいことがある。たとえば、ｅＳｅｒｖｅｒ  ｉＳｅｒｉｅｓコンピュータにおいては、ユーザ・ジョブが起動されるとき、それらのユーザ・ジョブが物理サブシステム内のメモリ・プールに割り当てられることが一般的となる。しかしながら論理サブシステムに対するメモリ・プールの割り当ては、通常、その論理サブシステムの初期化または開始時に行われる。したがって、コンピュータ内にメモリおよびプロセッサの複数のグルーピングが用意されている一実施態様においては（たとえば、物理サブシステムが複数のＭＣＭ上において定義されている場合）、可能なときはいつでも、および論理サブシステムが初期化もしくは開始されるときに、単一ＭＣＭもしくは物理サブシステム上において特定のメモリ・プール用にすべてのメモリを割り付ける試みが望ましいことがある。さらに、プールが大きすぎる場合には、部分プールを定義し、個別のＭＣＭ上に配置することができるが、概してユーザにはトランスペアレントな態様で行われる。ここで企図されていることに、スレッド・ディスパッチャが本発明と矛盾なく構成されて、関連するサブシステムもしくはメモリ・プール内において実行されるジョブに、そのサブシステムもしくはメモリ・プールに関連付けされたプロセッサに対する高い結合性を与えることがある。
【００４２】
図４および５は、たとえば、スレッド型に対するリソースの割り付けが、親アプリケーションまたは論理サブシステムの開始に関連して実行される代替実施態様を示している。図４に示されているように、この実施態様のスレッド・アクティブ化ルーチン７０が実行されると、図３のブロック５２において実行されるプロセスと同様に、ブロック７２においてスレッド型を決定する。しかしながら、スレッド型が決定したとき、その決定したスレッド型に関してすでにリソースが割り付け済みであることが想定されている。したがって、コントロールを直接ブロック７４に渡して、新しいスレッドを、そのスレッド型に対してすでに割り付けられているリソースに割り当てることができる。ルーチン７０は、その後完了することになる。ここで、この代替実施態様において、望ましい場合には追加のリソースの必要性に関するチェックを実行してもよいことを認識されたい。
【００４３】
図５に示されているように、アプリケーション／論理サブシステム開始ルーチン８０は、アプリケーションもしくは論理サブシステムを開始する要求を受け取ったときに随時、実行することができる。ルーチン８０は、ブロック８２において開始し、開始されるアプリケーションもしくは論理サブシステムに関連付けされたスレッド型を作成する。続くブロック８４は、たとえば対称割り当てを使用して、また通常は単一の物理サブシステム内に配置されたリソースを使用して、新しく作成されたスレッド型用に物理サブシステム上のリソースを割り当てる。前述したように、単一物理サブシステム上のリソースを割り付けることが可能でないか、実際的でない場合には、スレッド型を複数の部分型にトランスペアレントに分割し、複数の物理サブシステム上のリソースの個別のセットに１つの型を関連付けすることができる。
【００４４】
次に、ブロック８６が、要求されたアプリケーションもしくは論理サブシステムを開始し、希望に応じてスレッドをアクティブ化し、ルーチン８０が完了する。ここで、ブロック８６においてアクティブ化される任意のスレッドに関して、通常はルーチン７０が呼び出され、図４に関連して上述したように、そのスレッドがアクティブ化されることを認識されたい。
【００４５】
次に、本発明を実装する１つの方法の実際的な例を、図６〜９との関連から説明する。コンピュータが、２つの物理サブシステム、たとえばプロセッサ・カードまたはＭＣＭを有し、それぞれが複数のプロセッサおよび多少のメモリを備えているものとする。各物理サブシステムのメモリへはすべてのプロセッサのアクセスが可能であるが、要求を行っているプロセッサと同一の物理サブシステムから情報が取り出されるときのメモリに対するアクセスが最速となる。つまり、各プロセッサに関するメモリ・アクセスの大半が局所化可能であると好都合となる。この場合であれば、リソース・グループが、関連付けされたプロセッサ、キャッシュ、およびメモリを伴うカードとなる。図６には、２つの物理サブシステムが、ＰＳ  ＡおよびＰＳ  Ｂとして図示されており、それぞれがプロセッサ（Ｐ）、キャッシュ（Ｃ）、およびメモリ（Ｍ）のリソースによって表されているリソース・グループを伴う。
【００４６】
次に図７を参照するが、論理サブシステムが開始されて、第１の、５０個のスレッドが実行されることになる受取勘定アプリケーションがサポートされる。５０個のスレッドがすべて類似であるとして『型が設定』されることから、本発明に矛盾なくそれらのスレッドを、すべて第１の物理サブシステムＰＳ  Ａに割り当てることができる。図７のＰＳ  Ａ内のリソースにシェーディングを施すことによって表されているように、通常、その物理サブシステム内のすべてのプロセッサおよびキャッシュが、この受取勘定アプリケーション内のスレッドによる使用のために利用可能となる。さらに、物理サブシステム内における使用可能なメモリのサブセットを表すメモリ・プールも、通常はその種のスレッドによる使用のために利用可能になる。
【００４７】
しかしながらここで、いくつかの実施態様においては、受取勘定アプリケーション内のスレッドを、常に第１の物理サブシステムだけに割り当てなくてもよいことを認識される必要がある。より詳細に言えば、たとえばその受取勘定アプリケーションがシステム上で実行されている唯一のアプリケーションである場合には、スレッドもしくはアプリケーションの使用を、その割り当て済みリソースを超えて拡張すると望ましくなる状況が存在し得ることを認識する必要がある。スレッドとそれらのリソースの間における『結合性』の概念は、しばしば割り当て規則が常に絶対的ではなく、実際的な状況が保証するのであれば、時々変化し得ることを物語っている。
【００４８】
続いて図８を参照するが、別の論理サブシステム内において、第２の、在庫管理アプリケーションが開始されるとする。このアプリケーション内のスレッドは、この例の目的から、受取勘定アプリケーションに関連付けされるスレッドと区別される『型』を有すると考えられる（それらが分離された論理サブシステム内に常駐していることによる）。したがって、対称割り当てを使用し、それらのスレッドを、もっとも使用されていないリソースのセット（この場合は、第２の物理サブシステムＰＳ  Ｂ）に割り当て、結果として図８に書き込まれた追加のシェーディングによって示されるように、プロセッサならびにキャッシュ・リソースをはじめ、メモリ・プールの割り付けがもたらされる。
【００４９】
次に図９を参照し、第３の、カスタマ情報アプリケーションが起動されることを仮定するが、そのアプリケーションの型に関連付けされるスレッドは、いずれかのもっともアクティブでないプロセッサ／メモリ・グループに割り当てられることになる。この例の目的から、第２の物理サブシステムがもっともアクティブでないと仮定する。図９の追加のシェーディングによって示されるように、プロセッサならびにキャッシュのリソースが、在庫管理アプリケーションおよびカスタマ情報アプリケーションの両方と関連のあるスレッド型を伴う使用のために割り付けられる。しかしながら、通常は、同一の物理サブシステム内に常駐する個別のメモリ・プールが、それぞれのスレッド型用に維持される。
【００５０】
ここで、包括的な意味においてはリソースが均等に使用されないこともあるが、スレッドが、それらのスレッド『型』ごとに処理されるデータに対する効率的なアクセスを持つようになるため、より高い使用を伴うリソース上においてさえ個別のスレッドがより効率的に動作する傾向に向かうことに注意されたい。その日の終了時に、受取勘定アプリケーションの活動が著しく縮小され、賃金アプリケーションが起動されると、賃金『型』のトランスペアレントな自動割り当てがもっとも可用性の高いリソースに移動するが、おそらくはそれは、それまで受取勘定アプリケーションによって大量に使用されていたものとなる。しかしながら、大量の臨時の受取勘定アプリケーションの作業が必要となり、そのアプリケーション内のアクティビティが賃金アプリケーションの開始前に終了しない場合には、オペレータもしくはシステム管理者の介入を必要とすることなく、自動割り当てが、別のプロセッサ／メモリのリソース・グループを選択することができる。
【００５１】
次に、図６〜９に関連して論じた例と類似の例を図１０に示す。しかしながら図１０の例は、第１のスレッド型が両方の物理サブシステムからのリソースに割り付けられ、その一方、第２のスレッド型が１つの物理サブシステムだけからのリソースに割り付けられる。これには、たとえば受取勘定アプリケーションが、単一物理サブシステムによって提供可能なリソースを超えるリソースを必要とし、在庫管理アプリケーションが比較的低いリソース要件を有する場合が考えられる。ここで認識されることになろうが、受取勘定アプリケーションのスレッド型に複数の物理サブシステムからのリソースが割り付けられるが、その型の個別のスレッドがトランスペアレントに『部分型』に分割され、それが通常は１つの物理サブシステムだけからのリソースに割り当てられ、したがってスレッドごとを基礎とするリソースの局所性が維持される結果が得られる。基本タイプの新しいスレッドは、同じ基本型に割り当てられている各種物理サブシステムの全体的な可用性に基づいて特定の部分型に割り当てることができる。この可用性は、たとえばスレッド数、プロセッサの使用、および／またはメモリの使用を含む異なる要因を基礎とすることができる。
【００５２】
この開示の恩典を有する当業者であれば、このほかの修正も明白であろう。したがって、本発明は、付随する特許請求の範囲を頼るものとする。
【００５３】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００５４】
（１）複数の個別の物理サブシステムを含むマルチスレッド・コンピュータにおいてコンピュータ・リソースを動的に割り付ける方法であって、
（ａ）複数のスレッド型のうちの各スレッド型に関して、そのスレッド型と、前記マルチスレッド・コンピュータ内の共通の物理サブシステム内に物理的に配置されたコンピュータ・リソースのセットを関連付けすること、および、
（ｂ）スレッドをアクティブ化する要求に応答して、前記スレッドを、該スレッドの前記スレッド型に関連付けされているコンピュータ・リソースのセットに割り当てること、を含む方法。
（２）前記複数のスレッド型のうちの第１のスレッド型に前記コンピュータ・リソースのセットを関連付けすることが、前記第１のスレッド型にコンピュータ・リソースが関連付けされていないとき、前記第１のスレッド型を有するスレッドをアクティブ化する要求に応答して実行される、上記（１）に記載の方法。
（３）前記複数のスレッド型のうちの第１のスレッド型に前記コンピュータ・リソースのセットを関連付けすることが、前記第１のスレッド型を有するスレッドをアクティブ化する要求を受け取ることに先行して実行される、上記（１）に記載の方法。
（４）前記複数のスレッド型のうちの前記第１のスレッド型に前記コンピュータ・リソースのセットを関連付けすることが、前記第１のスレッド型にリソースをあらかじめ割り付ける要求に応答して実行される、上記（３）に記載の方法。
（５）前記複数のスレッド型のうちの前記第１のスレッド型に前記コンピュータ・リソースのセットを関連付けすることが、前記マルチスレッド・コンピュータ内の論理サブシステムを開始する要求に応答して実行される、上記（３）に記載の方法。
（６）前記複数のスレッド型が、実行優先度、バッファに対する割り当て、ユーザ・アイデンティティ、ユーザ・プロファイル、メモリ・サブシステム、親タスク、親スレッド、親ジョブ、親アプリケーション、親論理サブシステム、ユーザの権限、およびこれらの組み合わせからなるグループから選択された特性を基礎として区別される、上記（１）に記載の方法。
（７）各物理サブシステムが、メモリおよび少なくとも１つのプロセッサを含む、上記（１）に記載の方法。
（８）各物理サブシステムが複数のプロセッサを含み、前記メモリの少なくとも一部が、前記複数のプロセッサによって共有される、上記（７）に記載の方法。
（９）各物理サブシステムが、さらにキャッシュを含む、上記（７）に記載の方法。
（１０）各物理サブシステムが、固有のマルチ‐チップ・モジュール（ＭＣＭ）を含む、上記（７）に記載の方法。
（１１）前記複数のスレッド型のうちの第１のスレッド型が、前記複数の物理サブシステムのうちの第１の物理サブシステム内に物理的に配置されたコンピュータ・リソースの第１のセットに関連付けされ、さらに、
（ａ）前記第１のスレッド型と、前記マルチスレッド・コンピュータ内の、前記第１の物理サブシステムと異なる物理サブシステム内に物理的に配置されたコンピュータ・リソースの第２のセットを関連付けすること、および、
（ｂ）前記第１のスレッド型のスレッドをアクティブ化する要求に応答して、該スレッドを、前記第１のスレッド型に関連付けされているコンピュータ・リソースの前記第１および第２のセットの１つに割り当てること、を含む上記（１）に記載の方法。
（１２）複数の個別の物理サブシステムを含むマルチスレッド・コンピュータにおいてコンピュータ・リソースを動的に割り付ける方法であって、
（ａ）複数のスレッド型のうちの第１のスレッド型に関して、該第１のスレッド型と、前記マルチスレッド・コンピュータ内の第１および第２の物理サブシステムのそれぞれに物理的に配置されたコンピュータ・リソースの第１および第２のセットを関連付けすること、
（ｂ）前記第１のスレッド型の第１のスレッドをアクティブ化する要求に応答して、前記第１のスレッドを前記コンピュータ・リソースの第１のセットに割り当て、その結果、前記第１のスレッドが、前記第１のスレッドの実行間に、前記コンピュータ・リソースの第１のセット内のリソースを使用するようにすること、および、
（ｃ）前記第１のスレッド型の第２のスレッドをアクティブ化する要求に応答して、前記第２のスレッドを前記コンピュータ・リソースの第２のセットに割り当て、その結果、前記第２のスレッドが、前記第２のスレッドの実行間に、前記コンピュータ・リソースの第２のセット内のリソースを使用するようにすること、を含む方法。
（１３）（ａ）複数の個別の物理サブシステムを含むマルチスレッド・コンピュータ、および、
（ｂ）前記マルチスレッド・コンピュータ上に常駐するプログラム・コードであって、複数のスレッド型のうちの各スレッド型に関して、該スレッド型と、前記マルチスレッド・コンピュータ内の共通の物理サブシステム内に物理的に配置されたコンピュータ・リソースのセットを関連付けし、かつ、スレッドをアクティブ化する要求に応答して、前記スレッドを、該スレッドのスレッド型に関連付けされているコンピュータ・リソースのセットに割り当てるべく構成されたプログラム・コード、を備える装置。
（１４）前記複数のスレッド型のうちの第１のスレッド型に前記コンピュータ・リソースのセットを関連付けることが、前記第１のスレッド型にコンピュータ・リソースが関連付けされていないとき、前記第１のスレッド型を有するスレッドをアクティブ化する要求に応答して行われるように前記プログラム・コードが構成されている、上記（１３）に記載の装置。
（１５）前記複数のスレッド型のうちの第１のスレッド型に前記コンピュータ・リソースのセットを関連付けることが、前記第１のスレッド型を有するスレッドをアクティブ化する要求を受け取ることに先行して行われるように前記プログラム・コードが構成されている、上記（１３）に記載の装置。
（１６）前記複数のスレッド型のうちの前記第１のスレッド型に前記コンピュータ・リソースのセットを関連付けることが、前記第１のスレッド型に関してリソースをあらかじめ割り付ける要求に応答して行われるように前記プログラム・コードが構成されている、上記（１５）に記載の装置。
（１７）前記複数のスレッド型のうちの前記第１のスレッド型に前記コンピュータ・リソースのセットを関連付けることが、前記マルチスレッド・コンピュータ内の論理サブシステムを開始する要求に応答して行われるように前記プログラム・コードが構成されている、上記（１５）に記載の装置。
（１８）前記複数のスレッド型が、実行優先度、バッファに対する割り当て、ユーザ・アイデンティティ、ユーザ・プロファイル、メモリ・サブシステム、親タスク、親スレッド、親ジョブ、親アプリケーション、親論理サブシステム、ユーザの権限、およびこれらの組み合わせからなるグループから選択された特性を基礎として区別される、上記（１３）に記載の装置。
（１９）各物理サブシステムが、メモリおよび少なくとも１つのプロセッサを含む、上記（１３）に記載の装置。
（２０）各物理サブシステムが複数のプロセッサを含み、前記メモリの少なくとも一部が、前記複数のプロセッサによって共有される、上記（１９）に記載の装置。
（２１）各物理サブシステムが、さらにキャッシュを含む、上記（１９）に記載の装置。
（２２）各物理サブシステムが、固有のマルチ‐チップ・モジュール（ＭＣＭ）を含む、上記（１９）に記載の装置。
（２３）前記複数のスレッド型のうちの第１のスレッド型が、前記複数の物理サブシステムのうちの第１の物理サブシステム内に物理的に配置されたコンピュータ・リソースの第１のセットに関連付けされ、かつ前記プログラム・コードが、さらに、前記第１のスレッド型と、前記マルチスレッド・コンピュータ内の、前記第１の物理サブシステムと異なる物理サブシステム内に物理的に配置されたコンピュータ・リソースの第２のセットを関連付けし、かつ、前記第１のスレッド型のスレッドをアクティブ化する要求に応答して、該スレッドを、前記第１のスレッド型に関連付けされているコンピュータ・リソースの前記第１および第２のセットの１つに割り当てるべく構成されている、上記（１３）に記載の装置。
（２４）（ａ）複数の個別の物理サブシステムを含むタイプのマルチスレッド・コンピュータ上に常駐するプログラム・コードであって、複数のスレッド型のうちの各スレッド型に関して、そのスレッド型と、前記マルチスレッド・コンピュータ内の共通の物理サブシステム内に物理的に配置されたコンピュータ・リソースのセットを関連付けし、かつ、スレッドをアクティブ化する要求に応答して、前記スレッドを、該スレッドのスレッド型に関連付けされているコンピュータ・リソースのセットに割り当てるべく構成されたプログラム・コード、および、
（ｂ）前記プログラム・コードを担持する信号担持メディア、を備えるプログラム・プロダクト。
（２５）前記信号担持メディアが、伝達メディアおよび書き込み可能メディアのうちの少なくとも一方を含む、上記（２４）に記載のプログラム・プロダクト。
【図面の簡単な説明】
【００５５】
【図１】本発明と矛盾のない動的リソース割り付けを組み込んだマルチスレッド・コンピュータにおける基本的なハードウエア・コンポーネントのブロック図である。
【図２】図１のマルチスレッド・コンピュータの基本的なソフトウエア・コンポーネントのブロック図である。
【図３】図２に示されているスレッド・ディスパッチャによって実行されるスレッド・アクティブ化ルーチンのプログラム・フローを示したフローチャートである。
【図４】図２に示されているスレッド・ディスパッチャによって実行される別のスレッド・アクティブ化ルーチンのプログラム・フローを示したフローチャートである。
【図５】図２に示されているオペレーティング・システムによって実行され、図４のスレッド・アクティブ化ルーチンとともに使用されるアプリケーション／論理サブシステム開始ルーチンのプログラム・フローを示したフローチャートである。
【図６】本発明と矛盾のない態様に従ったマルチスレッド・コンピュータの２つの物理サブシステムの間におけるコンピュータ・リソースの割り付けの例を示したブロック図である。
【図７】本発明と矛盾のない態様に従ったマルチスレッド・コンピュータの２つの物理サブシステムの間におけるコンピュータ・リソースの割り付けの別の例を示したブロック図である。
【図８】本発明と矛盾のない態様に従ったマルチスレッド・コンピュータの２つの物理サブシステムの間におけるコンピュータ・リソースの割り付けの例を示したブロック図である。
【図９】本発明と矛盾のない態様に従ったマルチスレッド・コンピュータの２つの物理サブシステムの間におけるコンピュータ・リソースの割り付けの例を示したブロック図である。
【図１０】本発明と矛盾のない態様に従ったマルチスレッド・コンピュータの２つの物理サブシステムの間におけるコンピュータ・リソースの割り付けの別の例であって、特定のスレッド型に対する１を超える数の物理サブシステムからのコンピュータ・リソースの割り付けを示したブロック図である。
【符号の説明】
【００５６】
１０  コンピュータ
１２  物理サブシステム
１４  システム・バス
１６  Ｉ／Ｏリソース
１８  共有メモリ
２０  マイクロプロセッサ
２２  共有キャッシュ
２４  ローカル・キャッシュ
３０  ソフトウエア・アーキテクチャ
３２  オペレーティング・システム
３４  アプリケーション
３６  論理サブシステム
３８  スレッド
４０  スレッド・ディスパッチャ
５０  スレッド・アクティブ化ルーチン
７０  スレッド・アクティブ化ルーチン
８０  アプリケーション／論理サブシステム開始ルーチン
【図１】
2004220608.tif 000003
【図２】
2004220608.tif 000004
【図３】
2004220608.tif 000005
【図４】
2004220608.tif 000006
【図５】
2004220608.tif 000007
【図６】
2004220608.tif 000008
【図７】
2004220608.tif 000009
【図８】
2004220608.tif 000010
【図９】
2004220608.tif 000011
【図１０】
2004220608.tif 000012