(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-10
(45)【発行日】2024-06-18
(54)【発明の名称】演算装置
(51)【国際特許分類】
G06F 1/3287 20190101AFI20240611BHJP
G06F 1/3206 20190101ALI20240611BHJP
G06G 7/60 20060101ALI20240611BHJP
G06G 7/184 20060101ALI20240611BHJP
H01L 29/786 20060101ALI20240611BHJP
【FI】
G06F1/3287
G06F1/3206
G06G7/60
G06G7/184
H01L29/78 613B
H01L29/78 618C
(21)【出願番号】P 2023030844
(22)【出願日】2023-03-01
(62)【分割の表示】P 2019540728の分割
【原出願日】2018-08-28
【審査請求日】2023-03-28
(31)【優先権主張番号】P 2017171509
(32)【優先日】2017-09-06
(33)【優先権主張国・地域又は機関】JP
(31)【優先権主張番号】P 2017171511
(32)【優先日】2017-09-06
(33)【優先権主張国・地域又は機関】JP
(31)【優先権主張番号】P 2017171524
(32)【優先日】2017-09-06
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000153878
【氏名又は名称】株式会社半導体エネルギー研究所
(72)【発明者】
【氏名】石津 貴彦
(72)【発明者】
【氏名】池田 隆之
(72)【発明者】
【氏名】磯部 敦生
(72)【発明者】
【氏名】宮口 厚
(72)【発明者】
【氏名】山崎 舜平
【審査官】征矢 崇
(56)【参考文献】
【文献】米国特許第08786130(US,B1)
【文献】米国特許出願公開第2016/0054782(US,A1)
【文献】特開2015-195331(JP,A)
【文献】特開2015-035073(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F1/26-1/3296
H01L29/78
G06G7/184;7/60
(57)【特許請求の範囲】
【請求項1】
第1の演算部と、
第2の演算部と、を有し、
前記第1の演算部は、第1のCPUコアと、第2のCPUコアと、を有し、
前記第2の演算部は、第1のGPUコアと、第2のGPUコアと、を有し、
前記第1のCPUコアおよび前記第2のCPUコアの各々は、パワーゲーティングする機能を有し、
前記第1のCPUコアおよび前記第2のCPUコアの各々は、第1のデータ保持回路を有し、
前記第1のGPUコアは、アナログ値を保持する機能を有し、且つ、前記アナログ値を2ビット以上のデジタルデータとして読み出す機能を有する第2のデータ保持回路を有し、
前記第2のGPUコアは、デジタル値を保持する機能を有し、且つ、1ビットのデジタルデータとして読み出す機能を有する第3のデータ保持回路を有し、
前記
第2及び前記第3のデータ保持回路の各々は、第1のトランジスタと、第2のトランジスタと、容量素子と、を有し、
前記第1のトランジスタのソース及びドレインの一方は、前記容量素子と、前記第2のトランジスタのゲートと電気的に接続され、
前記第1のトランジスタのチャネル形成領域は、酸化物半導体を有する、演算装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の一態様は、演算装置および電子機器に関する。
【0002】
なお、本発明の一態様は、上記の技術分野に限定されない。本明細書等で開示する本発明の一態様の技術分野としては、半導体装置、撮像装置、表示装置、発光装置、蓄電装置、記憶装置、表示システム、電子機器、照明装置、入力装置、入出力装置、それらの駆動方法、又はそれらの製造方法、を一例として挙げることができる。
【0003】
また、本明細書等において、半導体装置とは、半導体特性を利用することで機能しうる装置全般を指す。トランジスタ、半導体回路、演算装置、記憶装置等は半導体装置の一態様である。また、表示装置、撮像装置、電気光学装置、発電装置(薄膜太陽電池、有機薄膜太陽電池等を含む)、及び電子機器は半導体装置を有している場合がある。
【背景技術】
【0004】
CPU(Central Processing Unit)等の演算装置を有する電子機器が普及している。このような電子機器では、大量のデータを高速に処理するため、演算装置の性能向上に関する技術開発が活発である。高性能化を実現する技術としては、例えば、マルチコア技術、DVFS(Dynamic Voltage and Frequency Scaling)技術がある。
【0005】
また演算装置は、GPU(Graphics Processing Unit)等のアクセラレータとCPUとを密結合させた、所謂SoC(System on Chip)化によって演算処理性能の向上を実現している。SoC化によって高性能化した演算装置では、発熱、及び消費電力の増加が問題となってくる。そのため特許文献1では、演算装置が搭載されたコンピュータの電流を監視し制御することによって、熱負荷を低減するための方法およびシステムに関する発明が開示されている。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
マルチコア技術およびDVFS技術は、演算装置の高性能化を図るために有効である。しかしながらSoC化した演算装置において、マルチコア技術およびDVFS技術を適用する場合、コアごとにパワーゲーティングすることが難しく、リーク電流が流れるため消費電力が増加してしまう。
【0008】
そこで、本発明の一態様は、新規な演算装置および電子機器を提供することを課題の一とする。又は、本発明の一態様は、消費電力の小さい演算装置および電子機器を提供することを課題の一とする。又は、本発明の一態様は、高速動作が可能な演算装置および電子機器を提供することを課題の一とする。又は、本発明の一態様は、発熱の抑制が可能な演算装置および電子機器を提供することを課題の一とする。
【0009】
なお、本発明の一態様は、必ずしも上記の課題の全てを解決する必要はなく、少なくとも一の課題を解決できるものであればよい。また、上記の課題の記載は、他の課題の存在を妨げるものではない。これら以外の課題は、明細書、特許請求の範囲、図面などの記載から、自ずと明らかとなるものであり、明細書、特許請求の範囲、図面などの記載から、これら以外の課題を抽出することが可能である。
【課題を解決するための手段】
【0010】
本発明の一態様は、第1の演算部と、第2の演算部と、を有し、第1の演算部は、第1のCPUコアと、第2のCPUコアと、を有し、第2の演算部は、第1のGPUコアと、第2のGPUコアと、を有し、第1のCPUコアおよび第2のCPUコアと、は、それぞれパワーゲーティングすることができる機能を有し、第1のCPUコアおよび第2のCPUコアは、それぞれフリップフロップに電気的に接続されている第1のデータ保持回路を有し、第1のGPUコアは、アナログ値を保持し、2ビット以上のデジタルデータとして読み出すことができる第2のデータ保持回路を有し、第2のGPUコアは、デジタル値を保持し、1ビットのデジタルデータとして読み出すことができる第3のデータ保持回路を有し、第1乃至第3のデータ保持回路は、それぞれ第1のトランジスタおよび容量素子を有し、第1のトランジスタは、容量素子へのデータの書き込みを制御する機能、および第1のトランジスタのソースとドレインとの間を非導通状態とすることで書き込まれたデータに応じた電荷を保持する機能を有し、第1のトランジスタにおいて、チャネル形成領域は酸化物半導体を有する演算装置である。
【0011】
本発明の一態様は、第1の演算部と、複数の第2の演算部と、を有し、第1の演算部は、第1のCPUコアと、第2のCPUコアと、を有し、複数の第2の演算部は、それぞれ第1のGPUコアと、第2のGPUコアと、を有し、第1のCPUコアおよび第2のCPUコアと、は、それぞれパワーゲーティングすることができる機能を有し、第1のCPUコアおよび第2のCPUコアは、それぞれフリップフロップに電気的に接続されている第1のデータ保持回路を有し、第1のGPUコアは、アナログ値を保持し、2ビット以上のデジタルデータとして読み出すことができる第2のデータ保持回路を有し、第2のGPUコアは、デジタル値を保持し、1ビットのデジタルデータとして読み出すことができる第3のデータ保持回路を有し、第1乃至第3のデータ保持回路は、それぞれ第1のトランジスタおよび容量素子を有し、第1のトランジスタは、容量素子へのデータの書き込みを制御する機能、および第1のトランジスタのソースとドレインとの間を非導通状態とすることで書き込まれたデータに応じた電荷を保持する機能を有し、第1のトランジスタにおいて、チャネル形成領域は酸化物半導体を有する演算装置である。
【0012】
本発明の一態様において、第2のデータ保持回路および第3のデータ保持回路は、それぞれ第2のトランジスタを有し、第1のトランジスタのソースまたはドレインの一方と、容量素子の一方の電極と、第2のトランジスタのゲートと、が電気的に接続されたノードにアナログ値またはデジタル値に応じた電位を保持する機能を有する演算装置が好ましい。
【0013】
本発明の一態様において、第1のCPUコアおよび第2のCPUコアは、いずれか一方が演算処理を実行する状態と、いずれか他方がパワーゲーティングする状態とが切り替えられ、切り替えは第1のCPUコアまたは第2のCPUコアが設けられた領域の温度に応じて制御される演算装置が好ましい。
【0014】
本発明の一態様において、第1のGPUコアおよび第2のGPUコアは、いずれか一方が演算処理を実行する状態と、いずれか他方がパワーゲーティングする状態とが切り替えられ、切り替えは科学技術計算に基づく演算処理であるか、またはニューラルネットワークを利用した推論に基づく演算処理であるか、に応じて制御される演算装置が好ましい。
【0015】
なおその他の本発明の一態様については、以下で述べる実施の形態における説明、および図面に記載されている。
【発明の効果】
【0016】
本発明の一態様により、新規な演算装置および電子機器を提供することができる。又は、本発明の一態様により、消費電力の小さい演算装置および電子機器を提供することができる。又は、本発明の一態様により、高速動作が可能な演算装置および電子機器を提供することができる。又は、本発明の一態様により、発熱の抑制が可能な演算装置および電子機器を提供することができる。
【0017】
なお、これらの効果の記載は、他の効果の存在を妨げるものではない。また、本発明の一態様は、必ずしも、これらの効果の全てを有する必要はない。これら以外の効果は、明細書、特許請求の範囲、図面などの記載から、自ずと明らかとなるものであり、明細書、特許請求の範囲、図面などの記載から、これら以外の効果を抽出することが可能である。
【図面の簡単な説明】
【0018】
【
図1】本発明の一態様の構成を説明するためのブロック図。
【
図2】本発明の一態様の構成を説明するためのブロック図。
【
図3】本発明の一態様の構成を説明するためのブロック図。
【
図4】本発明の一態様の構成を説明するための状態遷移図。
【
図7】本発明の一態様の構成を説明するためのフローチャート。
【
図8】本発明の一態様の構成を説明するためのフローチャート。
【
図9】本発明の一態様の構成を説明するためのブロック図。
【
図10】本発明の一態様の構成を説明するためのブロック図。
【
図11】CPUのパワーゲーティング機構の例を示すブロック図。
【
図12】A:フリップフロップの構成例を示す回路図。B:フリップフロップの積層構造例を示す図。
【
図13】フリップフロップの動作例を示すタイミングチャート。
【
図14】osAIチップの構成例を示す機能ブロック図。
【
図16】osAIチップの構成例を示す機能ブロック図。
【
図19】A:メモリ回路の構成例を示す回路図。B:メモリセルの構成例を示す回路図。
【
図21】A、B:スイッチ回路の構成例を示す回路図。
【
図22】A:NOSRAMの構成例を示す機能ブロック図。B:メモリセルの構成例を示す回路図。
【
図23】A:メモリセルアレイの構成例を示す回路図。B、C:メモリセルの構成例を示す回路図。
【
図24】NOSRAMの動作例を示すタイミングチャート。
【
図25】OSSRAMの構成例を示す機能ブロック図。
【
図26】A:メモリセルの構成例を示す回路図。B:OSSRAMの動作例を示すタイミングチャート。
【
図27】A-D:osメモリの回路構成例を示す回路図。
【
図28】osAIチップの回路部の構成例を示す模式図。
【
図29】本発明の一態様の構成を説明するための図。
【
図30】本発明の一態様の構成を説明するための図。
【
図31】本発明の一態様の構成を説明するための図。
【
図32】本発明の一態様の構成を説明するための図。
【発明を実施するための形態】
【0019】
以下に、本発明の実施の形態を説明する。ただし、本発明の一形態は、以下の説明に限定されず、本発明の趣旨およびその範囲から逸脱することなくその形態および詳細を様々に変更し得ることは、当業者であれば容易に理解される。したがって、本発明の一形態は、以下に示す実施の形態の記載内容に限定して解釈されるものではない。
【0020】
以下に示される複数の実施の形態は適宜組み合わせることが可能である。また1の実施の形態の中に、複数の構成例(作製方法例、動作方法例、使用方法例等も含む。)が示される場合は、互いの構成例を適宜組み合わせること、および他の実施の形態に記載された1または複数の構成例と適宜組み合わせることも可能である。
【0021】
図面において、大きさ、層の厚さ、又は領域は、明瞭化のために誇張されている場合がある。よって、必ずしもそのスケールに限定されない。なお図面は、理想的な例を模式的に示したものであり、図面に示す形状又は値などに限定されない。例えば、ノイズによる信号、電圧、若しくは電流のばらつき、又は、タイミングのずれによる信号、電圧、若しくは電流のばらつきなどを含むことが可能である。
【0022】
本明細書等において、金属酸化物(metal oxide)とは、広い意味での金属の酸化物である。金属酸化物は、酸化物絶縁体、酸化物導電体(透明酸化物導電体を含む)、酸化物半導体(Oxide Semiconductorともいう)などに分類される。例えば、トランジスタのチャネル形成領域に金属酸化物を用いた場合、当該金属酸化物を酸化物半導体と呼称する場合がある。つまり、金属酸化物が増幅作用、整流作用、及びスイッチング作用の少なくとも1つを有する場合、当該金属酸化物を、金属酸化物半導体(metal oxide semiconductor)と呼ぶことができる。以下、チャネル形成領域に金属酸化物を含むトランジスタを、osトランジスタとも表記する。
【0023】
(実施の形態1)
本発明の一態様である演算装置の構成、および動作等について説明する。
【0024】
図1は、演算装置100Aのブロック図である。
図1に示す演算装置100Aは、ホスト10(図中、Host)と、バス20(図中、Bus)と、GPU30と、を有する。ホスト10およびGPU30は、プログラムを実行するための演算を行う機能を有する。
【0025】
ホスト10は、OS(Operating System)の実行、データの制御、各種演算やプログラムの実行など、汎用の処理を行う機能を有する。ホスト10は、複数のCPUコアを有する。
図1では、一例としてCPUコア11AおよびCPUコア11Bの2つのCPUコアを図示している。ホスト10は、メモリ12を有する。メモリ12は、メインメモリとしての機能、またはデータキャッシュとしての機能を有する。
【0026】
CPUコア11AおよびCPUコア11Bは、ホスト10で行われる処理を実行する機能を有する。CPUコア11AとCPUコア11Bとは、処理性能が異なることが好ましい。例えば、CPUコア11Aは、CPUコア11Bと比べて、処理性能が低く且つ消費電力が小さいコアであり、CPUコア11Bは、CPUコア11Aと比べて、処理性能が高く且つ消費電力が大きいコアである構成が好ましい。当該構成とすることで、ホスト10で行われる処理の量や種類に応じて、CPUコア11AまたはCPUコア11Bのいずれか一方または双方を選択し、効率的に処理を実行することができる。
【0027】
なお、CPUコア11AとCPUコア11Bは異なる回路設計により、処理能力および消費電力を異ならせる構成とすることができる。または、同一のCPUコアを2つ用意し、該CPUコアのいずれか一方、または双方に対してDFVS技術を適用することで、処理能力および消費電力を異ならせる構成とすることができる。具体的な一例としては、一方のCPUコアに対しては電圧および周波数を上げることで処理性能を向上させ、他方のCPUコアに対しては電圧及び周波数を下げることで消費電力を抑制し、上述した処理能力および消費電力を異ならせる構成を実現できる。
【0028】
CPUコア11AおよびCPUコア11Bは、それぞれデータ保持回路13を有する。データ保持回路13は、電源電圧の供給が停止してもデータを保持できる回路である。なお電源電圧の供給は、電源ドメイン(パワードメイン)からのパワースイッチ等による電気的な切り離しによって制御することができる。なお電源電圧は、駆動電圧という場合がある。データ保持回路13として、例えば、酸化物半導体(oxide semiconductor)をチャネル形成領域に有するトランジスタ(osトランジスタ)を有するメモリ(以下、osメモリともいう。)が好適である。
【0029】
金属酸化物のバンドギャップは2.5eV以上あるため、osトランジスタは極小のオフ電流をもつ。一例として、ソースとドレイン間の電圧が3.5V、室温(25℃)下において、チャネル幅1μm当たりのオフ電流を1×10-20A未満、1×10-22A未満、あるいは1×10-24A未満とすることができる。すなわち、ドレイン電流のオン/オフ電流比を20桁以上150桁以下とすることができる。そのため、osメモリは、osトランジスタを介して保持ノードからリークする電荷量が極めて少ない。従って、osメモリは不揮発性メモリ回路として機能できるため、演算装置のパワーゲーティングが可能となる。
【0030】
osトランジスタに適用される金属酸化物は、Zn酸化物、Zn-Sn酸化物、Ga-Sn酸化物、In-Ga酸化物、In-Zn酸化物、In-M-Zn酸化物(Mは、Ti、Ga、Y、Zr、La、Ce、Nd、SnまたはHf)などがある。また、インジウムおよび亜鉛を含む酸化物に、アルミニウム、ガリウム、イットリウム、銅、バナジウム、ベリリウム、ホウ素、シリコン、チタン、鉄、ニッケル、ゲルマニウム、ジルコニウム、モリブデン、ランタン、セリウム、ネオジム、ハフニウム、タンタル、タングステン、マグネシウムなどから選ばれた一種、または複数種が含まれていてもよい。
【0031】
osトランジスタの信頼性、電気特性の向上のため、半導体層に適用される金属酸化物は、CAAC-OS、CAC-OS、nc-OSなどの結晶部を有する金属酸化物であることが好ましい。CAAC-OSとは、c-axis-aligned crystalline oxide semiconductorの略称である。CAC-OSとは、Cloud-Aligned Composite oxide semiconductorの略称である。nc-OSとは、nanocrystalline oxide semiconductorの略称である。
【0032】
CAAC-OSは、c軸配向性を有し、かつa-b面方向において複数のナノ結晶が連結し、歪みを有した結晶構造となっている。なお、歪みとは、複数のナノ結晶が連結する領域において、格子配列の揃った領域と、別の格子配列の揃った領域との間で格子配列の向きが変化している箇所を指す。
【0033】
CAC-OSは、キャリアとなる電子(または正孔)を流す機能と、キャリアとなる電子を流さない機能とを有する。電子を流す機能と、電子を流さない機能とを分離させることで、双方の機能を最大限に高めることができる。つまり、CAC-OSをosトランジスタのチャネル形成領域に用いることで、高いオン電流と、極めて低いオフ電流との双方を実現できる。
【0034】
金属酸化物は、バンドギャップが大きく、電子が励起されにくいこと、ホールの有効質量が大きいことなどから、osトランジスタは、一般的なSiトランジスタと比較して、アバランシェ崩壊等が生じにくい場合がある。従って、例えばアバランシェ崩壊に起因するホットキャリア劣化等を抑制できる。ホットキャリア劣化を抑制できることで、高いドレイン電圧でosトランジスタを駆動することができる。
【0035】
osトランジスタは、電子を多数キャリアとする蓄積型トランジスタである。そのため、pn接合を有する反転型トランジスタ(代表的には、Siトランジスタ)と比較して短チャネル効果の一つであるDIBL(Drain-Induced Barrier Lowering)の影響が小さい。つまり、osトランジスタは、Siトランジスタよりも短チャネル効果に対する高い耐性を有する。
【0036】
osトランジスタは、短チャネル効果に対する耐性が高いために、osトランジスタの信頼性を劣化させずに、チャネル長を縮小できるので、osトランジスタを用いることで回路の集積度を高めることができる。チャネル長が微細化するのに伴いドレイン電界が強まるが、上掲したように、osトランジスタはSiトランジスタよりもアバランシェ崩壊が起きにくい。
【0037】
また、osトランジスタは、短チャネル効果に対する耐性が高いために、Siトランジスタよりもゲート絶縁膜を厚くすることが可能となる。例えば、チャネル長及びチャネル幅が50nm以下の微細なトランジスタにおいても、10nm程度の厚いゲート絶縁膜を設けることが可能な場合がある。ゲート絶縁膜を厚くすることで、寄生容量を低減することができるので、回路の動作速度を向上できる。またゲート絶縁膜を厚くすることで、ゲート絶縁膜を介したリーク電流が低減されるため、静的消費電流の低減につながる。
【0038】
以上より、CPUコア11AおよびCPUコア11Bは、osメモリであるデータ保持回路13を有することで電源電圧の供給が停止してもデータを保持できる。そのため、CPUコア11AおよびCPUコア11Bのパワーゲーティングが可能となり、消費電力の大幅な低減を図ることができる。
【0039】
メモリ12は、CPUコア11AおよびCPUコア11Bが行う処理において必要なデータを格納する機能を有する。メモリ12は、RAM(Random Access Memory)、などの揮発性メモリまたは不揮発性メモリを備える構成とすることができる。具体的には、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)、およびフラッシュメモリなどを用いることができる。またはNOSRAM、またはDOSRAMを用いることもできる。
【0040】
「NOSRAM(登録商標)」とは、「Nonvolatile Oxide Semiconductor RAM」の略称である。NOSRAMは、メモリセルが2トランジスタ型(2T)、又は3トランジスタ型(3T)ゲインセルであり、アクセストランジスタがosトランジスタであるメモリのことをいう。「DOSRAM(登録商標)」とは、「Dynamic Oxide Semiconductor RAM」の略称である。DOSRAMは、メモリセルがosトランジスタと容量素子とでなる1トランジスタ1容量型(1T1C)であり、アクセストランジスタがosトランジスタであるメモリのことをいう。NOSRAMおよびDOSRAMは、アクセストランジスタがosトランジスタである。osトランジスタはオフ状態でソースとドレインとの間を流れる電流、つまりリーク電流が極めて小さい。NOSRAMおよびDOSRAMは、リーク電流が極めて小さい特性を用いてデータに応じた電荷をメモリセル内に保持することで、不揮発性メモリとして用いることができる。
【0041】
メモリ12は、メモリバス(図示せず)経由でCPUコア11AおよびCPUコア11Bと電気的に接続されている。なお、演算装置100Aは、CPUとGPUとが搭載されたヘテロジニアスシステムであることから、メモリ12をホストメモリと呼ぶ場合がある。
【0042】
ホスト10は、バス20を介してGPU30と電気的に接続される。つまりホスト10とGPU30とは、バス20を介してデータ伝送を行うことができる。
【0043】
GPU30は、デバイスメモリ31と、共有メモリ32Aと、共有メモリ32Bと、GPUコア33Aと、GPUコア33Bと、を有する。デバイスメモリ31、共有メモリ32A、および共有メモリ32Bは、オンサイトメモリという場合がある。
【0044】
GPU30は、ホストプログラムから呼び出されたプログラムを実行する機能を有する。GPU30は、例えば、グラフィック処理における行列演算の並列処理、ニューラルネットワークの積和演算の並列処理、科学技術計算における浮動小数点演算の並列処理などを行うことができる。
【0045】
デバイスメモリ31は、GPU30が実行するプログラム(カーネル、またはカーネルプログラムとも呼ばれる。)、およびGPU30が処理するデータを記憶する。デバイスメモリ31は、メモリバス(図示せず)経由で共有メモリ32Aおよび共有メモリ32Bと電気的に接続されている。なお、デバイスメモリ31とメモリ12との間のデータ転送は、バス20を経由して行われる。
【0046】
共有メモリ32Aは、GPUコア33Aと電気的に接続され、デジタル値を保持する機能を有する。共有メモリ32Bは、GPUコア33Bと電気的に接続され、アナログ値を保持する機能を有する。なおデジタル値は二値、つまり1ビットのデジタルデータである。アナログ値は、4値以上のデータであり、量子化することで2ビット以上のデジタルデータとして扱うことができる。そのため、共有メモリ32Bは、共有メモリ32Aよりも単位面積当たりのメモリ容量を増やすことができる。
【0047】
GPUコア33Aは、デジタル値を用いた演算処理を行う機能を有する。デジタル値はノイズの影響を受けにくい。そのためGPUコア33Aは、高い精度の演算結果が要求される演算処理を行うのに適している。GPUコア33Aは、複数の演算ユニット34Aを有する。
【0048】
演算ユニット34Aは、デジタル値を保持するデータ保持部35Aを有する。各演算ユニット34Aは、データ保持部35Aに保持されたデジタル値を用いて、整数演算、単精度浮動小数点演算、倍精度浮動小数点演算などの処理のいずれか一を行う機能を有する。GPUコア33Aに搭載されている複数の演算ユニット34Aは、基本的には同じ命令を実行する。
【0049】
GPUコア33Bは、アナログ値を用いた演算処理を行う機能を有する。量子化されたアナログ値をデジタルデータとして演算処理に用いることで、膨大な量の演算処理を行う必要がなくなり、回路規模を小さく抑えることができる。そのためGPUコア33Bは、消費電力を抑えつつ、発熱を抑制することができる。GPUコア33Bは、複数の演算ユニット34Bを有する。
【0050】
演算ユニット34Bは、アナログ値を保持するデータ保持部35Bを有する。各演算ユニット34Bは、データ保持部35Bに保持されたアナログ値を量子化して得られるデジタルデータを用いて、整数演算、単精度浮動小数点演算、倍精度浮動小数点演算などの処理のいずれか一を行う機能を有する。GPUコア33Bに搭載されている複数の演算ユニット34Bは、基本的には同じ命令を実行する。
【0051】
図1に示す、演算装置100Aにおいて電力の消費を伴う要素は、ホスト10およびGPU30である。演算装置100Aの全体の消費電力に対する、ホスト10およびGPU30の割合は比較的大きい。特に、GPU30が、ディープニューラルネットワークの学習(深層学習)、浮動小数点演算を行う科学技術計算などの膨大な演算処理を行う場合、演算装置100Aの消費電力は著しく増大する。そのため、GPU30の消費電力を可能な限り小さくすることが好ましい。
【0052】
図1に示す演算装置100Aは、GPUにおける、量子化したアナログ値を用いた演算、およびデジタル値を用いた演算の切り替え、ならびに、CPUコア11AおよびCPUコア11Bの切り替えを行うことで、消費電力および発熱を抑制しつつ、演算処理を高速に行うことができる。当該構成は、複数のCPUコア、および複数のGPUコアを搭載したSoCにおいて特に有効である。
【0053】
図2は、
図1に図示した演算装置100Aの変形例のブロック図である。
図2に示す演算装置100Bは、2以上のGPU(GPU30_1乃至GPU30_n(nは、2以上の自然数。))を有する点において、
図1に示す演算装置100Aと異なる。
【0054】
バス20は、ホスト10、およびGPU30_1乃至GPU30_nと電気的に接続している。ホスト10とGPU30_1乃至GPU30_nとは、バス20を介してデータ伝送を行うことができる。その他の構成については、演算装置100Aの構成を参酌する。
【0055】
演算装置100Bは、複数のGPUを有することで、演算装置100Aと比べて、処理をより高速に実行することができる。また、処理を行うGPUを適宜切り替えることで、演算装置100Bの温度が上昇するのを抑制することができる。
【0056】
図3は、
図1に図示した演算装置100Aの変形例のブロック図である。
図3に示す演算装置100Cは、CPU10A(CPU1)と、CPU10B(CPU2)と、バス20と、GPU30A(GPU1)と、GPU30B(GPU2)と、を有する点において、
図1に示す演算装置100Aと異なる。
【0057】
CPU10Aは、CPUコア11Aおよびメモリ12を有し、CPU10Bは、CPUコア11Bおよびメモリ12を有する。また、GPU30Aは、デバイスメモリ31、共有メモリ32A、およびGPUコア33Aを有し、GPU30Bは、デバイスメモリ31、共有メモリ32B、およびGPUコア33Bを有する。
【0058】
バス20は、CPU10A、CPU10B、GPU30A、およびGPU30Bと電気的に接続している。CPU10AおよびCPU10Bと、GPU30AとGPU30Bとは、バス20を介してデータ伝送を行うことができる。その他の構成については、演算装置100Aの構成を参酌する。
【0059】
図4は、
図1で示す演算装置100Aが取り得る複数の状態を説明するための状態遷移図である。
図4に示す演算装置100Aは、状態SC1、状態SC2、状態SG1、状態SG2、および状態SPG1乃至SPG4を有する。
【0060】
図4に示す状態SC1はCPUコア11Aを用いて処理を実行する状態(図中、CPU Core1と図示)に対応する。状態SC2はCPUコア11Bを用いて処理を実行する状態(図中、CPU Core2と図示)に対応する。状態SG1はGPUコア33Bを用いて処理を実行する状態(図中、GPU Core1と図示)に対応する。状態SG2はGPUコア33Aを用いて処理を実行する状態(図中、GPU Core2と図示)に対応する。
【0061】
図4に示す状態SPG1乃至SPG4は、状態SC1、状態SC2、状態SG1、状態SG2の各状態にあるコアに対して、パワーゲーティング状態(PG状態、図中PG Modeと表記)にする機能を有する。パワーゲーティングとは、回路に対する電源電圧の供給を制御することにより、例えば使用しない回路に対する電源電圧の供給を停止させる技術である。
【0062】
例えばCPUコア11AのみPG状態にする場合、CPUコア11Aが状態SC1から状態SPG1に移行し、その他の構成であるCPUコア11B、GPUコア33A、およびGPUコア33Bは、電源電圧の供給が行われる状態SC2、状態SG2、状態SG1のままとなる。また別の例としてCPUコア11AおよびGPUコア33BをPG状態にする場合、CPUコア11Aが状態SC1から状態SPG1に移行するとともに、GPUコア33Bが状態SG1から状態SPG3に移行し、その他の構成であるCPUコア11BおよびGPUコア33Aは、電源電圧の供給が行われる状態SC2および状態SG2のままとなる。
【0063】
演算装置100Aでは、ホストプログラムに記載されている命令の種類および演算量を元に、状態SC1または状態SPG1、および状態SC2または状態SPG2の選択、つまりCPUコア11AまたはCPUコア11Bのいずれか一方または双方を用いて処理を行うかを選択する。また、ホストプログラムにカーネルプログラムが記載されている場合、カーネルプログラムの種類および演算量を元に、状態SG1または状態SPG3、および状態SG2または状態SPG4の選択、つまりGPUコア33AまたはGPUコア33Bのいずれか一方又は双方を用いて処理を行うかを選択する。当該構成によって、各コアが独立してPG状態とすることが可能となるため、演算装置全体として消費電力を抑制することができる。
【0064】
図5は、
図4で説明した状態遷移図で示す各状態に移行する例を説明する図である。具体的には、5つの命令(命令1乃至命令5)に対する、各コアの動作について説明する。
図5において、電源電圧が供給され演算可能な状態のコアを、「EXE.」と表記し、電源電圧の供給が停止されPG状態であるコアを、「PG」と表記する。
【0065】
なお
図5の説明でCPUコア1(CPU Core1と図示)は、CPUコア2(CPU Core2と図示)と比べて、演算性能が低く消費電力が小さいコアとする。また、CPUコア2は、CPUコア1と比べて、演算性能が高く消費電力が大きいコアとする。また、GPUコア1(GPU Core1と図示)は、アナログ値を量子化して得られるデジタル値(多値データ)を用いた演算処理を行うGPUコアであり、演算の処理速度および精度が低いが、発熱は小さいとする。また、GPUコア2(GPU Core2と図示)は、デジタル値を用いた演算処理を行うGPUコアであり、演算の処理速度および精度は高いが、発熱が大きいとする。
【0066】
↓
命令1(図中、Instruction1)は、処理を並列に実行することなく、高い処理性能が要求されない命令である。例えば、演算装置を搭載している電子機器または並列計算機がスリープモードの場合(図中、sleep)等がある。このような場合、CPUコア1のみを動作させ、他のコアはPG状態にする。CPUコア1は消費電力が小さく、他のコアはPG状態であり電力を消費しないため、演算装置100Aの消費電力および発熱を抑制しつつ、命令1を実行することができる。
【0067】
命令2(図中、Instruction2)は、処理を並列に実行することができず、高速な処理が要求される命令である。例えば、オペレーティングシステムの起動時や、通常のプログラム実行を複数行う場合(図中、busy)等がある。このような場合、CPUコア2のみを動作させ、他のコアはPG状態にする。CPUコア2は処理性能が高く、他のコアはPG状態であり電力を消費しない。よって、演算装置100Aの消費電力を抑制しつつ、命令2を高速に実行することができる。
【0068】
命令3(図中、Instruction3)は、処理を並列に実行することができ、高い処理性能が要求されない命令である。例えば、機械学習に基づく推論処理を行う場合(図中、inference)等がある。このような場合、CPUコア1およびGPUコア1を動作させ、他のコアはPG状態にする。CPUコア1はGPUコア1上のメモリに入力データを転送し、カーネルプログラムを呼び出すことで、GPUコア1に処理を実行させる。処理が終了したら、出力データをCPUコア上のメモリに転送する。CPUコア1およびGPUコア1は消費電力が小さく、他のコアはPG状態であり電力を消費しない。よって、演算装置100Aの消費電力および発熱を抑制しつつ、命令3を実行することができる。なお、GPUコア1が処理を行っている際、CPUコア1の動作が不要な場合は、該処理を行っている期間中、CPUコア1をPG状態に切り替えてもよい。PG状態への切り替えを頻繁に行うことで、消費電力および発熱を抑制することができる。
【0069】
命令4(図中、Instruction4)は、処理を並列に実行することができ、高速な処理が要求される命令である。例えば、科学技術計算を行う場合(図中、calculation)等がある。このような場合、CPUコア2およびGPUコア2を動作させ、他のコアはPG状態にする。CPUコア2はGPUコア2上のメモリに入力データを転送し、カーネルプログラムを呼び出すことで、GPUコア2に処理を実行させる。処理が終了したら、出力データをCPUコア上のメモリに転送する。なお、CPUコア2にて処理の一部を実行してもよい。CPUコア2およびGPUコア2は処理性能が高く、他のコアはPG状態であり電力を消費しないため、演算装置100Aの消費電力を抑制しつつ、命令4を高速に実行することができる。なお、GPUコア2が処理を行っている際、CPUコア2の動作が不要な場合は、該処理を行っている期間中、CPUコア2をPG状態に切り替えてもよい。PG状態への切り替えを頻繁に行うことで、消費電力および発熱を抑制することができる。
【0070】
命令5(図中、Instruction5)は、命令4と比較して、演算量が多く、より高速な処理が要求される命令である。この場合、CPUコア2と、GPUコア2と、の2つのみで処理を行うと、これらのコアが発熱し、基板の温度が上昇することで、演算装置が壊れてしまう恐れがある。このような場合、基板の温度上昇を抑制できる駆動(図中、cooling)を行うことが有効である。例えば全てのコア(CPUコア1、CPUコア2、GPUコア1、およびGPUコア2)に対して、PG状態と電源電圧を供給する状態の切り替えを頻繁に行うことで、発熱を抑制しつつ、命令を実行し続けることができる。
【0071】
以上のように、ホストプログラムに記載されている命令の種類および演算量、ならびに、カーネルプログラムの種類および演算量を元に、使用するコアの組み合わせを適切に選択し、選択されなかったコアをPG状態にすることで、消費電力を抑制しつつ、命令を高速に実行することができる。
【0072】
図6(A)、(B)は、基板の温度に応じて複数のCPUコアまたは複数のGPUコアを用いる際の、演算する状態からPG状態への切り替え、およびPG状態から演算を行う状態への切り替えについての動作を説明する図である。
【0073】
図6(A)では、2つのCPUコア(CPU Core1、CPU Core2)の演算する状態、PG状態を切り替えて動作させる様子の一例である。初め、CPU Core1への電源電圧の供給をして演算できる状態(CPU Core1 Exe.)とし、CPU Core2への電源電圧の供給を停止してPG状態とする。なお
図6(A)に示すグラフは、横軸が時間、縦軸がCPUコアの配置された領域の表面温度を表している。
【0074】
CPU Core1では、演算によって電流が流れるため、CPU Core1の配置された領域を中心に発熱する。発熱によってCPU Core1の配置された領域の温度が上昇する。CPU Core1の配置された領域の温度が閾値温度Tthに達すると、CPU Core2では、PG状態から電源電圧を供給する状態に切り替え、演算を行うための待機状態に切り替える(CPU Core2 Exe.)。
【0075】
なおCPU Core1の演算能力は、CPU Core2の演算能力より小さい構成とすることが好ましい。具体的にはCPU Core2ではDVFS技術を適用してCPU Core1よりも演算能力を向上させておく構成とする。該構成とすることで、CPU Core1をCPU Core2に比べて積極的に用いる場合に、CPU Core1が配置された領域の発熱をCPU Core2が配置された領域の発熱よりも抑えることができるため、消費電力の低減、発熱の抑制、およびPG状態への切り替えをおこなう頻度を低減することができる。
【0076】
やがてCPU Core1の配置された領域の発熱によってCPU Core1の配置された領域の温度が限界温度T
limに達すると、CPU Core1への電源電圧の供給を停止してPG状態とする(CPU Core1 PG)。そして、CPU Core2で演算を開始する。CPU Core2は、演算によって電流が流れるため、CPU Core2の配置された領域を中心に発熱する。なお
図6(A)に図示する期間t1で、CPU Core2はPG状態から電源電圧の供給をする状態に切り替えられているが、待機状態であるため、発熱が小さい。
【0077】
発熱によってCPU Core2の配置された領域の温度が上昇する。このCPU Core2の配置された領域の温度が上昇する間、CPU Core1をPG状態とすることで、CPU Core1の配置された領域を冷却することができる。そのため、CPU Core2の温度上昇を抑制することができる。その結果、演算装置全体として温度の上昇を抑制することができるため、ファンなどの冷却機構の削減を可能とすることができる。そして、CPU Core2の配置された領域の温度が閾値温度Tthに達すると、CPU Core1では、PG状態から電源電圧を供給する状態に切り替え、演算を行うための待機状態に切り替える(CPU Core1 Exe.)。
【0078】
やがてCPU Core2の配置された領域の発熱によってCPU Core2の配置された領域の温度が限界温度T
limに達すると、CPU Core2への電源電圧の供給を停止してPG状態とする(CPU Core2 PG)。そして、CPU Core1で演算を開始する。CPU Core1は、演算によって電流が流れるため、CPU Core1の配置された領域を中心に発熱する。なお
図6(A)に図示する期間t2で、CPU Core1はPG状態から電源電圧を供給する状態に切り替えられているが、待機状態であるため、発熱が小さい。
【0079】
発熱によって、再度CPU Core1の配置された領域の温度が上昇する。このCPU Core1の配置された領域の温度が上昇する間、CPU Core2をPG状態とすることで、CPU Core2の配置された領域を冷却することができる。そのため、CPU Core1の温度上昇を抑制することができる。その結果、演算装置全体として温度の上昇を抑制することができるため、ファンなどの冷却機構の削減を可能とすることができる。
【0080】
同様に
図6(B)では、2つのGPUコア(GPU Core1、GPU Core2)の演算する状態、PG状態を切り替えて動作させる様子の一例である。初め、GPU Core1に電源電圧の供給をして演算できる状態(GPU Core1 Exe.)とし、GPU Core2への電源電圧の供給を停止してPG状態とする。なお
図6(B)に示すグラフは、横軸が時間、縦軸がGPUコアの配置された領域の表面温度を表している。
【0081】
GPU Core1では、演算によって電流が流れるため、GPU Core1の配置された領域を中心に発熱する。発熱によってGPU Core1の配置された領域の温度が上昇する。GPU Core1の配置された領域の温度が閾値温度Tthに達すると、GPU Core2では、PG状態から電源電圧を供給する状態に切り替え、演算を行うための待機状態に切り替える(GPU Core2 Exe.)。
【0082】
なおGPU Core1を用いた演算は、GPU Core2を用いた演算より演算量を小さくすることができる。そのため、GPU Core1をGPU Core2に比べて積極的に用いるようにすることで、消費電力の低減、発熱の抑制、およびPG状態への切り替えをおこなう頻度を低減することができる。
【0083】
やがてGPU Core1の配置された領域の発熱によってGPU Core1の配置された領域の温度が限界温度T
limに達すると、GPU Core1への電源電圧の供給を停止してPG状態とする(GPU Core1 PG)。そして、GPU Core2で演算を開始する。GPU Core2は、演算によって電流が流れるため、GPU Core2の配置された領域を中心に発熱する。なお
図6(B)に図示する期間t3で、GPU Core2はPG状態から電源電圧の供給をする状態に切り替えられているが、待機状態であるため、発熱が小さい。
【0084】
発熱によってGPU Core2の配置された領域の温度が上昇する。このGPU Core2の配置された領域の温度が上昇する間、GPU Core1をPG状態とすることで、GPU Core1の配置された領域を冷却することができる。そのため、GPU Core2の温度上昇を抑制することができる。その結果、演算装置全体として温度の上昇を抑制することができるため、ファンなどの冷却機構の削減を可能とすることができる。そして、GPU Core2の配置された領域の温度が閾値温度Tthに達すると、GPU Core1では、PG状態から電源電圧を供給する状態に切り替え、演算を行うための待機状態に切り替える(GPU Core1 Exe.)。
【0085】
やがてGPU Core2の配置された領域の発熱によってGPU Core2の配置された領域の温度が限界温度T
limに達すると、GPU Core2への電源電圧の供給を停止してPG状態とする(GPU Core2 PG)。そして、GPU Core1で演算を開始する。GPU Core1は、演算によって電流が流れるため、GPU Core1の配置された領域を中心に発熱する。なお
図6(B)に図示する期間t4で、GPU Core1はPG状態から電源電圧の供給する状態に切り替えられているが、待機状態であるため、発熱が小さい。
【0086】
発熱によって、再度GPU Core1の配置された領域の温度が上昇する。このGPU Core1の配置された領域の温度が上昇する間、GPU Core2をPG状態とすることで、GPU Core2の配置された領域を冷却することができる。そのため、GPU Core1の温度上昇を抑制することができる。その結果、演算装置全体として温度の上昇を抑制することができるため、ファンなどの冷却機構の削減を可能とすることができる。
【0087】
図7は、CPUコア1(またはCPUコア2。以下
図7の説明ではCPUコア1として説明)で実行するプログラムの演算の一部をGPUコア1(またはGPUコア2。以下
図7の説明ではGPUコア1として説明)で実行する場合の、動作の一例を説明する図である。
【0088】
CPUコア1(CPU Core1)にて、ホストプログラムが実行される(ステップS1)。このとき、GPUコア1(GPU Core1)はPG状態(電源電圧の供給が停止される状態)である。
【0089】
CPUコア1は、GPUを用いて演算を行う際に必要とされるデータ用領域を、デバイスメモリに確保するとの命令を確認した場合(ステップS2)、該データ用領域を、デバイスメモリ上に確保する(ステップS3)。
【0090】
次に、CPUコア1は、メインメモリから上記デバイスメモリへ入力データを送信する(ステップS4)。上記デバイスメモリは該入力データを受信し、該入力データを、ステップS2で確保された領域に格納する(ステップS5)。
【0091】
CPUコア1は、カーネルプログラムを起動するとの命令を確認した場合(ステップS6)、GPUコア1は、PG状態から演算を行う状態(電源電圧が供給される状態)へ切り替えられ、カーネルプログラムの実行を開始する(ステップS7)。
【0092】
GPUコア1がカーネルプログラムの実行を開始した直後、CPUコア1を、演算を行う状態からPG状態へと切り替えてもよい(ステップS8)。その場合、GPUコアがカーネルプログラムの実行を終了する直前に、CPUコア1は、PG状態から演算を行う状態へ切り替えられる(ステップS9)。ステップS8からステップS9までの期間、CPUコア1をPG状態にすることで、演算装置全体として消費電力および発熱を抑制することができる。
【0093】
GPUコア1がカーネルプログラムの実行を終了すると、出力データが上記デバイスメモリに格納される(ステップS10)。その後、GPUコア1は、演算を行う状態からPG状態へと切り替えられる。
【0094】
カーネルプログラムの実行が終了した後、CPUコア1は、デバイスメモリに格納された出力データをメインメモリへ送信するとの命令を確認した場合(ステップS11)、上記の出力データが上記メインメモリへ送信され、上記メインメモリに格納される(ステップS12)。
【0095】
CPUコア1は、デバイスメモリ上に確保されたデータ用領域を解放するとの指示を確認した場合(ステップS13)、上記デバイスメモリ上に確保された領域が解放される(ステップS14)。
【0096】
以上のステップS1からステップS14までの動作を繰り返すことにより、CPUコア1およびGPUコア1の消費電力および発熱を抑制しつつ、CPUコア1で実行するプログラムの演算の一部をGPUコア1で実行することができる。
【0097】
図8は、
図7と同様にCPUコア1(またはCPUコア2。以下
図8の説明ではCPUコア1として説明)で実行するプログラムの演算の一部をGPUコアで行う場合において、GPUコアで行う演算の種類に応じて演算に用いるGPUコアを切り替える際の動作の一例を説明する図である。ここで、一方のGPUコア(例えばGPUコア1)を、アナログ値を量子化することで2ビット以上のデジタルデータとして演算処理を行うことのできるGPUコアとし、他方のGPUコア(例えばGPUコア2)を、デジタル値を用いた演算処理を行うことのできるGPUコアとする。
【0098】
図8に示すステップS21からステップS25までの動作については、
図7に示すステップS1からステップS5までの動作の説明を参酌することができる。
【0099】
CPUコア1(CPU Core1)は、カーネルプログラムを起動するとの命令を確認した場合(ステップS26)、カーネルプログラムの種類によって、演算を実行するのに最適なGPUコアを選択する。選択されたGPUコアは、PG状態から演算を行う状態へと切り替えられ、カーネルプログラムの実行を開始する。カーネルプログラムの実行が終了した後、該GPUコアは、演算を行う状態からPG状態へと切り替えられる。なお、該GPUコアが演算を行っている期間、CPUコア1をPG状態にしてもよい。当該構成とすることで、演算装置全体として消費電力および発熱を抑制することができる。
【0100】
例えば、カーネルプログラムが、機械学習に基づく推論処理である場合(ステップS27)、GPUコア1(GPU Core1)が選択され、カーネルプログラムの実行を開始する(ステップS29)。カーネルプログラムの実行が終了すると、出力データがデバイスメモリ上に格納される(ステップS31)。その後、GPUコア1は、演算を行う状態からPG状態へと切り替えられる。
【0101】
また、例えば、カーネルプログラムが、科学技術計算である場合(ステップS28)、GPUコア2(GPU Core2)が選択され、カーネルプログラムの実行を開始する(ステップS30)。カーネルプログラムの実行が終了すると、出力データがデバイスメモリ上に格納される(ステップS32)。その後、GPUコア2は、演算を行う状態からPG状態へと切り替えられる。
【0102】
図8に示すステップS33からステップS36までの動作については、
図7に示すステップS11からステップS14までの動作の説明を参酌することができる。
【0103】
以上のステップにより、GPUコアで行う演算の種類に応じて演算に用いるGPUコアを切り替えることで、CPUコア1で実行するプログラムの演算の一部をGPUコアで行うことができる。
【0104】
図9は、より具体的な演算装置の構成を説明するためのブロック図の一例である。
【0105】
図9に図示する演算装置100Dは、CPU110、GPU120、オンチップメモリ131、DMAC(Direct Memory Access Controller)141、電源回路160、パワーマネジメントユニット(PMU)142、セキュリティー回路147、メモリコントローラ143、DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory)コントローラ144、USB(Universal Serial Bus)インターフェース回路145、ディスプレイインターフェース回路146、ブリッジ回路150、割り込み制御回路151、インターフェース回路152、バッテリー制御回路153、およびADC(Analog-to-digital converter)/DAC(Digital-to-analog converter)インターフェース回路154を有する。
【0106】
CPU110は、CPUコア111、命令キャッシュ112、データキャッシュ113、およびバスインターフェース回路114を有する。GPU120は、GPUコア121、オンサイトメモリ122、ADC/DAC123、および制御回路124を有する。
【0107】
CPUコア111は、複数のCPUコアを有する。例えば、
図1で説明したようにCPUコア11AおよびCPUコア11Bを有する構成とすればよい。命令キャッシュ112は、CPUコア11AおよびCPUコア11Bで実行する命令を一時的に記憶する回路構成とすればよい。データキャッシュ113は、CPUコア11AおよびCPUコア11Bで処理するデータまたは処理によって得られたデータを一時的に記憶する回路構成とすればよい。バスインターフェース回路114は、CPU110と、演算装置内の他の回路とを接続するためのバスとデータやアドレス等の信号を送受信することができる回路構成であればよい。
【0108】
GPUコア121は、複数のGPUコアを有する。例えば、
図1で説明したようにGPUコア33AおよびGPUコア33Bを有する構成とすればよい。オンサイトメモリ122は、GPUコア33AおよびGPUコア33Bで処理するデータおよびGPU30が実行するプログラムを一時的に記憶する回路構成とすればよい。ADC/DAC123は、処理するデータのアナログ値とデジタル値の変換を相互に行うための回路構成とすればよい。制御回路124は、GPU120内の回路を制御するための回路構成とすればよい。
【0109】
高速バス140Aは、CPU110、GPU120、オンチップメモリ131、DMAC141、パワーマネジメントユニット142、セキュリティー回路147、メモリコントローラ143、DDR SDRAMコントローラ144、USBインターフェース回路145、およびディスプレイインターフェース回路146の間の各種信号を高速で送受信するためのバスである。一例としては、AMBA(Advanced Microcontoroller Bus Artcitecture)-AHB(Advanced High-perfermance Bus)をバスとして用いることができる。
【0110】
オンチップメモリ131は、演算装置100Dが有する回路、例えばCPU110またはGPU120に入出力するデータまたはプログラムを記憶するための回路構成を有する。
【0111】
DMAC141は、ダイレクトメモリアクセスコントローラである。DMAC141を有することで、CPU110以外の周辺機器は、CPU110を介さずにオンチップメモリ131にアクセスすることができる。
【0112】
パワーマネジメントユニット142は、演算装置100Dが有するGPUコアやCPUコア等の回路のパワーゲーティングを制御するための回路構成を有する。
【0113】
セキュリティー回路147は、演算装置100Dと外部の回路との間で暗号化して信号を送受信するなど、信号の秘匿性を高めるための回路構成を有する。
【0114】
メモリコントローラ143は、演算装置100Dの外部にあるプログラムメモリからCPU110またはGPU120で実行するためのプログラムを書き込みまたは読み出しを行うための回路構成を有する。
【0115】
DDR SDRAMコントローラ144は、演算装置100Dの外部にあるDRAM等のメインメモリとの間でデータを書き込みまたは読み出しを行うための回路構成を有する。
【0116】
USBインターフェース回路145は、演算装置100Dの外部にある回路とUSB端子を介してデータの送受信を行うための回路構成を有する。
【0117】
ディスプレイインターフェース回路146は、演算装置100Dの外部にあるディスプレイデバイスとデータの送受信を行うための回路構成を有する。
【0118】
電源回路160は、演算装置100D内で用いる電圧を生成するための回路である。例えば、osトランジスタのバックゲートに与える、電気的特性を安定化するための負電圧を生成する回路である。
【0119】
低速バス140Bは、割り込み制御回路151、インターフェース回路152、バッテリー制御回路153、およびADC/DACインターフェース回路154の間の各種信号を低速で送受信するためのバスである。一例としては、AMBA-APB(Advanced Peripheral Bus)をバスとして用いることができる。高速バス140Aと低速バス140Bとの間の各種信号の送受信は、ブリッジ回路150を介して行う。
【0120】
割り込み制御回路151は、周辺機器から受け取る要求に対して、割り込み処理を行うための回路構成を有する。
【0121】
インターフェース回路152は、UART(Universal Asynchronous Receiver/Transmitter)や、I2C(Inter-Integrated Circuit)、SPI(Serial Peripheral Interface)などのインターフェースを機能させるための回路構成を有する。
【0122】
バッテリー制御回路153は、演算装置100Dの外部にあるバッテリーの充放電に関するデータを送受信するための回路構成を有する。
【0123】
ADC/DACインターフェース回路154は、演算装置100Dの外部にあるMEMS(Micro Electro Mechanical Systems)デバイス等のアナログ信号を出力するデバイスとの間でデータを送受信するための回路構成を有する。
【0124】
図10(A)、(B)は、SoC化した際の回路ブロックの配置の一例を示す図である。
図10(A)に図示する演算装置100Dのように
図9のブロック図で図示した各構成は、チップ上で領域を区切って配置することができる。
【0125】
なお
図9で説明したオンチップメモリ131や、GPU120が有するオンサイトメモリ122は、osメモリ、例えばNOSRAM等で構成することができる。つまりオンチップメモリ131とオンサイトメモリ122とは、同じ回路構成を有する。そのため、SoC化した際、
図10(B)に図示する演算装置100Eのようにオンチップメモリ131とオンサイトメモリ122とを一体化して同じ領域内に配置することも可能である。
【0126】
以上説明した本発明の一態様により、新規な演算装置および電子機器を提供することができる。又は、本発明の一態様により、消費電力の小さい演算装置および電子機器を提供することができる。又は、本発明の一態様により、高速動作が可能な演算装置および電子機器を提供することができる。又は、本発明の一態様により、発熱の抑制が可能な演算装置および電子機器を提供することができる。
【0127】
(実施の形態2)
本実施の形態では、パワーゲーティングが可能なCPUコアを有するCPUの一例について説明する。
【0128】
<<CPU190>>
図11に、CPU190の構成例を示す。CPU190は、CPUコア(CPU Core)200、L1(レベル1)キャッシュメモリ装置(L1 Cache)202、L2キャッシュメモリ装置(L2 Cache)203、バスインターフェース部(Bus I/F)205、パワースイッチ210~212、レベルシフタ(LS)214を有する。CPUコア200はフリップフロップ220を有する。
【0129】
バスインターフェース部205によって、CPUコア200、L1キャッシュメモリ装置202、L2キャッシュメモリ装置203が相互に電気的に接続される。
【0130】
外部から入力される割り込み信号(Interrupts)、CPU190が発行する信号SLEEP1等の信号に応じて、PMU193はクロック信号GCLK1、各種のPG(パワーゲーティング)制御信号(PG control signals)の生成を行う。クロック信号GCLK1、PG制御信号はCPU190に入力される。PG制御信号は、パワースイッチ210~212、フリップフロップ220を制御する。
【0131】
パワースイッチ210、211は、仮想電源線V_VDD(以下、V_VDD線と呼ぶ)への電圧VDDD、VDD1の供給をそれぞれ制御する。パワースイッチ212は、仮想電源線V_VDH(以下、V_VDH線と呼ぶ。)への電圧VDDHの供給を制御する。CPU190、PMU193には、パワースイッチを介さずに電圧VSSSが入力される。PMU193には、パワースイッチを介さずに電圧VDDDが入力される。
【0132】
電圧VDDD、VDD1はCMOS回路用の駆動電圧である。電圧VDD1は電圧VDDDよりも低く、スリープ状態での駆動電圧である。電圧VDDHはosトランジスタ用の駆動電圧であり、電圧VDDDよりも高い。
【0133】
L1キャッシュメモリ装置202、L2キャッシュメモリ装置203、バスインターフェース部205それぞれは、少なくとも1つパワーゲーティング可能なパワードメインを有する。パワーゲーティング可能なパワードメインには、1または複数のパワースイッチが設けられている。これらのパワースイッチは、PG制御信号によって制御される。
【0134】
フリップフロップ220は、レジスタに用いられる。フリップフロップ220には、バックアップ回路が設けられている。バックアップ回路は、osメモリで構成されている。以下、フリップフロップ220について説明する。
【0135】
<フリップフロップ(Flip-flop)220>
図12にフリップフロップ220の回路構成例を示す。フリップフロップ220はスキャンフリップフロップ(Scan Flip-flop)221、バックアップ回路(Buckup Circuit)222を有する。
【0136】
(スキャンフリップフロップ221)
スキャンフリップフロップ221は、ノードD1、Q1、SD、SE、RT、CK、クロックバッファ回路221Aを有する。
【0137】
ノードD1はデータ(data)入力ノードであり、ノードQ1はデータ出力ノードであり、ノードSDはスキャンテスト用データの入力ノードである。ノードSEは信号SCEの入力ノードである。ノードCKはクロック信号GCLK1の入力ノードである。クロック信号GCLK1はクロックバッファ回路221Aに入力される。スキャンフリップフロップ221のアナログスイッチは、クロックバッファ回路221AのノードCK1、CKB1に電気的に接続される。ノードRTはリセット信号(reset signal)の入力ノードである。
【0138】
信号SCEは、スキャンイネーブル信号であり、PMU193で生成される。PMU193は信号BK、RCを生成する。レベルシフタ214は信号BK、RCをレベルシフトし、信号BKH、RCHを生成する。信号BK、RCはバックアップ信号、リカバリ信号である。
【0139】
スキャンフリップフロップ221の回路構成は、
図12に限定されない。標準的な回路ライブラリに用意されているフリップフロップを適用することができる。
【0140】
(バックアップ回路222)
バックアップ回路222は、ノードSD_IN、SN11、トランジスタM11~M13、容量素子C11を有する。
【0141】
ノードSD_INは、スキャンテストデータの入力ノードであり、スキャンフリップフロップ221のノードQ1に電気的に接続される。ノードSN11は、バックアップ回路222の保持ノードである。容量素子C11はノードSN11の電圧を保持するための保持容量である。
【0142】
トランジスタM11はノードQ1とノードSN11間の導通状態を制御する。トランジスタM12はノードSN11とノードSD間の導通状態を制御する。トランジスタM13はノードSD_INとノードSD間の導通状態を制御する。トランジスタM11、M13のオンオフは信号BKHで制御され、トランジスタM12のオンオフは信号RCHで制御される。
【0143】
トランジスタM11~M13は、後述するトランジスタM1と同様に、バックゲートを有するosトランジスタである。トランジスタM11~M13のバックゲートは、電圧VBG1を供給する電源線に電気的に接続されている。
【0144】
少なくともトランジスタM11、M12がosトランジスタであることが好ましい。オフ電流が極めて小さいというosトランジスタの特長によって、ノードSN11の電圧の低下を抑えることができること、データの保持に電力を殆んど消費しないことから、バックアップ回路222は不揮発性の特性をもつ。容量素子C11の充放電によってデータを書き換えるため、バックアップ回路222は原理的には書き換え回数に制約はなく、低エネルギーで、データの書き込みおよび読み出しが可能である。
【0145】
バックアップ回路222の全てのトランジスタはosトランジスタであることが非常に好ましい。
図12(B)に示すように、シリコンCMOS回路で構成されるスキャンフリップフロップ221上にバックアップ回路222を積層することができる。
【0146】
バックアップ回路222は、スキャンフリップフロップ221と比較して素子数が非常に少ないので、バックアップ回路222を積層するためにスキャンフリップフロップ221の回路構成およびレイアウトの変更が必要ない。つまり、バックアップ回路222は、汎用性が非常に高いバックアップ回路である。また、スキャンフリップフロップ221が形成されている領域内にバックアップ回路222を設けることができるので、バックアップ回路222を組み込んでも、フリップフロップ220の面積オーバーヘッドはゼロにすることが可能である。よって、バックアップ回路222をフリップフロップ220に設けることで、CPUコア200のパワーゲーティングが可能となる。パワーゲーティングに必要なエネルギーが少ないため、CPUコア200を高効率にパワーゲーティングすることが可能である。
【0147】
バックアップ回路222を設けることによって、トランジスタM11による寄生容量がノードQ1に付加されることになるが、ノードQ1に接続される論理回路による寄生容量と比較して小さいので、スキャンフリップフロップ221の動作に影響はない。つまり、バックアップ回路222を設けても、フリップフロップ220の性能は実質的に低下しない。
【0148】
<低消費電力状態>
CPUコア200の低消費電力状態として、例えば、クロックゲーティング状態、パワーゲーティング状態、休止状態を設定することができる。PMU193は、割り込み信号、信号SLEEP1等に基づき、CPUコア200の低消費電力モードを選択する。例えば、通常動作状態からクロックゲーティング状態に移行する場合、PMU193はクロック信号GCLK1の生成を停止する。
【0149】
例えば、通常動作状態から休止状態に移行する場合は、PMU193は、電圧および/または周波数スケーリングを行う。例えば、電圧スケーリングを行う場合、PMU193は、電圧VDD1をCPUコア200に入力するため、パワースイッチ210をオフにし、パワースイッチ211をオンにする。電圧VDD1は、スキャンフリップフロップ221のデータを消失させない電圧である。周波数スケーリングを行う場合、PMU193はクロック信号GCLK1の周波数を低下させる。
【0150】
CPUコア200を通常動作状態からパワーゲーティング状態に移行する場合には、スキャンフリップフロップ221のデータをバックアップ回路222にバックアップする動作が行われる。CPUコア200をパワーゲーティング状態から通常動作状態に復帰する際には、バックアップ回路222のデータをスキャンフリップフロップ221に書き戻すリカバリ動作が行われる。
【0151】
図13に、CPUコア200のパワーゲーティングシーケンスの一例を示す。なお、
図13において、t1~t7は時刻を表している。信号PSE0~PSE2は、パワースイッチ210~212の制御信号であり、PMU193で生成される。信号PSE0が“H”/“L”のとき、パワースイッチ210はオン/オフである。信号PSE1、PSE2についても同様である。
【0152】
(通常動作(Normal Operation))
時刻t1以前は、通常動作状態である。パワースイッチ210はオンであり、CPUコア200には電圧VDDDが入力される。スキャンフリップフロップ221は通常動作を行う。このとき、レベルシフタ214は動作させる必要がないため、パワースイッチ212はオフであり、信号SCE、BK、RCは“L”である。ノードSEが“L”であるため、スキャンフリップフロップ221はノードD1のデータを記憶する。なお、
図13の例では、時刻t1において、バックアップ回路222のノードSN11は“L”である。
【0153】
(バックアップ(Backup))
時刻t1で、PMU193はクロック信号GCLK1を停止し、信号PSE2、BKを“H”にする。レベルシフタ214はアクティブになり、“H”の信号BKHをバックアップ回路222に出力する。
【0154】
バックアップ回路222のトランジスタM11がオンになり、スキャンフリップフロップ221のノードQ1のデータがバックアップ回路222のノードSN11に書き込まれる。スキャンフリップフロップ221のノードQ1が“L”であれば、ノードSN11は“L”のままであり、ノードQ1が“H”であれば、ノードSN11は“H”になる。
【0155】
PMU193は、時刻t2で信号PSE2、BKを“L”にし、時刻t3で信号PSE0を“Lにする。時刻t3で、CPUコア200の状態はパワーゲーティング状態に移行する。なお、信号BKを立ち下げるタイミングで信号PSE0を立ち下げてもよい。
【0156】
(パワーゲーティング(Power-gating))
信号PSE0が“Lになることで、V_VDD線の電圧が低下するため、ノードQ1のデータは失われる。ノードSN11は、時刻t3でのノードQ1のデータを保持し続ける。
【0157】
(リカバリ(Recovery))
時刻t4で、PMU193が信号PSE0を“H”にすることで、パワーゲーティング状態からリカバリ状態に移行する。V_VDD線の充電が開始され、V_VDD線の電圧がVDDDになった状態(時刻t5)で、PMU193は信号PSE2、RC、SCEを“H”にする。
【0158】
トランジスタM12はオンになり、容量素子C11の電荷がノードSN11とノードSDとに分配される。ノードSN11が“H”であれば、ノードSDの電圧は上昇する。ノードSEは“H”であるので、スキャンフリップフロップ221の入力側ラッチ回路にノードSDのデータが書き込まれる。時刻t6でノードCKにクロック信号GCLK1が入力されると、入力側ラッチ回路のデータがノードQ1に書き込まれる。つまり、ノードSN11のデータがノードQ1に書き込まれたことになる。
【0159】
時刻t7で、PMU193は信号PSE2、SCE、RCを“L”にし、リカバリ動作が終了する。
【0160】
osトランジスタを用いたバックアップ回路222は、動的および静的低消費電力双方が小さいため、ノーマリオフ・コンピューティングに非常に好適である。フリップフロップ220を搭載しても、CPUコア200の性能低下、動的電力の増加をほとんど発生させないようにできる。
【0161】
なお、CPUコア200は複数のパワーゲーティング可能なパワードメインを有してもよい。複数のパワードメインには、電圧の入力を制御するための1または複数のパワースイッチが設けられる。また、CPUコア200は、1または複数のパワーゲーティングが行われないパワードメインを有していてもよい。例えば、パワーゲーティングが行われないパワードメインに、フリップフロップ220、パワースイッチ210~212の制御を行うためのパワーゲーティング制御回路を設けてもよい。
【0162】
なお、フリップフロップ220の適用はCPU190に限定されない。演算装置において、パワーゲーティング可能なパワードメインに設けられるレジスタに、フリップフロップ220を適用できる。
【0163】
(実施の形態3)
本実施の形態では、上記実施の形態で説明した演算装置をSoC化した集積回路(以下、osAIチップ)について、具体的な構成例を説明する。以下では、データ保持回路にアナログ値を保持して演算処理(アナログ演算ともいう)を行うosAIチップ(アナログosAIチップ)として説明する。なおアナログosAIチップは、実施の形態4で後述する、データ保持回路にデジタル値を保持して演算処理(デジタル演算ともいう)を行うosAIチップ(プログラマブルosAIチップ)と、を1つのSoC化したosAIチップとすることができる。
【0164】
<<アナログosAIチップ>>
ここでは、アナログ演算を利用した超並列コンピューティングが可能なosAIチップ400について説明する。osAIチップ400は、全結合型ニューラルネットワーク(FCNN)に非常に有利である。osAIチップ400の構成例、動作方法例の理解を容易にするため、FCNNが回路によって構成されているとする。FCNNは、1個の隠れ層をもつ。入力層、隠れ層、出力層のユニット数はそれぞれ1024、128、32である。活性化関数にはReLU(Rectified Linear Unit)が用いられている。osAIチップ400のFCNNは、例えば、手書き文字認識、汎用AIに適用される。
【0165】
図14は、osAIチップ400の構成例を示す機能ブロック図である。
図14に示すosAIチップ(osAI chip)400は、レシーバ(RX)401、デジタル-アナログコンバータ(DAC)403、404、積和演算回路(MAC)アレイ(MACと図示)405、406、ゲートドライバ(Gate driver)407、アナログ-デジタルコンバータ(ADC)408、トランスミッタ(TX)409を有する。
【0166】
osAIチップ400のデータ伝送方式は差動伝送方式である。例えば、レシーバ401として、LVDS(小振幅差動伝送方式:Low Voltage Differential Signaling)レシーバが用いられ、トランスミッタ409としてLVDSトランスミッタが用いられる。
【0167】
リセット信号reset_nは、osAIチップ400をリセットする。
【0168】
データin_w[7:0]は、学習済みデータ(Learned data)である。例えば、重み係数を表す8ビットデジタル信号である。イネーブル信号en_la_w、クロック信号dclk_wに従い、DAC404は、データin_w[7:0]をアナログデータに変換する。ゲートドライバ407は、MACアレイ405、406へのアナログデータの書込みを制御する。ゲートドライバ407には、クロック信号gclk、パルス幅制御信号gpwc、スタートパルス信号gspが入力される。
【0169】
osAIチップ400が処理するデータは8ビットデジタルデータであり、差動伝送方式で入力される。例えば、レシーバ401として、LVDSレシーバが用いられる。レシーバ401は、差動クロック信号rx_clp、rx_clnに従い、入力データrx_dp[7:0]、rx_dn[7:0]をシングルエンド形式の8ビットデータに変換する。DAC403は、この8ビットデータをアナログデータに変換する。DAC403から出力されるアナログデータは、逐次MACアレイ405に書き込まれる。
【0170】
<MACアレイ405、406>
図15を参照して、MACアレイ405の回路構成例を説明する。MACアレイ405には、1024行144列の行列状に乗算回路40が設けられている。乗算回路40は、
図27(B)のosメモリ382と同じ回路構成である。つまり、乗算回路40は、演算回路と、重み係数を記憶する不揮発性ローカルメモリ回路双方の機能を持つ。このことにより、osAIチップ400は、GPUと比べて非常に少ないトランジスタ数によって、超並列演算を実現できる。トランジスタ数の低減は、osAIチップ400の小型化、消費電力の低減につながる。
【0171】
MACアレイ405には、乗算回路40の配列に応じて、ゲート線GL1、データ線RX1、WD1、RD1が設けられている。データ線WD1は重み係数データを乗算回路40に入力するための配線である。データ線WD1には、DAC404からアナログデータが入力される。ゲート線GL1は、重み係数データを入力する乗算回路40を選択するための信号線である、ゲート線GL1は、ゲートドライバ407によって駆動される。
【0172】
乗算回路40に重み係数データw0を書き込むことで、乗算回路40の保持ノード(読出しトランジスタのゲート)の電圧は、重み係数データに応じた電圧Vw0となる。
【0173】
データ線RX1は、CFNNが処理するデータの入力用配線である。データ線RX1には、DAC403からアナログデータが入力される。データ線RD1には、乗算回路40の演算結果が読みだされる。データ線RD1には、電流源42、オフセット回路43が電気的に接続されている。
【0174】
乗算回路40に流れる電流I0は、保持ノードの電圧Vw0とデータ線RX1の電圧Vx0の積に比例する。つまり、電流I0は、重み係数と入力データの積を表している。同様に、電流I1は、保持ノードの電圧Vw1と電圧Vx1との積に比例する。つまり乗算回路40は、重み係数データと入力データとの積を計算することができる。
【0175】
データ線RD1あたり1024個の乗算回路40が電気的に接続されている。電流源42は参照電流Irefを生成する。オフセット回路43に入力される電流Ioutは、参照電流Irefと電流Imacとの差分である。電流Imacは、1024個の乗算回路40を流れる電流の総和であり、重み係数と入力データとの積和した値を表す。参照電流IrefとImacとの差分をとることで、電流Ioutのノイズ成分を低減できる。
【0176】
オフセット回路43は、電流Ioutを電圧Voutに変換し、参照電圧Vrefと電圧Voutとの差分をとる。これにより、電圧Voutのノイズ成分が低減される。オフセット回路43は、VrefとVoutとの差分電圧を増幅して、活性化関数回路44に出力する。活性化関数回路44は処理したデータをMACアレイ406に出力する。
【0177】
なお、MACアレイ405の144列のうちの16列は、電流Ioutの生成に寄与せず積和演算に用いられる参照データを保持する。
【0178】
MACアレイ406は、MACアレイ405と同様の構成である。乗算回路40が36行128列の行列状に配置されている。MACアレイ406において、36行のうちの4行は、電流Ioutの生成に寄与せず、参照データの保持に用いられる。
【0179】
図14に示すイネーブル信号en_cmは、MACアレイ405、406の電流源42用のイネーブル信号である。イネーブル信号en_absは、MACアレイ405、406のオフセット回路43用のイネーブル信号であり、信号osp1、osn1、en_res1はMACアレイ405のオフセット回路43の制御信号であり、信号osp2、osn2、en_res2はMACアレイ406のオフセット回路43の制御信号である。
【0180】
<ADC408、トランスミッタ409>
ADC408には、MACアレイ406から32のアナログデータが並列に入力される。ADC408は、シリアルパラレル変換を行うため、出力段にレジスタを備える。ADC408は、1チャネルの8ビットデジタルデータを出力する。
【0181】
信号clk_sar、res_ser、go、stby_adcは、それぞれ、ADC408用のクロック信号、リセット信号、イネーブル信号、スタンバイ信号である。信号dclk_p2s、en_p2s_per、en_p2s_serは、それぞれ、レジスタ用のクロック信号、ラッチ信号、出力イネーブル信号である。ADC408には、32のアナログデータが入力され、8ビットデジタルデータをトランスミッタ409へ出力する。信号stby_txはトランスミッタ409用のスタンバイ信号である。
【0182】
トランスミッタ409は、信号dclk_p2sに応じて、8ビットデジタルデータを差分形式のデータtx_dp[7:0]、tx_dn[7:0]に変換し、出力し、信号dclk_p2sを差分形式のクロック信号tx_clp、tx_clnに変換し、出力する。差分データtx_dp[7:0]、tx_dn[7:0]は、FCNNが取得した32種類の推論データである。
【0183】
MACアレイ405、406の入力および出力データはアナログデータであるので、入出力データがデジタルデータである場合と比較し、MACアレイ405、406の配線数を大幅に低減することができる。乗算回路40は、乗算機能と、重み係数データの保持機能双方を備えるため、演算時にデータを読み込むことがない。つまり、乗算回路40は、データの授受の時間ペナルティーおよび電力ペナルティーが実質的にない。
【0184】
並列処理アーキテクチャをもつプロセッサとしてGPUが知られている。GPUも、CPUと同様に、演算部とメモリ部間のデータ授受が演算効率のボトルネックとされている。これに対して、osAIチップ400はこのような問題点がない。
【0185】
乗算回路40は、2Tゲインセルと同じ回路構成であり、少ないトランジスタ数によって、アナログデータの掛け算を行うことができる。したがって、多数の乗算回路40を用いて、積和演算部を構成することで、低消費電力で、超並列演算処理が可能なosAIチップ400を提供することができる。例えば、乗算回路40の数が106乃至108個程度であり、動作周波数3MHz又は30MHzである場合、osAIチップ400の演算性能は、3TOPS(Tera Operations Per Second)乃至3POPS(Peta OPS)程度である。
【0186】
(実施の形態4)
<<プログラマブルosAIチップ>>
ここで示すosAIチップ450は、プログラマブルニューラルネットワークを構成できる。osAIチップ450が演算するデータの形式はデジタルである。osAIチップ450の演算回路は、専用の不揮発性ローカルメモリ回路を有し、不揮発性ローカルメモリはosメモリで構成されている。osAIチップ450上に構成されたニューラルネットワークは、例えば、各種画像処理(例えば、ノイズ除去、高解像度化)、物体認識、汎用AIとして用いることができる。
【0187】
図16は、osAIチップ450の構成例を示す機能ブロック図である。osAIチップ(osAl chip)450は、コントローラ(Controller)460、I2Cモジュール(I2C)462、レシーバ(RX)463、トランスミッタ(TX)464、データドライバ(Data driver)466、ワードドライバ(Word driver)467を有する。コントローラ460は、演算回路アレイ470、演算部471、SRAM472、セレクタ474、475、デマルチプレクサ476を有する。
【0188】
osAIチップ450の入力データには、動作設定データ(Operation setting data)、学習済みデータ(Learned data)、パイプライン構造データ(Pipeline construction data)、演算回路アレイ470が処理するデータ(Input data)がある。学習済みデータ、パイプライン構造データは、コントローラ460のコンフィギュレーションデータとして、osAIチップ450に入力される。
【0189】
データsdaはシリアル形式の動作設定データであり、I2Cモジュール462に書き込まれる。I2Cモジュール462は、書き込まれた動作設定データをコントローラ460に出力する。信号i2c_clk、i2c_resetb、sclは、それぞれ、I2Cコントローラ用クロック信号、I2Cリセット信号、I2Cクロック信号である。信号O_SAVE、O_LOAD、OS_USEは、動作設定データのバックアップ制御に用いられる。
【0190】
データDATA0は、データドライバ466に入力される。データDATA0はコンフィグレーションデータである。データドライバ466からは信号nSTATUSが出力される。信号nSTATUSは、コンフィギュレーション状態をあらわす信号である。
【0191】
osAIチップ450へのデータ伝送方式には、シングルエンド方式と、LVDS方式とが可能である。データdin[7:0]はシングルエンド方式の入力データであり、セレクタ474に入力される。レシーバ463は、osAIチップ400のレシーバと同様の構成であり、差動クロック信号rx_clp、rx_clnに従い、差動入力データrx_dp[7:0]、rx_dn[7:0]をシングルエンド方式のデータrx_ds[7:0]に変換し、セレクタ474に出力する。信号stby_rx、hpe_rxはそれぞれ、レシーバ463のスタンバイ信号である。
【0192】
信号nCONFIG、DCLKがコントローラ460に入力され、コントローラ460は信号CONF_DONEを出力する。信号nCONFIG、DCLKはそれぞれ、コンフィギュレーション開始信号、コンフィギュレーション用クロック信号である。信号CONF_DONEはコンフィギュレーションが完了したことを表す信号である。
【0193】
信号sys_clk、sys_resetb、user_resetb、context_ex[5:0]は、それぞれ、システムクロック信号、システムリセット信号、ユーザリセット信号、外部コンテキスト信号である。信号data_enは、コントローラ460への入力データの伝送を実行する期間を設定する信号である。これらの信号は、コントローラ460に入力される。コントローラ460は信号State[2:0]、substate[2:0]を出力する。信号State[2:0]、substate[2:0]はそれぞれコントローラ460内部の状態、サブ状態をあらわす。
【0194】
演算回路アレイ470には、セレクタ475の出力データが入力される。演算回路アレイ470は処理したデータを演算部471に出力する。演算部471の出力データはSRAM472で一時的に記憶される。SRAM472から読み出されたデータは、セレクタ475、デマルチプレクサ476に出力される。セレクタ475は、セレクタ474の出力データ、SRAM472の出力データの何れか一方を演算回路アレイ470に出力する。
【0195】
デマルチプレクサ476は、データの出力形式を選択する機能をもつ。デマルチプレクサ476の一方の出力データは、シングルエンド形式のデータdout[7:0]としてosAIチップ450外部に出力される。他方の出力データはトランスミッタ464で処理され、差動形式のデータtx_dp[7:0]、tx_dn[7:0]に変換され、osAIチップ450外部に出力される。
【0196】
<演算回路アレイ470>
図17~
図21を参照して、演算回路アレイ470について説明する。
図17に示すように、演算回路アレイ470は、複数の演算回路61、複数のスイッチ回路62が行列状に設けられている。演算回路61、スイッチ回路62はプログラマブル回路である。演算回路アレイ470の処理内容に合わせて、演算回路61は回路構成される。演算回路アレイ470の処理内容に合わせて、スイッチ回路62の回路構成を変更することにより、演算回路61の接続関係が変更される。
【0197】
なお、
図17中の「U」、「D、「L」、「R」はスイッチ回路62の配線の名称であり、かつ接続方向(上、下、左、右)を表している。
【0198】
図18に演算回路61の構成例を示す。演算回路61は、入力レジスタ51、メモリ回路52、乗算回路53、加算回路54、出力レジスタ55A、55B、セレクタ56A~56D、メモリ回路57A~57Cを有する。メモリ回路52、57A~57Cは、演算回路61の不揮発性ローカルメモリ回路であり、osメモリが適用されている。
【0199】
入力レジスタ51には、データsinが入力される。入力レジスタ51はラッチ信号slatの制御でデータsinを保持する。入力レジスタ51は、保持データをデータsoutとして、セレクタ56Aに出力する。メモリ回路57Aの出力信号に従い、セレクタ56Aは、データsinとデータsoutの何れか一方を選択し、選択したデータをデータsdataとして、乗算回路53に出力する。データsoutは、演算回路61の外部に出力される。入力レジスタ51を設けることで、データsinを入力レジスタ51で一時的に保持することで、データsinをシフトしたデータsoutを出力することができる。
【0200】
メモリ回路52は、コンテキスト信号context_W[1:0]が入力される。コンテキスト信号context_W[1:0]は、信号context_ex[5:0]をデコードすることで生成される内部信号である。メモリ回路52は複数の重み係数データを記憶している。重み係数データは、コンフィギュレーションデータ(configuration data)として、メモリ回路52に書き込まれている。コンフィギュレーションデータはデータドライバ466から伝送される。
【0201】
図19(A)に示すように、メモリ回路52は、フリップフロップ71、デコーダ72、メモリセル73_0~73_3、トランジスタ77、ラッチ回路78を有する。メモリセル73_0~73_3は、osメモリ383(
図27(C)参照)と同じ回路構成であり、3個のosトランジスタでなるゲインセルである。
【0202】
信号word0~word3はワードドライバ467で生成される。信号word0~word3によって1個のメモリセルが選択され、選択されたメモリセルにコンフィギュレーションデータ(configuration data)が書き込まれる。
【0203】
フリップフロップ71は、コンテキスト信号context_W[1:0]を保持する。デコーダ72は、コンテキスト信号context_W[1:0]をデコードして、切替え信号context_W0~context_W3を生成し、出力する。切替え信号context_W0~context_W3は、重み係数データを出力するメモリセルを選択する機能を持つ。選択されたメモリセルから読み出された重みデータは、データcmoutとして、乗算回路53へ出力される。トランジスタ77は、データcmoutが読みだされる配線を電圧Vprにプリチャージする機能を持つ。信号prchに従い、トランジスタ77は当該配線をプリチャージする。
【0204】
図19(B)にメモリセルの他の構成例を示す。
図19(B)に示すメモリセル74は、メモリセル73_0の変形例であり、読出しトランジスタのゲートに2個のインバータ回路でなるラッチ回路が設けられている。例えば、これらインバータ回路は、nチャネル型Siトランジスタとpチャネル型SiトランジスタでなるCMOS回路である。
【0205】
図20にメモリ回路57Aの構成例を示す。メモリ回路57Aは、メモリセル91_0、91_1、トランジスタ92_0、92_1、93を有する。メモリ回路57Aには、コンフィギュレーションデータ(configuration data)、切替え信号context_A0、context_A1、信号wordA0、wordB0、wordA1、wordB1が入力される。
【0206】
メモリセル91_0、91_1は、それぞれ、2個のosメモリ382(
図27(B))で構成される。メモリセル91_0にコンフィギュレーションデータ“1”を書き込む場合は、信号wordA0を“H”にし、信号wordB0、wordA1、wordB1を“L”にする。メモリセル91_0にコンフィギュレーションデータ“0”を書き込む場合は、信号wordB0を“H”にし、信号wordA0、wordA1、wordB1を“L”にする。
【0207】
セレクタ56Aへ制御信号が出力される間は、トランジスタ93はオフ状態である。切替え信号context_A0、context_A1により、トランジスタ92_0、92_1の何れか一方がオン状態になる。例えば、トランジスタ92_0がオンになると、メモリセル91_0の保持データに応じた論理の制御信号が、セレクタ56Aに出力される。
【0208】
メモリ回路57B、57Cは、メモリ回路57Aと同じ回路構成をもつ。
【0209】
乗算回路53は、データsdataとデータcmoutとの積を計算し、計算結果を表すデータmoutを生成する。データmoutは、加算回路54およびセレクタ56Bに出力される。
【0210】
データainは、他の演算回路61の出力データ、または、セレクタ475の出力データである。加算回路54は、データainとデータmoutとの和を計算し、計算結果を表すデータaoutを生成する。データaoutはセレクタ56B、56Cに出力される。
【0211】
出力レジスタ55Aはセレクタ56Bの出力データを保持し、出力レジスタ55Bはセレクタ56Cの出力データを保持する。出力レジスタ55A、55Bを設けることで、信号遅延による演算エラーを防ぐことができる。信号res_rgは、出力レジスタ55A、55Bのリセット信号である。
【0212】
出力レジスタ55Aは保持データをセレクタ56Dに出力する。セレクタ56Dまたは出力レジスタ55Bの出力データが、データacoutとして演算回路61から出力される。
【0213】
演算回路アレイ470には演算回路61が行列状に配列されているので、演算回路アレイは、積和演算装置として機能させることができる。
【0214】
演算回路アレイ470の出力データは、演算部471に入力される。例えば、演算部471は、活性化関数の機能および/またはプーリング層の機能を持つ。
【0215】
<スイッチ回路62の構成>
図21(A)、
図21(B)を参照して、スイッチ回路62を説明する。
図21(A)に示すように、スイッチ回路62には、8個のスイッチ回路65が設けられている。データsoutの出力用配線66Sは、配線U、D、L、Rのうちの何れか1に電気的に接続される。データacoutの出力用配線67Aについても同様である。
【0216】
図21(B)に示すように、スイッチ回路65は、フリップフロップ80、デコーダ81、メモリセル83_0、83_1、配線87を有する。配線87は、配線L、R、UまたはDのいずれかの配線である。
図21(B)には、4ビットデータを伝えるためのスイッチ回路65を図示している。
【0217】
フリップフロップ80は、コンテキスト信号context_Cを保持する。デコーダ81は、コンテキスト信号context_Cをデコードして、切替え信号context_C0、context_C1を生成する。メモリセル83_0には信号context_C0、word0が入力され、メモリセル83_1には信号context_C1、word1が入力される。
【0218】
メモリセル83_0の書込みトランジスタは、バックゲートを有するosトランジスタである。メモリセル83_0において、書込みトランジスタ以外のトランジスタは、バックゲートを有さないnチャネル型Siトランジスタである。なお、メモリセル83_0の全てのトランジスタがosトランジスタであってもよい。メモリセル83_1についても同様である。
【0219】
信号word0によって、書込みトランジスタをオン状態にすることで、メモリセル83_0へコンフィギュレーションデータ(configuration data)が書き込まれる。切替え信号context_C0によって、メモリセル83_0が選択される場合、メモリセル83_0が保持しているコンフィギュレーションデータに応じて、配線87と演算回路61間の接続状態が決定される。
【0220】
演算回路61およびスイッチ回路62は不揮発性ローカルメモリ回路を内蔵しているため、演算回路61およびスイッチ回路62は、演算中にosAIチップ450の外部のメモリ装置にアクセスする必要がない。よって、osAIチップ450もosAIチップ400と同様に演算部とメモリ部間のデータ授受が演算効率のボトルネックにならない。演算回路61間でデータの受け渡しと、演算処理とが逐次実行されるため、演算を高効率に行える。
【0221】
演算回路61およびスイッチ回路62がマルチコンテキスト方式のプログラマブルな回路であるため、少ないハードウエア資源で、超並列演算処理を効率よく実行することが可能である。また、様々なニューラルネットワークをosAIチップ450のハードウエアによって実現することができる。
【0222】
(実施の形態5)
L1キャッシュメモリ装置202、L2キャッシュメモリ装置203は、osメモリで構成される。osメモリとは、メモリセルにosトランジスタが用いられているメモリのことを指す。例えば、L1キャッシュメモリ装置202、L2キャッシュメモリ装置203は、NOSRAM(登録商標)、またはOSSRAMで構成される。OSSRAMとは、osトランジスタで構成されるバックアップ回路が設けられているSRAMのことである。以下に、NOSRAM、OSSRAMの構成例を示す。
【0223】
<NOSRAM>
図22(A)はNOSRAMの構成例を示すブロック図である。NOSRAM240には、パワードメイン242、243、パワースイッチ245~247が設けられている。パワードメイン242には、メモリセルアレイ(Memory Cell Array)250が設けられ、パワードメイン243にはNOSRAM240の周辺回路が設けられている。周辺回路は、制御回路(Control Circuit)251、行回路(Row Circuit)252、列回路(Column Circuit)253を有する。
【0224】
外部からNOSRAM240に電圧VDDD、VSSS、VDHW、VDHR、VBG2、クロック信号GCLK2、アドレス信号Address、信号CE、WE、PSE5が入力される。信号CE、WEは、それぞれ、チップイネーブル信号、書き込みイネーブル信号である。信号PSE5はPMU193で生成され、パワースイッチ245~247のオンオフを制御する。パワースイッチ245~247は、パワードメイン243への電圧VDDD、VDHW、VDHRの入力をそれぞれ制御する。
【0225】
なお、NOSRAM240に入力される電圧、信号等は、NOSRAM240の回路構成、動作方法に応じて適宜取捨される。例えば、NOSRAM240にパワーゲーティングされないパワードメインを設け、信号PSE5を生成するパワーゲーティング制御回路を設けてもよい。
【0226】
メモリセルアレイ250は、メモリセル260、書込みワード線WWL、読出しワード線RWL、書込みビット線WBL、読出しビット線RBL、ソース線SLを有する。
【0227】
図22(B)に示すように、メモリセル260は2T1C(2トランジスタ1容量)型のゲインセルであり、ノードSN1、トランジスタM1、M2、容量素子C1を有する。トランジスタM1は書き込みトランジスタであり、バックゲートを有するosトランジスタである。トランジスタM1のバックゲートは、電圧VBG2を供給する配線BGL2に電気的に接続されている。トランジスタM2は読出しトランジスタであり、pチャネル型Siトランジスタである。容量素子C1はノードSN1の電圧を保持する保持容量である。
【0228】
電圧VDDD、VSSSはデータ“1”、“0”を表す電圧である。なお、書込みワード線WWL、読み出しワードRWLの高レベル電圧は、それぞれ、VDHW、VDHRである。
【0229】
図23(A)にメモリセルアレイ250の構成例を示す。
図23(A)に示すメモリセルアレイ250では、隣接する2列で1本のソース線が供給されている。
【0230】
メモリセル260は原理的に書き換え回数に制限はなく、データの書き換えを低エネルギーで行え、データの保持に電力を消費しない。トランジスタM1が極小オフ電流のosトランジスタであるため、メモリセル260は長時間データを保持することが可能である。よって、NOSRAM240で、L1キャッシュメモリ装置202、L2キャッシュメモリ装置203を構成することで、L1キャッシュメモリ装置202、L2キャッシュメモリ装置203を、不揮発性の低消費電力なメモリ装置とすることができる。
【0231】
メモリセル260の回路構成は、
図22(B)の回路構成に限定されない。例えば、読出しトランジスタM2は、バックゲートを有するosトランジスタ、またはnチャネル型Siトランジスタでもよい。或いは、メモリセル260は3T型ゲインセルでもよい。
図23(B)、
図23(C)に3T型ゲインセルの例を示す。
図23(B)に示すメモリセル262は、トランジスタM3~M5、容量素子C3、ノードSN3を有する。トランジスタM3~M5は、書込みトランジスタ、読出しトランジスタ、選択トランジスタである。トランジスタM3はバックゲートを有するosトランジスタであり、トランジスタM4、M5はpチャネル型Siトランジスタである。トランジスタM4、M5を、nチャネル型Siトランジスタまたはバックゲートを有するosトランジスタで構成してもよい。
図23(C)に示すメモリセル263では、3個のトランジスタはバックゲートを有するosトランジスタで構成されている。
【0232】
ノードSN3は保持ノードである。容量素子C3はノードSN3の電圧を保持するための保持容量である。容量素子C3を意図的に設けず、トランジスタM4のゲート容量などで保持容量を構成してもよい。配線PDLはソース線SLに代わる配線であり、配線PLDには固定電圧(例えば、電圧VDDD)が入力される。
【0233】
制御回路251は、NOSRAM240の動作全般を制御する機能を有する。例えば、制御回路251は、信号CE、WEを論理演算して、外部からのアクセスが書き込みアクセスであるか読み出しアクセスであるかを判断する。
【0234】
行回路252は、アドレス信号Addressが指定する選択された行の書込みワード線WWL、読出しワード線RWLを選択する機能をもつ。列回路253は、アドレス信号が指定する列の書込みビット線WBLにデータを書き込む機能、および当該列の読出しビット線RBLからデータを読み出す機能をもつ。
【0235】
<動作例>
図24を参照して、NOSRAM240の動作例を説明する。
図24は、NOSRAM240の動作例を示すタイミングチャートである。書込み動作状態(Write)、読出し動作状態(Read)、およびスタンバイ状態(Stand-by)において、パワースイッチ245~247はオンであり、パワードメイン243には電圧VDDD、VDHW、VDHRが入力される。
【0236】
<書き込み>
“H”の信号CEと、“H”の信号WEとが入力されると、NOSRAM240は書き込み動作を行う。行回路252によって選択された行のワード線WWLは“H”であり、ワード線RWLは“L”である。列回路253によって選択されたビット線WBLには、データに応じた電圧が入力される。選択されたメモリセル260のノードSN1の電圧は、データ“1”が書き込まれた場合VDDDとなり、データ“0”が書き込まれた場合VSSSとなる。
【0237】
<読み出し>
“H”の信号CEと、“L”の信号WEとが入力されると、NOSRAM240は読み出し動作を行う。列回路253は、ビット線RBLを電圧VSSSにプリチャージし、次に、ソース線SLを“H”にする。次いで、行回路252によって選択された行のワード線RWLは“L”となる。選択行のメモリセル260がデータ“0”を保持している場合、トランジスタM2のゲートには電圧VSSSが入力されているため、トランジスタM2のソースードレイン間には大きな電流が流れる。したがって、ビット線RBLは速やかに充電され、ビット線RBLの電位は上昇する。選択行のメモリセル260がデータ“1”を保持している場合、トランジスタM2のゲートには電位VDDDが入力されているため、トランジスタM2はドレイン電流を殆んど流さない。そのため、ビット線RBLはプリチャージ電圧(VSSS)を維持する。
【0238】
<スタンバイ>
書込みワード線WWL、ソース線SLは“L”であり、読出しワード線RWLは“H”である。メモリセル260のトランジスタM1はオフ状態である。
【0239】
例えば、NOSRAM240がスタンバイ状態である時間が一定時間を超えると、PMU193はパワースイッチ245~247をオフ状態にし、かつクロック信号GCLK2の入力を停止する。これにより、パワードメイン243はパワーゲーティングされ、NOSRAM240の待機電力を低減できる。
【0240】
<OSSRAM>
次に、
図25、
図26を参照して、OSSRAMについて説明する。
【0241】
図25に示すように、OSSRAM300には、パワードメイン301~303、パワースイッチ310~314が設けられている。パワードメイン301はパワーゲーティングされないパワードメインであり、パワーゲーティング制御回路330が設けられる。パワードメイン302、303はパワーゲーティング可能なパワードメインである。パワードメイン302には、メモリセルアレイ320が設けられ、パワードメイン303には、制御回路331、行回路332、列回路333、バックアップ及びリカバリドライバ335が設けられている。
【0242】
メモリセルアレイ320は、セル270、ワード線WL、ビット線BL、BLB、ゲート線OGLを有する。なお、ビット線BL、BLBはローカルビット線と呼ぶこともできる。同じ列に設けられているビット線BLとビット線BLBとでなる配線対をビット線対(BL、BLB)と呼ぶ場合がある。
【0243】
OSSRAM300には、電圧VDDD、VSSS、VDDM、VDML、VSSM、VDHB、VBG3、クロック信号GCLK3、アドドレス信号Address、信号RST、CE、GW、BWが入力される。
【0244】
信号RST、CE、GW、BWは、それぞれ、リセット信号、チップイネーブル信号、グローバル書き込みイネーブル信号、バイト書き込みイネーブル信号である。これら信号に基づき、制御回路331はOSSRAM300を制御する。制御回路331に、入力信号を一時的に格納するレジスタを設けてもよい。
【0245】
行回路332は、アドレス信号Addressが指定する選択された行のワード線WLを選択する機能をもつ。列回路333は、アドレス信号が指定する列のビット線対(BL、BLB)にデータを書き込む機能、および当該ビット線対(BL、BLB)からデータを読み出す機能をもつ。
【0246】
OSSRAM300において、各回路、各信号および各電圧は、必要に応じて、適宜取捨することができる。あるいは、他の回路または他の信号を追加してもよい。また、OSSRAM300の入力信号および出力信号の構造は、OSSRAM300の動作モード、およびメモリセルアレイ320の構成等に基づいて設定される。
【0247】
パワーゲーティング制御回路330は、PMU193が生成するPG制御信号に基づき、信号PSE11~PSE13、ならびに行回路332、列回路333、バックアップ及びリカバリドライバ335の制御信号を生成する。信号PSE11~PSE13は、パワースイッチ310~314のオンオフを制御する。パワースイッチ310、311は、それぞれ、電圧VDDD、VDHBのパワードメイン303への入力を制御する。パワースイッチ312~314はそれぞれ電圧VDDM、VDML、VSSMのパワードメイン302への入力を制御する。
【0248】
(セル270)
図26(A)にセル270の回路構成例を示す。セル270は、メモリセル271、バックアップ回路272を有する。メモリセル271は、標準的な6T(トランジスタ)SRAMセルと同じ回路構成であり、双安定回路275、トランジスタMT1、MT2を有する。双安定回路275は、ワード線WL、ビット線BL、BLB、仮想電源線V_VDM(以下、V_VDM線と呼ぶ)、V_VSM(以下、V_VSM線と呼ぶ)に電気的に接続されている。なお、V_VDM線は、パワースイッチ312、313によって、電圧の入力が制御される仮想電源線であり、V_VSM線は、パワースイッチ314によって、電圧の入力が制御される仮想電源線である。電圧VDHBは、ゲート線OGLの高レベル電圧であり、電圧VDDMよりも高い電圧である。
【0249】
図26(A)の例では、双安定回路275は、2個のCMOSインバータ回路でなるラッチ回路である。ノードQ、Qbはそれぞれ、2個のCMOSインバータの入力端子と出力端子との接続部であり、相補データの保持ノードである。ノードQ/Qbが“H”/“L”になる、またはノードQ/Qbが“L”/“H”になることで、双安定回路275は安定状態となる。トランジスタMT1、MT2は転送トランジスタである。トランジスタMT1によって、ビット線BLとノードQ間の導通状態が制御され、トランジスタMT2によってビット線BLBとノードQb間の導通状態が制御される。
【0250】
バックアップ回路272は、メモリセル271のデータをバックアップするための回路である。各セル270にバックアップ回路272を設けることで、パワードメイン302のパワーゲーティングが可能になる。
【0251】
バックアップ回路272は、トランジスタM21、M22、容量素子C21、C22を有する。つまり、バックアップ回路272は2個の1T1C型メモリセルを有しており、これらメモリセルの保持ノードが、ノードSN21、SN22である。
【0252】
トランジスタM21、M22はバックゲートを有するosトランジスタであり、これらバックゲートには電圧VBG3が入力される。トランジスタM21、M22がosトランジスタであるので、バックアップ回路272はデータを長時間保持することが可能である。トランジスタM21、M22がosトランジスタであることで、Siトランジスタでなるメモリセル271にバックアップ回路272を積層して設けることができるので、バックアップ回路272を設けたことによるセル270の面積オーバーヘッドを抑えることができる。
【0253】
<低消費電力状態>
OSSRAM300には4種類の低消費電力状態、(1)ビット線フローティング状態、(2)休止状態、(3)セルアレイドメインPG状態、(4)全ドメインPG状態がある。パワーゲーティング制御回路330は、PMU193のPG信号等にもとづき、低消費電力状態でのOSSRAM300の動作を管理する。
【0254】
(ビット線フローティング状態)
ビット線フローティング状態では、ビット線対(BL、BLB)をフローティング状態にする。メモリセル271のデータは消失しない。
【0255】
(スリープ状態)
スリープ状態では、パワードメイン302に電圧VDDMよりも低い電圧VDMLを供給する。電圧VDMLは、メモリセル271のデータが消失しない大きさである。ビット線対(BL、BLB)はフローティング状態である。
【0256】
(セルアレイドメインPG状態)
パワースイッチ312~314をオフにして、パワードメイン302への電圧VDDM、VDML、VSSMの供給を停止する。ビット線対(BL、BLB)はフローティング状態である。メモリセル271のデータは消失する。
【0257】
(全ドメインPG状態)
全ドメインPG状態とは、パワーゲーティング可能な全てのドメインをパワーゲーティングする状態ある。パワースイッチ310~314はオフである。
【0258】
4種類の低消費電力状態は消費電力削減効果が得られる損益分岐時間(BET)が異なる。BETの異なる複数の低消費電力状態を有することで、OSSRAM300の消費電力を効率良く低減することができる。
【0259】
<パワーゲーティングシーケンス>
図26(B)に、パワードメイン302に対するパワーゲーティングシーケンスの一例を示す。
図26(B)において、t1、t2等は時刻を表している。
【0260】
(通常動作(Normal Operation))
時刻t1以前では、OSSRAM300の状態は、通常動作状態(書き込み状態または読み出し状態)である。OSSRAM300はシングルポートSRAMと同様の通常動作を行う。パワースイッチ310~312、314はオンであり、パワースイッチ313はオフである。
【0261】
(バックアップ(Backup))
パワーゲーティング制御回路330の制御信号に基づき、時刻t1でバックアップ動作が開始する。バックアップ及びリカバリドライバ335は、全配線OGLを“H”にする。ここでは、時刻t1でノードQ/Qbは“H”/“L”であり、ノードSN21/SN22は“L”/“H”であるので、トランジスタM21、M22がオンになると、ノードSN21の電圧はVSSMからVDDMに上昇し、ノードSN22の電圧はVDDMからVSSMに低下する。時刻t2で配線OGLを“L”にすることで、バックアップ動作が終了する。ノードSN21/SN22には、時刻t1でのノードQ/Qbのデータが書き込まれる。
【0262】
(パワーゲーティング(Power-gating))
時刻t2で、パワーゲーティング制御回路330が信号PSE12を“L”にしてパワースイッチ312、314をオフすることで、パワードメイン302のパワーゲーティングが開始する。V_VDM線とV_VSM線の電圧差が低下することで、メモリセル271は非アクティブになる。メモリセル271のデータは消失するが、バックアップ回路272はデータを保持し続ける。
【0263】
例えば、パワードメイン302が電源オフである間、ビット線対(BL、BLB)をフローティング状態にする。そのための制御信号を、パワーゲーティング制御回路330は列回路333に送信する。
【0264】
(リカバリ(Recovery))
行回路332、列回路333、バックアップ及びリカバリドライバ335は、パワーゲーティング制御回路330の制御信号に従い、リカバリ動作を行う。リカバリ動作では、双安定回路275は、ノードQ/Qbのデータを検知するためのセンスアンプとして機能する。まず、ノードQ、Qbのリセット動作が行われる。時刻t3で、列回路333は、全ビット線対(BL、BLB)のプリチャージ動作を行う。全ビット線対(BL、BLB)は電圧Vpr2にプリチャージされる。行回路332は、全ワード線WLを選択状態にする。V_VDM線、V_VSM線は電圧Vpr2にプリチャージされ、ノードQ、Qbの電圧はVpr2に固定される。
【0265】
時刻t4で、バックアップ及びリカバリドライバ335は、全配線OGLを“H”にする。トランジスタM21、M22がオンになる。容量素子C21の電荷がノードQ、ノードSN21に分配され、容量素子C22の電荷がノードQb、ノードSN22に分配され、ノードQとノードQbとに電圧差が生じる。
【0266】
時刻t5で、パワースイッチ312、314をオンにして、パワードメイン302への電圧VDDM、VSSMの入力を再開する。双安定回路275はアクティブになると、ノードQとノードQbの電圧差を増幅する。最終的にノードQ、SN21の電圧はVDDMとなり、ノードQb、SN22の電圧はVSSMとなる。つまり、ノードQ/Qbの状態は、時刻t1での状態(“H”/“L”)に復帰する。時刻t7でリカバリ動作が終了する。
【0267】
L1キャッシュメモリ装置202と、L2キャッシュメモリ装置203の構成は異なっていてもよい。例えば、L1キャッシュメモリ装置202にはOSSRAMを用い、L2キャッシュメモリ装置203にはNOSRAMを用いる。または、L1キャッシュメモリ装置202には、メモリセル260で構成されるNOSRAMを用い、L2キャッシュメモリ装置203には、メモリセル263で構成されるNOSRAMを用いる。この場合、L2キャッシュメモリ装置203において、メモリセルアレイは、周辺回路上に積層することが可能となるので、L2キャッシュメモリ装置203の面積を小さくでき、大容量化に有利である。メモリセル260は読出しトランジスタがSiトランジスタであるので読み出し速度が速いため、L1キャッシュメモリ装置202に好適である。
【0268】
<osAIチップ390>
osAIチップ390は、osトランジスタが用いられたAIの演算処理が可能なICチップである。osAIチップ390が使用するデータには、重み係数データ(学習可能なデータ)、画像データ、教師データなどがある。osAIチップ390の演算結果は、例えば、推論データとして出力される。
【0269】
osAIチップ390の特長は、演算に用いられるデータ(代表的には、重み係数データ)を記憶するメモリ回路が演算回路と近接して設けられていることである。このメモリ回路に、osトランジスタが用いられている。本明細書では、osトランジスタを有するメモリを、「osメモリ」と呼ぶ場合がある。
図27(A)~
図27(D)にosメモリの回路構成例を示す。
【0270】
図27(A)に示すosメモリ381は、2Tゲインセルと同じ回路構成であり、書込みトランジスタMW1、読出しトランジスタMR1、容量素子CS1を有する。読出しトランジスタMR1のゲートが保持ノードSNである。書込みトランジスタMW1、読出しトランジスタMR1はそれぞれosトランジスタである。
【0271】
osメモリ381のノードSNには、書込みトランジスタMW1を介して電荷が充電される。osトランジスタが極小オフ電流であることから、書込みトランジスタMW1は、ノードSNの電荷を殆んどリークさせない。従って、osメモリ381は不揮発性メモリ回路として機能でき、かつ多値化が容易である。よって、osメモリ381を不揮発性アナログメモリ回路として、osAIチップ390に設けることができる。
【0272】
書込みトランジスタMW1のバックゲート電圧を変化させることで、書込みトランジスタMW1のしきい値電圧を変化させることができる。書込みトランジスタMW1はバックゲートの無いosトランジスタでもよい。読出しトランジスタMR1についても同様である。
【0273】
金属酸化物は、エネルギーギャップが大きく、電子が励起されにくいこと、ホールの有効質量が大きいことなどから、osトランジスタは、一般的なSiトランジスタと比較して、アバランシェ崩壊等が生じにくい場合がある。従って、例えばアバランシェ崩壊に起因するホットキャリア劣化等を抑制できる。ホットキャリア劣化を抑制できることで、高いドレイン電圧でosトランジスタを駆動することができる。従って、書込みトランジスタMW1がosトランジスタであることで、ノードSNに高い電圧を印加することが可能になるため、osメモリ381の多値化が容易である。
【0274】
図27(B)に示すosメモリ382はosメモリ381の変形例であり、読出しトランジスタMR2がnチャネル型Siトランジスタである。読出しトランジスタMR2はpチャネル型Siトランジスタでもよい。
【0275】
図27(C)に示すosメモリ383は、3トランジスタ型ゲインセルであり、書込みトランジスタMW3、読出しトランジスタMR3、選択トランジスタMS3、容量素子CS3を有する。書込みトランジスタMW3、読出しトランジスタMR3、選択トランジスタMS3はそれぞれバックゲートを有するosトランジスタである。これらトランジスタの一部、または全てがバックゲートの無いosトランジスタでもよい。
【0276】
図27(D)に示すosメモリ384は、osメモリ383の変形例である。読出しトランジスタMR4、選択トランジスタMS4はそれぞれnチャネル型Siトランジスタである。読出しトランジスタMR4、選択トランジスタMS4の一方または双方はpチャネル型Siトランジスタでもよい。
【0277】
容量素子CS1の充放電によってデータを書き換えるため、osメモリ381は原理的には書き換え回数に制約はなく、低エネルギーで、データの書き込みおよび読み出しが可能であり、データの保持に電力を消費しない。よって、osメモリ381をosAIチップ390に組み込むことで、低消費電力なAIチップを提供することが可能になる。osメモリ382~384もosメモリ381と同様の特長を有する。
【0278】
図28(A)に、osAIチップ390の回路部391Aの積層構造を模式的に示す。回路部391Aは積層構造をもち、Siトランジスタ層1011、配線層1012、osトランジスタ層1013に大別される。osトランジスタ層1013をSiトランジスタ層1011に積層して設けることができるため、osAIチップ390の面積を小さくすることができる。
【0279】
回路部391B(
図28(B)参照)、回路部391C(
図28(C)参照)のように、複数のosトランジスタ層1013を設けてもよい。回路部391Cは、回路部391A、391Bと異なり、Siトランジスタ層1011が設けられていない。回路部391Cのosトランジスタ層1013の数は、1層の場合がある。
【0280】
osAIチップ390のより具体的な回路構成は、実施の形態3および実施の形態4で説明した。前述したように、osAIチップ390の演算部を少ない素子数、配線数で演算部を構成することができるため、集積化に有利である。演算回路の集積化により、並列処理数を増やすことができるので、osAIチップ390は、市販のGPUチップと同様、もしくはそれ以上の演算性能を実現できる可能性をもつ。
【0281】
例えば、市販のGPUチップの動作周波数が3GHz、乗算の並列処理数が103である場合、GPUチップの演算性能は3×1012OPS=3Tera OPS(TOPS)である。例えば、osAIチップ390は、106乃至108個程度の演算回路を設けることができ、乗算の並列処理数を106乃至108とすることができる。この場合、osAIの動作周波数を3MHz又は30MHzに低下しても、osAIチップ390の演算性能はGPUと同程度である。動作周波数の低減は、ICチップの動的消費電力の削減に非常に有効である。
【0282】
また、AIの演算など大規模な演算処理を行うため、GPUチップは高い周波数で駆動する。そのため、大電力を消費し、高温となる。osAIチップ390は、動作周波数を低減できるため、osAIチップ390の発熱を抑えることができる。したがって、演算装置において、osAIチップ390の放熱機構をGPUチップの放熱機構よりも簡素にすることができる。
【0283】
上掲したように、GPUチップでは、演算性能の向上と、省電力化および発熱抑制との関係はトレードオフの関係である。これに対して、osAIチップ390は、動作周波数を低減しても演算性能の劣化を少なくできる。したがって、osAIチップ390は、時間および電力に対して高効率に、大規模な演算処理を実行することができる。
【0284】
(実施の形態6)
本実施の形態では、上記実施の形態に記載の演算装置を適用することが可能な電子機器、移動体、演算システムについて、
図29乃至
図32を参照しながら説明する。
【0285】
図29(A)は、移動体の一例として自動車の外観図を図示している。
図29(B)は、自動車内でのデータのやり取りを簡略化した図である。自動車590は、複数のカメラ591等を有する。また、自動車590は、赤外線レーダー、ミリ波レーダー、レーザーレーダーなど各種センサ(図示せず)などを備える。
【0286】
自動車590において、カメラ591等に上記osAIチップ390を用いることができる。自動車590は、カメラ591が複数の撮像方向592で得られた複数の画像を上記実施の形態で説明したosAIチップ390で処理し、バス593等を介してホストコントローラ594等により複数の画像をまとめて解析することで、ガードレールや歩行者の有無など、周囲の交通状況を判断し、自動運転を行うことができる。また、道路案内、危険予測などを行うシステムに用いることができる。
【0287】
osAIチップ390では、得られた画像データをニューラルネットワークなどの演算処理を行うことで、例えば、画像の高解像度化、画像ノイズの低減、顔認識(防犯目的など)、物体認識(自動運転の目的など)、画像圧縮、画像補正(広ダイナミックレンジ化)、レンズレスイメージセンサの画像復元、位置決め、文字認識、反射映り込み低減などの処理を行うことができる。
【0288】
なお、上述では、移動体の一例として自動車について説明しているが、移動体は自動車に限定されない。例えば、移動体としては、電車、モノレール、船、飛行体(ヘリコプター、無人航空機(ドローン)、飛行機、ロケット)なども挙げることができ、これらの移動体に本発明の一態様のコンピュータを適用して、人工知能を利用したシステムを付与することができる。
【0289】
図30(A)は、携帯型電子機器の一例を示す外観図である。
図30(B)は、携帯型電子機器内でのデータのやり取りを簡略化した図である。携帯型電子機器595は、プリント配線基板596、スピーカー597、カメラ598、マイクロフォン599等を有する。
【0290】
携帯型電子機器595において、プリント配線基板596に上記osAIチップ390を設けることができる。携帯型電子機器595は、スピーカー597、カメラ598、マイクロフォン599等で得られる複数のデータを上記実施の形態で説明したosAIチップ390を用いて処理・解析することで、ユーザの利便性を向上させることができる。また、音声案内、画像検索などを行うシステムに用いることができる。
【0291】
osAIチップ390では、得られた画像データをニューラルネットワークなどの演算処理を行うことで、例えば、画像の高解像度化、画像ノイズの低減、顔認識(防犯目的など)、物体認識(自動運転の目的など)、画像圧縮、画像補正(広ダイナミックレンジ化)、レンズレスイメージセンサの画像復元、位置決め、文字認識、反射映り込み低減などの処理を行うことができる。
【0292】
図31(A)に示す携帯型ゲーム機1100は、筐体1101、筐体1102、筐体1103、表示部1104、接続部1105、操作キー1107等を有する。筐体1101、筐体1102および筐体1103は、取り外すことが可能である。筐体1101に設けられている接続部1105を筐体1108に取り付けることで、表示部1104に出力される映像を、別の映像機器に出力することができる。他方、筐体1102および筐体1103を筐体1109に取り付けることで、筐体1102および筐体1103を一体化し、操作部として機能させる。筐体1102および筐体1103の基板に設けられているチップなどに先の実施の形態に示すosAIチップ390を組み込むことができる。
【0293】
図31(B)はUSB接続タイプのスティック型の電子機器1120である。電子機器1120は、筐体1121、キャップ1122、USBコネクタ1123および基板1124を有する。基板1124は、筐体1121に収納されている。例えば、基板1124には、メモリチップ1125、コントローラチップ1126が取り付けられている。基板1124のコントローラチップ1126などに先の実施の形態に示すosAIチップ390を組み込むことができる。
【0294】
図31(C)は人型のロボット1130である。ロボット1130は、センサ2101乃至2106、および制御回路2110を有する。例えば、制御回路2110には、先の実施の形態に示すosAIチップ390を組み込むことができる。
【0295】
上記実施の形態で説明したosAIチップ390は、電子機器に内蔵する代わりに、電子機器と通信を行うサーバーに用いることもできる。この場合、電子機器とサーバーによって演算システムが構成される。
図32に、システム3000の構成例を示す。
【0296】
システム3000は、電子機器3001と、サーバー3002によって構成される。電子機器3001とサーバー3002間の通信は、インターネット回線3003を介して行うことができる。
【0297】
サーバー3002には、複数のラック3004を有する。複数のラックには、複数の基板3005が設けられ、当該基板3005上に上記実施の形態で説明したosAIチップ390を搭載することができる。これにより、サーバー3002にニューラルネットワークが構成される。そして、サーバー3002は、電子機器3001からインターネット回線3003を介して入力されたデータを用いて、ニューラルネットワークの演算を行うことができる。サーバー3002による演算の結果は必要に応じて、インターネット回線3003を介して電子機器3001に送信することができる。これにより、電子機器3001における演算の負担を低減することができる。
【0298】
本実施の形態は、他の実施の形態の記載と適宜組み合わせることができる。
【符号の説明】
【0299】
SC1:状態、SC2:状態、SG1:状態、SG2:状態、SPG1:状態、SPG2:状態、SPG3:状態、SPG4:状態、10:ホスト、10A:CPU、10B:CPU、11A:CPUコア、11B:CPUコア、12:メモリ、13:データ保持回路、20:バス、30:GPU、30_1:GPU、30_n:GPU、30A:GPU、30B:GPU、31:デバイスメモリ、32A:共有メモリ、32B:共有メモリ、33A:GPUコア、33B:GPUコア、34A:演算ユニット、34B:演算ユニット、35A:データ保持部、35B:データ保持部、40:乗算回路、42:電流源、43:オフセット回路、44:活性化関数回路、51:入力レジスタ、52:メモリ回路、53:乗算回路、54:加算回路、55A:出力レジスタ、55B:出力レジスタ、56A:セレクタ、56B:セレクタ、56C:セレクタ、56D:セレクタ、57A:メモリ回路、57B:メモリ回路、57C:メモリ回路、61:演算回路、62:スイッチ回路、65:スイッチ回路、66S:配線、67A:配線、71:フリップフロップ、72:デコーダ、73_0:メモリセル、73_1:メモリセル、73_2:メモリセル、73_3:メモリセル、74:メモリセル、77:トランジスタ、78:ラッチ回路、80:フリップフロップ、81:デコーダ、83_0:メモリセル、83_1:メモリセル、87:配線、91_0:メモリセル、91_1:メモリセル、92_0:トランジスタ、92_1:トランジスタ、93:トランジスタ、100A:演算装置、100B:演算装置、100C:演算装置、100D:演算装置、100E:演算装置、110:CPU、111:CPUコア、112:命令キャッシュ、113:データキャッシュ、114:バスインターフェース回路、120:GPU、121:GPUコア、122:オンサイトメモリ、123:ADC/DAC、124:制御回路、131:オンチップメモリ、140A:高速バス、140B:低速バス、141:DMAC、142:パワーマネジメントユニット、143:メモリコントローラ、144:DDR SDRAMコントローラ、145:USBインターフェース回路、146:ディスプレイインターフェース回路、147:セキュリティー回路、150:ブリッジ回路、151:割り込み制御回路、152:インターフェース回路、153:バッテリー制御回路、154:ADC/DACインターフェース回路、160:電源回路、190:CPU、193:PMU、200:CPUコア、202:L1キャッシュメモリ装置、203:L2キャッシュメモリ装置、205:バスインターフェース部、210:パワースイッチ、211:パワースイッチ、212:パワースイッチ、214:レベルシフタ、220:フリップフロップ、221:スキャンフリップフロップ、221A:クロックバッファ回路、222:バックアップ回路、240:NOSRAM、242:パワードメイン、243:パワードメイン、245:パワースイッチ、246:パワースイッチ、247:パワースイッチ、250:メモリセルアレイ、251:制御回路、252:行回路、253:列回路、260:メモリセル、262:メモリセル、263:メモリセル、270:セル、271:メモリセル、272:バックアップ回路、275:双安定回路、300:OSSRAM、301:パワードメイン、302:パワードメイン、303:パワードメイン、310:パワースイッチ、311:パワースイッチ、312:パワースイッチ、313:パワースイッチ、314:パワースイッチ、320:メモリセルアレイ、330:パワーゲーティング制御回路、331:制御回路、332:行回路、333:列回路、335:バックアップ及びリカバリドライバ、381:osメモリ、382:osメモリ、383:osメモリ、384:osメモリ、390:osAIチップ、391A:回路部、391B:回路部、391C:回路部、400:osAIチップ、401:レシーバ、403:DAC、404:DAC、405:MACアレイ、406:MACアレイ、407:ゲートドライバ、408:ADC、409:トランスミッタ、450:osAIチップ、460:コントローラ、462:I2Cモジュール、463:レシーバ、464:トランスミッタ、466:データドライバ、467:ワードドライバ、470:演算回路アレイ、471:演算部、472:SRAM、474:セレクタ、475:セレクタ、476:デマルチプレクサ、590:自動車、591:カメラ、592:撮像方向、593:バス、594:ホストコントローラ、595:携帯型電子機器、596:プリント配線基板、597:スピーカー、598:カメラ、599:マイクロフォン、1100:携帯型ゲーム機、1101:筐体、1102:筐体、1103:筐体、1104:表示部、115:接続部、1107:操作キー、1108:筐体、1109:筐体、1120:電子機器、1121:筐体、1122:キャップ、1123:USBコネクタ、1124:基板、1125:メモリチップ、1126:コントローラチップ、1130:ロボット、2101:センサ、2106:センサ、2110:制御回路、3000:システム、3001:電子機器、3002:サーバー、3003:インターネット回線、3004:ラック、