ZYNQ ARM核之SCU

article/2025/9/24 17:14:36

        Snoop Control Unit,窥探控制单元,详情见UG585。SCU主要是解决ARM的L1和L2的缓存协调(因为两个processor的缓存是共用的)和AXI总线的ACP存取的,也就是DMA等高速中断需求的外设。

         SCU 块将两个 Cortex-A9 处理器连接到内存子系统,并包含智能管理两个处理器和 L2 缓存之间的数据缓存一致性。这块负责管理互连仲裁、通信、缓存和系统Cortex-A9 处理器的内存传输和缓存一致性。 The APU also exposes the capabilities of the SCU to system accelerators that are implemented in the PL through the accelerator coherency port (ACP) interface。该接口允许 PL 主机共享和访问处理器缓存层次结构。这里提供的系统一致性不仅提高了性能,但也降低了维护所涉及的软件复杂性每个操作系统驱动程序内的软件一致性。

        SCU 模块通过高速缓存一致性总线与每个 Cortex-A9 处理器通信(CCB) 并管理 L1 和 L2 缓存之间的一致性。 SCU 支持 MESI通过避免不必要的访问,提供更高的电源效率和性能系统访问。The block implements duplicated 4-way associative tag RAMs acting as a local
directory that lists coherent cache lines held in the CPU L1 data caches。该目录允许 SCU以极快的速度检查数据是否在 L1 数据缓存中,并且不会中断处理器。此外,只能过滤对共享数据的处理器的访问。

        SCU 还可以将clean的数据从一个处理器缓存复制到另一个,从而无需主存储器访问以执行此任务。 此外,它可以在处理器,跳过共享状态并避免与回写相关的延迟。

重要提示:需要注意的是,Cortex-A9 不保证 L1 Cache之间的指令一致性,因为处理器无法直接修改 L1 内容。

地址过滤:
SCU 的功能之一是过滤由处理器和ACP 基于它们的地址并将它们相应地路由到 OCM 或 L2 控制器。 SCU内地址过滤的粒度为1MB。

总结一下:

SCU通过AXI接口将一至四个Cortex-A9处理器连接到存储器系统。

SCU功能是:

1、在Cortex-A9处理器之间维护数据Cache的一致性

2、初始化L2 AXI存储器访问

3、在请求L2访问的Cortex-A9处理器之间仲裁

4、管理ACP【译者注:加速器一致性端口】访问。

注:Cortex-A9 SCU不支持对指令Cache一致性的硬件管理。

SCU实现了对ARM架构安全扩展的支持。

独立的CPU事件监视器可以被配置用于收集对SCU操作的各类事件统计信息。

 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上的ARREADYSAWREADYS以及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禁止。这是默认设置。

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模式,并参与一致性

参考:

ZYNQ双核A9的SCU - Snoop Control Unit(2022-01-09) - ZYNQ/FPGA/CPLD - 硬汉嵌入式论坛 - Powered by Discuz! (armbbs.cn)

ARM Cortex-A9 MPCore手册——窥探控制单元(Snoop Control Unit) - zenny_chen - 博客园


http://chatgpt.dhexx.cn/article/f2YRwyxW.shtml

相关文章

ZYNQ开发系列——PS开发之HelloWorld

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列——PS开发之HelloWorld 前言外设接口SDK建立工程相关操作记录前言 俗话说一日不见,如隔三秋。两年没搞PS的开发,居然连HelloWorld怎么出来都不记得了,可见知识记录的重要性,知识真的是有保…

ZYNQ开发系列——PS响应PL中断请求

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列——PS响应PL中断请求 前言中断的设置PS部分代码前言 PS和PL的交互中,还有一个中断没有讲到,在《从零开始研发GPS接收机连载》中,将会有两个中断,一个中断是505us中断,一个中断是10ms中断…

ZYNQ PS简介

ZYNQ 实际上是一个以处理器为核心的系统,PL 只是它的一个外设。Zynq-7000 系列的亮点在于它包含了完整的 ARM 处理器系统,且处理器系统中集成了内存控制器和大量的外设,使 Cortex-A9 处理器可以完全独立于可编程逻辑单元。而且实际上在 ZYNQ …

Zynq-7000 AMP运行模式下的软件切换及多版本固化运行

Zynq平台AMP运行模式下的软件切换及多版本固化运行 1. Zynq双裸核AMP运行环境构建 1 1.1 Zynq架构概要 1 1.2 Zynq启动与配置 2 1.2.1 启动流程概述 3 1.2.2 PS硬件启动阶段 3 1.2.3 PS软件启动阶段 4 1.2.4 启动文件构成 4 1.2.5 启动模式 4 1.2.6 BootROM的执行 5 1.2.7 FSB…

ZYNQ-定时器中断使用

学习内容 本文首先介绍了ZYNQ的定时器的相关内容,并学习使用ZYNQ芯片中的定时器进行操作测试。 开发环境 vivado 18.3&SDK,PYNQ-Z2开发板。 定时器简介 介绍 ZYNQ有两个Cortex-A9处理器,每个Cortex-A9处理器都有自己的专用32位计时…

zynq-1

https://www.youtube.com/watch?vVs0h0kue7p4&listPL4D6H9w4Ihdp0YRExoQXfbVMRL1GgEPCm

zynq7000 中断原理分析及IO中断解析

Zynq 7000 中断分析 文章目录 Zynq 7000 中断分析GIC及中断机理Crotex-A9常用汇编指令Zynq中断控制 GPIO中断控制单IP双通道单IP多位双IP中断源 GIC及中断机理 Crotex-A9常用汇编指令 类型指令描述备注内部数据传输指令MOV R0 R1R1 2 R0#0xFF:立即数:MOV R0, #0xF…

ZYNQ之FPGA 片内RAM读写测试实验

文章目录 前言一、添加RAM IP核二、编写测试程序三、添加ILA四、分配管脚五、Simulator仿真六、硬件调试总结 前言 本实验的主要内容是介绍如何使用 FPGA内部的RAM以及程序对该RAM数据的读写操作。Vivado软件中提供了RAM的IP核 , 我们只需通过IP核例化一个RAM,根据…

ZYNQ-XADC使用

学习内容 本文首先介绍了ZYNQ的XADC的相关内容,并学习使用ZYNQ芯片中的XADC测量芯片内部的温度电压等参数,然后进行串口打印输出。 开发环境 vivado 18.3&SDK,PYNQ-Z2开发板。 XADC介绍 简介 Xilinx模拟信号转换模块,称…

ZYNQ SDK开发调试踩坑指南

关注星标公众号,及时获取更多技术分享~ 作者 | 冰茶奥利奥 微信公众号 | 嵌入式电子创客街 目录 坑1:裸机Ps串口收数问题 坑2:多个中断不能同时使用问题 坑3:block design中DDR3的选择 坑4:新板子能够检测到芯片&…

万变不离其宗之ZYNQ启动介绍

1、概述 ZYNQ 的详细介绍参考 XILINX 官方文档 UG585,在了解了 ZYNQ 的基本架构组成和丰富的资源后,下一步便是分析他的启动流程,以便更好的认识 ZYNQ 并开始开发工作; 关于 ZYNQ 启动方面的描述,这里我觉得涉及到几个…

ZYNQ入门

目录 一、ZYNQ简介 二、vivado工程 ①创建工程 ②添加设计文件 ③生产顶层HDL模块 ④生成 Bitstream 文件并导 三、vitis工程 ①启动vitis ②创建工程 ③编译与下载 一、ZYNQ简介 ZYNQ 是赛灵思公司(Xilinx)推出的新一代全可编程片上系统&#x…

ZYNQ架构

ZYNQ 首先,我们来了解传统的SOC架构,一般使用 ARM 作为主控,通过 ARM 的外设并行 RAM 类总线外挂 FPGA ,使用 FPGA 来做高速的数据采集或者运算,因为FPGA 有灵活性好,资源丰富,可反复编程&#…

zynqmp soc 移植vxWorks 7

1.使用worksbench4创建vsb工程; 2.使用worksbench4创建vip工程; 3.修改设备树文件,根据硬件电路选择对应的UART; 4.tftp引导启动;

ZYNQ开发系列——ZYNQ系统的搭建

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列——ZYNQ系统的搭建 DDR设置FLASH设置UART设置网口设置当我们有一个要用ZYNQ做的项目时,首先当然是把其最小系统搭建起来。这个最小系统可以交付给开发PS的同事开发裸机程序/RTOS实时操作系统/…

ZYNQ之高速AD/DA验证实验

文章目录 前言一、ADDA模块介绍二、添加ROM IP核三、添加ILA IP核四、编写测试程序五、管脚分配六、连接开发板测试总结 前言 本实验是高速AD/DA验证实验,将使用高速DA芯片实现数模转换,产生正弦波模拟电压信号,并通过高速AD芯片将模拟信号转…

ZYNQ - 嵌入式Linux开发 -10- ZYNQ启动流程分析

FSBL启动准备工作 在静态情况下,Boot.BIN启动文件存放在SD卡或QSPI等存储介质中,然后Boot.BIN文件中已经包含了FSBL代码,也就是说FSBL代码已经集成在了Boot.BIN文件中,所以FSBL代码也是存放在Boot .BIN文件中。 如果要启动FSBL代…

初识ZYNQ结构

本文介绍了zynq的结构,简述了PS中的APU。 处理器系统 所有的 Zynq 芯片都有相同的基本架构。作为处理器系统的基础,所有的芯片都包含了一颗双核 ARM Cortex-A9 处理器。这是一颗 “ 硬 ” 处理器 —— 它是芯片上专用而且优化过的硅片元件。 作为比较…

zynq中断

在zynq中选择中断信号后: 只能看到一个[0:0]的向量,完全无法对应中断号: 且属性栏目没有配置选项,一般可以看到有些连接图如下: 如果看成最低位的话就是61,那么其它中断号怎么使用呢:查到的资料如下&#x…

ZYNQ基础知识

1.ZYNQ介绍 全称为Zynq-7000 All Programmable Soc 1.Zynq是赛灵思(Xilinx)推出的新一代全可编程片上系统,将处理器的软件可编程性和FPGA的硬件可编程性完美结合。具有较强的系统性能、灵活性与可扩展性。 2.旨在为视频监控、汽车驾驶员辅助…