CN1981273A - 总线结构中的死锁避免 - Google Patents

总线结构中的死锁避免 Download PDF

Info

Publication number
CN1981273A
CN1981273A CNA2005800143409A CN200580014340A CN1981273A CN 1981273 A CN1981273 A CN 1981273A CN A2005800143409 A CNA2005800143409 A CN A2005800143409A CN 200580014340 A CN200580014340 A CN 200580014340A CN 1981273 A CN1981273 A CN 1981273A
Authority
CN
China
Prior art keywords
posted requests
request
posted
arbiter
requests
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
CNA2005800143409A
Other languages
English (en)
Other versions
CN100517285C (zh
Inventor
戴维·G·里德
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 CN1981273A publication Critical patent/CN1981273A/zh
Application granted granted Critical
Publication of CN100517285C publication Critical patent/CN100517285C/zh
Expired - Fee Related 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/4031Coupling between buses using bus bridges with arbitration
    • G06F13/4036Coupling between buses using bus bridges with arbitration and deadlock prevention
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供用于在一总线结构中避免死锁情况的电路、装置和方法。一个示范性实施例提供一种地址解码器,用于确定一所接收到的投递式请求是否为一对等请求。如果是,那么所述投递式请求作为一非投递式请求而发送。维持并不超过对待决非投递式请求的数目的限制,从而避免死锁。另一示范性实施例提供一种判优器,其跟踪待决投递式请求的数目。当待决投递式请求的数目达到预定或可编程水平时,将一阻断对等信号发送给所述判优器的客户机,从而再次避免死锁。

Description

总线结构中的死锁避免
技术领域
本发明大体上涉及总线结构中的死锁避免,且更明确地说,涉及集成电路之间的接口处的死锁避免。
背景技术
没有几种应用对计算机***资源的着重程度会达到视频的着重程度。视频捕捉、编码和类似物涉及计算机***中各个电路之间(例如视频捕捉卡、中央处理单元、图形处理器、***存储器与其它电路之间)的数据的大量传送。
通常,此数据在各种总线上移动,所述总线例如PCI总线、HyperTransportTM总线和类似物,其位于形成计算机***的集成电路上及其之间。通常,先进先出存储器(first-in-first-out memory,FIFO)用于使这些电路彼此隔离,且减少它们之间的数据传送的定时限制。
但这些FIFO消耗昂贵的集成电路晶粒面积和功率。因此,希望限制FIFO的深度。遗憾的是,这意味着这些FIFO可能被填满,且不能够容纳进一步的输入,因此限制***性能。
如果这些被填满的FIFO位于形成回路的数据路径中,那么尤其成问题。在那种情况下,回路中可能存在变成死锁(即,无法接收或发送数据)的处理器,例如图形处理器,或其它电路。
举例来说,这可在以下情况下发生。从电路接收数据的第一FIFO不能接收数据,因为其已满。第一FIFO不能将数据发送到第二FIFO,因为第二FIFO也已满。同样,第二FIFO也不能发送数据,因为其想要将数据发送到电路,而电路也不能容纳所述数据,因为其正等待将数据发送到第一FIFO。此组遗憾的事件可导致稳定的死锁情况。
因此,需要用于避免这些死锁情况的电路、方法和装置。虽然增加FIFO的尺寸可减轻一些死锁情况,但仍然存在晶粒面积和功率方面的相关成本,且更深FIFO可能填满的可能性仍然存在。因此,希望这些电路、方法和装置不仅依靠将这些FIFO制造得更深且具有有限的复杂性。
发明内容
因此,本发明的实施例提供用于避免死锁情况的电路、装置和方法。一个示范性实施例提供地址解码器,用于确定所接收到的投递式写入请求是否为对等请求。如果是,那么将所述请求转换成非投递式写入请求。维持并不超过对待决非投递式请求的数目的限制,从而避免死锁。通过从所发送的非投递式请求的数目中减去所接收到的响应的数目来跟踪待决非投递式请求的数目。
另一示范性实施例不将所接收到的投递式请求转换成非投递式请求,而是提供判优器,其跟踪待决投递式请求的数目。当待决投递式请求的数目(例如,FIFO或队列中的待决请求的数目)达到预定或可编程水平(其为低水位标记)时,将阻断对等信号发送给判优器的客户机。这阻止数据回路中的FIFO被填满,因此避免死锁。当判优器接收到指示待决投递式请求的数目低于此水平的响应或信号时,移除阻断对等信号,且可再次准许对等请求。或者,可跟踪待决对等请求的数目,且当达到预定或可编程水平时,确定阻断对等信号。与本发明一致的电路、方法和装置可包含本文所述的这些或其它实施例中的一者或两者。
本发明的又一示范性实施例提供一种传送数据的方法。此方法包括:接收传送请求;确定所述传送请求是否为到存储器位置的写入,如果传送请求为到存储器位置的写入,那么将传送请求作为投递式请求来发送,否则确定投递式请求先进先出存储器中的可用传送请求入口的数目,且如果可用的传送请求入口的数目大于第一数目,那么将传送请求作为投递式请求来发送,否则等待将传送请求作为投递式请求来发送。
本发明的又一示范性实施例提供传送数据的另一方法。此方法包括:维持第一数目的令牌;接收复数个投递式请求,如果第一数目的令牌的剩余数目小于第一数目,那么将复数个投递式请求中的一者作为非投递式请求来转发,否则不将复数个投递式请求中的一者作为非投递式请求来转发。
本发明的又一示范性实施例提供一种集成电路。此集成电路包括:判优器,其经配置以跟踪投递式请求FIFO中的可用入口的数目;复数个客户机,其耦接到所述判优器;和HyperTransport总线,其耦接到所述判优器,其中判优器从复数个客户机接收对等请求,且将投递式请求提供到投递式请求FIFO,且当投递式请求FIFO中的可用入口的数目等于第一数目时,那么阻止复数个客户机发送对等请求。
参考以下详细描述和附图,可获得对本发明的性质和优势的更好理解。
附图说明
图1是得益于包含本发明实施例的计算***的方框图;
图2是得益于包含本发明实施例的经改进的计算***的方框图;
图3是图2的经改进的计算处理***的简化方框图;
图4是图2的经改进的计算***的又一简化方框图,其说明从视频捕捉卡到***存储器的写入路径;
图5是包含本发明实施例的图2的经改进的计算***的简化方框图;
图6是进一步描述本发明的具体实施例的流程图;
图7是包含本发明实施例的图2的经改进的计算***的简化方框图;和
图8是进一步描述本发明的具体实施例的流程图。
具体实施方式
图1是得益于纳入本发明实施例的计算***100的方框图。此计算***100包括北桥110、图形加速器120、南桥130、帧缓冲器140、中央处理单元(CPU)150、音频卡160、以太网卡162、调制解调器164、USB卡166、图形卡168、PCI插槽170和存储器105。此图与所有所包括的图式一样,仅出于说明性目的而展示,且不限制本发明的可能实施例或权利要求书。
北桥110将信息从CPU150传递到存储器105、图形加速器120和南桥130,且从所述三者将信息传递至CPU150。南桥130通过例如通用串行总线(USB)卡166和以太网卡162等连接而介接到外部通信***。图形加速器120经由加速的图形端口(AGP)总线125通过北桥110从CPU150及直接从存储器或帧缓冲器140接收图形信息。图形加速器120与帧缓冲器140介接。帧缓冲器140可包括显示缓冲器,其存储要显示的像素。
在此结构中,CPU150执行此计算***所需要的大量处理任务。具体而言,图形加速器120依靠CPU150建立计算且计算几何值。同样,音频或声卡160依靠CPU150来处理音频数据、位置计算和各种效果,例如合唱、混响、干扰、阻塞等等,所有都是同时进行的。此外,CPU150仍然对与可能正在运行的应用程序有关的其它指令负责,且对连接到南桥130的各种***设备的控制负责。
图2是得益于纳入本发明实施例的经改进计算***的方框图。此方框图包括组合的处理器与北桥210、媒体控制处理器240和***存储器270。出于示范性目的,此方框图中还包括视频捕捉卡280。
组合的处理器与北桥210包括中央处理单元212、FIFO216、多路复用器222、输出缓冲器224(包括用于投递式请求的一者226、用于非投递式请求的一者228和用于响应的一者230)、输入FIFO232(包括用于投递式请求的输入FIFO234、用于非投递式请求的输入FIFO236和用于响应的输入FIFO238)、地址解码器220、对等FIFO218和存储器控制器214。
媒体控制处理器包括输入FIFO242(用于投递式请求的244、用于非投递式请求的246和用于响应的248)、集成图形处理器252、判优器250和PCI到PCI桥260。组合的CPU与北桥210通过HyperTransport总线290和295与媒体控制处理器240通信。***存储器270通过存储器接口总线272耦接到存储器控制器214,而视频捕捉卡280通过PCI总线282连接到PCI到PCI桥260。
在本发明的具体实施例中,组合的CPU与北桥210形成于第一集成电路上,而媒体控制处理器240形成于第二集成电路上。在另一实施例中,图形处理器252并不集成在媒体控制处理器上,而是通过高级图形处理器(AGP)总线与媒体控制处理器240通信的分离的集成电路。在其它实施例中,这各种功能可以其它方式来划分,且集成于通过各种总线通信的不同数目的集成电路上。
数据和请求通过总线在这些集成电路和集成电路块之间移动,在写入请求的情况下,电路请求允许其将数据放置在总线上,且准许所述请求。数据可作为投递式请求来发送,其中不需要响应,或作为非投递式请求来发送,在这种情况下,需要响应。在其目标电路处已经完成写入后,将响应发送回到发送电路。
如图所示,这些不同交易、投递式请求、非投递式请求和响应存储在分离的FIFO中。这些分离的FIFO可具有相同尺寸,或其可具有不同尺寸。另外,各个FIFO可具有不同尺寸。在一个具体实施例中,非投递式请求FIFO236具有6个入口、对等FIFO218具有两个入口且非投递式请求FIFO228具有16个入口。在各个实施例中,对等FIFO218可为用于存储投递式和非投递式请求和响应的一个FIFO,或对等FIFO218可为用于存储不同类型的交易的分离的FIFO。关于所述各种类型的请求和对等交易的更多信息可在HyperTransport规范中找到,所述HyperTransport规范最近由HyperTransportConsortium出版了1.05版本,其以引用的方式并入本文中。
在此新颖结构中,图形处理器已经变成与***存储器分离。此分离导致可形成回路且因此变成被死锁的数据路径。具体地说,来自CPU212和视频捕捉卡280的数据传送可填充各个FIFO。
在图2中所示的配置中,CPU212利用以下路径写入到***存储器270中的帧缓冲器。CPU212在线213上将请求(数据)提供到FIFO216。FIFO216将数据提供到多路复用器222,多路复用器222又将数据提供到输出缓冲器224。缓冲器224通过HyperTransport总线290将数据提供到FIFO242,FIFO242又将数据提供到图形总线252。图形处理器252在线254上将请求提供到判优器250。判优器250通过HyperTransport总线295将请求提供回到FIFO232。FIFO232将请求提供到地址解码器220,地址解码器220又将它们提供到存储器控制器214。存储器控制器214通过存储器接口总线272写入到***存储器270。
同样在此配置中,视频捕捉卡218利用以下路径将数据写入到***存储器270中的帧缓冲器。视频捕捉卡280在PCI总线282上将数据提供到PCI到PCI桥260。PCI到PCI桥260将数据提供到判优器250,判优器250又通过HyperTransport总线295将请求提供到FIFO232。FIFO232将请求提供到地址解码器220,地址解码器220又将其提供到对等FIFO218。对等FIFO218将数据提供到多路复用器222,多路复用器222又将其提供到输出缓冲器224。输出缓冲器224将数据提供到FIFO242,FIFO242又将其提供到图形处理器252。
接着,图形处理器252利用以下路径写入到***存储器270中的帧缓冲器。图形处理器252在线254上将经修改的请求提供到判优器250。判优器250通过HyperTransport总线295将数据提供到FIFO232。FIFO232将数据提供到地址解码器220。此时,地址解码器查看由图形处理器252提供的新地址,且又将请求提供到存储器控制器214。接着,存储器控制器214通过存储器接口总线272将数据写入到***存储器270。
由此可见,此错综复杂的路径总共三次交叉HyperTransport接口总线290和295。尤其在CPU212和视频捕捉卡280写入到***存储器270中的帧缓冲器的情形下,FIFO242、232和218可能变满,即不能够容纳进一步的输入。在此情况下,可能出现这样的情形:图形处理器252试图将数据写入到***存储器270中的帧缓冲器,但其无法写入,因为判优器250不会准许图形处理器252访问HyperTransport总线295。同样,接收FIFO232不能输出数据,因为对等FIFO218已满。另外,对等FIFO218不能输出数据,因为媒体控制处理器输入FIFO242同样也是满的。在此情形下,总线结构被死锁且达到不合需要的稳定状态。
图3是图2的经改进的计算处理***的简化方框图。所述经改进的计算处理***包括组合的CPU与北桥310、媒体控制处理器340、***存储器370和视频捕捉卡380。组合的CPU与北桥310包括发射器312和接收器314,而媒体控制处理器包括接收器342、发射器344、图形处理器346和PCI到PCI桥348。***存储器370通过存储器接口总线372与组合的CPU与北桥通信。在此特定实例中,包括视频捕捉卡380,其通过PCI总线382与媒体控制处理器通信。
图4是图2的经改进的计算***的另一简化方框图,其说明从视频捕捉卡480到***存储器470的写入路径。此方框图包括组合的CPU与北桥410、媒体控制处理器440、***存储器470和视频捕捉卡480。组合的CPU与北桥电路包括发射器412和接收器414。媒体控制处理器包括接收器442、发射器444、图形处理器446和PCI到PCI桥448。
视频捕捉卡480将请求提供到PCI到PCI桥448,PCI到PCI桥448又将它们提供到发射器444。发射器444将请求发送到接收器414,接收器414又将它们提供到发射器412。发射器412将这些请求发送到接收器442,接收器442继续将它们传递到图形处理器446。图形处理器446通过将数据作为请求发送到发射器444来将数据写入到***存储器,发射器444又将数据提供到接收器414。接着,接收器414将数据写入到***存储器470。
由此可见,在此过程期间,请求从发射器444到接收器414交叉两次。这就是出现死锁的潜在位置。具体地说,在死锁情况下,图形处理器不能将请求发送到发射器444,因为发射器不能发送到接收器414,原因在于其相关FIFO已满。图形处理器不能接受新的请求,因为其正等待准许其自己的请求。因此,不能耗尽接收器442中的FIFO。此同样会造成死锁情况,产生不合需要的稳定状态。
图5是纳入本发明实施例的图2经改进计算***的简化方框图。此方框图包括组合的CPU与北桥510、媒体控制处理器540、***存储器570和视频卡580。组合的CPU与北桥510包括发射器512和接收器514。媒体控制处理器540包括接收器542、发射器544、图形处理器546和PCI到PCI桥548。PCI到PCI桥548进一步包括地址解码器562。
视频捕捉卡580将投递式请求提供到PCI到PCI桥548。PCI到PCI桥548中的地址解码器562确定此投递式请求为对等请求,且将其转换成非投递式请求并将其传递到发射器544。发射器544将此请求作为非投递式请求来发送,将此非投递式请求发送到接收器514。接着,接收器514将此请求发送到发射器512,其将所述请求传递到接收器542。接收器542又将此请求提供到图形处理器546。
接着,图形处理器546将所述请求作为投递式请求而反射回发射器544的上游,所述投递式请求在***存储器570中的帧缓冲器中具有地址。图形处理器还发出“目标完成”的完成响应。组合的CPU与北桥510从反射器544接收此投递式请求和响应。此投递式请求发送到***存储器570,且此响应发送回到媒体控制处理器540且在此处由PCI到PCI桥548接收。
在此实施例中,待决非投递式请求的数目被限于某一数目“N”,例如1,且当达到此数目时,不再将进一步的非投递式请求提供到发射器544。具体地说,随着非投递式请求被发送,计数在PCI到PCI桥548的地址解码器部分562中递增。随着响应由PCI到PCI桥548接收,此计数递减。当达到所述计数时,地址解码器562会阻止进一步的非投递式请求。这避免了上文所述的死锁情况。
图6是进一步描述本发明的此具体实施例的流程图。在步骤610中,从视频捕捉卡接收投递式请求。在步骤620中,解码与所述请求相关联的地址,且确定所述请求是否为对等或待写入到***存储器。如果所述请求并非对等请求,即其为待写入***存储器的数据,那么在步骤680中将其作为投递式请求来发送。如果所述请求为对等请求,那么在步骤630中将所述请求转换成非投递式请求。在步骤640中,确定待决非投递式请求的数目是否等于可允许待决非投递式请求的预定或可编程数目,例如1或另一数目,在步骤650中。如果计数未达到此数目“N”,那么在步骤660中,可将请求作为非投递式请求来发送,且在步骤670中,计数递增1。然而,如果计数已经达到“N”,那么在步骤650中,请求被停止且不被准许,以便避免死锁情况。当非投递式请求完成时,接收响应且计数递减。
返回图2,我们可以更详细地看到此实施例如何实施。视频捕捉卡280在PCI总线282上将投递式请求提供到PCI到PCI桥260。PCI到PCI桥260中的地址解码器确定所述请求是否为到***存储器270的写入。如果是,那么将所述请求传递到判优器250,判优器250将其放置在投递式请求FIFO234中,投递式请求FIFO234将所述请求转发到存储器控制器214,存储器控制器214将所述请求写入到***存储器270。
如果投递式请求为对等请求,即其并非要直接写入到***存储器270,而是去往同等电路,例如图形处理器252,那么由PCI到PCI桥260中的地址解码器(或其它电路)将投递式请求转换成非投递式请求。此非投递式请求从判优器250发送到非投递式请求FIFO236,再到对等FIFO218。接着,非投递式请求经由总线290到达图形处理器252。图形处理器将请求转换回投递式请求,且还发出响应。将投递式请求传递到存储器控制器214,存储器控制器214将数据写入到***存储器270,而响应由PCI到PCI桥260接收。
PCI到PCI桥260中的解码器还保持对待决非投递式请求的数目的跟踪,且一旦其已经确定已达到待决非投递式请求的预定或可编程数目,就不将非投递式请求发送到非投递式请求FIFO236。
图7是包含本发明实施例的图2的经改进的计算***的简化方框图。此方框图包括组合的CPU与北桥710、媒体控制处理器740、***存储器770和视频捕捉卡780。组合的CPU与北桥710包括发射器712和接收器714。媒体控制处理器740包括接收器742、发射器744、图形处理器746和PCI到PCI总线748。发射器744进一步包括判优器745。
将由视频捕捉卡780提供的投递式请求提供到PCI到PCI桥748,其将它们传递到判优器745。判优器跟踪在接收器714处待决的投递式请求(或者,对等请求)。当某一数目的投递式请求保持待决时,判优器745将阻断对等信号发出到其客户机,例如图形处理器746和PCI到PCI桥748。在此情况下,不再有进一步的对等请求发送到判优器745,直到判优器745接收到指示接收器714投递式请求FIFO中存在空间的响应为止。
如果阻断对等信号未被确定,那么将投递式请求提供到发射器744,发射器744将其发送到接收器714。接收器714经由发射器712将所述投递式请求发送到接收器742。接收器742将投递式请求传递到图形处理器746。图形处理器746又将投递式请求传递到发射器744,再到接收器714,接收器714将投递式请求提供到***存储器770。
图8是进一步描述本发明的此具体实施例的流程图。在步骤810中,判优器(例如)从视频捕捉卡接收投递式请求。在步骤820中,判优器确定所述投递式请求是否为对等请求。如果不是,那么在步骤830中,将数据作为投递式写入请求来发送。如果是,那么在步骤840中,确定FIFO是否低于其低水位标记,或者阻断对等信号或状态是否已被确定。如果此为真,那么在步骤850中,判优器等待入口以在投递式写入FIFO中变得可用。在某一点处,投递式写入FIFO提供输出,因此释放入口。此时,判优器发布阻断对等信号,且在步骤830中将数据发送到投递式写入FIFO。
返回图2,我们可以更详细地看到此实施例如何实施。视频捕捉卡280在PCI总线282上将投递式请求提供到PCI到PCI桥260。PCI到PCI桥260将这些请求传递到判优器250。判优器对投递式请求FIFO236中的待决投递式请求的数目(或者,待决对等请求的数目,或FIFO218中的投递式请求的数目)保持跟踪。当投递式请求FIFO236中的待决投递式请求的数目达到预定或可编程水平时,判优器250将阻断对等信号传播到图形处理器252、PCI到PCI桥260和其它客户电路。这阻止那些电路发送进一步的对等请求,因此避免死锁情况。
当待决投递式请求的数目低于此低水位标记时,将投递式请求发送到投递式请求FIFO234。接着,通过对等FIFO218、多路复用器222、FIFO226和224将投递式请求发送到图形处理器252。接着,图形处理器将地址转换成***存储器地址270,且将投递式请求转发到判优器250。判优器250将投递式请求传递到投递式请求FIFO234,再到存储器控制器214,存储器控制器214将数据写入到***存储器270。
在一个实施例中,在加电时,判优器250接收若干令牌,例如6个令牌。当判优器将对等投递式请求提供到投递式请求FIFO234时,其发送这些令牌中的一者。当投递式请求FIFO输出对等投递式请求时,判优器接收令牌。如果令牌的计数下降到低水位标记(例如1),那么判优器250确定阻断对等信号。当接收到令牌时,移除阻断对等信号。
已经出于说明和描述的目的呈现了本发明示范性实施例的以上描述内容。不希望其为详尽的或将本发明限于所述的精确形式,且根据上文的教示,可能存在很多修改和改变。为了最好地阐释本发明的原理和其实际应用,选择并描述了实施例,从而使所属领域的技术人员能够在各种实施例中以适合于所涵盖的特定用途的各种修改来利用本发明。

Claims (19)

1.一种传送数据的方法,其包含:
接收一传送请求;
确定所述传送请求是否为一到一存储器位置的写入;
如果所述传送请求为一到一存储器位置的写入,那么将所述传送请求作为一投递
式请求来发送;否则
确定一投递式写入先进先出存储器中的可用传送请求入口的一数目;且
如果可用传送请求入口的所述数目大于一第一数目;那么
将所述传送请求作为一投递式请求来发送,否则
等待将所述传送请求作为一投递式请求来发送。
2.根据权利要求1所述的方法,其中所述传送请求由一视频捕捉卡做出。
3.根据权利要求1所述的方法,其中所述传送请求由一图形处理器做出。
4.根据权利要求1所述的方法,其中所述传送请求在一HyperTransport总线上发送。
5.根据权利要求1所述的方法,其中待决投递式请求的所述数目由一判优器来确定。
6.根据权利要求1所述的方法,其中所述第一数目为可编程的。
7.根据权利要求1所述的方法,其中所述第一数目具有一数值1。
8.一种传送数据的方法,其包含:
维持一第一数目的令牌;
接收复数个投递式请求;
如果所述第一数目的令牌的一剩余数目小于一第一数目,那么将所述复数个投递式请求中的一个作为一非投递式请求来转发,否则
不将所述复数个投递式请求中的所述一个作为一非投递式请求来转发。
9.根据权利要求8所述的方法,其中令牌的所述第一数目为1。
10.根据权利要求8所述的方法,其中令牌的所述第一数目由一地址解码器来维持。
11.根据权利要求8所述的方法,其进一步包含:
从一待决非投递式请求接收一响应;和
使可用令牌的所述数目递增1。
12.根据权利要求11所述的方法,其进一步包含当令牌的所述数目递增到所述第一数目之上时,那么将所述复数个投递式请求中的所述一个作为一非投递式请求来转发。
13.一种集成电路,其包含:
一判优器,其经配置以跟踪一投递式请求FIFO中的可用入口的一数目;
复数个耦接到所述判优器的客户机;和
一耦接到所述判优器的HyperTransport总线;
其中所述判优器从所述复数个客户机接收对等请求,且将投递式请求提供到所述投递式请求FIFO,且
当所述投递式请求FIFO中的可用入口的所述数目等于一第一数目时,那么阻止所述复数个客户机发送对等请求。
14.根据权利要求13所述的集成电路,其中所述复数个客户机包括一图形处理器。
15.根据权利要求14所述的集成电路,其中所述复数个客户机进一步包括一PCI到PCI桥。
16.根据权利要求13所述的集成电路,其中对于每个被准许的投递式请求,待决对等请求的所述数目都递增1。
17.根据权利要求16所述的集成电路,其中对于由一接收FIFO提供的每个对等请求,待决对等请求的所述数目都递减1。
18.根据权利要求13所述的集成电路,其进一步包含当待决对等请求的所述数目小于所述第一数目时,允许所述数目的客户机发出一对等请求。
19.根据权利要求18所述的集成电路,其中所述第一数目为1。
CNB2005800143409A 2004-04-01 2005-04-01 总线结构中的死锁避免 Expired - Fee Related CN100517285C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/817,553 2004-04-01
US10/817,553 US7315912B2 (en) 2004-04-01 2004-04-01 Deadlock avoidance in a bus fabric

Publications (2)

Publication Number Publication Date
CN1981273A true CN1981273A (zh) 2007-06-13
CN100517285C CN100517285C (zh) 2009-07-22

Family

ID=35055691

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005800143409A Expired - Fee Related CN100517285C (zh) 2004-04-01 2005-04-01 总线结构中的死锁避免

Country Status (6)

Country Link
US (4) US7315912B2 (zh)
EP (2) EP2172847B1 (zh)
CN (1) CN100517285C (zh)
DE (1) DE602005019548D1 (zh)
TW (2) TWI464591B (zh)
WO (1) WO2005098634A2 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101859257A (zh) * 2009-04-08 2010-10-13 辉达公司 用于无死锁管线操作的***及方法
CN102324251A (zh) * 2010-04-29 2012-01-18 美光科技公司 用以指示存储器中的编程失败的信号线
CN102630315A (zh) * 2009-10-30 2012-08-08 (株)吉诺 用于防止死锁状态的数据处理方法及***
CN101639816B (zh) * 2009-05-21 2012-08-08 无锡中星微电子有限公司 一种总线的实时跟踪***及相应的跟踪、调试方法
CN104583994A (zh) * 2012-08-29 2015-04-29 苹果公司 针对计算机***中组件的整个网络中的写事务限制带宽
CN110023919A (zh) * 2016-12-28 2019-07-16 英特尔公司 用于处理结构中非投递式存储器写入事务的方法、装置和***

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8595394B1 (en) 2003-06-26 2013-11-26 Nvidia Corporation Method and system for dynamic buffering of disk I/O command chains
US8683132B1 (en) 2003-09-29 2014-03-25 Nvidia Corporation Memory controller for sequentially prefetching data for a processor of a computer system
US8356142B1 (en) 2003-11-12 2013-01-15 Nvidia Corporation Memory controller for non-sequentially prefetching data for a processor of a computer system
US20090027383A1 (en) 2003-11-19 2009-01-29 Lucid Information Technology, Ltd. Computing system parallelizing the operation of multiple graphics processing pipelines (GPPLs) and supporting depth-less based image recomposition
US8085273B2 (en) 2003-11-19 2011-12-27 Lucid Information Technology, Ltd Multi-mode parallel graphics rendering system employing real-time automatic scene profiling and mode control
US8497865B2 (en) 2006-12-31 2013-07-30 Lucid Information Technology, Ltd. Parallel graphics system employing multiple graphics processing pipelines with multiple graphics processing units (GPUS) and supporting an object division mode of parallel graphics processing using programmable pixel or vertex processing resources provided with the GPUS
EP1687732A4 (en) 2003-11-19 2008-11-19 Lucid Information Technology Ltd METHOD AND SYSTEM FOR A MULTIPLEXED 3D GRAPHIC PIPELINE VIA A PC BUS
US7961194B2 (en) 2003-11-19 2011-06-14 Lucid Information Technology, Ltd. Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system
US7812844B2 (en) 2004-01-28 2010-10-12 Lucid Information Technology, Ltd. PC-based computing system employing a silicon chip having a routing unit and a control unit for parallelizing multiple GPU-driven pipeline cores according to the object division mode of parallel operation during the running of a graphics application
US20080068389A1 (en) 2003-11-19 2008-03-20 Reuven Bakalash Multi-mode parallel graphics rendering system (MMPGRS) embodied within a host computing system and employing the profiling of scenes in graphics-based applications
US8700808B2 (en) 2003-12-01 2014-04-15 Nvidia Corporation Hardware support system for accelerated disk I/O
US7315912B2 (en) * 2004-04-01 2008-01-01 Nvidia Corporation Deadlock avoidance in a bus fabric
US7219178B2 (en) * 2004-09-30 2007-05-15 Arm Limited Bus deadlock avoidance
US8356143B1 (en) 2004-10-22 2013-01-15 NVIDIA Corporatin Prefetch mechanism for bus master memory access
US7698493B2 (en) * 2005-08-31 2010-04-13 Ati Technologies, Inc. Methods and apparatus for translating write request messages in a computing system
US7859803B2 (en) * 2005-09-19 2010-12-28 The Regents Of The University Of California Voltage overload protection circuits
US7813092B2 (en) * 2005-09-19 2010-10-12 The Regents Of The University Of California ESD unit protection cell for distributed amplifiers
JP4142068B2 (ja) * 2006-06-16 2008-08-27 株式会社ソニー・コンピュータエンタテインメント 情報処理装置およびアクセス制御方法
JP4142069B2 (ja) * 2006-06-16 2008-08-27 株式会社ソニー・コンピュータエンタテインメント 情報処理装置およびアクセス制御方法
TWI335517B (en) * 2006-08-25 2011-01-01 Via Tech Inc Method of requests access and scheduling and related apparatus thereof
US8356128B2 (en) 2008-09-16 2013-01-15 Nvidia Corporation Method and system of reducing latencies associated with resource allocation by using multiple arbiters
US8370552B2 (en) 2008-10-14 2013-02-05 Nvidia Corporation Priority based bus arbiters avoiding deadlock and starvation on buses that support retrying of transactions
US8127063B2 (en) * 2009-01-20 2012-02-28 Fisher-Rosemount Systems, Inc. Distributed equipment arbitration in a process control system
US7970977B1 (en) * 2009-01-30 2011-06-28 Xilinx, Inc. Deadlock-resistant bus bridge with pipeline-restricted address ranges
US8560736B2 (en) 2011-06-01 2013-10-15 International Business Machines Corporation Facilitating processing of out-of-order data transfers
US8495265B2 (en) * 2011-06-01 2013-07-23 International Business Machines Corporation Avoiding non-posted request deadlocks in devices by holding the sending of requests
US8880956B2 (en) 2011-06-01 2014-11-04 International Business Machines Corporation Facilitating processing in a communications environment using stop signaling
US8787155B2 (en) 2011-06-01 2014-07-22 International Business Machines Corporation Sideband error signaling
US8903966B2 (en) 2011-06-01 2014-12-02 International Business Machines Corporation Re-programming programmable hardware devices without system downtime
US9569385B2 (en) 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering
KR102161742B1 (ko) 2013-10-11 2020-10-05 삼성전자주식회사 피드백 경로를 포함하는 파이프 라인 시스템 및 그 동작방법
CN108664335B (zh) * 2017-04-01 2020-06-30 北京忆芯科技有限公司 通过代理进行队列通信的方法与装置
US10740256B2 (en) * 2017-05-23 2020-08-11 Marvell Asia Pte, Ltd. Re-ordering buffer for a digital multi-processor system with configurable, scalable, distributed job manager
US20190020586A1 (en) * 2017-07-14 2019-01-17 Qualcomm Incorporated Selective insertion of a deadlock recovery buffer in a bus interconnect for deadlock recovery
GB2579246B (en) * 2018-11-28 2021-10-13 Advanced Risc Mach Ltd Apparatus and data processing method for transactional memory
US11487695B1 (en) * 2020-04-23 2022-11-01 Marvell Asia Pte Ltd Scalable peer to peer data routing for servers

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0342107B1 (en) * 1988-05-09 1996-07-17 STMicroelectronics, Inc. Flag for a FIFO
US6366968B1 (en) * 1998-06-26 2002-04-02 Intel Corporation Physical write packets processing when posted write error queue is full, with posted write error queue storing physical write requests when posted write packet fails
US6243781B1 (en) * 1998-12-03 2001-06-05 Intel Corporation Avoiding deadlock by storing non-posted transactions in an auxiliary buffer when performing posted and non-posted bus transactions from an outbound pipe
US6654837B1 (en) * 1999-12-28 2003-11-25 Intel Corporation Dynamic priority external transaction system
US6721813B2 (en) * 2001-01-30 2004-04-13 Advanced Micro Devices, Inc. Computer system implementing a system and method for tracking the progress of posted write transactions
US6832279B1 (en) * 2001-05-17 2004-12-14 Cisco Systems, Inc. Apparatus and technique for maintaining order among requests directed to a same address on an external bus of an intermediate network node
US20030115513A1 (en) * 2001-08-24 2003-06-19 David Harriman Error forwarding in an enhanced general input/output architecture and related methods
US20030061431A1 (en) * 2001-09-21 2003-03-27 Intel Corporation Multiple channel interface for communications between devices
US6757755B2 (en) * 2001-10-15 2004-06-29 Advanced Micro Devices, Inc. Peripheral interface circuit for handling graphics responses in an I/O node of a computer system
US6807599B2 (en) * 2001-10-15 2004-10-19 Advanced Micro Devices, Inc. Computer system I/O node for connection serially in a chain to a host
US6862673B2 (en) * 2001-11-14 2005-03-01 Silicon Integrated Systems Corporation Command order maintenance scheme for multi-in/multi-out FIFO in multi-threaded I/O links
US20030095447A1 (en) * 2001-11-20 2003-05-22 Koninklijke Philips Electronics N.V. Shared memory controller for display processor
US6754737B2 (en) 2001-12-24 2004-06-22 Hewlett-Packard Development Company, L.P. Method and apparatus to allow dynamic variation of ordering enforcement between transactions in a strongly ordered computer interconnect
AU2003213650A1 (en) * 2002-03-13 2003-09-29 Advanced Micro Devices, Inc. Usb host controller
US6834319B1 (en) * 2002-03-21 2004-12-21 Advanced Micro Devices, Inc. Tunnel device for an input/output node of a computer system
US7003615B2 (en) * 2002-04-22 2006-02-21 Broadcom Corporation Tracking a non-posted writes in a system using a storage location to store a write response indicator when the non-posted write has reached a target device
DE10234933A1 (de) * 2002-07-31 2004-03-18 Advanced Micro Devices, Inc., Sunnyvale Pufferung von Non-Posted-Lesebefehlen und Antworten
US7107415B2 (en) * 2003-06-20 2006-09-12 Micron Technology, Inc. Posted write buffers and methods of posting write requests in memory modules
US7296101B2 (en) * 2004-02-17 2007-11-13 Intel Corporation Method and system for using a patch module to process non-posted request cycles and to control completions returned to requesting device
US7315912B2 (en) * 2004-04-01 2008-01-01 Nvidia Corporation Deadlock avoidance in a bus fabric

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101859257A (zh) * 2009-04-08 2010-10-13 辉达公司 用于无死锁管线操作的***及方法
CN101859257B (zh) * 2009-04-08 2013-09-18 辉达公司 用于无死锁管线操作的***及方法
CN101639816B (zh) * 2009-05-21 2012-08-08 无锡中星微电子有限公司 一种总线的实时跟踪***及相应的跟踪、调试方法
CN102630315A (zh) * 2009-10-30 2012-08-08 (株)吉诺 用于防止死锁状态的数据处理方法及***
CN102630315B (zh) * 2009-10-30 2015-06-24 (株)吉诺 用于防止死锁状态的数据处理方法及***
CN102324251A (zh) * 2010-04-29 2012-01-18 美光科技公司 用以指示存储器中的编程失败的信号线
CN102324251B (zh) * 2010-04-29 2014-12-10 美光科技公司 用以指示存储器中的编程失败的信号线
CN104583994A (zh) * 2012-08-29 2015-04-29 苹果公司 针对计算机***中组件的整个网络中的写事务限制带宽
CN104583994B (zh) * 2012-08-29 2017-06-06 苹果公司 针对计算机***中组件的整个网络中的写事务限制带宽
CN110023919A (zh) * 2016-12-28 2019-07-16 英特尔公司 用于处理结构中非投递式存储器写入事务的方法、装置和***
CN110023919B (zh) * 2016-12-28 2023-08-01 英特尔公司 用于处理结构中非投递式存储器写入事务的方法、装置和***

Also Published As

Publication number Publication date
EP1730644A2 (en) 2006-12-13
US7882296B2 (en) 2011-02-01
DE602005019548D1 (de) 2010-04-08
US20070162659A1 (en) 2007-07-12
TW200537308A (en) 2005-11-16
US20070130392A1 (en) 2007-06-07
CN100517285C (zh) 2009-07-22
EP1730644B1 (en) 2010-02-24
EP1730644A4 (en) 2007-10-17
EP2172847A2 (en) 2010-04-07
WO2005098634A3 (en) 2007-01-25
US7315912B2 (en) 2008-01-01
US20050223124A1 (en) 2005-10-06
TWI464591B (zh) 2014-12-11
TWI380179B (en) 2012-12-21
US20090089477A1 (en) 2009-04-02
US7418537B2 (en) 2008-08-26
TW201220059A (en) 2012-05-16
US7478189B2 (en) 2009-01-13
EP2172847A3 (en) 2010-05-19
WO2005098634A2 (en) 2005-10-20
EP2172847B1 (en) 2012-05-16

Similar Documents

Publication Publication Date Title
CN100517285C (zh) 总线结构中的死锁避免
JP6087532B2 (ja) 同時保留中データアクセスリクエストのためのデータハザード処理
CN100476773C (zh) 管理存储器访问请求的方法和装置
US6317799B1 (en) Destination controlled remote DMA engine
US6243781B1 (en) Avoiding deadlock by storing non-posted transactions in an auxiliary buffer when performing posted and non-posted bus transactions from an outbound pipe
US5990913A (en) Method and apparatus for implementing a flush command for an accelerated graphics port device
JPH03127147A (ja) 情報処理システム
CN110858188B (zh) 具有分布式信箱结构的多处理器***及其沟通方法
US8396996B2 (en) Querying a device for information
CN106326140A (zh) 数据拷贝方法、直接内存访问控制器及计算机***
KR20090051238A (ko) 배리어 동작들의 방송 제약 방법 및 장치
JP2011170848A (ja) トレースデータの優先度の選択
US9727521B2 (en) Efficient CPU mailbox read access to GPU memory
US20190129884A1 (en) Node controller direct socket group memory access
CN1996276A (zh) 多处理器***中的数据传输
EP2447851A1 (en) Transmission device, transmission method, and transmission program
CN111625281A (zh) 一种数据处理方法、装置、设备及存储介质
CN102576298B (zh) 读取处理单元区域内存的方法及装置
CN115174673B (zh) 具备低延迟处理器的数据处理装置、数据处理方法及设备
KR100453071B1 (ko) 프로세서 버스 연결 장치 및 방법
CN112559434B (zh) 一种多核处理器及核间数据转发方法
EP2902910A1 (en) Electronic device, and method for accessing data in electronic device
KR20090128605A (ko) 버스트 전송이 가능한 프로세서간 통신 장치, 프로세서간통신 장치를 포함하는 시스템 및 프로세서간 통신 장치를구동하기 위한 디바이스 드라이버
US5875299A (en) disk access apparatus for performing a stride processing of data
JP6565729B2 (ja) 演算処理装置、制御装置、情報処理装置及び情報処理装置の制御方法

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090722

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