Arm® Cortex®-A53MP ソフトウェア開発コース (オンライン)
- 日程:※オンラインにて開催致します
- UNIT1 : 2024年5月15日(水) (Arm®v8-Aアーキテクチャの概要とキャッシュ/メモリアクセス/コヒーレンシ)
- UNIT2 : 2024年5月16日(木) (バリアと同期化およびArm®v8-A拡張機能とソフトウェア開発手法)
- 時間:9:00〜18:00 ※終了時間は進行状況により若干変動する可能性があります。
コースの概要
※各UNIT単体での受講が可能です。
このコースはArm®v8-Aをベースとしたプラットフォームでソフトウェアを開発するエンジニア向けに設計されています。
コースは2つのユニットから構成されており、習熟度や習得したい内容にあわせて、自由に組み合わせて御受講頂けます。
UNIT1 Arm®v8-Aアーキテクチャの概要とキャッシュ/メモリアクセス/コヒーレンシ
Arm®v8-Aアーキテクチャの導入と例外モデル、Arm®v8-Aメモリモデル、キャッシュ、キャッシュコヒーレンシについて学習します。
UNIT2 バリアと同期化およびArm®v8-A拡張機能とソフトウェア開発手法
同期化、バリア、Arm® Cortex®-A53/A57開発に必要なブート処理や電源管理、Arm®v8の仮想化やセキュリティ、GIC、デバッグについて学習します。
受講対象者
- Arm® Cortex®-A53等、Arm®v8-Aアーキテクチャベースのプロセッサコア向けのアプリケーション・ソフトを開発時に必要な知識を習得したいソフトウェアエンジニア
履修条件
- マイコンについて基礎的な理解があること(メモリマップ、レジスタ、割り込み、内蔵メモリの概念等)
- アセンブラやCプログラミングについて知識があること(C言語、アセンブリ言語でプログラムの作成経験がある等)※必須ではありません
- 組込みシステムのソフトウェアに関する基礎的な知識があること
- Arm®v7-Aアーキテクチャに関する知識があること
オンライン開催にあたり
- Web会議サービス(Zoom)で開催します。
- ブラウザでのご参加は「Google Chrome」のみ対応しています。
※Google Chromeの使用ができない場合は、Zoomアプリのインストールが必要になります。
※Zoomのアカウントの取得は必須ではございません。
お申し込み方法
受付終了:2024年5月8日(水)18:00まで
受講料:UNIT1: 60,000円(受講者1名様/税抜き) UNIT2: 60,000円(受講者1名様/税抜き)
- 各UNIT単体での受講が可能です。
下記コース名をクリックしてお申し込みフォームからお申込みください。
※同業者様等のお申し込みについてはお断りする場合もございます。
「Arm® Cortex®-A53MPソフトウェア開発コース」
お支払方法
請求書はお申し込みいただいた講座の開催が確定した後、講座の開催月にお申込書に記載されたお申込者様宛にお送りいたします。
請求書に記載される期日(請求書の発行月末締め翌月末振込み)に受講料を弊社指定銀行へお振込ください。
(振込手数料は振込者がご負担下さい。)
支払い処理について上記の方法以外をご希望の場合、 Arm®トレーニング事務局までご連絡下さい。ご相談に応じます。
お問い合わせ先
Arm®トレーニング事務局
TEL : 03-6756-9405
E-mail : arm_training@dts-insight.co.jp
コース内容
UNIT1 Arm®v8-Aアーキテクチャの概要とキャッシュ/メモリアクセス
1 Arm®v8-Aの概要
- 1.1 Arm® アーキテクチャバージョン
Arm®アーキテクチャの開発/Arm®v8-Aの新機能とは? - 1.2 特権レベル
AArch64特権モデル/AArch32特権モデル/AArch32とAArch64間の遷移 - 1.3 AArch64レジスタ
レジスタバンク/その他のレジスタ/プロセッサの状態/プロシージャコール標準/AArch64とAArch32間のレジスタマッピング/システム制御/いくつかの重要なシステムレジスタ - 1.4 A64命令セット
A64の概要 - 1.5 AArch64 例外モデル
AArch64の例外/例外の受付 - 1.6 AArch64 メモリモデル
メモリのタイプ/アラインメント/仮想アドレススペース/複数の仮想アドレススペース/物理アドレススペース/ MPCore設定 - 1.7 付録
Arm®v8用語参考情報/REServedビットおよびArm®v8アーキテクチャ/リセット時のシステムレジスタの内容/ Arm®v8.1-A/Arm®v8.2-A/Arm®v8-Aソフトウェアサポート
2 Arm®v8-A AArch64 例外モデル
- 2.1 AArch64例外モデル
例外レベル/AArch64例外/例外の受付/例外のルーティング/PSTATEとSPSR/実行状態の変更/例外のリターンアドレス/例外スタック/AArch32レジスタマッピング/AArch64ベクタテーブル - 2.2 割込み
割込みのハンドリング/汎用割込みコントローラ(GIC)/単純な割込みの例/単純な例外ハンドラの記述例/ネストされた例外の例/ネストされた例外ハンドラの記述例/例外の戻りアドレス/例外のスタック/AArch32レジスタマッピング/AArch64ベクタテーブル - 2.3 同期例外
同期例外/システムコール/同期例外のハンドリング/例外シンドロームレジスタ - 2.4 SError例外
SError例外 - 2.5 EL2およびEL3の例外
EL2/EL3へのシステムコール/EL2およびEL3への例外のルーティング/ EL3 への例外ルーティング例/ EL3 を使用したシステム例 – 非セキュア/ EL3 を使用したシステム例 – セキュア
3 Arm®v8-Aメモリ管理
- 3.1 メモリマネジメント理論
メモリ管理が必要な理由/仮想アドレッシングとは?/メモリ管理ユニット(MMU)とは?/物理アドレスはどう構成されるか/複数レベルの変換テーブル - 3.2 EL1/0でのステージ1変換
Arm® v8-A変換テーブル/AArch64変換テーブル/AArch64テーブル記述フォーマット/AArch64 4KB 変換単位のテーブル/ AArch64 16KB 変換単位のテーブル/ AArch64 64KB 変換単位のテーブル/アプリケーション/カーネル空間用に独立したテーブル/変換制御レジスタ/レベル1ルックアップの設定/変換テーブルのキャッシュ/連続するブロックエントリ - 3.3 EL2/EL3での変換
変換テーブルの概要/ステージ2変換(IPA -> PA)/ EL2/3 におけるステージ1の変換/ステージ 2の変換(IPA -> PA)/EL2/3 におけるステージ1の変換/セキュアワールドの変換テーブル - 3.4 TLBのメンテナンス
変換テーブル変更の例/AArch64命令
4 Arm®v8-Aメモリモデル
- 4.1 Arm®v8-Aメモリモデル
メモリモデル/属性の指定方法/階層の属性 - 4.2 タイプ
メモリタイプ/メモリタイプ(ノーマル)/メモリタイプ(デバイス)/デバイスアクセスの順序/言語認識/タイプの指定 - 4.3 属性
キャッシュ可能/共有可能/アクセスパーミッション/実行可能/アクセスフラグ/グローバル/ノン・グローバル 変換/ASID/予約ビット/NS属性 - 4.4 アラインメントとエンディアン
アラインメント/AArch64のエンディアン - 4.5 タグ付きのポインタ
ポインタのタグ化/Linuxのアクセスフラグの例/ショート記述子フォーマットのASID
5 Arm®v8-A キャッシュと分岐予測
- 5.1 一般的なキャッシュの情報
キャッシュ/データはどのようにキャッシュへ保存される?/キャッシュのアクセス方法は?/32KB L1 Armデータキャッシュの例/Level1およびLevel2キャッシュの相互作用/分岐予測 - 5.2 キャッシュの属性
キャッシュのポリシー/ライトバックとライトスルー/内部と外部/投機とプリロード - 5.3 キャッシュのメンテナンス操作
キャッシュのメンテナンス/PoUとPoCおよびキャッシュメンテナンス/PoUとPoCを比較/AArch64命令/メンテナンスブロードキャスト/メンテナンスブロードキャスト-AArch64 - 5.4 キャッシュ調査
キャッシュ検出コード/非統合キャッシュ/付録:AArch32ニーモニック/付録:メンテナンスブロードキャスト-AArch32/付録:キャッシュ無効時の動作/付録:命令キャッシュのポリシー
6 Arm®v8-Aキャッシュコヒーレンシ
- 6.1 コヒーレンシの概要
キャッシュコヒーレンシとは?/ソフトウェアとハードウェアのコヒーレンシ/Arm® コヒーレンシサポートの進化/Arm® Cortex® -Aファミリのコヒーレンシ/ACEシステムレベルコヒーレンシ/GPUとDMAのシステムコヒーレンシ/変換テーブル内の共有属性/ソフトウェアと共有属性/big.LITTLE実装の例/ - 6.2 コヒーレンシの詳細-マルチコアプロセッサ
コヒーレンシ:実装の詳細/MPCoreのコヒーレンシ管理/コヒーレンシロジック/キャッシュコヒーレンシロジックの例 - 6.3 コヒーレンシの詳細-マルチプロセッサシステム
マルチクラスタコヒーレンシ/コヒーレンシの例:読み出し/コヒーレンシの例:書き込み/バリア/バリアとACE
DMB vs DSB/DMB/DSB/相違点の観察/DMBおよびDSB修飾子/バリア修飾子/メイルボックスの例/バリアの影響/メモリマップドペリフェラル/一方通行のバリア
UNIT2 バリアと同期化およびArmv8-A拡張機能とソフトウェア開発手法
1 Arm®v8-Aのバリア
- 1.1 Arm®v8-Aのバリア
メモリモデル/なぜアクセス順序が重要なのか?/バリア - 1.2 データバリア
DMB vs DSB/DMB/DSB/異なるオブザーバー/DMBおよびDSB修飾子/バリア修飾子/メールボックスの例/バリアをまたぐ投機/メモリマップされたペリフェラル/一方通行のバリア - 1.3 命令バリア
ISB/ISBの例/変換テーブル変更の例/自己修正コード/付録:コンパイラバリア、割り込みを伴うMailbox処理
2 Arm®v8-A同期化
- 2.1 Arm®v8-A同期化
アトミック操作の競合/クリティカルセクション/シンプルなロックの実装/同期化命令/どのように動作するのか?/AArch64 lock()の例/AArch64 unlock()の例/マルチスレッドのロックの例 - 2.2 ローカルおよびグローバルの排他モニタ
排他モニタはどこにある?/コンテキストスイッチ/排他モニタの単位/コヒーレントロックの例/ WFE/プログラムはスマートでなければならない/付録:Arm Linuxの例/AArch64 Linuxの例/AArch32 Linuxの例
3 Arm® Cortex-A53 ソフトウェアガイド
- 3.1
概要/構成オプション/パイプライン/分岐予測リソース/キャッシュ概要/データキャッシュコヒーレンシ/メモリ管理/その他のマイクロアーキテクチャ機能/割り込みおよびバスインタフェース/デバッグとタイマ/電力管理
4 Arm®Cortex®-A53/A57のブート処理
- 4.1 AArch64でのCortex-A5xプロセッサのブート
ブートとプロセッサ状態/AArch64 ブートシーケンスマッピング/AArch32 ブートシーケンスマッピング/AArch64でリセットするとどうなりますか?/より低い例外レベルの入力 - 4.2 プロセッサの設定
リセット後のプロセッサ設定/ベクタテーブルとスタック/浮動小数点と高度なSIMD/キャッシュとMMU/MPのブート処理/ CPUをどのように識別するか/より低い例外レベルへの移行
5 Arm®Cortex®-Aプロセッサの電力管理
- 5.1 電力概要
消費電力/電力寄与度の例/電力削減テクニック/パワードメインの例/追加の電力モード・インターコネクト/エネルギーコスト - 5.2 プロセッサ電力モード
Arm®プロセッサの電力モード/プロセッサのスタンバイモード/スタンバイの使用ケースと考慮事項/WFEを使用したスタンバイへの移行/プロセッサパワーダウン/バリアとパワーダウンモード/各電力モードへの移行/復帰不能点(Point of no return) - 5.3 マルチプロセッサとシステム電力モード
マルチプロセッサの電力モード/ L2キャッシュの電力に関する考慮点/パワーダウンモードの例/パワーダウンのためのL2キャッシュ準備/SoCとシステムのパワーダウン - 5.4 Arm®Cortex®-A5/-A9 の電力モード
Arm®Cortex®--A9/-A5 考慮事項/Arm®Cortex®-A9 ドーマントモードの例/PL310 L2 キャッシュ/ NEON 電力管理オプション
6 Arm®v8 仮想化
- 6.1 仮想化とは?
仮想化とは?/なぜ仮想化が必要か? – サーバー -自動化 -BYOD/タイプ1および2ハイパーバイザ - 6.2 Arm®仮想化サポート
Arm®v8-Aの仮想化/命令とレジスタトラップ - 6.3 メモリ管理
2段階の変換/ステージ2 メモリ管理/変換の形態/ステージ2 変換のオーバーヘッド - 6.4 例外の取り扱い
デバイス割り込みのルート/例外の仮想化/EL2 ハイパーバイザへの割り込みルート/仮想例外/仮想割り込み(GICv2 & GICv3)/ 仮想割り込み信号 (GIC) (内部)
7 Arm®v8-A セキュア環境
- 我々はなぜセキュアな環境を必要としますか?/どんな種類の攻撃がありますか?
- 7.1 ソフトウェアスタック
ソフトウェアスタック/どのようにワールド間で通信するか/セキュアモニタ/トラステッドブート/マルチコアトポロジ/セキュアワールドのスケジューリング - 7.2 メモリシステム
物理アドレス空間/キャッシュ&TLB/システム例 - 7.3 デバッグ
デバッグ構成/デバッグ認証 - 7.4 TBSA
TBSAとは?/ TBBRの機能