CN107943413B - 一种固态硬盘提升读性能的方法 - Google Patents
一种固态硬盘提升读性能的方法 Download PDFInfo
- Publication number
- CN107943413B CN107943413B CN201710948806.7A CN201710948806A CN107943413B CN 107943413 B CN107943413 B CN 107943413B CN 201710948806 A CN201710948806 A CN 201710948806A CN 107943413 B CN107943413 B CN 107943413B
- Authority
- CN
- China
- Prior art keywords
- reading
- command
- read
- merged
- requests
- 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
Images
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/061—Improving I/O performance
-
- 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/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种固态硬盘提升读性能的方法,其特征在于硬盘固件中增加命令合并操作,硬盘固件接收到主机的读命令后,先经过命令合并操作将连续落在同一个并发读单元的读命令请求进行合并描述,并记录为合并读命令,具体为连续落在同一个并发读单元的多个读命令合并为合并读命令后只记录第一个读命令信息,在第一个读命令的读命令信息的数据结构中增加读请求个数,读请求个数用于描述连续落在同一个并发读单元的读命令个数。通过引入变长的读请求控制,可有效降低对于SSD内部高速内存如DRAM或SRAM的需求;同时也降低了CPU交互、软件尝试的开销,可大大提升NAND并发性,进而保障了高带宽场景下的读性能。
Description
技术领域
本发明涉及固态硬盘控制技术,特别涉及一种固态硬盘提升读性能的方法。
背景技术
SSD(固态硬盘)已经被广泛应用于各种场合,随着协议的发展,已经从传统的SATA发展为PCIe/NVMe时代,其接口性能也带来数倍的提升。
在SATA时代,典型的接口性能在500MB/s左右,而在PCIe/NVMe接口规范下,则典型需要2-3GB/s的带宽。对应地其接口性能的上限也从500MB/s提升为3GB/s.
传统SSD的架构设计,需要兼顾小颗粒度的读写(4K),对于操作请求的描述较为碎片化。由于接口速度的限制,这些在SATA接口时不会暴露出瓶颈,但迁移到PCIe/NVMe时代时,则不可避免地成为影响性能的瓶颈。
图1是典型的NAND组成结构示意图;NAND由多个块Block组成,每个Block又由多个页Page组成。DIE是该NAND FLASH可支持的独立并发操作的单元;块Block可独立擦除的单元,其内各个物理位置的数据写入后在下一次写之前必须要将整个Block擦除,才可写入新的数据;页Page是读写的单元,也就是向FLASH中写入或读出数据必须以页为操作单位进行。
由于NAND的原理决定了,存在如下的特性和限制:典型的,一个Block擦除需要10几个毫秒;写一个Block数据大约需要几个毫秒;而读一个Block的数据仅仅只需要几十个微秒;进一步地,同一时间内,单个DIE只能执行一种类型的操作。
图2是一个典型的NAND的读流程示意图,
S0提交读命令操作:当主机HOST发送读命令给到SSD,通常携带逻辑地址范围信息,包括逻辑块起始地址lba_start和逻辑块数量lba_cnt,逻辑块地址lba为主机最小读写地址,对应大小为512字节。
S1按映射表颗粒度派发读请求操作:SSD固件将接收到的读命令的逻辑地址范围按照SSD内部映射颗粒度(一般为4KB)进行切分,作为一个控制节点,并用特定的数据结构进行描述。数据结构需要至少携带如下信息:操作类型、命令信息、逻辑地址、物理地址、Buffer地址、数据有效性标志、和其他必要控制信息。
S2地址映射操作:该操作依次提交地址映射模块进行地址翻译:将逻辑地址转换为物理地址。
S3等待拼凑并发读请求操作:NAND控制器端,需要根据到来的操作请求发起读操作。由于一个NAND物理页会包含多个映射单元数据(如4K),为保证将对应的读请求合并在单次NAND读操作中完成,需要在此环节等待拼凑。连续的0/1/2/3请求可以合并在单次读操作中完成。
S4发起NAND读操作:完成拼凑后,向NAND发起读请求。
S5返回所读取的数据操作:将实际从NAND中读取的数据返回给主机。
在此过程中,需要为每4KB分配一个控制节点,而在从属于同一个命令的控制节点中,其大多数字段是重复的:如操作类型、逻辑地址、物理地址等,由此造成了较大的快速内存如SRAM或DRAM的开销,这对于嵌入式系统来说会极大影响性能。
进一步,在整个读内部处理流程中,由于从源头上被切分成了4KB单元,需要处理很多类似的节点:构建、传递、解析等,这些在高带宽的SSD系统中极大制约性能的体现。
发明内容
针对以上缺陷,本发明目的是如何在降低命令处理机制带来的系统延迟,实现充分提升NAND的并发性,进而实现提高读性能。
为了解决以上问题本发明提出了一种固态硬盘提升读性能的方法,其特征在于硬盘固件中增加命令合并操作,硬盘固件接收到主机的读命令后,先经过命令合并操作将连续落在同一个并发读单元的读命令请求进行合并描述,并记录为合并读命令,具体为连续落在同一个并发读单元的多个读命令合并为合并读命令后只记录第一个读命令信息,在第一个读命令的读命令信息的数据结构中增加读请求个数,读请求个数用于描述连续落在同一个并发读单元的读命令个数。
所述的固态硬盘提升读性能的方法,其特征在硬盘固件直接根据命令合并操作后的合并读命令下发起读请求,地址映射操作根据合并读命令携带的读命令信息进行地址映射操作,地址映射完成后直接针对合并读命令发起NAND读操作。
本发明通过引入变长的读请求控制,可有效降低对于SSD内部快速Memory的需求;同时也降低了CPU交互、软件尝试的开销,可大大提升NAND并发性,进而保障了高带宽场景下的读性能。
附图说明
图1是典型的NAND组成结构示意图;
图2是一个典型的NAND的读流程示意图;
图3是引入变长操作请求后的NAND的读流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图3是引入变长操作请求后的NAND的读流程示意图,与传统实现的主要差别是,硬盘固件接收到读命令请求后,不直接切分到4KB单元,而是预查内部映射表,将连续落在同一个并发读单元内的4KB请求合并描述。典型如并发读单元内的大小为16KB的物理页。
假设主机下发了0~910个读命令,其中0、1、2和3落在同一个并发读单元,4和5落在同一个并发读单元,7、8和9落在同一个并发读单元,硬盘固件经过接收到命令后先执行命令合并操作,对同一个并发读单元的命令进行了合并,合并后只需要构建以0,4,6,7为代表的读请求即可,而不需要像传统的需要构建10个读请求,节约了命令描述的空间消耗。为适配该变长描述,在读请求的数据结构中新增描述字段“读请求个数”。读请求个数用于描述连续落在同一个并发读单元的读命令个数。具体执行流程举例说明如下:
L0提交读命令操作:当主机HOST发送读命令给到SSD,通常携带逻辑地址范围信息,包括逻辑块起始地址lba_start和逻辑块数量lba_cnt,逻辑块地址lba为主机最小读写地址,对应大小为512字节。
L1检查逻辑、物理连续性完成命令合并操作;合并后的每个合并读命令作为一个控制节点,采用数据结构进行命令描述。数据结构除了需要携带如下必要信息:操作类型、命令信息、逻辑地址、物理地址、Buffer地址、数据有效性标志、和其他必要控制信息;还增加了读命令读请求个数用于描述连续落在同一个并发读单元的读命令个数。
L2下发读请求代表操作:以合并读命令为单位下发读请求。
L3地址映射操作,根据合并读命令携带的信息执行逻辑地址与物理地址的映射操作。
L4针对每个读请求直接发起NAND读操作:直接针对每个合并读命令向NAND发起读请求。
L5返回所读取的数据操作:将实际从NAND中读取的数据返回给主机。
0/4/6/7控制节点传递到NAND控制器端,由于此时已经按照并发性进行了分组,不再需要有等待拼接过程,直接对0/4/6/7提交对应的读操作请求即可。
通过如上机制,将重复的控制节点的资源开销/构建/传递,以及并发操作等待机制等进行了有效的精简和优化,减少了资源开销和软件参与度,可有效地保障PCIe/NVMeSSD的高带宽实现。
以上所揭露的仅为本发明一种实施例而已,当然不能以此来限定本之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于本发明所涵盖的范围。
Claims (1)
1.一种固态硬盘提升读性能的方法,其特征在于硬盘固件中增加命令合并操作,硬盘固件接收到主机的读命令后,先经过命令合并操作将连续落在同一个并发读单元的读命令请求进行合并描述,并记录为合并读命令,合并后的每个合并读命令作为一个控制节点,采用数据结构进行命令描述;具体为连续落在同一个并发读单元的多个读命令合并为合并读命令后只记录第一个读命令信息,在第一个读命令的读命令信息的数据结构中增加读请求个数,读请求个数用于描述连续落在同一个并发读单元的读命令个数;硬盘固件直接根据命令合并操作后的合并读命令下发起读请求,地址映射操作根据合并读命令携带的读命令信息进行地址映射操作,地址映射完成后直接针对合并读命令发起NAND读操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710948806.7A CN107943413B (zh) | 2017-10-12 | 2017-10-12 | 一种固态硬盘提升读性能的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710948806.7A CN107943413B (zh) | 2017-10-12 | 2017-10-12 | 一种固态硬盘提升读性能的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107943413A CN107943413A (zh) | 2018-04-20 |
CN107943413B true CN107943413B (zh) | 2021-02-09 |
Family
ID=61935218
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710948806.7A Active CN107943413B (zh) | 2017-10-12 | 2017-10-12 | 一种固态硬盘提升读性能的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107943413B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984132A (zh) * | 2018-08-24 | 2018-12-11 | 郑州云海信息技术有限公司 | 一种基于持久性内存文件系统的io调度方法及装置 |
CN111881096B (zh) * | 2020-07-24 | 2022-06-17 | 北京浪潮数据技术有限公司 | 一种文件读取方法、装置、设备及存储介质 |
CN114721590B (zh) * | 2022-03-11 | 2024-09-13 | 成都储迅科技有限责任公司 | 一种基于硬件的固态硬盘读命令自动整合的方法及系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7146481B2 (en) * | 2003-03-24 | 2006-12-05 | Lsi Logic Corporation | Methods and systems for pre-merge read of configuration data from a foreign volume group inserted in storage array |
CN103064636B (zh) * | 2012-12-24 | 2016-04-13 | 创新科存储技术有限公司 | 一种固态硬盘读写方法以及一种固态硬盘 |
CN103425439A (zh) * | 2013-07-16 | 2013-12-04 | 记忆科技(深圳)有限公司 | 固态硬盘读写的方法及其固态硬盘 |
CN104021034B (zh) * | 2014-06-24 | 2017-12-08 | 上海众源网络有限公司 | 任务处理方法及系统 |
CN104317656B (zh) * | 2014-10-14 | 2018-01-16 | 深圳市锐明技术股份有限公司 | 一种块设备输入输出请求调度的方法及装置 |
CN106775438B (zh) * | 2015-11-25 | 2019-08-30 | 华中科技大学 | 一种基于固态盘读写特性的i/o调度方法 |
-
2017
- 2017-10-12 CN CN201710948806.7A patent/CN107943413B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107943413A (zh) | 2018-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
USRE49273E1 (en) | Switch and memory device | |
US11960749B2 (en) | Data migration method, host, and solid state disk | |
US8321639B2 (en) | Command tracking for direct access block storage devices | |
US9405485B2 (en) | Method and apparatus for writing data to a flash memory | |
CN110941395B (zh) | 动态随机存取存储器、内存管理方法、系统及存储介质 | |
CN112035381B (zh) | 一种存储系统及存储数据处理方法 | |
CN107943413B (zh) | 一种固态硬盘提升读性能的方法 | |
CN102566939B (zh) | 一种固态硬盘及其读-修改-写操作的数据管理方法 | |
US10754785B2 (en) | Checkpointing for DRAM-less SSD | |
US11042328B2 (en) | Storage apparatus and method for autonomous space compaction | |
CN103207846A (zh) | 内存控制器及控制方法 | |
TWI698744B (zh) | 資料儲存裝置及邏輯至物理位址映射表之更新方法 | |
CN104881248A (zh) | 面向ssd的文件系统中自适应直接io加速方法 | |
US10235054B1 (en) | System and method utilizing a cache free list and first and second page caches managed as a single cache in an exclusive manner | |
TWI626540B (zh) | 一般及垃圾回收的資料存取方法以及使用該方法的裝置 | |
WO2015058641A1 (zh) | 一种混合硬盘的实现方法及装置 | |
CN113377288B (zh) | 硬件队列管理系统、方法、固态硬盘控制器及固态硬盘 | |
CN104834478A (zh) | 一种基于异构混合存储设备的数据写入及读取方法 | |
CN103092771A (zh) | 固态储存装置及其高速缓存的控制方法 | |
JP6100927B2 (ja) | 情報処理装置 | |
US20150212759A1 (en) | Storage device with multiple processing units and data processing method | |
CN110968537B (zh) | 一种基于pcie ssd的fpga搜索匹配方法 | |
TWI835027B (zh) | 更新主機與閃存位址對照表的方法及電腦程式產品及裝置 | |
CN110865952B (zh) | 利用缓存优化dma传输 | |
US20240168876A1 (en) | Solving submission queue entry overflow using metadata or data pointers |
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 |