(57)【要約】消費電力の小さい演算装置および電子機器を提供すること。高速動作が可能な演算装置および電子機器を提供すること。発熱の抑制が可能な演算装置および電子機器を提供すること。演算装置は、第１の演算部と、第２の演算部と、を有する。第１の演算部は、第１のＣＰＵコアと、第２のＣＰＵコアと、を有する。第２の演算部は、第１のＧＰＵコアと、第２のＧＰＵコアと、を有する。ＣＰＵコアは、パワーゲーティング機能を有し、フリップフロップに接続されている第１のデータ保持回路を有する。第１のＧＰＵコアは、アナログ値を保持し、２ビット以上のデジタルデータとして読み出すことができる第２のデータ保持回路を有する。第２のＧＰＵコアは、デジタル値を保持し、１ビットのデジタルデータとして読み出すことができる第３のデータ保持回路を有する。第１乃至第３のデータ保持回路は、それぞれ酸化物半導体を有するトランジスタおよび容量素子を有する。
2019048982.tif 000002
【特許請求の範囲】
【請求項１】
第１の演算部と、
第２の演算部と、を有し、
前記第１の演算部は、第１のＣＰＵコアと、第２のＣＰＵコアと、を有し、
前記第２の演算部は、第１のＧＰＵコアと、第２のＧＰＵコアと、を有し、
前記第１のＣＰＵコアおよび前記第２のＣＰＵコアと、は、それぞれパワーゲーティングすることができる機能を有し、
前記第１のＣＰＵコアおよび前記第２のＣＰＵコアは、それぞれフリップフロップに電気的に接続されている第１のデータ保持回路を有し、
前記第１のＧＰＵコアは、アナログ値を保持し、前記アナログ値を２ビット以上のデジタルデータとして読み出すことができる第２のデータ保持回路を有し、
前記第２のＧＰＵコアは、デジタル値を保持し、１ビットのデジタルデータとして読み出すことができる第３のデータ保持回路を有し、
前記第１乃至第３のデータ保持回路は、それぞれ第１のトランジスタおよび容量素子を有し、
前記第１のトランジスタは、前記容量素子に電気的に接続され
前記第１のトランジスタにおいて、チャネル形成領域は酸化物半導体を有することを特徴とする演算装置。
【請求項２】
請求項１において、
前記第２のデータ保持回路および前記第３のデータ保持回路は、それぞれ第２のトランジスタを有し、
前記第１のトランジスタのソースまたはドレインの一方と、前記容量素子の一方の電極と、前記第２のトランジスタのゲートと、が電気的に接続されたノードに前記アナログ値または前記デジタル値に応じた電位を保持する機能を有することを特徴とする演算装置。
【請求項３】
請求項１または請求項２において、
前記第１のＣＰＵコアおよび前記第２のＣＰＵコアは、いずれか一方が演算処理を実行する状態へ、いずれか他方がパワーゲーティングする状態への切り替えが行われ、前記切り替えは前記第１のＣＰＵコアまたは前記第２のＣＰＵコアが設けられた領域の温度に応じて制御されることを特徴とする演算装置。
【請求項４】
請求項１乃至３のいずれか一において、
前記第１のＧＰＵコアおよび前記第２のＧＰＵコアは、いずれか一方が演算処理を実行する状態へ、いずれか他方がパワーゲーティングする状態への切り替えが行われ、前記切り替えは科学技術計算基づく演算処理であるか、またはニューラルネットワークを利用した推論に基づく演算処理であるか、に応じて制御されることを特徴とする演算装置。
【請求項５】
請求項１乃至４のいずれか一に記載の演算装置を有する電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】本発明の一態様は、演算装置および電子機器に関する。【０００２】なお、本発明の一態様は、上記の技術分野に限定されない。本明細書等で開示する本発明の一態様の技術分野としては、半導体装置、撮像装置、表示装置、発光装置、蓄電装置、記憶装置、表示システム、電子機器、照明装置、入力装置、入出力装置、それらの駆動方法、又はそれらの製造方法、を一例として挙げることができる。【０００３】また、本明細書等において、半導体装置とは、半導体特性を利用することで機能しうる装置全般を指す。トランジスタ、半導体回路、演算装置、記憶装置等は半導体装置の一態様である。また、表示装置、撮像装置、電気光学装置、発電装置（薄膜太陽電池、有機薄膜太陽電池等を含む）、及び電子機器は半導体装置を有している場合がある。
【背景技術】
【０００４】ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の演算装置を有する電子機器が普及している。このような電子機器では、大量のデータを高速に処理するため、演算装置の性能向上に関する技術開発が活発である。高性能化を実現する技術としては、例えば、マルチコア技術、ＤＶＦＳ（Ｄｙｎａｍｉｃ  Ｖｏｌｔａｇｅ  ａｎｄ  Ｆｒｅｑｕｅｎｃｙ  Ｓｃａｌｉｎｇ）技術がある。【０００５】また演算装置は、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等のアクセラレータとＣＰＵとを密結合させた、所謂ＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）化によって演算処理性能の向上を実現している。ＳｏＣ化によって高性能化した演算装置では、発熱、及び消費電力の増加が問題となってくる。そのため特許文献１では、演算装置が搭載されたコンピュータの電流を監視し制御することによって、熱負荷を低減するための方法およびシステムに関する発明が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２０１４−５１６４４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】マルチコア技術およびＤＶＦＳ技術は、演算装置の高性能化を図るために有効である。しかしながらＳｏＣ化した演算装置において、マルチコア技術およびＤＶＦＳ技術を適用する場合、コアごとにパワーゲーティングすることが難しく、リーク電流が流れるため消費電力が増加してしまう。【０００８】そこで、本発明の一態様は、新規な演算装置および電子機器を提供することを課題の一とする。又は、本発明の一態様は、消費電力の小さい演算装置および電子機器を提供することを課題の一とする。又は、本発明の一態様は、高速動作が可能な演算装置および電子機器を提供することを課題の一とする。又は、本発明の一態様は、発熱の抑制が可能な演算装置および電子機器を提供することを課題の一とする。【０００９】なお、本発明の一態様は、必ずしも上記の課題の全てを解決する必要はなく、少なくとも一の課題を解決できるものであればよい。また、上記の課題の記載は、他の課題の存在を妨げるものではない。これら以外の課題は、明細書、特許請求の範囲、図面などの記載から、自ずと明らかとなるものであり、明細書、特許請求の範囲、図面などの記載から、これら以外の課題を抽出することが可能である。
【課題を解決するための手段】
【００１０】本発明の一態様は、第１の演算部と、第２の演算部と、を有し、第１の演算部は、第１のＣＰＵコアと、第２のＣＰＵコアと、を有し、第２の演算部は、第１のＧＰＵコアと、第２のＧＰＵコアと、を有し、第１のＣＰＵコアおよび第２のＣＰＵコアと、は、それぞれパワーゲーティングすることができる機能を有し、第１のＣＰＵコアおよび第２のＣＰＵコアは、それぞれフリップフロップに電気的に接続されている第１のデータ保持回路を有し、第１のＧＰＵコアは、アナログ値を保持し、２ビット以上のデジタルデータとして読み出すことができる第２のデータ保持回路を有し、第２のＧＰＵコアは、デジタル値を保持し、１ビットのデジタルデータとして読み出すことができる第３のデータ保持回路を有し、第１乃至第３のデータ保持回路は、それぞれ第１のトランジスタおよび容量素子を有し、第１のトランジスタは、容量素子へのデータの書き込みを制御する機能、および第１のトランジスタのソースとドレインとの間を非導通状態とすることで書き込まれたデータに応じた電荷を保持する機能を有し、第１のトランジスタにおいて、チャネル形成領域は酸化物半導体を有する演算装置である。【００１１】本発明の一態様は、第１の演算部と、複数の第２の演算部と、を有し、第１の演算部は、第１のＣＰＵコアと、第２のＣＰＵコアと、を有し、複数の第２の演算部は、それぞれ第１のＧＰＵコアと、第２のＧＰＵコアと、を有し、第１のＣＰＵコアおよび第２のＣＰＵコアと、は、それぞれパワーゲーティングすることができる機能を有し、第１のＣＰＵコアおよび第２のＣＰＵコアは、それぞれフリップフロップに電気的に接続されている第１のデータ保持回路を有し、第１のＧＰＵコアは、アナログ値を保持し、２ビット以上のデジタルデータとして読み出すことができる第２のデータ保持回路を有し、第２のＧＰＵコアは、デジタル値を保持し、１ビットのデジタルデータとして読み出すことができる第３のデータ保持回路を有し、第１乃至第３のデータ保持回路は、それぞれ第１のトランジスタおよび容量素子を有し、第１のトランジスタは、容量素子へのデータの書き込みを制御する機能、および第１のトランジスタのソースとドレインとの間を非導通状態とすることで書き込まれたデータに応じた電荷を保持する機能を有し、第１のトランジスタにおいて、チャネル形成領域は酸化物半導体を有する演算装置である。【００１２】本発明の一態様において、第２のデータ保持回路および第３のデータ保持回路は、それぞれ第２のトランジスタを有し、第１のトランジスタのソースまたはドレインの一方と、容量素子の一方の電極と、第２のトランジスタのゲートと、が電気的に接続されたノードにアナログ値またはデジタル値に応じた電位を保持する機能を有する演算装置が好ましい。【００１３】本発明の一態様において、第１のＣＰＵコアおよび第２のＣＰＵコアは、いずれか一方が演算処理を実行する状態と、いずれか他方がパワーゲーティングする状態とが切り替えられ、切り替えは第１のＣＰＵコアまたは第２のＣＰＵコアが設けられた領域の温度に応じて制御される演算装置が好ましい。【００１４】本発明の一態様において、第１のＧＰＵコアおよび第２のＧＰＵコアは、いずれか一方が演算処理を実行する状態と、いずれか他方がパワーゲーティングする状態とが切り替えられ、切り替えは科学技術計算に基づく演算処理であるか、またはニューラルネットワークを利用した推論に基づく演算処理であるか、に応じて制御される演算装置が好ましい。【００１５】なおその他の本発明の一態様については、以下で述べる実施の形態における説明、および図面に記載されている。
【発明の効果】
【００１６】本発明の一態様により、新規な演算装置および電子機器を提供することができる。又は、本発明の一態様により、消費電力の小さい演算装置および電子機器を提供することができる。又は、本発明の一態様により、高速動作が可能な演算装置および電子機器を提供することができる。又は、本発明の一態様により、発熱の抑制が可能な演算装置および電子機器を提供することができる。【００１７】なお、これらの効果の記載は、他の効果の存在を妨げるものではない。また、本発明の一態様は、必ずしも、これらの効果の全てを有する必要はない。これら以外の効果は、明細書、特許請求の範囲、図面などの記載から、自ずと明らかとなるものであり、明細書、特許請求の範囲、図面などの記載から、これら以外の効果を抽出することが可能である。
【図面の簡単な説明】
【００１８】
【図１】本発明の一態様の構成を説明するためのブロック図。
【図２】本発明の一態様の構成を説明するためのブロック図。
【図３】本発明の一態様の構成を説明するためのブロック図。
【図４】本発明の一態様の構成を説明するための状態遷移図。
【図５】本発明の一態様の構成を説明するための図。
【図６】本発明の一態様の構成を説明するための図。
【図７】本発明の一態様の構成を説明するためのフローチャート。
【図８】本発明の一態様の構成を説明するためのフローチャート。
【図９】本発明の一態様の構成を説明するためのブロック図。
【図１０】本発明の一態様の構成を説明するためのブロック図。
【図１１】ＣＰＵのパワーゲーティング機構の例を示すブロック図。
【図１２】Ａ：フリップフロップの構成例を示す回路図。Ｂ：フリップフロップの積層構造例を示す図。
【図１３】フリップフロップの動作例を示すタイミングチャート。
【図１４】ｏｓＡＩチップの構成例を示す機能ブロック図。
【図１５】ＭＡＣアレイの構成例を示す回路図。
【図１６】ｏｓＡＩチップの構成例を示す機能ブロック図。
【図１７】演算アレイの構成例を示すブロック図。
【図１８】演算回路の構成例を示す回路図。
【図１９】Ａ：メモリ回路の構成例を示す回路図。Ｂ：メモリセルの構成例を示す回路図。
【図２０】メモリ回路の構成例を示す回路図。
【図２１】Ａ、Ｂ：スイッチ回路の構成例を示す回路図。
【図２２】Ａ：ＮＯＳＲＡＭの構成例を示す機能ブロック図。Ｂ：メモリセルの構成例を示す回路図。
【図２３】Ａ：メモリセルアレイの構成例を示す回路図。Ｂ、Ｃ：メモリセルの構成例を示す回路図。
【図２４】ＮＯＳＲＡＭの動作例を示すタイミングチャート。
【図２５】ＯＳＳＲＡＭの構成例を示す機能ブロック図。
【図２６】Ａ：メモリセルの構成例を示す回路図。Ｂ：ＯＳＳＲＡＭの動作例を示すタイミングチャート。
【図２７】Ａ−Ｄ：ｏｓメモリの回路構成例を示す回路図。
【図２８】ｏｓＡＩチップの回路部の構成例を示す模式図。
【図２９】本発明の一態様の構成を説明するための図。
【図３０】本発明の一態様の構成を説明するための図。
【図３１】本発明の一態様の構成を説明するための図。
【図３２】本発明の一態様の構成を説明するための図。
【発明を実施するための形態】
【００１９】以下に、本発明の実施の形態を説明する。ただし、本発明の一形態は、以下の説明に限定されず、本発明の趣旨およびその範囲から逸脱することなくその形態および詳細を様々に変更し得ることは、当業者であれば容易に理解される。したがって、本発明の一形態は、以下に示す実施の形態の記載内容に限定して解釈されるものではない。
【００２０】以下に示される複数の実施の形態は適宜組み合わせることが可能である。また１の実施の形態の中に、複数の構成例（作製方法例、動作方法例、使用方法例等も含む。）が示される場合は、互いの構成例を適宜組み合わせること、および他の実施の形態に記載された１または複数の構成例と適宜組み合わせることも可能である。
【００２１】図面において、大きさ、層の厚さ、又は領域は、明瞭化のために誇張されている場合がある。よって、必ずしもそのスケールに限定されない。なお図面は、理想的な例を模式的に示したものであり、図面に示す形状又は値などに限定されない。例えば、ノイズによる信号、電圧、若しくは電流のばらつき、又は、タイミングのずれによる信号、電圧、若しくは電流のばらつきなどを含むことが可能である。
【００２２】本明細書等において、金属酸化物（ｍｅｔａｌ  ｏｘｉｄｅ）とは、広い意味での金属の酸化物である。金属酸化物は、酸化物絶縁体、酸化物導電体（透明酸化物導電体を含む）、酸化物半導体（Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒともいう）などに分類される。例えば、トランジスタのチャネル形成領域に金属酸化物を用いた場合、当該金属酸化物を酸化物半導体と呼称する場合がある。つまり、金属酸化物が増幅作用、整流作用、及びスイッチング作用の少なくとも１つを有する場合、当該金属酸化物を、金属酸化物半導体（ｍｅｔａｌ  ｏｘｉｄｅ  ｓｅｍｉｃｏｎｄｕｃｔｏｒ）と呼ぶことができる。以下、チャネル形成領域に金属酸化物を含むトランジスタを、ｏｓトランジスタとも表記する。
【００２３】（実施の形態１）
本発明の一態様である演算装置の構成、および動作等について説明する。
【００２４】図１は、演算装置１００Ａのブロック図である。図１に示す演算装置１００Ａは、ホスト１０（図中、Ｈｏｓｔ）と、バス２０（図中、Ｂｕｓ）と、ＧＰＵ３０と、を有する。ホスト１０およびＧＰＵ３０は、プログラムを実行するための演算を行う機能を有する。
【００２５】ホスト１０は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の実行、データの制御、各種演算やプログラムの実行など、汎用の処理を行う機能を有する。ホスト１０は、複数のＣＰＵコアを有する。図１では、一例としてＣＰＵコア１１ＡおよびＣＰＵコア１１Ｂの２つのＣＰＵコアを図示している。ホスト１０は、メモリ１２を有する。メモリ１２は、メインメモリとしての機能、またはデータキャッシュとしての機能を有する。
【００２６】ＣＰＵコア１１ＡおよびＣＰＵコア１１Ｂは、ホスト１０で行われる処理を実行する機能を有する。ＣＰＵコア１１ＡとＣＰＵコア１１Ｂとは、処理性能が異なることが好ましい。例えば、ＣＰＵコア１１Ａは、ＣＰＵコア１１Ｂと比べて、処理性能が低く且つ消費電力が小さいコアであり、ＣＰＵコア１１Ｂは、ＣＰＵコア１１Ａと比べて、処理性能が高く且つ消費電力が大きいコアである構成が好ましい。当該構成とすることで、ホスト１０で行われる処理の量や種類に応じて、ＣＰＵコア１１ＡまたはＣＰＵコア１１Ｂのいずれか一方または双方を選択し、効率的に処理を実行することができる。
【００２７】なお、ＣＰＵコア１１ＡとＣＰＵコア１１Ｂは異なる回路設計により、処理能力および消費電力を異ならせる構成とすることができる。または、同一のＣＰＵコアを２つ用意し、該ＣＰＵコアのいずれか一方、または双方に対してＤＦＶＳ技術を適用することで、処理能力および消費電力を異ならせる構成とすることができる。具体的な一例としては、一方のＣＰＵコアに対しては電圧および周波数を上げることで処理性能を向上させ、他方のＣＰＵコアに対しては電圧及び周波数を下げることで消費電力を抑制し、上述した処理能力および消費電力を異ならせる構成を実現できる。
【００２８】ＣＰＵコア１１ＡおよびＣＰＵコア１１Ｂは、それぞれデータ保持回路１３を有する。データ保持回路１３は、電源電圧の供給が停止してもデータを保持できる回路である。なお電源電圧の供給は、電源ドメイン（パワードメイン）からのパワースイッチ等による電気的な切り離しによって制御することができる。なお電源電圧は、駆動電圧という場合がある。データ保持回路１３として、例えば、酸化物半導体（ｏｘｉｄｅ  ｓｅｍｉｃｏｎｄｕｃｔｏｒ）をチャネル形成領域に有するトランジスタ（ｏｓトランジスタ）を有するメモリ（以下、ｏｓメモリともいう。）が好適である。
【００２９】金属酸化物のバンドギャップは２．５ｅＶ以上あるため、ｏｓトランジスタは極小のオフ電流をもつ。一例として、ソースとドレイン間の電圧が３．５Ｖ、室温（２５℃）下において、チャネル幅１μｍ当たりのオフ電流を１×１０−２０Ａ未満、１×１０−２２Ａ未満、あるいは１×１０−２４Ａ未満とすることができる。すなわち、ドレイン電流のオン／オフ電流比を２０桁以上１５０桁以下とすることができる。そのため、ｏｓメモリは、ｏｓトランジスタを介して保持ノードからリークする電荷量が極めて少ない。従って、ｏｓメモリは不揮発性メモリ回路として機能できるため、演算装置のパワーゲーティングが可能となる。
【００３０】ｏｓトランジスタに適用される金属酸化物は、Ｚｎ酸化物、Ｚｎ−Ｓｎ酸化物、Ｇａ−Ｓｎ酸化物、Ｉｎ−Ｇａ酸化物、Ｉｎ−Ｚｎ酸化物、Ｉｎ−Ｍ−Ｚｎ酸化物（Ｍは、Ｔｉ、Ｇａ、Ｙ、Ｚｒ、Ｌａ、Ｃｅ、Ｎｄ、ＳｎまたはＨｆ）などがある。また、インジウムおよび亜鉛を含む酸化物に、アルミニウム、ガリウム、イットリウム、銅、バナジウム、ベリリウム、ホウ素、シリコン、チタン、鉄、ニッケル、ゲルマニウム、ジルコニウム、モリブデン、ランタン、セリウム、ネオジム、ハフニウム、タンタル、タングステン、マグネシウムなどから選ばれた一種、または複数種が含まれていてもよい。
【００３１】ｏｓトランジスタの信頼性、電気特性の向上のため、半導体層に適用される金属酸化物は、ＣＡＡＣ−ＯＳ、ＣＡＣ−ＯＳ、ｎｃ−ＯＳなどの結晶部を有する金属酸化物であることが好ましい。ＣＡＡＣ−ＯＳとは、ｃ−ａｘｉｓ−ａｌｉｇｎｅｄ  ｃｒｙｓｔａｌｌｉｎｅ  ｏｘｉｄｅ  ｓｅｍｉｃｏｎｄｕｃｔｏｒの略称である。ＣＡＣ−ＯＳとは、Ｃｌｏｕｄ−Ａｌｉｇｎｅｄ  Ｃｏｍｐｏｓｉｔｅ  ｏｘｉｄｅ  ｓｅｍｉｃｏｎｄｕｃｔｏｒの略称である。ｎｃ−ＯＳとは、ｎａｎｏｃｒｙｓｔａｌｌｉｎｅ  ｏｘｉｄｅ  ｓｅｍｉｃｏｎｄｕｃｔｏｒの略称である。
【００３２】ＣＡＡＣ−ＯＳは、ｃ軸配向性を有し、かつａ−ｂ面方向において複数のナノ結晶が連結し、歪みを有した結晶構造となっている。なお、歪みとは、複数のナノ結晶が連結する領域において、格子配列の揃った領域と、別の格子配列の揃った領域との間で格子配列の向きが変化している箇所を指す。
【００３３】ＣＡＣ−ＯＳは、キャリアとなる電子（または正孔）を流す機能と、キャリアとなる電子を流さない機能とを有する。電子を流す機能と、電子を流さない機能とを分離させることで、双方の機能を最大限に高めることができる。つまり、ＣＡＣ−ＯＳをｏｓトランジスタのチャネル形成領域に用いることで、高いオン電流と、極めて低いオフ電流との双方を実現できる。
【００３４】金属酸化物は、バンドギャップが大きく、電子が励起されにくいこと、ホールの有効質量が大きいことなどから、ｏｓトランジスタは、一般的なＳｉトランジスタと比較して、アバランシェ崩壊等が生じにくい場合がある。従って、例えばアバランシェ崩壊に起因するホットキャリア劣化等を抑制できる。ホットキャリア劣化を抑制できることで、高いドレイン電圧でｏｓトランジスタを駆動することができる。
【００３５】ｏｓトランジスタは、電子を多数キャリアとする蓄積型トランジスタである。そのため、ｐｎ接合を有する反転型トランジスタ（代表的には、Ｓｉトランジスタ）と比較して短チャネル効果の一つであるＤＩＢＬ（Ｄｒａｉｎ  −Ｉｎｄｕｃｅｄ  Ｂａｒｒｉｅｒ  Ｌｏｗｅｒｉｎｇ）の影響が小さい。つまり、ｏｓトランジスタは、Ｓｉトランジスタよりも短チャネル効果に対する高い耐性を有する。
【００３６】ｏｓトランジスタは、短チャネル効果に対する耐性が高いために、ｏｓトランジスタの信頼性を劣化させずに、チャネル長を縮小できるので、ｏｓトランジスタを用いることで回路の集積度を高めることができる。チャネル長が微細化するのに伴いドレイン電界が強まるが、上掲したように、ｏｓトランジスタはＳｉトランジスタよりもアバランシェ崩壊が起きにくい。
【００３７】また、ｏｓトランジスタは、短チャネル効果に対する耐性が高いために、Ｓｉトランジスタよりもゲート絶縁膜を厚くすることが可能となる。例えば、チャネル長及びチャネル幅が５０ｎｍ以下の微細なトランジスタにおいても、１０ｎｍ程度の厚いゲート絶縁膜を設けることが可能な場合がある。ゲート絶縁膜を厚くすることで、寄生容量を低減することができるので、回路の動作速度を向上できる。またゲート絶縁膜を厚くすることで、ゲート絶縁膜を介したリーク電流が低減されるため、静的消費電流の低減につながる。
【００３８】以上より、ＣＰＵコア１１ＡおよびＣＰＵコア１１Ｂは、ｏｓメモリであるデータ保持回路１３を有することで電源電圧の供給が停止してもデータを保持できる。そのため、ＣＰＵコア１１ＡおよびＣＰＵコア１１Ｂのパワーゲーティングが可能となり、消費電力の大幅な低減を図ることができる。
【００３９】メモリ１２は、ＣＰＵコア１１ＡおよびＣＰＵコア１１Ｂが行う処理において必要なデータを格納する機能を有する。メモリ１２は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、などの揮発性メモリまたは不揮発性メモリを備える構成とすることができる。具体的には、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、およびフラッシュメモリなどを用いることができる。またはＮＯＳＲＡＭ、またはＤＯＳＲＡＭを用いることもできる。
【００４０】「ＮＯＳＲＡＭ（登録商標）」とは、「Ｎｏｎｖｏｌａｔｉｌｅ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ  ＲＡＭ」の略称である。ＮＯＳＲＡＭは、メモリセルが２トランジスタ型（２Ｔ）、又は３トランジスタ型（３Ｔ）ゲインセルであり、アクセストランジスタがｏｓトランジスタであるメモリのことをいう。「ＤＯＳＲＡＭ（登録商標）」とは、「Ｄｙｎａｍｉｃ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ  ＲＡＭ」の略称である。ＤＯＳＲＡＭは、メモリセルがｏｓトランジスタと容量素子とでなる１トランジスタ１容量型（１Ｔ１Ｃ）であり、アクセストランジスタがｏｓトランジスタであるメモリのことをいう。ＮＯＳＲＡＭおよびＤＯＳＲＡＭは、アクセストランジスタがｏｓトランジスタである。ｏｓトランジスタはオフ状態でソースとドレインとの間を流れる電流、つまりリーク電流が極めて小さい。ＮＯＳＲＡＭおよびＤＯＳＲＡＭは、リーク電流が極めて小さい特性を用いてデータに応じた電荷をメモリセル内に保持することで、不揮発性メモリとして用いることができる。
【００４１】メモリ１２は、メモリバス（図示せず）経由でＣＰＵコア１１ＡおよびＣＰＵコア１１Ｂと電気的に接続されている。なお、演算装置１００Ａは、ＣＰＵとＧＰＵとが搭載されたヘテロジニアスシステムであることから、メモリ１２をホストメモリと呼ぶ場合がある。
【００４２】ホスト１０は、バス２０を介してＧＰＵ３０と電気的に接続される。つまりホスト１０とＧＰＵ３０とは、バス２０を介してデータ伝送を行うことができる。
【００４３】ＧＰＵ３０は、デバイスメモリ３１と、共有メモリ３２Ａと、共有メモリ３２Ｂと、ＧＰＵコア３３Ａと、ＧＰＵコア３３Ｂと、を有する。デバイスメモリ３１、共有メモリ３２Ａ、および共有メモリ３２Ｂは、オンサイトメモリという場合がある。
【００４４】ＧＰＵ３０は、ホストプログラムから呼び出されたプログラムを実行する機能を有する。ＧＰＵ３０は、例えば、グラフィック処理における行列演算の並列処理、ニューラルネットワークの積和演算の並列処理、科学技術計算における浮動小数点演算の並列処理などを行うことができる。
【００４５】デバイスメモリ３１は、ＧＰＵ３０が実行するプログラム（カーネル、またはカーネルプログラムとも呼ばれる。）、およびＧＰＵ３０が処理するデータを記憶する。デバイスメモリ３１は、メモリバス（図示せず）経由で共有メモリ３２Ａおよび共有メモリ３２Ｂと電気的に接続されている。なお、デバイスメモリ３１とメモリ１２との間のデータ転送は、バス２０を経由して行われる。
【００４６】共有メモリ３２Ａは、ＧＰＵコア３３Ａと電気的に接続され、デジタル値を保持する機能を有する。共有メモリ３２Ｂは、ＧＰＵコア３３Ｂと電気的に接続され、アナログ値を保持する機能を有する。なおデジタル値は二値、つまり１ビットのデジタルデータである。アナログ値は、４値以上のデータであり、量子化することで２ビット以上のデジタルデータとして扱うことができる。そのため、共有メモリ３２Ｂは、共有メモリ３２Ａよりも単位面積当たりのメモリ容量を増やすことができる。
【００４７】ＧＰＵコア３３Ａは、デジタル値を用いた演算処理を行う機能を有する。デジタル値はノイズの影響を受けにくい。そのためＧＰＵコア３３Ａは、高い精度の演算結果が要求される演算処理を行うのに適している。ＧＰＵコア３３Ａは、複数の演算ユニット３４Ａを有する。
【００４８】演算ユニット３４Ａは、デジタル値を保持するデータ保持部３５Ａを有する。各演算ユニット３４Ａは、データ保持部３５Ａに保持されたデジタル値を用いて、整数演算、単精度浮動小数点演算、倍精度浮動小数点演算などの処理のいずれか一を行う機能を有する。ＧＰＵコア３３Ａに搭載されている複数の演算ユニット３４Ａは、基本的には同じ命令を実行する。
【００４９】ＧＰＵコア３３Ｂは、アナログ値を用いた演算処理を行う機能を有する。量子化されたアナログ値をデジタルデータとして演算処理に用いることで、膨大な量の演算処理を行う必要がなくなり、回路規模を小さく抑えることができる。そのためＧＰＵコア３３Ｂは、消費電力を抑えつつ、発熱を抑制することができる。ＧＰＵコア３３Ｂは、複数の演算ユニット３４Ｂを有する。
【００５０】演算ユニット３４Ｂは、アナログ値を保持するデータ保持部３５Ｂを有する。各演算ユニット３４Ｂは、データ保持部３５Ｂに保持されたアナログ値を量子化して得られるデジタルデータを用いて、整数演算、単精度浮動小数点演算、倍精度浮動小数点演算などの処理のいずれか一を行う機能を有する。ＧＰＵコア３３Ｂに搭載されている複数の演算ユニット３４Ｂは、基本的には同じ命令を実行する。
【００５１】図１に示す、演算装置１００Ａにおいて電力の消費を伴う要素は、ホスト１０およびＧＰＵ３０である。演算装置１００Ａの全体の消費電力に対する、ホスト１０およびＧＰＵ３０の割合は比較的大きい。特に、ＧＰＵ３０が、ディープニューラルネットワークの学習（深層学習）、浮動小数点演算を行う科学技術計算などの膨大な演算処理を行う場合、演算装置１００Ａの消費電力は著しく増大する。そのため、ＧＰＵ３０の消費電力を可能な限り小さくすることが好ましい。
【００５２】図１に示す演算装置１００Ａは、ＧＰＵにおける、量子化したアナログ値を用いた演算、およびデジタル値を用いた演算の切り替え、ならびに、ＣＰＵコア１１ＡおよびＣＰＵコア１１Ｂの切り替えを行うことで、消費電力および発熱を抑制しつつ、演算処理を高速に行うことができる。当該構成は、複数のＣＰＵコア、および複数のＧＰＵコアを搭載したＳｏＣにおいて特に有効である。
【００５３】図２は、図１に図示した演算装置１００Ａの変形例のブロック図である。図２に示す演算装置１００Ｂは、２以上のＧＰＵ（ＧＰＵ３０＿１乃至ＧＰＵ３０＿ｎ（ｎは、２以上の自然数。））を有する点において、図１に示す演算装置１００Ａと異なる。
【００５４】バス２０は、ホスト１０、およびＧＰＵ３０＿１乃至ＧＰＵ３０＿ｎと電気的に接続している。ホスト１０とＧＰＵ３０＿１乃至ＧＰＵ３０＿ｎとは、バス２０を介してデータ伝送を行うことができる。その他の構成については、演算装置１００Ａの構成を参酌する。
【００５５】演算装置１００Ｂは、複数のＧＰＵを有することで、演算装置１００Ａと比べて、処理をより高速に実行することができる。また、処理を行うＧＰＵを適宜切り替えることで、演算装置１００Ｂの温度が上昇するのを抑制することができる。
【００５６】図３は、図１に図示した演算装置１００Ａの変形例のブロック図である。図３に示す演算装置１００Ｃは、ＣＰＵ１０Ａ（ＣＰＵ１）と、ＣＰＵ１０Ｂ（ＣＰＵ２）と、バス２０と、ＧＰＵ３０Ａ（ＧＰＵ１）と、ＧＰＵ３０Ｂ（ＧＰＵ２）と、を有する点において、図１に示す演算装置１００Ａと異なる。
【００５７】ＣＰＵ１０Ａは、ＣＰＵコア１１Ａおよびメモリ１２を有し、ＣＰＵ１０Ｂは、ＣＰＵコア１１Ｂおよびメモリ１２を有する。また、ＧＰＵ３０Ａは、デバイスメモリ３１、共有メモリ３２Ａ、およびＧＰＵコア３３Ａを有し、ＧＰＵ３０Ｂは、デバイスメモリ３１、共有メモリ３２Ｂ、およびＧＰＵコア３３Ｂを有する。
【００５８】バス２０は、ＣＰＵ１０Ａ、ＣＰＵ１０Ｂ、ＧＰＵ３０Ａ、およびＧＰＵ３０Ｂと電気的に接続している。ＣＰＵ１０ＡおよびＣＰＵ１０Ｂと、ＧＰＵ３０ＡとＧＰＵ３０Ｂとは、バス２０を介してデータ伝送を行うことができる。その他の構成については、演算装置１００Ａの構成を参酌する。
【００５９】図４は、図１で示す演算装置１００Ａが取り得る複数の状態を説明するための状態遷移図である。図４に示す演算装置１００Ａは、状態ＳＣ１、状態ＳＣ２、状態ＳＧ１、状態ＳＧ２、および状態ＳＰＧ１乃至ＳＰＧ４を有する。
【００６０】図４に示す状態ＳＣ１はＣＰＵコア１１Ａを用いて処理を実行する状態（図中、ＣＰＵ  Ｃｏｒｅ１と図示）に対応する。状態ＳＣ２はＣＰＵコア１１Ｂを用いて処理を実行する状態（図中、ＣＰＵ  Ｃｏｒｅ２と図示）に対応する。状態ＳＧ１はＧＰＵコア３３Ｂを用いて処理を実行する状態（図中、ＧＰＵ  Ｃｏｒｅ１と図示）に対応する。状態ＳＧ２はＧＰＵコア３３Ａを用いて処理を実行する状態（図中、ＧＰＵ  Ｃｏｒｅ２と図示）に対応する。
【００６１】図４に示す状態ＳＰＧ１乃至ＳＰＧ４は、状態ＳＣ１、状態ＳＣ２、状態ＳＧ１、状態ＳＧ２の各状態にあるコアに対して、パワーゲーティング状態（ＰＧ状態、図中ＰＧ  Ｍｏｄｅと表記）にする機能を有する。パワーゲーティングとは、回路に対する電源電圧の供給を制御することにより、例えば使用しない回路に対する電源電圧の供給を停止させる技術である。
【００６２】例えばＣＰＵコア１１ＡのみＰＧ状態にする場合、ＣＰＵコア１１Ａが状態ＳＣ１から状態ＳＰＧ１に移行し、その他の構成であるＣＰＵコア１１Ｂ、ＧＰＵコア３３Ａ、およびＧＰＵコア３３Ｂは、電源電圧の供給が行われる状態ＳＣ２、状態ＳＧ２、状態ＳＧ１のままとなる。また別の例としてＣＰＵコア１１ＡおよびＧＰＵコア３３ＢをＰＧ状態にする場合、ＣＰＵコア１１Ａが状態ＳＣ１から状態ＳＰＧ１に移行するとともに、ＧＰＵコア３３Ｂが状態ＳＧ１から状態ＳＰＧ３に移行し、その他の構成であるＣＰＵコア１１ＢおよびＧＰＵコア３３Ａは、電源電圧の供給が行われる状態ＳＣ２および状態ＳＧ２のままとなる。
【００６３】演算装置１００Ａでは、ホストプログラムに記載されている命令の種類および演算量を元に、状態ＳＣ１または状態ＳＰＧ１、および状態ＳＣ２または状態ＳＰＧ２の選択、つまりＣＰＵコア１１ＡまたはＣＰＵコア１１Ｂのいずれか一方または双方を用いて処理を行うかを選択する。また、ホストプログラムにカーネルプログラムが記載されている場合、カーネルプログラムの種類および演算量を元に、状態ＳＧ１または状態ＳＰＧ３、および状態ＳＧ２または状態ＳＰＧ４の選択、つまりＧＰＵコア３３ＡまたはＧＰＵコア３３Ｂのいずれか一方又は双方を用いて処理を行うかを選択する。当該構成によって、各コアが独立してＰＧ状態とすることが可能となるため、演算装置全体として消費電力を抑制することができる。
【００６４】図５は、図４で説明した状態遷移図で示す各状態に移行する例を説明する図である。具体的には、５つの命令（命令１乃至命令５）に対する、各コアの動作について説明する。図５において、電源電圧が供給され演算可能な状態のコアを、「ＥＸＥ．」と表記し、電源電圧の供給が停止されＰＧ状態であるコアを、「ＰＧ」と表記する。
【００６５】なお図５の説明でＣＰＵコア１（ＣＰＵ  Ｃｏｒｅ１と図示）は、ＣＰＵコア２（ＣＰＵ  Ｃｏｒｅ２と図示）と比べて、演算性能が低く消費電力が小さいコアとする。また、ＣＰＵコア２は、ＣＰＵコア１と比べて、演算性能が高く消費電力が大きいコアとする。また、ＧＰＵコア１（ＧＰＵ  Ｃｏｒｅ１と図示）は、アナログ値を量子化して得られるデジタル値（多値データ）を用いた演算処理を行うＧＰＵコアであり、演算の処理速度および精度が低いが、発熱は小さいとする。また、ＧＰＵコア２（ＧＰＵ  Ｃｏｒｅ２と図示）は、デジタル値を用いた演算処理を行うＧＰＵコアであり、演算の処理速度および精度は高いが、発熱が大きいとする。
【００６６】↓
命令１（図中、Ｉｎｓｔｒｕｃｔｉｏｎ１）は、処理を並列に実行することなく、高い処理性能が要求されない命令である。例えば、演算装置を搭載している電子機器または並列計算機がスリープモードの場合（図中、ｓｌｅｅｐ）等がある。このような場合、ＣＰＵコア１のみを動作させ、他のコアはＰＧ状態にする。ＣＰＵコア１は消費電力が小さく、他のコアはＰＧ状態であり電力を消費しないため、演算装置１００Ａの消費電力および発熱を抑制しつつ、命令１を実行することができる。
【００６７】命令２（図中、Ｉｎｓｔｒｕｃｔｉｏｎ２）は、処理を並列に実行することができず、高速な処理が要求される命令である。例えば、オペレーティングシステムの起動時や、通常のプログラム実行を複数行う場合（図中、ｂｕｓｙ）等がある。このような場合、ＣＰＵコア２のみを動作させ、他のコアはＰＧ状態にする。ＣＰＵコア２は処理性能が高く、他のコアはＰＧ状態であり電力を消費しない。よって、演算装置１００Ａの消費電力を抑制しつつ、命令２を高速に実行することができる。
【００６８】命令３（図中、Ｉｎｓｔｒｕｃｔｉｏｎ３）は、処理を並列に実行することができ、高い処理性能が要求されない命令である。例えば、機械学習に基づく推論処理を行う場合（図中、ｉｎｆｅｒｅｎｃｅ）等がある。このような場合、ＣＰＵコア１およびＧＰＵコア１を動作させ、他のコアはＰＧ状態にする。ＣＰＵコア１はＧＰＵコア１上のメモリに入力データを転送し、カーネルプログラムを呼び出すことで、ＧＰＵコア１に処理を実行させる。処理が終了したら、出力データをＣＰＵコア上のメモリに転送する。ＣＰＵコア１およびＧＰＵコア１は消費電力が小さく、他のコアはＰＧ状態であり電力を消費しない。よって、演算装置１００Ａの消費電力および発熱を抑制しつつ、命令３を実行することができる。なお、ＧＰＵコア１が処理を行っている際、ＣＰＵコア１の動作が不要な場合は、該処理を行っている期間中、ＣＰＵコア１をＰＧ状態に切り替えてもよい。ＰＧ状態への切り替えを頻繁に行うことで、消費電力および発熱を抑制することができる。
【００６９】命令４（図中、Ｉｎｓｔｒｕｃｔｉｏｎ４）は、処理を並列に実行することができ、高速な処理が要求される命令である。例えば、科学技術計算を行う場合（図中、ｃａｌｃｕｌａｔｉｏｎ）等がある。このような場合、ＣＰＵコア２およびＧＰＵコア２を動作させ、他のコアはＰＧ状態にする。ＣＰＵコア２はＧＰＵコア２上のメモリに入力データを転送し、カーネルプログラムを呼び出すことで、ＧＰＵコア２に処理を実行させる。処理が終了したら、出力データをＣＰＵコア上のメモリに転送する。なお、ＣＰＵコア２にて処理の一部を実行してもよい。ＣＰＵコア２およびＧＰＵコア２は処理性能が高く、他のコアはＰＧ状態であり電力を消費しないため、演算装置１００Ａの消費電力を抑制しつつ、命令４を高速に実行することができる。なお、ＧＰＵコア２が処理を行っている際、ＣＰＵコア２の動作が不要な場合は、該処理を行っている期間中、ＣＰＵコア２をＰＧ状態に切り替えてもよい。ＰＧ状態への切り替えを頻繁に行うことで、消費電力および発熱を抑制することができる。
【００７０】命令５（図中、Ｉｎｓｔｒｕｃｔｉｏｎ５）は、命令４と比較して、演算量が多く、より高速な処理が要求される命令である。この場合、ＣＰＵコア２と、ＧＰＵコア２と、の２つのみで処理を行うと、これらのコアが発熱し、基板の温度が上昇することで、演算装置が壊れてしまう恐れがある。このような場合、基板の温度上昇を抑制できる駆動（図中、ｃｏｏｌｉｎｇ）を行うことが有効である。例えば全てのコア（ＣＰＵコア１、ＣＰＵコア２、ＧＰＵコア１、およびＧＰＵコア２）に対して、ＰＧ状態と電源電圧を供給する状態の切り替えを頻繁に行うことで、発熱を抑制しつつ、命令を実行し続けることができる。
【００７１】以上のように、ホストプログラムに記載されている命令の種類および演算量、ならびに、カーネルプログラムの種類および演算量を元に、使用するコアの組み合わせを適切に選択し、選択されなかったコアをＰＧ状態にすることで、消費電力を抑制しつつ、命令を高速に実行することができる。
【００７２】図６（Ａ）、（Ｂ）は、基板の温度に応じて複数のＣＰＵコアまたは複数のＧＰＵコアを用いる際の、演算する状態からＰＧ状態への切り替え、およびＰＧ状態から演算を行う状態への切り替えについての動作を説明する図である。
【００７３】図６（Ａ）では、２つのＣＰＵコア（ＣＰＵ  Ｃｏｒｅ１、ＣＰＵ  Ｃｏｒｅ２）の演算する状態、ＰＧ状態を切り替えて動作させる様子の一例である。初め、ＣＰＵ  Ｃｏｒｅ１への電源電圧の供給をして演算できる状態（ＣＰＵ  Ｃｏｒｅ１  Ｅｘｅ．）とし、ＣＰＵ  Ｃｏｒｅ２への電源電圧の供給を停止してＰＧ状態とする。なお図６（Ａ）に示すグラフは、横軸が時間、縦軸がＣＰＵコアの配置された領域の表面温度を表している。
【００７４】ＣＰＵ  Ｃｏｒｅ１では、演算によって電流が流れるため、ＣＰＵ  Ｃｏｒｅ１の配置された領域を中心に発熱する。発熱によってＣＰＵ  Ｃｏｒｅ１の配置された領域の温度が上昇する。ＣＰＵ  Ｃｏｒｅ１の配置された領域の温度が閾値温度Ｔｔｈに達すると、ＣＰＵ  Ｃｏｒｅ２では、ＰＧ状態から電源電圧を供給する状態に切り替え、演算を行うための待機状態に切り替える（ＣＰＵ  Ｃｏｒｅ２  Ｅｘｅ．）。
【００７５】なおＣＰＵ  Ｃｏｒｅ１の演算能力は、ＣＰＵ  Ｃｏｒｅ２の演算能力より小さい構成とすることが好ましい。具体的にはＣＰＵ  Ｃｏｒｅ２ではＤＶＦＳ技術を適用してＣＰＵ  Ｃｏｒｅ１よりも演算能力を向上させておく構成とする。該構成とすることで、ＣＰＵ  Ｃｏｒｅ１をＣＰＵ  Ｃｏｒｅ２に比べて積極的に用いる場合に、ＣＰＵ  Ｃｏｒｅ１が配置された領域の発熱をＣＰＵ  Ｃｏｒｅ２が配置された領域の発熱よりも抑えることができるため、消費電力の低減、発熱の抑制、およびＰＧ状態への切り替えをおこなう頻度を低減することができる。
【００７６】やがてＣＰＵ  Ｃｏｒｅ１の配置された領域の発熱によってＣＰＵ  Ｃｏｒｅ１の配置された領域の温度が限界温度Ｔｌｉｍに達すると、ＣＰＵ  Ｃｏｒｅ１への電源電圧の供給を停止してＰＧ状態とする（ＣＰＵ  Ｃｏｒｅ１  ＰＧ）。そして、ＣＰＵ  Ｃｏｒｅ２で演算を開始する。ＣＰＵ  Ｃｏｒｅ２は、演算によって電流が流れるため、ＣＰＵ  Ｃｏｒｅ２の配置された領域を中心に発熱する。なお図６（Ａ）に図示する期間ｔ１で、ＣＰＵ  Ｃｏｒｅ２はＰＧ状態から電源電圧の供給をする状態に切り替えられているが、待機状態であるため、発熱が小さい。
【００７７】発熱によってＣＰＵ  Ｃｏｒｅ２の配置された領域の温度が上昇する。このＣＰＵ  Ｃｏｒｅ２の配置された領域の温度が上昇する間、ＣＰＵ  Ｃｏｒｅ１をＰＧ状態とすることで、ＣＰＵ  Ｃｏｒｅ１の配置された領域を冷却することができる。そのため、ＣＰＵ  Ｃｏｒｅ２の温度上昇を抑制することができる。その結果、演算装置全体として温度の上昇を抑制することができるため、ファンなどの冷却機構の削減を可能とすることができる。そして、ＣＰＵ  Ｃｏｒｅ２の配置された領域の温度が閾値温度Ｔｔｈに達すると、ＣＰＵ  Ｃｏｒｅ１では、ＰＧ状態から電源電圧を供給する状態に切り替え、演算を行うための待機状態に切り替える（ＣＰＵ  Ｃｏｒｅ１  Ｅｘｅ．）。
【００７８】やがてＣＰＵ  Ｃｏｒｅ２の配置された領域の発熱によってＣＰＵ  Ｃｏｒｅ２の配置された領域の温度が限界温度Ｔｌｉｍに達すると、ＣＰＵ  Ｃｏｒｅ２への電源電圧の供給を停止してＰＧ状態とする（ＣＰＵ  Ｃｏｒｅ２  ＰＧ）。そして、ＣＰＵ  Ｃｏｒｅ１で演算を開始する。ＣＰＵ  Ｃｏｒｅ１は、演算によって電流が流れるため、ＣＰＵ  Ｃｏｒｅ１の配置された領域を中心に発熱する。なお図６（Ａ）に図示する期間ｔ２で、ＣＰＵ  Ｃｏｒｅ１はＰＧ状態から電源電圧を供給する状態に切り替えられているが、待機状態であるため、発熱が小さい。
【００７９】発熱によって、再度ＣＰＵ  Ｃｏｒｅ１の配置された領域の温度が上昇する。このＣＰＵ  Ｃｏｒｅ１の配置された領域の温度が上昇する間、ＣＰＵ  Ｃｏｒｅ２をＰＧ状態とすることで、ＣＰＵ  Ｃｏｒｅ２の配置された領域を冷却することができる。そのため、ＣＰＵ  Ｃｏｒｅ１の温度上昇を抑制することができる。その結果、演算装置全体として温度の上昇を抑制することができるため、ファンなどの冷却機構の削減を可能とすることができる。
【００８０】同様に図６（Ｂ）では、２つのＧＰＵコア（ＧＰＵ  Ｃｏｒｅ１、ＧＰＵ  Ｃｏｒｅ２）の演算する状態、ＰＧ状態を切り替えて動作させる様子の一例である。初め、ＧＰＵ  Ｃｏｒｅ１に電源電圧の供給をして演算できる状態（ＧＰＵ  Ｃｏｒｅ１  Ｅｘｅ．）とし、ＧＰＵ  Ｃｏｒｅ２への電源電圧の供給を停止してＰＧ状態とする。なお図６（Ｂ）に示すグラフは、横軸が時間、縦軸がＧＰＵコアの配置された領域の表面温度を表している。
【００８１】ＧＰＵ  Ｃｏｒｅ１では、演算によって電流が流れるため、ＧＰＵ  Ｃｏｒｅ１の配置された領域を中心に発熱する。発熱によってＧＰＵ  Ｃｏｒｅ１の配置された領域の温度が上昇する。ＧＰＵ  Ｃｏｒｅ１の配置された領域の温度が閾値温度Ｔｔｈに達すると、ＧＰＵ  Ｃｏｒｅ２では、ＰＧ状態から電源電圧を供給する状態に切り替え、演算を行うための待機状態に切り替える（ＧＰＵ  Ｃｏｒｅ２  Ｅｘｅ．）。
【００８２】なおＧＰＵ  Ｃｏｒｅ１を用いた演算は、ＧＰＵ  Ｃｏｒｅ２を用いた演算より演算量を小さくすることができる。そのため、ＧＰＵ  Ｃｏｒｅ１をＧＰＵ  Ｃｏｒｅ２に比べて積極的に用いるようにすることで、消費電力の低減、発熱の抑制、およびＰＧ状態への切り替えをおこなう頻度を低減することができる。
【００８３】やがてＧＰＵ  Ｃｏｒｅ１の配置された領域の発熱によってＧＰＵ  Ｃｏｒｅ１の配置された領域の温度が限界温度Ｔｌｉｍに達すると、ＧＰＵ  Ｃｏｒｅ１への電源電圧の供給を停止してＰＧ状態とする（ＧＰＵ  Ｃｏｒｅ１  ＰＧ）。そして、ＧＰＵ  Ｃｏｒｅ２で演算を開始する。ＧＰＵ  Ｃｏｒｅ２は、演算によって電流が流れるため、ＧＰＵ  Ｃｏｒｅ２の配置された領域を中心に発熱する。なお図６（Ｂ）に図示する期間ｔ３で、ＧＰＵ  Ｃｏｒｅ２はＰＧ状態から電源電圧の供給をする状態に切り替えられているが、待機状態であるため、発熱が小さい。
【００８４】発熱によってＧＰＵ  Ｃｏｒｅ２の配置された領域の温度が上昇する。このＧＰＵ  Ｃｏｒｅ２の配置された領域の温度が上昇する間、ＧＰＵ  Ｃｏｒｅ１をＰＧ状態とすることで、ＧＰＵ  Ｃｏｒｅ１の配置された領域を冷却することができる。そのため、ＧＰＵ  Ｃｏｒｅ２の温度上昇を抑制することができる。その結果、演算装置全体として温度の上昇を抑制することができるため、ファンなどの冷却機構の削減を可能とすることができる。そして、ＧＰＵ  Ｃｏｒｅ２の配置された領域の温度が閾値温度Ｔｔｈに達すると、ＧＰＵ  Ｃｏｒｅ１では、ＰＧ状態から電源電圧を供給する状態に切り替え、演算を行うための待機状態に切り替える（ＧＰＵ  Ｃｏｒｅ１  Ｅｘｅ．）。
【００８５】やがてＧＰＵ  Ｃｏｒｅ２の配置された領域の発熱によってＧＰＵ  Ｃｏｒｅ２の配置された領域の温度が限界温度Ｔｌｉｍに達すると、ＧＰＵ  Ｃｏｒｅ２への電源電圧の供給を停止してＰＧ状態とする（ＧＰＵ  Ｃｏｒｅ２  ＰＧ）。そして、ＧＰＵ  Ｃｏｒｅ１で演算を開始する。ＧＰＵ  Ｃｏｒｅ１は、演算によって電流が流れるため、ＧＰＵ  Ｃｏｒｅ１の配置された領域を中心に発熱する。なお図６（Ｂ）に図示する期間ｔ４で、ＧＰＵ  Ｃｏｒｅ１はＰＧ状態から電源電圧の供給する状態に切り替えられているが、待機状態であるため、発熱が小さい。
【００８６】発熱によって、再度ＧＰＵ  Ｃｏｒｅ１の配置された領域の温度が上昇する。このＧＰＵ  Ｃｏｒｅ１の配置された領域の温度が上昇する間、ＧＰＵ  Ｃｏｒｅ２をＰＧ状態とすることで、ＧＰＵ  Ｃｏｒｅ２の配置された領域を冷却することができる。そのため、ＧＰＵ  Ｃｏｒｅ１の温度上昇を抑制することができる。その結果、演算装置全体として温度の上昇を抑制することができるため、ファンなどの冷却機構の削減を可能とすることができる。
【００８７】図７は、ＣＰＵコア１（またはＣＰＵコア２。以下図７の説明ではＣＰＵコア１として説明）で実行するプログラムの演算の一部をＧＰＵコア１（またはＧＰＵコア２。以下図７の説明ではＧＰＵコア１として説明）で実行する場合の、動作の一例を説明する図である。
【００８８】ＣＰＵコア１（ＣＰＵ  Ｃｏｒｅ１）にて、ホストプログラムが実行される（ステップＳ１）。このとき、ＧＰＵコア１（ＧＰＵ  Ｃｏｒｅ１）はＰＧ状態（電源電圧の供給が停止される状態）である。
【００８９】ＣＰＵコア１は、ＧＰＵを用いて演算を行う際に必要とされるデータ用領域を、デバイスメモリに確保するとの命令を確認した場合（ステップＳ２）、該データ用領域を、デバイスメモリ上に確保する（ステップＳ３）。
【００９０】次に、ＣＰＵコア１は、メインメモリから上記デバイスメモリへ入力データを送信する（ステップＳ４）。上記デバイスメモリは該入力データを受信し、該入力データを、ステップＳ２で確保された領域に格納する（ステップＳ５）。
【００９１】ＣＰＵコア１は、カーネルプログラムを起動するとの命令を確認した場合（ステップＳ６）、ＧＰＵコア１は、ＰＧ状態から演算を行う状態（電源電圧が供給される状態）へ切り替えられ、カーネルプログラムの実行を開始する（ステップＳ７）。
【００９２】ＧＰＵコア１がカーネルプログラムの実行を開始した直後、ＣＰＵコア１を、演算を行う状態からＰＧ状態へと切り替えてもよい（ステップＳ８）。その場合、ＧＰＵコアがカーネルプログラムの実行を終了する直前に、ＣＰＵコア１は、ＰＧ状態から演算を行う状態へ切り替えられる（ステップＳ９）。ステップＳ８からステップＳ９までの期間、ＣＰＵコア１をＰＧ状態にすることで、演算装置全体として消費電力および発熱を抑制することができる。
【００９３】ＧＰＵコア１がカーネルプログラムの実行を終了すると、出力データが上記デバイスメモリに格納される（ステップＳ１０）。その後、ＧＰＵコア１は、演算を行う状態からＰＧ状態へと切り替えられる。
【００９４】カーネルプログラムの実行が終了した後、ＣＰＵコア１は、デバイスメモリに格納された出力データをメインメモリへ送信するとの命令を確認した場合（ステップＳ１１）、上記の出力データが上記メインメモリへ送信され、上記メインメモリに格納される（ステップＳ１２）。
【００９５】ＣＰＵコア１は、デバイスメモリ上に確保されたデータ用領域を解放するとの指示を確認した場合（ステップＳ１３）、上記デバイスメモリ上に確保された領域が解放される（ステップＳ１４）。
【００９６】以上のステップＳ１からステップＳ１４までの動作を繰り返すことにより、ＣＰＵコア１およびＧＰＵコア１の消費電力および発熱を抑制しつつ、ＣＰＵコア１で実行するプログラムの演算の一部をＧＰＵコア１で実行することができる。
【００９７】図８は、図７と同様にＣＰＵコア１（またはＣＰＵコア２。以下図８の説明ではＣＰＵコア１として説明）で実行するプログラムの演算の一部をＧＰＵコアで行う場合において、ＧＰＵコアで行う演算の種類に応じて演算に用いるＧＰＵコアを切り替える際の動作の一例を説明する図である。ここで、一方のＧＰＵコア（例えばＧＰＵコア１）を、アナログ値を量子化することで２ビット以上のデジタルデータとして演算処理を行うことのできるＧＰＵコアとし、他方のＧＰＵコア（例えばＧＰＵコア２）を、デジタル値を用いた演算処理を行うことのできるＧＰＵコアとする。
【００９８】図８に示すステップＳ２１からステップＳ２５までの動作については、図７に示すステップＳ１からステップＳ５までの動作の説明を参酌することができる。
【００９９】ＣＰＵコア１（ＣＰＵ  Ｃｏｒｅ１）は、カーネルプログラムを起動するとの命令を確認した場合（ステップＳ２６）、カーネルプログラムの種類によって、演算を実行するのに最適なＧＰＵコアを選択する。選択されたＧＰＵコアは、ＰＧ状態から演算を行う状態へと切り替えられ、カーネルプログラムの実行を開始する。カーネルプログラムの実行が終了した後、該ＧＰＵコアは、演算を行う状態からＰＧ状態へと切り替えられる。なお、該ＧＰＵコアが演算を行っている期間、ＣＰＵコア１をＰＧ状態にしてもよい。当該構成とすることで、演算装置全体として消費電力および発熱を抑制することができる。
【０１００】例えば、カーネルプログラムが、機械学習に基づく推論処理である場合（ステップＳ２７）、ＧＰＵコア１（ＧＰＵ  Ｃｏｒｅ１）が選択され、カーネルプログラムの実行を開始する（ステップＳ２９）。カーネルプログラムの実行が終了すると、出力データがデバイスメモリ上に格納される（ステップＳ３１）。その後、ＧＰＵコア１は、演算を行う状態からＰＧ状態へと切り替えられる。
【０１０１】また、例えば、カーネルプログラムが、科学技術計算である場合（ステップＳ２８）、ＧＰＵコア２（ＧＰＵ  Ｃｏｒｅ２）が選択され、カーネルプログラムの実行を開始する（ステップＳ３０）。カーネルプログラムの実行が終了すると、出力データがデバイスメモリ上に格納される（ステップＳ３２）。その後、ＧＰＵコア２は、演算を行う状態からＰＧ状態へと切り替えられる。
【０１０２】図８に示すステップＳ３３からステップＳ３６までの動作については、図７に示すステップＳ１１からステップＳ１４までの動作の説明を参酌することができる。
【０１０３】以上のステップにより、ＧＰＵコアで行う演算の種類に応じて演算に用いるＧＰＵコアを切り替えることで、ＣＰＵコア１で実行するプログラムの演算の一部をＧＰＵコアで行うことができる。
【０１０４】図９は、より具体的な演算装置の構成を説明するためのブロック図の一例である。
【０１０５】図９に図示する演算装置１００Ｄは、ＣＰＵ１１０、ＧＰＵ１２０、オンチップメモリ１３１、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）１４１、電源回路１６０、パワーマネジメントユニット（ＰＭＵ）１４２、セキュリティー回路１４７、メモリコントローラ１４３、ＤＤＲ  ＳＤＲＡＭ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）コントローラ１４４、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）インターフェース回路１４５、ディスプレイインターフェース回路１４６、ブリッジ回路１５０、割り込み制御回路１５１、インターフェース回路１５２、バッテリー制御回路１５３、およびＡＤＣ（Ａｎａｌｏｇ−ｔｏ−ｄｉｇｉｔａｌ  ｃｏｎｖｅｒｔｅｒ）／ＤＡＣ（Ｄｉｇｉｔａｌ−ｔｏ−ａｎａｌｏｇ  ｃｏｎｖｅｒｔｅｒ）インターフェース回路１５４を有する。
【０１０６】ＣＰＵ１１０は、ＣＰＵコア１１１、命令キャッシュ１１２、データキャッシュ１１３、およびバスインターフェース回路１１４を有する。ＧＰＵ１２０は、ＧＰＵコア１２１、オンサイトメモリ１２２、ＡＤＣ／ＤＡＣ１２３、および制御回路１２４を有する。
【０１０７】ＣＰＵコア１１１は、複数のＣＰＵコアを有する。例えば、図１で説明したようにＣＰＵコア１１ＡおよびＣＰＵコア１１Ｂを有する構成とすればよい。命令キャッシュ１１２は、ＣＰＵコア１１ＡおよびＣＰＵコア１１Ｂで実行する命令を一時的に記憶する回路構成とすればよい。データキャッシュ１１３は、ＣＰＵコア１１ＡおよびＣＰＵコア１１Ｂで処理するデータまたは処理によって得られたデータを一時的に記憶する回路構成とすればよい。バスインターフェース回路１１４は、ＣＰＵ１１０と、演算装置内の他の回路とを接続するためのバスとデータやアドレス等の信号を送受信することができる回路構成であればよい。
【０１０８】ＧＰＵコア１２１は、複数のＧＰＵコアを有する。例えば、図１で説明したようにＧＰＵコア３３ＡおよびＧＰＵコア３３Ｂを有する構成とすればよい。オンサイトメモリ１２２は、ＧＰＵコア３３ＡおよびＧＰＵコア３３Ｂで処理するデータおよびＧＰＵ３０が実行するプログラムを一時的に記憶する回路構成とすればよい。ＡＤＣ／ＤＡＣ１２３は、処理するデータのアナログ値とデジタル値の変換を相互に行うための回路構成とすればよい。制御回路１２４は、ＧＰＵ１２０内の回路を制御するための回路構成とすればよい。
【０１０９】高速バス１４０Ａは、ＣＰＵ１１０、ＧＰＵ１２０、オンチップメモリ１３１、ＤＭＡＣ１４１、パワーマネジメントユニット１４２、セキュリティー回路１４７、メモリコントローラ１４３、ＤＤＲ  ＳＤＲＡＭコントローラ１４４、ＵＳＢインターフェース回路１４５、およびディスプレイインターフェース回路１４６の間の各種信号を高速で送受信するためのバスである。一例としては、ＡＭＢＡ（Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏｃｏｎｔｏｒｏｌｌｅｒ  Ｂｕｓ  Ａｒｔｃｉｔｅｃｔｕｒｅ）−ＡＨＢ（Ａｄｖａｎｃｅｄ  Ｈｉｇｈ−ｐｅｒｆｅｒｍａｎｃｅ  Ｂｕｓ）をバスとして用いることができる。
【０１１０】オンチップメモリ１３１は、演算装置１００Ｄが有する回路、例えばＣＰＵ１１０またはＧＰＵ１２０に入出力するデータまたはプログラムを記憶するための回路構成を有する。
【０１１１】ＤＭＡＣ１４１は、ダイレクトメモリアクセスコントローラである。ＤＭＡＣ１４１を有することで、ＣＰＵ１１０以外の周辺機器は、ＣＰＵ１１０を介さずにオンチップメモリ１３１にアクセスすることができる。
【０１１２】パワーマネジメントユニット１４２は、演算装置１００Ｄが有するＧＰＵコアやＣＰＵコア等の回路のパワーゲーティングを制御するための回路構成を有する。
【０１１３】セキュリティー回路１４７は、演算装置１００Ｄと外部の回路との間で暗号化して信号を送受信するなど、信号の秘匿性を高めるための回路構成を有する。
【０１１４】メモリコントローラ１４３は、演算装置１００Ｄの外部にあるプログラムメモリからＣＰＵ１１０またはＧＰＵ１２０で実行するためのプログラムを書き込みまたは読み出しを行うための回路構成を有する。
【０１１５】ＤＤＲ  ＳＤＲＡＭコントローラ１４４は、演算装置１００Ｄの外部にあるＤＲＡＭ等のメインメモリとの間でデータを書き込みまたは読み出しを行うための回路構成を有する。
【０１１６】ＵＳＢインターフェース回路１４５は、演算装置１００Ｄの外部にある回路とＵＳＢ端子を介してデータの送受信を行うための回路構成を有する。
【０１１７】ディスプレイインターフェース回路１４６は、演算装置１００Ｄの外部にあるディスプレイデバイスとデータの送受信を行うための回路構成を有する。
【０１１８】電源回路１６０は、演算装置１００Ｄ内で用いる電圧を生成するための回路である。例えば、ｏｓトランジスタのバックゲートに与える、電気的特性を安定化するための負電圧を生成する回路である。
【０１１９】低速バス１４０Ｂは、割り込み制御回路１５１、インターフェース回路１５２、バッテリー制御回路１５３、およびＡＤＣ／ＤＡＣインターフェース回路１５４の間の各種信号を低速で送受信するためのバスである。一例としては、ＡＭＢＡ−ＡＰＢ（Ａｄｖａｎｃｅｄ  Ｐｅｒｉｐｈｅｒａｌ  Ｂｕｓ）をバスとして用いることができる。高速バス１４０Ａと低速バス１４０Ｂとの間の各種信号の送受信は、ブリッジ回路１５０を介して行う。
【０１２０】割り込み制御回路１５１は、周辺機器から受け取る要求に対して、割り込み処理を行うための回路構成を有する。
【０１２１】インターフェース回路１５２は、ＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ／Ｔｒａｎｓｍｉｔｔｅｒ）や、Ｉ２Ｃ（Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＳＰＩ（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）などのインターフェースを機能させるための回路構成を有する。
【０１２２】バッテリー制御回路１５３は、演算装置１００Ｄの外部にあるバッテリーの充放電に関するデータを送受信するための回路構成を有する。
【０１２３】ＡＤＣ／ＤＡＣインターフェース回路１５４は、演算装置１００Ｄの外部にあるＭＥＭＳ（Ｍｉｃｒｏ  Ｅｌｅｃｔｒｏ  Ｍｅｃｈａｎｉｃａｌ  Ｓｙｓｔｅｍｓ）デバイス等のアナログ信号を出力するデバイスとの間でデータを送受信するための回路構成を有する。
【０１２４】図１０（Ａ）、（Ｂ）は、ＳｏＣ化した際の回路ブロックの配置の一例を示す図である。図１０（Ａ）に図示する演算装置１００Ｄのように図９のブロック図で図示した各構成は、チップ上で領域を区切って配置することができる。
【０１２５】なお図９で説明したオンチップメモリ１３１や、ＧＰＵ１２０が有するオンサイトメモリ１２２は、ｏｓメモリ、例えばＮＯＳＲＡＭ等で構成することができる。つまりオンチップメモリ１３１とオンサイトメモリ１２２とは、同じ回路構成を有する。そのため、ＳｏＣ化した際、図１０（Ｂ）に図示する演算装置１００Ｅのようにオンチップメモリ１３１とオンサイトメモリ１２２とを一体化して同じ領域内に配置することも可能である。
【０１２６】以上説明した本発明の一態様により、新規な演算装置および電子機器を提供することができる。又は、本発明の一態様により、消費電力の小さい演算装置および電子機器を提供することができる。又は、本発明の一態様により、高速動作が可能な演算装置および電子機器を提供することができる。又は、本発明の一態様により、発熱の抑制が可能な演算装置および電子機器を提供することができる。
【０１２７】（実施の形態２）
本実施の形態では、パワーゲーティングが可能なＣＰＵコアを有するＣＰＵの一例について説明する。
【０１２８】＜＜ＣＰＵ１９０＞＞
図１１に、ＣＰＵ１９０の構成例を示す。ＣＰＵ１９０は、ＣＰＵコア（ＣＰＵ  Ｃｏｒｅ）２００、Ｌ１（レベル１）キャッシュメモリ装置（Ｌ１  Ｃａｃｈｅ）２０２、Ｌ２キャッシュメモリ装置（Ｌ２  Ｃａｃｈｅ）２０３、バスインターフェース部（Ｂｕｓ  Ｉ／Ｆ）２０５、パワースイッチ２１０〜２１２、レベルシフタ（ＬＳ）２１４を有する。ＣＰＵコア２００はフリップフロップ２２０を有する。
【０１２９】バスインターフェース部２０５によって、ＣＰＵコア２００、Ｌ１キャッシュメモリ装置２０２、Ｌ２キャッシュメモリ装置２０３が相互に電気的に接続される。
【０１３０】外部から入力される割り込み信号（Ｉｎｔｅｒｒｕｐｔｓ）、ＣＰＵ１９０が発行する信号ＳＬＥＥＰ１等の信号に応じて、ＰＭＵ１９３はクロック信号ＧＣＬＫ１、各種のＰＧ（パワーゲーティング）制御信号（ＰＧ  ｃｏｎｔｒｏｌ  ｓｉｇｎａｌｓ）の生成を行う。クロック信号ＧＣＬＫ１、ＰＧ制御信号はＣＰＵ１９０に入力される。ＰＧ制御信号は、パワースイッチ２１０〜２１２、フリップフロップ２２０を制御する。
【０１３１】パワースイッチ２１０、２１１は、仮想電源線Ｖ＿ＶＤＤ（以下、Ｖ＿ＶＤＤ線と呼ぶ）への電圧ＶＤＤＤ、ＶＤＤ１の供給をそれぞれ制御する。パワースイッチ２１２は、仮想電源線Ｖ＿ＶＤＨ（以下、Ｖ＿ＶＤＨ線と呼ぶ。）への電圧ＶＤＤＨの供給を制御する。ＣＰＵ１９０、ＰＭＵ１９３には、パワースイッチを介さずに電圧ＶＳＳＳが入力される。ＰＭＵ１９３には、パワースイッチを介さずに電圧ＶＤＤＤが入力される。
【０１３２】電圧ＶＤＤＤ、ＶＤＤ１はＣＭＯＳ回路用の駆動電圧である。電圧ＶＤＤ１は電圧ＶＤＤＤよりも低く、スリープ状態での駆動電圧である。電圧ＶＤＤＨはｏｓトランジスタ用の駆動電圧であり、電圧ＶＤＤＤよりも高い。
【０１３３】Ｌ１キャッシュメモリ装置２０２、Ｌ２キャッシュメモリ装置２０３、バスインターフェース部２０５それぞれは、少なくとも１つパワーゲーティング可能なパワードメインを有する。パワーゲーティング可能なパワードメインには、１または複数のパワースイッチが設けられている。これらのパワースイッチは、ＰＧ制御信号によって制御される。
【０１３４】フリップフロップ２２０は、レジスタに用いられる。フリップフロップ２２０には、バックアップ回路が設けられている。バックアップ回路は、ｏｓメモリで構成されている。以下、フリップフロップ２２０について説明する。
【０１３５】＜フリップフロップ（Ｆｌｉｐ−ｆｌｏｐ）２２０＞
図１２にフリップフロップ２２０の回路構成例を示す。フリップフロップ２２０はスキャンフリップフロップ（Ｓｃａｎ  Ｆｌｉｐ−ｆｌｏｐ）２２１、バックアップ回路（Ｂｕｃｋｕｐ  Ｃｉｒｃｕｉｔ）２２２を有する。
【０１３６】（スキャンフリップフロップ２２１）
スキャンフリップフロップ２２１は、ノードＤ１、Ｑ１、ＳＤ、ＳＥ、ＲＴ、ＣＫ、クロックバッファ回路２２１Ａを有する。
【０１３７】ノードＤ１はデータ（ｄａｔａ）入力ノードであり、ノードＱ１はデータ出力ノードであり、ノードＳＤはスキャンテスト用データの入力ノードである。ノードＳＥは信号ＳＣＥの入力ノードである。ノードＣＫはクロック信号ＧＣＬＫ１の入力ノードである。クロック信号ＧＣＬＫ１はクロックバッファ回路２２１Ａに入力される。スキャンフリップフロップ２２１のアナログスイッチは、クロックバッファ回路２２１ＡのノードＣＫ１、ＣＫＢ１に電気的に接続される。ノードＲＴはリセット信号（ｒｅｓｅｔ  ｓｉｇｎａｌ）の入力ノードである。
【０１３８】信号ＳＣＥは、スキャンイネーブル信号であり、ＰＭＵ１９３で生成される。ＰＭＵ１９３は信号ＢＫ、ＲＣを生成する。レベルシフタ２１４は信号ＢＫ、ＲＣをレベルシフトし、信号ＢＫＨ、ＲＣＨを生成する。信号ＢＫ、ＲＣはバックアップ信号、リカバリ信号である。
【０１３９】スキャンフリップフロップ２２１の回路構成は、図１２に限定されない。標準的な回路ライブラリに用意されているフリップフロップを適用することができる。
【０１４０】（バックアップ回路２２２）
バックアップ回路２２２は、ノードＳＤ＿ＩＮ、ＳＮ１１、トランジスタＭ１１〜Ｍ１３、容量素子Ｃ１１を有する。
【０１４１】ノードＳＤ＿ＩＮは、スキャンテストデータの入力ノードであり、スキャンフリップフロップ２２１のノードＱ１に電気的に接続される。ノードＳＮ１１は、バックアップ回路２２２の保持ノードである。容量素子Ｃ１１はノードＳＮ１１の電圧を保持するための保持容量である。
【０１４２】トランジスタＭ１１はノードＱ１とノードＳＮ１１間の導通状態を制御する。トランジスタＭ１２はノードＳＮ１１とノードＳＤ間の導通状態を制御する。トランジスタＭ１３はノードＳＤ＿ＩＮとノードＳＤ間の導通状態を制御する。トランジスタＭ１１、Ｍ１３のオンオフは信号ＢＫＨで制御され、トランジスタＭ１２のオンオフは信号ＲＣＨで制御される。
【０１４３】トランジスタＭ１１〜Ｍ１３は、後述するトランジスタＭ１と同様に、バックゲートを有するｏｓトランジスタである。トランジスタＭ１１〜Ｍ１３のバックゲートは、電圧ＶＢＧ１を供給する電源線に電気的に接続されている。
【０１４４】少なくともトランジスタＭ１１、Ｍ１２がｏｓトランジスタであることが好ましい。オフ電流が極めて小さいというｏｓトランジスタの特長によって、ノードＳＮ１１の電圧の低下を抑えることができること、データの保持に電力を殆んど消費しないことから、バックアップ回路２２２は不揮発性の特性をもつ。容量素子Ｃ１１の充放電によってデータを書き換えるため、バックアップ回路２２２は原理的には書き換え回数に制約はなく、低エネルギーで、データの書き込みおよび読み出しが可能である。
【０１４５】バックアップ回路２２２の全てのトランジスタはｏｓトランジスタであることが非常に好ましい。図１２（Ｂ）に示すように、シリコンＣＭＯＳ回路で構成されるスキャンフリップフロップ２２１上にバックアップ回路２２２を積層することができる。
【０１４６】バックアップ回路２２２は、スキャンフリップフロップ２２１と比較して素子数が非常に少ないので、バックアップ回路２２２を積層するためにスキャンフリップフロップ２２１の回路構成およびレイアウトの変更が必要ない。つまり、バックアップ回路２２２は、汎用性が非常に高いバックアップ回路である。また、スキャンフリップフロップ２２１が形成されている領域内にバックアップ回路２２２を設けることができるので、バックアップ回路２２２を組み込んでも、フリップフロップ２２０の面積オーバーヘッドはゼロにすることが可能である。よって、バックアップ回路２２２をフリップフロップ２２０に設けることで、ＣＰＵコア２００のパワーゲーティングが可能となる。パワーゲーティングに必要なエネルギーが少ないため、ＣＰＵコア２００を高効率にパワーゲーティングすることが可能である。
【０１４７】バックアップ回路２２２を設けることによって、トランジスタＭ１１による寄生容量がノードＱ１に付加されることになるが、ノードＱ１に接続される論理回路による寄生容量と比較して小さいので、スキャンフリップフロップ２２１の動作に影響はない。つまり、バックアップ回路２２２を設けても、フリップフロップ２２０の性能は実質的に低下しない。
【０１４８】＜低消費電力状態＞
ＣＰＵコア２００の低消費電力状態として、例えば、クロックゲーティング状態、パワーゲーティング状態、休止状態を設定することができる。ＰＭＵ１９３は、割り込み信号、信号ＳＬＥＥＰ１等に基づき、ＣＰＵコア２００の低消費電力モードを選択する。例えば、通常動作状態からクロックゲーティング状態に移行する場合、ＰＭＵ１９３はクロック信号ＧＣＬＫ１の生成を停止する。
【０１４９】例えば、通常動作状態から休止状態に移行する場合は、ＰＭＵ１９３は、電圧および／または周波数スケーリングを行う。例えば、電圧スケーリングを行う場合、ＰＭＵ１９３は、電圧ＶＤＤ１をＣＰＵコア２００に入力するため、パワースイッチ２１０をオフにし、パワースイッチ２１１をオンにする。電圧ＶＤＤ１は、スキャンフリップフロップ２２１のデータを消失させない電圧である。周波数スケーリングを行う場合、ＰＭＵ１９３はクロック信号ＧＣＬＫ１の周波数を低下させる。
【０１５０】ＣＰＵコア２００を通常動作状態からパワーゲーティング状態に移行する場合には、スキャンフリップフロップ２２１のデータをバックアップ回路２２２にバックアップする動作が行われる。ＣＰＵコア２００をパワーゲーティング状態から通常動作状態に復帰する際には、バックアップ回路２２２のデータをスキャンフリップフロップ２２１に書き戻すリカバリ動作が行われる。
【０１５１】図１３に、ＣＰＵコア２００のパワーゲーティングシーケンスの一例を示す。なお、図１３において、ｔ１〜ｔ７は時刻を表している。信号ＰＳＥ０〜ＰＳＥ２は、パワースイッチ２１０〜２１２の制御信号であり、ＰＭＵ１９３で生成される。信号ＰＳＥ０が“Ｈ”／“Ｌ”のとき、パワースイッチ２１０はオン／オフである。信号ＰＳＥ１、ＰＳＥ２についても同様である。
【０１５２】（通常動作（Ｎｏｒｍａｌ  Ｏｐｅｒａｔｉｏｎ））
時刻ｔ１以前は、通常動作状態である。パワースイッチ２１０はオンであり、ＣＰＵコア２００には電圧ＶＤＤＤが入力される。スキャンフリップフロップ２２１は通常動作を行う。このとき、レベルシフタ２１４は動作させる必要がないため、パワースイッチ２１２はオフであり、信号ＳＣＥ、ＢＫ、ＲＣは“Ｌ”である。ノードＳＥが“Ｌ”であるため、スキャンフリップフロップ２２１はノードＤ１のデータを記憶する。なお、図１３の例では、時刻ｔ１において、バックアップ回路２２２のノードＳＮ１１は“Ｌ”である。
【０１５３】（バックアップ（Ｂａｃｋｕｐ））
時刻ｔ１で、ＰＭＵ１９３はクロック信号ＧＣＬＫ１を停止し、信号ＰＳＥ２、ＢＫを“Ｈ”にする。レベルシフタ２１４はアクティブになり、“Ｈ”の信号ＢＫＨをバックアップ回路２２２に出力する。
【０１５４】バックアップ回路２２２のトランジスタＭ１１がオンになり、スキャンフリップフロップ２２１のノードＱ１のデータがバックアップ回路２２２のノードＳＮ１１に書き込まれる。スキャンフリップフロップ２２１のノードＱ１が“Ｌ”であれば、ノードＳＮ１１は“Ｌ”のままであり、ノードＱ１が“Ｈ”であれば、ノードＳＮ１１は“Ｈ”になる。
【０１５５】ＰＭＵ１９３は、時刻ｔ２で信号ＰＳＥ２、ＢＫを“Ｌ”にし、時刻ｔ３で信号ＰＳＥ０を“Ｌにする。時刻ｔ３で、ＣＰＵコア２００の状態はパワーゲーティング状態に移行する。なお、信号ＢＫを立ち下げるタイミングで信号ＰＳＥ０を立ち下げてもよい。
【０１５６】（パワーゲーティング（Ｐｏｗｅｒ−ｇａｔｉｎｇ））
信号ＰＳＥ０が“Ｌになることで、Ｖ＿ＶＤＤ線の電圧が低下するため、ノードＱ１のデータは失われる。ノードＳＮ１１は、時刻ｔ３でのノードＱ１のデータを保持し続ける。
【０１５７】（リカバリ（Ｒｅｃｏｖｅｒｙ））
時刻ｔ４で、ＰＭＵ１９３が信号ＰＳＥ０を“Ｈ”にすることで、パワーゲーティング状態からリカバリ状態に移行する。Ｖ＿ＶＤＤ線の充電が開始され、Ｖ＿ＶＤＤ線の電圧がＶＤＤＤになった状態（時刻ｔ５）で、ＰＭＵ１９３は信号ＰＳＥ２、ＲＣ、ＳＣＥを“Ｈ”にする。
【０１５８】トランジスタＭ１２はオンになり、容量素子Ｃ１１の電荷がノードＳＮ１１とノードＳＤとに分配される。ノードＳＮ１１が“Ｈ”であれば、ノードＳＤの電圧は上昇する。ノードＳＥは“Ｈ”であるので、スキャンフリップフロップ２２１の入力側ラッチ回路にノードＳＤのデータが書き込まれる。時刻ｔ６でノードＣＫにクロック信号ＧＣＬＫ１が入力されると、入力側ラッチ回路のデータがノードＱ１に書き込まれる。つまり、ノードＳＮ１１のデータがノードＱ１に書き込まれたことになる。
【０１５９】時刻ｔ７で、ＰＭＵ１９３は信号ＰＳＥ２、ＳＣＥ、ＲＣを“Ｌ”にし、リカバリ動作が終了する。
【０１６０】ｏｓトランジスタを用いたバックアップ回路２２２は、動的および静的低消費電力双方が小さいため、ノーマリオフ・コンピューティングに非常に好適である。フリップフロップ２２０を搭載しても、ＣＰＵコア２００の性能低下、動的電力の増加をほとんど発生させないようにできる。
【０１６１】なお、ＣＰＵコア２００は複数のパワーゲーティング可能なパワードメインを有してもよい。複数のパワードメインには、電圧の入力を制御するための１または複数のパワースイッチが設けられる。また、ＣＰＵコア２００は、１または複数のパワーゲーティングが行われないパワードメインを有していてもよい。例えば、パワーゲーティングが行われないパワードメインに、フリップフロップ２２０、パワースイッチ２１０〜２１２の制御を行うためのパワーゲーティング制御回路を設けてもよい。
【０１６２】なお、フリップフロップ２２０の適用はＣＰＵ１９０に限定されない。演算装置において、パワーゲーティング可能なパワードメインに設けられるレジスタに、フリップフロップ２２０を適用できる。
【０１６３】（実施の形態３）
本実施の形態では、上記実施の形態で説明した演算装置をＳｏＣ化した集積回路（以下、ｏｓＡＩチップ）について、具体的な構成例を説明する。以下では、データ保持回路にアナログ値を保持して演算処理（アナログ演算ともいう）を行うｏｓＡＩチップ（アナログｏｓＡＩチップ）として説明する。なおアナログｏｓＡＩチップは、実施の形態４で後述する、データ保持回路にデジタル値を保持して演算処理（デジタル演算ともいう）を行うｏｓＡＩチップ（プログラマブルｏｓＡＩチップ）と、を１つのＳｏＣ化したｏｓＡＩチップとすることができる。
【０１６４】＜＜アナログｏｓＡＩチップ＞＞
ここでは、アナログ演算を利用した超並列コンピューティングが可能なｏｓＡＩチップ４００について説明する。ｏｓＡＩチップ４００は、全結合型ニューラルネットワーク（ＦＣＮＮ）に非常に有利である。ｏｓＡＩチップ４００の構成例、動作方法例の理解を容易にするため、ＦＣＮＮが回路によって構成されているとする。ＦＣＮＮは、１個の隠れ層をもつ。入力層、隠れ層、出力層のユニット数はそれぞれ１０２４、１２８、３２である。活性化関数にはＲｅＬＵ（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ）が用いられている。ｏｓＡＩチップ４００のＦＣＮＮは、例えば、手書き文字認識、汎用ＡＩに適用される。
【０１６５】図１４は、ｏｓＡＩチップ４００の構成例を示す機能ブロック図である。図１４に示すｏｓＡＩチップ（ｏｓＡＩ  ｃｈｉｐ）４００は、レシーバ（ＲＸ）４０１、デジタル−アナログコンバータ（ＤＡＣ）４０３、４０４、積和演算回路（ＭＡＣ）アレイ（ＭＡＣと図示）４０５、４０６、ゲートドライバ（Ｇａｔｅ  ｄｒｉｖｅｒ）４０７、アナログ−デジタルコンバータ（ＡＤＣ）４０８、トランスミッタ（ＴＸ）４０９を有する。
【０１６６】ｏｓＡＩチップ４００のデータ伝送方式は差動伝送方式である。例えば、レシーバ４０１として、ＬＶＤＳ（小振幅差動伝送方式：Ｌｏｗ  Ｖｏｌｔａｇｅ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｓｉｇｎａｌｉｎｇ）レシーバが用いられ、トランスミッタ４０９としてＬＶＤＳトランスミッタが用いられる。
【０１６７】リセット信号ｒｅｓｅｔ＿ｎは、ｏｓＡＩチップ４００をリセットする。
【０１６８】データｉｎ＿ｗ［７：０］は、学習済みデータ（Ｌｅａｒｎｅｄ  ｄａｔａ）である。例えば、重み係数を表す８ビットデジタル信号である。イネーブル信号ｅｎ＿ｌａ＿ｗ、クロック信号ｄｃｌｋ＿ｗに従い、ＤＡＣ４０４は、データｉｎ＿ｗ［７：０］をアナログデータに変換する。ゲートドライバ４０７は、ＭＡＣアレイ４０５、４０６へのアナログデータの書込みを制御する。ゲートドライバ４０７には、クロック信号ｇｃｌｋ、パルス幅制御信号ｇｐｗｃ、スタートパルス信号ｇｓｐが入力される。
【０１６９】ｏｓＡＩチップ４００が処理するデータは８ビットデジタルデータであり、差動伝送方式で入力される。例えば、レシーバ４０１として、ＬＶＤＳレシーバが用いられる。レシーバ４０１は、差動クロック信号ｒｘ＿ｃｌｐ、ｒｘ＿ｃｌｎに従い、入力データｒｘ＿ｄｐ［７：０］、ｒｘ＿ｄｎ［７：０］をシングルエンド形式の８ビットデータに変換する。ＤＡＣ４０３は、この８ビットデータをアナログデータに変換する。ＤＡＣ４０３から出力されるアナログデータは、逐次ＭＡＣアレイ４０５に書き込まれる。
【０１７０】＜ＭＡＣアレイ４０５、４０６＞
図１５を参照して、ＭＡＣアレイ４０５の回路構成例を説明する。ＭＡＣアレイ４０５には、１０２４行１４４列の行列状に乗算回路４０が設けられている。乗算回路４０は、図２７（Ｂ）のｏｓメモリ３８２と同じ回路構成である。つまり、乗算回路４０は、演算回路と、重み係数を記憶する不揮発性ローカルメモリ回路双方の機能を持つ。このことにより、ｏｓＡＩチップ４００は、ＧＰＵと比べて非常に少ないトランジスタ数によって、超並列演算を実現できる。トランジスタ数の低減は、ｏｓＡＩチップ４００の小型化、消費電力の低減につながる。
【０１７１】ＭＡＣアレイ４０５には、乗算回路４０の配列に応じて、ゲート線ＧＬ１、データ線ＲＸ１、ＷＤ１、ＲＤ１が設けられている。データ線ＷＤ１は重み係数データを乗算回路４０に入力するための配線である。データ線ＷＤ１には、ＤＡＣ４０４からアナログデータが入力される。ゲート線ＧＬ１は、重み係数データを入力する乗算回路４０を選択するための信号線である、ゲート線ＧＬ１は、ゲートドライバ４０７によって駆動される。
【０１７２】乗算回路４０に重み係数データｗ０を書き込むことで、乗算回路４０の保持ノード（読出しトランジスタのゲート）の電圧は、重み係数データに応じた電圧Ｖｗ０となる。
【０１７３】データ線ＲＸ１は、ＣＦＮＮが処理するデータの入力用配線である。データ線ＲＸ１には、ＤＡＣ４０３からアナログデータが入力される。データ線ＲＤ１には、乗算回路４０の演算結果が読みだされる。データ線ＲＤ１には、電流源４２、オフセット回路４３が電気的に接続されている。
【０１７４】乗算回路４０に流れる電流Ｉ０は、保持ノードの電圧Ｖｗ０とデータ線ＲＸ１の電圧Ｖｘ０の積に比例する。つまり、電流Ｉ０は、重み係数と入力データの積を表している。同様に、電流Ｉ１は、保持ノードの電圧Ｖｗ１と電圧Ｖｘ１との積に比例する。つまり乗算回路４０は、重み係数データと入力データとの積を計算することができる。
【０１７５】データ線ＲＤ１あたり１０２４個の乗算回路４０が電気的に接続されている。電流源４２は参照電流Ｉｒｅｆを生成する。オフセット回路４３に入力される電流Ｉｏｕｔは、参照電流Ｉｒｅｆと電流Ｉｍａｃとの差分である。電流Ｉｍａｃは、１０２４個の乗算回路４０を流れる電流の総和であり、重み係数と入力データとの積和した値を表す。参照電流ＩｒｅｆとＩｍａｃとの差分をとることで、電流Ｉｏｕｔのノイズ成分を低減できる。
【０１７６】オフセット回路４３は、電流Ｉｏｕｔを電圧Ｖｏｕｔに変換し、参照電圧Ｖｒｅｆと電圧Ｖｏｕｔとの差分をとる。これにより、電圧Ｖｏｕｔのノイズ成分が低減される。オフセット回路４３は、ＶｒｅｆとＶｏｕｔとの差分電圧を増幅して、活性化関数回路４４に出力する。活性化関数回路４４は処理したデータをＭＡＣアレイ４０６に出力する。
【０１７７】なお、ＭＡＣアレイ４０５の１４４列のうちの１６列は、電流Ｉｏｕｔの生成に寄与せず積和演算に用いられる参照データを保持する。
【０１７８】ＭＡＣアレイ４０６は、ＭＡＣアレイ４０５と同様の構成である。乗算回路４０が３６行１２８列の行列状に配置されている。ＭＡＣアレイ４０６において、３６行のうちの４行は、電流Ｉｏｕｔの生成に寄与せず、参照データの保持に用いられる。
【０１７９】図１４に示すイネーブル信号ｅｎ＿ｃｍは、ＭＡＣアレイ４０５、４０６の電流源４２用のイネーブル信号である。イネーブル信号ｅｎ＿ａｂｓは、ＭＡＣアレイ４０５、４０６のオフセット回路４３用のイネーブル信号であり、信号ｏｓｐ１、ｏｓｎ１、ｅｎ＿ｒｅｓ１はＭＡＣアレイ４０５のオフセット回路４３の制御信号であり、信号ｏｓｐ２、ｏｓｎ２、ｅｎ＿ｒｅｓ２はＭＡＣアレイ４０６のオフセット回路４３の制御信号である。
【０１８０】＜ＡＤＣ４０８、トランスミッタ４０９＞
ＡＤＣ４０８には、ＭＡＣアレイ４０６から３２のアナログデータが並列に入力される。ＡＤＣ４０８は、シリアルパラレル変換を行うため、出力段にレジスタを備える。ＡＤＣ４０８は、１チャネルの８ビットデジタルデータを出力する。
【０１８１】信号ｃｌｋ＿ｓａｒ、ｒｅｓ＿ｓｅｒ、ｇｏ、ｓｔｂｙ＿ａｄｃは、それぞれ、ＡＤＣ４０８用のクロック信号、リセット信号、イネーブル信号、スタンバイ信号である。信号ｄｃｌｋ＿ｐ２ｓ、ｅｎ＿ｐ２ｓ＿ｐｅｒ、ｅｎ＿ｐ２ｓ＿ｓｅｒは、それぞれ、レジスタ用のクロック信号、ラッチ信号、出力イネーブル信号である。ＡＤＣ４０８には、３２のアナログデータが入力され、８ビットデジタルデータをトランスミッタ４０９へ出力する。信号ｓｔｂｙ＿ｔｘはトランスミッタ４０９用のスタンバイ信号である。
【０１８２】トランスミッタ４０９は、信号ｄｃｌｋ＿ｐ２ｓに応じて、８ビットデジタルデータを差分形式のデータｔｘ＿ｄｐ［７：０］、ｔｘ＿ｄｎ［７：０］に変換し、出力し、信号ｄｃｌｋ＿ｐ２ｓを差分形式のクロック信号ｔｘ＿ｃｌｐ、ｔｘ＿ｃｌｎに変換し、出力する。差分データｔｘ＿ｄｐ［７：０］、ｔｘ＿ｄｎ［７：０］は、ＦＣＮＮが取得した３２種類の推論データである。
【０１８３】ＭＡＣアレイ４０５、４０６の入力および出力データはアナログデータであるので、入出力データがデジタルデータである場合と比較し、ＭＡＣアレイ４０５、４０６の配線数を大幅に低減することができる。乗算回路４０は、乗算機能と、重み係数データの保持機能双方を備えるため、演算時にデータを読み込むことがない。つまり、乗算回路４０は、データの授受の時間ペナルティーおよび電力ペナルティーが実質的にない。
【０１８４】並列処理アーキテクチャをもつプロセッサとしてＧＰＵが知られている。ＧＰＵも、ＣＰＵと同様に、演算部とメモリ部間のデータ授受が演算効率のボトルネックとされている。これに対して、ｏｓＡＩチップ４００はこのような問題点がない。
【０１８５】乗算回路４０は、２Ｔゲインセルと同じ回路構成であり、少ないトランジスタ数によって、アナログデータの掛け算を行うことができる。したがって、多数の乗算回路４０を用いて、積和演算部を構成することで、低消費電力で、超並列演算処理が可能なｏｓＡＩチップ４００を提供することができる。例えば、乗算回路４０の数が１０６乃至１０８個程度であり、動作周波数３ＭＨｚ又は３０ＭＨｚである場合、ｏｓＡＩチップ４００の演算性能は、３ＴＯＰＳ（Ｔｅｒａ  Ｏｐｅｒａｔｉｏｎｓ  Ｐｅｒ  Ｓｅｃｏｎｄ）乃至３ＰＯＰＳ（Ｐｅｔａ  ＯＰＳ）程度である。
【０１８６】（実施の形態４）
＜＜プログラマブルｏｓＡＩチップ＞＞
ここで示すｏｓＡＩチップ４５０は、プログラマブルニューラルネットワークを構成できる。ｏｓＡＩチップ４５０が演算するデータの形式はデジタルである。ｏｓＡＩチップ４５０の演算回路は、専用の不揮発性ローカルメモリ回路を有し、不揮発性ローカルメモリはｏｓメモリで構成されている。ｏｓＡＩチップ４５０上に構成されたニューラルネットワークは、例えば、各種画像処理（例えば、ノイズ除去、高解像度化）、物体認識、汎用ＡＩとして用いることができる。
【０１８７】図１６は、ｏｓＡＩチップ４５０の構成例を示す機能ブロック図である。ｏｓＡＩチップ（ｏｓＡＩ  ｃｈｉｐ）４５０は、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）４６０、Ｉ２Ｃモジュール（Ｉ２Ｃ）４６２、レシーバ（ＲＸ）４６３、トランスミッタ（ＴＸ）４６４、データドライバ（Ｄａｔａ  ｄｒｉｖｅｒ）４６６、ワードドライバ（Ｗｏｒｄ  ｄｒｉｖｅｒ）４６７を有する。コントローラ４６０は、演算回路アレイ４７０、演算部４７１、ＳＲＡＭ４７２、セレクタ４７４、４７５、デマルチプレクサ４７６を有する。
【０１８８】ｏｓＡＩチップ４５０の入力データには、動作設定データ（Ｏｐｅｒａｔｉｏｎ  ｓｅｔｔｉｎｇ  ｄａｔａ）、学習済みデータ（Ｌｅａｒｎｅｄ  ｄａｔａ）、パイプライン構造データ（Ｐｉｐｅｌｉｎｅ  ｃｏｎｓｔｒｕｃｔｉｏｎ  ｄａｔａ）、演算回路アレイ４７０が処理するデータ（Ｉｎｐｕｔ  ｄａｔａ）がある。学習済みデータ、パイプライン構造データは、コントローラ４６０のコンフィギュレーションデータとして、ｏｓＡＩチップ４５０に入力される。
【０１８９】データｓｄａはシリアル形式の動作設定データであり、Ｉ２Ｃモジュール４６２に書き込まれる。Ｉ２Ｃモジュール４６２は、書き込まれた動作設定データをコントローラ４６０に出力する。信号ｉ２ｃ＿ｃｌｋ、ｉ２ｃ＿ｒｅｓｅｔｂ、ｓｃｌは、それぞれ、Ｉ２Ｃコントローラ用クロック信号、Ｉ２Ｃリセット信号、Ｉ２Ｃクロック信号である。信号Ｏ＿ＳＡＶＥ、Ｏ＿ＬＯＡＤ、ＯＳ＿ＵＳＥは、動作設定データのバックアップ制御に用いられる。
【０１９０】データＤＡＴＡ０は、データドライバ４６６に入力される。データＤＡＴＡ０はコンフィグレーションデータである。データドライバ４６６からは信号ｎＳＴＡＴＵＳが出力される。信号ｎＳＴＡＴＵＳは、コンフィギュレーション状態をあらわす信号である。
【０１９１】ｏｓＡＩチップ４５０へのデータ伝送方式には、シングルエンド方式と、ＬＶＤＳ方式とが可能である。データｄｉｎ［７：０］はシングルエンド方式の入力データであり、セレクタ４７４に入力される。レシーバ４６３は、ｏｓＡＩチップ４００のレシーバと同様の構成であり、差動クロック信号ｒｘ＿ｃｌｐ、ｒｘ＿ｃｌｎに従い、差動入力データｒｘ＿ｄｐ［７：０］、ｒｘ＿ｄｎ［７：０］をシングルエンド方式のデータｒｘ＿ｄｓ［７：０］に変換し、セレクタ４７４に出力する。信号ｓｔｂｙ＿ｒｘ、ｈｐｅ＿ｒｘはそれぞれ、レシーバ４６３のスタンバイ信号である。
【０１９２】信号ｎＣＯＮＦＩＧ、ＤＣＬＫがコントローラ４６０に入力され、コントローラ４６０は信号ＣＯＮＦ＿ＤＯＮＥを出力する。信号ｎＣＯＮＦＩＧ、ＤＣＬＫはそれぞれ、コンフィギュレーション開始信号、コンフィギュレーション用クロック信号である。信号ＣＯＮＦ＿ＤＯＮＥはコンフィギュレーションが完了したことを表す信号である。
【０１９３】信号ｓｙｓ＿ｃｌｋ、ｓｙｓ＿ｒｅｓｅｔｂ、ｕｓｅｒ＿ｒｅｓｅｔｂ、ｃｏｎｔｅｘｔ＿ｅｘ［５：０］は、それぞれ、システムクロック信号、システムリセット信号、ユーザリセット信号、外部コンテキスト信号である。信号ｄａｔａ＿ｅｎは、コントローラ４６０への入力データの伝送を実行する期間を設定する信号である。これらの信号は、コントローラ４６０に入力される。コントローラ４６０は信号Ｓｔａｔｅ［２：０］、ｓｕｂｓｔａｔｅ［２：０］を出力する。信号Ｓｔａｔｅ［２：０］、ｓｕｂｓｔａｔｅ［２：０］はそれぞれコントローラ４６０内部の状態、サブ状態をあらわす。
【０１９４】演算回路アレイ４７０には、セレクタ４７５の出力データが入力される。演算回路アレイ４７０は処理したデータを演算部４７１に出力する。演算部４７１の出力データはＳＲＡＭ４７２で一時的に記憶される。ＳＲＡＭ４７２から読み出されたデータは、セレクタ４７５、デマルチプレクサ４７６に出力される。セレクタ４７５は、セレクタ４７４の出力データ、ＳＲＡＭ４７２の出力データの何れか一方を演算回路アレイ４７０に出力する。
【０１９５】デマルチプレクサ４７６は、データの出力形式を選択する機能をもつ。デマルチプレクサ４７６の一方の出力データは、シングルエンド形式のデータｄｏｕｔ［７：０］としてｏｓＡＩチップ４５０外部に出力される。他方の出力データはトランスミッタ４６４で処理され、差動形式のデータｔｘ＿ｄｐ［７：０］、ｔｘ＿ｄｎ［７：０］に変換され、ｏｓＡＩチップ４５０外部に出力される。
【０１９６】＜演算回路アレイ４７０＞
図１７〜図２１を参照して、演算回路アレイ４７０について説明する。図１７に示すように、演算回路アレイ４７０は、複数の演算回路６１、複数のスイッチ回路６２が行列状に設けられている。演算回路６１、スイッチ回路６２はプログラマブル回路である。演算回路アレイ４７０の処理内容に合わせて、演算回路６１は回路構成される。演算回路アレイ４７０の処理内容に合わせて、スイッチ回路６２の回路構成を変更することにより、演算回路６１の接続関係が変更される。
【０１９７】なお、図１７中の「Ｕ」、「Ｄ、「Ｌ」、「Ｒ」はスイッチ回路６２の配線の名称であり、かつ接続方向（上、下、左、右）を表している。
【０１９８】図１８に演算回路６１の構成例を示す。演算回路６１は、入力レジスタ５１、メモリ回路５２、乗算回路５３、加算回路５４、出力レジスタ５５Ａ、５５Ｂ、セレクタ５６Ａ〜５６Ｄ、メモリ回路５７Ａ〜５７Ｃを有する。メモリ回路５２、５７Ａ〜５７Ｃは、演算回路６１の不揮発性ローカルメモリ回路であり、ｏｓメモリが適用されている。
【０１９９】入力レジスタ５１には、データｓｉｎが入力される。入力レジスタ５１はラッチ信号ｓｌａｔの制御でデータｓｉｎを保持する。入力レジスタ５１は、保持データをデータｓｏｕｔとして、セレクタ５６Ａに出力する。メモリ回路５７Ａの出力信号に従い、セレクタ５６Ａは、データｓｉｎとデータｓｏｕｔの何れか一方を選択し、選択したデータをデータｓｄａｔａとして、乗算回路５３に出力する。データｓｏｕｔは、演算回路６１の外部に出力される。入力レジスタ５１を設けることで、データｓｉｎを入力レジスタ５１で一時的に保持することで、データｓｉｎをシフトしたデータｓｏｕｔを出力することができる。
【０２００】メモリ回路５２は、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗ［１：０］が入力される。コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗ［１：０］は、信号ｃｏｎｔｅｘｔ＿ｅｘ［５：０］をデコードすることで生成される内部信号である。メモリ回路５２は複数の重み係数データを記憶している。重み係数データは、コンフィギュレーションデータ（ｃｏｎｆｉｇｕｒａｔｉｏｎ  ｄａｔａ）として、メモリ回路５２に書き込まれている。コンフィギュレーションデータはデータドライバ４６６から伝送される。
【０２０１】図１９（Ａ）に示すように、メモリ回路５２は、フリップフロップ７１、デコーダ７２、メモリセル７３＿０〜７３＿３、トランジスタ７７、ラッチ回路７８を有する。メモリセル７３＿０〜７３＿３は、ｏｓメモリ３８３（図２７（Ｃ）参照）と同じ回路構成であり、３個のｏｓトランジスタでなるゲインセルである。
【０２０２】信号ｗｏｒｄ０〜ｗｏｒｄ３はワードドライバ４６７で生成される。信号ｗｏｒｄ０〜ｗｏｒｄ３によって１個のメモリセルが選択され、選択されたメモリセルにコンフィギュレーションデータ（ｃｏｎｆｉｇｕｒａｔｉｏｎ  ｄａｔａ）が書き込まれる。
【０２０３】フリップフロップ７１は、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗ［１：０］を保持する。デコーダ７２は、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｗ［１：０］をデコードして、切替え信号ｃｏｎｔｅｘｔ＿Ｗ０〜ｃｏｎｔｅｘｔ＿Ｗ３を生成し、出力する。切替え信号ｃｏｎｔｅｘｔ＿Ｗ０〜ｃｏｎｔｅｘｔ＿Ｗ３は、重み係数データを出力するメモリセルを選択する機能を持つ。選択されたメモリセルから読み出された重みデータは、データｃｍｏｕｔとして、乗算回路５３へ出力される。トランジスタ７７は、データｃｍｏｕｔが読みだされる配線を電圧Ｖｐｒにプリチャージする機能を持つ。信号ｐｒｃｈに従い、トランジスタ７７は当該配線をプリチャージする。
【０２０４】図１９（Ｂ）にメモリセルの他の構成例を示す。図１９（Ｂ）に示すメモリセル７４は、メモリセル７３＿０の変形例であり、読出しトランジスタのゲートに２個のインバータ回路でなるラッチ回路が設けられている。例えば、これらインバータ回路は、ｎチャネル型Ｓｉトランジスタとｐチャネル型ＳｉトランジスタでなるＣＭＯＳ回路である。
【０２０５】図２０にメモリ回路５７Ａの構成例を示す。メモリ回路５７Ａは、メモリセル９１＿０、９１＿１、トランジスタ９２＿０、９２＿１、９３を有する。メモリ回路５７Ａには、コンフィギュレーションデータ（ｃｏｎｆｉｇｕｒａｔｉｏｎ  ｄａｔａ）、切替え信号ｃｏｎｔｅｘｔ＿Ａ０、ｃｏｎｔｅｘｔ＿Ａ１、信号ｗｏｒｄＡ０、ｗｏｒｄＢ０、ｗｏｒｄＡ１、ｗｏｒｄＢ１が入力される。
【０２０６】メモリセル９１＿０、９１＿１は、それぞれ、２個のｏｓメモリ３８２（図２７（Ｂ））で構成される。メモリセル９１＿０にコンフィギュレーションデータ“１”を書き込む場合は、信号ｗｏｒｄＡ０を“Ｈ”にし、信号ｗｏｒｄＢ０、ｗｏｒｄＡ１、ｗｏｒｄＢ１を“Ｌ”にする。メモリセル９１＿０にコンフィギュレーションデータ“０”を書き込む場合は、信号ｗｏｒｄＢ０を“Ｈ”にし、信号ｗｏｒｄＡ０、ｗｏｒｄＡ１、ｗｏｒｄＢ１を“Ｌ”にする。
【０２０７】セレクタ５６Ａへ制御信号が出力される間は、トランジスタ９３はオフ状態である。切替え信号ｃｏｎｔｅｘｔ＿Ａ０、ｃｏｎｔｅｘｔ＿Ａ１により、トランジスタ９２＿０、９２＿１の何れか一方がオン状態になる。例えば、トランジスタ９２＿０がオンになると、メモリセル９１＿０の保持データに応じた論理の制御信号が、セレクタ５６Ａに出力される。
【０２０８】メモリ回路５７Ｂ、５７Ｃは、メモリ回路５７Ａと同じ回路構成をもつ。
【０２０９】乗算回路５３は、データｓｄａｔａとデータｃｍｏｕｔとの積を計算し、計算結果を表すデータｍｏｕｔを生成する。データｍｏｕｔは、加算回路５４およびセレクタ５６Ｂに出力される。
【０２１０】データａｉｎは、他の演算回路６１の出力データ、または、セレクタ４７５の出力データである。加算回路５４は、データａｉｎとデータｍｏｕｔとの和を計算し、計算結果を表すデータａｏｕｔを生成する。データａｏｕｔはセレクタ５６Ｂ、５６Ｃに出力される。
【０２１１】出力レジスタ５５Ａはセレクタ５６Ｂの出力データを保持し、出力レジスタ５５Ｂはセレクタ５６Ｃの出力データを保持する。出力レジスタ５５Ａ、５５Ｂを設けることで、信号遅延による演算エラーを防ぐことができる。信号ｒｅｓ＿ｒｇは、出力レジスタ５５Ａ、５５Ｂのリセット信号である。
【０２１２】出力レジスタ５５Ａは保持データをセレクタ５６Ｄに出力する。セレクタ５６Ｄまたは出力レジスタ５５Ｂの出力データが、データａｃｏｕｔとして演算回路６１から出力される。
【０２１３】演算回路アレイ４７０には演算回路６１が行列状に配列されているので、演算回路アレイは、積和演算装置として機能させることができる。
【０２１４】演算回路アレイ４７０の出力データは、演算部４７１に入力される。例えば、演算部４７１は、活性化関数の機能および／またはプーリング層の機能を持つ。
【０２１５】＜スイッチ回路６２の構成＞
図２１（Ａ）、図２１（Ｂ）を参照して、スイッチ回路６２を説明する。図２１（Ａ）に示すように、スイッチ回路６２には、８個のスイッチ回路６５が設けられている。データｓｏｕｔの出力用配線６６Ｓは、配線Ｕ、Ｄ、Ｌ、Ｒのうちの何れか１に電気的に接続される。データａｃｏｕｔの出力用配線６７Ａについても同様である。
【０２１６】図２１（Ｂ）に示すように、スイッチ回路６５は、フリップフロップ８０、デコーダ８１、メモリセル８３＿０、８３＿１、配線８７を有する。配線８７は、配線Ｌ、Ｒ、ＵまたはＤのいずれかの配線である。図２１（Ｂ）には、４ビットデータを伝えるためのスイッチ回路６５を図示している。
【０２１７】フリップフロップ８０は、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｃを保持する。デコーダ８１は、コンテキスト信号ｃｏｎｔｅｘｔ＿Ｃをデコードして、切替え信号ｃｏｎｔｅｘｔ＿Ｃ０、ｃｏｎｔｅｘｔ＿Ｃ１を生成する。メモリセル８３＿０には信号ｃｏｎｔｅｘｔ＿Ｃ０、ｗｏｒｄ０が入力され、メモリセル８３＿１には信号ｃｏｎｔｅｘｔ＿Ｃ１、ｗｏｒｄ１が入力される。
【０２１８】メモリセル８３＿０の書込みトランジスタは、バックゲートを有するｏｓトランジスタである。メモリセル８３＿０において、書込みトランジスタ以外のトランジスタは、バックゲートを有さないｎチャネル型Ｓｉトランジスタである。なお、メモリセル８３＿０の全てのトランジスタがｏｓトランジスタであってもよい。メモリセル８３＿１についても同様である。
【０２１９】信号ｗｏｒｄ０によって、書込みトランジスタをオン状態にすることで、メモリセル８３＿０へコンフィギュレーションデータ（ｃｏｎｆｉｇｕｒａｔｉｏｎ  ｄａｔａ）が書き込まれる。切替え信号ｃｏｎｔｅｘｔ＿Ｃ０によって、メモリセル８３＿０が選択される場合、メモリセル８３＿０が保持しているコンフィギュレーションデータに応じて、配線８７と演算回路６１間の接続状態が決定される。
【０２２０】演算回路６１およびスイッチ回路６２は不揮発性ローカルメモリ回路を内蔵しているため、演算回路６１およびスイッチ回路６２は、演算中にｏｓＡＩチップ４５０の外部のメモリ装置にアクセスする必要がない。よって、ｏｓＡＩチップ４５０もｏｓＡＩチップ４００と同様に演算部とメモリ部間のデータ授受が演算効率のボトルネックにならない。演算回路６１間でデータの受け渡しと、演算処理とが逐次実行されるため、演算を高効率に行える。
【０２２１】演算回路６１およびスイッチ回路６２がマルチコンテキスト方式のプログラマブルな回路であるため、少ないハードウエア資源で、超並列演算処理を効率よく実行することが可能である。また、様々なニューラルネットワークをｏｓＡＩチップ４５０のハードウエアによって実現することができる。
【０２２２】（実施の形態５）
Ｌ１キャッシュメモリ装置２０２、Ｌ２キャッシュメモリ装置２０３は、ｏｓメモリで構成される。ｏｓメモリとは、メモリセルにｏｓトランジスタが用いられているメモリのことを指す。例えば、Ｌ１キャッシュメモリ装置２０２、Ｌ２キャッシュメモリ装置２０３は、ＮＯＳＲＡＭ（登録商標）、またはＯＳＳＲＡＭで構成される。ＯＳＳＲＡＭとは、ｏｓトランジスタで構成されるバックアップ回路が設けられているＳＲＡＭのことである。以下に、ＮＯＳＲＡＭ、ＯＳＳＲＡＭの構成例を示す。
【０２２３】＜ＮＯＳＲＡＭ＞
図２２（Ａ）はＮＯＳＲＡＭの構成例を示すブロック図である。ＮＯＳＲＡＭ２４０には、パワードメイン２４２、２４３、パワースイッチ２４５〜２４７が設けられている。パワードメイン２４２には、メモリセルアレイ（Ｍｅｍｏｒｙ  Ｃｅｌｌ  Ａｒｒａｙ）２５０が設けられ、パワードメイン２４３にはＮＯＳＲＡＭ２４０の周辺回路が設けられている。周辺回路は、制御回路（Ｃｏｎｔｒｏｌ  Ｃｉｒｃｕｉｔ）２５１、行回路（Ｒｏｗ  Ｃｉｒｃｕｉｔ）２５２、列回路（Ｃｏｌｕｍｎ  Ｃｉｒｃｕｉｔ）２５３を有する。
【０２２４】外部からＮＯＳＲＡＭ２４０に電圧ＶＤＤＤ、ＶＳＳＳ、ＶＤＨＷ、ＶＤＨＲ、ＶＢＧ２、クロック信号ＧＣＬＫ２、アドレス信号Ａｄｄｒｅｓｓ、信号ＣＥ、ＷＥ、ＰＳＥ５が入力される。信号ＣＥ、ＷＥは、それぞれ、チップイネーブル信号、書き込みイネーブル信号である。信号ＰＳＥ５はＰＭＵ１９３で生成され、パワースイッチ２４５〜２４７のオンオフを制御する。パワースイッチ２４５〜２４７は、パワードメイン２４３への電圧ＶＤＤＤ、ＶＤＨＷ、ＶＤＨＲの入力をそれぞれ制御する。
【０２２５】なお、ＮＯＳＲＡＭ２４０に入力される電圧、信号等は、ＮＯＳＲＡＭ２４０の回路構成、動作方法に応じて適宜取捨される。例えば、ＮＯＳＲＡＭ２４０にパワーゲーティングされないパワードメインを設け、信号ＰＳＥ５を生成するパワーゲーティング制御回路を設けてもよい。
【０２２６】メモリセルアレイ２５０は、メモリセル２６０、書込みワード線ＷＷＬ、読出しワード線ＲＷＬ、書込みビット線ＷＢＬ、読出しビット線ＲＢＬ、ソース線ＳＬを有する。
【０２２７】図２２（Ｂ）に示すように、メモリセル２６０は２Ｔ１Ｃ（２トランジスタ１容量）型のゲインセルであり、ノードＳＮ１、トランジスタＭ１、Ｍ２、容量素子Ｃ１を有する。トランジスタＭ１は書き込みトランジスタであり、バックゲートを有するｏｓトランジスタである。トランジスタＭ１のバックゲートは、電圧ＶＢＧ２を供給する配線ＢＧＬ２に電気的に接続されている。トランジスタＭ２は読出しトランジスタであり、ｐチャネル型Ｓｉトランジスタである。容量素子Ｃ１はノードＳＮ１の電圧を保持する保持容量である。
【０２２８】電圧ＶＤＤＤ、ＶＳＳＳはデータ“１”、“０”を表す電圧である。なお、書込みワード線ＷＷＬ、読み出しワードＲＷＬの高レベル電圧は、それぞれ、ＶＤＨＷ、ＶＤＨＲである。
【０２２９】図２３（Ａ）にメモリセルアレイ２５０の構成例を示す。図２３（Ａ）に示すメモリセルアレイ２５０では、隣接する２列で１本のソース線が供給されている。
【０２３０】メモリセル２６０は原理的に書き換え回数に制限はなく、データの書き換えを低エネルギーで行え、データの保持に電力を消費しない。トランジスタＭ１が極小オフ電流のｏｓトランジスタであるため、メモリセル２６０は長時間データを保持することが可能である。よって、ＮＯＳＲＡＭ２４０で、Ｌ１キャッシュメモリ装置２０２、Ｌ２キャッシュメモリ装置２０３を構成することで、Ｌ１キャッシュメモリ装置２０２、Ｌ２キャッシュメモリ装置２０３を、不揮発性の低消費電力なメモリ装置とすることができる。
【０２３１】メモリセル２６０の回路構成は、図２２（Ｂ）の回路構成に限定されない。例えば、読出しトランジスタＭ２は、バックゲートを有するｏｓトランジスタ、またはｎチャネル型Ｓｉトランジスタでもよい。或いは、メモリセル２６０は３Ｔ型ゲインセルでもよい。図２３（Ｂ）、図２３（Ｃ）に３Ｔ型ゲインセルの例を示す。図２３（Ｂ）に示すメモリセル２６２は、トランジスタＭ３〜Ｍ５、容量素子Ｃ３、ノードＳＮ３を有する。トランジスタＭ３〜Ｍ５は、書込みトランジスタ、読出しトランジスタ、選択トランジスタである。トランジスタＭ３はバックゲートを有するｏｓトランジスタであり、トランジスタＭ４、Ｍ５はｐチャネル型Ｓｉトランジスタである。トランジスタＭ４、Ｍ５を、ｎチャネル型Ｓｉトランジスタまたはバックゲートを有するｏｓトランジスタで構成してもよい。図２３（Ｃ）に示すメモリセル２６３では、３個のトランジスタはバックゲートを有するｏｓトランジスタで構成されている。
【０２３２】ノードＳＮ３は保持ノードである。容量素子Ｃ３はノードＳＮ３の電圧を保持するための保持容量である。容量素子Ｃ３を意図的に設けず、トランジスタＭ４のゲート容量などで保持容量を構成してもよい。配線ＰＤＬはソース線ＳＬに代わる配線であり、配線ＰＬＤには固定電圧（例えば、電圧ＶＤＤＤ）が入力される。
【０２３３】制御回路２５１は、ＮＯＳＲＡＭ２４０の動作全般を制御する機能を有する。例えば、制御回路２５１は、信号ＣＥ、ＷＥを論理演算して、外部からのアクセスが書き込みアクセスであるか読み出しアクセスであるかを判断する。
【０２３４】行回路２５２は、アドレス信号Ａｄｄｒｅｓｓが指定する選択された行の書込みワード線ＷＷＬ、読出しワード線ＲＷＬを選択する機能をもつ。列回路２５３は、アドレス信号が指定する列の書込みビット線ＷＢＬにデータを書き込む機能、および当該列の読出しビット線ＲＢＬからデータを読み出す機能をもつ。
【０２３５】＜動作例＞
図２４を参照して、ＮＯＳＲＡＭ２４０の動作例を説明する。図２４は、ＮＯＳＲＡＭ２４０の動作例を示すタイミングチャートである。書込み動作状態（Ｗｒｉｔｅ）、読出し動作状態（Ｒｅａｄ）、およびスタンバイ状態（Ｓｔａｎｄ−ｂｙ）において、パワースイッチ２４５〜２４７はオンであり、パワードメイン２４３には電圧ＶＤＤＤ、ＶＤＨＷ、ＶＤＨＲが入力される。
【０２３６】＜書き込み＞
“Ｈ”の信号ＣＥと、“Ｈ”の信号ＷＥとが入力されると、ＮＯＳＲＡＭ２４０は書き込み動作を行う。行回路２５２によって選択された行のワード線ＷＷＬは“Ｈ”であり、ワード線ＲＷＬは“Ｌ”である。列回路２５３によって選択されたビット線ＷＢＬには、データに応じた電圧が入力される。選択されたメモリセル２６０のノードＳＮ１の電圧は、データ“１”が書き込まれた場合ＶＤＤＤとなり、データ“０”が書き込まれた場合ＶＳＳＳとなる。
【０２３７】＜読み出し＞
“Ｈ”の信号ＣＥと、“Ｌ”の信号ＷＥとが入力されると、ＮＯＳＲＡＭ２４０は読み出し動作を行う。列回路２５３は、ビット線ＲＢＬを電圧ＶＳＳＳにプリチャージし、次に、ソース線ＳＬを“Ｈ”にする。次いで、行回路２５２によって選択された行のワード線ＲＷＬは“Ｌ”となる。選択行のメモリセル２６０がデータ“０”を保持している場合、トランジスタＭ２のゲートには電圧ＶＳＳＳが入力されているため、トランジスタＭ２のソース―ドレイン間には大きな電流が流れる。したがって、ビット線ＲＢＬは速やかに充電され、ビット線ＲＢＬの電位は上昇する。選択行のメモリセル２６０がデータ“１”を保持している場合、トランジスタＭ２のゲートには電位ＶＤＤＤが入力されているため、トランジスタＭ２はドレイン電流を殆んど流さない。そのため、ビット線ＲＢＬはプリチャージ電圧（ＶＳＳＳ）を維持する。
【０２３８】＜スタンバイ＞
書込みワード線ＷＷＬ、ソース線ＳＬは“Ｌ”であり、読出しワード線ＲＷＬは“Ｈ”である。メモリセル２６０のトランジスタＭ１はオフ状態である。
【０２３９】例えば、ＮＯＳＲＡＭ２４０がスタンバイ状態である時間が一定時間を超えると、ＰＭＵ１９３はパワースイッチ２４５〜２４７をオフ状態にし、かつクロック信号ＧＣＬＫ２の入力を停止する。これにより、パワードメイン２４３はパワーゲーティングされ、ＮＯＳＲＡＭ２４０の待機電力を低減できる。
【０２４０】＜ＯＳＳＲＡＭ＞
次に、図２５、図２６を参照して、ＯＳＳＲＡＭについて説明する。
【０２４１】図２５に示すように、ＯＳＳＲＡＭ３００には、パワードメイン３０１〜３０３、パワースイッチ３１０〜３１４が設けられている。パワードメイン３０１はパワーゲーティングされないパワードメインであり、パワーゲーティング制御回路３３０が設けられる。パワードメイン３０２、３０３はパワーゲーティング可能なパワードメインである。パワードメイン３０２には、メモリセルアレイ３２０が設けられ、パワードメイン３０３には、制御回路３３１、行回路３３２、列回路３３３、バックアップ及びリカバリドライバ３３５が設けられている。
【０２４２】メモリセルアレイ３２０は、セル２７０、ワード線ＷＬ、ビット線ＢＬ、ＢＬＢ、ゲート線ＯＧＬを有する。なお、ビット線ＢＬ、ＢＬＢはローカルビット線と呼ぶこともできる。同じ列に設けられているビット線ＢＬとビット線ＢＬＢとでなる配線対をビット線対（ＢＬ、ＢＬＢ）と呼ぶ場合がある。
【０２４３】ＯＳＳＲＡＭ３００には、電圧ＶＤＤＤ、ＶＳＳＳ、ＶＤＤＭ、ＶＤＭＬ、ＶＳＳＭ、ＶＤＨＢ、ＶＢＧ３、クロック信号ＧＣＬＫ３、アドドレス信号Ａｄｄｒｅｓｓ、信号ＲＳＴ、ＣＥ、ＧＷ、ＢＷが入力される。
【０２４４】信号ＲＳＴ、ＣＥ、ＧＷ、ＢＷは、それぞれ、リセット信号、チップイネーブル信号、グローバル書き込みイネーブル信号、バイト書き込みイネーブル信号である。これら信号に基づき、制御回路３３１はＯＳＳＲＡＭ３００を制御する。制御回路３３１に、入力信号を一時的に格納するレジスタを設けてもよい。
【０２４５】行回路３３２は、アドレス信号Ａｄｄｒｅｓｓが指定する選択された行のワード線ＷＬを選択する機能をもつ。列回路３３３は、アドレス信号が指定する列のビット線対（ＢＬ、ＢＬＢ）にデータを書き込む機能、および当該ビット線対（ＢＬ、ＢＬＢ）からデータを読み出す機能をもつ。
【０２４６】ＯＳＳＲＡＭ３００において、各回路、各信号および各電圧は、必要に応じて、適宜取捨することができる。あるいは、他の回路または他の信号を追加してもよい。また、ＯＳＳＲＡＭ３００の入力信号および出力信号の構造は、ＯＳＳＲＡＭ３００の動作モード、およびメモリセルアレイ３２０の構成等に基づいて設定される。
【０２４７】パワーゲーティング制御回路３３０は、ＰＭＵ１９３が生成するＰＧ制御信号に基づき、信号ＰＳＥ１１〜ＰＳＥ１３、ならびに行回路３３２、列回路３３３、バックアップ及びリカバリドライバ３３５の制御信号を生成する。信号ＰＳＥ１１〜ＰＳＥ１３は、パワースイッチ３１０〜３１４のオンオフを制御する。パワースイッチ３１０、３１１は、それぞれ、電圧ＶＤＤＤ、ＶＤＨＢのパワードメイン３０３への入力を制御する。パワースイッチ３１２〜３１４はそれぞれ電圧ＶＤＤＭ、ＶＤＭＬ、ＶＳＳＭのパワードメイン３０２への入力を制御する。
【０２４８】（セル２７０）
図２６（Ａ）にセル２７０の回路構成例を示す。セル２７０は、メモリセル２７１、バックアップ回路２７２を有する。メモリセル２７１は、標準的な６Ｔ（トランジスタ）ＳＲＡＭセルと同じ回路構成であり、双安定回路２７５、トランジスタＭＴ１、ＭＴ２を有する。双安定回路２７５は、ワード線ＷＬ、ビット線ＢＬ、ＢＬＢ、仮想電源線Ｖ＿ＶＤＭ（以下、Ｖ＿ＶＤＭ線と呼ぶ）、Ｖ＿ＶＳＭ（以下、Ｖ＿ＶＳＭ線と呼ぶ）に電気的に接続されている。なお、Ｖ＿ＶＤＭ線は、パワースイッチ３１２、３１３によって、電圧の入力が制御される仮想電源線であり、Ｖ＿ＶＳＭ線は、パワースイッチ３１４によって、電圧の入力が制御される仮想電源線である。電圧ＶＤＨＢは、ゲート線ＯＧＬの高レベル電圧であり、電圧ＶＤＤＭよりも高い電圧である。
【０２４９】図２６（Ａ）の例では、双安定回路２７５は、２個のＣＭＯＳインバータ回路でなるラッチ回路である。ノードＱ、Ｑｂはそれぞれ、２個のＣＭＯＳインバータの入力端子と出力端子との接続部であり、相補データの保持ノードである。ノードＱ／Ｑｂが“Ｈ”／“Ｌ”になる、またはノードＱ／Ｑｂが“Ｌ”／“Ｈ”になることで、双安定回路２７５は安定状態となる。トランジスタＭＴ１、ＭＴ２は転送トランジスタである。トランジスタＭＴ１によって、ビット線ＢＬとノードＱ間の導通状態が制御され、トランジスタＭＴ２によってビット線ＢＬＢとノードＱｂ間の導通状態が制御される。
【０２５０】バックアップ回路２７２は、メモリセル２７１のデータをバックアップするための回路である。各セル２７０にバックアップ回路２７２を設けることで、パワードメイン３０２のパワーゲーティングが可能になる。
【０２５１】バックアップ回路２７２は、トランジスタＭ２１、Ｍ２２、容量素子Ｃ２１、Ｃ２２を有する。つまり、バックアップ回路２７２は２個の１Ｔ１Ｃ型メモリセルを有しており、これらメモリセルの保持ノードが、ノードＳＮ２１、ＳＮ２２である。
【０２５２】トランジスタＭ２１、Ｍ２２はバックゲートを有するｏｓトランジスタであり、これらバックゲートには電圧ＶＢＧ３が入力される。トランジスタＭ２１、Ｍ２２がｏｓトランジスタであるので、バックアップ回路２７２はデータを長時間保持することが可能である。トランジスタＭ２１、Ｍ２２がｏｓトランジスタであることで、Ｓｉトランジスタでなるメモリセル２７１にバックアップ回路２７２を積層して設けることができるので、バックアップ回路２７２を設けたことによるセル２７０の面積オーバーヘッドを抑えることができる。
【０２５３】＜低消費電力状態＞
ＯＳＳＲＡＭ３００には４種類の低消費電力状態、（１）ビット線フローティング状態、（２）休止状態、（３）セルアレイドメインＰＧ状態、（４）全ドメインＰＧ状態がある。パワーゲーティング制御回路３３０は、ＰＭＵ１９３のＰＧ信号等にもとづき、低消費電力状態でのＯＳＳＲＡＭ３００の動作を管理する。
【０２５４】（ビット線フローティング状態）
ビット線フローティング状態では、ビット線対（ＢＬ、ＢＬＢ）をフローティング状態にする。メモリセル２７１のデータは消失しない。
【０２５５】（スリープ状態）
スリープ状態では、パワードメイン３０２に電圧ＶＤＤＭよりも低い電圧ＶＤＭＬを供給する。電圧ＶＤＭＬは、メモリセル２７１のデータが消失しない大きさである。ビット線対（ＢＬ、ＢＬＢ）はフローティング状態である。
【０２５６】（セルアレイドメインＰＧ状態）
パワースイッチ３１２〜３１４をオフにして、パワードメイン３０２への電圧ＶＤＤＭ、ＶＤＭＬ、ＶＳＳＭの供給を停止する。ビット線対（ＢＬ、ＢＬＢ）はフローティング状態である。メモリセル２７１のデータは消失する。
【０２５７】（全ドメインＰＧ状態）
全ドメインＰＧ状態とは、パワーゲーティング可能な全てのドメインをパワーゲーティングする状態ある。パワースイッチ３１０〜３１４はオフである。
【０２５８】４種類の低消費電力状態は消費電力削減効果が得られる損益分岐時間（ＢＥＴ）が異なる。ＢＥＴの異なる複数の低消費電力状態を有することで、ＯＳＳＲＡＭ３００の消費電力を効率良く低減することができる。
【０２５９】＜パワーゲーティングシーケンス＞
図２６（Ｂ）に、パワードメイン３０２に対するパワーゲーティングシーケンスの一例を示す。図２６（Ｂ）において、ｔ１、ｔ２等は時刻を表している。
【０２６０】（通常動作（Ｎｏｒｍａｌ  Ｏｐｅｒａｔｉｏｎ））
時刻ｔ１以前では、ＯＳＳＲＡＭ３００の状態は、通常動作状態（書き込み状態または読み出し状態）である。ＯＳＳＲＡＭ３００はシングルポートＳＲＡＭと同様の通常動作を行う。パワースイッチ３１０〜３１２、３１４はオンであり、パワースイッチ３１３はオフである。
【０２６１】（バックアップ（Ｂａｃｋｕｐ））
パワーゲーティング制御回路３３０の制御信号に基づき、時刻ｔ１でバックアップ動作が開始する。バックアップ及びリカバリドライバ３３５は、全配線ＯＧＬを“Ｈ”にする。ここでは、時刻ｔ１でノードＱ／Ｑｂは“Ｈ”／“Ｌ”であり、ノードＳＮ２１／ＳＮ２２は“Ｌ”／“Ｈ”であるので、トランジスタＭ２１、Ｍ２２がオンになると、ノードＳＮ２１の電圧はＶＳＳＭからＶＤＤＭに上昇し、ノードＳＮ２２の電圧はＶＤＤＭからＶＳＳＭに低下する。時刻ｔ２で配線ＯＧＬを“Ｌ”にすることで、バックアップ動作が終了する。ノードＳＮ２１／ＳＮ２２には、時刻ｔ１でのノードＱ／Ｑｂのデータが書き込まれる。
【０２６２】（パワーゲーティング（Ｐｏｗｅｒ−ｇａｔｉｎｇ））
時刻ｔ２で、パワーゲーティング制御回路３３０が信号ＰＳＥ１２を“Ｌ”にしてパワースイッチ３１２、３１４をオフすることで、パワードメイン３０２のパワーゲーティングが開始する。Ｖ＿ＶＤＭ線とＶ＿ＶＳＭ線の電圧差が低下することで、メモリセル２７１は非アクティブになる。メモリセル２７１のデータは消失するが、バックアップ回路２７２はデータを保持し続ける。
【０２６３】例えば、パワードメイン３０２が電源オフである間、ビット線対（ＢＬ、ＢＬＢ）をフローティング状態にする。そのための制御信号を、パワーゲーティング制御回路３３０は列回路３３３に送信する。
【０２６４】（リカバリ（Ｒｅｃｏｖｅｒｙ））
行回路３３２、列回路３３３、バックアップ及びリカバリドライバ３３５は、パワーゲーティング制御回路３３０の制御信号に従い、リカバリ動作を行う。リカバリ動作では、双安定回路２７５は、ノードＱ／Ｑｂのデータを検知するためのセンスアンプとして機能する。まず、ノードＱ、Ｑｂのリセット動作が行われる。時刻ｔ３で、列回路３３３は、全ビット線対（ＢＬ、ＢＬＢ）のプリチャージ動作を行う。全ビット線対（ＢＬ、ＢＬＢ）は電圧Ｖｐｒ２にプリチャージされる。行回路３３２は、全ワード線ＷＬを選択状態にする。Ｖ＿ＶＤＭ線、Ｖ＿ＶＳＭ線は電圧Ｖｐｒ２にプリチャージされ、ノードＱ、Ｑｂの電圧はＶｐｒ２に固定される。
【０２６５】時刻ｔ４で、バックアップ及びリカバリドライバ３３５は、全配線ＯＧＬを“Ｈ”にする。トランジスタＭ２１、Ｍ２２がオンになる。容量素子Ｃ２１の電荷がノードＱ、ノードＳＮ２１に分配され、容量素子Ｃ２２の電荷がノードＱｂ、ノードＳＮ２２に分配され、ノードＱとノードＱｂとに電圧差が生じる。
【０２６６】時刻ｔ５で、パワースイッチ３１２、３１４をオンにして、パワードメイン３０２への電圧ＶＤＤＭ、ＶＳＳＭの入力を再開する。双安定回路２７５はアクティブになると、ノードＱとノードＱｂの電圧差を増幅する。最終的にノードＱ、ＳＮ２１の電圧はＶＤＤＭとなり、ノードＱｂ、ＳＮ２２の電圧はＶＳＳＭとなる。つまり、ノードＱ／Ｑｂの状態は、時刻ｔ１での状態（“Ｈ”／“Ｌ”）に復帰する。時刻ｔ７でリカバリ動作が終了する。
【０２６７】Ｌ１キャッシュメモリ装置２０２と、Ｌ２キャッシュメモリ装置２０３の構成は異なっていてもよい。例えば、Ｌ１キャッシュメモリ装置２０２にはＯＳＳＲＡＭを用い、Ｌ２キャッシュメモリ装置２０３にはＮＯＳＲＡＭを用いる。または、Ｌ１キャッシュメモリ装置２０２には、メモリセル２６０で構成されるＮＯＳＲＡＭを用い、Ｌ２キャッシュメモリ装置２０３には、メモリセル２６３で構成されるＮＯＳＲＡＭを用いる。この場合、Ｌ２キャッシュメモリ装置２０３において、メモリセルアレイは、周辺回路上に積層することが可能となるので、Ｌ２キャッシュメモリ装置２０３の面積を小さくでき、大容量化に有利である。メモリセル２６０は読出しトランジスタがＳｉトランジスタであるので読み出し速度が速いため、Ｌ１キャッシュメモリ装置２０２に好適である。
【０２６８】＜ｏｓＡＩチップ３９０＞
ｏｓＡＩチップ３９０は、ｏｓトランジスタが用いられたＡＩの演算処理が可能なＩＣチップである。ｏｓＡＩチップ３９０が使用するデータには、重み係数データ（学習可能なデータ）、画像データ、教師データなどがある。ｏｓＡＩチップ３９０の演算結果は、例えば、推論データとして出力される。
【０２６９】ｏｓＡＩチップ３９０の特長は、演算に用いられるデータ（代表的には、重み係数データ）を記憶するメモリ回路が演算回路と近接して設けられていることである。このメモリ回路に、ｏｓトランジスタが用いられている。本明細書では、ｏｓトランジスタを有するメモリを、「ｏｓメモリ」と呼ぶ場合がある。図２７（Ａ）〜図２７（Ｄ）にｏｓメモリの回路構成例を示す。
【０２７０】図２７（Ａ）に示すｏｓメモリ３８１は、２Ｔゲインセルと同じ回路構成であり、書込みトランジスタＭＷ１、読出しトランジスタＭＲ１、容量素子ＣＳ１を有する。読出しトランジスタＭＲ１のゲートが保持ノードＳＮである。書込みトランジスタＭＷ１、読出しトランジスタＭＲ１はそれぞれｏｓトランジスタである。
【０２７１】ｏｓメモリ３８１のノードＳＮには、書込みトランジスタＭＷ１を介して電荷が充電される。ｏｓトランジスタが極小オフ電流であることから、書込みトランジスタＭＷ１は、ノードＳＮの電荷を殆んどリークさせない。従って、ｏｓメモリ３８１は不揮発性メモリ回路として機能でき、かつ多値化が容易である。よって、ｏｓメモリ３８１を不揮発性アナログメモリ回路として、ｏｓＡＩチップ３９０に設けることができる。
【０２７２】書込みトランジスタＭＷ１のバックゲート電圧を変化させることで、書込みトランジスタＭＷ１のしきい値電圧を変化させることができる。書込みトランジスタＭＷ１はバックゲートの無いｏｓトランジスタでもよい。読出しトランジスタＭＲ１についても同様である。
【０２７３】金属酸化物は、エネルギーギャップが大きく、電子が励起されにくいこと、ホールの有効質量が大きいことなどから、ｏｓトランジスタは、一般的なＳｉトランジスタと比較して、アバランシェ崩壊等が生じにくい場合がある。従って、例えばアバランシェ崩壊に起因するホットキャリア劣化等を抑制できる。ホットキャリア劣化を抑制できることで、高いドレイン電圧でｏｓトランジスタを駆動することができる。従って、書込みトランジスタＭＷ１がｏｓトランジスタであることで、ノードＳＮに高い電圧を印加することが可能になるため、ｏｓメモリ３８１の多値化が容易である。
【０２７４】図２７（Ｂ）に示すｏｓメモリ３８２はｏｓメモリ３８１の変形例であり、読出しトランジスタＭＲ２がｎチャネル型Ｓｉトランジスタである。読出しトランジスタＭＲ２はｐチャネル型Ｓｉトランジスタでもよい。
【０２７５】図２７（Ｃ）に示すｏｓメモリ３８３は、３トランジスタ型ゲインセルであり、書込みトランジスタＭＷ３、読出しトランジスタＭＲ３、選択トランジスタＭＳ３、容量素子ＣＳ３を有する。書込みトランジスタＭＷ３、読出しトランジスタＭＲ３、選択トランジスタＭＳ３はそれぞれバックゲートを有するｏｓトランジスタである。これらトランジスタの一部、または全てがバックゲートの無いｏｓトランジスタでもよい。
【０２７６】図２７（Ｄ）に示すｏｓメモリ３８４は、ｏｓメモリ３８３の変形例である。読出しトランジスタＭＲ４、選択トランジスタＭＳ４はそれぞれｎチャネル型Ｓｉトランジスタである。読出しトランジスタＭＲ４、選択トランジスタＭＳ４の一方または双方はｐチャネル型Ｓｉトランジスタでもよい。
【０２７７】容量素子ＣＳ１の充放電によってデータを書き換えるため、ｏｓメモリ３８１は原理的には書き換え回数に制約はなく、低エネルギーで、データの書き込みおよび読み出しが可能であり、データの保持に電力を消費しない。よって、ｏｓメモリ３８１をｏｓＡＩチップ３９０に組み込むことで、低消費電力なＡＩチップを提供することが可能になる。ｏｓメモリ３８２〜３８４もｏｓメモリ３８１と同様の特長を有する。
【０２７８】図２８（Ａ）に、ｏｓＡＩチップ３９０の回路部３９１Ａの積層構造を模式的に示す。回路部３９１Ａは積層構造をもち、Ｓｉトランジスタ層１０１１、配線層１０１２、ｏｓトランジスタ層１０１３に大別される。ｏｓトランジスタ層１０１３をＳｉトランジスタ層１０１１に積層して設けることができるため、ｏｓＡＩチップ３９０の面積を小さくすることができる。
【０２７９】回路部３９１Ｂ（図２８（Ｂ）参照）、回路部３９１Ｃ（図２８（Ｃ）参照）のように、複数のｏｓトランジスタ層１０１３を設けてもよい。回路部３９１Ｃは、回路部３９１Ａ、３９１Ｂと異なり、Ｓｉトランジスタ層１０１１が設けられていない。回路部３９１Ｃのｏｓトランジスタ層１０１３の数は、１層の場合がある。
【０２８０】ｏｓＡＩチップ３９０のより具体的な回路構成は、実施の形態３および実施の形態４で説明した。前述したように、ｏｓＡＩチップ３９０の演算部を少ない素子数、配線数で演算部を構成することができるため、集積化に有利である。演算回路の集積化により、並列処理数を増やすことができるので、ｏｓＡＩチップ３９０は、市販のＧＰＵチップと同様、もしくはそれ以上の演算性能を実現できる可能性をもつ。
【０２８１】例えば、市販のＧＰＵチップの動作周波数が３ＧＨｚ、乗算の並列処理数が１０３である場合、ＧＰＵチップの演算性能は３×１０１２ＯＰＳ＝３Ｔｅｒａ  ＯＰＳ（ＴＯＰＳ）である。例えば、ｏｓＡＩチップ３９０は、１０６乃至１０８個程度の演算回路を設けることができ、乗算の並列処理数を１０６乃至１０８とすることができる。この場合、ｏｓＡＩの動作周波数を３ＭＨｚ又は３０ＭＨｚに低下しても、ｏｓＡＩチップ３９０の演算性能はＧＰＵと同程度である。動作周波数の低減は、ＩＣチップの動的消費電力の削減に非常に有効である。
【０２８２】また、ＡＩの演算など大規模な演算処理を行うため、ＧＰＵチップは高い周波数で駆動する。そのため、大電力を消費し、高温となる。ｏｓＡＩチップ３９０は、動作周波数を低減できるため、ｏｓＡＩチップ３９０の発熱を抑えることができる。したがって、演算装置において、ｏｓＡＩチップ３９０の放熱機構をＧＰＵチップの放熱機構よりも簡素にすることができる。
【０２８３】上掲したように、ＧＰＵチップでは、演算性能の向上と、省電力化および発熱抑制との関係はトレードオフの関係である。これに対して、ｏｓＡＩチップ３９０は、動作周波数を低減しても演算性能の劣化を少なくできる。したがって、ｏｓＡＩチップ３９０は、時間および電力に対して高効率に、大規模な演算処理を実行することができる。
【０２８４】（実施の形態６）
本実施の形態では、上記実施の形態に記載の演算装置を適用することが可能な電子機器、移動体、演算システムについて、図２９乃至図３２を参照しながら説明する。
【０２８５】図２９（Ａ）は、移動体の一例として自動車の外観図を図示している。図２９（Ｂ）は、自動車内でのデータのやり取りを簡略化した図である。自動車５９０は、複数のカメラ５９１等を有する。また、自動車５９０は、赤外線レーダー、ミリ波レーダー、レーザーレーダーなど各種センサ（図示せず）などを備える。
【０２８６】自動車５９０において、カメラ５９１等に上記ｏｓＡＩチップ３９０を用いることができる。自動車５９０は、カメラ５９１が複数の撮像方向５９２で得られた複数の画像を上記実施の形態で説明したｏｓＡＩチップ３９０で処理し、バス５９３等を介してホストコントローラ５９４等により複数の画像をまとめて解析することで、ガードレールや歩行者の有無など、周囲の交通状況を判断し、自動運転を行うことができる。また、道路案内、危険予測などを行うシステムに用いることができる。
【０２８７】ｏｓＡＩチップ３９０では、得られた画像データをニューラルネットワークなどの演算処理を行うことで、例えば、画像の高解像度化、画像ノイズの低減、顔認識（防犯目的など）、物体認識（自動運転の目的など）、画像圧縮、画像補正（広ダイナミックレンジ化）、レンズレスイメージセンサの画像復元、位置決め、文字認識、反射映り込み低減などの処理を行うことができる。
【０２８８】なお、上述では、移動体の一例として自動車について説明しているが、移動体は自動車に限定されない。例えば、移動体としては、電車、モノレール、船、飛行体（ヘリコプター、無人航空機（ドローン）、飛行機、ロケット）なども挙げることができ、これらの移動体に本発明の一態様のコンピュータを適用して、人工知能を利用したシステムを付与することができる。
【０２８９】図３０（Ａ）は、携帯型電子機器の一例を示す外観図である。図３０（Ｂ）は、携帯型電子機器内でのデータのやり取りを簡略化した図である。携帯型電子機器５９５は、プリント配線基板５９６、スピーカー５９７、カメラ５９８、マイクロフォン５９９等を有する。
【０２９０】携帯型電子機器５９５において、プリント配線基板５９６に上記ｏｓＡＩチップ３９０を設けることができる。携帯型電子機器５９５は、スピーカー５９７、カメラ５９８、マイクロフォン５９９等で得られる複数のデータを上記実施の形態で説明したｏｓＡＩチップ３９０を用いて処理・解析することで、ユーザの利便性を向上させることができる。また、音声案内、画像検索などを行うシステムに用いることができる。
【０２９１】ｏｓＡＩチップ３９０では、得られた画像データをニューラルネットワークなどの演算処理を行うことで、例えば、画像の高解像度化、画像ノイズの低減、顔認識（防犯目的など）、物体認識（自動運転の目的など）、画像圧縮、画像補正（広ダイナミックレンジ化）、レンズレスイメージセンサの画像復元、位置決め、文字認識、反射映り込み低減などの処理を行うことができる。
【０２９２】図３１（Ａ）に示す携帯型ゲーム機１１００は、筐体１１０１、筐体１１０２、筐体１１０３、表示部１１０４、接続部１１０５、操作キー１１０７等を有する。筐体１１０１、筐体１１０２および筐体１１０３は、取り外すことが可能である。筐体１１０１に設けられている接続部１１０５を筐体１１０８に取り付けることで、表示部１１０４に出力される映像を、別の映像機器に出力することができる。他方、筐体１１０２および筐体１１０３を筐体１１０９に取り付けることで、筐体１１０２および筐体１１０３を一体化し、操作部として機能させる。筐体１１０２および筐体１１０３の基板に設けられているチップなどに先の実施の形態に示すｏｓＡＩチップ３９０を組み込むことができる。
【０２９３】図３１（Ｂ）はＵＳＢ接続タイプのスティック型の電子機器１１２０である。電子機器１１２０は、筐体１１２１、キャップ１１２２、ＵＳＢコネクタ１１２３および基板１１２４を有する。基板１１２４は、筐体１１２１に収納されている。例えば、基板１１２４には、メモリチップ１１２５、コントローラチップ１１２６が取り付けられている。基板１１２４のコントローラチップ１１２６などに先の実施の形態に示すｏｓＡＩチップ３９０を組み込むことができる。
【０２９４】図３１（Ｃ）は人型のロボット１１３０である。ロボット１１３０は、センサ２１０１乃至２１０６、および制御回路２１１０を有する。例えば、制御回路２１１０には、先の実施の形態に示すｏｓＡＩチップ３９０を組み込むことができる。
【０２９５】上記実施の形態で説明したｏｓＡＩチップ３９０は、電子機器に内蔵する代わりに、電子機器と通信を行うサーバーに用いることもできる。この場合、電子機器とサーバーによって演算システムが構成される。図３２に、システム３０００の構成例を示す。
【０２９６】システム３０００は、電子機器３００１と、サーバー３００２によって構成される。電子機器３００１とサーバー３００２間の通信は、インターネット回線３００３を介して行うことができる。
【０２９７】サーバー３００２には、複数のラック３００４を有する。複数のラックには、複数の基板３００５が設けられ、当該基板３００５上に上記実施の形態で説明したｏｓＡＩチップ３９０を搭載することができる。これにより、サーバー３００２にニューラルネットワークが構成される。そして、サーバー３００２は、電子機器３００１からインターネット回線３００３を介して入力されたデータを用いて、ニューラルネットワークの演算を行うことができる。サーバー３００２による演算の結果は必要に応じて、インターネット回線３００３を介して電子機器３００１に送信することができる。これにより、電子機器３００１における演算の負担を低減することができる。
【０２９８】本実施の形態は、他の実施の形態の記載と適宜組み合わせることができる。
【符号の説明】
【０２９９】ＳＣ１：状態、ＳＣ２：状態、ＳＧ１：状態、ＳＧ２：状態、ＳＰＧ１：状態、ＳＰＧ２：状態、ＳＰＧ３：状態、ＳＰＧ４：状態、１０：ホスト、１０Ａ：ＣＰＵ、１０Ｂ：ＣＰＵ、１１Ａ：ＣＰＵコア、１１Ｂ：ＣＰＵコア、１２：メモリ、１３：データ保持回路、２０：バス、３０：ＧＰＵ、３０＿１：ＧＰＵ、３０＿ｎ：ＧＰＵ、３０Ａ：ＧＰＵ、３０Ｂ：ＧＰＵ、３１：デバイスメモリ、３２Ａ：共有メモリ、３２Ｂ：共有メモリ、３３Ａ：ＧＰＵコア、３３Ｂ：ＧＰＵコア、３４Ａ：演算ユニット、３４Ｂ：演算ユニット、３５Ａ：データ保持部、３５Ｂ：データ保持部、４０：乗算回路、４２：電流源、４３：オフセット回路、４４：活性化関数回路、５１：入力レジスタ、５２：メモリ回路、５３：乗算回路、５４：加算回路、５５Ａ：出力レジスタ、５５Ｂ：出力レジスタ、５６Ａ：セレクタ、５６Ｂ：セレクタ、５６Ｃ：セレクタ、５６Ｄ：セレクタ、５７Ａ：メモリ回路、５７Ｂ：メモリ回路、５７Ｃ：メモリ回路、６１：演算回路、６２：スイッチ回路、６５：スイッチ回路、６６Ｓ：配線、６７Ａ：配線、７１：フリップフロップ、７２：デコーダ、７３＿０：メモリセル、７３＿１：メモリセル、７３＿２：メモリセル、７３＿３：メモリセル、７４：メモリセル、７７：トランジスタ、７８：ラッチ回路、８０：フリップフロップ、８１：デコーダ、８３＿０：メモリセル、８３＿１：メモリセル、８７：配線、９１＿０：メモリセル、９１＿１：メモリセル、９２＿０：トランジスタ、９２＿１：トランジスタ、９３：トランジスタ、１００Ａ：演算装置、１００Ｂ：演算装置、１００Ｃ：演算装置、１００Ｄ：演算装置、１００Ｅ：演算装置、１１０：ＣＰＵ、１１１：ＣＰＵコア、１１２：命令キャッシュ、１１３：データキャッシュ、１１４：バスインターフェース回路、１２０：ＧＰＵ、１２１：ＧＰＵコア、１２２：オンサイトメモリ、１２３：ＡＤＣ／ＤＡＣ、１２４：制御回路、１３１：オンチップメモリ、１４０Ａ：高速バス、１４０Ｂ：低速バス、１４１：ＤＭＡＣ、１４２：パワーマネジメントユニット、１４３：メモリコントローラ、１４４：ＤＤＲ  ＳＤＲＡＭコントローラ、１４５：ＵＳＢインターフェース回路、１４６：ディスプレイインターフェース回路、１４７：セキュリティー回路、１５０：ブリッジ回路、１５１：割り込み制御回路、１５２：インターフェース回路、１５３：バッテリー制御回路、１５４：ＡＤＣ／ＤＡＣインターフェース回路、１６０：電源回路、１９０：ＣＰＵ、１９３：ＰＭＵ、２００：ＣＰＵコア、２０２：Ｌ１キャッシュメモリ装置、２０３：Ｌ２キャッシュメモリ装置、２０５：バスインターフェース部、２１０：パワースイッチ、２１１：パワースイッチ、２１２：パワースイッチ、２１４：レベルシフタ、２２０：フリップフロップ、２２１：スキャンフリップフロップ、２２１Ａ：クロックバッファ回路、２２２：バックアップ回路、２４０：ＮＯＳＲＡＭ、２４２：パワードメイン、２４３：パワードメイン、２４５：パワースイッチ、２４６：パワースイッチ、２４７：パワースイッチ、２５０：メモリセルアレイ、２５１：制御回路、２５２：行回路、２５３：列回路、２６０：メモリセル、２６２：���モリセル、２６３：メモリセル、２７０：セル、２７１：メモリセル、２７２：バックアップ回路、２７５：双安定回路、３００：ＯＳＳＲＡＭ、３０１：パワードメイン、３０２：パワードメイン、３０３：パワードメイン、３１０：パワースイッチ、３１１：パワースイッチ、３１２：パワースイッチ、３１３：パワースイッチ、３１４：パワースイッチ、３２０：メモリセルアレイ、３３０：パワーゲーティング制御回路、３３１：制御回路、３３２：行回路、３３３：列回路、３３５：バックアップ及びリカバリドライバ、３８１：ｏｓメモリ、３８２：ｏｓメモリ、３８３：ｏｓメモリ、３８４：ｏｓメモリ、３９０：ｏｓＡＩチップ、３９１Ａ：回路部、３９１Ｂ：回路部、３９１Ｃ：回路部、４００：ｏｓＡＩチップ、４０１：レシーバ、４０３：ＤＡＣ、４０４：ＤＡＣ、４０５：ＭＡＣアレイ、４０６：ＭＡＣアレイ、４０７：ゲートドライバ、４０８：ＡＤＣ、４０９：トランスミッタ、４５０：ｏｓＡＩチップ、４６０：コントローラ、４６２：Ｉ２Ｃモジュール、４６３：レシーバ、４６４：トランスミッタ、４６６：データドライバ、４６７：ワードドライバ、４７０：演算回路アレイ、４７１：演算部、４７２：ＳＲＡＭ、４７４：セレクタ、４７５：セレクタ、４７６：デマルチプレクサ、５９０：自動車、５９１：カメラ、５９２：撮像方向、５９３：バス、５９４：ホストコントローラ、５９５：携帯型電子機器、５９６：プリント配線基板、５９７：スピーカー、５９８：カメラ、５９９：マイクロフォン、１１００：携帯型ゲーム機、１１０１：筐体、１１０２：筐体、１１０３：筐体、１１０４：表示部、１１５：接続部、１１０７：操作キー、１１０８：筐体、１１０９：筐体、１１２０：電子機器、１１２１：筐体、１１２２：キャップ、１１２３：ＵＳＢコネクタ、１１２４：基板、１１２５：メモリチップ、１１２６：コントローラチップ、１１３０：ロボット、２１０１：センサ、２１０６：センサ、２１１０：制御回路、３０００：システム、３００１：電子機器、３００２：サーバー、３００３：インターネット回線、３００４：ラック、
【図１】
2019048982.tif 000003
【図２】
2019048982.tif 000004
【図３】
2019048982.tif 000005
【図４】
2019048982.tif 000006
【図５】
2019048982.tif 000007
【図６】
2019048982.tif 000008
【図７】
2019048982.tif 000009
【図８】
2019048982.tif 000010
【図９】
2019048982.tif 000011
【図１０】
2019048982.tif 000012
【図１１】
2019048982.tif 000013
【図１２】
2019048982.tif 000014
【図１３】
2019048982.tif 000015
【図１４】
2019048982.tif 000016
【図１５】
2019048982.tif 000017
【図１６】
2019048982.tif 000018
【図１７】
2019048982.tif 000019
【図１８】
2019048982.tif 000020
【図１９】
2019048982.tif 000021
【図２０】
2019048982.tif 000022
【図２１】
2019048982.tif 000023
【図２２】
2019048982.tif 000024
【図２３】
2019048982.tif 000025
【図２４】
2019048982.tif 000026
【図２５】
2019048982.tif 000027
【図２６】
2019048982.tif 000028
【図２７】
2019048982.tif 000029
【図２８】
2019048982.tif 000030
【図２９】
2019048982.tif 000031
【図３０】
2019048982.tif 000032
【図３１】
2019048982.tif 000033
【図３２】
2019048982.tif 000034
【国際調査報告】
2019048982.tif 000035
2019048982.tif 000036
2019048982.tif 000037
2019048982.tif 000038
2019048982.tif 000039
2019048982.tif 000040