【SOC】SoC架构系统总线的QoS管理——QoS generator

#工具文档理解#

QoS——Quality of Service

目录

一、概念

Master对于Latency的敏感性

流量控制和事务级概念

Splitting

Pending order IDs

数据包创建和传输的QoS

序列化


一、概念

这一部分描述了QoS机制如何平衡不同发起者的流量访问,以适应互连的有限可用资源。合理组织互连资源,如缓冲区、连线、NIU(网络接口单元)上下文等,通常会提高整体系统性能,并使满足个别流量的QoS要求变得更容易。

Master对于Latency的敏感性

将Master端分为三种类型:

  1. 实时性或延时关键性 :由时钟源进行采样的initiator,对延迟非常的敏感,如果超过缓冲的容量,那么传输就会fail。
    例:调制解调器的帧,Video的线频场频发生器是对延迟极其关键的初始端,视频显示的流量通常使用一般的视频线进行缓冲,有几微秒的容忍度,视频解码器可以缓冲好几个帧,所以可以容忍长达数百毫秒的延迟。
  2. 延时敏感的:在这一组中的master由于延迟会导致较低的性能
    例:单线程CPU是对延迟敏感的master,硬件多线程以及推测性的访问会屏蔽掉他们的敏感性。
  3. 最佳性能:对延时不敏感的,可以容忍其他master造成的delay。

流量控制和事务级概念

    QoS受到流量交互和访问共同下游目的地的竞争的影响。
    NoC技术包括多个特性,如burst的切分,限制挂起事务的数量等来防止master垄断共享资源。

Splitting

  切分可以提高QoS因为当initiator发出长写请求数据包或者长读响应数据包时,切分会减少多路复用时间,当数据包被一个仲裁器选择时,其他多路复用器的输入就会被保留,等待下一个仲裁周期。因此,如果不进行分割,其他initiator的QoS就会降低。

Pending order IDs

具有相同ID值的事务必须按照其请求的顺序进行响应,initiator NIU必须在收到响应之后根据请求重新关联它们,这就需要一个挂起事务的页表,其中链表指向具有相同ID的先前挂起事务的上下文,支持大量的挂起ID在逻辑延迟和面积上的花销是巨大的,一般情况下,建议将initiator端NIU配置为支持不超过所需挂起顺序ID的数量,以避免限制所连接的IP的性能。

数据包创建和传输的QoS

    一旦NIU处理了事务,产生的数据包通过FlexNoc传输拓扑由多路复用器路由,并在多路复用器上进行仲裁。

    并发性
    并发性是互联的一种属性,它允许多个访问同时发生,并发的级别取决于互连拓扑的类型。
    下面是一个2x2的共享总线拓扑和交叉开关拓扑
 
    在互联A中,initiator会仲裁访问目标的总线时间,并发的访问是不可能的。在具有来自多个initiator的高累计吞吐量的系统中,总线共享会导致限制性能的瓶颈。还要注意在互联A中,如果通过共享链路的流量被阻止向下游前进,那么其他需要通过共享链路的流量也会被阻断,因此,通过共享链路的流量之间存在很强的耦合效应,无论是在带宽上还是在流量控制上。
    在互联B中,initiator根据每个目标仲裁访问,多个initiator可以并发访问多个目标,因为并发访问消除了瓶颈,因此全交叉是理想的NoC拓扑,可以满足发起者的QoS
要求。
    然而,QoS必须与芯片物理实现的实用性相平衡,由于多路复用器逻辑和布线的数量随initiator和target数量而变化,对于大量的initiator或target,crossbar的资源花销太大,相比之下,共享总线拓扑的成本就比较低。
    多路复用级别
    通过互连传输的事务可以在多个级别上进行多路复用,多路复用的级别会影响每个事务的可用吞吐量,从而影响到QoS
    仲裁多路复用器和解路复用路由器在互联中的位置称为拓扑,如串行化、时钟速率、缓冲等。
    在下图中,两个拓扑(A和B)都有上游的源,在多路复用器符号的左边,这些源要经过仲裁才能访问右边的下游目的地。


在图中,A有个单级多路复用,因此所有源都获得了吞吐量的三分之一,拓扑B有两级多路复用,假设连续请求和所有仲裁的优先级相同,:
    两个源在第一级多路复用器进行仲裁时接收1/4的可用吞吐量。
    在第二级多路复用器仲裁的源获得更大的吞吐量,吞吐量的一半,提供给源的吞吐量变化随着源数量的增加而增加
    由于流量可以在每一级多路复用上被阻塞,因此最初沿着多路复用器树进一步争夺仲裁的源具有较低的平均延迟。
    多级多路复用不需要比单个多路复用器更多的逻辑面积或延迟,因此引入多级多路复用是分配吞吐量和将延迟分配给不同源的有效方法。

序列化

    序列化包括配置物理链路的字节宽度和用于携带包头部信息的时钟周期的数量,可以在NoC拓扑中的任何位置进行配置序列化。
    序列化策略
    为了降低逻辑和布线成本,序列化可以低带宽链路上窄化,但是窄序列化会导致头部开销损失,并且需要更多的数据传输周期,从而增加延迟。当延迟很严重并且完成数据传输所需的周期数很大时,更宽的序列化可以产生更好的QoS,在某些情况下,与第一个数据字并行传输报头可以减少一个时钟周期的延迟,但代价是额外的物理资源,当数据包中的字数与总事务相比很小时,序列化对延迟的影响可以忽略不计,因此,应该只根据需要配置序列化,以提供所需的带宽。

    序列化例子
下图是对一个8个字的传输的两种序列化的配置,


    配置A,它由一个周期的报头和四个周期的数据双字组成,一共需要5个周期来传输数据包。
    配置B,使用窄序列化,包含了两个周期的报头和9个数据字组成,一个需要10个时钟周期传输完成,是配置A的双倍。

  • 27
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值