
ARMv8/ARMv9架构从入门到精通
文章平均质量分 89
最全最详细的讲解ARMv8/ARMv9架构的核心知识点,由易到难/循序渐进/章节有序/通俗易懂。
要学就学最新架构,十几年前/二十年前的技术何必再学习呢。本系列内容包括不限于:ARM基础、SOC芯片基础、Trustzone、gic、异常和中断、AMBA、Cache、MMU...
且会持续更新。
优惠券已抵扣
余额抵扣
还需支付
¥99.90
¥299.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
Arm精选
专注Arm架构、TEE安全课程;
Armv8/Armv9、Trustzone/TEE、Secureboot
真正的ARM架构、真正的ARM架构、真正的ARM架构
技能倍数增长、升职加薪、年薪翻翻
展开
-
【置顶】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 · 20889 阅读 · 11 评论 -
MMU页表项中的 Access flag的介绍
如果系统包含能够自动更新与处理单元(PE)共享的翻译表项的组件,则系统软件在对AF为0的翻译表项进行修改时,应避免同时更新。当PE(处理单元)通过硬件管理AF时,它会将AF设置为1,并在内存中相应的描述符中以一致的方式进行原子读取-修改-写入操作。对于硬件未管理AF的实现,当尝试使用AF为0的描述符翻译地址时,会触发访问标志故障(Access flag fault)。当触发访问标志故障时,软件应将触发故障的描述符中的AF设置为1。如果AF未由硬件管理,则需要软件管理AF。原创 2024-12-20 09:47:18 · 69 阅读 · 0 评论 -
Linux内核的缺页异常的简介
在 Linux 内核中,缺页异常(Page Fault)是一种常见的异常情况,通常发生在程序试图访问其虚拟地址空间中不存在的页面时。它是虚拟内存管理的一部分,用来确保程序可以在其虚拟地址空间中访问数据,即使这些数据可能暂时不在物理内存中。原创 2025-01-04 19:12:11 · 175 阅读 · 0 评论 -
ARM CoreLink CCN 互连总线CCI-550的关键特性介绍
CCI-550 是一种专为中高端多核 SoC 设计的缓存一致性互连模块,提供数据一致性、流量管理、性能监控以及安全性支持,适用于多核处理器、GPU 和存储器的互连场景。如 ARM Cortex-A57 或 Cortex-A72 处理器。如 ARM Mali-T880 图形处理单元(GPU)。用于主设备之间的 MMU(内存管理单元)通信。1、ACE 主设备之间的数据一致性。提供安全、非安全和受保护状态的支持。与 ACE-Lite 主设备兼容。负责主设备和从设备之间的通信。用于统计与性能相关的事件。原创 2024-12-13 13:11:18 · 160 阅读 · 0 评论 -
ARM CoreLink CCN 互连总线CMN-700的关键特性介绍
包括传输奇偶校验(Transport Parity)、可选数据路径奇偶校验(Optional Data Path Parity)、单错误校正(Single-Error Correction, SEC)、双错误检测(Double-Error Detection, DED)ECC,以及数据损坏信号。HN-F 包含集成的 串行化点(Point-of-Serialization, PoS) 和 一致性点(Point-of-Coherency, PoC)。注意: 更多设备可以通过增加互连层次来支持。原创 2024-12-13 13:03:53 · 238 阅读 · 0 评论 -
ARM CoreLink CCN 互连总线CNN-508的关键功能介绍
缓存包括 串行化点(Point-of-Serialization, PoS) 和 一致性点(Point-of-Coherency, PoC),可以用于计算和 I/O 缓存。额外的设备可以通过额外的互连层次结构支持,例如使用 CoreLink NIC-400 网络互连。系统缓存由 8 个分区组成,每个分区大小为 128KB、512KB、1MB、2MB 或 4MB。SF 包含 8 个分区,每个分区覆盖 2MB 或 4MB 的缓存行标签。支持容量为 1MB、4MB、8MB、16MB 或 32MB 的缓存。原创 2024-12-13 12:57:04 · 94 阅读 · 0 评论 -
aarch64汇编指令集介绍
提供31个64位通用寄存器,其中X30用作过程链接寄存器。提供64位程序计数器(PC)、堆栈指针(SPs)和异常链接寄存器(ELRs)。为SIMD向量和标量浮点支持提供32个128位寄存器。提供单个指令集A64定义了ARMv8异常模型,有四个异常级别,EL0 - EL3,提供了一个执行特权层次结构,提供对64位虚拟寻址的支持。定义许多包含PE状态的进程状态(PSTATE)元素。A64指令集包括直接操作各种PSTATE元素的指令。原创 2024-11-30 16:36:39 · 199 阅读 · 0 评论 -
aarch64汇编开发环境有哪些
编写汇编代码:hello_world.s。hello_world代码的程序解释。执行hello_world程序。编写Makefile文件。原创 2024-11-27 19:16:13 · 147 阅读 · 0 评论 -
gdb命令大全和总结
watch *(int *)0x4000d4 设置观察内存,当变量或内存的值发生变化时暂停程序。break file.c:10 if x == 42 条件断点: 仅当条件为真时触发断点。watch x 设置观察点,当变量或内存的值发生变化时暂停程序。continue 或 c:继续运行程序直到遇到断点或程序结束。x/10x 0x4000d4 以十六进制形式查看内存。x/10i 0x4000d4 以汇编形式查看内存指令。x/s 0x4000d4 以字符串形式查看内存。原创 2024-11-27 10:28:19 · 101 阅读 · 0 评论 -
aarch64汇编开发环境准备:GNU GCC + QEMU + GDB
编写汇编代码:hello_world.s。hello_world代码的程序解释。执行hello_world程序。编写Makefile文件。原创 2024-11-27 10:26:34 · 203 阅读 · 0 评论 -
【ARM架构中文手册】第一章 Introduction
嵌入式系统可以包含非常简单的8位微处理器,如Intel 8051或PIC微控制器,也可以使用更复杂的32位或64位处理器,如本书中描述的ARM系列处理器。这可能是一个“硬性”要求(例如,汽车刹车系统必须在特定时间内响应)或“软性”要求(例如,音频处理必须在一定时间框架内完成,以避免糟糕的用户体验——但在极少数情况下未能做到这一点可能并不会使系统失效)。本书主要集中在Linux的实例上。以手机为例,基本款手机可能仅具备拨打电话的功能,但现代智能手机可以运行复杂的操作系统,提供数以千计的可供下载的应用程序。原创 2024-10-05 22:33:57 · 359 阅读 · 0 评论 -
【ARM架构中文手册】第二十一章 Security
监控模式处理到安全世界的转换,并直接转移到安全世界的FIQ处理程序。本质上,系统安全是通过将设备的所有硬件和软件资源划分为两部分来实现的,使其存在于用于安全子系统的“安全世界”或其他所有用途的“普通世界”中。同样,监控模式路由意味着从普通世界代码的角度来看,安全世界执行期间发生的中断似乎发生在进入安全世界之前的最后一条普通世界指令中。如果你需要访问一个安全应用程序,你将需要一个类似驱动程序的功能来与安全世界的操作系统和安全应用程序进行通信,但创建安全世界操作系统和应用程序的详细内容超出了本书的范围。原创 2024-10-06 19:49:42 · 138 阅读 · 0 评论 -
【ARM架构中文手册】第二十二章 Virtualization
在这个意义上,客体操作系统可以被视为虚拟机监控程序的“应用程序”。除了安全(Secure)和非安全(Non-Secure)版本的转换表基址寄存器(TTBR)外,还有一个虚拟化转换表基址寄存器(VTTBR)和Hyp转换表基址寄存器(HTTBR),其中VTTBR用于指向第二阶段的转换表(参见第22-10页的大型物理地址扩展),HTTBR用于指向用于虚拟机监控程序内存映射的表。虚拟异常是性质类似的事件,如中断和中止,但由虚拟机监控程序制造,可能是对实际物理异常的响应,或者是仿真设备的结果,与物理异常无关。原创 2024-10-06 19:50:25 · 156 阅读 · 0 评论 -
【ARM架构中文手册】第二十三章 big.LITTLE
未使用的核心可以关闭。此模型可以在big.LITTLE系统中运行,集群中的核心数量可以是任意的,如下图所示。低强度且持久的线程,例如Android系统服务,只会在创建时被移到big核心,随后会迅速转移到更适合的LITTLE核心。当一个big核心没有任务运行时,会检查所有LITTLE核心,看看是否有LITTLE核心上正在运行的任务的负载指标高于上迁移阈值。与仅有四个big核心的测试系统相比,动态软件线程亲和性管理将促进big核心的更好利用,不会因低强度和频繁运行的线程(如系统服务)或中断而受到阻碍。原创 2024-10-06 19:51:02 · 130 阅读 · 0 评论 -
【ARM架构中文手册】第二十四章 Debug
CoreSight提供了许多非常强大的调试功能,能够对多核系统(包括非对称和对称多处理)进行调试,并共享调试访问和跟踪引脚,具有全面的控制能力。可以记录执行的内存访问(包括地址和数据值),并实时生成程序的跟踪,观察外围设备访问、堆栈和堆访问以及变量的变化。它还支持对裸机SMP系统的调试和跟踪,包括交叉触发、核心相关视图和断点、PTM跟踪,以及使用DSTREAM的多达4GB的跟踪。在调试状态下,核心停止执行由程序计数器指示的位置的指令,转而通过外部调试接口控制,特别是使用调试指令传输寄存器(DBGITR)。原创 2024-10-06 19:51:40 · 139 阅读 · 0 评论 -
【ARM架构中文手册】第十六章 Profiling
Cortex-A系列处理器包含用于事件计数的硬件,可以用于代码的性能分析和基准测试,包括生成周期和指令计数数据,以及推导出缓存未命中等指标。此外,还有一些可配置的32位宽事件计数器,可设置为从广泛的事件列表中计数(例如,已执行的指令或MMU TLB未命中)。在某些类型的实时系统中,这可能是一个重要的考虑因素,因为实时事件的相互作用可能对被分析代码的性能产生重大影响。所使用的特定处理器的TRM(技术参考手册)提供了有关可监控事件列表的更多信息,其中可能包括许多额外的事件,除了这里列出的之外。原创 2024-10-06 19:44:48 · 90 阅读 · 0 评论 -
【ARM架构中文手册】第十七章 Optimizing Code to Run on ARM Processors
17.Optimizing Code to Run on ARM Processors优化并不一定意味着使程序运行得更快。在嵌入式系统中,您可能更倾向于针对电池寿命、代码密度或内存占用进行优化。编写更高效的代码不仅可以提高性能,还对节省电池寿命至关重要。如果您能够在更少的周期内完成工作,就可以更长时间地关闭电源。许多编译器提供了用于帮助优化的选项。例如,ARM编译器和GNU GCC编译器都具有 -O 标志,用于指定优化级别。虽然处理器的技术参考手册(TRM)中可以找到周期时序信息,但即使是要计算一小原创 2024-10-06 19:46:18 · 109 阅读 · 0 评论 -
【ARM架构中文手册】第十八章 Multi-core processors
在硬件中,核心包含一个名为“本地监视器”的设备。这样的系统在不同的核心上运行不同的软件,且各个处理器可能具有不同的权限和对内存的不同视图。这意味着一个核心缓存中的数据更改对其他核心是可见的,从而使得核心无法看到过时的数据副本(即在第一个核心更改之前的旧数据)。根据所使用的协议,SCU(Snoop Control Unit)会将缓存中的每一行标记为以下属性之一:M(Modified,已修改)、O(Owned,已拥有)、E(Exclusive,独占)、S(Shared,共享)或I(Invalid,无效)。原创 2024-10-06 19:47:03 · 160 阅读 · 0 评论 -
【ARM架构中文手册】第十九章 Parallelizing Software
👉👉👉 ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈个人博客笔记导读目录(全部)原创 2024-10-06 19:48:19 · 94 阅读 · 0 评论 -
【ARM架构中文手册】第二十章 Power Management
然而,从外部调试器的角度来看,这些状态不同,因为外部调试请求调试事件保持挂起,并且核心电源域中的调试寄存器无法访问。这影响到给定状态下关闭的所有组件,包括核心,以及在更深的状态下系统的其他组件,例如GIC或特定平台的IP。即使在不使用电池的系统中,节能也是需要关注的问题。支持电源管理的操作系统会根据当前的工作负载,动态调整核心的电源状态,试图在使用尽可能少的电量的同时,平衡可用的计算能力。这些技术中的一些会动态地切换核心的开关状态,或将其置于静止状态,在该状态下核心不再执行计算,因而消耗极少的功率。原创 2024-10-06 19:49:09 · 116 阅读 · 0 评论 -
【ARM架构中文手册】第十一章 Exception Handling
显然,异常向量表必须复制到向量页面的起始位置,异常存根复制到地址0x200(而kuser帮助程序复制到页面顶部,即0x1000 - kuser_sz),这通过一系列memcpy()操作完成,如下面的示例所示。由MMU生成的中止始终是同步的。例如,在某个特定实现中,报告在翻译表查找时发生的外部中止可能被视为精确的,但这并不是对所有核心的要求。除了响应外部中断,还有许多其他因素可能导致核心发生异常,包括外部因素,如复位、来自内存系统的外部中止,以及内部因素,如MMU生成的中止或使用SVC指令的操作系统调用。原创 2024-10-06 18:45:12 · 117 阅读 · 0 评论 -
【ARM架构中文手册】第十二章 Interrupt Handling
可重入的中断处理程序必须保存IRQ状态,然后切换核心模式,并保存新核心模式的状态,才能在启用中断的情况下跳转到嵌套的子例程或C函数。值得注意的是,嵌套中断处理是软件做出的选择,依赖于中断优先级配置和中断控制,而不是由硬件强加的。这个控制器通常包含多个寄存器,使得在核心上运行的软件能够屏蔽单个中断源、确认来自外部设备的中断、为单个中断源分配优先级,以及确定当前哪些中断源请求关注或需要服务。所有核心都可以访问公共的分配器块,但CPU接口是分离的,也就是说,每个核心使用相同的地址访问其私有的CPU接口。原创 2024-10-06 18:47:04 · 97 阅读 · 0 评论 -
【ARM架构中文手册】第十三章 Boot Code
历史上,传递给内核的参数以标记列表(tagged list)的形式传递,列表放置在物理RAM中,寄存器R2保存列表的地址。通常,复位向量包含分支到ROM中的启动代码。Linux设备树(FDT)支持最初是在PowerPC内核中引入的,作为32位和64位内核合并的一部分,旨在通过使用Open Firmware接口来标准化所有PowerPC平台、服务器、桌面和嵌入式设备的固件接口。例如,可能需要将存放未初始化的C变量的内存区进行零初始化,将其他变量的初始值从ROM镜像复制到RAM,并设置应用程序的堆栈和堆空间。原创 2024-10-06 18:48:25 · 112 阅读 · 0 评论 -
【ARM架构中文手册】第十四章 Porting
Veneers是由链接器自动插入的小段代码,当它检测到分支目标超出范围或是从一个状态到另一个状态的条件分支(例如从Thumb到ARM或从ARM到Thumb)时,Veneers会作为原始分支的中间目标,然后自身成为跳转到目标地址的分支。在较旧的 ARM 处理器上,对未对齐地址的访问是可能的,但其行为与使用 ARMv7 架构的访问不同。在 ARM7 和 ARM9 处理器上,未对齐的 LDR 在内存系统中执行的方式与对齐访问相同,但返回的数据会旋转,使得请求地址的数据放置在加载寄存器的最低有效字节中。原创 2024-10-06 18:49:21 · 101 阅读 · 0 评论 -
【ARM架构中文手册】第十五章 Application Binary Interfaces
AAPCS规定了调用者必须遵守的规则,以确保被调用函数能够正常运行,以及被调用例程必须遵守的规则,以确保当被调用函数返回时,调用者可以继续正常运行。第一个参数通过R0传递。第二个参数是64位的,必须通过一个偶数寄存器和紧邻的奇数寄存器(或者在堆栈上8字节对齐的位置)进行传递。子程序需要在堆栈上保存(即保护)寄存器R4-R8、R10、R11和SP的内容(在将R9指定为v6的PCS变体中还包括R9),如果子程序使用了这些寄存器的话。在不需要这种特殊寄存器的代码中,它可以用作额外的被调用者保存的变量寄存器v6。原创 2024-10-06 18:50:19 · 80 阅读 · 0 评论 -
【ARM架构中文手册】第七章 Introducing NEON
7.Introducing NEONNEON技术在ARM处理器中提供单指令多数据(SIMD)操作,实施高级SIMD架构扩展,可以加速运行在ARM Cortex-A系列处理器上的多媒体应用程序的性能。这些操作可以显著加速对大型数据集的重复操作。这在媒体编码器等应用中非常有用。NEON作为一个独立的硬件单元在Cortex-A系列处理器中可选实现。将NEON硬件设为可选使得ARM SoC能够针对特定市场进行优化。在大多数通用应用处理器SoC中,NEON可能会被包含。然而,对于网络路由器等嵌入式应用,NEON原创 2024-10-06 18:36:12 · 86 阅读 · 0 评论 -
【ARM架构中文手册】第八章 Caches
8.Caches"缓存"这个词来源于法语动词“cacher”,意为“隐藏”。将这个词应用于处理器是显而易见的——缓存是处理器用于存储指令和数据的地方,对程序员和系统是隐藏的。在许多情况下,可以说缓存对你是透明的或隐藏的。但正如我们将看到的,了解缓存的操作细节往往非常重要。当ARM架构最初开发时,处理器的时钟速度和内存的访问速度大致相似。如今的处理器核心要复杂得多,时钟速度可以快上好几个数量级。然而,外部总线和内存设备的频率并没有按同样的比例提升。虽然可以实现与核心速度相同的小块片上SRAM,但这种RA原创 2024-10-06 18:37:05 · 95 阅读 · 0 评论 -
【ARM架构中文手册】第九章 The Memory Management Unit
ASID 是操作系统分配给每个任务的一个数字,该值的范围是 0-255,当前任务的值存储在 ASID 寄存器中(通过 CP15 c13 访问)。这种简单的方案不足以满足今天更复杂的系统和处理器的需求,在这些系统中,可以有多个级别的缓存、在多个共享内存的处理器之间进行硬件管理的连贯性,以及能够进行指令和数据的推测性获取的处理器。备缓冲区(TLB)是 MMU 中最近执行的页翻译的缓存。然而,由于这两个操作是独立的、非原子性的,因此需要小心,以避免使用一个寄存器的新值与另一个寄存器的旧值共同发生投机访问的问题。原创 2024-10-06 18:38:01 · 141 阅读 · 0 评论 -
【ARM架构中文手册】第十章 Memory Ordering
内缓存指的是最内部的缓存,始终包括核心的一级缓存。当集群中的某个核心执行 DMB 指令时,该核心将确保屏障前按程序顺序的所有数据内存访问在屏障之后的任何显式内存访问之前完成。在没有多处理扩展的情况下,ARMv7架构并不严格要求对[Addr]的存储操作必须完成(它可能在写缓冲区中,而内存系统忙于读取标志),因此两个核心可能会发生死锁,各自等待对方。例如,在 GCC 中,您可以使用内联汇编的内存破坏(memory clobber)机制,表示该指令更改了内存,因此优化器不能重新排序屏障后的内存访问。原创 2024-10-06 18:41:35 · 106 阅读 · 0 评论 -
【ARM架构中文手册】第五章 ARM/Thumb Unified Assembly Language Instructions
无符号数字会被零扩展(即寄存器的最高16或24位被设置为零),但对于有符号数字,则需要将符号位(字节的第[7]位或半字的第[15]位)复制到寄存器的高16位(或24位)。SIMD指令的一般形式是每个寄存器中的子字节数量会并行操作(例如,可以执行四个字节大小的ADD操作),GE标志根据指令的结果被设置或清除。对于明确的比较指令,S后缀既不是必需的,也不允许。另一种分支指令类型可以通过加载(LDR)指令将PC作为目标,或通过加载多重(LDM)指令,或堆栈弹出(POP)指令将PC放在要加载的寄存器列表中实现。原创 2024-10-06 18:28:00 · 151 阅读 · 0 评论 -
【ARM架构中文手册】第四章 Introduction to Assembly Language
4.Introduction to Assembly Language汇编语言是一种低级编程语言。通常来说,汇编语言指令(助记符)与核心实际执行的二进制操作码之间存在一一对应的关系。许多编写应用层代码的程序员通常不会使用汇编语言进行编码。然而,汇编代码的知识在某些情况下非常有用,例如在需要高度优化的代码时、编写编译器时,或者在需要使用C语言无法直接实现的底层特性时。汇编语言可能在引导代码、设备驱动程序或操作系统开发的某些部分中需要使用。最后,当调试C程序时,能够阅读反汇编代码并理解汇编指令与C语句之间原创 2024-10-06 18:27:12 · 146 阅读 · 0 评论 -
【ARM架构中文手册】第三章 ARM Processor Modes and Registers
目前来说,对于实现TrustZone扩展的处理器,系统安全性是通过将设备的所有硬件和软件资源划分为两部分来实现的:一种是在安全子系统中的安全世界(Secure world),另一种是用于其他所有内容的普通(非安全)世界(Normal/Non-secure world)。R15是程序计数器,保存当前的程序地址(实际上,在ARM状态下总是指向当前指令前面的8个字节,在Thumb状态下指向当前指令前面的4个字节,这是原始ARM1处理器的三阶段流水线的遗留)。在下图中,阴影部分的寄存器是银行化的(banked)。原创 2024-10-06 18:26:30 · 121 阅读 · 0 评论 -
【ARM架构中文手册】第二章 ARM Architecture and Processors
Cortex-A8 处理器能够满足功耗优化的移动设备在低于 300mW 的条件下运行的要求,以及性能优化的消费类应用(需要 2000 Dhrystone MIPS)的需求。ARMv6 进行了多项增强,包括对未对齐的内存访问的支持、对内存架构和多核支持的重大更改,以及对在 32 位寄存器内对字节或半字操作的 SIMD 操作的一些支持。也可能存在多个具有不同内部实现和微架构的处理器,这些处理器的循环时间和时钟频率不同,但符合相同版本的架构,它们执行为该架构定义的 ARM 指令集,并通过 ARM 验证系统测试。原创 2024-10-06 18:25:11 · 206 阅读 · 0 评论 -
【Arm Cortex-X925】 -【第九章】-L2 内存系统
Cortex®-X925 核心的 L2 内存系统通过 CPU 桥接器将核心与 DynamIQ™ Shared Unit-120 连接。它包括私有的 L2 缓存。L2 缓存是统一的,并且对集群中的每个 Cortex®-X925 核心都是私有的。以下表格显示了 L2 内存系统的特点。原创 2024-09-03 16:34:14 · 566 阅读 · 0 评论 -
【Arm Cortex-X925】 -【第八章】-L1 数据内存系统
Cortex®-X925 的 L1 数据内存系统负责执行加载和存储指令,以及特定指令,如原子操作、缓存维护操作和内存标记指令。它包括 L1 数据缓存和 L1 数据转换后备缓冲区 (TLB)。L1 数据内存系统执行加载和存储指令,并处理内存一致性请求。下表显示了 L1 数据内存系统的特点。L1 数据 TLB 也位于 L1 指令内存系统中。然而,它是内存管理单元 (MMU) 的一部分,详细信息请参见第 6 节 “内存管理”。原创 2024-09-03 16:33:35 · 560 阅读 · 0 评论 -
【Arm Cortex-X925】 -【第七章】-L1 指令内存系统
Cortex-X925 核心的 L1 指令内存系统负责提取指令和预测分支。它包括 L1 指令缓存和 L1 指令转换后备缓冲区 (TLB)。L1 指令内存系统向解码器提供指令流。为了提高整体性能和降低功耗,L1 指令内存系统采用了动态分支预测和指令缓存技术。下表显示了 L1 指令内存系统的特点。L1 指令 TLB 也位于 L1 指令内存系统中。然而,它是内存管理单元 (MMU) 的一部分,详细信息请参见第 6 节 “内存管理”。原创 2024-09-03 16:32:43 · 1042 阅读 · 0 评论 -
【Arm Cortex-X925】 -【第六章】-内存管理
内存管理单元(MMU)将输入地址转换为输出地址。这种转换基于 Cortex®-X925 核心内部寄存器和翻译表中可用的地址映射和内存属性信息。MMU 还控制内存访问权限、内存排序和每个内存区域的缓存策略。地址转换从输入地址到输出地址被描述为一个地址转换阶段。除了将输入地址转换为输出地址外,地址转换阶段还定义了输出地址的内存属性。在两阶段转换中,阶段 2 转换可以修改阶段 1 转换定义的属性。地址转换阶段可以被禁用或绕过,核心可以为禁用和绕过的转换阶段定义内存属性。原创 2024-09-03 16:31:43 · 732 阅读 · 0 评论 -
【Arm Cortex-X925】 -【第五章】-电源管理
性能定义功率 (PDP) 是一种电源管理功能,用于在一般工作负载中权衡峰值性能和减少功率包络。PDP 通过三种可能的激进程度值进行配置。当激进程度增加时,平均工作负载功率降低,但会导致更多的性能损失,这种损失因工作负载不同而异。PDP 对核心功率有影响。核心功率减少,效率提高。原创 2024-09-03 16:31:01 · 916 阅读 · 0 评论 -
【Arm Cortex-X925】 -【第四章】-时钟和复位
每个 Cortex-X925 核心有一个单一的时钟域,并接收一个单一的时钟输入。这个时钟输入由 CPU 桥中的架构时钟门控控制。为了提供动态功耗节省,Cortex-X925 核心支持层次时钟门控。它还支持温复位和冷复位。原创 2024-09-03 16:29:48 · 563 阅读 · 0 评论 -
【Arm Cortex-X925】 -【第二章】-Cortex-X925 core简介
Cortex-X925 核心是一款高性能、低功耗的产品,采用了 Armv9.2-A 架构。Armv9.2-A 架构在 Armv8‑A 架构的基础上进行了扩展,涵盖了 Armv8.7‑A。Cortex-X925 核心集成在 DSU-120 DynamIQ™ 集群内。它连接到 DynamIQ™ Shared Unit-120,该单元作为一个完整的互连系统,包含 L3 缓存和窥探控制。这种连接配置也适用于包含不同类型核心的系统,在这些系统中,Cortex-X925 核心充当高性能核心。原创 2024-09-03 14:35:41 · 1205 阅读 · 0 评论