CN113655957B - 一种针对低队列深度的预读方法 - Google Patents
一种针对低队列深度的预读方法 Download PDFInfo
- Publication number
- CN113655957B CN113655957B CN202110881016.8A CN202110881016A CN113655957B CN 113655957 B CN113655957 B CN 113655957B CN 202110881016 A CN202110881016 A CN 202110881016A CN 113655957 B CN113655957 B CN 113655957B
- Authority
- CN
- China
- Prior art keywords
- read
- reading
- command
- commands
- predicted
- 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 abstract description 29
- 230000004044 response Effects 0.000 claims abstract description 4
- 238000012790 confirmation Methods 0.000 claims description 8
- 238000007726 management method Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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]
Abstract
本发明提出一种针对低队列深度的预读方法,包括S1:根据SSD fl ash读取的反应时间和SSD循序读取的期望效能,计算出使低队列深度的循序读取效能不降低时所需的预读命令数量为n;S2:计算host写入读取命令中循序的数量;S3:判断是否应该启动预读流程:S4:启动预读流程,绘制预读表格,预读表格用于记录各预计读取命令对应的状态标记,S6:接收传输的数据;S7:host继续写入读取命令,判断是否继续预读流程。在本申请中,通过预读流程增加低队列深度的循序读取效能,增快处理速度,利用预读表格的内容及管理办法,有效降低预读流程的复杂度。同时,针对预读的时间点,预读的数据量,终止预读的时机以及后续清除缓存数据的做法,做完善的处理,使预读效率大幅提升。
Description
技术领域
本发明涉及SSD读写效能领域,尤其涉及一种针对低队列深度的预读方法。
背景技术
为了增加SSD读写的效能,NVMe的协议中规范了每个命令队列都可同时发送65536个命令,这使SSD主控可以提早对NAND flash送出指令,大幅增加随机读取的效能,同时也对循序读取(Sequence Read)有很大的帮助。但现实世界有许多应用的队列深度(QueueDepth)非常低,甚至一次只传送一个命令给SSD,此时若没做特殊处理,将造成循序读取的效能降低许多。
发明内容
本发明的目的是为了提供一种针对低队列深度的预读方法,可以大幅提升低队列深度的循序读取效能。
为了实现上述目的,本发明提出一种针对低队列深度的预读方法,具体步骤如下:
S1:根据SSD flash读取的反应时间和SSD循序读取的期望效能,计算得出使低队列深度的循序读取效能不降低时所需的预读命令数量为n;
S2:host写入读取命令,并计算A读取命令中循序的读取命令的数量;
S3:判断是否应该启动预读流程:
若A读取命令中循序的读取命令的数量大于m,则进入S4;
若A读取命令中循序的读取命令的数量小于m,则进入S2;
S4:启动所述预读流程,并在SSD的FTL内绘制预读表格,所述预读表格用于记录各预计读取命令对应的状态标记,所述状态标记包括预读命令、确认命令、终止命令和缓存命令;
S5:是否接收到从FTL传输的数据:
若是,则进入S6;
若否,则进入S7;
S6:接收从FTL传输的数据,查询所述数据在所述预读表格内对应的状态标记:
若标记状态为确认命令时,所述数据发送至host;
若标记状态为终止命令时,所述数据被丢弃删除;
若标记状态为预读命令时,所述数据暂存在缓存空间中,并将所述预读表格内与所述数据对应的预计读取命令的标记状态改为缓存命令;
S7:host继续写入读取命令,判断C读取命令与Z读取命令是否属于循序读取的关系:
若是,则继续进行所述预读流程,并进入S8;
若否,则终止进行所述预读流程,并进入S2;
S8:根据所述预读表格内的与所述C读取命令对应的预计读取命令的状态标记,相应的清除所述预计读取命令或更改所述预计读取命令的状态标记,并进入S5;
其中:A读取命令为已写入的读取命令;C读取命令为正在写入的读取命令;Z读取命令为已写入的读取命令中最后一位的读取命令;预计读取命令为预计的未写入的读取命令。
进一步地,在S4中,所述预读表格的绘制步骤如下:
S41:对FTL发送预计读取命令,依照顺序将各预计读取命令记录在所述预读表格内,所述预计读取命令的数量不大于n,且所述预计读取命令与Z读取命令为循序读取的关系;
S42:将所述预读表格内记录的所述预计读取命令对应的标记状态从空白改为预读命令。
进一步地,在S7中,继续进行所述预读流程时的步骤如下:
S71:查询所述预读表格内与所述C读取命令对应的所述预计读取命令的状态标记:
若标记状态不为缓存命令,则将所述C读取命令对应的标记状态改为确定命令;
若标记状态为缓存命令,则将所述C读取命令对应的数据从缓存空间中发送至host,并清除所述预读表格内与所述C读取命令对应的所述预计读取命令;
S72:进入S4。
进一步地,在S8中,S9:终止进行所述预读流程时的步骤如下:
S91:终止对FTL发送预计读取命令;
S92:统计所述预读表格内所有标记状态为预读命令的预计读取命令,将标记状态由预读命令改为终止命令;
S93:清除所述预读表格内所有标记状态为缓存命令的预计读取命令在所述缓存空间中所对应的数据。
与现有技术相比,本发明的优势之处在于:
1.提出一个预读流程,可大幅增加低队列深度的循序读取效能。
2.提出预读表格的内容及管理办法,降低预读流程的复杂度。
3.针对预读的时间点,预读的数据量,终止预读的时机以及后续清除缓存数据的做法,做完善的处理,使预读效率大幅提升。
4.预读流程明确单纯,可由硬件实作,增快处理速度。
附图说明
图1为本发明实施例中预读流程实施的预读表格图。
图2为本发明实施例中资料量信息表。
具体实施方式
下面将结合示意图对本发明的针对低队列深度的预读方法进行更详细的描述,其中表示了本发明的优选实施例,应该理解本领域技术人员可以修改在此描述的本发明,而仍然实现本发明的有利效果。因此,下列描述应当被理解为对于本领域技术人员的广泛知道,而并不作为对本发明的限制。
在下列段落中参照附图以举例方式更具体地描述本发明。根据下面说明,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
本发明提出一种针对低队列深度的预读方法,具体步骤如下:
S1:根据SSD flash读取的反应时间和SSD循序读取的期望效能,计算得出使低队列深度的循序读取效能不降低时所需的预读命令数量为n;
S2:host写入读取命令,并计算A读取命令中循序的读取命令的数量;
S3:判断是否应该启动预读流程:
若A读取命令中循序的读取命令的数量大于m,则进入S4;
若A读取命令中循序的读取命令的数量小于m,则进入S2;
S4:启动所述预读流程,并在SSD的FTL内绘制预读表格,所述预读表格用于记录各预计读取命令对应的状态标记,所述状态标记包括预读命令、确认命令、终止命令和缓存命令;
S41:对FTL发送预计读取命令,依照顺序将各预计读取命令记录在所述预读表格内,所述预计读取命令的数量不大于n,且所述预计读取命令与Z读取命令为循序读取的关系;
S42:将所述预读表格内记录的所述预计读取命令对应的标记状态从空白改为预读命令;
S5:是否接收到从FTL传输的数据:
若是,则进入S6;
若否,则进入S7;
S6:接收从FTL传输的数据,查询所述数据在所述预读表格内对应的状态标记:
若标记状态为确认命令时,所述数据发送至host;
若标记状态为终止命令时,所述数据被丢弃删除;
若标记状态为预读命令时,所述数据暂存在缓存空间中,并将所述预读表格内与所述数据对应的预计读取命令的标记状态改为缓存命令;
S7:host继续写入读取命令,判断C读取命令与Z读取命令是否属于循序读取的关系:
若是,则进入S8;
若否,则进入S9;
S8:继续进行所述预读流程:
S81:查询所述预读表格内与所述C读取命令对应的所述预计读取命令的状态标记:
若标记状态不为缓存命令,则将所述C读取命令对应的标记状态改为确定命令;
若标记状态为缓存命令,则将所述C读取命令对应的数据从缓存空间中发送至host,并清除所述预读表格内与所述C读取命令对应的所述预计读取命令;
S82:进入S41;
S9:终止进行所述预读流程:
S91:终止对FTL发送预计读取命令;
S92:统计所述预读表格内所有标记状态为预读命令的预计读取命令,将标记状态由预读命令改为终止命令;
S93:清除所述预读表格内所有标记状态为缓存命令的预计读取命令在所述缓存空间中所对应的数据;
S94:进入S2。
其中:A读取命令为已写入的读取命令;C读取命令为正在写入的读取命令;Z读取命令为已写入的读取命令中最后一位的读取命令;预计读取命令为预计的未写入的读取命令。
具体的,如图1所示,假设预读2MB的资料,用ctag与ofst代表资料的标识符,有两个register,pre read boundary标记为预读开始的界限,pre read end标记为预读结束的界限。在本实施例中,ctag512~515为预读的ctag,每个ctag固定为1MB(256offset)。
操作情况如下:
1.当侦测到连续多笔数据是循序读取(seq read),则开始预读流程。
2.最佳预读的数据量为2MB,也就是ctag512 ofst0~ctag513 ofst255,此时realctag和real ofst皆设无效的预计读取命令invalid。
3.将pre read end这个预读结束的对应资料信息登记设成ctag513 ofst255,此时落在pre read boundary和pre read end之间的数据视为预读命令(invalid)。
4.当host写入的读取命令仍是循序读取(seq read)时,若real ctag和real ofst字段是缓存命令--buffer data,则直接送出给host,并将real ctag和read ofst清为无效命令--null,否则将读取命令的信息填入real ctag和real ofst,并更新pre readboundary,pre read boundary前面的数据视为确认命令。
5.相应修改pre read end,并继续发送预读命令给FTL。
6.当资料从NAND读进缓存时,若real ctag和read ofst有值,则视为确认命令,将资料送出给host,并将real ctag和read ofst清为null,视为无效命令;若为invalid,即视为预读命令,则改成buffer data,视为缓存命令。
7.当host写入的读取命令不再是循序读取(seq read)时,此时落在pre readboundary和pre read end之间的数据,将被视为终止命令,皆必须丢弃。
8.落在pre read boundary前面的数据(data),则必须送给host。
9.如图2所示,用一个pre read cnt纪录预读的4KB数量,当资料送出给host或丢弃时,则pre read cnt减1。
10.当pre read cnt=0时,则可启动下一次预读流程。
综上,在本实施例中,提出的针对低队列深度的预读方法,通过预读流程大幅增加低队列深度的循序读取效能,可由硬件实作,增快处理速度,并利用预读表格的内容及管理办法,有效降低预读流程的复杂度。同时,针对预读的时间点,预读的数据量,终止预读的时机以及后续清除缓存数据的做法,做完善的处理,使预读效率大幅提升。
上述仅为本发明的优选实施例而已,并不对本发明起到任何限制作用。任何所属技术领域的技术人员,在不脱离本发明的技术方案的范围内,对本发明揭露的技术方案和技术内容做任何形式的等同替换或修改等变动,均属未脱离本发明的技术方案的内容,仍属于本发明的保护范围之内。
Claims (4)
1.一种针对低队列深度的预读方法,其特征在于,具体步骤如下:
S1:根据SSD flash读取的反应时间和SSD循序读取的期望效能,计算得出使低队列深度的循序读取效能不降低时所需的预读命令数量为n;
S2:host写入读取命令,并计算A读取命令中循序的读取命令的数量;
S3:判断是否应该启动预读流程:
若A读取命令中循序的读取命令的数量大于m,则进入S4;
若A读取命令中循序的读取命令的数量小于m,则进入S2;
S4:启动所述预读流程,并在SSD的FTL内绘制预读表格,所述预读表格用于记录各预计读取命令对应的状态标记,所述状态标记包括预读命令、确认命令、终止命令和缓存命令;
S5:是否接收到从FTL传输的数据:
若是,则进入S6;
若否,则进入S7;
S6:接收从FTL传输的数据,查询所述数据在所述预读表格内对应的状态标记:
若标记状态为确认命令时,所述数据发送至host;
若标记状态为终止命令时,所述数据被丢弃删除;
若标记状态为预读命令时,所述数据暂存在缓存空间中,并将所述预读表格内与所述数据对应的预计读取命令的标记状态改为缓存命令;
S7:host继续写入读取命令,判断C读取命令与Z读取命令是否属于循序读取的关系:
若是,则继续进行所述预读流程,并进入S8;
若否,则终止进行所述预读流程,并进入S2;
S8:根据所述预读表格内的与所述C读取命令对应的预计读取命令的状态标记,相应的清除所述预计读取命令或更改所述预计读取命令的状态标记,并进入S5;
其中:A读取命令为已写入的读取命令;C读取命令为正在写入的读取命令;Z读取命令为已写入的读取命令中最后一位的读取命令;预计读取命令为预计的未写入的读取命令。
2.根据权利要求1所述的针对低队列深度的预读方法,其特征在于,在S4中,所述预读表格的绘制步骤如下:
S41:对FTL发送预计读取命令,依照顺序将各预计读取命令记录在所述预读表格内,所述预计读取命令的数量不大于n,且所述预计读取命令与Z读取命令为循序读取的关系;
S42:将所述预读表格内记录的所述预计读取命令对应的标记状态从空白改为预读命令。
3.根据权利要求1所述的针对低队列深度的预读方法,其特征在于,在S7中,终止进行所述预读流程时的步骤如下:
S71:终止对FTL发送预计读取命令;
S72:统计所述预读表格内所有标记状态为预读命令的预计读取命令,将标记状态由预读命令改为终止命令;
S73:清除所述预读表格内所有标记状态为缓存命令的预计读取命令在所述缓存空间中所对应的数据。
4.根据权利要求1所述的针对低队列深度的预读方法,其特征在于,在S8中,继续进行所述预读流程时的步骤如下:
S81:查询所述预读表格内与所述C读取命令对应的所述预计读取命令的状态标记:
若标记状态不为缓存命令,则将所述C读取命令对应的标记状态改为确定命令;
若标记状态为缓存命令,则将所述C读取命令对应的数据从缓存空间中发送至host,并清除所述预读表格内与所述C读取命令对应的所述预计读取命令;
S82:进入S4。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110881016.8A CN113655957B (zh) | 2021-08-02 | 2021-08-02 | 一种针对低队列深度的预读方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110881016.8A CN113655957B (zh) | 2021-08-02 | 2021-08-02 | 一种针对低队列深度的预读方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113655957A CN113655957A (zh) | 2021-11-16 |
CN113655957B true CN113655957B (zh) | 2024-04-19 |
Family
ID=78478249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110881016.8A Active CN113655957B (zh) | 2021-08-02 | 2021-08-02 | 一种针对低队列深度的预读方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113655957B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114327274B (zh) * | 2021-12-29 | 2023-07-04 | 深圳忆联信息系统有限公司 | 基于固态硬盘的映射表加载检查方法、装置及计算机设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102298508A (zh) * | 2011-09-07 | 2011-12-28 | 记忆科技(深圳)有限公司 | 基于流的固态硬盘预读取的方法及装置 |
CN107273053A (zh) * | 2017-06-22 | 2017-10-20 | 郑州云海信息技术有限公司 | 一种数据读取的方法与装置 |
CN107340978A (zh) * | 2017-07-18 | 2017-11-10 | 郑州云海信息技术有限公司 | 一种存储预读方法、装置及存储系统 |
CN112558866A (zh) * | 2020-12-03 | 2021-03-26 | Oppo(重庆)智能科技有限公司 | 数据的预读方法、移动终端及计算机可读存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5733680B2 (ja) * | 2011-01-20 | 2015-06-10 | 日本電気株式会社 | コマンド実行装置、コマンド実行システム、コマンド実行方法およびコマンド実行プログラム |
US10732848B2 (en) * | 2018-06-29 | 2020-08-04 | Western Digital Technologies, Inc. | System and method for predictive read of random data |
US10976964B2 (en) * | 2019-06-27 | 2021-04-13 | Western Digital Technologies, Inc. | Storage system and method for hit-rate-score-based selective prediction of future random read commands |
-
2021
- 2021-08-02 CN CN202110881016.8A patent/CN113655957B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102298508A (zh) * | 2011-09-07 | 2011-12-28 | 记忆科技(深圳)有限公司 | 基于流的固态硬盘预读取的方法及装置 |
CN107273053A (zh) * | 2017-06-22 | 2017-10-20 | 郑州云海信息技术有限公司 | 一种数据读取的方法与装置 |
CN107340978A (zh) * | 2017-07-18 | 2017-11-10 | 郑州云海信息技术有限公司 | 一种存储预读方法、装置及存储系统 |
CN112558866A (zh) * | 2020-12-03 | 2021-03-26 | Oppo(重庆)智能科技有限公司 | 数据的预读方法、移动终端及计算机可读存储介质 |
Non-Patent Citations (2)
Title |
---|
jian hu ; et., al..Understanding performance anomalies of SSDs and their impact in enterprise application environment.ACM SIGMETRICS Performance Evaluation Review.2012,全文. * |
一种改进型的SSD FTL算法;董萍;王瑞娜;;西北师范大学学报(自然科学版);20170115(第01期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113655957A (zh) | 2021-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10007468B2 (en) | Method and apparatus for erasing data in data section in flash memory | |
TWI428917B (zh) | 快閃記憶裝置、資料儲存系統、以及資料儲存系統之運作方法 | |
CN103197898A (zh) | 存储控制装置、存储装置和控制存储控制装置的控制方法 | |
TWI397821B (zh) | 資料串傳送方法、系統及其控制器 | |
CN108563401B (zh) | 一种ssd性能加速方法 | |
CN101630290B (zh) | 重复数据处理方法和装置 | |
US8255663B2 (en) | System and method for processing read request | |
CN107797759B (zh) | 访问缓存信息的方法、装置与驱动器 | |
US20090100244A1 (en) | Adaptive hybrid density memory storage device and control method thereof | |
CN107832236B (zh) | 一种提高固态硬盘写性能的方法 | |
CN101354906B (zh) | 应用于固态硬盘的闪存控制器 | |
US8266371B2 (en) | Non-volatile storage device, host device, non-volatile storage system, data recording method, and program | |
CN107797760B (zh) | 一种访问缓存信息的方法、装置与固态驱动器 | |
US11176035B2 (en) | Data storage devices and data processing methods | |
CN113655957B (zh) | 一种针对低队列深度的预读方法 | |
TWI726314B (zh) | 資料儲存裝置與資料處理方法 | |
CN101876956B (zh) | Sd卡的文件存取方法及装置 | |
CN111061649B (zh) | 一种存储器的存储空间自适应分配方法 | |
CN107908358A (zh) | 一种降低NVMe固态硬盘写放大的方法 | |
US10303368B2 (en) | Storage device that determines data attributes based on continuity of address ranges | |
CN111625482B (zh) | 顺序流检测方法与装置 | |
CN103577119A (zh) | 用于下一代固态硬盘控制器中乱序传输数据的系统和方法 | |
CN104898989A (zh) | 一种大容量数据存储设备、方法及装置 | |
CN105653466A (zh) | 数据储存装置以及快闪存储器控制方法 | |
CN101477494B (zh) | 一种写入数据的方法和存储系统 |
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 |