(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024076484
(43)【公開日】2024-06-06
(54)【発明の名称】演算装置および演算方法
(51)【国際特許分類】
G06F 7/548 20060101AFI20240530BHJP
G06F 12/00 20060101ALI20240530BHJP
G06F 9/38 20180101ALI20240530BHJP
G06F 1/03 20060101ALI20240530BHJP
G06F 7/57 20060101ALI20240530BHJP
【FI】
G06F7/548 A
G06F12/00 570A
G06F9/38 370X
G06F1/03
G06F7/57 204
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022188036
(22)【出願日】2022-11-25
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100189201
【弁理士】
【氏名又は名称】横田 功
(72)【発明者】
【氏名】依田 勝洋
【テーマコード(参考)】
5B013
5B160
【Fターム(参考)】
5B013DD05
5B160KA01
5B160KA05
(57)【要約】
【課題】複数の演算器からアクセス要求が生じる場合においても性能低下を抑制できるようにする。
【解決手段】複数の角度の各々に対応する余弦値を記憶する第一テーブルを演算器3の数に応じた数で等分して生成した複数の分割第一テーブル9をそれぞれ格納する複数の余弦値用バンクと、複数の角度の各々に対応する正弦値を記憶する第二テーブルを演算器3の数に応じた数で等分して生成した複数の分割第二テーブル9をそれぞれ格納する複数の正弦値用バンクと、複数の演算器3のそれぞれから入力される角度値を第一調停角度値と第二調停角度値とに分割するとともに、複数の演算器3のそれぞれから入力される角度値に対応する第一調停角度値が、異なる余弦値用バンクおよび正弦値用バンクになるように設定する調停部5とを有する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数の演算器と、
複数の角度の各々に対応する余弦値を記憶する第一テーブルを前記演算器の数に応じた数で等分して生成した複数の分割第一テーブルをそれぞれ格納する複数の余弦値用バンクと、
複数の角度の各々に対応する正弦値を記憶する第二テーブルを前記演算器の数に応じた数で等分して生成した複数の分割第二テーブルをそれぞれ格納する複数の正弦値用バンクと、
前記複数の演算器のそれぞれから入力される角度値を第一調停角度値と第二調停角度値とに分割するとともに、前記複数の演算器のそれぞれから入力される角度値に対応する第一調停角度値が、異なる前記余弦値用バンクおよび前記正弦値用バンクになるように設定する調停部と、
前記第一調停角度値に基づいて前記分割第一テーブルを参照して、前記第一調停角度値の余弦値を取得し、前記第一調停角度値に基づいて前記分割第二テーブルを参照して、前記第一調停角度値の正弦値を取得し、前記第二調停角度値に基づいて前記第二調停角度値の余弦値と前記第二調停角度値の正弦値とを取得する取得部と、
前記第一調停角度値の余弦値と、前記第二調停角度値の余弦値と、前記第一調停角度値の正弦値と、前記第二調停角度値の正弦値とに基づいて、前記複数の演算器から入力される角度値に対応する余弦値および正弦値の少なくとも一部を生成する出力生成部と
を有することを特徴とする、演算装置。
【請求項2】
前記調停部が、
前記演算器から入力される角度値から前記余弦値用バンクもしくは前記正弦値用バンクの幅の整数倍の値を減算した値が、前記演算器に対応する前記余弦値用バンクもしくは前記正弦値用バンクの角度範囲未満である場合に、
前記演算器から入力される角度値から前記余弦値用バンクもしくは前記正弦値用バンクの幅の整数倍の値を減算した値を前記第一調停角度値として設定し、
前記余弦値用バンクもしくは前記正弦値用バンクの幅の前記整数倍の値を、前記第二調停角度値として設定する
ことを特徴とする、請求項1に記載の演算装置。
【請求項3】
前記演算器の数に応じた数が、前記複数の演算器から前記角度値が同時に入力されうる入力数の最大値である
ことを特徴とする請求項1または2に記載の演算装置。
【請求項4】
前記演算器の数に応じた数が、前記複数の演算器の数である
ことを特徴とする、請求項3に記載の演算装置。
【請求項5】
前記第二調停角度値の値に応じた余弦値および正弦値を出力するロジック回路を備え、
前記取得部が、
前記第二調停角度値を前記ロジック回路に入力することで、前記第二調停角度値の余弦値および正弦値を取得する
ことを特徴とする、請求項1または2に記載の演算装置。
【請求項6】
前記第二調停角度値の値に応じた余弦値および正弦値を予め記録した参照情報を備え、
前記取得部が、
前記第二調停角度値に基づいて前記参照情報を参照することで、前記第二調停角度値の余弦値および正弦値を取得する
ことを特徴とする、請求項1または2に記載の演算装置。
【請求項7】
前記出力生成部が、前記第一調停角度値の余弦値と、前記第二調停角度値の余弦値と、前記第一調停角度値の正弦値と、前記第二調停角度値の正弦値とに基づいて、加法定理を用いて前記余弦値および前記正弦値の少なくとも一部を生成する
ことを特徴とする、請求項1または2に記載の演算装置。
【請求項8】
複数の演算器と、
複数の角度の各々に対応する余弦値を記憶する第一テーブルを前記演算器の数に応じた数で等分して生成した複数の分割第一テーブルをそれぞれ格納する複数の余弦値用バンクと、
複数の角度の各々に対応する正弦値を記憶する第二テーブルを前記演算器の数に応じた数で等分して生成した複数の分割第二テーブルをそれぞれ格納する複数の正弦値用バンクと、
を有する演算装置が、
前記複数の演算器のそれぞれから入力される角度値を第一調停角度値と第二調停角度値とに分割するとともに、前記複数の演算器のそれぞれから入力される角度値に対応する第一調停角度値が、異なる前記余弦値用バンクおよび前記正弦値用バンクになるように設定し、
前記第一調停角度値に基づいて前記分割第一テーブルを参照して、前記第一調停角度値の余弦値を取得し、前記第一調停角度値に基づいて前記分割第二テーブルを参照して、前記第一調停角度値の正弦値を取得し、前記第二調停角度値に基づいて前記第二調停角度値の余弦値と前記第二調停角度値の正弦値とを取得し、
前記第一調停角度値の余弦値と、前記第二調停角度値の余弦値と、前記第一調停角度値の正弦値と、前記第二調停角度値の正弦値とに基づいて、前記複数の演算器から入力される角度値に対応する余弦値および正弦値の少なくとも一部を生成する
処理を実行することを特徴とする、演算方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算装置および演算方法に関する。
【背景技術】
【0002】
並列演算装置として、複数の演算器が行列状に配置された演算アレイを有する、シストリックアレイが知られている。シストリックアレイにおいては、一般的に、演算器としてPE(Processing Unit)が用いられる。PEは、例えば、積和演算器であってよい。
【0003】
シストリックアレイは、FPGA(Field Programmable Gate Array)より汎用性が劣るが、演算性能は高いという特性を有する。
【0004】
このようなシストリックアレイにおいては、sinやcos等の特殊関数の演算には、cosの値を有するLUT(Look Up Table)と、sinの値を有するLUTとを参照して値を取得する手法が多く用いられる。
【0005】
また、シストリックアレイにおいては、複数のLUTを並列に持たせたいという要求がある。例えば、16並列のPEの出力を入力とする16並列LUTを備えることが期待される。しかしながら、三角関数のLUTは、ビット幅が広がると大きくなるので、LUTを並列に持たせることで、LUTの規模が大きくなり回路面積を圧迫する。
【0006】
そこで、LUTのサイズを小さくすることが求められている。例えば、入力の角度情報のビット領域ごとにテーブル引きを行なうことで、テーブル自体を小さくする手法が知られている(例えば、特許文献1参照)。また、90度分の三角関数テーブルと加法定理とを用いてsin,cosを求めることで、三角関数テーブルのビット幅を減らす手法も知られている(例えば、特許文献2参照)。さらに、三角関数の計算結果を矩形波で近似し、近似した2つの角度から加法定理で新の値を求める手法も知られている(例えば、特許文献3参照)。
【0007】
また、これらの手法の他に、複数のPEからのアクセス要求に対してLUTを格納するメモリのサイズを小さくする手法が考えられる。
【0008】
図10は従来の並列演算装置におけるLUTを示す図である。
【0009】
この
図10に示す構成においては、2つのPE#0,#1と4つのメモリ(バンク#0~#3)とが全結合されている。
【0010】
LUT(変換テーブル)は90度分の変換テーブルを22.5度(90度の1/4)ずつの4つの部分に分割され、バンク#0~#3に分散して格納されている。バンク#0には0度以上22.5度未満の変換テーブルが、バンク#1には22.5度以上45度未満の変換テーブルが、バンク#2には45度以上67.5度未満の変換テーブルが、バンク#3には67.5度以上90度未満の変換テーブルが、それぞれ格納される。
【0011】
2つのPE#0,#1は、それぞれバンク#0~#3と接続され、各PE#0,#1がそれぞれバンク#0~#3に対するアクセス要求を発行する。
【0012】
PE#0から要求される角度(例えば、60度)が持つバンク(例えば、バンク#2)と、PE#1から要求される角度(例えば、88度)を持つバンク(例えば、バンク#3)とが異なる場合には、これらのPE#0,#1は同時にバンクに対してアクセス可能となる。
【先行技術文献】
【特許文献】
【0013】
【特許文献1】特開平10-003379号公報
【特許文献2】特開2021-009555号公報
【特許文献3】米国特許第4077063号明細書
【発明の概要】
【発明が解決しようとする課題】
【0014】
しかしながら、このような
図10に示すような従来の並列演算装置において、2つのPE#0,#1のそれぞれから、同じバンクに同時にアクセス要求が発行された場合には、これらのアクセス要求が競合(衝突)し、一方のアクセス要求の処理が待たされることになる。
【0015】
ここで、多数のPEが行列状に配置されたシストリックアレイにおいては、1つのPEのアクセス要求が待たされることにより、関連する他のPEの処理にも影響が及び、大きな性能低下が生じるおそれがある。
【0016】
1つの側面では、本発明は、複数の演算器からアクセス要求が生じる場合においても性能低下を抑制できるようにすることを目的とする。
【課題を解決するための手段】
【0017】
このため、この演算装置は、複数の演算器と、複数の角度の各々に対応する余弦値を記憶する第一テーブルを前記演算器の数に応じた数で等分して生成した複数の分割第一テーブルをそれぞれ格納する複数の余弦値用バンクと、複数の角度の各々に対応する正弦値を記憶する第二テーブルを前記演算器の数に応じた数で等分して生成した複数の分割第二テーブルをそれぞれ格納する複数の正弦値用バンクとを有する。
また、この演算装置は、前記複数の演算器のそれぞれから入力される角度値を第一調停角度値と第二調停角度値とに分割するとともに、前記複数の演算器のそれぞれから入力される角度値に対応する第一調停角度値が、異なる前記余弦値用バンクおよび前記正弦値用バンクになるように設定する調停部と、前記第一調停角度値に基づいて前記分割第一テーブルを参照して、前記第一調停角度値の余弦値を取得し、前記第一調停角度値に基づいて前記分割第二テーブルを参照して、前記第一調停角度値の正弦値を取得し、前記第二調停角度値に基づいて前記第二調停角度値の余弦値と前記第二調停角度値の正弦値とを取得する取得部と、前記第一調停角度値の余弦値と、前記第二調停角度値の余弦値と、前記第一調停角度値の正弦値と、前記第二調停角度値の正弦値とに基づいて、前記複数の演算器から入力される角度値に対応する余弦値および正弦値の少なくとも一部を生成する出力生成部とを有する。
【発明の効果】
【0018】
一実施形態によれば、複数の演算器からアクセス要求が生じる場合においても性能低下を抑制できるようにすることができる。
【図面の簡単な説明】
【0019】
【
図1】実施形態の一例としての演算装置の構成を模式的に示す図である。
【
図2】実施形態の一例としての演算装置の調停部,取得部および結果整形部の詳細を説明するための図である。
【
図3】実施形態の一例としての演算装置におけるLUTの構成を例示する図である。
【
図4】実施形態の一例としての演算装置の調停部の処理を説明するための図である。
【
図5】実施形態の一例としての演算装置の調停部の処理を説明するための図である。
【
図6】実施形態の一例としての演算装置における処理を説明するためのフローチャートである。
【
図7】実施形態の一例としての演算装置におけるLUTの構成の変形例を示す図である。
【
図8】実施形態の変形例としての演算装置の調停部,取得部および結果整形部の詳細を説明するための図である。
【
図9】実施形態の変形例としての演算装置の処理を説明するためのフローチャートである。
【
図10】従来の並列演算装置におけるLUTを示す図である。
【発明を実施するための形態】
【0020】
以下、図面を参照して本演算装置および演算方法にかかる実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形(実施形態および各変形例を組み合わせる等)して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0021】
(A)構成
図1は実施形態の一例としての演算装置1の構成を模式的に示す図である。
【0022】
演算装置1は、
図1に例示するように、PEアレイ2,調停部5,結果整形部6,データ操作部7,データメモリ8,マイクロコントローラ10,取得部11および複数のLUT9を有する。
【0023】
PEアレイ2は、複数のPE3と複数のレジスタ4とを有する。PEアレイ2においては、複数のPE3が行列状(例えば、12列×8行)に配置されている。PE3は、例えば、積和演算器であってよい。
【0024】
また、PEアレイ2において、各行の間にレジスタ4が配置されている。各PE3はレジスタ4を用いて演算を行なう。
【0025】
データメモリ8は、PE3が演算に用いるデータや、PE3による演算結果を記憶するメモリである。
【0026】
データ操作部7は、データメモリ8にアクセスしてデータの記憶や読み出しを行なうものである。
【0027】
マイクロコントローラ10は、データメモリ8とPEアレイ2との間におけるデータ転送を制御する。マイクロコントローラ10は、データ操作部7を介して、データメモリ8にデータの記憶や読み出しを実現する。
【0028】
図2は実施形態の一例としての演算装置1の調停部5,取得部11および結果整形部6の詳細を説明するための図である。
【0029】
この
図2においては、便宜上、4つのPE3を有する演算装置1を示す。複数のPE3のうち任意のPE3を特定するために、符号#iを用いてPE#iと表す場合がある。
図2に示す例においては、iは1~4の自然数である。iをPE特定番号といってよい。
【0030】
PE3は、sinやcos等の三角関数の演算を行なうに際して、LUTに対して角度値(θ)を含むアクセス要求を発行してsin値やcos値の取得を要求する。PE3は、このアクセス要求に対して応答されたsinθやcosθの値を取得する。便宜上、アクセス要求に含まれる角度値θを単にアクセス要求θという場合がある。
【0031】
本実施形態においては、各PE3が一度のタイミングで1つのアクセス要求を発行するものとする。すなわち、PE(演算器)3の数が、演算器の数に応じた数に相当する。
【0032】
また、
図2に例示する演算装置1は、45度(4π/16)分のcos用LUTを4つに分割することで生成した、4つのcos用LUT9aと、45度(4π/16)分のsin用LUTを4つに分割することで生成した、4つのsin用LUT9bとを有する。以下、cos用LUT9aとsin用LUTbを特に区別しない場合には、LUT9と表記する。各LUT9はそれぞれメモリ(バンク)に格納される。
【0033】
図3は実施形態の一例としての演算装置1におけるLUTの構成を例示する図である。
【0034】
本演算装置1においては、LUTは0~4π/16の角度範囲の値として備えられる。また、LUTは、PE3と同数のバンクに分割して格納される。
【0035】
この
図3に示す例においては、cos用とsin用とに、それぞれPE3の数(=4)と同数の4つのバンク#0~#3が備えられ、これらの4つのバンク#0~#3にLUTが均等に分割されて格納される。
【0036】
すなわち、バンク#0に0~π/16(0~11.25度)のLUT9が、バンク#1にπ/16~2π/16(11.25~22.5度)のLUT9が、バンク#2に2π/16~3π/16(22.5~33.75度)のLUT9が、バンク#3に3π/16~4π/16(33.75~45度)のLUT9が、それぞれ格納される。
【0037】
本実施形態においては、45度分のLUTが、アクセス主体数(PE3の数)に分割されることで、それぞれπ/16幅を有し、角度範囲が異なる4つのLUT9が生成される。各バンク#0~#3のそれぞれが、π/16の角度幅を有するといってよい。この角度幅(π/16)をバンク幅といってよい。
【0038】
cos用のLUTを分割することで、4つのcos用LUT9aが生成される。cos用のLUTは、π/4(45度)の角度範囲内における複数の角度の各々に対応する余弦値(cosの値)を記憶する第一テーブルに相当する。
【0039】
cos用のLUTをPE(演算器)3の数に応じた数で等分して生成した複数のcos用LUT9aは、分割第一テーブルに相当する。さらに、これらのcos用LUT9aを格納するバンクは、それぞれ格納する複数の余弦値用バンクに相当する。
【0040】
また、sin用のLUTを分割することで4つのsin用LUT9bが生成される。sin用のLUTは、π/4(45度)の角度範囲内における複数の角度の各々に対応する正弦値(sinの値)を記憶する第二テーブルに相当する。
【0041】
sin用のLUTをPE(演算器)3の数に応じた数で等分して生成した複数のsin用LUT9bは、分割第二テーブルに相当する。さらに、これらのsin用LUT9bを格納するバンクは、それぞれ格納する複数の正弦値用バンクに相当する。
【0042】
なお、LUTを分割して生成されるLUT9を分割LUT9といってもよい。
【0043】
調停部5は、PE3からのLUTに対するアクセス要求に基づき、LUT9にアクセスするための調停を行なう。調停部5は、複数のPE3からのLUTに対するアクセス要求に含まれる角度値のそれぞれを2つの角度(Ang1,Ang2)に分割し、これらの2つの角度の和で表す。
【0044】
具体的には、調停部5は、以下の不等式(1)を満たす最大のjを求める。jは1以上の整数である。PE#iからのアクセス要求をθiとする。iはPE特定番号である。本実施形態においては、各PE3は一度のタイミングで1つのアクセス要求を発行するので、iはアクセス要求を特定する番号も表す。
また、アクセス要求θiは、0≦θi≦(π/2)の値であってよい。
【0045】
(θi-j×π/16)<(i×π/16) ・・・(1)
上記の不等式(1)において、「θi-j×π/16」は、PE#iから発行されたアクセス要求θiからバンク幅のj倍の値を減算した値を示す。また、「i×π/16」は、当該アクセス要求を発行したPE#iに対応するバンク9の角度範囲を示す。
【0046】
調停部5は、PE#iから発行されたアクセス要求θiからバンク幅のj倍の値を減算した値が、当該アクセス要求を発行したPE#iに対応する角度範囲未満であるかを確認する。
【0047】
調停部5は、上記の不等式(1)が成立する場合に、PE#iからのアクセス要求θiをAng1とAng2とに分割する。アクセス要求θiはAng1とAng2との和で表すことができる。アクセス要求θiとAng1とAng2との関係を、「θi=Ang1+Ang2」と表してよい。
【0048】
調停部5は、上記の不等式(1)を満たすjに基づき、Ang1を以下の式(2)を用いて、また、Ang2を以下の式(3)を用いて、それぞれ表す。
【0049】
Ang1=θi-j×π/16 ・・・(2)
Ang2=j×π/16 ・・・(3)
Ang1は、アクセス要求θiを発行したPE#iに対応するバンク9における角度を示す。Ang2は、バンク幅の整数倍の値である。
【0050】
例えば、PE#1からのアクセス要求θ1(i=1)について、調停部5は、上記の不等式(1)を満たす最大のjを探索することで、θ1を以下に示すように2つの角度の和に分離する。
【0051】
θ1=(θ1-j×π/16)+(j×π/16)
ここで、右辺の項(θ1-j×π/16)はバンク#0における角度を表す。
【0052】
次に、調停部5は、PE#2からのアクセス要求θ2(i=2)について、上記の不等式(1)を満たす最大のjを探索する。
【0053】
このとき、上記の不等式(1)は、左辺が2×π/16以下、且つ、π/16以上になったところで条件を満たすものとなる。すなわち、バンク#1となり、調停部5は、アクセス要求θ2を、以下に示すような2つの角度に分割する。
【0054】
θ2=(θ2-j×π/16)+(j×π/16)
ここで、右辺の項(θ2-j×π/16)はバンク#1における角度を表す。
【0055】
調停部5は、PE3毎にAng1,Ang2を求める。すなわち、調停部5は、複数のPE3からの各アクセス要求について、Ang1,Ang2をそれぞれ求める。
【0056】
このとき、複数のPE#iからアクセス要求θiが発行された場合に、Ang1(=θi-j×π/16)は、PE特定番号に応じたバンク#(i-1)に属するものとなる。
【0057】
すなわち、PE#1からのアクセス要求θ1はバンク#0に、PE#2からのアクセス要求θ1はバンク#1に、PE#3からのアクセス要求θ1はバンク#2に、それぞれ属するものとなり、これにより、PE#1~PE#3からの各アクセス要求によるLUT9へのアクセスにバンク衝突が発生することがない。
【0058】
調停部5は、複数のEP(演算器)3のそれぞれから入力されるアクセス要求θi(角度値)を第一調停角度値(Ai,Ang1)と第二調停角度値(Bi,Ang2)とに分割するのである。
【0059】
また、調停部5は、複数のPE(演算器)3のそれぞれから入力されるアクセス要求θi(角度値)に対応する第一調停角度値(Ai)が、異なるcos用バンクおよびsin用バンクになるように設定する。
【0060】
調停部5は、複数のPE3からのアクセス要求毎に上記の不等式(1)を満たす最大のjを求めることで、バンク衝突の発生を抑止することができるのである。
【0061】
図4及び
図5は、それぞれ実施形態の一例としての演算装置1の調停部5の処理を説明するための図であり、PE3からのアクセス要求に基づいて生成される2つの角度を概念的に示す図である。
【0062】
これらの
図4および
図5においては、便宜上、バンク#0~#3に仮想的なバンク#4~#7を付加して拡張することで(破線参照)、アクセス要求θiのとりうる範囲0~8π/16を表している。
【0063】
これらの
図4および
図5に例示する仮想的なバンク空間においては、図中の左端がバンク空間の先頭であり、右端がバンク空間の末尾であるものとする。
【0064】
なお、バンク#4に4π/16~5π/16が、バンク#5に5π/16~6π/16が、バンク#6に6π/16~7π/16が、バンク#7に7π/16~8π/16が、それぞれ対応する。
【0065】
調停部5は、上記の不等式(1)を満たすjを求め、さらに、式(2)および式(3)に基づいてAng1およびAng2を求めることで、アクセス要求θiをバンク#0~#3のいずれか上の角度に対応させる。上記の不等式(1)を満たすjを求めることを探索するといってよい。
【0066】
以下、PE#iのアクセス要求θiに基づいて生成したAng1をAiと表してよく、また、PE#iのアクセス要求θiに基づいて生成したAng2をBiと表してよい。
図4においては、PE#1からのアクセス要求θ1に基づいて求めたAng1,Ang2を例示する。
【0067】
Ang2は、
図4に例示する仮想的なバンク空間において、所定のバンク(
図4に示す例では末尾のバンク#7)の右端位置であるπ/16区切りの位置から、先頭方向にπ/16の定数倍(
図4においては7倍)の位置まで進んだ長さを表す。
【0068】
また、Ang1は、このAng2の先頭位置であるπ/16区切りの位置(
図4に示す例ではバンク#0の右端位置)から、先頭方向にバンク幅(π/16)以下の値だけ進んだ長さを表す。
【0069】
図5において、符号Aは、PE#1からのアクセス要求θ1に対してAng1およびAng2を決定する過程を示し、符号Bは、PE#2からのアクセス要求θ2に対してAng1およびAng2を決定する過程を示す。
【0070】
調停部5は、PE特定番号が小さいPE3のアクセス要求から先に処理を行なってよい。
調停部5は、
図5の符号Aに示すように、先ず、アクセス要求θ1について、バンク空間の末尾(右端)から、jをインクリメントすることで1バンクずつ先頭に向かって(左方向)の探索を、Ang1が{(π/16)×1}以下となるまで行なう。この
図5においては、j=0,j=2,j=6の各場合のAng2(B1)の遷移を例示している。
【0071】
次に、調停部5は、
図5の符号Bに示すように、アクセス要求θ2について、バンク空間の末尾(右端)から、jをインクリメントすることで1バンクずつ先頭に向かって(左方向)の探索を、Ang1が{(π/16)×2}以下となるまで行なう。この
図5においては、j=0,j=2,j=4の各場合のAng2(B1)の遷移を例示している。
【0072】
アクセス要求θ2について、Ang1が{(π/16)×1}以下となる解もあるが、当該探索においては、先にAng1が{(π/16)×2}以下となる解を見つけてそこで止まるため、Ang1が(π/16)以下になることはない。
【0073】
調停部5は、その後、アクセス要求θ3に対しても、順次同様の処理を行なう。このアクセス要求θ3について、Ang1が{(π/16)×2}以下となる解もあるが、当該探索においては、先にAng1が{(π/16)×3}以下となる解を見つけてそこで止まる。
【0074】
調停部5が、複数のPE3からのアクセス要求に対して、同様の処理を繰り返し行なうことで、各PE3からのアクセス要求のAng1を異なるバンクに割り当てることができる。
【0075】
調停部5は、各PE3からのアクセス要求に基づいて生成したAng1(Ai)およびAng2(Bi)を、それぞれ取得部11に通知する。
【0076】
取得部11は、調停部5から通知されたAng1(Ai)をcos用LUT(分割第一テーブル)9aおよびsin用LUT(分割第二テーブル)9bのそれぞれに入力して、cos(Ai)およびsin(Ai)の値を取得する。
【0077】
例えば、
図2に例示する演算装置1には、4つのPE#1~#4が備えられている。取得部11は、これらの4つのPE3のそれぞれからのアクセス要求θ1~θ4に基づいて調停部5が生成した4つのAng1(A1~A4)のそれぞれをcos用LUT9aに入力してcos(A1),cos(A2),cos(A3),cos(A4)の各値を取得する。
【0078】
同様に、取得部11は、4つのPE3のそれぞれからのアクセス要求θ1~θ4に基づいて調停部5が生成した4つのAng1(A1~A4)のそれぞれをsin用LUT9bに入力してsin(A1),sin(A2),sin(A3),sin(A4)の各値を取得する。
【0079】
すなわち、取得部11は、Ang1,Ai(第一調停角度値)に基づいてcos用LUT9a(分割第一テーブル)を参照して、Ang1,Ai(第一調停角度値)の余弦値を取得する。また、取得部11は、Ang1,Ai(第一調停角度値)に基づいてsin用LUT9b(分割第二テーブル)を参照して、Ang1,Ai(第一調停角度値)の正弦値を取得する。
【0080】
また、取得部11は、調停部5から通知されたAng2(Bi)に基づいて、cos(Bi)およびsin(Bi)の値を取得する。取得部11は、Ang2,Bi(第二調停角度値)に基づいて当該Ang2,Bi(第二調停角度値)の余弦値と正弦値とを取得する。
Biはπ/16の整数倍(本例においては16通り)であり、とりうる値が限定され、パターン化することができる。そこで、例えば、パターン化されたBiの値に応じたcos(Bi)およびsin(Bi)の値を出力するロジック回路を備え、取得部11は、このロジック回路にAng2(Bi)の値を入力することで、cos(Bi)およびsin(Bi)の値を取得してよい。
【0081】
取得部11は、cos(Ai),sin(Ai),cos(Bi)およびsin(Bi)の各値を出力する。
【0082】
結果整形部6は、取得部11が出力するcos(Ai),sin(Ai),cos(Bi)およびsin(Bi)の各値を用いて、PE3からのアクセス要求θiに応じたcos(θi)およびsin(θi)を算出する。
【0083】
結果整形部6は、取得部11が出力するcos(Ai),sin(Ai),cos(Bi)およびsin(Bi)の各値を用いて、以下に示すように、加法定理によりcos(θi)およびsin(θi)を算出する。
【0084】
cos(θi)=cos(Ai)cos(Bi)-sin(Ai)sin(Bi)
sin(θi)=sin(Ai)cos(Bi)-cos(Ai)sin(Bi)
結果整形部6は、Ang1,Ai(第一調停角度値)の余弦値と、Ang2,Bi(第二調停角度値)の余弦値と、Ang1,Ai(第一調停角度値)の正弦値と、Ang2,Bi(第二調停角度値)の正弦値とに基づいて、複数のPE(演算器)3から入力されるアクセス要求(角度値)θiに対応する余弦値および正弦値の少なくとも一部を生成する出力生成部に相当する。
【0085】
結果整形部6は、算出したcos(θi)およびsin(θi)の各値を出力する。マイクロコントローラ10は、結果整形部6が算出したcos(θi)およびsin(θi)の各値をデータメモリ8に記憶させてよい。
【0086】
(B)動作
上述の如く構成された実施形態の一例としての演算装置1における処理を、
図6に示すフローチャート(ステップA1~A10)に従って説明する。
【0087】
ステップA1においては、全てのPEに対して、ステップA10までの制御を繰り返し実施するループ処理を開始する。このステップA1においては、i=1からループが開始され、ループの度にiの値がインクリメント(i=i+1)され、iがNに到達するまで、ステップA2~A9の処理が繰り返し実行される。iはPE特定番号である。NはPE3の総数であり、iのとりうる最大値である。
図2に示す例においてはN=4である。
【0088】
ステップA2においては、Aiの探索として、ステップA3の制御を繰り返し実施するループ処理を開始する。このステップA2においては、j=0からループが開始され、ループの度にjの値がインクリメント(j=j+1)され、jの値がjのとりうる最大値「M-1」に到達するまで、ステップA3の処理が繰り返し実行される。なお、Mはバンク数である。例えば、
図4に示す例においてはM=8である。
【0089】
ステップA3においては、調停部5が、Ai={θi-j×π/16}が、(i×π/16)未満であるかを確認する。確認の結果、Ai={θi-j×π/16}が、(i×π/16)以上である場合には(ステップA3のNoルート参照)、ステップA4に移行する。
【0090】
ステップA4においては、ステップA2に対応するループ端処理が実施され、jの値がインクリメント(j=j+1)された後、ステップA3の処理が繰り返し実行される。Aiの探索ループがM回実行されると、制御がステップA5に進む。
【0091】
また、ステップA3における確認の結果、Ai={θi-j×π/16}が、(i×π/16)未満である場合にも(ステップA3のYesルート参照)、ステップA5に移行する。
【0092】
ステップA5において、調停部5が、上記の式(2)を用いて、Ang1(Ai)を決定する。Ang1(Ai)は、結果整形部6による加法定理に用いられる。
【0093】
ステップA6において、調停部5は、上記の式(3)を用いて、Ang2(Bi)を決定する。Ang2(Bi)は、結果整形部6による加法定理に用いられる。なお、これらのステップA5,A6の順序はこれに限定されるものではない。例えば、ステップA6の処理を行なってからステップA5の処理を行なってもよく、また、これらのステップA5の処理とステップA6の処理を並行して実行してもよく、適宜変更して実施することができる。
【0094】
ステップA7において、取得部11が Ang1(Ai)をcos用LUT9aおよびsin用LUT9bのそれぞれに入力して、cos(Ai)およびsin(Ai)の値を取得する。
【0095】
ステップA8において、取得部11が、Ang2(Bi)に基づいて、cos(Bi)およびsin(Bi)の値を取得する。
【0096】
なお、これらのステップA7,A8の順序はこれに限定されるものではない。例えば、ステップA8の処理を行なってからステップA7の処理を行なってもよく、また、これらのステップA7の処理とステップA8の処理を並行して実行してもよく、適宜変更して実施することができる。
【0097】
ステップA9において、結果整形部6が、cos(Ai),sin(Ai),cos(Bi)およびsin(Bi)の各値を用いて、加法定理によりcos(θi)およびsin(θi)を算出する。
【0098】
ステップA10では、ステップA1に対応するループ端処理が実施される。ここで、全PE3についての処理が完了すると、本フローが終了する。
【0099】
(C)効果
このように、実施形態の一例としての演算装置1によれば、cos用のLUTをPE3の数で等分して生成したcos用LUT9aをそれぞれバンクに格納し、sin用のLUTをPE3の数で等分して生成したsin用LUT9bをそれぞれバンクに格納する。
【0100】
そして、調停部5が、PEiからのアクセス要求θiを、上記の不等式(1)が成立する場合に、PE#iからのアクセス要求θiを、アクセス要求θiを発行したPE#iに対応するバンク9における角度を示すAng1と、バンク幅の整数倍の値であるAng2とに分割する。
【0101】
これにより、各PE3からのアクセス要求θiは、各PE3に対応する異なるバンクに格納されたcos用LUT9aおよびsin用LUT9bにアクセスすることとなる。従って、複数のPE3からの各アクセス要求によるLUT9へのアクセスにおいてバンク衝突の発生を抑止することができる。
【0102】
また、例えば、45度分のcos用のLUTを分割することで生成された4つのcos用LUT9aと、45度分のsin用のLUTを分割することで生成された4つのsin用LUT9bとを有する。これにより、sin用とcos用とで合計で90度分のLUTを有すればよく、LUTのサイズを小さくすることができる。これは、例えば、22.5度分のcos用のLUTを4個×2面を備え、バンク衝突を完全回避する従来手法と比べてLUTのサイズを半減させることができる。
【0103】
また、調停部5が、不等式「{θi-j×π/16}<(i×π/16)」を満たす最大のjを探索することで、複数のPE#iからアクセス要求θiが発行された場合に、Ang1(=θi-j×π/16)は、PE特定番号に応じたバンク#(i-1)に属するものとなる。これにより、PE#1~PE#4からの各アクセス要求によるLUT9へのアクセスにバンク衝突が発生することを抑止することができる。
【0104】
さらに、このように、複数のPE#iからアクセス要求θiが発行された場合においても、LUT9におけるアクセス要求の競合(衝突:バンク衝突)の発生を抑止することができ、性能劣化のリスクをなくすことができる。また、これにより、データ転送を効率化するアーキテクチャを実現することができる。
【0105】
(D)その他
本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【0106】
そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
【0107】
例えば、上述した実施形態においては、各PEが一度のタイミングで一つのアクセス要求を発行する例を示したが、これに限定されるものではない。各PE3は一度のタイミングで複数のアクセス要求を発行してもよい。PE3が一度のタイミングで発行するアクセス要求の数を同時アクセス要求数といってよい。
【0108】
すなわち、本変形例においては、複数のPE(演算器)3から角度値が同時に入力されうる入力数の最大値が、演算器の数に応じた数に相当する。
【0109】
このように、各PE3が一度のタイミングで複数のアクセス要求を発行することに対応するためには、バンクの数を同時アクセス要求数に合わせて設定する。具体的には、PE3の数に同時アクセス要求数を乗算した数のバンクを備え、LUTをこのバンク数に合わせて分割すればよい。
【0110】
図7は実施形態の一例としての演算装置1におけるLUTの構成の変形例を示す図である。
【0111】
この
図7においては、各PE3が一度のタイミングで2つのアクセス要求を発行する場合のLUT構成を示す。
【0112】
本変形例においては、複数のPE3から発行されるアクセス要求θiにおいて、iはアクセス要求を特定する番号である。
【0113】
図7に示す例においては、cos用とsin用とに、それぞれPE3の数(=4)に同時アクセス要求数(=2)を乗算した数(=8)のバンク#0~#7を備える。そして、これらの8つのバンク#0~#7にLUTが均等に分割されて格納される。
【0114】
すなわち、バンク#0に0~π/32のLUT9が、バンク#1にπ/32~2π/32のLUT9が、バンク#2に2π/32~3π/32のLUT9が、バンク#3に3π/32~4π/32のLUT9が、それぞれ格納される。また、バンク#4に4π/32~5π/32のLUT9が、バンク#5に5π/32~6π/32のLUT9が、バンク#6に6π/32~7π/32のLUT9が、バンク#7に7π/32~8π/32のLUT9が、それぞれ格納される。
【0115】
また、本変形例においては、調停部5は、以下の不等式(1′)を満たす最大のjを求める。
【0116】
{θi-j×π/32}<(i×π/32) ・・・(1′)
上記の式(1′)において、「θi-j×π/32」は、PE3から発行されたアクセス要求θiからバンク幅のj倍の値を減算した値を示す。また、「i×π/32」は、当該アクセス要求θiに対応するバンク9の角度範囲を示す。
【0117】
調停部5は、アクセス要求θiからバンク幅のj倍の値を減算した値が、当該アクセス要求θiに対応する角度範囲未満であるかを確認する。
【0118】
調停部5は、上記の不等式(1′)が成立する場合に、アクセス要求θiをAng1とAng2とに分割する。アクセス要求θiはAng1とAng2との和で表すことができる。アクセス要求θiとAng1とAng2との関係を、「θi=Ang1+Ang2」と表してよい。
【0119】
調停部5は、上記の不等式(1′)を満たすjに基づき、Ang1を以下の式(2′)を用いて、また、Ang2を以下の式(3′)を用いて、それぞれ表す。
【0120】
Ang1=θi-j×π/32 ・・・(2′)
Ang2=j×π/32 ・・・(3′)
Ang1は、アクセス要求θiに対応するバンク9における角度を示す。Ang2は、バンク幅の整数倍の値である。
【0121】
例えば、アクセス要求θ1(i=1)について、調停部5は、上記の不等式(1′)を満たす最大のjを探索することで、θ1を以下に示すように2つの角度の和に分離する。
【0122】
θ1=(θ1-j×π/32)+(j×π/32)
ここで、右辺の項(θ1-j×π/32)はバンク#0における角度を表す。
【0123】
次に、調停部5は、アクセス要求θ2(i=2)について、上記の不等式(1′)を満たす最大のjを探索する。
【0124】
このとき、上記の不等式(1)は、左辺が2×π/32以下、π/32以上になったところで条件を満たすものとなる。すなわち、バンク#1となり、調停部5は、アクセス要求θ2を2つの角度に分割し、以下に示すような2つの角度の和で表す。
【0125】
θ2=(θ2-j×π/32)+(j×π/32)
ここで、右辺の項(θ2-j×π/32)はバンク#1における角度を表す。
【0126】
調停部5は、PE3からのアクセス要求毎にAng1,Ang2を求める。すなわち、調停部5は、複数のPE3からの各アクセス要求について、Ang1,Ang2をそれぞれ求める。
【0127】
このとき、複数のPE3からアクセス要求θiが発行された場合に、Ang1(=θi-j×π/32)は、アクセス要求に応じたバンク#(i-1)に属するものとなる。
【0128】
すなわち、アクセス要求θ1はバンク#0に、アクセス要求θ2はバンク#1に、アクセス要求θ3はバンク#2に、それぞれ属するものとなり、これにより、複数のPE3からの各アクセス要求によるLUT9へのアクセスにバンク衝突が発生することがない。
【0129】
調停部5は、上記の不等式(1)を満たす最大のjを求めることで、バンク衝突の発生を抑止することができるのである。
【0130】
図8は実施形態の変形例としての演算装置1の調停部5,取得部11および結果整形部6の詳細を説明するための図である。
【0131】
この
図8に例示する演算装置1は、
図2に示した演算装置1に4つずつ備えられたcos用LUT9aおよびSIN用LUT9bに代えて、8つずつのcos用LUT9aおよびSIN用LUT9bをそなえるものであり、その他の部分は
図2に示した演算装置1と同様に構成されている。
【0132】
なお、図中、既述の符号と同一の符号は同様の部分を示しているので、その説明は省略する。
【0133】
このように、各PE3が一度のタイミングで2つのアクセス要求を発行するPE3を有する演算装置1における処理を、
図9に示すフローチャート(ステップB1~B10)に従って説明する。
【0134】
ステップB1においては、全てのPE3からのアクセス要求に対して、ステップB10までの制御を繰り返し実施するループ処理を開始する。このステップB1においては、i=1からループが開始され、ループの度にiの値がインクリメント(i=i+1)され、iが2Nに到達するまで、ステップB2~B9の処理が繰り返し実行される。iは、PE3からのアクセス要求を特定する番号であり、2Nまでの自然数である。NはPE3の総数である。
【0135】
ステップB2においては、Aiの探索として、ステップB4までの制御を繰り返し実施するループ処理を開始する。このステップB2においては、j=0からループが開始され、ループの度にjの値がインクリメント(j=j+1)され、jの値がjのとりうる最大値「2M-1」に到達するまで、ステップB3の処理が繰り返し実行される。なお、Mはバンク数である。例えば、
図7に示す例においてはM=8である。
【0136】
ステップB3においては、調停部5が、Ai={θi-j×π/32}が、(i×π/32)未満であるかを確認する。確認の結果、Ai={θi-j×π/32}が、(i×π/32)以上である場合には(ステップB3のNoルート参照)、ステップB4に移行する。
【0137】
ステップB4においては、ステップB2に対応するループ端処理が実施され、jの値がインクリメント(j=j+1)された後、ステップB3の処理が繰り返し実行される。Aiの探索ループが「2M―1」回実行されると、制御がステップB5に進む。
【0138】
また、ステップB3における確認の結果、Ai={θi-j×π/32}が、(i×π/32)未満である場合にも(ステップB3のYesルート参照)、ステップB5に移行する。
【0139】
ステップB5において、調停部5が、上記の式(2′)を用いて、Ang1(Ai)を決定する。
【0140】
ステップB6において、調停部5は、上記の式(3′)を用いて、Ang2(Bi)を決定する。なお、これらのステップB5,B6の順序はこれに限定されるものではない。例えば、ステップB6の処理を行なってからステップB5の処理を行なってもよく、また、これらのステップB5の処理とステップB6の処理を並行して実行してもよく、適宜変更して実施することができる。
【0141】
ステップB7において、取得部11が Ang1(Ai)をcos用LUT9aおよびsin用LUT9bのそれぞれに入力して、cos(Ai)およびsin(Ai)の値を取得する。
【0142】
ステップB8において、取得部11が、Ang2(Bi)に基づいて、cos(Bi)およびsin(Bi)の値を取得する。
【0143】
なお、これらのステップB7,B8の順序はこれに限定されるものではない。例えば、ステップB8の処理を行なってからステップB7の処理を行なってもよく、また、これらのステップB7の処理とステップB8の処理を並行して実行してもよく、適宜変更して実施することができる。
【0144】
ステップB9において、結果整形部6が、cos(Ai),sin(Ai),cos(Bi)およびsin(Bi)の各値を用いて、加法定理によりcos(θi)およびsin(θi)を算出する。
【0145】
ステップB10では、ステップB1に対応するループ端処理が実施される。ここで、全PE3についての処理が完了すると、本フローが終了する。
【0146】
このように、PE3が一度のタイミングで複数のアクセス要求を発行する場合でも、バンクの数を同時アクセス要求数に合わせて設定することで、LUTのサイズを小さくすることができる。また、複数のPE3のそれぞれから複数のアクセス要求θiが発行された場合においても、LUT9におけるアクセス要求の競合(衝突:バンク衝突)の発生を抑止することができ、性能劣化のリスクをなくすことができる。
【0147】
また、上述した変形例においては、各PE3が一度のタイミングで2つのアクセス要求を発行する例を示したが、これに限定されるものではない。各PE3が一度のタイミングで3つ以上のアクセス要求を発行してもよい。
【0148】
また、上述した実施形態においては、パターン化されたBiの値に応じたcos(Bi)およびsin(Bi)の値を出力するロジック回路を備え、取得部11が、このロジック回路にAng2(Bi)の値を入力することで、cos(Bi)およびsin(Bi)の値を取得してよいことを記載しているが、これに限定されるものではない。
【0149】
例えば、パターン化されたBiの値に対応するcos(Bi)およびsin(Bi)の値を予め記録したテーブル(参照情報)を備え、取得部11が、Ang2(Bi)の値に基づいてこのテーブルを参照することで、cos(Bi)およびsin(Bi)の値を取得してよい。
【0150】
上記の実施形態もしくはその変形例において、Biは、π/16の整数倍(本例においては16通り)やπ/32の整数倍(本例においては32通り)であり、パターンが限られている。そこで、例えば、パターン化されたBiの値に応じたcos(Bi)およびsin(Bi)の値を出力するロジックを備え、取得部11は、このロジックにAng2(Bi)の値を入力することで、cos(Bi)およびsin(Bi)の値を取得してよい。
【0151】
また、上述した実施形態においては、cos用LUTが、π/4(45度)の角度範囲における複数の角度の各々に対応する余弦値(cos)を、また、sin用LUTが、π/4(45度)の角度範囲における複数の角度の各々に対応する正弦値(sin)を、それぞれ格納する例を示したが、これに限定されるものではない。これらのcos用LUTおよびsin用LUTの角度範囲は適宜変更して実施することができる。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【0152】
(E)付記
以上の実施形態に関し、さらに以下の付記を開示する。
【0153】
(付記1)
複数の演算器と、
複数の角度の各々に対応する余弦値を記憶する第一テーブルを前記演算器の数に応じた数で等分して生成した複数の分割第一テーブルをそれぞれ格納する複数の余弦値用バンクと、
複数の角度の各々に対応する正弦値を記憶する第二テーブルを前記演算器の数に応じた数で等分して生成した複数の分割第二テーブルをそれぞれ格納する複数の正弦値用バンクと、
前記複数の演算器のそれぞれから入力される角度値を第一調停角度値と第二調停角度値とに分割するとともに、前記複数の演算器のそれぞれから入力される角度値に対応する第一調停角度値が、異なる前記余弦値用バンクおよび前記正弦値用バンクになるように設定する調停部と、
前記第一調停角度値に基づいて前記分割第一テーブルを参照して、前記第一調停角度値の余弦値を取得し、前記第一調停角度値に基づいて前記分割第二テーブルを参照して、前記第一調停角度値の正弦値を取得し、前記第二調停角度値に基づいて前記第二調停角度値の余弦値と前記第二調停角度値の正弦値とを取得する取得部と、
前記第一調停角度値の余弦値と、前記第二調停角度値の余弦値と、前記第一調停角度値の正弦値と、前記第二調停角度値の正弦値とに基づいて、前記複数の演算器から入力される角度値に対応する余弦値および正弦値の少なくとも一部を生成する出力生成部と
を有することを特徴とする、演算装置。
【0154】
(付記2)
前記調停部が、
前記演算器から入力される角度値から前記余弦値用バンクもしくは前記正弦値用バンクの幅の整数倍の値を減算した値が、前記演算器に対応する前記余弦値用バンクもしくは前記正弦値用バンクの角度範囲未満である場合に、
前記演算器から入力される角度値から前記余弦値用バンクもしくは前記正弦値用バンクの幅の前記整数倍の値を減算した値を前記第一調停角度値として設定し、
前記余弦値用バンクもしくは前記正弦値用バンクの幅の前記整数倍の値を、前記第二調停角度値として設定する
ことを特徴とする、付記1に記載の演算装置。
【0155】
(付記3)
前記演算器の数に応じた数が、前記複数の演算器から前記角度値が同時に入力されうる入力数の最大値である
ことを特徴とする、付記1または2に記載の演算装置。
【0156】
(付記4)
前記演算器の数に応じた数が、前記複数の演算器の数である
ことを特徴とする、付記3に記載の演算装置。
【0157】
(付記5)
前記第二調停角度値の値に応じた余弦値および正弦値を出力するロジック回路を備え、
前記取得部が、
前記第二調停角度値を前記ロジック回路に入力することで、前記第二調停角度値の余弦値および正弦値を取得する
ことを特徴とする、付記1~4のいずれか1項に記載の演算装置。
【0158】
(付記6)
前記第二調停角度値の値に応じた余弦値および正弦値を予め記録した参照情報を備え、
前記取得部が、
前記第二調停角度値に基づいて前記参照情報を参照することで、前記第二調停角度値の余弦値および正弦値を取得する
ことを特徴とする、付記1~4のいずれか1項に記載の演算装置。
【0159】
(付記7)
前記出力生成部が、前記第一調停角度値の余弦値と、前記第二調停角度値の余弦値と、前記第一調停角度値の正弦値と、前記第二調停角度値の正弦値とに基づいて、加法定理を用いて前記余弦値および前記正弦値の少なくとも一部を生成する
ことを特徴とする、付記1~6のいずれか1項に記載の演算装置。
【0160】
(付記8)
複数の演算器と、
複数の角度の各々に対応する余弦値を記憶する第一テーブルを前記演算器の数に応じた数で等分して生成した複数の分割第一テーブルをそれぞれ格納する複数の余弦値用バンクと、
複数の角度の各々に対応する正弦値を記憶する第二テーブルを前記演算器の数に応じた数で等分して生成した複数の分割第二テーブルをそれぞれ格納する複数の正弦値用バンクと、
を有する演算装置が、
前記複数の演算器のそれぞれから入力される角度値を第一調停角度値と第二調停角度値とに分割するとともに、前記複数の演算器のそれぞれから入力される角度値に対応する第一調停角度値が、異なる前記余弦値用バンクおよび前記正弦値用バンクになるように設定し、
前記第一調停角度値に基づいて前記分割第一テーブルを参照して、前記第一調停角度値の余弦値を取得し、前記第一調停角度値に基づいて前記分割第二テーブルを参照して、前記第一調停角度値の正弦値を取得し、前記第二調停角度値に基づいて前記第二調停角度値の余弦値と前記第二調停角度値の正弦値とを取得し、
前記第一調停角度値の余弦値と、前記第二調停角度値の余弦値と、前記第一調停角度値の正弦値と、前記第二調停角度値の正弦値とに基づいて、前記複数の演算器から入力される角度値に対応する余弦値および正弦値の少なくとも一部を生成する
処理を実行することを特徴とする、演算方法。
【0161】
(付記9)
前記演算装置が、
前記演算器から入力される角度値から前記余弦値用バンクもしくは前記正弦値用バンクの幅の整数倍の値を減算した値が、前記演算器に対応する前記余弦値用バンクもしくは前記正弦値用バンクの角度範囲未満である場合に、
前記演算器から入力される角度値から前記余弦値用バンクもしくは前記正弦値用バンクの幅の前記整数倍の値を減算した値を前記第一調停角度値として設定し、
前記余弦値用バンクもしくは前記正弦値用バンクの幅の前記整数倍の値を、前記第二調停角度値として設定する
処理を実行することを特徴とする、付記8に記載の演算方法。
【0162】
(付記10)
前記演算器の数に応じた数が、前記複数の演算器から前記角度値が同時に入力されうる入力数の最大値である
ことを特徴とする、付記8または9に記載の演算方法。
【0163】
(付記11)
前記演算器の数に応じた数が、前記複数の演算器の数である
ことを特徴とする、付記10に記載の演算方法。
【0164】
(付記12)
前記演算装置が、
前記第二調停角度値の値に応じた余弦値および正弦値を出力するロジック回路を備え、
前記第二調停角度値を前記ロジック回路に入力することで、前記第二調停角度値の余弦値および正弦値を取得する
処理を実行することを特徴とする、付記8~11のいずれか1項に記載の演算方法。
【0165】
(付記13)
前記演算装置が、
前記第二調停角度値の値に応じた余弦値および正弦値を予め記録した参照情報を備え、
前記第二調停角度値に基づいて前記参照情報を参照することで、前記第二調停角度値の余弦値および正弦値を取得する
処理を実行することを特徴とする、付記8~11のいずれか1項に記載の演算方法。
【0166】
(付記14)
前記演算装置が、
前記第一調停角度値の余弦値と、前記第二調停角度値の余弦値と、前記第一調停角度値の正弦値と、前記第二調停角度値の正弦値とに基づいて、加法定理を用いて前記余弦値および前記正弦値の少なくとも一部を生成する
処理を実行することを特徴とする、付記8~13のいずれか1項に記載の演算方法。
【符号の説明】
【0167】
1 演算装置
2 PEアレイ
3 PE(演算器)
4 レジスタ
5 調停部
6 結果整形部(出力生成部)
7 データ操作部
8 データメモリ
9 安喰
9a,9 cos用LUT(分割第一テーブル)
9b,9 sin用LUT(分割第二テーブル)
10 マイクロコントローラ
11 取得部