IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 北京地平▲線▼信息技▲術▼有限公司の特許一覧

特開2024-159507乗算器の演算方法、演算装置、電子機器および記憶媒体
<>
  • 特開-乗算器の演算方法、演算装置、電子機器および記憶媒体 図1
  • 特開-乗算器の演算方法、演算装置、電子機器および記憶媒体 図2
  • 特開-乗算器の演算方法、演算装置、電子機器および記憶媒体 図3
  • 特開-乗算器の演算方法、演算装置、電子機器および記憶媒体 図4
  • 特開-乗算器の演算方法、演算装置、電子機器および記憶媒体 図5
  • 特開-乗算器の演算方法、演算装置、電子機器および記憶媒体 図6
  • 特開-乗算器の演算方法、演算装置、電子機器および記憶媒体 図7
  • 特開-乗算器の演算方法、演算装置、電子機器および記憶媒体 図8
  • 特開-乗算器の演算方法、演算装置、電子機器および記憶媒体 図9
  • 特開-乗算器の演算方法、演算装置、電子機器および記憶媒体 図10
  • 特開-乗算器の演算方法、演算装置、電子機器および記憶媒体 図11
  • 特開-乗算器の演算方法、演算装置、電子機器および記憶媒体 図12
  • 特開-乗算器の演算方法、演算装置、電子機器および記憶媒体 図13
  • 特開-乗算器の演算方法、演算装置、電子機器および記憶媒体 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024159507
(43)【公開日】2024-11-08
(54)【発明の名称】乗算器の演算方法、演算装置、電子機器および記憶媒体
(51)【国際特許分類】
   G06F 17/10 20060101AFI20241031BHJP
【FI】
G06F17/10 Z
【審査請求】有
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2024035064
(22)【出願日】2024-03-07
(31)【優先権主張番号】202310468468.2
(32)【優先日】2023-04-27
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】202310778309.2
(32)【優先日】2023-06-28
(33)【優先権主張国・地域又は機関】CN
(71)【出願人】
【識別番号】522378775
【氏名又は名称】北京地平▲線▼信息技▲術▼有限公司
(74)【代理人】
【識別番号】100105924
【弁理士】
【氏名又は名称】森下 賢樹
(72)【発明者】
【氏名】ジンナン ディン
(72)【発明者】
【氏名】シャンタオ ウー
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056AA01
5B056FF01
(57)【要約】      (修正有)
【課題】多精度の乗算演算を実現し、ハードウェアリソースの消費量とハードウェア面積とを削減する乗算器の演算方法、演算装置、電子機器及び記憶媒体を提供する。
【解決手段】方法は、乗算器の複数の入力データグループ及び乗算器の符号化方式を決定するステップと、複数の入力データグループにおける少なくとも1つの下位ビット入力データグループを決定するステップと、少なくとも1つの下位ビットデータグループ及び符号化方式に基づいて、少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項を決定するステップと、少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項及び複数の入力データグループに基づいて、目標部分積配列を決定するステップと、目標部分積配列に基づいて、各入力データグループの乗算演算結果を決定するステップと、を含む。
【選択図】図1
【特許請求の範囲】
【請求項1】
乗算器の複数の入力データグループおよび前記乗算器の符号化方式を決定するステップと、
前記複数の入力データグループにおける少なくとも1つの下位ビット入力データグループを決定するステップと、
前記少なくとも1つの下位ビット入力データグループと前記符号化方式とに基づいて、少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項を決定するステップと、
前記少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項と前記複数の入力データグループとに基づいて、目標部分積配列を取得するステップと、
前記目標部分積配列に基づいて、各入力データグループの乗算演算結果を決定するステップと、を含む、
ことを特徴とする乗算器の演算方法。
【請求項2】
前記複数の入力データグループにおける少なくとも1つの下位ビット入力データグループと前記符号化方式とに基づいて、前記少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項を決定するステップは、
前記符号化方式と、前記少なくとも1つの下位ビット入力データグループのデータビット幅と、前記複数の入力データグループにおける前記少なくとも1つの下位ビット入力データグループの位置と、に基づいて、前記少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項の位置を決定するステップと、
前記少なくとも1つの下位ビット入力データグループにおける各データの符号ビットの数値に基づいて、前記少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項の補償値を決定するステップと、を含む、
ことを特徴とする請求項1に記載の乗算器の演算方法。
【請求項3】
前記符号化方式と、前記少なくとも1つの下位ビット入力データグループのデータビット幅と、前記複数の入力データグループにおける前記少なくとも1つの下位ビット入力データグループの位置と、に基づいて、前記少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項の位置を決定するステップは、
前記符号化方式と、前記少なくとも1つの下位ビット入力データグループのデータビット幅と、前記複数の入力データグループにおける前記少なくとも1つの下位ビット入力データグループの位置と、に基づいて、前記少なくとも1つの下位ビット入力データグループに対応するサブ部分積配列の最終行の位置を決定するステップと、
前記少なくとも1つの下位ビット入力データグループに対応するサブ部分積配列の最終行の位置に基づいて、前記少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項の補償位置を決定するステップと、を含む、
ことを特徴とする請求項2に記載の乗算器の演算方法。
【請求項4】
前記少なくとも1つの下位ビット入力データグループにおける各データの符号ビットの数値に基づいて、前記少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項の補償値を決定するステップは、
各下位ビット入力データグループにおける乗数と被乗数との符号ビットの数値に対してXNOR演算を実行して、XNOR演算後の数値を決定するステップと、
前記XNOR演算後の数値に基づいて、前記少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項の補償値を決定するステップと、を含む、
ことを特徴とする請求項2に記載の乗算器の演算方法。
【請求項5】
前記少なくとも1つの下位ビット入力データグループにおける各データの符号ビットの数値に基づいて、前記少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項の補償値を決定するステップは、
各下位ビット入力データグループにおける乗数と被乗数との符号ビットの数値に基づいて、前記乗数と前記被乗数との乗算演算結果の符号値を決定するステップと、
前記乗算演算結果の符号値を反転して、前記各下位ビット入力データグループに対応する桁上げ補償項の補償値を取得するステップと、を含む、
ことを特徴とする請求項2に記載の乗算器の演算方法。
【請求項6】
前記少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項と前記複数の入力データグループとに基づいて、目標部分積配列を取得するステップは、
前記各入力データグループのデータビット幅に対応する符号化方式を採用して前記各入力データグループを符号化して、前記各入力データグループに対応する符号化データを取得するステップと、
前記各入力データグループに対応する符号化データに基づいて、前記各入力データグループに対応するサブ部分積配列を含む初期部分積配列を生成するステップと、
前記少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項の前記補償値の位置および前記補償値に基づいて、前記初期部分積配列に前記桁上げ補償項を追加して、前記目標部分積配列を取得するステップと、を含む、
ことを特徴とする請求項2~5のいずれか1項に記載の乗算器の演算方法。
【請求項7】
前記複数の入力データグループにおける少なくとも1つの下位ビット入力データグループを決定するステップは、
前記各入力データグループのデータビット幅の合計が、前記乗算器が実行可能な最大のデータビット幅以下であることに応じて、前記複数の入力データグループにおける少なくとも1つの下位ビット入力データグループを決定するステップ、を含む、
ことを特徴とする請求項1~5のいずれか1項に記載の乗算器の演算方法。
【請求項8】
前記目標部分積配列に基づいて、各入力データグループの乗算演算結果を決定するステップは、
ウォレスツリー型圧縮器を使用して、前記目標部分積配列を圧縮して、圧縮データを取得するステップと、
前記圧縮データを累計して、前記各入力データグループの乗算演算結果を取得するステップ、を含む、
ことを特徴とする請求項1~5のいずれか1項に記載の乗算器の演算方法。
【請求項9】
乗算器の複数の入力データグループおよび前記乗算器の符号化方式を決定し、前記複数の入力データグループにおける少なくとも1つの下位ビット入力データグループを決定し、前記少なくとも1つの下位ビットデータグループおよび前記符号化方式に基づいて、前記少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項を決定するための補償決定モジュールと、
前記補償決定モジュールによって決定された前記少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項と前記複数の入力データグループとに基づいて、目標部分積配列を決定するための部分積配列決定モジュールと、
前記部分積配列決定モジュールによって決定された前記目標部分積配列に基づいて、各入力データグループの乗算演算結果を決定するための部分積処理モジュールと、を備える、
ことを特徴とする演算装置。
【請求項10】
請求項1~5のいずれか1項に記載の乗算器の演算方法を実行するためのコンピュータープログラムが記憶される、
ことを特徴とするコンピュータ可読な記憶媒体。
【請求項11】
プロセッサと、
前記プロセッサが実行可能な命令を記憶するためのメモリと、備え、
前記プロセッサは、前記メモリから前記実行可能な命令を読み取って実行することにより、請求項1~5のいずれか1項に記載の乗算器の演算方法を実現する、
ことを特徴とする電子機器。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、2023年4月27日に出願された、出願番号が202310468468.2である中国専利出願の優先権を主張し、その内容の全てが参照により本明細書に組み込まれる。
【0002】
本開示は、データ処理の技術分野に関し、具体的には、乗算器の演算方法、演算装置、電子機器および記憶媒体に関する。
【背景技術】
【0003】
マイクロプロセッサチップにおいて、乗算器は、デジタル信号処理の中核である。乗算器の速度と面積の最適化は、マイクロプロセッサ全体の性能に対して非常に重要である。また、乗算器の計算精度の多様性は、マイクロプロセッサが処理可能なアルゴリズムの範囲を決定するため、乗算器の計算精度の多様性も、マイクロプロセッサの性能に対して非常に重要である。
【0004】
上記課題を解決するために、本開示を提出する。本開示の実施例は、乗算器の演算方法、演算装置、電子機器および記憶媒体を提供することにより、多精度の乗算演算を実現し、ハードウェアリソースの消費量とハードウェア面積とを削減することができる。
【発明の概要】
【発明が解決しようとする課題】
【0005】
通常、1つの乗算器は、1種類の精度の乗算演算を計算する。関連する方案においては、複数の乗算器を組み合わせて、この1種類の精度以外の他の精度の乗算演算を実現することにより、多精度の乗算演算を実現する。しかしながら、複数の乗算器を組み合わせることは、ハードウェアリソースの消費量が多く、面積のオーバーヘッドが大きいという問題がある。
【課題を解決するための手段】
【0006】
本開示の第1の態様に係る乗算器の演算方法は、乗算器の複数の入力データグループおよび乗算器の符号化方式を決定するステップと、複数の入力データグループにおける少なくとも1つの下位ビット入力データグループを決定するステップと、少なくとも1つの下位ビットデータグループや符号化方式に基づいて、少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項を決定するステップと、少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項および複数の入力データグループに基づいて、目標部分積配列を決定するステップと、目標部分積配列に基づいて、各入力データグループの乗算演算結果を決定するステップと、を含む。
【0007】
本開示の第2の態様に係る演算装置は、補償決定モジュールと、部分積配列決定モジュールと、部分積処理モジュールと、を備える。補償決定モジュールは、乗算器の複数の入力データグループおよび乗算器の符号化方式を決定し、複数の入力データグループにおける少なくとも1つの下位ビット入力データグループを決定し、少なくとも1つの下位ビットデータグループ及び符号化方式に基づいて、少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項を決定するためのものである。
【0008】
部分積配列決定モジュールは、補償決定モジュールによって決定された少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項と複数の入力データグループとに基づいて、目標部分積配列を決定するためのものである。部分積処理モジュールは、部分積配列決定モジュールによって決定された目標部分積配列に基づいて、各入力データグループの乗算演算結果を決定するためのものである。
【0009】
本開示の第3の態様に係るコンピュータ可読記憶媒体は、上記の第1の態様に係る乗算器の演算方法を実行するためのコンピュータープログラムを記憶する。
【0010】
本開示の第4の態様に係る電子機器は、プロセッサと、プロセッサにより実行可能な命令が記憶されるメモリと、を備える。プロセッサは、メモリから実行可能命令を読み出して実行することにより、上記の第1の態様に係る乗算器の演算方法を実現する。
【0011】
本開示の第5の態様は、コンピュータプログラム製品を提供し、コンピュータプログラム製品におけるコンピュータプログラム命令がプロセッサにより実行されると、上記の第1の態様に係る乗算器の演算方法が実行される。
【発明の効果】
【0012】
本開示に係る乗算器の演算方法、装置、電子機器および記憶媒体によれば、目標部分積配列(Partial Product Array、PPA)に少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項を追加すると、目標PPAには、各下位ビット入力データグループに対応するサブPPAだけでなく、各下位ビット入力データグループに対応する桁上げ補償項も含まれる。さらに、目標PPAの累計プロセスでは、目標PPAにおける各下位ビット入力データグループに対応する桁上げ補償項は、その下位ビット入力データグループに対応するサブPPAが累計される際の桁上げを相殺することができ、各下位ビット入力データグループに対応するサブPPAが累計される際の桁上げは、各下位ビット入力データグループに対応する上位ビット入力データグループの乗算演算結果に影響を与えない。これにより、複数の入力データグループにおける、各下位ビット入力データグループに対応する上位ビット入力データグループの乗算演算結果の正確性を確保することができる。また、複数の入力データグループにおける少なくとも1つの下位ビット入力データグループの乗算演算結果も正確であるため、各入力データグループの乗算演算結果は正確であり、多精度の乗算演算を実現することができる。さらに、本開示に係る乗算器の演算方法は、複数の乗算器を組み合わせる必要がなく、1つの乗算器で多精度の乗算演算を実現することができるため、ハードウェアリソースの消費量とハードウェア面積とを削減することができる。
【図面の簡単な説明】
【0013】
図1】本開示に係る乗算器の演算方法の第1の概略フローチャートである。
図2】本開示に係る1つの入力データグループに対応する目標PPAの概略図である。
図3】本開示に係る複数の入力データグループに対応する目標PPAの概略図である。
図4】本開示に係る乗算器の演算方法の第2の概略フローチャートである。
図5】本開示に係る乗算器の演算方法の第3の概略フローチャートである。
図6】本開示に係る乗算器の演算方法の第4の概略フローチャートである。
図7】本開示に係る乗算器の演算方法の第5の概略フローチャートである。
図8】本開示に係る電子機器の第1の構造概略図である。
図9】本開示に係る他の、複数の入力データグループに対応する目標PPAの概略図である。
図10】本開示に係る複数の入力データグループに対して乗算器の演算方法を実行する概略フローチャートである。
図11】本開示に係る他の、複数の入力データグループに対して乗算器の演算方法を実行する概略フローチャートである。
図12】本開示に係る演算装置の第1の構造概略図である。
図13】本開示に係る演算装置の第2の構造概略図である。
図14】本開示に係る演算装置の第3の構造概略図である。
【発明を実施するための形態】
【0014】
以下、本開示を説明するために、図面を参照しながら本開示の実施例を詳細に説明する。説明される実施例は、本開示のすべての実施例ではなく、本開示の実施例の一部にすぎず、本開示は、例示的な実施例に制限を受けない。
【0015】
本実施例に説明される部品およびステップの相対的な配置、数式、および数値は、別段の説明がない限り、本開示の範囲を限定するものではない。
【0016】
以下、「第1」や「第2」という用語は、説明のためのもののみであり、相対的な重要性を指示するか暗示するためのものではなく、示される技術的特徴の数を内包するものでもない。よって、「第1」や「第2」付きの特徴は、1つまたは複数の該当特徴を備えることを明示または暗示することができる。本開示の説明において、別段の説明がない限り、「複数」とは、2つまたは2つ以上を意味する。「Aおよび/またはB」には、Aのみ含むことと、Bのみ含むことと、AとBとの組み合わせと、が含まれる。
(出願の概要)
【0017】
多精度の乗算演算を実現するために、関連する方案には、1つの乗算器で1種類の低精度の乗算演算を計算することもあり、複数の乗算器の組み合わせで高精度の乗算演算を計算することもある。具体的には、関連する方案においては、下記のようなことを提出している。すなわち、高精度の2つのデータをいずれも下位ビットデータと上位ビットデータとに分割し、低精度の乗算演算を実行可能な複数の乗算器を使用して、両下位ビットデータの乗算演算結果、下位ビットデータと上位ビットデータとの乗算演算結果、および両上位ビットデータの乗算演算結果をそれぞれ計算し、そして、重みに従って複数の乗算器の乗算演算結果を累計して、高精度の2つのデータの乗算演算結果を取得する。低精度の乗算器により低精度の乗算演算と高精度の乗算演算とを実現する。
【0018】
例示的に、int16の被乗数Aと乗数Bとを例とし、被乗数A=a1514…a、乗数B=b1514…bである。関連する方案では、被乗数Aは、2つのint8のデータ(すなわち、A、A)に分割され、乗数Bも、2つのint8のデータ(B、B)に分割される。ここで、A=A×2+A、A=a1514…a、A=a…aである。B=B×2+B、B=b1514…b、B=b…bである。そして、関連する方案は、int8の乗算演算を実行可能な4つの乗算器を使用して、AとBとの乗算演算結果、AとBとの乗算演算結果、AとBとの乗算演算結果およびAとBとの乗算演算結果をそれぞれ計算し、重みに従って4つの乗算演算結果を累計して、被乗数Aと乗数Bとの乗算演算結果を取得する。被乗数Aと乗数Bとの乗算演算結果は、次の式(1)に示される。
【0019】
A×B=A×B×216+(A×B+A×B)×2+A×B (1)
【0020】
関連する方案は、4つのint8の乗算器を組み合わせてint16の乗算演算を実現した。
【0021】
上述の関連する方案は、低精度および高精度などの多精度の乗算演算を実現することはできるが、高精度の乗算演算を実現するには、複数の低精度の乗算器を組み合わせる必要がある。複数の乗算器を使用することは、ハードウェアリソースの消費量が多く、面積のオーバーヘッドが大きいという問題がある。
(例示的なシステム)
【0022】
本開示の実施例に係る乗算器の演算方法は、リアルタイム画像処理やデジタル信号処理などの複数のシナリオに広く使用される。
【0023】
本開示の実施例に係る乗算器の乗算演算方法は、電子機器または演算装置により実行されることができる。演算装置は、電子機器内に設けられ、電子機器の一部(例えば、CPU、マイクロプロセッサチップ、または乗算器)になることができる。
(例示的な方法)
【0024】
図1は、本開示のある例示的な実施例に係る乗算器の演算方法の概略フローチャートである。本実施例に係る乗算器の演算方法は、電子機器に適用されることができ、図1に示すように、次のようなステップS101~ステップS105を含むことができる。
【0025】
ステップS101では、乗算器の複数の入力データグループおよび乗算器の符号化方式を決定する。
【0026】
電子機器は、2つのデータに対して乗算演算を実行する乗算器を含むことができる。電子機器は、複数の入力データグループを取得し、この複数の入力データグループを乗算器に送信し、その後、乗算器で複数の入力データグループに対して演算方法を実行することができる。ここで、複数の入力データグループのそれぞれは、1つの乗数と1つの被乗数とを含むことができる。乗数および被乗数は、符号付き数でも符号なし数でもよい。
【0027】
いくつかの実施例において、電子機器内の乗算器が実行可能な最大のデータビット幅は、Nであり、該当乗算器は、複数のデータビット幅の乗算演算(多精度の乗算演算と言える)を実行することができる。該当乗算器が実行可能な複数のデータビット幅は、いずれもNより小さい。すなわち、該当乗算器は、データビット幅がNである2つのデータの乗算演算と、少なくとも1つのデータのデータビット幅が別のデータビット幅である2つのデータの乗算演算と、を計算することができる。別のデータビット幅は、Nより小さい。ここで、Nは、正の整数(例えば、32、16または8)である。
【0028】
いくつかの実施例において、電子機器は、ユーザが入力した複数の入力データグループを取得することができる。または、電子機器は、複数の入力データグループを生成することができる。
【0029】
例示的に、電子機器が取得した複数の入力データグループは、1つの乗数(第1の乗数と言える)と1つの被乗数(第1の被乗数と言える)に分割されることができる。第1の乗数は、複数の第2の乗数によって構成される。第1の被乗数は、複数の第2の被乗数によって構成される。複数の第2の乗数と複数の第2の被乗数とは、1対1に対応し、1つの第2の乗数とそれに対応する1つの第2の被乗数とは、1つの入力データグループを構成する。ここで、第1の乗数のデータビット幅と第1の被乗数のデータビット幅は、いずれもN以下である。第2の乗数のデータビット幅は、第1の乗数のデータビット幅以下であり、第2の被乗数のデータビット幅は、第1の被乗数のデータビット幅以下である。
【0030】
いくつかの実施例において、電子機器は、複数の入力データグループを取得し、複数の入力データグループのそれぞれに含まれる第2の乗数と第2の被乗数とのデータビット幅は、同じであっても異なっていてもよい。いずれか1つの入力データグループにおける第2の乗数と第2の被乗数とのデータビット幅が異なる場合、電子機器は、該当入力データグループを前処理して、前処理された入力データグループを取得することができ、その後、電子機器は、いずれか1つの入力データグループを、前処理された入力データグループに更新する。ここで、前処理された入力データグループにおける第2の乗数と第2の被乗数とのデータビット幅は同じであり、前処理前後の入力データグループの数値の大きさは同じである(前処理前後の第2の乗数の数値の大きさは同じであることと、前処理前後の第2の被乗数の数値の大きさは同じであること、とを含む)。
【0031】
さらに、電子機器は、更新された複数の入力データグループを取得し、更新された複数の入力データグループに対してS102を実行し続けることができる。更新された複数の入力データグループのそれぞれに含まれる第2の乗数と第2の被乗数とのデータビット幅は、同じである。
【0032】
例えば、1つの入力データグループには、データビット幅が8ビット(bit)である1つの乗数とデータビット幅が16ビットである1つの被乗数が含まれ、電子機器は、該当入力データグループにおける乗数を前処理して、データビット幅が16ビットである乗数を取得することができる。前処理は、乗数の最上位ビットより上位のビットに8ビットの数値を追加することを含み、8ビットの数値は、いずれも0である。
【0033】
本開示の実施例において、含まれる第2の乗数と第2の被乗数とのデータビット幅が同じである入力データグループを例として、本開示の実施例に係る乗算器の演算方法を説明する。
【0034】
いくつかの実施例において、複数の入力データグループにおける異なる入力データグループのデータビット幅は、同じであっても異なっていてもよい。各入力データグループのデータビット幅は、入力データグループに含まれる第2の乗数のデータビット幅を指してもよいし、入力データグループに含まれる第2の被乗数のデータビット幅を指してもよい。例えば、複数の入力データグループには、2つの8ビットの入力データグループが含まれる。別の例として、複数の入力データグループには、1つの8ビットの入力データグループと、1つの16ビットの入力データグループが含まれることもできる。
【0035】
いくつかの実施例において、電子機器は、乗算器の符号化方式を予め記憶しておくことができる。例えば、乗算器の符号化方式は、基数4のブース(Booth)符号化であってもよいし、基数8のブース符号化であってもよい。
【0036】
乗算器が1つの乗数と1つの被乗数との乗算演算結果を計算する動作原理は、以下の通りである。乗数の1桁目の数値を被乗数に含まれているすべての数値を乗算させて、1桁目の数値に対応する1組の積項を生成し、乗数の2桁目の数値を被乗数に含まれているすべての数値を乗算させて、2桁目の数値に対応する1組の積項を生成し、乗数の他の桁の数値については、このように類推する。そして、この乗数に含まれているすべての数値に対応する積項(複数組の積項と言える)を配列して1つの部分積配列(Partial Product Array、PPA)を取得する。ここで、「乗数に含まれているすべての数値に対応する積項を配列する」のプロセスは、2桁目の数値に対応する1組の積項を、1桁目の数値に対応する1組の積項に比べて左に1桁移動すること、3桁目の数値に対応する1組の積項を、2桁目の数値に対応する1組の積項に比べて左に1桁移動すること、他の積項についてはこのように類推することを含む。最後に、部分積配列を累計して、乗数と被乗数との乗算演算結果を取得する。
【0037】
ここで、乗数および被乗数は、いずれも二進数であることができる。乗数の1桁の数値が1である場合、この1桁の数値に対応する1組の積項は、被乗数である。乗数の1桁の数値が0である場合、この1桁の数値に対応する1組の積項は、すべて0である。
【0038】
また、ブース符号化は、乗数を変換して、変換された乗数に含まれている非ゼロ値の数を減らし、これにより、部分積の数が減らされ、PPAのサイズが小さくなる。言い換えれば、電子機器内の乗算器は、ブース符号化を使用してPPAの生成を加速する。また、基数が異なるブース符号化によって減少可能な部分積の数も異なり、例えば、基数4のブース符号化(すなわち、基数4-ブース符号化)は、PPAに含まれている部分積の行数を半分に減らすことができ、基数8のブース符号化(すなわち、基数8-ブース符号化)は、PPAに含まれている部分積の行数を約1/3減らすことができる。
【0039】
例示的に、いずれも符号付きデータであるint16の乗数A16とint16の被乗数B16とを例とし、電子機器は、基数4-ブース符号化を採用して乗数A16と被乗数B16とのPPAを生成することができる。図2に示すように、図2に示すPPAにおけるすべての黒点は、積項を示し、sは、乗数A16をブース符号化して得られる符号ビットを示し、eは、乗数A16の各ビットの数値に対応する1組の積項の符号ビットを示し、 ̄eは、PPAの1行目にあるeを反転して得られる数値を示す。図2におけるすべてのsの数値は、1または0であり、PPAの異なる行にあるsの数値は、同じであっても異なっていてもよい。図2におけるすべてのeの数値は、1または0であり、PPAの異なる行にあるeの数値は、同じであっても異なっていてもよい。
【0040】
int16の乗数A16と被乗数B16とについて、電子機器が基底4-ブース符号化を採用して生成したPPAに含まれている積項の行数は8行である。電子機器は、4-ブースを採用して、PPAに含まれている積項の行数を16行から8行に減らす。
【0041】
ステップS102では、複数の入力データグループにおける少なくとも1つの下位ビット入力データグループを決定する。
【0042】
電子機器は、複数の入力データグループにおける各入力データグループの位置に基づいて、複数の入力データグループから少なくとも1つの下位ビット入力データグループを決定することができる。ここで、少なくとも1つの下位ビット入力データグループには、複数の入力データグループにおける最上位ビット入力データグループ以外の入力データグループが含まれる。最上位ビット入力データグループは、複数の入力データグループのうち最上位ビットに位置する入力データグループである。
【0043】
いくつかの実施例において、複数の入力データグループにおける各入力データグループの位置は、複数の入力データグループにおける各入力データグループの番号(例えば、第1位、第2位、および第3位など)であることができる。複数の入力データグループにおける各入力データグループの番号は、その入力データグループが複数の入力データグループにおいて占めるビットの順序を示す。複数の入力データグループにおける各入力データグループの番号が小さいほど、その入力データグループが複数の入力データグループにおいて占めるビットが下位になる。
【0044】
例示的に、データビット幅が32ビットである第1の乗数A32とデータビット幅が32ビットである第1の被乗数B32とを含む複数の入力データグループを例とし、A32=a3130…a、B32=b3130…bである。第1の乗数A32には、複数の第2の乗数が含まれ、複数の第2の乗数は、それぞれデータビット幅が16ビットである第2の乗数A16-1、データビット幅が8ビットである第2の乗数A8-2及びデータビット幅が8ビットである第2の乗数A8-3である。A16-1=a1514…a、A8-2=a2322…a1716、A8-3=a3130…a2524である。複数の入力データグループにおけるA16-1、A8-2およびA8-3の番号(すなわち、第1の乗数A32におけるA16-1、A8-2およびA8-3の番号)は、それぞれ第1位、第2位および第3位である。
【0045】
第1の乗数B32には、複数の第2の被乗数が含まれ、複数の第2の被乗数は、それぞれデータビット幅が16ビットである第2の被乗数B16-1、データビット幅が8ビットである第2の被乗数B8-2及びデータビット幅が8ビットである第2の被乗数B8-3である。B16-1=b1514…b、B8-2=b2322…b1716、B8-3=b3130…b2524である。複数の入力データグループにおけるB16-1、B8-2およびB8-3の番号(すなわち、第1の被乗数B32におけるB16-1、B8-2およびB8-3の番号)は、それぞれ第1位、第2位および第3位である。
【0046】
ここで、第1の乗数A32と第1の被乗数B32とについて、少なくとも1つの下位ビット入力データグループに、第2の乗数A16-1と第2の被乗数B16-1とによって構成される下位ビット入力データグループと、第2の乗数A8-2と第2の被乗数B8-2とによって構成される他の下位ビット入力データグループとが含まれることを確定することができる。
【0047】
いくつかの実施例において、複数の入力データグループを取得することに加えて、電子機器は、1つの入力信号を取得することができ、入力信号は、複数の入力データグループに含まれる各入力データグループのデータビット幅(各入力データグループのデータ精度と言える)を示す。入力信号には、複数組の数値が含まれることができ、複数組の数値が入力信号において占めるビットは異なり、入力信号における各組の数値の位置は、複数の入力データグループにおける各組の数値に対応する1つの入力データグループの位置と同じである(例えば、入力信号における各組の数値の番号は、複数の入力データグループにおける各組の数値に対応する1つの入力データグループの番号と同じである)。さらに、電子機器は、入力信号に基づいて、複数の入力データグループにおける各入力データグループの位置を決定することができる。
【0048】
ここで、各組の数値には、1つの数値または複数の数値が含まれることができる。各組の数値は、該当組の数値に対応する1つの入力データグループのデータビット幅を示すことができる。
【0049】
例示的に、入力信号dxlpは、データビット幅が8ビットであるデータであることができ、dxlp=d…dである。入力信号dxlpの1ビット目と2ビット目との数値(すなわち、dの数値)は、複数の入力データグループにおける1番目の入力データグループのデータビット幅を示す。入力信号dxlpの3ビット目と4ビット目との数値(すなわち、dの数値)は、複数の入力データグループにおける2番目の入力データグループのデータビット幅を示す。入力信号dxlpの5ビット目と6ビット目との数値(すなわち、dの数値)は、複数の入力データグループにおける3番目の入力データグループのデータビット幅を示す。入力信号dxlpの7ビット目と8ビット目との数値(すなわち、dの数値)は、複数の入力データグループにおける4番目の入力データグループのデータビット幅を示す。
【0050】
ここで、入力信号dxlpにおける1つの入力データグループのデータビット幅を示す数値とこのデータビット幅とは、同じであっても異なっていてもよい。例えば、d=01は、複数の入力データグループにおける1番目の入力データグループのデータビット幅が8ビットであることを示す。別の例として、d=00は、複数の入力データグループにおける4番目の入力データグループのデータビット幅が0ビットであることを示し、これにより、複数の入力データグループには、4番目の入力データグループが含まれていないことが分かる。
【0051】
上記の例は、入力信号dxlpの2ビットで1つの入力データグループのデータビット幅を示すことを例として入力信号dxlpを説明したが、入力信号dxlpにおける他の個数の複数のビット(例えば、3ビット、4ビットなど)で1つの入力データグループのデータビット幅を示すこともでき、複数のビットの個数が多いほど、複数のビットが示す1つの入力データグループのデータグループ幅の種類が多くなる。
【0052】
ステップS103では、少なくとも1つの下位ビット入力データグループおよび符号化方式に基づいて、少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項を決定する。
【0053】
電子機器が1つの乗算器で複数の入力データグループの乗算演算結果を計算するプロセスでは、複数の入力データグループに対応するPPAを取得することができ、PPAには、各入力データグループに対応するサブPPA(各下位ビット入力データグループに対応するサブPPA)が含まれることができ、各入力データグループに対応するサブPPAは、入力データグループを乗算して得られるPPAである。複数の入力データグループにおける各下位ビット入力データグループに対応するサブPPAが累計される際に桁上げが発生し、この桁上げは、各下位ビット入力データグループに対応する1つの上位ビット入力データグループの乗算演算結果に影響を与える。よって、電子機器は、複数の入力データグループにおける少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項を決定する。各下位ビット入力データグループに対応する桁上げ補償項は、その下位ビット入力データグループに対応するサブPPAが累計される際の桁上げを相殺する。
【0054】
ここで、各下位ビット入力データグループに対応する1つの上位ビット入力データグループが複数の入力データグループにおいて占めるビットは、その下位ビット入力データグループが複数の入力データグループにおいて占めるビットより上位であり、その上位ビット入力データグループが複数の入力データグループにおいて占めるビットは、その下位ビット入力データグループが複数の入力データグループにおいて占めるビットと隣接する。例えば、前記第2の乗数A16-1と前記第2の被乗数B16-1によって構成される1つの下位ビット入力データグループに対応する1つの上位入力データグループには、前記第2の乗数A8-2と前記第2の被乗数B8-2が含まれる。
【0055】
各下位ビット入力データグループに対応する桁上げ補償項は、その下位ビット入力データグループに対応するサブPPAが累計される際の桁上げを相殺するために使用され、その下位ビット入力データグループに対応するサブPPAは、その下位ビット入力データグループに含まれる第2の乗数および第2の被乗数と、そのサブPPAの生成に使用される乗算器の符号化方式とに依存する。よって、電子機器は、各下位ビット入力データグループと乗算器の符号化方式とに基づいて、各下位ビット入力データグループに対応する桁上げ補償項を決定することができる。
【0056】
例示的に、複数の下位ビット入力データグループには、いずれも符号付きデータであるint16の第1の乗数A16とint16の第1の被乗数B16が含まれ、第1の乗数A16には、2つの第2の乗数(すなわち、第2の乗数A8-1および第2の乗数A8-1)が含まれ、第1の被乗数B16には、2つの第2の被乗数(すなわち、第2の被乗数B8-1および第2の被乗数B8-1)が含まれることを例とし、A8-1=a…a、A8-2=a1514…a、B8-1=b…b、B8-2=b1514…bである。A8-1とA8-2との第1の乗数A16における番号は、それぞれ第1位と第2位である。B8-1とB8-2との第1の被乗数B16における番号は、それぞれ第1位と第2位である。第2の乗数A8-1および第2の被乗数B8-1によって構成される入力データグループ(第1位入力データグループと言える)と、第2の乗数A8-2および第2の被乗数B8-2によって構成される別の入力データグループ(第2位入力データグループと言える)とがある。第1位入力データグループは、下位ビット入力データグループであり、第1位入力データグループに対応する上位ビット入力データグループは、第2位入力データグループである。
【0057】
電子機器は、基数4-ブース符号化を使用して、第1の乗数A16と第1の被乗数B16とのPPA(初期PPAと呼ぶことができる)を生成することができる。初期PPAには、第1位入力データグループに対応するサブPPAと、第2位入力データグループに対応するサブPPAと、が含まれる。
【0058】
図3を参照すると、第1位入力データグループに対応するサブPPAには、1行目から4行目のすべての黒点で示される積項と、1行目から4行目のすべての符号ビットと、が含まれる。1行目から4行目までのすべての符号ビットには、s、e、 ̄eおよび1が含まれる。ここで、sは、第2の乗数A8-1をブース符号化して得られる符号ビットを示し、eは、第2の乗数A8-1の各ビットの数値に対応する1組の積項の符号ビットを示し、 ̄eは、PPAの1行目にあるeを反転して得られる数値を示す。図3におけるすべてのsの数値は、1または0であり、PPAの異なる行にあるsの数値は、同じであっても異なっていてもよい。図3におけるすべてのeの数値は、1または0であり、PPAの異なる行にあるeの数値は、同じであっても異なっていてもよい。
【0059】
図3を参照すると、第2位入力データグループに対応するサブPPAには、5行目から8行目のすべての黒点で示される積項と、5行目から8行目のすべての符号ビットと、が含まれる。5行目から8行目までのすべての符号ビットには、s、e、 ̄eおよび1が含まれる。ここで、sは、第2の乗数A8-2をブース符号化して得られる符号ビットを示し、eは、第2の乗数A8-2の各ビットの数値に対応する1組の積項の符号ビットを示し、 ̄eは、PPAの5行目にあるeを反転して得られる数値を示す。図3におけるすべてのsの数値は、1または0であり、PPAの異なる行にあるsの数値は、同じであっても異なっていてもよい。図3におけるすべてのeの数値は、1または0であり、PPAの異なる行にあるeの数値は、同じであっても異なっていてもよい。
【0060】
さらに、第2の乗数A8-1および第2の被乗数B8-1とによって構成される下位ビット入力データグループに対して、電子機器は、その下位ビット入力データグループに対応する桁上げ補償項を決定することができる。下位ビット入力データグループに対応する桁上げ補償項は、その下位ビット入力データグループに対応するサブPPAが累計される際の桁上げを相殺する。
【0061】
ステップS104では、少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項と複数の入力データグループとに基づいて、目標部分積配列を取得する。
【0062】
電子機器は、複数の入力データグループを使用して初期PPAを生成し、この初期PPAに少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項を組み合わせて、目標部分積配列(すなわち、目標PPA)を取得することができる。
【0063】
例えば、電子機器は、前記第1の乗数A16と前記第1の被乗数B16とを使用して初期PPAを生成し、この初期PPAに前記第2の乗数A8-1と前記第2の被乗数B8-1とによって構成される下位ビット入力データグループに対応する桁上げ補償項を追加して、図3に示す目標PPAを取得する。図3に示す目標PPAにおけるEは、第2の乗数A8-1と第2の被乗数B8-1とによって構成される下位ビット入力データグループに対応する桁上げ補償項である。
【0064】
第2の乗数A8-1および第2の被乗数B8-1によって構成される下位ビット入力データグループに対応するサブPPAが累計される際の桁上げの位置は、図3に示す桁上げ補償項Eの位置にある。桁上げ補償項Eは、下位ビット入力データグループに対応するサブPPAが累計される際の桁上げを相殺することができ、下位ビット入力データグループに対応するサブPPAが累計される際の桁上げは、下位ビット入力データグループに対応する上位ビット入力データグループ(すなわち、前記第2の乗数A8-2と前記第2の被乗数B8-2とによって構成される入力データグループ)の乗算演算結果に影響を与えない。これにより、上位ビット入力データグループの乗算演算結果の正確性を確保する。また、下位ビット入力データグループの乗算演算結果も正確であるため、各入力データグループの乗算演算結果は正確であり、多精度の乗算演算を実現することができる。
【0065】
ステップS105では、目標部分積配列に基づいて、各入力データグループの乗算演算結果を決定する。
【0066】
電子機器は、目標PPAを累計して、累計結果を得ることができる。累計結果は、各入力データグループの乗算演算結果の結合によって構成されることができ、累計結果における各入力データグループの乗算演算結果の位置(例えば、累積結果における各入力データグループの乗算演算結果の番号)は、複数の入力データグループにおける各入力データグループの位置(例えば、複数の入力データグループにおける各入力データグループの番号)と同じである。
【0067】
複数の入力データグループのデータビット幅は、累計結果のデータビット幅と異なり、例えば、複数の入力データグループのデータビット幅は16であり、その複数の入力データグループに対応する累計結果のデータビット幅は32である。よって、各入力データグループが複数の入力データグループにおいて占めるビットは、その入力データグループの乗算演算結果が累計結果において占めるビットと異なることが分かる。
【0068】
例示的に、複数の入力データグループにおけるある入力データグループの番号は、第1位であり、その入力データグループは、複数の入力データグループにおける1ビット目から16ビット目に位置する。累計結果におけるその入力データグループの乗算演算結果の番号も第1位であるが、その入力データグループの乗算演算結果は、累計結果における1ビット目から32ビット目に位置する。
【0069】
電子機器が目標PPAに少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項を追加すると、目標PPAには、各下位ビット入力データグループに対応するサブPPAだけでなく、各下位ビット入力データグループに対応する桁上げ補償項も含まれる。さらに、電子機器が目標PPAを累計するプロセスでは、目標PPAにおける各下位ビット入力データグループに対応する桁上げ補償項は、その下位ビット入力データグループに対応するサブPPAが累計される際の桁上げを相殺することができ、各下位ビット入力データグループに対応するサブPPAが累計される際の桁上げは、各下位ビット入力データグループに対応する上位ビット入力データグループの乗算演算結果に影響を与えない。これにより、複数の入力データグループにおける、各下位ビット入力データグループに対応する上位ビット入力データグループの乗算演算結果の正確性を確保することができる。また、複数の入力データグループにおける少なくとも1つの下位ビット入力データグループの乗算演算結果も正確であるため、各入力データグループの乗算演算結果は正確であり、多精度の乗算演算を実現することができる。さらに、本開示に係る乗算器の演算方法は、複数の乗算器を組み合わせる必要がなく、1つの乗算器で多精度の乗算演算を実現することができるため、ハードウェアリソースの消費量とハードウェア面積とを削減するることができる。
【0070】
また、上記の関連する方案が複数の低精度の乗算器を使用して高精度の乗算演算を実現するプロセスでは、高精度の乗算演算結果を得るために、複数の乗算器から出力される複数の乗算演算結果を重みに従って累計する必要がある。複数の乗算演算結果を重みに従って累計するプロセスでは、異なる重みの乗算演算結果をシフトする必要がある(例えば、関連する方案において、A×Bの乗算演算結果をシフトしてA×B×216を取得し、A×Bの乗算演算結果をシフトしてA×B×2を取得し、A×Bの乗算演算結果をシフトしてA×B×2を取得する)。関連する方案によるシフト操作は、高精度の乗算演算結果を取得するための時間を増やす。本開示の実施例において、電子機器は、目標PPAを累計するだけで各入力データグループの乗算演算結果(高精度の乗算演算結果を含む)を取得することができ、シフト操作を行う必要がなく、各入力データグループの乗算演算結果(高精度積の乗算演算結果を含む)を取得するための時間を減らすことができる。
【0071】
いくつかの実施例において、電子機器内の乗算器が実行可能な最大のデータビット幅は、Nであるため、電子機器は、複数の入力データグループを決定した後、各入力データグループのデータビット幅の合計がN以下(すなわち、Nより小さいまたはNと同じであること)であるかどうかを判定することができ、各入力データグループのデータビット幅の合計がN以下である場合、電子機器は、複数の入力データグループに対して演算方法を実行し続け、各入力データグループのデータビット幅の合計がNより大きい場合、電子機器は、プロセスを終了することができる。
【0072】
例示的に、本開示の実施例に係る乗算器の演算方法におけるステップS102は、各入力データグループのデータビット幅の合計がN以下であることに応じて、複数の入力データグループにおける少なくとも1つの下位ビット入力データグループを決定するステップを含むことができる。
【0073】
電子機器は、実行可能な最大のデータビット幅がNビットである1つの乗算器によって、データビット幅がNビット未満の1つの入力データグループに対して乗算演算を実行することができ、また、データビット幅の合計がNビット未満の複数の入力データグループに対しても乗算演算を実行することができる。
【0074】
いくつかの実施例において、各下位ビット入力データグループに対応するサブPPAが累計される際の桁上げを相殺するために、各下位ビット入力データグループに対応するサブPPAが累計される際の桁上げの位置に基づいて、各下位ビット入力データグループに対応する桁上げ補償項の補償位置を設定し、各下位ビット入力データグループに対応するサブPPAが累計される際の桁上げの数値に基づいて、各下位ビット入力データグループに対応する桁上げ補償項の補償値を設定する必要がある。
【0075】
図4に示すように、上記図1に示す実施例に加えて、本開示の実施例に係る乗算器の演算方法におけるステップS103は、以下のステップS201~ステップS202を含むことができる。
【0076】
ステップS201では、符号化方式と、少なくとも1つの下位ビット入力データグループのデータビット幅と、複数の入力データグループにおける少なくとも1つの下位ビット入力データグループの位置と、に基づいて、少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項の位置を決定する。
【0077】
電子機器は、乗算器の符号化方式と、各下位ビット入力データグループに含まれる第2の乗数のデータビット幅(すなわち、各下位ビット入力データグループのデータビット幅)と、複数の入力データグループにおける各下位ビット入力データグループの位置と、に基づいて、各下位ビット入力データグループに対応するサブPPAの行数を決定することができる。そして、電子機器は、各下位ビット入力データグループに対応するサブPPAの行数に基づいて、各下位ビット入力データグループに対応する桁上げ補償項の補償位置を決定する。
【0078】
いくつかの実施例において、電子機器は、乗算器の符号化方式と、少なくとも1つの下位ビット入力データグループのデータビット幅と、複数の入力データグループにおける少なくとも1つの下位ビット入力データグループの位置と、に基づいて、少なくとも1つの下位ビット入力データグループにそれぞれ対応するサブPPAの最終行の位置を決定し、各下位ビット入力データグループに対応するサブPPAの最終行の位置は、その下位ビット入力データグループに対応する桁上げ補償項の位置である。図5に示すように、上記図4に示す実施例に加えて、本実施例に係る乗算器の演算方法におけるステップS201は、以下のステップS301~ステップS302を含むことができる。
【0079】
ステップS301では、符号化方式と、少なくとも1つの下位ビット入力データグループのデータビット幅と、複数の入力データグループにおける少なくとも1つの下位ビット入力データグループの位置と、に基づいて、少なくとも1つの下位ビット入力データグループに対応するサブ部分積配列の最終行の位置を決定する。
【0080】
ここで、各下位ビット入力データグループに対応するサブPPAの最終行の位置は、複数の入力データグループに対応するPPAにおけるそのサブPPAの最終行の行数を指すことができる。
【0081】
いくつかの実施例において、複数の入力データグループにおける各入力データグループの位置は、複数の入力データグループにおける各入力データグループの番号を指すことができる。さらに、電子機器は、少なくとも1つの下位ビット入力データグループのデータビット幅および複数の入力データグループにおける少なくとも1つの下位ビット入力データグループの位置に基づいて、少なくとも1つの下位ビット入力データグループが複数の入力データグループにおいて占めるビットの位置を決定し、乗算器の符号化方式および少なくとも1つの下位ビット入力データグループが複数の入力データグループにおいて占めるビットの位置に基づいて、各下位ビット入力データグループに対応するサブPPAの最終行の位置を決定する。
【0082】
ここで、複数の入力データグループには、第1の乗数および第1の被乗数が含まれることができ、各下位ビット入力データグループには、第2の乗数および第2の被乗数が含まれることができる。各下位ビット入力データグループが複数の入力データグループにおいて占めるビットの位置は、第2の乗数が第1の乗数において占めるビットの位置を指してもよいし、第2の被乗数が第1の被乗数において占めるビットの位置を指してもよい。
【0083】
例示的に、複数の入力データグループは、前記第1の乗数A32と前記第1の被乗数B32とであり、複数の入力データグループにおける少なくとも1つの下位ビット入力データグループには、前記第2の乗数A16-1および前記第2の被乗数B16-1によって構成される1つ目の下位ビット入力データグループと、第2の乗数A8-2および第2の被乗数B8-2によって構成される2つ目の下位ビット入力データグループとが含まれることを例とし、電子機器は、この2つの下位ビット入力データグループのデータビット幅および複数の入力データグループにおけるこの2つの下位ビット入力データグループの番号に基づいて、この2つの下位ビット入力データグループが複数の入力データグループにおいて占めるビットの位置を決定する。ここで、1つ目の下位ビット入力データグループのデータビット幅は、16ビットであり、2つ目の下位ビット入力データグループのデータビット幅は、8ビットである。1つ目の下位ビット入力データグループは、複数の入力データグループにおける第1位にあり、2つ目の下位ビット入力データグループは、複数の入力データグループにおける第2位にある。2つ目の下位ビット入力データグループが複数の入力データグループにおいて占めるビットの位置は、17ビット目から24ビット目である。
【0084】
ここで、1つ目の下位ビット入力データグループが複数の入力データグループにおいて占めるビットの位置は、第2の乗数A16-1が第1の乗数A32において占めるビットの位置を指してもよいし、第2の被乗数B16-1が第1の被乗数B32において占めるビットの位置を指してもよい。2つ目の下位ビット入力データグループが複数の入力データグループにおいて占めるビットの位置は、第2の乗数A8-2が第1の乗数A32において占めるビットの位置を指してもよいし、第2の被乗数B8-2が第1の被乗数B32において占めるビットの位置を指してもよい。
【0085】
さらに、乗算器の符号化方式が基数4のブース符号化であることを例とし、電子機器は、基数4のブース符号化および1つ目の下位ビット入力データグループが複数の入力データグループにおいて占めるビットの位置が1ビット目から16ビット目であることに基づいて、1つ目の下位ビット入力データグループに対応するサブPPAの最終行の位置が8行目であることを決定することができる。同様に、電子機器は、基数4のブース符号化および2つ目の下位ビット入力データグループが複数の入力データグループにおいて占めるビットの位置が17ビット目から24ビット目であることに基づいて、2つ目の下位ビット入力データグループに対応するサブPPAの最終行の位置が12行目であることを決定することができる。
【0086】
ステップS302では、少なくとも1つの下位ビット入力データグループに対応するサブ部分積配列の最終行の位置に基づいて、少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項の補償位置を決定する。
【0087】
電子機器は、各下位ビット入力データグループに対応するサブPPAの最終行の位置が、その下位ビット入力データグループに対応する桁上げ補償項の補償位置であることを決定することができる。例えば、上記の1つ目の下位ビット入力データグループに対応するサブPPAの最終行の位置が8行目であると、1つ目の下位ビット入力データグループに対応する桁上げ補償項の補償位置は、複数の入力データグループに対応するPPAの8行目である。別の例として、上記の2つ目の下位ビット入力データグループに対応するサブPPAの最終行の位置が12行目であると、2つ目の下位ビット入力データグループに対応する桁上げ補償項の補償位置は、複数の入力データグループに対応するPPAの12行目である。
【0088】
各下位ビット入力データグループに対応するサブPPAが累計される際の桁上げは、サブPPAの最終行にある。よって、その下位ビット入力データグループに対応する桁上げ補償項がその下位ビット入力データグループに対応するサブPPAが累計される際の桁上げを相殺することがてきるように、その下位ビット入力データグループに対応する桁上げ補償項の補償位置は、サブPPAの最終行に設定される。
【0089】
ステップS202では、少なくとも1つの下位ビット入力データグループにおける各データの符号ビットの数値に基づいて、少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項の補償値を決定する。
【0090】
電子機器は、各下位ビット入力データグループにおける各データの符号ビットの数値に基づいて、各下位ビット入力データグループに対応する桁上げ補償項の補償値を決定することができる。ここで、各下位ビット入力データグループには、第2の乗数および第2の被乗数が含まれることができ、各下位ビット入力データグループにおける各データの符号ビットの数値には、第2の乗数の符号ビットの数値および第2の被乗数の符号ビットの数値が含まれることができる。
【0091】
例示的に、各下位ビット入力データグループにおける各データ(例えば、第2の乗数または第2の被乗数)には、符号ビットが含まれることができ、符号ビットの数値は、各データの符号の種類を示す。例えば、第2の乗数に含まれる符号ビットの数値が1であると、第2の乗数の符号の種類が負数であることを示す。別の例として、第2の乗数に含まれる符号ビットの数値が0であると、第2の乗数の符号の種類が正数であることを示す。
【0092】
いくつかの実施例において、電子機器は、各下位ビット入力データグループに含まれる各データの符号ビットの数値に基づいて、その下位ビット入力データグループに対応する桁上げ補償項の補償値を決定することができる。図5に示すように、上記図4に示す実施例に加えて、本実施例に係る乗算器の演算方法におけるステップS202は、以下のステップS303~ステップS304を含むことができる。
【0093】
ステップS303では、各下位ビット入力データグループにおける乗数と被乗数との符号ビットの数値に対してXNOR演算を実行して、XNOR演算後の数値を決定する。
【0094】
各下位ビット入力データグループには、1つの乗数(すなわち、第2の乗数)と1つの被乗数(すなわち、第2の被乗数)とが含まれる。電子機器は、第2の乗数の符号ビットの数値と第2の被乗数の符号ビットの数値とに対してXNOR演算を実行し、XNOR演算後の数値を決定することができる。ここで、第2の乗数に含まれる符号ビットの数値は、第2の乗数の符号の種類を示す。第2の被乗数に含まれる符号ビットの数値は、第2の被乗数の符号の種類を示す。
【0095】
例えば、第2の乗数に含まれる符号ビットの数値は、0または1である。第2の被乗数に含まれる符号ビットの数値は、0または1である。XNOR演算後の数値は、0または1である。ここで、0で示される符号の種類は正数であり、1で示される符号の種類は、負数である。
【0096】
例えば、電子機器は、0と1とに対してXNOR演算を実行すると、得られるXNOR演算後の数値は0である。別の例として、電子機器は、1と1とに対してXNOR演算を実行すると、得られるXNOR演算後の数値は1である。さらに別の例として、電子機器は、0と0とに対してXNOR演算を実行すると、得られるXNOR演算後の数値は1である。
【0097】
いくつかの実施例において、各下位ビット入力データグループのXNOR演算後の数値が示す符号の種類は、その下位ビット入力データグループの乗算演算結果の符号の種類と逆である。
【0098】
例えば、下位ビット入力データグループに含まれる第2の乗数の符号ビットの数値が示す第2の乗数の符号の種類が正数であり、この下位ビット入力データグループに含まれる第2の被乗数の符号ビットの数値が示す第2の被乗数の符号の種類が正数である場合、電子機器は、第2の乗数の符号ビットの数値と第2の被乗数の符号ビットの数値に対してXNOR演算を実行して、XNOR演算後の数値を決定した。その結果、このXNOR演算後の数値が示す符号の種類は、負数であり、下位ビット入力データグループに対応する乗算演算結果の符号の種類は、正数である。これにより、XNOR演算後の数値が示す符号の種類と、この下位ビット入力データグループに対応する乗算演算結果の符号の種類とが、逆であることが分かる。
【0099】
別の例として、下位ビット入力データグループに含まれる第2の乗数の符号ビットの数値が示す第2の乗数の符号の種類が正数であり、この下位ビット入力データグループに含まれる第2の被乗数の符号ビットの数値が示す第2の被乗数の符号の種類が負数である場合、電子機器は、第2の乗数の符号ビットの数値と第2の被乗数の符号ビットの数値に対してXNOR演算を実行して、XNOR演算後の数値を決定した。その結果、XNOR演算後の数値が示す符号の種類は、正数であり、下位ビット入力データグループに対応する乗算演算結果の符号の種類は、負数である。これにより、XNOR演算後の数値が示す符号の種類と、この下位ビット入力データグループに対応する乗算演算結果の符号の種類とが、逆であることが分かる。
【0100】
ステップS304では、XNOR演算後の数値に基づいて、少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項の補償値を決定する。
【0101】
電子機器は、各下位ビット入力データグループのXNOR演算後の数値が、その下位ビット入力データグループに対応する桁上げ補償項の補償値であることを決定することができる。例えば、下位ビット入力データグループのXNOR演算後の数値が0である場合、その下位ビット入力データグループに対応する桁上げ補償項の補償値は0であると決定することができる。別の例として、下位ビット入力データグループのXNOR演算後の数値が1である場合、その下位ビット入力データグループに対応する桁上げ補償項の補償値は1であると決定することができる。
【0102】
電子機器は、通常、複数の入力データグループに対応する2進数を使用してPPAを計算するため、各下位ビット入力データグループに対応するサブPPAにおける数値は0または1であり、各下位ビット入力データグループに対応するサブPPAが累計される際の桁上げも0または1である。各下位ビット入力データグループの乗算演算結果の符号値は、その下位ビット入力データグループの乗算演算結果の符号の種類を示し、符号値は、0または1である。符号値の反転値(例えば、0の反転値は1、1の反転値は0)が示す符号の種類は、下位ビット入力データグループに対応する乗算演算結果の符号の種類と逆であり、符号値の反転値は、下位ビット入力データグループに対応するサブPPAが累計される際の桁上げを相殺することができる。下位ビット入力データグループに対応するXNOR演算後の数値が示す符号の種類も、その下位ビット入力データグループに対応する乗算演算結果の符号の種類と逆であるため、XNOR演算後の数値は、符号値の反転値と同じ、XNOR演算後の数値は、同様に、下位ビット入力データグループに対応するサブPPAが累計される際の桁上げを相殺することができる。
【0103】
ここで、複数の入力データグループに含まれる第1の乗数と第2の被乗数とがいずれも2進数である場合、複数の入力データグループに対応する2進数は、上記第1の乗数と上記第2の被乗数とである。複数の入力データグループに含まれる第1の乗数と第2の被乗数とが2進数ではない場合、電子機器は、第1の乗数と第2の被乗数とをそれぞれ変換して、変換された第1の乗数と変換された第2の被乗数とを取得することができる。変換された第1の乗数と変換された第2の被乗数とは、いずれも2進数であり、複数の入力データグループに対応する2進数には、変換された第1の乗数と変換された第2の被乗数とが含まれる。
【0104】
他の実施例において、電子機器は、各下位ビット入力データグループに含まれる各データの符号ビットの数値に基づいて、その下位ビット入力データグループの乗算演算結果の符号の種類を示す符号値を決定し、この符号値に基づいて、その下位ビット入力データグループに対応する桁上げ補償項の補償値を決定することができる。図6に示すように、上記図4に示す実施例に加えて、本実施例に係る乗算器の演算方法におけるステップS202は、以下のステップS401~ステップS402を含むことができる。
【0105】
ステップS401では、各下位ビット入力データグループにおける乗数と被乗数との符号ビットの数値に基づいて、乗数と被乗数との乗算演算結果の符号値を決定する。
【0106】
電子機器は、各下位ビット入力データグループに含まれる第2の乗数の符号ビットの数値と第2の被乗数の符号ビットの数値とに基づいて、第2の乗数と第2の被乗数との乗算演算結果の符号値(すなわち、その下位ビット入力データグループの乗算演算結果の符号値)を決定することができる。
【0107】
例えば、第2の乗数に含まれる符号ビットの数値が0であり、第2の被乗数に含まれる符号ビットの数値が0である場合、第2の乗数と第2の被乗数との乗算演算結果の符号値は0である。別の例として、第2の乗数に含まれる符号ビットの数値は0であり、第2の被乗数に含まれる符号ビットの数値は1である場合、第2の乗数と第2の被乗数との乗算演算結果の符号値は1である。さらに別の例として、第2の乗数に含まれる符号ビットの数値は1であり、第2の被乗数に含まれる符号ビットの数値は1である場合、第2の乗数と第2の被乗数との乗算演算結果の符号値は0である。ここで、数値0が示す符号の種類は、正数であり、数値1が示す符号の種類は、負数である。
【0108】
ステップS402では、乗算演算結果の符号値を反転して、各下位ビット入力データグループに対応する桁上げ補償項の補償値を取得する。
【0109】
例えば、下位ビット入力データグループの乗算演算結果の符号値が0であることは、その乗算演算結果の符号の種類が正数であることを示し、電子機器は、その下位ビット入力データグループに対応する桁上げ補償項の補償値が1であることを得ることができる。別の例として、下位ビット入力データグループの乗算演算結果の符号値が1であることは、その乗算演算結果の符号の種類が負数であることを示し、電子機器は、その下位ビット入力データグループに対応する桁上げ補償項の補償値が0であることを得るすることができる。
【0110】
各下位ビット入力データグループの乗算演算結果の符号値は、その下位ビット入力データグループの乗算演算結果の符号の種類を示し、符号値は、0または1である。符号値の反転値が示す符号の種類は、その下位ビット入力データグループに対応する乗算演算結果の符号の種類と逆であり、符号値の反転値は、その下位ビット入力データグループに対応するサブPPAが累計される際の桁上げを相殺することができる。よって、電子機器は、符号値の反転値を下位ビット入力データグループに対応する桁上げ補償項の補償値に決定することができ、下位ビット入力データグループに対応する桁上げ補償項の補償値は、下位ビット入力データグループに対応するサブPPAが累計される際の桁上げを相殺することができる。
【0111】
いくつかの実施例において、電子機器は、少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項を取得した後、複数の入力データグループに基づいて初期PPAを生成し、この初期PPAに桁上げ補償項を追加して目標PPAを取得する。図7に示すように、上記図4に示す実施例に加えて、本実施例に係る乗算器の演算方法におけるステップS104は、以下のステップS501~ステップS503を含むことができる。
【0112】
ステップS501では、各入力データグループのデータビット幅に対応する符号化方式を採用して各入力データグループを符号化して、各入力データグループに対応する符号化データを取得する。
【0113】
電子機器が計算するのは各入力データグループの乗算演算結果であるため、電子機器は、各入力データグループを別々に符号化(例えば、ブース符号化)して、各入力データグループに対応する符号化データを取得する。ここで、各入力データグループに対応する符号化データは、複数組の積項であることができる。
【0114】
複数組の積項の詳細については、上記の実施例での複数組の積項に対する説明を参照す
【0115】
例示的に、複数の入力データグループには、データビット幅がnビットである1つの入力データグループと、データビット幅がnビットである1つの入力データグループとが含まれる。電子機器は、nビットのブース符号化を採用してデータビット幅がnビットである入力データグループを符号化し、nビットのブース符号化を採用してデータビット幅がnビットである入力データグループを符号化することができる。
【0116】
さらに、乗算器の符号化方式が基数4-ブース符号化である場合、電子機器は、nビットの基数4-ブース符号化を採用してデータビット幅がnビットである入力データグループを符号化し、nビットの基数4-ブース符号化を採用してデータビット幅がnビットである入力データグループを符号化することができる。
【0117】
いくつかの実施例において、電子機器は、セレクタを通じて、乗算器が各入力データグループのデータビット幅に対応する符号化方式を採用するように設定し、設定された乗算器を通じて、各入力データグループを符号化して、各入力データグループに対応する符号化データを取得する。
【0118】
ステップS502では、各入力データグループに対応する符号化データに基づいて、各入力データグループに対応するサブ部分積配列を含む初期部分積配列を生成する。
【0119】
電子機器は、各入力データグループに対応する符号化データを使用して、各入力データグループに対応するサブPPAを生成し、各入力データグループに対応するサブPPAに基づいて、複数の入力データグループに対応する初期PPAを生成することができる。異なる入力データグループに対応するサブPPAが初期PPAにおいて占める列は異なる。
【0120】
いくつかの実施例において、各入力データグループに対応する符号化データは、複数組の積項であることができ、電子機器は、複数組の積項を配列して、各入力データグループに対応するサブPPAを取得することができる。
【0121】
電子機器が複数組の積項を配列することの詳細については、上記の実施例での「乗数に含まれるすべての数値に対応する積項を配列する」ことに関する説明を参照すればよいので、ここではその説明を省略する。
【0122】
ステップS503では、少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項の補償位置および補償値に基づいて、初期部分積配列に桁上げ補償項を追加して、目標部分積配列を取得する。
【0123】
電子機器は、初期PPAに少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項を追加して、目標PPAを取得することができる。
【0124】
いくつかの実施例において、初期PPAには、少なくとも1つの下位ビット入力データグループに対応するサブPPAが含まれる。各下位ビット入力データグループに対応する桁上げ位置は、その下位ビット入力データグループに対応するサブPPAの最終行の位置である。さらに、電子機器は、各下位ビット入力データグループに対応するサブPPAの最終行の位置に基づいて、初期PPAにその下位ビット入力データグループに対応する桁上げ補償項を追加するように、その下位ビット入力データグループに対応するサブPPAの最終行にその下位ビット入力データグループに対応する桁上げ補償項の補償値を追加する。電子機器は、初期PPAに少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項を追加して、目標PPAを取得する。
【0125】
例示的に、電子機器は、各下位ビット入力データグループに対応するサブPPAの最終行における目標上位ビットを、その下位ビット入力データグループに対応する桁上げ補償項の補償値に設定することができる。目標上位ビットは、下位ビット入力データグループに対応するサブPPAの最終行における、位置が部分積の位置および符号ビットの位置より上位のビットである。
【0126】
本開示の実施例では、複数の入力データグループを全体として符号化するのではなく、各入力データグループを別々に符号化して、各入力データグループに対応する符号化データを取得するのである。さらに、電子機器は、各入力データグループに対応する符号化データを使用して、各入力データグループに対応するサブPPAを生成し、その後、各入力データグループに対応するサブPPAを含む初期PPAを生成することができる。初期PPAに基づいて、各入力データグループの乗算演算結果を取得することができる。
【0127】
いくつかの実施例において、電子機器は、目標PPAを累計して、各入力データグループの乗算演算結果を取得することができる。または、電子機器は、目標PPAを圧縮して圧縮データを取得し、圧縮データを累計して各入力データグループの乗算演算結果を取得することができる。
【0128】
例示的に、電子機器が目標PPAを圧縮して各入力データグループの乗算演算結果を取得することを例とし、電子機器が各入力データグループの乗算演算結果を取得するプロセスを説明する。具体的には、図7に示すように、上記図4に示す実施例に加えて、本実施例に係る乗算器の演算方法におけるステップS105は、以下のステップS504~ステップS505を含むことができる。
【0129】
ステップS504では、ウォレスツリー型圧縮器を使用して、目標部分積配列を圧縮して、圧縮データを取得する。
【0130】
電子機器は、ウォレスツリー型圧縮器(Wallaceツリー型圧縮器、Wallaceツリー乗算器とも呼ばれる)を使用して、目標PPAを圧縮して、圧縮データを取得することができる。圧縮データには、2組の数値が含まれることができ、2組の数値は、それぞれ目標PPAの積累計値と目標PPAの桁上げ値とである。
【0131】
ステップS505では、圧縮データを累計して、各入力データグループの乗算演算結果を取得する。
【0132】
電子機器は、圧縮データに含まれる2組の数値を累計して、累計結果を取得することができる。累計結果には、各入力データグループの乗算演算結果が含まれる。累計結果のデータビット幅は、2Nである。
【0133】
電子機器は、Wallaceツリー型圧縮器を通じて目標PPAを圧縮して、圧縮データを取得する。圧縮データに含まれるデータ量は、目標PPAに含まれるデータ量より少ない。これにより、圧縮データの累計速度が向上され、各入力データグループの乗算演算結果を迅速に取得することができる。
【0134】
例示的に、図8を参照して、図8に示す電子機器を例として、本開示の実施例に係る乗算器の演算方法を説明する。図8に示す電子機器は、データビット幅がNである1つの乗算器と、ウォレスツリー型圧縮器(Wallaceツリー型圧縮器)と、加算器と、を備え、電子機器が実行する演算方法は、以下のステップを含むことができる。
【0135】
ステップ1では、電子機器は、複数の入力データグループと、入力信号dlxpと、乗算器の符号化方式と、を取得する。
【0136】
例えば、複数の入力データグループには、第1の乗数Aと第1の被乗数Bとが含まれる。入力信号dlxpは、各入力データグループのデータビット幅を示し、具体的には、入力信号dlxpは、複数の入力データグループのうち第1位に位置する入力データグループ(第1位入力データグループと略称)のデータビット幅は、nビットであり、第2位に位置する入力データグループ(第2位入力データグループと略称)のデータビット幅は、nビットであり、…、第m位に位置する入力データグループ(第m位入力データグループと略称)のデータビット幅は、nビットであることを示す。乗算器の符号化方式は、ブース符号化である。mは、正の整数である。
【0137】
ステップ2では、電子機器は、乗算器を通じて、各入力データグループのデータビット幅に対応する符号化方式をそれぞれ採用して、各入力データグループを符号化して、各入力データグループに対応する符号化データを取得する。
【0138】
ここで、ステップ2は、電子機器は、乗算器を通じて、それぞれnビットのブース符号化を採用して第1位入力データグループを符号化し、nビットのブース符号化を採用して第2位入力データグループを符号化し、…、およびnビットのブース符号化を採用して第m位入力データグループを符号化して、第1位入力データグループに対応する符号化データ、第2位入力データグループに対応する符号化データ、…、および第m位入力データグループに対応する符号化データを取得することを含む。
【0139】
ステップ3では、電子機器は、乗算器を通じて、各入力データグループに対応する符号化データを使用して、各入力データグループに対応するサブPPAを生成し、各入力データグループに対応するサブPPAに基づいて、複数の入力データグループに対応する初期PPAを生成する。ここで、各入力データグループに対応するサブPPAには、第1位入力データグループに対応するサブPPA(すなわち、PPA)、第2位入力データグループに対応するサブPPA(すなわち、PPA)、…、および第m位入力データグループに対応するサブPPA(すなわち、PPA)が含まれる。
【0140】
例えば、図8および図9を併せて参照して、第1位入力データグループのデータビット幅であるnビット、第2位入力データグループのデータビット幅であるnビット、…、および第m位入力データグループのデータビット幅であるnビットがいずれも8であり、乗算器の符号化方式が基数4-ブース符号化であることを例とし、電子機器は、図9に示す各入力データグループに対応するサブPPAを取得することができ、サブPPAには、第1位入力データグループに対応するサブPPA(すなわち、PPA)、第2位入力データグループに対応するサブPPA(すなわち、PPA)、…、および第m位入力データグループに対応するサブPPA(すなわち、PPA)が含まれる。
【0141】
図9に示すPPAの詳細については、上記の実施例での図3に示す第1位入力データグループに対応するサブPPAに対する説明を参照し、図9に示すPPAの詳細については、上記の実施例での図3に示す第2位入力データグループに対応するサブPPAに対する説明を参照し、図9に示すPPAの詳細については、上記の実施例での図3に示す第m位入力データグループに対応するサブPPA対する説明を参照すればよいので、ここではその説明を省略する。
【0142】
ステップ4では、電子機器は、乗算器を通じて、少なくとも1つの下位ビット入力データグループおよび符号化方式に基づいて、少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項を決定し、初期PPAに少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項を追加して、目標PPAを取得する。ここで、少なくとも1つの下位ビット入力データグループには、第1位入力データグループ、第2位入力
【0143】
例えば、図8および図9を併せて参照して、電子装置が決定した少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項には、第1位入力データグループに対応する桁上げ補償項E、第2位入力データグループに対応する桁上げ補償項E、…、および第m-1位入力データグループに対応する桁上げ補償項Em-1が含まれることができる。さらに、電子機器は、図9に示す目標PPAを取得することができる。
【0144】
ステップ5では、電子機器は、Wallaceツリー型圧縮器を通じて目標PPAを圧縮して、圧縮データを取得する。
【0145】
ステップ6では、電子機器は、加算器を通じて圧縮データを累計して、各入力データグループの乗算演算結果を取得する。ここで、電子機器が圧縮データを累計して取得した乗算演算結果のデータビット幅は、2Nである。累計結果には、各入力データグループの乗算演算結果が含まれ、例えば、第1位入力データグループの乗算演算結果は、累積結果における1ビット目から2×nビットで示される数値であり、第2位入力データグループの乗算演算結果は、累計結果における2×n+1ビット目から2×nビット目で示される数値である。
【0146】
例示的に、図10を参照すると、複数の入力データグループに図10に示すint16の第1の乗数A16とint16の第1の被乗数B16とが含まれることを例として、電子機器は、B16×A16を計算する。第1の乗数A16と第1の被乗数B16とは、いずれも符号付きデータであり、第1の乗数A16には、図10に示す第2の乗数A8-1と第2乗数A8-2とが含まれ、第1の被乗数B16には、図10に示す第2の被乗数B8-1と第2の被乗数B8-2とが含まれる。A16=(0010101100110001)であり、A8-1=(00110001)であり、A8-2=(00101011)であり、A8-1で示される10進数は49であり、A8-2で示される10進数は43である。B16=(0000001010001010)であり、B8-1=(10001010)であり、B8-2=(00000010)であり、B8-1で示される10進数は-118であり、B8-2で示される10進数は2である。
【0147】
図10に示すのは、簡略化された2進数であり、例えば、(0010101100110001)が簡略化されて0010101100110001になり、(00110001)が簡略化されて00110001になる。
【0148】
まず、第2乗数A8-1と第2の被乗数B8-1とによって構成される第1位入力データグループのデータビット幅が8ビットであり、第2の乗数A8-2と第2の被乗数B8-2とによって構成される第2位入力データグループのデータビット幅が8ビットである場合、電子機器は、8ビットの基数4-ブース符号化を採用して第1位入力データグループを符号化して、第1位入力データグループに対応する符号化データを取得し、8ビットの基数4-ブース符号化を採用して第2位入力データグループを符号化して、第2位入力データグループに対応する符号化データを取得する。
【0149】
次に、電子機器は、第1位入力データグループに対応する符号化データに基づいて、第1位入力データグループに対応するサブPPA(すなわち、PPA)を生成し、第2位入力データグループに対応する符号化データに基づいて、第2位入力データグループに対応するサブPPA(すなわち、PPA)を生成することができる。
【0150】
その後、電子機器は、第1位入力データグループが下位ビット入力データグループである場合、第1位入力データグループに対応する桁上げ補償項Eを決定することができる。電子機器が第1位入力データグループに対応する桁上げ補償項Eを決定するのは、以下のステップを含む。第1位入力データグループにおける第2の乗数A8-1の符号ビットの数値が0であり、第1位入力データグループにおける第2の被乗数B8-1の符号ビットの数値が1である場合、電子機器は、第2の被乗数B8-1と第2の乗数A8-1との乗算演算結果の符号値が1であると決定し、この乗算演算結果の符号値を反転して第1位入力データグループに対応する桁上げ補償項Eの補償値を0として取得し、そして、第1位入力データグループに対応するサブPPAの最終行の位置(つまり、PPAの4行目)が、第1位入力データグループに対応する桁上げ補正項Eの補正位置であることを決定することができる。
【0151】
さらに、電子機器は、図10に示す目標PPAを生成し、この目標PPAに基づいて、第1位入力データグループの乗算演算結果Cおよび第2位入力データグループの乗算演算結果Cを決定することができる。ここで、C=(1110100101101010)であり、Cで示される10進数は-5728であり、-5728はB8-1とA8-1との積(すなわち、-118と49との積)に等しい。C=(0000000001010110)であり、Cで示される10進数は86であり、86はB8-2とA8-2との積(すなわち、2と43との積)に等しい。
【0152】
図10に示す符号ビット(s、e、 ̄e、s、e、および1を含む)の詳細については、上記の実施例での図3に示す符号ビット(s、e、 ̄e、s、e、および1を含む)に対する説明を参照すればよいので、ここではその説明を省略する。
【0153】
例示的に、図11を参照すると、複数の入力データグループに図11に示すint16の第1の乗数A16とint16の第1の被乗数B16とが含まれることを例として、電子機器は、B16×A16を計算する。第1の乗数A16と第1の被乗数B16は、いずれも符号付きデータであり、第1の乗数A16には、図11に示す第2の乗数A8-1と第2乗数A8-2とが含まれ、第1の被乗数B16には、図11に示す第2の被乗数B8-1と第2の被乗数B8-2とが含まれる。A16=(1000101000110000)であり、A8-1=(00110000)であり、A8-2=(10001010)であり、A8-1で示される10進数は48であり、A8-2で示される10進数は-118である。B16=(0110110100101000)であり、B8-1=(00101000)であり、B8-2=(01101101)であり、B8-1で示される10進数は40であり、B8-2で示される10進数は109である。
【0154】
図11に示すのは、簡略化された2進数であり、例えば、(1000101000110000)が簡略化されて1000101000110000になり、(00110000)が簡略化されて00110000になる。
【0155】
ここで、電子機器は、図11に示す第1位入力データグループが下位ビット入力データグループである場合、第1位入力データグループに対応する桁上げ補償項Eを決定することができる。電子機器が第1位入力データグループに対応する桁上げ補償項Eを決定するのは、以下のステップを含む。第1位入力データグループにおける第2の乗数A8-1の符号ビットの数値が0であり、第1位入力データグループにおける第2の被乗数B8-1の符号ビットの数値が0である場合、電子機器は、第2の被乗数B8-1と第2の乗数A8-1との乗算演算結果の符号値が0であると決定し、この乗算演算結果の符号値を反転して第1位入力データグループに対応する桁上げ補償項Eの補償値がを1として取得し、そして、第1位入力データグループに対応するサブPPAの最終行の位置(つまり、PPAの4行目)が、第1位入力データグループに対応する桁上げ補正項Eの補正位置であることを決定することができる。
【0156】
さらに、電子機器は、図11に示す目標PPAを生成し、この目標PPAに基づいて、第1位入力データグループの乗算演算結果Cおよび第2位入力データグループの乗算演算結果Cを決定することができる。ここで、C=(0000011110000000)であり、Cで示される10進数は1920であり、1920はB8-1とA8-1との積(すなわち、40と48との積)に等しい。C=(1100110111000010)であり、Cで示される10進数は-12862であり、-12862はB8-1とA8-1との積(すなわち、109と-118との積)に等しい。
【0157】
電子機器が図11に示す複数の入力データグループに対して乗算器の乗算演算方法を実行するプロセスは、電子機器が図10に示す複数の入力データグループに対して乗算器の乗算演算方法を実行するプロセスと同様であるため、ここではその説明を省略する。
(例示的な装置)
【0158】
各機能に対応して分割される各機能モジュールを採用する場合、本開示の実施例は、演算装置をさらに提供する。図12は、本開示の実施例に係る演算装置の構造概略図である。演算装置600は、補償決定モジュール601と、部分積配列決定モジュール602と、部分積処理モジュール603と、を備える。
【0159】
ここで、補償決定モジュール601は、乗算器の複数の入力データグループおよび乗算器の符号化方式を決定し、複数の入力データグループにおける少なくとも1つの下位ビット入力データグループを決定し、少なくとも1つの下位ビットデータグループ及び符号化方式に基づいて、少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項を決定するためのものである。
【0160】
部分積配列決定モジュール602は、補償決定モジュール601によって決定された少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項と複数の入力データグループとに基づいて、目標部分積配列を決定するためのものである。
【0161】
部分積処理モジュール603は、部分積配列決定モジュール602によって決定された目標部分積配列に基づいて、各入力データグループの乗算演算結果を決定するためのものである。
【0162】
いくつかの実施例において、図12および図13に示すように、補償決定モジュール601は、補償位置決定ユニット6011と、補償値決定ユニット6012と、を備える。ここで、補償位置決定ユニット6011は、符号化方式と、少なくとも1つの下位ビット入力データグループのデータビット幅と、複数の入力データグループにおける少なくとも1つの下位ビット入力データグループの位置と、に基づいて、少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項の位置を決定するためのものである。補償値決定ユニット6012は、少なくとも1つの下位ビット入力データグループにおける各データの符号ビットの数値に基づいて、少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項の補償値を決定するためのものである。
【0163】
いくつかの実施例において、補償位置決定ユニット6011は、符号化方式と、少なくとも1つの下位ビット入力データグループのデータビット幅と、複数の入力データグループにおける少なくとも1つの下位ビット入力データグループの位置と、に基づいて、少なくとも1つの下位ビット入力データグループに対応するサブ部分積配列の最終行の位置を決定し、少なくとも1つの下位ビット入力データグループに対応するサブ部分積配列の最終行の位置に基づいて、少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項の位置を決定する。
【0164】
いくつかの実施例において、補償値決定ユニット6012は、各下位ビット入力データグループにおける乗数と被乗数との符号ビットの数値に対してXNOR演算を実行して、XNOR演算後の数値を決定し、このXNOR演算後の数値に基づいて、各下位ビット入力データグループに対応する桁上げ補償項の償項値を決定する。
【0165】
いくつかの実施例において、補償値決定ユニット6012は、各下位ビット入力データグループにおける乗数と被乗数との符号ビットの数値に基づいて、乗数と被乗数との乗算演算結果の符号値を決定し、この符号値を反転して、各下位ビット入力データグループに対応する桁上げ補償項の償項値を取得する。
【0166】
いくつかの実施例において、図12および図13に示すように、部分積配列決定モジュール602は、符号化ユニット6021と、部分積配列決定ユニット6022と、を備える。ここで、符号化ユニット6021は、各入力データグループのデータビット幅に対応する符号化方式を採用して各入力データグループを符号化して、各入力データグループに対応する符号化データを取得するためのものである。部分積配列決定ユニット6022は、各入力データグループに対応する符号化データに基づいて、各入力データグループに対応するサブ部分積配列が含まれる初期部分積配列を生成し、少なくとも1つの下位ビット入力データグループに対応する桁上げ補償項の補償位置および補償値に基づいて、初期部分積配列に桁上げ補償項を追加して、目標部分積配列を取得するためのものである。
【0167】
いくつかの実施例において、補償決定モジュール601は、各入力データグループのデータビット幅の合計が、乗算器が実行可能な最大のデータビット幅以下であることに応じて、複数の入力データグループにおける少なくとも1つの下位ビット入力データグループを決定する。
【0168】
いくつかの実施例において、図12および図13に示すように、部分積処理モジュール603は、部分積圧縮ユニット6031と、累計ユニット6032と、を備える。ここで、部分積圧縮ユニット6031は、ウォレスツリー型圧縮器を使用して、目標部分積配列を圧縮して、圧縮データを取得するためのものである。累計ユニット6032は、圧縮データを累計して、各入力データグループの乗算演算結果を取得するためのものである。
【0169】
本装置の例示的な実施例に対応する有益な技術的効果は、上記の例示的な方法部分における対応の有益な技術的効果を参照すればよいので、ここでは説明を省略する。
(例示的な電子機器)
【0170】
図14は、本開示の実施例に係る電子機器の構造図であり、電子機器10は、少なくとも1つのプロセッサ11及びメモリ12を備える。
【0171】
プロセッサ11は、中央処理ユニット(CPU)、またはデータ処理能力および/または命令実行能力を有する他の形式の処理ユニットであることができ、電子機器10内の他のコンポーネントを制御して所望の機能を実行することができる。
【0172】
メモリ12は、1つまたは複数のコンピュータプログラム製品を含むことがてき、前記コンピュータプログラム製品は、例えば揮発性メモリおよび/または不揮発性メモリなどの様々な形態のコンピュータ可読記憶媒体を含むことがてきる。揮発性メモリは、例えば、ランダムアクセスメモリ(randomaccess memory、RAM)および/またはキャッシュメモリ(cache)などを含むことができる。不揮発性メモリは、例えば、読み取り専用メモリ(read-only memory、ROM)、ハードディスク、フラッシュメモリなどを含むことができる。コンピュータ可読記憶媒体は、1つまたは複数のコンピュータプログラム命令を記憶することができ、プロセッサ11は、1つまたは複数のプログラム命令を実行することで、上記の本開示の各実施例に係る乗算器の演算方法および/または他の所望の機能を実現することができる。
【0173】
一例では、電子機器10は、バスシステムおよび/または他の形態の接続機構(図示せず)を介して互いに接続される入力装置13と出力装置14とをさらに備えることができる。
【0174】
入力装置13は、例えば、キーボードやマウス等を含むことができる。
【0175】
出力装置14は、様々な情報を外部に出力することができ、例えば、ディスプレイ、スピーカ、プリンタ、通信ネットワークおよびそれらが接続される遠隔出力デバイスとなどを含むことができる。
【0176】
簡略化のために、図14においては、電子機器10における本開示に関連するコンポーネントの一部のみを示し、バスや入出力インターフェースなどのコンポーネントは省略した。その他、具体的な応用条件に応じて、電子機器10は、任意の適切なコンポーネントをさらに備えることができる。
(例示的なコンピュータプログラム製品およびコンピュータ可読記憶媒体)
【0177】
本開示の実施例は、上記の方法および機器に加えて、コンピュータプログラム命令を含むコンピュータプログラム製品を提供することができる。このコンピュータプログラム命令がプロセッサにより実行されると、プロセッサに、上記「例示的な方法」の部分に記載の各実施例に係る乗算器の演算方法におけるステップを実行させる。
【0178】
コンピュータプログラム製品は、1つまたは複数のプログラミング言語の任意の組み合わせによって、本開示の実施例の操作を実行するためのプログラムコードを作成することができ、プログラミング言語は、Java(登録商標)、C++などのオブジェクト指向プログラミング言語、および「C」言語または類似のプログラミング言語などの一般的な手続き型プログラミング言語を含む。プログラムコードは、下記のように実行されることができ、すなわち、ユーザーコンピューティングデバイス上で全体的に実行されてもよいし、ユーザーデバイス上で部分的に実行されてもよいし、独立したソフトウェアパッケージとして実行されてもよいし、一部はユーザーのコンピューティングデバイス上で実行され、別の一部はリモートコンピューティングデバイス上で実行されてもよいし、リモートコンピューティングデバイスあるいはサーバー上で全体的に実行されてもよい。
【0179】
また、本開示の実施例は、コンピュータプログラム命令が記憶されているコンピュータ可読記憶媒体をさらに提供することができる。このコンピュータプログラム命令がプロセッサにより実行されると、プロセッサに、上記「例示的な方法」の部分に記載の各実施例に係る乗算器の演算方法におけるステップを実行させる。
【0180】
コンピュータ可読記憶媒体として、1つまたは複数の可読媒体の任意の組み合わせを採用することができる。可読媒体は、可読信号媒体または可読記憶媒体であることができる。可読記憶媒体は、例えば、電気、磁気、光、電磁気、赤外線、または半導体のシステム、装置あるいはデバイス、またはそれらの任意の組み合わせを含むことができるが、これらに限定されない。可読記憶媒体のより具体的な例(非網羅的なリスト)としては、1つまたは複数の導線を有する電気的接続、モバイルハードドライブ、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ (ROM)、消去可能なプログラマブル読み取り専用メモリ (EPROMまたはフラッシュメモリ)、光ファイバ、コンパクトディスク読み取り専用メモリ(CD-ROM)、光記憶装置、磁気記憶装置、または上記の任意の適切な組み合わせが挙げられる。
【0181】
以上、具体的な実施例を参照しながら本開示の基本的原理を説明してきたが、本開示に言及される利点、長所、効果などは、例示されるものにすぎず、限定的なものではなく、本開示の各実施例が必ずしも有するものではない。また、また、上記開示の具体的な詳細は、例示的な作用及び理解しやすい作用に過ぎず、限定的なものではなく、上記詳細は、本開示を必ずしも上記具体的な詳細により実現されるように限定することではない。
【0182】
当業者であれば、本願の精神及び範囲から逸脱することなく、本開示に対して様々な変更や変形を行うことができる。このように、本願のこれらの修正や変形が本開示の特許請求の範囲及びその均等的な技術範囲内に属する場合、本開示もこれらの修正や変形を含むことを意味する。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14