CN110023915A - 数据移动引擎 - Google Patents
数据移动引擎 Download PDFInfo
- Publication number
- CN110023915A CN110023915A CN201780073300.4A CN201780073300A CN110023915A CN 110023915 A CN110023915 A CN 110023915A CN 201780073300 A CN201780073300 A CN 201780073300A CN 110023915 A CN110023915 A CN 110023915A
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- storage region
- address
- processing units
- 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
Classifications
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
数据处理系统的存储器系统包括一个或多个存储设备以及用于在多个存储区域的存储区域之间移动数据的数据重排引擎。该数据重排引擎被配置为响应于由数据处理系统的主机处理单元指定的重新排列而将存储在源存储区域中的非连续地址处的数据重新排列到目的地区域中的连续地址。重新排列的数据的描述保存在元数据存储区域中。重新排列的数据可以由一个或多个主机处理单元访问。可以通过使用布隆过滤器等来减少从目的地到源区域的数据回写。
Description
政府许可权利
本发明是根据由DOE授予的Fast Forward 2合同利用政府支持做出的。政府对本发明享有某些权利。
背景技术
在主机处理器上执行的计算机应用程序经常以非顺序方式访问存储的数据,所以所访问的数据值未被存储在连续的存储器地址处并且资源未被有效使用。例如,可以将连续的数据块加载到高速缓存行中,即使仅要访问行中的单个值也是如此。因此,当数据不连续时,比数据连续时更经常地加载和驱逐高速缓存行。可以通过“收集”或打包要从非连续存储器地址放入高速缓存的数据来减轻该问题。返回存储器的数据必须被解压缩到连续的存储器位置,或被“散布”。该方法的缺点是对于打包阶段不会减少往返存储器的传送次数。对于更宽的向量,用于填充它们的来自存储器的传送的次数可以是相当大的,利用率非常低。此外,收集和散布操作通常也限于重新排列到位向量地址或由主机处理器动态生成的地址的范围。
附图说明
附图提供了视觉表示,其将用于更全面地描述各种代表性实施例,并且本领域技术人员可以使用这些视觉表示来更好地理解所公开的代表性实施例及其固有优点。在这些附图中,相似的参考数字标识对应的元素。
图1是根据各种代表性实施例的数据处理系统的框图。
图2是根据各种代表性实施例的为重新排列的数据构造的存储区域的图解表示。
图3-图6是根据各种代表性实施例的示例性地址转换函数的图解表示。
图7是根据各种代表性实施例的数据处理方法的流程图。
具体实施方式
虽然本发明可以有许多不同的形式的实施例,但是在附图中示出并且将在本文中详细描述特定实施例,应理解本公开将被视为本发明的原理的示例并且不是旨在将本发明限制于示出和描述的具体实施例。在下面的描述中,相同的参考数字用于描述附图的若干视图中的相同、类似或对应的部分。
在本文档中,诸如第一和第二、顶部和底部等的关系术语可以仅用于将一个实体或动作与另一个实体或动作区分开,而不一定要求或暗示这样的实体或动作之间的任何实际的这种关系或顺序。术语“包括”、“包括”或其任何其他变体旨在涵盖非排他性包含,使得包括元素列表的过程、方法、物品或装置不仅包括那些元素,而是可以包括未明确列出的或者这样的过程、方法、物品或装置所固有的其他元素。在没有更多约束的情况下,前面带有“包括...一”的元素不排除在包括该元素的过程、方法、物品或装置中存在另外的相同元素。
本文档全文中对“一个实施例”、“某些实施例”、“实施例”或类似术语的引用意味着联系该实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在本说明书全文中各个地方出现这样的短语不一定都指同一实施例。另外,特定特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合而没有限制。
本文所使用的术语“或”将被解释为包含性的或表示任何一个或任何组合。因此,“A,B或C”表示“以下各项中的任何一种:A;B;C;A和B;A和C;B和C;A,B和C”。只有当元素、功能、步骤或行为的组合以某种方式固有地相互排斥时,才会出现该定义的例外。而且,除非另有说明或从上下文中清楚,否则语法连词旨在表达所连接的从句、句子、单词等的任何和所有的析取和连接组合。因此,术语“或”通常应当理解为表示“和/或”等。
本文提及的所有文档均通过引用整体并入本文。除非另有明确说明或从文本中清楚,否则对单数形式的项目的引用应当理解为包括复数形式的项目,反之亦然。
除非另有指示,否则本文中对值范围的叙述并非旨在是限制性的,而是单独地指代落入该范围内的任何和所有值,并且在这样的范围内的每个单独的值被并入说明书中,就好像它在本文中被单独叙述。当伴随数值时,单词“约”、“大约”、“基本上”等应被解释为指示本领域普通技术人员所将认识到的针对预期目的令人满意地操作的偏差。值和/或数值的范围在本文中仅作为示例提供,并且不构成对所描述的实施例的范围的限制。本文提供的任何和所有示例或示例性语言(“例如”,“诸如”等)的使用仅旨在更好地说明实施例,而不是对实施例的范围构成限制。说明书中的语言不应被解释为指示任何无人要求的元素对实施例的实践是必不可少的。
如本文所使用的,一般地使用术语“耦合”、“连接”和/或类似术语。应该理解,这些术语不是旨在作为同义词。相反,“连接”一般用于指示两个或更多个组件例如直接物理接触,包括电接触;而“耦合”一般用于表示两个或更多个组件潜在地直接物理接触,包括电接触;然而,“耦合”还一般用于表示两个或更多个组件不一定直接接触,但是仍然能够进行协作和/或交互。术语“耦合”也一般理解为表示例如在适当上下文中间接连接。
为了说明的简单和清楚,可以在附图中重复参考数字以指示对应或类似的元件。阐述了许多细节以提供对本文描述的实施例的理解。可以在没有这些细节的情况下实践实施例。在其他情况下,没有详细描述众所周知的方法、过程和组件以避免模糊所描述的实施例。该描述将不被视为限于本文描述的实施例的范围。
在以下描述中,理解的是,诸如“第一”、“第二”、“顶部”、“底部”、“上”、“下”、“上方”、“下方”等术语是方便的单词,并且将不被解释为限制性术语。而且,术语装置和设备在本文本中可以互换使用。
本公开涉及一种数据处理系统,其包括数据重组引擎(DRE),例如也称为数据移动引擎(DME)或稀疏数据减少引擎(SPDRE)。在许多应用中使用从存储器中读取数据、重新排列它、修改其中的一些以及将数据写回存储器的过程。数据重组引擎(DRE)获取数据并以程序员或设计者所指定的程序(或固定)方式或以例如根据对先前数据访问的分析而确定的概率方式对其进行重组。重新排列的数据存储在分配的存储区域中,处理单元可以从该存储区域访问该数据。重新排列的数据段映射回驻留在存储器或存储设备(诸如物理随机存取存储器(RAM),磁盘,固态驱动器(SSD),闪速存储器,相关电子RAM(CeRAM)或某一其他形式的存储)中的原始排列的数据段。
数据重新排列的一个应用是将数据从存储器或其他存储的非连续部分移动到存储器的连续部分以使得可以从存储器中更有效地获取数据。具体而言,可以利用数据重新排列将具有稀疏问题的数据打包到连续区域中,使得系统可以充分利用存储器访问突发并充分利用处理器核心内的高速缓存行。也就是说,将数据从稀疏数据转换为密集数据。
包含DRE的存储器系统不需要完全连接到片上相干网络。存储器系统可包括管芯上存储器件,诸如混合存储器立方体(HMC)、高带宽存储器(HBM)、标准双列直插式存储器模块(DIMM)和非易失性存储介质。存储器内数据重新排列使得能够以比其他方法更显著的效率提升进行高级重新排列。
在下面描述的方法中,从非连续的存储区域或空间S到连续的存储区域或空间S’的重新排列产生S’的新物理映射,并且可能产生新的虚拟映射。连续区域S’具有(为了同步)映射回原始非连续空间S的能力。
据此构造S’的非连续空间S可能位于多个页面上。通常,这些可能是非连续的物理页面。
区域S中的数据可以是非交织的或位于逻辑控制器后面,该逻辑控制器从内部交织的存储器元件中收集。
重排函数可以是预定义的或由用户提供的指令定义。示例函数包括:(1)固定偏移(例如均匀间隔的数据),(2)双射函数,其中地址转换函数将S映射到S’并将S’映射回S,(3)双重函数,其中前向地址转换函数将S映射到S’,并且反向地址转换函数将S’映射回S。
对于固定偏移函数,S中的地址索引i和S'中的对应索引i'通过下式相联系
i=i0+i'×offset, (1)
其中i0是基地址并且offset是偏移值。S'中的地址索引i'处的数据值s'通过下式与S中的数据值s相联系
s'[i']=s[io+i'×offset]。 (2)
在示例编程地址转换函数中,S中的地址索引i和S'中的对应索引i'通过下式相联系
i=i0+ind[i'], (3)
其中ind是定义的值数组或编程的偏移量。S'中的地址索引i'处的数据值s'通过下式与S中的数据值s相联系
s'[i']=s[i0+ind[i']]。 (4)
与重新排列的段自身一起保持指示重新排列的数据的状态的数据。状态数据可包括回写减少过滤器(诸如散列过滤器)的状态,其以概率方式跟踪已被改变的数据在S’内的索引。
一些实施例涉及一种数据处理系统,其包括主机处理单元和DRE处理器。主机处理单元具有将重新排列命令发送到存储器系统的DRE的能力,该存储器系统可以在或不在其高速缓存一致性网络上。DRE处理器(例如计算元件或状态机)能够识别存储器设备处的命令,并且还能够基于与基页地址的物理偏移来转换地址并且还能够用信号通知重新排列何时完成以供主机处理器获取。
图1是根据本公开的实施例的数据处理系统100的框图。系统100包括一个或多个访问存储器系统104的主机处理单元102。在所示的示例中,每个主机处理器102经由(L1)级高速缓存106和共享的(L2)级高速缓存108来访问数据。在主机处理器102上执行的应用程序可以访问存储在一个或多个存储设备110中的数据。例如,可以通过诸如存储器管理单元(MMU)112之类的存储器控制器通过互连电路或总线来移动数据。
为了提高对数据的访问的效率,数据重排引擎(DRE)114重新排列来自存储设备110中的一个存储区域(区域S)的数据并将其存储在同一存储设备或不同存储设备中的另一存储区域(区域S')中。可以例如基于由程序员提供的模式、动态确定的模式或经由统计分析或其他机器学习方法在线确定的模式来重新排列数据。
主机处理单元(HPU)102包括能够执行用户应用程序的核心处理器116。该应用程序继而利用应用程序编程接口(API)118。API可以包括在HPU 102中实现的指令集架构(ISA),如图所示,或者API可以驻留在编程语言级机制中。在另一实施例中,API包括用于构建将由核心116执行的软件和应用程序的一组子例程定义、协议和工具。具体而言,API 118使程序员能够访问硬件接口120以与DRE 114的对应接口122进行通信。因此,接口122可操作来从一个或多个主机处理单元102接收命令。
DRE 114还包括处理器124,其响应于经由接口122从至少第一主机处理单元102接收的命令。
响应于来自第一主机处理单元的“分配”命令,DRE处理器124在存储设备110中分配第一(目的地)存储区域,该第一存储区域包含用户数据区域和元数据存储区域。元数据区域可以包括在用户数据段之前的以顺序地址排列的一个或多个连续的存储器页面。存储在该区域中的数据用于控制DRE如何操纵用户数据区域中的数据。
响应于来自第一主机处理单元的“重新排列”命令,DRE处理器根据该“重新排列”命令初始化元数据存储区域;并且根据前向地址转换函数将数据从存储设备110中的第二(源)存储区域中的非连续存储器地址复制到第一(目的地)存储区域中的连续存储器地址。目的地存储区域至少可由第一主机处理器访问,从而使在第一主机处理器上执行的应用程序能够处理以连续地址排列的数据。这产生更高效的数据传送和高速缓存的更好利用。
定义数据重新排列的编程指令可以存储在DRE可访问的存储器中。或者,可以响应于命令而将这些编程指令从另一个存储器位置移动或复制到DRE可访问的存储器位置。“重新排列”命令可以包含指向前向函数和/或反向函数的指针,或者指令本身,或者对应该使用哪个函数的指示器。
DRE接口122还可以可操作来将状态信号发送到一个或多个主机处理单元102。例如,DRE处理器124可被配置为当数据的复制完成时将状态信号发送到第一主机处理器102。
当在第一存储区域(S')中使第二存储区域(S)连续时,出现一致性问题。当包含映射到区域S的地址的高速缓存行驻留在主机处理单元内时,出现一致性问题。当来自另一个处理器核心的高速缓存行包含映射到区域S的地址时,也出现一致性问题。对于这两种情况,包含驻留在共享存储空间的一致性域内的包含S的元素的高速缓存行被刷新到存储器以确保S'包含最新的值(即,顺序一致的存储器视图)。因此,事先了解S的界限是有用的。因此,响应于“重新排列”命令,在将数据从源存储区域中的非连续存储器地址复制到目的地存储区域中的连续存储器地址之前,将保存在一个或多个核心处理器的高速缓存中的第二存储区域中的数据副本写回到源存储区域。此外,响应于“重新排列”命令,可以阻止对源存储区域的写访问,直到从第一主机处理单元接收到相应的“释放”命令或者自动生成相应的“释放”命令为止。在一些实施例中,系统的组件(诸如操作系统(OS)、运行时或硬件)维护用于每个重新排列的存储区域S'的表格或计数器。这使得能够对存储器分配/解除分配引用进行计数。例如,在每个存储器分配操作时,可以使计数器递增,并且在每个存储器解除分配操作时,使计数器递减。当计数器达到零时,OS、运行时或硬件可以发起“释放”以重新启用对源存储区域S的写访问。当在用户数据中分配的所有存储器已被解除分配时,重新启用对源存储区域的写访问。因此,可以自动地执行写访问的启用/禁用或经由显式编程指令来执行写访问的启用/禁用。
当S'内的值被修改时,出现同步问题。在一些实施例中,包括“散布(scatter)”机制以将S'内的值映射回S。因此,响应于来自第一主机处理单元的“同步”命令,DRE可以根据反向地址转换函数将数据从目的地存储区域(S')中的一个或多个连续存储器地址复制回到源存储区域(S)中的非连续存储器地址。可以参考回写减少过滤器来选择要复制的目的地存储区域中的一个或多个连续存储器地址。根据写入到目的地存储区域的数据的地址来更新回写减少过滤器的状态。以这种方式,减少了写回的未改变数据值的数量。
响应于来自第一主机处理单元的“解放(free)”命令,解除分配目的地存储区域和所包含的用户数据和元数据区域。
存储器管理单元112和数据重排引擎114可以形成集成电路。或者,存储设备110和数据重排引擎114可以形成集成电路。
图2是根据本公开的实施例的由DRE分配的目的地存储区域200的图解表示。区域200包括用户数据区域202,用于存储从非连续存储器地址复制的数据。复制的数据被重新排列在用户数据区域202中的连续地址处。该数据可以由在主机处理单元上执行的用户应用程序访问。区域200还包括元数据区域204。存储在该区域中的数据是“元数据”,即,与用户数据区域202中的数据有关的数据或描述用户数据区域202中的数据的数据。存储在区域204中的数据可能无法由主机处理单元访问,但是可由DRE的处理器访问。可以根据“重新排列”命令中的信息来初始化元数据存储区域204。元数据可以例如包括要复制的数据的长度,重组类型(诸如“偏移”,“可编程”,或“双向”),以及回写减少过滤器(诸如布隆过滤器)的状态的初始值。此外,元数据可以包括指向前向地址转换函数的指针或用于前向地址转换函数的指令,或者指向反向地址转换函数的指针或用于反向地址转换函数的指令。
在所示的示例中,元数据区域204被构造为存储区域206中的数据段的长度(诸如64位长度),区域208中的重新排列类型说明符(诸如“偏移”,“可编程”,“双向”),指向区域210中的前向地址转换函数(如果有的话)的指针,指向区域212中的反向地址转换函数(如果有的话)的指针,以及区域214中的回写减少过滤器的状态。例如,回写减少过滤器可以是布隆过滤器。在不脱离本公开的情况下,可以改变目的地存储区域200中的数据的排列。然而,使用户数据区域和元数据存储在连续区域中可能是有利的。
回写减少过滤器提供了在不是每当S'中的数据被改变就与源存储区域同步并且不将整个S'段写回到源存储区域的情况下保持存储器状态的能力。在2015年12月22日提交的题为“Memory Synchronization Filter”的申请号为14/978,001的未决专利申请中描述了回写过滤器的示例,该申请通过本文的引用结合于此。过滤器的状态(诸如散列列表)保持在元数据区域中,而过滤器逻辑(诸如散列函数和比较逻辑)可以与DRE合并。散列表是位向量,它向区域S'提供对已经发生哪些写入的持久存储。可以通过包括已知方法(诸如布隆过滤器,布谷鸟散列或其他方法)在内的各种方法来构造散列表。这些方法可能具有不同的假阳性结果率,这导致少量未修改的数据被写回到存储器,但它们不给出任何假阴性,所以实现准确的同步。换句话说,过滤器允许将数据分类为“可能已修改”或“绝对未修改”。
图3是根据本公开的实施例的数据重新排列的图解表示。图3示出了偏移量为2的简单偏移函数的示例。也就是说,来自源存储区域110(S)的交替数据元素{a,c,e,g}被重新排列以成为目的地存储区域200(S')中的连续数据元素。例如,存储区域200(S')中的元数据区域204被填充以指示:数据重新排列是简单的偏移,S中的索引和S'中的索引通过“i=2i'”而相联系。
图4是根据本公开的实施例的其他数据重新排列的图解表示。图4示出了在上面的等式(3)和(4)中描述的类型的双射重新排列的示例。这里索引数组是ind=[0,3,1,6],其中i0=0。该函数是双射的,并且可以反转以将数据从S'写回到S。
图5是根据本公开的实施例的其他数据重新排列的图解表示。这里,前向地址转换函数的索引数组是ind=[0,2,5,2],其中i0=0。该函数不是双射的,因为第二和第四个元素不能都被写回到S中的相同位置。
图6是与图5所示的前向地址转换过滤器相对应的从S'回到S的反向地址转换函数的图解表示。该反向地址转换函数的索引数组是ind=[0,-,5,2],其中i0=0,因此不是所有元素都被写回。在该示例中,要么通过引用函数指针要么通过包含指令,在“重新排列”命令中定义前向和反向地址转换函数两者。
图7是根据各种代表性实施例的包含数据重排引擎(DRE)的数据处理系统的操作方法的流程图700。在图7中的开始框702之后,DRE在判定框704处等待,直到从主机处理单元接收到“分配”命令。当接收到“分配”命令时,如来自判定框704的肯定分支所示,在框706处分配目的地存储区域S'并将该区域指定用于重新排列的数据。流程继续到判定框708。当接收到“重新排列”命令时,如来自判定框708的肯定分支所示,在框710处,源存储区域S被更新(通过从包含S中的数据的修改副本的高速缓存写回数据)然后被锁定以防止写访问。可以允许读访问,在这种情况下,使对源存储区域S的访问成为“只读”。在框712处,用描述重新排列的类型、大小和方式的数据来填充目的地存储器的元数据区域,并且在框714处,用来自源存储区域的重新排列的数据来填充目的地存储器的用户数据区域。在框716处,可以访问存储区域S'中的用户数据。可选地,当S'中的用户数据准备好进行访问时,可以将信号发送到主机处理单元。
当S'在使用中时,数据值可被写入到存储器,如来自判定框718的肯定分支所示。当发生这种情况时,在框720处更新数据减少过滤器,诸如布隆过滤器,以指示数据已被改变。
当DRE接收到“同步”命令时,如来自判定框722的肯定分支所示,在框724处,将数据从S'复制回S。数据减少过滤器指示为未改变的数据不需要被写回。可能被改变的其他数据被写回。反向地址转换函数用于将S'中的地址转换为S中的相应地址。
当DRE接收到“解放”命令时,如来自判定框726的肯定分支所示,在框728处对存储区域S'进行解除分配。在一些实施例中,可以通过多个线程访问存储区域S',每个线程都具有S'上的窗口。在这些实施例中,存储区域S'在它已被所有线程解放(即,所有窗口都已被关闭)之前不被解除分配。然后区域S'不再在使用中,并且流程继续到判定框730。如果S'尚未被所有线程解放,如来自判定框726的否定分支所示,流程返回到框716并且S'仍然在使用中。
当DRE接收到“释放”命令时,如来自判定框730的肯定分支所示,在732处解锁存储区域S并再次启用写访问。在另一实施例中,存储区域S可以由硬件、操作系统或运行时环境自动解锁。例如,如上所述,可以使用引用计数来确定何时应当解锁该区域。当在用户数据中分配的所有存储器都已被取消分配时,对源存储区域的写访问被重新启用。因此,可以从主机处理器接收“释放”命令,或者由硬件自动生成“释放”命令。该方法在框734处终止。
可以以专用硬件、可重新配置的硬件、软件或其组合来实现DRE。例如,可以通过诸如Verilog或VHDL之类的硬件描述语言的指令来描述专用或可重新配置的硬件。指令可被存储以便在非暂时性计算机可读介质上分发,或者经由诸如因特网之类的网络分发,或者通过其他手段分发。
将会认识到,本文描述的一些或所有功能可以通过诸如状态机之类的没有存储的程序指令的定制逻辑来实现,在一个或多个专用集成电路(ASIC)中实现,在诸如FPGA之类的可重新配置的逻辑中实现,或者在具有存储指令的一个或多个编程处理器中实现。当然,可以使用这些方法的组合。因此,本文已经描述了用于这些功能的方法和装置。另外,期望的是:普通技术人员,虽然可能的重大努力和由例如可用时间、当前技术和经济考虑因素驱动的许多设计选择,当由本文公开的概念和原理引导时将容易能够用最少的实验生成这样的集成电路、软件指令和程序。
如本文所使用的,术语处理器、控制器等可包括处理器、控制器、微控制器单元(MCU)、微处理器、图形处理单元(GPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)设备、存储器控制器或I/O主设备。
本领域技术人员将认识到,已经根据示例性实施例描述了本公开,但是本公开不是这样受限。本公开可以使用诸如专用硬件和/或专用处理器之类的硬件组件来实现,其是所描述和要求保护的本公开的等同物。类似地,通用计算机、基于微处理器的计算机、微控制器、光学计算机、模拟计算机、专用的处理器和/或专用的硬连线逻辑可以用于构造本公开的替代等效实施例。
另外,本领域技术人员将认识到,在不脱离本公开的情况下,可以使用各种形式的存储(诸如只读存储器(ROM)、随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM);非易失性存储器(NVM);诸如硬盘驱动器、软盘驱动器、光盘驱动器之类的大容量存储器;光学存储元件、磁存储元件、磁光存储元件、闪速存储器、核心存储器和/或其他等效存储技术)来实现用于实现上述实施例的程序流程和相关数据。这样的替代存储设备应被视为等同物。
使用执行以流程图形式大体描述的编程指令的编程处理器来实现本文描述的各种实施例,这些编程指令可以存储在任何合适的电子存储介质上或通过任何合适的电子通信介质传输。然而,本领域技术人员将认识到,在不脱离本公开的情况下,可以以任何数量的变体和许多合适的编程语言来实现上述过程。例如,在不脱离本公开的情况下,经常可以改变所执行的某些操作的顺序,可以添加附加操作或者可以删除操作。在不脱离本公开的情况下,可以添加和/或增强错误捕获,并且可以在用户界面和信息呈现中做出变化。这些变化是预期的并被认为是等同的。
因此,所公开的实施例的一些特征在以下编号项中列出:
1.一种存储器系统,包括:数据重排引擎;以及提供多个存储区域的一个或多个存储设备,其中,该数据重排引擎包括:接口,该接口可操作来从一个或多个主机处理单元接收命令;处理器,该处理器响应于经由该接口从一个或多个主机处理单元中的至少第一主机处理单元接收的命令而被配置用于:响应于来自第一主机处理单元的“重新排列”命令:根据该“重新排列”命令初始化元数据存储区域,该元数据存储区域位于包含用户数据存储区域和元数据存储区域的目的地存储区域中;以及根据前向地址转换函数将数据从多个存储区域的源存储区域中的非连续存储器地址复制到目的地存储区域的用户数据存储区域中的连续存储器地址,其中用户数据存储区域至少可由第一主机处理单元访问。
2.如项目1所述的数据处理系统,其中处理器还被配置用于:响应于来自第一主机处理单元的“分配”命令:在多个存储区域的存储区域中分配包含用户数据存储区域和元数据存储区域的目的地存储区域。
3.如项目2所述的数据处理系统,其中处理器还被配置用于:响应于来自第一主机处理单元的“解放”命令,解除分配目的地存储区域。
4.如项目1-3中任一项所述的数据处理系统,其中,接口还可操作来向一个或多个主机处理单元发送状态信号,并且其中,数据重排引擎的处理器被配置为当数据的复制完成时向第一主机处理器发送状态信号。
5.如项目1-4中任一项所述的数据处理系统,其中,根据“重新排列”命令初始化元数据存储区域还包括处理器:存储要复制的数据的长度;存储重新排列类型;存储指向前向地址转换函数的指针或用于前向地址转换函数的指令;并且存储回写减少过滤器的状态的初始值。
6.如项目1-5中任一项所述的数据处理系统,其中,数据重排引擎的处理器还被配置用于:响应于来自第一主机处理单元的“同步”命令,根据反向地址转换函数将数据从用户数据存储区域中的一个或多个连续存储器地址复制到源存储区域中的非连续存储器地址,并且其中,根据“重新排列”命令初始化元数据存储区域包括存储指向反向地址转换函数的指针或用于反向地址转换函数的指令。
7.如项目6所述的数据处理系统,其中,用户数据存储区域中的要复制到源存储区域的一个或多个连续存储器地址是参考回写减少过滤器来选择的。
8.如项目7所述的数据处理系统,其中,数据重排引擎的处理器被配置为根据写入到目的地存储区域的数据的地址来更新回写减少过滤器的状态。
9.如项目1-8中任一项所述的数据处理系统,其中,处理器还被配置用于:响应于来自第一主机处理单元的“重新排列”命令,阻止一个或多个主机处理单元对源存储区域的写访问;并且响应于来自第一主机处理单元的“释放”命令,解除阻止对源存储区域的写访问。
10.如项目1-9中任一项所述的数据处理系统,其中,处理器还被配置用于:响应于来自第一主机处理单元的“重新排列”命令,阻止一个或多个主机处理单元对源存储区域的写访问;并且当在用户数据中分配的所有存储器已被解除分配时,解除阻止对源存储区域的写访问。
11.如项目1-10中任一项所述的数据处理系统,其中,处理器还被配置用于:响应于来自第一主机处理单元的“重新排列”命令,在将数据从源存储区域中的非连续存储器地址复制到目的地存储区域的用户数据存储区域中的连续存储器地址之前,使得在一个或多个主机处理单元的高速缓存中保持的源存储区域中的数据的副本被写回到源存储区域。
12.如项目1-11中任一项所述的数据处理系统,其中,数据重排引擎与一个或多个存储设备的存储设备集成。
13.如项目1-12中任一项所述的数据处理系统,还包括存储器管理单元,该存储器管理单元可操作来访问一个或多个存储设备,其中数据重排引擎与该存储器管理单元集成。
14.一种数据处理系统,包括:一个或多个主机处理单元,所述一个或多个主机处理单元各自具有第一接口;存储器系统,该存储器系统具有第二接口,该存储器系统包括:提供多个存储区域的一个或多个存储设备;以及数据重排引擎,该数据重排引擎可操作来在多个存储区域的存储区域之间移动数据;互连电路,该互连电路耦合在一个或多个主机处理单元的第一接口和存储器系统的第二接口之间,其中数据重排引擎被配置为:响应于由一个或多个主机处理单元的第一主机处理单元经由互连电路指定的重新排列,将存储在多个存储区域的源存储区域中的数据重新排列到目的地区域中。
15.如项目14所述的数据处理系统,其中,目的地存储区域中的重新排列的数据可由第一主机处理设备访问。
16.如项目14或项目15所述的数据处理系统,还包括存储器管理单元,该存储器管理单元可操作来访问一个或多个存储设备,其中,数据重排引擎与该存储器管理单元集成。
17.一种数据处理的方法,包括:响应于存储器系统的数据重排引擎从一个或多个主机处理单元中的第一主机处理单元接收到的第一命令,该数据重排引擎:根据所指定的数据重新排列来初始化元数据存储区域;根据所指定的数据重新排列,将数据从存储器系统的源存储区域中的非连续存储器地址复制到存储器系统的用户数据存储区域中的连续存储器地址;并且使一个或多个主机处理单元能够访问用户数据存储区域。
18.如项目17所述的方法,还包括:在存储器系统中分配用户数据存储区域和元数据存储区域。
19.如项目17或项目18所述的方法,还包括:响应于数据重排引擎从第一主机处理单元接收到的“解放”命令,数据重排引擎:解除分配用户数据存储区域和元数据存储区域。
20.如项目17-19中任一项所述的方法,还包括:在复制数据之前,阻止一个或多个主机处理单元对源存储区域的写访问;并且响应来自第一主机处理单元的“释放”命令,解除阻止对源存储区域的写访问。
21.如项目17-20中任一项所述的方法,还包括:在将数据从存储器系统的源区域中的非连续存储器地址复制到存储器系统的目的地区域中的连续存储器地址之前,使得在所述一个或多个主机处理单元的高速缓存中保持的源存储区域中的数据的副本被写回到源存储区域。
22.如项目17-21中任一项所述的方法,还包括:当数据的复制完成时,向第一主机处理单元进行信号告知。
23.如项目17-22中任一项所述的方法,还包括:响应于来自第一主机处理单元的写命令:将数据值写入到用户数据存储区域中的地址;并且根据该地址来更新回写减少过滤器。
24.如项目23所述的方法,还包括:响应于数据重排引擎从第一主机处理单元接收到的“同步”命令:对于用户数据存储区域中的一个或多个连续存储器地址中的每个选中地址,数据重排引擎:通过回写减少过滤器来确定选中地址处的数据是否可能被改变;并且如果选中地址处的数据可能被改变,则根据所指定的数据重新排列将数据从用户数据存储区域中的选中地址复制到存储器系统的源区域中的对应地址。
已经通过示例而非限制的方式呈现了已在本文中详细描述的各种代表性实施例。本领域技术人员将理解,可以在所描述实施例的形式和细节方面进行各种改变,从而得到仍然属于所附权利要求的范围的等同实施例。
Claims (24)
1.一种存储器系统,包括:
数据重排引擎;以及
提供多个存储区域的一个或多个存储设备,
其中,所述数据重排引擎包括:
接口,该接口可操作来从一个或多个主机处理单元接收命令;
处理器,该处理器响应于经由所述接口从所述一个或多个主机处理单元中的至少第一主机处理单元接收的命令而被配置用于:
响应于来自所述第一主机处理单元的“重新排列”命令:
根据所述“重新排列”命令初始化元数据存储区域,所述元数据存储区域位于包含用户数据存储区域和所述元数据存储区域的目的地存储区域中;以及
根据前向地址转换函数,将数据从所述多个存储区域的源存储区域中的非连续存储器地址复制到所述目的地存储区域的所述用户数据存储区域中的连续存储器地址,
其中,所述用户数据存储区域至少能够由所述第一主机处理单元访问。
2.如权利要求1所述的数据处理系统,其中,所述处理器还被配置用于:
响应于来自所述第一主机处理单元的“分配”命令:
在所述多个存储区域的存储区域中分配包含所述用户数据存储区域和所述元数据存储区域的所述目的地存储区域。
3.如权利要求2所述的数据处理系统,其中,所述处理器还被配置用于:
响应于来自所述第一主机处理单元的“解放”命令,解除分配所述目的地存储区域。
4.如权利要求1-3中任一项所述的数据处理系统,其中,所述接口还可操作来向所述一个或多个主机处理单元发送状态信号,并且其中,所述数据重排引擎的处理器被配置为当数据的复制完成时向所述第一主机处理器发送状态信号。
5.如权利要求1-4中任一项所述的数据处理系统,其中,根据所述“重新排列”命令初始化所述元数据存储区域还包括所述处理器:
存储要复制的数据的长度;
存储重新排列类型;
存储指向所述前向地址转换函数的指针或用于所述前向地址转换函数的指令;并且
存储回写减少过滤器的状态的初始值。
6.如权利要求1-5中任一项所述的数据处理系统,其中,所述数据重排引擎的处理器还被配置用于,
响应于来自所述第一主机处理单元的“同步”命令,根据反向地址转换函数将数据从所述用户数据存储区域中的一个或多个连续存储器地址复制到所述源存储区域中的非连续存储器地址,并且
其中,根据所述“重新排列”命令初始化所述元数据存储区域包括:存储指向所述反向地址转换函数的指针或用于所述反向地址转换函数的指令。
7.如权利要求6所述的数据处理系统,其中,所述用户数据存储区域中的要复制到所述源存储区域的一个或多个连续存储器地址是参考回写减少过滤器来选择的。
8.如权利要求7所述的数据处理系统,其中,所述数据重排引擎的处理器被配置为根据写入到所述目的地存储区域的数据的地址来更新所述回写减少过滤器的状态。
9.如权利要求1-8中任一项所述的数据处理系统,其中,所述处理器还被配置用于:
响应于来自所述第一主机处理单元的所述“重新排列”命令,阻止所述一个或多个主机处理单元对所述源存储区域的写访问;并且
响应于来自所述第一主机处理单元的“释放”命令,解除阻止对所述源存储区域的写访问。
10.如权利要求1-9中任一项所述的数据处理系统,其中,所述处理器还被配置用于:
响应于来自所述第一主机处理单元的所述“重新排列”命令,阻止所述一个或多个主机处理单元对所述源存储区域的写访问;并且
当在所述用户数据中分配的所有存储器已被解除分配时,解除阻止对所述源存储区域的写访问。
11.如权利要求1-10中任一项所述的数据处理系统,其中,所述处理器还被配置用于:
响应于来自所述第一主机处理单元的“重新排列”命令,在将数据从所述源存储区域中的非连续存储器地址复制到所述目的地存储区域的所述用户数据存储区域中的连续存储器地址之前,使得在所述一个或多个主机处理单元的高速缓存中保持的所述源存储区域中的数据的副本被写回到所述源存储区域。
12.如权利要求1-11中任一项所述的数据处理系统,其中,所述数据重排引擎与所述一个或多个存储设备的存储设备集成。
13.如权利要求1-12中任一项所述的数据处理系统,还包括:存储器管理单元,该存储器管理单元可操作来访问所述一个或多个存储设备,其中,所述数据重排引擎与所述存储器管理单元集成。
14.一种数据处理系统,包括:
一个或多个主机处理单元,所述一个或多个主机处理单元各自具有第一接口;
存储器系统,该存储器系统具有第二接口,所述存储器系统包括:
提供多个存储区域的一个或多个存储设备;以及
数据重排引擎,该数据重排引擎可操作来在所述多个存储区域的存储区域之间移动数据;
互连电路,该互连电路耦合在所述一个或多个主机处理单元的所述第一接口和所述存储器系统的所述第二接口之间,
其中,所述数据重排引擎被配置为:响应于由所述一个或多个主机处理单元的第一主机处理单元经由所述互连电路指定的重新排列,将存储在所述多个存储区域的源存储区域中的数据重新排列到目的地区域中。
15.如权利要求14所述的数据处理系统,其中,所述目的地存储区域中的重新排列的数据能够由所述第一主机处理设备访问。
16.如权利要求14或权利要求15所述的数据处理系统,还包括:存储器管理单元,该存储器管理单元可操作来访问所述一个或多个存储设备,其中,所述数据重排引擎与所述存储器管理单元集成。
17.一种数据处理的方法,包括:响应于存储器系统的数据重排引擎从一个或多个主机处理单元中的第一主机处理单元接收到的第一命令,所述数据重排引擎:
根据所指定的数据重新排列来初始化元数据存储区域;
根据所指定的数据重新排列,将数据从所述存储器系统的源存储区域中的非连续存储器地址复制到所述存储器系统的用户数据存储区域中的连续存储器地址;并且
使一个或多个主机处理单元能够访问所述用户数据存储区域。
18.如权利要求17所述的方法,还包括:
在所述存储器系统中分配所述用户数据存储区域和所述元数据存储区域。
19.如权利要求17或权利要求18所述的方法,还包括:响应于所述数据重排引擎从所述第一主机处理单元接收到的“解放”命令,所述数据重排引擎:
解除分配所述用户数据存储区域和所述元数据存储区域。
20.如权利要求17-19中任一项所述的方法,还包括:
在复制数据之前,阻止所述一个或多个主机处理单元对所述源存储区域的写访问;并且
响应来自所述第一主机处理单元的“释放”命令,解除阻止对所述源存储区域的写访问。
21.如权利要求17-20中任一项所述的方法,还包括:
在将数据从所述存储器系统的源区域中的非连续存储器地址复制到所述存储器系统的目的地区域中的连续存储器地址之前,使得在所述一个或多个主机处理单元的高速缓存中保持的所述源存储区域中的数据的副本被写回到所述源存储区域。
22.如权利要求17-21中任一项所述的方法,还包括:当数据的复制完成时,向所述第一主机处理单元进行信号告知。
23.如权利要求17-22中任一项所述的方法,还包括:响应于来自所述第一主机处理单元的写命令:
将数据值写入到所述用户数据存储区域中的地址;并且
根据所述地址来更新回写减少过滤器。
24.如权利要求23所述的方法,还包括:响应于所述数据重排引擎从所述第一主机处理单元接收到的“同步”命令:
对于所述用户数据存储区域中的一个或多个连续存储器地址中的每个选中地址,所述数据重排引擎:
通过所述回写减少过滤器来确定所述选中地址处的数据是否可能被改变;并且
如果所述选中地址处的数据可能被改变,则根据所指定的数据重新排列将数据从所述用户数据存储区域中的选中地址复制到所述存储器系统的所述源区域中的对应地址。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/361,843 US10353601B2 (en) | 2016-11-28 | 2016-11-28 | Data movement engine |
US15/361,843 | 2016-11-28 | ||
PCT/GB2017/053482 WO2018096322A1 (en) | 2016-11-28 | 2017-11-20 | Data movement engine |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110023915A true CN110023915A (zh) | 2019-07-16 |
CN110023915B CN110023915B (zh) | 2023-03-07 |
Family
ID=60629735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780073300.4A Active CN110023915B (zh) | 2016-11-28 | 2017-11-20 | 数据处理系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10353601B2 (zh) |
CN (1) | CN110023915B (zh) |
WO (1) | WO2018096322A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10782918B2 (en) * | 2018-09-06 | 2020-09-22 | Advanced Micro Devices, Inc. | Near-memory data-dependent gather and packing |
US11106378B2 (en) * | 2018-11-21 | 2021-08-31 | At&T Intellectual Property I, L.P. | Record information management based on self describing attributes |
EP3940572B1 (en) * | 2019-03-11 | 2023-07-26 | Nippon Telegraph And Telephone Corporation | Data generalization device, data generalization method, and program |
US11733920B2 (en) * | 2020-09-10 | 2023-08-22 | Western Digital Technologies, Inc. | NVMe simple copy command support using dummy virtual function |
CN112232498B (zh) * | 2020-10-12 | 2022-11-18 | 安徽寒武纪信息科技有限公司 | 一种数据处理装置、集成电路芯片、电子设备、板卡和方法 |
US11556268B2 (en) | 2021-04-22 | 2023-01-17 | Western Digital Technologies, Inc. | Cache based flow for a simple copy command |
US11593306B1 (en) | 2021-10-29 | 2023-02-28 | Snowflake Inc. | File defragmentation service |
US11537613B1 (en) * | 2021-10-29 | 2022-12-27 | Snowflake Inc. | Merge small file consolidation |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1541358A (zh) * | 2001-08-15 | 2004-10-27 | 皇家飞利浦电子股份有限公司 | 具有移动存储块的存储池 |
CN1890630A (zh) * | 2003-12-09 | 2007-01-03 | Arm有限公司 | 在寄存器和存储器之间移动数据的数据处理设备和方法 |
CN101241420A (zh) * | 2008-03-20 | 2008-08-13 | 杭州华三通信技术有限公司 | 用于提高写地址非连续的数据存储效率的方法和存储设备 |
US20080235477A1 (en) * | 2007-03-19 | 2008-09-25 | Rawson Andrew R | Coherent data mover |
US20140136811A1 (en) * | 2012-11-12 | 2014-05-15 | International Business Machines Corporation | Active memory device gather, scatter, and filter |
US20140219034A1 (en) * | 2013-02-07 | 2014-08-07 | Seagate Technology Llc | Non-Volatile Write Buffer Data Retention Pending Scheduled Verification |
CN104615548A (zh) * | 2010-03-29 | 2015-05-13 | 威盛电子股份有限公司 | 数据预取方法以及微处理器 |
US20150242310A1 (en) * | 2014-02-21 | 2015-08-27 | Lenovo (Beijing) Co., Ltd. | Data Accessing Method And Data Accessing Apparatus |
CN105339908A (zh) * | 2013-07-26 | 2016-02-17 | 英特尔公司 | 用于支持持久存储器的方法和装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8635410B1 (en) * | 2000-07-20 | 2014-01-21 | Silicon Graphics International, Corp. | System and method for removing data from processor caches in a distributed multi-processor computer system |
US6629198B2 (en) | 2000-12-08 | 2003-09-30 | Sun Microsystems, Inc. | Data storage system and method employing a write-ahead hash log |
JP3714184B2 (ja) * | 2001-03-29 | 2005-11-09 | 富士通株式会社 | 記憶装置のデータ領域間複写処理方法、及び記憶システム |
US8762660B2 (en) | 2012-05-30 | 2014-06-24 | Vmware, Inc. | Avoiding physical fragmentation in a virtualized storage environment |
US9361238B2 (en) | 2014-11-04 | 2016-06-07 | Futurewei Technologies, Inc. | Memory addressing mechanism using a buffer of a hierarchy of collision free hash tables |
US10067708B2 (en) | 2015-12-22 | 2018-09-04 | Arm Limited | Memory synchronization filter |
-
2016
- 2016-11-28 US US15/361,843 patent/US10353601B2/en active Active
-
2017
- 2017-11-20 CN CN201780073300.4A patent/CN110023915B/zh active Active
- 2017-11-20 WO PCT/GB2017/053482 patent/WO2018096322A1/en active Application Filing
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1541358A (zh) * | 2001-08-15 | 2004-10-27 | 皇家飞利浦电子股份有限公司 | 具有移动存储块的存储池 |
CN1890630A (zh) * | 2003-12-09 | 2007-01-03 | Arm有限公司 | 在寄存器和存储器之间移动数据的数据处理设备和方法 |
US20080235477A1 (en) * | 2007-03-19 | 2008-09-25 | Rawson Andrew R | Coherent data mover |
CN101241420A (zh) * | 2008-03-20 | 2008-08-13 | 杭州华三通信技术有限公司 | 用于提高写地址非连续的数据存储效率的方法和存储设备 |
CN104615548A (zh) * | 2010-03-29 | 2015-05-13 | 威盛电子股份有限公司 | 数据预取方法以及微处理器 |
US20140136811A1 (en) * | 2012-11-12 | 2014-05-15 | International Business Machines Corporation | Active memory device gather, scatter, and filter |
US20140219034A1 (en) * | 2013-02-07 | 2014-08-07 | Seagate Technology Llc | Non-Volatile Write Buffer Data Retention Pending Scheduled Verification |
CN105339908A (zh) * | 2013-07-26 | 2016-02-17 | 英特尔公司 | 用于支持持久存储器的方法和装置 |
US20150242310A1 (en) * | 2014-02-21 | 2015-08-27 | Lenovo (Beijing) Co., Ltd. | Data Accessing Method And Data Accessing Apparatus |
Non-Patent Citations (3)
Title |
---|
DAVID A.BADER等: "Simple: A Methodology for Programming High Performance Algorithms on Clusters of Symmetric Multiprocessors (SMPs)", 《ELSEVIER》 * |
J. CARTER等: "Impulse: building a smarter memory controller", 《IEEE》 * |
刘洋: "层次混合存储系统中缓存和预取技术研究", 《中国博士学位论文电子期刊网 信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
US10353601B2 (en) | 2019-07-16 |
WO2018096322A1 (en) | 2018-05-31 |
US20180150243A1 (en) | 2018-05-31 |
CN110023915B (zh) | 2023-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110023915A (zh) | 数据移动引擎 | |
Kwon et al. | Strata: A cross media file system | |
CN104364775B (zh) | 具有段偏移寻址的专用存储器访问路径 | |
CN109240938A (zh) | 存储系统以及控制非易失性存储器的控制方法 | |
Meza et al. | A case for efficient hardware/software cooperative management of storage and memory | |
Adler et al. | Leap scratchpads: automatic memory and cache management for reconfigurable logic | |
Aila et al. | Architecture considerations for tracing incoherent rays | |
US10242050B2 (en) | Database caching in a database system | |
CN103597451B (zh) | 用于高可用性的存储器镜像和冗余生成 | |
CN104937567B (zh) | 用于大共享地址空间的映射机构 | |
CN106874217A (zh) | 存储器系统及控制方法 | |
US10146696B1 (en) | Data storage system with cluster virtual memory on non-cache-coherent cluster interconnect | |
US10402335B2 (en) | Method and apparatus for persistently caching storage data in a page cache | |
CN102971727B (zh) | 在软件分布式共享存储器系统中记录脏信息 | |
KR101355105B1 (ko) | 캐시 일관성 보장을 위한 공유 가상 메모리 관리 장치 | |
CN104077084A (zh) | 分布式随机访问文件系统及其访问控制方法 | |
US20170357462A1 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
CN104937564B (zh) | 组表格的数据冲洗 | |
CN109697016A (zh) | 用于改进容器的存储性能的方法和装置 | |
Joe | COMA-F: A non-hierarchical cache only memory architecture | |
Kim et al. | HMB-SSD: Framework for efficient exploiting of the host memory buffer in the NVMe SSD | |
CN104636452B (zh) | 一种面向scm的统一文件系统管理方法 | |
CN104049904B (zh) | 用于管理统一虚拟存储器的页面状态目录的系统和方法 | |
CN114840134A (zh) | 日志归并树键值存储系统及相关方法和相关设备 | |
Logan et al. | pMEMCPY: a simple, lightweight, and portable I/O library for storing data in persistent memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |