(57)【要約】      （修正有）【課題】畳み込みニューラルネットワークを構成する複数の中間層についての演算を、バンク単位で読み書き状態を切り替えることができる複数のバンクを有するメモリを用いて行う半導体装置及びメモリアクセス設定方法を提供する。【解決手段】半導体装置１は、畳み込みニューラルネットワークを構成する複数の中間層についての演算を、バンク単位で読み書き状態を切り替えることができる複数のバンクを有するメモリ２４，２５を用いて行うアクセラレータ部１１を有する。さらに、アクセラレータ部１１が、畳み込みニューラルネットワークを構成する中間層の入力データと出力データのそれぞれの転送量と転送速度に応じて、中間層の入力データまたは出力データを格納するバンクの読み書き状態の割り当てを切り換えるようにメモリ制御部２３を制御するネットワークレイヤ制御部２０を有する。【選択図】図４
2019207458.tif 000002
【特許請求の範囲】
【請求項１】
畳み込みニューラルネットワークを構成する複数の中間層について中間層毎に処理対象画像データの要素に対する畳み込み積和演算を含む演算処理を行うレイヤ演算部と、
前記畳み込みニューラルネットワークを構成する中間層における前記レイヤ演算部の入出力データを格納し、それぞれが独立して読み書き可能な複数のバンクから構成されるメモリと、
前記バンク単位で読み出し可能状態と書き込み可能状態とを切り替えると共に前記レイヤ演算部と前記メモリとのデータの送受信をルーティングするメモリ制御部と、
前記畳み込みニューラルネットワークを構成する中間層の入力データと出力データのそれぞれの転送量と転送速度に応じて、前記中間層の入力データまたは出力データを格納する前記バンクの読み書き状態の割り当てを切り換えるようにメモリ制御部を制御するネットワークレイヤ制御部と、
を有する半導体装置。
【請求項２】
前記ネットワークレイヤ制御部は、前記複数の中間層の連続する中間層のうち前段に配置される中間層を第１の中間層、後段に配置される中間層を第２の中間層とした場合、前記第１の中間層に関する処理において書き込み可能状態を割り当てたバンクを前記第２の中間層に関する処理において読み出し可能状態に割り当てるように前記メモリ制御部を制御する請求項１に記載の半導体装置。
【請求項３】
前記ネットワークレイヤ制御部は、
前記第１の中間層に入力される前記入力データの転送量が１つの前記バンクの容量よりも大きい場合は総容量が前記転送量よりも大きな容量を有するように読み出し可能状態とする前記バンクの数を複数に設定し、
前記第１の中間層から出力される前記出力データの転送量が１つの前記バンクの容量よりも大きい場合は総容量が前記転送量よりも大きな容量を有するように書き込み可能状態とする前記バンクの数を複数に設定し、
前記第１の中間層に入力される前記入力データの転送速度と、前記第２の中間層から出力される前記出力データの転送速度と、の少なくとも一方が前記メモリ制御部と前記バンクとを接続するバスの１バンク当たりのバス転送速度よりも大きい場合は１つの前記バンクに関する転送速度が前記バス転送速度よりも小さくなるように読み出し可能状態とする前記バンクの数を複数に設定し、
前記第１の中間層から出力される前記出力データの転送速度と、前記第２の中間層に入力される前記入力データの転送速度と、の少なくとも一方が前記メモリ制御部と前記バンクとを接続するバスのバス転送速度よりも大きい場合は１つの前記バンクに関する転送速度が前記バス転送速度よりも小さくなるように書き込み可能状態とする前記バンクの数を複数に設定する請求項２に記載の半導体装置。
【請求項４】
前記ネットワークレイヤ制御部には、前記中間層毎に、前記バンクを読み書きのいずれの状態とするか、前記バンクに対して順次アクセスとするか並列アクセスとするかを記述したメモリ設定情報が与えられ、前記ネットワークレイヤ制御部は、前記メモリ設定情報に基づき前記メモリ制御部を制御する請求項１に記載の半導体装置。
【請求項５】
前記畳み込みニューラルネットワークの構成を示すネットワーク構成情報及び前記畳み込みニューラルネットワークの初段に位置する入力層に与えられる入力画像の画像サイズを示す入力画像サイズ情報と、前記メモリ制御部のバス帯域幅及び前記メモリのバンク構成を示すメモリ構成情報と、に基づき前記メモリ設定情報を生成する主演算部を更に有する請求項４に記載の半導体装置。
【請求項６】
前記レイヤ演算部は、
前記処理対象画像データに所定の画像サイズのフィルタを重ね合わせ、当該重ね合わせ箇所をずらしながら、各重ね合わせ場所において、前記処理対象画像データの画素値と前記フィルタの画素値との積を算出し、前記フィルタに含まれる画素に関する前記積の総和を演算して積和演算結果画像を生成する畳み込み積和演算部と、
前記積和演算結果画像の画素を所定サイズ毎にグルーピングし、前記グルーピングを行った画素中の代表値を新たな画素値とし、前記新たな画素値から構成される処理後画像を生成するプーリング処理部と、を有する請求項１に記載の半導体装置。
【請求項７】
前記レイヤ演算部は、
前記畳み込み積和演算部と前記プーリング処理部との間に、前記積和演算結果画像に含まれる画素値に対して画素値が予め設定した条件を満たさない場合は前記画素値を規定値に置き換える所定の活性化関数を適用して、前記積和演算結果画像の活性化処理を行う活性化処理部を有する請求項６に記載の半導体装置。
【請求項８】
前記レイヤ演算部は、入力データを選択的に前記畳み込み積和演算部に渡す第１の選択部と、前記プーリング処理部から出力される出力データを選択的に前記メモリ制御部に出力する第２の選択部と、を有する請求項６に記載の半導体装置。
【請求項９】
前記半導体装置の外部に設けられた外部メモリと、
前記メモリ制御部と前記外部メモリとの間のデータの送受信を制御するローカルバスと、を更に有し、
前記メモリ制御部は、前記ネットワークレイヤ制御部の指示に基づき、前記バンクに格納されたデータを前記外部メモリに退避させる退避処理と、前記外部メモリに格納されたデータを前記バンクに補充する補充処理と、を前記中間層に関する処理の実行状態にかかわらずに実行する請求項１に記載の半導体装置。
【請求項１０】
前記外部メモリは、複数のメモリバンクを有し、前記メモリバンク毎に前記退避処理と前記補充処理に関するデータを格納する請求項９に記載の半導体装置。
【請求項１１】
前記畳み込みニューラルネットワークに関する処理のうち入力画像に所定のフィルタを適用した畳み込み演算を行う畳み込み処理層に関する処理を行うアクセラレータ部と、
前記アクセラレータ部の出力結果に基づき前記入力画像を判断する全結合層に関する処理を行う主演算部と、を有し、
前記アクセラレータ部は、前記レイヤ演算部と、前記メモリと、前記メモリ制御部と、前記ネットワークレイヤ制御部と、を有する請求項１に記載の半導体装置。
【請求項１２】
畳み込みニューラルネットワークを構成する複数の中間層について中間層毎に処理対象画像データの要素に対する畳み込み積和演算を含む演算処理を行うレイヤ演算部と、
前記畳み込みニューラルネットワークを構成する中間層における前記レイヤ演算部の入出力データを格納し、それぞれが独立して読み書き可能な複数のバンクから構成されるメモリと、
前記バンク単位で読み出し可能状態と書き込み可能状態とを切り替えると共に前記レイヤ演算部と前記メモリとのデータの送受信をルーティングするメモリ制御部と、
前記畳み込みニューラルネットワークを構成する中間層の入力データと出力データのそれぞれの転送量と転送速度に応じて、前記中間層の入力データまたは出力データを格納する前記バンクの読み書き状態の割り当てを切り換えるようにメモリ制御部を制御するネットワークレイヤ制御部と、を有する半導体装置のメモリアクセス設定方法であって、
前記複数の中間層に含まれる１つの中間層を現中間層とした場合において、
現中間層の前記入力データを格納する転送元バンクの数を示す転送元バンク割り当てを、前記現中間層の前段に配置される前段中間層の前記出力データを格納する転送先バンク数と同じ値に設定し、
現中間層の前記転送元バンクへのアクセス方法を示す転送元アクセス方法を、前記前段中間層の前記出力データの読み出しに用いる転送先アクセス方法と同じ方法に設定し、
現中間層の前記出力データを格納する転送先バンクの数を示す転送先バンク割り当てを、前記現中間層の前記出力データの転送量及び前記出力データの転送速度と、前記現中間層の後段に配置される後段中間層の前記入力データの転送速度と、のいずれの条件も満たすように設定し、
前記現中間層の前記転送先バンクへのアクセス方法を示す転送先アクセス方法は、前記現中間層の前記出力データの転送速度と、前記後段中間層の前記入力データの転送速度と、の両方の条件を満たすよう設定する半導体装置のメモリアクセス設定方法。
【請求項１３】
前記転送先バンク割り当てとなる転送先割り当てバンク数について、
前記現中間層の前記出力データを格納可能な前記バンクの数を第１の転送先割り当てバンク数として算出し、
前記バンク１つ当たりの最大帯域を整数倍した転送可能帯域が、前記現中間層の前記出力データの転送速度よりも小さくなるときの倍数を第１の転送先並列アクセス数として算出し、
前記第１の転送先割り当てバンク数と前記第１の転送先並列アクセス数とのうち大きい値の数により、前記第１の転送先割り当てバンク数と前記第１の転送先並列アクセス数とのうち小さい方の値を更新し、
前記バンク１つ当たりの最大帯域を整数倍した転送可能帯域が、前記後段中間層の前記入力データの転送速度よりも小さくなるときの倍数を第２の転送先並列アクセス数として算出し、
前記第２の転送先並列アクセス数が前記第１の転送先並列アクセス数よりも小さい場合には、前記転送先割り当てバンク数として前記第２の割り当てバンク数以上の数を設定し、
前記第２の転送先並列アクセス数が前記第１の転送先並列アクセス数よりも大きい場合には、前記転送先割り当てバンク数として前記第１の転送先割り当てバンク数と前記第２の転送先並列アクセス数のうちの大きな方の値以上の数を設定し、
前記転送先アクセス方法について、
前記第１の転送先並列アクセス数と前記第２の転送先並列アクセス数との少なくとも一方が２以上の値となるときに並列に設定し、前記第１の転送先並列アクセス数と前記第２の転送先並列アクセス数との両方が１であるときに順次に設定する請求項１２に記載の半導体装置のメモリアクセス設定方法。
【請求項１４】
前記前段中間層が存在しない場合に、
前記現中間層の前記転送元バンク割り当てとなる転送元割り当てバンク数について、
前記現中間層の前記入力データを格納可能な前記バンクの数を第１の転送元割り当てバンク数として算出し、
前記バンク１つ当たりの最大帯域を整数倍した転送可能帯域が、前記現中間層の前記入力データの転送速度よりも小さくなるときの倍数を転送元並列アクセス数として算出し、
前記転送元並列アクセス数が１となる場合には、前記転送先割り当てバンク数として前記第１の割り当てバンク数を設定し、
前記転送元並列アクセス数が２以上となる場合には、前記転送元割り当てバンク数として、前記第１の転送元割り当てバンク数を前記転送元並列アクセス数の整数倍の数となるように更新した第２の転送先割り当てバンク数を設定し、
前記転送元アクセス方法を、
前記転送元並列アクセス数が２以上の値となるときに並列に設定され、前記転送元並列アクセス数が１であるときに順次に設定される請求項１２に記載の半導体装置のメモリアクセス設定方法。
【請求項１５】
畳み込みニューラルネットワークを構成する複数の中間層について中間層毎に処理対象画像データの要素に対する畳み込み積和演算を含む演算処理を行うレイヤ演算部と、
前記畳み込みニューラルネットワークを構成する中間層における前記レイヤ演算部の入出力データを格納し、それぞれが独立して読み書き可能な複数のバンクから構成されるメモリと、
前記バンク単位で読み出し可能状態と書き込み可能状態とを切り替えると共に前記レイヤ演算部と前記メモリとのデータの送受信をルーティングするメモリ制御部と、
前記畳み込みニューラルネットワークを構成する中間層の入力データと出力データのそれぞれの転送量と転送速度に応じて、並列してアクセスする前記中間層の入力データまたは出力データを格納する前記バンクの数を制御するネットワークレイヤ制御部と、
を有する半導体装置。
【請求項１６】
前記ネットワークレイヤ制御部は、
前記入力データと前記出力データに関する前記転送量が増加したことに伴い、同一の読み書き属性に割り当てる前記バンクの数を増加させ、
前記入力データと前記出力データに関する前記転送速度が増加したことに伴い、並列してアクセス可能な前記バンクの数を増加させる請求項１５に記載の半導体装置。
【請求項１７】
前記ネットワークレイヤ制御部は、前記複数の中間層の連続する中間層のうち前段に配置される中間層を第１の中間層、後段に配置される中間層を第２の中間層とした場合、前記第１の中間層に関する処理において書き込み可能状態を割り当てたバンクを前記第２の中間層に関する処理において読み出し可能状態に割り当てるように前記メモリ制御部を制御する請求項１５に記載の半導体装置。
【請求項１８】
前記ネットワークレイヤ制御部は、
前記第１の中間層に入力される前記入力データの転送量が１つの前記バンクの容量よりも大きい場合は総容量が前記転送量よりも大きな容量を有するように読み出し可能状態とする前記バンクの数を複数に設定し、
前記第１の中間層から出力される前記出力データの転送量が１つの前記バンクの容量よりも大きい場合は総容量が前記転送量よりも大きな容量を有するように書き込み可能状態とする前記バンクの数を複数に設定し、
前記第１の中間層に入力される前記入力データの転送速度と、前記第２の中間層から出力される前記出力データの転送速度と、の少なくとも一方が前記メモリ制御部と前記バンクとを接続するバスの１バンク当たりのバス転送速度よりも大きい場合は１つの前記バンクに関する転送速度が前記バス転送速度よりも小さくなるように読み出し可能状態とする前記バンクの数を複数に設定し、
前記第１の中間層から出力される前記出力データの転送速度と、前記第２の中間層に入力される前記入力データの転送速度と、の少なくとも一方が前記メモリ制御部と前記バンクとを接続するバスのバス転送速度よりも大きい場合は１つの前記バンクに関する転送速度が前記バス転送速度よりも小さくなるように書き込み可能状態とする前記バンクの数を複数に設定する請求項１７に記載の半導体装置。
【請求項１９】
前記ネットワークレイヤ制御部には、前記中間層毎に、前記バンクを読み書きのいずれの状態とするか、前記バンクに対して順次アクセスとするか並列アクセスとするかを記述したメモリ設定情報が与えられ、前記ネットワークレイヤ制御部は、前記メモリ設定情報に基づき前記メモリ制御部を制御する請求項１５に記載の半導体装置。
【請求項２０】
前記畳み込みニューラルネットワークの構成を示すネットワーク構成情報及び前記畳み込みニューラルネットワークの初段に位置する入力層に与えられる入力画像の画像サイズを示す入力画像サイズ情報と、前記メモリ制御部のバス帯域幅及び前記メモリのバンク構成を示すメモリ構成情報と、に基づき前記メモリ設定情報を生成する主演算部を更に有する請求項１９に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置及びメモリアクセス設定方法に関し、例えば畳み込みニューラルネットワークに関する処理を行う半導体装置及びメモリアクセス設定方法に関する。
【背景技術】
【０００２】
近年、画像認識の分野において、ニューラルネットワークを用いた認識処理が多く提案されている。この画像処理の分野において利用されるニューラルネットワークの１つに畳み込みニューラルネットワーク（CNN：Convolution Neural Network）がある。この畳み込みニューラルネットワークに関する技術の一例が特許文献１に開示されている。
【０００３】
特許文献１に記載の演算処理装置では、階層的に接続された複数の処理層による演算を実行する演算処理装置が、演算部、外部メモリ、バッファを備える。そして、バッファは、データを書き出す場合には、当該データの一部をデータ保持領域に保持し、データ保持領域に保持しなかった残りのデータを、リングバッファ領域を介して先入先出方式により外部メモリに書き出す。また、バッファは、データを読み出す場合には、データ保持領域に保持されているデータを演算部に読み出し、データ保持領域に保持されていない残りのデータを、リングバッファ領域を介して先入先出方式により演算部に読み出す。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−１２６２０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
畳み込みニューラルネットワークでは、処理層毎に入出力データの転送量と転送速度に大きな変動が生じる特徴がある。しかし、特許文献１に記載の演算処理装置では、バッファの容量が一定である。そのため、特許文献１に記載の演算処理装置では、必要なデータ転送量、或いは、必要なデータ転送速度が増減した場合に、バッファ容量不足の発生、或いは、データの転送速度不足による外部メモリへのアクセスの発生があると、これらの変動により処理の停滞が発生して演算処理速度が低下するという問題があった。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、半導体装置は、畳み込みニューラルネットワークを構成する複数の中間層についての演算を、バンク単位で読み書き状態を切り替えることができる複数のバンクを有するメモリを用いて行うアクセラレータ部を有し、前記アクセラレータ部が、畳み込みニューラルネットワークを構成する中間層の入力データと出力データのそれぞれの転送量と転送速度に応じて、中間層の入力データまたは出力データを格納するバンクの読み書き状態の割り当てを切り換えるようにメモリ制御部を制御するネットワークレイヤ制御部を有する。
【発明の効果】
【０００８】
前記一実施の形態によれば、半導体装置は、中間層毎にバンクの読み書き状態の割り当てを変更することで、高い処理速度を維持することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１にかかる畳み込みニューラルネットワークの処理の概要を説明するブロック図である。
【図２】実施の形態１にかかる畳み込みニューラルネットワークの畳み込み処理層の処理の概要を説明するフロー図である。
【図３】実施の形態１にかかる畳み込みニューラルネットワークの畳み込み積和演算を説明する図である。
【図４】実施の形態１にかかる半導体装置のブロック図である。
【図５】実施の形態１にかかるアクセラレータ部のメモリの構成を説明するブロック図である。
【図６】実施の形態１にかかるアクセラレータ部のネットワークレイヤ制御部及びメモリ制御部の構成を説明するブロック図である。
【図７】実施の形態１にかかるレイヤ演算部のブロック図である。
【図８】実施の形態１にかかる半導体装置の畳み込み演算処理を開始するまでの動作を説明するシーケンス図である。
【図９】実施の形態１にかかる半導体装置における動作設定情報を説明する図である。
【図１０】実施の形態１にかかる半導体装置の転送元バンク割り当て及び転送元アクセス方法を決定する手順を示すフローチャートである。
【図１１】実施の形態１にかかる半導体装置の転送先バンク割り当て及び転送先アクセス方法を決定する手順を示すフローチャートである。
【図１２】実施の形態１にかかる半導体装置の動作を説明するタイミングチャートである。
【図１３】実施の形態１にかかる半導体装置の第１レイヤに関する処理を行う場合のデータ転送状態を説明する図である。
【図１４】実施の形態１にかかる半導体装置の第２レイヤに関する処理を行う場合のデータ転送状態を説明する図である。
【図１５】実施の形態１にかかる半導体装置の第３レイヤに関する処理を行う場合のデータ転送状態を説明する図である。
【図１６】実施の形態２にかかるアクセラレータ部のネットワークレイヤ制御部及びメモリ制御部の構成を説明するブロック図である。
【図１７】実施の形態２にかかる半導体装置の動作を説明するタイミングチャートである。
【図１８】実施の形態２にかかる半導体装置におけるデータ補充時のデータ転送経路を説明する図である。
【図１９】実施の形態２にかかる半導体装置におけるデータ退避時のデータ転送経路を説明する図である。
【図２０】比較例にかかる半導体装置の動作を説明するタイミングチャートである。
【図２１】実施の形態３にかかる半導体装置のブロック図である。
【発明を実施するための形態】
【００１０】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ（Central Processing Unit）、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１１】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００１２】
実施の形態１にかかる半導体装置では、処理の１つとして畳み込みニューラルネットワークを用いた画像認識処理を行う。そこで、この畳み込みニューラルネットワークの処理について説明する。図１に実施の形態１にかかる畳み込みニューラルネットワークの処理の概要を説明するブロック図を示す。なお、図１に示す例は、畳み込みニューラルネットワークの処理の一例を示すものであり、畳み込みニューラルネットワークには他の形式もある。
【００１３】
図１に示すように、畳み込みニューラルネットワークは、処理対象画像データにフィルタを適用して処理対象画像の特徴点を抽出する畳み込み処理層と、２次元配列の画像データを１次元配列データに変換し、処理対象画像データが何を示しているものかを判断する全結合層とを有する。
【００１４】
畳み込み処理層は、複数の層のそれぞれで異なるフィルタを適用した畳み込み積和演算を行う。また、図１に示す例では、畳み込み処理層が第１レイヤから第３レイヤを有し、第１レイヤから第３レイヤに向かって順次処理を進める。また、各レイヤの入出力データはメモリを介して伝達される。図１に示す例では、第１レイヤにおいて、畳み込み積和演算Ｐ１とプーリング処理Ｐ２とが行われ、第２レイヤにおいては畳み込み演算Ｐ３のみが行われ、第３レイヤにおいて畳み込み積和演算Ｐ４とプーリング処理Ｐ５が行われる。
【００１５】
また、この畳み込み処理層の各レイヤの処理により入出力データの転送量と転送速度が大きく変動する。例えば、第１レイヤでは、入力データが転送量５０ｋＢ、転送速度３．８ＧＢ／ｓで入力され、出力データが転送量２００ｋＢで転送速度２０ＧＢ／ｓで出力される。第２レイヤでは、入力データが転送量２００ｋＢ、転送速度２０ＧＢ／ｓで入力され、出力データが転送量１００ｋＢで転送速度２０ＧＢ／ｓで出力される。第３レイヤでは、入力データが転送量１００ｋＢ、転送速度２０ＧＢ／ｓで入力され、出力データが転送量２００ｋＢで転送速度５０ＧＢ／ｓで出力される。
【００１６】
全結合層では、畳み込み処理層で生成された２次元配列データに対して全結合ニューラルネットワーク（FCNN：Fully Connected Neural Network）を用いた演算が行われる。図１に示す例では、全結合層は３つのレイヤを有し、２つの全結合ニューラルネットワークの処理と、１つのソフトマックス関数による判断処理が行われる。ソフトマックス関数は、活性化関数の１つであり、所定の値以上の入力値を強調し、所定の値よりも小さい入力値を減衰させる。そして、全結合層の出力値は、処理対象画像データがどのような内容の画像である可能性が最も高いかを示す値となる。図１に示す例では、処理対象画像データが手書き文字で表された数字の“２”である可能性が最も高い（数字の“２”である可能性が８１％）であるとの結果を示している。
【００１７】
実施の形態１にかかる半導体装置では、畳み込み処理層の演算をアクセラレータ部により行い、全結合層の演算を汎用的な演算を行う主演算部（例えば、ＣＰＵ）にて行う。実施の形態１にかかる半導体装置では、このようなアクセラレータ部と主演算部の２つの演算部により畳み込みニューラルネットワークによる画像認識処理を行うが、アクセラレータ部による畳み込み処理において効率的なハードウェアリソースの利用を行うための構成を有することに特徴の１つを有する。そこで、以下では、第１レイヤから第３レイヤで行われる処理についてより詳細に説明する。
【００１８】
図２に実施の形態１にかかる畳み込みニューラルネットワークの畳み込み処理層の処理の概要を説明するフロー図を示す。図２に示す例は、畳み込み処理層の１つのレイヤの処理を示したものである。なお、図１に示した第２レイヤでは、図２に示したプーリング処理は行われない。また、畳み込み処理層に属する各レイヤでは、畳み込み積和演算後に所定の活性関数を用いた活性化処理が行われることがあるが、図２では、この活性化処理については省略した。
【００１９】
図２に示すように畳み込み処理層では、１つのレイヤ内で畳み込み積和演算とプーリング処理が行われる。畳み込み演算処理では、例えば、縦横の画素数がそれぞれ２８画素の処理対象画像データに、縦横の画素数がそれぞれ５画素のフィルタを重ね合わせ、重ね合わせた時に同一の位置にある画素の値を積算し、フィルタ中の全画素の積算値を全て加算して新たな画素値を得る。この畳み込み積和演算処理について、図３を参照して、より詳細に説明する。
【００２０】
図３は、実施の形態１にかかる畳み込みニューラルネットワークの畳み込み積和演算を説明する図である。図３では、６×６の処理対象画像データに３×３のフィルタを適用する例である。図３に示すように畳み込み積和演算では、処理対象画像データにフィルタを重ね合わせる。そして、重ね合わせた状態で同一の位置にある画素値同士の積算値を算出し、フィルタ中の全画素の積算値を全て加算することで畳み込み積和処理後の画像の１画素分の値を算出する。そして、１つの畳み込み演算処理では、処理対象画像データの全画素とフィルタが重ね合わせられるように、処理対象画像データにフィルタを重ね合わせる位置を１画素ずつずらす。そして、フィルタをずらした位置のそれぞれにおいて積和演算値を計算して、畳み込み積和処理後画像を生成する。このように、畳み込み積和演算では、膨大な回数の積算と加算とが行われる。このような決まった演算を膨大な回数行う場合はアクセラレータのような特定の演算をハードウェア的に処理することで演算時間を短縮することができる。なお、フィルタを重ね合わせる位置のずらし量（stride）は、１画素に限らず、ずらし量は任意に設定することができる。
【００２１】
そして、図２に示す例では、フィルタが２０枚準備されている。畳み込み積和演算処理では、フィルタのそれぞれについて、畳み込み演算処理後画像を生成する。そのため、畳み込み演算処理後画像は、フィルタの枚数分生成される。
【００２２】
また、図２に示すように、畳み込み処理層のレイヤでは、プーリング処理が行われる。図２に示す例では、プーリング処理の手法として、マックスプーリング処理を採用した。マックスプーリング処理は、例えば、畳み込み積和処理後画像の所定の領域を選択し、選択した領域中の最大値を、それらの画素の代表値とする画像データの圧縮方法である。
【００２３】
上述したように、畳み込みニューラルネットワークの畳み込み処理層では、各レイヤの処理により、レイヤ間で伝達されるデータの転送量の転送速度に大きな変動が生じる。そのため、畳み込み処理層が利用するメモリを一定の容量とする場合、処理能力を高めるためには各レイヤで伝達されるデータの最大転送量と最大転送速度を考慮したメモリの容量と転送速度を設定しなければならない。しかしながら、最大転送量と最大転送速度を考慮したメモリは、回路面積も大きく消費電力も高くなり、実際には実装できない可能性がある。そこで、実施の形態１にかかる半導体装置では、各レイヤの処理に合わせて、利用するメモリの容量と転送速度を可変することで、メモリの容量とメモリ内のバンク１つ当たりの転送速度を最大転送量と最大転送速度より小さく設定しながら、メモリの最大能力としては最大転送量と最大転送速度に十分対応することが出来る構成を有する。以下で、実施の形態１にかかる半導体装置について詳細に説明する。
【００２４】
図４に実施の形態１にかかる半導体装置１のブロック図を示す。図４に示すように、実施の形態１にかかる半導体装置１は、主演算部１０、アクセラレータ部１１、画像入力部１２、ローカルバス１４を有する。なお、図４では、半導体装置１が利用する外付け部品の１つとして外部メモリＥＸ＿ＭＥＭを示した。この外部メモリＥＸ＿ＭＥＭは、例えば、フラッシュメモリ等の不揮発性メモリ、或いは、ＤＤＲ−ＤＲＡＭ（Double Data Rate - Dynamic Random Access Memory）等の揮発性メモリである。
【００２５】
主演算部１０は、プログラムを実行可能なＣＰＵ等の演算部である。主演算部１０は、実行するプログラムの１つにおいて、外部メモリＥＸ＿ＭＥＭから読み込むユーザー設定情報に基づきアクセラレータ部１１に与える動作設定情報ＳＥＴ２を生成する。なお、動作設定情報ＳＥＴ２は一度生成した後に外部メモリＥＸ＿ＭＥＭに格納する、予め他の装置で生成して外部メモリＥＸ＿ＭＥＭに格納する等の処理を行い、半導体装置１の起動時に外部メモリＥＸ＿ＭＥＭから直接アクセラレータ部１１に読み込ませても良い。なお、図４では外部メモリＥＸ＿ＭＥＭから読み出した動作設定情報を動作設定情報ＳＥＴ１とした。つまり、動作設定情報ＳＥＴ１と動作設定情報ＳＥＴ２は同じものである。ここで、動作設定情報ＳＥＴ１を外部メモリＥＸ＿ＭＥＭに格納しておくことで、起動するたびに動作設定情報ＳＥＴ２を生成する必要がなく、起動時間を短縮することができる。また、主演算部１０は、実行するプログラムの１つによりアクセラレータ部１１の出力結果に基づき入力画像を判断する全結合層に関する処理を行う。主演算部１０は、全結合層に関する演算を行う場合、外部メモリＥＸ＿ＭＥＭを利用する。
【００２６】
アクセラレータ部１１は、畳み込みニューラルネットワークに関する処理のうち入力画像に所定のフィルタを適用した畳み込み演算を行う畳み込み処理層に関する処理を行う。また、アクセラレータ部１１は、ローカルバス１４により主演算部１０、画像入力部１２外部メモリＥＸ＿ＭＥＭと通信可能なように接続されている。
【００２７】
画像入力部１２は、半導体装置１の外部から処理対象画像データを読み出してアクセラレータ部１１に伝達する。
【００２８】
ここで、アクセラレータ部１１について詳細に説明する。アクセラレータ部１１は、ネットワークレイヤ制御部２０、レイヤ演算部２１、２２、メモリ制御部２３、メモリ２４、２５を有する。
【００２９】
ネットワークレイヤ制御部２０は、畳み込みニューラルネットワークを構成する中間層の入力データと出力データのそれぞれの転送量と転送速度に応じて、中間層の入力データまたは出力データを格納するメモリ２４、２５内に設けられるバンクの読み書き状態の割り当てを切り換えるようにメモリ制御部２３を制御する。また、ネットワークレイヤ制御部２０は、複数の中間層の連続する中間層のうち前段に配置される中間層を第１の中間層、後段に配置される中間層を第２の中間層とした場合、第１の中間層に関する処理において書き込み可能状態を割り当てたバンクを第２の中間層に関する処理において読み出し可能状態に割り当てるようにメモリ制御部２３を制御する。
【００３０】
より具体的には、ネットワークレイヤ制御部２０は、入力データと出力データに関する転送量が増加したことに伴い、同一の読み書き属性に割り当てるバンクの数を増加させ、入力データと出力データに関する転送速度が増加したことに伴い、並列してアクセス可能なバンクの数を増加させる。別の観点では、ネットワークレイヤ制御部２０は、中間層に入力される入力データの転送量が１つのバンクの容量よりも大きい場合は総容量が転送量よりも大きな容量を有するように読み出し可能状態とするバンクの数を設定する。また、ネットワークレイヤ制御部２０は、中間層から出力される出力データの転送量が１つのバンクの容量よりも大きい場合は総容量が転送量よりも大きな容量を有するように書き込み可能状態とするバンクの数を設定する。
【００３１】
また、ネットワークレイヤ制御部２０は、連続して配置される中間層の前段の中間層の出力データ、又は、後段の中間層の入力データの転送速度がメモリ制御部２３とバンクとを接続するバスの１バンク当たりのバス転送速度よりも大きい場合は１つのバンクに関する転送速度がバス転送速度よりも小さくなるように読み出し可能状態とするバンクの数を設定する。ネットワークレイヤ制御部２０は、中間層から出力される出力データの転送速度がメモリ制御部２３とバンクとを接続するバスのバス転送速度よりも大きい場合は１つのバンクに関する転送速度がバス転送速度よりも小さくなるように書き込み可能状態とするバンクの数を設定する。つまり、ネットワークレイヤ制御部２０は、連続する中間層の間でデータの受け渡しを行うバンクへの書き込み時の転送量及び転送速度と、読み出し時の転送量及び転送速度と、の両方を満たすようにバンクの書き込み状態を設定する。
【００３２】
レイヤ演算部２１、２２は、同じ処理を行う処理ブロックである。レイヤ演算部２１、２２は、それぞれ、畳み込みニューラルネットワークを構成する複数の中間層について中間層毎に処理対象画像データの要素に対する畳み込み積和演算を含む演算処理を行う。より具体的には、レイヤ演算部２１、２２は、一例としては、処理対象画像データにフィルタを適用して新たな画像（いわゆる、特徴マップ）を生成する畳み込み積和演算と、畳み込み積和演算により生成された特徴マップに対して所定の活性化関数を適用して各画素値を活性化させる活性化処理と、特徴マップを圧縮するプーリング処理とを行う。
【００３３】
メモリ制御部２３は、メモリ２４、２５内のアクセス単位であるバンク毎に読み出し可能状態と書き込み可能状態とを切り替えると共にレイヤ演算部２１、２２とメモリ２４、２５とのデータの送受信をルーティングする。
【００３４】
メモリ２４、２５は、メモリ制御部２３を介してレイヤ演算部２１、２２により利用される記憶領域である。メモリ２４、２５は、畳み込みニューラルネットワークを構成する中間層におけるレイヤ演算部２１、２２の入出力データを格納し、それぞれが独立して読み書き可能な複数のバンクから構成される。
【００３５】
図４に示す例では、アクセラレータ部１１において２つのレイヤ演算部でネットワークレイヤ制御部２０とメモリ制御部２３を共有する。レイヤ演算部は、１つの演算部で処理できる画像の枚数が決まっている。そこで、処理対象画像の枚数が多くなったときには、複数のレイヤ演算部を用いて多くの画像を並列して処理する。つまり、アクセラレータ部１１では、処理対象画像の枚数に応じて並列して動作させるレイヤ演算部の数を増減させる。これにより、実施の形態１にかかる半導体装置１では、処理する画像の枚数が少ない場合には動作させるレイヤ演算部の数を減らして消費電力を抑制する。
【００３６】
また、実施の形態１にかかる半導体装置１は、２つのレイヤ演算部で１組のネットワークレイヤ制御部２０とメモリ制御部２３を共有する。このような構成を取ることで、実施の形態１にかかる半導体装置１は、レイヤ演算部間でメモリの利用領域、或いは、データの干渉防止を容易に行うことができる。
【００３７】
実施の形態１にかかる半導体装置１では、メモリ内のバンクの割り当て及び利用方法に特徴の１つがあるため、レイヤ演算部及びメモリについては、それぞれ１つのみを示して説明を行うことで実施の形態１にかかる半導体装置１の動作の説明を簡潔かつ明確にする。なお、レイヤ演算部２２は、レイヤ演算部２１と同じ動作を行い、メモリ２５はメモリ２４と同じ構成及び動作を行うものとする。
【００３８】
ここで、アクセラレータ部１１についてより詳細に説明する。図５に実施の形態１にかかるアクセラレータ部１１のメモリ２４の構成を説明するブロック図を示す。図５に示すように、メモリ２４は、複数のバンクを有する。図５に示す例では、メモリ２４は、バンク３１１〜３１ｎ（ｎはバンク数を表す整数、以下同じ）を有する。バンク３１１〜３１ｎは、それぞれ、独立してメモリ制御部２３と通信可能である。また、バンク３１１〜３１ｎは、それぞれ、独立して読み出し可能状態（リード状態）と書き込み可能状態（ライト状態）とを切り替えることが可能である。メモリ制御部２３は、バンク単位でリードライト指示信号（図５のＲ／Ｗ指示信号）を与えて、バンク単位で読み書き状態を制御する。各バンクに用いられるメモリは、例えば、ＳＲＡＭ（Static Random Access Memory）等の高速アクセスが可能な記憶素子を用いる。
【００３９】
続いて、図６に実施の形態１にかかるアクセラレータ部１１のネットワークレイヤ制御部２０及びメモリ制御部２３の構成を説明するブロック図を示す。
【００４０】
ネットワークレイヤ制御部２０には、演算処理情報ＣＡＬ＿ＳＥＴとメモリ設定情報ＭＥＭ＿ＳＥＴを含む動作設定情報ＳＥＴ１（又は動作設定情報ＳＥＴ２、以下の説明では動作設定情報ＳＥＴ２に基づいてネットワークレイヤ制御部２０が動作するものとして説明する）が与えられる。演算処理情報ＣＡＬ＿ＳＥＴは、中間層毎の、レイヤ演算部２１が実行する畳み込み積和演算、レイヤ演算部２１で適用される活性化関数、レイヤ演算部２１で適用されるプーリング処理の種類を示す情報が含まれる。ネットワークレイヤ制御部２０は、この演算処理情報ＣＡＬ＿ＳＥＴに基づきレイヤ演算部２１を制御する。また、メモリ設定情報ＭＥＭ＿ＳＥＴは、中間層毎の、バンクを読み書きのいずれの状態とするかを指定する設定値、バンクに対して順次アクセスとするか並列アクセスとするかを記述した設定値が含まれる。そして、ネットワークレイヤ制御部２０は、メモリ設定情報ＭＥＭ＿ＳＥＴに基づきメモリ制御部２３を制御する。具体的には、ネットワークレイヤ制御部２０及びメモリ制御部２３の構成及び動作は以下のようになる。
【００４１】
図６に示すように、ネットワークレイヤ制御部２０は、リスト解析処理部３３、演算制御部３４、バンク管理部３５を有する。リスト解析処理部３３は、動作設定情報ＳＥＴ２を受信すると、受信した動作設定情報を解析して、動作設定情報に含まれる演算処理情報ＣＡＬ＿ＳＥＴとメモリ設定情報ＭＥＭ＿ＳＥＴとを抽出する。そして、リスト解析処理部３３は抽出した演算処理情報ＣＡＬ＿ＳＥＴを演算制御部３４に出力し、メモリ設定情報ＭＥＭ＿ＳＥＴをバンク管理部３５に出力する。ここで、リスト解析処理部３３は、レイヤ演算部２１の処理が完了したことを通知するビジー信号ＢＳ１とメモリ制御部２３の処理が完了したことを通知するビジー信号ＢＳ２との両方を監視する。また、詳しくは後述するが、動作設定情報ＳＥＴ２には、畳み込み層のレイヤ毎に演算処理情報ＣＡＬ＿ＳＥＴ及びメモリ設定情報ＭＥＭ＿ＳＥＴが記述される。リスト解析処理部３３は、ビジー信号ＢＳ１、ＢＳ２が両方ビジー状態解除となったことに応じて、演算制御部３４に与える演算処理情報ＣＡＬ＿ＳＥＴのレイヤ及びバンク管理部３５に与えるメモリ設定情報ＭＥＭ＿ＳＥＴのレイヤを切り替える。
【００４２】
演算制御部３４は、リスト解析処理部３３から受信した演算処理情報ＣＡＬ＿ＳＥＴに基づき演算処理情報ＣＡＬ＿ＳＥＴ中に記載された設定を反映した物理制御信号をレイヤ演算部２１に与える。バンク管理部３５は、リスト解析処理部３３から受信したメモリ設定情報ＭＥＭ＿ＳＥＴに基づきメモリ設定情報ＭＥＭ＿ＳＥＴ中に記載された設定を反映した物理制御信号をメモリ制御部２３のアクセス制御部３６に与える。
【００４３】
具体的には、演算制御部３４及びバンク管理部３５は、アドレスデコーダである。リスト解析処理部３３から出力される演算処理情報ＣＡＬ＿ＳＥＴ及びメモリ設定情報ＭＥＭ＿ＳＥＴには、設定値を与えるレジスタのアドレスとして論理アドレスが記載されている。そこで、実施の形態１にかかるアクセラレータ部１１では、演算制御部３４及びバンク管理部３５を用いて、演算処理情報ＣＡＬ＿ＳＥＴ及びメモリ設定情報ＭＥＭ＿ＳＥＴに記載されている論理アドレスを物理アドレスに変換する。そして、演算制御部３４は、物理アドレスに基づきレイヤ演算部２１のレジスタに演算処理情報ＣＡＬ＿ＳＥＴ（ＲＥＧ）で示された設定値を書き込む。また、バンク管理部３５は、変換した物理アドレスに基づきメモリ制御部２３のレジスタにメモリ設定情報ＭＥＭ＿ＳＥＴ（ＲＥＧ）で示された設定値を書き込む。なお、演算処理情報ＣＡＬ＿ＳＥＴ（ＲＥＧ）は、物理アドレスに各種設定値が対応付けられた演算処理情報ＣＡＬ＿ＳＥＴであり、設定値の内容としては演算処理情報ＣＡＬ＿ＳＥＴと同じものである。また、メモリ設定情報ＭＥＭ＿ＳＥＴ（ＲＥＧ）は、物理アドレスに各種設定値が対応付けられたメモリ設定情報ＭＥＭ＿ＳＥＴであり、設定値の内容としてはメモリ設定情報ＭＥＭ＿ＳＥＴと同じものである。
【００４４】
メモリ制御部２３は、アクセス制御部３６、選択回路３７を有する。アクセス制御部３６は、バンク管理部３５から与えられたメモリ設定情報ＭＥＭ＿ＳＥＴに基づき選択回路３７が仲介するデータの転送経路を設定する。選択回路３７は、レイヤ演算部２１に入力データの転送元となるバンクを選択し、レイヤ演算部２１から出力される出力データの転送先となるバンクを選択する。そして、メモリ制御部２３は、アクセス制御部３６及び選択回路３７により形成されたデータの転送経路でレイヤ演算部２１とメモリ２４中のバンクとのデータの送受信を行う。
【００４５】
続いて、レイヤ演算部２１について詳細に説明する。図７に実施の形態１にかかるレイヤ演算部２１のブロック図を示す。なお、レイヤ演算部２２はレイヤ演算部２１と同じ構成であるため、ここではレイヤ演算部２１について説明を行う。また、レイヤ演算部２１には複数の形態が考えられるため、図７では２つの回路形態を示した。図７の上図が第１の形態となるレイヤ演算部２１ａであり、図７の下図が第２の形態となるレイヤ演算部２１ｂである。
【００４６】
レイヤ演算部２１ａは、畳み込み積和演算部４０、活性化処理部４１、プーリング処理部４２を有する。畳み込み積和演算部４０は、処理対象画像データに所定の画像サイズのフィルタを重ね合わせ、当該重ね合わせ箇所をずらしながら、各重ね合わせ場所において、処理対象画像データの画素値とフィルタの画素値との積を算出し、フィルタに含まれる画素に関する積の総和を演算して積和演算結果画像を生成する。なお、畳み込み積和演算部４０で用いるフィルタ、フィルタの種類の数を示す入力チャンネル数、出力される積和演算結果画像の数を示す出力チャンネル数は、演算処理情報ＣＡＬ＿ＳＥＴにより指定される。
【００４７】
活性化処理部４１は、畳み込み積和演算部４０とプーリング処理部４２との間に設けられる。活性化処理部４１は、積和演算結果画像に含まれる画素値に対して画素値が予め設定した条件を満たさない場合は画素値を予め決定した規定値に置き換える所定の活性化関数を適用して、積和演算結果画像の活性化処理を行う。なお、畳み込み積和演算部４０で行う活性化処理で利用される活性化関数の種類は演算処理情報ＣＡＬ＿ＳＥＴにより指定される。活性化関数の一例としては、ＲｅＬＵ（Rectified Linear Unit, Rectifier, 正規化線形関数）がある。
【００４８】
プーリング処理部４２は、積和演算結果画像の画素を所定サイズ毎にグルーピングし、グルーピングを行った画素中の代表値を新たな画素値とし、新たな画素値から構成される処理後画像を生成する。なお、プーリング処理にてどのようなプーリング方法が用いられるかは演算処理情報ＣＡＬ＿ＳＥＴにより設定される。プーリング方法の一例として、マックスプーリング処理がある。
【００４９】
また、図７の下図に示すレイヤ演算部２１ｂは、レイヤ演算部２１ａに第１の選択回路（例えば、選択回路４３）及び第２の選択回路（例えば、選択回路４４）を追加したものである。選択回路４３は、入力データを選択的に畳み込み積和演算部４０に渡す。選択回路４４は、プーリング処理部４２から出力される出力データを選択的にメモリ制御部２３に出力する。この選択回路４３、４４を用いることで、同時に処理できるチャネル数は減るが、メモリ制御部２３からレイヤ演算部２１の間の配線を削減することができる。図７では、選択回路４３、４４をレイヤ演算部２１内に備える構成例を示したが、メモリ制御部２３の選択回路３７に設けてもよい。また、畳み込みニューラルネットワークの処理は一般的に層が進むにつれデータ転送量が少なくなる。そこで、選択回路３７において、複数のチャネルの結果をビット結合し、まとめて一つのチャネルで出力する方法もある。
【００５０】
続いて、実施の形態１にかかる半導体装置１の動作について説明する。まず、図８に実施の形態１にかかる半導体装置１の畳み込み演算処理を開始するまでの動作を説明するシーケンス図を示す。図８に示すように、実施の形態１にかかる半導体装置１では、起動するとまず、主演算部１０及びネットワークレイヤ制御部２０において初期設定処理を行う（ステップＳ１１、Ｓ２１）。この初期設定処理では、回路を予め指定された状態にするリセット処理を行う。
【００５１】
次いで、主演算部１０は、内蔵メモリ１３から動作条件を読み出す動作条件入力処理を行う（ステップＳ１２）。なお、ステップＳ１２の処理では、動作条件を外部から取得しても良い。続いて、主演算部１０は、入力された動作条件に従って、制御コマンドリスト（例えば、動作設定情報ＳＥＴ２）を生成する（ステップＳ１４）。そして、主演算部１０は、ステップＳ１４で生成された動作設定情報ＳＥＴ２をネットワークレイヤ制御部２０に送信し（ステップＳ１４）、ネットワークレイヤ制御部２０は、主演算部１０から動作設定情報ＳＥＴ２を受信する（ステップＳ２２）。
【００５２】
ネットワークレイヤ制御部２０は、動作設定情報ＳＥＴ２を受信すると受信した動作設定情報ＳＥＴ２をリスト解析処理部３３において解析する制御コマンドリスト解析処理を行う（ステップＳ２３）。ネットワークレイヤ制御部２０は、ステップＳ２３の解析処理の結果に基づき演算制御部３４及びバンク管理部３５がレイヤ演算部２１、２２及びメモリ制御部２３のレジスタに動作設定値を設定するレジスタ設定処理を行う（ステップＳ２４）。その後、ネットワークレイヤ制御部２０は、主演算部１０に準備完了通知を送信する（ステップＳ２５）。
【００５３】
主演算部１０は、ネットワークレイヤ制御部２０から準備完了通知を受信すると（ステップＳ１５）、ネットワークレイヤ制御部２０に動作開始指示を送信する（ステップＳ１６）。そして、動作開始指示を主演算部１０から受信したネットワークレイヤ制御部２０は、畳み込みニューラルネットワークの処理を開始する（ステップＳ２６）。
【００５４】
ここで、実施の形態１にかかる半導体装置１では、ネットワークレイヤ制御部２０に与える制御コマンドリストに基づきアクセラレータ部１１の動作が決まるため、この制御コマンドリスト（例えば、動作設定情報）の生成方法について詳細に説明する。そこで、図９に実施の形態１にかかる半導体装置１における動作設定情報を説明する図を示す。
【００５５】
図９では、主演算部１０が動作設定情報ＳＥＴ２を生成する例を示している。図９では、主演算部１０から伸びる矢印の先に動作設定情報ＳＥＴ２の一例を示した。主演算部１０は、外部メモリＥＸ＿ＭＥＭに格納された動作条件情報とハードウェア構成情報とに基づき動作設定情報ＳＥＴ２を生成する。動作条件情報は、半導体装置１を利用するユーザーから与えられる情報であり、外部メモリＥＸ＿ＭＥＭに格納される。この動作条件情報には、ネットワーク構成に関する情報と、半導体装置１に入力される入力画像のサイズを指定する入力画像サイズ情報が少なくとも含まれる。ハードウェア構成情報は、例えば、半導体装置１を提供するメーカー側で準備する情報であり、外部メモリＥＸ＿ＭＥＭに格納される。ハードウェア構成情報には、メモリ２４内のバンクとメモリ制御部２３とを接続するバスのバンク毎のバス帯域情報（図９のバス帯域幅）と、メモリ２４のバンクの容量及び個数を示すメモリ構成情報（図９のメモリ構成）と、が少なくとも含まれる。
【００５６】
続いて、主演算部１０が生成する動作設定情報ＳＥＴ２について図９に示した例を参照して説明する。図９に示すように、動作設定情報ＳＥＴ２には、メモリ設定情報ＭＥＭ＿ＳＥＴと演算処理情報ＣＡＬ＿ＳＥＴが含まれる。図９では、表形式を用いて動作設定情報ＳＥＴ２を表したが動作設定情報ＳＥＴ２は、例えば、ソースコードのような形式で表されていてもよい。図９に示す例では、縦方向に動作設定情報ＳＥＴ２に含まれる設定パラメータを示し、横方向に各設定パラメータの値を示した。また、図９に示すように、動作設定情報ＳＥＴ２は、畳み込み処理層毎に各設定パラメータが記述される。さらに、図９に示す例では、動作においてアクセラレータ部１１がどのメモリを利用し、利用するメモリ内のバンクが有する記憶容量を示す初期設定値を示した。
【００５７】
続いて、図９に示した各設定パラメータについて説明する。メモリ設定情報ＭＥＭ＿ＳＥＴには、設定パラメータとして、バンクサイズ、転送元バンク割り当て、転送元アクセス方法、転送先バンク割り当て及び転送先アクセス方法が少なくとも含まれる。バンクサイズは、メモリ２４に含まれるバンクのうち畳み込み処理層の中間層の処理で利用するバンクの番号及び利用するバンクの記憶容量を示す設定パラメータである。主演算部１０は、ハードウェア構成情報のメモリ構成情報と、動作条件情報のネットワーク構成及び入力画像サイズから中間層の演算で必要になるデータの最大容量と最大転送帯域とを勘案して、バンクサイズで指定するバンクの番号（或いは個数）を決定する。また、主演算部１０は、メモリ構成情報に基づき、利用するバンクの記憶容量を決定する。
【００５８】
転送元バンク割り当ては、初期設定値においては転送元メモリとして利用するメモリを指定する設定パラメータである。また、転送元バンク割り当ては、各中間層の設定値（図９の第１レイヤ設定値から第３レイヤ設定値）においては、各レイヤの処理で利用するバンクを指定する設定パラメータである。この転送元バンク割り当ては、パラメータ生成の対象となる対象レイヤの入力データの転送量と、対象レイヤの前段に位置する前段レイヤの出力データの転送量と、とを満足するようにバンクの個数を決定する。また、転送元バンク割り当てに記述するバンクの番号は、対象レイヤの処理を行う時点で空いているバンクを指定する。
【００５９】
また、転送元バンク割り当てに記述するバンクの数は、データの転送速度によっても増減する。例えば、対象レイヤの入力データの転送速度と前段レイヤの出力データの転送速度のいずれか一方がバンク１つ当たりのバスの最大帯域を上回っていれば、バンク１つ当たりの転送速度がバスの最大帯域を下回るようにアクセスするバンクの数を増やす。
【００６０】
ここで、実施の形態１にかかる半導体装置１におけるデータの転送量について説明する。畳み込みニューラルネットワークでは、各中間層において適用されるフィルタが予め判明しており、入力される画像データのデータサイズも既知である。そして、プーリング処理の方法もネットワーク構成情報から明らかである。つまり、畳み込み積和演算後にどの程度データが圧縮されるかも予め把握することができる。このようなことから、実施の形態１にかかる半導体装置１では、各中間層に入力される入力データのデータサイズ、各中間層で適用されるフィルタの種類と、プーリング処理の圧縮率から出力データのデータサイズを知ることができる。そこで、実施の形態１にかかる半導体装置１では、この出力データのデータサイズは、出力データの転送量及び入力データの転送量として用いる。
【００６１】
また、実施の形態１にかかる半導体装置１における転送速度について説明する。実施の形態１にかかる半導体装置１では、入力データの転送速度は、レイヤ演算部２１の入力データのデータ処理速度と同等の意味を有する。また、出力データの転送速度は、レイヤ演算部２１の出力データを生成するためのデータ処理速度を有する。より具体的には、レイヤ演算部２１に入力される画像データにフィルタを適用した畳み込み積和演算を行う。入力データの転送速度は、入力データのデータ容量（例えば、転送量）を、メモリ２４から読み出した入力データに対してこの畳み込み積和演算を行うために必要な時間で除算することで算出することが出来る。また、レイヤ演算部２１では、畳み込み積和演算、活性化処理及びプーリング処理を経て出力データが生成される。出力データの転送速度は、出力データの容量（例えば、転送量）を、これらの処理を経て出力データの出力が開始されてから出力データの出力が完了するまでの時間で除算することで算出出来る。つまり、データの転送速度は、レイヤ演算部２１の入力処理速度、或いは、出力処理速度と捉えることができる。このようなことから、本明細書では、レイヤ演算部２１の入力データのデータ処理速度及び出力データのデータ処理速度の指標として、データの転送速度との表現を用いる。
【００６２】
転送元アクセス方法は、転送元バンクに割り当てたバンクに対して順次アクセスを行うか、並列アクセスを行うかを指定する設定パラメータである。転送元アクセス方法は、パラメータ生成の対象となる対象レイヤの入力データの転送速度と、対象レイヤの前段に位置する前段レイヤの出力データの転送速度と、とを満足するようにバンクへのアクセス方法を決定する。具体的には、対象レイヤの入力データの転送速度と前段レイヤの出力データの転送速度のいずれか一方がバンク１つ当たりのバスの最大帯域を上回っていれば、バンク１つ当たりの転送速度が最大転送速度を下回るように並列アクセスするバンクの数を増やす。このような並列アクセスを行う場合、転送元アクセス方法は並列アクセスとなる。また、対象レイヤの入力データの転送速度と前段レイヤの出力データの転送速度の両方がバンク１つ当たりのバスの最大帯域を下回って、対象レイヤの転送元アクセス方法は、順次アクセスとなる。
【００６３】
転送先バンク割り当ては、初期設定値においては転送先メモリとして利用するメモリを指定する設定パラメータである。また、転送先バンク割り当ては、各中間層の設定値（図９の第１レイヤ設定値から第３レイヤ設定値）においては、各レイヤの処理で利用するバンクを指定する設定パラメータである。この転送先バンク割り当ては、パラメータ生成の対象となる対象レイヤの出力データの転送量と、対象レイヤの後段に位置する後段レイヤの入力データの転送量と、とを満足するようにバンクの個数を決定する。また、転送先バンク割り当てに記述するバンクの番号は、対象レイヤの処理を行う時点で空いているバンクを指定する。
【００６４】
また、転送先バンク割り当てに記述するバンクの数は、データの転送速度によっても増減する。例えば、対象レイヤの出力データの転送速度と後段レイヤの入力データの転送速度のいずれか一方がバンク１つ当たりのバスの最大帯域を上回っていれば、バンク１つ当たりの転送速度がバスの最大帯域を下回るようにアクセスするバンクの数を増やす。
【００６５】
転送先アクセス方法は、転送先バンクに割り当てたバンクに対して順次アクセスを行うか、並列アクセスを行うかを指定する設定パラメータである。転送先アクセス方法は、パラメータ生成の対象となる対象レイヤの出力データの転送速度と、対象レイヤの後段に位置する後段レイヤの入力データの転送速度と、とを満足するようにバンクへのアクセス方法を決定する。具体的には、対象レイヤの出力データの転送速度と後段レイヤの入力データの転送速度のいずれか一方がバンク１つ当たりのバスの最大帯域を上回っていれば、バンク１つ当たりの転送速度が最大転送速度を下回るように並列アクセスするバンクの数を増やす。このような並列アクセスを行う場合、転送先アクセス方法は並列アクセスとなる。また、対象レイヤの出力データの転送速度と後段レイヤの入力データの転送速度の両方がバンク１つ当たりのバスの最大帯域を下回って、対象レイヤの転送先アクセス方法は、順次アクセスとなる。
【００６６】
上記のような設定方法に従って、決定した各設定パラメータの一例が図９のメモリ設定情報ＭＥＭ＿ＳＥＴである。なお、図９では、バンク番号を＃とバンク番号を示す数字との組み合わせで示した。
【００６７】
具体的には、図９に示した例は、畳み込み処理層の処理で各バンクの記憶容量が１２８ｋＢのメモリ２４のバンク＃１〜＃４を利用する例である。そのため、メモリ設定情報ＭＥＭ＿ＳＥＴの初期設定値では、バンクサイズにバンク＃１〜＃４がそれぞれ１２８ｋＢの容量を有することが記述され、転送元バンク割り当てと、転送先バンク割り当てにメモリ２４が記述される。
【００６８】
また、図９に示すメモリ設定情報ＭＥＭ＿ＳＥＴの例では、第１レイヤ設定値として、転送元バンク割り当てにバンク＃１、転送先バンク割り当てにバンク＃３、＃４、転送先アクセス方法に順次アクセスであることが記述される。なお、第１レイヤの転送元バンク割り当てに記述されるバンクは１つであるため、転送元アクセス方法は指定しなくても順次アクセスとなる。
【００６９】
第２レイヤ設定値としては、転送元バンク割り当てにバンク＃３、＃４、転送元アクセス方法に順次アクセスであること、転送先バンク割り当てにバンク＃１、＃２、転送先アクセス方法に並列アクセスであることが記述される。なお、第２レイヤ設定値の転送元バンク割り当て及び転送元アクセス方法は、第１レイヤ設定値の転送先バンク割り当て及び転送先アクセス方法と同じである。これは、第２レイヤが、第１レイヤでの処理結果に対して処理を行うためであり、前段レイヤの処理結果が格納されているバンクを次段レイヤの転送元バンクとすることが処理効率の向上に有利であるためである。
【００７０】
第３レイヤ設定値としては、転送元バンク割り当てにバンク＃１、＃２、転送元アクセス方法に並列アクセスであること、転送先バンク割り当てにバンク＃３、＃４、転送先アクセス方法に並列アクセスであることが記述される。なお、第３レイヤ設定値においても、第２レイヤ設定値と同様に、転送元バンク割り当て及び転送元アクセス方法が前段の第２レイヤ設定値の転送先バンク割り当て及び転送先アクセス方法と同じに設定される。
【００７１】
図９に示したメモリ設定情報ＭＥＭ＿ＳＥＴの例に基づく動作は、図１３〜図１５を用いて更に具体的に説明する。
【００７２】
続いて、動作設定情報ＳＥＴ２に含まれる演算処理情報ＣＡＬ＿ＳＥＴについて説明する。図９に示す例では、演算処理情報ＣＡＬ＿ＳＥＴに含まれる設定パラメータとして、演算精度、入力チャンネル数（図９の入力ｃｈ数）、出力チャンネル数（図９の出力ｃｈ数）、フィルタ係数、活性化関数、プーリング方法を有する。この演算処理情報ＣＡＬ＿ＳＥＴに含まれる設定パラメータは、動作条件情報のネットワーク構成により決定されるものである。
【００７３】
演算精度は、レイヤ演算部２１における演算精度である。図９に示す例では、第１レイヤ設定値から第３レイヤ設定値まで、演算精度は８ビットの整数精度が指定される。
【００７４】
入力チャンネル数は、各レイヤに入力される処理対象画像（例えば、入力データ）の数を示すパラメータである。図９に示す例では、第１レイヤの入力チャネル数として“１”、第２レイヤの入力チャネル数として“１６”、第３レイヤの入力チャネル数として“１６”を指定している。
【００７５】
出力チャンネル数は、各レイヤから出力される画像データ（例えば、出力データ）の数を示すパラメータである。図９に示す例では、第１レイヤの出力チャネル数として“１６”、第２レイヤの出力チャネル数として“１６”、第３レイヤの出力チャネル数として“３２”を指定している。畳み込みニューラルネットワークでは、入力データに適用するフィルタのグループ数に応じて出力チャネル数が決まる。
【００７６】
フィルタ係数は、フィルタのサイズ及び係数セットを特定する情報を示すパラメータである。図９に示す例では、第１レイヤのフィルタ係数として５×５の大きさを有するフィルタであって、係数セット１で指定されるフィルタ群が指定される。第２レイヤのフィルタ係数としては、３×３の大きさを有するフィルタであって、係数セット２で指定されるフィルタ群が指定される。第３レイヤのフィルタ係数としては、３×３の大きさを有するフィルタであって、係数セット３で指定されるフィルタ群が指定される。
【００７７】
活性化関数は、活性化処理部４１で用いられる活性化関数を指定するパラメータである。図９に示す例では、第１レイヤから第３レイヤの全てでＲｅＬＵを活性化関数として指定する。プーリング方法は、プーリング処理部４２で行われるプーリング処理において適用されるプーリング方法を指定するパラメータである。図９で示す例では、第１レイヤから第３レイヤの全てでマックスプーリングをプーリング方法として指定する。
【００７８】
ここで、実施の形態１にかかる半導体装置１における転送元バンク割り当て、転送元アクセス方法、転送先バンク割り当て、及び、転送先アクセス方法の決定方法について詳細に説明する。
【００７９】
図１０に実施の形態１にかかる半導体装置１の転送元バンク割り当て及び転送元アクセス方法を決定する手順を示すフローチャートを示す。図１０に示すように、転送元バンクに関する設定を決める場合、前段レイヤの転送先バンク割り当て情報及び転送先アクセス方法情報の有無を確認する（ステップＳ３０）。そして、前段レイヤの転送先バンク割り当て情報及び転送先アクセス方法情報が存在する場合は、転送元バンク割り当てと転送元アクセス方法に前段レイヤの転送元バンク割り当てと転送元アクセス方法を設定する（ステップＳ３１）。
【００８０】
一方、ステップＳ３０において、前段レイヤの転送先バンク割り当て情報及び転送先アクセス方法情報がないと判断された場合は、現レイヤの転送元バンク割り当て及び転送元アクセス方法を現レイヤの入力データの転送量及び転送速度に基づき決定する。
【００８１】
具体的には、まず現レイヤの入力データの転送量を格納可能な割り当てバンク数Ｎｉ１を算出する（ステップＳ３２）。このステップＳ３２では、入力データのデータサイズとバンク１つ当たりの記憶容量とを比較して、入力データを格納可能なバンク数を割り当てバンク数Ｎｉ１として算出する。
【００８２】
続いて、入力データの転送速度を満たす並列アクセス数Ｎｉ２を算出する（ステップＳ３３）。このステップＳ３３では、入力データの転送速度とバンク１つ当たりの最大帯域とを比較して、転送速度に対して最大帯域が大きければ並列アクセス数Ｎｉ２を１とし、転送速度に対して最大帯域が小さければ、転送速度を上回る値となるまで最大帯域を整数倍し、転送速度を上回る値となる倍数を並列アクセス数Ｎｉ２とする。
【００８３】
続いて、並列アクセス数Ｎｉ２が１より大きいか否かを判断する（ステップＳ３４）。このステップＳ３４において、並列アクセス数Ｎｉ２が１であれば、転送元アクセス方法を“順次”に設定する（ステップＳ３５）。一方、ステップＳ３４において、並列アクセス数Ｎｉ２が１よりも大きい場合、転送元アクセス方法を“並列”に設定する（ステップＳ３６）。その後、割り当てバンク数Ｎｉ１と並列アクセス数Ｎｉ２との数を調整する。具体的には、割り当てバンク数Ｎｉ１と並列アクセス数Ｎｉ２と比較し、割り当てバンク数Ｎｉ１が並列アクセス数Ｎｉ２以上の値であれば、並列アクセス数Ｎｉ２の値を割り当てバンク数Ｎｉ１の値で更新することで割り当てバンク数Ｎｉ１と並列アクセス数Ｎｉ２とを一致させる（ステップＳ３７、Ｓ３８）。一方、割り当てバンク数Ｎｉ１が並列アクセス数Ｎｉ２よりも小さな値であれば、割り当てバンク数Ｎｉ１の値を並列アクセス数Ｎｉ２の値で更新することで割り当てバンク数Ｎｉ１と並列アクセス数Ｎｉ２とを一致させる（ステップＳ３７、Ｓ３９）。例えば、割り当てバンク数Ｎｉ１が３、並列アクセス数Ｎｉ２が２であった場合、ステップＳ３７、Ｓ３８の処理により並列アクセス数Ｎｉ２を２から３に更新する。また、別の例として、割り当てバンク数Ｎｉ１が１、並列アクセス数Ｎｉ２が２であった場合、ステップＳ３７、Ｓ３９の処理により割り当てバンク数Ｎｉ１を１から２に更新する。
【００８４】
図１０で説明した処理を実行することで、レイヤ毎にレイヤ演算部に入力するデータの転送量を満たし、かつ、データの転送速度を満たす最小構成の転送元割り当てバンク数（割り当てバンク数Ｎｉ１）とアクセス方法が決定される。なお、並列アクセス数Ｎｉ２は、転送元バンクへのアクセス方法を順次アクセスとするか、並列アクセスとするかの決定に用いられる。また、並列アクセス数Ｎｉ２は、割り当てバンク数Ｎｉ１よりも大きければ、並列アクセスを行う場合の割り当てバンク数Ｎｉ１の補正に用いられる。また、並列アクセス数Ｎｉ２は、割り当てバンク数Ｎｉ１よりも小さければ、割り当てバンク数Ｎｉ１に一致するように補正される。
【００８５】
続いて、図１１に実施の形態１にかかる半導体装置１の転送先バンク割り当て及び転送先アクセス方法を決定する手順を示すフローチャートを示す。図１１に示すように、転送先バンクに関する設定を決める場合、まず、現レイヤの出力データの転送量及び転送速度に基づき決定する。
【００８６】
具体的には、現レイヤの出力データの転送量を格納可能な割り当てバンク数Ｎｏ１を算出する（ステップＳ４０）。このステップＳ４０では、出力データのデータサイズとバンク１つ当たりの記憶容量とを比較して、出力データを格納可能なバンク数を割り当てバンク数Ｎｏ１として算出する。
【００８７】
続いて、出力データの転送速度を満たす並列アクセス数Ｎｏ２を算出する（ステップＳ４１）。このステップＳ４１では、出力データの転送速度とバンク１つ当たりの最大帯域とを比較して、転送速度に対して最大帯域が大きければ並列アクセス数Ｎｏ２を１とし、転送速度に対して最大帯域が小さければ、転送速度を上回る値となるまで最大帯域を整数倍し、転送速度を上回る値となる倍数を並列アクセス数Ｎｏ２とする。
【００８８】
続いて、並列アクセス数Ｎｏ２が１より大きいか否かを判断する（ステップＳ４２）。このステップＳ４２において、並列アクセス数Ｎｏ２が１であれば、転送先アクセス方法を“順次”に設定する（ステップＳ４３）。一方、ステップＳ４２において、並列アクセス数Ｎｏ２が１よりも大きい場合、転送先アクセス方法を“並列”に設定する（ステップＳ４４）。その後、割り当てバンク数Ｎｏ１と並列アクセス数Ｎｏ２との数を調整する。具体的には、割り当てバンク数Ｎｏ１と並列アクセス数Ｎｏ２と比較し、割り当てバンク数Ｎｏ１が並列アクセス数Ｎｏ２以上の値であれば、並列アクセス数Ｎｏ２の値を割り当てバンク数Ｎｏ１の値で更新することで割り当てバンク数Ｎｏ１と並列アクセス数Ｎｏ２とを一致させる（ステップＳ４５、Ｓ４６）。一方、割り当てバンク数Ｎｏ１が並列アクセス数Ｎｏ２よりも小さな値であれば、割り当てバンク数Ｎｏ１の値を並列アクセス数Ｎｏ２の値で更新することで割り当てバンク数Ｎｏ１と並列アクセス数Ｎｏ２とを一致させる（ステップＳ４５、Ｓ４７）。例えば、割り当てバンク数Ｎｏ１が３、並列アクセス数Ｎｏ２が２であった場合、ステップＳ４５、Ｓ４６の処理により並列アクセス数Ｎｏ２を２から３に更新する。また、別の例として、割り当てバンク数Ｎｏ１が１、並列アクセス数Ｎｏ２が２であった場合、ステップＳ４５、Ｓ４７の処理により割り当てバンク数Ｎｏ１を１から２に更新する。
【００８９】
図１１で説明した処理を実行することで、レイヤ毎にレイヤ演算部が出力するデータの転送量を満たし、かつ、データの転送速度を満し、さらに処理対象レイヤの後段に配置される後段レイヤに入力するデータの転送量と転送速度を満たす最小構成の転送先割り当てバンク数（割り当てバンク数Ｎｏ１）とアクセス方法が決定される。なお、並列アクセス数Ｎｏ２、Ｎｉ３は、転送先バンクへのアクセス方法を順次アクセスとするか、並列アクセスとするかの決定に用いられる。また、並列アクセス数Ｎｏ２、Ｎｉ３は、割り当てバンク数Ｎｏ１よりも大きければ、並列アクセスを行う場合の割り当てバンク数Ｎｏ１の補正に用いられる。また、並列アクセス数Ｎｏ２、Ｎｉ３は、割り当てバンク数Ｎｏ１よりも小さければ、割り当てバンク数Ｎｉ１に一致するように補正される。
【００９０】
続いて、転送先バンク割り当て処理では、次段のレイヤの入力データの転送速度を満たす並列アクセス数Ｎｉ３を算出する（ステップＳ５０）。このステップＳ５０では、ステップＳ４１と同様に、出力データの転送速度とバンク１つ当たりの最大帯域とに基づき並列アクセス数Ｎｉ３を算出する。
【００９１】
そして、ステップＳ５０に続いて、出力データの転送量と転送速度とに基づいて設定した転送先バンク割り当てと、転送先アクセス方法とを、変更するか否かを判断する設定値更新判断処理を行う（ステップＳ５１）。このステップＳ５１の処理では、並列アクセス数Ｎｉ３が１より大きいか否かを判断することで、次段レイヤの入力データの転送速度を満たすために並列アクセスが必要であるか否かを判断する。また、ステップＳ５１の処理では、次段レイヤの入力に関する並列アクセス数Ｎｉ３と現レイヤの出力に関する並列アクセス数Ｎｏ２とを比較して、並列アクセス数Ｎｏ２の範囲内で次段レイヤの入力データの転送速度を満足できるか否かを判断する。図１１では、このステップＳ５１の判断基準を、Ｎｉ３＞１かつＮｉ３＞Ｎｏ２と表現した。
【００９２】
そして、ステップＳ５１において、次段レイヤの入力に必要な転送量と転送速度が、現レイヤの転送量と転送速度から導き出した割り当てバンク数Ｎｏ１と並列アクセス数Ｎｏ２により満たすことが出来ると判断した場合（ステップＳ５１のＮＯの枝）、ステップＳ４０からステップＳ４７で算出した転送先割り当てバンクの数と転送先アクセス方法を現レイヤのものとして採用する。
【００９３】
一方、ステップＳ４７において、次段レイヤの入力に必要な転送量と転送速度が、現レイヤの転送量と転送速度から導き出した割り当てバンク数Ｎｏ１と並列アクセス数Ｎｏ２により満たすことができないと判断した場合（ステップＳ５１のＹＥＳの枝）、転送先アクセスの方法と割り当てバンク数Ｎｉ１を見直す（ステップＳ５２〜Ｓ５５）。
【００９４】
ステップＳ５２では、ステップＳ４３、Ｓ４４で設定したアクセス方法にかかわらず、転送先アクセス方法を“並列”に変更する。その後、割り当てバンク数Ｎｉ１と並列アクセス数Ｎｏ３との数を調整する。具体的には、割り当てバンク数Ｎｏ１と並列アクセス数Ｎｉ３と比較し、割り当てバンク数Ｎｏ１が並列アクセス数Ｎｉ３以上の値であれば、並列アクセス数Ｎｉ３の値を割り当てバンク数Ｎｏ１の値で更新することで割り当てバンク数Ｎｏ１と並列アクセス数Ｎｉ３とを一致させる（ステップＳ５３、Ｓ５５）。一方、割り当てバンク数Ｎｏ１が並列アクセス数Ｎｉ３よりも小さな値であれば、割り当てバンク数Ｎｏ１の値を並列アクセス数Ｎｉ３の値で更新することで割り当てバンク数Ｎｏ１と並列アクセス数Ｎｉ３とを一致させる（ステップＳ５３、Ｓ５４）。例えば、割り当てバンク数Ｎｏ１が１、並列アクセス数Ｎｉ３が２であった場合、ステップＳ５３、Ｓ５４の処理により並列アクセス数Ｎｉ３を１から２に更新する。また、別の例として、割り当てバンク数Ｎｏ１が３、並列アクセス数Ｎｉ３が２であった場合、ステップＳ５３、Ｓ５５の処理により並列アクセス数Ｎｉ３を２から３に更新する。
【００９５】
なお、図１０のステップＳ３８、Ｓ３９で算出される割り当てバンク数Ｎｉ１と、図１１のステップＳ４６、Ｓ４７、Ｓ５４、Ｓ５５で算出される割り当てバンク数Ｎｏ１と、の合計値は、レイヤ毎に半導体装置１内のハードウェア資源として準備されているバンクの総数Ｌ以下となるように算出される。つまり、図１０及び図１１の処理を経て決定されるレイヤ毎の割り当てバンク数Ｎｉ１と割り当てバンク数Ｎｏ１との最大値は、Ｎｉ１＋Ｎｏ１≦Ｌとなるように算出される。また、割り当てバンク数Ｎｉ１と割り当てバンク数Ｎｏ１とは、バンク総数Ｌの範囲内であれば、図１０及び図１１で算出された値を最小値として、任意に増加させる設定することもできる。
【００９６】
図１０及び図１１でした処理手順に従って、実施の形態１にかかる半導体装置１で用いるメモリ設定情報ＭＥＭ＿ＳＥＴを生成する。このメモリ設定情報ＭＥＭ＿ＳＥＴを生成するための処理の手順は、半導体装置１とは別に設けられるコンピュータ上で行うこともできるし、半導体装置１内の主演算部１０で行うこともできる。
【００９７】
続いて、実施の形態１にかかる半導体装置１で行われる畳み込み処理層の演算を行うための動作について説明する。ここでは、主にアクセラレータ部１１の動作について説明する。そこで、図１２に実施の形態１にかかる半導体装置の動作を説明するタイミングチャートを示す。なお、図１２において＃１は１番目のバンクを示し、＃２は２番目のバンクを示し、＃３は３番目のバンクを示し、＃４は４番目のバンクを示す。
【００９８】
図１２に示すように、実施の形態１にかかるアクセラレータ部１１では、第１レイヤに関する処理を行う場合、ネットワークレイヤ制御部２０が第１レイヤ用の設定をレイヤ演算部２１及びメモリ制御部２３に行う。具体的には、ネットワークレイヤ制御部２０は、メモリ制御部２３に、バンク＃１を読み出し可能状態、バンク＃２、＃３を書き込み可能状態とすることを設定する。また、バンク＃３、＃４には順次アクセスを設定する。そして、アクセラレータ部１１は、バンク＃１からデータを読み出し、読み出したデータに対してレイヤ演算部２１で演算を行う。そして、レイヤ演算部２１は、バンク＃３とバンク＃４に順次アクセスにより出力データを書き込む。
【００９９】
実施の形態１にかかるアクセラレータ部１１では、第２レイヤに関する処理を行う場合、ネットワークレイヤ制御部２０が第２レイヤ用の設定をレイヤ演算部２１及びメモリ制御部２３に行う。具体的には、アクセラレータ部１１は、第２レイヤに関する処理を行う場合、ネットワークレイヤ制御部２０が、メモリ制御部２３に、バンク＃１、＃２を書き込み可能状態、バンク＃３、＃４を読み出し可能状態とすることを設定する。これは、第１レイヤで生成されたデータがバンク＃３、＃４に格納されているためである。また、第２レイヤでは、バンク＃１、＃２には並列アクセスを設定する。そして、アクセラレータ部１１は、バンク＃３、＃４から順次アクセスによりデータを読み出し、読み出したデータに対してレイヤ演算部２１で演算を行う。そして、レイヤ演算部２１は、バンク＃１、＃２に並列アクセスにより出力データを書き込む。
【０１００】
実施の形態１にかかるアクセラレータ部１１では、第３レイヤに関する処理を行う場合、ネットワークレイヤ制御部２０が第３レイヤ用の設定をレイヤ演算部２１及びメモリ制御部２３に行う。具体的には、アクセラレータ部１１は、第３レイヤに関する処理を行う場合、ネットワークレイヤ制御部２０が、メモリ制御部２３に、バンク＃３、＃４を書き込み可能状態、バンク＃１、＃２を読み出し可能状態に設定する。これは、第２レイヤで生成されたデータがバンク＃１、＃２に格納されているためである。また、第３レイヤでは、バンク＃１、＃２及びバンク＃３、＃４にそれぞれは並列アクセスを設定する。そして、アクセラレータ部１１は、バンク＃１、＃２から並列アクセスによりデータを読み出し、読み出したデータに対してレイヤ演算部２１で演算を行う。そして、レイヤ演算部２１は、バンク＃３、＃４に並列アクセスにより出力データを書き込む。
【０１０１】
続いて、図１２に示した各レイヤにおけるデータ転送状態について詳細に説明する。なお、ここでは図１に示した畳み込みニューラルネットワークの畳み込み処理層の処理を例に図１２に示した各レイヤにおけるデータ転送状態について説明する。また、以下の説明例では、バンク１つ当たりのバスの最大帯域を３０ＧＢ／ｓとする。
【０１０２】
図１３に実施の形態１にかかる半導体装置の第１レイヤに関する処理を行う場合のデータ転送状態を説明する図を示す。図１３に示す例では、レイヤ演算部２１に与えられる入力データの転送量が５０ｋＢ、レイヤ演算部２１が入力データを読み出すときの転送速度（図１３中の入力速度）が３．８ＧＢ／ｓである。また、図１３に示す例では、レイヤ演算部２１が出力する出力データの転送量が２００ｋＢ、レイヤ演算部２１が出力データをバンクに書き込むときの転送速度（図１３中の出力速度）が２０ＧＢ／ｓである。この図１３に示す第１レイヤの例では、上記のような入出力データの転送量から、入力データの転送元に割り当てるバンクを１つ、出力データの転送先に割り当てるバンクを２つとする。また、転送先に割り当てるバンクへのアクセス方法は、必要な転送速度がバンク１つ当たりのバスの最大帯域よりも小さいため、順次アクセスに設定される。なお、図１４で説明するが、第２レイヤの入力データの読み込みに必要な転送速度は、バスの最大帯域よりも小さいため、第１レイヤにおけるバンクへの書き込みは順次アクセスであっても、第２レイヤの読み出し速度を満たす。第１レイヤの処理を行うアクセラレータ部１１では、上記のような設定値に基づき、レイヤ演算部２１が畳み込み積和演算処理、活性化処理、及び、プーリング処理を行う。なお、図１３中の丸で囲まれた数字は、順次アクセスの順番を示し、図１４以降の図面でも同様の表現を用いる。
【０１０３】
次いで、図１４に実施の形態１にかかる半導体装置の第２レイヤに関する処理を行う場合のデータ転送状態を説明する図に示す。図１４に示す例では、レイヤ演算部２１に与えられる入力データの転送量が２００ｋＢ、レイヤ演算部２１が入力データを読み出すときの転送速度（図１４中の入力速度）が２０ＧＢ／ｓである。また、図１４に示す例では、レイヤ演算部２１が出力する出力データの転送量が１００ｋＢ、レイヤ演算部２１が出力データをバンクに書き込むときの転送速度（図１４中の出力速度）が２０ＧＢ／ｓである。この図１４に示す第２レイヤの例では、上記のような入出力データの転送量から、入力データの転送元に割り当てるバンクを２つ、出力データの転送先に割り当てるバンクを１つとすることで、第２レイヤの処理には十分なデータ転送状態を確保できる。しかしながら、図１５に示す第３レイヤの入力に要する転送速度を満たすためには、第２レイヤの出力データを格納するバンク＃３、＃４へは並列アクセスを行うことが必要である。そこで、図１４に示す例では、出力データの転送先に割り当てるバンクを２つにした上で、並列アクセスを行う。なお、転送元に割り当てるバンクへのアクセス方法は、必要な転送速度がバンク１つ当たりのバスの最大帯域よりも小さいため、順次アクセスに設定される。第２レイヤの処理を行うアクセラレータ部１１では、上記のような設定値に基づき、レイヤ演算部２１が畳み込み積和演算処理を行う。
【０１０４】
なお、図１４に示した出力データの転送量と転送速度は、１つのバンクに対するアクセスだけで満たすことができる。このような場合、第２レイヤでは、バンク＃１とバンク＃１に第３レイヤでの並列アクセス時のデータの読み出し順序を考慮した順次アクセスを行うことにより、データの書き込みを行うことができる。本実施の形態で説明する技術的概念はこのようなアクセス方法を排除するものではない。
【０１０５】
次いで、図１５に実施の形態１にかかる半導体装置の第３レイヤに関する処理を行う場合のデータ転送状態を説明する図に示す。図１５に示す例では、レイヤ演算部２１に与えられる入力データの転送量が１００ｋＢ、レイヤ演算部２１が入力データを読み出す時の転送速度（図１５中の入力速度）が５０ＧＢ／ｓである。また、図１５に示す例では、レイヤ演算部２１が出力する出力データの転送量が２００ｋＢ、レイヤ演算部２１が出力データをバンクに書き込むときの転送速度（図１５中の出力速度）が５０ＧＢ／ｓである。この図１５に示す第３レイヤの例では、上記のような入力データの転送量から、入力データの転送元に割り当てるバンクを１つとすれば良いが、入力データの転送速度を考慮すると、転送元バンクに割り当てるバンクは２つとする必要がある。また、出力データの転送先に割り当てるバンクは、出力データの転送量及び転送速度を満たすために２つとする。また、転送元及び転送先に割り当てるバンクへのアクセス方法は、必要な転送速度がバンク１つ当たりのバスの最大帯域よりも大きいため、並列アクセスに設定される。第３レイヤの処理を行うアクセラレータ部１１では、上記のような設定値に基づき、レイヤ演算部２１が畳み込み積和演算処理、活性化処理、及び、プーリング処理を行う。
【０１０６】
上記説明より、実施の形態１にかかる半導体装置１では、畳み込みニューラルネットワークの畳み込み処理層の中間層毎に、データの転送量とデータの転送速度に応じて、利用するバンクの数を可変する。具体的には、実施の形態１にかかる半導体装置１では、データの転送量を十分に格納可能なバンク数を中間層毎に設定する。また、実施の形態１にかかる半導体装置１では、データの転送速度を満たすように割り当てるバンク数を中間層毎に設定する。また、実施の形態１にかかる半導体装置１では、中間層毎に割り当てるバンクを切り替える。
【０１０７】
これにより、実施の形態１にかかる半導体装置１では、他の中間層で利用された結果空き状態となったバンクを畳み込み演算処理を行う中間層で利用することができるため、有限な容量のメモリを有効利用することができる。また、実施の形態１にかかる半導体装置１では、中間層毎にバンクの読み書き状態を切り替えると共に転送元及び転送先に割り当てるバンクの数を切り替え、並列アクセスするバスの数を増やすことで、バンク１つ当たりのバス最大帯域よりも高い転送速度を実現することができ、中間層の処理に必要な転送速度を確保することができる。
【０１０８】
このようなことから、実施の形態１にかかる半導体装置１では、内蔵するメモリ（例えば、メモリ２４、２５）の容量を削減して、回路面積を抑制することができる。また、実施の形態１にかかる半導体装置１では、バンク１つ当たりのバス最大帯域を抑制して、消費電力を削減することができる。
【０１０９】
なお、実施の形態１にかかる半導体装置１では、メモリ２４、２５として用いる記憶素子としてＳＲＡＭ（Static Random Access Memory）を用いることで高速な読み出し及び書き込みの処理を行い、半導体装置１の演算能力を高めることができる。
【０１１０】
また、実施の形態１にかかる半導体装置１では、レイヤ毎に割り当てるバンク数と、割り当てバンクに対するアクセス方法を決定する。この決定処理（例えば、図１０、図１１のフローチャート）においては、各レイヤの出力データを格納する転送先バンクとするバンクの割り当て及びアクセス方法を次段のレイヤの入力特性を加味して決定する。例えば、図１４に示す例では、第２レイヤの出力特性のみを満たすことを考えれば、１つのバンクに対して順次アクセスを行うことで十分な性能が得られるが、第２レイヤの次に配置される第３レイヤの入力特性を鑑みて、第２レイヤの出力データを転送する転送先バンクに２つのバンクを割り当て、かつ、２つのバンクに対して並列アクセスを行うように、バンクの割り当てを変更している。このように、現レイヤの出力特性のみならず、次レイヤの入力特性を加味したバンクの割り当てを行うことで、次レイヤの最大能力で入力データの読み込みを行うことができる。一方、次レイヤの入力特性を加味して現レイヤの出力特性を満たすバンク割り当てを決定した場合、現レイヤの出力特性に対して過剰な数のバンクの割り当て数が必要になるデメリットが生じる。しかしながら、半導体装置１のハードウェア資源の範囲内のバンク数であれば、現レイヤに関するハードウェア資源の利用率が上昇するのみで、複数のレイヤに亘ってレイヤ演算部の演算能力を最大限に発揮させることができるメリットがある。
【０１１１】
実施の形態２
実施の形態２では、実施の形態１にかかるアクセラレータ部１１の別の形態となるアクセラレータ部１１ａについて説明する。なお、実施の形態２の説明では、実施の形態１で説明した構成要素と同じ構成要素については、実施の形態１と同じ符号を付して説明を省略する。また、実施の形態２にかかるアクセラレータ部１１ａを有する半導体装置を半導体装置２と称する。
【０１１２】
図１６に実施の形態２にかかるアクセラレータ部１１ａのネットワークレイヤ制御部及びメモリ制御部の構成を説明するブロック図を示す。図１６に示すように、アクセラレータ部１１ａは、実施の形態１にかかるアクセラレータ部１１のメモリ制御部２３をメモリ制御回路５３に置き換えたものである。メモリ制御回路５３は、アクセス制御部５６及び選択回路５７を有する。
【０１１３】
メモリ制御部５３は、ネットワークレイヤ制御部２０の指示に基づき、前記バンクに格納されたデータを外部メモリＥＸ＿ＭＥＭに退避させる退避処理と、外部メモリＥＸ＿ＭＥＭに格納されたデータをバンクに補充する補充処理と、を他の処理の実行状態にかかわらずに実行する。また、外部メモリＥＸ＿ＭＥＭは、複数のバンクを有し、外部メモリＥＸ＿ＭＥＭのバンク毎に退避処理と補充処理に関するデータを格納することとする。
【０１１４】
アクセス制御部５６は、ローカルバス１４を介してリードライト指示信号を外部メモリＥＸ＿ＭＥＭに与える機能を図６に示したアクセス制御部３６に追加したものである。選択回路５７は、ローカルバス１４を介して外部メモリＥＸ＿ＭＥＭにアクセスする経路を選択する機能を図６に示した選択回路３７に追加したものである。
【０１１５】
ここで、実施の形態２にかかる半導体装置２における畳み込み処理層の動作について説明する。そこで、図１７に実施の形態２にかかる半導体装置２の動作を説明するタイミングチャートを示す。図１７に示す例は、実施の形態２にかかる半導体装置２の動作の一例である。また、図１７に示す例は、図１２で示した実施の形態１にかかる半導体装置１の動作に第４レイヤの動作と補充処理及び退避処理を追加して実施したものである。
【０１１６】
図１７に示す例では、実施の形態２にかかる半導体装置２は、第４レイヤで利用する入力データを第１レイヤの畳み込み積和演算処理が行われている期間と第２レイヤの畳み込み積和演算処理が行われている期間とに跨がる期間において補充する。具体的には、補充処理では、外部メモリＥＸ＿ＭＥＭからバンク＃５にデータの補充が行われる。そして、バンク＃５に補充されたデータは第４レイヤの入力データとなる。また、図１７に示す例では、第４レイヤの積和演算処理が行われている期間とそれ以降の期間を利用してバンク＃２、＃３に格納されているデータを外部メモリＥＸ＿ＭＥＭに退避させる退避処理が行われる。図１７に示すように、この補充処理と退避処理は、各レイヤの処理とは独立して行われる。
【０１１７】
なお、退避処理では、データ格納時のアクセス方法とは異なるアクセス方法で退避処理を行っても問題ない。また、１つのレイヤで処理されたデータが複数のバンクに跨がって保存されている場合、データの破損を防ぐために、当該複数のバンクを１つの塊としてデータの退避処理及び補充処理を行う必要がある。
【０１１８】
ここで、データ補充処理及びデータ退避処理を行うためのデータ転送経路について説明する。図１８に実施の形態２にかかる半導体装置におけるデータ補充時のデータ転送経路を説明する図を示す。図１８は、第２レイヤの処理中に行われるデータ補充処理のデータの伝送経路を示すものである。図１８に示す例では、データ退避処理では、畳み込み積和演算処理とは独立した経路が形成される。具体的には、外部メモリＥＸ＿ＭＥＭの対象バンクからバンク＃５へとデータが転送される。
【０１１９】
また、図１９に実施の形態２にかかる半導体装置におけるデータ退避時のデータ転送経路を説明する図を示す。図１９は、第４レイヤの処理中に行われるデータ退避処理のデータの伝送経路を示すものである。図１９に示す例では、データ退避処理では、畳み込み積和演算処理とは独立した経路が形成される。具体的には、バンク＃２、＃３から外部メモリＥＸ＿ＭＥＭの対象バンクへとデータが転送される。このとき、データ退避処理は、バンク＃２、＃３に対して順次アクセスで行われる。
【０１２０】
上記説明より、実施の形態２にかかる半導体装置２では、アクセラレータ部１１内のメモリのバンクへのデータの補充と退避とを他の処理とは独立した処理により行うことができる。これにより、実施の形態２にかかる半導体装置２では、演算能力を犠牲にすることなく、アクセラレータ部１１内のメモリの容量よりも大きな容量のデータを扱うことができる。
【０１２１】
ここで、実施の形態２にかかる半導体装置２における演算時間の短縮効果（或いは、演算能力が犠牲ならないことの効果）について図２０を参照しながら説明する。図２０は、比較例にかかる半導体装置の動作を説明するタイミングチャートである。比較例にかかる半導体装置は、実施の形態２にかかるアクセラレータ部１１ａを利用せずに主演算部１０のみで畳み込みニューラルネットワークの全ての処理を行うものである。
【０１２２】
図２０に示すように、比較例にかかる半導体装置では、データ補充処理或いはデータ退避処理を行う場合、データ補充処理及びデータ退避処理を行うためのアクセス権を得るために主演算部１０への割り込み処理を利用する。そのため、比較例にかかる半導体装置では、データ補充処理及びデータ退避処理を他の処理と並列して実行することができない。そこで、比較例にかかる半導体装置では、畳み込みニューラルネットワークの中間層の処理とは別の期間としてデータ補充処理とデータ退避処理を行う期間をそれぞれ設ける必要がある。このようなことから、比較例にかかる半導体装置では、データ補充処理とデータ退避処理を行う期間分だけ処理時間が長くなる問題がある。
【０１２３】
一方、図１２に示した実施の形態２にかかる半導体装置２の動作では、データ補充処理とデータ退避処理が中間層の処理と並列して行われる。これにより、実施の形態２にかかる半導体装置２では、データ補充処理とデータ退避処理により処理時間が取られることはない。つまり、実施の形態２にかかる半導体装置２では、演算能力を犠牲にすることなく、アクセラレータ部１１内のメモリの容量よりも大きな容量のデータを扱うことができる。
【０１２４】
実施の形態３
実施の形態３では、実施の形態１にかかる半導体装置１の別の形態となる半導体装置３について説明する。なお、実施の形態３の説明では、実施の形態１で説明した構成要素と同じ構成要素については、実施の形態１と同じ符号を付して説明を省略する。
【０１２５】
図２１に実施の形態３にかかる半導体装置３のブロック図を示す。図２１に示すように、実施の形態３にかかる半導体装置３は、半導体装置１の主演算部１０を主演算部６０に置き換え、半導体装置１に車両制御部６４を追加したものである。主演算部６０は、主演算部１０に車両・歩行者認識処理部６１、路面検出処理部６２、経路予測処理部６３を追加したものである。
【０１２６】
車両・歩行者認識処理部６１は、主演算部６０で行われる全結合層の演算結果に基づき、前方の車両、歩行者、標識を含む路上物体を認識する物体認識部である。路面検出処理部６２は、主演算部６０で行われる全結合層の演算結果に基づき、画像中から路上物体を切り離した部分を路面として検出する。経路予測処理部６３は、車両・歩行者認識処理部６１の処理結果と、路面検出処理部６２の処理結果と、車両の速度及び操舵角（不図示）と、に基づき車両の走行経路を予測する。
【０１２７】
車両制御部６４は、車両・歩行者認識処理部６１、路面検出処理部６２及び経路予測処理部６３の少なくとも１つの処理結果に基づき車両の走行、停止、操舵を含む制御情報を出力する。この制御情報は、例えば、歩行者の接近や、赤信号や道路標識を検出したことによる、運転者への警告ランプの点灯、警告音の発生、ブレーキ制動による減速、停止制御、先行車追従時のスロットル、ブレーキ制御、その他の衝突回避や車線維持のための舵角制御などを行うための情報である。また、これらの制御情報は車両制御部６４から図示しない他の装置に対して、車内ネットワークを介して出力される。
【０１２８】
実施の形態３にかかる半導体装置３では、車両・歩行者認識処理部６１、路面検出処理部６２、経路予測処理部６３、車両制御部６４を有することとで、畳み込みニューラルネットワークで認識された情報に基づき自車両の障害物を認識しながら、安全な走行を維持できる。経路予測処理部６３および車両・歩行者認識処理部６１の処理結果から、これから走行していく経路上の物体を検出するようにすることで、自車両の走行経路上の障害物を認識して、安全な走行を実現できる。
【０１２９】
なお、車両・歩行者認識処理部６１、路面検出処理部６２、経路予測処理部６３及び車両制御部６４は、半導体装置３内に必ずしも内蔵されている必要はない。
【０１３０】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【０１３１】
（付記１）
畳み込みニューラルネットワークに関する処理のうち入力画像に所定のフィルタを適用した畳み込み演算を行う畳み込み処理層に関する処理を行うアクセラレータ部と、
前記アクセラレータ部の出力結果に基づき前記入力画像を判断する全結合層に関する処理を行う主演算部と、を有し、
前記アクセラレータ部は、
畳み込みニューラルネットワークを構成する複数の中間層について中間層毎に処理対象画像データの要素に対する畳み込み積和演算を含む演算処理を行うレイヤ演算部と、
前記畳み込みニューラルネットワークを構成する中間層における前記レイヤ演算部の入出力データを格納し、それぞれが独立して読み書き可能な複数のバンクから構成されるメモリと、
前記バンク単位で読み出し可能状態と書き込み可能状態とを切り替えると共に前記レイヤ演算部と前記メモリとのデータの送受信をルーティングするメモリ制御部と、
前記畳み込みニューラルネットワークを構成する中間層の入力データと出力データのそれぞれの転送量と転送速度に応じて、前記中間層の入力データまたは出力データを格納する前記バンクの読み書き状態の割り当てを切り換えるようにメモリ制御部を制御するネットワークレイヤ制御部と、
を有する半導体装置。
【０１３２】
（付記２）
前記主演算部は、
前記全結合層の演算結果に基づき、前方の車両、歩行者、標識を含む路上物体を認識する物体認識部と、
前記全結合層の演算結果に基づき、画像中から前記路上物体を切り離した部分を路面として検出する路面検出処理部と、
前記物体認識部の処理結果と、前記路面検出処理部の処理結果と、車両の速度及び操舵角と、に基づき車両の走行経路を予測する経路予測処理部と、
の少なくとも１つを有する付記１に記載の半導体装置。
【０１３３】
（付記３）
前記物体認識部、前記路面検出処理部及び前記経路予測処理部の少なくとも１つの処理結果に基づき車両の走行、停止、操舵を含む制御情報を出力する車両制御部を有する付記２に記載の半導体装置。
【符号の説明】
【０１３４】
１  半導体装置
３  半導体装置
１０  主演算部
１１、１１ａ  アクセラレータ部
１２  画像入力部
１４  ローカルバス
２０  ネットワークレイヤ制御部
２１  レイヤ演算部
２２  レイヤ演算部
２３  メモリ制御部
２４、２５  メモリ
３１１〜３１ｎ  バンク
３３  リスト解析処理部
３４  演算制御部
３５  バンク管理部
３６  アクセス制御部
３７  選択回路
４０  畳み込み積和演算部
４１  活性化処理部
４２  プーリング処理部
４３  選択回路
４４  選択回路
５３  メモリ制御回路
５６  アクセス制御部
５７  選択回路
６０  主演算部
６１  車両・歩行者認識処理部
６２  路面検出処理部
６３  経路予測処理部
６４  車両制御部
ＥＸ＿ＭＥＭ  外部メモリ
ＳＥＴ１  動作設定情報
ＳＥＴ２  動作設定情報
ＣＡＬ＿ＳＥＴ  演算処理情報
ＭＥＭ＿ＳＥＴ  メモリ設定情報
【図１】
2019207458.tif 000003
【図２】
2019207458.tif 000004
【図３】
2019207458.tif 000005
【図４】
2019207458.tif 000006
【図５】
2019207458.tif 000007
【図６】
2019207458.tif 000008
【図７】
2019207458.tif 000009
【図８】
2019207458.tif 000010
【図９】
2019207458.tif 000011
【図１０】
2019207458.tif 000012
【図１１】
2019207458.tif 000013
【図１２】
2019207458.tif 000014
【図１３】
2019207458.tif 000015
【図１４】
2019207458.tif 000016
【図１５】
2019207458.tif 000017
【図１６】
2019207458.tif 000018
【図１７】
2019207458.tif 000019
【図１８】
2019207458.tif 000020
【図１９】
2019207458.tif 000021
【図２０】
2019207458.tif 000022
【図２１】
2019207458.tif 000023