(57)【特許請求の範囲】
【請求項１】
組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備え、
前記複数の再設定可能ユニットのうちの第１の再設定可能ユニットの第１の中間結果が、前記複数の再設定可能ユニットのうちの第２の再設定可能ユニットの第２の中間結果と交換され、
前記複数の再設定可能ユニットのうちの前記第１の再設定可能ユニットが、前記第２の中間結果を利用して前記組合せ結果の第１の部分を演算し、
前記複数の再設定可能ユニットのうちの前記第２の再設定可能ユニットが、前記第１の中間結果を利用して前記組合せ結果の第２の部分を演算する、回路。
【請求項２】
各再設定可能ユニットが、個々の結果を演算するように再設定可能である、請求項１に記載の回路。
【請求項３】
各再設定可能ユニットが、再設定可能低精度演算ユニットを備えた、請求項１に記載の回路。
【請求項４】
各再設定可能ユニットが、乗算・加算演算回路を備えた、請求項３に記載の回路。
【請求項５】
前記乗算・加算演算回路が、乗算器、第１の加算器、フォーマッタ、および第２の加算器を備えた、請求項４に記載の回路。
【請求項６】
前記第１の中間結果および前記第２の中間結果の前記交換が、前記第１の再設定可能ユニットからの上位ｘビットおよび前記第２の再設定可能ユニットからの下位ｘビットの提供を含む、請求項１に記載の回路。
【請求項７】
前記複数の再設定可能ユニットが、ｘビット数の複数回の乗算を演算し、２＊ｘビットの結果を合計して前記組合せ結果を生成するように再設定可能である、請求項１に記載の回路。
【請求項８】
各再設定可能ユニットが、２＊ｘビットの累算器結果を前記組合せ結果に加算するように再設定可能である、請求項７に記載の回路。
【請求項９】
前記複数の再設定可能ユニットのうちの４つの再設定可能ユニットから成る群が、乗算演算および加算演算を含む４つの１倍精度、２つの２倍精度、または１つの４倍精度の複雑な算術演算の実行を提供する、請求項１に記載の回路。
【請求項１０】
プロセッサおよびメモリを備え、
前記プロセッサが、組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備え、
前記複数の再設定可能ユニットのうちの第１の再設定可能ユニットの第１の中間結果が、前記複数の再設定可能ユニットのうちの第２の再設定可能ユニットの第２の中間結果と交換され、
前記複数の再設定可能ユニットのうちの前記第１の再設定可能ユニットが、前記第２の中間結果を利用して前記組合せ結果の第１の部分を演算し、
前記複数の再設定可能ユニットのうちの前記第２の再設定可能ユニットが、前記第１の中間結果を利用して前記組合せ結果の第２の部分を演算する、システム。
【請求項１１】
各再設定可能ユニットが、個々の結果を演算するように再設定可能である、請求項１０に記載のシステム。
【請求項１２】
各再設定可能ユニットが、再設定可能低精度演算ユニットを備えた、請求項１１に記載のシステム。
【請求項１３】
各再設定可能ユニットが、乗算・加算演算回路を備えた、請求項１２に記載のシステム。
【請求項１４】
前記乗算・加算演算回路が、乗算器、第１の加算器、フォーマッタ、および第２の加算器を備えた、請求項１３に記載のシステム。
【請求項１５】
前記第１の中間結果および前記第２の中間結果の前記交換が、前記第１の再設定可能ユニットからの上位ｘビットおよび前記第２の再設定可能ユニットからの下位ｘビットの提供を含む、請求項１０に記載のシステム。
【請求項１６】
前記複数の再設定可能ユニットが、ｘビット数の複数回の乗算を演算し、２＊ｘビットの結果を合計して前記組合せ結果を生成するように再設定可能である、請求項１０に記載のシステム。
【請求項１７】
各再設定可能ユニットが、２＊ｘビットの累算器結果を前記組合せ結果に加算するように再設定可能である、請求項１６に記載のシステム。
【請求項１８】
組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備えたプロセッサにより実装される方法であって、
再設定可能な前記複数の再設定可能ユニットのうちの第１の再設定可能ユニットの第１の中間結果を、再設定可能な前記複数の再設定可能ユニットのうちの第２の再設定可能ユニットの第２の中間結果と交換することと、
前記複数の再設定可能ユニットのうちの前記第１の再設定可能ユニットにより、前記第２の中間結果を利用して前記組合せ結果の第１の部分を演算することと、
前記複数の再設定可能ユニットのうちの前記第２の再設定可能ユニットにより、前記第１の中間結果を利用して前記組合せ結果の第２の部分を演算することと、
を含む、方法。
【請求項１９】
各再設定可能ユニットが、個々の結果を演算するように再設定可能である、請求項１８に記載の方法。
【請求項２０】
各再設定可能ユニットが、再設定可能低精度演算ユニットを備えた、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概してプロセッサ演算設計に関し、より詳細には、実行ユニットを組み合わせて単一の広いスカラー結果を演算することに関する。
【背景技術】
【０００２】
現代のチップ／コア設計では、コグニティブ・コンピューティングのように、新たに発生するワークロードを処理することができる。ただし、これらの発生するワークロードには、取り組む問題に基づいて、要件が変動する非常に大きな演算能力が必要であり、この演算は、大規模な短精度計算と高精度計算との間で変動する。要件が変動することにより、「フリーサイズ」のユニットを構築する場合に、現代のチップ／コア設計が難しくなる。このような難しさとしては、所望の低精度スループットをもたらさない少数の高精度ユニットと複雑な高精度演算を行うのにソフトウェア・オーバヘッドを要する多数の低精度ユニットとを両立させることが挙げられる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
従って本発明が解決しようとする課題は、複数の実行ユニットの組合せによる単一の広いスカラー結果の演算を行う回路、システム、および方法を提供することである。
【課題を解決するための手段】
【０００４】
１つまたは複数の実施形態によれば、回路が提供される。この回路は、組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備える。複数の再設定可能ユニットのうちの第１の再設定可能ユニットの第１の中間結果が、複数の再設定可能ユニットのうちの第２の再設定可能ユニットの第２の中間結果と交換される。複数の再設定可能ユニットのうちの第１の再設定可能ユニットは、第２の中間結果を利用して組合せ結果の第１の部分を演算する。複数の再設定可能ユニットのうちの第２の再設定可能ユニットは、第１の中間結果を利用して組合せ結果の第２の部分を演算する。
【０００５】
１つまたは複数の実施形態によれば、システムが提供される。このシステムは、プロセッサおよびメモリを備える。プロセッサは、組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備える。複数の再設定可能ユニットのうちの第１の再設定可能ユニットの第１の中間結果が、複数の再設定可能ユニットのうちの第２の再設定可能ユニットの第２の中間結果と交換される。複数の再設定可能ユニットのうちの第１の再設定可能ユニットは、第２の中間結果を利用して組合せ結果の第１の部分を演算する。複数の再設定可能ユニットのうちの第２の再設定可能ユニットは、第１の中間結果を利用して組合せ結果の第２の部分を演算する。
【０００６】
１つまたは複数の実施形態によれば、方法が提供される。この方法は、組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備えたプロセッサにより実装される。この方法は、再設定可能な複数の再設定可能ユニットのうちの第１の再設定可能ユニットの第１の中間結果を、再設定可能な複数の再設定可能ユニットのうちの第２の再設定可能ユニット交換の第２の中間結果と交換することを含む。この方法は、複数の再設定可能ユニットのうちの第１の再設定可能ユニットにより、第２の中間結果を利用して組合せ結果の第１の部分を演算することと、複数の再設定可能ユニットのうちの第２の再設定可能ユニットにより、第１の中間結果を利用して組合せ結果の第２の部分を演算することと、を含む。
【０００７】
本明細書の最後の特許請求の範囲において、主題を詳細に挙げるとともに明確に請求する。本明細書の実施形態の上記および他の特徴および利点については、添付の図面と併せた以下の詳細な説明によって明らかとなる。
【図面の簡単な説明】
【０００８】
【図１】１つまたは複数の実施形態に係るシステムを示した図である。
【図２】１つまたは複数の実施形態に係るシステムの一実装例を示した図である。
【図３】１つまたは複数の実施形態に係るシステムのプロセス・フローを示した図である。
【図４】１つまたは複数の実施形態に係るシステムの一実装例を示した図である。
【図５】１つまたは複数の実施形態に係るシステムを示した図である。
【発明を実施するための形態】
【０００９】
一般的に、並列コンピューティングは、大きな問題を解決するために多くの計算またはプロセス、あるいはその両方が同時に実行される種類の演算である。大きな問題の例としては、天の川銀河のモデリング、コグニティブ・コンピューティング・モデルの構築およびトレーニング、がん研究の計算の実装、３次元アニメーションのレンダリング等が挙げられる。並列コンピューティングでは、大きな問題を分割して、後で同時に解決できる小さな計算とする。問題（および、アルゴリズム）に基づいて、低精度演算、高精度演算、または両者の混合が必要となる。並列コンピューティングには複数の異なる形態（たとえば、現代のチップ／コア設計）が存在し、それぞれに欠点がある。
【００１０】
たとえば、シリコン・エリア上でパワーが増大するモバイル機器において使用される現代のシステム・オン・チップ大型／小型コア設計は、チップが特定の物理的サイズを超えられないことでエリアが同じく注目される高性能のサーバ・チップには適していない。グラフィックス処理ユニットとインターフェースして多数の低精度演算コアを提供し得る現代の高精度コア・チップもまた、これらの低精度コアと現代の高精度コア・チップとの間の相対的な「距離」（単位：サイクル）および帯域幅に関して、大きな性能ペナルティをもたらす。高性能コア・チップへの別のアプローチでは、可能な限り多くのコアに適合するように、コア上の高精度演算ユニットのサイズを最小限に抑えようとする。これでもなお、高精度演算要件と低精度演算要件とを両立させる問題は基本的に解決されない。
【００１１】
ここで、本発明の態様の概説に移って、本明細書に開示の実施形態には、シングル・インストラクション・マルチプル・データ（ＳＩＭＤ）ユニットを組み合わせて、ＳＩＭＤユニット間で部分的結果を交換することにより単一の高精度で複雑な算術演算を実行するシステム、方法、またはコンピュータ・プログラム製品（本明細書においては、システム）、あるいはその組合せを含んでいてもよい。ＳＩＭＤユニットは、複数のデータ・ポイントで同じ演算を同時に実行可能な複数の処理要素を備える。このシステムの技術的効果および利点として、（高精度乗算・加算のような）高精度の複雑な演算を行う容量を依然として保ちつつ、範囲外の市場向けの高効率小型低精度ブロックの構築が可能である。このシステムの技術的効果および利点として、ＳＩＭＤユニットのパイプライン化による如何なる結果的な配線オーバヘッドまたは遅延、あるいはその両方も制限・秘匿可能である。このため、本明細書に記載の実施形態は必然的に、事前演算を実行することにより、プロセッサ演算設計の領域で具体的に起こる問題を克服するシステムのプロセッサに基づく（たとえば、これらの問題には、非常に大きな演算精度の要件が変動することを考慮して、少数の高精度ユニットと多数の低精度ユニットとを平衡させることを含む）。
【００１２】
ここで、図１を参照して、システム１００は、ｎ個の小型低精度ｘビット・ユニット（ＳＩＭＤユニット１２０．０・・・１２０．ｎ−１（ｎは、ゼロより大きな整数））を組み合わせて、ｎ個の小型低精度ｘビット・ユニット間で部分的結果を交換することにより（矢印１４０参照）、（たとえば、ｎ＊ｘビットまで（ｘは、ゼロより大きな整数））単一の高精度で複雑な算術演算を実行する。システム１００は、算術的な乗算演算または乗算・加算演算、あるいはその両方に利用可能である（すなわち、乗算を伴うこれらの演算では、ＳＩＭＤユニット間の単純なキャリア伝搬からシステム１００を区別する）。
【００１３】
たとえば、ＳＩＭＤユニット１２０．０・・・１２０．ｎ−１は、広いｘビット数の複数回の乗算を演算し、２＊ｘビットの結果を合計して組合せ結果を生成するように再設定可能である。組合せ結果としては、高精度の単一で広くて複雑なスカラー結果も可能であるし、高精度の単一で広くて複雑なスカラー結果の一部も可能である。なお、ＳＩＭＤユニット１２０．０・・・１２０．ｎ−１の組合せにより、広い結果の並列（すなわち、非逐次的）演算が可能となる。
【００１４】
さらに、各ＳＩＭＤユニット１２０．０・・・１２０．ｎ−１は、２＊ｘビットの累算器結果を組合せ結果に加算するように再設定可能である。非限定的な一実施形態によれば、４つのＳＩＭＤユニットから成る群が、非限定的に乗算演算を含む４つの１倍精度、２つの２倍精度、または１つの４倍精度の複雑な算術演算の実行を提供可能である。
【００１５】
たとえば、システム１００のＳＩＭＤユニット１２０は、（ブロック１５０により表される）ｎ個のｘビット入力オペランドまたはｎ＊ｘビットの入力オペランドを受信する（矢印１４１参照）ｘビットのユニットを含み得る。これらのオペランド上で、複雑な算術演算がＳＩＭＤユニット１２０により実行される。
【００１６】
複雑な算術演算において、ＳＩＭＤユニット１２０はそれぞれ、部分的結果を交換する（矢印１４０参照）。非限定的な一実施形態において、ｎが２に等しい場合は、第１の中間結果を生成する複雑な算術演算の高次部分をＳＩＭＤユニット１２０の一方（たとえば、ＳＩＭＤユニット１２０．０）が実行し、第２の中間結果を生成する複雑な算術演算の低次部分をＳＩＭＤユニット１２０の他方（たとえば、ＳＩＭＤユニット１２０．１）が実行することができる。
【００１７】
部分的結果は、ｎ＊ｘビットのスカラー結果も可能な最終結果１６０の各部の演算に利用される（矢印１５１参照）。非限定的な実施形態の続きとして、ＳＩＭＤユニット１２０．０は、ＳＩＭＤユニット１２０．１からの中間結果の一部を利用して、最終結果１６０の高次部分を生成可能である。ＳＩＭＤユニット１２０．１は、ＳＩＭＤユニット１２０．０からの中間結果の一部を利用して、最終結果１６０の低次部分を生成可能である。その後、低次部分および高次部分が連結されて（組み合わされて）、最終結果１６０が生成される。
【００１８】
ここで、図２を参照して、この図は、１つまたは複数の実施形態に係るシステム１００の一実装例を示している。実装例は、乗算・加算演算回路をそれぞれ含む第１の演算ユニット２０１および第２の演算ユニット２０２（たとえば、２進浮動小数点演算ユニット）を備えたシステム２００として示している。第１および第２の演算ユニット２０１および２０２の乗算・加算演算回路はそれぞれ、乗算器２０５および２０６（たとえば、サム・キャリー乗算器）、第１の加算器２１３および２１４（たとえば、組み込み加算器）、第２の加算器２１７および２１８、フォーマッタ２２１および２２２（たとえば、正規化器または丸め器）、ならびにマルチプレクサ２２５および２２６を備える。
【００１９】
ここで、図３のプロセス・フロー３００に関する非限定的な一実施形態に係るシステム２００の動作を説明する。なお、プロセス・フロー３００は、第１の演算ユニット２０１の観点から動作を説明するが、第２の演算ユニット２０２においても、類似の動作が並列して起こる。
【００２０】
一般的に、データ要素低精度演算ブロック（たとえば、演算ユニット２０１および２０２）はそれぞれ、ＳＩＭＤのデータ要素のうちの１つについて結果を演算する低精度演算ブロックである（マルチプル・データ要素インストラクション）。これらのデータ要素低精度演算ブロック（たとえば、演算ユニット２０１および２０２）からの中間結果が交換され、組合せによって高精度のデータ結果が演算される。
【００２１】
プロセス・フロー３００はブロック３０５で開始となり、システム２００は、第１の演算ユニット２０１全体で一組のオペランドを受信する。一組のオペランドには、少なくとも３つのオペランドＡ、Ｂ、およびＣを含み得る。本例において、第１の演算ユニット２０１は、これら３つのオペランドＡ、Ｂ、およびＣの高次ビットを管理する。図２に示すように、第１の演算ユニット２０１によってＡＨＩＧＨ、ＢＨＩＧＨ、およびＣＨＩＧＨが受信される。なお、非限定的な一実施形態において、各オペランドＡ、Ｂ、およびＣが２ｘビット（たとえば、１２８ビット）の場合、高次ビットは、ｘビット（たとえば、６４ビット）へと均等に分割される。ブロック３１０において、システム２００の乗算器２０５はそれぞれ、一組のオペランドの第１のオペランド（たとえば、ＡＨＩＧＨ）および第２のオペランド（たとえば、ＣＨＩＧＨ）を乗算して積を生成する。図２に示すように、乗算器２０５はＡＨＩＧＨおよびＣＨＩＧＨを乗算するが、これにより、第１の２ｘビット積（たとえば、１２８ビット積）および第２の２ｘビット積が提供される。
【００２２】
なお、非限定的な一実施形態において、システム２００は、積（たとえば、第１および第２の２ｘビット積）を加算して合計を生成することができる。ブロック３２０において、システム２００は、一組のオペランドの第３のオペランド（たとえば、ＢＨＩＧＨ）に「ゼロ」ビットをアペンドして、積の幅と整合させる（こうして、拡張された第３のオペランドを生成する）。なお、アペンド演算によって２番目の合計の２ｘビット数が生成されるが、このアペンド演算は、第１の加算器２１３（たとえば、３入力・出力加算器）において起こり得る。たとえば、図２に示すように、第１の加算器２１３は、第１および第２の２ｘビット積を加算して第１の２ｘビット合計を生成するとともに、ＢＨＩＧＨおよび「ゼロ」ビットを加算して第２の２ｘビット合計を生成する。
【００２３】
ブロック３２５において、システム２００は、積および拡張された第３のオペランドを加算して、中間結果を生成する。なお、中間結果としては、２ｘビット数が可能である。ブロック３３０において、システム２００は、第２の演算ユニット２０２により中間結果の一部を交換する。たとえば、図２に示すように、第１の加算器２１３は、第１および第２の２ｘビット合計を加算して、中間結果を生成する。第１の加算器２１３からの中間結果の一部が第２の演算ユニット２０２に与えられる。また、第１の加算器２１４からの中間結果の一部が第１の演算ユニット２０１に与えられる。このように、各中間結果の一部が交換される。なお、図２では、第１の２進浮動小数点ユニット２０１からの中間結果の下位ｘビット（たとえば、６４Ｌ；ＲＬｏｗ）が第２の２進浮動小数点ユニット２０２からの中間結果の上位ｘビット（たとえば、６４Ｈ；ＲＨＩＧＨ）と交換されることを示している。このように、乗算または乗算・加算、あるいはその両方の広い結果の演算に、一部の結果（たとえば、ＲＨＩＧＨおよびＲＬＯＷ）が利用される。
【００２４】
ブロック３３５において、システム２００は、中間結果の一部および第２の演算ユニットから受信された中間結果の一部を加算して、最終結果の一部を生成する。図２に示すように、第２の加算器２１７は、第１の２進浮動小数点ユニット２０１からの中間結果の上位６４ビット（たとえば、６４Ｈ）および第２の２進浮動小数点ユニット２０２からの中間結果の上位６４ビット（たとえば、６４Ｈ；ＲＨＩＧＨ）を最終結果に加算する。また、第２の加算器２１７は、第２の加算器２１８からのキャリー・ビット（たとえば、ＣＬＯＷ）も利用可能である。そして、最終結果がマルチプレクサ２２５により、フォーマッタ２２１から出力された正規化中間結果と多重化されて、最終結果の高次ビット（たとえば、ＲＥＳＨＩＧＨ）が生成される。上述の通り、第２の演算ユニット２０２においても類似の演算が並列して行われ、最終結果の低次ビット（たとえば、ＲＥＳＬＯＷ）が生成される。
【００２５】
ここで、図４を参照して、この図は、１つまたは複数の実施形態に係るシステム１００の一実装例を示している。実装例は、第１の演算ユニット４０１および第２の演算ユニット４０２（たとえば、２進浮動小数点演算ユニット）を備えたシステム４００として示している。第１および第２の演算ユニット４０１および４０２はそれぞれ、乗算器４０５および４０６、第１の加算器４０９および４１０、第２の加算器４１７および４１８、フォーマッタ４２１および４２２、ならびにマルチプレクサ４２５および４２６を備える。
【００２６】
例示的な一動作において、システム４００は、第１の演算ユニット４０１および第２の演算ユニット４０２全体で一組のオペランドを受信する。一組のオペランドには、オペランドＡ  ４０３ａ、オペランドＢ  ４０３ｂ、オペランドＣ  ４０３ｃ、オペランドＤ  ４０３ｄと併せて、数４０２を含み得る。本例において、第１の演算ユニット４０１は数４０２の高次ビットを管理し、第２の演算ユニット４０２は数４０２の低次ビットを管理する。
【００２７】
図４に示すように、オペランドＡ  ４０３ａおよびオペランドＢ  ４０３ｂは、システム４００の乗算器４０５により乗算されて、第１の積が生成される。オペランドＣ  ４０３ｃおよびオペランドＤ  ４０３ｄは、システム４００の乗算器４０６により乗算されて、第２の積が生成される。
【００２８】
システム４００は、第１の積を加算して、数４０２の高次ビットに「ゼロ」ビットをアペンドした結果としての第１の合計を生成する。さらに、システム４００は、第２の積を加算して、数４０２の低次ビットに「ゼロ」ビットをプリペンドした結果としての第２の合計を生成する。
【００２９】
システム４００は、第１の加算器４０９を利用して第１の合計および第１の積を加算することにより、第１の中間結果を生成する。システム４００は、第１の加算器４１０を利用して第２の合計および第２の積を加算することにより、第２の中間結果を生成する。第１および第２の中間結果はそれぞれ、第１および第２の中間結果の一部が交換されて第２の加算器４１７および４１８に供給されるように分割される。たとえば、第１の中間結果の下位部分を第２の２進浮動小数点ユニット４０２に提供可能である一方、第１の中間結果の上位部分を第２の加算器４１７に提供可能である。第２の中間結果の上位部分を第１の２進浮動小数点ユニット４０１に提供可能である一方、第２の中間結果の下位部分を第２の加算器４１８に提供可能である。なお、第１および第２の中間結果はそれぞれ、全体をフォーマッタ４２１および４２２に提供可能である。
【００３０】
第２の加算器４１８は、第１の中間結果の下位部分および第２の中間結果の下位部分を加算して、最終結果の下位部を生成する。そして、第２の最終結果がマルチプレクサ４２６により、フォーマッタ４２２から出力された正規化中間結果と多重化されて、組合せ結果４９０の低次ビットが生成される。第２の加算器４１７は、第１の中間結果の上位部分、第２の中間結果のキャリー・ビット、および第２の中間結果の上位部分を加算して、最終結果の上位部を生成する。そして、第１の最終結果がマルチプレクサ４２５により、フォーマッタ４２１から出力された正規化中間結果と多重化されて、組合せ結果４９０の高次ビットが生成される。
【００３１】
図５は、１つまたは複数の実施形態に係るシステム５００の一例を示している。システム５００は、１つまたは複数の中央演算処理装置（ＣＰＵ）５０１ａ、５０１ｂ、５０１ｃ等（プロセッサ５０１と総称する）を有する。処理回路とも称するプロセッサ５０１は、システム・バス５０２を介して、システム・メモリ５０３および他のさまざまなコンポーネントに結合されている。システム・メモリ５０３には、リード・オンリー・メモリ（ＲＯＭ）５０４およびランダム・アクセス・メモリ（ＲＡＭ）５０５を含み得る。ＲＯＭ５０４は、システム・バス５０２に結合され、システム５００の特定の基本機能を制御する基本入出力システム（ＢＩＯＳ）を含んでいてもよい。ＲＡＭは、システム・バス５０２に結合されてプロセッサ５０１が使用する読み書きメモリである。
【００３２】
図５は、システム・バス５０２に結合された入出力（Ｉ／Ｏ）アダプタ５０６および通信アダプタ５０７をさらに示している。Ｉ／Ｏアダプタ５０６は、ハード・ディスク５０８またはその他任意の類似コンポーネント、あるいはその両方と通信する小型コンピュータ用周辺機器インターフェース（ＳＣＳＩ）アダプタであってもよい。本明細書において、Ｉ／Ｏアダプタ５０６およびハード・ディスク５０８は、マス・ストレージ５１０と総称する。マス・ストレージ５１０には、システム５００上で実行されるソフトウェア５１１が記憶されていてもよい。マス・ストレージ５１０は、プロセッサ５０１可読の有形記憶媒体の一例であり、ソフトウェア５１１は、図３を参照して本明細書に記載したようにシステム５００を動作させるようにプロセッサ５０１が実行する命令として記憶される。コンピュータ・プログラム製品およびこのような命令の実行の例については、本明細書においてより詳細に論じる。図５を再び参照して、通信アダプタ５０７は、外部ネットワークでもあり得るネットワーク５１２とシステム・バス５０２を相互接続して、システム５００がこのような他のシステムと通信できるようにする。システム・バス５０２には、グラフィックス集約的なアプリケーションの性能を向上させるグラフィックス・コントローラおよびビデオ・コントローラを含み得るディスプレイ・アダプタ５１６によって、ディスプレイ（たとえば、スクリーン、表示モニタ）５１５が接続されている。一実施形態において、アダプタ５０６、５０７、および５１６は、中間バス・ブリッジ（図示せず）を介してシステム・バス５０２に接続された１つまたは複数のＩ／Ｏバスに接続されていてもよい。ハード・ディスク・コントローラ、ネットワーク・アダプタ、およびグラフィックス・アダプタ等の周辺機器を接続する適当なＩ／Ｏバスは通常、周辺機器相互接続（ＰＣＩ）等の共通プロトコルを含む。インターフェース・アダプタ５２０およびディスプレイ・アダプタ５１６を介してシステム・バス５０２に接続されるものとして、別の入出力装置が示される。たとえば複数のデバイス・アダプタを単一の集積回路に統合するスーパーＩ／Ｏチップを含み得るインターフェース・アダプタ５２０を介して、キーボード、マウス、スピーカ等をシステム・バス５０２に相互接続可能である。
【００３３】
このため、図５に設定の通り、システム５００は、プロセッサ５０１の形態の処理機能と、システム・メモリ５０３およびマス・ストレージ５１０を含む記憶機能と、キーボードおよびマウス等の入力手段と、スピーカおよびディスプレイ５１５を含む出力機能とを具備する。一実施形態においては、ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎによるｚ／ＯＳまたはＡＩＸオペレーティング・システム等のオペレーティング・システムをシステム・メモリ５０３およびマス・ストレージ５１０の一部がまとめて記憶することにより、図５に示すさまざまなコンポーネントの機能を統合する。
【００３４】
本発明は、任意の考え得る技術的詳細集約レベルのシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってもよい。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含んでいてもよい。
【００３５】
コンピュータ可読記憶媒体としては、命令実行装置が使用する命令を保持・記憶し得る有形デバイスが可能である。コンピュータ可読記憶媒体は、たとえば電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置、または上記の任意適当な組合せであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的一覧には、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリー・メモリ（ＲＯＭ）、消去可能プログラム可能リード・オンリー・メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、携帯型コンパクト・ディスク・リード・オンリー・メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、パンチ・カードまたは命令が記録された溝中の隆起構造等の機械的符号化デバイス、および上記の任意適当な組合せを含む。本明細書において使用するコンピュータ可読記憶媒体は、無線波または自由伝搬電磁波、導波路または伝送媒体を伝搬する電磁波（たとえば、光ファイバ・ケーブルを通過する光パルス）、またはワイヤを通って伝わる電気信号等の一時的信号それ自体として解釈されないものとする。
【００３６】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理装置にダウンロードすることも可能であるし、たとえばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組合せ等のネットワークを介して、外部コンピュータまたは外部記憶装置にダウンロードすることも可能である。ネットワークには、銅製伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含んでいてもよい。各コンピューティング／処理装置のネットワーク・アダプタ・カードまたはネットワーク・インターフェースがネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を転送して、各コンピューティング／処理装置内のコンピュータ可読記憶媒体に記憶する。
【００３７】
本発明の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用設定データ、またはＳｍａｌｌｔａｌｋ、Ｃ＋＋等のオブジェクト指向プログラミング言語および「Ｃ」プログラミング言語もしくは類似のプログラミング言語等の手続き型プログラミング言語等の１つもしくは複数のプログラミング言語の任意の組合せにより記述されたソース・コードもしくはオブジェクト・コードであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上ですべてが実行されるようになっていてもよいし、独立型ソフトウェア・パッケージとしてユーザのコンピュータ上で一部が実行されるようになっていてもよいし、ユーザのコンピュータ上で一部が実行されるとともにリモート・コンピュータ上で一部が実行されるようになっていてもよいし、リモート・コンピュータまたはサーバ上で全体が実行されるようになっていてもよい。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）等の任意の種類のネットワークを通じてユーザのコンピュータに接続されていてもよいし、（たとえば、インターネット・サービス・プロバイダによりインターネットを通じて）外部のコンピュータに接続されていてもよい。いくつかの実施形態においては、たとえばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル論理アレイ（ＰＬＡ）等の電子回路がコンピュータ可読プログラム命令の状態情報を利用してコンピュータ可読プログラム命令を実行することにより、電子回路をカスタマイズして本発明の態様を実行するようにしてもよい。
【００３８】
本明細書においては、本発明の実施形態に係る方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図、あるいはその両方を参照して、本発明の態様を説明した。フローチャート図またはブロック図、あるいはその両方の各ブロックならびにフローチャート図またはブロック図、あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装可能であることが理解される。
【００３９】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行する当該命令によって、フローチャートまたはブロック図、あるいはその両方の１つまたは複数のブロックに指定の機能／動作を実装する手段が構成されるように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを生成するようになっていてもよい。また、これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図、あるいはその両方の１つまたは複数のブロックに指定の機能／動作の態様を実装する命令を含む製造品を含むように、コンピュータ、プログラム可能なデータ処理装置、または他の機器、あるいはその組合せが特定の様態で機能するように指示可能なコンピュータ可読記憶媒体に記憶されていてもよい。
【００４０】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能な装置、または他の機器上で実行する当該命令が、フローチャートまたはブロック図、あるいはその両方の１つまたは複数のブロックに指定の機能／動作を実装するように、コンピュータ、他のプログラム可能なデータ処理装置、または他の機器にロードされ、一連の動作ステップがコンピュータ、他のプログラム可能な装置、または他の機器上で実行されてコンピュータ実装プロセスを生成するようになっていてもよい。
【００４１】
図面中のフローチャートおよびブロック図は、本発明の種々実施形態に係るシステム、方法、およびコンピュータ・プログラム製品の考え得る実施態様の構成、機能、および動作を示している。この点、フローチャートまたはブロック図の各ブロックは、命令のモジュール、セグメント、または部分を表していてもよく、指定の論理的機能を実装する１つまたは複数の実行可能な命令を含む。いくつかの代替の実施態様において、各ブロックに記載の機能は、図面に記載の順序から外れて生じ得る。たとえば、関与する機能に応じて、連続して示す２つのブロックが実際のところ、実質的に同時に実行されるようになっていてもよいし、各ブロックが場合により逆の順序で実行されるようになっていてもよい。また、ブロック図またはフローチャート図、あるいはその両方の各ブロックならびにブロック図またはフローチャート図、あるいはその両方におけるブロックの組合せは、指定の機能または動作を実行するか、あるいは専用ハードウェアおよびコンピュータ命令の組合せを実行する専用ハードウェアに基づくシステムにより実装可能であることに留意する。
【００４２】
本明細書において使用する専門用語は、特定の実施形態を説明することを目的としているに過ぎず、何ら限定する意図はない。本明細書において、単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、文脈上の別段の明確な指定のない限り、複数形も同様に含むことが意図される。本明細書において使用する場合の用語「備える（ｃｏｍｐｒｉｓｅｓまたはｃｏｍｐｒｉｓｉｎｇ、あるいはその両方）」は、記載の特徴、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組合せの存在を指定するものの、１つまたは複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、またはその群、あるいはその組合せの存在または追加を除外するものではないことがさらに理解される。
【００４３】
本明細書における種々実施形態の説明は、例示を目的として提示しているものの、何ら網羅的でもなければ、開示の実施形態に限定されることを意図したものでもない。上記実施形態の範囲および思想から逸脱することなく、当業者には、多くの改良および変形が明らかとなるであろう。本明細書において使用する専門用語は、上記実施形態の原理、実際の用途、もしくは市場において見られる技術の技術的改良を最もよく説明すること、または、当業他者が本明細書に開示の実施形態を理解できるようにすることを目的として選定したものである。
【図１】
0006979076.tif 000002
【図２】
0006979076.tif 000003
【図３】
0006979076.tif 000004
【図４】
0006979076.tif 000005
【図５】
0006979076.tif 000006