支持SR-IOV的NVMe控制器及方法技术

技术编号:27320887 阅读:28 留言:0更新日期:2021-02-10 10:02
提供了支持SR

【技术实现步骤摘要】
支持SR-IOV的NVMe控制器及方法


[0001]本专利技术涉及NVMe(Non-Volatile Memory express,高速非易失存储)控制器,具体地,涉及支持SR-IOV(Single Root IO Virtualization,单根IO虚拟化)的NVMe控制器。

技术介绍

[0002]在NVMe协议中定义了控制器寄存器(Controller Register,也参见“NVM Express Revision 1.2”(下称NVMe协议)第3章,2014年11月3日)。在基于PCIe协议实现NVMe控制器时,NVMe控制器寄存器被映射到PCIe设备的存储器空间(Memory Space)。在NVMe协议中,PCIe寄存器MLBAR与MUBAR(PCIe协议中的寄存器BAR0与BAR1)定义了用于提供NVMe控制器寄存器的存储器空间(本文中也称之为存储器寄存器空间)。
[0003]除了PCIe协议,可基于其他总线协议实现NVMe协议。在总线协议中,设备提供可被其他总线实体访问的存储器空间(Memory Space,或称存储器寄存器空间),并将NVMe控制器寄存器映射到存储器空间。从而为访问NVMe控制器寄存器,通过在总线协议中访问存储器空间来实现。
[0004]主机(Host)或其他总线实体依据NVMe协议能够访问控制器寄存器,但也应遵循若干约束。例如,Host不能同时访问设备的两个或多个控制器寄存器;被保留的寄存器或者寄存器中被保留的比特是只读的,在被读取时返回0。
[0005]控制器寄存器包括不同用途的寄存器。参看图1A,展示了控制寄存器在存储器空间中的布局。依据NVMe协议,以PCIe协议作为总线协议为例,在PCIe设备的存储器空间的前4K字节(地址范围0-0x0FFF)提供的寄存器(本公开中称为属性/控制寄存器)用于描述控制器的基本属性,例如控制器能力、版本、命令队列基地址,或者用于提供对控制器的控制端口。在存储器空间的0x1000地址开始存储命令队列的门铃寄存器(Doorbell寄存器),在门铃寄存器之后的存储器空间存储设备商专用(Vendor Specific)信息。
[0006]控制器寄存器具有多种类型(Type),例如NVMe协议1.2版本定义了只读类型(RO)、读写类型(RW)、RW1S类型与RW1C类型。在NVMe协议的其他版本中,还可能定义其他的控制器寄存器类型。RW1S类型的含义是该寄存器可读可写,在被写入时,向某位写“1”意味着按位设置中断向量的掩码,而写“0”则没有作用;在被读出时,当前的中断向量的掩码值(而非寄存器的值)被读出。RW1C类型的含义是,该寄存器可读可写,在写入时,向某位写“1”意味着按位清除中断向量的掩码,而写“0”则没有作用;在被读出时,当前的中断向量的掩码值(而非寄存器的值)被读出。
[0007]通过支持SR-IOV中的PF(Physical Function,物理功能)与VF(Virtual Function,虚拟功能),NVMe控制器支持SR-IOV(参见“Single Root I/O Virtualization and Sharing Specification”Revision 1.1,2010年1月20日)。支持SR-IOV的NVMe控制器中包括多个控制器。本公开中,将支持PF的控制器称为第一类控制器,而将支持VF的控制器称为第二类控制器。为支持SR-IOV,需要为每个PF与VF提供控制器寄存器。
[0008]参看图1B,展示了支持SR-IOV的NVMe控制器的控制寄存器在存储器空间中的布
局。在SR-IOV中,每个PF或VF有各自的存储器空间,由BAR寄存器描述了存储器空间的基地址,并基于每个PF或VF的存储器空间提供属于每个PF或VF的控制器的控制器寄存器。每个PF或VF的存储器空间从0x00地址开始存储控制器寄存器,将存储控制器寄存器的地址空间也称为控制器寄存器空间。依据NVMe协议,在每个PF或VF的存储器空间从0x00地址开始的前4K字节(地址范围0-0x0FFF)提供提供的寄存器(本公开中称为属性/控制寄存器)用于描述控制器的基本属性,例如控制器能力、版本、命令队列基地址,或者用于提供对控制器的控制端口。在存储器空间的0x1000地址开始存储命令队列的门铃寄存器(Doorbell寄存器),在门铃寄存器之后的存储器空间存储设备商专用(Vendor Specific)信息。

技术实现思路

[0009]然而,NVMe协议没有定义在控制器中如何实现控制器寄存器。然而NVMe协议与SR-IOV协议也未定义如何实现控制器寄存器。控制器寄存器的访问方式不限于寄存器的读/写操作,对于被保留的寄存器、特殊类型的寄存器,具有特殊的访问方式。NVMe协议在迅速发展,当前的控制器寄存器实现方式需要满足协议演进的需求。为实现SR-IOV,每个PF或VF的具有各自的控制器寄存器空间,使得其中的同类型控制器寄存器分散在物理存储器的不同位置,这不利于进一步的处理。
[0010]根据本专利技术的第一方面,提供了根据本专利技术第一方面的第一访问NMVe控制器寄存器的方法,包括:识别访问PCIe设备的内存空间的访问请求;根据所述访问请求的地址确定所述访问请求访问PF或VF的控制器寄存器;对于访问提交队列门铃寄存器的访问请求,将所述访问提交队列门铃寄存器的访问请求的地址转换为存储器地址,使得属于PF与一个或多个VF的提交队列门铃寄存器存储于存储器的连续地址范围。
[0011]根据本专利技术的第一方面的第一访问NMVe控制器寄存器的方法,提供了根据本专利技术第一方面的第二访问NMVe控制器寄存器的方法,还包括:对于访问完成队列门铃寄存器的访问请求,将所述访问完成队列门铃寄存器的访问请求的地址转换为存储器地址,使得属于PF与一个或多个VF的完成队列门铃寄存器存储于存储器的连续地址范围。
[0012]根据本专利技术的第一方面的第一或第二访问NMVe控制器寄存器的方法,提供了根据本专利技术第一方面的第三访问NMVe控制器寄存器的方法,还包括:若所述访问请求访问PF或VF的第一类寄存器,生成寄存器访问消息并将寄存器访问消息发送给CPU,其中所述寄存器访问消息包括控制器寄存器地址以及所述第一类寄存器所属的PF或VF的标识符;其中控制器寄存器包括第一类寄存器、门铃寄存器和/或设备商专用寄存器,其中第一类寄存器占据PCIe设备的内存空间的预定范围。
[0013]根据本专利技术的第一方面的第三访问NMVe控制器寄存器的方法,提供了根据本专利技术第一方面的第四访问NMVe控制器寄存器的方法,还包括:所述CPU响应于收到寄存器访问消息,依据所述寄存器访问消息的控制器寄存器地址识别所访问的第一类寄存器的类型,以及依据所述标识符识别所访问的PF或VF,并依据NVMe协议定义的PF或VF的所述类型的第一类寄存器的访问方式,处理所述寄存器访问消息。
[0014]根据本专利技术的第一方面的第一至第四访问NMVe控制器寄存器的方法之一,提供了根据本专利技术第一方面的第本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种NVMe控制器,包括:系统总线访问部件、控制器寄存器访问部件、CPU以及物理存储器;系统总线访问部件耦合于外部总线并响应于来自系统总线的存储器空间访问请求生成控制器寄存器访问请求,所述控制器寄存器访问请求包括第一存储器地址、访问类型以及PF或VF的标识符;所述控制器寄存器访问部件响应于收到控制器寄存器访问请求,对于访问提交队列门铃寄存器的访问请求,将所述访问提交队列门铃寄存器的访问请求的地址转换为物理存储器地址,使得属于PF与一个或多个VF的提交队列门铃寄存器存储于物理存储器的连续地址范围;所述控制器寄存器访问部件响应于收到控制器寄存器访问请求,对于访问完成队列门铃寄存器的访问请求,将所述访问完成队列门铃寄存器的访问请求的地址转换为存储器地址,使得属于PF与一个或多个VF的完成队列门铃寄存器存储于存储器的连续地址范围。2.根据权利要求1所述的NVMe控制器,其中,所述CPU根据具有不同控制器寄存器地址的多个寄存器访问消息,访问所述存储器的相同地址。3.根据权利要求1或2所述的NVMe控制器,其中,若所述访问请求访问PF或VF的第一类寄存器,所述控制器寄存器访问部件生成寄存器访问消息并将寄存器访问消息发送给与所述PF或VF对应的CPU。4.一种NVMe控制器,包括:系统总线访问部件、CPU以及物理存储器;系统总线访问部件耦合于外部总线,响应于来自系统总线的存储器空间访问请求访问控制器寄存器,生成控制器寄存器访问消息并发送给所述CPU;所述CPU响应于收到控制器寄存器访问消息,依据所述控制器寄存器访问消息包括的控制器寄存器地址与PF或VF的标识符识别所访问的第一控制器寄存器,并依据NVMe协议定义的所述第一控制器寄存器的访问方式,处理所述控制器寄存器访问消息。5.根据权利要求4所述的NVMe控制器,其特征在于,所述控制器寄存器访问...

【专利技术属性】
技术研发人员:王晨阳汤峰王祎磊
申请(专利权)人:北京忆芯科技有限公司
类型:发明
国别省市:

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

1