CN1568462A - 计算机系统的输入/输出节点 - Google Patents

计算机系统的输入/输出节点 Download PDF

Info

Publication number
CN1568462A
CN1568462A CNA028199618A CN02819961A CN1568462A CN 1568462 A CN1568462 A CN 1568462A CN A028199618 A CNA028199618 A CN A028199618A CN 02819961 A CN02819961 A CN 02819961A CN 1568462 A CN1568462 A CN 1568462A
Authority
CN
China
Prior art keywords
instruction
node
package
bus
unit
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
Application number
CNA028199618A
Other languages
English (en)
Other versions
CN1307568C (zh
Inventor
S·C·恩尼斯
L·D·黑维特
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN1568462A publication Critical patent/CN1568462A/zh
Application granted granted Critical
Publication of CN1307568C publication Critical patent/CN1307568C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/128Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network

Landscapes

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

Abstract

本发明提供一种计算机系统输入/输出节点。用于计算机系统的输入/输出节点包含配置为接收在第一通讯路径上的第一指令的第一接收器单元及经由连接以发送第一对应的指令的第一发送器单元,该第一对应的指令对应于在第二通讯路径上的第一指令。该输入/输出节点亦包含配置为接收在第三通讯路径上的第二指令的第二接收器单元及经由连接以发送第二对应的指令的第二发送器单元,该第二对应的指令符合在第四通讯路径上的该第二指令。再者,该输入/输出节点包含经由连接以接收来自该第一接收器及该第二接收器的选择的指令及配置为发送对应于该选择的指令的指令于外设总线上的桥接器单元。

Description

计算机系统的输入/输出节点
技术领域
本发明涉及计算机系统输入/输出(Input/Output,I/O),并且尤其涉及在输入/输出节点中的信息处理。
背景技术
在典型的计算机系统中,一个或一个以上的处理器可以经由一个或一个以上的总线与输入/输出设备做通讯。该输入/输出设备可以通过输入/输出桥接器连接至该处理器,该桥接器处理在连接至该输入/输出设备的外设总线与连接至该处理器的共享总线(shared bus)之间的数据的转移。此外,该输入/输出桥接器可处理在系统内存与该输入/输出设备之间或在该系统内存与该处理器之间的数据的转移。
遗憾的是很多总线系统仍然具有许多缺点。例如,许多连结至总线的设备对于在该总线上的设备驱动信号可能存在相对大的电容量。此外,在共享总线上的该多重连结点在高信号频率下产生减少信号完整性的信号反射。因此,在总线上的信号频率通常保持相对较低藉以维持信号完整性于可接受的位准。该相对低的信号频率降低信号频宽,而限制了连结至该总线的设备的效能。
对于较大数量的设备的扩充性的缺乏是共享总线系统的另外的缺点。共享总线可获得的频宽实质上是固定的(并且若加入额外的设备造成在信号频率在总线上的降低,则可能减少)。一旦连结至该总线(不论是直接地或非直接地)的设备的频宽需求超过该总线的可获得的频宽时,当尝试存取该总线时,设备将会常常延迟,并且包含该共享总线的计算机系统的整体的效能将非常有可能降低。一个通过输入/输出设备所使用的共享总线的例子为外设组件互连接(peripheral componentinterconnect,PCI)总线。
很多输入/输出桥接设备使用缓冲机制以缓冲许多来自该PCI总线至最终的目的总线的待解决的信息处理(transactions)。然而缓冲可能导致在该PCI总线上的延迟(stalls)。当一连串的信息处理(后文中简称处理)缓冲在队列中以及等待传输至目的总线时,延迟将可能造成,并且延迟发生在该目的总线上,该目的总线停止传递前进。接着一个容许那些等待的处理完成的处理到达该队列处并且储存在其它处理的后面。为了打破该延迟,在队列中的该处理必须设法重新排序以允许该新到达处理先于那些待解决的处理之前被传送。因此,为了避免诸如此种的情况,该PCI总线规范制订了一组支配PCI总线处理的管理及排序的重新排序规则。
为了克服共享总线的某些缺点,某些计算机系统可能在设备或节点之间使用封包模式通讯。在此类的系统中,节点可以基于交换信息的封包而彼此通讯。通常,″节点″是能够在内连接(interconnect)上参与处理的设备。例如,该内连接可以是封包型模式的,并且该节点可以配置为接收及发送封包。一般来说,″封包″是在两个节点之间的通讯,该两个节点为:发送该封包的初始或″来源″节点及接收该封包的目的或″目标″节点。当封包到达该目标节点时,该目标节点接受由该封包所传递的信息并且在内部处理该数据。位于该来源及目标节点之间的在通讯路径上的节点将可转送或传递来自该来源节点的该封包给该目标节点。
此外,也有系统组合使用封包模式通讯及总线模式通讯。例如,系统可连接至PCI总线及诸如AGP的图形总线。该PCI总线可以连接至封包总线接口,该封包总线接口接着可以转译PCI总线处理成为用于在封包总线上传输的封包处理。同样地该图形总线可以连接至可转译AGP处理成为封包处理的AGP接口。每个接口可以同与一个处理器相关的主桥接器通讯,或在某些例子中与另一个外围设备通讯。
当PCI设备初始化处理时,如同在PCI局部总线规范中所提及的,封包型处理可能受到由相同的排序规则所限制。该相同对于指定于该PCI总线的封包处理而言可能是合法的。由于可能发生在封包总线接口处的处理延迟可能在该封包总线接口处造成停滞,这些排序规则在该封包模式处理中仍然可以观察到。此停滞可能造成进一步的延迟回到该封包总线线路上。此外,AGP处理可以依循一组处理排序规则以确保数据的适当的传送。
视输入/输出节点的配置而定,不论是在主桥接器的方向上或远离该主桥接器的方向上,处理可以通过节点传递至另一个节点。另外,处理可以在特定的节点处引入封包传输中。在任一种情况下,当该处理沿着该通讯路径发送时,可以控制该处理的输入/输出节点架构可能是必须具备的。
发明内容
在此将披露计算机系统输入/输出节点的各种实施例。在其中一项实施例中,用于计算机系统的输入/输出节点包含配置为在第一通讯路径上接收第一指令的第一接收器单元及经由连接以在第二通讯路径上发送对应该第一指令的第一对应指令的第一发送器单元。该输入/输出节点亦包含配置为在第三通讯路径上接收第二指令的第二接收器单元及经由连接以在第四通讯路径上发送对应该第二指令的第二对应指令的第二发送器单元。在一项特定的实现中,该通讯路径可以是诸如例如HyperTransportTM连结的点对点通讯连结。再者,该输入/输出节点可包含经由连接以接收来自于该第一接收器及该第二接收器的选择的指令的桥接器单元,并且配置为在外设总线上发送对应于该选择的指令的指令。
在一项特定的实施例中,输入/输出节点包含经由连接以控制来自该第一通讯路径的指令至该第二通讯路径及至该外设总线的传送的控制单元。此外,该控制单元经由连接以控制来自该第三通讯路径的指令至该第四通讯路径及至该外设总线的传送。该控制单元亦配置为控制来自该外设总线的指令至该第二通讯路径及该第四通讯路径的传送。基于来自该第一接收器、该第二接收器及该桥接器单元所接收的多个控制指令,该控制单元更配置为选择性地控制该指令的传送。
附图说明
图1为计算机系统的一个实施例的方块图。
图2为输入/输出节点的一个实施例的方块图。
图3为处理控制单元的一个实施例的方块图。
图4为调度器的一个实施例的方块图。
图5为包含标记逻辑的调度器的一个实施例的方块图。
图6为包含空闲避免逻辑的处理调度器的一个实施例的方块图。
图7为公平性电路的一个实施例的方块图。
具体实施方式
兹参照图1,该图显示计算机系统的一项实施例的方块图。该计算机系统包含每个通过相连的封包总线15做内连接的处理器10A至10D。每个区段的相连封包总线15在每个处理器10A至D之间可形成点对点连结。虽然该图显示使用点对点连结的四个处理器,需要注意的是其它数量的处理器亦可以使用并且其它形式的总线亦可在该处理器之间做内连接。该计算机系统亦包含三个标示为20、30及40的输入/输出节点,每个节点分别通过输入/输出封包总线50B及50C以串连方式连接在一起。输入/输出封包总线50A连接于主节点/处理器10A及输入/输出节点20之间。处理器10A描述为主节点,该节点可包含用于与输入/输出封包总线50A做通讯的主桥接器。处理器10B至D亦可包含用于与其它输入/输出封包总线(未显示)做通讯的主桥接器。由输入/输出封包总线50A至C所形成的该通讯连结亦可以称为点对点连结。输入/输出节点20连接至一对外设总线25A至B。输入/输出节点30连接至图形总线35,而输入/输出节点40连接至额外的外设总线45。
每个处理器10A至10D可以用诸如AthlonTM微处理器的x86微处理器做为例证说明。此外,诸如输入/输出封包总线50A至50C的封包总线的其中一个例子可以是异步HyperTransportTM。外设总线25A至B及外设总线45可以用诸如外设组件互连接(PCI)总线的共享外设总线来做为例证说明。总线35例如可以用加速图形端口(accelerated graphics port,AGP)做为例证说明。然而,需要了解的是其它形式的微处理器及其它形式的外设总线亦可以使用。
需要注意的是虽然该图显示三个输入/输出节点连接至主处理器10A,但是其它实施例可具有其它数目的节点并且那些节点可以以其它形态做连接。说明于图1中的该串连形态是为了本身的容易了解而显示。
在说明的实施例中,处理器10A的主桥接器可接收诸如输入/输出节点20、30或40的来自下行节点的上行封包处理。另外,处理器10A的主桥接器可发送封包下行至诸如外围设备(未显示)的设备上,该外围设备例如可以连接至外设总线25A。
在运行期间,输入/输出节点20及40可转译PCI总线处理而成为在输入/输出数据流中传输的上行封包处理,并且另外可转译下行封包处理而成为PCI总线处理。所有源自于节点处而非处理器10A的主桥接器的封包在受到传递至任何其它的节点之前可上行流送至处理器10A的主桥接器。所有源自于处理器10A的主桥接器的封包可下行流送至诸如输入/输出节点20、30及40的其它节点。如同在此所使用的,″上行″意指封包传输在处理器10A的主桥接器的方向上流送,而″下行″意指封包传输在远离处理器10A的主桥接器的方向上流送。每个输入/输出数据流可以通过称为单元ID(Unit ID)的识别器所识别。需要考虑的是该单元ID可以是部分封包标头或者该单元ID可以是在单一封包或多个封包中的某些其它标示数目的位。如同在此所使用的,″输入/输出数据流″意指含有该相同的单元ID并且因此源自于该相同的节点的所有封包处理。
举例说明,在外设总线45上的外围设备初始化导向在外设总线25上的外围设备的处理。该处理首先可以转译成为一个或一个以上的具有独特的单元ID的封包并且接着可以发送上行。需要注意的是每个封包可以编码成具有能识别该封包的特定的信息。例如,该单元ID可以编码成为该封包标头。此外,该处理的形式亦可以编码成为该封包标头。每个封包可以指定识别该初始节点的单元ID。由于输入/输出节点20可能无法从下行而传递封包给在外设汇流25上的外围设备,故该封包发送上行至处理器10A的主桥接器。处理器10A的主桥接器接着可发送具有处理器10A的主桥接器的单元ID的该封包而反向下行,直到输入/输出节点20识得并且取走(claims)给予在外设总线25上的该外围设备的该封包。输入/输出节点20接着可转译该封包成为外设总线处理并且发送该处理给在外设总线25上的该外围设备。
当封包处理进行上行或下行时,该封包可穿越一个或一个以上的输入/输出节点。该穿越有时称为隧道(tunnel)并且该输入/输出节点有时称为隧道设备。从上行至下行或从下行至上行所发送的封包称为″前递(forwarded)″传输。此外,源自于特定的输入/输出节点并且插入至该上行传输的封包传输称为″注入(injected)″传输。
如同将于下文中更加详细说明的是,为了保留可能连接至输入/输出节点的各种总线的排序规则,该输入/输出节点可提供处理重新排序以及封包缓冲。该输入/输出节点通过前递及注入传输两者亦可包含控制封包流进入该隧道及由该隧道出来的控制逻辑。
参考图2,该图显示输入/输出节点的一项实施例的方块图。该输入/输出节点表示图1的输入/输出节点20、30或40,并且为了简化起见将下文中称为输入/输出节点20。图2表示的输入/输出节点20包含通过指令总线111连接至发送器140及通过指令总线112连接至外设接口150的处理接收器110。输入/输出节点20亦包含通过指令总线121连接至发送器130及通过指令总线122连接至外设接口150的处理接收器120。外设接口150亦通过指令总线151连接至发送器130及140并且连接至外设总线152。此外,输入/输出节点20包含通过控制指令总线101连接至每个接收器、每个发送器及外设接口的处理控制单元100。如同在此所使用的,指令总线意指包含用于指令、控制及数据的信号。因此,当处理或指令宣称经由个别的指令总线而发送时,该处理或指令意指包含指令及数据位。
在说明的实施例中,接收器110及发送器140形成输入/输出隧道的其中一个通讯路径并且接收器120及发送器130形成该输入/输出隧道的第二个通讯路径。由于每个该通讯路径为单一方向的,故任何一个路径可以连接成为该上行或下行路径。因此,来自外设接口150的所述注入传输将提供给任何一个传输器130及140。
每一个接收器110及120接收封包处理进入接收缓冲区(未显示)内。当接收到每个处理时,将产生含有内含于该接收的指令中的子集合数据的控制指令。该控制指令可例如包含该来源节点的单元ID、目的信息、数据计数及处理形式。需要注意的是该控制指令可包含其它信息或可不包含某些在此所列举的信息。该控制指令将发送给处理控制单元100。
响应于外设接口150接收来自于外设总线152的处理,外设接口150亦可产生含有类似于上文所描述的该控制指令的信息的控制指令。外设接口150亦可储存该处理在一个或一个以上之缓冲区中并且发送该控制指令给处理控制单元100。
处理控制单元100可储存每个控制指令,该处理控制单元接收该控制指令以该单元所接收之顺序进入一个或一个以上之缓冲区构造内。基于该处理控制单元100将该控制指令储存于本身的缓冲区内,处理控制单元100可决定该对应的指令等待在来源缓冲区(意即接收器及/或外设接口)中可以发送的序列。如同将于下文中结合图3至图6以更详细的描述,处理控制单元100基于诸如处理的形式的因素可以在本身的缓冲区中的处理之间做仲裁,是否在该发送器及目的处具有闲置的缓冲空间,是否该处理为前递传输或注入传输。因此该处理控制单元100通过输入/输出节点的隧道可以负担全部处理的数据流。
一旦处理控制单元100仲裁那一个处理将要被执行时,处理控制单元100可针对该个别的来源设备以发送待解决的处理给该目的设备。例如,该处理控制单元100选择来自本身的缓冲区的控制指令,该缓冲区代表由接收器110至发送器140的待传递的处理。处理控制单元100通知接收器110以通过指令总线111发送该处理给发送器140。发送器140接着可发送该处理给在该串连中的下一个节点。该下一个节点可以是另一个不管是上行或下行的输入/输出节点,或者该下一个节点可以是诸如图1的主处理器10A的主节点。此外,处理控制单元100及发送器140可包含指示另一个节点是否于该接收缓冲区中未具有闲置空间的逻辑(未显示)。
兹参照图3,该图显示处理控制单元的一个实施例的方块图。为了简化及简洁,显示于图2中的对应于那些组件的电路组件将以相同的标号做标示。处理控制单元100包含三个分别标示为160、170及180的调度器。每一个调度器160、170及180包含一对虚拟通道指令缓冲区及仲裁器与缓冲区管理单元。调度器160的虚拟通道指令缓冲区标示为V.C.FIFO 166及167,仲裁器与缓冲区管理单元标号为168。同样地,调度器170的虚拟通道指令缓冲区标示为V.C.FIFO 176及177,仲裁器与缓冲区管理单元标号为178,以及调度器180的虚拟通道指令缓冲区标示为V.C.FIFO 186及187,仲裁器与缓冲区管理单元标号为188。
一般来说,″虚拟通道″是用于在各种处理节点之间传送封包的通讯路径。每个虚拟通道在资源上独立于其它的虚拟通道(亦即,在一个虚拟通道传送的封包,术语称作物理传送,通常并不会受到在另一个虚拟通道中是否有存在封包的影响)。封包基于封包形式而指定给虚拟通道。在该相同的虚拟隧道中的封包物理上可能与彼此的传输相冲突(亦即,在该相同的虚拟通道中的封包可能经历资源冲突),但是物理上可能不会与在不同的虚拟通道中的封包的传输冲突。
某些封包在逻辑上可能与其它封包冲突(亦即,由于通讯协议的原因、相关性的原因或其它此类的原因,其中一个封包可能在逻辑上与另一个封包冲突)。对于逻辑/通讯协议的原因,若第一封包必须在第二封包抵达该封包的目的节点之前抵达本身的目的节点,而该第二封包在物理上阻滞该第一封包的传送(通过占据冲突的资源),则计算机系统可能会停滞。通过指定该第一及第二封包以便分离虚拟通道,以及通过在该计算机系统内实现传送媒介使得在个别的虚拟通道中的封包无法阻滞每个其它封包的传送,可以达成免停滞的操作。需要注意的是来自不同的虚拟通道的封包将通过该相同的物理连结而传送。然而,由于接收缓冲区d发送之前是可以获得的,即使当使用此种共享资源时,该虚拟通道并未彼此阻滞。
从其中一个观点,每种不同的封包形式(例如每种不同的指令编码)可以指定给属于本身的虚拟通道并且因此在一个实施例中,个别的缓冲器分派给每个虚拟通道。由于个别的缓冲器可以使用于每个虚拟通道,来自其中一个虚拟通道的封包可能不会与来自另一个虚拟通道的封包形成物理冲突(由于此类封包将放置于另一个缓冲区中)。
每个调度器对应于特定的目的及对应于两个来源。在该说明的实施例中,调度器160控制以图2的发送器130作为目的与接收器120及外设接口/桥接器150作为来源的处理。同样地,图3的调度器170控制以图2的发送器140作为目的与接收器110及桥接器150作为来源的处理。最后,图3的调度器180控制以图2的桥接器150作为目的与接收器110及接收器120作为来源的处理。在图3中,每个虚拟通道指令缓冲区接收来自个别的接收器或对应于由该个别的接收器或桥接器所接收的处理的桥接器控制指令。控制指令可包含指定该控制指令将会发送至那一个调度器的目的位。通常控制指令将仅具有一个目的位设定。然而,在所述处理为广播消息的事件中,超过一个的目的位将会被设定以允许超过一个的调度器接收该控制指令。
为了简化讨论,将只详细说明调度器160。当控制指令被接收进入V.C.FIFO 166或167时,该指令视处理的形式而被放置于分别的FIFO区段内。由于V.C.FIFO 166及167是相同的,只有V.C.FIFO 166将详细说明。V.C.FIFO 166含有三个分别的FIFO区段,这些区段对应于三种处理形式:宣告(posted)、非宣告(non-posted)、及响应(response)。该控制指令依照所接收的顺序放置于该分别的FIFO内。然而,为了维持相对于可能已经产生该初始的指令的各种总线或组件形式的排序规则,这些处理可能必须在不同的处理形式之间非按序执行。
将于下文结合图4至图6以更详细的描述,仲裁器及缓冲器管理逻辑168可以配置为仲裁那一个处理可以在V.C.FIFO 166或V.C.FIFO 167之间依照第一、第二顺序而处理。例如,在响应指令之前到达于V.C.FIFO 166的宣告指令,由于该排序规则而可能必须在该响应指令之后被处理。此外,仲裁器及缓冲器管理逻辑168亦可以仲裁来自哪一个V.C.FIFO的处理可以基于一组公正性规则及是否在该下一个输入/输出节点或该主桥接器的接收缓冲区内的空间是可以获得的而做处理。若该目的为图2的桥接器150,则该特定的仲裁规则可能不同于上文所描述的仲裁规则。
需要注意的是,上文所描述的说明的实施例为处理控制单元的特定的实现。经由考虑的另一种实施例可包含可执行额外的功能的不同的实现。
参考图4,该图显示调度器的一个实施例的方块图。为了简化及明确起见,对应于图3中所显示的电路组件将标示以相同的附图标号。处理调度器400包含连接至仲裁及公平性逻辑450的虚拟通道FIFO缓冲区410。处理调度器400包含亦连接至仲裁及公平性逻辑450的虚拟通道FIFO缓冲器420。仲裁及公平性逻辑450连接至FIFO缓冲区460,该FIFO缓冲区连接至缓冲管理逻辑470。缓冲处理逻辑的输出由输出寄存器480所闩锁。
如同上文结合图3的描述,每个虚拟通道FIFO缓冲区410及420可接收来自分别的来源输入的控制指令,该来源输入诸如例如图2的接收器110或桥接器150。通过该控制指令所表示的处理形式,该控制指令可以放置于虚拟通道FIFO缓冲区410及420内。尤其,该控制指令可表示不论是宣告、非宣告或响应指令并且因此表示该分别的宣告、非宣告或响应队列。
在说明的实施例中,仲裁及公平性逻辑450包含仲裁单元430与440以及公平性单元445。仲裁单元430可以配置为选择其中一个储存于虚拟通道FIFO缓冲区410内的控制指令。将于下文中更进一步说明的是,该选择程序可包含通过预定的仲裁算法选择其中一个入选者。同样地,通过如同仲裁单元430所使用类似的算法,仲裁单元440可以配置为选择其中一个储存于虚拟通道FIFO缓冲区420内的控制指令。公平性单元445接着可以选择其中一个由仲裁单元430及440所选择的该入选处理。公平性单元445基于是否该处理为前递或注入,而可使用公平性算法。视该调度器的目的,仲裁单元430及440亦可含有在该对应的处理的目的缓冲区中保持追踪缓冲区空间的逻辑(未显示),该目的缓冲区诸如该下一个输入/输出节点的接收缓冲区或在图1的处理器10A的主桥接器中。
在说明的实例中,可能具有三个时钟周期的等待时间以通过调度器400传送控制指令。旁路415及旁路425显示分别绕过虚拟通道FIFO缓冲区410及420。当调度器400接收来自来源的控制指令并且在给定的虚拟通道FIFO缓冲内的每个队列为空的时,则可能有机会通过绕过该虚拟通道FIFO缓冲区以节省时钟周期。例如,非宣告控制指令在虚拟通道FIFO缓冲区410处所接收,该缓冲区目前为空的。若仲裁单元430显示在该处理的目的缓冲区具有可获得的缓冲空间,则在仲裁单元430内的逻辑可允许该非宣告控制指令以绕过虚拟通道FIFO缓冲区410并且实时放置于FIFO缓冲区460内。此外,公平性单元445视如同上所描述的公平性算法而定,可允许该绕道。因此在该上文的例子中,其中一个时钟周期的减少等待时间将可以实现。需要注意的是虽然该说明的实施例显示具有三个时钟周期的等待时间,所考虑的是其它实施例可具有较少的或较多的时钟周期等待时间。此外,由旁路415及425所实现的该实际的等待时间减少可能是更多或更少。
图4的FIFO缓冲区460可接收该入选的控制指令。在该说明的实施例中,FIFO缓冲区460为双延伸(two-deep)缓冲区,然而,所考虑的是在其它实施例中,FIFO缓冲区460可以具有更多或更少的缓冲区位置。
缓冲区处理逻辑470配置为保持在图2的发送器130或140或者在桥接器150中的缓冲区空间的追踪。当处理储存于FIFO缓冲区460中时,缓冲处理逻辑470检查该下一个缓冲区的可取得性并且也将保留该控制指令直到缓冲区空间可以获得或允许该控制指令进行至输出寄存器480。一旦该控制指令已经由输出寄存器480闩锁,该个别的处理来源受到通知,对应于该控制指令的处理可以分别发送到图2的发送器130或140或者发送至桥接器150。
兹参照图5,该图显示一个包含标记逻辑的调度器的一个实施例的方块图。调度器500包含连接至虚拟通道FIFO缓冲区505的标记逻辑510。虚拟通道FIFO缓冲区505包含对应于该三种形式的处理的三个分别的队列,该三种形式的处理为:宣告、非宣告及响应。标记比较/仲裁逻辑单元520连接至虚拟隧道FIFO缓冲区505。此外,该图亦显示虚拟通道FIFO缓冲区505的分解图。该分解图显示每个该非宣告及响应队列具有对应的标记。然而,该宣告队列具有两个标记:每一个分别对应于该非宣告及响应队列。
标记逻辑510在控制指令储存在虚拟通道FIFO缓冲区505之前,可指定标记给每个控制指令。控制指令可以以来自诸如图2的接收器110或桥接器150的来源单元所接收的顺序而指定标记。该标记可以附加于该控制指令。
当控制指令到达在虚拟通道FIFO缓冲区505内的上方位置时,标记比较/仲裁逻辑单元520可以配置为在该三个虚拟通道之间做仲裁以便选取入选的控制指令。入选者使用基于一组排序规则的算法来挑选,该排序规则可符合由连接至该输入/输出节点的外设总线所维持的排序规则。在一项实施例中该排序规则可符合该PCI排序规则。在另一个实施例中,该排序规则可符合AGP排序规则。
在说明的实施例中,由于虚拟通道FIFO缓冲区505可以有16个位置扩展,故该标记可以是四个位。然而,需要注意的是在其它实施例中,虚拟通道FIFO缓冲区505可含有其它数目的位置并且因此该标记可含有对应数目的位。标记逻辑510可包含计数器逻辑(未显示),该计数器逻辑保持已经储存在虚拟通道FIFO缓冲区505的用于该非宣告及响应控制指令的该目前的标记的追踪。若至少其中一个可阻滞的非宣告或响应控制指令是在该目前的宣告控制指令之前并在上一个宣告控制指令之后接收,则当接收到宣告控制指令时,该标记可以依据增加该个别的非宣告或响应计数器的算法而指定。如同在此所使用的,若特殊的位设定于该相对的控制指令而确认该非宣告或响应控制指令在虚拟通道FIFO缓冲区505内将通过宣告控制指令,则非宣告或响应控制指令为可阻滞的。在一项实施例中,该特殊的位称为PassPW位。
为了说明标记算法的使用,表1说明控制指令进入该三个宣告、非宣告及响应队列的接收顺序及标记。该第一栏显示该九个控制指令的接收顺序。该第二栏显示指令所接收的形式。该第三栏显示指定给该非宣告及响应指令的标记,并且该第四及第五栏显示在该等计数器值由宣告控制指令所递增之后的该非宣告及响应指令计数器数值。由于该宣告控制指令接收两个标记,对于该个别的非宣告及响应计数器,该宣告控制指令接收显示于该目前的计数器数值内的标记两者。虚拟通道FIFO缓冲器505的分解图说明表1的该指令如何储存。
表1
接收顺序   控制指令   PassPW位     标记值 非宣告计数器     回应计数器
1   宣告1   0 0     0
2   回应1   0     0 0     0
3   宣告2   0 0     1
4   非宣告1   0     0 0     1
5   回应2   0     1 0     1
6   非宣告2   0     0 0     1
7   宣告3   0 1     2
8   回应3   0     2 1     2
9   非宣告3   0     1 1     2
表2说明PassPW位如何可影响显示于第1表中的该接收的控制指令的标记。若该PassPW位设定为非宣告或响应控制指令,则下一个宣告控制指令将不会增加该相对的计数器。例如,在表2中,该PassPW位设定为响应1,因此当接收到宣告2控制指令时,该响应计数器并未递增。然而,该PassPW位设定为非宣告2,并且该宣告3控制指令造成该非宣告及回应计数器两者递增。这是因为该非宣告1控制指令在该上一个宣告控制指令之后及在该目前的宣告控制指令之前接收到具有该PassPW位清除,因此满足用于递增该计数器的标记规则。需要注意的是虽然该PassPW位描述设定为显示非宣告或响应控制指令可传递宣告控制指令,需考虑的是在其它实施例中该逻辑可以反置。
表2
接收顺序   控制指令   PassPW位     标记值     非宣告计数器     回应计数器
1   宣告1   0     0     0
2   回应1   1     0     0     0
3   宣告2   0     0     0
4   非宣告1   0     0     0     0
5   回应2   0     0     0     0
6   非宣告2   1     0     0     0
7   宣告3   0     1     1
8   回应3   0     1     1     1
9   非宣告3   0     1     1     1
回头参考图5,在仲裁期间,标记比较及仲裁逻辑单元520经由配置而通过比较附属于每个控制指令的标记以选取来自虚拟通道FIFO缓冲区505的入选控制指令。此外,在该标记比较之前,标记比较及仲裁逻辑单元520可确认是否在下一个输入/输出节点处对于每个该虚拟通道具有可获得的缓冲区空间。若任何虚拟的通道为阻滞的,则该通道对于该周期并未参与该仲裁。若所有三个通道对于仲裁为开启时,则该仲裁在该非宣告及响应通道之间以循环(round robin)方式发生并且该宣告通道将分别与该非宣告及响应通道做比较。最后,标记比较及仲裁逻辑单元520可使用公平性算法来决定入选者。该公平性算法结合图6的描述将在下文中做更详细的描述。
兹参考图6,该图显示包含匮乏避免(starvation avoidance)逻辑的处理调度器的一个实施例的方块图。处理调度器600包含连接至仲裁电路450的虚拟通道FIFO缓冲区610。处理调度器600更包含亦连接至仲裁电路450的虚拟通道FIFO缓冲区620。仲裁电路450连接至FIFO缓冲区670,该FIFO缓冲区连接至缓冲处理逻辑680。缓冲处理逻辑的输出由输出寄存器690所闩锁。
类似于上文的图3及图4的说明,每个虚拟通道FIFO缓冲区610及620可接收来自分别的来源输入的控制指令,诸如例如图2的接收器110或桥接器150。该控制指令依据该控制指令所表示的处理的形式可以储存在虚拟通道FIFO缓冲区610及620内。例如,该控制指令可表示宣告、非宣告或响应指令并且因此可以储存在该分别的宣告、非宣告或响应队列内。
在说明的实施例中,仲裁电路650包含仲裁单元630及640,以及公平性电路645。在仲裁周期期间,仲裁单元630及640可以配置为选择分别储存在虚拟通道FIFO缓冲区610及620内的控制指令。此外,公平性电路645将提供可决定那一个仲裁单元630或640将选择该入选者处理的选择条件。如同结合图7的说明而将于下文中更详细的描述,公平性电路645可使用公平性算法以建立仲裁优先权以分配频宽。该公平性算法将视匮乏避免逻辑而定以决定何时何处理已经阻滞持续预定数目的仲裁周期。
兹参照图7,该图显示图6的公平性电路的一个实施例的方块图。公平性电路645包含含有连接至8位计数器705的三十二个三位计数器0至31的公平性单元700。闩锁710连接计数器705。插入速度逻辑715连接至闩锁710。公平性电路645亦包含连接至空闲门限寄存器760的三个虚拟通道计数器755至757的空闲单元750及连接至公平性单元700及空闲单元750的处理选择单元775。
在一个实施例中,每个处理通过该隧道向前传递的时刻,发送该处理的对应于该输入/输出节点的该三位计数器0至31可以递增。此外,计数器705在每个任何的该三位计数器0至31递增的时刻将会增加。当其中一个该三位计数器0至31溢位时,在计数器705中的该数值可以由闩锁710所提取。该提取的值可表示在该特定的时间点处该下行节点的处理的请求速度。插入速度逻辑715接着使用该提取的值可计算对于该节点的允许的插入速度。
处理选择单元775在图6的仲裁单元630或640内可生成指针以指向在仲裁循环期间所考虑的虚拟通道缓冲区。在前递的虚拟通道缓冲区的虚拟通道中以及在插入缓冲区的相同的虚拟通道中都有处理存在的情况可能有多次。在图7中,处理选择单元775依据由公平性单元700所建立的优先权可以另外选择该两个虚拟通道缓冲区。然而在虚拟通道在处理的目的处由于缺乏可获得的缓冲区空间这类因素而形成阻滞的事件中,仲裁逻辑可略过该阻滞的通道并且当仲裁继续时进行至下一个虚拟通道。当该阻滞通道变成可获得时,可能仅对于该前递通道具有可获得的空间并且由于该通道依据公平性算法而具有高于所述插入通道的优先权,来自该前递通道的处理将可以发送。接着当下一个该先前阻滞通道变成可获得时,该通道在该目前的仲裁周期中可能再次不具有优先权并且因此可再次被略过。此种情况可能持续,因此使该插入虚拟通道变得未被充分利用(空闲,starve)。视特定的节点的配置而定,在其它的实施例中,该前递通道亦可能由注入通道因类似的情况而变成未被充分利用。
为了避免给定的通道未被充分利用,空闲单元750可保持对处理被阻滞的次数的追踪。每当处理选择单元775仲裁确定哪一个处理具有资格但是被阻滞时,处理选择单元775使该对应的虚拟通道计数器755至757递增。空闲临界寄存器760保持对应于通道在仲裁期间可能被略过的次数的最大数目的值。储存于空闲临界寄存器760的值在任何时刻视该计算的请求速度而可以动态改变。当任何该虚拟通道计数器755至757符合在空闲临界寄存器中的数值时,该对应的虚拟通道的优先权将可以改变以便处理选择单元775可以使该阻滞的处理在后续的仲裁周期期间被选择。因此,通过动态改变该优先权,特定的通道的空闲可以避免。需要注意的是所描述的该逻辑安排仅是其中一个特例的实现。可考虑的是,在另外的实施例中可以使用包含不同数目的计数器以及在那些计数器中的较多或较少的位的另外的逻辑安排以达到上文所描述的功能。
对于本领域普通技术人员,一旦完全了解上文的披露后,各种改变及修正将变得显而易见。下列的申请专利范围应解释为意在含括所有此类的改变及修正。
虽然本发明容许于各种的修正及替代形式,但本发明的特定的实施例通过在图式中的例子而呈现并且将于此详细描述。然而,应该要了解的是对于该例子的图式及详细描述并非意在限定本发明于所揭露的该特定的形式,而相反地,本发明是在于含括落在由附加的申请专利范围所定义的本发明的精神及范畴内的所有修正、等同及替代。

Claims (10)

1.一种用于计算机系统的输入/输出节点(20、30、40)包括:
配置为接收在第一通讯路径上的第一指令的第一接收器单元(110);
经由连接以发送第一对应的指令的第一发送器单元(140),该指令对应于在第二通讯路径上的该第一指令;
配置为接收在第三通讯路径上的第二指令的第二接收器单元(120);
经由连接以发送第二对应的指令的第二发送器单元(130),该指令对应于在第四通讯路径上的该第二指令;以及
经由连接以接收来自该第一接收器单元(110)与该第二接收器单元(120)的选择的指令及配置为发送对应于该选择的指令的指令于外设总线(152)上的桥接器单元(150)。
2.如权利要求1所述的输入/输出节点更包括经由连接以控制来自该第一通讯路径至该第二通讯路径及至该外设总线(152),以及来自该第三通讯路径至该第四通讯路径及至该外设总线(152)的指令的传送的控制单元(100)。
3.如权利要求2所述的输入/输出节点,其中该控制单元(100)更配置为控制来自该外设总线(152)至该第二通讯路径及该第四通讯路径的指令的传送。
4.如权利要求1、2或3所述的输入/输出节点,其中该桥接器单元(150)更配置为选择性地提供对应于来自该外设总线(152)至该第一发送器单元(140)及该第二发送器单元(130)所接收的指令的指令。
5.如权利要求4所述的输入/输出节点,其中该控制单元(100)更经由配置而基于来自该第一接收器单元(110)、该第二接收器单元(120)及该桥接器单元(150)所接收的多个控制指令以选择性地控制该指令的传送。
6.如权利要求5所述的输入/输出节点,其中每一个该控制指令含有由该第一接收器单元(110)与第二接收器单元(120)及该桥接器单元(150)所接收的子集合的对应的指令。
7.如权利要求5项或第6所述的输入/输出节点,其中该控制单元(100)更配置为通过控制指令总线接收该控制指令。
8.一种计算机系统包括:
一个或一个以上的处理器(10A-D);
连接在一起并且连接至该一个或一个以上的处理器的一个或一个以上的输入/输出节点(20、30、40),每个该输入/输出节点包含:
配置为接收在第一通讯路径上的第一指令的第一接收器单元(110);
经由连接以发送第一对应的指令的第一发送单元(140),该指令对应于在第二通讯路径上的该第一指令;
配置为接收在第三通讯路径上的第二指令的第二接收器单元(120);
经由连接以发送第二对应的指令的第二发送单元(130),该指令对应于在第四通讯路径上的该第二指令;以及
经由连接以接收来自该第一接收器单元(110)与该第二接收器单元(120)的选择的指令及配置为发送对应于该选择的指令的指令于外设总线(152)上的桥接器单元(150)。
9.如权利要求8所述的计算机系统,其中该输入/输出节点更包括经由连接以控制来自该第一通讯路径至该第二通讯路径及至该外设总线(152),以及来自该第三通讯路径至该第四通讯路径及至该外设总线(152)的指令的传送的控制单元(100)。
10.如权利要求9所述的计算机系统,其中该控制单元(100)更配置为控制来自该外设总线(152)至该第二通讯路径及该第四通讯路径的指令的传送。
CNB028199618A 2001-10-15 2002-08-09 计算机系统的输入/输出节点装置 Expired - Lifetime CN1307568C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/978,349 2001-10-15
US09/978,349 US6807599B2 (en) 2001-10-15 2001-10-15 Computer system I/O node for connection serially in a chain to a host

Publications (2)

Publication Number Publication Date
CN1568462A true CN1568462A (zh) 2005-01-19
CN1307568C CN1307568C (zh) 2007-03-28

Family

ID=25526005

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028199618A Expired - Lifetime CN1307568C (zh) 2001-10-15 2002-08-09 计算机系统的输入/输出节点装置

Country Status (8)

Country Link
US (1) US6807599B2 (zh)
EP (1) EP1444587B1 (zh)
JP (1) JP4391819B2 (zh)
KR (1) KR100968250B1 (zh)
CN (1) CN1307568C (zh)
DE (1) DE60226167T2 (zh)
TW (1) TW588250B (zh)
WO (1) WO2003034239A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6834319B1 (en) * 2002-03-21 2004-12-21 Advanced Micro Devices, Inc. Tunnel device for an input/output node of a computer system
US7315912B2 (en) * 2004-04-01 2008-01-01 Nvidia Corporation Deadlock avoidance in a bus fabric
US7430622B1 (en) * 2005-01-18 2008-09-30 Advanced Micro Devices, Inc. Extended fairness arbitration for chains of point-to -point devices having multiple virtual channels
US8223650B2 (en) * 2008-04-02 2012-07-17 Intel Corporation Express virtual channels in a packet switched on-chip interconnection network
US8392667B2 (en) * 2008-12-12 2013-03-05 Nvidia Corporation Deadlock avoidance by marking CPU traffic as special
US8225052B2 (en) 2009-06-03 2012-07-17 Micron Technology, Inc. Methods for controlling host memory access with memory devices and systems
US8495271B2 (en) * 2010-08-04 2013-07-23 International Business Machines Corporation Injection of I/O messages
US20120036302A1 (en) 2010-08-04 2012-02-09 International Business Machines Corporation Determination of one or more partitionable endpoints affected by an i/o message
US8549202B2 (en) 2010-08-04 2013-10-01 International Business Machines Corporation Interrupt source controller with scalable state structures
US9336029B2 (en) 2010-08-04 2016-05-10 International Business Machines Corporation Determination via an indexed structure of one or more partitionable endpoints affected by an I/O message
US9824058B2 (en) * 2014-11-14 2017-11-21 Cavium, Inc. Bypass FIFO for multiple virtual channels
US11734155B2 (en) * 2021-07-22 2023-08-22 Disney Enterprises, Inc. Fully traceable and intermediately deterministic rule configuration and assessment framework

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5751951A (en) 1995-10-30 1998-05-12 Mitsubishi Electric Information Technology Center America, Inc. Network interface
US5809328A (en) 1995-12-21 1998-09-15 Unisys Corp. Apparatus for fibre channel transmission having interface logic, buffer memory, multiplexor/control device, fibre channel controller, gigabit link module, microprocessor, and bus control device
US6278532B1 (en) 1996-12-20 2001-08-21 Link2It Apparatus and method for reception and transmission of information using different protocols
JP2970596B2 (ja) 1997-06-10 1999-11-02 日本電気株式会社 Atm通信装置
JPH1185345A (ja) 1997-09-02 1999-03-30 Toshiba Corp 入出力インターフェース回路及び半導体システム
US6005849A (en) * 1997-09-24 1999-12-21 Emulex Corporation Full-duplex communication processor which can be used for fibre channel frames
JPH11143847A (ja) * 1997-11-10 1999-05-28 Fujitsu Ltd データ処理装置
US6691185B2 (en) * 2001-07-13 2004-02-10 Sun Microsystems, Inc. Apparatus for merging a plurality of data streams into a single data stream
US6697890B1 (en) * 2001-12-27 2004-02-24 Advanced Micro Devices, Inc. I/O node for a computer system including an integrated I/O interface

Also Published As

Publication number Publication date
EP1444587A1 (en) 2004-08-11
WO2003034239A1 (en) 2003-04-24
KR100968250B1 (ko) 2010-07-06
KR20040054722A (ko) 2004-06-25
JP2005505855A (ja) 2005-02-24
TW588250B (en) 2004-05-21
EP1444587B1 (en) 2008-04-16
CN1307568C (zh) 2007-03-28
JP4391819B2 (ja) 2009-12-24
US6807599B2 (en) 2004-10-19
DE60226167D1 (en) 2008-05-29
DE60226167T2 (de) 2009-05-14
US20030097514A1 (en) 2003-05-22

Similar Documents

Publication Publication Date Title
US5301333A (en) Tree structured variable priority arbitration implementing a round-robin scheduling policy
US8458267B2 (en) Distributed parallel messaging for multiprocessor systems
US7684431B1 (en) System and method for arbitration in a packet switch
EP0391583B1 (en) Dual-path computer interconnect system with four-ported packet memory control
US7430622B1 (en) Extended fairness arbitration for chains of point-to -point devices having multiple virtual channels
EP1895430B1 (en) Arbiter, crossbar, request selection method and information processing device
CN1787490A (zh) 交换组构网络的分组处理
CN1568462A (zh) 计算机系统的输入/输出节点
CN1311374C (zh) 计算机系统的输入/输出节点标识命令的装置及方法
CN1608256A (zh) 使用多个消息组的计算机系统中的代理之间的通信消息请求事务类型
EP2406723A1 (en) Scalable interface for connecting multiple computer systems which performs parallel mpi header matching
CN1608255A (zh) 使用包括扩展类型/扩展长度字段的分组头部的计算机系统中的代理之间的通信事务类型
US7383336B2 (en) Distributed shared resource management
US20230401117A1 (en) Automatically optimized credit pool mechanism based on number of virtual channels and round trip path delay
US6681274B2 (en) Virtual channel buffer bypass for an I/O node of a computer system
US6721816B1 (en) Selecting independently of tag values a given command belonging to a second virtual channel and having a flag set among commands belonging to a posted virtual and the second virtual channels
US20100002716A1 (en) Switching method
CN1324499C (zh) 处理不期望的完成分组和具有非成功完成状态的完成分组的方法
US7218638B2 (en) Switch operation scheduling mechanism with concurrent connection and queue scheduling
EP1089501B1 (en) Arbitration mechanism for packet transmission
CN114968866A (zh) 优先级分组轮询仲裁器及其仲裁方法、交叉开关和芯片
US6839784B1 (en) Control unit of an I/O node for a computer system including a plurality of scheduler units each including a plurality of buffers each corresponding to a respective virtual channel
WO1999059048A9 (en) Transpose table biased arbitration scheme
US6820151B2 (en) Starvation avoidance mechanism for an I/O node of a computer system
US7047284B1 (en) Transfer request bus node for transfer controller with hub and ports

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
CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20070328