これは簡単な答えを持たない広範な質問です。これは、銅線に沿って電子が揺らぐことから、FirefoxでWebサイトをレンダリングするまでの道のりです。下から上に概要を説明し、適切な調査対象を示します。
エンコード番号
基本的な動機は、算術演算を行う場合のように、物事を計算することです¹。最初に確認することは、数値の表現方法です。10進数または3進数を使用する多くのアプローチがあり、8進数システムでさえも考えていますが、最終的には2進数が勝ちました。これで、2つの値を扱うデバイスを作成する必要があることがわかりました。それらをとと呼びましょう。101
バイナリで数値をエンコードする方法は複数あることに注意してください。最初のプロセッサを構築した後、特定の方法で物事を行うことの利点を認識します。一般的な例は、2の補数とIEEEのfloatです。手始めに、単純な自然数に制限してください。
ゲイツ
バイナリエンコーディングを使用するとします。小学校での加算をどのように学んだかを考え、2進数についても同じことを書き留めてください。結局のところ、ブール代数の構成要素はすでに存在しています。論理ゲートを使用して基本的な加算器(およびその他の算術関数)を簡単に構築できます。
このようなゲートを構築する方法は、コンピューターサイエンスの範囲外です。電気工学は、チューブやトランジスタなどを使用した複数のソリューションを提供しています。これに関する質問については、電気工学スタック交換に向かいます。
時計と状態
すべてのゲートが同等に高速であるわけではなく、計算のすべての部分に同じ数のゲートがあるわけではありません。したがって、個々の操作が互いに追い越さないように特別な注意を払う必要があります。グローバルクロックを使用すると便利です。与えられたゲートのネットワークの結果は、サイクルの終了時の出力ワイヤの状態です(ゲートが個々の最終状態に向かってカスケードしている間に大きく変化する可能性があります)。
つまり、1つのサイクルの結果は、次のサイクルが始まるまで保存する必要がある場合があります(ループを配線する場合など)。さまざまな効果を得るために使用できる基本的な要素がいくつかあり、それらはすべてゲートから構築されます。いくつかはフリップフロップと呼ばれます。これらはまた、必要な数のクロックサイクルの数値を格納するレジスタ、要素を構築するためにも使用されます。
アーキテクチャとコマンド
これで、無数のデザインを選択できます。プロセッサはどのような算術演算を提供しますか?コマンドはどのように見えますか?初期の形式が他の設計と比較して簡単なMIPSアーキテクチャを調べることは教育的かもしれません。計画を見てください:
http://ube.ege.edu.tr/~erciyes/CENG311からのオリジナル
基本的には、コマンド、レジスタのセット、ALU、およびコントロールの取得と分解です。コマンドは、どのALU演算を、どのオペランド(保持されているレジスタの数)で実行するか、プログラムカウンタ²の操作方法、またはメモリから/にロード/ストアするレジスタ³をエンコードします³。
さらなる考慮事項
これで、メモリを構築する方法とコマンドを供給する方法を理解したと仮定して、現代的な意味で動作するプロセッサができました。現代のマシンに向かう途中で、多くの選択を行わなければなりません。ここに幾つかあります:
代替案
上記は、歴史がどうなったかによって大きく影響されます。心の異なる別の世界では、コンピューターの動作が異なる場合があります。実際、計算のモデルはたくさんありますが、それらの多くは、多くの場合、実際のマシンの抽象化として役立つという利点があります。有効にするためのある方法私たちの脳の仕事、模倣しようとする試みもあり、神経コンピューティングを、より一般的に利用するために問題解決や自然の中で観察された情報記憶戦略、最も顕著にDNAや量子コンピューティングは。
ですから、おそらく(願わくば)上記の情報は、50年または100年後のすべての古代史です。
- 今日私たちがコンピューターで行っているすべての素晴らしいことは、プロセッサーが1つずつ実行する多くの小さな算術タスクに分けられます。
- モデルでプログラムが制御フローを操作できる場合、これはプロセッサが次の命令を取得するメモリアドレスになります。また、テープなどの固定された命令セットのみを読み取るマシンを想像することもできます。実際、初期の実装はそれを行いました。ジャンプなしはループなしを意味しました。プログラムは、データに応じて完全に展開/展開された一連の命令でした。明らかに、複数の入力データに同じプログラムを使用できる方がより強力です。
- メモリがあると仮定します。プロセッサは正常に機能しますが、一度に処理できるのは非常に多くの値のみです。初期のコンピューターはテープからすべてのデータを読み取り、レジスターに保管していました。私たちが今日知っているように、メモリはなく、書き込み可能な永続ストレージはありませんでした。