ZYNQ ARM核之SCU

2023-11-10

        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 - 博客园

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ZYNQ ARM核之SCU 的相关文章

  • 听说Zynq - 手把手教你建立第一个工程

    概述 ZYNQ 是赛灵思公司 Xilinx 推出的新一代全可编程片上系统 APSoC 它将处理器的软件可编程性与FPGA的硬件可编程性进行完美整合 注意 1 ZYNQ 是由两个主要部分组成的 一个由双核 ARM Cortex A9 为核心构
  • 听说Zynq-手把手教你自定义ip核并调用

    概述 小编最近在研究Zynq 因为对其相对陌生 在探索过程中也遇到了不少坑 这里将如何创建IP核并调用的方法步骤总结记录 以免日后忘记 注意 环境 Vivado2018 2 开发板 digilent 迪芝伦 公司的ZYBO 创建IP核 创建
  • 听说Zynq-I/O详细信息

    概述 ZYNQ 是由两个主要部分组成的 一个由双核 ARM Cortex A9 为核心构成的处理系统 PS Processing nbsp System 和一个等价于一片FPGA的可编程逻辑 PL Programmable Logic 部分
  • ZYNQ移植vxworks系统

    版本 xff1a ZYNQ7010 xff0c VxWorks 6 9 ZYNQ PL端有灵活性好 xff0c 资源丰富 xff0c 可反复编程速度快的优势 xff0c 通过 PS的外设并行 AXI总线外挂 PL接口 xff0c 使用 FP
  • Zynq ZC702平台 QSPI + eMMC实现

    预备知识 xff1a UG821 The processor system boot is a two stage process Another boot mode supported through FSBL is eMMC boot
  • ZYNQ UltraScale+ MPSoC Linux + ThreadX AMP玩法

    ZYNQ UltraScale 43 MPSoC Linux 43 ThreadX AMP玩法 ZYNQ UltraScale 43 MPSoC与ZYNQ 7000架构比较目标 一 创建Linux1 修改kernel2 修改设备树编译 am
  • Xilinx ZYNQ FreeRTOS+Tracealyzer(移植)

    PL端配置 使用ZYNQ IP Core 打开串口 网口等所需接口 新手注意 xff1a 需要生成bit文件后 xff0c 并输出相应硬件平台 xff0c 网上教程很多 xff0c 请参考其它教程 PS端配置 1 创建任务 xff0c 注意
  • Xilinx ZYNQ 7000 HDMI

    High Definition Multimedia Interface HDMI 参考xilinx application note XAPP460 HDMI来自High Definition Multimedia Interface 高
  • zynq 在ubuntu下移植ubuntu操作系统

    米联客的配套的文件是osrc lab 1 配置路径 在setting64 sh中把路径给更改一下 这里就是 改成ubuntu 并运行surce settings64 sh 2 rootfs 执行脚本 cfg rootfs sh 然后make
  • zynq bootgen配置启动

    一 xff0c Zynq 7000 SoC 启动头文件 0x00 0x1F Arm 矢量表 由 Bootgen 使用虚拟矢量表填充 xff08 Arm 操作代码 0xEAFFFFFE xff0c 即用于捕获未初始化矢量的 branch to
  • xilinx zynq-7000 linux下rs422串口通信测试步骤

    这几天使用xilinx的zynq 7000系列调试rs422串口 xff0c 期间遇到不少问题 xff0c 好在最终调试完成 xff0c 在这里记录一下调试步骤 我用的soc型号是xc7z100 xff0c 板载了2个rs422外设 xff
  • Zynq Cache问题的解决方法

    在进行PS PL之间的DMA传输时 xff0c 不可避免会遇到Cache问题 今天在这里讲一下Cache的解决方法 其中参考了forums xilinx com的处理方法 首先解释为什么DMA会引入Cache问题 xff08 专业名称为Ca
  • 解决Xilinx Vitis 2020.1版本启动之后进入主页面无响应的结果

    一 问题描述 在启动 Xilinx Vitis 2021 1 时 无论是从 Xilinx Vivado 界面的 Launch Vitis 启动还是直接启动都会在启动后显示出主界面后未响应 其原因是 Windows 系统的 PATH 环境变量
  • ZYNQ QFLASH MX25L256 调试笔记

    该QFlash是32MB的 而ZYNQ的控制器是16MB的 所以想使用后半部分时 必须要使用4byte地址模式或者扩展模式 先调试扩展模式 在QFlash手册里面有一个写扩展模式命令 C5 写命令的时候 然后再读扩展模式寄存器 C8 就可以
  • PHY芯片的使用(三)在linux下网络PHY的移植

    1 前言 配置设备树请参考上一章 此次说明还是以裕太的YT8511芯片为例 2 需要配置的文件及路径 a 在 drivers net phy 目录下添加 yt phy c 文件 一般来说该驱动文件由厂家提供 b 修改 drivers net
  • Xilinx软件开发: 用仿真器在XSCT下加载u-boot

    XSCT介绍 XSCT全称叫做Xilinx Software Command Line Tool 顾名思义是Xilinx提供的软件命令行工具 完整的使用说明可以参考ug1208 xsct reference guide 我们平常调试裸机程序
  • ZYNQ平台在SDK下引导启动UBOOT

    ZYNQ芯片 Linux系统搭建完成后 希望通过QSPI Flash的方式来进行程序加载 QSPI Flash启动则需要烧录以下文件 BOOT bin fsbl elf uboot elf uImage linux内核 zynq board
  • ZYNQ产品生产拷机问题思考

    目前设计的ZYNQ产品支持QSPIFLASH SDka EMMC启动 主要启动方式主要有以下几种 全部启动文件存放在QSPIFLASH ZYNQ支持的QSPIFLASH为16MB大小 如果UBOOT 内核 设备树 文件系统全部存放在QSPI
  • 教程:在ZYBO板卡实现PL-PS交互

    目的 学会vivado PL PS协同开发流程 平台 ZYBO开发板 zynq 7010 clg400芯片 工具 Vivado 2014 4 功能 实现PL PS协同通信 PS通过AXI总线读取PL部分的GPIO状态 对应zybo的四个开关
  • 从零开始zynq linux AXI DMA传输

    本文从0开始叙述过程 使用的工具为vivado2016 4 sdk也是2016 4 准备工作 首先下载如下的目标文件 1 下载xilinx官方的bootloader文件 git clone https github com Xilinx u

随机推荐

  • DRM框架(vkms)分析(3)----connector->func && connector->helper_private的使用

    一 connector gt func drm connector funcs类型的对象实例 其中有些对象实例可直接使用helper函数 有些可以自定义 还有一些可以忽略掉不赋值的 struct drm connector funcs co
  • ubuntu12.04搭建android开发环境

    一直准备学一点Linux的东西 一直没有付诸行动 这个周末准备安装一下 做了将近半年的android开发 准备学一点关于框架和源码的东西 安装之前也百度谷歌了很多次 也看了网上不少的资料 总结一点 就是对于像我这种入门级的人来说 还是不够明
  • 5种创建Dataframe方法

    下面将简要介绍Dataframe的5种创建方法 由于输出结果比较冗余 这里将不会展示输出结果 读者可以自行赋值粘贴 最好使用jupyter运行 并查看结果 另外的 代码中有非常详细的注释 Dataframe创建方法一 import nump
  • 【网络】UDP协议详解

    目录 UDP的感性理解 UDP协议格式 UDP协议格式感性理解 UDP特点 UDP的缓冲区 UDP的感性理解 UDP的传输过程类似于寄信 假设你要写一封家书寄回家里 首先你要在信封上填写好寄件人和收件人的地址 其次在贴好邮票 最后将信件投放
  • java深拷贝循环单链表,JZ25-复杂链表的复制

    题目描述 输入一个复杂链表 每个节点中有节点值 以及两个指针 一个指向下一个节点 另一个特殊指针random指向一个随机节点 请对此链表进行深拷贝 并返回拷贝后的头结点 注意 输出结果中请不要返回参数中的节点引用 否则判题程序会直接返回空
  • 由栈和队列完成数组的逆置操作(C语言)

    将数组a 11 1 3 6 10 15 16 17 18 19 20 通过栈和队列实现元素逆置的算法 入栈 gt 出栈 gt 入队 gt 出队 include stdio h include stdlib h typedef int dat
  • LangChain 中的嵌入

    在自然语言处理 NLP 领域 嵌入已经成为游戏规则的改变者 它们使我们能够将单词和文档转换为计算机可以理解的数字 这些数字表示 称为嵌入 对于理解文本 分析情感和翻译语言等任务至关重要 本文探讨了LangChain中的嵌入 这是一个用于创建
  • windows上bug崩溃定位分析(Qt或者VS)

    任何情况下 都不能保证自己写的代码不会发生崩溃 崩溃不可怕 可怕的是无法定位哪里崩溃 特别是客户那边崩溃 开发者这边不崩溃 问题陷入僵局 自从有了下面这个神奇的代码 再也不怕了 以下代码亲自测试没问题 1 如果是在VC 中 那么只需要将下列
  • 干货系列三:一台服务器能承载多少人同时访问?

    有很多人都会问这个问题 服务器能承载多少人同时访问 这个问题其实是很难有一个非常准确的答案的 因为服务器能同时承载的在线人数是受到多方面因素共同影响的结果 比如带宽 服务器处理速度以及访问页面的大小等等因素 虽然很难有一个精确的答案 但是服
  • 60秒轻松计算出任意一年任意一天星期几?

    60秒轻松计算出任意一年任意一天星期几 一 提出问题 60秒就可以轻松计算出任意一年任意一天星期几吗 你相信吗 如果能算出 连脑神经专家都认为是神童 大家可以通过度娘搜索 张戈 自闭症 连人民网都有报道 有图为证 如何快速计算出任意一年任意
  • Spring Security详解

    第一节 Spring Security 简介 Spring 是一个非常流行和成功的 Java 应用开发框架 Spring Security 基于 Spring 框架 提供了一套 Web 应用安全性的完整解决方案 一般来说 Web 应用的安全
  • maven高级学习

    maven高级 一 idea创建maven项目 1 1 idea中创建maven web项目 1 2 idea中使用tomcat 1 3 插件和依赖的区别 二 依赖管理 2 1 依赖配置 2 2 依赖传递 2 2 1 依赖传递中的冲突问题
  • Yii Framework 开发教程(14) UI 组件 MaskedTextField示例

    CMaskedTextField为格式输入框 可以为文本框指定Mask限制用户可以出入的文本格式 如本例使用99 99 9999 可以只允许输入类似日期的文本 修改View 添加CMaskedTextField 组件 php view pl
  • java比较mysql两个数据库_用java实现操作两个数据库的数据

    1 首先需要在jdbc的配置文件里面配置两个数据库的连接 数据库1的配置 driverClassName com mysql jdbc Driver url jdbc mysql 地址 3306 数据库名 useUnicode true c
  • 【SQL入门系列二】SQLZOO 分组

    分组 5 SUM and COUNT 5 SUM and COUNT Aggregate functions SUM COUNT MAX AVG SUM 世界总人口 SELECT SUM population FROM world Afri
  • springboot整合ehcache

    springboot整合ehcache springboot版本 2 5 1 1 pom文件
  • 12、计算机图形学——几何(网格细分与网格简化)

    一 网格细分 1 1 概念 网格细分指的是将原有模型上的网格分成更多个网格 从而将模型变得更加精细 提高渲染出来的效果 让画面更加漂亮 下图就是一个网格细分的示意 左图是细分前的效果 右图是细分后的效果 可见 细分后的面数更多 模型更加精细
  • java将网络图片下载并压缩导出到本地

    java将网络图片下载并压缩导出到本地 package com example demo ChartGraphics test import org apache tools zip ZipEntry import org apache t
  • 使用VsCode搭建Node.js服务器开发环境

    使用VsCode搭建Node js服务器开发环境 在进行Node js服务器开发时 一个好的集成开发环境可以帮助您更快地编写代码 并且提高程序的效率 在此推荐安装配置VSCode作为Node js服务器开发环境 下面介绍安装配置过程 Ste
  • ZYNQ ARM核之SCU

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