具有页位图的高效事务表的制作方法

文档序号:17089159发布日期:2019-03-13 23:14阅读:238来源:国知局
具有页位图的高效事务表的制作方法

本申请要求于2017年9月6日递交的美国临时专利申请no.62/554,896和2017年11月22日递交的美国专利申请no.15/821,704的优先权,其通过引用合并于此以用于所有目的。

本发明构思总体上涉及存储器,更具体地,涉及使用诸如去重(dedupable)存储器之类的存储器来提高读访问时间。



背景技术:

重复数据删除(deduplicated)(或去重)存储器提供了一种更高效的存储数据的机制。在传统存储器解决方案中,每个数据对象被写入到其自己在存储器中的位置。相同的数据对象可能存储在存储器中任何数量的位置中,每个位置作为单独的副本:存储器系统无法识别或防止这种重复的数据存储。对于大的数据对象,这种重复的数据存储会很浪费。重复数据删除存储器(其仅存储任何数据对象的单个副本)尝试解决此问题。

但去重存储器的延迟高且性能低。在最坏的情况下,针对单个数据执行写请求可能需要实际写入数据三次并读取数据五次。在需要存储器响应的系统中,这种高延迟可能会是一种妨碍。

仍然需要一种改善存储器的响应的方法,无论是否进行重复数据删除。



技术实现要素:

根据本发明构思的示例性实施例,一种在具有存储器的存储器子系统中使用的事务管理器,包括:写数据缓冲器,用于存储要写入存储器的未完成的写事务;读数据多路复用器,用于在从所述写数据缓冲器和所述存储器读取的数据之间进行选择;命令队列,用于存储针对所述存储器的写请求和内部读请求;优先队列,用于存储针对所述存储器的外部读请求;以及事务表,用于跟踪未完成的写请求,每个写请求与从包括无效、已修改和已转发的集合中提取的状态相关联。

根据本发明构思的另一示例性实施例,一种方法包括:在事务管理器处接收来自主机计算机的针对存储器的请求;确定使用所述事务管理器中的写数据缓冲器是否能够满足所述请求;以及使用所述写数据缓冲器和所述存储器中的至少一个来满足所述请求。

附图说明

图1示出了根据本发明构思的实施例的操作以使用去重存储器的机器。

图2示出了图1的机器的附加的细节。

图3示出了图1的存储器的前端。

图4示出了图1的存储器的后端。

图5示出了图4的事务管理器的细节。

图6示出了图5的事务表的细节。

图7示出了图5的事务管理器处理来自图1的存储器的图5的前端的写请求。

图8示出了图5的事务管理器处理来自图1的存储器的图5的前端的读请求。

图9示出了根据本发明构思的实施例的用于由图5的事务管理器处理来自图1的存储器的图5的前端的读请求的示例过程的流程图。

图10a至图10d示出了根据本发明构思的实施例的用于由图5的事务管理器处理来自图1的存储器的图5的前端的写请求的示例过程的流程图。

图11示出了根据本发明构思的实施例的图5的事务管理器处理由图1的存储器的图5的后端完成的写事务的示例过程的流程图。

具体实施方式

下面具体参照本发明构思的实施例,实施例的示例在附图中示出。在下面的详细描述中,阐述了许多具体细节以实现对本发明构思的透彻理解。然而,应理解的是,本领域普通技术人员可以在没有这些具体细节的情况下实践本发明构思。在其他实例中,没有详细描述公知的方法、过程、组件、电路和网络,以避免不必要地使实施例的细节模糊不清。

将理解的是,尽管术语第一、第二等可以在本文用于描述各种元件,但是这些元件不应该被这些术语限制。这些术语仅用来将一个元件与另一元件彼此区分。例如,在不背离本发明构思的范围的情况下,第一模块可以被称为第二模块,并且类似地,第二模块可以被称为第一模块。

这里在本发明构思的描述中所使用的术语仅用于描述特定实施例的目的,而不是为了限制本发明构思。除非上下文另有明确说明,否则如本发明构思的描述和所附权利要求中使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式。还应理解,如本文所使用的术语“和/或”是指并且包括一个或多个相关联的所列项目的任何一个和所有可能的组合。还应该理解的是当在本说明书中使用时,术语“包括”指定了存在所声明的特征、整数、步骤、操作、元件和/或组件,但是不排除存在或另外还有一个或多个其他特征、整数、步骤、操作、元件、组件、和/或其组合。附图中组件和特征不必按比例绘制。

重复数据删除存储器存储系统的挑战之一是读、写事务放大。重复数据删除存储器的读放大可能导致主机的每次读请求对设备进行两次读取。写放大可能更糟:在最坏的情况下,来自主机的一次写事务可以被放大为三次写事务以及五次读事务。

为了克服这个挑战并实现高吞吐量和低延迟,高效的事务管理器可以支持多个未完成的事务,并为写事务提供早期确认,同时支持多个读事务和读优先级以减少读延迟。

为了支持读优先级、早期写确认以及多个未完成的写和读事务,事务管理器可以跟踪大量未完成的写事务地址,并且还可以保持命令以用于写事务后读取以及用于发布的写事务。

事务管理器包括:

用于部分写入的写合并缓冲器。

读数据路径的读数据多路复用器。

写数据缓冲器,用于缓冲多个未完成的写事务。

事务表,用于跟踪具有无效(或空闲)/已修改/已转发状态的多个未完成的写事务/线程。

命令解析器,包含用于写命令和内部读命令的命令队列(cq)、以及用于主机读事务的优先队列(pq)。

事务管理器是中央控制器机制,其通过以下方式管理多个未完成的写和读事务/线程:

支持可配置的写早期确认机制。

通过存储写事务数据并跟踪无效/已修改/已转发的写事务阶段,来将发布的存储器写入保持为完整且有序。

通过维护raw(写后读)顺序来支持具有低延迟优先级的读事务。

写数据缓冲器(wdb)包含已向主机确认的未完成的写入。因此,需要正确且高效地管理wdb中的写数据条目,以支持多个事务/线程以实现高吞吐量和低延迟。

事务管理器以页粒度跟踪状态,以便在未完成的页中进行快速搜索和插入。此方案优化dma或突发写事务,而不是随机写事务。

页状态包含几种可能的状态:

无效:空条目或数据无效。

已修改:包含尚未写入到“后端”存储器存储的有效数据的条目。在本申请的上下文中,术语“后端”和“前端”(以下使用)并不意味着存储器的组件之间存在任何物理分离,而是识别主机处理器和事务管理器之间的存储器子系统的部分(“前端”)、以及位于事务管理器的与主机处理器相对的一侧上的存储器子系统的部分(“后端”)。就事务管理器而言,系统的其他组件(包括存储器子系统的其他部分)的操作可能被视为黑盒子,其物理布局和内部操作可能不为事务管理器所知。

已转发:包含已被发送到后端存储器存储但尚未从后端确认的有效数据在内的条目。

可以在事务表st[1:0]字段中跟踪页状态。

事务管理器包含事务表,该事务表中包含用于快速搜索的页位图和未完成页。事务表可以跟踪n×m个高速缓存行事务(n页且每页m个条目)。

字段:

整页(fp):

0:页没有被条目完全填满;1:页被条目完全填满。

状态(st[1:0]):

2′b00:无效。

2′b01:已修改。

2′b10:已转发。

2′b11:失败。

注意,同一页中的所有条目共享相同的页状态。因此,同一页中的所有条目将同时被转发到后端。

对于失败的事务,将在事务管理器状态寄存器中跟踪失败的信息。

事务id(tid):当被发送到后端时分配给数据的事务id。

注释:对于部分字段页,tid是第一个条目的tid。可以将增量tid分配给同一页中的其余条目。

页头逻辑地址(la):页中第一个条目的逻辑地址。其余条目的地址可以基于位图从该地址导出(任何一个条目的逻辑地址可以被计算为“页头逻辑地址+由位图指示的页的偏移”)。

条目位图:当前页中的有效条目位图。

如果事务是将数据从wdb发送到后端存储器存储,则事务管理器将相关页条目的事务表的st状态更新为“已转发”。当完成了向后端发送数据时,事务管理器将相关页条目状态更新为“无效”。

如果事务是读请求,则事务管理器可以在事务表中搜索高速缓存行或dma页。如果在事务表中找到高速缓存行或dma,并且事务表的st字段显示为已修改或已转发状态,则事务管理器可以读取写数据缓冲器并将数据返回给前端。否则,事务管理器可以向优先队列发送读请求。

如果由事务管理器生成的事务是刷新wdb,则事务管理器可以停止接受任何新的写事务,并等待来自wdb的确认以清空关联的事务表条目。

如果事务是写入数据并且事务表中针对该数据的st条目是已修改,则事务管理器可以向wdb发送写数据以进行合并。

如果事务是写入数据并且事务表中针对该数据的st条目不是已修改,或者没有st条目(则),则:

对于完全写入,事务管理器可以创建新的事务表条目,将写数据存储到wdb,并向命令队列发送写命令。

对于部分写入,如果事务表的st条目是已转发,则事务管理器可以向wdb发送读请求,将部分数据与读数据合并,针对事务创建新的事务表条目,将数据存储在wdb中,并将写命令放入命令队列中。如果事务表的st条目不是已转发,则事务管理器可以向命令队列发送读命令以从存储器存储中读取其余数据,将该数据与部分数据合并,针对事务在事务表中创建新条目,将数据存储在wdb中,并向命令队列发送写命令。

图1示出了根据本发明构思的实施例的操作以将存储器与事务管理器一起使用的机器。在图1中,示出了机器105。机器105可以是任何期望的机器,包括但不限于台式或膝上型计算机、服务器(独立服务器或机架式服务器)或可以受益于本发明构思的实施例的任何其他设备。机器105还可以包括专用便携式计算设备、平板计算机、智能电话和其他计算设备。机器105可以运行任何期望的应用:数据库应用是一个很好的示例,但本发明构思的实施例可以扩展到任何期望的应用。

无论其具体形式如何,机器105可以包括处理器110、存储器115和存储设备120。处理器110可以是任何种类的处理器:例如,intelxeon、celeron、itanium或atom处理器、amdopteron处理器、arm处理器等。虽然图1示出了单个处理器,但是机器105可以包括任何数量的处理器,每个处理器可以是单核或多核处理器。存储器115可以是任何种类的存储器,诸如闪速存储器、动态随机存取存储器(dram)、静态随机存取存储器(sram)、持久随机存取存储器、铁电随机存取存储器(fram)或非易失性随机存取存储器(nvram)(例如诸如磁阻随机存取存储器(mram)等)。存储器115也可以是不同存储器类型的任何期望的组合。存储器115可以由存储器控制器125控制,也可以是机器105的一部分。

存储设备120可以是任何种类的存储设备。存储设备120可以由可以驻留在存储器115内的设备驱动器130控制。

图2示出了图1的机器105的附加的细节。参考图2,典型地,机器105包括一个或多个处理器110,处理器110可以包括存储器控制器125和时钟205,其可以用于协调机器105的组件的操作。处理器110还可以耦接到存储器115,存储器115可以包括例如随机存取存储豁(ram)、只读存储器(rom)或其他状态保存介质。处理器110还可以耦接到存储设备120和网络连接器210,网络连接器210可以是例如以太网连接器或无线连接器。处理器110还可以连接到总线215,可以使用输入/输出引擎225来管理的用户接口220和输入/输出接口端口以及其他组件可以附接到总线215。

在图1至图2中,存储器115可以是常规的存储器(其目的不在于消除数据复制)或去重存储器。虽然去重存储器的实现可以与较常规的存储器形式(诸如动态随机存取存储器(dram))不同,但这些差异可以与去重存储器的实现或事务管理器的实现无关。此外,机器105的其他硬件组件(诸如处理器110)是否知道存储器115的特定实现可以取决于那些组件是否需要知道存储器115的物理结构。关于存储器115的特定实现的这种“知识缺乏”还可以扩展到软件元件,诸如在机器115上运行的应用程序。应用程序可以在不知道存储器115是否包括dram、去重存储器或任何其他形式的存储器的情况下向存储器115发送读请求和写请求。在本申请的其余部分中,将参考去重存储器来描述存储器115,但是本发明构思的实施例无限制地扩展到其他形式的存储器,并且事务管理器可以以类似的方式改善其他形式的存储器的性能。

图3示出了图1的存储器子系统115的前端。在图3中,存储器115可以包括主机接口305。主机接口可以使用任何期望的接口从各种源接收请求(读或写)。这些源可以包括例如直接存储器访问线310-1至310-3、快速外围组件互连(pcie)310-4、或常规的存储器总线连接(未示出)。源310-1至310-4可以表示应用、操作系统的源或任何其他数据请求源。然后,主机接口305可以与前端调度器315通信,前端调度器315可以将数据请求分发到包括去重存储器的任何分区320-1至320-3,然后可以处理和响应数据请求。

虽然图3示出了四个源310-1至310-4以及三个分区320-1至320-3,但这些数字仅仅是示例。本发明构思的实施例可以支持任何数量的源和任何数量的分区而没有限制。此外,源可以是任何期望的形式:源不限于dma和pcie通信。

图4示出了图1的存储器115的后端。在图4中,示出了分区320-1,但是相同的架构可以用在图3的分区320-2和320-3中。分区320-1可以包括事务管理器405、去重引擎管理器410和存储器管理器415。与省略事务管理器405的去重存储器架构相比,事务管理器405负责管理数据请求,并且可以改善读请求的延迟。以下参考图5进一步讨论事务管理器405。

去重引擎管理器410负责处理数据的特定读和写以及消除数据重复。为此,去重引擎管理器410可以包括各种去重引擎420-1至420-3。每个去重引擎420-1至420-3可以确定之前是否已经存储了任何接收的用户数据,如果是,则可以防止在存储器115中第二次存储相同的数据。

去重引擎管理器410(即去重引擎420-1到420-3)可以与存储器管理器415通信。存储器管理器415负责将特定数据请求引导到适当的存储器硬件。例如,图4示出了与双列直插式存储器模块(dimm)430-1和430-2通信的两个存储器控制器425-1和425-2。本发明构思的实施例可以支持用于存储数据的任何物理形式。例如,dimm430-1和430-2可以用双列直插式封装(dip)、单列直插式封装(sip)、单列直插式存储器模块(simm)或者甚至只是存储器芯片本身来代替。在本申请的其余部分中,术语“存储器模块”旨在包含用于存储数据的形式上的所有这类变化。存储器管理器415可以将从去重引擎管理器410接收的任何数据请求引导到存储器控制器425-1或425-2中的任何一个,这取决于实际数据存储(或将要存储)在何处;存储器控制器425-1和425-2进而对来自于dimm430-1和430-2的数据的实际读和写进行管理。

虽然图4示出了三个去重引擎420-1至420-3以及两个存储器控制器425-1和425-2(其与两个存储器模块430-1和430-2通信),但本发明构思的实施例可以包括任何数量的去重引擎和任何数量的存储器控制器以及存储器模块(尽管在存储器控制器和存储器模块之间一般存在一对一的关系)。此外,虽然图4将存储器模块430-1和430-2示为dimm,但本发明构思的实施例可以支持任何期望的存储器模块格式,并且还可以支持混合格式:例如,一些存储豁模块是dimm,而其他存储器模块是小型双列直插式存储器模块(sodimm)。图3的每个分区320-1至320-3还可以包括不同数量和类型的去重引擎和存储器模块。

如上所述,去重存储器系统可以在没有事务管理器405的情况下操作。然而,由于放大因素,这种去重存储器系统可能具有高延迟。即使是可能不会经历与去重存储器相同程度的放大的常规存储器子系统,也可能经历足够长的读或写延迟。通过在去重(或其他)存储器系统架构中包括事务管理器405,可以通过合并部分写数据以及通过向主机的早期写确认来减小放大因素,从而改善存储器系统的性能。

图5示出了图4的事务管理器405的细节。在图5中,事务管理器405被示出为与前端505和后端510连接。前端505旨在表示图3的前端调度器315、以及在事务管理器405“之前”涉及的所有其他组件。类似地,后端510旨在表示图4的去重引擎管理器410,以及在事务管理器405“之后”涉及的所有其他组件。由于存储器系统架构可以在没有事务管理器405的情况下操作,因此从事务管理器405的角度来看,前端505和后端510可以被认为是黑盒子,其内部操作是未知的。前端505、事务管理器405和后端510可以使用标准协议进行通信。

事务管理器405可以包括读数据多路复用器(mux)515、写数据合并缓冲器520、写数据缓冲器525、事务表530和命令解析器535。读数据mux515可以从写数据缓冲器525(如果所请求的数据被缓冲用于延迟写入)或后端510(如果数据不在写数据缓冲器525中)接收读数据。如果需要从后端510检索数据,则事务管理器405可以将读请求放在命令解析器535的优先队列540中,后端510进而可以对其进行定位并返回所请求的数据。

写数据缓冲器525可以存储被缓冲以写入后端510的数据。当事务管理器405从前端505接收写请求时,事务管理器405可以将写数据存储在写数据缓冲器525中,并且可以将写请求存储在命令解析器535的命令队列545中。然后,事务管理器405可以将早期确认发送回前端505(早期的含义在于数据尚未被写入其在存储豁中的最终存储位置,但是被缓冲以用于稍后的写入)。可以响应于读请求,将先前已在写数据缓冲器525中缓冲但尚未写入后端510并被后端510确认的数据读到读数据多路复用器515中。写数据缓冲器525的大小可以变化,并且可以取决于后端510中的存储器模块的速度:存储器模块越慢,可能需要越大的写数据缓冲器525。理想地,写数据缓冲器525至少应该足够大以处理到存储器模块的dma突发。如果写数据缓冲器525被填满,则事务管理器405可以生成刷新命令以将数据写入后端510。

可能发生写请求不请求将数据的整页(或高速缓存行)写入到存储器系统的情况。但是到存储器模块的写入应该为完整页。因此,如果前端505仅发送部分写入,则事务管理器405可以将该部分写入与完成写入所需的其余数据“合并”。例如,如果写请求是部分高速缓存行写入,则事务管理器405可以将该部分写入与高速缓存行中的其余数据合并,其可以从存储器读取。写合并缓冲器520用于处理该过程。写合并缓冲器520请求完成页或高速缓存行所需的剩余数据(其可能在写数据缓冲器525中找到或可能必须从后端510读取),将部分写入与该数据合并,将完成的页或高速缓存行存储在写数据缓冲器525中,并且(可能地)将写请求存储在命令解析器535的命令队列545中。在这种情况下,“合并”意味着按照每个写请求来改变读数据的一部分,而保持读数据的其他部分不变。

写合并缓冲器520是从后端510接收剩余数据还是从写数据缓冲器525读取剩余数据取决于是否可以在写数据缓冲器525中找到剩余数据。如果可以在写数据缓冲器525中找到剩余数据,则不需要从后端510请求数据(这将是较慢的操作并且可能返回过时的数据),

但是如果写数据缓冲器525已经存储了数据的整个页,则存在如何处理冲突条目的问题。该问题的解决方案是确定写数据缓冲器525中的现有页是否已经被发送到后端510。如果写数据缓冲器525中的现有页已经被发送到后端510,则将新页作为分开的数据页存储在写数据缓冲器525中。该新数据页最终将被写入到后端510以代替已经写入的页。

另一方面,如果写数据缓冲器525中的现有页仍在等待被发送到后端510,则可以在写数据缓冲器525中更新现有页。在这种情况下,页仅被发送到后端510一次,从而避免了到后端510的重复写入。

为了确定写数据缓冲器525中的页是否已被发送到后端510,可以使用事务表530。事务表530可以将关于数据状态的信息存储在写数据缓冲器525中。写数据缓冲器525中的每个页可以具有以下四种状态之一:无效,表示页不存储等待写入后端510的任何数据;已修改,表示页包含等待写入后端510但尚未发送到后端510的数据;已转发,表示页包含已经发送到后端510的数据;以及失败,表示错误情况。事务表530中的条目的数量可以对应于存储在写数据缓冲器525中的页的数量。

注意,写数据缓冲器525中的单个页可以存储用于多个写请求的数据。例如,假设高速缓存行存储64个字节,并且存储器中的每个页存储4096个字节。这意味着每页有64个高速缓存行。结果,可能发生以下情况:写数据缓冲器525中的一个或多个页包括一些具有有效数据的高速缓存行和一些空的高速缓存行。以下参考图6进一步讨论事务表530中的条目。

当写合并缓冲器520准备在写数据缓冲器525中存储页或高速缓存行时,写数据缓冲器525中的现有数据的状态(记录在事务表530中)可以指示现有页或高速缓存行是否可以被覆写或需要写入新的页或缓存行。如果现有页(或包括讨论中的高速缓存行在内的页)具有已修改状态,则现有页或高速缓存行尚未被发送到后端510,并且现有页或高速缓存行可以被修改为包括来自于部分写请求的数据。另一方面,如果现有页(或包括讨论中的高速缓存行在内的页)具有已转发状态,则现有页已经被发送到后端510,并且新页被存储在写数据缓冲器525中。(如果在事务表530中没有找到包含与页逻辑地址匹配的高速缓存行在内的页,则可以将新页或高速缓存行添加到写数据缓冲器525,并且可以在事务表530中创建对应的条目。)

命令解析器535可以包括两个队列:命令队列545和优先队列540。与可以被认为是高优先级队列的优先队列540相比,命令队列545可以被认为是标准优先级队列。命令队列545可以用于内部生成的读请求(诸如当事务管理器405出于内部原因需要来自后端510的数据时)和写请求,而优先队列540可以用于外部生成的读请求(诸如源自前端505的读请求)。以这种方式,外部生成的读请求可以实现低延迟(外部生成的写请求由于写请求的早期确认而实现低延迟)。虽然图5仅示出了一个命令队列545和一个优先队列540,但本发明构思的实施例可以支持任何数量的命令队列545和优先队列540,并且不需要命令队列的数量和优先队列的数量相等。

事务管理器405可以在写数据缓冲器550中实现对数据的快速搜索:搜索可以在一个周期内完成。事务管理器405还可以实现将新页快速插入到写数据缓冲器525中。

图6示出了图5的事务表530的细节。在图6中,事务表530可以包括条目,诸如条目605。事务表530可以包括图5的写数据缓冲器525中的每个页的一个条目。每个条目可以包括诸如以下信息:完整页位(fullpagebit),指示页是包含数据的完整页还是仅包含部分页;状态位,指示讨论中的页是无效、已修改、已转发还是失败;事务id,其可以分配给由图5的事务管理器405发布到后端510的事务;页逻辑地址,其可以是正被写入图5的后端510的页的基地址;以及条目位图,其可以指示页中的哪些高速缓存行包含有效数据。例如,条目位图可以包括“0”以指示页中的高速缓存行是空的,而条目位图可以包括“1”以指示页中的高速缓存行包含有效数据。因此,如果条目位图是“111...1”,则条目位图表示页是满的(在这种情况下应该设置完整页位),并且所有高速缓存行包含有效数据。另一方面,如果条目位图中的任意位为“0”,则页中存在至少有一个不包含有效数据的条目,并且不应设置完整页位。换句话说,可以将完整页位计算为条目位图中的位的逻辑“与”。结果,可能没必要存储完整页位,但它可以节省时间(避免在每次查看页是否填满时计算条目位图中位的逻辑“与”的需要)。

图7示出了图5的事务管理器405处理来自图1的存储器115的图5的前端505的写请求。在图7中,前端505向事务管理豁405发送写请求705。事务管理器405可以用早期确认710进行响应。在某个稍后的时间,事务管理器405可以向后端510提供写请求715,以完成写请求,后端510可以通过确认720确认该写请求完成。

图7中未示出的是将读请求从事务管理器405发送到后端510。例如,如果写请求705是部分高速缓存行写请求,并且高速缓存行条目的其余部分未存储在图5的写数据缓冲器525中,则事务管理器405可能需要向后端510发送读请求以检索高速缓存行并合并该部分写入。

图8示出了图5的事务管理器405处理来自图1的存储器115的图5的前端505的读请求。在图8中,前端505可以向事务管理器405发送读请求805。如果所请求的数据已经在事务管理器405内——例如,如果所请求的数据当前存储在图5的写数据缓冲器525中,则事务管理器405可立即用数据810进行响应。否则,事务管理器405可以(经由图5的优先队列540)向后端510发送读请求815以读取所请求的数据,该数据可以作为数据820被返回(然后作为数据810从事务管理器405转发到前端505)。

图9示出了根据本发明构思的实施例的用于由图5的事务管理器405处理来自图3的存储器115的图5的前端505的读请求的示例过程的流程图。在图9中,在块905处,图5的事务管理器405可以从图5的前端505接收图8的读请求805。在块910处,图5的事务管理器405查看所请求的数据是否在图5的写数据缓冲器525中。如果所请求的数据在图5的写数据缓冲器525中,则在块915处,将所请求的数据从图5的写数据缓冲器525读取到图5的读数据多路复用器515中。否则,在块920处,事务管理器405将读请求放在图5的优先队列540中以去往图5的后端510,并且在块925处,图5的读数据多路复用器515从图5的后端510接收所请求的数据。无论哪种方式,在块930处,图5的事务管理器405向图5的前端505发送所请求的数据。

图10a至图10d示出了根据本发明构思的实施例的用于由图5的事务管理器405处理来自图1的存储器115的图5的前端505的写请求的示例过程的流程图。在图10a中,在块1005处,图5的事务管理器405可以从图5的前端505接收图7的写请求705。在块1010处,图5的事务管理器405可以将早期确认发送回图5的前端505。

在块1015处,图5的事务管理器405确定在图5的写数据缓冲器525中是否存在包括要写入的逻辑地址并具有已修改状态的页。如果这样的页存在于图5的写数据缓冲器525中,则在块1020处,图5的事务管理器405可以将来自图7的写请求705的数据与图5的写数据缓冲器525中的页合并,之后可以结束处理。

假设图5的写数据缓冲器525没有存储包含处于已修改状态的图7的写请求705中的逻辑地址在内的页,则在块1025(图10b)处,图5的事务管理器405可以确定图7的写请求705是部分写请求还是完整写请求。如果图7的写请求705是完整写请求,则在块1030处,图5的事务管理器405可以将来自于图7的写请求705的数据写入图5的写数据缓冲器525中,在块1035处将条目添加到图5的具有已修改状态的事务表530,并且在块1040处将图7的写请求705添加到图5的命令队列545,之后处理可以结束。注意,在块1030至块1040中,不用担心在图5的写数据缓冲器525中创建冗余条目:要么在包括图7的写请求705的逻辑地址在内的写数据缓冲器525中不存在页,要么图5的事务表530中的对应条目示出该页具有已转发状态(在这种情况下,可以不修改现有页(在图10a的块1015中检查具有已修改状态的页))。

此时,图5的事务管理器405已经涵盖了处于已修改状态的写数据缓冲器525中的现有页包括图7的写请求705的逻辑地址,或者图7的写请求705是完整写请求的情况。剩下的唯一情况是图7的写请求705是部分写请求,并且图5的写数据缓冲器525中没有可以响应于该部分写请求而被修改的页。此时,图5的事务管理器405可以加载完整页(或高速缓存行)以将部分写请求合并到用于图5的写数据缓冲器525的完整写请求中。在块1045处(图10c),图5的事务管理器405可以查看图5的写数据缓冲器525是否包括处于已转发状态的包括图7的写请求705的逻辑地址的页。如果存在这样的页,则在块1050处,图5的事务管理器405可以从图5的写数据缓冲器525读取数据。否则,在块1055处,图5的事务管理器405可以将针对页的读请求放在图5的命令队列545中,并且在块1060处,图5的事务管理器405可以从图5的后端510接收所请求的页。

此时,无论图5的事务管理器405是否遵循块1050或块1055和1060,图5的事务管理器405都具有来自页或高速缓存行的其余数据。在块1065处(图10d),图5的写合并缓冲器520可以将部分写请求中的数据与所访问的王铮页或高速缓存行合并。在块1070处,图5的写合并缓冲器520可以将合并的页或高速缓存行写入图5的写数据缓冲器525中。在块1075处,图5的事务管理器405可以针对具有已修改状态的页,向图5的事务表530添加条目。最后,在块1080处,图5的事务管理器405可以将图7的写请求715放在图5的命令队列545中。

图11示出了根据本发明构思的实施例的用于图5的事务管理器405处理由图1的存储器115的图5的后端510完成的写事务的示例过程的流程图。在图11中,在块1105处,图5的事务管理器405可以从图5的后端510接收通知,表明图7的写请求715已经从图5的命令队列545中移除。在块1110处,图5的事务管理器405可以识别为图5的事务表530中的对应的条目:例如,使用用于图7的写请求715的事务id。在块1115处,图5的事务管理器405可以将所识别的条目的状态从已修改改变为已转发(这防止由图5的事务管理器405接收的任何将来的写请求直接修改图5的写数据缓冲器525中的那个页)。

在块1120处,图5的事务管理器405可以从图5的后端510接收表明图7的写请求715已经完成的确认。然后在块1125处,图5的事务管理器405可以将所识别的条目的状态从已转发改变为无效,这样释放了图5的写数据缓冲器525中的页以供另一数据页使用。

在图9至图11中,示出了本发明构思的一些实施例。但是本领域技术人员将认识到,通过改变块的顺序、通过省略块或者通过包括附图中未示出的链接,本发明构思的其他实施例也是可能的。流程图的所有这些变化被认为是本发明构思的实施例,无论是否明确描述。

以下讨论旨在提供其中可以实现本发明构思的某些方面的合适的一个或多个机器的简要、通用的描述。一个或多个机器可以至少部分地通过来自常规输入设备(诸如键盘,鼠标等)的输入以及通过从另一机器接收的指示、与虚拟现实(vr)环境的交互、生物测定反馈或其他输入信号来进行控制。如本文所使用的,术语“机器”旨在广义地涵盖单个机器、虚拟机或者通信耦合的机器、虚拟机或一起操作的设备的系统。示例性机器包括诸如个人计算机、工作站、服务器、便携式计算机、手持设备、电话、平板电脑等的计算设备,以及诸如私人或公共运输(例如汽车、火车、出租车等)之类的运输设备。

一个或多个机器可以包括嵌入式控制器,诸如可编程或不可编程逻辑器件或阵列、专用集成电路(asic)、嵌入式计算机、智能卡等。一个或多个机器可以利用到一个或多个远程机器的一个或多个连接,例如通过网络接口、调制解调器或其他通信耦合。机器可以通过物理和/或逻辑网络(例如内联网、互联网、局域网、广域网等)的方式进行互连。本领域技术人员将理解,网络通信可以利用各种有线和/或无线短距离或长距离载波和协议,包括射频(rf)、卫星、微波、电气和电子工程师协会(ieee)802.11、光学、红外、电缆、激光等。

本发明构思的实施例可以通过参考或结合包括功能、过程、数据结构、应用程序等的关联数据来描述,当由机器访问时,其导致机器执行任务或定义抽象数据类型或低级硬件上下文。关联数据可以被存储在例如易失性和/或非易失性存储器(例如ram、rom等)中或存储在其他存储设备及其相关联的存储介质中,包括硬盘驱动、软盘、光学存储器件、磁带、闪存、记忆棒、数字视频盘、生物存储器件等。关联数据可以以数据包、串行数据、并行数据、传播信号等的形式通过传输环境(包括物理和/或逻辑网络)传递,并且可以以压缩或加密格式使用。关联数据可以在分布式环境中使用,并且本地和/或远程地存储以用于机器访问。

本发明构思的实施例可以包括包含可由一个或多个处理器执行的指令的有形的、非瞬时机器可读介质,所述指令包括用于执行如本文所述的发明构思的要素的指令。

已经参考所示实施例描述和说明了本发明构思的原理,将认识到,所示实施例可以在布置和细节上修改,而不脱离这些原理,并且可以以任何期望的方式组合。并且尽管前述讨论集中在具体实施例上,但是设想了其他配置。具体地,尽管在本文使用了诸如“根据本发明构思的实施例”等表达,但是这些短语意指一般地参考实施例可能性,并且不旨在将本发明构思限于具体实施例配置。如本文所使用的,这些术语可以提及可组合到其他实施例中的相同或不同的实施例。

前述说明性实施例不应被解释为限制其发明构思。尽管描述了一些实施例,然而本领域技术人员应容易理解,在不实质上脱离本公开的新颖教义和优点的前提下,可以对那些实施例进行多种修改。因此,所有这种修改旨在被包括在如在权利要求中限定的本发明构思的范围内。

本发明构思的实施例可以在不受限制的情况下扩展到下面的声明:

声明1.本发明构思的实施例包括在具有存储器的存储器子系统中使用的事务管理器,包括:

写数据缓冲器,用于存储要写入存储器的未完成的写事务;

读数据多路复用器,用于在从所述写数据缓冲器和所述存储器读取的数据之间进行选择;

命令队列,用于存储针对所述存储器的写请求和内部读请求;

优先队列,用于存储针对所述存储器的外部读请求;以及

事务表,用于跟踪未完成的写请求,每个写请求与从包括无效、已修改和已转发的集合中提取的状态相关联。

声明2.本发明构思的实施例包括根据声明1的事务管理器,还包括:写合并缓冲器,用于将部分写请求与其他数据合并,所述其他数据是从包括所述存储器中的数据和所述写数据缓冲器中的数据在内的集合中提取的。

声明3.本发明构思的实施例包括根据声明1的事务管理器,其中,所述事务管理器支持在由所述存储器完成对来自主机计算机的写请求之前对所述写请求的早期确认。

声明4.本发明构思的实施例包括根据声明1的事务管理器,其中,存储器包括去重存储器。

声明5.本发明构思的实施例包括根据声明1的事务管理器,其中,所述事务表(530)包括至少一个条目,每个条目包括页状态、事务标识符(id)、页逻辑地址和条目位图。

声明6.本发明构思的实施例包括一种方法,所述方法包括:

在事务管理器处接收来自主机计算机的针对存储器的请求;

确定使用所述事务管理器中的写数据缓冲器是否能够满足所述请求;以及

使用所述写数据缓冲器和所述存储器中的至少一个来满足所述请求。

声明7.本发明构思的实施例包括根据声明6的方法,其中,所述请求包括请求数据的读请求。

声明8.本发明构思的实施例包括根据声明7的方法,其中:

确定使用所述事务存储器中的写数据缓冲器是否能够满足所述请求包括:确定在所述写数据缓冲器中是否能够找到在所述读请求中请求的数据;以及

使用所述写数据缓冲器和所述存储器中的至少一个来满足所述请求包括:如果在所述写数据缓冲器中能够找到在所述读请求中请求的数据,则:

从所述写数据缓冲器中读取在所述读请求中请求的数据;以及

向所述主机计算机发送在所述读请求中请求的数据。

声明9.本发明构思的实施例包括根据声明8的方法,其中,使用所述写数据缓冲器和所述存储器中的至少一个来满足所述请求还包括:如果在所述写数据缓冲器中不能够找到在所述读请求中请求的数据,则:

将所述读请求放在用于所述存储器的所述事务管理器中的优先队列中;

从所述存储器接收在所述读请求中请求的数据;以及

向所述主机计算机发送在所述读请求中请求的数据。

声明10.本发明构思的实施例包括根据声明6的方法,其中:

所述请求包括请求将数据写入所述存储器的写请求;以及

使用所述写数据缓冲器和所述存储器中的至少一个来满足所述请求包括:在由所述存储器完成所述写请求之前向所述主机计算机发送早期确认。

声明11.本发明构思的实施例包括根据声明10的方法,其中,使用所述写数据缓冲器和所述存储器中的至少一个来满足所述请求包括:

确定所述事务管理器中的事务表是否包括与已修改标志相关联的包括要写入到存储器的数据的地址在内的条目;以及

如果所述写数据缓冲器包括与包括与已修改标志相关联的包括要写入到存储器的数据的地址在内的条目,则将要写入的数据与所述写数据缓冲器中的页合并,所述页对应于事务管理器中与已修改标志相关联的条目。

声明12.本发明构思的实施例包括根据声明11的方法,其中,使用所述写数据缓冲器和所述存储器中的至少一个来满足所述请求还包括:如果所述事务表不包括与已修改标志相关联的包括要写入到所述存储器的数据的地址在内的条目,则:

确定要写入到所述存储器的数据是否包括完整数据写入;以及

如果要写入到所述存储器的数据包括完整数据写入,则:

将要写入的数据写入所述写数据缓冲器;

将新条目添加到与已修改标志相关联的事务表;以及

将针对所述存储器的写请求放在所述事务管理器中的命令队列中。

声明13.本发明构思的实施例包括根据声明12的方法,其中,使用所述写数据缓冲器和所述存储器中的至少一个来满足所述请求还包括:如果所述事务表不包括与已修改标志相关联的包括要写入到所述存储豁的数据的地址在内的条目,并且所述要写入到存储器的数据不包括完整数据写入,则:

从所述写数据缓冲器和所述存储器中的至少一个读取完整高速缓存行;

将要写入的数据与完整高速缓存行合并;

将新条目添加到用于合并的完整高速缓存行的与已修改标志相关联的事务表中;以及

将针对所述存储器的写请求放在所述事务管理器中的命令队列中。

声明14.本发明构思的实施例包括根据声明13的方法,其中,从所述写数据缓冲器和所述存储器中的至少一个读取完整高速缓存行包括:

如果所述事务表包括与已转发标志相关联的包括要写入到所述存储器的数据的地址在内的条目,则从所述写数据缓冲器读取完整高速缓存行;以及

如果所述事务表不包括与已转发标志相关联的包括要写入到所述存储器的数据的地址在内的条目,则:

将针对完整高速缓存行的读请求放在用于所述存储器的事务管理器中的命令队列中;以及

从所述存储器接收完整高速缓存行。

声明15.本发明构思的实施例包括根据声明12的方法,还包括:

从所述存储器接收表明从所述命令队列中移除写请求的通知;以及

将与事务表中针对所述写请求的条目相关联的已修改标志改变为已转发标志。

声明16.本发明构思的实施例包括根据声明15的方法,还包括:

从所述存储器接收确认;以及

将与所述事务表中针对所述写请求的条目相关联的已转发标志改变为无效标志。

声明17.本发明构思的实施例包括根据声明6的方法,其中,所述存储器包括去重存储豁。

声明18.本发明构思的实施例包括一种产品,包括非暂时性存储介质,该非暂时性存储介质上存储有指令,当被机器执行时,所述指令导致:

在事务管理器处接收来自主机计算机的针对存储器的请求;

确定使用所述事务管理器中的写数据缓冲器是否能够满足所述请求;以及

使用所述写数据缓冲器和所述存储器中的至少一个来满足所述请求。

声明19.本发明构思的实施例包括根据声明18的产品,其中,所述请求包括请求数据的读请求。

声明20.本发明构思的实施例包括根据声明19的产品,其中:

确定使用所述事务存储器中的所述写数据缓冲器是否能够满足所述请求包括:确定在所述写数据缓冲器中是否能够找到在所述读请求中请求的数据;以及

使用所述写数据缓冲器和所述存储器中的至少一个来满足所述请求包括:如果在所述写数据缓冲器中能够找到在所述读请求中请求的数据,则:

从所述写数据缓冲器读取在所述读请求中请求的数据;以及

向所述主机计算机发送在所述读请求中请求的数据。

声明21.本发明构思的实施例包括根据声明20的产品,其中,使用所述写数据缓冲器和所述存储器中的至少一个来满足所述请求还包括:如果在所述写数据缓冲器中不能够找到在所述读请求中请求的数据,则:

将所述读请求放在用于所述存储器的所述事务管理器中的优先队列中;

从所述存储器接收在所述读请求中请求的数据;以及

向所述主机计算机发送在所述读请求中请求的数据。

声明22.本发明构思的实施例包括根据声明18的产品,其中:

所述请求包括请求将数据写入所述存储器的写请求;以及

使用所述写数据缓冲器和所述存储豁中的至少一个来满足所述请求包括:在由所述存储器完成所述写请求之前向所述主机计算机发送早期确认。

声明23.本发明构思的实施例包括根据声明22的产品,其中,使用所述写数据缓冲器和所述存储器中的至少一个来满足所述请求包括:

确定所述事务管理器中的事务表是否包括与已修改标志相关联的包括要写入到存储器的数据的地址在内的条目;以及

如果所述写数据缓冲器包括与包括与已修改标志相关联的包括要写入到存储器的数据的地址在内的条目,则将要写入的数据与所述写数据缓冲器中的页合并,所述页对应于事务管理器中与已修改标志相关联的条目。

声明24.本发明构思的实施例包括根据声明23的产品,其中,使用所述写数据缓冲器和所述存储器中的至少一个来满足所述请求还包括:如果所述事务表不包括与已修改标志相关联的包括要写入到所述存储器的数据的地址在内的条目,则:

确定要写入到所述存储器的数据是否包括完整数据写入;以及

如果要写入到所述存储器的数据包括完整数据写入,则:

将要写入的数据写入所述写数据缓冲器;

将新条目添加到与已修改标志相关联的事务表;以及

将针对所述存储器的写请求放在所述事务管理器中的命令队列中。

声明25.本发明构思的实施例包括根据声明24的产品,其中,使用所述写数据缓冲器和所述存储器中的至少一个来满足所述请求还包括:如果所述事务表不包括与已修改标志相关联的包括要写入到所述存储器的数据的地址在内的条目,并且所述要写入到存储器的数据不包括完整数据写入,则:

从所述写数据缓冲器和所述存储器中的至少一个读取完整高速缓存行;

将要写入的数据与完整高速缓存行合并;

将新条目添加到用于合并的完整高速缓存行的与已修改标志相关联的事务表中;以及

将针对所述存储器的写请求放在所述事务管理器中的命令队列中。

声明26.本发明构思的实施例包括根据声明25的产品,其中,从所述写数据缓冲器和所述存储器中的至少一个读取完整高速缓存行包括:

如果所述事务表包括与已转发标志相关联的包括要写入到所述存储器的数据的地址在内的条目,则从所述写数据缓冲器读取完整高速缓存行;以及

如果所述事务表不包括与已转发标志相关联的包括要写入到所述存储器的数据的地址在内的条目,则:

将针对完整高速缓存行的读请求放在用于所述存储器的事务管理器中的命令队列中;以及

从所述存储器接收完整高速缓存行。

声明27.本发明构思的实施例包括根据声明18的产品,其中非暂时性存储介质上存储有进一步的指令,当被机器执行时,所述指令导致:

从所述存储器接收表明从所述命令队列中移除写请求的通知;以及

将与事务表中针对所述写请求的条目相关联的已修改标志改变为已转发标志。

声明28.本发明构思的实施例包括根据声明27的产品,其中非暂时性存储介质上存储有进一步的指令,当被机器执行时,所述指令导致:

从所述存储器接收确认;以及

将与所述事务表中针对所述写请求的条目相关联的已转发标志改变为无效标志。

声明29.本发明构思的实施例包括根据声明18的产品,其中,所述存储器包括去重存储器。

因此,鉴于本文中所描述的实施例的各种的排列,该详细描述和所附材料仅是说明性的,不应该被视为限制本发明构思的范围。因此,本发明构思要求保护的是所有这样的可以落入所附权利要求及其等同物的范围和精神内的修改。

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