CN102298563A - 资源粒度大于信用粒度时的信用管理 - Google Patents
资源粒度大于信用粒度时的信用管理 Download PDFInfo
- Publication number
- CN102298563A CN102298563A CN2011102663640A CN201110266364A CN102298563A CN 102298563 A CN102298563 A CN 102298563A CN 2011102663640 A CN2011102663640 A CN 2011102663640A CN 201110266364 A CN201110266364 A CN 201110266364A CN 102298563 A CN102298563 A CN 102298563A
- Authority
- CN
- China
- Prior art keywords
- credit
- data
- head
- grouping
- credits
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- 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
-
- 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/39—Credit based
-
- 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
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
- Oscillators With Electromechanical Resonators (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Magnetic Resonance Imaging Apparatus (AREA)
Abstract
公开了一种数字装置以及用于管理数字装置中接口的基于信用的流控制的方法。在一个实施例中,基于信用的流控制接口上的接收器配置成,当接收到导致缓冲存储器中较少未使用数据信用的数据有效载荷时,早期释放一个或多个数据信用,其中缓冲存储器以比数据信用粗的粒度分配。在另一个实施例中,头部信用和数据信用是基于实际的分组数据有效载荷大小而动态调整的。
Description
本发明是申请号为200980117882.7、申请日为2009年12月9日、发明名称为“资源粒度大于信用粒度时的信用管理”的发明专利申请的分案申请。
技术领域
本发明涉及数字系统,更特别地涉及用于数字系统中接口的基于信用的流控制机制的信用管理。
背景技术
数字系统常常包括系统中集成电路(IC)之间、系统之间及有时候甚至是IC内的流控制的接口。一般而言,流控制机制的存在防止在接收器中出现缓冲超出限度或者其它数据损失情况。例如,一种普通的流控制机制是基于信用的。接口上的接收器可以广播其可用于各种类型发送的信用个数,而发送器可以记录这些信用。然后,发送器可以在接口上发送并为每次发送扣减信用。一旦信用用完,发送器就必须停止发送。当接收器完成所接收发送的处理后,就释放每次发送所消耗的信用,并将释放的信用发送回发送器。
接收器所广告的信用通常受处理该发送的接收器上可用资源约束。例如,通常提供缓冲来存储所接收的发送。可用的缓冲指示针对每种发送类型可以广告多少信用。在有些情况下,缓冲实现为存储器。如果存储器不能以与信用相同的粒度(granularity)(或者以更精细的粒度)分配,则导致存储器使用的低效。一般而言,完全存储器区组(granule)必须分配成存储任意数量的数据直到完全存储器区组。因为数据可以以小于存储器区组(或者以存储器区组的某个非整数倍)发送,所以可以广告的信用个数少于人们基于对存储器大小的了解可能猜到的。因此,接口上可以实现的带宽小于当存储器可以以更大粒度分配时有可能实现的带宽。
发明内容
在一种实施方式中,一种装置包括耦合到缓冲存储器的接收器。该接收器包括配置成管理用于接口的流控制信用的信用管理单元,其中接收器在使用过程中耦合到所述接口。接口上所接收的每个分组都包括分组头部并可选地包括分组数据。分组数据是关于流控制信用中的依赖于分组数据大小的数据信用而测量的,其中每个数据信用代表固定数量的数据字节。缓冲存储器配置成存储与由接收器在接口上所接收到的分组相对应的分组头部和分组数据,其中缓冲存储器可以由接收器按缓冲单元分配,其中缓冲单元是数据信用大小的N倍,其中N是大于1的整数。数据信用的总数等于缓冲存储器中可用于存储分组数据的缓冲单元的个数的N倍,而且,信用管理单元配置成,基于当分组数据未填满缓冲单元时不可用的数据信用的最大个数并且进一步基于允许同时传送(in flight)的分组个数,来保留总数据信用中的多个。信用管理单元配置成响应于接收导致少于不可用数据信用的最大个数的给定分组的分组数据而释放一个或多个数据信用。信用管理单元配置成在给定分组被消费之前释放一个或多个数据信用。还可构想对应的方法。
在一种实施方式中,一种装置包括耦合到缓冲存储器的接收器。该接收器包括配置成管理用于接口的流控制信用的信用管理单元,其中接收器在使用过程中耦合到该接口。接口上所接收的每个分组都包括头部并可选地包括数据。头部是关于用于接口上流控制的一个或多个头部信用而测量的,而数据是关于用于接口上流控制的一个或多个数据信用而测量的。每个数据信用代表固定数量的数据字节。缓冲存储器配置成存储与由接收器在接口上所接收到的分组相对应的分组头部和分组数据。信用管理单元配置成响应于一个或多个所接收到的分组中分组数据的大小而动态地调整用于存储分组头部的第一缓冲存储器数量和用于存储分组数据的第二缓冲存储器数量,而且其中,信用管理单元配置成响应于该动态调整而在接口上将数据信用和头部信用释放到发送器。
附图说明
以下具体描述参考附图,现在简要地描述附图。
图1是数字系统的一个实施例的框图。
图2是存储器缓冲分配的一个实施例的框图。
图3是图1所示接收器的一个实施例的框图。
图4是例示了在图1所示的系统的初始化过程中,图3所示的接收器的一个实施例的操作的流程图。
图5是例示了响应于在图1所示的系统中接收到分组,图3所示的接收器的一个实施例的操作的流程图。
图6是例示了响应于分组被图1所示系统中的目标消费,图3所示的接收器的一个实施例的操作的流程图。
图7是图1所示的接收器的另一实施例的框图。
图8是例示了在图1所示的系统的初始化过程中,图7所示的接收器的一个实施例的附加操作的流程图。
图9是例示了响应于在图1所示的系统中接收到分组,图7所示的接收器的一个实施例的附加操作的流程图。
图10和11是例示了图7所示的接收器的一个实施例的附加细节的伪码。
尽管本发明容易进行各种修改及可选形式,但其特定实施例作为例子在附图中示出并将在此具体描述。但是,应当指出,附图和对其的具体描述不是要将本发明限制到所公开的特定形式,相反,本发明是要覆盖属于如由所附权利要求定义的本发明的主旨与范围的所有修改、等价物与可选方式。在此所使用的标题仅仅是为了组织的目的,而不是意味着要用于限制描述的范围。如贯穿本申请所使用的,“可以”一词是以允许的含义(即,意味着有潜力)而不是以强制的含义(即,意味着必须)使用的。类似地,“包括”一词意味着包括但不限于。
具体实施方式
现在转向图1,示出了系统10的一个实施例的框图。在所例示的实施例中,系统10包括发送器12、接收器14、缓冲存储器16及可选地还有分组目标18。发送器耦合到接口20,接收器14也耦合到该接口。缓冲存储器16耦合到接收器14和目标18。
发送器12配置成维护头部信用和数据信用,其中头部信用和数据信用指示接收器14当前能够接受多少分组头部和分组数据流量。例如,在图1中,发送器12可以包括头部信用寄存器22和数据信用寄存器24。在系统10的初始化过程中,而且有可能在操作过程中接口20被复位的其它点处,接收器14可以确定广告给发送器12的头部信用和数据信用的个数。发送器12可以利用所广告的信用来初始化寄存器22和24。当发送器12发送分组头部和分组数据时,发送器12可以扣减被所发送的头部和数据消费的信用。接收器14可以将释放后的信用发送回发送器12,然后发送器12可以将释放的信用添加到寄存器22和24。因此,在任何给定的时间点,响应于寄存器22和24中的信用,发送器12可以控制通过接口20发送多少信息。例如,如果没有足够的信用可用于给定的发送,则发送器12可以延迟发送,直到可以获得所需数量的信用。
一般而言,广告信用是指接收器14通知发送器12可用的信用个数的任何机制。类似地,释放信用可以指用于确定经互连20上的发送所消费的信用可以返回到发送器12的任何机制及用于返回它们的机制。基于接口20的定义,用于执行广告和释放的机制是特定于实现的,但通常可以包括在接口20上从接收器14到发送器12的发送。例如,分组可以定义成发送释放的信用,或者在用于所有分组的头部中的字段可以包括释放的信用。发送释放的信用的分组可以在初始化过程中发送,以便广告期望数量的信用。如果广告了比可以在分组字段中发送的信用多的信用,则可以发送多个分组。
一般来说,在接口20上发送的分组可以包括头部(其定义分组的类型并且可以提供其它控制信息),而且可以可选地包括数据(或者“有效载荷”)。头部的大小可以是固定的,因此,每个头部在其被发送器12发送时可以消费一个头部信用。其它实施例可以实现可变大小的头部,而且,给定分组所需的头部信用的个数可以依赖其头部的大小。数据有效载荷的大小可以是可变的。因此,数据信用可以定义成表示固定数量的数据字节(称为“数据单元”),而且给定分组所需的数据信用的个数可以是有效载荷的大小除以数据信用的大小。数据信用的大小可以是接口20定义的一部分。例如,在一个实施例中,接口20可以是快速外围部件互连(PCIe)接口,而数据信用可以代表16个字节。
接收器14包括信用管理单元26,而且可以包括一个或多个信用寄存器28,用来存储由信用管理单元26管理用于发送器12的信用所使用的值。以下提供各种实施例的附加细节。接收器14还可以包括在接口20上通信、与缓冲存储器16通信等的各种其它电路。此外,尽管图1例示了发送器12发送到接收器14,但在接口20上通信可以是双向的。即,发送器功能可以存在于接口20的两侧,而且接收器功能也可以存在于两侧。在讨论中为了简化,本说明书将指示发送器12发送到接收器14的情况,但是应当理解,分组可以从图1的接收器14一侧发送到发送器12一侧。
在所例示的实施例中,接口20可以包括一对单向、点对点的链接。分组可以在该链接上发送。在其它实施例中,接口20可以具有其它定义。例如,接口20可以是总线,具有地址和数据发送。地址发送可以是通过地址信用(类似于头部信用)来流控制的,而数据发送可以是通过数据信用来流控制的。基于接口20的定义,任何信用集合都可以使用。一般来说,信用集合可以称为流控制信用。
一般来说,目标18可以指消费来自缓冲存储器16的分组的任何电路。目标18可以是包括接收器14的设备的一部分(例如,IC)或者可以是独立的。例如,接收器14可以是接收分组并在另一个接口上转发它们的开关,在这种情况下,对来自缓冲存储器16的分组的消费可以是在该另一接口上对分组的转发。
缓冲存储器16可以包括接收器14可以访问的任何类型的存储器。例如,缓冲存储器16可以包括耦合到存储器控制器的系统存储器,例如动态随机存取存储器(DRAM),其中存储器控制器配置成与DRAM连接。例如,可以支持各种DRAM存储器模块,例如单个内嵌存储器模块(SIMM)、双内嵌存储器模块(DIMM)等。任何DRAM技术都可以使用(例如,同步DRAM(SDRAM)、双数据率(DDR)SDRAM、DDR2SDRAM、DDR3SDRAM、Rambus DRAM(RDRAM)等)。在此类实施例中,接收器14可以对存储器控制器产生将分组头部和分组数据写到存储器16的写命令。目标18可以对存储器控制器产生读取分组头部和分组数据的读命令。在其它实施例中,缓冲存储器16可以包括接收器14私有的存储器,或者被接收器14和系统10中一个或多个其它接收器和/或发送器共用的存储器。缓冲存储器16可以包括例如高速缓冲存储器或者其它专用的缓冲存储器。在有些实施例中,缓冲存储器16可以包括静态RAM(SRAM)。
缓冲存储器16可以分配成存储分组头部和分组数据。具体而言,缓冲存储器16可以以比数据信用(和/或头部信用,在有些实施例中)粗的粒度分配。缓冲存储器16可以以在此称为缓冲单元(BU)的区组分配。因此,在图1中,示出了头部BU 30和数据BU 32。本说明书的其余部分可以使用其中头部信用具有与BU相同的粒度而数据信用的粒度更细的实施例。但是,还构想其中头部信用粒度也比BU更细且类似于数据信用机制的机制可以用于头部信用的实施例。
因为BU粒度比DU粒度粗,所以缓冲存储器16可能没有完全用于存储数据。图2是针对其中BU是DU大小的4倍的情况例示了少于完全使用的例子的框图。一般来说,其它实施例可以包括大小为DU大小的N倍的BU,其中N是大于1的整数。在有些实施例中,N可以是2的幂。
总的来说,各种分组的数据有效载荷可以在0到M个DU之间,其中M是大于0的整数。M的大小可以是依赖实现的,而且可以依赖于接20的定义(例如,接20可以定义每分组的最大数据有效载荷大小)。但是,M和N不必然有任何特定的关系。即,对于给定的分组,M/N不必是整数。
图2在右侧例示了BU,虚线向内延伸到本例中所存储的数据有效载荷。在左侧,实线例示了DU。如以上所提到的,在这个例子中,每个BU有4个DU。图2中示出了5DU有效载荷40。前4个DU存储在BU0中并且占用了整个BU。第5个DU存储在BU1中。由于缓冲存储器16分配成以BU粒度存储有效载荷数据,因此整个BU1都分配给有效载荷40,使得在BU1中有3个DU未用。以另一种方式看,在对应于有效载荷40的分组被消费之前,缓冲存储器的这3个DU都是不可用的,而且从根本上可能关于被发送器12用于发送有效载荷40所消费的DU(及由此数据信用)的个数构成计数误差。即,发送器12消费了5个信用来发送有效载荷40,但有效载荷40实际上占用了缓冲存储器16的8个信用。
图2中例示了另一个有效载荷42,在这个例子中它是4个DU。因此,有效载荷42存储在BU2中,而且没有未使用的DU。还示出了第三个有效载荷44,它是6个DU,因此在图2中占用了BU3和BU4的2个DU。因此,缓冲存储器16中又有2个DU是没有使用的。通常,一个分组可以占用多达P个BU,其中,如果有效载荷不恰好是N个DU的整数倍,则最后一个被占用的BU中的一个或多个DU可能是没有使用的。在其它情况下,未使用的DU可能存在于被有效载荷占用的BU的开始(例如,如果有效载荷不需要与BU的开始对准),或者在开始和末尾都存在。在任何一种情况下,基于对应于BU(N)的DU个数,都可以定义用于数据有效载荷的最大可能误差。如果一个DU占用了一个BU,则发生最大误差,因此,对于给定的有效载荷,最大误差是N-1个DU(或者N-1个数据信用)。
因此,对于可分配用于存储分组数据的给定的Y个BU,少于Y*N个数据信用广告给发送器12。信用管理单元26可以保留可以别的方式广告的数据信用,以确保在缓冲存储器16中不会发生溢出。具体而言,最坏情况的总误差会在每个数据有效载荷都引起最大误差(N-1)的时候出现。如果可以发送至多C个分组(例如,头部信用的个数是C),则最坏情况的总误差可以是C-1乘以N-1。使用C-1是因为最后的数据有效载荷的误差是不可检测的,因为发送器12在头部信用用完之后不能再发送另一个分组。
当接收到具有数据有效载荷的给定分组时,如果有效载荷引起少于最大误差的误差,则有些数据信用可以立即被释放(在分组被消费之前)。即,缓冲存储器16中用于数据有效载荷的未使用DU少于信用管理单元26没有广播到发送器12的保留信用的数量。例如,在图2中,有效载荷42实现了零误差,因此响应于接收到有效载荷42,三(N-1-0)个数据信用可以被释放。有效载荷44实现了2个误差,因此响应于接收到有效载荷44,一(N-1-2)个数据信用可以被释放。
一旦分组被消费,就有可能再次需要保留的信用(因为接收到的下一个分组可能有实现最大个数的未使用DU的有效载荷)。因此,真正被发送器消费的剩余信用可以在分组被消费的时候释放。即,在分组被消费时所释放的信用个数等于对应于有效载荷的实际信用个数减去当分组被接收时所释放的信用个数。
通过释放对应于未实现的误差的信用,有可能发送由于缺少可用数据信用而延迟的附加分组。即,接口20上的带宽可以被更有效地利用。
图3是接收器14的一个实施例更具体的框图,对于引起少于未使用DU的最大个数的未使用DU的数据有效载荷实现数据信用的早期释放。在所例示的实施例中,示出了信用管理单元26,它耦合到最大DU误差寄存器28A和释放的数据信用(DCrs)寄存器28B。寄存器28A-28B可以是图1所示的Cr寄存器28的一部分。在图3中示出的还有DCr FIFO 28C,它可以实现为一个或多个Cr寄存器28或者实现为FIFO存储器或者其它存储器。可选地,DCr FIFO 28C可以不实现,而且作为代替,存储在其中的数据可以利于所接收到的分组列队(例如,在缓冲存储器16中)。
信用管理单元26可以参考未使用DU的最大个数来计算在各个点要释放的信用。最大DU误差寄存器28A可以存储这个值。或者信用管理单元26可以产生该值,或者该值可以通过软件编程到寄存器28A中。在有些实施例中,DU和BU都可以是固定的,并且可以硬编码到信用管理单元26中,从而可以去掉寄存器28A。
在一个实施例中,信用管理单元26可以在释放的数据信用寄存器28B中累积要发送到发送器12的释放信用。信用管理单元26可以使用任何机制来确定何时发送所释放的信用。例如,释放的信用可以在一累积够某个数量的信用(例如,超过可编程的阈值)时、在自上次发送释放信用起经过某个时间段之后就发送、或者利用所经过时间和释放信用的个数的组合,等等。类似的寄存器可以用于累积释放的头部信用,或者可以使用同一个寄存器中的字段。
DCr FIFO 28C可以为存储在缓冲存储器16中的每个分组存储多个数据信用(#DCrs)。当分组从缓冲存储器中被消费时,对应数量的数据信用可以从DCr FIFO 28C读取并释放。信用管理单元26可以根据发送分组所消费的数据信用的总数和响应于接收到分组而释放的数据信用的个数来为每个接收到的分组计算数据信用的个数。
图4是例示了在系统10的初始化过程中接收器14的一个实施例的操作的流程图。尽管为了方便理解而以特定次序示出了各个块,但也可以采用其它次序。块可以在接收器14内按组合逻辑并行执行。整体来看,块、块的组合和/或流程图可以在多个时钟周期上传送(pipeline)。
基于要广告到发送器12的头部信用个数(header_credits)和每BU的DU个数(N),信用管理单元26可以确定总的潜在的DU误差(DU_Err)。具体而言,DU_Err是由(N-1)*(header_credits-1)给出的(块50)。信用管理单元26可以确定要广告到发送器12的DU(数据信用)个数(DU_Adv)。具体而言,DU_Adv可以计算为缓冲存储器16中DU的总数(N*分配来存储分组数据的BU个数)减去在块50所确定的DU_Err(块52)。有效地,DU_Err可以是保留用来处理可能在缓冲存储器16的BU中引起的未使用DU的数据信用个数。信用管理单元26可以广告头部信用和用于数据信用的DU_Adv(块54)。此外,信用管理单元26还可以在寄存器28A中将Max_DU_Err设置为N-1,并且还在寄存器28B指将释放的数据信用初始化为零(块56)。
图5是例示了响应于在接口20上接收到分组,接收器14的一个实施例的操作的流程图。尽管为了方便理解而以特定次序示出了各个块,但也可以采用其它次序。块可以在接收器14内按组合逻辑并行执行。整体来看,块、块的组合和/或流程图可以在多个时钟周期上传送。
信用管理单元26可以确定有效载荷中所实现的数据误差(即,存储有效载荷数据的BU中未使用的DU个数)(块60)。信用管理单元26可以确定未实现的数据误差等于Max_DU_Err减去实现的数据误差(块62)。未实现的数据误差是当接收到分组时可以被释放的数据信用的个数。信用管理单元26可以将未实现的数据误差加到释放的DCr寄存器28B中释放的数据信用(块64)。此外,信用管理单元26还可以在DCr FIFO 28C中存储当分组从缓冲存储器16消费时要释放的数据信用的个数(块66)。具体而言,写到FIFO的个数是与有效载荷相对应的数据信用的实际个数减去未实现的数据误差。
图6是例示了响应于分组从缓冲存储器16被消费,接收器14的一个实施例的操作的流程图。一般来说,当分组被目标18从缓冲存储器16读取或者分组不再需要存储在缓冲存储器16中(例如,分组已经被丢掉)时,该分组被消费。尽管为了方便理解而以特定次序示出了各个块,但也可以采用其它次序。块可以在接收器14内按组合逻辑并行执行。整体来看,块、块的组合和/或流程图可以在多个时钟周期上传送。
信用管理单元26可以从DCr FIFO 28C的条目读取数据信用的个数,而且可以将数据信用的个数添加到寄存器28B中释放的数据信用,从而释放数据信用(块70和72)。在一个实施例中,分组可以按照接收次序被消费,而且数据信用的个数可以从FIFO的头读取。如果分组以不同的次序被消费,则可以提供FIFO中到期望条目的偏移量。
应当指出,与为每个有效载荷保留的最大个数相比,图4至6例示了基于BU中未使用DU的实际个数与数据信用早期释放相关的操作。接收器14和/或信用管理单元26也可以包括以上所述在每个点处的附加操作。
除了或者代替以上所讨论的数据信用的早期释放,接收器14的另一实施例可以实现适应性的信用管理。利用适应性的信用管理,接收器14试图将分配给头部的缓冲存储器16和分配给数据的缓冲存储器16与实际在接口20上接收的流量匹配。即,当数据有效载荷的大小增加时,有更多的数据信用和更少的头部信用可以允许更有效地使用接口带宽(因为每个分组仍然只需要一个头部信用,但有效载荷需要多个数据信用)。当数据有效载荷的大小减小时,有更少的数据信用和更多的头部信用可以允许更有效地使用接口带宽(因为对于每个分组所需头部信用与所需数据信用之比增加了)。
因此,信用管理单元26可以监视由接收器14所接收的数据有效载荷的大小,并且可以动态修改分配给头部的缓冲存储器的量(例如,头部BU 30的大小)和分配给数据有效载荷的缓冲存储器的量(例如,数据BU 32的大小)。可选地,分配给头部的存储器的量可以大到足以容纳期望的最大数量的头部,但信用可以管理成增加或减少发送器可使用的头部信用的个数和数据信用的个数。这种动态信用管理仍然可以允许对缓冲存储器16更有效的利用,因为头部信用的个数影响基于BU中未使用的DU要保留的数据信用的个数,如前面所讨论的。
在一个实施例中,可以针对数据有效载荷大致在期望的有效载荷大小中间的分组初始化头部和数据信用(及对应的缓冲存储器分配)。例如,在一个实施例中,接口20可以是PCIe接口,而数据有效载荷的大小可以在0到256字节之间,且信用可以针对128字节的有效载荷初始化。然后,可以响应于在操作过程中所经历的有效载荷的实际大小而执行动态调整。
图7是接收器14的一个实施例更具体的框图,用于实现动态信用管理的一个实施例及前面讨论过的数据信用的早期释放。如前面所讨论的,图7的实施例可以包括寄存器28A和28B及FIFO 28C。此外,还包括释放的头部信用(HCrs)寄存器28D、最大额外头部信用(MaxExHead)寄存器28E、最大召回(recall)头部信用(MaxRecHead)寄存器28F、挂起的(pending)头部信用(PendHeadCr)寄存器28G、挂起的数据信用(PendDataCr)寄存器28H、实现的数据信用(RlzdDataCr)寄存器28I和实现的头部信用(RlzdHeadCr)寄存器28J,这些寄存器全部都耦合到信用管理单元26,如图7所示。
释放的头部信用寄存器28D可以类似于寄存器28B,但还可以累积已经释放的头部信用。可选地,如前面所提到的,如果期望的话,释放的头部信用和释放的数据信用可以累积在同一寄存器的两个字段中。MaxExHead和MaxRecHead寄存器28E-28F可以设置关于动态信用管理的界限。这些寄存器可以如下面所讨论的那样由信用管理单元26自动设置,或者如果期望的话可以由软件编程。具体而言,可以通过扣留(withhold)数据信用来分配的附加头部信用的最大个数是由MaxExHead寄存器28E指示的。可以被扣留以便释放附加数据信用的头部信用的最大个数是由MaxRecHead寄存器28F指示的。
挂起的头部信用和挂起的数据信用寄存器28G-28H可以累积计划的头部和数据信用调整以及为满足计划调整而请求的释放的头部或数据信用。这些累积可以在当动态调整发生的时候执行,以便捕捉没有在动态调整中处理的信用。例如,在一个实施例中,一个头部信用的增加需要3个数据信用的减少。如果还没有三个数据信用可用,则可用的数据信用可以累积到寄存器28H中。挂起的头部和数据信用可以是带符号的值,以允许捕捉所需信用,该所需信用可以通过随后释放的信用获得。实现的数据信用和头部信用寄存器28I-28J存储带符号的实现的头部信用调整和数据信用调整。
现在转向图8,示出了例示在系统10初始化过程中接收器14的一个实施例执行适应性信用管理的操作的高级流程图。对于也实现数据信用的早期释放的实施例,图8的操作可以是图4的操作的附加。尽管为了方便理解而以特定次序示出了各个块,但也可以采用其它次序。块可以在接收器14内按组合逻辑并行执行。整体来看,块、块的组合和/或流程图可以在多个时钟周期上传送。
信用管理单元26可以将MaxExHead寄存器28A初始化为所允许的最大头部个数(#CMD)减去为中等大小的分组所分配的头部信用个数(header_credits)。#CMD可以是硬件最大值,或者可以由软件根据头部BU 30的分配来编程。例如对于中等大小的分组,头部信用的个数可以等于数据BU的个数除以二。因此,附加头部信用的最大个数可以是头部BU 30中剩余的、还未分配的空间(块80)。召回的头部信用的最大个数(被动态移除以便允许附加数据信用的头部信用-MaxRecHead)可以初始化为目前头部信用的一半或者头部信用减去缓冲存储器16中数据BU总数除以4的整数部分中的最小值(块82)。头部信用个数的一半可以被选择作为用于最大分组的合理个数。对于这种实施例,数据BU个数除以4可以是最小值,因为最大数据有效载荷是4个BU。应当指出,在一个实施例中,如果头部信用的初始个数小于或者等于2,则最大召回头部信用可以设置成零。当有两个或者一个头部信用时,不能通过减少头部信用来实现任何好处,因为头部信用的缺乏可能阻止附加数据信用的使用。信用管理单元26可以广告头部信用的个数和DU_Adv数据信用(块84)。
现在转向图9,示出了接收器14的一个实施例响应于接收到分组的操作的高级流程图。对于也实现数据信用的早期释放的实施例,图9的操作可以是图5操作的附加。尽管为了方便理解而以特定次序示出了各个块,但也可以采用其它次序。块可以在接收器14内按组合逻辑并行执行。整体来看,块、块的组合和/或流程图可以在多个时钟周期内传送。
一般来说,信用管理单元26可以根据其数据有效载荷的大小而将分组归到4类中的一类,而且可以根据类别来调整信用。因此,本实施例可以基于每个接收到的分组进行调整。根据期望,其它实施例可以对两个或更多个分组监视分组的大小,以便进行调整。
如果分组不包括数据有效载荷(判决块90,“是”分支),则分组是Cat0分组,而且不做调整。如果分组包括的数据有效载荷小于或者等于中等大小分组数据有效载荷的1/2(例如,以上提到的PCIe实施例中的64个字节)(判决块92,“是”分支),则分组是Cat1分组。针对Cat1分组的数据有效载荷相对小,因此减少数据信用并增加头部信用可以导致更好的接口带宽利用(块94)。如果分组包括在中等大小分组的1/2和中等大小分组的11/2之间的数据有效载荷(判决块96,“是”分支),则分组是Cat2分组。在Cat2中,分组数据有效载荷大致是中等大小。在Cat2大小范围之内,初始的头部和数据信用大致是正确的。如果挂起的和实现的信用非零,则信用管理单元可以沿最近调整的相反方向调整信用(块98)。即,如果最近的调整是增加头部信用并减少数据信用,则信用管理单元可以增加数据信用并减少头部信用。如果最近的调整是减少头部信用并增加数据信用,则信用管理单元可以减少数据信用并增加头部信用。最后,如果数据有效载荷大(大于中等大小分组的1.5倍,判决块96,“否”分支),则分组是Cat3分组。大的有效载荷(Cat3)分组可以受益于更多的数据信用和更少的头部信用,因此信用管理单元26可以减少头部信用并增加数据信用(块100)。
应当指出,如果MaxHeadCr和MaxRecHead寄存器28F-28G用于对动态信用调整设置界限,则图9的操作可能受到限制(即,如果调整会破坏MaxHeadCr和MaxRecHead寄存器28F-28G设置的界限,则信用不能象所示出的那样进行调整)。
图10和11示出了针对一个实施例更具体地例示图9的操作的伪码。图7所示的寄存器名称在伪码中例示。此外,为了伪码中的方便,对头部和数据信用使用向量化的标记。具体而言,adaptive_credits定义为{adaptive_header_credits ,adaptive_data_credits}且pending_credits定义为{PendHeadCr,PendDataCr}。adaptive_credits是(可能调整的)头部和数据信用。releasing_header_credits和releasing_data_credits是目前被释放的信用。如前面所描述的,对于给定的分组,当实现的数据误差小于最大误差时,releasing_data_credits可以包括早先释放的数据信用。这两个释放信用变量还包括由于从缓冲存储器16的分组消费而释放的信用。
图10例示了adaptive_credits的生成。总的来说,如果还没有到达界限,则adaptive_credits等于pending_credits。否则,依赖于所接收到的分组的类别(并且,在分组的情况下Cat2,还依赖于最近的调整),adaptive_credits可以包括加上或者减去信用。在本实施例中,最近的调整是通过将挂起的头部信用和实现的头部信用求和并将它们与零做比较来检测的。
如可以从图10看到的,在本实施例中,1个头部信用等于3个数据信用。因此,增加1个头部信用就减去了3个数据信用,反之亦然。基于N-1,其它实施例可以有头部信用对数据信用的不同比率。
最后,在图10中,计算中间值remaining_pending_d。remaining_pending_d应当小于或者等于0并且小于3。在一个实施例中,如果PendHeadCr是负的,则remaining_pending_d是0。
图11例示了基于图10中确定的适应性信用和释放信用对可实现信用的计算。同样,图11的例子是基于3个数据信用等于1个头部信用,这允许在任何给定的时间点有1或2个数据信用挂起。最后,在图11中示出了对寄存器28B、28D和28G-28J的更新,其中“+=”代表将寄存器的当前值递增等号右侧的值,而“-=”代表将寄存器的当前值递减等号右侧的值。
一些实施例可以包括如下编号的条目所阐述的特征:
1、一种装置,包括:
接收器,包括配置成管理用于接口的流控制信用的信用管理单元,在使用过程中该接收器耦合到所述接口,其中在所述接口上接收到的每个分组都包括头部并可选地包括数据,而且其中头部是关于用于所述接口上的流控制的一个或多个头部信用而测量的,而数据是关于用于所述接口上的流控制的一个或多个数据信用而测量的,每个数据信用代表固定个数的数据字节;及
缓冲存储器,耦合到所述接收器并且配置成存储与由所述接收器在所述接口上接收到的分组相对应的分组头部和分组数据;及
其中所述信用管理单元配置成,响应于一个或多个所接收到的分组中分组数据的大小,来动态调整用于存储分组头部的第一缓冲存储器数量和用于存储分组数据的第二缓冲存储器数量,而且其中,所述信用管理单元配置成响应于该动态调整而在所述接口上向发送器释放数据信用和头部信用。
2、如条目1所述的装置,其中,所述信用管理单元增加第一数量并减少第二数量,而且其中,所述信用管理单元配置成扣留与被消费的分组相对应的一个或多个数据信用,并且配置成释放一个或多个头部信用以实现修改。
3、如条目2所述的装置,其中,头部信用代表N-1乘以由数据信用代表的固定个数的数据字节,而且其中,所述信用管理单元配置成扣留N-1个数据信用以释放一个头部信用。
4、如条目2或3所述的装置,其中,所述信用管理单元配置成,响应于接收到分组数据大小小于第一阈值的一个或多个分组,而增加第一数量并减少第二数量。
5、如条目1至4中任一项所述的装置,其中,所述信用管理单元减少第一数量并增加第二数量,而且其中,所述信用管理单元配置成扣留与被消费的分组相对应的一个或多个头部信用,并且配置成释放一个或多个数据信用,以便在发送器处实现调整。
6、如条目5所述的装置,其中,所述信用管理单元配置成,响应于接收到分组数据大小大于第二阈值的一个或多个分组,而减少第一数量并增加第二数量。
7、如条目1至6中任一项所述的装置,其中,所述信用管理单元配置成,响应于接收到分组数据大小大于第一阈值并且小于第二阈值的一个或多个分组,来执行与最近所执行的调整相反的调整。
8、如条目1至7中任一项所述的装置,其中,所述信用管理单元配置成确定第一数量的最小值和第一数量的最大值,而且其中,所述信用管理单元配置成根据该最小值和最大值限制第一数量和第二数量的动态修改。
9、一种在配置成管理用于接口的流控制信用的接收器中的方法,其中在使用过程中该接收器耦合到所述接口,其中在所述接口上接收到的每个分组都包括头部并可选地包括数据,而且其中所述头部是关于用于所述接口上的流控制的头部信用而测量的,而且其中数据是关于用于所述接口上的流控制的一个或多个数据信用而测量的,每个数据信用代表固定个数的数据字节,该方法包括:
动态调整头部信用的第一数量和数据信用的第二数量,该动态调整是响应于一个或多个所接收到的分组中的分组数据的大小的;及
响应于该动态调整,在所述接口上向发送器释放数据信用和头部信用。
10、如条目9所述的方法,其中,所述动态调整包括增加第一数量并减少第二数量,而且其中,释放包括扣留与被消费的分组相对应的一个或多个数据信用而释放一个或多个头部信用,以便在所述发送器处实现调整。
11、如条目9或10所述的方法,其中,所述动态调整包括减少第一数量并增加第二数量,而且其中,释放包括扣留与被消费的分组相对应的一个或多个头部信用而释放一个或多个数据信用,以便在所述发送器处实现调整。
一旦完全理解了以上的公开内容,各种变化与修改就将对本领域技术人员变得显而易见。以下权利要求是要解释为包含所有这种变化和修改。
Claims (13)
1.一种装置,包括:
接收器,包括配置成管理用于接口的流控制信用的信用管理单元,在使用过程中该接收器耦合到所述接口,其中在所述接口上接收到的每个分组都包括头部并可选地包括数据,而且其中头部是关于用于接口上的流控制的一个或多个头部信用而测量的,而数据是关于用于接口上的流控制的一个或多个数据信用而测量的,每个数据信用代表固定个数的数据字节;及
缓冲存储器,耦合到所述接收器并且配置成存储与由所述接收器在所述接口上接收到的分组相对应的分组头部和分组数据,并且
其中,所述信用管理单元配置成,响应于一个或多个所接收到的分组中分组数据的大小而动态地调整用于存储分组头部的缓冲存储器的第一数量和用于存储分组数据的缓冲存储器的第二数量,而且其中,信用管理单元配置成响应于该动态调整而在接口上将数据信用和头部信用释放到发送器,并且其中,所述信用管理单元配置成增加第一数量并减小第二数量,以及其中,所述信用管理单元配置成扣留与被消费的分组相对应的一个或多个数据信用,并且配置为释放一个或多个头部信用以在发送器处实现修改。
2.如权利要求1所述的装置,其中,头部信用代表N-1乘以由数据信用代表的固定个数的数据字节,而且其中,所述信用管理单元配置成扣留N-1个数据信用以释放一个头部信用。
3.如权利要求1所述的装置,其中,所述信用管理单元配置成,响应于接收到分组数据大小小于第一阈值的一个或多个分组,而增加第一数量并减少第二数量。
4.如权利要求1所述的装置,其中,所述信用管理单元配置成,减少第一数量并增加第二数量,而且其中,所述信用管理单元配置成扣留与被消费的分组相对应的一个或多个头部信用,并且配置成释放一个或多个数据信用,以便在发送器处实现调整。
5.如权利要求4所述的装置,其中,所述信用管理单元配置成,响应于接收到分组数据大小大于第二阈值的一个或多个分组,而减少第一数量并增加第二数量。
6.如权利要求1所述的装置,其中,所述信用管理单元配置成,响应于接收到分组数据大小大于第一阈值并且小于第二阈值的一个或多个分组,来执行与最近所执行的调整相反的调整。
7.如权利要求1所述的装置,其中,所述信用管理单元配置成确定第一数量的最小值和第一数量的最大值,而且其中,所述信用管理单元配置成根据该最小值和最大值限制第一数量和第二数量的动态修改。
8.一种在配置成管理用于接口的流控制信用的接收器中的方法,其中在使用过程中该接收器耦合到所述接口,其中在所述接口上接收到的每个分组都包括头部并可选地包括数据,而且其中所述头部是关于用于所述接口上的流控制的头部信用而测量的,而且其中数据是关于用于所述接口上的流控制的一个或多个数据信用而测量的,每个数据信用代表固定个数的数据字节,该方法包括:
响应于一个或多个所接收到的分组中的分组数据的大小,动态增加头部信用的第一数量并且减少数据信用的第二数量;及
响应于该动态调整,在所述接口上向发送器释放数据信用和头部信用,其中所述释放包括扣留与被消费的分组相对应的一个或多个数据信用而释放一个或多个头部信用,以便在所述发送器处实现调整。
9.如权利要求8所述的方法,还包括接收分组数据大小小于第一阈值的一个或多个分组,其中动态增加第一数量并减少第二数量是响应于该接收而进行的。
10.如权利要求8所述的方法,还包括:
动态减少第一数量并且增加第二数量;及
所述释放包括扣留与被消费的分组相对应的一个或多个头部信用而释放一个或多个数据信用,以便在所述发送器处实现调整。
11.如权利要求10所述的方法,还包括接收分组数据大小大于第二阈值的一个或多个分组,其中动态减少第一数量并增加第二数量是响应于该接收而进行的。
12.如权利要求8所述的方法,还包括响应于接收到分组数据大小大于第一阈值并且小于第二阈值的一个或多个分组,来执行与最近所执行的调整相反的调整。
13.如权利要求8所述的方法,还包括:
确定第一数量的最小值和第一数量的最大值;以及
根据该最小值和最大值限制对第一数量和第二数量的动态修改。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/344,949 | 2008-12-29 | ||
US12/344,949 US8045472B2 (en) | 2008-12-29 | 2008-12-29 | Credit management when resource granularity is larger than credit granularity |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801178827A Division CN102037455B (zh) | 2008-12-29 | 2009-12-09 | 资源粒度大于信用粒度时的信用管理 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102298563A true CN102298563A (zh) | 2011-12-28 |
CN102298563B CN102298563B (zh) | 2014-04-09 |
Family
ID=41666515
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110266364.0A Active CN102298563B (zh) | 2008-12-29 | 2009-12-09 | 资源粒度大于信用粒度时的信用管理 |
CN2009801178827A Active CN102037455B (zh) | 2008-12-29 | 2009-12-09 | 资源粒度大于信用粒度时的信用管理 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801178827A Active CN102037455B (zh) | 2008-12-29 | 2009-12-09 | 资源粒度大于信用粒度时的信用管理 |
Country Status (9)
Country | Link |
---|---|
US (2) | US8045472B2 (zh) |
EP (2) | EP2271994B1 (zh) |
JP (2) | JP5166609B2 (zh) |
KR (2) | KR101242775B1 (zh) |
CN (2) | CN102298563B (zh) |
AT (1) | ATE534083T1 (zh) |
ES (2) | ES2414936T3 (zh) |
HK (2) | HK1164486A1 (zh) |
WO (1) | WO2010077747A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109471833A (zh) * | 2017-09-08 | 2019-03-15 | 三星电子株式会社 | 用于最大化PCIe对等连接的带宽的系统和方法 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8045472B2 (en) * | 2008-12-29 | 2011-10-25 | Apple Inc. | Credit management when resource granularity is larger than credit granularity |
US20100296520A1 (en) * | 2009-05-19 | 2010-11-25 | Matthews David L | Dynamic quality of service adjustment across a switching fabric |
JP5349515B2 (ja) * | 2011-03-14 | 2013-11-20 | 株式会社東芝 | バッファ管理装置、バッファ管理方法及び記憶装置 |
JP5987560B2 (ja) * | 2012-08-31 | 2016-09-07 | 富士通株式会社 | データ転送装置、データ転送方法およびデータ転送プログラム |
US9524261B2 (en) | 2012-12-21 | 2016-12-20 | Apple Inc. | Credit lookahead mechanism |
JP2014230072A (ja) * | 2013-05-22 | 2014-12-08 | 株式会社リコー | データ通信デバイス、データ通信装置及びデータ通信方法 |
US9178832B2 (en) | 2013-07-11 | 2015-11-03 | International Business Machines Corporation | Queue credit management |
US9082118B2 (en) | 2013-07-17 | 2015-07-14 | Apple Inc. | Transaction flow control using credit and token management |
CN110190937B (zh) * | 2013-09-29 | 2021-10-22 | 华为技术有限公司 | 一种数据传输的方法及设备 |
US9584429B2 (en) * | 2014-07-21 | 2017-02-28 | Mellanox Technologies Ltd. | Credit based flow control for long-haul links |
US10432536B1 (en) * | 2017-12-11 | 2019-10-01 | Xilinx, Inc. | Systems and methods for policing streams in a network |
US10824369B2 (en) * | 2018-07-31 | 2020-11-03 | Nutanix, Inc. | Elastic method of remote direct memory access memory advertisement |
US11201828B2 (en) | 2018-10-08 | 2021-12-14 | EMC IP Holding Company LLC | Stream allocation using stream credits |
US10630602B1 (en) | 2018-10-08 | 2020-04-21 | EMC IP Holding Company LLC | Resource allocation using restore credits |
US11005775B2 (en) | 2018-10-08 | 2021-05-11 | EMC IP Holding Company LLC | Resource allocation using distributed segment processing credits |
US10951549B2 (en) | 2019-03-07 | 2021-03-16 | Mellanox Technologies Tlv Ltd. | Reusing switch ports for external buffer network |
US11558316B2 (en) | 2021-02-15 | 2023-01-17 | Mellanox Technologies, Ltd. | Zero-copy buffering of traffic of long-haul links |
US11973696B2 (en) | 2022-01-31 | 2024-04-30 | Mellanox Technologies, Ltd. | Allocation of shared reserve memory to queues in a network device |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5781457A (en) | 1994-03-08 | 1998-07-14 | Exponential Technology, Inc. | Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU |
US6643765B1 (en) | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US5832245A (en) * | 1996-10-21 | 1998-11-03 | Advanced Micro Devices, Inc. | Method for isochronous flow control across an inter-chip bus |
US6393548B1 (en) * | 1997-02-14 | 2002-05-21 | Advanced Micro Devices, Inc. | Variable 16 or 32 bit PCI interface which supports steering and swapping of data |
EP0946053A1 (en) * | 1998-03-27 | 1999-09-29 | CANAL+ Société Anonyme | Memory management in a receiver/decoder |
US6636523B1 (en) * | 1999-01-27 | 2003-10-21 | Advanced Micro Devices, Inc. | Flow control using rules queue monitoring in a network switching system |
JP2001094613A (ja) | 1999-09-21 | 2001-04-06 | Canon Inc | 通信制御装置、方法および記録媒体 |
US6430684B1 (en) | 1999-10-29 | 2002-08-06 | Texas Instruments Incorporated | Processor circuits, systems, and methods with efficient granularity shift and/or merge instruction(s) |
US7190667B2 (en) * | 2001-04-26 | 2007-03-13 | Intel Corporation | Link level packet flow control mechanism |
US7340495B2 (en) | 2001-10-29 | 2008-03-04 | Intel Corporation | Superior misaligned memory load and copy using merge hardware |
US7818356B2 (en) | 2001-10-29 | 2010-10-19 | Intel Corporation | Bitstream buffer manipulation with a SIMD merge instruction |
US7269752B2 (en) * | 2002-06-04 | 2007-09-11 | Lucent Technologies Inc. | Dynamically controlling power consumption within a network node |
US6760793B2 (en) | 2002-07-29 | 2004-07-06 | Isys Technologies, Inc. | Transaction credit control for serial I/O systems |
US7725568B2 (en) * | 2002-09-09 | 2010-05-25 | Netapp, Inc. | Method and apparatus for network storage flow control |
US7661130B2 (en) * | 2003-04-12 | 2010-02-09 | Cavium Networks, Inc. | Apparatus and method for allocating resources within a security processing architecture using multiple queuing mechanisms |
JP4366200B2 (ja) * | 2004-01-29 | 2009-11-18 | キヤノン株式会社 | 記録装置及び受信バッファ管理方法 |
US7752355B2 (en) | 2004-04-27 | 2010-07-06 | International Business Machines Corporation | Asynchronous packet based dual port link list header and data credit management structure |
JP2005332250A (ja) * | 2004-05-20 | 2005-12-02 | Toshiba Corp | データ処理装置およびフロー制御方法 |
JP2006189937A (ja) | 2004-12-28 | 2006-07-20 | Toshiba Corp | 受信装置、送受信装置、受信方法及び送受信方法 |
US7464174B1 (en) * | 2005-03-07 | 2008-12-09 | Pericom Semiconductor Corp. | Shared network-interface controller (NIC) using advanced switching (AS) turn-pool routing field to select from among multiple contexts for multiple processors |
US20090122703A1 (en) | 2005-04-13 | 2009-05-14 | Koninklijke Philips Electronics, N.V. | Electronic Device and Method for Flow Control |
US7698477B2 (en) * | 2005-11-30 | 2010-04-13 | Lsi Corporation | Method and apparatus for managing flow control in PCI express transaction layer |
US7698478B2 (en) * | 2006-09-19 | 2010-04-13 | Apple Inc. | Managed credit update |
US8139575B2 (en) | 2007-06-29 | 2012-03-20 | International Business Machines Corporation | Device, system and method of modification of PCI express packet digest |
US7869356B2 (en) * | 2007-12-18 | 2011-01-11 | Plx Technology, Inc. | Dynamic buffer pool in PCIExpress switches |
US8151145B2 (en) * | 2008-04-03 | 2012-04-03 | Oracle America, Inc. | Flow control timeout mechanism to detect PCI-express forward progress blockage |
US8045472B2 (en) * | 2008-12-29 | 2011-10-25 | Apple Inc. | Credit management when resource granularity is larger than credit granularity |
-
2008
- 2008-12-29 US US12/344,949 patent/US8045472B2/en active Active
-
2009
- 2009-12-09 WO PCT/US2009/067360 patent/WO2010077747A1/en active Application Filing
- 2009-12-09 CN CN201110266364.0A patent/CN102298563B/zh active Active
- 2009-12-09 ES ES11178261T patent/ES2414936T3/es active Active
- 2009-12-09 ES ES09801335T patent/ES2378211T3/es active Active
- 2009-12-09 EP EP09801335A patent/EP2271994B1/en active Active
- 2009-12-09 KR KR1020117019397A patent/KR101242775B1/ko active IP Right Grant
- 2009-12-09 EP EP11178261A patent/EP2390791B1/en active Active
- 2009-12-09 KR KR1020117015050A patent/KR101110384B1/ko active IP Right Grant
- 2009-12-09 CN CN2009801178827A patent/CN102037455B/zh active Active
- 2009-12-09 JP JP2011543552A patent/JP5166609B2/ja active Active
- 2009-12-09 AT AT09801335T patent/ATE534083T1/de active
-
2011
- 2011-07-11 HK HK12104801.7A patent/HK1164486A1/xx not_active IP Right Cessation
- 2011-07-11 HK HK11107143.8A patent/HK1153024A1/xx not_active IP Right Cessation
- 2011-09-21 US US13/238,723 patent/US8400924B2/en active Active
- 2011-11-01 JP JP2011239929A patent/JP5221736B2/ja active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109471833A (zh) * | 2017-09-08 | 2019-03-15 | 三星电子株式会社 | 用于最大化PCIe对等连接的带宽的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2390791A1 (en) | 2011-11-30 |
US8400924B2 (en) | 2013-03-19 |
JP2012039661A (ja) | 2012-02-23 |
JP5166609B2 (ja) | 2013-03-21 |
KR20110094102A (ko) | 2011-08-19 |
JP5221736B2 (ja) | 2013-06-26 |
KR20110110340A (ko) | 2011-10-06 |
KR101242775B1 (ko) | 2013-03-12 |
WO2010077747A1 (en) | 2010-07-08 |
US20120008500A1 (en) | 2012-01-12 |
CN102037455A (zh) | 2011-04-27 |
ATE534083T1 (de) | 2011-12-15 |
US8045472B2 (en) | 2011-10-25 |
US20100165842A1 (en) | 2010-07-01 |
CN102298563B (zh) | 2014-04-09 |
EP2271994B1 (en) | 2011-11-16 |
HK1164486A1 (en) | 2012-09-21 |
HK1153024A1 (en) | 2012-03-16 |
EP2271994A1 (en) | 2011-01-12 |
EP2390791B1 (en) | 2013-03-20 |
JP2012514384A (ja) | 2012-06-21 |
KR101110384B1 (ko) | 2012-02-24 |
ES2378211T3 (es) | 2012-04-10 |
ES2414936T3 (es) | 2013-07-23 |
CN102037455B (zh) | 2013-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102298563B (zh) | 资源粒度大于信用粒度时的信用管理 | |
US8225026B2 (en) | Data packet access control apparatus and method thereof | |
CN103246625B (zh) | 一种数据与地址共用引脚自适应调整访存粒度的方法 | |
CN103532807B (zh) | 一种用于pcie数据服务质量管理的方法 | |
JP2011204254A (ja) | 構成可能な相互接続トポロジを用いたi/o帯域幅の適応割当て | |
JP2003249952A (ja) | クレジット履歴を利用する重み付けクレジット調停 | |
CN102103548A (zh) | 提高双倍数据速率同步随机存储器读写速率的方法及装置 | |
US6415366B1 (en) | Method and apparatus for load distribution across memory banks with constrained access | |
CN101848135B (zh) | 芯片的统计数据的管理方法和装置 | |
CN114257559B (zh) | 一种数据报文的转发方法及装置 | |
CN108984280A (zh) | 一种片外存储器的管理方法和装置、计算机可读存储介质 | |
CN105656807A (zh) | 一种网络芯片多通道数据传输方法及传输装置 | |
CN113821191A (zh) | 一种可配置fifo深度的装置及方法 | |
CN101754057A (zh) | 一种应用于epon终端系统基于绝对优先级的数据调度方法 | |
CN101309194A (zh) | Spi4.2总线桥接实现方法及spi4.2总线桥接器件 | |
CN103297350A (zh) | 一种信元交换系统的实现方法和交换设备 | |
US20190187927A1 (en) | Buffer systems and methods of operating the same | |
US9565122B2 (en) | Stream management in an on-chip network | |
CN101789840B (zh) | 一种全t交叉装置和方法 | |
CN102571535A (zh) | 一种数据延迟装置、方法及通信系统 | |
KR102338872B1 (ko) | 다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법 | |
Mutter | A novel hybrid memory architecture with parallel DRAM for fast packet buffers | |
CN103902249B (zh) | 集约式数据帧队列控制器及控制方法 | |
Mutter | A novel hybrid sram/dram memory architecture for fast packet buffers | |
CN110035011A (zh) | 具有灵活速率限制器的网络设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |