CN109254794A - 数据软件系统辅助 - Google Patents
数据软件系统辅助 Download PDFInfo
- Publication number
- CN109254794A CN109254794A CN201810697220.2A CN201810697220A CN109254794A CN 109254794 A CN109254794 A CN 109254794A CN 201810697220 A CN201810697220 A CN 201810697220A CN 109254794 A CN109254794 A CN 109254794A
- Authority
- CN
- China
- Prior art keywords
- cpu
- cache
- volatile memory
- data
- header
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 claims abstract description 232
- 238000012545 processing Methods 0.000 claims abstract description 50
- 238000000034 method Methods 0.000 claims abstract description 41
- 230000004913 activation Effects 0.000 claims abstract description 5
- 230000004044 response Effects 0.000 claims description 16
- 230000002708 enhancing effect Effects 0.000 claims 6
- 238000013523 data management Methods 0.000 description 46
- 230000003993 interaction Effects 0.000 description 15
- 238000004891 communication Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 7
- 239000003990 capacitor Substances 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000001502 supplementing effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 239000003985 ceramic capacitor Substances 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 229910052715 tantalum Inorganic materials 0.000 description 2
- GUVRBAGPIYLISA-UHFFFAOYSA-N tantalum atom Chemical compound [Ta] GUVRBAGPIYLISA-UHFFFAOYSA-N 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000005612 types of electricity Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1724—Details of de-fragmentation performed by the file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在本发明的实施例中,一种装置包括:中央处理单元(CPU);易失性存储器控制器;非易失性存储器控制器;耦合到易失性存储器控制器的易失性存储器;以及耦合到非易失性存储器控制器的非易失性存储器;其中,非易失性存储器与易失性存储器的比率远小于典型比率。在本发明的另一实施例中,一种方法包括:由中央处理单元(CPU)接收命令;由CPU评估命令;由CPU执行数据软件辅助以执行命令,或者由CPU激活硬件加速器模块以执行命令;以及由CPU对命令做出响应。在本发明的又一实施例中,一种制品包括:非暂时性计算机可读介质,其上存储有指令,该指令可操作以允许装置执行上述方法。
Description
相关申请的交叉引用
本申请要求享有于2017年6月29日提交的第62/526,472号的美国临时申请的利益和优先权。该美国临时申请第62/526,472号特此通过引用全部并入本文。
技术领域
本发明的实施例总体上涉及数据存储系统的领域。
背景技术
本文提供的背景描述是出于总体地呈现本发明的公开内容的上下文的目的。目前提及的发明人的工作(在工作在本背景技术部分中被描述的程度上)以及在提交时否则可以不作为现有技术的描述的方面既没有明确地也没有隐含地被承认为针对本发明的本公开内容的现有技术。
数据库管理系统(例如,存储器内数据结构)存储一种类型的数据库并且承诺快速性能。
集群计算系统同样承诺快速性能。
常规的数据存储系统不提供可以对由上文提及的数据软件系统承诺的快速性能进行加速、增强或补充的特征。
因此,存在克服常规途径的约束和/或缺点的持续需求。
发明内容
本发明的实施例总体上涉及数据存储系统的领域。
在本发明的实施例中,一种装置包括:中央处理单元(CPU);易失性存储器控制器;非易失性存储器控制器;耦合到易失性存储器控制器的易失性存储器;以及耦合到非易失性存储器控制器的非易失性存储器;其中,非易失性存储器与易失性存储器的比率远小于典型比率。
在本发明的另一实施例中,一种方法包括:由中央处理单元(CPU)接收命令;由CPU评估命令;由CPU执行数据软件辅助以执行命令,或者由CPU激活硬件加速器模块以执行命令;以及由CPU对命令做出响应。
在本发明的又一实施例中,一种制品包括:非暂时性计算机可读介质,其上存储有指令,该指令可操作以允许装置执行包括以下操作的方法:由中央处理单元(CPU)接收命令;由CPU评估命令;由CPU执行数据软件辅助以执行命令,或者由CPU激活硬件加速器模块以执行命令;以及由CPU对命令做出响应。
应当理解,前述总体描述和以下详细描述仅仅是示例性和解释性的,并且不限制如所要求保护的本发明。例如,前述总体描述呈现了简要发明内容以便提供对本文描述的一些方面的基本理解。本发明内容不是对所要求保护的主题的详尽概述。本发明内容既不旨在识别所要求保护的主题的关键或重要元素,也不旨在描绘其范围。本发明内容的唯一目的是以简化的形式呈现一些构思以作为稍后呈现的更详细描述的序言。
并入本说明书中并构成本说明书的一部分的附图示出了本发明的一个(若干)实施例并且与说明书一起用于解释本发明的原理。
附图说明
参考以下附图描述了本发明的非限制性和非穷举的实施例,其中,除非另外指定,否则贯穿各个视图同样的附图标记指代同样的部分。
然而,应当注意,附图仅示出本发明的典型实施例,并且因此不被认为是对其范围的限制,这是因为本发明可以允许其他等效的实施例。
图1是根据本发明的实施例的系统的框图。
图2是根据本发明的另一实施例的包括数据管理设备的系统的框图。
图3是根据本发明的实施例的在一个场景中在系统中使用的元素的框图。
图4是根据本发明的实施例的在另一场景中在系统中使用的元素的框图。
图5是根据本发明的实施例的方法的流程图。
具体实施方式
在以下具体实施方式中,出于解释的目的阐述了许多具体细节以提供对本发明的各个实施例的透彻理解。本领域普通技术人员将认识到,本发明的这些各个实施例仅仅是说明性的,而并不旨在以任何方式进行限制。受益于本公开内容的这些技术人员将容易地想到本发明的其他实施例。
另外,出于清楚的目的,没有示出或描述本文描述的实施例的所有惯常特征。本领域普通技术人员将容易地意识到,在任何这样的实际实现方式的开发中,可能需要许多实现方式特定的决策来达成具体设计目标。这些设计目标将从一个实现方式到另一实现方式不同并且从一个开发人员到另一开发人员不同。此外,应该意识到,这样的开发努力可能是复杂且耗时的,但无论如何对于受益于本公开内容的本领域普通技术人员而言仍将是惯常的工程任务。本文公开的各个实施例不旨在限制本文公开内容的范围和精神。
本文参考附图描述了用于执行本发明的原理的示例性实施例。然而,本发明不限于具体描述和示出的实施例。本领域技术人员将意识到,在不偏离本发明的基本构思的情况下,许多其他实施例是可能的。因此,本发明的原理扩展到落入所附权利要求的范围内的任何工作。
如本文使用的,本文的术语“一”和“一个”不表示对数量的限制,而是表示所引用的项目中的至少一个的存在。
在下面的说明书中以及在权利要求中,术语“包括”和“包含”以开放式方式使用,并且因此应当被解释为意指“包括但不限于……”。而且,术语“耦合”(或“耦合到”)旨在意指间接或直接的电连接(或间接或直接的光连接)。因此,如果一个设备耦合到另一设备,则该连接可以是通过直接电(或光)连接的,或是通过经由其他设备和/或其他连接的间接电(或光)连接的。
本发明的实施例通过将数据软件系统中的至少一个与具有可以对数据软件系统进行加速、增强或/和补充的特征的设备相接合来有利地改进数据软件系统的性能。
本发明的实施例还提供了有利地提供对数据的低延时存取的新颖高速缓存算法。
图1是根据本发明的实施例的系统4的框图。系统4包括数据管理装置32,其包括主机12和通信地耦合到主机12的数据管理设备16。数据软件系统10被配置为在主机12中运行(和/或正在运行)。
在一个实施例中,数据软件系统10包括数据库管理系统,其是与用户、一个应用或其他应用和/或数据库本身交互以捕获并分析数据的计算机软件应用。这样的软件应用的示例可以是例如用于捕获并分析数据的MySQL、MongoDB或另一类型的软件应用。
在另一实施例或替代实施例中,数据软件系统10包括数据管理系统的子集。例如,数据管理系统的子集是存储器内数据结构存储库10,其是主要依赖主存储器用于计算机数据存储的数据库管理系统(例如,Redis,其是用作数据库、高速缓存和/或消息代理的开源(BSD许可的)存储器内数据结构存储库)。
在一个实施例或替代实施例中,数据软件系统10包括数据处理软件(例如,ApacheSpark)。
在一个实施例或替代实施例中,数据软件系统10包括数据存取软件(例如,Cassandra)。
主机12执行一个或多个数据软件系统10。
主机12可以被限定为具有向数据管理设备16发送事务请求的能力的任何设备。例如,该设备(例如,主机12)可以生成存储器读取事务请求或存储器写入事务请求,并且可以接收因数据管理设备16处理事务请求而得到的响应。
数据管理设备16可以处理来自一个或多个请求设备(例如,一个或多个主机12)的事务请求。
能量存储库14耦合到主机12并且是当主电源发生限电时向主机12提供电力的辅助电源。类似地,能量存储库26耦合到数据管理设备16中的易失性存储器24并且当对易失性存储器24的供电中断时向易失性存储器24提供电力。能量存储库14或能量存储库26可以是电池、电容器电源、无限制电源、各种类型的超级电容器(例如,超电容器、陶瓷电容器、钽电容器或另一类型的超级电容器)中的任一个或另一类型的电源。
在本发明的实施例中,主机12经由链路15通信地耦合到数据管理设备16。通过举例而非限制的方式,链路15可以是通信总线(或多个通信总线),或无线通信链路,例如(通过举例而非限制的方式)光通信链路、射频(RF)通信链路或另一类型的无线通信链路。
作为示例,数据管理设备16包括SSD(固态驱动器)。然而,在另一示例中,数据管理设备16包括不同于SSD的另一类型的设备。因此,SSD仅仅是数据管理设备16的一个实施例。
在本发明的实施例中,数据管理设备16包括IO(输入/输出)接口18、中央处理单元(CPU)22、硬件加速器模块30、IO控制器34、易失性存储器24、能量存储库26、非易失性存储器28、易失性存储器控制器36和非易失性存储器控制器38。下文将讨论以上组件的细节。
在本发明的实施例中,数据管理设备16连接到主机12并且具有辅助数据软件系统10用于主机12的特征。数据管理设备16被配置为加速、增强或/和补充至少一个数据软件系统10。具体而言,数据软件系统辅助20或硬件加速器模块30被配置为加速、增强或/和补充至少一个数据软件系统10。
IO接口18经由链路15耦合到主机12并且经由链路19耦合到IO控制器34。链路19可以是例如用于通信地将IO接口18与IO控制器34进行耦合的通信总线或另一合适的通信链路。
IO接口18可以基于例如PCIe(快速外围组件互连)、FC(光纤通道)、以太网、Infiniband(IB)、Quickpath、Omnipath、Interlaken和/或另一类型的IO接口。
IO控制器34是与IO接口18相关联的控制器。IO控制器34控制去往和来自CPU 22、易失性存储器控制器36、非易失性存储器控制器38和硬件加速器30的信号的传输。
数据软件系统辅助20包括在CPU 22中运行的模块、软件和/或算法,并且数据软件系统辅助20辅助数据库管理系统10。数据软件系统辅助20可以用于各种应用中,例如,大数据软件、数据库应用软件、分布式计算软件,其可以是需要对数据进行存取和/或将任务(或多个任务)委派给计算系统中的另一主机或模块的软件或者另一类型的应用。数据管理设备16中的元件可以有利地提升软件系统(例如,数据软件系统10)的性能。换言之,数据管理设备16包括用于提升软件系统的性能的平台。例如,数据软件系统辅助20和/或硬件加速器模块30可以有利地提升数据软件系统10的性能。
数据软件系统辅助20在(和/或被配置为在)CPU 22上运行。
硬件加速器模块30执行与数据软件系统辅助20类似的功能,并且提供与数据软件系统辅助20类似的优点。
CPU 22可以是数据管理设备16的处理器。设备管理设备16可以包括一个或多个CPU 22。
易失性存储器控制器36耦合到易失性存储器24。易失性存储器24可以是例如SRAM(静态随机存取存储器)或DRAM(动态随机存取存储器)。在一个实施例或替代实施例中,易失性存储器24可以被进一步分类为高速易失性存储器和/或高容量易失性存储器。
易失性存储器24典型地用作(和/或充当)用于缓存从非易失性存储器28读取和/或写入到非易失性存储器28的数据的高速缓存。另外,易失性存储器24存储目录结构,其映射出在非易失性存储器28中使用和/或在可与数据管理设备16一起起作用的另一存储装置(例如,硬盘驱动器)中使用的每个存储单元定位在何处。
易失性存储器控制器36允许在易失性存储器24上执行诸如读取存储器事务或写入存储器事务之类的存储器事务。
能量存储库26包括辅助电源,其在主电源发生限电时提供电力。能量存储库26可以是与能量存储库14的实施例相比不同的实施例,或者能量存储库26可以是与能量存储库14的实施例相比类似的实施例。
能量存储库14和/或能量存储库26确保分别在主机12和易失性存储器24中的数据在影响数据管理装置32的断电情况下得到保护。在断电时,继续处理这些组件中保留的信息。例如,在断电时,易失性存储器24中的数据被刷新到非易失性存储器28。
非易失性存储器28可以是例如闪速存储器。在一个实施例或替代实施例中,非易失性存储器28可以被进一步分类为高速存储器。
非易失性存储器控制器38允许在非易失性存储器28上执行诸如读取存储器事务或写入存储器事务之类的存储器事务。
硬件加速器模块30可以是例如卷积模块、矩阵乘法模块、FIR(有限脉冲响应)滤波器模块、视频转换器模块或另一类型的加速器。
CPU 22、易失性存储器控制器36、非易失性存储器控制器38和硬件加速器模块30经由总线40电耦合和/或通信地耦合到IO控制器34,使得IO控制器34允许信号通信发生于IO控制器34与CPU 22、易失性存储器控制器36、非易失性存储器控制器38和硬件加速器模块30之间,和/或发生于CPU 22与诸如易失性存储器控制器36、非易失性存储器控制器38或硬件加速器模块30之类的其他元件之间。
易失性存储器24和非易失性存储器28的示例:
在本发明的实施例中,易失性存储器24提供远小于典型比率的非易失性存储器与高速缓存比率。其为非易失性存储器28的大小与易失性存储器24的大小的比率:即,比率=(非易失性存储器28的大小)/(易失性存储器24的大小)。
在一个实施例中,易失性存储器24提供小于大约500的非易失性存储器与高速缓存比率。
在另一实施例中,易失性存储器24提供等于或小于大约125的非易失性存储器与高速缓存比率。
非易失性存储器28的大小范围(或图2中的非易失性存储器228的大小范围)典型地以兆兆字节为单位。易失性存储器24的大小范围(或图2中的易失性存储器224的大小范围)典型地以千兆字节为单位。在本发明的实施例中,易失性存储器24的大小或易失性存储器224的大小大于常规系统中的易失性存储器的大小,并且分别接近或落入与非易失性存储器28的大小或非易失性存储器228的大小相近的大小。
元件的交互——场景#1:
主机12经由(多个)供应商特定命令将数据处理命令110(例如,对所有高速缓存行310中的单词“hello”的实例的数量进行计数)发送到数据管理设备16,该供应商特定命令受到由IO接口18使用的IO接口协议的支持。
CPU 22评估数据处理命令110。
CPU 22执行数据软件辅助20以执行数据处理命令110。
响应于数据软件辅助20执行数据处理命令110,CPU 22用单词计数115向主机12做出响应。
元件的交互——场景#2:
主机12经由(多个)供应商特定命令将数据处理命令110(例如,对所有高速缓存行310中的单词“hello”的实例的数量进行计数)发送到数据管理设备16,该供应商特定命令受到由IO接口18使用的IO接口协议的支持。
CPU 22评估数据处理命令110。
CPU 22(经由命令118)激活硬件加速器模块30以执行数据处理命令110。
作为数据处理命令110中的操作的一部分,硬件加速器模块30(经由易失性存储器控制器36)对易失性存储器24中的高速缓存行310进行存取(119)。
硬件加速器模块30将操作的结果120(例如,单词计数)提供给CPU 22。
CPU 22基于由硬件加速器模块30提供的结果120来用操作的结果115(总单词计数)向主机12做出响应。
元件的交互——场景#3:
主机12经由(多个)供应商特定命令将数据处理命令110(例如,对数据查找330的所有条目中的单词“hello”的实例的数量进行计数)发送到数据管理设备16,该供应商特定命令受到由IO接口18使用的IO接口协议的支持。
CPU 22评估数据处理命令110。
CPU 22从非易失性存储器28(经由非易失性存储器控制器38)将区段的初始集合(区段340,例如,图3和/或图4中的区段340a和340b)加载(125)到易失性存储器24中的高速缓存行310(图3和/或图4)(经由易失性存储器控制器36)。
CPU 22执行数据软件系统辅助20以(经由易失性存储器控制器36)执行高速缓存行310中的数据处理命令110。
数据软件系统辅助20将部分单词计数130a提供给CPU 22。
CPU 22从非易失性存储器28(经由非易失性存储器控制器38)将区段的下一集合(区段340,例如,区段340c和340d)加载(125)到高速缓存行310(经由易失性存储器控制器36),并且数据软件系统辅助20执行高速缓存行310中的数据处理命令110,并且数据软件系统辅助20将部分单词计数130b提供给CPU 22。以上过程被类似地重复,直到所有区段经由非易失性存储器28由数据软件系统辅助20处理为止。
CPU 22基于所有的部分单词计数130a和130b来用操作的结果115(总单词计数)向主机12做出响应。
元件的交互——场景#4:
主机12经由(多个)供应商特定命令将数据处理命令110(例如,对数据查找330的所有条目中的单词“hello”的实例的数量进行计数)发送到数据管理设备16,该供应商特定命令受到由IO接口18使用的IO接口协议的支持。
CPU 22评估数据处理命令110。
CPU 22从非易失性存储器28(经由非易失性存储器控制器38)将区段340的初始集合加载(135)到易失性存储器24中的高速缓存行310(经由易失性存储器控制器36)。
CPU 22激活硬件加速器模块30以执行数据处理命令110。
作为数据处理命令110中的操作的一部分,硬件加速器模块30(经由易失性存储器控制器36)对易失性存储器24中的高速缓存行310进行存取。
硬件加速器模块30将操作的结果140a(部分单词计数)提供给CPU 22。
CPU 22从非易失性存储器28将区段340的下一集合加载(135)到高速缓存行310,并且硬件加速器模块30执行数据处理命令110,并且作为数据处理命令110中的操作的一部分对易失性存储器24中的高速缓存行310进行存取,并且将操作的结果140b(下一部分单词计数)提供给CPU 22。以上过程被类似地重复,直到所有区段经由非易失性存储器28由硬件加速器模块30处理为止。
CPU 22基于所有结果140a和140b来用操作的结果115(例如,单词计数)向主机12做出响应。
图2是根据本发明的另一实施例的包括数据管理设备216的系统204的框图。在本发明的实施例中,数据管理设备216包括数据软件系统210、数据软件系统辅助220、主机/CPU块222、硬件加速器模块230、易失性存储器224、能量存储库226、非易失性存储器228、易失性存储器控制器236和非易失性存储器控制器238。下文将讨论以上组件的细节。
在本发明的实施例中,数据管理设备216具有辅助数据软件系统210的特征。数据管理设备216被配置为加速、增强或/和补充至少一个数据软件系统210。具体而言,数据软件系统辅助220或硬件加速器模块230被配置为加速、增强或/和补充至少一个数据软件系统210。
数据软件系统210被配置为在主机/CPU块222(例如,在图2中被示为主机/CPU块222)中运行(和/或正在运行)。
主机/CPU块222充当主机并且执行与图1中的主机12类似的操作。主机/CPU块222还充当CPU并且执行与图1中的CPU 22类似的操作。
硬件加速器模块230执行与数据软件系统辅助220类似的功能,并且提供与数据软件系统辅助220类似的优点。
在一个实施例中,数据软件系统210包括数据库管理系统,其是与用户、一个应用或其他应用和/或数据库本身交互以捕获并分析数据的计算机软件应用。这样的软件应用的示例可以是例如用于捕获并分析数据的MySQL、MongoDB或另一类型的软件应用。
在另一实施例或替代实施例中,数据软件系统210包括数据管理系统的子集。例如,数据管理系统的子集是存储器内数据结构存储库210,其是主要依赖主存储器用于计算机数据存储的数据库管理系统(例如,Redis,其是用作数据库、高速缓存和/或消息代理的开源(BSD许可的)存储器内数据结构存储库)。
在一个实施例或替代实施例中,数据软件系统210包括数据处理软件(例如,Apache Spark)。
在一个实施例或替代实施例中,数据软件系统210包括数据存取软件(例如,Cassandra)。
主机/CPU块222包括数据管理设备216的处理器并且执行数据软件系统210。数据管理设备216可以具有一个或多个(至少一个)主机/CPU块222。
能量存储器226包括辅助电源,其在主电源发生限电时向数据管理设备216提供电力。数据管理设备216可以具有一个或多个(至少一个)能量存储库226。能量存储库226可以被共享或不被共享给数据管理设备216中的许多模块。例如,数据管理设备216中的每个模块可以具有单独的相应能量存储库226。在一个特定示例中,主机/CPU块222和易失性存储器224可以共享并且接收来自相同能量存储库226的电力。在另一特定示例中,主机/CPU块222可以接收来自第一能量存储库(其类似于能量存储库226)的电力,并且易失性存储器224可以接收来自第二能量存储库的电力。数据管理设备216中的能量存储库226和/或任何其他附加能量存储库可以是电池、电容器电源、无限制电源、各种类型的超级电容器(例如,超电容器、陶瓷电容器、钽电容器或另一类型的超级电容器)中的任一个或另一类型的电源。
数据管理设备216包括运行数据软件系统210的设备。
数据软件系统辅助220包括在主机/CPU 222的CPU组件中运行的模块、软件和/或算法,并且数据软件系统辅助220辅助数据软件系统210。
易失性存储器224可以是例如SRAM或DRAM。在至少一个替代实施例中或者在至少一个实施例中,易失性存储器224可以被进一步分类为高速存储器和/或高容量存储器。
非易失性存储器228可以是例如闪速存储器。在至少一个替代实施例或至少一个实施例中,非易失性存储器228可以被进一步分类为高速存储器。
硬件加速器模块230可以是例如卷积模块、矩阵乘法模块、FIR滤波器模块、视频转换器模块或另一类型的加速器。
主机/CPU块222、易失性存储器控制器236、非易失性存储器控制器238和硬件加速器模块230经由总线240电耦合和/或通信地耦合,使得信号通信发生于主机/CPU块222、易失性存储器控制器236、非易失性存储器控制器238和硬件加速器模块230之间。
易失性存储器224和非易失性存储器228的示例:
在实施例中,易失性存储器224提供远小于典型比率的非易失性存储器与高速缓存比率。如上文类似地讨论的,非易失性存储器与高速缓存比率是非易失性存储器228的大小与易失性存储器224的大小的比率。
在一个实施例中,易失性存储器224提供小于大约500的非易失性存储器与高速缓存比率。
在另一实施例中,易失性存储器224提供等于或小于大约125的非易失性存储器与高速缓存比率。
数据管理设备216中的元件的交互与上文针对图1中的元件讨论的场景相同和/或类似。然而,主机/CPU块222中的主机组件将发送数据处理命令250(类似于图1中的数据处理命令110),该数据处理命令250将由主机/CPU块222中的CPU组件以与上文针对命令110(在元件的交互中的示例场景中)讨论的类似的方式来处理。响应于针对上面讨论的元件的交互中的示例场景的数据处理命令250,主机/CPU块222中的主机组件将接收结果255,结果255类似于图1中的结果115。
现在讨论图2中的系统204中的元件的交互的具体示例。
元件的交互——场景#1:
主机/CPU块222评估数据处理命令250(例如,对所有高速缓存行310中的单词“hello”的实例的数量进行计数)。
主机/CPU块222执行数据软件辅助220以执行数据处理命令250。
响应于数据软件辅助220执行数据处理命令250,主机/CPU块222生成单词计数255。
元件的交互——场景#2:
主机/CPU块222评估数据处理命令250(例如,对所有高速缓存行310中的单词“hello”的实例的数量进行计数)。
主机/CPU块222(经由命令268)激活硬件加速器模块230以执行数据处理命令250。
作为数据处理命令250中的操作的一部分,硬件加速器模块230(经由易失性存储器控制器236)对易失性存储器224中的高速缓存行310进行存取(269)。
硬件加速器模块230将操作的结果270(例如,单词计数)提供给主机/CPU块255。
主机/CPU块222基于由硬件加速器模块230提供的结果270来提供结果255。
元件的交互——场景#3:
主机/CPU块222评估数据处理命令250(例如,对数据查找330的所有条目中的单词“hello”的实例的数量进行计数)。
主机/CPU块222从非易失性存储器228(经由非易失性存储器控制器238)将区段的初始集合(区段340,例如,区段340a和340b)加载(275)到易失性存储器224中的高速缓存行310(经由易失性存储器控制器236)。
主机/CPU块222执行数据软件系统辅助220以(经由易失性存储器控制器236)执行易失性存储器224中的高速缓存行310中的数据处理命令250。
数据软件系统辅助220将部分单词计数280a提供给主机/CPU块222。
主机/CPU块222从非易失性存储器228(经由非易失性存储器控制器238)将区段的下一集合(区段340,例如,区段340c和340d)加载(275)到易失性存储器224中的高速缓存行310(经由易失性存储器控制器236),并且数据软件系统辅助220执行高速缓存行310中的数据处理命令250,并且数据软件系统辅助220将部分单词计数280b提供给主机/CPU块222。以上过程被类似地重复,直到所有区段经由非易失性存储器228由数据软件系统辅助220处理为止。
主机/CPU块222基于所有的部分单词计数280a和280b来提供操作的结果255(总单词计数)。
元件的交互——场景#4:
主机/CPU块222评估数据处理命令250(例如,对数据查找330的所有条目中的单词“hello”的实例的数量进行计数)。
主机/CPU块222从非易失性存储器228(经由非易失性存储器控制器238)将区段340的初始集合加载(285)到易失性存储器224中的高速缓存行310(经由易失性存储器控制器236)。
主机/CPU块222激活硬件加速器模块230以执行数据处理命令250。
作为数据处理命令250中的操作的一部分,硬件加速器模块230(经由易失性存储器控制器236)对易失性存储器224中的高速缓存行310进行存取。
硬件加速器模块230将操作的结果290a(部分单词计数数)提供给主机/CPU块222。
主机/CPU块222从非易失性存储器228将区段340的下一集合加载(285)到高速缓存行310,并且硬件加速器模块230执行数据处理命令250,并且作为数据处理命令250中的操作的一部分对易失性存储器224中的高速缓存行310进行存取,并且将操作的结果290b(下一部分单词计数)提供给主机/CPU块222。以上过程被类似地重复,直到所有区段经由非易失性存储器228由硬件加速器模块230处理为止。
主机/CPU块222基于所有结果290a和290b来提供操作的结果255(例如,单词计数)。
图3是根据本发明的实施例的在一个场景中在系统300中使用的元素的框图。图4是根据本发明的实施例的具有与图3类似的元素但在另一场景中的相同系统300的框图。系统300可以是图1中的系统4或图2中的系统204。系统300中的易失性存储器24可以与系统4中的易失性存储器24相同或者可以与系统204中的易失性存储器224相同。系统300中的非易失性存储器28可以与系统4中的非易失性存储器28相同或者可以与系统204中的非易失性存储器228相同。
在下文的讨论中,关于易失性存储器24和非易失性存储器28(和/或被包括在其中)的细节可以是也分别适用于易失性存储器224和非易失性存储器228(和/或也被包括在其中)的细节。
如下文将讨论的,易失性存储器24(或易失性存储器224)存储高速缓存行310的集合、高速缓存标头320的集合和数据查找330。如下文将讨论的,非易失性存储器28(或非易失性存储器228)存储区段340。
在本发明的一个实施例中,数据查找330包括具有线性指针列表的表。数据查找330中的指针是与SRAM内的存储器位置相关联的高速缓存指针。PBA(物理块地址)指针与非易失性存储器28中的区段340相关联。每当固件或软件向数据查找330呈现LBA(逻辑块地址)时,数据查找330确定与该LBA相关联的高速缓存指针或PBA指针。
在本发明的实施例中,高速缓存标头320的集合可以是链表。然而,高速缓存标头320的集合可以通过使用其他类型的数据结构来实现。
易失性存储器24(或易失性存储器224)中的高速缓存行310的数量可以变化,如由点符号312示出的。在图3的示例中,高速缓存行310包括高速缓存行310a、310b、310至310x和310y。给定的高速缓存行310(例如,高速缓存行310a至310y中的任一个)是高速缓冲存储的基本单位。
易失性存储器24(或易失性存储器224)中的高速缓存标头320的数量可以变化,如由点符号322示出的。在图3的示例中,高速缓存标头320包括高速缓存标头320p、320q、320r至320t和320u。
高速缓存标头320的集合可以例如被实现为表320、链表320或其他数据结构320。
每个高速缓存标头320与给定的高速缓存行310相关联。例如,高速缓存标头320p、320q、320r、320t和320u分别与高速缓存行310a、310b、310c、310x和310y相关联。每个高速缓存标头320包含与高速缓存行310相关联的元数据324。例如,每个高速缓存标头320包含其关联的高速缓存行310的指针324或索引位置(324)。在图3的示例中,高速缓存标头320p包含将高速缓存标头320p与高速缓存行310a进行关联的元数据324a(例如,指针324a或索引位置324a);高速缓存标头320q包含将高速缓存标头320q与高速缓存行310b进行关联的元数据324b;高速缓存标头320r包含将高速缓存标头320r与高速缓存行310c进行关联的元数据324c;高速缓存标头320t包含将高速缓存标头320t与高速缓存行310x进行关联的元数据324x;并且高速缓存标头320u包含将高速缓存标头320u与高速缓存行310y进行关联的元数据324y。
当高速缓存标头指针324或索引位置324被记录为数据查找表330中的有效条目时,被包含在高速缓存标头320中的元数据325中的一个是与关联于高速缓存标头320的高速缓存行条目310的数据内容相关联的非易失性PBA(物理块地址)位置(即,PBA指针325)。
当高速缓存标头指针324或索引位置324被记录为数据查找表330中的有效条目时,被包含在高速缓存标头320中的元数据326中的一个是LBA(逻辑块地址)指针326或索引位置326,其中,高速缓存标头位置被记录在数据查找表330内。
易失性存储器24(或易失性存储器224)中的数据查找320中的逻辑块地址(LBA)的数量可以变化,如由点符号332示出的。在图3的示例中,逻辑块地址包括LBA_A、LBA_B、LBA_C至LBA_H和LBA_X以及LBA_nn。
数据查找330中的相应逻辑块地址条目(例如,LBA_nn)具有相应的指针值字段334。例如,如果条目LBA_nn中的字段334具有第一值(例如,逻辑0值),则条目LBA_nn包含高速缓存指针,并且如果条目LBA_nn中的字段334具有第二值(例如,逻辑1值),则条目LBA_nn包含PBA指针。
数据查找330可以例如被实现为表或列表。
数据查找330将LBA指针或索引映射到非易失性存储器PBA位置或易失性存储器位置。映射的一个实施例使用位字段来指示指针类型,例如,针对数据查找330的有效条目中的每一个的高速缓存ptr或PBA ptr。例如,数据查找330中的相应的给定逻辑块地址条目(例如,LBA_nn)具有相应的指针值字段334。作为示例,如果条目LBA_nn中的字段334具有第一值(例如,逻辑0值),则条目LBA_nn包含高速缓存指针,并且如果条目LBA_nn中的字段334具有第二值(例如,逻辑1值),则条目LBA_nn包含PBA指针。其他实施例同样是可允许的。
查找条目包含指向非易失性存储器28的PBA位置的指针或索引。
查找条目包含指向易失性存储器24的高速缓存标头位置的指针或索引。
注意到,在优选实施例或理想实施例中,包括所有可寻址高速缓存(易失性存储器24或易失性存储器224)和区段存储装置(非易失性存储器28或非易失性存储器228)的数据查找330的全部内容完全存储在易失性存储器24(或易失性存储器224)中。
替代实施例是当数据查找330也被部分地存储在非易失性存储器28(或非易失性存储器228)中时。
非易失性存储器28(或非易失性存储器228)中的区段340的数量可以变化,如由点符号342示出的。在图3的示例中,区段340包括区段340a、340b、340c至340j和340k。从CPU22的角度(或块222中的CPU元件的角度)来看,区段340是非易失性存储装置的基本单元。
易失性存储器24(或易失性存储器224)可以是例如SRAM或DRAM。在实施例中或在替代实施例中,易失性存储器24(或易失性存储器224)可以被进一步分类为高速存储器和/或高容量存储器。
非易失性存储器28(或非易失性存储器228)可以是例如闪速存储器。在实施例中或在替代实施例中,非易失性存储器28(或非易失性存储器228)可以被进一步分类为高速存储器。
本文参考图3和图4描述的各种方法提供了用于减少系统(例如,数据管理设备16或数据管理设备216)对请求的响应时间的新颖方式。
元件的交互——场景#1(高速缓存命中):
主机12将读取LBA请求发送到数据管理设备16。
在CPU 22接收到该请求之后,CPU 22使用数据查找330来检查与LBA(例如,LBA_X)相关联的指针360。
指针360是指向高速缓存标头320p的高速缓存指针,使得CPU 22设置IO控制器32以将与LBA_X相关联的高速缓存行(例如,高速缓存行310a)的内容发送到主机12。注意到,高速缓存标头320p包含将高速缓存标头320p与高速缓存行310a进行关联的元数据324a(例如,指针324a或索引位置324a)。
还注意到,读取LBA请求可以由数据管理设备222中的主机/CPU块222(图2)发送,并且执行与上文类似地讨论的过程相同的过程。
元件的交互——场景#2(高速缓存未命中——示例1):
1.主机12将读取LBA请求发送到数据管理设备16。
2.在CPU 22接收到该请求之后,CPU 22使用数据查找330来检查与LBA(例如,LBA_C)相关联的指针362。
3.指针362是指向非易失性存储器28中的区段340j的PBA指针,使得CPU 22设置非易失性存储器控制器38以将区段340j的内容发送到与高速缓存标头320u相关联的空闲高速缓存行(例如,高速缓存行310y)。注意到,高速缓存标头320u包含将高速缓存标头320u与高速缓存行310y进行关联的元数据324y(例如,指针324ay或索引位置324y)。
4.CPU 22设置IO控制器34以将与LBA_C相关联的高速缓存行310y的内容发送到主机12。
5.CPU 22进行以下操作:
a.在数据查找330中,CPU 22用与高速缓存标头320u和高速缓存行310y相关联的高速缓存指针来替换指向非易失性存储器28中的区段340j的PBA指针362。
b.CPU 22将指向非易失性存储器28中的区段340j的PBA指针保存在高速缓存标头320u中的字段364中的一个字段内。
c.CPU 22将LBA(在该情况下为LBA_C)保存在高速缓存标头320u中的字段368中的一个字段内。
因此,在IO控制器34将高速缓存行310y的内容发送到主机12之后,CPU 22更新高速缓存标头320的集合(例如,如上文针对高速缓存标头320u所讨论的)和数据查找330,如上文讨论的。
还注意到,读取LBA请求可以由数据管理设备222中的块222(图2)发送,并且执行与上文类似地讨论的过程相同的过程。
元件的交互——场景#3(高速缓存未命中——示例2):
1.主机12将读取LBA请求发送到数据管理设备16。
2.一旦CPU 22接收到该请求,则CPU 22使用数据查找330来检查与LBA(例如,LBA_H)相关联的指针370。
3.指针370是指向非易失性存储器28中的区段340a的PBA指针,使得CPU 22设置非易失性存储器控制器38以将区段340a的内容发送到与高速缓存标头320p相关联的被释放的高速缓存行310a。
a.在其中高速缓存标头的集合在链表中排列并且实现LRU(近期最少使用的)高速缓存逐出策略的实施例中,与高速缓存标头320p相关联的被释放的高速缓存行310a被选择,这是因为高速缓存标头320p是链表的头部(参见图4中的高速缓存标头320p),并且因此是近期最少使用的。
b.为了释放与高速缓存标头320p相关联的高速缓存行310a,记录为高速缓存标头320p中的元数据的PBA ptr在数据查找330中被保存在与LBA ptr相关联的位置(在该情况下为LBA_X)中,LBA ptr被记录为高速缓存标头320p中的元数据。
c.前述高速缓存标头320p也将从链表中被移除,但保持作为浮动节点。
4.CPU 22设置IO控制器34以将与LBA_H相关联的高速缓存行310a的内容发送到主机12。
5.CPU 22进行以下操作:
a.在数据查找330中,CPU 22用与高速缓存标头320p和高速缓存行310a相关联的高速缓存指针来替换指向非易失性存储器28中的区段340j的PBA指针。
b.CPU 22将指向非易失性存储器28中的区段340j的PBA指针保存在高速缓存标头320p(图4)中的字段405中的一个字段(图4)内。
c.CPU 22将LBA(在该情况下为LBA_H)保存在高速缓存标头320p(图4)中的字段410中的一个字段(图4)内。
d.在其中高速缓存标头的集合在链表中排列并且实现LRU(近期最少使用的)高速缓存逐出策略的实施例中,CPU 22将高速缓存标头320p置于链表320的尾部,使得前述高速缓存标头320p成为最近期使用的。
6.其他高速缓存逐出策略可以在本发明的替代实施例中实现。
还注意到,读取LBA请求可以由数据管理设备216中的块222(图2)发送,并且执行与上文类似地讨论的过程相同的过程。
图5是根据本发明的实施例的方法500的流程图。
在505处,中央处理单元(CPU)接收命令(例如,数据处理命令)。
在510处,CPU评估命令。
方法500然后可以执行框515或框520中的步骤。
如果方法在执行框510中的步骤之后执行框515中的步骤,则方法500根据以下前进。在515处,CPU执行数据软件辅助以执行命令。
在520处,响应于数据软件辅助执行命令,CPU对命令做出响应。
如果方法在执行框510中的步骤之后执行框525中的步骤,则方法500根据以下前进。在525处,CPU激活硬件加速器模块以执行命令。
在530处,响应于硬件加速器模块执行命令,CPU对命令做出响应。
注意到,易失性存储器24的一个实施例是NVRAM并且相关联的易失性存储器控制器36是NVRAM控制器。虽然名称与直觉相反,但NVRAM还提供与易失性存储器相同的功能。在该情况下,数据的持久性被内置在NVRAM本身中,并且能量存储库26可以不是必要的。
本文使用词语“示例性”(或“示例”)来意指用作示例、实例或说明。本文描述为“示例性”或“示例”的任何方面或实施例或设计不一定被解释为优选的或与其他方面或实施例或设计相比具有优势。类似地,本文仅出于清楚和理解的目的提供示例,并且示例不旨在以任何方式限制主题创新或其部分。应当意识到,可以呈现大量的附加或替代示例,但是出于简洁的目的和/或出于聚焦于主题创新的细节的目的将其省略。
如本文使用的,术语“组件”、“系统”、“模块”、“元件”和/或类似的术语旨在指代计算机相关的实体,其是硬件、硬件和软件的组合、软件或执行中的软件。例如,组件或元件可以是但不限于在处理器上运行的进程、处理器、对象、实例、可执行文件、执行线程、程序和/或计算机。通过示例的方式,在计算机上运行的应用和计算机二者都可以是组件。一个或多个组件可以驻留在进程和/或执行线程内,并且组件可以位于一台计算机上和/或分布在两台或更多台计算机之间。
本发明的前述实施例作为说明和描述提供。这些实施例不旨在将本发明限于所描述的精确形式。具体而言,设想可以用硬件、软件、固件和/或其他可用功能组件或构件块来等同地实现本文描述的发明的功能实现方式,并且网络可以是有线的、无线的或者有线和无线的组合。
同样在本发明的范围内的是实现可以存储在非暂态机器可读介质(或非暂时性机器可读介质或非暂态计算机可读介质或非暂时性计算机可读介质)中的程序或代码,该非暂态机器可读介质上存储有允许方法(或允许计算机)执行上文描述的创新技术中的任一种的指令,或者实现可以存储在包括非暂态计算机可读介质(非暂时性计算机可读介质)的制品中的程序或代码,该非暂态计算机可读介质上存储有用于执行创新技术的实施例的计算机可读指令。根据本文讨论的教导,上文描述的实施例和方法的其他变型和修改是可能的。
本发明所示出的实施例的以上描述(包括在摘要中描述的内容)并非旨在穷举或将本发明限于所公开的精确形式。虽然本文出于说明的目的描述了本发明的具体实施例和示例,但是如相关领域技术人员将认识到的,在本发明的范围内各种等同修改是可能的。
根据以上具体实施方式,可以对本发明进行这些修改。所附权利要求中使用的术语不应当被解释为将本发明限于说明书和权利要求书中公开的具体实施例。相反,本发明的范围完全要由所附权利要求确定,权利要求应根据权利要求解释的所建立的原则来解释。
Claims (36)
1.一种装置,包括:
中央处理单元(CPU);
易失性存储器控制器;
非易失性存储器控制器;
易失性存储器,其耦合到所述易失性存储器控制器;以及
非易失性存储器,其耦合到所述非易失性存储器控制器;
其中,所述非易失性存储器与所述易失性存储器的比率远小于典型比率。
2.根据权利要求1所述的装置,其中,所述比率小于大约500。
3.根据权利要求1所述的装置,其中,所述比率小于大约125。
4.根据权利要求1所述的装置,还包括:
数据软件系统辅助,其被配置为在所述CPU上运行并且被配置为增强至少一个数据软件系统。
5.根据权利要求1所述的装置,还包括:
硬件加速器模块,其被配置为增强至少一个数据软件系统。
6.根据权利要求1所述的装置,其中,所述CPU经由链路耦合到主机。
7.根据权利要求1所述的装置,其中,所述CPU被包括在块中,并且其中,所述块执行与主机类似的操作。
8.根据权利要求1所述的装置,其中,所述CPU执行数据软件辅助以执行命令。
9.根据权利要求1所述的装置,其中,所述CPU激活硬件加速器模块以执行命令。
10.根据权利要求1所述的装置,其中,在高速缓存命中期间,响应于读取LBA请求,所述CPU针对与逻辑块地址(LBA)相关联的指针来检查数据查找,并且发送与所述LBA相关联的高速缓存行的内容,其中,所述指针指向高速缓存标头,并且其中,所述高速缓存标头与高速缓存行相关联。
11.根据权利要求1所述的装置,其中,在高速缓存未命中期间,响应于读取LBA请求,所述CPU设置所述非易失性存储器控制器以将所述非易失性存储器中的区段中的内容发送到与高速缓存标头相关联的空闲高速缓存行,并且发送所述空闲高速缓存行中的所述内容。
12.根据权利要求1所述的装置,其中,在高速缓存未命中期间,响应于读取LBA请求,所述CPU设置所述非易失性存储器控制器以将所述非易失性存储器中的区段中的内容发送到与高速缓存标头相关联的空闲高速缓存行,并且发送所述空闲高速缓存行中的所述内容,并且根据所述装置的高速缓存逐出策略将所述高速缓存标头放置在列表中的位置处。
13.一种方法,包括:
由中央处理单元(CPU)接收命令;
由所述CPU评估所述命令;
由所述CPU执行数据软件辅助以执行所述命令,或者由所述CPU激活硬件加速器模块以执行所述命令;以及
由所述CPU对所述命令做出响应。
14.根据权利要求13所述的方法,其中,所述命令包括数据处理命令。
15.根据权利要求13所述的方法,其中,所述CPU被包括在装置中,并且其中,所述装置包括非易失性存储器与易失性存储器的比率,所述比率远小于典型比率。
16.根据权利要求15所述的方法,其中,所述比率小于大约500。
17.根据权利要求15所述的方法,其中,所述比率小于大约125。
18.根据权利要求13所述的方法,其中,数据软件系统辅助被配置为在所述CPU上运行并且被配置为增强至少一个数据软件系统。
19.根据权利要求13所述的方法,其中,所述硬件加速器模块被配置为增强至少一个数据软件系统。
20.根据权利要求13所述的方法,其中,所述CPU经由链路耦合到主机。
21.根据权利要求13所述的方法,其中,所述CPU被包括在块中,并且其中,所述块执行与主机类似的操作。
22.根据权利要求13所述的方法,其中,在高速缓存命中期间,响应于读取LBA请求,所述CPU针对与逻辑块地址(LBA)相关联的指针来检查数据查找,并且发送与所述LBA相关联的高速缓存行的内容,其中,所述指针指向高速缓存标头,并且其中,所述高速缓存标头与高速缓存行相关联。
23.根据权利要求13所述的方法,其中,在高速缓存未命中期间,响应于读取LBA请求,所述CPU设置非易失性存储器控制器以将非易失性存储器中的区段中的内容发送到与高速缓存标头相关联的空闲高速缓存行,并且发送所述空闲高速缓存行中的所述内容。
24.根据权利要求13所述的方法,其中,在高速缓存未命中期间,响应于读取LBA请求,所述CPU设置非易失性存储器控制器以将非易失性存储器中的区段中的内容发送到与高速缓存标头相关联的空闲高速缓存行,并且发送所述空闲高速缓存行中的所述内容,并且根据装置的高速缓存逐出策略将所述高速缓存标头放置在列表中的位置处。
25.一种制品,包括:
非暂时性计算机可读介质,其上存储有指令,所述指令可操作以允许装置执行包括以下操作的方法:
由中央处理单元(CPU)接收命令;
由所述CPU评估所述命令;
由所述CPU执行数据软件辅助以执行所述命令,或者由所述CPU激活硬件加速器模块以执行所述命令;以及
由所述CPU对所述命令做出响应。
26.根据权利要求25所述的制品,其中,所述命令包括数据处理命令。
27.根据权利要求25所述的制品,其中,所述CPU被包括在所述装置中,并且其中,所述装置包括非易失性存储器与易失性存储器的比率,所述比率远小于典型比率。
28.根据权利要求27所述的制品,其中,所述比率小于大约500。
29.根据权利要求27所述的制品,其中,所述比率小于大约125。
30.根据权利要求25所述的制品,其中,数据软件系统辅助被配置为在所述CPU上运行并且被配置为增强至少一个数据软件系统。
31.根据权利要求25所述的制品,其中,所述硬件加速器模块被配置为增强至少一个数据软件系统。
32.根据权利要求25所述的制品,其中,所述CPU经由链路耦合到主机。
33.根据权利要求25所述的制品,其中,所述CPU被包括在块中,并且其中,所述块执行与主机类似的操作。
34.根据权利要求25所述的制品,其中,在高速缓存命中期间,响应于读取LBA请求,所述CPU针对与逻辑块地址(LBA)相关联的指针来检查数据查找,并且发送与所述LBA相关联的高速缓存行的内容,其中,所述指针指向高速缓存标头,并且其中,所述高速缓存标头与高速缓存行相关联。
35.根据权利要求25所述的制品,其中,在高速缓存未命中期间,响应于读取LBA请求,所述CPU设置非易失性存储器控制器以将非易失性存储器中的区段中的内容发送到与高速缓存标头相关联的空闲高速缓存行,并且发送所述空闲高速缓存行中的所述内容。
36.根据权利要求25所述的制品,其中,在高速缓存未命中期间,响应于读取LBA请求,所述CPU设置非易失性存储器控制器以将非易失性存储器中的区段中的内容发送到与高速缓存标头相关联的空闲高速缓存行,并且发送所述空闲高速缓存行中的所述内容,并且根据所述装置的高速缓存逐出策略将所述高速缓存标头放置在列表中的位置处。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762526472P | 2017-06-29 | 2017-06-29 | |
US62/526,472 | 2017-06-29 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109254794A true CN109254794A (zh) | 2019-01-22 |
Family
ID=65051896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810697220.2A Pending CN109254794A (zh) | 2017-06-29 | 2018-06-29 | 数据软件系统辅助 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20190155735A1 (zh) |
CN (1) | CN109254794A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11210225B2 (en) * | 2019-11-25 | 2021-12-28 | Micron Technology, Inc. | Pre-fetch for memory sub-system with cache where the pre-fetch does not send data and response signal to host |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8433695B2 (en) * | 2010-07-02 | 2013-04-30 | Futurewei Technologies, Inc. | System architecture for integrated hierarchical query processing for key/value stores |
JP5907739B2 (ja) * | 2012-01-26 | 2016-04-26 | 株式会社日立製作所 | 不揮発性記憶装置 |
US8706971B1 (en) * | 2012-03-14 | 2014-04-22 | Netapp, Inc. | Caching and deduplication of data blocks in cache memory |
JP6431536B2 (ja) * | 2013-10-21 | 2018-11-28 | マーベル インターナショナル リミテッド | 最終レベルキャッシュシステム及び対応する方法 |
US10129361B2 (en) * | 2015-07-01 | 2018-11-13 | Oracle International Corporation | System and method for multi-version remote function execution control in a distributed computing environment |
US20170286507A1 (en) * | 2015-07-22 | 2017-10-05 | Hitachi, Ltd. | Database search system and database search method |
US9852060B2 (en) * | 2016-03-31 | 2017-12-26 | Dell Products L.P. | Storage class memory (SCM) memory mode cache system |
US10108342B2 (en) * | 2016-06-22 | 2018-10-23 | Storart Technology Co. Ltd. | Method for reducing use of DRAM in SSD and the SSD using the same |
US20180024928A1 (en) * | 2016-07-19 | 2018-01-25 | Sap Se | Modified query execution plans in hybrid memory systems for in-memory databases |
US11010300B2 (en) * | 2017-05-04 | 2021-05-18 | Hewlett Packard Enterprise Development Lp | Optimized record lookups |
-
2018
- 2018-06-29 CN CN201810697220.2A patent/CN109254794A/zh active Pending
- 2018-06-29 US US16/024,728 patent/US20190155735A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20190155735A1 (en) | 2019-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108804031B (zh) | 最佳记录查找 | |
CN108009008B (zh) | 数据处理方法和系统、电子设备 | |
KR102459964B1 (ko) | 가상 메모리 용량을 제공하는 메모리 모듈 및 그것의 동작 방법 | |
US10152428B1 (en) | Virtual memory service levels | |
US10310997B2 (en) | System and method for dynamically allocating memory to hold pending write requests | |
EP2798502B1 (en) | Data migration for composite non-volatile storage device | |
US9489239B2 (en) | Systems and methods to manage tiered cache data storage | |
US20110276746A1 (en) | Caching storage adapter architecture | |
US9501419B2 (en) | Apparatus, systems, and methods for providing a memory efficient cache | |
US20180165214A1 (en) | Dynamic cache bypassing | |
US20070079070A1 (en) | Cache controller | |
CN110413211B (zh) | 存储管理方法、电子设备以及计算机可读介质 | |
US20140372673A1 (en) | Information processing apparatus, control circuit, and control method | |
US11803468B2 (en) | Data storage system with write back cache | |
US9195658B2 (en) | Managing direct attached cache and remote shared cache | |
CN113407120B (zh) | 基于hmb的映射表管理方法、装置及计算机设备 | |
US8732404B2 (en) | Method and apparatus for managing buffer cache to perform page replacement by using reference time information regarding time at which page is referred to | |
CN109254794A (zh) | 数据软件系统辅助 | |
US20150121033A1 (en) | Information processing apparatus and data transfer control method | |
US10733118B2 (en) | Computer system, communication device, and storage control method with DMA transfer of data | |
US20150052310A1 (en) | Cache device and control method thereof | |
CN108228104B (zh) | 数据传输方法及固态硬盘控制器 | |
US9280485B2 (en) | Efficient cache volume sit scans | |
CN106155583B (zh) | 缓存固态设备读取请求结果的系统和方法 | |
US20180329756A1 (en) | Distributed processing system, distributed processing method, and storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190122 |