首页> 中国专利> SAS扩展器中数据预取

SAS扩展器中数据预取

摘要

SAS扩展器中数据预取。一种SAS扩展器,收集与节点相关的数据访问信息并确定数据预取是否恰当。所述SAS扩展器利用所述的节点的在先数据请求识别潜在的数据块。所述SAS扩展器为所述潜在的数据块发出数据请求至目标。所述SAS扩展器将所述潜在的数据块存储于预取高速缓存内用于数据读取内未来使用。

著录项

  • 公开/公告号CN102486752A

    专利类型发明专利

  • 公开/公告日2012-06-06

    原文格式PDF

  • 申请/专利权人 LSI公司;

    申请/专利号CN201110086062.5

  • 申请日2011-04-07

  • 分类号G06F12/06(20060101);

  • 代理机构11210 北京纽乐康知识产权代理事务所;

  • 代理人田磊

  • 地址 美国加利福尼亚州米尔皮塔斯市

  • 入库时间 2023-12-18 05:25:47

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-11-09

    专利权的转移 IPC(主分类):G06F12/06 登记生效日:20181022 变更前: 变更后: 申请日:20110407

    专利申请权、专利权的转移

  • 2016-08-10

    专利权的转移 IPC(主分类):G06F12/06 登记生效日:20160721 变更前: 变更后: 申请日:20110407

    专利申请权、专利权的转移

  • 2016-05-04

    授权

    授权

  • 2013-09-18

    实质审查的生效 IPC(主分类):G06F12/06 申请日:20110407

    实质审查的生效

  • 2012-06-06

    公开

    公开

说明书

技术领域

本公开大体上涉及串行连接小型计算机系统接口(SAS)设备领域,尤其涉及 一种利用SAS扩展器实现数据预取的设备、系统和方法。

背景技术

在串行连接SCSI中,设备是SAS发起者、SAS目标、或SAS扩展器。SAS 发起者是引发设备服务请求和任务管理请求的设备。SAS目标是接收并处理来自 SAS目标的请求的设备。SAS扩展器是用来促进多SAS发起者或目标到单个端口 之间通信的设备。在SAS拓扑中,多SAS扩展器可以级联形式相互连接。当在SAS 拓扑内发生多个到SAS发起者或SAS目标的请求时,SAS发起者或SAS目标可能 忙于执行其它的任务。

发明内容

一种促进存储系统中数据读取的方法,包括,但不限于:收集与发起者和目标 之间的连接相关的数据访问信息,确定所述发起者和所述目标之间的连接是否超出 一使用率阈值,该确定基于与所述发起者和所述目标之间的连接相关的数据访问信 息,接收来自所述发起者的第一数据请求,该第一数据请求针对所述目标的至少一 个第一数据块,在确定所述发起者和所述目标之间的连接超出所述使用率阈值后, 基于所述第一数据请求识别所述目标的至少一个第二可能被访的数据块,并将所述 至少一个第二可能被访的数据块包括在来自所述发起者的未来数据请求内,发出第 二数据请求到所述目标,该第二数据请求针对所述的至少一个第二可能被访的数据 块,接收来自所述目标的所述至少一个第二可能被访的数据块,并在SAS扩展器内 存储来自所述目标的所述至少一个第二可能被访的数据块。

一种系统,可以包括,但不限于:用于收集与发起者和目标之间的连接相关的 数据访问信息的装置,用于确定所述发起者和所述目标之间的连接是否超出一使用 率阈值的装置,该确定基于与所述发起者和所述目标之间的连接相关的数据访问信 息,用于为所述目标的至少一个第一数据块接收来自所述发起者的第一数据请求的 装置,用于在确定所述发起者和所述目标之间的连接超出使用率阈值后,基于所述 第一数据请求识别所述目标的至少一个第二可能被访的数据块,并将所述至少一个 第二可能被访的数据块包括在来自所述发起者的未来数据请求内的装置,用于为所 述的至少一个第二可能被访的数据块发出第二数据请求到所述目标的装置,用于接 收来自所述目标的所述至少一个第二可能被访的数据块并在SAS扩展器内存储来 自所述目标的所述至少一个第二可能被访的数据块的装置。

一种SAS扩展器设备,可以包括,但不限于:第一端口,其与发起者通信地耦 接用于数据通信,第二端口,其与目标通信地耦接用于数据通信,用于存储数据的 缓冲存储器,以及通信地耦接到所述第一端口、第二端口和缓冲存储器的处理器, 该处理器被构形以执行一种促进数据读取的方法,该方法包括以下步骤:收集与发 起者和目标之间的连接相关的数据访问信息,确定所述发起者和所述目标之间的连 接是否超出一使用率阈值,该确定基于与所述发起者和所述目标之间的连接相关的 数据访问信息,为所述目标的至少一个第一数据块接收来自所述发起者的第一数据 请求,在确定所述发起者和所述目标之间的连接超出使用率阈值后,基于所述第一 数据请求识别所述目标的至少一个第二可能被访的数据块,并将所述至少一个第二 可能被访的数据块包括在来自所述发起者的未来数据请求内,为所述的至少一个第 二可能被访的数据块发出第二数据请求到所述目标,接收来自所述目标的所述至少 一个第二可能被访的数据块并在所述缓冲存储器内存储来自所述目标的所述至少 一个第二可能被访的数据块。

需要理解的是,上述大体的描述和以下详细的说明都只是示范性和解释性说明 并不是本公开必要的限制。附图,其被包含在说明书中并构成说明书的一部分,阐 明了本公开的主旨。同时,说明书和附图用于解释本公开的原理。

附图说明

本领域一般技术人员通过参照以下附图可更好理解本公开的众多优势,其中:

图1是阐述使用SAS扩展器的网络拓扑的框图;

图2是阐述用于数据预取的指令序列程序的流程图;和

图3是阐述促进存储系统中数据读取的方法的流程图。

具体实施方式

现在将详细地对本公开的主题进行参照,其在附图中做出了阐述。

图1示出了本公开示例实施例所述的SAS扩展器为特征的串行连接小型计算机 系统接口(SAS)网络。所述网络100可以包括SAS扩展器110。网络100可以包 括一个或多个与扩展器110连接的源设备120用以数据通信。例如,源设备120可 包括发起者(例如主机系统,服务器系统)或另一SAS扩展器。所述一个或多个源 设备120可以通过扩展器110的源设备端口130连接扩展器110。网络100可以包 括一个或多个与扩展器110连接的目标设备140用以数据通信。例如,目标设备140 可包括一目标(例如SAS磁盘、SAS兼容磁盘、SAS磁盘阵列、或SATA磁盘阵 列)或另一SAS扩展器。所述一个或多个目标设备140可通过扩展器110的目标设 备端口150连接扩展器110。

扩展器110可进一步包括用于扩展器110的控制和操作的处理器160。扩展器 110可进一步包括与处理器160通信地耦接的存储器170用以扩展器110内数据的 存储。扩展器110可以被构形以建立通过源设备端口130连接到扩展器110的发起 者与通过目标设备端口150连接到扩展器110的目标之间的连接。扩展器110可以 为通过源设备端口130(例如源设备120)直接连接到扩展器110的发起者建立连 接或可以为通过一个或多个通过源设备端口130连接到扩展器110的扩展器的网络 连接到扩展器110的发起者建立连接。扩展器110可以建立与通过源设备端口130 (例如目标设备120)直接连接到扩展器110的目标的连接或可以建立与通过一个 或多个通过目标设备端口150连接到扩展器110的扩展器的网络连接到扩展器110 的目标的连接。建立的包括网络100的特定发起者和网络100的特定目标的连接被 称为节点。如图1所示,处理器160和存储器170可以在扩展器110内运行。在另 一实施例中,一个或多个处理器160和存储器170可以作为存储系统的部分在扩展 器110外部运行。

扩展器110的处理器160可以收集与网络100的特定节点相关的数据访问信息。 链路利用信息可以包括与单个端口(如源设备端口130或目标设备端口150中的一 个)相关的信息。例如,链路利用信息可以包括一个或多个利用率(例如链路被使 用时间与链路被建立时间的比率)或带宽要求(如链路上传输数据的速度)。处理 器160可以收集为特定的发起者和特定的目标建立的连接的多组链路利用信息并修 改所述链路利用信息以提供节点利用信息。节点利用信息可以包括一个或多个节点 利用率(例如节点被使用时间与节点被建立时间的比率)或节点带宽要求(例如节 点上传输的数据的速度)。处理器160可以通过节点利用信息收集与网络100的特 定节点相关的数据访问信息。

与网络100的特定节点相关的数据访问信息可以进一步包括与由扩展器110执 行的储存和转发过程相关的信息。在储存和转发过程中,扩展器可以接收来自发起 者的连接。扩展器可以在建立与该连接的期望目标的连接之前缓冲来自该发起者的 输出帧。执行储存和转发过程可以提供扩展器访问含有一个或多个连接的有效载荷 大小的数据访问信息(例如被转移到单个帧的数据量)、一个或多个与连接的数据 相关的标签(例如,单个输入/输出的指定的标识符)、与该连接相关的逻辑块地址 (LBAs),或与该连接相关的指令。在一示例中,主机可以发起通过扩展器连接到 驱动器。在另一示例中,驱动器可以发起通过扩展器连接到主机。存储和转发数据 访问信息可以通过处理器160收集和修改以提供与网络100的特定节点相关的数据 访问信息。处理器160可以通过所述存储和转发数据访问信息收集与网络100的特 定节点相关的数据访问信息。

处理器160可以修改一个或多个存储和转发数据访问信息或链路利用信息以提 供与网络100的特定节点的使用率的频率相关的信息。而且,处理器160可以修改 一个或多个存储和转发数据访问信息或链路利用信息以提供与在网络100的特定节 点上传输的数据量相关的信息。

处理器160可以利用与特定节点相关的信息来确定数据预取操作是否适用于网 络100的特定节点(例如,是否网络100的特定节点具有高效利用)。使用率阈值 可以包括一种或多种类型的与特定节点相关的信息。例如,处理器160可以确定是 否与网络100的特定节点相关的数据访问信息满足或超出使用率阈值。在一示例中, 处理器160可以利用矩阵来确定是否所述与特定节点相关的信息满足或超出使用率 阈值。使用率阈值可以是可编程的。而且,使用率阈值可以是用户可配置的。

处理器160可以为数据预取操作识别数据块。而且,在确定是否数据预取操作 适用于网络100的特定节点后为数据预取操作识别数据块。例如,处理器160可以 为特定节点接收数据读取请求(例如,数据读取请求由所述节点的发起者发出并且 所述数据读取请求被指向所述节点的目标)。所述数据读取请求可以为源数据集。 在接收所述数据读取请求之前,处理器160可以已确定适用于与数据读取请求相关 的节点的数据预取操作。在另一实施例中,在接收所述数据读取请求之后,所述处 理器160可以确定数据预取操作是否适用于与数据读取请求相关的节点。

处理器160可以基于所述源数据集为数据预取操作识别潜在数据集。例如,处 理器160可以基于邻近所述源数据集识别潜在数据集(例如,所述潜在数据集位于 邻近所述源数据集的LBA的LBA内)。在另一示例中,处理器160可以基于与所 述源数据集相关的内容识别潜在数据集(例如,所述潜在数据集和所述源数据集都 是一更大数据集的部分)。在另一示例中,处理器160可以基于与源数据集相关的 时间识别潜在数据集(例如,在所述潜在数据集的先前数据读取请求之后所述源数 据集的先前数据读取请求已被发出)。在另一示例中,处理器160可以基于一个或 多个上述的因素或关联识别潜在数据集(例如邻近性、内容性、和时间)。

在识别一潜在数据集之后,在为潜在数据集接收来自所述节点的发起者的数据 读取请求之前,处理器160可以为该潜在数据集发出数据读取请求到节点的目标。 例如,处理器160可以结合所述潜在数据集与所述源数据集发出一个或多个数据读 取请求。在另一示例中(未示出),处理器160可以为所述潜在数据集和所述源数 据集发出独立的数据读取请求。在处理器160可以为所述潜在数据集和所述源数据 集发出独立的数据读取请求的示例中,处理器160可以在为所述源数据集发出数据 读取请求之后为所述潜在数据集发出数据读取请求。而且,在所述数据读取请求的 目标(例如所述节点的目标)减少活动时(例如目标闲置时),处理器160可以为 潜在数据集发出数据请求。接收来自所述节点的目标的潜在数据集后,处理器160 可以存储所述潜在数据集于扩展器110的存储器170内。如在此使用的,预取所述 潜在数据集可以指为所述潜在数据集接收来自节点的发起者的数据读取请求之前 为所述潜在数据集发出数据读取请求到所述节点的目标。如在此使用的,预取所述 潜在数据集的高速缓存可以指的是在为所述潜在数据集接收来自节点的发起者的 数据读取请求之前存储所述潜在数据集于存储器170内。

处理器160可以在为所述潜在数据集接收来自节点的发起者的数据读取请求之 后发布所述潜在数据集到节点的发起者。在另一示例中,存储于存储器170内的所 述潜在数据集可被用于实现到除了所述节点的发起者的一发起者的数据读取请求。 而且,处理器160可以在确定存储于存储器170内的所述潜在数据集有效之后发布 所述潜在数据集到来自扩展器110的存储器170的发起者。例如,正如扩展器110 可以直接连接节点的目标,处理器160可以监控与节点的目标的数据通信,以确定 存储在所述节点的目标内所述潜在数据集的LBAs内的数据是否与存储在存储器 170内的潜在数据集相同。在确定存储于存储器170内的潜在数据集无效之后,处 理器160可以更新存储于存储器170内的潜在数据集。例如,处理器160可以通过 发出数据读取请求到节点的目标来更新存储于存储器170内的潜在数据集。在另一 示例中,处理器160可以利用通过扩展器110写入节点的目标的数据来更新存储于 存储器170内的潜在数据集。在另一实施例中,处理器160可以从存储器170清除 无效的潜在数据集并允许潜在数据集的数据读取请求操作而没有受益于数据预取。

在确定节点的目标很忙之后,处理器160可以发布潜在数据集到来自存储器170 的发起者。在另一实施例中,不论节点的目标是否很忙,处理器160可以发布潜在 数据集到来自存储器170的发起者。为了发布潜在数据集到来自存储器170的发起 者,扩展器110可以代表节点的目标接收所述数据读取请求。

一般参照附图2,提供的流程图阐述了用于数据预取的指令序列程序200。程 序200可以在如图1中所述的系统中实现(例如含有主机202的系统(如节点的发 起者)、扩展器204、和驱动器206(如节点的目标))。程序200可能包含步骤210 阐述了位于驱动器206的一组LBA内的数据的数据读取请求(例如图2中所示的 LBAs 1、2、和3)。扩展器204的处理器(如处理器160)可以确定位于主机202 和驱动器206之间的节点是数据预取的候选者。而且,处理器(如处理器160)可 以在接收步骤210的数据读取请求之前确定位于主机202和驱动器206之间的节点 是数据预取的候选者。在另一示例中,处理器(如处理器160)可以在接收步骤210 的数据读取请求之后确定位于主机202和驱动器206之间的节点是数据预取的候选 者。

如图2中所述,扩展器204(例如,通过处理器160)基于所述源数据集识别 潜在数据集(例如,LBAs 4和5内的数据是基于LBAs 1、2和3内的数据识别的)。 因此,如步骤220所示,扩展器204对所述源数据集和所述潜在数据集(例如,在 LBAs 1、2、3、4和5内的数据)均发出单一的数据读取请求到所述驱动器206(例 如,节点的目标)。响应所述数据读取请求,驱动器可以读取存储在LBAs 1至5内 的数据。例如,如步骤220所示,驱动器206可以为LBA 1执行查找指令和顺序读 取直到LBA 5。用于读取所述源数据集和所述潜在数据集的其它方法均通过本公开 而想到。

在另一实施例中,扩展器204可以发出所述源数据集和所述潜在数据集(未示 出)的独立数据读取请求至所述驱动器206。在这特定的实施例中,在所述驱动器 206活动减少时(例如,当驱动器206闲置时)扩展器204可以发出数据读取请求 至所述驱动器206。

程序200可以进一步包括步骤230,其阐述了驱动器206返回LBAs 1至5内 的数据至扩展器204。扩展器204可以在接收来自驱动器206的数据之后存储所述 潜在数据集于所述预取缓存内。例如,处理器160可以存储来自驱动器206的LBAs 4和5的数据于存储器170内。

程序200可以进一步包括步骤240,其阐述了扩展器204返回所述源数据读取 请求的源数据集至所述主机(例如,节点的发起者)。例如,处理器160可以返回 来自LBAs 1-3的被请求的数据至发行主机。主机202可以使用该被请求的数据。

程序200可以进一步包括步骤250,其阐述了主机202请求一个或多个来自所 述驱动器206的可能被访的数据块。例如,如图2中所示,主机202可以对存储于 所述驱动器206的LBA 4内的数据发出数据读取请求至扩展器204。在确定存储于 存储器170内的数据有效之后(例如,存储于存储器170内的数据与驱动器206内 的相应的数据相同),扩展器204可以代表驱动器206接收该数据读取请求。

程序200可以进一步包括步骤260,其阐述了扩展器204从存储器170返回所 述的一个或多个可能被访的数据块至主机202。在识别存储于存储器170内的所述 的一个或多个可能被访的数据块有效之后,扩展器204可以从存储器170返回一个 或多个可能被访的数据块至主机202。在为一个或多个所述可能被访的数据块接收 所述数据读取请求之后,扩展器204可以识别存储于存储器170内的数据是有效的。 在另一示例中,扩展器204可以通过在存储所述可能被访的数据块于存储器170之 后监控写入驱动器206的数据来验证存储于存储器170内的数据是有效的。主机202 可以在接收来自扩展器204的一个或多个可能被访的数据块之后使用所述一个或多 个可能被访的数据块。

一般参照图3,示出了一种促进存储系统中数据读取的方法。所述方法300可 以包括步骤305,其阐述了收集与发起者(例如主机202)和目标(例如驱动器206) 之间的连接相关的数据访问信息。例如,扩展器110的处理器160可以收集与网络 100的特定节点相关的数据访问信息。方法300可以进一步包括步骤310,其阐述 了确定所述发起者(例如主机202)和目标(例如驱动器206)之间的连接是否超 出一使用率阈值。例如,处理器160可以利用与特定节点相关的信息来确定数据预 取操作是否适用于网络100的特定节点。

方法300可以进一步包括步骤315,其阐述了为所述目标的至少一个第一数据 块接收来自所述发起者的第一数据请求。例如,处理器160可以为节点接收数据读 取请求(例如,通过所述节点的发起者发出的数据读取请求(如主机202)和被指 向所述节点的目标的数据读取请求(如驱动器206))。所述数据读取请求可以是为 一源数据集。方法300可以进一步包括步骤320,其阐述了在确定所述发起者和所 述目标之间的连接超出使用率阈值之后,基于所述第一数据请求为来自所述发起者 的未来数据请求内的内含物(inclusion)识别所述目标的至少一个第二可能被访的 数据块。例如,处理器160可以在确定数据预取操作是否适用于网络100的特定节 点之后为数据预取操作识别数据块。

方法300可以进一步包括步骤325,其阐述了为所述的至少一个第二可能被访 的数据块发出第二数据请求至所述目标。例如,在为所述潜在数据集接收来自节点 的发起者的数据读取请求之前,处理器160可以对所述潜在数据集发出数据读取请 求至所述节点的所述目标。方法300可以进一步包括步骤330,其阐述了接收来自 所述目标的所述至少一个第二可能被访的数据块。例如,处理器160可以接收来自 所述节点的目标的潜在数据集。

方法300可以进一步包括步骤335,其阐述了在所述SAS扩展器内存储来自所 述目标的至少一个第二可能被访的数据块。例如,在接收来自所述节点的目标的潜 在数据集之后,处理器160可以存储所述潜在数据集于扩展器110的存储器170内。 方法300可以进一步包括步骤340,其阐述了为来自所述目标的至少一个第二可能 被访的数据块中的至少一个接收来自所述发起者的第三数据请求。例如,处理器160 可以为来自所述节点的发起者的潜在数据集接收数据读取请求。

方法300可以进一步包括步骤345,其阐述了确定存储于SAS扩展器内的至少 一个第二可能被访的数据块中的至少一个是否有效。例如,处理器160可以监控与 所述节点的目标的数据通信以确定存储于所述节点的目标内的潜在数据集的LBAs 内的数据是否与存储于存储器170内的潜在数据集相同。方法300可以进一步包括 步骤350,其阐述了在确定至少一个第二可能被访的数据块中的至少一个有效之后 发送至少一个第二可能被访的数据块中的至少一个至所述发起者。例如,在确定存 储于存储器170内的潜在数据集有效之后,处理器160可以发布所述潜在数据集至 来自扩展器110的存储器170的发起者。

方法300可以进一步包括步骤355,其阐述了在确定所述存储于SAS扩展器内 的至少一个第二可能被访的数据块无效之后更新存储于SAS扩展器内的至少一个 第二可能被访的数据块。例如,处理器160可以在确定存储于存储器170内的潜在 数据集无效之后,更新存储于存储器170内的潜在数据集。

在本公开中,公开的所述方法可以由设备可读取的指令集或软件或固件实现。 这样的软件可以包括计算机程序产品,其利用含有用于编程计算机处理器的储存的 计算机代码的计算机可读存储介质以实现本公开的功能和本发明的过程。所述计算 机可读介质可以包括,但不限于任何类型的传统式软盘、光盘、CD-ROM、磁盘、 硬盘驱动器、磁光盘、ROM、RAM、EPROM、EEPROM、磁卡或光卡,或任何其 它适合的用于存储电子指令的介质。而且,据了解本公开的方法中的具体的顺序或 步骤的层级是示范方法的示例。基于设计偏好,据了解本方法中的具体的顺序或步 骤的层级能够在保留于本公开发明主旨的同时进行重新排列。所附方法权利要求呈 现出在一示例顺序中多个步骤要素,并非意味着受到本发明的具体顺序或步骤层级 的限制。

可以认为本公开和它伴随的众多优势将通过上述说明来理解,显然,在不偏离 本发明的主旨或不牺牲所有实质性优势的情况下可以进行形式上、结构和部件安排 的各种变型。所述的形式仅仅是解释性的,且以下所附权利要求的目的是包含并包 括这些变型。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号