CN115576876A - 一种应用于NVMe SSD的DMA分配与管理方法 - Google Patents

一种应用于NVMe SSD的DMA分配与管理方法 Download PDF

Info

Publication number
CN115576876A
CN115576876A CN202211263901.0A CN202211263901A CN115576876A CN 115576876 A CN115576876 A CN 115576876A CN 202211263901 A CN202211263901 A CN 202211263901A CN 115576876 A CN115576876 A CN 115576876A
Authority
CN
China
Prior art keywords
dma
transmission
data
data volume
management method
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
Application number
CN202211263901.0A
Other languages
English (en)
Inventor
段好强
王璞
吴斌
乔子龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Sinochip Semiconductors Co Ltd
Original Assignee
Shandong Sinochip Semiconductors Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong Sinochip Semiconductors Co Ltd filed Critical Shandong Sinochip Semiconductors Co Ltd
Priority to CN202211263901.0A priority Critical patent/CN115576876A/zh
Publication of CN115576876A publication Critical patent/CN115576876A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

本发明公开一种应用于NVMe SSD的DMA分配与管理方法,本方法估算每个DMA工作量,并且为下次DMA传输分配适量的数据。首先计算某笔数据传输的数据量,当数据量小于某个最小数据量阈值时,则采取着重保持某个DMA的连续工作而不是所有DMA都在频繁传输完毕后又开始的小数据量传输;当数据量大于某个最小数据量阈值时,则认为是大数据量的传输,着重保持所有DMA的连续工作而不是将工作堆积于某个DMA。本方法充分考虑了DMA运行过程中能够体现DMA负载的因素,能够获取准确的DMA状态统计信息,以筛选出最符合开启的DMA进行下次的数据传输,提高控制器中DMA的利用率,提升控制器前端IO处理速度。

Description

一种应用于NVMe SSD的DMA分配与管理方法
技术领域
本发明涉及NVMe存储领域,具体是一种应用于NVMe SSD的DMA分配与管理方法。
背景技术
NVMe SSD是遵循非易失性内存主机控制器接口规范(Non-Volatile Memoryexpress)的固态驱动器(Solid State Disk)。SSD由控制器和存储器组成。一个优秀的NVMeSSD的控制器,能够充分利用PCIE通道的低延时以及并行性,在可控制的存储成本下,极大地提升固态硬盘的读写性能,降低由于AHCI接口带来的高延时,彻底解放STAT时代固态硬盘的极致性能。
作为NVMe SSD重要组成部分的控制器,承担着搭建Host和存储器之间的数据通路,处理Host下发的IO,Admin命令和优化存储器使用等重要任务。在Host与存储器的数据交互中,DMA是提高数据传输效率的一种典型的功能。
在一个典型的NVMe SSD控制器的构成中,一般存在多个前端DMA,以达到数据并行,充分利用总线带宽的目的。前端DMA负责将Host内存中的数据传输到控制器的buffer中,或者将控制器buffer中的数据传输到Host内存中。所以前端DMA的分配管理也就显得尤为重要。现如今的主流控制器中,大多采用固定权重分配的方式,为每个DMA分配固定权重的工作量,此举会造成DMA的不均衡传输,即有的DMA满负荷工作,有的DMA确因为分配权重低不进行DMA传输,造成DMA资源的浪费。
发明内容
针对现有技术的缺陷,本发明提供一种应用于NVMe SSD的DMA分配与管理方法,在主机与控制器数据传输的过程中,提供灵活高效的调度方式。基于此种方法设计的前端固件,可以显著提高数据传输效率,提升NVMe SSD IOPS和带宽,降低固件对于DMA传输的干预和影响。
为了解决所述技术问题,本发明采用的技术方案是:一种应用于NVMe SSD的DMA分配与管理方法,包括以下步骤:
S01)、固件在收到主机下发的IO/Admin命令,解析后发起DMA请求;
S02)、固件通过DMA状态信息中的传输字节数,即DMA负载统计,来判断DMA是否处于空闲状态,负载统计为0,则该DMA处于空闲状态;
S03)、如果全部DMA都处于空闲状态,那么依据DMA权重优先级开启最高优先级的DMA进行传输;
S04)、如果有存在处于非空闲状态的DMA,就去比较非空闲状态中的DMA的负载统计;
S05)、如果非空闲状态的DMA存在传输数据量m小于最小数据量阈值M,并且传输字节s小于阈值S,那么就开启本DMA进行传输;
S06)、如果不存在上述状态的DMA,那么所有DMA都在进行传输并且传输本笔数据量m不小于阈值M,传输字节s不小于阈值;
S07)、选取当前DMA传输耗时最小者启动传输;
S08)、固件检测DMA 该笔数据传输的完成;
S09)、更新DMA状态信息结构。
进一步的,设单个DMA的启动时间为Ts ,DMA开启次数为k,启动后至传输单位字节结束耗费时间为单位字节传输时间Tb ,单个DMA正在执行的该笔数据量为n,每个描述符要传输字节数为mi,那么从DMA开启数据传输到传输完成所耗费的时间应该为
Figure 295875DEST_PATH_IMAGE001
,步骤S07)中,根据该公式确定每个DMA的传输耗时。
进一步的,步骤S01)至步骤S07)通过线程1运行,步骤S08)至步骤S09)通过线程2运行,数据连续传输时,线程1与线程2并行运行。
进一步的,步骤S09)更新的DMA状态信息结构包括DMA负载统计即传输字节数s、DMA 传输的数据的数量m。
本发明的有益效果:本方法充分考虑了DMA运行过程中的传输字节数、Descriptor数量等能够体现DMA负载的因素,能够获取准确的DMA状态统计信息,以筛选出最符合开启的DMA进行下次的数据传输。有效利用了NVMe SSD控制器中的DMA进行数据传输,提高控制器中DMA的利用率,提升控制器前端IO处理速度。
附图说明
图1 为本发明的流程图。
具体实施方式
下面结合附图和具体实施例对本发明做进一步的说明。
实施例1
在多DMA的数据传输中,保持每个DMA的传输连续性能够增强数据的传输能力。在DMA传输完成某笔数据传输时,会暂停此DMA以等待下次DMA数据传输的配置,重新启动DMA的系列操作,在NVMe SSD中是由固件控制分配,这无疑会增添不必要的启动耗时。
每笔数据传输会配置一个DMA Descriptor(数据描述符),DMA通过读取Descriptor(数据描述符)来判断数据的传输量。在有多笔要使用DMA进行串行传输的数据时,DMA则可以传输完当前这笔数据后,根据读取的Descriptor(数据描述符)自动启动下一笔要传输的数据。因此,固件层可以为某个DMA准备好多笔要传输的数据,或者在当前DMA传输数据完成前,将接下来要传输数据的Descriptor准备好并移至当前DMA传输数据的Descriptor(数据描述符)之后。
为了估算每个DMA工作量,并且为下次DMA传输分配适量的数据,本实施例采取以下措施。首先计算某笔数据传输的数据量,当数据量小于某个最小数据量阈值时,则采取着重保持某个DMA的连续工作而不是所有DMA都在频繁传输完毕后又开始的小数据量传输,即数据量小于某个最小数据阈值,则优先为每笔小数据量的传输使用同一个DMA,而不是把每笔小数据量的传输分配到所有DMA上,同时将此笔数据量记录到该DMA的负载统计中;当数据量大于某个最小数据量阈值时,则认为是大数据量的传输,着重保持所有DMA的连续工作而不是将工作堆积于某个DMA,即按照数据量和DMA的权重优先级,将本笔数据分配到负载最小的且权重最高的DMA上,同时将此笔数据量记录到该DMA的负载统计中。因此,本方法中将DMA权重优先级、DMA负载、DMA正在运行的Descriptor数量这三者作为DMA分配与管理方法中的三个要素,能够获取准确的DMA状态统计信息,以筛选出最符合开启的DMA进行下次的数据传输。
如图1所示,本实施例所述方法的具体步骤为:
S01)、固件在收到主机下发的IO/Admin命令,解析后发起DMA请求;
S02)、固件通过DMA状态信息中的传输字节数,即DMA负载统计,来判断DMA是否处于空闲状态,负载统计为0,则该DMA处于空闲状态;
S03)、如果全部DMA都处于空闲状态,那么依据DMA权重优先级开启最高优先级的DMA进行传输;
S04)、如果有存在处于非空闲状态的DMA,就去比较非空闲状态中的DMA的负载统计;
S05)、如果非空闲状态的DMA存在传输数据量m小于最小数据量阈值M,并且传输字节s小于阈值S,那么就开启本DMA进行传输;
S06)、如果不存在上述状态的DMA,那么所有DMA都在进行传输并且传输本笔数据量m不小于阈值M,传输字节s不小于阈值;
S07)、选取当前DMA传输耗时最小者启动传输;
S08)、固件检测DMA 该笔数据传输的完成;
S09)、更新DMA状态信息结构,包括DMA负载统计即传输字节数s、DMA 传输的数据的数量m。
假设单个DMA的启动时间为Ts ,DMA开启次数为k,启动后至传输单位字节结束耗费时间为单位字节传输时间Tb ,单个DMA正在执行的该笔数据量为n,每个描述符要传输字节数为mi,那么从DMA开启数据传输到传输完成所耗费的时间应该为
Figure 341192DEST_PATH_IMAGE001
,步骤S07)中,根据该公式确定每个DMA的传输耗时。在该公式中,DMA启动时间Ts 和单位字节传输时间Tb 为常数,DMA开启次数k和数据传输的数量n以及每个笔数据要传输字节数mi 为影响DMA传输的关键因素。由此三个因素可估算DMA传输时间。
本实施例中,步骤S01)至步骤S07)通过线程1运行,步骤S08)至步骤S09)通过线程2运行,数据连续传输时,线程1与线程2并行运行。
以上,描述的仅是本发明的基本原理和优选实施例,本领域技术人员根据本发明做出的改机和替换,属于本发明的保护范围。

Claims (4)

1.一种应用于NVMe SSD的DMA分配与管理方法,其特征在于:包括以下步骤:
S01)、固件在收到主机下发的IO/Admin命令,解析后发起DMA请求;
S02)、固件通过DMA状态信息中的传输字节数,即DMA负载统计,来判断DMA是否处于空闲状态,负载统计为0,则该DMA处于空闲状态;
S03)、如果全部DMA都处于空闲状态,那么依据DMA权重优先级开启最高优先级的DMA进行传输;
S04)、如果有存在处于非空闲状态的DMA,就去比较非空闲状态中的DMA的负载统计;
S05)、如果非空闲状态的DMA存在传输数据量m小于最小数据量阈值M,并且传输字节s小于阈值S,那么就开启本DMA进行传输;
S06)、如果不存在上述状态的DMA,那么所有DMA都在进行传输并且传输本笔数据量m不小于阈值M,传输字节s不小于阈值;
S07)、选取当前DMA传输耗时最小者启动传输;
S08)、固件检测DMA 该笔数据传输的完成;
S09)、更新DMA状态信息结构。
2.根据权利要求1所述的应用于NVMe SSD的DMA分配与管理方法,其特征在于:设单个DMA的启动时间为Ts ,DMA开启次数为k,启动后至传输单位字节结束耗费时间为单位字节传输时间Tb ,单个DMA正在执行的该笔数据量为n,每个描述符要传输字节数为mi,那么从DMA开启数据传输到传输完成所耗费的时间应该为
Figure DEST_PATH_IMAGE001
,步骤S07)中,根据该公式确定每个DMA的传输耗时。
3.根据权利要求1所述的应用于NVMe SSD的DMA分配与管理方法,其特征在于:步骤S01)至步骤S07)通过线程1运行,步骤S08)至步骤S09)通过线程2运行,数据连续传输时,线程1与线程2并行运行。
4.根据权利要求1所述的应用于NVMe SSD的DMA分配与管理方法,其特征在于:步骤S09)更新的DMA状态信息结构包括DMA负载统计即传输字节数s、DMA 传输的数据的数量m。
CN202211263901.0A 2022-10-17 2022-10-17 一种应用于NVMe SSD的DMA分配与管理方法 Pending CN115576876A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211263901.0A CN115576876A (zh) 2022-10-17 2022-10-17 一种应用于NVMe SSD的DMA分配与管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211263901.0A CN115576876A (zh) 2022-10-17 2022-10-17 一种应用于NVMe SSD的DMA分配与管理方法

Publications (1)

Publication Number Publication Date
CN115576876A true CN115576876A (zh) 2023-01-06

Family

ID=84585569

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211263901.0A Pending CN115576876A (zh) 2022-10-17 2022-10-17 一种应用于NVMe SSD的DMA分配与管理方法

Country Status (1)

Country Link
CN (1) CN115576876A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117807002A (zh) * 2024-03-01 2024-04-02 山东云海国创云计算装备产业创新中心有限公司 基于直接存储器访问通道的负载均衡方法、装置及介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117807002A (zh) * 2024-03-01 2024-04-02 山东云海国创云计算装备产业创新中心有限公司 基于直接存储器访问通道的负载均衡方法、装置及介质
CN117807002B (zh) * 2024-03-01 2024-05-24 山东云海国创云计算装备产业创新中心有限公司 基于直接存储器访问通道的负载均衡方法、装置及介质

Similar Documents

Publication Publication Date Title
US8341374B2 (en) Solid state drive and related method of scheduling operations
US11281572B2 (en) Information processing apparatus and memory access method
KR20190009694A (ko) 멀티-티어 올-플래시 데이터센터의 자동 데이터 배치 관리자
US9635123B2 (en) Computer system, and arrangement of data control method
US10261897B2 (en) Tail latency aware foreground garbage collection algorithm
KR101505395B1 (ko) 플래시 메모리 시스템에서 페이징된 가비지 수집과 하우스 키핑 동작
CN104090847A (zh) 一种固态存储设备的地址分配方法
US11010094B2 (en) Task management method and host for electronic storage device
CN115576876A (zh) 一种应用于NVMe SSD的DMA分配与管理方法
US20080301381A1 (en) Device and method for controlling commands used for flash memory
US20240078013A1 (en) Optimized I/O Performance Regulation for Non-Volatile Storage
WO2019136967A1 (zh) 一种应用在存储系统中的任务调度优化方法
CN105242955A (zh) 一种虚拟机磁盘输入输出调度方法及系统
US11307797B2 (en) Storage device and information processing system
WO2023035113A1 (zh) 一种存储装置的控制方法及装置
CN108170380B (zh) 一种固态硬盘提升顺序读性能的方法及固态硬盘
CN111582739B (zh) 一种多租户固态盘性能隔离条件下实现高带宽的方法
US10783096B2 (en) Storage system and method of controlling I/O processing
CN116343849B (zh) 提升ssd混合读写性能的方法、装置、存储介质及设备
KR20210158744A (ko) 플래시 저장 장치 및 페이지 희생 스케줄링 방법
US11030007B2 (en) Multi-constraint dynamic resource manager
CN117389485B (zh) 存储性能优化方法、装置、存储系统、电子设备和介质
US20240104468A1 (en) Maintenance background task regulation using feedback from instrumented waiting points
WO2024109076A1 (zh) 内存管理方法、计算机设备及存储介质
CN116225626A (zh) 一种面向zns ssd的多芯片协同调度方法

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