CN109995633B - 一种芯片及相关设备 - Google Patents

一种芯片及相关设备 Download PDF

Info

Publication number
CN109995633B
CN109995633B CN201711489892.6A CN201711489892A CN109995633B CN 109995633 B CN109995633 B CN 109995633B CN 201711489892 A CN201711489892 A CN 201711489892A CN 109995633 B CN109995633 B CN 109995633B
Authority
CN
China
Prior art keywords
node
bandwidth
ring network
injection
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201711489892.6A
Other languages
English (en)
Other versions
CN109995633A (zh
Inventor
郑乔石
吴小文
夏晶
宗雯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201711489892.6A priority Critical patent/CN109995633B/zh
Priority to EP18895935.7A priority patent/EP3723331B1/en
Priority to PCT/CN2018/122954 priority patent/WO2019128893A1/zh
Publication of CN109995633A publication Critical patent/CN109995633A/zh
Priority to US16/914,492 priority patent/US20200328911A1/en
Application granted granted Critical
Publication of CN109995633B publication Critical patent/CN109995633B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • H04L12/427Loop networks with decentralised control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/78Architectures of resource allocation
    • H04L47/783Distributed allocation of resources, e.g. bandwidth brokers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/109Integrated on microchip, e.g. switch-on-chip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Small-Scale Networks (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例公开了一种芯片及相关设备,该芯片包括多个功能模块,以及环状网络,所述环状网络上包括多个节点,所述多个节点中包括第一节点和第二节点,所述第一节点和所述第二节点在所述环状网络中相邻;所述第一节点判断第一注入缓存值是否大于第一阈值以及第一注入带宽是否小于第一期望带宽;当所述第一注入缓存值大于所述第一阈值,且所述第一注入带宽小于所述第一期望带宽时,所述第一节点向所述第二节点发送第一请求,所述第一请求用于指示所述环状网络中除所述第一节点外的至少一个节点减少第一数据包的发送数量,所述第一数据包为从所述第一节点经过的数据包。采用本发明实施例可以根据系统的实际运行情况合理的分配网络带宽。

Description

一种芯片及相关设备
技术领域
本发明涉及网络通信领域,尤其涉及一种芯片及相关设备。
背景技术
目前随着晶体管特征尺寸不断缩小,越来越多的功能模块被集成到单个芯片上。集成芯片通常采用片上网络(Network on Chip,NoC)来连接这些数量不断增加的功能模块,并负责在模块间快速传递各种数据。NoC是一种针对多核片上系统(System on Chip,SoC)设计的新型片上通信架构。NoC中的节点及其之间的网络称为OCN(On—ChipNetwork),它借鉴了分布式计算机系统的通讯方式,用路由和分组交换技术替代传统的总线技术完成通讯任务。
非缓冲的环状网络(Buffeless Ring Network,BLR)是非缓冲的NoC的典型设计。在非缓冲环状网络中,各个节点组成环状的网络主通路,每个节点既可以是源节点也可以是目的节点。该非缓冲环状网络中还存在绕环状网络的传输介质旋转的多个时隙槽(timeslot,简称slot),slot可以作为存储数据和传输数据的载体,每个时钟周期沿环状网络向下一个节点移动,将数据包从源节点传送至目的节点。例如,数据通过slot在各个节点间传输时,节点可以将功能模块中的数据传输到slot中,也可以将slot中的数据传输到功能模块,从而完成不同功能模块之间的数据交互。非缓冲环状网络中的相邻的节点间没有数据包的缓冲,需要保证数据包每一拍都会向下一个节点移动,并且不会丢包。为了保证每一拍数据包都能够向下一级移动,主通路上的数据包需要优先传输,而从节点准备注入的新数据包需要等待主通路出现空时隙槽(英文:Empty slot)才可以注入。如果主通路上一直没有空时隙槽经过,节点的数据包就一直无法注入,这造成了非缓冲环状网络上带宽分配不均衡的问题。
现有技术中,Intel专利US8289850B2提出了一种限制模块获得可预期最大带宽的方法和装置;该装置提供可配置的时间窗口以及一个窗口内允许发送的最多数据包数量的阈值;在一个时间窗口内,如果模块发送的数据包数量达到阈值,则关闭与该模块连接的网络注入端口;这样该模块的数据包就不会继续注入到网络,使得其他模块有机会发送数据包抢占网络带宽;当一个时间窗口结束后,开启下一个新的时间窗口,此时打开所有网络注入端口,并重新统计模块发送的数据包数量。上述方案在一定程度上可以保证各个节点之间的带宽的绝对公平,但是一旦配置了之后,各个节点获得的带宽相对固定,在节点的带宽需求实时变化的情况下,可能会存在带宽分配不协调,带宽利用率低的问题。
发明内容
本发明实施例所要解决的技术问题在于,提供一种芯片及相关设备,解决了现有技术中环状网络中的节点带宽分配不均衡、不灵活的问题。
第一方面,本发明实施例提供了一种芯片,可包括:
多个功能模块,以及环状网络,所述多个功能模块通过所述环状网络进行数据交互,所述环状网络上包括多个节点,所述多个功能模块分别通过所述多个节点在所述环状网络中发送和接收数据,其特征在于,所述多个节点中包括第一节点和第二节点,所述第一节点和所述第二节点在所述环状网络中相邻;所述第一节点判断第一注入缓存值是否大于第一阈值以及第一注入带宽是否小于第一期望带宽,所述第一注入缓存值为所述第一节点等待发送的数据包的数量,所述第一注入带宽为所述第一节点在一个时间窗口内向所述第一节点所在的环状网络中成功注入的数据包的数量;当所述第一注入缓存值大于所述第一阈值,且所述第一注入带宽小于所述第一期望带宽时,所述第一节点向所述第二节点发送第一请求,所述第一请求用于指示所述环状网络中除所述第一节点外的至少一个节点减少第一数据包的发送数量,所述第一数据包为从所述第一节点经过的数据包。
通过第一方面提供的芯片,能够在环状网络中的节点带宽分配与需求不匹配的情况下,根据节点的优先级或重要性等特点,进行灵活调配,均衡环状网络上的节点的带宽分配。
在一种可能的实现方式中,所述第二节点接收所述第一请求后,判断第二注入带宽是否大于第二期望带宽,所述第二注入带宽为所述第二节点在一个时间窗口内向所述环状网络中成功注入的数据包的数量;如果大于,所述第二节点减少所述第一数据包的发送数量。
在一种可能的实现方式中,如果小于或等于,所述第二节点向第三节点转发所述第一请求,以使得所述环状网络中除所述第一节点和所述第二节点外的至少一个节点减少所述第一数据包的发送数量,所述第三节点为所述环状网络中与所述第二节点相邻的节点。
在一种可能的实现方式中,所述第二节点向第三节点转发所述第一请求,以使得所述环状网络中除所述第一节点和所述第二节点外的至少一个节点减少所述第一数据包的发送数量,所述第三节点为所述环状网络中与所述第二节点相邻的节点。
在一种可能的实现方式中,所述第二节点减少所述第一数据包的发送数量,包括:所述第二节点生效第二上限带宽限制,所述第二上限带宽限制用于限制所述第二节点在一个时间窗口内向所述环状网络中成功注入的数据包的数量不超过第二上限带宽,所述第二上限带宽小于或等于所述第二期望带宽。
在一种可能的实现方式中,所述第二节点判断过路带宽是否超过第二阈值,所述过路带宽为一个时间窗口内从所述第二节点经过的数据包的数量;若超过,所述第二节点向第三节点转发所述第一请求,以使得所述环状网络中除所述第一节点和所述第二节点外的至少一个节点减少所述第一数据包的发送数量,所述第三节点为所述环状网络中与所述第二节点相邻的节点。
在一种可能的实现方式中,所述第一节点生效第一上限带宽限制,所述第一上限带宽限制用于限制所述第一节点在一个时间窗口内向所述环状网络中成功注入的数据包的数量不超过第一上限带宽,所述第一上限带宽大于或等于所述第一期望带宽。
在一种可能的实现方式中,所述第一节点生效第一上限带宽限制,包括:所述第一节点将所述第一节点的初始上限带宽更换为第一上限带宽,并生效所述第一上限带宽限制。
在一种可能的实现方式中,当所述第一节点判断出所述第一注入缓存值等于零的时长超过预设时间,或者,当所述第一节点判断出所述第一注入带宽大于所述第一期望带宽,所述第一节点向所述第二节点发送第二请求,所述第二请求用于指示所述环状网络中除所述第一节点外的至少一个节点增加所述第一数据包的发送数量。
在一种可能的实现方式中,所述第一节点判断出所述第一注入缓存值等于零的时长超过预设时间,或者,所述第一节点确定所述第一注入带宽大于所述第一期望带宽,所述第一节点失效所述第一上限带宽限制。
在一种可能的实现方式中,所述环状网络为非缓冲环状网络BLR。
在一种可能的实现方式中,所述第一期望带宽为与所述第一节点的优先级匹配的预设带宽值。
第二方面,本申请提供一种电子设备,可包括:
上述第一方面中的任意一种实现方式所提供的安全元件以及耦合于所述芯片的分立器件。
第三方面,本申请提供一种片上系统NoC芯片,该NoC芯片包括上述第一方面的任意一种实现方式所提供的芯片。该NoC芯片,可以由芯片构成,也可以包含芯片和其他分立器件。
附图说明
为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。
图1是本发明实施例提供的一种非缓冲环状网络架构的示意图;
图2是本发明实施提供的一种节点的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例进行描述。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
首先,基于背景技术中提出的技术缺陷,进一步分析本申请需要解决的技术问题及应用场景。
在现有技术中,针对BLR的带宽分配方式,可以认为有受限模式和无分配模式。其中,受限模式,即为背景技术中提到的在初始情况下,限定BLR中的每一个节点的注入带宽上限,也即是限定节点一个时间窗口内的最大成功发包数量阈值;无分配模式,则是让各个节点之间自由争抢网络带宽,该模式下系统不会主动调节带宽的分配。
上述受限模式在一定程度上可以保证各个节点之间的绝对公平,但是该模式没有考虑各个节点之间的不同的以及可能实时变化的带宽需求。例如,处理视频编解码的视频模块对带宽需求较大,负责中断汇聚的模块对带宽需求较小。并且,这些模块可能在不同的时间段对带宽的需求也大不相同,比如,系统中可能存在数据突发的模块(例如为上述视频模块),该视频模块在一个时间段内大量收发数据,需要占用大量的网络带宽;但是在另一个时间段,数据交互较少仅仅需要极少的网络带宽。当视频模块突发时,有可能其他模块(例如为上述负责中断汇聚的模块)正处于没有数据交换的场景下。如果采用受限模式,则会限制视频模块无法使用负责中断汇聚的模块的空闲带宽,最终导致在网络整体负载没有达到饱和的情况下,却无法满足各个节点的实际带宽需求的问题。
上述无分配模式是基于自由争抢的机制,当网络所能提供的带宽远远高于所有模块需求的场景下,则可以满足所有模块的带宽需求,但是显然会造成系统带宽浪费;当网络所能提供的带宽不能远远高于需求的场景下,则可能会造成无法控制和平衡各个节点的带宽需求的问题。例如,当网络中的多个节点的带宽需求都较大,由于BLR中主通路传输的数据具有绝对优先级,因此,会导致边缘节点可以获得的带宽大大高于中间节点获得的带宽,如此一来,就出现了边缘节点能竞争到带宽,而中间节点竞争不到带宽的问题。最终导致在网络整体负载达到饱和的情况下,却无法满足各个节点的实际带宽需求的问题。综上所述,现有技术中主要存在以下缺陷。
1)从静态分配的角度来看,现有技术没有区分不同类型模块对总线带宽的不同需求;
2)从动态分配的角度来看,现有技术没有实时监控总线的状态,更没有针对实时监控结果进行动态调整带宽分配。
因此,本申请实际要解决的技术问题在于,如何根据片上网络上的每个节点实时变化的带宽需求,更好地可控并灵活分配带宽的问题。
为了便于理解本发明实施例,基于上述,下面对本发明实施例所基于的一种网络架构进行描述。请参见图1,图1是本发明实施例提供的一种非缓冲环状网络架构的示意图,以一个环状网络为例,该非缓冲环状网络的主通路由多个节点组成,所述多个节点串连成环状,并且,每个节点用于与至少一个功能模块(如IP核(IP Core)等)连接。图1中以8个节点为例(图1中采用圆形表示),包括101、102、102、103、104、105、106、107、108;以及8个对应的功能模块(图1中采用方形表示)为例,包括201、202、202、203、204、205、206、207、208。上述外部的功能模块通过非缓冲环状网络上的节点进行交换数据。可以理解的是,上述节点以及对应的模块都位于一个集成电路衬底上,即位于一块芯片上。其中,
节点,又称之为通讯节点或交换开关,负责数据的转发和传递。在非缓冲环状网络中,slot按照预定方向在环状网络各个节点间传递,且每一时刻环状网络的各个节点上存在一个slot。数据通过slot在各个节点间传输时,节点可以将功能模块中的数据传输到slot中,也可以将slot中的数据传输到功能模块中。本申请中的各个节点之间通过主数据通路00进行数据的发送或接收。例如,当功能模块201需要向功能模块204发送数据,则功能模块201将数据沿着非缓冲环状网络的主通路的方向,从源节点101出发或经过的空闲slot经过节点102再经过节点103再到达目的节点104,最终将slot中的数据传递给功能模块204,至此,非缓冲环状网络完成了功能模块之间的数据传输。由于本申请中的各个节点除了需要在主通路方向上转发和传递数据,还需要进行带宽需求的请求信号的反馈,而该请求信号的传递方向与主通路方向相反,因此,本申请中的非缓存环状网络上的各个节点之间还需要设置与可用于传递与主通路方向相反的信号的物理连线11,如此一来,节点才可以向自己的上一级节点反馈请求带宽信号(例如本申请中的第一请求、第二请求)。可以理解的是,本申请中所涉及的节点之间的数据的发送和接收,实质上是节点所对应的功能模块之间的数据的发送和接收,并且在节点之间传递时是通过空闲slot进行的传递,为了便于描述,在后续相关描述中直接以节点向节点发送数据来进行说明。
功能模块,如IP核(IP Core)或CPU核(CPU Core),也可以称之为计算节点(资源,Resource),用于完成广义的计算任务,它们既可以是SoC,也可以是各种单一功能的IP。也可以包括其它例如双倍速率同步动态随机存储器(Double Data Rate,DDR)、高速串行计算机扩展总线标准PCIE设备、末级数据缓存(Last-Level-Cache,LLC)设备,等负责提供计算所需的数据的设备。
可以理解的是,图1中的网络架构只是本发明实施例中的一种示例性的实施方式,本发明实施例中的网络架构包括但不仅限于以上非缓冲环状网络架构。应理解,本发明实施例还可以应用于环状网络搭建的所有网络,例如:基于BLR搭建的2D-mesh网络、3D-mesh网络等。
作为对图1中节点的细化,图2是本发明实施例提供的一种节点的结构示意图,节点10为本申请中图1提供的非缓冲环状网络中的任意一个节点。该节点10可包括输入端口1001、输出端口1002、时间窗口长度配置寄存器1003、时间窗口周期数计数器1004、注入带宽统计计数器1005、注入缓存计数器1006。可选地,还可以包括过路带宽统计模块1007、注入节流装置1008、模块优先级寄存器1009、上限带宽配置寄存器10011。其中,
输入端口1001/输出端口1002,每一个节点(例如图1中的103)与相邻节点(例如图1中的102)及功能模块(例如图1中的203)的连接都由输入端口和输出端口完成,对于非缓冲环状网络而言,每一个输入或者输出端口之间没有虚拟通道和缓存。在需要将数据从源节点发送到目的节点时,需要判断从上一级节点过来的solt是否为空,如果为空,则将数据放入到solt中传输到相邻的下一级节点中,如果不为空,则无法将数据发送到下一个节点,并且由于交换节点之间没有缓存,只能暂存到注入缓存模块中,等待下一个空的solt的到来。
时间窗口长度配置寄存器1003,该寄存器1003的配置值表示一个时间窗口的时钟周期数量,是一个静态的配置值。例如一个时间窗口可以配置为等于10000个时钟周期。
时间窗口周期数计数器1004,计数当前时间窗口已经经过的时钟周期数,该计数器1004每时钟周期加1;当计数器1004的计数值等于时间窗口长度配置寄存器1003的配置值时,置0,且表明当前时间窗口结束,开启下一个时间窗口。
注入带宽统计计数器1005,在一个时间窗口内节点每次成功向网络注入一个数据包,该计数器1005就会加1;当时间窗口结束时,该计数器1005清零。该计数器1005计数了当前时间窗口节点所获得的网络带宽。
注入缓存计数器1006,计算一个时间窗口内,缓存数据包的数量,当节点等待发送的数据包的数量增加一个,则该计数器1006就会加1;当等待发送的一个数据包成功注入到网络中时,该计数器1005就会减1,当时间窗口结束时,该计数器1006不清零。
过路带宽统计计数器1007,在一个时间窗口内,针对任意一个节点,每个时钟周期有有效数据包在环状网络的主通路上经过时,该计数器1007就会加1;当时间窗口结束时,该计数器1007清零;该计数器1007计数了当前时间窗口上游模块占用的网络带宽。
注入节流装置1008,可以在停止注入条件的控制下,阻止节点继续注入数据包到网络,使得节点不再获得网络带宽。停止注入条件失效后,注入节流装置停止工作,不会干扰节点注入数据包到网络。
模块优先级寄存器1009,是关于节点特点的配置寄存器。例如,可以将节点(也即是对应的功能模块)的优先级分为4个等级,高优先级(High Priority HP)、中等优先级(Middle Priority MP)、低优先级(Low Priority LP)以及不饿死(Not Starvation NS)。可以理解的是优先级的等级数量和划分规则,可以按照系统的实际运行状况进行划分,本申请对此不作具体限定。
期望带宽配置寄存器10010,是关于网络特征的配置寄存器。例如,期望的网络带宽也可以分为4个等级,高带宽(High Bandwidth HB)、中等带宽(Middle Bandwidth MB)、低带宽(Low Bandwidth,LB)以及饿死(None Bandwidth NB)。可以理解的是期望带宽的等级数量和划分规则,可以按照系统的实际运行状况进行划分,本申请对此不作具体限定。
上限带宽配置寄存器10011,是关于网络特征的配置寄存器。例如,上限的网络带宽可以与期望带宽相匹配,上限带宽可以与期望带宽相等,也可以大于期望带宽。可以理解的是上限带宽的值的设定,可以按照每个节点的优先级进行具体设置,本申请对此不作具体限定。
可以理解的是,本发明实施例中的节点的结构包括但不仅限于上述图2中的结构,只要可以应用本申请中的芯片进行带宽分配的结构均属于本申请所保护和涵盖的范围。
本申请基于图1中所提供的网络架构和图2中所提供的节点的结构,提供一种芯片,对本申请中提出的技术问题进行具体分析和解决。该芯片10包括多个功能模块,以及环状网络,其中,环状网络的具体形式可参见图1中提供的环状网络,该环状网络可以为非缓冲环状网络BLR。多个功能模块通过环状网络进行数据交互,环状网络上包括多个节点,多个功能模块分别通过多个节点在环状网络中发送和接收数据,多个节点中包括第一节点(后续以图1中的103为例进行说明)和第二节点(后续以单播时为图1中的102,广播时为图1中的102、104和106为例进行说明),第一节点103和第二节点102在环状网络中相邻,其中,相邻是指环状网络中,两个节点之间没有其它节点。
第一节点103可以通过注入缓存计数器1006判断第一注入缓存值是否大于第一阈值以及通过注入带宽统计计数器1005判断第一注入带宽是否小于第一期望带宽,而第一注入缓存值则为第一节点103当前等待发送的数据包的数量,第一注入带宽则为第一节点103在一个时间窗口内向第一节点103所在的环状网络中成功注入的数据包的数量。当第一注入缓存值大于第一阈值,且第一注入带宽小于第一期望带宽时,第一节点103可以通过图1中的专用物理连线11向第二节点102发送第一请求,该第一请求用于指示环状网络中除第一节点103外的至少一个节点减少第一数据包的发送数量,第一数据包为从第一节点103经过的数据包。可选地,第二节点102为第一节点103的相邻节点中的上游节点。
需要说明的是,第一数据包是指从第一节点经过的数据包,即第一数据包的源节点和目的节点均不是第一节点,但是第一节点是第一数据包从源节点出发,并到达目的节点之间的一个经过的节点。
针对上述第一注入带宽,需要说明的是,由于环状网络中的所有数据包都是从某个源节点到达某个目的节点的,所以对于整个环状网络来说,只需要针对每个节点计算从该节点发出的数据包即可以计算得到该节点的注入带宽。至于经由该节点的数据包,由于其较大可能性是从其他节点出发的(当然也可以包括少量从该节点发出在目的节点下RING失败,绕圈绕回来的数据包),所以,在对应出发的节点来计算注入带宽即可。所以,本申请中统一只计算每个节点上出发的数据包,如此一来,针对整个环状网络上的所有成功注入的数据包都刚好只计算一次,不会重复计算。并且,由于针对每个节点进行带宽控制,也只能控制该节点本身从注入缓存ingress buf里调度到环状网络ring里面的数据。而针对其它节点发出并经由该节点的数据包(因为已经发出且占用slot,并且通过slot流转在环状网络ring中,因此不可能再调控减少,若需要减少经由该节点的数据包,只能通过减少数据包的源头即源节点调度进入环状网络中的数据包的数量)。所以在本申请中,每个节点首先需要对自身的注入带宽进行监控(也即是该节点在一个时间窗口内向其所在的环状网络中成功注入的数据包的数量)。
基于上述,下面对本申请中如何判断一个节点是否需要向环状网络中的其他节点发出带宽请求进行分析。假设一个节点它的注入缓存值大到一定程度(超过一定阈值),但是它的注入带宽也相对较大(大于一定阈值),这种情况下说明,不是因为其它节点的注入带宽过大导致该节点没有注入带宽可以使用,而是其自己本身需要注入的数据包太多导致的。原因在于,该节点的注入带宽大于一定阈值的这个条件说明该节点当前占用的注入带宽已经较大,间接说明其它节点并没有占用过多注入带宽,所以,此时无法通过释放其它节点的注入带宽来响应发出带宽请求的节点,因此,此时不需要发送第一请求。但是,当注入缓存值大于一定阈值,并且注入带宽小于一定阈值的条件下,第一节点则可能通过发送第一请求,来缓解自身的注入带宽压力。原因在于,在第一节点当前有大量数据包需要发送(注入缓存值大于第一阈值),但是注入带宽却相对较小(注入带宽小于第一期望带宽)的情况下,只能说明,当前有其它的节点的注入带宽较大(一个时间窗口内占用较多的slot),导致第一节点上没有足够的注入带宽(一个时间窗口内的空闲slot)可以传输数据。所以在满足上述条件下,第一节点可以通过向其他节点发起请求,减少第一数据包的发送量的情况下,来获得更多的注入带宽。例如,当同时满足以下条件1)和2)时,第一节点主动向第二节点发送第一请求(置位请求带宽信号):
1)节点的ingress buf有大量数据包要发送;
2)HP、MP模块仅仅能获得LB及以下带宽,或LP、NS模块仅仅能获得NB及以下带宽。
需要说明的是,由于在环状网络中主通路方向的单一性,以及节点之间以最短路径传递数据的原则,对于第一节点来说,它的第一数据包,最大部分就是来源于上游的与其相邻的第二节点。所以,在第一节点发送第一请求的过程中,本申请可以选择将第一请求只发送给上游(上一级别)的第二节点,也可以选择将第一请求广播到环状网络中的每一个节点。
关于第二节点在接收到第一请求后,如何使得环状网络中的至少一个节点减少第一数据包的发送的具体实施方式,可以包括以下两种情况:
情况一,第二节点102接收第一请求后,判断自身的第二注入带宽是否大于第二期望带宽,第二注入带宽为第二节点102在一个时间窗口内向环状网络中成功注入的数据包的数量;如果第二注入带宽大于第二期望带宽,第二节点102减少第一数据包的发送数量。
具体地,第二节点在接收到第一请求后,首先查看自身当前获得的注入带宽是否大于与该第二节点匹配的第二期望带宽,如果大于,则说明该第二节点当前占用的slot超过了预先设置的带宽值。因此,可以通过减少第二节点发出的第一数据包的数量,来释放部分solt,以使得第一节点可以获得更多的注入带宽。
情况二,如果第二注入带宽是小于或等于第二期望带宽,第二节点102向第三节点转发第一请求,以使得BLR中除第一节点103和第二节点102外的至少一个节点减少第一数据包的发送数量,第三节点为BLR中与第二节点102相邻节点。可选地,第三节点为第二节点的相邻节点中的上游节点。
具体地,第二节点在接收到第一请求后,如果判断出第二注入带宽是小于或等于第二期望带宽,则说明该第二节点当前占用的slot没有超过预先设置的带宽值,即没有占用其它的节点的注入带宽。因此,占用第一节点的注入带宽的节点,可能是第二节点的上一级节点,此时第二节点通过图1中的物理连线11向相邻的第三节点转发该第一请求,以此类推,最终找到至少一个节点,可以通过减少该节点(第三节点或者第三节点的上一级节点)上发出的第一数据包的数量,来释放部分solt,以使得第一节点可以获得更多的注入带宽。
可选地,结合上述情况一,第二节点102还可以在已经减少了第一数据包发送的情况下,依然向第三节点103转发该第一请求,以使得环状网络中除第一节点103和第二节点102外的至少一个节点减少第一数据包的发送数量,以便于为第一节点尽可能的争取到多的注入带宽。
可以理解的是,环状网络上的每一个节点,在初始情况下,都可以通过上限带宽配置寄存器10011限定一个注入带宽的阈值,也即是本申请中的期望带宽。并且期望带宽的设置规则,需要遵循每个节点的期望带宽相加后不超过整个环状网络的总带宽。
在上述情况一中,第二节点102减少第一数据包的发送数量的具体实现方式可以为,第二节点102生效第二上限带宽限制,其中,第二上限带宽限制用于限制第二节点102在一个时间窗口内向环状网络中成功注入的数据包的数量不超过第二上限带宽,第二上限带宽小于或等于第二期望带宽。原因在于,此时的目的是要减少第二节点102向第一节点103发送的第一数据包的数量,因此,通过生效第二节点的第二上限带宽限制,可以压制第二节点102的注入带宽,来释放部分带宽给更需要带宽的第一节点103。可以理解的是,第二节点102的上限带宽是需要小于或者等于其期望带宽的,否则无法起到限制带宽的作用。
例如,软件或BIOS配置节点的上限带宽配置寄存器10011,该寄存器10010的值表征一个时间窗口内节点可以获得的最大网络注入带宽;当节点所获得的带宽和期望带宽相等时,就激活注入节流装置1008,阻止节点继续向环状网络中注入数据包占用网络带宽。当下一个时间窗口开启后,失效注入节流装置1008,解除对节点向网络注入数据包的阻塞,重新开始统计节点的注入带宽。该种机制限制了一个节点在一个时间窗口内向网络注入数据包的最大数量,因此限制了一个节点占用的最大网络带宽。
在一种可能的实现方式中,第二节点102在接收到第一节点发送的第一请求后,判断过路带宽是否超过第二阈值,过路带宽为一个时间窗口内从第二节点102经过的数据包的数,若第二节点的过路带宽超过第二阈值,则第二节点102向第三节点101转发第一请求,以使得环状网络中除第一节点103和第二节点102外的至少一个节点减少第一数据包的发送数量,由于第二节点102上的过路带宽,表征的是肯定要到达或者经过第一节点103的数据包,所以,这个过路带宽对应的数据包是从除第二节点102以外的上游节点发送过来的,并且除了目的节点是第一节点的数据包,其它数据包都会影响第一节点的注入带宽,因此第二节点通过将第一请求转发给第三节点,从而使得第二节点的上游节点,减少第一数据包的发送数量。
可选地,在本申请中,当第一节点的注入带宽较小且不够用时,不仅可以通过向环网上的其它节点发送第一请求的方式,还可以通过对自身的带宽上限进行设置,例如,第一节点103生效第一上限带宽限制,该第一上限带宽限制用于限制第一节点103在一个时间窗口内向环状网络中成功注入的数据包的数量不超过第一上限带宽。可以理解的是,第一上限带宽大于或等于第一期望带宽,如此一来才可以,第一节点103才可以在保障自身获得较高的注入带宽的同时,也不能过度占用其他节点的注入带宽,提升整个环状网络上的带宽利用率。
在一种可能的实现方式中,上述第一节点103生效第一上限带宽限制的具体方式可以是:第一节点103将自身的初始上限带宽更换为第一上限带宽,并生效第一上限带宽限制。即每个节点可以设置一个初始的上限值(例如第一节点的初始的上限值为对应的第一期望带宽),然后在发现注入带宽远远不够用时,再开启另一个上限值(例如第一节点的上限值为第一上限带宽)。比如说,一个节点的初始优先级很高,那么它的初始注入带宽上限值可以比其它节点高,然后在发现注入带宽不够用的情况下,可以生效更高的上限值,以全力保证优先级高的节点可以获得更多的注入带宽。
上述是针对第一节点在带宽不够用,并且是环网上的其它节点的注入带宽过大导致的解决方案。进一步地,当第一节点在获得了因环网上的其它节点释放的带宽后,由于节点数据量的实时变化性,当第一节点的注入带宽需求量减小时,本申请可以将获得的注入带宽再释放给其它节点。在一种可能的实现方式中,当第一节点103判断出第一注入缓存值等于零的时长超过预设时间,或者,当第一节点103判断出第一注入带宽大于第一期望带宽,第一节点103向第二节点102发送第二请求,该第二请求用于指示环状网络中除第一节点103外的至少一个节点增加第一数据包的发送数量。即第一节点103发现当前需要发送的数据包大大减少(即注入缓存长期等于0),或者是虽然有很多数据包需要发送,但是当前获得的注入带宽很大时候(已经超过系统所能给其最大的),这个时候就需要向第二节点发出第二请求。例如,当满足以下条件1)和2)中的任意一个,则第一节点块主动发送第二请求(清除请求带宽信号):
1)节点的注入缓存ingress buf较长时间都没有数据包要发送;或者
2)HP、MP节点已经获得了MB及以上的带宽,或LP、NS节点已经获得了LB及以上的带宽。
可选地,第一节点除了可以向环状网络中的第二节点发出第二请求,以使得环网上的其它节点可以适当的增加注入带宽。第一节点还可以对自身的注入带宽上限进行调整。在一种可能的实现方式中,第一节点103判断出第一注入缓存值等于零的时长超过预设时间,或者,第一节点103确定第一注入带宽大于第一期望带宽,第一节点103失效第一上限带宽限制。在不需要更多注入带宽的时候,第一节点可以将第一上限带宽限制进行失效,让该节点进入无分配模式,以免浪费带宽资源。
在一种可能的实现方式中,第一期望带宽为与第一节点103的优先级匹配的预设带宽值。每个节点的优先级不同,对应的期望带宽就不一样,原则上是,优先级高的节点的期望带宽不小于优先级低的节点的期望带宽。
需要说明的是,本申请中所有节点对应的期望带宽以及上限带宽,都可以不一样。每个节点的优先级不同,对应的期望带宽和上限带宽都可以不一样,原则上是,优先级高的节点的期望带宽和上限带宽不小于优先级低的节点的期望带宽和上限带宽。本申请中可以通过模块优先级寄存器1009针对环状网络中的每一个节点都设置对应的优先级,并根据优先级的高低通过期望带宽配置寄存器10010设置匹配的期望带宽,以及根据优先级的高低通过上限带宽配置寄存器10011设置匹配的上限带宽。如此一来,可以根据不同节点(如重要程度不同、数据包处理量的需求不同等)以及结合实时变化的实际注入带宽需求,进行合理高效的带宽分配。
需要说明的是,在一个环网中,一个时间窗口内,系统所提供的slot数目是固定的,也即是说,对于整个环网来说,总带宽是固定的,因此在设置每个节点的带宽上限时,要根据总带宽来进行统筹分配,不能出现每个节点的带宽上限加起来大于总带宽的情况,否则无法实现限制作用。
本发明实施例区别对待模块的不同带宽需求,并且在网络整体负载没有达到饱和的情况下,使得高带宽需求的节点可以获得需求的高带宽,并且可以根据不同类型的芯片数据流量特点或不同的使用场景,提供适应该芯片或场景的最优配置,解决了本申请中所体术的技术问题:
1)从静态分配的角度,各个节点对带宽的需求不同,对带宽需求高的节点应该获得较高带宽,而对带宽需求低的节点理应获得较低带宽;
2)从动态分配的角度,带宽的分配需要考虑网络的实时负载情况,并按照网络真实流量情况进行调节分配。
需要说明的是,本申请中还可以结合现有技术中的无分配模式和受限模式,进行灵活的转换,本申请对此不作具体限定,例如在某个时间段或者在某些条件下使用无分配模式,在某些时间段或者条件下使用受限模式,某些时间段或者某些条件下使用本发明实施例中的分配方式。
以上所述仅为本发明的几个实施例,本领域的技术人员依据申请文件公开的可以对本发明进行各种改动或变型而不脱离本发明的精神和范围。例如本发明实施例的附图中的各个部件具体形状或结构是可以根据实际应用场景进行调整的。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriberline,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digital versatiledisc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。

Claims (11)

1.一种芯片,包括多个功能模块,以及环状网络,所述多个功能模块通过所述环状网络进行数据交互,所述环状网络上包括多个节点,所述多个功能模块分别通过所述多个节点在所述环状网络中发送和接收数据,其特征在于,
所述多个节点中包括第一节点和第二节点,所述第一节点和所述第二节点在所述环状网络中相邻;
所述第一节点判断第一注入缓存值是否大于第一阈值以及第一注入带宽是否小于第一期望带宽,所述第一注入缓存值为所述第一节点等待发送的数据包的数量,所述第一注入带宽为所述第一节点在一个时间窗口内向所述第一节点所在的环状网络中成功注入的数据包的数量;所述第一期望带宽为与所述第一节点的优先级匹配的预设带宽值;
当所述第一注入缓存值大于所述第一阈值,且所述第一注入带宽小于所述第一期望带宽时,所述第一节点向所述第二节点发送第一请求,所述第一请求用于指示所述环状网络中除所述第一节点外的至少一个节点减少第一数据包的发送数量,所述第一数据包为从所述第一节点经过的数据包;
所述第二节点接收所述第一请求后,判断第二注入带宽是否大于第二期望带宽,所述第二注入带宽为所述第二节点在一个时间窗口内向所述环状网络中成功注入的数据包的数量;
如果大于,所述第二节点减少所述第一数据包的发送数量。
2.如权利要求1的芯片,其特征在于,
如果小于或等于,所述第二节点向第三节点转发所述第一请求,以使得所述环状网络中除所述第一节点和所述第二节点外的至少一个节点减少所述第一数据包的发送数量,所述第三节点为所述环状网络中与所述第二节点相邻的节点。
3.如权利要求1的芯片,其特征在于,
所述第二节点向第三节点转发所述第一请求,以使得所述环状网络中除所述第一节点和所述第二节点外的至少一个节点减少所述第一数据包的发送数量,所述第三节点为所述环状网络中与所述第二节点相邻的节点。
4.如权利要求1所述的芯片,其特征在于,所述第二节点减少所述第一数据包的发送数量,包括:
所述第二节点生效第二上限带宽限制,所述第二上限带宽限制用于限制所述第二节点在一个时间窗口内向所述环状网络中成功注入的数据包的数量不超过第二上限带宽,所述第二上限带宽小于或等于所述第二期望带宽。
5.如权利要求1所述的芯片,其特征在于,
所述第二节点判断过路带宽是否超过第二阈值,所述过路带宽为一个时间窗口内从所述第二节点经过的数据包的数量;
若超过,所述第二节点向第三节点转发所述第一请求,以使得所述环状网络中除所述第一节点和所述第二节点外的至少一个节点减少所述第一数据包的发送数量,所述第三节点为所述环状网络中与所述第二节点相邻的节点。
6.如权利要求1所述的芯片,其特征在于,
所述第一节点生效第一上限带宽限制,所述第一上限带宽限制用于限制所述第一节点在一个时间窗口内向所述环状网络中成功注入的数据包的数量不超过第一上限带宽,所述第一上限带宽大于或等于所述第一期望带宽。
7.如权利要求6所述的芯片,其特征在于,所述第一节点生效第一上限带宽限制,包括:
所述第一节点将所述第一节点的初始上限带宽更换为第一上限带宽,并生效所述第一上限带宽限制。
8.如权利要求1所述的芯片,其特征在于,
当所述第一节点判断出所述第一注入缓存值等于零的时长超过预设时间,或者,当所述第一节点判断出所述第一注入带宽大于所述第一期望带宽,所述第一节点向所述第二节点发送第二请求,所述第二请求用于指示所述环状网络中除所述第一节点外的至少一个节点增加所述第一数据包的发送数量。
9.如权利要求6所述的芯片,其特征在于,
所述第一节点判断出所述第一注入缓存值等于零的时长超过预设时间,或者,所述第一节点确定所述第一注入带宽大于所述第一期望带宽,所述第一节点失效所述第一上限带宽限制。
10.如权利要求1-9任意一项的芯片,其特征在于,所述环状网络为非缓冲环状网络BLR。
11.一种电子设备,其特征在于,包括:
如权利要求1至10任一所述的芯片,以及耦合于所述芯片的分立器件。
CN201711489892.6A 2017-12-29 2017-12-29 一种芯片及相关设备 Active CN109995633B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201711489892.6A CN109995633B (zh) 2017-12-29 2017-12-29 一种芯片及相关设备
EP18895935.7A EP3723331B1 (en) 2017-12-29 2018-12-22 Chip, and related apparatus
PCT/CN2018/122954 WO2019128893A1 (zh) 2017-12-29 2018-12-22 一种芯片及相关设备
US16/914,492 US20200328911A1 (en) 2017-12-29 2020-06-29 Chip and related device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711489892.6A CN109995633B (zh) 2017-12-29 2017-12-29 一种芯片及相关设备

Publications (2)

Publication Number Publication Date
CN109995633A CN109995633A (zh) 2019-07-09
CN109995633B true CN109995633B (zh) 2021-10-01

Family

ID=67066585

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711489892.6A Active CN109995633B (zh) 2017-12-29 2017-12-29 一种芯片及相关设备

Country Status (4)

Country Link
US (1) US20200328911A1 (zh)
EP (1) EP3723331B1 (zh)
CN (1) CN109995633B (zh)
WO (1) WO2019128893A1 (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103618673A (zh) * 2013-11-15 2014-03-05 中国航空无线电电子研究所 一种保障服务质量的片上网络路由方法
CN103825833A (zh) * 2014-03-12 2014-05-28 北京工业大学 一种基于数据包偏转统计的网络流量控制方法
CN105306382A (zh) * 2014-07-28 2016-02-03 华为技术有限公司 一种无缓存noc数据处理方法及noc电子元件
CN106533957A (zh) * 2016-11-30 2017-03-22 中国科学院计算技术研究所 片上网络的拥塞信息传输控制方法和相关装置
CN106792832A (zh) * 2017-01-25 2017-05-31 合肥工业大学 一种无线片上网络中无线节点的拥塞判别模块及其方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8050177B2 (en) 2008-03-31 2011-11-01 Intel Corporation Interconnect bandwidth throttler
US8593960B2 (en) * 2010-06-30 2013-11-26 Intel Corporation Providing a bufferless transport method for multi-dimensional mesh topology
US8953440B2 (en) * 2011-11-15 2015-02-10 Telefonaktiebolaget L M Ericsson (Publ) Dynamic bandwidth adjustment in packet transport network
US9036482B2 (en) * 2011-12-08 2015-05-19 The Hong Kong University Of Science And Technology Bufferless nonblocking networks on chip
CN103124420B (zh) * 2013-01-21 2015-06-24 电子科技大学 一种无线片上网络架构方法
US9571402B2 (en) * 2013-05-03 2017-02-14 Netspeed Systems Congestion control and QoS in NoC by regulating the injection traffic
US9699096B2 (en) * 2013-12-26 2017-07-04 Intel Corporation Priority-based routing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103618673A (zh) * 2013-11-15 2014-03-05 中国航空无线电电子研究所 一种保障服务质量的片上网络路由方法
CN103825833A (zh) * 2014-03-12 2014-05-28 北京工业大学 一种基于数据包偏转统计的网络流量控制方法
CN105306382A (zh) * 2014-07-28 2016-02-03 华为技术有限公司 一种无缓存noc数据处理方法及noc电子元件
CN106533957A (zh) * 2016-11-30 2017-03-22 中国科学院计算技术研究所 片上网络的拥塞信息传输控制方法和相关装置
CN106792832A (zh) * 2017-01-25 2017-05-31 合肥工业大学 一种无线片上网络中无线节点的拥塞判别模块及其方法

Also Published As

Publication number Publication date
EP3723331B1 (en) 2023-01-25
EP3723331A1 (en) 2020-10-14
US20200328911A1 (en) 2020-10-15
EP3723331A4 (en) 2021-02-24
WO2019128893A1 (zh) 2019-07-04
CN109995633A (zh) 2019-07-09

Similar Documents

Publication Publication Date Title
US10613616B2 (en) Systems and methods for facilitating low power on a network-on-chip
US9325637B2 (en) System for performing distributed data cut-through
US8391144B1 (en) Inter-device flow control
RU2487401C2 (ru) Способ обработки данных, узел-маршрутизатор и носитель информации
US20240195740A1 (en) Receiver-based precision congestion control
US8014401B2 (en) Electronic device and method of communication resource allocation
US11700209B2 (en) Multi-path packet descriptor delivery scheme
KR20160074659A (ko) 고성능 패브릭 내에서의 qos를 위한 방법, 장치 및 시스템
US9699118B2 (en) System for flexible dynamic reassignment of throughput
US11722438B2 (en) Maintaining bandwidth utilization in the presence of packet drops
JP2018520434A (ja) Usb2.0帯域幅予約のための方法およびシステム
CN109995633B (zh) 一种芯片及相关设备
US9467419B2 (en) System and method for N port ID virtualization (NPIV) login limit intimation to converged network adaptor (CNA) in NPIV proxy gateway (NPG) mode
Escudero-Sahuquillo et al. FBICM: Efficient congestion management for high-performance networks using distributed deterministic routing
US20200336433A1 (en) Limiting Backpressure With Bad Actors
Zhang et al. QBNoC: QoS-aware bufferless NoC architecture
US9658952B2 (en) Technique for controlling memory accesses
CN116170377A (zh) 一种数据处理方法以及相关设备
Wu et al. COER: A Network Interface Offloading Architecture for RDMA and Congestion Control Protocol Codesign
WO2020143509A1 (zh) 传输数据的方法和网络设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant