Comments
Description
Transcript
セルフタイム回路を用いたスパイク駆動 神経回路網エミュレータの構成法
平成 26 年度 学士学位論文 セルフ タ イ ム 回路を 用いたス パイ ク 駆動 神経回路網エミ ュ レ ータ の構成法 A Study on Self-Timed Emulator for Spiking Neural Network 1150330 塘居 治世 指導教員 岩田 誠 2015 年 2 月 27 日 高知工科大学 情報学群 要 旨 セ ルフ タ イ ム 回路を 用いた ス パイ ク 駆動 神経回路網エミ ュ レ ータ の構成法 塘居 治世 近年, ディ ー プ ラ ー ニン グ を はじ め と する 汎用人工知能に 関する 研究が盛ん に な っ て お り , 脳内の神経回路網を 計算機で模倣し て 活用し よ う と いう 多く の試みがな さ れて いる . 中 でも , ス パイ ク 信号を 受け た 神経細胞の膜電位変化を 生物学的知見に 忠実に モデル化し た , ス パイ ク 駆動神経回路網 SNN(Spiking Neural Network) のシミ ュ レ ーショ ン が注目さ れて いる . し かし な がら , こ れら の神経回路網の模擬に は, 莫大な 演算が必要であ り , 通常の汎 用的な 計算機では, 実用的な 時間で結果を 得る 事ができ な い. そ こ で, 本研究では, 比較的 安価に 入手可能と な り つつある FPGA を 活用し て , SNN を 直接的に エミ ュ レ ート する 方法 を 検討し た . ま た , 一般的に は SNN は非同期に 動作する も のであ り , 本研究では, 非同期 回路の一種である セ ルフ タ イ ム 回路 STC(Self-Timed Circuit) を 活用し て SNN の動作を 模 擬する エミ ュ レ ータ の構成法を 提案し た. 提案し た SNN エミ ュ レ ータ の構成法に 関し て , FPGA チッ プ (Altera 社 Stratix IV) を 対象に 論理合成し , 回路規模な ど を 求めた . ま た , 動作周波数を 20MHz と 仮定し て 各パラ メ ータ を 変化さ せな がら 回路シミ ュ レ ーショ ン し た結果, 実時間の 20000 倍の速度でエミ ュ レ ーショ ン 可能である 事が分かっ た. こ の時, エミ ュ レ ーショ ン の加速変数 a は a = dt × fck の関係式で与え ら れ, 回路のシミ ュ レ ーショ ン に よ っ て 関係式が成り 立つ事も 確認でき た. キ ーワ ード ス パイ ク 駆動神経回路網 (SNN), セ ルフ タ イ ム 回路 (STC) –i– Abstract A Study on Self-Timed Emulator for Spiking Neural Network Haruyoshi TOMOI In recent years, novel neural networks such as deep learning are actively investigated and their implementation techniques are also studied. Particularly, spiking neural network (SNN) is noticed as a biological model to express neuronal membrane potential due to synaptic spike signals. However, computational complexity required for large SNN simulation is too enormous to be calculated on commodity computers within practical time. Thus, I examined an SNN emulation method on field programmable gate array (FPGA) in this study and I designed its FPGA circuit emulating asynchronous spike propagation in SNN by using the clockless self-timed circuit (STC). As a result of designing the SNN emulator for FPGA, the emulator has the possibilities that I am quicker in 10,000 times than time on SNN model. Since there is a tradeoff between its acceleration factor a and emulation time resolution dt, I formulated and identified it as a = dt × fck where fck denotes actual clock frequency of the synchronous part of the proposed emulator. key words Spiking Neural Network(SNN), Self-Timed Circuit(STC) – ii – 目次 第1章 序論 1 第2章 神経回路網モデル 4 2.1 緒言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2 Artificial Neural Network(ANN) . . . . . . . . . . . . . . . . . . . . . . 4 2.3 Spiking Neural Network(SNN) . . . . . . . . . . . . . . . . . . . . . . . 5 IAF ニュ ーロ ン モデル . . . . . . . . . . . . . . . . . . . . . . . . 6 結言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 セルフ タ イ ム回路を 用いたハイ ブ リ ッ ド 型 SNN エミ ュ レ ータ 9 3.1 緒言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2 SNN エミ ュ レ ータ の構成方針 . . . . . . . . . . . . . . . . . . . . . . . . 9 3.3 Synapse モジュ ール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.3.1 STC(Self-Timed Circuit) と そ の特徴 . . . . . . . . . . . . . . . . 11 3.3.2 CM 素子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3.3 CB 素子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3.4 Asynchronous to Synchronous(AtoS) 回路 . . . . . . . . . . . . . 13 3.3.5 Synchronous to Asynchronous(StoA) 回路 . . . . . . . . . . . . . 14 3.4 Simulator モジュ ール . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.5 提案エミ ュ レ ータ に おけ る 時間と 精度 . . . . . . . . . . . . . . . . . . . . 15 3.6 結言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 FPGA 回路設計と 評価 17 4.1 緒言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.2 FPGA 実装し たエミ ュ レ ータ の仕様 (設計 ・ 検証手順) . . . . . . . . . . 17 2.3.1 2.4 第3章 第4章 – iii – 目次 4.2.1 Synapse モジュ ールの設計 . . . . . . . . . . . . . . . . . . . . . . 18 4.2.2 Simulator モジュ ールの設計 . . . . . . . . . . . . . . . . . . . . . 21 4.2.3 検証手順 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.3 設計 ・ 検証結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.4 結言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 結論 28 第5章 謝辞 30 参考文献 31 – iv – 図目次 2.1 本研究で対象と する SNN . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 IAF モデルに おけ る synaptic current . . . . . . . . . . . . . . . . . . . . 7 2.3 連続し て 到着し たス パイ ク 信号に よ る synaptic current の足し あわせ . . . 8 3.1 SNN エミ ュ レ ータ の構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2 Synapse モジュ ールの構成 . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3 STC の概略図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.1 一般的な C 素子の構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 –v– 表目次 4.1 論理合成の結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . – vi – 24 第1章 序論 近年, ディ ープラ ーニン グの登場な ど に よ り , ニュ ーラ ルネ ッ ト ワ ーク に 関する 研究が再 び盛ん に な っ て いる . ディ ー プ ラ ー ニン グ は, ディ ー プ ニュ ー ラ ルネ ッ ト ワ ー ク を 使用し た 機械学習の事で, 多層のニュ ーラ ルネ ッ ト ワ ーク であ る . 従来のパーセ プト ロ ン 等では, 多層でニュ ーラ ルネ ッ ト を 構成し た 際に , 期待さ れる よ う な 出力を 得る 事が難し かっ た が, ディ ープラ ーニン グでは, 深い階層を 持つ場合でも , 勾配が拡散せずに 学習する 事が可能で あ る . 近年の代表的な 例と し て , Google の先行研究では, YouTube の動画から ラ ン ダ ム に 取り 出し た 画像 1000 万枚を 用いて ディ ープラ ーニン グを 行っ て いる . こ の時使用さ れた コ ン ピ ュ ータ は 1000 台 (16000 コ ア ) で, 3 日間のディ ープラ ーニン グの結果, こ のニュ ー ラ ルネ ッ ト ワ ーク は, 猫の顔を 認識する 事が可能に な っ た [1]. こ の他のニュ ーラ ルネ ッ ト ワ ーク に 関する 研究と し て , ス パイ ク 駆動神経回路網 SNN(Spiking Neural Network) が注 目さ れいる . SNN は, 従来のニュ ーラ ルネ ッ ト ワ ーク と 比べ, よ り 忠実に 脳の動作を 模し た ニュ ーラ ルネ ッ ト ワ ーク であ り , ス パイ ク 信号に よ る 膜電位の時間的な 変化ま でも モデル と し て 取り 入れて お り , ス パイ ク 信号の伝達も 非同期に 行われる モデルであ る . SNN に 関 する 先行研究と し て IBM では, SNN を 実装し た ニュ ーロ モーフ ィッ ク チッ プ True North を 2014 年に 開発し た . True North は 54 億のト ラ ン ジス タ を 搭載し た チッ プであ り , 100 万のニュ ーロ ン と 5600 万のシナプス を 実現し て いる . こ のニュ ーロ ン の数は, およ そ 昆虫 の脳に 等し い. IBM はこ のチッ プ に 対し て カ ラ ー映像 (400 × 240pixel, 30fps) を 入力し , 映像内で動く 人間を そ れぞれリ ア ルタ イ ム に 追跡する 事を 実現し た [2]. True North 自体 に 学習機能はな く , 学習済みのパラ メ ータ を 与え る 事で必要な 出力を 得て いる . 学習済み のパラ メ ータ の算出に は, ス ーパーコ ン ピ ュ ータ Sequoia を 用いて いる . IBM の研究の目 –1– 的は, SNN を 活用し た フ ォ ン ・ ノ イ マ ン 型以外の新た な ア ーキ テ ク チャ を 開発し , 高性能 な コ ン ピ ュ ータ を 開発する 事であ る が, SNN を よ り 忠実に コ ン ピ ュ ータ 上に 再現する 事に 重き を 置いた 研究も 存在する . [3] の先行研究では, ス ーパーコ ン ピ ュ ータ 京を 用いて ソ フ ト ウ ェ ア で SNN を 実装し , シ ミ ュ レ ーショ ン を 行っ て いる . シ ミ ュ レ ーショ ン に 用いら れ た ソ フ ト ウ ェ ア は NEST[4] であ り , 並列演算な ど に も 対応し た SNN シ ミ ュ レ ータ であ る . こ れら の先行研究から わかる よ う に , ニュ ー ロ ン のシ ミ ュ レ ー ショ ン は莫大な 演算量を 必 要と し , 一般的な 汎用コ ン ピ ュ ータ では, 実用的な 時間でシミ ュ レ ーショ ン 結果を 得る 事が 難し い. ディ ープラ ーニン グに 関し て は, GPGPU(General-purpose computing on GPU) 等のハード ウ ェ ア 活用に よ っ て , 演算速度の向上は見込ま れる も のの, 莫大な 学習用データ を 必要と する ディ ープラ ーニン グの演算時間は決し て 短いも のではな い. SNN に おいて も , ニュ ーロ ン の発火タ イ ミ ン グや膜電位の変化を 扱う 必要があ り , 汎用的な コ ン ピ ュ ータ 上で SNN を 実装し て シミ ュ レ ーショ ン を 行う 事は非常に 難し い. ディ ープラ ーニン グが多層化に よ っ て , よ り 高度な 概念の表現を 実現し て いる 事から , 人 間と 同規模のニュ ーラ ルネ ッ ト ワ ーク を 構築する 事で, 人間的な 処理を 計算機に 実装でき る 可能性が期待さ れて いる . ニュ ーラ ルネ ッ ト ワ ーク の多層化に 伴う 演算量の増加に よ っ て 演 算速度や消費電力の問題が顕著に 表れる た め, 現行のフ ォ ン ・ ノ イ マ ン 型ア ーキ テ ク チャ で は, いずれ限界を 迎え る 可能性があ る . よ っ て , 本研究で は, 先を 見据え た ニュ ー ラ ル ネ ッ ト ワ ーク のモ デルと し て SNN を 対象と し た . SNN は, 非同期に ス パイ ク 信号のやり 取り を 行う 事から , 大規模な ネ ッ ト ワ ーク を 構築し た 際に フ ォ ン ・ ノ イ マ ン 型ア ーキ テ ク チャ で指摘し た 処理速度や消費電力の問題の改善が期待でき る . ま た , 脳活動を 忠実に 再 現でき る SNN を 実際の人間の脳規模で実現し た 場合, 現在主流であ る ディ ープラ ーニン グ を 超え る 高性能な AI の誕生が期待さ れて いる 事も 今回 SNN を 対象と し た 大き な 理由であ る . 本研究では, 計算機上で SNN を シミ ュ レ ーショ ン する のではな く , 比較的安価に 手に 入る FPGA チッ プを 活用し て SNN を 直接的に エミ ュ レ ート する 方法を 検討し た . FPGA チッ プを 活用する 事で, 専用チッ プの開発コ ス ト を 抑え る 事ができ る . 加え て , ニュ ーロ ン モ デルやシ ナプ ス モ デルの拡張を 比較的容易に 実現でき る . ま た , 本研究では, 非同期に –2– ス パイ ク 信号のやり 取り を 行う SNN を 再現する た めに , 先行研究であ る STC(Self-Timed Circuit)[?] を 活用し て 非同期に ス パイ ク 信号の伝達が可能な 同期 ・ 非同期ハイ ブリ ッ ド 型 SNN エミ ュ レ ータ の検討を 行っ た. 以後, 本論文では, 第 2 章でニュ ーラ ルネ ッ ト ワ ーク の研究に おけ る SNN の位置づけ に ついて 述べ, 今回対象と する SNN に ついて の説明を 行う . 第 3 章では, ハイ ブ リ ッ ド 型 SNN エミ ュ レ ータ のア ーキ テ ク チャ に つ いて 説明を 行い, 本研究で提案し て いる エミ ュ レ ータ に 用ら れて いる モジュ ールと し て , STC を 含む Synapse モジュ ールと Simulator モジュ ールの動作に ついて 述べる . ま た, エミ ュ レ ータ に 用いる パ ラ メ ータ から エミ ュ レ ータ に おけ る 時間と 精度の関係を 導く . 第 4 章では, 本研究で提案し た 構成を 実際の FPGA チッ プ (Altera 社 Stratix IV) を 対 象に 回路設計を 行い検証し た結果を ま と め, Synapse モジュ ールの回路シミ ュ レ ーショ ン に よ っ て 第 3 章で導いた関係式が成立する 事を 示す. 第 5 章では, 本研究で提案し た 構成を ま と め, 提案構成の今後の課題と 展望に つ いて 述 べ, 本論文を 総括する . –3– 第2章 神経回路網モデル 2.1 緒言 ニュ ーラ ルネ ッ ト ワ ーク に 関する 研究は, 古く から 行われて おり , いく つも の手法が提案 さ れて き た が, 従来の ANN(Artificial Neural Network) では, 望ま し い結果を 得る 事が難 し かっ た. し かし , 近年のハード ウ ェア 技術の進歩な ど に よ り DNN(Deep Neural Network) や SNN(Spiking Neural Network) に よ る 研究が現実的に な り , ニュ ーラ ルネ ッ ト ワ ーク が 再び注目さ れはじ めた . 本章では, SNN と ANN に ついて の違いに ついて 触れ, 本研究で 対象と し て いる SNN に ついて の説明を 行う . 2.2 Artificial Neural Network(ANN) ANN の歴史は古く , 代表的な も のに はパーセ プ ト ロ ン な ど があ る . パーセ プ ト ロ ン は, Frank Rosenblatt が形式ニュ ーロ ン を 参考に 開発し た ANN[6] であ り , 視覚と 脳を モデル 化し て いる . シン プルな ネ ッ ト ワ ーク な がら 学習能力があ り , パタ ーン 認識を 行う 事ができ る . 入力層と 出力層の2 層のみから な る 単純パーセ プト ロ ン では, 線形分離不可能な 問題を 解け な い事が指摘さ れ, 多層パーセ プト ロ ン へと 発展し た . 多層パーセ プト ロ ン では, バッ ク プロ パゲーショ ン を 用いて 非線形分離な 問題に 対応し て いる . そ の後, ニュ ーラ ルネ ッ ト ワ ーク の次元圧縮のた めのオート エン コ ーダな ど が提案さ れディ ープラ ーニン グの研究が盛 んに 行われる き っ かけ と な っ た. –4– 2.3 Spiking Neural Network(SNN) 2.3 Spiking Neural Network(SNN) ニュ ーラ ルネ ッ ト ワ ーク の研究に は, 2 つの流れがあ り , 一方は, ディ ープラ ーニン グに 代表さ れる よ う な , ニュ ーラ ルネ ッ ト ワ ーク の活用に よ っ て 社会的に 有意義な 技術の開発を 目指す研究であ り , も う 一方が, 動物の脳を 忠実に コ ン ピ ュ ータ 上で再現し よ う と いう 研究 である . 動物の脳機能を 忠実に 再現する ためのニュ ーラ ルネ ッ ト ワ ーク と し て SNN があり , ニュ ーロ ン 間のス パイ ク 信号の重み以外に , ス パイ ク 信号に よ る 膜電位の時間的な 変化な ど も モデルと し て 取り 入れて いる . 図 2.1 に 本研究で対象と する SNN を 示す. 従来の ANN がフ ォ ン ・ ノ イ マ ン 型のア ーキ テ ク チャ に 依存し て いる のに 対し て , SNN は, 同期信号を 必要と し な い. ニュ ーロ ン の発火に よ る ス パイ ク 信号は非同期に やり 取り さ れ, そ の影響が ニュ ーロ ン に よ っ て 演算さ れる . SNN では, ス パイ ク 信号に よ る 膜電位変化の計算モデル がいく つか存在する が, 本研究では, NEST でベン チマ ーク と し て も 扱われて いる 最も シン プルな ニュ ーロ ン モデルの一つであ る IAF(Integrate and fire) ニュ ーロ ン モデルを 用いて SNN を 構成し て いる . 図 2.1 本研究で対象と する SNN –5– 2.3 Spiking Neural Network(SNN) 2.3.1 IAF ニュ ーロ ン モ デル IAF ニュ ーロ ン モ デルは, 数あ る ニュ ーロ ン モ デルの中でも 特に シ ン プ ルな ニュ ーロ ン モデルであ り , ニュ ーロ シ ミ ュ レ ーショ ン ソ フ ト NEST でも サポート さ れて いる [4]. IAF ニュ ーロ ン モデルに おけ る 膜電位の計算は, 計算式 dV m/dt に よ っ て 表さ れる . dV m/dt を 以下に 記す [7]. dV m / dt = −(V m − E L) / tau m + I syn(t) /C m + I e / C m (2.1) V m は, エミ ュ レ ーショ ン 時間 t − 1 に お け る 膜電位を 表し て お り , E L は, 安静時膜電 位を 表す. tau m は, 膜時定数であり , C m は細胞膜の電気容量, I e は外部から の恒常的 な 入力電流であ る . I syn(t) は外部から のス パイ ク 信号に よ る シ ナプ ス 電流を alpha 関数 で求めた後, そ の電流値の和を 求めて いる . I syn 関数と alpha 関数を 以下に 示す. I syn(t) = wij alpha(t − t j) = e × t / tau s × e n X k=1 (−t / tau s) alpha(t − t j) (2.2) × Heaviside(t) (2.3) こ の式に おいて , e は指数関数を 表し て おり , tau s は alpha 関数に よ る 電流値が最大に な る ま での時間を 表し , Heaviside(t) はヘヴィ サイ ド の階段関数を 表し て いる . IAF ニュ ー ロ ン モデルに おけ る ス パイ ク 信号の影響を グラ フ に し たも のを 図 2.2 に 示す. 時間 t に ス パイ ク 信号が到着し た と する と , そ のス パイ ク 信号は, alpha 関数に よ っ て 下 のグラ フ よ う な 結果と し て ニュ ーロ ン 内で演算さ れる 事に な る . 次に , ス パイ ク 信号が短い 間隔で連続し て 到着し た場合を 考え る . 図 2.3 のよ う に ス パイ ク 信号が到着し た 場合は, 連な る ス パイ ク 信号の足し あ わせに よ っ て 膜電位が表現さ れる . こ の時電位が閾値 Vth を 超え て いた 場合に は, ニュ ーロ ン が発火 し , ス パイ ク 信号が出力さ れる . –6– 2.4 結言 図 2.2 2.4 IAF モデルに おけ る synaptic current 結言 本章で は, 従来の ANN と SNN の研究目的の違いに つ いて 触れ, 研究対象と し て 扱う SNN に ついて の説明を 行っ た . ま た , SNN のニュ ーロ ン に 用いら れて いる 膜電位変化の計 算モデルであ る IAF ニュ ーロ ン モデルに ついて 述べた . 次章では, IAF ニュ ーロ ン モデル と STC(Self-Timed Circuit) を 用いた 同期 ・ 非同期ハイ ブ リ ッ ド 型 SNN エミ ュ レ ータ の 構成法に ついて 述べる . –7– 2.4 結言 図 2.3 連続し て 到着し たス パイ ク 信号に よ る synaptic current の足し あわせ –8– 第3章 セルフ タ イ ム回路を 用いたハイ ブ リ ッ ド 型 SNN エミ ュ レ ータ 3.1 緒言 本章では, 任意のタ イ ミ ン グで入力さ れる ス パイ ク 信号に よ る 膜電位変化を 演算する た めの同期 ・ 非同期ハイ ブ リ ッ ド 型 SNN エミ ュ レ ータ を 構成する 方法に つ いて 述べる . ハ イ ブ リ ッ ド 型 SNN エミ ュ レ ー タ は, 同期回路と し て 動作する Simulator モ ジュ ー ルと 非 同期回路の一種であ る STC(Self-Timed Circuit) と AtoS 回路 ・ StoA 回路を 組み合わせ た Synapse モジュ ールに よ っ て 構成さ れる . こ れを 1 つのニュ ーロ ン と 見な し , 複数のエ ミ ュ ーレ ータ を 相互に 接続する 事で SNN を 構築する . はじ めに , SNN エミ ュ レ ータ の構成方針に ついて 触れ, 次に Synapse モジュ ールを 構成 する 各回路の特徴を 挙げた後, 最後に , Simulator モジュ ールに ついて の説明を 行う . 3.2 SNN エミ ュ レ ータ の構成方針 SNN エミ ュ レ ータ の構成を 図 3.1 に 示す. 本研究で提案する SNN エミ ュ レ ータ は, Simulator モ ジュ ールと Syapse モ ジュ ールに よ っ て 構成さ れる . Simulator モジュ ールは連立微分方程式を 差分方程式に よ っ て 計算する 回路を 含み, 任意のタ イ ミ ン グで入力さ れる ス パイ ク 信号に よ る 膜電位変化の演算を 行う . 設定し た シミ ュ レ ーショ ン 時間中に 発火が起き る と , Simulator モジュ ールから ニュ ーロ ン –9– 3.3 Synapse モジュ ール 図 3.1 SNN エミ ュ レ ータ の構成 のス パイ ク 信号が出力さ れる と 共に , 後続のニュ ーロ ン へス パイ ク 信号を 転送する た めの転 送要求信号を Synapse モジュ ールに 対し て 出力する . Synapse モジュ ールは, Simulator モジュ ールに 対し て 他のニュ ーロ ン から のス パイ ク 信 号の到着を 知ら せる 機能と , Simulator モジュ ールから 出力さ れる 転送要求信号を 受け て 後 続のニュ ーロ ン と ハン ド シェ イ ク を 行う 機能を 持つ . Simulator モ ジュ ールと Synapse モ ジュ ール, 2 つのモジュ ールを 組み合わせる 事で SNN エミ ュ レ ータ を 構成し , SNN シミ ュ レ ータ の拡張性を 確保し て いる . 3.3 Synapse モ ジ ュ ール Synapse モジュ ールに ついて の説明を 行う . Synapse モジュ ールは, Simulator モジュ ー ルから 任意のタ イ ミ ン グで送信さ れる 転送要求信号を 自律的に 受信し て 動作する STC と , 同期回路と STC の信号のタ イ ミ ン グ差を 吸収する AtoS 回路, StoA 回路に よ っ て 構成さ れ – 10 – 3.3 Synapse モジュ ール 図 3.2 Synapse モジュ ールの構成 る . Synapse モジュ ールの構成に ついて は図に 示す. 3.3.1 STC(Self-Timed Circuit) と そ の特徴 図 3.3 STC の概略図 – 11 – 3.3 Synapse モジュ ール STC は, 信号がやっ て く る タ イ ミ ン グで自律的に 動作し , 処理を 開始する 回路である . こ の特徴を 用いる 事で, エミ ュ レ ーショ ン 中の任意のタ イ ミ ン グで起こ る 発火に よ る ス パイ ク 信号を ニュ ーロ ン 間でやり 取り する 事が可能であ る . STC は C 素子と 呼ばれる , 自律駆動 素子 (転送制御回路) から 構成さ れ, C 素子の転送要求信号 Send に 対し て Ack 信号を 返す 事でハン ド シェ イ ク を 行う . STC が自律的に 信号を 処理可能な のは, C 素子間の相互通信 (ハン ド シェ イ ク ) に 依る も のである . STC の構成を 図 3.3 に 示す. STC の構成要素は, DLi (データ ラ ッ チ ) と C 素子であ る . Sendi はデータ の転送要求信号, Acki はデータ の転送許可信号, CPi は各 C 素子間のハン ド シェ イ ク が完了し た 際に , 出力さ れる 回路制御用の信号であ る . 通常は CPi は DLi に 出 力さ れ, 入力さ れる データ を ロ ジッ ク へと 開放する た めに 用いら れる . ハン ド シェ イ ク は以 下のよ う な 手順で行われる . 1. データ 転送要求信号 Send0 = 1 を C0 に 転送する 2. C0 はデータ 転送要求信号 Ack0 = 1 を 転送し , ま た, C1 へ Send1 = 1 を 転送する 3. Send0 = 1 を C0 へ転送する 4. C0 は Send1 = 1 を C1 へ転送する 5. C1 は Ack1 = 1 を C0 へ転送する 6. C0 は CP 0 = 1 を DL0 へ転送し , データ を 通過さ せ, C0 は Send = 1 を C1 へ転 送を 行う 7. C1 は Send2 = 1 を C2 へ転送する 8. C2 は Ack2 = 1 を C1 へ転送する 9. C1 は CP 1 = 1 を DL1 へ転送し , データ を 通過さ せ, C1 は Send2 = 1 を C2 へ転 送を 行う 10. C2 は Send3 = 1 を 転送する 11. Ack3 = 1 を C2 へ転送する 12. C2 は CP 2 = 1 を DL2 へ転送し , データ を 通過さ せ, C2 は Send3 = 1 を 転送する – 12 – 3.3 Synapse モジュ ール 以上の手順を 繰り 返し な がら C 素子間でハン ド シェ イ ク を 繰り 返す事で, C 素子は非同期 に 信号のやり と り 行う . 本研究で提案する SNN エミ ュ レ ータ に おいて は, 任意のタ イ ミ ン グで出力さ れる 転送要 求信号を ニュ ーロ ン 間でやり と り する た めに , よ り 高度な 機能が必要と な る . 本構成を 満た すために 機能を 付加し た C 素子に ついて 以下に 述べる . 3.3.2 CM 素子 CM 素子は, ス パイ ク 信号の伝送遅延が異な る 2 つのニュ ーロ ン のいずれと ハン ド シェ イ ク を 行う か選択する 機能を 実現する 転送制御回路であ る . CM 素子は, 2 つ の C 素子から Send 信号の入力を 受け 取り , 先に Send 信号を 送っ た C 素子と ハン ド シェ イ ク を 行う . 一 方の C 素子と ハン ド シェ イ ク を 行っ て いる 間, も う 一方の C 素子はハン ド シェ イ ク を 行わ な い事で, 発火レ ート の異な る 2 つのニュ ーロ ン から のス パイ ク 信号を そ れぞれ受信する 事 を 可能に し て いる . 3.3.3 CB 素子 CB 素子は, 発火が起き た 際に , 後続のニュ ーロ ン 2 つに 対し て ス パイ ク 信号を そ れぞれ 送信する ための C 素子である . 1 つ目のニュ ーロ ン と のハン ド シェ イ ク が完了する と , 後述 する StoA 回路よ り branch 信号を 受け 取り 2 つ目のニュ ーロ ン へと 送信先の切り 替え を 行 い Send 信号の複数送信を 実現し て いる . 3.3.4 Asynchronous to Synchronous(AtoS) 回路 AtoS 回路は, 非同期回路と 同期回路の信号のタ イ ミ ン グ差を 吸収する た めの同期回路で, 接続さ れて いる CM 素子から の Send 信号を キ ャッ チする と 状態遷移マ シン に よ っ て 一度だ け ハン ド シェ イ ク を 行い, ハン ド シェ イ ク の完了時に Simulator モジュ ールに 対し て valid 信号を 送信する . valid 信号に よ っ て Simulator モジュ ールはス パイ ク 信号の到着を 検知で – 13 – 3.4 Simulator モジュ ール き る . Send 信号の受信から valid 信号を 送信する ま でを 1 サイ ク ルと し て , こ の動作を 繰 り 返し , 発火に よ る ス パイ ク 信号を 後続のニュ ーロ ン へと 送信し て いる . 3.3.5 Synchronous to Asynchronous(StoA) 回路 StoA 回路は, 同期回路と 非同期回路の信号のタ イ ミ ン グ差を 吸収する 同期回路で, 接続 さ れて いる Simulator モジュ ールから 発火を 知ら せる valid 信号を 受け 取る と , 状態遷移マ シン に よ っ て , 接続さ れて いる CB 素子に 対し て Send 信号を 送り ハン ド シェ イ ク を 開始す る . CB 素子に 接続さ れて いる 後続のニュ ーロ ン は 2 つ存在する た め, StoA は 2 度ハン ド シェ イ ク を 行う 必要があ る . ま た , 1 つ目のニュ ーロ ン と のハン ド シェ イ ク が完了し た タ イ ミ ン グで, 2 つ目のニュ ーロ ン へと ハン ド シェ イ ク を 切り 替え る た めの branch 信号を CB 素子に 対し て 送信する 事で, 後続の 2 つのニュ ーロ ン と のハン ド シェ イ ク を 実現し て いる . 3.4 Simulator モ ジ ュ ール Simulator モジュ ールは, 入力さ れる ス パイ ク 信号が膜電位に 与え る 影響を 演算する 働き を 持っ た同期回路である . SNN を 構成する 上で, 最も 重要な モジュ ールであり , モジュ ール 内部でス パイ ク 信号の到着時刻やス パイ ク 信号の重みを 加味し て 膜電位の変化を 演算し て い る . Simulator モジュ ールの演算の結果, 発火が起こ る と C 素子, AtoS 回路, StoA 回路 から 構成さ れる Synapse モジュ ールに 対し て 転送要求信号であ る valid 信号が送信さ れる . Synapse モジュ ールがこ の valid 信号を 受け 取る と , 自身の C 素子と 後続の C 素子と の間 でハン ド シェ イ ク が開始さ れる . ハン ド シェ イ ク が完了する と ス パイ ク 信号が後続のニュ ー ロ ン へと 伝達さ れる . こ の Simulator モ ジュ ールを 拡張する 事で, 膜電位の演算に 用いる ニュ ーロ ン のモデルを 変更する 事ができ る . 膜電位を 演算する た めのモデルは数多く 存在す る た め, Simulator モ ジュ ールと Synapse モ ジュ ールを 個別に 構成し て 拡張性を 確保し て いる . – 14 – 3.5 提案エミ ュ レ ータ に おけ る 時間と 精度 3.5 提案エミ ュ レ ータ におけ る 時間と 精度 2 つのニュ ーロ ン 間でのス パイ ク 信号のやり 取り を 例に エミ ュ レ ーショ ン の速度 ・ 精度の 関係式を 求める . ま ず, モデル上のエミ ュ レ ーショ ン 時間を 求める ために , ニュ ーロ ン A と ニュ ーロ ン B の存在を 仮定する . ニュ ーロ ン A から ニュ ーロ ン B へのス パイ ク 信号の伝達 遅延を Dij と し て , ニュ ーロ ン B がニュ ーロ ン A から ス パイ ク 信号を 受け て 発火する ま で の時間を Tj と おく と , こ のニュ ーロ ン のモデルに おけ る モデル上のエミ ュ レ ーショ ン 時間 は, Tj Dij と おく 事ができ る . 次に , 実時間でのエミ ュ レ ーショ ン に ついて 考え る . IAF ニュ ーロ ン モデルの演算に よ る 電位の出力間隔を dt と する と , ニュ ーロ ン B がス パイ ク 信号を 受け て から 発火する ま での モデル上の時間は, Tj dt と お く 事ができ , ま た , 電位変化は同期信号の 1 ク ロ ッ ク 毎に 出力 さ れる ため, 同期信号の周波数を fck と する と , モデルに おけ る T j は実時間上で Tj dt × 1 fck と 表す事ができ る . モデルに おけ る 伝送遅延 Dij は, エミ ュ レ ーショ ン を 加速さ せる ための ′ a(Accel-factor) に 回路上の遅延を 含む 伝送遅延 Dij を かけ あ わせた も のと 対応さ せる 事が でき る . 以上を 式と し て ま と める と 次のよ う に な る . Tj ≃ Dij Tj 1 dt × fc k 1 ′ a × Dij (3.1) ′ こ の式に おいて , Dij が十分に 遅い場合, 次のよ う に 式を 近似する 事ができ る . a = dt × fck (3.2) 求めた式を 用いて , 回路の速度を 導く 事ができ , 例え ば, dt = 1ms, 動作周波数 fck =20MHz に おけ る a は 2.0 × 104 と な り , 実時間の 20000 倍のエミ ュ レ ーショ ン 速度である 事を 示す. ′ こ の時, 伝送遅延 Dij , Dij を ス ケ ールする 事で, エミ ュ レ ーショ ン を 更に 加速さ せる 事 ができ る . し かし , 伝送遅延を よ り 短く 設定する 事で, 回路上の遅延に よ る 値の誤差が, エ ミ ュ レ ーショ ン の目的に おいて 許容でき る 場合に 限る . 導出し た式に よ る , エミ ュ レ ーショ ン 速度と 精度の検証は, 次章で行う . – 15 – 3.6 結言 3.6 結言 本章では, セ ルフ タ イ ム 回路を 用いた SNN エミ ュ レ ータ の構成に ついて 述べた . セ ルフ タ イ ム 回路を 用いる 事で, ス パイ ク 信号の非同期性を 実現し , よ り 実際の脳活動に 近い条件 でのエミ ュ レ ート を 可能に し た. ま た, 膜電位変化の演算を 行う Simulator モジュ ールと 転 送要求信号のやり 取り を 行う Synapse モ ジュ ールを 個別に 構成する 事で, 他のニュ ーロ ン モデルの拡張が容易な よ う に 設計を 行っ た . 膜電位変化を 計算する モデルは数多く 存在する が, ニュ ーロ ン の膜電位が閾値を 超え た ら 発火する と いう 基本的な 動作は同じ であ る た め, Simulator モジュ ールの記述を 変更する 事で, 目的に 合わせた SNN エミ ュ レ ータ を 構成す る 事ができ る . 提案し た 回路構成を 実際の FPGA チッ プに 実装する た めの設計手順と 提案回路の検証結 果に ついて 次章で述べる . – 16 – 第4章 FPGA 回路設計と 評価 4.1 緒言 本章では, 前章で提案し た 回路構成に 関し て , FPGA チッ プ (Altera 社 Stratix V) を 対 象と し た回路を 設計し , 回路規模な ど を 評価し た. 具体的に は, Simulator モジュ ールに 実装する ニュ ーロ ン モデルと し て , ソ フ ト ウ ェ ア シ ミ ュ レ ータ NEST でも サポート さ れて いる IAF ニュ ーロ ン を 取り 上げ, IAF ニュ ーロ ン 4 個の SNN を 記述し た Matlab コ ード を , HDL Coder に よ っ て Verilog HDL 記述に 自動変 換し た後, STC と そ の I/F 回路を 追記し て , FPGA を 対象に 論理合成およ び, 配置 ・ 配線 を 行っ た. ま た, 設計し た Synapse モジュ ールを 用いて 前章で示し たエミ ュ レ ータ に おけ る 時間と 精度の関係が成り 立つ事を 検証し た. 4.2 FPGA 実装し たエミ ュ レ ータ の仕様 (設計 ・ 検証手順) SNN エミ ュ レ ータ は, Simulator モジュ ールと Synapse モジュ ールで構成さ れる . Simulator モ ジュ ールは, 主に Matlab を 用いて 設計を 行い, Synapse モ ジュ ールは, Verilog HDL に よ っ て 設計し て いる . 膜電位変化を 演算する ための IAF ニュ ーロ ン モデルは, 複雑 な 計算式を 含んでおり , Verilog HDL を 用いて 一から 構築する 事は難し い. Matlab を 用い る 事で, よ り 抽象度の高い記述が可能に な る 事から , 本研究では, Simulator モジュ ールの 設計に Matlab を 用い, Matlab のサード パーティ ・ ソ フ ト である HDL Coder を 使用し て Matlab コ ード を Verilog HDL に 自動変換し た. そ し て , 自動変換さ れた Verilog コ ード に – 17 – 4.2 FPGA 実装し たエミ ュ レ ータ の仕様 (設計 ・ 検証手順) 対し て Verilog HDL で設計し た Synapse モジュ ールを 追記し て SNN エミ ュ レ ータ を 構築 し た. 設計し た 回路は, 実際の FPGA チッ プを 対象に Altera 社の Quartus を 用いて 論理合成 を 行い, 回路規模やエミ ュ レ ーショ ン 性能に ついて 評価し , ま た, Synapse モジュ ールを 論 理合成 ・ 回路シミ ュ レ ーショ ン する 事で, 前章で示し た提案エミ ュ レ ータ に おけ る 時間と 精 度の関係が成り 立つ事を 検証し た. 4.2.1 Synapse モ ジ ュ ールの設計 Synapse モ ジュ ー ルは, STC と AtoS 回路, StoA 回路で 構成さ れ, そ れぞ れ Verilog HDL コ ード で設計さ れて いる . STC は, 2 入力 2 出力のニュ ーロ ン を 実現する ために , CM 素子と CB 素子を 用いて おり , そ れぞれ NAND ゲート や NOT ゲート に よ る 組み合わせ回 路である . AtoS 回路, StoA 回路は, 状態遷移マ シン であり , 同期信号を 受け て 動作する 順 序回路である . STC に おけ る C 素子の仕様を 説明を する . C 素子の構成図を 図 4.1 に 示す. 図に 示す通 り , C 素子の内部に はいく つかの遅延素子が組み込ま れて いる . こ の遅延素子は, C 素子の 動作を 保証する た めに 必要な も のであ る . CM 素子, CB 素子に も 同じ よ う に 遅延素子が組 み込ま れて おり , 遅延量は遅延 D が 2ns で, そ れ以外の遅延が 1ns であ る . 一般的な C 素 子に , よ り 高度な 機能を 付与し た も のが CM 素子と CB 素子であ り , そ れぞれ機能が異な る . CM 素子は, 2 つの C 素子から の Send 信号を 受け 付け る 事ができ , 先に 届いた Send 信号と 優先的に ハン ド シェ イ ク を 行う . 現状, CM 素子は 2 つの C 素子と し かハン ド シェ イ ク を 行う 事ができ な いた め, 本研究で提案する SNN よ り も 規模の大き な SNN を 構成する 際に は, CM 素子の改良が必要と な る . CB 素子は, branch 信号に よ っ て 接続先を 切り 替 え る 事ができ る C 素子であ り , branch 信号の bit 幅を 増やす事で必要な 数だけ 送信先を 増 やす事が可能であ る . し かし , 複数の送信先に 対し て 同時に ハン ド シェ イ ク を 行う 事はでき な いた め, 接続数が増え る ほど 優先度の低い送信先ま での信号の伝達が遅く な っ て し ま う 問 題がある . よ っ て , よ り 大規模な SNN を 構成する 際は, CB 素子の改良が必要である . – 18 – 4.2 FPGA 実装し たエミ ュ レ ータ の仕様 (設計 ・ 検証手順) C 素子は, 隣接する C 素子が連鎖的に ハン ド シェ イ ク を 行う 事で信号の伝達を 行う た め, 今回提案する SNN エミ ュ レ ータ のよ う に , 任意のタ イ ミ ン グでハン ド シェ イ ク を 行わせた い場合に は, 期待する 動作を し な い場合がある . ま た, C 素子間の信号は非同期に 行われて いる のに 対し て Simulator モジュ ールの演算は同期信号と 同期し て 行われて おり , 任意のタ イ ミ ン グで送信さ れる ス パイ ク 信号を 扱う た めに は, 信号のタ イ ミ ン グ差を 吸収する AtoS 回路と StoA 回路が必要に な る . 図 4.1 一般的な C 素子の構成 AtoS 回路の仕様に ついて 説明する . AtoS 回路も StoA 回路も 状態遷移マ シン で構成さ れ て いる . AtoS 回路は, 接続さ れて いる CM 素子から 送ら れて く る Send 信号の立ち 下がり を 同期信号毎に キ ャ プチャ し , 立ち 下がり を 検知する と , 状態を 遷移し て , CM 素子が正常 に 動作する よ う な Send 信号, Ack 信号を 発生さ せる . AtoS 回路に は, nw IDLE, nw HOLD, nw ACK の 3 状態が存在し , ク ロ ッ ク 信号の立 ち 上がり 毎に , CM 素子から の Send 信号に よ っ て 状態を 遷移さ せる . ま た , AtoS 回路に は, 入力信号と し て , clock 信号, reset 信号, Send 信号があり , 出力と し て , Ack 信号と valid 信号がある . AtoS 回路の実際の動作を 以下に 記す. – 19 – 4.2 FPGA 実装し たエミ ュ レ ータ の仕様 (設計 ・ 検証手順) ス パイ ク 信号の到着に よ る Simulator モジュ ールに 対する 通知 1. 1 ク ロ ッ ク 目の立ち 下がり で, ネ ガティ ブ エッ ジフ リ ッ プ フ ロ ッ プ 回路に よ っ て Send 信号を キ ャ プチャ する . 2. 2 ク ロ ッ ク 目の立ち 上がり で, valid 信号を 立ち 上げ, 3 ク ロ ッ ク 目で valid 信号を 立ち 下げる . 状態遷移マ シン に よ る CM 素子と のハン ド シェ イ ク 1. リ セ ッ ト 信号に よ っ て 出力信号と 状態を リ セ ッ ト する . 状態は, nw IDLE へと 移る . 2. CM 素子から の Send 信号の立ち 下がり , すな わち Send = 0 を 検知する と , Ack = 0 に し て 状態を nw HOLD に 移す. 3. nw HOLD の状態では, 1 ク ロ ッ ク の間, Ack = 0 に 固定し 続け, 状態を nw ACK へ と 移す. 4. nw ACK では, ク ロ ッ ク の立ち 上がり に 合わせて , CM 素子から の Send 信号を 監視 し て お り , CM 素子の Send 信号が Send = 1 と な っ た ら , Ack = 1 に し て 状態を nw IDLE へと 移し 動作を 終了する . AtoS 回路は, 1 回のハン ド シェ イ ク が完了する 度に , ス パイ ク 信号の到着を 知ら せる valid 信号を Simulator モジュ ールに 対し て 送信する . こ の時, CM 素子に 接続さ れて いる データ ラ ッ チに 対し て CM 素子から データ ラ ッ チ開放信号であ る CP 信号が出力さ れて いる た め, Simulator モジュ ールは, 届いたス パイ ク 信号の識別子を valid と 共に 受け 取る 事ができ る . StoA 回 路 の 仕 様 に つ い て 説 明 す る . StoA 回 路 に は , nw IDLE, nw REQ, nw ACK, nw coDown, nw REQ2, nw ACK2 の 6 状態が存在し , ク ロ ッ ク の立ち 上がり 毎に , CB 素 子に 対し て 信号を 送信 ・ 受信し , 状態を 遷移さ せる . ま た , StoA 回路の入力に は, clock 信号, valid 信号, reset 信号, Ack 信号 (そ れぞれ 1bit) が存在し , 出力に は, Send 信号, enable 信号, branch 信号 (そ れぞれ 1bit) がある . StoA 回路の動作を 以下に 記す. – 20 – 4.2 FPGA 実装し たエミ ュ レ ータ の仕様 (設計 ・ 検証手順) 状態遷移マ シン に よ る CB 素子と のハン ド シェ イ ク 1. リ セ ッ ト 信号に よ っ て 出力信号と 状態を リ セ ッ ト する . 状態は, nw IDLE へと 移る . 2. Simulator モジュ ールから の valid 信号の立ち 上がり , すな わち valid = 0 を 検知する と , Ack = 0 に し て 状態を nw REQ に 移す. 3. nw REQ の状態では, CB 素子から の Ack 信号を 監視し て おり , Ack = 0 であっ た 場 合は, Send = 0 に し て , 状態を nw ACK へと 移す. 4. nw ACK では, CB 素子から の Ack 信号が Ack = 1 と な る ま で状態を 維持し , Ack = 1 と な っ た ら , 2 つ目の送信先と CB 素子がハン ド シェ イ ク を 行う よ う に branch = 1 に 切り 替え , 状態を nw coDown へと 切り 替え る . 5. nw coDown では, 2 回目のハン ド シェ イ ク を CB 素子と 行う た めに , Send 信号を 立 ち 下げ, 状態を nw REQ2 へと 移す. 6. nw REQ2 の状態では, Ack 信号の立ち 下がり を 監視し , Ack = 0 であ れば, Send 信 号を 立ち 下げ, 状態を nw ACK2 へと 移す. 7. nw ACK2 では, CB 素子から の Ack 信号が立ち 上がる ま で状態を 維持し , Ack = 1 と な っ た ら , Send 信号を 立ち 上げ, branch 信号を リ セ ッ ト し , enable 信号を 立ち 下げ, Simulator モジュ ールに 対し て , 2 回のハン ド シェ イ ク の完了を 通知する . 通知が完了 し たら , 状態を nw IDLE に 移し て 動作を 終了する . 各ニュ ーロ ン の CB 素子の Send 信号の先に は, 同期信号に よ っ て 動作する 遅延回路があ り , 同期信号を カ ウ ン ト し て 遅延量を 調節する 事ができ る . こ れに よ っ て , SNN に お け る ス パイ ク 信号の伝送遅延を 実現し て いる . 4.2.2 Simulator モ ジ ュ ールの設計 Simulator モジュ ールは, Matlab に よ っ て 設計さ れて いる . Matlab で設計を 行う 際に は, Verilog HDL で設計を 行う 際と 同じ よ う に , 回路の動作を 記述し た Matlab コ ード と そ の動 作を 検証する た めのテ ス ト ベン チコ ード が必要に な る . 提案回路では, 多数存在する ニュ ー – 21 – 4.2 FPGA 実装し たエミ ュ レ ータ の仕様 (設計 ・ 検証手順) ロ ン モデルのう ち ソ フ ト ウ ェ ア シミ ュ レ ータ NEST[4] でも サポート し て いる IAF モデルを Simulator モジュ ールに 実装し て いる . IAF モデルを Matlab コ ード と し て 実装する た めに は, ト ッ プの関数と し て 式 2.1 と , 式 2.1 の内部に あ る I syn 関数, I syn 関数の内部に あ る alpha 関数が必要に な る . ど の関数に 関し て も 変化する 値はエミ ュ レ ーショ ン 時間 t のみ である . alpha 関数では, ex と いう 指数関数を 用いる が, Verilog HDL で指数関数を エミ ュ レ ーショ ン 時間ごと に 求める 事は, 実装上難し いた め, あ ら かじ めエミ ュ レ ーショ ン 時間分 の値を 配列に 格納し て おき , alpha 関数が呼び出さ れる 度に 配列から 値を 取り 出す事で実現 し て いる . こ の時指数関数に 用いる e1 は仮数部 16 桁の数 2.7182818284590455 である . I syn 関数では, 入力さ れる ス パイ ク 信号の影響を すべて 足し 合わせる 必要があ り , IAF モデルに 必要な 関数と は別に , ス パイ ク 信号の入力を 検知し て ス パイ ク 信号の識別子と 入力 さ れた時間を 格納する ための関数が必要に な る . Verilog HDL では, 2 次元配列を サポート し て な いた め, 時間と 識別子の配列を そ れぞれ用意し て ス パイ ク 信号の値を 格納し て いる . 配列のサイ ズは, ニュ ーロ ン がス パイ ク 信号を 受け て から 発火する ま での時間を 考え , およ そ 18 − 20 の間で設計する . Synapse モジュ ールのハン ド シェ イ ク が完了する と , Simulator モジュ ールに 対し て Synapse モジュ ールよ り valid 信号が入力さ れる . Simulator モジュ ー ルが valid = 1 を 検出する と , そ の時のエミ ュ レ ーショ ン 時間と ス パイ ク 信号の識別子を 用 意さ れて いる 配列の先頭から 格納し て いく . I syn はこ の配列の値を ループ文で先頭から 取 り 出し , ス パイ ク 信号が膜電位に 与え る 影響と し て 用いる . ま た , こ の時ス パイ ク 信号の識 別子を 判定する 事で, ニュ ーロ ン 間の重み wij を 掛け 合わせて いる . ス パイ ク 信号に は, そ れぞれニュ ーロ ン の識別子が存在し , 本研究に おけ る 提案 SNN おいて は, ニュ ーロ ン の数 は, 4 つであり , 識別子のビッ ト 幅は 2bit である . I syn 関数や alpha 関数に よ っ て IAF ニュ ーロ ン モデルは, エミ ュ レ ーショ ン 時間 t 毎 に 膜電位 V m を 出力する . こ の時の膜電位の値のビッ ト 幅は全体で 25bit であ り , 整数部 は, 7bit, 指数部が 17bit の値であ る . V m の値が, 指定し た 閾値 Vth を 超え た ら , IAF ニュ ーロ ン は発火し て ス パイ ク 信号と Synapse モジュ ールに 対する valid 信号を 出力する . Synapse モジュ ールは, こ の valid 信号を 受け 取る と 後続のニュ ーロ ン と ハン ド シェ イ ク を – 22 – 4.2 FPGA 実装し たエミ ュ レ ータ の仕様 (設計 ・ 検証手順) 開始する . IAF ニュ ーロ ン が発火する と , V m や配列に 格納さ れて いたス パイ ク 信号は, 不 応期の間リ セ ッ ト さ れ続け る . 発火の際に 出力さ れる 識別子に 関し て は, Synapse モジュ ー ルから の enable 信号が入力さ れる ま で固定さ れ, enable 信号が入力さ れる と リ セ ッ ト さ れ る . こ れは, ニュ ーロ ン 間の伝達遅延が大き く , ハン ド シェ イ ク が完了する ま で識別子を 固 定し な いと 後続のニュ ーロ ン に 対し て 正し く ス パイ ク 信号が伝達さ れな いた めであ る . 関数 フ ァ イ ルの設計に 関し て は, 以上である . 次は, テス ト ベン チの設計に 関し て 述べる . テ ス ト ベン チに は, 関数を 動かすた めに 必要な 入力値を 記述する 必要があ る . 今回必要な 入力は, エミ ュ レ ーショ ン 時間 t, ス パイ ク 信号の識別子 Identif ier , ス パイ ク 信号検知信 号 valid, こ れら を 引数と し て 関数に 渡し , 指定し た エミ ュ レ ーショ ン 時間ま で t を イ ン ク リ メ ン ト し な がら ループさ せる . 本研究で提案する SNN エミ ュ レ ータ では, 1 つ のニュ ーロ ン と し て 書き 出し た Matlab コ ード を 相互に 接続する のではな く , 1 つの Matlab コ ード 上で 4 つのニュ ーロ ン を 実装し て いる . こ れは, Matlab HDL Coder で読み込む 事ができ る 関数のフ ァ イ ルが 1 つと いう 制限から であ る . よ っ て , テ ス ト ベン チ側で用意する t や Identif ier , valid な ど は, 想定 する ニュ ーロ ン の数だけ 必要に な る . Matlab 上で動作の確認が完了し たら , Matlab HDL Coder を 用いて , FPGA チッ プフ ァ ミ リ や, 回路実装時のク ロ ッ ク 周波数な ど の各オプショ ン を 指定し て Verilog HDL と し て 出力する . 4.2.3 検証手順 本研究では, 設計し た SNN エミ ュ レ ータ の動作を 検証する ために , 実際の FPGA チッ プ を 対象に 論理合成を 行っ た . 対象と する FPGA のチッ プ フ ァ ミ リ は, Altera 社の Stratix IV EP4SE820F43I4 で , 論理合成 ・ 回路シ ミ ュ レ ー ショ ン に は, Altera 社 Quartus II ver13.0(Quartus) と Mentor Graphics 社 Questa Advanced Simulator(Questa Sim) を 用 いた. 論理合成に は, 主に Quartus を 用い, 論理シミ ュレ ーショ ン ・ 実遅延シミ ュレ ーショ ン に は, Questa Sim を 用いて いる . Quartus に 同梱さ れて いる Mentor Graphics ModelSim – 23 – 4.3 設計 ・ 検証結果 と いう シミ ュ レ ータ では, いく つかの機能の制限があ り 本研究で提案する 回路を 扱う 事がで き な いため, 今回は使用し て いな い. 設計の完了し た Simulator モジュ ールと Synapse モジュ ールの Verilog HDL フ ァ イ ルを Quartus に 取り 込み, 論理合成を 実行し て , Stratix IV EP4SE820F43I4 に お け る 設計回 路のス ペッ ク を 検証し た. 次に , Synapse モジュ ールに 対し て 配置配線を 行い, 配置配線が 完了する と Quartus から 呼び出し た Questa Sim を 用いて 論理シミ ュ レ ーショ ン ・ 実遅延 シミ ュ レ ーショ ン を 行い, エミ ュ レ ーショ ン 性能やエミ ュ レ ータ に おけ る 時間と 精度の関係 を 検証し た. 4.3 設計 ・ 検証結果 提案構成を 設計し , Quartus を 用いて 論理合成し た 結果を 以下の表に 示す. 比較と し て 表 4.1 論理合成の結果 LE 数 Pin 数 DSP ブロ ッ ク 数 SNN エミ ュ レ ータ 677,554(105%) 352(31%) 960(100%) Simulator モジュ ール 677,521(104%) 316(28%) 960(100%) 36(3%) 0 Synapse モジュ ール 33(1%) Simulator モジュ ールのみの場合, Synapse モジュ ールのみの場合の結果も 表に ま と めて い る . 結果を 見る と , Simulator モジュ ールが LE 数, Pin 数のほと んど を 占めて いる 事がわ かる . 実際の FPGA(Stratix IV EP4SE820F43I4) を 対象に Simulator モ ジュ ールの合成 を 行っ た結果, LE(Logic-Element) 数が 677,521 で全体の 104%と な り , よ り 大き な FPGA でな け れば, SNN エミ ュ レ ータ の実装が不可能であ る 事が分かっ た . alpha 関数は, 指数 関数の演算を 含むが, Verilog HDL では, 指数関数を サポート し て いな いため, 予めエミ ュ レ ーショ ン 時間の分だけ 求めた 値を 配列に 格納し て 必要な 時に 呼び出し て いる . 膜電位を 求 める 際に は, 現在のエミ ュ レ ーショ ン 時間ま でに 到着し た ス パイ ク 信号の影響を すべて 加味 – 24 – 4.3 設計 ・ 検証結果 する 必要があ る . ス パイ ク 信号の入力が無い状態では, およ そ t = 20 で発火が起き る た め, ニュ ーロ ン の発火レ ート 等を 考え , 現在の仕様では外部から 入力さ れる ス パイ ク 信号を 格納 する 配列のサイ ズは 20 に な る . よ っ て , 1 度の膜電位を 求める ために , alpha 関数は 20×2 回呼び出さ れる . alpha 関数内の指数関数の値や alpha 関数自体の呼び出し 回数の多さ が回 路規模の増大に 関係し て いる と 考え ら れ, 回路規模縮小のた めに は, 演算式の工夫が必須で ある . ま た , 本研究で用いて いる IAF ニュ ーロ ン モデルでは, 1 つ前の膜電位の値を 利用し て , 現在の膜電位を 求める が, こ の再帰的な 計算を 実現する た めに , Matlab コ ード 内の永続変 数であ る persistent を 用いて いる . persistent を 用いる 事で, テ ス ト ベン チ 側の値の更新 が削減で き , FPGA の pin 数を 減ら す事が可能で あ る . 一方, persistent を 用いる 事で , DSP ブロ ッ ク を 多く 消費する こ と も 検証でき て おり , 合成に かかる 時間も 増大する . 次に , エ ミ ュ レ ー タ の精度と 速度の関係に つ いて 検証を 行っ た . 設計し た Synapse モ ジュ ー ル を Quartus に 取り 込み , 実遅延シ ミ ュ レ ー ショ ン に よ っ て 信号波形を 確認し , ニュ ーロ ン A が発火し て valid 信号と ス パイ ク 信号が出力さ れて から , ハン ド シェ イ ク の完 了に よ っ て ニュ ーロ ン C の valid 信号が Simulator モジュ ールに 入力さ れる ま での時間を 確認し た. モデル上の伝送遅延 Dij を 50us と 与え , エミ ュ レ ーショ ン 間隔 dt =1ms と し , ニュ ーロ ン A に 対する ス パイ ク 信号の入力が無い場合で回路シミ ュ レ ーショ ン を 行っ た結果, モデル 上で与え て いた 50us と いう 伝送遅延は, 回路上では, C 素子や AtoS, StoA 回路の遅延な ど に よ っ て 50.898us であっ た. 0.898us が回路の遅延である . こ の時, 前章で示し た関係式を 用いて 計算を 行う . ま ず, dt =1ms, fck =20MHz と おく と , a = 2.0 × 104 であ る . よ っ て , エミ ュ レ ーショ ン は実時間の 20000 倍で動作し て いる 事がわかる . 次に , エミ ュ レ ー ショ ン の精度に つ いて 求め る . ス パイ ク 信号の入力が無い 状態に お け る ニュ ーロ ン の自然発火ま での時間 T j はお よ そ 20ms であ り , 式x の左辺が, 20ms 50us , 右辺が 20ms 1 50us × 20M Hz 1 ×50.898us 2.0×104 であ る . そ れぞれ求める と 左辺 = 400, 右辺 = 392.942 と な り , そ の精度は 98.235%である . 同様に , 伝送遅延 Dij 5ms で回路シミ ュ レ ーショ ン を 行 – 25 – 4.4 結言 う と , 左辺 = 4, 右辺 = 3.999 と な り , そ の精度は 99.982%である . 以上に よ っ て dt や Dij の設定次第では, SNN エミ ュ レ ータ が実時間よ り も 速い速度でエ ミ ュ レ ーショ ン 可能であ る 事と , SNN エミ ュ レ ータ の高速化に よ る 信号精度劣化のト レ ー ド オフ 関係を 検証でき た. 4.4 結言 本章では, SNN エミ ュ レ ータ の設計 ・ 検証手順に ついて 述べた. Matlab を 用いる 事でよ り 抽象的な 記述に よ っ て 柔軟な ニュ ーロ ン モデルの設計を 行う 事ができ た. し かし , Matlab コ ード 上でサポート し て いる 記述が Verilog HDL ではサポート し て いな い場合があ る た め, Verilog HDL に 変換する 際の事も 考慮し つつ設計する 事が肝要であ る . ま た , Verilog のよ う に ハード ウ ェ ア 的な 記述を Matlab コ ード では実現でき な いた め, 自ら 設計し た 回路を 自 動生成さ れた Verilog HDL コ ード に 追記する 場合も 予め Verilog HDL を 意識し た Matlab に よ る 設計が必要である . Synapse モジュ ールに 関し て は, 非同期に 動作する C 素子を 任意のタ イ ミ ン グでハン ド シェ イ ク さ せる た めに , 同期信号で動作する AtoS 回路や StoA の設計を 行っ た . 状態遷移 マ シ ン を 用いる 事で, C 素子の非同期な ハン ド シェ イ ク を 同期回路でも 実現し , Simulator モ ジュ ー ルと Synapse モ ジュ ー ルと の信号のタ イ ミ ン グ 差を う ま く 吸収す る 事が可能に な っ た. SNN エミ ュ レ ータ は, パラ メ ータ の設定に よ っ て 実時間よ り も 速い速度で, エミ ュ レ ー ショ ン を 行う 事が理論上可能である 事が確認でき た. し かし , 伝送遅延のス ケ ールに よ っ て , 回路の遅延の影響が変化する た め, 速度と 精度のト レ ード オフ 関係を 考慮し て , エミ ュ レ ー ショ ン の目的に あっ た パラ メ ータ の設定が重要であ る . 今後は, Simulator モジュ ールの実 遅延シミ ュ レ ーショ ン に よ っ て SNN エミ ュ レ ータ の最大動作周波数を 求め, 実際の FPGA に 実装し た場合でも 正し く SNN が動作する 事を 検証する 必要がある . 次章では, こ れま でに 述べて き た, 本研究の構成や設計 ・ 検証に ついて ま と め, 今後の課 – 26 – 4.4 結言 題や展望に ついて 述べる . – 27 – 第5章 結論 近年, ディ ープラ ーニン グの登場等に よ り , ニュ ーラ ルネ ッ ト ワ ーク に 関する 研究が再び 盛んに な っ て いる . ディ ープラ ーニン グに 登場の大き な 要因に は, ハード ウ ェ ア 技術の進歩 が挙げら れ, 莫大な 数のニュ ーロ ン を コ ン ピ ュ ータ 上で実装し て 並列演算でき る よ う に 事な ど があ る . ディ ープラ ーニン グに 代表さ れる よ う な 従来の ANN は, 簡略化し た ニュ ーラ ル ネ ッ ト ワ ーク を 用いる 事で, 社会的に 有意義な 技術を 開発する と いっ た 研究目的であ る のに 対し て , SNN の研究目的の多く は, 動物の神経回路網を よ り 忠実に コ ン ピ ュ ータ 上で再現 し た いと いう 目的のも と 行われて いる 研究であ る . ANN と 比べ, 複雑な 演算を 含む SNN に 関し て も , ハード ウ ェ ア 技術の進歩に よ っ て 以前よ り 大規模な ネ ッ ト ワ ーク を コ ン ピ ュ ー タ 上で実装可能に な っ た . し かし , 未だに 人間の脳規模のネ ッ ト ワ ーク を 構築する ま でに は 至っ て お ら ず, ANN のシ ミ ュ レ ーショ ン の敷居の高さ が伺え る . ス ーパーコ ン ピ ュ ータ 等 の高価な ハード ウ ェ ア 機器を 扱う 事ができ る のは, 一部の大規模な 研究機関に 限ら れ, 個人 の研究者や小規模な 研究機関に おいて , 大規模な ANN を シミ ュ レ ーショ ン する 事は, 現実 的ではな い. そ こ で, 本研究では, 比較的安価に 入手可能に な り つつあ る FPGA チッ プを 活用し て , 高速に 動作する SNN エミ ュ レ ータ の構成に ついて 検討を 行っ た. 検討の結果, 理論上高速に 動作する エミ ュ レ ータ を 設計する 事ができ た . ま た , 本研究で 提案し た SNN エミ ュ レ ータ は, ニュ ーロ ン 間のス パイ ク 信号のやり 取り に , STC を 用い て お り , SNN の非同期な 信号の通信も 再現する 事ができ た . し かし , Simulator モ ジュ ー ルに 関し て は, 論理シミ ュ レ ーショ ン ま での検証し か行っ て いな いた め, 今後は, 実遅延シ ミ ュ レ ーショ ン に よ っ て 実際の FPGA に も 実装が可能であ る 事を 検証する 必要があ る . ま た, 実遅延シミ ュ レ ーショ ン に よ っ て Simulator モジュ ールの最大動作周波数を 求め, 式x – 28 – が成り 立つ事も 検証する 必要があ る . 設計し た SNN エミ ュ レ ータ は, エミ ュ レ ーショ ン 時 間の加速のみでな く , ニュ ーロ ン 間の伝送遅延も ス ケ ールし て エミ ュ レ ーショ ン を 行う 事が でき , 更な る 高速化が可能であっ た . し かし , エミ ュ レ ーショ ン 時間と 信号精度はト レ ード オフ の関係に な っ て おり , 信号の劣化が許容でき る 場合に おいて , 伝送遅延を ス ケ ールし て 高速化を 行う 事ができ る . 提案構成を 設計 ・ 合成し た 結果から 目標と し て いた 回路の動作速度や回路面積を 達成す る 事はでき な かっ た が, 今回検討し た , SNN エミ ュ レ ータ は, 最適化を 一切行っ て いな い た め, 最適化に よ っ て 回路規模や最大動作周波数の改善が見込ま れる 事が分かっ た . ま た , 本研究に おいて 膜電位の変化を 演算する ニュ ーロ ン モデルに は, IAF ニュ ーロ ン モデルを 用 いた が, 演算の方法が異な る 別のニュ ーロ ン モデルを 実装する 事で, 回路面積の多く を 占め る Simulator モジュ ールの規模を 縮小でき る 可能性がある . 今後は, 様々 な ニュ ーロ ン モデ ルを 実装し , そ れぞれ比較する 必要がある . ニュ ー ロ ン 間のス パイ ク 信号のやり 取り に 関し て , SNN の非同期性を 実現する た め に , 本研究では, ス パイ ク 信号の送信に STC を 活用し て 検討を 行っ たが, SNN エミ ュ レ ータ に 親和性の高い非同期回路を 模索する 事で, エミ ュ レ ーショ ン 速度 ・ 精度が向上でき る と 考え る . STC を 用いた 非同期回路に お いて は, ハン ド シェ イ ク が完了し て いな い間の転送要求 信号は全て 無視さ れて し ま う た め, 本研究のよ う に 任意のタ イ ミ ン グで転送要求信号が出力 さ れる 回路と の相性が悪い. 伝送遅延を ハン ド シェ イ ク の時間と し て 定義し て いる た め, ハ ン ド シェ イ ク が完了し な い間は, ニュ ーロ ン が発火し て も そ の信号は全て 無視さ れる 事に な る . ま た, 伝送遅延が ms オーダである 事に 対し て , エミ ュ レ ーショ ン の時間は us オーダで あ る た め, 伝送遅延が重大な ボト ルネ ッ ク と な っ て し ま う 事も 今回検証でき た . よ っ て 今後 は, SNN を FPGA で構成する 際に 最も 親和性の高い非同期回路を 模索し , 実装する 事が重 要である と 考え る . 本研究の課題は多いが, こ れら を 克服でき れば, SNN と FPGA の性質を 生かし た超低消 費電力な 高速 SNN エミ ュ レ ータ を 構成する 事ができ る と 考え る . – 29 – 謝辞 本研究を 行う に あ た り , 日頃よ り 懇切丁寧に ご 指導, ご 鞭撻を 賜り ま し た 岩田 誠教授に 心よ り 深謝申し 上げま す. 本研究の論文の副査を お引き 受け 頂き ま し た , 中原 潔教授, 並びに 吉田 真一准教授に 感 謝の意を 表し ま す. 研究室の先輩と し て , 日頃から 暖かいご支援, ご協力を 頂き ま し た , 大学院修士課程 田 口 龍一氏, 松田 佳介氏, 宇野 則文氏, 岡宗 祥平氏に 心よ り 感謝いたし ま す. 研究室の同期と し て , 日頃から ご 支援, ご 協力を 頂き ま し た , 清藤 敦氏, 馬場 滉也氏, 福田 昌平氏に 心よ り 感謝いたし ま す. 研究室の後輩と し て , 日頃から 暖かいご支援, ご協力を いただき ま し た, 梅嵜 佑樹氏, 小 川 友暉氏, 渋田 広樹氏, 松本 隆太氏に 心よ り 感謝いたし ま す. 最後に な り ま し た が, 日頃よ り ご 支援頂き ま し た 関係者の皆様に , 心よ り 感謝申し 上げ ま す. – 30 – 参考文献 [1] Andrew Y.Ng, et al., “Building high-level features using large scale unsupervised learning,” International Conference on Machine Learning, 2014. [2] Paul A. Merolla et al., “A million spiking-neuron integrated circuit with a scalable communication network and interface,” Science 345, 668, 2014. [3] S. Kunkel, et al., “Spiking network simulation code for petascale computers,” Frontiers in Neuroinformatics, vol. 8, pp.1-23, Oct.2014. [4] “NEST Initiative,” http://www.nest-initiative.org/Software:About_NEST, Feb.2015. [5] Kazuhiro Komatsu, Shuji Sannnomiya, Makoto Iwata, Hiroaki Terada, Suguru Kameda, Kazuo Tsubouchi, “Interacting Self-Timed Pipelines and Elementary Coupling Control Modules,” IEICE TRANSACTIONS on Fundamentals, Vol.E92-A, No.7, pp.1642-1651, July 2009. [6] Rosenblatt Frank., “The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain,” Psychological Review 65 (6): pp.386408, 1958. [7] A. Morrison, et al., “Exact subthreshold integration with continuous spike times in discrete time neural network simulations,” Neural Computation, vol. 19, pp.47-79, 2007. – 31 –