(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-24
(45)【発行日】2024-07-02
(54)【発明の名称】半導体装置
(51)【国際特許分類】
G06G 7/60 20060101AFI20240625BHJP
H03K 19/17756 20200101ALI20240625BHJP
H03K 19/1776 20200101ALI20240625BHJP
G06G 7/16 20060101ALI20240625BHJP
G06G 7/14 20060101ALI20240625BHJP
H03K 19/17704 20200101ALN20240625BHJP
【FI】
G06G7/60
H03K19/17756
H03K19/1776
G06G7/16 510
G06G7/14
H03K19/17704
(21)【出願番号】P 2023089527
(22)【出願日】2023-05-31
(62)【分割の表示】P 2022130010の分割
【原出願日】2018-05-07
【審査請求日】2023-06-13
(31)【優先権主張番号】P 2017099514
(32)【優先日】2017-05-19
(33)【優先権主張国・地域又は機関】JP
(31)【優先権主張番号】P 2017133264
(32)【優先日】2017-07-07
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000153878
【氏名又は名称】株式会社半導体エネルギー研究所
(72)【発明者】
【氏名】上妻 宗広
(72)【発明者】
【氏名】青木 健
(72)【発明者】
【氏名】米田 誠一
(72)【発明者】
【氏名】黒川 義元
【審査官】佐藤 実
(56)【参考文献】
【文献】特開2016-219011(JP,A)
【文献】米国特許第5550993(US,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06G 7/00 - 7/80
H03K 19/098-19/23
(57)【特許請求の範囲】
【請求項1】
複数の演算回路と、複数のスイッチ回路と、を有する積和演算回路と、
コントローラと、を有し、
前記演算回路は、乗算回路と、加算回路と、第1のメモリと、を有し、
前記第1のメモリは、第1のコンテキスト信号の切り替えに応じて前記乗算回路に出力される第1のデータを記憶する機能を有し、
前記スイッチ回路は、前記演算回路間での接続状態を切り替えるためのスイッチと、第2のメモリと、を有し、
前記第2のメモリは、第2のコンテキスト信号の切り替えに応じて前記スイッチの接続状態を切り替えるための第2のデータを記憶する機能を有し、
前記コントローラは、第3のコンテキスト信号を基に前記第1のコンテキスト信号および第2のコンテキスト信号を生成する機能を有し、
前記第2のコンテキスト信号に基づいて切り替えられる第2のコンテキスト数は、前記第1のコンテキスト信号に基づいて切り替えられる第1のコンテキスト数より小さいことを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の一態様は、半導体装置に関する。特に、積和演算処理を行う機能を有する半導
体装置に関する。
【背景技術】
【0002】
複数の回路構成に対応するコンフィギュレーションデータをメモリに記憶したプログラ
マブルな演算回路と、ルーティングスイッチとを組み合わせたマルチコンテキスト方式の
FPGA(Field Programmable Gate Array)などの半導
体装置が提案されている(例えば、非特許文献1)。マルチコンテキスト方式とは、使用
するコンフィギュレーションデータを切り替えることでFPGAの回路構成を切り替える
方式である。回路構成情報を表すコンフィギュレーションデータをコンテキストという。
【0003】
マルチコンテキスト方式は、予めメモリに記憶された複数のコンフィギュレーションデ
ータのセット(メモリセット)の中からいずれか一つに対応するコンテキストを選択する
ことで回路構成の切り替えを可能とする方式である。
【先行技術文献】
【非特許文献】
【0004】
【文献】H. M. Waidyasooriya et al., ”Implementation of a Partially Reconfigurable Multi-Context FPGA Based on Asynchronous Architecture”, IEICE TRANSACTIONS on Electronics Vol.E92-C, pp.539-549, 2009
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながらコンテキスト数が増加するにつれて各コンテキストに対応するメモリセッ
トが必要となるため、回路の実装面積の増加が問題となる。また、回路の一部データのみ
を変更したい場合にも、コンテキストスイッチ時にデータセットを全て更新する必要があ
るため、回路規模が増加するにつれて回路性能が低下する問題がある。
【0006】
本発明の一態様は、新規な構成の半導体装置を提供することを課題の一とする。または
本発明の一態様は、回路規模の増大を抑制できる、新規な半導体装置を提供することを課
題の一とする。
【0007】
なお、これらの課題の記載は、他の課題の存在を妨げるものではない。なお、本発明の
一態様は、これらの課題の全てを解決する必要はないものとする。なお、これら以外の課
題は、明細書、図面、請求項などの記載から、自ずと明らかとなるものであり、明細書、
図面、請求項などの記載から、これら以外の課題を抽出することが可能である。
【課題を解決するための手段】
【0008】
本発明の一態様は、複数の演算回路と、複数のスイッチ回路と、を有する積和演算回路
と、コントローラと、を有し、演算回路は、乗算回路と、加算回路と、第1のメモリと、
を有し、第1のメモリは、第1のコンテキスト信号の切り替えに応じて乗算回路に出力さ
れる第1のデータを記憶する機能を有し、スイッチ回路は、演算回路間での接続状態を切
り替えるためのスイッチと、第2のメモリと、を有し、第2のメモリは、第2のコンテキ
スト信号の切り替えに応じてスイッチの接続状態を切り替えるための第2のデータを記憶
する機能を有し、コントローラは、第3のコンテキスト信号を基に第1のコンテキスト信
号および第2のコンテキスト信号を生成する機能を有し、第2のコンテキスト信号に基づ
いて切り替えられる第2のコンテキスト数は、第1のコンテキスト信号に基づいて切り替
えられる第1のコンテキスト数より小さい半導体装置である。
【0009】
本発明の一態様において、第1のデータは、ニューラルネットワークにおける重みパラ
メータに相当するデータである半導体装置が好ましい。
【0010】
本発明の一態様において、コントローラは、第1のデコーダおよびルックアップテーブ
ルを有し、コントローラは、第3のコンテキスト信号を第1のコンテキスト信号として出
力する機能を有し、第1のデコーダは、外部信号に応じて、ルックアップテーブルに記憶
されたデータを参照して第2のコンテキスト信号を出力する機能を有する半導体装置が好
ましい。
【0011】
本発明の一態様において、外部信号は、シリアルバスの信号である半導体装置が好まし
い。
【0012】
本発明の一態様において、演算回路は、第2のデコーダを有し、スイッチ回路は、第3
のデコーダを有し、第1のメモリは第1のコンテキスト切り替えスイッチを有し、第2の
メモリは第2のコンテキスト切り替えスイッチを有し、第2のデコーダは、第1のコンテ
キスト信号をもとに第1の切り替え信号を生成する機能を有し、第3のデコーダは、第2
のコンテキスト信号をもとに第2の切り替え信号を生成する機能を有し、第1の切り替え
信号は、第1のコンテキスト切り替えスイッチの導通状態を制御する信号であり、第2の
切り替え信号は、第2のコンテキスト切り替えスイッチの導通状態を制御する信号である
半導体装置が好ましい。
【0013】
本発明の一態様において、演算回路は、さらに第1のレジスタを有し、第1のレジスタ
は、入力データを保持する機能を有し、乗算回路は、第1のデータと入力データとの積に
応じた乗算データを出力する機能を有し、加算回路は、スイッチ回路の切り替えによって
電気的に接続された別の演算回路から出力される演算結果と、乗算データとの和に応じた
加算データを出力する機能を有する半導体装置が好ましい。
【0014】
本発明の一態様において、第1のメモリおよび第2のメモリは、それぞれトランジスタ
を有し、トランジスタは、チャネル形成領域に酸化物半導体を有するトランジスタである
半導体装置が好ましい。
【0015】
なおその他の本発明の一態様については、以下で述べる実施の形態における説明、およ
び図面に記載されている。
【発明の効果】
【0016】
本発明の一態様は、新規な構成の半導体装置を提供することができる。または本発明の
一態様は、回路規模の増大を抑制できる、新規な半導体装置を提供することができる。
【0017】
なお、これらの効果の記載は、他の効果の存在を妨げるものではない。なお、本発明の
一態様は、これらの効果の全てを有する必要はない。なお、これら以外の効果は、明細書
、図面、請求項などの記載から、自ずと明らかとなるものであり、明細書、図面、請求項
などの記載から、これら以外の効果を抽出することが可能である。
【図面の簡単な説明】
【0018】
【
図7】半導体装置を説明するためのタイミングチャート。
【
図10】半導体装置回路を説明するための回路図およびタイミングチャート。
【
図11】半導体装置回路を説明するための回路図およびタイミングチャート。
【
図12】半導体装置を組み込んだICの構成例を示す斜視模式図。
【発明を実施するための形態】
【0019】
以下、実施の形態について図面を参照しながら説明する。但し、実施の形態は多くの異
なる態様で実施することが可能であり、趣旨およびその範囲から逸脱することなくその形
態および詳細を様々に変更し得ることは当業者であれば容易に理解される。従って、本発
明は、以下の実施の形態の記載内容に限定して解釈されるものではない。
【0020】
なお本明細書等において、「第1」、「第2」、「第3」という序数詞は、構成要素の
混同を避けるために付したものである。従って、構成要素の数を限定するものではない。
また、構成要素の順序を限定するものではない。また例えば、本明細書等の実施の形態の
一において「第1」に言及された構成要素を、他の実施の形態、あるいは特許請求の範囲
において「第2」に言及された構成要素とすることもありうる。また例えば、本明細書等
の実施の形態の一において「第1」に言及された構成要素を、他の実施の形態、あるいは
特許請求の範囲において省略することもありうる。
【0021】
なお図面において、同一の要素または同様な機能を有する要素、同一の材質の要素、あ
るいは同時に形成される要素等には同一の符号を付す場合があり、その繰り返しの説明は
省略する場合がある。
【0022】
<半導体装置の構成>
本発明の一態様である半導体装置の構成について説明する。
【0023】
図1は、半導体装置10のブロック図である。半導体装置10は、積和演算回路11、
コントローラ12、データ処理回路13およびSRAM14を有する。
【0024】
積和演算回路11は、複数の演算回路21および複数のスイッチ回路22を有する。な
お積和演算回路とは、積和演算を行う回路である。積和演算は、乗算によって得られたデ
ータ同士を加算する演算である。積和演算回路11は積和演算に限らず設定した演算を行
うことが可能である。そのため、積和演算回路11をプログラマブル回路という場合もあ
る。
【0025】
積和演算回路11が有する演算回路21は、コンテキスト信号の制御によって設定した
機能に切り替えることができる、所謂プログラマブルな演算回路である。演算回路21は
、乗算回路、加算回路、およびメモリ回路を有する。乗算回路は、入力データと、メモリ
回路に記憶されたデータとの積に応じた乗算データを出力する回路である。加算回路は、
別の演算回路から入力される演算結果に相当するデータと、乗算データとの和に応じた加
算データを出力する回路である。別の演算回路から入力される演算結果に相当するデータ
は、別の演算回路における加算データである。メモリ回路は、ニューラルネットワークに
おける重みパラメータに相当するデータ(重みデータ)を記憶する回路である。このデー
タはデジタル信号とすることで、ノイズに強く、重みデータの切り替えを高速で行うこと
ができる。演算回路21は、コンテキスト信号の切り替えに応じて重みデータを切り替え
ることで、異なる重みパラメータを用いた積和演算を行うことができる。積和演算回路1
1に入力される、演算回路21の機能を切り替えるためのコンテキスト信号は、コンテキ
スト信号context_Wとして説明する。
【0026】
積和演算回路11は例えば、畳み込みニューラルネットワーク(Convolutio
nal Neural Network)で行う積和演算を行う回路である。コンテキス
ト切り替えに応じて異なる重みパラメータを用いた積和演算を実行するとともに、コンテ
キスト切り替えに応じて異なる接続状態を用いることで、全結合層や畳み込み層といった
異なる層における積和演算を実行することができる。積和演算回路11に入力される入力
データは、例えば画像データなどである。
【0027】
積和演算回路11が有するスイッチ回路22は、コンテキスト信号の制御によって設定
した機能に切り替えることができる、所謂プログラマブルなスイッチ回路である。スイッ
チ回路22は、演算回路21の間に設けられる。スイッチ回路22は、スイッチとして機
能するトランジスタと、メモリ回路と、を有する。スイッチ回路22が有するスイッチは
、演算回路21間での接続状態を切り替える機能を有する。スイッチ回路22が有するメ
モリ回路は、スイッチの接続状態を切り替えるためのデータを記憶する回路である。スイ
ッチ回路22は、コンテキスト信号の切り替えに応じてスイッチの接続状態を切り替える
ことで、演算回路21で得られたデータを所定の回路に入出力させることができる。積和
演算回路11に入力される、スイッチ回路22の機能を切り替えるためのコンテキスト信
号は、コンテキスト信号context_Cとして説明する。
【0028】
コントローラ12は、外部から入力されるコンテキスト信号を基にコンテキスト信号c
ontext_Cおよびコンテキスト信号context_Wを生成する機能を有する回
路である。コントローラ12に入力されるコンテキスト信号は、コンテキスト信号con
text_inとして説明する。コントローラ12には、コンテキスト信号contex
t_inの他、クロック信号clkが入力される。
【0029】
コントローラ12は、コンテキスト信号context_inをもとに、コンテキスト
信号context_Cに基づいて切り替えられるコンテキスト数を、コンテキスト信号
context_Wに基づいて切り替えられるコンテキスト数より小さくして出力する。
例えば
図1では、コンテキスト信号context_inを2ビットの信号とし、con
text_in[1:0]と記している。コンテキスト信号context_in[1:
0]は、コンテキスト信号context_in[0]およびコンテキスト信号cont
ext_in[1]の組み合わせを意味する。
【0030】
図1の例でコンテキスト信号context_Wは、コンテキスト信号context
_inと同様に、context_W[1:0]と記している。コンテキスト信号con
text_W[1:0]は2ビットの信号であり、4つのコンテキストを切り替えること
ができる。
図1の例でコンテキスト信号context_Cは、context_Cと記
している。
図1の例でコンテキスト信号context_Cは、context_Cと記
している。コンテキスト信号context_Cは1ビットの信号であり、2つのコンテ
キストを切り替えることができる。なおコンテキスト信号context_Wおよびコン
テキスト信号context_Cに基づくコンテキスト数は一例であり、上記したように
コンテキスト信号context_Cに基づいて切り替えられるコンテキスト数は、コン
テキスト信号context_Wに基づいて切り替えられるコンテキスト数より小さけれ
ばよい。
【0031】
データ処理回路13は、積和演算回路11で得られたデータに対して積和演算とは異な
る演算処理を行うための回路である。データ処理回路13で行う演算処理としては、活性
化関数である正規化線形関数(Rectified Linear Unit、以下、R
eLU)による演算処理、あるいはプーリング演算処理等がある。活性化関数には、Re
LUの他、例えばシグモイド(sigmoid)関数や、ハイパボリックタンジェント(
tanh)関数、ステップ関数を適用することができる。
【0032】
SRAM(Static Random Access Memory)14は、積和
演算回路11における演算に必要となるデータを保持する機能を有する回路である。SR
AM14は、データ保持回路ということもある。SRAM14は、コントローラ12の制
御によって保持するデータの入力または出力のタイミングが決定される。
【0033】
図2(A)乃至(E)は積和演算回路11において積和演算処理を行うための、演算回
路21およびスイッチ回路22の動作を説明するためのブロック図である。演算回路21
およびスイッチ回路22は、コンテキスト信号context_Wおよびコンテキスト信
号context_Cに応じて、乗算処理に用いる重みデータの切り替え、および演算回
路21間の接続の切り替えが可能な回路である。
【0034】
演算回路21は、入力データを保持するためのレジスタ回路、および重みデータを記憶
するためのメモリ回路を有する。
図2(A)の演算回路21には、入力データI
11およ
び重みデータWが入力され、保持される様子を図示している。入力データI
11は、演算
回路21内のレジスタに保持される。重みデータWは、複数の重みデータ(一例として4
つの重みデータW0、W1、W2、W3)を有し、演算回路21内のメモリ回路に記憶さ
れる。
【0035】
演算回路21は、コンテキスト信号context_Wをデコードして重みデータを選
択するための切り替え信号を生成するデコーダを有する。
図2(B)には演算回路21に
入力されるコンテキスト信号context_W[1:0]を図示している。コンテキス
ト信号context_W[1:0]は、演算回路21が有するデコーダでデコードされ
る。
図2(B)では、コンテキスト信号context_W[1:0]をデコードして得
られる切り替え信号によって、重みデータWの4つの重みデータのうち、重みデータW0
が選択される様子を図示している。
【0036】
図2(C)には演算回路21Aに保持した入力データI
11と、選択された重みデータ
W0との乗算データ(図中、W0×I
11と図示)を、演算回路21Bに出力する動作を
図示している。演算回路21Aは、得られた乗算データを出力するように内部の切り替え
回路が切り替えられる。
【0037】
スイッチ回路22は、コンテキスト信号context_Cをデコードしてスイッチの
導通状態を切り替えるための切り替え信号を生成するデコーダを有する。
図2(C)には
スイッチ回路22に入力されるコンテキスト信号context_Cを図示している。コ
ンテキスト信号context_Cは、スイッチ回路22が有するデコーダでデコードさ
れる。デコードされた切り替え信号によって、複数の演算回路間のうち、いずれの演算回
路間で導通状態とするかが選択される。
図2(C)では、演算回路21Aと演算回路21
Bとの間のスイッチ回路22を導通状態とする様子を図示している。
【0038】
図2(D)には演算回路21Aで得られる乗算データと、別の演算回路から出力される
データ(W×I)との和である積和演算データ(図中、W×I+W0×I
11と図示、M
ACともいう)を、演算回路21Bに出力する動作を図示している。演算回路21Aは、
得られた乗算データと、別の演算回路から出力されるデータとの和を出力するように内部
の切り替え回路が切り替えられる。
図2(D)では、当該切り替え回路によって
図2(C
)での乗算データの出力とは異なる様子を図示している。
【0039】
また
図2(E)には演算回路21Aで保持された積和演算データ(図中、MAC1)を
、演算回路21Bに出力し、演算回路21Aで保持された積和演算データ(図中、MAC
2)と足し合わせて得られる積和演算データ(図中、MAC1+MAC2)として出力す
る動作を図示している。演算回路21Aは、保持された積和演算データと、別の演算回路
から出力される積和演算データとの和を出力するように内部の切り替え回路が切り替えら
れる。また演算回路21Aと演算回路21Bとの間のスイッチ回路22は、コンテキスト
信号context_Cをデコードした切り替え信号によって、導通状態となるよう選択
される。
図2(E)では、演算回路21Aと演算回路21Bとの間のスイッチ回路22を
導通状態とする様子を図示している。
【0040】
以上
図2(A)乃至(E)で説明したように演算回路21およびスイッチ回路22は、
演算処理に用いる重みデータ、演算処理によって出力されるデータ、あるいは演算回路2
1間の接続をコンテキスト信号context_Wおよびコンテキスト信号contex
t_Cをデコードした切り替え信号に応じて切り替えることができる。なお演算回路21
およびスイッチ回路22の具体的な回路例については、後述する。
【0041】
ここで
図2(A)乃至(E)で図示した重みデータの切り替えや、乗算データの出力ま
たは加算データの出力といった演算処理の切り替え、によって積和演算処理を行う演算モ
デルについて、
図3(A)乃至(F)を用いて説明する。
【0042】
図3(A)乃至(F)の説明では、異なる4種類の重みデータを有するフィルタ(W
1
1,W
12,W
13,W
14)、(W
21,W
22,W
23,W
24)、(W
31,W
3
2,W
33,W
34)、(W
41,W
42,W
43,W
44)と、入力データ(I
1,I
2,I
3,I
4)の積和演算を行う場合について説明する。上記
図2で説明した積和演算
処理の手法を用いることで、複数の演算回路で得られたデータをループさせながら積和演
算を並行して進めることが可能である。
【0043】
複数のフィルタによる積和演算(畳み込み演算)は、式(1)に図示するように、行列
-ベクトル積で表すことができる。
【0044】
【0045】
Wで構成される4×4の行列は、重みデータ(各行の要素が各フィルタの成分)に相当
する。Iで構成される1×4の行列は、入力データに相当する。Y(Y1乃至Y4)で構
成される1×4の行列は、積和演算によって得られるデータに相当する。
【0046】
式(1)の行列-ベクトル積は、上述した演算回路21を用いて積和演算を行う演算モ
デルに当てはめると、
図3(A)のように図示することができる。つまり入力データI
1
乃至I
4は、各演算回路21の入力データ31として保持される。またフィルタ(W
11
,W
12,W
13,W
14)、(W
21,W
22,W
23,W
24)、(W
31,W
32
,W
33,W
34)、(W
41,W
42,W
43,W
44)の重みパラメータに相当する
データ(重みデータ)は、各演算回路21のメモリ回路に書き込まれ、コンテキスト信号
context_Wをデコードして得られる切り替え信号に応じて、異なる重みデータ3
2_1乃至32_4のいずれか一を用いて乗算データの生成を行うことができる。以下、
1クロック(1clk)ごとに演算処理が進むものとして説明する。
【0047】
演算回路21に入力データを書き込んで1clk後、重みパラメータのセットから任意
の重みデータがコンテキスト信号context_Wをデコードして得られる切り替え信
号によって設定される。具体的には、
図3(B)に図示する下線を付したデータ(W
11
,W
22,W
33,W
44)が設定され、各演算回路21では保持している入力データ(
I
1,I
2,I
3,I
4)との乗算データを生成する。各演算回路21では、入力データ
31と重みデータ32_1との乗算データ(W
11・I
1,W
22・I
2,W
33・I
3
,W
44・I
4)を生成する。
【0048】
次いで
図3(B)の状態から1clk後の
図3(C)では、コンテキスト信号cont
ext_Wをデコードして得られる切り替え信号によって
図3(B)とは異なる重みデー
タに設定される。具体的には、
図3(C)に図示する下線を付した重みデータ(W
41,
W
12,W
23,W
34)が設定され、各演算回路21では保持している入力データ(I
1,I
2,I
3,I
4)との乗算データを生成する。各演算回路21では、入力データ3
1と重みデータ32_2との乗算データ(W
41・I
1,W
12・I
2,W
23・I
3,
W
34・I
4)を生成する。さらに、各演算回路21では、
図3(C)の状態で生成した
データ33_1-33_4(W
11・I
1,W
22・I
2,W
33・I
3,W
44・I
4
)を次列の加算データとして次列の演算回路21に出力する。
【0049】
次いで
図3(C)の状態から1clk後の
図3(D)では、コンテキスト信号cont
ext_Wをデコードして得られる切り替え信号によって
図3(C)とは異なる重みデー
タに設定される。具体的には、
図3(D)に図示する下線を付した重みデータ(W
31,
W
42,W
13,W
24)が設定され、各演算回路21では保持している入力データ(I
1,I
2,I
3,I
4)との乗算データを生成する。例えば、各演算回路21では、入力
データ31と重みデータ32_3との乗算データ(W
31・I
1,W
42・I
2,W
13
・I
3,W
24・I
4)を生成する。さらに、各演算回路21では、乗算データ(W
41
・I
1,W
12・I
2,W
23・I
3,W
34・I
4)を、
図3(C)で出力された加算
データ(W
11・I
1,W
22・I
2,W
33・I
3,W
44・I
4)に加算したデータ
33_1-33_4(W
12・I
2+W
11・I
1,W
23・I
3+W
22・I
2,W
3
4・I
4+W
33・I
3,W
41・I
1+W
44・I
4)を次列の加算データ(または積
和演算データともいう)として次列の演算回路21に出力する。
【0050】
次いで
図3(D)の状態から1clk後の
図3(E)では、コンテキスト信号cont
ext_Wをデコードして得られる切り替え信号によって
図3(D)とは異なる重みデー
タに設定される。具体的には、
図3(E)に図示する下線を付した重みデータ(W
21,
W
32,W
43,W
14)が設定され、各演算回路21では保持している入力データ(I
1,I
2,I
3,I
4)との乗算データを生成する。例えば、各演算回路21では、入力
データ31と重みデータ32_4との乗算データ(W
21・I
1,W
32・I
2,W
43
・I
3,W
14・I
4)を生成する。さらに、各演算回路21では、乗算データ(W
31
・I
1,W
42・I
2,W
13・I
3,W
24・I
4)を、
図3(D)で出力された加算
データ(W
12・I
2+W
11・I
1,W
23・I
3+W
22・I
2,W
34・I
4+W
33・I
3,W
41・I
1+W
44・I
4)に加算したデータ33_1-33_4(W
1
3・I
3+W
12・I
2+W
11・I
1,W
24・I
4+W
23・I
3+W
22・I
2,
W
31・I
1+W
34・I
4+W
33・I
3,W
42・I
2+W
41・I
1+W
44・I
4)を次列の加算データとして次列の演算回路21に出力する。
【0051】
次いで
図3(E)の状態から1clk後の
図3(F)において各演算回路21では、図
3(E)で出力された加算データ(W
13・I
3+W
12・I
2+W
11・I
1,W
24
・I
4+W
23・I
3+W
22・I
2,W
31・I
1+W
34・I
4+W
33・I
3,W
42・I
2+W
41・I
1+W
44・I
4)に乗算データ(W
21・I
1,W
32・I
2
,W
43・I
3,W
14・I
4)を加算したデータが得られる。
図3(F)に示すように
、各演算回路21では、データ33_2(W
21・I
1+W
24・I
4+W
23・I
3+
W
22・I
2)、データ33_3(W
32・I
2+W
31・I
1+W
34・I
4+W
33
・I
3)、データ33_4(W
43・I
3+W
42・I
2+W
41・I
1+W
44・I
4
)、データ33_1(W
14・I
4+W
13・I
3+W
12・I
2+W
11・I
1)とい
った積和演算によるデータを得ることができる。得られたデータは、行列-ベクトル積で
表したY(Y
1乃至Y
4)に相当する。
【0052】
図3(A)乃至(F)の演算モデルを用いることで、得られるデータを次々にシフトさ
せることで膨大な数の積和演算を効率よく行うことができる。半導体装置10が有する積
和演算回路11では、乗算データと加算データを、プロセッサのパイプライン処理のよう
に演算回路21間で同時に処理するとともに、複数の演算回路21間で乗算データおよび
加算データをシフトさせることで積和演算を実行することができる。そのため、限られた
ハードウェアで積和演算による演算処理を行う際、少ない回路リソースで超並列のデータ
処理を効率よく実行することができる。
【0053】
図3(A)乃至(F)の構成では、演算途中で外部メモリへのデータアクセスが必要な
く、また、全ての演算回路21でデータの受け渡しを並列に行いながら積和演算データを
効率よく得ることができる。そのため、入力データおよび重みデータ等の増大に伴う回路
規模の大型化がニューラルネットワークでは問題となるが、この問題を解消することがで
きる。
【0054】
図3(A)乃至(F)で説明した積和演算処理を行う演算モデルを
図1の半導体装置1
0に適用する場合、
図2(A)乃至(E)で説明したように演算処理に用いる重みデータ
、演算処理によって出力されるデータ、あるいは演算回路21間の接続をコンテキスト信
号context_Wおよびコンテキスト信号context_Cに応じて切り替えるこ
とで実現できる。
【0055】
具体的には
図3(A)乃至(F)に示す演算モデルを実現する場合、積和演算処理のた
めの重みデータの切り替えのためのコンテキスト数が4、つまり重みデータの切り替え構
成は重みデータW0,重みデータW1,重みデータW2および重みデータW3のデータセ
ットによって実現できる。また
図2(E)のように
図3(A)乃至(F)に示す演算モデ
ルで得られた積和演算データ同士を足し合わせるような加算処理の場合、重みデータは必
要ないが、重みデータW0乃至W3のいずれか一のデータセットによって実現できる。こ
の場合、コンテキスト信号context_Wをデコードしてコンテキストを切り替える
ための切り替え信号context_W0乃至context_W3を得る構成とすれば
よい。
【0056】
また
図3(A)乃至(F)に示す演算モデルを実現する場合、接続構成はコンテキスト
数が1、つまり接続構成は切り替え信号context_C0によって実現できる。また
図2(E)のように
図3(A)乃至(F)に示す演算モデルで得られた積和演算データ同
士を足し合わせる場合、接続構成はコンテキスト数が1、つまり接続構成は切り替え信号
context_C1によって実現できる。この場合、コンテキスト信号context
_Cをデコードしてコンテキストを切り替えるための切り替え信号context_C0
およびcontext_C1を得る構成とすればよい。
【0057】
上記構成は、
図4(A)乃至(E)に示すブロック図を用いて説明することができる。
図4(A)乃至(E)中では、演算回路21およびスイッチ回路22の他、演算処理の種
類として積和演算処理23(図中、「×+」で図示)を図示している。また演算処理の種
類として加算処理24(図中、「+」で図示)を図示している。
【0058】
図4(A)乃至(D)では、接続構成を切り替え信号context_C0で固定し、
重みデータを切り替え信号context_W0乃至W3で切り替えることで積和演算処
理を行う。例えば
図4(A)では、接続構成を切り替え信号context_C0とし、
重みデータを切り替え信号context_W0で重みデータW0とし、乗算データに他
の演算回路の加算データを足し合わせる積和演算処理を実行する。また
図4(B)では、
接続構成を切り替え信号context_C0とし、重みデータを切り替え信号cont
ext_W1で重みデータW1とし、乗算データに他の演算回路の加算データを足し合わ
せる積和演算処理を実行する。また
図4(C)では、接続構成を切り替え信号conte
xt_C0とし、重みデータを切り替え信号context_W2で重みデータW2とし
、乗算データに他の演算回路の加算データを足し合わせる積和演算処理を実行する。また
図4(D)では、接続構成を切り替え信号context_C0とし、重みデータを切り
替え信号context_W3で重みデータW3とし、乗算データに他の演算回路の加算
データを足し合わせる積和演算処理を実行する。
【0059】
図4(A)乃至(D)のように、重みデータW0乃至W3を切り替えて得られる乗算デ
ータは、別の演算回路で得られた値に足し合わせてさらに別の演算回路に順に出力するこ
とができる。そのため、異なる重みデータを用いて得られた乗算データ同士を足し合わせ
た積和演算データを得ることができる。つまり
図3(F)の状態を得ることができる。
【0060】
また
図4(E)では、接続構成を切り替え信号context_C1で固定し、重みデ
ータを例えば切り替え信号context_W0に切り替えることで加算処理を行う。重
みデータを切り替え信号context_W0で重みデータW0とし、先に求めた積和演
算データ同士の和を求める加算処理を行う構成である。当該構成とすることで各演算回路
21に保持された積和演算データ同士の和に相当するデータを得ることができる。
【0061】
上記構成では接続構成を切り替え信号context_C0として共有化し、重みデー
タのみを変更する構成となる。当該構成とすることで、接続構成のコンテキスト数を削減
できる。すなわち、回路面積(信号線の負荷)の削減が可能となり、動作速度の向上や消
費電力の低減が可能となる。
【0062】
図3(A)乃至(F)、
図4(A)乃至(E)の構成は、形状の異なる入力データに対
して次々と重みデータを切り替えて積和演算処理を行う畳み込みニューラルネットワーク
に有効である。
【0063】
なお、本明細書においてニューラルネットワークとは、生物の神経回路網を模し、学習
によってニューロンどうしの結合強度を決定し、問題解決能力を持たせるモデル全般を指
す。ニューラルネットワークは入力層、中間層(隠れ層ともいう)、出力層を有する。ニ
ューラルネットワークのうち、2層以上の中間層を有するものをディープニューラルネッ
トワーク(DNN)と呼称する。ディープニューラルネットワークによる学習を「ディー
プラーニング」と呼称する。またニューラルネットワークをハードウェアで実行可能な回
路をニューラルネットワーク回路という。
【0064】
また、本明細書において、ニューラルネットワークについて述べる際に、既にある情報
からニューロンとニューロンの結合強度(重み係数または重みパラメータとも言う)を決
定することを「学習」と呼ぶ場合がある。
【0065】
また、本明細書において、学習によって得られた結合強度を用いてニューラルネットワ
ークを構成し、そこから新たな結論を導くことを「推論」と呼ぶ場合がある。
【0066】
図5は、畳み込みニューラルネットワークの演算処理の流れについて図示したブロック
図である。
図5では、入力層61、中間層62(隠れ層ともいう)、出力層63を図示し
ている。入力層61では、入力データの入力処理(図中、Inputと図示)を図示して
いる。中間層62では、畳み込み層65、畳み込み層66、畳み込み層68(図中、Co
nv.と図示)、プーリング層67、プーリング層69(図中、Pool.と図示)を図
示している。出力層63では、全結合層70(図中、Fullと図示)を図示している。
入力層61、中間層62、出力層63における演算処理を行う層は一例であり、実際の畳
み込みニューラルネットワークの演算処理では、ソフトマックス演算などの他の演算処理
を行うことがある。
【0067】
図5に図示する畳み込み層65、畳み込み層66、畳み込み層68および全結合層70
では、入力データと重みデータとの積和演算処理を行う。各層での演算処理は、形状の異
なる入力データが入力されるとともに重みデータを切り替えて積和演算処理を行うことに
なる。重みデータのデータセットの増加に伴うコンテキスト数の増加は回路規模の増大に
つながる。本発明の一態様の構成はコントローラ12において、重みデータを切り替える
ためのコンテキスト数に比べて接続構成を切り替えるためのコンテキスト数を小さくする
ようコンテキスト信号を生成する。そのため、接続構成に関するコンフィギュレーション
データを記憶するためのメモリ回路およびスイッチの回路規模の縮小が図られた半導体装
置とすることができる。加えて、回路規模の縮小が図られることに伴って消費電力増大の
抑制を図ることができる。
【0068】
<コントローラの構成>
半導体装置10が有するコントローラ12の構成例に説明する。
【0069】
図6はコントローラ12の構成例を説明するためのブロック図である。
図6におけるコ
ントローラ12は、デコーダ43およびルックアップテーブル45の他、フリップフロッ
プ42、I
2Cコントローラ44を有する。
【0070】
コントローラ12は、入力されるコンテキスト信号context_in(図中con
text_in[1:0]と図示)をフリップフロップ42に保持し、コンテキスト信号
context_W(図中context_W[1:0]と図示)として出力する機能を
有する。デコーダ43は、I2Cなどのシリアルバスによる外部信号に応じて、ルックア
ップテーブル45に記憶されたデータを参照してコンテキスト信号context_Cを
出力する機能を有する。
【0071】
なおI2C以外に、ユニバーサルシリアルバス(Universal Serial
Bus)、シリアル周辺インターフェース(Serial Peripheral In
terface)等のバス規格を用いることが可能である。
【0072】
図6に示すようにコントローラ12は、ルックアップテーブル45を有する。ルックア
ップテーブル45は、コンテキスト信号context_Wとコンテキスト信号cont
ext_Cによる異なるコンテキスト数の対応関係を定義する。ルックアップテーブル4
5のパラメータ設定方法としては、例えばI
2Cによる通信によりI
2Cコントローラ4
4を介してコンテキスト信号context_Cを切り替える方法がある。ルックアップ
テーブル45のパラメータ設定は、コンフィギュレーション動作時に実行する構成として
もよい。I
2Cによる通信によってユーザーが制御可能なパラメータが定義可能となるこ
とで様々な回路構成を実現できる。
【0073】
次いでコントローラ12の動作について説明する。
【0074】
図7に
図1におけるコンテキスト信号context_in[1:0]と、積和演算回
路11の回路状態を説明するためのタイミングチャートを示す。外部入力によるコンテキ
スト信号context_in[1:0]はクロック信号clkとは非同期の信号である
とする。
【0075】
なお
図7の説明において、コンテキスト信号context_in[1:0]は2ビッ
トの信号であり、コンテキストは「3」乃至「0」の4つで表すことができる。また
図7
の説明において、コンテキスト信号context_W[1:0]は2ビットの信号であ
り、コンテキストは「3」乃至「0」の4つで表すことができる。
図7の説明において、
コンテキスト信号context_Cは1ビットの信号であり、コンテキストはHレベル
またはLレベルの信号の2つで表すことができる。
【0076】
時刻T0において、コンテキスト信号context_W[1:0]によってコンテキ
ストが「3」から「0」に変化する。コンテキスト信号context_W[1:0]は
、
図6で図示したデコーダ43でデコードされる。コンテキスト信号context_C
は、ルックアップテーブル45のパラメータ設定によって、「1」から「0」に変化する
。その結果、次のクロック信号clkの立ち上がり(LレベルからHレベルへの変化)で
ある時刻T1において切り替え信号context_W0及び切り替え信号contex
t_C0がHレベルとなる。また切り替え信号context_W3及び切り替え信号c
ontext_C1がLレベルとなり、回路構成circuit_stateは回路Dか
ら回路Aの状態となる。
【0077】
時刻T1において、コンテキスト信号context_W[1:0]によってコンテキ
ストが「0」から「1」に変化する。コンテキスト信号context_Cは、ルックア
ップテーブル45のパラメータ設定によって、「0」を維持する。その結果、次のクロッ
ク信号clkの立ち上がりである時刻T2において切り替え信号context_W1が
Hレベルとなる。また、切り替え信号context_W0がLレベルとなり、回路構成
circuit_stateは回路Aの状態から回路Bの状態となる。
【0078】
時刻T2において、コンテキスト信号context_W[1:0]によってコンテキ
ストが「1」から「2」に変化する。コンテキスト信号context_Cは「0」を維
持する。その結果、次のクロック信号clkの立ち上がりである時刻T3において切り替
え信号context_W2がHレベルとなる。また切り替え信号context_W1
がLレベルとなり、回路構成circuit_stateは回路Bの状態から回路Cの状
態となる。
【0079】
時刻T3において、コンテキスト信号context_W[1:0]によって「2」か
ら「3」に変化する。コンテキスト信号context_Cは、ルックアップテーブル4
5のパラメータ設定によって、「0」から「1」に変化する。その結果、次のクロック信
号clkの立ち上がりである時刻T4において切り替え信号context_W3がHレ
ベルとなる。また切り替え信号context_W2がLレベルとなり、回路構成cir
cuit_stateは回路Cの状態から回路Dの状態となる。
【0080】
以上のように、コンテキストの切り替えを演算回路21およびスイッチ回路といった対
象毎にコンテキスト数が異なるように分けて行う構成とする。当該構成とすることで回路
構成の変更が無い場合にはコンテキスト信号の変化を行わない構成とすることができる。
必要となるコンテキスト数を削減できることで削減分のコンテキストに対応するスイッチ
回路が不要になるため、回路面積の削減および回路動作の高速化が可能となる。
【0081】
<演算回路の構成>
積和演算回路11が有する演算回路21の構成の一例を説明する。演算回路21は
図2
(A)乃至(E)で説明したように、入力されるデータ(入力データ)と重みデータとの
乗算によって得られる乗算データを保持または出力する機能の他、当該乗算データと、別
の演算回路から出力されるデータ(加算データ)とを足し合わせて得られる積和演算デー
タを保持または出力する機能を有する。
【0082】
図8(A)は、演算回路21の一例を示すためのブロック図である。演算回路21は、
一例として、入力レジスタ51、メモリ回路52、乗算回路53、加算回路54、出力レ
ジスタ55A、出力レジスタ55B、切り替え回路56A、メモリ素子57A、切り替え
回路56B、メモリ素子57B、切り替え回路56Cおよびメモリ素子57Cを有する。
【0083】
入力レジスタ51には、データsinが入力される。入力レジスタ51はラッチ信号s
latの制御でデータsinを保持する。入力レジスタ51はデータsoutを出力する
。入力レジスタ51は、切り替え回路56Aを介して乗算回路53にデータsdataを
出力する。
【0084】
切り替え回路56Aは、乗算回路53に入力されるデータsdataとして、データs
inを出力するか、入力レジスタ51に保持されたデータを出力するかを制御するための
回路である。メモリ素子57Aは、コンテキスト信号context_Cの切り替えに応
じて、切り替え回路56A内の電気的な接続を切り替える機能を有する。
【0085】
メモリ回路52には、コンテキスト信号contex_W[1:0]が入力される。メ
モリ回路52は、コンテキストに応じたデータセットを有する。データセットは、積和演
算処理に用いる複数の重みデータに相当するデータである。メモリ回路52は、コンテキ
スト信号に応じてコンテキストに応じた複数の重みデータの中から一つの重みデータを重
みデータcmoutとして出力する。メモリ回路52に格納した複数の重みデータは、例
えば、畳み込み演算処理で用いるフィルタ数が多い場合などコンテキストを変更しながら
演算する際に有効である。コンテキストを変更しながら異なる重みデータと入力データと
の乗算をすることで、1つの乗算回路を使って様々な条件での乗算を行うことができる。
【0086】
メモリ回路52は不揮発性メモリを用いる。メモリ回路52としては、酸化物半導体(
Oxide Semiconductor:OS)をチャネル形成領域に有するトランジ
スタ(OSトランジスタ)を用いたOSメモリが有効である。メモリ回路52を演算回路
21毎に設けることで、積和演算回路11外部に設ける場合と比べて、より高速且つ低消
費電力に上記重みデータへのアクセス(読み出しおよび書き込み)をすることができる。
メモリ回路52の構成例については後述する。
【0087】
乗算回路53は、データsdataと重みデータcmoutとの積に応じた乗算データ
moutを生成する。乗算データmoutは、加算回路54および切り替え回路56Bに
出力される。
【0088】
加算回路54は、加算データainに乗算データmoutを加算することによって和に
応じた加算データaoutを生成する。加算データaoutは、切り替え回路56Bに出
力される。
【0089】
切り替え回路56Bは、乗算データmoutを出力するか、加算データaoutを出力
するか、を制御するための回路である。また切り替え回路56Bは、加算データainを
出力するか、加算データaoutを出力するかを制御するための回路である。メモリ素子
57Bは、コンテキスト信号context_Cの切り替えに応じて、切り替え回路56
B内の電気的な接続を切り替える機能を有する。
【0090】
出力レジスタ55Aおよび出力レジスタ55Bは、切り替え回路56Bで選択されたデ
ータを保持し、リセット信号resetの制御でリセットされる。出力レジスタ55Aお
よび出力レジスタ55Bを有する構成とすることで、信号の遅延によって演算結果に誤り
があることを防ぐことができる。
【0091】
切り替え回路56Bは、出力レジスタ55Aに保持されたデータを出力するか、出力レ
ジスタ55Aに入力されるデータをそのまま出力データoutとして出力するか、を制御
するための回路である。メモリ素子57Cは、コンテキスト信号context_Cの切
り替えに応じて、切り替え回路56C内の電気的な接続を切り替える機能を有する。
【0092】
図8(B)では、
図8(A)で説明した演算回路21の変形例に関するブロック図を図
示する。
図8(B)に示す演算回路21では、
図8(A)で説明した構成に加えて、パワ
ースイッチ58、メモリ素子57Dを図示している。メモリ素子57Dはコンテキスト信
号context_Cの切り替えに応じて、パワースイッチ58のオンまたはオフを切り
替えることができる。演算処理に使用しない演算回路21でのパワースイッチ58をオフ
にできる構成とすることで、多数の演算回路21のうち、使用しない演算回路21に関し
ては、待機動作時に発生する電流による消費電力を削減することができる。
【0093】
次いで演算回路21が有するメモリ回路52の構成について、
図9(A)、(B)を参
照して説明する。メモリ回路52はコンテキスト数に応じて設けられた複数のメモリセル
毎に重みデータを保持し、コンテキスト信号context_Wをデコードして得られる
切り替え信号に従って選択される重みデータcmoutを乗算回路53に出力する機能を
有する。
【0094】
メモリ回路は、フリップフロップ71、デコーダ72、複数のメモリセル73、を有す
る。メモリセル73は、トランジスタ74-76を有する。
【0095】
フリップフロップ71は、コンテキスト信号context_Wを保持する機能を有す
る。デコーダ72は、コンテキスト信号context_Wをデコードして切り替え信号
context_W0乃至context_W3を出力する機能を有する。メモリセル7
3は、重みデータ(コンフィギュレーションデータ)を記憶し、切り替え信号conte
xt_W0乃至context_W3の制御に応じて、出力する機能を有する。
【0096】
トランジスタ74のソース又はドレインの一方は、重みデータを書き込むための配線に
接続される。トランジスタ74のゲートは、ワード信号word(図中,word1-4
で図示)を与える配線に接続される。トランジスタ75のゲートは、トランジスタ74の
ソースまたはドレインの他方に接続される。トランジスタ75のゲートと、トランジスタ
74のソースまたはドレインの他方とが接続されるノードは、ノードFN(図中、FN0
-FN3で図示)という。トランジスタ75のソース又はドレインの一方は、固定電位線
(図中、グラウンド線)に接続される。トランジスタ75のソース又はドレインの他方は
、トランジスタ76のソース又はドレインの一方に接続される。トランジスタ76のゲー
トは、切り替え信号context_W0乃至context_W3のいずれか一を与え
る配線に接続される。トランジスタ76のソース又はドレインの他方は、トランジスタ7
7のソース又はドレインの一方およびインバータラッチ78に接続される。トランジスタ
77のソース又はドレインの他方は、プリチャージ電圧(図中Vpre)を与える配線に
接続される。トランジスタ77のゲートは、プリチャージ制御線(図中、prechar
ge)に接続される。インバータラッチ78は、重みデータcmoutを与える配線に接
続される。
【0097】
トランジスタ74は、チャネル形成領域に酸化物半導体を有するトランジスタ(OSト
ランジスタ)である。OSトランジスタは、オフ電流が小さい。そのためトランジスタ7
4を非導通状態とすることでノードFNに保持した電位を保持することができる。ノード
FNに保持した電位は、重みデータ1ビット分のデータに対応する。ノードFNに保持し
た電位はトランジスタ75の導通状態または非導通状態を制御することができる。そのた
め、コンテキスト信号W0によってトランジスタ76が導通状態となると、ノードFNに
保持した電位に応じた重みデータcmoutを与える配線の電位を切り替えることができ
る。
【0098】
なお
図9(A)のように、OSトランジスタを用いない場合、
図9(B)に図示するよ
うにインバータラッチ79を用いて重みデータに相当するデータを記憶する構成としても
よい。
【0099】
上記実施の形態に示す演算回路21を有する半導体装置10は、Siトランジスタを有
する乗算回路および加算回路と、OSトランジスタを有するメモリ回路と、1のダイに集
積することができる。
【0100】
また
図10(A)乃至(B)では、
図9(A)に図示するメモリ回路52の動作に説明
する。
図10(A)は、
図9(A)の回路の一部を抜き出して図示した回路図である。図
10(A)では、メモリセル73、トランジスタ77、およびインバータラッチ78に接
続された重みデータcmoutを読み出すための配線のデータをデータcmout_bと
して図示している。当該配線のデータは、重みデータcmoutの論理が反転した信号に
相当する。
【0101】
次いで
図10(B)に、
図10(A)に示したメモリ回路52の動作例を説明するタイ
ミングチャートを示す。
【0102】
図10(B)に示すタイミングチャート図において、ワード線に与えられるワード信号
word1(以下、word1と略記)、ビット線に与えられるコンフィギュレーション
データに相当する信号configuration data(以下、configur
ation dataと略記)、ノードFN0(以下、FN0と略記)の電位の変化、切
り替え信号context_W0(以下、context_W0と略記)、プリチャージ
制御線precharge(以下、prechargeと略記)の電位の変化、データc
mout_b(以下、cmout_bと略記)、および重みデータcmout(以下、c
moutと略記)を図示している。
【0103】
コンフィギュレーションデータの書き込みの動作について時刻t1乃至t4で説明する
。まず、時刻t2において、word1がHレベルとなり、configuration
dataが1のため、FN0は、Hレベルとなる。このとき、prechargeはL
レベルのため、cmout_bは、Hレベルとなり、cmout_bがLレベルとなる。
【0104】
時刻t3において、word1がLレベルとなり、以後、FN0は、Hレベルに固定さ
れる。
【0105】
次いで、コンフィギュレーションデータの読み出しの動作について時刻t11乃至t1
5で説明する。時刻t12において、prechargeがLレベルとなる。その結果、
cmout_bがHレベルとなり、cmoutがLレベルとなる(プリチャージ動作)。
【0106】
時刻t13においてprechargeがHレベルとなり、context_W0がH
レベルとなる。また、FN0はHレベルを維持している。その結果、cmout_bがL
レベルとなり、cmoutがHレベルとなる。
【0107】
図10(B)ではメモリ回路52のノードFN0に保持されるデータが1(Hレベル)
の場合を示している。なおデータが0(Lレベル)の場合、時刻t12においてcont
ext_W0がHレベルとなっても、cmout_bはHレベル、cmoutはLレベル
のままである。
【0108】
以上のようにして
図9(A)に図示するメモリ回路52の動作を説明することができる
。
【0109】
次いで、
図11(A)乃至(C)では、
図9(A)に図示するプリチャージ制御線pr
echargeに与える信号を生成可能な読み出し制御回路89について説明する。
【0110】
なお読み出し制御回路89は、
図11(A)で図示するように、デコーダ72で生成さ
れた入力切り替え信号context_IN_W0乃至context_IN_W3をも
とに、プリチャージ制御線prechargeに与える信号、およびメモリ回路52に与
える切り替え信号context_W0乃至context_W3を生成するための回路
である。
【0111】
読み出し制御回路89の構成例について説明する。
図11(B)に図示する読み出し制
御回路89は、遅延回路90(図中、Delayと図示)、および制御回路91(図中、
Read_CTRと図示)を有する。
【0112】
遅延回路90は、バッファで構成される遅延回路を複数段有する。入力切り替え信号c
ontext_IN_W0乃至context_IN_W3を与える配線が各遅延回路に
接続される。遅延回路90は、入力切り替え信号context_IN_W0乃至con
text_IN_W3を遅延して出力させる機能を有する。
【0113】
制御回路91は、各入力切り替え信号context_IN_W0乃至context
_IN_W3と、その遅延信号との演算を取ることで、プリチャージ制御線precha
rgeに与える信号、およびメモリ回路52に与える切り替え信号context_W0
乃至context_W3を生成する機能を有する。
【0114】
図11(C)のタイミングチャートを用いて、
図11(B)に示した読み出し制御回路
89における各信号を生成する動作について説明する。
図11(C)では、説明のため、
時刻t21乃至t24を図示している。
【0115】
時刻t22において、入力切り替え信号context_IN_W0がLレベルからH
レベルとなり、入力切り替え信号context_IN_W1がHレベルからLレベルと
なる。その結果、プリチャージ制御線prechargeに与える信号はHレベルからL
レベルに変化する。
【0116】
時刻t23において入力切り替え信号context_IN_W0が遅延回路90で遅
延されたためにLレベルからHレベルとなる。併せて入力切り替え信号context_
IN_W1が遅延回路90で遅延されたためにHレベルからLレベルとなる。その結果、
プリチャージ制御線prechargeに与える信号はLレベルからHベルに変化する。
また、切り替え信号context_W0がLレベルからHレベルに変化し、切り替え信
号context_W1がHレベルからLレベルに変化する。
【0117】
以上のようにして
図11(A)に図示する読み出し制御回路89の動作を説明すること
ができる。
【0118】
図12に、半導体装置を組み込んだICの一例を示す。
図12に示すIC7000は、
リード7001及び回路部7003を有する。回路部7003には、本実施の形態で示し
た各種の回路が1のダイに設けられている。回路部7003は積層構造をもち、Siトラ
ンジスタ層7031、配線層7032、OSトランジスタ層7033に大別される。OS
トランジスタ層7033をSiトランジスタ層7031に積層して設けることができるた
め、IC7000の小型化が容易である。
【0119】
図12では、IC7000のパッケージにQFP(Quad Flat Packag
e)を適用しているが、パッケージの態様はこれに限定されない。
【0120】
Siトランジスタを有する乗算回路および加算回路と、OSトランジスタを有するメモ
リ回路は、全て、Siトランジスタ層7031、配線層7032およびOSトランジスタ
層7033に形成することができる。すなわち、上記半導体装置を構成する素子は、同一
の製造プロセスで形成することが可能である。そのため、
図12に示すICは、構成する
素子が増えても製造プロセスを増やす必要がなく、上記半導体装置を低コストで組み込む
ことができる。
【0121】
<スイッチ回路の構成>
図1で図示した半導体装置10とは異なる半導体装置10Aを用いてスイッチ回路22
の構成について説明する。
【0122】
図13(A)は、半導体装置10Aを説明するためのブロック図である。
図13(A)
に図示する半導体装置10Aの構成とすることで、演算回路21とスイッチ回路22とを
一つのエリア(ローカルエリア)に単位回路として設計することができるため、好適であ
る。その他の構成は
図1と同じである。
【0123】
図13(A)に図示するスイッチ回路22は、演算回路21間の接続構成を切り替える
ために、上下左右にある演算回路21との接続状態を切り替える機能を有する。
図13(
A)中の「U」「D」「L」「R」は、それぞれ「上」方向、「下」方向、「左」方向、
「右」方向の演算回路21と電気的に接続するための配線を表している。
【0124】
図13(B)には、スイッチ回路22の一例を示す図である。図中、データsoutお
よび演算データoutは、
図8(A)、(B)で説明した演算回路21の出力データに相
当する。データsoutおよび演算データoutを出力するための配線は、上下左右のい
ずれかの配線に接続される。交点には、配線同士を接続するためのスイッチ25が配置さ
れる。スイッチ25は、接続構成に関するコンフィギュレーションデータを記憶するため
のメモリ回路を有する。
【0125】
メモリ回路を有するスイッチ25の構成について、
図14(A)、(B)を参照して説
明する。スイッチ25が有するメモリ回路はコンテキスト数に応じて設けられた複数のメ
モリセル毎に接続構成に応じたデータを保持し、コンテキスト信号context_Cを
デコードして得られる切り替え信号に従って選択される演算回路21と上下左右の配線と
の間の接続を切り替える機能を有する。
【0126】
スイッチ25は、フリップフロップ80、デコーダ81、複数のメモリセル83、を有
する。メモリセル83は、トランジスタ84-86を有する。なお
図14(A)では、一
例として4ビットのデータを伝えるためのスイッチを図示している。
【0127】
フリップフロップ80は、コンテキスト信号context_Cを保持する機能を有す
る。デコーダ72は、コンテキスト信号context_Cをデコードして切り替え信号
context_C0乃至context_C1を出力する機能を有する。メモリセル8
3は、接続情報に対応するデータを記憶し、切り替え信号context_C0乃至co
ntext_C1の制御に応じて、出力する機能を有する。
【0128】
トランジスタ84のソース又はドレインの一方は、接続情報(コンフィギュレーション
データ)を書き込むための配線に接続される。トランジスタ84のゲートは、ワード信号
word(図中,word1-2で図示)を与える配線に接続される。トランジスタ85
のゲートは、トランジスタ84のソースまたはドレインの他方に接続される。トランジス
タ85のゲートと、トランジスタ84のソースまたはドレインの他方とが接続されるノー
ドは、ノードFN(図中、FN0-FN1で図示)という。トランジスタ85のソース又
はドレインの一方は、配線87に接続される。トランジスタ85のソース又はドレインの
他方は、トランジスタ86のソース又はドレインの一方に接続される。トランジスタ86
のゲートは、切り替え信号context_C0または切り替え信号context_C
1のいずれか一を与える配線に接続される。トランジスタ86のソース又はドレインの他
方は、演算回路21のデータ(out、sout)を出力する配線に接続される。
【0129】
トランジスタ84は、チャネル形成領域に酸化物半導体を有するトランジスタ(OSト
ランジスタ)である。OSトランジスタは、オフ電流が小さい。そのためトランジスタ8
4を非導通状態とすることでノードFNに保持した電位を保持することができる。
【0130】
ノードFNに保持した電位はトランジスタ85の導通状態または非導通状態を制御する
ことができる。そのため、切り替え信号context_C0によってトランジスタ86
が導通状態となると、ノードFNに保持した電位に応じた演算回路21のデータの電位を
配線87に伝えることができる。
【0131】
OSトランジスタを用いない場合、
図14(B)に図示するようにインバータラッチ8
8を用いて重みデータに相当するデータを記憶する構成としてもよい。
【0132】
<ローカルエリアの構成>
図15では、
図13(A)で図示したローカルエリア26の構成について説明する。
【0133】
図15に図示するローカルエリア26には、上述したようにコントローラ12から2つ
のコンテキスト信号context_W[1:0]、コンテキスト信号context_
Cが入力される。
【0134】
図15に示すローカルエリア26には、上記説明したフリップフロップ71、デコーダ
72、を図示している。デコーダ72は、コンテキスト信号context_W[1:0
]をデコードして切り替え信号context_W0乃至切り替え信号context_
W3を演算回路21に出力する。
【0135】
演算回路21は、コンフィギュレーションメモリ28、トランジスタ76および演算部
27を有する。コンフィギュレーションメモリ28は、
図9(A)で説明したトランジス
タ74およびトランジスタ75で構成されるメモリであり、ノードFNでデータに応じた
電荷を保持することができる。トランジスタ76は、
図9(A)で説明したトランジスタ
76に相当する。演算部27は、
図8(A)、(B)で説明した乗算回路53および加算
回路54に相当する。
【0136】
スイッチ回路22は、コンフィギュレーションメモリ29、トランジスタ86および配
線87を有する。コンフィギュレーションメモリ29は、
図14(A)で説明したトラン
ジスタ84およびトランジスタ85で構成されるメモリであり、ノードFNでデータに応
じた電荷を保持することができる。トランジスタ86は、
図14(A)で説明したトラン
ジスタ86に相当する。配線87は、
図14(A)で説明した配線87に相当する。
【0137】
図16には、コントローラ12から積和演算回路11にある複数のローカルエリア26
にコンテキスト信号context_W、およびコンテキスト信号context_Cを
伝えるための構成を図示している。積和演算回路11では、高速なコンテキストの切り替
えを実現するために、例えばコンテキスト信号context_W、およびコンテキスト
信号context_Cを伝える配線をクロックツリーと同様の構成とし、ローカルエリ
ア26のフリップフロップ71,80に入力される構成とする。
【0138】
フリップフロップ71,80の出力信号は、デコーダ72,81でデコードした後、ロ
ーカルエリア26内のコンテキスト選択用のトランジスタ76,86に供給される。限ら
れた領域であるローカルエリア26内への信号供給であるため配線遅延等が軽減され、ト
ランジスタ76,86を高速で導通状態または非導通状態に制御できる。特にコンテキス
ト数が多くなるとバッファツリーで供給すべき信号線が増加するため、ローカルエリア2
6のフリップフロップ71,80の出力信号をデコーダ72,81でデコードする構成に
よりコンテキスト信号数の数を低減することができる。本構成とすることでコンテキスト
の切り替え時のタイミング制御が容易になり、高い動作周波数時にも動作を安定化させる
ことができる。
【0139】
<電子機器>
上記半導体装置を備えた電子機器の例について
図17を用いて説明を行う。
【0140】
図17(A)に示すロボット2100は、演算装置2110、照度センサ2101、マ
イクロフォン2102、上部カメラ2103、スピーカ2104、ディスプレイ2105
、下部カメラ2106、障害物センサ2107、および移動機構2108を備える。
【0141】
ロボット2100において、演算装置2110、照度センサ2101、上部カメラ21
03、ディスプレイ2105、下部カメラ2106および障害物センサ2107等に、上
記半導体装置を使用することができる。
【0142】
マイクロフォン2102は、使用者の話し声及び環境音等を検知する機能を有する。ま
た、スピーカ2104は、音声を発する機能を有する。ロボット2100は、マイクロフ
ォン2102およびスピーカ2104を用いて、使用者とコミュニケーションをとること
が可能である。
【0143】
ディスプレイ2105は、種々の情報の表示を行う機能を有する。ロボット2100は
、使用者の望みの情報をディスプレイ2105に表示することが可能である。ディスプレ
イ2105は、タッチパネルを搭載していてもよい。
【0144】
上部カメラ2103および下部カメラ2106は、ロボット2100の周囲を撮像する
機能を有する。また、障害物センサ2107は、移動機構2108を用いてロボット21
00が前進する際の進行方向における障害物の有無を察知することができる。ロボット2
100は、上部カメラ2103、下部カメラ2106および障害物センサ2107を用い
て、周囲の環境を認識し、安全に移動することが可能である。
【0145】
図17(B)に示す飛行体2120は、演算装置2121と、プロペラ2123と、カ
メラ2122と、を有し、自律して飛行する機能を有する。
【0146】
飛行体2120において、演算装置2121およびカメラ2122に上記半導体装置を
用いることができる。
【0147】
図17(B)は、自動車の一例を示す外観図である。自動車2980は、カメラ298
1等を有する。また、自動車2980は、赤外線レーダー、ミリ波レーダー、レーザーレ
ーダーなど各種センサなどを備える。自動車2980は、カメラ2981が撮影した画像
を解析し、ガードレール1201や歩行者の有無など、周囲の交通状況を判断し、自動運
転を行うことができる。
【0148】
自動車2980において、カメラ2981に上記半導体装置を用いることができる。
【0149】
<本明細書等の記載に関する付記>
以上の実施の形態における各構成の説明について、以下に付記する。
【0150】
各実施の形態に示す構成は、他の実施の形態に示す構成と適宜組み合わせて、本発明の
一態様とすることができる。また、1つの実施の形態の中に、複数の構成例が示される場
合は、構成例を適宜組み合わせることが可能である。
【0151】
なお、ある一つの実施の形態の中で述べる内容(一部の内容でもよい)は、その実施の
形態で述べる別の内容(一部の内容でもよい)、及び/又は、一つ若しくは複数の別の実
施の形態で述べる内容(一部の内容でもよい)に対して、適用、組み合わせ、又は置き換
えなどを行うことが出来る。
【0152】
なお、実施の形態の中で述べる内容とは、各々の実施の形態において、様々な図を用い
て述べる内容、又は明細書に記載される文章を用いて述べる内容のことである。
【0153】
なお、ある一つの実施の形態において述べる図(一部でもよい)は、その図の別の部分
、その実施の形態において述べる別の図(一部でもよい)、及び/又は、一つ若しくは複
数の別の実施の形態において述べる図(一部でもよい)に対して、組み合わせることによ
り、さらに多くの図を構成させることが出来る。
【0154】
また本明細書等において、ブロック図では、構成要素を機能毎に分類し、互いに独立し
たブロックとして示している。しかしながら実際の回路等においては、構成要素を機能毎
に切り分けることが難しく、一つの回路に複数の機能が係わる場合や、複数の回路にわた
って一つの機能が関わる場合があり得る。そのため、ブロック図のブロックは、明細書で
説明した構成要素に限定されず、状況に応じて適切に言い換えることができる。
【0155】
また、図面において、大きさ、層の厚さ、又は領域は、説明の便宜上任意の大きさに示
したものである。よって、必ずしもそのスケールに限定されない。なお図面は明確性を期
すために模式的に示したものであり、図面に示す形状又は値などに限定されない。例えば
、ノイズによる信号、電圧、若しくは電流のばらつき、又は、タイミングのずれによる信
号、電圧、若しくは電流のばらつきなどを含むことが可能である。
【0156】
本明細書等において、トランジスタの接続関係を説明する際、ソースとドレインとの一
方を、「ソース又はドレインの一方」(又は第1電極、又は第1端子)と表記し、ソース
とドレインとの他方を「ソース又はドレインの他方」(又は第2電極、又は第2端子)と
表記している。これは、トランジスタのソースとドレインは、トランジスタの構造又は動
作条件等によって変わるためである。なおトランジスタのソースとドレインの呼称につい
ては、ソース(ドレイン)端子や、ソース(ドレイン)電極等、状況に応じて適切に言い
換えることができる。
【0157】
また、本明細書等において「電極」や「配線」の用語は、これらの構成要素を機能的に
限定するものではない。例えば、「電極」は「配線」の一部として用いられることがあり
、その逆もまた同様である。さらに、「電極」や「配線」の用語は、複数の「電極」や「
配線」が一体となって形成されている場合なども含む。
【0158】
また、本明細書等において、電圧と電位は、適宜言い換えることができる。電圧は、基
準となる電位からの電位差のことであり、例えば基準となる電位をグラウンド電圧(接地
電圧)とすると、電圧を電位に言い換えることができる。グラウンド電位は必ずしも0V
を意味するとは限らない。なお電位は相対的なものであり、基準となる電位によっては、
配線等に与える電位を変化させる場合がある。
【0159】
なお本明細書等において、「膜」、「層」などの語句は、場合によっては、または、状
況に応じて、互いに入れ替えることが可能である。例えば、「導電層」という用語を、「
導電膜」という用語に変更することが可能な場合がある。または、例えば、「絶縁膜」と
いう用語を、「絶縁層」という用語に変更することが可能な場合がある。
【0160】
本明細書等において、スイッチとは、導通状態(オン状態)、または、非導通状態(オ
フ状態)になり、電流を流すか流さないかを制御する機能を有するものをいう。または、
スイッチとは、電流を流す経路を選択して切り替える機能を有するものをいう。
【0161】
一例としては、電気的スイッチ又は機械的なスイッチなどを用いることができる。つま
り、スイッチは、電流を制御できるものであればよく、特定のものに限定されない。
【0162】
電気的なスイッチの一例としては、トランジスタ(例えば、バイポーラトランジスタ、
MOSトランジスタなど)、ダイオード(例えば、PNダイオード、PINダイオード、
ショットキーダイオード、MIM(Metal Insulator Metal)ダイ
オード、MIS(Metal Insulator Semiconductor)ダイ
オード、ダイオード接続のトランジスタなど)、又はこれらを組み合わせた論理回路など
がある。
【0163】
なお、スイッチとしてトランジスタを用いる場合、トランジスタの「導通状態」とは、
トランジスタのソースとドレインが電気的に短絡されているとみなせる状態をいう。また
、トランジスタの「非導通状態」とは、トランジスタのソースとドレインが電気的に遮断
されているとみなせる状態をいう。なおトランジスタを単なるスイッチとして動作させる
場合には、トランジスタの極性(導電型)は特に限定されない。
【0164】
機械的なスイッチの一例としては、デジタルマイクロミラーデバイス(DMD)のよう
に、MEMS(マイクロ・エレクトロ・メカニカル・システム)技術を用いたスイッチが
ある。そのスイッチは、機械的に動かすことが可能な電極を有し、その電極が動くことに
よって、導通と非導通とを制御して動作する。
【0165】
本明細書等において、チャネル長とは、例えば、トランジスタの上面図において、半導
体(またはトランジスタがオン状態のときに半導体の中で電流の流れる部分)とゲートと
が重なる領域、またはチャネルが形成される領域における、ソースとドレインとの間の距
離をいう。
【0166】
本明細書等において、チャネル幅とは、例えば、半導体(またはトランジスタがオン状
態のときに半導体の中で電流の流れる部分)とゲート電極とが重なる領域、またはチャネ
ルが形成される領域における、ソースとドレインとが向かい合っている部分の長さをいう
。
【0167】
本明細書等において、AとBとが接続されている、とは、AとBとが直接接続されてい
るものの他、電気的に接続されているものを含むものとする。ここで、AとBとが電気的
に接続されているとは、AとBとの間で、何らかの電気的作用を有する対象物が存在する
とき、AとBとの電気信号の授受を可能とするものをいう。
【符号の説明】
【0168】
10:半導体装置、10A:半導体装置、11:積和演算回路、12:コントローラ、
13:データ処理回路、14:SRAM、T0:時刻、T1:時刻、T2:時刻、T3:
時刻、T4:時刻、W0:重みデータ、W1:重みデータ、W2:重みデータ、W3:重
みデータ、21:演算回路、21A:演算回路、21B:演算回路、22:スイッチ回路
、31:入力データ、32_1-31_4:重みデータ、33_1-33_4:積和演算
データ、23:積和演算処理、24:和演算処理、61:入力層、62:中間層、63:
出力層、65:畳み込み層、66:畳み込み層、67:プーリング層、68:畳み込み層
、69:プーリング層、70:全結合層、42:フリップフロップ、43:デコーダ、4
4:I2Cコントローラ、45:ルックアップテーブル、51:入力レジスタ、56A-
56C:切り替え回路、57A-57D:メモリ素子、52:メモリ回路、53:乗算回
路、54:加算回路、55A-55B:出力レジスタ、58:パワースイッチ、71:フ
リップフロップ、72:デコーダ、73:メモリセル、74:トランジスタ、75:トラ
ンジスタ、76:トランジスタ、77:トランジスタ、78:インバータラッチ、700
0:IC、7001:リード、7003:回路部、7031:Siトランジスタ層、70
32:配線層、7033:OSトランジスタ層、26:ローカルエリア、25:スイッチ
、27:演算部、80:フリップフロップ、81:デコーダ、83:メモリセル、84:
トランジスタ、85:トランジスタ、86:トランジスタ、87:配線、89:読み出し
制御回路、90:遅延回路、91:制御回路、28:コンフィギュレーションメモリ、2
9:コンフィギュレーションメモリ、1201:ガードレール、2100:ロボット、2
101:照度センサ、2102:マイクロフォン、2103:上部カメラ、2104:ス
ピーカ、2105:ディスプレイ、2106:下部カメラ、2107:障害物センサ、2
108:移動機構、2110:演算装置、2120:飛行体、2121:演算装置、21
22:カメラ、2123:プロペラ、2980:自動車、2981:カメラ