プレイする

← fab24hrブログ

チップの基本約8分

論理ゲートとは? スイッチはどうやって計算するチップになる?

論理ゲート(論理回路の基本部品)は、数個のトランジスタをつないだ小さな回路です。入力の線が0か1かを見て、決まったルールで、出力の線を0にするか1にするかを決めます。いちばん基本的なのは3つです。NOT(1が入ると0を出す、逆にする)、AND(両方が1のときだけ1を出す)、OR(どちらかが1なら1を出す)。チップが足し算をしたり、大小を比べたり、条件で次にすることを決めたりできるのは、とてもたくさんの論理ゲートを何段にも組み上げているからです。

トランジスタという小さなスイッチがどんな形をしているかは、「トランジスタとは?」へ。この記事は、スイッチから上へ積み上げていきます。

チップの中の0と1って、結局なに?

0と1は、1本の線の電圧が低いか高いかです。線が電源につながれば電圧が高く、1。グラウンド(電圧ゼロの側)につながれば電圧が低く、0。論理ゲートがしているのは、入力の線の電圧を見て、スイッチで出力の線を電源かグラウンドにつなぐことです。

今のチップでは、スイッチは2種類あり、対にして使います。ひとつは、トランジスタの門(ゲート)に電圧がかかる(入力が1)とオンになる種類で、n型と呼びます。出力とグラウンドのあいだに置かれ、出力を0に引き下げる役です。もうひとつはその逆で、門に電圧がかかっていない(入力が0)とオンになる種類で、p型と呼びます。出力と電源のあいだに置かれ、出力を1に引き上げる役です。この組み合わせ方をCMOSといいます(「CMOSとは?」)。

いちばん簡単な論理ゲート:NOTはどうやって「逆」にする?

NOTはインバータとも呼び、入力が1本、出力が1本です。スイッチ1対だけでつくれます。

  • 入力が1:グラウンド側のスイッチがオンになり、電源側のスイッチはオフ。出力はグラウンドにつながり、0です。
  • 入力が0:グラウンド側のスイッチがオフになり、電源側のスイッチがオン。出力は電源につながり、1です。

だから、スイッチが「オン」でも出力が1とはかぎりません。入力が1のとき、オンになったスイッチは、むしろ出力を0に引き下げています。

切り替わっていないとき、2つのスイッチはどちらか1つしかオンになっていません。電源からグラウンドへまっすぐ抜ける道がないので、流れるのはほんのわずかなリークだけです。CMOSが電力をあまり使わないのは、このためです。

スイッチを直列にするのと並列にするのは、何が違う?

水道管のバルブを思い浮かべてください。

  • 直列:1本の管に、バルブが前後に2つ。両方開いているときだけ水が通り、どちらかが閉じていれば通りません。
  • 並列:管が2本並んでいて、それぞれにバルブが1つ。どちらかを開ければ水が通り、両方閉じたときだけ止まります。

スイッチも同じです。2つを直列にすると、両方がオンのときだけ道がつながります。並列にすると、どちらかがオンなら道がつながります。論理ゲートは、この2つのつなぎ方で「いつグラウンドにつなぎ、いつ電源につなぐか」を決めています。

直列と並列のちがい:直列は1本の管にバルブが前後に2つあり、両方開いているときだけ水が通る。並列は2本並んだ管にそれぞれバルブが1つあり、どちらかを開ければ水が通る。スイッチも同じ。
論理ゲートは、この2つのつなぎ方で、いつグラウンドにつなぎ、いつ電源につなぐかを決めています(簡略図)。

NANDとNORはどうつなぐ? ANDとORはどこから来る?

入力がAとBの2本なら、入力1本ごとにスイッチが1対、全部で4つです。

  • NAND(否定論理積):グラウンド側の2つのスイッチを直列に、電源側の2つを並列にします。AとBがどちらも1のときだけグラウンドへの道がつながり、出力は0。どちらかが0なら、電源側の道のどれかがオンになり、出力は1。「ANDを逆にしたもの」という意味です。
  • NOR(否定論理和):逆向きにつなぎます。グラウンド側を並列、電源側を直列にします。どちらかが1なら出力は0に引き下げられ、両方が0のときだけ出力が1です。「ORを逆にしたもの」という意味です。

入力が1のときにオンになるのはグラウンド側のスイッチなので、このつなぎ方(グラウンド側にn型、電源側にp型)で1段組むと、できるのはもともと「逆にする」種類のゲートです。AND(論理積)がほしければ、NANDの後ろにNOTを1つつなぎ、スイッチは全部で6つ。OR(論理和)なら、NORの後ろにNOTをつなぎます。

入力A入力BNANDANDNOROR
001010
011001
101001
110101

NANDだけで何でもつくれるといわれるのはなぜ?

数学的に証明されているからです。「いくつかの0と1を見て、0か1を返す」ルールなら、どんなものでもNANDだけで組み立てられます。NORでも同じことができます。たとえばNANDの2本の入力をつなげてしまえば、NOTになります。ただ、実際のチップは1種類だけでつくるわけではなく、場所をとらないほう、速いほうを選んで使います。

論理ゲートで、どうやって足し算をする?

チップの中の数は2進数で書かれていて、どの桁も0か1だけです。ふつうの10進数で9に1を足すと繰り上がるのと同じで、2進数では1に1を足すと繰り上がります。その桁は0になり、上の桁に1を繰り上げます。

1桁どうしの足し算は、4通りしかありません。

入力A入力B繰り上がりこの桁
0000
0101
1001
1110

「繰り上がり」の列は、両方が1のときだけ1。これはANDです。「この桁」の列は、2つが違うときだけ1。このルールはXOR(排他的論理和)と呼ばれ、4つのNANDでつくれます。ANDとXORを1つずつ使えば、1桁の足し算の回路ができます。これを半加算器といいます。

右の桁から上がってきた繰り上がりもいっしょに足せるようにしたものが、全加算器です。全加算器を1列に並べ、それぞれが繰り上がりを左どなりに渡すようにすれば、小学校で習う筆算と同じように、長い数でも足せます。

足し算からプロセッサまで、あいだに何がある?

足し算ができたら、その上にさらに組み上げます。

  • 大小を比べる:2つの数を引き算して、答えがプラスか、マイナスか、ゼロかを見ます。チップの中では、引き算も足し算の回路でします。
  • 1つを選ぶ:1本の線を切り替えの合図にして、それが1なら1つめの答えを、0なら2つめの答えを通します。これも論理ゲートでつくります。
  • 条件で次にすることを決める:大小を比べた結果を「1つを選ぶ」回路の合図の線につなげば、次にプログラムのどの部分を実行するかを決められます。

プロセッサの中心は、この「足す・比べる・選ぶ」回路と、命令にしたがって1ステップずつそれらを動かす制御の回路です。

計算のあいだは、数をしばらく覚えておく必要もあります。NOTを2つ、頭としっぽをつないで輪にしてみます。1つめが1を出すと2つめは0を出し、その0が1つめに1を出させ続けます。輪が自分で自分を固定するので、電源が入っているかぎり覚えています。プロセッサの中で数を覚えておく小さなマスは、この考え方から来ています(「メモリとプロセッサは何が違う?」)。

チップには論理ゲートがいくつある? 1つずつ描くの?

2入力のNANDはトランジスタ4つ、NOTは2つです。スマートフォンのチップには100億個以上のトランジスタがあるので、そのうち一部だけが論理ゲートになっているとしても、論理ゲートの数は億単位になります。

それだけの数を、1つずつ描くことはできません。設計する人は、ハードウェア記述言語で「この回路が何をするか」を書きます。それを設計ソフトが論理ゲートに置き換え、並べる場所を決め、配線します(「チップはどうやって設計する?」)。

論理ゲートが少し遅い、少しリークするだけで、チップ全体が大きく変わるのはなぜ?

速さ:入力が変わってから出力がついてくるまでには、ほんの少し時間がかかります。デジタル回路の多くは、メトロノームのような合図に合わせて動きます。これをクロックといいます。スマートフォンのプロセッサは1秒に数十億回刻むので、1拍は10億分の1秒より短くなります。信号は1拍のうちに論理ゲートの列を通り抜け、次の拍までに終わらなければなりません。ゲート1つが少し遅いだけで列全体が遅くなり、拍をゆっくりにするしかなくなります。

電力:ゲートが切り替わるたびに、少しの電気を入れては出します。オフのスイッチからも、ほんのわずかな電気が漏れます。これがリークです。1つ分は気にならないほど小さくても、数十億倍すれば、チップ全体の電力と発熱になります(「チップはなぜ電気を使う?」)。

fab24hrでは

ゲームに論理ゲートは出てきません。メインストーリー「チップの一生」は、架空の補聴器チップ「Glowmere」を追いかけます。補聴器のような機器は、ふつう音を数字に変えて処理します(「アナログ半導体とデジタル半導体は何が違う?」)。その数字を処理する回路は、論理ゲートを何段にも重ねたものです。

第1章「12枚をどう分ける」で、あなたは開発ラインの開発インテグレーションエンジニア。第1ロットの12枚をどう分けるかを決めます。中央の条件のほかに、2種類のトランジスタがどちらも遅め、どちらも速め、片方が速く片方が遅めのものをつくります。このずらし方をコーナーといいます。2種類とはn型とp型、論理ゲートの中で対になっているスイッチです。「コーナー」の用語カードの「もう少し詳しく」には、片方が速く片方が遅いもののほうが困る、2種類の足並みがそろわず、回路がそのまま誤動作することがある、と書かれています。第10章「待機電流」では、あなたは後工程工場のテストエンジニアで、何もしていないチップのリークがどこまで高ければ止めるかを決めます。

ゲームの会社、チップ、人物、数字は架空のものです。論理ゲートのつなぎ方や、計算する回路への組み上げ方は、公開されている一般的な資料をもとに書いています。ほかの用語は「半導体工場の業界用語を、やさしく解説」へ。

ゲームのどこで出会うかゲームに論理ゲートは出てきません。メインストーリー「チップの一生」の第1章「12枚をどう分ける」では、補聴器チップGlowmereの第1ロット12枚のうち何枚を、2種類のトランジスタがどちらも速め・どちらも遅め、または片方が速く片方が遅めになるよう、わざとつくるかを決めます。論理ゲートの中で対になっているのが、この2種類のスイッチです。

fab24hrの開発ラインでは、論理ゲートの中の2種類のスイッチを何枚わざとずらしてつくるかを決め、補聴器チップが持ちこたえられるかを見ます。

第1章「12枚をどう分ける」から遊ぶ

先生へ:この記事は「授業でfab24hrを遊ぶ」と組み合わせて授業で使えます。

この記事を引用する「論理ゲートとは? スイッチはどうやって計算するチップになる?」fab24hr、更新。https://fab24hr.com/ja/blog/logic-gates/
授業や非営利の目的なら無料で使えます。投影、プリントへの掲載、生徒への配布もかまいません。fab24hrと明記してください。販売することや、自分の作品として使うことはできません。 誤りを見つけたら報告

ほかの記事

このサイトのほかのページ