《动态允许和禁止写XFR_RDY.pdf》由会员分享,可在线阅读,更多相关《动态允许和禁止写XFR_RDY.pdf(20页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103180840 A (43)申请公布日 2013.06.26 CN 103180840 A *CN103180840A* (21)申请号 201180051735.1 (22)申请日 2011.10.13 12/914,024 2010.10.28 US G06F 13/42(2006.01) (71)申请人 国际商业机器公司 地址 美国纽约 (72)发明人 SE克莱恩 DW谢尔曼 MJ卡洛斯 DN党 (74)专利代理机构 中国国际贸易促进委员会专 利商标事务所 11038 代理人 李玲 (54) 发明名称 动态允许和禁止写 XFR_RDY (57) 摘要 本发明。
2、涉及动态允许和禁止写XFR_RDY。 公开 一种动态允许和禁止 XFR_RDY 的使用的方法。在 本发明的一个实施例中, 所述方法包括在目标方 接收写命令, 和判定对于所述写命令, XFR_RDY 是 被允许还是被禁止。如果 XFR_RDY 被禁止, 所述 方法判定是否一个或多个缓冲器在目标方可用。 如果至少一个缓冲器可用, 所述方法通过把与所 述写命令相关的数据写入所述一个或多个缓冲器 中, 来处理所述写命令。 所述方法随后返回指示在 完成所述写命令之后, 在目标方仍然可用的缓冲 器的数目的信息。这里还公开和要求保护对应的 设备和计算机程序产品。 (30)优先权数据 (85)PCT申请进入国。
3、家阶段日 2013.04.26 (86)PCT申请的申请数据 PCT/EP2011/067866 2011.10.13 (87)PCT申请的公布数据 WO2012/055705 EN 2012.05.03 (51)Int.Cl. 权利要求书 2 页 说明书 10 页 附图 7 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书10页 附图7页 (10)申请公布号 CN 103180840 A CN 103180840 A *CN103180840A* 1/2 页 2 1. 一种动态允许和禁止 XFR_RDY 的方法, 所述方法包括 : 在目标方接收写命令 ;。
4、 判定对于所述写命令, XFR_RDY 是否被禁止 ; 如果 XFR_RDY 被禁止, 判定是否至少一个缓冲器在目标方可用 ; 如果至少一个缓冲器可用, 通过把与所述写命令相关的数据写入所述至少一个缓冲器 来处理所述写命令 ; 和 返回指示在完成所述写命令之后, 在目标方仍然可用的缓冲器的数目的信息。 2. 按照权利要求 1 所述的方法, 还包括如果所述至少一个缓冲器不可用, 在目标方放 弃与所述写命令相关的数据。 3. 按照权利要求 2 所述的方法, 其中放弃数据还包括返回指示所述写命令失败以及应 在 XFR_RDY 被允许的情况下重新驱动所述写命令的状态。 4. 按照任意前述权利要求所述的。
5、方法, 其中返回信息还包括把所述信息传送给写命令 的发起方。 5. 按照权利要求 4 所述的方法, 其中在向目标方传送 XFR_RDY 被禁止的另一个写命令 之前, 发起方判定在目标方仍然可用的缓冲器的数目是否大于发起方具有的与目标方的未 决写命令的数目。 6. 按照权利要求 5 所述的方法, 其中发起方被配置成如果发起方判定在目标方仍然可 用的缓冲器的数目大于发起方具有的与目标方的未决写命令的数目, 传送 XFR_RDY 被禁止 的另一个写命令。 7. 按照权利要求 5 所述的方法, 其中发起方被配置成如果发起方判定在目标方仍然可 用的缓冲器的数目不大于发起方具有的与目标方的未决写命令的数目。
6、, 传送 XFR_RDY 被允 许的写命令。 8. 一种包含保存在计算机可读介质上的计算机程序代码的计算机程序, 当被载入计算 机系统中并在计算机系统上执行时, 所述计算机程序代码使所述计算机系统执行按照权利 要求 1-7 任意之一所述的方法的所有步骤。 9. 一种动态允许和禁止 XFR_RDY 的系统, 所述系统包括 : 传送写命令的发起方 ; 接收所述写命令, 并判定对于所述写命令 XFR_RDY 是否被禁止的目标方 ; 目标方还被配置成如果 XFR_RDY 被禁止, 判定是否至少一个缓冲器在目标方可用 ; 目标方还被配置成如果至少一个缓冲器在目标方可用, 通过把与所述写命令相关的数 据写。
7、入所述至少一个缓冲器来处理所述写命令 ; 并且 目标方还被配置成向发起方返回指示在完成所述写命令之后, 在目标方仍然可用的缓 冲器的数目的信息。 10. 按照权利要求 9 所述的系统, 其中目标方还被配置成如果至少一个缓冲器不可用, 放弃与所述写命令相关的数据。 11. 按照权利要求 10 所述的系统, 其中目标方还被配置成如果数据被放弃, 返回指示 所述写命令失败以及应在 XFR_RDY 被允许的情况下重新驱动所述写命令的状态。 12. 按照权利要求 9-11 中任意之一所述的系统, 其中发起方还被配置成在向目标方传 送 XFR_RDY 被禁止的另一个写命令之前, 判定在目标方仍然可用的缓冲。
8、器的数目是否大于 权 利 要 求 书 CN 103180840 A 2 2/2 页 3 与目标方的未决写命令的数目。 13. 按照权利要求 12 所述的系统, 其中发起方还被配置成如果在目标方仍然可用的缓 冲器的数目大于与目标方的未决写命令的数目, 把 XFR_RDY 被禁止的另一个写命令传送给 目标方。 14. 按照权利要求 12 所述的系统, 其中发起方还被配置成如果在目标方仍然可用的缓 冲器的数目不大于与目标方的未决写命令的数目, 传送 XFR_RDY 被允许的写命令。 权 利 要 求 书 CN 103180840 A 3 1/10 页 4 动态允许和禁止写 XFR_RDY 技术领域 0。
9、001 本发明涉及动态切换传递就绪(XFR_RDY)允许模式和传递就绪(XFR_RDY)禁止模 式的设备和方法。 背景技术 0002 在光纤通道协议 (FCP) 写操作中, XFR_RDY 可被 FCP 目标设备用于通知 FCP 发起 方, 目标设备准备好接收 FCP 数据突发串。在进程登录 (PRLI) 时, 在两个 FCP 端口之间协 商XFR_RDY对于第一数据突发串的使用。 FCP端口协商或者在写操作中, 对第一FCP数据突 发串使用 XFR_RDY, 或者对第一突发串禁止 XFR_RDY。如果 XFR_RDY 被允许, 在接收到 FCP 写命令之后, 目标设备将为第一FCP数据突发串。
10、分配空间, 之后把XFR_RDY消息发送给发起 方。同样地, 只有在发起方接收到 XFR_RDY 消息后, 它才可以发送 FCP 写数据突发串。如果 XFR_RDY 被禁止, 发起方认为目标设备总是具有可用于接收第一数据突发串的 x 字节的数 据, 从而发起方将发送后面紧跟 FCP 数据的写命令, 而不等待 XFR_RDY 消息。对于受等待时 间约束的应用, 比如长距离数据复制来说, 无 XFR_RDY 允许的操作尤其有益。 0003 现代的光纤通道端口一般支持至少 4K 的并发光纤通道交换, 和每个数据突发串 至少 64K。假定这些值, 支持 XFR_RDY 禁止的 FCB 设备必须具有可用。
11、于接收第一数据突发 串的每个端口至少 64K4K=256MB 的内存。这是相当大量的内存, 尤其是考虑到现代存储 控制器可支持超过128个端口, 这转化为为第一数据突发串保留的32G(256MB128)内存。 不是所有的存储控制器都具有可用于保留如此多的内存, 以便在 XFR_RDY 禁止的情况下, 接收第一数据突发串的资源。 在没有保证可用于接收第一数据突发串的足够缓冲空间的情 况下, 需要能够在 XFR_RDY 被禁止的情况下工作的存储控制器具有以下选择 : 0004 第一种选择是不支持 XFR_RDY 禁止模式的操作。这是多数光纤通道设备实现的选 择。不过, 在许多结构 ( 比如长距离复。
12、制数据的结构 ) 中, 这种选择不可行, 因为它会不可 接受地影响写性能。这归因于禁止 XFR_RDY 要求发起方等待来自目标方的 XFR_RDY 消息, 之后才能够进行数据传递的事实。在许多结构中, 这样的延迟是不能接受的。 0005 第二种选择是支持发起方和目标方之间的数目有限的交换。 在其中过预订普遍的 竞争环境中, 这种选择不可行。 许多控制器需要支持每个端口登录的大量发起方, 同时每个 发起方并发地发送大量的交换。 0006 第三种选择是支持 XFR_RDY 禁止模式的操作, 但是限制第一数据突发串的大小。 对具有基于高速缓存跟踪 (cache track) 的体系结构的存储控制器来。
13、说, 这种选择并不可 行, 所述体系结构被配置成对于每个 64K 跟踪, 发送一个 XFR_RDY 消息。于是需要具有能够 支持最少 64K 的突发串大小。 0007 第四种选择是支持 XFR_RDY 禁止模式的操作, 但是不保证存在容纳在 XFR_RDY 被 禁止的情况下, 发生的最大数目的并发写传输的足够缓冲器。 换句话说, 目标设备被配置成 允许可用的缓冲空间的过预订。这种选择依赖于多数时间工作负荷不需要所有资源的事 实。不过, 如果工作负荷足够高, 从而需要比物理可用的缓冲空间更多的缓冲空间, 目标控 说 明 书 CN 103180840 A 4 2/10 页 5 制器必须或者放弃或者。
14、异常中止交换。这导致 I/O 错误, 从而导致性能退化和可能的 SAN 拥塞及其各种结果, 包括影响 SAN 中的其它设备。 0008 第五种选择是对于 FCP 端口, 在进程登录期间, 协商 XFR_RDY 的禁止。当缓冲空间 低于一定的阈值时, 目标方被配置成丢弃新到来的交换和 / 或注销主机。这会迫使主机再 次登录, 此时 FCP 端口可重新协商, 以允许 XFR_RDY。这种选择需要在能够允许或禁止 XFR_ RDY 使用之前, 终止所有的 I/O, 导致不希望的性能退化。 0009 鉴于上面所述, 需要一种减轻现有技术的上述缺陷的手段。 发明内容 0010 因而在第一方面, 本发明提。
15、供一种动态允许和禁止 XFR_RDY 的方法, 所述方法包 括 : 在目标方接收写命令 ; 判定对于所述写命令, XFR_RDY 是否被禁止 ; 如果 XFR_RDY 被禁 止, 判定是否至少一个缓冲器在目标方可用 ; 0011 如果至少一个缓冲器可用, 通过把与所述写命令相关的数据写入所述至少一个缓 冲器, 来处理所述写命令 ; 和返回指示在完成所述写命令之后, 在目标方仍然可用的缓冲器 的数目的信息。 0012 所述方法还可包括如果至少一个缓冲器不可用, 在目标方放弃与所述写命令相关 的数据。优选地, 放弃数据还包括返回指示所述写命令失败且应在 XFR_RDY 被允许的情况 下重新驱动所述。
16、写命令的状态。优选地, 返回信息还包括把所述信息传送给所述写命令的 发起方。优选地, 在向目标方传送 XFR_RDY 被禁止的另一个写命令之前, 发起方判定在目标 方仍然可用的缓冲器的数目是否大于发起方具有的与目标方的未决写命令的数目。优选 地, 发起方被配置成如果发起方判定在目标方仍然可用的缓冲器的数目大于发起方具有的 与目标方的未决写命令的数目, 传送 XFR_RDY 被禁止的另一个写命令。优选地, 发起方被配 置成如果发起方判定在目标方仍然可用的缓冲器的数目不大于发起方具有的与目标方的 未决写命令的数目, 传送 XFR_RDY 被允许的写命令。 0013 在第二方面, 提供一种包含保存在。
17、计算机可读介质上的计算机程序代码的计算机 程序, 当被载入计算机系统中, 并在计算机系统上执行时, 所述计算机程序代码使所述计算 机系统执行按照第一方面的方法的所有步骤。 0014 可以动态允许和禁止 XFR_RDY 的计算机程序产品的形式, 提供所述第二方面的发 明, 所述计算机程序产品包括其中包含有计算机可用程序代码的计算机可用存储介质, 所 述计算机可用程序代码包括 : 在目标方接收写命令的计算机可用程序代码 ; 判定对于所述 写命令, XFR_RDY 是否被禁止的计算机可用程序代码 ; 如果 XFR_RDY 被禁止, 判定是否至少 一个缓冲器在目标方可用的计算机可用程序代码 ; 如果至。
18、少一个缓冲器可用, 通过把与所 述写命令相关的数据写入所述至少一个缓冲器, 来处理所述写命令的计算机可用程序代 码 ; 和返回指示在完成所述写命令之后, 在目标方仍然可用的缓冲器的数目的信息的计算 机可用程序代码。 0015 在第三方面, 提供一种动态允许和禁止 XFR_RDY 的系统, 所述系统包括 : 传送写命 令的发起方 ; 接收所述写命令, 并判定对于所述写命令, XFR_RDY 是否被禁止的目标方 ; 目 标方还被配置成如果 XFR_RDY 被禁止, 判定是否至少一个缓冲器在目标方可用 ; 目标方还 被配置成如果至少一个缓冲器可用, 通过把与所述写命令相关的数据写入所述至少一个缓 说。
19、 明 书 CN 103180840 A 5 3/10 页 6 冲器, 来处理所述写命令 ; 并且目标方还被配置成向发起方返回指示在完成所述写命令之 后, 在目标方仍然可用的缓冲器的数目的信息。 0016 优选地, 目标方还被配置成如果至少一个缓冲器不可用, 放弃与所述写命令相关 的数据。 优选地, 目标方还被配置成如果数据被放弃, 返回指示所述写命令失败且应在XFR_ RDY被允许的情况下重新驱动所述写命令的状态。 优选地, 发起方还被配置成在向目标方传 送 XFR_RDY 被禁止的另一个写命令之前, 判定在目标方仍然可用的缓冲器的数目是否大于 与目标方的未决写命令的数目。优选地, 发起方还被。
20、配置成如果在目标方仍然可用的缓冲 器的数目大于与目标方的未决写命令的数目, 把 XFR_RDY 被禁止的另一个写命令传送给目 标方。优选地, 发起方还被配置成如果在目标方仍然可用的缓冲器的数目不大于与目标方 的未决写命令的数目, 传送 XFR_RDY 被允许的写命令。 0017 在一个实施例中, 动态允许和禁止 XFR_RDY 的方法可包括 : 从目标方接收指示在 目标方可用的缓冲器的数目的信息 ; 判定在目标方仍然可用的缓冲器的数目是否大于与目 标方的未决写命令的数目 ; 如果在目标方可用的缓冲器的数目大于与目标方的未决写命令 的数目, 传送 XFR_RDY 被禁止的写命令 ; 和如果在目标。
21、方可用的缓冲器的数目不大于与目 标方的未决写命令的数目, 传送XFR_RDY被允许的写命令。 所述方法还可包括如果XFR_RDY 被禁止的写命令失败, 在 XFR_RDY 被允许的情况下重新驱动写命令。 0018 本发明的实施例从而提供一种允许设备利用在 XFR_RDY 被禁止的情况下, 可能存 在的性能增益, 而不要求支持的最大数目的 FCP 写操作能够并发进行的解决方案。此外, 需 要一种能够以最小的写性能退化, 有效地允许和禁止 XFR_RDY 的解决方案。理想地, 这种解 决方案应允许设备当工作负荷变化时, 在交换对交换的基础上, 允许和禁止XFR_RDY。 因而, 提出了本发明, 以。
22、提供动态允许和禁止 XFR_RDY 的使用的设备和方法。根据以下说明和附 加的权利要求, 本发明的特征和优点将变得更明显, 或者依据下面记载的本发明的实践, 可 以获悉本发明的特征和优点。 0019 与上面所述一致, 这里公开一种动态允许和禁止 XFR_RDY 的使用的方法。在本发 明的一个实施例中, 所述方法包括 : 在目标方接收写命令, 和判定对于所述写命令, XFR_RDY 是被允许还是被禁止。如果 XFR_RDY 被禁止, 所述方法判定是否一个或多个缓冲器在目标 方可用。如果至少一个缓冲器可用, 所述方法通过把与所述写命令相关的数据写入所述一 个或多个缓冲器中, 来处理所述写命令。 所。
23、述方法随后返回指示在完成所述写命令之后, 在 目标方仍然可用的缓冲器的数目的信息。 0020 这里还公开和要求保护对应的设备和计算机程序产品。 附图说明 0021 下面参考附图, 举例说明本发明的优选实施例, 附图中 : 0022 图 1 是表示其中可实现按照本发明的实施例的设备和方法的网络环境的一个例 子的高级方框图 ; 0023 图 2 是表示允许网络设备之间的通信的组件的高级方框图 ; 0024 图 3 是表示发起方和目标方之间的通信的高级方框图 ; 0025 图4是表示由支持XFR_RDY的动态允许和禁止的发起方实现的方法的一个实施例 的流程图 ; 说 明 书 CN 103180840。
24、 A 6 4/10 页 7 0026 图5是表示由支持XFR_RDY的动态允许和禁止的目标方实现的方法的一个实施例 的流程图 ; 0027 图6是表示在支持XFR_RDY的动态允许和禁止的发起方内实现的各个模块的高级 方框图 ; 以及 0028 图7是表示在支持XFR_RDY的动态允许和禁止的目标方内实现的各个模块的高级 方框图。 具体实施方式 0029 易于理解可按照各种不同的结构, 布置和设计附图中说明和例示的本发明的实施 例的各个组件。从而, 在附图中表示的本发明的实施例的以下更详细说明并不意图限制要 求保护的本发明的范围, 仅仅代表目前构思的按照本发明的实施例的一些例子。 参考附图, 。
25、将更好地理解目前说明的实施例, 附图中, 相同的部分用相同的附图标记表示。 0030 所属技术领域的技术人员知道, 本发明可以实现为装置、 系统、 方法或计算机程序 产品。此外, 本发明可以采取硬件实施例、 配置成操作硬件的软件实施例 ( 包括固件、 驻留 软件、 微代码等)、 或者结合硬件和软件的实施例的形式, 本文一般都称为 “模块” 或 “系统” 。 此外, 本发明可采取用任何有形的表达介质体现的计算机可用存储介质的形式, 所述表达 介质保存有计算机可用程序代码。 0031 可以利用一个或多个计算机可用介质或计算机可读存储介质的任意组合保存计 算机程序产品。计算机可用或计算机可读存储介质。
26、例如可以是但不限于电、 磁、 光、 电磁、 红外线、 或半导体系统、 装置或器件。计算机可读存储介质的更具体例子 ( 非穷 举列表 ) 包括 : 具有一条或多条导线的电连接、 便携式计算机磁盘、 硬盘、 随机存取存储器 (RAM)、 只读存储器 (ROM)、 可擦式可编程只读存储器 (EPROM 或闪存 )、 光纤、 便携式光盘只 读存储器(CD-ROM)、 光存储器件或磁存储器件。 在本文的上下文中, 计算机可用或计算机可 读存储介质可以是任何能够包含、 存储或传送程序的任何介质, 该程序可以供指令执行系 统、 装置或者器件使用或者与其结合使用。 0032 可用一种或多种编程语言, 包括诸如。
27、 Java、 Smalltalk、 C+ 之类的面向对象编程 语言, 和诸如 “C” 编程语言或类似编程语言之类的常规过程编程语言的任意组合, 编写执行 本发明的操作的计算机程序代码。也可用诸如汇编语言之类的低级编程语言, 编写实现本 发明的计算机程序代码。 0033 下面参考按照本发明各个实施例的方法、 设备、 系统和计算机程序产品的流程图 和 / 或方框图, 说明本发明。应当理解, 流程图和 / 或方框图的每个方框, 以及流程图和 / 或方框图中的各个方框的组合可用计算机程序指令或代码实现。 这些计算机程序指令可被 提供给通用计算机、 专用计算机或者其它可编程数据处理设备的处理器, 从而产。
28、生机器, 以 致通过计算机或其它可编程数据处理设备的处理器执行的指令产生实现在流程图和 / 或 方框图的一个或多个方框中指定的功能 / 动作的装置。 0034 这些计算机程序指令也可被保存在计算机可读存储介质中, 所述计算机可读存储 介质可指令计算机或其它可编程数据处理设备按特定方式工作, 以致保存在计算机可读存 储介质中的指令产生制成品, 所述制成品包括实现在流程图和 / 或方框图的一个或多个方 框中指定的功能 / 动作的指令装置。 说 明 书 CN 103180840 A 7 5/10 页 8 0035 计算机程序指令也可被加载到计算机或其它可编程数据处理设备上, 使得在所述 计算机或其它。
29、可编程设备上执行一系列的操作步骤, 从而产生计算机实现的过程, 以致在 所述计算机或其它可编程设备上执行的指令提供实现在流程图和 / 或方框图的一个或多 个方框中指定的功能 / 动作的过程。 0036 参见图1, 图中图解说明网络体系结构100的一个例子。 介绍网络体系结构100是 为了表示其中可实现按照本发明的设备和方法的环境的一个例子。网络体系结构 100 只是 作为例子给出的, 并不意图限制本发明。实际上, 除了所示的网络体系结构 100 之外, 这里 公开的设备和方法还适用于各种不同的网络体系结构。 0037 如图所示, 网络体系结构 100 包括利用网络 104 互连的一个或多个计算。
30、机 102、 106。网络 104 例如可包括局域网 (LAN)104、 广域网 (WAN)104、 因特网 104、 企业内部网 104 等等。在一些实施例中, 计算机 102、 106 可包括客户端计算机 102 和服务器计算机 ( 这里 也称为 “主机系统” 106)。通常, 客户端计算机 102 发起通信会话, 而服务器计算机 106 等 待来自客户端计算机 102 的请求。在一些实施例中, 计算机 102 和 / 或服务器 106 可连接 到一个或多个内部或外部的直接连接的存储系统 112( 例如, 硬盘驱动器、 固态驱动器、 磁 带驱动器等等 )。这些计算机 102、 106 和直。
31、接连接的存储系统 112 可利用诸如 ATA、 SATA、 SCSI、 SAS、 光纤通道之类的协议, 进行通信。 0038 在一些实施例中, 网络体系结构 100 可包括在服务器 106 之后的存储网络 108, 比 如存储区域网 (SAN)108 或 LAN108( 例如, 当利用网络连接的存储器时 )。网络 108 可把服 务器106连接到一个或多个存储系统110, 比如硬盘驱动器或固态驱动器的阵列110a、 磁带 库 110b、 单个的硬盘驱动器 110c 或固态驱动器 110c、 磁带驱动器 110d、 CD-ROM 库等等。为 了访问存储系统 110, 主机系统 106 可通过从主。
32、机 106 上的一个或多个端口到存储系统 110 上的一个或多个端口的物理连接, 进行通信。连接可以经由交换机、 架构 (fabric)、 直接连 接等。在一些实施例中, 服务器 106 和存储系统 110 可以利用诸如光纤通道 (FC) 之类的连 网标准通信。 0039 参见图 2, 主机系统 106 和存储系统 110 都可包括通过存储网络 108, 与其它主机 系统 106 和存储系统 110 通信的一个或多个主机适配器 200。在一些实施例中, 主机适配 器 200 被实现成分别插入主机系统 106 和存储系统 110 的扩展插槽中的适配卡, 不过在所 有实施例中, 这不是强制性的。主。
33、机系统 106 和存储系统 110 上的主机适配器 200 可包括 便利通信的一个或多个端口 202。对于本说明来说, 发起通信 ( 例如, 通过发送命令 ) 的端 口 202 可被称为 “发起方” , 而接收并响应所述通信的端口 202 可被称为 “目标方” 。图 3 中 图解说明了表示发起方 300 和目标方 302 的一个例子的高级方框图。 0040 参见图 3, 如在上面的背景技术部分中所述, 在光纤通信协议 (FCP) 写操作中, FCP 目标方 302 可以利用 XFR_RDY 告知 FCP 发起方 300, 目标方 302 准备好接收 FCP 数据突发 串。可在进程登录 (PRL。
34、I) 时, 在两个 FCP 端口 202 之间协商对 XFR_RDY 使用第一数据突发 串。FCP 端口 202 可协商或者在写操作中, 对第一 FCP 数据突发串使用 XFR_RDY, 或者对第 一突发串禁止 XFR_RDY。如果 XFR_RDY 被允许, 在接收到 FCP 写命令之后, 目标方 302 将为 第一 FCP 数据突发串分配空间, 之后把 XFR_RDY 消息发送给发起方 300。同样地, 只有在发 起方接收到 XFR_RDY 消息后, 它才可以发送 FCP 写数据突发串。如果 XFR_RDY 被禁止, 发起 方 300 认为目标设备 302 总是具有可用于接收第一数据突发串的。
35、 x 字节的数据, 从而发起 说 明 书 CN 103180840 A 8 6/10 页 9 方 300 将发送后面紧跟 x 字节的 FCP 数据的写命令, 而不等待 XFR_RDY 消息。 0041 如在背景技术部分中所述, 无 XFR_RDY 允许的操作有益于受等待时间约束的结 构, 比如长距离数据复制(例如, 对等远程复制应用, 或者说PPRC)。 然而, 如上所述, 不是所 有的存储控制器都具有可用于保留为在 XFR_RDY 被禁止的情况下, 接收第一数据突发串而 需要的大量内存的资源。从而, 需要一种使设备能够利用对于有限数目的写操作, 使 XFR_ RDY 被禁止的性能优点的解决方。
36、案。此外需要一种以最小的写性能降低, 动态允许和禁止 XFR_RDY的使用的解决方案。 理想地, 这种设备和方法应允许设备在工作负荷变化时并在交 换对交换的基础上, 允许和禁止 XFR_RDY。 0042 图 3 表示动态允许和禁止 XFR_RDY 的使用的技术的概况。下面将结合图 4 和 5, 更 详细地说明该技术。该技术允许发起方 300 和目标方 302 利用与对于有限数目的写操作, 禁止 XFR_RDY 相关的性能增益。 0043 如图3中所示, 在选择的实施例中, 发起方300可被配置成留意它具有的与目标方 302 的 (XFR_RDY 被禁止的 ) 未决写命令 308 的数目 30。
37、4。未决写命令 308 可包括发起方 300 已发送给目标方 302, 但是还未接收到指示写命令 308 是成功还是失败的状态 310 的那 些写命令。在一些实施例中, 发起方 300 发送给目标方 302 的每个写命令 308 可包括支持 字段 312 和允许 / 禁止字段 314。 0044 支持字段 312 指示发起方 300 是否支持 XFR_RDY 的动态允许和禁止。在一些实施 例中, 支持字段 312 是单个比特。可以选择或配置该比特, 以致不支持 XFR_RDY 的动态允许 和禁止的目标方 302 将看不见该比特。当该比特被设定时, 发起方 300 可指示它支持两件 事物 : (。
38、1) 指示 XFR_RDY 被禁止的写命令 308 失败, 从而应在 XFR_RDY 被允许的情况下重新 驱动所述写命令 308 的状态消息 310 ; 和 (2) 指示写操作成功完成的状态消息 310, 其中状 态消息 310 包括指示在目标方 302 可用于服务来自发起方 300 的 XFR_RDY 被禁止的写操作 的缓冲器的数目 306 的信息。 0045 在其它实施例中, 可以使用不同于利用支持字段 312 的方法, 或者除了利用支持 字段 312 之外的方法, 确定发起方 300 和目标方 302 是否支持 XFR_RDY 的动态允许和禁止。 例如, 发起方300和目标方302可在登。
39、录阶段中, 或者作为特征交换协议或者其它适当协议 的一部分, 协商是否支持 XFR_RDY 的动态允许和禁止。在其它实施例中, 与包含在写命令 308 中相反, 支持字段 312 可被包含在帧报头或者其它适当位置中。 0046 发起方 300 可设定允许 / 禁止字段 314, 以指示对于其中包含允许 / 禁止字段 314 的特定写命令 308, XFR_RDY 是被允许还是被禁止。如果 XFR_RDY 被允许, 在发送与写命令 308 相关的数据之前, 发起方 300 将等待来自目标方 302 的 XFR_RDY 消息。另一方面, 如果 XFR_RDY 被禁止, 发起方 300 将在写命令 。
40、308 之后发送数据, 而不等待来自目标方 302 的 XFR_RDY 消息。在一些实施例中, 代替在写命令 308 中设置允许 / 禁止字段 314, 允许 / 禁 止字段 314 被包含在帧报头的控制字段或者其它适当位置中。 0047 目标方 302 可被配置成留意它可用于服务来自发起方 300 的写命令 308 的缓冲器 的数目 (Y)306。在一些实施例中, 目标方 302 为登录到目标方 302 的每个发起方 300 保持 不同的 “Y” 值。目标方 302 可根据进行中的写命令 308 的数目和登录到目标方 302 的发起 方 300 的数目, 动态改变 “Y” 的值。目标方 30。
41、2 还可由于其它原因, 比如需要把缓冲器用于 目标设备 302 上的其它操作, 来改变 “Y” 的值。 “Y” 的当前值是在任何特定时间, 在目标方 说 明 书 CN 103180840 A 9 7/10 页 10 302 可供发起方 300 利用的缓冲器的数目的快照。 0048 当目标方 302 处理写命令 308 时, 目标方 302 可答复以指示写操作 308 的成功或 失败的状态 310。状态消息 310( 或者另一个消息, 取决于期望的实现 ) 可指示在完成写命 令 308 之后, 在目标方 302 上仍然可用的缓冲器的数目 306。利用该信息 306, 发起方 300 可比较在目标。
42、方302可用的缓冲器的数目306, 和它具有的与目标302的未决写命令的数目 304。可进行所述比较, 以确定发起方 300 发送给目标方 302 的下一个写命令 308 的操作模 式 ( 即, XFR_RDY 是被允许还是被禁止 )。 0049 例如, 如果在目标方 302 可用的缓冲器的数目 306 大于发起方 300 具有的与目标 方 302 的未决写命令的数目 304, 发起方 300 可发送 XFR_RDY 被禁止的下一个写命令 308。 另一方面, 如果在目标方 302 可用的缓冲器的数目 306 小于或等于发起方 300 具有的与目 标方302的未决写命令的数目304, 发起方3。
43、00可发送XFR_RDY被允许的下一个写命令308。 允许 XFR_RDY 将使目标 302 可以在接收与写命令 308 相关的数据之前, 分配缓冲器。 0050 参见图 4, 图中图解说明由支持 XFR_RDY 的动态允许和禁止的发起方 300 实现的 方法 400 的一个实施例。如图所示, 发起方 300 首选判定它是否准备好传送写命令 ( 步骤 402)。如果发起方 300 接收到需要被写入目标设备 302 中的数据, 会发生所述判定。发起 方 300 随后在写命令 308 的控制字段 312 中, 指示它支持 XFR_RDY 的动态允许和禁止 ( 步 骤 404)。如前所述, 可以选择。
44、所述控制字段 312, 以致不支持 XFR_RDY 的动态允许和禁止的 目标方 302 看不见或者忽略所述控制字段 312。 0051 发起方 300 随后判定在目标方 302 可用的缓冲器的数目 306( 步骤 406)。这可通 过读取发起方 300 保持的 Y 的值来实现。在一些实施例中, 发起方 300 把它的 Y 的内部值 初始化为期望值, 随后当在状态消息 310 或其它适当消息中, 从目标方 302 接收到可用缓 冲器的数目 306 时更新 Y。发起方 300 还判定它具有的与目标方 302 的未决写命令的数目 304( 步骤 408)。当发起方 300 把写命令 308 发送给目。
45、标方 302, 并从目标方 302 接收到状 态消息 310 时, 发起方 300 可留意所述数目 304。 0052 在步骤 410, 如果在目标方 302 可用的缓冲器的数目 (Y)306 大于发起方 300 具有 的与目标方 302 的未决写命令的数目 (Z)304, 发起方 300 发送 XFR_RDY 被禁止的写命令 308(步骤412)。 发起方300随后把与写命令308相关的数据发送给目标方302(步骤412), 而不等待来自目标方 302 的 XFR_RDY 消息。在步骤 410, 如果在目标方 302 可用的缓冲器的 数目 306 小于或等于发起方 300 具有的与目标方 3。
46、02 的未决写命令的数目 304, 发起方 300 发送 XFR_RDY 被允许的写命令 308( 步骤 414)。发起方 300 随后等待接收来自目标方 302 的 XFR_RDY 消息 ( 步骤 416)。一旦发起方 300 接收到 XFR_RDY 消息, 发起方 300 就向目标 方 302 发送与写命令 308 相关的数据 ( 步骤 418)。 0053 一旦在步骤 412 或 418, 发起方 300 发送了数据, 发起方 300 就等待从目标方 302 接收状态310(步骤420)。 如果状态良好, 意味写操作成功完成, 发起方300从状态信息310 读取在目标方 302 可用的缓。
47、冲器的数目 ( 步骤 422)。该信息允许发起方 300 相应地为未来 的写命令 308 允许或禁止 XFR_RDY。另一方面, 如果状态不好, 意味写命令 308 没有成功完 成, 发起方300可进行错误恢复处理(步骤424)。 这可包括在较短的等待期之后, 沿着相同 的路径或者另一条路径, 重新驱动写命令 308。另外或者另一方面, 这可包括在 XFR_RDY 被 允许的情况下, 重新驱动写命令 308, 如果状态消息 310 指令发起方 300 这样做的话。当发 说 明 书 CN 103180840 A 10 8/10 页 11 起方 300 被告知写命令 308 没有成功完成时, 发起。
48、方 300 可把它的 Y 的内部值设定为 0, 以 反映在目标方 302 上目前没有任何缓冲器可用。另一方面, 目标方 302 可告知发起方 300, 没有任何缓冲器可用, 以致发起方可更新其 Y 值。发起方 300 随后对下一个写命令 308 重 复方法 400。 0054 参见图 5, 图中图解说明由支持 XFR_RDY 的动态允许和禁止的目标方 302 实现的 方法 500 的一个实施例。如图所示, 目标方 302 首选判定是否接收到了写命令 308( 步骤 502)。如果接收到了写命令 308( 步骤 502), 通过检查写命令 308, 目标方 302 判定 XFR_RDY 是否被禁。
49、止 ( 步骤 504)。如果 XFR_RDY 未被禁止, 目标方 302 分配缓冲器 ( 步骤 526), 并 向发起方 300 发送 XFR_RDY( 步骤 526)。当数据从发起方 300 到达时, 目标方 302 把数据写 入所述缓冲器中, 并向发起方 300 返回状态 310( 步骤 528), 状态 310 指示写操作的成功或 失败, 以及在完成写操作之后, 在目标方仍然可用的缓冲器的数目 306。 0055 在步骤 504, 如果 XFR_RDY 被禁止, 目标方 302 等待与写命令 308 相关的数据到达 ( 步骤 506), 而不发送 XFR_RDY。当数据到达时, 目标方 302 判定在目标方 302, 一个或多个 缓冲器是否可用(步骤508)。 如果一个或多个缓冲器可用, 目标方302通过把数据写入所述 缓冲器, 来处理写命令 308( 步骤 510)。目标方 302 随后判定发起方 300 是否支持 XFR_RDY 的动态允许和禁止 ( 步骤 512)。这可通过读取写命令 308 中的支持字段 312 来实现。如。