ARMアーキテクチャとx86の違いは何ですか?[閉まっている]


192

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


37
x86に私が知らないps / 2ポートがない限り、それはキーボード用に構築されたもので、汚れた下着のペアだけではありません:-)
paxdiablo

6
キーボードは、物理的なデバイスではなく、典型的なPCの役割を指していると思います。
アートレスノイズ2013

24
x86は設計されていません。それは島で進化し、それを祈ろうとするあらゆるものを食べた奇妙な鳥がいた。今ではアヒルに請求されたカモノハシより奇妙に見え、船がいっぱいの新しい動物がやって来るとうまくいかないでしょう。
ctrl-alt-delor 2014

5
@richard-残念なことに、これは私が今まで見たx86の最も歴史的に正確な説明です。それは業界についてかなり多くを語っています。
Leeor

6
@Leeor申し訳ありませんが、コメントで小さな間違いを犯しました。鳥はx86の捕食者を食べたと言いました。鳥の柔らかな羽毛がとてもきれいになっていることも注目に値します。
ctrl-alt-delor 2015年

回答:


305

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

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

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

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

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

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

x86のような複雑な命令セットコンピュータ(CISC)プロセッサには、1つの命令で複雑な処理を実行できる豊富な命令セットがあります。このようなプロセッサは、機械命令を一連の内部操作(マイクロコード)にデコードする大量の内部ロジックを備えていることがよくあります。

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

ARM社は、それらの用語がビジネスにどのように適用されるかを説明したアーキテクチャ、プロセッサ、およびデバイス開発」というタイトルの論文も提供しています。

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

たとえば、アプリケーションにある種のバイト単位のメモリ比較ブロックが必要な場合(コンパイラによって生成され、詳細はスキップされます)、これは次のようになります。 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の命令セットの複雑さの違いに関するヒントが得られます。


9
ARMv8-Aには、AArch64と呼ばれる64ビットアーキテクチャがあります。
キリアス2013年

9
x86には非常に強力な命令がいくつかありますが、腕はまだ戦いでそれを倒すことができます(両方が同じクロック速度である場合)。これは、部分的にはアームに適切なレジスタセットがあるためです。x86は時間の1/2を費やして、限られたレジスタセットにデータを出し入れします(これはx86-64には当てはまりませんが、より多くのレジスタがあります) )。また、部分的には、Armの単純さのために、より大きなキャッシュの余地があり、すべての命令が条件付きです(キャッシュミスが少なくなります)。また、arm's move multiple命令(唯一の非RISC命令)により、データをすばやく移動できます。
ctrl-alt-delor 2015年

4
より多くのレジスターを使用することにより、ARMコードをより速く書くことができました。この実装を見ると、x86は5 + 9×Nクロックを要し、ARMは4×Nクロックを要しています(どちらの数値もキャッシュミスがない場合)。この例では、x86の方が命令バイトのスコアが高くなっています。x86= 2バイト、arm = 16バイト。ARMは、より現実的なテストで、このメトリックのスコアがはるかに高くなります。たとえば、ループの終了時、r2は、文字列が等しいか大きいかに関する情報を持っているため、コードを調整します。アームは、条件コードをチェックする前に他の命令を実行できます。条件コードをチェックするとき、アームは分岐する必要はありません。
ctrl-alt-delor 2015年

2
@JeremyFelixこれは、stackoverflow.com / questions / 13106297 /…のように見えます。重複するパイプがある場合でも、異なるタイプの命令には異なるパイプがあります。CPUは命令をマイクロ命令に分割し、それらはパイプライン間で並列に実行できます。
auselen

2
「x86は直接メモリでも動作しますが」と言います。ただし、x86(x86-64より前)の場合、レジスターが非常に少ないため「同様に」は存在せず、すべてをメモリーに格納する必要がありました。移動するだけのプログラムの命令の約½ 一方、ARMでは、データを移動するために必要な命令はほとんどありません。
ctrl-alt-delor

93

何年もの間ARMが電力消費の点でかなりの利点を持っているという事実を除いて、キーボードやモバイルに固有のものはなく、あらゆる種類の電池式デバイスにとって魅力的でした。

実際の違いに関しては、ARMにはより多くのレジスタがあり、Intelが追加するずっと前にほとんどの命令でサポートされている予測があり、あらゆる種類の手法(必要に応じて「トリック」と呼びます)を長い間組み込んで、ほぼすべての場所で電力を節約しました。

また、2つのエンコード命令の方法にもかなりの違いがあります。Intelはかなり複雑な可変長エンコーディングを使用しており、命令は1バイトから15バイトまで使用できます。これにより、プログラムは非常に小さくなりますが、命令のデコードは比較的困難になります(例:並列で高速に命令をデコードすることは、完全な悪夢のようなものです)。

ARMには、ARMとTHUMBの2つの異なる命令エンコーディングモードがあります。ARMモードでは、すべての命令にアクセスでき、エンコーディングは非常にシンプルでデコードが高速です。残念ながら、ARMモードのコードはかなり大きくなる傾向があるため、プログラムがIntelコードの約2倍のメモリを占有することはかなり一般的です。親指モードはそれを軽減しようとします。それでもかなり規則的な命令エンコーディングが使用されますが、レジスタの数を減らし、ほとんどの命令から述語を排除し、分岐の範囲を減らすなどして、ほとんどの命令を32ビットから16ビットに減らします。少なくとも私の経験では、これはまだかなりのものを与えませんx86コードが得ることができるのと同じくらい高密度のコーディングですが、それはかなり近く、デコードはまだかなり単純で簡単です。コード密度が低いということは、同等のパフォーマンスを得るには、通常、少なくとももう少し多くのメモリと(通常はより深刻な)より大きなキャッシュが必要であることを意味します。

かつてインテルは、消費電力よりも速度を重視してきました。彼らは主にラップトップのコンテキストで電力消費を強調し始めました。ラップトップの典型的な電力目標は、かなり小さなラップトップの場合、6ワットのオーダーでした。さらに最近では(かなり最近になって)彼らはこの市場のためにモバイル機器(携帯電話、タブレットなど)をターゲットに始めました、彼らはワットのカップルで、またはそのほとんどを見ています。彼らはかなりうまくやっているようですが、彼らのアプローチはARMとはかなり異なっており、ARMがマイクロアーキテクチャを主に強調している製造技術を強調しています(ARMが設計を販売し、他の人に製造を任せていることを考えると、当然のことです)。

状況にもよりますが、CPUのエネルギー消費量は多くの場合、その電力消費量よりも重要です。少なくとも私がこの用語を使用しているように、電力消費とは、(多かれ少なかれ)瞬間的な基準での電力使用を指します。ただし、エネルギー消費は速度に関して正規化されているため、(たとえば)CPU Aが1ワットを2秒間消費してジョブを実行し、CPU Bが2ワットを1秒間消費して同じジョブを実行する場合、両方のCPUは同じ合計量を消費しますその仕事には2ワット秒のエネルギーが必要ですが、CPU Bでは2倍の速さで結果が得られます。

ARMプロセッサは、消費電力の点で非常に優れている傾向があります。したがって、プロセッサの「存在」をほぼ常に必要とするものの、実際にはあまり作業を行わないものが必要な場合は、かなりうまく機能します。たとえば、ビデオ会議を行っている場合、数ミリ秒のデータを収集し、それを圧縮して送信し、他の人からデータを受信し、解凍して、再生して、繰り返します。非常に高速なプロセッサでさえ、スリープに多くの時間を費やすことができないため、このようなタスクでは、ARMは非常にうまく機能します。

Intelのプロセッサ(特に、実際には低消費電力アプリケーション向けのAtomプロセッサ)は、エネルギー消費に関して非常に競争力があります。フルスピードに近い速度で実行している間は、ほとんどのARMプロセッサよりも多くの電力を消費しますが、作業が迅速に終了するため、より早くスリープ状態に戻ることができます。その結果、優れたバッテリ寿命と優れたパフォーマンスを組み合わせることができます。

したがって、2つを比較するときは、測定対象に注意を払い、正直に気にかけていることを反映していることを確認する必要があります。ARMは消費電力に関して非常に優れていますが、状況によっては、瞬間的な消費電力よりもエネルギー消費の方が簡単に気になる場合があります。


それが理由です ?RISCはより多くのRAMを必要としますが、CISCはより小さなコードサイズに重点を置き、全体としてRISCよりも少ないRAMを使用します
Waqar Naeem

Thumbモード(可変長で短いエンコーディングが可能)も違いはありません。これがx86が常に機能する方法です(ただし、命令の長さが1バイトから15バイトまで変化し、Thumb2よりもデコードがはるかに困難です)。ARMモード(3オペランドの非破壊命令による固定幅エンコーディング)は、x86との違いです!
Peter Cordes

より高速なプロセッサを搭載することは大きな助けにはなりません -ビデオ会議が良い例かもしれません:低レイテンシは、まともなサイズのバッファにデコードのバーストを実行して、深いまたは中レベルのスリープ状態に戻ることができないことを意味します。「Race to Sleep」は、最新のCPUが完全にアイドル状態(クロックが停止している場合、またはコアの一部の電源が切断されている場合)に大幅な電力を節約できるため、一定量の計算のエネルギー消費における重要な概念です。または、より深いスリープでは、キャッシュも書き戻しの後。)...そしてもちろん、次の段落でその点を説明します。>。<
Peter Cordes

@PeterCordes:Thumbモードのエンコーディングは、x86エンコーディングとあまり似ていません。それはないですが、かなり ARMエンコーディングとして、通常のように、それはまだかなりの固定format.Densityの増加は、単にめったにARMのエンコーディングで使用されていないビットを排除するから大きくあるのです。たとえば、事実上すべてのARM命令は条件付きですが、条件が使用される時間はごくわずかです(したがって、ほとんどの非分岐THUMB命令は無条件です)。
Jerry Coffin

@PeterCordes:そのとおりです。ビデオ会議が良い例です。編集しました。ありがとうございます。
Jerry Coffin

39

ジェリー・コフィンの最初の段落に追加。つまり、ARM設計は低消費電力を提供します。

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

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

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

これらはすべて、ハンドヘルド/バッテリ操作の設計に有益です。一部はすべての周りでちょうど良いです。同様に、ARMバッテリー駆動のデバイスの歴史があります。アップルニュートンサイオンオーガナイザー。一部の企業では、PDAソフトウェアのインフラストラクチャを利用して、スマートフォンタイプのデバイスを作成しました。しかし、スマートフォンで使用するためにGUIを再発明した人はより多くの成功を収めました。

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

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

したがって、これらのチップを中心に成長するエコシステムは、低消費電力などの機能と同じくらい重要であると言えるでしょう。 ARMしばらくの間(1980年代半ばから後半にかけて)低消費電力でより高性能なコンピューティングを目指して努力してきましたが、彼らには多くの人々が参加しています。

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


22

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

  • バランスの取れた、よく調整されたエンジン。良い加速と最高速度を与えます。
  • 優れたチェイス、ブレーキ、サスペンション。素早く停止でき、速度を落とさずにコーナリングできます。

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

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

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


隠喩は以上です、ここにいくつかの実際の違いがあります。

  • アームにはより多くのレジスタがあります。
  • Armには特殊目的レジスターはほとんどありません。x86はすべて特殊目的レジスターです(移動するものが少なくなります)。
  • Armにはメモリアクセスコマンドがほとんどなく、レジスタをロード/ストアするだけです。
  • Armは、私の設計では内部的にハーバードアーキテクチャです。
  • 腕はシンプルで速いです。
  • Arm命令は、アーキテクチャ上は単一サイクルです(複数のロード/ストアを除く)。
  • Arm命令は、多くの場合(1サイクルで)複数のことを行います。
  • x86のループストアや自動インクリメントなど、複数のArm命令が必要な場合でも、Armはより少ないクロックサイクルでそれを実行します。
  • アームにはより条件付きの指示があります。
  • Armのブランチプレディクターは非常に単純で(無条件または後方の場合はブランチを想定し、そうでない場合はブランチを想定する)、x86の非常に非常に複雑なものよりもパフォーマンスが優れています(説明するための十分なスペースがないため、説明できません) )。
  • Armには、一貫したシンプルな命令セットがあります(手動でコンパイルして、命令セットをすばやく学習できます)。

7
この類似性は、イタリアのスポーツカーがARM CPUが受けられないときに得ることができるすべての瞬間に故障するという事実と、簡単に行うことはできるが、実際にはデスクトップCPUの速度を実行できる単一のARM CPUを購入できないという事実を壊します、それらを入れるための
ソケット

1
パフォーマンスに関しては、最大/高速のX​​eonプロセッサー(E5-2690 v3など)と直接競合しますが、低電力、低コストです。quora.com/...
Ctrl + Alt + delor

1
データベースやI / Oサーバーのような大規模な並列ワークロードについては、確かです。シングルスレッドのパフォーマンスを実現するために、x86に近いARMコアを設計した人はいません。彼らができなかった理由はありません。電力とダイの領域に対する「x86税」は、高電力CPUコアの故障した機械に使用されるシリコンの量と比較してそれほど大きくありません。x86には確かにイボがありますが、RISCにはコード密度の短所があります(通常はそれほど問題ではありませんが、それでも問題はありません)。これは、realworldtech.comフォーラムで繰り返し議論されます。
Peter Cordes

1
@richard:「必要ない」ものはたくさんありますが、それによってコード密度が向上します。コツは、コードサイズ/命令数に対してデコードの複雑さをバランスさせることです。順不同のコアの幅を大きくすると、消費電力が非常に高くなるため、各命令にさらに多くの作業を詰め込むことは価値があります。デコードの複雑さを少し増やした方がはるかに安価です。最近のx86 CPUはすでにx86をすばやくデコードできます。(4ワイドOOOコアをuop-cacheやループバッファーの代わりにデコーダーから供給し続けるのに十分な速さではなく、もちろん高い電力コストです。)
Peter Cordes

3
@ Evi1M4chine、それはまた、イタリアのスポーツカーが非常に高価であるのに対し、アメリカのマッスルカーは比較的安いという事実を打破します。マッスルカーはシンプルだからこそ、フェラーリのようなものはとても複雑です。CISC対RISCの正反対
ロレンツォデマッテ

15

ARMアーキテクチャはもともとAcornパーソナルコンピュータ(1987年頃のAcorn ArchimedesRiscPCを参照)用に設計されたもので、x86ベースのIBM PCモデルと同じくらいキーボードベースのパーソナルコンピュータでした。その後のARM実装のみが、主にモバイルおよび組み込み市場セグメントをターゲットにしました。

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

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

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


まだ大きなアーキテクチャの違いがあります。しかし、インテルは素晴らしい仕事をし、十分に設計されていないCPUを非常にうまく動作させるために多額の資金を投資しました(このすべての努力がうまく設計されたCPUに組み込まれた場合、何ができたのでしょうか)。
ctrl-alt-delor 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.