以下、図を参照して本発明の具体的な実施例を、より詳細に説明する。
〔実施例1〕
まず、図1は本発明の原理を説明するのに好適な実施例である。図1の(a)は本発明の実施例によるインバータの回路図である。図中、LはCMOSインバータであり、PチャネルMOSトランジスタMPとNチャネルMOSトランジスタMNからなる。本発明は、後述のように、インバータだけでなくNAND、NORなどの論理ゲートあるいは論理ゲート群にも適用できるが、ここでは簡単のためインバータの場合について説明する。SCおよびSSはスイッチ、RCおよびRSは抵抗であり、本実施例の特徴は、インバータLの電源端子VCL、VSLと電源VCC、VSSの間にそれぞれスイッチSC、SSと抵抗RC、RSが並列に挿入されていることであり、これにより以下に説明するようにサブスレッショルド電流低減が実現される。
高速動作が要求される時間帯には、スイッチSC、SSをオンにし、VCC、VSSを直接インバータLに印加する(以下、高速動作モードという)。MP、MNのしきい電圧(VT)を低く設定しておけば、高速動作させることができる。この時、前述のようにインバータLにはサブスレッショルド電流が流れるが、これは普通、動作電流すなわち負荷の充放電電流に比べて十分小さいので問題にならない。
一方、低消費電力が要求される時間帯には、スイッチSC、SSをオフにして、抵抗RC、RSを通してインバータに電源を供給する(以下、低消費電力モードという)。サブスレッショルド電流が抵抗を通して流れることによる電圧降下により、VCLはVCCよりも低下し、VSLはVSSよりも上昇する。図2に示すように、この電圧降下により、次の2種の機構によってサブスレッショルド電流が減少する。尚、入力信号INが低レベル(VSS)の場合のMNについて説明するが、INが高レベル(VCC)の場合のMPも同様である。
(i)ソース電位VSLが上昇するため、バックゲートバイアスVBS=VSS−VSL=−VMがかかり、しきい電圧がVT0からVT1まで上昇する。しきい電圧の上昇分は、
である。これにより、サブスレッショルド電流はIL0からIL1まで減少する。減少率は、
である。ここでKは基板効果係数である。例えば、VM=0.3V、K=0.4√V、S=100mV/decade、2ψ=0.64Vならば、サブスレッショルド電流は21%に低減される。
(ii)ソース電位VSLが上昇するため、ゲート・ソース間電圧VGS=VSS−VSL=−VMが負になる。これにより、サブスレッショルド電流はさらにIL1からIL2まで減少する。減少率は、
である。例えば、VM=0.3V、S=100mV/decadeならば、サブスレッショルド電流は0.1%に低減される。
(i)(ii)の効果を併せると、
となる。例えば、VM=0.3Vならば0.02%になる。ここで、VMは方程式
の解である。
尚、インバータLのMOSトランジスタMP、MNのバックゲートはそれぞれのソース(VCL、VSL)に接続してもよいが、(i)の効果を得るためには図1(a)のようにVCC、VSSに接続する方が望ましい。
図3にサブスレッショルド電流低減効果を示す。ここでは、将来の超低電圧動作の超高集積LSIを想定し、バックゲートバイアスが0のときのしきい電圧VT0=0.05〜0.15V、LSI全体のオフ状態のトランジスタのチャネル幅の総和W=100mである場合について計算している。抵抗を大きくするほどVMが大きくなり、効果が大きくなる。極端な場合として、抵抗が無限大、すなわち抵抗を除去することもできる。
ただし、図1(b)に示すように、出力信号OUTの論理振幅は入力信号INの論理振幅よりも小さくなるので、多段接続の際は信号の電圧レベルに注意しなければならないが、これについては後述する。
また、本発明にはしきい電圧のバラツキを自動的に補償する作用がある。すなわち、しきい電圧が低くサブスレッショルド電流が大きいときは、抵抗による電圧降下VMが大きくなり、しきい電圧が高くサブスレッショルド電流が小さいときは、VMが小さくなる。いずれの場合も、電流の変動が抑制される。図3から明らかなように、サブスレッショルド電流の変動は抵抗値が大きいほど小さい。例えば、抵抗値を3kΩ以上にすれば、しきい電圧が±0.05Vばらついても、サブスレッショルド電流ILの変動は±20%以内に抑えられる。
〔実施例2〕
次に、実施例1で説明したスイッチと抵抗の具体的な実現方法を示す。図4は、スイッチと抵抗とをともにMOSトランジスタで実現した例である。
スイッチ用のMOSトランジスタMC1とMS1は、コンダクタンスの大きいMOSトランジスタであり、それぞれ図1のスイッチSC、SSに相当する。高速動作モードの時は、信号φCを低レベル、φSを高レベルにすることによって、MC1、MS1はオンになる。φC、φSの電圧レベルは、それぞれVSS、VCCでもよいが、MC1、MS1のコンダクタンスをより大きくするために、φCをVSSよりも低く、φSをVCCよりも高くしてもよい。そのための電圧は、チップの外部から与えるか、EEPROMやDRAMで周知のオンチップ昇圧回路で発生させればよい。
低消費電力モードのときは逆に、φCを高レベル、φSを低レベルにすることによって、MC1、MS1はオフになる。この時は、電流を確実に抑止できるようにしなければならない。そのためには、次の2通りの方法がある。第1の方法は、外部電圧またはオンチップ昇圧回路によって、φCをVCCよりも高く、φSをVSSよりも低くすることである。第2の方法は、MC1、MS1として、インバータLに用いられているものよりもしきい電圧が高い(よりエンハンスメントの)トランジスタを用いることである。第1の方法は、しきい電圧の異なるトランジスタを作るための工程が不要であるという利点がある。一方、第2の方法は、外部電圧を受ける端子あるいはオンチップ昇圧回路が不要であるから、面積の点で有利である。
MOSトランジスタMC2とMS2はコンダクタンスの小さいMOSトランジスタであり、それぞれ図1の抵抗RC、RSに相当する。これらのトランジスタは、ゲートがそれぞれVSS、VCCに接続されており、常にオンである。これらのトランジスタはオフにする必要がないので、そのしきい電圧は低くても差し支えない。
尚、MC2としてNチャネルMOSトランジスタを用い、MS2としてPチャネルMOSトランジスタを用いることもできる。例えば、MC2のNチャネルMOSトランジスタを例にとると、そのゲートとドレインを互いに接続した端子をVCC端子に接続し、そのソースをVCL端子に結線した、いわゆるダイオード接続でも実効的に抵抗を実現できる。該NチャネルMOSトランジスタのチャネル幅としきい電圧を調整することによって、たとえば待機時にはVCLの電圧をVCCから該NチャネルMOSトランジスタのしきい電圧だけ降下した電圧に設定でき、サブスレッショルド電流を大幅に低減できる。
次に、本発明が適用される時間帯について述べる。図5に信号φC、φSのタイミングの例を示す。
図5(a)および(b)は、本発明をメモリLSIに適用した場合である。メモリLSIは、外部からのクロック信号であるチップエネーブル信号CE ̄(補信号)が低レベルのとき動作状態、高レベルのとき待機状態になる。図5(a)の場合は、内部信号φCは、CE ̄の立下りに同期して低レベルになり、CE ̄の立上りからやや遅れて高レベルになる。内部信号φSはその逆である。従って、図中のaの時間帯は高速動作モード、bの時間帯は低消費電力モードになる。一般に多数のメモリLSIを用いたメモリ装置では、動作状態にあるLSIは少数であり、大多数のLSIは待機状態にある。従って、待機状態にあるLSIを本発明を用いて低消費電力にすれば、メモリ装置全体の低消費電力化に大きく寄与する。なお、CE ̄の立上りから低消費電力モードに入るまでに遅延を設ける理由は、この間にLSIの内部回路のリセットが行われるからである。
図5(b)はさらに低消費電力化を図った例である。ここでは、CE ̄が変化した直後のみを高速動作モードにしている。すなわち、CE ̄が低レベルになった直後はデータの読出し/書込みが行なわれ、CE ̄が高レベルになった直後は内部回路のリセットが行なわれるので、これらの時間帯は本発明による高速動作モードとし、その他の時間帯は本発明による低消費電力モードにしている。なお、ここには記載されていないが、アドレス信号が変化したときに高速動作モードに入るようにしてもよい。
図5(c)は本発明をマイクロプロセッサに適用した例である。通常動作状態では、クロックCLKが印加されている。このとき、信号φCは低レベル、φSは高レベルであり、高速動作モードである。マイクロプロセッサが待機状態またはデータ保持状態になると、クロックCLKが停止し、信号BUが高レベルになる。これに同期して、φCは高レベル、φSは低レベルになり、低消費電力モードになる。これにより、マイクロプロセッサの消費電力が低減され、電池などの小容量の電源で長時間バックアップすることが可能になる。
図6は、図4の回路を実現するためのデバイス構造の一例である。この図のポリシリコン130、131、132、133がそれぞれ図4のMC2、MP、MN、MS2のゲートに相当する(MC1、MS1はここには記載されていない)。
注意すべきことは、MC2とMPとが同一のnウェル101(n+拡散層120を介してVCCに接続されている)を共有していることである。MNとMS2も同様にp基板(VSSに接続されている)100を共有している。これからわかるように、MOSトランジスタのバックゲートをVCC、VSSに接続する方が、ソースに接続する場合に比べて、前述の(i)の効果が得られるだけでなく、レイアウト面積の点でも有利である。
ここに示した例では、p基板中にnウェルを形成しているが、逆にn基板中にpウェルを形成してもよい。あるいは、アイ・エス・エス・シー・シー、ダイジェスト・オブ・テクニカル・ペーパーズ、第248頁から第249頁、1989年2月(ISSCC Digest of Technical Papers, pp.248-249, Feb.1989)に記載されているような三重ウェル構造を用いてもよい。
〔実施例3〕
図7にスイッチと抵抗の他の実現方法を示す。本実施例の特徴は、カレントミラー回路を用いていることである。すなわち、しきい電圧が同じMOSトランジスタMC2とMC3は、ゲートとソースを共有するいわゆるカレントミラー回路を成しており、MC2には電流源I0に比例する電流が流れ、そのインピーダンスは大きい。MS2とMS3についても同様である。したがって、MC2、MS2は高抵抗とみなすことができる。尚、電流源I0とMC3、MS3から成る回路CSを複数の論理ゲートで共有してもよい。
カレントミラー回路はここに示した回路だけでなく、他の回路でもよい。例えば、MOSトランジスタの代わりにバイポーラトランジスタを用いてもよい。
このように、スイッチと抵抗の実現方法は、いろいろな変形がありうる。要は、高速動作が要求される時間帯には大電流を、低消費電力が要求される時間帯には小電流を流す手段であればよい。以下の図面では、簡単のため、図1のようにスイッチと抵抗で表すことにする。
〔実施例4〕
インバータのMOSトランジスタのバックゲートは、VCC、VSSに限らず別の電源に接続してもよく、その電圧を可変にしてもよい。図8にその例を示す。ここでは、MP、MNのバックゲートをそれぞれ電源VWW、VBBに接続し、それらのバックゲート電圧値を動作時と待機時とで変えている。VBBについて言えば、高速動作が要求される時間帯にはVBBを浅くして(あるいは極端な場合わずかに正にして)MNのVTを低くして高速動作を可能にする。低消費電力が要求される時間帯にはVBBを深くしてMNのVTを高くして、サブスレッショルド電流を抑える。これにより、前記(i)の効果がさらに大きくなる。以上VBBについて述べたが、VWWも電圧の極性が逆になるだけで同様である。なお、この種のバックゲート電圧発生回路は、例えばアイ・エス・エス・シー・シー、ダイジェスト・オブ・テクニカル・ペーパーズ、第254頁から第255頁、1985年2月(ISSCC Digest of Technical Papers, pp.254-255, Feb.1985)に記載されている。
図9は、図8の回路を実現するためのデバイス構造の一例である。ここでは、前述の三重ウェル構造を用いており、nウェル105(PチャネルMOSトランジスタのバックゲート)はn+拡散層120を介してVWWに、pウェル103(NチャネルMOSトランジスタのバックゲート)はp+拡散層127を介してVBBに接続されている。
この三重ウェル構造は、Pチャネル、Nチャネル共に回路ごとに独立したウェルに入れることができるので、回路ごとにバックゲート電圧を設定できるという利点がある。例えば、1つのLSI内に動作状態にある回路と待機状態にある回路が混在する場合、前者のバックゲート電圧を浅く、後者のバックゲート電圧を深くすることができる。
〔実施例5〕
次に、インバータを多段接続したインバータ列の場合について述べる。簡単のため、まず2段の場合で原理を説明する。
図10(a)は、CMOSインバータL1、L2を接続した場合の回路図である。各段のインバータごとに、スイッチSCi、SSiと抵抗RCi、RSi(i=1,2)が挿入されている。
高速動作モードでは、4個のスイッチをすべてオンにし、VCC、VSSを直接インバータL1、L2に印加する。インバータのMOSトランジスタのしきい電圧(VT)を低く設定しておけば、高速動作させることができる。一方、低消費電力モードでは、4個のスイッチをすべてオフにして、抵抗を通してインバータに電源を供給する。サブスレッショルド電流が抵抗を通して流れることによる電圧降下により、VCL1、VCL2はVCCよりも低下し、VSL1、VSL2はVSSよりも上昇する。
第1段のインバータL1については、図1の場合と同様に、前記(i)(ii)の機構によってサブスレッショルド電流が減少する。しかし、図10(b)に示すように、L1の出力N1の論理振幅は入力信号INの論理振幅よりも小さい。すなわち、INが低レベル(=VSS)の時はN1の電圧レベルはVCL1になり、INが高レベル(=VCC)の時はN1の電圧レベルはVSL1になる。これが第2段のインバータL2の入力となるから、L2のサブスレッショルド電流低減のためには、VCC>VCL1>VCL2、VSS<VSL1<VSL2となるように抵抗値を設定するのが望ましい。これにより、L2についても前記(i)(ii)の機構によってサブスレッショルド電流が減少する。VCL1=VCL2、VSL1=VSL2の時は、(i)による効果は得られるが(ii)による効果は得られない。
〔実施例6〕
図11(a)に示す多段接続の場合も上と同様で、VCC>VCL1>VCL2>……>VCLk、VSS<VSL1<VSL2<……<VSLkとなるようにするのがよい。ただし、図11(b)に示すように、1段ごとに論理振幅が小さくなるので、適宜レベル変換回路を挿入して振幅を回復させる。この例では、k段のインバータの後にレベル変換回路LCを付加して、出力信号OUTの論理振幅が入力信号INと同じになるようにしている。この種のレベル変換回路は、例えばシンポジウム・オン・ブイ・エル・エス・アイ・サーキッツ、ダイジェスト・オブ・テクニカル・ペーパーズ、第82頁から第83頁、1992年6月(Symposium on VLSI Circuits, Digest of Technical Papers, pp.82-83, June 1992)に記載されている。
レベル変換回路LCは高速動作時には不要である。なぜなら、スイッチがすべてオンになっているので、VCL1=VCL2=……=VCLk=VCC、VSL1=VSL2=……=VSLk=VSSであり、論理振幅の減少がないからである。したがって、高速動作時には、スイッチSLCをオンにしてレベル変換回路をバイパスさせることによって、遅延を避けることができる。
〔実施例7〕
図12(a)に多段接続インバータ列の他の例を示す。この例では、スイッチSC、SSと抵抗RC、RSがすべてのインバータL1〜Lkにより共有されており、電圧VCL、VSLはL1〜Lkに共通である。それゆえに、図10の説明で述べたように、前記(i)の機構によるサブスレッショルド電流低減効果は得られるが(ii)による効果は得られない。したがって、サブスレッショルド電流低減効果は前実施例よりも小さくなる。
しかし、その反面スイッチと抵抗のレイアウト面積が節約できるという利点がある。また、図12(b)に示すように、すべての信号(入出力信号を含めて)の電圧レベルが同一であり、前実施例のような論理振幅の減少がないという特長がある。そのため、レベル変換回路は不要であり、また、NAND、NORなどの論理が組みやすいという利点がある。
〔実施例8〕
次に、本発明を一般の組合せ論理回路に適用する場合について述べる。
例えば、図13に示す組合せ論理回路を考える。これに本発明を適用するには、まず論理ゲートを図13のようにグループ分けする。この例では、15個の論理ゲートL1〜L15が3つのグループG1、G2、G3に分けられている。グループ分けに当たっては、第i番目のグループに含まれる論理ゲートの出力信号は、第(i+1)番目以降のグループの論理ゲートにのみ入力されるようにする。
次に、図14に示すように、各グループごとに電源との間にスイッチと抵抗を挿入する。論理ゲートの出力信号の論理振幅は、図11の場合と同様に、1段ごとに小さくなるから、図14に示すようにレベル変換回路群GC1、GC2を挿入して振幅を回復させる。尚、図示されていないが、高速動作時には図11の場合と同様にレベル変換回路群GC1、GC2をパイパスさせてもよい。
本実施例の特徴の1つは、同じグループに含まれる論理ゲートは、スイッチと抵抗を共有していることである。図13の例で言えば、グループG1に含まれる3個のインバータは、スイッチSC1、SS1と抵抗RC1、RS1を共有している。
本実施例のもう1つの特徴は、レベル変換回路の前後のグループでスイッチと抵抗を共有していることである。すなわち、グループG1とGk+1はスイッチSC1、SS1および抵抗RC1、RS1を、グループG2とGk+2はスイッチSC2、SS2および抵抗RC2、RS2を、……、グループGkとG2kはスイッチSCk、SSkおよび抵抗RCk、RSkをそれぞれ共有している。
このように、複数の論理ゲートでスイッチと抵抗を共有することにより、LSI全体として見ればスイッチと抵抗との数を低減でき、レイアウト面積を節約できる。
〔実施例9〕
図15に本発明の他の実施例を示す。図15の実施例がこれまでの実施例と相違するのは、電圧リミッタ(降圧回路、昇圧回路)VC1、VC2、……、VCk、VS1、VS2、……、VSkを用いていることである。
低消費電力が要求される時には、スイッチTC1〜TCk、TS1〜TSkを図示の側に切換え、電圧リミッタによって論理ゲート群に電源を供給する。電圧リミッタVC1、VC2、……、VCkは、電源電圧VCC側の降圧回路として動作し、VCCよりも低くほぼ安定化された内部電圧VCL1、VCL2、……、VCLkをそれぞれ発生する。一方、VS1、VS2、……、VSkは、接地VSS側の昇圧回路として動作し、VSSよりも高くほぼ安定化された内部電圧VSL1、VSL2、……、VSLkをそれぞれ発生する。発生する電圧は前述の実施例と同様に、VCC>VCL1>VCL2>……>VCLk、VSS<VSL1<VSL2<……<VSLkとするのがよい。尚、この種の電圧リミッタについては、特開平2−246516号公報に開示されている。
逆に、高速動作が要求される時は、スイッチを図示されているのとは反対側に切換えて、VCC、VSSを直接論理ゲート群に印加して、高速動作を可能にする。尚、この時は電圧リミッタは不要になるので、その動作を停止させてもよい。
〔実施例10、11〕
これまでの実施例は、インバータ列や組合せ論理回路といったフィードバックのない回路であったが、本発明はフィードバックのある回路にも適用できる。一例として、図16(a)に示す2個のNANDゲートを組合せたラッチ回路の場合について説明する。
図16(b)に回路図を示す。2個のNANDゲートL1、L2と電源Vccおよび接地Vssとの間に、それぞれスイッチSC1、SS1、SC2、SS2および抵抗RC1、RS1、RC2、RS2が挿入されている。VCL1、VCL2がVCCよりも低下し、VSL1、VSL2がVSSよりも上昇し、前記(i)の機構によってサブスレッショルド電流が低減される。
図17は、さらにサブスレッショルド電流を低減するために、情報のラッチに用いられる4個のMOSトランジスタMP12、MP22、MN12、MN22のしきい電圧VTを他のMOSトランジスタMP11、MP21、MN11、MN21のしきい電圧より高く(よりエンハンスメントに)した例である。入力信号が印加される他のMOSトランジスタMP11、MP21、MN11、MN21のしきい電圧VTは低いままであるから、高速動作が可能である。この場合、VSS側のスイッチと抵抗は不要である。なぜならば、高しきい電圧のVSS側トランジスタMN12、MN22によって電流を確実に抑止できるからである。
〔実施例12、13〕
これまでの実施例は、入力信号が低レベルでも高レベルでもサブスレッショルド電流を低減できるものであった。しかし実際のLSIでは、サブスレッショルド電流低減が必要な時間帯、例えば待機状態における特定の信号のレベルは予め判っていることが多い。このような場合は、より簡単な回路でサブスレッショルド電流を低減することができる。
図18は、待機状態における入力信号INは低レベル(“L”)であると判っている場合のインバータ列の回路例である。INが低レベルであるから、ノードN1、N3、N5、……は高レベル、N2、N4、N6、……は低レベルになり、PチャネルMOSトランジスタのうちMP2、MP4、……がオフ、NチャネルMOSトランジスタのうちMN1、MN3、……がオフである。スイッチと抵抗は、これらのオフ状態のトランジスタのソースにのみ挿入すれば十分である。サブスレッショルド電流が流れるのはオフ状態のトランジスタだからである。
また、図19に示すように、スイッチと抵抗を複数のインバータで共有しても差し支えない。
これらの実施例は、入力信号のレベルが判っていなければならないという制約はあるが、簡単な回路でサブスレッショルド電流を低減できるという利点がある。図18、19を図11と比較してみれば明らかなように、スイッチと抵抗の数が少なくなり、レベル変換回路が不要になる。
〔実施例14、15〕
インバータだけでなくNAND、NORなどの論理ゲートでも、待機状態における入力信号のレベルが判っている場合は、より簡単な回路でサブスレッショルド電流を低減することができる。
図20は2入力NANDゲート、図21は2入力NORゲートの例である。2つの入力信号IN1とIN2がいずれも低レベル、あるいはいずれも高レベルの場合は、これらのゲートは実質的にインバータと等価であるから、図18、図19で説明した方法が適用できる。問題は、図のように一方の入力が低レベル(“L”)、他方の入力が高レベル(“H”)の場合である。
図20のNANDゲートの場合は、PチャネルMOSトランジスタMP12とNチャネルMOSトランジスタMN11がオフであるが、出力OUTは高レベルであるから、サブスレッショルド電流が流れるのはMN11である。従って、VSS側にスイッチと抵抗を挿入すればよい。図21のNORゲートの場合は逆に、サブスレッショルド電流が流れるのはPチャネルMOSトランジスタMP14である。従って、VCC側にスイッチと抵抗を挿入すればよい。
図20、図21は本発明を2入力論理ゲートに適用した例であるが、3入力以上の論理ゲートでも同様にできる。また、スイッチと抵抗は、他の論理ゲートと共有してもよいことはもちろんである。
〔実施例16〕
図22はクロックインバータにおいて、待機状態ではクロックCLK1は低レベル、CLK2は高レベルであると判っている場合の回路例である。この場合は、MOSトランジスタMP16、MN16が共にオフであるから、出力OUTは高インピーダンスになり、その電圧レベルはOUTに接続されている他の回路(図示せず)によって決まる。電圧レベルによってMOSトランジスタMP16、MN16のいずれにサブスレッショルド電流が流れるかが決まるから、この場合は、図のようにスイッチと抵抗をVCC側、VSS側の両方に挿入すればよい。
〔実施例17〕
一般の組合せ論理回路の場合も、入力信号のレベルが予め判っている場合は、より簡単な回路でサブスレッショルド電流を低減することができる。図13に示した組合せ論理回路を例にとりあげて説明する。
図23は、この回路の入力IN1〜IN6がすべて低レベルと判っている場合の回路構成例である。インバータL1〜L3、L5、L6については、図18、図19と同様に、L1〜L3のVSS側とL5、L6のVCC側にスイッチと抵抗を挿入する。NORゲートL7は、入力信号がいずれも低レベルであるから、実質的にインバータと等価である。従って、VSS側にスイッチと抵抗を挿入すればよい。NORゲートL4は、入力信号の一方が低レベル、他方が高レベルであるから、図21と同様に、VCC側にスイッチと抵抗を挿入する。8個のNANDゲートのうち、L12だけは3つの入力信号がすべて高レベルであり、インバータと等価であるから、VCC側にスイッチと抵抗を挿入する。他のNANDゲートは、入力信号に低レベルのものと高レベルのものが混在するから、図20と同様に、VSS側にスイッチと抵抗を挿入すればよい。
以上の説明から明らかなように、出力が高レベルである論理ゲートにはVSS側に、出力が低レベルである論理ゲートにはVCC側に、スイッチと抵抗を挿入すればよい。図23に示すように、これらのスイッチと抵抗を複数の論理ゲートで共有することにより、レイアウト面積を節約できる。
〔実施例18〕
フィードバックがある回路についても、信号のレベルが予め判っている場合は、より簡単な回路でサブスレッショルド電流を低減することができる。図24は、図16(a)のラッチに適用した例である。
この種のラッチは、待機状態においては普通、入力信号IN1、IN2が共に高レベルであり、出力信号OUT1、OUT2のうちの一方が低レベル、他方が高レベルとなって1ビットの情報を保持している。図24は、OUT1が低レベル、OUT2が高レベルであると判っている場合の回路構成例である。NANDゲートL1は、2つの入力信号が共に高レベルであるから、インバータと等価であり、図18、図19と同様に、VCC側にスイッチと抵抗を挿入する。NANDゲートL2は、入力信号の一方が低レベル、他方が高レベルであるから、図20と同様に、VSS側にスイッチと抵抗を挿入すればよい。これらのスイッチと抵抗は、他の論理ゲートと共有してもよいことはもちろんである。
〔実施例19〕
図25は、本発明をメモリLSIなどで周知のデータ出力バッファに適用した例である。待機状態においては、出力エネーブル信号OEが低レベルであり、NANDゲートL21及びL22の出力は高レベル、インバータL23の出力は低レベルである。従って、出力段L24を構成する2個のMOSトランジスタMP20およびMN20は共にオフであり、出力DOUTは高インピーダンスである。
論理ゲートL21〜L23については、図23の説明で述べた方針に従って、VSS側もしくはVCC側にスイッチと抵抗を挿入すればよい。出力段L24については、図22のクロックインバータの場合と同様に、スイッチと抵抗をVCC側、VSS側の両方に挿入すればよい。
〔実施例20〕
図26は、本発明をメモリLSIなどで周知のデータ入力バッファに適用した例である。図中、SBは待機状態のときに高レベルになる信号である。インバータL31およびL32の出力は、図4および図7に示したように、それぞれφS、φCとしてスイッチの制御に用いることができる。L33はNANDゲートであり、その入力はφSとデータ入力信号DINである。待機状態のときはφSは低レベルであるから、DINの如何にかかわらずL33の出力は高レベル、従ってインバータL34の出力dINの出力は低レベルになる。一方、動作状態のときは、SBが低レベルであるから、dINはDINに追随する。
NANDゲートL33とインバータL34については、それぞれVSS側、VCC側にスイッチと抵抗を挿入することにより、サブスレッショルド電流を低減できる。インバータL31とL32についてはこの手法は使えないが、MOSトランジスタのしきい電圧を高くすることにより、サブスレッショルド電流を低減できる。待機状態と動作状態の切り換えにはそれほど高速性は要求されないことが多いから、しきい電圧の高いMOSトランジスタを用いても差し支えない。
以上、データ入力バッファについて述べたが、アドレス信号その他の信号の入力バッファも同様である。
図18〜25の実施例は、簡単な回路でサブスレッショルド電流を低減できるという利点がある反面、サブスレッショルド電流低減が必要な時間帯、例えば待機状態における信号レベルが判っていなければ適用できないという制約がある。従って、このときには、LSI内のできるだけ多くのノードのレベルが確定するようにすることが望ましい。このための手段としては、図26の入力バッファのような回路を用いることによって、このときの信号dINのレベルを低レベルに確定させることができる。このレベルを確定させる方法としては、この他に、例えば「待機状態のときはデータ入力端子DINは低レベル(または高レベル)にする」という仕様を定めておく方法もある。
図18〜図26の実施例は、メモリLSIに適用するのに好適である。メモリLSIでは、待機状態の時に高レベルであるか低レベルであるかが判っているノードが比較的多く、さらに図26の入力バッファを用いることによってほとんどのノードのレベルを確定させられるからである。
マイクロプロセッサのようなランダムロジックLSIなどにおいては、内部のレジスタの出力を固定したり、リセット機能付きフリップフロップ回路などの論理を追加して、問題となるノードの電圧を強制的に固定することも有効である。図35に、出力を固定できるラッチ回路の構成例を示す。この回路は、通常のラッチ回路中のインバータをNAND回路で置き換えただけの簡単な構成である。図36に示すように、φSが高レベルの間は通常のラッチ回路とし動作し、φSが低レベルの間(スリープモード)は出力信号Qのレベルを高レベルに確定させる。ここで、スリープモードとは、消費電流低減のために、LSI全体もしくは回路ブロック単位の動作を停止させるモードである。なお、スリープモードの間、φtを低レベル,φbを高レベルにしておけば、ラッチ回路自身のサブスレッショルド電流も低減できる。このラッチ回路を用いた場合、φSが低レベルになることによりノードN41が強制的に高レベルになるため、スリープモードによりレジスタの情報が消去される。しかし、CPU中の必要な情報を主記憶へ退避しておき、スリープモード後にリセット状態から再開するような使い方、例えばノートパソコンで入力が一定時間無いときに待機状態にするレジューム機能などでは問題ない。図37は出力を強制的に固定できるラッチ回路の別な構成例である。図38に示すように、この回路も、φSが高レベルの間は通常のラッチ回路とし動作し、φSが低レベルの間は出力信号Qのレベルを高レベルに確定させる。このラッチ回路は、φSが低レベルになってもノードN41に影響しないため、スリープモードの間も情報を保持できる。スリープモード解除後にスリープモード前の状態からそのまま再開でき、CPUがタスクを実行している間でもスリープモードにできる。そのため、スリープモードから比較的短時間で復帰するような場合に好適である。
図25、26の実施例は、LSIチップの外部端子に対する入出力回路としてだけでなく、例えばマイクロプロセッサの内部バスに対するドライバ/レシーバとしても用いることができる。
〔実施例21〕
これまでは本発明をCMOS回路に適用した実施例について述べてきたが、本発明は、単一極性のMOSトランジスタで構成された回路にも適用できる。図27にNチャネルMOSトランジスタのみで構成された回路の例を示す。図中、PCはプリチャージ信号、IN1、IN2は入力信号である。
待機時、すなわちプリチャージ状態では、PCが高レベル、IN1とIN2は低レベルであり、出力OUTは高レベル(=VCC−VT)にプリチャージされている。動作時には、PCが低レベルになった後、IN1とIN2は高レベルになるかあるいは低レベルにとどまる。IN1とIN2のうち少なくとも一方が高レベルになれば、OUTは低レベルになり、両方共低レベルにとどまれば、OUTは高レベルのままである。すなわち、この回路はIN1とIN2のNORを出力する回路である。
この回路では、待機時にオフになっているトランジスタは、VSS側のMN41、MN42であり、これらのトランジスタにサブスレッショルド電流が流れる。従って、この回路に本発明を適用するには、図に示すように、VSS側にスイッチと抵抗を挿入すればよい。VCC側には不要である。
尚、ランダムロジックLSIのように複雑な動作をするLSI等においては、例えば待機状態でのチップ内部の各ノードの論理(電圧)状態をデザインオートメーション(DA)の手法を用いて求め、その結果に応じて、DAで上述したスイッチと抵抗を挿入する位置を自動的に決めることができる。
以上説明したように、本発明は、MOSトランジスタ回路およびそれで構成された半導体集積回路の低消費電力化にきわめて有効である。半導体集積回路の低消費電力化に対する要求は、最近特に強く、例えば日経エレクトロニクス1991年9月2日号、第106頁から第111頁には、低電力バックアップモードを有するマイクロプロセッサシステムについて記載されている。バックアップモードでは、クロックを停止させたり、不要な部分への電源の供給を停止したりして、低消費電力化を図っている。しかし、サブスレッショルド電流の低減についてまでは考慮されていない。これらのプロセッサシステムは3.3〜5Vで動作するために、十分に高いしきい電圧のトランジスタが使えるので、サブスレッショルド電流は問題にならないほど小さい。しかし、将来動作電圧が2Vあるいは1.5Vと低くなり、しきい電圧も低くせざるを得なくなると、従来のCMOS回路を使うやり方ではもはや過大なサブスレッショルド電流は低減できなくなる。本発明を、例えばレジューム用回路(バックアップモードでも電源が供給されている)に適用すれば、さらに低消費電力化が実現できる。
以上の例では、論理振幅が段数の増加とともに低下したり、入力信号の電圧レベルが予め判っていない場合にはやや複雑な設計が必要であるといった問題がある。図28は、これらを解決するもので、論理出力が確定するまでの所要時間帯は、これまで述べてきたようにスイッチをオンにして、通常の高速動作をさせる。それ以外の時間帯では、スイッチをオフにすることによって、論理回路(図はCMOSインバータの例)のサブスレッショルド電流経路を遮断するものである。ただし、スイッチがオフになると電源電圧の供給路が断たれるため、論理回路の出力はフローティングとなり、論理出力は確定しなくなる。そこで、その出力に、電圧レベルを保持する一種のラッチ回路(レベルホールド回路)を設けていることが特長である。レベルホールド回路にしきい電圧の高いトランジスタなどを使えば、レベルホールド回路のサブスレッショルド電流は無視できるほど小さくなり、全体としてはサブスレッショルド電流は小さくできる。遅延時間は、レベルホールド回路の影響は小さく、論理回路により定まる。論理回路に駆動能力の大きい高速な回路を用いても、待機状態では論理回路を通じて電流が流れないため、消費電流はレベルホールド回路を通じて流れる電流だけである。レベルホールド回路は、出力を保持するだけなので駆動能力が小さくて良く、消費電流は小さくできる。スイッチをオフにしても、レベルホールド回路により論理回路の出力が保持されるので、出力が反転する恐れが無く、安定に動作する。したがって、低消費電力で高速に安定動作を行う半導体装置を実現できる。本発明によれば、電圧レベルが常にレベルホールド回路で一定値に保証されるので、論理段数の増加とともに論理振幅が低下することはない。また、論理入力によらず効力を発揮する。
図28を用いてさらに本実施例を説明する。論理回路LCが、スイッチSWH及びSWLを介して、高電位の電源線VHH及び低電位の電源線VLLに接続される。ここでVHHならびにVLLは、これまで述べてきたVCC、VSSにそれぞれ対応させることもできる。論理回路LCの出力端子OUTには、レベルホールド回路LHが接続される。スイッチSWHとSWLは、制御パルスCKで制御され、同時にオン,オフする。論理回路LCは、インバータ、NAND回路、NOR回路などの論理ゲートやフリップフロップ回路、あるいはそれら複数個の組合せで構成される。レベルホールド回路LHは、正帰還回路により構成できる。
論理回路LCの動作は、スイッチSWH及びSWLをオンにして行う。論理回路LCの入力INに応じた出力OUTが確定した後、スイッチSWH及びSWLをオフにして、論理回路LCを介したVHHからVSSへの電流経路を遮断し、論理回路LCの出力をレベルホールド回路LHにより保持する。
回路の遅延時間には、レベルホールド回路LHの影響は小さく、論理回路LCにより定まる。論理回路LCに駆動能力の大きい回路を用いて遅延時間の短い高速な動作を行うことができる。例えば待機状態では論理回路LCを通じて電流が流れないため、消費電流はレベルホールド回路LHを通じて流れる電流だけである。レベルホールド回路LHは、駆動能力が小さくて良いので、消費電流は小さくできる。しかも、レベルホールド回路LHにより論理回路LCの出力OUTが維持されるため、誤動作の恐れがない。したがって、低消費電力で高速に安定動作を行う回路を実現できる。
本発明をCMOSインバータに適用した実施例を、図29に示す。NMOSトランジスタMN1,PMOSトランジスタMP1が、それぞれ図28でのスイッチSWL,SWHとして動作する。オフにしたときのリーク電流を小さくするため、トランジスタMN1,MP1のしきい値電圧は十分大きくする。オン抵抗が大きくならないようにチャネル幅/チャネル長を定める。NMOSトランジスタMN1のゲートには制御パルスCKが、PMOSトランジスタMP1のゲートには制御パルスCKBが入力される。CKBはCKの相補信号である。NMOSトランジスタMN2とPMOSトランジスタMP2からなるCMOSインバータINVを、MN1,MP1に接続する。低電圧動作で駆動能力を大きくするため、トランジスタMN2,MP2のしきい値電圧は小さくする。インバータINVの出力端子OUTには、NMOSトランジスタMN3,MN4とPMOSトランジスタMP3,MP4からなるレベルホールド回路LHが接続される。出力を保持している間の貫通電流を小さくするため、トランジスタMN3,MN4,MP3,MP4のしきい値電圧を十分大きくし、チャネル幅/チャネル長を十分小さくする。電源電圧としきい値電圧の数値例を挙げる。VLLを接地電位0Vとし、VHHを外部電源電圧1Vとする。NMOSトランジスタのしきい値電圧は、MN2は0.2V,MN1とMN3及びMN4は0.4Vとする。PMOSトランジスタのしきい値電圧は、MP2は−0.2V,MP1とMP3及びMP4は−0.4Vとする。
図30に示すタイミング図を用いて、動作を説明する。まず、制御パルスCKをVHHに上げ、CKBをVLLに下げて、トランジスタMN1,MP1をオンにして、インバータINVをVHH,VLLに接続する。入力信号INがVLLからVHHに上がることにより、MP2がオフにMN2がオンになり、出力OUTがVHHからVLLに放電される。トランジスタMN2は飽和領域で導通を始め、MN2を流れる電流値はゲート(入力端子IN)−ソース(ノードNL)間の電圧で定まる。トランジスタMN1がノードNLとVLLとの間に設けられているので、MN1のオン抵抗とMN2から流れる電流によりノードNLの電位が一時的に上昇する。しかし、MN1のゲートはVHHとなっているので、しきい値電圧が大きくても、オン抵抗が十分小さくなるように設計することができ、遅延時間に対する影響を小さくできる。また、出力OUTがVLLに反転するとき、レベルホールド回路LHは出力OUTをVHHに保つように、MN4がオフにMP4がオンになっている。そのため、MN2がオンになることによりVHHからMP4,MN2を通じてVLLに貫通電流が流れるが、MN2に比べてMP4の駆動能力を小さく設計することにより、遅延時間や消費電流に対する影響は小さい。出力OUTが下がることにより、MN3がオフにMP3がオンになり、レベルホールド回路内のノードNLHがVLLからVHHに反転し、MN4がオンにMP4がオフになって、レベルホールド回路LHは出力OUTをVLLに保つように動作し、貫通電流は流れなくなる。MP2はゲート,ソースが共にVHHなのでオフであるが、しきい値電圧が小さいため、リーク電流が大きく貫通電流がインバータINVを通じて流れる。そして、制御パルスCKをVLLに下げ、CKBをVHHに上げて、トランジスタMN1,MP1をオフにして、インバータINVをVHH,VLLから分離する。このとき、MN1,MP1はゲート,ソースが等電位で、しきい値電圧が大きいため完全にオフになる。レベルホールド回路LHの正帰還により、出力OUTはVHHに保たれる。このとき、NMOSトランジスタMN2がオンなので、ノードNLはVLLに保たれる。一方、ノードNHから出力端子OUTへのPMOSトランジスタMP2のリーク電流のため、ノードNHの電圧は低下し始める。そして、MP2はゲート電位よりもソース電位が下がり完全にオフとなる。その結果、待機状態でインバータINVの貫通電流は流れない。そして、入力信号INが変化する前に、制御パルスCKをVHHに上げ、CKBをVLLに下げて、トランジスタMN1,MP1をオンにして、ノードNHをVHHにする。入力INがVHHからVLLに反転することにより、出力OUTがVLLからVHHに反転する。
インバータINVとレベルホールド回路LHを通じて貫通電流が流れる期間が短くなるように、レベルホールド回路LHが出力OUTにすばやく追従するのが望ましい。そのため、インバータINVとレベルホールド回路LHは近接して配置し、配線遅延を小さくする。
本実施例から明らかなように、スイッチとして用いるMOSトランジスタのしきい値電圧を、従来サブスレッショルド電流を小さくするために必要とされている0.4V程度以上にすれば、待機状態の貫通電流を増加させずに、論理回路中のMOSトランジスタのしきい値電圧を小さくすることができる。動作電圧を1V以下に低電圧化しても、MOSトランジスタのしきい値電圧を0.25V以下にして駆動能力を確保できる。したがって、低電圧化による低消費電力化が実現できる。また、従来のスケーリング則に基づき、素子のスケーリングによる性能向上が実現できる。しかも、スイッチとレベルホールド回路を負荷すること以外は、従来のCMOS論理回路と同じ構成であるので、従来と同じ設計手法を用いることができる。
図31は、本発明をCMOSインバータチェーンに適用した実施例を示している。図29に示した1段のインバータにスイッチ2個とレベルホールド回路も設けた構成を多段接続すればインバータチェーンが実現できるが、本実施例はスイッチやレベルホールド回路を複数のインバータで共有して、素子数及び面積を小さくした例である。ここでは4段のインバータチェーンの場合を例にとるが、他の段数の場合も同様に構成される。4個のインバータINV1,INV2,INV3,INV4が直列接続される。最終段のインバータINV4の出力端子OUTにレベルホールド回路LHが接続される。各インバータは、図29中のINVと同様にPMOSトランジスタとNMOSトランジスタ1個ずつで構成される。各インバータのトランジスタサイズは、同じであっても異なっていても良い。ドライバとしてよく用いられるように、チャネル長を同じにして、一定の段間でチャネル幅をINV1,INV2,INV3,INV4の順に大きくしていくこともできる。各インバータのPMOSトランジスタのソースはノードNHに、NMOSトランジスタのソースはノードNLに接続される。ノードNLと低レベルの電源VLLとの間にスイッチSWLが、ノードNHと高レベルの電源VHHとの間にスイッチSWHが設けられる。スイッチSWLとSWHは制御パルスCKにより制御され、同時にオン,オフする。図29に示したように、スイッチSWLはNMOSトランジスタで、SWHはCKの相補信号をゲートに入力したPMOSトランジスタで実現される。
インバータチェーンの動作は、スイッチSWL,SWHをオンにして行う。例えば、入力INが低レベルVLLから高レベルVHHに反転すると、インバータINV1によりノードN1がVHHからVLLに反転し、INV2によりノードN2がVLLからVHHに反転し、INV3によりノードN3がVHHからVLLに反転し、INV4により出力端子OUTがVLLからVHHに反転する。OUTがVHHに確定すると、レベルホールド回路LHはOUTをVHHに保つように動作する。待機状態では、スイッチSWL,SWHをオフにすることにより、インバータを介したVHHからVLLへの電流経路を遮断する。
インバータチェーンに本発明を適用する場合、本実施例の様にインバータチェーンをまとめて一つの論理回路として取扱うことにより、その出力端子にのみレベルホールド回路を設ければ良い。また、スイッチSWL,SWHを複数のインバータで共有できる。スイッチSWL、SWHの大きさは、流れるピーク電流の大きさで決定される。複数個のインバータを流れる電流和のピークは、各インバータのピーク電流での和よりも小さくなる。例えば、段間比を3としてインバータチェーンを構成する場合、電流和のピークは最終段のピーク電流にほぼ同じになる。したがって、複数のインバータでスイッチを共有する方が、インバータごとにスイッチを設ける場合に比べて、スイッチの面積が小さくて済む。
図32は、本発明をインバータチェーンに適用した別の実施例を示している。図31と同様に4段のインバータチェーンの場合を例にとるが、他の段数の場合も同様に構成される。4個のインバータINV1,INV2,INV3,INV4が直列接続される。インバータINV3の出力端子でINV4の入力端子であるノードN3とINV4の出力端子OUTに、それぞれレベルホールド回路LH3,LH4が接続される。各インバータは、図29中のINVと同様にPMOSトランジスタとNMOSトランジスタ1個ずつで構成される。奇数番目のインバータINV1,INV3はノードNL1及びNH1に、偶数番目のインバータINV2,INV4はノードNL2及びNH2に接続される。ノードNL1,NL2と低レベルの電源VLLとの間にそれぞれスイッチSWL1,SWL2が、ノードNH1,NH2と高レベルの電源VHHとの間にそれぞれスイッチSWH1,SWH2が設けられる。スイッチSWL1,SWL2とSWH1,SWH2は制御パルスCKにより制御され、同時にオン,オフする。
インバータの動作は、スイッチSWL1,SWL2,SWH1,SWH2をオンにして行う。例えば、入力INが低レベルVLLから高レベルVHHに反転すると、ノードN1がVHHからVLLに、ノードN2がVLLからVHHに、ノードN3がVHHからVLLに、INV4により出力端子OUTがVLLからVHHに順次反転する。N3がVLLに確定すると、レベルホールド回路LH1はN3をVLLに保つように動作する。また、OUTがVHHに確定すると、レベルホールド回路LHはOUTをVHHに保つように動作する。たとえば待機状態では、スイッチSWL1,SWL2,SWH1,SWH2をオフにすることにより、インバータを介したVHHからVLLへの電流経路を遮断する。このとき、ノードN3がレベルホールド回路LH3により低レベルVLLに保たれるため、ノードNL1もインバータINV3を通じてVLLに保たれる。さらに、インバータINV1を通じてノードN1がVLLに保たれる。同様に、出力端子OUTがレベルホールド回路LH4により高レベルVHHに保たれることにより、ノードNH2及びN2もVHHに保たれる。したがって、インバータ間を接続するノードがVHHとVLLのいずれかに保たれる。
以上のように、スイッチを2組設け、奇数番目のインバータと偶数番目のインバータとを違うスイッチに接続し、奇数番目のインバータのいずれかの出力端子と偶数番目のインバータのいずれかの出力端子とに、それぞれレベルホールド回路を接続することにより、インバータ間のノードN1,N2,N3が全て高レベルと低レベルのいずれかに保たれる。待機状態が長く続いてもインバータの入力が中間レベルとならないため安定に動作し、スイッチをオンにしたときに情報が反転したり貫通電流が流れたりする恐れがない。
以上本発明を、CMOSインバータやインバータチェーンに適用した実施例を示しながら説明してきたが、論理回路にスイッチとレベルホールド回路を負荷して低消費電力で高速に安定動作を行うという本発明の趣旨を逸脱しないかぎり、これまでに述べた実施例に限定されるものではない。
例えば、本発明をCMOSインバータに適用した別の実施例を図33に示す。図29に示した実施例では、スイッチとして動作するトランジスタMN1,MP2をCMOSインバータINVと電源VLL,VHHとの間に設けている。それに対して、本実施例ではNMOSトランジスタとPMOSトランジスタとの間に設ける。
2個のNMOSトランジスタMN2,MN1と2個のPMOSトランジスタMP1,MP2が直列に、低レベルの電源VLLと高レベルの電源VHHの間に接続される。NMOSトランジスタMN1,PMOSトランジスタMP1は、スイッチとして動作する。オフにしたときのリーク電流を小さくするため、トランジスタMN1,MP1のしきい値電圧は大きくする。NMOSトランジスタMN1のゲートには制御パルスCKが、PMOSトランジスタMP1のゲートにはCKの相補信号の制御パルスCKBが入力される。NMOSトランジスタMN2とPMOSトランジスタMP2は、ゲートが入力端子INに接続され、CMOSインバータとして動作する。低電圧動作で駆動能力を大きくするため、トランジスタMN1,MP1のしきい値電圧は小さくする。出力端子OUTには、図29と同様に構成されたレベルホールド回路LHが接続される。
図29に示した実施例と同様に、動作を行う。制御パルスCK,CKBにより
、トランジスタMN1,MP1をオンにして、トランジスタMN2,MP2をCMOSインバータとして動作させる。例えば、入力INが低レベルVLLから高レベルVHHに反転すると、それまでオフであったトランジスタMN2が導通し始め飽和領域で動作する。このときMN2の電流値はゲート−ソース間の電圧で定まる。本実施例では、トランジスタMN1がMN2と出力端子OUTとの間に設けられているので、MN1のオン抵抗はMN2のドレインに接続される。そのため、MN1のオン抵抗の、MN2の電流値に対する影響は小さい。出力OUTが確定後、トランジスタMN1,MP1をオフにして、貫通電流を防止し、レベルホールド回路LHにより出力OUTを維持する。
本実施例のようにスイッチを論理回路の出力端子側に挿入すると、スイッチを複数の論理ゲートで共有することは出来ないが、スイッチのオン抵抗の影響が小さい。スイッチとして用いるトランジスタが同じ場合、図29に示した実施例の様にスイッチを論理回路の電源側に設ける場合に比べて、遅延時間が短くなる。あるいは、遅延時間が同じになるように設計すると、スイッチとして用いるトランジスタのチャネル幅/チャネル長が小さくて済み、その面積を小さくできる。
図34は、レベルホールド回路の別な構成例である。このレベルホールド回路を、図29に示した実施例でNMOSトランジスタMN3,MN4とPMOSトランジスタMP3,MP4で構成されているレベルホールド回路LHと置き換えて、用いた場合について説明する。
このレベルホールド回路は、それぞれ3個のNMOSトランジスタMN3,MN4,MN5とPMOSトランジスタMP3,MP4,MP5で構成される。待機状態でのリーク電流を低減するため、各トランジスタのしきい値電圧は大きくする。例えば、NMOSトランジスタは0.4V,PMOSトランジスタは−0.4Vとする。MN3,MP3はインバータを構成しており、MN4,MN5,MP4,MP5はスイッチングインバータを構成している。MN5のゲートには制御パルスCKBが、MP5のゲートには制御パルスCKが入力される。 動作タイミングは、図29に示したレベルホールド回路LHを用いた場合と同じで、図30に示したとおりである。制御パルスCKを高レベルVHHに上げ、CKBを低レベルVLLに下げてインバータINVを動作させる。この時、レベルホールド回路で、トランジスタMN5,MP5がオフとなる。そのため、出力OUTが反転するときに、インバータINVとレベルホールド回路を通じて貫通電流が流れることがなく、遅延時間と消費電流が小さくて済む。待機状態では、制御パルスCKを低レベルVLLに下げ、CKBを高レベルVHHに上げてインバータINVを電源VLL,VHHから切り離す。この時、レベルホールド回路で、トランジスタMN5,MP5がオンとなり、正帰還により出力OUTが保持される。
このように、レベルホールド回路をインバータとスイッチングインバータの組合せで構成することにより、トランジスタが2個増えるが、論理回路とレベルホールド回路が競合することが無くなり、遅延時間と消費電流が小さくて済む。また、レベルホールド回路の駆動能力を大きくしてもよく、出力端子でのリークが大きい場合でも出力が変動する恐れがなく安定動作ができる。
図39は、2相クロックで論理動作を行う論理回路に適用した実施例である。通常のマイクロプロセッサ等のLSIでは、チップ内の論理動作のほとんどが2相クロックで同期をとって行なわれることが多い。論理回路をLC1,LC2の二つに分け、各々の出力にはクロックCK1b,CK2bで制御されるラッチ回路LT1,LT2を付加する。本実施例では、ラッチ回路LT1,LT2がレベルホールド回路の役割を果たす。ここで、LC1,LC2は1個の論理ゲートもしくは複数の論理ゲートからなる組合せ論理回路である。二つの論理回路LC1,LC2はクロックに同期して交互に動作を行うので、スイッチSWH1とSWL1,SWH2とSWL2をクロックによって交互にオン,オフし、動作を行わない論理回路のサブスレッショルド電流を遮断する。本実施例を用いれば低動作電圧でしかもサブスレッショルド電流の小さい低電力LSIが実現できる。
図40に示す具体的回路例と、図41に示すその制御クロックのタイミングを用いて、動作を説明する。ここでは、簡単のため論理回路LC1,LC2としてインバータ1個ずつを示している。また、ラッチ回路LT1,LT2としては図34に示したレベルホールド回路を用いているが、図29に示した回路を用いても良い。クロックCK1t,CK2tは互いに重なること無く交互に高レベルになる。クロックCK1b,CK2bは、それぞれCK1t,CK2tを反転させた信号である。ここで、論理回路LC1,LC2を構成するMOSトランジスタのしきい電圧を低くしておけば高速動作が可能である。一方、クロックがゲートに入力されるMOSトランジスタは、オフ時にサブスレッショルド電流を遮断できなければならない。そのためには、しきい電圧を高くするか、あるいはクロックの高レベルをVHHよりも高く,低レベルをVLLよりも低くすればよい。
動作モードでは、CK1tが高レベルの間、論理回路LC1が動作を行う。このとき、CK2tは低レベルなので、ラッチ回路LT2はLC1の入力となる情報を保持している。また、論理回路LC2は動作を行わなくても良いので、トランジスタMP12及びMN12をオフにしてサブスレッショルド電流を遮断する。CK2tが高レベルの間は逆に、LT2は情報を保持し、LC2が動作を行うので、LC1のサブスレッショルド電流を遮断することができる。すなわち、常にLC1とLC2のいずれか一方の電流を遮断できるので、サブスレッショルド電流は従来の半分になる。
最近の3.3Vから5Vで動作するマイクロプロセッサでは、前述したように低電力化するために、低電力バックアップモード(スリープモード)などでは不必要な回路へのクロックの印加を停止させ充放電電流を低減したりしている。本実施例では、図41に示すように、スリープモードの間クロックCK1t,CK2tをともに低レベルにすることにより、トランジスタMP11及びMN11,MP12及びMN12がいずれもオフになり、論理回路LC1,LC2の両方の貫通電流が遮断される。そのため、スリープモードでは動作モードよりも、サブスレッショルド電流を低減する効果がさらに大きい。
図42は、本発明の別の実施例を示す図であって、ゲートアレイに適用した例である。ゲートアレイはデジタル論理回路であるので、既に示した実施例を適用してサブスレッショルド電流を低減することが可能である。しかし、一般にゲートアレイでは、以下に述べるように、論理回路を構成する際、使用せずに不活性化されるゲートが発生する。図42(A)は、2入力NANDを基本セルにするゲートアレイの1回路ブロックに於て(B)に示す論理を構成した例を示している。図中破線A001、A002、A003が基本NANDセルである。また、INN1およびOUT1はそれぞれこの論理回路ブロックの入力および出力である。同図のようにNANDセルでインバータを構成する場合には、入力の一方であるA004やA005を高レベル(VCC)に固定し、対応するゲートを不活性化することが一般的に行われている。この不活性化されたゲートは、利用可能なゲートの数十%にのぼることがしばしば起こるため、トランジスタのしきい電圧がスケーリングされた低電圧ゲートアレイにおいては、不活性化ゲートを流れるサブスレッショルド電流も無視できない。図中に示すように、VCCからトランジスタMCおよび抵抗RCを介して分離された第2の電源線VCLにトランジスタMA01、MA03のソースを接続し、省電力モードにおいてφCを高レベルにしてMCをカットオフ状態にすれば、トランジスタMA01、MA03のゲート・ソース間が逆バイアスされ深いカットオフ状態になるので、不活性化ゲートのサブスレッショルド電流を大幅に低減出来る。ただし、活性ゲートに関しては、既に述べたと同様に、低消費電力が必要な時間帯、例えば待機時における各ゲート出力の論理状態(図中高レベル:“H"ないし低レベル:“L")に対応して、PチャネルトランジスタのソースはVCCないしVCLに、NチャネルトランジスタのソースはVSLないしVSSにそれぞれ接続すれば、やはりリーク電流を防止できることは勿論である。なお、非活性ゲートについては、動作時においてもトランジスタに電流を流す必要がないので、VCLではなく、最小配線幅で形成されたインピーダンスの高い他の配線を用いても良く、そのような配線に対しては、トランジスタMCは必ずしも必要ではなく、抵抗RCのみとすることも可能である。
図43は、本発明の別の実施例を示す図であって、2入力NORを基本セルにするゲートアレイにおける不活性ゲートに、本発明によるサブスレッショルド電流防止を施した例を示す。同図は図43(B)に示した論理をNORセルで構成した例を示している。図中破線A011、A012、A013が基本NORセルである。NORセルでインバータを構成する場合には、入力の一方であるA014やA015をLOW(VSS)に固定し、対応するゲートを不活性化することが一般的に行われている。このとき、トランジスタMA11、MA13のソースをVSLに接続すれば、既に説明した動作原理によりこれらトランジスタを深いカットオフ状態にすることができ、サブスレッショルド電流を防止できる。
また、LSIチップが大規模化するにつれて、チップ内部に他の回路群をテストするためのテスト回路が内蔵されるのが普通になる。このテスト回路は、テスト時以外の通常動作時には動作を停止させることができる。この場合にテスト回路のサブスレッショルド電流を低減するためには、これまで述べた実施例が有効である。
以上述べた各実施例を、シングルチップ・マイクロプロセッサに適用した例を以下に示す。まずこれまでの電力低減機構を持つマイクロプロセッサについて述べる。従来のマイクロプロセッサでは、チップ全体を一度に制御することにより電力を制御していた。例えば、インテル社のi386SLでは、内部回路が完全スタティックになっているため、チップへのクロックの入力を停止しても内部状態が保持され、再度クロックの入力を再開すれば動作を再開できる。このように、クロックの入力を停止することにより、チップ全体の動作を停止させ、これによりシステム全体の電力を低減しようとしていた。しかしこれは、従来までのように電源電圧が3.3V〜5Vと高い場合にのみ可能であった。CMOS回路を構成するMOSトランジスタのしきい電圧が0.4〜0.5V程度と高くとれるために、サブスレッショルド電流が無視できるほど小さくできるためである。しかし、前述したように、電源電圧が2V以下あるいは0.9〜1.6V程度のような電池1個の電圧で動作させる高速システムでは、もはやクロックを停止しても低電力化はできない。一般に、ランダムゲートを主体とした論理ゲートからなるLSIでは、チップ内の多数の論理ゲートの中で、論理ゲートの入力電圧が変化する論理ゲート数は全体の約2割程度といわれている。その他の約8割の論理ゲートでは、その入力は変化しない。幸いにして従来のCMOS回路ではしきい電圧が高かったために、この8割の数の論理ゲートの電力がほとんど無視できて、チップ全体を低電力にできていたわけである。しかし、停電源電圧ではもはやこれは期待できなくなる。以下、低電源電圧動作においてチップ全体が低電力になるような電子装置の一例としてマイクロプロセッサを取り上げる。
図44に本発明の電力低減機構を内蔵するシングルチップ・マイクロプロセッサを示す。以下に述べるように、チップ内部でユニット別にアクティブ/スタンドバイをコントロールする機構を設けているのが特長である。600がシングルチップのマイクロプロセッサである。このマイクロプロセッサ600上には、中央処理部(以下、CPUと略す)601、コプロセッサA(以下、COPAと略す)602、コプロセッサB(以下、COPBと略す)603、ローカルメモリ(以下、LMと略す)604、バス制御部(以下、BUSCと略す)605が内蔵されている。これらの各ユニットはチップ上の内部バス651によって接続されている。また、チップ外部とはBUSC605を介して、外部バス652と接続される。外部バス652にはメインメモリ(以下、MSと略す)606、入出力デバイス(以下、IOと略す)607等が接続される。CPG606はクロックジェネレータであり、チップ内部の各ユニットはCPG606から生成されるクロック信号653に同期して動作する。
COPA602、COPB603、LM604は、それぞれ二つの動作状態を持っている。その一つはスリープ状態である。この状態では、各ユニットの動作は停止しており、消費される電力は極めて小さい。他の一つはアクティブ状態である。この状態では、ユニットがデータの読み出し/書き込み動作や演算処理動作等の処理を実行している。このため、消費電力を極めて小さく抑えることはしない。これらの各ユニットを構成する論理回路は、例えば図18〜26、図28〜32、図39〜41等の回路を使用している。これにより、スリープ状態の消費電力を低減できる。さらにアクティブ状態においても、例えば図39〜41の回路を用いて、2相クロックのフェーズごとにきめ細かく活性化状態をコントロールすることにより、電力を低減できる。MS606とIO607もアクティブ/スリープ状態を持つ。マイクロプロセッサ600から出力される信号654及び655は、MS606とIO607がそれぞれアクティブ状態になることを指示する信号である。
COPA602,COPB603は、基本的に同種のユニットで、CPUで実行されたプログラム中にCOPAあるいはCOPBの演算を要求する命令があるときだけ、指定された演算を実行する。この時だけアクティブとなり、他の期間はスリープで良い。通常のプログラムでは、この演算要求の頻度はそれほど高くない。内部には、多量のレジスタファイル,トランジスタ数の多い専用演算器を(時には複数個)もち、全体のトランジスタ数が多いのが特徴である。
また、LM604は、CPUが必要とするプログラムやデータが格納されているため、アクセス頻度は高い。しかし、CPU内部にキャッシュメモリが内蔵されているような場合には、CPU内部で閉じて処理が行われるため、アクセス頻度が下がり、スリープ状態の期間が長くなる、といった特徴がある。
CPU601は、命令を実行し、データを処理する部分で、常にプログラムを実行している(活性化率100%)。CPU内部は汎用レジスタ,演算器など通常のプロセッサの基本部分が含まれる。時には、キャッシュメモリを含む場合もある。命令やデータは、LM604あるいはMS606に格納されている。LM604は小容量であるが高速にアクセス可能なオンチップ上のメモリで、頻繁にCPU601によって使われる命令やデータが格納されている。それほど頻繁にアクセスする必要のない命令やデータは大容量であるが中低速なメモリのMS606に格納されている。CPU601は内部バス651を介して直接LM604をアクセスすることができる。一方、MS606に対するアクセスは、内部バス651、BUSC605、外部バス652を介する。BUSC605は、32〜128ビット幅程度の外部バス用バッファを含む。CPUがチップ外部のメモリやデバイスに対してアクセスするときだけ、アクティブになれば良い。CPUが必要とするプログラムやデータがチップ内部に存在するときにはスリープ状態で良い。
COPA602は乗算、除算、平方根、絶対値の計算を実行するコプロセッサであり、これらの演算を高速に処理する専用演算器を内蔵する。COPB603は三角関数、距離計算等の関数演算を実行するコプロセッサであり、これらの演算を高速に処理する専用演算器を内蔵する。CPU601は、内部バス651を経由して、COPA602、COPB603内のコマンドレジスタCMDA609、CMDB610に要求する演算を指示するコマンドを書き込むことにより、各コプロセッサに演算の起動をかける。演算の起動がかかるまで、各コプロセッサはスリープ状態にあり、電力をほとんど消費しない。
図45はCOPA602の内部構成図である。内部は二つのブロックITFA700とEXA701からなる。ITFA700は、コマンドレジスタCMDA609、コマンドデコーダDEC706、オペランドレジスタRA702,RB703,RC704、および制御回路CNT705を持つ。EXA701は乗算、除算、平方根、絶対値の計算を高速に処理する専用演算器とそれを制御する制御回路が内蔵されている。内部バス651経由で、CPU601から送られてきたコマンドはCMDA609に保持され、DEC706でそのコマンドがデコードされ、EXA701にそのコマンドで指示された演算を実行させる。コマンドは乗算、除算、平方根、絶対値の4種類がある。演算のためのオペランドはRA702,RB703にCPU601から送られてきたソースオペランドが格納され、演算結果はEXA701で演算終了後、RC704に格納され、CPU601から読み出される。EXA701は演算を行っていないときには、スリープ状態である。DEC706でそのコマンドがデコードされると、EXA701にそのコマンドで指示された演算を実行させる信号が生成され、EXA701が演算を開始する。演算実行中、EXA701はアクティブ状態になる。演算終了後、EXA701はRC704に結果を格納し、CMDA609をゼロクリアする。CMDA609の内容がゼロであることをDEC706が検出し、SLEEP707信号がアサートされることにより、EXA701がスリープ状態に入る。CNT705は各レジスタ609、702、703、704に対するリード/ライト、ゼロクリア等の動作を制御する。ITFA700は、常にCPUからのコマンドを受け付けられるようにするために、常にアクティブ状態である。CPG606から生成されたクロック信号653は、ITFA700で使用される。また、ゲート回路709を介してEXA用クロック信号710が出力され、これがEXA701のクロックとして使われる。SLEEP707がアサートされたときには、ゲート回路709がEXA用クロック710を停止させ、EXA701にクロックが供給されなくなる。これにより、スリープ状態では、EXA701のクロックも停止状態になる。このSLEEP信号によって、例えば、図18〜26あるいは図28〜32等の回路のスイッチが制御され、スリープ状態でのサブスレッショルド電流が低減される。
EXA701の内部には、専用の演算器とともに演算の途中結果を保持しておくレジスタや演算状態を保持するレジスタ、演算制御のためのラッチなどが含まれる。これらのレジスタやラッチには、例えば図35や図37の回路が使用される。図35の回路の場合は、一旦スリープ状態に入るとラッチ内部の状態は破壊される。一方、図37の回路の場合は、スリープ状態に入ってもラッチ内部の状態は破壊されない。このため、一旦スリープ状態に入った後、アクティブ状態に戻ったとき、途中で停止した演算動作を再開することができる。
COPB603は、三角関数、距離計算等の関数演算を実行するコプロセッサであるが、その内部構成および動作はCOPA602と同様である。
図46にLM604の内部構成を示す。MEM901は命令/データ等の情報を格納しておくメモリ部である。MCNT902はCPU601からのアクセス要求を受け取り、MEM901に格納されているデータを読み出したり、MEM901にデータを書き込む制御を行う。CPU601からアクセス要求があったときにMCNT902はMEM901をアクティブ状態にする信号ACT903をアサートしてMEM901を動作状態にする。アクセス要求がないときにはACT903がネゲートされているためMEM901はスリープ状態にある。このACT信号によって、例えば図18〜26あるいは図28〜32等の回路のスイッチが制御され、スリープ状態でのサブスレッショルド電流が低減される。なお、この状態でもメモリには情報が保持されている。MCNT902は、常にCPUからのアクセス要求を受け付けられるようにするために、常にアクティブ状態である。
CPU601がMS606に命令やデータをアクセスする時は、内部バス651、BUSC605、外部バス652を介する。BUSC605はこのときだけアクティブ状態になる。図47にBUSC605の内部構成を示す。BCNT800はCPU601の要求に応じて外部バス652へのアクセスを制御する回路である。OUTB801は内部バス651から外部バス652へデータを流すときに外部バス652をドライブするドライバ回路であり、このときだけアクティブになる。INB802は外部バス652から内部バス651へデータを流すときに内部バス651をドライブするドライバ回路であり、このときだけアクティブになる。BCNT800はCPU601からチップ外部のMS606やIO607に対しての書き込み要求を受け取ると、ACTW803をアサートしてOUTB801をアクティブにする。逆に、BCNT800はCPU601からチップ外部のMS606やIO607からの読み出し要求を受け取ると、ACTR804をアサートしてINB802をアクティブにする。これらのとき以外、OUTB801,INB802はスリープ状態にある。BCNT800は、常にチップ外部に対するアクセス要求を受け付けられるようにするために、常にアクティブ状態である。BCNT800はMS606に対するアクティブ支持信号654とIO607に対するアクティブ指示信号655も出力する。CPU601がBCNT800にたいし、MS606へアクセス要求した場合、BCNT800はそれを検出し信号654をアサートし、MS606をアクティブ状態にする。信号655も同様の目的で使われる。
OUTB801には、例えば図25の出力バッファ回路が使われ、ACTW信号に従ってスイッチSS、SCが制御される。OUTBは、大きな負荷(外部バス652)を駆動するので、チャネル幅の大きなMOSトランジスタを、バス幅(例えば64ビット)の数だけ必要とし、そのチャネル幅の合計は非常に大きい。したがって、OUTBのサブスレッショルド電流を低減することは、システム全体の電流低減に大きく寄与する。
INB802には、例えば図26の入力バッファ回路が使われ、ACTR信号がSB端子に供給される。これにより、スリープ状態のときの内部バス651の電圧レベルを確定させることができる。したがって、このバスに接続されたユニットCOPA、COPB、LMに、例えば図18〜25の回路を用いることができ、これらのユニットのサブスレッショルド電流低減が容易になる。
MS606には、例えばDRAMが用いられる。DRAMとしては、普通のDRAMでもよいが、アイ・イー・イー・イー・スペクトラム、第43頁から第49頁、1992年10月(IEEE Spectrum, pp.43-49, Oct.1992)に記載されているシンクロナスDRAMでもよい。シンクロナスDRAMでは、クロックエネーブル/ディスエーブル信号によってチップ内部へのクロックの供給を制御できるので、この信号を活用すれば効果的に消費電流を低減できる。すなわち、スリープ状態のときはチップ内部へのクロックの供給を停止する。さらに、図26の回路をシンクロナスDRAMの入力バッファとして用い、クロックエネーブル/ディスエーブル信号をSB端子に印加することにより、内部回路のサブスレッショルド電流を低減できる。
図48はマイクロプロセッサ600全体の動作例を示す。横軸は時刻を表し、斜線は各ユニット、各ブロックがアクティブである状態を示す。この例では、CPU601は時刻T1にCOPA602に除算コマンドを発行し、これに従いCOPA602はT1からT2まで除算を実行し、時刻T2に演算終了をCPU601に報告して再びスリープ状態に入る。その後、CPU601は時刻T3にCOPB603に距離計算コマンドを発行し、これに従いCOPB603はT3からT4まで距離計算を実行し、時刻T4に計算終了をCPU601に報告して再びスリープ状態に入る。LM604はCPU601からデータのアクセス要求があるときだけアクティブになる。BUSC605もCPU601が外部にたいしてアクセスするときだけアクティブになる。このように、マイクロプロセッサ600内部できめ細かく各ユニット、各ブロックのアクティブ/スリープ状態を制御することによりマイクロプロセッサ600の消費電力を大幅に低減することが可能になる。
本実施例は一つのチップ内部での本発明を適用したケースであるが、これを複数のチップからなる、計算機システムの実施例にも拡張することは自明である。例えば、第44図における601から605の各ユニットがそれぞれ別チップで構成されるケースで本発明を適用することは容易である。
本発明は上記に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。