X86アーキテクチャは、ARMがモバイルであることを期待しているときにキーボードで動作するように特別に設計されていますか? 2つの主な違いは何ですか?
ARM
は RISC (縮小命令セットコンピューティング)アーキテクチャですが、x86
は CISC (複雑な命令セットコンピューティング)アーキテクチャです。
この側面の主な違いは、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命令セットの複雑さの違いに関するヒントが得られます。
長年ARMが電力消費の面でかなり大きな利点を持っていたという事実を除いて、キーボードまたはモバイルに特化したものはありません。
実際の違いに関して:ARMはより多くのレジスタを持ち、Intelが追加するよりもずっと前のほとんどの命令で予測をサポートし、主にコード密度を増やすことを目的とした「サム」モードを備えています(したがって、プログラムはより少ないメモリに収まります) )あらゆる場所で電力を節約するために、あらゆる種類のテクニック(長い場合は「トリック」と呼びます)を取り入れてきました。
かつて、Intelは電力消費よりも速度を重視していました。彼らは主にラップトップのコンテキストで電力消費を強調し始めました。ラップトップの場合、典型的な電力目標は、かなり小型のラップトップで約6ワットでした。最近(much最近)、モバイルデバイス(電話、タブレットなど)をターゲットにし始めました。この市場では、最大で数ワット程度しか見ていません。彼らのアプローチはARMとは大きく異なりますが、ARMがマイクロアーキテクチャを重視している製造技術を強調していますが(ARMデザインを販売し、製造を他者に任せます)。
Jerry Coffin's 最初の段落に追加。つまり、ARM設計により、消費電力が低くなります。
会社ARM
は、CPUテクノロジーのみをライセンスします。彼らは物理的なチップを作りません。これにより、他の企業は、通常 SOC またはsystem-on-chipと呼ばれるさまざまな周辺技術を追加できます。デバイスがタブレット、携帯電話、または車内エンターテイメントシステムであるかどうか。これにより、チップベンダーは特定のアプリケーションに合わせてチップの残りの部分を調整できます。これには追加の利点があり、
ARM
は AMBA でSOCベンダーをサポートし、SOC実装者が既製のサードパーティモジュールを購入できるようにします。イーサネット、メモリ、割り込みコントローラなど。 MIPS のような他のいくつかのCPUプラットフォームはこれをサポートしますが、MIPSは電力を意識していません。
これらはすべて、ハンドヘルド/バッテリー駆動の設計にとって有益です。いくつかはすべての周りにちょうど良いです。同様に、ARM
にはバッテリー駆動のデバイスの履歴があります。 Apple Newton 、 Psion Organizers 。 PDAソフトウェアインフラストラクチャ は、スマートフォンタイプのデバイスを作成するために一部の企業によって活用されました。ただし、スマートフォンで使用するためにGUIを再発明した人々は、より多くの成功を収めました。
Open source
ツールセットとoperating systems
の台頭により、さまざまなSOC
チップも容易になりました。閉鎖された組織では、ARMで使用可能なさまざまなデバイスをすべてサポートしようとすると問題が発生します。最も人気のある2つの携帯電話プラットフォーム、AndriodとOSx/IOSは、 Linux および FreeBSD、Mach、NetBSD osに基づいています。 Open Source
は、SOC
ベンダーがチップセットのソフトウェアサポートを提供するのに役立ちます。
うまくいけば、なぜx86がkeyboardに使用されるかは自明です。それにはソフトウェアがあり、さらに重要なことには、そのソフトウェアを使用するように訓練された人々がいます。 Netwinder は、元々keyboard用に設計されたARM
システムの1つです。また、メーカーは現在、サーバー市場向けにARM64を検討しています。 24時間年中無休のデータセンターでは、電力/熱が問題になります。
したがって、これらのチップの周りで成長するecosystemは、低消費電力などの機能と同じくらい重要だと思います。 ARM
はしばらくの間(1980年代半ばから後半)、低電力で高性能なコンピューティングを目指して努力しており、多くの人々が参加しています。
注1:複数のチップは、既知の電圧で相互通信して駆動するためにバスドライバーを必要とします。また、通常、個別のチップにはSOCシステムで共有できるコンデンサーおよびその他の電源コンポーネントをサポートする必要があります。
ARMはイタリアのスポーツカーのようなものです。
X86はアメリカのマッスルカーのようなものです。
要約すると、x86は1974年の設計に基づいており、直線的には優れています(ただし、多くの燃料を使用します)。アームは燃料をほとんど使用せず、コーナー(ブランチ)で減速しません。
メタファーを超えて、ここにいくつかの本当の違いがあります。
ARMアーキテクチャは、もともとAcornパーソナルコンピュータ用に設計されました( Acorn Archimedes 、1987年頃、および RiscPC を参照)。 x86ベースのIBM PCモデルと同様のパーソナルコンピューター。後になって初めてARM実装が主に対象となったのは、モバイルおよび組み込み市場セグメントでした。
もともと、ほぼ同等のパフォーマンスの単純なRISC CPUは、Intelのx86開発に取り組んでいるチームよりもはるかに小さなエンジニアリングチーム( Berkeley RISC を参照)で設計できました。
しかし、最近では、最速のARMチップには、大規模なエンジニアリングチームによって設計された非常に複雑な複数の問題の順不同命令ディスパッチユニットがあり、x86コアには、命令変換ユニットから供給されるRISCコアのようなものがある場合があります。
そのため、2つのアーキテクチャ間の現在の違いは、開発チームが対象としている製品ニッチの特定の市場ニーズにより関連しています。 (ランダムな意見:ARMは、おそらく電力とコストがはるかに制約される組み込みアプリケーションからのライセンス料を増やします。そして、Intelは利益率のためにPCとサーバーのパフォーマンスエッジを維持する必要があります。異なる実装の最適化をご覧ください。)