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

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

▶ 国立大学法人 熊本大学の特許一覧

<>
  • 特許-演算装置、及び演算方法 図1
  • 特許-演算装置、及び演算方法 図2
  • 特許-演算装置、及び演算方法 図3
  • 特許-演算装置、及び演算方法 図4
  • 特許-演算装置、及び演算方法 図5
  • 特許-演算装置、及び演算方法 図6
  • 特許-演算装置、及び演算方法 図7
  • 特許-演算装置、及び演算方法 図8
  • 特許-演算装置、及び演算方法 図9
  • 特許-演算装置、及び演算方法 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-15
(45)【発行日】2024-02-26
(54)【発明の名称】演算装置、及び演算方法
(51)【国際特許分類】
   G06F 7/505 20060101AFI20240216BHJP
【FI】
G06F7/505
【請求項の数】 4
(21)【出願番号】P 2019211774
(22)【出願日】2019-11-22
(65)【公開番号】P2021082221
(43)【公開日】2021-05-27
【審査請求日】2022-10-25
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成31年度、国立研究開発法人新エネルギー・産業技術総合開発機構開発項目「高効率・高速処理を可能とするAIチップ・次世代コンピューティングの技術開発/革新的AIエッジコンピューティング技術の開発/再帰再構成型ニューロモルフィックアクセラレータの研究開発」 委託研究、産業技術力強化法第17条の適用を受ける特許出願
(73)【特許権者】
【識別番号】504159235
【氏名又は名称】国立大学法人 熊本大学
(74)【代理人】
【識別番号】100106909
【弁理士】
【氏名又は名称】棚井 澄雄
(74)【代理人】
【識別番号】100126664
【弁理士】
【氏名又は名称】鈴木 慎吾
(74)【代理人】
【識別番号】100188558
【弁理士】
【氏名又は名称】飯田 雅人
(74)【代理人】
【識別番号】100189337
【弁理士】
【氏名又は名称】宮本 龍
(72)【発明者】
【氏名】飯田 全広
(72)【発明者】
【氏名】尼崎 太樹
(72)【発明者】
【氏名】古賀 大顕
【審査官】征矢 崇
(56)【参考文献】
【文献】米国特許出願公開第2014/0059105(US,A1)
【文献】再公表特許第99/031573(JP,A1)
【文献】特開昭58-084343(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F7/38-7/537
(57)【特許請求の範囲】
【請求項1】
複数の入力値および演算結果に要求される誤差情報を受け付ける受付部と、
前記受付部が受け付けた前記誤差情報に基づいて、加算に使用する複数の前記入力値の各々の最上位ビットからの桁数を設定する設定部と、
前記設定部が設定した最上位ビットからの前記桁数に基づいて、複数の前記入力値の各々の最上位ビットから前記設定部が設定した前記桁数まで、前記受付部が前記最上位ビットからKビット(Kは、K>0の整数)毎に出力した複数の前記入力値の各々の加算を、前記最上位ビットからKビット毎に行う演算部と、
前記演算部による加算結果を、L(Lは、L>0の整数)クロック後から、Kビット毎に最上位ビットから出力する出力部と
を備える演算装置。
【請求項2】
前記設定部は、演算結果に要求される誤差情報と、複数の入力値の各々の最上位ビットからの桁数とを関連付けて記憶する記憶部から、前記受付部が受け付けた前記誤差情報に基づいて、複数の前記入力値の各々の最上位ビットからの桁数を取得する、請求項に記載の演算装置。
【請求項3】
前記演算部は、前記最上位ビットの加算結果が、閾値以上である場合に、加算を中止する、請求項1又は請求項に記載の演算装置。
【請求項4】
複数の入力値および演算結果に要求される誤差情報を受け付けるステップと、
前記受け付けるステップで受け付けた前記誤差情報に基づいて、加算に使用する複数の前記入力値の各々の最上位ビットからの桁数を設定するステップと、
前記設定するステップで設定した最上位ビットからの前記桁数に基づいて、複数の前記入力値の各々の最上位ビットから前記設定するステップで設定した前記桁数まで、前記最上位ビットからKビット(Kは、K>0の整数)毎に出力した複数の前記入力値の各々の加算を、前記最上位ビットからKビット毎に行うステップと、
前記加算を行うステップによる加算結果を、L(Lは、L>0の整数)クロック後から、Kビット毎に最上位ビットから出力するステップと
を有する演算装置が実行する演算方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、演算装置、及び演算方法に関する。
【背景技術】
【0002】
今後10年で,データセンタで管理されるデータ量は50倍に増加する一方で、プロセッサの数はわずか10倍にしか増加しないと予想されている。また、最近の計算用途は、ビッグデータ解析、科学計算、メディア処理、信号処理、機械学習、データベース処理等、多種多様の処理を効率よく行うことが求められている。
しかし、パフォーマンス要求の高まりが計算機資源の増加を上回っており、このままでは十分なサービスを維持することが困難な状況である。これを解決する手段として、概略計算(AC; Approximate Computing)が注目されている。ACは、計算誤差を許容できるアプリケーションに対し、精度と速度やエネルギーのトレードオフを取ることが可能な計算方式である。すなわち、計算精度を落とすことで高速化や、低消費電力化する手法である。
【0003】
一般的に画像認識のように多少のビットエラーを含んでいても正しい答えを導くことができるアプリケーションは多く存在する。現在の計算機システムはそのような場合でも1ビットも間違えずに計算することが可能だが、多少の計算誤差が含まれていても結果に差異がない場合には、精度と落としても早く計算を完了する方が価値は高い場合がある。実際にニューラルネットワークの計算において、ACを使用して5%程度の誤差を許容すれば、GPUに対して26倍高速化したという報告もある(例えば、非特許文献1参照)。
ACは大別してソフトウェア(アルゴリズム)・アプローチと、ハードウェア・アプローチとの2種類がある。ソフトウェアで行う方法は、従来から近似計算、近似アルゴリズムとして確立していたが。近年、さらに発展している。一方、ハードウェア・アプローチは、演算器の高速化、特に低レイテンシ化を目指した研究が盛んである。
【先行技術文献】
【非特許文献】
【0004】
【文献】BEAYNA GRIGORIAN and GLENN REINMAN, “Accelerating Divergent Applications on SIMD Architectures Using Neural Networks”, ACM Transactions on Architecture and Code Optimization, Vol.12, No.1, Article 2, Publication date: March 2015.
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、前述した問題を解決すべくなされたもので、概略計算結果を出力できる演算装置、及び演算方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の一実施形態は、複数の入力値および演算結果に要求される誤差情報を受け付ける受付部と、前記受付部が受け付けた前記誤差情報に基づいて、加算に使用する複数の前記入力値の各々の最上位ビットからの桁数を設定する設定部と、前記設定部が設定した最上位ビットからの前記桁数に基づいて、複数の前記入力値の各々の最上位ビットから前記設定部が設定した前記桁数まで、前記受付部が前記最上位ビットからKビット(Kは、K>0の整数)毎に出力した複数の前記入力値の各々の加算を、前記最上位ビットからKビット毎に行う演算部と、前記演算部による加算結果を、L(Lは、L>0の整数)クロック後から、Kビット毎に最上位ビットから出力する出力部とを備える演算装置である。
本発明の一実施形態は、前述の演算装置において、前記設定部は、演算結果に要求される誤差情報と、複数の入力値の各々の最上位ビットからの桁数とを関連付けて記憶する記憶部から、前記受付部が受け付けた前記誤差情報に基づいて、複数の前記入力値の各々の最上位ビットからの桁数を取得する。
本発明の一実施形態は、前述の演算装置において、前記演算部は、前記最上位ビットの加算結果が、閾値以上である場合に、加算を中止する。
【0007】
本発明の一実施形態は、複数の入力値および演算結果に要求される誤差情報を受け付けるステップと、前記受け付けるステップで受け付けた前記誤差情報に基づいて、加算に使用する複数の前記入力値の各々の最上位ビットからの桁数を設定するステップと、前記設定するステップで設定した最上位ビットからの前記桁数に基づいて、複数の前記入力値の各々の最上位ビットから前記設定するステップで設定した前記桁数まで、前記受付部が前記最上位ビットからKビット(Kは、K>0の整数)毎に出力した複数の前記入力値の各々の加算を、前記最上位ビットからKビット毎に行うステップと、前記加算を行うステップによる加算結果を、L(Lは、L>0の整数)クロック後から、Kビット毎に最上位ビットから出力するステップとを有する演算装置が実行する演算方法である。
【発明の効果】
【0008】
本発明の実施形態によれば、概略計算結果を出力できる演算装置、及び演算方法を提供できる。
【図面の簡単な説明】
【0009】
図1】実施形態に係る演算装置を含む演算システムの構成図である。
図2】実施形態に係る演算装置が実行する演算方法を説明するための図である。
図3】実施形態に係る演算システムの動作の一例を示すシーケンスチャートである。
図4】従来の演算方法の一例を示す図である。
図5】実施形態に係る演算装置の演算方法と、従来の演算方法とを比較結果の例1を示す図である。
図6】実施形態に係る演算装置の演算方法と、従来の演算方法との比較結果の例2を示す図である。
図7】本実施形態に係る演算装置による演算結果の絶対誤差の一例を示す図である。
図8】実施形態に係る演算装置の演算部の一例を示す図である。
図9】実施形態の変形例に係る演算装置を含む演算システムの構成図である。
図10】実施形態の変形例に係る演算システムの動作の一例を示すシーケンスチャートである。
【発明を実施するための形態】
【0010】
次に、本発明の実施形態に係る演算装置、及び演算方法を、図面を参照しつつ説明する。以下で説明する実施形態は一例に過ぎず、本発明が適用される実施形態は、以下の実施形態に限られない。
なお、実施形態を説明するための全図において、同一の機能を有するものは同一符号を用い、繰り返しの説明は省略する。
また、本願でいう「XXに基づく」とは、「少なくともXXに基づく」ことを意味し、XXに加えて別の要素に基づく場合も含む。また、「XXに基づく」とは、XXを直接に用いる場合に限定されず、XXに対して演算や加工が行われたものに基づく場合も含む。「XX」は、任意の要素(例えば、任意の情報)である。
【0011】
(実施形態)
[全体構成]
図1は、実施形態に係る演算装置を含む演算システムの構成図である。実施形態の演算システム1は、演算装置100と、一以上利用者Uにより使用される端末装置200とを備える。
演算装置100と、端末装置200とは、ネットワークNWを介して互いに通信可能である。ネットワークNWは、インターネット、WAN(Wide Area Network)、LAN(Local Area Network)、公衆回線、プロバイダ装置、専用回線、無線基地局などを含む。
【0012】
ユーザーUが、端末装置200に対して、演算装置100と接続する操作を行うことによって、端末装置200は、ネットワークNWを介して、演算装置100に接続する。端末装置200は、演算装置100が提供する演算サービスウェブサイトへアクセスする。
ユーザーUは、演算サービスウェブサイトの表示にしたがって、端末装置200に対して、複数の入力値を入力する操作を行う。
端末装置200は、ユーザーUが入力した複数の入力値を取得し、取得した複数の入力値を含み、演算装置100を宛先とする演算要求を作成する。端末装置200は、作成した演算要求を、演算装置100へ送信する。
【0013】
演算装置100は、端末装置200が送信した演算要求を受信する。演算装置100は、受信した演算要求に含まれる複数の入力値の各々を受け付ける。演算装置100は、受け付けた複数の入力値の各々の最上位ビット(MSB:Most significant Bit)から、一又は複数の桁数に該当する値を取得する。ここで、最上位ビットからの一又は複数の桁数は、演算結果に許容される誤差に基づいて、予め設定されている。
演算装置100は、取得した一又は複数の桁数に該当する値のうち、最上位ビットから、一又は複数の桁数に該当する値まで、複数の入力値の各々の加算を、シリアル転送のビット数Kに基づいて、最上位ビットからKビット(Kは、K>0の整数)毎に行う。つまり、最上位ビットから、一又は複数の桁数より下位のビットは零として扱われる。演算装置100は、演算結果を、加算時の遅延クロック数Lに基づいて、L(Lは、L>0の整数)クロック後から、Kビット毎に出力する。例えば、演算装置100は、演算結果を、最上位ビットから、Kビット毎に出力する。演算装置100は、演算結果を含み、端末装置200を宛先とする演算応答を作成し、作成した演算応答を、端末装置200へ送信する。
端末装置200は、演算装置100が送信した演算応答を受信し、受信した演算応答に含まれる演算結果を取得する。端末装置200は、取得した演算結果を出力する。
以下、演算システム1に含まれる演算装置100と、端末装置200とについて順次説明する。
【0014】
[演算装置100]
演算システム1に含まれる演算装置100は、パーソナルコンピュータ、サーバー、又は産業用コンピュータ等の装置によって実現される。演算装置100は、例えば、通信部110と、受付部120と、演算部130と、出力部140と、記憶部150とを備える。
通信部110は、通信モジュールによって実現される。具体的には、通信部110は、有線通信を行うデバイスによって構成される。また、通信部110は、LTE、無線LAN等の無線通信技術で無線通信を行う無線デバイスによって構成されてもよい。通信部110は、ネットワークNWを介して、端末装置200との間で通信する。
具体的には、通信部110は、端末装置200が送信した演算要求を受信する。通信部110は、出力部140が出力した演算応答を取得し、取得した演算応答を、端末装置200へ送信する。
【0015】
記憶部150は、HDD(Hard Disk Drive)やフラッシュメモリ、RAM(Random Access Memory)、ROM(Read Only Memory)などにより実現される。記憶部150は、演算桁数情報152が記憶される。演算桁数情報152は、演算装置100が、演算に使用する桁数を示す情報であり、入力値の最上位ビットからの桁数に該当する値が記憶される。演算桁数情報152は、演算結果に許容される誤差に基づいて、予め設定される。演算結果に許容される誤差が小さくなるほど、演算結果に要求される精度が高くなるため、演算桁数情報152の値は大きくなり、演算結果に許容される誤差が大きくなるほど、演算結果に要求される精度が小さくなるため、演算桁数情報152の値は小さくなる。
【0016】
受付部120、演算部130、および出力部140は、例えば、CPU(Central Processing Unit)などのハードウェアプロセッサが記憶部150に格納されたプログラム(ソフトウェア)を実行することにより実現される。また、これらの機能部のうち一部または全部は、LSI(Large Scale Integration)やASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)、GPU(Graphics Processing Unit)などのハードウェア(回路部;circuitryを含む)によって実現されてもよいし、ソフトウェアとハードウェアの協働によって実現されてもよい。
プログラムは、予めHDD(Hard Disk Drive)やフラッシュメモリなどの記憶装置(非一過性の記憶媒体を備える記憶装置)に格納されていてもよいし、DVDやCD-ROMなどの着脱可能な記憶媒体(非一過性の記憶媒体)に格納されており、記憶媒体がドライブ装置に装着されることでインストールされてもよい。
【0017】
受付部120は、通信部110が受信した演算要求に含まれる複数の入力値を受け付ける。受付部120が受け付けた複数の入力値は、演算部130へ出力される。ここで、受付部120は、受け付けた複数の入力値の各々の桁数が異なる場合には、桁合わせを行う。受付部120は、複数の入力値の各々を、シリアル転送のビットKに基づいて、最上位ビットからKビット毎に、演算部130へ出力する。ここで、シリアル転送のビットKは、予め設定されている。
演算部130は、受付部120が受け付けた複数の入力値の各々を、最上位ビットからKビット毎に取得する。演算部130は、記憶部150に記憶されている演算桁数情報152を取得し、取得した演算桁数情報152に基づいて、取得した複数の入力値の各々の最上位ビットから、演算桁数情報152によって示される一又は複数の桁数に該当する値まで、最上位ビットからKビット毎に取得する。
演算部130は、取得した一又は複数の桁数に該当する値のうち、最上位ビットから、一又は複数の桁数に該当する値まで、複数の入力値の各々の加算を行う。演算部130は、最上位ビットから、一又は複数の桁数に該当する値まで、複数の入力値の各々の加算を行った結果を、最上位ビットからKビット毎に出力部140へ出力する。演算部130は、最上位ビットから、一又は複数の桁数に該当する値より下位ビットは0として処理してもよい。
【0018】
出力部140は、演算部130による演算結果を、加算時の遅延クロック数Lに基づいて、L(Lは、L>0の整数)クロック後から、Kビット毎に出力する。ここで、加算時の遅延クロック数Lは、予め設定されている。また、出力部140は、演算結果を含み、端末装置200を宛先とする演算応答を作成し、作成した演算応答を、通信部110へ出力する。
【0019】
図2は、実施形態に係る演算装置が実行する演算方法を説明するための図である。ここでは、一例として、シリアル転送のビットKが1、加算時の遅延クロック数Lが1である場合について説明する。
図2において、(a)は従来の演算方法を示し、(b)は本実施形態に係る演算装置100による演算方法を示す。また、図2においては、一例として、入力Aが「a7a6a5a4a3a2a1a0」であり、入力Bが「b7b6b5b4b3b2b1b0」である場合に、入力Aと入力Bとを加算する場合について説明する。ここで、「a7」、「a6」、「a5」、「a4」、「a3」、「a2」、「a1」、「a0」と、「b7」、「b6」、「b5」、「b4」、「b3」、「b2」、「b1」、「b0」との各々は、入力値を示しており、「a7」と「b7」とが最上位ビットであり、「a0」と「b0」とが最下位ビット(LSB:Least significant Bit)である。
【0020】
図2の(a)に示される従来の演算方法によれば、入力Aと入力Bとが最下位ビットである「a0」、「b0」から最上位ビットである「a7」、「b7」まで、順次加算される。入力Aの最下位ビットである「a0」と入力Bの最下位ビットである「b0」とが入力されてから1クロック後に、入力Aの最下位ビットである「a0」と入力Bの最下位ビットである「a0」との加算結果「c0」が出力される。演算結果は、入力Aの最上位ビットである「a7」と入力Bの最上位ビットである「b7」とが入力されてから2クロック後に出力される。つまり、従来の演算方法では、最上位ビットまで演算しないと、演算結果を確定できない。
【0021】
図2の(b)に示される本実施形態に係る演算装置100による演算方法によれば、入力Aと入力Bとが最上位ビットである「a7」と「b7」とから、順次加算される。入力Aの最上位ビットである「a7」と入力Bの最上位ビットである「b7」とが入力されてから1クロック後に、入力Aの最上位ビットである「a7」と入力Bの最上位ビットである「b7」との加算結果「c8」が出力される。つまり、演算結果の出力が開始されるタイミングは、従来の演算方法と同じである。
演算結果は、入力Aの最下位ビットである「a0」と入力Bの最下位ビットである「b0」とが入力されてから2クロック後に出力される。下位ビットが出力されることによって、下位ビットが出力される前と比較して、演算精度が上がっていく。つまり、本実施形態に係る演算装置100による演算方法では、最上位ビットから演算結果が出力されるため、最下位ビットまで演算することなく、演算結果の概略を得ることができる。
【0022】
演算処理の一例として、10進数で表した146と、150とを加算する場合について説明する。
10進数で表した146、及び150は、それそれ、2進数で表した場合に、(10010010)、及び(10010110)である。10進数で表した146と、150とを加算する場合には、10進数で表した296(2進数で表した場合には(100101000))が正確な演算結果である。
従来の演算方法によれば、シリアル加算器を使用した場合には、最下位ビットから、演算処理が行われるので、(□□□□0010)と(□□□□0110)(□は、演算に使用されていないビット)との加算が行われ、演算結果として、(□□□□1000)が得られる。これは、10進数で表した場合には8であり、正確な演算結果から、かけ離れた値になる。
さらに、4ビットの演算が行われた場合には、(10010010)のうち、最上位ビットから4ビットと(10010110)のうち、最上位ビットから4ビットとの加算が行われ、演算結果として、(100101000)が得られる。これは、10進数で表した場合には296であり、正確な演算結果となる。つまり、従来の演算方法では、最上位ビットまで計算することで、正確な演算結果を得ることができる。
【0023】
実施形態に係る演算装置の演算方法について、一例として、演算桁数情報152に4が設定されることによって、最上位ビットから、4ビットに該当する値が取得される場合について説明する。ここでは、一例として、シリアル転送のビットKが1、加算時の遅延クロック数Lが1である場合について説明する。この場合、最上位ビットから、1ビット毎に演算処理が行われるので、(1001□□□□)と(1001□□□□)との加算が行われ、演算結果として、(10010□□□□)が得られる。これは、10進数で表した場合には288であり、従来の演算方法よりも、正確な演算結果に近い値となる。
さらに、4ビットの演算が行われた場合には、(10010010)のうち、最下位ビットから4ビットと(10010110)のうち、最下位ビットから4ビットとの加算が行われ、演算結果として、(100101100)が得られる。これは、10進数で表した場合には300であり、正確な演算結果に対して誤差を含んだ結果となる。
【0024】
以上から、従来の演算方法として、シリアル加算器を使用した場合には、下位ビットから演算を行うので、演算の途中では、正確な演算結果に対して小さな値が得られる。本実施形態に係る演算装置の演算方法を使用した場合には、上位ビットから演算を行うので、演算の途中でも、正確な演算結果に対して、従来の演算方法と比較して、近い値を得ることができる。図1に戻り、説明を続ける。
【0025】
[端末装置]
端末装置200は、例えば、スマートフォンやタブレット端末、パーソナルコンピュータなどである。端末装置200では、演算システムを利用するためのアプリケーションプログラム、或いはブラウザなどが起動し、前述したサービスをサポートする。端末装置200の一例はスマートフォンであり、アプリケーションプログラム(演算処理アプリ)が起動していることを前提とする。
演算処理アプリは、利用者Uの操作に応じて演算装置100と通信し、演算装置100が提供する演算サービスウェブサイトへアクセスする。端末装置200は、演算装置100へ演算要求を送信し、演算装置100から受信した演算応答に基づく処理を行う。
【0026】
(演算システムの動作)
図3は、実施形態に係る演算システムの動作の一例を示すシーケンスチャートである。
図3に示される例では、ユーザーUが、端末装置200を操作することによって、端末装置200は、演算装置100と接続し、演算装置100が提供している演算サービスウェブサイトにアクセスしていることを前提とする。
(ステップS1)
ユーザーUが、端末装置200に対して、複数の入力値を入力する操作を行うことによって、端末装置200は、入力された複数の入力値を含み、演算装置100を宛先とする演算要求を作成する。
(ステップS2)
端末装置200は、作成した演算要求を、演算装置100へ送信する。
(ステップS3)
演算装置100において、通信部110は、端末装置200が送信した演算要求を受信する。
(ステップS4)
演算装置100において、受付部120は、通信部110が受信した演算要求を取得し、取得した演算要求に含まれる複数の入力値を受け付ける。受付部120は、必要に応じて、複数の入力値の各々の桁合わせを行う。受付部120は、複数の入力値の各々を、シリアル転送のビットKに基づいて、最上位ビットからKビット毎に、演算部130へ出力する。
【0027】
(ステップS5)
演算装置100において、演算部130は、受付部120が受け付けた複数の入力値の各々を、最上位ビットからKビット毎に取得する。演算部130は、記憶部150の演算桁数情報152を取得する。演算部130は、取得した演算桁数情報152に基づいて、取得した複数の入力値の各々の最上位ビットから、一又は複数の桁数に該当する値まで、最上位ビットからKビット毎に取得する。
(ステップS6)
演算装置100において、演算部130は、取得した一又は複数の桁数に該当する値のうち、最上位ビットから、一又は複数の桁数に該当する値まで、複数の入力値の各々の加算を行う。演算部130は、最上位ビットから、一又は複数の桁数に該当する値まで、複数の入力値の各々の加算を行った結果を、最上位ビットからKビット毎に出力部140へ出力する。出力部140は、演算部130による演算結果を、加算時の遅延クロック数Lに基づいて、Lクロック後から、Kビット毎に最上位ビットから出力する。
(ステップS7)
演算装置100において、出力部140は、演算結果を含み、端末装置200を宛先とする演算応答を作成し、作成した演算応答を、通信部110へ出力する。
(ステップS8)
演算装置100において、通信部110は、出力部140が出力した演算応答を取得し、取得した演算結果を、端末装置200へ送信する。
その後、端末装置200は、演算装置100が送信した演算応答を受信し、受信した演算応答に含まれる演算結果を取得する。端末装置200は、取得した演算結果を出力する。
【0028】
実施形態に係る演算装置の演算方法と、従来の演算方法との比較を行った結果について説明する。
図4は、従来の演算方法の一例を示す図である。図4(a)と図4(b)とはパラレルの概略加算器の一例を示し、図4(c)はシリアル加算器の一例を示す。
図4(a)は、ESA(Equal Segmentation Adder)を示す。
図4(a)に示される例では、ESAは、bn-1からbn-kとan-1からan-kとが入力されることによってSn-1からSn-kを出力するk-bit Adderと、bn-k-1からbn-2kとan-kからan-2kとが入力されることによってSn-k-1からSn-2kを出力するk-bit Adderと、・・・、bk-1からbとak-1からaとが入力されることによってSk-1からSを出力するk-bit Adderとを備える。ESAは、クリティカルパスになるキャリーの伝搬を切って、セグメント化することで正確性を犠牲にしても高速化を実現する加算器である。
【0029】
図4(b)は、LOA(Lower-part-OR Adder)を示す。
図4(b)に示される例では、LOAは、bn-1からbとan-1からaとが入力されることによってSn-1からSを出力する(n-k)-bit Adderと、bk-1からbとak-1からaとが入力されることによってSk-1からSを出力するk-bit ORとを備える。LOAは、加算結果の下位ビットの方は全体の誤差に対して影響度が低いことを利用して、下位ビットの方を加算の代わりにORゲートにする。
このようにすることで、ESAと同じ効果を得る。ESAとLOAとは、どちらも精度と演算速度とのトレードオフを諮る方式である。ESAと、LOAとの両方に対して、実施形態に係る演算装置の演算方法は、シリアル演算で、概略計算を行う点で異なる。
【0030】
図4(c)に示すシリアル加算器は、前述したように、下位ビットから入力し、下位ビットから出力する。
図4(c)に示される例では、シリアル加算器は、a(i=0...n)が入力されるフリップフロップ(FF:flip-flop)と、bが入力されるフリップフロップと、aが入力されるフリップフロップの出力と、bが入力されるフリップフロップの出力とが入力されるFull Adderとを備える。さらに、シリアル加算器は、Full Adderの出力が入力される2個のフリップフロップを備える。2個のフリップフロップの各々の出力うち、一方の出力は、Siとされ、もう一方の出力は、Full Adderへ入力される。
図4(c)に示されるシリアル加算器による演算過程では、上位ビットがわからない。このため、図4(c)に示されるシリアル加算器では、全てのビットが出力されるまで、最終的な加算結果がわからない。これに対して、実施形態に係る演算装置は、上位ビットから演算を行い、最初のビットを出力することによって、演算結果の概略値を出力できる。さらに、誤差を含むが、出力されるビット数が増加するにしたがって、演算結果が、正確な演算結果に近づいていく。
【0031】
前述したパラレルの概略加算器、シリアル加算器、及び実施形態の演算方法について、演算時間の比較を行った。一例として、式(1)を求めるために、aからa(Nは、N>0の整数)までの総和を導出するアプリケーションを使用して、演算時間の比較を行った。
【0032】
【数1】
【0033】
図5は、実施形態に係る演算装置の演算方法と、従来の演算方法とを比較結果の例1を示す図である。図5は、演算時間の比較に使用した加算器の構成の一例を示す。図5には、一例として、aからa15の総和を導出する場合について示される。図5に示すように、入力aから入力a15の16個の総和が、ツリー状の構成した16個の加算器を使用して、導出される。
図6は、実施形態に係る演算装置の演算方法と、従来の演算方法との比較結果の例2を示す図である。
図6では、一般化して、入力値のビット数をMとし、入力値の数をNとして、総和を導出したときの演算時間を算出した。図6では、一例として、Mを、8、16、32、64とし、Nを、16、32、64、128とした場合について示す。また、演算時間は、クロック数で表した。
図6によれは、シリアル加算器を使用した場合には、M+2logNクロックで演算が完了する。パラレル加算器を使用した場合には、仮に、格段の計算は1クロックで計算できるとした場合に、M+logNクロックで演算が完了する。これらに対して、実施形態に係る演算装置の演算方法によれば、演算結果の最初のビットが出力されるまで、最短で、logNクロックである。また、実施形態に係る演算装置の演算方法によれば、M+2logNクロックで演算が完了する。
以上から、本実施形態に係る演算装置の演算方法では、前述した従来の演算方法と比較して、少ないクロック数で概算計算を実行できる。
【0034】
次に、本実施形態に係る演算装置が出力する演算結果の絶対誤差について検討を行った。
図7は、本実施形態に係る演算装置による演算結果の絶対誤差の一例を示す図である。図7において、横軸は絶対誤差値であり、縦軸は度数である。図7に示される例では、入力値の数を2個とし、2個の入力値の各々を、8ビットとした。2進数で表される8ビットの入力値は、0から255までの数を表現できるため、2個の入力値の加算結果は、0から510の範囲に含まれる。図7は、絶対誤差値が0から510の各々について、いくつ出現したかを示す数である度数をグラフ化した。
図7によれば、絶対誤差値が0の場合は度数が1800個程度であり、絶対誤差値が大きくなるにしたがって、度数が小さくなる。絶対誤差値が128より大きくなった場合は、度数が0となる。本実施形態に係る演算装置による演算方法によれば、絶対誤差値は、128以下に分布していることが分かる。このため、入力値の数を2個とし、2個の入力値の各々を、8ビットとし、絶対誤差値が128以下であることを許容できる場合には、本実施形態に係る演算装置による演算方法を使用しても問題ないことが分かる。
【0035】
前述した実施形態では、ハードウェアプロセッサが記憶部150に格納されたプログラム(ソフトウェア)を実行することにより、演算部130が、演算結果を導出する場合について説明したが、この例に限られない。例えば、演算部130をハードウェアで構成してもよい。
図8は、実施形態に係る演算装置の演算部の一例を示す図である。図8は、前述した演算部130を、ハードウェアによって構成した場合の一例を示す。
演算部130は、フリップフロップ11と、フリップフロップ12と、ORゲート13と、XORゲート14と、ANDゲート15と、マルチプレクサ16と、フリップフロップ17と、NOTゲート18と、フリップフロップ19とを含んで構成される。
【0036】
入力a(i=n・・・0)は、最上位ビットから、Kビット毎に、フリップフロップ11へ入力される。入力bは、最上位ビットから、Kビット毎に、フリップフロップ12へ入力される。
フリップフロップ11の出力は分岐され、一方はORゲート13へ入力され、他方はXORゲート14へ出力される。
フリップフロップ12の出力は分岐され、一方はORゲート13へ入力され、他方はXORゲート14へ出力される。
ORゲート13は、フリップフロップ11の出力と、フリップフロップ12の出力との論理和を導出し、論理和の導出結果を、ANDゲート15へ出力する。
XORゲート14は、フリップフロップ11の出力と、フリップフロップ12の出力との排他的論理和を導出し、排他的論理和の導出結果を、マルチプレクサ16へ出力する。
【0037】
マルチプレクサ16は、選択制御入力に基づいて、XORゲート14が出力した排他的論理和の導出結果と、「1」とのうちのいずれかを、フリップフロップ17へ出力する。フリップフロップ17の出力は分岐され、一方はマルチプレクサ16へ、選択制御入力として入力され、他方は、NOTゲート18へ出力される。
NOTゲート18は、フリップフロップ12の出力の論理否定を導出し、論理否定の導出結果を、ANDゲート15へ出力する。
ANDゲート15は、ORゲート13の出力と、NOTゲート18の出力との論理積を導出し、論理積の導出結果を、フリップフロップ19へ出力する。
フリップフロップ19は、演算結果Siを、Lクロック後から、Kビット毎に出力する。
【0038】
前述した実施形態では、端末装置200に演算要求を送信させることによって、演算装置100に演算を実行させる場合について説明したが、この例に限られない。例えば、複数の入力値を、演算装置100に直接入力してもよい。この場合、演算装置100は、入力された複数の入力値の各々を受け付け、受け付けた複数の入力値の各々を、シリアル転送のビットKに基づいて、最上位ビットからKビット毎に、一又は複数の桁数に該当する値まで取得する。演算装置100は、取得した複数の入力値の各々の一又は複数の桁数に該当する値のうち、最上位ビットからKビット毎に、一又は複数の桁数に該当する値まで、複数の入力値の各々の加算を行う。演算装置100は、例えば、演算結果を、加算時の遅延クロック数Lに基づいて、Lクロック後から、Kビット毎に最上位ビットから出力する。演算装置100は、演算結果を、表示装置(図示なし)に表示してもよい。
【0039】
前述した実施形態では、シリアル転送のビットKが1、加算時の遅延クロック数Lが1である場合について説明したが、この例に限られない。演算部130は、シリアル転送のビットKに基づいて、最上位ビットからKビット(Kは、演算桁数情報152の値≧K>0の整数)毎に加算を行うようにしてもよい。この場合、出力部は、加算時の遅延クロック数Lに基づいて、L(Lは、L>複数の入力値の数)クロック後から、Kビット毎に最上位ビットから加算された結果を出力する。
このように構成することによって、桁上げなどを反映できるため、シリアル転送のビットKが1、加算時の遅延クロック数Lが1である場合よりも、正確な演算結果に近い値を得ることができる。
前述した実施形態では、シリアル転送のビットKと、加算時の遅延クロック数Lとが、演算装置100に設定されている場合について説明したが、この例に限られない。例えば、ユーザーUが、端末装置200に対して、シリアル転送のビットKと、加算時の遅延クロック数Lとを入力する操作を行うことによって、端末装置200は、入力されたシリアル転送のビットKを示す情報と、加算時の遅延クロック数Lを示す情報とを含み、演算装置100を宛先とする演算要求を作成するようにしてもよい。
前述した実施形態では、演算装置100において、演算部130が、シリアル転送のビットKに基づいて、取得した複数の入力値の各々を、一又は複数の桁数に該当する値のうち、最上位ビットから、Kビット毎に、一又は複数の桁数に該当する値まで、複数の入力値の各々の加算を行う。そして、出力部140が、加算時の遅延クロック数Lに基づいて、Lクロック後から、Kビット毎に出力する場合について説明したが、この例に限られない。例えば、演算部130は、最上位ビットから、Kビット毎の加算結果が、閾値以上である場合に、演算を中止してもよい。仮に、演算結果が、閾値以上であるか否かを判定する場合に、演算結果が閾値以上であることが判明した後に、演算を継続しても、その演算は不要であるためである。このように構成することによって、不要な演算を削減できる。
【0040】
実施形態に係る演算装置によれば、演算装置100は、複数の入力値を受け付ける受付部120と、演算結果に許容される誤差に基づいて設定されている最上位ビットからの桁数に基づいて、複数の入力値の各々の最上位ビットから桁数まで、前記受付部が前記最上位ビットからKビット(Kは、K>0の整数)毎に出力した複数の入力値の各々の加算を、前記最上位ビットからKビット毎に行う演算部130と、演算部130による加算結果を、L(Lは、L>0の整数)クロック後から、Kビット毎に最上位ビットから出力する出力部140とを備える。
このように構成することによって、演算装置100は、複数のビットシリアルデータなどの入力値を、上位ビットからKビット毎に受け取り、入力値の全ビットを受け取る前に、Kビット毎に加算し、加算によって得られる演算結果を、Lクロック後から、Kビット毎に出力できるため、概略計算結果を出力できる。このとき,演算結果には誤差が含まれるが、本実施形態では,その誤差の範囲が確定できるため、許容誤差範囲であれば、短いレイテンシで結果を得ることができる。
また、桁上げなどを反映できるため、最上位ビットから1ビット毎に加算を行う場合よりも、正確な演算結果に近い値を得ることができる。
さらに、演算部130は、最上位ビットの加算結果が、閾値以上である場合に、加算を中止する。このように構成することによって、不要な演算を削減できる。
【0041】
実施形態に係る演算装置は、組合せ最適化問題を近似解法で解くハードウェア・アクセラレータ、人工知能、ニューラルネット・アクセラレータなどの大量のデータを処理するが計算精度はある程度誤差を含んでいても構わない分野へ応用できる。
特に、組合せ最適化問題の近似解法の一つであるシミュレーティッド・アニーリング(SA)、遺伝的アルゴリズム(GA)、粒子最適化法(PSO)などは大量の計算を実行するが、個々の計算の正確性はさほど結果に影響しない。したがって、この様な汎用的な解法に適用することによって、応用範囲をさらに拡大できる。同様に、ディープニューラルネットワークの処理を、特にスパイキング・ニューラルネットワークのような構造に応用することによって小型化・低消費電力化を図ることができる。
【0042】
(実施形態の変形例)
[全体構成]
図9は、実施形態の変形例に係る演算装置を含む演算システムの構成図である。実施形態の変形例の演算システム1aは、演算装置100aと、一以上利用者Uにより使用される端末装置200とを備える。
演算装置100aと、端末装置200とは、ネットワークNWを介して互いに通信可能である。
【0043】
ユーザーUが、端末装置200に対して、演算装置100aと接続する操作を行うことによって、端末装置200は、ネットワークNWを介して、演算装置100aに接続する。端末装置200は、演算装置100aが提供する演算サービスウェブサイトへアクセスする。
ユーザーUは、演算サービスウェブサイトの表示にしたがって、端末装置200に対して、複数の入力値に加え、誤差情報を入力する操作を行う。
端末装置200は、ユーザーUが入力した複数の入力値と誤差情報とを取得し、取得した複数の入力値と誤差情報とを含み、演算装置100aを宛先とする演算要求を作成する。端末装置200は、作成した演算要求を、演算装置100aへ送信する。
【0044】
演算装置100aは、端末装置200が送信した演算要求を受信する。演算装置100は、受信した演算要求に含まれる複数の入力値の各々と、誤差情報とを受け付ける。演算装置100aは、受け付けた誤差情報に関連付けて記憶されている桁数を示す情報を取得し、取得した桁数を示す情報を設定する。演算装置100aは、設定した桁数を示す情報に基づいて、複数の入力値の各々の最上位ビットから、桁数に該当する値を取得する。演算装置100aは、取得した一又は複数の桁数に該当する値のうち、最上位ビットから、桁数に該当する値まで、複数の入力値の各々の加算を、シリアル転送のビット数Kに基づいて、最上位ビットからKビット(Kは、K>0の整数)毎に行う。つまり、最上位ビットから、桁数より下位のビットは零として扱われる。演算装置100aは、演算結果を、加算時の遅延クロック数Lに基づいて、L(Lは、L>0の整数)クロック後から、Kビット毎に出力する。例えば、演算装置100aは、演算結果を、最上位ビットから、Kビット毎に出力する。演算装置100aは、演算結果を含み、端末装置200を宛先とする演算応答を作成し、作成した演算応答を、端末装置200へ送信する。
端末装置200は、演算装置100aが送信した演算応答を受信し、受信した演算応答に含まれる演算結果を取得する。端末装置200は、取得した演算結果を出力する。
以下、演算システム1aに含まれる演算装置100aと、端末装置200とのうち、実施形態とは異なる演算装置100aについて説明する。
【0045】
[演算装置100a]
演算システム1aに含まれる演算装置100aは、パーソナルコンピュータ、サーバー、又は産業用コンピュータ等の装置によって実現される。演算装置100aは、例えば、通信部110と、受付部120aと、演算部130aと、出力部140と、記憶部150と、設定部160とを備える。
記憶部150aは、HDDやフラッシュメモリ、RAM、ROMなどにより実現される。記憶部150aは、誤差情報桁数関連テーブル154が記憶される。
誤差情報桁数関連テーブル154は、誤差情報と、演算に使用する最上位ビットからの桁数を示す情報とを関連付けたテーブル形式の情報である。誤差情報桁数関連テーブル154には、誤差情報の値が小さくなるほど、演算に使用する最上位ビットからの桁数の値は大きくなり、誤差情報の値が小さくなるほど、演算桁数情報152の値は小さくなるように、誤差情報と、桁数を示す情報とが記憶される。誤差情報の値が小さくなるほど、演算結果に要求される精度が高くなり、誤差情報の値が大きくなるほど、演算結果に要求される精度が低くなるためである。
【0046】
受付部120a、演算部130a、出力部140、及び設定部160は、例えば、CPUなどのハードウェアプロセッサが記憶部150aに格納されたプログラム(ソフトウェア)を実行することにより実現される。また、これらの機能部のうち一部または全部は、LSIやASIC、FPGA、GPUなどのハードウェア(回路部;circuitryを含む)によって実現されてもよいし、ソフトウェアとハードウェアの協働によって実現されてもよい。
プログラムは、予めHDDやフラッシュメモリなどの記憶装置(非一過性の記憶媒体を備える記憶装置)に格納されていてもよいし、DVDやCD-ROMなどの着脱可能な記憶媒体(非一過性の記憶媒体)に格納されており、記憶媒体がドライブ装置に装着されることでインストールされてもよい。
【0047】
受付部120aは、通信部110が受信した演算要求に含まれる複数の入力値と、誤差情報とを受け付ける。受付部120aが受け付けた複数の入力値は演算部130へ出力され、誤差情報は設定部160へ出力される。ここで、受付部120aは、受け付けた複数の入力値の各々の桁数が異なる場合には、桁合わせを行う。受付部120aは、複数の入力値の各々を、シリアル転送のビットKに基づいて、最上位ビットからKビット毎に、演算部130aへ出力する。ここで、シリアル転送のビットKは、予め設定されている。
設定部160は、受付部120aが受け付けた誤差情報を取得する。設定部160は、記憶部150aに記憶されている誤差情報桁数関連テーブル154から、取得した誤差情報に関連付けて記憶されている桁数を示す情報を取得し、取得した桁数を示す情報を設定する。
演算部130aは、受付部120aが受け付けた複数の入力値の各々を、最上位ビットからKビット毎に取得する。演算部130aは、設定部160が設定した桁数を示す情報を取得する。演算部130aは、取得した桁数を示す情報に基づいて、取得した複数の入力値の各々の最上位ビットから、桁数を示す情報に該当する値まで、最上位ビットからKビット毎に取得する。
演算部130aは、取得した一又は複数の桁数に該当する値のうち、最上位ビットから、桁数を示す情報に該当する値まで、複数の入力値の各々の加算を行う。演算部130aは、最上位ビットから、桁数に該当する値まで、複数の入力値の各々の加算を行った結果を、最上位ビットからKビット毎に出力部140へ出力する。演算部130aは、最上位ビットから、桁数を示す情報に該当する値より下位ビットは0として処理する。
【0048】
(演算システムの動作)
図10は、実施形態の変形例に係る演算システムの動作の一例を示すシーケンスチャートである。
図10に示される例では、ユーザーUが、端末装置200を操作することによって、端末装置200は、演算装置100aと接続し、演算装置100aが提供している演算サービスウェブサイトにアクセスしていることを前提とする。
(ステップS11)
ユーザーUが、端末装置200に対して、複数の入力値と、誤差情報とを入力する操作を行うことによって、端末装置200は、入力された複数の入力値と、誤差情報とを含み、演算装置100aを宛先とする演算要求を作成する。
(ステップS12)
端末装置200は、作成した演算要求を、演算装置100aへ送信する。
(ステップS13)
演算装置100aにおいて、通信部110は、端末装置200が送信した演算要求を受信する。
(ステップS14)
演算装置100aにおいて、受付部120aは、通信部110が受信した演算要求を取得し、取得した演算要求に含まれる複数の入力値と、誤差情報とを受け付ける。受付部120aは、必要に応じて、複数の入力値の各々の桁合わせを行う。受付部120aは、複数の入力値の各々を、シリアル転送のビットKに基づいて、最上位ビットからKビット毎に、演算部130aへ出力する。
【0049】
(ステップS15)
演算装置100aにおいて、設定部160は、受付部120aが受け付けた誤差情報を取得し、取得した誤差情報に関連付けて記憶されている桁数を示す情報を、記憶部150aの誤差情報桁数関連テーブル154から取得する。設定部160は、取得した桁数を示す情報を設定する。
(ステップS16)
演算装置100aにおいて、演算部130aは、受付部120が受け付けた複数の入力値の各々を、最上位ビットからKビット毎に取得する。演算部130aは、設定部160が設定した桁数を示す情報を取得する。演算部130aは、取得した桁数を示す情報に基づいて、取得した複数の入力値の各々の最上位ビットから、桁数を示す情報に該当する値まで、最上位ビットからKビット毎に取得する。
(ステップS17)
演算装置100aにおいて、演算部130aは、取得した桁数を示す情報に該当する値のうち、最上位ビットから、桁数を示す情報に該当する値まで、複数の入力値の各々の加算を行う。演算部130aは、最上位ビットから、桁数に該当する値まで、複数の入力値の各々の加算を行った結果を、最上位ビットからKビット毎に出力部140へ出力する。出力部140は、演算部130aによる演算結果を、加算時の遅延クロック数Lに基づいて、Lクロック後から、Kビット毎に最上位ビットから出力する。
(ステップS18)
演算装置100aにおいて、出力部140は、演算結果を含み、端末装置200を宛先とする演算応答を作成し、作成した演算応答を、通信部110へ出力する。
(ステップS19)
演算装置100aにおいて、通信部110は、出力部140が出力した演算応答を取得し、取得した演算結果を、端末装置200へ送信する。
その後、端末装置200は、演算装置100aが送信した演算応答を受信し、受信した演算応答に含まれる演算結果を取得する。端末装置200は、取得した演算結果を出力する。
【0050】
前述した実施形態の変形例では、端末装置200に演算要求を送信させることによって、演算装置100aに演算を実行させる場合について説明したが、この例に限られない。例えば、複数の入力値と、誤差情報とを、演算装置100aに直接入力してもよい。この場合、演算装置100aは、入力された複数の入力値の各々と、誤差情報とを受け付け、受け付けた誤差情報に関連付けて記憶されている桁を示す情報を、記憶部150aの誤差情報桁数関連テーブル154から取得する。演算装置100aは、取得した桁を示す情報を設定する。演算装置100aは、複数の入力値の各々を、シリアル転送のビットKに基づいて、最上位ビットからKビット毎に、設定された桁数を示す情報に該当する値まで取得する。演算装置100aは、取得した複数の入力値の各々の桁数を示す情報に該当する値のうち、最上位ビットからKビット毎に、桁数を示す情報に該当する値まで、複数の入力値の各々の加算を行う。演算装置100aは、例えば、演算結果を、演算時の遅延クロック数Lに基づいて、Lクロック後から、Kビット毎に最上位ビットから出力する。演算装置100aは、演算結果を、表示装置(図示なし)に表示してもよい。
前述した実施形態の変形例では、シリアル転送のビットKが1、加算時の遅延クロック数Lが1である場合について説明したが、この例に限られない。演算部130aは、シリアル転送のビットKに基づいて、最上位ビットからKビット(Kは、桁数を示す情報の値≧K>0の整数)毎に加算を行うようにしてもよい。この場合、出力部は、加算時の遅延クロック数Lに基づいて、L(Lは、L>複数の入力値の数)クロック後から、Kビット毎に最上位ビットから加算された結果を出力する。
このように構成することによって、桁上げなどを反映できるため、シリアル転送のビットKが1、加算時の遅延クロック数Lが1である場合よりも、正確な演算結果に近い値を得ることができる。
前述した実施形態の変形例では、シリアル転送のビットKと、加算時の遅延クロック数Lとが、演算装置100aに設定されている場合について説明したが、この例に限られない。例えば、ユーザーUが、端末装置200に対して、シリアル転送のビットKと、加算時の遅延クロック数Lとを入力する操作を行うことによって、端末装置200は、入力されたシリアル転送のビットKを示す情報と、加算時の遅延クロック数Lを示す情報とを含み、演算装置100aを宛先とする演算要求を作成するようにしてもよい。
【0051】
前述した実施形態の変形例では、演算装置100aにおいて、演算部130aが、シリアル転送のビットKに基づいて、取得した複数の入力値の各々を、桁数に該当する値のうち、最上位ビットから、Kビット毎に、一又は複数の桁数に該当する値まで、複数の入力値の各々の加算を行う。そして、出力部140が、加算時の遅延クロック数Lに基づいて、Lクロック後から、Kビット毎に出力する場合について説明したが、この例に限られない。例えば、演算部130aは、最上位ビットから、Kビット毎の加算結果が、閾値以上である場合に、演算を中止してもよい。仮に、演算結果が、閾値以上であるか否かを判定する場合に、演算結果が閾値以上であることが判明した後に、演算を継続しても、その演算は不要であるためである。このように構成することによって、不要な演算を削減できる。
前述した実施形態の変形例では、演算装置100aは、誤差情報を受け付け、受け付けた誤差情報に関連付けて記憶されている桁を示す情報を、記憶部150aの誤差情報桁数関連テーブル154から取得する場合について説明したが、この例に限られない。例えば、記憶部150aに、誤差情報から、桁数を導出する演算式を記憶してもよい。この場合、演算部130aは、演算式に基づいて桁数を導出して設定してもよい。
【0052】
実施形態の変形例に係る演算装置によれば、演算装置100aは、複数の入力値を受け付ける受付部120aと、演算結果に許容される誤差に基づいて設定されている最上位ビットからの桁数に基づいて、複数の入力値の各々の最上位ビットから桁数まで、受付部120aが最上位ビットからKビット(Kは、K>0の整数)毎に出力した複数の入力値の各々の加算を、最上位ビットからKビット毎に行う演算部130aと、演算部130aによる加算結果を、L(Lは、L>0の整数)クロック後から、Kビット毎に最上位ビットから出力する出力部140とを備える。
このように構成することによって、演算装置100aは、複数のビットシリアルデータなどの入力値を、上位ビットからKビット毎に受け取り、入力値の全ビットを受け取る前に、Kビット毎に加算し、加算によって得られる演算結果を、Lクロック後から、Kビット毎に出力できるため、概略計算結果を出力できる。このとき,演算結果には誤差が含まれるが、本実施形態では,その誤差の範囲が確定できるため、許容誤差範囲であれば、短いレイテンシで結果を得ることができる。
【0053】
さらに、受付部120aは、演算結果に要求される誤差情報を受け付け、演算装置100aは、受付部120aが受け付けた誤差情報に基づいて、加算に使用する複数の入力値の各々の最上位ビットからの桁数を設定する設定部160を備え、演算部130aは、設定部が設定した桁数に基づいて、受付部120aが、複数の入力値の各々の最上位ビットから設定部160が設定した桁数まで、最上位ビットからKビット毎に出力した複数の入力値の各々の加算を、最上位ビットからKビット毎に行う。
このように構成することによって、演算結果に要求される誤差情報に基づいて、加算に使用する複数の入力値の各々の最上位ビットからの桁数を設定できるため、演算の柔軟性を向上できる。
さらに、設定部160は、演算結果に要求される誤差情報と、複数の入力値の各々の最上位ビットからの桁数とを関連付けて記憶する記憶部150aから、受付部120aが受け付けた誤差情報に基づいて、複数の入力値の各々の最上位ビットからの桁数を取得する。
このように構成することによって、記憶部150aに記憶されている演算結果に要求される誤差情報と、複数の入力値の各々の最上位ビットからの桁数とを関連付けた情報から、受け付けた誤差情報に基づいて、複数の入力値の各々の最上位ビットからの桁数を取得できるため、演算によって、複数の入力値の各々の最上位ビットからの桁数を導出するよりも、処理を簡略化できる。
【0054】
以上、本発明の実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更、組合わせを行うことができる。これら実施形態及びその変形例は、発明の範囲や要旨に含まれると同時に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
なお、前述の演算装置100、端末装置200、演算装置100aは内部にコンピュータを有している。そして、前述した各装置の各処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、CD-ROM、DVD-ROM、半導体メモリなどをいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしてもよい。
また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。
さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
【符号の説明】
【0055】
1、1a…演算システム、 11、12、17、19…フリップフロップ、13…ORゲート、14…XORゲート、15…ANDゲート、16…マルチプレクサ、18…NOTゲート、100、100a…演算装置、 110…通信部、 120、120a…受付部、 130,130a…演算部、 140…出力部、 150…記憶部、 160…設定部、 152…演算桁数情報、 154…誤差情報桁数関連テーブル、200…端末装置
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10