CN102298508B - 基于流的固态硬盘预读取的方法及装置 - Google Patents
基于流的固态硬盘预读取的方法及装置 Download PDFInfo
- Publication number
- CN102298508B CN102298508B CN201110263309.6A CN201110263309A CN102298508B CN 102298508 B CN102298508 B CN 102298508B CN 201110263309 A CN201110263309 A CN 201110263309A CN 102298508 B CN102298508 B CN 102298508B
- Authority
- CN
- China
- Prior art keywords
- order
- read command
- stream
- read
- advance
- 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
Abstract
本发明公开了一种基于流的固态硬盘预读取的方法,所述方法包括以下步骤:接收混合读数据流命令,并将所述混合读数据流命令分流为随机读命令和顺序读命令;执行所述随机读命令,正常读取数据流;将所述顺序读命令分流为若干不同的子数据流读命令;执行所述若干子数据流读命令,对数据流进行预读取。借此,本发明可以提高不同数据流预读取的命中率,提升固态硬盘的预读取效果。
Description
技术领域
本发明涉及电子信息领域,尤其涉及一种基于流的固态硬盘预读取的方法及装置。
背景技术
随着电子技术的发展,固态硬盘逐渐普及,其是一种没有旋转介质的硬盘,具有良好的抗震性。但现有的固态硬盘在读取数据操作上还需提高性能。
申请号为201010544452.8的中国专利一种固态硬盘预读取的方法及其装置,提出了一种适应于固态硬盘的预读取方法,该方法基于逻辑页地址到物理页地址的映射表进行逻辑页地址的预读取操作,参见下表:
逻辑页地址 | 物理页地址 | 标志位 |
0000 | 0325 | 1 |
0001 | 0332 | 0 |
0002 | 0637 | 1 |
… | … | … |
0012 | 0423 | 1 |
0013 | 0724 | 1 |
0014 | 0874 | 1 |
… | … | … |
LPA_MAX | 9974 | 0 |
这样读取后续已被预读取的逻辑页时,读取操作直接在缓存中进行,而无需再进行正常固态硬盘读操作所需的复杂过程。实际应用中,在多任务环境下,系统中会有多个任务同时操作固态硬盘,每个任务会有自己的数据Pattern,有些是小块随机的、有些是大块连续的,并且每个任务针对的是不同的数据流、不同的逻辑页地址空间。对于这种情况,现有预读取技术方案对于小块随机数据会进行无效的预读取操作,消耗额外的带宽;对于不同数据流之间的读操作动态切换,由于不同数据流的预读取数据相互覆盖,导致预读取数据在后续读操作时的命中率会非常的低,甚至会导致固态硬盘性能下降。
综上可知,现有的固态硬盘的数据预读取的方法在实际使用上,显然存在不便与缺陷,所以有必要加以改进。
发明内容
针对上述的缺陷,本发明的目的在于提供一种基于流的固态硬盘预读取的方法及装置,以提高不同数据流预读取的命中率,提升固态硬盘的预读取效果。
为了实现上述目的,本发明提供一种基于流的固态硬盘预读取的方法,所述方法包括以下步骤:
接收混合读数据流命令,并将所述混合读数据流命令分流为随机读命令和顺序读命令;
执行所述随机读命令,正常读取数据流;
将所述顺序读命令分流为若干不同的子数据流读命令;
执行所述若干子数据流读命令,对数据流进行预读取。
根据本发明的基于流的固态硬盘预读取的方法,所述混合读数据流命令由若干单个的读数据流命令组成,所述单个的读数据流命令为所述随机读命令或顺序读命令;
所述接收混合读数据流命令,并将所述混合读数据流命令分流为随机读命令和顺序读命令步骤进一步包括:
根据所述单个的读数据流命令的地址空间范围,判定该命令为随机读命令或顺序读命令。
根据本发明的基于流的固态硬盘预读取的方法,所述接收混合读数据流命令,并将所述混合读数据流命令分流为随机读命令和顺序读命令步骤之前还包括:
预设一地址空间阀值。
根据本发明的基于流的固态硬盘预读取的方法,当所述单个的读数据流命令的地址空间范围小于所述预设的地址空间阀值时,判定所述单个的读数据流命令为所述随机读命令,否则判定为所述顺序读命令。
根据本发明的基于流的固态硬盘预读取的方法,所述将所述顺序读命令分流为若干不同的子数据流读命令步骤进一步包括:
根据所述顺序读命令与不同数据流的地址范围的相关性,将所述顺序读命令分流为若干不同的子数据流读命令。
本发明还相应的提供一种基于流的固态硬盘预读取的装置,包括:
判断模块,用于接收混合读数据流命令,并将所述混合读数据流命令分流为随机读命令和顺序读命令;
随机读操作模块,用于执行所述随机读命令,正常读取数据流;
数据流检测模块,用于将所述顺序读命令分流为若干不同的子数据流读命令;
若干预读取模块,用于对应执行所述若干不同的子数据流读命令,对数据流进行预读取。
根据本发明的基于流的固态硬盘预读取的装置,所述混合读数据流命令由若干单个的读数据流命令组成,所述单个的读数据流命令为所述随机读命令或顺序读命令;
所述判断模块包括判断子模块,用于根据所述单个的读数据流命令的地址空间范围,判定该命令为随机读命令或顺序读命令。
根据本发明的基于流的固态硬盘预读取的装置,所述判断模块还包括一设置模块,用于预设一地址空间阀值。
根据本发明的基于流的固态硬盘预读取的装置,当所述单个的读数据流命令的地址空间范围小于所述预设的地址空间阀值时,所述判断子模块判定所述单个的读数据流命令为所述随机读命令,否则判定为所述顺序读命令。
根据本发明的基于流的固态硬盘预读取的装置,所述数据流检测模块包括一分流模块,用于根据所述顺序读命令与不同数据流的地址范围的相关性,将所述顺序读命令分流为若干不同的子数据流读命令。
本发明通过将固态硬盘读取数据时的命令进行判断分流,具体的分为随机读命令和顺序读命令,若为随机读命令则直接执行,正常读取数据流,如果是顺序读命令,则再将顺序读命令分流为若干不同的子数据流读命令,然后再执行各个子命令,分别进行数据流的预读取。借此,本发明可以提高不同数据流预读取的命中率,提升固态硬盘的性能。
附图说明
图1是本发明的基于流的固态硬盘预读取的装置结构示意图;
图2是本发明一实施例的基于流的固态硬盘预读取的装置结构示意图;
图3是本发明基于流的固态硬盘预读取的方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参见图1,本发明提供了一种基于流的固态硬盘预读取的装置100,其包括:
判断模块10,用于接收混合读数据流命令,并将所述混合读数据流命令分流为随机读命令和顺序读命令。具体的,混合读数据流命令由若干单个的读数据流命令组成,这些单个的读数据流命令为随机读命令或顺序读命令,判断模块10将这些命令进行判断分流,将随机读命令传送至随机读操作模块20,将顺序读命令传送至数据流检测模块30,本发明中,判断模块10优选采用随机读检测模块。
随机读操作模块20,用于执行随机读命令,正常读取数据流。对于随机读命令,预读取是无效的,因此,当接收到随机读命令时该随机读操作模块20直接执行,直接正常读取数据流。
数据流检测模块30,用于将顺序读命令分流为若干不同的子数据流读命令。
若干预读取模块40,用于对应执行所述若干不同的子数据流读命令,对数据流进行预读取。
在固态硬盘接收命令时,如果不将随机读命令分流,则随机读命令也会进入预读取模块进行预读取。但对于随机读命令,其预读取通常是无效的,因此会浪费缓冲区和I/O带宽。本发明通过分流随机读命令,可以避免这种浪费,借此提高预读取的准确率。
另外,由于操作系统会将源自于不同任务“顺序读数据流”的读命令序列混合交错在一起后发送给固态硬盘。如果不加区分,则混合交错后的读命令序列在由某一任务切换到另一任务时,以第一任务切换到第二任务为例,之前缓冲的第一任务的预读取内容会失效,并被第二任务的“预读取”内容所替代。这样第一任务的预读取内容就被浪费了,并且这种情况在每次切换不同任务的读命令序列时都会重复。本发明通过引入数据流检测模块30可以分别为不同的任务进行预读取,借此避免上述状况,并提高预读取的准确率。
再参见图2,本发明的一实施例中,判断模块10包括:
设置模块11,用于预设一空间地址阀值。每一单个的读数据流命令都具有各自操作的地址空间范围,本发明通过对预设空间地址阀值与单个数据流命令的地址空间范围判断,借此分流出随机读命令和顺序读命令。
判断子模块12,用于判断预设空间地址阀值与单个数据流命令的地址空间范围的大小,如果单个的读数据流命令的地址空间范围小于所述预设的地址空间阀值,则判断该命令为随机读命令,否则判定该命令为顺序读命令,借此将混合读数据流命令分流为随机读命令和顺序读命令。
该实施例中,数据流检测模块30包括一分流模块31,用于根据顺序读命令与不同数据流的地址范围的相关性,将顺序读命令再分流为若干不同的子数据流读命令。该分流模块会分别统计不同任务下顺序读数据流操作的地址空间范围,并通过检查当前读命令操作的地址空间与哪一个任务的顺序读数据流相关来区分,借此可为不同的顺序读数据流分别进行预读取,提高预读取的命中率。
参见图3,本发明提供了一种基于流的固态硬盘预读取的方法,该方法可通过上述的预读取装置100实现,包括:
步骤S301,接收混合读数据流命令,并将所述混合读数据流命令分流为随机读命令和顺序读命令。需要说明的是,在该步骤S301之前,判断模块10通过其设置模块11预先设置一地址空间阀值,以通过对地址空间范围的比较判断分流命令。在具体执行步骤S301时,判断子模块12比较单个的读数据流命令的地址空间范围及该预设的地址空间阀值,如果单个的读数据流命令的地址空间范围小于所述预设的地址空间阀值,则判断该命令为随机读命令,否则判定该命令为顺序读命令。
步骤S302,执行所述随机读命令,正常读取数据流。混合读数据流命令分流后,由随机读操作模块20执行随机读命令,直接正常操作读取,不进行预读取。
步骤S303,将顺序读命令分流为若干不同的子数据流读命令。该步骤中,分流模块31根据所述顺序读命令与不同数据流的地址范围的相关性,将顺序读命令分流为若干不同的子数据流读命令。
步骤S304,执行所述若干子数据流读命令,对数据流进行预读取。不同的子数据流读命令对应不同的预读取模块40,各预读取模块40根据各子数据流读命令的空间地址范围对数据流进行预读取。
本发明中,对混合读数据流命令的分流通过随机读检测模块对随机读命令进行检测分离。本领域的技术人员易知,也可通过顺序读检测模块对顺序读命令进行检测分离,两种方式均可以实现命令的分流。
综上所述,本发明通过将固态硬盘读取数据时的命令进行判断分流,具体的分为随机读命令和顺序读命令,若为随机读命令则直接执行,正常读取数据流,如果是顺序读命令,则再将顺序读命令分流为若干不同的子数据流读命令,然后再执行各个子命令,分别进行数据流的预读取。借此,本发明可以提高不同数据流预读取的命中率,提升固态硬盘的性能。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (4)
1.一种基于流的固态硬盘预读取的方法,其特征在于,所述方法包括以下步骤:
预设一地址空间阀值;
接收混合读数据流命令,并将所述混合读取数据流命令分流处理,所述混合读数据流命令由若干单个的读数据流命令组成,所述单个的读数据流命令为随机读命令或顺序读命令;
判断所述单个的读数据流命令的地址空间范围,当所述单个的读数据流命令的地址空间范围小于所述预设的地址空间阀值时,判定所述单个的读数据流命令为所述随机读命令,否则判定为所述顺序读命令;
执行所述随机读命令,正常读取数据流;
将所述顺序读命令分流为若干不同的子数据流读命令;
执行所述若干子数据流读命令,对数据流进行预读取。
2.根据权利要求1所述的基于流的固态硬盘预读取的方法,其特征在于,所述将所述顺序读命令分流为若干不同的子数据流读命令步骤进一步包括:
根据所述顺序读命令与不同数据流的地址范围的相关性,将所述顺序读命令分流为若干不同的子数据流读命令。
3.一种基于流的固态硬盘预读取的装置,其特征在于,包括:
判断模块,用于接收混合读数据流命令,并将所述混合读取数据流命令分流处理,所述混合读数据流命令由若干单个的读数据流命令组成,所述单个的读数据流命令为随机读命令或顺序读命令;
所述判断模块进一步包括:
设置模块,用于预设一地址空间阀值;
判断子模块,用于判断所述单个的读数据流命令的地址空间范围,当所述单个的读数据流命令的地址空间范围小于所述预设的地址空间阀值时,判定所述单个的读数据流命令为所述随机读命令,否则判定为所述顺序读命令;
所述固态硬盘预读取的装置还包括:
随机读操作模块,用于执行所述随机读命令,正常读取数据流;
数据流检测模块,用于将所述顺序读命令分流为若干不同的子数据流读命令;
若干预读取模块,用于对应执行所述若干不同的子数据流读命令,对数据流进行预读取。
4.根据权利要求3所述的基于流的固态硬盘预读取的装置,其特征在于,所述数据流检测模块包括一分流模块,用于根据所述顺序读命令与不同数据流的地址范围的相关性,将所述顺序读命令分流为若干不同的子数据流读命令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110263309.6A CN102298508B (zh) | 2011-09-07 | 2011-09-07 | 基于流的固态硬盘预读取的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110263309.6A CN102298508B (zh) | 2011-09-07 | 2011-09-07 | 基于流的固态硬盘预读取的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102298508A CN102298508A (zh) | 2011-12-28 |
CN102298508B true CN102298508B (zh) | 2014-08-06 |
Family
ID=45358955
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110263309.6A Active CN102298508B (zh) | 2011-09-07 | 2011-09-07 | 基于流的固态硬盘预读取的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102298508B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106339326A (zh) * | 2016-08-26 | 2017-01-18 | 记忆科技(深圳)有限公司 | 一种提升固态硬盘顺序读性能的方法 |
CN107291631A (zh) * | 2017-05-24 | 2017-10-24 | 记忆科技(深圳)有限公司 | 一种提高固态硬盘中多流读出时性能的方法 |
CN108182151B (zh) * | 2018-01-24 | 2019-02-01 | 北京百度网讯科技有限公司 | 顺序流缓存与检测的方法、装置、存储介质及终端设备 |
CN109086006B (zh) * | 2018-07-24 | 2021-10-15 | 浪潮电子信息产业股份有限公司 | 一种数据读取的方法以及相关装置 |
CN109271107A (zh) * | 2018-09-01 | 2019-01-25 | 苏州韦科韬信息技术有限公司 | 一种提升固态硬盘顺序读性能的方法 |
CN109918023A (zh) * | 2019-02-22 | 2019-06-21 | 深圳忆联信息系统有限公司 | 基于内存受限ssd的预读取方法、装置和计算机设备 |
CN109992212B (zh) * | 2019-04-10 | 2020-03-27 | 苏州浪潮智能科技有限公司 | 一种数据写入方法和一种数据读取方法 |
US11023380B2 (en) | 2019-09-10 | 2021-06-01 | Western Digital Technologies, Inc. | Non-volatile storage system with filtering of data samples for a monitored operational statistic |
CN113655957B (zh) * | 2021-08-02 | 2024-04-19 | 固存芯控半导体科技(苏州)有限公司 | 一种针对低队列深度的预读方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6397292B1 (en) * | 1999-08-19 | 2002-05-28 | Emc Corporation | Asymmetrical striping of mirrored storage device arrays and concurrent access to even tracks in the first array and odd tracks in the second array to improve data access performance |
CN1652091A (zh) * | 2004-02-07 | 2005-08-10 | 华为技术有限公司 | 一种在数据存储系统中预取数据的方法 |
CN101976182A (zh) * | 2010-11-15 | 2011-02-16 | 记忆科技(深圳)有限公司 | 一种固态硬盘预读取的方法及其装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7464246B2 (en) * | 2004-09-30 | 2008-12-09 | International Business Machines Corporation | System and method for dynamic sizing of cache sequential list |
CN102023931B (zh) * | 2010-12-17 | 2015-02-04 | 曙光信息产业(北京)有限公司 | 一种自适应缓存预取方法 |
-
2011
- 2011-09-07 CN CN201110263309.6A patent/CN102298508B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6397292B1 (en) * | 1999-08-19 | 2002-05-28 | Emc Corporation | Asymmetrical striping of mirrored storage device arrays and concurrent access to even tracks in the first array and odd tracks in the second array to improve data access performance |
CN1652091A (zh) * | 2004-02-07 | 2005-08-10 | 华为技术有限公司 | 一种在数据存储系统中预取数据的方法 |
CN101976182A (zh) * | 2010-11-15 | 2011-02-16 | 记忆科技(深圳)有限公司 | 一种固态硬盘预读取的方法及其装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102298508A (zh) | 2011-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102298508B (zh) | 基于流的固态硬盘预读取的方法及装置 | |
CN101540727B (zh) | 一种ip报文的硬件分流方法 | |
US20050289317A1 (en) | Method and related apparatus for accessing memory | |
CN102866971A (zh) | 传输数据的装置、系统及方法 | |
US20070214248A1 (en) | Network management method, program, and system | |
CN102629240A (zh) | 一种串口通信方法与装置 | |
CN102859504B (zh) | 复制数据的方法和系统以及获得数据副本的方法 | |
CN202443357U (zh) | 一种具有对等通信功能的多pcie信号接口主板 | |
CN102122256A (zh) | 一种用于进程间通信的管道式通信方法及系统 | |
WO2007115124A3 (en) | Apparatus and method for transmitting outgoing data using data descriptors | |
TW200643724A (en) | System for improving bandwidth among a plurality of memory controllers and method thereof | |
CN102395958A (zh) | 一种数据包的并发处理方法及设备 | |
CN102779098B (zh) | 混合缓存的协同式自适应预取方法、装置和系统 | |
CN103336670A (zh) | 一种基于数据温度对数据块自动进行分布的方法和装置 | |
US20100262754A1 (en) | Cpu data bus pld/fpga interface using dual port ram structure built in pld | |
US20140244926A1 (en) | Dedicated Memory Structure for Sector Spreading Interleaving | |
US20110283068A1 (en) | Memory access apparatus and method | |
CN104539389B (zh) | 复用10GBase‑X4与40GBase‑R4 PCS去抖动的装置和方法 | |
CN101488119B (zh) | 地址译码方法、装置及单板 | |
TWI447728B (zh) | 動態隨機存取記憶體之控制方法及控制器 | |
CN105335296A (zh) | 一种数据处理方法、装置及系统 | |
CN103647728B (zh) | 一种STM32单片机与Linux系统高速串口抗干扰通讯方法 | |
US9671973B2 (en) | Data storage in degraded solid state memory | |
CN105744120A (zh) | 一种高速数据采集卡及数据采集方法 | |
CN102625105A (zh) | 基于单芯片的多通道视频编解码数据传输方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |