CN1311374C - 计算机***的输入/输出节点标识命令的装置及方法 - Google Patents

计算机***的输入/输出节点标识命令的装置及方法 Download PDF

Info

Publication number
CN1311374C
CN1311374C CNB028199626A CN02819962A CN1311374C CN 1311374 C CN1311374 C CN 1311374C CN B028199626 A CNB028199626 A CN B028199626A CN 02819962 A CN02819962 A CN 02819962A CN 1311374 C CN1311374 C CN 1311374C
Authority
CN
China
Prior art keywords
control command
channel
public
buffer
issued transaction
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.)
Expired - Fee Related
Application number
CNB028199626A
Other languages
English (en)
Other versions
CN1568464A (zh
Inventor
S·C·恩尼斯
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.)
GlobalFoundries 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 CN1568464A publication Critical patent/CN1568464A/zh
Application granted granted Critical
Publication of CN1311374C publication Critical patent/CN1311374C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • 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

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)
  • Bus Control (AREA)

Abstract

一种计算机***输入/输出节点的标识及仲裁机制,它包括可设定接收多个控制命令的标识电路,该标识电路亦可设定为各个控制命令产生标识值。该标识机制可包含与标识电路相连的缓冲电路。该缓冲电路可包括多个缓冲区,其中每个缓冲区与用以存储各自虚拟信道相关的控制命令的多个虚拟信道中的某一虚拟信道相对应。该标识机制可进一步包括与缓冲电路相连的仲裁电路并且将其设定为可依据各个控制命令的标识值在多个缓冲区之间做仲裁。

Description

计算机***的输入/输出节点标识命令的装置及方法
技术领域
本发明涉及计算机***的输入/输出(I/O),特别是与I/O节点中的事务处理(transaction)操作有关。
背景技术
在典型的计算机***中,单个或多个处理器可通过单个或多个总线与输入/输出(I/O)设备通信。I/O设备可通过I/O桥接器与处理器连接,此桥接器负责管理与I/O设备相连的***总线及与处理器相连的共享总线间的信息传输。此外,该I/O桥接器可管理***内存与I/O设备间或***内存与处理器间的信息传输。
不幸的是,许多的总线***都有几个缺点。例如,将多个设备连接到总线会使总线上的设备驱动信号呈现很大的电容值。另外,共享总线上的多个连接点会在高的信号频率下产生降低信号完整性的信号反射。因此,为了使信号完整性维持在可接受的水平,总线上的信号频率不能太高。这种相对较低的频率减少了信号的带宽,也限制了与总线相连的设备的性能。
大量设备的资源缺乏是共享总线的另一项不利条件。共享总线的可用带宽是固定的(加入额外的装置还会导致总线上信号频率降低,从而使带宽减少)。一旦与总线相连的设备(不论直接或间接)的带宽需求超出总线的可用带宽时,设备对总线的访问请求经常会被延迟,使用共享总线的计算机***的整体性能很可能会降低。一个I/O设备使用共享总线的例子是外部设备互连(PCI)总线。
许多I/O桥接设备利用缓冲技术将数个待处理事务处理自PCI总线缓冲至最终目标总线。然而缓冲会在PCI总线上产生延迟。当一连串的事务处理缓冲于队列中并等待传输至目标总线,而目标总线上发生延迟时,会使发送进度停顿下来。然后,能够让那些等待中的事务处理继续完成的事务处理进入队列并被储存在其它事务处理之后。要解开延迟,必须设法让队列中待传输的事务处理重新排序以使新来的请求优先传输事务处理。为了避免出现这种情形,PCI总线规范规定了一套重新排序的规定,以管理PCI总线事务处理。
要克服共享总线的缺点,某些计算机***在设备或节点(node)之间采用基于包交换的通信方式。在这些***中,节点间通过交换信息包的方式互相通信。一般而言,节点是一种能够参与互连上事务处理的设备。例如,该互连可以包交换为基础,而该节点可设定成能够接收与传输数据包。一般来说,″数据包″是两节点间的一种信息交流:起始或″源″节点负责传输数据包而终点或″目标″节点负责接收数据包。当一个数据包到达目标节点,该节点接受数据包传递的信息并在节点内对信息进行处理。位于源节点与目标节点间通信路径上的节点可将源节点的数据包中继或转递(forward)至目标节点。
此外,有些***将基于包交换的通信与基于总线的通信结合起来使用。例如,***可连接至PCI总线及图形总线如加速图形端口(AGP)。PCI总线会连接至数据包总线接口,它可将PCI总线事务处理转换成数据包事务处理以便在数据包总线上传输。图形总线也同样会连接至AGP接口,其可将AGP事务处理转换成数据包事务处理。各个接口会和与某个处理器或特定情况下为其它***设备相连的主机桥接器通信。
当PCI设备初始化事务处理时,基于包交换的事务处理会受到PCI局部总线规范中同样的排序法则的限制。同样的情况亦适用于PCI总线预定的数据包事务处理中。此类的排序法则在基于包交换的事务处理中同样适用,因为发生在数据包总线接口上的事务处理延迟可能在该数据包总线上造成死锁。这种死锁会进一步在原本的数据包总线结构中产生延迟。此外,AGP事务处理会遵循一套事务处理排序法则以确保数据传递的正确。
根据I/O节点的设定,事务处理不论是朝向或远离主机桥接器皆可在节点与节点中做转递。或者,事务处理会在特定节点注入(injected)到数据包流内。不论何种情况,都需要在事务处理沿着通信路径(communication path)发送时能控制事务处理的I/O节点结构。
发明内容
揭示了有关计算机***的输入/输出节点的各种标识(tagging)与仲裁机制实施例。在一个实施例中,在计算机***输入/输出节点中的标识命令机制包含了一个其设定为可接收多个控制命令的标识电路。该标识电路也可设定产生各个控制命令的标识值。该标识机制可包含与标识电路相连的缓冲电路(buffer circuit)。该缓冲电路可包含多个缓冲区,它们分别对应于多个虚拟信道中某个信道以便储存各个虚拟信道所选取的属于自己的控制命令。该标识机制可进一步包含与缓冲电路相连的仲裁电路(arbitration circuit),其设定为可在多个缓冲区间依据标识值为各个控制命令做仲裁。
在一个具体的实施例中,各个控制命令的标识值是每个控制命令相对于其它控制命令为标识电路所接收的顺序的指示数值。大部份的虚拟信道包含***道(posted channel)、非***道(non-postedchannel)及响应信道(response channel)。标识电路可设定为利用关于响应信道的计数器当前值(current value)及关于非***道的计数器当前值为各个控制命令产生标识值。
在另一个实施例中,该标识电路可设定将关于响应信道的计数器当前值所对应的标识值指定给各个关于响应信道的控制命令。该标识电路还可设定将关于非***道的计数器当前值所对应的标识值指定给各个关于非***道的控制命令。该标识电路还可设定将关于响应信道的计数器当前值所对应的标识值及与关于非***道的计数器当前值所对应的标识值指定给各个关于***道的控制命令。该标识电路可设定为对关于各个非公开与响应信道的计数器做递增,这种递增是对接收了关于***道的控制命令的标识值的响应,控制命令之前加上了分别关于非公开及响应命令的控制命令。
在另一个实施例中,该仲裁电路可设定为比较指定给储存于与***道及非***道相对应的缓冲区中的控制命令的标识值,以判断这两个标识值是否相等。当标识值相等时,仲裁电路处理对应于***道的缓冲区中储存的控制命令,当标识值不等时,仲裁电路处理对应于非***道的缓冲区中储存的控制命令。
在另一个实施例中,该仲裁电路可设定为比较指定给储存于与***道及响应信道相对应的缓冲区中的控制命令的标识值,以判断这两个标识值是否相等。当标识值相等时,仲裁电路处理对应于***道的缓冲区中储存的控制命令,当标识值不等时,仲裁电路处理对应于响应信道的缓冲区中储存的控制命令。
本发明容易受到不同修改与复本的影响,特定实施例在附图中以范例的方式给出并在此详述。但是必须理解的是,此处的附图与详细说明并无意将本发明限制在所揭示的特定型态之下,正好相反的的是,其用意在涵盖所有的符合所附的申请专利范围的精神与领域的实施例、同义物与其它可选择方案。
附图说明
图1为一个计算机***实施例的方框图。
图2为一个I/O节点实施例的方框图。
图3为一个事务处理控制单元实施例的方框图。
图4为一个调度程序(scheduler)实施例的方框图。
图5为一个包含标识逻辑的调度程序实施例的方框图。
图6为一个包含饥饿回避逻辑(starvation avoidance logic)的事务处理调度程序实施例的方框图。
图7为一个公正电路(fairness circuit)实施例的方框图。
具体实施方式
图1显示了一个计算机***实施例的方框图。该计算机***包含处理器10A-D,通过关联数据包总线(coherent packet bus)15相连。关联数据包总线15的各个区域可在各个处理器10A-D间形成点对点连结。当图中显示的四个处理器利用点对点连结时,应注意可以使用其它数量的处理器及使用其它类型的总线将它们互连在一起。该计算机***还包含三个代号为20、30及40的I/O节点,分别由I/O数据包总线50B和50C连接成链状。I/O数据包总线50A连接主机节点/处理器10A及I/O节点20。处理器10A可视为主机节点,它可包含与I/O数据包总线50A通信的主机桥接器。处理器10B-D还可包含与其它I/O数据包总线(未显示)通信用的主机桥接器。由I/O封包总线50A-C所形成的通信连接也可视为点对点连结。I/O节点20连接到一对***总线25A-B。I/O节点30连接到图形总线35,同时I/O节点40连接至额外***总线(additional peripheral bus)45。
处理器10A-D分别以类似AthlonTM微处理器的x86微处理器为例。另外,一个类似I/O数据包总线50A至50C的数据包总线范例为非关联超传输TM(HyperTransportTM)。***总线25A-B及***总线45以类似PCI总线的通用总线为例。图形总线35以AGP总线为例。但是必须理解的是,其它型号的微处理器及其它类型的***总线也可使用。
应注意当图中显示的是三个I/O节点连接至主机处理器10A时,其它实施例可以使用其它数量的节点且这些节点可以其它的拓扑结构相连。图1中举出链状拓扑结构是便于大家理解。
在举出的实施例中,处理器10A的主机桥接器可接收来自I/O节点20、30或40一类下游节点向上传输的事务处理。另外,处理器10A的主机桥接器可将数据包向下传送至可连接到***总线25A的***设备(未显示)一类的设备中。
在操作中,I/O节点20及40可将PCI总线事务处理转换为在I/O流中移动的上游数据包事务处理中,并同时将下游数据包事务处理转换成PCI总线事务处理。所有源自处理器10的主机桥接器以外的节点的数据包在被转递到其它任意节点之前会先向上传输至处理器10A的主机桥接器。所有源自处理器10A的主机桥接器的数据包会向下传输至其它I/O节点,如节点20、30或40。此处所使用的″上游″指流向处理器10A的主机桥接器的数据包流,而″下游″指流向远离处理器10A的主机桥接器的数据包流。每个I/O流可通过名为单元ID(Unit ID)的识别码加以识别。单元ID可以想象成数据包报头的一部份或是数据包或数据包组中其它一些指定数量的位。这里使用的″I/O流″可视为所有包含相同单元ID而源自相同节点的数据包事务处理。
下面举一个***总线45上的***设备向***总线25上的***设备开始一个事务处理的例子。该事务处理会先转换成具有独特单元ID的单一或多个数据包并向上传输。要注意每个数据包可利用能识别数据包的特定信息加以编码。例如该单位ID可编码至数据包报头中。此外,该事务处理的类型也可编码至数据包报头中。每个数据包要指定一个可识别其源节点的单位ID。因为I/O节点20可能不会将数据包自下游传输到***总线25上的***设备中,该数据包会向上传输到处理器10A的主机桥接器中。接着,处理器10A的主机桥接器会将数据包加上处理器10A的主机桥接器的单位ID并传送回下游直到I/O节点20为***总线25上的***设备识别并申请该数据包。I/O节点20接着会将数据包转换成***总线事务处理,并将事务处理传送至***总线25上的***设备中。
当数据包事务处理向上或向下传输时,该数据包会通过一个或多个I/O节点。所谓通过有时可视为一种通道而I/O节点有时可视为一种通道设备。自上向下或者自下向上传输的数据包可视为″转递″流量(forwarded traffic)。此外,源自特定I/O节点并且***至上游流量中的数据包流量可视为″注入″流量(injected traffic)。
详述如下,要维持各种连接至I/O节点的总线的排序规则,I/O节点提供数据包缓冲的同时还要提供事务处理再排序。该I/O节点还可包含控制逻辑以控制同时通过转递与注入流量而进出通道的数据包流量。
图2显示了一个I/O节点实施例的方框图。该I/O节点代表了图1中的I/O节点20、30或40并为求简便此后皆视为I/O节点20。图2的I/O节点20包含一个事务处理接收器(transaction receiver)110,它通过命令总线(command bus)111与发送器(transmitter)140相连接,并通过命令总线112与***接口(peripheral interface)150相连接。I/O节点20还包含一个事务处理接收器120,它通过命令总线121与发送器130相连接,并通过命令总线122与***接口150相连接。***接口150还通过命令总线151与发送器130及140相连接,并与***总线152相连接。此外,I/O节点20包含一个事务处理控制单元100,它通过控制命令总线101与每个接收器、发送器及***接口相对应。于此处所使用的,命令总线即包括命令、控制及资料信号。因此,当事务处理或命令被要求送至个别的命令总线时意指包括命令及数据位。
在图示的实施例中,接收器110及发送器140形成I/O通道的一条通信路径而接收器120及发送器130形成I/O信道的第二条通信路径。由于各通信路径皆为单向的,任一条路径皆可能连接作为上游或下游路径。所以,来自***接口150的注入流量可提供给发送器130及140。
接收器110及120分别将数据包事务处理接收到接收缓冲器(未显示)中。当一个事务处理被接收后,会产生一个控制命令,它包含接收到的命令所包含的信息的一个子集。例如,该控制命令可包含源节点的单元ID、目的信息(destination information)、数据总数及事务处理类型。要注意该控制命令可能会包含其它信息或未包含某些此处所列出的信息。该控制命令会传送至事务处理控制单元100。
为响应***接口150从***总线152接收事务处理,***接口150也可产生控制命令,它包含与前述控制命令类似的信息。***接口150也可将事务处理储存在一个或多个缓冲区中,并将控制命令传送至事务处理控制单元100。
事务处理控制单元100可将每个接收到的控制命令以接收到的顺序存储到一个或多个缓冲结构中。依据事务处理控制单元100储存在其缓冲区中的控制命令,事务处理控制单元100可决定在源缓冲区(source buffer)(也就是接收器及/或***接口)中等待的对应命令的发送顺序。下面结合图3至图6加以详述,事务处理控制单元100可根据如事务处理类型的因素在其缓冲区中的事务处理间做仲裁,不管发送器或目的地中是否有可用缓冲空间存在,也不管事务处理为转递流量或注入流量。因此事务处理控制单元100可负责通过I/O节点的通道的事务处理的全部流量。
一旦事务处理控制单元100仲裁了要处理那一个事务处理的后,事务处理控制单元100会指示它的源设备发送一个未决事务处理到目标设备。例如,事务处理控制单元100自其缓冲区中选取一个代表事务处理自接收器110转递至发送器140的控制命令。事务处理控制单元100通过命令总线111通知接收器110将事务处理送至发送器140。发送器140接着将事务处理发送到链接中的下一个节点。下一个节点可能为另一个属于上游或下游的I/O节点,或者是图1中的主机处理器10A一类的主机节点。另外,事务处理控制单元100及发送器140可包括能告知另一个节点接收缓冲区中是否有可用空间的逻辑电路(未显示)。
图3显示了一个事务处理控制单元实施例的方框图。与图2中相同的电路组件皆用同样的数字标示以求简单明确。事务处理控制单元100包含分别标识为160、170及180的三个调度程序。任一调度程序160、170及180包含一对的虚拟信道命令缓冲区及一个仲裁器与缓冲器管理单元。调度程序160的虚拟信道命令缓冲区标识为虚拟信道先进先出存储器(V.C.FIFO)166及167,而仲裁器与缓冲器管理单元编号为168。同样地,调度程序170的虚拟信道命令缓冲区标识为V.C.FIFO176及177,而仲裁器与缓冲管理单元编号为178,调度程序180的虚拟信道命令缓冲区标识为V.C.FIFO 186及187,而仲裁器与缓冲管理单元编号为188。
一般而言,″虚拟信道(virtual channel)″为在不同的处理节点间传送数据包的通信路径。各个虚拟信道皆与其它虚拟信道的资源互相独立(resource-independent)(也就是说,在物理传送方面,在一个虚拟信道中流动的数据包一般不会受到另一个虚拟信道中数据包存在与否的影响)。数据包基于它的种类指定给某个虚拟信道。在相同虚拟信道中数据包彼此可能会发生物理冲突(也就是,在相同虚拟信道中的数据包可能会经历资源冲突),但不会与不同虚拟信道中数据包的传输产生物理冲突。
某些数据包可能与其它数据包发生逻辑冲突(也就是说,基于通信协议的原因、连贯性的原因或其它类似的原因,一个数据包可能与另一个数据包发生逻辑冲突)。若第一个数据包,基于逻辑或通信协议的原因,必须在第二个数据包抵达其目的节点之前先到达其目的节点,若第二个数据包物理上阻塞了(通过占用冲突资源)第一个数据包的传输则计算机***有可能会产生死锁。通过将第一个数据包与第二个数据包指定给分离的虚拟信道,并让计算机***上的传输媒体实现分离的虚拟信道中的数据包无法挡住彼此的传输,便可达成死锁解除(deadlock-free)工作。要注意的是来自不同虚拟信道的数据包是在相同的物理链接上传输。然而,由于接收缓冲器在发送前是可利用的,即便使用这种共享资源也不会导致虚拟信道互相阻塞。
从一个观点来看,每个不同的数据包类型(例如,命令编码各有不同)可指定给其专属的虚拟信道,因此在一个实施例中,分离的缓冲区分配给每个虚拟信道。因为分离的缓冲区可用于每个虚拟信道中,来自一个虚拟信道的数据包并不会与来自另一个信道的数据包产生物理冲突(因为这些数据包会放置在其它缓冲区中)。
每个调度程序对应于一个特定的目的及两个源。在图示的实施例中,调度程序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区域对应于三种事务处理:公开的、非公开的及响应的。控制命令依照他们被接收到的顺序置入各自的FIFO中。然而,要维护与可能产生原始命令的不同的总线或不同类型的设备相结合的排序法则,事务处理可能必须在不同类型的事务处理间做无序处理。
结合图4至图6详述如下,仲裁器与缓冲器管理逻辑168可设定来仲裁在V.C.FIFO 166或V.C.FIFO 167内的事务处理中哪个事务处理要第一个处理、第二个处理等等。例如在响应命令之前抵达V.C.FIFO 166的公开命令由于排序法则的缘故可能必须在响应命令后才能做处理。此外,仲裁器与缓冲器管理逻辑168还可根据一套公正法则及下一个I/O节点或主机桥接器的接收缓冲区中是否有可用空间来仲裁来自哪一个V.C.FIFO的事务处理可以进行处理。若目的为图2的桥接器150,特定的仲裁法则可能会与上述的仲裁法则不同。
图4显示了一个调度程序实施例的方框图。与图3中相同的电路组件皆用同样的数字标示以求简单明确。事务处理调度程序400包括与仲裁和公正逻辑450相连的虚拟信道FIFO缓冲区410。事务处理调度程序400还包括也与仲裁与公正逻辑450相连的虚拟信道FIFO缓冲区420。仲裁与公正逻辑450连接至与缓冲管理逻辑470相连的FIFO缓冲区460。缓冲管理逻辑的输出被输出缓冲器480锁存。
如上结合图3所述,各个虚拟信道FIFO缓冲区410及420可从各自的来源输入接收控制命令,例如,图2中的接收器110或桥接器150。控制命令可依据控制命令所代表的事务处理类型放置于虚拟信道FIFO缓冲区410与420中。特别是,控制命令可代表公开、非公开或响应命令,因而可储存在各个公开、非公开或响应队列中。
在图示的实施例中,仲裁与公正逻辑450包含仲裁单元430与440及公正单元445。仲裁单元430可设定为可选取一个储存于虚拟信道FIFO缓冲区410中的控制命令。详述如下,该选择程序包括利用预仲裁算法(predetermined arbitration algorithm)选取一个胜出者(winner)。同样地,仲裁单元440可设定为采用与仲裁单元430相同的算法选取一个储存于虚拟信道FIFO缓冲区420中的控制命令。公正单元445可接着选取一个由仲裁单元430及440所选取的胜出事务处理。公正单元445可采用基于事务处理是转递还是注入来判决的公正算法。根据调度程序的目的,仲裁单元430与440还可包含用来追踪对应的事务处理的目的缓冲区的缓冲区空间的逻辑(未显示),如图1中下一个I/O节点的或在处理器10A的主机桥接器中的接收缓冲区。
在图示的实施例中,通过调度程序传播控制命令可能需要三个潜在的时钟周期。旁路415和旁路425分别围绕着虚拟信道FIFO缓冲区410和420显示。当调度程序400自源接收到控制命令且给定的虚拟信道FIFO缓冲区上的每个队列为空时,便有可能采用将虚拟信道FIFO缓冲区旁路的方式节约一个时钟周期。例如,在当前为空的虚拟信道FIFO缓冲区410上接收非公开控制命令。仲裁单元430上的逻辑可允许非公开控制命令将虚拟信道FIFO缓冲区410旁路,并且若仲裁单元430指出在事务处理的目的缓冲区中有可用的缓冲器空间,便立刻将非公开命令放入虚拟信道FIFO缓冲器460中。此外,公正单元445会根据上面所描述的公正算法授权此一旁路动作。通过上述范例可以看出节约一个时钟周期的潜在可能。要注意虽然图示的实施例显示了三个潜在的时钟周期,可以想象在其它的实施例中可能会有更少或更多的潜在时钟周期。此外,由旁路415及425所节约的实际潜伏时钟周期有可能更大或更小。
图4的FIFO缓冲区460可接收胜出的控制命令。在图示的实施例中,FIFO缓冲区460为一个双深度缓冲区(two-deep buffer),然而,可以想象的是在其它实施例中,FIFO缓冲区460可能会有更多或更少的缓冲区位置。
缓冲管理逻辑470是设定用来追踪图2中发送器130或140或桥接器150内的缓冲区空间。当事务处理储存在FIFO缓冲区460中时,缓冲管理逻辑470检查下一个缓冲区的可利用性,并保持控制命令直到缓冲区空间可以使用或允许其进入输出寄存器480。一旦控制命令已被输出寄存器480锁存,各个事务处理来源会分别被告知与控制命令相对应的事务处理可传送至图2的发送器130或140或桥接器150。
图5显示了一个包含标识逻辑的调度程序实施例的方框图。调度程序500包括一个与虚拟信道FIFO缓冲区505相连的标识逻辑501。虚拟信道FIFO缓冲区505包括三个分离的队列以对应于三种事务处理:公开、非公开与响应。标识比较/仲裁逻辑单元520与虚拟信道FIFO缓冲区505相连。此外还显示了虚拟信道FIFO缓冲区505的部分分解图。此部分分解图显示每个非公开与响应队列都有一个对应的标识。公开队列却有两个标识:分别对应于非公开与响应队列。
标识逻辑510可在每个控制命令储存到虚拟信道FIFO缓冲区505之前给它指定一个标识。控制命令可以根据它从图2中的接收器110或桥接器150之类的来源被接收到的顺序来指定标识。该标识可附加至控制命令。
当控制命令到达虚拟信道FIFO缓冲区505的顶端时,标识比较/仲裁逻辑单元520可设定成在三个虚拟信道间作仲裁以选出胜出的控制命令。胜出者是通过基于一系列排序法则的算法挑选出来的,这些排序法则对应于由连接到I/O节点的***总线负责维护的排序法则。在一个实施例中排序法则可能与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会辨别在各个虚拟信道的下一个I/O节点中是否有可用的缓冲区空间。若有任何的虚拟信道被阻断了,则该信道在本周期中不能参与仲裁。若三个信道皆可以做仲裁,则仲裁在非公开与响应信道之间以循环方式(round robin fashion)进行,而***道则与非***道及响应信道作个别比较。最后,标识比较与仲裁逻辑单元520会利用公正算法来决定胜出者。公正算法将结合图6的叙述在下面做更详细的叙述。
图6显示了一个包含饥饿回避逻辑的事务处理调度程序实施例的方框图。事务处理调度程序600包括一个与仲裁电路650相连的虚拟信道FIFO缓冲区610。事务处理调度程序600还包括同样与仲裁电路650相连的虚拟信道FIFO缓冲区620。仲裁电路650连接至与缓冲管理逻辑680相连的FIFO缓冲区670,。该缓冲管理逻辑的输出为输出寄存器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相连的3位计数器0-31的公正单元700。锁存器710与计数器705相连。***比率逻辑(insertionrate logic)715与锁存器710相对应。公正电路645亦包含一个饥饿单元750,它包含三个与饥饿定限寄存器(starvation thresholdregister)760相连的虚拟信道计数器755-757以及与公正单元700及饥饿单元750相连的事务处理选择单元775。
在一个实施例中,每次事务处理经由通道转递时,与传送事务处理的I/O节点相对应的3位计数器0-31会递增。另外,计数器705在3位计数器0-31每次递增时也会递增。当其中一个3位计数器0至31溢出时,锁存器710会捕获计数器705中的值。捕获到的值代表了该特定时间点的下游节点事务处理请求率。***比率逻辑715接着会利用捕获到的值来计算该节点的容许***率。
事务处理选取单元(transaction selection unit)775可在图6的仲裁单元630或640中引发一个指针以指向在仲裁周期中要考虑的虚拟信道缓冲区。在转递后的虚拟信道缓冲区的虚拟信道中以及在***缓冲区的相同虚拟信道中都有事务处理存在的情况会多次发生。在图7中,事务处理选择单元775会依据公正单元700所建立的优先权从两个虚拟信道缓冲区选择一个。然而在虚拟信道因为事务处理的目的中缺少足够的可用缓冲区空间一类的原因而遭到阻断的情况下,仲裁逻辑会略过遭阻断的信道并前往下一个虚拟信道让仲裁得以继续。当遭阻断的信道变成可利用时,将只会有供转递后的信道使用的空间且因为其依据公正算法可能会有大于***的信道的优先权,来自转递后信道的事务处理便可送出。接着下次前一个遭阻断的信道变成可以使用的,其在此仲裁周期中便会再一次的没有优先权,且因此会再次被略过。此状况会持续,因而使***的虚拟信道″饥饿(starve)″。根据特定节点上的设定,可以想象在其它的实施例中,转递后的信道亦会因相同的情况由***的信道而产生饥饿。
要避免给定的信道发生饥饿,饥饿单元750会追踪事务处理被阻断的次数。每当事务处理选择单元775决定某个事务处理合乎进行仲裁的资格但该事务处理却遭到阻断时,事务处理选择单元775会使对应的虚拟信道计数器755-757做累加。饥饿定限寄存器760保存了信道在仲裁过程中被略过的最大次数相对应的值。储存在饥饿定限寄存器760中的值会依据在任意给定时间点上计算的需求率做动态的改变。当任意的虚拟信道计数器755-757符合饥饿定限寄存器中的值时,对应的虚拟信道的优先权会改变,如此一来在紧接着的仲裁周期中事务处理选择单元775会选取遭阻断的事务处理。因此,通过动态的改变优先权,特定信道的饥饿便可以加以避免了。要注意上述的逻辑安排仅为一个具体的实现。可以想象的是,其它的实施例有可能使用含有不同数目的计数器或不同位数的计数器的其它逻辑安排以达成上述的功能。
亦应注意的是上述图示的实施例为调度程序的具体实现。可以想象的是其它实施例可能包括表现出额外及/或不同的功能的其它实现方法。
一旦完全理解了上述公开的内容,本领域的普通技术人员很容易对本发明做变化或者修改。下面的权利要求意在包括这些变化与修改。

Claims (9)

1.一种计算机***的输入输出节点标识命令的装置,上述装置包含:
一个标识电路(510),设定用来接收多个控制命令,每一个包含各自在输入输出节点接收到的事务处理里的信息子集,还可用来为每个上述控制命令产生标识值;
一个缓冲电路(505),连接到上述标识电路,且该缓冲电路包含多个缓冲区,分别对应于多个虚拟信道的某一虚拟信道,用以储存属于该虚拟信道的控制命令,其中的多个虚拟信道包含***道、非***道和响应信道;以及
一个仲裁电路(520),连接到上述的缓冲电路,设定成根据上述各个控制命令的标识值在多个缓冲区之间做仲裁;
这里的标识电路可进一步设定利用与上述响应信道相关的计数器当前值及与上述非***道相关的计数器当前值为每个控制命令产生标识值;并将关于响应信道的计数器当前值对应的标识值及关于非***道的计数器当前值对应的标识值指定给关于***道的控制命令。
2.如权利要求1所述的装置,其中所述的控制命令的标识值是上述每个控制命令相对于其它控制命令为标识电路所接收的顺序的指示数值。
3.如权利要求2所述的装置,其中所述标识电路可进一步设定将关于所述响应信道的计数器当前值所对应的标识值指定给每一个关于响应信道的控制命令。
4.如权利要求1所述的装置,其中所述标识电路可进一步设定将关于所述响应信道的计数器当前值所对应的标识值指定给每一个关于响应信道的控制命令。
5.如权利要求1至4中任一项所述的装置,其中所述标识电路可进一步设定将关于所述非***道的计数器当前值所对应的标识值指定给每一个关于非***道的控制命令。
6.如权利要求5所述的装置,其中所述标识电路可进一步设定根据标识电路接收到关于***道的控制命令而对非公开和响应信道相关的计数器进行递增,前提是在控制命令之前分别有与非公开和响应相关的控制命令。
7.如权利要求1至4中任一项所述的装置,其中所述标识电路可进一步设定根据标识电路接收到关于***道的控制命令而对非公开和响应信道相关的计数器进行递增,前提是在控制命令之前分别有与非公开和响应相关的控制命令。
8.一种计算机***的输入输出节点标识命令的方法,该方法包含:
接收多个控制命令,每一个包括在所述输入输出节点接收的各自的事务处理里的信息子集;
为所述每个控制命令产生一个标识值;
将所述多个控制命令存入多个缓冲区中,每个缓冲区都对应于多个虚拟信道中的一个虚拟信道,其中所述的多个虚拟信道包含***道、非***道和响应信道;
其中为每个所述命令产生标识值包括使用关于响应信道的计数器当前值和关于非***道的计数器当前值;
将响应信道相关的计数器当前值对应的标识值及非***道相关的计数器当前值对应的标识值指定给每一个与***道相关的控制命令;
使用所述每个控制命令相关的标识值在所述多个缓冲区之间做仲裁。
9.如权利要求8所述的方法,其中所述每个控制命令的标识值是所述每个控制命令相对于其它控制命令为标识电路所接收的顺序的指示数值。
CNB028199626A 2001-10-15 2002-08-09 计算机***的输入/输出节点标识命令的装置及方法 Expired - Fee Related CN1311374C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/978,351 2001-10-15
US09/978,351 US6728790B2 (en) 2001-10-15 2001-10-15 Tagging and arbitration mechanism in an input/output node of a computer system

Publications (2)

Publication Number Publication Date
CN1568464A CN1568464A (zh) 2005-01-19
CN1311374C true CN1311374C (zh) 2007-04-18

Family

ID=25526009

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028199626A Expired - Fee Related CN1311374C (zh) 2001-10-15 2002-08-09 计算机***的输入/输出节点标识命令的装置及方法

Country Status (8)

Country Link
US (1) US6728790B2 (zh)
EP (1) EP1442376B1 (zh)
JP (1) JP4255833B2 (zh)
KR (1) KR100905802B1 (zh)
CN (1) CN1311374C (zh)
DE (1) DE60204794T2 (zh)
TW (1) TW591490B (zh)
WO (1) WO2003034249A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6721816B1 (en) * 2002-02-27 2004-04-13 Advanced Micro Devices, Inc. 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
US20040059879A1 (en) * 2002-09-23 2004-03-25 Rogers Paul L. Access priority protocol for computer system
US7454551B2 (en) * 2004-05-26 2008-11-18 Synopsys, Inc. Reconstructing transaction order using clump tags
US20060215567A1 (en) * 2005-03-25 2006-09-28 Arun Raghunath Method and apparatus for monitoring path statistics
US7373444B2 (en) * 2005-04-15 2008-05-13 Kabushiki Kaisha Toshiba Systems and methods for manipulating entries in a command buffer using tag information
TWI335517B (en) * 2006-08-25 2011-01-01 Via Tech Inc Method of requests access and scheduling and related apparatus thereof
TWI385981B (zh) * 2009-05-14 2013-02-11 Ic Plus Corp 網路封包的傳遞裝置及其排程方法
US8199759B2 (en) * 2009-05-29 2012-06-12 Intel Corporation Method and apparatus for enabling ID based streams over PCI express
JP5316696B2 (ja) 2010-03-11 2013-10-16 富士通株式会社 データブロック読出制御装置
US8543754B2 (en) * 2011-02-25 2013-09-24 International Business Machines Corporation Low latency precedence ordering in a PCI express multiple root I/O virtualization environment
CN103532875B (zh) * 2013-10-12 2017-11-03 丁贤根 一种用于pcie应用层接口的重排序方法
CN103746843A (zh) * 2013-12-31 2014-04-23 百度在线网络技术(北京)有限公司 一种用于处理rpc命令的方法与设备
US9824058B2 (en) * 2014-11-14 2017-11-21 Cavium, Inc. Bypass FIFO for multiple virtual channels
US9842074B2 (en) * 2015-01-30 2017-12-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Tag allocation for non-posted commands in a PCIe application layer
US10545875B2 (en) 2017-12-27 2020-01-28 Advanced Micro Devices, Inc. Tag accelerator for low latency DRAM cache
US20230065395A1 (en) * 2021-08-30 2023-03-02 Micron Technology, Inc. Command retrieval and issuance policy

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08320839A (ja) * 1995-05-24 1996-12-03 Internatl Business Mach Corp <Ibm> 分散型データ処理システム
EP0944001A2 (en) * 1998-03-19 1999-09-22 Hewlett-Packard Company Means for routing transactions in a bus bridge
US6016526A (en) * 1997-09-19 2000-01-18 International Business Machines Corporation Method and apparatus for transferring data between buses having differing ordering policies via the use of autonomous units
CN1303056A (zh) * 2000-01-05 2001-07-11 三菱电机株式会社 避免浮动状态、进行双向数据传输的双向总线电路

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04222049A (ja) * 1990-03-16 1992-08-12 Hewlett Packard Co <Hp> 属性データ記憶及びグラフィックスパイプラインアクセスを可能にするデータストリーム集信装置
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
US6148395A (en) * 1996-05-17 2000-11-14 Texas Instruments Incorporated Shared floating-point unit in a single chip multiprocessor
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 入出力インターフェース回路及び半導体システム
US6212621B1 (en) * 1998-06-24 2001-04-03 Advanced Micro Devices Inc Method and system using tagged instructions to allow out-of-program-order instruction decoding
US6173378B1 (en) * 1998-09-11 2001-01-09 Advanced Micro Devices, Inc. Method for ordering a request for access to a system memory using a reordering buffer or FIFO
US6289442B1 (en) * 1998-10-05 2001-09-11 Advanced Micro Devices, Inc. Circuit and method for tagging and invalidating speculatively executed instructions
JP2000134218A (ja) * 1998-10-28 2000-05-12 Fujitsu Ltd パケット多重処理方式
JP3446700B2 (ja) * 1999-12-20 2003-09-16 日本電気株式会社 複数ラインバッファ型メモリlsi

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08320839A (ja) * 1995-05-24 1996-12-03 Internatl Business Mach Corp <Ibm> 分散型データ処理システム
US6016526A (en) * 1997-09-19 2000-01-18 International Business Machines Corporation Method and apparatus for transferring data between buses having differing ordering policies via the use of autonomous units
EP0944001A2 (en) * 1998-03-19 1999-09-22 Hewlett-Packard Company Means for routing transactions in a bus bridge
CN1303056A (zh) * 2000-01-05 2001-07-11 三菱电机株式会社 避免浮动状态、进行双向数据传输的双向总线电路

Also Published As

Publication number Publication date
CN1568464A (zh) 2005-01-19
KR100905802B1 (ko) 2009-07-02
KR20040054721A (ko) 2004-06-25
JP4255833B2 (ja) 2009-04-15
DE60204794T2 (de) 2006-05-18
EP1442376A1 (en) 2004-08-04
DE60204794D1 (de) 2005-07-28
JP2005518578A (ja) 2005-06-23
US20030097500A1 (en) 2003-05-22
EP1442376B1 (en) 2005-06-22
WO2003034249A1 (en) 2003-04-24
US6728790B2 (en) 2004-04-27
TW591490B (en) 2004-06-11

Similar Documents

Publication Publication Date Title
CN1311374C (zh) 计算机***的输入/输出节点标识命令的装置及方法
US10838891B2 (en) Arbitrating portions of transactions over virtual channels associated with an interconnect
US7150021B1 (en) Method and system to allocate resources within an interconnect device according to a resource allocation table
CN100531125C (zh) 在交换结构网络中仲裁虚拟信道传输队列
US7237016B1 (en) Method and system to manage resource requests utilizing link-list queues within an arbiter associated with an interconnect device
CN101488922B (zh) 具备自适应路由能力的片上网络路由器及其实现方法
CN1149223A (zh) 具有可指定的多种分组丢失概率的Tbit/s级分组交换机
WO2010105013A1 (en) Scalable interface for connecting multiple computer systems which performs parallel mpi header matching
WO1989003566A2 (en) Layered network
CN1149222A (zh) 具有多信道广播带外控制的atm分组交换机
EP0749073A2 (en) Biased routing arbitration of message traffic in a communications network
US6681274B2 (en) Virtual channel buffer bypass for an I/O node of a computer system
CN1568462A (zh) 计算机***的输入/输出节点
Liu et al. A dynamic adaptive arbiter for Network-on-Chip
CN113285935A (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
US6820151B2 (en) Starvation avoidance mechanism for an I/O node of a computer system
Eberle et al. Separated high-bandwidth and low-latency communication in the cluster interconnect clint
CN1773957A (zh) 用于将多个装置互连到同步装置的设备
CN111711574A (zh) 一种超高阶单周期报文调度方法及装置
Wang et al. Design of a Crosspoint Queued router for a micro-network in SoCs
CN1038006A (zh) 信息包交换、交换方法、规程和网络
Mudawwar A Switch-Free Router for k-ary m-way Networks.
Sukhtankar A Low Latency Switch Architecture for High-Performance Packet-Switched Networks
Döring et al. Low-Level SCI Protocols and Their Application to Flexible Switches

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
ASS Succession or assignment of patent right

Owner name: ADVANCED MICRO DEVICES INC

Free format text: FORMER OWNER: ADVANCED MICRO DEVICES INC.

Effective date: 20100709

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: CALIFORNIA, USA TO: GRAND CAYMAN ISLAND RITISH CAYMAN ISLANDS

TR01 Transfer of patent right

Effective date of registration: 20100709

Address after: Grand Cayman, Cayman Islands

Patentee after: Globalfoundries Semiconductor Inc.

Address before: American California

Patentee before: Advanced Micro Devices Inc.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070418

Termination date: 20190809

CF01 Termination of patent right due to non-payment of annual fee