web-dev-qa-db-ja.com

ARMアーキテクチャはx86とどのように異なりますか?

X86アーキテクチャは、ARMがモバイルであることを期待しているときにキーボードで動作するように特別に設計されていますか? 2つの主な違いは何ですか?

138
user1922878

ARMRISC (縮小命令セットコンピューティング)アーキテクチャですが、x86CISC (複雑な命令セットコンピューティング)アーキテクチャです。

この側面の主な違いは、ARM命令は、メモリへのデータのロードと保存のためのいくつかの命令を持つレジスタでのみ動作し、x86は直接メモリでも動作できることです。 v8 ARMまではネイティブ32ビットアーキテクチャであり、他よりも4バイト操作を優先していました。

したがって、ARMはよりシンプルなアーキテクチャであり、x86は電力消費と生産の両方の点でパワービーストになりつつ、小さなシリコン領域と多くの省電力機能につながります。

x86アーキテクチャは、ARMがモバイルであることを期待しているときにキーボードで動作するように特別に設計されていますか?」に関する質問について。 x86は、キーボードとモバイル用のARMで動作するように特別に設計されていません。ただし、コアアーキテクチャの選択により、実際にはx86にはIOを直接操作する命令もありますが、ARMはそうではありません。ただし、USBのような特殊なIOバスでは、このような機能の必要性もなくなりつつあります。

引用するドキュメントが必要な場合、これが Cortex-Aシリーズプログラマガイド(4.0) がRISCアーキテクチャとCISCアーキテクチャの違いについて伝えるものです。

ARMプロセッサは、縮小命令セットコンピュータ(RISC)プロセッサです。

X86などの複雑な命令セットコンピュータ(CISC)プロセッサには、単一の命令で複雑なことを実行できる豊富な命令セットがあります。このようなプロセッサには、多くの場合、マシン命令を内部操作のシーケンス(マイクロコード)にデコードするかなりの量の内部ロジックがあります。

対照的に、RISCアーキテクチャは、より少ない数のトランジスタで実行される可能性のある、より汎用的な命令の数が少ないため、シリコンが安価で電力効率が高くなります。他のRISCアーキテクチャと同様、ARMコアには多数の汎用レジスタがあり、多くの命令が1サイクルで実行されます。レジスタの内容と命令フィールドからすべてのロード/ストアアドレスを決定できる単純なアドレッシングモードがあります。

また、ARM社は Architectures、Processors、and Devices Development Article というタイトルのペーパーを提供しており、これらの用語がビジネスにどのように適用されるかを説明しています。

命令セットのアーキテクチャを比較する例:

たとえば、アプリケーションで何らかのバイト単位のメモリ比較ブロックが必要な場合(コンパイラによって生成され、詳細はスキップされます)、これはx86のようになります

repe cmpsb         /* repeat while equal compare string bytewise */

ARMの場合、最短形式は次のようになります(エラーチェックなしなど)。

top:
ldrb r2, [r0, #1]! /* load a byte from address in r0 into r2, increment r0 after */
ldrb r3, [r1, #1]! /* load a byte from address in r1 into r3, increment r1 after */
subs r2, r3, r2    /* subtract r2 from r3 and put result into r2      */
beq  top           /* branch(/jump) if result is zero                 */

rISC命令セットとCISC命令セットの複雑さの違いに関するヒントが得られます。

238
auselen

長年ARMが電力消費の面でかなり大きな利点を持っていたという事実を除いて、キーボードまたはモバイルに特化したものはありません。

実際の違いに関して:ARMはより多くのレジスタを持ち、Intelが追加するよりもずっと前のほとんどの命令で予測をサポートし、主にコード密度を増やすことを目的とした「サム」モードを備えています(したがって、プログラムはより少ないメモリに収まります) )あらゆる場所で電力を節約するために、あらゆる種類のテクニック(長い場合は「トリック」と呼びます)を取り入れてきました。

かつて、Intelは電力消費よりも速度を重視していました。彼らは主にラップトップのコンテキストで電力消費を強調し始めました。ラップトップの場合、典型的な電力目標は、かなり小型のラップトップで約6ワットでした。最近(much最近)、モバイルデバイス(電話、タブレットなど)をターゲットにし始めました。この市場では、最大で数ワット程度しか見ていません。彼らのアプローチはARMとは大きく異なりますが、ARMがマイクロアーキテクチャを重視している製造技術を強調していますが(ARMデザインを販売し、製造を他者に任せます)。

87
Jerry Coffin

Jerry Coffin's 最初の段落に追加。つまり、ARM設計により、消費電力が低くなります。

会社ARMは、CPUテクノロジーのみをライセンスします。彼らは物理的なチップを作りません。これにより、他の企業は、通常 SOC またはsystem-on-chipと呼ばれるさまざまな周辺技術を追加できます。デバイスがタブレット、携帯電話、または車内エンターテイメントシステムであるかどうか。これにより、チップベンダーは特定のアプリケーションに合わせてチップの残りの部分を調整できます。これには追加の利点があり、

  1. ボードコストの削減
  2. 低電力(注1)
  3. より簡単な製造
  4. 小さいフォームファクター

ARMAMBA でSOCベンダーをサポートし、SOC実装者が既製のサードパーティモジュールを購入できるようにします。イーサネット、メモリ、割り込みコントローラなど。 MIPS のような他のいくつかのCPUプラットフォームはこれをサポートしますが、MIPSは電力を意識していません。

これらはすべて、ハンドヘルド/バッテリー駆動の設計にとって有益です。いくつかはすべての周りにちょうど良いです。同様に、ARMにはバッテリー駆動のデバイスの履歴があります。 Apple NewtonPsion OrganizersPDAソフトウェアインフラストラクチャ は、スマートフォンタイプのデバイスを作成するために一部の企業によって活用されました。ただし、スマートフォンで使用するためにGUIを再発明した人々は、より多くの成功を収めました。

Open sourceツールセットとoperating systemsの台頭により、さまざまなSOCチップも容易になりました。閉鎖された組織では、ARMで使用可能なさまざまなデバイスをすべてサポートしようとすると問題が発生します。最も人気のある2つの携帯電話プラットフォーム、AndriodとOSx/IOSは、 Linux および FreeBSD、Mach、NetBSD osに基づいています。 Open Sourceは、SOCベンダーがチップセットのソフトウェアサポートを提供するのに役立ちます。

うまくいけば、なぜx86keyboardに使用されるかは自明です。それにはソフトウェアがあり、さらに重要なことには、そのソフトウェアを使用するように訓練された人々がいます。 Netwinder は、元々keyboard用に設計されたARMシステムの1つです。また、メーカーは現在、サーバー市場向けにARM64を検討しています。 24時間年中無休のデータセンターでは、電力/熱が問題になります。

したがって、これらのチップの周りで成長するecosystemは、低消費電力などの機能と同じくらい重要だと思います。 ARMはしばらくの間(1980年代半ばから後半)、低電力で高性能なコンピューティングを目指して努力しており、多くの人々が参加しています。

注1:複数のチップは、既知の電圧で相互通信して駆動するためにバスドライバーを必要とします。また、通常、個別のチップにはSOCシステムで共有できるコンデンサーおよびその他の電源コンポーネントをサポートする必要があります。

35
artless noise

ARMはイタリアのスポーツカーのようなものです。

  • バランスのとれた、よく調整されたエンジン。良好な加速と最高速度を提供します。
  • 優れた追跡、ブレーキ、サスペンション。すぐに停止したり、速度を落とさずに追い詰めることができます。

X86はアメリカのマッスルカーのようなものです。

  • 大きなエンジン、大きな燃料ポンプ。最高の最高速度と加速を提供しますが、大量の燃料を使用します。
  • 恐ろしいブレーキ、あなたが減速したい場合、あなたはあなたの日記に予定を入れる必要があります。
  • ひどいステアリング、コーナーまで減速する必要があります。

要約すると、x86は1974年の設計に基づいており、直線的には優れています(ただし、多くの燃料を使用します)。アームは燃料をほとんど使用せず、コーナー(ブランチ)で減速しません。


メタファーを超えて、ここにいくつかの本当の違いがあります。

  • アームにはさらにレジスタがあります。
  • Armには特別な目的のレジスタはほとんどありません。x86はすべて特別な目的のレジスタです(したがって、動きの少ないもの)。
  • Armにはメモリアクセスコマンドがほとんどなく、レジスタのロード/ストアのみがあります。
  • 私の設計では、アームは内部的にハーバードアーキテクチャです。
  • アームはシンプルで高速です。
  • アーム命令は、アーキテクチャ的には単一サイクルです(複数のロード/ストアを除く)。
  • 多くの場合、腕の指示は複数のことを(1サイクルで)行います。
  • X86のループストアと自動インクリメントなど、1つ以上のArm命令が必要な場合でも、Armはより少ないクロックサイクルでそれを実行します。
  • アームには、より条件付きの命令があります。
  • Armの分岐予測子は単純で(無条件または逆向きの場合は分岐を想定し、そうでない場合は非分岐を想定します)、x86の非常に非常に複雑なものよりも優れたパフォーマンスを発揮します(説明するのに十分なスペースがありません。 )。
  • Armにはシンプルで一貫性のある命令セットがあります(手作業でコンパイルし、命令セットをすばやく学習できます)。
15
ctrl-alt-delor

ARMアーキテクチャは、もともとAcornパーソナルコンピュータ用に設計されました( Acorn Archimedes 、1987年頃、および RiscPC を参照)。 x86ベースのIBM PCモデルと同様のパーソナルコンピューター。後になって初めてARM実装が主に対象となったのは、モバイルおよび組み込み市場セグメントでした。

もともと、ほぼ同等のパフォーマンスの単純なRISC CPUは、Intelのx86開発に取り組んでいるチームよりもはるかに小さなエンジニアリングチーム( Berkeley RISC を参照)で設計できました。

しかし、最近では、最速のARMチップには、大規模なエンジニアリングチームによって設計された非常に複雑な複数の問題の順不同命令ディスパッチユニットがあり、x86コアには、命令変換ユニットから供給されるRISCコアのようなものがある場合があります。

そのため、2つのアーキテクチャ間の現在の違いは、開発チームが対象としている製品ニッチの特定の市場ニーズにより関連しています。 (ランダムな意見:ARMは、おそらく電力とコストがはるかに制約される組み込みアプリケーションからのライセンス料を増やします。そして、Intelは利益率のためにPCとサーバーのパフォーマンスエッジを維持する必要があります。異なる実装の最適化をご覧ください。)

15
hotpaw2