ARMがモバイルであることを期待している間、x86アーキテクチャはキーボードで動作するように特別に設計されていますか?2つの主な違いは何ですか?
ARMがモバイルであることを期待している間、x86アーキテクチャはキーボードで動作するように特別に設計されていますか?2つの主な違いは何ですか?
回答:
ARM
はRISC(縮小命令セットコンピューティング)アーキテクチャでx86
あり、CISC(複雑な命令セットコンピューティング)アーキテクチャです。
この側面のそれらの間の主な違いは、ARM命令は、x86もメモリ上で直接動作できる一方で、メモリへのデータのロードおよびメモリへのデータの保存のためのいくつかの命令を持つレジスタでのみ動作することです。ARMはv8までは32ビットのネイティブアーキテクチャであり、4バイト演算が他よりも好まれていました。
したがって、ARMはより単純なアーキテクチャであり、x86が消費電力と生産の両面でパワービーストになりつつ、小さなシリコン領域と多くの省電力機能につながります。
「x86アーキテクチャは、ARMがモバイルであることを期待している間、キーボードで動作するように特別に設計されていますか?」に関する質問について。x86
はARM
、モバイルでもキーボードでも動作するように特別に設計されていません。ただし、コアのアーキテクチャ上の選択により、実際には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の命令セットの複雑さの違いに関するヒントが得られます。
何年もの間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は消費電力に関して非常に優れていますが、状況によっては、瞬間的な消費電力よりもエネルギー消費の方が簡単に気になる場合があります。
ジェリー・コフィンの最初の段落に追加。つまり、ARM設計は低消費電力を提供します。
同社ARM
は、CPUテクノロジのライセンスのみを取得しています。彼らは物理的なチップを作りません。これにより、他の企業は、通常SOCまたはシステムオンチップと呼ばれるさまざまな周辺技術を追加できます。デバイスがタブレット、携帯電話、車載エンターテイメントシステムのいずれであるか。これにより、チップベンダーは、チップの残りの部分を特定のアプリケーションに合わせることができます。これには追加の利点があり、
ARM
AMBAを使用してSOCベンダーをサポートし、SOCの実装者が既製のサードパーティモジュールを購入できるようにします。イーサネット、メモリ、割り込みコントローラのように。いくつかの他のCPUプラットフォームは次のように、これをサポートするMIPSが、MIPSは、電源として意識していません。
これらはすべて、ハンドヘルド/バッテリ操作の設計に有益です。一部はすべての周りでちょうど良いです。同様に、ARM
バッテリー駆動のデバイスの歴史があります。アップルニュートン、サイオンオーガナイザー。一部の企業では、PDAソフトウェアのインフラストラクチャを利用して、スマートフォンタイプのデバイスを作成しました。しかし、スマートフォンで使用するためにGUIを再発明した人はより多くの成功を収めました。
Open source
ツールセットの台頭によりoperating systems
、さまざまなSOC
チップが容易になりました。閉鎖的な組織では、ARMで利用可能なさまざまなデバイスすべてをサポートしようとすると問題が発生します。AndriodとOSx / IOSの2つの最も人気のあるセルラープラットフォームは、LinuxとFreeBSD、MachとNetBSD os をベースにしています。 ベンダーが自社のチップセットにソフトウェアサポートを提供するのにOpen Source
役立ちSOC
ます。
うまくいけば、なぜx86がキーボードに使用されているかは自明です。それにはソフトウェアがあり、さらに重要なことは、そのソフトウェアを使用するための訓練を受けた人々です。 NetwinderはARM
、もともとキーボード用に設計されたシステムの1つです。また、製造元は現在、サーバー市場向けにARM64を検討しています。24時間年中無休のデータセンターでは、電力/熱が問題になります。
したがって、これらのチップを中心に成長するエコシステムは、低消費電力などの機能と同じくらい重要であると言えるでしょう。 ARM
しばらくの間(1980年代半ばから後半にかけて)低消費電力でより高性能なコンピューティングを目指して努力してきましたが、彼らには多くの人々が参加しています。
注1:複数のチップには、既知の電圧で相互通信して駆動するためのバスドライバーが必要です。また、通常、個別のチップには、SOCシステムで共有できるサポートコンデンサやその他のパワーコンポーネントが必要です。
ARMはイタリアのスポーツカーのようなものです。
x86はアメリカのマッスルカーのようなものです。
要約すると、x86は1974年の設計に基づいており、直線的に良好です(ただし、燃料を多く使用します)。アームは燃料をほとんど使用せず、コーナー(ブランチ)で減速しません。
隠喩は以上です、ここにいくつかの実際の違いがあります。
ARMアーキテクチャはもともとAcornパーソナルコンピュータ(1987年頃のAcorn ArchimedesとRiscPCを参照)用に設計されたもので、x86ベースのIBM PCモデルと同じくらいキーボードベースのパーソナルコンピュータでした。その後のARM実装のみが、主にモバイルおよび組み込み市場セグメントをターゲットにしました。
元々、ほぼ同等のパフォーマンスの単純なRISC CPUは、Intelでx86開発に取り組んでいるチームよりもはるかに小さなエンジニアリングチーム(Berkeley RISCを参照)で設計できました。
しかし、最近では、最速のARMチップには、大規模なエンジニアリングチームによって設計された非常に複雑なマルチ問題のアウトオブオーダー命令ディスパッチユニットがあり、x86コアには、命令変換ユニットによって供給されるRISCコアのようなものがあります。
したがって、2つのアーキテクチャーの現在の違いは、開発チームが対象としている製品ニッチの特定の市場ニーズに関連しています。(ランダムな意見:ARMはおそらく、電力とコストの制約がはるかに大きくなる傾向がある組み込みアプリケーションからのライセンス料をより多く稼ぎます。そしてIntelは、利益率のためにPCとサーバーのパフォーマンスエッジを維持する必要があります。したがって、異なる実装の最適化が見られます。)