マイクロコントローラなどの比較的単純なデバイスがCPUよりもはるかに遅いのはなぜですか?


25

同じ数のパイプラインステージと同じ製造ノード(たとえば65 nm)と同じ電圧を考えると、単純なデバイスはより複雑なデバイスよりも高速に動作するはずです。また、複数のパイプラインステージを1つにマージすると、ステージの数よりも大きな要因で速度が低下することはありません。

次に、2.8 GHzで14パイプラインステージを実行する5年前のCPUを使用します。ステージをマージするとします。それは200 MHz以下に遅くなります。電圧を上げて、ワードあたりのビット数を減らします。それは実際に物事をスピードアップするでしょう。

そのため、AVLなどの現在製造されている多くのマイクロコントローラーが極度の速度(5 Vで20 MHzなど)で動作する理由を理解できませんが、数年前に製造されたはるかに複雑なCPUは150倍または10倍高速で実行できました1.2 V-ishで、すべてのパイプラインステージを1つにロールする場合。最も粗い封筒の計算によれば、マイクロコントローラは、たとえ時代遅れの境界技術を使用して製造されたとしても、供給される電圧の4分の1で少なくとも10倍速く動作するはずです。

したがって、質問:マイクロコントローラのクロック速度が遅い理由は何ですか?


8
ファブは有償であるため、マイクロコントローラーのかなりの部分は、時代遅れの古い技術で製造されています。
マットヤング

18
力。両方のCPUの電力消費を考慮に入れると、それらは同じパフォーマンス/ワットに非常に近くなります。そうでなければ、マイクロが勝ちます。
ブライアンドラモンド

34
単純な==速いという考えは単純に間違っています。マルチレベルキャッシュ、パイプライン、分岐予測など、現代のcisc CPUの複雑さの多くは、それを高速化する機能に組み込まれています
PlasmaHH

1
その古いCPUは、数ヶ月/年の間、小さなバッテリーで動作しません。当時は最先端の(読まれた:高価な)テクノロジーを使用していました。命令ごとにスロー/安いフラッシュを待つ必要はありませんでした。mcuを高速で実行する必要はめったにありません。開発者のために新しいベリログを取得して、あらゆるファウンドリに実装できます。私は自転車対フォーミュラ1の車のコメントが一番好きです、私はそれをまとめると思います。
-old_timer

14
20 MHzはまったく遅くありません。私たちは、ほとんどのリソースが派手なグラフィックスのレンダリングに使用されるPCのGHz​​速度に甘やかされています。キロヘルツプロセッサで月に飛ぶことができます
...-vsz

回答:


66

速度に寄与する他の要因があります。

  • メモリ:実際のパフォーマンスは、多くの場合、メモリレイテンシによって制限されます。Intel CPUには、これを補うための大きなキャッシュがあります。マイクロコントローラーは通常そうではありません。フラッシュメモリはDRAMよりもはるかに低速です。

  • 消費電力:これは、組み込みアプリケーションではしばしば大きな問題になります。実際の200 MHz Intel CPUは10ワット以上(多くの場合より多く)を消費し、大きなヒートシンクとファンが必要でした。それにはスペースとお金が必要であり、外部のロジックとそれに付随するメモリも数えていません。20 MHzのAVRはあなたが必要なものがすべて含まれ、0.2ワット程度かかります。これはプロセスにも関連しています-トランジスタが高速になるとリークが発生しやすくなります。

  • 動作条件:Dmitryがコメントで指摘しているように、多くのマイクロコントローラーは広い電圧および温度範囲で動作できます。上記のATMegaは-40C〜85Cで機能し、-65C〜150Cの任意の場所に保存できます。(他のMCUは最大125Cまたは155Cまで動作します。)VCC電圧は2.7V〜5.5V(ピーク性能の場合は5V +/- 10%)のいずれかです。このCore i7データシートは、製造中に許容されるVCCを調整するため読みにくいですが、電圧および温度の許容範囲は確かに狭くなります(最大3%の電圧許容範囲および105Cの最大接合部温度)。(最低5Cですが、100アンペア以上を引いている場合、最低温度は実際には問題になりません。)

  • ゲートカウント:単純であることが常に速いとは限りません。もしそうなら、IntelはCPUアーキテクトを必要としません!パイプライン処理だけではありません。高性能FPUなども必要です。それは価格を上げます。そのため、多くのローエンドMCUには整数のみのCPUが搭載されています。

  • ダイ領域の予算:マイクロコントローラーは、多くの機能を1つのダイに収める必要があり、多くの場合、アプリケーションに使用されるすべてのメモリが含まれます。(SRAMと信頼性の高いNORフラッシュは非常に大きい。)PC CPUはオフチップメモリ​​と周辺機器と通信します。

  • プロセス:これらの5V AVRは、古代の低コストプロセスで作られています。覚えておいて、彼らは安価であるように一から設計されました。インテルは、お金で買える最高のテクノロジーを使用して、消費者製品を高いマージンで販売しています。Intelは純粋なCMOSも販売しています。MCUプロセスでは、オンチップフラッシュメモリを作成する必要がありますが、これはより困難です。

上記の要因の多くは関連しています。

現在、200 MHzのマイクロコントローラーを購入できます(例はこちら)。もちろん、20 MHz ATMegasの 10倍の費用がかかります...

短いバージョンでは、速度は単純さよりも複雑であり、安価な製品は速度ではなく安さのために最適化されています。


11
堅牢性を忘れないでください:ATMegaは4MHzで1.8-5.5Vの範囲で動作している間、供給電圧が5%以上変化すると、典型的なCPUは故障します。
ドミトリーグリゴリエフ

1
@DmitryGrigoryev良い点!回答を更新しました。
アダムHaun

25

速度が遅い主な技術的理由は、安価で小さなMCUがプログラムストレージにオンチップフラッシュメモリのみを使用することです(つまり、RAMから実行されない)。

通常、小型MCUはプログラムメモリをキャッシュしないため、毎サイクル実行する前に常にフラッシュから命令を読み取る必要があります。これにより、確定的なパフォーマンスと#cycles / operationが得られ、安価でシンプルになり、コードとデータが混在してバッファオーバーフローなどの脅威の新しいセットを作成するPCのような問題が回避されます。

フラッシュメモリからの読み取りのレイテンシ(50〜100nsのオーダー)はSRAMまたはDRAMからの読み取り(10nsのオーダーまたはそれ以下)よりもはるかに遅く、そのレイテンシはサイクルごとに発生する必要があり、クロック速度を制限します。部。


4
また、電力(および熱)は周波数とともに直線的に増加します。
キンバリーW

1
フラッシュからの読み取りが100 nsに近いとは思わないでしょうか?IIRCは2桁大きくなっています。しかし、場合お使いのフラッシュコントローラは、小型のDRAMキャッシュを含み、コードがあまりにもbranchyではない、キャッシュヒット率が非常に高くなることが(90%+)あなたの平均待ち時間がたくさん低くすることができるようにします。
–MSalters

2
私が開いたこのAT91SAM7Sデータシートは、その内部フラッシュの内部フラッシュ「最悪の場合の条件での高速アクセス時間、30 MHzシングルサイクルアクセス」について述べています。それは33nsです。また、1ワードのプリフェッチバッファがあります。オフダイFlashの場合、実際にはレイテンシが高くなる場合があります。
pjc50

1
@Jamil正確な式は覚えていませんが、周波数の2乗だと思います。
Jan Dorniak

22

あなたがF1カーを持っているのに、なぜ人々は自転車や小さなバイクに乗るのですか?確かに、時速300 kmで運転し、どこにでもすぐに行く方が良いでしょう。

簡単に言えば、それより速くする必要はありません。つまり、少し高速なマイクロコントローラーがいくつかのことを可能にしますが、1日1時間継続的に使用されている自動販売機で何をするつもりですか?あなたはテレビ用の発言リモコンで何をするつもりですか?

一方、低消費電力、プログラミングがはるかに簡単であるなど、他の重要な機能も備えています。基本的に、それらはプロセッサではなく、さまざまなことを行います。


12
@Michaelどこでシンプル=速いアイデアを得るのですか?
マットヤング

3
@Michael自転車は車よりもずっとシンプルですが、それでも遅いです。いずれにせよ、マットは正しい。単純なものは自動的に高速ではありません。つまり、高い周波数に必要な考慮事項のために、高速なものは複雑になります。
-AndrejaKo

2
高性能CISCプロセッサは、単純な組み込みプロセッサよりも多くの命令を発行する傾向があります。彼らはより多くの作業を並行して行っているため、より複雑で高速です。
キンバリーW

2
@Michael 1ドルは、一部のアプリケーションでは高価になる可能性があります。マイクロSDカードのマイクロコントローラーの価格は約19セントです
-Xen2050

2
@Michael「これがRISCアーキテクチャの背後にある全体的なアイデアです。単純なタスクは複雑なタスクよりも速く処理できます」最新のRISCアーキテクチャは、より多くの命令(SIMDなど)を導入し、スーパースカラー、ハイパースレッディング、アウトオブオーダー実行などの機能をサポートする必要があるため、非常に複雑です。それらの複雑さはCISCアーキテクチャを簡単に上回ります。MIPSには現在、数百または数千の命令があります。「CISC v RISCは、主に歴史的な議論です」
-phuclv

13

数百MHz以上で動作する多くのARMコントローラーがあります。500 MHzのPICが必要で、最新技術に近いプロセスのために100万ドルのマスクを正当化するのに部品ごとに十分な費用を支払う意思があるのは誰ですか?

人気のあるATmega328は350 nmテクノロジーで作られていると伝えられていますが、これは最新のIntel製CPU(Skylakeの場合は 14 nm )にかなり遅れています。

安価な8ビットコントローラーでさえ、徐々に速度が向上し、5 Vで動作する32および64 MHz PICコントローラー(たとえば、PIC18F14K22)を入手できます(後者はシステムの総コストの考慮事項です)。

1つの考慮事項は、これらのコントローラーが小さなメモリ空間と遅いクロック速度に最適化されたアーキテクチャを持っていることです。高いクロック速度になったら、プリスケーラーなどで調整する必要があります。

マイクロコントローラが十分に高速である場合、ファームウェアが周辺機器の代わりになる可能性があるという考えで、非常に高速なPICのようなコントローラを製造しようと試みられました(1990年代後半)。たとえば、UARTをビットバンすることができます。Scenix-> Ubicom-> Qualcomm(ゲームオーバー)のように商業的に成功したとは思いません。


350 nm?それはそれを説明するでしょう。誰もが20年前の技術を使用して何かを製造することを知りませんでした。
マイケル

3
私たちの中には、3000nmのような4000シリーズのCMOSを(単に使用するのではなく)まだ設計しています。
スペロペファニー16

6
古いプロセスは、放射線環境やトレーサビリティを要求する高信頼性システムを扱う人々にとっても潜在的に有用です。
クルナルデサイ

5
ゲームオーバーではありません-Parallax Propellerはそのコンセプトの続きです。
デイブツイード

3
@Michael:技術の時代だけではありません。サイズも重要です。プロセスサイズが大きいほど不良率が低くなり、不良品が少なくなるため、歩留まりが向上し、チップあたりのコストが削減されます。CPU(デスクトップなど)に100ドルを支払う意思がある場合、歩留まりの低下によるコストの増加は正当化されます。50セントしか支払わない場合は、正当化されません。
スリーブマン

3

自動車を製造したいと想像してください。1つのアプローチは、工場で一連の機器を連続して使用し、一度に1台の車を構築することです。このアプローチは、適度に複雑な機器を適度に使用して実行できます。このような多くの機器を使用して、複数のステップを実行できます。一方、工場内の機器の多くは、ほとんどの時間、まだアイドル状態になっています。

別のアプローチは、生産の最初のステップを処理した機器が最初の車でその操作を終了するとすぐに、次の車で対応する操作を開始できるように、組立ラインをセットアップすることです。製造プロセスの複数の段階で1つの機器を再利用しようとすると複雑になるため、ほとんどの場合、1つの非常に特定のタスクを実行するためにそれぞれ最適化された機器をさらに使用することをお勧めします。 10種類のサイズの穴、最小装備のセットアップには10ビットのドリル1つとクイックチェンジメカニズムが含まれますが、組立ラインにはそれぞれ1つの永久的に取り付けられたビットの50ドリルがあり、クイックチェンジは不要です) 。

DSPやGPUなどの場合、実行する作業の性質が非常に一貫しているため、非常に高速で比較的安価に実現できます。残念ながら、多くのCPUは、複雑さが異なる命令の任意のミスチャを処理できる必要があります。これを効率的に行うことは可能ですが、非常に複雑なスケジューリングロジックが必要です。最近の多くのCPUでは、「作業を行う」ために必要なロジックはそれほど複雑でも高価でもありませんが、他のすべてを調整するために必要なロジックはそうです。


2
見逃した場合は申し訳ありませんが、これはCPUと「遅い」マイクロコントローラーとの関連性はどうですか?CPUと(通常はさらに高速な)専用プロセッサーにのみ焦点を当てているようです。
underscore_d

1
@underscore_d:最初の段落では、より単純なマイクロコントローラーについて説明します。これは、一度に1台の自動車を製造する小さな店のようなものです。2番目の段落では、非常に迅速に多くの操作を実行できる安価なコントローラーがありますが、実行できる操作の種類に制限があることに注意してください。難しいのは、任意の組み合わせの操作を実行しながら、それらをかなりの程度(ただし非常に可変性が高い)にオーバーラップできることです。すべてのサイクルで2つの数値を受け入れ、4サイクル前に送信された2つの数値の積を出力するサブシステムがあり、
...-supercat

1
...各サイクルで2つの数値を受け入れ、2サイクル前に送信された値の合計を出力し、値を送信する必要があるとき、結果が利用可能になるとき、物をロードおよび保存するときを把握しようとする別の特に最長のパイプラインに一致するようにすべてのパイプラインをパディングすることを避けたい場合は、レジスタなどに非常に複雑になる可能性があります。
supercat

ありがとう。それはそれをクリアします。ええ、高速の汎用CPUは、パイプライン、キャッシュ、スケジューリング、RAM制御など、「足場」にコストとエネルギーの両方のほとんどのコストを負担することは理にかなっています。マイクロ用。同様に、特定のアプリケーション用に特別に調整されたプロセッサで、比較的小さなクロック周波数で何ができるか、私を驚かせることは決してありません。両側の魅力的なもの!
underscore_d

@underscore_d:MIPSアーキテクチャは、コンパイラがスケジューリングの問題の一部を担当するという前提で設計されたため、ハードウェアを簡素化できます。新しいプロセッサは古いパイプラインよりも多くのパイプラインステージを必要とすることが多いため、この概念は実際には受け入れられませんでしたが、ハードウェアインターロックがない場合、短いパイプラインを備えたプロセッサ用に記述されたコードは長いパイプラインを備えたプロセッサでは機能しません。
-supercat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.