CN106339326A - 一种提升固态硬盘顺序读性能的方法 - Google Patents
一种提升固态硬盘顺序读性能的方法 Download PDFInfo
- Publication number
- CN106339326A CN106339326A CN201610737116.2A CN201610737116A CN106339326A CN 106339326 A CN106339326 A CN 106339326A CN 201610737116 A CN201610737116 A CN 201610737116A CN 106339326 A CN106339326 A CN 106339326A
- Authority
- CN
- China
- Prior art keywords
- read
- read command
- ssd
- flash
- command
- 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.)
- Pending
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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明提供了一种提升固态硬盘顺序读性能的方法,其特征在于在固态硬盘上增加读命令重排序模块,所述读命令重排序模块接收到主机发送的多个读命令后,先分析该各个读命令所要访问的逻辑块地址,将逻辑块地址相邻的读命令分组为同一读命令流组,并按读命令进入固态硬盘的顺序排列,将接收到的各个读命令分组为多个读命令流组,根据读命令流组的逻辑块地址选择SSD对应的FLASH读通道,不同的读命令流组对应不同FLASH读通道分别并发的按各个读命令流组的顺序执行读命令。通过在SSD中增加对读命令的重排序和增加顺序读命令的预读机制,充分利用SSD顺序读的优势,提升多线程应用中固态硬盘的读性能。
Description
技术领域
本发明涉及数据存储设备,特别涉及提升固态硬盘顺序读性能的方法。
背景技术
硬盘访问的速度对于实际应用的影响是巨大的,在一定程度上决定了应用的执行效率。实际主机系统大部分都是多任务系统,这也就决定了主机一般都要求支持多线程。因此大量存在多线程同时访问固态硬盘SSD的操作,一般同一个线程对于硬盘的访问都是顺序的读命令流的方式进入硬盘进行访问;那在多线程环境下,就会同时出现多条顺序流,但是SSD在接收到命令时并不知晓它们的线程属性。主流SATA接口的SSD最多可同时接收32个命令,由于多个线程同时访问SSD,每个线程对于SSD并没有设置特定访问的优先级,所以32个命令是随机分属于各个线程的。最终表现为SSD处理的命令序列是几条交错的读命令流,读命令访问地址连续性被打散了,导致顺序读性能下降。
发明内容
针对以上缺陷,本发明目的是如何最大限度的发挥SSD顺序读性能的优势,整体上提高SSD的读性能。
为了解决以上问题,本发明提供了一种提升固态硬盘顺序读性能的方法,其特征在于在固态硬盘上增加读命令重排序模块,所述读命令重排序模块接收到主机发送的多个读命令后,先分析该各个读命令所要访问的逻辑块地址,将逻辑块地址相邻的读命令分组为同一读命令流组,并按读命令进入固态硬盘的顺序排列,将接收到的各个读命令分组为多个读命令流组,根据读命令流组的逻辑块地址选择SSD对应的FLASH读通道,不同的读命令流组对应不同FLASH读通道分别并发的按各个读命令流组的顺序执行读命令。
所述的提升固态硬盘顺序读性能的方法,其特征在于将读命令访问的逻辑块地址首尾相邻的读命令分组为同一读命令流组。
所述的提升固态硬盘顺序读性能的方法,其特征在于增加为每个FLASH读通道设置预读缓冲区,当SSD对应的FLASH读通道在完成本通道的读命令操作后,当前通道无其它新命令,则按上一个读命令的逻辑块地址顺序,继续读N个块大小的数据到该FLASH读通道设置预读缓冲区;对应该FLASH读通道的读命令,先检索该FLASH读通道设置预读缓冲区是否存在要读取的数据,如果有则直接从该FLASH读通道设置预读缓冲区中读取该数据;否则继从对应的FLASH读通道中读取数据。
本发明通过在SSD中增加对读命令的重排序和增加顺序读命令的预读机制,充分利用SSD顺序读的优势,提升多线程应用中固态硬盘的读性能。
附图说明
图1是现有技术顺序读命令流示意图;
图2是增加经过读命令重排序后的顺序读命令流示意图;
图3是增加顺序命令的预读的读命令流示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是现有技术顺序读命令流示意图;在多线程顺序读的应用场景下,多个线程同时读SSD,大多数情况下每个线程的命令流都是顺序读命令流,即线程Thead_1包括读命令T1_1、T1_2、T1_3、T1_4和T1_5,这些读命令访问的逻辑块地址LBA(Logic Block Address)的空间是连续的;Thead_2包括读命令T2_1、T2_2、T2_3、T2_4和T2_5,这些读命令访问的逻辑块地址LBA(Logic Block Address)的空间是连续的;Thead_3包括读命令T3_1、T3_2、T3_3、T3_4和T3_5,这些读命令访问的逻辑块地址LBA(Logic Block Address)的空间是连续的;由于所有线程访问SSD优先级是相同的,那么SSD接受到汇总的各个线程的命令序列是随机的。SSD内部的待处理命令队列Pending_command_queue中的命令顺序变为3个线程的读命令交错分布,前后命令之间不再具备每个线程单独访问LBA空间的顺序性,无法直接同SSD中具体的存储阵列Nand flash arry中的FLASH读通道对应。因此无法发挥SSD后端顺序读性能的优势,整体体现出来就是SSD随机读的性能。
图2是增加经过读命令重排序后的顺序读命令流示意图,为了发挥SSD后端顺序读性能的优势,在SSD中增加读命令重排序模块,在SSD内部对接受到的命令进行重排序,按照读命令的访问地址的连续性建立相应读命令流组Sequential Read Stream。重新建立的顺序读命令流与主机各线程发起顺序读请求是一致的,Sequential Read Stream 1、2和3分别对应了主机端的线程1、2和3的命令流。这样SSD内部就可以根据读命令流组SequentialRead Stream去访问闪存的实际存储阵列,而数据在各个FLASH读通道上的分布恰恰又能更好的发挥顺序读性能的优势。通过对读命令的重排优化,使原本乱序的读命令流转化为多个顺序的读命令流,提升了整体的读性能。根据各个线程的对应的读命令基本上都是顺序的,因此也在对读命令进行重排序时,可简单通过命令所在的线程序号进行分组,同样能在大部分情况下实现各个读命令流组的命令对应要访问的逻辑块地址是相邻且顺序的。也可通过判断读命令访问的逻辑块地址,读命令的逻辑块地址的首地址与读命令的逻辑块地址的尾地址相邻的读命令分组为同一读命令流组。
图3是增加顺序命令的预读的读命令流示意图,为了进一步提升顺序读的性能,可以为已经识别出来的读命令流组Sequential Read Stream进行预读取Read Ahead,预先为每个FLASH读通道设置预读缓冲区,在完成本FLASH读通道的当前读命令操作后,根据同一线程大概率的存在继续顺序读取本FLASH读通道的数据的特点,预先提前将本FLASH读通道的顺序且相邻的多个逻辑块数据提前从nand flash上读到预读缓冲区中。后续的读命令大概率的会继续命中各个预读缓冲区中提前读取出的数据,直接从预读缓冲区读取到所需的数据,大大减少了读命令的响应时间,从而进一步提升顺序读的性能。SSD后台还可以增加其它策略的预读识别机制,充分利用FLASH空闲时间段提前对进行预读取和销毁。
以上所揭露的仅为本发明一种实施例而已,当然不能以此来限定本权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于本发明所涵盖的范围。
Claims (3)
1.一种提升固态硬盘顺序读性能的方法,其特征在于在固态硬盘上增加读命令重排序模块,所述读命令重排序模块接收到主机发送的多个读命令后,先分析该各个读命令所要访问的逻辑块地址,将逻辑块地址相邻的读命令分组为同一读命令流组,并按读命令进入固态硬盘的顺序排列,将接收到的各个读命令分组为多个读命令流组,根据读命令流组的逻辑块地址选择SSD对应的FLASH读通道,不同的读命令流组对应不同FLASH读通道分别并行的按各个读命令流组的顺序执行读命令。
2.根据权利要求1所述的提升固态硬盘顺序读性能的方法,其特征在于将读命令访问的逻辑块地址首尾相邻的读命令分组为同一读命令流组。
3.根据权利要求1或2所述的提升固态硬盘顺序读性能的方法,其特征在于增加为每个FLASH读通道设置预读缓冲区,当SSD对应的FLASH读通道在完成本通道的读命令操作后,当前通道无其它新命令,则按上一个读命令的逻辑块地址顺序,继续读N个块大小的数据到该FLASH读通道设置预读缓冲区;对应该FLASH读通道的读命令,先检索该FLASH读通道设置预读缓冲区是否存在要读取的数据,如果有则直接从该FLASH读通道设置预读缓冲区中读取该数据;否则继从对应的FLASH读通道中读取数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610737116.2A CN106339326A (zh) | 2016-08-26 | 2016-08-26 | 一种提升固态硬盘顺序读性能的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610737116.2A CN106339326A (zh) | 2016-08-26 | 2016-08-26 | 一种提升固态硬盘顺序读性能的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106339326A true CN106339326A (zh) | 2017-01-18 |
Family
ID=57823089
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610737116.2A Pending CN106339326A (zh) | 2016-08-26 | 2016-08-26 | 一种提升固态硬盘顺序读性能的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106339326A (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107291631A (zh) * | 2017-05-24 | 2017-10-24 | 记忆科技(深圳)有限公司 | 一种提高固态硬盘中多流读出时性能的方法 |
CN108089996A (zh) * | 2017-11-29 | 2018-05-29 | 深圳忆联信息系统有限公司 | 一种提升带slc缓存的固态硬盘读性能的方法 |
CN108170380A (zh) * | 2017-12-28 | 2018-06-15 | 深圳忆联信息系统有限公司 | 一种固态硬盘提升顺序读性能的方法及固态硬盘 |
CN108595110A (zh) * | 2018-03-07 | 2018-09-28 | 深圳忆联信息系统有限公司 | 一种利用Nand特性提高读性能的方法及固态硬盘 |
CN109783025A (zh) * | 2019-01-10 | 2019-05-21 | 深圳忆联信息系统有限公司 | 顺序数据页颗粒度离散分布的读方法和装置 |
CN109901785A (zh) * | 2017-12-08 | 2019-06-18 | 西安华为技术有限公司 | 命令排序方法、降低读时延方法及固态硬盘ssd控制器 |
CN109976679A (zh) * | 2019-04-11 | 2019-07-05 | 苏州浪潮智能科技有限公司 | 一种分布式集群卷预读方法、系统、设备及计算机介质 |
CN110321080A (zh) * | 2019-07-02 | 2019-10-11 | 北京计算机技术及应用研究所 | 一种跨节点的温数据池预读方法 |
CN111324282A (zh) * | 2018-12-14 | 2020-06-23 | 北京兆易创新科技股份有限公司 | 一种存储器 |
CN111694504A (zh) * | 2019-03-15 | 2020-09-22 | 杭州宏杉科技股份有限公司 | 一种处理读请求的方法及装置 |
CN113268204A (zh) * | 2021-05-26 | 2021-08-17 | 绿芯半导体(厦门)有限公司 | 一种提高ssd多通道并发数据读写效率的方法 |
CN113568572A (zh) * | 2021-07-09 | 2021-10-29 | 浙江工业大学 | 一种基于固态硬盘的数据库并行排序连接系统 |
CN114579051A (zh) * | 2022-02-25 | 2022-06-03 | 阿里巴巴(中国)有限公司 | 识别硬盘读模式的方法以及装置 |
CN117032595A (zh) * | 2023-10-09 | 2023-11-10 | 北京忆恒创源科技股份有限公司 | 顺序流检测方法及存储设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923522A (zh) * | 2009-06-11 | 2010-12-22 | 中兴通讯股份有限公司 | 存储控制器及数据操作命令的处理方法 |
CN101944066A (zh) * | 2009-07-10 | 2011-01-12 | 成都市华为赛门铁克科技有限公司 | 固态硬盘的接口处理方法、固态硬盘以及存储系统 |
CN102141898A (zh) * | 2011-04-26 | 2011-08-03 | 记忆科技(深圳)有限公司 | 固态硬盘读写指令重排序的方法及其系统 |
CN102298508A (zh) * | 2011-09-07 | 2011-12-28 | 记忆科技(深圳)有限公司 | 基于流的固态硬盘预读取的方法及装置 |
CN102473087A (zh) * | 2009-07-02 | 2012-05-23 | 三德动力有限公司 | 对与存储装置关联的多个写命令进行排序 |
WO2012081730A1 (en) * | 2010-12-15 | 2012-06-21 | Kabushiki Kaisha Toshiba | Memory system and method of controlling memory system |
US20140082272A1 (en) * | 2012-02-13 | 2014-03-20 | Ibm Corporation | Memory Reorder Queue Biasing Preceding High Latency Operations |
CN105849669A (zh) * | 2013-12-27 | 2016-08-10 | 高通股份有限公司 | 用于单个通道内的dram空间联合的方法和装置 |
-
2016
- 2016-08-26 CN CN201610737116.2A patent/CN106339326A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923522A (zh) * | 2009-06-11 | 2010-12-22 | 中兴通讯股份有限公司 | 存储控制器及数据操作命令的处理方法 |
CN102473087A (zh) * | 2009-07-02 | 2012-05-23 | 三德动力有限公司 | 对与存储装置关联的多个写命令进行排序 |
CN101944066A (zh) * | 2009-07-10 | 2011-01-12 | 成都市华为赛门铁克科技有限公司 | 固态硬盘的接口处理方法、固态硬盘以及存储系统 |
WO2012081730A1 (en) * | 2010-12-15 | 2012-06-21 | Kabushiki Kaisha Toshiba | Memory system and method of controlling memory system |
CN102141898A (zh) * | 2011-04-26 | 2011-08-03 | 记忆科技(深圳)有限公司 | 固态硬盘读写指令重排序的方法及其系统 |
CN102298508A (zh) * | 2011-09-07 | 2011-12-28 | 记忆科技(深圳)有限公司 | 基于流的固态硬盘预读取的方法及装置 |
US20140082272A1 (en) * | 2012-02-13 | 2014-03-20 | Ibm Corporation | Memory Reorder Queue Biasing Preceding High Latency Operations |
CN105849669A (zh) * | 2013-12-27 | 2016-08-10 | 高通股份有限公司 | 用于单个通道内的dram空间联合的方法和装置 |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107291631A (zh) * | 2017-05-24 | 2017-10-24 | 记忆科技(深圳)有限公司 | 一种提高固态硬盘中多流读出时性能的方法 |
CN108089996A (zh) * | 2017-11-29 | 2018-05-29 | 深圳忆联信息系统有限公司 | 一种提升带slc缓存的固态硬盘读性能的方法 |
CN109901785B (zh) * | 2017-12-08 | 2022-04-05 | 华为云计算技术有限公司 | 命令排序方法、降低读时延方法及固态硬盘ssd控制器 |
CN109901785A (zh) * | 2017-12-08 | 2019-06-18 | 西安华为技术有限公司 | 命令排序方法、降低读时延方法及固态硬盘ssd控制器 |
CN108170380B (zh) * | 2017-12-28 | 2021-02-05 | 深圳忆联信息系统有限公司 | 一种固态硬盘提升顺序读性能的方法及固态硬盘 |
CN108170380A (zh) * | 2017-12-28 | 2018-06-15 | 深圳忆联信息系统有限公司 | 一种固态硬盘提升顺序读性能的方法及固态硬盘 |
CN108595110B (zh) * | 2018-03-07 | 2021-12-14 | 深圳忆联信息系统有限公司 | 一种利用Nand特性提高读性能的方法及固态硬盘 |
CN108595110A (zh) * | 2018-03-07 | 2018-09-28 | 深圳忆联信息系统有限公司 | 一种利用Nand特性提高读性能的方法及固态硬盘 |
CN111324282A (zh) * | 2018-12-14 | 2020-06-23 | 北京兆易创新科技股份有限公司 | 一种存储器 |
CN109783025A (zh) * | 2019-01-10 | 2019-05-21 | 深圳忆联信息系统有限公司 | 顺序数据页颗粒度离散分布的读方法和装置 |
CN109783025B (zh) * | 2019-01-10 | 2022-03-29 | 深圳忆联信息系统有限公司 | 顺序数据页颗粒度离散分布的读方法和装置 |
CN111694504A (zh) * | 2019-03-15 | 2020-09-22 | 杭州宏杉科技股份有限公司 | 一种处理读请求的方法及装置 |
CN109976679A (zh) * | 2019-04-11 | 2019-07-05 | 苏州浪潮智能科技有限公司 | 一种分布式集群卷预读方法、系统、设备及计算机介质 |
CN110321080A (zh) * | 2019-07-02 | 2019-10-11 | 北京计算机技术及应用研究所 | 一种跨节点的温数据池预读方法 |
CN113268204A (zh) * | 2021-05-26 | 2021-08-17 | 绿芯半导体(厦门)有限公司 | 一种提高ssd多通道并发数据读写效率的方法 |
CN113268204B (zh) * | 2021-05-26 | 2022-10-18 | 绿芯半导体(厦门)有限公司 | 一种提高ssd多通道并发数据读写效率的方法 |
CN113568572A (zh) * | 2021-07-09 | 2021-10-29 | 浙江工业大学 | 一种基于固态硬盘的数据库并行排序连接系统 |
CN113568572B (zh) * | 2021-07-09 | 2024-03-22 | 浙江工业大学 | 一种基于固态硬盘的数据库并行排序连接系统 |
CN114579051A (zh) * | 2022-02-25 | 2022-06-03 | 阿里巴巴(中国)有限公司 | 识别硬盘读模式的方法以及装置 |
CN114579051B (zh) * | 2022-02-25 | 2024-04-23 | 阿里巴巴(中国)有限公司 | 识别硬盘读模式的方法以及装置 |
CN117032595A (zh) * | 2023-10-09 | 2023-11-10 | 北京忆恒创源科技股份有限公司 | 顺序流检测方法及存储设备 |
CN117032595B (zh) * | 2023-10-09 | 2024-01-23 | 北京忆恒创源科技股份有限公司 | 顺序流检测方法及存储设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106339326A (zh) | 一种提升固态硬盘顺序读性能的方法 | |
US8583854B2 (en) | Nonvolatile storage device with NCQ supported and writing method for a nonvolatile storage device | |
US8832333B2 (en) | Memory system and data transfer method | |
US7500063B2 (en) | Method and apparatus for managing a cache memory in a mass-storage system | |
US8219764B2 (en) | System and apparatus for enhancing data storage efficiency of a flash memory by reducing time for reorganizing data | |
US20120110239A1 (en) | Causing Related Data to be Written Together to Non-Volatile, Solid State Memory | |
CN1950804A (zh) | 闪速存储器控制器高速缓存架构 | |
US20100077175A1 (en) | Method of Enhancing Command Executing Performance of Disc Drive | |
US20110296089A1 (en) | Programming method and device for a buffer cache in a solid-state disk system | |
US8996794B2 (en) | Flash memory controller | |
CN101740102B (zh) | 一种多通道闪存芯片阵列结构及其写入和读出方法 | |
US10628081B2 (en) | Managing internal command queues in solid state storage drives | |
US7216214B2 (en) | System and method for re-ordering memory references for access to memory | |
US20150253992A1 (en) | Memory system and control method | |
US20190370199A1 (en) | Method of out of order processing of scatter gather lists | |
US9170893B2 (en) | Method and system for selecting region of a nonvolatile memory | |
CN101908368A (zh) | 电子存储装置及其操作方法 | |
CN103902475B (zh) | 一种基于队列管理机制的固态硬盘并行访问方法及装置 | |
WO2012137372A1 (en) | Memory system | |
US20170083234A1 (en) | Data storage device and data reading method thereof | |
CN108829346A (zh) | 一种适应闪存页差异的固态硬盘的用户写请求处理方法 | |
WO2018024214A1 (zh) | Io流调节方法与装置 | |
US20170003911A1 (en) | Information processing device | |
CN105528299A (zh) | 读取命令排程方法以及使用该方法的装置 | |
CN104834478B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170118 |
|
RJ01 | Rejection of invention patent application after publication |