(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2023-08-01
(45)【発行日】2023-08-09
(54)【発明の名称】相互接続制御回路
(51)【国際特許分類】
G06N 3/063 20230101AFI20230802BHJP
G06F 17/16 20060101ALI20230802BHJP
【FI】
G06N3/063
G06F17/16 B
(21)【出願番号】P 2023074432
(22)【出願日】2023-04-28
【審査請求日】2023-04-28
【早期審査対象出願】
(73)【特許権者】
【識別番号】514149141
【氏名又は名称】メイビスデザイン株式会社
(74)【代理人】
【識別番号】100141106
【氏名又は名称】池田 清志
(72)【発明者】
【氏名】早稲田 龍司
(72)【発明者】
【氏名】外浦 晴季
【審査官】加藤 優一
(56)【参考文献】
【文献】特開2000-322400(JP,A)
【文献】湯川 高志,バス結合型並列プロセッサに適したバックプロパゲーションの並列計算法,電子情報通信学会論文誌,日本,社団法人電子情報通信学会,1991年09月25日,第J74-D-II巻, 第9号,第1318頁-第1320頁,ISSN:0915-1923
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00 -99/00
G06F 12/00 -12/06
G06F 13/16 -13/18
G06F 18/00 -18/40
G06F 17/00 -17/18
(57)【特許請求の範囲】
【請求項1】
後段層のニューロンから前段層のニューロンへ誤差情報を転送する相互接続制御回路であって、
前記前段層のニューロン数分のメモリを有し、前記後段層のニューロンから入力される誤差情報を前記前段層のニューロン数分のメモリの読み込みアドレスを示す第1アドレスに対応させて記憶する第1保持回路と、
前記後段層のニューロン数分のメモリを有し、前記前段層のニューロンへ出力する誤差情報を前記後段層のニューロン数分のメモリの書き込みアドレスを示す第2アドレスに対応させて記憶する第2保持回路と、
所定の制御周期ごとに、前記第1アドレスをシフトすることにより前記第1保持回路のメモリそれぞれから前記誤差情報を読み込むと共に、前記第2アドレスをシフトすることにより、前記読み込んだ前記誤差情報を配置転換して前記第2保持回路のメモリそれぞれへ書き込む転送回路と、
を備えたことを特徴とする相互接続制御回路。
【請求項2】
前記第1保持回路のメモリは、それぞれ前記後段層のニューロン数分のデータを記憶可能に領域分割されており、
前記第2保持回路のメモリは、それぞれ前記前段層のニューロン数分のデータを記憶可能に領域分割されており、
前記転送回路は、前記読み込んだ前記誤差情報を、前記第1保持回路の各メモリの同一位置の領域に記憶されたデータが、前記第2保持回路が有する同一のメモリに記憶するように配置転換する
ことを特徴とする請求項1記載の相互接続制御回路。
【請求項3】
前記転送回路による書き込みにより、前記第2保持回路の各メモリの同一位置の領域に記憶されたデータが揃ったときに、前記前段層により前記書き込まれた同一位置の領域に記憶されたデータが読み出される
ことを特徴とする請求項2記載の相互接続制御回路。
【請求項4】
前記転送回路による書き込みにより、前記第2保持回路の各メモリの同一位置の領域に記憶されたデータが揃い、かつ予め設定された閾値時間が経過したときに、前記前段層により前記書き込まれた同一位置の領域に記憶されたデータが読み出される
ことを特徴とする請求項2記載の相互接続制御回路。
【請求項5】
前記前段層と前記後段層との接続状態を接続情報として記憶する接続情報記憶部を、さらに備え、
前記転送回路は、
所定の制御周期ごとに、前記接続情報に基づいて前記第1アドレスをシフトすることにより前記第1保持回路のメモリそれぞれから前記誤差情報を読み込むと共に、前記接続情報に基づいて前記第2アドレスをシフトすることにより、前記読み込んだ前記誤差情報を配置転換して前記第2保持回路のメモリそれぞれへ書き込む
ことを特徴とする請求項1記載の相互接続制御回路。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パラメータをメモリに格納してニューラルネットワークを構築する相互接続制御回路に関する。
【背景技術】
【0002】
一般的に、機械学習は、経験からの学習により自動で改善するコンピューターアルゴリズムで、人工知能(AI)の一種であるとみなされている。「学習データ」と呼ばれるデータを使って学習することで、プログラムで指定することが難しいパラメータを自動的に学習し、学習結果を使って目的とするタスクを行うことができる。
【0003】
機械学習に必要な学習データは膨大であり、収集に大きな労力が必要となる。そこでクラウド型AIを用いた学習が主流となっている。クラウド型AIは、エッジ端末で収集したデータを一旦クラウドに送信し、クラウド内でAI処理を行い、再度エッジ端末にデータを配信する。
【0004】
エッジAIを実現する手法として、ニューラルネットワークによる機械学習アルゴリズムが用いられる。ニューラルネットワークは、神経ネットワーク構造と機能を模倣するという観点で生まれたアルゴリズムであり、数理モデル化した神経細胞(ニューロン)をネットワーク構造に結合したものである。
【0005】
一般的な相互接続ニューラルネットワークをハードウェアで実現する際、1つのニューロンにつきパラメータが複数あり、ニューロン数が増えてくると回路規模に占めるパラメータ格納領域が膨大化するという課題があった。
【0006】
そのため、ニューラルネットワークをハードウェアで実装するとき、大規模なニューラルネットワークを構築するには規模が大きく不向きで合った。
【0007】
そこで、パラメータをメモリに格納してニューラルネットワークを構築することが考えられる。この場合、メモリから後段層のニューロンの誤差情報を読み出す必要があるので、後段層のニューロン数だけ誤差情報を読み出す必要があり、後段のニューロンが5つある場合は5サイクル必要になる。
【0008】
特許文献1には、ニューロンの誤差情報を読み出すサイクルを高速化する技術としてSWAP回路を用いてデータの並び替えを行うことで、読み出し処理の高速化を行う技術が開示されている。
【先行技術文献】
【特許文献】
【0009】
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、特許文献1に記載の技術では、例えば、特許文献1のFig10Cに示されているように、置換回路1001は、レジスタ1002、1004、1006及び1008を備えており、レジスタ1002は、キャッシュラインのバイトb0、b4、b8及びb12を受信するように連結された入力線を備え、レジスタ1004は、キャッシュラインのバイトb1、b5、b9及びb13を受信するように連結された入力線を備え、レジスタ1006は、キャッシュラインのバイトb2、b6、b10及びb14を受信するように連結された入力線を備え、レジスタ1008は、キャッシュラインのバイトb3、b7、b11及びb15を受信するように連結された入力線を備える。
【0011】
特許文献1に記載の技術では、4x4の行列を転置しているが、このとき、書き込みに4サイクル、読み出しに4サイクルの計8サイクル必要になる。
【0012】
このように、行列のサイズに応じて、レジスタ・RAMの数を増やす必要があり、それに付随する信号線も増えていくため、回路規模が行列のサイズに比例して大きくなるので、製造コストが増大するという問題があった。また、レジスタ・RAMへ配置を変えたいデータを全て書き込んだのち、読み出すという流れであるため、必要サイクル数が多いので、行列の大きさに比例して、処理時間が長くなるという問題があった。また、行列のサイズに応じて、レジスタ・RAMの数を増やす必要があり、回路構成を変更する必要があるため、汎用性に欠けるという問題があった。
【0013】
本発明は、上記問題点に鑑みてなされたものであり、小規模かつ汎用性のある装置構成であって処理の高速化を可能にする相互接続制御回路を提供することを目的とする。
【課題を解決するための手段】
【0014】
上記目的を解決するため、本発明に係る相互接続制御回路の第1の特徴は、
後段層のニューロンから前段層のニューロンへ誤差情報を転送する相互接続制御回路であって、
前記前段層のニューロン数分のメモリを有し、前記後段層のニューロンから入力される誤差情報を前記前段層のニューロン数分のメモリの読み込みアドレスを示す第1アドレスに対応させて記憶する第1保持回路と、
前記後段層のニューロン数分のメモリを有し、前記前段層のニューロンへ出力する誤差情報を前記後段層のニューロン数分のメモリの書き込みアドレスを示す第2アドレスに対応させて記憶する第2保持回路と、
所定の制御周期ごとに、前記第1アドレスをシフトすることにより前記第1保持回路のメモリそれぞれから前記誤差情報を読み込むと共に、前記第2アドレスをシフトすることにより、前記読み込んだ前記誤差情報を配置転換して前記第2保持回路のメモリそれぞれへ書き込む転送回路と、を備えたことにある。
【0015】
本発明に係る相互接続制御回路の第2の特徴は、
前記第1保持回路のメモリは、それぞれ前記後段層のニューロン数分のデータを記憶可能に領域分割されており、
前記第2保持回路のメモリは、それぞれ前記前段層のニューロン数分のデータを記憶可能に領域分割されており、
前記転送回路は、前記読み込んだ前記誤差情報を、前記第1保持回路の各メモリの同一位置の領域に記憶されたデータが、前記第2保持回路が有する同一のメモリに記憶するように配置転換することを特徴とすることにある。
【0016】
本発明に係る相互接続制御回路の第3の特徴は、
前記転送回路による書き込みにより、前記第2保持回路の各メモリの同一位置の領域に記憶されたデータが揃ったときに、前記前段層により前記書き込まれた同一位置の領域に記憶されたデータが読み出されることにある。
【0017】
本発明に係る相互接続制御回路の第4の特徴は、
前記転送回路による書き込みにより、前記第2保持回路の各メモリの同一位置の領域に記憶されたデータが揃い、かつ予め設定された閾値時間が経過したときに、前記前段層により前記書き込まれた同一位置の領域に記憶されたデータが読み出されることにある。
【0018】
本発明に係る相互接続制御回路の第5の特徴は、
前記前段層と前記後段層との接続状態を接続情報として記憶する接続情報記憶部を、さらに備え、
前記転送回路は、
所定の制御周期ごとに、前記接続情報に基づいて前記第1アドレスをシフトすることにより前記第1保持回路のメモリそれぞれから前記誤差情報を読み込むと共に、前記接続情報に基づいて前記第2アドレスをシフトすることにより、前記読み込んだ前記誤差情報を配置転換して前記第2保持回路のメモリそれぞれへ書き込むことにある。
【発明の効果】
【0019】
本発明に係る相互接続制御回路によれば、小規模かつ汎用性のある装置構成であって処理の高速化を実現することができる。
【図面の簡単な説明】
【0020】
【
図1】本発明の実施例1に係る相互接続制御回路の構成図である。
【
図2】本発明の実施例1に係る相互接続制御回路における誤差情報の配置転換を模式的に説明した説明図である。
【
図3】本発明の実施例1に係る相互接続制御回路の誤差情報の配置転換におけるデータの流れを模式的に説明した説明図である。
【
図4】本発明の実施例1に係る相互接続制御回路の第1保持回路の動作を示したタイミングチャートである。
【
図5】本発明の実施例1に係る相互接続制御回路の第2保持回路の動作を示したタイミングチャートである。
【
図6】本発明の実施例1に係る相互接続制御回路の構成図である。
【
図7】(a)は、比較のため、
図5と同様の本発明の実施例1に係る相互接続制御回路の第2保持回路の動作を示したタイミングチャートであり、(b)は、本発明の実施例2に係る相互接続制御回路の第2保持回路の動作を示したタイミングチャートである。
【
図8】本発明の実施例3に係る相互接続制御回路の構成図である。
【
図9】(a)は、本発明の実施例1に係る相互接続制御回路の誤差情報の配置転換におけるデータの流れを模式的に説明した説明図であり、(b)は、本発明の実施例3に係る相互接続制御回路の誤差情報の配置転換におけるデータの流れを模式的に説明した説明図である。
【発明を実施するための形態】
【0021】
以下、本発明の実施の形態について、図面を参照して説明する。各図面を通じて同一若しくは同等の部位や構成要素には、同一若しくは同等の符号を付している。ただし、図面は模式的なものであり、現実のものとは異なることに留意すべきである。また、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれている。
【0022】
また、以下に示す実施の形態は、この発明の技術的思想を具体化するための装置等を例示するものであって、この発明の技術的思想は、各構成部品の配置等を下記のものに特定するものでない。この発明の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【0023】
<実施例1>
図1は、本発明の実施例1に係る相互接続制御回路の構成図である。
図1に示すように、本発明の実施例1に係る相互接続制御回路1は、パラメータをメモリに格納してニューラルネットワークを構築するスパイキングニューラルネットワークを用いたアーキテクチャである。相互接続制御回路1は、制御部3と、出力層4と、SWAP回路5と、中間層6と、入力層7とを備えており、制御部3と、出力層4と、中間層6と、入力層7とは、バスインターフェイス2を介してバスに接続されている。
【0024】
情報が入力される入力層7と、情報が発信される出力層4と、その中間にある中間層6とは、人間の脳内にある神経細胞を数理モデルで表現した複数のニューロンを有しており、隣接する層のニューロンとそれぞれ接続されている。
【0025】
相互接続制御回路1は、各ニューロンのパラメータをメモリに保存することで1つのニューロン回路を再利用する。これを実現するためには、後段層のニューロンの誤差情報を読み出し、前段層へ書き込む必要がある。そして、学習において出力層4から中間層6へ誤差情報を逆伝搬する際、中間層6のパイプライン処理時に必要なデータを同時に読み出せるようデータの並び替えが必要になる。
【0026】
そこで、相互接続制御回路1は、適切に後段層のニューロンの誤差情報を読み出し、データの並び替えを行い適切に前段層へ書き込むため、SWAP回路5を有している。ここでは、前段層を中間層6とし、後段層を出力層4として説明するが、これに限らず、前段層および後段層を中間層6としても適用可能であるし、前段層を入力層7とし後段層を中間層6としても適用可能である。
【0027】
SWAP回路5は、第1保持回路51と、第1シフトレジスタ52と、第1カウンタ53と、第2保持回路54と、第2シフトレジスタ55と、第2カウンタ56とを備えている。このうち、第1シフトレジスタ52と、第1カウンタ53と、第2シフトレジスタ55と、第2カウンタ56とを転送回路50という。
【0028】
第1保持回路51は、前段層である中間層6のニューロン数分のメモリを有し、後段層である出力層4のニューロンから入力される誤差情報を中間層6のニューロン数分のメモリの読み込みアドレスを示す第1アドレスに対応させて記憶する。
【0029】
第1シフトレジスタ52は、第1カウンタ53によりカウントされた第1アドレスをシフトすることにより、第1保持回路51のメモリから誤差情報のデータを読み出させる。
【0030】
第1カウンタ53は、第1保持回路51への読み出しアドレスである第1アドレスをカウントする。
【0031】
第2保持回路54は、後段層である出力層4のニューロン数分のメモリを有し、前段層である中間層6のニューロンへ出力する誤差情報のデータを出力層4のニューロン数分のメモリの書き込みアドレスを示す第2アドレスに対応させて記憶する。
【0032】
第2シフトレジスタ55は、第2カウンタ56によりカウントされた第2アドレスをシフトすることにより、第2保持回路54のメモリへ誤差情報を書き込むことができる。
【0033】
第2カウンタ56は、第2保持回路54への書き込みアドレスである第2アドレスをカウントする。
【0034】
転送回路50は、第1シフトレジスタ52と、第1カウンタ53と、第2シフトレジスタ55と、第2カウンタ56とを有することにより、所定の制御周期ごとに、第1アドレスをシフトすることにより第1保持回路51のメモリそれぞれから誤差情報を読み込むと共に、第2アドレスをシフトすることにより、読み込んだ誤差情報を配置転換して第2保持回路54のメモリそれぞれへ書き込むことができる。
【0035】
図2は、本発明の実施例1に係る相互接続制御回路1における誤差情報の配置転換を模式的に説明した説明図である。
図2では、前段層を中間層6とし、後段層を出力層4として、出力層4からの誤差情報を中間層6へ転送する例を例に挙げて説明する。ここで、中間層6が8つのニューロンを有しており、出力層4が5つのニューロンを有しているとする。
【0036】
中間層6が8つのニューロンを有しているので、
図2に示すように、第1保持回路51は、中間層6のニューロン数である8つのメモリ511~518を有している。メモリ511~518は、RAM(Random Access Memory)であり、読み書き(アクセス)可能な記憶領域を有している。メモリ511は、それぞれ出力層4のニューロン数分(ここでは5)のデータを記憶可能なように領域511a~511eの5つに領域分割されている。メモリ512~518も、メモリ511と同様に、それぞれ出力層4のニューロン数分(ここでは5)のデータを記憶可能なように5つに領域分割されている。
【0037】
そして、第1保持回路51は、出力層4のニューロンから入力される誤差情報を中間層6のニューロン数分(ここでは8)のメモリの読み込みアドレスを示す第1アドレスに対応させて記憶する。
【0038】
また、出力層4が5つのニューロンを有しているので、
図2に示すように、第2保持回路54は、出力層4のニューロン数である5つのメモリ541~545を有している。メモリ541~545は、RAM(Random Access Memory)であり、読み書き(アクセス)可能な記憶領域を有している。メモリ541は、それぞれ中間層6のニューロン数分(ここでは8)のデータを記憶可能なように領域541a~541hの8つに領域分割されている。メモリ542~515も、メモリ541と同様に、それぞれ中間層6のニューロン数分(ここでは8)のデータを記憶可能なように8つに領域分割されている。
【0039】
そして、第2保持回路54は、中間層6のニューロンへ出力する誤差情報を出力層4のニューロン数分のメモリの書き込みアドレスを示す第2アドレスに対応させて記憶する。
【0040】
図3は、本発明の実施例1に係る相互接続制御回路1の誤差情報の配置転換におけるデータの流れを模式的に説明した説明図である。
図3における左から順に、制御周期であるt0時点~t7時点におけるデータの書き込みおよび読み出しを説明している。
図3における上段に第1保持回路51の状態を示しており、下段に第2保持回路54の状態を示しており、上下段で同一の時点を示している。
【0041】
t0時点において、第1保持回路51は、出力層4からの8データ分の誤差情報を、領域511a~518aに記憶する。
【0042】
t1時点において、第1保持回路51は、出力層4からの8データ分の誤差情報を、領域511b~518b(
図3では、512b~517bの符号の図示を省略するが、領域512b~517bは、領域511bと領域518bとの間に設けられている)に記憶する。また、転送回路50は、第1保持回路51の領域511aに記憶されたデータを第1アドレスに基づいて読み込む。そして、転送回路50は、読み込んだデータを第2アドレスに対応させて第2保持回路54の領域541aに記憶させる。
【0043】
t2時点において、第1保持回路51は、出力層4からの8データ分の誤差情報を、領域511c~518c(
図3では、512c~517cの符号の図示を省略するが、領域512c~517cは、領域511cと領域518cとの間に設けられている)に記憶する。また、転送回路50は、第1アドレスをシフトさせることで、第1保持回路51の領域512aに記憶されたデータと領域511bに記憶されたデータを第1アドレスに基づいて読み込む。そして、転送回路50は、第2アドレスをシフトさせることで第1保持回路51の領域512aに記憶されたデータを第2保持回路54の領域541bに記憶させると共に、第1保持回路51の領域511bに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域542aに記憶させる。
【0044】
t3時点において、第1保持回路51は、出力層4からの8データ分の誤差情報を、領域511d~518d(
図3では、512d~517dの符号の図示を省略するが、領域512d~517dは、領域511dと領域518dとの間に設けられている)に記憶する。また、転送回路50は、第1アドレスをシフトさせることで、第1保持回路51の領域513aに記憶されたデータと、第1保持回路51の領域512bに記憶されたデータと、第1保持回路51の領域511cに記憶されたデータとを第1アドレスに基づいて読み込む。そして、転送回路50は、第1保持回路51の領域513aに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域541cに記憶させ、第1保持回路51の領域512bに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域542bに記憶させ、第1保持回路51の領域511cに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域543aに記憶させる。
【0045】
t4時点において、第1保持回路51は、出力層4からの8データ分の誤差情報を、領域511e~518e(
図3では、512e~517eの符号の図示を省略するが、領域512e~517eは、領域511eと領域518eとの間に設けられている)に記憶する。また、転送回路50は、第1アドレスをシフトさせることで、第1保持回路51の領域514aに記憶されたデータと、第1保持回路51の領域513bに記憶されたデータと、第1保持回路51の領域512cに記憶されたデータと、第1保持回路51の領域511dに記憶されたデータとを第1アドレスに基づいて読み込む。そして、転送回路50は、第1保持回路51の領域514aに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域541dに記憶させ、第1保持回路51の領域513bに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域542cに記憶させ、第1保持回路51の領域512cに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域543bに記憶させ、第1保持回路51の領域511dに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域544aに記憶させる。
【0046】
t5時点において、転送回路50は、第1アドレスをシフトさせることで、第1保持回路51の領域515aに記憶されたデータと、第1保持回路51の領域514bに記憶されたデータと、第1保持回路51の領域513cに記憶されたデータと、第1保持回路51の領域512dに記憶されたデータと、第1保持回路51の領域511eに記憶されたデータとを第1アドレスに基づいて読み込む。そして、転送回路50は、第1保持回路51の領域515aに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域541eに記憶させ、第1保持回路51の領域514bに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域542dに記憶させ、第1保持回路51の領域513cに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域543cに記憶させ、第1保持回路51の領域512dに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域544bに記憶させ、第1保持回路51の領域511eに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域545aに記憶させる。
【0047】
t6時点において、転送回路50は、第1アドレスをシフトさせることで、第1保持回路51の領域516aに記憶されたデータと、第1保持回路51の領域515bに記憶されたデータと、第1保持回路51の領域514cに記憶されたデータと、第1保持回路51の領域513dに記憶されたデータと、第1保持回路51の領域512eに記憶されたデータとを第1アドレスに基づいて読み込む。そして、転送回路50は、第1保持回路51の領域516aに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域542eに記憶させ、第1保持回路51の領域515bに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域543dに記憶させ、第1保持回路51の領域514cに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域544cに記憶させ、第1保持回路51の領域513dに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域545bに記憶させ、第1保持回路51の領域512eに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域546aに記憶させる。
【0048】
また、t6時点において、第2保持回路54の領域541a~545aは同一番地(同一位置)の記憶領域であり、この領域541a~545aのデータが揃ったとき、第2保持回路54のメモリの同一番地(同一位置)の領域に記憶されたデータが揃ったと判定し、領域541a~545aのデータが読み出され、前段の中間層6へ送られる。
【0049】
その後、t7時点以降も同様に、所定の制御周期ごとに、第1アドレスをシフトすることにより第1保持回路51のメモリそれぞれから誤差情報を読み込むと共に、第2アドレスをシフトすることにより、読み込んだ誤差情報を配置転換して第2保持回路54のメモリそれぞれへ書き込む。
【0050】
図4は、本発明の実施例1に係る相互接続制御回路1の第1保持回路51の動作を示したタイミングチャートである。
【0051】
図4に示すように、tp時点において、出力層4から第1保持回路51への誤差情報の転送の開始フラグである「w_start」がオンとなっている。
【0052】
その後、t0時点において、「we_WRAM」に示すように、第1保持回路51は、出力層4からの8データ分の誤差情報の記憶を開始する。
【0053】
t1時点において、「dpra\WRAM[7:0](リードadress)」に示すように、転送回路50は、第1保持回路51の領域511aに記憶されたデータを第1アドレスに基づいて読み込む。その後、順次、第1アドレスに基づいて読み込まれる。
【0054】
図5は、本発明の実施例1に係る相互接続制御回路1の第2保持回路54の動作を示したタイミングチャートである。
【0055】
図5に示すように、t1時点において、「we\RRAM[0]&we_RRAM_word_sol」に示すように、転送回路50は、読み込んだデータを第2アドレスに対応させて第2保持回路54への記憶を開始している。
【0056】
t5時点において、「r_start(L2LERN_start\3p)」に示すように、読み出しフラグが立ち、t6時点において、「we\RRAM[0]&we_RRAM_word_sol」~「we\RRAM[4]&we_RRAM_word_sol」のデータが揃うので、第2保持回路54のメモリの同一番地(同一位置)の領域に記憶されたデータが揃ったと判定され、「r_RRAM」に示すように、データの読み出しが開始され、前段の中間層6へ送られる。
【0057】
このように、本発明の実施例1に係る相互接続制御回路1は、前段層のニューロン数分のメモリを有し、後段層のニューロンから入力される誤差情報を前段層のニューロン数分のメモリの読み込みアドレスを示す第1アドレスに対応させて記憶する第1保持回路51と、後段層のニューロン数分のメモリを有し、前段層のニューロンへ出力する誤差情報を後段層のニューロン数分のメモリの書き込みアドレスを示す第2アドレスに対応させて記憶する第2保持回路54と、所定の制御周期ごとに、第1アドレスをシフトすることにより第1保持回路のメモリそれぞれから誤差情報を読み込むと共に、第2アドレスをシフトすることにより、読み込んだ誤差情報を配置転換して第2保持回路のメモリそれぞれへ書き込む転送回路50とを有する。
【0058】
これにより、従来技術のような1つのメモリ(RAM)で行う誤差情報などのデータを転送する装置と異なり、第1保持回路51のメモリから第2保持回路54のメモリへ同時に読み出しと同時書き込みをおこなうため、データの読み出しおよび書き込みに要する時間を削減することで、処理時間の劣化を抑制することができる。
また、前段層のニューロン数と後段層のニューロン数とで定まるデータ転送する行列のサイズを変更してもメモリの構成を変更するだけで、他の回路を変更する必要がないため、回路構成はそのままに多様な行列の転置(データ転送)に用いることができるので、ハードウェア構成の依存度が低く、汎用性が高いという効果がある。
さらに、前段層のニューロン数と後段層のニューロン数とで定まるデータ転送する行列のサイズを変更してもメモリのサイズが大きくなるだけで他の回路は変わらないため、回路規模の増大を抑えることができる。
以上により、本発明の実施例1に係る相互接続制御回路1によれば、小規模かつ汎用性のある装置構成であって処理の高速化を実現することができる。
【0059】
<実施例2>
本発明の実施例1に係る相互接続制御回路1では、転送回路50による書き込みにより、第2保持回路54のメモリの同一位置の領域に記憶されたデータが揃ったときに、前段層により書き込まれた同一位置の領域に記憶されたデータが読み出されたがこれに限らない。
【0060】
本発明の実施例2では、転送回路50による書き込みにより、第2保持回路54のメモリの同一位置の領域に記憶されたデータが揃い、かつ予め設定された閾値時間が経過したときに、前段層により書き込まれた同一位置の領域に記憶されたデータが読み出される相互接続制御回路1を例に挙げて説明する。
【0061】
図6は、本発明の実施例2に係る相互接続制御回路の構成図である。
図6に示すように、本発明の実施例2に係る相互接続制御回路1は、制御部3と、出力層4と、SWAP回路5Aと、中間層6と、入力層7とを備えており、制御部3と、出力層4と、中間層6と、入力層7とは、バスインターフェイス2を介してバスに接続されている。実施例2では、これらの構成のうち、SWAP回路5Aのみが異なるので、SWAP回路5Aについて説明する。
【0062】
SWAP回路5Aは、第1保持回路51と、第2保持回路54と、転送回路50Aと、閾値記憶部57とを備えている。このうち、第1保持回路51と、第2保持回路54とは実施例1の相互接続制御回路1のSWAP回路5が備える構成と同一であるので、説明を省略する。
【0063】
閾値記憶部57は、閾値を記憶している。この閾値は、前段層である中間層6へデータが送られるタイミングを調整するために設けられた値である。
【0064】
そして、転送回路50による書き込みにより、第2保持回路54の各メモリの同一位置の領域に記憶されたデータが揃い、かつ予め設定された閾値時間が経過したときに、前段層である中間層6により書き込まれた同一位置の領域に記憶されたデータが読み出される。すなわち、閾値を設定することにより、中間層6によりデータが読み出されるタイミングを遅くするなどタイミング調整を行うことができる。
【0065】
第1保持回路51及び第2保持回路54は、使用する半導体のプロセスにより高速に動くもの、面積は小さいが低速でしか動作しない等の特性が異なる場合がある。とにかくチップ面積を小さくしたい場合は、読み出されるタイミングを遅くすることにより、面積の小さい低速動作のメモリ(RAM)を使用することでコスト削減できるというメリットがある。
【0066】
図7(a)は、比較のため、
図5と同様の本発明の実施例1に係る相互接続制御回路1の第2保持回路54の動作を示したタイミングチャートであり、
図7(b)は、本発明の実施例2に係る相互接続制御回路1の第2保持回路54の動作を示したタイミングチャートである。
【0067】
図7(a)では、上述したように、t5時点において、「r_start(L2LERN_start\3p)」に示すように、読み出しフラグが立ち、t6時点において、「we\RRAM[0]&we_RRAM_word_sol」~「we\RRAM[4]&we_RRAM_word_sol」のデータが揃うので、第2保持回路54のメモリの同一番地(同一位置)の領域に記憶されたデータが揃ったと判定され、「r_RRAM」に示すように、データの読み出しが開始され、前段の中間層6へ送られる。
【0068】
一方、
図7(b)では、t6時点において、「we\RRAM[0]&we_RRAM_word_sol」~「we\RRAM[4]&we_RRAM_word_sol」のデータが揃うが、設定された閾値時間が経過していない。
【0069】
その後、t15時点において、「r_start(L2LERN_start\3p)」に示すように、読み出しフラグが立ち、t16時点において、設定された閾値時間が経過したと判定され、「r_RRAM」に示すように、データの読み出しが開始され、前段の中間層6へ送られる。
【0070】
このように、実施例2では、転送回路50による書き込みにより、第2保持回路54の各メモリの同一位置の領域に記憶されたデータが揃い、かつ予め設定された閾値時間が経過したときに、前段層である中間層6により書き込まれた同一位置の領域に記憶されたデータが読み出されるので、中間層6によりデータが読み出されるタイミングを遅くするなどタイミング調整を行うことができる。
【0071】
<実施例3>
本発明の実施例1に係る相互接続制御回路1では、入力層7と、出力層4と、中間層6とを有し、隣接する層のニューロンとそれぞれ接続された例を挙げて説明したが、これに限らない。
【0072】
本発明の実施例3では、入力層7と、出力層4と、中間層6とを有し、隣接する層のニューロンが一部接続されていない相互接続制御回路1を例に挙げて説明する。
【0073】
図8は、本発明の実施例3に係る相互接続制御回路の構成図である。
図8に示すように、本発明の実施例3に係る相互接続制御回路1は、制御部3と、出力層4と、SWAP回路5Bと、中間層6と、入力層7とを備えている。図示しないが、実施例1と同様に、制御部3と、出力層4と、中間層6と、入力層7とは、バスインターフェイス2を介してバスに接続されている。実施例3では、これらの構成のうち、SWAP回路5Bのみが異なるので、SWAP回路5Bについて説明する。
【0074】
SWAP回路5Bは、第1保持回路51と、第2保持回路54と、転送回路50Bと、接続情報記憶部58a,58bとを備えている。このうち、第1保持回路51と、第2保持回路54とは実施例1の相互接続制御回路1のSWAP回路5が備える構成と同一であるので、説明を省略する。
【0075】
接続情報記憶部58a,58bは、前段層である中間層6と後段層である出力層4との接続状態を接続情報として記憶する。接続情報記憶部58aと接続情報記憶部58bとに記憶された接続情報は同一の情報である。ここでは、接続情報記憶部58aと接続情報記憶部58bとは異なる記憶部として存在しているが、同じ記憶部としてもよい。
【0076】
出力層4には、ニューロン41,42の2つのニューロンを有しており、中間層6には、ニューロン61~65の5つのニューロンを有している。
【0077】
ニューロン41は、中間層6の5つ全てのニューロン61~65と接続されている。その一方、ニューロン42は、中間層6の5つニューロン61~65のうち、ニューロン62およびニューロン64とのみ接続されている。このように、接続情報は、前段層である中間層6と後段層である出力層4とのニューロンごとの接続状態を示している。
【0078】
転送回路50Bは、所定の制御周期ごとに、接続情報記憶部58aに記憶された接続情報に基づいて第1アドレスをシフトすることにより第1保持回路51のメモリそれぞれから誤差情報を読み込む。具体的には、転送回路50Bは、ニューロンが接続していない、すなわちシナプスがない場合には、アドレスをスキップするように第1アドレスをシフトすることにより第1保持回路51のメモリそれぞれから誤差情報を読み込む。
【0079】
そして、転送回路50Bは、接続情報記憶部58bに記憶された接続情報に基づいて第2アドレスをシフトすることにより、読み込んだ誤差情報を配置転換して第2保持回路54のメモリそれぞれへ書き込む。具体的には、転送回路50Bは、ニューロンが接続していない、すなわちシナプスがない場合には、アドレスをスキップするように第2アドレスをシフトすることにより読み込んだ誤差情報を配置転換して第2保持回路54のメモリそれぞれへ書き込む。
【0080】
図9(a)は、本発明の実施例1に係る相互接続制御回路1の誤差情報の配置転換におけるデータの流れを模式的に説明した説明図であり、
図9(b)は、本発明の実施例3に係る相互接続制御回路1の誤差情報の配置転換におけるデータの流れを模式的に説明した説明図である。
図9(a),(b)における左から順に、制御周期であるt20時点~t27時点におけるデータの書き込みおよび読み出しを説明している。
図9(a),(b)それぞれにおいて、上段に第1保持回路51の状態を示しており、下段に第2保持回路54の状態を示しており、上下段で同一の時点を示している。ここでは、前段層を中間層6とし、後段層を出力層4として、出力層4からの誤差情報を中間層6へ転送する例を例に挙げて説明する。ここで、中間層6が5つのニューロンを有しており、出力層4が2つのニューロンを有しているとする。
【0081】
図9(a)に示すように、t20時点において、第1保持回路51は、出力層4のニューロン41からの5データ分の誤差情報を、領域511a~515aに記憶する。
【0082】
t21時点において、第1保持回路51は、出力層4のニューロン42からの2データ分の誤差情報を、領域512b,514bに記憶する。また、転送回路50は、第1保持回路51の領域511aに記憶されたデータを第1アドレスに基づいて読み込む。そして、転送回路50は、読み込んだデータを第2アドレスに対応させて第2保持回路54の領域541aに記憶させる。
【0083】
t22時点において、転送回路50は、第1アドレスをシフトさせることで、第1保持回路51の領域512aに記憶されたデータと領域511bに記憶されたデータを第1アドレスに基づいて読み込む。そして、転送回路50は、第2アドレスをシフトさせることで第1保持回路51の領域512aに記憶されたデータを第2保持回路54の領域541bに記憶させると共に、第1保持回路51の領域511bに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域542aに記憶させる。
【0084】
t23時点において、転送回路50は、第1アドレスをシフトさせることで、第1保持回路51の領域513aに記憶されたデータと、第1保持回路51の領域512bに記憶されたデータとを第1アドレスに基づいて読み込む。そして、転送回路50は、第1保持回路51の領域513aに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域541cに記憶させ、第1保持回路51の領域512bに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域542bに記憶させる。
【0085】
また、t23時点において、第2保持回路54の同一番地(同一位置)の記憶領域である領域541a~542aのデータが揃ったとき、第2保持回路54のメモリの同一番地(同一位置)の領域に記憶されたデータが揃ったと判定し、領域541a~542aのデータが読み出され、前段の中間層6へ送られる。
【0086】
t24時点において、転送回路50は、第1アドレスをシフトさせることで、第1保持回路51の領域514aに記憶されたデータと、第1保持回路51の領域513bに記憶されたデータとを第1アドレスに基づいて読み込む。そして、転送回路50は、第1保持回路51の領域514aに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域541dに記憶させ、第1保持回路51の領域513bに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域542cに記憶させる。
【0087】
また、t24時点において、第2保持回路54の同一番地(同一位置)の記憶領域である領域541b~542bのデータが揃ったとき、第2保持回路54のメモリの同一番地(同一位置)の領域に記憶されたデータが揃ったと判定し、領域541b~542bのデータが読み出され、前段の中間層6へ送られる。
【0088】
t25時点において、転送回路50は、第1アドレスをシフトさせることで、第1保持回路51の領域515aに記憶されたデータと、第1保持回路51の領域514bに記憶されたデータとを第1アドレスに基づいて読み込む。そして、転送回路50は、第1保持回路51の領域515aに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域541eに記憶させ、第1保持回路51の領域514bに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域542dに記憶させる。
【0089】
また、t25時点において、第2保持回路54の同一番地(同一位置)の記憶領域である領域541c~542cのデータが揃ったとき、第2保持回路54のメモリの同一番地(同一位置)の領域に記憶されたデータが揃ったと判定し、領域541c~542cのデータが読み出され、前段の中間層6へ送られる。
【0090】
t26時点において、転送回路50は、第1アドレスをシフトさせることで、第1保持回路51の領域515bに記憶されたデータを第1アドレスに基づいて読み込む。そして、転送回路50は、第1保持回路51の領域515bに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域542eに記憶させる。
【0091】
また、t26時点において、第2保持回路54の同一番地(同一位置)の記憶領域である領域541d~542dのデータが揃ったとき、第2保持回路54のメモリの同一番地(同一位置)の領域に記憶されたデータが揃ったと判定し、領域541d~542dのデータが読み出され、前段の中間層6へ送られる。
【0092】
t27時点において、第2保持回路54の同一番地(同一位置)の記憶領域である領域541e~542eのデータが揃ったとき、第2保持回路54のメモリの同一番地(同一位置)の領域に記憶されたデータが揃ったと判定し、領域541e~542eのデータが読み出され、前段の中間層6へ送られる。
【0093】
図9(b)に示すように、t20時点において、第1保持回路51は、出力層4のニューロン41からの5データ分の誤差情報を、領域511a~515aに記憶する。
【0094】
t21時点において、第1保持回路51は、出力層4のニューロン42からの2データ分の誤差情報を、領域512b,514bに記憶する。また、転送回路50は、第1保持回路51の領域511aに記憶されたデータを第1アドレスに基づいて読み込む。そして、転送回路50は、読み込んだデータを第2アドレスに対応させて第2保持回路54の領域541aに記憶させる。
【0095】
t22時点において、転送回路50は、第1アドレスをシフトさせることで、第1保持回路51の領域512aに記憶されたデータを第1アドレスに基づいて読み込む。領域511bにはデータが記憶されていないので、接続情報記憶部58aに記憶された接続情報に基づいて、さらに、第1アドレスをシフトさせることで、領域511bを読み込むことなく、領域512bに記憶されたデータを第1アドレスに基づいて読み込む。そして、転送回路50は、第2アドレスをシフトさせることで第1保持回路51の領域512aに記憶されたデータを第2保持回路54の領域541bに記憶させると共に、第1保持回路51の領域512bに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域542bに記憶させる。
【0096】
また、t22時点において、第2保持回路54の同一番地(同一位置)の記憶領域である領域541a~542aのデータが揃ったとき、第2保持回路54のメモリの同一番地(同一位置)の領域に記憶されたデータが揃ったと判定し、領域541a~542aのデータが読み出され、前段の中間層6へ送られる。
【0097】
t23時点において、転送回路50は、第1アドレスをシフトさせることで、第1保持回路51の領域513aに記憶されたデータを第1アドレスに基づいて読み込む。領域513bにはデータが記憶されていないので、接続情報記憶部58aに記憶された接続情報に基づいて、さらに、第1アドレスをシフトさせることで、領域513bを読み込むことなく、領域514bに記憶されたデータを第1アドレスに基づいて読み込む。そして、転送回路50は、第2アドレスをシフトさせることで第1保持回路51の領域513aに記憶されたデータを第2保持回路54の領域541cに記憶させると共に、第1保持回路51の領域514bに記憶されたデータを、第2アドレスをシフトさせることで第2保持回路54の領域542dに記憶させる。
【0098】
また、t23時点において、第2保持回路54の同一番地(同一位置)の記憶領域である領域541b~542bのデータが揃ったとき、第2保持回路54のメモリの同一番地(同一位置)の領域に記憶されたデータが揃ったと判定し、領域541b~542bのデータが読み出され、前段の中間層6へ送られる。
【0099】
t24時点において、転送回路50は、第1アドレスをシフトさせることで、第1保持回路51の領域514aに記憶されたデータを第1アドレスに基づいて読み込む。領域515bにはデータが記憶されておらず、領域511b~領域515bのデータは読込済みとする。そして、転送回路50は、第2アドレスをシフトさせることで第1保持回路51の領域514aに記憶されたデータを第2保持回路54の領域541dに記憶させる。
【0100】
また、t24時点において、第2保持回路54の同一番地(同一位置)の記憶領域である領域541c~542cのデータが揃ったとき、第2保持回路54のメモリの同一番地(同一位置)の領域に記憶されたデータが揃ったと判定し、領域541c~542cのデータが読み出され、前段の中間層6へ送られる。
【0101】
t25時点において、転送回路50は、第1アドレスをシフトさせることで、第1保持回路51の領域515aに記憶されたデータを第1アドレスに基づいて読み込む。そして、転送回路50は、第2アドレスをシフトさせることで第1保持回路51の領域515aに記憶されたデータを第2保持回路54の領域541eに記憶させる。
【0102】
また、t25時点において、第2保持回路54の同一番地(同一位置)の記憶領域である領域541d~542dのデータが揃ったとき、第2保持回路54のメモリの同一番地(同一位置)の領域に記憶されたデータが揃ったと判定し、領域541d~542dのデータが読み出され、前段の中間層6へ送られる。
【0103】
t26時点において、第2保持回路54の同一番地(同一位置)の記憶領域である領域541e~542eのデータが揃ったとき、第2保持回路54のメモリの同一番地(同一位置)の領域に記憶されたデータが揃ったと判定し、領域541e~542eのデータが読み出され、前段の中間層6へ送られる。
【0104】
以上のように、本発明の実施例1では、接続状態にかかわらず全ての領域についてデータ読み込みを実行しているので、
図9(a)に示すように、全てのデータを中間層6へ送るために、t20時点からt27時点の7サイクルの時間を要することとなる。
【0105】
一方、本発明の実施例3では、転送回路50Bが、所定の制御周期ごとに、接続情報記憶部58aに記憶された接続情報に基づいて第1アドレスをシフトすることにより第1保持回路51のメモリそれぞれから誤差情報を読み込み、接続情報記憶部58bに記憶された接続情報に基づいて第2アドレスをシフトすることにより、読み込んだ誤差情報を配置転換して第2保持回路54のメモリそれぞれへ書き込む。
【0106】
そのため、
図9(b)に示すように、接続していないニューロンのデータについては、アドレスをスキップするので、全てのデータを中間層6へ送るために、t20時点からt26時点の6サイクルの時間で済み、データ転送の時間を短縮させることができる。
【符号の説明】
【0107】
1 相互接続制御回路
2 バスインターフェイス
3 制御部
4 出力層
5,5A,5B SWAP回路
6 中間層
7 入力層
50,50A,50B 転送回路
51 第1保持回路
52 第1シフトレジスタ
53 第1カウンタ
54 第2保持回路
55 第2シフトレジスタ
56 第2カウンタ
57 閾値記憶部
58a,58b 接続情報記憶部
【要約】
【課題】小規模かつ汎用性のある装置構成であって処理の高速化を可能にする。
【解決手段】後段層のニューロンから前段層のニューロンへ誤差情報を転送する相互接続制御回路1であって、前段層のニューロン数分のメモリを有し、後段層のニューロンから入力される誤差情報を前段層のニューロン数分のメモリの読み込みアドレスを示す第1アドレスに対応させて記憶する第1保持回路51と、後段層のニューロン数分のメモリを有し、前段層のニューロンへ出力する誤差情報を後段層のニューロン数分のメモリの書き込みアドレスを示す第2アドレスに対応させて記憶する第2保持回路54と、所定の制御周期ごとに、第1アドレスをシフトすることにより第1保持回路のメモリそれぞれから誤差情報を読み込むと共に、第2アドレスをシフトすることにより、読み込んだ誤差情報を配置転換して第2保持回路のメモリそれぞれへ書き込む転送回路50とを有する。
【選択図】
図1