一种数据获取的方法、装置及终端与流程

文档序号:14914546发布日期:2018-07-11 00:21阅读:150来源:国知局

本发明涉及计算机技术领域,尤其涉及一种数据获取的方法、装置及终端。



背景技术:

在计算机体系结构中,存在很多不同的计算机I/O互连标准,其中最流行的是外设组件互连(Peripheral Component Interconnect,PCI)标准,高速串行计算机扩展总线标准(Peripheral Component Interconnect Express,PCIE)作为PCI的下一代总线,已经非常普及。在PCIE系统中,根复合体将处理器和存储器子系统连接到由一个或多个交换设备组成的PCIE交换结构中。根复合体的PCIE端口数可能多于一个,多个交换设备可以连接到根复合体不同的PCIE端口,或者多个交换设备通过级联的方式连接到根复合体。PCIE还支持分裂读完成,这意味着在特定时间发起的读请求必须在读请求队列中排队等待执行。由于读请求通常只有12-20个字节,而读完成响应的大小可以高达4096个字节,所以读请求的累计速度比数据返回的速度快,自然造成了一种不平衡。如果在同一时间有太多的读请求,读请求和读完成响应之间的这种相对大小不平衡会对性能产生负面影响。在典型的PCIE系统中尤其如此,根复合体通常以“先到先服务”的方式处理读请求,当多个下游设备都尝试从根复合体读数据,如果读请求读取大量数据,那么长时间的读请求会造成读请求在队列中排起长队。如果最终的读请求源设备比读请求目的设备带宽小,那么读请求排队的现象还会恶化,而这在PCIE主机系统中是常见的,因为最靠近根复合体的链路通常是最宽的。一旦中间缓冲区被填满,那么根复合体的带宽就被动地降低到读请求源设备的带宽。如果新的下游设备将其第一个读请求发送到目的设备的长读请求队列中,则新的读请求将等待先前整个读请求队列执行后才能得到处理,其漫长等待响应的时间可能会显著影响性能。



技术实现要素:

有鉴于此,本发明实施例提供了一种数据获取的方法及装置,以解决现有技术中计算机在数据处理时读请求目的设备的带宽会因为读请求过多而降低,从而产生拥堵影响获取数据的效率的问题。

第一方面,本发明实施例提供了一种数据获取的方法,该方法包括:

接收端点设备发送的数据获取请求;

若执行所述数据获取请求会导致完成队列存储的数据大小超过预设阈值,则暂停转发所述数据获取请求;

若执行所述数据获取请求不会导致完成队列存储的数据大小超过预设阈值,则转发所述数据获取请求。

进一步的,所述接收端点设备发送的数据获取请求之后,还包括:

判断执行所述数据获取请求是否会导致完成队列存储的数据大小超过预设阈值。

进一步的,所述转发所述数据获取请求之前,还包括:

判断数据获取请求的转发速率是不是超过预设速率;

若所述数据获取请求的转发速率小于或等于预设速率,则转发所述数据获取请求。

进一步的,所述转发所述数据获取请求之后,还包括:

累加所述数据获取请求所请求的数据大小至读计数器;

若接收到执行所述数据获取请求返回的请求数据,则读计数器减去所述数据获取请求所请求的数据大小。

进一步的,所述预设阈值与完成队列的可用存储量,和转发所述数据获取请求并返回执行结果的往返时间相关;或

与完成队列的可用存储量,和接入的所述端点设备的数量相关。

进一步的,所述预设速率与所述完成队列的数据取出速率相关。

第二方面,本发明实施例提供了一种数据获取的装置,该装置包括:

接收单元,用于接收端点设备发送的数据获取请求;

暂停单元,用于若执行所述数据获取请求会导致完成队列存储的数据大小超过预设阈值,则暂停转发所述数据获取请求;

转发单元,用于若执行所述数据获取请求不会导致完成队列存储的数据大小超过预设阈值,则转发所述数据获取请求。

进一步的,所述装置还包括:

第一判断单元,用于判断执行所述数据获取请求是否会导致完成队列存储的数据大小超过预设阈值;及

第二判断单元,用于判断数据获取请求的转发速率是不是超过预设速率;

所述转发单元具体用于:若执行所述数据获取请求不会导致完成队列存储的数据大小超过预设阈值,且所述数据获取请求的转发速率小于或等于预设速率,则转发所述数据获取请求。

第三方面,本发明实施例提供了另一种终端,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储支持终端执行上述方法的计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述第一方面的方法。

第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。

本发明实施例与现有技术相比存在的有益效果是:

本发明实施例通过接收端点设备发送的数据获取请求,判断执行所述数据获取请求是否会导致完成队列存储的数据大小超过预设阈值,若超过则暂停转发所述数据获取请求,若不超过,则转发所述数据获取请求。本发明实施例使得读请求目的设备的带宽不会因为读请求过多而降低,也不会因为读请求的转发速率过快而产生拥堵,使得计算机的性能一直维持最佳状态。

附图说明

为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种计算机I/O互连系统的示意性框图;

图2是本发明实施例提供的一种数据获取的方法的示意流程图;

图3是本发明实施例提供的另一种数据获取的方法的示意流程图;

图4是本发明实施例提供的另一种数据获取的方法的示意流程图;

图5是本发明实施例提供的一种数据获取的装置的示意性框图;

图6是本发明实施例提供的一种终端的示意性框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。

为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。

参考图1,图1是本发明实施例提供的一种计算机I/O互连系统的示意性框图,本发明的一种实施例以根复合体和交换机为例,本领域技术人员应理解,虽然在图1中仅描绘了单个交换机,但为了实现相同的目标,可以以并行、串行或分层结构来使用多个交换机。如图1所示,交换机102连接到根复合体106,设备100a、100b、100c连接到交换机,设备100d和设备100e连接到根复合体。交换机102包括上游读请求队列104a、104b和104c,其分别对应于设备100a、100b和100c的端口。根复合体106包含上游读请求队列108a、108b和108c。上游读请求队列108a对应交换机102的输入,上游读请求队列108b和108c队列分别对应设备100d和100e的输入。根复合体106控制了一个存储器控制器110,存储器控制器110包含了一个上游读请求队列112。

每个上游读请求队列用于保存输入的读请求,直到这些读请求可以被该读请求队列所属的设备处理。一旦被处理,它们就被保存在下游读请求队列中,直到它们可以被发送到另一个设备。

存储器控制器110可以控制主存储器。当设备100a启动一个读请求,该请求首先传递到交换机102,被保存在上游读请求队列104a中。一旦它被交换机102处理,被保存在下游读请求队列114中,直到它被发送到根复合体106。一旦到达根复合体106,它被保存在上游读请求队列108a中。一旦它被根复合体106处理,便被传递到存储器控制器110。在存储器控制器110中,该请求被保存在上游读请求队列112中。一旦从上游读请求队列112发出,则该请求被服务并且形成对应的完成响应。

该完成响应首先被保存在完成队列116中。一旦由完成队列116发出,该完成响应就被传递到根复合体106,然后被保存在对应的下游完成队列118a中。一旦完成响应从下游完成队列118a中发出,则它被传递到交换机102,被保存在上游完成队列120中。一旦交换机102完成接收完成响应,它被保存在下游完成队列122a中,下游完成队列122a对应于交换机102和设备100a之间的互连。

由于读请求通常只有12-20个字节,而读完成响应的大小可以高达4096个字节,所以读请求的累计速度比数据返回的速度快,自然造成了一种不平衡。如果在同一时间有太多的读请求,读请求和读完成响应之间的这种相对大小不平衡会对性能产生负面影响。在典型的PCIE系统中尤其如此,根复合体通常以“先到先服务”的方式处理读请求,如图1所示,当设备100a-100e都尝试从根复合体读数据,如果读请求读取大量数据,那么长时间的读请求会造成读请求在队列中排起长队。如果最终的读请求源设备比读请求目的设备带宽小,那么读请求排队的现象还会恶化,而这在PCIE主机系统中是常见的,因为最靠近根复合体的链路通常是最宽的。一旦完成队列116中间缓冲区被填满,那么根复合体的带宽就被动地降低到读请求源设备的带宽。如果新的下游设备将其第一个读请求发送到目的设备的长读请求队列中,则新的读请求将等待先前整个读请求队列执行后才能得到处理,其漫长等待响应的时间可能会显著影响性能。

例如,假设PCIE交换设备将单个x8上游端口连接到两个x4下游端口。一个下游端口是快速循环随机存储器(Fast Cycle RAM,FCRAM)磁盘,能够一次发送16个1024字节的存储器读请求。另一个下游端口是双千兆以太网控制器,双千兆以太网控制器可以一次发送2个读请求(每个通道1个),其中一个读请求大小为16字节(对于描述符),另一个读请求大小为1500字节(对于以太网数据包)。根复合体发送64字节的读完成,因此1024字节的读请求将产生16个读完成。

以太网控制器自身以1885Mbps速度处理一个以太网通道读请求的延时是340ns,然而,当插入FCRAM磁盘后,FCRAM磁盘以752MBps速度处理读完成,但是此时以太网控制器仅能以180Mbps速度处理读请求,这里以太网的存储器读取延迟大约为6200ns。因此,当两个设备都打开时,即使FCRAM磁盘性能本身没有受到影响,但FCRAM磁盘也会干扰以太网控制器。这是因为FCRAM磁盘最初以x8速率填充交换设备的缓冲空间,但是由于交换设备到FC设备的下行链路只有x4,所以上行带宽被动降至x4速率。由于拥塞,从增加的延迟中可以看出以太网控制器需要更长的时间来获取数据。由于以太网设备只能有2个未完成的读请求,因此对这些读请求的响应时间更长从而直接导致计算机系统性能下降。

应当注意,本发明中的“读请求队列”应被解释为包含读请求的任何队列。队列中还包含其他请求或数据也是可以的,只要它们保持读请求即可。

针对上述实施例中所说的现有技术中计算机数据读请求和读完成响应的缺陷,本发明提供一种数据获取的方法,首先接收端点设备发送的数据获取请求,判断执行所述数据获取请求是否会导致完成队列存储的数据大小超过预设阈值,若超过则暂停转发所述数据获取请求,若不会超过则判断数据获取请求的转发速率是不是超过预设速率;若不超过,则转发所述数据获取请求。本领域技术人员应理解,本发明不仅能适用于根复合体和交换机,还能适用于任何支持读请求和读完成分离操作的任何系统或协议。具体实施方式请参考以下实施例。

参见图2,图2是本发明实施例提供一种数据获取的方法的示意流程图,如图所示的一种数据获取的方法可包括:

S201,接收端点设备发送的数据获取请求。

接收端点设备发送的数据获取请求,在本发明实施例中,所述数据获取请求为读请求,所述端点设备为发起读请求的设备。

例如,端点设备是FCRAM磁盘,FCRAM磁盘能够一次发送16个1024字节的存储器读请求;或端点设备是双千兆以太网控制器,双千兆以太网控制器可以一次发送2个读请求(每个通道1个),其中一个读请求大小为16字节(对于描述符),另一个读请求大小为1500字节(对于以太网数据包)。应理解,此处仅为示例性表述,并不能理解为对本发明的具体限制。

S202,判断执行所述数据获取请求是否会导致完成队列存储的数据大小超过预设阈值,若执行所述数据获取请求会导致完成队列存储的数据大小超过预设阈值,则执行步骤S103;若执行所述数据获取请求不会导致完成队列存储的数据大小超过预设阈值,则执行步骤S104。

在本发明实施例中,所述预设阈值与完成队列的可用存储量,和转发所述数据获取请求并返回执行结果的往返时间相关;或与完成队列的可用存储量,和接入的所述端点设备的数量相关。

例如,若上游端口的上游完成队列缓冲区中约有28KB的空间可用,并且有4个操作频繁程度相同的下游端口,则每个端口应该获得1/4的缓冲区。那么,所述预设阈值可以被设置为约7KB。应理解,此处仅为示例性表述,并不能理解为对本发明的具体限制。

判断执行所述数据获取请求是否会导致完成队列存储的数据大小超过预设阈值,在本发明的一种实施例中,使用读计数器计算完成队列中所有读请求数据的大小,每个读请求都会将其所读的数据大小添加到读计数中,随着返回读数据,读计数的大小也会随返回读数据的大小而相应减小。在本发明实施例中判断执行所述数据获取请求是否会导致读计数器的值大于预设阈值。

S203,暂停转发所述数据获取请求。

若执行所述数据获取请求会导致读计数器的值大于预设阈值,则暂停转发所述数据获取请求,将来自该源设备的后续读请求以队列模式保存在该设备中,一直到读计数的值降到预设阈值以下才允许转发到读请求队列。

例如,在PCIE主机系统中,当完成队列中的数据大小将中间缓存区填满时,因为最靠近根复合体的链路通常是最宽的,一旦中间缓冲区被填满,那么根复合体的带宽就被动地降低到读请求源设备的带宽。这会严重影响数据处理的速度,并且影响计算机的性能。所以若执行所述数据获取请求会导致完成队列存储的数据大小超过预设阈值,则暂停转发所述数据获取请求。

S204,转发所述数据获取请求。

若执行所述数据获取请求不会导致读计数器的值大于预设阈值,则允许转发所述数据获取请求。

本发明实施例通过接收端点设备发送的数据获取请求,判断执行所述数据获取请求是否会导致完成队列存储的数据大小超过预设阈值,若超过则暂停转发所述数据获取请求,若没超过则转发所述数据获取请求。本发明实施例可以减少内存控制器中读请求队列的大小,使得计算机在数据处理时读请求目的设备的带宽不会因为读请求过多而降低,从而不会产生拥堵和影响计算机性能。

参见图3,图3是本发明实施例提供另一种数据获取的方法的示意流程图,如图所示的另一种数据获取的方法可包括:

S301,接收端点设备发送的数据获取请求。

S302,判断执行所述数据获取请求是否会导致完成队列存储的数据大小超过预设阈值,若是则执行步骤S305,若否则执行步骤S303。

在本实施例中,没有详述或记载的部分可以参见其他实施例的相关描述。

S303,判断数据获取请求的转发速率是不是超过预设速率,若超过则执行步骤S305,若没超过则执行步骤S304。

判断数据获取请求的转发速率是不是超过预设速率,在本发明实施例中,所述预设速率与所述完成队列的数据取出速率相关,将预设速率设置为更大将使读请求更快地填充缓冲区,而将预设速率设置的较小将填充得更慢。

例如,所述预设速率可以设置为所述完成队列的数据取出速率的两倍。应理解,此处仅为示例性表述,并不能理解为对本发明的具体限制。

S304,转发所述数据获取请求。

若数据获取请求的转发速率没有超过预设速率,意味着转发所述数据获取请求不会导致数据处理过程出现堵塞,读请求目的设备的带宽也不会因为读请求过多而降低。所以若数据获取请求的转发速率没有超过预设速率,则允许转发所述数据获取请求。

S305,暂停转发所述数据获取请求。

若数据获取请求的转发速率超过所述预设速率,可能会导致数据处理过程出现堵塞,则暂时禁止转发所述数据获取请求。

本发明实施例通过接收端点设备发送的数据获取请求,判断执行所述数据获取请求是否会导致完成队列存储的数据大小超过预设阈值,若超过则暂停转发所述数据获取请求,若不会超过则判断数据获取请求的转发速率是不是超过预设速率;若不超过,则转发所述数据获取请求。本发明实施例使得读请求目的设备的带宽不会因为读请求过多而降低,也不会因为读请求的转发速率过快而产生拥堵和影响计算机性能。

参考图4,在上述实施例步骤:转发所述数据获取请求之后,还进一步包括步骤S405和步骤S406。

步骤S405,累加所述数据获取请求所请求的数据大小至读计数器。

步骤S406,若接收到执行所述数据获取请求返回的请求数据,则读计数器减去所述数据获取请求所请求的数据大小。

本发明实施例通过将所述数据获取请求所请求的数据大小累加至读计数器,若接收到执行所述数据获取请求返回的请求数据,则读计数器减去所述数据获取请求所请求的数据大小。本发明实施例给出了完成队列现在存储了多少数据,保证了读计数器中数据值的准确性,给上述实施例中的步骤S202和S302提供了判断的基础。

参考图5,图5是本发明实施例提供的一种数据获取的装置50的示意图,该装置包括:接收单元51,暂停单元52,转发单元53,所述装置还包括:第一判断单元54,第二判断单元55。

接收单元51,用于接收端点设备发送的数据获取请求;

暂停单元52,用于若执行所述数据获取请求会导致完成队列存储的数据大小超过预设阈值,则暂停转发所述数据获取请求;

转发单元53,用于若执行所述数据获取请求不会导致完成队列存储的数据大小超过预设阈值,则转发所述数据获取请求。

第一判断单元54,用于判断执行所述数据获取请求是否会导致完成队列存储的数据大小超过预设阈值;及

第二判断单元55,用于判断数据获取请求的转发速率是不是超过预设速率;

所述转发单元具体用于:若执行所述数据获取请求不会导致完成队列存储的数据大小超过预设阈值,且所述数据获取请求的转发速率小于或等于预设速率,则转发所述数据获取请求。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

参见图6,图6是本发明另一实施例提供的一种终端的示意框图。如图6所示的本实施例中的终端可以包括:一个或多个处理器601;一个或多个输入设备602,一个或多个输出设备603和存储器604。上述处理器601、输入设备602、输出设备603和存储器604通过总线605连接。存储器604用于存储计算机程序,所述计算机程序包括程序指令,处理器601用于执行存储器604存储的程序指令。

应当理解,在本发明实施例中,所称处理器601可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

输入设备602和输出设备603可以包括I/O接口等。

存储器604可以包括只读存储器和随机存取存储器,并向处理器601提供指令和数据。存储器604的一部分还可以包括非易失性随机存取存储器。例如,存储器604还可以存储设备类型的信息。

具体实现中,本发明实施例中所描述的处理器601、输入设备602、输出设备603可执行本发明实施例提供的一种数据获取的方法的第一实施例和第二实施例中所描述的实现方式,也可执行本发明实施例所描述的装置的实现方式,在此不再赘述。

在本发明的另一实施例中提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时实现:

所述计算机可读存储介质可以是前述任一实施例所述的终端的内部存储单元,例如终端的硬盘或内存。所述计算机可读存储介质也可以是所述终端的外部存储设备,例如所述终端上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述计算机可读存储介质还可以既包括所述终端的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述终端所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的终端和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1