(Translated by https://www.hiragana.jp/)
ARMアーキテクチャ - Wikipedia コンテンツにスキップ

ARMアーキテクチャ

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』
STM32から転送てんそう
ARMアーキテクチャ
開発かいはつしゃ ARMホールディングス
ビットすう 32ビット64ビット
発表はっぴょう 1983ねん
バージョン ARMv9[1]
デザイン RISC
タイプ Register-Register
エンコード Fixed
ブランチ Condition code
エンディアン Bi
拡張かくちょう Thumb, Jazelle, VFP, NEON, SVE, SME
レジスタ
16(32ビット)、31(64ビット)

ARMアーキテクチャ(アーム[2][3][4][5]アーキテクチャ) とは、ARMホールディングス事業じぎょう部門ぶもんであるARM Ltd.により設計せっけい・ライセンスされているアーキテクチャである。機器ききてい電力でんりょくアプリケーションからスーパーコンピューターまで様々さまざま機器ききもちいられている。

概要がいよう

[編集へんしゅう]

ARMアーキテクチャは消費しょうひ電力でんりょくおさえる特徴とくちょうち、てい消費しょうひ電力でんりょく目標もくひょう設計せっけいされるモバイル機器ききにおいて支配しはいてきとなっている。ほんアーキテクチャの命令めいれいセットは「(基本きほんてきに)固定こていちょう命令めいれい」「簡素かんそ命令めいれいセット」というRISCふう特徴とくちょうゆうしつつ、「条件じょうけん実行じっこう定数ていすうシフト/ローテートきオペランド、比較的ひかくてき豊富ほうふなアドレッシングモード」といったCISCふう特徴とくちょうあわつのが特徴とくちょうてきだが、これは初期しょきのARMがパソコンけに設計せっけいされたさい当時とうじどう程度ていど性能せいのうのチップとしてはかなりすくないゲートすうやく25,000トランジスタ)で実装じっそうされたチップのおおくの部分ぶぶんつね活用かつようする設計せっけいとして工夫くふうされたもので、回路かいろ複雑ふくざつさをさないという方向ほうこうせいだというようにれば、CISCふう特徴とくちょうというよりむしろRISCふう特徴とくちょうともえる。このような設計せっけいが、初期しょき世代せだい実装じっそうにおいて、(性能せいのうわりに)てい消費しょうひ電力でんりょくちいさなコア、(RISCとしては)たかいコード密度みつどといったすぐれた特性とくせいむすびつき、ひろ普及ふきゅうする原動力げんどうりょくとなった。

2005ねん時点じてんで、ARMファミリーは32ビット組込くみこマイクロプロセッサ乃至ないしとくにマイクロコントローラ)のおよそ75%を[6]ぜん世界せかいもっと使用しようされている32ビットCPUアーキテクチャである[よう出典しゅってん]。ARMアーキテクチャにもとづくCPUコアは、PDA携帯けいたい電話でんわメディアプレーヤー携帯けいたいがたゲーム電卓でんたくなどの携帯けいたい機器ききから、ハードディスクルータなどのPC周辺しゅうへん機器ききまで、あらゆる電子でんし機器きき使用しようされる。2015ねん現在げんざい携帯けいたい電話でんわでは9わりちょうのシェアがある[7]

携帯けいたい機器きき電子でんし機器きき高性能こうせいのうともないARMコアの出荷しゅっかすう加速度かそくどてきびており、2008ねん1がつ時点じてんで100おく以上いじょう[8]、2010ねん9がつ時点じてんで200おく以上いじょう[9]出荷しゅっかされている。ARMアーキテクチャを使用しようしたプロセッサのれいとしては、テキサス・インスツルメンツOMAPシリーズやマーベル・テクノロジー・グループXScaleNVIDIATegraクアルコムSnapdragonフリースケールのi.MXシリーズ、ルネサス エレクトロニクスのRZファミリ、Synergyなどがある。

既存きそんのARMプロセッサはみとクライアントシステムにとくしていたためすべ32ビットであるが、顧客こきゃくからは電力でんりょく効率こうりつすぐれるARMアーキテクチャのサーバへの応用おうようのぞこえたかまり[よう出典しゅってん]、ARMしゃは2011ねん10がつ27にち、ARMの64ビット拡張かくちょうであるAArch64(ARM64)を実装じっそうしたARMv8アーキテクチャを発表はっぴょうした[10]

歴史れきし

[編集へんしゅう]

ARMの起源きげんは、1980年代ねんだい初頭しょとうのイギリスのコンピュータ業界ぎょうかい見出みいだすことができる。1983ねん、イギリスのエイコーン・コンピュータ(Acorn Computers、エイコーン)が画期的かっきてきなプロジェクト、Acorn RISC Machine(ARM)を開始かいしした。このプロジェクトは、BBC Micro成功せいこうけて、エイコーンが次世代じせだいマシンの開発かいはつ目指めざなかまれた。当時とうじ、エイコーンは既存きそん6502プロセッサ性能せいのう限界げんかい直面ちょくめんしており、より効率こうりつてきてい消費しょうひ電力でんりょくのプロセッサ、具体ぐたいてきには高性能こうせいのうな32ビットプロセッサの開発かいはつ急務きゅうむとなっていた[11]

プロジェクトの中心ちゅうしんとなったのは、ソフィー・ウィルソン(Sophie Wilson)とスティーブ・ファーバー(Steve Furber)をふく少数しょうすう技術ぎじゅつしゃたちだった。ウィルソンは命令めいれいセットアーキテクチャの設計せっけい担当たんとうし、ファーバーはハードウェア設計せっけいをリードした。彼女かのじょらは、バークレーRISC英語えいごばんスタンフォード大学だいがく研究けんきゅう影響えいきょうけ、RISC縮小しゅくしょう命令めいれいセットコンピューティング)アーキテクチャを採用さいようすることを決定けっていした。RISCアーキテクチャの単純たんじゅん命令めいれいセットにより、高速こうそく効率こうりつてき処理しょり実現じつげん期待きたいされた[11]

開発かいはつプロセスは綿密めんみつすすめられた。まず、既存きそん商用しょうようプロセッサの性能せいのう詳細しょうさい分析ぶんせきし、つぎにシミュレータを使用しようしてあたらしいアーキテクチャをテストした[11]

開発かいはつチームはVLSI Technology英語えいごばんしゃを「シリコンパートナー」としてえらび、エイコーンが設計せっけい提供ていきょうし、VLSIがレイアウトと製造せいぞう担当たんとうした。1985ねん4がつ26にちった最初さいしょのARMシリコンチップは正常せいじょう動作どうさし、これが「ARM1」とばれるバージョンで、6MHzで動作どうさしていた。このARM1は、BBC Microようのセカンドプロセッサとしてはじめて実用じつようされ、サポートチップ(MEMC (MEMory Controller), VIDC (VIDeo and sound Controller), IOC (Input Output Controller))の開発かいはつ促進そくしんし、ARM2の開発かいはつにも使用しようされた[12] 。また、BBC BASIC英語えいごばんのちアセンブリ言語げんごなおされ、これにより命令めいれいセットに精通せいつうした開発かいはつしゃたちは非常ひじょう高密度こうみつどなコードを作成さくせいすることができた。このARMばんBBC BASICは、ARMエミュレータのテストにおいても非常ひじょうすぐれたベンチマークとなった[11]

このARM1でのシミュレーション結果けっかもとに、1986ねんまつARM2が8MHzで登場とうじょうし、翌年よくねんには10〜12MHzで動作どうさするバージョンがリリースされた。ARM2にはおおきなアーキテクチャの改良かいりょうほどこされ、以前いぜんはソフトウェアで処理しょりされていた乗算じょうざんが、ブースの乗算じょうざんアルゴリズムによりハードウェアで実装じっそうされた。また、あらたに追加ついかされた「FIQ(Fast Interrupt reQuest)モード」により、処理しょりにレジスタ8〜14が自動的じどうてきえられるようになり、処理しょり高速こうそくされた[11]

ARM2は、1987ねん発売はつばいされたAcorn Archimedesシリーズのパーソナルコンピュータ(A305、A310、A440)ではじめて使用しようされた。Dhrystoneベンチマークによれば、ARM2は7MHzで動作どうさするMC68000ベースのシステム(AmigaMacintosh SEなど)にくらやく7ばい性能せいのうほこり、16MHzのIntel 80386とほぼ同等どうとう速度そくどっていた。高価こうかSun SPARCMIPS R2000のRISCベースワークステーションに性能せいのうしめしながらも、デスクトップパソコンとどう程度ていど価格かかく提供ていきょうされた。ARM2は、高速こうそくI/Oに対応たいおうするよう設計せっけいされ、のシステムにられるDMAコントローラのようなサポートチップを省略しょうりゃくし、設計せっけい大幅おおはば簡略かんりゃくしたことで、ワークステーションみの性能せいのう手頃てごろ価格かかく実現じつげんした[11]

ARM2は32ビットデータバス、26ビットのアドレス空間くうかん、そして16の32ビットレジスタ(プログラムカウンタをふくむ)をそなえていた。ARM2のトランジスタすうはわずか30,000で、Motorola 68000の68,000くらべて非常ひじょうすくなかった。この簡素かんそは、ARM2がマイクロコードたないことや、キャッシュ搭載とうさいしていないことによるもので、その結果けっかてい消費しょうひ電力でんりょく簡単かんたん熱処理ねつしょり可能かのうとなった。それでも、ARM2は1987ねんIBM PS/2シリーズに搭載とうさいされたIntel 80286Intel 386くらべ、すぐれた性能せいのう提供ていきょうしていた。

後継こうけいであるARM3は、4KBのキャッシュを搭載とうさいし、さらなる性能せいのう向上こうじょう実現じつげんした。

1980年代ねんだい後半こうはん、Apple Computer(げん:Apple)はエイコーンと共同きょうどうあたらしいARMコアの開発かいはつんだ。この作業さぎょう非常ひじょう重要じゅうようされていたため、エイコーンは1990ねん開発かいはつチームをスピンオフしてAdvanced RISC Machinesというしん会社かいしゃ設立せつりつした。このため、ARMは本来ほんらいのAcorn RISC MachineではなくAdvanced RISC Machineりゃくであるという説明せつめいをよくかけることになる。Advanced RISC Machinesは、1998ねんロンドン証券しょうけん取引とりひきしょNASDAQ上場じょうじょうしたさい、ARM Limitedとなった。

この経緯けいいにより、ARM6開発かいはつされた。1991ねん最初さいしょのモデルがリリースされ、AppleはARM6ベースのARM610をApple Newton採用さいようした。

これらの変化へんかてもコアは大体だいたいおなじサイズにおさまっている。ARM2は30000のトランジスタを使用しようしていたが、ARM6は35000にしかえていない。そこにあるアイデアは、エンドユーザーがARMコアとおおくのオプションのパーツをわせて完全かんぜんなCPUとし、それによってふる設備せつびでも製造せいぞうでき、かつ安価あんか高性能こうせいのうられる、というものである。

このARM6の改良かいりょうばんであるARM7も、ARM6を採用さいようした製品せいひんぐんつづ採用さいようされたほか、普及ふきゅうはいりつつあった携帯けいたい電話でんわにもひろ採用さいようされたことから、今日きょうのARMのいしずえともなった。

さらに、しん世代せだいのARMv4アーキテクチャにもとづいてARM7をさい設計せっけいしたものがARM7TDMIである。ARM7TDMIはThumb命令めいれい後述こうじゅつ)を実装じっそうし、てい消費しょうひ電力でんりょくたかいコード効率こうりつ両立りょうりつする利点りてんそなえていたことから、ライセンスをけたおおくの企業きぎょうによって製品せいひんされ、とく携帯けいたい電話でんわゲームボーイアドバンスといった民生みんせい機器きき採用さいようされたことから、莫大ばくだいかず製品せいひん搭載とうさいされた。なお、TDMIとはThumb命令めいれいデバッグ (Debug) 回路かいろ乗算じょうざん (Multiplier)、ICE機能きのう搭載とうさいしていることを意味いみしている。しかし、これよりのちのコアにはすべてこれらの機能きのう標準ひょうじゅんてき搭載とうさいされるようになったため、この名称めいしょうはぶかれている。

DECはARMv4アーキテクチャの設計せっけいのライセンスをStrongARM製造せいぞうした。233MHzでStrongARMはほんの1W電力でんりょくしか消費しょうひしない(最近さいきんのバージョンはさらにすくない)。この業績ぎょうせきのち訴訟そしょう解決かいけつ一環いっかんとしてインテル移管いかんされ、インテルはこの機会きかい利用りようしてふるくなりつつあったi960をStrongARMで補強ほきょうすることにし、それ以降いこうXScaleというられる高性能こうせいのう実装じっそう開発かいはつした。

以後いごも、StrongARMの技術ぎじゅつのフィードバックをけたARM9ARM10て、NECとの提携ていけいなどによって携帯けいたい電話でんわけプロセッサとしての地位ちい確固かっこたるものにしたARM11をリリースする。

2005ねんには製品せいひんラインナップを一新いっしんし、高機能こうきのう携帯けいたい電話でんわなどのアプリケーションプロセッサけであるCortex-A、リアルタイム制御せいぎょけであるCortex-RみシステムけであるCortex-Mと、ターゲットごとにシリーズを分類ぶんるいした。なお、Cortexの末尾まつび文字もじは、社名しゃめいであるARMの一文字ひともじずつをそれぞれてたものである[13]。また、2012ねん11月にはARMはつとなる64ビットアーキテクチャによるプロセッサコアであるCortex-A50シリーズを発表はっぴょうした[14]

ARMからIPコアのライセンス供与きょうよけているおも企業きぎょうには、モトローラIBMテキサス・インスツルメンツ任天堂にんてんどうフィリップスAtmelシャープサムスン電子でんしSTマイクロエレクトロニクスアナログ・デバイセズMediaTekパナソニッククアルコムマーベル・テクノロジー・グループなどがある。

ARMチップは世界せかいもっともよく使つかわれているCPUデザインのひとつとなっており、ハードディスク携帯けいたい電話でんわルータ電卓でんたくから玩具おもちゃいたるまであらゆる製品せいひんなかることができる。32ビットみCPUで圧倒的あっとうてきなシェアをめ、2004ねん世界せかいシェアは61%であった[15]

おも採用さいよう製品せいひん

[編集へんしゅう]
  • 携帯けいたい情報じょうほう端末たんまつ
  • 携帯けいたい電話でんわ
    • 一般いっぱんてきGSM携帯けいたい電話でんわ
    • cdmaOne携帯けいたい電話でんわ
    • 初期しょき3G携帯けいたい電話でんわれい:au CDMA 1X A1400番台ばんだい一部いちぶのぞくA1000番台ばんだい・A3000番台ばんだい・A5500番台ばんだいのぞくA5000番台ばんだい一部いちぶ例外れいがいのぞく)
  • 携帯けいたいゲーム
  • 携帯けいたい音楽おんがくプレーヤー
  • 電卓でんたく
    • HP 20b / HP 30b
  • その
  • 2007ねんころから採用さいようされるようになる。発表はっぴょう2002ねん4がつ29にち[17]
    • 7がつ17にち東芝とうしばがARM1176JZF-S搭載とうさい携帯けいたい電話でんわようプロセッサ、TC35711XBGを発表はっぴょう。2008ねんだい2四半期しはんきより量産りょうさん開始かいし予定よてい
  • NVIDIA Tegra
  • 携帯けいたい音楽おんがくプレーヤー
  • 携帯けいたい電話でんわ
    • T-Mobile G1
    • Qualcomm
      • MSM7500(EV-DO Rev.A対応たいおう携帯けいたい電話でんわようチップセット。ARM9Eとのダブル実装じっそう
      • MSM7600(EV-DO Rev.A対応たいおう携帯けいたい電話でんわようチップセット。ARM9Eとのダブル実装じっそう
    • NTTドコモFOMA902iシリーズ以降いこう携帯けいたい電話でんわ。905i以降いこうのSymbian採用さいようはSH-4Aとダブル実装じっそう
    • WS018KE (WILLCOM 9)(WILLCOM(ウィルコム)のPHS端末たんまつ
    • Samsung S3C6400(ARM 1176JZ(F)-S v1.0)
      • iPhone 3G(412 MHzで駆動くどう
  • タブレット・PDA
    • ノキア Internet Tablet N800
    • mylo COM-2
  • ゲーム
    • Zeebo (新興しんこうこくけDL専用せんよう3Dゲーム)
  • シングルボードコンピュータ
  • 2009ねんころから採用さいようされるようになる。2010ねん発売はつばいのAndroidスマートフォンはだい多数たすう採用さいよう
  • NetWalker
  • Samsung S5PC100
    • iPhone 3GS(600 MHzで駆動くどう
    • iPod touch (だい3世代せだい)
  • Apple A4(Cortex-A8をもとにAppleとサムスン携帯けいたい機器ききけに開発かいはつ
  • シングルボードコンピュータ
  • タブレットは2012ねんから、スマートフォンは2013ねんから採用さいようされた。
  • サムスン電子でんしは1.7GHzのデュアルコア Exynos 5250 を2012ねん10がつ[18]から搭載とうさい商品しょうひん販売はんばい開始かいし。メモリ帯域たいいき12.8GB/s[19]
  • テキサス・インスルメンツは2GHzのデュアルコアで2012ねんだい3四半期しはんきから商品しょうひん出荷しゅっか予定よてい[20]
  • NVIDIA は Tegra 4 を2013ねんだい1四半期しはんきから出荷しゅっか予定よてい
  • シングルボードコンピュータ
  • 2012ねん10がつ64ビット ARMのCortex-A57, A53(コードネーム「Atlas」と「Apollo」)が発表はっぴょうされ[21]、2014ねん搭載とうさい商品しょうひん(Samsung Galaxy Note 4 など)が販売はんばい開始かいしされた。
  • AMD は2015ねん下半期しもはんきにサーバーけ Opteron A1100 (Seattle) をリリース予定よてい[22][23]
  • A57やA53では、8コアやすべてのコア同時どうじ稼働かどうできる4+4コア(A57が4コア、A53が4コア)などが登場とうじょうした。
  • 2015ねん2がつ3にち発表はっぴょうされ[24]、2015ねん搭載とうさい商品しょうひん販売はんばいされる予定よてい[25]。Cortex-A57の後継こうけい製品せいひん
  • Raspberry Pi 4 Model B に採用さいようされた。
  • 2020ねん 5月26にち にCortex-A78ととも発表はっぴょうされた。
  • Cortex-X Custom Programにもとづき、Cortex-A78をベースに拡張かくちょうされている。


コアの性能せいのう採用さいよう実績じっせき

[編集へんしゅう]

ARMしゃせい

[編集へんしゅう]
ファミリー アーキテクチャ コア 特徴とくちょう キャッシュ (I/D)/MMU 性能せいのう MIPS @ MHz 採用さいよう製品せいひん
ARM1 ARMv1 ARM1 なし ARM Evaluation System second processor for BBC Micro
ARM2 ARMv2 ARM2 MUL(乗算じょうざん命令めいれい追加ついか
  • 4 MIPS @ 8 MHz
  • 0.33 DMIPS/MHz
Acorn Archimedes, Chessmachine
ARMv2a ARM250 統合とうごうメモリコントローラ (MMU), Graphics and IO processor. SWAP命令めいれい追加ついか なし, MEMC1a 7 MIPS @ 12 MHz Acorn Archimedes
ARM3 ARMv2a ARM2a ARMとしてはじめてのキャッシュの採用さいよう 4 KB 統合とうごう
  • 12 MIPS @ 25 MHz
  • 0.50 DMIPS/MHz
ARM6 ARMv3 ARM60 32ビットアドレス空間くうかんをサポート(それまでは26ビット) なし 10 MIPS @ 12 MHz 3DO, Zarlink GPS Receiver
ARM600 キャッシュ、コプロセッサバス(FPA10浮動ふどう小数点しょうすうてん演算えんざんユニットよう 4 KB 統合とうごう 28 MIPS @ 33 MHz
ARM610 キャッシュ、コプロセッサバスは
  • 17 MIPS @ 20 MHz
  • 0.65 DMIPS/MHz
Acorn Risc PC 600, Apple Newton 100シリーズ
ARM7 ARMv3 ARM700 8 KB 統合とうごう 40 MHz Acorn Risc PC 試作しさくCPUカード
ARM710 Acorn Risc PC 700
ARM710a
Acorn Risc PC 700, Apple Newton eMate 300
ARM7100 Integrated SoC. 18 MHz Psion Series 5
ARM7500 4 KB 統合とうごう 40 MHz Acorn A7000
ARM7500FE Integrated SoC. "FE"、FPA・EDOメモリコントローラを追加ついか
Acorn A7000+
ARM7TDMI v4T ARM7TDMI(-S) 3ステージ パイプライン なし 15 MIPS @ 16.8 MHz ゲームボーイアドバンス, ニンテンドーDS, iPod
ARM710T MMU 36 MIPS @ 40 MHz Psion 5 series, Apple Newton
ARM720T 8 KB 統合とうごうキャッシュ, MMU 60 MIPS @ 59.8 MHz
ARM740T MPU
v5TEJ ARM7EJ-S Jazelle DBX なし
ARM9TDMI v4T ARM9TDMI 5ステージ パイプライン
ARM920T 16 KB/16 KB, MMU 200 MIPS @ 180 MHz Armadillo, GP32,GP2X(マスタ), en:Tapwave Zodiac (Motorola i. MX1)
ARM922T 8 KB/8 KB, MMU 200/250 MHz Cavium CNS2132 (Econa product lines), Cavium STR8132 (Econa evaluation board), Ritmo Torrent Box/Mini Lan Server/BT-Downloader (ZAP-LN-86BT)
ARM940T 4 KB/4 KB, MPU GP2X(スレーブ)
ARM9E v5TE ARM946E-S variable, tightly coupled memories (TCM), MPU
  • 231 MIPS @ 210 MHz
  • 74.47 MIPS @ 67.024 MHz
ニンテンドーDS, ノキア N-Gage, Conexant 802.11 chips
ARM966E-S キャッシュレス, TCMs

ST Micro STR91xF, Ethernet内蔵ないぞう

ARM968E-S
v5TEJ ARM926EJ-S Jazelle DBX variable, TCMs, MMU 220 MIPS @ 200 MHz Mobile phones: ソニー・エリクソン・モバイルコミュニケーションズ(K, W シリーズ), シーメンス and Benq(x65 シリーズ以降いこう), テキサスインスツルメンツ OMAP1710
v5TE ARM996HS Clockless processor キャッシュレス, TCMs, MPU
ARM10E v5TE ARM1020E (VFP) 32 KB/32 KB, MMU
ARM1022E 16 KB/16 KB, MMU
v5TEJ ARM1026EJ-S Jazelle DBX variable, MMU or MPU
ARM11 v6 ARM1136J(F)-S SIMD, Jazelle DBX, (VFP) variable, MMU 1.25 DMIPS/MHz TI OMAP 2, NXP i.MX3
v6T2 ARM1156T2(F)-S SIMD, Thumb-2, (VFP) 1.54 DMIPS/MHz
v6KZ ARM1176JZ(F)-S SIMD, Jazelle DBX, (VFP) variable, MMU+TrustZone 1.25 DMIPS/MHz iPhone, iPhone 3G, Broadcom BCM2835
v6K ARM11 MPCore 1 – 4 core SMP, SIMD, Jazelle DBX, (VFP) variable, MMU 1.25 DMIPS/MHz(最大さいだい608 MHz) NVIDIA Tegra
SecurCore v6-M SC000 0.9 DMIPS/MHz
v4T SC100
v7-M SC300 1.25 DMIPS/MHz
Cortex-M v6-M Cortex-M0 マイクロコントローラけ。M1はFPGAじょう動作どうさ命令めいれいはM3のサブセット。Thumb-2 (BL, MRS, MSR, ISB, DSB, and DMB)対応たいおう 0.9 DMIPS/MHz NXP LPC11xx, Triad Semiconductor, Melfas, ちゅうきたテクノパーク, Nuvoton, オーストリアマイクロシステムズ, ローム, SwissMicros GmbH (DM15, DM41ひとし)
Cortex-M0+ 0.93 DMIPS/MHz NXP LPC81x, LPC82x, NXP S32K11x, Renesas RAファミリ, Renesas Synergy S1シリーズ
Cortex-M1 なし, tightly coupled memory optional.
  • 0.8 DMIPS/MHz[26]
  • 最大さいだい 136 DMIPS @ 170 MHz[27](クロックはFPGA依存いぞん
Altera Cyclone III[28], Actel FPGA[29]
v7-M Cortex-M3 マイクロコントローラけ(ハーバード・アーキテクチャ) キャッシュなし, (MPU) 1.25 DMIPS/MHz Texas Instruments Stellaris MCU, STMicroelectronics STM32, STMicroelectronics Accordo2, NXP LPC1000, NXP mbed, 東芝とうしば TX03, Luminary Micro, Ember EM3xx, Atmel AT91SAM3, Europe Technologies EasyBCU, Energy Micro EFM32, Actel SmartFusion, Renesas R-IN32
v7E-M Cortex-M4 マイクロコントローラけ(ハーバード・アーキテクチャ)。M3にDSP追加ついか。モーター制御せいぎょ、FA/電力でんりょく制御せいぎょ、オーディオ/ビデオ処理しょりなど。 NXP Kinetis, NXP LPC43xx, NXP i.MX 6, 7, 8, NXP S32K14x, S32M, STMicroelectronics, Renesas RAファミリ, Renesas Synergy MCU (S3/S5/S7), Infineon TRAVEO
v7-M Cortex-M7 マイクロコントローラけ(ハーバード・アーキテクチャ)。M4までの3だんパイプラインから、スーパースカラ(デュアル)6だんパイプラインとなり、命令めいれい/データ1キャッシュ、倍精度ばいせいど浮動ふどう小数点しょうすうてん演算えんざん追加ついかするなど大幅おおはば強化きょうかされた。クロック周波数しゅうはすう最大さいだい800 MHz程度ていどまでをターゲットとしており、2017ねん現在げんざい600 MHzで動作どうさする製品せいひんがある(NXP i.MX RT1050シリーズ)。

反面はんめん、M3,M4にあったBitBand機能きのう削除さくじょされているなどの変更へんこうてんもある。

L1 命令めいれい/データ かく0 – 64 KB, (MPU) 2.14 DMIPS/MHz[30][31] STMicroelectronics STM32 F7, Atmel SAM x7x, NXP i.MX RT1050, NXP i.MX 8M Nano, Plus, i.MX 95, NXP S32G, S32K, S32M274, 276, Infineon TRAVEO
v8-M Cortex-M23 マイクロコントローラけ(ノイマン・アーキテクチャ) 0.98 DMIPS/MHz[32] Renesas Synergy S1JA, Renesas RA2A1, Renesas RA2L1, Microchip SAML10
Cortex-M33 マイクロコントローラけ(ハーバード・アーキテクチャ) 1.50 DMIPS/MHz[33] Renesas RA6M4, Renesas RA4M3, STM32L5, NXP5500, NXP i.MX 8ULP, i.MX 9
Cortex-R v7-R Cortex-R4 リアルタイム/セーフティクリティカルなみシステム 可変かへんキャッシュ, MMUはオプション 1.66 DMIPS/MHz Texas Instruments TMS570, Broadcom, Renesas RZ/T, STMicroelectronics Accordo2
Cortex-R5 AMD/Xilinx Zynq UltraScale+ MPSoC
Cortex-R7 2.53 DMIPS/MHz
v8-R Cortex-R52 Renesas R-Car V4H, Renesas RZ/T2, NXP S32N, S32Z, S32E
Cortex-A英語えいごばん v7-A Cortex-A5 ていコスト、てい消費しょうひ電力でんりょく L1: 4 KB – 64 KB可変かへん, L2: オプション, メモリ管理かんりユニット, TrustZone 1.57 DMIPS/MHz (400 MHz – 800 MHz) Atmel SAMA5, PS-T328, Snapdragon S4 Play, Snapdragon 200
Cortex-A7 1 – 4マルチプロセッシング 浮動ふどう小数点しょうすうてん演算えんざん L2キャッシュメモリ4 MB(最高さいこう メモリ管理かんりユニット, TrustZone, ラージ物理ぶつりアドレス拡張かくちょう 1.9 DMIPS/MHz ( – 1.5Ghz) Snapdragon S4 Play, Snapdragon 200, 208, 210, 212, 400, Allwinner A20, Allwinner A31, MediaTek MT6589, Broadcom BCM2836, Renesas R-Car H2, NXP i.MX 6, 7
Cortex-A8 アプリケーションけ, NEON, Jazelle RCT, Thumb-2 可変かへん (L1+L2), メモリ管理かんりユニット, TrustZone 2.0 DMIPS/MHz (600 MHz – 1 GHz) TI OMAP 3, Freescale i.MX 5, Apple A4, Samsung Exynos 3, Allwinner A1x, Rockchip RK29xx
Cortex-A9 アプリケーションけ, 1 – 4コア対称たいしょうがたマルチプロセッシング, (VFP), (NEON), Jazelle RCT and DBX, Thumb-2, アウト・オブ・オーダー実行じっこう, 投機とうきてき実行じっこう, スーパースケーラ メモリ管理かんりユニット, TrustZone 2.5 DMIPS/MHz (800 MHz – 2 GHz) TI OMAP 4, NXP i.MX 6, ST-Ericsson NovaThor U8500, NVIDIA Tegra 2, NVIDIA Tegra 3, NVIDIA Tegra 4i, STMicroelectronics SPEAr1300, ザイリンクス Zynq-7000, Apple A5, Rockchip RK3xxx, Samsung Exynos 4, HiSilicon K3V2, Kirin 910, MediaTek, Renesas RZ/A, Intel Cyclone V SoC FPGA
Cortex-A15 1 – 4コア対称たいしょうがたマルチプロセッシング メモリ管理かんりユニット, TrustZone, ラージ物理ぶつりアドレス拡張かくちょう 3.5 DMIPS/MHz (1 GHz – 2.5 GHz) TI OMAP 5, Samsung Exynos 5, NVIDIA Tegra 4, NVIDIA Tegra K1, HiSilicon Kirin 920, Renesas APE6, Renesas R-Car H2, Renesas MP6530, Alpine AL-212
Cortex-A17 Rockchip RK3288
v8-A Cortex-A32 ちょう小型こがたてい消費しょうひ電力でんりょく電力でんりょく効率こうりつ重視じゅうしIoT機器ききけ。32ビット命令めいれいセット。
Cortex-A35 ていコスト、てい消費しょうひ電力でんりょく電力でんりょく効率こうりつ重視じゅうし。64ビット命令めいれいセット。 メモリ管理かんりユニット, TrustZone, 64bit仮想かそうアドレス, synchronization primitives。[34] MediaTek Helio X30, NXP i.MX 8
Cortex-A53 AArch64暗号あんごう命令めいれい 2.3 DMIPS/MHz Snapdragon 410, 412, 415, 425, 610, 615, 617, 625, 808, 810, HiSilicon Kirin 620, 930, 935, Rockchip RK3368, MediaTek MT6732, 6735, 6737, 6737T, 6738, 6750, 6752, 6753, Helio P10, P20, P25, X10, X30, Renesas R-Car H3, AMD/Xilinx Zynq UltraScale+ MPSoC, NXP i.MX 8, NXP S32G, S32R, TI AM67, 67A, 65x, 64x, 62P, 62x, 62Ax
Cortex-A57 4.1 DMIPS/MHz Snapdragon 808, 810, Nvidia Tegra X1, Samsung Exynos 7, Alpine AL-324, Renesas R-Car H3
Cortex-A72 Snapdragon 618, 620, 650, 652, HiSilicon Kirin 950, 955, AWS Graviton, Marvell ARMADA 7K, 8K, NXP i.MX 8, TI AM68, 69, 68A, 69A, TI DRA82x, TI TDA4x
Cortex-A73 HiSilicon Kirin 960, MediaTek Helio X30
v8.2-A Cortex-A55 Renesas R-Car S4, NXP i.MX 9
Cortex-A75 L1D: 64 KB, メモリ管理かんりユニット, TrustZone, 64bit仮想かそうアドレス
Cortex-A76 4命令めいれいdecode Renesas R-Car V4H
Cortex-A77
Cortex-A78
Cortex-A78C[35]
v9.0-A Cortex-A510 Dimensity 9000, Snapdragon 7 Gen 1, Snapdragon 8 Gen1, Snapdragon 8 Gen2, Exynos 2200
Cortex-A710 Dimensity 9000, Snapdragon 7 Gen 1, Snapdragon 8 Gen1, Snapdragon 8 Gen2, Exynos 2200
Cortex-A715
v9.2-A Cortex-A520 コードネーム: Hayes
Cortex-A720 コードネーム: Hunter
Cortex-X v8.2-A Cortex-X1英語えいごばん
v9.0-A Cortex-X2 Dimensity 9000, Qualcomm Snapdragon 8 Gen 1, Exynos 2200
Cortex-X3英語えいごばん Dimensity 9200, Snapdragon 8 Gen 2
v9.2-A Cortex-X4英語えいごばん
Neoverse v8.2-A Neoverse E1
Neoverse N1 Ampere Altra, Altra Max, AWS Graviton2
v8.4-A Neoverse V1 AWS Graviton3
v9.0-A Neoverse E2
Neoverse N2
Neoverse V2 NVIDIA Grace

サードパーティー

[編集へんしゅう]
ファミリー アーキテクチャ 名称めいしょう 特徴とくちょう キャッシュ (I/D)/MMU 性能せいのう MIPS @ MHz 採用さいよう製品せいひん
StrongARM v4 SA-1 16 KB/8 – 16 KB, MMU 1.0 DMIPS/MHz (203 – 206 MHz)
XScale v5TE 80200/IOP310/IOP315 I/O Processor
80219
IOP321 en:Iyonix
IOP33x
PXA210/PXA250 Applications processor ザウルス SL-5600, SL-A300
PXA255 32 KB/32 KB, MMU 400 BogoMips @ 400 MHz en:Gumstix
PXA26x
PXA27x 800 MIPS @ 624 MHz HTC Universal, ザウルス SL-C1000,3000,3100,3200,Willcom W-ZERO3シリーズ WS003SH,WS004SH,WS007SH,WS011SH,WS020SH
PXA800(E)F
Monahans 1000 MIPS @ 1.25 GHz
PXA900 Blackberry 8700, Blackberry Pearl (8100)
IXC1100 Control Plane Processor
IXP2400/IXP2800
IXP2850
IXP2325/IXP2350
IXP42x en:NSLU2
IXP460/IXP465
Snapdragon v7-A Scorpion アプリケーションけ, 1 – 2コア対称たいしょうがたマルチプロセッシング, VFPv3, NEON, Thumb-2, Jazelle RCT, アウト・オブ・オーダー実行じっこう, 投機とうきてき実行じっこう 可変かへん(L1+L2), MMU, TrustZone 2.1 DMIPS/MHz (800 MHz – 1.5 GHz) Qualcomm Snapdragon S1, S2, S3 (だい1 – 3世代せだい)
Krait アプリケーションけ, 1 – 4コア対称たいしょうがたマルチプロセッシング, VFPv4 MMU, TrustZone 3.3 DMIPS/MHz ( – 2.5 GHz) Qualcomm Snapdragon S4 (だい4世代せだい・S4 Playはのぞく), 400/600/800 (だい5世代せだい)
v8-A Kryo 64 KB/512 KB – 1 MB 6.3 DMIPS/MHz ( – 2.6 GHz) Qualcomm Snapdragon 820
Centriq v8-A Folker Centriq 2400
ARMADA v7-A Sheeva PJ4 アプリケーションけ, 1 – 4コア対称たいしょうがたマルチプロセッシング, VFPv3, Wireless MMX2, Thumb-2 可変かへん(L1+L2), MMU, TrustZone 2.42 DMIPS/MHz ( – 1.5 GHz) Marvell ARMADA 500/600シリーズ
Sheeva PJ4B け, 1 – 4コア対称たいしょうがたマルチプロセッシング, VFPv3, NEON, Wireless MMX2, Thumb-2 可変かへん(L1+L2), MMU, TrustZone 2.61 DMIPS/MHz ( – 1.6 GHz) Marvell ARMADA XP/370/1500
Apple Ax v7-A Swift アプリケーションけ, 2コア対称たいしょうがたマルチプロセッシング, VFPv4 32 KB/32 KB 1.1 GHz, 1.4 GHz Apple A6, Apple A6X
v8-A Cyclone アプリケーションけ, 2コア, AArch64 64 KB/64 KB 1.3 GHz Apple A7
Cyclone gen 2 1.1 GHz, 1.4 GHz, 1.5 GHz Apple A8
Typhoon アプリケーションけ, 3コア, AArch64 1.5 GHz Apple A8X
Twister アプリケーションけ, 2コア, AArch64 2.23 GHz, 2.35 GHz Apple A9, Apple A9X
Hurricane, Zephyr アプリケーションけ, 2+2コア, AArch64 1.64 GHz, 2.33 GHz Apple A10 Fusion
アプリケーションけ, 3+3コア, AArch64 2.38GHz Apple A10X Fusion
Monsoon, Mistral アプリケーションけ, 2+4コア, AArch64 L1: 64 KB/64 KB, L2: 8 MB 2.39 GHz Apple A11 Bionic
Vortex, Tempest L1: 128 KB/128 KB, L2: 8 MB 2.49 GHz Apple A12 Bionic
アプリケーションけ, 4+4コア, AArch64 2.5GHZ Apple A12X Bionic, Apple A12Z Bionic
v8.3-A Lightning, Thunder アプリケーションけ, 2+4コア, AArch64 L1: 48 KB/48 KB, L2: 4 MB 2.65 GHz Apple A13 Bionic
v8.6-A Firestorm, Icestorm L1: 192 KB/64 KB, L2: 12 MB/4 MB 2.99 GHz Apple A14 Bionic
Apple M1 アプリケーションけ, 4+4コア, AArch64 3.2 GHz Apple M1
Apple M1 Pro アプリケーションけ, 6+2コア, 8+2コア, AArch64 Apple M1 Pro
Apple M1 Max アプリケーションけ, 8+2コア, AArch64 Apple M1 Max
Apple M1 Ultra アプリケーションけ, 16+4コア, AArch64 Apple M1 Ultra
Apple A15 Avalanche, Blizzard アプリケーションけ, 2+4コア, AArch64 3.23 GHz Apple A15
Apple M2 アプリケーションけ, 4+4コア, AArch64 L1: 192 KB/128 KB, L2: 16 MB/4 MB 3.5 GHz Apple M2
Apple M2 Pro アプリケーションけ, 6+4コア, 8+4コア, AArch64 L1: 192 KB/128 KB, L2: 32 MB/4 MB Apple M2 Pro
Apple M2 Max アプリケーションけ, 8+4コア, AArch64 Apple M2 Max
Apple A16 Everest, Sawtooth アプリケーションけ, 2+4コア, AArch64 L2: 16 MB/8 MB/24 MB 3.46 GHz Apple A16
Tegra K1 v8-A Denver 128 KB/64 KB Google Nexus 9, Xiaomi Mi Pad
Parker Denver 2.0 DRIVE PX2
Xavier Carmel DRIVE Xavier, Jetson AGX Xavier
Exynos v8-A Exynos M1 64 KB/2 MB

(4コアシェア)

Exynos 8890 (Exynos 8 Octa)
Exynos M2 Exynos 8895
Exynos M3 Exynos 9810

ARMv7-A, v8-A は以下いかの SoC で実装じっそうされている。

ARMアーキテクチャを採用さいようしているCPU/メーカ

[編集へんしゅう]

ARMホールディングスの概要がいようにあるように、ARMホールディングスはARMアーキテクチャの設計せっけいのみをしており、製造せいぞうおこなってはいない。ARMはIPコアとして各社かくしゃにライセンスされ、それぞれの会社かいしゃにおいて機能きのう追加ついかするなどしてCPUとして製造せいぞうされる。製造せいぞうされたCPUはそのまま、あるいはボードじょう実装じっそう、もしくは製品せいひんまれたかたち販売はんばいなどされる。

以下いかに『CPUそのもの』『ボードじょう実装じっそうしたもの』などCPUやボードのシリーズめいやブランドめいなどが明確めいかくおもなメーカめい/CPUめい/シリーズめいとうする。

32ビットARM

[編集へんしゅう]

命令めいれいセット

[編集へんしゅう]

ARM は RISC プロセッサであり、Thumb 命令めいれいではなく ARM 命令めいれい場合ばあい、その命令めいれいセットは

  • 32ビット固定こていちょう命令めいれい
  • ロード/ストアアーキテクチャ
  • 3オペランドのレジスタあいだ演算えんざん
  • おおくの命令めいれいが1サイクルで実行じっこう可能かのう

といった、おおくの32ビットRISCプロセッサに共通きょうつうする特徴とくちょうられる。

ARMプロセッサは、PC相対そうたいアドレッシングやプレ-/ポスト-インクリメント・アドレッシングモードなど、RISCとみなされるほかのアーキテクチャとくらべ、豊富ほうふアドレッシングモードっている。

もうひと留意りゅういすべきことは、ARMの命令めいれいセットが時間じかんとともに増加ぞうかしているということである。たとえば、初期しょきのARMプロセッサ(ARM7TDMIより以前いぜんのもの)は2バイトのをロードする命令めいれいがなかった。

CPUモード

[編集へんしゅう]

32ビット ARM アーキテクチャはいくつかのCPUモードをつ。同時どうじには1つのモードにしかなれない。命令めいれい外部がいぶからの割込わりこみなどでモードがわる[36]

ユーザーモード
唯一ゆいいつ特権とっけんモード。
高速こうそく割込わりこみモード
FIQ 割込わりこみが発生はっせいしたときにわる特権とっけんモード。
割込わりこみモード
IRQ 割込わりこみが発生はっせいしたときにわる特権とっけんモード。
スーパーバイザーモード
CPU がリセットされたときか SWI 命令めいれい実行じっこうされたときにわる特権とっけんモード。
アボートモード
プリフェッチアボートかデータアボート例外れいがい発生はっせいしたときにわる特権とっけんモード。
未定義みていぎモード
未定義みていぎ命令めいれい実行じっこうされたときにわる特権とっけんモード。
システムモード (ARMv4以降いこう)
これが唯一ゆいいつ例外れいがい原因げんいんわるモードではない。CPSRレジスタにこのモードをくことによりこのモードにえることが出来できる。
MONモード (ようセキュリティ拡張かくちょう)
TrustZone 拡張かくちょうをサポートするためにつくられたモニターモード。
HYP 別名べつめい PL2 モード (ARMv7以降いこう)
仮想かそう拡張かくちょう、ハイパーバイザーモード。[37]

レジスタ

[編集へんしゅう]

レジスタ R0 から R7 はすべての CPU モードで同一どういつ。これらはけっしてバンクされない。

R13 と R14 はシステムモード以外いがいすべての特権とっけん CPU モードでバンクされる。独自どくじの R13 と R14 をつことにより例外れいがいからそれぞれのモードにえられる。R13 はスタックポインタ、R14 は関数かんすうからのもどりアドレスをつ。

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

別名べつめい

  • R13 は SP ともばれ、スタックポインタ
  • R14 は LR ともばれ、リンクレジスタ
  • R15 は PC ともばれ、プログラムカウンタ

CPSR は下記かき32ビットを[38]

  • 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) は greater-than-or-equal-to ビット
  • DNM (ビット 20 - 23) は禁止きんしビット
  • J (ビット 24) は Java ステートビット
  • Q (ビット 27) は sticky overflow ビット
  • V (ビット 28) はオーバーフロービット
  • C (ビット 29) は carry/borrow/extend ビット
  • Z (ビット 30) はれいビット
  • N (ビット 31) は negative/less ビット

VFP/NEONようとして、これらとはべつに32ビットようはs0〜s31のレジスタがある。これらは、64ビットレジスタとしてd0〜d15として使つかえる。s0〜s31とd0〜d15はオーバーラップしている。大半たいはんの ARMv7-A SoC はさらに、d16〜d31も使つかえる。

VFP/NEONようのシステムレジスタとして、以下いかの3つがある。

  • FPSCR - Floating-point status and control register (浮動ふどう小数点しょうすうてん状態じょうたい制御せいぎょレジスタ)
  • FPEXC - Floating-point exception register (浮動ふどう小数点しょうすうてん例外れいがいレジスタ)
  • FPSID - Floating-point system ID register (浮動ふどう小数点しょうすうてんシステムIDレジスタ)

条件じょうけん実行じっこう

[編集へんしゅう]

ARMの命令めいれいセットにおいてユニークなのは、マシンさい上位じょうい4ビットをめる条件じょうけんコード使用しようした条件じょうけん実行じっこう命令めいれいであり、これによってほぼすべての命令めいれい分岐ぶんき命令めいれいしに条件じょうけんきで実行じっこうすることができる。

これにより、マシンちゅう即値そくちフィールドにけるビットすうってしまうとう欠点けってんもあるものの、ちいさなifぶん対応たいおうするコードの生成せいせい分岐ぶんき命令めいれいけることが可能かのうになる。れいとして、ユークリッドの互除ほうげる。

(このれいC言語げんごによる)

int gcd(int i, int j)
{
    while (i != j) {
        if (i > j)
            i -= j;
        else
            j -= i;
    }
    return i;
}

ARMのアセンブリ言語げんごでは、whileループの部分ぶぶん以下いかのようになる。

 
 loop
        CMP    Ri, Rj       ; i と j を比較ひかく
        SUBGT  Ri, Ri, Rj   ; もし "GT" ならば i = i - j;  
        SUBLT  Rj, Rj, Ri   ; もし "LT" ならば j = j - i; 
        BNE    loop         ; もし "NE" ならば loop にもど

通常つうじょう分岐ぶんき命令めいれい使用しようしなければならないthenやelseぶしのところで分岐ぶんきはぶかれていることがかる。

命令めいれいセットのもうひとつのユニークな機能きのうが、シフト演算えんざんを「データ処理しょり」(算術さんじゅつ演算えんざん論理ろんり演算えんざん、レジスタあいだ代入だいにゅう命令めいれいなかむことができることである。たとえば、C言語げんご

a += (j << 2);

のようなぶんを1つのARM命令めいれい

        ADD     Ra, Ra, Rj, LSL #2

としてあらわすことができる。

これにより、おおくのARMプログラムは通常つうじょうRISCプロセッサに期待きたいされるようなプログラムよりも密度みつどたかいものになる。このため、命令めいれいフェッチにともなうメモリへのアクセス頻度ひんどすくなくなり、分岐ぶんきともなうストールも回避かいひしやすく、パイプライン処理しょり効率こうりつてき使つかうことができる。このことが、ARMがARMより複雑ふくざつなCPUデザインと競合きょうごうすることを可能かのうにした特徴とくちょうてき一因いちいんのひとつである。

ARMプロセッサはThumbばれるコード効率こうりつ向上こうじょう意図いとした16ビットちょう命令めいれいモードをっている(SuperH命令めいれい16ビット/データ32ビットになら追加ついかされた)。条件じょうけん実行じっこうのための4ビットプレディケートが削除さくじょされている。メモリポートやバスが32ビットよりもせま状況じょうきょうにおいて32ビットコードよりも性能せいのう向上こうじょうする。おおくの場合ばあいみアプリケーションでは32ビットのデータパスをっているのは一部いちぶのアドレス範囲はんいのみであり(れい: ゲームボーイアドバンス)、のこりは16ビットかそれよりもせまくなっている。このような状況じょうきょうでは、Thumbコードをコンパイルし、CPUにもっと負荷ふかのかかる部分ぶぶんだけを32ビットちょう命令めいれいセットを使用しようして手作業てさぎょう最適さいてきするのが、通常つうじょうにかなっている。Thumb命令めいれいとARM命令めいれい単一たんいつ実行じっこうファイルない混在こんざい可能かのうであるが、Thumb命令めいれい実行じっこうできるモードとARM命令めいれい実行じっこうできるモードは独立どくりつしており、両者りょうしゃ使つかうにはその都度つどプロセッサの状態じょうたいえる必要ひつようがある。状態じょうたいえは分岐ぶんき命令めいれい (BX, BLX) でおこなうことができるため、通常つうじょう関数かんすう単位たんいでThumb命令めいれいとARM命令めいれい使つかけ、関数かんすうしのさいえをおこなうのが一般いっぱんてきである。

Thumbテクノロジを搭載とうさいした最初さいしょのプロセッサはARM7TDMIである。ARM9とそれ以降いこうのファミリは、XScaleふくめてすべてThumbテクノロジを搭載とうさいしている。

Thumb-2テクノロジは2003ねん発表はっぴょうされたARM1156コア登場とうじょうした。Thumb-2はThumbの制限せいげんされた16ビットちょう命令めいれいセットを追加ついかの32ビットちょう命令めいれい拡張かくちょうし、命令めいれいセットのはばひろげるものである。公称こうしょうされているThumb-2の目的もくてきは、Thumbと同様どうようのコード密度みつどと32ビットメモリじょうでのARM命令めいれいセットと同様どうよう性能せいのうることであり、Thumb-2はビットフィールド操作そうさ、テーブル分岐ぶんき条件じょうけん実行じっこうなどをふくんでいる。従来じゅうらいはThumbモードにおいて使用しよう可能かのう汎用はんようレジスタは8ほんのみであり自由じゆうひくかったが、Thumb-2で導入どうにゅうされた32ビットちょう命令めいれいでは16ほんすべてのレジスタが使用しよう可能かのうである。16ビットちょう命令めいれいと32ビットちょう命令めいれいはモードのえなしで混在こんざい可能かのうであるため、ThumbモードにおいてもARMモードにちか自由じゆうられるようになった。

ARMは、Javaバイトコードをハードウェアでネイティブに実行じっこうできる技術ぎじゅつ実装じっそうした。これはARMやThumbモードとならぶもうひとつの実行じっこうモードであり、ARM/Thumbのえと同様どうようにしてアクセスすることができる。後述こうじゅつのJazelle RCTにたいしてJazelle DBX (Direct Bytecode eXecution) ともう。

Jazelleテクノロジを搭載とうさいした最初さいしょのプロセッサはARM926EJ-Sである。CPUめいの'J'がJazelleをあらわしている。

Thumb Execution Environment (ThumbEE)

[編集へんしゅう]

ThumbEEJazelle RCT (Runtime Compilation Target)ともばれるだい4のモードである。2005ねんにアナウンスされ、Cortex-A8プロセッサで最初さいしょ実装じっそうされた。Thumb-2命令めいれいセットに小規模しょうきぼ変更へんこうくわえたもので、JITコンパイラのように実行じっこうにコードを生成せいせいする場合ばあいいている。おも対象たいしょうJava.NET MSILC#など)、PythonPerlなどの言語げんごである。

DSP 拡張かくちょう命令めいれい

[編集へんしゅう]

デジタル信号しんごう処理しょりとマルチメディアアプリケーションけに ARMアーキテクチャを拡張かくちょうするため、いくつかの命令めいれい追加ついかされた[2]ARMv5TEARMv5TEJ というアーキテクチャめいの "E" がこれをあらわしているとおもわれる。

追加ついかされた命令めいれいは、デジタルシグナルプロセッサアーキテクチャで一般いっぱんてきなものである。たとえば、符号ふごうづけせき演算えんざん飽和ほうわ加算かさん飽和ほうわ減算げんざん、「先行せんこうする0のカウント」のバリエーションである。

ARMv6で導入どうにゅうされた[39]。32ビットはば

Advanced SIMD (NEON)

[編集へんしゅう]

Advanced SIMD拡張かくちょうNEONともばれ、メディアおよびデジタル信号しんごう処理しょりいた64ビットと128ビットSIMD命令めいれいセットである。8/16/32/64ビットの整数せいすう演算えんざんと、32ビット (単精度たんせいど) 浮動ふどう小数点しょうすうてん演算えんざんのためのSIMD命令めいれい定義ていぎされており、ARMv7から利用りよう可能かのう。32ビットCPUでは倍精度ばいせいど浮動ふどう小数点しょうすうてんすう利用りよう不可ふかで、倍精度ばいせいどにはVFPを使用しよう

ほとんどの ARMv7 SoC で NEON に対応たいおうしているが、NVIDIA Tegra 2 シリーズ、SPEAr1310、SPEAr1340 などで対応たいおうしていない。

レジスタはVFPレジスタとして用意よういされている32ほんの64ビットレジスタをもちいて、32ほんの64ビットSIMDレジスタ (D0-D31) 、もしくは16ほんの128ビットSIMDレジスタ (Q0-Q15) としてアクセスできる。たとえば128ビットレジスタQ0はD0とD1の2つの64ビットレジスタの領域りょういきにマッピングされている。

Cortex-A15 などより、NEONv2 (version 2) が搭載とうさいされ、Fused Multiply-Add ができる。これにより、単精度たんせいど浮動ふどう小数点しょうすうてんすうで 8 FLOPS/cycle となった。

Wireless MMX

[編集へんしゅう]

Wireless MMX (WMMX) はインテルがXScaleプロセッサけに開発かいはつしたSIMD命令めいれいセットである。64ビットはばのレジスタが16ほん用意よういされており、8/16/32/64ビットのSIMD整数せいすう演算えんざん可能かのう。XScaleとその売却ばいきゃくさきであるマーベル・テクノロジー・グループせいのARM SoCに採用さいようされている。命令めいれいセット自体じたいはx86プロセッサのMMXとはまったことなるものの、GCCVisual C++ひとしのコンパイラで利用りようできる関数かんすうはMMXとの互換ごかんせいがある程度ていど確保かくほされており、これを利用りようすればMMXけに記述きじゅつされたコードを比較的ひかくてき容易ようい移植いしょくすることができる。

VFP (Vector Floating Point) はARMアーキテクチャのコプロセッサ拡張かくちょうである。はん精度せいど(v3以降いこう)・単精度たんせいど倍精度ばいせいど浮動ふどう小数点しょうすうてん演算えんざん機能きのう提供ていきょうする。

  • VFPv1 - 廃止はいし
  • VFPv2 - ARMv5TE、ARMv5TEJ、ARMv6 で利用りよう可能かのう
  • VFPv3 - ARMv7 で利用りよう可能かのう通常つうじょうはレジスタすう32であるが、NVIDIA Tegra 2 シリーズなどはレジスタすう半分はんぶんのVFPv3-D16を採用さいよう。Cortex-A8の実装じっそうはパイプラインされておらず非常ひじょう低速ていそく (VFP Lite)。
  • VFPv4 - Cortex-A5, A7, A15, Apple A6, Snapdragon Krait などで利用りよう可能かのうIEEE754準拠じゅんきょの(乗算じょうざん結果けっかまるめをおこなわない)Fused multiply add 対応たいおう。VFPv4-D16 もあり。

"Vector" のかんするとおり、いくつかの命令めいれいにおいてはベクタモードとばれる1命令めいれい複数ふくすうのレジスタにたいして演算えんざんおこなうモードが用意よういされている。このモードを使つかえばSIMD演算えんざん可能かのうであるが、プログラミングモデルがやや煩雑はんざつ[注釈ちゅうしゃく 1]であったことや、当時とうじのARM11プロセッサにおける実装じっそうはスカラ命令めいれい要素ようそすうふんだけシーケンシャルに実行じっこうするというSIMD演算えんざんのメリットを享受きょうじゅできないものであったため、あまり積極せっきょくてきには使つかわれなかった。VFPv3を実装じっそうするARMv7世代せだい以降いこうではモダンなSIMD命令めいれいセットであるAdvanced SIMD拡張かくちょう命令めいれい (NEON) が導入どうにゅうされたため、現在げんざいではベクタモードの利用りよう推奨すいしょうされていない。Cortex-A9やA15ではベクタモードに対応たいおうしていない[注釈ちゅうしゃく 2]ことからかるように、現在げんざいのARMアーキテクチャにおけるVFPの位置いちづけはスカラ専用せんよう浮動ふどう小数点しょうすうてん演算えんざんコプロセッサであり、SIMD演算えんざん用途ようとについてはNEONにみちゆずっている。

単精度たんせいど浮動ふどう小数点しょうすうてん演算えんざんはNEONでも実行じっこう可能かのうであるが、倍精度ばいせいど浮動ふどう小数点しょうすうてん演算えんざんやIEEE754準拠じゅんきょの4つのまるめモード、正規せいきすうのサポートとうはNEONには存在そんざいしないため、これらを利用りようしたい場合ばあいはVFP命令めいれい使つか必要ひつようがある。

64ビットARM

[編集へんしゅう]

64ビット命令めいれいセットのAArch64やARM64にかんしてはAArch64参照さんしょう

脚注きゃくちゅう

[編集へんしゅう]

注釈ちゅうしゃく

[編集へんしゅう]
  1. ^ ベクトルレジスタが明示めいじてき用意よういされておらず、複数ふくすうのスカラレジスタにたいして演算えんざんおこなう。ベクタちょう固定こていされておらず、FPSCRという特殊とくしゅなレジスタで最大さいだい8要素ようそまでのベクタちょう指定してい可能かのう。また、レジスタがスカラモードのみで使つかえるバンクとベクタモードで使つかえるバンクにけられており、レジスタのわせに制約せいやくがある。
  2. ^ ARMプロセッサのベクタモードへの対応たいおうはMVFR0レジスタの24-27ビット参照さんしょうすることで確認かくにんできる。

出典しゅってん

[編集へんしゅう]
  1. ^ Arm’s Solution to the Future Needs of AI, Security and Specialized Computing is v9
  2. ^ Arm® (日本にっぽん)|半導体はんどうたいIP|アーム公式こうしきサイト – Arm®”. arm.com. 2022ねん11月18にち閲覧えつらん
  3. ^ なかARMだらけ!? 現代げんだい社会しゃかいささえる「ARM」ってなんだろう?”. ドスパラ. 2022ねん11月18にち閲覧えつらん
  4. ^ ARMとは”. コトバンク. 2022ねん11月18にち閲覧えつらん
  5. ^ ArmがマイコンけハイエンドCPUコア、Cortex-M85発表はっぴょう”. 日経にっけい. 2022ねん11月18にち閲覧えつらん
  6. ^ http://www.arm.com/miscPDFs/3823.pdf
  7. ^ [1]
  8. ^ http://www.jp.arm.com/pressroom/08/080125.html
  9. ^ https://news.mynavi.jp/techplus/article/20100910-cortex-a15/
  10. ^ https://ascii.jp/elem/000/000/645/645995/
  11. ^ a b c d e f Douglas Fairbairn (2012ねん1がつ31にち). “Oral History of Sophie Wilson”. 3 March 2016てんのオリジナルよりアーカイブ2 February 2016閲覧えつらん
  12. ^ Wilson, Roger (2 November 1988). "Some facts about the Acorn RISC Machine". Newsgroupcomp.arch. 2024ねん9がつ12にち閲覧えつらん
  13. ^ スマートフォンを席巻せっけんするARMプロセッサーの歴史れきし”. ASCII.jp (2010ねん12月20にち). 2013ねん7がつ24にち閲覧えつらん
  14. ^ ARMがはつの64ビットCPU「Cortex-A50シリーズ」発表はっぴょう、サーバーけに16コア以上いじょう対応たいおう”. ITpro (2012ねん11月1にち). 2014ねん11月27にち閲覧えつらん
  15. ^ 2005ねん、ARMしゃのセミナー資料しりょうによる。
  16. ^ Sony Japan | プレスリリース| クリエようしんアプリケーションCPU「Handheld EngineTM」の開発かいはつについて”. www.sony.co.jp. 2019ねん4がつ8にち閲覧えつらん
  17. ^ News:べい速報そくほう次世代じせだいマイクロアーキテクチャ「ARM11」発表はっぴょう
  18. ^ Googleが新型しんがた「Chromebook」を発表はっぴょう、Samsungせいで249ドル
  19. ^ 【PC Watch】 Samsung、はつのARM Cortex-A15プロセッサ「Exynos 5250」
  20. ^ 日本にっぽんTI、モバイルの概念がいねん一変いっぺんさせる高性能こうせいのう高機能こうきのうのOMAP™5プラットフォームを発表はっぴょう
  21. ^ 後藤ごとうひろししげるのWeekly海外かいがいニュース】 ARMが次世代じせだいCPU「Atlas」と「Apollo」の計画けいかく発表はっぴょう
  22. ^ AMD’s K12 ARM CPU Now In 2017
  23. ^ 苦難くなんの2013ねんえ、かがやかしい2014ねんけるAMD (おおきな期待きたいせられているサーバーけ64ビットARMプロセッサ)
  24. ^ ARM Sets New Standard for the Premium Mobile Experience - ARM
  25. ^ Qualcomm Introduces Next Generation Snapdragon 600 and 400 Tier Processors for High Performance, High-Volume Smartphones with Advanced LTE | Qualcomm
  26. ^ "ARM Cortex-M1", ARM product website. Accessed April 11, 2007.
  27. ^ "ARM Extends Cortex Family with First Processor Optimized for FPGA", ARM press release, March 19 2007. Accessed April 11, 2007.
  28. ^ ARM Cortex-M1
  29. ^ Actel: 製品せいひんとサービス: プロセッサ: ARM: Cortex-M1
  30. ^ AnandTech | Cortex-M7 Launches: Embedded, IoT and Wearables
  31. ^ Cortex-M7 Overview - ARM
  32. ^ Cortex-M23 Overview - ARM
  33. ^ Cortex-M33 Overview - ARM
  34. ^ ARMv8-A Synchronization primitives”. p. 6. 2024ねん1がつ3にち閲覧えつらん
  35. ^ Ltd, Arm. “Cortex-A78C”. Arm | The Architecture for the Digital World. 2023ねん1がつ14にち閲覧えつらん
  36. ^ Processor mode”. ARMホールディングス. March 26, 2013閲覧えつらん
  37. ^ KVM/ARM”. April 3, 2013閲覧えつらん
  38. ^ 2.14. The program status registers - Cortex-A8 Technical Reference Manual
  39. ^ DSP & SIMD - ARM

関連かんれん項目こうもく

[編集へんしゅう]

外部がいぶリンク

[編集へんしゅう]