CN112189324B - 带宽匹配的调度器 - Google Patents
带宽匹配的调度器 Download PDFInfo
- Publication number
- CN112189324B CN112189324B CN201980031960.5A CN201980031960A CN112189324B CN 112189324 B CN112189324 B CN 112189324B CN 201980031960 A CN201980031960 A CN 201980031960A CN 112189324 B CN112189324 B CN 112189324B
- Authority
- CN
- China
- Prior art keywords
- queue
- entries
- entry
- bit
- bit vector
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/52—Queue scheduling by attributing bandwidth to queues
- H04L47/522—Dynamic queue service slot or variable bandwidth allocation
- H04L47/524—Queue skipping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/52—Queue scheduling by attributing bandwidth to queues
- H04L47/525—Queue scheduling by attributing bandwidth to queues by redistribution of residual bandwidth
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/28—Flow control; Congestion control in relation to timing considerations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/56—Queue scheduling implementing delay-aware scheduling
- H04L47/564—Attaching a deadline to packets, e.g. earliest due date first
- H04L47/566—Deadline varies as a function of time spent in the queue
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/622—Queue service order
- H04L47/6235—Variable service order
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/624—Altering the ordering of packets in an individual queue
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9005—Buffering arrangements using dynamic buffer space allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9031—Wraparound memory, e.g. overrun or underrun detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/54—Store-and-forward switching systems
- H04L12/56—Packet switching systems
- H04L12/5601—Transfer mode dependent, e.g. ATM
- H04L12/5602—Bandwidth control in ATM Networks, e.g. leaky bucket
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/54—Store-and-forward switching systems
- H04L12/56—Packet switching systems
- H04L12/5601—Transfer mode dependent, e.g. ATM
- H04L2012/5678—Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
- H04L2012/5679—Arbitration or scheduling
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Memory System (AREA)
Abstract
一种计算系统使用用于存储数据的存储器、用于生成网络流量的一个或多个客户端以及具有网络交换机的通信结构。所述网络交换机包括集中式存储结构,而不是单独的输入和输出存储结构。所述网络交换机将对应于接收到的分组的特定元数据存储在单个集中式可折叠队列中,其中所述分组的使用期对应于队列条目位置。所述分组的有效载荷数据存储在单独的存储器中,因此在所述网络交换机中在所述分组的生命周期期间不会使相对大量的数据移位。所述网络交换机选择所述可折叠队列中的稀疏队列条目,对选定队列条目解除分配,并且以与所述网络交换机的基数成比例的延迟将剩余的分配的队列条目向所述队列的第一端移位。
Description
背景技术
相关技术的描述
在计算系统中,一些类型的应用程序执行比其他应用程序更好地利用并行处理和共享存储器的功能。此类应用程序的示例包括机器学习应用程序、娱乐和实时应用程序以及一些商业、科学、医学和其他应用程序。尽管一些处理器架构包括多于一个处理单元(例如,CPU,GPU等)或处理核心,但联接到存储器的一个或两个附加处理单元或核心可能不一定提供足够的并行度来提供期望的性能水平。另外,随着处理单元的数量增加,传统的基于总线的且纵横式互连架构通常无法很好地扩展。因此,随着处理单元的数量增加,向处理单元供应指令和数据的延迟也增加了。
为了使多处理单元系统支持期望的性能水平,一些系统已经从基于总线的且纵横式互连架构转移到片上网络(NoC)架构。NoC架构使用系统级网络技术来传递片上流量。与由基于总线的架构提供的分层和分段方法相反,NoC架构提供了一种更均匀、可扩展的交换机结构网络来输送数据。为了维持足够的吞吐量,预期NoC架构中的NoC交换机通过其内部结构每一时钟周期处理若干分组。
鉴于以上内容,期望用于有效地传递片上网络流量的方法和系统。
附图说明
通过结合附图参考以下描述,可更好地理解本文中描述的方法和机制的优点,在附图中:
图1是计算系统的一个实现方式的框图。
图2是片上网络(NoC)交换机的一个实现方式的框图。
图3是用于管理网络交换机的吞吐量的方法的一个实现方式的流程图。
图4是可折叠队列更新逻辑的一个实现方式的框图。
图5是变换位向量逻辑的一个实现方式的框图。
图6是变换队列条目逻辑的一个实现方式的框图。
图7是用于确定移位量来折叠队列的方法的一个实现方式的流程图。
图8是用于折叠队列的方法的一个实现方式的流程图。
图9是队列状态信息折叠的一个实现方式的框图。
尽管本发明易有各种修改和替代形式,但在附图中作为示例示出了具体实现方式并且在本文中对其进行详细描述。然而,应理解,附图及其详细描述并不意在将本发明局限于所公开的特定形式,而相反,本发明将涵盖落入如所附权利要求书限定的本发明的范围内的所有修改、等效形式和替代方案。
具体实施方式
在以下描述中,阐述了众多具体细节以提供对本文中呈现的方法和机制的透彻理解。然而,本领域的普通技术人员应认识到,可在没有这些具体细节的情况下实践各种实现方式。在一些情况下,并未详细示出所熟知的结构、部件、信号、计算机程序指令以及技术,以避免混淆本文中描述的方法。应了解,为了使说明简单且清楚,附图中所示的元件未必按比例绘制。例如,元件的中的一些尺寸可相对于其他元件被放大。
公开了用于有效地传递片上网络流量的各种系统、设备、方法和计算机可读介质。在各种实现方式中,计算系统包括一个或多个客户端。此类客户端的示例包括通用中央处理单元(CPU)、图形处理单元(GPU)、加速处理单元(APU)、多媒体引擎等。这一个或多个客户端在处理程序指令时生成对存储在存储器中的数据的访问请求。在一些实现方式中,多个客户端组合在单个管芯(诸如片上系统(SOC))中。
在各种实现方式中,计算系统还包括用于在客户端之间以及在存储器与客户端之间传递数据的通信网络(或“结构”)。在各种实现方式中,通信结构包括可被视为实体的网络交换机,其被配置成从给定源接收数据并将接收到的数据传送到给定目的地。为了维持期望的吞吐量,网络交换机每一时钟周期至多处理等于在某一时钟周期内接收到的分组数量的分组数量。在给定时钟周期内接收到的分组数量(至多)等于网络交换机中的读取端口数量。接收数据的读取端口的数量也等于用于传送数据的写入端口的数量。读取端口和写入端口(或交换机端口)的该数量也称为网络交换机的“基数”。因此,具有8个读取端口的网络交换机的基数为8。
在一些实现方式中,网络交换机包括集中式数据存储结构,而不是单独的输入和输出数据存储结构。集中式数据存储结构避免了缓冲数据过程中的冗余。冗余缓冲导致管芯上面积和功耗两者的增加。网络交换机将对应于接收到的分组的元数据存储在单个集中式可折叠队列中,其中对应的分组的使用期对应于队列条目位置。在这种情境下,使用期是指交换机接收到分组的时间。因此,分组的使用期是隐含的,并且不必要单独地存储使用期的指示。分组的有效载荷(数据)存储在与元数据分开的存储器结构中。以此方式,在可折叠队列中的元数据折叠期间,也不会使相对大量的数据移位。
在各种实现方式中,网络交换机包括控制逻辑,所述控制逻辑在可折叠队列中选择稀疏或非连续队列条目来解除分配。两个连续队列条目彼此相邻地定位,而两个稀疏队列条目在它们之间定位有一个或多个其他队列条目。因此,被选择来解除分配的两个稀疏队列条目在它们之间具有未被选择来解除分配的一个或多个其他队列条目。为了维持全吞吐量,在每个时钟周期内被选择来解除分配的队列条目的数量(至多)等于网络交换机的基数。
网络交换机中的控制逻辑定位选定队列条目中的每一者并对其解除分配。控制逻辑还将剩余的分配的队列条目向队列的第一端移位,使得剩余的分配的队列条目是连续的。该移位也可称为“折叠”。在以下讨论中,第一端称为队列的头部,而另一端称为队列的尾部。为此,在移位操作后,向队列的头部移位的剩余的分配的队列条目以连续方式位于队列的头部处。在移位操作后可用于分配的条目以连续条目位于队列的尾部处。
现在转向图1,示出了计算系统100的一个实现方式的广义框图。如图所示,计算系统100包括在存储器控制器140和142中的每一者与多个客户端之间的通信结构110。存储器控制器140和142用于与存储器150和152介接。多个客户端的示例是中央处理单元(CPU)复合体160、图形处理单元(GPU)162和集线器164。集线器164用于与多媒体引擎166通信。在一些实现方式中,一个或多个集线器用于介接到多媒体播放器(即,用于多媒体引擎166的集线器164)、显示单元等。在此类情况下,集线器是计算系统100中的客户端。每个集线器另外地包括控制逻辑和存储元件,以用于根据各种通信协议处理流量。尽管示出了三个客户端,但在其他实现方式中,计算系统100包括任何数量的客户端和其他类型的客户端,诸如显示单元、一个或多个输入/输出(I/O)外围装置等。
在一些实现方式中,计算系统100是片上系统(SoC),其中示出的部件中的每一者集成在单个半导体管芯上。在其他实现方式中,部件是系统级封装(SiP)或多芯片模块(MCM)中的单独的管芯。在各种实现方式中,CPU 160、GPU 162和多媒体引擎166用在智能电话、平板计算机、游戏控制台、智能手表、台式计算机、虚拟现实耳机等中。CPU 160、GPU 162和多媒体引擎166是能够生成片上网络流量的客户端的示例。网络流量的示例包括存储器访问请求、存储器访问响应以及客户端之间的其他网络消息。
为了有效地路由流量,在各种实现方式中,通信结构110使用包括网络交换机170至178的路由网络120。在一些实现方式中,网络交换机170至178是片上网络(NoC)交换机。在实现方式中,路由网络120在点对点(P2P)环形拓扑中使用多个网络交换机170至178。在其他实现方式中,路由网络120将网络交换机170至178与网格拓扑中的可编程路由表一起使用。在其他实现方式中,路由网络120在拓扑的组合中使用网络交换机170至178。在一些实现方式中,路由网络120包括一个或多个总线以减少计算系统100中的接线数量。例如,接口130至132中的一者或多者在路由网络120内的单个总线上发送读取响应和写入响应。
在各种实现方式中,通信结构110(“结构”)在CPU 160、GPU 162与多媒体引擎166之间传递流量。结构110还在存储器150和152与客户端(诸如CPU 160、GPU 162和多媒体引擎166)之间传递流量。当网络流量包括用于获得请求的数据的网络消息时,接口112、114、116、130和132以及网络交换机170至178中的一者或多者变换请求的数据的目标地址。
在各种实现方式中,结构110和路由网络120中的一者或多者包括状态和控制寄存器以及用于存储请求、响应和控制参数的其他存储元件。在一些实现方式中,结构110包括用于支持通信、数据传输的控制逻辑,以及用于在一个或多个总线上路由流量的网络协议。在一些实现方式中,结构110包括用于支持地址格式、接口信号以及同步/异步时钟域使用的控制逻辑。
为了维持全吞吐量,在一些实现方式中,网络交换机170至178中的每一者每一时钟周期处理等于交换机中的读取端口的数量的数量的分组。在各种实现方式中,交换机中的读取端口的数量等于交换机中的写入端口的数量。读取端口的该数量也称为网络交换机的基数。当网络交换机170至178中的一者或多者每一时钟周期处理小于基数的分组数量时,用于路由网络120的带宽小于最大带宽。因此,网络交换机170至178包括用于每一时钟周期维持等于分组的基数数量的处理速率的存储结构和控制逻辑。
在一些实现方式中,网络交换机170至178包括集中式存储结构,而不是单独的输入和输出存储结构。网络交换机170至178中的一者或多者中的集中式存储结构避免了缓冲过程中的冗余,这种冗余会导致管芯上面积和功耗两者的增加。另外,将存储结构拆分为单独的输入和输出存储结构会导致在其网络交换机的生命周期中维持分组的本地使用期带来的附加的复杂性。相反,网络交换机170至178将对应于接收到的分组的元数据存储在单个集中式可折叠队列中,其中分组的使用期对应于其在队列中的位置。因此,分组的使用期是隐含的,并且不必要单独地存储分组的使用期信息。分组的有效载荷数据存储在单独的存储器结构中,因此在可折叠队列移位期间不会使相对大量的数据移位。
在一些实现方式中,网络交换机170至178中的一者或多者包括控制逻辑和电路,所述控制逻辑和电路选择非连续队列条目来在单个时钟周期内解除分配。为了维持全吞吐量,被选择来解除分配的队列条目的数量(至多)为网络交换机的基数(即,在单个时钟周期内交换机可接收的分组的最大数量)。除了识别要解除分配的队列条目之外,控制逻辑还将剩余的队列条目(尚未解除分配的那些)向队列的头部移位,使得所有剩余的分配的队列条目都以连续条目位于队列的头部处。然后,可用于分配的所有队列条目都以连续条目位于队列的尾部处。在一些实现方式中,网络交换机170至178中的一者或多者中的控制逻辑在单个时钟周期内执行队列的折叠。
接口112至116用于在路由网络120和CPU 160、GPU 162与多媒体引擎166之间传递数据、请求和确认响应。接口130至132用于在存储器控制器140至142与路由网络120之间传递数据、请求和确认响应。在实现方式中,接口112至116和130至132具有在地址空间与存储器信道之间的映射。在各种实现方式中,接口112至116和130至132以及存储器控制器140至142包括用于实现算法以提供功能的硬件电路和/或软件。
接口112至116支持与CPU 160、GPU 162和多媒体引擎166的通信协议。在一些实现方式中,接口112至116包括用于存储请求和响应的队列,以及用于在将请求发送到路由网络120之前在所接收的请求之间进行仲裁的选择逻辑。接口112至116还包括用于生成分组、对分组进行解码并支持与路由网络120的通信的逻辑。在一些实现方式中,如图所示,接口112至116中的每一者与单个客户端通信。在其他实现方式中,接口112至116中的一者或多者与多个客户端通信并使用标识客户端的标识符来跟踪与客户端的流量。
尽管示出了用于存储器150的单个存储器控制器140和用于存储器152的单个存储器控制器142,但在其他实现方式中,计算系统100包括多个存储器控制器,其中每个存储器控制器支持一个或多个存储器信道。存储器控制器140至142包括用于存储请求和响应的队列。另外地,存储器控制器140至142包括控制逻辑,所述控制逻辑用于基于存储器150至152的支持突发模式的时序规范来对要发送到存储器150至152的请求进行分组并将请求发送到存储器150至152。
存储器控制器140至142包括用于存储控制参数的状态和控制寄存器。另外地,存储器控制器140至142包括用于对接收到的存储器访问请求和响应进行重新排序以进行有效的无序处理的逻辑。重新排序是基于以下一者或多者:优先级水平、服务质量(QoS)参数、关于存储器访问请求或响应的分组的使用期或其他考虑因素。
在各种实现方式中,存储器150至152包括多种随机存取存储器(RAM)中的任一者。在一些实现方式中,存储器150至152将数据和对应的元数据存储在同步RAM(SRAM)中。在其他实现方式中,存储器150至152将数据和对应的元数据存储在多种动态RAM(DRAM)中的一者中。例如,取决于实现方式,存储器150至152将数据存储在传统DRAM中或彼此堆叠的多个三维(3D)存储器管芯中。
转向图2,示出了网络交换机200的一个实现方式的广义框图。网络交换机200包括缓冲器210、控制队列220和分组存储器230。在各种实现方式中,分组存储器230存储接收到的分组的分组有效载荷数据。缓冲器210将条目的地址存储在存储器232中,条目的地址也称为分组索引。在示出的示例中,缓冲器210包括16个条目(0至15)。在实现方式中,每个分组索引指向存储器232中的条目中的特定条目。在这种实现方式中,分组存储器230将数据存储在直接映射的组织中。在其他实现方式中,分组存储器230使用另一个组织(诸如集合关联组织或完全关联组织)来存储数据。
在一些实现方式中,缓冲器210作为有序循环缓冲器被管理。在一些实现方式中,读取指针212和写入指针214中的每一者在复位后被设置成相同值(例如,缓冲器条目0)。在一些实现方式中,将存储在缓冲器210的缓冲器条目中的分组索引重置为对应于缓冲器条目的值。例如,存储在缓冲器条目0中的索引的重置值为0。类似地,存储在缓冲器条目1中的索引的重置值为1,依此类推。尽管缓冲器210和分组存储器230中的每一者被示出为包括16个条目,但在其他实现方式中,缓冲器210和分组存储器230中的每一者包括另一个数量的条目。
当由网络交换机200接收到分组时,存储在由读取指针212指向的缓冲器条目中的分组索引将作为分组索引216被读出。在一些实现方式中,同时地接收多个分组,并且从缓冲器210中从存储在由读取指针212指向的缓冲器条目中的分组索引开始读出多个分组索引。在实现方式中,将从缓冲器210中读出的分组索引216发送到分组存储器230中的分配逻辑234以及控制队列220两者。在一些实现方式中,接收到的分组的数量等于从缓冲器210中读出的分组索引的数量,所述分组索引的数量等于网络交换机200的端口的数量。该数量被称为网络交换机200的基数。在示出的实现方式中,基数是非零整数值N。在实现方式中,读取指针212以接收到的分组的数量递增。
在实现方式中,分配逻辑234使用多路复用器来确定正在分配哪些存储器条目。其他组合逻辑也是可能的并进行了设想。如图所示,分配逻辑234中的多路复用器的数据输入接收传入分组有效载荷数据。分配逻辑234中的多路复用器的选择线接收从缓冲器210中检索到的分组索引216的解码值。解码器(未示出)对接收到的分组索引216进行解码来选择要分配的存储器条目232。在各种实现方式中,分组存储器230使用SRAM来进行数据存储。存储在分组存储器230中的分组有效载荷数据不会在存储器条目之间移位,而是保留在选定存储器条目中,直到读出分组有效载荷数据来跨网络发送为止。
控制队列220接收分组索引216并将其存储在控制队列220的可用条目中。与分组存储器230相反,分组索引216不确定选择哪些队列条目来分配。在实现方式中,分组存储器230存储接收到的分组的有效载荷数据,而控制队列220存储接收到的分组的元数据。在各种实现方式中,控制队列220是可折叠队列。与有序缓冲器210相反,控制队列220不一定以有序方式选择队列条目来解除分配。相反,控制队列220以任何期望的次序选择分组。选择是基于以下一者或多者:优先级水平、服务质量(QoS)参数、分组的使用期等。在一些实现方式中,控制队列220针对网络交换机200的每一端口包括一个调度器。因此,控制队列220包括基数数量N(其中N是整数)个调度器222。
在一些实现方式中,存储在队列220的队列条目中的数据根据使用期以有序连续方式存储。例如,在实现方式中,用于最旧分组的数据存储在位于从控制队列220的头部开始的连续的分配的队列条目中。可用于分配的存储无效信息的队列条目位于控制队列220的尾部,接在分配的条目之后。接收到的分组索引216与以下一者或多者一起存储在可用队列条目中:分组的源和目的地的客户端标识符、优先级水平或QoS参数、分组的数据大小等。在一些实现方式中,使用期的指示未存储在控制队列220的队列条目中。而是,在一些实现方式中,使用期由队列条目的位置暗示,其中更靠近队列的头部的条目比靠近队列的尾部的条目旧。
当一个或多个调度器222选择要处理的分组并在网络上发送时,调度器222将存储在选定队列条目中的调度的分组索引224发送到缓冲器210和分组存储器230中的每一者。缓冲器210以有序方式从由写入指针214指向的缓冲器条目开始将分组索引224存储在缓冲器条目中。写入指针214以接收到的分组索引224的数量递增。当达到全吞吐量时,接收到的分组索引224的数量等于网络交换机200的基数N。
解除分配逻辑236接收调度的分组索引224并选择对应的存储器条目。解码器(未示出)对调度的分组索引224进行解码来选择要解除分配的存储器条目。在实现方式中,解除分配逻辑236使用多路复用器来确定哪些存储器条目正被解除分配。其他组合逻辑也是可能的并进行了设想。如图所示,分配逻辑236中的多路复用器的数据输入接收存储器条目中的数据。解除分配逻辑236中的多路复用器的选择线接收调度的分组索引224的解码值。将分组有效载荷数据从网络交换机200中发送出,以在网络上路由到其目的地。
当由网络交换机200接收和传输分组时,接口逻辑(未示出)管理通信协议。在实现方式中,缓冲器210、控制队列220与分组存储器230之间的接口(未示出)包括具有一个或多个缓冲器的接线以传输和接收数据。在实现方式中,因为在时钟周期内处理分组,所以在缓冲器210、控制队列220与分组存储器230之间不使用任何顺序元件。因此,调度器222选择控制队列220的队列条目,并且在时钟周期内,对选定队列条目解除分配,对分组存储器230中的对应的存储器条目解除分配,更新缓冲器210中的缓冲器条目,并且更新写入指针214。另外,在时钟周期内,控制队列220将剩余的分配的队列条目向队列的末端移位,使得剩余的分配的队列条目以连续方式位于控制队列220中。
在各种实现方式中,调度器222选择控制队列220中的任何队列条目。因此,选定队列条目是稀疏队列条目。两个连续队列条目彼此相邻地定位,而两个稀疏队列条目在它们之间定位有一个或多个其他队列条目。因此,被选择来解除分配的两个稀疏队列条目在它们之间具有未被选择来解除分配的一个或多个分配的队列条目。
为了维持全吞吐量,被选择来解除分配的队列条目的数量(至多)等于网络交换机200的基数N。在一个示例中,N为4。在这种示例中,调度器222选择4个稀疏队列条目来在控制队列220中解除分配。控制队列220中的控制逻辑(未示出)找到选定队列条目中的每一者并对其解除分配。在单个时钟周期内,控制逻辑还将剩余的分配的队列条目向控制队列220的头部移位,使得剩余的分配的队列条目是连续的。在一些实现方式中,控制队列220中的控制逻辑在时钟周期内执行折叠,并且具有可与通过N个2:1多路复用器的传播延迟相当的延迟。因此,用于折叠控制队列220的控制逻辑是可扩展的。应注意,尽管相关于网络交换机描述了部件210、220和230,但在其他实现方式中,部件210、220和230中的一个或多个也在网络交换机之外使用。例如,在一些实现方式中,多于一个部件包括处理器核心、通信结构、存储器控制器、SOC内的另一个客户端等。因此,图3至图9中提供的进一步描述也适用于网络交换机外部的电路和硬件/软件控制逻辑。
现在转向图3,示出了可折叠队列更新逻辑300的一个实现方式的广义框图。在示出的示例中,可折叠队列更新逻辑300,也称为逻辑300,包括从调度器接收到的移位向量状态310。例如,在实现方式中,移位向量状态310是诸如(图2)的调度器222等调度器中的顺序元件的输出。在示出的实现方式中,网络交换机的基数N为3。因此,移位向量状态310包括三个移位向量,即SV0 312、SV1 314和SV2 316。如图所示,移位向量状态312至316中的每一者是6位向量。组合逻辑320接收移位向量状态310,并生成包括移位向量状态332至336的修改的移位向量状态330。如图所示,移位向量状态332与移位向量状态312相同。然而,移位向量状态334和336不同于移位向量状态314和316。
组合逻辑350接收移位向量状态330。另外,组合逻辑350接收队列状态340。队列状态340是可折叠队列中队列条目的输出。在示出的实现方式中,可折叠队列包括6个条目。队列条目0存储数据“A”,队列条目1存储数据“B”等。队列条目0至5存储数据A至F。组合逻辑350基于接收到的输入而生成队列更新状态值360。在实现方式中,将队列更新状态值360发送到可折叠队列以在重新排序之后进行存储。在各种实现方式中,从从外部调度器接收移位向量状态310到将队列更新状态值360发送到可折叠队列进行存储的传播延迟为单个时钟周期。
外部调度器选择要在队列中解除分配的队列条目。在一些实现方式中,这些外部调度器还生成位向量,所述位向量既包括第一位段,每个位存储第一值,又包括第二位段,每个位存储第二值。在各种实现方式中,第一段和第二段在位向量中会合的地方指示要解除分配的选定队列条目。例如,移位向量312(也称为移位向量SV0)是具有6个位的位向量。
移位向量312的第一段在位位置0和1处包括2个位,每个位存储二进制值0。移位向量312的第二段在位位置2至5处包括4个位,每个位存储二进制值1。在该示例中,移位向量312指示队列条目2将被解除分配。因此,存储数据C的队列条目2将被解除分配。移位向量314的第一段在位位置0至3处包括4个位,每个位存储二进制值0。移位向量314的第二段在位位置4至5处包括2个位,每个位存储二进制值1。在该示例中,移位向量314指示队列条目4将被解除分配。因此,存储数据E的队列条目4将被解除分配。移位向量314也被称为移位向量SV1。以类似的方式,移位向量316指示队列条目5将被解除分配。因此,存储数据F的队列条目5将被解除分配。移位向量316也被称为移位向量SV2。
如图所示,组合逻辑320不修改移位向量312。在实现方式中,移位向量332在其6位向量中具有与移位向量312相同的值。组合逻辑320确实修改移位向量314。移位向量314也被称为SV1。移位向量334也被称为{SV1}。在各种实现方式中,组合逻辑320(也称为逻辑320)通过基于存储在移位向量312中的值来将移位向量314中的每个位位置向最低有效位位置移位一定量来生成变换的移位向量334。例如,值SV0[0]为二进制0,并且因此,{SV1}[0]与SV1[0]具有相同的值,该值为0。
以与上述类似的方式,值SV0[1]为二进制0,并且因此,{SV1}[1]与SV1[1]具有相同的值,该值为0。继续移动到较高的位位置,值SV0[2]为二进制1,并且因此,{SV1}[2]与SV1[3]而不是SV1[2]具有相同的值。SV1[3]和{SV1}[2]中的每一者的值为0。因此,{SV1}[2]获得二进制值0,但条件与SV1[0]和SV1[1]不同。继续移动到较高的位位置,值SV0[3]为二进制1,并且因此,{SV1}[3]与SV1[4]而不是SV1[3]具有相同的值。SV1[4]的值为1。因此,{SV1}[3]的值为1。
继续仍然移动到较高的位位置,值SV0[4]为二进制1,并且因此,{SV1}[4]与SV1[5]而不是SV1[4]具有相同的值。SV1[5]的值为1。因此,{SV1}[4]的值为1。最后,值SV0[5]为二进制1,并且因此,{SV1}[5]具有提供的给定值。在一些实现方式中,该值与SV1[5]相同。SV1[5]的值为1。因此,{SV1}[5]的值为1。逻辑320执行类似的步骤以生成变换的移位向量值336,所述变换的移位向量值336也称为{SV2}。然而,逻辑320使用存储在{SV1}和SV0中的每一者而不是单独的SV0中的值。因此,逻辑320基于存储在另一个接收到的位向量(即,SV0)中的值和存储在另一个变换的位向量(即,{SV1})中的值两者而生成有关变换的移位向量{SV1}的值。
在一些实现方式中,逻辑320使用以下步骤来生成变换的移位向量{SV2}。值{SV1}[0]为二进制0,并且因此检查SV0[0]而不是SV0[1]。SV0[0]的值为二进制0,并且因此,{SV2}[0]与SV2[0]具有相同的值,该值为0。接着,值{SV1}[1]为二进制0,并且因此,检查SV0[1],而不是SV0[2]。SV0[1]的值为二进制0,并且因此,{SV2}[1]与SV2[1]具有相同的值,该值为0。接下来,值{SV1}[2]为二进制0,并且因此,检查SV0[2],而不是SV0[3]。SV0[2]的值为二进制1,并且因此,{SV2}[2]与SV2[3]具有相同的值,该值为0而不是SV2[2]的值。以类似的方式,生成了有关{SV2}[3:5]的值。
如上所示,当生成为{SV1}[0:5]的移位向量314时,给每个位位置指派了与SV1[0:5]在相同位位置中的值,或者基于存储在相同的位位置中的SV0[0:5]的对应值而给其指派在一个递增位位置中的值。当生成为{SV2}[0:5]的移位向量316时,给每个位位置指派了与SV2[0:5]在相同位位置中的值,或者基于{SV1}[0:5]和SV0[0:5]的对应值而给其指派在接下来的两个递增位位置中的一个中的值。
逻辑350接收变换的位向量值330,并以与上述类似的方式变换队列状态340的值的位置。将结果示出为队列更新状态值360。如图所示,队列条目2、4和5已被解除分配,并且队列条目已折叠。队列条目中示出的反斜杠“/”指示可用于分配的队列条目。
现在转向图4,示出了变换位向量逻辑400的一个实现方式的广义框图。变换位向量逻辑400也被称为逻辑400。在实现方式中,逻辑400用作(图3的)逻辑320。如图所示,多路复用器410A至410F在数据输入线402A至402F上接收位向量SV1[0:5]。多路复用器410A至410F在选择输入线412A至412F上接收不同的位向量SV0[0:5]。多路复用器410A至410F在输出线420A至420F上提供变换的位向量{SV1}[0:5]。
如图所示,多路复用器440A至440F在数据输入线432A至432F上接收位向量SV2[0:5]。多路复用器410A至410F在选择输入线442A至442F上接收不同的位向量SV0[0:5]。多路复用器440A至440F在输出线450A至450F上提供中间位向量,所述中间位向量作为数据输入被发送到多路复用器460A至460F。多路复用器460A至460F在选择输入线462A至462F上接收变换的位向量{SV1}[0:5]。多路复用器460A至460F在输出线470A至470F上提供变换的位向量{SV2}[0:5]。
现在转向图5,示出了变换队列条目逻辑500的一个实现方式的广义框图。变换队列条目逻辑500也被称为逻辑500。在实现方式中,逻辑500用作(图3的)逻辑350。如图所示,多路复用器510A至510F接收位向量,所述位向量包括来自存储在队列条目中的数据A至F中的每一者的位。数据A至F的数据大小可为存储在队列中的多种数据大小中的一个。未示出实际的位位置,因为在实现方式中,逻辑500针对存储在队列条目中的每个位被复制。在数据输入线502A至502F上接收到来自数据A至F中的每一者的位。多路复用器510A至510F在选择输入线512A至512F上接收位向量SV0[0:5]。多路复用器510A至510F在输出线520A至520F上提供中间位向量,所述中间位向量作为数据输入被发送到多路复用器530A至530F。
多路复用器530A至530F在选择输入线532A至532F上接收变换的位向量{SV1}[0:5]。多路复用器530A至530F在输出线540A至540F上提供中间位向量,所述中间位向量作为数据输入被发送到多路复用器550A至550F。多路复用器550A至550F在选择输入线552A至552F上接收变换的位向量{SV2}[0:5]。多路复用器550A至550F在输出线560A至560F上提供变换的位向量{A}至{F}。
现在参考图6,示出了用于管理片上网络交换机的吞吐量的方法600的一个实现方式。出于讨论目的,按顺序次序示出了该实现方式中(以及图7至图8中)的步骤。然而,应注意,在所描述的方法的各种实现方式中,所描述的要素中的一者或多者同时地执行,以与所示不同的次序执行,或者完全地被省略。还可视需要执行其他附加要素。本文中描述的各种系统或设备中的任一者都被配置成实现方法600。
在各种实现方式中,通信结构在一个或多个客户端与一个或多个存储器控制器之间传递流量。在各种实现方式中,通信结构包括状态和控制寄存器以及用于对请求和响应进行排队和存储控制参数的其他存储元件。在各种实现方式中,通信结构包括用于遵循一个或多个通信和网络协议并在一个或多个总线上在源与目的地之间有效地路由流量的控制逻辑。为了有效地路由流量,在各种实现方式中,通信结构还使用多个片上网络(NoC)交换机。
NoC交换机接收数据(框602)。在各种实现方式中,接收到的数据是网络消息。在一些实现方式中,结构在点对点(P2P)环形拓扑中使用NoC交换机。在其他实现方式中,通信结构在集群拓扑中使用具有可编程路由表的NoC交换机。在其他实现方式中,通信结构在拓扑的组合中使用NoC交换机。NoC交换机包括缓冲器,访问所述缓冲器以检索存储器地址(框604)。在一些实现方式中,缓冲器是有序循环缓冲器。
将接收到的数据的各部分(诸如分组有效载荷数据)存储在存储器的由检索到的存储器地址指向的条目中(框606)。将存储器地址以及接收到的数据的指示(即,网络消息)存储在队列的队列条目中(框608)。选择要从存储器中发送出并在网络上发送的消息(框610)。在一些实现方式中,在某一时钟周期内,对存储选定消息的指示的队列条目解除分配(框612)。在该时钟周期内,将剩余的分配的队列条目向队列的末端移位,使得剩余的分配的队列条目以连续方式位于队列中(框614)。
现在参考图7,示出了用于确定移位量来折叠队列的方法700的一个实现方式。将存储器地址以及接收到的消息的指示存储在队列的队列条目中(框702)。选择要在网络上发送的消息(框704)。生成位向量(框706)。在各种实现方式中,所生成的位向量标识存储选定消息的指示的队列条目。选择除第一位向量外的位向量(框708)。参考先前示例,位向量SV0[0:5]未被选择用于稍后的变换。
基于存储在另一个生成的位向量中的值来确定移位量(框710)。例如,将位向量SV0[0:5]发送到多路复用器的选择线,如先前在(图4的)逻辑400中所示。还基于存储在一个或多个其他变换的位向量中的值来确定移位量(框712)。例如,将变换的位向量{SV0}[0:5]发送到多路复用器的选择线,如先前在(图4的)逻辑400中所示。生成选定位向量的变换的位向量(框714)。
在各种实现方式中,通过将选定位向量中的每个位位置向最低有效位位置移位确定量来创建变换的位向量。在其他实现方式中,使每个位位置的值向最高有效位位置移位。如果没有到达最后一个向量(条件框716的“否”分支),则方法700的控制流返回框708,在那里,选择除第一向量外的向量。如果到达最后一个向量(条件框716的“是”分支),则完成生成变换的位向量(框718)。在一些实现方式中,在单个时钟周期内执行变换的位向量的生成。
现在参考图8,示出了用于折叠队列的方法800的一个实现方式。选择队列中存储接收到的网络消息的指示的队列条目(框802)。选择与队列条目在队列中的位置等同的位位置(框804)。基于存储在变换的位向量中的每一者中的选定位位置处的值来确定移位量(框806)。例如,(图5的)逻辑500在多路复用器的选择线上接收未修改的位向量和一个或多个变换的位向量来确定有多少位位置用于使存储在队列条目中的数据位移位。要使用的变换的位向量的数量是基于网络交换机的基数,所述基数是要从队列解除分配的最大队列条目数量。
将选定队列条目的内容向队列的末端移位确定量(框808)。如果没有到达最后一个队列条目(条件框810的“否”分支),则方法800的控制流返回框802,在那里,选择另一个队列条目。如果到达最后一个队列条目(条件框810的“是”分支),则完成折叠队列(框812)。在一些实现方式中,在单个时钟周期内执行队列的折叠。
现在转向图9,示出了可折叠队列更新逻辑900的另一个实现方式的广义框图。如图所示,基数为4,而不是先前示例中的3。从外部调度器中的顺序元件接收位向量902至908。逻辑910至914示出了与先前针对(图4的)逻辑400示出的相同类型的多路复用选择逻辑,但以分布式方式。例如,逻辑910用于变换位向量904。因位向量SV0[0:15]中的逻辑高值而从位向量904转变为其变换的位向量用位向量904中的箭头符号“->”示出。位向量906和908中示出了由多路复用器的选择线上的逻辑高值导致的类似转变。
状态920中示出了外部控制队列的初始状态。中间结果922至926中示出了将导致队列折叠的中间变换。在中间结果922至926之间的多路复用器示出了与先前针对(图5的)逻辑500示出的相同类型的多路复用选择逻辑,但以分布式方式。状态928中示出了控制队列的最终状态。状态928中存储的值被发送到外部控制队列中的顺序元件。如图所示,在位向量904至908正被变换时,同时地生成中间结果922至926。在各种实现方式中,队列的折叠在某一时钟周期内发生,并且具有可与通过N个2:1多路复用器的传播延迟相当的延迟,其中N是等于网络交换机的基数的非零整数。因此,用于折叠队列的控制逻辑是可扩展的。
在各种实现方式中,使用软件应用程序的程序指令来实现先前描述的方法和/或机制。程序指令以高级编程语言(诸如C)描述硬件的行为。可选地,使用硬件设计语言(HDL),诸如Verilog。程序指令存储在非暂时性计机算可读存储介质上。众多类型的存储介质可用。存储介质可由计算系统在使用期间访问以向计算系统提供程序指令和随附数据来用于程序执行。计算系统包括一个或多个存储器和用于执行程序指令的一个或多个处理器。
应强调,上述实现方式仅是实现方式的非限制性示例。一旦充分地了解以上公开内容,众多变化和修改对于本领域的技术人员而言就将变得显而易见。以下权利要求意图被解释为涵盖所有此类变化和修改。
Claims (20)
1.一种网络交换机中的队列,所述队列包括:
多个队列条目,所述多个队列条目被配置成以有序连续方式从最接近所述队列的头部的第一可用条目开始存储数据;
控制逻辑;以及
多个调度器,其中所述多个调度器中的每一者被配置成:
选择所述多个队列条目中的队列条目来解除分配;以及
生成包括具有单个位转变的多个位的位向量,其中所述位转变在所述位向量中的位置标识被选择来解除分配的所述队列条目;并且
其中响应于从所述多个调度器接收到标识所述多个队列条目中的至少两个非连续条目的多个位向量,所述控制逻辑被配置成:
对所述至少两个非连续条目中的每一者解除分配;以及
将保持分配的队列条目向所述队列的所述头部移位,使得保持分配的条目位于从所述队列的所述头部开始的连续条目中。
2.如权利要求1所述的队列,其中所述队列还包括整数N个读取端口和N个写入端口,并且要解除分配的选定队列条目的数量等于N。
3.如权利要求2所述的队列,其中由所述多个调度器相对于服务质量(QoS)参数以无序方式选择所述选定队列条目来解除分配。
4.如权利要求3所述的队列,其中相对于使用期以所述有序方式将所述数据存储在所述多个队列条目中。
5.如权利要求1所述的队列,其中所述控制逻辑还被配置成通过基于存储在另一个接收到的位向量中的值来将接收到的位向量中的每个位位置向最低有效位位置移位一定量来生成所述接收到的位向量的变换的位向量。
6.如权利要求5所述的队列,其中所述量还基于存储在另一个变换的位向量中的值。
7.如权利要求5所述的队列,其中基于存储在变换的位向量的与所述队列中的给定位置等同的位位置处的值来将所述队列中在所述给定位置处的队列条目向所述队列的所述头部移位。
8.如权利要求1所述的队列,其中:
所述队列还包括到存储器的第一接口,所述存储器被配置成存储对应于存储在所述队列中的所述数据的数据;并且
所述控制逻辑还被配置成将存储在所述选定队列条目中的存储器地址发送到所述存储器以读出数据。
9.如权利要求8所述的队列,其中:
所述队列还包括到有序循环缓冲器的第二接口,所述有序循环缓冲器被配置成将标识条目的存储器地址存储在存储器中;并且
所述控制逻辑还被配置成经由所述第二接口将存储在选定队列条目中的存储器地址发送到所述循环缓冲器,以更新所述循环缓冲器的用于标识要分配的存储器条目的条目。
10.如权利要求9所述的队列,其中所述控制逻辑还被配置成:
经由所述第二接口接收存储在所述循环缓冲器中的存储器地址,所述存储器地址标识所述存储器的正被分配的条目;以及
将所述接收到的存储器地址存储在可用队列条目中。
11.一种方法,所述方法包括:
在网络交换机内的队列的多个队列条目中,以有序连续方式从最接近所述队列的头部的第一可用条目开始存储数据;
由多个调度器选择所述多个队列条目中的队列条目来解除分配;
由所述多个调度器生成多个位向量,每个位向量包括具有单个位转变的多个位,其中所述位转变在所述位向量中的位置标识被选择来解除分配的所述队列条目;
响应于从所述多个调度器接收到标识所述多个队列条目中的至少两个非连续条目的多个位向量:
通过所述队列中的控制逻辑,对所述至少两个非连续条目中的每一者解除分配;以及
由所述控制逻辑将保持分配的队列条目向所述队列的所述头部移位,使得保持分配的条目位于从所述队列的所述头部开始的连续条目中。
12.如权利要求11所述的方法,还包括通过基于存储在另一个接收到的位向量中的值来将接收到的位向量中的每个位位置向最低有效位位置移位一定量来生成所述接收到的位向量的变换的位向量。
13.如权利要求12所述的方法,其中所述量还基于存储在另一个变换的位向量中的值。
14.如权利要求12所述的方法,还包括通过所述队列中的所述控制逻辑,基于存储在变换的位向量的与给定条目位置等同的位位置处的值来将所述队列中在所述给定位置处的队列条目向所述队列的所述头部移位。
15.如权利要求14所述的方法,还包括将存储在选定队列条目中的存储器地址发送到存储器以读出数据。
16.一种网络交换机,包括:
队列,所述队列包括多个队列条目,所述多个队列条目被配置成以有序连续方式从最接近所述队列的头部的第一可用条目开始存储数据;
存储器,所述存储器被配置成存储对应于存储在所述队列中的所述数据的数据;
有序循环缓冲器,所述有序循环缓冲器被配置成管理标识所述存储器中的条目的存储器地址;
其中所述队列被配置成:
选择所述多个队列条目中的队列条目来解除分配;以及
生成包括具有单个位转变的多个位的位向量,其中所述位转变在所述位向量中的位置标识被选择来解除分配的所述队列条目;并且
响应于从所述多个调度器接收到标识所述多个队列条目中的至少两个非连续条目的多个位向量:
对所述至少两个非连续条目中的每一者解除分配;以及
将保持分配的队列条目向所述队列的所述头部移位,使得保持分配的条目位于从所述队列的所述头部开始的连续条目中。
17.如权利要求16所述的网络交换机,其中所述队列还被配置成通过基于存储在另一个接收到的位向量中的值来将接收到的位向量中的每个位位置向最低有效位位置移位一定量来生成所述接收到的位向量的变换的位向量。
18.如权利要求17所述的网络交换机,其中所述量还基于存储在另一个变换的位向量中的值。
19.如权利要求17所述的网络交换机,其中所述队列还被配置成基于存储在变换的位向量的与给定位置等同的位位置处的值来将所述队列中在所述给定位置处的队列条目向所述队列的所述头部移位。
20.如权利要求17所述的网络交换机,其中所述队列还被配置成将存储在选定队列条目中的存储器地址发送到所述存储器以读出数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/951,844 | 2018-04-12 | ||
US15/951,844 US10601723B2 (en) | 2018-04-12 | 2018-04-12 | Bandwidth matched scheduler |
PCT/US2019/026571 WO2019199817A1 (en) | 2018-04-12 | 2019-04-09 | Queue in a network switch |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112189324A CN112189324A (zh) | 2021-01-05 |
CN112189324B true CN112189324B (zh) | 2023-09-26 |
Family
ID=66248826
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980031960.5A Active CN112189324B (zh) | 2018-04-12 | 2019-04-09 | 带宽匹配的调度器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10601723B2 (zh) |
EP (1) | EP3777059B1 (zh) |
JP (1) | JP7138190B2 (zh) |
KR (1) | KR102456086B1 (zh) |
CN (1) | CN112189324B (zh) |
WO (1) | WO2019199817A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11294678B2 (en) | 2018-05-29 | 2022-04-05 | Advanced Micro Devices, Inc. | Scheduler queue assignment |
KR20200116268A (ko) * | 2019-04-01 | 2020-10-12 | 에스케이하이닉스 주식회사 | 버퍼 메모리, 이를 이용하는 연산 장치 및 시스템 |
US11334384B2 (en) * | 2019-12-10 | 2022-05-17 | Advanced Micro Devices, Inc. | Scheduler queue assignment burst mode |
US11948000B2 (en) | 2020-10-27 | 2024-04-02 | Advanced Micro Devices, Inc. | Gang scheduling for low-latency task synchronization |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107005494A (zh) * | 2014-12-24 | 2017-08-01 | 英特尔公司 | 用于在交换机中缓冲数据的装置和方法 |
CN107171980A (zh) * | 2016-03-08 | 2017-09-15 | 迈络思科技Tlv有限公司 | 网络交换机中的灵活的缓冲区分配 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05108476A (ja) * | 1991-10-18 | 1993-04-30 | Fujitsu Ltd | 主記憶制御装置 |
US6246680B1 (en) | 1997-06-30 | 2001-06-12 | Sun Microsystems, Inc. | Highly integrated multi-layer switch element architecture |
US7406554B1 (en) | 2000-07-20 | 2008-07-29 | Silicon Graphics, Inc. | Queue circuit and method for memory arbitration employing same |
US6782461B2 (en) | 2002-02-25 | 2004-08-24 | Intel Corporation | Dynamically adjustable load-sharing circular queues |
US20040151197A1 (en) * | 2002-10-21 | 2004-08-05 | Hui Ronald Chi-Chun | Priority queue architecture for supporting per flow queuing and multiple ports |
US7689793B1 (en) | 2003-05-05 | 2010-03-30 | Marvell Israel (M.I.S.L.) Ltd. | Buffer management architecture |
US20080320274A1 (en) * | 2007-06-19 | 2008-12-25 | Raza Microelectronics, Inc. | Age matrix for queue dispatch order |
JP5108476B2 (ja) | 2007-11-22 | 2012-12-26 | アイシン精機株式会社 | 車両用ドアロック装置 |
US8090892B2 (en) * | 2009-06-12 | 2012-01-03 | Freescale Semiconductor, Inc. | Ordered queue and methods therefor |
US9286075B2 (en) * | 2009-09-30 | 2016-03-15 | Oracle America, Inc. | Optimal deallocation of instructions from a unified pick queue |
US9008113B2 (en) | 2010-12-20 | 2015-04-14 | Solarflare Communications, Inc. | Mapped FIFO buffering |
US9397961B1 (en) | 2012-09-21 | 2016-07-19 | Microsemi Storage Solutions (U.S.), Inc. | Method for remapping of allocated memory in queue based switching elements |
US9378168B2 (en) | 2013-09-18 | 2016-06-28 | International Business Machines Corporation | Shared receive queue allocation for network on a chip communication |
US9979668B2 (en) * | 2014-12-22 | 2018-05-22 | Intel Corporation | Combined guaranteed throughput and best effort network-on-chip |
US10178011B2 (en) | 2016-02-10 | 2019-01-08 | Hewlett Packard Enterprise Development Lp | Network traffic management via network switch QoS parameters analysis |
JP6090492B1 (ja) | 2016-03-18 | 2017-03-08 | 日本電気株式会社 | メモリアクセス制御装置、情報処理システム、メモリアクセス制御方法、及び、プログラム |
US10607623B2 (en) * | 2018-01-12 | 2020-03-31 | Ribbon Communications Operating Company, Inc. | Methods and apparatus for supporting communication of content streams using efficient memory organization |
-
2018
- 2018-04-12 US US15/951,844 patent/US10601723B2/en active Active
-
2019
- 2019-04-09 JP JP2020555898A patent/JP7138190B2/ja active Active
- 2019-04-09 KR KR1020207032316A patent/KR102456086B1/ko active IP Right Grant
- 2019-04-09 EP EP19719094.5A patent/EP3777059B1/en active Active
- 2019-04-09 CN CN201980031960.5A patent/CN112189324B/zh active Active
- 2019-04-09 WO PCT/US2019/026571 patent/WO2019199817A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107005494A (zh) * | 2014-12-24 | 2017-08-01 | 英特尔公司 | 用于在交换机中缓冲数据的装置和方法 |
CN107171980A (zh) * | 2016-03-08 | 2017-09-15 | 迈络思科技Tlv有限公司 | 网络交换机中的灵活的缓冲区分配 |
Also Published As
Publication number | Publication date |
---|---|
KR20200139812A (ko) | 2020-12-14 |
KR102456086B1 (ko) | 2022-10-18 |
US20190319891A1 (en) | 2019-10-17 |
EP3777059B1 (en) | 2022-08-17 |
JP7138190B2 (ja) | 2022-09-15 |
WO2019199817A1 (en) | 2019-10-17 |
JP2021521529A (ja) | 2021-08-26 |
CN112189324A (zh) | 2021-01-05 |
EP3777059A1 (en) | 2021-02-17 |
US10601723B2 (en) | 2020-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112189324B (zh) | 带宽匹配的调度器 | |
US11677662B2 (en) | FPGA-efficient directional two-dimensional router | |
CN111190553B (zh) | 使用混合存储器立方体链路的互连系统及方法 | |
JP6535253B2 (ja) | 複数のリンクされるメモリリストを利用する方法および装置 | |
US9841913B2 (en) | System and method for enabling high read rates to data element lists | |
WO2009070324A1 (en) | A method for setting parameters and determining latency in a chained device system | |
CN111630487B (zh) | 用于神经网络处理的共享存储器的集中式-分布式混合组织 | |
US9785367B2 (en) | System and method for enabling high read rates to data element lists | |
US11853231B2 (en) | Transmission of address translation type packets | |
US10540304B2 (en) | Power-oriented bus encoding for data transmission | |
EP3841484B1 (en) | Link layer data packing and packet flow control scheme | |
US11520718B2 (en) | Managing hazards in a memory controller | |
US20220121487A1 (en) | Thread scheduling control and memory splitting in a barrel processor |
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 |