特許第5814420号(P5814420)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 日本電信電話株式会社の特許一覧

<>
  • 特許5814420-行列演算回路及び行列演算方法 図000005
  • 特許5814420-行列演算回路及び行列演算方法 図000006
  • 特許5814420-行列演算回路及び行列演算方法 図000007
  • 特許5814420-行列演算回路及び行列演算方法 図000008
  • 特許5814420-行列演算回路及び行列演算方法 図000009
  • 特許5814420-行列演算回路及び行列演算方法 図000010
  • 特許5814420-行列演算回路及び行列演算方法 図000011
  • 特許5814420-行列演算回路及び行列演算方法 図000012
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】5814420
(24)【登録日】2015年10月2日
(45)【発行日】2015年11月17日
(54)【発明の名称】行列演算回路及び行列演算方法
(51)【国際特許分類】
   G06F 17/16 20060101AFI20151029BHJP
   G09C 1/00 20060101ALI20151029BHJP
【FI】
   G06F17/16 M
   G09C1/00 650Z
【請求項の数】7
【全頁数】21
(21)【出願番号】特願2014-92918(P2014-92918)
(22)【出願日】2014年4月28日
【審査請求日】2014年4月28日
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成25年度、独立行政法人情報通信研究機構、「エラスティック光通信ネットワーク構成技術の研究開発」委託事業、産業技術力強化法第19条の適用を受ける特許出願
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】110001634
【氏名又は名称】特許業務法人 志賀国際特許事務所
(72)【発明者】
【氏名】山田 義朗
(72)【発明者】
【氏名】門畑 顕博
(72)【発明者】
【氏名】平野 章
【審査官】 田中 幸雄
(56)【参考文献】
【文献】 特開2001−66988(JP,A)
【文献】 特開2012−195789(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/16
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
n個の要素を有する入力ベクトルXとm行n列の行列との行列演算を行う行列演算回路であって、
前記入力ベクトルXの要素が取り得る値と前記行列の要素との2項演算結果を算出する2項演算テーブルと、
m行n列の行列状に配置され、配置された位置に対応する行列の要素と前記入力ベクトルXの要素が取り得る値との2項演算結果と前記要素が取り得る値とを対応付けて記憶する1次元LUTと加法回路とを有する1次元LUT加法回路と
を備え、
v行目h列目(1≦v≦m,1≦h≦n)に配置された前記1次元LUT加法回路における前記加法回路は、
前記入力ベクトルXのh番目の要素Xが示す値に対応付けられた2項演算結果を前記1次元LUTから読み出し、h=nの場合には読み出した2項演算結果をv行目(n−1)列目に配置された前記1次元LUT加法回路に出力し、h<nの場合には読み出した2項演算結果とv行目(h+1)列目に配置された前記1次元LUT加法回路の出力する加法演算結果との加法演算結果をv行目(h−1)列目に配置された前記1次元LUT加法回路に出力し、
v行目1列目に配置された前記1次元LUT加法回路が出力する加法演算結果を行列演算結果として出力し、
行列演算が行われる前に、前記2項演算テーブルに前記行列の要素を入力するごとに、前記入力ベクトルXの要素が取り得る値を逐次入力して得られる2項演算結果を前記行列の要素に対応する位置に配置された前記1次元LUT加法回路が有する前記1次元LUTに記憶させる
ことを特徴とする行列演算回路。
【請求項2】
請求項1に記載の行列演算回路において、
前記2項演算テーブルは、
所定数の行に配置された前記1次元LUT加法回路ごとに対応して設けられている
ことを特徴とする行列演算回路。
【請求項3】
請求項1又は請求項2のいずれかに記載の行列演算回路において、
前記1次元LUT加法回路は、
前記1次元LUTとしての第1の1次元LUT及び第2の1次元LUTと、
前記2項演算テーブルから入力される2項演算結果を前記第1の1次元LUTと前記第2の1次元LUTとのいずれか一方に記憶させ、入力される前記入力ベクトルXの要素が示す値に対応する2項演算結果を他方から読み出す制御を行うインターリーブ制御回路と
を更に有し、
前記インターリーブ制御回路は、
行列演算が行われるごとに、2項演算結果を記憶させる1次元LUTと2項演算結果を読み出す1次元LUTとを切り替える
ことを特徴とする行列演算回路。
【請求項4】
請求項1又は請求項2のいずれかに記載の行列演算回路において、
前記1次元LUT加法回路は、
行列演算に用いる行列の数に相当する1次元LUTを有し、
前記1次元LUTそれぞれは、前記行列演算に用いる行列に対応した2項演算結果を記憶し、
行列演算時に複数の前記1次元LUTからいずれか一つの1次元LUTを選択し、選択した1次元LUTから2項演算結果を読み出す
ことを特徴とする行列演算回路。
【請求項5】
請求項1から請求項4のいずれか一項に記載の行列演算回路において、
前記2項演算テーブルは、
前回の行列演算から前記行列の要素の値が変化した要素と前記入力ベクトルXの要素が取り得る値との2項演算結果を、前記変化した要素に対応する位置に配置された前記1次元LUT加法回路が有する前記1次元LUTに記憶させ、
前回の行列演算と前記行列の要素の値が変化していない要素と前記入力ベクトルXの要素が取り得る値との2項演算結果を出力しない
ことを特徴とする行列演算回路。
【請求項6】
請求項1から請求項5のいずれか一項に記載の行列演算回路において、
前記2項演算テーブルは、
前回の行列演算から前記行列の要素の値が変化した要素の位置に対応する前記1次元LUT加法回路を変化後の要素の値に基づいてグループ分けし、グループごとに当該グループに含まれる前記1次元LUT加法回路が有する前記1次元LUTの2項演算結果を記憶させる
ことを特徴とする行列演算回路。
【請求項7】
m行n列の行列とn個の要素を有する入力ベクトルXとの行列演算を行う行列演算回路であって、前記入力ベクトルXの要素が取り得る値と前記行列の要素との2項演算結果を算出する2項演算テーブルと、m行n列の行列状に配置され、配置された位置に対応する行列の要素と前記入力ベクトルXの要素が取り得る値との2項演算結果と前記要素が取り得る値とを対応付けて記憶する1次元LUT及び加法回路を有する1次元LUT加法回路とを備え、
v行目h列目(1≦v≦m,1≦h≦n)に配置された前記1次元LUT加法回路における前記加法回路は、
前記入力ベクトルXのh番目の要素Xが示す値に対応付けられた2項演算結果を前記1次元LUTから読み出し、h=nの場合には読み出した2項演算結果をv行目(n−1)列目に配置された前記1次元LUT加法回路に出力し、h<nの場合には読み出した2項演算結果とv行目(h+1)列目に配置された前記1次元LUT加法回路の出力する加法演算結果との加法演算結果をv行目(h−1)列目に配置された前記1次元LUT加法回路に出力し、
v行目1列目に配置された前記1次元LUT加法回路が出力する加法演算結果を行列演算結果として出力する行列演算回路における行列演算方法であって、
行列演算が行われる前に、前記2項演算テーブルに前記行列の要素を入力するごとに、前記入力ベクトルXの要素が取り得る値を逐次入力して得られる2項演算結果を前記行列の要素に対応する位置に配置された前記1次元LUT加法回路が有する前記1次元LUTに記憶させるステップと、
h列目に配置された前記1次元LUT加法回路に、前記入力ベクトルの要素Xを入力して行列演算を行わせるステップと、
を有することを特徴とする行列演算方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、行列演算回路及び行列演算方法に関する。
【背景技術】
【0002】
まず、本明細書において用いる用語について説明する。
乗法(回路):整数では、一方の数に対して他方の数の回数だけ繰り返し和をとることにより定義できる演算。数の拡張にしたがってさらに広い範囲の数に対する乗法を定める。例えばガロア体においては原始元の指数同士の和で定義される。乗法回路は、乗法演算の結果を出力する回路のこと。
【0003】
加法(回路):自然数においては加法とはものの個数を加え合わせることであり、数の拡張にしたがってさらに広い範囲の数に対する加法を定める。例えばガロア体における加法は排他的論理和と等価である。加法回路は、入力に対し加法演算の結果を出力する回路のこと。
【0004】
積和演算回路:z=a・x+bを演算する回路。
1次元LUT:入力Xに対する出力Zの値を格納した表(テーブル)。
2次元LUT:入力Xと入力Yとの組み合わせ(X,Y)に対する出力Zの値を格納した表(テーブル)。例えば乗算に対しては入力Xと入力Yとが9以下の自然数である場合、掛け算九九の表が2次元LUTに相当する。
【0005】
代数的符号においては符号化及び復号化は、行列演算で表記される(非特許文献1)。図7は、m行n列の行列演算回路の構成を示す図である。行列演算をハードウェアで実装する際には、図7に示すように、行と列との格子点上に積和演算回路110を配置する構成が用いられる。すなわち、行列演算回路では、m×n個の積和演算回路110がm行n列の各格子点上に配置される。
【0006】
h(h=1,2,…,n)列目に配置される各積和演算回路110には、入力X120{X,X,…,X}のうちXが入力される。v(v=1,2,…,m)行目に配置される各積和演算回路110には、係数ベクトルY123{Y,Y,…,Y}のうちベクトルYが入力される。積和演算回路110は、入力されるX及びYとの乗法を行う。また、また、v行h列目に配置される積和演算回路110には、v行(h+1)列目に配置される積和演算回路110の出力が入力され、当該入力と乗法演算結果との加法を行い、加法演算結果をv行(h−1)列目に配置される積和演算回路110に出力する。
【0007】
各格子点上に配置されている積和演算回路110では、上述のように加法と乗法とが行われる。加法の演算は、単純であるため、論理回路(加法回路109)によって構成される。一方、乗法の演算は、複雑であり、すべて論理回路で構成すると回路規模や遅延が大きくなるため、LUT(Look Up Table:ルックアップテーブル)によって構成されることがある。
【0008】
図8は、積和演算回路110の構成例を示す図である。図8に示す積和演算回路110は、m行n列の行列演算装置においてv行目h列目(1≦v≦m,1≦h≦n)に配置される積和演算回路110の構成例を示す図である。積和演算回路110には、入力X120のうちのh列の入力X130と、係数ベクトルY123のうちのv行目の係数ベクトルYにおけるh列目の係数Y[h](=avh)と、h列演算結果入力Zin(h)131とが入力される。積和演算回路110は、入力X130と係数avhとの乗法を行い、乗法演算結果とh列演算結果入力Zin(h)131との加法を行い、加法演算結果をh行演算結果出力Zout(h)132として出力する。
【0009】
積和演算回路110は、図8に示すように、2次元LUT111及び加法回路109を有している。2次元LUT111には、h列の入力X130が取り得る値と係数avhが取り得る値との組み合わせそれぞれに対する乗法演算結果がLUTに記憶されている。2次元LUT111は、入力される入力X130と係数avhとの組み合わせに対応する乗法演算結果をLUTから読み出す。2次元LUT111は、読み出した乗法演算結果111aを加法回路109に出力する。
【0010】
加法回路109は、入力されるh列演算結果入力Zin(h)と、2次元LUT111が出力する乗法演算結果とに対して加法演算を行う。加法回路109は、加法演算結果をh列演算結果出力Zout(h)132としてv行(h−1)列に配置されている積和演算回路110に出力する。v行h列に配置されている積和演算回路110が出力するh列演算結果出力Zout(h)132は、v行(h−1)列に配置されている積和演算回路110においてh列演算結果入力Zin(h)として入力される。上述の構成を有することにより、図7に示す行列演算回路は行列演算を行う。
【0011】
また、LUTを書き換えることにより任意の演算が可能になるという理由でLUTを用いることもある。しかし、LUTを用いて演算結果を取得する場合、演算の入力が取り得る値の組み合わせ数に応じて演算結果を格納する領域を確保する必要がある。例えば乗法のような2項演算では、LUTは2次元になり、一方の入力が取り得る値と他方が取り得る値とに対応した行数×列数分の演算結果を格納する領域が必要となる。二つの入力値のサイズがSビットである場合には、LUTのサイズ(演算結果を格納する領域)が2の二乗となるため、回路規模が増加してしまうという問題があり、比較的小さな入力サイズにしか適用できなかった。
【先行技術文献】
【非特許文献】
【0012】
【非特許文献1】阪田省二郎、「代数的符号理論」、電子情報通信学会 基礎・境界ソサイエティ Fundamentals Review、vol.1、no.3、一般社団法人電子情報通信学会、p.44-57
【発明の概要】
【発明が解決しようとする課題】
【0013】
本発明は、上記のような事情を鑑みてなされたもので、行列演算をハードウェアで実装する場合の回路規模を削減できる行列演算回路及び行列演算方法を提供することを目的とする。
【課題を解決するための手段】
【0014】
本発明の一態様は、n個の要素を有する入力ベクトルXとm行n列の行列との行列演算を行う行列演算回路であって、前記入力ベクトルXの要素が取り得る値と前記行列の要素との2項演算結果を算出する2項演算テーブルと、m行n列の行列状に配置され、配置された位置に対応する行列の要素と前記入力ベクトルXの要素が取り得る値との2項演算結果と前記要素が取り得る値とを対応付けて記憶する1次元LUTと加法回路とを有する1次元LUT加法回路とを備え、v行目h列目(1≦v≦m,1≦h≦n)に配置された前記1次元LUT加法回路における前記加法回路は、前記入力ベクトルXのh番目の要素Xが示す値に対応付けられた2項演算結果を前記1次元LUTから読み出し、h=nの場合には読み出した2項演算結果をv行目(n−1)列目に配置された前記1次元LUT加法回路に出力し、h<nの場合には読み出した2項演算結果とv行目(h+1)列目に配置された前記1次元LUT加法回路の出力する加法演算結果との加法演算結果をv行目(h−1)列目に配置された前記1次元LUT加法回路に出力し、v行目1列目に配置された前記1次元LUT加法回路が出力する加法演算結果を行列演算結果として出力し、行列演算が行われる前に、前記2項演算テーブルに前記行列の要素を入力するごとに、前記入力ベクトルXの要素が取り得る値を逐次入力して得られる2項演算結果を前記行列の要素に対応する位置に配置された前記1次元LUT加法回路が有する前記1次元LUTに記憶させることを特徴とする行列演算回路である。
【0015】
また、本発明の一態様は、上記に記載の行列演算回路において、前記2項演算テーブルは、所定数の行に配置された前記1次元LUT加法回路ごとに対応して設けられていることを特徴とする。
【0016】
また、本発明の一態様は、上記に記載の行列演算回路において、前記1次元LUT加法回路は、前記1次元LUTとしての第1の1次元LUT及び第2の1次元LUTと、前記2項演算テーブルから入力される2項演算結果を前記第1の1次元LUTと前記第2の1次元LUTとのいずれか一方に記憶させ、入力される前記入力ベクトルXの要素が示す値に対応する2項演算結果を他方から読み出す制御を行うインターリーブ制御回路とを更に有し、前記インターリーブ制御回路は、行列演算が行われるごとに、2項演算結果を記憶させる1次元LUTと2項演算結果を読み出す1次元LUTとを切り替えることを特徴とする。
【0017】
また、本発明の一態様は、上記に記載の行列演算回路において、前記1次元LUT加法回路は、行列演算に用いる行列の数に相当する1次元LUTを有し、前記1次元LUTそれぞれは、前記行列演算に用いる行列に対応した2項演算結果を記憶し、行列演算時に複数の前記1次元LUTからいずれか一つの1次元LUTを選択し、選択した1次元LUTから2項演算結果を読み出すことを特徴とする。
【0018】
また、本発明の一態様は、上記に記載の行列演算回路において、前記2項演算テーブルは、前回の行列演算から前記行列の要素の値が変化した要素と前記入力ベクトルXの要素が取り得る値との2項演算結果を、前記変化した要素に対応する位置に配置された前記1次元LUT加法回路が有する前記1次元LUTに記憶させ、前回の行列演算と前記行列の要素の値が変化していない要素と前記入力ベクトルXの要素が取り得る値との2項演算結果を出力しないことを特徴とする。
【0019】
また、本発明の一態様は、上記に記載の行列演算回路において、前記2項演算テーブルは、前回の行列演算から前記行列の要素の値が変化した要素の位置に対応する前記1次元LUT加法回路を変化後の要素の値に基づいてグループ分けし、グループごとに当該グループに含まれる前記1次元LUT加法回路が有する前記1次元LUTの2項演算結果を記憶させることを特徴とする。
【0020】
また、本発明の一態様は、m行n列の行列とn個の要素を有する入力ベクトルXとの行列演算を行う行列演算回路であって、前記入力ベクトルXの要素が取り得る値と前記行列の要素との2項演算結果を算出する2項演算テーブルと、m行n列の行列状に配置され、配置された位置に対応する行列の要素と前記入力ベクトルXの要素が取り得る値との2項演算結果と前記要素が取り得る値とを対応付けて記憶する1次元LUT及び加法回路を有する1次元LUT加法回路とを備え、v行目h列目(1≦v≦m,1≦h≦n)に配置された前記1次元LUT加法回路における前記加法回路は、前記入力ベクトルXのh番目の要素Xが示す値に対応付けられた2項演算結果を前記1次元LUTから読み出し、h=nの場合には読み出した2項演算結果をv行目(n−1)列目に配置された前記1次元LUT加法回路に出力し、h<nの場合には読み出した2項演算結果とv行目(h+1)列目に配置された前記1次元LUT加法回路の出力する加法演算結果との加法演算結果をv行目(h−1)列目に配置された前記1次元LUT加法回路に出力し、v行目1列目に配置された前記1次元LUT加法回路が出力する加法演算結果を行列演算結果として出力する行列演算回路における行列演算方法であって、行列演算が行われる前に、前記2項演算テーブルに前記行列の要素を入力するごとに、前記入力ベクトルXの要素が取り得る値を逐次入力して得られる2項演算結果を前記行列の要素に対応する位置に配置された前記1次元LUT加法回路が有する前記1次元LUTに記憶させるステップと、h列目に配置された前記1次元LUT加法回路に、前記入力ベクトルの要素Xを入力して行列演算を行わせるステップと、を有することを特徴とする行列演算方法である。
【発明の効果】
【0021】
本発明によれば、演算対象の行列のサイズに応じて行列状に配置する1次元LUT加法回路における2項演算を1次元LUTで実装することにより、2項演算結果を得るために必要となる回路規模を削減することができ、行列演算回路全体の回路規模を削減することが可能となる。
【図面の簡単な説明】
【0022】
図1】第1の実施形態における行列演算回路の構成を示す図である。
図2】第2の実施形態における行列演算回路の構成を示す図である。
図3】第3の実施形態における1次元LUT加算回路101の構成を示す図である。
図4】第3の実施形態における1次元LUT加算回路101の動作を示すタイミングチャートである。
図5】第4の実施形態における行列演算回路の構成を示す図である。
図6】第4の実施形態における1次元LUT加算回路の構成を示す図である。
図7】m行n列の行列演算回路の構成を示す図である。
図8】積和演算回路110の構成例を示す図である。
【発明を実施するための形態】
【0023】
本明細書に添付の図面を参照して、本発明の実施形態における行列演算回路及び行列演算方法を説明する。以下に説明する実施形態は本発明の実施の例であり、本発明は以下の実施形態に制限されるものではない。なお、本明細書及び図面において符号が同じ構成要素は、相互に同一のものを示すものとする。
【0024】
(第1の実施形態)
図1は、第1の実施形態における行列演算回路の構成を示す図である。図1に示す行列演算回路は、m行n列の行列演算を行う回路であり、入力X120(={X,X,…,X})と、係数ベクトルY123(={Y,Y,…,Y})とに対する行列演算を行う回路である。係数ベクトルY123におけるY(v=1,2,…,m)は、m行n列の行列における各行の要素を含むベクトルである。また、各係数ベクトルYには、v行目のh列目における各要素avh(h=1,2,…,n)が含まれる。すなわち、係数avhは、m行n列の行列におけるv行目h列目(1≦v≦m,1≦h≦n)の要素を示す。図1に示すように、行列演算回路は、m行n列の格子点上それぞれに配置された1次元LUT加算回路101及び各行ごとに配置された2項演算テーブル102を備える。本実施形態における2項演算テーブル102は、乗法を行う回路である。
【0025】
v行h列(1≦v≦m,1≦h≦n)に配置されている1次元LUT加算回路101は、入力X120の要素Xと、h列演算結果入力Zin(h)とを入力とする。1次元LUT加算回路101は、行列の要素を示す係数avhと要素Xとの乗法演算結果を取得し、乗法演算結果とh列演算結果入力Zin(h)との加法を行う。1次元LUT加算回路101は、加法演算結果をh列演算結果出力Zout(h)としてv行(h−1)列に配置されている1次元LUT加算回路101に出力する。1次元LUT加算回路101は、要素Xと係数avhとの乗法演算結果を得るための1次元LUTを有している。ここで、h列演算結果入力Zin(h)は、v行(h+1)列に配置されている1次元LUT加算回路101から出力される加法演算結果(Zout(h+1))である。
【0026】
なお、v行n列に配置されている1次元LUT加算回路101には、h列演算結果入力Zin(h)として「0」が入力される。n列に配置されている1次元LUT加算回路101は、行列の要素を示す係数avnと要素Xとの乗法演算結果を取得し、乗法演算結果と「0」とのは方演算結果をh列演算結果出力Zout(h)としてv行(n−1)列に配置されている1次元LUT加算回路101に出力する。
【0027】
v行1列に配置されている1次元LUT加算回路101が出力する加法演算結果は、行列演算回路の出力Z122(={Z,Z,…,Z})の要素Zになる。
【0028】
2項演算テーブル102は、入力X120の各要素が取り得る値xと、係数ベクトルY123の各要素が取り得る値との乗法(2項演算)を行い、乗法演算結果M(i,Y)(i=1,2,…,n)を出力する。2項演算テーブル102には、行列演算回路が行列演算を行う前に、各行に対応した係数ベクトルY123の要素{av1,av2,…,avn}が順に入力され、係数ベクトルY123の要素が入力されるごとに入力X120の要素が取り得る値すべてが逐次入力される。2項演算テーブル102は、係数ベクトルY123の要素と、入力X120の要素が取り得る値との乗法演算結果を出力する。係数ベクトルの要素avh(h=1,2,…,n)との乗法演算結果は、v行h列に配置されている1次元LUT加算回路101に出力される。
【0029】
各1次元LUT加算回路101は、行列演算に先立ち、係数ベクトルY123の該当行の要素に対応した2項演算テーブル102から出力される乗法演算結果を1次元LUTに書き込んで記憶させる。すなわち、v行h列に配置されている1次元LUT加算回路101が有する1次元LUTには、入力X120の要素Xの取り得る値と係数avhとの乗法演算結果が記憶されることになる。
【0030】
v行n列に配置されている1次元LUT加算回路101には、入力X120の要素Xが入力される。1次元LUT加算回路101は、入力された要素Xの示す値に対応する乗法演算結果(avn×X)を1次元LUTから読み出し、読み出した乗法演算結果(avn×X)と「0」との加法を行う。v行n列に配置されている1次元LUT加算回路101は、加法演算結果(avn×X)をv行(n−1)列に配置されている1次元LUT加算回路101に出力する。
【0031】
v行(n−1)列に配置されている1次元LUT加算回路101は、前段のv行n列に配置されている1次元LUT加算回路101からの入力(avn×X)と、1次元LUTから読み出した乗法演算結果(av(n−1)×Xn−1)とを加算することにより、(av(n−1)×Xn−1+avn×X)を算出する。v行(n−1)列に配置されている1次元LUT加算回路101は、算出した加法演算結果(av(n−1)×Xn−1+avn×X)をv行(n−2)列に配置されている1次元LUT加算回路101に出力する。
【0032】
v行に配置されている各1次元LUT加算回路101が同様に乗法及び加法を行い、列数が小さい側に隣接する1次元LUT加算回路101に加法演算結果を出力することが繰り返され、v行1列に配置されている1次元LUT加算回路101が加法演算結果として(av1×X+av2×X+…+av(n−1)×Xn−1+avn×X)を出力する。v行1列に配置されている1次元LUT加算回路101の出力は、行列演算回路の出力Z122におけるv行の出力Zとなる。
【0033】
各行の1次元LUT加算回路101が同様に乗法及び加法を行うことにより、1列目に配置されている各1次元LUT加算回路101から所望の出力Z122{Z,Z,…,Z}が出力される
【0034】
図7に示した行列演算回路では、m行n列の格子点上に配置されるすべての積和演算回路110が2次元LUT111を有していた。これに対して、第1の実施形態における行列演算回路は、m行n列の格子点上に配置される1次元LUT加算回路101が2次元LUTを有さない構成となっている。2項演算テーブル102が2次元LUTを有する構成とした場合、第1の実施形態における行列演算回路が備える2次元LUTの個数は、図7の行列演算回路に対して(1/n)になる。また、2項演算テーブル102において、入力X120の各要素が取り得る値と、係数ベクトルY123の各要素が取り得る値との乗法演算結果が2項演算回路で直接算出される場合、第1の実施形態における行列演算回路は2次元LUTを備えないことになる。
【0035】
一般に複雑な2項演算を行う回路を実装する場合、並列数を増やすことで処理時間を短縮して高スループット化を行う。信号に対する符号化及び復号化をフレーム単位で行う場合には、1フレーム時間内に次のフレームに対する係数ベクトルの演算を完了すればよいので、フレーム長が長い符号化又は復号化に第1の実施形態における行列演算回路を適用するときには、並列数の少ない小さな2項演算回路で2項演算を行うことが可能になる。
【0036】
OTN(Optical Transport Network)のようにフレーム長が固定長の場合、次のフレームに対する係数ベクトルの転送は1フレーム時間内に完了すればよい。すなわち、1フレーム時間をT[sec]、列数をn、係数ベクトル転送レート[byte/sec]で表し、8ビットGF(2)のガロア体演算を行うとすると、1フレームあたり(列数×ガロア体の元の数(256=2))の乗法を転送することになるので、次式(1)が満たされればよいことになる。言い換えれば、次式(1)を満たすようにBを設定する。
T≧n・256/B …(1)
【0037】
(第2の実施形態)
図2は、第2の実施形態における行列演算回路の構成を示す図である。m行n列の行列演算を行う回路であり、入力X120(={X,X,…,X})と、係数ベクトルY123(={Y,Y,…,Y})とに対する行列演算を行う回路である。第2の実施形態における行列演算回路は、2項演算テーブル102を複数の行で共有する構成を有する点が、第1の実施形態における行列演算回路と異なる。図2に示す行列演算回路は、m行n列の格子点上それぞれに配置された1次元LUT加算回路101、2項演算テーブル102及び選択回路103を有している。
【0038】
選択回路103は、係数ベクトルY123のうち、いずれの係数ベクトルY(v=1,2,…,m)を2項演算テーブル102に出力するかを選択する。また、選択回路103は、各行の1次元LUT加算回路101のうち、いずれの行の1次元LUT加算回路101に2項演算テーブル102の乗法演算結果を出力するかを選択する。係数ベクトルYの入力先の選択と乗法演算結果の出力先の選択とは、選択回路103に設けられる制御回路によって行われる。制御回路が、係数ベクトルYの入力先を切り替えるとともに、2項演算テーブル102が出力する乗法演算結果の出力先を切り替えることにより、係数ベクトルYに対応する行の1次元LUT加算回路101に2項演算結果M(i,Y)が出力される。
【0039】
選択回路103が2項演算テーブル102の入出力を行単位に逐次的に切り替えることにより、複数の行の1次元LUT加算回路101に対して2項演算テーブル102を共有させることができ、行列演算回路における2項演算テーブルの個数を減らすことができる。すなわち、行列演算回路において2次元LUTの数を減らすことができ、行列演算回路の回路規模を減らすことができる。第2の実施形態における行列演算回路において、2次元LUTの数を最小で1個まで減らすことができる。しかし、複数の行の1次元LUT加算回路101に対して2項演算テーブル102を共有させる際に、行列演算回路が2個以上の2項演算テーブル102と選択回路103とを備えていてもよい。
【0040】
OTNのフレーム長は、16320byteである。行列演算回路における列数を8とした場合、1行あたりの係数ベクトル転送バイト数は8×256=2048byteとなる。フレームデータの転送レートと係数ベクトル転送レートとが等しいとき、16320/2048=7.97であるので、7行分の2項演算テーブル102を行列演算回路において共有可能であることが分かる。
【0041】
フレーム長をLとし、係数ベクトルのバイト数をCとし、係数ベクトルの転送レートに対するフレームデータの転送レートの比をkとした場合、2項演算テーブル102を共有できる行数Mは、次式(2)で表される。なお、関数Floor(x)は、床関数であり、底値(xの整数部分)を返す関数である。この場合、第2の実施形態における行列演算回路は、第1の実施形態における行列演算回路に対して(1/M)個の2項演算テーブル102を備えれば、行列演算を1フレーム時間内に1次元LUTに記憶させる乗法演算結果を算出することができる。
M=Floor(k・L/C) …(2)
【0042】
(第3の実施形態)
第3の実施形態における行列演算回路は、行列演算を行っている際にも、各1次元LUT加算回路101の1次元LUTを更新できる構成を有している。図3は、第3の実施形態における1次元LUT加算回路101の構成を示す図である。図3に示す1次元LUT加算回路101は、v行目h列目に配置された1次元LUT加算回路101を示している。同図に示すように、1次元LUT加算回路101は、1次元LUT104、1次元LUT105、書込制御回路106、LUT選択スイッチ107、インターリーブ制御回路108及び加法回路109を有している。
【0043】
v行h列に配置されている1次元LUT加算回路101において、1次元LUT104には、入力X130が取り得る値と係数avhとの乗法演算結果M(i,Y)がLUT選択スイッチ107を介して書込制御回路106から入力される。1次元LUT104は、入力X130が取り得る値ごとに当該値と係数avhとの乗法演算結果を対応付けて記憶する。1次元LUT104は、入力される入力X130に対応する乗法演算結果をLUT選択スイッチ107に出力する。1次元LUT105は、1次元LUT104と同じ構成を有している。
【0044】
書込制御回路106は、1次元LUT104又は1次元LUT105に記憶させる乗法演算結果M(i,Y)を含む情報をLUT更新情報入力133から検出し、検出した乗法演算結果M(i,Y)をLUT選択スイッチ107に出力する。また、書込制御回路106は、1次元LUT104又は1次元LUT105に記憶させる乗法演算結果M(i,Y)を含む情報をLUT更新情報入力133から検出すると、1次元LUT104又は1次元LUT105への書き込みを示す書込信号106aをインターリーブ制御回路108に出力する。LUT更新情報入力133は、2項演算テーブル102が出力する情報である。すなわち、1次元LUT104又は1次元LUT105への乗法演算結果M(i,Y)の書き込みは、2項演算テーブル102がLUT更新情報入力133を出力することに応じて行われる。
【0045】
LUT選択スイッチ107は、書込制御回路106から入力107bに入力される乗法演算結果M(i,Y)を、切替信号107aに基づいて1次元LUT104と1次元LUT105とのいずれか一方に出力して記憶させる。LUT選択スイッチ107は、切替信号107aに基づいて、1次元LUT104が出力する乗法演算結果(avh×X)と、1次元LUT105が出力する乗法演算結果とのいずれか一方を選択し、選択した乗法演算結果を加法回路109に出力する。切替信号107aは、インターリーブ制御回路108によって生成される制御信号108aである。
【0046】
LUT選択スイッチ107は、乗法演算結果M(i,Y)を1次元LUT104に書き込む場合には1次元LUT105から出力される乗法演算結果を加法回路109に出力する。LUT選択スイッチ107は、乗法演算結果M(i,Y)を1次元LUT105に書き込む場合には1次元LUT104から出力される乗法演算結果を加法回路109に出力する。すなわち、LUT選択スイッチ107は、一方の1次元LUTに書き込む場合、他方の1次元LUTから乗法演算結果を得るように切り替えを行う。
【0047】
LUT選択スイッチ107において、書込制御回路106からの入力107b(乗法演算結果M(i,Y))は、1次元LUT104への出力107d又は次元LUT105への出力107cのいずれかに接続される。1次元LUT104からの入力107eと1次元LUT105からの入力107fとは、いずれか一方が出力107gに接続されて加法回路109へ出力される。
【0048】
図3に示されている例では、LUT選択スイッチ107の入力107bは出力107cに接続されているため、書込制御回路106が出力する乗法演算結果M(i,Y)は、1次元LUT105に書き込まれる。LUT選択スイッチ107の入力107eは出力107gに接続されているため、1次元LUT104が出力する乗法演算結果が加法回路109へ出力される。
【0049】
インターリーブ制御回路108は、書込制御回路106が書込信号106aを出力すると、次のh列演算結果入力Zin(h)131に対するデータ列(フレーム)の先頭で1次元LUT104及び1次元LUT105の選択を切り替えて反転させる制御信号108aを生成する。インターリーブ制御回路108は、生成した制御信号108aを、LUT選択スイッチ107の切替信号107aとしてLUT選択スイッチ107に出力する。
【0050】
加法回路109には、h列演算結果入力Zin(h)131と、LUT選択スイッチ107の出力107gとが入力される。加法回路109は、h列演算結果入力Zin(h)131と出力107gとの加法演算結果を、h列演算結果出力Zout(h)132として出力する。
【0051】
符号化及び復号化における行列演算は多くの場合、データ列(フレーム)単位で行われ、1つのデータ列に対して行列(係数)は固定である。例えば符号化に関しては、符号長や冗長度などのパラメータが変更されない限り、同じ符号化行列を用いる。消失訂正の復号化の場合、符号長や冗長度などのパラメータの変更の他、データ列(フレーム)単位の消失状況に応じて復号化行列を変更する。しかし、いずれの場合においても1つのデータ列(フレーム)に対しては同一の行列(係数)が用いられる。符号化及び復号化における行列演算を行う行列演算回路において、m行n列の格子点上に配置される積和演算回路では、1つのデータ列ごとに行う演算で係数が変わらないため、乗法などの2項演算における一方の入力を定数と見なすことができる。このような場合、2項演算における他方の入力が取り得る範囲の値に対する2項演算結果しか必要としないため、本実施形態のように一次元のLUTで構成することができる。
【0052】
図4は、第3の実施形態における1次元LUT加算回路101の動作を示すタイミングチャートである。同図において、横軸は時間を示し、乗法演算結果M(i,Y)を含むLUT更新情報入力133、書込信号106a、出力107d、1次元LUT104におけるLUT、出力107c、1次元LUT105におけるLUT、入力X130、制御信号108a、出力107g、h行演算結果入力Zin(h)及びh行演算結果出力Zout(h)132の信号変化が示されている。
【0053】
LUT更新情報入力133は、次のフレームにおいて用いられる係数Yに対応する乗法演算結果M(i,Y)であって1次元LUT104と1次元LUT105とのうちのいずれかに書き込まれる乗法演算結果M(i,Y)を含む。書込制御回路106は、LUT更新情報入力133から1次元LUT加算回路101において必要な情報を検出する。検出された情報は、LUT選択スイッチ107及びインターリーブ制御回路108によって選択された、1次元LUT104及び1次元LUT105のうち一方の1次元LUTに書き込まれる。現在のフレームの終端と次のフレームの先頭との間で、インターリーブ制御回路108は、乗法演算結果を読み出す1次元LUTと、LUTを更新する1次元LUTとを切り替える。新しいフレーム(新しいデータ列)における入力X130に対する読み出し側LUTの出力と、前列の演算結果出力Zout(h−1)132である入力Zin(h)131との加法演算結果を演算結果出力Zout(h)132として後列の1次元LUT加算回路101に送出する。最終的に1列目の演算結果出力Zout(1)132が行列演算結果Z122として得られる。
【0054】
図4に示すタイミングチャートにおいて、フレーム#1(frame#1)の入力X130が入力されている期間では、1次元LUT104に記憶させる乗法演算結果M(i,Y)を含むLUT更新情報入力133が出力107dとして出力される。この期間において、1次元LUT104のLUTが更新される。この期間では、1次元LUT105から読み出される乗法演算結果が用いられて行列演算が行われる。
【0055】
フレーム#1とフレーム#2との間の期間において、インターリーブ制御回路108が制御信号108aの出力レベルを変更することにより、乗法演算結果を読み出す1次元LUTが1次元LUT104に切り替えられるとともに、LUT更新情報入力133でLUTを更新する1次元LUTが1次元LUT105に切り替えられる。
【0056】
フレーム#2の入力X130が入力されている期間では、1次元LUT105に記憶させる乗法演算結果M(i,Y)を含むLUT更新情報入力133が出力107cとして出力される。この期間において、1次元LUT105のLUTが更新される。この期間では、フレーム#1の入力X130が入力されている期間においてLUTを更新した1次元LUT104から読み出される乗法演算結果が用いられて行列演算が行われる。
【0057】
フレーム#2とフレーム#3との間の期間において、インターリーブ制御回路108が制御信号108aの出力レベルを変更することにより、乗法演算結果を読み出す1次元LUTが1次元LUT105に切り替えられるとともに、LUT更新情報入力133でLUTを更新する1次元LUTが1次元LUT104に切り替えられる。
【0058】
フレーム#3の入力X130が入力されている期間では、1次元LUT104に記憶させる乗法演算結果M(i,Y)を含むLUT更新情報入力133が出力107dとして出力される。この期間において、1次元LUT104のLUTが更新される。この期間では、フレーム#2の入力X130が入力されている期間においてLUTを更新した1次元LUT105から読み出される乗法演算結果が用いられて行列演算が行われる。
【0059】
本実施形態における行列演算回路の各1次元LUT加算回路101が、上述のように動作することにより、一つのデータ列(フレーム)ごとに用いる係数を示す行列(符号化行列や復号化行列)に変更が必要となる場合であっても、行列演算と行列の更新とを並行して行うことができる。
【0060】
各演算における入力が8ビットであり8行8列の行列演算を実現する場合には、図7及び図8に示した構成の行列演算回路では各2次元LUT111を構成するために64kbyteを必要とするので、64個の2次元LUT111には合計で4096kbyteのメモリを必要とする。一方、第3の実施形態の行列演算回路では、64個の1次元LUT加算回路101それぞれの1次元LUTに2×256byte=512byteを必要とし、8個の2項演算テーブル102それぞれに64kbyteを必要とし、総計で544kbyteのメモリで実現可能となる。
【0061】
また、第2の実施形態における行列演算回路において、512byteを必要とする64個の1次元LUT加算回路101と、64kbyteを必要とする1個の2項演算テーブル102とで構成する場合、総計96kbyteのメモリで実現可能となる。
【0062】
なお、第3の実施形態における1次元LUT加算回路101が、2つの1次元LUT104及び1次元LUT105を有する構成を説明したが、3つ以上の1次元LUTを有していてもよい。また、1次元LUT104及び1次元LUT105へ乗法演算結果M(i,Y)を書き込むタイミングは、LUT更新情報入力133に依らずともよく、データ列(フレーム)の入力タイミングに同期した上位の装置が出力する信号に基づいて決定されてもよい。
【0063】
(第4の実施形態)
第4の実施形態における行列演算回路は、行列演算に用いる行列の種類が比較的少数の場合に適用できる構成を有している。図5は、第4の実施形態における行列演算回路の構成を示す図である。第4の実施形態における行列演算回路は、第1から第3の実施形態における行列演算回路と同様に、m行n列の行列演算を行う回路である。行列演算回路は、入力X120(={X,X,…,X})と、係数ベクトルY123(={Y,Y,…,Y})とに対する行列演算を行う。
【0064】
第4の実施形態における行列演算回路は、1次元LUT加算回路101に代えて1次元LUT加算回路201を備え、LUTページ選択信号233が各1次元LUT加算回路201に入力されている点が、第2の実施形態における行列演算回路(図2)と異なる。図5に示す行列演算回路は、m行n列の格子点上それぞれに配置された1次元LUT加算回路201、2項演算テーブル102及び選択回路103を有している。本実施形態における1次元LUT加算回路201は、1次元LUTのページ選択に対応した1次元LUT加算回路である。ここで、LUTページ選択信号は、データ列(フレーム)の入力タイミングに同期した上位の装置が出力する信号であり、行列演算回路において演算対象となる複数の行列のうち、いずれの行列に対する演算を行うかを指示する信号である。
【0065】
図6は、第4の実施形態における1次元LUT加算回路201の構成を示す図である。図6に示す1次元LUT加算回路201は、v行目h列目に配置された1次元LUT加算回路201を示している。同図に示すように、1次元LUT加算回路201は、k個の1次元LUT204を含む1次元LUTアレイ、書込制御回路206、LUT選択回路207及び加法回路109を有している。第4の実施形態における1次元LUT加算回路201は、行列演算に用いる行列の種類に相当する数の1次元LUT204を有する。ここで、行列の種類とは、データ列に対する行列演算において用いる可能性がある行列であって、行列の要素の値が異なる行列の数のことである。
【0066】
1次元LUTアレイにおける各1次元LUT204は、第3の実施形態における1次元LUT104及び1次元LUT105と同様に、入力X130が取り得る値ごとに当該値と係数avhとの乗法演算結果M(i,Y)を対応付けて記憶する。書込制御回路206は、2項演算テーブル102から入力される乗法演算結果(2項演算結果)を、1次元LUTアレイを構成する各1次元LUT204に記憶させる。
【0067】
LUT選択回路207は、複数の1次元LUT204それぞれから出力される、入力X130に対応する乗法演算結果のうち、入力されるLUTページ選択信号233に応じて一つの乗法演算結果を選択する。LUT選択回路207は、選択した乗法演算結果を加法回路109に出力する。
【0068】
第4の実施形態における行列演算回路では、1次元LUT加算回路201それぞれにおいて複数の1次元LUT204からいずれか一つをLUTページ選択信号233に応じて選択するので、LUTページ選択信号233を変更することにより行列演算の対象になる行列を容易に切り替えることができる。また、各1次元LUT加算回路201には、k個の1次元LUT204を設けているので、フレーム(データ列)に対する行列演算を行っている最中に1次元LUT204に記憶させる2項演算結果を更新する必要が無くなるため、フレーム長が短い場合における行列演算への適用が可能になる。また、1次元LUT204における2項演算結果の更新に要する時間に対する制限が緩和されるため、2項演算テーブル102の個数を減らすことが容易になる。
【0069】
上述のように、第4の実施形態における行列演算回路によれば、行列演算に用いる各行列に対応する2項演算結果を1次元LUT204それぞれに予め記憶させておくことにより、行列演算に用いる行列をフレーム(データ列)ごとに切り替えるための1次元LUT204の更新に要する時間を削減することができ、短いフレーム長の符号化や復号化に用いることができるとともに、2項演算テーブル102の個数を減らして回路規模を削減することができる。
【0070】
(第5の実施形態)
第5の実施形態では、LUT更新情報入力133の生成について説明する。表1及び表2は、LUT更新情報入力133を説明するための表である。表1は、行列演算回路において用いる2項演算の一例としての整数乗算を示す2項演算のテーブルである。なお、2項演算のテーブルで表す演算は、整数乗算以外であってもよく、ガロア体の乗算等の任意の演算であってもよい。表1に示す2項演算のテーブルでは、入力X130が取り得る値は「0」、「1」、「2」及び「3」と定められ、係数Yの値として「0」、「1」、「2」及び「3」が定められていることになる。2項演算テーブル102には、表1に示すようなテーブルが予め設けられている。
【0071】
【表1】
【0072】
表2は、v行の1次元LUT加算回路101に対するLUT更新情報入力133の一例を示すテーブルである。ここでは、4列分の1次元LUT加算回路101が行列演算回路において配置されているものとしている。表2には、フレーム#(t−1)からフレーム#(t+1)までの3フレーム分におけるv行の1次元LUT加算回路101に対する係数Yと2項演算結果M(i,Y)と2項演算位置情報とが示されている。LUT更新情報入力133は、2項演算結果(乗法演算結果M(i,Y))と2項演算位置情報とを含む。
【0073】
【表2】
【0074】
フレーム間で係数が変化しない場合には1次元LUT加算回路101において1次元LUT104又は1次元LUT105を更新する必要がない。そこで、LUT更新情報入力133には、更新する必要がある1次元LUT加算回路101を示す2項演算位置情報が含まれている。
【0075】
表2において、フレーム#(t−1)における係数Y[h](=avh)は、1列目の1次元LUT加算回路101に対して「0」、2列目の1次元LUT加算回路101に対して「1」、3列目の1次元LUT加算回路101に対して「2」、4列目の1次元LUT加算回路101に対して「3」が割り当てられている。表2では、この係数Yの割り当てが{0,1,2,3}として表記されている。
【0076】
フレーム#tにおける係数Yは、1列目から4列目の1次元LUT加算回路101に対して{0,2,1,1}が割り当てられている。フレーム#tでは、1列目以外の2列目から4列目の1次元LUT加算回路101に対して割り当てられる係数Yに変更が生じているので、各1次元LUT加算回路101における1次元LUT104又は1次元LUT105を更新する必要がある。そのため、フレーム#tにおける係数Yの変更に応じた2項演算結果M(i,Y)が2項演算テーブル102において生成される。
【0077】
具体的には、2項演算テーブル102は、2項演算のテーブルにおける係数Y「2」の1列{0,2,4,6}を、2列目の1次元LUT加算回路101のLUTを更新する2項演算結果M(i,Y)として出力する。また、2項演算テーブル102は、テーブルにおける係数Y「1」の1列{0,1,2,3}を、3列目及び4列目の1次元LUT加算回路101のLUTを更新する2項演算結果M(i,Y)として出力する。
【0078】
すなわち、2項演算テーブル102は、フレーム#tに対する行列演算が行われる前に、2項演算結果M(i,Y){{0,2,4,6},{0,1,2,3},{0,1,2,3}}と、2項演算位置情報{2,3,4}とを含むLUT更新情報入力133をv行の各1次元LUT加算回路101に対して出力する。
【0079】
フレーム#(t+1)における係数Yは、1列目から4列目の1次元LUT加算回路101に対して{2,2,2,2}が割り当てられている。フレーム#(t+1)では、1列目、3列目及び4列目の1次元LUT加算回路101に対する係数Yに変更が生じている。フレーム#(t+1)に対する行列演算が行われる前に2項演算テーブル102が出力するLUT更新情報入力133には、2項演算位置情報は{1,3,4}と、2項演算結果M(i,Y){{0,2,4,6},{0,2,4,6},{0,2,4,6}}とが含まれる。
【0080】
上述のようなLUT更新情報入力133を生成するために、2項演算テーブル102は、例えば各列の1次元LUT加算回路101の1次元LUTが記憶している2項演算結果M(i,Y)の係数Y[h]と、次のフレームにおいて各1次元LUT加算回路101に割り当てる係数Y[h]とを比較する。2項演算テーブル102は、二つの係数Y[h]が一致しない場合は、当該1次元LUT加算回路101を更新の対象として当該1次元LUT加算回路101の列を示す値を、2項演算位置情報に加える。
【0081】
また、2項演算テーブル102は、次のフレームにおいて記憶させる係数Y[h]の列の要素をテーブルから読み出して、2項演算結果M(i,Y)に加える。行ごとに配置された2項演算テーブル102が、それぞれの行における各1次元LUT加算回路101に割り当てる係数Y[h]の比較を行うことにより、LUT更新情報入力133の2項演算位置情報及び2項演算結果M(i,Y)が生成される。
【0082】
なお、図3に示したように、1次元LUT加算回路101において2つの1次元LUT104及び1次元LUT105が交互に用いられている場合には、2項演算テーブル102は、1次元LUT加算回路101に割り当てた係数Y[h]の比較をする際に、1次元LUTの切り替えに合わせて比較対象の係数Y[h]を切り替える。また、LUT更新情報入力133において、2項演算位置情報における列を示す値の並びと、2項演算結果M(i,Y)における各列の1次元LUT加算回路101に記憶させる値の集合の並びとは、対応している。
【0083】
また、1次元LUT加算回路101における書込制御回路106は、2項演算テーブル102から入力されるLUT更新情報入力133の2項演算位置情報に、自回路が配置されている列を示す値が含まれているか否かを判定する。書込制御回路106は、自回路の列を示す値が2項演算位置情報に含まれている場合、LUT更新情報入力133に含まれる2項演算結果M(i,Y)のうち、自身の列に対応する2項演算結果M(i,Y)を検出し、検出した2項演算結果M(i,Y)をLUT選択スイッチ107に出力する。
【0084】
上述のように、2項演算テーブル102がLUT更新情報入力133を生成して、係数Yに変更が生じた列の1次元LUT加算回路101に対する2項演算結果M(i,Y)に限定してLUT更新情報入力133に含めることにより、LUT更新情報入力133の情報量を減らすことが可能になる。
【0085】
なお、第2の実施形態における行列演算回路のように、2項演算テーブル102が複数の行の1次元LUT加算回路101に対するLUT更新情報入力133を生成して出力する場合には、2項演算位置情報には更新の対象となる行を示す値が含まれることになる。
【0086】
(第6の実施形態)
第6の実施形態では、第5の実施形態におけるLUT更新情報入力133と異なるLUT更新情報入力133について説明する。第6の実施形態におけるLUT更新情報入力133は、変更が生じた係数Yのうち同じ値が割り当てられる列(1次元LUT加算回路101)が複数存在する場合、2項演算結果M(i,Y)の出力が重複することを避けるために、係数Yに対する列の集合を2項演算位置情報とする構成が第5の実施形態と異なる。表3は、第6の実施形態におけるLUT更新情報入力133の一例を示すテーブルである。表3に示される各列の1次元LUT加算回路101に対する係数Yの割り当ては、表2に示される係数Yの割り当てと同じである。
【0087】
【表3】
【0088】
表3のフレーム#tにおいて、割り当てに変更が生じた係数Yには「2」と「1」との2種類であり、この2つの係数Yに対応する表1の列{0,2,4,6}と{0,1,2,3}とが2項演算結果M(i,Y)としてLUT更新情報入力133に含まれる。また、係数Y「2」が割り当てられるのは2列目の1次元LUT加算回路101であり、係数Y「1」が割り当てられるのは3列目と4列目との1次元LUT加算回路101であるので、{{2}、{3,4}}が2項演算位置情報としてLUT更新情報入力133に含まれる。すなわち、変更後の係数Yvが「2」の1次元LUT加算回路101のグループと、変更後の係数Yvが「1」の1次元LUT加算回路101のグループとに分けた2項演算位置情報{{2}、{3,4}}が生成されることになる。また、各グループに向けた2項演算結果M(i,Y){{0,2,4,6}、{0,1,2,3}}が生成されることになる。
【0089】
また、フレーム#(t+1)において、割り当てに変更が生じた係数Yには「2」の1種類であり、この係数Y「2」に対応する表1の列{0,2,4,6}が2項演算結果M(i,Y)としてLUT更新情報入力133に含まれる。また、係数Y「2」が割り当てられるのは、1列目、3列目及び4列目の1次元LUT加算回路101であるので、{{1,3,4}}が2項演算位置情報としてLUT更新情報入力133に含まれる。このとき、LUT更新情報入力133に含まれる2項演算結果M(i,Y)は、{{0,2,4,6}}になる。
【0090】
このように、2項演算テーブル102が、LUT更新情報入力133に含める情報を、割り当てられる係数Yが変更した列に対する2項演算結果M(i,Y)に限定し、さらに、重複する2項演算結果M(i,Y)を同じ係数Yでまとめてグループ化して2項演算結果M(i,Y)を出力することにより、LUT更新情報入力133の情報量をさらに削減することが可能になる。
【0091】
なお、第2の実施形態における行列演算回路のように、2項演算テーブル102が複数の行の1次元LUT加算回路101に対するLUT更新情報入力133を生成して出力する場合には、2項演算位置情報には更新の対象となる行を示す値が含まれることになる。
【0092】
図7及び図8において示した行列演算回路においては、演算対象の行列のサイズ(m行n列)に応じて2次元LUT111を行列状に配置していたため、比較的小さな入力サイズ(ビット数)にしか適用できなかった。これに対して、各実施形態において説明した行列演算回路は、フレーム単位(一つのデータ列)に対する行列の各要素に変更がなされないことを前提にして、演算対象の行列のサイズ(m行n列)に応じて1次元LUT加算回路101を行列状に配置して、各行又は各列の1次元LUT加算回路101で2項演算テーブル102を共有することで回路規模の削減を図ることができる。各1次元LUT加算回路101におけるLUTのサイズが小さくできるので、大きな入力サイズに対する2項演算(乗法演算)を行ったとしても回路規模の増加を抑えることができる。また、2項演算(乗法演算)をLUTで実装するため、複雑な論理回路を用いる必要がないため行列演算回路における演算遅延を抑えることができる。
【0093】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【産業上の利用可能性】
【0094】
フレーム(ブロック)単位で行列演算を行う回路において回路規模の削減が不可欠な用途にも適用できる。
【符号の説明】
【0095】
101,201…1次元LUT加算回路
102…2項演算テーブル
103…選択回路
104,105,204…1次元LUT
106,206…書込制御回路
106a,206a…書込信号
107…LUT選択スイッチ
107a…切替信号
107b,107e,107f…入力
107c,107d,107g…出力
108…インターリーブ制御回路
108a…制御信号
109…加法回路
110…積和演算回路
111…2次元LUT
111a…乗法演算結果
120…入力X
122…出力Z
123…係数ベクトルY
130…入力X
131…h列演算結果入力Zin(h)
132…h行演算結果出力Zout(h)
133…LUT更新情報入力
207…LUT選択回路
233…LUTページ選択信号
【要約】
【課題】行列演算をハードウェアで実装する場合の回路規模を削減できる行列演算回路を提供する。
【解決手段】行列演算回路は、m行n列の行列状に配置された1次元LUT加法回路を備える。各1次元LUT加法回路は、自回路が位置に対応する行列の要素avhと入力ベクトルXの要素が取り得る値との2項演算結果を入力ベクトルXの要素が取り得る値に対応付けて記憶するLUTと、入力ベクトルXにおける自回路が位置する列の要素の値に対応する2項演算結果をLUTから読み出し、自回路と同じ行の後列の1次元LUT加法回路の出力と読み出した2項演算結果との加法演算結果を自回路と同じ行の前列の1次元LUT加法回路に出力する加法回路とを有する。行列演算に先立ち、各1次元LUT加法回路の位置に対応する要素avhと入力ベクトルXの要素が取り得る値との2項演算結果をそれぞれのLUTに記憶させる。
【選択図】図1
図1
図2
図3
図4
図5
図6
図7
図8