总线结构中的死锁避免的制作方法

文档序号:6655715阅读:217来源:国知局
专利名称:总线结构中的死锁避免的制作方法
技术领域
本发明大体上涉及总线结构中的死锁避免,且更明确地说,涉及集成电路之间的接口处的死锁避免。
背景技术
没有几种应用对计算机系统资源的着重程度会达到视频的着重程度。视频捕捉、编码和类似物涉及计算机系统中各个电路之间(例如视频捕捉卡、中央处理单元、图形处理器、系统存储器与其它电路之间)的数据的大量传送。
通常,此数据在各种总线上移动,所述总线例如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确定阻断对等信号。当接收到令牌时,移除阻断对等信号。
已经出于说明和描述的目的呈现了本发明示范性实施例的以上描述内容。不希望其为详尽的或将本发明限于所述的精确形式,且根据上文的教示,可能存在很多修改和改变。为了最好地阐释本发明的原理和其实际应用,选择并描述了实施例,从而使所属领域的技术人员能够在各种实施例中以适合于所涵盖的特定用途的各种修改来利用本发明。
权利要求
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。
全文摘要
本发明提供用于在一总线结构中避免死锁情况的电路、装置和方法。一个示范性实施例提供一种地址解码器,用于确定一所接收到的投递式请求是否为一对等请求。如果是,那么所述投递式请求作为一非投递式请求而发送。维持并不超过对待决非投递式请求的数目的限制,从而避免死锁。另一示范性实施例提供一种判优器,其跟踪待决投递式请求的数目。当待决投递式请求的数目达到预定或可编程水平时,将一阻断对等信号发送给所述判优器的客户机,从而再次避免死锁。
文档编号G06F13/40GK1981273SQ200580014340
公开日2007年6月13日 申请日期2005年4月1日 优先权日2004年4月1日
发明者戴维·G·里德 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1