Zynq的AMP开发注意事项之禁用L2 cache
前言
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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Zynq的AMP开发注意事项之sdk_r
- 下一篇: ARM构架之cache初探