「ARMプロセッサ入門」と「AMBAならびに周辺技術入門」をtsudaってみた

前回のARM入門は、恐竜先生がまとめてくれている。
http://togetter.com/li/364911
補足を入れながらまとめ。

  • 待ち時間に、ARMプロセッサクイズなるものがプロジェクタで自動表示されている。
  • 今日のお題は「ARMプロセッサ入門」と「AMBAならびに周辺技術入門」。
  • 前回は男性ばかりだったのに、今日は一番前に女性がいるなぁ。びっくりだわ。(2人いました)
  • クイズ正解者3名にはワイヤレスマイスがプレゼントされるらしい。
  • 「ARMプロセッサ技術セミナー」イントロ(先週のセミナのダイジェスト的なもの)、ARMアーキテクチャ、ARMプロセッサ(9,11,A,R,M)。
  • 3個あるそう。RT @rioriost: 複数くれるのん? RT @kinneko: #armjp クイズ正解者3名にはワイヤレスマイスがプレゼントされるらしい。
  • イントロダクション。2200万個/日出荷されている。累計300億個。2011年だけで80億個。過去5年のCAGRは30%。比類なきパートナー群。850のプロセッサライセンス。年間100増加。数百万の開発者。数十億の利用者。
  • 前回にくらべてだいぶゆっくりだな。話し手によるのかな。
  • ARMプロセッサの進化。図。大きな市場を取ったのは、94年のARM7TDMI(v4)から。700以上のライセンシ。250億個以上の出荷。携帯電話。さまざまな用途に展開していくとともに、要求が変わってきた。アプリケーションプロセッサ、リアルタイム、マイコン
  • 単体のマイコン向けは歴史的には後から。しかし、内臓として組み込まれて使われていた。
  • v4,5,6,7はアーキテクチャを表す。アーキテクチャのバージョンとプロセッサの関係は?
  • アーキテクチャとマイクロアーキテクチャアーキテクチャプログラマから見えるプロセッサの挙動。命令セット、レジスタ、例外動作。アーキテクチャ・リファレンス・マニュアルに記載。
  • マイクロアーキテクチャ。パイプライン段数、実行命令サイクル数などを決めた仕様。1176JZ-Sと1136J-Sはほぼ同一。A9とA5は同一アーキテクチャ、しかし異なるマイクロアーキテクチャ。書くプロセッサのテクニカル・リファレンス・マニュアルに記載。
  • 他社のプロセッサでは、アーキテクチャはARMだが、マイクロアーキテクチャはARMが作ったものではないことがある。QualcommやMarvelなど。
  • プログラムを書く人は、アーキテクチャがわかればいいが、最適化などはプロセッサのマイクロアーキテクチャを知る必要がある。デバイスにはセットでの理解が必要。
  • ARMの情報はどこから入手できるのか。http://Infocenter.arm.com。前述のARM,TRMの他開発ガイド、技術解説、アプリケーションノート、ツールのマニュアルなどがある。
  • ARMアーキテクチャの進化。過去との互換性を維持しながら新たな技術を導入。ARM9/10はV5+VFPv2+Jazelle。ARM11は、V6(9の機能)+SIMD,TrustZone,Thumb-2。V7A&RはNEON,VFPv3+Thumb-EE。
  • V7MはV5にThumb-2だけ追加。
  • マイコン向けには用途があわないので、使わない機能を削ってシュリンクした。シンプルなアーキテクチャになっている。
  • ARMアーキテクチャ v4-7の特徴。ロード/ストア・アーキテクチャ。いわゆるRISC。単一の4GBのリニアな空間。IOもメモリ空間にマッピング。LPAEで物理アドレスのみ1TBに拡張。R0-15の32bit整数レジスタ。統一されたアーキテクチャ
  • 命令セット。大きく2種類。ARM命令セット。古くからある。32bit固定長。Mは非採用だがそれ以外は使える。Thumb命令セット。16bit長。Thumb-2は32bit。混在命令可能。基本的なものは16で。図。
  • ほとんどの命令はオペランドは2-3個。場合によって4のこともある。積和算など。演算命令の形式。Operation{cond}[s} Rd, Rn, Operand2。例 ADD Rd, Rn, Op2。それぞれの意味。cond:条件コード。s:演算結果に応じてフラグ
  • レジスタセット。図。r15はプログラムカウンタ。0-12が自由に使える。
  • Operand2とシフタ。Operand1は常にレジスタ。2はより柔軟。レジスタとシフト量。もしくは即値定数。シフタを利用した例。即値を利用した例。2命令で行なう動作を1命令で記述できる。他のプロセッサよりコード効率がいい。
  • その他の特徴。条件実行。条件フラッグの値によって実行するかを制御。複数転送命令。遅延分岐なし。
  • Thumb命令セット。16bit固定長。BLは例外。プログラムメモリを減らすためにコード密度を向上。頻出する命令を16bitでエンコード。デコード時に32bitに。プロシージャ単位でモードを切り替え。7TDMI以降のプロセッサで動作。TはThumbの意味。
  • Thumb-2拡張。ARMとThumbは切り替えて使っていた。性能でARM命令。効率でThumb。プロファイルの手間があった。使いにくい。
  • 32bitの拡張命令。ARM1156T2-Sから導入。A,R,M3,M4で使える。現在はこれだけを使えばいい。
  • VFP。9,11ではコプロセッサとして実装。VFP9/11をコプロセッサインターフェイスに接続。コプロセッサ10と11の命令空間を使用。レジスタはS0-31/D0-15のデュアルビュー。Cortexでは実行ユニットの一部として実装。通常のパイプラインの中で実行。
  • コプロセッサ当時は一度デコードして外に出していた。複雑だった。FPU以外にはコプロセッサは使わなかった。1サイクル遅れるので性能的にも優位性はなかった。
  • Advanced SIMD命令(NEON)。SIMD型データ処理アーキテクチャ。64bitもしくは128bit単位で演算。VFPレジスタを使用。Packed SIMD処理を実行。3オペランドIntelは2オペランド。データ壊れないのでレジスタの利用効率が高い。
  • 例jすたを同一データ型の複数要素のベクタとして扱う。1つの命令により、同一の演算をすべてのレーンに対して実行。(packedの解説)
  • VFPとNEONレジスタ。図。レジスタを共有。2つ組み合わせると倍精度。NEONつくとDレジスタが倍に。Qも。
  • ここまでがv7の主だった機能の歴史。
  • 今後。v8アーキテクチャ。Aプロファイルのみの予定。今後変わるかもしれない。実行モードが2つある。32bitモード。従来通り互換。AArch64。64bit。NEONも整数演算もかわる。まったく新しいアーキテクチャ
  • 命令のオーバービューなどはinfocenterに掲載されている。今日は64bitアーキテクチャはふれない。従来の資産は無駄にならない。バイナリがそのまま動く。
  • アーキテクチャの紹介終わり。
  • プロセッサの紹介。
  • アーキテクチャとプロセッサ。各アーキテクチャと実際のプロセッサ名の図。v6までは一本道。v7で別れた。A,R,M(v7-M(M3),v7E-M(M4))。v6-M(M0)は機能を削って後で出来た。
  • 7TDMI0Sは、ARM7をベースとして、T:thumbアーキテクチャを拡張。ARM命令セットはすべて32bit。Dデバッグ拡張。Mハードウェア乗算。IはICE...
  • Cortex以前の命令規則。MMU,MPUなどで決まっている。機能の差は用途の違いになる。型番から用途の想像が困難に。Cortexでは目的別にA,R,Mに分けた。
  • ARM9。今でもたくさん使われている。2000年前後から。量的には一番使われている。297ライセンス。926が特に多い。66億ユニット出荷済み。現在は、968,946,926の三種類のみライセンス。
  • ARM9 DSP拡張。1サイクル32x16乗算器。新しい32x16と16x16乗算命令。効率的な飽和演算。リーディングゼロをカウントするための...
  • ARM11。つい2年前まではワイヤレスの標準。50種類以上の電話で使われていた。
  • ARM11ファミリ。TSMC 65Gで800MHzから1G。90Gで600M。32bitの整数レジスタを分割して使用するSIMD命令。高速割り込みモード。密結合ベクタFPU。多くのバリエーションがあった。当時としてはハイエンド高性能を狙ったライン。
  • v6アーキテクチャ。以前と100%互換。SIMDで9とくらべて1.75倍の処理速度。改善されたメモリ管理。新しいページテーブル。物理アドレスも。システム性能を30%向上。エンディアン混在と非アラインデータのサポート。コードのポータビリティとメモリ使用量の改善など。
  • 1つのアーキテクチャで様々な用途に適用できるように。A,R,M。A:サードパーティアプリ用アプリケーションプロセッサ。MMU搭載。NEONをオプションで。HTML5用のライブラリ、オーディオ・ビデオコーデック、ゲープアプリ。1コアで性能が不足する場合はマルチコア。
  • 高性能。A5でも11以上。926/1176からのアップグレードに最適。アプリ用倍精度最適化FPU。キャッシュコントローラー内蔵。L1$のみはA5,9。+L2$はA7,8,15。高度な予測分岐。分岐先アドレスキャッシュBTAC。分岐履歴バッファGHB。
  • プロシージャコール用リターンアドレススタック Return stack。
  • A5の性能比較図。1176,926との比較。消費電力、面積。整数コアのみ、NEONなし、キャッシュ含まず。926とほとんどかわらない。最近のデザインは効率が高い。
  • Aプロセッサの機能比較。表。L2キャッシュ、仮想化、整数除算命令、SMP対応などが違う。現在はA8が多く、A9も。あとはASICなど特定用途向けに使われている。外部IFも微妙に違う。性能はもちろん違う。
  • 非対称マルチプロセッシング SMP。2004年のARM11 MPCoreで導入。1-4コア構成が可能。A5,9,15,R7で利用可能。L1キャッシュ間のコヒーレンシをハードウエアで解決。SCU。使う人は気にしない。OSが対応している。APIを使えばメリットが享受。
  • NEON。ユーザーエクスペリエンスの強化。最初は何に使うかと説明に困った。何年かたってミドルウェアやアプリができてきた。代表的な使い方の例。ビデオ・音声のコーデック。2Dレンダリングなど。
  • NEONを使うには。いまはOSSライブラリが充実している。OpenMAX, libav, libjpeg, Android Sikaなど。その他は、ベクトル化コンパイラあり。Cイントリンシック。アセンブラ。商用ベンダのライブラリも。
  • どのくらい効果があるか。DTS-HDオーディオ・コーデック。グラフ。3割くらいはやい。JPEGデコード。Android用。1/3くらいに実行サイクルを削減できる。
  • 3年くらい前まではNEONセミナをやっていたが、今は要求がないのでセミナをやっていない。要望があれば伝えてほしい。
  • 仮想化とは? CPUとシステムハードウエアをSWから抽象化。ハイパーバイザを使う。2ステージメモリ変換。ページテーブルを2回引く。
  • Cortex-R。リアルタイムシステム用。高速な割り込み応答。確定的なメモリとIOアクセス。高信頼性。ベースバンドモデム、ハードディスク、車のブレーキ制御など。ハードエラー対策はNDA必要。高性能。整数除算命令。L1キャッシュコントローラー内蔵。
  • R4,5,7。業界が頻繁にプロセッサを入れ替えない。枯れたものを長く使いたい。
  • Rプロセッサ機能比較表。一定時間での応答にTCM。MMUはない。MPUがある。レジスタとしてページテーブルを参照。Walkはない。AMBA3-AXI。
  • M。マイクロコントローラ用。M3をベースに展開。小さいM0と大きいM4。命令セットは包含関係がある。M0/0+は小さく電力が少ない。M3標準。信号処理性能が不足する場合はM4。
  • M3。高性能MCU。すべてCで記述できる。柔軟なコンフィグレーション。スリープモードによる省電力。2004年からの実績。
  • M0。最小面積、低消費電力。16bitマイコンの置き換えができる。エネルギー効率は8bitマイコン並。Thumbなのでコード密度が高い...
  • M4。DSP機能を統合。シングルサイクルMACSIMD、VFP。
  • M0+。M0と機能互換で、消費電力を低減。パイプラインを1段減らして2つに。デザインをやりなおした。M0にないIO専用の高速IF、MPU、トレース機能を追加。
  • Thumb-2命令セット一覧(Cortex-M)。図。
  • NVIC ベクタ割り込みコントローラ。最高240本のベクタ割り込み(M3)。より高速な割り込み応答。割り込みの種類ごとに優先度設定可能。ISRはCで直接記述。割り込みテーブルは、Cルーチンへのポインタだけを設定。割り込み応答高いハードウエアでの割り込み制御。
  • 最新技術。big.LITTLE。性能を上げるとクロックや回路規模が大きくなると消費電力が増えてしまう。性能最適化されたA15と電力効率に最適化されたA7をペアにして切り替えることで、高い性能を持ちながら電力効率を上げる。
  • ソフトウエア実行モデル。タスク移動とMP。2つのコアを別々に動かす(動いていないほうは停止)か、同時に動かすかの違い。詳細は時間的に省略。
  • プロセッサについては以上。質問は最後にまとめて。
  • 今日のはあまりおもしろくないな…
  • 後半のAMBAは力はいらないので、あまりtsudaらないかも。
  • 「AMBAおよびAMBA周辺技術CoreLink初心者講座」
  • AMBAって何?仕様一覧。
  • AMBAプロトコルは、SoCにおける機能ブロック接続と管理のためのオープン標準のオンチップインターコネクト仕様。
  • 誕生の背景。LSI内のバスは情報を伝達する経路。各社各様の仕様を持つとIP同士が直接通信できない。バスブリッジを間にかませるのは必ずしも解決しない。うまく接続できないことも。バスの仕様を共通化させる必要がある。
  • プロセッサを使ってもらうためには、周辺IPとの接続も重要。オープンでフリーなバス規格を定義し、すべてのARM IPをそれに準拠させる。
  • 2つのビジネス。規格の策定、公開、保守。準拠IPの展開。バスIPを検証したりトレーニングするパートナーもARMにはいる。ARMエコシステムの一環。
  • 採用のメリット。規格はARMが管理。無償で公開。ARM製IPは準拠。ARM以外にも準拠IPが多数。LSI設計、検証支援ツールが豊富。
  • 設計資産の最良。生産性の向上。
  • AMBAとプロセッサの切っても切れない関係。組み込みプロセッサの高機能化。性能はDMIPS換算で10年で30倍。バス仕様はそのままでいいのか? 926,A8,A9のレイアウト図。
  • プロセッサとバス帯域。製造プロセスも進化。250nmから28nに。外部ベンダでの設計支援ツールの進化、エンジニアの生産性のアップ。バス仕様も進化すべき。
  • プロセッサからバスへの要求。高バンド幅、低レイテンシ。柔軟な階層化。キャッシュ、非キャッシュの区別。アンアラインドや排他処理。セキュリティ要求。
  • Global Asynchronous, Local Synchronous GALS(IP間は非同期で不要なものは電源オフ)。メモリ同期。などなど。
  • じゃぁ、AMBAも進化させよう。1-4世代。AMBA2で時代はハードIPからソフトIPへ。3では信号ベースからチャネルベースへ。4では異種マルチコア間のコヒーレンシ最適化。95,99,03,11年に更新。
  • プロセッサとAMBAの相関図。AHB/AHB-Lite, AXI3, ACE。
  • MaliグラフィックスとAMBAの相関図。2,3,400はAXI。6xxはACE Lite。
  • 周辺IPとAMBAの相関図。ネットワークインターコネクト、SDRAM、L2キャッシュ、DMA、割り込みコントローラー。
  • AMBAの仕様一覧。1は使われている場面が少ない。2からの歴史。
  • AMBA2とAHB/APB。ソフトIPに対応したバス。論理合成にやさしい。単相クロック同期設計、単一方向信号のみ利用。Address/Dataフェイズの分離。プロセッサバスと周辺バスの二階建て。AHBとAPB。
  • ABPはAHBを簡素化して、シンプルな構成に。用途に応じて仕様を分ける。
  • AHBバスサイクル例図。対応しているプロセッサ図。MはAHB-Lite。
  • 2から3へ。2004-09年。プロセッサへの要求トレンド。いろいろ。拡張要求。AXI, ATBを新規導入。AHB-Lite, APB3。
  • AMBA3とAXI。インターコネクト時代の新しいバス仕様。信号からチャネルへ。プロセッサ高速化への追随。プログラム要求の反映。低消費電力化への工夫。
  • AXIを構成する5つのチャネル。RWで非対称。
  • チャネル間ハンドシェイクの概念。READY側の周波数は問わない。
  • トランザクションの構成とその順序則。54bitからなるパケット。同じアドレスでも異なるIDを振れる。
  • 異なるマスターからのトランザクションは順序則を持たない。同じマスターの異なるIDからなるトランザクションは順序則を持たない。同じIDを持つRWトランザクション間は順序則を持たない。異なるIDを持つWトランザクションデータ間でインターリーブ(入れ替え)が可能(4で廃止
  • 最後の、AXI4での廃止理由はバスへの負担が大きいから。
  • AXI4対応プロセッサの図。
  • AMBA3がもたらしたシステム設計の変化。システム構成がますます複雑に。マスター数の増大、トランザクションの増大、バスシステムの階層化、DVFSの高度化。どんどんバスにぶらさげるようになった。負荷が集中するのはインターコネクト・モジュールとDDRメモリコントローラ。
  • APB3。待ち(READY)を入れることができるようになりました。周辺のレガシなものをタイミングを気にせずに組み込めるようになった。
  • ATB:トレースデータ用のバス。CPUの実行履歴をリアルタイムで引き出す。CoreSightアーキテクチャ:ARMプロセッサ・デバッグの規格。デバッグ・トレースを可能にするIP。
  • AMBA4とACE。プロセッサへの要求のトレンド2010-。クロックアップ。L2キャッシュ。QoC。SMPクラスタのデータ同期。HW仮想化支援。メモリ空間を4Gじゃ不足。ECC/Parity保護も。
  • AMBA3の拡張要求。いろいろ。AMBA4とACE(AXI Coherency Extensions)の誕生。
  • 3->4。ACE/ACE-Lite新規導入。AXI4/4-Lite。AXI4-Stream新規。ATB1.1。APB4。
  • AXI3からACEへ。キャッシュステイトモデル表現の追加。ドメイン表記の追加3bit。バリヤ表記の追加2bit。DVM(Distributed Virtual Memory)操作の追加。3つのチャネルの追加。
  • ACEを構成する5+3チャネル。図。
  • AXI4での変更。-Liteでの変更。いろいろ。
  • ACE対応プロセッサ。図。
  • AMBA4がもたらすであろうシステム設計の変化。さらに複雑化するシステム:トラフィックとメモリ帯域の効率化、複数OS/アプリが1つのSoCに混在、メニーコア/big.LITTLEシステムの登場。
  • 組み込みSoCの能力がますます向上:処理能力の向上と新たな分野(Server,Network,HDP,BTS…)、組み込みComputationの実現(Open-CL,-CV,超多並列演算)、新しい仮想化手法の実現(Open-GL,仮想現実)
  • おしまい。
  • バスの話は概要だけでいいな。
  • てーか、まだインターコネクトの話が続いているのだけど、記録する気力がない。
  • この三十数名の方、どのような分野の人たちなんだろう。謎。インターコネクトの理解が必要な人はあんまりいないような気がするんだけど。リアルタイム系なのかな。