CN103582866A - 无序数据传输的处理 - Google Patents
无序数据传输的处理 Download PDFInfo
- Publication number
- CN103582866A CN103582866A CN201280026353.8A CN201280026353A CN103582866A CN 103582866 A CN103582866 A CN 103582866A CN 201280026353 A CN201280026353 A CN 201280026353A CN 103582866 A CN103582866 A CN 103582866A
- Authority
- CN
- China
- Prior art keywords
- skew
- data
- address
- project
- counting
- 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
Links
Images
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/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/38—Universal adapter
- G06F2213/3802—Harddisk connected to a computer port
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
Abstract
在计算环境下促进无序数据传输的处理,使得能够在主机总线适配器(或者其他适配器)与一系统之间直接传输数据,而不在设置于主机总线适配器与一系统之间的硬件中首先安排数据。通过有效地定位包括要在数据传输中使用的地址的地址数据结构中的项目,实时地确定要在数据传输中使用的地址。
Description
技术领域
本发明的一个或者多个方面总的来说涉及将数据传输到计算环境的存储器和从该存储器传输数据,并且具体的涉及在计算环境内无序数据传输的处理。
背景技术
在诸如包括由国际商业机器公司提供的的计算环境的一些计算环境中,利用一个或者多个主机总线适配器(HBA)将数据从计算系统的存储器传输到输入/输出装置,和从输入/输出装置传输到存储器。通过用于将主机总线适配器与系统隔离的硬件,将主机总线适配器附接到该系统。该硬件提供未校验的主机总线适配器与系统的隔离,从而保持系统的可靠性、可用性和可服务性(RAS)。
利用这种配置,流到系统/从系统流出的所有数据都临时存储在硬件中,并且然后,从硬件移动到其意向目的地。因此,对于每个数据传输存在存储和转发延迟。
发明内容
通过提供在计算环境中促进数据传输的计算机程序产品来解决现有技术的缺陷并且提供优点。计算机程序产品包括处理电路可读并存储用于由处理电路执行以执行方法的指令的计算机可读存储介质。该方法例如包括:确定要传输的数据是否是无序的;响应于数据是无序的,将数据的收到偏移与第一偏移进行比较;响应于收到偏移是相对于第一偏移的一个值,在第一偏移或者第二偏移开始扫描地址数据结构,以定位具有收到偏移的地址数据结构中的项目,并从该项目获得要用于传输数据的地址;以及响应于收到偏移是相对于第一偏移的另一个值,确定要用于定位地址数据结构中的项目的索引和计数中的至少一个,并且从该项目获得要用于传输数据的地址。
在此还描述并且要求保护涉及本发明的一个或者多个的方法和系统。而且,在此还描述并且可以要求保护涉及本发明的一个或者多个方面的服务。
通过本发明的一个或者多个方面的技术实现附加的特征和优点。在此详细描述本发明的其他实施例和方面,并且其被认为是要求保护的发明的一部分。
附图说明
现在将参考附图仅利用示例来描述本发明的(各)实施例。附图中:
图1示出并入和/或使用本发明的一个或者多个方面的计算环境的一个实施例;
图2A示出在数据最初安排在计算环境的硬件的存储器中的计算环境内传输数据的一个实施例;
图2B示出根据本发明的一方面传输数据而不在硬件的存储器中安排数据的一个实施例;
图3示出包括根据本发明的一方面使用的地址列表和其他信息的地址数据结构的一个示例;
图4示出根据本发明的一个方面使用的地址控制字的各种控制的一个示例。
图5示出根据本发明的一方面用来扫描地址数据结构以定位要在请求的数据传输中使用的地址的逻辑的一个实施例;
图6更详细示出根据本发明的一方面用于扫描地址数据结构以定位要在请求的数据传输中使用的地址的逻辑的一个实施例;以及
图7示出并入本发明的一个或者多个方面的计算机程序产品的一个实施例。
具体实施方式
根据本发明的一方面,提供用于促进无序数据传输的处理的能力。在一个特定示例中,在不在设置于主机总线适配器(或者另一个适配器)与系统之间的硬件中首先安排数据的情况下,在使能在主机总线适配器与系统之间直接传输数据的计算环境中促进无序数据传输的处理。
为了进行数据传输,要确定指出要在其取得/存储数据的存储器中的位置的地址。因此,根据本发明的一方面,提供了有效地定位在包括要在数据传输中使用的地址的地址数据结构中的项目的技术。即使数据传输是无序的,该技术仍提供有效的处理。作为一个示例,地址的确定基于与数据一起提供的偏移。该偏移用来定位项目并获得存储地址。就是说,提供用于加速将收到偏移翻译为可用于直接访问系统存储器的系统地址的技术。
将参考图1描述并入和/或使用本发明的一个或者多个方面的计算环境的一个实施例。如图所示,在一个示例中,系统102耦接到硬件104,该硬件104进一步经由一个或者多个链路107(例如,PCI链路)耦接到一个或者多个适配器(例如,主机总线适配器)106。主机总线适配器进一步经由一个或者多个链路110(例如,光纤通道链路)耦接到一个或者多个控制单元/装置108。系统102可以是例如由国际商业机器公司提供的服务器、由国际商业机器公司提供的zEnterprise196(z196)服务器、或者由国际商业机器公司或者其他公司提供的其他系统。例如,其包括执行一个或者多个操作系统,诸如由国际商业机器公司提供的操作系统的一个或者多个中央处理单元,以及系统存储器120(也称为主存储器)。
硬件104例如包括:通道硬件和已校验微处理器122以及本地通道存储器124。(已校验指示相对于RAS其与该系统兼容;相反,未校验则指示相对于RAS其与该系统不兼容)。该硬件用于在主机总线适配器与系统存储器之间传输数据。例如,当从系统存储器读取数据或者将数据写到系统存储器时,操作系统创建包括请求、起始块地址、要传输的字节数的计数和方向的指示(例如,读/写)的命令块,并且将该命令块转发到该硬件。然后,该硬件将信息传送到主机总线适配器。然后,主机总线适配器和该硬件执行数据传输。
例如,在一个在前实施例中,如图2A所示,在诸如的高度可靠的计算系统上使用该硬件,以将主机总线适配器与该系统隔离,使得该硬件对于主机总线适配器表现为主机。因此,为了进行数据传输,在本地通道存储器中安排数据,然后,将该数据从本地通道存储器移动到所选的目的地。例如,对于数据从系统102到输入/输出装置的向外传输,已校验微处理器122将接收到命令块,从系统存储器120获得请求的数据,以及将其写入本地通道存储器124中。此外,该已校验微处理器122将命令传递到主机总线适配器。然后,主机总线适配器106从本地通道存储器124取得数据,并且将该数据转发到装置108。类似地,对于数据从装置108的向内传输,主机总线适配器106将该数据存储在本地通道存储器124中,并且然后已校验微处理器122访问本地通道存储器中的数据,并且将该数据转发到系统存储器120。在此,该技术被称为存储和转发模型。
然而,根据本发明的一方面,在数据的传输时绕过硬件中数据的安排;代替地,如图2B所示,直接传输数据。如图2B所示,主机总线适配器106通过通道硬件104直接将数据传输到系统存储器120,而不要求首先将数据存储在本地通道存储器124中。类似地,再将数据从系统存储器120直接传输到主机总线适配器106,而不将数据存储在本地通道存储器中。在此,该技术被称为直接传输模型。
在直接传输模型中,仍将命令块转发到硬件(例如,通道硬件和/或已校验微处理器)并从硬件转发到主机总线适配器,但是不在本地通道存储器中安排数据。在一个示例中,有序地传输数据。然而,诸如小型计算机系统接口(SCSI)的某些上层协议提供了即使数据是失序的,装置仍能够传输部分数据的操作模式,这在链路上对于其设计是最有利的。例如,对于读操作,装置可以与从介质的其余数据的安排同时地发送首先在该装置的高速缓冲中的数据块。作为另一示例,内置于光纤通道链路协议中的误差恢复机制可以使得重发读数据或者写数据的一部分,这也导致无序传输。因此,根据本发明的一方面,在主机总线适配器与系统存储器之间读数据和写数据两者的直接传输支持无序数据传输。
为了以有序方式或者以无序方式传输数据,使用一个或者多个帧,每个帧都包括特定量的数据。帧具有包括关于要传输的帧的描述信息的报头。例如,在数据的传输中使用光纤通道链路协议的一个实施例中,报头包括相对偏移。相对偏移指示包括在帧中的有效荷载数据的第一字节相对于要传输的连续数据块(在此称为逻辑块)的开始的偏移。命令块中指定的数据的第一字节处于相对偏移0。正常“有序”的传输具有连续增大的相对偏移,即,发送的第一帧具有偏移0,而后续帧具有相对偏移2K、4K等(假定每个帧包括2K字节),直到满足命令块中指定的计数为止。然而,当装置选择以无序方式传输数据时(例如,因为性能原因),能够以随机顺序在链路上接收相对偏移。
例如,考虑在逻辑块3000开始传输51个数据块(其中每个块等于512字节)的SCSI读请求。此外,假定块3018-3034在装置的高速缓存中。装置可以选择与对从介质安排其余数据同时地首先传输高速缓存中的块。因此,例如,其可以依次传输块3018-3034、3000-3017以及3035-3050。这将被翻译为具有以下三个范围的相对偏移的帧序列:0x2400-0x4400;0x0-0x2200;以及0x4600-0x6400,。
在确定在其取得或者存储帧的地址时使用相对偏移。例如,在参考图2A描述的存储和转发模型中,对于数据存储示例,主机总线适配器经由链路接收可能无序的数据,并且在其将数据传输完成通知通道微处理器之前,对于每个相对偏移将数据装载到本地通道存储器中的指定缓冲器中。然后,通过将缓冲器地址翻译为存储器中的一系列实际地址,通道微处理器确定要存储数据的地址。然后,通道微处理器以有序方式将数据存储在系统存储器中的确定的地址,而不知道数据实际上在链路上以无序方式到达。
然而,对于直接传输模型,在帧到达时,将在主机总线适配器收到的相对偏移传送到通道硬件,以由通道硬件实时翻译为系统存储器中的相应地址。在存储器不是平坦的、连续的地址空间,而代替地采用虚拟寻址的那些系统中,这是个复杂任务。由于虚拟存储器要求,所以通常将对I/O操作分配的存储设备作为非连续4K页缓冲器的列表提供。此外,在该示例中,提供虚拟空间中的分散和集中能力。因此,将用于I/O操作的系统存储区指定为分散集中(SG)列表,其中该列表中的每个项目(SGE)包括地址和计数对。这例如可以允许元数据与实际数据连续地存储于介质上,但是在系统存储器中分离存储(例如,数据可以存储于应用缓冲器中,但是元数据可以存储于操作系统空间中)。
将参考图3描述分散集中列表的一个示例。参考图3,提供地址数据结构(例如,表)300,该地址数据结构包括多个项目302。每个项目包括:地址310、计数320、索引330、相对偏移340以及起始块350。将地址和计数称为分散集中列表。如下所述,使用附加信息以促进确定与偏移相关联的地址。
继续上面的示例,如果对于每8个数据块有1个元数据块,则用于51个块传输的示例分散集中列在图3的前两列示出。分散集中列表中的随机计数加上该数据的随机相对偏移的组合先前要求对于每个收到的帧或者数据请求从顶部开始顺序地扫描分散集中列表,以确定对应于给定相对偏移的系统地址。
因此,根据本发明的一方面,提供促进系统地址的确定的能力,使得分散集中列表不必对于每个帧或者数据请求从顶部开始扫描。该能力完全地对分散集中计数和相对偏移的随机组合起作用。这允许加速无序数据传输。
在一个示例中,基于计数和偏移的如下实际使用实现有效优化。例如,对于给定I/O操作,相对偏移中的间断极少。因此,在一个示例中,对于连续相对偏移优化设计。此外,最常用的分散集中能力是用于指定虚拟存储器页缓冲器。因此,在一个示例中,对于4096的分散集中计数优化设计。然而,在其他实现中,优化可以不同,也可以被忽略。下面将更详细描述促进系统地址的查找的技术。
在一个示例中,在该逻辑中使用被称为地址控制字(ACW)的控制块的各种字段以定位诸如分散集中列表的列表中的系统地址。响应于从操作系统收到传输命令,由通道微处理器建立ACW。在一个示例中,对于每个I/O操作有一个ACW(例如,从开始到结束控制每个传输)。每个控制块例如被存储在本地通道存储器124中。
参考图4,在一个示例中,地址控制字400例如包括根据本发明的一方面使用的如下字段(在其他实施例中或者对于其他使用,ACW400可以包括附加字段、不同字段或者较少字段)。
分散集中列表指针410:该字段包括分散集中列表的顶部的存储地址。该列表可以在系统存储器中,或者可以在本地通道存储器中。
4K已验证偏移420:该字段表示与尚未验证为具有正好4096的计数的第一分散集中项目对应的偏移的前两个字节。(在其他示例中,该计数可以不是4096。)在第一次访问地址控制字时,将该值初始化为0。随后,如下所述,通过正常(有序)操作顺序的处理每个分散集中项目,或者如果在链路上发生无序传输则通过扫描来处理每个分散集中项目。对于处理的每个分散集中项目,如果分散集中项目具有正好4096的计数,则使该值提升例如16。当遇到计数小于4096的分散集中项目时,冻结4K已验证偏移值。
在一个示例中,仅存储三字节偏移中的两个字节,因为按照定义低序字节是0。(然而,在一个实施例中,存储更多或者更少的字节。)当遇到比该值小的无序偏移时,利用移位和掩码可以分别计算相应的分散集中索引和计数。
下一期望偏移430:在最初访问地址控制字时,该值设置为0。对于每个请求(例如,PCI请求),将该值与从主机总线适配器收到偏移进行比较。如果它们相等,则该传输相对于先前传输是有序的,并且可以使用工作中分散集中项目和计数取得或者存储数据。如果它们不相等,则传输是无序方式,并且应用定义的规则以确定分散集中索引,从而用于传输数据,如以下所做的进一步详细描述。
工作中分散集中项目计数440和工作中分散集中项目索引450:在完成每个主机总线适配器请求时,要传输的下一顺序字节的分散集中索引和计数保存在这些字段中。如果当前传输准确地满足当前分散集中项目中的计数,则分散集中项目索引递增到下一值,并且将分散集中项目计数设置为0。如果下一主机总线适配器请求中的相对偏移与地址控制字中的下一期望偏移匹配,则这些值继续用于对于新请求的数据传输。在初始访问地址控制字时,将这些值设置为0。
如上所述,由通道硬件采用预定义的规则以定位数据传输的地址。将参考图5描述这些规则的一个示例。参考图5,在步骤500,首先以指定的相对偏移接收传输数据的请求(首先在帧报头中提供)。在查询步骤502,确定该收到偏移是否等于地址控制字中指定的下一期望偏移。如果收到偏移等于下一期望偏移,则数据传输是有序的,并且因此,在步骤504,使用地址控制字中指定的工作中分散集中项目索引和计数来定位地址数据结构中的项目,并从该项目获得在其要存储或者取得数据的地址。
然而,如果在查询步骤502,收到偏移不等于下一期望偏移,则数据传输是无序数据传输。因此,在该示例中,在查询步骤506,确定收到偏移是否小于地址控制字中指定的4K已验证偏移。在步骤508,如果收到偏移小于4K已验证偏移,则确定分散集中项目索引和计数。在一个示例中,为确定分散集中项目索引,将收到偏移向右移位限定的值,例如,12。此外,分散集中项目计数等于收到偏移的低序位的所选数目(例如,12)。然后,利用确定的计数和索引来定位从其获得地址的地址数据结构中的项目。
返回查询步骤506,如果收到偏移大于或者等于4K已验证偏移,则在查询步骤510,进一步确定收到偏移是否小于或者等于期望偏移。如果收到偏移小于或者等于期望偏移,则在4K已验证偏移开始扫描地址数据结构,直到找到含有收到偏移的项目为止。在步骤512,获得该项目中的地址用于数据传输。否则,在步骤514,在下一期望偏移开始扫描地址数据结构,直到找到含有收到偏移的项目为止。获得该项目中的地址用于数据传输。
利用上述规则,不需要在每次收到无序传输时从顶部开始扫描整个地址数据结构(或者分散集中列表)。这增强了系统性能并且加速了无序数据传输。
将参考图6进一步详细描述与传输数据相关联的包括无序数据传输的处理。首先,在查询步骤600,在从诸如PCI链路的链路收到取得或者存储请求后,确定该传输是否是有序的。即,确定请求中指定的偏移是否与下一期望偏移匹配。如果匹配,则传输是有序的,并且相对于紧接在之前的传输是连续的。因此,在步骤602,硬件在由工作中分散集中项目索引和计数指定的项目中的系统地址开始取得或者存储数据。在步骤604,完成该请求时,更新下一期望偏移,以对于下一请求指向数据的下一顺序字节。只要链路上的传输顺序进行,分散集中项目计数是否是随机的就没有关系。
在硬件正在处理分散集中列表中的项目时,当该项目完成并且该项目中的计数正好是4096时(在一个示例中),在步骤606,4K计数已验证偏移提升例如16。因此,4K计数已验证偏移表示这样的值,即低于其,所有相应的分散集中项目已被验证为具有例如4096的计数。如果遇到其计数不是4096的分散集中,则冻结4K计数已验证偏移。
此外,在步骤608,硬件更新与数据的下一顺序字节对应的工作中分散集中项目索引和工作中分散集中项目计数。这两个值指定分散集中项目索引和在对应于下一顺序偏移的分散集中项目中的字节位置。
返回查询步骤600,如果传输是无序传输,则在查询步骤610,确定收到偏移是否大于或者等于4K计数已验证偏移。如果在请求中收到大于或者等于4K计数已验证偏移的无序偏移值,则在步骤612,硬件在4K计数已验证偏移指向的分散集中项目开始扫描每个分散集中项目,求计数的和,以定位含有收到偏移的分散集中项目。在该扫描期间,在步骤614,对于所扫描的其计数为4096的每个分散集中项目,4K计数已验证偏移如果未被冻结就被提升。在步骤608,在适当的地址取得或者存储对于该请求的数据,并且更新下一期望偏移、工作中分散集中项目计数和工作中分散集中项目计数,以指向新传输的下一连续字节。
返回查询步骤610,如果在请求中收到小于4K计数已验证偏移的无序偏移值,则在步骤620,通过将收到偏移向右移位例如12(将其除以4k),能够确定传输的起始分散集中索引。此外,在步骤622,通过除了12个低序位全部掩蔽掉(作为示例),获得从分散集中项目的起始的偏移。
在步骤608,硬件更新与数据的下一顺序字节对应的工作中分散集中项目索引和工作中分散集中项目计数。
在一个示例中,将这些规则应用于上面描述的51块无序传输示例产生如下结果:
在开始传输时,上面描述的地址控制字字段为0。
传输的第一帧以偏移0x002400到达。这不等于下一期望偏移,因此校验4K已验证偏移。收到偏移大于4K已验证偏移,因此,从顶部开始扫描列表。发现偏移0x002000,即,计数为0x200的SGE,因此,将4K已验证偏移冻结在0x0200。该扫描继续,并且在SGE索引3、计数0x200发现含有收到偏移的SGE。传输在系统地址0x0000123456783200开始。第一序列的其余传输顺序地进行。在该传输的结束,下一期望偏移是0x004600,4K已验证偏移是0x0020,工作中SGE索引是6,并且工作中SGE计数是0x200。
第二序列的第一帧以偏移0x000000到达。该值不是期望值,并且现在小于4K已验证偏移,因此,向右移位12位获得起始SGE索引。起始系统地址是SGE0中的地址加上收到偏移的12个低序位,或者0x0000123456787000。在该序列的结束,下一期望偏移是0x002400,4K已验证偏移仍冻结在0x0020,工作中SGE索引是3,并且工作中SGE计数是0x200。
最后序列的第一帧以偏移0x004600到达,也不是期望值。这个值既大于4K已验证偏移,又大于下一期望偏移,因此,从工作中索引(3)和计数开始扫描SG列表。发现收到偏移在SGE索引6中的0x200字节。因此,传输的起始地址是0x000012345678B200。从该点到结束顺序地进行传输。
上面详细描述了用于在列表中定位要在数据传输中使用的地址的有效技术。在数据传输请求无序的情况下,该技术促进了地址的查找。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的示例(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
现在参考图7,在一个示例中,计算机程序产品700包括,例如,一个或多个非易失性计算机可读存储介质702,在其上存储有计算机可读的程序代码装置或逻辑704,以提供并方便本发明的一个或多个方面。
体现在计算机可读介质上的程序代码可以用任何适当的介质传输,所述介质包括但不限于:无线、有线、光缆、RF等,或上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本文中将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
除了上述,本发明的一个或多个方面可由服务提供商提供、许诺(offer)、部署、管理、服务等,该服务提供商提供用户环境的管理。例如,服务提供商可创建、维持、支持等计算机代码和/或计算机基础设施,其为一个或多个用户执行本发明的一个或多个方面。反过来,服务提供商可例如根据预订和/或费用协议从用户接受付费。额外地或可替换地,服务提供商可从向一个或多个第三方销售广告内容接受付费。
在本发明的一个方面,可部署用于执行本发明的一个或多个方面的应用。作为一个示例,部署应用包括提供计算机基础设施,其可操作以执行本发明的一个或多个方面。
作为本发明的又一个方面,可部署计算基础设施,其包括将计算机可读代码集成到计算机系统,其中与计算系统结合的代码能够执行本发明的一个或多个方面。
作为本发明的再一个方面,可提供用于集成计算基础设施包括将计算机可读码集成到计算机系统的过程。计算机系统包括计算机可读介质,其中计算机介质包括本发明的一个或多个方面。与计算机系统结合的代码能够执行本发明的一个或多个方面。
尽管上面描述了各种实施例,但是这些实施例仅作为示例。例如,其他体系架构的计算环境可以并入并且使用本发明的一个或者多个方面。例如,System z或者z196服务器以外的服务器可以包括、使用和/或受益于本发明的一个或者多个方面。而且,其他类型的适配器和/或者链路可以受益于本发明的一个或者多个方面。此外,可以采用更多、更少和/或者不同的规则以促进地址查找。可能有许多变型。
而且,其他类型的计算环境可受益于本发明的一个或多个方面。作为示例,可使用适于存储和/或执行程序代码的数据处理系统,其包括至少两个通过系统总线直接或间接耦合到存储元件的处理器。存储器元件包括,例如,在程序代码的实际执行期间使用的本地存储器、大容量存储器以及高速缓冲存储器,其提供至少一些程序代码的临时存储,以便减少在执行期间必须从大容量存储器取回代码的次数。
输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备、DASD、磁带、CD、DVD、拇指驱动器(thumb drive)以及其他的存储介质等)可直接或通过介于其间的I/O控制器被耦合到系统。网络适配器也可被耦合到系统以使得数据处理系统能够通过介于其间的私有或公共网络而耦合到其他的数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡仅是一些可获得的网络适配器类型。
在此使用的术语仅是为了描述特定实施例,且不旨在限制本发明。如在此使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另外清楚地指明。还将理解,当在说明书中使用时,术语“包括”和/或“包含”指明存在所述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或附加一个或多个其他特征、整体、步骤、操作、元件和/或组件。
所附权利要求书中的所有装置或步骤加功能元件的相应结构、材料、操作以及等价物,如有的话,旨在包括用于结合如特别要求保护的其他所要求保护的元件来执行所述功能的任何结构、材料或操作。呈现本发明的说明是为了示出和描述的作用,但不是穷尽性的或将本发明限制于所公开的形式。许多修改和变化对本领域普通技术人员来说是明显的,且不脱离本发明的范围。选择和描述实施例是为了最佳地解释本发明的原理和实际应用,并使得本领域普通技术人员能针对适于考虑的特定用途的具有各种修改的各种实施例理解本发明。
Claims (15)
1.一种促进在计算环境下数据的传输的方法,所述方法包括:
由通道硬件确定要传输的数据是否是无序的;
响应于所述数据是无序的,将所述数据的收到偏移与第一偏移进行比较;
响应于所述收到偏移是相对于所述第一偏移的一个值,在所述第一偏移或者第二偏移开始扫描地址数据结构,以定位具有所述收到偏移的所述地址数据结构中的项目,并且从所述项目获得要用于传输所述数据的地址;以及
响应于所述收到偏移是相对于所述第一偏移的另一个值,确定要用于定位所述地址数据结构中的项目的索引和计数中的至少一个,并且从所述项目获得要用于传输所述数据的地址。
2.根据权利要求1所述的方法,其中,所述一个值大于或者等于,而另一个值小于。
3.根据权利要求1所述的方法,其中,所述第一偏移是已验证偏移,而所述第二偏移是下一期望偏移,其中所述已验证偏移包括与未被验证为具有指定计数的所述地址数据结构中的第一项目对应的偏移的至少一部分。
4.根据权利要求3所述的方法,其中,所述指定计数是4096,并且其中响应于遇到所述地址数据结构中的所述第一项目不等于所述指定计数而冻结所述已验证偏移。
5.根据权利要求1所述的方法,其中,响应于所述收到偏移是相对于所述第一偏移的一个值,响应于所述第二偏移小于所述收到偏移,在所述第一偏移开始扫描所述地址数据结构。
6.根据权利要求1所述的方法,其中,响应于所述收到偏移是相对于所述第一偏移的一个值,响应于所述第二偏移大于所述收到偏移,在所述第二偏移量开始扫描所述地址数据结构。
7.根据权利要求1所述的方法,其中,确定所述索引包括在选择方向上将所述收到偏移移位预定义的位数。
8.根据权利要求7所述的方法,其中,所述选择方向是向右,并且所述预定义位数是12。
9.根据权利要求1所述的方法,其中,确定所述计数包括选择所述收到偏移的设置位数作为所述计数。
10.根据权利要求1所述的方法,进一步包括响应于所述数据是有序的,使用工作中计数和工作中索引中的至少一个以定位所述地址数据结构中的项目,并且从该项目获得要用于传输所述数据的地址。
11.根据权利要求1所述的方法,其中,所述确定所述数据是否是无序的包括将所述收到偏移与下一期望偏移进行比较,其中不等指示无序数据传输。
12.根据权利要求1所述的方法,进一步包括:
使用所述地址传输所述数据;并且
响应于传输所述数据而更新一个或者多个控件。
13.根据权利要求1所述的方法,其中,所述收到偏移是相对于要传输的数据块的开始的相对偏移。
14.一种促进在计算环境下数据的传输的计算机系统,所述计算机系统包括:
存储器;以及
处理器,与所述存储器通信,其中所述计算机系统配置为执行根据权利要求1至13中的任何一项所述的方法。
15.一种促进在计算环境下数据的传输的计算机程序产品,所述计算机程序产品包括:
计算机可读存储介质,可由处理电路读取并且存储指令,所述指令由所述处理电路执行从而执行根据权利要求1至13中的任何一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/150,606 US8560736B2 (en) | 2011-06-01 | 2011-06-01 | Facilitating processing of out-of-order data transfers |
US13/150,606 | 2011-06-01 | ||
PCT/IB2012/052538 WO2012164432A1 (en) | 2011-06-01 | 2012-05-21 | Processing out-of-order data transfers |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103582866A true CN103582866A (zh) | 2014-02-12 |
CN103582866B CN103582866B (zh) | 2016-10-12 |
Family
ID=47258465
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280026353.8A Active CN103582866B (zh) | 2011-06-01 | 2012-05-21 | 无序数据传输的处理 |
Country Status (4)
Country | Link |
---|---|
US (3) | US8560736B2 (zh) |
CN (1) | CN103582866B (zh) |
GB (1) | GB2505140B (zh) |
WO (1) | WO2012164432A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8560736B2 (en) | 2011-06-01 | 2013-10-15 | International Business Machines Corporation | Facilitating processing of out-of-order data transfers |
US9858007B2 (en) * | 2013-11-12 | 2018-01-02 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Decoupling host and device address maps for a peripheral component interconnect express controller |
US9778858B1 (en) * | 2015-02-11 | 2017-10-03 | Microsemi Solutions (U.S.), Inc. | Apparatus and method for scatter gather list handling for an out of order system |
US20170116117A1 (en) * | 2015-10-26 | 2017-04-27 | Sandisk Technologies Inc. | Identifying storage descriptors based on a metric |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6185620B1 (en) * | 1998-04-03 | 2001-02-06 | Lsi Logic Corporation | Single chip protocol engine and data formatter apparatus for off chip host memory to local memory transfer and conversion |
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 |
US20050025152A1 (en) * | 2003-07-30 | 2005-02-03 | International Business Machines Corporation | Method and system of efficient packet reordering |
US20050286526A1 (en) * | 2004-06-25 | 2005-12-29 | Sood Sanjeev H | Optimized algorithm for stream re-assembly |
US20060075165A1 (en) * | 2004-10-01 | 2006-04-06 | Hui Ben K | Method and system for processing out of order frames |
US20080052728A1 (en) * | 2003-01-13 | 2008-02-28 | Steinmetz Joseph H | Method and interface for access to memory within a first electronic device by a second electronic device |
US7349399B1 (en) * | 2002-09-20 | 2008-03-25 | Redback Networks, Inc. | Method and apparatus for out-of-order processing of packets using linked lists |
US20080126608A1 (en) * | 2006-08-24 | 2008-05-29 | Chang Nai-Chih | Storage network out of order packet reordering mechanism |
US20090182988A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Compare Relative Long Facility and Instructions Therefore |
US20110320759A1 (en) * | 2010-06-23 | 2011-12-29 | International Business Machines Corporation | Multiple address spaces per adapter |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5799165A (en) | 1996-01-26 | 1998-08-25 | Advanced Micro Devices, Inc. | Out-of-order processing that removes an issued operation from an execution pipeline upon determining that the operation would cause a lengthy pipeline delay |
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 |
US6292910B1 (en) | 1998-09-14 | 2001-09-18 | Intel Corporation | Method and apparatus for detecting a bus deadlock in an electronic system |
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 |
US6594722B1 (en) | 2000-06-29 | 2003-07-15 | Intel Corporation | Mechanism for managing multiple out-of-order packet streams in a PCI host bridge |
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 |
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 |
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 |
WO2006035262A1 (en) | 2004-09-30 | 2006-04-06 | Telefonaktiebolaget Lm Ericsson (Publ) | Carrier class resilience solution for switched ethernet local area networks (lans) |
US7461236B1 (en) | 2005-03-25 | 2008-12-02 | Tilera Corporation | Transferring data 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 |
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 |
US20080163005A1 (en) | 2006-12-28 | 2008-07-03 | Sonksen Bradley S | Error injection in pci-express devices |
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通信システム、及びその通信方法 |
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 |
US8560736B2 (en) | 2011-06-01 | 2013-10-15 | International Business Machines Corporation | Facilitating processing of out-of-order data transfers |
-
2011
- 2011-06-01 US US13/150,606 patent/US8560736B2/en active Active
-
2012
- 2012-04-25 US US13/455,336 patent/US8738810B2/en not_active Expired - Fee Related
- 2012-05-21 CN CN201280026353.8A patent/CN103582866B/zh active Active
- 2012-05-21 GB GB1321837.5A patent/GB2505140B/en active Active
- 2012-05-21 WO PCT/IB2012/052538 patent/WO2012164432A1/en active Application Filing
-
2014
- 2014-05-23 US US14/285,922 patent/US9569391B2/en not_active Expired - Fee Related
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6185620B1 (en) * | 1998-04-03 | 2001-02-06 | Lsi Logic Corporation | Single chip protocol engine and data formatter apparatus for off chip host memory to local memory transfer and conversion |
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 |
US7349399B1 (en) * | 2002-09-20 | 2008-03-25 | Redback Networks, Inc. | Method and apparatus for out-of-order processing of packets using linked lists |
US20080052728A1 (en) * | 2003-01-13 | 2008-02-28 | Steinmetz Joseph H | Method and interface for access to memory within a first electronic device by a second electronic device |
US20050025152A1 (en) * | 2003-07-30 | 2005-02-03 | International Business Machines Corporation | Method and system of efficient packet reordering |
US20050286526A1 (en) * | 2004-06-25 | 2005-12-29 | Sood Sanjeev H | Optimized algorithm for stream re-assembly |
US20060075165A1 (en) * | 2004-10-01 | 2006-04-06 | Hui Ben K | Method and system for processing out of order frames |
US20080126608A1 (en) * | 2006-08-24 | 2008-05-29 | Chang Nai-Chih | Storage network out of order packet reordering mechanism |
US20090182988A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Compare Relative Long Facility and Instructions Therefore |
US20110320759A1 (en) * | 2010-06-23 | 2011-12-29 | International Business Machines Corporation | Multiple address spaces per adapter |
Also Published As
Publication number | Publication date |
---|---|
US8738810B2 (en) | 2014-05-27 |
GB201321837D0 (en) | 2014-01-22 |
US9569391B2 (en) | 2017-02-14 |
WO2012164432A1 (en) | 2012-12-06 |
US20120311217A1 (en) | 2012-12-06 |
GB2505140B (en) | 2014-06-04 |
US20140258561A1 (en) | 2014-09-11 |
US8560736B2 (en) | 2013-10-15 |
GB2505140A (en) | 2014-02-19 |
CN103582866B (zh) | 2016-10-12 |
US20120311218A1 (en) | 2012-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10564978B2 (en) | Operation of a multi-slice processor with an expanded merge fetching queue | |
US7415549B2 (en) | DMA completion processing mechanism | |
EP3688600B1 (en) | Database with nvdimm as persistent storage | |
CN100520712C (zh) | 用来实施具有追踪缓存的微处理器的方法及系统 | |
US9110826B2 (en) | Memory allocation in a system using memory striping | |
US8149854B2 (en) | Multi-threaded transmit transport engine for storage devices | |
CN100538736C (zh) | 存储和回存状态上下文在图形处理单元的方法和装置 | |
CN103597457B (zh) | 避免设备中的非公布请求死锁 | |
US9940133B2 (en) | Operation of a multi-slice processor implementing simultaneous two-target loads and stores | |
CN102112974B (zh) | 传输控制通道程序处理 | |
JP3752224B2 (ja) | コンピュータ・システムにおいて命令を処理する方法および装置 | |
CN102446073A (zh) | 延迟对操作的确认直至操作完成的方法和系统 | |
KR20170034424A (ko) | 컴퓨터 시스템에서의 메모리 쓰기 관리 | |
CN102541630A (zh) | 计算机处理器中线程间数据通信的方法和系统 | |
JP7379491B2 (ja) | 入出力ストア命令をハンドリングする方法、システム、およびプログラム | |
CN103582866A (zh) | 无序数据传输的处理 | |
US11199992B2 (en) | Automatic host buffer pointer pattern detection | |
CN108292267A (zh) | 总线-装置-功能地址空间的推测性枚举 | |
CN101617297B (zh) | 多处理器存储区域网络中的虚拟化支持 | |
WO2022037421A1 (zh) | 指令发射方法、装置、电子设备以及存储介质 | |
EP1039377B1 (en) | System and method supporting multiple outstanding requests to multiple targets of a memory hierarchy | |
WO2015024432A1 (zh) | 一种指令调度方法及装置 | |
CN101208675B (zh) | 帧序处理装置、系统和方法 | |
CN116348850A (zh) | 处理指令的方法以及图计算装置 | |
US7124284B2 (en) | Method and apparatus for processing a complex instruction for execution and retirement |
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 |