CN116235479A - 用于多流量控制单元接口的流量控制 - Google Patents
用于多流量控制单元接口的流量控制 Download PDFInfo
- Publication number
- CN116235479A CN116235479A CN202180066369.0A CN202180066369A CN116235479A CN 116235479 A CN116235479 A CN 116235479A CN 202180066369 A CN202180066369 A CN 202180066369A CN 116235479 A CN116235479 A CN 116235479A
- Authority
- CN
- China
- Prior art keywords
- flits
- virtual channel
- packet
- directed
- flit
- 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
Links
- 239000000872 buffer Substances 0.000 claims abstract description 72
- 238000000034 method Methods 0.000 claims abstract description 60
- 230000015654 memory Effects 0.000 claims description 121
- 238000012546 transfer Methods 0.000 claims description 33
- 238000012545 processing Methods 0.000 claims description 32
- 230000005540 biological transmission Effects 0.000 claims description 25
- 230000006854 communication Effects 0.000 description 31
- 238000004891 communication Methods 0.000 description 31
- 230000004044 response Effects 0.000 description 13
- 238000003860 storage Methods 0.000 description 13
- 238000013461 design Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 239000002131 composite material Substances 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000000153 supplemental effect Effects 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012937 correction Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 241000408659 Darpa Species 0.000 description 1
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 102100035964 Gastrokine-2 Human genes 0.000 description 1
- 101001075215 Homo sapiens Gastrokine-2 Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013329 compounding Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 230000020169 heat generation Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000012212 insulator Substances 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Images
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/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/38—Flow based routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/58—Association of routers
- H04L45/586—Association of routers of virtual routers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3072—Packet splitting
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
- Information Transfer Systems (AREA)
Abstract
本公开的实施方案涉及用于使用多flit接口的流量控制的系统及方法。信用返回字段在基于信用的流量控制系统中用于指示一或多个信用正从接收装置返回到发送装置。基于可用信用的数目,发送装置确定是发送装置还是一直等到更多信用返回。由接收器用于存储分组的缓冲空间量由用于接收分组的传送循环的数目而非包括分组的flit的数目确定。这通过使缓冲器与总线一样宽来实现。接收器基于用于存储所接收分组的缓冲器行数而非包括分组的flit的数目来使信用返回到发送器。
Description
优先权申请
本申请案主张2020年8月31日申请的序列号为17/007,468的美国申请案的优先权权益,所述美国申请案的全部内容以引用方式并入本文中。
关于政府支持的声明
本发明是在美国政府的支持下根据DARPA授予的第HR00111830003号协定进行的。美国政府对本发明拥有某些权利。
技术领域
本公开的实施例大体上涉及网络协议且更具体来说,涉及使用分组的简化流量控制信用机构与多流量控制单元(“flit”)接口上的虚拟信道联网。
背景技术
分组被分成flit用于由传输装置通过总线传输。在将分组传输到接收装置之前,传输装置验证足够信用可供接收装置用于接受分组的所有flit。在许多常规系统中,一个信用用于每一flit。分组的第一flit是包含用于通过网络路由的数据的标头flit。标头flit由零个或更多个主体flit跟随。
小芯片是一种用于集成各种处理功能性的新兴技术。一般来说,小芯片系统由集成于中介层上且封装在一起的离散芯片(例如不同衬底或裸片上的集成电路(IC))组成。此布置不同于单个芯片(例如IC),其含有一个衬底(例如单个裸片)上的不同装置块(例如知识产权(IP)块)(例如芯片上系统(SoC))或集成于板上的谨慎封装装置。一般来说,小芯片提供比谨慎封装装置更好的性能(例如更低功耗、减少延时等),且小芯片提供比单裸片芯片更大的生产效益。这些生产效益可包含更高良率或减少开发成本及时间。
小芯片系统通常由一或多个应用小芯片及支持小芯片组成。此处,应用与支持小芯片之间的区别仅为参考小芯片系统的可能设计方案。因此,例如,合成视觉小芯片系统可包含用于产生合成视觉输出的应用小芯片以及支持小芯片,例如存储器控制器小芯片、传感器接口小芯片或通信小芯片。在典型用例中,合成视觉设计师可设计应用小芯片且从其它方获得支持小芯片。因此,因为通过避免设计及生产体现于支持小芯片中的功能性,所以设计支出(例如,在时间或复杂性方面)减少。小芯片还支持原本可能很困难的IP块的紧密集成,例如使用不同特征大小的IP块紧密集成。因此,例如,在前一代制造产生期间用较大特征大小设计的装置或其中特征大小针对功率、速度或发热而优化的那些装置(如传感器可能发生的那样)可与具有不同特征大小的装置集成,这比试图在单个裸片上这样做更容易。另外,通过减小裸片的总大小,小芯片的良率往往高于更复杂的单裸片装置的良率。
在小芯片系统中,小芯片之间的通信可包含跨网络的基于分组的通信或直接连接。在常规系统中,此基于分组的通信的传送及存储的效率可影响整个小芯片系统的性能。
附图说明
将从下文给出的详细描述及从本公开的各种实施例的附图更完全理解本公开。然而,图式不应被视为将本公开限制于特定实施例,而是仅用于解释及理解。
图1A及1B说明根据实施例的小芯片系统的实例。
图2说明根据实施例的存储器控制器小芯片的实例的组件。
图3说明根据实施例的使用小芯片协议接口(CPI)网络在小芯片布局中的小芯片之间路由的实例。
图4是根据本公开的一些实施例的包括多个flit的数据分组的框图。
图5是展示根据本公开的一些实施例的所接收的flit串流及所接收flit的虚拟信道队列的框图。
图6是展示根据本公开的一些实施例的由电路在传送循环上发送多个flit时执行的方法的操作的流程图。
图7是展示根据本公开的一些实施例的由电路在传送循环上接收多个flit时执行的方法的操作的流程图。
图8是展示根据本公开的一些实施例的由第一电路及第二电路执行的复合方法的操作的复合流程图,第一方法由第一电路在发送一或多个分组时执行且第二方法由第二电路在接收一或多个分组时执行。
图9是本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
本公开的实施方案涉及用于使用多flit接口的流量控制的系统及方法。信用返回字段在基于信用的流量控制系统中用于指示一或多个信用正从接收装置返回到发送装置。基于可用信用的数目,发送装置确定是向接收装置发送分组还是一直等到更多信用返回。信用返回字段可为携载其它数据的数据分组中的字段(例如,当使用双向通信时,例如在因特网语音协议(VoIP)应用中)或可在专门为了返回信用的目的而发送的单独数据分组中。在使用虚拟信道的系统中,基于信用的流量控制可追踪目的地的每一虚拟信道的单独信用余额。
在本文描述的实例系统中,由接收器用于存储分组的缓冲空间量由用于接收分组的传送循环的数目而非包括分组的flit的数目确定。这通过使缓冲器与总线一样宽来实现(例如,如果总线每传送循环接收三个flit,那么缓冲器为三个flit宽)。接收器基于用于存储所接收分组的缓冲器行数而非包括分组的flit的数目来使信用返回到发送器。这减少接收器上的计算,因为更低行数而非更高flit数目被计数。
为了在传输器侧上支持此信用流量系统,通过发送分组所消耗的信用数目可由用于发送分组的传送循环的数目而非包括分组的flit的数目确定。
本公开的实施方案的益处之一是使用较少数据分组来使表示所消耗的宽缓冲器条目的数目而非所接收的flit的数目的较低数目个信用返回。此外,通过与对多flit宽总线使用一个flit宽缓冲器的接收器装置比较,减少将flit从总线传送到缓冲器的过程中的数据处理。因此,减少在处理网络流量及返回信用中耗费的处理循环。另外,减少在处理网络流量及返回信用时消耗的功率。由于减少网络开销,还改进包括通信装置的系统的性能。其它益处对受益于本公开的相关领域的技术人员来说将是显而易见的。
本发明实施方案可在其中有利的特定环境是在小芯片系统中,其中一或多个存储器控制器小芯片在系统的存储器与其它小芯片(例如应用小芯片、外部接口小芯片及类似者)之间提供接口。处理密集型操作需要通过存储器控制器进行相对更多存储器存取及/或通过存储器控制器传送更多数据量。因此,所描述的减少网络性能中的处理循环及功率的效率改进与存储器控制器及其它小芯片的通信,借此改进整体系统性能。
图1A及1B说明根据实施例的小芯片系统110的实例。图1A是安装于外围板105上的小芯片系统110的表示,外围板105可例如通过外围组件互连高速(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支持。AIB信道宽度在SDR模式下操作时为20个位的倍数(20、40、60、…)及在DDR模式下为40个位的倍数(40、80、120、…)。AIB信道宽度包含传输及接收信号。信道可经配置以具有对称数目个传输(TX)及接收(RX)输入/输出(I/O)或具有非对称数目个传输器及接收器(例如所有传输器或所有接收器)。信道可充当AIB主控器或从属器,取决于哪个小芯片提供主时钟。AIB I/O胞元支持三种时控模式:异步(即,非时控)、SDR及DDR。在各种实例中,非时控模式用于时钟及一些控制信号。SDR模式可使用专用仅SDRI/O胞元或双用途SDR/DDR I/O胞元。
在实例中,CPI分组协议(例如点对点或可路由)可在AIB信道内使用对称接收及传输I/O胞元。CPI流式传输协议允许更灵活使用AIB I/O胞元。在实例中,用于流式传输模式的AIB信道可将I/O胞元配置为全TX、全RX或半RX及半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信道。在实例中,接口标识符是包括7位小芯片标识符、7位列标识符及6位链路标识符的20位值。AIB物理层使用AIB带外移位寄存器传输接口标识符。20位接口标识符使用移位寄存器的位32到51跨AIB接口在两个方向上传送。
AIB将一组堆叠AIB信道定义为AIB信道列。AIB信道列具有某数目个AIB信道加辅助信道。辅助信道含有用于AIB初始化的信号。列内的所有AIB信道(除辅助信道之外)具有相同配置(例如全TX、全RX或半TX及半RX以及具有相同数目个数据I/O信号)。在实例中,AIB信道以连续递增顺序编号,从邻近于AUX信道的AIB信道开始。邻近于AUX的AIB信道被定义为AIB信道零。
一般来说,个别小芯片上的CPI接口可包含串行化-解串行化(SERDES)硬件。SERDES互连件非常适合于其中期望具有低信号计数的高速信令的方案。然而,SERDES可导致用于多路复用及解多路复用、错误检测或校正(例如,使用块级循环冗余检查(CRC))、链路级重试或前向纠错的额外功耗及更长延时。然而,当低延时或能耗是超短距离小芯片到小芯片互连件的主要关注点时,可利用具有允许以最少延时进行数据传送的时钟速率的并行接口。CPI包含减少这些超短距离小芯片互连件中的延时及能耗两者的元件。
CPI采用基于信用的技术用于流量控制。接收方(例如应用小芯片125)向例如存储器控制器小芯片140的发送器提供表示可用缓冲器的信用。在实例中,CPI接收方包含用于给定传输时间单位的每一虚拟信道的缓冲器。因此,如果CPI接收方支持五个时间消息及单个虚拟信道,那么接收方具有布置成五个行的五个缓冲器(例如,每一单位时间一行)。如果支持四个虚拟信道,那么接收方具有布置成五个行的二十个缓冲器。每一缓冲器保持一个CPI分组的有效负载。
当发送器向接收方传输时,发送器基于传输使可用信用递减。一旦消耗接收方的所有信用,则发送器停止向接收方发送分组。这确保接收方具有可用缓冲器来存储传输。
当接收方处理所接收分组且释放缓冲器时,接收方将可用缓冲空间传送回发送器。此信用返回接着可由发送器用于允许传输额外信息。
还说明使用直接小芯片到小芯片技术的小芯片网状网络160,无需NOC 130。小芯片网状网络160可在CPI或另一小芯片到小芯片协议中实施。小芯片网状网络160通常实现小芯片的管线,其中一个小芯片用作管线的接口,而管线中的其它小芯片仅与本身介接。
另外,专用装置接口(例如一或多个行业标准存储器接口145(例如(举例来说)同步存储器接口,例如DDR5、DDR6))也可用于使小芯片互连。可通过期望接口(例如PCIE接口)将小芯片系统或个别小芯片连接到外部装置(例如较大系统)。在实例中,诸如外部接口可通过主机接口小芯片135实施,在所描绘实例中,主机接口小芯片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上的不同封装中。对于许多应用,可提供多个存储器装置小芯片。在实例中,这些存储器装置小芯片可各自实施一或多种存储技术。在实例中,存储器小芯片可包含不同技术的多个堆叠存储器裸片,例如经堆叠或以其它方式与一或多个DRAM装置通信的一或多个SRAM装置。存储器控制器小芯片140还可用于协调小芯片系统110中的多个存储器小芯片之间的操作,例如在一或多个层级的高速缓存存储中利用一或多个存储器小芯片及使用一或多个额外存储器小芯片作为主存储器。小芯片系统110还可包含多个存储器控制器小芯片140,还可用于为单独处理器、传感器、网络等提供存储器控制功能性。小芯片架构(例如小芯片系统110)通过更新小芯片配置来提供允许适应不同存储器存储技术及不同存储器接口的优势,无需重新设计系统结构的其余部分。
图2说明根据实施例的存储器控制器小芯片205的实例的组件。存储器控制器小芯片205包含高速缓存210、高速缓存控制器215、裸片外存储器控制器220(例如,用于与裸片外存储器175通信)、网络通信接口225(例如,用于与小芯片网络180介接且与其它小芯片通信)及一组原子及合并操作250。此组的成员可包含例如写入合并单元255、存储器危险清除单元260、内置原子操作单元265或PAU 270。各个组件经逻辑说明且不一定如此实施。例如,内置原子操作单元265可能包括沿到裸片外存储器的路径的不同装置。例如,内置原子单元可在存储器小芯片上的接口装置/缓冲器中,如上文论述。相比来说,PAU 270可能在存储器控制器小芯片205上的单独处理器中实施(但在各种实例中,可在其它位置中实施,例如在存储器小芯片上)。
裸片外存储器控制器220直接耦合到裸片外存储器275(例如,经由总线或其它通信连接)以提供到及来自一或多个裸片外存储器的写入操作及读取操作,例如裸片外存储器275及小芯片网络280。在所描绘实例中,裸片外存储器控制器220还耦合用于输出到原子及合并操作250及用于输入到高速缓存控制器215(例如存储器侧高速缓存控制器)。
在实例配置中,高速缓存控制器215直接耦合到高速缓存210,且可耦合到网络通信接口225用于输入(例如传入读取或写入请求)且耦合用于输出到裸片外存储器控制器220。
网络通信接口225包含分组解码器230、网络输入队列235、分组编码器240及网络输出队列245以支持基于分组的小芯片网络280,例如CPI。小芯片网络280可在处理器、存储器控制器、混合线程处理器、可配置处理电路或通信接口之间及中提供分组路由。在此基于分组的通信系统中,每一分组通常包含目的地及源寻址以及任何数据有效负载或指令。在实例中,小芯片网络280可实施为具有折叠Clos配置或提供额外连接的网状网络的纵横交换机的集合,取决于配置。
在各种实例中,小芯片网络280可为异步切换结构的部分。此处,数据分组可沿各种路径中的任何者路由,使得任何所选择数据分组可在多个不同时间中的任何者到达经寻址目的地,取决于路由。另外,小芯片网络280可至少部分实施为同步通信网络,例如同步网状通信网络。根据本公开,可考虑通信网络的两种配置用于实例。
存储器控制器小芯片205可接收具有例如源地址、读取请求及物理地址的分组。作为响应,裸片外存储器控制器220或高速缓存控制器215将从指定物理地址(其可在裸片外存储器275或高速缓存210中)读取数据且将响应分组汇编到含有所请求数据的源地址。类似地,存储器控制器小芯片205可接收具有源地址、写入请求及物理地址的分组。作为响应,存储器控制器小芯片205将数据写入到指定物理地址(其可在高速缓存210或裸片外存储器275或280中)且将响应分组汇编到含有数据存储到存储器的确认的源地址。
因此,存储器控制器小芯片205可经由小芯片网络280接收读取及写入请求且使用与高速缓存210介接的高速缓存控制器215处理请求,如果可能。如果请求无法由高速缓存控制器215处置,那么裸片外存储器控制器220通过与裸片外存储器275或280、原子及合并操作250或两者通信来处置请求。如上所述,一或多个层级的高速缓存也可在裸片外存储器275或280中实施,且在一些此类实例中,可通过高速缓存控制器215直接存取。由裸片外存储器控制器220读取的数据可由高速缓存控制器215高速缓存于高速缓存210中用于稍后使用。
原子及合并操作250经耦合以接收(作为输入)裸片外存储器控制器220的输出且向高速缓存210、网络通信接口225或直接向小芯片网络280提供输出。存储器危险清除单元260、写入合并单元255及内置原子操作单元265可各自实施为具有其它组合逻辑电路系统(例如加法器、移位器、比较器、AND门、OR门、XOR门或其任何合适组合)或其它逻辑电路系统的状态机。这些组件还可包含一或多个寄存器或缓冲器以存储操作数或其它数据。PAU 270可实施为一或多个处理器核心或控制电路系统及具有其它组合逻辑电路系统或其它逻辑电路系统的各种状态机,且还可包含一或多个寄存器、缓冲器或存储器以存储地址、可执行指令、操作数及其它数据,或可实施为处理器。
写入合并单元255接收读取数据及请求数据且合并请求数据及读取数据以创建具有在响应或返回数据分组中使用的读取数据及源地址的单个单元。写入合并单元255将经合并数据提供到高速缓存210的写入端口(或等效地,提供到高速缓存控制器215以写入到高速缓存210)。任选地,写入合并单元255将经合并数据提供到网络通信接口225以编码及准备响应或返回数据分组用于在小芯片网络280上传输。
当请求数据用于内置原子操作时,内置原子操作单元265从写入合并单元255或直接从裸片外存储器控制器220接收请求且读取数据。执行原子操作,且使用写入合并单元255,将所得数据写入到高速缓存210或提供到网络通信接口225以编码及准备响应或返回数据分组用于在小芯片网络280上传输。
内置原子操作单元265处置预定义原子操作,例如提取及递增或比较及交换。在实例中,这些操作对大小为32个字节或更小的单个存储器位置执行简单读取-修改-写入操作。原子存储器操作从通过小芯片网络280传输的请求分组开始。请求分组具有物理地址、原子运算符类型、操作数大小及任选地高达32个字节的数据。原子操作对高速缓存210的高速缓存存储器线执行读取-修改-写入以根据需要填充高速缓存存储器。原子运算符响应可为简单完成响应或具有高达32个字节的数据的响应。实例原子存储器运算符包含提取及AND、提取及OR、提取及XOR、提取及加法、提取及减法、提取及递增、提取及递减、提取及最小、提取及最大、提取及交换及比较及交换。在各种实例实施例中,支持32位及64位操作以及对16或32个字节的数据的操作。本文公开的方法还与支持更多或更少操作及更多或更少数据的硬件兼容。
内置原子操作还可涉及对所请求数据的“标准”原子操作的请求,例如相对简单、单循环整数原子(例如提取及递增或比较及交换),这将以与不涉及原子操作的常规存储器读取或写入操作相同的处理量发生。对于这些操作,高速缓存控制器215通常可通过设置危险位(在硬件中)而在高速缓存210中保留高速缓存线,使得高速缓存线在其处于转变中时无法由另一过程读取。数据从裸片外存储器275或高速缓存210获得且提供到内置原子操作单元265以执行所请求原子操作。在原子操作之后,除将所得数据提供到数据分组编码器240以对传出数据分组进行编码以在小芯片网络280上传输之外,内置原子操作单元265将所得数据提供到写入合并单元255,写入合并单元255也将所得数据写入到高速缓存210。在将所得数据写入到高速缓存210之后,将由存储器危险清除单元260清除所设置的任何对应危险位。
PAU 270实现可编程原子操作(也称为“自定义原子操作”)的高性能(高处理量及低延时),可与内置原子操作的性能比较。不是执行多个存储器存取,而是响应于指定可编程原子操作及存储器地址的原子操作请求,存储器控制器小芯片205中的电路系统将原子操作请求传送到PAU 270且设置存储于对应于用于原子操作中的存储器线的存储器地址的存储器危险寄存器中的危险位以确保在所述存储器线上不执行其它操作(读取、写入或原子),接着在原子操作完成之后清除所述危险位。为PAU 270执行可编程原子操作而提供的额外直接数据路径允许额外写入操作,不受由通信网络的带宽施加的任何限制且不增加通信网络的任何拥塞。
PAU 270包含多线程处理器,例如,例如基于RISC-V ISA的多线程处理器,其具有一或多个处理器核心且进一步具有用于执行可编程原子操作的扩展指令集。当具有用于执行可编程原子操作的扩展指令集时,PAU 270可体现为一或多个混合线程处理器。在一些实例实施例中,PAU 270提供桶式轮循瞬时线程切换以维持高指令每时钟速率。
可编程原子操作可由PAU 270执行,其涉及对所请求数据的可编程原子操作的请求。用户可准备编程代码来提供此可编程原子操作。例如,可编程原子操作可为相对简单的多循环操作(例如浮点加法)或相对复杂的多指令操作(例如布隆(Bloom)滤波器插件)。可编程原子操作可与预定原子操作相同或不同,只要其由用户而非系统供应商定义。对于这些操作,高速缓存控制器215可通过设置危险位(在硬件中)而在高速缓存210中保留高速缓存线,使得高速缓存线在其处于转变中时无法由另一过程读取。数据从高速缓存210或裸片外存储器275或280获得且提供到PAU 270以执行所请求的可编程原子操作。在原子操作之后,PAU 270将向网络通信接口225提供所得数据以直接编码具有所得数据的传出数据分组用于在小芯片网络280上传输。另外,PAU 270将向高速缓存控制器215提供所得数据,高速缓存控制器215也将所得数据写入到高速缓存210。在将所得数据写入到高速缓存210之后,将由高速缓存控制器215清除所设置的任何对应危险位。
在所选择实例中,针对可编程原子操作所采取的方法是提供多个通用自定义原子请求类型,其可通过小芯片网络280从例如处理器或其它系统组件的原始源发送到存储器控制器小芯片205。高速缓存控制器215或裸片外存储器控制器220将请求识别为自定义原子且将请求转发到PAU 270。在代表性实施例中,PAU 270:(1)是能够高效执行用户定义原子操作的可编程处理元件;(2)可执行对存储器的加载及存储、算术及逻辑操作及控制流量决策;及(3)利用RISC-V ISA及一组新的专门指令来促进与此高速缓存控制器215及裸片外存储器控制器220交互以原子执行用户定义操作。在期望实例中,RISC-V ISA含有支持高级语言运算符及数据类型之一全组指令。PAU 270可利用RISC-V ISA,但通常将在包含于存储器控制器小芯片205内时支持更有限指令集及有限寄存器文件大小以减小单元的裸片大小。
如上文提及,在将读取数据写入到高速缓存210之前,将由存储器危险清除单元260清除针对保留高速缓存线设置的危险位。因此,当请求及读取数据由写入合并单元255接收时,复位或清除信号可由存储器危险清除单元260传输到高速缓存210以使针对保留高速缓存线设置的存储器危险位复位。此外,使此危险位复位还将释放涉及指定(或保留)高速缓存线的未决读取或写入请求以将未决读取/写入请求提供到传入请求多路复用器用于选择及处理。
图3说明根据实施例的使用小芯片协议接口(CPI)网络在小芯片布局300中的小芯片之间路由的实例。小芯片布局300包含小芯片310A、310B、310C、310D、310E、310F、310G及310H。小芯片310A到310H通过包括节点330A、330B、330C、330D、330E、330F、330G及330H的网络互连。小芯片310A到310H中的每一者包含标记为320A到320H的硬件收发器。
可使用高级接口总线(AIB)在小芯片310之间传送CPI分组。AIB提供物理层功能性。物理层使用具有转发时钟的源同步数据传送来传输及接收数据。分组以相对于所传输时钟的单数据速率(SDR)或双数据速率(DDR)跨AIB传送。各种信道宽度由AIB支持。AIB信道宽度在SDR模式下操作时为20个位的倍数(20、40、60、…)及在DDR模式下为40个位的倍数(40、80、120、…)。AIB信道宽度包含传输及接收信号两者。信道可经配置以具有对称数目个传输(TX)及接收(RX)输入/输出(I/O)或具有非对称数目个传输器及接收器(例如所有传输器或所有接收器)。信道可充当AIB主控器或从属器,取决于哪个小芯片提供主时钟。
AIB适配器提供到AIB链路层的接口及到AIB物理层(PHY)的接口。AIB适配器提供数据分级寄存器、上电复位定序器及控制信号移位寄存器。
AIB物理层由AIB I/O胞元组成。AIB I/O胞元(在一些实例实施例中,由硬件收发器320实施)可为仅输入、仅输出或双向的。AIB信道由一组AIB I/O胞元组成,胞元的数目取决于AIB信道的配置。一个小芯片上的接收信号连接到成对小芯片上的传输信号。在一些实例实施例中,每一列包括编号为0到N的辅助(AUX)信道及数据信道。
AIB信道通常配置为半TX数据加半RX数据、全TX数据或全RX数据加相关联时钟及各种控制。在一些实例实施例中,TX与RX数据信号的数目在设计时确定且无法配置为系统初始化的部分。
CPI分组协议(点对点及可路由)在AIB信道内使用对称接收及传输I/O胞元。CPI流式传输协议允许更灵活使用AIB I/O胞元。在一些实例实施例中,用于流式传输模式的AIB信道可将I/O胞元配置为全TX、全RX或半RX及半RX。
通过网络节点330在小芯片310之间路由数据分组。节点330可基于数据分组的一或多个数据字段来确定所接收数据分组转发到的下一节点330。例如,可使源或目的地地址、源或目的地端口、虚拟信道或其任何合适组合散列以选择连续网络节点或可用网络路径。以此方式选择路径可用于平衡网络流量。
因此,图3中展示从小芯片310A到小芯片310D的数据路径。数据分组由硬件收发器320A发送到网络节点330A,由网络节点330A转发到网络节点330C,由网络节点330C转发到网络节点330D,且由网络节点330D传送到小芯片310D的硬件收发器320D。
图3中还展示从小芯片310A到小芯片310G的第二数据路径。数据分组由硬件收发器320A发送到网络节点330A,由网络节点330A转发到网络节点330B,由网络节点330B转发到网络节点330D,由网络节点330D转发到网络节点330C,由网络节点330C转发到网络节点330E,由网络节点330E转发到网络节点330F,由网络节点330F转发到网络节点330H,由网络节点330H转发到网络节点330G,且由网络节点330G传送到小芯片310G的硬件收发器320G。如图3中清晰可见,通过网络的多个路径可用于在任何小芯片对之间传输数据。
AIB I/O胞元支持三种时控模式:异步(即,非时控)、SDR及DDR。非时控模式用于时钟及一些控制信号。SDR模式可使用专用仅SDR I/O胞元或双用途SDR/DDR I/O胞元。
CPI分组协议(点对点及可路由)可在SDR或DDR操作模式中使用AIB信道。在一些实例实施例中,AIB信道应针对SDR模式以80个I/O胞元(即,40个TX及40个RX)为增量及针对DDR模式以40个I/O胞元为增量。
CPI流式传输协议可在SDR或DDR操作模式中使用AIB信道。在一些实例实施例中,对于两种模式(SDR及DDR),AIB信道以40个I/O胞元为增量。
每一AIB信道被指派唯一接口标识符。标识符在CPI复位及初始化期间用于确定跨邻近小芯片的成对AIB信道。在一些实例实施例中,接口标识符是包括7位小芯片标识符、7位列标识符及6位链路标识符的20位值。AIB物理层使用AIB带外移位寄存器传输接口标识符。20位接口标识符使用移位寄存器的位32到51跨AIB接口在两个方向上传送。
AIB将一组堆叠AIB信道定义为AIB信道列。如图3中所展示,AIB信道列具有某数目个AIB信道加辅助信道。辅助信道含有用于AIB初始化的信号。列内的所有AIB信道(除辅助信道之外)具有相同配置(例如全TX、全RX或半TX及半RX以及具有相同数目个数据I/O信号)。AIB信道列以特定定向围绕小芯片的外围布置以允许小芯片之间的互操作性。尽管小芯片310中的每一者在图3中展示为具有一个硬件收发器320,但应注意,小芯片的每一侧可具有零个或更多个硬件收发器。
在一些实例实施例中,AIB信道以连续递增顺序编号,从邻近于AUX信道的AIB信道开始。邻近于AUX的AIB信道被定义为AIB信道零。
举例来说,图3展示由包括八个节点330的网络连接的八个小芯片310。更多或更少小芯片310及更多或更少节点330可包含于小芯片网络中以允许创建任意大小的小芯片网络。
图4是根据本公开的一些实施例的包括多个flit的数据分组400的框图。数据分组400适于由通过图3的网络300与其它小芯片通信的图2的存储器控制器小芯片205使用。数据分组400被分成流量控制单元(flit),其中的每一者在本实例中由36个位组成。数据分组400包含标头410及零个或更多个主体flit(例如主体fli t420及主体flit 430)。标头410可包含目的地标识符字段、长度字段、命令字段或其任何合适组合。主体flit 420及主体flit 430可包含数据、额外控制字段或两者。
目的地标识符唯一地识别网络中的目的地(例如物理目的地小芯片上的虚拟信道)。在不使用具有多个目的地的网络的直接有线连接中,可省略目的地标识符。长度字段指示包括数据分组400的flit的数目。长度字段的解译可为非线性的。例如,值0到22可被解译为数据分组400中的0到22个flit且值23到27可被解译为数据分组400中的33到37个flit(即,比指示值多10个)。在此实例中,分组的大小以flit测量,与总线的宽度或每flit的位数无关。在其它实例实施例中,分组的大小以位或字节测量。在其它实例实施例中,分组的大小是固定的且长度字段可省略。主体flit 430的其它值可为供应商定义的而非协议定义的。
用于数据分组400的命令可为例如写入命令、读取命令、预定义原子操作命令、自定义原子操作命令、读取响应、确认响应或供应商特定命令。另外,命令可指示数据分组400的虚拟信道。例如,不同命令可用于不同虚拟信道。
存储器存取命令可进一步识别待写入或存取的字节数、待存取的存储器空间(例如裸片外存储器375或用于自定义原子操作的指令存储器)或其任何合适组合。在一些实例实施例中,命令可指示后一flit的额外位识别命令。例如,可通过在标头410的命令字段中使用供应商特定命令且使用含有较大命令的主体flit 420的一部分或全部来发送多字节命令。
图5是展示根据本公开的一些实施例的所接收的flit串流及所接收flit的虚拟信道队列的框图500。在其上接收flit的串流的接口是三个通道宽。因此,在通道510A、510B及510C中的每一者上同时接收一个flit。在行520A、520B、520C、520D及520E中循序展示所接收flit。在接收之后,flit存储于虚拟信道0通道队列530A、530B及530C或虚拟信道1通道队列550A、550B及550C中。虚拟信道0通道队列530A到530C将flit存储于行540A、540B、540C、540D及540E中。虚拟信道1通道队列550A到550C将flit存储于行560A、560B、560C、560D及560E中。
所接收的flit串流展示三个分组:P1、P2及P3。P1被指定用于虚拟信道0且包括四个flit。P2被指定用于虚拟信道1且包括五个flit。P3被指定用于虚拟信道0且包括3个flit。可基于标头410中的目的地标识符来确定每一分组的虚拟信道。
在每一时钟循环上,基于行中flit的目的地将整行所接收数据(例如行520A到520E中的一者)全部或部分复制到虚拟信道通道队列中的零者或更多者。例如,行520A被部分复制到行540A,因为行520A中的两个flit被指定用于虚拟信道0。行520A的空闲flit中的数据可被复制或保留在行540A中不写入。作为另一实例,行520B被部分复制到行540B及行560A两者,因为行520B含有虚拟信道0及虚拟信道1两者的至少一个flit。
行540E、560D及560E可用于存储额外数据。在一些实例实施例中,在读取经缓冲数据之后清除数据(例如,用0或另一数据模式替换)。
通过将整个行复制到具有多个通道的队列中而非将每一flit个别复制到单通道队列中,电路设计的时序更容易满足。例如,关于行520A,P1的第一flit将被复制到单通道队列的第一条目中,目的地指针将递增,且接着P1的第二flit将被复制到单通道队列的第二条目中。这些操作中的每一者需要在其上接收flit的串流的总线的下一时钟循环之前使用更高内部时钟速率完成。
在基于信用的流量控制系统中,传输装置维持指示可用于将数据传输到目的地的信用的数目的数据结构。信用的初始数目可从目的地向源提供(例如,在通电时)。如图5的实例中可见,接收装置具有可用于每一虚拟信道的缓冲空间的五个条目。因此,如果装置仅与单个传输器通信,那么可安全地为每一虚拟信道分配五个信用。在传输之后,传输装置减少所使用的虚拟信道的可用信用的数目。在处理数据之后,接收装置发送一或多个信用返回分组。信用返回分组指示已通过处理数据来释放的缓冲空间量且现可用于存储来自源的额外数据。以此方式,源能够追踪目的地处的可用缓冲空间量且避免溢出。
图6是展示根据本公开的一些实施例的由电路(例如图2的小芯片205)在传送循环上发送多个flit时执行的方法600的操作的流程图。方法600包含操作610及620。通过实例而非限制的方式,方法600被描述为由图1到3的装置使用图4的数据分组执行。在方法600中,分组的传输与信用相关联,使得在单个传送循环中传输的任何数目个flit与单个信用相关联。
在操作610中,逻辑(例如小芯片310A的一或多个组件,例如网络接口225)在传送循环上向目的地(例如小芯片310D)传输多个flit,多个flit中的两者或更多者被导引到单个虚拟信道。例如,可发送行520A到520D中任何者的flit。行520A、520B及520D包含导引到虚拟信道0的两个或更多个flit;行520C包含导引到虚拟信道1的两个或更多个flit。每一flit可包含其被指定用于的虚拟信道的指示符。替代地,标头410可包含整个分组的虚拟信道的指示符及分组中flit的数目(或分组大小的其它度量)。基于分组大小及标头中所识别的虚拟信道,电路确定分组中的每一flit也用于相同虚拟信道。
在操作620中,逻辑(例如小芯片310A的一或多个组件)基于两个或更多个flit在传送循环上传输且导引到单个虚拟信道而通过使目的地的虚拟信道的信用的数目减少1来修改表示信用的数目的数据。因此,对于行520A,即使为虚拟信道0发送多于一个flit,但虚拟信道0的信用数目减少1。在一些实例实施例中,具有在传送循环中发送的一或多个flit的每一虚拟信道的信用数目被减少1。在这些实例实施例中,小芯片310A在发送行520A的flit之后减少虚拟信道0及虚拟信道1两者的信用数目。
与使用一个信用来表示一个flit的解决方案相比,需要更少信用使用基于传送循环的信用而非基于flit的信用来通过多flit接口发送数据分组。
图7是展示根据本公开的一些实施例的由电路在传送循环上接收多个flit时执行的方法700的操作的流程图。方法700包含操作710、720及730。通过实例而非限制的方式,方法700被描述为由图1到3的装置使用图4的数据分组执行。
在操作710中,电路在传送循环上从源接收多个flit,多个flit中的两者或更多者导引到第一虚拟信道,多个flit中的一flit导引到第二虚拟信道。例如,小芯片310D的网络接口225可在传送循环上从小芯片310A接收行520B的flit,包括导引到虚拟信道0的两个flit及导引到虚信道1的一个flit。在一些实例实施例中,每一flit包含其被导引到的虚拟信道的指示符。在其它实例实施例中,分组的标头flit指示虚拟信道及分组的大小;随后flit基于分组的大小来确定为分组的部分且因此确定为导引到标头中指示的虚拟信道。
在操作720中,电路将两个或更多个flit复制到与第一虚拟信道相关联的第一缓冲器。例如,将导引到行520B的虚拟信道0的flit复制到行540B中的虚拟信道0的通道队列中的两者。
在操作730中,电路将flit复制到与第二虚拟信道相关联的第二缓冲器。继续此实例,将行520B的虚拟信道1的flit复制到行560A的虚拟信道1的通道队列550C。操作720及730可在单个时钟循环上执行,同时执行,或两者。
与为每一虚拟信道使用单通道队列的解决方案相比,使用方法700的电路能够复制虚拟信道的所有数据且不会引起复制、递增指针、复制循环的延迟。另外,通过掩盖所接收的flit的串流中的数据使得虚拟信道的数据不写入到其它虚拟信道的通道队列(如由行540A、540D、560A及560C中的“不写入”值所展示)来减少能耗。
图8是展示根据本公开的一些实施例的由第一电路及第二电路执行的复合方法800的操作的复合流程图,包含由第一电路在发送一或多个分组时执行的第一方法810及由第二电路在接收一或多个分组时执行的第二方法820。方法810包含操作830、840及880。方法820包含操作850、860及870。实线箭头指示每一方法810及820内的操作序列。虚线箭头展示两个方法810与820之间的关系。整体来看,复合方法800包含操作830到880。通过实例而非限制的方式,方法800被描述为由图1到3的装置使用图4的数据分组执行。
在操作830中,源(例如小芯片310A)基于每一所选择分组的目的地的信用池中的可用信用数目来选择一或多个分组。例如,数个分组可排队从源传输。每一分组识别分组的目的地(例如物理装置及虚拟信道)。每一分组也具有一大小(例如将用于传送分组的数个flit)。基于分组的大小及目的地的可用信用数目,源确定是否有足够信用可用于传送整个分组。在基于flit的流量控制信用方案中,用于传送分组的信用的数目是分组中flit的数目。在基于传送循环的流量控制方案中,用于传送分组的信用的数目是用于传送分组的传送循环的数目。这可通过使用以下等式来确定:
在此等式中,循环是传送分组将采用的传送循环的数目,ceiling是将分数值舍入到下一整数的函数,f0是宽总线中第一flit的位置的基于0的偏移,且宽度是总线的宽度,以flit测量。因此,当宽度=1时,f0始终为0,且循环的数目仅为分组的大小(以flit为单位)。当宽度=2且f0为0时,循环的数目是分组的大小的一半,舍入。当宽度=2且f0为1时,具有偶数个flit的分组采用额外传送循环来传输(由于在第一传送循环上仅传输一个flit且在最后一个传送循环上传输一个flit)。
在操作840中,源通过总线传输一或多个分组的flit以基于用于传送每一分组的传送循环的数目而非每一分组的flits的数目来更新分组的信用池。参考图5的flit串流,发送三个分组:P1、P2及P3。P1尽管有四个flit长,但消耗两个信用,因为整个分组在对应于行520A及520B的两个传送循环中传输。P2尽管有五个flit长,但消耗三个信用。P3尽管有三个flit长,但消耗两个信用。因此,在其中发送用于多个目的地的flit的传送循环上,每一目的地的可用信用的数目减少1,不管flit在目的地中的分布如何。在一些实例实施例中,在发送分组的任何flit之前更新信用池以使可用信用数目减少将用于发送分组的传送循环的数目。在其它实例实施例中,信用池在每一传送循环上更新以每次传送一或多个flit时使可用信用递减1。
在操作850中,目的地通过总线接收flit以使所接收flit排队处理。继续图5的实例,接收小芯片310D基于在每一分组的标头中识别的虚拟信道将flit存储于虚拟信道通道队列中。
在操作860中,目的地电路将所接收flit转换为一或多个分组。因此,分组P1、P2及P3由所接收flit重建。
在操作870中,对于每一所接收分组,目的地电路基于用于传送分组的传送循环的数目而非分组的flit数目来补充信用。例如,信用返回分组可从小芯片310D发送到小芯片310A以指示在处理P1之后返回两个信用、在处理P2之后返回三个信用或在处理P3之后返回两个信用。在处理分组之后,存储构成分组的flit的行可用于处置通过总线接收的新数据。
在操作880中,源电路接收信用返回分组且基于信用返回分组中的数据来更新信用池。例如,信用返回分组可指示目的地电路(使用小芯片310D的标识符)及虚拟信道以及所返回的信用的数目。通过更新信用池以反映目的地处的释放行,使源电路为方法800的另一迭代做好准备以在不溢出接收缓冲器的情况下向目的地发送更多数据分组。
包括源及目的地小芯片两者的系统执行包括协调方法810及820的方法800。通过使用方法800,系统能够使用基于信用的流量控制来防止目的地缓冲器溢出、利用宽总线每传送循环传送多个flit的能力及避免由使用单通道缓冲器及宽总线引起的复杂化。
图9说明可用其、在其中或通过其实施本文论述的技术(例如方法)中的任何一或多者的实例机器900的框图。如本文所描述,实例可包含机器900中的逻辑或数个组件或机构或可由其操作。电路系统(例如处理电路系统)是在包含硬件(例如简单电路、门、逻辑等)的机器900的有形实体中实施的电路的集合。电路系统成员可随时间灵活变化。电路系统包含可在操作时单独或组合执行特定操作的成员。在实例中,电路系统的硬件可经不变设计以实施特定操作(例如,硬连线)。在实例中,电路系统的硬件可包含可变连接物理组件(例如执行单元、晶体管、简单电路等),其包含经物理地(例如磁性地、电性地、可移动地放置不变质量粒子等)修改以对特定操作的指令进行编码的机器可读媒体。举例来说,在连接物理组件时,硬件组成的基本电性质从绝缘体变为导体,反之亦然。指令使嵌入式硬件(例如执行单元或加载机构)能够经由可变连接在硬件中创建电路系统的成员以在操作时实施特定操作的部分。因此,在实例中,机器可读媒体元件是电路系统的部分或在装置操作时可通信地耦合到电路系统的其它组件。在实例中,物理组件中的任何者可用于一个以上电路系统的一个以上成员中。举例来说,在操作下,执行单元可在一个时间点用于第一电路系统的第一电路中且可在不同时间由第一电路系统中的第二电路或第二电路系统中的第三电路再用。这些组件关于机器900的额外实例如下。
在替代实施例中,机器900可作为独立装置操作或可连接(例如,联网)到其它机器。在联网部署中,机器900可在服务器-客户端网络环境中以服务器机器、客户端机器或两者的身份操作。在实例中,机器900可在对等(P2P)(或其它分布式)网络环境中充当对等机器。机器900可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、网络器械、网络路由器、交换机或网桥或能够执行指定由机器采取的动作的指令(循序或以其它方式)的任何机器。此外,虽然仅说明单个机器,但术语“机器”也应被视为包含机器的任何集合,其个别或共同执行一组(或多组)指令以执行本文论述的方法中的任何一或多者,例如云计算、软件即服务(SaaS)、其它计算机集群配置。
机器(例如计算机系统)900可包含硬件处理器902(例如中央处理单元(CPU)、图形处理单元(GPU)、硬件处理器核心或其任何组合)、主存储器904、静态存储器(例如用于固件、微码、基本输入-输出(BIOS)、统一可扩展固件接口(UEFI)等的存储器或存储装置)906及大容量存储装置908(例如硬盘驱动器、磁带驱动器、快闪存储装置或其它块装置),其中的一些或全部可经由互连(例如总线)930彼此通信。机器900可进一步包含显示单元910、字母数字输入装置912(例如键盘)及用户接口(UI)导航装置914(例如鼠标)。在实例中,显示单元910、输入装置912及UI导航装置914可为触摸屏显示器。机器900可另外包含存储装置(例如驱动单元)908、信号产生装置918(例如扬声器)、网络接口装置920及一或多个传感器916,例如全球定位系统(GPS)传感器、指南针、加速度计或其它传感器。机器900可包含输出控制器928,例如串行(例如通用串行总线(USB))、并行或其它有线或无线(例如红外(IR)、近场通信(NFC)等)连接以传送或控制一或多个外围装置(例如打印机、读卡器等)。
处理器902、主存储器904、静态存储器906或大容量存储装置908的寄存器可为或包含机器可读媒体922,其上存储体现本文描述的技术或功能中的任何一或多者或由所述任何一或多者利用的一或多组数据结构或指令924(例如软件)。指令924还可在其由机器900执行期间完全或至少部分驻留于处理器902、主存储器904、静态存储器906或大容量存储装置908的寄存器中的任何者内。在实例中,硬件处理器902、主存储器904、静态存储器906或大容量存储装置908中的一者或任何组合可构成机器可读媒体922。尽管机器可读存储媒体922被说明为单个媒体,但术语“机器可读媒体”可包含经配置以存储一或多个指令924的单个媒体或多个媒体(例如集中式或分布式数据库或相关联高速缓存及服务器)。
术语“机器可读媒体”可包含能够存储、编码或携载由机器900执行的指令且致使机器900执行本公开的技术中的任何一或多者或能够存储、编码或携载由此类指令使用或与此类指令相关联的数据结构的任何媒体。非限制性机器可读媒体实例可包含固态存储器、光学媒体、磁性媒体及信号(例如射频信号、其它基于光子的信号、声音信号等)。在实例中,非暂时性机器可读媒体包括具有含不变(例如静止)质量的多个粒子的机器可读媒体且因此为物质的组成。因此,非暂时性机器可读媒体是不包含暂时性传播信号的机器可读媒体。非暂时性机器可读媒体的特定实例可包含:非易失性存储器,例如半导体存储器装置(例如电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))及闪存装置;磁盘,例如内部硬盘及可卸除磁盘;磁光盘;及CD-ROM及DVD-ROM磁盘。
在实例中,存储或以其它方式提供于机器可读媒体922上的信息可表示指令924,例如指令924本身或可从其导出指令924的格式。指令924可从其导出的此格式可包含源代码、编码指令(例如,呈压缩或加密形式)、封装指令(例如,分成多个封装)或类似者。机器可读媒体922中表示指令924的信息可由处理电路系统处理为实施本文论述的操作中的任何者的指令。例如,从信息导出指令924(例如,由处理电路系统处理)可包含:编译(例如,从源代码、目标代码等)、解译、加载、组织(例如,动态或静态链接)、编码、解码、加密、解密、封装、拆封或以其它方式操纵信息为指令924。
在实例中,指令924的导出可包含汇编、编译或解译信息(例如,通过处理电路系统)以由机器可读媒体922提供的某种中间或预处理格式创建指令924。信息在以多个部分提供时可经组合、解包及修改以创建指令924。例如,信息可在一或若干远程服务器上的多个压缩源代码封装(或目标代码或二进制可执行代码等)中。源代码封装可在通过网络转送时加密且在本地机器处解密、解压缩、汇编(例如,链接)(根据需要)及编译或解译(例如,到库、独立可执行文件等中)且由本地机器执行。
指令924可进一步利用数种传送协议(例如帧中继、因特网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)、超文本传送协议(HTTP)等)中的任一者经由网络接口装置920使用传输媒体通过通信网络926传输或接收。实例通信网络可包含局域网(LAN)、广域网(WAN)、分组数据网络(例如因特网)、移动电话网络(例如蜂窝网络)、普通老式电话(POTS)网络及无线数据网络(例如电气及电子工程师协会(IEEE)802.11系列标准(称为)、IEEE 802.16系列标准(称为/>))、IEEE 802.15.4系列标准、对等(P2P)网络等。在实例中,网络接口装置920可包含一或多个物理插孔(例如以太网、同轴或电话插孔)或一或多个天线以连接到通信网络926。在实例中,网络接口装置920可包含多个天线以使用单输入多输出(SIMO)、多输入多输出(MIMO)或多输入单输出(MISO)技术中的至少一者无线通信。术语“传输媒体”应被视为包含能够存储、编码或携载由机器900执行的指令的任何无形媒体,且包含数字或模拟通信信号或其它无形媒体以促进此软件的通信。传输媒体是机器可读媒体。
在前述说明中,已描述本公开的一些实例实施方案。显而易见,可在不背离所附权利要求书中阐述的本公开的更广范围的情况下对其进行各种修改。因此,说明书及图式应被视为意在说明而非限制。下文是本公开的实施方案的实例的非穷尽列表。
实例1是一种系统,其包括:逻辑,其经配置以执行包括以下的操作:在传送循环上向目的地传输多个流量控制单元(flit),所述多个flit中的两者或更多者是导引到所述目的地的虚拟信道的分组的部分;及基于所述多个flit中的所述两者或更多者在所述传送循环上发送且是导引到所述虚拟信道的所述分组的部分,通过使所述目的地的所述虚拟信道的信用的数目减少1来修改表示信用的所述数目的数据。
在实例2中,实例1的标的物包含其中:所述多个flit中的一flit被导引到所述目的地的第二虚拟信道;且所述操作进一步包括:基于所述flit被导引到所述第二虚拟信道,使所述目的地的所述第二虚拟信道的信用的第二数目减少1。
在实例3中,实例1到2的标的物包含其中所述操作进一步包括:在所述传输所述多个flit之前,基于所述目的地的所述虚拟信道的信用的所述数目、所述多个flit的计数及所述分组中flit的计数来确定发送所述分组。
在实例4中,实例3的标的物包含其中:所述多个flit包含导引到第二虚拟信道的一或多个flit;且所述确定发送所述分组是进一步基于所述第二虚拟信道的所述一或多个flit的计数。
在实例5中,实例1到4的标的物包含其中:导引到所述目的地的所述虚拟信道的所述flit中的至少一者包括所述虚拟信道的标识符。
实例6是一种存储指令的非暂时性机器可读媒体,所述指令在由系统执行时致使所述系统执行包括以下的操作:在传送循环上向目的地传输多个流量控制单元(flit),所述多个flit中的两者或更多者是导引到所述目的地的虚拟信道的分组的部分;及基于所述多个flit中的所述两者或更多者在所述传送循环上发送且是导引到所述虚拟信道的所述分组的部分,通过使所述目的地的所述虚拟信道的信用的数目减少1来修改表示信用的所述数目的数据。
在实例7中,实例6的标的物包含其中:所述多个flit中的一flit被导引到第二虚拟信道;且所述操作进一步包括:基于所述flit被导引到所述第二虚拟信道,使所述目的地的所述第二虚拟信道的信用的第二数目减少1。
在实例8中,实例6到7的标的物包含其中所述操作进一步包括:在所述传输所述多个flit之前,基于所述目的地的所述虚拟信道的信用的所述数目、所述多个flit的计数及所述分组中flit的计数来确定发送所述分组。
在实例9中,实例8的标的物包含其中:所述多个flit包括导引到第二虚拟信道的一或多个flit;且所述确定发送所述分组是进一步基于导引到所述第二虚拟信道的所述一或多个flit的计数。
在实例10中,实例6到9的标的物包含其中:导引到所述目的地的所述虚拟信道的所述flit中的至少一者包括所述虚拟信道的标识符。
实例11是一种方法,其包括:在传送循环上向目的地传输多个流量控制单元(flit),所述多个flit中的两者或更多者是导引到所述目的地的虚拟信道的分组的部分;及基于所述多个flit中的所述两者或更多者在所述传送循环上发送且是导引到所述虚拟信道的所述分组的部分,通过使所述目的地的所述虚拟信道的信用的数目减少1来修改表示信用的所述数目的数据。
在实例12中,实例11的标的物包含其中:所述多个flit中的一flit被导引到第二虚拟信道;且所述方法进一步包括:基于所述flit被导引到所述第二虚拟信道,使所述目的地的所述第二虚拟信道的信用的第二数目减少1。
在实例13中,实例11到12的标的物包含其中所述方法进一步包括:在所述传输所述多个flit之前,基于所述目的地的所述虚拟信道的信用的所述数目、所述多个flit的计数及所述分组中flit的计数来确定发送所述分组。
在实例14中,实例13的标的物包含其中:所述多个flit包含导引到第二虚拟信道的一或多个flit;且所述确定发送所述分组是进一步基于所述第二虚拟信道的所述一或多个flit的计数。
在实例15中,实例11到14的标的物包含其中:导引到所述目的地的所述虚拟信道的所述flit中的至少一者包括所述虚拟信道的标识符。
实例16是一种小芯片系统,其包括:第一小芯片,其包括存储器控制器且进一步包含经配置以执行包括以下的操作的逻辑:在传送循环上从源接收多个流量控制单元(flit),所述多个flit中的两者或更多者被导引到第一虚拟信道,所述多个flit中的一flit被导引到第二虚拟信道;将所述两个或更多个flit复制到与所述第一虚拟信道相关联的第一缓冲器;及将所述flit复制到与所述第二虚拟信道相关联的第二缓冲器。
在实例17中,实例16的标的物包含其中:将所述两个或更多个flit复制到所述第一缓冲器是将所述多个flit复制到所述第一缓冲器的部分;且所述操作进一步包括:设置与所述第一缓冲器相关联的位掩码,所述位掩码指示所述多个flit中的哪一者被导引到所述第一虚拟信道。
在实例18中,实例16到17的标的物包含:处理装置,其经配置以执行包括以下的第二操作:从所述第一缓冲器中的数据汇编数据分组,所述数据分组包括一组flit,其包含所述两个或更多个flit及在一或多个额外传送循环上接收的额外flit,所述一组flit中的每一flit被导引到所述第一虚拟信道;及致使所述硬件收发器向所述源发送信用返回分组,所述信用返回分组使一个信用返回用于其上接收所述一组flit中的至少一个flit的每一传送循环,所述信用指示可用于所述源的缓冲空间。
在实例19中,实例18的标的物包含其中所述信用返回分组指示所述第一虚拟信道。
实例20是一种存储指令的非暂时性机器可读媒体,所述指令在由系统执行时致使所述系统执行包括以下的操作:在传送循环上从源接收多个流量控制单元(flit),所述多个flit中的两者或更多者被导引到第一虚拟信道,所述多个flit中的一flit用于第二虚拟信道;将所述两个或更多个flit复制到与所述第一虚拟信道相关联的第一缓冲器;及将所述flit复制到与所述第二虚拟信道相关联的第二缓冲器。
在实例21中,实例20的标的物包含其中:将所述两个或更多个flit复制到所述第一缓冲器是将所述多个flit复制到所述第一缓冲器的部分;且所述操作进一步包括:设置与所述第一缓冲器相关联的位掩码,所述位掩码指示所述多个flit中的哪一者用于所述第一虚拟信道。
在实例22中,实例20到21的标的物包含其中所述操作进一步包括:从所述第一缓冲器中的数据汇编数据分组,所述数据分组包括一组flit,其包含所述两个或更多个flit及在一或多个额外传送循环上接收的额外flit,所述一组flit中的每一flit被导引到所述第一虚拟信道;及向所述源发送信用返回分组,所述信用返回分组使一个信用返回用于其上接收所述一组flit中的至少一个flit的每一传送循环,所述信用指示可用于所述源的缓冲空间。
在实例23中,实例22的标的物包含其中所述信用返回分组指示所述第一虚拟信道。
实例24是一种方法,其包括:在传送循环上从源接收多个流量控制单元(flit),所述多个flit中的两者或更多者被导引到第一虚拟信道,所述多个flit中的一flit被导引到第二虚拟信道;将所述两个或更多个flit复制到与所述第一虚拟信道相关联的第一缓冲器;及将所述flit复制到与所述第二虚拟信道相关联的第二缓冲器。
在实例25中,实例24的标的物包含其中:将所述两个或更多个flit复制到所述第一缓冲器是将所述多个flit复制到所述第一缓冲器的部分;且所述方法进一步包括:设置与所述第一缓冲器相关联的位掩码,所述位掩码指示所述多个flit中的哪一者被导引到所述第一虚拟信道。
在实例26中,实例24到25的标的物包含:由处理装置从所述第一缓冲器中的数据汇编数据分组,所述数据分组包括一组flit,其包含所述两个或更多个flit及在一或多个额外传送循环上接收的额外flit,所述一组flit中的每一flit被导引到所述第一虚拟信道;及由所述处理装置致使硬件收发器向所述源发送信用返回分组,所述信用返回分组使一个信用返回用于其上接收所述一组flit中的至少一个flit的每一传送循环,所述信用指示可用于所述源的缓冲空间。
在实例27中,实例26的标的物包含其中所述信用返回分组指示所述第一虚拟信道。
实例28是一种包含指令的至少一个机器可读媒体,所述指令在由处理电路系统执行时致使所述处理电路系统执行操作以实施实例1到27中的任何者。
实例29是一种设备,其包括用于实施实例1到27中的任何者的构件。
实例30是一种用于实施实例1到27中的任何者的系统。
实例31是一种用于实施实例1到27中的任何者的方法。
Claims (27)
1.一种系统,其包括:
逻辑,其经配置以执行包括以下的操作:
在传送循环上向目的地传输多个流量控制单元(flit),所述多个flit中的两者或更多者是导引到所述目的地的虚拟信道的分组的部分;及
基于所述多个flit中的所述两者或更多者在所述传送循环上发送且是导引到所述虚拟信道的所述分组的部分,通过使所述目的地的所述虚拟信道的信用的数目减少1来修改表示信用的所述数目的数据。
2.根据权利要求1所述的系统,其中:
所述多个flit中的一flit被导引到所述目的地的第二虚拟信道;且
所述操作进一步包括:
基于所述flit被导引到所述第二虚拟信道,使所述目的地的所述第二虚拟信道的信用的第二数目减少1。
3.根据权利要求1所述的系统,其中所述操作进一步包括:
在所述传输所述多个flit之前,基于所述目的地的所述虚拟信道的信用的所述数目、所述多个flit的计数及所述分组中flit的计数来确定发送所述分组。
4.根据权利要求3所述的系统,其中:
所述多个flit包含导引到第二虚拟信道的一或多个flit;且
所述确定发送所述分组是进一步基于所述第二虚拟信道的所述一或多个flit的计数。
5.根据权利要求1所述的系统,其中:
导引到所述目的地的所述虚拟信道的所述flit中的至少一者包括所述虚拟信道的标识符。
6.一种存储指令的非暂时性机器可读媒体,所述指令在由系统执行时致使所述系统执行包括以下的操作:
在传送循环上向目的地传输多个流量控制单元(flit),所述多个flit中的两者或更多者是导引到所述目的地的虚拟信道的分组的部分;及
基于所述多个flit中的所述两者或更多者在所述传送循环上发送且是导引到所述虚拟信道的所述分组的部分,通过使所述目的地的所述虚拟信道的信用的数目减少1来修改表示信用的所述数目的数据。
7.根据权利要求6所述的机器可读媒体,其中:
所述多个flit中的一flit被导引到第二虚拟信道;且
所述操作进一步包括:
基于所述flit被导引到所述第二虚拟信道,使所述目的地的所述第二虚拟信道的信用的第二数目减少1。
8.根据权利要求6所述的机器可读媒体,其中所述操作进一步包括:
在所述传输所述多个flit之前,基于所述目的地的所述虚拟信道的信用的所述数目、所述多个flit的计数及所述分组中flit的计数来确定发送所述分组。
9.根据权利要求8所述的机器可读媒体,其中:
所述多个flit包括导引到第二虚拟信道的一或多个flit;且
所述确定发送所述分组是进一步基于导引到所述第二虚拟信道的所述一或多个flit的计数。
10.根据权利要求6所述的机器可读媒体,其中:
导引到所述目的地的所述虚拟信道的所述flit中的至少一者包括所述虚拟信道的标识符。
11.一种方法,其包括:
在传送循环上向目的地传输多个流量控制单元(flit),所述多个flit中的两者或更多者是导引到所述目的地的虚拟信道的分组的部分;及
基于所述多个flit中的所述两者或更多者在所述传送循环上发送且是导引到所述虚拟信道的所述分组的部分,通过使所述目的地的所述虚拟信道的信用的数目减少1来修改表示信用的所述数目的数据。
12.根据权利要求11所述的方法,其中:
所述多个flit中的一flit被导引到第二虚拟信道;且
所述方法进一步包括:
基于所述flit被导引到所述第二虚拟信道,使所述目的地的所述第二虚拟信道的信用的第二数目减少1。
13.根据权利要求11所述的方法,其中所述方法进一步包括:
在所述传输所述多个flit之前,基于所述目的地的所述虚拟信道的信用的所述数目、所述多个flit的计数及所述分组中flit的计数来确定发送所述分组。
14.根据权利要求13所述的方法,其中:
所述多个flit包含导引到第二虚拟信道的一或多个flit;且
所述确定发送所述分组是进一步基于所述第二虚拟信道的所述一或多个flit的计数。
15.根据权利要求11所述的方法,其中:
导引到所述目的地的所述虚拟信道的所述flit中的至少一者包括所述虚拟信道的标识符。
16.一种小芯片系统,其包括:
第一小芯片,其包括存储器控制器且进一步包含经配置以执行包括以下的操作的逻辑:
在传送循环上从源接收多个流量控制单元(flit),所述多个flit中的两者或更多者被导引到第一虚拟信道,所述多个flit中的一flit被导引到第二虚拟信道;
将所述两个或更多个flit复制到与所述第一虚拟信道相关联的第一缓冲器;及
将所述flit复制到与所述第二虚拟信道相关联的第二缓冲器。
17.根据权利要求16所述的小芯片系统,其中:
将所述两个或更多个flit复制到所述第一缓冲器是将所述多个flit复制到所述第一缓冲器的部分;且
所述操作进一步包括:
设置与所述第一缓冲器相关联的位掩码,所述位掩码指示所述多个flit中的哪一者被导引到所述第一虚拟信道。
18.根据权利要求16所述的小芯片系统,其进一步包括:
处理装置,其经配置以执行包括以下的第二操作:
从所述第一缓冲器中的数据汇编数据分组,所述数据分组包括一组flit,其包含所述两个或更多个flit及在一或多个额外传送循环上接收的额外flit,所述一组flit中的每一flit被导引到所述第一虚拟信道;及
致使所述逻辑向所述源发送信用返回分组,所述信用返回分组使一个信用返回用于其上接收所述一组flit中的至少一个flit的每一传送循环,所述信用指示可用于所述源的缓冲空间。
19.根据权利要求18所述的小芯片系统,其中所述信用返回分组指示所述第一虚拟信道。
20.一种存储指令的非暂时性机器可读媒体,所述指令在由系统执行时致使所述系统执行包括以下的操作:
在传送循环上从源接收多个流量控制单元(flit),所述多个flit中的两者或更多者被导引到第一虚拟信道,所述多个flit中的一flit用于第二虚拟信道;
将所述两个或更多个flit复制到与所述第一虚拟信道相关联的第一缓冲器;及
将所述flit复制到与所述第二虚拟信道相关联的第二缓冲器。
21.根据权利要求20所述的机器可读媒体,其中:
将所述两个或更多个flit复制到所述第一缓冲器是将所述多个flit复制到所述第一缓冲器的部分;且
所述操作进一步包括:
设置与所述第一缓冲器相关联的位掩码,所述位掩码指示所述多个flit中的哪一者用于所述第一虚拟信道。
22.根据权利要求20所述的机器可读媒体,其中所述操作进一步包括:
从所述第一缓冲器中的数据汇编数据分组,所述数据分组包括一组flit,其包含所述两个或更多个flit及在一或多个额外传送循环上接收的额外flit,所述一组flit中的每一flit被导引到所述第一虚拟信道;及
向所述源发送信用返回分组,所述信用返回分组使一个信用返回用于其上接收所述一组flit中的至少一个flit的每一传送循环,所述信用指示可用于所述源的缓冲空间。
23.根据权利要求22所述的机器可读媒体,其中所述信用返回分组指示所述第一虚拟信道。
24.一种方法,其包括:
在传送循环上从源接收多个流量控制单元(flit),所述多个flit中的两者或更多者被导引到第一虚拟信道,所述多个flit中的一flit被导引到第二虚拟信道;
将所述两个或更多个flit复制到与所述第一虚拟信道相关联的第一缓冲器;及
将所述flit复制到与所述第二虚拟信道相关联的第二缓冲器。
25.根据权利要求24所述的方法,其中:
将所述两个或更多个flit复制到所述第一缓冲器是将所述多个flit复制到所述第一缓冲器的部分;且
所述方法进一步包括:
设置与所述第一缓冲器相关联的位掩码,所述位掩码指示所述多个flit中的哪一者被导引到所述第一虚拟信道。
26.根据权利要求24所述的方法,其进一步包括:
由处理装置从所述第一缓冲器中的数据汇编数据分组,所述数据分组包括一组flit,其包含所述两个或更多个flit及在一或多个额外传送循环上接收的额外flit,所述一组flit中的每一flit被导引到所述第一虚拟信道;及
由所述处理装置致使硬件收发器向所述源发送信用返回分组,所述信用返回分组使一个信用返回用于其上接收所述一组flit中的至少一个flit的每一传送循环,所述信用指示可用于所述源的缓冲空间。
27.根据权利要求26所述的方法,其中所述信用返回分组指示所述第一虚拟信道。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/007,468 US11362939B2 (en) | 2020-08-31 | 2020-08-31 | Flow control for a multiple flow control unit interface |
US17/007,468 | 2020-08-31 | ||
PCT/US2021/038407 WO2022046254A1 (en) | 2020-08-31 | 2021-06-22 | Flow control for a multiple flow control unit interface |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116235479A true CN116235479A (zh) | 2023-06-06 |
Family
ID=80353689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180066369.0A Pending CN116235479A (zh) | 2020-08-31 | 2021-06-22 | 用于多流量控制单元接口的流量控制 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11362939B2 (zh) |
CN (1) | CN116235479A (zh) |
WO (1) | WO2022046254A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11831543B2 (en) | 2020-08-31 | 2023-11-28 | Micron Technology, Inc. | Flow control for a multiple flow control unit interface |
US11966345B2 (en) | 2020-08-31 | 2024-04-23 | Micron Technology, Inc. | Network credit return mechanisms |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11588745B2 (en) | 2020-08-31 | 2023-02-21 | Micron Technology, Inc. | Early credit return for credit-based flow control |
US12095653B2 (en) * | 2021-06-15 | 2024-09-17 | Applied Materials, Inc. | Router architecture for multi-dimensional topologies in on-chip and on-package networks |
US12047275B2 (en) * | 2022-03-25 | 2024-07-23 | Xilinx, Inc. | Efficiency and quality of service improvements for systems with higher bandwidth clients mixed with lower bandwidth clients |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6515963B1 (en) | 1999-01-27 | 2003-02-04 | Cisco Technology, Inc. | Per-flow dynamic buffer management |
US7103672B1 (en) | 2000-05-01 | 2006-09-05 | Hewlett-Packard Development Company, L.P. | Method and apparatus for improving system performance through remote credit management |
US6829693B2 (en) | 2001-02-28 | 2004-12-07 | International Business Machines Corporation | Auxiliary storage slot scavenger |
US7042842B2 (en) | 2001-06-13 | 2006-05-09 | Computer Network Technology Corporation | Fiber channel switch |
WO2003019393A1 (en) * | 2001-08-24 | 2003-03-06 | Intel Corporation | A general intput/output architecture, protocol and related methods to implement flow control |
US7110400B2 (en) | 2002-04-10 | 2006-09-19 | Integrated Device Technology, Inc. | Random access memory architecture and serial interface with continuous packet handling capability |
US8478811B2 (en) | 2002-10-08 | 2013-07-02 | Netlogic Microsystems, Inc. | Advanced processor with credit based scheme for optimal packet flow in a multi-processor system on a chip |
US7441055B2 (en) | 2004-03-31 | 2008-10-21 | Intel Corporation | Apparatus and method to maximize buffer utilization in an I/O controller |
US7518996B2 (en) | 2004-09-16 | 2009-04-14 | Jinsalas Solutions, Llc | Fast credit system |
US8924662B2 (en) | 2005-01-10 | 2014-12-30 | Hewlett-Packard Development Company, L.P. | Credit-based storage device flow control |
US7136954B2 (en) | 2005-01-31 | 2006-11-14 | International Business Machines Corporation | Data communication method and apparatus utilizing credit-based data transfer protocol and credit loss detection mechanism |
US7643477B2 (en) * | 2005-08-24 | 2010-01-05 | Intel Corporation | Buffering data packets according to multiple flow control schemes |
US20100158023A1 (en) | 2008-12-23 | 2010-06-24 | Suvhasis Mukhopadhyay | System-On-a-Chip and Multi-Chip Systems Supporting Advanced Telecommunication Functions |
US8085801B2 (en) * | 2009-08-08 | 2011-12-27 | Hewlett-Packard Development Company, L.P. | Resource arbitration |
US8711867B2 (en) * | 2011-08-26 | 2014-04-29 | Sonics, Inc. | Credit flow control scheme in a router with flexible link widths utilizing minimal storage |
US8885510B2 (en) * | 2012-10-09 | 2014-11-11 | Netspeed Systems | Heterogeneous channel capacities in an interconnect |
US9507746B2 (en) | 2012-10-22 | 2016-11-29 | Intel Corporation | Control messaging in multislot link layer flit |
US9479196B2 (en) | 2012-10-22 | 2016-10-25 | Intel Corporation | High performance interconnect link layer |
DE112013007751B3 (de) | 2012-10-22 | 2023-01-12 | Intel Corporation | Hochleistungs-Zusammenschaltungs-Bitübertragungsschicht |
US20150109024A1 (en) | 2013-10-22 | 2015-04-23 | Vaughn Timothy Betz | Field Programmable Gate-Array with Embedded Network-on-Chip Hardware and Design Flow |
US9385962B2 (en) | 2013-12-20 | 2016-07-05 | Intel Corporation | Method and system for flexible credit exchange within high performance fabrics |
US9477631B2 (en) | 2014-06-26 | 2016-10-25 | Intel Corporation | Optimized credit return mechanism for packet sends |
US9921768B2 (en) | 2014-12-18 | 2018-03-20 | Intel Corporation | Low power entry in a shared memory link |
US10061719B2 (en) | 2014-12-25 | 2018-08-28 | Intel Corporation | Packed write completions |
US9720838B2 (en) | 2015-03-27 | 2017-08-01 | Intel Corporation | Shared buffered memory routing |
US9652175B2 (en) | 2015-04-09 | 2017-05-16 | Sandisk Technologies Llc | Locally generating and storing RAID stripe parity with single relative memory address for storing data segments and parity in multiple non-volatile memory portions |
US10120809B2 (en) * | 2015-09-26 | 2018-11-06 | Intel Corporation | Method, apparatus, and system for allocating cache using traffic class |
US9906460B2 (en) | 2015-12-31 | 2018-02-27 | Alcatel-Lucent Usa Inc. | Data plane for processing function scalability |
US10664433B2 (en) | 2016-06-30 | 2020-05-26 | Intel Corporation | Innovative high speed serial controller testing |
KR102635134B1 (ko) | 2016-06-30 | 2024-02-08 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러, 비동기식 메모리 버퍼칩 및 이를 포함하는 메모리 시스템 |
US10282097B2 (en) | 2017-01-05 | 2019-05-07 | Western Digital Technologies, Inc. | Storage system and method for thin provisioning |
US11029859B2 (en) | 2017-08-23 | 2021-06-08 | Toshiba Memory Corporation | Credit based command scheduling |
US10474611B2 (en) | 2017-09-19 | 2019-11-12 | International Business Machines Corporation | Aligning received bad data indicators (BDIS) with received data on a cross-chip link |
US10956086B2 (en) | 2018-01-29 | 2021-03-23 | Micron Technology, Inc. | Memory controller |
US11461527B2 (en) | 2018-02-02 | 2022-10-04 | Micron Technology, Inc. | Interface for data communication between chiplets or other integrated circuits on an interposer |
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 |
US11132233B2 (en) | 2018-05-07 | 2021-09-28 | Micron Technology, Inc. | Thread priority management in a multi-threaded, self-scheduling processor |
US11119972B2 (en) | 2018-05-07 | 2021-09-14 | Micron Technology, Inc. | 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 |
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 |
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 |
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 |
US10782916B2 (en) | 2018-08-08 | 2020-09-22 | Micron Technology, Inc. | Proactive return of write credits in a memory system |
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 |
US10592452B1 (en) | 2018-09-12 | 2020-03-17 | Cavium, Llc | Low latency interconnect protocol for coherent multi-chip communication |
DE112019005121T5 (de) | 2018-10-10 | 2021-06-24 | Nvidia Corporation | Testsysteme zum ausführen von selbsttests in eingesetzten automobilen plattformen |
US10671554B1 (en) | 2019-02-08 | 2020-06-02 | Advanced Micro Devices, Inc. | Credit based flow control mechanism for use in multiple link width interconnect systems |
CN112311696B (zh) | 2019-07-26 | 2022-06-10 | 瑞昱半导体股份有限公司 | 网络封包接收装置及方法 |
US11580044B2 (en) | 2020-08-31 | 2023-02-14 | Micron Technology, Inc. | Network credit return mechanisms |
US11588745B2 (en) | 2020-08-31 | 2023-02-21 | Micron Technology, Inc. | Early credit return for credit-based flow control |
US11356378B2 (en) | 2020-08-31 | 2022-06-07 | Micron Technology, Inc. | Combined write enable mask and credit return field |
US11362939B2 (en) | 2020-08-31 | 2022-06-14 | Micron Technology, Inc. | Flow control for a multiple flow control unit interface |
US11600332B2 (en) | 2020-10-20 | 2023-03-07 | Micron Technology, Inc. | Programmable atomic operator resource locking |
-
2020
- 2020-08-31 US US17/007,468 patent/US11362939B2/en active Active
-
2021
- 2021-06-22 WO PCT/US2021/038407 patent/WO2022046254A1/en active Application Filing
- 2021-06-22 CN CN202180066369.0A patent/CN116235479A/zh active Pending
-
2022
- 2022-05-13 US US17/744,158 patent/US11831543B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11831543B2 (en) | 2020-08-31 | 2023-11-28 | Micron Technology, Inc. | Flow control for a multiple flow control unit interface |
US11966345B2 (en) | 2020-08-31 | 2024-04-23 | Micron Technology, Inc. | Network credit return mechanisms |
Also Published As
Publication number | Publication date |
---|---|
US11831543B2 (en) | 2023-11-28 |
US20220070089A1 (en) | 2022-03-03 |
US20220278924A1 (en) | 2022-09-01 |
US11362939B2 (en) | 2022-06-14 |
WO2022046254A1 (en) | 2022-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116235479A (zh) | 用于多流量控制单元接口的流量控制 | |
CN116325665A (zh) | 将高速点对点接口通道映射到分组虚拟通道 | |
US11966345B2 (en) | Network credit return mechanisms | |
US11777864B2 (en) | Transparent packet splitting and recombining | |
US11789885B2 (en) | Ordered delivery of data packets based on type of path information in each packet | |
US11924313B2 (en) | Multiple protocol header processing | |
CN116325690A (zh) | 用于对多个元素进行编码的单个字段 | |
US11695704B2 (en) | Reduced sized encoding of packet length field | |
CN114385250B (zh) | 小芯片系统内的小芯片i/o信道的初始化定序 | |
WO2022046279A1 (en) | Optional path ordering in packet-based network | |
US11588745B2 (en) | Early credit return for credit-based flow control | |
CN114385240A (zh) | 组织可编程原子单元指令存储器的方法 | |
CN116636189A (zh) | 用于网络装置中的缓冲包的包仲裁 | |
CN116261849A (zh) | 组合写入启用掩码和信用返回字段 | |
CN114385237A (zh) | 低时延寄存器错误校正 | |
CN114385326A (zh) | 桶式处理器中的线程重放到保留状态 | |
CN114385538B (zh) | 电路中的管线合并 | |
CN114385238A (zh) | 减小存储器控制器中的存储器操作的时延 | |
CN116635824A (zh) | 桶式处理器中的线程调度控制及存储器分割 | |
CN116569151A (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 |