(57)【特許請求の範囲】
【請求項１】
回路であって、
符号絶対値データ形式で結果を生み出すために、可変長のオペランドを加算または減算するように構成される算術計算ロジックと、
指定の結果長さｌに前記結果が収まるかどうかを示すオーバーフロー信号を提供するオーバーフロー検出器であって、前記指定の結果長さｌに前記結果が収まるかどうかを、前記算術計算ロジックによって生み出される前記結果とは無関係に判断するために、前記算術計算ロジックが前記結果を生み出す前に前記オペランドに対して演算を行う、前記オーバーフロー検出器と
を備え、
前記オーバーフロー検出器が、前記指定の結果長さｌに基づいてパディング・ベクトルＰを生成することによって、前記指定の結果長さに前記結果が収まるかどうかを判断し、桁上げ出力が存在するかどうかを判断するために、前記オペランドと前記パディング・ベクトルＰの加算を評価し、前記オーバーフロー信号が前記桁上げ出力に基づく、
回路。
【請求項２】
前記オーバーフロー検出器が、前記算術計算ロジックと並行してオペランドに対して演算する、請求項１に記載の回路。
【請求項３】
前記オーバーフロー検出器が、前記算術計算ロジックが前記符号絶対値データ形式で前記結果を生み出す前に、または並行して前記オーバーフロー信号を提供する、請求項１に記載の回路。
【請求項４】
前記オペランドが、２つのオペランドを含み、前記オーバーフロー検出器が、前記２つのオペランドと前記パディング・ベクトルＰの３つの加算の前記桁上げ出力をチェックする、請求項１に記載の回路。
【請求項５】
前記桁上げ出力が、ｎ桁加算器によるものであり、ｎが、前記指定の結果長さｌより大きく、前記パディング・ベクトルＰが、前記指定の結果長さｌの左にビットをパディングすることによって生み出され、前記結果長さの桁上げ出力が、前記オーバーフロー検出器によってチェックされた前記桁上げ出力を生成するために一番左の位置に伝搬される、請求項１に記載の回路。
【請求項６】
前記オペランドが、オペランドＡおよびオペランドＢを含み、前記算術計算ロジックが、可変長の前記オペランドを加算するように構成され、前記オーバーフロー検出器が、９パディングを含む、桁生成（ｇ項）信号および桁伝搬（ｐ項）信号に関する以下の方程式を使用して、オペランドＡおよびオペランドＢに対する別々の桁上げ木を実行して、前記ｇ項およびｐ項から桁上げ出力を導出し、前記オーバーフロー信号が前記桁上げ出力に基づき、
Ｍ（ｎ−１，．．．，０）がビット・ベクトルであり、ｋ＜ｌの場合、Ｍ（ｋ）＝０であり、ｋ≧ｌの場合、Ｍ（ｋ）＝１であり、
桁ｋに対するｇ項：Ａ（ｋ）＋Ｂ（ｋ）＋９×Ｍ（ｋ）≧１０、ここで、桁Ａ（ｋ）およびＢ（ｋ）ならびに潜在的な９パディングが、桁上げを生成し、
桁ｋに対するｐ項：Ａ（ｋ）＋Ｂ（ｋ）＋９×Ｍ（ｋ）≧９、前記桁ｋが、桁上げを伝搬する、
請求項１に記載の回路。
【請求項７】
前記オペランドが、オペランドＡおよびオペランドＢを含み、前記算術計算ロジックが、可変長の前記オペランドを減算するように構成され、前記オーバーフロー検出器が、１０ｌのパディングを使用することを含む、桁生成（ｇ項）信号および桁伝搬（ｐ項）信号に関する以下の方程式を使用して、オペランドＡおよびオペランドＢに対する別々の桁上げ木を実行し、ここで、ｌは、前記指定の結果長さｌであり、
Ｍ（ｎ−１，．．．，０）がビット・ベクトルであり、ｋ！＝ｌの場合、Ｍ（ｋ）＝０であり、ｋ＝ｌの場合、Ｍ（ｋ）＝１であり、
Ａ＞Ｂ（Ａ−Ｂ）の場合、
桁ｋに対するｇ項：！Ａ（ｋ）＋Ｂ（ｋ）＋１×Ｍ（ｋ）≧１６（桁Ａ（ｋ）およびＢ（ｋ）ならびに潜在的な１パディングが桁上げを生成する）、
桁ｋに対するｐ項：！Ａ（ｋ）＋Ｂ（ｋ）＋１×Ｍ（ｋ）≧１５（前記桁ｋが桁上げを伝搬する）、
Ｂ≧Ａ（Ｂ−Ａ）の場合、
桁ｋに対するｇ項：Ａ（ｋ）＋！Ｂ（ｋ）＋１×Ｍ（ｋ）≧１６（桁Ａ（ｋ）およびＢ（ｋ）ならびに潜在的な１パディングが桁上げを生成する）、
桁ｋに対するｐ項：Ａ（ｋ）＋！Ｂ（ｋ）＋１×Ｍ（ｋ）≧１５（前記桁ｋが桁上げを伝搬する）、
請求項１に記載の回路。
【請求項８】
前記オペランドが、２進化１０進数形式であり、前記算術計算ロジックが、符号絶対値加算器を含む、請求項１に記載の回路。
【請求項９】
方法であって、
算術演算を行う回路を提供することを含み、前記提供することが、
符号絶対値データ形式で結果を生み出すために、可変長のオペランドを加算または減算するように構成される算術計算ロジックを提供することと、
指定の結果長さｌに前記結果が収まるかどうかを示すオーバーフロー信号を提供するオーバーフロー検出器を提供することであって、前記オーバーフロー検出器が、前記指定の結果長さに前記結果が収まるかどうかを、前記算術計算ロジックによって生み出される前記結果とは無関係に判断するために、前記算術計算ロジックが前記結果を生み出す前に前記オペランドに対して演算を行う、前記オーバーフロー検出器を提供することと
を含み、
前記オーバーフロー検出器が、前記指定の結果長さｌに基づいてパディング・ベクトルＰを生成することによって、前記指定の結果長さに前記結果が収まるかどうかを判断し、桁上げ出力が存在するかどうかを判断するために、前記オペランドと前記パディング・ベクトルＰの加算を評価し、前記オーバーフロー信号が前記桁上げ出力に基づく、
方法。
【請求項１０】
前記オーバーフロー検出器が、前記算術計算ロジックと並行してオペランドに対して演算する、請求項９に記載の方法。
【請求項１１】
前記オーバーフロー検出器が、前記算術計算ロジックが前記符号絶対値データ形式で前記結果を生み出す前に、または並行して前記オーバーフロー信号を提供する、請求項９に記載の方法。
【請求項１２】
前記オペランドが、２つのオペランドを含み、前記オーバーフロー検出器が、前記２つのオペランドと前記パディング・ベクトルＰの３つの加算の前記桁上げ出力をチェックする、請求項９に記載の方法。
【請求項１３】
前記桁上げ出力が、ｎ桁加算器によるものであり、ｎが、前記指定の結果長さｌより大きく、前記パディング・ベクトルＰが、前記指定の結果長さｌの左にビットをパディングすることによって生み出され、前記結果長さの桁上げ出力が、前記オーバーフロー検出器によってチェックされた前記桁上げ出力を生成するために一番左の位置に伝搬される、請求項９に記載の方法。
【請求項１４】
前記オペランドが、オペランドＡおよびオペランドＢを含み、前記算術計算ロジックが、可変長の前記オペランドを加算するように構成され、前記オーバーフロー検出器が、９パディングを含む、桁生成（ｇ項）信号および桁伝搬（ｐ項）信号に関する以下の方程式を使用して、オペランドＡおよびオペランドＢに対する別々の桁上げ木を実行して、前記ｇ項およびｐ項から桁上げ出力を導出し、前記オーバーフロー信号が前記桁上げ出力に基づき、
Ｍ（ｎ−１，．．．，０）がビット・ベクトルであり、ｋ＜ｌの場合、Ｍ（ｋ）＝０であり、ｋ≧ｌの場合、Ｍ（ｋ）＝１であり、
桁ｋに対するｇ項：Ａ（ｋ）＋Ｂ（ｋ）＋９×Ｍ（ｋ）≧１０、ここで、桁Ａ（ｋ）およびＢ（ｋ）ならびに潜在的な９パディングが、桁上げを生成し、
桁ｋに対するｐ項：Ａ（ｋ）＋Ｂ（ｋ）＋９×Ｍ（ｋ）≧９、前記桁ｋが、桁上げを伝搬する、
請求項９に記載の方法。
【請求項１５】
前記オペランドが、オペランドＡおよびオペランドＢを含み、前記算術計算ロジックが、可変長の前記オペランドを減算するように構成され、前記オーバーフロー検出器が、１０ｌのパディングを使用することを含む、桁生成（ｇ項）信号および桁伝搬（ｐ項）信号に関する以下の方程式を使用して、オペランドＡおよびオペランドＢに対する別々の桁上げ木を実行し、ここで、ｌは、前記指定の結果長さｌであり、
Ｍ（ｎ−１，．．．，０）がビット・ベクトルであり、ｋ！＝ｌの場合、Ｍ（ｋ）＝０であり、ｋ＝ｌの場合、Ｍ（ｋ）＝１であり、
Ａ＞Ｂ（Ａ−Ｂ）の場合、
桁ｋに対するｇ項：！Ａ（ｋ）＋Ｂ（ｋ）＋１×Ｍ（ｋ）≧１６（桁Ａ（ｋ）およびＢ（ｋ）ならびに潜在的な１パディングが桁上げを生成する）、
桁ｋに対するｐ項：！Ａ（ｋ）＋Ｂ（ｋ）＋１×Ｍ（ｋ）≧１５（前記桁ｋが桁上げを伝搬する）、
Ｂ≧Ａ（Ｂ−Ａ）の場合、
桁ｋに対するｇ項：Ａ（ｋ）＋！Ｂ（ｋ）＋１×Ｍ（ｋ）≧１６（桁Ａ（ｋ）およびＢ（ｋ）ならびに潜在的な１パディングが桁上げを生成する）、
桁ｋに対するｐ項：Ａ（ｋ）＋！Ｂ（ｋ）＋１×Ｍ（ｋ）≧１５（前記桁ｋが桁上げを伝搬する）、
請求項９に記載の方法。
【請求項１６】
前記オペランドが、２進化１０進数形式であり、前記算術計算ロジックが、符号絶対値加算器を含む、請求項９に記載の方法。
【請求項１７】
加算または減算操作のオーバーフローを検出するためのコンピュータ・プログラムであって、
符号絶対値データ形式で結果を生み出すために、可変長のオペランドを算術的に加算または減算することと、
指定の結果長さｌに前記結果が収まるかどうかを示すオーバーフロー信号を生み出すことであって、前記指定の結果長さｌに前記結果が収まるかどうかを、前記算術的な加算または減算によって生み出される前記結果とは無関係に判断するために、前記算術的な加算または減算が前記結果を生み出す前に前記オペランドに対して演算を行う、前記生み出すことと
を含む方法をプロセッサに行わせ、
前記オーバーフロー信号を生み出すことが、前記指定の結果長さｌに基づいてパディング・ベクトルＰを生成することによって、前記指定の結果長さに前記結果が収まるかどうかを判断することと、桁上げ出力が存在するかどうかを判断するために、前記オペランドと前記パディング・ベクトルＰの加算を評価することとを含み、前記オーバーフロー信号が前記桁上げ出力に基づく、
コンピュータ・プログラム。
【請求項１８】
前記オーバーフロー信号を生み出すことは、前記算術的に加算または減算することが前記符号絶対値データ形式で前記結果を生み出す前に、または並行して前記オーバーフロー信号を提供する、請求項１７に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、情報処理に関し、より詳細には、データ処理の回路、方法およびコンピュータ・プログラム製品に関する。
【背景技術】
【０００２】
固定小数点式の２進化１０進数（ＢＣＤ：binary-coded decimal）データ形式は、企業および政府のためのビジネス、財務、および管理システムなどにおける商用アプリケーションで広く使われる形式である。例えば、多くの銀行取引アプリケーションおよび自国の銀行取引コードなど、金融データを取り扱う金融アプリケーションは、この形式を採用することが多い。これらのアプリケーションまたはコードによって使用される一般的なプログラミング言語は、ＣＯＢＯＬまたはＰＬ／１であることが多い。この特定のデータ形式は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるＤＢ２（登録商標）、およびドイツ、ヴァルドルフのＳＡＰ  ＳＥによって提供されるＳＡＰサーバなど、いくつかのデータベースの既定のデータ型でもある。
【０００３】
２進化１０進数データに対していくつかのタイプの算術演算を行うときに、演算結果が、結果に対する対象データ幅の範囲内にあるかどうかを知っている必要がある。例えば、これは、入力と結果が異なる幅を有することがあるＣＯＢＯＬコードで広く使用される特徴であり、アプリケーションは、ＣＯＢＯＬが演算の有効性をチェックすることを求める。有効性をチェックするための１つのアプローチは、結果を生成し、次に結果にマスクを適用して、オーバーフローの可能性がある桁を識別し、オーバーフロー時に桁のいずれかがゼロ以外であるかどうかをチェックすることである。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】"z/Architecture(R) Principles of Operation," IBM Publication No.SA22-7832-10, March 2015
【非特許文献２】"Power ISA (TM) Version 2.07B," International Business Machines Corporation, April 9, 2015
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、符号絶対値データ形式で結果を生み出すための回路、方法およびコンピュータ・プログラム製品を提供する。
【課題を解決するための手段】
【０００６】
１つまたは複数の態様において、算術計算ロジックおよびオーバーフロー検出器を含む回路を提供することによって従来技術の欠点が克服され、さらなる利点がもたらされる。算術計算ロジックは、符号絶対値データ形式で結果を生み出すために、可変長のオペランドを加算または減算するように構成される。オーバーフロー検出器は、指定の結果長さｌに結果が収まるかどうかを示すオーバーフロー信号を提供する。オーバーフロー検出器は、指定の結果長さｌに結果が収まるかどうかを、算術計算ロジックによって生み出される結果とは無関係に判断するために、算術計算ロジックが結果を生み出す前にオペランドに対して演算を行う。
【０００７】
１つまたは複数の他の態様において、算術演算を行う回路を提供することを含む方法が提供される。提供することは、符号絶対値データ形式で結果を生み出すために、可変長のオペランドを加算または減算するように構成される算術計算ロジックを提供することを含む。さらに、提供することは、指定の結果長さｌに結果が収まるかどうかを示すオーバーフロー信号を生み出すオーバーフロー検出器を提供することを含む。オーバーフロー検出器は、結果長さｌに結果が収まるかどうかを、算術計算ロジックによって生み出される結果とは無関係に判断するために、算術計算ロジックが結果を生み出す前にオペランドに対して演算を行う。
【０００８】
１つまたは複数のさらなる態様において、加算または減算操作のオーバーフローを検出するためのコンピュータ・プログラム製品が提供される。コンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読ストレージ媒体を含む。プログラム命令は、符号絶対値データ形式で結果を生み出すために、可変長のオペランドを算術的に加算または減算することと、指定の結果長さｌに結果が収まるかどうかを示すオーバーフロー信号を生み出すこととを含む方法を行うようにプロセッサによって実行可能である。オーバーフロー信号を生み出すことは、指定の結果長さｌに結果が収まるかどうかを、算術的な加算または減算によって生み出される結果とは無関係に判断するために、算術的な加算または減算が結果を生み出す前にオペランドに対して演算を行うことを含む。
【０００９】
本発明の技法によって、さらなる特徴および利点が実現される。本発明の他の実施形態および態様は本明細書で詳細に説明され、特許請求された発明の一部とみなされる。
【００１０】
本発明の１つまたは複数の態様は、明細書の結論において特許請求の範囲に含まれる例として具体的に指摘され、明確に請求される。本発明の前述および他の目的、特徴、および利点は、添付の図面と共に読まれる以下の詳細な説明から明らかである。
【図面の簡単な説明】
【００１１】
【図１】算術計算ロジックおよび算術計算ロジックによって生み出される結果のオーバーフローをチェックするためのオーバーフロー検出器を含む回路またはデバイスの１つの実施形態の概略図である。
【図２】本発明の１つまたは複数の態様による、算術計算ロジックおよびオーバーフロー検出器を含む回路またはデバイスの１つの実施形態の概略図である。
【図３】本発明の１つまたは複数の態様による、算術計算ロジックに提供される２つのオペランド、および指定の結果長さｌより結果が大きい場合に得られ、識別されることになる結果の例の図である。
【図４】本発明の１つまたは複数の態様による、加算操作を行うように構成される算術計算的ロジックと関連付けられる、オーバーフロー検出器のためのオーバーフロー検出処理の例を描写する図である。
【図５】本発明の１つまたは複数の態様による、減算操作を行うように構成される算術計算ロジックと関連付けられる、オーバーフロー検出器によってオーバーフローが検出されることになる２つのオペランドおよび結果の例の図である。
【図６】本発明の１つまたは複数の態様による、オペランドＡがオペランドＢより大きい場合に減算操作を行う算術計算ロジックと関連付けられる、オーバーフロー検出器のためのオーバーフロー検出処理の例を描写する図である。
【図７】本発明の１つまたは複数の態様による、オペランドＢがオペランドＡより大きい場合に、減算操作を行う算術計算ロジックと関連付けられる、オーバーフロー検出器のためのオーバーフロー検出処理の例を描写する図である。
【図８】本発明の１つまたは複数の態様による、オーバーフロー検出を伴う算術的な加算または減算操作を行うための処理の１つの実施形態を描写する図である。
【図９】本発明の１つまたは複数の態様による、オーバーフロー検出を伴う算術的な加算または減算操作を行うための処理の１つの実施形態を描写する図である。
【図１０】本発明の１つまたは複数の態様による、算術的な加算または減算操作、およびオーバーフロー検出の１つまたは複数の態様を実行できるデータ処理システムの１つの実施形態のブロック図である。
【発明を実施するための形態】
【００１２】
続く説明は、本発明の技法を具現化する例示的なデバイス、システム、方法、技法、および命令シーケンスを含む。しかし、説明される発明はこれらの具体的詳細がなくても、１つまたは複数の態様において実践され得るということを理解されたい。他の事例において、よく知られたプロトコル、構造、および技法は、本発明をあいまいにしないように詳細に示されていない。当業者は、説明された技法およびメカニズムが、値を整える様々なアーキテクチャに適用され得ることを理解するであろう。
【００１３】
上記で簡単に述べられたように、固定小数点式の２進化１０進数（ＢＣＤ）データ形式は、銀行取引、会計管理、等を含む金融業界における商用アプリケーションなどの商用アプリケーションで広く使用される。これらのアプリケーションのための共通プログラミング言語は、ＣＯＢＯＬ、ＰＬ／１、Ｊａｖａ（Ｒ）、Ｃ＋＋を含む。さらにこの形式は、上述のＤＢ２（商標）データベースおよびＳＡＰ（商標）サーバなどの、いくつかのデータベースの既定のデータ型として使用される。これらのアプリケーションと共に、データは、例えば、＋１２３、−００１２３といった複数バイトの可変データ幅のものでよい。このことにより、指定の結果長さｌは典型的には算術演算のために提供される。今日、データベースの最も一般的なデータ幅は９バイトである。
【００１４】
２進化１０進数（ＢＣＤ）、またはさらに一般的には、符号絶対値データに対して算術演算を行う際に、結果が対象データ幅に収まるかどうかを知っていることが重要である。そうしないと最上位桁が失われる可能性がある。上述のようにこれは、ＣＯＢＯＬコードなどのいくつかのアプリケーションで広く使用される特徴である。これらのアプリケーションでは、入力、またはオペランド、および結果は様々な幅を有する可能性がある。多くの既存のアプリケーションは、演算の有効性をチェックすることを求める。
【００１５】
図１は、関連付けられたオーバーフロー・チェックと共に算術演算を行う回路の１つの最先端の実施形態を描写する。図示のように、オペランドＡおよびオペランドＢ１００は、符号絶対値加算器などの算術計算ロジックまたは回路１０１に送り込まれて加算または減算操作を受け、算術計算ロジック１０１は結果Ｒ１０２を生み出す。指定の結果長さｌ１１１を入力として受け取り、マスク１１３を生成し１１２、その後ビット乗算され１１４、マスクされた桁１１５を識別し、マスクされた桁１１５がオーバーフロー（ＯＶＦ）を示すゼロ以外であるかどうかを判断する１１６、オーバーフロー検出器１１０が提供される。
【００１６】
図１のアプローチによれば、結果Ｒは最初に生成され、次にオーバーフローの可能性がある桁を識別するためにマスクが結果に適用され、これらの桁のいずれかがゼロ以外であるかどうかのチェックが行われることに留意されたい。このアプローチによれば、実際の計算の後にオーバーフロー検出が行われるので、演算全体の待ち時間を必然的に増加させることにも留意されたい。これは、実行を減速させるだけでなく、理論的な分岐予測または実行あるいはその両方のための時間枠を減少させ、これにより、分岐によって使用されるオーバーフロー結果が、計算に時間がかかるようになるため、高い性能コストがかかる。間違って予測された分岐は、例えば少なくとも２５コア・サイクルを費やす。この点について、オーバーフロー信号は、ｉｆ−ｔｈｅｎ−ｅｌｓｅコードなどのプロシージャのリターン・コードをセットするために使用されることが多いということに留意されたい。
【００１７】
概説すると、２進化１０進数データなどのデータに対する算術演算結果が、指定の結果長さｌの範囲内にあるかどうかを検出するためのすばやく、効率的なアプローチが本明細書で開示される。
【００１８】
１つまたは複数の実装形態において、演算結果ではなくオペランドに対して演算する特殊なチェック・ハードウェアを使用することによって実際の算術演算または計算を行うのと並行して、本発明の１つまたは複数の態様によるオーバーフロー検出が行われる。本明細書で説明されるように、オーバーフローは、算術演算の最終的な結果が得られる前でも計算されてよい。これは都合のよいことに、演算の全体的な待ち時間を短縮する。さらに本開示を考慮して、オーバーフロー検出器は、ただ１つの限定的な追加のハードウェアを用いて当業者によって実装されてよい。
【００１９】
図２は、本発明の１つまたは複数の態様による、オーバーフロー検出を伴う回路またはデバイスの１つの例を描写する。本実装形態において、オペランドに対して算術的な加算または減算操作を行うように構成される符号絶対値加算器などの算術計算ロジック２０１においてオペランドＡおよびオペランドＢ１００が受け取られる。さらに、オペランドＡおよびオペランドＢ１００、ならびに指定の結果長さｌ１１１も受け取る、オーバーフロー検出器２１０が提供される。さらに、１つまたは複数の実施形態において、オーバーフロー検出器２１０は、例えば算術計算ロジック２０１からオペランドＡおよびオペランドＢの長さ指定子を提供される。図示のように、オーバーフロー検出器２１０は、結果Ｒ２０２が算術計算ロジックによって生み出されるのと並行してオーバーフロー信号（ＯＶＦ）を生み出す。具体的には、１つまたは複数の実施形態において、オーバーフロー検出器２１０は、算術計算ロジック２０１と並行してオペランド１００に対して演算を行う。さらに、オーバーフロー検出器２１０は、算術計算ロジック２０１が符号絶対値データ形式で結果Ｒを生み出すより前に、または並行してオーバーフロー信号ＯＶＦを提供することができる。
【００２０】
図３〜図９を参照しながら、本発明の１つまたは複数の態様によるオーバーフロー検出を実行する様々な実施形態が下記でさらに説明される。本明細書で開示されるオーバーフロー検出機能は、２進数の符号絶対値加算器、ならびに１０進数の符号絶対値加算器に対して使用されてよいことに留意されたい。例証のために、比較的高度な複雑性を１０進数のバージョンが有するので１０進数のバージョンが説明され、２進数のバージョンは本明細書で行われる説明に基づけば当業者にはわかりやすい。
【００２１】
さらに下記で説明されるように、符号絶対値データ形式の可変長オペランドに対して演算するように構成される算術エンジンが提供される。算術エンジン、ユニット、回路、ロジック、等は、オペランドおよび結果の長さ指定子を受け取ること、長さ指定に従うオペランドを受け取ること、オペランドの和または差として符号絶対値形式で結果を計算すること、ならびに要求される長さに結果が収まるかどうかを示すオーバーフロー信号を提供することに適応される。算術演算によって生み出される結果とは無関係に、また実際の算術計算に並行してオーバーフロー・チェックが行われる。
【００２２】
さらに下記で説明されるように、オーバーフロー・チェックまたは検出は、結果の長さ指定子に基づいて生成されるパディング・ベクトルを使用することを含んでよい。オーバーフロー信号は、パディング・ベクトルと２つのオペランドの３つの和または差の桁上げ出力（carry-out）を含むか、または桁上げ出力として検出されてよい。１つまたは複数の実施形態において、本明細書で行われる説明から当業者には明らかになるように、データは任意のＢＣＤ形式でよく、オーバーフロー・チェックの桁上げ出力検出は、所与の桁にパディングを組み込み、次に通常の桁上げ木（carry-tree）を使用して、修正された桁生成および桁伝搬信号から桁上げ出力信号を導出する、修正された桁生成および桁伝搬ロジックを使用して行われてよい。
【００２３】
有効値の加算および有効値の減算という、検査される必要のある２つのケースがある。
【００２４】
１．有効値の加算のケース
図３は、オペランドＡとオペランドＢの加算を描写する。指定の結果長さｌより結果Ｒが大きい場合、オーバーフローが発生する。１０＾ｌは、１の後にｌ個の末尾ゼロが続くビット・ストリングであることに留意されたい。下記の方程式（１）において、これは、所与のビット・ストリングの値を示す。以下の方程式（１）は、オペランドおよび切り捨てられた結果の最大長さｎ、ならびに所望の結果長さｌに基づくオーバーフローの判断を示す。
ＯＶＦ＝１⇔Ａ＋Ｂ≧１０＾ｌ    （１）
⇔Ａ＋Ｂ＋（１０＾ｎ−１０＾ｌ）≧１０＾ｎ
上述のように、従来の実装形態は、２つのオペランドの和を生成し、次にｌより大きい長さを結果が有するかどうかをチェックするであろう。
【００２５】
本開示によれば、オーバーフロー検出は、完全なｎ桁加算器の桁上げ出力だけのチェックに変更することができる。これは、結果長さｌの左にあるビットをパディングすることによって行われることが可能である。結果長さの左にある桁上げ出力は次に、一番左の位置に伝搬され、桁上げ出力を生成することになる。これについての１つの実施形態が図４に描写される。
【００２６】
本アプローチの実装形態は以下である。従来の手法で２つのオペランドとパディング・ベクトルを加算することによって、３：２加算が行われ、その後、結果およびオーバーフローを得るために、結果として生じる和と桁上げベクトルが加算される。
【００２７】
本明細書で開示されるオーバーフロー検出の別の実装形態は、９パディングを含む、桁生成および桁伝搬信号のための修正方程式を使用する、ＡおよびＢに対する別々の桁上げ木である。採用される方程式は以下のようなものである。
仮に、Ｍ（ｎ−１，．．．，０）がビット・ベクトルであるとすると、ｋ＜ｌの場合、Ｍ（ｋ）＝０であり、ｋ≧ｌの場合、Ｍ（ｋ）＝１であり、
桁ｋに対するｇ項（g-term）：Ａ（ｋ）＋Ｂ（ｋ）＋９×Ｍ（ｋ）≧１０    （２）
（桁Ａ（ｋ）およびＢ（ｋ）ならびに潜在的な９パディングが桁上げを生成する）
桁ｋに対するｐ項（p-term）：Ａ（ｋ）＋Ｂ（ｋ）＋９×Ｍ（ｋ）≧９    （３）
（桁ｋは桁上げを伝搬する）。
【００２８】
２．有効値の減算のケース
絶対差を計算する必要があるので、Ａ−ＢまたはＢ−Ａを計算する２つのケースは、区別される必要がある。
ａｂｓ（Ａ−Ｂ）⇒ケース１：Ａ＞Ｂの場合、Ａ−Ｂ
ケース２：Ｂ≧Ａの場合、Ｂ−Ａ
【００２９】
図５は、オペランドＡとオペランドＢの減算を描写する。指定の結果長さｌより結果Ｒが大きい場合、オーバーフロー結果が発生する。図５を参照しながら述べる。
ＯＶＦ＝１⇔Ｒ＝Ａ−Ｂ≧１０＾ｌ
⇔Ａ≧Ｂ＋１０＾ｌ
【００３０】
桁上げ出力ｃｏｕｔ（Ｘ＋！Ｙ）＝１は、Ｙ＜Ｘを示し、ｃｏｕｔ（Ｘ＋！Ｙ）＝０は、Ｙ≧Ｘを示すことがよく知られている。
【００３１】
ケース１、（Ａ＞Ｂ⇔Ａ−Ｂ）の場合、Ａ＝Ｙおよび（Ｂ＋１０＾ｌ）＝Ｘであり、桁上げ出力ｃｏｕｔ（Ｘ＋！Ｙ）であり、ＯＶＦ検出は、以下のように表現されることが可能である。
ｃｏｕｔ（Ｘ＋！Ｙ）＝０⇔Ｙ≧Ｘ
⇔Ａ≧Ｂ＋１０＾ｌ
⇔Ａ−Ｂ≧１０＾ｌ
⇔Ｒ≧１０＾ｌ
⇔ＯＶＦ＝１
【００３２】
上記に示されたように、計算の桁上げ出力がない場合に、オーバーフローが得られる。
【００３３】
ケース２、（Ｂ≧Ａ⇔Ｂ−Ａ）の場合、ケース１の場合と同じ想定がある。
Ｒ≧１０＾ｌ⇒ＯＶＦ＝１
【００３４】
したがって、以下の方程式が得られる可能性がある。
Ｒ⇔（Ｂ−Ａ）⇔Ｂ−Ａ≧１０＾ｌ
⇔Ｂ≧Ａ＋１０＾ｌ
【００３５】
次に、Ｙ＝ＢおよびＸ＝（Ａ＋１０＾ｌ）により、以下が得られる。
ｃｏｕｔ（Ｘ＋！Ｙ）＝０⇔Ｙ≧Ｘ
⇔Ｂ≧Ａ＋１０＾ｌ
⇔Ｂ−Ａ≧１０＾ｌ
⇔Ｒ≧１０＾ｌ
⇔ＯＶＦ＝１
【００３６】
したがって、オーバーフロー（また、したがってＲ＞１０＾ｌ）は、以下の２つの方程式により、有効値の減算のケースで、検出されることが可能である。
Ａ＞Ｂのケース１（Ａ−Ｂ）：  ｃｏｕｔ（Ｂ＋！Ａ＋１０＾ｌ）＝０⇔ＯＶＦ＝１
Ｂ≧Ａのケース２（Ｂ−Ａ）：  ｃｏｕｔ（Ａ＋！Ｂ＋１０＾ｌ）＝０⇔ＯＶＦ＝１
【００３７】
これらの２つのケースの例が、図６および図７にそれぞれ示される。有効値の加算のケースと同様に、上記の方程式は、２つの別々の特化された桁上げ木を使用するすばやいＯＶＦ検出に役立つ。これらの２つの桁上げ木は、１０＾ｌパディングを含む、桁生成および桁伝搬信号に対する以下の修正方程式を使用する。
仮に、Ｍ（ｎ−１，．．．，０）がビット・ベクトルであるとすると、ｋ！＝ｌの場合、Ｍ（ｋ）＝０であり、ｋ＝ｌの場合、Ｍ（ｋ）＝１であり、
ケース１、（Ａ−Ｂ）の場合、
桁ｋに対するｇ項：！Ａ（ｋ）＋Ｂ（ｋ）＋１×Ｍ（ｋ）≧１６    （４）
（桁Ａ（ｋ）およびＢ（ｋ）ならびに潜在的な１パディングが桁上げを生成する。）
桁ｋに対するｐ項：！Ａ（ｋ）＋Ｂ（ｋ）＋１×Ｍ（ｋ）≧１５    （５）
（桁ｋは桁上げを伝搬する。）
ケース２、（Ｂ−Ａ）の場合、
桁ｋに対するｇ項：Ａ（ｋ）＋！Ｂ（ｋ）＋１×Ｍ（ｋ）≧１６    （６）
（桁Ａ（ｋ）およびＢ（ｋ）ならびに潜在的な１パディングが桁上げを生成する。）
桁ｋに対するｐ項：Ａ（ｋ）＋！Ｂ（ｋ）＋１×Ｍ（ｋ）≧１５    （７）
（この桁ｋが桁上げを伝搬する。）
上記の２つの桁上げ木の議論は、ほんの一例として提供されるにすぎないことに留意されたい。必要に応じて、循環桁上げを使用する単一の桁上げ木が、代替実施形態で採用されてよい。
【００３８】
図８および図９は、本発明の１つまたは複数の態様による、様々な処理の全体像の１つの実施形態を描写する。図８および図９によって描写されるように、算術演算を行う回路を提供する方法が開示される（５００）。回路を提供することは、符号絶対値形式で結果を生み出すために、様々な長さのオペランドを加算または減算するように構成される算術計算ロジックを提供することと、指定の結果長さｌに結果が収まるかどうかを示すオーバーフロー信号を提供するオーバーフロー検出器を提供することであって、オーバーフロー検出器は、算術計算ロジックによって生み出す結果とは無関係に、指定の結果長さに結果が収まるかどうかを判断するために、算術計算ロジックが結果を生み出す前にオペランドに対して演算する、オーバーフロー検出器を提供することとを含むことができる。
【００３９】
１つまたは複数の実装形態において、オーバーフロー検出器は、算術計算ロジックと並行してオペランドに対して演算する（５０５）。さらに、オーバーフロー検出器は、算術計算ロジックが符号絶対値データ形式で結果を生み出す前に、または並行してオーバーフロー信号を提供することができる（５１０）。
【００４０】
１つまたは複数の実施形態において、オーバーフロー検出器は、指定の結果長さｌに基づいてパディング・ベクトルＰを生成することによって、指定の結果長さに結果が収まるかどうかを判断し、桁上げ出力が存在するかどうかを判断するために、オペランドとパディング・ベクトルＰの個々の加算または減算を評価し、オーバーフロー信号は、桁上げ出力に基づく（５１５）。例えば、オペランドは２つのオペランドでよく、オーバーフロー検出器は、２つのオペランドとパディング・ベクトルＰの３つの加算または減算の桁上げ出力をチェックする（５２０）。１つまたは複数の実施形態において、桁上げ出力は、ｎ桁加算器によるものであり、ｎは、指定の結果長さｌより大きく、パディング・ベクトルＰは、指定の結果長さｌの左にビットをパディングすることによって生み出され、結果長さの桁上げ出力は、オーバーフロー検出器によってチェックされた桁上げ出力を生成するために一番左の位置に伝搬される（５２５）。
【００４１】
１つまたは複数の実施形態において、オペランドは、オペランドＡおよびオペランドＢを含むことができ、算術計算ロジックは、可変長のオペランドを加算するように構成され、オーバーフロー検出器は、９パディングを含む、桁生成（ｇ項）信号および桁伝搬（ｐ項）信号に関する以下の方程式を使用して、オペランドＡおよびオペランドＢに対する別々の桁上げ木を実行して、ｇ項およびｐ項から桁上げ出力を導出し、オーバーフロー信号は、桁上げ出力に基づく。Ｍ（ｎ−１，．．．，０）はビット・ベクトルであり、ｋ＜ｌの場合、Ｍ（ｋ）＝０であり、ｋ≧ｌの場合、Ｍ（ｋ）＝１であり、桁ｋに対するｇ項：Ａ（ｋ）＋Ｂ（ｋ）＋９×Ｍ（ｋ）≧１０、ここで桁Ａ（ｋ）およびＢ（ｋ）ならびに潜在的な９パディングは桁上げを生成し、桁ｋに対するｐ項：Ａ（ｋ）＋Ｂ（ｋ）＋９×Ｍ（ｋ）≧９、桁ｋは桁上げを伝搬する（５３０）。
【００４２】
１つまたは複数のさらなる実施形態において、オペランドは、オペランドＡおよびオペランドＢを含み、算術計算ロジックは、可変長のオペランドを減算するように構成され、オーバーフロー検出器は、１０ｌのパディングを使用することを含む、桁生成（ｇ項）信号および桁伝搬（ｐ項）信号に関する以下の方程式を使用して、オペランドＡおよびオペランドＢに対する別々の桁上げ木を実行し、ｌは、指定の結果長さｌである。Ｍ（ｎ−１，．．．，０）はビット・ベクトルであり、ｋ！＝ｌの場合、Ｍ（ｋ）＝０であり、ｋ＝ｌの場合、Ｍ（ｋ）＝１であり、Ａ＞Ｂ（Ａ−Ｂ）の場合、桁ｋに対するｇ項：！Ａ（ｋ）＋Ｂ（ｋ）＋１×Ｍ（ｋ）≧１６（桁Ａ（ｋ）およびＢ（ｋ）ならびに潜在的な１パディングは、桁上げを生成する）、桁ｋに対するｐ項：！Ａ（ｋ）＋Ｂ（ｋ）＋１×Ｍ（ｋ）≧１５（桁ｋは桁上げを伝搬する）、ならびにＢ≧Ａ（Ｂ−Ａ）の場合、桁ｋに対するｇ項：Ａ（ｋ）＋！Ｂ（ｋ）＋１×Ｍ（ｋ）≧１６（桁Ａ（ｋ）およびＢ（ｋ）ならびに潜在的な１パディングは桁上げを生成する）、桁ｋに対するｐ項：Ａ（ｋ）＋！Ｂ（ｋ）＋１×Ｍ（ｋ）≧１５である（桁ｋは桁上げを伝搬する）（５３５）。
【００４３】
１つまたは複数の実施形態において、オペランドは、２進化１０進数形式でよく、算術計算ロジックは、符号絶対値加算器を含むことができる（５４０）。
【００４４】
図１０を参照すると、本発明の例証的な態様が実行され得るデータ処理システムのブロック図が示される。
【００４５】
図示のように、データ処理システム６００は、コンピューティング・システム６１２を含む。コンピュータ・システム６１２と共に使用するのに適切な可能性があるよく知られたコンピューティング・システム、環境、または構成、あるいはその組合せの例は、ワークステーション、コンピュータ、サーバ、および同様のものを含むがこれらに限定されない。
【００４６】
コンピューティング・システム６１２は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明されてよい。一般に、プログラム・モジュールは、特定のタスクを行うか、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造、などを含むことができる。
【００４７】
図１０に描写されるように、コンピューティング・システム６１２は、汎用コンピューティング・デバイスの形で示される。コンピューティング・システム６１２の構成要素は、１つまたは複数のプロセッサまたは処理ユニット６１６、システム・メモリ６２３、およびシステム・メモリ６２３を含む様々なシステム構成要素をプロセッサ６１６に連結するバス６１８を含むことができるがこれらに限定されない。
【００４８】
１つの実施形態において、プロセッサ６１６は、インターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）、またはインターナショナル・ビジネス・マシーンズ・コーポレーションもしくは他の企業によって提供される他のアーキテクチャに基づくことができる。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）は、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。"z/Architecture(R) Principles of Operation," IBM Publication No.SA22-7832-10, March 2015の中で、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）の１つの実施形態が説明され、これは、本明細書によって全体として参照により本明細書に組み込まれる。
【００４９】
他の例において、これは、インターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるＰｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）などの、他のアーキテクチャに基づいてよい。Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）の１つの実施形態は、"Power ISATM Version 2.07B," International Business Machines Corporation, April 9, 2015の中で説明され、これは、本明細書によって全体として参照により本明細書に組み込まれる。ＰＯＷＥＲ  ＡＲＣＨＩＴＥＣＴＵＲＥ（Ｒ）は、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。本明細書で使用される他の名称は、インターナショナル・ビジネス・マシーンズ・コーポレーションまたは他の企業の登録商標、商標、または製品名の可能性がある。
【００５０】
バス６１８は、メモリ・バスまたはメモリ・コントローラ、周辺機器バス、アクセラレイティッド・グラフィックス・ポート、および様々なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含むバス構造のいくつかのタイプのいずれかの１つまたは複数を表す。例として、また限定ではなく、このようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ（ＩＳＡ：Industry Standard Architecture）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ：Micro Channel Architecture）バス、拡張ＩＳＡ（ＥＩＳＡ：EnhancedISA）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（ＶＥＳＡ：Video Electronics Standards Association）ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト（ＰＣＩ：Peripheral Component Interconnect）バスを含む。
【００５１】
コンピューティング・システム６１２は、様々なコンピュータ・システム可読媒体を含むことができる。このような媒体は、コンピューティング・システム６１２によってアクセス可能な任意な利用可能な媒体でよく、これは、揮発性と不揮発性両方の媒体、取外し可能と取外し不能両方の媒体を含む。
【００５２】
システム・メモリ６２３は、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）６３０またはキャッシュ・メモリ６３２あるいはその両方などの揮発性メモリの形式のコンピュータ・システム可読媒体を含むことができる。コンピューティング・システム６１２は、他の取外し可能／取外し不能な、揮発性／不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。ほんの一例として、ストレージ・システム６３４は、（図示されていないが、典型的には「ハード・ドライブ」と呼ばれる）取外し不能な不揮発性の磁気媒体に読み書きするために提供されてよい。図示されていないが、取外し可能な不揮発性磁気ディスク（例えば「フロッピー・ディスク」）に読み書きするための磁気ディスク・ドライブ、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光媒体などの取外し可能な不揮発性光ディスクに読み書きするための光ディスク・ドライブが提供されてよい。このような事例においてそれぞれは、１つまたは複数のデータ媒体インターフェースによってバス６１８に接続されてよい。下記で説明されるようにメモリ６２３は、本発明の実施形態の機能を実行するように構成されるプログラム・モジュールのセット（例えば少なくとも１つ）を有する少なくとも１つのプログラム製品を含むことができる。
【００５３】
プログラム・モジュール６４２、ならびに例として、また限定ではなく、オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データのセット（少なくとも１つ）を有するプログラム／ユーティリティ６４０は、メモリ６３２に格納されてよい。オペレーティング・システム、１つもしくは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはこれらのいくつかの組合せのそれぞれは、ネットワーキング環境の実装を含むことができる。プログラム・モジュール６４２は一般に、本明細書で説明されるような本発明の実施形態の機能または方法あるいはその両方を実行する。一方、（本明細書で説明されるものなどの）別々のオーバーフロー検出デバイス、モジュール、ロジック、等６０１は、コンピューティング環境６１２の中で提供されてよい。
【００５４】
コンピューティング・システム６１２は、キーボード、ポインティング・デバイス、ディスプレイ６２４、等などの１つもしくは複数の外部デバイス６１４、コンピューティング・システム６１２とユーザが対話できるようにする１つもしくは複数のデバイス、または１つもしくは複数の他のコンピューティング・デバイスとコンピューティング・システム６１２が通信できるようにする任意のデバイス（例えば、ネットワーク・カード、モデム、等）、あるいはその組合せと通信することもできる。このような通信は、入力／出力（Ｉ／Ｏ：Input/Output）インターフェース６２２を介して行うことができる。さらに、コンピューティング・システム６１２は、ネットワーク・アダプタ６２０を介して、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）、一般的な広域ネットワーク（ＷＡＮ：wide area network）、またはパブリック・ネットワーク（例えばインターネット）、あるいはその組合せなどの１つまたは複数のネットワークと通信することができる。描写されるように、ネットワーク・アダプタ６２０は、バス６１８を介して、コンピューティング・システム６１２の他の構成要素と通信する。図示されていないが、他のハードウェア構成要素またはソフトウェア構成要素あるいはその両方が、コンピューティング・システム６１２と共に使用されてよいということを理解されたい。例は、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システム、等を含むがこれらに限定されない。
【００５５】
当業者は、図１０の描写されたシステムの例、ならびに本明細書で参照される他の例は、アーキテクチャの限定を意味するものではないということに留意されたい。
【００５６】
本発明は、統合の任意の可能な技術的詳細レベルにおける、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せでよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体（または複数の媒体）を含むことができる。
【００５７】
コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のための命令を保持および格納できる有形のデバイスでよい。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の適切な組合せでよいがこれらに限定されない。コンピュータ可読ストレージ媒体のさらなる具体例の完全に網羅されていないリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ：read-only memory）、消去可能プログラマブル・リード・オンリ・メモリ（ＥＰＲＯＭ（erasable programmable read-only memory）すなわちフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ：static random access memory）、携帯型コンパクト・ディスク・リード・オンリ・メモリ（ＣＤ−ＲＯＭ：compact disc read-only memory）、デジタル多用途ディスク（ＤＶＤ：digital versatile disk）、メモリ・スティック、フロッピー・ディスク、命令が記録されたパンチ・カードまたは溝内の隆起構造などの機械的にエンコードされたデバイス、および前述の任意の適切な組合せを含む。本明細書で使用されるようなコンピュータ可読ストレージ媒体は、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通じて伝搬する電磁波（例えば、光ファイバ・ケーブルを通る光パルス）、またはワイヤを通じて伝送される電気信号などの、一時的な信号自体であると解釈されるべきではない。
【００５８】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から個々のコンピューティング・デバイス／処理デバイスにダウンロードされてよく、また例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、またはワイヤレス・ネットワーク、あるいはその組合せといったネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードされてもよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含むことができる。各コンピューティング・デバイス／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、個々のコンピューティング・デバイス／処理デバイス内部のコンピュータ可読ストレージ媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【００５９】
本発明の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ（ＩＳＡ：instruction-set-architecture）命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路機器の構成データ、またはＳｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋、もしくは同様のものなどのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくは類似のプログラミング言語などの手続き型プログラミング言語を含む、１つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードでよい。コンピュータ可読プログラム命令は、スタンド・アロン・ソフトウェア・パッケージとして、全面的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で実行することができ、部分的にユーザのコンピュータ上および部分的にリモート・コンピュータ上で、または全面的にリモート・コンピュータもしくはサーバ上で実行することができる。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくは広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されてよく、また接続は、（例えば、インターネット・サービス・プロバイダを使用するインターネットを通じて）外部コンピュータに対して行われてよい。いくつかの実施形態において、例えば、プログラマブル論理回路機器、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ：field-programmable gate array）、またはプログラマブル・ロジック・アレイ（ＰＬＡ：programmable logic array）を含む電子回路機器は、本発明の態様を行うために、電子回路機器を個別化するコンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行することができる。
【００６０】
本発明の実施形態による、方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャートまたはブロック図あるいはその両方を参照しながら、本発明の態様が本明細書で説明される。フローチャートまたはブロック図あるいはその両方の各ブロック、ならびにフローチャートまたはブロック図あるいはその両方の中のブロックの組合せは、コンピュータ可読プログラム命令によって実行されてよいということが理解されよう。
【００６１】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサによって実行する命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定された機能／作用を実行する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されて、マシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定された機能／作用の態様を実行する命令を含む製品を備えるべく、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに特定の手法で機能するよう指示できるものであってもよい。
【００６２】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定された機能／作用を実行するべく、コンピュータ実行処理を生み出すように、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを行わせるものであってもよい。
【００６３】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点については、フローチャートまたはブロック図における各ブロックは、指定された論理機能を実行するための１つまたは複数の実行可能命令を備えるモジュール、セグメント、または命令の一部を表すことができる。いくつかの代替実装形態において、ブロック中に記される機能は、図中に記される順序とは異なる順序で行うことができる。例えば、連続して示される２つのブロックは実際には、実質的に並行に実行されてよく、またブロックは、関連する機能に応じて、時には逆の順番で実行されてもよい。ブロック図またはフローチャートあるいはその両方の各ブロック、ならびにブロック図またはフローチャートあるいはその両方の中のブロックの組合せは、指定された機能または作用を行うか、専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェアに基づくシステムによって実行されてよいということにも留意されたい。
【００６４】
本明細書で使用される用語は、特定の実施形態だけを説明するためのものであり、本発明を限定するためのものではない。本明細書で使用されるように、単数形「ある（ａ）」、「ある（ａｎ）」、および「その（ｔｈｅ）」は、別途、文脈がはっきり示さない限り、複数形も同様に含むことを意図する。用語「備える（comprise）」（ならびに「備え（comprises）」および「備えている（comprising）」など、備える（comprise）の任意の形）、「有する（have）」（ならびに「有し（has）」および「有している（having）」など、有する（have）の任意の形）、「含む（include）」（ならびに「含み（includes）」および「含んでいる（including）」など、含む（include）の任意の形）、ならびに「収める（contain）」（ならびに「収め（contains）」および「収めている（containing）」など、収める（contain）の任意の形）は、オープン・エンドな連結動詞であることがさらに理解されよう。結果として、１つまたは複数のステップまたは要素を「備える（comprises）」、「有する（has）」、「含む（includes）」、または「収める（contains）」方法またはデバイスは、これらの１つまたは複数のステップまたは要素を保有するが、これらの１つまたは複数のステップまたは要素だけを保有することに限定されない。同様に、１つまたは複数の特徴を「備える（comprises）」、「有する（has）」、「含む（includes）」、または「収める（contains）」方法のステップまたはデバイスの要素は、これらの１つまたは複数の特徴を保有するが、これらの１つまたは複数の特徴だけを保有することに限定されない。さらに、一定の方式で構成されるデバイスまたは構造は少なくともこの方式で構成されるが、挙げられていない方式で構成されてもよい。
【００６５】
もしあれば、下記の特許請求の範囲におけるすべてのミーンズ・プラス・ファンクション要素またはステップ・プラス・ファンクション要素の対応する構造、材料、作用、および均等物は、具体的に特許請求されるような他の特許請求された要素と組み合わせて機能を実行するための任意の構造、材料、または作用を含むことを意図する。本発明の説明は例証および説明のために提示されたが、開示された形で本発明を網羅するため、または限定するためのものではない。本発明の範囲および思想から逸脱することなく、多くの変更および変形が当業者には明らかであろう。実施形態は、本発明の１つまたは複数の態様および実用的な用途の原理を最もよく説明するように、また熟慮された特定の使用に適した様々な変更と共に、様々な実施形態に対する本発明の１つまたは複数の態様を当業者が理解できるように選ばれ、説明された。
【図１】
0006975234.tif 000002
【図２】
0006975234.tif 000003
【図３】
0006975234.tif 000004
【図４】
0006975234.tif 000005
【図５】
0006975234.tif 000006
【図６】
0006975234.tif 000007
【図７】
0006975234.tif 000008
【図８】
0006975234.tif 000009
【図９】
0006975234.tif 000010
【図１０】
0006975234.tif 000011