硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1466|回复: 7
收起左侧

ZYNQ双核A9的L1 Cache介绍,初步来看和M7的Cache差不多

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106841
QQ
发表于 2021-11-24 00:08:51 | 显示全部楼层 |阅读模式
整理翻译自ZYNQ的参考手册,学习这个东西就是烧脑子。

双核A9的每个核都有32KB的数据Cache和指令Cache,关于L1 Cache的特性如下:

1、每个Cache的开关可以通过操作SCB寄存器实现。
2、A9内核的 L1 Cache 由多行内存区组成,每行有 32 字节,每行都配有一个地址标签。Cache 是每 4 行为一组,称为 4-way set associative。
3、L1 Cache支持4KB,64KB,1MB和16MB的虚拟内存页。
4、L1 Cache有64bit接口可以到整个内核和AXI总线接口。
5、Cache替换策略是伪循环或伪随机, victim counter在未命中时读取,而不是在分配时读取,并在分配时递增。无效行优先于victim counter被替换。
6、在高速Cache未命中时,首先执行高速缓存的关键字填充。
7、为了降低功耗,通过利用Cache操作的顺序特性。 如果缓存读取在前一个缓存读取之后,并且读取在同一Cache Line,只有先前读取的内容被访问。
8、两个L1 缓存都支持奇偶校验。
9、所有内存属性都导出到外部内存系统(意思应该是所有外部内存都支持标准内存属性)
10、支持TrustZone 安全性将安全或非安全状态导出到Cache和内存系统。
11、在 CPU 复位时,两个 L1 Cache的内容都被清除以符合安全要求。


在使用它们之前,用户必须使指令缓存、数据缓存和 BTAC 无效化。 不需要使主 TLB 无效,即使出于安全原因建议这样做。 这个确保与处理器的未来版本兼容。

L1 指令缓存ICache负责提供指令流给Cortex-A9。 L1 I-Cache 直接连接到预取指令单元。 L1指令缓存是虚拟索引和物理标记的。

L1 数据缓存DCache负责保存 Cortex-A9 使用的数据。 L1 DCache 的主要特性包括:

(1)DCache 是非阻塞的,因此加载/存储指令可以继续命中Cache,由于先前的Cacche读/写未命中,它正在从外部存储器执行分配。数据缓存支持四个未完成的读取和四个未完成的写入。

(2)CPU 最多可支持四个未完成的预加载 (PLD) 指令。然而,明确的加载/存储指令具有更高的优先级。

(3)Cortex-A9 加载/存储单元支持预测性数据预取,它监视程序的访问顺序,并开始获取下一个预期的指令。此功能在 cp15 辅助控制寄存器(DP 位)中启用。这可以在分配前丢弃预取的行,PLD 指令具有更高的优先级。

(4)数据缓存支持两个 32 字节行填充缓冲区和一个 32 字节eviction缓冲区。

(5)Cortex-A9 带有四个具有数据合并功能的 64 位插槽的存储缓冲区。

(6)数据Cache读取未命中和写入未命中都是非阻塞的,最多有四个未完成支持数据缓存读取未命中和最多四个未完成的数据缓存写入未命中。

(7) APU 数据缓存使用 MESI 算法提供完整的监听一致性控制。

(8)Cortex-A9 中的数据Cache包含 LDREX/STREX 的本地加载/存储独占监视器同步。这些指令用于实现信号量。独占监视器仅处理一个地址,具有八个字或一个Cache Line粒度。因此,避免交错 LDREX/STREX 序列并始终执行 CLREX 指令作为任何上下文切换。

(9)DCache 仅支持write-back/write-allocate策略。Write-through and write-back/nowrite-allocate 策略不支持。

(10)L1 DCache 支持与L2 Cache相关的独占操作。独占操作意味着缓存行仅在 L1 或 L2 缓存中有效,并且永远不会同时在两者中时间。 L1 中的行填充会导致该行在 L2 中被标记为无效。同时,驱逐一个来自 L1 的行会导致该行在 L2 中分配,即使它不是脏的。




回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106841
QQ
 楼主| 发表于 2021-11-24 00:09:30 | 显示全部楼层
初始化顺序
QQ截图20211124000928.png
回复

使用道具 举报

23

主题

1406

回帖

1475

积分

至尊会员

积分
1475
发表于 2021-11-24 09:21:23 | 显示全部楼层
DCache 仅支持write-back/write-allocate策略。Write-through and write-back/nowrite-allocate 策略不支持。


这条跟M7不太一样,还有就是M7没有lockdown锁功能。
代码不规范,亲人两行泪!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106841
QQ
 楼主| 发表于 2021-11-24 09:24:59 | 显示全部楼层
missfox 发表于 2021-11-24 09:21
这条跟M7不太一样,还有就是M7没有lockdown锁功能。

M7的话,write-back/write-allocate和Write-through and write-back/nowrite-allocate都支持

而lockdown锁功能确实没有。
回复

使用道具 举报

2

主题

23

回帖

29

积分

新手上路

积分
29
发表于 2021-11-24 09:41:26 | 显示全部楼层
两者程序员写代码用起来差不多,但底层硬件实现应该大有不同,毕竟一个是虚拟内存架构(vmsa),一个是pmsa, 比如a9 L1 Icache 是通过虚拟的index 查找 物理的tag
cache 锁定这块,a9 有外置的 L2 cache(pl310)可以实现锁定,对于 L1 cache 锁定,我只看那本厚厚的架构手册似乎有讲,但不知道怎么实现
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106841
QQ
 楼主| 发表于 2021-11-24 09:48:54 | 显示全部楼层
luguan1997 发表于 2021-11-24 09:41
两者程序员写代码用起来差不多,但底层硬件实现应该大有不同,毕竟一个是虚拟内存架构(vmsa),一个是pmsa,  ...

谢谢,等进入实际操作阶段了,我再结合代码调试下。

当前先把各个知识点都整理出来捋顺了,然后逐个击破。
回复

使用道具 举报

39

主题

929

回帖

1051

积分

至尊会员

积分
1051
发表于 2021-11-27 17:58:01 来自手机 | 显示全部楼层
有说法M7是A9的简化版。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106841
QQ
 楼主| 发表于 2021-11-27 20:14:59 | 显示全部楼层
ghslfgkkl88 发表于 2021-11-27 17:58
有说法M7是A9的简化版。

有点这个意思,区别的地方是现在M7内核外接的总线架构版本高一些。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-7 08:42 , Processed in 0.224356 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表