ARM Training Day1¶
Security¶
Branch protection¶
防止程序篡改分支目的地址¶
BTI 只有有BTI指令的分支才能跳转 页表中有标识需要配置
防止程序篡改返回地址¶
PACIASP X30的高位提供PAC code (一种加密码) AUTIASP 判断X30高位有没有被篡改过 需要软件产生一个key
memory tagging¶
发现代码本身的漏洞,减小能够被攻击的可能 通过tag是否匹配来判断是否合法,主要功能帮忙检测漏洞 memory overflow or doublefree
分配内存的时候就需要一个tag,真正的访问alloc一个逻辑tag,进行匹配 在哪里check取决于在哪里结束,可以在cache和总线
不能防止攻击,因为tag是透明的
LDG x1, [x0]
DynamIQ Shared Unit (DSU)¶
结构组成:
- DynamIQ Cluster
- Debug Block
SVE2¶
SVE2 是在neon上的扩展 软件在写的时候不需要SVE2的vlen_max
MPAM(memory partitioning and monitoring)¶
L3 cache 可以分成多个partition L3 miss 时,分配MPAM中配置的partition slice id
bandwidth partitioning
架构文档中说明了bandwidth partitioning 默认轮流使用,可以配置比例权重,如果实际中确实请求较多,那么会优先给比例高的core, 仲裁逻辑基于slice
Realm¶
通过在SCR_EL3中添加了NSE bit, 配合NS bit来指示是哪个状态
Power¶
Activity per clock
可以通过DVFS来调整
CPU 内部有 Activity Monitor, MPMM 有三个Gear能够控制Activity DSU cluster level 支持MPMM
Cluster 如何调整Activity, 通过控制L3的bandwidth, 以slice为单位
PDP (performance Define power)
Trace¶
ETE | ETM Trace
两种方式(不能同时): - 通过ATB总线发送出去 - TRBE可以将Trace导入DDR,受MMU管理
Complex¶
Dual-Core Complex, share L2 Cache and VPU Single-Core Complex, similar with signle core hunter not support complex
L3 Cache¶
32MB Max 1,2,4,8 slices
通过两个ring的topo, 距离每个node很近,提高bandwidth, 减少lat, 降低layout难度 slice越多,controler 越多,额外面积越多,功耗越大
one slice:
- Data RAM
- Tag RAM
- Snoop Filter
- LTDB (long time data buffer) L3 向外还没有result的transaction
可配置参数
- L3_CACHE_SIZE
- NUM_L3_SLICES
支持 CHI.E 不支持 CHI.F
可以通过寄存器配置AXI还是CHI
master port(DSU对外接口)的个数 1,2,3,4 要结合DDR的端口和核数
peripheral port, 支持256-bit | 64-bit 64-bits支持回环到ACP没有deadlock
MCN(memory controller node)
outstanding transaction: - master port num - LTDB size(16, 32, 48, 64)
NUM_LTDBS <= (128 * NUM_MASTER / NUM_L3_SLICES)
DSU total outstanding = L(LTDB) * S(slices)
interrupt¶
GIC400 最多支持8core GIC(generic interrupt controller)
ACP¶
snoop
atomic support¶
LDADD
persistent¶
保证系统下电再上电之后能够看到希望保留的信息 DCCVAP 带persistent的刷cache DCCVA
PBHA¶
system counter¶
进程转换(programmable incrementing Counter)
hunter¶
提高性能的同时,兼顾能效比
first generation of Armv9.2
PMU¶
包含了cycle counter 和 event counter, 支持快照,最多支持20个源 没办法精确到指令
AMU¶
activity monitor
做maxpower控制用的 可以通过指令的方式去控制 支持7个event,其中三个可以定制
SPE(statistical profiling extension)¶
更微观 micro-op, 监测执行状态, 生成64-bit采样,结果直接放到memory中
微架构¶
- 2-taken with cond branches(某些情况下只能做一条分支预测)
- 8 instruction fetch
- 32/64KB instruction cache
- 5-wide decode, dispatch
- 184 preg
- 192 insts windows
- 32/64KB data cache
- 2-load/store + 1-load per cycle
- by default dcache 32bank
- support data prefetcher
- 4-ALU
- 2-branch
- 2-vector execute pipelines
- register cache
- 9-cycle L2 cache(128/256/512KB), exclusive L1D, support ECC