もちろん、遅延の時間を制御することは便利ですが、他の用途はありますか?
16Mhzクロックで、プログラムの各行は1/16000000秒かかりますよね?
非常に大きなラインでも1/16000000秒しかかかりませんか?
8MHzクロックでは、各ラインは2倍の時間を要しますよね?したがって、「メインループ」全体も2倍の時間がかかります。
もちろん、遅延の時間を制御することは便利ですが、他の用途はありますか?
16Mhzクロックで、プログラムの各行は1/16000000秒かかりますよね?
非常に大きなラインでも1/16000000秒しかかかりませんか?
8MHzクロックでは、各ラインは2倍の時間を要しますよね?したがって、「メインループ」全体も2倍の時間がかかります。
回答:
Arduinoに時計があるのはなぜですか?
それはコンピュータやマイクロコントローラなどが機能する方法だからです。
16MHzのクロックでは、プログラムの各行に1/16000000秒かかりますよね?
番号。
非常に大きなラインでも1/16000000秒しかかかりませんか?
番号。
クロックは、マシンコード命令がメモリからフェッチされて実行される速度を定義します。ほとんどの命令は1クロックサイクルかかりますが、一部はそれ以上かかります。
Cコードの1行は、任意の数のアセンブリー命令にコンパイルされ、マシンコード(生の数)に変換されます。これは、行が何を行うかに応じて、1つのアセンブリ命令から数千のアセンブリ命令までのいずれかになります。
8MHzのクロックでは、各ラインは2倍の時間を取りますよね?したがって、「メインループ」全体も2倍の時間がかかります。
チップ内のすべての操作はクロックによって制御されます。クロックが半分の速度である場合、チップは半分の速度で実行されているため、すべての操作に2倍の時間がかかります。
@Majenkoの投稿では回答されていません:はい、8MHzクロックでは、各ラインは2倍の時間を要します。ラインがクロック駆動ではない何か-例えば外部入力-を待たない限り。
@Majenkoの回答に加えて、CPUには、次のステップが開始する前に、命令が完了したことを確認するためのクロックがあります。CPUは多くのトランジスタで構成されています(AtMegaが数百万の範囲内であり、1桁の差があるかどうかを示す参照を見つけました)。
サイクル中、電力はチップを流れ、トランジスタをオン/オフにします。その結果、より多くのトランジスタがオン/オフになります。これが発生している間、チップの一部には「間違った」値があります。これは計算の途中であると考えることができます(1の列と10の列を追加し、 100s列)。これが外界に影響を与えたくないので、(たとえば)出力ピンは、命令が完了するまでラッチされます。指示を完了するのにかかる時間はさまざまですが、製造業者は最悪の状況で最も遅い指示を計算します。
AtMega(Arduinoのチップ)の場合、Atmel(チップを設計した人)は、これは1秒の1 / 20,000,000であると宣言しました-これは20MHzです。
すべてのマイクロプロセッサがすべての命令をサイクルあたり1命令で実行するわけではないことに注意してください。一部の命令は、1、2、または10サイクルかかる場合があります。パイプライン処理により、事態はさらに複雑になります。プロセッサは、あるサイクルで次の命令をフェッチするなどの作業の一部を実行し、次のサイクルで実行する可能性があります。ただし、命令1の実行中に、次の命令をフェッチすることもできます。これを行うには、次に来る命令を推測する必要があります(「goto」に相当するマシンコードの場合-これはループに使用されます)。推測が間違っている場合は、対処する必要があります。それ; 取得した命令を破棄し、次の命令を取得して、サイクルを失います。
命令のパイプライン処理に関するWikipediaのページは、RISCチップのパイプライン処理の例を、命令フェッチ、命令のデコード、実行、メモリアクセス、およびライトバックの5段階で示しています。したがって、実行のある段階で5つの命令を重ねることができます。「書き戻し」フェーズまで、命令は実際には効果がありません。これは組み立てラインと考えることができます。ウィジェットを組み立てるのに7分かかりますが、5つのステージに分解でき、最長のステージは2分かかります。2分に1回、部分的に完成した各ウィジェットは、組み立てラインによって次のステーションに移動されます。あなたは2分ごとに1つのウィジェットを取得します-「時計」は最も遅いステップと同じ速さでのみ刻むことができます。ウィジェットをより速く押し出すと、「ボトルネック」はますます多くのウィジェットをキューに入れます。