(57)【要約】【課題】新規な構成の半導体装置を提供すること。【解決手段】異なる演算処理の切り替えが可能な複数の演算回路と、演算回路間での接続状態の切り替えが可能な複数のスイッチ回路と、コントローラと、を有する。演算回路は、第１のコンテキスト信号の切り替えに応じて複数の演算処理に用いる重みパラメータに相当するデータを記憶する第１のメモリを有する。演算回路は、コンテキストに応じて重みデータを切り替えることで積和演算を実行する。スイッチ回路は、第２のコンテキスト信号の切り替えに応じて複数の接続状態を切り替えるためのデータを記憶する第２のメモリを有する。コントローラは、第１のコンテキスト信号を基に第２のコンテキスト信号を生成する。第２のメモリに記憶されるデータは、演算回路の第１のメモリに記憶されるデータより少なくすることができる。【選択図】図６
2020107891.tif 000002
【特許請求の範囲】
【請求項１】
重みデータを保持する機能を有する第１回路と、
入力データと、前記重みデータと、に基づく演算を行う機能を有する第２回路と、
を有し、
前記第１回路は、第１の層に設けられ、
前記第２回路は、第２の層に設けられ、
前記第１の層は、前記第２の層とは異なる層である、半導体装置。
【請求項２】
重みデータを保持する機能を有する第１回路と、
入力データと、前記重みデータと、に基づく演算を行う機能を有する第２回路と、
を有し、
前記第１回路は、第１の層に設けられ、
前記第２回路は、第２の層に設けられ、
前記第１の層は、前記第２の層とは異なる層であり、
前記重みデータは、デジタル信号である、半導体装置。
【請求項３】
重みデータを保持する機能を有する第１回路と、
第１入力データと、前記重みデータと、に基づく演算を行う機能を有する第２回路と、
第２入力データと、第２回路の出力データと、に基づく演算を行う機能を有する第３回路と、
を有し、
前記第１回路は、第１の層に設けられ、
前記第２回路および前記第３回路は、第２の層に設けられ、
前記第１の層は、前記第２の層とは異なる層である、半導体装置。
【請求項４】
重みデータを保持する機能を有する第１回路と、
第１入力データと、前記重みデータと、に基づく演算を行う機能を有する第２回路と、
第２入力データと、第２回路の出力データと、に基づく演算を行う機能を有する第３回路と、
を有し、
前記第１回路は、第１の層に設けられ、
前記第２回路および前記第３回路は、第２の層に設けられ、
前記第１の層は、前記第２の層とは異なる層であり、
前記重みデータは、デジタル信号である、半導体装置。
【請求項５】
請求項１乃至４のいずれか一において、
前記第１回路は、前記重みデータを保持するためのメモリセルを複数有する、半導体装置。
【請求項６】
請求項５において、
複数の前記メモリセルは、それぞれ第１配線に接続され、
前記メモリセルが保持する前記重みデータは、前記第１配線を介して、前記第２回路に出力される、半導体装置。
【請求項７】
請求項１乃至６のいずれか一において、
前記第２回路は、乗算回路である、半導体装置。
【請求項８】
請求項３乃至７のいずれか一において、
前記第３回路は、加算回路である、半導体装置。
【請求項９】
請求項１乃至８のいずれか一において、
前記第１回路は、第１トランジスタを有し、
前記第１トランジスタは、チャネル形成領域に酸化物半導体を有する、半導体装置。
【請求項１０】
請求項１乃至９のいずれか一において、
前記第２回路は、第２トランジスタを有し、
前記第２トランジスタは、チャネル形成領域にシリコンを有する、半導体装置。
【請求項１１】
請求項３乃至９のいずれか一において、
前記第２回路および前記第３回路は、第２トランジスタを有し、
前記第２トランジスタは、チャネル形成領域にシリコンを有する、半導体装置。
【請求項１２】
請求項１乃至１１のいずれか一に記載の前記半導体装置を有する回路部と、
リードと、とを有する、集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の一態様は、半導体装置に関する。特に、積和演算処理を行う機能を有する半導体装置に関する。
【背景技術】
【０００２】
複数の回路構成に対応するコンフィギュレーションデータをメモリに記憶したプログラマブルな演算回路と、ルーティングスイッチとを組み合わせたマルチコンテキスト方式のＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などの半導体装置が提案されている（例えば、非特許文献１）。マルチコンテキスト方式とは、使用するコンフィギュレーションデータを切り替えることでＦＰＧＡの回路構成を切り替える方式である。回路構成情報を表すコンフィギュレーションデータをコンテキストという。
【０００３】
マルチコンテキスト方式は、予めメモリに記憶された複数のコンフィギュレーションデータのセット（メモリセット）の中からいずれか一つに対応するコンテキストを選択することで回路構成の切り替えを可能とする方式である。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｈ．  Ｍ．  Ｗａｉｄｙａｓｏｏｒｉｙａ  ｅｔ  ａｌ．，  ”Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  ａ  Ｐａｒｔｉａｌｌｙ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｍｕｌｔｉ−Ｃｏｎｔｅｘｔ  ＦＰＧＡ  Ｂａｓｅｄ  ｏｎ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ａｒｃｈｉｔｅｃｔｕｒｅ”，  ＩＥＩＣＥ  ＴＲＡＮＳＡＣＴＩＯＮＳ  ｏｎ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｖｏｌ．Ｅ９２−Ｃ，  ｐｐ．５３９−５４９，  ２００９
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながらコンテキスト数が増加するにつれて各コンテキストに対応するメモリセットが必要となるため、回路の実装面積の増加が問題となる。また、回路の一部データのみを変更したい場合にも、コンテキストスイッチ時にデータセットを全て更新する必要があるため、回路規模が増加するにつれて回路性能が低下する問題がある。
【０００６】
本発明の一態様は、新規な構成の半導体装置を提供することを課題の一とする。または本発明の一態様は、回路規模の増大を抑制できる、新規な半導体装置を提供することを課題の一とする。
【０００７】
なお、これらの課題の記載は、他の課題の存在を妨げるものではない。なお、本発明の一態様は、これらの課題の全てを解決する必要はないものとする。なお、これら以外の課題は、明細書、図面、請求項などの記載から、自ずと明らかとなるものであり、明細書、図面、請求項などの記載から、これら以外の課題を抽出することが可能である。
【課題を解決するための手段】
【０００８】
本発明の一態様は、複数の演算回路と、複数のスイッチ回路と、を有する積和演算回路と、コントローラと、を有し、演算回路は、乗算回路と、加算回路と、第１のメモリと、を有し、第１のメモリは、第１のコンテキスト信号の切り替えに応じて乗算回路に出力される第１のデータを記憶する機能を有し、スイッチ回路は、演算回路間での接続状態を切り替えるためのスイッチと、第２のメモリと、を有し、第２のメモリは、第２のコンテキスト信号の切り替えに応じてスイッチの接続状態を切り替えるための第２のデータを記憶する機能を有し、コントローラは、第３のコンテキスト信号を基に第１のコンテキスト信号および第２のコンテキスト信号を生成する機能を有し、第２のコンテキスト信号に基づいて切り替えられる第２のコンテキスト数は、第１のコンテキスト信号に基づいて切り替えられる第１のコンテキスト数より小さい半導体装置である。
【０００９】
本発明の一態様において、第１のデータは、ニューラルネットワークにおける重みパラメータに相当するデータである半導体装置が好ましい。
【００１０】
本発明の一態様において、コントローラは、第１のデコーダおよびルックアップテーブルを有し、コントローラは、第３のコンテキスト信号を第１のコンテキスト信号として出力する機能を有し、第１のデコーダは、外部信号に応じて、ルックアップテーブルに記憶されたデータを参照して第２のコンテキスト信号を出力する機能を有する半導体装置が好ましい。
【００１１】
本発明の一態様において、外部信号は、シリアルバスの信号である半導体装置が好ましい。
【００１２】
本発明の一態様において、演算回路は、第２のデコーダを有し、スイッチ回路は、第３のデコーダを有し、第１のメモリは第１のコンテキスト切り替えスイッチを有し、第２のメモリは第２のコンテキスト切り替えスイッチを有し、第２のデコーダは、第１のコンテキスト信号をもとに第１の切り替え信号を生成する機能を有し、第３のデコーダは、第２のコンテキスト信号をもとに第２の切り替え信号を生成する機能を有し、第１の切り替え信号は、第１のコンテキスト切り替えスイッチの導通状態を制御する信号であり、第２の切り替え信号は、第２のコンテキスト切り替えスイッチの導通状態を制御する信号である半導体装置が好ましい。
【００１３】
本発明の一態様において、演算回路は、さらに第１のレジスタを有し、第１のレジスタは、入力データを保持する機能を有し、乗算回路は、第１のデータと入力データとの積に応じた乗算データを出力する機能を有し、加算回路は、スイッチ回路の切り替えによって電気的に接続された別の演算回路から出力される演算結果と、乗算データとの和に応じた加算データを出力する機能を有する半導体装置が好ましい。
【００１４】
本発明の一態様において、第１のメモリおよび第２のメモリは、それぞれトランジスタを有し、トランジスタは、チャネル形成領域に酸化物半導体を有するトランジスタである半導体装置が好ましい。
【００１５】
なおその他の本発明の一態様については、以下で述べる実施の形態における説明、および図面に記載されている。
【発明の効果】
【００１６】
本発明の一態様は、新規な構成の半導体装置を提供することができる。または本発明の一態様は、回路規模の増大を抑制できる、新規な半導体装置を提供することができる。
【００１７】
なお、これらの効果の記載は、他の効果の存在を妨げるものではない。なお、本発明の一態様は、これらの効果の全てを有する必要はない。なお、これら以外の効果は、明細書、図面、請求項などの記載から、自ずと明らかとなるものであり、明細書、図面、請求項などの記載から、これら以外の効果を抽出することが可能である。
【図面の簡単な説明】
【００１８】
【図１】半導体装置を説明するためのブロック図。
【図２】半導体装置を説明するためのブロック図。
【図３】半導体装置を説明するためのブロック図。
【図４】半導体装置を説明するためのブロック図。
【図５】半導体装置を説明するためのブロック図。
【図６】半導体装置を説明するためのブロック図。
【図７】半導体装置を説明するためのタイミングチャート。
【図８】半導体装置を説明するためのブロック図。
【図９】半導体装置回路を説明するための回路図。
【図１０】半導体装置回路を説明するための回路図およびタイミングチャート。
【図１１】半導体装置回路を説明するための回路図およびタイミングチャート。
【図１２】半導体装置を組み込んだＩＣの構成例を示す斜視模式図。
【図１３】半導体装置を説明するためのブロック図。
【図１４】半導体装置を説明するための回路図。
【図１５】半導体装置を説明するためのブロック図。
【図１６】半導体装置を説明するためのブロック図。
【図１７】電子機器の例を示す模式図。
【発明を実施するための形態】
【００１９】
以下、実施の形態について図面を参照しながら説明する。但し、実施の形態は多くの異なる態様で実施することが可能であり、趣旨およびその範囲から逸脱することなくその形態および詳細を様々に変更し得ることは当業者であれば容易に理解される。従って、本発明は、以下の実施の形態の記載内容に限定して解釈されるものではない。
【００２０】
なお本明細書等において、「第１」、「第２」、「第３」という序数詞は、構成要素の混同を避けるために付したものである。従って、構成要素の数を限定するものではない。また、構成要素の順序を限定するものではない。また例えば、本明細書等の実施の形態の一において「第１」に言及された構成要素を、他の実施の形態、あるいは特許請求の範囲において「第２」に言及された構成要素とすることもありうる。また例えば、本明細書等の実施の形態の一において「第１」に言及された構成要素を、他の実施の形態、あるいは特許請求の範囲において省略することもありうる。
【００２１】
なお図面において、同一の要素または同様な機能を有する要素、同一の材質の要素、あるいは同時に形成される要素等には同一の符号を付す場合があり、その繰り返しの説明は省略する場合がある。
【００２２】
＜半導体装置の構成＞
本発明の一態様である半導体装置の構成について説明する。
【００２３】
図１は、半導体装置１０のブロック図である。半導体装置１０は、積和演算回路１１、コントローラ１２、データ処理回路１３およびＳＲＡＭ１４を有する。
【００２４】
積和演算回路１１は、複数の演算回路２１および複数のスイッチ回路２２を有する。なお積和演算回路とは、積和演算を行う回路である。積和演算は、乗算によって得られたデータ同士を加算する演算である。積和演算回路１１は積和演算に限らず設定した演算を行うことが可能である。そのため、積和演算回路１１をプログラマブル回路という場合もある。
【００２５】
積和演算回路１１が有する演算回路２１は、コンテキスト信号の制御によって設定した機能に切り替えることができる、所謂プログラマブルな演算回路である。演算回路２１は、乗算回路、加算回路、およびメモリ回路を有する。乗算回路は、入力データと、メモリ回路に記憶されたデータとの積に応じた乗算データを出力する回路である。加算回路は、別の演算回路から入力される演算結果に相当するデータと、乗算データとの和に応じた加算データを出力する回路である。別の演算回路から入力される演算結果に相当するデータは、別の演算回路における加算データである。メモリ回路は、ニューラルネットワークにおける重みパラメータに相当するデータ（重みデータ）を記憶する回路である。このデータはデジタル信号とすることで、ノイズに強く、重みデータの切り替えを高速で行うことができる。演算回路２１は、コンテキスト信号の切り替えに応じて重みデータを切り替えることで、異なる重みパラメータを用いた積和演算を行うことができる。積和演算回路１１に入力される、演算回路２１の機能を切り替えるためのコンテキスト信号は、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗとして説明する。
【００２６】
積和演算回路１１は例えば、畳み込みニューラルネットワーク（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）で行う積和演算を行う回路である。コンテキスト切り替えに応じて異なる重みパラメータを用いた積和演算を実行するとともに、コンテキスト切り替えに応じて異なる接続状態を用いることで、全結合層や畳み込み層といった異なる層における積和演算を実行することができる。積和演算回路１１に入力される入力データは、例えば画像データなどである。
【００２７】
積和演算回路１１が有するスイッチ回路２２は、コンテキスト信号の制御によって設定した機能に切り替えることができる、所謂プログラマブルなスイッチ回路である。スイッチ回路２２は、演算回路２１の間に設けられる。スイッチ回路２２は、スイッチとして機能するトランジスタと、メモリ回路と、を有する。スイッチ回路２２が有するスイッチは、演算回路２１間での接続状態を切り替える機能を有する。スイッチ回路２２が有するメモリ回路は、スイッチの接続状態を切り替えるためのデータを記憶する回路である。スイッチ回路２２は、コンテキスト信号の切り替えに応じてスイッチの接続状態を切り替えることで、演算回路２１で得られたデータを所定の回路に入出力させることができる。積和演算回路１１に入力される、スイッチ回路２２の機能を切り替えるためのコンテキスト信号は、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｃとして説明する。
【００２８】
コントローラ１２は、外部から入力されるコンテキスト信号を基にコンテキスト信号ｃｏｎｔｅｘｔ＿Ｃおよびコンテキスト信号ｃｏｎｔｅｘｔ＿Ｗを生成する機能を有する回路である。コントローラ１２に入力されるコンテキスト信号は、コンテキスト信号ｃｏｎｔｅｘｔ＿ｉｎとして説明する。コントローラ１２には、コンテキスト信号ｃｏｎｔｅｘｔ＿ｉｎの他、クロック信号ｃｌｋが入力される。
【００２９】
コントローラ１２は、コンテキスト信号ｃｏｎｔｅｘｔ＿ｉｎをもとに、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｃに基づいて切り替えられるコンテキスト数を、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗに基づいて切り替えられるコンテキスト数より小さくして出力する。例えば図１では、コンテキスト信号ｃｏｎｔｅｘｔ＿ｉｎを２ビットの信号とし、ｃｏｎｔｅｘｔ＿ｉｎ［１：０］と記している。コンテキスト信号ｃｏｎｔｅｘｔ＿ｉｎ［１：０］は、コンテキスト信号ｃｏｎｔｅｘｔ＿ｉｎ［０］およびコンテキスト信号ｃｏｎｔｅｘｔ＿ｉｎ［１］の組み合わせを意味する。
【００３０】
図１の例でコンテキスト信号ｃｏｎｔｅｘｔ＿Ｗは、コンテキスト信号ｃｏｎｔｅｘｔ＿ｉｎと同様に、ｃｏｎｔｅｘｔ＿Ｗ［１：０］と記している。コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗ［１：０］は２ビットの信号であり、４つのコンテキストを切り替えることができる。図１の例でコンテキスト信号ｃｏｎｔｅｘｔ＿Ｃは、ｃｏｎｔｅｘｔ＿Ｃと記している。図１の例でコンテキスト信号ｃｏｎｔｅｘｔ＿Ｃは、ｃｏｎｔｅｘｔ＿Ｃと記している。コンテキスト信号ｃｏｎｔｅｘｔ＿Ｃは１ビットの信号であり、２つのコンテキストを切り替えることができる。なおコンテキスト信号ｃｏｎｔｅｘｔ＿Ｗおよびコンテキスト信号ｃｏｎｔｅｘｔ＿Ｃに基づくコンテキスト数は一例であり、上記したようにコンテキスト信号ｃｏｎｔｅｘｔ＿Ｃに基づいて切り替えられるコンテキスト数は、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗに基づいて切り替えられるコンテキスト数より小さければよい。
【００３１】
データ処理回路１３は、積和演算回路１１で得られたデータに対して積和演算とは異なる演算処理を行うための回路である。データ処理回路１３で行う演算処理としては、活性化関数である正規化線形関数（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ、以下、ＲｅＬＵ）による演算処理、あるいはプーリング演算処理等がある。活性化関数には、ＲｅＬＵの他、例えばシグモイド（ｓｉｇｍｏｉｄ）関数や、ハイパボリックタンジェント（ｔａｎｈ）関数、ステップ関数を適用することができる。
【００３２】
ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１４は、積和演算回路１１における演算に必要となるデータを保持する機能を有する回路である。ＳＲＡＭ１４は、データ保持回路ということもある。ＳＲＡＭ１４は、コントローラ１２の制御によって保持するデータの入力または出力のタイミングが決定される。
【００３３】
図２（Ａ）乃至（Ｅ）は積和演算回路１１において積和演算処理を行うための、演算回路２１およびスイッチ回路２２の動作を説明するためのブロック図である。演算回路２１およびスイッチ回路２２は、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗおよびコンテキスト信号ｃｏｎｔｅｘｔ＿Ｃに応じて、乗算処理に用いる重みデータの切り替え、および演算回路２１間の接続の切り替えが可能な回路である。
【００３４】
演算回路２１は、入力データを保持するためのレジスタ回路、および重みデータを記憶するためのメモリ回路を有する。図２（Ａ）の演算回路２１には、入力データＩ１１および重みデータＷが入力され、保持される様子を図示している。入力データＩ１１は、演算回路２１内のレジスタに保持される。重みデータＷは、複数の重みデータ（一例として４つの重みデータＷ０、Ｗ１、Ｗ２、Ｗ３）を有し、演算回路２１内のメモリ回路に記憶される。
【００３５】
演算回路２１は、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗをデコードして重みデータを選択するための切り替え信号を生成するデコーダを有する。図２（Ｂ）には演算回路２１に入力されるコンテキスト信号ｃｏｎｔｅｘｔ＿Ｗ［１：０］を図示している。コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗ［１：０］は、演算回路２１が有するデコーダでデコードされる。図２（Ｂ）では、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗ［１：０］をデコードして得られる切り替え信号によって、重みデータＷの４つの重みデータのうち、重みデータＷ０が選択される様子を図示している。
【００３６】
図２（Ｃ）には演算回路２１Ａに保持した入力データＩ１１と、選択された重みデータＷ０との乗算データ（図中、Ｗ０×Ｉ１１と図示）を、演算回路２１Ｂに出力する動作を図示している。演算回路２１Ａは、得られた乗算データを出力するように内部の切り替え回路が切り替えられる。
【００３７】
スイッチ回路２２は、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｃをデコードしてスイッチの導通状態を切り替えるための切り替え信号を生成するデコーダを有する。図２（Ｃ）にはスイッチ回路２２に入力されるコンテキスト信号ｃｏｎｔｅｘｔ＿Ｃを図示している。コンテキスト信号ｃｏｎｔｅｘｔ＿Ｃは、スイッチ回路２２が有するデコーダでデコードされる。デコードされた切り替え信号によって、複数の演算回路間のうち、いずれの演算回路間で導通状態とするかが選択される。図２（Ｃ）では、演算回路２１Ａと演算回路２１Ｂとの間のスイッチ回路２２を導通状態とする様子を図示している。
【００３８】
図２（Ｄ）には演算回路２１Ａで得られる乗算データと、別の演算回路から出力されるデータ（Ｗ×Ｉ）との和である積和演算データ（図中、Ｗ×Ｉ＋Ｗ０×Ｉ１１と図示、ＭＡＣともいう）を、演算回路２１Ｂに出力する動作を図示している。演算回路２１Ａは、得られた乗算データと、別の演算回路から出力されるデータとの和を出力するように内部の切り替え回路が切り替えられる。図２（Ｄ）では、当該切り替え回路によって図２（Ｃ）での乗算データの出力とは異なる様子を図示している。
【００３９】
また図２（Ｅ）には演算回路２１Ａで保持された積和演算データ（図中、ＭＡＣ１）を、演算回路２１Ｂに出力し、演算回路２１Ａで保持された積和演算データ（図中、ＭＡＣ２）と足し合わせて得られる積和演算データ（図中、ＭＡＣ１＋ＭＡＣ２）として出力する動作を図示している。演算回路２１Ａは、保持された積和演算データと、別の演算回路から出力される積和演算データとの和を出力するように内部の切り替え回路が切り替えられる。また演算回路２１Ａと演算回路２１Ｂとの間のスイッチ回路２２は、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｃをデコードした切り替え信号によって、導通状態となるよう選択される。図２（Ｅ）では、演算回路２１Ａと演算回路２１Ｂとの間のスイッチ回路２２を導通状態とする様子を図示している。
【００４０】
以上図２（Ａ）乃至（Ｅ）で説明したように演算回路２１およびスイッチ回路２２は、演算処理に用いる重みデータ、演算処理によって出力されるデータ、あるいは演算回路２１間の接続をコンテキスト信号ｃｏｎｔｅｘｔ＿Ｗおよびコンテキスト信号ｃｏｎｔｅｘｔ＿Ｃをデコードした切り替え信号に応じて切り替えることができる。なお演算回路２１およびスイッチ回路２２の具体的な回路例については、後述する。
【００４１】
ここで図２（Ａ）乃至（Ｅ）で図示した重みデータの切り替えや、乗算データの出力または加算データの出力といった演算処理の切り替え、によって積和演算処理を行う演算モデルについて、図３（Ａ）乃至（Ｆ）を用いて説明する。
【００４２】
図３（Ａ）乃至（Ｆ）の説明では、異なる４種類の重みデータを有するフィルタ（Ｗ１１，Ｗ１２，Ｗ１３，Ｗ１４）、（Ｗ２１，Ｗ２２，Ｗ２３，Ｗ２４）、（Ｗ３１，Ｗ３２，Ｗ３３，Ｗ３４）、（Ｗ４１，Ｗ４２，Ｗ４３，Ｗ４４）と、入力データ（Ｉ１，Ｉ２，Ｉ３，Ｉ４）の積和演算を行う場合について説明する。上記図２で説明した積和演算処理の手法を用いることで、複数の演算回路で得られたデータをループさせながら積和演算を並行して進めることが可能である。
【００４３】
複数のフィルタによる積和演算（畳み込み演算）は、式（１）に図示するように、行列−ベクトル積で表すことができる。
【００４４】
2020107891.tif 000003
【００４５】
Ｗで構成される４×４の行列は、重みデータ（各行の要素が各フィルタの成分）に相当する。Ｉで構成される１×４の行列は、入力データに相当する。Ｙ（Ｙ１乃至Ｙ４）で構成される１×４の行列は、積和演算によって得られるデータに相当する。
【００４６】
式（１）の行列−ベクトル積は、上述した演算回路２１を用いて積和演算を行う演算モデルに当てはめると、図３（Ａ）のように図示することができる。つまり入力データＩ１乃至Ｉ４は、各演算回路２１の入力データ３１として保持される。またフィルタ（Ｗ１１，Ｗ１２，Ｗ１３，Ｗ１４）、（Ｗ２１，Ｗ２２，Ｗ２３，Ｗ２４）、（Ｗ３１，Ｗ３２，Ｗ３３，Ｗ３４）、（Ｗ４１，Ｗ４２，Ｗ４３，Ｗ４４）の重みパラメータに相当するデータ（重みデータ）は、各演算回路２１のメモリ回路に書き込まれ、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗをデコードして得られる切り替え信号に応じて、異なる重みデータ３２＿１乃至３２＿４のいずれか一を用いて乗算データの生成を行うことができる。以下、１クロック（１ｃｌｋ）ごとに演算処理が進むものとして説明する。
【００４７】
演算回路２１に入力データを書き込んで１ｃｌｋ後、重みパラメータのセットから任意の重みデータがコンテキスト信号ｃｏｎｔｅｘｔ＿Ｗをデコードして得られる切り替え信号によって設定される。具体的には、図３（Ｂ）に図示する下線を付したデータ（Ｗ１１，Ｗ２２，Ｗ３３，Ｗ４４）が設定され、各演算回路２１では保持している入力データ（Ｉ１，Ｉ２，Ｉ３，Ｉ４）との乗算データを生成する。各演算回路２１では、入力データ３１と重みデータ３２＿１との乗算データ（Ｗ１１・Ｉ１，Ｗ２２・Ｉ２，Ｗ３３・Ｉ３，Ｗ４４・Ｉ４）を生成する。
【００４８】
次いで図３（Ｂ）の状態から１ｃｌｋ後の図３（Ｃ）では、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗをデコードして得られる切り替え信号によって図３（Ｂ）とは異なる重みデータに設定される。具体的には、図３（Ｃ）に図示する下線を付した重みデータ（Ｗ４１，Ｗ１２，Ｗ２３，Ｗ３４）が設定され、各演算回路２１では保持している入力データ（Ｉ１，Ｉ２，Ｉ３，Ｉ４）との乗算データを生成する。各演算回路２１では、入力データ３１と重みデータ３２＿２との乗算データ（Ｗ４１・Ｉ１，Ｗ１２・Ｉ２，Ｗ２３・Ｉ３，Ｗ３４・Ｉ４）を生成する。さらに、各演算回路２１では、図３（Ｃ）の状態で生成したデータ３３＿１−３３＿４（Ｗ１１・Ｉ１，Ｗ２２・Ｉ２，Ｗ３３・Ｉ３，Ｗ４４・Ｉ４）を次列の加算データとして次列の演算回路２１に出力する。
【００４９】
次いで図３（Ｃ）の状態から１ｃｌｋ後の図３（Ｄ）では、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗをデコードして得られる切り替え信号によって図３（Ｃ）とは異なる重みデータに設定される。具体的には、図３（Ｄ）に図示する下線を付した重みデータ（Ｗ３１，Ｗ４２，Ｗ１３，Ｗ２４）が設定され、各演算回路２１では保持している入力データ（Ｉ１，Ｉ２，Ｉ３，Ｉ４）との乗算データを生成する。例えば、各演算回路２１では、入力データ３１と重みデータ３２＿３との乗算データ（Ｗ３１・Ｉ１，Ｗ４２・Ｉ２，Ｗ１３・Ｉ３，Ｗ２４・Ｉ４）を生成する。さらに、各演算回路２１では、乗算データ（Ｗ４１・Ｉ１，Ｗ１２・Ｉ２，Ｗ２３・Ｉ３，Ｗ３４・Ｉ４）を、図３（Ｃ）で出力された加算データ（Ｗ１１・Ｉ１，Ｗ２２・Ｉ２，Ｗ３３・Ｉ３，Ｗ４４・Ｉ４）に加算したデータ３３＿１−３３＿４（Ｗ１２・Ｉ２＋Ｗ１１・Ｉ１，Ｗ２３・Ｉ３＋Ｗ２２・Ｉ２，Ｗ３４・Ｉ４＋Ｗ３３・Ｉ３，Ｗ４１・Ｉ１＋Ｗ４４・Ｉ４）を次列の加算データ（または積和演算データともいう）として次列の演算回路２１に出力する。
【００５０】
次いで図３（Ｄ）の状態から１ｃｌｋ後の図３（Ｅ）では、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗをデコードして得られる切り替え信号によって図３（Ｄ）とは異なる重みデータに設定される。具体的には、図３（Ｅ）に図示する下線を付した重みデータ（Ｗ２１，Ｗ３２，Ｗ４３，Ｗ１４）が設定され、各演算回路２１では保持している入力データ（Ｉ１，Ｉ２，Ｉ３，Ｉ４）との乗算データを生成する。例えば、各演算回路２１では、入力データ３１と重みデータ３２＿４との乗算データ（Ｗ２１・Ｉ１，Ｗ３２・Ｉ２，Ｗ４３・Ｉ３，Ｗ１４・Ｉ４）を生成する。さらに、各演算回路２１では、乗算データ（Ｗ３１・Ｉ１，Ｗ４２・Ｉ２，Ｗ１３・Ｉ３，Ｗ２４・Ｉ４）を、図３（Ｄ）で出力された加算データ（Ｗ１２・Ｉ２＋Ｗ１１・Ｉ１，Ｗ２３・Ｉ３＋Ｗ２２・Ｉ２，Ｗ３４・Ｉ４＋Ｗ３３・Ｉ３，Ｗ４１・Ｉ１＋Ｗ４４・Ｉ４）に加算したデータ３３＿１−３３＿４（Ｗ１３・Ｉ３＋Ｗ１２・Ｉ２＋Ｗ１１・Ｉ１，Ｗ２４・Ｉ４＋Ｗ２３・Ｉ３＋Ｗ２２・Ｉ２，Ｗ３１・Ｉ１＋Ｗ３４・Ｉ４＋Ｗ３３・Ｉ３，Ｗ４２・Ｉ２＋Ｗ４１・Ｉ１＋Ｗ４４・Ｉ４）を次列の加算データとして次列の演算回路２１に出力する。
【００５１】
次いで図３（Ｅ）の状態から１ｃｌｋ後の図３（Ｆ）において各演算回路２１では、図３（Ｅ）で出力された加算データ（Ｗ１３・Ｉ３＋Ｗ１２・Ｉ２＋Ｗ１１・Ｉ１，Ｗ２４・Ｉ４＋Ｗ２３・Ｉ３＋Ｗ２２・Ｉ２，Ｗ３１・Ｉ１＋Ｗ３４・Ｉ４＋Ｗ３３・Ｉ３，Ｗ４２・Ｉ２＋Ｗ４１・Ｉ１＋Ｗ４４・Ｉ４）に乗算データ（Ｗ２１・Ｉ１，Ｗ３２・Ｉ２，Ｗ４３・Ｉ３，Ｗ1４・Ｉ４）を加算したデータが得られる。図３（Ｆ）に示すように、各演算回路２１では、データ３３＿２（Ｗ２１・Ｉ１＋Ｗ２４・Ｉ４＋Ｗ２３・Ｉ３＋Ｗ２２・Ｉ２）、データ３３＿３（Ｗ３２・Ｉ２＋Ｗ３１・Ｉ１＋Ｗ３４・Ｉ４＋Ｗ３３・Ｉ３）、データ３３＿４（Ｗ４３・Ｉ３＋Ｗ４２・Ｉ２＋Ｗ４１・Ｉ１＋Ｗ４４・Ｉ４）、データ３３＿１（Ｗ１４・Ｉ４＋Ｗ１３・Ｉ３＋Ｗ１２・Ｉ２＋Ｗ１１・Ｉ１）といった積和演算によるデータを得ることができる。得られたデータは、行列−ベクトル積で表したＹ（Ｙ１乃至Ｙ４）に相当する。
【００５２】
図３（Ａ）乃至（Ｆ）の演算モデルを用いることで、得られるデータを次々にシフトさせることで膨大な数の積和演算を効率よく行うことができる。半導体装置１０が有する積和演算回路１１では、乗算データと加算データを、プロセッサのパイプライン処理のように演算回路２１間で同時に処理するとともに、複数の演算回路２１間で乗算データおよび加算データをシフトさせることで積和演算を実行することができる。そのため、限られたハードウェアで積和演算による演算処理を行う際、少ない回路リソースで超並列のデータ処理を効率よく実行することができる。
【００５３】
図３（Ａ）乃至（Ｆ）の構成では、演算途中で外部メモリへのデータアクセスが必要なく、また、全ての演算回路２１でデータの受け渡しを並列に行いながら積和演算データを効率よく得ることができる。そのため、入力データおよび重みデータ等の増大に伴う回路規模の大型化がニューラルネットワークでは問題となるが、この問題を解消することができる。
【００５４】
図３（Ａ）乃至（Ｆ）で説明した積和演算処理を行う演算モデルを図１の半導体装置１０に適用する場合、図２（Ａ）乃至（Ｅ）で説明したように演算処理に用いる重みデータ、演算処理によって出力されるデータ、あるいは演算回路２１間の接続をコンテキスト信号ｃｏｎｔｅｘｔ＿Ｗおよびコンテキスト信号ｃｏｎｔｅｘｔ＿Ｃに応じて切り替えることで実現できる。
【００５５】
具体的には図３（Ａ）乃至（Ｆ）に示す演算モデルを実現する場合、積和演算処理のための重みデータの切り替えのためのコンテキスト数が４、つまり重みデータの切り替え構成は重みデータＷ０，重みデータＷ１，重みデータＷ２および重みデータＷ３のデータセットによって実現できる。また図２（Ｅ）のように図３（Ａ）乃至（Ｆ）に示す演算モデルで得られた積和演算データ同士を足し合わせるような加算処理の場合、重みデータは必要ないが、重みデータＷ０乃至Ｗ３のいずれか一のデータセットによって実現できる。この場合、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗをデコードしてコンテキストを切り替えるための切り替え信号ｃｏｎｔｅｘｔ＿Ｗ０乃至ｃｏｎｔｅｘｔ＿Ｗ３を得る構成とすればよい。
【００５６】
また図３（Ａ）乃至（Ｆ）に示す演算モデルを実現する場合、接続構成はコンテキスト数が１、つまり接続構成は切り替え信号ｃｏｎｔｅｘｔ＿Ｃ０によって実現できる。また図２（Ｅ）のように図３（Ａ）乃至（Ｆ）に示す演算モデルで得られた積和演算データ同士を足し合わせる場合、接続構成はコンテキスト数が１、つまり接続構成は切り替え信号ｃｏｎｔｅｘｔ＿Ｃ１によって実現できる。この場合、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｃをデコードしてコンテキストを切り替えるための切り替え信号ｃｏｎｔｅｘｔ＿Ｃ０およびｃｏｎｔｅｘｔ＿Ｃ１を得る構成とすればよい。
【００５７】
上記構成は、図４（Ａ）乃至（Ｅ）に示すブロック図を用いて説明することができる。図４（Ａ）乃至（Ｅ）中では、演算回路２１およびスイッチ回路２２の他、演算処理の種類として積和演算処理２３（図中、「×＋」で図示）を図示している。また演算処理の種類として加算処理２４（図中、「＋」で図示）を図示している。
【００５８】
図４（Ａ）乃至（Ｄ）では、接続構成を切り替え信号ｃｏｎｔｅｘｔ＿Ｃ０で固定し、重みデータを切り替え信号ｃｏｎｔｅｘｔ＿Ｗ０乃至Ｗ３で切り替えることで積和演算処理を行う。例えば図４（Ａ）では、接続構成を切り替え信号ｃｏｎｔｅｘｔ＿Ｃ０とし、重みデータを切り替え信号ｃｏｎｔｅｘｔ＿Ｗ０で重みデータＷ０とし、乗算データに他の演算回路の加算データを足し合わせる積和演算処理を実行する。また図４（Ｂ）では、接続構成を切り替え信号ｃｏｎｔｅｘｔ＿Ｃ０とし、重みデータを切り替え信号ｃｏｎｔｅｘｔ＿Ｗ１で重みデータＷ１とし、乗算データに他の演算回路の加算データを足し合わせる積和演算処理を実行する。また図４（Ｃ）では、接続構成を切り替え信号ｃｏｎｔｅｘｔ＿Ｃ０とし、重みデータを切り替え信号ｃｏｎｔｅｘｔ＿Ｗ２で重みデータＷ２とし、乗算データに他の演算回路の加算データを足し合わせる積和演算処理を実行する。また図４（Ｄ）では、接続構成を切り替え信号ｃｏｎｔｅｘｔ＿Ｃ０とし、重みデータを切り替え信号ｃｏｎｔｅｘｔ＿Ｗ３で重みデータＷ３とし、乗算データに他の演算回路の加算データを足し合わせる積和演算処理を実行する。
【００５９】
図４（Ａ）乃至（Ｄ）のように、重みデータＷ０乃至Ｗ３を切り替えて得られる乗算データは、別の演算回路で得られた値に足し合わせてさらに別の演算回路に順に出力することができる。そのため、異なる重みデータを用いて得られた乗算データ同士を足し合わせた積和演算データを得ることができる。つまり図３（Ｆ）の状態を得ることができる。
【００６０】
また図４（Ｅ）では、接続構成を切り替え信号ｃｏｎｔｅｘｔ＿Ｃ１で固定し、重みデータを例えば切り替え信号ｃｏｎｔｅｘｔ＿Ｗ０に切り替えることで加算処理を行う。重みデータを切り替え信号ｃｏｎｔｅｘｔ＿Ｗ０で重みデータＷ０とし、先に求めた積和演算データ同士の和を求める加算処理を行う構成である。当該構成とすることで各演算回路２１に保持された積和演算データ同士の和に相当するデータを得ることができる。
【００６１】
上記構成では接続構成を切り替え信号ｃｏｎｔｅｘｔ＿Ｃ０として共有化し、重みデータのみを変更する構成となる。当該構成とすることで、接続構成のコンテキスト数を削減できる。すなわち、回路面積（信号線の負荷）の削減が可能となり、動作速度の向上や消費電力の低減が可能となる。
【００６２】
図３（Ａ）乃至（Ｆ）、図４（Ａ）乃至（Ｅ）の構成は、形状の異なる入力データに対して次々と重みデータを切り替えて積和演算処理を行う畳み込みニューラルネットワークに有効である。
【００６３】
なお、本明細書においてニューラルネットワークとは、生物の神経回路網を模し、学習によってニューロンどうしの結合強度を決定し、問題解決能力を持たせるモデル全般を指す。ニューラルネットワークは入力層、中間層（隠れ層ともいう）、出力層を有する。ニューラルネットワークのうち、２層以上の中間層を有するものをディープニューラルネットワーク（ＤＮＮ）と呼称する。ディープニューラルネットワークによる学習を「ディープラーニング」と呼称する。またニューラルネットワークをハードウェアで実行可能な回路をニューラルネットワーク回路という。
【００６４】
また、本明細書において、ニューラルネットワークについて述べる際に、既にある情報からニューロンとニューロンの結合強度（重み係数または重みパラメータとも言う）を決定することを「学習」と呼ぶ場合がある。
【００６５】
また、本明細書において、学習によって得られた結合強度を用いてニューラルネットワークを構成し、そこから新たな結論を導くことを「推論」と呼ぶ場合がある。
【００６６】
図５は、畳み込みニューラルネットワークの演算処理の流れについて図示したブロック図である。図５では、入力層６１、中間層６２（隠れ層ともいう）、出力層６３を図示している。入力層６１では、入力データの入力処理（図中、Ｉｎｐｕｔと図示）を図示している。中間層６２では、畳み込み層６５、畳み込み層６６、畳み込み層６８（図中、Ｃｏｎｖ．と図示）、プーリング層６７、プーリング層６９（図中、Ｐｏｏｌ．と図示）を図示している。出力層６３では、全結合層７０（図中、Ｆｕｌｌと図示）を図示している。入力層６１、中間層６２、出力層６３における演算処理を行う層は一例であり、実際の畳み込みニューラルネットワークの演算処理では、ソフトマックス演算などの他の演算処理を行うことがある。
【００６７】
図５に図示する畳み込み層６５、畳み込み層６６、畳み込み層６８および全結合層７０では、入力データと重みデータとの積和演算処理を行う。各層での演算処理は、形状の異なる入力データが入力されるとともに重みデータを切り替えて積和演算処理を行うことになる。重みデータのデータセットの増加に伴うコンテキスト数の増加は回路規模の増大につながる。本発明の一態様の構成はコントローラ１２において、重みデータを切り替えるためのコンテキスト数に比べて接続構成を切り替えるためのコンテキスト数を小さくするようコンテキスト信号を生成する。そのため、接続構成に関するコンフィギュレーションデータを記憶するためのメモリ回路およびスイッチの回路規模の縮小が図られた半導体装置とすることができる。加えて、回路規模の縮小が図られることに伴って消費電力増大の抑制を図ることができる。
【００６８】
＜コントローラの構成＞
半導体装置１０が有するコントローラ１２の構成例に説明する。
【００６９】
図６はコントローラ１２の構成例を説明するためのブロック図である。図６におけるコントローラ１２は、デコーダ４３およびルックアップテーブル４５の他、フリップフロップ４２、Ｉ２Ｃコントローラ４４を有する。
【００７０】
コントローラ１２は、入力されるコンテキスト信号ｃｏｎｔｅｘｔ＿ｉｎ（図中ｃｏｎｔｅｘｔ＿ｉｎ［１：０］と図示）をフリップフロップ４２に保持し、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗ（図中ｃｏｎｔｅｘｔ＿Ｗ［１：０］と図示）として出力する機能を有する。デコーダ４３は、Ｉ２Ｃなどのシリアルバスによる外部信号に応じて、ルックアップテーブル４５に記憶されたデータを参照してコンテキスト信号ｃｏｎｔｅｘｔ＿Ｃを出力する機能を有する。
【００７１】
なおＩ２Ｃ以外に、ユニバーサルシリアルバス（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、シリアル周辺インターフェース（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）等のバス規格を用いることが可能である。
【００７２】
図６に示すようにコントローラ１２は、ルックアップテーブル４５を有する。ルックアップテーブル４５は、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗとコンテキスト信号ｃｏｎｔｅｘｔ＿Ｃによる異なるコンテキスト数の対応関係を定義する。ルックアップテーブル４５のパラメータ設定方法としては、例えばＩ２Ｃによる通信によりＩ２Ｃコントローラ４４を介してコンテキスト信号ｃｏｎｔｅｘｔ＿Ｃを切り替える方法がある。ルックアップテーブル４５のパラメータ設定は、コンフィギュレーション動作時に実行する構成としてもよい。Ｉ２Ｃによる通信によってユーザーが制御可能なパラメータが定義可能となることで様々な回路構成を実現できる。
【００７３】
次いでコントローラ１２の動作について説明する。
【００７４】
図７に図１におけるコンテキスト信号ｃｏｎｔｅｘｔ＿ｉｎ［１：０］と、積和演算回路１１の回路状態を説明するためのタイミングチャートを示す。外部入力によるコンテキスト信号ｃｏｎｔｅｘｔ＿ｉｎ［１：０］はクロック信号ｃｌｋとは非同期の信号であるとする。
【００７５】
なお図７の説明において、コンテキスト信号ｃｏｎｔｅｘｔ＿ｉｎ［１：０］は２ビットの信号であり、コンテキストは「３」乃至「０」の４つで表すことができる。また図７の説明において、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗ［１：０］は２ビットの信号であり、コンテキストは「３」乃至「０」の４つで表すことができる。図７の説明において、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｃは１ビットの信号であり、コンテキストはＨレベルまたはＬレベルの信号の２つで表すことができる。
【００７６】
時刻Ｔ０において、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗ［１：０］によってコンテキストが「３」から「０」に変化する。コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗ［１：０］は、図６で図示したデコーダ４３でデコードされる。コンテキスト信号ｃｏｎｔｅｘｔ＿Ｃは、ルックアップテーブル４５のパラメータ設定によって、「１」から「０」に変化する。その結果、次のクロック信号ｃｌｋの立ち上がり（ＬレベルからＨレベルへの変化）である時刻Ｔ１において切り替え信号ｃｏｎｔｅｘｔ＿Ｗ０及び切り替え信号ｃｏｎｔｅｘｔ＿Ｃ０がＨレベルとなる。また切り替え信号ｃｏｎｔｅｘｔ＿Ｗ３及び切り替え信号ｃｏｎｔｅｘｔ＿Ｃ１がＬレベルとなり、回路構成ｃｉｒｃｕｉｔ＿ｓｔａｔｅは回路Ｄから回路Ａの状態となる。
【００７７】
時刻Ｔ１において、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗ［１：０］によってコンテキストが「０」から「１」に変化する。コンテキスト信号ｃｏｎｔｅｘｔ＿Ｃは、ルックアップテーブル４５のパラメータ設定によって、「０」を維持する。その結果、次のクロック信号ｃｌｋの立ち上がりである時刻Ｔ２において切り替え信号ｃｏｎｔｅｘｔ＿Ｗ１がＨレベルとなる。また、切り替え信号ｃｏｎｔｅｘｔ＿Ｗ０がＬレベルとなり、回路構成ｃｉｒｃｕｉｔ＿ｓｔａｔｅは回路Ａの状態から回路Ｂの状態となる。
【００７８】
時刻Ｔ２において、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗ［１：０］によってコンテキストが「１」から「２」に変化する。コンテキスト信号ｃｏｎｔｅｘｔ＿Ｃは「０」を維持する。その結果、次のクロック信号ｃｌｋの立ち上がりである時刻Ｔ３において切り替え信号ｃｏｎｔｅｘｔ＿Ｗ２がＨレベルとなる。また切り替え信号ｃｏｎｔｅｘｔ＿Ｗ１がＬレベルとなり、回路構成ｃｉｒｃｕｉｔ＿ｓｔａｔｅは回路Ｂの状態から回路Ｃの状態となる。
【００７９】
時刻Ｔ３において、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗ［１：０］によって「２」から「３」に変化する。コンテキスト信号ｃｏｎｔｅｘｔ＿Ｃは、ルックアップテーブル４５のパラメータ設定によって、「０」から「１」に変化する。その結果、次のクロック信号ｃｌｋの立ち上がりである時刻Ｔ４において切り替え信号ｃｏｎｔｅｘｔ＿Ｗ３がＨレベルとなる。また切り替え信号ｃｏｎｔｅｘｔ＿Ｗ２がＬレベルとなり、回路構成ｃｉｒｃｕｉｔ＿ｓｔａｔｅは回路Ｃの状態から回路Ｄの状態となる。
【００８０】
以上のように、コンテキストの切り替えを演算回路２１およびスイッチ回路といった対象毎にコンテキスト数が異なるように分けて行う構成とする。当該構成とすることで回路構成の変更が無い場合にはコンテキスト信号の変化を行わない構成とすることができる。必要となるコンテキスト数を削減できることで削減分のコンテキストに対応するスイッチ回路が不要になるため、回路面積の削減および回路動作の高速化が可能となる。
【００８１】
＜演算回路の構成＞
積和演算回路１１が有する演算回路２１の構成の一例を説明する。演算回路２１は図２（Ａ）乃至（Ｅ）で説明したように、入力されるデータ（入力データ）と重みデータとの乗算によって得られる乗算データを保持または出力する機能の他、当該乗算データと、別の演算回路から出力されるデータ（加算データ）とを足し合わせて得られる積和演算データを保持または出力する機能を有する。
【００８２】
図８（Ａ）は、演算回路２１の一例を示すためのブロック図である。演算回路２１は、一例として、入力レジスタ５１、メモリ回路５２、乗算回路５３、加算回路５４、出力レジスタ５５Ａ、出力レジスタ５５Ｂ、切り替え回路５６Ａ、メモリ素子５７Ａ、切り替え回路５６Ｂ、メモリ素子５７Ｂ、切り替え回路５６Ｃおよびメモリ素子５７Ｃを有する。
【００８３】
入力レジスタ５１には、データｓｉｎが入力される。入力レジスタ５１はラッチ信号ｓｌａｔの制御でデータｓｉｎを保持する。入力レジスタ５１はデータｓｏｕｔを出力する。入力レジスタ５１は、切り替え回路５６Ａを介して乗算回路５３にデータｓｄａｔａを出力する。
【００８４】
切り替え回路５６Ａは、乗算回路５３に入力されるデータｓｄａｔａとして、データｓｉｎを出力するか、入力レジスタ５１に保持されたデータを出力するかを制御するための回路である。メモリ素子５７Ａは、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｃの切り替えに応じて、切り替え回路５６Ａ内の電気的な接続を切り替える機能を有する。
【００８５】
メモリ回路５２には、コンテキスト信号ｃｏｎｔｅｘ＿Ｗ［１：０］が入力される。メモリ回路５２は、コンテキストに応じたデータセットを有する。データセットは、積和演算処理に用いる複数の重みデータに相当するデータである。メモリ回路５２は、コンテキスト信号に応じてコンテキストに応じた複数の重みデータの中から一つの重みデータを重みデータｃｍｏｕｔとして出力する。メモリ回路５２に格納した複数の重みデータは、例えば、畳み込み演算処理で用いるフィルタ数が多い場合などコンテキストを変更しながら演算する際に有効である。コンテキストを変更しながら異なる重みデータと入力データとの乗算をすることで、１つの乗算回路を使って様々な条件での乗算を行うことができる。
【００８６】
メモリ回路５２は不揮発性メモリを用いる。メモリ回路５２としては、酸化物半導体（Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ：ＯＳ）をチャネル形成領域に有するトランジスタ（ＯＳトランジスタ）を用いたＯＳメモリが有効である。メモリ回路５２を演算回路２１毎に設けることで、積和演算回路１１外部に設ける場合と比べて、より高速且つ低消費電力に上記重みデータへのアクセス（読み出しおよび書き込み）をすることができる。メモリ回路５２の構成例については後述する。
【００８７】
乗算回路５３は、データｓｄａｔａと重みデータｃｍｏｕｔとの積に応じた乗算データｍｏｕｔを生成する。乗算データｍｏｕｔは、加算回路５４および切り替え回路５６Ｂに出力される。
【００８８】
加算回路５４は、加算データａｉｎに乗算データｍｏｕｔを加算することによって和に応じた加算データａｏｕｔを生成する。加算データａｏｕｔは、切り替え回路５６Ｂに出力される。
【００８９】
切り替え回路５６Ｂは、乗算データｍｏｕｔを出力するか、加算データａｏｕｔを出力するか、を制御するための回路である。また切り替え回路５６Ｂは、加算データａｉｎを出力するか、加算データａｏｕｔを出力するかを制御するための回路である。メモリ素子５７Ｂは、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｃの切り替えに応じて、切り替え回路５６Ｂ内の電気的な接続を切り替える機能を有する。
【００９０】
出力レジスタ５５Ａおよび出力レジスタ５５Ｂは、切り替え回路５６Ｂで選択されたデータを保持し、リセット信号ｒｅｓｅｔの制御でリセットされる。出力レジスタ５５Ａおよび出力レジスタ５５Ｂを有する構成とすることで、信号の遅延によって演算結果に誤りがあることを防ぐことができる。
【００９１】
切り替え回路５６Ｂは、出力レジスタ５５Ａに保持されたデータを出力するか、出力レジスタ５５Ａに入力されるデータをそのまま出力データｏｕｔとして出力するか、を制御するための回路である。メモリ素子５７Ｃは、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｃの切り替えに応じて、切り替え回路５６Ｃ内の電気的な接続を切り替える機能を有する。
【００９２】
図８（Ｂ）では、図８（Ａ）で説明した演算回路２１の変形例に関するブロック図を図示する。図８（Ｂ）に示す演算回路２１では、図８（Ａ）で説明した構成に加えて、パワースイッチ５８、メモリ素子５７Ｄを図示している。メモリ素子５７Ｄはコンテキスト信号ｃｏｎｔｅｘｔ＿Ｃの切り替えに応じて、パワースイッチ５８のオンまたはオフを切り替えることができる。演算処理に使用しない演算回路２１でのパワースイッチ５８をオフにできる構成とすることで、多数の演算回路２１のうち、使用しない演算回路２１に関しては、待機動作時に発生する電流による消費電力を削減することができる。
【００９３】
次いで演算回路２１が有するメモリ回路５２の構成について、図９（Ａ）、（Ｂ）を参照して説明する。メモリ回路５２はコンテキスト数に応じて設けられた複数のメモリセル毎に重みデータを保持し、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗをデコードして得られる切り替え信号に従って選択される重みデータｃｍｏｕｔを乗算回路５３に出力する機能を有する。
【００９４】
メモリ回路は、フリップフロップ７１、デコーダ７２、複数のメモリセル７３、を有する。メモリセル７３は、トランジスタ７４−７６を有する。
【００９５】
フリップフロップ７１は、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗを保持する機能を有する。デコーダ７２は、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗをデコードして切り替え信号ｃｏｎｔｅｘｔ＿Ｗ０乃至ｃｏｎｔｅｘｔ＿Ｗ３を出力する機能を有する。メモリセル７３は、重みデータ（コンフィギュレーションデータ）を記憶し、切り替え信号ｃｏｎｔｅｘｔ＿Ｗ０乃至ｃｏｎｔｅｘｔ＿Ｗ３の制御に応じて、出力する機能を有する。
【００９６】
トランジスタ７４のソース又はドレインの一方は、重みデータを書き込むための配線に接続される。トランジスタ７４のゲートは、ワード信号ｗｏｒｄ（図中，ｗｏｒｄ１−４で図示）を与える配線に接続される。トランジスタ７５のゲートは、トランジスタ７４のソースまたはドレインの他方に接続される。トランジスタ７５のゲートと、トランジスタ７４のソースまたはドレインの他方とが接続されるノードは、ノードＦＮ（図中、ＦＮ０−ＦＮ３で図示）という。トランジスタ７５のソース又はドレインの一方は、固定電位線（図中、グラウンド線）に接続される。トランジスタ７５のソース又はドレインの他方は、トランジスタ７６のソース又はドレインの一方に接続される。トランジスタ７６のゲートは、切り替え信号ｃｏｎｔｅｘｔ＿Ｗ０乃至ｃｏｎｔｅｘｔ＿Ｗ３のいずれか一を与える配線に接続される。トランジスタ７６のソース又はドレインの他方は、トランジスタ７７のソース又はドレインの一方およびインバータラッチ７８に接続される。トランジスタ７７のソース又はドレインの他方は、プリチャージ電圧（図中Ｖｐｒｅ）を与える配線に接続される。トランジスタ７７のゲートは、プリチャージ制御線（図中、ｐｒｅｃｈａｒｇｅ）に接続される。インバータラッチ７８は、重みデータｃｍｏｕｔを与える配線に接続される。
【００９７】
トランジスタ７４は、チャネル形成領域に酸化物半導体を有するトランジスタ（ＯＳトランジスタ）である。ＯＳトランジスタは、オフ電流が小さい。そのためトランジスタ７４を非導通状態とすることでノードＦＮに保持した電位を保持することができる。ノードＦＮに保持した電位は、重みデータ１ビット分のデータに対応する。ノードＦＮに保持した電位はトランジスタ７５の導通状態または非導通状態を制御することができる。そのため、コンテキスト信号Ｗ０によってトランジスタ７６が導通状態となると、ノードＦＮに保持した電位に応じた重みデータｃｍｏｕｔを与える配線の電位を切り替えることができる。
【００９８】
なお図９（Ａ）のように、ＯＳトランジスタを用いない場合、図９（Ｂ）に図示するようにインバータラッチ７９を用いて重みデータに相当するデータを記憶する構成としてもよい。
【００９９】
上記実施の形態に示す演算回路２１を有する半導体装置１０は、Ｓｉトランジスタを有する乗算回路および加算回路と、ＯＳトランジスタを有するメモリ回路と、１のダイに集積することができる。
【０１００】
また図１０（Ａ）乃至（Ｂ）では、図９（Ａ）に図示するメモリ回路５２の動作に説明する。図１０（Ａ）は、図９（Ａ）の回路の一部を抜き出して図示した回路図である。図１０（Ａ）では、メモリセル７３、トランジスタ７７、およびインバータラッチ７８に接続された重みデータｃｍｏｕｔを読み出すための配線のデータをデータｃｍｏｕｔ＿ｂとして図示している。当該配線のデータは、重みデータｃｍｏｕｔの論理が反転した信号に相当する。
【０１０１】
次いで図１０（Ｂ）に、図１０（Ａ）に示したメモリ回路５２の動作例を説明するタイミングチャートを示す。
【０１０２】
図１０（Ｂ）に示すタイミングチャート図において、ワード線に与えられるワード信号ｗｏｒｄ１（以下、ｗｏｒｄ１と略記）、ビット線に与えられるコンフィギュレーションデータに相当する信号ｃｏｎｆｉｇｕｒａｔｉｏｎ  ｄａｔａ（以下、ｃｏｎｆｉｇｕｒａｔｉｏｎ  ｄａｔａと略記）、ノードＦＮ０（以下、ＦＮ０と略記）の電位の変化、切り替え信号ｃｏｎｔｅｘｔ＿Ｗ０（以下、ｃｏｎｔｅｘｔ＿Ｗ０と略記）、プリチャージ制御線ｐｒｅｃｈａｒｇｅ（以下、ｐｒｅｃｈａｒｇｅと略記）の電位の変化、データｃｍｏｕｔ＿ｂ（以下、ｃｍｏｕｔ＿ｂと略記）、および重みデータｃｍｏｕｔ（以下、ｃｍｏｕｔと略記）を図示している。
【０１０３】
コンフィギュレーションデータの書き込みの動作について時刻ｔ１乃至ｔ４で説明する。まず、時刻ｔ２において、ｗｏｒｄ１がＨレベルとなり、ｃｏｎｆｉｇｕｒａｔｉｏｎ  ｄａｔａが１のため、ＦＮ０は、Ｈレベルとなる。このとき、ｐｒｅｃｈａｒｇｅはＬレベルのため、ｃｍｏｕｔ＿ｂは、Ｈレベルとなり、ｃｍｏｕｔ＿ｂがＬレベルとなる。
【０１０４】
時刻ｔ３において、ｗｏｒｄ１がＬレベルとなり、以後、ＦＮ０は、Ｈレベルに固定される。
【０１０５】
次いで、コンフィギュレーションデータの読み出しの動作について時刻ｔ１１乃至ｔ１５で説明する。時刻ｔ１２において、ｐｒｅｃｈａｒｇｅがＬレベルとなる。その結果、ｃｍｏｕｔ＿ｂがＨレベルとなり、ｃｍｏｕｔがＬレベルとなる（プリチャージ動作）。
【０１０６】
時刻ｔ１３においてｐｒｅｃｈａｒｇｅがＨレベルとなり、ｃｏｎｔｅｘｔ＿Ｗ０がＨレベルとなる。また、ＦＮ０はＨレベルを維持している。その結果、ｃｍｏｕｔ＿ｂがＬレベルとなり、ｃｍｏｕｔがＨレベルとなる。
【０１０７】
図１０（Ｂ）ではメモリ回路５２のノードＦＮ０に保持されるデータが１（Ｈレベル）の場合を示している。なおデータが０（Ｌレベル）の場合、時刻ｔ１２においてｃｏｎｔｅｘｔ＿Ｗ０がＨレベルとなっても、ｃｍｏｕｔ＿ｂはＨレベル、ｃｍｏｕｔはＬレベルのままである。
【０１０８】
以上のようにして図９（Ａ）に図示するメモリ回路５２の動作を説明することができる。
【０１０９】
次いで、図１１（Ａ）乃至（Ｃ）では、図９（Ａ）に図示するプリチャージ制御線ｐｒｅｃｈａｒｇｅに与える信号を生成可能な読み出し制御回路８９について説明する。
【０１１０】
なお読み出し制御回路８９は、図１１（Ａ）で図示するように、デコーダ７２で生成された入力切り替え信号ｃｏｎｔｅｘｔ＿ＩＮ＿Ｗ０乃至ｃｏｎｔｅｘｔ＿ＩＮ＿Ｗ３をもとに、プリチャージ制御線ｐｒｅｃｈａｒｇｅに与える信号、およびメモリ回路５２に与える切り替え信号ｃｏｎｔｅｘｔ＿Ｗ０乃至ｃｏｎｔｅｘｔ＿Ｗ３を生成するための回路である。
【０１１１】
読み出し制御回路８９の構成例について説明する。図１１（Ｂ）に図示する読み出し制御回路８９は、遅延回路９０（図中、Ｄｅｌａｙと図示）、および制御回路９１（図中、Ｒｅａｄ＿ＣＴＲと図示）を有する。
【０１１２】
遅延回路９０は、バッファで構成される遅延回路を複数段有する。入力切り替え信号ｃｏｎｔｅｘｔ＿ＩＮ＿Ｗ０乃至ｃｏｎｔｅｘｔ＿ＩＮ＿Ｗ３を与える配線が各遅延回路に接続される。遅延回路９０は、入力切り替え信号ｃｏｎｔｅｘｔ＿ＩＮ＿Ｗ０乃至ｃｏｎｔｅｘｔ＿ＩＮ＿Ｗ３を遅延して出力させる機能を有する。
【０１１３】
制御回路９１は、各入力切り替え信号ｃｏｎｔｅｘｔ＿ＩＮ＿Ｗ０乃至ｃｏｎｔｅｘｔ＿ＩＮ＿Ｗ３と、その遅延信号との演算を取ることで、プリチャージ制御線ｐｒｅｃｈａｒｇｅに与える信号、およびメモリ回路５２に与える切り替え信号ｃｏｎｔｅｘｔ＿Ｗ０乃至ｃｏｎｔｅｘｔ＿Ｗ３を生成する機能を有する。
【０１１４】
図１１（Ｃ）のタイミングチャートを用いて、図１１（Ｂ）に示した読み出し制御回路８９における各信号を生成する動作について説明する。図１１（Ｃ）では、説明のため、時刻ｔ２１乃至ｔ２４を図示している。
【０１１５】
時刻ｔ２２において、入力切り替え信号ｃｏｎｔｅｘｔ＿ＩＮ＿Ｗ０がＬレベルからＨレベルとなり、入力切り替え信号ｃｏｎｔｅｘｔ＿ＩＮ＿Ｗ１がＨレベルからＬレベルとなる。その結果、プリチャージ制御線ｐｒｅｃｈａｒｇｅに与える信号はＨレベルからＬレベルに変化する。
【０１１６】
時刻ｔ２３において入力切り替え信号ｃｏｎｔｅｘｔ＿ＩＮ＿Ｗ０が遅延回路９０で遅延されたためにＬレベルからＨレベルとなる。併せて入力切り替え信号ｃｏｎｔｅｘｔ＿ＩＮ＿Ｗ１が遅延回路９０で遅延されたためにＨレベルからＬレベルとなる。その結果、プリチャージ制御線ｐｒｅｃｈａｒｇｅに与える信号はＬレベルからＨベルに変化する。また、切り替え信号ｃｏｎｔｅｘｔ＿Ｗ０がＬレベルからＨレベルに変化し、切り替え信号ｃｏｎｔｅｘｔ＿Ｗ１がＨレベルからＬレベルに変化する。
【０１１７】
以上のようにして図１１（Ａ）に図示する読み出し制御回路８９の動作を説明することができる。
【０１１８】
図１２に、半導体装置を組み込んだＩＣの一例を示す。図１２に示すＩＣ７０００は、リード７００１及び回路部７００３を有する。回路部７００３には、本実施の形態で示した各種の回路が１のダイに設けられている。回路部７００３は積層構造をもち、Ｓｉトランジスタ層７０３１、配線層７０３２、ＯＳトランジスタ層７０３３に大別される。ＯＳトランジスタ層７０３３をＳｉトランジスタ層７０３１に積層して設けることができるため、ＩＣ７０００の小型化が容易である。
【０１１９】
図１２では、ＩＣ７０００のパッケージにＱＦＰ（Ｑｕａｄ  Ｆｌａｔ  Ｐａｃｋａｇｅ）を適用しているが、パッケージの態様はこれに限定されない。
【０１２０】
Ｓｉトランジスタを有する乗算回路および加算回路と、ＯＳトランジスタを有するメモリ回路は、全て、Ｓｉトランジスタ層７０３１、配線層７０３２およびＯＳトランジスタ層７０３３に形成することができる。すなわち、上記半導体装置を構成する素子は、同一の製造プロセスで形成することが可能である。そのため、図１２に示すＩＣは、構成する素子が増えても製造プロセスを増やす必要がなく、上記半導体装置を低コストで組み込むことができる。
【０１２１】
＜スイッチ回路の構成＞
図１で図示した半導体装置１０とは異なる半導体装置１０Ａを用いてスイッチ回路２２の構成について説明する。
【０１２２】
図１３（Ａ）は、半導体装置１０Ａを説明するためのブロック図である。図１３（Ａ）に図示する半導体装置１０Ａの構成とすることで、演算回路２１とスイッチ回路２２とを一つのエリア（ローカルエリア）に単位回路として設計することができるため、好適である。その他の構成は図１と同じである。
【０１２３】
図１３（Ａ）に図示するスイッチ回路２２は、演算回路２１間の接続構成を切り替えるために、上下左右にある演算回路２１との接続状態を切り替える機能を有する。図１３（Ａ）中の「Ｕ」「Ｄ」「Ｌ」「Ｒ」は、それぞれ「上」方向、「下」方向、「左」方向、「右」方向の演算回路２１と電気的に接続するための配線を表している。
【０１２４】
図１３（Ｂ）には、スイッチ回路２２の一例を示す図である。図中、データｓｏｕｔおよび演算データｏｕｔは、図８（Ａ）、（Ｂ）で説明した演算回路２１の出力データに相当する。データｓｏｕｔおよび演算データｏｕｔを出力するための配線は、上下左右のいずれかの配線に接続される。交点には、配線同士を接続するためのスイッチ２５が配置される。スイッチ２５は、接続構成に関するコンフィギュレーションデータを記憶するためのメモリ回路を有する。
【０１２５】
メモリ回路を有するスイッチ２５の構成について、図１４（Ａ）、（Ｂ）を参照して説明する。スイッチ２５が有するメモリ回路はコンテキスト数に応じて設けられた複数のメモリセル毎に接続構成に応じたデータを保持し、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｃをデコードして得られる切り替え信号に従って選択される演算回路２１と上下左右の配線との間の接続を切り替える機能を有する。
【０１２６】
スイッチ２５は、フリップフロップ８０、デコーダ８１、複数のメモリセル８３、を有する。メモリセル８３は、トランジスタ８４−８６を有する。なお図１４（Ａ）では、一例として４ビットのデータを伝えるためのスイッチを図示している。
【０１２７】
フリップフロップ８０は、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｃを保持する機能を有する。デコーダ７２は、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｃをデコードして切り替え信号ｃｏｎｔｅｘｔ＿Ｃ０乃至ｃｏｎｔｅｘｔ＿Ｃ１を出力する機能を有する。メモリセル８３は、接続情報に対応するデータを記憶し、切り替え信号ｃｏｎｔｅｘｔ＿Ｃ０乃至ｃｏｎｔｅｘｔ＿Ｃ１の制御に応じて、出力する機能を有する。
【０１２８】
トランジスタ８４のソース又はドレインの一方は、接続情報（コンフィギュレーションデータ）を書き込むための配線に接続される。トランジスタ８４のゲートは、ワード信号ｗｏｒｄ（図中，ｗｏｒｄ１−２で図示）を与える配線に接続される。トランジスタ８５のゲートは、トランジスタ８４のソースまたはドレインの他方に接続される。トランジスタ８５のゲートと、トランジスタ８４のソースまたはドレインの他方とが接続されるノードは、ノードＦＮ（図中、ＦＮ０−ＦＮ１で図示）という。トランジスタ８５のソース又はドレインの一方は、配線８７に接続される。トランジスタ８５のソース又はドレインの他方は、トランジスタ８６のソース又はドレインの一方に接続される。トランジスタ８６のゲートは、切り替え信号ｃｏｎｔｅｘｔ＿Ｃ０または切り替え信号ｃｏｎｔｅｘｔ＿Ｃ１のいずれか一を与える配線に接続される。トランジスタ８６のソース又はドレインの他方は、演算回路２１のデータ（ｏｕｔ、ｓｏｕｔ）を出力する配線に接続される。
【０１２９】
トランジスタ８４は、チャネル形成領域に酸化物半導体を有するトランジスタ（ＯＳトランジスタ）である。ＯＳトランジスタは、オフ電流が小さい。そのためトランジスタ８４を非導通状態とすることでノードＦＮに保持した電位を保持することができる。
【０１３０】
ノードＦＮに保持した電位はトランジスタ８５の導通状態または非導通状態を制御することができる。そのため、切り替え信号ｃｏｎｔｅｘｔ＿Ｃ０によってトランジスタ８６が導通状態となると、ノードＦＮに保持した電位に応じた演算回路２１のデータの電位を配線８７に伝えることができる。
【０１３１】
ＯＳトランジスタを用いない場合、図１４（Ｂ）に図示するようにインバータラッチ８８を用いて重みデータに相当するデータを記憶する構成としてもよい。
【０１３２】
＜ローカルエリアの構成＞
図１５では、図１３（Ａ）で図示したローカルエリア２６の構成について説明する。
【０１３３】
図１５に図示するローカルエリア２６には、上述したようにコントローラ１２から２つのコンテキスト信号ｃｏｎｔｅｘｔ＿Ｗ［１：０］、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｃが入力される。
【０１３４】
図１５に示すローカルエリア２６には、上記説明したフリップフロップ７１、デコーダ７２、を図示している。デコーダ７２は、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗ［１：０］をデコードして切り替え信号ｃｏｎｔｅｘｔ＿Ｗ０乃至切り替え信号ｃｏｎｔｅｘｔ＿Ｗ３を演算回路２１に出力する。
【０１３５】
演算回路２１は、コンフィギュレーションメモリ２８、トランジスタ７６および演算部２７を有する。コンフィギュレーションメモリ２８は、図９（Ａ）で説明したトランジスタ７４およびトランジスタ７５で構成されるメモリであり、ノードＦＮでデータに応じた電荷を保持することができる。トランジスタ７６は、図９（Ａ）で説明したトランジスタ７６に相当する。演算部２７は、図８（Ａ）、（Ｂ）で説明した乗算回路５３および加算回路５４に相当する。
【０１３６】
スイッチ回路２２は、コンフィギュレーションメモリ２９、トランジスタ８６および配線８７を有する。コンフィギュレーションメモリ２９は、図１４（Ａ）で説明したトランジスタ８４およびトランジスタ８５で構成されるメモリであり、ノードＦＮでデータに応じた電荷を保持することができる。トランジスタ８６は、図１４（Ａ）で説明したトランジスタ８６に相当する。配線８７は、図１４（Ａ）で説明した配線８７に相当する。
【０１３７】
図１６には、コントローラ１２から積和演算回路１１にある複数のローカルエリア２６にコンテキスト信号ｃｏｎｔｅｘｔ＿Ｗ、およびコンテキスト信号ｃｏｎｔｅｘｔ＿Ｃを伝えるための構成を図示している。積和演算回路１１では、高速なコンテキストの切り替えを実現するために、例えばコンテキスト信号ｃｏｎｔｅｘｔ＿Ｗ、およびコンテキスト信号ｃｏｎｔｅｘｔ＿Ｃを伝える配線をクロックツリーと同様の構成とし、ローカルエリア２６のフリップフロップ７１，８０に入力される構成とする。
【０１３８】
フリップフロップ７１，８０の出力信号は、デコーダ７２，８１でデコードした後、ローカルエリア２６内のコンテキスト選択用のトランジスタ７６，８６に供給される。限られた領域であるローカルエリア２６内への信号供給であるため配線遅延等が軽減され、トランジスタ７６，８６を高速で導通状態または非導通状態に制御できる。特にコンテキスト数が多くなるとバッファツリーで供給すべき信号線が増加するため、ローカルエリア２６のフリップフロップ７１，８０の出力信号をデコーダ７２，８１でデコードする構成によりコンテキスト信号数の数を低減することができる。本構成とすることでコンテキストの切り替え時のタイミング制御が容易になり、高い動作周波数時にも動作を安定化させることができる。
【０１３９】
＜電子機器＞
上記半導体装置を備えた電子機器の例について図１７を用いて説明を行う。
【０１４０】
図１７（Ａ）に示すロボット２１００は、演算装置２１１０、照度センサ２１０１、マイクロフォン２１０２、上部カメラ２１０３、スピーカ２１０４、ディスプレイ２１０５、下部カメラ２１０６、障害物センサ２１０７、および移動機構２１０８を備える。
【０１４１】
ロボット２１００において、演算装置２１１０、照度センサ２１０１、上部カメラ２１０３、ディスプレイ２１０５、下部カメラ２１０６および障害物センサ２１０７等に、上記半導体装置を使用することができる。
【０１４２】
マイクロフォン２１０２は、使用者の話し声及び環境音等を検知する機能を有する。また、スピーカ２１０４は、音声を発する機能を有する。ロボット２１００は、マイクロフォン２１０２およびスピーカ２１０４を用いて、使用者とコミュニケーションをとることが可能である。
【０１４３】
ディスプレイ２１０５は、種々の情報の表示を行う機能を有する。ロボット２１００は、使用者の望みの情報をディスプレイ２１０５に表示することが可能である。ディスプレイ２１０５は、タッチパネルを搭載していてもよい。
【０１４４】
上部カメラ２１０３および下部カメラ２１０６は、ロボット２１００の周囲を撮像する機能を有する。また、障害物センサ２１０７は、移動機構２１０８を用いてロボット２１００が前進する際の進行方向における障害物の有無を察知することができる。ロボット２１００は、上部カメラ２１０３、下部カメラ２１０６および障害物センサ２１０７を用いて、周囲の環境を認識し、安全に移動することが可能である。
【０１４５】
図１７（Ｂ）に示す飛行体２１２０は、演算装置２１２１と、プロペラ２１２３と、カメラ２１２２と、を有し、自律して飛行する機能を有する。
【０１４６】
飛行体２１２０において、演算装置２１２１およびカメラ２１２２に上記半導体装置を用いることができる。
【０１４７】
図１７（Ｂ）は、自動車の一例を示す外観図である。自動車２９８０は、カメラ２９８１等を有する。また、自動車２９８０は、赤外線レーダー、ミリ波レーダー、レーザーレーダーなど各種センサなどを備える。自動車２９８０は、カメラ２９８１が撮影した画像を解析し、ガードレール１２０１や歩行者の有無など、周囲の交通状況を判断し、自動運転を行うことができる。
【０１４８】
自動車２９８０において、カメラ２９８１に上記半導体装置を用いることができる。
【０１４９】
＜本明細書等の記載に関する付記＞
以上の実施の形態における各構成の説明について、以下に付記する。
【０１５０】
各実施の形態に示す構成は、他の実施の形態に示す構成と適宜組み合わせて、本発明の一態様とすることができる。また、１つの実施の形態の中に、複数の構成例が示される場合は、構成例を適宜組み合わせることが可能である。
【０１５１】
なお、ある一つの実施の形態の中で述べる内容（一部の内容でもよい）は、その実施の形態で述べる別の内容（一部の内容でもよい）、及び／又は、一つ若しくは複数の別の実施の形態で述べる内容（一部の内容でもよい）に対して、適用、組み合わせ、又は置き換えなどを行うことが出来る。
【０１５２】
なお、実施の形態の中で述べる内容とは、各々の実施の形態において、様々な図を用いて述べる内容、又は明細書に記載される文章を用いて述べる内容のことである。
【０１５３】
なお、ある一つの実施の形態において述べる図（一部でもよい）は、その図の別の部分、その実施の形態において述べる別の図（一部でもよい）、及び／又は、一つ若しくは複数の別の実施の形態において述べる図（一部でもよい）に対して、組み合わせることにより、さらに多くの図を構成させることが出来る。
【０１５４】
また本明細書等において、ブロック図では、構成要素を機能毎に分類し、互いに独立したブロックとして示している。しかしながら実際の回路等においては、構成要素を機能毎に切り分けることが難しく、一つの回路に複数の機能が係わる場合や、複数の回路にわたって一つの機能が関わる場合があり得る。そのため、ブロック図のブロックは、明細書で説明した構成要素に限定されず、状況に応じて適切に言い換えることができる。
【０１５５】
また、図面において、大きさ、層の厚さ、又は領域は、説明の便宜上任意の大きさに示したものである。よって、必ずしもそのスケールに限定されない。なお図面は明確性を期すために模式的に示したものであり、図面に示す形状又は値などに限定されない。例えば、ノイズによる信号、電圧、若しくは電流のばらつき、又は、タイミングのずれによる信号、電圧、若しくは電流のばらつきなどを含むことが可能である。
【０１５６】
本明細書等において、トランジスタの接続関係を説明する際、ソースとドレインとの一方を、「ソース又はドレインの一方」（又は第１電極、又は第１端子）と表記し、ソースとドレインとの他方を「ソース又はドレインの他方」（又は第２電極、又は第２端子）と表記している。これは、トランジスタのソースとドレインは、トランジスタの構造又は動作条件等によって変わるためである。なおトランジスタのソースとドレインの呼称については、ソース（ドレイン）端子や、ソース（ドレイン）電極等、状況に応じて適切に言い換えることができる。
【０１５７】
また、本明細書等において「電極」や「配線」の用語は、これらの構成要素を機能的に限定するものではない。例えば、「電極」は「配線」の一部として用いられることがあり、その逆もまた同様である。さらに、「電極」や「配線」の用語は、複数の「電極」や「配線」が一体となって形成されている場合なども含む。
【０１５８】
また、本明細書等において、電圧と電位は、適宜言い換えることができる。電圧は、基準となる電位からの電位差のことであり、例えば基準となる電位をグラウンド電圧（接地電圧）とすると、電圧を電位に言い換えることができる。グラウンド電位は必ずしも０Ｖを意味するとは限らない。なお電位は相対的なものであり、基準となる電位によっては、配線等に与える電位を変化させる場合がある。
【０１５９】
なお本明細書等において、「膜」、「層」などの語句は、場合によっては、または、状況に応じて、互いに入れ替えることが可能である。例えば、「導電層」という用語を、「導電膜」という用語に変更することが可能な場合がある。または、例えば、「絶縁膜」という用語を、「絶縁層」という用語に変更することが可能な場合がある。
【０１６０】
本明細書等において、スイッチとは、導通状態（オン状態）、または、非導通状態（オフ状態）になり、電流を流すか流さないかを制御する機能を有するものをいう。または、スイッチとは、電流を流す経路を選択して切り替える機能を有するものをいう。
【０１６１】
一例としては、電気的スイッチ又は機械的なスイッチなどを用いることができる。つまり、スイッチは、電流を制御できるものであればよく、特定のものに限定されない。
【０１６２】
電気的なスイッチの一例としては、トランジスタ（例えば、バイポーラトランジスタ、ＭＯＳトランジスタなど）、ダイオード（例えば、ＰＮダイオード、ＰＩＮダイオード、ショットキーダイオード、ＭＩＭ（Ｍｅｔａｌ  Ｉｎｓｕｌａｔｏｒ  Ｍｅｔａｌ）ダイオード、ＭＩＳ（Ｍｅｔａｌ  Ｉｎｓｕｌａｔｏｒ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）ダイオード、ダイオード接続のトランジスタなど）、又はこれらを組み合わせた論理回路などがある。
【０１６３】
なお、スイッチとしてトランジスタを用いる場合、トランジスタの「導通状態」とは、トランジスタのソースとドレインが電気的に短絡されているとみなせる状態をいう。また、トランジスタの「非導通状態」とは、トランジスタのソースとドレインが電気的に遮断されているとみなせる状態をいう。なおトランジスタを単なるスイッチとして動作させる場合には、トランジスタの極性（導電型）は特に限定されない。
【０１６４】
機械的なスイッチの一例としては、デジタルマイクロミラーデバイス（ＤＭＤ）のように、ＭＥＭＳ（マイクロ・エレクトロ・メカニカル・システム）技術を用いたスイッチがある。そのスイッチは、機械的に動かすことが可能な電極を有し、その電極が動くことによって、導通と非導通とを制御して動作する。
【０１６５】
本明細書等において、チャネル長とは、例えば、トランジスタの上面図において、半導体（またはトランジスタがオン状態のときに半導体の中で電流の流れる部分）とゲートとが重なる領域、またはチャネルが形成される領域における、ソースとドレインとの間の距離をいう。
【０１６６】
本明細書等において、チャネル幅とは、例えば、半導体（またはトランジスタがオン状態のときに半導体の中で電流の流れる部分）とゲート電極とが重なる領域、またはチャネルが形成される領域における、ソースとドレインとが向かい合っている部分の長さをいう。
【０１６７】
本明細書等において、ＡとＢとが接続されている、とは、ＡとＢとが直接接続されているものの他、電気的に接続されているものを含むものとする。ここで、ＡとＢとが電気的に接続されているとは、ＡとＢとの間で、何らかの電気的作用を有する対象物が存在するとき、ＡとＢとの電気信号の授受を可能とするものをいう。
【符号の説明】
【０１６８】
１０：半導体装置、１０Ａ：半導体装置、１１：積和演算回路、１２：コントローラ、１３：データ処理回路、１４：ＳＲＡＭ、Ｔ０：時刻、Ｔ１：時刻、Ｔ２：時刻、Ｔ３：時刻、Ｔ４：時刻、Ｗ０：重みデータ、Ｗ１：重みデータ、Ｗ２：重みデータ、Ｗ３：重みデータ、２１：演算回路、２１Ａ：演算回路、２１Ｂ：演算回路、２２：スイッチ回路、３１：入力データ、３２＿１−３１＿４：重みデータ、３３＿１−３３＿４：積和演算データ、２３：積和演算処理、２４：和演算処理、６１：入力層、６２：中間層、６３：出力層、６５：畳み込み層、６６：畳み込み層、６７：プーリング層、６８：畳み込み層、６９：プーリング層、７０：全結合層、４２：フリップフロップ、４３：デコーダ、４４：Ｉ２Ｃコントローラ、４５：ルックアップテーブル、５１：入力レジスタ、５６Ａ−５６Ｃ：切り替え回路、５７Ａ−５７Ｄ：メモリ素子、５２：メモリ回路、５３：乗算回路、５４：加算回路、５５Ａ−５５Ｂ：出力レジスタ、５８：パワースイッチ、７１：フリップフロップ、７２：デコーダ、７３：メモリセル、７４：トランジスタ、７５：トランジスタ、７６：トランジスタ、７７：トランジスタ、７８：インバータラッチ、７０００：ＩＣ、７００１：リード、７００３：回路部、７０３１：Ｓｉトランジスタ層、７０３２：配線層、７０３３：ＯＳトランジスタ層、２６：ローカルエリア、２５：スイッチ、２７：演算部、８０：フリップフロップ、８１：デコーダ、８３：メモリセル、８４：トランジスタ、８５：トランジスタ、８６：トランジスタ、８７：配線、８９：読み出し制御回路、９０：遅延回路、９１：制御回路、２８：コンフィギュレーションメモリ、２９：コンフィギュレーションメモリ、１２０１：ガードレール、２１００：ロボット、２１０１：照度センサ、２１０２：マイクロフォン、２１０３：上部カメラ、２１０４：スピーカ、２１０５：ディスプレイ、２１０６：下部カメラ、２１０７：障害物センサ、２１０８：移動機構、２１１０：演算装置、２１２０：飛行体、２１２１：演算装置、２１２２：カメラ、２１２３：プロペラ、２９８０：自動車、２９８１：カメラ
【図１】
2020107891.tif 000004
【図２】
2020107891.tif 000005
【図３】
2020107891.tif 000006
【図４】
2020107891.tif 000007
【図５】
2020107891.tif 000008
【図６】
2020107891.tif 000009
【図７】
2020107891.tif 000010
【図８】
2020107891.tif 000011
【図９】
2020107891.tif 000012
【図１０】
2020107891.tif 000013
【図１１】
2020107891.tif 000014
【図１２】
2020107891.tif 000015
【図１３】
2020107891.tif 000016
【図１４】
2020107891.tif 000017
【図１５】
2020107891.tif 000018
【図１６】
2020107891.tif 000019
【図１７】
2020107891.tif 000020
【手続補正書】
【提出日】令和2年2月28日(2020.2.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
重みデータを保持する保持部を備えた第１回路と、
入力データと、前記重みデータと、に基づく演算を行う第１演算部を備えた第２回路と、
を有し、
前記保持部は、第１の層に形成され、
前記第１演算部は、前記第１の層とは異なる第２の層に形成されている、半導体装置。
【請求項２】
重みデータを保持する保持部を備えた第１回路と、
入力データと、前記重みデータと、に基づく演算を行う第１演算部を備えた第２回路と、
を有し、
前記保持部は、第１の層に形成され、
前記第１演算部は、前記第１の層とは異なる第２の層に形成され、
前記重みデータは、デジタル信号である、半導体装置。
【請求項３】
重みデータを保持する保持部を備えた第１回路と、
第１入力データと、前記重みデータと、に基づく演算を行う第１演算部と、
第２入力データと、前記第１演算部の出力データと、に基づく演算を行う第２演算部と、
を備えた第２回路と、を有し、
前記保持部は、第１の層に形成され、
前記第１演算部および前記第２演算部は、前記第１の層とは異なる第２の層に形成される、半導体装置。
【請求項４】
重みデータを保持する保持部を備えた第１回路と、
第１入力データと、前記重みデータと、に基づく演算を行う第１演算部と、
第２入力データと、前記第１演算部の出力データと、に基づく演算を行う第２演算部と、
を備えた第２回路と、を有し、
前記保持部は、第１の層に形成され、
前記第１演算部および前記第２演算部は、前記第１の層とは異なる第２の層に形成され、
前記重みデータは、デジタル信号である、半導体装置。
【請求項５】
請求項３または４において、
前記第２演算部は、加算を行う機能を有する、半導体装置。
【請求項６】
請求項１乃至５のいずれか一において、
前記第１演算部は、乗算を行う機能を有する、半導体装置。
【請求項７】
請求項１乃至６のいずれか一において、
前記第１回路は、メモリセルを複数有する、半導体装置。
【請求項８】
請求項７において、
複数の前記メモリセルは、それぞれ第１配線に電気的に接続され、
前記メモリセルが保持する前記重みデータは、前記第１配線を介して、前記第１演算部に出力される、半導体装置
【請求項９】
請求項１乃至８のいずれか一において、
前記第１回路は、第１トランジスタを有し、
前記第１トランジスタは、チャネル形成領域に酸化物半導体を有する、半導体装置。
【請求項１０】
請求項９において、
前記保持部は、前記重みデータを保持するノードを有し、
前記ノードは、前記第１トランジスタのソースまたはドレインの一方に電気的に接続される、半導体装置。
【請求項１１】
請求項１乃至１０のいずれか一において、
前記第２回路は、第２トランジスタを有し、
前記第２トランジスタは、チャネル形成領域にシリコンを有する、半導体装置。
【請求項１２】
請求項１乃至１１のいずれか一に記載の半導体装置を有する回路部と、
リードと、を有する、集積回路。