laocuo1142   2023-06-10 19:25:49

Cortex-A7 处理器是一种由ARM公司推出的基于ARMv7-A架构的高能效处理器,从2012年底开始被广泛用于低成本、全功能入门级智能手机。ARM Cortex™-A7 MPCore™ 处理器是 ARM 迄今为止开发的最有效的应用处理器,它显著扩展了 ARM 在未来入门级智能手机、平板电脑以及其他高级移动设备方面的低功耗领先地位。Cortex-A7 处理器的体系结构和功能集与 Cortex-A15 处理器完全相同,不同之处在于,Cortex-A7 处理器的微体系结构侧重于提供最佳能效,因此这两种处理器可在 big.LITTLE 配置中协同工作,从而提供高性能与超低功耗的终极组合。

该处理器与为其他Cortex-A系列处理器开发的程序完全兼容,并借鉴了高性能Cortex-A15处理器的设计,采用了包括虚拟化、大物理地址扩展 (LPAE) NEON 高级 SIMD 和 AMBA 4 ACE 一致性等全新技术。并着重考虑了性能与功耗间的平衡。采用了28nm工艺的单个Cortex-A7 处理器的能源效率是65nm工艺下的ARM Cortex-A8 处理器(被用于2010-2012年间的的许多流行智能手机)的5倍,性能提升50%,而尺寸仅为后者的五分之一。相对于2011年主流智能手机,2013年上市的采用Cortex-A7处理器的手机,其CPU性能提升可高达20%而功耗降低60%。


(资料图片)

事实上,Cortex-A7处理器的体系结构和功能集与Cortex-A15处理器完全相同,不同这处在于,Cortex-A7处理器的微体系结构侧重于提供最佳能效,因此这两种处理器可在big.LITTLE(大小核大小核心伴侣结构)配置中协同工作,从而提供高性能与超低功耗的终极组合。单个Cortex-A7处理器的能源效率是ARM Cortex-A8处理器的5倍,性能提升50%,而尺寸仅为后者的五分之一。简单点说Cortex-A7处理器的特点是在保证性能的基础上提供了出色的低功耗表现。

Cortex-A 处理器运行模型

以前的 ARM 处理器有 7 中运行模型: User、 FIQ、 IRQ、 Supervisor(SVC)、 Abort、 Undef和 System,其中 User 是非特权模式,其余 6 中都是特权模式。但新的 Cortex-A 架构加入了TrustZone 安全扩展,所以就新加了一种运行模式: Monitor,新的处理器架构还支持虚拟化扩展,因此又加入了另一个运行模式: Hyp,所以 Cortex-A7 处理器有9 种处理模式(上电后默认进入SVC模式)。

除了 User(USR)用户模式以外,其它 8 种运行模式都是特权模式。这几个运行模式可以通过软件进行任意切换,也可以通过中断或者异常来进行切换。大多数的程序都运行在用户模式,用户模式下是不能访问系统所有资源的,有些资源是受限的,要想访问这些受限的资源就必须进行模式切换。但是用户模式是不能直接进行切换的,用户模式下需要借助异常来完成模式切换,当要切换模式的时候,应用程序可以产生异常,在异常的处理过程中完成处理器模式切换。

当中断或者异常发生以后,处理器就会进入到相应的异常模式种,每一种模式都有一组寄存器供异常处理程序使用,这样的目的是为了保证在进入异常模式以后,用户模式下的寄存器不会被破坏。

corter-a7一共有9种工作模式,分别如下:

1.用户模式(usr):Linux系统应用层程序都在该模式下执行,是非特权模式,不能进行处理器的模式切换。

2.快速中断模式(fiq):高优先级的中断模式,该模式下能快速地响应事件,有一些专业的寄存器,不需要备份,从而能快速地相应。

3.外部中断模式(irq):一个低优先级的中断模式,也是一个标准模式,Linux内核终中断通常都是使用该模式进行中断处理。

4.特权模式(svc):在系统复位或者是软中断触发会进入该模式,由该模式进行处理器模式的切换。

5.数据访问中止模式(abt):当发送存取异常的时候会进入该模式。

6.未定义指令中止模式(und):当CPU执行到一条不能识别的指令时会进入该模式,例如再ARM的板子上执行x86结构的程序就会进入该模式。

7.系统模式(sys):linux内核就运行在该模式下,系统模式和用户模式共用一套寄存器。

8.监控模式(mon):主要就是用来做安全和非安全模式之间的切换的。

9.虚拟化监控模式(hpy):用于扩展虚拟机的的。

Cortex-A7内核存储

STM32P1A有两级cache分别为L1和L2;L1又称为一级缓存,在这级cache中又分为1个32KB的数据cache和1个32KB的指令cache;L2又称为二级缓存其容量为256KB;

此外Cortex-A7所使用的架构是哈佛架构,即内存中数据和指令是分开存储的。