CN109002255B - 存储系统及其操作方法 - Google Patents
存储系统及其操作方法 Download PDFInfo
- Publication number
- CN109002255B CN109002255B CN201810121340.8A CN201810121340A CN109002255B CN 109002255 B CN109002255 B CN 109002255B CN 201810121340 A CN201810121340 A CN 201810121340A CN 109002255 B CN109002255 B CN 109002255B
- Authority
- CN
- China
- Prior art keywords
- pattern matching
- file
- data
- scan
- information
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 26
- 238000013500 data storage Methods 0.000 claims abstract description 45
- 230000004044 response Effects 0.000 claims abstract description 22
- 230000008569 process Effects 0.000 claims description 8
- 230000003111 delayed effect Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 22
- 238000006243 chemical reaction Methods 0.000 description 7
- 230000007704 transition Effects 0.000 description 7
- 239000004065 semiconductor Substances 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 238000012937 correction Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 229920000642 polymer Polymers 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 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
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- 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/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0656—Data buffering arrangements
-
- 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/0658—Controller construction arrangements
-
- 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
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/96—Management of image or video recognition tasks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Databases & Information Systems (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Multimedia (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了一种可移除存储系统,该存储系统包括:数据存储设备,被配置为存储包括第一文件和第二文件的多个文件;主机接口,被配置为从主机接收包括关于多个文件的文件信息和模式信息的模式匹配请求,并向主机传送关于所述多个文件的模式匹配的结果;以及模式匹配加速器,被配置为响应于模式匹配请求而执行模式匹配,其中模式匹配加速器包括扫描引擎和调度器,该扫描引擎被配置为基于模式扫描数据,并且该调度器被配置为控制扫描引擎停止扫描第一文件并开始扫描第二文件。
Description
相关申请的交叉引用
本申请要求于2017年6月7日在韩国知识产权局提交的韩国专利申请第10-2017-0070960号的权益,其公开内容通过引用整体并入本文。
技术领域
本发明构思涉及一种存储系统,更具体地涉及一种用于执行模式匹配(patternmatching)的存储系统和该存储系统的操作方法。
背景技术
存储系统可以响应于主机做出的请求而存储从主机接收的数据或向主机提供存储的数据。主机可以通过与存储系统通信来存储或读取数据,并且可以通过处理数据来执行预期的操作。使用存储在存储系统中的数据的主机的至少一些操作可以包括搜索存储在存储系统中的数据以使数据与特定模式匹配的操作。当存储在存储系统中的数据量非常大时,执行这种模式匹配会是主机的过度负荷,结果,主机的性能会退化。
发明内容
本发明构思提供了一种存储系统,更具体地提供了一种用于执行模式匹配的存储系统和该存储系统的操作方法。
根据本发明构思的一个方面,提供了一种可移除地连接到主机的存储系统,该存储系统包括:数据存储设备,被配置为存储包括第一文件和第二文件的多个文件;主机接口,被配置为从主机接收包括关于所述多个文件的文件信息和模式信息的模式匹配请求,并向主机传送关于所述多个文件的模式匹配的结果;以及模式匹配加速器,被配置为响应于模式匹配请求而执行模式匹配,其中模式匹配加速器包括扫描引擎和调度器,该扫描引擎被配置为基于模式扫描数据,并且该调度器被配置为控制扫描引擎停止扫描第一文件并开始扫描第二文件。
根据本发明构思的另一方面,提供了一种可移除地连接到主机的存储系统,该存储系统包括:数据存储设备,被配置为存储多个文件;主机接口,被配置为从主机接收包括关于所述多个文件的文件信息和模式信息的模式匹配请求,并向主机传送关于所述多个文件的模式匹配的结果;以及模式匹配加速器,被配置为响应于模式匹配请求而执行模式匹配,其中模式匹配加速器包括多个扫描引擎和调度器,所述多个扫描引擎被配置为基于模式扫描数据,并且该调度器被配置为将所述多个文件中的至少一些作为数据动态分配给多个扫描引擎中的每一个。
根据本发明构思的另一方面,提供了一种操作存储系统的方法,该存储系统可移除地连接到主机并且包括被配置为存储多个文件的数据存储设备,该方法包括:从主机接收包括关于所述多个文件的文件信息和模式信息的模式匹配请求;响应于模式匹配请求,关于所述多个文件执行模式匹配;以及向主机传送模式匹配的结果,其中执行模式匹配包括将所述多个文件中的至少一些动态分配给多个扫描引擎,以及经由多个扫描引擎中的每一个基于模式来扫描所分配的文件中包括的数据。
附图说明
从以下结合附图进行的详细描述,将更清楚地理解本发明构思的实施例,在附图中:
图1是示出根据本公开的示例实施例的用于与主机进行通信的存储系统的框图;
图2A至图2C是示出根据本公开的示例实施例的图1的模式匹配请求的示例的图;
图3是示出根据本公开的示例实施例的图1的模式匹配结果的示例的图;
图4是示出根据本公开的示例实施例的图1的模式匹配信息的示例的图;
图5是示出根据本公开的示例实施例的图1的模式匹配加速器按时间顺序的示例操作的图;
图6是示出根据本公开的示例实施例的图1的存储系统的示例结构的框图;
图7是示出根据本公开的示例实施例的图6的模式匹配加速器的示例结构的框图;
图8A至8D是示出根据本公开的示例实施例的图7的调度器将新文件分配给扫描引擎的操作的示例的流程图;
图9是示出根据本公开的示例实施例的图6的模式匹配加速器的示例结构的框图;
图10是示出根据本公开的示例实施例的图6的模式匹配加速器的示例结构的框图;
图11是示出根据本公开的示例实施例的图10的多个扫描引擎按时间顺序的示例操作的图;
图12是示出根据本公开的示例实施例的存储系统的操作的示例的流程图;
图13是示出根据本公开的示例实施例的存储系统的操作的示例的流程图;以及
图14是示出根据本公开的示例实施例的包括存储系统的正则表达式匹配系统的框图。
具体实施方式
图1是示出根据本公开的示例实施例的用于与主机20进行通信的存储系统10的框图。如下面将描述的,存储系统10可以响应于主机20的请求(例如,模式匹配请求)而关于存储在存储系统10中的数据执行模式匹配。
存储系统10和主机20可以配置数据处理系统。例如,存储系统10和主机20可以配置固定数据处理系统(诸如台式计算机、工作站、数据中心、互联网数据中心、企业专用数据存储系统、存储区域网络(SAN)、或网络附加存储(NAS)),或者可以配置移动数据处理系统(诸如膝上型计算机、蜂窝电话、或智能电话)。
存储系统10和主机20借以彼此通信的接口30可以使用电信号和/或光信号。该接口可以是串行高级技术附件(SATA)接口、SATA快速(SATAe)接口、串行附接的小型计算机系统接口(串行附接的SCSI,即SAS)、外围组件互连快速(PCIe)接口、非易失性存储器快速(NVMe)接口、高级主机控制器接口(AHCI)或其组合。
存储系统10可以与主机20连接以用于数据通信,而数据存储系统可以从主机移除以连接到另一主机。作为非限制性示例,存储系统10可以包括半导体存储器设备(诸如固态驱动器或固态盘(SSD)、嵌入式SSD(eSSD)、通用快闪存储器(UFS)、多媒体卡(MMC)或嵌入式MMC(eMMC)),或者可以包括与半导体存储器设备不同的存储介质(诸如硬盘驱动器(HDD)或磁带)。如图1所示,存储系统10可以包括主机接口100、存储控制器200、数据存储设备300和模式匹配加速器400。
主机接口100可以经由接口30从主机20接收请求。例如,主机接口100可以经由接口30从主机20接收写入请求和数据,并且可以向存储控制器200传送所接收的写入请求。此外,如图1所示,主机接口100可以经由接口30从主机20接收模式匹配请求PM_REQ,并且可以向模式匹配加速器400传送所接收的模式匹配请求PM_REQ。如下面将参考图2A至2C描述的,模式匹配请求PM_REQ可以包括执行模式匹配所需的信息。
主机接口100可以经由接口30针对来自主机20的请求提供响应。例如,主机接口100可以响应于读取请求而传送从存储系统读取的相应数据。同样地,主机接口100可以经由接口30向主机20传送由模式匹配加速器400准备的模式匹配结果PM_RES和模式匹配信息PM_INFO。如下面将参考图3和图4描述的,模式匹配结果PM_RES可以包括关于具有匹配模式的数据的信息,并且模式匹配信息PM_INFO可以包括关于模式匹配操作的信息。
存储控制器200可以通过管理存储在数据存储设备300中的数据来处理从主机20接收的访问请求。例如,存储控制器200可以响应于经由主机接口100接收的主机20的写入请求而将数据写入存储设备300,或者可以响应于经由主机接口100接收的主机20的读取请求而读取存储在数据存储设备300中的数据并经由主机接口100向主机20传送数据。在一些实施例中,主机20向存储系统10提供的地址可以不与存储在数据存储设备300中的地址具有相同的格式,并且由主机20提供的地址可以由数据存储设备300转换。
数据存储设备300可以由存储控制器20控制,并且可以存储多个文件FILE_1至FILE_K。文件是由主机20一次管理的数据单元,并且存储控制器200可以响应于主机20的读取请求,向主机20提供存储在数据存储设备300中的至少一些文件。如上所述,数据存储设备300可以包括半导体存储器设备,或者可以包括与半导体存储器设备不同的存储介质。
模式匹配加速器400可以响应于来自主机20的模式匹配请求PM_REQ执行。可以对存储在数据存储设备300中的数据执行模式匹配,例如,在模式匹配过程中可能牵涉多个文件FILE_1至FILE_K中的至少一些。模式匹配加速器400可以向主机20提供模式匹配结果PM_RES和/或模式匹配信息PM_INFO。如图1所示,模式匹配加速器400可以通过与存储控制器200进行通信来访问存储在数据存储设备300中的数据,例如多个文件FILE_1至FILE_K中的至少一些。模式匹配加速器400可以包括通过逻辑综合设计的硬件块,或者可以包括由处理器实现的软件块等。如图1所示,模式匹配加速器400可以包括扫描引擎410和调度器420。
扫描引擎410可以通过基于模式扫描数据来确定与模式匹配的数据的位置。在一些实施例中,扫描引擎410可以包括能够执行确定性有限自动机(DFA)的硬件,并且可以接收状态转换规则表(STRT)作为模式信息。扫描引擎410可以通过基于STRT顺序地将数据扫描为字节来将所接收的数据从由STRT定义的状态开始进行转换,并且在到达指示模式匹配的状态时可以提供关于到达的状态的信息。然而,扫描引擎410不限于上述结构,并且可以具有通过扫描数据执行模式匹配的任何结构。
调度器420可以通过调度由扫描引擎410执行的操作来提高扫描引擎410的效率。如下面将参考图2A至图2C描述的,由主机20提供的模式匹配请求PM_REQ可以包括关于作为用于搜索模式的对象的多个文件的信息。虽然关于多个文件的各个模式匹配操作可以彼此独立地执行,但是由于模式匹配要求顺序扫描数据的操作,所以关于每个文件的模式匹配操作可能由于各种原因停止。各种原因可以包括从数据存储设备300读取失败、读取延迟、存储扫描结果的延迟、或数据扫描操作期间的错误发生。在停止扫描操作的原因未消除时模式匹配操作会被保持,因此会降低模式匹配操作的效率。
调度器420可以控制扫描引擎410以停止扫描多个文件中的一个并开始扫描多个文件中的另一个。根据示例实施例,调度器420可以通过将特定文件分配给扫描引擎410来开始扫描操作。调度器420可以停止扫描引擎扫描第一文件FILE_1,并且替代地开始关于第二文件FILE_2的扫描操作。当发生停止扫描引擎410的扫描操作的事件时,调度器420可以通过停止关于当前分配给扫描引擎410的文件的扫描操作并开始关于另一文件的扫描操作来提高扫描引擎410的效率,结果,会提高模式匹配操作的效率。
图2A至图2C是示出图1的模式匹配请求PM_REQ的示例的图。主机20可以经由接口30向存储系统10传送模式匹配请求PM_REQ,并且模式匹配加速器400可以经由主机接口100接收模式匹配请求PM_REQ。在一些实施例中,模式匹配请求PM_REQ可以是图1的接口30支持的命令集中的新添加的命令。例如,接口可以是SATA、SAS或NVMe。
参考图2A,模式匹配请求PM_REQ可以包括模式信息P_INFO。模式信息P_INFO可以定义执行模式匹配所需的模式。例如,如图2A所示,模式信息P_INFO可以包括STRT。如上面参考图1描述的,扫描引擎410可以包括能够执行DFA的硬件,并且可以基于STRT按字节顺序地扫描数据作为模式信息。然而,图2A和2B所示的模式信息P_INFO仅是一个示例。在一些实施例中,模式信息P_INFO可以包括与STRT不同类型的数据。
模式匹配请求PM_REQ还可以包括文件信息F_INFO。文件信息F_INFO可以定义作为模式匹配的对象的至少一个数据单元。例如,如图2A所示,文件信息F_INFO可以包括关于至少一个文件的信息,并且关于一个文件的信息可以包括文件标识符F_ID、以及地址信息LBA和大小信息SIZE的至少一个对{LBA,SIZE}。文件标识符F_ID可以用来识别包括地址信息LBA和大小信息SIZE的文件。例如,调度器420可以通过文件标识符识别数据的特征信息,并且能够通过相应地控制扫描引擎410基于该信息彼此独立地处理每个文件。存储在数据存储设备300中的数据可以由地址信息LBA和大小信息SIZE的对{LBA,SIZE}来定义。在一些实施例中,对应于一个文件的地址信息LBA和大小信息SIZE的对{LBA,SIZE}可以以要执行的模式匹配(或扫描)的顺序来布置,并且调度器420可以控制扫描引擎410根据地址信息LBA和大小信息SIZE的对{LBA,SIZE}的顺序来执行扫描操作。如图2A所示基于地址信息LBA和大小信息SIZE的对{LBA,SIZE}定义数据仅是一个示例,例如,文件信息F_INFO可以包括开始地址信息和结束地址信息的对。
参考图2B,模式匹配请求PM_REQ可以包括要求信息R_INFO。要求信息R_INFO可以包括来自主机20的关于在存储系统10中执行的模式匹配的至少一个要求。例如,如图2B所示,要求信息R_INFO可以包括时间要求T_LIM,该时间要求T_LIM是完成在存储系统10中执行的模式匹配操作所需的时间。要求信息R_INFO可以进一步包括指示模式匹配请求PM_REQ的优先顺序的优先顺序PRI,并且还可以包括用于确定模式匹配方法的方案要求SCH。
参考图2C,模式匹配请求PM_REQ可以不包括模式信息P_INFO和/或可以不包括要求信息R_INFO。换句话说,在向存储系统10传送模式匹配请求PM_REQ之后,主机20可以独立地向存储系统10传送文件信息F_INFO。例如,主机20可以通过向存储系统10传送包括模式信息P_INFO的模式匹配请求PM_REQ来允许存储系统10开始模式匹配操作,然后另外可以将每次引用不同数据的文件信息F_INFO至少一次地传送到存储系统10。在接收到模式匹配请求PM_REQ之后,存储系统10可以基于初始接收的模式匹配请求PM_REQ中包括的模式信息P_INFO和随后接收的文件信息F_INFO来继续模式匹配操作。
图3是示出图1的模式匹配结果PM_RES的示例的图。模式匹配加速器400可以经由主机接口100将模式匹配结果PM_RES提供给主机20。模式匹配结果可以指示数据是否包括匹配模式。
参考图3,模式匹配结果PM_RES可以包括关于至少一个数据单元的信息。例如,如图3所示,模式匹配结果PM_RES可以包括文件标识符F_ID以及状态标识符S_ID和偏移OFF的至少一个对{S_ID,OFF},作为关于至少一个数据单元的信息。文件标识符F_ID可以指示其中的数据具有要找到的模式的文件。扫描引擎410可以根据模式匹配请求PM_REQ中包括的模式信息P_INFO(例如,STRT)来扫描数据,并且状态标识符S_ID可以指示找到的匹配模式处于的状态。偏移OFF可以指示数据中找到模式的位置。图3所示的模式匹配结果PM_RES仅是一个示例,并且不同于图3所示的示例,模式匹配结果PM_RES可以包括指示具有找到的模式的数据的位置的信息。
图4是示出图1的模式匹配信息PM_INFO的示例的图。模式匹配加速器400可以经由主机接口100将模式匹配信息PM_INFO提供给主机20。
参考图4,可以在模式匹配加速器400(例如,调度器420)中生成模式匹配信息PM_INFO,作为执行模式匹配的结果。模式匹配信息PM_INFO可以包括关于模式匹配操作的信息。例如,模式匹配信息PM_INFO可以包括为完成模式匹配而估计的时间、执行模式匹配的扫描引擎的信息、以及关于扫描的文件的信息。模式匹配加速器400可以响应于主机20对模式匹配信息PM_INFO的请求而向主机20提供模式匹配信息PM_INFO,可以在确定主机20的模式匹配请求PM_REQ中包括的要求信息R_INFO难以满足时将模式匹配信息PM_INFO提供给主机20,或者可以在根据模式匹配请求PM_REQ执行模式匹配的过程期间周期性地向主机20提供模式匹配信息PM_INFO。图4所示的模式匹配信息PM_INFO中包括的信息仅是一个示例。模式匹配信息PM_INFO可以仅包括一条信息,或者可以进一步包括图4中未示出的信息。
图5是示出图1的模式匹配加速器400按时间顺序的示例操作的图。在第一情况CASE_A下,当在时间t11处发生停止扫描引擎410的扫描操作的事件时,扫描引擎410执行关于多个文件的扫描操作而无需调度器420的控制,并且在第二情况CASE_B下,扫描引擎410在调度器420的控制下执行关于多个文件的扫描操作。调度器420可以通过调度由扫描引擎410执行的操作来提高扫描引擎410的利用率。
参考图5的“CASE_A”,在发生导致扫描操作停止的事件的时间t11处,扫描引擎410可以停止扫描“F_ID=X”的数据的操作。只要在时间t11处导致扫描操作停止的事件不被解决,扫描引擎410的扫描操作不会重新开始,结果,扫描引擎410变为空闲,因此会降低模式匹配操作的效率。
参考图5的“CASE_B”,调度器420可以监视导致扫描引擎410的扫描操作停止的事件。因此,调度器420可以识别在时间t11处发生了事件。在扫描引擎410停止扫描其中数据标识符指示“F_ID=X”的数据的操作之后,调度器420可以存储扫描引擎410的上下文。扫描引擎410的上下文可以指示在扫描引擎变为空闲的时间t11处扫描引擎的状态。例如,调度器420可以包括能够存储扫描引擎410的多个上下文的寄存器,并且可以将在时间t11处的扫描引擎410的上下文存储在寄存器之一中,以稍后恢复在时间t11处停止的扫描数据的操作。
在时间t12处,调度器420可以完成存储扫描引擎410的上下文,并且可以将另一上下文加载到扫描引擎410。在时间t12处加载到扫描引擎410的上下文可以用于扫描引擎410开始扫描“F_ID=Y”的数据。“F_ID=Y”的扫描数据可以指示扫描引擎重新开始扫描操作的数据。例如,调度器420可以访问用于存储多个上下文的寄存器当中的、在扫描“F_ID=Y”的数据的操作时存储扫描引擎410的上下文的寄存器,并且可以从该寄存器读取上下文并将上下文加载到扫描引擎410。
在时间t13处,调度器420可以完成将上下文加载到扫描引擎410,并且可以控制扫描引擎410开始扫描“F_ID=Y”的数据的操作。因此,当扫描引擎410可以开始扫描“F_ID=Y”的数据的操作时,调度器420可以再次监视可能导致扫描引擎410的扫描操作停止的事件。结果,在“CASE_B”的情况下,尽管在时间t11处发生已经停止扫描“F_ID=X”的数据的操作的事件,扫描引擎410也可以开始扫描“F_ID=Y”的数据的操作,并且与“CASE_A”相比较,可以提高扫描引擎410的效率和得到的模式匹配操作的效率。尽管为了方便描述,在下文中将通过引用示例来描述本公开的示例实施例,在该示例中如图5所示,扫描引擎410由于发生事件而停止扫描“F_ID=X”的数据的操作,并开始扫描“F_ID=Y”的数据的操作。
图6是示出图1的存储系统10的示例结构的框图。图6的存储系统10'可以与主机20通信,并且图6的模式匹配加速器400'可以通过响应于来自主机20的模式匹配请求PM_REQ执行模式匹配,将模式匹配结果PM_RES和/或模式匹配信息PM_INFO提供给主机20。
在图6的示例中,存储系统10'可以包括存储数据的半导体存储器设备。如图6所示,存储系统10'可以包括主机接口100'、存储控制器200'、数据存储设备300'、模式匹配加速器400'、缓冲存储器500'、NVM接口600'和总线700',并且主机接口100'、存储控制器200'、模式匹配加速器400'、缓冲存储器500'和NVM接口600'可以经由总线700'彼此通信。
数据存储设备300'可以包括多个NVM。NVM可以指即使电源被阻断也不丢失存储的数据的存储器,并且数据存储设备300'可以包括例如电可擦除可编程只读存储器(EEPROM)、快闪存储器、相变随机存取存储器(PRAM)、电阻式随机存取存储器(RRAM)、纳米浮栅存储器(NFGM)、聚合物随机存取存储器(PoRAM)、磁性随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)等,以作为NVM。
NVM接口600'和数据存储设备300'可以经由多个通道CH_1至CH_L彼此通信。例如,数据存储设备300'中包括的NVM的第一组301可以经由第一通道CH_1与NVM接口600'通信,NVM的第二组302可以经由第二通道CH_2与NVM接口600'通信,并且NVM的第三组303可以经由第L通道CH_L与NVM接口600'通信。NVM的第一至第三组301至303可以彼此独立地与NVM接口600'通信。例如,包括在不同通道中的NVM可以并行执行读取或写入操作。
存储控制器200'可以通过管理数据存储设备300'来处理图1的主机20关于数据存储设备300'的访问请求,例如,数据读取请求、数据写入请求等。例如,存储控制器200'可以包括地址映射表,并且可以通过参考地址映射表将经由主机接口100'从主机20接收的地址(即逻辑地址)转换为用于访问数据存储设备300'的地址(即物理地址)。在一些实施例中,如图6所示,存储控制器200'可以经由主机接口100'接收模式匹配请求PM_REQ,可以从包括在模式匹配请求PM_REQ中的文件信息F_INFO中提取逻辑地址,并且可以将逻辑地址转换为物理地址。此外,存储控制器200'可以执行诸如纠错、垃圾回收和重编程操作的操作。在一些实施例中,存储控制器200'可以在主机20和数据存储设备300'之间提供闪存转换层(FTL)。
在存储控制器200'管理数据存储设备300'时,可以生成关于数据存储设备300'(即NVM)的信息。如图6所示,存储控制器200'可以经由总线700'向模式匹配加速器400'提供关于数据存储设备300'的信息作为存储信息S_INFO,并且模式匹配加速器400'可以基于存储信息S_INFO执行模式匹配。例如,如上面参考图1描述的,模式匹配加速器400'可以包括调度器和扫描引擎,并且调度器可以基于从存储控制器200'提供的存储信息S_INFO来控制扫描引擎。下面将参考图8A至8D描述模式匹配加速器400'基于存储信息S_INFO执行模式匹配的操作。
缓冲存储器500'可以临时存储经由总线700'接收的数据,并且可以将存储的数据提供给存储系统10'的其它元件。例如,缓冲存储器500'可以存储经由主机接口100'从主机20接收的数据,或者可以存储从数据存储设备300'读取的数据
在一些实施例中,如图6所示,缓冲存储器500'可以将文件数据F_DATA提供给模式匹配加速器400',并且模式匹配加速器400'可以通过扫描文件数据F_DATA来执行模式匹配。文件数据F_DATA可以是由存储控制器200'或由模式匹配加速器400'基于包括在模式匹配请求PM_REQ中的文件信息(例如,图2A的F_INFO)从数据存储设备300'读取的并被存储在缓冲存储器500'中的数据。例如,文件数据F_DATA可以是包括在数据存储设备300'中的NVM的页面单元。模式匹配加速器400'可以通过访问缓冲存储器500'来获得文件数据F_DATA。在一些实施例中,如图6所示,模式匹配加速器400'可以经由NVM接口600'直接从数据存储设备300'读取文件数据F_DATA。在模式匹配加速器400'中接收的文件数据F_DATA可以被存储在模式匹配加速器400'的内部存储空间中。
在一些实施例中,模式匹配加速器400'可以支持多种模式匹配方法。例如,模式匹配加速器400'可以通过基于接收文件数据F_DATA的倾向选择多种模式匹配方法之一来执行模式匹配,或者如上面参考图2B描述的,可以通过基于模式匹配请求PM_REQ的要求信息R_INFO中所包括的方案要求选择多种模式匹配方法之一来执行模式匹配。
图7是示出图6的模式匹配加速器400'的示例结构的框图。如上面参考图6描述的,图7的模式匹配加速器400a可以接收模式匹配信息PM_INFO、存储信息S_INFO和文件数据F_DATA,并且可以输出模式匹配结果PM_RES和模式匹配信息PM_INFO。如图7所示,模式匹配加速器400a可以包括扫描引擎410a、调度器420a、报告队列430a、数据缓冲器440a和转换表450a。下面将参考图6来描述图7。
数据缓冲器440a可以收集并存储对应于至少一个文件的文件数据F_DATA。也就是说,数据缓冲器440a可以存储与包括在文件信息F_INFO中的至少一些文件标识符对应的文件数据F_DATA。因此,当由调度器420a将新文件分配给扫描引擎410a时,可以从数据缓冲器440a向调度器420a提供对应于所分配的文件的文件数据F_DATA,并且可以将与先前分配的文件对应的文件数据F_DATA保留在数据缓冲器440a中。
调度器420a可以接收存储信息S_INFO和文件信息F_INFO,并且可以从数据缓冲器440a接收文件数据F_DATA。调度器420a可以基于存储信息S_INFO和文件信息F_INFO将文件分配给扫描引擎410a。例如,调度器420a可以基于存储信息S_INFO和文件信息F_INFO来生成用于控制扫描引擎410a的操作(例如,扫描操作的停止、开始等)的控制信号CTR,可以从数据缓冲器440a获得与所分配的文件对应的文件数据F_DATA,并且可以从获得的文件数据F_DATA生成数据流STR(例如,以字节为单位)并将数据流STR提供给扫描引擎410a。另外,调度器420a可以基于存储信息S_INFO、文件信息F_INFO、文件数据F_DATA和从扫描引擎410a接收的上下文信号CXT中的至少一个来生成模式匹配信息PM_INFO,并且输出模式匹配信息PM_INFO。
如图7中的虚线所表示的,调度器420a可以从模式匹配加速器400a的其它元件(即,扫描引擎410a、报告队列430a和数据缓冲器440a)接收信号,并且可以监视在扫描引擎410a、报告队列430a和数据缓冲器440a中发生的事件。通过监视事件,当发生事件时,调度器420a可以将与当前分配的文件不同的文件分配给扫描引擎410a。下面将参考8A至8D描述调度器420a将新文件分配给扫描引擎410a的操作的示例。
如图7所示,调度器420a可以包括上下文寄存器421。调度器420a可以基于从扫描引擎410a接收的上下文信号CXT将扫描引擎410a的上下文存储在上下文寄存器421之一中,或者可以基于存储在上下文寄存器421之一中的上下文将上下文信号CXT提供给扫描引擎410a。例如,当调度器420a停止关于分配给扫描引擎410a的文件的扫描操作时,调度器420a可以基于从扫描引擎410a接收的上下文信号CXT将扫描引擎410a的上下文存储在上下文寄存器421之一中。另外,当调度器420a将新文件分配给扫描引擎410a时,调度器420a可以通过从上下文寄存器421当中的、存储与要分配的文件对应的上下文的寄存器中所存储的上下文生成上下文信号CXT并将上下文信号CXT提供给扫描引擎410a,将新的上下文加载到扫描引擎410a。
扫描引擎410a可以通过参考转换表450a来处理从调度器420a接收的数据流STR,并且因此可以执行扫描文件数据F_DATA的操作。例如,如上面参考图2A等描述的,模式信息P_INFO可以包括STRT,并且如图7所示,转换表450a可以存储模式信息P_INFO。扫描引擎410a可以通过参考转换表450a基于数据流STR确定要转换到的状态,并且可以转换到所确定的状态。当扫描引擎410a转换到对应于模式匹配的状态时,扫描引擎410a可以生成结果信号RES并将结果信号RES提供给报告队列430a。例如,结果信号RES可以包括关于扫描引擎410a的状态的信息。
报告队列430a可以从扫描引擎410a接收结果信号RES,并且可以基于结果信号RES临时存储扫描结果。另外,报告队列430a可以从扫描引擎410a或调度器420a接收文件信息和关于模式匹配的数据中的位置的信息,并且结果信号RES、文件信息和关于模式匹配的数据中的位置的信息通常可以被称为扫描结果。报告队列430a可以临时存储扫描结果,并且可以输出包括扫描结果的模式匹配结果PM_RES。
图8A至8D是示出图7的调度器420a将新文件分配给扫描引擎410a的操作的示例的流程图。详细地,图8A至8D示出了关于当前分配给扫描引擎410a的“F_ID=X”的文件数据F_DATA的扫描操作停止并且关于“F_ID=Y”的文件数据F_DATA的扫描操作开始的示例。下面将参考图7来描述图8A至8D。
参考图8A,在操作S11中,扫描引擎410a可以扫描“F_ID=X”的文件数据F_DATA。在操作S12中,调度器420a可以获得随后的文件数据F_DATA的读取等待时间(latency)。读取等待时间可以指从数据存储设备(例如,图6的300')读取文件数据F_DATA所需的时间,并且从存储控制器(例如,图6的200')提供的存储信息S_INFO可能包括读取等待时间。从数据存储设备300'读取文件数据F_DATA所需的时间可以根据存储控制器200'执行的操作(例如,纠错、垃圾回收等)和/或包括在数据存储设备300'中的NVM的状态(例如,根据主机的写入请求的写入操作处理状态)而变化。
在操作S13中,调度器420a可以确定读取等待时间是否等于或大于参考值。当读取等待时间小于参考值时,扫描引擎410a可以根据操作S11继续扫描“F_ID=X”的文件数据F_DATA的操作。当读取等待时间等于或大于参考值时,扫描引擎410a可以根据调度器420a的控制在操作S14中停止扫描“F_ID=X”的文件数据F_DATA,然后可以在操作S15中开始扫描“F_ID=Y”的文件数据F_DATA。也就是说,当由扫描引擎410a随后扫描的“F_ID=X”的文件数据F_DATA的至少一部分的读取等待时间很大时,扫描引擎410a的扫描操作可能停止。调度器420a可以基于读取等待时间来确定扫描“F_ID=X”的文件数据F_DATA的操作将停止,并且可以根据确定结果将另一文件(即“F_ID=Y”的文件)分配给扫描引擎410a。
参考图8B,在操作S21中,扫描引擎410a可以扫描“F_ID=X”的文件数据F_DATA。在操作S22中,调度器420a可以确定随后的文件数据F_DATA对于数据缓冲器440a是否足够。例如,调度器420a可以基于存储在数据缓冲器440a中的“F_ID=X”的文件数据F_DATA的大小来确定当前提供给扫描引擎410a的数据流STR的偏移,以及随后的文件数据F_DATA对于数据缓冲器440a是否足够的参考值。当随后的文件数据F_DATA足够时,扫描引擎410a可以根据操作S21继续扫描“F_ID=X”的文件数据F_DATA的操作。当随后的文件数据F_DATA不足时,扫描引擎410a可以根据调度器420a的控制,在操作S23中停止扫描“F_ID=X”的文件数据F_DATA,然后可以在操作S24中开始扫描“F_ID=Y'的文件数据F_DATA。
参考图8C,在操作S31中,扫描引擎410a可以扫描“F_ID=X”的文件数据F_DATA。在操作S32中,调度器420a可以确定在扫描引擎410a的操作中是否发生了错误。作为非限制性示例,可能发生这样的错误,诸如转换到在由扫描引擎410a引用的转换表450a中存储的模式信息P_INFO中没有定义的状态、或者出现模式信息P_INFO中没有定义的转换条件。当没有发生错误时,扫描引擎410a可以根据操作S31继续扫描“F_ID=X”的文件数据F_DATA的操作。当发生错误时,扫描引擎410a可以根据调度器420a的控制在操作S33中停止扫描“F_ID=X”的文件数据F_DATA,然后可以在操作S34中开始扫描“F_ID=Y”的文件数据F_DATA。
参考图8D,在操作S41中,扫描引擎410a可以扫描“F_ID=X”的文件数据F_DATA。在操作S42中,调度器420a可以确定扫描结果在报告队列430a中的存储是否被延迟。例如,报告队列430a可以具有有限的存储空间,并且报告队列430a中的空存储空间的大小可以根据下述项改变:根据扫描引擎410a输出的结果信号RES在报告队列430a中存储扫描结果的速率;以及输出模式匹配结果PM_RES的速率。当在报告队列430a中没有空的存储空间或者有很少空的存储空间时,扫描结果在报告队列430a中的存储可以被延迟,并且可以停止扫描引擎410a的扫描操作以防止先前存储在报告队列430a中的扫描结果丢失。因此,调度器420a可以确定扫描结果在报告队列430a中的存储是否被延迟,并且因此,当扫描结果在报告队列430a中的存储不被延迟时,扫描引擎410a可以根据操作S41继续扫描“F_ID=X”的文件数据F_DATA的操作,而当扫描结果在报告队列430a中的存储被延迟时,扫描引擎410a可以根据调度器420a的控制在操作S43中停止扫描“F_ID=X”的文件数据F_DATA,然后可以在操作S44中开始扫描“F_ID=Y”的文件数据F_DATA。因此,关于“F_ID=X”的文件数据F_DATA的扫描操作可以稍后在其上下文被存储时被恢复,并且扫描引擎410a可以执行关于“F_ID=Y”的文件数据F_DATA的扫描操作,直到报告队列430a具有空的存储空间。
上面参考图8A至8D描述的扫描引擎410a和调度器420a的操作仅是示例。也就是说,根据本公开的示例实施例的调度器420a可以监视导致扫描引擎410a的扫描操作停止的各种事件,并且可以在发生事件时将新文件分配给扫描引擎410a。
图9是示出根据本公开的示例实施例的图6的模式匹配加速器400'的示例结构的框图。如图9所示,模式匹配加速器400b可以包括扫描引擎410b、调度器420b、报告队列430b、数据缓冲器440b和转换表450b。与图7的模式匹配加速器400a相比,图9的模式匹配加速器400b可以包括用于存储关于多个模式的信息的转换表450b。
转换表450b可以收集并存储对应于多个模式的模式信息P_INFO。在一些实施例中,模式匹配请求PM_REQ可以包括模式信息P_INFO,其包括与多个模式对应的多个STRT,并且转换表450b可以存储与多个模式对应的模式信息P_INFO。在一些实施例中,如上面参考图2A描述的,模式匹配请求PM_REQ可以包括模式信息P_INFO,其包括与一个模式对应的STRT,并且转换表450b可以从主机提供的多个模式匹配请求PM_REQ收集与多个模式对应的模式信息P_INFO,并存储模式信息P_INFO。因此,扫描引擎410b的上下文可以包括指示转换表450b之一的表格信息,并且可以经由上下文信号CXT在调度器420b和扫描引擎410b之间传输。
图10是示出根据本公开的示例实施例的图6的模式匹配加速器400'的示例结构的框图。如图10所示,模式匹配加速器400c可以包括扫描引擎410c、调度器420c、报告队列430c、数据缓冲器440c和转换表450c。与图7和图9的模式匹配加速器400a和400b相比,图10的模式匹配加速器400c可以包括扫描引擎410c,并且可以包括由扫描引擎410c分别引用的转换表450c以及用于存储由扫描引擎410c并行生成的扫描信号RES的报告队列430c。而且,数据缓冲器440c可以收集并存储对应于多个文件的文件数据F_DATA,以便将文件数据F_DATA提供给扫描引擎410c。
参考图10,调度器420c可以生成用于扫描引擎410c的控制信号CTR和数据流STR,并且可以向扫描引擎410c传送上下文信号CXT以及从扫描引擎410c接收上下文信号CXT。下面将参考图11描述调度器420c控制扫描引擎410c的操作。
模式匹配加速器400c可以包括扫描引擎410c,扫描引擎410c可以由调度器420c控制以最小化扫描操作停止的时段,因此可以提高模式匹配操作的效率。每个扫描引擎410c可以独立地执行关于所分配的文件的扫描操作,并且可以具有由调度器420c分配的新文件。调度器420c可以(例如,互斥地)通过监视导致每个扫描引擎410c的扫描操作停止的事件,将多个文件中的至少一些文件动态分配给每个扫描引擎410c。因此,由于扫描引擎410c的并行扫描操作以及每个扫描引擎410c的快速,可以提高模式匹配操作的效率。
图11是示出根据本公开的示例实施例的图10的扫描引擎410c按时间顺序的示例操作的图。详细地,图11示出了两个扫描引擎SE1和SE2关于三个文件的扫描操作。虽然图11示出了两个扫描引擎SE1和SE2的示例操作,但是根据本公开的示例实施例,也可以以与图11中示出的方式类似的方式执行三个或更多个扫描引擎的扫描操作。为了方便描述,在图11中省略了两个扫描引擎SE1和SE2的上下文被存储和加载的时段,并且下面将参考图10来描述图11。
参考图11,第一扫描引擎SE1可以执行“F_ID=X”的文件数据F_DATA的扫描操作,并且第二扫描引擎SE2可以执行“F_ID=Y”的文件数据F_DATA的扫描操作。也就是说,在时间t21之前,调度器420c可以将“F_ID=X”的文件分配给第一扫描引擎SE1,并且可以将“F_ID=Y”的文件分配给第二扫描引擎SE2。
在时间t21处,可能发生导致第一扫描引擎SE1的扫描操作停止的事件。调度器420c可以停止第一扫描引擎SE1的扫描操作,并且可以将“F_ID=Z”的文件分配给第一扫描引擎SE1。因此,第一扫描引擎SE1可以在关于“F_ID=X”的文件数据F_DATA的扫描操作之后执行关于“F_ID=Z”的文件数据F_DATA的扫描操作。
在时间t22处,可能发生导致第二扫描引擎SE2的扫描操作停止的事件。调度器420c可以停止第二扫描引擎SE2的扫描操作,并且可以将“F_ID=X”的文件分配给第二扫描引擎SE2。因此,第二扫描引擎SE2可以执行关于“F_ID=X”的文件数据F_DATA的扫描操作。也就是说,第二扫描引擎SE2可以在时间t22处恢复由第一扫描引擎SE1在时间t21处停止的关于“F_ID=X”的文件数据F_DATA的扫描操作。
在时间t23处,可能发生导致第一扫描引擎SE1的扫描操作停止的事件。调度器420c可以停止第一扫描引擎SE1的扫描操作,并且可以将“F_ID=Y”的文件分配给第一扫描引擎SE1。因此,第一扫描引擎SE1可以执行关于“F_ID=Y”的文件数据F_DATA的扫描操作。也就是说,第一扫描引擎SE1可以在时间t23处恢复由第二扫描引擎SE2在时间t22处停止的关于“F_ID=Y”的文件数据F_DATA的扫描操作。因此,如图11所示,调度器420c可以允许第一和第二扫描引擎SE1和SE2基本上连续地执行扫描操作。
图12是示出根据本公开的示例实施例的存储系统的操作的示例的流程图。例如,图12的操作可以由图1的存储系统10执行。下面将参考图1来描述图12。
参考图12,在操作S410a中,可以执行从主机接收模式匹配请求PM_REQ的操作。例如,存储系统10中包括的模式匹配加速器400可以经由主机接口100从主机20接收模式匹配请求PM_REQ,并且例如如上面参考2A至图2C描述的模式匹配请求PM_REQ可以包括模式信息P_INFO和/或文件信息F_INFO。
在操作S420a中,可以执行将多个文件之一分配给扫描引擎的操作。例如,包括在模式匹配加速器400中的调度器420可以将多个文件之一分配给扫描引擎。也就是说,调度器420可以将来自对应于所分配的文件的文件数据F_DATA的数据流STR提供给扫描引擎410,并且可以将控制信号CTR提供给扫描引擎410以便开始扫描操作。在操作S430a中,可以执行扫描文件数据F_DATA的操作。例如,扫描引擎410可以基于模式信息P_INFO来扫描对应于由调度器420分配的文件的文件数据F_DATA。
在操作S440a中,可以执行将文件动态扫描到扫描引擎的操作。详细地,在操作S441a中,可以执行确定事件的发生的操作。例如,调度器420可以监视导致扫描引擎410的扫描操作停止的事件,从而可以确定事件的发生。当发生事件时,随后可以执行操作S442a,而当没有发生事件时,随后可以执行操作S450a。
在操作S442a中,可以执行将另一文件分配给扫描引擎的操作。例如,调度器420可以将与分配给扫描引擎410的文件不同的文件分配给扫描引擎410。调度器420可以停止扫描引擎410的扫描操作并存储扫描引擎410的上下文,然后可以将与另一文件的扫描操作对应的上下文加载到扫描引擎410并控制扫描引擎410开始扫描操作。如图12所示,操作S430a可以在操作S442a之后执行。
在操作S450a中,可以执行确定模式匹配的发生的操作。例如,扫描引擎410可以基于模式信息P_INFO来扫描文件数据F_DATA,从而可以确定模式匹配的发生。当没有发生模式匹配时,随后可以执行操作S430a,而当发生模式匹配时,随后可以执行操作S460a。
在操作S460a中,可以执行向主机传送模式匹配结果PM_RES的操作。例如,如上面参考图3描述的模式匹配加速器400可以经由主机接口100向主机20传送包括文件标识符F_ID和指示找到匹配的模式的文件数据F_DATA中的位置的信息的模式匹配结果PM_RES。虽然图12示出了在发生模式匹配时向主机传送模式匹配结果PM_RES的示例,但是在一些实施例中,模式匹配结果PM_RES可以在模式匹配发生两次或更多次时被传送给主机,和/或可以在操作S470a之后,在模式匹配完成之后被传送给主机。
在操作S470a中,可以执行确定模式匹配是否完成的操作。例如,调度器420可以确定关于包括在模式匹配请求PM_REQ中的至少一个文件的文件数据F_DATA的扫描操作是否由扫描引擎410完成。当模式匹配没有完成时,随后可以执行操作S430a,而当模式匹配完成时,响应于模式匹配请求而开始的存储系统的操作可以结束。
图13是示出根据本公开的示例实施例的存储系统的操作的示例的流程图。例如,图13的操作可以由包括图10的模式匹配加速器400c的存储系统执行。
参考图13,在操作S410b中,可以执行从主机接收模式匹配请求PM_REQ的操作。例如,模式匹配加速器400c可以经由主机接口(例如,图1的100)从主机接收模式匹配请求PM_REQ,并且模式匹配请求PM_REQ可以包括模式信息P_INFO和文件信息F_INFO。
在操作S420b中,可以执行将多个文件中的至少一些分配给多个扫描引擎中的每一个的操作。例如,调度器420c可以将多个文件中的一个分配给扫描引擎410c中的一个。接下来,在操作S430b中,可以执行并行扫描文件数据F_DATA的操作。例如,扫描引擎410c可以彼此独立地执行扫描操作。
在操作S440b中,可以执行将多个文件中的至少一些动态分配给多个扫描引擎中的每一个的操作。详细地,在操作S441b中,可以执行确定事件的发生的操作。例如,调度器420c可以监视导致扫描引擎410c的至少一个扫描操作停止的事件,并且因此可以确定事件的发生。当发生事件时,随后可以执行操作S442b,而当没有发生事件时,随后可以执行操作S450b。
在操作S442b中,可以执行将另一文件分配给与事件相关的扫描引擎的操作。例如,调度器420c可以存储扫描引擎410c当中的、扫描操作被事件停止或将被事件停止的扫描引擎的上下文,然后可以将与另一文件的扫描操作对应的上下文加载到扫描引擎并控制扫描引擎开始扫描操作。如图13所示,操作S430b可以在操作S442b之后执行。
在操作S450b中,可以执行确定模式匹配的发生的操作。例如,扫描引擎410可以基于模式信息P_INFO来扫描文件数据F_DATA,由此可以确定模式匹配的发生。当没有发生模式匹配时,随后可以执行操作S430b,而当发生模式匹配时,随后可以执行操作S460b。
在操作460b中,可以执行向主机传送模式匹配结果PM_RES的操作。例如,模式匹配加速器400c可以经由主机接口(例如,图1的100)向主机提供包括文件标识符F_ID和指示找到匹配的模式的文件数据F_DATA中的位置的信息的模式匹配结果PM_RES。虽然图13示出了在发生模式匹配时向主机传送模式匹配结果PM_RES的示例,但是在一些实施例中,模式匹配结果PM_RES可以在模式匹配发生两次或更多次时被传送给主机,和/或可以在操作S470b之后,在模式匹配完成之后传送给主机。
在操作S470b中,可以执行确定模式匹配是否完成的操作。例如,调度器420c可以确定关于包括在模式匹配请求PM_REQ中的至少一个文件的文件数据F_DATA的扫描操作是否由扫描引擎410c完成。当模式匹配未完成时,随后可以执行操作S430b,而当模式匹配完成时,响应于模式匹配请求而开始的存储系统的操作可以结束。
图14是示出根据本公开的示例实施例的包括存储系统的正则表达式匹配系统2的框图。如图14所示,正则表达式匹配系统2可以包括根据本公开的示例实施例的存储系统。
用户系统1可以向正则表达式匹配系统2提供正则表达式R_EXP和数据信息D_INFO,并且可以从正则表达式匹配系统2接收匹配结果M_RES。正则表达式可以指定义某种模式的字符串,并且具有一定规则的字符串集合可以由正则表达式来定义。作为非限制性示例,用户系统1可以是用户使用的终端或向最终用户提供搜索服务的搜索系统,并且可以是意图从由数据信息D_INFO定义的数据获得与正则表达式R_EXP匹配的部分的实体。
如图14所示,正则表达式匹配系统2可以包括多个存储系统31至33和主机40,并且多个存储系统31至33可以与主机40通信。多个存储系统31至33可以是如图14所示的SSD,并且根据本公开的先前的示例实施例,可以响应于主机40的模式匹配请求来执行模式匹配。例如,第一SSD 31可以包括模式匹配加速器,并且模式匹配加速器可以响应于从主机40接收的模式匹配请求PM_REQ而将文件动态分配给扫描引擎,并且因此可以提供具有提高的效率的模式匹配。另外,模式匹配加速器可以包括多个扫描引擎,并且可以互斥地将多个文件中的至少一些文件动态分配给多个扫描引擎中的每一个。
主机40可以包括规则表生成器41和执行管理器42。规则表生成器41可以从用户系统1接收正则表达式R_EXP,并且可以基于正则表达式R_EXP生成DFA并将DFA提供给执行管理器42。DFA可以指示对应于正则表达式R_EXP的模式,并且可以经由执行管理器42以STRT的形式传送给存储系统31至33中的一个。执行管理器42可以基于包括在数据信息D_INFO中的文件信息来确定存储系统31至33当中的存储文件的存储系统,并且可以将包括关于文件和DFA的信息的模式匹配请求PM_REQ提供给所确定的存储系统。此外,执行管理器42可以通过响应于模式匹配请求PM_REQ执行模式匹配来接收存储系统31至33中的至少一些提供的模式匹配结果PM_RES,并且可以基于所接收的模式匹配结果PM_RES来生成匹配结果M_RES,并将匹配结果M_RES提供给用户系统1。
尽管已经参考本公开构思的实施例具体示出和描述了本发明构思,但是将理解,在不脱离所附权利要求的精神和范围的情况下,可以对其进行形式和细节的各种改变。
Claims (20)
1.一种存储系统,包括:
数据存储设备,包括至少一个非易失性存储器设备,被配置为存储多个文件,所述多个文件包括第一文件和第二文件;
主机接口,被配置为从主机接收模式匹配请求并向主机传送关于所述多个文件的模式匹配的结果,所述模式匹配请求包括关于所述多个文件的文件信息和模式信息;以及
模式匹配加速器,被配置为响应于模式匹配请求而执行模式匹配,
其中,所述模式匹配加速器包括扫描引擎和调度器,所述扫描引擎被配置为扫描第一文件以进行模式匹配,并且所述调度器被配置为控制所述扫描引擎停止扫描第一文件,并且
基于所述扫描引擎对第一文件的模式匹配的停止,所述调度器被配置为将第二文件分配给所述扫描引擎并开始扫描第二文件。
2.根据权利要求1所述的存储系统,其中,所述模式匹配请求包括关于模式匹配的完成时间,模式匹配的优先顺序和模式匹配的方法中的至少一个的要求,并且所述调度器还被配置为基于所述要求来控制扫描引擎。
3.根据权利要求1所述的存储系统,还包括存储控制器,所述存储控制器被配置为通过管理所述至少一个非易失性存储器设备来处理来自主机的访问所述数据存储设备的请求,以及
所述调度器还被配置为基于从存储控制器提供的关于数据存储设备的信息来控制扫描引擎。
4.根据权利要求3所述的存储系统,其中,关于数据存储设备的信息包括从所述至少一个非易失性存储器设备读取数据所需的读取等待时间,以及
所述调度器还被配置为当包括在第一文件中的数据的读取等待时间等于或大于参考值时,控制扫描引擎开始扫描第二文件。
5.根据权利要求1所述的存储系统,其中,所述模式匹配加速器包括被配置为临时存储扫描引擎的扫描结果的报告队列,以及
所述调度器还被配置为当关于所述第一文件的扫描结果在报告队列中的存储被延迟时,控制扫描引擎开始扫描第二文件。
6.根据权利要求1所述的存储系统,其中,所述模式匹配加速器包括数据缓冲器,所述数据缓冲器被配置为存储第一文件和第二文件中的每一个的至少一部分,以及
所述调度器还被配置为当扫描引擎后续要扫描的存储在数据缓冲器中的第一文件的所述至少一部分的大小小于参考值时,控制扫描引擎开始扫描第二文件。
7.根据权利要求1所述的存储系统,其中,所述调度器还被配置为当在扫描引擎扫描第一文件期间发生错误时,控制扫描引擎开始扫描第二文件。
8.根据权利要求1所述的存储系统,其中,所述模式信息包括关于多个模式的信息,以及
所述调度器还被配置为将所述多个模式中的至少一些动态分配给扫描引擎以进行模式匹配。
9.根据权利要求1所述的存储系统,其中,所述模式匹配加速器包括被配置为存储扫描引擎的状态信息的多个状态寄存器,以及
所述调度器还被配置为:当扫描第一文件停止时,将扫描引擎的状态信息存储在第一状态寄存器中;以及当扫描第二文件开始时,将存储在第二状态寄存器中的状态信息加载到扫描引擎。
10.一种存储系统,被配置为连接到主机,所述存储系统包括:
数据存储设备,包括至少一个非易失性存储器设备,被配置为存储多个文件;
主机接口,被配置为从主机接收模式匹配请求并向主机传送关于所述多个文件的模式匹配的结果,所述模式匹配请求包括关于所述多个文件的文件信息和模式信息;以及
模式匹配加速器,被配置为响应于模式匹配请求而执行模式匹配,
其中,所述模式匹配加速器包括多个扫描引擎和调度器,所述多个扫描引擎被配置为基于模式扫描数据,并且所述调度器被配置为将所述多个文件中的至少一些动态分配给所述多个扫描引擎中的每一个以进行模式匹配,并且
基于所述多个扫描引擎中的一个扫描引擎对所述多个文件中的第一文件的模式匹配的停止,所述调度器被配置为将所述多个文件中的第二文件分配给所述多个扫描引擎中的一个扫描引擎。
11.根据权利要求10所述的存储系统,其中,所述模式匹配请求包括关于模式匹配的完成时间、模式匹配的优先顺序和模式匹配的方法中的至少一个的要求,以及
所述调度器还被配置为基于所述要求将所述多个文件中的至少一些动态分配给所述多个扫描引擎中的每一个。
12.根据权利要求10所述的存储系统,还包括存储控制器,
所述存储控制器被配置为通过管理所述至少一个非易失性存储器设备来处理主机对所述数据存储设备的访问请求,
所述调度器还被配置为基于从存储控制器提供的关于数据存储设备的信息来将所述多个文件中的至少一些动态分配给所述多个扫描引擎中的每一个。
13.根据权利要求12所述的存储系统,其中,关于数据存储设备的信息包括从所述至少一个非易失性存储器设备读取数据所需的读取等待时间,以及
所述调度器还被配置为当包括在分配给扫描引擎之一的文件中的数据的读取等待时间等于或大于参考值时,将另一文件分配给扫描引擎。
14.根据权利要求10所述的存储系统,其中,所述模式信息包括关于多个模式的信息,
所述调度器还被配置为将所述多个模式中的至少一些动态分配给扫描引擎作为模式。
15.根据权利要求10所述的存储系统,其中,所述模式匹配加速器包括被配置为存储所述多个扫描引擎的状态信息的多个状态寄存器,以及
所述调度器还被配置为:当扫描分配给所述扫描引擎之一的文件停止时,将扫描引擎的状态信息存储在第一状态寄存器中;以及当扫描另一文件开始时,将存储在第二状态寄存器中的状态信息加载到扫描引擎。
16.一种操作存储系统的方法,所述存储系统被配置为存储多个文件,所述方法包括:
从主机接收模式匹配请求,所述模式匹配请求包括关于所述多个文件的文件信息和模式信息;
响应于模式匹配请求,对所述多个文件执行模式匹配;以及
向主机传送模式匹配的结果,
其中,所述执行模式匹配包括:
将所述多个文件中的至少一些动态分配给多个扫描引擎,使得基于所述多个扫描引擎中的一个扫描引擎对所述多个文件中的第一文件的模式匹配的停止,所述多个文件中的第二文件被分配给所述多个扫描引擎中的一个扫描引擎;以及
由所述多个扫描引擎中的每一个基于模式来扫描所分配的文件中包括的数据。
17.根据权利要求16所述的方法,其中,所述模式匹配请求包括关于模式匹配的完成时间、模式匹配的优先顺序和模式匹配的方法中的至少一个的要求,以及
所述分配是基于所述要求的。
18.根据权利要求17所述的方法,还包括:
基于扫描引擎的状态确定模式匹配是否满足要求;以及
当不满足要求时,向主机传送关于模式匹配的信息。
19.根据权利要求17所述的方法,还包括:通过管理至少一个非易失性存储器来处理主机关于所述存储系统的访问请求,并提供关于所述存储系统的信息,
其中,所述存储系统包括所述至少一个非易失性存储器,并且
所述分配是基于关于所述存储系统的信息的。
20.根据权利要求19所述的方法,其中,关于所述存储系统的信息包括从所述至少一个非易失性存储器读取数据所需的读取等待时间,以及
当包括在分配给扫描引擎之一的文件中的数据的读取等待时间等于或大于参考值时,执行将另一文件分配给扫描引擎。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170070960A KR102276912B1 (ko) | 2017-06-07 | 2017-06-07 | 스토리지 시스템 및 이의 동작 방법 |
KR10-2017-0070960 | 2017-06-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109002255A CN109002255A (zh) | 2018-12-14 |
CN109002255B true CN109002255B (zh) | 2023-12-12 |
Family
ID=64562189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810121340.8A Active CN109002255B (zh) | 2017-06-07 | 2018-02-07 | 存储系统及其操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10671307B2 (zh) |
KR (1) | KR102276912B1 (zh) |
CN (1) | CN109002255B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11438413B2 (en) * | 2019-04-29 | 2022-09-06 | EMC IP Holding Company LLC | Intelligent data storage and management for cloud computing |
KR20220049978A (ko) | 2020-10-15 | 2022-04-22 | 삼성전자주식회사 | 장치-부착 메모리에 대한 액세스를 위한 시스템, 장치 및 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101305334A (zh) * | 2004-12-29 | 2008-11-12 | 辉达公司 | 降低的本地总线通信量的磁盘驱动器操作的智能存储引擎 |
CN101714197A (zh) * | 2008-09-30 | 2010-05-26 | 英特尔公司 | 基于硬件的反病毒扫描服务 |
CN103164342A (zh) * | 2011-12-12 | 2013-06-19 | 苹果公司 | 数据可用性的挂载时协调 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6266789B1 (en) | 1997-11-17 | 2001-07-24 | I-Tech Corporation | Deep trace memory system for a protocol analyzer |
JP3719367B2 (ja) | 2000-03-31 | 2005-11-24 | セイコーエプソン株式会社 | デコード装置及び記憶装置 |
US20050273450A1 (en) | 2004-05-21 | 2005-12-08 | Mcmillen Robert J | Regular expression acceleration engine and processing model |
US7979667B2 (en) * | 2007-12-10 | 2011-07-12 | Spansion Llc | Memory array search engine |
US20100071064A1 (en) * | 2008-09-17 | 2010-03-18 | Weber Bret S | Apparatus, systems, and methods for content selfscanning in a storage system |
US8091115B2 (en) * | 2008-10-03 | 2012-01-03 | Microsoft Corporation | Device-side inline pattern matching and policy enforcement |
JP2011215835A (ja) * | 2010-03-31 | 2011-10-27 | Toshiba Corp | 全文検索機能を備えるストレージ装置 |
KR101225870B1 (ko) * | 2010-06-07 | 2013-01-24 | 삼성에스디에스 주식회사 | 안티 멀웨어 시스템 및 그의 동작 방법 |
US9064116B2 (en) | 2010-11-08 | 2015-06-23 | Intel Corporation | Techniques for security management provisioning at a data storage device |
US8595839B2 (en) * | 2011-01-21 | 2013-11-26 | International Business Machines Corporation | Selecting one of a plurality of scanner nodes to perform scan operations for an interface node receiving a file request |
US8966182B2 (en) | 2011-02-08 | 2015-02-24 | International Business Machines Corporation | Software and hardware managed dual rule bank cache for use in a pattern matching accelerator |
US9246928B2 (en) * | 2011-05-02 | 2016-01-26 | International Business Machines Corporation | Compiling pattern contexts to scan lanes under instruction execution constraints |
US8990259B2 (en) | 2011-06-24 | 2015-03-24 | Cavium, Inc. | Anchored patterns |
US20130013534A1 (en) * | 2011-07-07 | 2013-01-10 | International Business Machines Corporation | Hardware-assisted approach for local triangle counting in graphs |
JP2013030254A (ja) * | 2011-07-29 | 2013-02-07 | Toshiba Corp | 半導体記憶装置、情報処理装置 |
US9336135B1 (en) | 2013-07-24 | 2016-05-10 | NXGN Data, Inc. | Systems and methods for performing search and complex pattern matching in a solid state drive |
KR102192198B1 (ko) * | 2014-02-24 | 2020-12-17 | 삼성전자주식회사 | 전자 장치 및 그것의 통신 방법 |
US10228854B2 (en) * | 2014-08-20 | 2019-03-12 | Sandisk Technologies Llc | Storage devices and methods for optimizing use of storage devices based on storage device parsing of file system metadata in host write operations |
US20160170892A1 (en) | 2014-12-11 | 2016-06-16 | HGST Netherlands B.V. | Expression pattern matching in a storage subsystem |
US9569264B2 (en) * | 2015-03-17 | 2017-02-14 | Freescale Semiconductor,Inc. | Multi-core system for processing data packets |
KR102415962B1 (ko) | 2015-03-30 | 2022-07-04 | 삼성전자주식회사 | 스토리지 시스템 및 그것의 동작 방법 |
US10152389B2 (en) * | 2015-06-19 | 2018-12-11 | Western Digital Technologies, Inc. | Apparatus and method for inline compression and deduplication |
-
2017
- 2017-06-07 KR KR1020170070960A patent/KR102276912B1/ko active IP Right Grant
-
2018
- 2018-01-12 US US15/869,393 patent/US10671307B2/en active Active
- 2018-02-07 CN CN201810121340.8A patent/CN109002255B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101305334A (zh) * | 2004-12-29 | 2008-11-12 | 辉达公司 | 降低的本地总线通信量的磁盘驱动器操作的智能存储引擎 |
CN101714197A (zh) * | 2008-09-30 | 2010-05-26 | 英特尔公司 | 基于硬件的反病毒扫描服务 |
CN103164342A (zh) * | 2011-12-12 | 2013-06-19 | 苹果公司 | 数据可用性的挂载时协调 |
Non-Patent Citations (1)
Title |
---|
正则表达式匹配的高效硬件实现;孙志刚等;;计算机工程与科学(第10期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
KR20180133730A (ko) | 2018-12-17 |
CN109002255A (zh) | 2018-12-14 |
US20180357005A1 (en) | 2018-12-13 |
KR102276912B1 (ko) | 2021-07-13 |
US10671307B2 (en) | 2020-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106354425B (zh) | 基于数据属性的数据布局的方法和系统 | |
US10042560B2 (en) | Method and storage array for processing a write data request | |
US8639898B2 (en) | Storage apparatus and data copy method | |
US20180165014A1 (en) | Array controller, solid state disk, and method for controlling solid state disk to write data | |
JP5636034B2 (ja) | データ利用についてのマウント時間の調停 | |
US20150113218A1 (en) | Distributed Data Processing Method and Apparatus | |
US9182912B2 (en) | Method to allow storage cache acceleration when the slow tier is on independent controller | |
US10678446B2 (en) | Bitmap processing for log-structured data store | |
US11360705B2 (en) | Method and device for queuing and executing operation commands on a hard disk | |
US20170177489A1 (en) | Data deduplication system and method in a storage array | |
JP2009122733A (ja) | 電力制御方法、計算機システム、及びプログラム | |
US11983444B2 (en) | Memory system and method of controlling nonvolatile memory | |
US11520520B2 (en) | Memory system and method of controlling nonvolatile memory | |
KR101579941B1 (ko) | 가상머신 i/o 관리 방법 및 장치 | |
CN109002255B (zh) | 存储系统及其操作方法 | |
CN113220650B (zh) | 数据存储方法、装置、设备、存储介质及程序 | |
WO2017020757A1 (en) | Rebalancing and elastic storage scheme with elastic named distributed circular buffers | |
US20200364140A1 (en) | Memory system and non-transitory computer readable recording medium | |
CN110908595B (zh) | 存储装置及信息处理系统 | |
CN110658980B (zh) | 数据处理方法及装置、存储系统 | |
US20150268858A1 (en) | Computer system, cash data management method, and computer | |
US20220011948A1 (en) | Key sorting between key-value solid state drives and hosts | |
US20190243582A1 (en) | Storage device and storage area management method | |
JP5382471B2 (ja) | 電力制御方法、計算機システム、及びプログラム | |
CN117311594A (zh) | 管理nvm芯片的方法及相关产品 |
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 |