避免设备中的非公布请求死锁的制作方法

文档序号:6495358阅读:218来源:国知局
避免设备中的非公布请求死锁的制作方法
【专利摘要】控制设备内的处理以避免死锁情况。所述设备的本地请求引擎在进行请求之前确定待服务于所述请求的所述设备的端口是否在处理其它请求中正在进行转发进程。如果正在进行转发进程,则将所述请求转发到所述端口。否则,挂起所述请求。这样避免了死锁情况,并且允许设备即使在部分恢复情况下也仍可操作。
【专利说明】避免设备中的非公布请求死锁
【技术领域】
[0001]本发明的一个或多个方面通常涉及通信环境内的设备,具体地说,涉及避免设备内的死锁。
【背景技术】
[0002]设备用在通信环境(例如计算环境)内,以促进环境的各个组件之间的通信。例如,设备可以在一端处耦合到外部设备而在另一端处耦合到系统总线,并且设备从外部设备接收请求并经由系统总线将它们转发到系统组件。
[0003]很多类型的设备可以用于通信,包括PCIe (外设互连高速)设备。PCIe设备基于PCIe技术,其为一种点对点技术。PCIe设备经由被称为互连或链路的逻辑连接来进行通信。链路是两个PCIe端口之间的点对点通信信道,允许二者发送/接收普通PCI请求(配
置读/写、I/O读/写、存储器读/写)和中断。
[0004]PCIe具有与之关联的规范,其提供对于使用PCIe设备的通信待服从的特定规则。该规范由PC1-SIG (PCI特殊兴趣小组)开发并且维护。一种这样的规则是排序规则,其规定将要处理包括交易的请求的顺序。

【发明内容】

[0005]通过提供一种设备来克服现有技术的缺点并且提供优点,所述设备包括:端口,用于接收请求;以及请求引擎,耦合到所述端口,所述请求引擎被配置为执行一种方法。例如,所述方法包括:确定所述端口是否能够对向内请求进行转发进程;响应于确定转发进程在所述端口受阻塞,挂起将请求发送到所述端口 ;并且响应于确定所述端口正在进行转发进程,将所述请求发送到所述端口。
[0006]在此还描述并且要求与本发明的一个或多个方面有关的方法和计算机程序产品。此外,在此还描述并且要求与本发明的一个或多个方面有关的服务。
[0007]通过本发明的一个或多个方面的技术来实现附加特征和优点。本发明的其它实施例和方面在此详细描述并且被看作一部分所要求的本发明。
【专利附图】

【附图说明】
[0008]在说明书的结尾的权利要求中,作为示例特定地指出并且独特地要求本发明的一个或多个方面。从结合附图进行的以下详细描述中,本发明的以上和其它目的、特征和优点是显而易见的,其中:
[0009]图1描述根据本发明一方面所使用的设备的一个示例;
[0010]图2描述根据本发明一方面的图1的设备的端口的进一步细节;
[0011]图3描述根据本发明一方面所使用的用于设置/重置转发进程指示符的逻辑的一个实施例;
[0012]图4描述根据本发明一方面用于确定请求是否待发送到设备的端口的逻辑的一个实施例;以及
[0013]图5描述合并本发明一个或多个方面的计算机程序产品的一个实施例。
【具体实施方式】
[0014]根据本发明一方面,提供用于控制设备内的处理以例如避免死锁情况的能力。所述设备的本地请求引擎在进行请求之前确定待服务于所述请求的所述设备的端口是否在处理其它请求时正在进行转发进程。如果正在进行转发进程,则将所述请求转发到所述端口。否则,挂起所述请求。这样避免了死锁情况,并且允许设备即使在部分恢复情况下也仍可操作。
[0015]在一个具体示例中,所述设备是PCIe设备,并且所避免的死锁是非公布请求死锁。在一个示例中,当共享系统资源或设备端口处于恢复中时,归因于PCIe排序规则,非公布请求可能死锁。例如,如果设备的向外端口并非正在处理公布请求,并且一次仅可以挂起特定数量的公布写入,则附加的公布写入在该端口处累积。由于排序规则规定没有请求可以通过公布写入,因此所接收到的非公布请求可能不被处理并且可能产生死锁。因此,根据本发明一方面,在进行请求之前,请求器确定在处理公布请求时是否正在进行转发进程。如果是,则发送请求;否则,延迟发送请求。
[0016]如上所述,在一个实施例中,请求可以是公布请求或非公布请求。此外,请求可以是完成请求。公布请求是不期望接收完成的请求,对于公布请求无需完成。公布请求的示例包括存储器写入和消息。公布请求与非公布请求的对比在于需要完成。非公布请求的示例是存储器读取、存储器读取锁定、I/o读取、I/O写入、配置读取和配置写入。完成是完成先前所发布的请求的请求。完成包括数据完成和非数据完成。
[0017]参照图1描述根据本发明一方面所使用的设备的一个示例。在该示例中,设备是PCIe设备;然而,可以通过其它类型的设备来使用本发明的一个或多个方面。参照图1,作为示例,PCIe设备100包括例如多个本地请求引擎,其包括一个或多个本地处理器(PU)102以及一个或多个直接存储器存取(DMA)引擎104。本地请求引擎耦合到至少一个仲裁器/开关106,仲裁器/开关106用于控制设备的哪个端口将要从处理器或DMA引擎接收特定请求。
[0018]当来自请求引擎的请求针对外部PCI设备时,开关106将请求引导到南部端口110,南部端口 110耦合到PCIe总线112 ;而当请求是系统请求时,引导到北部端口 120,北部端口 120耦合到系统总线122。
[0019]从外部设备输入到设备的请求在南部端口 110处被接收到,并且发送到北部端口120。经由缓冲器130来发送作为公布请求的请求。
[0020]在PCI和其它技术中,基于一组排序规则以特定顺序来处理请求。提供这些规则以防止死锁情况;然而,在特定情况下,死锁可能仍然产生,如在此所描述的那样,因此,通过本发明的一个或多个方面得以解决。下表中示出用于PCI的排序规则的一个示例。
[0021]
【权利要求】
1.一种设备,包括: 端口,用于接收请求; 请求引擎,耦合到所述端口,所述请求引擎被配置为执行方法,所述方法包括: 确定所述端口是否能够对向内请求进行转发进程; 响应于确定转发进程在所述端口受阻塞,挂起将请求发送到所述端口 ;以及 响应于确定所述端口正在进行转发进程,将所述请求发送到所述端口 ; 其中,所述确定包括:检查所述端口内所存储的转发进程指示符,以确定所述端口是否正在进行转发进程; 其中,所述端口包括硬件,所述硬件被配置为:将所述转发进程指示符设置为指示是否正在进行转发进程;并且其中,为了设置所述转发进程指示符,所述硬件被配置为: 将用于所述端口的公布额度的数量与阈值级别进行比较;以及响应于所述比较指示所述公布额度的数量关于所述阈值级别处于所定义的级别,将所述转发进程指示符设置为指示转发进程。
2.如权利要求1所述的设备,其中,所述硬件进一步被配置为:响应于所述比较指示所述公布额度的数量关于所述阈值级别不处于所定义的级别,将所转发的进程指示符设置为指示受阻塞。
3.如权利要求1所述的设备,其中,为了设置所述转发进程指示符,所述硬件被配置为: 确定至少一个公布额度是否对于所述端口是未完成的; 响应于确定至少一个公布额度是未完成的,执行所述至少一个公布额度的一个或多个检查;以及 响应于所述执行指示不足数量的公布额度,将所述转发进程指示符设置为指示受阻塞。
4.如权利要求3所述的设备,其中,为了执行所述检查,所述硬件进一步被配置为: 确定公布额度的数量是否在阈值级别以下;以及 响应于所述公布额度的数量在所述阈值级别以下,确定一个或多个公布额度是否在定时器窗口内返回,其中,响应于公布额度的数量在阈值级别以下并且一个或多个额度在定时器窗口内未返回,将转发进程指示符设置为受阻塞。
5.如权利要求4所述的设备,还包括:处理器,用于设置或调整所述阈值级别和所述定时器窗口中的至少一个。
6.如权利要求1所述的设备,其中,所述端口是所述设备的南部端口,所述请求引擎是所述设备的本地处理器或所述设备的直接存储器存取引擎之一。
7.如权利要求1所述的设备,其中,响应于确定转发进程受阻塞,所述请求引擎执行其它工作。
8.—种控制通信环境的设备内的处理的方法,所述方法包括: 由所述设备的请求器确定所述设备的端口是否能够对向内请求进行转发进程; 响应于确定转发进程在所述端口受阻塞,挂起将请求发送到所述端口 ;以及 响应于确定所述端口正在进行转发进程,将所述请求发送到所述端口 ; 其中,所述确定包括:检查所述端口内所存储的转发进程指示符,以确定所述端口是否正在进行转发进程; 其中,所述方法还包括:将所述转发进程指示符设置为指示是否正在进行转发进程; 其中,所述设置包括: 确定至少一个公布额度是否对于所述端口是未完成的; 响应于确定至少一个公布额度是未完成的,执行所述至少一个公布额度的一个或多个检查;以及 响应于所述执行指示不足数量的公布额度,将所述转发进程指示符设置为指示受阻塞。
9.如权利要求8所述的方法,其中,所述执行包括: 确定公布额度的数量是否在阈值级别以下;以及 响应于所述公布额度的数量在所述阈值级别以下,确定一个或多个额度是否在定时器窗口内返回,其中,响应于公布额度的数量在阈值级别以下并且一个或多个额度在定时器窗口内未返回,将转发进程指示符设置为受阻塞。
10.如权利要求9所述的方法,还包括:设置或调整所述阈值级别和所述定时器窗口中的至少一个。
11.如权利要求8所述的方法,其中,所述端口是所述设备的南部端口,所述请求器是所述设备的本地处理器或所述设备的直接存储器存取引擎之一。
12.一种用于控制通信环境的设备内的处理的计算机程序产品,所述计算机程序产品包括: 计算机可读介质,可由处理电路读取,并且存储用于由所述处理电路执行的指令,以用于执行方法,所述方法包括: 由所述设备的请求器确定所述设备的端口是否能够对向内请求进行转发进程; 响应于确定转发进程在所述端口受阻塞,挂起将请求发送到所述端口 ;以及 响应于确定所述端口正在进行转发进程,将所述请求发送到所述端口 ; 其中,所述确定包括:检查所述端口内所存储的转发进程指示符,以确定所述端口是否正在进行转发进程;以及 其中,所述方法还包括:将所述转发进程指示符设置为指示是否正在进行转发进程,所述设置包括: 确定至少一个公布额度是否为未完成的; 响应于确定至少一个公布额度是未完成的,执行所述至少一个公布额度的一个或多个检查;以及 响应于所述执行指示不足数量的公布额度,将所述转发进程指示符设置为指示受阻塞。
【文档编号】G06F13/00GK103597457SQ201280025852
【公开日】2014年2月19日 申请日期:2012年5月9日 优先权日:2011年6月1日
【发明者】J.C.汉斯科姆, C.A.本德, T.尼德哈姆 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1