関連する可能性のある最低レベルから開始します(さらに低いレベルから開始できますが、おそらくあまりにも無関係です)、Atomから電気、トランジスタ、ロジックゲート、集積回路(チップ/ CPU )、およびアセンブリで終了します(より高いレベルに精通していると思います)。
はじめに
原子
原子は、電子、陽子、および中性子(それ自体が素粒子で構成されています)で構成される構造です。電子は可動であるため(つまり、移動がより困難な陽子や中性子とは異なり、比較的簡単に動き回ることができます)、内部に保持されることなく自然に自由に浮遊するため、コンピューターや電子機器にとって原子の最も興味深い部分は電子ですアトム。
通常、各原子には同じ数の陽子と電子があり、これを「中性」状態と呼びます。それが起こると、原子が余分な電子を失ったり獲得したりする可能性があります。この不均衡な状態の原子は、それぞれ「正に帯電した」原子(電子よりも陽子が多い)および「負に帯電した」原子(陽子よりも電子が多い)と言われています。
電子は構成不可能であり、破壊不可能です(量子力学ではそうではありませんが、それは私たちの目的には関係ありません)。そのため、原子が電子を失った場合、近くの別の原子が余分な電子を受け取るか、電子が自由に浮遊する電子に放出されなければなりませんでした。または自由に浮遊する電子から。電子のメカニズムは、正に帯電した原子の近くに負に帯電した原子がある場合、両方の原子が同じ電荷を持つまで電子が移動するというものです。
電気
電気は、非常に多数の負に帯電した原子のある領域から非常に多くの正に帯電した原子のある領域への電子の流れです。特定の化学反応により、1つのノードに多くの負に帯電した原子(「アノード」と呼ばれる)があり、別のノードに多くの正に帯電した原子(「カソード」と呼ばれる)が生じることがあります。反対の電荷を持つ2つのノードをワイヤで接続すると、電子の塊がアノードからカソードに流れ、この流れを「電流」と呼びます。
すべてのワイヤが電子を同じように簡単に伝達できるわけではなく、「抵抗性」材料よりも「伝導性」材料の方がはるかに簡単に電子が流れます。「導電性」材料の電気抵抗は低く(ケーブル内の銅線など)、「抵抗性」材料の電気抵抗は高い(ゴム製ケーブル絶縁など)。ある種の興味深い材料は半導体と呼ばれます(シリコンなど)。それらは抵抗を簡単に変更できるため、特定の条件下では半導体が導体として機能し、他の条件では抵抗に変わる場合があります。
電気は常に抵抗が最小の材料を流れることを好むため、カソードとアノードを2本のワイヤで接続すると、1本は非常に高い抵抗を持ち、もう1本は非常に低い抵抗を持ち、電子の大部分は低抵抗ケーブルを流れ、ほぼ高抵抗材料には何も流れません。
中世
スイッチとトランジスタ
スイッチ/フリップフロップは通常の照明スイッチのようなもので、2本のワイヤの間にスイッチを配置して、電気の流れを遮断または復元できます。トランジスタはライトスイッチとまったく同じように機能しますが、物理的にワイヤを接続および切断する代わりに、トランジスタはベースノードに電気があるかどうかに応じて抵抗を変更することで電気の流れを接続/切断します。 / know、トランジスタは半導体で作られているため、電流を接続または切断するための抵抗器または導体になるように半導体を変更できるためです。
トランジスタの一般的なタイプの1つであるNPNバイポーラジャンクショントランジスタ(BJT)には、「ベース」、「コレクタ」、「エミッタ」の3つのノードがあります。NPN BJTでは、「ベース」ノードが充電されている場合にのみ、「エミッタ」ノードから「コレクタ」ノードに電気が流れます。ベースノードが充電されていない場合、実質的に電子は流れません。ベースノードが充電されている場合、エミッタとコレクタの間を電子が流れます。
トランジスタの挙動
(対話型グラフィックスを使用すると、私よりもうまく説明できるため、続行する前にこれを一読することを強くお勧めします)
ベースとコレクターの電源にトランジスタを接続し、コレクターの近くに出力ケーブルを配線するとします(http://www.spsu.edu/cs/faculty/bbrown/web_lecturesの図3を参照してください) / transistors /)。
ベースにもコレクタにも電気を供給しないと、話すべき電気がないため、電気はまったく流れません。
B C | E O
0 0 | 0 0
ベースではなくコレクターに電気を適用すると、ベースが高抵抗材料になるため、電気がエミッターに流れなくなり、電気が出力ワイヤに逃げます。
B C | E O
0 1 | 0 1
コレクターではなくベースに電気を適用すると、コレクターとエミッターの間に電荷の差がないため、電気も流れません。
B C | E O
1 0 | 0 0
ベースとコレクタの両方に電気を印加すると、トランジスタに電気が流れますが、トランジスタは出力ワイヤよりも抵抗が低いため、出力ワイヤにはほとんど電気が流れません。
B C | E O
1 1 | 1 O
論理ゲート
1つのトランジスタ(E1)のエミッターを別のトランジスター(C2)のコレクターに接続し、最初のトランジスター(O)のベース近くに出力を接続すると(http://www.spsu.eduの図4を参照) / cs / faculty / bbrown / web_lectures / transistors /)、興味深いことが起こります。また、最初のトランジスタ(C1)のコレクターに常に電気を供給しているため、トランジスタ(B1、B2)のベースノードのみで遊んでいるとします。
B1 B2 C1 E1/C2 | E2 O
----------------------+----------
0 0 1 0 | 0 1
0 1 1 0 | 0 1
1 0 1 0 | 0 1
1 1 1 1 | 1 0
テーブルを要約して、B1、B2、およびOのみが表示されるようにします。
B1 B2 | O
---------+-----
0 0 | 1
0 1 | 1
1 0 | 1
1 1 | 0
Loとbehold、ブールロジックやロジックゲートに精通している場合は、これがまさにNANDゲートであることに注意してください。また、ブール論理および/または論理ゲートに精通している場合は、NAND(およびNOR)が機能的に完全であること、つまりNANDのみを使用すると、他のすべての論理ゲートとその他の真実テーブル。つまり、NANDゲートのみを使用してコンピューターチップ全体を設計できます。
実際、ほとんどのCPUは、NAND、NOR、AND、ORなどを組み合わせて使用するよりも製造コストが安いため、NANDのみを使用して設計されています(または使用されていますか?)。
NANDから他のブール演算子を導出する
すべてのブール演算子の作成方法については説明しませんが、NOTゲートとANDゲートのみを作成します。残りは他の場所で見つけることができます。
NAND演算子を指定すると、NOTゲートを構築できます。
Given one input B
O = NAND(B, B)
Output O
NAND演算子とNOT演算子を指定すると、ANDゲートを構築できます。
Given two inputs B1, B2
C = NAND(B1, B2)
O = NOT(C) // or NAND(C,C)
Output O
同様の方法で他の論理ゲートを構築できます。NANDゲートは機能的に完全であるため、2つ以上の入力と1つ以上の出力を持つ論理ゲートを構築することも可能です。ここでは、そのような論理ゲートの構築方法については説明しません。
啓蒙時代
ブールゲートからチューリングマシンを構築する
CPUは、チューリングマシンのより複雑なバージョンです。CPUレジスタはチューリングマシンの内部状態であり、RAMはチューリングマシンのテープです。
チューリングマシン(CPU)は、次の3つのことを実行できます。
- テープから0または1を読み取る(RAMからメモリのセルを読み取る)
- 内部状態を変更する(レジスタを変更する)
- 左または右に移動します(RAMから複数の位置を読み取ります)
- 0または1をテープに書き込みます(メモリのセルにRAMに書き込みます)
この目的のために、組み合わせロジックを使用してWolframの2ステート3シンボルチューリングマシンを構築しています(最新のCPUはマイクロコードを使用しますが、目的に必要なものよりも複雑です)。
Wolframの(2,3)チューリング機械の状態表は次のとおりです:
A B
0 P1,R,B P2,L,A
1 P2,L,A P2,R,B
2 P1,L,A P0,R,A
上記の状態テーブルを真理値表として再エンコードします。
Let I1,I2 be the input from the tape reader (0 = (0,0), 1 = (0,1), 2 = (1,0))
Let O1,O2 be the tape writer (symbol encoding same as I1,I2)
Let M be connected to the machine's motor (0 = move left, 1 = move right)
Let R be the machine's internal state (A = 0, B = 1)
(R(t) is the machine's internal state at timestep t, R(t+1) at timestep t+1)
(Note that we used two input and two outputs since this is a 3-symbol Turing machine.)
R 0 1
I1,I2
(0,0) (0,1),1,1 (1,0),0,0
(0,1) (1,0),0,0 (1,0),1,1
(1,0) (0,1),0,0 (0,0),1,0
The truth table for the state table above:
I1 I2 R(t) | O1 O2 M R(t+1)
-------------+--------------------
0 0 0 | 0 1 1 1
0 0 1 | 1 0 0 0
0 1 0 | 1 0 0 0
0 1 1 | 1 0 1 1
1 0 0 | 0 1 0 0
1 0 1 | 0 0 1 0
私は実際にそのような論理ゲートを構築するつもりはありません(SEでそれをどのように描画するかわかりません、おそらくかなり巨大になるでしょう)が、NANDゲートが機能的に完全であることを知っているので、方法がありますこの真理値表を実装する一連のNANDゲートを見つけます。
チューリングマシンの重要な特性は、固定状態テーブルのみを持つチューリングマシンを使用してストアドプログラムコンピューターをエミュレートできることです。したがって、Universal Turing Machineは、命令を内部状態テーブルにハードコーディングする代わりに、テープ(RAM)からプログラムを読み取ることができます。つまり、(2,3)チューリングマシンは、(ハードウェアとして)論理ゲートの実装にハードコーディングされる代わりに、(ソフトウェアとして)I1、I2ピンから命令を読み取ることができます。
マイクロコード
最近のCPUの複雑さが増しているため、組み合わせロジックのみを使用してCPU全体を設計することは非常に困難になります。最近のCPUは通常、マイクロコード命令のインタープリターとして設計されています。マイクロコードはCPUに埋め込まれた小さなプログラムで、CPUが実際のマシンコードを解釈するために使用します。このマイクロコードインタープリター自体は、通常、組み合わせロジックを使用して設計されています。
レジスタ、キャッシュ、およびRAM
上記のことを忘れてしまいました。どのように何かを覚えていますか?テープとRAMはどのように実装しますか?答えは、コンデンサと呼ばれる電子部品にあります。コンデンサは充電式バッテリーのようなもので、コンデンサを充電すると余分な電子が保持され、電子を回路に戻すこともできます。
コンデンサに書き込むには、コンデンサを電子で満たすか(書き込み1)、コンデンサが空になるまですべての電子を排出します(書き込み0)。コンデンサの値を読み取るために、放電を試みます。放電しようとしたときに電気が流れていない場合、コンデンサは空です(0を読み取る)が、電気を検出する場合、コンデンサを充電する必要があります(1を読み取る)。コンデンサを読み取ると電子ストアが消費されることに気付くかもしれませんが、最新のRAMには定期的にコンデンサを再充電する回路があり、電気がある限りメモリを保持できます。
CPUで使用されるコンデンサには複数の種類があり、CPUレジスタと高レベルのCPUキャッシュは、実際にはトランジスタから構築された非常に高速な「コンデンサ」を使用して作成されます(したがって、それら)、これらは静的RAM(SRAM)と呼ばれます。メインメモリRAMは、より低い電力でより低速で安価なコンデンサを使用して作成されますが、これらはダイナミックRAM(DRAM)と呼ばれます。
時計
CPUの非常に重要なコンポーネントはクロックです。クロックは、処理を同期するために定期的に「チック」するコンポーネントです。クロックは通常、よく知られた比較的一定の発振周期を持つクォーツまたはその他の材料を含み、クロック回路はこの発振を維持および測定して時間感覚を維持します。
CPU動作はクロックティック間で行われ、ティックで読み取り/書き込みが行われ、すべてのコンポーネントが同期して移動し、中間状態にあるときに相互にトランプルしないようにします。(2,3)チューリングマシンでは、クロックティックの間に、電気が論理ゲートを通過して、入力(I1、I2、R(t))からの出力を計算します。とにクロックティック、テープライタはテープにO1、O2を書き込む、Mの値に応じて移動するモータ、及び内部レジスタRの値から書き込まれ(T + 1)、次いでテープリーダ現在のテープを読み取り、I1、I2に充電し、内部レジスタがR(t)に再読み取りされます。
周辺機器と話す
(2,3)チューリングマシンがモーターとどのようにインターフェイスするかに注意してください。これは、CPUが任意のハードウェアとインターフェイスする方法の非常に簡略化されたビューです。任意のハードウェアは、入力/出力のために特定のワイヤをリッスンまたは書き込むことができます。(2,3)チューリングマシンの場合、モーターとのインターフェイスは、モーターが時計回りまたは反時計回りに回転するように指示する1本のワイヤです。
何本機に言わないが残っていると、モーターがマシンの内部「時計」を起動し、実行を停止するために知っておくと同期して実行する別の「時計」を持っていたということですので、これは例である同期データ伝送。他の一般的に使用される代替の非同期伝送では、割り込みラインと呼ばれる別のワイヤを使用して、CPUと非同期デバイス間の同期ポイントを通信します。
デジタル時代
マシンコードとアセンブリ
アセンブリ言語は、人間が読める機械語コードのニーモニックです。最も単純なケースでは、アセンブリとマシンコードの間に1対1のマッピングがあります。最新のアセンブリ言語では、いくつかの命令が複数のオペコードにマッピングされる場合があります。
プログラミング言語
私たちは皆、これに精通していますか?
いや、最後に、たった4時間ですべてを入力したので、どこかに間違いがあると確信しています(私は主にプログラマであり、電気技師でも物理学者でもないので、露骨に間違っていることがいくつかあるかもしれません)。間違いを見つけた場合は、担当者がいる場合や補完的な回答を作成する場合は、@ yellを与えるか、自分で修正してください。