この回答へのコメントで、KortukはARMの利点は何かを尋ねています。最初にいくつかの引数を答えに追加しましたが、質問はそれ自体で質問になるほど面白いので、より多くの回答が可能になると思います。
この回答へのコメントで、KortukはARMの利点は何かを尋ねています。最初にいくつかの引数を答えに追加しましたが、質問はそれ自体で質問になるほど面白いので、より多くの回答が可能になると思います。
回答:
パフォーマンスは1つの利点です。32ビットプロセッサであるため、DMIPS的には(ほぼ)すべての8ビットコントローラーよりも優れています。コアはまた、いくつかの世代を経て、最適化を読み取りました。
これらの最適化は、パフォーマンスの数値だけでなく、電力消費量にも表示されます。最新のコアのDMIPS / mW比は、前世代と比較して2倍になりました(この回答も参照)。
ARMは、他のどのマイクロコントローラよりも多くの非常に多くのメーカーから入手でき、それぞれにオンチップペリフェラルとメモリ、パッケージのさまざまな組み合わせで選択できる多数のバージョンがあります。適切な事例:NXPは、オンチップイーサネットを備えた35以上のコントローラーを提供しています。
ARMは安価な ; ARMは、おそらくUSD 1の壁を破った最初の32ビットコントローラーでした。
このパフォーマンス、幅広い製品、低コストの組み合わせにより、ARMを無視することはできません。
アナリスト会社Linley Groupの調査によると、2005年には、すべての携帯電話の約98%がマザーボード上で少なくとも1つのARM設計のコアを使用しています。(ソース)
携帯電話市場にも別の効果があります。携帯電話はスペースに非常に制約されており、小さなパッケージが必要です。NXPのLPC1102は、わずか5mm WLP-16パッケージで提供されます。これは、以前はピン数の少ない8ビットマイクロコントローラーでのみ使用されていたスケールです。
まだ言及されていない点:1908年、PLロバートソン氏という名前の男が、新しい改良されたねじ頭とドライバーを発明しました。彼は自分のデザインのネジとドライバーを製造する唯一の人になりたかった。数十年後、ヘンリー・F・フィリップスという名前の誰かが別のデザインを思いつきました。ロバートソン氏とは異なり、フィリップス氏は、ネジやドライバーの製造よりも設計のライセンス供与に関心がありました。
同様に、1970年代に、ソニーはBetamaxと呼ばれる技術を思いつきました。JVCはVHSと呼ばれるものを思いつきました。ソニーはVCRの作成に興味がありました。JVCはライセンスに関心がありました。
ここにはパターンがあるようです。(注:しばらくの間、Intelは80x86テクノロジーのライセンスを取得していましたが、何十年もの間、社内で使用するテクノロジーの開発に重点を置いてきました。)
すべてのベンダーのARM向けに開発する同じハードウェア/ソフトウェア。JLINK / ULINKとKeil IDEを一度購入すると、それを使用して地球上のほぼすべてのARMを開発、エミュレート、デバッグできます。
新しいチップベンダーに移行する際に新しいアーキテクチャを学ぶ必要はありません=>ベンダーロックインの削減=>競争の激化=>低価格
最新の技術プロセス(0.18um以下)では、ARMコアは非常に小さいため、8ビットコア用にそれを犠牲にしても、目に見える価格の一部は節約されません。したがって、標準の高性能で安価なアーキテクチャを採用する理由です。
パフォーマンス-ARMのみで、シングルクロック32 * 32-> 32乗算、32 * 32-> 64のハードウェアサポート、および1ドル未満のデバイスの除算(つまり、ローエンドSTM32など)を使用できます。
ARMは欲張りすぎず、ライセンスに不当な料金を請求しないため、メーカーは安価なマイクロを製造できます。
これらの理由から、ミッドレンジARMプロセッサに焦点を当てています。
完全なLinuxサポート
つまり、デバイスドライバーはほぼ無料です。十分なUSBホストとデバイスコードを作成しました。これ以上はしたくありません。また、TCP / IPをランダムプロセッサプラットフォームに追加しようとすることについてあまりわくわくしていません(ただし、LwIP / uIPはそれほど悪くはありません)。私はWi-Fi、実際のBluetoothスタック、ウェブカメラなどをやろうともしませんでした。Linuxを使用すると、非常に幅広いデバイスが会話しやすくなります。
また、Linuxデバイスドライバーの合理的かつ簡単な作成方法にも驚かされました。いくつかのWindowsデバイスドライバーを実行した後、Linuxは夢です。(公平を期すために、Windowsドライバーフレームワークは、私がやっていたときから大きく改善されました。)
ソフトウェアプラットフォームも素晴らしいです。SSL暗号化、ファイルシステム、リモート管理、簡単なアプリケーションの更新(複雑なブートローダーの代わりにファイルをコピーする)などを入手します。
また、ロイヤリティフリーであり、クローズドソースのWinCEプラットフォームがそうであると言うよりもあなたの意志を曲げるのがはるかに簡単です。(私が本当にオープンソースの理想主義者であるというわけではありません...それはすべて私にとって非常に実用的な推論です。)
私は実際のMMUを備えたARMコアについて話しているので、これはミッドエンドからハイエンドのチップ向けです(ただし、μClinuxを使用できると思います)。
消費電力
これは基本的に他の人のコメントの繰り返しですが、それは私にとって大きな要因です。私の現在の454 MHz ARMプラットフォームは、最大CPUで1/2ワット、1ワットを消費します。x86ではこれに近づけることさえできません。
それはほとんど私の推論です。方程式がすぐに変わることはありません。
ARMは進歩を遂げました。
ARMアーキテクチャにより、他のどのチップよりもはるかに高速に、かなり洗練された操作を非常に迅速に実行できます。例(ARM7-TDMIを使用):
ldrh r0、[r10、#ADDR_BUS_OFS]; ターゲットシステムアドレスバスの読み取り(13ビット) ldrb r1、[r9、r0、lsr#8]; 上位ビットを使用して、ハンドラーのテーブルでアドレスを検索します pc、r9、r1 lsl#2を追加します。適切なハンドラーに移動します
各ハンドラーはバイトとして格納され、テーブルの先頭からのアドレス変位の1/4を与えます。最終的な効果は、アドレスバスの内容がフェッチされると、32バイトのジャンプテーブルを使用して、取得された上位5ビットに基づいてハンドラーにジャンプするのに6サイクル(2命令)だけです。
対応するTHUMBコードは次のようになります。
; 他にr6 / r7が必要ないと仮定すると、r9 / r10から再割り当てされます。 ldrh r0、[r7、#ADDR_BUS_OFS] mov r1、r0 lsr r1、r1、#8; THUMBでは、送信元と宛先が同じである必要があります ldrb r1、[r6、r1] lsl r1、r1、#1; ターゲットアドレスがフルワードでアライメントされている場合は、shift-left-twoを使用できます。 pc、r1を追加
コード密度の観点からは問題ありません。命令は元の命令の半分の大きさしかありませんが、フェッチ後は6サイクルではなく9サイクルかかります。監視対象のバスがARMで処理できたかどうかに関係なく、監視対象のバスが独自の速度で実行されるアプリケーションでは、より高速なARM命令が大きなプラスになります。
ちなみに、Thumb2はThumbとのバイナリ互換性があるため、以前のツールの使用が容易になりますが、元のARMに比べてできないことがいくつかあります。たとえば、ARMでは、2ビットあたり約3つの命令を使用して、4つのレジスタに保持されている8x8ビットマップを「回転」させることができます。
movs r0、r4、lsl#25; LSBの最上位ビットをCに、次のビットをNに入れます orrcs r6、#0x00000001 orrmi r6、#0x00000100
Thumb2では、明示的な条件付き命令を追加する必要があります。
movs r0、r4、lsl#25; LSBの最上位ビットをCに、次のビットをNに入れます itcs orrcs r6、#0x00000001 itmi orrmi r6、#0x00000100
ARMと比較して、時間とスペースの効率が33%削減されました。これはおそらく、ThumbコードがARMよりも効率が悪いという最悪の例に関するものであり、それでもまったく恐ろしいことではありません。
ARMと比較したThumb2のもう1つのわずかな欠点は、ARMコードでは、すべての命令がフルワード境界で始まるため、静的分析が容易になることです。Thumb2では、命令はハーフワード境界で任意に開始し、フルワード境界をまたぐことができます。したがって、静的解析ははるかに困難になる可能性があります。
少し歴史がありますが、Acornは1980年代に新しいコンピューター用にカスタムCPU(たとえば、メモリコントロールなどを内蔵)を望んでいました(8ビット6502は、できることを制限していました)。彼らはインテルと話をしましたが、インテルは彼らにCPUのライセンスを供与しませんでした。
そのため、Acornは非常にシンプルなRISC CPUを設計しましたが、CPUメーカーではないため、誰にでもライセンス供与を望んでいます(そして、手っ取り早くお金を必要としていました!)。(CPUが初めて動作したのは、その理由の1つは非常に単純であり、設計者がケンブリッジ大学にいる間に多くの研究CPUを作成したためだと思います。
長年にわたり、CPU設計は、顧客のチップ設計に組み込むことがますます容易になっています。
チップメーカーは競合他社ではないため、Acornからの安全なライセンス供与を感じていました。また、エイコーンはケンブリッジにいたので、ライセンシーを得るためにライバルの故郷に行くとは誰も思いませんでした(本当の!)。(エイコーンを訪問するためにケンブリッジへの「事実発見」旅行の機会は、オプションのショートリストに任意の時点で影響を与えました…。)
Acorn Risc Machine CPUを含む多くの設計は、電力使用が重要な組み込みシステム用でした。Acorn Risc Machine CPU用の安価で優れた開発ツールも作成されました。
そのため、携帯電話に組み込みCPUを搭載したカスタムチップが必要になり始めたとき、AcornはARMと名前が変更され、残りは歴史です。(おそらく、他のCPUのほとんどが米国によって制御されていたが、ヨーロッパではモバイルが最初に正常になったのかもしれません)
(これはMicrosoftとDosのことを思い出させますか?IBMの小さな未知のチームと一緒ですか?)
多くのタスクでARMが当時最高のCPUの1つだったという事実は(それでも)現在でも役立ちますが、「最高の」CPU設計だけでは十分ではありません。
技術的な問題は別として、ARMには多くの非技術的な理由があります。 しかし、簡単な答えは次のとおりです。Intel(またはx86)ではありません。
CPUのR&Dドルが現在どこに投資されているかを見ると、基本的に2つの陣営に分類されます。ARMとIntelです。(私は小さなMCUを無視しており、AMDをIntelにまとめています。)PowerPC、MIPS、SPARC、および他の大きなCPUにはほとんどお金がかかりません。まだ残っているのはARMとIntelだけです。
Intelおよび他のx86 CPUを使用すると、膨大な量の従来の荷物を受け取ります。たとえば、チップセット、BIOS、およびその他のものが必要です。CPUの電力効率が非常に高い場合でも、これらの他のデバイスはシステムの重さを抑え、より大きく、電力をより多く消費し、より高価にする傾向があります。インテルCPUを搭載したPCBを開発することは大きな問題であり、BIOSベンダーなどと交渉する必要があります。さらに悪いことに、チップセット、BIOS、ビデオチップなどのベンダーの多くは単に望んでいません。年間100万台未満の販売をしない小規模の人々と取引する。
ARMでは、その荷物はありません。マイクロコントローララインのものからマルチコアモンスターまで、多くのチップソースがあります。BIOSのライセンスを取得する必要はありません(中古車のセールスマンに行くようなものです)。そして、製造業者とベンダーは一般的にあなたに親切です。
ARM7 / ARM9とMIPS IVを比較してください。すでに述べたライセンスの問題以外の利点はほとんどありません。MIPS命令セットと内部バスの内部構造により、特定のタイプの設計で優れた(コストあたりのパフォーマンス)が得られます。多くのWi-FiルーターがARMコアではなくMIPSコアを使用する理由です。
ARMコアは主にハンドヘルドデバイスに適用されたため、ASICはより多くの電力制御機能を追加しましたが、MIPSは低電力よりもサイクルあたりのパフォーマンスに重点を置いています。Intel x86 に対するRISCの利点は、別の議論です。
本当の利点はありません。付属のDSPおよびGSMなどのその他のコントローラーは、それらを非常に人気のあるものにします。