私は文字通りそれが何であるかわかりません。それが何であるかを見つける方法さえ知りません。助けていただければ幸いです。
2 に答える
祖父や他の振り子ベースの時計のカチカチという音を考えてみてください。その場合、完全なティックとトックのサイクルは通常1秒です。そして、時計と時計を使って、重力やバネ式の機械式から、水晶式の電気式のものに移行しました。特定の水晶は、電気的振動を発生させるような方法で回路に使用できます。デジタル電子機器は現在、水晶を使用しているだけでなく、高速で非常に正確なタイミングを得ることができます。したがって、この場合のクロックはこの水晶発振器の電気出力であり、10,000,000Hz(または10MHz)のクロックは、1秒あたり1,000万の電気ティックタックがあることを意味します。それをAND、OR、およびNOTロジックにフィードすると、プロセッサとペリフェラルを実行できます。
少しの間、古いプロセッサまたはマイクロコントローラ、つまりプロセッサとメモリ、およびすべてが同じクロックを使用するものに限定して説明しましょう。このクロック信号がデジタルロジックに供給されると、メモリから命令を読み取り、それらの命令を派生レートで実行するロジックを使用できます。メモリからの値をレジスタにロードする(読み取り)には、3クロックサイクル、メモリから命令をフェッチするための1クロックサイクル、その命令をデコードして実行を開始するための別のクロックサイクルが必要になる場合があります。また、命令はメモリからの読み取りであり、メモリは一度に2つのことを実行できません(このモデルでは)。それはメモリから読み取るための3番目のクロックサイクルであり、次の命令が読み取られて実行されます。したがって、一部のプロセッサは、これらの理由で実行時間を変更します。メモリからの命令のフェッチとデコードおよび実行が常にあり、これらの各ステップには1クロックサイクル以上かかります。一部のプロセッサ設計では、固定の使用を選択します。たとえば、命令サイクルごとに4クロックサイクルを使用し、そのプロセッサの最長実行命令は4クロックサイクルであり、1クロックサイクルしかかからない場合もあります。
その後、状況は良くなり、パイプラインという言葉が聞こえます。x86がクロックごとに1つの命令を実行できる、またはクロックごとに複数の命令を実行できるスーパースカラーのアドバタイズメントが表示されます。それは少し誤解を招くです。パイプラインが行うことは、必要に応じて組立ラインを作成することです。工場のテレビ番組、その作り方などを考えてみてください。南京錠を作る機械は、組み立てラインに沿って多くのステップがあり、各ステップは1つの簡単な操作を実行し、ダイヤルに数字をペイントし、ダイヤルをシャフトに移動し、ダイヤルとシャフトをユニットに挿入します。最後のステップは、実際にはロックごとに30クロックかかった可能性があるのに、組立ラインのサイクルごとに1つのロックを作成しているように見えます。1クロックサイクルのプロセッサでは、パイプラインの1つのメンバーがRAMから命令をフェッチします。次のメモリは前の命令をデコードし、3番目は2命令前に実行します。したがって、パイプまたはパイプラインストールのフラッシュが聞こえた場合、つまり、組立ラインが停止したか、組立ラインを停止してすべてを破棄する必要があります。ライン上のアイテムと新たに開始します。従来、実行されない直後の2つまたはいくつかの命令を意味する分岐命令がある場合、パイプをフラッシュして、分岐がリードしているアドレスから再度充填を開始する必要があります。
あなたが十分長い間周りにいたか、グーグルやウィキペディアの読書をしているなら、あなたは486DXプロセッサについて聞くでしょう。それは今非常に一般的な何かの始まりでした。その前は、プロセッサに単一の水晶発振器ベースのクロックがあり、16MHzのクロックを入れて16MHzでプロセッサを実行したいと考えていました。いくつかの問題があります。1つは、メモリインターフェイスが追いつかないことでした。これに対する非常に簡単な解決策は、プロセッサのピンを取得して、メモリとの通信速度を低下させることです。たとえば、プロセッサは16Mhzで動作します。メインクロックの半分のレートである新しいクロックを作成することにより、8Mhzのメモリ。したがって、16MHzのtick-tock-tick-tockから、ティックでのみ出力をメモリに変更します。したがって、最初の内部ティックは、メモリバスクロック、最初のトックにティックを配置します。メモリ出力に変更はありません。2番目のティックはメモリバスクロックに、3番目のティックはメモリに、4番目のティックはメモリバスに、というように続きます。本当の問題は、I / O自体、プロセッサのすべてのピンが、内部のトランジスタが実行できるクロックレートで実行できなかったときに発生しました。したがって、486DXでは、25MHzのクロックを使用し、アナログマジックを使用して、パーツ内で50MHzのクロックに変換し、パーツのエッジ、メモリ、およびその他のバスは25MHz以下で動作しましたが、プロセッサは命令を十分に速くフィードできる限り(これはキャッシュについての話につながります)、50MHzでパイプラインを実行します。ストールやフラッシングのないバーストでは、1秒あたり5000万命令になります。当時、安定した2倍の乗数を作成するのは難しい作業でした。しかし、今日では比較的些細なことです。最新のマルチギガヘルツプロセッサはギガヘルツクロックを使用せず、100MHz前後のクロックを使用し、プロセッサコア用に数ギガヘルツにスケールアップします。その後、約800mhzDDRメモリまたは1066MHzメモリまたは1333などが聞こえます。100MHzクロックも同様です。リファレンスは、メモリバスの速度を作成するために乗算されます。
そのため、現代のコンピューターでは、昔と同じように、水晶ベースの発振器をクロックソースとして使用します。これは自然の魔法であり、コンピューターの周囲のプロセッサーや周辺機器用にさまざまな速度のクロックを作成します。たとえば、USBインターフェイス、Firewireおよびハードディスクインターフェイス(ide / sata)などのさまざまなクロックレートをグーグルで検索できます。
PICプログラミングに関する他の質問、たとえばPICは、すべてが単一のクロックレートで単一のクロックで実行される従来のタイプのモードであり、私の回答の1つを見ると、 「クロック」サイクルをカウントし、サイクルの単位を使用してカウントします。それが完了すると、4Mhzクロックや1MHzクロックなどの場合のように、乗算または除算に時間の単位を適用できます。コードの同じセクションの実行には100サイクルかかる場合があり、4MHzクロックを使用するプロセッサはこれらの100命令は、1MHz発振器を使用した場合の4倍の速度で実行します。drhirschが示唆したように、少なくともこのような単純なケースでは、ほぼ線形です。最近のコンピューターの場合、同じハードドライブから同じコードでデータを読み取る場合、ハードドライブの速度は同じ低速であり、3GHzプロセッサと1GHzプロセッサの両方が停止しているため、3GHzプロセッサは1GHzプロセッサの3倍の速度ではありません。ハードディスクからのデータを待っています。あなたはフェラーリであるタクシーを持っているかもしれません、しかしあなたが長さと幅が1マイルの年配の遅い人々がいる町に住んでいるなら、あなたのフェラーリはほとんどの時間乗客の積み下ろしに駐車され、数百ヤード。ミニバンは実際にはフェラーリよりも速いでしょう(人々を出し入れすることがボトルネックです)。しかし、長さ1マイル、幅1マイルの年配の遅い人々がいる町に住んでいる場合、フェラーリはほとんどの場合、乗客の積み降ろしに駐車され、数百ヤードの速度ではありません。ミニバンは実際にはフェラーリよりも速いでしょう(人々を出し入れすることがボトルネックです)。しかし、長さ1マイル、幅1マイルの年配の遅い人々がいる町に住んでいる場合、フェラーリはほとんどの場合、乗客の積み降ろしに駐車され、数百ヤードの速度ではありません。ミニバンは実際にはフェラーリよりも速いでしょう(人々を出し入れすることがボトルネックです)。
このコンテキストでは、クロック周波数またはクロック レートは、CPU 内の単一のコマンドまたはコマンドの分割不可能な最小部分が実行される速度です。これは、クロック サイクルの長さの逆数です。
例: Z80 の 1 クロック サイクルは 250 ns 続きます (周波数が 4 MHz のため)、Phenom では 0.333 ns 続きます (周波数は約 3 GHz)。
古いZ80では、あるCPUレジスタから別のCPUレジスタに8ビットデータを移動するのに4クロックサイクルが必要でしたが、現象では同じ操作に1サイクルが必要で、最大3つのそのような命令を並行して実行できます。
これは明らかに CPU のアーキテクチャに依存し、特定の CPU タイプでは、実行速度とクロック周波数にほぼ線形の依存関係があります。