Zynq的AMP开发注意事项之禁用L2 cache

本文深入探讨Zynq AMP架构中L2Cache的管理策略,特别是如何通过寄存器控制实现L2Cache在双核间的锁定,避免Cache竞争,提升系统稳定性。以ZYNQ7z202clg400-2创龙核心板为例,介绍了L2Cache在不同配置下的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

Zynq的AMP模式在开发过程中,cpu1应用程序的bsp工程的boot.s中,禁用了L2 cache。在这里,阐述一下原因:

博客主体参考自下文,并在此基础上进行适当修改

https://blog.youkuaiyun.com/Franceshaa/article/details/78663213


1.开发平台

硬件平台:ZYNQ7z202clg400-2的创龙核心板

软件平台:

Windows 64位环境下:

Vivado 2017.04版本+SDK 2017.04版本

    Linux环境下(Ubuntu 16.04):

Petalinux 2017.04版本

2.原理说明

首先,在AMP模式中,core 0与core 1共用512K L2 Cache,这势必会引起两个核的Cache竞争问题。
通常情况下,L2 Cache被core 0,core 1共享。那么会出现以下情况:
core 0的内存访问操作可能会清除core 1所使用的L2缓存内容,从而使core 1的软件性能有不确定性。
有时,我们需要为core 0 或core 1提供更多的确定性行为,尤其是架构为AMP时。
如图 2.1、图 2.2为SMP与AMP架构图。

图 2.1 SMP架构图

图 2.2 AMP架构图


3.L2 Cache的锁定

通过寄存器的控制可以将L2 Cache锁定在不同core上,这让用户可以将L2 Cache的功能保留在特定的core上。

(1)相关说明

第一:Cache way是分区的宽度,Zynq的L2 Cache有8 Cache ways。

第二:L2 Cache控制器只能被锁定8个不同的方式。

如图 3.1所示,在Zynq 7000中,Cortex-A9 MP核的64个AXI被分为8个可以锁定的组。

图 3.1分组
(2)具体配置

具体的配置说明请参考官方手册《UG585 - Zynq-7000 SoC Technical Reference Manual (ver1.12.2).pdf》,下载链接:https://download.youkuaiyun.com/download/ye1223/10811782

配置1:通常情况(L2 Cache 被core 0和core 1共享)

Reg9_d_lockdown0 = 0x0;

Reg9_1_lockdown0 = 0x0;

Reg9_d_lockdown1 = 0x0;

Reg9_1_lockdown1 = 0x0;

配置2:4-0-4方式,每个核用一半(core 0使用Cache way【0..3】;core 1使用Cache way【4..7】)

reg9_d_lockdown0 = 0xFFF0;

reg9_1_lockdown0 = 0xFFF0;

reg9_d_lockdown1 = 0xFF0F;

reg9_1_lockdown1 = 0xFF0F;

配置3:2-4-2方式(core 0使用Cache way【0..1】;core 1使用Cache way【6..7】;两个核共享Cache way【2..5】)

reg9_d_lockdown0 = 0xFFC0;

reg9_1_lockdown0 = 0xFFC0;

reg9_d_lockdown1 = 0xFF03;

reg9_1_lockdown1 = 0xFF03;

配置4:
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值