0

この質問は、特にどのプログラミング言語にも関係していません。私が思うに、そこにあるすべてのプログラミング言語に関係しています。

したがって、開発者はコードを IDE などに入力します。IDE は、それを直接的または間接的に (おそらく多くの手順が必要です。A を B に変換し、C を C に変換し、D に変換するなど)、機械語 (単なる数字の集まり) に変換します。機械語はどのように解釈され実行されるのか? つまり、コードは最終的になんらかの機械的なものに到達する必要はないのでしょうか?それともどのように実行されるのでしょうか? チップがコードを実行する場合、何がチップを実行しますか? そして、何がそれを実行しますか? そして、何がそれを実行しますか? 何度も何度も。

4

1 に答える 1

3

それについて実際に機械的なことは何もありません。コンピューターの仕組みは電気的なものです。

これは完全な説明ではありません - それには本が必要です。しかし、それはそれがどのように機能するかの基本です。

全体の基本はダイオードとトランジスタです。ダイオードまたはトランジスタは、電気を通すことができる不純物を含むシリコン片から作られています。ダイオードは一方向にのみ電気を流すことができ、トランジスタは「ベース」に供給される電気に比例する量で一方向にのみ電気を流すことができます。つまり、トランジスタはスイッチのように機能しますが、機械的なものではなく、電気を使用してオンとオフを切り替えます。

そのため、コンピュータがメモリからバイトをロードするとき、アドレス アドレスの各ビットに対して個々のワイヤをオンにし、メモリ チップは、それらのアドレス ワイヤによって指定された場所に格納されている値に応じて、各データ ビットに対してワイヤをオンにします。 .

コンピュータが命令を含むバイトをロードすると、CPU の他の部分を制御する個々のワイヤをオンにして、命令をデコードします。

命令が算術演算の場合、1 つのワイヤが算術論理演算装置 (ALU) に接続されているレジスタを決定し、別のワイヤが ALU が加算または減算するかどうかを決定し、別のワイヤが左にシフトするか左にシフトしないかを決定します。

命令がストアの場合、オンになるワイヤは、アドレス ライン、どのレジスタがデータ ラインに接続されているかを決定するワイヤ、および値を格納するようにメモリに指示するラインです。

これらの個々のワイヤがオン/オフされる方法は、ダイオードとトランジスタのこの膨大なコレクションを介して行われますが、回路の設計を管理しやすくするために、これらのダイオードとトランジスタのグループは、標準化されたコンポーネントであるグループにまとめられます: AND、OR、NOT ゲートなどの論理ゲート. これらの論理ゲートには、1 本または 2 本のワイヤが入っており、1 本のワイヤは内部に多数のダイオードとトランジスタを備えています。以下は、すべてのダイオードとトランジスタを配線して OR ゲートを作成する方法の電気回路図です

次に、論理ゲートの抽象化レベルがあれば、CPU を設計するのははるかに扱いやすい仕事です。これは、ロジックゲートチップの束だけを使用して CPU を構築した人の例です: http://cpuville.com

すでに本があることがわかりました!コンピューターをゼロから作る方法についての本 (およびビデオと教材を含む付属の Web サイト) を見つけました。これを見てください:http://nand2tetris.org/

于 2014-05-12T03:14:26.907 に答える