一种自主分离的NVMe PRP获取加速方法技术

技术编号:29132330 阅读:39 留言:0更新日期:2021-07-02 22:27
本发明专利技术公开一种自主分离的NVMe PRP获取加速方法,本方法接收NVMe IO命令后,获取NVMe IO命令中的LBA Format、Number LBA、PRP Entry1、PRP Entry2,根据LBA Format和Number LBA计算要传输的数据长度m,m=LBA Format*Number LBA;根据数据长度m和PRP Entry1的偏移量计算需要用到的N个PRP Entry,PRP Entry1的偏移量为0时,N=m/4K,PRP Entry1的偏移量不为0时,N=m/4K+1。N>2时,从PRP Entry2中获取PRP List,将PRP Entry2和PRP List中的PRP Entry做拆分后,写入到RAM。本发明专利技术可以显著提高固件对PRP Entry和PRP List的处理速度,为PRP Entry和PRP List的使用提供更高的便利性。

【技术实现步骤摘要】
一种自主分离的NVMePRP获取加速方法
本专利技术涉及存储领域,具体是一种自主分离的NVMePRP获取加速方法。
技术介绍
NVMeSSD是遵循非易失性内存主机控制器接口规范(Non-VolatileMemoryexpress)的固态驱动器(SolidStateDisk)。SSD由控制器和存储器组成。一个优秀的NVMeSSD的控制器,能够充分利用PCIE通道的低延时以及并行性,在可控制的存储成本下,极大地提升固态硬盘的读写性能,降低由于AHCI接口带来的高延时,彻底解放SATA时代固态硬盘的极致性能。在NVMeSSD和主机的数据交互中,PRPEntry和PRPList是不可或缺的关键因素。控制器获取Host的PRPEntry和PRPList的方式决定了SSD的性能。传统的NVMeSSD控制器中,多采用软件获取PRPEntry的方式,此方式对于命令处理有较大的延时。所以PRPEntry和PRPList的获取方式显得尤为重要。PRP是指物理区域页面(PhysicalRegionRange),PRPEntry实质是本质就是一个64位内存物理地址,只不过把这个物理地址分成两部分:页起始地址和页内偏移。最后两bit是0,说明PRP表示的物理地址只能四字节对齐访问。PRP页内偏移可以是0,也可以是个非零的值。PRPEntry描述的是一段连续的物理内存的起始地址。如果需要描述若干个不连续的物理内存,则需要若干个PRPEntry。把若干个PRPEntry链接起来,就成了PRPList。LBA是逻辑区块地址(LogicalBlockAddress),LBA是描述计算机存储设备上数据所在区块的通用机制,一般用在像硬盘这样的辅助记忆设备。LBAFormat是指LBA格式,根据不同的LBA格式,LBAFormat可以是4K或其他数值,NumberLBA是指LBA序号。
技术实现思路
本专利技术要解决的技术问题是提供一种自主分离的NVMePRP获取加速方法,本方法可以显著提高固件对PRPEntry和PRPList的处理速度,为PRPEntry和PRPList的使用提供更高的便利性。为了解决所述技术问题,本专利技术采用的技术方案是:一种自主分离的NVMePRP获取加速方法,包括以下步骤:S01)、接收NVMeIO命令;S02)、获取NVMeIO命令中的LBAFormat、NumberLBA、PRPEntry1、PRPEntry2,根据LBAFormat和NumberLBA计算要传输的数据长度m,m=LBAFormat*NumberLBA;S03)、根据数据长度m和PRPEntry1的偏移量计算需要用到的N个PRPEntry,PRPEntry1的偏移量为0时,N=m/4K,PRPEntry1的偏移量不为0时,N=m/4K+1;S04)、判断N≤2是否成立:若N≤2不成立,从PRPEntry2中获取PRPList,将PRPEntry2和PRPList中的PRPEntry做拆分后,写入到RAM;若N≤2成立,继续判断N≤1是否成立,若N≤1成立,将PRPEntry1写入到RAM中,若N≤1不成立,将PRPEntry1和PRPEntry2写入到RAM中。进一步的,将NVMeIO命令中的PRPEntry1、PRPEntry2分别称为地址P1、地址P2,当P1偏移量为0时:在m等于4k的情况下,使用P1即可传输完所有数据,将P1传输长度标记为L1,L1=4K,将P1和L1放入RAM队列中,传输数据长度为L1=4K;在m等于8k的情况下,使用P1和P2即可传输完所有数据,将P1传输长度标记为L1,L1=4K;P2传输长度标记为L2,L2=4K,将P1、L1和P2、L2放入RAM队列中,传输数据长度为L1+L2=4K+4K=8K;在m大于8k的情况下,使用P1和P2无法传输所有数据,则向PRPEntry2中按照q=(m-4k)/4k的数量获取PRRList,获取下来的PRPList中含有q个PRPEntry,记为P1、P2、···Pq,将各个PRPEntry传输长度都记为Lq,Lq=4K,此时将P1、L1和所有PRPEntry及其传输长度全部写入RAM队列,传输数据长度记为L,。进一步的,将NVMeIO命令中的PRPEntry1、PRPEntry2分别称为地址P1、地址P2,当P1偏移量不为0时,将P1偏移量记为O1:则在m等于4k的情况下,使用P1、P2即可传输完所有数据,将P1传输长度标记为L1,L1=4K-O1,将P2传输长度记为L2,L2=O1,将P1、L1和P2、L2放入RAM队列中,传输数据长度为L1+L2=4K-O1+O1=4K;在m等于8k的情况下,使用P1和P2无法传输所有数据,P1的传输长度记为L1,L1=4k-O1,向PRPEntry2中按照q=2获取PRRList,获取下来的PRPList中含有2个PRPEntry且第一个PRPEntry记为Pq1,它的传输长度记为Lq1,Lq1=O1,将第一个PRPEntry加上O1的偏移记为Pq2,它的传输长度记为Lq2,Lq2=4k-O1,将第二个PRPEntry记为Pq3,它的传输长度记为Lq3,Lq3=O1;此时将P1、L1和所有Pqn、Lqn写RAM队列,n∈[1,3],传输数据长度为L1+L2+L3=4K-O1+O1+4K-O1+O1=8k;在m大于8k的情况下,使用P1和P2无法传输所有数据,P1的传输长度记为L1,L1=4k-O1,向PRPEntry2中按照q=(m-4k)/4k+1的数量获取PRRList,获取下来的PRPList中含有q个PRPEntry且第一个PRPEntry记为Pq1,它的传输长度记为Lq1,Lq1=O1,将第一个PRPEntry加上O1的偏移记为Pq2,它的传输长度记为Lq2,Lq2=4k-O1,将第二个PRPEntry记为Pq3,它的传输长度记为Lq3,Lq3=O1,将第二个PRPEntry加上O1的偏移记为Pq4,它的传输长度记为Lq4,Lq4=O1,依次类推,直到将最后一个PRPEntry拆分为Pqn和Lqn,将P1、L1和所有Pqi、Lqi写RAM队列,n∈[1,n],传输数据长度为L1+(q+1)4K。进一步的,所述方法在SSD控制器单独设置的硬件模块中运行,硬件模块自带RAM,获取的NVMePRP及其传输长度写入硬件模块自身的RAM中。进一步的,硬件模块使用Tail寄存器表征队列的生产者指针,当硬件模块写入RAM时,更新此寄存器;CPU使用Head寄存器表征消费者指针,当软件读出RAM时,更新Head寄存器。进一步的,LBAFormat为4K。本专利技术的有益效果:本专利技术充分考虑了PRPEntry1对齐和不对齐时的各种传输长度。能够获取准确获取PRPEntry个数并将其自主拆分为可以传输不同长度数据的地址。有效减少了软件拆分PRPEntry的步骤,也就将传统的CPU获取PRPEntry方式进行本文档来自技高网
...

【技术保护点】
1.一种自主分离的NVMe PRP获取加速方法,其特征在于:包括以下步骤:/nS01)、接收NVMe IO命令;/nS02)、获取NVMe IO命令中的LBA Format、Number LBA、PRP Entry1、PRP Entry2,根据LBA Format和Number LBA计算要传输的数据长度m,m=LBA Format*Number LBA;/nS03)、根据数据长度m和PRP Entry1的偏移量计算需要用到的N个PRP Entry,PRPEntry1的偏移量为0时,N=m/4K,PRP Entry1的偏移量不为0时,N=m/4K+1;/nS04)、判断N≤2是否成立:/n若N≤2不成立,从PRP Entry2中获取PRP List,将PRP Entry2和PRP List中的PRPEntry做拆分后,写入到RAM;/n若N≤2成立,继续判断N≤1是否成立,若N≤1成立,将PRP Entry1写入到RAM中,若N≤1不成立,将PRP Entry1和PRP Entry2写入到RAM中。/n

【技术特征摘要】
1.一种自主分离的NVMePRP获取加速方法,其特征在于:包括以下步骤:
S01)、接收NVMeIO命令;
S02)、获取NVMeIO命令中的LBAFormat、NumberLBA、PRPEntry1、PRPEntry2,根据LBAFormat和NumberLBA计算要传输的数据长度m,m=LBAFormat*NumberLBA;
S03)、根据数据长度m和PRPEntry1的偏移量计算需要用到的N个PRPEntry,PRPEntry1的偏移量为0时,N=m/4K,PRPEntry1的偏移量不为0时,N=m/4K+1;
S04)、判断N≤2是否成立:
若N≤2不成立,从PRPEntry2中获取PRPList,将PRPEntry2和PRPList中的PRPEntry做拆分后,写入到RAM;
若N≤2成立,继续判断N≤1是否成立,若N≤1成立,将PRPEntry1写入到RAM中,若N≤1不成立,将PRPEntry1和PRPEntry2写入到RAM中。


2.根据权利要求1所述的自主分离的NVMePRP获取加速方法,其特征在于:将NVMeIO命令中的PRPEntry1、PRPEntry2分别称为地址P1、地址P2,当P1偏移量为0时:
在m等于4k的情况下,使用P1即可传输完所有数据,将P1传输长度标记为L1,L1=4K,将P1和L1放入RAM队列中,传输数据长度为L1=4K;
在m等于8k的情况下,使用P1和P2即可传输完所有数据,将P1传输长度标记为L1,L1=4K;P2传输长度标记为L2,L2=4K,将P1、L1和P2、L2放入RAM队列中,传输数据长度为L1+L2=4K+4K=8K;
在m大于8k的情况下,使用P1和P2无法传输所有数据,则向PRPEntry2中按照q=(m-4k)/4k的数量获取PRRList,获取下来的PRPList中含有q个PRPEntry,记为P1、P2、···Pq,将各个PRPEntry传输长度都记为Lq,Lq=4K,此时将P1、L1和所有PRPEntry及其传输长度全部写入RAM队列,传输数据长度记为L,。


3.根据权利要求1所述的自主分离的NVMePRP获取加速方法,其特征在于:将NVMeIO命令中的PRPEntry1、PRPEntry2分别称为地址P1、地址P2,当P1偏移量不为0时,将P1偏移量记为O1:
则在m等于4k的情况下,使用P1、P2即可...

【专利技术属性】
技术研发人员:段好强吴斌乔子龙孙中琳
申请(专利权)人:山东华芯半导体有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1