CN103597457B - 避免设备中的非公布请求死锁 - Google Patents
避免设备中的非公布请求死锁 Download PDFInfo
- Publication number
- CN103597457B CN103597457B CN201280025852.5A CN201280025852A CN103597457B CN 103597457 B CN103597457 B CN 103597457B CN 201280025852 A CN201280025852 A CN 201280025852A CN 103597457 B CN103597457 B CN 103597457B
- Authority
- CN
- China
- Prior art keywords
- port
- equipment
- amount
- forwarding process
- request
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
- G06F13/364—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/4031—Coupling between buses using bus bridges with arbitration
- G06F13/4036—Coupling between buses using bus bridges with arbitration and deadlock prevention
Abstract
控制设备内的处理以避免死锁情况。所述设备的本地请求引擎在进行请求之前确定待服务于所述请求的所述设备的端口是否在处理其它请求中正在进行转发进程。如果正在进行转发进程,则将所述请求转发到所述端口。否则,挂起所述请求。这样避免了死锁情况,并且允许设备即使在部分恢复情况下也仍可操作。
Description
技术领域
本发明的一个或多个方面通常涉及通信环境内的设备,具体地说,涉及避免设备内的死锁。
背景技术
设备用在通信环境(例如计算环境)内,以促进环境的各个组件之间的通信。例如,设备可以在一端处耦合到外部设备而在另一端处耦合到系统总线,并且设备从外部设备接收请求并经由系统总线将它们转发到系统组件。
很多类型的设备可以用于通信,包括PCIe(外设互连高速)设备。PCIe设备基于PCIe技术,其为一种点对点技术。PCIe设备经由被称为互连或链路的逻辑连接来进行通信。链路是两个PCIe端口之间的点对点通信信道,允许二者发送/接收普通PCI请求(配置读/写、I/O读/写、存储器读/写)和中断。
PCIe具有与之关联的规范,其提供对于使用PCIe设备的通信待服从的特定规则。该规范由PCI-SIG(PCI特殊兴趣小组)开发并且维护。一种这样的规则是排序规则,其规定将要处理包括交易的请求的顺序。
发明内容
通过提供一种设备来克服现有技术的缺点并且提供优点,所述设备包括:端口,用于接收请求;以及请求引擎,耦合到所述端口,所述请求引擎被配置为执行一种方法。例如,所述方法包括:确定所述端口是否能够对向内请求进行转发进程;响应于确定转发进程在所述端口受阻塞,挂起将请求发送到所述端口;并且响应于确定所述端口正在进行转发进程,将所述请求发送到所述端口。
在此还描述并且要求与本发明的一个或多个方面有关的方法和计算机程序产品。此外,在此还描述并且要求与本发明的一个或多个方面有关的服务。
通过本发明的一个或多个方面的技术来实现附加特征和优点。本发明的其它实施例和方面在此详细描述并且被看作一部分所要求的本发明。
附图说明
在说明书的结尾的权利要求中,作为示例特定地指出并且独特地要求本发明的一个或多个方面。从结合附图进行的以下详细描述中,本发明的以上和其它目的、特征和优点是显而易见的,其中:
图1描述根据本发明一方面所使用的设备的一个示例;
图2描述根据本发明一方面的图1的设备的端口的进一步细节;
图3描述根据本发明一方面所使用的用于设置/重置转发进程指示符的逻辑的一个实施例;
图4描述根据本发明一方面用于确定请求是否待发送到设备的端口的逻辑的一个实施例;以及
图5描述合并本发明一个或多个方面的计算机程序产品的一个实施例。
具体实施方式
根据本发明一方面,提供用于控制设备内的处理以例如避免死锁情况的能力。所述设备的本地请求引擎在进行请求之前确定待服务于所述请求的所述设备的端口是否在处理其它请求时正在进行转发进程。如果正在进行转发进程,则将所述请求转发到所述端口。否则,挂起所述请求。这样避免了死锁情况,并且允许设备即使在部分恢复情况下也仍可操作。
在一个具体示例中,所述设备是PCIe设备,并且所避免的死锁是非公布请求死锁。在一个示例中,当共享系统资源或设备端口处于恢复中时,归因于PCIe排序规则,非公布请求可能死锁。例如,如果设备的向外端口并非正在处理公布请求,并且一次仅可以挂起特定数量的公布写入,则附加的公布写入在该端口处累积。由于排序规则规定没有请求可以通过公布写入,因此所接收到的非公布请求可能不被处理并且可能产生死锁。因此,根据本发明一方面,在进行请求之前,请求器确定在处理公布请求时是否正在进行转发进程。如果是,则发送请求;否则,延迟发送请求。
如上所述,在一个实施例中,请求可以是公布请求或非公布请求。此外,请求可以是完成请求。公布请求是不期望接收完成的请求,对于公布请求无需完成。公布请求的示例包括存储器写入和消息。公布请求与非公布请求的对比在于需要完成。非公布请求的示例是存储器读取、存储器读取锁定、I/O读取、I/O写入、配置读取和配置写入。完成是完成先前所发布的请求的请求。完成包括数据完成和非数据完成。
参照图1描述根据本发明一方面所使用的设备的一个示例。在该示例中,设备是PCIe设备;然而,可以通过其它类型的设备来使用本发明的一个或多个方面。参照图1,作为示例,PCIe设备100包括例如多个本地请求引擎,其包括一个或多个本地处理器(PU)102以及一个或多个直接存储器存取(DMA)引擎104。本地请求引擎耦合到至少一个仲裁器/开关106,仲裁器/开关106用于控制设备的哪个端口将要从处理器或DMA引擎接收特定请求。
当来自请求引擎的请求针对外部PCI设备时,开关106将请求引导到南部端口110,南部端口110耦合到PCIe总线112;而当请求是系统请求时,引导到北部端口120,北部端口120耦合到系统总线122。
从外部设备输入到设备的请求在南部端口110处被接收到,并且发送到北部端口120。经由缓冲器130来发送作为公布请求的请求。
在PCI和其它技术中,基于一组排序规则以特定顺序来处理请求。提供这些规则以防止死锁情况;然而,在特定情况下,死锁可能仍然产生,如在此所描述的那样,因此,通过本发明的一个或多个方面得以解决。下表中示出用于PCI的排序规则的一个示例。
*Y-表示命令必须被允许通过以避免死锁。在所指定的列中,命令不能无限地阻塞,并且不能被命令阻塞。
*N-表示在所指定的列中命令不能通过命令,否则数据完整性可能被折中。
*Y/N-表示命令被允许通过,但在所指定的列中并不要求通过命令。没有严格的排序要求。
PCI排序规则要求公布请求能够通过非公布请求以及完成。此外,一种超越排序规则是:没有请求可以通过公布写入请求。
为了管理不同类型的请求的处理并且控制对处理请求的资源的访问,对于用于处理给定请求类型的每个可用资源保持额度(credit)。当该类型的请求由发送器(例如,南部端口)发送到接收器(例如,北部端口)时,消耗额度,并且请求消耗接收器中的资源。当请求完成或另外释放资源时,将额度返回到发送器。例如,可以存在分配给公布写入请求的x个额度。如果额度的数量耗尽,则请求将在发送器处排队。如果对于给定的请求类型没有额度可用,则阻塞该类型的请求,直到额度变得可用。
在一个实现方式中,存在不同类型的额度,包括公布额度、非公布额度和完成额度,其分别与公布请求、非公布请求和完成请求对应。此外,每个类型的额度可以具有报头额度和数据额度。例如,公布额度可以包括用于报头的公布报头额度和用于数据的公布数据额度。对于非公布请求和完成请求同样如此。
在一个示例中,在设备的端口处保持额度,如图2所示。参照图2,端口(例如南部端口110)包括保持额度202的堆栈200以及实现设备的各种逻辑的状态机204。额度202包括各种类型的额度,包括公布额度、非公布额度和/或完成额度,但不限于此。
此外,端口110还包括配置空间210。配置空间210包括多个控制件,包括例如:转发进程指示符212,其存储在配置空间的设备状态寄存器中,并且用于确定端口是否正在对请求进行转发进程;以及一个或多个配置控制件214,用于控制转发进程指示符。端口还可以包括其它空间、其它控制件和/或其它信息。以下提供关于配置控制件的附加信息。
在一个实施例中,配置控制件214包括以下控制件:
1.报头额度阈值:该阈值定义设备中的可用公布报头额度被认为LOW的点。当存在比在此所编程的值更少的发放到外部PCIe设备的额度时,转发进程指示符开始在编程转发进程时间窗口(下面描述)内寻找额度更新。
2.数据额度阈值:该阈值定义设备中的可用公布数据额度被认为LOW的点。当存在比在此所编程的值更少的发放到外部PCIe设备的额度时,转发进程指示符开始在编程转发进程时间窗口内寻找额度更新。
3.窗口定时器:该定时器值定义转发进程时间窗口,其为在设备状态寄存器中解除声明转发进程指示符之前,对于向内公布额度,硬件(例如状态机)将等待任何要对额度进行的转发进程返回到外部PCIe设备的时间长度。
如果在该时间窗口内没有返回公布报头或数据额度,并且公布报头或公布数据额度可用值小于所编程的转发进程阈值,则转发进程指示符将进入例如指示设备当前未进行转发进程的“0”,并且存在死锁向外非公布请求的可能。
于在此所描述的一个特定示例中,当共享系统资源或端口(例如北部端口)由于排序规则而处于恢复中时,非公布请求可能在功能PCIe端口(例如南部端口)上死锁。如果公布额度在PCI链路上耗尽并且其它公布请求在链路的发送器端排队,则在被停止的公布写入的方向上,将不进行请求。
因此,根据本发明一方面,提供用于检测由于受拖延的业务备份而导致设备何时耗尽公布额度的能力。在一个示例中,如上所述,该能力使用转发进程指示符以标识给定的端口是否能够对向内公布写入请求进行转发进程。如果端口能够对向内公布写入请求继续进行转发进程,则向外非公布请求由于缺少备份来自响应PCIe设备的向内完成有效载荷的向内公布额度而将不死锁。读取转发进程指示符允许请求引擎关于下一步做什么进行判断。
使用端口内的硬件(例如状态机204)来相对连续地检查并且更新转发进程指示符。当其不是时,硬件并不指示端口正在进行转发进程,同时,硬件并不过度悲观,并且指示在高吞吐量持续时间期间端口不进行转发进程。存在可能影响端口如何确定其是否正在进行转发进程的多种系统因素。考虑这些因素并且允许系统调整。因此,在一个实施例中,配置控制件用于调整转发进程指示符的功能,如以下所指示的那样。
参照图3描述配置控制件的使用。初始地,在一个示例中,关于是否存在未完成的向内公布请求额度(又叫做公布额度)进行确定,STEP300。例如,既存在公布报头额度又存在公布数据额度。如果存在未完成的向内公布请求额度,则关于用于端口的公布额度是否在阈值级别以下进行进一步的确定,INQUIRY302。如果报头和数据额度都不在阈值级别以下,则指示符指示正在进行转发进程(例如,转发进程指示符设置为1),STEP304。然而,如果公布额度(例如公布报头额度和/或公布数据额度)在阈值以下,则关于一个或多个公布额度是否已经在窗口定时器内返回进行又一确定,INQUIRY306。如果公布报头和数据额度都在窗口定时器内返回,则再次进行转发进程,STEP304。处理然后返回INQUIRY300,从此,逻辑按所定义的时间间隔重复。
返回到INQUIRY306,如果公布报头和数据额度之一或二者在窗口定时器内未返回,则指示符设置为指示不进行转发进程(例如转发进程指示符设置为0),STEP308。处理然后继续STEP300。
在一个实施例中,配置控制件是可经由处理器代码(例如本地处理器内的固件)配置的——如在此使用的那样,固件包括例如处理器的微码、毫码和/或宏码。其包括例如在更高级机器代码的实现方式中所使用的硬件级别指令和/或数据结构。在一个实施例中,其包括例如典型地传送为微码的私有代码,其包括对于下层硬件特定的受信软件或微码,并且控制操作系统对系统硬件的访问)。例如,处理器代码可以基于设备的所学习的知识等自动地设置或调整阈值。例如,设备的rootcomplex或耦合至其的逻辑执行总线行走(buswalk)以学习设备的配置,例如PCIe链路宽度、最大程序链路事务层分组(TLP)大小和/或初始额度计数(基于内部缓冲器大小)。然后,(例如PU102的)处理器代码可以基于该信息来设置/改变配置控制件的值。
此外,对于窗口,在检查FPI指示符的同时,在端口的配置空间中所保持的状态中提供值,其允许端口查看自从最近额度更新起已经过去多长时间。然后该信息可以用于调整窗口。作为示例,端口可以具有8个公布报头额度、512个公布数据额度(8kB的缓冲器空间,每额度16B),并且是具有4kB的最大TLP大小的x8PCIeGen1链路。通过该配置,将花费大约2微秒来发送单个4kBTLP。因此,在一个示例中,FPI报头额度阈值设置为2,FPI数据额度阈值设置为256(4kB),FPI窗口定时器设置为4微秒。随着系统参数调整,对FPI配置设置进行调整以考虑改变的参数。例如,如果在同一系统中链路宽度下降到x4,则发送最大大小TLP所需的时间将加倍到4微秒。因此,在一个实施例中,FPI窗口定时器更新为8微秒,以考虑TLP传输等待时间。
如上所述,请求器使用转发进程指示符来确定其是否应进行非公布请求。参照图4描述与进行该确定关联的逻辑的一个实施例。
初始地,请求器想要进行向外非公布请求,STEP400。因此,关于在本地端口(例如南部端口)中是否声明转发进程指示符进行确定,INQUIRY402。如果转发进程指示符指示正在进行转发进程,则进行请求,STEP404,并且完成处理,STEP406。
返回到INQUIRY402,如果转发进程指示符指示未进行进程(在此被称为阻塞),则不发送请求,并且在一个实施例中,关于请求器是否具有其它要执行的工作进行检查,INQUIRY410。如果存在其它要执行的工作,则请求器执行其它工作,STEP412,并且处理继续STEP400。否则,请求器等待预定时间量,STEP414,然后将再次进行确定。处理继续STEP400。
以上详细描述的是用于避免非公布请求死锁情况并且允许设备即使在部分恢复情况下也保持可操作的能力。这通过例如在设备的端口配置空间中提供单个状态位来完成,其可以在引擎对附连到关联PCI端口的外部设备进行任何非公布请求之前由本地请求引擎(例如本地处理器)读取。被称为转发进程指示符的状态位标识给定端口何时能够对向内公布写入请求进行转发进程,因此指示是否存在非公布请求死锁的可能。设备的本地请求引擎可以使用该信息来避免非公布请求死锁情况。
由于存在确定端口是否实际上正在进行转发进程时所涉及的很多因素,因此提供用于状态指示符的配置控制件,允许取决于系统配置和数据流来调整转发进程指示符。
在一些设备中,尤其是在高RAS(可恢复性、可用性、可服务性)设备中,并不期望单个端口或资源上的恢复动作以引起设备的完全恢复。可能可以恢复损坏(offending)端口或资源,并且允许设备的其余部分保持有效并且完全运作。在这些设备中,避免非公布请求死锁可以促进这种类型的恢复。
如上所述,用于非公布请求的完成分组可能在高RASPCIe设备中死锁,在高RASPCIe设备中PCIe端口使用用于向内请求和完成的多个共享资源;共享资源可以与PCIe端口分离地恢复;并且存在用于PCIe端口的多个单独和分离受控的请求器。作为示例,可能的死锁归因于以下因素的组合:部分PCIe设备恢复阻塞了用于向内公布写入的目的点,并且PCIe端口在接受向内请求/完成时仍然有效;PCIe公布写入流控制额度耗尽;PCIe排序规则,其中,不能旁路队列的公布写入请求,例如,如果设备在公布写入请求之外并且具有排队的公布写入,则由于排序规则而导致没有非公布完成将完成;和/或内部设备请求器对PCIe端口进行非公布请求,因为其不处于恢复域中。
在特定示例中,如果恢复情况出现在北部端口(其为共享资源)上,则非公布死锁可能出现,并且来自南部端口的写入数据在标定北部端口的公布写入缓冲器中备份。当缓冲器装满北部端口的延长恢复时间时,南部端口将耗尽PCI公布额度,这进而由于PCIe排序规则而停止来自附连到南部端口的设备的所有向内业务。本地处理器可能想要在任何时间读取附连到南部端口的PCIe设备中的存储器位置。如果其碰巧在向内写入缓冲器已经耗尽PCIe额度之后尝试该非公布读取请求,则因为归因于PCIe排序规则而将不允许端点PCIe设备返回完成数据,所以读取请求将在本地设备中接收完成超时。该超时结合北部端口恢复可能导致严重错误,这要求重置整个系统。根据本发明一个或多个方面来避免这种情况。
根据本发明一方面,转发进程指示符指示在处理向内公布写入请求中PCIe端口何时正在进行进程。如果设备正在进行转发进程,则可以返回非公布请求完成。指示符在设备的状态寄存器中是可读取的。无法容忍响应超时的任何设备请求器可以在发布请求之前检查状态。可通过可配置参数(例如公布报头额度阈值、公布数据额度阈值和定时器窗口)来调整转发进程指示符。
有利地,通过使用转发进程指示符,PCIe设备可以在保持有效PCIe端口的同时支持部分恢复。请求引擎可以在进行非公布请求之前检查状态指示符,以避免完成超时。转发进程指示符提供正在进行进程的实时确定。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
现在参考图5,在一个例子中,计算机程序产品500包括,例如,一个或多个计算机可读存储介质502,在其上存储有计算机可读的程序代码装置或逻辑504,以提供并方便本发明的一个或多个方面。
体现在计算机可读介质上的程序代码可以用任何适当的介质传输,所述介质包括但不限于:无线、有线、光缆、RF等,或上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本文中将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
除了上述,本发明的一个或多个方面可由服务提供商提供、许诺(offer)、部署、管理、服务等,该服务提供商提供用户环境的管理。例如,服务提供商可创建、维持、支持等计算机代码和/或计算机基础设施,其为一个或多个用户执行本发明的一个或多个方面。反过来,服务提供商可例如根据预订和/或费用协议从用户接受付费。额外地或可替换地,服务提供商可从向一个或多个第三方销售广告内容接受付费。
在本发明的一个方面,可部署用于执行本发明的一个或多个方面的应用。作为一个例子,部署应用包括提供计算机基础设施,其可操作以执行本发明的一个或多个方面。
作为本发明的又一个方面,可部署计算基础设施,其包括将计算机可读代码集成到计算机系统,其中与计算系统结合的代码能够执行本发明的一个或多个方面。
作为本发明的再一个方面,可提供用于集成计算基础设施包括将计算机可读码集成到计算机系统的过程。计算机系统包括计算机可读介质,其中计算机介质包括本发明的一个或多个方面。与计算机系统结合的代码能够执行本发明的一个或多个方面。
尽管以上描述了各种实施例,但是这些仅为示例。例如,其他类型的设备可以并入和/或使用本发明的一个或多个方面。进一步,可以使用其他类型的配置控制件,以及其他类型的额度。再进一步,可以使用其他规则以确定何时声明/去声明转发进程指示符。许多其他变化也是可能的。
各种类型的计算环境可以受益于本发明的一个或多个方面。例如,包括耦合到存储器的至少一个处理器和I/O设备或经由一个或多个系统总线的接口的计算环境可以包括这些设备的一个或多个和/或本发明的一个或多个方面。进一步,可以包括这些设备的一个或多个和/或本发明的一个或多个方面的特定系统包括由国际商业机器公司提供的SystemorzEnterprise196(z196)。此外,在其他实施例中,可以使用其他硬件或软件。许多变更是可能的。
作为进一步的例子,可使用适于存储和/或执行程序代码的数据处理系统,其包括至少一个通过系统总线直接或间接耦合到存储元件的处理器。存储器元件包括,例如,在程序代码的实际执行期间使用的本地存储器、大容量存储器以及高速缓冲存储器,其提供至少一些程序代码的临时存储,以便减少在执行期间必须从大容量存储器取回代码的次数。
输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备、DASD、磁带、CD、DVD、拇指驱动器(thumbdrive)以及其他的存储介质等)可直接或通过介于其间的I/O控制器被耦合到系统。网络适配器也可被耦合到系统以使得数据处理系统能够通过介于其间的私有或公共网络而耦合到其他的数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡仅是一些可获得的网络适配器类型。
而且,其他类型的计算环境可受益于本发明的一个或多个方面。作为例子,环境可包括仿真器(例如,软件或其他仿真机制),其中特定架构(包括例如指令执行、诸如地址转换的架构功能、以及架构寄存器)或其子集被仿真(例如,在具有处理器和存储器的本机计算机系统中)。在这样的环境中,仿真器的一个或多个仿真功能可实施本发明的一个或多个方面,即使执行仿真器的计算机可具有与正被仿真的能力不同的架构。作为一个例子,在仿真模式中,解码正被仿真的特定指令或操作,且建立合适的仿真功能以实施单个指令或操作。
在仿真环境中,主计算机包括例如存储器以存储指令和数据;指令获取单元以从存储器获取指令,且可选地,提供用于获取的指令的本地缓冲;指令解码单元以接收获取的指令并确定已被获取的指令的类型;以及指令执行单元以执行该指令。执行可包括将数据从存储器加载到寄存器;从寄存器将数据存储回存储器;或执行如由解码单元确定的某些类型的算术或逻辑运算。在一个例子中,每个单元在软件中实现。例如,被所述单元执行的操作被实现为仿真器软件中的一个或多个子例程。
在此使用的术语仅是为了描述特定实施例,且不旨在限制本发明。如在此使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另外清楚地指明。还将理解,当在说明书中使用时,术语“包括”和/或“包含”指明存在所述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或附加一个或多个其他特征、整体、步骤、操作、元件和/或组件。
所附权利要求书中的所有装置或步骤加功能元件的相应结构、材料、操作以及等价物,如有的话,旨在包括用于结合如特别要求保护的其他所要求保护的元件来执行所述功能的任何结构、材料或操作。呈现本发明的说明是为了示出和描述的作用,但不是穷尽性的或将本发明限制于所公开的形式。许多修改和变化对本领域普通技术人员来说是明显的,且不脱离本发明的范围。选择和描述实施例是为了最佳地解释本发明的原理和实际应用,并使得本领域普通技术人员能针对适于考虑的特定用途的具有各种修改的各种实施例理解本发明。
Claims (11)
1.一种通信环境内的设备,包括:
端口,用于接收请求;
请求引擎,耦合到所述端口,所述请求引擎被配置为执行方法,所述方法包括:
确定所述端口是否能够对向内请求进行转发进程;
响应于确定转发进程在所述端口受阻塞,挂起将请求发送到所述端口;以及
响应于确定所述端口正在进行转发进程,将所述请求发送到所述端口;
其中,所述确定包括:检查所述端口内所存储的转发进程指示符,以确定所述端口是否正在进行转发进程;
其中,所述端口包括硬件,所述硬件被配置为:将所述转发进程指示符设置为指示是否正在进行转发进程;并且其中,为了设置所述转发进程指示符,所述硬件被配置为:
将用于所述端口的公布额度的数量与阈值级别进行比较;以及
响应于所述比较指示所述公布额度的数量关于所述阈值级别处于所定义的级别,将所述转发进程指示符设置为指示转发进程。
2.如权利要求1所述的设备,其中,所述硬件进一步被配置为:响应于所述比较指示所述公布额度的数量关于所述阈值级别不处于所定义的级别,将所转发的进程指示符设置为指示受阻塞。
3.如权利要求1所述的设备,其中,为了设置所述转发进程指示符,所述硬件被配置为:
确定至少一个公布额度是否对于所述端口是未完成的;
响应于确定至少一个公布额度是未完成的,执行所述至少一个公布额度的一个或多个检查;以及
响应于所述执行指示不足数量的公布额度,将所述转发进程指示符设置为指示受阻塞。
4.如权利要求3所述的设备,其中,为了执行所述检查,所述硬件进一步被配置为:
确定公布额度的数量是否在阈值级别以下;以及
响应于所述公布额度的数量在所述阈值级别以下,确定一个或多个公布额度是否在定时器窗口内返回,其中,响应于公布额度的数量在阈值级别以下并且一个或多个额度在定时器窗口内未返回,将转发进程指示符设置为受阻塞。
5.如权利要求4所述的设备,还包括:处理器,用于设置或调整所述阈值级别和所述定时器窗口中的至少一个。
6.如权利要求1所述的设备,其中,所述端口是所述设备的南部端口,所述请求引擎是所述设备的本地处理器或所述设备的直接存储器存取引擎之一。
7.如权利要求1所述的设备,其中,响应于确定转发进程受阻塞,所述请求引擎执行其它工作。
8.一种控制通信环境的设备内的处理的方法,所述方法包括:
由所述设备的请求器确定所述设备的端口是否能够对向内请求进行转发进程;
响应于确定转发进程在所述端口受阻塞,挂起将请求发送到所述端口;以及
响应于确定所述端口正在进行转发进程,将所述请求发送到所述端口;
其中,所述确定包括:检查所述端口内所存储的转发进程指示符,以确定所述端口是否正在进行转发进程;
其中,所述方法还包括:将所述转发进程指示符设置为指示是否正在进行转发进程;
其中,所述设置包括:
确定至少一个公布额度是否对于所述端口是未完成的;
响应于确定至少一个公布额度是未完成的,执行所述至少一个公布额度的一个或多个检查;以及
响应于所述执行指示不足数量的公布额度,将所述转发进程指示符设置为指示受阻塞。
9.如权利要求8所述的方法,其中,所述执行包括:
确定公布额度的数量是否在阈值级别以下;以及
响应于所述公布额度的数量在所述阈值级别以下,确定一个或多个额度是否在定时器窗口内返回,其中,响应于公布额度的数量在阈值级别以下并且一个或多个额度在定时器窗口内未返回,将转发进程指示符设置为受阻塞。
10.如权利要求9所述的方法,还包括:设置或调整所述阈值级别和所述定时器窗口中的至少一个。
11.如权利要求8所述的方法,其中,所述端口是所述设备的南部端口,所述请求器是所述设备的本地处理器或所述设备的直接存储器存取引擎之一。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/151,073 | 2011-06-01 | ||
US13/151,073 US8495265B2 (en) | 2011-06-01 | 2011-06-01 | Avoiding non-posted request deadlocks in devices by holding the sending of requests |
PCT/IB2012/052295 WO2012164416A1 (en) | 2011-06-01 | 2012-05-09 | Avoiding non-posted request deadlocks in devices |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103597457A CN103597457A (zh) | 2014-02-19 |
CN103597457B true CN103597457B (zh) | 2016-03-30 |
Family
ID=47258457
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280025852.5A Active CN103597457B (zh) | 2011-06-01 | 2012-05-09 | 避免设备中的非公布请求死锁 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8495265B2 (zh) |
CN (1) | CN103597457B (zh) |
GB (1) | GB2503632B (zh) |
WO (1) | WO2012164416A1 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8930602B2 (en) | 2011-08-31 | 2015-01-06 | Intel Corporation | Providing adaptive bandwidth allocation for a fixed priority arbiter |
US9021156B2 (en) | 2011-08-31 | 2015-04-28 | Prashanth Nimmala | Integrating intellectual property (IP) blocks into a processor |
US8805926B2 (en) | 2011-09-29 | 2014-08-12 | Intel Corporation | Common idle state, active state and credit management for an interface |
US8929373B2 (en) | 2011-09-29 | 2015-01-06 | Intel Corporation | Sending packets with expanded headers |
US8874976B2 (en) | 2011-09-29 | 2014-10-28 | Intel Corporation | Providing error handling support to legacy devices |
US8713234B2 (en) | 2011-09-29 | 2014-04-29 | Intel Corporation | Supporting multiple channels of a single interface |
US8711875B2 (en) | 2011-09-29 | 2014-04-29 | Intel Corporation | Aggregating completion messages in a sideband interface |
US8713240B2 (en) | 2011-09-29 | 2014-04-29 | Intel Corporation | Providing multiple decode options for a system-on-chip (SoC) fabric |
US8775700B2 (en) | 2011-09-29 | 2014-07-08 | Intel Corporation | Issuing requests to a fabric |
US9489304B1 (en) * | 2011-11-14 | 2016-11-08 | Marvell International Ltd. | Bi-domain bridge enhanced systems and communication methods |
US9053251B2 (en) | 2011-11-29 | 2015-06-09 | Intel Corporation | Providing a sideband message interface for system on a chip (SoC) |
US20140281099A1 (en) * | 2013-03-14 | 2014-09-18 | Broadcom Corporation | METHOD, SYSTEM, AND COMPUTER PROGRAM PRODUCT FOR CONTROLLING FLOW OF PCIe TRANSPORT LAYER PACKETS |
US20170212579A1 (en) * | 2016-01-25 | 2017-07-27 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Storage Device With Power Management Throttling |
US10642780B2 (en) | 2016-03-07 | 2020-05-05 | Mellanox Technologies, Ltd. | Atomic access to object pool over RDMA transport network |
US9792167B1 (en) * | 2016-09-27 | 2017-10-17 | International Business Machines Corporation | Transparent north port recovery |
US10911261B2 (en) | 2016-12-19 | 2021-02-02 | Intel Corporation | Method, apparatus and system for hierarchical network on chip routing |
US10846126B2 (en) | 2016-12-28 | 2020-11-24 | Intel Corporation | Method, apparatus and system for handling non-posted memory write transactions in a fabric |
US10552367B2 (en) * | 2017-07-26 | 2020-02-04 | Mellanox Technologies, Ltd. | Network data transactions using posted and non-posted operations |
TWI722447B (zh) * | 2019-06-03 | 2021-03-21 | 瑞昱半導體股份有限公司 | 傳輸介面的錯誤處理方法以及相關的錯誤處理架構 |
US11916802B2 (en) | 2022-03-31 | 2024-02-27 | International Business Machines Corporation | Data transmission flow control regime |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
CN1798083A (zh) * | 2004-12-30 | 2006-07-05 | 朗迅科技公司 | 用于提供末端用户终端之间的相同会话切换的方法和装置 |
CN100437537C (zh) * | 2003-08-14 | 2008-11-26 | 得州仪器公司 | 在快速pci结构上产生来自pci装置的多个业务类别 |
CN101447931A (zh) * | 2008-12-26 | 2009-06-03 | 华为技术有限公司 | 一种排他操作的实现方法和装置 |
CN100504824C (zh) * | 2003-03-31 | 2009-06-24 | 英特尔公司 | 用于处理读取请求的方法、设备和系统 |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5742760A (en) | 1992-05-12 | 1998-04-21 | Compaq Computer Corporation | Network packet switch using shared memory for repeating and bridging packets at media rate |
DE19654593A1 (de) | 1996-12-20 | 1998-07-02 | Pact Inf Tech Gmbh | Umkonfigurierungs-Verfahren für programmierbare Bausteine zur Laufzeit |
US6078736A (en) | 1997-08-28 | 2000-06-20 | Xilinx, Inc. | Method of designing FPGAs for dynamically reconfigurable computing |
US6122679A (en) | 1998-03-13 | 2000-09-19 | Compaq Computer Corporation | Master DMA controller with re-map engine for only spawning programming cycles to slave DMA controllers which do not match current programming cycle |
US6292910B1 (en) | 1998-09-14 | 2001-09-18 | Intel Corporation | Method and apparatus for detecting a bus deadlock in an electronic system |
US6314477B1 (en) | 1998-10-30 | 2001-11-06 | Agilent Technologies, Inc. | Performance of fibre channel protocol sequence reassembly using expected frame information and buffer list calculations |
US6226704B1 (en) * | 1998-12-01 | 2001-05-01 | Silicon Integrated Systems Corporation | Method and apparatus for performing bus transactions orderly and concurrently in a bus bridge |
US6507211B1 (en) | 1999-07-29 | 2003-01-14 | Xilinx, Inc. | Programmable logic device capable of preserving user data during partial or complete reconfiguration |
US6557101B1 (en) | 1999-12-22 | 2003-04-29 | Sycamore Networks, Inc. | Methods and apparatus for upgrading programmable control logic without disturbing network traffic flowing through functional elements controlled by the control logic |
US6735174B1 (en) * | 2000-03-29 | 2004-05-11 | Intel Corporation | Method and systems for flow control of transmissions over channel-based switched fabric connections |
US7444500B1 (en) | 2000-08-14 | 2008-10-28 | General Software, Inc. | Method for executing a 32-bit flat address program during a system management mode interrupt |
US6937063B1 (en) | 2000-09-02 | 2005-08-30 | Actel Corporation | Method and apparatus of memory clearing with monitoring RAM memory cells in a field programmable gated array |
US7096398B1 (en) | 2000-09-29 | 2006-08-22 | Intel Corporation | Distributed test control architecture |
JP3880843B2 (ja) | 2000-12-01 | 2007-02-14 | 東芝マイクロエレクトロニクス株式会社 | 電子回路装置 |
PL362792A1 (en) | 2001-01-31 | 2004-11-02 | International Business Machines Corporation | Method and apparatus for controlling flow of data between data processing systems via a memory |
US6757768B1 (en) * | 2001-05-17 | 2004-06-29 | Cisco Technology, Inc. | Apparatus and technique for maintaining order among requests issued over an external bus of an intermediate network node |
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 |
US6807586B2 (en) | 2002-01-09 | 2004-10-19 | International Business Machines Corporation | Increased computer peripheral throughput by using data available withholding |
US7124230B2 (en) * | 2002-04-30 | 2006-10-17 | Intel Corporation | Use of bus transaction identification codes |
US6867614B1 (en) | 2003-05-27 | 2005-03-15 | Storage Technology Corporation | Multiconfiguration module for hardware platforms |
US7443869B2 (en) | 2003-08-04 | 2008-10-28 | Intel Corporation | Deadlock avoidance queuing mechanism |
US20050091383A1 (en) | 2003-10-14 | 2005-04-28 | International Business Machines Corporation | Efficient zero copy transfer of messages between nodes in a data processing system |
US7315912B2 (en) * | 2004-04-01 | 2008-01-01 | Nvidia Corporation | Deadlock avoidance in a bus fabric |
US7231560B2 (en) | 2004-04-16 | 2007-06-12 | Via Technologies, Inc. | Apparatus and method for testing motherboard having PCI express devices |
US7210000B2 (en) | 2004-04-27 | 2007-04-24 | Intel Corporation | Transmitting peer-to-peer transactions through a coherent interface |
US7519865B1 (en) | 2004-05-06 | 2009-04-14 | Hewlett-Packard Development Company, L.P. | Systems and methods for identifying incomplete transactions |
US7996572B2 (en) * | 2004-06-02 | 2011-08-09 | Intel Corporation | Multi-node chipset lock flow with peer-to-peer non-posted I/O requests |
EP1803259B1 (en) | 2004-09-30 | 2017-09-13 | Telefonaktiebolaget LM Ericsson (publ) | Carrier class resilience solution for switched ethernet local area networks (lans) |
US7676611B2 (en) | 2004-10-01 | 2010-03-09 | Qlogic, Corporation | Method and system for processing out of orders frames |
JP2006178826A (ja) | 2004-12-24 | 2006-07-06 | Fujitsu Ltd | Ipパケット伝送装置のデータアップデート方法及び装置 |
US7853774B1 (en) | 2005-03-25 | 2010-12-14 | Tilera Corporation | Managing buffer storage in a parallel processing environment |
US7437643B2 (en) | 2005-06-21 | 2008-10-14 | Intel Corporation | Automated BIST execution scheme for a link |
US7685380B1 (en) | 2005-06-29 | 2010-03-23 | Xilinx, Inc. | Method for using configuration memory for data storage and read operations |
US7412555B2 (en) | 2005-09-29 | 2008-08-12 | P.A. Semi, Inc. | Ordering rule and fairness implementation |
US7463056B1 (en) | 2005-12-12 | 2008-12-09 | Xilinx, Inc. | Writeable shift register lookup table in FPGA with SRAM memory cells in lookup table reprogrammed by writing after initial configuration |
US7675929B1 (en) * | 2006-01-03 | 2010-03-09 | Emc Corporation | Method and system for managing data flow in a data transmission system |
US7581044B1 (en) * | 2006-01-03 | 2009-08-25 | Emc Corporation | Data transmission method and system using credits, a plurality of buffers and a plurality of credit buses |
US7412589B2 (en) | 2006-03-31 | 2008-08-12 | International Business Machines Corporation | Method to detect a stalled instruction stream and serialize micro-operation execution |
US20070233821A1 (en) | 2006-03-31 | 2007-10-04 | Douglas Sullivan | Managing system availability |
US7836352B2 (en) | 2006-06-30 | 2010-11-16 | Intel Corporation | Method and apparatus for improving high availability in a PCI express link through predictive failure analysis |
US7616508B1 (en) | 2006-08-10 | 2009-11-10 | Actel Corporation | Flash-based FPGA with secure reprogramming |
EP1892836A1 (en) | 2006-08-24 | 2008-02-27 | Alcatel Lucent | Method for re-programming an FPGA for use in a transmission line element |
TWI335517B (en) * | 2006-08-25 | 2011-01-01 | Via Tech Inc | Method of requests access and scheduling and related apparatus thereof |
US20080163005A1 (en) | 2006-12-28 | 2008-07-03 | Sonksen Bradley S | Error injection in pci-express devices |
GB2452913B (en) * | 2007-09-18 | 2011-06-15 | Virtensys Ltd | Queuing method |
US7747809B2 (en) | 2008-02-19 | 2010-06-29 | International Business Machines Corporation | Managing PCI express devices during recovery operations |
EP2294767A2 (en) | 2008-04-09 | 2011-03-16 | Nxp B.V. | Electronic device and method for controlling an electronic device |
US8140922B2 (en) | 2008-05-20 | 2012-03-20 | International Business Machines Corporation | Method for correlating an error message from a PCI express endpoint |
US8020035B2 (en) | 2008-07-30 | 2011-09-13 | Hewlett-Packard Development Company, L.P. | Expander circuit for a solid state persistent storage device that provides a plurality of interfaces to corresponding storage controllers |
JP2010238150A (ja) | 2009-03-31 | 2010-10-21 | Toshiba Corp | PCIExpress通信システム、及びその通信方法 |
US8090892B2 (en) * | 2009-06-12 | 2012-01-03 | Freescale Semiconductor, Inc. | Ordered queue and methods therefor |
US8381026B2 (en) | 2009-06-22 | 2013-02-19 | Citrix Systems, Inc. | Systems and method for transaction stall detection and propagating the result in a multi-core architecture |
US8400915B1 (en) * | 2010-02-23 | 2013-03-19 | Integrated Device Technology, Inc. | Pipeline scheduler for a packet switch |
US8266331B2 (en) * | 2010-07-12 | 2012-09-11 | International Business Machines Corporation | Transmitting retry request associated with non-posted command via response credit channel |
-
2011
- 2011-06-01 US US13/151,073 patent/US8495265B2/en active Active
-
2012
- 2012-04-20 US US13/452,017 patent/US8516177B2/en active Active
- 2012-05-09 CN CN201280025852.5A patent/CN103597457B/zh active Active
- 2012-05-09 WO PCT/IB2012/052295 patent/WO2012164416A1/en active Application Filing
- 2012-05-09 GB GB1319270.3A patent/GB2503632B/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
CN100504824C (zh) * | 2003-03-31 | 2009-06-24 | 英特尔公司 | 用于处理读取请求的方法、设备和系统 |
CN100437537C (zh) * | 2003-08-14 | 2008-11-26 | 得州仪器公司 | 在快速pci结构上产生来自pci装置的多个业务类别 |
CN1798083A (zh) * | 2004-12-30 | 2006-07-05 | 朗迅科技公司 | 用于提供末端用户终端之间的相同会话切换的方法和装置 |
CN101447931A (zh) * | 2008-12-26 | 2009-06-03 | 华为技术有限公司 | 一种排他操作的实现方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
GB2503632B (en) | 2014-04-16 |
US8516177B2 (en) | 2013-08-20 |
WO2012164416A1 (en) | 2012-12-06 |
CN103597457A (zh) | 2014-02-19 |
US20120311212A1 (en) | 2012-12-06 |
US8495265B2 (en) | 2013-07-23 |
US20120311213A1 (en) | 2012-12-06 |
GB2503632A (en) | 2014-01-01 |
GB201319270D0 (en) | 2013-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103597457B (zh) | 避免设备中的非公布请求死锁 | |
US10019181B2 (en) | Method of managing input/output(I/O) queues by non-volatile memory express(NVME) controller | |
KR101775569B1 (ko) | 가상 재시도 큐 | |
TWI516954B (zh) | 單晶片系統(soc)中的控制頻寬分配 | |
US8943226B1 (en) | Interface for heterogeneous PCI-e storage devices | |
KR102274960B1 (ko) | 컴퓨터 시스템에서의 메모리 쓰기 관리 | |
US10162755B2 (en) | Techniques for implementing barriers to efficiently support cumulativity in a weakly-ordered memory system | |
US8521930B1 (en) | Method and apparatus for scheduling transactions in a host-controlled packet-based bus environment | |
US10614004B2 (en) | Memory transaction prioritization | |
US8850129B2 (en) | Memory ordered store system in a multiprocessor computer system | |
US9959213B2 (en) | Implementing barriers to efficiently support cumulativity in a weakly-ordered memory system | |
JP2013512519A (ja) | いくつかの周辺装置のメモリ間のデータの直接転送のためにメモリに直接アクセスするコントローラ、そのようなコントローラを実現可能にする方法およびコンピュータプログラム | |
US8972667B2 (en) | Exchanging data between memory controllers | |
US10097658B2 (en) | Traffic control of packet transfer | |
US10042554B2 (en) | Increased bandwidth of ordered stores in a non-uniform memory subsystem | |
CN107003959B (zh) | 虚拟遗留线 | |
GB2522653A (en) | Bridge and method for coupling a requesting interconnect and a serving interconnect in a computer system | |
US10642649B2 (en) | Information processing device and system for suppressing degradation of processing performance of program, method for controlling information processing system, and non-transitory computer-readable storage medium | |
JP2018081418A (ja) | アクセス要求制御装置、データアクセスシステム及びアクセス要求制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |