CN105320640A - 输入/输出拦截器及使用其的输入/输出拦截方法 - Google Patents
输入/输出拦截器及使用其的输入/输出拦截方法 Download PDFInfo
- Publication number
- CN105320640A CN105320640A CN201510463009.0A CN201510463009A CN105320640A CN 105320640 A CN105320640 A CN 105320640A CN 201510463009 A CN201510463009 A CN 201510463009A CN 105320640 A CN105320640 A CN 105320640A
- Authority
- CN
- China
- Prior art keywords
- write
- subset
- request
- writing
- writes
- 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/061—Improving I/O performance
-
- 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
-
- 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/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
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)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
提供一种输入/输出拦截器及使用其的输入/输出拦截方法。本发明的各方面包括一种具有与存储栈连接的数据/输出(I/O)接口的I/O拦截器逻辑部。I/O接口可拦截来自应用的写I/O、读I/O和冲洗请求。临时写暂存缓冲器可存储写I/O。重排序逻辑部可改变写I/O的顺序,并可将重排序的写I/O组合成组合的写I/O。智能冲洗控制逻辑部可从I/O接口接收冲洗请求,在写I/O未被写入到非易失性存储装置中的情况下,将写I/O的写I/O完成传送到应用,并响应于多个冲洗请求之中的预定义的第N冲洗请求、阈值数据量被累积和预定义的时间段期满中的至少一个,促使组合的写I/O被写入到非易失性存储装置中。
Description
技术领域
本发明构思涉及计算机存储技术,更具体地讲,涉及一种具有嵌入在计算机装置(诸如智能电话或平板电脑)的存储栈内的智能冲洗(flush)控制逻辑的输入/输出(I/O)拦截器。
背景技术
对移动装置(诸如移动电话或平板电脑)的性能要求正在提高。传统上在多种独立的装置(诸如相机、计算器、个人计算机、服务器、全球定位系统(GPS)装置等)上完成的事情现在由移动装置合并和处理。虽然在这种移动装置的处理器性能和无线数据速度稳步提高,但是在这种移动装置内的本地存储栈未得到快速发展。通常被用于确保数据一致性(consistency)的冲洗请求已成为性能的障碍,这是因为I/O在冲洗命令期间被堵塞。因此,这种移动装置的存储栈以及关联的本地存储装置已成为性能瓶颈。本发明构思的实施例解决本领域的这些和其它限制。
发明内容
本发明构思的实施例可包括一种输入/输出(I/O)拦截器逻辑部。I/O拦截器逻辑部可包括:I/O接口,与存储栈通信地连接并被配置为拦截来自应用的多个写I/O和多个冲洗请求。一个或更多个临时写暂存缓冲器可被配置为从I/O接口接收所述多个写I/O并存储所述多个写I/O。重排序逻辑部可通信地连接到所述一个或更多个临时写暂存缓冲器,并被配置为改变存储在所述一个或更多个临时写暂存缓冲器中的所述多个写I/O的顺序。另外,重排序逻辑部可将重排序的多个写I/O组合成组合写I/O。智能冲洗控制逻辑部可被配置为从I/O接口接收所述多个冲洗请求。在所述多个写I/O未被写入到非易失性存储装置的情况下,智能冲洗控制逻辑部可将所述多个写I/O的写I/O完成传送到所述应用。另外,响应于所述多个冲洗请求之中的预定义的第N冲洗请求、阈值数据量被累积和预定义的时间段期满中的至少一个,智能冲洗控制逻辑部可促使所述组合写I/O被写入到非易失性存储装置中。
本发明的实施例可包括一种输入/输出(I/O)拦截器逻辑部。I/O拦截器逻辑部可包括:I/O接口,与存储栈通信地连接并配置为拦截来自应用的多个写I/O和多个冲洗请求。多个临时写暂存缓冲器可被配置为从I/O接口接收所述多个写I/O并存储所述多个写I/O。多缓冲器暂存队列可被配置为保持所述多个临时写暂存缓冲器。智能冲洗控制逻辑部可被配置为从I/O接口接收所述多个冲洗请求。智能冲洗控制逻辑部可被配置为在多数多个写I/O未被写入到非易失性存储装置中的情况下,将所述多个写I/O的写I/O完成传送到所述应用。智能冲洗控制逻辑部可被配置为响应于所述多个冲洗请求之中的预定义的第N冲洗请求、阈值数据量被累积和预定义的时间段期满中的至少一个,促使多缓冲器暂存队列将所述多个写I/O从所述多个临时写暂存缓冲器清空到非易失性存储装置。
本发明构思的的实施例可包括一种输入/输出(I/O)拦截器。所述I/O拦截器包括:I/O接口,被配置为与存储栈通信地连接,以拦截来自应用的多个写I/O和多个冲洗请求;至少一个临时写暂存缓冲器,被配置为从I/O接口接收所述多个写I/O并存储所述多个写I/O;智能冲洗控制逻辑部,被配置为从I/O接口接收所述多个冲洗请求,在所述多个写I/O未被写入到非易失性存储装置的情况下,将指示所述多个写I/O的写I/O完成的消息传送到所述应用。
本发明构思的实施例可包括一种计算机实现的用于使用输入/输出(I/O)拦截器逻辑部拦截来自应用的I/O的方法。所述方法可包括:通过I/O拦截器逻辑部的I/O接口拦截来自应用的多个写I/O和多个冲洗请求。所述方法可包括:通过一个或更多个临时写暂存缓冲器存储由I/O接口拦截的所述多个写I/O。所述方法可包括:通过重排序逻辑部改变被存储在所述一个或更多个临时写暂存缓冲器中的所述多个写I/O的顺序。所述方法可包括:通过重排序逻辑部将重排序的多个写I/O组合成组合写I/O。所述方法可包括:通过智能冲洗控制逻辑部从I/O接口接收所述多个冲洗请求。所述方法可包括:通过智能冲洗控制逻辑部,在所述多个写I/O未被写入到非易失性存储装置中的情况下,将所述多个写I/O的写I/O完成传送到所述应用。所述方法可包括:通过智能冲洗控制逻辑部,响应于所述多个冲洗请求之中的预定义的第N冲洗请求、阈值数据量被累积或预定义的时间段期满中的至少一个,促使所述组合写I/O被写入到非易失性存储装置中。
本发明构思的实施例可包括一种计算机实现的用于使用输入/输出(I/O)拦截器逻辑部拦截来自应用的I/O的方法。所述方法可包括:通过I/O接口拦截来自应用的多个写I/O和多个冲洗请求。所述方法可包括:通过多个临时写暂存缓冲器存储通过I/O接口拦截的所述多个写I/O。所述方法可包括:通过多缓冲器暂存队列保持所述多个临时写暂存缓冲器。所述方法可包括:通过智能冲洗控制器逻辑部从I/O接口接收所述多个冲洗请求。所述方法可包括:通过智能冲洗控制器逻辑部,在所述多个写I/O未被写入到非易失性存储装置中的情况下,将所述多个写I/O的写I/O完成传送到所述应用。所述方法可包括:通过智能冲洗控制器逻辑部,响应于所述多个冲洗请求之中的预定义的第N冲洗请求、阈值数据量被累积和预定义的时间段期满中的至少一个,促使多缓冲器暂存队列将所述多个写I/O从所述多个临时写暂存缓冲器清空到非易失性存储装置。
本发明构思的示例性实施例可包括一种用于使用输入/输出(I/O)拦截器逻辑部拦截来自应用的I/O的系统。所述系统可包括移动装置,其中,移动装置包括应用空间、内核空间和一个或更多个物理硬件装置。所述系统可包括可在内核空间中操作的输入/输出(I/O)拦截器逻辑部。I/O拦截器逻辑部可包括:I/O接口,与存储栈通信地连接并被配置为在应用空间内拦截来自应用的多个写I/O和多个冲洗请求;一个或更多个临时写暂存缓冲器,被配置为从I/O接口接收所述多个写I/O,并存储所述多个写I/O;重排序逻辑部,通信地连接到所述一个或更多个临时写暂存缓冲器,并被配置为改变被存储在所述多个写暂存缓冲器中的所述多个写I/O的顺序,并将重排序的多个写I/O组合成组合写I/O;智能冲洗控制逻辑部,被配置为从I/O接口接收所述多个冲洗请求,在所述多个写I/O未被写入到一个或更多个物理硬件装置之中的非易失性存储装置中的情况下,将所述多个写I/O的写I/O完成传送到所述应用,并响应于所述多个冲洗请求之中的预定义的第N冲洗请求、阈值数据量被累积和预定义的时间段期满中的至少一个,促使所述组合写I/O被写入到非易失性存储装置中。
本发明构思的实施例可包括一种用于使用输入/输出(I/O)拦截器拦截来自应用的I/O的方法。所述方法可包括:通过I/O拦截器的I/O接口,拦截来自应用的多个写I/O和多个冲洗请求;通过I/O拦截器的至少一个临时写暂存缓冲器,存储由I/O接口拦截的所述多个写I/O;通过I/O拦截器的智能冲洗控制逻辑部从I/O接口接收所述多个冲洗请求;在所述多个写I/O未被写入到非易失性存储装置中的情况下,通过智能冲洗控制逻辑部将表示所述多个写I/O的写I/O完成的消息传送到所述应用。
本发明的某些特征可通过将它们实现在处理器中(诸如在ARM处理器核内)而被最好地实现。其它类型的处理器或专用集成电路(ASIC)和/或固件可实现在此公开的本发明原理。本发明构思可被实现在各种移动装置(诸如智能电话、平板电脑、笔记本计算机等)或各种固定装置(诸如桌上型计算机、路由器等)的处理器和/或存储器模块内。
附图说明
从结合附图进行的以下详细描述,本发明原理的前述和附加特征和优点将变得更明显,其中:
图1是根据本发明构思的实施例的包括应用空间、内核空间、物理硬件装置和I/O拦截器逻辑部的系统栈的示例框图。
图2是根据本发明构思的实施例的图1的系统栈的各种组件的示例示图,其中,示例示图包括一系列与时间相关的事件。
图3是根据本发明构思的实施例的图1的I/O拦截器逻辑部的重排序逻辑部以及I/O拦截器逻辑部的临时写暂存缓冲器(temporarywriteholdingbuffer)的示例示图。
图4是根据本发明构思的实施例的图1的I/O拦截器逻辑部的重排序逻辑部和I/O拦截器逻辑部的重新映射存储器部的示例示图。
图5是根据本发明构思的实施例的I/O拦截器逻辑部的智能冲洗控制逻辑部和I/O拦截器逻辑部的临时写暂存缓冲器的示例示图。
图6是根据本发明构思的实施例的图1的I/O拦截器逻辑部的智能冲洗控制逻辑部和I/O拦截器逻辑部的临时写暂存缓冲器的另一示例示图。
图7至图12是根据本发明构思的实施例的图1的I/O拦截器逻辑部可被嵌入的各种装置的示意图。
图13是示出根据本发明构思的实施例的用于使用I/O拦截器逻辑部拦截来自应用的I/O的技术的流程图。
图14是示出根据本发明构思的实施例的用于使用I/O拦截器逻辑部拦截来自应用的I/O的另一技术的流程图。
图15是包括根据在此公开的本发明构思的实施例的I/O拦截器逻辑部的计算机系统的框图。
具体实施方式
现在将详细描述本发明构思的实施例,附图中示出了本发明构思的示例。在以下的详细描述中,许多特定细节被阐述用于实现对本发明构思的充分理解。然而,应理解,本领域普通技术人员可在没有这些特定细节的情况下实践本发明构思。在其它情况下,不详细描述公知方法、过程、组件、电路和网络,以免不必要地模糊实施例的各方面。
将理解,虽然术语“第一”、“第二”等可在这里被用于描述各种元件,但是这些元件不应受这些术语限制。这些术语仅被用于将一个元件与另一个元件区分开。例如,在不脱离本发明构思的范围的情况下,第一电力开关单元可被称为第二电力开关单元,类似地,第二电力开关单元可被称为第一电力开关单元。
在本发明构思的描述中所使用的术语在此仅用于描述特定实施例的目的,而不旨在限制本发明构思。如在本发明构思和权利要求的描述中所使用的,单数形式也意图包括复数形式,除非上下文另有明确指示。也将理解,如这里所使用的术语“和/或”是指且包含相关所列项中的一项或更多项的任何和所有可能的组合。还将理解,当术语“包括”和/或“包括着”在本说明书中使用时,指明存在叙述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或更多个其它特征、整体、步骤、操作、元件、组件和/或它们的组。附图中的组件和特征不一定按比例绘制。
图1是包括应用空间105、内核空间110和物理硬件装置115的系统栈100的示例框图。根据本发明构思的实施例,输入/输出(I/O)拦截器逻辑部120(或者,I/O连接器)可在内核空间110内操作。将理解,在可选实施例中,I/O拦截器逻辑部120可在应用空间105内操作,或可嵌入在任何适当计算机装置的不同部分或空间内。如下面进一步描述的,系统栈100可包括在例如移动装置(诸如智能电话或平板电脑、相机、膝上型计算机、计算机等)中。
如图1中所示,系统栈100可包括存储栈125。存储栈125可促进应用空间105的一个或更多个应用130(诸如应用132)与物理硬件装置115的一个或更多个非易失性存储装置135之间的输入/输出(I/O)的发送和接收。一个或更多个非易失性存储装置135可包括固态驱动器(SSD)140、闪存145、硬盘驱动器150等。
I/O拦截器逻辑部120可包括I/O接口155、一个或更多个临时写暂存缓冲器160、重排序逻辑部165和智能冲洗控制逻辑部170。I/O接口155可与存储栈125通信连接。I/O拦截器逻辑部120可拦截来自应用(例如,应用132)的所有I/O(包括冲洗请求(flushrequest))。例如,I/O接口155可拦截来自应用(例如,应用132)的写I/O、读I/O和冲洗请求。一个或更多个临时写暂存缓冲器160可从I/O接口155接收写I/O,并存储写I/O。一个或更多个临时写暂存缓冲器160可以是从空闲的系统存储器中预先分配的。
重排序逻辑部165可与一个或更多个临时写暂存缓冲器160通信连接。重排序逻辑部165可改变存储在一个或更多个临时写暂存缓冲器160中的写I/O的顺序。如下面进一步描述的,重排序逻辑部165可将重排序的写I/O组合为组合写I/O。智能冲洗控制逻辑部170可从I/O接口155接收冲洗请求。在写I/O实际上未被写入到一个或更多个非易失性存储装置135中的任意一个的情况下,智能冲洗控制逻辑部170可将写I/O的写I/O完成传送到应用(例如,例如132)。从应用的角度来看,写I/O已完成,然而实际上,写I/O在此时间点尚未被提交到非易失性存储器。换句话说,在写I/O实际上被写入到一个或更多个非易失性存储装置135中的任意一个之前,智能冲洗控制逻辑部170可将写I/O的写I/O完成传送到应用132。如下面进一步描述的,智能冲洗控制逻辑部170可响应于冲洗请求中的预定的第N冲洗请求或其它准则促使组合写I/O被写入到一个或更多个非易失性存储装置135。
图2是根据本发明构思的实施例的图1的系统栈100的各种组件的示例示图,其中,示例示图包括按照时间线202所示的一系列与时间相关的事件。
I/O接口155可拦截写I/O,其中,写I/O包括例如来自应用132的数据写I/O205(即,W01至Wn3)、元数据写I/O210(即,W04至Wn6)、数据写I/O215(即,W07至Wn9)、元数据写I/O220(即,W010至Wn12)和冲洗请求(例如,F0至Fn)。一个或更多个临时写暂存缓冲器160可从I/O接口155接收写I/O,并可存储写I/O。如下面进一步描述的,如果在数据被驻存在一个或更多个临时写暂存缓冲器160中的同时,从应用接收到读I/O,则I/O拦截器逻辑部120可为所述读I/O服务以向驻存在一个或更多个临时写暂存缓冲器160中的副本发出请求,或者可选择地,可为所述读I/O服务以向重新映射的存储器位置发出请求。例如,I/O拦截器逻辑部120可响应于所述读I/O而读取驻存在一个或更多个临时写暂存缓冲器160中的数据的副本。如下面进一步描述的,重排序逻辑部165可改变存储在一个或更多个临时写暂存缓冲器160中的写I/O的顺序。重排序逻辑部165可将随机的写I/O转换为顺序的写I/O。重排序逻辑部165可将重排序的写I/O(例如,写I/O205、写I/O210、写I/O215和写I/O220)组合为组合写I/O(例如,写I/O225)。
智能冲洗控制逻辑部170可从I/O接口155接收冲洗请求(例如,冲洗请求F0至Fn)。在写I/O实际上未被写入到一个或更多个非易失性存储装置135中的任意一个的情况下,智能冲洗控制逻辑部170可经由写I/O的相应完成消息(例如,消息230)将写I/O完成传送到应用(例如,应用132)。换句话说,智能冲洗控制逻辑部170基本上可立即答复每个冲洗请求,使得应用132可在不需要等待相应冲洗请求被实际完成的情况下继续将另外的写I/O发送到非易失性存储装置135之一,从而显著地提高应用132的性能。换句话说,在写I/O实际上被写入到一个或更多个非易失性存储装置中的任意一个之前,智能冲洗控制逻辑部170可将写I/O的写I/O完成230传送到应用132。由于写I/O被存储在一个或更多个临时写暂存缓冲器160中,因此智能冲洗控制逻辑部170可随后促使组合写I/O225在提交的冲洗CFn中被实际写入到一个或更多个非易失性存储装置135。换句话说,智能冲洗控制逻辑部170可实现选择性冲洗技术。提交的冲洗CFn可以是同步操作。由于组合写I/O大小大于单个的写I/O,因此通过减少当每个写I/O被独立地发送到非易失性存储装置时与每个写I/O相关联的开销,存储性能得到提高。另外,由于可通过性能比实际的非易失性存储装置明显高(即,高吞吐量和低延迟)的系统存储器来完成写I/O,因此应用的性能被显著提高。
另外,由于组合写I/O225的提交的冲洗CFn在冲洗Fn的边界或紧跟着冲洗Fn的边界(例如,响应于预定义的第N冲洗Fn)发生,因此数据将保持其一致性。甚至在突然断电的事件中,数据仍将在非易失性存储装置135上保持一致,但是可能存在数据的丢失。对于应用来说,数据的丢失是可接受的,这是因为应用可读取存在于非易失性存储装置上的数据,并基于存储的数据恢复或回退应用的状态。但是数据的不一致性通常不被应用所容忍,并可引起不可预期的行为,或者甚至导致应用变得无法操作。如这里所描述的,本发明构思的实施例通过累积提交的冲洗(例如,CF0和CFn)之间的写I/O并然后将组合写I/O中的数据冲洗(flush)至非易失性存储器来保证数据一致性。
一个或更多个非易失性存储装置135可返回提交的冲洗确认消息(例如,175),从而提供同步提交的冲洗操作,其中,所述冲洗确认消息可被I/O拦截器逻辑部120接收并被用于确认对非易失性存储器的每个提交的冲洗事务的完成。换句话说,在特定的同步提交的冲洗操作期间,其它的写I/O和非提交的冲洗请求(不作为特定提交的冲洗操作的一部)被累积且不允许被实际冲洗至非易失性存储器,直到随后的同步提交的冲洗操作为止。
可能在任意时间点发生突然断电,但数据将保持一致。换句话说,在一个或更多个非易失性存储装置135上将总会存在与数据配对的元数据。换句话说,永远不会存在这样的情况:元数据在没有相应数据的情况下存在于一个或更多个非易失性存储装置135上。因此,根据本发明构思的实施例,在显著提高应用和存储栈的性能的同时,数据一致性被保持。
另外,因为通常提交的冲洗请求可被转换为非提交的冲洗请求,因此用于对写I/O重排序的机会的窗口被扩展。通常,写I/O可仅在冲洗边界之间(例如,在F0和F1之间)被重排序。然而,根据本发明构思的实施例,将典型的冲洗请求转换为非提交的冲洗请求,并且可跨过非提交的冲洗边界(例如,在F0和Fn之间且穿过F1、F2和F3)对写I/O重排序,这是因为实际提交的冲洗(例如,CF0和CFn)在扩展的时标(timescale)上发生。换句话说,在两个提交的冲洗(例如,CF0和CFn)之间的写I/O的数量比更频繁且在更短的时标上发生的两个非提交的冲洗请求(例如,F0和F1、F1和F2或F2和F3等)之间的写I/O的数量更多。通过扩展用于重排序I/O的机会的窗口,可实现额外的性能提高,这是因为I/O可按照这样的方式被排序,它们被更加高效地写入到非易失性存储装置,并且,它们被组合成单个组合(即,更大的)写I/O对于写入来说更高效。
智能冲洗控制逻辑部170可响应于冲洗请求之中的预定义的第N冲洗请求(例如,Fn),而促使组合写I/O225被写入到一个或更多非易失性存储装置135。预定义的第N冲洗请求可与N个冲洗请求相应,其中,N是预定义的正整数值。例如,N可以是三或大于三的整数。作为其它示例,N可以是整数4、5、8、10、16、20、32、64、100等等。N可被设置为任何适当的正整数值。可在操作之前预先定义(例如,预先确定和设置)用于在使提交的冲洗CFn发生之前进行累积的冲洗请求的数量N。可选地或另外地,用于在使提交的冲洗CFn发生之前进行累积的冲洗请求的数量N可以是可由用户或系统管理员进行修改的可配置的设置。
可选地或另外地,智能冲洗控制逻辑部170可响应于阈值数据量被累积而使提交的冲洗CFn发生,以将组合写I/O225写入到一个或更多个非易失性存储装置135。换句话说,当阈值数据量达到时,智能冲洗控制逻辑部170可使提交的冲洗CFn发生。可选地或另外地,智能冲洗控制逻辑部170可响应于预定义的时间段期满而使提交的冲洗CFn发生,以将组合写I/O225写入到一个或更多个非易失性存储装置135。预定义的时间段可以是例如以秒计的,诸如5秒、10秒、30秒、60秒等等。这降低了在突然断电的事件中数据丢失的可能性,同时提高了性能并保持数据一致性。可选地或另外地,响应于阈值数据量被累积的第一准则并随后响应于预定义的第N冲洗请求被满足的第二准则,智能冲洗控制逻辑部170可使提交的冲洗CFn发生,以将组合的写I/O225写入到一个或更多个非易失性存储装置135。换句话说,提交的冲洗CFn可仅在两个准则被满足时发生。
I/O拦截器逻辑部120的I/O接口155可接收第一子集的数据写I/O(例如,数据写I/O205)、第一冲洗请求(例如,第一冲洗请求F1)、第一子集的元数据写I/O(例如,元数据写I/O210)、第二冲洗请求(例如,第二冲洗请求F2)、第二子集的数据写I/O(例如,数据写I/O215)、第三冲洗请求(例如,第三冲洗请求F3)、第二子集的元数据写I/O(例如,元数据写I/O220)以及预定义的第N冲洗请求(例如,冲洗请求Fn)。重排序逻辑部165可改变第一子集的数据写I/O、第一子集的元数据写I/O210、第二子集的数据写I/O215和第二子集的元数据写I/O220中的写I/O的顺序。换句话说,重排序逻辑部165可在每个子集内改变各个写I/O的顺序,和/或跨过各个子集改变各个写I/O的顺序。重排序逻辑部165可将第一子集的数据写I/O205、第一子集的元数据写I/O210、第二子集的数据写I/O的215和第二子集的元数据写I/O220组合为组合写I/O225。如下面进一步描述的,重排序逻辑部165可将头部HDR和尾部FTR插入或附加到组合的写I/O225。
图3是根据本发明构思的实施例的(图1和图2的)I/O拦截器逻辑部120的重排序逻辑部165以及(图1和图2的)I/O拦截器逻辑部120的临时写暂存缓冲器160的示例示图。如上所述,重排序逻辑部165可在每个子集内改变各个写I/O的顺序,和/或跨过各个子集改变各个写I/O的顺序。在此示例实施例中,写I/OW01与逻辑块地址(LBA)6相应,写I/OW12与LBA12相应,写I/OWn3与LBA9相应,写I/OW04与LBA7相应,写I/OW15与LBA10相应,写I/OWn6与LBA11相应,写I/OW07与LBA5相应,写I/OW18与LBA4相应,写I/OWn9与LBA8相应,写I/OW010与LBA2相应,写I/OW111与LBA3相应,并且写I/OWn12与LBA1相应。各个LBA与各个相应写I/O预定被存储的在一个或更多个非易失性存储装置135中的逻辑块地址相应。
重排序逻辑部165可改变各个写I/O的顺序,使得它们可按照这样的方式在组合的写I/O225中被排列:LBA(例如,LBA1、LBA2、LBA3等)中的与组合写I/O225中的写I/O(例如,Wn12、W010、W111等等)中的相应的一个写I/O相关联的每一个LBA按照升序排列或降序排列。例如,写I/O可首先按照以下顺序(具有以下关联的LBA)到达:W01/LBA6、W12/LBA12、Wn3/LBA9、W04/LBA7、W15/LBA10、Wn6/LBA11、W07/LBA5、W18/LBA4、Wn9/LBA8、W010/LBA2、W111/LBA3和Wn12/LBA1。将理解,由于此处未具体描述的其它LBA可落在在此描述的本发明构思的各种实施例内,因此这些LBA值是举例的方式,并不是限制性的。如图3中所示,重排序逻辑部165可将在临时写暂存缓冲器160内的各个写I/O的顺序改变为具有以下顺序:Wn12/LBA1、W010/LBA2、W111/LBA3、W18/LBA4、W07/LBA5、W01/LBA6、W04/LBA7、Wn9/LBA8、Wn3/LBA9、W15/LBA10、Wn6/LBA11和W12/LBA12。按此方式,LBA可按照升序或降序被排列,使得将组合的写I/O225写入到图1和图2的一个或更多个非易失性存储装置135更加高效。
图4是(图1和图2的)I/O拦截器逻辑部120的重排序逻辑部165以及重新映射的存储器部405的示例示图。根据本发明构思的实施例,重新映射的存储器部405可分配自系统存储器,和/或可在I/O拦截器逻辑部120内被分配。通常,由于LBA的宽度不一致,LBA不会被简单地重新排序为升序、降序和/或连续组。例如,写I/O可首先按照以下顺序(具有以下关联的LBA)到达:W01/LBA50、W12/LBA11、Wn3/LBA18、W04/LBA65、W15/LBA99、Wn6/LBA10、W07/LBA41、W18/LBA34、Wn9/LBA77、W010/LBA19、W111/LBA55和Wn12/LBA100。将理解,由于此处未具体描述的其它LBA可落在在此描述的本发明构思的各种实施例内,因此这些LBA值是举例的方式,并不是限制性的。
重排序逻辑部165可通过预先搁置头部HDR并添加尾部FTR并通过将各个写I/O映射到重新映射的存储器部405,来改变各个写I/O的顺序。换句话说,重排序逻辑部165可复制各个写I/O、头部HDR和尾部FTR来形成组合写I/O225,使得多个逻辑块地址(LBA)(例如,LBA1、LBA2、LBA3等)中的与组合写I/O225中的多个写I/O(例如,Wn12、W010、W111等)中的相应的一个写I/O相关联的每一个LBA可按照升序或降序被排列,并使得组合写I/O255中的多个写I/O(例如,Wn12、W010、W111等)中的每一个写I/O在重新映射的存储器部405中与组合的写I/O225中的多个写I/O(例如,Wn12、W010、W111等)中的另一个写I/O在物理上连续。重排序逻辑部165可将随机的写I/O转换为顺序的写I/O。
例如,如图4中所示,重新映射的存储器部405内的组合写I/O225可具有按照以下顺序被重新映射并排列的各个写I/O:HDR/LBA0、Wn12/LBA1、W010/LBA2、W111/LBA3、W18/LBA4、W07/LBA5、W01/LBA6、W04/LBA7、Wn9/LBA8、Wn3/LBA9、W15/LBA10、Wn6/LBA11、W12/LBA12和FTR/LBA13。按照此方式,LBA可按照连续方式被排列,使得将组合的写I/O225写入(图1和图2的)一个或更多个非易失性存储装置135更加高效。
在一些实施例中,重新映射的存储器部405可仅被I/O拦截器逻辑部120所知。头部HDR和/或尾部FTR可包括重新映射转换信息。可选地或另外地,头部HDR和/或尾部FTR可包括指示组合的写I/O225有效的信息。在一个或更多个非易失性存储装置135中的具有头部HDR但不具有尾部FTR的任何组合的写I/O225可被认为是无效。这种情况可能是由在提交的冲洗操作CFn期间的突然断电而引起的。在这种情况下,组合的写I/O225可被确定为无效,并可被丢弃。当有效的组合写I/O225随后从将在读I/O操作被读取的一个或更多个非易失性存储装置135中被获得时,存储在头部HDR和/或尾部FTR中的重新映射转换信息可被I/O拦截器逻辑部120用来将期望的数据和/或关联的期望的LBA信息提供给应用132。
如下面进一步描述的,智能冲洗控制逻辑部170可响应于预定义的第N冲洗请求或其它准则而促使物理上连续的组合的写I/O225被写入一个或更多个非易失性存储装置135。
图5是根据本发明构思的实施例的(图1和图2的)I/O拦截器逻辑部120的智能冲洗控制逻辑部170以及I/O拦截器逻辑部120的临时写暂存缓冲器160的示例示图。
重排序逻辑部165不需要被包括在I/O拦截逻辑部120中。相反,在此示例中,如图5中所示,智能冲洗控制逻辑部170可管理多个临时写暂存缓冲器160,诸如缓冲器0(Buffer0)、缓冲器1(Buffer1)、缓冲器2(Buffer2)和缓冲器N(BufferN)。临时写暂存缓冲器160可从(图1和图2的)I/O接口155接收写I/O(例如,W01、W12、Wn3等),并可存储写I/O。多缓冲器暂存队列505可保持(hold)多个临时写暂存缓冲器。
在写I/O尚未被写入到(图1和图2的)一个或更多个非易失性存储装置135中的情况下,智能冲洗控制逻辑部170可从(图1和图2的)I/O接口155接收多个冲洗请求(F0、F1、F2等),并可将写I/O(例如,W01、W12、Wn3等)的写I/O完成(例如,图2的写I/O完成230)传送到应用(例如,图1和图2的应用132)。换句话说,在写I/O实际上被写入到一个或更多个非易失性存储装置135中的任意一个之前,智能冲洗控制逻辑部170可将写I/O的写I/O完成传送到应用132。
智能冲洗控制逻辑部170可促使第一子集的数据写I/O(例如,图2的数据写I/O205)被存储在第一临时写暂存缓冲器Buffer0中,促使第一子集的元数据写I/O(例如,图2的元数据写I/O210)被存储在第二临时写暂存缓冲器Buffer1中,促使第二子集的数据写I/O(例如,图2的数据写I/O215)被存储在第三临时写暂存缓冲器Buffer3中,并促使第二子集的元数据写I/O(例如,图2的元数据写I/O220)被存储在第四临时写暂存缓冲器BufferN中。
智能冲洗控制逻辑部170可响应于预定义的第N冲洗请求并按照接收的顺序促使多缓冲器暂存队列505将写I/O从临时写暂存缓冲器(例如,Buffer0、Buffer1、Buffer2和BufferN)清空到一个或更多个非易失性存储装置135。在此实施例中,避免了对写I/O的重新排序和重新映射,并且不需要额外的头部或尾部。另一方面,性能的提高不像上述实施例一样明显,这是因为LBA基本上按照随机的方式被分送到一个或更多个非易失性存储装置135。在突然断电的事件中,数据一致性仍被保持,这是因为应用意图对数据进行写入的顺序被保存。
图6是根据本发明构思的实施例的(图1和图2的)I/O智能逻辑部120的智能冲洗控制逻辑部170和I/O拦截器逻辑部的临时写暂存缓冲器160的另一示例示图。图6是与图5类似,但图6具有显著差异,LBA具有很大的差距。然而,此实施例的操作与以上参照图5描述的操作相同或相似,因此不重复详细的描述。然而,将理解,图6中示出的具有悬殊差距的LBA值的实施例落在本发明构思内,并可以以与以上参照图5描述的方式相同或相似的方式来实现。
图7至图12是根据本发明构思的实施例的图1的I/O拦截器逻辑部120可被嵌入的各种装置的示意图。
例如,如图7中可看到的,智能电话705可包括以上被详细描述的I/O拦截器逻辑部120。类似地,图8中所示的平板电脑805、图9中所示的笔记本计算机905、图10中所示的移动电话1005、图11中所示的相机1105和图12中所示的桌上型计算机1205可包括以上被详细描述的I/O拦截器逻辑部120。将理解,使用非易失性存储器的任何适当装置可包括以上被详细描述的I/O拦截器逻辑部120,或者可用以上被详细描述的I/O拦截器逻辑部120进行操作。
图13是示出根据本发明构思的实施例的用于使用I/O拦截器逻辑部(例如图1的I/O拦截器逻辑部120)拦截来自应用的I/O的技术的流程图1300。此技术开始于1305,其中,在1305,来自应用的多个写I/O和多个冲洗请求可被I/O拦截器逻辑部的I/O接口拦截。在1310,由I/O接口接收的多个写I/O可被一个或更多个临时写暂存缓冲器存储。在1315,重排序逻辑部可改变存储在一个或更多个临时写暂存缓冲器中的多个写I/O的顺序。在1320,重排序逻辑部可将重排序的多个写I/O组合成组合的写I/O。
在1325,智能冲洗控制逻辑部可从I/O接口接收多个冲洗请求。在1330,在多个写I/O未被写入非易失性存储装置的情况下,智能冲洗控制逻辑部可将多个写I/O的写I/O完成传送到应用。换句话说,在写I/O实际上被写入到一个或更多个非易失性存储装置135中的任意一个之前,智能冲洗控制逻辑部可将写I/O的写I/O完成传送到应用。在1335,响应于多个冲洗请求之中的预定义的第N冲洗请求、阈值数据量被累积或预定义的时间段期满中的至少一个,智能冲洗控制逻辑部可促使组合的写I/O被写入到非易失性存储装置。
图14是示出根据本发明构思的实施例的用于使用I/O拦截器逻辑部(例如图1的I/O拦截器逻辑部120)拦截来自应用的I/O的另一技术的流程图1400。该技术开始于1405,其中,在1405,可由I/O拦截器逻辑部的I/O接口从应用接收多个写I/O和多个冲洗请求。在1410,由I/O接口拦截的多个写I/O可被多个临时写暂存缓冲器存储。在1415,多缓冲器暂存队列可保持多个临时写暂存缓冲器。
在1420,智能冲洗控制逻辑部可从I/O接口接收多个冲洗请求。在1425,在多个写I/O未被写入到非易失性存储装置的情况下,智能冲洗控制逻辑部可将多个写I/O的写I/O完成传送到应用。换句话说,在写I/O实际上被写入到一个或更多个非易失性存储装置135中的任意一个之前,智能冲洗控制逻辑部可将写I/O的写I/O完成传送到应用。在1430,响应于多个冲洗请求中的预定义的第N冲洗请求、阈值数据量被累积和预定义的时间段期满中的至少一个,智能冲洗控制逻辑部可促使多缓冲器暂存队列将多个写I/O从临时写暂存缓冲器清空到非易失性存储装置。
图15是包括根据在此公开的本发明构思的实施例的I/O拦截逻辑部1530的计算系统1500的框图。参照图15,计算系统1500也可包括时钟1510、随机存取存储器(RAM)1515、用户接口1520、调制解调器1525(诸如基带芯片组)、固态驱动器/硬盘(SSD)1540、存储器控制器1545和/或电池1535,其中,时钟1510、随机存取存储器(RAM)1515、用户接口1520、调制解调器1525、固态驱动器/硬盘(SSD)1540、存储器控制器1545和/或电池1535中的任意一个或全部可电连接到系统总线1505。I/O拦截器逻辑部1530可与以上详细描述的I/O拦截器逻辑部120相应,并且如这里所阐述的,I/O拦截器逻辑部1530也可电连接到系统总线1505。
如果计算机系统1500是移动装置,则电池1040可向计算系统1500供电,并且,在此描述的本发明构思的实施例的实现由于将数据更有效地写入存储器而可降低电池消耗。虽然图15中未示出,但是计算系统1500还可包括应用芯片组、相机图像处理器(CIS)、移动DRAM等。
在示例实施例中,计算机系统1500可被用作计算机、便携式计算机、超级移动PC(UMPC)、工作站、上网本、PDA、web平板电脑、无线电话、移动电话、智能电话、电子书、PMP(便携式多媒体播放器)、数字相机、数字音频记录器/播放器、数字图像/视频记录器/播放器、便携式游戏机、导航系统、黑匣子、3维电视机、能够在无线环境下发送信息和接收信息的装置、构成家庭网络的各种电子装置之一、构成计算机网络的各种电子装置之一、构成通讯网络的各种电子装置之一、RFID、或构成计算机系统的各种电子装置之一。
以下讨论旨在提供一种对可实现本发明构思的特定方面的适当机器的简单的、一般的描述。通常,机器包括系统总线,其中,系统总线连接到处理器、存储器(例如,随机存取存储器(RAM)、只读存储器(ROM)或其它状态的保存介质)、存储装置、视频接口和输入/输出接口端口。机器可至少部被来自传统输入装置(诸如键盘、鼠标等)的输入以及来自另一机器的指令、与虚拟现实(VR)环境的交互、生物计量反馈或其它输入信号控制。如在此使用的,术语“机器”旨在广泛地包括单个机器、虚拟机器、或者通信连接的机器、虚拟机器或共同操作的装置的系统。示例性机器包括计算装置(诸如个人计算机、工作站、服务器、便携式计算机、手持装置、电话、平板电脑等)以及诸如私人或公共运输工具(例如汽车、火车、出租车等)的运输装置。
机器可包括嵌入式控制器,诸如可编程或非可编程逻辑装置或阵列、专用集成电路(ASIC)、嵌入式计算机、智能卡等。机器可诸如通过网络接口、调制解调器或其它通信连接来利用与一个或更多个远程机器的一个或更多个连接。机器可通过物理和/或逻辑网络(诸如内联网、互联网、局域网、广域网等)相互连接。本领域技术人员将理解,网络通信可利用各种有线和/或无线短距离或长距离载体和协议,包括射频(RF)、卫星、微波、电气电子工程师协会(IEEE)545.11、光纤、红外、电缆、激光等。
本发明构思的实施例可参照或结合关联数据(包括函数、程序、数据结构、应用程序等)被描述,其中,当关联数据被机器访问时导致机器执行任务或定义抽象数据类型或底层硬件环境。关联数据可被存储在例如易失性和/或非易失性存储器(例如,RAM、ROM等)中,或者可被存储在其它存储装置和它们的关联存储介质(包括硬件驱动器、软盘、光学存储器、磁带、闪存、记忆棒、数字视频盘、生物学存储器等)中。关联数据可以以包、串行数据、并行数据、传播信号等的形式经由传输环境(包括物理和/或逻辑网络)被传送。关联数据可在分布式环境中被使用,并被本地和/或远程地存储已被机器访问。
已参照示出的实施例描述和说明了本发明构思的原理,将认识到,所示出的实施例可在不脱离所述原理的情况下在排列和细节上被修改,并可以以任何期望的形式被合并。虽然前述讨论专注于特定实施例,但是其它配置被考虑。具体地,即使诸如“根据本发明构思的实施例”等的表述在此被使用,这些短语用意在于涉及实施例的可能性,并不旨在将本发明构思限制为特定实施例配置。如这里所使用的,这些术语可涉及被合并为其它实施例的相同或不同实施例。
本发明构思的实施例可包括非暂时性机器可读介质,其中,非暂时性机器可读介质包括可由一个或更多个处理器执行的指令,包括包含用于执行如在此描述的本发明构思的元件的指令的指令。
上述说明性的实施例不应被解释为限制本发明构思。虽然已描述了一些实施例,但是本领域的技术人员将容易理解,在不严重脱离本公开的新颖教导和优点的情况下,能够对这些实施例进行很多修改。因此,所有的这些优点都应被包括在权利要求中限定的本发明构思的范围内。
Claims (25)
1.一种输入/输出(I/O)拦截器,包括:
I/O接口,被配置为与存储栈通信地连接,以拦截来自应用的多个写I/O和多个冲洗请求;
至少一个临时写暂存缓冲器,被配置为从I/O接口接收所述多个写I/O并存储所述多个写I/O;
智能冲洗控制逻辑部,被配置为从I/O接口接收所述多个冲洗请求,在所述多个写I/O未被写入到非易失性存储装置的情况下,将指示所述多个写I/O的写I/O完成的消息传送到所述应用。
2.如权利要求1所述的I/O拦截器,其中,智能冲洗控制逻辑部,还被配置为响应于所述多个冲洗请求之中的第N冲洗请求、阈值数据量被累积和预定义的时间段期满中的至少一个,促使所述多个写I/O被写入到非易失性存储装置,其中,N是预定义的正整数值。
3.如权利要求2所述的I/O拦截器,还包括:
重排序逻辑部,通信地连接到所述至少一个临时写暂存缓冲器,并被配置为对存储所述至少一个临时写暂存缓冲器中的所述多个写I/O的顺序进行重排序,并将重排序的多个写I/O组合成组合写I/O;
其中,智能冲洗控制逻辑部还被配置为响应于所述多个冲洗请求之中的第N冲洗请求、阈值数据量被累积和预定义的时间段期满中的至少一个,促使所述组合写I/O被写入到非易失性存储装置。
4.如权利要求2所述的I/O拦截器,还包括:
多缓冲器暂存队列,被配置为保持所述多个临时写暂存缓冲器;
其中,智能冲洗控制逻辑部还被配置为响应于所述多个冲洗请求之中的第N冲洗请求、阈值数据量被累积和预定义的时间段期满中的至少一个,促使多缓冲器暂存队列将存储在所述至少一个临时写暂存缓冲器中的所述多个写I/O传送到非易失性存储装置并将所述多个写I/O从所述至少一个临时写暂存缓冲器清空。
5.如权利要求2至4中的任一项权利要求所述的I/O拦截器,其中,所述多个冲洗请求所包括的冲洗请求的数量是N。
6.如权利要求2至4中的任一项权利要求所述的I/O拦截器,其中,所述多个冲洗请求所包括的冲洗请求的数量是N,其中,N是3或者大于3的整数。
7.如权利要求3所述的I/O拦截器逻辑部,其中,所述多个写I/O包括:第一子集的数据写I/O、第一子集的元数据写I/O、第二子集的数据写I/O、第二子集的元数据写I/O,并且所述多个冲洗请求包括第一冲洗请求、第二冲洗请求、第三冲洗请求以及第N冲洗请求,
其中,I/O接口被配置为拦截第一子集的数据写I/O、第一冲洗请求、第一子集的元数据写I/O、第二冲洗请求、第二子集的数据写I/O、第三冲洗请求、第二子集的元数据写I/O以及第N冲洗请求。
8.如权利要求7所述的I/O拦截器,其中,重排序逻辑部被配置为:
改变包括在第一子集的数据写I/O、第一子集的元数据写I/O、第二子集的数据写I/O和第二子集的元数据写I/O中的所述多个写I/O的顺序,使得与所述多个写I/O相关联的逻辑块地址按照升序或降序被排列;
将包括在第一子集的数据写I/O、第一子集的元数据写I/O、第二子集的数据写I/O和第二子集的元数据写I/O中的所述重排序的多个写I/O组合成所述组合写I/O。
9.如权利要求7所述的I/O拦截器,其中,重排序逻辑部被配置为:
将所述多个写I/O、头部和尾部复制到重新映射的存储器部以形成所述组合写I/O,使得多个逻辑块地址中的与所述组合写I/O中的所述多个写I/O中的相应的一个写I/O相关联的每一个逻辑块地址按照升序或降序被排列,并使得所述组合写I/O中的所述多个写I/O中的每一个写I/O在重新映射的存储器部中与所述组合的写I/O中的所述多个写I/O中的另一个写I/O在物理上连续。
10.如权利要求9所述的I/O拦截器,其中,智能冲洗控制逻辑部被配置为响应于所述多个冲洗请求之中的第N冲洗请求、阈值数据量被累积和预定义的时间段期满中的至少一个,促使物理上连续的所述组合的写I/O被写入到非易失性存储装置中。
11.如权利要求3所述的I/O拦截器,其中,重排序逻辑部被配置为将所述多个写I/O之中的随机的写I/O转换为顺序的写I/O。
12.如权利要求4所述的I/O拦截器,其中,所述多个写I/O包括:第一子集的数据写I/O、第一子集的元数据写I/O、第二子集的数据写I/O、第二子集的元数据写I/O,并且所述多个冲洗请求包括第一冲洗请求、第二冲洗请求、第三冲洗请求以及第N冲洗请求,
其中,I/O接口被配置为拦截第一子集的数据写I/O、第一冲洗请求、第一子集的元数据写I/O、第二冲洗请求、第二子集的数据写I/O、第三冲洗请求、第二子集的元数据写I/O以及第N冲洗请求。
13.如权利要求12所述的I/O拦截器,其中,所述至少一个临时写暂存缓冲器包括第一临时写暂存缓冲器、第二临时写暂存缓冲器、第三临时写暂存缓冲器以及第四临时写暂存缓冲器,
其中,智能冲洗控制逻辑部被配置为促使第一子集的数据写I/O被存储在第一临时写暂存缓冲器中,促使第一子集的元数据写I/O被存储在第二临时写暂存缓冲器中,促使第二子集的数据写I/O被存储在第三临时写暂存缓冲器中,并促使第二子集的元数据写I/O被存储在第四临时写暂存缓冲器中。
14.一种用于使用输入/输出(I/O)拦截器拦截来自应用的I/O的方法,包括:
通过I/O拦截器的I/O接口,拦截来自应用的多个写I/O和多个冲洗请求;
通过I/O拦截器的至少一个临时写暂存缓冲器,存储由I/O接口拦截的所述多个写I/O;
通过I/O拦截器的智能冲洗控制逻辑部从I/O接口接收所述多个冲洗请求;
在所述多个写I/O未被写入到非易失性存储装置中的情况下,通过智能冲洗控制逻辑部将表示所述多个写I/O的写I/O完成的消息传送到所述应用。
15.如权利要求14所述的方法,还包括:
响应于所述多个冲洗请求之中的第N冲洗请求、阈值数据量被累积和预定义的时间段期满中的至少一个,通过智能冲洗控制逻辑部促使所述多个写II/O拦截器的/O被写入到非易失性存储装置中,其中,N是预定义的正整数值。
16.如权利要求15所述的方法,还包括:
通过I/O拦截器的重排序逻辑部,对存储在所述至少一个临时写暂存缓冲器中的所述多个写I/O的顺序进行重排序;
通过重排序逻辑部,将重排序的多个写I/O组合成组合写I/O;
其中,促使的步骤包括:响应于所述多个冲洗请求之中的预定义的第N冲洗请求、阈值数据量被累积和预定义的时间段期满中的至少一个,通过智能冲洗控制逻辑部促使所述组合写I/O被写入到非易失性存储装置中。
17.如权利要求15所述的方法,还包括:
通过I/O拦截器的多缓冲器暂存队列保持所述至少一个临时写暂存缓冲器,
其中,促使的步骤包括:响应于所述多个冲洗请求之中的第N冲洗请求、阈值数据量被累积和预定义的时间段期满中的至少一个,通过智能冲洗控制器逻辑部促使多缓冲器暂存队列将存储在所述至少一个临时写暂存缓冲器中的所述多个写I/O传送到非易失性存储装置并将所述多个写I/O从所述至少一个临时写暂存缓冲器清空。
18.如权利要求15至17中的任一权利要求所述的方法,其中,所述多个冲洗请求所包括的冲洗请求的数量是N。
19.如权利要求15至17中的任一权利要求所述的方法,其中,所述多个冲洗请求所包括的冲洗请求的数量是N,其中,N是整数三或者大于三的整数。
20.如权利要求15所述的方法,其中,所述多个写I/O包括:第一子集的数据写I/O、第一子集的元数据写I/O、第二子集的数据写I/O、第二子集的元数据写I/O,并且所述多个冲洗请求包括第一冲洗请求、第二冲洗请求、第三冲洗请求以及第N冲洗请求,
其中,拦截的步骤包括:通过I/O接口,拦截第一子集的数据写I/O、第一冲洗请求、第一子集的元数据写I/O、第二冲洗请求、第二子集的数据写I/O、第三冲洗请求、第二子集的元数据写I/O以及第N冲洗请求。
21.如权利要求20所述的计算机实现的方法,
其中,重排序的步骤包括:通过重排序逻辑部,对包括在第一子集的数据写I/O、第一子集的元数据写I/O、第二子集的数据写I/O和第二子集的元数据写I/O中的所述多个写I/O的顺序进行重排序;
其中,组合的步骤包括:通过重排序逻辑部,将包括在第一子集的数据写I/O、第一子集的元数据写I/O、第二子集的数据写I/O和第二子集的元数据写I/O中的所述重排序的多个写I/O组合成所述组合写I/O。
22.如权利要求20所述的方法,其中,组合的步骤包括:通过重排序逻辑部,复制所述多个写I/O、头部和尾部以形成所述组合写I/O,使得多个逻辑块地址中的与所述组合的写I/O中的所述多个写I/O中的相应的一个写I/O相关联的每一个逻辑块地址按照升序或降序被排列,并使得所述组合写I/O中的所述多个写I/O中的每一个写I/O在重新映射的存储器部中与所述组合的写I/O中的所述多个写I/O中的另一个写I/O在物理上连续。
23.如权利要求22所述的方法,其中,响应于所述多个冲洗请求之中的第N冲洗请求、阈值数据量被累积和预定义的时间段期满中的至少一个,,通过智能冲洗控制逻辑部促使物理上连续的所述组合写I/O被写入到非易失性存储装置中。
24.如权利要求17所述的方法,其中,所述多个写I/O包括:第一子集的数据写I/O、第一子集的元数据写I/O、第二子集的数据写I/O、第二子集的元数据写I/O,并且所述多个冲洗请求包括第一冲洗请求、第二冲洗请求、第三冲洗请求以及第N冲洗请求,
其中,拦截的步骤包括:通过I/O接口,拦截第一子集的数据写I/O、第一冲洗请求、第一子集的元数据写I/O、第二冲洗请求、第二子集的数据写I/O、第三冲洗请求、第二子集的元数据写I/O以及第N冲洗请求。
25.如权利要求24所述的方法,其中,所述至少一个临时写暂存缓冲器包括:第一临时写暂存缓冲器、第二临时写暂存缓冲器、第三临时写暂存缓冲器第四临时写暂存缓冲器,
其中,促使的步骤包括:通过智能冲洗控制逻辑部,促使第一子集的数据写I/O被存储在第一临时写暂存缓冲器中,促使第一子集的元数据写I/O被存储在第二临时写暂存缓冲器中,促使第二子集的数据写I/O被存储在第三临时写暂存缓冲器中,并促使第二子集的元数据写I/O被存储在第四临时写暂存缓冲器中。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462031842P | 2014-07-31 | 2014-07-31 | |
US62/031,842 | 2014-07-31 | ||
US14/536,567 US9495102B2 (en) | 2014-07-31 | 2014-11-07 | Input/output (I/O) interceptor that re-orders a plurality of write I/O into combined with I/O with intelligent flush control logic |
US14/536,567 | 2014-11-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105320640A true CN105320640A (zh) | 2016-02-10 |
CN105320640B CN105320640B (zh) | 2020-06-23 |
Family
ID=55180056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510463009.0A Active CN105320640B (zh) | 2014-07-31 | 2015-07-31 | 输入/输出拦截器及使用其的输入/输出拦截方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9495102B2 (zh) |
JP (1) | JP6594057B2 (zh) |
KR (1) | KR102177315B1 (zh) |
CN (1) | CN105320640B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11461010B2 (en) | 2015-07-13 | 2022-10-04 | Samsung Electronics Co., Ltd. | Data property-based data placement in a nonvolatile memory device |
US10282324B2 (en) | 2015-07-13 | 2019-05-07 | Samsung Electronics Co., Ltd. | Smart I/O stream detection based on multiple attributes |
US10656838B2 (en) | 2015-07-13 | 2020-05-19 | Samsung Electronics Co., Ltd. | Automatic stream detection and assignment algorithm |
US10474570B2 (en) * | 2015-11-24 | 2019-11-12 | Cisco Technology, Inc. | Flashware usage mitigation |
US10866905B2 (en) | 2016-05-25 | 2020-12-15 | Samsung Electronics Co., Ltd. | Access parameter based multi-stream storage device access |
US10534709B2 (en) * | 2016-08-31 | 2020-01-14 | Sandisk Technologies Llc | Flush command consolidation |
US10289552B2 (en) * | 2017-05-03 | 2019-05-14 | Western Digital Technologies, Inc. | Storage system and method for flush optimization |
US10446174B2 (en) * | 2017-05-26 | 2019-10-15 | Microsoft Technology Licensing, Llc | File system for shingled magnetic recording (SMR) |
US11314659B2 (en) | 2017-09-05 | 2022-04-26 | International Business Machines Corporation | Using real segments and alternate segments in non-volatile storage |
US10761744B2 (en) * | 2017-09-05 | 2020-09-01 | International Business Machines Corporation | Synchronously performing commit records operations |
US10521115B2 (en) | 2017-09-05 | 2019-12-31 | International Business Machines Corporation | Handling cache and non-volatile storage (NVS) out of sync writes |
KR20200096512A (ko) | 2017-12-18 | 2020-08-12 | 가부시끼 가이샤 구보다 | 작업차 및 트랙터 |
US11561717B2 (en) * | 2020-05-26 | 2023-01-24 | Western Digital Technologies, Inc. | Data integrity protection of SSDs utilizing streams |
US20210182187A1 (en) * | 2020-12-24 | 2021-06-17 | Intel Corporation | Flushing Cache Lines Involving Persistent Memory |
US11500579B1 (en) * | 2021-04-23 | 2022-11-15 | EMC IP Holding Company, LLC | Consolidated write system and method |
US20230214157A1 (en) * | 2021-12-30 | 2023-07-06 | Micron Technology, Inc. | NVMe COMMAND COMPLETION MANAGEMENT FOR HOST SYSTEM MEMORY |
US11954348B2 (en) | 2022-04-08 | 2024-04-09 | Netapp, Inc. | Combining data block I/O and checksum block I/O into a single I/O operation during processing by a storage stack |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8307162B2 (en) * | 2008-07-11 | 2012-11-06 | Seagate Technology Llc | Method and apparatus for cache flush control and write re-ordering in a data storage system |
CN103370685A (zh) * | 2010-09-15 | 2013-10-23 | 净睿存储股份有限公司 | 存储环境中的i/o写入的调度 |
CN103917963A (zh) * | 2011-09-30 | 2014-07-09 | 甲骨文国际公司 | 基于快速持久性存储器的回写储存器高速缓存 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009038394A1 (en) * | 2007-09-21 | 2009-03-26 | Lg Electronics Inc. | Method of packet reordering and packet retransmission |
US9003118B2 (en) | 2009-01-09 | 2015-04-07 | Dell Products L.P. | Systems and methods for non-volatile cache control |
JP5399094B2 (ja) | 2009-02-25 | 2014-01-29 | 株式会社日立情報通信エンジニアリング | 補助記憶装置用フィルタドライバ手段を備えた電子計算機、補助記憶装置用フィルタドライバプログラム、及び、補助記憶装置用フィルタドライバプログラムの記録媒体 |
US8161241B2 (en) | 2010-01-12 | 2012-04-17 | International Business Machines Corporation | Temperature-aware buffered caching for solid state storage |
JP4988008B2 (ja) | 2010-05-13 | 2012-08-01 | 株式会社東芝 | 情報処理装置およびドライバ |
US9367480B2 (en) | 2012-08-07 | 2016-06-14 | Dell Products L.P. | System and method for updating data in a cache |
US9311240B2 (en) * | 2012-08-07 | 2016-04-12 | Dell Products L.P. | Location and relocation of data within a cache |
US9454487B2 (en) | 2012-08-27 | 2016-09-27 | Vmware, Inc. | Transparent host-side caching of virtual disks located on shared storage |
US9584637B2 (en) * | 2014-02-19 | 2017-02-28 | Netronome Systems, Inc. | Guaranteed in-order packet delivery |
-
2014
- 2014-11-07 US US14/536,567 patent/US9495102B2/en active Active
-
2015
- 2015-05-11 KR KR1020150065399A patent/KR102177315B1/ko active IP Right Grant
- 2015-06-25 JP JP2015127658A patent/JP6594057B2/ja active Active
- 2015-07-31 CN CN201510463009.0A patent/CN105320640B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8307162B2 (en) * | 2008-07-11 | 2012-11-06 | Seagate Technology Llc | Method and apparatus for cache flush control and write re-ordering in a data storage system |
CN103370685A (zh) * | 2010-09-15 | 2013-10-23 | 净睿存储股份有限公司 | 存储环境中的i/o写入的调度 |
CN103917963A (zh) * | 2011-09-30 | 2014-07-09 | 甲骨文国际公司 | 基于快速持久性存储器的回写储存器高速缓存 |
Also Published As
Publication number | Publication date |
---|---|
CN105320640B (zh) | 2020-06-23 |
KR102177315B1 (ko) | 2020-11-10 |
US20160034188A1 (en) | 2016-02-04 |
KR20160016562A (ko) | 2016-02-15 |
JP2016035743A (ja) | 2016-03-17 |
JP6594057B2 (ja) | 2019-10-23 |
US9495102B2 (en) | 2016-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105320640A (zh) | 输入/输出拦截器及使用其的输入/输出拦截方法 | |
JP6713906B2 (ja) | ソリッドステートドライブ及びその動作方法 | |
US8341374B2 (en) | Solid state drive and related method of scheduling operations | |
CN102782683B (zh) | 用于数据库服务器的缓冲池扩展 | |
CN105243033B (zh) | 数据处理方法及电子设备 | |
US8392649B2 (en) | Memory storage device, controller, and method for responding to host write commands triggering data movement | |
US10649667B2 (en) | Mitigating GC effect in a RAID configuration | |
US20180150220A1 (en) | System and method for improving storage device i/o performance | |
CN103562878A (zh) | 在镜像虚拟机系统中的存储器检查点设置 | |
KR20120112965A (ko) | 비휘발성 메모리 장치, 이를 스왑 메모리로 이용하는 데이터 처리 장치, 및 이를 이용한 스왑 방법 | |
CN104798063A (zh) | 存储设备和主机设备 | |
CN110377224A (zh) | 具有主机启动缓存区刷新的大容量存储设备 | |
US10146475B2 (en) | Memory device performing control of discarding packet | |
CN109871182A (zh) | 存储装置及其操作方法及发出命令的方法 | |
CN103902475A (zh) | 一种基于队列管理机制的固态硬盘并行访问方法及装置 | |
CN104991737A (zh) | 一种基于存储卡阵列架构的硬盘实现方法 | |
US20150012670A1 (en) | Command executing method, connector and memory storage device | |
CN114706531A (zh) | 数据处理方法、装置、芯片、设备及介质 | |
CN104503924A (zh) | 一种分层存储系统中的区域分配方法及装置 | |
US20160011791A1 (en) | Storage control apparatus, storage system, and program | |
CN108334457B (zh) | 一种io处理方法及装置 | |
CN110309015A (zh) | 一种基于固态硬盘装置的数据写入方法和装置以及设备 | |
US9965183B2 (en) | Method for processing data in storage device and storage device | |
CN112445412B (zh) | 一种数据存储方法及装置 | |
KR20090053164A (ko) | 상태 정보를 관리하는 플래시 메모리 제어 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |