Zynq 7000 系列中的Interconnect(互联)简介

news2024/12/23 18:52:08

PS(处理器子系统)内部的互联结构包含了多个交换机,用于通过AXI点对点通道连接系统资源。这些通道负责在主机和从机客户端之间进行地址、数据和响应事务通信。该互联结构负责管理多个待处理的事务,并且为Arm CPU设计了低延迟路径,同时为PL(可编程逻辑)主控制器提供了高吞吐量和缓存一致的数据路径。

简单来说,这种互联结构在处理器子系统中起到了桥梁作用,它确保了各种系统资源之间的高效通信,并且针对不同的使用场景(如CPU或PL主控制器)进行了优化,以提供最佳的性能和效率。

1 互联

互联作为数据通信的主要机制,具有一系列关键特性。

1.1 互联是基于AXI高性能数据通道交换机

①Snoop控制单元(SCU)
Zynq系列器件中的SCU的地址过滤功能允许它根据地址信息来选择性地转发数据。当数据从AXI从端口流入时,SCU会检查数据的地址,并根据预设的规则或配置来决定是否将数据转发到AXI主端口。这有助于维护缓存一致性,确保不同处理器或设备访问同一内存位置时数据的正确性。

②L2缓存控制器
Zynq系列器件中L2缓存控制器的一个重要特性是其地址过滤功能。这一功能使得L2缓存控制器在从它的AXI从端口到AXI主端口的流量传输上表现得像一个开关。具体来说,当CPU需要访问某个数据时,L2缓存控制器会首先检查这个数据的地址是否在L2缓存中。如果地址匹配,控制器就会直接从L2缓存中读取数据并送给CPU处理,从而避免了从主内存中读取数据的较慢过程。如果地址不匹配,即数据不在L2缓存中,控制器则会从主内存中读取数据,并同时将这个数据块调入L2缓存中,以便后续的快速访问。

因此,L2缓存控制器管理L2缓存的访问和操作,优化数据访问速度,减少处理器对主存的依赖。

1.2 基于Arm NIC-301的互联交换机

①中央互联
作为整个系统的中心,连接和管理所有其他互联。

②对从设备的主互联
为从设备(如存储器或外设)提供与主设备(如处理器)的通信通道。

负责将来自中央互联的低速到中速流量切换到M_AXI_GP端口、I/O外设(IOP)以及其他块。它起到一个桥梁的作用,将中央互联与这些目标端口和组件连接起来,实现数据的传输和共享。

③对主设备的从互联
允许主设备(如处理器)与从设备(如存储器或外设)进行通信。

从互联侧将来自S_AXI_GP端口、DevC和DAP的低速到中速流量切换到中央互联。与主互联类似,从互联也扮演着桥梁的角色,将数据从源端口和组件传输到中央互联,进而实现与其他部分的通信。

④存储器互联
优化对存储器的访问,提高数据传输效率。

负责将来自AXI_HP端口的高速流量切换到DDR DRAM和片上RAM(通过另一个互联)。作为系统内存访问的关键通道,内存互联确保了处理器和其他主设备能够高效、快速地访问DDR DRAM和片上RAM中的数据。

⑤OCM互联
针对片上存储器(OCM)的特定优化互联。

负责将来自中央互联和内存互联的高速流量进行切换。OCM(片上存储器)是一种集成在处理器或系统芯片上的高速存储器,用于存储关键数据和指令,以加快访问速度。

⑥AHB和APB桥
允许AXI接口与其他总线标准(如AHB和APB)进行互操作。

1.3 PS-PL接口
PS-PL接口在Zynq-7000 SoC中扮演着连接处理系统(PS)和可编程逻辑(PL)的关键角色。具体来说,PS-PL接口包括多个信号线,用于实现PS和PL之间的数据传输、共享内存、中断控制等功能。
PS和PL之间通过多个AXI接口实现连接。这些AXI接口包括:

①加速器一致性端口(AXI_ACP)
在PL中的一个缓存一致从端口,连接到PS APU的一致性从端口,确保处理器和加速器之间的缓存数据一致性。

AXI_ACP为可编程逻辑主机提供了低延迟访问,并与L1和L2高速缓存具有可选一致性。从系统角度来看,ACP接口与APU CPU的连接性相似。由于这种紧密的连通性,在APU块之外,ACP直接参与资源竞争。

②AXI_HP
在PL中的四个高性能、高带宽从端口,它们在PS AXI互联上成为主端口,用于处理大量或高优先级的数据传输。

AXI_HP接口提供了PL(可编程逻辑)总线主设备到DDR和OCM(片上存储器)的高带宽数据路径。每个AXI_HP接口都包括两个FIFO缓冲区,分别用于读写流量。PL到存储器的互连将高速AXI_HP端口路由到两个DDR存储器端口或OCM。AXI_HP接口也被称为AFI(AXI FIFO接口),以强调其缓冲功能。

这些接口的主要设计目的是在PL主设备和PS存储器(包括DDR和片上RAM)之间提供一个高吞吐量的数据路径。

③AXI_GP
四个通用端口(两个主端口和两个从端口),用于处理一般的数据传输任务,提供更大的灵活性和可扩展性。

AXI_GP接口主要用于连接外部存储器或其他外设。其特性丰富,包括支持标准AXI协议、具有固定的32位数据总线宽度,以及主端口ID宽度为12位等。主端口具有发送8次读取和8次写入的能力,而从端口ID宽度为6位,并具备接受8次读取和8次写入的能力。

在性能上,AXI_GP接口直接连接到中央互联区的端口,然后再由中央互联区连接到OCM interconnect和存储器接口。与精心设计的AXI_HP接口不同,AXI_GP接口没有使用任何额外的FIFO缓冲。这意味着其性能受限于主互联和从互联的端口,因此并不旨在实现高性能。这些接口主要用于一般用途。

此外,连接到AXI通用端口(S_AXI_GP[1:0])的PL总线主控制器可以访问PS I/O外设,但无法访问CPU私有总线寄存器。这一特性使得AXI_GP接口在Zynq SoC的系统架构中发挥着特定的作用,为外部设备和PS I/O外设提供了灵活且高效的通信机制。

2 AXI ID

AXI ID是AXI(Advanced Extensible Interface)协议中的一个关键组成部分,用于标识和管理总线上的事务。

AXI ID是一个13位的标识符,其结构从最高有效位(MSB)到最低有效位(LSB)如下:

①三位用于标识互联的类型(如central、主机、从机等)。

②八位由主机提供,其宽度由所有主机中AXI ID的最大宽度确定。这意味着不同的主机可能有不同的AXI ID宽度,但在一个系统中,AXI ID的总位数是固定的(这里是13位),因此,如果某个主机使用较少的位数,那么它的AXI ID可能会在高位填充零。

③两位用于标识已识别互联的从机接口。

表5-4列出了从机能观察到的所有可能的AXI ID值。
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1627787.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spark 基础

/* Why Spark一、MapReduce编程模型的局限性1、繁杂:只有Map和Reduce两个操作,复杂的逻辑需要大量的样板代码2、处理效率低:2.1、Map中间结果写磁盘,Reduce写HDFS,多个Map通过HDFS交换数据2.2、任务调度与启动开销大3、…

Unity对应的c#版本

本文主要是记录一下unity已经开始兼容c#的版本和.net版本,以便更好的利用c#的特性。 c#和.net对应情况 微软已经将.net开发到.net 9了,但是unity的迭代速度远没有c#迭代速度快,已知unity最新的LTS版本unity2023已经兼容了c#9 可以在unity手册…

汽车底盘域的学习笔记

前言:底盘域分为传统车型底盘域和新能源车型底盘域(新能源系统又可以分为纯电和混动车型,有时间可以再研究一下) 1:传统车型底盘域 细分的话可以分为四个子系统 传动系统 行驶系统 转向系统 制动系统 1.1传动系…

中电金信:向“新”而行——探索融合架构的项目管理在保险行业的应用

近年来,险企在政策推动、市场牵引、自身发展、新技术应用日趋成熟等内外部因素的驱动下,积极投身到数字化转型的浪潮中。在拜访各类保险客户和合作项目的过程中,我们发现不少险企在数字化转型中或多或少都面临着战略如何落地、技术如何承接和…

Java 基础常见面试题整理

目录 1、java的基本数据类型有哪些?2、java为什么要有包装类型?3、String a "123" 和 String a new String("123") 区别?4、String、StringBuilder和StringBuffer的区别?5、如何理解面向对象和面向过程&…

第72天:漏洞发现-Web框架中间件联动GobyAfrogXrayAwvsVulmap

案例一:某 APP-Web 扫描-常规&联动-Burp&Awvs&Xray Acunetix 一款商业的 Web 漏洞扫描程序,它可以检查 Web 应用程序中的漏洞,如 SQL 注入、跨站脚本攻击、身份验证页上的弱口令长度等。它拥有一个操作方便的图形用户界 面&#…

C++系列-输入输出

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” C输入和输出 我们都知道C语言的输出是用printf函数来实现的&#xff0c;那么C呢&#xff0c;它的实现逻辑是什么呢&#xff0c;让我们一起来看一下&#xff0c; #include<i…

miniTry:Python实现web搜索(全自动+程序操控)

声明&#xff1a;本问给出了全部代码--可以复现--亲测有效 :) [ 代码为图片--> 强制自己去敲一次 又不多] 1.打开网站&#xff1a; 2.利用id去定位到我们要进行输入的内容&#xff08;bing可以直接进行搜索&#xff0c;而csdn需要登录&#xff0c;所以我们用csdn做演示&…

【论文速读】|理解基于大语言模型的模糊测试驱动程序生成

本次分享论文&#xff1a;Understanding Large Language Model Based Fuzz Driver Generation 基本信息 原文作者&#xff1a;Cen Zhang, Mingqiang Bai, Yaowen Zheng, Yeting Li, Xiaofei Xie, Yuekang Li, Wei Ma, Limin Sun, Yang Liu 作者单位&#xff1a;南洋理工大学…

elasticsearch 常用语法汇总

文章目录 前言elasticsearch 常用语法汇总1. 创建索引2. 检索索引信息3. 删除索引4. 文档操作4.1. 对blog_new索引指定文档ID新增4.2. 对blog_new索引不指定文档ID新增&#xff0c;随机文档ID:4.3. 获取文档4.4. 更新文档4.5. 删除文档 5. 查询5.1. 匹配查询5.2. 范围查询5.3. …

掌握TypeScript,成为前端高手(AI写作一键生成免费)

首先&#xff0c;这篇文章是基于笔尖AI写作进行文章创作的&#xff0c;喜欢的宝子&#xff0c;也可以去体验下&#xff0c;解放双手&#xff0c;上班直接摸鱼~ 按照惯例&#xff0c;先介绍下这款笔尖AI写作&#xff0c;宝子也可以直接下滑跳过看正文~ 笔尖Ai写作&#xff1a;…

免费获取!遗传算法+多目标规划算法+自适应神经模糊系统程序代码!

前言 遗传算法&#xff08;Genetic Algorithm&#xff0c;GA&#xff09;最早是由美国的 John holland于20世纪70年代提出&#xff0c;该算法是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型&#xff0c;通过数学的方式&#xff0c;将问题的求解过程转…

pyqt QSplitter控件

pyqt QSplitter控件 QSplitter控件效果代码 QSplitter控件 PyQt中的QSplitter控件是一个强大的布局管理器&#xff0c;它允许用户通过拖动边界来动态调整子控件的大小。这个控件对于创建灵活的、用户可定制的用户界面非常有用。 QSplitter控件可以水平或垂直地分割其包含的子…

靠生成式人工智能赚钱? 扎克伯格:再等几年吧

不用多说&#xff0c;AI人工智能就是2024年最热的技术&#xff0c;企业也希望通过AI技术大赚特赚。不过Meta CEO扎克伯格在公司2024年第一财季业绩会议上表示&#xff0c;从生成式人工智能中获利还需要几年时间。 R-C (1).jpg© 由 ITheat热点科技 提供 AI人工智能技术很多…

【数据结构与算法】:手搓顺序表(Python篇)

文章目录 一、顺序表的概念二、顺序表的实现1. 顺序表的创建1.1 扩容1.2 整体建立顺序表 2. 顺序表的基本运算算法2.1 顺序表的添加&#xff08;尾插&#xff09;2.2 指定位置插入2.3 指定位置删除2.4 顺序表的查找2.5 顺序表元素的索引访问2.6 顺序表元素的修改2.7 顺序表长度…

Java毕业设计 基于SpringBoot vue城镇保障性住房管理系统

Java毕业设计 基于SpringBoot vue城镇保障性住房管理系统 SpringBoot 城镇保障性住房管理系统 功能介绍 首页 图片轮播 房源信息 房源详情 申请房源 公示信息 公示详情 登录注册 个人中心 留言反馈 后台管理 登录 个人中心 修改密码 个人信息 用户管理 房屋类型 房源信息管理…

微信小程序:5.数据绑定

在Data中定义数据早wxml中进行数据使用 在data中定义数据 在页面对应的js对象中找到data&#xff0c;然后把数据进行定义即可 Page({data: {motto: Hello World,userInfo: {avatarUrl: defaultAvatarUrl,nickName: ,},hasUserInfo: false,canIUseGetUserProfile: wx.canIUse…

药房管理 T1072

#include<bits/stdc.h> using namespace std; int main(){int m,n;cin>>m>>n;int f[n];for(int i0;i<n;i)cin>>f[i];int count0;for(int i0;i<n;i){if(m>f[i]){mm-f[i];}else {count;}}cout<<count;return 0;}

【Redis 开发】缓存雪崩和缓存击穿

缓存问题 缓存雪崩解决方案 缓存击穿互斥锁逻辑时间基于互斥锁解决缓存击穿问题基于逻辑过期方式解决缓存击穿问题 缓存雪崩 缓存雪崩是指在同一时间段&#xff0c;大量的缓存key同时失效或者Redis服务器宕机&#xff0c;导致大量请求到达数据库&#xff0c;带来巨大压力 解决…

node.js egg.js

Egg 是 Node.js 社区广泛使用的框架&#xff0c;简洁且扩展性强&#xff0c;按照固定约定进行开发&#xff0c;低协作成本。 在Egg.js框架中&#xff0c;ctx 是一个非常核心且常用的对象&#xff0c;全称为 Context&#xff0c;它代表了当前 HTTP 请求的上下文。ctx 对象封装了…