ARMアーキテクチャ

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

アームロゴ2017.svg
デザイナー
ビット32ビット64ビット
紹介された1985 ; 37年前 (1985)
設計RISC
タイプ登録-登録
分岐条件コード、比較、分岐
開ける専有
ARM64 / 32ビット
紹介された2011 ; 11年前 (2011)
バージョンARMv8-A、ARMv8.1-A、ARMv8.2-A、ARMv8.3-A、ARMv8.4-A、ARMv8.5-A、ARMv8.6-A、ARMv8-R、ARMv9
エンコーディングAArch64 / A64およびAArch32 / A32は32ビット命令を使用し、T32(Thumb-2)は16ビットと32ビットの混合命令を使用します[1]
エンディアンネスBi(デフォルトでは少し)
拡張機能SVE、SVE2、SME、AES、SHA、TME; すべて必須:Thumb-2Neon、VFPv4-D16、VFPv4; 廃止:Jazelle
レジスター
一般的用途31×64ビット整数レジスタ[1]
浮動小数点スカラー32ビットおよび64ビットFPまたはSIMDFPまたは整数用の32× 128ビットレジスタ[1] 。または暗号化
ARM 32ビット(Cortex)
バージョンARMv8-R、ARMv8-M、ARMv8.1-M、ARMv7-A、ARMv7-R、ARMv7E-M、ARMv7-M、ARMv6-M
エンコーディング32ビット。ただし、Thumb-2拡張機能は16ビットと32ビットの混合命令を使用します。
エンディアンネスBi(デフォルトでは少し)
拡張機能Thumb-2NeonJazelle、DSP、Saturated、FPv4-SP、FPv5、Helium
レジスター
一般的用途R14(リンクレジスタ)を含むがR15(PC)を含まない15×32ビット整数レジスタ
浮動小数点最大32×64ビットレジスタ、[2] SIMD /浮動小数点(オプション)
ARM 32ビット(レガシー)
バージョンARMv6、ARMv5、ARMv4T、ARMv3、ARMv2
エンコーディング32ビット。ただし、Thumb拡張機能は16ビットと32ビットの混合命令を使用します。
エンディアンネスARMv3以降のBi (デフォルトでは少し)
拡張機能親指ジャゼル
レジスター
一般的用途15×32ビット整数レジスタ(R14(リンクレジスタ)を含むが、R15(PC、旧式では26ビットアドレス指定)は含まない)
浮動小数点なし

ARM ( armとして小文字で定型化され、以前はAdvanced RISC Machinesの略語であり、元々はAcorn RISC Machine )は、さまざまな環境向けに構成された、コンピュータープロセッサ用の縮小命令セットコンピューター(RISC)アーキテクチャーのファミリーです。 Arm Ltd.はアーキテクチャを開発し、他の企業にライセンスを供与します。他の企業は、システムオンチップ(SoC)やシステムオンモジュール(SoM)の設計など、これらのアーキテクチャの1つ以上を実装する独自の製品を設計します。メモリ、インターフェイス、および無線。それはまた設計しますこれらの命令セットアーキテクチャを実装し、これらのコア設計を自社製品に組み込む多くの企業にこれらの設計をライセンス供与するコア。

ARM設計には数世代の世代があります。元のARM1は32ビットの内部構造を使用していましたが、26ビットのアドレス空間があり、64MBのメインメモリに制限されていました。この制限は、32ビットのアドレス空間を持つARMv3シリーズで削除され、ARMv7までのいくつかの追加世代は32ビットのままでした。 2011年にリリースされたARMv8-Aアーキテクチャは、新しい32ビット固定長命令セットを使用して64ビットアドレス空間と64ビット演算のサポートを追加しました。 [3] Arm Ltd.は、さまざまなルール用の一連の追加の命令セットもリリースしました。 「Thumb」拡張機能は、コード密度を向上させるために32ビットと16ビットの両方の命令を追加しますがJazelleはJavaバイトコードを直接処理するための手順を追加しました。最近の変更には、パフォーマンスまたはフォールトトレランスを改善するための同時マルチスレッディング(SMT)の追加が含まれます。[4]

ARMプロセッサは、競合他社よりもコストが低く、消費電力が最小限で、発熱が少ないため、スマートフォンラップトップタブレットコンピュータ、その他の組み込みシステムなど、軽量でポータブルなバッテリ駆動のデバイスに適しています。[5] [6] [7]ただし、ARMプロセッサは、世界最速のスーパーコンピュータなど、デスクトップサーバーにも使用されています。[8] 2,000億を超えるARMチップが製造されており[9] [10] [11] 2021年の時点で、ARMは最も広く使用されている命令セットアーキテクチャです。(ISA)とISAが最も大量に生産されました。[12] [6] [13] [14] [15]現在、広く使用されているCortexコア、古い「クラシック」コア、および特殊なSecurCoreコアのバリアントが、オプション機能を含めたり除外したりするために利用できます。

歴史

BBC Micro

Acorn Computersの最初の広く成功した設計は、1981年12月に導入されたBBC Microでした。これは、 MOS Technology 6502 CPUをベースにした比較的従来型のマシンでしたが、より高速な使用により、 AppleIIのような競合する設計の約2倍のパフォーマンスで動作しました。ダイナミックランダムアクセスメモリ(DRAM)。当時の典型的なDRAMは約2MHzで動作していました。Acornは、より高速な4MHz部品の供給について日立と契約を結びました。[16]

当時のマシンは、一般的にプロセッサとフレームバッファ間でメモリを共有していました。これにより、プロセッサは、個別の入出力(I / O)を実行しなくても、画面の内容をすばやく更新できました。ビデオ表示のタイミングは厳密であるため、ビデオハードウェアはそのメモリに優先的にアクセスする必要がありました。6502の設計の癖のために、CPUは半分の時間メモリに手を触れずに残しました。したがって、CPUを1 MHzで実行することにより、ビデオシステムはこれらのダウンタイム中にデータを読み取り、RAMの合計2MHzの帯域幅を占有する可能性があります。BBC Microでは、4 MHzのRAMを使用することで同じ手法を使用できましたが、2倍の速度で実行されていました。これにより、市場に出回っている同様のマシンよりも優れたパフォーマンスを発揮することができました。[17]

どんぐりビジネスコンピュータ

1981年はIBMパーソナルコンピュータが導入された年でもありました。最近導入されたIntel8088を使用すると、6502の8ビット設計と比較し16ビットCPUであり、全体的なパフォーマンスを向上させることができました。その導入により、デスクトップコンピュータ市場は根本的に変化しました。過去5年間に主に出現した趣味およびゲーム市場は、以前の8ビットデザインが単に競争できなかった必須のビジネスツールに変化し始めました。Motorola 68000 [18]NationalSemiconductor NS32016など、さらに新しい32ビットデザインも市場に登場していました[19]

Acornは、この市場での競争方法を検討し始め、 Acorn BusinessComputerという名前の新しい紙のデザインを作成しました彼らは、BBC Microの10倍のパフォーマンスで、同じ価格のマシンを製造するという目標を設定しました。[20]これは、PCを上回り、低価格になります。同時に、最近のApple Lisaの導入により、グラフィカルユーザーインターフェイス(GUI)の概念がより多くのユーザーに提供され、将来はGUIを備えたマシンに属することが示唆されました。[21]しかし、Lisaは、サポートチップ、大量のメモリ、およびハードディスクドライブが詰め込まれていたため、9,995ドルの費用がかかり、すべて非常に高価でした。[22]

その後、エンジニアは利用可能なすべてのCPU設計の調査を開始しました。既存の16ビットデザインに関する彼らの結論は、それらははるかに高価であり、それでも「少しがらくた」であり[23] 、 BBCMicroデザインよりもわずかに高いパフォーマンスしか提供しないというものでした。また、ほとんどの場合、そのレベルでも動作するように多数のサポートチップを要求し、コンピュータ全体のコストを押し上げました。これらのシステムは、単に設計目標を達成できません。[23]彼らは新しい32ビット設計も検討しましたが、これらはさらにコストがかかり、サポートチップでも同じ問題がありました。[24] Sophie Wilsonによると、その時点でテストされたすべてのプロセッサは、約4 Mbit /秒の帯域幅で、ほぼ同じように動作しました。[25][a]

2つの重要なイベントにより、AcornはARMへの道を歩み始めました。1つは、カリフォルニア大学バークレー校からの一連のレポートの発行でした。これは、単純なチップ設計でも、市場に出回っている最新の32ビット設計よりもはるかに高いパフォーマンスを発揮できることを示唆しています。[26] 2つ目は、スティーブ・ファーバーとソフィー・ウィルソンが、MOSチームの論理的な後継者となり、 WDC65C02のような新しいバージョンを提供していたビルメンシュと彼の妹が経営するウエスタンデザインセンターを訪問したことです。Acornチームは、高校生がApple IIマシンでチップレイアウトを作成しているのを見て、誰でもそれができることを示唆しました。[27] [28]対照的に、最新の32ビットCPUに取り組んでいる別の設計会社を訪問したところ、すでに設計のリビジョンHにあるが、まだバグが含まれている12人以上のメンバーからなるチームが明らかになりました。これにより、1983年後半に独自のCPU設計であるAcorn RISCMachineを開始するという決定が固まりました。[29]

デザインコンセプト

オリジナルのバークレーRISCの設計は、ある意味で教育システムであり、完全なパフォーマンスのために特別に設計されたものではありません。 ARMは、レジスタを多用する基本的な概念に、6502の評判の高いデザインノートをいくつか追加しました。その主なものは、割り込みをすばやく処理する機能でした。これにより、外部ハードウェアを追加しなくても、マシンが妥当な入出力パフォーマンスを提供できるようになりました。 。 6502と同様の高性能割り込みを提供するために、ARM設計では、物理アドレス空間を4バイトワードをアドレス指定する24ビットのポインターに制限しました。すべてのARM命令はワード境界に配置されるため、命令アドレスはワードアドレスになります。したがって、プログラムカウンター(PC)は24ビットで十分です。この24ビットサイズにより、PCを8つのプロセッサフ​​ラグとともに単一の32ビットレジスタに格納できました。つまり、割り込みを受信すると、マシンの状態全体を1回の操作で保存できますが、PCが完全な32ビット値である場合、PCとステータスフラグを格納するために別々の操作が必要になります。[30]

もう1つの変更は、実際のパフォーマンスの観点から最も重要な変更の1つであり、ページモードDRAMを利用するための命令セットの変更でした。最近導入されたページモードでは、メモリへの後続のアクセスがほぼ同じ場所、つまり「ページ」にある場合、2倍の速度で実行できました。Berkeleyの設計では、ページモードは考慮されておらず、すべてのメモリが同等に扱われていました。ARM設計では、ページモードを使用して単一ページで複数のレジスタを埋めたり保存したりするために使用できる特別なベクトルのようなメモリアクセス命令「Sサイクル」が追加されました。これにより、メモリのパフォーマンスが使用可能になったときに2倍になり、グラフィックスのパフォーマンスにとって特に重要でした。[31]

Berkeley RISCの設計では、レジスタウィンドウを使用して、プロシージャ呼び出しで実行されるレジスタの保存と復元の数を減らしましたARMの設計ではこれを採用していません。

Wilsonは命令セットを開発し、 2番目の6502プロセッサを搭載したBBCMicroで実行されるBBCBASICのプロセッサのシミュレーションを作成しました[32] [33]これにより、エイコーンのエンジニアは正しい方向に進んでいると確信しました。Wilsonは、AcornのCEOであるHermann Hauserに連絡を取り、より多くのリソースを要求しました。ハウザーは彼の承認を与え、ウィルソンのISAに基づいて実際のプロセッサを設計するために小さなチームを編成しました。[34]公式のAcornRISCMachineプロジェクトは1983年10月に開始されました。

ARM1

BBCMicro用のARM12番目のプロセッサ

AcornはVLSIテクノロジーを「シリコンパートナー」として選択しました。VLSIテクノロジーはAcornのROMとカスタムチップのソースであったためです。Acornがデザインを提供し、VLSIがレイアウトと制作を提供しました。ARMシリコンの最初のサンプルは、1985年4月26日に最初に受信してテストしたときに正しく機能しました。[5] ARM1として知られる、これらのバージョンは6MHzで動作しました。[35]

最初のARMアプリケーションは、BBC Microの2番目のプロセッサとして使用され、サポートチップ(VIDC、IOC、MEMC)の開発を完了するためのシミュレーションソフトウェアの開発を支援し、ARM2開発で使用されるCADソフトウェアを高速化しました。その後、ウィルソンはBBCBASICARMアセンブリ言語で書き直しました。命令セットの設計から得られた深い知識により、コードを非常に高密度にすることができ、ARM BBCBASICはどのARMエミュレーターにとっても非常に優れたテストになりました。

ARM2

ARM1ボードでのシミュレーションの結果、1986年後半に8 MHzで動作するARM2設計が導入され、1987年初頭には10〜12MHzでスピードバンプされたバージョンが導入されました。[b]基盤となるアーキテクチャの重要な変更は、ブースの乗算器の追加でしたが、以前は乗算をソフトウェアで実行する必要がありました。[37]さらに、新しい高速割り込み要求モード(略してFIQ)により、レジスタ8から14を割り込み自体の一部として置き換えることができました。これは、FIQ要求がレジスタを保存する必要がなく、割り込みをさらに高速化することを意味しました。[38]

ARM2は、 CommodoreAmigaMacintoshSEなどの一般的な7MHz68000ベースのシステムの約7倍のパフォーマンスでした。これは、16MHzで動作するIntel80386の2倍の速度であり、マルチプロセッサVAX-11 / 784 スーパーミニコンピュータとほぼ同じ速度でした。それを打ち負かした唯一のシステムは、SunSPARCおよびMIPSR2000RISCベースのワークステーションでした。[39]さらに、CPUは高速I / O用に設計されているため、これらのマシンに見られるサポートチップの多くが不要であり、特に、専用のダイレクトメモリアクセスがありませんでした。(DMA)ワークステーションでよく見られるコントローラー。グラフィックシステムも、メモリとタイミングに関する基本的な仮定の同じセットに基づいて簡略化されました。その結果、設計が劇的に簡素化され、高価なワークステーションと同等のパフォーマンスを提供しますが、現在のデスクトップと同様の価格で提供されます。[39]

ARM2は、32ビットの データバス26ビットのアドレス空間、および27個の32ビットレジスタを備えていました。ARM2のトランジスタ数はわずか30,000であり、[40]、モトローラの6年前の68000モデルの約68,000と比較されます。この単純さの多くは、68000のトランジスタの約4分の1から3分の1を表すマイクロコードの欠如と(その日のほとんどのCPUのように)キャッシュの欠如に起因していました。このシンプルさにより、ARM2の消費電力は低く抑えられますが、Intel80286よりも優れたパフォーマンスを提供します

後継のARM3は、4 KBのキャッシュを使用して作成され、パフォーマンスがさらに向上しました。[41] ARM6ではアドレスバスが32ビットに拡張されましたが、ステータスフラグ用に予約されたビットのため、プログラムコードは26ビット互換モードのメモリの最初の64MB内にある必要がありました。[42]

Advanced RISC Machines Ltd. – ARM6

チップ上のマイクロプロセッサベースのシステム
ARM610マイクロプロセッサのダイ

1980年代後半、AppleComputerVLSITechnologyは、ARMコアの新しいバージョンでAcornとの連携を開始しました。1990年、エイコーンは設計チームをスピンオフしてAdvanced RISC Machines Ltd.という名前の新しい会社になりました[43] [44] [45]。親会社のArmHoldingsplcがロンドン証券取引所に上場したときにARMLtd。になりまし1998年のNASDAQ 。 [46]新しいApple-ARMの作業は、最終的にARM6に進化し、1992年の初めに最初にリリースされました。Appleは、 Apple NewtonPDAの基盤としてARM6ベースのARM610を使用しました

初期のライセンシー

1994年、AcornはRiscPCコンピューターの主要な中央処理装置(CPU)としてARM610を使用しました。 DECはARMv4アーキテクチャのライセンスを取得し、StrongARMを作成しました。[47] 233  MHzでは、このCPUは1ワットしか消費しませんでした(新しいバージョンははるかに少ない電力を消費します)。この作業は後に訴訟和解の一環としてIntelに渡され、Intelはi960ラインをStrongARMで補完する機会を得ました。 Intelは後にXScaleという名前の独自の高性能実装を開発し、それ以降Marvellに販売しました。 ARMコアのトランジスタ数は、これらの変更を通じて基本的に同じままでした。 ARM2には30,000個のトランジスタがありました[48]ARM6は35,000にしか成長しませんでした。[49]

市場シェア

2005年には、販売されたすべての携帯電話の約98%が少なくとも1つのARMプロセッサを使用していました。[50] 2010年、ARMアーキテクチャに基づくチップの生産者は、スマートフォンの95% 、デジタルテレビセットトップボックスの35% 、モバイルコンピュータの10%に相当する61億のARMベースのプロセッサの出荷を報告しました。2011年、32ビットARMアーキテクチャは、モバイルデバイスで最も広く使用されているアーキテクチャであり、組み込みシステムで最も人気のある32ビットアーキテクチャでした。[51] 2013年には、100億が生産され[52]、「ARMベースのチップは世界のモバイルデバイスのほぼ60%に見られます」。[53]

ライセンス

STMicroelectronicsによる1MBフラッシュメモリを備えたSTM32F103VGT6ARMCortex -M3マイクロコントローラ のダイ

コアライセンス

Arm Ltd.の主な事業は、ライセンシーがマイクロコントローラー(MCU)、CPU、およびそれらのコアに基づくシステムオンチップを作成するために使用するIPコアの販売です。元設計メーカーは、ARMコアを他の部品と組み合わせて、完全なデバイスを作成します。通常、既存の半導体製造プラント(fabs)に低コストで構築でき、それでもかなりのパフォーマンスを発揮します。最も成功した実装は、数億台が販売されたARM7TDMIです。 Atmelは、ARM7TDMIベースの組み込みシステムの先駆的な設計センターです。

スマートフォン、PDA、およびその他のモバイルデバイスで使用されるARMアーキテクチャは、ARMv5からARMv8-Aの範囲です。

2009年に、一部のメーカーは、 Intel Atomに基づくネットブックと直接競合して、ARMアーキテクチャCPUに基づくネットブックを導入しました[54]

Arm Ltd.は、コストと成果物が異なるさまざまなライセンス条件を提供しています。Arm Ltd.は、すべてのライセンシーに、ARMコアの統合可能なハードウェア記述、完全なソフトウェア開発ツールセット(コンパイラデバッガソフトウェア開発キット)、およびARMCPUを含む製造されたシリコンを販売する権利を提供します。

ARMのコア設計を統合するSoCパッケージには、Nvidia Tegraの最初の3世代、CSR plcのQuatroファミリ、ST-EricssonのNovaおよびNovaThor、SiliconLabsのPrecision32MCU、Texas InstrumentsのOMAP製品、SamsungのHummingbirdおよびExynos製品、AppleのA4A5、およびA5Xが含まれます。 NXPi.MX。 _

ARMコアを独自のチップ設計に統合したいファブレスライセンシーは、通常、すぐに製造できる検証済みの半導体知的財産コアの取得にのみ関心があります。これらのお客様のために、Arm Ltd.は、設計の統合と検証を支援するための抽象化されたシミュレーションモデルとテストプログラムとともに、選択したARMコアのゲートネットリストの説明を提供します。統合型デバイスメーカー(IDM)やファウンドリオペレーターなど、より野心的な顧客は、合成可能な RTLVerilog )でプロセッサーIPを取得することを選択します。) 形。合成可能なRTLを使用すると、お客様はアーキテクチャレベルの最適化と拡張を実行できます。これにより、設計者は、変更されていないネットリストでは不可能なエキゾチックな設計目標(高いクロック速度、非常に低い消費電力、命令セットの拡張など)を達成できます。Arm Ltd.は、ARMアーキテクチャ自体を再販する権利をライセンシーに付与していませんが、ライセンシーは、チップデバイス、評価ボード、完全なシステムなどの製造製品を自由に販売できます。マーチャントファウンドリは特殊なケースになる可能性があります。ARMコアを含む完成したシリコンの販売が許可されているだけでなく、通常、他の顧客のためにARMコアを再製造する権利を持っています。

Arm Ltd.は、認識された価値に基づいてIPの価格を設定します。通常、パフォーマンスの低いARMコアは、パフォーマンスの高いコアよりもライセンスコストが低くなります。実装用語では、合成可能なコアはハードマクロ(ブラックボックス)コアよりもコストがかかります。価格の問題を複雑にしているのは、SamsungやFujitsuなどのARMライセンスを保持しているマーチャントファウンドリが、ファブの顧客にライセンスコストの削減を提供できることです。ファウンドリの社内設計サービスを通じてARMコアを取得する代わりに、顧客はARMの前払いライセンス料金の支払いを削減または排除できます。

社内設計サービスのない専用の半導体ファウンドリ( TSMCUMCなど)と比較して、Fujitsu / Samsungは製造されたウェーハごとに2〜3倍の料金を請求します。[要出典]少量から中量のアプリケーションの場合、設計サービスファウンドリは全体的な価格を低くします(ライセンス料の補助を通じて)。大量生産される部品の場合、ウェーハの価格を下げることで長期的なコスト削減を実現できるため、ARMのNRE(非反復エンジニアリング)コストの影響が軽減され、専用のファウンドリがより適切に選択されます。

Arm Holdingsによって設計されたコアを備えたチップを開発した企業には、Amazon.comAnnapurnaLabs子会社[55] Analog DevicesAppleAppliedMicro(現在:MACOM Technology Solutions [56])、AtmelBroadcomCaviumCypress SemiconductorFreescale Semiconductor(現在はNXP Semiconductors)、HuaweiIntel[疑わしい ] Maxim IntegratedNvidiaNXPQualcommRenesasSamsung ElectronicsST MicroelectronicsTexas Instruments、およびザイリンクス

ARM CortexTechnologyライセンスに基づいて構築

2016年2月、ARMはBuilt on ARM Cortex Technologyライセンスを発表しました。これは、Built on Cortex(BoC)ライセンスに短縮されることがよくあります。このライセンスにより、企業はARMと提携し、ARMCortexの設計に変更を加えることができます。これらの設計変更は、他社と共有されることはありません。これらのセミカスタムコアデザインには、Kryo280などのブランドの自由もあります。

Built on ARM Cortex Technologyの現在のライセンシーである企業には、Qualcommが含まれます。[57]

建築ライセンス

企業は、ARM命令セットを使用して独自のCPUコアを設計するためのARMアーキテクチャライセンスを取得することもできます。これらのコアは、ARMアーキテクチャに完全に準拠している必要があります。ARMアーキテクチャを実装するコアを設計した企業には、Apple、AppliedMicro(現在:Ampere Computing)、Broadcom、Cavium(現在:Marvell)、Digital Equipment Corporation、Intel、Nvidia、Qualcomm、Samsung Electronics、Fujitsu、およびNUVIAIncが含まれます。

ARMフレキシブルアクセス

2019年7月16日、ARMはARMフレキシブルアクセスを発表しました。ARMフレキシブルアクセスは、開発用に含まれているARM知的財産(IP)への無制限のアクセスを提供します。顧客がファウンドリのテープアウトまたはプロトタイピングに到達すると、製品ごとのライセンス料が必要になります。[58] [59]

過去2年間のARMの最新のIPの75%は、ARMフレキシブルアクセスに含まれています。2019年10月現在:

  • CPU:Cortex-A5Cortex-A7Cortex-A32Cortex-A34Cortex-A35Cortex-A53Cortex-R5Cortex-R8Cortex-R52Cortex-M0Cortex-M0 +Cortex-M3Cortex-M4Cortex-M7Cortex-M23Cortex-M33
  • GPU:Mali-G52Mali-G31Maliドライバー開発キット(DDK)が含まれています。
  • 相互接続:CoreLink NIC-400、CoreLink NIC-450、CoreLink CCI-400、CoreLink CCI-500、CoreLink CCI-550、ADB-400 AMBA、XHB-400 AXI-AHB
  • システムコントローラ:CoreLink GIC-400、CoreLink GIC-500、PL192 VIC、BP141 TrustZoneメモリラッパー、CoreLink TZC-400、CoreLink L2C-310、CoreLink MMU-500、BP140メモリインターフェイス
  • セキュリティIP:CryptoCell-312、CryptoCell-712、TrustZone True Random Number Generator
  • ペリフェラルコントローラー:PL011 UART、PL022 SPI、PL031 RTC
  • デバッグとトレース:CoreSight SoC-400、CoreSight SDC-600、CoreSight STM-500、CoreSightシステムトレースマクロセル、CoreSightトレースメモリコントローラー
  • デザインキット:Corstone-101、Corstone-201
  • 物理IP:メモリコンパイラ、ロジックライブラリ、GPIO、ドキュメントを含むCortex-M33 TSMC22ULL​​用のArtisanPIK
  • ツールと材料:Socrates IP ToolingARM Design Studio、仮想システムモデル
  • サポート:標準のARMテクニカルサポート、ARMオンライントレーニング、メンテナンスアップデート、オンサイトトレーニングおよび設計レビューへのクレジット

コア

建築 コアビット
コア プロフィール 参照
_
アーム株式会社 第三者
ARMv1
32
ARM1
クラシック
ARMv2
32
ARM2、ARM250、ARM3 琥珀色、STORMオープンソフトコア[60]
クラシック
ARMv3
32
ARM6ARM7
クラシック
ARMv4
32
ARM8 StrongARM、FA526、ZAPオープンソースプロセッサコア
クラシック
ARMv4T
32
ARM7TDMIARM9TDMISecurCore SC100
クラシック
ARMv5TE
32
ARM7EJARM9EARM10E XScale、FA626TE、Feroceon、PJ1 / Mohawk
クラシック
ARMv6
32
ARM11
クラシック
ARMv6-M
32
ARM Cortex-M0ARM Cortex-M0 +ARM Cortex-M1SecurCore SC000
ARMv7-M
32
ARM Cortex-M3SecurCore SC300 アップルM7
マイクロコントローラー
ARMv7E-M
32
ARM Cortex-M4ARM Cortex-M7
マイクロコントローラー
ARMv8-M
32
ARM Cortex-M23[62] ARM Cortex-M33 [63]
マイクロコントローラー
ARMv7-R
32
ARM Cortex-R4ARM Cortex-R5ARM Cortex-R7ARM Cortex-R8
ARMv8-R
32
ARMCortex-R52
リアルタイム
64
ARM Cortex-R82
リアルタイム
ARMv7-A
32
ARM Cortex-A5ARM Cortex-A7ARM Cortex-A8ARM Cortex-A9ARM Cortex-A12ARM Cortex-A15ARM Cortex-A17 Qualcomm Scorpion / Krait、PJ4 / Sheeva、Apple Swift(A6A6X
ARMv8-A
32
ARM Cortex-A32 [68]
応用
ARM Cortex-A35[69] ARM Cortex-A53 ARM Cortex-A57[70] ARM Cortex-A72[71] ARM Cortex-A73 [72] X-GeneNvidia Denver 1/2Cavium ThunderXAMD K12、Apple Cyclone(A7)/ Typhoon(A8A8X)/ Twister(A9A9X)/ Hurricane + Zephyr(A10A10X)、Qualcomm Kryo、Samsung M1 / M2( "マングース")/ M3( "Meerkat")
応用
64
ARM Cortex-A34 [79]
応用
ARMv8.1-A
64/32
TBA Cavium ThunderX2
応用
ARMv8.2-A
64/32
ARM Cortex-A55[81] ARM Cortex-A75[82] ARM Cortex-A76 [83] ARM Cortex-A77 ARM Cortex-A78 ARM Cortex-X1 ARM Neoverse N1 Nvidia Carmel、Samsung M4( "Cheetah")、Fujitsu A64FX(ARMv8 SVE 512ビット)
応用
64
ARM Cortex-A65同時マルチスレッディング(SMT)を備えたARM Neoverse E1 、 ARM Cortex-A65AE [87](ARMv8.4 Dot Productなどもあります。先進運転支援システム(ADAS)などのセーフティクリティカルタスク用に作成されています) アップルモンスーン+ミストラル(A11)(2017年9月)
応用
ARMv8.3-A
64/32
TBA
応用
64
TBA Apple Vortex + Tempest(A12A12XA12Z)、Marvell ThunderX3(v8.3 +)[88]
応用
ARMv8.4-A
64/32
TBA
応用
64
TBA Apple Lightning + Thunder(A13)、Apple Firestorm + Icestorm(A14)、Apple Firestorm + Icestorm(M1
応用
ARMv8.5-A
64/32
TBA
応用
64
TBA アップルアバランチ+ブリザード(A15
応用
ARMv8.6-A
64
TBA
応用
ARMv8.7-A
64
TBA
応用
ARMv9-A
64
ARM Cortex-A510ARM Cortex-A710、ARM Cortex-X2、ARM Neoverse N2
応用
  1. ^ a b 初期のARMプロセッサのほとんどのデータパスCPUレジスタは32ビットでしたが、アドレス指定可能なメモリは26ビットに制限されていました次に、上位ビットを使用して、プログラムカウンタレジスタのステータスフラグに使用されます。
  2. ^ a b c ARMv3には、以前のバージョンのアーキテクチャの26ビットアドレスをサポートする互換モードが含まれていました。この互換モードはARMv4ではオプションであり、ARMv5では完全に削除されています。

Arm Holdingsは、設計にARMコアを実装しているベンダーのリストを提供しています(アプリケーション固有の標準製品(ASSP)、マイクロプロセッサー、およびマイクロコントローラー)。[92]

ARMコアのアプリケーション例

RockchipベースのクアッドコアAndroid「ミニPC」であるTronsmartMK908。サイズ比較のためにmicroSDカードが横に付いています。

ARMコアは、多くの製品、特にPDAスマートフォンで使用されています。コンピューティングの例としては、Microsoft第1世代のSurfaceSurface 2Pocket PCデバイス(2002年以降)、AppleiPadAsusEee Pad Transformer タブレットコンピューター、およびいくつかのChromebookラップトップがあります。その他には、AppleのiPhone スマートフォンiPod ポータブルメディアプレーヤーCanonPowerShot デジタルカメラが含まれますNintendo Switchハイブリッド、Wiiセキュリティプロセッサと3DS ハンドヘルドゲームコンソールTomTomターンバイターン方式ナビゲーションシステム

2005年、Arm Holdingsは、マンチェスター大学のコンピューターSpiNNakerの開発に参加しました。このコンピューターは、ARMコアを使用して人間の脳をシミュレートしました[93]

ARMチップは、Raspberry PiBeagleBoardBeagleBonePandaBoard、およびその他のシングルボードコンピューターでも使用されています。これは、ARMチップが非常に小さく、安価で、消費電力が非常に少ないためです。

32ビットアーキテクチャ

ARMv7は、2015年のこのRaspberry Pi2のような人気のあるRaspberryPiシングルボードコンピューターの古いバージョンに電力を供給するために使用されました。
ARMv7は、シングルボードコンピューターのCuBoxファミリーに電力を供給するためにも使用されます。

ARMv7-A(AArch32の実装。詳細についてはARMv8-Aのセクションを参照)などの32ビットARMアーキテクチャ(ARM32 )は、2011年の時点でモバイルデバイスで最も広く使用されているアーキテクチャでした[51]

1995年以降、さまざまなバージョンのARMアーキテクチャリファレンスマニュアル§外部リンクを参照)が、ARMプロセッサアーキテクチャと命令セットに関するドキュメントの主要なソースであり、すべてのARMプロセッサがサポートする必要のあるインターフェイス(命令セマンティクスなど)と実装の詳細は異なる場合があります。アーキテクチャは時間とともに進化しており、アーキテクチャのバージョン7であるARMv7は、次の3つのアーキテクチャ「プロファイル」を定義しています。

  • Cortex-Aシリーズの32ビットコアと一部の非ARMコアによって実装された「アプリケーション」プロファイルであるAプロファイル
  • Cortex-Rシリーズのコアによって実装される「リアルタイム」プロファイルであるRプロファイル
  • M-profile、「マイクロコントローラー」プロファイル、Cortex-Mシリーズのほとんどのコアによって実装されています

アーキテクチャプロファイルは最初にARMv7用に定義されましたが、ARMはその後ARMv6-Mアーキテクチャ(Cortex M0 / M0 + / M1で使用)をより少ない命令でARMv7-Mプロファイルのサブセットとして定義しました。

CPUモード

Mプロファイルを除いて、32ビットARMアーキテクチャは、実装されているアーキテクチャ機能に応じて、いくつかのCPUモードを指定します。CPUはいつでも1つのモードにしかなれませんが、外部イベント(割り込み)またはプログラムによってモードを切り替えることができます。[94]

  • ユーザーモード:唯一の非特権モード。
  • FIQモード:プロセッサが高速割り込み要求を受け入れるたびに入る特権モード
  • IRQモード:プロセッサが割り込みを受け入れるたびに入る特権モード。
  • スーパーバイザー(svc)モード: CPUがリセットされるか、SVC命令が実行されるたびに入る特権モード。
  • アボートモード:プリフェッチアボートまたはデータアボート例外が発生するたびに入る特権モード。
  • 未定義モード:未定義の命令例外が発生するたびに入る特権モード。
  • システムモード(ARMv4以降):例外によって開始されない唯一の特権モード。これは、(ユーザーモードからではなく)別の特権モードから現在のプログラムステータスレジスタ(CPSR)のモードビットに明示的に書き込む命令を実行することによってのみ入力できます。
  • モニターモード(ARMv6およびARMv7セキュリティ拡張機能、ARMv8 EL3): ARMコアでTrustZone拡張機能をサポートするためにモニターモードが導入されました。
  • Hypモード(ARMv7仮想化拡張機能、ARMv8 EL2): CPUの非セキュア動作のためのPopekおよびGoldberg仮想化要件をサポートするハイパーバイザーモード。[95] [96]
  • スレッドモード(ARMv6-M、ARMv7-M、ARMv8-M):特権または非特権として指定できるモード。メインスタックポインタ(MSP)とプロセススタックポインタ(PSP)のどちらを使用するかは、特権アクセスを使用してCONTROLレジスタで指定することもできます。このモードは、RTOS環境でのユーザータスク用に設計されていますが、通常、スーパーループのベアメタルで使用されます。
  • ハンドラモード(ARMv6-M、ARMv7-M、ARMv8-M):例外処理専用のモード(スレッドモードで処理されるRESETを除く)。ハンドラーモードは常にMSPを使用し、特権レベルで機能します。

命令セット

元の(およびその後の)ARM実装は、以前のAcornマイクロコンピューターで使用され ていたはるかに単純な8ビット6502プロセッサーのように、マイクロコードなしで配線されていました。

32ビットARMアーキテクチャ(およびほとんどの場合64ビットアーキテクチャ)には、次のRISC機能が含まれています。

Intel80286やMotorola68020などのプロセッサと比較して、より単純な設計を補うために、いくつかの追加の設計機能が使用されました。

  • ほとんどの命令を条件付きで実行すると、分岐オーバーヘッドが削減され、初期のチップでの分岐予測子の不足が補われます。
  • 算術命令は、必要な場合にのみ条件コードを変更します。
  • 32ビットバレルシフタは、ほとんどの算術命令とアドレス計算でパフォーマンスを低下させることなく使用できます。
  • 強力なインデックス付きアドレッシングモードがあります。
  • リンクレジスタは、高速リーフ関数呼び出しをサポートします。
  • シンプルで高速な2優先度レベルの割り込みサブシステムは、レジスタバンクを切り替えました。

算術命令

ARMには、加算、減算、および乗算のための整数算術演算が含まれています。アーキテクチャの一部のバージョンは、分割操作もサポートしています。

ARMは32ビット×32ビットの乗算をサポートしており、32ビットの結果または64ビットの結果のいずれかを使用しますが、Cortex-M0 / M0 + / M1コアは64ビットの結果をサポートしていません。[99]一部のARMコアは、16ビット×16ビットおよび32ビット×16ビットの乗算もサポートしています。

除算命令は、次のARMアーキテクチャにのみ含まれています。

  • ARMv7-MおよびARMv7E-Mアーキテクチャには、常に除算命令が含まれています。[100]
  • ARMv7-Rアーキテクチャには、常にThumb命令セットに除算命令が含まれていますが、オプションで32ビット命令セットに含まれています。[101]
  • ARMv7-アーキテクチャには、オプションで除算命令が含まれています。命令は、実装されていないか、Thumb命令セットのみに実装されているか、ThumbとARM命令セットの両方に実装されているか、VirtualizationExtensionsが含まれている場合は実装されていない可能性があります。[101]

登録

CPUモード間で登録
usr sys svc abt und irq fiq
R0
R1
R2
R3
R4
R5
R6
R7
R8 R8_fiq
R9 R9_fiq
R10 R10_fiq
R11 R11_fiq
R12 R12_fiq
R13 R13_svc R13_abt R13_und R13_irq R13_fiq
R14 R14_svc R14_abt R14_und R14_irq R14_fiq
R15
CPSR
SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq

レジスタR0からR7は、すべてのCPUモードで同じです。彼らは決して銀行に預けられません。

レジスタR8からR12は、FIQモードを除くすべてのCPUモードで同じです。FIQモードには、独自のR8〜R12レジスタがあります。

R13とR14は、システムモードを除くすべての特権CPUモードでバンクされます。つまり、例外のために入ることができる各モードには、独自のR13とR14があります。これらのレジスタには通常、スタックポインタと関数呼び出しからのリターンアドレスがそれぞれ含まれています。

エイリアス:

現在のプログラムステータスレジスタ(CPSR)には、次の32ビットがあります。[102]

  • M(ビット0〜4)は、プロセッサモードのビットです。
  • T(ビット5)はThumb状態ビットです。
  • F(ビット6)はFIQ無効ビットです。
  • I(ビット7)はIRQ無効ビットです。
  • A(ビット8)は、不正確なデータアボート無効ビットです。
  • E(ビット9)はデータエンディアンビットです。
  • IT(ビット10–15および25–26)は、if-then状態ビットです。
  • GE(ビット16〜19)は、大なり記号です。
  • DNM(ビット20〜23)は、ビットを変更しないでください。
  • J(ビット24)はJava状態ビットです。
  • Q(ビット27)はスティッキーオーバーフロービットです。
  • V(ビット28)はオーバーフロービットです。
  • C(ビット29)は、キャリー/ボロー/エクステンドビットです。
  • Z(ビット30)はゼロビットです。
  • N(ビット31)は負/ビット未満です。

条件付き実行

ほとんどすべてのARM命令には、4ビットの条件コードセレクター(述語)で実装されるpredicationと呼ばれる条件付き実行機能があります。無条件の実行を可能にするために、4ビットコードの1つにより、命令は常に実行されます。他のほとんどのCPUアーキテクチャには、分岐命令の条件コードしかありません。[103]

述語は命令コードの32ビットのうち4つを占めるため、メモリアクセス命令の置換に使用できるエンコーディングビットを大幅に削減しますが、小さなifステートメントのコードを生成するときに分岐命令を回避します。分岐命令自体を排除することは別として、これにより、スキップされた命令ごとに1サイクルだけのコストで、フェッチ/デコード/実行パイプラインが保持されます。

条件付き実行の良い例を提供するアルゴリズムは、最大公約数を計算するための減算ベースのユークリッドアルゴリズムです。Cプログラミング言語では、アルゴリズムは次のように記述できます。

int gcd int a int b {     
  while a != b // a <bまたはa> bの場合はループに入りますが、a == bの場合はループに入りませんif a > b // a> bの場合これを行いますa- = b ;     
          
        
    else // a <bの場合、これを行います(a!= bが条件付きでチェックインされるため、if(a <b)は必要ありません)b- = a ;         
        
  返す; 
}

同じアルゴリズムを、ターゲットのARM命令に近い方法で次のように書き直すことができます

ループ
    // aとbを比較します
GT = a > b ;        
    LT = a < b ;    
    NE = a != b ;    

    //フラグの結果に基づいて操作を実行します
if GT a- = b ; //大なり記号の場合のみ*のみ*を減算します-if LT b- = a ; //以下の場合のみ*のみ*を減算-if NE goto loop ; //比較された値が等しくない場合にのみループしますreturna ;           
           
       
     

アセンブリ言語で次のようにコーディングされています。

; aをレジスタr0に割り当て、bをr1
ループに割り当てます   。CMPr0     r1 ; 条件「NE」を設定するif(a!= b)、; "GT" if(a> b)、; または "LT" if(a <b)SUBGT r0 r0 r1 ; 「GT」(大なり記号)の場合、a = ab; SUBLT r1 r1 r0 ; 「LT」(未満)の場合、b = ba; BNEループ; 「NE」(等しくない)の場合、ループB lr ; ループに入っていない場合は、安全に戻ることができます        
                            
                            
               
               
                     
                         

thenこれにより、 andelseの周りの分岐が回避されます。r0r1が等しい場合、どちらの命令SUBも実行されないため、ループの先頭でチェックを実装するための条件分岐が不要にwhileなります。たとえば、SUBLE(以下が)使用された場合などです。

Thumbコードがより高密度のエンコーディングを提供する方法の1つは、非分岐命令から4ビットセレクターを削除することです。

その他の機能

命令セットのもう1つの機能は、シフトを折りたたんでデータ処理(算術、論理、およびレジスタ-レジスタ移動)命令にローテーションする機能です。たとえば、C言語 のステートメントは次のようになります。

a + = j << 2 );    

1ワード、1サイクルの命令としてレンダリングできます:[104]

  Ra  Ra  Rj  LSL  #2を追加

これにより、通常のARMプログラムは予想よりも高密度になり、メモリアクセスが少なくなります。したがって、パイプラインはより効率的に使用されます。

ARMプロセッサには、PC相対アドレッシング(実際、32ビット[1] ARMではPCは16個のレジスタの1つです)やインクリメント前およびインクリメント後のアドレッシングモードなど、他のRISCアーキテクチャではめったに見られない機能もあります。

ARM命令セットは時間の経過とともに増加しています。たとえば、一部の初期のARMプロセッサ(ARM7TDMIより前)には、2バイトの量を格納する命令がありません。

パイプラインおよびその他の実装の問題

ARM7以前の実装には、3段階のパイプラインがあります。フェッチ、デコード、実行されるステージ。ARM9などの高性能設計には、より深いパイプラインがあります。Cortex-A8には13のステージがあります。パフォーマンスを向上させるための追加の実装変更には、より高速な加算器とより広範な分岐予測ロジックが含まれます。たとえば、ARM7DIコアとARM7DMIコアの違いは、乗数の改善でした。したがって、追加された「M」。

コプロセッサー

ARMアーキテクチャ(ARMv8より前)は、MCR、MRC、MRRC、MCRR、および同様の命令を使用してアドレス指定できる「コプロセッサ」を使用して、命令セットを拡張する非侵入型の方法を提供します。コプロセッサー・スペースは、0から15までの番号を持つ16個のコプロセッサーに論理的に分割されます。コプロセッサー15(cp15)は、キャッシュの管理や、キャッシュを備えたプロセッサーで のMMU操作などの一般的な制御機能用に予約されています。

ARMベースのマシンでは、周辺機器は通常、物理レジスタをARMメモリ空間またはコプロセッサ空間にマッピングするか、プロセッサに接続する別のデバイス(バス)に接続することによってプロセッサに接続されます。コプロセッサーアクセスはレイテンシーが低いため、一部のペリフェラル(XScale割り込みコントローラーなど)には、メモリとコプロセッサーの両方の方法でアクセスできます。

その他の場合、チップ設計者はコプロセッサメカニズムを使用してハードウェアを統合するだけです。たとえば、画像処理エンジンは、HDTVトランスコーディングプリミティブの特定のセットをサポートするための特殊な操作を備えたコプロセッサと組み合わされた小さなARM7TDMIコアである可能性があります。

デバッグ

最新のすべてのARMプロセッサにはハードウェアデバッグ機能が含まれており、ソフトウェアデバッガは、リセットから開始するコードの停止、ステッピング、ブレークポイントなどの操作を実行できます。これらの機能はJTAGサポートを使用して構築されていますが、一部の新しいコアはオプションでARM独自の2線式「SWD」プロトコルをサポートしています。 ARM7TDMIコアでは、「D」はJTAGデバッグサポートを表し、「I」は「EmbeddedICE」デバッグモジュールの存在を表します。 ARM7およびARM9コア世代の場合、EmbeddedICE over JTAGは事実上のデバッグ標準でしたが、アーキテクチャ上は保証されていません。

ARMv7アーキテクチャは、アーキテクチャレベルで基本的なデバッグ機能を定義します。これらには、「デバッグモード」でのブレークポイント、ウォッチポイント、および命令の実行が含まれます。EmbeddedICEでも同様の機能を利用できました。「停止モード」モードと「監視」モードの両方のデバッグがサポートされています。デバッグ機能へのアクセスに使用される実際のトランスポートメカニズムはアーキテクチャ的に指定されていませんが、実装には通常、JTAGサポートが含まれています。

別のARM「CoreSight」デバッグアーキテクチャがありますが、これはARMv7プロセッサではアーキテクチャ上必要ありません。

アクセスポートのデバッグ

デバッグアクセスポート(DAP)は、ARMデバッグインターフェイスの実装です。[105] サポートされている実装には、シリアルワイヤJTAGデバッグポート(SWJ-DP)とシリアルワイヤデバッグポート(SW-DP)の2つがあります。[106] CMSIS-DAPは、ホストPC上のさまざまなデバッグソフトウェアがUSBを介してハードウェアデバッガーで実行されているファームウェアと通信し、ハードウェアデバッガーがSWDまたはJTAGを介してCoreSight対応のARM CortexCPUと通信する方法を説明する標準インターフェイスです。[107] [108] [109] [110]

DSP拡張命令

デジタル信号処理およびマルチメディアアプリケーションのARMアーキテクチャを改善するために、DSP命令がセットに追加されました。[111]これらは、ARMv5TEおよびARMv5TEJアーキテクチャーの名前の「E」で示されます。Eバリアントは、T、D、M、およびIも意味します。

新しい命令は、デジタルシグナルプロセッサ(DSP)アーキテクチャで一般的です。これらには、符号付き積和、飽和加算および減算、および先行ゼロのカウント のバリエーションが含まれます。

マルチメディア用のSIMD拡張命令

ARMv6アーキテクチャで導入された、これはAdvanced SIMDの前身であり、Neonとも呼ばれます。[112]

ジャゼル

Jazelle DBX(Direct Bytecode eXecution)は、Javaバイトコードを既存のARMおよびThumbモードと並んで3番目の実行状態(および命令セット)としてARMアーキテクチャで直接実行できるようにする手法です。この状態のサポートは、ARMv5TEJアーキテクチャー、およびARM9EJ-SおよびARM7EJ-Sコア名の「J」によって示されます。この状態のサポートは、ARMv6(ARMv7-Mプロファイルを除く)以降で必要ですが、新しいコアには、ハードウェアアクセラレーションを提供しない簡単な実装しか含まれていません。

親指

コンパイルされたコード密度を向上させるために、ARM7TDMI(1994年にリリースされた[113])以降のプロセッサは、独自の状態を持つThumb命令セットを備えています。 (「TDMI」の「T」はThumb機能を示します。)この状態のとき、プロセッサは、ARM命令セットのサブセット用のコンパクトな16ビットエンコーディングであるThumb命令セットを実行します。[114]ほとんどのThumb命令は、通常のARM命令に直接マップされます。スペースの節約は、いくつかの命令オペランドを暗黙的にし、ARM命令セット状態で実行されるARM命令と比較して可能性の数を制限することによってもたらされます。

Thumbでは、16ビットオペコードの機能は少なくなります。たとえば、条件付きにできるのはブランチのみであり、多くのオペコードは、CPUのすべての汎用レジスタの半分にのみアクセスするように制限されています。一部の操作では追加の命令が必要ですが、オペコードが短いほど、全体的なコード密度が向上します。メモリポートまたはバス幅が32ビット未満に制限されている状況では、制限されたメモリ帯域幅でプロセッサにロードする必要のあるプログラムコードが少なくなるため、Thumbオペコードを短くすると32ビットARMコードと比較してパフォーマンスが向上します。

Cray-1やHitachiSuperH などの可変長(16ビットまたは32ビット)命令を備えたプロセッサアーキテクチャとは異なり、ARMおよびThumb命令セットは互いに独立して存在します。ゲームボーイアドバンスなどの組み込みハードウェアには、通常、完全な32ビットデータパスでアクセス可能な少量のRAMがあります。大部分は、16ビット以下のセカンダリデータパスを介してアクセスされます。この状況では、通常、Thumbコードをコンパイルし、完全な32ビットARM命令を使用して、CPUを集中的に使用するセクションのいくつかを手動で最適化し、これらの幅の広い命令を32ビットバスアクセス可能メモリに配置するのが理にかなっています。

Thumb命令デコーダーを備えた最初のプロセッサーはARM7TDMIでした。XScaleを含むすべてのARM9以降のファミリには、Thumb命令デコーダが含まれています。これには、ARMによってライセンス供与されたHitachi SuperH(1992)から採用された指示が含まれています。[115] ARMの最小のプロセッサフ​​ァミリ(Cortex M0およびM1)は、最低コストのアプリケーションで最大のパフォーマンスを実現するために、16ビットのThumb命令セットのみを実装しています。

親指-2

Thumb-2テクノロジは、2003年に発表されたARM1156コアに導入されました。Thumb -2は、Thumbの限定された16ビット命令セットを追加の32ビット命令で拡張して、命令セットの幅を広げ、可変長命令セットを生成します。 。 Thumb-2の目標は、32ビットメモリで設定されたARM命令と同様のパフォーマンスで、Thumbと同様のコード密度を実現することでした。

Thumb-2は、ビットフィールド操作、テーブルブランチ、および条件付き実行を使用して、Thumb命令セットを拡張します。同時に、ARM命令セットは、両方の命令セットで同等の機能を維持するように拡張されました。新しい「UnifiedAssemblyLanguage」(UAL)は、同じソースコードからのThumbまたはARM命令の生成をサポートします。 ARMv7プロセッサで見られるThumbのバージョンは、基本的にARMコードと同じ機能を備えています(割り込みハンドラを作成する機能を含む)。これには少し注意が必要であり、新しい「IT」(if-then)命令を使用する必要があります。これにより、テストされた条件またはその逆に基づいて、最大4つの連続する命令を実行できます。 ARMコードにコンパイルする場合、これは無視されますが、Thumbにコンパイルする場合、実際の命令が生成されます。例えば:

; if(r0 == r1)
CMP  r0  r1 
ITE  EQ         ; ARM:コードなし...サム:IT命令
; 次にr0 = r2; 
MOVEQ  r0  r2   ; ARM:条件付き; 親指:ITE'T '(その後)による条件
; それ以外の場合、r0 = r3; 
MOVNE  r0  r3   ; ARM:条件付き; 親指:ITE'E '(else)による条件
; ThumbMOV命令には「EQ」または「NE」をエンコードするビットがないことを思い出してください。

すべてのARMv7チップは、Thumb命令セットをサポートしています。Cortex-Aシリーズ、Cortex-Rシリーズ、およびARM11シリーズのすべてのチップは「ARM命令セット状態」と「Thumb命令セット状態」の両方をサポートしますが、Cortex-MシリーズのチップはThumb命令セットのみをサポートします。[116] [117] [118]

サム実行環境(ThumbEE)

Jazelle RCT [119] (ランタイムコンパイルターゲット)として販売されていたThumbEE (一部のARMドキュメントでは誤ってThumb-2EEと呼ばれていました)は2005年に発表され、Cortex-A8プロセッサに最初に登場しました。ThumbEEは4番目の命令セット状態であり、Thumb-2拡張命令セットに小さな変更を加えます。これらの変更により、命令セットは、管理対象の実行環境で実行時に( JITコンパイルなどによって)生成されるコードに特に適したものになりますThumbEEは、JavaC#PerlPythonなどの言語のターゲットであり、 JITコンパイラーを許可しますパフォーマンスに影響を与えることなく、より小さなコンパイル済みコードを出力します。[要出典]

ThumbEEが提供する新機能には、すべてのロードおよびストア命令での自動nullポインターチェック、配列境界チェックを実行する命令、およびハンドラーを呼び出す特別な命令が含まれます。さらに、Thumb-2テクノロジーを利用しているため、ThumbEEはレジスタr8〜r15(Jazelle / DBX Java VM状態が保持されている場所)へのアクセスを提供します。[120]ハンドラーは、頻繁に呼び出されるコードの小さなセクションであり、新しいオブジェクトにメモリを割り当てるなど、高級言語を実装するために一般的に使用されます。これらの変更は、少数のオペコードを転用し、コアが新しいThumbEE状態にあることを知っていることによるものです。

2011年11月23日、Arm HoldingsはThumbEE命令セットの使用を廃止し[121]、ARMv8はThumbEEのサポートを削除しました。

浮動小数点(VFP)

VFP(Vector Floating Point)テクノロジは、ARMアーキテクチャ[122]の浮動小数点ユニット(FPU)コプロセッサ拡張です(ARMv8では異なる方法で実装されています-コプロセッサはそこで定義されていません)。バイナリ浮動小数点演算のANSI / IEEE Std754-1985標準に完全に準拠した低コストの単精度および倍精度浮動小数点計算を提供します。。 VFPは、PDA、スマートフォン、音声の圧縮と解凍、3次元グラフィックスとデジタルオーディオ、プリンター、セットトップボックス、自動車アプリケーションなど、幅広いアプリケーションに適した浮動小数点計算を提供します。 VFPアーキテクチャは、短い「ベクトルモード」命令の実行をサポートすることを目的としていましたが、これらは各ベクトル要素で順次動作するため、真の単一命令、複数データ(SIMD)ベクトル並列処理のパフォーマンスを提供しませんでした。したがって、このベクトルモードは、導入後すぐに削除され[123] 、ネオンとも呼ばれるはるかに強力なAdvancedSIMDに置き換えられました

ARM Cortex-A8などの一部のデバイスには、完全なVFPモジュールではなくカットダウンされたVFPLiteモジュールがあり、フロート動作ごとに約10倍のクロックサイクルが必要です。[124] ARMv8以前のアーキテクチャは、コプロセッサインターフェイスを使用して浮動小数点/ SIMDを実装していました。コプロセッサインターフェイスを使用するARMベースのプロセッサに見られる他の浮動小数点および/またはSIMDユニットには、FPA、FPE、iwMMXtがあり、これらの一部はトラップによってソフトウェアに実装されましたが、ハードウェアに実装された可能性があります。これらはVFPと同じ機能の一部を提供しますが、オペコードとの互換性はありません。FPA10は拡張精度も提供します、ただし、単精度でのみ正しい丸め(IEEE 754で必要)を実装します。[125]

VFPv1
廃止
VFPv2
ARMv5TE、ARMv5TEJ、およびARMv6アーキテクチャのARM命令セットに対するオプションの拡張。VFPv2には16個の64ビットFPUレジスタがあります。
VFPv3またはVFPv3-D32
ほとんどのCortex-A8およびA9ARMv7プロセッサに実装されています。浮動小数点例外をトラップできないことを除いて、VFPv2との下位互換性があります。VFPv3には標準で32個の64ビットFPUレジスタがあり、スカラー、浮動小数点、倍精度を変換するVCVT命令を追加し、定数をFPUレジスタにロードできるようにVMOVにイミディエートモードを追加します。
VFPv3-D16
上記と同じですが、64ビットFPUレジスタは16個しかありません。Cortex-R4およびR5プロセッサとTegra2(Cortex-A9)に実装されています。
VFPv3-F16
珍しい; ストレージ形式としてIEEE754-2008半精度(16ビット)浮動小数点をサポートします。
VFPv4またはVFPv4-D32
Cortex-A12およびA15ARMv7プロセッサに実装されたCortex-A7は、ネオンを備えたFPUの場合、オプションでVFPv4-D32を備えています。[126] VFPv4には、標準で32個の64ビットFPUレジスタがあり、ストレージ形式としての半精度サポートと、VFPv3の機能への積和演算の融合命令の両方が追加されています。
VFPv4-D16
上記と同じですが、64ビットFPUレジスタは16個しかありません。ネオンなしのFPUの場合、Cortex-A5およびA7プロセッサに実装されます。[126]
VFPv5-D16-M
単精度および倍精度浮動小数点コアオプションが存在する場合にCortex-M7に実装されます。

Debian Linux 、およびUbuntuLinux Mintなどの派生物でarmhfARMハードフロート)は、上記の追加のVFP3-D16浮動小数点ハードウェア拡張機能(およびThumb-2)を含むARMv7アーキテクチャを指します。ソフトウェアパッケージとクロスコンパイラツールは、armhfとarm / armelのサフィックスを使用して区別します。[127]

Advanced SIMD(ネオン)

Advanced SIMD拡張命令(別名Neonまたは「MPE」メディア処理エンジン)は、64ビットと128ビットのSIMD命令セットを組み合わせたもので、メディアおよび信号処理アプリケーションに標準化されたアクセラレーションを提供します。ネオンはすべてのCortex-A8デバイスに含まれていますが、Cortex-A9デバイスではオプションです。[128] Neonは、10 MHzで実行されているCPUでMP3オーディオデコードを実行でき、 13 MHzでGSM 適応マルチレート(AMR)音声コーデックを実行できます。包括的な命令セット、個別のレジスタファイル、および独立した実行ハードウェアを備えています。[129]Neonは、8、16、32、および64ビットの整数および単精度(32ビット)浮動小数点データと、オーディオおよびビデオ処理、グラフィックスおよびゲーム処理を処理するためのSIMD操作をサポートします。ネオンでは、SIMDは同時に最大16の操作をサポートします。Neonハードウェアは、VFPで使用されているものと同じ浮動小数点レジスタを共有します。ARM Cortex-A8やCortex-A9などのデバイスは128ビットベクトルをサポートしますが、一度に64ビットで実行されます[124]が、新しいCortex-A15デバイスは一度に128ビットを実行できます。[130] [131]

ARMv7デバイスのネオンの癖は、すべての非正規化数をゼロにフラッシュすることです。その結果、非正規化数を失うことを許可するがオンになっていない限り、GCCコンパイラはそれを使用しません。-funsafe-math-optimizationsARMv8にはこの癖がないため、「拡張」ネオンが定義されていますが、GCC 8.2以降、ネオン命令を有効にするには同じフラグが必要です。[132]一方、GCCは、ARMv8のAArch64でネオンが安全であると見なしています。

ProjectNe10は、ARMの最初のオープンソースプロジェクトです(当初から、現在はMbed TLSという名前の古いプロジェクトを買収しました)。Ne10ライブラリは、NeonとCの両方で記述された一般的で便利な関数のセットです(互換性のため)。このライブラリは、開発者がNeonを学習せずにNeon最適化を使用できるようにするために作成されましたが、一般的なDSP、算術、および画像処理ルーチン用の高度に最適化されたNeon組み込みおよびアセンブリコード例のセットとしても機能します。ソースコードはGitHubで入手できます。[133]

ARMヘリウムテクノロジー

ヘリウムはM-ProfileVector Extension(MVE)です。150を超えるスカラーおよびベクトル命令を追加します。[134]

セキュリティ拡張機能

TrustZone(Cortex-Aプロファイル用)

TrustZoneTechnologyとして販売されているSecurityExtensionsは、ARMv6KZ以降のアプリケーションプロファイルアーキテクチャに含まれています。ハードウェアベースのアクセス制御に裏打ちされた2つの仮想プロセッサを提供することにより、SoCに別の専用セキュリティコアを追加する代わりの低コストの代替手段を提供します。これにより、アプリケーションコアはワールドと呼ばれる2つの状態を切り替えることができます。(機能ドメインの他の名前との混同を減らすため)、信頼性の高い世界から信頼性の低い世界への情報の漏洩を防ぐため。このワールドスイッチは、通常、プロセッサの他のすべての機能と直交しているため、同じコアを使用しながら、各ワールドを互いに独立して動作させることができます。次に、メモリと周辺機器はコアの動作世界を認識し、これを使用してデバイス上のシークレットとコードへのアクセス制御を提供できます。[135]

通常、リッチなオペレーティングシステムは信頼性の低い世界で実行され、セキュリティに特化したコードは信頼性の高い世界で実行され、攻撃対象領域を減らすことを目的としています。典型的なアプリケーションには、ARMベースのデバイスでのメディアの使用を制御するためのDRM機能[136]が含まれ、デバイスの未承認の使用を防止します。

実際には、独自のTrustZone実装の特定の実装の詳細はレビューのために公開されていないため、特定の脅威モデルにどのレベルの保証が提供されるかは不明ですが、攻撃の影響を受けません。[137] [138]

オープン仮想化[139]は、TrustZoneの信頼できるワールドアーキテクチャのオープンソース実装です。

AMDは、TrustZoneテクノロジーのライセンスを取得し、 Secure ProcessorTechnologyに組み込んでいます。[140]すべてではありませんが一部の製品で有効になっているAMDのAPUには、安全な処理を処理するためのCortex-A5プロセッサが含まれています。[141] [142] [143]実際、Cortex-A5 TrustZoneコアは以前のAMD製品に含まれていましたが、時間の制約のために有効にされませんでした。[142]

Samsung Knoxは、カーネルへの変更の検出、証明書の保存、キーの証明などの目的でTrustZoneを使用します。[144]

TrustZone for ARMv8-M(Cortex-Mプロファイル用)

ARMv8-Mテクノロジ用のTrustZoneとして販売されているセキュリティ拡張機能は、ARMv8-Mアーキテクチャに導入されました。TrustZone for ARMv8-Aと同様の概念が含まれていますが、例外を使用する代わりに分岐命令を使用してワールドスイッチングが実行されるため、アーキテクチャ設計が異なります。また、現在のセキュリティ状態に関係なく、どちらの世界からの安全なインターリーブ割り込み処理もサポートします。これらの機能を組み合わせることで、安全な世界への低遅延の呼び出しと応答性の高い割り込み処理が提供されます。ARMは、MおよびPSA認定用のTrustedFirmwareの形式でセキュアワールドコードのリファレンススタックを提供します

いいえ-ページ保護を実行しません

ARMv6の時点で、ARMアーキテクチャは、 eXecute Neverに対して、 XNと呼ばれる非実行ページ保護をサポートしています。[145]

ラージ物理アドレス拡張(LPAE)

物理アドレスサイズを32ビットから40ビットに拡張するLargePhysical Address Extension(LPAE)は、2011年にARMv7-Aアーキテクチャに追加されました。[146]物理アドレスサイズは、Cortex-A75およびCortex-A65AE。[147]

ARMv8-RおよびARMv8-M

ARMv8-Aアーキテクチャの後に発表されたARMv8-RおよびARMv8-Mアーキテクチャは、ARMv8-Aといくつかの機能を共有していますが、64ビットのAArch64命令は含まれていません。

ARMv8.1-M

2019年2月に発表されたARMv8.1-Mアーキテクチャは、ARMv8-Mアーキテクチャを拡張したものです。次のような新機能があります。

  • 新しいベクトル命令セット拡張。M-Profile Vector Extension(MVE)、またはヘリウムは、信号処理および機械学習アプリケーション用です。
  • ループとブランチの追加の命令セットの機能強化(低オーバーヘッドブランチ拡張)。
  • 半精度浮動小数点サポートの説明。
  • 浮動小数点ユニット(FPU)のTrustZone管理の命令セットの機能強化。
  • メモリ保護ユニット(MPU)の新しいメモリ属性。
  • Performance Monitoring Unit(PMU)、Unprivileged Debug Extension、および追加のデバッグサポートを含むデバッグの拡張機能は、信号処理アプリケーションの開発に重点を置いています。
  • 信頼性、可用性、および保守性(RAS)の拡張。

64/32ビットアーキテクチャ

ARMv8-Cortex A57 / A53 MPCore big.LITTLECPUチップを搭載したプラットフォーム

ARMv8

ARMv8-A

2011年10月に発表された[3] ARMv8-A(ARMv8と呼ばれることもありますが、ARMv8-Rも利用可能です)は、ARMアーキテクチャの根本的な変更を表しています。これは、「AArch64」という名前のオプションの64ビットアーキテクチャ(たとえば、Cortex-A32は32ビットARMv8-A CPU [148]であり、ほとんどのARMv8-A CPUは64ビットをサポートします)と、関連する新しい「A64」命令を追加します。セットする。AArch64は、ARMv7-A、32ビットアーキテクチャ(「AArch32」と呼ばれる)、および現在「A32」と呼ばれる古い32ビット命令セットとのユーザースペース互換性を提供します。Thumb命令セットは「T32」と呼ばれ、64ビットの対応するものはありません。ARMv8-Aを使用すると、32ビットアプリケーションを64ビットOSで実行できます。[1] ARMは、2012年10月30日にCortex-A53およびCortex-A57コアを発表しました。 [70] Appleは、消費者向け製品(iPhone5SのAppleA7)でARMv8-A互換コアを最初にリリースましFPGAを使用するAppliedMicroは、 ARMv8-Aを最初にデモしました。[149] Samsungの最初のARMv8- ASoC、 Galaxy Note4で使用されているExynos5433で、big.LITTLE構成の4つのCortex-A57およびCortex-A53コアの2つのクラスターを備えています。ただし、AArch32モードでのみ実行されます。[150]

AArch32とAArch64の両方に対して、ARMv8-AはVFPv3 / v4と高度なSIMD(Neon)を標準にします。また、 AESSHA-1 / SHA-256、および有限体演算をサポートする暗号化命令も追加します[151] AArch64はARMv8-Aとその後のリビジョンで導入されました。AArch64は、32ビットのARMv8-RおよびARMv8-Mアーキテクチャには含まれていません。

ARMv8-R

オプションのAArch64サポートがARMv8-Rプロファイルに追加され、最初のARMコアがCortex-R82を実装しました。[152] A64命令セットを追加します。

ARMv9

ARMv9-A

2021年3月に発表された更新されたアーキテクチャは、安全な実行と区分化に重点を置いています。[153] [154]

Arm SystemReady

Arm SystemReady(以前の名前はArm ServerReady)は、データセンターサーバーから産業用エッジおよびIoTデバイスまでの一般的な既製のオペレーティングシステムとハイパーバイザーをArmベースのシステムに導入するのに役立つ認定プログラムです。プログラムの主要な構成要素は、オペレーティングシステムとハイパーバイザーが依存できる最小のハードウェアとファームウェアの要件の仕様です。これらの仕様は次のとおりです。

これらの仕様は、システムアーキテクチャ諮問委員会(SystemArchAC)のアームホールディングスとそのパートナー によって共同開発されています。

Architecture Compliance Suite(ACS)は、これらの仕様のコンプライアンスを確認するのに役立つテストツールです。Arm SystemReady要件仕様は、認証の要件を文書化しています。

このプログラムは、2020年に最初のDevSummitイベントでArmHoldingsによって導入されましその前身であるArmServerReadyは、2018年にArmTechConイベントで紹介されました。このプログラムには現在、次の4つのバンドが含まれています。

  • SystemReady SR:この帯域は、 UEFIACPI、およびSMBIOSインターフェイスを期待するオペレーティングシステムとハイパーバイザーをサポートするサーバー用です。Windows Server、Red Hat Enterprise Linux、およびVMware ESXi-Armにはこれらのインターフェイスが必要ですが、他のLinuxおよびBSDディストリビューションもサポートできます。[説明が必要]
  • SystemReady LS:この帯域は、ハイパースケーラーがACPIおよびSMBIOSインターフェイスとともにLinuxBootファームウェアを期待するLinuxオペレーティングシステムをサポートするために使用するサーバー用です。
  • SystemReady ES:この帯域は、UEFI、ACPI、およびSMBIOSインターフェイスを期待するオペレーティングシステムとハイパーバイザーをサポートする産業用エッジおよびIoTデバイス用です。Windows IoT Enterprise、Red Hat Enterprise Linux、およびVMware ESXi-Armにはこれらのインターフェイスが必要ですが、他のLinuxおよびBSDディストリビューションもサポートできます。[説明が必要]
  • SystemReady IR:この帯域は、UEFIおよびデバイスツリーインターフェイスを期待するオペレーティングシステムをサポートする産業用エッジおよびIoTデバイス用です。組み込みLinux(Yoctoなど)および一部のLinux / BSDディストリビューション(Fedora、Ubuntu、Debian、OpenSUSEなど)もサポートできます。[説明が必要]

PSA認定

以前はPlatformSecurity Architectureと呼ばれていたPSA認定は、アーキテクチャに依存しないセキュリティフレームワークおよび評価スキームです。これは、システムオンチップ(SoC)プロセッサ上に構築されたモノのインターネット(IoT)デバイスのセキュリティ保護を支援することを目的としています。 [155]完全に信頼できる実行環境が大きすぎるか複雑な場合に、セキュリティを強化するために導入されました。 [156]

このアーキテクチャは、2017年に毎年恒例のTechConイベントでArmHoldingsによって導入されました。[157] [158]このスキームはアーキテクチャに依存しませんが、マイクロコントローラでの使用を目的としたArmCortex-Mプロセッサコアに最初に実装されました。PSA Certifiedには、一般的なIoT製品のセキュリティ機能を決定するプロセスを示す無料で利用可能な脅威モデルとセキュリティ分析が含まれています。[159]また、無料でダウンロード可能なアプリケーションプログラミングインターフェイス(API)パッケージ、アーキテクチャ仕様、オープンソースファームウェア実装、および関連するテストスイートも提供します。[160]

2017年にアーキテクチャセキュリティフレームワークが開発された後、2年後の2019年にEmbeddedWorldでPSACertified保証スキームが開始されました。[161] PSA Certifiedは、チップベンダー、OSプロバイダー、IoTデバイスメーカーにマルチレベルのセキュリティ評価スキームを提供します。[162] Embedded Worldプレゼンテーションでは、チップベンダーにレベル1認定を紹介しました。レベル2保護のドラフトが同時に提示されました。[163]レベル2認証は、2020年2月に使用可能な標準になりました。[164]

この認定は、PSAの共同利害関係者によって作成され、さまざまなIoT製品の設計によるセキュリティアプローチを可能にします。PSA認定仕様は、実装およびアーキテクチャに依存しないため、任意のチップ、ソフトウェア、またはデバイスに適用できます。[165] [163]この認証は、 IoT製品のメーカーと開発者の業界の断片化も排除します。[166]

オペレーティングシステムのサポート

32ビットオペレーティングシステム

過去のオペレーティングシステム

最初の32ビットARMベースのパーソナルコンピュータであるAcornArchimedesは、もともとARXと呼ばれる野心的なオペレーティングシステムを実行することを目的としていました。マシンにはRISCOSが付属しており、Acornや他のベンダーのARMベースのシステムでも使用されていました。初期のAcornマシンの中には、RISCiXと呼ばれるUnixポートを実行できるものもありました(どちらも、MIPSアーキテクチャの最新のUnixバリアントである RISC / osと混同しないでください。)

組み込みオペレーティングシステム

32ビットARMアーキテクチャは、次のような多数の組み込みおよびリアルタイムオペレーティングシステムでサポートされています。

モバイルデバイスのオペレーティングシステム

32ビットARMアーキテクチャは、次のようなほとんどのモバイルデバイスオペレーティングシステムの主要なハードウェア環境です。

以前は廃止されましたが、現在は廃止されています。

デスクトップ/サーバーオペレーティングシステム

32ビットARMアーキテクチャは、RISC OSと、次のような複数のUnixライクなオペレーティングシステム でサポートされています。

64ビットオペレーティングシステム

組み込みオペレーティングシステム

モバイルデバイスのオペレーティングシステム

デスクトップ/サーバーオペレーティングシステム

32ビットまたは64ビットのARMオペレーティングシステムへの移植

ARM用に再コンパイルされWineプロジェクトからWinelibにリンクされたWindowsアプリケーションは、Linux、FreeBSD、またはその他の互換性のあるオペレーティングシステムの32ビットまたは64ビットARMで実行できます。[193] [194] x86バイナリは、たとえばARM用に特別にコンパイルされていない場合、WineでQEMUを使用してARMでデモンストレーションされています(Linuxなど)[要出典]が、フルスピードまたはWinelibと同じ機能では動作しません。

メモ

  1. ^ 32ビットワードを使用すると、4Mビット/秒は1MIPSに相当します。
  2. ^ Matt Evansは、より高速なバージョンは単純に上位にビニングされており、根本的な変更はないように見えると述べています。[36]

も参照してください

参考文献

引用

  1. ^ a b c d e Grisenthwaite、Richard(2011)。「ARMv8-テクノロジープレビュー」 (PDF)2011年11月11日にオリジナル (PDF)からアーカイブされました2011年10月31日取得
  2. ^ 「ARMアーキテクチャのプロシージャコール標準」(PDF)アームホールディングス2013年11月30日2013年5月27日取得
  3. ^ a b 「ARMはARMアーキテクチャの次のバージョンの技術的な詳細を開示します」(プレスリリース)。アームホールディングス2011年10月27日。2019年1月1日のオリジナルからアーカイブ2013年9月20日取得
  4. ^ 「ARMNeoverseN1プラットフォームの発表」community.arm.com 2020年4月8日取得
  5. ^ a b "Acorn RISCMachineに関するいくつかの事実" Roger Wilsonがcomp.archに投稿、1988年11月2日。2007年5月25日取得。
  6. ^ a b Hachman、Mark(2002年10月14日)。「ARMコアが3Gテリトリーに登る」ExtremeTech 2018年5月24日取得
  7. ^ ターリー、ジム(2002年12月18日)。「2パーセントソリューション」埋め込み2018年5月24日取得
  8. ^ カトレス、イアン(2020年6月22日)。「新しい#1スーパーコンピューター:富士通のFugakuとA64FXが415ペタフロップスでトップに躍り出ました」www.anandtech.com 2021年1月25日取得
  9. ^ 「アームパートナーは2000億チップを出荷しました」アーム(プレスリリース)2021年11月3日取得
  10. ^ 「スマートな世界を構築し、人工知能を強化する:ARM」シリコンレビュー2019 2020年4月8日取得
  11. ^ 「ARMパートナーが1,000億個のチップを出荷することで、大量のIoT接続を可能にする」community.arm.com 2020年4月8日取得1,000億チップの累積展開で、その半分は過去4年間に出荷されました。[..]なぜ1兆以上ではないのですか?これが私たちの目標であり、今後20年間で1兆台の接続デバイスが展開されることを確認しています。
  12. ^ 「32ビットおよびARMベースのデバイスへの移行パスに関するMCU市場:売上高で32ビットのトップ、出荷台数で16ビットのリード」ICインサイト。2013年4月25日2014年7月1日取得
  13. ^ ターリー、ジム(2002)。「2パーセントソリューション」Embedded.com。
  14. ^ 「PCとサーバーの拡張に熱心なアームホールディングス」レジスター2011年2月1日。
  15. ^ McGuire-Balanza、ケリー(2010年5月11日)。「25年間でゼロから数十億までのARM」アームホールディングス2012年11月8日取得
  16. ^ Fairbairn、ダグラス(2012年1月31日)。「ソフィーウィルソンのオーラルヒストリー」(PDF)2016年3月3日のオリジナルからアーカイブ(PDF)2016年2月2日取得
  17. ^ スミス、トニー(2011年11月30日)。「BBCMicroは30歳になります」レジスタハードウェア2011年12月12日にオリジナルからアーカイブされました2011年12月12日取得
  18. ^ ポルソン、ケン。「マイクロプロセッサの年表」Processortimeline.info 2013年9月27日取得
  19. ^ Leedy、Glenn(1983年4月)。「NationalSemiconductorNS16000マイクロプロセッサフ​​ァミリ」バイトpp。53–66 2020年8月22日取得
  20. ^ Evans 2019、6:00。
  21. ^ マナー、デビッド(1998年4月29日)。「ARMの方法」エレクトロニクスウィークリー2012年7月29日にオリジナルからアーカイブされました2012年10月26日取得
  22. ^ Evans 2019、5:30。
  23. ^ a b Evans 2019、7:45。
  24. ^ Evans 2019、8:30。
  25. ^ Alt Party2009のSophieWilson(パート3/8)2021年12月11日にオリジナルからアーカイブされました。
  26. ^ Chisnall、David(2010年8月23日)。ARMアーキテクチャを理解する2013年5月26日取得
  27. ^ Evans 2019、9:00。
  28. ^ ファーバー、スティーブンB.(2000)。ARMシステムオンチップアーキテクチャボストン:アディソン-ウェスリー。ISBN 0-201-67519-6
  29. ^ Evans 2019、9:50。
  30. ^ Evans 2019、23:30。
  31. ^ Evans 2019、26:00。
  32. ^ 「SophieWilsonによるARM命令セットの設計履歴(パート3)」2015年5月10日。2021年12月11日のオリジナルからアーカイブ2020年5月25日取得–YouTube経由。
  33. ^ 「ソフィーウィルソンのオーラルヒストリー– 2012コンピューター歴史博物館フェロー」(PDF)コンピュータ歴史博物館2012年1月31日2020年5月25日取得
  34. ^ Harker、T。(2009年夏)。「ARMはIPに真剣に取り組む(2部構成のシリーズの第2部[関連編集者の見解]」IEEESolid-State Circuits Magazine .1 38–69。doi10.1109 / MSSC.2009.933674。ISSN1943-0590 。S2CID36567166_ _  
  35. ^ Evans 2019、20:30。
  36. ^ Evans 2019、22:00。
  37. ^ Evans 2019、21:30。
  38. ^ Evans 2019、22:0030。
  39. ^ a b Evans 2019、14:00。
  40. ^ Levy、Markus。「ARMアーキテクチャの歴史:開始からIPOまで」(PDF)2013年3月14日取得
  41. ^ Santanu Chattopadhyay(2010)。組み込みシステム設計PHIラーニングPvt。株式会社p。9. ISBN 978-81-203-4024-4
  42. ^ リチャードマレー。「32ビット演算」
  43. ^ ARMマイルストーン、ARM会社のWebサイト。2015年4月8日取得
  44. ^ アンドリュース、ジェイソン(2005)。「ARMアーキテクチャの3つのSoC検証トピック」。ARMSoC設計用のハードウェアとソフトウェアの共同検証英国オックスフォード:Elsevierpp。69  _ ISBN 0-7506-7730-9ARMは、英国のケンブリッジにあるAcorn Computerの支店としてスタートし、Acorn、Apple、VLSITechnologyの合弁会社を設立しました。12人の従業員のチームが、1983年から1985年の間に最初のARMマイクロプロセッサの設計を作成しました。
  45. ^ ウェーバー、ジョナサン(1990年11月28日)。「アップルがどんぐりに参加、チップ製造ベンチャーのVLSI」ロサンゼルスタイムズロサンゼルス2012年2月6日取得Appleは、Advanced Risc Machines Ltd.(ARM)と呼ばれる同社の30%の持分に、約300万ドル(約150万ポンド)を投資しました[...]
  46. ^ 「ARMCorporateBackgrounder」 は2006年10月4日にウェイバックマシン ARMテクノロジーでアーカイブされました。
  47. ^ Montanaro、James etal。(1997)。「160MHz、32 b、0.5 W CMOSRISCマイクロプロセッサ」デジタルテクニカルジャーナル、vol。9、いいえ。1. pp。49–62。
  48. ^ DeMone、Paul(2000年11月9日)。「ARMのEmbeddedWorldDominationへの競争」リアルワールドテクノロジーズ2015年10月6日取得
  49. ^ 「機械の行進」technologyreview.comMITテクノロジーレビュー2010年4月20日2015年10月6日取得
  50. ^ Krazit、Tom(2006年4月3日)。「居間用の武装」CNET。
  51. ^ Tracy Robinson(2014年2月12日)。「500億個の出荷されたARM搭載チップを祝う」
  52. ^ サラマリー(2014年3月3日)。「ARMのリーチ:500億チップマイルストーン」
  53. ^ ブラウン、エリック(2009)。「ARMネットブックには取り外し可能なタブレットが付属しています」2013年1月3日にオリジナルからアーカイブされました2009年8月19日取得
  54. ^ ピータークラーク(2016年1月7日)。「Amazonは独自のARMチップを販売しています」
  55. ^ 「MACOMはAppliedMicroの買収を無事に完了しました」(プレスリリース)。2017年1月26日。
  56. ^ フルムサヌ、アンドレイ。「ARMCortexテクノロジーライセンスに基づいて構築されたARMの詳細」AnandTech2019年5月26日取得
  57. ^ カトレス、イアン。「ARMフレキシブルアクセス:お金を使う前にSoCを設計する」AnandTech2019年10月9日取得
  58. ^ 「ARMフレキシブルアクセスのよくある質問」ARM 2019年10月9日取得
  59. ^ ノーティング、ステファン。「STORMCOREプロセッサシステム」(PDF)OpenCores 2014年4月1日取得
  60. ^ 「krevanth / ZAP」GitHub 2016年10月13日取得
  61. ^ 「Cortex-M23プロセッサ」ARM 2016年10月27日取得
  62. ^ 「Cortex-M33プロセッサ」ARM 2016年10月27日取得
  63. ^ 「ARMv8-MアーキテクチャはSmartEmbeddedのセキュリティを簡素化します」ARM 2015年11月10日取得
  64. ^ 「ARMv8-Rアーキテクチャ」2015年7月10日取得
  65. ^ 「ARMCortex-Rアーキテクチャ」(PDF)アームホールディングス。2013年10月2014年2月1日取得
  66. ^ スミス、ライアン(2016年9月20日)。「ARMがCortex-R52CPUを発表:ADASなどのための決定論的で安全」AnandTech2016年9月20日取得
  67. ^ 「Cortex-A32プロセッサ」ARM 2019年10月10日取得
  68. ^ 「Cortex-A35プロセッサ」ARM 2015年11月10日取得
  69. ^ a b 「ARMは世界で最もエネルギー効率の高い64ビットプロセッサであるCortex-A50シリーズを発表」(プレスリリース)。アームホールディングス2012年10月31日取得
  70. ^ 「Cortex-A72プロセッサ」ARM 2015年7月10日取得
  71. ^ 「Cortex-A73プロセッサ」ARM 2016年6月2日取得
  72. ^ 「ARMv8-Aアーキテクチャ」2015年7月10日取得
  73. ^ ARMv8アーキテクチャテクノロジープレビュー(スライド); アームホールディングス。
  74. ^ 「CaviumThunderXは、シングルチップでARMコア数を48に増やします」半正確2014年6月3日。
  75. ^ 「スーパーコンピューティング2014のカビウム」Yahooファイナンス2014年11月17日。2015年10月16日のオリジナルからアーカイブ2017年1月15日取得
  76. ^ 「スーパーコンピュータのARMチップを評価するためのクレイ」eWeek2014年11月17日。
  77. ^ 「SamsungはCat.12 / 13モデムとカスタムCPUを搭載したExynos8890を発表しました」AnandTech
  78. ^ 「Cortex-A34プロセッサ」ARM 2019年10月10日取得
  79. ^ 「D21500 [AARCH64] BroadcomVulcanのサポートを追加」reviews.llvm.org
  80. ^ 「Cortex-A55プロセッサ」ARM 2017年5月29日取得
  81. ^ 「Cortex-A75プロセッサ」ARM 2017年5月29日取得
  82. ^ 「Cortex-A76プロセッサ」ARM 2018年10月11日取得
  83. ^ Berenice Mann(2017年4月)。「ARMアーキテクチャ–ARMv8.2-進化と配信」community.ARM.com
  84. ^ フルムサヌ、アンドレイ。「SamsungがExynos9825 SoCを発表:最初の7nmEUVシリコンチップ」AnandTech2019年10月11日取得
  85. ^ 「富士通は、最強のARMプロセッサA64FXを使用して、日本の数十億の超計算を生成し始めました」中国ITニュース2019年8月17日取得512ビット浮動小数点を使用するARMv8SVE(Scalable Vector Extension)チップ。
  86. ^ 「Cortex-A65AE–ARM」ARM 2020年4月8日取得各サイクルで2つのスレッドを並行して実行できます。各スレッドは異なる例外レベルにあり、異なるオペレーティングシステムを実行できます。
  87. ^ フルムサヌ、アンドレイ。「マーベルがThunderX3を発表:96コアと384スレッドの第3世代ARMサーバープロセッサ」AnandTech2020年5月26日取得
  88. ^ 「Armv8-Aアーキテクチャの新機能-アーキテクチャとプロセッサのブログ-Armコミュニティのブログ-Armコミュニティ」community.arm.com 2021年12月28日取得
  89. ^ 「AI、セキュリティ、および特殊なコンピューティングの将来のニーズに対するArmのソリューションはv9です」アーム2021年8月16日取得
  90. ^ 「消費者コンピューティングのための最初のArmV9CortexCPU」community.arm.com 2021年8月16日取得
  91. ^ 「ラインカード」(PDF)2003 2012年10月1日取得
  92. ^ パリッシュ、ケビン(2011年7月14日)。「脳をシミュレートするためにリンクされた100万個のARMコア」EETimes 2011年8月2日取得
  93. ^ 「プロセッサモード」アームホールディングス2013年3月26日取得
  94. ^ 「KVM / ARM」(PDF)2013年4月3日取得
  95. ^ ブラッシュ、デビッド(2010年8月)。「ARMv7-Aアーキテクチャの拡張」(PDF)ARMLtd 2014年6月6日取得
  96. ^ 「ARMコンパイラはアラインされていないアクセスをどのようにサポートしますか?」2011 2013年10月5日取得
  97. ^ 「整列されていないデータアクセス」2013年10月5日取得
  98. ^ Cortex-M0r0p0テクニカルリファレンスマニュアル; アームホールディングス。
  99. ^ 「ARMv7-Mアーキテクチャリファレンスマニュアル;アームホールディングス」arm.com 2013年1月19日取得
  100. ^ a b "ARMv7-AおよびARMv7-Rアーキテクチャリファレンスマニュアル; ArmHoldings"arm.com 2013年1月19日取得
  101. ^ 「ARMインフォメーションセンター」2015年7月10日取得
  102. ^ 「条件コード1:条件フラグとコード」ARMコミュニティ2019年9月26日取得
  103. ^ 「9.1.2。命令サイクルカウント」
  104. ^ 「CoreSightコンポーネント:デバッグアクセスポートについて」
  105. ^ 「Cortex-M3:デバッグアクセスポート(DAP)」
  106. ^ マイクアンダーソン。 「ARMHWデバッグオプションについて」
  107. ^ 「CMSIS-DAPデバッガユーザーズガイド」
  108. ^ 「CMSIS-DAP」
  109. ^ 「SWDAPvsCMSIS-DAP vsDAPLink」
  110. ^ 「ARMDSP命令セット拡張」arm.com2009年4月14日にオリジナルからアーカイブされました2009年4月18日取得
  111. ^ 「DSP&SIMD」2015年7月10日取得
  112. ^ ARM7TDMIテクニカルリファレンスマニュアルページii
  113. ^ Jaggar、Dave(1996)。ARMアーキテクチャリファレンスマニュアルプレンティスホール。pp。6–1。ISBN 978-0-13-736299-8
  114. ^ ネイサンウィリス(2015年6月10日)。「SuperHアーキテクチャの復活」LWN.net
  115. ^ 「ARMプロセッサ命令セットアーキテクチャ」ARM.com。2009年4月15日にオリジナルからアーカイブされました2009年4月18日取得
  116. ^ 「ARMはuC、ASSP、SoCでThumbの息子を目指しています」Linuxdevices.com。2012年12月9日にオリジナルからアーカイブされました2009年4月18日取得
  117. ^ 「ARMインフォメーションセンター」Infocenter.arm.com 2009年4月18日取得
  118. ^ 「ジャゼル」ARM Ltd. 2017年6月2日にオリジナルからアーカイブされました。
  119. ^ トムR.ハーフヒル(2005)。「ARMはJavaコンパイラを強化します:新しい16ビットThumb-2EE命令はシステムメモリを節約します」(PDF)2007年10月5日にオリジナル(PDF)からアーカイブされました。
  120. ^ ARMアーキテクチャリファレンスマニュアル、ARMv7-AおよびARMv7-Rエディション、発行Cb、セクションA2.10、2012年7月25日。
  121. ^ 「アセンブラを使用したARMコンパイラツールチェーン–VFPコプロセッサ」ARM.com 2014年8月20日取得
  122. ^ 「VFPディレクティブとベクトル表記」ARM.com 2011年11月21日取得
  123. ^ a b "ARMCortex-A8とCortex-A9の違い"シャービンエマミ2011年11月21日取得
  124. ^ 「FPA10データシート」(PDF)chrisacorns.computinghistory.org.ukGECPlesseySemiconductors。1993年6月11日2020年11月26日取得IEEE 754-1985に関連して、FPAは単精度演算で適合性を実現します[...]場合によっては、仮数の最下位の場所で1または2単位の誤差で倍精度および拡張精度の乗算が生成されることがあります。 。
  125. ^ a b "Cortex-A7 MPCoreテクニカルリファレンスマニュアル–1.3機能"ARM 2014年7月11日取得
  126. ^ 「ArmHardFloatPort– DebianWiki」Wiki.debian.org。2012年8月20日2014年1月8日取得
  127. ^ 「Cortex-A9プロセッサ」arm.com 2011年11月21日取得
  128. ^ 「Cortex-A9NEONMPEについて」arm.com 2011年11月21日取得
  129. ^ "US20050125476A1"
  130. ^ "US20080141004A1"
  131. ^ 「ARMオプション」GNUコンパイラコレクションマニュアル2019年9月20日取得
  132. ^ 「Ne10:ARMアーキテクチャ用のオープンに最適化されたソフトウェアライブラリプロジェクト」GitHub 2019年9月20日取得
  133. ^ ジョセフ・イー。「ARMv8.1-Mアーキテクチャの概要」(PDF)2020年3月5日取得
  134. ^ 「Genode– ARMTrustZoneテクノロジーの調査」2015年7月10日取得
  135. ^ 「ARMはARMTrustZoneテクノロジーに基づくモバイルコンシューマーDRMソフトウェアソリューションの利用可能性を発表しました」(プレスリリース)。News.thomasnet.com 2009年4月18日取得
  136. ^ Laginimaineb(2015年10月8日)。「ビット、お願いします!:MSM8974の完全なTrustZoneエクスプロイト」ビット、お願いします!2016年5月3日取得
  137. ^ ディシェン。「AndroidでTrustZoneを利用して「信頼できるコア」を攻撃する」(PDF)ブラックハットブリーフィング2016年5月3日取得
  138. ^ 「ARMTrustZoneおよびARMハイパーバイザーオープンソースソフトウェア」オープン仮想化。2013年6月14日にオリジナルからアーカイブされました2013年6月14日取得
  139. ^ 「AMDセキュアテクノロジー」AMDAMD 2016年7月6日取得
  140. ^ スミス、ライアン(2012年6月13日)。「Trustzone機能用のARMCortexA5プロセッサを含むAMD2013APU」AnandTech2016年7月6日取得
  141. ^ a b シンピ、アナンドラル(2014年4月29日)。「AMDBeemaMullins Architecture A10 micro6700Tパフォーマンスプレビュー」AnandTech2016年7月6日取得
  142. ^ Walton、Jarred(2014年6月4日)。「AMDがモバイルKaveriAPUを発表」AnandTech2016年7月6日取得
  143. ^ 「SamsungKNOXプラットフォーム」(PDF)サムスン電子2016年4月。
  144. ^ 「ARMアーキテクチャリファレンスマニュアル」(PDF)p。B4-8。2009年2月6日にオリジナル(PDF)からアーカイブされました。APXおよびXN(実行しない)ビットがVMSAv6 [仮想メモリシステムアーキテクチャ]に追加されました。
  145. ^ ARMアーキテクチャリファレンスマニュアル、ARMv7-AおよびARMv7-RエディションARMリミテッド。
  146. ^ 「Cortex-A65AE」ARM開発者2019年4月26日取得
  147. ^ 「Cortex-A32プロセッサ–ARM」2016年12月18日取得
  148. ^ 「AppliedMicroは世界初の64ビットARMv8コアを紹介します」(プレスリリース)。アプライドマイクロ。2011年10月28日2014年2月11日取得
  149. ^ 「SamsungのExynos5433はA57 / A53 ARMSoCです」AnandTech2014年9月17日取得
  150. ^ 「ARMCortex-A53MPCoreプロセッサテクニカルリファレンスマニュアル:暗号化拡張」ARM 2016年9月11日取得
  151. ^ Frumusanu、Andrei(2020年9月3日)。「ARMがCortex-R82を発表:最初の64ビットリアルタイムプロセッサ」AnandTech
  152. ^ Frumusanu、Andrei(2021年3月30日)。「ArmがArmv9アーキテクチャを発表:SVE2、セキュリティ、そして次の10年」AnandTech
  153. ^ ハロッズ、アレックス(2021年3月30日)。「Armがv9アーキテクチャを発表」(プレスリリース)。アーム株式会社
  154. ^ オズボーン、チャーリー。「ARMはIoTデバイスのPSAセキュリティアーキテクチャを発表しました」ZDNet。
  155. ^ Wong、William G.(2017年10月25日)。「ArmのプラットフォームセキュリティアーキテクチャはCortex-Mをターゲットにしています」電子デザイン。
  156. ^ ウォン、ウィリアム。「ARMのプラットフォームセキュリティアーキテクチャはCortex-Mをターゲットにしています」電子設計
  157. ^ ホッフェンバーグ、スティーブ。「ARM:セキュリティは単なる技術的義務ではなく、社会的責任です」VDCリサーチ
  158. ^ ARMasu、ルシアン。「ARMはそのIoTプラットフォームセキュリティアーキテクチャに関する詳細を明らかにします」トムスハードウェア
  159. ^ ウィリアムズ、クリス。「ARMPSAIoT API?BRB ...ネット接続キットを保護するための技術のツールボックスがさらに開きます」レジスター
  160. ^ ヘイズ、キャロライン(2019年2月25日)。「EmbeddedWorld:ArmはPSAに4番目のセキュリティ要素を導入します」エレクトロニクスウィークリー
  161. ^ 「PSA認定:IoTへの信頼の構築」PSA認定
  162. ^ a b 「PSA認定–信頼の構築、価値の構築」EETimes2019年3月4日。
  163. ^ 「IoT時代におけるセキュリティ標準と規制の6兆ドルの重要性」IoTNow。2020年3月16日。
  164. ^ マクレガー、ジム(2019年3月4日)。「ArmがIoTのセキュリティ認証テストを導入」フォーブス
  165. ^ スピード、リチャード(2019年2月26日)。「AzureIoTは、インマルサットの厚意により、エッジでの接続を維持するために宇宙に向かっています」TheRegister
  166. ^ 「OS-9仕様」マイクロウェア
  167. ^ a b "ファロス"SourceForge 2018年5月24日取得
  168. ^ 「PikeOSの安全で安全な仮想化」2013年7月10日取得。
  169. ^ a b 「安全性が認定されたリアルタイムオペレーティングシステム–サポートされているCPU」
  170. ^ 「ARMプラットフォームポート」opensolaris.org。2012年12月2日にオリジナルからアーカイブされました2012年12月29日取得
  171. ^ 「GreenHillsSoftwareのINTEGRITYベースのマルチバイザーは、組み込み業界初の64ビットの安全な仮想化ソリューションを提供します」ghs.com 2018年3月14日取得
  172. ^ 「5GおよびLTE-A用のEneaOSEリアルタイムオペレーティングシステム| Enea」www.enea.com 2018年4月17日取得
  173. ^ 「サポートされているプラ​​ットフォーム」docs.sel4.systems 2018年11月23日取得
  174. ^ 「QNXソフトウェア開発プラットフォーム(SDP 7.0)| BlackBerryQNX」www.blackberry.qnx.com 2020年7月27日取得
  175. ^ Linus Torvalds(2012年10月1日)。"Re:[GIT PULL] arm64:Linuxカーネルポート"Linuxカーネルメーリングリスト(メーリングリスト)2019年5月2日取得
  176. ^ Larabel、Michael(2013年2月27日)。「Ubuntu / Debianの64ビットARMバージョンが起動しています」マイケル・ララベル2014年8月17日取得
  177. ^ 「Debianプロジェクトニュース– 2014年8月14日」Debian2014年8月14日2014年8月17日取得
  178. ^ 「ARM用のUbuntuサーバー」ubuntu.com
  179. ^ 「Architectures / AArch64」2015年1月16日取得
  180. ^ "Portal:ARM / AArch64" 2015年1月16日取得
  181. ^ 「SUSELinuxEnterprise 12SP2リリースノート」2016年11月11日取得
  182. ^ 「RedHatはRedHat EnterpriseLinuxのARMサーバーサポートを導入します」redhat.com 2019年1月18日取得
  183. ^ 「64ビットARMアーキテクチャプロジェクトの更新」FreeBSDFoundation。2014年11月24日。
  184. ^ 「OpenBSD / arm64」2017年8月7日取得
  185. ^ 「NetBSD / arm64」2018年8月5日取得
  186. ^ 「HP、Asusが最初のWindows 10 ARM PCを発表:20時間のバッテリー寿命、ギガビットLTE」ArsTechnica 2018年1月22日取得この新しいバージョンのWindows10は、Microsoft初の64ビットARMオペレーティングシステムです。ストアからx86および32ビットARMアプリケーションを実行し、やがて64ビットARMアプリケーションを実行します。ただし、Microsoftは64ビットARMSDKをまだ完成させていません。多くの要素が用意されていますが(たとえば、64ビットARMコンパイラがあります)、同社はまだストアに提出された64ビットARMアプリケーションを採用しておらず、64ビットARMデスクトップアプリケーションもありません。
  187. ^ Hassan、Mehedi(2016年12月10日)。「ARM64上のWindows10は、最初にコンパイルされたアプリを取得します」MSPoweruser
  188. ^ Filippidis、カトリーナ(2018年6月1日)。「VLCは最初のARM64Windowsアプリの1つになります」Engadget
  189. ^ Sweetgall、Marc(2018年11月15日)。「ARM開発でのWindows10の公式サポート」Windows開発者。WindowsブログMicrosoft 2019年12月17日取得
  190. ^ Gartenberg、Chaim(2020年11月12日)。「macOSBigSurがダウンロードできるようになりました」ザ・ヴァージ2020年11月13日取得
  191. ^ クローバー、ジュリ(2020年6月23日)。「RosettaはWindowsを実行するx86仮想化アプリをサポートしません」MacRumors2020年11月13日取得
  192. ^ 「ARM–公式ワインウィキ」2015年7月10日取得
  193. ^ 「ARM64–公式ワインウィキ」2015年7月10日取得
  194. ^ 「ARMセキュリティアップデート」ARM開発者2018年5月24日取得

参考文献

さらに読む

外部リンク

アーキテクチャマニュアル
クイックリファレンスカード