ホーム 開発 彼は CPU が内部でどのように動作するかを知らなかったので、このプログラマーはコードだけを使用して CPU をシミュレートしました

彼は CPU が内部でどのように動作するかを知らなかったので、このプログラマーはコードだけを使用して CPU をシミュレートしました

ダニエル・ハーパーは、ノッティンガム (イギリス) 出身のソフトウェア エンジニアです。彼は、テクノロジー分野での経験にもかかわらず、コンピュータが「内部で」どのように動作するのかをまだわかっていないことに、ある日気づきました。ハードウェアレベルではすごいですね。

それが彼に「But How Do It Know?」という本を読むきっかけを与えました。 J. Clark Scott 著。単純な 8 ビット コンピュータの動作を基本レベル、つまり NAND 論理ゲートから RAM、算術論理演算装置 (ALU)、および CPU のその他の基本コンポーネントに至るまで説明しています。

彼は回路の物理的な側面には興味がないことを認めましたが、システム内のビット フローの説明には興味をそそられました。そこで、前述の本に触発されて、彼は単純なコンピュータを完全にコードで「仮想マシン」として実装することを奨励されました。

このタスクでは、VHDL や Verilog などの特殊な回路設計ツールではなく、Go プログラミング言語を使用することを選択しました。

「シンプルコンピュータ」の誕生

この冒険の結果、 「シンプル コンピューター」が誕生しました。これは、初歩的ではありますが、計算を実行し、キーボード入力を処理し、一連の手作業で設計されたグリフを使用して結果を画面に表示することができるシミュレートされたコンピューターです。

データの入出力は GLFW (ウィンドウと入力を処理するライブラリ) を使用した Go 通信チャネルを使用して処理されましたが、プロジェクトの残りの部分は実際の回路のシミュレーションに基づいていました。

単純なプロジェクトにもかかわらず、彼はコンピューターの基本についてより深く理解することができました。

CPU シミュレーションは、最初は混乱していましたが、正しく動作するまでデバッグおよびテストされた論理ゲートの複雑なネットワークを通じて実現されました。

この CPU の実装により、開発者は加算などの基本演算を実行できるようになりましたが、その結果が「2 + 2 = 5」であったことをユーモアたっぷりに認めましたが、これは途中で遭遇した課題やエラーを反映しています。

このプロジェクトで最も明らかな側面の 1 つは、 初歩的なアセンブリ言語を作成することでした。アセンブラは不完全ではありましたが、作成者は単純なアーキテクチャの限界に直面しながら、低レベルのコーディングを試すことができました。

ハーパーは、限られた命令セットのみを使用してアセンブリでプログラムを作成することがいかに複雑であるか、また特定の最新機能なしで動作することの難しさを発見しました (これは 64 ビット コンピュータではなく 8 ビット コンピュータのシミュレーションであることを思い出してください)現在使用しているものと同じもの)。

現在、私たちの主人公は、最新の CPU の進化を掘り下げ、キャッシュや並列実行などの高度な機能を理解することを目的として、RISC や RISC-V などのより高度なアーキテクチャについて学習し続ける意欲を持っています。

日々の仕事でこれを知っておく必要がありますか?おそらく役に立ちますが、実際には役に立ちませんが、楽しんでいます。

経由 | DJHarper.dev

ダニエル・ハーパーは、ノッティンガム (イギリス) 出身のソフトウェア エンジニアです。彼は、テクノロジー分野での経験にもかかわらず、コンピュータが「内部で」どのように動作するのかをまだわかっていないことに、ある日気づきました。ハードウェアレベルではすごいですね。

それが彼に「But How Do It Know?」という本を読むきっかけを与えました。 J. Clark Scott 著。単純な 8 ビット コンピュータの動作を基本レベル、つまり NAND 論理ゲートから RAM、算術論理演算装置 (ALU)、および CPU のその他の基本コンポーネントに至るまで説明しています。

彼は回路の物理的な側面には興味がないことを認めましたが、システム内のビット フローの説明には興味をそそられました。そこで、前述の本に触発されて、彼は単純なコンピュータを完全にコードで「仮想マシン」として実装することを奨励されました。

このタスクでは、VHDL や Verilog などの特殊な回路設計ツールではなく、Go プログラミング言語を使用することを選択しました。

「シンプルコンピュータ」の誕生

この冒険の結果、 「シンプル コンピューター」が誕生しました。これは、初歩的ではありますが、計算を実行し、キーボード入力を処理し、一連の手作業で設計されたグリフを使用して結果を画面に表示することができるシミュレートされたコンピューターです。

データの入出力は GLFW (ウィンドウと入力を処理するライブラリ) を使用した Go 通信チャネルを使用して処理されましたが、プロジェクトの残りの部分は実際の回路のシミュレーションに基づいていました。

単純なプロジェクトにもかかわらず、彼はコンピューターの基本についてより深く理解することができました。

CPU シミュレーションは、最初は混乱していましたが、正しく動作するまでデバッグおよびテストされた論理ゲートの複雑なネットワークを通じて実現されました。

この CPU の実装により、開発者は加算などの基本演算を実行できるようになりましたが、その結果が「2 + 2 = 5」であったことをユーモアたっぷりに認めましたが、これは途中で遭遇した課題やエラーを反映しています。

このプロジェクトで最も明らかな側面の 1 つは、 初歩的なアセンブリ言語を作成することでした。アセンブラは不完全ではありましたが、作成者は単純なアーキテクチャの限界に直面しながら、低レベルのコーディングを試すことができました。

ハーパーは、限られた命令セットのみを使用してアセンブリでプログラムを作成することがいかに複雑であるか、また特定の最新機能なしで動作することの難しさを発見しました (これは 64 ビット コンピュータではなく 8 ビット コンピュータのシミュレーションであることを思い出してください)現在使用しているものと同じもの)。

現在、私たちの主人公は、最新の CPU の進化を掘り下げ、キャッシュや並列実行などの高度な機能を理解することを目的として、RISC や RISC-V などのより高度なアーキテクチャについて学習し続ける意欲を持っています。

日々の仕事でこれを知っておく必要がありますか?おそらく役に立ちますが、実際には役に立ちませんが、楽しんでいます。

経由 | DJHarper.dev

最新記事一覧