CN112347012B - 支持SR-IOV的NVMe控制器及方法 - Google Patents
支持SR-IOV的NVMe控制器及方法 Download PDFInfo
- Publication number
- CN112347012B CN112347012B CN202011396008.6A CN202011396008A CN112347012B CN 112347012 B CN112347012 B CN 112347012B CN 202011396008 A CN202011396008 A CN 202011396008A CN 112347012 B CN112347012 B CN 112347012B
- Authority
- CN
- China
- Prior art keywords
- register
- access
- controller
- address
- memory
- 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
- 238000000034 method Methods 0.000 title claims abstract description 37
- 230000004044 response Effects 0.000 claims abstract description 18
- 230000008569 process Effects 0.000 claims description 12
- 238000012545 processing Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 9
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 101150071434 BAR1 gene Proteins 0.000 description 1
- 101100378536 Ovis aries ADRB1 gene Proteins 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000017702 response to host Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Bus Control (AREA)
Abstract
提供了支持SR‑IOV的NVMe控制器及方法。其中NVMe控制器包括:系统总线访问部件、控制器寄存器访问部件、CPU以及物理存储器;系统总线访问部件耦合于外部总线并响应于来自系统总线的存储器空间访问请求生成控制器寄存器访问请求,所述控制器寄存器访问请求包括第一存储器地址、访问类型以及PF或VF的标识符;所述控制器寄存器访问部件响应于收到控制器寄存器访问请求,对于访问提交队列门铃寄存器的访问请求,将所述访问提交队列门铃寄存器的访问请求的地址转换为物理存储器地址;所述控制器寄存器访问部件响应于收到控制器寄存器访问请求,对于访问完成队列门铃寄存器的访问请求,将所述访问完成队列门铃寄存器的访问请求的地址转换为存储器地址。
Description
技术领域
本发明涉及NVMe(Non-Volatile Memory express,高速非易失存储)控制器,具体地,涉及支持SR-IOV(Single Root IO Virtualization,单根IO虚拟化)的NVMe控制器。
背景技术
在NVMe协议中定义了控制器寄存器(Controller Register,也参见“NVM ExpressRevision 1.2”(下称NVMe协议)第3章,2014年11月3日)。在基于PCIe协议实现NVMe控制器时,NVMe控制器寄存器被映射到PCIe设备的存储器空间(Memory Space)。在NVMe协议中,PCIe寄存器MLBAR与MUBAR(PCIe协议中的寄存器BAR0与BAR1)定义了用于提供NVMe控制器寄存器的存储器空间(本文中也称之为存储器寄存器空间)。
除了PCIe协议,可基于其他总线协议实现NVMe协议。在总线协议中,设备提供可被其他总线实体访问的存储器空间(Memory Space,或称存储器寄存器空间),并将NVMe控制器寄存器映射到存储器空间。从而为访问NVMe控制器寄存器,通过在总线协议中访问存储器空间来实现。
主机(Host)或其他总线实体依据NVMe协议能够访问控制器寄存器,但也应遵循若干约束。例如,Host不能同时访问设备的两个或多个控制器寄存器;被保留的寄存器或者寄存器中被保留的比特是只读的,在被读取时返回0。
控制器寄存器包括不同用途的寄存器。参看图1A,展示了控制寄存器在存储器空间中的布局。依据NVMe协议,以PCIe协议作为总线协议为例,在PCIe设备的存储器空间的前4K字节(地址范围0-0x0FFF)提供的寄存器(本公开中称为属性/控制寄存器)用于描述控制器的基本属性,例如控制器能力、版本、命令队列基地址,或者用于提供对控制器的控制端口。在存储器空间的0x1000地址开始存储命令队列的门铃寄存器(Doorbell寄存器),在门铃寄存器之后的存储器空间存储设备商专用(Vendor Specific)信息。
控制器寄存器具有多种类型(Type),例如NVMe协议1.2版本定义了只读类型(RO)、读写类型(RW)、RW1S类型与RW1C类型。在NVMe协议的其他版本中,还可能定义其他的控制器寄存器类型。RW1S类型的含义是该寄存器可读可写,在被写入时,向某位写“1”意味着按位设置中断向量的掩码,而写“0”则没有作用;在被读出时,当前的中断向量的掩码值(而非寄存器的值)被读出。RW1C类型的含义是,该寄存器可读可写,在写入时,向某位写“1”意味着按位清除中断向量的掩码,而写“0”则没有作用;在被读出时,当前的中断向量的掩码值(而非寄存器的值)被读出。
通过支持SR-IOV中的PF(Physical Function,物理功能)与VF(VirtualFunction,虚拟功能),NVMe控制器支持SR-IOV(参见“Single Root I/O Virtualizationand Sharing Specification”Revision 1.1,2010年1月20日)。支持SR-IOV的NVMe控制器中包括多个控制器。本公开中,将支持PF的控制器称为第一类控制器,而将支持VF的控制器称为第二类控制器。为支持SR-IOV,需要为每个PF与VF提供控制器寄存器。
参看图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)信息。
发明内容
然而,NVMe协议没有定义在控制器中如何实现控制器寄存器。然而NVMe协议与SR-IOV协议也未定义如何实现控制器寄存器。控制器寄存器的访问方式不限于寄存器的读/写操作,对于被保留的寄存器、特殊类型的寄存器,具有特殊的访问方式。NVMe协议在迅速发展,当前的控制器寄存器实现方式需要满足协议演进的需求。为实现SR-IOV,每个PF或VF的具有各自的控制器寄存器空间,使得其中的同类型控制器寄存器分散在物理存储器的不同位置,这不利于进一步的处理。
根据本发明的第一方面,提供了根据本发明第一方面的第一访问NMVe控制器寄存器的方法,包括:识别访问PCIe设备的内存空间的访问请求;根据所述访问请求的地址确定所述访问请求访问PF或VF的控制器寄存器;对于访问提交队列门铃寄存器的访问请求,将所述访问提交队列门铃寄存器的访问请求的地址转换为存储器地址,使得属于PF与一个或多个VF的提交队列门铃寄存器存储于存储器的连续地址范围。
根据本发明的第一方面的第一访问NMVe控制器寄存器的方法,提供了根据本发明第一方面的第二访问NMVe控制器寄存器的方法,还包括:对于访问完成队列门铃寄存器的访问请求,将所述访问完成队列门铃寄存器的访问请求的地址转换为存储器地址,使得属于PF与一个或多个VF的完成队列门铃寄存器存储于存储器的连续地址范围。
根据本发明的第一方面的第一或第二访问NMVe控制器寄存器的方法,提供了根据本发明第一方面的第三访问NMVe控制器寄存器的方法,还包括:若所述访问请求访问PF或VF的第一类寄存器,生成寄存器访问消息并将寄存器访问消息发送给CPU,其中所述寄存器访问消息包括控制器寄存器地址以及所述第一类寄存器所属的PF或VF的标识符;其中控制器寄存器包括第一类寄存器、门铃寄存器和/或设备商专用寄存器,其中第一类寄存器占据PCIe设备的内存空间的预定范围。
根据本发明的第一方面的第三访问NMVe控制器寄存器的方法,提供了根据本发明第一方面的第四访问NMVe控制器寄存器的方法,还包括:所述CPU响应于收到寄存器访问消息,依据所述寄存器访问消息的控制器寄存器地址识别所访问的第一类寄存器的类型,以及依据所述标识符识别所访问的PF或VF,并依据NVMe协议定义的PF或VF的所述类型的第一类寄存器的访问方式,处理所述寄存器访问消息。
根据本发明的第一方面的第一至第四访问NMVe控制器寄存器的方法之一,提供了根据本发明第一方面的第五访问NMVe控制器寄存器的方法,其中所述CPU根据具有不同控制器寄存器地址的多个寄存器访问消息,访问所述PCIe设备的存储器的相同地址。
根据本发明的第一方面的第二至第五访问NMVe控制器寄存器的方法之一,提供了根据本发明第一方面的第六访问NMVe控制器寄存器的方法,还包括:所述CPU将所述寄存器访问消息的处理结果发送给所述访问请求的发出方。
根据本发明的第一方面的第二至第六访问NMVe控制器寄存器的方法之一,提供了根据本发明第一方面的第七访问NMVe控制器寄存器的方法,其中若所述访问请求访问PF或第一类寄存器,生成寄存器访问消息并将寄存器访问消息发送给与所述PF或VF对应的CPU。
根据本发明第一方面的第三访问NMVe控制器寄存器的方法,提供了根据本发明第一方面的第八访问NMVe控制器寄存器的方法,其中所述寄存器访问消息还包括访问类型,访问类型指示要对控制器寄存器进行读取还是写入。
根据本发明的第二方面,提供了根据本发明第二方面的第一访问NMVe控制器寄存器的方法,包括:识别访问存储器寄存器(Memory Registers)的访问请求;根据所述访问请求的地址确定所述访问请求访问PF或VF控制器寄存器;对于访问提交队列门铃寄存器的访问请求,将所述访问提交队列门铃寄存器的访问请求的地址转换为存储器地址,使得属于PF与一个或多个VF的提交队列门铃寄存器存储于存储器的连续地址范围。
根据本发明的第二方面的第一访问NMVe控制器寄存器的方法,提供了根据本发明第二方面的第二访问NMVe控制器寄存器的方法,还包括:若所述访问请求访问PF与一个或多个VF的第一类寄存器,生成寄存器访问消息并将寄存器访问消息发送给CPU,其中所述寄存器访问消息包括控制器寄存器地址以及所述第一类寄存器所属的PF或VF的标识符;其中控制器寄存器包括第一类寄存器、门铃寄存器和/或设备商专用寄存器,其中第一类寄存器占据存储器寄存器空间的预定范围;
根据本发明的第二方面的第一访问NMVe控制器寄存器的方法,提供了根据本发明第二方面的第三访问NMVe控制器寄存器的方法,还包括:所述CPU响应于收到寄存器访问消息,依据所述寄存器访问消息的控制器寄存器地址识别所访问的第一类寄存器的类型,以及依据所述标识符识别所访问的PF或VF,并依据NVMe协议定义的PF或VF的所述类型的第一类寄存器的访问方式,处理所述寄存器访问消息。
根据本发明的第二方面的第二或第三访问NMVe控制器寄存器的方法,提供了根据本发明第二方面的第四访问NMVe控制器寄存器的方法,其中若所述访问请求访问PF或VF的第一类寄存器,生成寄存器访问消息并将寄存器访问消息发送给与所述PF或VF对应的CPU。
根据本发明的第三方面,提供了根据本发明第三方面的第一NVMe控制器,包括:系统总线访问部件、控制器寄存器访问部件、CPU以及存储器;系统总线访问部件耦合于外部总线并响应于来自系统总线的存储器空间访问请求生成控制器寄存器访问请求,所述控制器寄存器访问请求包括第一存储器地址、访问类型以及PF或VF的标识符;所述控制器寄存器访问部件响应于收到控制器寄存器访问请求,对于访问提交队列门铃寄存器的访问请求,将所述访问提交队列门铃寄存器的访问请求的地址转换为存储器地址,使得属于PF与一个或多个VF的提交队列门铃寄存器存储于物理存储器的连续地址范围。
根据本发明的第三方面的第一NVMe控制器,提供了根据本发明第三方面的第二NVMe控制器,其中所述控制器寄存器访问部件响应于收到控制器寄存器访问请求,依据所述第一存储器地址确定所述控制器寄存器访问请求访问PF或VF的第一类寄存器,生成寄存器访问消息并发送给所述CPU;其中所述寄存器访问消息包括控制器寄存器地址以及所述第一类寄存器所属的PF或VF的标识符;其中第一类寄存器占据的地址范围在控制器寄存器空间的预定范围。
根据本发明的第三方面的第二NVMe控制器,提供了根据本发明第三方面的第三NVMe控制器,其中所述CPU响应于收到寄存器访问消息,依据所述寄存器访问消息的控制器寄存器地址识别所访问的第一类寄存器的类型,以及依据所述标识符识别所访问的PF或VF,并依据NVMe协议定义的PF或VF的所述类型的第一类寄存器的访问方式,处理所述寄存器访问消息。
根据本发明的第三方面的第一至第三NVMe控制器之一,提供了根据本发明第三方面的第四NVMe控制器,其中所述控制器寄存器访问部件响应于收到控制器寄存器访问请求,对于访问完成队列门铃寄存器的访问请求,将所述访问完成队列门铃寄存器的访问请求的地址转换为存储器地址,使得属于PF与一个或多个VF的完成队列门铃寄存器存储于存储器的连续地址范围。
根据本发明的第三方面的第二至第四NVMe控制器之一,提供了根据本发明第三方面的第五NVMe控制器,其中所述CPU根据具有不同控制器寄存器地址的多个寄存器访问消息,访问所述存储器的相同地址。
根据本发明的第三方面的第二至第五NVMe控制器之一,提供了根据本发明第三方面的第六NVMe控制器,其中若所述访问请求访问PF或VF的第一类寄存器,所述控制器寄存器访问部件生成寄存器访问消息并将寄存器访问消息发送给与所述PF或VF对应的CPU。
根据本发明的第四方面,提供了根据本发明第四方面的第一NVMe控制器,包括:NVMe控制器,包括:系统总线访问部件、CPU以及存储器;系统总线访问部件耦合于外部总线,响应于来自系统总线的存储器空间访问请求访问控制器寄存器,生成控制器寄存器访问消息并发送给所述CPU;所述CPU响应于收到控制器寄存器访问消息,依据所述控制器寄存器访问消息包括的控制器寄存器地址与PF或VF的标识符识别所访问的第一控制器寄存器,并依据NVMe协议定义的所述第一控制器寄存器的访问方式,处理所述控制器寄存器访问消息。
根据本发明的第四方面的第一NVMe控制器,提供了根据本发明第四方面的第二NVMe控制器,其中所述控制器寄存器访问部件识别存储器访问空间请求对应的PF或VF,并将生成的寄存器访问消息发送给与PF或VF对应的CPU。
根据本发明的第四方面的第一或第二NVMe控制器,提供了根据本发明第四方面的第三NVMe控制器,其中所述系统总线访问部件响应于存储器空间访问请求访问门铃寄存器,访问所述存储器,而不生成NVMe控制器寄存器访问消息。
根据本发明的第四方面的第三NVMe控制器,提供了根据本发明第四方面的第四NVMe控制器,其中所述系统总线访问部件对于访问提交队列门铃寄存器的访问请求,将所述访问提交队列门铃寄存器的访问请求的地址转换为存储器地址,使得属于PF与一个或多个VF的提交队列门铃寄存器存储于物理存储器的连续地址范围。
附图说明
当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地理解本发明以及优选的使用模式和其进一步的目的和优点,其中附图包括:
图1A展示了控制寄存器在存储器空间中的布局;
图1B展示了支持SR-IOV的NVMe控制器的控制寄存器在存储器空间中的布局;
图2示出了根据本发明实施例的NVMe控制器的电路框图;
图3示出了根据本发明又一实施例的NVMe控制器的电路框图;
图4示出了根据本发明依然另一实施例的NVMe控制器的电路框图;
图5示出了根据本发明依然又一实施例的支持SR-IOV的NVMe控制器的电路框图;以及
图6展示了根据本发明依然又一实施例的地址空间映射的示意图。
具体实施方式
图2示出了根据本发明实施例的NVMe控制器的电路框图。NVMe控制器包括P CIePHY模块210、系统总线访问模块220、控制器寄存器访问模块230、存储器240以及CPU子系统260。控制器寄存器访问模块230与CPU子系统260子系统均可访问存储器240。存储器中存储门铃(Doorbell)寄存器、设备商专用(Vendor Specific)寄存器以及用于在控制器寄存器访问模块240与CPU子系统260之间交换消息的消息队列。
主机(host)通过PCIe PHY模块210耦合到设备。NVMe控制器中包括PCIe P HY模块210以及耦合到PCIe PHY模块210的系统总线访问模块220。PCIe PHY模块210用于处理PCIe底层协议(如物理层)。系统总线访问模块220用于处理PCIe上层协议(例如,数据链路层和/或事务层)。系统总线访问模块220还将主机发送的访问设备的存储器空间(memory space)的特定区域的请求转换成包括访问类型、存储器空间地址、和/或访问数据(对于存储器空间读请求,不包括访问数据;对于存储器空间写请求,包括访问数据)的控制器寄存器访问请求,并转发给控制器寄存器访问模块230。可选地,系统总线访问模块220在控制器寄存器访问请求中可使用不同于存储器空间地址的地址格式(例如,缩短地址长度),以更有效地指示所访问的控制器寄存器。
控制器寄存器访问模块230,根据存储器空间地址确定控制器寄存器访问请求要访问属性/控制寄存器、门铃寄存器还是设备商专用寄存器。为不同类型的控制器寄存器访问请求提供不同的处理方式。
在NVMe 1.2版本协议中,PCIe寄存器MLBAR与MUBAR定义了用于提供NV Me控制器寄存器的存储器空间,而该地址空间的低4KB被用于属性/控制寄存器(参看图1)。
当要访问门铃寄存器或设备商专用寄存器时,控制器寄存器访问模块230根据存储器空间地址将访问请求写入存储器240的同存储器空间地址相对应的存储位置或从存储器的同存储器空间地址相对应的存储位置中读出数据并通过系统总线访问模块220(以及PCIe PHY 210)返回给主机。
当控制器寄存器访问请求要访问属性/控制寄存器时,控制器寄存器访问模块230生成寄存器访问消息,并将寄存器访问消息插入存储器中的消息队列。CPU子系统260中的一个或多个CPU发现在存储器240的消息队列中有待处理的消息时,取出消息,确定要访问的属性/控制寄存器以及访问类型,对寄存器访问消息进行处理,并将访问结果通过系统总线访问模块230返回给主机。在一个例子中CPU子系统260将访问结果插入存储器240中的消息队列,控制器寄存器访问模块230从消息队列中取出访问结果,并通过系统总线访问模块220返回给主机。
以此方式,实现对NVMe协议中的多种控制器寄存器,并且针对控制器寄存器的不同类型、访问约束等实现有效处理。并且在NVMe协议更新后,能够通过修改CPU子系统中运行的程序来高效地适配新版协议中引入的对控制器寄存器的访问的修改。
下面以若干控制器寄存器的访问的实例来详细介绍根据本发明的实施例。
(1)主机读/写提交队列尾指针门铃寄存器
作为举例,提交队列尾指针门铃寄存器有32比特,其中31:16比特被保留且为只读类型,而15:00比特为读写类型。
当主机请求读PCIe存储器空间地址为0x1000h的提交队列门铃寄存器的完整32位时,系统总线模块220生成包括地址0x1000h与读访问类型的控制器寄存器访问请求,并发送给控制器寄存器访问模块230。
控制器寄存器访问模块230基于地址0x1000h识别出所访问的是提交队列尾指针门铃寄存器,从存储器240的门铃寄存器存储区读出对应于地址0x1000h的提交队列尾指针值并通过系统总线访问模块220发送给主机。在又一个例子中,在存储器240中无需存储对应于地址0x1000h的提交队列尾指针的31:16比特,而仅存储提交队列尾指针的15:00比特,以节省存储空间,并由控制器寄存器访问模块230在读出提交队列尾指针时,在高位填充16比特0,以符合NVMe协议规定。
当主机请求写PCIe存储器空间地址为0x1000h的提交队列门铃寄存器的完整32位时,系统总线访问模块220生成包括地址0x1000h、待写入数据与写访问类型的控制器寄存器访问请求,并发送给控制器寄存器访问模块230。
控制器寄存器访问模块230基于地址0x1000h识别出所访问的是提交队列尾指针门铃寄存器,向存储器240的门铃寄存器存储区写入对应于地址0x1000h的提交队列尾指针值。在又一个例子中,在存储器240中无需存储对应于地址0x1000h的提交队列尾指针的31:16比特,而仅向存储器240写入提交队列尾指针的15:00比特,以节省存储空间。
(2)主机读/写CAP寄存器
在PCIe存储器空间的0x00h-0x07h地址范围为CAP寄存器,用于指示NVMe控制器的能力,CAP寄存器的64比特均为只读类型。
当主机请求读PCIe存储器空间地址为0x00h的CAP寄存器时,系统总线访问模块220生成包括地址0x00h、长度8字节与读访问类型的控制器寄存器访问请求,并发送给控制器寄存器访问模块230。
控制器寄存器访问模块230基于地址0x00h识别出所访问的是属性/控制寄存器,生成寄存器访问消息,并将寄存器访问消息插入存储器240中的消息队列。在寄存器访问消息中包括指示地址0x00h、长度8字节与读访问类型的信息。
需要指出的是,寄存器访问消息中指示的地址0x00h可以同控制器寄存器访问请求中的地址(0x00h)形式上相同或不同。例如,控制器寄存器访问请求中的地址可以是PCIe存储器空间地址。寄存器访问消息中的地址也可以是PCIe存储器空间地址。控制器寄存器被映射到PCIe存储器空间的一部分。在另一个例子中,控制器寄存器访问请求中的地址可以是PCIe存储器空间地址,而寄存器访问消息中指示的地址是专用于描述控制器寄存器或属性/控制寄存器的地址。从而寄存器访问消息中指示的地址在尺寸可以小于控制器寄存器访问请求中的地址(例如,寄存器访问消息中指示的地址来自PCIe存储器空间地址的低位)。
CPU在处理消息队列时,依据地址0x00h确定要访问的CAP寄存器,并将与CA P寄存器对应的指示NVMe控制器能力的64比特信息通过系统总线访问模块220发送给主机。作为另一个例子,CPU将与CAP寄存器对应的指示NVMe控制器能力的64比特信息写入存储器240中的消息队列。控制器寄存器访问模块230检测到CPU更新了消息队列,将被更新的与CAP寄存器对应的指示NVMe控制器能力的64比特信息通过系统总线访问模块220发送给主机。
当主机请求写PCIe存储器空间地址为0x00h的CAP寄存器时,系统总线访问模块220生成包括地址0x00h、要写入的8字节数据与写访问类型的控制器寄存器访问请求,并发送给控制器寄存器访问模块230。
控制器寄存器访问模块230基于地址0x00h识别出所访问的是属性/控制寄存器,生成寄存器访问消息,并将寄存器访问消息插入存储器240中的消息队列。在寄存器访问消息中包括指示地址0x00h、要写入的8字节数据与写访问类型的信息。
CPU260在处理消息队列时,依据地址0x00h确定要访问的是CAP寄存器,并且访问类型是写入。CPU260发现CAP寄存器是只读类型,于是忽略该消息。可选地,CPU 260生成异常消息,并通过系统总线访问模块220发送给主机,以指示主机实施了对控制器寄存器的非法操作。
(3)主机读/写被保留(Reserved)寄存器
PCIe存储器空间的0x18h-0x1Bh地址范围,在NVMe协议1.2版本中被保留。
当主机请求读PCIe存储器空间地址为0x18h的寄存器时,系统总线访问模块220生成包括地址0x18h与读访问类型的控制器寄存器访问请求,并发送给控制器寄存器访问模块230。
控制器寄存器访问模块230基于地址0x18h识别出所访问的是属性/控制寄存器,生成寄存器访问消息,并将寄存器访问消息插入存储器240中的消息队列。在寄存器访问消息中包括指示地址0x18h与读访问类型的信息。
CPU 260在处理消息队列时,依据地址0x18h确定要访问的是被保留的寄存器,并将全0的访问结果通过系统总线访问模块220发送给主机。作为另一个例子,CPU将全0的访问结果写入存储器240中的消息队列。控制器寄存器访问模块230检测到CPU更新了消息队列,将被更新的全0的访问结果通过系统总线访问模块220发送给主机。
当主机请求写PCIe存储器空间地址为0x18h的寄存器时,系统总线访问模块220生成包括地址0x18h、要写入的数据与写访问类型的控制器寄存器访问请求,并发送给控制器寄存器访问模块230。
控制器寄存器访问模块230基于地址0x18h识别出所访问的是属性/控制寄存器,生成寄存器访问消息,并将寄存器访问消息插入存储器240中的消息队列。在寄存器访问消息中包括指示地址0x18h、要写入的数据与写访问类型的信息。
CPU 260在处理消息队列时,依据地址0x18h确定要访问的是被保留的寄存器,并且访问类型是写入,于是忽略该消息。可选地,CPU 260生成异常消息,并通过系统总线访问模块220发送给主机,以指示主机实施了对控制器寄存器的非法操作。
(4)主机读/写INTMS寄存器
PCIe存储器空间的0x0Ch-0x0Fh地址范围为INTMS寄存器。INTMS寄存器用于设置中断掩码,并且具有特殊访问类型(RW1S)。INTMS寄存器被写入时,如果I NTMS寄存器的某一比特被写”1”,该比特对应的中断被屏蔽。INTMS寄存器被读出时,读出的值指示当前的中断掩码。
当主机请求读PCIe存储器空间地址为0x0Ch的寄存器时,系统总线访问模块220生成包括地址0x0Ch与读访问类型的控制器寄存器访问请求,并发送给控制器寄存器访问模块230。
控制器寄存器访问模块230基于地址0x0Ch识别出所访问的是属性/控制寄存器,生成寄存器访问消息,并将寄存器访问消息插入存储器240中的消息队列。在寄存器访问消息中包括指示地址0x0Ch与读访问类型的信息。
CPU 260在处理消息队列时,依据地址0x0Ch确定要访问的是INTMS寄存器,CPU260获取当前中断向量的中断掩码,将被屏蔽的中断在INTMS寄存器中的对应比特置“1”,将未被屏蔽的中断在INTMS寄存器中的对应比特置“0”,并将结果通过系统总线访问模块220发送给主机。作为另一个例子,CPU将INTMS寄存器的访问结果写入存储器240中的消息队列。控制器寄存器访问模块230检测到CPU更新了消息队列,将被更新的INTMS寄存器的访问结果通过系统总线访问模块220发送给主机。
当主机请求将0x0001写入PCIe存储器空间地址为0x0Ch的寄存器时,系统总线访问模块生成包括地址0x0Ch、要写入的数据0x0001与写访问类型的控制器寄存器访问请求,并发送给控制器寄存器访问模块230。
控制器寄存器访问模块230基于地址0x0Ch识别出所访问的是属性/控制寄存器,生成寄存器访问消息,并将寄存器访问消息插入存储器240中的消息队列。在寄存器访问消息中包括指示地址0x0Ch、要写入的数据0x0001与写访问类型的信息。
CPU 260在处理消息队列时,依据地址0x0Ch确定要访问的是INTMS寄存器,并且访问类型是写入。CPU 260依据待写入的数值0x0001h,将与INTMS的最低位对应的中断屏蔽。
由于NVMe控制器寄存器中的属性/控制寄存器有多种含义、格式、访问控制规则(只读/只写/被保留等)与控制作用,在本发明的实施例中,控制器寄存器230识别出对属性/控制寄存器的访问,并向CPU 260发出寄存器访问消息,由CPU 260来处理对属性/控制寄存器的访问。在进一步的例子中,具有不同存储器地址的多个保留寄存器被读出时,CPU260提供相同的值(0)作为响应,因而可在存储器240中提供单一的存储位置来存储保留寄存器的响应值,并用该响应值来响应对具有不同存储器地址的保留寄存器的访问。在另一个例子中,NVMe设备中提供多个NVMe控制器,每个NVMe控制器具有各自的控制器寄存器,各个NVMe控制器的一些控制器寄存器可具有相同的值(例如CAP寄存器)。CPU 260可访问存储器240的单一位置来响应主机对多个NVMe控制器的控制器寄存器的访问。
在根据本发明的另一实施例中,将图2中的系统总线访问模块220与控制器寄存器访问模块230集成在一起(也称为系统总线访问模块)。集成了控制器寄存器访问模块的系统总线访问模块识别主机发出的存储器访问请求的PCIe存储器空间地址,对于访问属性/控制寄存器的存储器访问请求,生成寄存器访问消息,并发送给CPU,由CPU通过处理寄存器访问消息来响应主机的属性/控制寄存器访问请求。而在系统总线访问模块识别主机发出的存储器访问请求访问门铃寄存器和/或设备商专用寄存器时,访问存储器的对应门铃寄存器存储区和/或设备商专用寄存器存储区。
在根据本发明的又一实施例中,为支持SR-IOV,系统总线访问模块220生成的控制器寄存器访问请求还包括PF/VF标识符,用于指示该访问请求对应的PF/VF。系统总线访问模块220基于存储器空间访问请求所访问的地址以及PF/VF的存储器空间配置确定该访问请求对应的PF/VF,并生成PF/VF标识符。
若控制器寄存器访问请求访问的是属性/控制寄存器,控制器寄存器访问模块230生成寄存器访问消息并发送给CPU。在发送给CPU的消息中也包括PF/VF标识符,从而CPU依据PF/VF标处理寄存器访问请求。在一个例子中,对于多个VF的相同属性/控制寄存器,CPU从存储器240或临近于CPU的其他存储器的一个存储位置获取属性/控制寄存器的复本,从而节省存储空间。若访问的是其他类型的寄存器,控制器寄存器访问模块230依据访问请求的地址将数据写入存储器240或从存储器240的相对应的存储位置中读出数据并通过系统总线访问模块220返回给主机。
在依然又一个实施例中,CPU子系统260包括多个CPU,每个CPU处理与之相对应的PF/VF的寄存器访问请求。控制器寄存器访问模块230依据控制器寄存器访问请求的PF/VF标识符,选择对应的CPU,并向对应的CPU发送寄存器访问消息。
图3示出了根据本发明又一实施例的NVMe控制器的电路框图。主机(host)通过PCIe PHY 310耦合到设备。NVMe控制器中包括PCIe PHY 310以及耦合到PCIe P HY 310的系统总线访问模块320。系统总线访问模块320将主机发送的访问设备的存储器空间的请求转换成包括访问类型、存储器空间地址、和/或访问数据(对于存储器空间读请求,不包括访问数据;对于存储器空间写请求,包括访问数据)的控制器寄存器访问请求,并转发给控制器寄存器访问模块330。
控制器寄存器访问模块330,根据存储器空间地址确定控制器寄存器访问请求要访问属性/控制寄存器、门铃寄存器还是设备商专用寄存器。
当要访问门铃寄存器或设备商专用寄存器时,控制器寄存器访问模块330根据存储器空间地址将访问请求写入存储器340的同存储器空间地址相对应的存储位置或从存储器340的同存储器空间地址相对应的存储位置中读出数据并通过系统总线访问模块320返回给主机。
当要访问属性/控制寄存器时,控制器寄存器访问模块330生成寄存器访问消息,并将寄存器访问消息通过消息队列365发送给CPU 360。消息队列365是消息分发电路。控制器寄存器访问模块330通过消息队列365将寄存器访问消息传送给CPU 360。消息队列365中有消息要交付给CPU360时,可向CPU产生中断信号,指示CPU360处理消息365中的消息。作为另一个例子,CPU 360轮询消息队列365,以发现并获取队列365中被传递给CPU 360的消息。
CPU子系统360中的一个或多个CPU从消息队列365取出消息,确定要访问的属性/控制寄存器以及访问类型,并将访问结果通过系统总线访问模块320返回给主机。
而对于属性/控制寄存器之外的其他类型的控制器寄存器访问,控制器寄存器访问模块330直接访问存储器340中。
以此方式,根据本发明的实施例实现对NVMe协议中的多种控制器寄存器的访问,并且针对控制器寄存器的不同类型、访问约束等实现有效处理。并且在NVMe协议更新后,通过修改CPU子系统360中运行的程序来高效地适配新版协议中引入的对控制器寄存器的访问的修改。
除了在PCIe协议上实现NVMe控制器外,还可以在其它协议上实现NVMe控制器。已经在开发基于Ethernet(以太网)、FC(Fibre Channel光纤通达)、IB(InfiniB and)等通信协议的NVMe控制器,也在开发基于例如RDMA的传输层协议的NVMe控制器。在这些NVMe控制器中实现本发明的实施例。通过识别对存储器空间的访问地址,识别出要访问的是映射到存储器空间的控制器寄存器。而由控制器寄存器访问模块(图2,控制器寄存器访问模块230,或者图3,控制器寄存器访问模块330)将属性/控制寄存器的访问通过消息队列发送给CPU,由CPU来处理对属性/控制寄存器的访问,而对于门铃寄存器和/或设备商专用寄存器,在存储器中提供对门铃寄存器和/或设备商专用寄存器的一一映射,并由控制器寄存器访问模块访问存储器来响应对门铃寄存器和/或设备商专用寄存器的访问。在另一个例子中,将对门铃寄存器和/或设备商专用寄存器的访问也通过消息队列发送给CPU,由CPU来处理对这些控制器寄存器的访问。
图4示出了根据本发明依然另一实施例的NVMe控制器的电路框图。在图4的例子中,通过网络将节点(Node)连接在一起。节点可以是主机、服务器、NVMe设备等。外部节点通过物理层模块(例如,Ethernet PHY 410)耦合到根据本发明实施例的NVMe设备。协议处理模块420处理底层协议(例如,IP层),并将对NVMe控制器寄存器的访问请求发送给NVMe控制器寄存器访问模块430。对NVMe控制器寄存器的访问请求包括访问类型、存储器空间地址、和/或访问数据(对于读请求,不包括访问数据;对于写请求,包括访问数据)。
控制器寄存器访问模块430,根据存储器空间地址确定控制器寄存器访问请求要访问属性/控制寄存器、门铃寄存器还是设备商专用寄存器。
当要访问门铃寄存器或设备商专用寄存器时,控制器寄存器访问模块430将访问请求写入存储器440或从存储器440读出数据并通过协议处理模块420返回给发出请求的节点。
当要访问属性/控制寄存器时,控制器寄存器访问模块430生成属性/控制寄存器访问消息,并将属性/控制寄存器访问消息发送给消息队列465。CPU子系统中的一个或多个CPU从消息队列465取出消息,确定要访问的属性/控制寄存器以及访问类型,并将访问结果通过协议处理模块420返回给发出请求的节点。在另一个例子中,在存储器440中存储消息队列,CPU子系统460从存储器440中获取消息队列条目。
图5示出了根据本发明依然又一实施例的支持SR-IOV的NVMe控制器的电路框图。主机(host)通过PCIe PHY 510耦合到设备。NVMe控制器中包括PCIe PHY 510以及耦合到PCIe PHY 510的系统总线访问模块520。系统总线访问模块520将主机发送的访问设备的存储器空间的请求转换成包括访问类型、存储器空间地址、和/或访问数据(对于存储器空间读请求,不包括访问数据;对于存储器空间写请求,包括访问数据)的控制器寄存器访问请求,并转发给控制器寄存器访问模块530。系统总线访问模块520还识别存储器空间访问请求访问的存储器空间所属的PF或VF,并生成PF/V F标识符来唯一地标识PF/VF。在控制器寄存器访问请求中包括PF/VF标识符。可选地,在控制器寄存器访问请求中的存储器空间地址是PF/VF各自的存储器空间地址。
控制器寄存器访问模块530,根据存储器空间地址确定控制器寄存器访问请求要访问属性/控制寄存器、门铃寄存器还是设备商专用寄存器。
当要访问提交队列的门铃寄存器时,控制器寄存器访问模块530对存储器空间地址进行变换,以将PF/VF各自的存储器空间中的提交队列(SQ)门铃寄存器在存储器540中连续地存储。参看图5,在存储器540中以连续的地址存储了PF0的SQ0的门铃、PF0的SQ1的门铃、VF0的SQ0的门铃、VF0的SQ1的门铃、VF1的SQ0的门铃以及VF2的SQ0的门铃。每个PF/VF可拥有不同数量的SQ门铃资源。将存储器空间中分散的SQ门铃在存储器540中连续地存储是有利的。这使得SQ门铃寄存器拥有相同的地址高位,从而通过识别对存储器540的访问的地址高位的检测,能够容易地识别出对所有PF/VF的SQ门铃寄存器的访问。对SQ门铃寄存器的访问意味着主机提交了新的NVMe命令。识别出对SQ门铃寄存器的访问,能够尽早获取NVMe命令并处理,从而降低NVMe命令的处理延迟。
在图6中更详细的展示了控制器寄存器访问模块530对存储器空间地址进行的变换。通过控制器寄存器访问模块530将主机发出的访问PCIe存储器空间610的地址转换为存储器540的地址,并使PF0、VF0、VF1与VF2的控制器寄存器中的SQ门铃寄存器在存储器540中连续地存储。可选地,将各个PF/VF的CQ门铃在存储器540中连续地存储。依然可选地,对于各个PF/VF的属性/控制寄存器和/或设备商专用寄存器的访问,由CPU 560处理,从而对于各个PF/VF可共享的控制器寄存器,无需在存储器540中占用单独的存储空间。
返回参看图5,在一个例子中,控制器寄存器访问模块530直接访问存储器540中的SQ门铃。在另一个例子中,控制器寄存器访问模块530生成寄存器访问消息,并通过消息队列565发送给CPU 560。寄存器访问消息中包括转换后的SQ门铃寄存器在存储器540中的地址。由CPU 560依据寄存器访问请求来访问存储器540中的SQ门铃。
可选地,控制器寄存器访问模块530对存储器空间地址进行变换,以将PF/VF各自的存储器空间中的完成队列(CQ)门铃寄存器和/或设备商专用寄存器在存储器540中连续地存储。
作为另一个例子,对于访问属性/控制寄存器的控制器寄存器访问请求,控制器寄存器访问模块530生成寄存器访问消息,并将寄存器访问消息通过消息队列565发送给CPU560。而对于访问门铃和/或设备商专用寄存器的控制器寄存器访问请求,控制器寄存器访问模块530直接访问存储器540,而不向CPU 560发送寄存器访问消息。
在另一个例子中,系统总线访问模块520对各个PF/VF的存储器空间的访问请求的地址进行转换,从而促进控制器寄存器访问模块530的处理。系统总线访问模块520将各个PF/VF将各个PF/VF的SQ门铃寄存器映射到物理存储器540的地址连续的存储区。可选地,还将各个PF/VF的CQ门铃寄存器映射到物理存储器540的地址连续的存储区;以及将各个PF/VF的设备商专用寄存器映射到物理存储器540的地址连续的存储区。从而控制器寄存器访问模块530无需感知和处理PF/VF(SR-IOV ID,SID),而只需基于各寄存器存储区的地址区段而确定要访问的是属性/控制寄存器、门铃寄存器、设备商专用寄存器的哪种,并进行相应处理。根据对门铃寄存器、设备商专用寄存器的访问请求,更新存储器540的相应存储位置,而根据对属性/控制寄存器的访问请求,向CPU 260发送寄存器访问消息。发送给CPU260的寄存器访问消息中包括PF/VF标识符,从而CPU 260可依据PF/VF标识符对各个PF/VF的控制器寄存器访问请求进行差异化处理。
虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本发明的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本发明的范围。
这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本发明的很多修改和其他实施方式。因此,应该理解,本发明不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。
Claims (6)
1.一种NVMe控制器,包括:系统总线访问部件、控制器寄存器访问部件、CPU以及物理存储器;
系统总线访问部件耦合于外部总线并响应于来自系统总线的存储器空间访问请求生成控制器寄存器访问请求,所述控制器寄存器访问请求包括第一存储器地址、访问类型以及PF或VF的标识符;
所述控制器寄存器访问部件响应于收到控制器寄存器访问请求,对于访问提交队列门铃寄存器的访问请求,将所述访问提交队列门铃寄存器的访问请求的地址转换为物理存储器地址,使得属于PF与一个或多个VF的提交队列门铃寄存器存储于物理存储器的连续地址范围;
所述控制器寄存器访问部件响应于收到控制器寄存器访问请求,对于访问完成队列门铃寄存器的访问请求,将所述访问完成队列门铃寄存器的访问请求的地址转换为存储器地址,使得属于PF与一个或多个VF的完成队列门铃寄存器存储于存储器的连续地址范围。
2.根据权利要求1所述的NVMe控制器,其中,所述CPU根据具有不同控制器寄存器地址的多个寄存器访问消息,访问所述存储器的相同地址。
3.根据权利要求1或2所述的NVMe控制器,其中,若所述访问请求访问PF或VF的第一类寄存器,所述控制器寄存器访问部件生成寄存器访问消息并将寄存器访问消息发送给与所述PF或VF对应的CPU,其中第一类寄存器占据PCIe设备的存储器空间的预定范围,所述第一类寄存器为属性/控制寄存器。
4.一种NVMe控制器,包括:系统总线访问部件、CPU以及物理存储器;
系统总线访问部件耦合于外部总线,响应于来自系统总线的存储器空间访问请求访问控制器寄存器,生成控制器寄存器访问消息并发送给所述CPU;
所述CPU响应于收到控制器寄存器访问消息,依据所述控制器寄存器访问消息包括的控制器寄存器地址与PF或VF的标识符识别所访问的第一控制器寄存器,并依据NVMe协议定义的所述第一控制器寄存器的访问方式,处理所述控制器寄存器访问消息;
所述系统总线访问部件对于访问提交队列门铃寄存器的访问请求,将所述访问提交队列门铃寄存器的访问请求的地址转换为存储器地址,使得属于PF与一个或多个VF的提交队列门铃寄存器存储于物理存储器的连续地址范围。
5.根据权利要求4所述的NVMe控制器,其特征在于,所述控制器寄存器访问部件识别存储器访问空间请求对应的PF或VF,并将生成的寄存器访问消息发送给与PF或VF对应的CPU。
6.根据权利要求4或5所述的NVMe控制器,其特征在于,所述系统总线访问部件响应于存储器空间访问请求访问门铃寄存器,访问所述存储器,而不生成NVMe控制器寄存器访问消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011396008.6A CN112347012B (zh) | 2016-06-20 | 2016-06-20 | 支持SR-IOV的NVMe控制器及方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610445526.XA CN107526696B (zh) | 2016-06-20 | 2016-06-20 | 软件定义的sr-iov模块 |
CN202011396008.6A CN112347012B (zh) | 2016-06-20 | 2016-06-20 | 支持SR-IOV的NVMe控制器及方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610445526.XA Division CN107526696B (zh) | 2016-06-20 | 2016-06-20 | 软件定义的sr-iov模块 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112347012A CN112347012A (zh) | 2021-02-09 |
CN112347012B true CN112347012B (zh) | 2024-07-23 |
Family
ID=60733884
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011396008.6A Active CN112347012B (zh) | 2016-06-20 | 2016-06-20 | 支持SR-IOV的NVMe控制器及方法 |
CN201610445526.XA Active CN107526696B (zh) | 2016-06-20 | 2016-06-20 | 软件定义的sr-iov模块 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610445526.XA Active CN107526696B (zh) | 2016-06-20 | 2016-06-20 | 软件定义的sr-iov模块 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN112347012B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110008154B (zh) * | 2019-04-16 | 2020-08-21 | 北京智芯微电子科技有限公司 | 提高处理器与访存总线时序的方法及内存属性预测器 |
CN114138169A (zh) * | 2020-08-12 | 2022-03-04 | 中兴通讯股份有限公司 | 报文处理方法、网络设备和存储介质 |
KR20220118004A (ko) * | 2021-02-18 | 2022-08-25 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104683430A (zh) * | 2013-07-08 | 2015-06-03 | 英特尔公司 | 用于从远程可访问存储设备进行初始化的技术 |
CN105556930A (zh) * | 2013-06-26 | 2016-05-04 | 科内克斯实验室公司 | 针对远程存储器访问的nvm express控制器 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8386723B2 (en) * | 2009-02-11 | 2013-02-26 | Sandisk Il Ltd. | System and method of host request mapping |
CN104246742B (zh) * | 2012-01-17 | 2017-11-10 | 英特尔公司 | 用于远程客户端访问存储设备的命令验证的技术 |
US9122515B2 (en) * | 2012-12-19 | 2015-09-01 | Dell Products L.P. | Completion notification for a storage device |
US9003071B2 (en) * | 2013-03-13 | 2015-04-07 | Futurewei Technologies, Inc. | Namespace access control in NVM express PCIe NVM with SR-IOV |
US9785355B2 (en) * | 2013-06-26 | 2017-10-10 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over ethernet-type networks |
US9785356B2 (en) * | 2013-06-26 | 2017-10-10 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over ethernet-type networks |
AU2015229802A1 (en) * | 2014-03-08 | 2016-10-06 | Diamanti, Inc. | Methods and systems for converged networking and storage |
US9430268B2 (en) * | 2014-05-02 | 2016-08-30 | Cavium, Inc. | Systems and methods for supporting migration of virtual machines accessing remote storage devices over network via NVMe controllers |
US9304690B2 (en) * | 2014-05-07 | 2016-04-05 | HGST Netherlands B.V. | System and method for peer-to-peer PCIe storage transfers |
JP6181304B2 (ja) * | 2014-06-19 | 2017-08-16 | 株式会社日立製作所 | ストレージ装置およびインタフェース装置 |
CN104461958B (zh) * | 2014-10-31 | 2018-08-21 | 华为技术有限公司 | 支持sr-iov的存储资源访问方法、存储控制器及存储设备 |
US9841902B2 (en) * | 2014-11-20 | 2017-12-12 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Peripheral component interconnect express controllers configured with non-volatile memory express interfaces |
CN104536701B (zh) * | 2014-12-23 | 2018-02-06 | 记忆科技(深圳)有限公司 | 一种nvme协议多命令队列的实现方法及系统 |
CN105320628B (zh) * | 2015-11-06 | 2018-11-06 | 中国科学院计算技术研究所 | 使能单根i/o设备多根共享的适配装置、系统及方法 |
-
2016
- 2016-06-20 CN CN202011396008.6A patent/CN112347012B/zh active Active
- 2016-06-20 CN CN201610445526.XA patent/CN107526696B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105556930A (zh) * | 2013-06-26 | 2016-05-04 | 科内克斯实验室公司 | 针对远程存储器访问的nvm express控制器 |
CN104683430A (zh) * | 2013-07-08 | 2015-06-03 | 英特尔公司 | 用于从远程可访问存储设备进行初始化的技术 |
Also Published As
Publication number | Publication date |
---|---|
CN107526696B (zh) | 2020-12-29 |
CN112347012A (zh) | 2021-02-09 |
CN107526696A (zh) | 2017-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11636052B2 (en) | Non-volatile memory express (NVMe) data processing method and system | |
TWI249671B (en) | Method and system for controlling memory accesses to memory modules having a memory hub architecture | |
US6611883B1 (en) | Method and apparatus for implementing PCI DMA speculative prefetching in a message passing queue oriented bus system | |
US7822908B2 (en) | Discovery of a bridge device in a SAS communication system | |
US6754735B2 (en) | Single descriptor scatter gather data transfer to or from a host processor | |
EP3608790B1 (en) | Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests | |
US20190250855A1 (en) | System and method for nvme inter command association in ssd storage | |
US8688868B2 (en) | Steering data units to a consumer | |
CN112347012B (zh) | 支持SR-IOV的NVMe控制器及方法 | |
EP3296836A1 (en) | Computer device and data read-write method for computer device | |
TW202238399A (zh) | 快速週邊組件互連裝置及其操作方法 | |
TW202240413A (zh) | PCIe裝置及其操作方法 | |
CN115203110A (zh) | PCIe功能及其操作方法 | |
US10884970B2 (en) | Techniques for coalescing doorbells in a request message | |
US20100306421A1 (en) | Dma transfer device | |
US9727521B2 (en) | Efficient CPU mailbox read access to GPU memory | |
JP5732806B2 (ja) | データ転送装置及びデータ転送方法 | |
CN114003168B (zh) | 用于处理命令的存储设备和方法 | |
US20120324078A1 (en) | Apparatus and method for sharing i/o device | |
US9146693B2 (en) | Storage control device, storage system, and storage control method | |
CN110825485A (zh) | 数据处理的方法、设备和服务器 | |
CN107526695B (zh) | NVMe配置空间实现方法与装置 | |
US20230028430A1 (en) | Systems and methods for operating data processing units | |
TWI760715B (zh) | 藉助於交易辨識碼之屬性來控制資料回應的方法以及系統 | |
CN116486868A (zh) | 计算高速链路(CXL)上的高速非易失性存储器(NVMe) |
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 |