CN107943715A - 一种提升NVMe固态硬盘读缓存命中的方法 - Google Patents
一种提升NVMe固态硬盘读缓存命中的方法 Download PDFInfo
- Publication number
- CN107943715A CN107943715A CN201710948213.0A CN201710948213A CN107943715A CN 107943715 A CN107943715 A CN 107943715A CN 201710948213 A CN201710948213 A CN 201710948213A CN 107943715 A CN107943715 A CN 107943715A
- Authority
- CN
- China
- Prior art keywords
- read
- state hard
- access frequency
- solid state
- host
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/122—Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种提升NVMe固态硬盘读缓存命中的方法,其特征在于固态硬盘根据主机下发的LBA区间读访问频率信息,固态硬盘根据接收到的各个LBA区间读访问频率进行排序,优先主动将高概率的LBA区间预先从NAND读出到固态硬盘的读缓存中;所述读访问频率信息Access Frequency由主机统计并写入NVMe协议中LBA区间的读访问频率信息Access Frequency字段。利用NVMe协议中的LBA区间的访问频率作为后续主机读取该LBA区间的概率并下发给SSD,SSD根据该频率信息预读对应的数据至读缓存,实现提升了读缓存命中的概率,即提高固态硬盘数据预读的准确性。
Description
技术领域
本发明涉及固态硬盘控制技术,特别涉及一种提升NVMe固态硬盘读缓存命中的方法。
背景技术
固态硬盘SSD中的数据读取速度是硬盘性能的一个重要指标,其读取的速度受固态硬盘的各级数据传输速度的影响、受固态硬盘控制器命令处理的机制和速度的影响、同时还受固态硬盘本身物理存储单元访问的影响。因此为了提升固态硬盘的读性能会从各个环节进行优化。由于固态硬盘物理存储单元的访问速度受其设计的物理特性的影响,因此除了更改芯片设计外很难有更改的空间。因此更多的是通过优化固态硬盘的处理机制进行性能提升。
通过统计和分析可知,主机访问固态硬盘都存在一定顺序性,所述的顺序性就是主机相邻多个命令存在大概率的访问连续地址的固态硬盘空间的情况。固态硬盘中一般都设有高速缓存DRAM,用于缓存主机与固态硬盘间的通讯数据。在没有读缓存机制的NVMe固态硬盘(SSD)的情况时,主机发起的读命令的数据需要先从Nand传输到DRAM,再从DRAM传输到主机,假设主机下发多个顺序读命令1,2,3,4,5,6,7,8,9……,每个命令的大小一样,那么无读缓存机制下这些命令执行的情况如图1,图1是无缓存机制的数据流图,主机Host连续多个顺序读数据命令的实现都是Nand到DRAM和DRAM到Host的串行时间累加,每个环节都是串行的,因此整体消化时间较大。
为了改善串行处理带来的时间消耗,提出了数据预读缓存机制,所述的数据预读缓存机制就是固态硬盘的固件内部预测主机后续将要读取的数据,预先把对应的数据从Nand读到缓存DRAM中,如图2是数据预读缓存机制的数据流图;当固态硬盘接收到主机的读命令后,根据顺序性固态硬盘的固件在响应主机的读命令后,主动执行将该读命令地址连续的多个Nand的数据预先读到DRAM中,待主机读命令真正下发时,先检查DRAM中是否存在本次读命令所需要读的地址数据,也就是读缓存命中检测,如果有称为命中,如果没有称为不命中。如果命中了读缓存,则数据直接从DRAM传输到主机,大大提升了读性能。数据预读缓存机制取决于固件预测的准确度,准确度高则读缓存命中率高,性能提升明显,如果准确度不高,则不仅不能提升性能,还额外消耗了DRAM资源且增加了功耗。
当前的固件设计预测主要是根据主机已下发命令的顺序性,预测后续的读命令也是顺序的,然后启用预读机制,把后续的数据从Nand Flash预先读到读缓存中,这种方法有如下缺点:
1.数据的预读比较滞后;发现顺序的命令流之后才能预读数据,节奏慢了一拍。
2.猜测的准确度不高;如果主机下发顺序读命令本来就很少,那么SSD内部预读到缓存中的数据大部分都是无用的,即读缓存的命中率不高。
3.读命中率不高带来的另一个缺点是功耗的浪费;因为Nand Flash和DRAM工作功耗占了整个SSD功耗的大部分。
DRAM资源的浪费;没有命中读缓存的命令会走正常读通路从Nand flash取数据,这需要DRAM资源作为数据的中间载体,但是无效的读缓存占据了部分DRAM,且无法快速释放。这会影响正常读通路高效运转。
发明内容
针对以上缺陷,本发明目的是如何提高固态硬盘数据预读的准确性,进而实现提供固态硬盘读性能。
为了解决以上问题本发明提出了一种提升NVMe固态硬盘读缓存命中的方法,其特征在于固态硬盘根据主机下发的LBA区间读访问频率信息,固态硬盘根据接收到的各个LBA区间读访问频率进行排序,优先主动将高概率的LBA区间预先从NAND读出到固态硬盘的读缓存中;当主机新下发的新的LBA区间读访问频率信息,先判断当前是否还有空闲读缓存空间,如果有则直接分配缓存,并执行将该新的LBA区间预先从NAND读出到固态硬盘的读缓存;如果当前无空闲的缓存,则释放比新的LBA区间读访问频率低的LBA区间对应的缓存,再分配缓存,并执行将该新的LBA区间预先从NAND读出到固态硬盘的读缓存;所述读访问频率信息Access Frequency由主机统计并写入NVMe协议中LBA区间的读访问频率信息AccessFrequency字段。
所述的提升NVMe固态硬盘读缓存命中的方法,其特征在于将固态硬盘的读缓存划分为主机预读缓存区和顺序预读缓存区,所述主机预读缓存区用于固态硬盘根据主机下发的LBA区间读访问频率信息判别控制实现对应的LBA区间实现读缓存;所述顺序预读缓存区用于主机没有下发LBA区间读访问频率信息的读命令的顺序预测读缓存;固态硬盘的主预测读缓存的预测由主机下发的LBA区间读访问频率信息控制,顺序预测读缓存作为辅助补充预测。
本发明通过利用NVMe协议中的LBA区间的访问频率作为后续主机读取该LBA区间的概率并下发给SSD,SSD根据该频率信息预读对应的数据至读缓存,实现提升了读缓存命中的概率,即提高固态硬盘数据预读的准确性。
附图说明
图1是无缓存机制的数据流图;
图2是数据预读缓存机制的数据流图;
图3是一个利用AF信息进行数据预读的示例图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
针对现有的建立读缓存的方式存在很多缺点,特别是预测主机后续读命令的准确度不高的问题,本发明提出了一种更为科学,更为准确的猜测后续主机读命令的方法。
NVMe协议中定义了LBA区间的读访问频率(Access Frequency),以下简称AF信息,这个AF信息是主机发给SSD的,提示主机后续要读的LBA区间的概率,如果这个频率比较高,说明后续主机读取该区间的概率非常大,此时SSD内部可以从Nand Flash预取对应的数据到读缓存。由于这个AF信息是主机自己给出的,所以可信度非常高,因此基于此信息建立的预读的准确性将非常高。除此之外,它还有以下优点:
1.读缓存大小根据主机给出的LBA区间信息动态变动,即不会浪费DRAM资源,LBA为逻辑块地址。
2.可以建立多个读缓存,主机可能近期想访问多段LBA区间,则会发送多个信息给SSD,SSD依此建立多个读缓存满足主机需求。
3.读缓存命中一次后可立马释放,及早释放DRAM资源,可确保不影响正常通路的高效运转。
4.相比于现有技术,功耗会降低。
图3是一个利用AF信息进行数据预读的示例图。(假设固态硬盘只维护2块读缓存buf1和buf2):
第1步Step1:PC主机发送两个读访问频率AF信息给设备,第一个信息为读LBA区间[0,127]且访问频率为中,第二个信息为读LBA区间[256,511]且访问频率为高。
第2步Step2:设备收到访问频率信息后,固件申请2块缓存区,缓存区1为64KB大小、LBA信息为0~127、优先级中;缓存区2为128KB大小、LBA信息为256~511、优先级高。
第3步Step3:设备内部启用预读机制,先将优先级高的缓存区2需要的数据从NAND读出来,再将优先级中的缓存区1需要的数据从NAND读出来。
注:如果在第2步或第3步过程中主机再次发送其他读访问频率信息给设备,则设备根据访问信息频率等级替换已存在的缓存,替换原则为频率等级高的替换频率等级低的,同等级不替换。
第4步Step4:主机发起读命令,固件判断其LBA段命中了缓存2。
第5步Step5:设备直接将缓存2中数据传给主机,传完后释放掉缓存2的DRAM资源。
以上所揭露的仅为本发明一种实施例而已,当然不能以此来限定本之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于本发明所涵盖的范围。
Claims (2)
1.一种提升NVMe固态硬盘读缓存命中的方法,其特征在于固态硬盘根据主机下发的LBA区间读访问频率信息,固态硬盘根据接收到的各个LBA区间读访问频率进行排序,优先主动将高概率的LBA区间预先从NAND读出到固态硬盘的读缓存中;当主机新下发的新的LBA区间读访问频率信息,先判断当前是否还有空闲读缓存空间,如果有则直接分配缓存,并执行将该新的LBA区间预先从NAND读出到固态硬盘的读缓存;如果当前无空闲的缓存,则释放比新的LBA区间读访问频率低的LBA区间对应的缓存,再分配缓存,并执行将该新的LBA区间预先从NAND读出到固态硬盘的读缓存;所述读访问频率信息Access Frequency由主机统计并写入NVMe协议中LBA区间的读访问频率信息Access Frequency字段。
2.根据权利要求1所述的提升NVMe固态硬盘读缓存命中的方法,其特征在于将固态硬盘的读缓存划分为主机预读缓存区和顺序预读缓存区,所述主机预读缓存区用于固态硬盘根据主机下发的LBA区间读访问频率信息判别控制实现对应的LBA区间实现读缓存;所述顺序预读缓存区用于主机没有下发LBA区间读访问频率信息的读命令的顺序预测读缓存;固态硬盘的主预测读缓存的预测由主机下发的LBA区间读访问频率信息控制,顺序预测读缓存作为辅助补充预测。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710948213.0A CN107943715B (zh) | 2017-10-12 | 2017-10-12 | 一种提升NVMe固态硬盘读缓存命中的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710948213.0A CN107943715B (zh) | 2017-10-12 | 2017-10-12 | 一种提升NVMe固态硬盘读缓存命中的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107943715A true CN107943715A (zh) | 2018-04-20 |
CN107943715B CN107943715B (zh) | 2021-10-01 |
Family
ID=61935198
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710948213.0A Active CN107943715B (zh) | 2017-10-12 | 2017-10-12 | 一种提升NVMe固态硬盘读缓存命中的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107943715B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109189693A (zh) * | 2018-07-18 | 2019-01-11 | 深圳大普微电子科技有限公司 | 一种对lba信息进行预测的方法及ssd |
CN110275678A (zh) * | 2019-05-30 | 2019-09-24 | 中电海康集团有限公司 | 一种基于stt-mram的固态存储器件随机访问性能提升方法 |
CN110297607A (zh) * | 2019-06-28 | 2019-10-01 | 深圳忆联信息系统有限公司 | 一种提升固态硬盘写性能的方法及其系统 |
CN110347334A (zh) * | 2019-05-29 | 2019-10-18 | 深圳市金泰克半导体有限公司 | 一种固态硬盘工作方法、系统、电子设备和存储介质 |
CN112416262A (zh) * | 2020-12-08 | 2021-02-26 | 合肥大唐存储科技有限公司 | 一种固态硬盘中数据预读方法、存储介质和电子装置 |
CN117032597A (zh) * | 2023-10-09 | 2023-11-10 | 北京忆恒创源科技股份有限公司 | 数据预读处理方法及存储设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020138699A1 (en) * | 2001-03-21 | 2002-09-26 | Atsushi Okamura | Cache memory device |
CN101178759A (zh) * | 2006-11-09 | 2008-05-14 | 国际商业机器公司 | 可信设备集成电路和对其中的存储器件进行虚拟化的方法 |
CN101751225A (zh) * | 2008-12-04 | 2010-06-23 | 上海华虹Nec电子有限公司 | 一种混合硬盘的数据存取方法 |
CN102332007A (zh) * | 2011-08-06 | 2012-01-25 | 浪潮电子信息产业股份有限公司 | 一种提升文件访问命中率的缓存服务器硬件配置系统 |
CN105095104A (zh) * | 2014-04-15 | 2015-11-25 | 华为技术有限公司 | 数据缓存处理方法及装置 |
CN105224473A (zh) * | 2015-09-15 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种固态硬盘缓存数据的更新方法及装置 |
CN105677245A (zh) * | 2015-12-31 | 2016-06-15 | 记忆科技(深圳)有限公司 | 一种基于wl多线程提高ssd使用寿命的方法 |
CN105930282A (zh) * | 2016-04-14 | 2016-09-07 | 北京时代民芯科技有限公司 | 一种用于nand flash的数据缓存方法 |
CN106020723A (zh) * | 2016-05-19 | 2016-10-12 | 记忆科技(深圳)有限公司 | 一种简化NVMe固态硬盘的方法 |
-
2017
- 2017-10-12 CN CN201710948213.0A patent/CN107943715B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020138699A1 (en) * | 2001-03-21 | 2002-09-26 | Atsushi Okamura | Cache memory device |
CN101178759A (zh) * | 2006-11-09 | 2008-05-14 | 国际商业机器公司 | 可信设备集成电路和对其中的存储器件进行虚拟化的方法 |
CN101751225A (zh) * | 2008-12-04 | 2010-06-23 | 上海华虹Nec电子有限公司 | 一种混合硬盘的数据存取方法 |
CN102332007A (zh) * | 2011-08-06 | 2012-01-25 | 浪潮电子信息产业股份有限公司 | 一种提升文件访问命中率的缓存服务器硬件配置系统 |
CN105095104A (zh) * | 2014-04-15 | 2015-11-25 | 华为技术有限公司 | 数据缓存处理方法及装置 |
CN105224473A (zh) * | 2015-09-15 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种固态硬盘缓存数据的更新方法及装置 |
CN105677245A (zh) * | 2015-12-31 | 2016-06-15 | 记忆科技(深圳)有限公司 | 一种基于wl多线程提高ssd使用寿命的方法 |
CN105930282A (zh) * | 2016-04-14 | 2016-09-07 | 北京时代民芯科技有限公司 | 一种用于nand flash的数据缓存方法 |
CN106020723A (zh) * | 2016-05-19 | 2016-10-12 | 记忆科技(深圳)有限公司 | 一种简化NVMe固态硬盘的方法 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109189693A (zh) * | 2018-07-18 | 2019-01-11 | 深圳大普微电子科技有限公司 | 一种对lba信息进行预测的方法及ssd |
US11435953B2 (en) | 2018-07-18 | 2022-09-06 | Shenzhen Dapu Microelectronics Co., Ltd. | Method for predicting LBA information, and SSD |
CN109189693B (zh) * | 2018-07-18 | 2020-10-30 | 深圳大普微电子科技有限公司 | 一种对lba信息进行预测的方法及ssd |
CN110347334A (zh) * | 2019-05-29 | 2019-10-18 | 深圳市金泰克半导体有限公司 | 一种固态硬盘工作方法、系统、电子设备和存储介质 |
CN110347334B (zh) * | 2019-05-29 | 2023-03-14 | 深圳市金泰克半导体有限公司 | 一种固态硬盘工作方法、系统、电子设备和存储介质 |
CN110275678A (zh) * | 2019-05-30 | 2019-09-24 | 中电海康集团有限公司 | 一种基于stt-mram的固态存储器件随机访问性能提升方法 |
CN110275678B (zh) * | 2019-05-30 | 2022-11-11 | 中电海康集团有限公司 | 一种基于stt-mram的固态存储器件随机访问性能提升方法 |
CN110297607A (zh) * | 2019-06-28 | 2019-10-01 | 深圳忆联信息系统有限公司 | 一种提升固态硬盘写性能的方法及其系统 |
CN110297607B (zh) * | 2019-06-28 | 2023-08-29 | 深圳忆联信息系统有限公司 | 一种提升固态硬盘写性能的方法及其系统 |
CN112416262A (zh) * | 2020-12-08 | 2021-02-26 | 合肥大唐存储科技有限公司 | 一种固态硬盘中数据预读方法、存储介质和电子装置 |
CN112416262B (zh) * | 2020-12-08 | 2024-03-19 | 合肥大唐存储科技有限公司 | 一种固态硬盘中数据预读方法、存储介质和电子装置 |
CN117032597A (zh) * | 2023-10-09 | 2023-11-10 | 北京忆恒创源科技股份有限公司 | 数据预读处理方法及存储设备 |
CN117032597B (zh) * | 2023-10-09 | 2024-01-23 | 北京忆恒创源科技股份有限公司 | 数据预读处理方法及存储设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107943715B (zh) | 2021-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107943715A (zh) | 一种提升NVMe固态硬盘读缓存命中的方法 | |
US9053029B2 (en) | Multicore computer system with cache use based adaptive scheduling | |
CN109471875A (zh) | 基于缓存数据的热度管理方法、服务器及存储介质 | |
US8788757B2 (en) | Dynamic inclusive policy in a hybrid cache hierarchy using hit rate | |
US9635123B2 (en) | Computer system, and arrangement of data control method | |
CN102789439B (zh) | 控制数据传输过程中的中断的方法与存储设备 | |
US8930625B2 (en) | Weighted history allocation predictor algorithm in a hybrid cache | |
CN103443777B (zh) | 具有预填充能力的存储器管理单元 | |
CN102023931B (zh) | 一种自适应缓存预取方法 | |
US8843707B2 (en) | Dynamic inclusive policy in a hybrid cache hierarchy using bandwidth | |
CN102799396B (zh) | 存储设备、中断控制方法以及供电时间测量方法 | |
US20080235459A1 (en) | Processor, method, and data processing system employing a variable store gather window | |
US20160335177A1 (en) | Cache Management Method and Apparatus | |
CN104572497B (zh) | 通过计数逐出进行的动态高速缓存扩大 | |
KR20240033123A (ko) | 캐시 삽입을 위한 기준으로서 데이터의 압축률을 사용하는 것에 의한 스토리지 캐시 성능 향상 | |
CN107423229A (zh) | 一种面向页级ftl的缓冲区改进方法 | |
CN102521161B (zh) | 一种数据的缓存方法、装置和服务器 | |
CN105353865B (zh) | 基于多处理器的动态调频方法 | |
US20220350484A1 (en) | Machine learning to improve caching efficiency in a storage system | |
US8341355B2 (en) | Reducing energy consumption of set associative caches by reducing checked ways of the set association | |
CN101859282B (zh) | 基于双重跟踪的虚拟化平台的磁盘页面换入的方法 | |
CN102096559A (zh) | 一种提高sata接口固态硬盘数据传输效率的方法 | |
CN101853219B (zh) | 基于虚拟化平台的磁盘页面换入的方法 | |
CN103207843A (zh) | 一种数据行宽度可动态配置的cache结构设计方法 | |
KR101064178B1 (ko) | 버퍼 캐시 관리 시스템 및 방법 |
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 |