CN116636189A - 用于网络装置中的缓冲包的包仲裁 - Google Patents

用于网络装置中的缓冲包的包仲裁 Download PDF

Info

Publication number
CN116636189A
CN116636189A CN202180086067.XA CN202180086067A CN116636189A CN 116636189 A CN116636189 A CN 116636189A CN 202180086067 A CN202180086067 A CN 202180086067A CN 116636189 A CN116636189 A CN 116636189A
Authority
CN
China
Prior art keywords
packet
buffer
packets
chiplet
record
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.)
Pending
Application number
CN202180086067.XA
Other languages
English (en)
Inventor
T·M·布鲁尔
K·D·波斯佩塞尔
M·格拉西
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.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN116636189A publication Critical patent/CN116636189A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • H04L49/254Centralised controller, i.e. arbitration or scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/36Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • H04L47/6225Fixed service order, e.g. Round Robin
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications

Landscapes

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

Abstract

本文描述用于网络装置中的缓冲包的包仲裁的装置及技术。可在所述网络装置的输入处接收包。可将所述包放置于用于所述输入的缓冲器中,并且可获得所述包的特征。将所述包的记录写入到与所述缓冲器无关的数据结构中,所述记录包含所述特征。基于所述记录中的所述包的所述特征,然后可在多个包之间执行仲裁以从所述缓冲器中选择下一个包以传递到输出。

Description

用于网络装置中的缓冲包的包仲裁
申请案优先权
本申请要求2020年10月20日提交的美国申请序列号17/074,988的优先权权益,所述美国申请以全文引用的方式并入本文中。
背景技术
小芯片是一种用于集成各种处理功能性的新兴技术。一般来说,小芯片系统由离散模块(各自称为“小芯片”)构成,所述离散模块集成在中介层上,且在许多实例中视需要通过一或多个建立的网络互连,以向系统提供所要功能。中介层及所包含的小芯片可封装在一起,以便于与较大系统的其它组件互连。每一小芯片可包含一或多个个别集成电路(IC)或“芯片”,其可能与离散电路组件组合,且共同耦合到相应衬底以便于附接到中介层。系统中的大多数或所有小芯片将被个别地配置用于通过一或多个建立的网络进行通信。
小芯片作为系统的个别模块的配置不同于在单个芯片上实施的此系统,所述芯片在一个衬底(例如单个裸片)上含有不同装置块(例如,知识产权(IP)块),例如芯片上系统(SoC),或集成在印刷电路板(PCB)上的多个离散封装装置。一般来说,小芯片提供比离散封装装置更好的性能(例如,更低的功率消耗、减少的时延等),并且小芯片提供比单裸片芯片更大的生产效益。这些生产效益可包含更高的良率或减少的开发成本及时间。
小芯片系统可包含例如一或多个应用(或处理器)小芯片及一或多个支持小芯片。此处,应用小芯片与支持小芯片之间的区别只是对小芯片系统可能的设计情境的参考。因此,举例来说,合成视觉小芯片系统可包含(仅借助于实例)用于产生合成视觉输出的应用小芯片,以及例如存储器控制器小芯片、传感器接口小芯片或通信小芯片等支持小芯片。在典型的用例中,合成视觉设计者可设计应用小芯片并且从其它方获取支持小芯片。因此,由于避免设计及生产支持小芯片中所体现的功能性,因此减少了设计支出(例如,在时间或复杂性方面)。小芯片还支持原本可能很困难的IP块紧密集成,例如使用不同处理技术或使用不同特征大小(或利用不同的接触技术或间距)制造的IP块。因此,可以模块化方式组装具有不同物理、电气或通信特征的多个IC或IC组合件,以提供实现所要功能的组合件。小芯片系统还可促进调适以适应小芯片系统将被并入到的不同较大系统的需要。在实例中,IC或其它组合件可针对特定功能的功率、速度或发热进行优化,如同传感器可能发生的情况一样,相比于在单个裸片上尝试与其它装置集成,所述IC或其它组合件可更容易地与其它装置集成。此外,通过减小裸片的整体大小,小芯片的良率往往会高于更复杂的单裸片装置的良率。
附图说明
根据下文给出的详细描述及本公开的各种实施例的附图,将更充分地理解本公开。然而,图式不应视为将本公开限制于具体实施例,而是仅用于解释及理解。
图1A及1B说明根据实施例的小芯片系统的实例。
图2说明根据实施例的存储器控制器小芯片的实例的组件。
图3说明根据实施例的通过包缓冲器的处理流。
图4是根据实施例的用于网络装置中的缓冲包的包仲裁的方法的实例的流程图。
图5是机器的实例的框图,本公开的实施例可利用所述机器、在所述机器中或通过所述机器进行操作。
具体实施方式
下文描述的图1提供小芯片系统及在其中操作的组件的实例。小芯片系统可使用基于包的网络在小芯片(例如,下文描述的小芯片协议接口)之间通信。此种基于包的方法可实现具有不同实施方案的小芯片之间的变化响应时间时延或小芯片系统内彼此之间的相对位置的灵活且有效的公差。一般来说,此种基于包的网络接口在输入接口上实施缓冲器,以在由例如网络装置的输出端口服务之前保存接收到的包。当存在多个输入或多个输出时,网络装置可包含仲裁器以将包从输入传送到输出。简单的仲裁器实施方案可以轮循方式服务于输入缓冲器,依次从每个输入缓冲器的头部获取包(或经解码包信息)并将其传递到适当的输出。
更复杂的仲裁器实施方案可考虑包特征,例如大小、目的地输出端口等,并基于这些特征在输入缓冲器头部的包中进行选择,以防止例如在输出端口上存在争用时浪费循环。然而,将包存储在缓冲器中并仲裁读取这些缓冲器的仲裁器实施方案通常仅仲裁在所述缓冲器的头部(例如,输出)可见的包。由于给定输入缓冲器中的包更深,因此这种策略仍然可能导致输出处的争用。
为了改进仲裁器性能,仲裁器可经配置以考虑比在输入缓冲器的输出处可见的包更多的包。这可通过维护保存在输入缓冲器内的包的包特征数据结构来实现。因此,仲裁器在可能的包之间进行选择,以从输入缓冲器中移除并使用包特征传递到输出。在单独的结构中记录与读取仲裁有关的包信息可允许仲裁器考虑更多包。仲裁器可使用例如包大小及缓冲器中的位置的信息来限定包并在读取缓冲器中的包时避免冲突。知道比仅在输入缓冲器的头部处的包更多的包的仲裁器可提高效率并降低时延。下文提供额外细节及实例。
图1A及1B说明根据实施例的小芯片系统110的实例。图1A是安装在外围板105上的小芯片系统110的表示,所述小芯片系统可例如通过外围组件互连高速(PCIe)连接到更广泛的计算机系统。小芯片系统110包含封装衬底115、中介层120及四个小芯片:应用小芯片125、主机接口小芯片135、存储器控制器小芯片140及存储器装置小芯片150。其它系统可包含许多额外小芯片以提供额外功能性,如将从以下论述中显而易见。小芯片系统110的封装以封盖或盖板165说明,但可使用用于小芯片系统的其它封装技术及结构。图1B是为了清楚起见标记小芯片系统中的部件的框图。
应用小芯片125说明为包含片上网络(NOC)130以支持用于小芯片间通信的小芯片网络155。在实例实施例中,NOC 130可包含在应用小芯片125上。在实例中,NOC 130可响应于选定的支持小芯片(例如,小芯片135、140及150)而定义,因此使设计者能够为NOC 130选择适当数目或小芯片网络连接或开关。在实例中,NOC 130可位于单独小芯片上或甚至中介层120内。在如本文所论述的实例中,NOC 130实施小芯片协议接口(CPI)网络。
CPI是基于包的网络,其支持虚拟信道,以实现小芯片之间灵活及高速的交互。CPI实现从小芯片内网络到小芯片网络155的桥接。举例来说,高级可扩展接口(AXI)是设计芯片内通信的广泛使用的规范。然而,AXI规范涵盖大量的物理设计选项,例如物理信道的数目、信号定时、功率等。在单芯片内,通常选择这些选项以满足设计目标,例如功率消耗、速度等。然而,为了实现小芯片系统的灵活性,使用如CPI等适配器在可实施于各种小芯片中的各种AXI设计选项之间介接。通过实现物理信道到虚拟信道的映射且利用包化协议包封基于时间的信令,CPI跨小芯片网络155桥接小芯片内网络。
CPI可利用多种不同的物理层来传输包。物理层可包含简单的导电连接,或可包含驱动器以增加电压,或以其它方式促进在较长距离上传输信号。一个此类物理层的实例可包含高级接口总线(AIB),其在各种实例中可在中介层120中实施。AIB使用具有转发时钟的源同步数据传送来传输及接收数据。以单数据速率(SDR)或双数据速率(DDR)相对于所传输的时钟跨AIB传送包。AIB支持各种信道宽度。当在SDR模式下操作时,AIB信道宽度为20位的倍数(20、40、60、...),并且对于DDR模式,AIB信道宽度为40位的倍数:(40、80、120、...)。AIB信道宽度包含传输及接收信号。信道可经配置以具有对称数目的发射(TX)及接收(RX)输入/输出(I/O),或者具有非对称数目的发射器及接收器(例如,所有发射器或所有接收器)。信道可取决于哪一个小芯片提供主要时钟而充当AIB主要或从属。AIB I/O单元支持三个时钟模式:异步(即,非计时)、SDR及DDR。在各种实例中,非计时模式用于时钟及一些控制信号。SDR模式可使用专用的仅SDR I/O单元,或双用途SDR/DDR I/O单元。
在实例中,CPI包协议(例如,点到点或可路由)可在AIB信道内使用对称的接收及发射I/O单元。CPI串流协议允许更灵活地利用AIB I/O单元。在实例中,串流模式的AIB信道可将I/O单元配置为全部TX、全部RX或者一半TX且一半RX。CPI包协议可在SDR或DDR操作模式中使用AIB信道。在实例中,AIB信道针对SDR模式以80个I/O单元(即,40个TX及40个RX)的增量配置,且针对DDR模式以40个I/O单元的增量配置。CPI串流协议可在SDR或DDR操作模式下使用AIB信道。此处,在实例中,AIB信道针对SDR及DDR模式两者以40个I/O单元为增量。在实例中,向每一AIB信道分配唯一的接口标识符。所述标识符在CPI复位及初始化期间用于确定跨邻近小芯片的成对AIB信道。在实例中,接口标识符是包括七位小芯片标识符、七位列标识符及六位链路标识符的20位值。AIB物理层使用AIB带外移位寄存器来传输接口标识符。使用移位寄存器的位32到51跨越AIB接口在两个方向上传送20位接口标识符。
AIB将堆叠的一组AIB信道限定为AIB信道列。AIB信道列具有一定数目的AIB信道,外加辅助(AUX)信道。辅助信道含有用于AIB初始化的信号。列内的所有AIB信道(辅助信道除外)具有相同配置(例如,全部为TX、全部为RX,或者一半为TX且一半为RX,以及具有相同数目的数据I/O信号)。在实例中,以邻近于AUX信道的AIB信道开始,以连续递增次序对AIB信道编号。与AUX相邻的AIB信道被定义为AIB信道零。
一般来说,个别小芯片上的CPI接口可包含串行化-反串行化(SERDES)硬件。SERDES互连非常适用于需要高速信令及低信号计数的情境。然而,对于复用及解复用、错误检测或校正(例如,使用块级循环冗余检查(CRC))、链路级重试或前向错误校正,SERDE可能会引起额外的功耗及更长的等待时间。然而,当低时延或能耗为超短距离小芯片到小芯片互连的主要关注点时,可利用时钟速率允许以最少时延进行数据传送的并行接口。CPI包含用于使这些超短距离小芯片互连的时延及能耗两者最小化的元件。
对于流控,CPI采用基于信用的技术。如应用小芯片125的接收方向如存储器控制器小芯片140的发送方提供表示可用缓冲器的信用。在实例中,CPI接收方包含用于给定传输时间单位的每一虚拟信道的缓冲器。因此,如果CPI接收方在时间上支持五个消息及单个虚拟信道,则接收方具有布置成五行的五个缓冲器(例如,每一单位时间一行)。如果支持四个虚拟信道,则接收方具有布置成五行的二十个缓冲器。每一缓冲器保持一个CPI包的有效负载。
当发送方向接收方进行传输时,发送方基于传输而使可用信用递减。一旦消耗接收方的所有信用,发送方就停止向接收方发送包。这确保接收方始终具有可用缓冲器以存储传输。
当接收方处理接收到的包并释放缓冲器时,接收方将可用缓冲空间传达回发送方。接着,发送方可使用此信用返回以允许传输额外信息。
还说明小芯片网状网络160,其使用直接小芯片到小芯片技术,而不需要NOC 130。小芯片网状网络160可在CPI或另一小芯片到小芯片协议中实施。小芯片网状网络160通常实现小芯片流水线,其中一个小芯片充当到流水线的接口,而流水线接口中的其它小芯片仅与自身介接。
另外,专用装置接口,例如一或多个工业标准存储器接口145(例如,同步存储器接口,例如DDR5、DDR 6)还可用于互连小芯片。小芯片系统或个别小芯片到外部装置的连接(例如,较大系统可通过所要接口(例如,PCIE接口))。在实例中,可通过主机接口小芯片135实施此外部接口,在所描绘的实例中,所述主机接口小芯片提供小芯片系统110外部的PCIE接口。当行业中的惯例或标准已汇聚在此类专用接口145上时,通常采用此类接口。将存储器控制器小芯片140连接到动态随机存取存储器(DRAM)存储器装置150的双数据速率(DDR)接口145的所说明实例仅为此类行业惯例。
在多种可能的支持小芯片中,存储器控制器小芯片140很可能存在于小芯片系统110中,这是因为几乎无所不在地使用存储来进行计算机处理以及对存储器装置使用先进技术。因此,使用由其它设计者产生的存储器装置小芯片150及存储器控制器小芯片140使小芯片系统设计者能够获得由成熟生产商生产的稳健产品。通常,存储器控制器小芯片140提供存储器装置特定接口来读取、写入或擦除数据。通常,存储器控制器小芯片140可提供额外特征,例如错误检测、错误校正、维护操作或原子运算符执行。对于一些类型的存储器,维护操作往往特定针对存储器装置150,例如NAND快闪或存储类存储器中的垃圾收集、NAND快闪存储器中的温度调整(例如,交叉温度管理)。在实例中,维护操作可包含逻辑到物理(L2P)映射或管理,以在数据的物理与逻辑表示之间提供间接层级。在例如DRAM的其它类型的存储器中,例如刷新的一些存储器操作可在某些时间由主机处理器或存储器控制器控制,且在其它时间由DRAM存储器装置或与一或多个DRAM装置相关联的逻辑控制,所述逻辑例如接口芯片(在实例中,缓冲器)。
原子操作符是例如可由存储器控制器小芯片140执行的数据操纵。在其它小芯片系统中,原子运算符可由其它小芯片执行。举例来说,可由应用小芯片125在命令中指定“增量”的原子运算符,所述命令包含存储器地址且可能包含增量值。在接收到命令后,存储器控制器小芯片140从指定存储器地址检索数字,使所述数字递增命令中所指定的量,并且存储结果。在成功完成后,存储器控制器小芯片140向应用小芯片125提供命令成功的指示。原子运算符避免跨小芯片网络160传输数据,从而减少执行此类命令的时延。
原子运算符可被分类为内置原子或可编程(例如,自定义)原子。内置原子是在硬件中不变地实施的一组有限的操作。可编程原子是可在存储器控制器小芯片140的可编程原子单元(PAU)(例如,自定义原子单元(CAU))上执行的小程序。图1说明论述PAU的存储器控制器小芯片的实例。
存储器装置小芯片150可为或包含易失性存储器装置或非易失性存储器的任何组合。易失性存储器装置的实例包含但不限于随机存取存储器(RAM),例如DRAM)、同步DRAM(SDRAM)、图形双数据速率类型6SDRAM(GDDR6 SDRAM)等等。非易失性存储器装置的实例包含但不限于与非(NAND)型快闪存储器、存储类存储器(例如,相变存储器或基于忆阻器的技术)、铁电RAM(FeRAM)等。所说明实例包含作为小芯片的存储器装置150,然而,存储器装置150可驻存在其它地方,例如在外围板105上的不同封装中。对于许多应用程序,可提供多个存储器装置小芯片。在实例中,这些存储器装置小芯片可各自实施一或多种存储技术。在实例中,存储器小芯片可包含不同技术的多个堆叠存储器裸片,例如一或多个静态随机存取存储器(SRAM)装置与一或多个动态随机存取存储器(DRAM)装置堆叠或以其它方式通信。存储器控制器140还可用于协调小芯片系统110中的多个存储器小芯片之间的操作;例如,在一或多个层级的高速缓存存储装置中利用一或多个存储器小芯片,并且使用一或多个额外存储器小芯片作为主存储器。小芯片系统110还可包含多个存储器控制器140,其可用于提供用于单独处理器、传感器、网络等的存储器控制功能性。例如小芯片系统110的小芯片架构提供允许通过更新的小芯片配置适合于不同存储器存储技术;及不同存储器接口,而不需要重新设计系统结构的其余部分的优点。
图2说明根据实施例的存储器控制器小芯片205的实例的组件。存储器控制器小芯片205包含高速缓存210、高速缓存控制器215、裸片外存储器控制器220(例如,用于与裸片外存储器275通信)、网络通信接口225(例如,用于与小芯片网络285介接且与其它小芯片通信),及一组原子及合并单元250。此集合的成员可包含例如写入合并单元255、存储器危险单元260、内置原子单元265或PAU 270。各种组件按逻辑说明,并且它们未必会实施。举例来说,内置原子单元265可能包括沿着到裸片外存储器的路径的不同装置。举例来说,内置原子单元265可在存储器小芯片上的接口装置/缓冲器中,如上文所论述。相比之下,可编程原子单元270可在存储器控制器小芯片205上的单独处理器中实施(但在各种实例中,可在其它位置中实施,例如在存储器小芯片上实施)。
裸片外存储器控制器220直接耦合到裸片外存储器275(例如,经由总线或其它通信连接)以提供向例如裸片外存储器275及裸片外存储器280的所述一或多个裸片外存储器的写入操作及从所述一或多个裸片外存储器的读取操作。在所描绘的实例中,裸片外存储器控制器220还经耦合以输出到原子及合并单元250,并输入到高速缓存控制器215(例如,存储器侧高速缓存控制器)。
在实例配置中,高速缓存控制器215直接耦合到高速缓存210,且可耦合到网络通信接口225以进行输入(例如传入读取或写入请求),且经耦合以输出到裸片外存储器控制器220。
网络通信接口225包含包解码器230、网络输入队列235、包编码器240及网络输出队列245,以支持基于包的小芯片网络285,例如CPI。小芯片网络285可提供处理器、存储器控制器、混合线程处理器、可配置处理电路或通信接口之间及当中的包路由。在此类基于包的通信系统中,每一包通常包含目的地及源寻址,以及任何数据有效负载或指令。在实例中,取决于配置,小芯片网络285可实施为具有折叠Clos配置的交叉开关的集合,或提供额外连接的网状网络。
网络通信接口225可经配置以实施缓冲包的包仲裁。在此上下文中,存储器控制器205可被视为网络装置。相同机制也可应用于小芯片系统中的任何小芯片,例如小芯片系统110中的应用小芯片125,或应用于专用网络装置,例如NOC 130。在NOC的实例中,网络装置可为开关。然而,为简单起见,网络通信接口225用作用于所描述的包仲裁技术的实例网络装置。
网络通信接口225经配置以在输入处接收包。如所说明,输入连接到小芯片网络285并且将包传递到输入队列235。如上文在图1中所述,CPI到AXI桥可包含通过虚拟信道来自单个硬件连接的多个输入。因此,包指定虚拟信道,一旦接收到虚拟信道,所述虚拟信道就被视为不同的硬件输入。在具有这种类型的布置的情况下,网络输入队列235可包含多个缓冲器,每个虚拟输入至少一个缓冲器。
网络通信接口225经配置以将所接收的包放置在用于输入的缓冲器中。因此,当接收到用于输入A的包时,缓冲器A用于存储所述包。在实例中,缓冲器实施为先入先出(FIFO)队列,包被插入(例如,推送)在缓冲器的尾部并从缓冲器的头部移除(弹出)。实际硬件实施方案可通过例如随机存取存储器的连续区域的头指针及尾指针而变化。此处,可在存储器中实施多个缓冲器,这些缓冲器通过对用于存取存储器的地址的约束来保持分离。此布置也可为有效的,因为包不需要在存储器中移动以朝向队列的头部移动。相反,当队列指针移动时,任何给定包的相对位置移动,而不会将包复制到新的存储器地址。然而,也可使用其它缓冲器实施方案。
网络通信接口225经配置以例如通过包分析仪电路系统获得包的特征。为了获得包特征,网络通信接口225可从包(例如,目的地)读取信息,对包(例如,包的大小)进行测量,或记录包的上下文(例如,包在输入缓冲器中占据的位置,或包在缓冲器中花费的时间)。由网络通信接口225获得的特定包特征可广泛地变化,但鉴于正在仲裁的其它包,通常将寻址与仲裁到输出的包传递相关的信息。因此,包的大小及位置有助于确定在将包传递到输出时给定输出将不可用多长时间(例如,多少时钟循环)。在实例中,对于例如包上下文(例如,在缓冲器中的位置)的不同值,网络通信接口225经配置以持续地监测(例如,通过轮询或以事件驱动的方式)上下文,并在它们变得可用时获得更新的包特征。
网络通信接口225经配置以例如通过包分析仪电路系统将包的记录写入到数据结构中。写入的记录包含由网络通信接口225获得的包特征。此数据结构可称为ArbInfo,因为它是与仲裁相关的信息。在实例中,数据结构与缓冲器无关。将数据结构与缓冲器分开维护可提供缓冲器及数据结构的更简单或更灵活的设计。在实例中,当包特征是动态的,例如缓冲器中的包位置时,网络通信接口225经配置以在获得关于包的更新信息时更新数据结构中的包的记录。在实例中,记录包含包的多个特征。因此,单个记录用于保存单个包的多个包特征。
网络通信接口225经配置以在多个包之间执行仲裁,以从缓冲器中选择下一个包以传递到输出。仲裁可由专用仲裁器电路系统(例如,图3中所说明的仲裁器330)执行。仲裁基于(例如,考虑)数据结构中保存的包记录中写入的包的一或多个特征。在实例中,当记录包含多个包特征时,在多个包之间进行仲裁以从缓冲器中选择下一个包是基于数据结构中的记录中保存的包的多个特征。因此,在此实例中,在仲裁中使用多于一个特征,或所有特征。主要地,仲裁试图减少输出上的争用,以防止输入缓冲器的读取停滞。在给定三个输入缓冲器的情况下,基于包特征的仲裁的实例可包含在缓冲器A的头部处的包去往输出Z且较大,在缓冲器B的头部处的包去往输出Y且缓冲器B中的第二包去往输出Z,并且在缓冲器C的头部处的包去往输出Y的情况。此处,仲裁器可选择缓冲器A的头部并且跳过缓冲器B以在下一时钟循环上选择缓冲器C的头部,因为缓冲器B将在等待缓冲器A的读取完成的第二包上停滞。或者,如果缓冲器B的前两个包较小,则可以选择缓冲器B将其传递到输出Z及Y,然后将较大的包从缓冲器A及C传递到这些输出。
在实例中,数据结构是对应于缓冲器且用于保存仲裁中考虑的缓冲包的特征的数据结构集合中的一个。在实例中,数据结构集合的基数(例如,数目)等于所考虑的多个包的数目。因此,如果在每一轮仲裁时考虑来自多个缓冲器的一个包,则每个缓冲器有一个数据结构。在实例中,当多个包来自不同缓冲器时,下一个包是用于缓冲器的队列头包。此处,仲裁器可从给定缓冲器读取的唯一包在缓冲器的头部处。然而,在决定读取哪个缓冲器头部并将其传递到输出时,考虑更深的缓冲器上下文(例如,不在缓冲器的头部处的包)。虽然从缓冲器中取出无序的包是可能的,但这通常会使仲裁复杂化,可能会使用额外的电路系统来防止包在缓冲器中滞留太久。在实例中,数据结构集合的基数等于缓冲器中的虚拟队列的数目。此实例考虑具有虚拟子缓冲器的单个缓冲器,例如基于例如存在于许多CPI包中的虚拟信道。在实例中,虚拟队列的数目等于网络装置中的缓冲器输出的数目。此实例表示一种便于CPI到AXI桥接等的结构,其中虚拟信道与小芯片内通信技术上的硬连线信道具有相关性。
在各种实例中,小芯片网络285可为异步交换结构的一部分。此处,数据包可沿着各种路径中的任一个路由,使得任何所选择数据包可取决于路由而在多个不同时间中的任何时间到达寻址的目的地。此外,小芯片网络285可至少部分地实施为同步通信网络,例如同步网状通信网络。经考虑,例如根据本公开使用通信网络的两种配置。
存储器控制器小芯片205可接收具有例如源地址、读取请求及物理地址的包。作为响应,裸片外存储器控制器220或高速缓存控制器215将从指定物理地址(其可在裸片外存储器275或高速缓存210中)读取数据,并将响应包汇编成含有所请求数据的源地址。类似地,存储器控制器小芯片205可接收具有源地址、写入请求及物理地址的包。作为响应,存储器控制器小芯片205将数据写入到指定的物理地址(其可在高速缓存210或裸片外存储器275或280中),且将响应包汇编成含有数据被存储到存储器的确认的源地址。
因此,在可能的情况下,存储器控制器小芯片205可经由小芯片网络285接收读取及写入请求,并且使用与高速缓存210介接的高速缓存控制器215来处理所述请求。如果高速缓存控制器215无法处理所述请求,则裸片外存储器控制器220通过与裸片外存储器275或280、原子及合并单元250或两者通信来处理所述请求。如上所述,一或多个层级的高速缓存还可在裸片外存储器275或280中实施;且在一些此类实例中可由高速缓存控制器215直接存取。由裸片外存储器控制器220读取的数据可由高速缓存控制器215高速缓存于高速缓存210中以供后续使用。
原子及合并单元250经耦合以接收(作为输入)裸片外存储器控制器220的输出,且将输出提供到高速缓存210、网络通信接口225,或直接提供到小芯片网络285。存储器危险单元260、写入合并单元255及内置(例如,预定)原子单元265可各自实施为具有其它组合逻辑电路系统(例如加法器、移位器、比较器、AND门、OR门、XOR门或其任何合适的组合)或其它逻辑电路系统的状态机。这些组件还可包含一或多个寄存器或缓冲器以存储操作数或其它数据。PAU 270可实施为一或多个处理器核心或控制电路系统,以及具有其它组合逻辑电路系统或其它逻辑电路系统的各种状态机,且还可包含一或多个寄存器、缓冲器或存储器以存储地址、可执行指令、操作数及其它数据,或可实施为处理器。
写入合并单元255接收读取数据及请求数据,并且合并请求数据及读取数据以产生具有读取数据及将在响应或返回数据包)中使用的源地址的单个单元。写入合并单元255将合并的数据提供到高速缓存210的写入端口(或等效地,提供到高速缓存控制器215以写入到高速缓存210)。任选地,写入合并单元255将合并的数据提供到网络通信接口225以编码且准备响应或返回数据包以在小芯片网络285上进行传输。
当请求数据用于内置原子运算符时,内置原子单元265从写入合并单元255或直接从裸片外存储器控制器220接收请求及读取数据。执行原子运算符,且使用写入合并单元255将所得数据写入到高速缓存210,或提供到网络通信接口225以编码并准备响应或返回数据包以在小芯片网络285上传输。
内置原子单元265处理预定义原子运算符,例如提取并递增或比较并交换。在实例中,这些操作对大小为32字节或更小的单个存储器位置进行简单的读取-修改-写入操作。从通过小芯片网络285传输的请求包发起原子存储器操作。所述请求包具有物理地址、原子运算符类型、操作数大小,及任选地具有至多32字节的数据。原子运算符对高速缓存210的高速缓存存储器行执行读取-修改-写入,从而在必要时填充高速缓存存储器。原子运算符响应可为简单的完成响应,或具有至多32字节的数据的响应。实例原子存储器运算符包含提取并与、提取并或、提取并异或、提取并加、提取并减、提取并递增、提取并递减、提取并最小、提取并最大、提取并交换及比较并交换。在各种实例实施例中,支持32位及64位操作以及对16或32字节的数据的操作。本文所公开的方法还与支持较大或较小操作及较多或较少数据的硬件兼容。
内置原子运算符还可涉及对关于所请求数据的“标准”原子运算符的请求,例如相对简单的单循环整数原子,例如提取并递增或比较并交换,其吞吐量将与不涉及原子运算符的常规存储器读取或写入操作相同。对于这些操作,高速缓存控制器215通常可通过(在硬件中)设置危险位来保留高速缓存210中的高速缓存行,使得高速缓存行在转换时无法由另一过程读取。从裸片外存储器275或高速缓存210获得数据,且将所述数据提供到内置原子单元265以执行所请求的原子运算符。在原子运算符之后,除了将所得数据提供到包编码器240以对传出数据包进行编码以在小芯片网络285上传输之外,内置原子单元265还将所得数据提供到写入合并单元255,所述写入合并单元还将所得数据写入到高速缓存210。在将所得数据写入到高速缓存210之后,存储器危险单元260将清除所设置的任何对应危险位。
PAU 270实现可编程原子运算符(也称为“自定义原子事务”或“自定义原子运算符”)的高性能(高吞吐量及低时延),其与内置原子运算符的性能相当。代替执行多个存储器存取,响应于原子运算符请求指定可编程原子运算符及存储器地址,存储器控制器小芯片205中的电路系统将原子运算符请求传送到PAU 270,并设置存储在存储器危险寄存器中的对应于原子运算符中所使用的存储器行的存储器地址的危险位,以确保不对所述存储器行执行其它操作(读取、写入或原子),接着在原子运算符完成之后清除所述危险位。为执行可编程原子运算符的PAU 270提供的额外直接数据路径允许额外的写入操作,而不会受到由通信网络的带宽施加的任何限制,且不会增加通信网络的任何拥塞。
PAU 270包含例如基于RISC-V ISA的多线程处理器的多线程处理器,其具有一或多个处理器核心,且进一步具有用于执行可编程原子运算符的扩展指令集。当具有用于执行可编程原子运算符的扩展指令集时,PAU 270可体现为一或多个混合线程处理器。在一些实例实施例中,PAU 270提供桶式轮循瞬时线程切换以维持较高的每时钟指令速率。
可编程原子运算符可由PAU 270进行,所述可编程原子运算符涉及对关于所请求数据的可编程原子运算符的请求。用户可准备编程代码以提供这些可编程原子运算符。举例来说,可编程原子运算符可为相对简单的多循环操作,例如浮点加法,或可为相对复杂的多指令操作,例如布隆过滤器插入。可编程原子运算符可与预定原子运算符相同或不同,如此的原因是它们是由用户而不是系统供应商定义的。对于这些操作,高速缓存控制器215可通过(在硬件中)设置危险位来保留高速缓存210中的高速缓存行,使得高速缓存行在转变时无法由另一过程读取。从高速缓存210或裸片外存储器275或280获得数据,且将所述数据提供到PAU 270以执行所请求的可编程原子运算符。在原子运算符之后,PAU 270将所得数据提供到网络通信接口225以直接编码具有所得数据的传出数据包以在小芯片网络285上进行传输。另外,PAU 270将所得数据提供到高速缓存控制器215,所述高速缓存控制器还将所得数据写入到高速缓存210。在将所得数据写入到高速缓存210之后,高速缓存控制电路215将清除所设置的任何对应危险位。
在所选择的实例中,针对可编程原子运算符所采用的方式是提供多个通用的自定义原子请求类型,其可通过小芯片网络285从例如处理器或其它系统组件等起始源发送到存储器控制器小芯片205。高速缓存控制器215或裸片外存储器控制器220将请求识别为自定义原子且将所述请求转发到PAU 270。在代表性实施例中,PAU 270:(1)是能够有效地执行用户定义的原子运算符的可编程处理元件;(2)可对存储器、算术及逻辑操作以及控制流决策执行加载及存储;并且(3)利用具有一组新的专用指令的RISC-V ISA来促进与此类控制器215、220的交互,从而以原子方式执行用户定义的操作。在合乎需要的实例中,RISC-VISA含有支持高级语言运算符及数据类型的完整指令集。PAU 270可利用RISC-V ISA,但通常会支持更有限的指令集及有限的寄存器文件大小,以在包含在存储器控制器小芯片205内时减小单元的裸片大小。
如上文所提及,在将读取数据写入到高速缓存210之前,存储器危险清除单元260将清除预留高速缓存行的所设置的危险位。因此,当写入合并单元255接收到请求及读取数据时,存储器危险清除单元260可将复位或清除信号传输到高速缓存210以复位预留高速缓存行的所设置的存储器危险位。并且,复位此危险位还将释放涉及所指定(或所保留)的高速缓存行的未决读取或写入请求,从而将未决读取或写入请求提供到入站请求多路复用器以供选择及处理。
图3说明根据实施例的通过包缓冲器的处理流。如所说明,在网络装置的输入接口305处接收包310。包进行缓冲(例如,放置到缓冲器315中)。如所说明,将缓冲器315分成由不同阴影表示的三个子缓冲器。对于每个子缓冲器,维护数据结构,如在数据结构355、数据结构350及数据结构320处说明。所有数据结构维持在缓冲器315中的包的记录,例如包310的记录325。
仲裁器330实施为网络装置中的电路块,并且当在操作时通信地耦合到缓冲器315及数据结构355、350及320。在一轮仲裁期间(例如,在每个时钟循环),仲裁器咨询数据结构355、350或320以确定从哪个子缓冲器读取包组并传递到适当的输出,例如输出接口335、输出接口340或输出接口345。仲裁器330用于比较记录的实际技术可变化。举例来说,仲裁器330可对每个子缓冲器中的前三个包的包大小进行求和,并选择最小的包。在实例中,仲裁器330可在子缓冲器的头部处使用关于包大小的阈值,并且只有当大小高于阈值时,才更深入地查看第二子缓冲器以确定是立即传递包还是等待。
在单独的结构中记录与读取仲裁有关的包信息可允许仲裁器考虑更多包。例如包大小及缓冲器中的位置的信息将允许仲裁器限定包并在读取输入缓冲器中的包时避免冲突。这种实施方案将允许读取缓冲器的仲裁器考虑更多包用于仲裁,这可提高效率并降低延迟。
图4是根据实施例的用于网络装置中的缓冲包的包仲裁的方法400的实例的流程图。方法400的操作由计算机硬件,例如关于图1(例如,NOC 130中或例如存储器控制器小芯片140的其它小芯片中的NOC接口)、图2(例如,网络接口225或网络输入队列235)或图5(例如,处理电路系统)描述的计算机硬件执行。
在操作405处,在网络装置的输入处接收包。
在操作410处,将包置于缓冲器中以用于输入。
在操作415处,获得包的特征。在实例中,包特征是包的大小,并且其中获得包的特征包含测量包的大小。在实例中,包的特征是包在缓冲器中的位置。
在操作420处,将包的记录写入到与缓冲器无关的数据结构中。写入的记录包含在操作415处获得的包特征。在实例中,当包特征是包在缓冲器中的位置时,可响应于包在缓冲器内移动而更新记录以指示包在缓冲器中的新位置。此处,缓冲器内的移动可包含将包从缓冲器中的一个位置复制到另一位置。或者,包保持在相同的物理存储器装置(例如,存储器块、寄存器等)中,但相对于缓冲器的头指针或尾指针移动。在此实例中,包的移动相对于缓冲器的头部,但避免额外的存储器复制来物理移动包。在实例中,记录包含包的多个特征。
在操作425处,在多个包中执行仲裁以从缓冲器选择下一个包以传递到输出。此处,仲裁基于从数据结构中的记录获得的包的特征。在实例中,当记录包含多个包特征时,在多个包之间进行仲裁以从缓冲器中选择下一个包是基于数据结构中的记录中保存的包的多个特征。
在实例中,数据结构是对应于缓冲器且用于保存仲裁中考虑的缓冲包的特征的数据结构集合中的一个。在实例中,数据结构集合的基数等于多个包的数目。在实例中,多个包来自不同缓冲器,并且其中下一数据包是用于缓冲器的队列头包。数据结构集合的基数等于缓冲器中的虚拟队列的数目。在实例中,虚拟队列的数目等于网络装置中的缓冲器输出的数目。
图5说明实例机器500的框图,可利用所述机器、在所述机器中或通过所述机器实施本文中所论述的任何一或多种技术(例如,方法)。如本文中所描述,实例可包含机器500中的逻辑或多个组件或机构,或可由机器500中的逻辑或多个组件或机构操作。电路系统(例如,处理电路系统)是在机器500的有形实体中实施的电路集合,其包含硬件(例如,简单电路、门、逻辑等)。电路系统成员资格可随时间推移为灵活的。电路系统包含在操作时可单独或组合地执行特定操作的成员。在实例中,可以不可改变的方式设计电路系统的硬件以进行特定操作(例如,硬连线)。在实例中,电路系统的硬件可包含可变地连接的物理组件(例如,执行单元、晶体管、简单电路等),所述物理组件包含以物理方式修改(例如,不变集中式粒子的磁性、电气可移动放置等)以对特定操作的指令进行编码的机器可读媒体。在连接物理组件时,改变硬件组成部分的根本电性质,例如从绝缘体变为导体,或反之亦然。指令使得嵌入式硬件(例如,执行单元或加载机构)能够经由可变连接以硬件创建电路系统的构件以在处于操作中时实行特定操作的部分。因此,在实例中,机器可读媒体元件是电路系统的一部分或在装置操作时以通信方式耦合到电路系统的其它组件。在实例中,物理组件中的任一个可用于多于一个电路系统中的多于一个构件中。举例来说,在操作下,执行单元可在一个时间点用于第一电路系统中的第一电路,且在不同时间由第一电路系统中的第二电路重新使用,或由第二电路系统中的第三电路重新使用。下面是关于机器500的这些组件的额外实例。
在替代实施例中,机器500可充当独立装置或可连接(例如,联网)到其它机器。在联网部署中,机器500可在服务器-客户端网络环境中以服务器机器、客户端机器或这两者的容量操作。在实例中,机器500可充当对等(P2P)(或其它分布式)网络环境中的对等机器。机器500可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、网络器具、网络路由器、交换机或桥接器,或能够执行(循序或以其它方式)指定待由所述机器采取的动作的指令的任何机器。此外,虽然仅说明单个机器,但术语“机器”还应被视为包含单独或联合执行一组(或多组)指令以执行本文论述的方法论中的任何一或多种的任何机器集合,例如云计算、软件即服务(SaaS)、其它计算机集群配置。
机器(例如,计算机系统)500可包含硬件处理器502(例如,中央处理单元(CPU)、图形处理单元(GPU)、硬件处理器核心或其任何组合)、主存储器504、静态存储器(例如,用于固件、微码、基本输入输出(BIOS)、统一可扩展固件接口(UEFI)等的存储器或存储装置)506,及大容量存储装置508(例如,硬盘驱动器、磁带机、快闪存储装置或其它块装置),其中的一些或全部可经由互联件(例如,总线)530彼此通信。机器500可进一步包含显示单元510、字母数字输入装置512(例如,键盘),及用户接口(UI)导航装置514(例如,鼠标)。在实例中,显示单元510、输入装置512及UI导航装置514可为触摸屏显示器。机器500可另外包含存储装置(例如,驱动单元)508、信号生成装置518(例如,扬声器)、网络接口装置520,及一或多个传感器516,例如全球定位系统(GPS)传感器、罗盘、加速计或其它传感器。机器500可包含输出控制器528,例如串行(例如,通用串行总线(USB)、并行或其它有线或无线(例如,红外(IR)、近场通信(NFC)等)连接以与一或多个外围装置(例如,打印机、读卡器等)通信或控制所述一或多个外围装置。
处理器502、主存储器504、静态存储器506或大容量存储装置508的寄存器可为或包含其上存储有一或多组数据结构或指令524(例如,软件)的机器可读媒体522,所述一或多组数据结构或指令体现本文中所描述的技术或功能中的任何一或多种,或由本文中所描述的技术或功能中的任何一或多种利用。指令524还可在其由机器500执行期间完全或至少部分地驻存在处理器502、主存储器504、静态存储器506或大容量存储装置508的寄存器中的任何一个内。在实例中,硬件处理器502、主存储器504、静态存储器506或大容量存储装置508中的一个或任何组合可构成机器可读媒体522。虽然机器可读媒体522被说明为单个媒体,但术语“机器可读媒体”可包含经配置以存储一或多个指令524的单个媒体或多个媒体(例如,集中式或分布式数据库,或相关联高速缓存及服务器)。
术语“机器可读媒体”可包含能够存储、编码或载送供机器500执行且使机器500执行本公开的技术中的任何一或多者的指令的任何媒体,或能够存储、编码或载送由此类指令使用或与此类指令相关联的数据结构的任何媒体。非限制性机器可读媒体实例可包含固态存储器、光学媒体、磁性媒体及信号(例如,射频信号、其它基于光子的信号、声音信号等)。在实例中,非暂时性机器可读媒体包括具有多个粒子的机器可读媒体,所述粒子具有不变(例如,静止)质量,且因此为物质组成。因此,非暂时性机器可读媒体是不包含暂时性传播信号的机器可读媒体。非暂时性机器可读媒体的特定实例可包含:非易失性存储器,例如半导体存储器装置(例如,电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))及快闪存储器装置;磁盘,例如内部硬盘及可移式盘;磁光盘;及CD-ROM及DVD-ROM盘。
在实例中,存储或以其它方式提供在机器可读媒体522上的信息可表示指令524,例如指令524本身或可从其导出指令524的格式。可从其导出指令524的此格式可包含源码、编码指令(例如,呈压缩或加密形式)、封装指令(例如,拆分成多个封装)等。表示机器可读媒体522中的指令524的信息可由处理电路系统处理到指令中以实施本文中所论述的操作中的任一个。举例来说,从信息(例如,通过处理电路系统处理)导出指令524可包含:将信息编译(例如,从源码、目标码等)、解译、加载、组织(例如,动态地或静态地链接)、编码、解码、加密、解密、封装、解封装或以其它方式操纵到指令524中。
在实例中,指令524的导出可包含(例如,通过处理电路系统)对信息的汇编、编译或解译以从由机器可读媒体522提供的一些中间或预处理格式创建指令524。当在多个部分中提供信息时,可组合、解封装及修改所述信息以创建指令524。举例来说,信息可在一个或若干个远程服务器上的多个经压缩源代码封装(或目标代码,或二进制可执行代码等)中。源代码封装可在通过网络传输时加密,且在必要时解密、解压缩、汇编(例如,链接),且在本地机器处编译或解译(例如,到可独立执行的库中等),且由本地机器执行。
指令524可进一步利用多个传送协议中的任一个(例如,帧中继、因特网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)、超文本传送协议(HTTP)等)经由网络接口装置520使用传输媒体在通信网络526上传输或接收。实例通信网络可包含局域网(LAN)、广域网(WAN)、包数据网络(例如,因特网)、移动电话网络(例如,蜂窝网络)、简易老式电话(POTS)网络及无线数据网络(例如,称为的电气电子工程师学会(IEEE)802.11系列标准、称为/>的IEEE 802.16系列标准)、IEEE 802.15.4系列标准、对等(P2P)网络等等。在实例中,网络接口装置520可包含一或多个物理插口(例如,以太网、同轴或电话插口)或一或多个天线以连接到通信网络526。在实例中,网络接口装置520可包含多个天线以使用单输入多输出(SIMO)、多输入多输出(MIMO)或多输入单输出(MISO)技术中的至少一个无线地通信。术语“传输媒体”应被视为包含能够存储、编码或载送指令以由机器500执行的任何无形媒体,且包含数字或模拟通信信号或用于促进此软件的通信的其它无形媒体。传输媒体是机器可读媒体。为了更好地说明本文中所描述的方法及设备,一组非限制性实例实施例在下文阐述为带编号的实例。
实例1是一种网络装置,其包括:输入,其经配置以接收包;缓冲器,其用于所述输入以保存所述包;输出;包分析仪电路系统,其经配置以:获得所述包的特征;及将所述包的记录写入到与所述缓冲器无关的数据结构中,所述记录包含所述特征;及仲裁器,其经配置以基于从所述数据结构中的所述记录获得的所述包的所述特征而在多个包之间执行仲裁以从所述缓冲器中选择下一个包以传递到所述输出。
在实例2中,根据实例1所述的标的物,其中所述包的所述特征是所述包的大小,并且其中为了获得所述包的所述特征,所述包分析仪电路系统经配置以测量所述包的所述大小。
在实例3中,根据实例1至2中任一项所述的标的物,其中所述包的所述特征是所述包在所述缓冲器中的位置。
在实例4中,根据实例3所述的标的物,其中所述包分析仪电路系统经配置以响应于所述包移动到所述包在所述缓冲器中的新位置而更新所述记录以包含所述新位置。
在实例5中,根据实例1至4中任一项所述的标的物,其中所述记录包含所述包的多个特征。
在实例6中,根据实例5所述的标的物,其中在所述多个包之间进行仲裁以从所述缓冲器中选择所述下一个包是基于所述数据结构中的所述记录中保存的所述包的所述多个特征。
在实例7中,根据实例1至6中任一项所述的标的物,其中所述数据结构是对应于所述缓冲器且用于保存所述仲裁中考虑的缓冲包的特征的数据结构集合中的一个。
在实例8中,根据实例7所述的标的物,其中所述数据结构集合的基数等于所述多个包的数目。
在实例9中,根据实例8所述的标的物,其中所述数据结构集合的基数等于所述缓冲器中的虚拟队列的数目。
在实例10中,根据实例9所述的标的物,其中虚拟队列的所述数目等于所述网络装置中的所述缓冲器的输出的数目。
在实例11中,根据实例1至10中任一项所述的标的物,其中所述网络装置是小芯片系统中的开关。
在实例12中,根据实例11所述的标的物,其中所述开关在包含用于所述小芯片系统的存储器控制器的小芯片上。
在实例13中,根据实例1至12中任一项所述的标的物,其中所述多个包来自不同缓冲器,并且其中所述下一个包是用于所述缓冲器的队列头包。
实例14是一种方法,其包括:在网络装置的输入处接收包;将所述包放置在用于所述输入的缓冲器中;获得所述包的特征;将所述包的记录写入到与所述缓冲器无关的数据结构中,所述记录包含所述特征;及基于从所述数据结构中的所述记录获得的所述包的所述特征而在多个包之间执行仲裁以从所述缓冲器中选择下一个包以传递到输出。
在实例15中,根据实例14所述的标的物,其中所述包的所述特征是所述包的大小,并且其中获得所述包的所述特征包含测量所述包的所述大小。
在实例16中,根据实例14至15中任一项所述的标的物,其中所述包的所述特征是所述包在所述缓冲器中的位置。
在实例17中,根据实例16所述的标的物,其包括响应于所述包移动到所述包在所述缓冲器中的新位置而更新所述记录以包含所述新位置。
在实例18中,根据实例14至17中任一项所述的标的物,其中所述记录包含所述包的多个特征。
在实例19中,根据实例18所述的标的物,其中在所述多个包之间进行仲裁以从所述缓冲器中选择所述下一个包是基于所述数据结构中的所述记录中保存的所述包的所述多个特征。
在实例20中,根据实例14至19中任一项所述的标的物,其中所述数据结构是对应于所述缓冲器且用于保存所述仲裁中考虑的缓冲包的特征的数据结构集合中的一个。
在实例21中,根据实例20所述的标的物,其中所述数据结构集合的基数等于所述多个包的数目。
在实例22中,根据实例21所述的标的物,其中所述数据结构集合的基数等于所述缓冲器中的虚拟队列的数目。
在实例23中,根据实例22所述的标的物,其中虚拟队列的所述数目等于所述网络装置中的所述缓冲器的输出的数目。
在实例24中,根据实例14至23中任一项所述的标的物,其中所述网络装置是小芯片系统中的开关。
在实例25中,根据实例24所述的标的物,其中所述开关在包含用于所述小芯片系统的存储器控制器的小芯片上。
在实例26中,根据实例14至25中任一项所述的标的物,其中所述多个包来自不同缓冲器,并且其中所述下一个包是用于所述缓冲器的队列头包。
实例27是一种机器可读媒体,其包含在由网络装置的电路系统执行时使所述网络装置执行包括以下项的操作的指令:在所述网络装置的输入处接收包;将所述包放置在用于所述输入的缓冲器中;获得所述包的特征;将所述包的记录写入到与所述缓冲器无关的数据结构中,所述记录包含所述特征;及基于从所述数据结构中的所述记录获得的所述包的所述特征而在多个包之间执行仲裁以从所述缓冲器中选择下一个包以传递到输出。
在实例28中,根据实例27所述的标的物,其中所述包的所述特征是所述包的大小,并且其中获得所述包的所述特征包含测量所述包的所述大小。
在实例29中,根据实例27至28中任一项所述的标的物,其中所述包的所述特征是所述包在所述缓冲器中的位置。
在实例30中,根据实例29所述的标的物,其中所述操作包括响应于所述包移动到所述包在所述缓冲器中的新位置而更新所述记录以包含所述新位置。
在实例31中,根据实例27至30中任一项所述的标的物,其中所述记录包含所述包的多个特征。
在实例32中,根据实例31所述的标的物,其中在所述多个包之间进行仲裁以从所述缓冲器中选择所述下一个包是基于所述数据结构中的所述记录中保存的所述包的所述多个特征。
在实例33中,根据实例27至32中任一项所述的标的物,其中所述数据结构是对应于所述缓冲器且用于保存所述仲裁中考虑的缓冲包的特征的数据结构集合中的一个。
在实例34中,根据实例33所述的标的物,其中所述数据结构集合的基数等于所述多个包的数目。
在实例35中,根据实例34所述的标的物,其中所述数据结构集合的基数等于所述缓冲器中的虚拟队列的数目。
在实例36中,根据实例35所述的标的物,其中虚拟队列的所述数目等于所述网络装置中的所述缓冲器的输出的数目。
在实例37中,根据实例27至36中任一项所述的标的物,其中所述网络装置是小芯片系统中的开关。
在实例38中,根据实例37所述的标的物,其中所述开关在包含用于所述小芯片系统的存储器控制器的小芯片上。
在实例39中,根据实例27至38中任一项所述的标的物,其中所述多个包来自不同缓冲器,并且其中所述下一个包是用于所述缓冲器的队列头包。
实例40是一种系统,其包括:用于在网络装置的输入处接收包的装置;用于将所述包放置在用于所述输入的缓冲器中的装置;用于获得所述包的特征的装置;用于将所述包的记录写入到与所述缓冲器无关的数据结构中的装置,所述记录包含所述特征;及用于基于从所述数据结构中的所述记录获得的所述包的所述特征而在多个包之间执行仲裁以从所述缓冲器中选择下一个包以传递到输出的装置。
在实例41中,根据实例40所述的标的物,其中所述包的所述特征是所述包的大小,并且其中所述用于获得所述包的所述特征的装置包含用于测量所述包的所述大小的装置。
在实例42中,根据实例40至41中任一项所述的标的物,其中所述包的所述特征是所述包在所述缓冲器中的位置。
在实例43中,根据实例42所述的标的物,其包括用于响应于所述包移动到所述包在所述缓冲器中的新位置而更新所述记录以包含所述新位置的装置。
在实例44中,根据实例40至43中任一项所述的标的物,其中所述记录包含所述包的多个特征。
在实例45中,根据实例44所述的标的物,其中在所述多个包之间进行仲裁以从所述缓冲器中选择所述下一个包是基于所述数据结构中的所述记录中保存的所述包的所述多个特征。
在实例46中,根据实例40至45中任一项所述的标的物,其中所述数据结构是对应于所述缓冲器且用于保存所述仲裁中考虑的缓冲包的特征的数据结构集合中的一个。
在实例47中,根据实例46所述的标的物,其中所述数据结构集合的基数等于所述多个包的数目。
在实例48中,根据实例47所述的标的物,其中所述数据结构集合的基数等于所述缓冲器中的虚拟队列的数目。
在实例49中,根据实例48所述的标的物,其中虚拟队列的所述数目等于所述网络装置中的所述缓冲器的输出的数目。
在实例50中,根据实例40至49中任一项所述的标的物,其中所述网络装置是小芯片系统中的开关。
在实例51中,根据实例50所述的标的物,其中所述开关在包含用于所述小芯片系统的存储器控制器的小芯片上。
在实例52中,根据实例40至51中任一项所述的标的物,其中所述多个包来自不同缓冲器,并且其中所述下一个包是用于所述缓冲器的队列头包。
实例53是至少一个机器可读媒体,其包含在由处理电路系统执行时使所述处理电路系统执行操作以实施实例1至52中任一项的指令。
实例54是一种设备,其包括用于实施实例1至52中任一项的装置。
实例55是一种用于实施实例1至52中任一项的系统。
实例56是一种用于实施实例1至52中任一项的方法。
以上详细描述包含对附图的参考,所述附图形成所述详细描述的一部分。图式借助于说明展示可实践本发明的特定实施例。这些实施例在本文中也称为“实例”。此类实例可包含除了所示出或所描述的那些元件之外的元件。然而,本发明人还预期其中仅提供所示或所描述的那些元件的实例。此外,本发明人还预期使用相对于特定实例(或其一或多个方面)或相对于本文展示或描述的其它实例(或其一或多个方面)而展示或描述的那些元件的任何组合或排列的实例(或其一或多个方面)。
在本文档中,如专利文档中常见,使用术语“一”或“一个”以包含一个或多于一个,这与“至少一个”或“一或多个”的任何其它例子或用途无关。在此文档中,除非另外指示,否则术语“或”用于指代非排他性的或,使得“A或B”可包含“A而非B”、“B而非A”,及“A及B”。在所附权利要求书中,术语“包含(including)”及“其中(in which)”用作相应术语“包括(comprising)”及“其中(wherein)”的简洁英文等效术语。此外,在以下权利要求书中,术语“包含”及“包括”为开放式的,即,包含除权利要求书中在此术语之后列出的那些元件之外的元件的系统、装置、物品或过程仍被视为在权利要求书的范围内。此外,在以下权利要求书中,术语“第一”、“第二”及“第三”等仅用作标签,并且并不旨在对其对象施加数字要求。
上面的描述是说明性的,而不是限制性的。举例来说,上文所描述的实例(或其一或多个方面)可彼此组合使用。如所属领域的一般技术人员在查阅以上描述后可使用其它实施例。所述摘要在遵守以下理解的情况下提交:其将不会用于解释或限制权利要求的范围或含义。同样,在以上详细描述中,可将各种特征分组在一起以简化本公开。此情况不应解释为期望未要求的公开特征对任何权利要求来说是必需的。实际上,本发明主题可在于比特定公开的实施例的所有特征要少。因此,特此将所附权利要求书并入到具体实施方式中,其中每一权利要求作为一单独实施例而独立存在,且经考虑,这些实施例可以各种组合或排列彼此组合。本发明的范围应该通过参考所附的权利要求书以及所述权利要求书所授予的等效物的完整范围来确定。

Claims (27)

1.一种设备,其包括:
输入,其可耦合到网络并且经配置以接收包;
存储器,其经配置以实施用于所述输入的缓冲器以保存所述包;
输出,其可耦合到所述网络;
包分析仪电路系统,其经配置以:
获得所述包的表示;及
将所述包的记录写入到与所述缓冲器无关的数据结构中,所述记录包含所述特征;及
仲裁器,其经配置以基于从所述数据结构中的所述记录获得的所述包的所述特征而在多个包之间执行仲裁以从所述缓冲器中选择下一个包以传递到所述输出。
2.根据权利要求1所述的设备,其中所述包的所述特征是所述包的大小,并且其中为了获得所述包的所述特征,所述包分析仪电路系统经配置以测量所述包的所述大小。
3.根据权利要求1所述的设备,其中所述记录包含所述包的多个特征。
4.根据权利要求3所述的设备,其中在所述多个包进行仲裁以从所述缓冲器中选择所述下一个包是基于所述数据结构中的所述记录中保存的所述包的所述多个特征。
5.根据权利要求1所述的设备,其中所述数据结构是对应于所述缓冲器且用于保存所述仲裁中考虑的缓冲包的特征的数据结构集合中的一个。
6.根据权利要求5所述的设备,其中所述数据结构集合的基数等于所述多个包的数目。
7.根据权利要求1所述的设备,其中所述设备是小芯片系统中的开关。
8.根据权利要求7所述的设备,其中所述开关在包含用于所述小芯片系统的存储器控制器的小芯片上。
9.根据权利要求1所述的设备,其中所述多个包来自不同缓冲器,并且其中所述下一个包是用于所述缓冲器的队列头包。
10.一种方法,其包括:
在网络装置的输入处接收包;
将所述包放置在用于所述输入的缓冲器中;
获得所述包的表示;
将所述包的记录写入到与所述缓冲器无关的数据结构中,所述记录包含所述特征;及
基于从所述数据结构中的所述记录中获得的所述包的所述特征而在多个包之间执行仲裁以从所述缓冲器中选择下一个包以传递到输出。
11.根据权利要求10所述的方法,其中所述包的所述特征是所述包的大小,并且其中获得所述包的所述特征包含测量所述包的所述大小。
12.根据权利要求10所述的方法,其中所述记录包含所述包的多个特征。
13.根据权利要求12所述的方法,其中在所述多个包之间进行仲裁以从所述缓冲器中选择所述下一个包是基于所述数据结构中的所述记录中保存的所述包的所述多个特征。
14.根据权利要求10所述的方法,其中所述数据结构是对应于所述缓冲器且用于保存所述仲裁中考虑的缓冲包的特征的数据结构集合中的一个。
15.根据权利要求14所述的方法,其中所述数据结构集合的基数等于所述多个包的数目。
16.根据权利要求10所述的方法,其中所述网络装置是小芯片系统中的开关。
17.根据权利要求16所述的方法,其中所述开关在包含用于所述小芯片系统的存储器控制器的小芯片上。
18.根据权利要求10所述的方法,其中所述多个包来自不同缓冲器,并且其中所述下一个包是用于所述缓冲器的队列头包。
19.一种非暂时性机器可读媒体,其包含在由网络装置的电路系统执行时使所述网络装置执行操作的指令,所述操作包括:
在所述网络装置的输入处接收包;
将所述包放置在用于所述输入的缓冲器中;
获得所述包的表示;
将所述包的记录写入到与所述缓冲器无关的数据结构中,所述记录包含所述特征;及
基于从所述数据结构中的所述记录中获得的所述包的所述特征而在多个包之间执行仲裁以从所述缓冲器中选择下一个包以传递到输出。
20.根据权利要求19所述的机器可读媒体,其中所述包的所述特征是所述包的大小,并且其中获得所述包的所述特征包含测量所述包的所述大小。
21.根据权利要求19所述的机器可读媒体,其中所述记录包含所述包的多个特征。
22.根据权利要求21所述的机器可读媒体,其中在所述多个包之间进行仲裁以从所述缓冲器中选择所述下一个包是基于所述数据结构中的所述记录中保存的所述包的所述多个特征。
23.根据权利要求19所述的机器可读媒体,其中所述数据结构是对应于所述缓冲器且用于保存所述仲裁中考虑的缓冲包的特征的数据结构集合中的一个。
24.根据权利要求23所述的机器可读媒体,其中所述数据结构集合的基数等于所述多个包的数目。
25.根据权利要求19所述的机器可读媒体,其中所述网络装置是小芯片系统中的开关。
26.根据权利要求25所述的机器可读媒体,其中所述开关在包含用于所述小芯片系统的存储器控制器的小芯片上。
27.根据权利要求19所述的机器可读媒体,其中所述多个包来自不同缓冲器,并且其中所述下一个包是用于所述缓冲器的队列头包。
CN202180086067.XA 2020-10-20 2021-10-08 用于网络装置中的缓冲包的包仲裁 Pending CN116636189A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/074,988 2020-10-20
US17/074,988 US11431653B2 (en) 2020-10-20 2020-10-20 Packet arbitration for buffered packets in a network device
PCT/US2021/054249 WO2022086733A1 (en) 2020-10-20 2021-10-08 Packet arbitration for buffered packets in a network device

Publications (1)

Publication Number Publication Date
CN116636189A true CN116636189A (zh) 2023-08-22

Family

ID=81185700

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180086067.XA Pending CN116636189A (zh) 2020-10-20 2021-10-08 用于网络装置中的缓冲包的包仲裁

Country Status (3)

Country Link
US (2) US11431653B2 (zh)
CN (1) CN116636189A (zh)
WO (1) WO2022086733A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11431653B2 (en) 2020-10-20 2022-08-30 Micron Technology, Inc. Packet arbitration for buffered packets in a network device
KR102521902B1 (ko) 2021-03-23 2023-04-17 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법
KR102529761B1 (ko) 2021-03-18 2023-05-09 에스케이하이닉스 주식회사 PCIe 디바이스 및 그 동작 방법
KR102496994B1 (ko) * 2021-03-23 2023-02-09 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7158528B2 (en) * 2000-12-15 2007-01-02 Agere Systems Inc. Scheduler for a packet routing and switching system
US20020146023A1 (en) 2001-01-09 2002-10-10 Regan Myers Transport stream multiplexer utilizing smart FIFO-meters
US7586909B1 (en) * 2002-03-06 2009-09-08 Agere Systems Inc. Striping algorithm for switching fabric
US7319669B1 (en) 2002-11-22 2008-01-15 Qlogic, Corporation Method and system for controlling packet flow in networks
US7852836B2 (en) 2003-11-19 2010-12-14 Cray Inc. Reduced arbitration routing system and method
US7426610B2 (en) * 2005-12-29 2008-09-16 Intel Corporation On-device packet descriptor cache
KR101207280B1 (ko) * 2006-11-28 2012-12-03 삼성전자주식회사 화상형성장치 및 그 제어방법과, 인터페이스장치
US8122729B2 (en) 2007-03-13 2012-02-28 Dri-Eaz Products, Inc. Dehumidification systems and methods for extracting moisture from water damaged structures
US20080270708A1 (en) 2007-04-30 2008-10-30 Craig Warner System and Method for Achieving Cache Coherency Within Multiprocessor Computer System
US8122229B2 (en) 2007-09-12 2012-02-21 Convey Computer Dispatch mechanism for dispatching instructions from a host processor to a co-processor
US9710384B2 (en) 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
US9015399B2 (en) 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
US8561037B2 (en) 2007-08-29 2013-10-15 Convey Computer Compiler for generating an executable comprising instructions for a plurality of different instruction sets
US8156307B2 (en) 2007-08-20 2012-04-10 Convey Computer Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set
US8095735B2 (en) 2008-08-05 2012-01-10 Convey Computer Memory interleave for heterogeneous computing
US8972958B1 (en) 2012-10-23 2015-03-03 Convey Computer Multistage development workflow for generating a custom instruction set reconfigurable processor
US8205066B2 (en) 2008-10-31 2012-06-19 Convey Computer Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor
US20100115233A1 (en) 2008-10-31 2010-05-06 Convey Computer Dynamically-selectable vector register partitioning
US8423745B1 (en) 2009-11-16 2013-04-16 Convey Computer Systems and methods for mapping a neighborhood of data to general registers of a processing element
US8325723B1 (en) 2010-02-25 2012-12-04 Integrated Device Technology, Inc. Method and apparatus for dynamic traffic management with packet classification
US10430190B2 (en) 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
WO2019089816A2 (en) 2017-10-31 2019-05-09 Micron Technology, Inc. System having a hybrid threading processor, a hybrid threading fabric having configurable computing elements, and a hybrid interconnection network
GB2569604B (en) * 2017-12-21 2020-06-03 Advanced Risc Mach Ltd Controlling reading and writing of data streams in data processing systems
US10915271B2 (en) 2018-01-29 2021-02-09 Micron Technology, Inc. Memory controller with programmable atomic operations
US11461527B2 (en) 2018-02-02 2022-10-04 Micron Technology, Inc. Interface for data communication between chiplets or other integrated circuits on an interposer
EP3776237A1 (en) 2018-03-31 2021-02-17 Micron Technology, Inc. Multiple types of thread identifiers for a multi-threaded, self-scheduling reconfigurable computing fabric
CN111919204A (zh) 2018-03-31 2020-11-10 美光科技公司 用于多线程自调度可重新配置计算架构的高效循环执行
KR102465213B1 (ko) 2018-03-31 2022-11-10 마이크론 테크놀로지, 인크. 멀티 스레드, 자체 스케줄링 재구성 가능한 컴퓨팅 패브릭에 대한 조건부 브랜칭 제어
KR102545047B1 (ko) 2018-03-31 2023-06-21 마이크론 테크놀로지, 인크. 멀티 스레드, 자체 스케줄링 재구성 가능한 컴퓨팅 패브릭에 대한 중지 신호를 사용한 역압 제어
WO2019191742A1 (en) 2018-03-31 2019-10-03 Micron Technology, Inc. Loop thread order execution control of a multi-threaded, self-scheduling reconfigurable computing fabric
CN111919203A (zh) 2018-03-31 2020-11-10 美光科技公司 使用重入队列的多线程自调度可重新配置计算架构的循环执行控制
US11513838B2 (en) 2018-05-07 2022-11-29 Micron Technology, Inc. Thread state monitoring in a system having a multi-threaded, self-scheduling processor
US11132233B2 (en) 2018-05-07 2021-09-28 Micron Technology, Inc. Thread priority management in a multi-threaded, self-scheduling processor
US11513840B2 (en) 2018-05-07 2022-11-29 Micron Technology, Inc. Thread creation on local or remote compute elements by a multi-threaded, self-scheduling processor
US11074078B2 (en) 2018-05-07 2021-07-27 Micron Technology, Inc. Adjustment of load access size by a multi-threaded, self-scheduling processor to manage network congestion
US11126587B2 (en) 2018-05-07 2021-09-21 Micron Technology, Inc. Event messaging in a system having a self-scheduling processor and a hybrid threading fabric
US11119972B2 (en) 2018-05-07 2021-09-14 Micron Technology, Inc. Multi-threaded, self-scheduling processor
US11513837B2 (en) 2018-05-07 2022-11-29 Micron Technology, Inc. Thread commencement and completion using work descriptor packets in a system having a self-scheduling processor and a hybrid threading fabric
US11513839B2 (en) 2018-05-07 2022-11-29 Micron Technology, Inc. Memory request size management in a multi-threaded, self-scheduling processor
US11068305B2 (en) 2018-05-07 2021-07-20 Micron Technology, Inc. System call management in a user-mode, multi-threaded, self-scheduling processor
US11119782B2 (en) 2018-05-07 2021-09-14 Micron Technology, Inc. Thread commencement using a work descriptor packet in a self-scheduling processor
US11502934B2 (en) 2018-08-21 2022-11-15 The George Washington Univesity EZ-pass: an energy performance-efficient power-gating router architecture for scalable on-chip interconnect architecture
US11573834B2 (en) 2019-08-22 2023-02-07 Micron Technology, Inc. Computational partition for a multi-threaded, self-scheduling reconfigurable computing fabric
US11150900B2 (en) 2019-08-28 2021-10-19 Micron Technology, Inc. Execution or write mask generation for data selection in a multi-threaded, self-scheduling reconfigurable computing fabric
US11836524B2 (en) 2019-08-29 2023-12-05 Micron Technology, Inc. Memory interface for a multi-threaded, self-scheduling reconfigurable computing fabric
US11100028B1 (en) * 2020-04-27 2021-08-24 Apex Semiconductor Programmable I/O switch/bridge chiplet
US11431653B2 (en) 2020-10-20 2022-08-30 Micron Technology, Inc. Packet arbitration for buffered packets in a network device

Also Published As

Publication number Publication date
WO2022086733A1 (en) 2022-04-28
US20220417181A1 (en) 2022-12-29
US11985078B2 (en) 2024-05-14
US20220124051A1 (en) 2022-04-21
US11431653B2 (en) 2022-08-30

Similar Documents

Publication Publication Date Title
US11954055B2 (en) Mapping high-speed, point-to-point interface channels to packet virtual channels
US11985078B2 (en) Packet arbitration for buffered packets in a network device
US11693690B2 (en) Method of completing a programmable atomic transaction by ensuring memory locks are cleared
US11403023B2 (en) Method of organizing a programmable atomic unit instruction memory
CN114385250B (zh) 小芯片系统内的小芯片i/o信道的初始化定序
US11789885B2 (en) Ordered delivery of data packets based on type of path information in each packet
CN116547644A (zh) 检测可编程原子事务中的无限循环
CN116325693A (zh) 基于分组的网络中的可选路径排序
CN114385236A (zh) 传递可编程原子操作符到存储器控制器
CN116261849A (zh) 组合写入启用掩码和信用返回字段
CN116194992A (zh) 通过将经校正数据放置在存储器侧高速缓存中进行按需擦除的方法
CN114385237B (zh) 用于低时延寄存器错误校正的方法和设备及机器可读介质
CN116583823A (zh) 使用长向量仲裁的异步管线合并
CN116685943A (zh) 可编程原子单元中的自调度线程
US11847464B2 (en) Variable pipeline length in a barrel-multithreaded processor
US11714655B2 (en) Pipeline merging in a circuit
US12020064B2 (en) Rescheduling a failed memory request in a processor
CN114385326A (zh) 桶式处理器中的线程重放到保留状态
CN116685942A (zh) 在处理器中重用飞行中寄存器数据
US20220121483A1 (en) Thread execution control in a barrel processor
CN114385238A (zh) 减小存储器控制器中的存储器操作的时延
CN116635824A (zh) 桶式处理器中的线程调度控制及存储器分割
CN116569151A (zh) 多通道存储器系统
CN116569128A (zh) 存储器热点识别
CN116583828A (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