第 1 章 ヒューリスティック アーム アーキテクチャの解釈
第 2 章 CPU マイクロアーキテクチャ
第 3 章 システムのマイクロアーキテクチャ
第 4 章 バスのマイクロアーキテクチャ
第 5 章 マイクロアーキテクチャの監視
第 6 章 セキュリティのマイクロアーキテクチャ
第 7 章 仮想化のマイクロアーキテクチャ
第 8 章 Armv9-A アーキテクチャ
第 9 章 Armv8-M アーキテクチャ
第 10 章 Armv8-R アーキテクチャ
第11章 Cortex-A715の解釈
第12章 Cortex-X3の解釈
第十三章 ネオバースの解釈
第14章 Cortex-M85の解釈
第15章 Cortex-R82の解釈
目次
2.3.2 セカンド ジュニア ブラザー Cortex-R82
2.4.2 ニューラル ネットワーク プロセッサ ユニット NPU
序文
- 注意: 全文は 10,000 語で、推定読了時間は 15 分です。
- 読者: Arm アーキテクチャに興味のある友人。
- 要約: この記事では、主に Arm アーキテクチャの基礎となるロジックについて説明し、プロセッサ コア アーキテクチャに基づいて、システム アーキテクチャをコアとして、A シリーズと M シリーズの Arm アーキテクチャのトップ レベルの設計を紹介します。アーキテクチャは典型的なものとして、主要なシステム コンポーネントは設計されています わかりやすい説明; この記事で言及されている Arm アーキテクチャには、GPU および NPU アーキテクチャは含まれません。
図 1 Arm の知識構造
- キーワード: Arm アーキテクチャ、マイクロアーキテクチャ、Cortex-A、Cortex-R、Cortex-M、Armv7、Armv8、Armv9、ISA、命令セット、AMBA バス、デバッグ、Trustzone、仮想化、EL-2、S-EL2、EL-1 、S-EL1、オペレーティングシステム、RISC-V。
- 関連する推奨事項: 構造、アーキテクチャ、システムなどの概念に興味がある場合は、アーキテクチャとシステムを読むことをお勧めします 。
- 関連のおすすめ: アーム社に興味がある方は、アーム社を理解するための記事を読むことをお勧めします。
1. アーキテクチャの概要
1.1 フォン・ノイマン・アーキテクチャ
- プリンストン構造とも呼ばれるフォンノイマン構造は、プログラム命令メモリとデータメモリを組み合わせたメモリ構造です。The program instruction storage address and the data storage address point to the different physical location of the same memory, so the program instruction and data has a same width. たとえば、Intel の 8086 中央処理装置のプログラム命令とデータは 16 ビット幅です。
- 数学者のフォン・ノイマンは、コンピューター製造の 3 つの基本原則、つまり、バイナリ ロジックの使用、プログラムの格納と実行、を提案し、コンピューターは 5 つの部分 (計算機、コントローラー、メモリ、入力デバイス、出力デバイス) で構成されているという理論が知られています。ノイマン建築として。な
1.2 ハーバード アーキテクチャ
- ハーバード構造は並列アーキテクチャであり、その主な特徴は、プログラムとデータが異なる記憶空間に格納されていること、つまり、プログラムメモリとデータメモリが2つの独立したメモリであり、各メモリが独立してアドレス指定され、独立してアクセスされることです。はじめに 2 つのメモリに対応するのは、システムの 4 つのバスです。データ バスと、プログラムとデータのアドレス バスです。
1.3 アームのアーキテクチャ
- Arm アーキテクチャとは、中央処理装置 (CPU) マイクロアーキテクチャ、システム マイクロアーキテクチャ、バス マイクロアーキテクチャ、モニタリング マイクロアーキテクチャ、セキュリティ マイクロアーキテクチャ、および仮想化マイクロアーキテクチャを含む、Arm プロセッサのアーキテクチャを指します。
- CPU マイクロアーキテクチャは、 A32/T32、A64、NEON、VFP などを含む命令セット アーキテクチャ ISAの実装です。
- システム アーキテクチャ セットには、割り込みコントローラ GIC / システム メモリ マネージャ SMMU / 電源管理 PSCA / APCI などが含まれます。
- バス マイクロアーキテクチャは、AHB、APB、AXI、CHI などを含むAMBA マイクロアーキテクチャを指します。
- マイクロアーキテクチャの監視には、デバッグのデバッグとトレースの追跡が含まれます。
- セキュリティ マイクロアーキテクチャには、Trustzone、Realm、Crypto Cell、Crypto Island などが含まれます。
- 仮想化マイクロアーキテクチャには、VMSA、LPAE、EL-2、S-EL2 などがあります。
CPU マイクロアーキテクチャ | 命令セット アーキテクチャを実装する中央計算ユニットアーキテクチャ、およびA、R、および M シリーズ アーキテクチャは、 CPU アーキテクチャを説明します。 |
システムのマイクロアーキテクチャ | プロセッサのさまざまなコンポーネントが適切に機能するために存在するシステム コンポーネント アーキテクチャ |
バスのマイクロアーキテクチャ | さまざまなアーキテクチャ サブシステムを接続するブリッジ アーキテクチャ |
マイクロアーキテクチャの監視 | システムの各アーキテクチャ コンポーネントのデバッグと追跡 |
セキュリティ マイクロアーキテクチャ | システムセキュリティの実装に使用されるアーキテクチャのコレクション |
仮想化マイクロアーキテクチャ | ハードウェア リソースを仮想化するためのアーキテクチャのコレクション |
図 2 Arm プロセッサの最上位アーキテクチャ
2. アーキテクチャ マップ
2.1 トロイカ
- Arm アーキテクチャは、さまざまなアプリケーション シナリオに応じて、Cortex-A、Cortex-M、および Cortex-R の 3 つのアーキテクチャ ファミリに分類されます。
- Arm A-Profile アーキテクチャには、主にモバイル端末や PC 端末向けの Cortex-A シリーズ プロセッサ、クラウド コンピューティングや機械学習向けの高性能 Neoverse プロセッサ、およびお客様と協力して開発された高性能 Cortex-X シリーズ プロセッサが含まれます。シリーズは独立したシリーズを形成することができます。
- Arm M-Profile アーキテクチャには、主に Armv6 M0、Armv7 Cortex-M3、Cortex-M4、Armv8 Cortex-M23、Cortex-M33、Cortex-M35、Cortex-M55、Cortex-M85 が含まれ、一般的な MCU、IoT ネットワーク分野に使用されます。
- Arm R-Profile アーキテクチャには、主にリアルタイム制御の分野で使用される Cortex-R4、Cortex-R5、Cortex-R7、Armv7 の Cortex-R8、Armv8 の Cortex-R52、および Cortex-R82 が含まれます。
各アーキテクチャ ファミリの進化は、独立しており、相互に関連しています。現在、AシリーズはArmv9版、MシリーズはArmv8版、RシリーズはArmv8版に進化しており、各ファミリーの代表的なプロセッサのアーキテクチャは以下の通りです。
2.2 6世代の継承
- Arm アーキテクチャには、Armv4 から Armv9 までの 6 つのバージョンがあります。
- 現在、Armv7、Armv8、Armv9 の 3 つのバージョンが市場に出回っています。
- 各バージョンでは、Armv6 の Trustzone、Armv7 の仮想化、Armv8 のベクトル拡張 SVE、Armv9 のマトリックス拡張 SME など、さまざまな機能が導入/廃止されています。
図 3 アーキテクチャ バージョン
2.3 最新メンバー
2.3.1 ビッグブラザー Cortex-A710
Cortex-A710 は、Armv9-A アーキテクチャの大規模コア アーキテクチャである Cortex-A78 の拡張バージョンであり、基本的に前世代と同じです. 新しいマイクロ アーキテクチャは、より優れたパフォーマンスと低消費電力を実現できます。ベクトル計算のバージョン 拡張アーキテクチャ SVE2 サポート; 高度な SIMD&DSP の NEON アーキテクチャ サポート; VFPv3 ベクトル浮動小数点と互換性のある FPU 浮動小数点アーキテクチャ。
図 4 Cortex-A710 のアーキテクチャ図
2.3.2 セカンド ジュニア ブラザー Cortex-R82
Cortex-R82 は、CoreSgiht MDT、GIC、FPU、TCM、SCU、ACP、AXI-S、AXI-M、LLPP、LLRAM およびその他のマイクロアーキテクチャを含む Armv8 アーキテクチャを使用する R シリーズの最新プロセッサです。
図 5 Cortex-R82 アーキテクチャ図
2.3.3 妹 Cortex-M85
M85 は、MPU、Helium、PMU、CP、FPU、TCM、AHB、DSP、ETM、PACBTI、APH、およびその他のマイクロアーキテクチャを含む Armv8.1-M アーキテクチャです。
図 6 Cortex-M85 アーキテクチャ図
2.4 建築一族
この記事で説明する Arm アーキテクチャは、汎用プロセッサ アーキテクチャを指しており、特殊なプロセッサは含まれていません。汎用プロセッサに加えて、Arm にはグラフィックス プロセッサとニューラル ネットワーク プロセッサもあります。
2.4.1 グラフィック処理ユニット GPU
図 7 マリ GPU ロードマップ
GPU アーキテクチャは、従来の Mali アーキテクチャと最新の Immortalis アーキテクチャの 2 つのブランチに分かれています。
- マリには現在、ウトガルド、ミッドガルド、ビフロスト、ヴァルハルの 4 つの世代があります。
- Immortalis は、Immortalis-G715 に代表される新しく発売されたアーキテクチャです。
GPU アーキテクチャの詳細については、 Arm GPUを参照してください。
2.4.2 ニューラル ネットワーク プロセッサ ユニット NPU
図 8 Ethos NPU ファミリー
Ethos - NPUs は、U55、U65、N78、
NPU の詳細については、 Arm NPU を参照してください 。
3. 建築マジック
建築魔法とは、計算魔法、セキュリティ魔法、仮想化魔法などの建築上の特徴を指します。このパートでは、これらの神秘的な魔法を、派閥、時代、およびマイクロマジックの次元から紹介します。
3.1 派閥
3.1.1 Cortex-A マジック
アーマー 8.0 (Armv8.0-A)
- アドバンス SIMD
- aSIMD、拡張固定長、高度な単一命令、複数データ
- Armv8-A では、可変長 SVE と SVE2 とともに、SIMD が形成されます。
- SVE は主に HPC で使用され、V9 では標準です
- 暗号拡張 (CE)
- AES アクセラレーター: AEAD、AESE
- SHA加速器:SHA1、SHA256
- CRC
- ハードウェア CRC アクセラレーション
アーマー 8.1 (Armv8.1-A)
- アトミック メモリ アクセス命令 (AArch64)
- PostgreSQLは、排他的ロード命令 LDXR や排他的ストレージ命令 STXR など、大規模システム LSE 向けに設計されたストレージ アトミック アクセス拡張機能を既にサポートしています。
- 限定注文地域 (AArch64)
- 大規模システムの LSE、load-aquire、store-release 命令用に設計されたメモリ アクセス シーケンス
- アウトオブオーダー時代のDMB、DSB、ISBのアップグレード版です
- 仮想マシン識別子 (VMID) サイズの増加、および仮想化ホスト拡張機能 (AArch64)
- 仮想化におけるより大きな VM ID
- EL2 VHEテクノロジーでホストを直接実行
- Privileged Access Never (PAN) (AArch32 および AArch64)
- ユーザー空間メモリへのカーネル アクセスは PAN 経由で制限できます
アーマー 8.2 (Armv8.2-A)
- 52 ビット アドレス (AArch64) のサポート
- 52 ビットの大きな物理アドレスと大きな仮想アドレスのサポート (通常はサーバー アプリケーション用)
- PE が Translation Lookaside Buffer (TLB) エントリを共有する機能 (AArch32 および AArch64)
- マルチ PE 共有 TLB、つまり共有ページ テーブル エントリ
- FP16 データ処理命令 (AArch32 および AArch64)
- 単精度および倍精度ではなく、半精度がサポートされています
- 統計プロファイリング (AArch64)
- パイプライン内の組み込み命令統計ツール (パケット遅延、サンプリング命令の重要な情報 (アクセス/ヒット/ミス、分岐予測エラー、読み取り/書き込みインターロックかどうか)、どのレベルのストレージから発生したか)
- Reliability Availability Serviceability (RAS) サポートが必須になる (AArch32 および AArch64)
- 信頼性、可用性、保守性を確保するメカニズムを提供するために、TF-A は RAS フレームワークをサポートしています。
- セキュリティ拡張 CE
- SHA2-512、SHA3
- SM3、SM4
アーマー 8.3 (Armv8.3-A)
- ポインター認証 (AArch64)
- 命令ポインターとデータ ポインターで身元認証を実行する
- 現在、GCC -msign-return-address は LR 認証を返すことをサポートしています
- ネストされた仮想化 (AArch64)
- ゲストが EL1 でハイパーバイザーを実行できるようにする
- EL1 から EL2 へのアクセス機構を追加
- Advanced Single Instruction Multiple Data (SIMD) 複素数サポート (AArch32 および AArch64)
- aSIMD が複雑な演算をサポート
- JavaScript データ型変換サポートの改善 (AArch32 および AArch64)
- JavaScript データ型変換サポートの改善
- メモリー整合性モデル (AArch64) の変更
- RCsc に基づいて、より弱い RCpc サポートを追加します。
- 大規模なシステム可視キャッシュの ID メカニズムのサポート (AArch32 および AArch64)
- キャッシュ ID レジスタ拡張
アーマー 8.4 (Armv8.4-A)
- 安全な仮想化 (AArch64)
- S-EL2 サポートにより、安全な環境で安全な仮想マシンを実行できます
- ネストされた仮想化の機能強化 (AArch64)
- 小さな変換テーブルのサポート (AArch64)
- アライメント制限の緩和 (AArch32 および AArch64)
- メモリのパーティショニングとモニタリング (MPAM) (AArch32 および AArch64)
- 追加の暗号サポート (AArch32 および AArch64)
- 汎用カウンター スケーリング (AArch32 および AArch64)
- SHA を高速化する手順
アーマー 8.5/9.0 (Armv8.5-A/Armv9.0-A)
- メモリのタグ付け (AArch64)
- 分岐先の識別 (AArch64)
- 乱数ジェネレーター命令 (AArch64)
- 深い持続性のポイントまでクリーンなキャッシュ (AArch64)
- V5A
アーマー 8.6/9.1 (Armv8.6-A/Armv9.1-A)
- 一般行列乗算 (GEMM) 命令 (AArch64)
- 仮想化のためのきめ細かいトラップ (AArch64)
- 高精度汎用タイマー
- データ収集のヒント (AArch64)
- V6-A
アーマー 8.7/9.2 (Armv8.7-A/Armv9.2-A)
- PCIe ホットプラグ (AArch64) の拡張サポート
- アトミック 64 バイトの読み込みとアクセラレータへのストア (AArch64)
- Wait For Instruction (WFI) と Wait For Event (WFE) with timeout (AArch64)
- ブランチ レコードの記録 (Armv9.2 のみ)
アーマー 8.8/9.3 (Armv8.8-A/Armv9.3-A)
- ノンマスカブル割り込み (AArch64)
- memcpy() および memset() スタイルの操作を最適化する手順 (AArch64)
- PAC の機能強化 (AArch64)
- ヒント付き条件分岐
3.1.2 Cortex-R マジック
七代目魔法(ARMV7-R)
第八世代魔法 (Armv8-R)
3.1.3 Cortex-M マジック
第八世代魔法 (Armv8.0-M)
第八世代魔法 v1 (Armv8.1-M)
- MVE (M-Profile Vector Extension),アームヘリウム
-
LoB/ループテール予測/BF
-
安全
- 実行許可
- V8.2-M PAC(ポインター認証)
- V8.2-M BTI(分岐先命令)
- DIT(データ独立タイミング)
- UDE (非特権デバッグ拡張機能)
3.2時代
2022年 | A-PROFILE 2022 |
2021年 | A-PROFILE 2021 |
2020年 | A-PROFILE 2020 |
2019年 | - |
2018年 | A-PROFILE 2018 |
2017年 | A-PROFILE 2017 |
2016年 | A-PROFILE 2016 |
2015年 | A-PROFILE 2015 |
2014年 | A-PROFILE 2014 |
3.3 マイクロマジック
ネオン | 整数ベクトル演算 |
VFP | 浮動小数点ベクトル演算 |
全て | 可変長ベクトル展開演算 |
現在の CPU 実装のアーキテクチャ上の特徴を識別するには、レジスタの ID_AA64xxxx ファミリを参照してください。
4. アーキテクチャドリル
4.1 大集合
時間の経過と需要の変化により、各製品ファミリは複数のメンバーに進化し、その中で Cortex-A シリーズ プロセッサは A5 から A715 までの 24 モデルをリリースし、Cortex-M シリーズ プロセッサは M0 から合計 24 モデルをリリースしました。 Cortex-Rシリーズのプロセッサは、R4からR82までの11モデルがリリースされており、各プロセッサの違いについては、以下のリンク表をご覧ください。
4.2 フォーメーション
異なるプロセッサは、異なるアプリケーションを処理できます。
ウェアラブルでは主にCortex-AとCortex-Mが使われ、ストレージではCortex-RとCortex-Mが使われ、ADASではCortex-AとCortex-Rがあり、AはHigh-パフォーマンス コンピューティング、および R はリアルタイムおよびセキュリティ コントロールに使用されます。モバイル コンシューマー市場では、Cortex-A、Cortex-R、および Cortex-M にアプリケーションがあり、A はアプリケーション プロセッサとして使用され、R は主にベースバンドとして使用されます。 、およびCortex-Mは、センサーハブ(センサーハブ)チップ分野に使用される可能性があります。
図7 応用分野
4.3 何千マイルも離れた場所で戦略を立てて勝つ
4.3.1 アップロードとダウンロード - コンソール出力
/*Hello world*/
#include <stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
4.3.2 FiberHome - LED マーキー
#include"led.h"
void LED_Init(void)
{
RCC->APB2ENR|=1<<2;
RCC->APB2ENR|=1<<5;
GPIOA->CRH&=0XFFFFFFF0;
GPIOA->CRH|=0X00000003;
GPIOA->ODR|=1<<8;
GPIOD->CRL&=0XFFFFF0FF;
GPIOD->CRL|=0X00000300;
GPIOD->ODR|=1<<2;
}
4.3.3 パスワード発行暗号化
void mbedtls_aes_encrypt( mbedtls_aes_context *ctx,
const unsigned char input[16],
unsigned char output[16] )
{
int i;
uint32_t *RK, X0, X1, X2, X3, Y0, Y1, Y2, Y3;
RK = ctx->rk;
GET_UINT32_LE( X0, input, 0 ); X0 ^= *RK++;
GET_UINT32_LE( X1, input, 4 ); X1 ^= *RK++;
GET_UINT32_LE( X2, input, 8 ); X2 ^= *RK++;
GET_UINT32_LE( X3, input, 12 ); X3 ^= *RK++;
for( i = ( ctx->nr >> 1 ) - 1; i > 0; i-- )
{
AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 );
AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 );
}
AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 );
X0 = *RK++ ^
( (uint32_t) FSb[ ( Y0 ) & 0xFF ] ) ^
( (uint32_t) FSb[ ( Y1 >> 8 ) & 0xFF ] << 8 ) ^
( (uint32_t) FSb[ ( Y2 >> 16 ) & 0xFF ] << 16 ) ^
( (uint32_t) FSb[ ( Y3 >> 24 ) & 0xFF ] << 24 );
X1 = *RK++ ^
( (uint32_t) FSb[ ( Y1 ) & 0xFF ] ) ^
( (uint32_t) FSb[ ( Y2 >> 8 ) & 0xFF ] << 8 ) ^
( (uint32_t) FSb[ ( Y3 >> 16 ) & 0xFF ] << 16 ) ^
( (uint32_t) FSb[ ( Y0 >> 24 ) & 0xFF ] << 24 );
X2 = *RK++ ^
( (uint32_t) FSb[ ( Y2 ) & 0xFF ] ) ^
( (uint32_t) FSb[ ( Y3 >> 8 ) & 0xFF ] << 8 ) ^
( (uint32_t) FSb[ ( Y0 >> 16 ) & 0xFF ] << 16 ) ^
( (uint32_t) FSb[ ( Y1 >> 24 ) & 0xFF ] << 24 );
X3 = *RK++ ^
( (uint32_t) FSb[ ( Y3 ) & 0xFF ] ) ^
( (uint32_t) FSb[ ( Y0 >> 8 ) & 0xFF ] << 8 ) ^
( (uint32_t) FSb[ ( Y1 >> 16 ) & 0xFF ] << 16 ) ^
( (uint32_t) FSb[ ( Y2 >> 24 ) & 0xFF ] << 24 );
PUT_UINT32_LE( X0, output, 0 );
PUT_UINT32_LE( X1, output, 4 );
PUT_UINT32_LE( X2, output, 8 );
PUT_UINT32_LE( X3, output, 12 );
}
4.3.4 最初に採餌 - コードを開始
.text
.global _start
_start:
@异常向量表
b reset
nop
b swi_handler
nop
nop
nop
b irq_hander
nop
reset:
ldr sp,=buf+512*3
@irq模式
mrs r0,cpsr
bic r0,#0x1f
orr r0,#0x12
msr cpsr,r0
ldr sp,=buf+512*2
@user模式
mrs r0,cpsr
bic r0,#0x1f
orr r0,#0x10
msr cpsr,r0
ldr sp,=buf+512
mov r0,#0x11
mov r1,#0x22
SWI 1
add r2,r0,r1
nop
nop
stop:
nop
nop
nop
B stop
@软中断
swi_handler:
@入栈保护现场
stmfd sp!,{r0-r12,lr}
mov r0,#0x1f
mov r1,#0x2f
mov r2,#0x3f
mov r3,#0x4f
mov r4,#0x5f
@出栈 恢复现常,还原模式 spsr->cpsr
@lc -> pc
ldmfd sp!,{r0-r12,pc}^
@mov pc,lr
@中断
irq_hander:
@入栈保护现场
stmfd sp!,{r0-r12,lr}
@中断处理
@switch(irqnum)
ldmfd sp!,{r0-r12,pc}^
.DATA
buf:
.space 512*3
.end
4.3.5 準備完了 - リンクスクリプト
SECTIONS
{
. = 0x80000,
.text.boot :{*(.text.boot)}
.text : {*(.text)}
.rodata : {*(.rodata)}
.data : {*(.data)}
. = ALIGN(0x8);
bss_begin = .;
.bss :{*(.bss*)}
bss_end = .;
. = ALIGN(4096);
init_pg_dir = .;
+= 4096;
}
V. まとめ
プロセスの観点から、この記事では、アーキテクチャの概要、アーキテクチャの開発、アーキテクチャの機能、およびアーキテクチャのドリルの主なラインに基づいて、Arm アーキテクチャをヒューリスティックに紹介します。ピラミッド型知識構造の観点から、この記事は、コンピューター アーキテクチャ、Arm システム アーキテクチャ、マイクロ アーキテクチャ、プロセッサ プログラミング モデル、およびアプリケーション プログラミングを含みますが、システム思考の観点から、この記事は読者にとって表面的なものになる可能性が高いため、次のようになります。各章では、Arm アーキテクチャをより体系的かつ体系的かつ詳細に説明します。
参照する
- Arm CPU アーキテクチャ リファレンス マニュアル コレクション
- AMBA バス マイクロアーキテクチャ リファレンス マニュアルのコレクション
- システム マイクロアーキテクチャ リファレンス マニュアルのコレクション
- 命令セット マイクロアーキテクチャ リファレンス マニュアルのコレクション
- セキュア マイクロアーキテクチャ リファレンス マニュアルのコレクション
- 電力制御システムのアーキテクチャ PSCA
用語
チューリングマシン
抽象的なマシン、メンタル モデル。
バス
コンピュータのさまざまな機能コンポーネント間で情報を伝送する公衆通信トランク。
トラストゾーン
分離によって信頼できるドメインを実現する技術。
ハイパーバイザー
仮想マシン モニターは、仮想マシンの作成と実行に使用されるソフトウェア、ファームウェア、またはハードウェアです。
知識を共有することは美徳です. この記事がよく書かれていると思われる場合は、いいね、ブックマーク、共有をお願いします.