![](https://img-blog.csdnimg.cn/1853235cfc084f3087c9c8a3aecc9181.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
ARMv8/ARMv9架构从入门到精通
![](https://csdnimg.cn/release/blogv2/dist/pc/img/columnHotIcon1.png)
文章平均质量分 90
最全最详细的讲解ARMv8/ARMv9架构的核心知识点,由易到难/循序渐进/章节有序/通俗易懂。
要学就学最新架构,十几年前/二十年前的技术何必再学习呢。本系列内容包括不限于:ARM基础、SOC芯片基础、Trustzone、gic、异常和中断、AMBA、Cache、MMU...
且会持续更新。
优惠券已抵扣
余额抵扣
还需支付
¥99.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
代码改变世界ctw
ARMv8/ARMv9/TEE/安全/芯片
展开
-
【置顶】ARMv8/ARMv9架构入门到精通-[目录]
周贺贺,baron,代码改变世界,coding_the_world,Arm精选,arm_2023,安全启动,加密启动optee、ATF、TF-A、Trustzone、optee3.14、MMU、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、内存管理、页表,Non-cacheable,Cacheable, non-shareable,inner-shareable,outer-shareable, optee、ATF、TF-A、Trustzone、optee3.14、MMU、V原创 2020-06-30 10:32:07 · 17293 阅读 · 11 评论 -
Cortex-X925的特性简介
在具有不同类型核心的系统中,这种连接配置也会使用,其中 Cortex-X925 核心作为高性能核心。你可以在独立的 DynamIQ 配置中使用 Cortex-X925 核,其中同构的 DSU-120 DynamIQ 集群包括一个或多个 Cortex-X925 核心。你也可以在异构集群中将 Cortex-X925 核心用作高性能核心。Cortex-X925 核是一款高性能且低功耗的产品,实现了 Armv9.2-A 架构。Armv9.2-A 架构扩展了 Armv8-A 架构,完全支持Armv8.7-A 版本。原创 2024-05-30 15:04:33 · 122 阅读 · 0 评论 -
Cache的50问,您能回答上几个
MMU关闭时cache的缓存策略是怎样的?2、阐述一下mmu和cache有哪些关系,有哪些依赖3、以下术语分别是什么含义:read allocation、write allocation、no-allocation、write-back、write-through、transient和Transient、outer shareable、inner shareable、shareablilty4、Non-cacheable、device memory之间的区别是什么?5、Non-cacheable、d原创 2024-04-24 09:53:42 · 143 阅读 · 0 评论 -
震撼!新的Armv9虚拟内存架构:128位系统寄存器、128位页表项、56位物理地址
在很早很早之前,就听说了128位的page descriptor,即128位的页表项。当时就很好奇,那MMU构建页表的代码岂不是都得重写?好多原理机制都要变?在Armv9中,在实现了FEAT_D128 feature的版本中,MMU支持128位的页表描述符,也就意味着,每一个页表项都是128位的,页表基地址寄存器也是128位的了。以下为大家摘出了细节。原创 2024-04-17 09:57:03 · 157 阅读 · 0 评论 -
全相联的cache、多路组相连的cache、直接相连的cache的优缺点分别是什么?
全相联、多路组相连和直接相联是三种常见的缓存映射方式,它们各自具有一些优点和缺点。原创 2024-03-16 23:23:13 · 320 阅读 · 0 评论 -
同步异常、External abort、Serror、prefetch abort、data abort的区别
所以当出现instruction abort、data abort时,那么一定是同步异常,可能是internal abort,也可能是external abort,但终归是同步异常。比较绕、比较难懂,咱们换一个说法:按照预期产生的异常称之precise,反之imprecise。Serror(也称System Error),是异步异常的一种,一般是来自。产生异常的那个位置是确定的,即每次执行到“那个指令处”就会产生。像未定义指令异常,它也是同步异常。确定的,即不知道执行到哪里,就产生了异常。原创 2023-11-21 02:15:21 · 293 阅读 · 0 评论 -
ARM CoreLink CCN 互连总线介绍
CCN-512 与 CCN-508 的 24 个 I/O 一致加速器接口相匹配,并且还使用相同的四通道 DMC-520 内存控制器。ARM 旨在支持数据中心类型环境中的处理器密集型 SoC,现在提供了一种将 CCN-508 的 8 个相干 CPU 集群扩展到该型号上的 12 个,或从最多 32 个内核扩展到 48 个的方法。ARM 保持了与 CCN-502 高达 16 核 CPU 的兼容性,但将 I/O 接口的数量减少了一半,达到 9 个,也许对于面积和功耗来说最重要的是,能够完全删除 L3 缓存。原创 2023-11-19 12:52:00 · 841 阅读 · 0 评论 -
Arm PMU详解
本文档描述了在Neoverse N1中实现的不同性能监视单元(PMU)事件的行为。Neoverse N1具有六个可编程的32位计数器(计数器0-5),每个独立计数器都可以被编程为在本文档描述的PMU事件之一发生时进行计数。2.1 范围本文档提供了对Neoverse N1 PMU事件的高层描述。其中包含对体系结构行为和Neoverse N1微体系结构行为的参考,以澄清这些事件的描述。如需更完整的Arm体系结构描述,请参考Arm®体系结构参考手册Armv8-A。原创 2023-11-16 12:47:08 · 248 阅读 · 0 评论 -
MMU之PBHA(page based hardware attributes)的介绍
基于页面的硬件属性 (PBHA:page based hardware attributes) 是一项可选的、由实现定义的功能。它允许软件在转换表中设置最多四位,然后通过事务通过内存系统传播这些位,并可在系统中用于控制系统组件。这些位的含义特定于系统设计。有关如何设置和启用转换表中的 PBHA 位的信息,请参阅《Arm® Architecture Reference Manual Armv8, for A-profile architecture》。禁用时,在总线上传播的 PBHA 值为 0。原创 2023-11-14 17:15:58 · 576 阅读 · 0 评论 -
使用 Armv8-A CPU 中的性能监控单元 (PMU) 配置固件
Armv8-A CPU 中的性能监控单元 (PMU) 提供硬件级性能监控和分析功能。PMU 通过计数器收集硬件事件计数。计数器包括周期计数器和事件计数器。您可以配置:每个事件计数器对指定的硬件事件进行计数。每个计数器从各种 CPU 异常级别和状态的工作负载收集硬件事件。perf 等工具使用 PMU 来分析在 Armv8-A CPU 上运行的 Linux 应用程序。然而,没有通用的方法来使用 PMU 来分析固件,因为它运行在裸机环境中。原创 2023-11-14 11:47:14 · 348 阅读 · 0 评论 -
L1-I Cache miss了时会去L1-D中再lookup一下
然后你强制把RO改成RW,然后修改这块代码段的内容。这是这块数据 会缓存到L1-D, 然后PC执行到这块附近时,可能也会缓存到L1-I。此时L1D、L1-I都是最新指令。),找不到时,即使refill也应该refill到icache,符合逻辑。那,如果发生了自修改代码后,新代码在L1-D中。可能L1-D和L1-I 都存在了, L1-I hit了,也不会去lookup L1-D。1、先说是L1-I Cache miss了,会在L1-D中lookup。2、又说,lookup不会导致L1-D refill。原创 2023-11-06 09:58:48 · 91 阅读 · 0 评论 -
MPAM简介
这些少量PARTID由虚拟机监控程序的PARTID空间管理器预先分配,并存储在MPAMVPMn_EL2寄存器中,将虚拟PARTID映射到虚拟机监控程序预先分配的“真实”(我们称之为“物理”)PARTID。分区号(PARTID)引用分区ID空间内的特定分区。在由多个虚拟机(VM)、操作系统(OS)和应用程序共享的内存系统中,每个软件环境可用的资源可能会有所不同,这取决于其他同时运行的程序。在这种情况下,我们预期分配给VM或应用程序的MPAMn_ELx寄存器中指定的唯一分区ID在运行软件的所有PE上是一致的。原创 2023-10-12 08:55:25 · 685 阅读 · 0 评论 -
2023 年 Arm A-Profile 架构发展
随着人工智能 (AI) 的兴起和安全威胁的加剧,计算需求不断发展,作为世界设备核心的基础计算架构也必须不断发展。这就是为什么我们的工程团队向普遍存在的 Arm 架构添加新功能和技术,然后软件团队确保软件尽可能无缝地适应这些未来的功能和技术。原创 2023-10-12 08:40:08 · 659 阅读 · 0 评论 -
cache知识点复习
这两个缓存的主要目的是提高虚拟内存系统的性能,减少访问主存的次数。它们在不同的处理器和操作系统中可能会有不同的名称和实现方式,但核心思想是相似的。PTW Cache 存储了最近使用的虚拟页表项,以避免频繁访问主存中的页表。如果处理器内部有 PTE Cache,它可以存储最近访问的页表项,以减少访问主存的次数,从而提高访问速度。PTW Cache 的大小和组织方式可以因不同的处理器架构和操作系统而异,但其主要目的是加速虚拟地址到物理地址的转换。它用于存储最近访问的虚拟页表项的副本,以提高虚拟内存查找的速度。原创 2023-10-05 12:54:23 · 247 阅读 · 1 评论 -
知识点19:PTW Cache 和 PTE cache
这两个缓存的主要目的是提高虚拟内存系统的性能,减少访问主存的次数。它们在不同的处理器和操作系统中可能会有不同的名称和实现方式,但核心思想是相似的。PTW Cache 存储了最近使用的虚拟页表项,以避免频繁访问主存中的页表。如果处理器内部有 PTE Cache,它可以存储最近访问的页表项,以减少访问主存的次数,从而提高访问速度。PTW Cache 的大小和组织方式可以因不同的处理器架构和操作系统而异,但其主要目的是加速虚拟地址到物理地址的转换。它用于存储最近访问的虚拟页表项的副本,以提高虚拟内存查找的速度。原创 2023-10-05 12:34:32 · 264 阅读 · 1 评论 -
知识点18:VIPT存在的同名/歧义问题
那么此种问题是如何解决的呢,其实查看cache tag里都有啥,就能知道答案了。在cache tag中缓存的物理地址,永远都是pysical[n : 12], 即永远从物理地址的BIT12开始缓存。对于一个way是16KB的cache,index为[13:0]?如何保证VA[13:0]=PA[13:0]?选用16KB或64KB的页面即可,但是选哪一个Granue Size不是你能保证的,是操作系统的选择。虚拟地址和物理地址的映射关系。原创 2023-10-05 12:33:00 · 184 阅读 · 0 评论 -
知识点17:关闭MMU时,cache的缓存策略是怎样的?
在学习MMU章节时,我们发现在页表的entry中,BIT[4:2]指向了MAIR寄存器,该寄存器描述了内存属性,其实就是cache的缓存策略属性(inner\outer\shareable\cacheable)。也就是页表中的每一个entry都指向了一个这样的Attr。那么我如果把MMU disable了呢?就没有页表的事了,那么此时缓存的策略是怎样的呢?👉👉👉 个人博客笔记导读目录(全部) 👈👈👈。原创 2023-10-05 12:27:37 · 217 阅读 · 0 评论 -
知识点16:big.LITTLE 和 dynamIQ架构的cache
到了DynamIQ 架构中,大核和小核都是一个DSU cluster中,一个DSU cluster最多可以支持8个core。如果你的系统是8个core,那么一个DSU就够了,那么系统中也就只有一个ACE或CHI Master,大核和小核之间的一致性,都在DSU cluster内完成了。在big.LITTLE 架构中,大核小核在不同的cluster中,做为两个不同的ACE或CHI Master,连接到缓存一致性总线上(CCI或CMN)。原创 2023-10-05 12:22:55 · 176 阅读 · 0 评论 -
知识点15:cache和TCM
在Cortex-M架构中,TCM(Tightly Coupled Memory)和缓存是两种不同的内存技术,它们用于优化处理器的性能和存储器访问。这样可以充分利用TCM的快速访问速度,同时利用缓存来减少对主存的访问,从而实现更好的性能和响应时间。TCM用于存储程序指令(ITCM)和数据(DTCM),可以通过直接加载和存储指令和数据来提高访问速度,减少存储器访问延迟,特别是在处理嵌入式系统中的关键代码和数据时非常有用。缓存可以存储从主存(或其他较慢的存储器)中读取的数据,以减少处理器核心访问主存的次数。原创 2023-10-05 12:14:17 · 315 阅读 · 0 评论 -
知识点14:cache的伪共享以及如何避免
伪共享(False Sharing)是一种多线程并发编程中的性能问题,通常与CPU高速缓存有关。它发生在多个线程同时访问不同但位于相同缓存行(Cache Line)的变量或数据时,即使这些变量之间实际上没有直接的数据依赖关系。伪共享会导致额外的缓存同步开销和性能下降,因为多个线程争用相同的缓存行。以下是如何避免伪共享的一些方法:原创 2023-10-05 12:11:40 · 99 阅读 · 0 评论 -
知识点13:cache的查询原理
先使用index去查询cache,然后再比较TAG,比较TAG之后再检查valid标志位。但是这里要注意:TAG包含了不仅仅是物理地址,还有很多其它的东西,如NS比特位等,这些都是在比较TAG的时候完成。原创 2023-10-05 12:07:10 · 150 阅读 · 0 评论 -
知识点12:cache TAG里都有什么?
我们知道在cacheline是由: TAG + DATA + valid bit + dirty bit组成的。DATA一般都是64bytes。那么TAG 是什么呢?TAG里都有什么呢?我们以cortex-X4为例。原创 2023-10-05 11:45:11 · 339 阅读 · 0 评论 -
知识点18:VIVT、VIPT、PIPT的介绍
(1)、VIVT、VIPT、PIPT 这些是硬件特性决定的,在架构设计时就已经决定了;(2)、在同一架构中,即存在VIPT,也存在PIPT,如L1 Cache一般都是VIPT,L2、L3一般都是PIPT cache。(3)、早已不存在VIVT的cache了,如果非要探讨VIVT,那么要追溯到1998年的ARM9架构。原创 2023-10-05 11:32:40 · 371 阅读 · 0 评论 -
知识点11:cache miss、hit概念
Cache Miss(缓存未命中):Cache Miss指的是当计算机系统需要访问内存中的某个数据或指令时,却发现这个数据或指令不在高速缓存中的情况。在Cache Miss发生时,系统必须从主存或其他较慢的存储层次中加载所需的数据或指令,并将其放入缓存中,以备将来的访问。Cache Miss通常比Cache Hit慢,因为需要从较慢的存储层次中加载数据。Cache Hit(缓存命中):Cache Hit指的是当计算机系统需要访问内存中的某个数据或指令时,在高速缓存中找到了所需的数据或指令的情况。原创 2023-10-05 11:10:42 · 297 阅读 · 0 评论 -
知识点10:cache的缓存策略、共享策略、替换策略、分配策略
cache的缓存策略、、共享策略、替换策略、分配策略 ---- 沃曹搞蒙了,哪来的这么多策略。原创 2023-10-05 11:05:51 · 150 阅读 · 0 评论 -
知识点9:Cache的组织形式
在一个core中一个架构中一个SOC中,所有cache的组织形式并不是都一样的。即使L1 D-cache和L1 I-cache的组织形式,也都可能不是一样的的。具体的组织形式是怎样的,需要查询你的core trm手册。index Set Way的概念—cache Tag、Cache data、cache line和entry的概念。cache的组织形式(index, way, set)全相连/直接相连/四路组相连—每一种的优缺点?最理想情况下,是搞成全相连的cache。真实情况下是怎样的?原创 2023-10-05 10:24:46 · 73 阅读 · 0 评论 -
知识点8:cache存放在哪里? L1/L2/L3 cache分别存放在哪里?
如果是早些年的big.LITTLE架构,那么一般来说,L1在core中,L2在cluster中,L3在cluster之外,多个cluster共享L3 cache。而到了近些年的dynamIQ DSU架构,L1和L2都在core中,L3在cluster中。cache一般是在sram中。那么L1、L2、L3在架构中的哪个位置中呢?原创 2023-10-05 10:20:20 · 253 阅读 · 0 评论 -
知识点7:Arm架构cache发展的趋势
这些趋势将有助于推动ARM架构在各种应用领域的发展。能效优化:随着对节能的需求增加,未来的ARM处理器可能会更注重优化缓存的功耗和性能平衡,以在不降低性能的情况下降低功耗。集成领域特定加速器:ARM处理器可能会集成领域特定加速器,用于特定类型的工作负载,这可能会影响缓存的设计和性能优化。缓存层级的可配置性:未来的ARM架构可能会提供更多的灵活性,允许系统设计者根据特定应用需求配置缓存的层级和大小。支持新的存储技术:未来ARM架构可能会支持新的存储技术,如持久性内存(例如NVM),以扩展缓存的能力和性能。原创 2023-10-05 10:15:28 · 97 阅读 · 0 评论 -
知识点6:为什么要有cache?不同等级cache速度之间关系
cahe的速度在一定程度上同样影响着系统的性能。当cache中没有缓存我们想要的数据的时候,依然需要漫长的等待从主存中load数据。如果它在高速缓存中找到地址,它就使用高速缓存中的数据,而不是执行对主存储器的访问。通过减少缓慢的外部存储器访问时间的影响,这显着提高了系统的潜在性能。ARM 架构刚开始开发时,处理器的时钟速度和内存的访问速度大致相似。然而,外部总线和存储设备的频率并没有达到同样的程度。块,但与标准 DRAM 块相比,这种 RAM 非常昂贵,标准 DRAM 块的容量可能高出数千倍。原创 2023-10-05 10:13:09 · 101 阅读 · 0 评论 -
知识点5:软件工程师写代码时,应该注意的事项
作为软件工程师,在编写代码时,考虑缓存是非常重要的,因为良好的缓存管理可以显著提高程序的性能和效率。以下是一些应该注意的事项:- 数据局部性:了解数据局部性是关键。这包括时间局部性(最近访问的数据可能会再次访问)和空间局部性(附近的数据可能会一起访问)。尽量设计算法和数据结构以最大程度地利用局部性,减少缓存未命中。- 缓存友好的数据结构:选择合适的数据结构以提高缓存效率。例如,数组通常比链表具有更好的缓存性能,因为数组的数据在内存中是连续存储的。- 数据对齐:确保数据在内存中按照缓存行的大小对齐原创 2023-10-05 10:07:18 · 102 阅读 · 0 评论 -
知识点4:Userspace能否操作cache维护指令? 哪一个的API是什么?怎样做到的?
总之,用户空间一般不具备直接操作CPU高速缓存的权限,而是通过操作系统提供的API和系统调用来控制缓存行为,以确保数据一致性和系统稳定性。需要注意的是,这些API通常用于控制文件I/O操作的缓存行为,而不是直接操作CPU的高速缓存。mmap() 和 munmap():通过使用mmap()函数将文件或设备内存映射到用户空间,可以控制缓存的一些行为,如缓存的刷新和非缓存(直通)访问。如果用户空间需要执行与缓存有关的操作,通常需要通过操作系统提供的API或系统调用来实现,而不是直接使用特权指令。原创 2023-10-05 10:00:41 · 80 阅读 · 0 评论 -
知识点2:刷cache是啥意思?本质是什么?
- Point of Unification (PoU) : instruction、data、TLB访问一致性的点- Point of Coherency (PoC):agents访问内存一致性的点- Point of Persistence (PoP) : 和FEAT_DPB、FEAT_DPB2 feature相关- Point of Deep Persistence (PoDP) :访问memory一致性的点原创 2023-10-05 08:58:39 · 224 阅读 · 0 评论 -
知识点1:一般什么情况下,才会主动刷cache?
总结:什么情况下才会刷cache- 不同硬件交互数据的时候- 不同策略的cpu交互数据时- 不同系统交互数据时原创 2023-10-05 08:47:20 · 569 阅读 · 0 评论 -
第三章 软件架构
在这种情况下,这两个镜像在物理上不是隔离的,因为S-EL1中的软件可以访问EL3中软件的物理地址空间。它用于保护分配给安全状态下的软件镜像的安全物理地址空间范围,以免被非安全状态下的软件镜像访问。这些镜像在逻辑上是隔离的,也可以在物理上隔离。• 在虚拟机内运行的 Guest OS 与另一个虚拟机内的 Guest OS 在物理和逻辑上都是隔离的。• 在 EL2 中运行的虚拟机监视器与其管理的所有虚拟机在物理和逻辑上都是隔离的。• 在 EL3 中的固件与正常世界中的任何软件镜像在物理和逻辑上都是隔离的。原创 2023-09-28 11:29:50 · 122 阅读 · 0 评论 -
第二章 Introduction
安全状态下的虚拟化扩展与非安全状态下的虚拟化扩展相对应(另见 [2])。关于在安全状态下引入虚拟化扩展以及固件框架的目标的更多理论基础信息可以在标题为“在安全世界中使用虚拟化进行隔离”的白皮书 [3] 中找到。EL3 中的固件组件可以通过将供应商特定的组件迁移到 S-EL1 或 S-EL0 中的沙盒来相互隔离。这包括安全世界和正常世界中的镜像之间的通信。EL3 中的固件可以与 S-EL1 中的软件(例如受信任的操作系统)进行隔离。正常世界的软件可以与 S-EL1 中的软件隔离,以减轻特权升级攻击的风险。原创 2023-09-28 11:27:34 · 148 阅读 · 0 评论 -
Armv9读取cache内容:Direct access to internal memory
您可以使用下表中的十二个只读(RO)系统寄存器来访问内部内存,表格标题为“用于访问内部内存的系统寄存器”。用于查找标签和数据存储器的缓存数据条目的编码在适当的SYS指令中的Xn中设置。用于查找标签和数据存储器的缓存数据条目的编码在适当的SYS指令中的Xn中设置。L2 TLB RAM(小页面的TCSP)为6路组关联,L2 TLB RAM(中页面的TCMP)为4路组关联。单击以下表格中的寄存器名称,以查看有关返回数据格式的详细信息。单击以下表格中的寄存器名称,以查看有关返回数据格式的详细信息。原创 2023-09-27 12:36:45 · 589 阅读 · 0 评论 -
Armv9 Cortex-A720的L2 memory system 和 L2 Cache
在L1指令缓存和L2缓存中未命中的指令获取会分配到两个缓存,但L2缓存的失效不会导致对L1指令缓存的反向失效。以下表格显示了Cortex-A720核心L2缓存的读取、写入、Distributed Virtual Memory(DVM)发出和嗅探能力的最大可能值。Cortex-A720核心的L2内存系统通过CPU bridge连接core与DynamIQ Shared Unit-120,其中包括私有的L2缓存。L2缓存是统一的,每个Cortex-A720核心在一个集群中都有私有的L2缓存。原创 2023-09-27 09:32:24 · 458 阅读 · 0 评论 -
Armv9 Cortex-A720的L1 memory system 和 L1 Cache
本节课我们将讲述Armv9 Cortex-A720的L1 System memory.原创 2023-09-27 08:23:46 · 570 阅读 · 0 评论 -
深入理解Armv9 DSU-110中的L3 cache
DynamIQ cluster、DSU-110、DSU-120、DSU、cache、mmu、缓存、高速缓存、内存管理、MPAM>思考:1、L1、L2、L3 cache的替换策略是怎样的?2、什么类型的内存永远不会进L3 cache?3、L3 cache一般都是多大?4、L3 cache的组织形式一般是怎样的?5、什么是cache partitioning?6、DSU、DSU-110、DSU-120有什么区别?7、什么MPAM? 有什么作用?8、什么是Cache stashing?9、原创 2023-09-26 23:31:34 · 723 阅读 · 5 评论 -
Confidential Compute Architecture - Arm构架的TEE新模式
如今,云计算在分布式计算资源按需使用方面起着重要的作用。许多公司,如亚马逊、谷歌或微软都提供云服务,但使用这些服务需要信任服务提供商。这意味着一方面依赖提供商对抗攻击者,但另一方面也要信任提供商本身。恶意的提供商可能最终滥用其客户的敏感数据。使用可信执行环境(TEE)可以帮助增加对提供商的信任。在传输过程中,通常通过数据加密来进行保护,但在目标设备上,数据会被解密,因此暴露于通常被称为Rich执行环境(REE)的不可信环境中。在REE里运行的是设备的操作系统(OS)和应用程序。原创 2023-09-22 12:25:46 · 438 阅读 · 0 评论