JP6975234B2 - 符号絶対値データ形式で結果を生み出すための回路、方法およびコンピュータ・プログラム - Google Patents

符号絶対値データ形式で結果を生み出すための回路、方法およびコンピュータ・プログラム Download PDF

Info

Publication number
JP6975234B2
JP6975234B2 JP2019525996A JP2019525996A JP6975234B2 JP 6975234 B2 JP6975234 B2 JP 6975234B2 JP 2019525996 A JP2019525996 A JP 2019525996A JP 2019525996 A JP2019525996 A JP 2019525996A JP 6975234 B2 JP6975234 B2 JP 6975234B2
Authority
JP
Japan
Prior art keywords
digit
overflow
carry
result
length
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019525996A
Other languages
English (en)
Other versions
JP2020513612A (ja
Inventor
ミュラー、シルヴィア、メリッタ
レーバー、ペトラ
リヒテナウ、セドリック
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2020513612A publication Critical patent/JP2020513612A/ja
Application granted granted Critical
Publication of JP6975234B2 publication Critical patent/JP6975234B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Description

本発明は、一般的には、情報処理に関し、より詳細には、データ処理の回路、方法およびコンピュータ・プログラム製品に関する。
固定小数点式の2進化10進数(BCD:binary-coded decimal)データ形式は、企業および政府のためのビジネス、財務、および管理システムなどにおける商用アプリケーションで広く使われる形式である。例えば、多くの銀行取引アプリケーションおよび自国の銀行取引コードなど、金融データを取り扱う金融アプリケーションは、この形式を採用することが多い。これらのアプリケーションまたはコードによって使用される一般的なプログラミング言語は、COBOLまたはPL/1であることが多い。この特定のデータ形式は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるDB2(登録商標)、およびドイツ、ヴァルドルフのSAP SEによって提供されるSAPサーバなど、いくつかのデータベースの既定のデータ型でもある。
2進化10進数データに対していくつかのタイプの算術演算を行うときに、演算結果が、結果に対する対象データ幅の範囲内にあるかどうかを知っている必要がある。例えば、これは、入力と結果が異なる幅を有することがあるCOBOLコードで広く使用される特徴であり、アプリケーションは、COBOLが演算の有効性をチェックすることを求める。有効性をチェックするための1つのアプローチは、結果を生成し、次に結果にマスクを適用して、オーバーフローの可能性がある桁を識別し、オーバーフロー時に桁のいずれかがゼロ以外であるかどうかをチェックすることである。
"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
本発明は、符号絶対値データ形式で結果を生み出すための回路、方法およびコンピュータ・プログラム製品を提供する。
1つまたは複数の態様において、算術計算ロジックおよびオーバーフロー検出器を含む回路を提供することによって従来技術の欠点が克服され、さらなる利点がもたらされる。算術計算ロジックは、符号絶対値データ形式で結果を生み出すために、可変長のオペランドを加算または減算するように構成される。オーバーフロー検出器は、指定の結果長さlに結果が収まるかどうかを示すオーバーフロー信号を提供する。オーバーフロー検出器は、指定の結果長さlに結果が収まるかどうかを、算術計算ロジックによって生み出される結果とは無関係に判断するために、算術計算ロジックが結果を生み出す前にオペランドに対して演算を行う。
1つまたは複数の他の態様において、算術演算を行う回路を提供することを含む方法が提供される。提供することは、符号絶対値データ形式で結果を生み出すために、可変長のオペランドを加算または減算するように構成される算術計算ロジックを提供することを含む。さらに、提供することは、指定の結果長さlに結果が収まるかどうかを示すオーバーフロー信号を生み出すオーバーフロー検出器を提供することを含む。オーバーフロー検出器は、結果長さlに結果が収まるかどうかを、算術計算ロジックによって生み出される結果とは無関係に判断するために、算術計算ロジックが結果を生み出す前にオペランドに対して演算を行う。
1つまたは複数のさらなる態様において、加算または減算操作のオーバーフローを検出するためのコンピュータ・プログラム製品が提供される。コンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読ストレージ媒体を含む。プログラム命令は、符号絶対値データ形式で結果を生み出すために、可変長のオペランドを算術的に加算または減算することと、指定の結果長さlに結果が収まるかどうかを示すオーバーフロー信号を生み出すこととを含む方法を行うようにプロセッサによって実行可能である。オーバーフロー信号を生み出すことは、指定の結果長さlに結果が収まるかどうかを、算術的な加算または減算によって生み出される結果とは無関係に判断するために、算術的な加算または減算が結果を生み出す前にオペランドに対して演算を行うことを含む。
本発明の技法によって、さらなる特徴および利点が実現される。本発明の他の実施形態および態様は本明細書で詳細に説明され、特許請求された発明の一部とみなされる。
本発明の1つまたは複数の態様は、明細書の結論において特許請求の範囲に含まれる例として具体的に指摘され、明確に請求される。本発明の前述および他の目的、特徴、および利点は、添付の図面と共に読まれる以下の詳細な説明から明らかである。
算術計算ロジックおよび算術計算ロジックによって生み出される結果のオーバーフローをチェックするためのオーバーフロー検出器を含む回路またはデバイスの1つの実施形態の概略図である。 本発明の1つまたは複数の態様による、算術計算ロジックおよびオーバーフロー検出器を含む回路またはデバイスの1つの実施形態の概略図である。 本発明の1つまたは複数の態様による、算術計算ロジックに提供される2つのオペランド、および指定の結果長さlより結果が大きい場合に得られ、識別されることになる結果の例の図である。 本発明の1つまたは複数の態様による、加算操作を行うように構成される算術計算的ロジックと関連付けられる、オーバーフロー検出器のためのオーバーフロー検出処理の例を描写する図である。 本発明の1つまたは複数の態様による、減算操作を行うように構成される算術計算ロジックと関連付けられる、オーバーフロー検出器によってオーバーフローが検出されることになる2つのオペランドおよび結果の例の図である。 本発明の1つまたは複数の態様による、オペランドAがオペランドBより大きい場合に減算操作を行う算術計算ロジックと関連付けられる、オーバーフロー検出器のためのオーバーフロー検出処理の例を描写する図である。 本発明の1つまたは複数の態様による、オペランドBがオペランドAより大きい場合に、減算操作を行う算術計算ロジックと関連付けられる、オーバーフロー検出器のためのオーバーフロー検出処理の例を描写する図である。 本発明の1つまたは複数の態様による、オーバーフロー検出を伴う算術的な加算または減算操作を行うための処理の1つの実施形態を描写する図である。 本発明の1つまたは複数の態様による、オーバーフロー検出を伴う算術的な加算または減算操作を行うための処理の1つの実施形態を描写する図である。 本発明の1つまたは複数の態様による、算術的な加算または減算操作、およびオーバーフロー検出の1つまたは複数の態様を実行できるデータ処理システムの1つの実施形態のブロック図である。
続く説明は、本発明の技法を具現化する例示的なデバイス、システム、方法、技法、および命令シーケンスを含む。しかし、説明される発明はこれらの具体的詳細がなくても、1つまたは複数の態様において実践され得るということを理解されたい。他の事例において、よく知られたプロトコル、構造、および技法は、本発明をあいまいにしないように詳細に示されていない。当業者は、説明された技法およびメカニズムが、値を整える様々なアーキテクチャに適用され得ることを理解するであろう。
上記で簡単に述べられたように、固定小数点式の2進化10進数(BCD)データ形式は、銀行取引、会計管理、等を含む金融業界における商用アプリケーションなどの商用アプリケーションで広く使用される。これらのアプリケーションのための共通プログラミング言語は、COBOL、PL/1、Java(R)、C++を含む。さらにこの形式は、上述のDB2(商標)データベースおよびSAP(商標)サーバなどの、いくつかのデータベースの既定のデータ型として使用される。これらのアプリケーションと共に、データは、例えば、+123、−00123といった複数バイトの可変データ幅のものでよい。このことにより、指定の結果長さlは典型的には算術演算のために提供される。今日、データベースの最も一般的なデータ幅は9バイトである。
2進化10進数(BCD)、またはさらに一般的には、符号絶対値データに対して算術演算を行う際に、結果が対象データ幅に収まるかどうかを知っていることが重要である。そうしないと最上位桁が失われる可能性がある。上述のようにこれは、COBOLコードなどのいくつかのアプリケーションで広く使用される特徴である。これらのアプリケーションでは、入力、またはオペランド、および結果は様々な幅を有する可能性がある。多くの既存のアプリケーションは、演算の有効性をチェックすることを求める。
図1は、関連付けられたオーバーフロー・チェックと共に算術演算を行う回路の1つの最先端の実施形態を描写する。図示のように、オペランドAおよびオペランドB100は、符号絶対値加算器などの算術計算ロジックまたは回路101に送り込まれて加算または減算操作を受け、算術計算ロジック101は結果R102を生み出す。指定の結果長さl111を入力として受け取り、マスク113を生成し112、その後ビット乗算され114、マスクされた桁115を識別し、マスクされた桁115がオーバーフロー(OVF)を示すゼロ以外であるかどうかを判断する116、オーバーフロー検出器110が提供される。
図1のアプローチによれば、結果Rは最初に生成され、次にオーバーフローの可能性がある桁を識別するためにマスクが結果に適用され、これらの桁のいずれかがゼロ以外であるかどうかのチェックが行われることに留意されたい。このアプローチによれば、実際の計算の後にオーバーフロー検出が行われるので、演算全体の待ち時間を必然的に増加させることにも留意されたい。これは、実行を減速させるだけでなく、理論的な分岐予測または実行あるいはその両方のための時間枠を減少させ、これにより、分岐によって使用されるオーバーフロー結果が、計算に時間がかかるようになるため、高い性能コストがかかる。間違って予測された分岐は、例えば少なくとも25コア・サイクルを費やす。この点について、オーバーフロー信号は、if−then−elseコードなどのプロシージャのリターン・コードをセットするために使用されることが多いということに留意されたい。
概説すると、2進化10進数データなどのデータに対する算術演算結果が、指定の結果長さlの範囲内にあるかどうかを検出するためのすばやく、効率的なアプローチが本明細書で開示される。
1つまたは複数の実装形態において、演算結果ではなくオペランドに対して演算する特殊なチェック・ハードウェアを使用することによって実際の算術演算または計算を行うのと並行して、本発明の1つまたは複数の態様によるオーバーフロー検出が行われる。本明細書で説明されるように、オーバーフローは、算術演算の最終的な結果が得られる前でも計算されてよい。これは都合のよいことに、演算の全体的な待ち時間を短縮する。さらに本開示を考慮して、オーバーフロー検出器は、ただ1つの限定的な追加のハードウェアを用いて当業者によって実装されてよい。
図2は、本発明の1つまたは複数の態様による、オーバーフロー検出を伴う回路またはデバイスの1つの例を描写する。本実装形態において、オペランドに対して算術的な加算または減算操作を行うように構成される符号絶対値加算器などの算術計算ロジック201においてオペランドAおよびオペランドB100が受け取られる。さらに、オペランドAおよびオペランドB100、ならびに指定の結果長さl111も受け取る、オーバーフロー検出器210が提供される。さらに、1つまたは複数の実施形態において、オーバーフロー検出器210は、例えば算術計算ロジック201からオペランドAおよびオペランドBの長さ指定子を提供される。図示のように、オーバーフロー検出器210は、結果R202が算術計算ロジックによって生み出されるのと並行してオーバーフロー信号(OVF)を生み出す。具体的には、1つまたは複数の実施形態において、オーバーフロー検出器210は、算術計算ロジック201と並行してオペランド100に対して演算を行う。さらに、オーバーフロー検出器210は、算術計算ロジック201が符号絶対値データ形式で結果Rを生み出すより前に、または並行してオーバーフロー信号OVFを提供することができる。
図3〜図9を参照しながら、本発明の1つまたは複数の態様によるオーバーフロー検出を実行する様々な実施形態が下記でさらに説明される。本明細書で開示されるオーバーフロー検出機能は、2進数の符号絶対値加算器、ならびに10進数の符号絶対値加算器に対して使用されてよいことに留意されたい。例証のために、比較的高度な複雑性を10進数のバージョンが有するので10進数のバージョンが説明され、2進数のバージョンは本明細書で行われる説明に基づけば当業者にはわかりやすい。
さらに下記で説明されるように、符号絶対値データ形式の可変長オペランドに対して演算するように構成される算術エンジンが提供される。算術エンジン、ユニット、回路、ロジック、等は、オペランドおよび結果の長さ指定子を受け取ること、長さ指定に従うオペランドを受け取ること、オペランドの和または差として符号絶対値形式で結果を計算すること、ならびに要求される長さに結果が収まるかどうかを示すオーバーフロー信号を提供することに適応される。算術演算によって生み出される結果とは無関係に、また実際の算術計算に並行してオーバーフロー・チェックが行われる。
さらに下記で説明されるように、オーバーフロー・チェックまたは検出は、結果の長さ指定子に基づいて生成されるパディング・ベクトルを使用することを含んでよい。オーバーフロー信号は、パディング・ベクトルと2つのオペランドの3つの和または差の桁上げ出力(carry-out)を含むか、または桁上げ出力として検出されてよい。1つまたは複数の実施形態において、本明細書で行われる説明から当業者には明らかになるように、データは任意のBCD形式でよく、オーバーフロー・チェックの桁上げ出力検出は、所与の桁にパディングを組み込み、次に通常の桁上げ木(carry-tree)を使用して、修正された桁生成および桁伝搬信号から桁上げ出力信号を導出する、修正された桁生成および桁伝搬ロジックを使用して行われてよい。
有効値の加算および有効値の減算という、検査される必要のある2つのケースがある。
1.有効値の加算のケース
図3は、オペランドAとオペランドBの加算を描写する。指定の結果長さlより結果Rが大きい場合、オーバーフローが発生する。10^lは、1の後にl個の末尾ゼロが続くビット・ストリングであることに留意されたい。下記の方程式(1)において、これは、所与のビット・ストリングの値を示す。以下の方程式(1)は、オペランドおよび切り捨てられた結果の最大長さn、ならびに所望の結果長さlに基づくオーバーフローの判断を示す。
OVF=1⇔A+B≧10^l (1)
⇔A+B+(10^n−10^l)≧10^n
上述のように、従来の実装形態は、2つのオペランドの和を生成し、次にlより大きい長さを結果が有するかどうかをチェックするであろう。
本開示によれば、オーバーフロー検出は、完全なn桁加算器の桁上げ出力だけのチェックに変更することができる。これは、結果長さlの左にあるビットをパディングすることによって行われることが可能である。結果長さの左にある桁上げ出力は次に、一番左の位置に伝搬され、桁上げ出力を生成することになる。これについての1つの実施形態が図4に描写される。
本アプローチの実装形態は以下である。従来の手法で2つのオペランドとパディング・ベクトルを加算することによって、3:2加算が行われ、その後、結果およびオーバーフローを得るために、結果として生じる和と桁上げベクトルが加算される。
本明細書で開示されるオーバーフロー検出の別の実装形態は、9パディングを含む、桁生成および桁伝搬信号のための修正方程式を使用する、AおよびBに対する別々の桁上げ木である。採用される方程式は以下のようなものである。
仮に、M(n−1,...,0)がビット・ベクトルであるとすると、k<lの場合、M(k)=0であり、k≧lの場合、M(k)=1であり、
桁kに対するg項(g-term):A(k)+B(k)+9×M(k)≧10 (2)
(桁A(k)およびB(k)ならびに潜在的な9パディングが桁上げを生成する)
桁kに対するp項(p-term):A(k)+B(k)+9×M(k)≧9 (3)
(桁kは桁上げを伝搬する)。
2.有効値の減算のケース
絶対差を計算する必要があるので、A−BまたはB−Aを計算する2つのケースは、区別される必要がある。
abs(A−B)⇒ケース1:A>Bの場合、A−B
ケース2:B≧Aの場合、B−A
図5は、オペランドAとオペランドBの減算を描写する。指定の結果長さlより結果Rが大きい場合、オーバーフロー結果が発生する。図5を参照しながら述べる。
OVF=1⇔R=A−B≧10^l
⇔A≧B+10^l
桁上げ出力cout(X+!Y)=1は、Y<Xを示し、cout(X+!Y)=0は、Y≧Xを示すことがよく知られている。
ケース1、(A>B⇔A−B)の場合、A=Yおよび(B+10^l)=Xであり、桁上げ出力cout(X+!Y)であり、OVF検出は、以下のように表現されることが可能である。
cout(X+!Y)=0⇔Y≧X
⇔A≧B+10^l
⇔A−B≧10^l
⇔R≧10^l
⇔OVF=1
上記に示されたように、計算の桁上げ出力がない場合に、オーバーフローが得られる。
ケース2、(B≧A⇔B−A)の場合、ケース1の場合と同じ想定がある。
R≧10^l⇒OVF=1
したがって、以下の方程式が得られる可能性がある。
R⇔(B−A)⇔B−A≧10^l
⇔B≧A+10^l
次に、Y=BおよびX=(A+10^l)により、以下が得られる。
cout(X+!Y)=0⇔Y≧X
⇔B≧A+10^l
⇔B−A≧10^l
⇔R≧10^l
⇔OVF=1
したがって、オーバーフロー(また、したがってR>10^l)は、以下の2つの方程式により、有効値の減算のケースで、検出されることが可能である。
A>Bのケース1(A−B): cout(B+!A+10^l)=0⇔OVF=1
B≧Aのケース2(B−A): cout(A+!B+10^l)=0⇔OVF=1
これらの2つのケースの例が、図6および図7にそれぞれ示される。有効値の加算のケースと同様に、上記の方程式は、2つの別々の特化された桁上げ木を使用するすばやいOVF検出に役立つ。これらの2つの桁上げ木は、10^lパディングを含む、桁生成および桁伝搬信号に対する以下の修正方程式を使用する。
仮に、M(n−1,...,0)がビット・ベクトルであるとすると、k!=lの場合、M(k)=0であり、k=lの場合、M(k)=1であり、
ケース1、(A−B)の場合、
桁kに対するg項:!A(k)+B(k)+1×M(k)≧16 (4)
(桁A(k)およびB(k)ならびに潜在的な1パディングが桁上げを生成する。)
桁kに対するp項:!A(k)+B(k)+1×M(k)≧15 (5)
(桁kは桁上げを伝搬する。)
ケース2、(B−A)の場合、
桁kに対するg項:A(k)+!B(k)+1×M(k)≧16 (6)
(桁A(k)およびB(k)ならびに潜在的な1パディングが桁上げを生成する。)
桁kに対するp項:A(k)+!B(k)+1×M(k)≧15 (7)
(この桁kが桁上げを伝搬する。)
上記の2つの桁上げ木の議論は、ほんの一例として提供されるにすぎないことに留意されたい。必要に応じて、循環桁上げを使用する単一の桁上げ木が、代替実施形態で採用されてよい。
図8および図9は、本発明の1つまたは複数の態様による、様々な処理の全体像の1つの実施形態を描写する。図8および図9によって描写されるように、算術演算を行う回路を提供する方法が開示される(500)。回路を提供することは、符号絶対値形式で結果を生み出すために、様々な長さのオペランドを加算または減算するように構成される算術計算ロジックを提供することと、指定の結果長さlに結果が収まるかどうかを示すオーバーフロー信号を提供するオーバーフロー検出器を提供することであって、オーバーフロー検出器は、算術計算ロジックによって生み出す結果とは無関係に、指定の結果長さに結果が収まるかどうかを判断するために、算術計算ロジックが結果を生み出す前にオペランドに対して演算する、オーバーフロー検出器を提供することとを含むことができる。
1つまたは複数の実装形態において、オーバーフロー検出器は、算術計算ロジックと並行してオペランドに対して演算する(505)。さらに、オーバーフロー検出器は、算術計算ロジックが符号絶対値データ形式で結果を生み出す前に、または並行してオーバーフロー信号を提供することができる(510)。
1つまたは複数の実施形態において、オーバーフロー検出器は、指定の結果長さlに基づいてパディング・ベクトルPを生成することによって、指定の結果長さに結果が収まるかどうかを判断し、桁上げ出力が存在するかどうかを判断するために、オペランドとパディング・ベクトルPの個々の加算または減算を評価し、オーバーフロー信号は、桁上げ出力に基づく(515)。例えば、オペランドは2つのオペランドでよく、オーバーフロー検出器は、2つのオペランドとパディング・ベクトルPの3つの加算または減算の桁上げ出力をチェックする(520)。1つまたは複数の実施形態において、桁上げ出力は、n桁加算器によるものであり、nは、指定の結果長さlより大きく、パディング・ベクトルPは、指定の結果長さlの左にビットをパディングすることによって生み出され、結果長さの桁上げ出力は、オーバーフロー検出器によってチェックされた桁上げ出力を生成するために一番左の位置に伝搬される(525)。
1つまたは複数の実施形態において、オペランドは、オペランドAおよびオペランドBを含むことができ、算術計算ロジックは、可変長のオペランドを加算するように構成され、オーバーフロー検出器は、9パディングを含む、桁生成(g項)信号および桁伝搬(p項)信号に関する以下の方程式を使用して、オペランドAおよびオペランドBに対する別々の桁上げ木を実行して、g項およびp項から桁上げ出力を導出し、オーバーフロー信号は、桁上げ出力に基づく。M(n−1,...,0)はビット・ベクトルであり、k<lの場合、M(k)=0であり、k≧lの場合、M(k)=1であり、桁kに対するg項:A(k)+B(k)+9×M(k)≧10、ここで桁A(k)およびB(k)ならびに潜在的な9パディングは桁上げを生成し、桁kに対するp項:A(k)+B(k)+9×M(k)≧9、桁kは桁上げを伝搬する(530)。
1つまたは複数のさらなる実施形態において、オペランドは、オペランドAおよびオペランドBを含み、算術計算ロジックは、可変長のオペランドを減算するように構成され、オーバーフロー検出器は、10のパディングを使用することを含む、桁生成(g項)信号および桁伝搬(p項)信号に関する以下の方程式を使用して、オペランドAおよびオペランドBに対する別々の桁上げ木を実行し、lは、指定の結果長さlである。M(n−1,...,0)はビット・ベクトルであり、k!=lの場合、M(k)=0であり、k=lの場合、M(k)=1であり、A>B(A−B)の場合、桁kに対するg項:!A(k)+B(k)+1×M(k)≧16(桁A(k)およびB(k)ならびに潜在的な1パディングは、桁上げを生成する)、桁kに対するp項:!A(k)+B(k)+1×M(k)≧15(桁kは桁上げを伝搬する)、ならびにB≧A(B−A)の場合、桁kに対するg項:A(k)+!B(k)+1×M(k)≧16(桁A(k)およびB(k)ならびに潜在的な1パディングは桁上げを生成する)、桁kに対するp項:A(k)+!B(k)+1×M(k)≧15である(桁kは桁上げを伝搬する)(535)。
1つまたは複数の実施形態において、オペランドは、2進化10進数形式でよく、算術計算ロジックは、符号絶対値加算器を含むことができる(540)。
図10を参照すると、本発明の例証的な態様が実行され得るデータ処理システムのブロック図が示される。
図示のように、データ処理システム600は、コンピューティング・システム612を含む。コンピュータ・システム612と共に使用するのに適切な可能性があるよく知られたコンピューティング・システム、環境、または構成、あるいはその組合せの例は、ワークステーション、コンピュータ、サーバ、および同様のものを含むがこれらに限定されない。
コンピューティング・システム612は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明されてよい。一般に、プログラム・モジュールは、特定のタスクを行うか、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造、などを含むことができる。
図10に描写されるように、コンピューティング・システム612は、汎用コンピューティング・デバイスの形で示される。コンピューティング・システム612の構成要素は、1つまたは複数のプロセッサまたは処理ユニット616、システム・メモリ623、およびシステム・メモリ623を含む様々なシステム構成要素をプロセッサ616に連結するバス618を含むことができるがこれらに限定されない。
1つの実施形態において、プロセッサ616は、インターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるz/Architecture(R)、またはインターナショナル・ビジネス・マシーンズ・コーポレーションもしくは他の企業によって提供される他のアーキテクチャに基づくことができる。z/Architecture(R)は、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。"z/Architecture(R) Principles of Operation," IBM Publication No.SA22-7832-10, March 2015の中で、z/Architecture(R)の1つの実施形態が説明され、これは、本明細書によって全体として参照により本明細書に組み込まれる。
他の例において、これは、インターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるPower Architecture(R)などの、他のアーキテクチャに基づいてよい。Power Architecture(R)の1つの実施形態は、"Power ISATM Version 2.07B," International Business Machines Corporation, April 9, 2015の中で説明され、これは、本明細書によって全体として参照により本明細書に組み込まれる。POWER ARCHITECTURE(R)は、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。本明細書で使用される他の名称は、インターナショナル・ビジネス・マシーンズ・コーポレーションまたは他の企業の登録商標、商標、または製品名の可能性がある。
バス618は、メモリ・バスまたはメモリ・コントローラ、周辺機器バス、アクセラレイティッド・グラフィックス・ポート、および様々なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含むバス構造のいくつかのタイプのいずれかの1つまたは複数を表す。例として、また限定ではなく、このようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロ・チャネル・アーキテクチャ(MCA:Micro Channel Architecture)バス、拡張ISA(EISA:EnhancedISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA:Video Electronics Standards Association)ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(PCI:Peripheral Component Interconnect)バスを含む。
コンピューティング・システム612は、様々なコンピュータ・システム可読媒体を含むことができる。このような媒体は、コンピューティング・システム612によってアクセス可能な任意な利用可能な媒体でよく、これは、揮発性と不揮発性両方の媒体、取外し可能と取外し不能両方の媒体を含む。
システム・メモリ623は、ランダム・アクセス・メモリ(RAM:random access memory)630またはキャッシュ・メモリ632あるいはその両方などの揮発性メモリの形式のコンピュータ・システム可読媒体を含むことができる。コンピューティング・システム612は、他の取外し可能/取外し不能な、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。ほんの一例として、ストレージ・システム634は、(図示されていないが、典型的には「ハード・ドライブ」と呼ばれる)取外し不能な不揮発性の磁気媒体に読み書きするために提供されてよい。図示されていないが、取外し可能な不揮発性磁気ディスク(例えば「フロッピー・ディスク」)に読み書きするための磁気ディスク・ドライブ、およびCD−ROM、DVD−ROM、または他の光媒体などの取外し可能な不揮発性光ディスクに読み書きするための光ディスク・ドライブが提供されてよい。このような事例においてそれぞれは、1つまたは複数のデータ媒体インターフェースによってバス618に接続されてよい。下記で説明されるようにメモリ623は、本発明の実施形態の機能を実行するように構成されるプログラム・モジュールのセット(例えば少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
プログラム・モジュール642、ならびに例として、また限定ではなく、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データのセット(少なくとも1つ)を有するプログラム/ユーティリティ640は、メモリ632に格納されてよい。オペレーティング・システム、1つもしくは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはこれらのいくつかの組合せのそれぞれは、ネットワーキング環境の実装を含むことができる。プログラム・モジュール642は一般に、本明細書で説明されるような本発明の実施形態の機能または方法あるいはその両方を実行する。一方、(本明細書で説明されるものなどの)別々のオーバーフロー検出デバイス、モジュール、ロジック、等601は、コンピューティング環境612の中で提供されてよい。
コンピューティング・システム612は、キーボード、ポインティング・デバイス、ディスプレイ624、等などの1つもしくは複数の外部デバイス614、コンピューティング・システム612とユーザが対話できるようにする1つもしくは複数のデバイス、または1つもしくは複数の他のコンピューティング・デバイスとコンピューティング・システム612が通信できるようにする任意のデバイス(例えば、ネットワーク・カード、モデム、等)、あるいはその組合せと通信することもできる。このような通信は、入力/出力(I/O:Input/Output)インターフェース622を介して行うことができる。さらに、コンピューティング・システム612は、ネットワーク・アダプタ620を介して、ローカル・エリア・ネットワーク(LAN:local area network)、一般的な広域ネットワーク(WAN:wide area network)、またはパブリック・ネットワーク(例えばインターネット)、あるいはその組合せなどの1つまたは複数のネットワークと通信することができる。描写されるように、ネットワーク・アダプタ620は、バス618を介して、コンピューティング・システム612の他の構成要素と通信する。図示されていないが、他のハードウェア構成要素またはソフトウェア構成要素あるいはその両方が、コンピューティング・システム612と共に使用されてよいということを理解されたい。例は、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システム、等を含むがこれらに限定されない。
当業者は、図10の描写されたシステムの例、ならびに本明細書で参照される他の例は、アーキテクチャの限定を意味するものではないということに留意されたい。
本発明は、統合の任意の可能な技術的詳細レベルにおける、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せでよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(または複数の媒体)を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のための命令を保持および格納できる有形のデバイスでよい。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の適切な組合せでよいがこれらに限定されない。コンピュータ可読ストレージ媒体のさらなる具体例の完全に網羅されていないリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM:read-only memory)、消去可能プログラマブル・リード・オンリ・メモリ(EPROM(erasable programmable read-only memory)すなわちフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、携帯型コンパクト・ディスク・リード・オンリ・メモリ(CD−ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー・ディスク、命令が記録されたパンチ・カードまたは溝内の隆起構造などの機械的にエンコードされたデバイス、および前述の任意の適切な組合せを含む。本明細書で使用されるようなコンピュータ可読ストレージ媒体は、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、またはワイヤを通じて伝送される電気信号などの、一時的な信号自体であると解釈されるべきではない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から個々のコンピューティング・デバイス/処理デバイスにダウンロードされてよく、また例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、またはワイヤレス・ネットワーク、あるいはその組合せといったネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードされてもよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含むことができる。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、個々のコンピューティング・デバイス/処理デバイス内部のコンピュータ可読ストレージ媒体に格納するためにコンピュータ可読プログラム命令を転送する。
本発明の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA:instruction-set-architecture)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路機器の構成データ、またはSmalltalk(R)、C++、もしくは同様のものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードでよい。コンピュータ可読プログラム命令は、スタンド・アロン・ソフトウェア・パッケージとして、全面的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で実行することができ、部分的にユーザのコンピュータ上および部分的にリモート・コンピュータ上で、または全面的にリモート・コンピュータもしくはサーバ上で実行することができる。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくは広域ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されてよく、また接続は、(例えば、インターネット・サービス・プロバイダを使用するインターネットを通じて)外部コンピュータに対して行われてよい。いくつかの実施形態において、例えば、プログラマブル論理回路機器、フィールド・プログラマブル・ゲート・アレイ(FPGA:field-programmable gate array)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic array)を含む電子回路機器は、本発明の態様を行うために、電子回路機器を個別化するコンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行することができる。
本発明の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャートまたはブロック図あるいはその両方を参照しながら、本発明の態様が本明細書で説明される。フローチャートまたはブロック図あるいはその両方の各ブロック、ならびにフローチャートまたはブロック図あるいはその両方の中のブロックの組合せは、コンピュータ可読プログラム命令によって実行されてよいということが理解されよう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサによって実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定された機能/作用を実行する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されて、マシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定された機能/作用の態様を実行する命令を含む製品を備えるべく、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに特定の手法で機能するよう指示できるものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定された機能/作用を実行するべく、コンピュータ実行処理を生み出すように、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを行わせるものであってもよい。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点については、フローチャートまたはブロック図における各ブロックは、指定された論理機能を実行するための1つまたは複数の実行可能命令を備えるモジュール、セグメント、または命令の一部を表すことができる。いくつかの代替実装形態において、ブロック中に記される機能は、図中に記される順序とは異なる順序で行うことができる。例えば、連続して示される2つのブロックは実際には、実質的に並行に実行されてよく、またブロックは、関連する機能に応じて、時には逆の順番で実行されてもよい。ブロック図またはフローチャートあるいはその両方の各ブロック、ならびにブロック図またはフローチャートあるいはその両方の中のブロックの組合せは、指定された機能または作用を行うか、専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェアに基づくシステムによって実行されてよいということにも留意されたい。
本明細書で使用される用語は、特定の実施形態だけを説明するためのものであり、本発明を限定するためのものではない。本明細書で使用されるように、単数形「ある(a)」、「ある(an)」、および「その(the)」は、別途、文脈がはっきり示さない限り、複数形も同様に含むことを意図する。用語「備える(comprise)」(ならびに「備え(comprises)」および「備えている(comprising)」など、備える(comprise)の任意の形)、「有する(have)」(ならびに「有し(has)」および「有している(having)」など、有する(have)の任意の形)、「含む(include)」(ならびに「含み(includes)」および「含んでいる(including)」など、含む(include)の任意の形)、ならびに「収める(contain)」(ならびに「収め(contains)」および「収めている(containing)」など、収める(contain)の任意の形)は、オープン・エンドな連結動詞であることがさらに理解されよう。結果として、1つまたは複数のステップまたは要素を「備える(comprises)」、「有する(has)」、「含む(includes)」、または「収める(contains)」方法またはデバイスは、これらの1つまたは複数のステップまたは要素を保有するが、これらの1つまたは複数のステップまたは要素だけを保有することに限定されない。同様に、1つまたは複数の特徴を「備える(comprises)」、「有する(has)」、「含む(includes)」、または「収める(contains)」方法のステップまたはデバイスの要素は、これらの1つまたは複数の特徴を保有するが、これらの1つまたは複数の特徴だけを保有することに限定されない。さらに、一定の方式で構成されるデバイスまたは構造は少なくともこの方式で構成されるが、挙げられていない方式で構成されてもよい。
もしあれば、下記の特許請求の範囲におけるすべてのミーンズ・プラス・ファンクション要素またはステップ・プラス・ファンクション要素の対応する構造、材料、作用、および均等物は、具体的に特許請求されるような他の特許請求された要素と組み合わせて機能を実行するための任意の構造、材料、または作用を含むことを意図する。本発明の説明は例証および説明のために提示されたが、開示された形で本発明を網羅するため、または限定するためのものではない。本発明の範囲および思想から逸脱することなく、多くの変更および変形が当業者には明らかであろう。実施形態は、本発明の1つまたは複数の態様および実用的な用途の原理を最もよく説明するように、また熟慮された特定の使用に適した様々な変更と共に、様々な実施形態に対する本発明の1つまたは複数の態様を当業者が理解できるように選ばれ、説明された。

Claims (18)

  1. 回路であって、
    符号絶対値データ形式で結果を生み出すために、可変長のオペランドを加算または減算するように構成される算術計算ロジックと、
    指定の結果長さlに前記結果が収まるかどうかを示すオーバーフロー信号を提供するオーバーフロー検出器であって、前記指定の結果長さlに前記結果が収まるかどうかを、前記算術計算ロジックによって生み出される前記結果とは無関係に判断するために、前記算術計算ロジックが前記結果を生み出す前に前記オペランドに対して演算を行う、前記オーバーフロー検出器と
    を備え、
    前記オーバーフロー検出器が、前記指定の結果長さlに基づいてパディング・ベクトルPを生成することによって、前記指定の結果長さに前記結果が収まるかどうかを判断し、桁上げ出力が存在するかどうかを判断するために、前記オペランドと前記パディング・ベクトルPの加算を評価し、前記オーバーフロー信号が前記桁上げ出力に基づく、
    回路。
  2. 前記オーバーフロー検出器が、前記算術計算ロジックと並行してオペランドに対して演算する、請求項1に記載の回路。
  3. 前記オーバーフロー検出器が、前記算術計算ロジックが前記符号絶対値データ形式で前記結果を生み出す前に、または並行して前記オーバーフロー信号を提供する、請求項1に記載の回路。
  4. 前記オペランドが、2つのオペランドを含み、前記オーバーフロー検出器が、前記2つのオペランドと前記パディング・ベクトルPの3つの加算の前記桁上げ出力をチェックする、請求項1に記載の回路。
  5. 前記桁上げ出力が、n桁加算器によるものであり、nが、前記指定の結果長さlより大きく、前記パディング・ベクトルPが、前記指定の結果長さlの左にビットをパディングすることによって生み出され、前記結果長さの桁上げ出力が、前記オーバーフロー検出器によってチェックされた前記桁上げ出力を生成するために一番左の位置に伝搬される、請求項1に記載の回路。
  6. 前記オペランドが、オペランドAおよびオペランドBを含み、前記算術計算ロジックが、可変長の前記オペランドを加算するように構成され、前記オーバーフロー検出器が、9パディングを含む、桁生成(g項)信号および桁伝搬(p項)信号に関する以下の方程式を使用して、オペランドAおよびオペランドBに対する別々の桁上げ木を実行して、前記g項およびp項から桁上げ出力を導出し、前記オーバーフロー信号が前記桁上げ出力に基づき、
    M(n−1,...,0)がビット・ベクトルであり、k<lの場合、M(k)=0であり、k≧lの場合、M(k)=1であり、
    桁kに対するg項:A(k)+B(k)+9×M(k)≧10、ここで、桁A(k)およびB(k)ならびに潜在的な9パディングが、桁上げを生成し、
    桁kに対するp項:A(k)+B(k)+9×M(k)≧9、前記桁kが、桁上げを伝搬する、
    請求項1に記載の回路。
  7. 前記オペランドが、オペランドAおよびオペランドBを含み、前記算術計算ロジックが、可変長の前記オペランドを減算するように構成され、前記オーバーフロー検出器が、10のパディングを使用することを含む、桁生成(g項)信号および桁伝搬(p項)信号に関する以下の方程式を使用して、オペランドAおよびオペランドBに対する別々の桁上げ木を実行し、ここで、lは、前記指定の結果長さlであり、
    M(n−1,...,0)がビット・ベクトルであり、k!=lの場合、M(k)=0であり、k=lの場合、M(k)=1であり、
    A>B(A−B)の場合、
    桁kに対するg項:!A(k)+B(k)+1×M(k)≧16(桁A(k)およびB(k)ならびに潜在的な1パディングが桁上げを生成する)、
    桁kに対するp項:!A(k)+B(k)+1×M(k)≧15(前記桁kが桁上げを伝搬する)、
    B≧A(B−A)の場合、
    桁kに対するg項:A(k)+!B(k)+1×M(k)≧16(桁A(k)およびB(k)ならびに潜在的な1パディングが桁上げを生成する)、
    桁kに対するp項:A(k)+!B(k)+1×M(k)≧15(前記桁kが桁上げを伝搬する)、
    請求項1に記載の回路。
  8. 前記オペランドが、2進化10進数形式であり、前記算術計算ロジックが、符号絶対値加算器を含む、請求項1に記載の回路。
  9. 方法であって、
    算術演算を行う回路を提供することを含み、前記提供することが、
    符号絶対値データ形式で結果を生み出すために、可変長のオペランドを加算または減算するように構成される算術計算ロジックを提供することと、
    指定の結果長さlに前記結果が収まるかどうかを示すオーバーフロー信号を提供するオーバーフロー検出器を提供することであって、前記オーバーフロー検出器が、前記指定の結果長さに前記結果が収まるかどうかを、前記算術計算ロジックによって生み出される前記結果とは無関係に判断するために、前記算術計算ロジックが前記結果を生み出す前に前記オペランドに対して演算を行う、前記オーバーフロー検出器を提供することと
    を含み、
    前記オーバーフロー検出器が、前記指定の結果長さlに基づいてパディング・ベクトルPを生成することによって、前記指定の結果長さに前記結果が収まるかどうかを判断し、桁上げ出力が存在するかどうかを判断するために、前記オペランドと前記パディング・ベクトルPの加算を評価し、前記オーバーフロー信号が前記桁上げ出力に基づく、
    方法。
  10. 前記オーバーフロー検出器が、前記算術計算ロジックと並行してオペランドに対して演算する、請求項9に記載の方法。
  11. 前記オーバーフロー検出器が、前記算術計算ロジックが前記符号絶対値データ形式で前記結果を生み出す前に、または並行して前記オーバーフロー信号を提供する、請求項9に記載の方法。
  12. 前記オペランドが、2つのオペランドを含み、前記オーバーフロー検出器が、前記2つのオペランドと前記パディング・ベクトルPの3つの加算の前記桁上げ出力をチェックする、請求項9に記載の方法。
  13. 前記桁上げ出力が、n桁加算器によるものであり、nが、前記指定の結果長さlより大きく、前記パディング・ベクトルPが、前記指定の結果長さlの左にビットをパディングすることによって生み出され、前記結果長さの桁上げ出力が、前記オーバーフロー検出器によってチェックされた前記桁上げ出力を生成するために一番左の位置に伝搬される、請求項9に記載の方法。
  14. 前記オペランドが、オペランドAおよびオペランドBを含み、前記算術計算ロジックが、可変長の前記オペランドを加算するように構成され、前記オーバーフロー検出器が、9パディングを含む、桁生成(g項)信号および桁伝搬(p項)信号に関する以下の方程式を使用して、オペランドAおよびオペランドBに対する別々の桁上げ木を実行して、前記g項およびp項から桁上げ出力を導出し、前記オーバーフロー信号が前記桁上げ出力に基づき、
    M(n−1,...,0)がビット・ベクトルであり、k<lの場合、M(k)=0であり、k≧lの場合、M(k)=1であり、
    桁kに対するg項:A(k)+B(k)+9×M(k)≧10、ここで、桁A(k)およびB(k)ならびに潜在的な9パディングが、桁上げを生成し、
    桁kに対するp項:A(k)+B(k)+9×M(k)≧9、前記桁kが、桁上げを伝搬する、
    請求項9に記載の方法。
  15. 前記オペランドが、オペランドAおよびオペランドBを含み、前記算術計算ロジックが、可変長の前記オペランドを減算するように構成され、前記オーバーフロー検出器が、10のパディングを使用することを含む、桁生成(g項)信号および桁伝搬(p項)信号に関する以下の方程式を使用して、オペランドAおよびオペランドBに対する別々の桁上げ木を実行し、ここで、lは、前記指定の結果長さlであり、
    M(n−1,...,0)がビット・ベクトルであり、k!=lの場合、M(k)=0であり、k=lの場合、M(k)=1であり、
    A>B(A−B)の場合、
    桁kに対するg項:!A(k)+B(k)+1×M(k)≧16(桁A(k)およびB(k)ならびに潜在的な1パディングが桁上げを生成する)、
    桁kに対するp項:!A(k)+B(k)+1×M(k)≧15(前記桁kが桁上げを伝搬する)、
    B≧A(B−A)の場合、
    桁kに対するg項:A(k)+!B(k)+1×M(k)≧16(桁A(k)およびB(k)ならびに潜在的な1パディングが桁上げを生成する)、
    桁kに対するp項:A(k)+!B(k)+1×M(k)≧15(前記桁kが桁上げを伝搬する)、
    請求項9に記載の方法。
  16. 前記オペランドが、2進化10進数形式であり、前記算術計算ロジックが、符号絶対値加算器を含む、請求項9に記載の方法。
  17. 加算または減算操作のオーバーフローを検出するためのコンピュータ・プログラムであって
    号絶対値データ形式で結果を生み出すために、可変長のオペランドを算術的に加算または減算することと、
    指定の結果長さlに前記結果が収まるかどうかを示すオーバーフロー信号を生み出すことであって、前記指定の結果長さlに前記結果が収まるかどうかを、前記算術的な加算または減算によって生み出される前記結果とは無関係に判断するために、前記算術的な加算または減算が前記結果を生み出す前に前記オペランドに対して演算を行う、前記生み出すことと
    を含む方法をプロセッサに行わせ
    前記オーバーフロー信号を生み出すことが、前記指定の結果長さlに基づいてパディング・ベクトルPを生成することによって、前記指定の結果長さに前記結果が収まるかどうかを判断することと、桁上げ出力が存在するかどうかを判断するために、前記オペランドと前記パディング・ベクトルPの加算を評価することとを含み、前記オーバーフロー信号が前記桁上げ出力に基づく、
    コンピュータ・プログラム。
  18. 前記オーバーフロー信号を生み出すことは、前記算術的に加算または減算することが前記符号絶対値データ形式で前記結果を生み出す前に、または並行して前記オーバーフロー信号を提供する、請求項17に記載のコンピュータ・プログラム。
JP2019525996A 2016-12-08 2017-11-30 符号絶対値データ形式で結果を生み出すための回路、方法およびコンピュータ・プログラム Active JP6975234B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/372,867 US10067744B2 (en) 2016-12-08 2016-12-08 Overflow detection for sign-magnitude adders
US15/372,867 2016-12-08
PCT/IB2017/057532 WO2018104830A1 (en) 2016-12-08 2017-11-30 Overflow detection for sign-magnitude adders

Publications (2)

Publication Number Publication Date
JP2020513612A JP2020513612A (ja) 2020-05-14
JP6975234B2 true JP6975234B2 (ja) 2021-12-01

Family

ID=62489380

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019525996A Active JP6975234B2 (ja) 2016-12-08 2017-11-30 符号絶対値データ形式で結果を生み出すための回路、方法およびコンピュータ・プログラム

Country Status (6)

Country Link
US (2) US10067744B2 (ja)
JP (1) JP6975234B2 (ja)
CN (1) CN110073328B (ja)
DE (1) DE112017004690T5 (ja)
GB (1) GB2572719B (ja)
WO (1) WO2018104830A1 (ja)

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4021655A (en) * 1976-03-30 1977-05-03 International Business Machines Corporation Oversized data detection hardware for data processors which store data at variable length destinations
JPS5674774A (en) * 1979-11-22 1981-06-20 Nec Corp Arithmetic circuit with overflow detector
US4366548A (en) 1981-01-02 1982-12-28 Sperry Corporation Adder for exponent arithmetic
JPS61239327A (ja) * 1985-04-16 1986-10-24 Nec Corp オ−バフロ−検出方式
JPS6211933A (ja) * 1985-07-09 1987-01-20 Nec Corp 演算回路
US4890253A (en) * 1988-12-28 1989-12-26 International Business Machines Corporation Predetermination of result conditions of decimal operations
US5448509A (en) * 1993-12-08 1995-09-05 Hewlett-Packard Company Efficient hardware handling of positive and negative overflow resulting from arithmetic operations
US5675528A (en) 1995-06-16 1997-10-07 Cyrix Corporation Early detection of overflow and exceptional quotient/remainder pairs for nonrestoring twos complement division
US5615113A (en) * 1995-06-16 1997-03-25 Cyrix Corporation Early signaling of no-overflow for nonrestoring twos complement division
US6151616A (en) 1999-04-08 2000-11-21 Advanced Micro Devices, Inc. Method and circuit for detecting overflow in operand multiplication
EP1102163A3 (en) * 1999-11-15 2005-06-29 Texas Instruments Incorporated Microprocessor with improved instruction set architecture
EP1178399B1 (en) 2000-08-01 2004-10-20 STMicroelectronics S.A. Saturation in an arithmetic unit
US7206800B1 (en) * 2000-08-30 2007-04-17 Micron Technology, Inc. Overflow detection and clamping with parallel operand processing for fixed-point multipliers
US7725522B2 (en) * 2005-04-14 2010-05-25 Texas Instruments Incorporated High-speed integer multiplier unit handling signed and unsigned operands and occupying a small area
JP5014920B2 (ja) * 2007-08-17 2012-08-29 ラピスセミコンダクタ株式会社 回路設計方法、ならびにその方法により製造される集積回路
US8554822B2 (en) 2010-06-24 2013-10-08 International Business Machines Corporation Decimal adder with end around carry
US8930657B2 (en) * 2011-07-18 2015-01-06 Infineon Technologies Ag Method and apparatus for realtime detection of heap memory corruption by buffer overruns
US9348642B2 (en) * 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9213523B2 (en) * 2012-06-29 2015-12-15 Intel Corporation Double rounded combined floating-point multiply and add
GB2530989B (en) * 2014-10-06 2016-08-17 Ibm Decimal and binary floating point rounding
US9916130B2 (en) * 2014-11-03 2018-03-13 Arm Limited Apparatus and method for vector processing

Also Published As

Publication number Publication date
CN110073328B (zh) 2023-09-05
JP2020513612A (ja) 2020-05-14
DE112017004690T5 (de) 2019-07-04
US20180253282A1 (en) 2018-09-06
GB201909646D0 (en) 2019-08-21
US10067744B2 (en) 2018-09-04
WO2018104830A1 (en) 2018-06-14
US20180165063A1 (en) 2018-06-14
US10228910B2 (en) 2019-03-12
CN110073328A (zh) 2019-07-30
GB2572719B (en) 2020-05-20
GB2572719A (en) 2019-10-09

Similar Documents

Publication Publication Date Title
US10540142B2 (en) Accuracy-conserving floating-point value aggregation
CN110168493B (zh) 在128位宽的操作数上的融合乘加浮点运算
US9959093B2 (en) Binary fused multiply-add floating-point calculations
JP2021525403A (ja) 改良された低精度の2進浮動小数点形式設定
US9870200B2 (en) Decimal and binary floating point rounding
US20160124713A1 (en) Fast, energy-efficient exponential computations in simd architectures
US10140090B2 (en) Computing and summing up multiple products in a single multiplier
US9430190B2 (en) Fused multiply add pipeline
US6542915B1 (en) Floating point pipeline with a leading zeros anticipator circuit
US10558432B2 (en) Multiply-add operations of binary numbers in an arithmetic unit
US20220075595A1 (en) Floating point computation for hybrid formats
US8572141B2 (en) Execution of fixed point instructions using a decimal floating point unit
US10459689B2 (en) Calculation of a number of iterations
JP6975234B2 (ja) 符号絶対値データ形式で結果を生み出すための回路、方法およびコンピュータ・プログラム
Tsen et al. A combined decimal and binary floating-point multiplier
US7739323B2 (en) Systems, methods and computer program products for providing a combined moduli-9 and 3 residue generator
US11487506B2 (en) Condition code anticipator for hexadecimal floating point
US11922130B2 (en) Optimization of arithmetic expressions
US20130227250A1 (en) Simd accelerator for data comparison
Vlăduţiu et al. The Representation of Numbers in Computing Systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200527

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210330

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210623

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210713

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211006

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211102

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211105

R150 Certificate of patent or registration of utility model

Ref document number: 6975234

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150