前言

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

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

https://blog.csdn.net/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.csdn.net/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:

Zynq的AMP开发注意事项之禁用L2 cache相关推荐

  1. Zynq的AMP开发注意事项之sdk_repo

    目录 前言 1.BSP工程说明 第一步:创建BSP工程,选择硬件平台.cpu核和支持的OS 第二步:BSP工程设置 (1)版本+库文件选择 (2)standalone配置 (3)drivers支持 ( ...

  2. 移动端开发注意事项、需要注意的问题、特殊属性、精灵图、座固定有自适应的布局

    一.移动端开发注意事项 网址:移动端开发注意事项 二.关于meta (一).常用的公共meta属性 1.viewport <meta name="viewport"conte ...

  3. hls fifo_【正点原子FPGA连载】第一章HLS简介--领航者ZYNQ之HLS 开发指南

    1)摘自[正点原子]领航者ZYNQ之HLS 开发指南 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手 ...

  4. input自适应_【正点原子FPGA连载】第十一章基于OV5640的自适应二值化实验-领航者ZYNQ之HLS 开发指南...

    1)摘自[正点原子]领航者ZYNQ之HLS 开发指南 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手 ...

  5. PHP 接口开发注意事项

    PHP 接口开发注意事项 PHP 接口开发注意事项 预先定义接口流程和逻辑,确认需求 在开发前首先确定流程,复杂的接口可以绘制流程图,并确保流程与需求一致: 使用统一的变量定义 无论是SDK还是Ser ...

  6. 分布式系统开发注意点_分布式系统开发注意事项

    分布式系统开发注意点 开发分布式软件系统时,要考虑许多因素. 如果您甚至不知道第一句话中我在说什么,那么让我为您提供一些见解,示例以及有关分布式系统的实例. 总览 分布式系统是指多个物理硬件设备与单独 ...

  7. 分布式系统开发注意事项

    开发分布式软件系统时,要考虑许多因素. 如果您甚至不知道第一句话中我在说什么,那么让我为您提供一些见解,示例以及有关分布式系统的实例. 总览 分布式系统是指多个物理硬件设备与单独的离散用户交互并通过这 ...

  8. 嵌入式软件开发注意事项一

    嵌入式软件开发注意事项一 1.首先对测试板进行各方面硬件性能的测试:电源测试,时钟测试等等.要确保硬件最基本的几个性能是正常的,否则后面真的无法进行软件的开发,因为如果你没有确保硬件的正确性,那么后面 ...

  9. cups源码下载 linux_【正点原子FPGA连载】第九章Linux显示设备的使用-领航者ZYNQ之linux开发指南...

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

最新文章

  1. AutoIt脚本在做自动化操作的时候,如何进行错误捕获?
  2. 国内maven库镜像(阿里云)
  3. Vue+DataTables warning:table id=xxxx -Cannot reinitialize DataTable.报错解决方法
  4. iOS的一些常用性能优化,和内存优化的方法
  5. C#CodeSmith代码批量生成模板制作经验分享
  6. No injector for custom defined data type的解决办法
  7. docker修改容器映射的端口_解密 Docker 挂载文件,宿主机修改后容器里文件没有修改...
  8. __invoke,try{}catch(){},microtime(),is_callable()
  9. 河南理工大学c语言报告封面,河南理工大学图书信息管理系统设计_纯c语言课程设计.doc...
  10. table 样式详解
  11. .NET 指南:构造器的设计
  12. 动画库tween.js
  13. 关于SESSION如何产生,由谁产生,保存位置的记录
  14. JAVA读取配置文件工具类
  15. 修改电脑微信提示音+dll文件编辑器
  16. 航天信息服务器共享单元,防伪税控主机共享服务器
  17. dell笔记本指示灯闪烁_解决笔记本电源灯一闪一闪问题【图文】
  18. 沪深300指数的跟踪基金排名
  19. 边境的悍匪—机器学习实战:第四章 训练模型
  20. 量子计算机:决胜21世纪的利器

热门文章

  1. Python-OpenCV 处理视频(一): 输入输出
  2. Activiti工作流引擎使用详解(一)
  3. 卷积神经网络CNN总结
  4. 性能指标TP99之我解
  5. java学习笔记7--抽象类与抽象方法
  6. 鸟哥的Linux私房菜(服务器)- 第四章、连上 Internet
  7. 深度学习(十)keras学习笔记
  8. SIFT特征及特征匹配:SIFT and feature matching
  9. 浅谈代码的执行效率(2):编译器的威力
  10. 编程之美-电梯调度算法方法整理