ARM Cortex-A9 MPCore手册——窥探控制单元(Snoop Control Unit)
这章描述了窥探控制单元(SCU)。它包含以下段落:
1、关于SCU
2、SCU寄存器
3、AMBA[译者注:高级微控制器总线接口(Advanced Microcontroller Bus Interface)]AXI[译者注:高级可扩展接口(Advanced eXtensible Interface)]主机端接口
4、AXI主机接口时序
5、加速器一致性端口
6、使用WFE/SEV与一个外部代理的事件通信
2.1 关于SCU
SCU通过AXI接口将一至四个Cortex-A9处理器连接到存储器系统。
SCU功能是:
1、在Cortex-A9处理器之间维护数据Cache的一致性
2、初始化L2 AXI存储器访问
3、在请求L2访问的Cortex-A9处理器之间仲裁
4、管理ACP【译者注:加速器一致性端口】访问。
注:Cortex-A9 SCU不支持对指令Cache一致性的硬件管理。
2.1.1 TrustZone扩展
SCU实现了对ARM架构安全扩展的支持。见SCU访问控制寄存器(SAC)P2-11
2.1.2 SCU事件监视
独立的CPU事件监视器可以被配置用于收集对SCU操作的各类事件统计信息。
2.2 SCU寄存器
表2-1展示了SCU寄存器。地址相对于SCU存储器映射区域的基地址,即PERIPHBASE[31:13]。所有SCU寄存器都可以以字节为单位进行访问并由来nSCURESET复位。
2.2.1 SCU控制寄存器
SCU控制寄存器的特征如下:
目的:
1、允许用PL310【译者注:PrimeCell二级Cache控制器】对L2投机地进行行填充
2、允许迫使所有连到端口0的设备
3、允许IC待机模式
4、允许SCU待机模式
5、允许奇偶校验支持
6、允许地址过滤
7、允许SCU
使用限制:
1、在安全状态下这个寄存器是可写的,如果SAC寄存器中的相关位置1
2、在非安全状态下这个寄存器是可写的,如果SAC以及SNSAC寄存器中的相关位置1
配置:在所有Cortex-A9多处理器配置中都可用
SCU控制寄存器介绍:
[位6] IC待机模式允许:当置1时,如果此时没有中断是未决的,并且没有处理器在执行一次读写请求,那么停止中断控制器时钟。
[位5] SCU待机允许:当置1时,如果此时所有处理器处于WFI模式,在ACP(如果实现的话)上没有未决请求,并且在SCU中没有剩余活动,那么SCU CLK被关闭。
当SCU CLK被关闭时,在ACP上的ARREADYS,AWREADYS以及DWREADYS被迫使为HIGH。当任一处理器离开WFI模式,或在ACP上有一个新的请求时,时钟被打开。
[位4] 迫使所有到端口0的设备允许:当置1时,所有来自ACP或AxCACHE = DV的处理器的请求被迫使在AXI主机端口M0上被发布。
[位3] 投机的行填充允许:当置1时,一致性的行填充请求被投机地并行发送到带有标签查找的PL310中。如果标签查找失败,那么已确认的行填充被发送到PL310,并更早地获得R数据,因为数据请求已经被投机请求所启动。这个特征只有当PL310在设计中存在时才能工作。
[位2] 奇偶校验打开:1=奇偶校验打开;0=奇偶校验关闭,这个是默认设置。
[位1] 地址过滤允许:1=地址过滤打开;0=地址过滤关闭。默认值为从复位退出时所采样到的FILTEREN的值。这个位总是为0,如果SCU在单主机端口配置中实现。
[位0] SCU允许:1=SCU允许;0=SCU禁止。这是默认设置。
2.2.2 SCU配置寄存器
SCU配置寄存器的特征是:
1、目的:——读总线上所连接的所有Cortex-A9处理器的标签RAM大小
——判定参与一致性的Cortex-A9处理器
——读总线上所连接的Cortex-A9处理器的个数
2、使用限制:此寄存器是只读的
3、配置:在所有Cortex-A9多处理器配置中可用
4、属性:见SCU寄存器中的寄存器概述,在P2-3
SCU配置寄存器功能描述:
标签RAM大小:最多四个CPU(CPU0~3);64KB Cache,每个标签RAM有256个索引;32KB Cache,每个标签RAM有128个索引;16KB Cache,每个标签RAM有64个索引。
CPU SMP:定义Cortex-A9处理器是处于对称多处理器(SMP)还是非对称多处理器(AMP)模式中;
0表示指定的Cortex-A9处理器处于AMP模式,并不参与一致性或是不存在
1表示指定的Cortex-A9处理器处于SMP模式,并参与一致性
2.2.3 SCU CPU电源状态寄存器