この電圧範囲ではできません。私はsparkfun 3.3は8mhzであり、5.0は16mhzかそのようなものだと思います。とにかく、それは一般的なケースではありませんが、それはベンダーのことでチップベンダーであり、そのためにデータシートを読む必要があります。 arduinosやavrsとはまったく関係がありません。一般的なチップ設計のものです。
はどのようにあなたのマイクロコントローラがどのように速く走ることができます知っていますか?それは非常に読み込まれた質問です、あなたの高速化の定義に依存します。単にクロック周波数であれば、その部分の「データシートを読んで」、ボードデザインによっては使用可能なものから選択してください。外部クロックがない場合は、選択肢があるかもしれません。より制限されているかもしれませんが、クロックソースを逓倍するために使用できるPLIがあるかもしれません。
あなたの定義が速い場合、このタスクを実行できますか、毎秒何回のwhattversか、または特定のタスクを完了するのに必要な壁時計の時間です。それはベンチマークの問題であり、本当に本当の答えがないほど多くの変数があります。はい、それは、x86は、より低いクロックを持って、他のx86よりも速く実行することができますが、歴史的に新しいものは、同じバイナリの古いものよりクロックあたりの処理量が少なくて済みますので、コンパイルを新しいチップmhzにあなたのmipsの一部を戻すかもしれません。これは、同じ言語(マシンコード)を話すだけの異なるチップデザインを使用していることもあります。あなたは短い人よりも速く詩を暗唱することができる背の高い人を持つことができます。英語と同じ詩を使用しても、短くても背の高いものとも関係ありません。
コアのバリエーションは異なりますが、x86アーキテクチャーとは異なるリモートではありません。 xmegaとxmegaとの比較は、レジスタやアドレス空間などが多いため、同じクロックレートでxmegaを「高速」に実行することができます。しかし、1秒あたりの命令はおそらく実際には違いはないかもしれませんが、私の推測はそれほどではありません。
コンパイラがありますが、コンパイラやコンパイラのバージョンやコンパイラの設定を変更したり、同じ高レベルのソースコード(例:C)から生成されたマシンコードを "速く"実行するには、その結果、コードの「スピード」に劇的な影響を与える可能性があります。たとえば、dhrystoneを取ってみると、同じ正確なチップ/ボード上の同じ正確なソースコード、同じクロックレートなどが、異なるコンパイラ、バージョン、またはコマンドライン設定を使用するか、ちょっとした証明ベンチマークのゴッドファーザーは、意味のある情報を提供するのに基本的に役に立たないということです。
マイクロコントローラは、多くの場合、フラッシュでプログラムを実行しているので、問題はさらに悪化しますが、多くはすべてではありませんが、多くは分割または乗算、または両方の機能を備えていますが、全範囲。あなたは8mhzで内部クロックで起動するチップを持っているかもしれませんが、あなたは80mhzと言うまでそれを乗算するためにPLLを使うことができます。しかし、フラッシュが16mhzというようなチップには限られているのは珍しいことではないので、8mhzでフラッシュはアイテムごとにCPUクロックを指示することができますが、20mhzでは待機状態にしなければなりません。あなたは16mhzでしか餌を食べることができないので、より多くを待っていて、何かを得ると速く行動します。それは本当に「速い」か、遅くなってしまいます。確かにこのファンタジーチップのわずか16mhz以下で、私はあなたがゼロ待機状態に保つことができるので、本当に速く、必ずしも他の要因が2倍ではないが間違いなく8mhzより速いことを説明しています。ちょうど16mhz以上に比べて巨大なパフォーマンスのヒットを取るが、16mhz以上。ちょうど32mhzのちょうど下に比較してかなり速いが32mhzのちょうどのところで、クロックが基本的に同じであるにもかかわらず、もうちょうど32mhzの別の待ち状態設定とはるかに遅い。
次に、CPUが実際にフェッチするのは、0x1004に分岐した場合にすべてを実行しなくても、フェッチトランザクションごとに多数のデータをフェッチするようなものです。アドレス0x2008への分岐がある場合、コアは0x1000から0x100Fまで0x10バイトをフェッチした後、0x1004ワード/命令を抽出し、それをデコードして分岐してから0x2000から0x10バイトを読み込みます。基本的に0x20バイトを読み取って2つの命令を検索します。両方が0x10バイトにある場合は2つの命令を実行し、1つが0x100Cにある場合には良好で、もう1つがパフォーマンスヒットである0x2000にある場合は、この内部情報を取得してアプリケーションに適用し、1行のコードを変更するか、または1つのnopをブートストラップに追加または削除すると(プログラムのアドレス空間が変更される)、パフォーマンスの大きな変化から小さなものへの変更、プログラムのソースコードの2つのヘルパー関数の置き換え、テキスト内でのコンパイル後に別のアドレス空間に上陸させることは、関数自体を実際に変更することなく、
パフォーマンスは、最初は尊敬の念を払うのは愚かな作業ですが、それ以外の点では、使用しているハードウェアで使用しているコンパイラで書かれたプログラムだけです。コンパイラの設定やコード、あるいはその両方を変更することで、その日のそのコンパイラでそのコードをより高速にするためにできることがあります。理想的には、最終的なファームウェア、パフォーマンステストを構築し、1年か2年後に別のコンパイラやコンパイラバージョンを使用して別のホストコンパイラを使用していて、すべてのベットが性能低下しているかのように、
どのようにボードを選びますか、どのくらいのフラッシュ、ラム、機能、クロックレート。多くのことが試行錯誤の経験ですが、幸いなことに、数百ドルのボードを試すことができ、数十ドルから数十ドル、それぞれのCPUのアーキテクチャが異なるチップベンダーなどがあります。多くのコンパイラの選択肢があり、使用できる言語さえありますが、基本的に選択肢が簡単に入手できない場合があります。部品がかなり安い日に戻ってくるのとは異なり、自分のボードを構築して、独自のアセンブラなどを作成することもできます。数百から数千ドルのロムプログラマが必要です。したがって、あなたが持っている機能とAVRを使い、コンパイラでプレイしたり、あるいはその両方を書くことができます。フェッチ効果があるかどうかを確認するための実験を行います。あなたがクロッキングの選択肢を持っていれば、何が起こるか見ることができます。
もちろん、これはすべて、ベンダーのチップドキュメントを読むことから始まります。
「より低い周波数のCPUは、実際にはインテルなどのより高い周波数のCPUよりも高速に実行できるように思われる」とはどういう意味ですか? –
AVRが一般的なCPUよりも速いのはなぜだと思いますか? –
最後の1つ:コンピュータのCPUには、mpeg解読、暗号化、ネットワークチェックサムの計算などの一般的なコンピューティングタスクを加速するために使用される余分な部分がたくさんあります。これらのサブタスクは多くの "メインCPU"一部の低速クロックCPUでは、高速化されていないクロックよりも高速にコードを実行できます。同じ考え方では、ハードウェアSPIまたはシリアルは、CPUのタイミングとスロットルを削除する必要があるビットバンギングバージョンよりもはるかに少ないCPUを使用します。これらのソフトケースでは、クロック速度がより速いため、「エミュレーション」がより正確で一貫性があります。 – dandavis