CN108733585A - 缓存系统及相关方法 - Google Patents
缓存系统及相关方法 Download PDFInfo
- Publication number
- CN108733585A CN108733585A CN201710250202.5A CN201710250202A CN108733585A CN 108733585 A CN108733585 A CN 108733585A CN 201710250202 A CN201710250202 A CN 201710250202A CN 108733585 A CN108733585 A CN 108733585A
- Authority
- CN
- China
- Prior art keywords
- requests
- pending
- caching system
- module
- type
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- 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/0877—Cache access modes
- G06F12/0884—Parallel mode, e.g. in parallel with main memory or CPU
-
- 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/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
-
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/30—Providing cache or TLB in specific location of a processing system
- G06F2212/303—In peripheral interface, e.g. I/O adapter or channel
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开的实施例提供了缓存系统及相关方法。该缓存系统包括第一流水线模块,包括能够执行第一多个操作的第一多个顺序处理阶段。第一多个操作响应于针对持久性存储设备的第一多个类型的输入/输出I/O请求而被执行,并且第一多个操作中每个操作是第一多个类型的I/O请求中的至少两个类型的I/O请求的公共操作。缓存系统还包括控制模块,被配置为确定针对持久性存储设备的第一待处理I/O请求的第一类型,以及响应于第一类型为第一多个类型之一,使得第一流水线模块被执行以处理第一待处理I/O请求。
Description
技术领域
本公开的实施例涉及数据存储领域,并且更具体地,涉及缓存系统及其中方法。
背景技术
数据存储系统可以在客户端(也被称为主机)与持久性存储设备之间设置缓存存储器(cache memory),用于暂时性存储数据。这样的缓存存储器可以被称为用于持久性存储设备的缓存存储器。与被包含在处理器(例如,中央处理单元(CPU))中用于促进CPU的指令执行的缓存不同,用于持久性存储设备的缓存存储器旨在于提高客户端对持久性存储设备的读写速度。具体地,缓存存储器接收来自客户端的针对持久性存储设备的输入/输出(I/O)请求,并且响应于该请求,将要被写入到持久性存储设备的数据的副本暂时性地存储或者将其缓存的持久性存储设备的数据的副本读取给客户端。当缓存存储器已经存储客户端的数据副本或者向客户端提供其缓存的数据副本,可以认为I/O请求被成功处理。由于缓存存储器的访问速度通常高于持久性存储设备,因此这极大地提高了数据存储系统的读写性能。
在常规的缓存存储器中实施有许多机制和线程(thread),用于处理不同类型的I/O请求。线程上下文开销、系统复杂度和可扩展性将是影响缓存存储器的性能的因素。因此,需要对缓存存储器的进一步改进以便提升缓存存储器和数据存储系统的总体性能。
发明内容
本公开的实施例提供了一种改进的缓存方案。
在本公开的第一方面中,提供了一种缓存系统。该缓存系统包括第一流水线模块,包括能够执行第一多个操作的第一多个顺序处理阶段。第一多个操作响应于针对持久性存储设备的第一多个类型的输入/输出I/O请求而被执行,并且第一多个操作中每个操作是第一多个类型的I/O请求中的至少两个类型的I/O请求的公共操作。缓存系统还包括控制模块,被配置为确定针对持久性存储设备的第一待处理I/O请求的第一类型,以及响应于第一类型为第一多个类型之一,使得第一流水线模块被执行以处理第一待处理I/O请求。
在本公开的第二方面中,提供了一种用于缓存系统的方法。缓存系统与持久性存储设备相关联。该方法包括接收针对持久性存储设备的第一待处理输入/输出I/O请求。缓存系统包括第一流水线模块,第一流水线模块包括能够执行第一多个操作的第一多个顺序处理阶段。第一多个操作响应于针对持久性存储设备的第一多个类型的输入/输出I/O请求而被执行,并且第一多个操作中每个操作是第一多个类型的I/O请求中的至少两个类型的I/O请求的公共操作。该方法还包括确定第一待处理I/O请求的第一类型。该方法进一步包括响应于第一类型为第一多个类型之一,使得第一流水线模块被执行以处理第一待处理I/O请求。
在本公开的第三方面中,提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令在被执行时使设备执行根据第二方面的方法。
提供发明内容部分是为了简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或主要特征,也无意限制本公开的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
图1示出了本公开的实施例可以在其中被实现的数据存储场景的示意图;
图2示出了常规的缓存系统的结构框图;
图3示出了一般流水线模块的示意图;
图4示出了根据本公开的一个实施例的缓存系统的结构框图;
图5A示出了根据本公开的一个实施例的流水线模块的示意图;
图5B示出了根据本公开的一个实施例在流水线模块中的空等阶段的添加的示意图;
图6示出了根据本公开的另一个实施例的缓存系统的结构框图;以及
图7示出了根据一个实施例的用于缓存系统的过程的流程图。
具体实施方式
下面将参考附图中示出的若干示例实施例来描述本公开的原理。虽然附图中显示了本公开的优选实施例,但应当理解,描述这些实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。
如以上提及的,在数据存储场景中,为了提高客户端对存储设备、特别是持久性存储设备的读写速度,可以在客户端与持久性存储设备之间设置一个或多个缓存系统。在缓存系统中,可以缓存客户端要写入到持久性存储设备的数据的副本或者客户端从持久性存储设备读取出的数据的副本。因为客户端对与持久性存储设备的读写访问是持续过程,这样的读写过程可能会重复地读和/或写某些数据,将这部分数据的副本缓存在具有更高访问速度的缓存系统中有利于加速读写访问速度。
图1图示了本公开的实施例可以在其中被实现的数据存储场景100的示意图。如图所示,多个客户端110-1和110-2(以下统称或单独称为客户端110)中的每个可以对持久性存储设备140-1和140-2(以下统称或单独称为持久性存储设备140)中的一个或多个进行读写访问,以向持久性存储设备140写入数据或者从其中读取数据。持久性存储设备140可以在时间上持久和非易失性地存储数据并且在关机后也不会丢失所存储的数据。这样的持久性存储设备140的示例可以包括但不限于数字通用盘(DVD)、蓝光盘(BD)、光盘(CD)、软盘、硬盘、磁带驱动、光学驱动、固态存储器设备(SSD)、磁盘冗余阵列(RAID)或其他持久性存储设备。在一些实施例中,持久性存储设备140可以组成客户端110的专用存储系统。
客户端110可以通过输入/输出(I/O)请求来请求对持久性存储设备140的读写访问。I/O请求可以先由被设置在客户端110与持久性存储设备140之间的缓存部分130来处理。缓存部分130包括缓存存储器120-1。缓存存储器120-1具有存储空间用于缓存持久性存储设备140的部分数据。缓存存储器120-1可以是各种可以提供高速缓存能力的存储装置或可读介质。在一些实施例中,缓存存储器120-1可以是多核缓存存储器,用于进一步提高访问速度。
在接收到I/O请求之后,如果该I/O请求涉及向持久性存储设备140写入数据,缓存存储器120-1可以首先缓存该数据,并且向客户端110发送写入成功的响应。缓存存储器120-1然后在一段时间后将所缓存的数据写入到持久性存储设备140。如果I/O请求涉及从持久性存储设备140读取数据,缓存存储器120-1可以首先查找要被读取的数据是否被缓存。如果被缓存,则由缓存存储器120-1直接向客户端110提供所要求的数据,而不需要访问持久性存储设备140。如果未被缓存,缓存存储器120-1可以从持久性存储设备140读取数据、将数据提供给客户端设备110并且还可以将该部分数据缓存以供后续的读取。对于缓存存储器120-1而言,持久性存储设备140也可以被称为后端存储设备。
在读写客户端与持久性存储设备之间设置缓存存储器可以提升整个数据存储系统的性能,其带来的优势至少可以包括以下方面:
首先,由于缓存存储器的响应速度往往高于持久性存储设备,因此可以显著地缩减客户端设备的读写速度。例如,在写数据的操作中,客户端设备可以更快地确认数据是否被成功写入;在读数据的操作中,无需访问持久性存储设备而从缓存存储器更快获得数据。
其次,缓存存储器还可以预测客户端设备后续可能会读取的数据,并且在被客户端设备请求之前将该数据从持久性存储设备中读取出来并且缓存。这在例如客户端设备进行顺序读写时将非常有利。
第三,缓存存储器可以为客户端提供具有原子性、一致性、隔离性和持久性(ACID)属性的事务性读取和写入。例如,在一些情况中,在图1的示例中,缓存部分130还可以包括另一个缓存存储器120-2作为缓存存储器120-1的对端。缓存存储器120-2可以存储缓存存储器120-1所缓存的数据的镜像。这可以确保缓存数据的冗余,提供持久性。缓存存储器120-1与120-2之间可以通过各种接口互连,例如外部部件互连Express(PCIe)等。缓存存储器120-1和120-2可以是相同或相似的缓存设备,并且在本文中可以被统称为缓存存储器120。
此外,缓存存储器还可以降低对持久性存储设备的I/O访问数量。例如,缓存存储器可以将客户端通过多个I/O请求写入的数据合并起来并且写入到持久性存储设备。缓存存储器还可以通过直接为客户端提供所缓存的数据来减少从持久性存储设备不断读取出相同数据的次数。而且,缓存存储器还可以通过以逻辑块寻址(LBA)顺序对持久性存储设备进行写入,从而增加持久性存储设备的吞吐量。
要注意,本文所讨论的缓存存储器被设置在客户端与持久性存储设备之间,这不同于被包含在处理器中的缓存。一般,处理器中的缓存被称为一级缓存,用于加速处理器的指令执行和处理器与内存之间的信息传输。与持久性存储设备相关联的缓存存储器可以被称为二级缓存,其用于提高客户端对持久性存储设备的读写访问。
应当理解,图1仅被示出作为数据存储场景的示例。客户端110可以是独立的终端设备或服务器,其具有读写数据的能力,而缓存部分130和/或持久性存储设备140可以是客户端110的外部设备。一个或多个客户端110可以通过缓存部分130和/或持久性存储设备140实现数据读写访问。在另外一些实施例中,数据存储场景100可以组成单个通用计算系统,并且客户端110可以是该计算系统内具有数据读写访问能力的部件。还应当理解,图1示出的场景布置仅仅是示例。在另外一些场景中,可以存在更多或更少的实体。例如,可以存在更多或更少的客户端、更多或更少的持久性存储设备。
为了实现缓存,常规的缓存存储器中布置有多种线程、程序模块等组件用于处理I/O请求、管理本地缓存和实现对后端存储设备的访问。这些操作过程将影响缓存存储器的性能。图2示出了一种常规的缓存存储器120的示例组件的框图。缓存存储器120包括动作方(actor)部分210,包括用于处理各种类型的I/O请求的一系列操作。例如,部分210可以包括针对读请求的动作方、针对写请求的动作方、针对零填充请求的动作方、针对预取请求的动作方和针对数据移除的动作方等等。每个动作方具有多个状态并且等待接收和处理相应类型的I/O请求。每个动作方可以在相应的线程中被执行。
动作方230在处理相应I/O请求时将会需要使用、访问缓存资源230,以便完成处理。缓存存储器120的缓存资源230由引用管理器220来管理。缓存存储器120的缓存空间可以被划分为缓存块的集合232来存储客户端要访问的数据。这样的缓存块232也可以被称为缓存页面232。为了方便管理,在一些缓存方案中,还设置与缓存页面的集合232对应的缓存引用(cache reference)的集合234。每个缓存引用234是一个缓存页面232的基本管理单元,用于记录缓存页面232的数据的状态、是否被访问、是否被改变等等。缓存页面232和缓存引用234都是有限的,均可以被称为缓存资源230。
缓存存储器120还包括后端处理250,用于执行对后端持久性存储设备140的读写访问。如以上提及的,对于来自客户端110的写操作,缓存存储器120在缓存写入的数据和向客户端110提供对I/O请求的响应之外,还可以在将一段时间后将缓存的写入数据(在一些情况下是从多个I/O请求合并的数据)存储入持久性存储设备140。对于读操作,缓存存储器120中如果不存在对应的缓存数据,则要从持久性存储设备140读取出对应的数据以用于缓存。对于后端持久性存储设备140的读写访问将通过缓存存储器120发出的后端I/O请求来执行。这部分将由后端处理250实现。
在常规的缓存存储器架构中,由于不同的动作方210、引用管理器220和后端处理250都在不同的线程中执行对应的功能,并且因此将会出现过多的线程上下文(threadcontext)切换,这是耗费时间的过程。特别是在缓存存储器响应于I/O请求的本端处理(也被称为前端处理)与访问持久性存储设备的后端处理之间是完全不相关的,线程上下文切换非常耗时。此外,不同类型的I/O请求将要被调度给不同的动作方210执行处理,这增加了系统的复杂度和维护难度,并且也降低了系统的可扩展性和性能增强能力。例如,如果在某段时间,来自客户端的某种类型的I/O请求过多,那么对应的动作方210无法快速地处理请求,显著降低访问速度。如果期望缓存存储器120处理新类型的I/O请求,则需要添加新的动作方用于专门处理。
为了解决上述问题和其他潜在问题中的至少一些问题,本公开的实施例提出了一种缓存系统的方案。根据本公开的实施例的方案,在客户端与持久性存储设备之间的缓存系统中引用流水线(pipeline)模块。流水线模块包括多个顺序处理阶段,分别用于执行多个操作。这些操作响应于多个类型的I/O请求而被执行,并且其中每个操作是多个类型的I/O请求中的至少两个类型的I/O请求的公共操作。由此可见,该流水线模块可以以流水线方式处理各种类型的I/O请求。这使得缓存系统可以以更快的速度处理到来的I/O请求,显著地提高缓存系统的性能。
在具体讨论本公开的方案之前,介绍流水线处理的一些概念。流水线在计算机领域中指的是顺序连接的一组处理阶段,其中前一个处理阶段的输出是后一个处理阶段的输入。流水线中的一些或所有处理单元通常以并行或者时分的方式被执行。图3示出了一个处理流水线300的示意图。该流水线300包括多个处理阶段1、2、3……,分别被标记为310、320、330……,等等。在流水线300中,处理阶段310的输出是处理阶段320的输入,并且处理阶段320的输出是后续处理阶段330的输入,等等。
流水线处理通常将一个大的处理任务划分为多个基本的小处理阶段,每个处理阶段用于执行该任务中的一个操作。当前,流水线处理被应用在计算设备的处理器中,用于促进处理器的指令执行。例如,处理器可以将基本指令循环划分为一系列的处理阶段(即,流水线)。处理器可以不用按顺序完成一个指令之外再开始执行下一指令,而是可以同时开始多个指令的执行。例如,当第一指令的一个操作正由流水线的第二处理阶段执行时,可以由流水线的第一处理阶段开始第二指令的对应操作。通过碎片化执行指令的操作,可以使得处理器的处理资源得到最大限度的使用。流水线的一个目标在于使得处理器的每个部分总是在处理指令。这可以有效地增加处理器的吞吐量。
在本公开的实施例中,借鉴流水线的概念,以提高缓存存储器对持久性存储设备的读写访问。以下将详细讨论本公开的示例实现。
图4示出了根据本公开的一个实施例的缓存系统400的结构框图。缓存系统400可以被实施在如图1所示的缓存存储器120处。缓存系统400可以与一个或多个持久性存储设备或系统(未示出)相关联,用于加速客户端对相关联的持久性存储设备的读写访问。这样的持久性存储设备可以例如图1所示的持久性存储设备140。缓存系统400可以缓存持久性存储设备140中已存储或者将要被写入的一部分数据的副本。
如图4所示,缓存系统400包括控制模块410、流水线模块420和缓存资源430。流水线模块420包括能够执行多个操作的多个顺序处理阶段,其中每个顺序处理阶段能够执行多个操作中的一个。这些操作是缓存系统400响应于针对持久性存储设备的多个类型的I/O请求而被执行。在一个流水线中,处理阶段按顺序排列,因此前一处理阶段的输出可以作为后一处理阶段的输入以用于继续处理。
在一些实施例中,用于创建流水线模块420的I/O请求可以来自于可访问缓存系统400以及与缓存系统400相关联的持久性存储设备,的类型可以包括以下中的多个请求:读请求、写请求、零填充(zero fill)请求、预取(prefetch)请求和数据移除请求。读请求涉及客户端对持久性存储设备中所存储的数据的读取,并且因此可以包括要读取的数据的访问地址(物理地址和/或逻辑地址)等信息。写请求涉及客户端要将数据写入到持久性存储设备,并且因此可以包括要写入的数据以及在一些情况中包括数据要被写入的地址(物理地址和/或逻辑地址)。零填充请求指的是要向持久性存储设备的部分存储空间写入全零信息,属于写操作。
预取请求要求缓存系统400从相关联的持久性存储设备预测和提取从持久性存储设备缓存数据,从而方便后续客户端直接从缓存系统400快速获得缓存数据,因此属于读操作。这样的预取请求可以发生在例如客户端正在进行顺序读取时。当然,在一些使用情况中也可能发生预取请求。此外,缓存系统400还可以接收数据移除请求,用于移除持久性存储设备中的数据。为了完成数据移除请求,也将涉及一系列的读写操作。应当理解,上述仅给出了I/O请求的一些示例类型。在其他实现中,还可以根据其他类型的I/O请求来设置流水线模块。此外,某个或某些类型的I/O请求还可以根据其特性而被划分为两个或更多细分的类型。本公开的实现在此方面不受限制。
在本公开的实施例中,为了构建流水线模块420,可以分析不同类型的I/O请求,并且将这些I/O请求涉及的总体处理划分为细粒度的操作。然后构建相应的处理阶段来执行对应的操作。为了实现在流水线中处理不同类型的I/O请求,可以分析出将这些I/O请求中两个或更多类型的请求涉及的公共操作,并且为公共操作创建对应处理阶段。也就说,处理阶段要执行的操作中的每个操作都是多个类型的I/O请求中的至少两个类型的I/O请求的公共操作。在一些实施例中,流水线模块420能够执行的请求可以是针对全部多个类型的I/O请求的公共操作。在缓存系统中,虽然不同类型的I/O请求的目标不同,但是它们可能均涉及一些共同的操作,诸如“分配缓存请求结构”、“获得引用的访问”、“预留缓存页面”等等。以上仅的共同操作仅是示例,在实际实践中,可以根据不同要求和具体缓存系统对I/O请求的特定处理过程来划分操作。本公开的实现在此方面不受限制。
在一些实施例中,为了构建流水线的处理阶段,需要合理地划分执行I/O请求的操作过程。可以采用各种方式将不同I/O请求的操作过程划分为各种粒度的操作,并且为两个或更多类型的I/O请求的公共操作创建对应的处理阶段。流水线中的处理阶段的顺序与对I/O请求的不同操作的顺序相对应。在一些实施例中,所划分的操作可以是原子级的操作并且操作之间彼此不相关联,使得这些操作在流水线模块420中可以被执行。对于各个处理阶段与操作的划分和创建可以采用各种方式,本公开的范围在此方面不受限制。
在图4的缓存系统400中,控制模块410可以执行对流水线模块420和缓存资源430的控制和管理,例如执行调用、处理阶段选择、状态监测、资源调度等等,这将在以下详细讨论。缓存资源430至少包括缓存系统400中用于缓存数据的空间432。在一些实施例中,缓存空间432可以被划分为具有特定大小的多个缓存块(也可以被称为缓存页面)。在一些缓存结构中,缓存资源430还可以包括用于管理缓存空间或者各个缓存块的基本管理单元434,用于记录缓存页面432的数据的状态、是否被访问、是否被改变等等。这样的基本管理单元434在一些使用中也被称为缓存引用434。每个缓存引用434可以管理一个或多个缓存页面432。在一些实现中,缓存页面432的数据和/或缓存引用434可以以哈希表的形式被存储。
由于缓存系统400的缓存空间通常是有限的,因此缓存资源430、包括缓存页面432和缓存引用434都是有限的。在I/O请求的处理过程中,将会需要使用这些缓存资源430中的一些。应当理解,以上缓存页面和缓存引用等仅仅是缓存资源的一些示例。在缓存系统400中,可以被布置或设计其他缓存资源,用于实现数据缓存的目的。
在操作中,控制模块410可以充当流水线模块420的控制器。控制模块410可以接收到待处理I/O请求。例如,控制模块410可以从可访问缓存系统400的客户端接收待处理I/O请求。该待处理I/O请求是针对与缓存系统400相关的持久性存储设备的I/O请求,但是将由缓存系统400处理,以提高对I/O请求的响应速度。具体地,控制模块410可以确定待处理I/O请求的类型,以便确定该请求是否能够由缓存系统400中已经布置的流水线模块420执行。在一些实现中,控制模块410还可以确定I/O请求是否是有效I/O请求(例如是否访问非法存储地址等,所请求的地址或数据长度错误)。当I/O请求有效时,才调用流水线模块420执行处理。
如果控制模块410确定当前的待处理I/O请求的类型属于用于创建流水线模块420的I/O请求的类型,则可以使得流水线模块420被执行来处理该I/O请求。在一些实施例中,控制模块410可以将待处理I/O请求提供给流水线模块420,从而触发流水线模块420中各个处理阶段的执行。控制模块410还可以发送触发信号用于激活流水线模块420执行当前的I/O请求对应的操作。流水线模块420中的各个顺序处理阶段将执行对应的操作,从而实现对I/O请求的处理。
由于流水线模块420中可能存在一些对于某种类型的I/O请求而言无需执行的操作的处理阶段,在一些实施例中,控制模块410还可以为当前的待处理I/O请求选择处理阶段中的至少一个处理阶段。所选择的处理阶段能够执行缓存系统400响应于待处理I/O请求而执行的操作。控制模块410然后可以使得所选择的处理阶段针对该待处理I/O请求而被执行,并且使得流水线模块420中的其他处理阶段被跳过。对于被跳过的处理阶段,前一处理阶段的输出被透明地传输至该被跳过的处理阶段的下一阶段。也即,被跳过的处理阶段将不对前一阶段的输出执行处理。在一些实施例中,如果流水线模块420中的处理阶段要执行的所有操作对于多个类型的I/O请求都是公共的,那么则无需跳过阶段。
通常,所选择的处理阶段将按顺序执行针对I/O请求的相应操作。在执行过程中,如果某个处理阶段无法成功完成处理,在一些实现中,根据预定规则,可以从第一个被选择的处理阶段重新开始执行,以成功完成该I/O请求。
流水线模块420的处理是流水线式的,每个处理阶段在完成本身的操作之后就可用,而无需等待当前I/O请求的全部完成。因此,在一些实施例中,如果在对一个I/O请求(可称为第一I/O请求)的处理过程中,缓存系统400还接收到另一个待处理I/O请求(可称为第二I/O请求),并且控制模块410确定该第二待处理I/O请求的类型也属于用于创建流水线模块420的I/O请求的类型。在这种情况中,控制模块410还可以继续使得流水线模块420执行第二I/O请求的处理。
具体地,控制模块410确定在流水线模块420中当前正在由某个处理阶段执行与第一I/O请求对应的操作并且该处理阶段不是多个处理阶段中按顺序的第一个处理阶段(即之前还存在其他处理阶段)。然而,控制模块410可以使得流水线模块420被执行,以使用多个处理阶段中在正在执行其他I/O请求的操作的处理阶段之前的处理阶段来处理第二I/O请求。通过,按照流水线的顺序,将由为第二I/O请求选择的一个或多个处理阶段中按顺序的第一个处理阶段来执行对应的操作。通过这种方式,在单个流水线中,可以同时处理多个I/O请求的不同操作,提高了缓存系统400对I/O请求处理的吞吐量。
很多I/O请求都需要被分配相应的缓存资源430来进行处理,控制模块410可以控制将相应的缓存资源430调用给处理阶段,使得处理阶段能够完成执行。在一些实施例中,由于缓存资源430的资源是有限的,因此在流水线模块420的某个或某些处理阶段要被执行时,可能没有足够的可用资源供该处理阶段使用,因此处理阶段无法执行对应的操作。在一些示例中,在流水线模块420的执行期间,可以在处理阶段之间引入空等阶段。空等阶段将不具有足够可用缓存资源的处理阶段暂停预定时间段。在该时间段中,不执行操作。空等阶段的添加可以由控制模块410判断,也可以由处理阶段自己判断。需要执行该判断的资源通常是需要调用缓存资源的处理阶段。
具体地,控制模块410或者某个处理阶段可以确定当前缓存系统中可用于该处理阶段的缓存资源430(例如缓存引用434和/或缓存页面432等)低于预定阈值,则该处理阶段的执行将被暂停预定时间段。该预定时间段可以被配置。当确定可用缓存资源超过预定阈值时,该处理阶段可以被执行。预定阈值可以根据该处理阶段要执行的操作所需的缓存资源来设置。
图5A示出了流水线模块420中的处理阶段的一个示例,其中流水线模块420可以包括七个顺序处理阶段510至570。假设处理阶段530准备执行操作时,可用缓存资源430不足以支持它的操作,那么可以在处理阶段530之前并且在处理阶段520之后插入空等阶段522,如图5B所持。在空等阶段522期间,处理阶段530的执行被暂停。对于处理阶段530之后的处理阶段,如果不需要处理阶段530的输出来继续处理(例如后续一个或多个处理阶段正在执行其他I/O请求的处理并且无需被分配缓存资源)。应当理解,图5A和图5B仅示出了流水线模块420的示例,在其他示例中,可以存在更多的处理阶段并且在处理阶段之间也可以发生多个空等阶段。
在一些实施例中,流水线模块420中的多个处理阶段在同一线程中被执行。这避免了在不同线程之间切换将引起的线程上下文切换的开销。在一些实施例中,流水线模块420中可以仅包括对于I/O请求的前端处理的操作,也即不包括涉及对相关联的持久性存储设备的访问的操作。在这些实现中,缓存系统400还可以包括后端处理(未示出)的组件,用于实现在需要的情况下从持久性存储设备读取出数据或者向持久性存储设备写入数据。后端处理可以在与流水线模块420不同的另一线程中被完成。
备选地,由于多个类型的I/O请求可能都涉及对持久性存储设备的访问并且这些访问对应的操作往往在完全前端操作之后,在构建流水线模块420的过程中,还可以为与对持久性存储设备的访问有关的至少一个操作生成对应的处理阶段。将所生成的处理阶段与针对前端操作创建的过程合并成一个流水线(即流水线模块420)。
以上描述了在缓存系统400中包括单个流水线模块420时的示例实现。在上述描述的实施例中,控制模块410执行对到来的I/O请求的类型判断和流水线模块的执行触发。在另外一些实施例中,由于可能总是需要对接收到的待处理I/O请求执行类型判断,因此控制模块410的该部分功能也可以被认为是流水线机制的一个处理阶段。控制模块410还包括一部分执行资源调度的功能,这部分功能可以被认为是资源管理器。
应当理解,在一些情况中,流水线模块420可能仅被创建为处理一些类型的I/O请求的公共操作。缓存系统400还可以包括其他组件或功能模块(未被示出)用于执行对于各个I/O请求的独特操作。虽然对于某些I/O请求,仍然需要除了流水线模块之外的组件来实现,但是流水线模块的采用仍然加速了缓存系统400对于大量I/O请求的响应速度。在一些实现中,如果控制模块410确定接收到的待处理I/O请求的类型与已设置的流水线模块420所针对的I/O请求的类型不相同,则可以使用缓存系统400中的其他适当的组件来处理该特殊的I/O请求。
在另外一些实施例中,缓存系统400可以包括两个或更多流水线模块,每个流水线模块可以包括多个顺序处理阶段并且每个处理阶段能够执行多个操作中的一个操作。图6示出了这样的缓存系统的一个示例。图6的缓存系统可以被认为图4的缓存系统的一个具体示例。如图6所示,除了流水线模块420之外,缓存系统400还包括其他流水线模块622、624等等。这些流水线模块可以被组成缓存系统400的流水线处理部分602。每个流水线模块都能够以流水线的方式处理对应的I/O请求。
在一些实施例中,流水线处理部分602中的某个或某些流水线模块的顺序处理阶段执行的操作可以是缓存系统400响应于针对持久性存储设备的单个类型的I/O请求而被执行的操作。也就是说,可以为单个类型的I/O请求设置对应的流水线模块用于执行操作。备选地或附加地,流水线处理部分602中的某个或某些流水线模块可以是针对某个或某些类型的I/O请求的后端处理设置的流水线模块。流水线处理部分602中每个流水线模块的设置过程可以类似于以上关于流水线模块420所讨论的过程,只需要针对对应类型的I/O请求的操作过程来设置即可。对于涉及后端处理的流水线模块,也可以针对对应类型的I/O请求相关联的后端处理过程来设置。在一些实施例中,为某个或某些类型的I/O请求设置两个以上的流水线模块也是可能的。
在操作中,控制模块410在接收到待处理I/O请求时,可以确定待处理I/O请求的类型与用于设置流水线处理部分602中的哪个流水线模块的I/O请求的类型相同,并且然后调用具有相同类型的流水线模块来执行该I/O请求。多个流水线模块的操作是并行的。也就是说,即使一个流水线模块正在执行一个或多个I/O请求的操作,调度模块410也可以使得其他流水线模块被执行以处理另外的一个或多个I/O请求。通过设置多个流水线模块,可以避免单个流水线模块中由于资源冲突等问题导致的拥堵,从而使得缓存系统400更适于快速处理更多的I/O请求、降低了响应时间、提高了性能。
在一些实施例中,由于流水线处理部分602中的多个流水线模块中的某些处理阶段均要被分配缓存系统400的缓存资源430。由于缓存资源430的有限性,期望当多个处理阶段均竞争缓存资源时,将缓存资源优先分配给对高优先级的流水线模块。流水线模块的优先级可以与其能够执行的I/O请求的类型相关联。在一些示例中,能够处理对时延要求较高的I/O请求的流水线模块可以被分配相对高的优先级,并且用于处理对时延要求相对低的I/O请求的流水线模块可以被分配相对低的优先级。除了I/O请求的时延要求之外或者作为备选,流水线模块的优先级还可以基于其他因素来确定,诸如相应流水线模块中的处理阶段的复杂度等等。例如,对于来自客户端的实时读或写请求,对时延的要求往往较高,并且因此用于处理这些类型的I/O请求的流水线模块可以被分配较高优先级。对于例如零填充请求,客户端往往不是为了实时读写而发出该请求,因此用于处理该类I/O请求的流水线模块可以被分配相对低的优先级。
在操作中,可以由控制模块410根据多个流水线模块的相应优先级来为执行流水线模块分配缓存资源430。例如,如果有两个或更多流水线模块的多个处理阶段都需要缓存资源430用于执行,在可用缓存资源430有限的情况下,控制模块410可以首先将可用缓存资源430分配给优先级相对高的一个或多个流水线模块的处理阶段。
上文讨论结合多个附图讨论了本公开的示例实施例的缓存系统。应当理解,缓存系统中的流水线模块和控制模块可以由软件程序模块、硬件、和/或软件和硬件的组合来实现。缓存系统中的控制模块用于控制和管理流水线模块的操作、调用、资源分配等等。在一些实现中,控制模块的部分或全部可以被实现为状态机(state machine)的形式。在一些实现中,控制模块可以被实现为控制器、微控制器、微处理器等能够执行控制和管理能力的模块来实现。
虽然以上讨论了单个缓存系统,在一些实现中可以在客户端与持久性存储设备之间设置两个或更多缓存系统,每个缓存系统用于缓存彼此的镜像缓存数据。缓存系统之间可以通过接口连接、诸如PCIe接口。
图7图示了根据一个实施例的用于缓存系统的过程700的流程图。过程700可以由缓存系统400、例如缓存系统400的控制模块410来执行。出于说明的目的,以下结合图4和图6来描述过程700。
在710,缓存系统400接收针对持久性存储设备的第一待处理输入/输出I/O请求。缓存系统400包括第一流水线模块420,第一流水线模块420包括能够执行第一多个操作的第一多个顺序处理阶段。第一多个操作响应于针对持久性存储设备的第一多个类型的输入/输出I/O请求而被执行,并且第一多个操作中每个操作是第一多个类型的I/O请求中的至少两个类型的I/O请求的公共操作。在720,缓存系统400确定第一待处理I/O请求的第一类型。然后在730,缓存系统400响应于第一类型为第一多个类型之一,使得第一流水线模块420被执行以处理第一待处理I/O请求。
在一些实施例中,第一多个操作可以至少包括与对持久性存储设备的访问有关的至少一个操作。
在一些实施例中,第一多个类型的I/O请求可以包括以下中的多个请求:读请求、写请求、零填充请求、预取请求和数据移除请求。
在一些实施例中,过程700还可以包括:接收针对持久性存储设备的第二待处理I/O请求;确定第二待处理I/O请求的第二类型;以及响应于确定第二类型为第一多个类型之一,在第一多个顺序处理阶段中的第一顺序处理阶段正在运行的同时,使得第一流水线模块420被执行以使用第一顺序处理阶段之前的第二顺序处理阶段处理第二待处理I/O请求。
在一些实施例中,调用第一流水线模块420可以包括:为第一待处理I/O请求选择第一多个处理阶段中的至少一个处理阶段;使得所选择的至少一个处理阶段针对第一待处理I/O请求而被执行;以及使得第一多个处理阶段中的其他处理阶段被跳过。
在一些实施例中,缓存系统调用第一流水线模块420可以包括:响应于缓存系统中可用于第一多个顺序处理阶段中的第三顺序处理阶段的缓存资源低于预定阈值,将第三顺序处理阶段的执行暂停预定时间段;以及响应于缓存资源超过预定阈值,使得第三顺序处理阶段被执行。
在一些实施例中,缓存系统400还可以包括第二流水线模块622或624。第二流水线模块622或624包括够执行第二多个操作的第二多个顺序处理阶段,第二多个操作响应于针对持久性存储设备的第三类型的I/O请求而被执行。过程700还可以包括:接收针对持久性存储设备的第三待处理I/O请求,确定第三待处理I/O请求的类型,以及响应于所确定的类型为第三类型,使得第二流水线模块622或624被执行以处理第三待处理I/O请求。
在一些实施例中,使得第二流水线模块622或624被执行可以包括:在第一流水线模块420正在执行第一待处理I/O请求的同时,使得第二流水线模块622或624被执行。
在一些实施例中,过程700还包括:基于第一流水线模块420和第二流水线模块622或624的相应优先级,为第一流水线模块420和第二流水线模块622或624分配所述缓存系统400的缓存资源。
本领域的技术人员应当理解,上述本公开的方法的各个步骤可以通过通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本公开不限制于任何特定的硬件和软件结合。
应当理解,尽管在上文的详细描述中提及了设备的若干装置或子装置,但是这种划分仅仅是示例性而非强制性的。实际上,根据本公开的实施例,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
以上所述仅为本公开的可选实施例,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本公开的保护范围之内。
Claims (19)
1.一种缓存系统,所述缓存系统与持久性存储设备相关联并且包括:
第一流水线模块,包括能够执行第一多个操作的第一多个顺序处理阶段,所述第一多个操作响应于针对所述持久性存储设备的第一多个类型的输入/输出I/O请求而被执行,所述第一多个操作中每个操作是所述第一多个类型的I/O请求中的至少两个类型的I/O请求的公共操作;以及
控制模块,被配置为:
确定针对所述持久性存储设备的第一待处理I/O请求的第一类型,以及
响应于所述第一类型为所述第一多个类型之一,使得所述第一流水线模块被执行以处理所述第一待处理I/O请求。
2.根据权利要求1所述的缓存系统,其中所述第一多个操作至少包括与对所述持久性存储设备的访问有关的至少一个操作。
3.根据权利要求1所述的缓存系统,其中所述第一多个类型的I/O请求包括以下中的多个请求:读请求、写请求、零填充请求、预取请求和数据移除请求。
4.根据权利要求1所述的缓存系统,其中所述控制模块还被配置为:
确定针对所述持久性存储设备的第二待处理I/O请求的第二类型;以及
响应于确定所述第二类型为所述第一多个类型之一,在所述第一多个顺序处理阶段中的第一顺序处理阶段正在运行的同时,使得所述第一流水线模块被执行以使用所述第一顺序处理阶段之前的第二顺序处理阶段处理所述第二待处理I/O请求。
5.根据权利要求1所述的缓存系统,其中所述控制模块被配置为:
为所述第一待处理I/O请求选择所述第一多个处理阶段中的至少一个处理阶段;
使得所选择的至少一个处理阶段针对所述第一待处理I/O请求而被执行;以及
使得所述第一多个处理阶段中的其他处理阶段被跳过。
6.根据权利要求1所述的缓存系统,其中所述第一多个顺序处理阶段中的第三顺序处理阶段可操作以响应于所述缓存系统中可用于所述第三顺序处理阶段的缓存资源低于预定阈值而暂停预定时间段,并且响应于所述缓存资源超过预定阈值而被执行。
7.根据权利要求1所述的缓存系统,还包括:
第二流水线模块,包括够执行第二多个操作的第二多个顺序处理阶段,所述第二多个操作响应于针对所述持久性存储设备的第三类型的I/O请求而被执行,并且
其中所述控制模块还被配置为:
确定所述缓存系统接收到的第三待处理I/O请求的类型,以及
响应于所确定的类型为所述第三类型,使得所述第二流水线模块被执行以处理所述第三待处理I/O请求。
8.根据权利要求7所述的缓存系统,其中所述控制模块还被配置为:
在所述第一流水线模块正在执行所述第一待处理I/O请求的同时,使得所述第二流水线模块被执行。
9.根据权利要求8所述的缓存系统,其中所述控制模块还被配置为:
基于所述第一流水线模块和所述第二流水线模块的相应优先级,为所述第一流水线模块和第二流水线模块分配所述缓存系统的缓存资源。
10.一种用于缓存系统的方法,所述缓存系统与持久性存储设备相关联,所述方法包括:
接收针对所述持久性存储设备的第一待处理输入/输出I/O请求,所述缓存系统包括第一流水线模块,所述第一流水线模块包括能够执行第一多个操作的第一多个顺序处理阶段,所述第一多个操作响应于针对所述持久性存储设备的第一多个类型的输入/输出I/O请求而被执行,所述第一多个操作中每个操作是所述第一多个类型的I/O请求中的至少两个类型的I/O请求的公共操作;
确定所述第一待处理I/O请求的第一类型;以及
响应于所述第一类型为所述第一多个类型之一,使得所述第一流水线模块被执行以处理所述第一待处理I/O请求。
11.根据权利要求10所述的方法,其中所述第一多个操作至少包括与对所述持久性存储设备的访问有关的至少一个操作。
12.根据权利要求10所述的方法,其中所述第一多个类型的I/O请求包括以下中的多个请求:读请求、写请求、零填充请求、预取请求和数据移除请求。
13.根据权利要求10所述的方法,还包括:
接收针对所述持久性存储设备的第二待处理I/O请求;
确定所述第二待处理I/O请求的第二类型;以及
响应于确定所述第二类型为所述第一多个类型之一,在所述第一多个顺序处理阶段中的第一顺序处理阶段正在运行的同时,使得所述第一流水线模块被执行以使用所述第一顺序处理阶段之前的第二顺序处理阶段处理所述第二待处理I/O请求。
14.根据权利要求10所述的方法,其中调用所述第一流水线模块包括:
为所述第一待处理I/O请求选择所述第一多个处理阶段中的至少一个处理阶段;
使得所选择的至少一个处理阶段针对所述第一待处理I/O请求而被执行;以及
使得所述第一多个处理阶段中的其他处理阶段被跳过。
15.根据权利要求10所述的方法,其中调用所述第一流水线模块包括:
响应于所述缓存系统中可用于所述第一多个顺序处理阶段中的第三顺序处理阶段的缓存资源低于预定阈值,将所述第三顺序处理阶段的执行暂停预定时间段;以及
响应于所述缓存资源超过预定阈值,使得所述第三顺序处理阶段被执行。
16.根据权利要求10所述的方法,其中所述缓存系统还包括第二流水线模块,包括够执行第二多个操作的第二多个顺序处理阶段,所述第二多个操作响应于针对所述持久性存储设备的第三类型的I/O请求而被执行,并且
其中所述方法还包括:
接收针对所述持久性存储设备的第三待处理I/O请求,
确定所述第三待处理I/O请求的类型,以及
响应于所确定的类型为所述第三类型,使得所述第二流水线模块被执行以处理所述第三待处理I/O请求。
17.根据权利要求16所述的方法,其中使得所述第二流水线模块被执行包括:
在所述第一流水线模块正在执行所述第一待处理I/O请求的同时,使得所述第二流水线模块被执行。
18.根据权利要求17所述的方法,还包括:
基于所述第一流水线模块和所述第二流水线模块的相应优先级,为所述第一流水线模块和第二流水线模块分配所述缓存系统的缓存资源。
19.一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令在被执行时使设备执行根据权利要求10至18中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710250202.5A CN108733585B (zh) | 2017-04-17 | 2017-04-17 | 缓存系统及相关方法 |
US15/954,873 US10521371B2 (en) | 2017-04-17 | 2018-04-17 | Cache system and associated method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710250202.5A CN108733585B (zh) | 2017-04-17 | 2017-04-17 | 缓存系统及相关方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108733585A true CN108733585A (zh) | 2018-11-02 |
CN108733585B CN108733585B (zh) | 2022-05-13 |
Family
ID=63790078
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710250202.5A Active CN108733585B (zh) | 2017-04-17 | 2017-04-17 | 缓存系统及相关方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10521371B2 (zh) |
CN (1) | CN108733585B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112748883A (zh) * | 2021-01-15 | 2021-05-04 | 苏州浪潮智能科技有限公司 | 一种io请求流水线处理设备、方法、系统及存储介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10579492B2 (en) * | 2017-12-29 | 2020-03-03 | Intel Corporation | Device, system and method for identifying a source of latency in pipeline circuitry |
US11550718B2 (en) * | 2020-11-10 | 2023-01-10 | Alibaba Group Holding Limited | Method and system for condensed cache and acceleration layer integrated in servers |
US20240103762A1 (en) * | 2022-09-23 | 2024-03-28 | Western Digital Technologies, Inc. | Automated Fast Path Processing |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020083299A1 (en) * | 2000-12-22 | 2002-06-27 | International Business Machines Corporation | High speed remote storage controller |
CN101013402A (zh) * | 2006-02-01 | 2007-08-08 | 国际商业机器公司 | 多个转换高速缓存缺失的处理方法和系统 |
CN102567503A (zh) * | 2010-12-16 | 2012-07-11 | 微软公司 | 用于数据去重复的可扩展流水线 |
CN104303162A (zh) * | 2012-01-12 | 2015-01-21 | 才智知识产权控股公司(2) | 用于管理缓存接纳的系统和方法 |
CN105208275A (zh) * | 2015-09-25 | 2015-12-30 | 北京航空航天大学 | 一种支持流数据片内实时处理的系统及设计方法 |
CN105580393A (zh) * | 2013-07-09 | 2016-05-11 | 谷歌公司 | 根据服务器指定策略缓存地理数据 |
US20160210243A1 (en) * | 2015-01-16 | 2016-07-21 | Oracle International Corporation | Memory Paging for Processors using Physical Addresses |
CN105824604A (zh) * | 2015-11-24 | 2016-08-03 | 中国科学院计算技术研究所 | 多输入多输出处理器流水线数据同步装置及方法 |
US20160224481A1 (en) * | 2015-01-29 | 2016-08-04 | International Business Machines Corporation | Multiprocessor cache buffer management |
-
2017
- 2017-04-17 CN CN201710250202.5A patent/CN108733585B/zh active Active
-
2018
- 2018-04-17 US US15/954,873 patent/US10521371B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020083299A1 (en) * | 2000-12-22 | 2002-06-27 | International Business Machines Corporation | High speed remote storage controller |
CN101013402A (zh) * | 2006-02-01 | 2007-08-08 | 国际商业机器公司 | 多个转换高速缓存缺失的处理方法和系统 |
CN102567503A (zh) * | 2010-12-16 | 2012-07-11 | 微软公司 | 用于数据去重复的可扩展流水线 |
CN104303162A (zh) * | 2012-01-12 | 2015-01-21 | 才智知识产权控股公司(2) | 用于管理缓存接纳的系统和方法 |
CN105580393A (zh) * | 2013-07-09 | 2016-05-11 | 谷歌公司 | 根据服务器指定策略缓存地理数据 |
US20160210243A1 (en) * | 2015-01-16 | 2016-07-21 | Oracle International Corporation | Memory Paging for Processors using Physical Addresses |
US20160224481A1 (en) * | 2015-01-29 | 2016-08-04 | International Business Machines Corporation | Multiprocessor cache buffer management |
CN105208275A (zh) * | 2015-09-25 | 2015-12-30 | 北京航空航天大学 | 一种支持流数据片内实时处理的系统及设计方法 |
CN105824604A (zh) * | 2015-11-24 | 2016-08-03 | 中国科学院计算技术研究所 | 多输入多输出处理器流水线数据同步装置及方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112748883A (zh) * | 2021-01-15 | 2021-05-04 | 苏州浪潮智能科技有限公司 | 一种io请求流水线处理设备、方法、系统及存储介质 |
CN112748883B (zh) * | 2021-01-15 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种io请求流水线处理设备、方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20180300268A1 (en) | 2018-10-18 |
US10521371B2 (en) | 2019-12-31 |
CN108733585B (zh) | 2022-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10108552B2 (en) | Using cache lists for processors to determine tracks to demote from a cache | |
US9513817B2 (en) | Free space collection in log structured storage systems | |
CN103019962B (zh) | 数据缓存处理方法、装置以及系统 | |
US9971508B2 (en) | Invoking input/output (I/O) threads on processors to demote tracks from a cache | |
US8555019B2 (en) | Using a migration cache to cache tracks during migration | |
US6857047B2 (en) | Memory compression for computer systems | |
US9952982B2 (en) | Invoking demote threads on processors to demote tracks indicated in demote ready lists from a cache when a number of free cache segments in the cache is below a free cache segment threshold | |
CN108733585A (zh) | 缓存系统及相关方法 | |
US20130145095A1 (en) | Melthod and system for integrating the functions of a cache system with a storage tiering system | |
US20170351611A1 (en) | Invoking input/output (i/o) threads and demote threads on processors to demote tracks from a cache | |
US20120303899A1 (en) | Managing track discard requests to include in discard track messages | |
KR101574451B1 (ko) | 트랜잭션 메모리 시스템 내구성 부여 | |
US9135262B2 (en) | Systems and methods for parallel batch processing of write transactions | |
CN112527494A (zh) | 信息处理设备和方法以及非暂态计算机可读记录介质 | |
JPH05224921A (ja) | データ処理システム | |
US20150237140A1 (en) | Data storage systems and methods | |
US20170031605A1 (en) | Control device and control method | |
US20200043128A1 (en) | Processing system for graphs and operating method thereof | |
US11481140B1 (en) | Dynamic base disk mirroring for linked clones | |
JP4189342B2 (ja) | ストレージ装置、ストレージコントローラ及びライトバックキャッシュ制御方法 | |
EP3293625B1 (en) | Method and device for accessing file, and storage system | |
JP2015191604A (ja) | 制御装置、制御プログラム、および制御方法 | |
US7908434B2 (en) | Raid apparatus, cache management method, and computer program product | |
US10949354B2 (en) | Distributed safe data commit in a data storage system | |
CN107025064B (zh) | 一种低延迟高iops的数据访问方法 |
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 |