コンピュータでやっていること

この記事はシリーズの一部であり、シリーズインデックスにアクセスします。 ( シリーズインデックス )

コンピュータがどのようにして内部と外部(それぞれRAMやCDなど)を「覚える」ことができるようになったので、コンピュータがどのように「記憶しているか」を処理する方法に進むことができます。 私たちは、記憶されているもの(コンピュータに保存されている情報)で何かをすることができます。

主プロセッサはコンピュータとその動作を指示するユーザであるが、主な計算デバイスはCPU(中央処理装置)と呼ばれ、コンピュータのマザーボード上のチップである。 CPUは、ディスプレイから周辺機器に至るまで、コンピュータが行うすべての作業の背後にあります。 マウスやモニタは独自の情報を処理することがありますが、ユーザがCPUを指示するので、そのアクティビティを指示するのはCPUです。

モトローラ、AMD、インテルなど、さまざまなメーカーのCPUにはいくつかの種類があります。 各チップはアーキテクチャが少し異なります(後で説明します)、アセンブリの世界への旅のためにスコープで選択するだけです。 また、私たちがプログラミングしようとしているオペレーティングシステム(後の記事で説明する)を決定することも重要です。 私は、Linuxオペレーティングシステムを実行している32ビットのIntelチップを選択しました。 あなたがここに書かれているものを複製したいのであれば、私はUbuntuなどを使って提案します。

回路基板上のマイクロチップであることから、CPUは、CPUとコンピューティングマシンの残りの部分とを接続するトランジスタおよびピンで構成されている。 しかし、CPUの内部を構成するものは何ですか? 明らかにトランジスタの束。 だから私たちは概念的にアプローチしなければなりません。 CPUは、コマンドおよび命令メモリを処理および記憶するための多くのサポート回路を有する。 これらのことを記述したり考えたりする1つの方法は、最も重要な部分をとり、主にそれらに焦点を当てることです。 CPUの本質は、「レジスタ」と「フラグ」で要約できます。 フラグは別の記事です。

レジスタがCPUのワークベンチを構成します。 それらは、便利でアクセスしやすい場所に情報を格納し、いくつかのストアコマンドまたはコンピュータによって実行される読み取りコマンドを格納する。 したがって、すべてのレジスタが情報を格納していても、すべてのレジスタが同じであるとは限りません。 いくつかは特殊な目的を持っています。

CPUに何かを “実行”させるには、それを指示する必要があります。 バイナリシーケンスが私たちの数字や文字を表しているように、CPUと同じシーケンスが実行する特定の命令を表すことができます。 これらのシーケンスは、そのように使用されるとき、「機械命令」と呼ばれる。例えば、1つの命令は、2つのレジスタを一緒に加算し、その結果を第2のレジスタに入れることである。

しかし、CPUはこれらの命令をどこから得るのでしょうか? まあ、何から…それを待って…もちろん記憶! CPUを「コンピュータ」の他の部分に接続するものの1つは、「アドレスピン」と「データピン」の簡素化です.CPUはアドレスからデータを読み取り、データを書き込むこともできます アドレス(アドレスの内容を変更します)。以下の図は、説明するのに役立ちます:

cpu_memory_revised

CPUはアドレスピンにアドレスコードを置き、データピンの結果を読み込みます。 同様に、CPUはアドレスピンにアドレスコードを、次にデータピンにデータを書き込むことができ、そのデータはメモリのそのアドレスに書き込まれる(記録される)。 これは、データバスとして知られているものを単純化したものです。 データバスには「I / Oアドレス」を持つ周辺機器も含まれています。 もちろん、これは回路上の電圧によってすべて実行されます。

一般に、CPUはメモリから読み出す一連の命令によって導かれる。 このシーケンスは “プログラム”として知られています。これらの命令は、概念的にどれほど後退しても、コンピュータを「実行」するプログラムを構成するものです。コンピュータプログラムは、 データのうち、ゼロとゼロのデータです。

ポインタとティック

CPUは文字通り時計のように動作します。 システムクロックと呼ばれるサブシステムがあります。 電磁気工学のいくつかの魔法のおかげで、CPU内部のすべてのトランジスタなどは、クロックのそれぞれの “チック”(パルス)で動作を同期させます。 これまでは、1つの操作を完了するために複数のクロック「サイクル」を使用していましたが、最近では1つのクロックサイクルで同時に2つまたは4つまたは8つの命令が同時に生成されることがあります。

簡略化された各クロックサイクルで、CPUはメモリから命令をフェッチして実行します。 メモリのすべてのアドレスからフェッチする命令をどのように知っていますか? それは “命令ポインタ”が出現するところです。 命令ポインタは、フェッチされるべき次の命令への「指し示す」(アドレスを含む)。 その命令が実行されると、次の命令のアドレスを保持します。

建築とデザイン

32ビットIntel CPUを搭載していても、多くのメーカーとタイプがあります。 私たちが使用しているチップのタイプは、「Intel Compatible x86 CPU」と呼ばれることがあります。8086,80286,80386 … Pentium Pro、Pentium MMX … Pentium Xeon、Petium Coreなど すごい! そして、AppleがIntelプロセッサに切り替える前に、彼らはPowerPCライン(主にRISCプロセッサ)を持っていたと思う。 プログラマの観点から見ると、これは利用可能なレジスタ、反転されるフラグ、プロセッサの祖先「命令セット」、および算術論理ユニットなどのサブセットの形でのみ影響を与えます。 これらの詳細はすべて、チップ「アーキテクチャ」と呼ばれます。アーキテクチャはチップ自体の設計についても言い表せますが、前者の定義がここで使用されます。

多くのチップは、チップの年齢と比較して古い命令セットまたは以前に受け入れ可能な命令セットを使用して動作することができることを意味する「下位互換性」を持つように構築されています。 しかし、チップは “順方向互換”ではありません。新しいチップの特別な命令は、古いチップの “世代”では機能しません。

チップハードウェアが進歩するにつれて、64ビットで32ビットになるか、キャッシュサイズになるか、それとも小さな修正を加えた命令が実行されることがありますか?

マイクロアーキテクチャ

CPUは特定の “アーキテクチャ”を持っているかもしれませんが、それはファミリまたは系統ですが、常に “マイクロアーキテクチャ”を持っています。マイクロアーキテクチャは、アーキテクチャーを動作させるためにバックグラウンドで動作する顕微鏡ナット、ボルト、 チップ設計者は、正当な理由なく、レジスタを追加するなど、アーキテクチャを変更しません。 しかし、彼らはアーキテクチャをサポートするものを変えることができます。

展性のある意味のあるものは、幅広く常に専門的です。 最も幅広く、おそらく最も重要なのは熱です。 CPUは、電気によって生成された無駄な熱を、単純化するために、それを通って実行します。 この熱は、それが仲間の部品にダメージを与えるだけでなく、自己破壊することもできるので、問題になる可能性があります。 ヒートシンク、サーマルジェル、およびファンはこの問題を解決するのに役立ちますが、チップの消費電力を削減する方法を理解することは、「マイクロアーキテクチャ」の重要な側面です。

マイクロアーキテクチャーの世界におけるもう1つの取り組みは、プロセッサの徹底的な処理を増やすことです。 言い換えれば、それを「速くする」ようにしてください。より多くの命令をより速く進める方法は、通常は秘密で難解です。 それらのほとんどは、プロセッサとデータバスをより速く動作させることを伴う。 関連する技術や技術には、L1とL2のキャッシュ、ハイパーパイプラインなど、以前に聞いたことがあります。

チップのマイクロアーキテクチャのマイナーな変更には、 “Yonah”や “Katmai”などのコードネームが割り当てられています。チップのマイクロアーキテクチャの主な変更点には、コアやNetBurstなどのコードネームが割り当てられています。

平均以上のプログラマ(私は夢を見ることができないのですか?)として、これは皆、本当にあなたに何を意味していますか…あまりありません。 マイクロアーキテクチャーにもかかわらず、チップのアーキテクチャを維持するのに長時間を要するため、プログラムが希望のアーキテクチャのファミリ内の任意のチップ上で実行されることを確実にすることができます。

結論

CPUはトランジスタで作られていることを覚えておくことが重要です。 何百万という 命令コードは数字または文字ではありませんが(そのように表現することはできますが)、数十万の他のスイッチを反転させる一連のスイッチの状態です。 結局、CPUはまだマシンです。

あなたが私の執筆を感謝するなら、私のパトロンを通して私を支えてください。( パトロン )

photo credit: Dad’s computer via photopin (license)

あわせて読みたい

コメントを残す

%d人のブロガーが「いいね」をつけました。