DSP——从入门到放弃系列——多核导航器(持续更新)

news2024/9/27 10:05:28

1、概述

C6678中的数据移动非常复杂,多核导航器是C6678中协助完成在器件内高速数据包移动的外围设备。

2、组成

多核导航器由1个队列管理子系统(QMSS)+1个包DMA(Packet DMA PKTDMA)来控制和实现器件内的高速数据包移动。

QMSS(队列管理子系统)是一个硬件模块,它负责包队列的加速管理。可以通过向队列管理器写入32位描述符地址,将包加入到特定地址的包队列中。然后可以通过读取特定队列的地址,使包出队。

PKTDMA(Packet DMA)与普通DMA不同,它的目标地址由目标主体和空闲描述符队列索引决定,并不是一个绝对的存储地址。在接收模式中,PKTDMA传输负载数据到缓存中,并且将描述符加入到目标队列中。在发送模式,PKTDMA使描述符从发送队列中出队,从缓存中读取负载数据,并将负载数据发送到发送端口。

3、特征

对于Keystone I器件:

(1)1个硬件队列管理器,包括:

1、8192个队列(一些用于专门用途)

2、20个存储器区域(用于描述符存储)

3、2个连接存储器(Linking RAMs)

(2)几个PKTDMA,位于下列子系统

1、QMSS(基础结构或核到核的PKTDMA):

2、AIF2

3、BCP

4、FFTC(A,B,C)

5、NETCP(PA)

6、SRIO

(3)通过产生中断,通知多核主机

多核导航器具有以下一般特征:

(1)集中管理缓冲

(2)集中包队列管理

(3)协议独立的包级接口

(4)支持多通道/多优先级队列

(5)支持多空闲缓冲队列

(6)高效的主机配合减少主处理器需求

(7)零复制包切换

多核导航器为主机提供:

(1)每个通道1个不限制数量的包排队机制

(2)在包传输完成后,归还缓冲给主机

(3)在传输通道关闭后,修复队列缓冲

(4)分配缓冲资源给一个给定的接收端口

(5)在完成一个包接收后,传输缓冲给主机

(6)如果接收通道关闭,适度停止接收机制

上图中,QMSS包含一个队列管理器、PKTDMA基础结构和2个有定时器的累加器PDSP。硬件块(Hardware Block)是一个多核导航器外围设备(如SRIO)。

4、PDSP固件

在QMSS中有2个PDSP,每个PDSP都能运行执行QMSS相关功能的固件,如累加、QoS或事件管理。

累加固件(Accumulator Firmware)可以轮询选定数量的队列,查找已经推入其中的描述符。描述符将从队列中弹出并放在主机提供的缓冲区中。当列表变满或设置的时限到期时,累加器触发主机的中断以读取缓冲区中的描述符信息。还有个回收功能,可以自动将描述符回收到队列中,就像已经被Tx PKTDMA处理了一样。

QoS固件的职责是确保外围设备和主机CPU不会被数据包淹没。通过入口(Ingrass)和出口(Egress)队列的配置来管理,也被称为流量调整。

事件管理由开放事件管理器(Open Event Manager,OEM)软件处理,该软件是PDSP固件(Scheduler)和CorePac软件(Dispatcher)的组合。

5、Packet DMA

Packet DMA是一种DMA,其中数据目的地由一个目的地和空闲描述符队列索引决定,而不是绝对内存地址决定。

在接收模式下,PKTDMA获取一个空闲描述符,遍历该描述符以查找缓冲区,PKTDMA将有效负载传到缓冲区,并将该描述符放入目的地队列。

在发送模式下,PKTDMA从Tx队列弹出描述符,遍历描述符,从缓冲区读取有效负载,DMA将有效负载发送到发送端口。

与大多数DMA一样,PKTDMA主要关注点对点移动数据。通过正确初始化描述符、PKTDMA Rx/Tx通道和Rx流来完成PKTDMA编程。

6、队列管理器

队列用于在主机与系统中任何端口之间传递数据包时保存指向这些数据包的指针,队列在队列管理器中维护。

队列管理器是一个硬件模块,负责加速包队列的管理。通过将32位描述符地址写入队列管理器模块中的特定内存映射位置,将包添加到包队列。通过读取该特定队列的相同位置,数据包将被弹出队列。

主机包描述符:大小固定,包含一个指向数据缓存的指针。
单一包描述符:与主机包描述符不同,它将负载数据包含在了描述符内
主机缓存描述符:主机缓存描述符用于链接到主机包描述符或者其他的主机缓存描述符。

7、包发送流程

  1.主机(Processor)感知到内存中的一个或多个数据块需要作为一个数据包传输。
  2.主机分配一个描述符(通常从发送完成队列获取),填充该描述符中的字段,以及负载数据。
  3.对于主机包描述符,主机根据需要分配和填充主机缓冲区描述符,以指向属于该包的任何剩余数据块。
  4.主机将数据包描述符的指针写到队列管理器内的特定内存映射位置,该位置对应于所需的DMA通道的一个传输队列。
  5.DMA控制器从队列管理器中读取包描述符指针和描述符的大小信息。
  6.DMA控制器从存储器中读取包描述符。
  7.当包的所有数据都传输完成时,DMA将把指向包描述符的指针写到数据包描述符的返回队列管理器或者返回队列编号字段中指定的队列。
  8.在写入包描述符指针之后,队列管理器将使用状态行来向其他端口/处理器/prefetcher块指示发送完成队列的状态。当队列为非空时,就设置这些状态行
  9.主机响应队列管理器的状态更改,并根据需要对包执行回收。

8、包接收流程

 1.当在一个给定的通道上接收包时,端口将首先从FDQ(空闲描述符队列)获取空闲描述符,之后开始接收数据,并将数据填充到缓存中。
 2.对于主机包,该端口将根据需要获取额外的描述符+缓冲区。
 3.对于单体包,端口会在SOP(包首)偏移之后连续写,直到EOP(包尾)时停止。(主机必须确定包的长度不要超过上限,否则会覆盖下一个描述符。)
4.在整个包接收过程中,PKTDMA会将包描述符写到存储区域,然后将包描述符指针写到合适的接收队列中。
5.队列管理器负责向使用了状态线的其他端口或嵌入式处理器告知接收队列的状态。当队列不为空时,就会设置这些状态线。
6.主机响应队列管理器的状态更改,并根据需要对包执行回收。

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

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

相关文章

Arthas mc(Memory Compiler/内存编译器 )

文章目录 二、命令列表2.2 class/classloader相关命令2.2.2 mc (Memory Compiler/内存编译器 )举例1:可以通过-d命令指定输出目录:mc -d /temporary/tmp /temporary/tmp/AccountController.java举例2:通过--classLoade…

SpringBoot-全局处理异常,时间格式,跨域,拦截器,监听器

1.全局异常处理 使用ControllerAdvice与ExceptionHandler注解 /*** 全局异常处理程序** author * date */ ControllerAdvice ResponseBody public class GlobalExceptionHandler {ExceptionHandler(Exception.class)public JsonResult handleException(Exception e) {e.print…

Vue3 中 this 一分钟了解

Vue3 中 this 在Vue3的开发过程中,this的使用方式和Vue2有着显著的不同,特别是在组合式API(Composition API)的引入后。本文将深入探讨Vue3中this的使用,解析其底层源码,并探讨这种设计背后的原因&#xff…

Heart Animated Realistic 心脏运动模型素材带动画

Realistic Heart具有两个多边形质量的网格,具有详细的解剖结构,并配有高清纹理2048x2048,在高低多边形网格上具有高清法线贴图,可在教育、游戏和虚拟现实场景中获得更好、更真实的效果。 还具有完整的心动周期。 下载:​​Unity资源商店链接资源下载链接 效果图:

51单片机如何判断浮点数nan

使用这个函数进行判断 帮助信息内的描述如下 _chkfloat_ #include <intrins.h> unsigned char _chkfloat_ (float val); /* number for error checking */ Description: The _chkfloat_ function checks the status of a floating-point number. Return Value: The…

短视频去水印解析api接口使用文档

短视频去水印解析api接口&#xff0c;支持各大平台短视频和图集。 请求示例&#xff1a;https://www.dspqsy.vip/spapi?key密钥&url短视频链接 返回数据格式&#xff1a;JSON 请求方式&#xff1a;GET/POST 请求参数&#xff1a;url (短视频分享的URL) PHP 源码&…

C语言数组探秘:数据操控的艺术【下】

承接上篇&#xff0c;我们继续讲数组的内容。 八.二维数组的使用 当我们掌握了二维数组的创建和初始化&#xff0c;那我们怎么使用二维数组呢&#xff1f;其实二维数组访问也是使用下标的形式的&#xff0c;二维数组是有行和列的&#xff0c;只要锁定了行和列就能唯一锁定数组中…

Race Karts Pack 全管线 卡丁车赛车模型素材

是8辆高细节、可定制的赛车,内部有纹理。经过优化,可在手机游戏中使用。Unity车辆系统已实施-准备驾驶。 此套装包含8种不同的车辆,每种车辆有8-10种颜色变化,总共有75种车辆变化! 技术细节: -每辆卡丁车模型使用4种材料(车身、玻璃、车轮和BrakeFlare) 纹理大小: -车…

屏幕活动保存到NAS

目录 一、套件选择 二、员工机准备 1、下载安装ffmpeg 2、安装运行rtsp-simple-server 3、生成桌面流 4、接收查看桌面变化 三、NAS端配置 1、安装套件 2、配置Surveillence Station 3、实时监看 4、历史记录查看 5、录像文件操作 四、总结 朋友的朋友找上我,说到…

网络安全专业,在校大学生如何赚外快,实现财富自由?零基础入门到精通,收藏这一篇就够了

如今&#xff0c;计算机行业内卷严重&#xff0c;我们不找点赚外快的路子这么行呢&#xff1f; 今天就来说说网络安全专业平时都怎么赚外快。 一、安全众测 国内有很多成熟的src众测平台&#xff0c;如漏洞盒子、火线众测、补天、CNVD、漏洞银行等。一些大厂也有自己的src&a…

大厂必问 · 如何防止订单重复?

在电商系统或任何涉及订单操作的场景中&#xff0c;用户多次点击“提交订单”按钮可能会导致重复订单提交&#xff0c;造成数据冗余和业务逻辑错误&#xff0c;导致库存问题、用户体验下降或财务上的错误。因此&#xff0c;防止订单重复提交是一个常见需求。 常见的重复提交场…

Dapper介绍及特性

一、Dapper介绍及特性 Dapper是一个.NET平台上的轻量级对象关系映射&#xff08;ORM&#xff09;工具&#xff0c;它通过扩展IDbConnection接口&#xff0c;提供了一系列的扩展方法来执行SQL查询并将结果映射到.NET对象中。Dapper以其高性能和简单易用著称&#xff0c;特别适合…

springboot中有哪些方式可以解决跨域问题

文章目录 什么是跨域解决方案CrossOrigin注解实现WebMvcConfigurer接口CorsFilter过滤器如何选择&#xff1f; 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 Talk is cheap &#xff0…

Keepalived+Nginx 高可用集群(双主模式)

1.基础环境配置 [rootlb1 ~]# systemctl stop firewalld # 关闭防火墙 [rootlb1 ~]# sed -i s/^SELINUX.*/SELINUXdisabled/ /etc/sysconfig/selinux # 关闭selinux&#xff0c;重启生效 [rootlb1 ~]# setenforce 0          …

计算机毕业设计 基于Hadoop的智慧校园数据共享平台的设计与实现 Python 数据分析 可视化大屏 附源码 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

深度拆解:如何在Facebook上做跨境电商?

国内社交媒体正在逐渐兴盛&#xff0c;海外也不例外。在数字营销的新时代&#xff0c;Facebook已成为跨境电商不可或缺的平台之一。通过Facebook的巨大流量&#xff0c;卖家可以更好的触及潜在消费者&#xff0c;以实现销售增长。本文就深度拆解一下&#xff0c;卖家如何利用Fb…

STM32基础学习笔记-DHT11单总线协议面试基础题7

第七章、DHT11: 单总线协!议 常见问题 1、DHT11是什么 &#xff1f;有什么特性 &#xff1f; 2、单总线协议是什么 &#xff1f;原理 &#xff1f;DHT11的单总线协议的组成 &#xff1f; ## 1、DHT11定义 单总线协议是一种用于在多个设备之间进行通信的协议&#xff0c;所有…

从 Shapley 到 SHAP — 数学理解

如何计算 SHAP 特征贡献的概述 假设你(玩家 1)和朋友(玩家 2)参加了一场 Kaggle 比赛,你最终赢得了 10,000 元的一等奖。现在,你想公平地分配这笔钱。你的朋友建议你平分。但是,你的超参数调整技能更出色。你相信你应该得到更大的份额,因为你为团队做出了更多贡献。考虑…

LeetCode每日一练 —— 88. 合并两个有序数组

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 排列。 思路&#xff1a;用 下标充当指针&#xff0c;…

排序--希尔排序

希尔排序介绍 希尔排序核心思想就是:1,分组;2,直接插入排序:越有序越快 希尔排序就是多次利用直接插入排序的一个排序算法. 希尔排序的算法思想:间隔式分组,利用直接插入排序让组内有序,然后缩小分组再次排序,直到组数为1希尔排序的理论基础就是直接插入排序越有序越快; 希尔排…