CN100524266C - 在总线上以包的形式传输数据传输请求的方法及设备 - Google Patents

在总线上以包的形式传输数据传输请求的方法及设备 Download PDF

Info

Publication number
CN100524266C
CN100524266C CNB2006101534618A CN200610153461A CN100524266C CN 100524266 C CN100524266 C CN 100524266C CN B2006101534618 A CNB2006101534618 A CN B2006101534618A CN 200610153461 A CN200610153461 A CN 200610153461A CN 100524266 C CN100524266 C CN 100524266C
Authority
CN
China
Prior art keywords
request
bag
data transfer
bus
destination address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CNB2006101534618A
Other languages
English (en)
Other versions
CN1904868A (zh
Inventor
W·P·楚
C·S·卡斯
A·K·考尔
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.)
Nvidia Corp
Original Assignee
Nvidia Corp
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 Nvidia Corp filed Critical Nvidia Corp
Publication of CN1904868A publication Critical patent/CN1904868A/zh
Application granted granted Critical
Publication of CN100524266C publication Critical patent/CN100524266C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Small-Scale Networks (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Bus Control (AREA)

Abstract

可以合并多个数据传输请求,并且在诸如PCI Express(PCI-E)总线的包化总线上将其作为单一的包进行传送。在一个实施例中,如果请求被指向同一目标设备中的连续的地址范围,那么请求被合并。有利地,采用优选的合并过程,即如果第一请求和后续请求是可合并的并且在一定的时间段里被接收,则将第一请求和后续请求相合并;否则,请求能够被传送而不用进行合并。

Description

在总线上以包的形式传输数据传输请求的方法及设备
背景技术
本发明一般地涉及总线上的通信,更具体地说,本发明涉及用于总线传送的组合包,该总线采用包化协议。
当代个人计算机系统通常包括多个不同的设备,包括处理器,存储器,采用磁媒体或光媒体的数据存储设备,诸如键盘和鼠标的用户输入设备,诸如监视器和打印机的输出设备,图形加速器等。所有这些设备通过在系统主板上实现的各种总线彼此进行通信。已知大量的总线协议,包括PCI(外围组件互连),PCI-E(PCI快速),AGP(图形加速处理),超级传送技术等。每种总线协议制定连接的物理的和电气的属性,以及用于通过总线进行信息传送的格式。在许多情况下,个人计算机系统的总线是分段的,有的时候不同的分段采用不同的总线协议,并且系统包括互连这些不同的分段的桥芯片。
通常,利用总线去交换系统组件之间的数据。例如,当图形处理器需要读取存储在系统存储器中的文本或是顶点数据时,该图形处理器通过总线请求数据并且通过相同的总线接收响应。当许多设备提出数据请求(例如,来自系统存储器)或者当一个设备提出大量或者频繁的请求时,总线或是总线分段可能变得饱和,从而导致性能降低。事实上,当前许多图形处理器具有有限的带宽,也就是,它们的性能受到总线的传送数据能力的限制,该总线将它们与系统的剩余部分相连接。从而,为了改善系统的性能而期待减少总线上的通信量,该通信量增加了可用带宽。因此,减少总线上通信量的技术将非常值得期待。
发明内容
本发明的实施例提供设备和方法,用于合并多个数据传送请求并且将合并的请求作为一个单一的包在例如PCI Express(PCI-E)总线的包化总线上进行传送。请求能够被组合,例如,如果它们被指向同一目标设备上的连续的地址范围。一种机会合并过程被有利地采用,如果最初的请求和其后的请求是可合并的并且在一定的时间段里被接收到那么就将最初的请求和其后的请求进行合并;否则,请求能够被传送而不被合并。可以调整过程的等待时间和其它参数以便最优化总线上由于合并所减少的开销和由于等待可合并的请求所引起的延迟之间的平衡。
按照本发明的一个方面,提供一种总线接口设备,为了在总线上以包的方式传送来自多个客户的数据传送请求。所述总线接口设备包括队列,组合器逻辑,和输出逻辑。配置队列以用于存储来自客户的数据传送请求,每个数据传送请求指定一个目标地址范围。配置组合器逻辑,从队列中至少一个数据传送请求中形成一个包,并且在两个或者更多个被合并的数据传送请求分别指定可以合并的目标地址范围的情况下,进一步配置该组合器逻辑以便将队列中的两个或者更多个数据传送请求组合为一个包。配置输出逻辑驱动所述包到总线上。
在一些实施例中,在各个目标地址范围是连续的情况下,由两个或者多个数据传送请求所指定的各个目标地址范围是可合并的。在其它实施例中,每个数据传送请求进一步指定目标设备,并且其中,在两个或者多个数据传送请求制定相同的目标设备并且各个目标地址范围是连续的情况下,由两个或者多个数据传送请求所指定的各个目标地址范围是可合并的。
在一些实施例中,组合器逻辑包括合并组合逻辑和发送控制逻辑。配置组合逻辑去检测是否在队列中存在任何数据传送请求可以与队列中的最早的数据传送请求相合并并且至少部分基于所述检测而产生状态信息。配置发送控制逻辑去确定是否在当前的循环里传送包或者等待下一个循环,其中是否传送包的决定至少部分基于通过合并逻辑所产生的状态信息。
在确定是否发送包的时候可以测试各种情况。例如,可以配置发送控制逻辑,以致于是否传送包的决定是至少部分基于队列中的多个数据传送请求的,或者基于从发送先前的包以来所经过的时间,或者基于从接收队列中最早的数据传送请求以来所经过的时间,或者基于队列中的那些可与队列中最早的数据传送请求相合并的数据传送请求。可以对这些或者其他情况的任何组合做出测试。
可以采取各种方式来排列总线接口设备。在一个实施例中,设备是处理器的一个组件并且客户正在处理处理器的核心。在另一个实施例中,每个客户是分立的组件,并且为了连接每个客户而采用专用的局部总线配制所述总线接口设备。
在一些实施例中,通过总线接口设备以适合总线传送的包的格式接收数据传送请求。在其他实施例中,以不同于适合总线传送的包的格式的内部格式接收数据传送请求。数据传送请求可以包括,例如读请求和/或写请求。总线可以是PCI Express(PCI-E)总线或者任何其他包化总线。
按照本发明的另一方面,用于在总线上以包的方式传送来自多个客户的数据传送请求的方法包括接收指定第一地址范围的第一数据传送请求和接收至少一个后续的数据传送请求,每个后续数据传送请求指定各个目标地址范围。做出决定以便确定是否第一目标地址范围可与一个或者多个后续数据传送请求的目标地址范围相合并。形成用于总线传送的包。在所述第一目标地址范围与一个或者多个后续数据传送请求所指定的目标地址范围可合并的情况下,从所述第一请求和一个或者多个后续数据传送请求中形成包;在所述第一目标地址范围与任意后续数据传送请求的目标地址范围不可合并的情况下,从所述第一请求中形成包。驱动所述包到总线上。
在一些实施例中,对发送条件作出响应执行形成包的动作,其可以基于各种考虑。例如,发送条件可以至少部分基于所接收到的多个数据传送请求,基于从发送先前包以来所经过的时间,基于从接收第一数据传送请求以来所经过的时间,或者基于多个可与第一数据传送请求相合并的后续数据传送请求。可以在包形成和/或发送的时候采用这些或者其他条件的任何组合去进行控制。
按照本发明的另一其它方面,处理器包括多个处理核心和一个总线接口单元。配置每个处理器核心去生成数据传送请求。配置总线接口单元去接收来自处理核心的数据传送请求并且以包的形式在总线上传送数据传送请求,总线接口单元包括队列,组合器逻辑,和输出逻辑。配置队列来存储来自处理核心的数据传送请求,每个数据传送请求指定一目标地址范围。配置组合器逻辑从队列中的至少一个数据传送请求中形成包,并且进一步配置组合器逻辑,在两个或者多个被组合的数据传送请求指定各个可合并的目标地址范围的情况下,组合队列中的两个或者多个数据传送请求而形成包。配置输出逻辑去驱动包到总线上。
接下来,结合附图的详细的说明将提供对本发明的本质和优势的更好的理解。
附图说明
图1是按照本发明实施例的计算机系统的方框图;
图2是按照本发明实施例的图形处理单元的方框图;
图3按照本发明实施例解释用于组合包的操作原理;
图4是按照本发明实施例的组合和传送包的传送器模块的方框图;
图5是按照本发明实施例的可以在组合逻辑块中被实现的控制逻辑过程的流程图。
图6是按照本发明实施例的用于合并额外请求的过程步骤的流程图;
图7是按照本发明实施例的可以在发送控制逻辑块中实现的控制逻辑过程的流程图;以及
图8是按照本发明实施例的用于请求序列的处理实例。
发明的详细说明
本发明的实施例提供设备和方法,为了在诸如PCIExpress(PCI-E)总线的包化总线上传送而合并两个或者多个数据传送请求为一个单一的包。正如在这里所使用的那样,“包化”的总线包括任何总线,通过它采用具有标题(即使通常不必具有固定大小)和可变大小的有效载荷的包传送数据传送请求。所述标题方便地指出发出请求的设备和目标地址范围。可以由开始和结束地址,开始地址和大小或者类似的数据来指示目标地址范围。在一些情况下,可以明确地识别目标设备;在其他情况下,目标地址范围充分地识别与地址匹配原则相关的目标设备,并且不要求目标设备的清晰标识。根据本公开的内容,将清晰地看到请求被包括多个请求发生器的集成设备的总线接口单元,诸如开关的分立的总线接口元件,或者其它设备所组合。组合多个请求为一个包减少了起源于多个包标题的总线上的负载。在一些实施例中,减少的负载能够为数据和/或其他性能优势提供增加的带宽,它们的例子将在下面被描述。
图1是按照本发明实施例的计算机系统100的方框图。计算机系统100包括中央处理单元(CPU)102和通过存储器桥105进行通信的系统存储器104。存储器桥105通过总线106连接到I/O(输入/输出)桥107,输入/输出桥107从一个或者多个用户输入设备108(例如键盘,鼠标)接收用户输入,并且通过总线106和存储器桥105转发输入到CPU102。提供可视化输出到基于显示设备110(例如,常规CRT或者LCD显示器)的象素上,该显示器受图形子系统112的控制,该系统通过总线113与存储器桥105相连接。系统磁盘114也与输入/输出桥107相连接,开关116提供输入/输出桥107和其它诸如网络适配器118和各种附加卡120、121的组件之间的连接。在优选实施例中,例如,在存储器桥105和图形子系统112之间,在存储器桥105和输入/输出桥107之间,以及输入/输出桥107和开关116之间采用诸如PCI-Express(PCI-E)的包化总线协议来实现在系统100的各种组件中的一些或者全部之间的连接。
图形处理子系统112包括图形处理单元(GPU)122和图形存储器124,其可以通过使用诸如可编程处理器的一个或多个集成电路设备,专用集成电路(ASICs),和存储设备来加以实现。可以配置GPU122去执行与产生象素数据相关的各种任务,该象素数据来自于由CPU102和/或系统存储器104通过存储器桥105和总线113所提供的图形数据,可以配置GPU122与图形存储器124交互来存储和更新象素数据或者类似有关的任务。例如,GPU122可以根据在CPU102上执行的不同程序所提供的2-D或3-D场景数据来产生象素数据。GPU122也可以存储通过存储器桥105所接收的象素数据到图形存储器124以便做或者不做进一步的处理。有利地,GPU122也包括用于从图形存储器124传送象素数据到显示设备110的扫描输出管道。透视和扫描输出操作的任何组合可以在GPU122中被实现,并且详细的描述可以被省略,因为这对于理解本发明不是关键的。
需要注意的是这里所示的系统是解释性的,并且各种变化和修改都是可能的。总线设备和桥的数目和排列可以按照需要被修改;例如,图形子系统能够被连接到I/O桥107而不是存储器桥105,或者I/O桥107和存储器桥105可以被集成到一个单一的芯片上。可选地,图形子系统能够通过总线桥而被集成到一个单一的芯片上。总线拓扑也可以有所变化;例如,在一个可选实施例中,系统存储器被直接连接到CPU而不是桥。
可以包括任何数目的图形处理器(例如,通过将多个附加卡和总线113连接,每个卡上附有一个图形处理器),并且这样的处理器可以并行操作从而为相同的显示设备或者不同的显示设备产生图像,每个图形处理器可以具有任何数目的局部图形存储器,包括非局部存储器,并且图形处理器可以任何组合形式使用局部存储器和系统存储器。
图2是按照本发明实施例的GPU122的方框图。GPU122包括多个执行核心202(1)至202(N),它们并行运作执行透视和/或扫描输出操作。在一个实施例中,202(1)至202(N)中的一个核心在其它核心执行透视运作的时候执行扫描输出操作;值得注意的是也可以使用其它配制。可以提供N个核心中的任意数目,并且每个核心可以是一般的常规设计。
在核心202(1)至202(N)的运作过程中,所述核心可以要求从系统存储器104(图1)中或者从其它通过存储器桥105访问GPU122的设备中所检索到的数据。根据本发明的实施例,核心202(1)至202(N)发送这样的请求到总线接口单元204。总线接口单元204包括传送器模块206和接收器模块208。传送器模块206,它的实施例将在下面描述,发送从核心所接收到的请求到总线113。接收器模块208通过总线113接受对所述请求的响应,并且发送每个响应至核心202(1)至202(N)中的提出请求方。
在优选实施例中,总线是一种“包化”总线,这意味着采用各种大小的包进行信息的传送。在数据传送请求过程中,每个包包括识别提出请求的设备的固定长度(例如,20个字节)的包头,目标设备,以及目标地址或者数据传送的目的和源地址范围(在目标设备内)。在一些实施例中,地址可以定义在“全局”地址空间内,该空间被多个设备所共享,并且仅仅目标地址范围就足以识别目标设备;在这样的情况下,可以忽略目标设备的单独的识别器。类似地,在实施例中,定义多个地址空间(例如,输入/输出空间,存储空间,配置空间等等)和为特定的目标设备分配每个空间的部分,可以通过指定目标地址空间和在空间中的目标地址范围来识别目标设备。能够采用开始和结束地址,或者开始地址和大小等等来指定目标地址范围。
有利地,包头也包括其它信息,诸如将被执行的操作类型(例如,读或者写),包的优先权,包的序列号或者其它唯一的由提出请求的设备所提供的识别器(这里是指“标签”)等等。在写操作过程中,有利地,请求包也具有包括写入数据的“有效载荷”部分。在读操作过程中,有利地,请求包的有效载荷部分被忽略。现有技术中已知大量的包格式,并且详细的描述将被省略,因为这对于理解本发明不是关键的。在一个实施例中,包遵循PCI-E协议。
当包请求读操作时,有利地,目标设备返回响应包,该包的有效载荷部分包括所请求的数据。响应包的包头识别提出请求的设备,并且包括来自响应请求包的标签,从而促进数据的识别。在写操作过程中,可以不送出响应包。
在一些实施例中,每个读请求或者写请求包的目标设备返回确认(“ACK”)给送出请求的设备。Ack独立于任何数据传送,可以是仅仅指示请求包的成功接收的小包,例如,通过返回与请求包相关的标签。在读请求的过程中,目标设备在接收到请求包的时候返回一个Ack,并且在单独的包里返回所请求的数据(在可行的读延迟期后)。然后,提出请求的设备发送Ack回目标设备用以指示数据包的接收。在一个实施例中,Ack也遵循PCI-E协议。
有利地,发送器模块206为接收器208提供唯一的标签用于每个请求包的发送,并且也为接收器208提供关于核心202(1)至202(N)中的哪一个发起请求的信息。接收器208将接收到的响应包包头中的请求标签与传送器模块206所提供的请求标签相匹配,并且使用所述信息对发起请求的核心202(1)至202(N)作出响应。
在一些情况下,系统100中的其它设备(图1)可以要求传送至或者源自图形处理子系统112的数据传送,例如,传送至或者源自图形存储器124的数据传送。在这种情况下,接收器208通过总线113接收输入的请求包,并且发送所述请求到图形处理子系统112中的适当的处理器。处理器可以是,例如,核心202(1)至202(N)中的一个或者单独的图形存储器接口模块(图2中没有显示)。响应(数据或Ack)从处理器返回至发送器模块206,它格式化并且通过总线113送出响应包给请求设备。
包不局限于数据传送请求和响应。在一些实施例中,除了数据传送请求和响应,包也可以被用于传送系统组件之间的各种消息(例如,中断,重置等等。
在一实施例中,总线113是PCI-E总线,正如图2所示,采用单独的物理路径113a,113b分别用于发送和接收包。值得注意的是其它包化总线能够被替换,采用或者不采用单独的发送和接收路径,并且本发明不局限于PCI-E。
根据本发明的实施例,当核心202(1)至202(N)产生数据传送请求的时候,发送器单元206能够组合多个请求到一个被传送到总线113上的单独的包。有利地,如果包引用同一设备中的连续的地址范围并且指出相同类型的操作(例如读或者写),那么这些包可以被组合。
图3解释用于组合包的运作原理。包302具有包头部分304和有效载荷部分306(它可以是空的)。包头部分304指定设备(Dev1),地址范围[A0,A1),和操作(读)。这里,采用半开放的区间[Aa,Ab)将地址范围限定在线性地址空间里。其中a<b,意思是范围中的首地址是Aa,末地址是小于Ab的最大有效地址;地址索引是有序的,因此,如果a<b,在线性地址空间里,地址Aa低于地址Ab;因此,需要理解的是A0<A1<A2等等。地址之间的间隔是任意的并且是可以变化的;例如,A0和A1可能相隔64位,而A1和A2可能相隔32位。知晓现有技术的本领域中的那些普通技术人员将可能将这里所描述的实施例运用到其它的地址空间。
类似地,包308具有包头部分310和有效载荷部分312(它也可以是空的)。包头部分310指定相同的设备(Dev1)和地址范围[A1,A2)。包302和308引用相同设备中的连续的地址范围,并且指定相同类型的操作。与本发明相一致,这些包可以被组合到一个新的包314中。包314的包头部分316指定设备(Dev1),组合地址范围[A0,A2),以及操作(读)。包314的有效载荷部分318包含包302和308的相连接的有效载荷。
在一些实施例中,不论有效载荷的大小,包头具有相同的大小。例如,包头316与包头304和310中的任一个大小相同。发送组合包314而不是单独的包302和308减少由这一大小的包头所使用的带宽。这可以得到相当的节余。例如,在采用PCI-E的实施例中,每个包头是20个字节,并且有效载荷可能是16,32,64或者128个字节。如果两个64字节的有效载荷被合并为一个128字节的有效载荷,将增加大约13.5%的有效带宽。在通常针对通用处理机,总线设备具有有限带宽的情况下,这是一个重要的效能收获。更普遍地,只要组合包314比包302,308小,那么组合包都将获得总线带宽消耗的一些减少,特别是在总线设备的带宽有限的情况,可以获得效能上的改善。
进一步地,需要注意的是,当数据传送请求是读请求,并且对每个请求包的响应将被作为单独的包进行发送的时候,组合包能够减少在两个方向上的包头开销。例如,在图3中,如果目标设备通过PCI-E总线接收到包302和308,它将产生两个响应包去交付被请求的数据,但是如果目标设备接收到包314,它将仅仅产生一个响应包。此外,在采用PCI-E或者其它协议的实施例中,其中目标设备发送对于每个所接收到的包的Ack,组合包可以减少需要发送的Ack的数目,进一步减少在总线上的开销。
在一些实施例中,在传送器模块206发送响应包的时候,组合包可能是不合适的。例如,PCI-E请求目标设备对于每一个接收到的请求包返回至少一个包;因此,当PCI-E设备作为目标设备时,传送器206将不组合响应于请求产生的包。本领域普通技术人员将认识到传送器模块206能被配置为从其他类型的包中区分出请求包并且仅仅为请求包执行组合操作。
在传送器模块206发送请求包的时候,只要目标设备能够对所述请求作出响应,任何请求和任意数目的请求能够被组合到一个单一的包中。在一些实施例中,来自不同核心202的请求可以由发送器206所组合。当请求是读请求的时候,有利地,发送器206提供指示核心202中的哪一个请求组合请求中的哪一部分数据的信息给接收器模块208;只要获得这样的信息,接收器模块208就可以传送返回数据的正确部分到正确的客户。
图4是按照本发明实施例的发送器模块206的方框图。发送器模块206包括输入仲裁器402,用于暂时存储写请求的写队列404,用于暂时存储读请求的读队列406,写组合器408,读组合器412,输出仲裁器416,以及连接到总线113的输出数据路径113a的驱动电路418。
输入仲裁器402从核心202(1)至202(N)中接收数据传送请求,包括读和写请求。在一些实施例中,核心以总线协议所限定的包格式发送请求到发送器模块206;在其它实施例中,采用不同的数据格式将请求送出,并且在发送器模块206中被转换成适当的包格式。
输入仲裁器402指示写请求到写队列404以及读请求到读队列406。由于多个核心可以同时做出请求,有利地,输入仲裁器402包括用于仲裁同时请求的控制逻辑。可以采用常规的仲裁或者调度原则,诸如循环赛,基于优先权的仲裁或者类似,并且特定的仲裁方案对于本发明不是重要的。在一个实施例中,输入仲裁器402每一个时钟循环发送一个请求到每个读队列406和写队列404。
读队列406和写队列404可以采用常规的技术,按照所接收到的顺序排队请求。如下面所描述的,在一些实施例中可以将请求从队列406和404中无序地去除。
写组合器408包括组合逻辑420,计时器422和发送控制逻辑424。组合逻辑420在接收到新请求的时候检查所述请求去确定是否它们能够和当前的请求组合,例如,写队列404中最早的请求(也包括那些已经和最早的请求相组合后的任意请求)。组合逻辑420的具体实现将在下面描述。发送控制逻辑424采用组合逻辑420所提供的状态信息去确定是否发送包。可以配置发送控制逻辑424去检测包发送的各种情况;下面将对例子做出说明。当包被发送出去的时候,发送控制逻辑424产生来自当前请求的由组合逻辑420所识别出的包。在一些实施例中,发送控制逻辑424也重整请求为由总线协议所限定的包格式。一旦形成包,发送控制逻辑424转发包到输出仲裁器416,并且从写队列404中删除包含在包里的所有请求。有利地,计时器422被发送控制逻辑424所采用,以阻止请求在写队列404中等待太长的时间,下面将描述。
类似地,读组合器412包括组合逻辑426,计时器428和发送控制逻辑430。组合逻辑426检查所接收到的新请求,去确定它们是否能够与当前的请求进行组合,例如,在读队列406中的最早的请求(也包括那些已经与最早的请求相组合的任意请求)。组合逻辑426中的具体实现将在下面被描述。发送控制逻辑430采用组合逻辑426所提供的状态信息去确定包是否要被发送出。发送控制逻辑430采用由组合逻辑426所提供的状态信息去确定包是否要被发送出。可以配置发送控制逻辑430去检测包可以被发送出的各种情况;下面将对例子做出描述。当发送包的时候,发送控制逻辑430从当前的组合逻辑426所识别的请求中产生包。在一些实施例中,发送控制逻辑430重整请求为由总线协议所限定的包格式。一旦形成包,控制逻辑430转发包到输出仲裁器416,并且从读队列406中去除所有的包括在包中的请求。有利地,发送控制逻辑使用计时器428,从而阻止读队列406中的请求等待太长的时间,将在下面描述。
有利地,写组合器408和读组合器412彼此交流有关在它们各自队列中目标设备和包的目标地址的信息,以便可以保存具有相同目标地址的读请求和写请求之间的顺序。例如,假设核心发送(依序)第一请求从地址范围[A0,A1)读取数据,发送第二请求写数据到地址范围[A1,A2)以及第三请求从地址范围[A1,A2)读取数据。在组合两个读请求之前,读组合器412基于从写组合器408交流得来的信息检测是否存在介入写请求。在一个实施例中,读组合器412组合两个读请求并且保持所述被组合的请求(也就是,不把它交付给输出仲裁器416),直到介入的写请求被发送出以后。可替换地,读组合器可以发送第一请求而不用组合第二请求;这一选择是更可取的,举例来说,如果写请求的发送被延迟。
输出仲裁器416从写组合器408接收载有写请求的包,以及从读组合器412中接收载有读请求的包。在一个实施例中,每个写组合器408和读组合器412在每个时钟循环至多交付一个包给仲裁器416。当只有一个组合器提供包时,输出仲裁器416传送包给驱动器418。当两个组合器都提供包的时候,输出仲裁器416可以运用常规的仲裁逻辑在它们中进行选择(举例来说,最近被服务的或者基于优先权的仲裁算法)。输出仲裁器416可以包括FIFO或者其它缓冲电路去暂时存储包,直到它们被选择用于传输。
驱动电路418从输出仲裁器416接收所选择的包,并且依照总线协议驱动包到总线线路113a上。驱动电路418通常可以是常规的设计。在一些实施例中,总线包括多个信号线路113a,并且驱动电路418并行地驱动至少一些包含所述包的数据到这些线路。
需要注意的是,这里所描述的发送器模块是解释性的,可以做出各种变化和修改。读队列和写队列可以是任意大小的,并且可以采用物理分离或逻辑分离的电路加以实现。读组合器和写组合器可以具有相同或者不同的配置,并且在一些实施例中,可以仅仅针对读请求或者仅仅针对写请求执行请求的组合。在实施例中,当总线协议不包括用于传送数据的专用路径的时候,可以配置输出仲裁器或者其它发送器模块的组件,在发送包之前,采取与适当的总线协议相一致的方式去获得总线的控制,正如现有技术所知道的那样。进一步地,在这里当参考特定功能模块描述发送器模块的时候,需要了解的是这些模块是出于描述方便的考虑而被定义的,并且不必对应于物理上相异的组件。
现在将描述合并逻辑模块420和426。图5是显示控制逻辑进程500的流程图,按照本发明的一个实施例,可以在组合读组合器412的逻辑块426和/或组合写组合器408的逻辑块420的过程中实现该控制逻辑进程。可以从“循环”步骤502开始,重复进程500。在一些实施例中,进程500的执行被同步为一个时钟,它可以进一步被同步为总线106的操作。
在这个实施例中,在读队列406(或者写队列404)中定义一个“活动窗口”去识别那些当前作为合并备选者的请求。活动窗口具有预定的最大尺寸MW,有利地,该尺寸是根据请求的数目所测量到的。例如,MW可以是2,3,4或者至多为请求队列406总长的任何尺寸。在任意给定的时间里,在读队列406中MW个最早请求处于活动窗口中。
最初,读队列406是空的。如下所述,在操作中,输入仲裁器402在每个循环加入零个或者多个请求到读队列406中。在步骤504,合并逻辑426检查读队列406去确定是否已经接收到了一个新的请求。如果如此,那么在步骤506,合并逻辑426确定是否计时器428已经在运行中,如果不是这样,那么在步骤508开始计时器428。在一个实施例中,通过采用能够在每个时钟循环增加或者重置的计数器,可以实现计时器428,启动计时器包括重新设置计数器以便它能够像如下所示的那样被增加。如果在步骤506,计时器428已经在运行中,那么计时器408在步骤510能够被增加。
在步骤512,合并逻辑426确定新请求是否能够和当前的请求相合并。有利地,“当前请求”通过参照地址范围而被定义。当第一请求被接收到的时候,初始化目前的地址范围为所述请求的地址范围。因此,每当包被送出的时候,当前的地址范围被重新初始化为队列中最早请求的地址范围。直到包被送出的时候,如果后续地址范围碰巧与当前的地址范围相连续,那么合并逻辑426能够通过合并后续请求的地址范围到当前地址范围来扩展目前的地址范围。
相应地,步骤512包括将新请求的地址范围和当前地址范围进行比较去确定合并是否是可能的。在一些实施例中,有利地,“可合并的”地址范围包括那些表示相同地址空间里的连续块的地址范围,因此合并扩大了地址范围。此外,可合并的地址范围也可以包括那些部分或者完全重叠的地址范围。因此,对地址范围[A0,A2)的请求与对地址范围[A1,A2)的请求或者对地址范围[A0,A2)的第二请求是可合并的。当不同请求的地址范围重叠的时候,有利地,发送器模块206(图2)识别出由每个核心202所请求的特定的地址范围,给接收器模块208,并且接收器模块208交付适当的数据给每个提出请求的核心202。
在一些实施例中,合并可以改变开始地址或者结束地址。在其它实施例中,开始地址不被合并所改变,并且仅仅那些目标地址与较大地址值相对应的请求在步骤512被认为是可合并的。在其它实施例中,结束地址不被合并所改变,并且仅仅那些目标地址与较小地址值相对应的请求在步骤512被认为是可合并的。此外,合并也可以被限制在目标为相同设备的请求上。在一些实施例中,来自不同核心的请求可能被认为是可合并的或者是不可合并的。
如果新请求可以被合并,那么在步骤514,更新当前地址范围从而反映所合并的请求。可以表示当前的地址范围,例如,通过开始地址(例如,将被访问的最小地址值)和范围大小,或者通过开始地址和结束地址(例如,将被访问的最小和最大地址值)来进行表示;更新当前的地址范围可以包括改变开始地址,结束地址和/或范围大小去反映原始的当前请求和新请求相互连接的地址范围。
在步骤516中,当新请求被合并的时候,对新请求做出标记。在一些实施例中,在队列中的请求可以被修改以便反映合并。在其它实施例中,请求不被修改,并且标签或者类似数据结构可以被用于去识别将要被合并的请求。更具体地,在一个实施例中,提供一个对应这窗口中每个位置的一位的寄存器。可以初始化寄存器的值为逻辑低值以便指示那些还没有被合并的请求,并且在步骤516设置寄存器值为逻辑高以便指示那些已经被合并的请求。
在步骤518,合并逻辑426为那些在合并新请求之后可能的额外的合并进行检查。例如,如果第一请求具有地址范围[A0,A1)和第二请求具有地址范围[A2,A3),没有合并是可能的。但是,如果具有地址范围[A1,A2)的第三请求被接收到并且与第一请求相合并去创造一个当前地址范围[A0,A2),那么合并第二请求去创造一个当前地址范围[A0,A3)成为可能。有利地,步骤518包括检测这样的情况并且执行额外的合并。
图6是可以在步骤518被执行从而去合并额外请求的处理流程图。在步骤606开始,进程600遍历活动窗口去识别任意的没有被合并的请求,这些请求中的地址范围与当前的被合并的地址范围相连接。在步骤608中,选择一个备选的请求。有利地,备选的请求是活动窗口中的最早的请求,它还没有因为合并而被标记。在步骤610,备选请求的目标地址将被确定。
在步骤612中,需要确定的是备选请求的目标地址范围是否可以与当前所合并的地址范围相合并。有利地,在步骤512中所使用的用于合并的相同的准则在步骤612中被使用。如果地址范围是可合并的,那么所合并的地址范围在步骤614被更新,并且备选请求因为在步骤616中被合并而被标记。一般地,这些步骤可以与前面所描述的步骤514和516相类似。
在步骤618中,不论备选请求是否被合并,都需要确定是否窗口中的任意未被合并的请求还没有被测试。如果是这样,那么接下来的这样的请求将在步骤608中作为新的备选请求而被选择,并且如前面所描述的那样被测试。
在步骤620中,需要确定测试是否应该继续。例如,如果在遍历窗口的过程中,任意请求被合并,那么可能的是额外的未被合并的请求现在可以和被扩展的地址范围相合并。如果测试将继续,那么进程600返回至步骤606去开始一个新的对窗口的遍历。值得注意的是在图6中所示的具体步骤是没有被要求的。
步骤518中对额外合并的检查可以减少按照请求到达顺序进行合并的依赖性。例如,假设在活动窗口中的最早的请求具有目标地址范围[A0,A1),接下来最早的请求具有地址范围[A2,A3),第三最早的请求具有地址范围[A1,A2)。进程500中的步骤512至516中,第一请求将与第三请求相合并去创造所合并的地址范围[A0,A2)。在步骤518,第二请求将与所合并的请求相合并去创造合并的地址范围[A0,A3)。需要注意的是步骤518是可选的,并且在一些实施例中,简化合并逻辑可以具有比步骤518所提供的合并请求所增加的可能性更高的优先权。
再次参考图5,在步骤520中,合并逻辑426将更新的状态信息提供给发送控制逻辑430。状态信息可以包括任意的被发送控制逻辑430所使用的信息,用于确定是否在当前循环内发送一个包。状态信息的例子包括窗口中请求的总的数目,合并到当前请求中的请求的数目,当前地址范围的大小,等等。
在步骤504中,在没有新的请求被接收到的情况下,合并逻辑426在步骤524中增加计时器428。在步骤526中,合并逻辑426确定是否在最后的循环内发送出一个包;步骤526可以包括检测如下所述的由发送控制逻辑430所产生的信号。如果包被发送出去,那么包将已经包括了队列中最早的请求,因此当前的地址范围将不再精确。在步骤528中,更新当前的地址范围去反映读队列406中目前最早请求的地址范围。有利地,合并逻辑426为那些在队列406中能够与当前最早请求(步骤518)相合并的其它请求进行检查。
现在,将描述发送控制逻辑块424和430。图7是按照本发明的,显示控制逻辑进程700的流程图,该控制进程可以在读组合器412的发送控制逻辑块430或者写组合器408的发送控制逻辑块412中被实现。可以从“循环”步骤702开始重复进程700。
在步骤704,发送控制逻辑430(或者发送控制逻辑424)确定发送条件是否已经出现。正如这里所使用的,“发送条件”一般涉及任意可检测的情况,它们的出现指示将从读队列406(或者写队列404)发送包。有利地,发送条件被定义并且被调整到特定的系统配置,同时诸如读队列406的大小,发送器模块206所引起的最大延迟,总线行为的实际水平等等因素也可能被纳入考虑中。可以使用大量的发送条件,发明的实施例可以在步骤704测试任意数量和组合的发送条件。
例如,在一些实施例中,当计时器428(或者计时器422)到期的时候,一个发送条件就出现了,例如,当实现计时器428的计数器已经达到了一个预定的最大值。有利地,定义最大值以便当更长的等待将引起延迟的时候,计时器428到期,该延迟不被期待能够从合并请求的效率收获中获得补偿。在一些实施例中,最大值可以是固定的值,它可以是设备的可配置的参数。在其它实施例中,基于操作条件,最大值可以被动态地调整,例如,通过监视总线流量,当总线的负载相对较轻的时候选择较低的最大值去减少延迟,当总线的负载相对较重的时候选择较高的最大值去增加组合包的可能性。
在一些实施例中,发送条件是基于请求队列的特性和/或者总线协议的。例如,正如下面所描述的,在一些实施例中,在读队列406中定义活动窗口去识别当前用于合并的备选请求。活动窗口具有预定最大值MW,有利地,它是根据请求的数目而被测量的。例如,MW可以是2,3,4或者最大为读队列406总长的任意尺寸。在任意给定的时间里,读队列406中的MW个最早请求处于活动窗口中(如果少于MW个请求出现在读队列406中,那么所有的请求将在活动窗口中)。
一旦活动窗口满了,例如,一旦读队列406包括MW个请求,那么,由于直到发送出包以后才能有新的包进入活动窗口,因此继续等待请求是不再值得的(即使计时器还没有到期)。因此,有利的,满的活动窗口被检测为一个发送条件。例如,如果MW=2,一旦两个请求已经被接收到,第一请求将被发送出。如果第二请求的目标地址范围与第一请求的目标地址范围是连续的,那么请求将如上所述的那样被合并。否则,第二请求保留在队列中,直到发送条件出现在接下来的循环里。
在其它实施例中,发送条件是基于能够被组合的请求的最大数目MR的;MR可以是最大为窗口大小MW的任意尺寸。如果在队列406中的第一(最早)请求能够与MR-1个其它请求相合并,在形成和发送包之前不再等待是有利的。例如,在这样的一个实施例中,MW=3和MR=2;如果最早的请求能够与第二最早请求相合并,那么基于MR的发送条件将出现,并且不论第三请求是否已经被接收到,包都将被送出。需要注意的是当MR=MW并且基于MW的发送条件被使用的时候,在基于MR的发送条件只有在基于MW的发送条件也出现的情况下才出现的意义上,基于MR的发送条件将是多余的。
在另一个实施例中,发送条件是基于总线所支持的包的最大尺寸的。一旦在活动窗口中通过合并请求能够创造最大尺寸的包,那么不再有请求可以在没有创造不被接受的大包的情况下与现存的请求相合并。例如,假设总线协议限制包的有效载荷为128个字节。如果在队列406中的第一(最早)请求具有128个字节的有效载荷,那么它不能够被合并到更大的包中,并且将出现包大小的发送条件。类似地,如果在队列406中的第一(最早)请求是64个字节并且它能够与另一个64个字节的请求相合并去得到具有128个字节的有效载荷的包,那么包大小的发送条件也将出现。需要理解的是128个字节的最大值的例子是解释性的;不同的总线协议可以在包大小上做不同的限制(或者没有限制)。
再次参照图7,步骤704可以包括检测上述或者其它发送条件的任意组合。如果,在步骤704,没有出现发送条件,那么进程700返回到步骤702而不做任何动作。如果检测到发送条件的出现,那么在步骤706中形成包。在一个实施例中,如上所述,发送控制逻辑430参照由组合逻辑426所确定的当前地址范围形成包。形成包可以包括产生一个新的包头,或者,在实施例中,当请求已经以包的形式存在的时候,修改包的包头中的诸如地址范围的信息去包含与之合并的其它包的信息。创造包也可以包含连接被合并的请求(或包)的有效载荷;有利地,有效载荷是基于地址顺序而被连接的,有效载荷可以在可合并请求被识别出的时候(例如,在图5的进程500的步骤514)被连接而不用等待到步骤706才执行。在步骤708中,为了将包传送到总线上而将包发送给输出仲裁器416。
在步骤710中,包信息被转发给接收器模块208(图2)。有利地,包信息包括唯一的包标签,对请求数据的核心202(1)到202(N)中的哪一个(或者哪几个)的识别,以及可能被接收器模块208所使用的用于确定如何处理接收到的对包的任意响应的任意其他信息。通常,这样的信息可以在本质上是常规的,并且接收器模块208不需要知道是否通过合并请求创造了特定的包,但是需要知道响应中所接收到的不同的数据子集将被路由到不同的提出请求的核心。
在步骤712中,发送控制逻辑430从读队列406中删除包中所包括的所有的请求。在一个实施例中,采用前面所描述的合并寄存器的值去确定哪个请求被包括在包中。
在步骤714中,发送控制逻辑430发信号给合并逻辑426,指示一个包已经被发送出了。正如前面所描述的那样,响应于这样的信息,合并逻辑426能够更新当前的地址范围去反映出不同的请求现在是最早的请求。在步骤716中,发送控制逻辑430重置计时器428。然后,为了下一个循环,进程700返回至步骤702。
需要注意的是这里所描述的合并和发送进程是解释性的,并且可能做出各种的变化和修改。描述为线性的步骤可以并行地执行。可以变化步骤的顺序,并且可以修改或者组合步骤。例如,活动窗口可以是任意大小的(两个请求或者更多),并且可以被遍历任意次(一次,两次等)。在一些实施例中,如果所合并的请求达到了最大的包大小或者最大数目,那么窗口的遍历被中止。在一些实施例中,可能不允许特定的地址范围;例如,如果被允许的有效载荷的大小为32,64和128个字节,那么32个字节的请求和64个字节的请求将不被合并去创造96个字节的有效载荷。这里所描述的进程可以被修改去满足任何这样的限制。
此外,发送条件可以与前面那些所描述的不同。例如,前面所描述的计时器在每次送出包的时候重置,并且因此,给定请求在队列中等待的周期的数目可能部分地依赖于其它的包是否被发送出。在一个可替换的实施例中,为每个请求使用单独的计时器(例如,计数器),并且当它的计时器到期的时候,请求被发送出,而不管其它的行为。更一般地,任意数目和任意组合的发送条件可以被发送控制逻辑所测试。在一些实施例中,来自特定核心的请求可以不用等待而被发送出。例如,如果一个核心被标示为高优先级,那么来自那个客户的请求的接收可能被视为发送条件,并且包形成逻辑可能被配置为去检测这样的一个请求,并且无论其它包是否在队列中等待都将它作为包发送。可以执行这里所描述的进程去组合读请求和/或组合写请求。正如前面所注明的那样,可以使用不同的逻辑去控制读请求的组合和写请求的组合。
为了进一步解释发明的实施例的运作,图8是根据前面所描述的进程用于处理读请求序列的处理例,该请求序列可以由发送器模块206(图2)所接收和处理。在图8中,列802识别循环(为了方便被编号为1至8)。列804显示在接收到任意新请求之后,每个循环中活动窗口中的请求的地址范围。列806指示,如果可能,出现在每个循环中的发送条件。根据这个例子,发送条件是:“计时器”,如果计时器达到计数3那么它到期;“窗口满”,当三个请求出现在窗口中(MW=3)时它出现;以及“最大合并”,当两个可合并的请求出现在窗口中的时候(MR=2)的时候它出现。列808在那个循环中用于包(如果有的话)发送的地址范围。
在循环1中,具有目标地址范围[A0,A1)的第一请求811被接收到并且进入到活动窗口中。计时器开始的初始值是0。发送条件没有出现,因此没有包被发送出去。在循环2和3中,没有接收到请求,并且第一请求811在活动窗口中等待。计时器随着每一个循环而增加一次。
在循环4中,具有目标地址范围[A2,A3)的第二请求812被接收到并且进入到活动窗口中。计时器达到计数3并且到期,因此包821被发送出去。正如上面所描述的,包对应着窗口中最早的请求(请求811);因为[A0,A1)和[A2,A3)不是连续的范围,因此请求812没有和请求811合并,并且包821具有目标地址范围[A0,A1)。只要包被发送出去,计时器就被重新设置。
在循环5中,具有目标地址范围[A5,A6)的第三请求813被接收到并且进入到活动窗口中。没有出现发送条件,因此没有包被发送出去。
在循环6中,具有目标地址范围[A3,A4)的第四请求814被接收到并且进入到窗口中。因为现在的窗口是满的,发送条件出现了,于是包822被发送出去。在这个例子中,最早请求是请求812,请求814与请求812相合并。因此,包822具有目标地址范围[A2,A4)。请求813不被合并而被保留在窗口中。
在循环7中,具有目标地址范围[A6,A7)的第五请求815被接收到并且进入到窗口中。因为请求815能够和请求813相合并,“最大合并”发送条件出现了,于是包823被发送出去。因为合并,包823具有目标地址范围[A5,A7]。
在循环8中,具有目标地址范围[A7,A8)的第六请求816被接收到并且进入到窗口中。此刻,请求816是窗口中的唯一请求,并且没有出现发送条件,因此没有包被发送。这个进程可以通过这样的方式不确定地被继续。
需要注意的是这里所描述的时间顺序和发送条件是解释性的,并且可能做出变化和修改。可以定义不同的发送条件,可以使用不同的原则去确定是否能够合并请求。
在图8所示的例子中,合并将在总线发送出的包的数目从五(请求的数目)减少至三。更一般地,通过合并请求所获得的带宽部分地依赖特定的发送条件和所执行的合并规则。它也部分地依赖于由各种核心所产生的请求或者总线接口单元的其它用户致力于拥有连续的目标地址范围到什么样的程度,连续的地址范围取决于由客户所执行的操作类型。正如上面所记述的那样,只要被合并的包小于那些产生合并包的两个和多个包的组合尺寸,那么至少可以获得一些带宽使用量的减少。进一步地,当多个请求被合并到一个包中的时候,响应将更可能地被返回至一个包中而不是多个包中,因此减少了在返回路径上的带宽的使用量。
此外,合并包可以提供其它的好处。例如,在一些实施例中,在驱动电路418(图4)不传送包的时候,通过将它设置在低电源状态从而减少电源消耗;因此,通过减少驱动电路418传送的包的数量能够较少电源消耗又如另一个例子,在实施例中,当总线接口单元204(图2)采用标签去跟踪那些响应没有被接收到的请求包的时候,合并请求到较少量的包中能够减少需要被跟踪的标签的数目。
当根据特定实施例对发明进行描述的时候,本领域的普通技术人员将认识到各种修改都是可能的。例如,组合请求不被限制在PCI-E总线协议上;这里所描述的技术可以适应于任何总线,设备通过它利用包传送读和/或写请求。本发明也可以运用到不同的计算机系统(包括服务器和客户机系统,发送和/或接收数据的手持或者移动设备等等)之间的通信中,其中系统通过网络中的包的交换进行相互的通信。
在一些实施例中,能够基于总线行为的水平来启动或者停止合并。例如,图4的发送控制逻辑块424和/或430可以被配置,以便于在总线行为低于阈值的时候,每当接收到一个请求就会出现一个发送条件。这减少了由于等待确定第一请求是否能够与后续请求相合并所导致的发送器的延迟。当总线行为高于阈值的时候,其它发送条件可以被测试,例如,如上面所描述的那样。有利地,设置临界的总线行为水平,以便于当总线足够忙以致于在传输请求到总线上和/或通过总线接收对请求的响应的过程中期待一些延迟的时候,启动合并。
进一步地,虽然前面所描述的实施例与GPU有关,但是本发明并不局限于GPU或者集成处理器。具有总线接口的管理来自多个客户请求的任何设备可以包括适当的合并请求的组件。例如,也可以配置图1的PCI-E开关116去合并来自于与之连接的设备的请求。
因此,尽管已经根据特定实施例描述了发明,但是需要注意的是发明旨在覆盖了包括在所附权利要求范围中的所有修改和等同替换。

Claims (21)

1、一种用于在总线上以包的形式传送来自多个客户的数据传输请求的总线接口设备,该设备包括:
被配置为存储来自多个客户的多个数据传输请求的队列,每个数据传输请求指定一个目标地址范围;
被配置为从所述队列中的至少一个数据传输请求中形成包的组合器逻辑,在所述队列中的两个或者多个要被组合的数据传输请求指定了各自可合并的目标地址范围的情况下,该组合器逻辑进一步地被配置为组合所述两个或者多个数据传输请求到一个包中,其中该组合器逻辑包括:
合并逻辑,被配置为检测队列中的任意数据传输请求是否可与队列中最早的数据传输请求合并,并且至少部分基于所述检测产生状态信息;和
被配置为确定在当前循环中是否传送一个包或者等待后续循环的发送控制逻辑,其中是否传送包的决定是至少部分基于由合并逻辑所产生的状态信息;和
被配置为驱动包到总线上的输出逻辑。
2、如权利要求1所述的总线接口设备,其中由两个或者多个数据传输请求所指定的各自的目标地址范围在各目标地址范围是连续的情况下是可合并的。
3、如权利要求1所述的总线接口设备,其中由两个或者多个数据传输请求所指定的各目标地址范围在各自的目标地址范围是连续的或者各自的目标地址范围至少是部分重叠的情况下是可合并的。
4、如权利要求2所述的总线接口设备,其中每个数据传输请求进一步指定目标设备,并且其中由两个或者多个数据传输请求所指定的各自的目标地址范围在两个或者多个数据传输请求中的每一个指定相同的目标设备并且各自的目标地址范围是连续的情况下,是可合并的。
5、如权利要求1所述的总线接口设备,其中发送控制逻辑进一步被配置,使得是否传送包的决定是至少部分基于队列中数据传输请求的数目而做出的。
6、如权利要求1所述的总线接口设备,其中发送控制逻辑进一步被配置,使得是否传送包的决定是至少部分基于自发送先前的包开始所耗费的时间。
7、如权利要求1所述的总线接口设备,其中发送控制逻辑进一步被配置,使得是否传送包的决定是至少部分基于自接收到队列中最早数据请求开始所耗费的时间。
8、如权利要求1所述的总线接口设备,其中发送控制逻辑进一步被配置,使得是否传送包的决定是至少部分基于队列中可与队列中最早数据传输请求相合并的数据传输请求的数目。
9、如权利要求1所述的总线接口设备,其中客户是处理器的处理核心。
10、如权利要求1所述的总线接口设备,其中每个客户是一个分立的组件,并且为总线接口设备配置特定的局部总线线路将客户彼此连接。
11、如权利要求1所述的总线接口设备,其中采取适合总线上传输的包形式接收数据传输请求。
12、如权利要求1所述的总线接口设备,其中采取与适合总线上传输的包形式所不同的内部格式接收数据传输请求。
13、如权利要求1所述的总线接口设备,其中每个数据传输请求是读请求。
14、如权利要求1所述的总线接口设备,其中每个数据传输请求是写请求。
15、如权利要求1所述的总线接口设备,其中总线是PCI Express(PCI-E)总线。
16、一种用于在总线上以包的形式传输来自多个客户的数据传输请求的方法,所述方法包括:
接收指定第一地址范围的第一数据传输请求;
接收至少一个后续数据传输请求,每个后续数据传输请求指定各自的目标地址范围;
确定第一目标地址范围是否可与一个或者多个后续数据传输请求的目标地址范围相合并;
形成用于总线上传输的包,
其中在第一目标地址范围可与一个或者多个后续数据传输请求所限定的目标地址范围相合并的情况下,从第一请求和一个或者多个后续数据传输请求中形成包,其中在第一目标地址范围和第二目标地址范围是连续的情况下,第一目标地址范围可与后续数据传输请求的第二目标地址范围相合并,其中每个第一和后续数据传输请求进一步指定一个目标设备,且在第一数据传输请求和后续数据传输请求指定相同目标设备和第一目标地址范围与第二目标地址范围是连续的情况下,第一目标地址范围可与第二目标地址范围相合并,和
其中,在第一目标地址范围不能够与任意后续请求的目标地址范围相合并的情况下,从第一请求形成包;和
驱动包到总线上。
17、如权利要求16所述的方法,其中响应于发送条件执行形成包的动作,该发送条件至少部分基于已经接收到的数据传输请求的数目。
18、如权利要求16所述的方法,其中响应于发送条件执行形成包的动作,该发送条件至少部分基于自发送先前的包开始所耗费的时间。
19、如权利要求16所述的方法,其中响应于发送条件执行形成包的动作,该发送条件至少部分基于自接收到第一数据传输请求开始所耗费的时间。
20、如权利要求16所述的方法,其中响应于发送条件执行形成包的动作,该发送条件至少部分基于可与第一数据传输请求相合并的后续数据传输请求的数目。
21、一个处理器,包括:
多个处理核心,每一个处理核心被配置为产生数据传输请求;和
被配置为接收来自处理核心的数据传输请求并且在总线上以包的形式传送数据传输请求的总线接口单元,该总线接口单元包括:
被配置为存储来自多个处理核心的数据传输请求的队列,每个数据传输请求指定一个目标地址范围;
被配置为从队列中的至少一个数据传输请求中形成包的组合器逻辑,在队列中两个或者多个要被组合的数据传输请求指定了可合并的各自目标地址范围的情况下,该组合器逻辑进一步地被配置为组合所述两个或者多个数据传输请求到一个包中;和
被配置为驱动包到总线上的输出逻辑。
CNB2006101534618A 2005-07-11 2006-07-11 在总线上以包的形式传输数据传输请求的方法及设备 Active CN100524266C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17926605A 2005-07-11 2005-07-11
US11/179,266 2005-07-11

Publications (2)

Publication Number Publication Date
CN1904868A CN1904868A (zh) 2007-01-31
CN100524266C true CN100524266C (zh) 2009-08-05

Family

ID=37191360

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101534618A Active CN100524266C (zh) 2005-07-11 2006-07-11 在总线上以包的形式传输数据传输请求的方法及设备

Country Status (4)

Country Link
US (1) US7526593B2 (zh)
EP (1) EP1750202A1 (zh)
CN (1) CN100524266C (zh)
TW (1) TWI416334B (zh)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8116889B2 (en) * 2002-06-27 2012-02-14 Openpeak Inc. Method, system, and computer program product for managing controlled residential or non-residential environments
US7933945B2 (en) * 2002-06-27 2011-04-26 Openpeak Inc. Method, system, and computer program product for managing controlled residential or non-residential environments
US7340548B2 (en) * 2003-12-17 2008-03-04 Microsoft Corporation On-chip bus
US7624221B1 (en) * 2005-08-01 2009-11-24 Nvidia Corporation Control device for data stream optimizations in a link interface
US20080126641A1 (en) * 2006-08-31 2008-05-29 Irish John D Methods and Apparatus for Combining Commands Prior to Issuing the Commands on a Bus
US20080086594A1 (en) * 2006-10-10 2008-04-10 P.A. Semi, Inc. Uncacheable load merging
CN101043510B (zh) * 2007-04-29 2012-03-07 中兴通讯股份有限公司 Pci-e总线分布式系统单板内及单板间数据通讯方法
TW200844841A (en) * 2007-05-10 2008-11-16 Realtek Semiconductor Corp Method for expediting data access of universal serial bus stoarage device
US8458282B2 (en) * 2007-06-26 2013-06-04 International Business Machines Corporation Extended write combining using a write continuation hint flag
TWI346289B (en) * 2007-12-19 2011-08-01 Ralink Technology Corp Peripheral complying with sdio standard and method for managing sdio command
CN101320361B (zh) * 2008-02-27 2011-12-07 中兴通讯股份有限公司 一种多cpu通讯方法及系统
ATE524803T1 (de) * 2008-07-21 2011-09-15 Somfy Sas Verfahren zur steuerung einer gruppe drahtlos gesteuerter anwendungen
US8738812B2 (en) * 2009-05-27 2014-05-27 Plx Technology, Inc. Transfer of commands and storage data to a data storage device
GB2474446A (en) 2009-10-13 2011-04-20 Advanced Risc Mach Ltd Barrier requests to maintain transaction order in an interconnect with multiple paths
CN102088398B (zh) * 2009-12-08 2013-03-20 华为技术有限公司 Web并发事件处理方法及装置
US8532129B2 (en) * 2009-12-30 2013-09-10 International Business Machines Corporation Assigning work from multiple sources to multiple sinks given assignment constraints
US8391305B2 (en) * 2009-12-30 2013-03-05 International Business Machines Corporation Assignment constraint matrix for assigning work from multiple sources to multiple sinks
US8295305B2 (en) * 2009-12-30 2012-10-23 International Business Machines Corporation Dual scheduling of work from multiple sources to multiple sinks using source and sink attributes to achieve fairness and processing efficiency
CN102207919A (zh) * 2010-03-30 2011-10-05 国际商业机器公司 加速数据传输的处理单元、芯片、计算设备和方法
EP2437428A1 (en) * 2010-10-01 2012-04-04 Koninklijke Philips Electronics N.V. Device and method for load balancing for data packet transmissions in wireless networks
US8639861B1 (en) 2011-03-31 2014-01-28 Emc Corporation Pseudo writing system and method
US9117032B2 (en) 2011-06-01 2015-08-25 International Business Machines Corporation Facilitating routing by selectively aggregating contiguous data units
US9134909B2 (en) 2011-08-30 2015-09-15 International Business Machines Corporation Multiple I/O request processing in a storage system
US8879571B2 (en) * 2011-11-01 2014-11-04 Hewlett-Packard Development Company, L.P. Delays based on packet sizes
TWI447646B (zh) * 2011-11-18 2014-08-01 Asmedia Technology Inc 資料傳輸裝置及多個指令的整合方法
CN102567278A (zh) * 2011-12-29 2012-07-11 中国科学院计算技术研究所 一种片上多核数据传输方法和装置
US9268731B2 (en) * 2012-01-06 2016-02-23 Intel Corporation Controlling devices via advance notice signaling
EP3291511B1 (en) * 2012-03-23 2020-05-27 Itron Global SARL Packet aggregation in mesh network
US8902901B2 (en) 2012-03-23 2014-12-02 Itron, Inc. Communication packet conversion
US9712453B1 (en) 2012-03-26 2017-07-18 Amazon Technologies, Inc. Adaptive throttling for shared resources
US9449359B2 (en) * 2012-09-13 2016-09-20 Ati Technologies Ulc Rendering settings in a multi-graphics processing unit system
US9489307B2 (en) * 2012-10-24 2016-11-08 Texas Instruments Incorporated Multi domain bridge with auto snoop response
US9158691B2 (en) 2012-12-14 2015-10-13 Apple Inc. Cross dependency checking logic
US9343177B2 (en) 2013-02-01 2016-05-17 Apple Inc. Accessing control registers over a data bus
KR20150093004A (ko) * 2014-02-06 2015-08-17 삼성전자주식회사 불휘발성 저장 장치의 동작 방법 및 불휘발성 저장 장치를 액세스하는 컴퓨팅 장치의 동작 방법
GB2525613A (en) * 2014-04-29 2015-11-04 Ibm Reduction of processing duplicates of queued requests
CN105306421A (zh) * 2014-06-30 2016-02-03 中兴通讯股份有限公司 一种基于pci-e接口的信号处理方法及信号处理装置
KR102173089B1 (ko) * 2014-08-08 2020-11-04 삼성전자주식회사 인터페이스 회로 및 그것의 패킷 전송 방법
KR102287402B1 (ko) * 2015-03-23 2021-08-06 삼성전자주식회사 버스 인터페이스 장치, 이를 포함하는 반도체 집적회로 장치 및 상기 장치의 동작 방법
US10157133B2 (en) 2015-12-10 2018-12-18 Arm Limited Snoop filter for cache coherency in a data processing system
US9900260B2 (en) * 2015-12-10 2018-02-20 Arm Limited Efficient support for variable width data channels in an interconnect network
US9990292B2 (en) 2016-06-29 2018-06-05 Arm Limited Progressive fine to coarse grain snoop filter
US9684461B1 (en) 2016-10-31 2017-06-20 International Business Machines Corporation Dynamically adjusting read data return sizes based on memory interface bus utilization
US9892066B1 (en) 2016-10-31 2018-02-13 International Business Machines Corporation Dynamically adjusting read data return sizes based on interconnect bus utilization
US10270704B2 (en) 2016-11-10 2019-04-23 Microsoft Technology Licensing, Llc. Throttling output with ongoing input
US10474620B2 (en) * 2017-01-03 2019-11-12 Dell Products, L.P. System and method for improving peripheral component interface express bus performance in an information handling system
US10042766B1 (en) 2017-02-02 2018-08-07 Arm Limited Data processing apparatus with snoop request address alignment and snoop response time alignment
US10482055B2 (en) 2017-05-10 2019-11-19 Qualcomm Incorporated Hardware event priority sensitive programmable transmit wait-window for virtual GPIO finite state machine
US10261699B2 (en) * 2017-05-16 2019-04-16 Dell Products L.P. Systems and methods for hardware-based RAID acceleration
KR102429904B1 (ko) 2017-09-08 2022-08-05 삼성전자주식회사 PCIe P2P 접속의 밴드위스를 최대화할 수 있는 방법 및 시스템
KR20190031683A (ko) * 2017-09-18 2019-03-27 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN107666515B (zh) * 2017-09-20 2019-07-09 Oppo广东移动通信有限公司 图像处理方法和装置、计算机设备、计算机可读存储介质
US20190124180A1 (en) * 2017-10-20 2019-04-25 Hewlett Packard Enterprise Development Lp Packet compression and decompression
US10712949B2 (en) 2017-11-09 2020-07-14 Western Digital Technologies, Inc. Adaptive device quality of service by host memory buffer range
US10496457B2 (en) * 2018-04-02 2019-12-03 Micron Technology, Inc. Grouping requests to reduce inter-process communication in memory systems
KR102608825B1 (ko) * 2018-04-26 2023-12-04 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이의 동작 방법
CN110020383B (zh) * 2018-06-01 2023-04-11 创新先进技术有限公司 一种页面数据请求处理方法及装置
US20200059437A1 (en) * 2018-08-20 2020-02-20 Advanced Micro Devices, Inc. Link layer data packing and packet flow control scheme
US10866917B2 (en) * 2018-12-03 2020-12-15 Ati Technologies Ulc Inter device data exchange via external bus by utilizing communication port
US20200192842A1 (en) * 2018-12-14 2020-06-18 Ati Technologies Ulc Memory request chaining on bus
CN112395234A (zh) * 2019-08-16 2021-02-23 阿里巴巴集团控股有限公司 一种请求处理方法及装置
CN112380148B (zh) * 2020-11-30 2022-10-25 海光信息技术股份有限公司 数据传输方法和数据传输装置
JP2022143278A (ja) * 2021-03-17 2022-10-03 キオクシア株式会社 メモリシステム
CN113485950A (zh) * 2021-06-22 2021-10-08 上海天数智芯半导体有限公司 一种合并发送PCIe存储器写请求的系统及方法
CN113535172B (zh) * 2021-07-23 2024-03-19 上海米哈游璃月科技有限公司 一种信息查找方法、装置、设备及存储介质
US20230057698A1 (en) * 2021-08-23 2023-02-23 Nvidia Corporation Physically distributed control plane firewalls with unified software view

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5918072A (en) 1995-09-18 1999-06-29 Opti Inc. System for controlling variable length PCI burst data using a dummy final data phase and adjusting the burst length during transaction
US6304550B1 (en) 1996-01-17 2001-10-16 Alcatel Usa, Inc. System and method for broadcast control of a data transmission system
US6298406B1 (en) * 1997-10-24 2001-10-02 Sony Corporation Method of and apparatus for detecting direction of reception of bus packets and controlling direction of transmission of bus packets within an IEEE 1394 serial bus node
US7054935B2 (en) 1998-02-10 2006-05-30 Savvis Communications Corporation Internet content delivery network
US6185598B1 (en) 1998-02-10 2001-02-06 Digital Island, Inc. Optimized network resource location
JP2000059435A (ja) * 1998-08-05 2000-02-25 Nippon Telegr & Teleph Corp <Ntt> 誤り制御方法および装置
US6101568A (en) * 1998-08-25 2000-08-08 Stmicroelectronics, Inc. Bus interface unit having dual purpose transaction buffer
US6804251B1 (en) 1998-11-12 2004-10-12 Broadcom Corporation System and method for multiplexing data from multiple sources
US6405276B1 (en) * 1998-12-10 2002-06-11 International Business Machines Corporation Selectively flushing buffered transactions in a bus bridge
US6462998B1 (en) 1999-02-13 2002-10-08 Integrated Device Technology, Inc. Programmable and electrically configurable latch timing circuit
US6721334B1 (en) * 1999-02-18 2004-04-13 3Com Corporation Method and apparatus for packet aggregation in packet-based network
DE19919177A1 (de) 1999-04-28 2000-11-02 Philips Corp Intellectual Pty Netzwerk mit mehreren Netzwerk-Clustern zur drahtlosen Übertragung von Paketen
US6665306B1 (en) * 1999-11-24 2003-12-16 Intel Corporation Immediate cut-off protocol and interface for a packet-based bus connecting processors
US6499077B1 (en) 1999-12-30 2002-12-24 Intel Corporation Bus interface unit for reflecting state information for a transfer request to a requesting device
US6546447B1 (en) * 2000-03-30 2003-04-08 International Business Machines Corporation Method and apparatus for dynamic PCI combining for PCI bridges
TW502175B (en) * 2000-11-24 2002-09-11 Mellanox Technologies Ltd Parallel bus communications over a packet-switching fabric
US7079501B2 (en) 2001-01-31 2006-07-18 International Business Machines Corporation Method and system for efficiently delivering content to multiple requesters
IL141855A0 (en) * 2001-03-07 2002-03-10 Onetiercommunications Inc A method and apparatus for providing an improved quality of service for data transfer over the internet
US7170893B2 (en) * 2001-06-15 2007-01-30 Lucent Technologies Inc. Technique for selecting the number of packets to be concatenated
US7319666B2 (en) * 2002-02-06 2008-01-15 Thomson Licensing Method and apparatus for concatenating and piggybacking data packets
US20040003164A1 (en) * 2002-06-27 2004-01-01 Patrick Boily PCI bridge and data transfer methods
US7000060B2 (en) 2002-09-27 2006-02-14 Hewlett-Packard Development Company, L.P. Method and apparatus for ordering interconnect transactions in a computer system
US7426219B2 (en) * 2003-02-26 2008-09-16 Avaya Inc. Method and apparatus for reducing packet data mixer delay
US7133943B2 (en) 2003-02-26 2006-11-07 International Business Machines Corporation Method and apparatus for implementing receive queue for packet-based communications
US7000041B2 (en) * 2003-03-31 2006-02-14 Intel Corporation Method and an apparatus to efficiently handle read completions that satisfy a read request
US7609723B2 (en) * 2003-05-23 2009-10-27 Intel Corporation Packet combining on PCI express
US20040252721A1 (en) 2003-06-16 2004-12-16 International Business Machines Corporation Bundled internet protocol packets
US7391769B2 (en) * 2003-06-27 2008-06-24 Lucent Technologies Inc. Packet aggregation for real time services on packet data networks
EP1511231A1 (en) * 2003-08-28 2005-03-02 Siemens Aktiengesellschaft A method for transmission of data packets through a network
US7639713B2 (en) * 2004-01-21 2009-12-29 Emc Corporation Database block network attached storage packet joining
US7974191B2 (en) * 2004-03-10 2011-07-05 Alcatel-Lucent Usa Inc. Method, apparatus and system for the synchronized combining of packet data
US7447233B2 (en) * 2004-09-29 2008-11-04 Intel Corporation Packet aggregation protocol for advanced switching

Also Published As

Publication number Publication date
US20070079044A1 (en) 2007-04-05
CN1904868A (zh) 2007-01-31
TW200710671A (en) 2007-03-16
EP1750202A1 (en) 2007-02-07
TWI416334B (zh) 2013-11-21
US7526593B2 (en) 2009-04-28

Similar Documents

Publication Publication Date Title
CN100524266C (zh) 在总线上以包的形式传输数据传输请求的方法及设备
EP1678621B1 (en) Method and apparatus for sending data from multiple sources over a communications bus
JP4439491B2 (ja) マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法
CN101901205B (zh) 在PCIExpress上启用基于ID的流的方法和装置
CN101634975B (zh) 一种实现dma数据传输的方法及装置
CN111159075B (zh) 数据传输方法和数据传输装置
CN101930416A (zh) 硬件协助处理器间的沟通
US9213545B2 (en) Storing data in any of a plurality of buffers in a memory controller
CN101160567A (zh) 具有带嵌入式cpu的存储器控制器的数据存储系统
CN202948447U (zh) 基于PCI总线的串行Rapid IO协议控制器
CN113590512A (zh) 可直连外设设备的自启动dma装置及应用
WO2004102406A1 (en) Usb host controller with memory for transfer descriptors
US11593281B2 (en) Device supporting ordered and unordered transaction classes
CN105681222A (zh) 一种数据接收缓存方法、装置及通信系统
CN116009770A (zh) 读响应电路、方法、数据传输系统及相关设备
US8284790B1 (en) Packet switch with enqueue structure for odering packets
CN102984599A (zh) 基于RapidIO协议网络的视频采集传输装置及方法
EP2588965B1 (en) Method, apparatus and system for maintaining transaction coherecy in a multiple data bus platform
CN116048893B (zh) 光纤总线接口的测试方法及相关设备
JP4514411B2 (ja) バス間通信インタフェース装置
CN117033273A (zh) 一种dma读操作的实现方法、系统和fpga设备
CN115129649A (zh) 数据通信方法、可编程逻辑芯片和串行通信系统
CN116719763A (zh) PCIe总线多通道DMA读传输系统
WO2003048950A1 (en) Communication bus system

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