CN121434117A - NVMe SSD以及包括NVMe SSD的存储系统 - Google Patents
NVMe SSD以及包括NVMe SSD的存储系统Info
- Publication number
- CN121434117A CN121434117A CN202510979325.7A CN202510979325A CN121434117A CN 121434117 A CN121434117 A CN 121434117A CN 202510979325 A CN202510979325 A CN 202510979325A CN 121434117 A CN121434117 A CN 121434117A
- Authority
- CN
- China
- Prior art keywords
- address
- host
- address translation
- command
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及NVMe SSD及包括NVMe SSD的存储系统,根据本发明的实施例的NVMe SSD(100)包括存储器控制器(110),并且通过PCIe总线与外部的主机(200)进行收发,其中,存储器控制器(110)包括:ATS管理部(111),对主机(200)请求将虚拟地址(virtual address)转换为物理地址(physical address)的地址转换服务(Address Translation Service,ATS);以及地址转换缓冲存储器(112),临时存储由主机(200)响应于所接收的地址转换服务请求而转换的物理地址。
Description
技术领域
本发明涉及NVMe SSD及包括NVMe SSD的存储系统,更详细而言,涉及可以有效地支持PCIe地址转换服务(Address Translation Service,ATS)的NVMe SSD以及将NVMe SSD用作存储装置的存储系统。
背景技术
固态硬盘(Solid State Drive,SSD)是用于消费者产品到企事业级的各种计算机系统中的存储装置。SSD大体上由存储器控制器和非易失性存储器构成,并且根据主机的请求读取和写入数据。SSD可以通过SATA(串行高级技术附件,Serial Advanced TechnologyAttachment)总线或PCIe(外设组件快速互连,Peripheral Component Interconnectexpress)总线与主机连接,由于PCIe总线提供与SATA总线相比更高的最大传输速度和带宽可扩展性,近年来,基于PCIe的SSD备受关注。因此,为了充分利用PCIe总线的优点,开发了非易失性快速存储器(Non-Volatile Memory express,NVMe)规范(specification)。
NVMe是基于提交队列(submission queue)和完成队列(completion queue)的协议。通常,提交队列和完成队列存在于主机存储器的空间中。主机生成命令并将其存储在提交队列中,并且通过更新提交队列门铃寄存器(submission queue doorbell register)来表示NVMe SSD控制器有新的命令。提交队列也一同包括有关物理区域页(Physical RegionPage,PRP)的信息,该物理区域页指示相应命令所需的数据在哪个区域。PRP显示位于主机存储器中的物理存储器页面的地址。NVMe SSD控制器从其提交队列获取(fetch)命令和有关PRP的信息,并且使用其PRP区域的地址在主机存储器的相应区域中通过DMA(直接内存访问,Direct Memory Access)读取和写入数据。完成的命令被添加到主机存储器的完成队列中,并且生成中断以通知命令处理完成。主机响应于命令完成来处理必要的工作,并且在完成队列门铃寄存器(completion queue doorbell register)中进行记录。
当主机的输入输出存储器管理单元(I/O Memory Management Unit,IOMMU)启用(Enable)时,为了NVMe SSD通过DMA直接访问主机存储器,必须进行将输入输出虚拟地址(IO virtual address)转换为物理地址(physical address)的工作,主机的IOMMU按通过DMA的请求而生成的每个PCIe TLP(事务层数据包,Transaction Layer Packet)执行地址转换。然而,大量的PCIe TLP响应于NVMe SSD的DMA请求而到达PCIe根复合体(RootComplex,RC),而IOMMU必须对每个TLP执行地址转换等的过程消耗大量的时间。特别是,在传输大量的数据时,必然发生更多的延迟。此外,由于产生了开销,从而可能限制主机的CPU性能。
因此,迫切需要用于解决现有的由NVMe SSD的DMA引起的主机CPU性能受限问题的方案。
发明内容
本发明为了解决上述的现有技术的问题,提供了一种NVMe SSD及包括NVMe SSD的存储系统,本发明的一个方面通过对主机请求PCIe地址转换服务(Address TranslationService,ATS),并且临时存储作为其应答所转换的物理地址,从而可以根据此物理地址而直接访问主机存储器。
根据本发明的实施例的NVMe SSD包括存储器控制器,通过PCIe总线与外部的主机进行收发,其中,上述存储器控制器包括:对上述主机请求将虚拟地址(virtual address)转换为物理地址(physical address)的地址转换服务(Address Translation Service,ATS)的ATS管理部;以及临时存储从上述主机接收的响应于上述地址转换服务请求而转换的上述物理地址的地址转换缓冲存储器。
另外,在根据本发明的实施例的NVMe SSD中,上述存储器控制器还可以包括:根据临时存储于上述地址转换缓冲存储器的上述物理地址访问上述主机的存储器的DMA引擎。
另外,在根据本发明的实施例的NVMe SSD中,上述存储器控制器还包括:命令处理部,从上述主机的提交队列(submission queue)分别获取(fetch)命令和有关物理区域页(Physical Region Page,PRP)的信息,并且执行获取的上述命令,上述地址转换缓冲存储器可以存储上述命令处理部获取(fetch)的有关上述物理区域页的信息。
另外,在根据本发明的实施例的NVMe SSD中,上述ATS管理部可以只针对上述主机的多个命令中的由上述主机允许上述地址转换服务的地址转换目标命令而请求上述地址转换服务。
另外,在根据本发明的实施例的NVMe SSD中,上述地址转换目标命令可以通过由上述主机生成的按照上述命令的提交队列条目被区分。
另外,在根据本发明的实施例的NVMe SSD中,在上述地址转换目标命令的上述提交队列条目的字段中,存储有成为上述地址转换服务的目标的上述虚拟地址和进程地址空间ID(PASID),上述ATS管理部可以以存储在上述提交队列条目的字段中的上述虚拟地址和进程地址空间ID(PASID)为基础,请求上述地址转换服务。
另一方面,根据本发明的实施例的存储系统包括:主机;以及包括存储器控制器并且通过PCIe总线与上述主机进行收发的NVMe SSD,上述存储器控制器包括:对上述主机请求将虚拟地址(virtual address)转换为物理地址(physical address)的地址转换服务(Address Translation Service,ATS)的ATS管理部;以及临时存储从上述主机接收的响应于上述地址转换服务请求而转换的上述物理地址的地址转换缓冲存储器。
另外,在根据本发明的实施例的存储系统中,上述存储器控制器还可以包括:根据临时存储于上述地址转换缓冲存储器的上述物理地址访问上述主机的主机存储器的DMA引擎。
另外,在根据本发明的实施例的存储系统中,上述存储器控制器还包括:从上述主机的提交队列(submission queue)分别获取(fetch)命令和有关物理区域页(PhysicalRegion Page,PRP)的信息,并且执行获取的上述命令的命令处理部,上述地址转换缓冲存储器可以存储上述命令处理部获取(fetch)的有关上述物理区域页的信息。
另外,在根据本发明的实施例的存储系统中,上述主机选定多个命令中的允许上述地址转换服务的地址转换目标命令,上述ATS管理部可以只针对上述地址转换目标命令请求上述地址转换服务。
另外,在根据本发明的实施例的存储系统中,上述地址转换目标命令可以通过由上述主机生成的按照上述命令的提交队列条目被区分。
另外,在根据本发明的实施例的存储系统中,上述主机将成为上述地址转换服务的目标的上述虚拟地址和进程地址空间ID(PASID)存储在上述地址转换目标命令的上述提交队列条目的字段中,上述ATS管理部可以以存储在上述提交队列条目的字段中的上述虚拟地址和进程地址空间ID(PASID)为基础,请求上述地址转换服务。
另一方面,在根据本发明的实施例的NVMe SSD的存储器控制器的操作方法中,上述NVMe SSD通过PCIe总线与主机进行收发,上述NVMe SSD的存储器控制器的操作方法包括如下步骤:(a)对上述主机请求将虚拟地址(virtual address)转换为物理地址(physicaladdress)的地址转换服务(Address Translation Service,ATS)的步骤;(b)接收由上述主机响应于上述地址转换服务请求而转换的上述物理地址的步骤;以及(c)将所接收的上述物理地址临时存储于地址转换缓冲存储器中的步骤。
另外,在根据本发明的实施例的NVMe SSD的存储器控制器的操作方法中,还可以包括根据临时存储于上述地址转换缓冲存储器的上述物理地址访问上述主机的存储器的步骤。
另外,在根据本发明的实施例的NVMe SSD的存储器控制器的操作方法中,在上述(a)步骤中,可以只针对由上述主机接收的多个命令中的由上述主机允许上述地址转换服务的地址转换目标命令而请求上述地址转换服务。
另外,在根据本发明的实施例的NVMe SSD的存储器控制器的操作方法中,上述地址转换目标命令可以通过由上述主机生成的按照上述命令的提交队列条目被区分。
另外,在根据本发明的实施例的NVMe SSD的存储器控制器的操作方法中,在上述地址转换目标命令的上述提交队列条目的字段中,存储有成为上述地址转换服务的目标的上述虚拟地址和进程地址空间ID(PASID),在上述(a)步骤中,可以以存储在上述提交队列条目的字段中的上述虚拟地址和进程地址空间ID(PASID)为基础,请求上述地址转换服务。
本发明的特征和优点通过根据附图的下面的详细说明而更清楚。
因此,前面的说明书和权利要求书中所使用的术语或词语不解释为通常的、词典上的含义,本着发明人为了用最佳方法说明其自己的发明而可以对术语的概念进行合适地定义的原则,应该只解释为符合本发明的技术思想的含义和概念。
根据本发明,通过对主机请求地址转换服务而将虚拟地址转换为物理地址,从而可以不经过主机的输入输出存储器管理单元(I/O Memory Management Unit,IOMMU)而直接访问主机存储器,因此防止在传输数据时产生的延迟,减少额外的消耗,从而可以最大程度地发挥主机的CPU性能。
另外,按NVM命令来选择是否允许地址转换服务,从而可以有效地支持地址转换服务。
附图说明
图1是根据本发明的实施例的存储系统的构成图。
图2是图1中图示的地址转换缓冲存储器的构成图。
图3是描述图1中图示的命令处理部的操作的图。
图4是根据本发明的另外的实施例的存储系统的构成图。
图5是概略地图示根据本发明的另外的实施例的存储系统的提交队列条目的图。
图6是描述根据图5中图示的提交队列条目进行地址转换服务请求的过程的图。
图7是根据本发明的实施例的NVMe SSD的操作方法的流程图。
具体实施方式
本发明的目的、特定的优点和新型的特征基于与附图关联的以下的详细说明和优选的实施例而更清楚。在本说明书中,就对每个图的构成要素附加附图标记而言,应注意,对于同一构成要素,即使在不同的图上标记,也尽可能使它们具有相同的编号。此外,“第1”、“第2”等术语用于将一个构成要素与其它构成要素进行区分,构成要素不受上述术语限制。下面,在对于本发明的说明中,省略了对于可能不必要地混淆本发明的主旨的相关公知技术的详细的说明。
下面,参照附图对本发明的优选的实施方式详细地进行说明。
图1是根据本发明的实施例的存储系统的构成图,图2是图1中图示的地址转换缓冲存储器的构成图,图3是描述图1中图示的命令处理部的操作的图。
如图1所示,根据本发明的实施例的NVMe SSD100包括存储器控制器110,并且通过PCIe总线与外部的主机200进行收发,其中,存储器控制器110包括:对主机200请求将虚拟地址(virtual address)转换为物理地址(physical address)的地址转换服务(AddressTranslation Service,ATS)的ATS管理部111;以及临时存储由主机200响应于所接收的地址转换服务请求而转换的物理地址的地址转换缓冲存储器112。
根据本发明的实施例的NVMe SSD100是基于非易失性快速存储器(Non-VolatileMemory express,NVMe)协议的固态硬盘(Solid State Drive,SSD),可以通过PCIe(外设组件快速互连,Peripheral Component Interconnect express)总线与主机200连接而收发数据包(packet)。从主机200传送到NVMe SSD100的数据包包括命令(command)和待写入NVMe SSD100的非易失性存储器120的数据等,从NVMe SSD100传送到主机200的数据包包括对于命令的响应和从非易失性存储器120中读取的数据等。
主机200作为外部的计算系统,包括主机处理器210、主机存储器220、以及PCIe根复合体(Root Complex,RC,230)。
主机处理器210可以包括一个以上的中央处理装置(Central Processing Unit,CPU)以及连接到地址转换和保护表(Address Translation and Protection Table,ATPT)的转换代理(Translation Agent,TA)。
主机200的进程在CPU中运行,此时,使用虚拟地址(virtual address)将读取和写入命令这样的输入-输出命令传送到NVMe SSD100。读取命令是指示使用直接存储器访问(Direct Memory Access,DMA)从主机存储器220的指定物理地址(physical address)开始将特定数据配置在主机存储器220中的命令,这样的命令包括虚拟地址。即使在输入-输出命令为写入命令的情况下,也包括需要转换为NVMe SSD100使用直接存储器访问导出待存储在NVMe SSD100中的数据的物理地址的虚拟地址。
TA将虚拟地址转换为物理地址。此时,TA根据存储在ATPT中的值决定地址转换。因此,基于转换的物理地址,可以使用直接存储器访问开始向主机存储器220或从主机存储器220进行数据传送。
主机存储器220是NVMe SSD100可直接访问的区域。这样的主机存储器220包括多个物理区域页面(Physical Region Page,PRP)。更详细而言,主机存储器220内的数据缓冲器(Data Buffer)即数据存储用存储器中可以包含多个PRP。其中,数据缓冲器是主机存储器220的一部分,是NVMe SSD100可以独立使用的区域。PRP是主机存储器220内逻辑区分的区域,在SSD和主机200利用NVMe(非易失性快速存储器,NonVolatile Memory express)接口通信时,可以成为区分待存储数据的逻辑区域的单元。NVMe协议可以使用PRP列表以访问主机存储器220。PRP列表用于指定用于在主机存储器220与SSD的非易失性存储器120之间进行数据传送的物理存储器区域。即,为了主机200将数据传送到SSD,PRP示出位于主机存储器220中的物理页面的地址,在执行NVMe命令期间,PRP列表用作示出存储器缓冲器的位置和大小的描述符的列表。例如,多个PRP中的任一个可以用于临时存储外部主机200提供给存储器控制器110的数据,另一个可以用于临时存储存储器控制器110提供给主机200的数据。PRP可以是由主机200提供给存储器控制器110的按照命令的提交队列(SQ)条目中包含的PRP条目指定的区域。
在NVMe SQ条目内存在字段,可以包括使用直接存储器访问执行数据传送以前转换的虚拟地址。这样的字段可以包括:元数据指针;以及指向PRP条目(PRP1,PRP2)的指针。此外,SQ条目的其它字段可以包括:指定是否执行读取、写入或其它命令的OpCode;指定数据是否为SGL或PRP形式的PRP/SGL标志;指定在NVMe SSD100内读或写逻辑块的开始逻辑块地址的开始LBA;以及指定读或写逻辑块的数量的LBAs的数量。
根据本发明的实施例的NVMe SSD100可以包括存储器控制器110和非易失性存储器120。存储器控制器110可以是处理电路或者可以包括处理电路。在这里,处理电路可以是指用于处理数据或数字信号的硬件、固件和软件的任意的组合。处理电路硬件可以包括可编辑逻辑装置,例如,专用集成电路(ASICs)、通用或特殊目的中央处理装置(CPUs)、数字信号处理器(DSPs)、图形处理装置(GPUs)和现场可编程门阵列(FPGAs)。在本说明书中使用的处理电路中,每个功能可以由被构成为执行该功能的硬件(即,Hard-wired)执行,或者可以由被构成为运行存储在如CPU的非暂时性存储介质中的命令的更通用的硬件执行。处理电路可以制造在单个的印刷电路基板(PCB)中,或者可以分布在多个相互连接的PCBs上。处理电路可以包括其它的处理电路。例如,处理电路可以包括在PCB上相互连接的两个处理电路即FPGA和CPU。
这样的存储器控制器110可以控制非易失性存储器120,使得根据主机200的请求(request)执行编程操作、读取操作或擦除操作等。在这里,非易失性存储器120可以是NAND闪存。
根据本发明的实施例的NVMe SSD100的存储器控制器110包括ATS管理部111和地址转换缓冲存储器112。
ATS管理部111对主机200请求将将虚拟地址(virtual address)转换为物理地址(physical address)的地址转换服务(Address Translation Service,ATS),以处理主机200的命令。ATS请求可以是为了处理主机200的命令而请求读取存储在主机存储器220中的数据的请求或者用于将数据记录在主机存储器220中的请求。主机200将针对于ATS请求的ATS响应传送到存储器控制器110。在这里,主机处理器210的TA可以将成为ATS请求的目标的虚拟地址转换为物理地址。另一方面,转换的物理地址可以在ATS管理部111接收。
地址转换缓冲存储器112通过ATS响应临时存储转换的物理地址。临时存储的物理地址用于执行DMA操作。另一方面,在DMA操作完成后,与此DMA关联的相应物理地址可以从地址转换缓冲存储器112被删除。
根据本发明的实施例的NVMe SSD100的存储器控制器110还可以包括执行DMA操作的DMA引擎113。DMA引擎113可以基于临时存储在地址转换缓冲存储器112中的物理地址访问主机存储器220。
另外,存储器控制器110可以包括命令处理部114。参考图2,命令处理部114从主机200的提交队列(Submission Queue,SQ)分别获取(fetch)命令和有关PRP的信息,并执行命令。
NVMe是基于提交队列和完成队列(Completion Queue,CQ)的协议。提交队列和完成队列存在于主机存储器220的空间。主机处理器210将命令和有关PRP的信息存储在提交队列中,通过提交队列门铃寄存器(submission queue doorbell register)更新而将相应命令显示到存储器控制器110。在这里,ATS管理部111通过ATS请求接收提交队列的物理地址,接收的提交队列的物理地址临时存储在地址转换缓冲存储器112中,DMA引擎113可以基于临时存储的提交队列的物理地址,直接访问主机存储器220的提交队列,而无需主机200的输入输出存储器管理单元(I/O Memory Management Unit,IOMMU)的地址转换。由此,命令处理部114可以从提交队列获取命令。
另一方面,在获取有关PRP的信息时,ATS管理部111通过ATS请求预先接收成为DMA目标的数据的物理地址。接收的数据的物理地址临时存储在地址转换缓冲存储器112中,DMA引擎113可以基于存储的此物理地址访问主机存储器220的数据缓冲器(Data Buffer)。此时即使没有IOMMU的地址转换也可以直接访问。
命令处理部114执行完命令时,ATS管理部111通过对完成队列的ATS请求接收完成队列的物理地址。此时,接收的完成队列的物理地址临时存储在地址转换缓冲存储器112中,DMA引擎113可以通过存储的完成队列的物理地址直接访问主机存储器220的完成队列。
命令处理部114完成对于相应命令的处理时,可以传送中断,以通知主机200命令处理已经完成。
参考图3,根据ATS管理部111的ATS请求,分别接收提交队列的物理地址、数据的物理地址、以及完成队列的物理地址,地址转换缓冲存储器112可以包括临时存储此提交队列的物理地址的SQ地址转换缓冲器(SQ ATB)、临时存储数据的物理地址的数据DMA地址转换缓冲器(DATA DMA ATB)、以及临时存储完成队列的物理地址的CQ地址转换缓冲器(CQATB)。但是,地址转换缓冲存储器112不一定必须包括SQ地址转换缓冲器(SQ ATB)、数据DMA地址转换缓冲器(DATA DMA ATB)、以及CQ地址转换缓冲器(CQ ATB),构成为一体的单个缓冲存储器或者只包括其中一个以上的一部分缓冲器也无妨。
图4是根据本发明的另外的实施例的存储系统的构成图。
如图4所示,在根据本发明的另外的实施例的存储系统中,存储器控制器110的地址转换缓冲存储器112可以存储从命令处理部114获取的有关PRP的信息。
参考图1和图3,上述的根据本发明的实施例的构成存储系统的NVMe SSD100将地址转换缓冲存储器112实现为单独的缓冲存储器,然而,根据本发明的另外的实施例的构成存储系统的NVMe SSD100将通常的NVMe SSD具有的PRP存储器用作地址转换缓冲存储器112。
对于以往的NVMe SSD而言,有关PRP的信息可以存储在提交队列的条目字段,例如PRP条目(PRP1,PRP2)中。其中,PRP1条目可以指定位于主机存储器220中的物理页面的地址,PRP2条目可以指定PRP列表。从提交队列获取的有关PRP的信息存储在PRP存储器中。根据本发明的另外的实施例的NVMe SSD100的存储器控制器110可以不添加单独的缓冲存储器而使将以往的PRP存储器用作地址转换缓冲存储器112以临时存储作为对于ATS管理部111的ATS请求的响应而接收的物理地址。在这种情况下,在PRP存储器中存储了有关PRP的信息和转换的物理地址。
图5是概略图示根据本发明的另外的实施例的存储系统的提交队列条目的图,图6是描述根据图5中图示的提交队列条目进行的地址转换服务请求过程的图。
根据本发明的另外的实施例的存储系统为了有效地支持ATS,对以往的NVMe协议进行了一部分修改。
对于上述的根据实施例的存储系统而言,可以在维持现有的NVMe协议的状态下支持PCIe ATS。在这种情况下,尽管提交队列、完成队列和数据传送这样的数据访问模式(data access pattern)不同,也批量请求地址转换。如果这样地对彼此不同的数据访问模式批量执行地址转换,则可能存在不必要的地址转换问题。
因此,根据本发明的另外的实施例的存储系统可以按照命令选择是否允许执行地址转换,可以只对所选择的命令允许地址转换。此时,对于未允许地址转换的命令,可以通过主机200的IOMMU访问主机存储器220。
具体而言,主机200可以在NVMe SSD100的多个命令中选择允许ATS的命令。下面,将允许ATS的命令称为“地址转换目标命令”。是否是地址转换目标命令则可以通过由主机200生成的按照命令的提交队列条目来区分。
参考图5和图6,按照命令的提交队列条目(SQE)中可以包括允许地址转换的AT使能位(Enable bit)。AT使能位(Enable bit)为“1”时,对相应命令允许ATS,AT使能位(Enable bit)为“0”时,对相应命令不允许ATS。结果,主机处理器210决定是否按各个命令允许ATS,ATS管理部111可以只针对允许ATS的地址转换目标命令选择性地向主机处理器210请求ATS。
例如,在获取PRP时,主机处理器210对数据传送不允许ATS时,可以如以往的NVMeSSD那样,使用相应命令的提交队列条目(SQE)的PRP1条目和PRP2条目,通过主机处理器210的IOMMU,访问主机存储器220(参照图5)。
作为其它的例子,主机处理器210可以只对彼此不同的数据访问模式的提交队列、完成队列和数据传送中的数据传送选择性地允许ATS。此时,由于相应命令的提交队列条目(SQE)的字段中未使用PRP1条目和PRP2条目,因此可以在其中的一个中存储成为ATS的目标的虚拟地址,在另一个中存储进程地址空间ID(PASID)。但是,成为ATS的目标的虚拟地址和进程地址空间ID(PASID)不一定必须存储在PRP1条目和PRP2条目中,也可以存储在其它的提交队列条目(SQE)的保留字段(reserved field)中。因此,ATS管理部111可以根据提交队列条目(SQE)的按照命令的类型,向主机200请求ATS。作为ATS请求的响应而接收的物理地址可以临时存储在地址转换缓冲存储器112中。
下面,对支持ATS的根据本发明的实施例的NVMe SSD的存储器控制器的操作方法进行说明。
图7是根据本发明的实施例的NVMe SSD的操作方法的流程图。
如图7所示,根据本发明的实施例的NVMe SSD的存储器控制器的操作方法,在通过PCIe总线与主机进行收发的NVMe SSD的控制器的操作方法中,包括如下步骤:向主机请求将虚拟地址(virtual address)转换为物理地址(physical address)的地址转换服务(Address Translation Service,ATS)的步骤S100;接收由主机响应于地址转换服务请求而转换的物理地址的步骤S200;以及将接收的物理地址临时存储在地址转换缓冲存储器中的步骤S300。
根据本发明的实施例的MVMe SSD的存储器控制器的操作方法涉及与主机进行收发的NVMe SSD的存储器控制器支持ATS的方法。上文中,已经关于根据本发明的MVMe SSD和主机进行了描述,将省略对于重复事项的说明或只简单地进行描述。
在这里,主机是外部的计算系统,包括主机处理器、主机存储器和PCIe根复合体(Root Complex,RC)。NVMe SSD包括由处理电路实现的存储器控制器、以及非易失性存储器。在这里,主机和NVMe SSD通过PCIe总线收发数据包。
存储器控制器可以包括ATS管理部和地址缓冲存储器。在这里,地址缓冲存储器可以实现为单独的存储器,或者可以实现为以往的NVMe SSD的PRP存储器。此外,存储器控制器还可以包括DMA引擎。此外,存储器控制器还可以包括命令处理部。
具体而言,存储器控制器的操作方法包括ATS请求步骤S100、物理地址接收步骤S200、以及物理地址临时存储步骤S300。
在ATS请求步骤S100中,存储器控制器为了处理主机的命令,对主机请求将虚拟地址转换为物理地址的ATS。主机将对于ATS请求的ATS 响应(转换的物理地址)传送到存储器控制器。在这里,主机处理器(例如TA)可以将成为ATS请求的目标的虚拟地址转换为物理地址。另一方面,ATS请求可以由ATS管理部执行。
在物理地址接收步骤S200中,存储器控制器根据ATS请求接收转换的物理地址。在这里,物理地址可以通过ATS管理部接收。
在物理地址临时存储步骤S300中,存储器控制器可以将接收的上述物理地址临时存储在地址缓冲存储器中。临时存储的物理地址用于执行DMA操作,在DMA操作完成以后,与此DMA关联的相应物理地址可以从地址转换缓冲存储器中删除。
存储器控制器的操作方法还可以包括主机存储器访问步骤S400。在这里,存储器控制器可以使用临时存储在地址转换缓冲存储器中的物理地址直接访问主机存储器。这样的DMA操作可以由存储器控制器的DMA引擎执行。
若虚拟地址根据ATS请求转换为物理地址,则存储器控制器可以不经过主机的IOMMU而直接访问主机存储器,从主机的提交队列(Submission Queue,SQ)分别获取(fetch)命令和有关PRP的信息,以执行命令。这样的操作可以由命令处理部执行。
NVMe是基于提交队列和完成队列(Completion Queue,CQ)的协议,存储器控制器通过ATS请求接收提交队列的物理地址,将接收的提交队列的物理地址临时存储到地址转换缓冲存储器中,基于临时存储的提交队列的物理地址,即使没有主机的输入输出存储器管理单元(I/O Memory Management Unit,IOMMU)的地址转换,也可以直接访问主机存储器的提交队列。
另一方面,在获取有关PRP的信息时,通过ATS请求预先接收成为DMA目标的数据的物理地址,将此数据的物理地址临时存储到地址转换缓冲存储器中,从而可以基于此物理地址访问主机存储器的数据缓冲器(Data Buffer)而无需IOMMU的地址转换。
当命令执行完成时,通过完成队列的ATS请求接收完成队列的物理地址,将完成队列的物理地址临时存储到地址转换缓冲存储器中,然后可以通过存储的完成队列的物理地址直接访问主机存储器的完成队列。
当完成相应命令的处理时,可以传送中断以通知主机命令处理已完成。
根据本发明的另外的实施例的NVMe SSD的存储器控制器的ATS支持方法可以使用修改了一部分的以往的NVMe协议的协议,以有效地支持ATS。
修改了一部分的NVMe协议按照命令选择是否允许进行地址转换,运行为只对选择的命令允许地址转换。在这里,对于不允许地址转换的命令,可以通过主机的IOMMU访问主机存储器。
主机可以在对于NVMe SSD的多个命令中选择允许ATS的地址转换目标命令。是否是地址转换目标命令可以通过由主机生成的按照命令的提交队列条目来区分。
按照命令的提交队列条目(SQE)中包含允许地址转换的AT使能位(Enable bit),当AT使能位(Enable bit)为“1”时,对相应命令允许ATS,当AT使能位(Enable bit)为“0”时,对相应命令不允许ATS。结果,主机处理器决定是否按各个命令允许ATS,ATS管理部可以只针对允许ATS的地址转换目标命令选择性地向主机处理器请求ATS。
在获取PRP时,主机处理器对数据传送不允许ATS时,可以使用相应命令的提交队列条目(SQE)的PRP1条目和PRP2条目,通过主机处理器的IOMMU,访问主机存储器。
主机处理器可以只对彼此不同的数据访问模式的提交队列、完成队列和数据传送中的任一个选择性地允许ATS。以只对数据传送允许ATS的情形为例,可以将成为ATS的目标的虚拟地址和进程地址空间ID(PASID)存储在相应命令的提交队列条目(SQE)的字段中未使用的PRP1条目和PRP2条目中。但是,成为ATS的目标的虚拟地址和进程地址空间ID(PASID)不一定必须存储在PRP1条目和PRP2条目中,也可以存储在其它的提交队列条目(SQE)的保留字段(reserved field)中。因此,存储器控制器可以根据提交队列条目(SQE)的按照命令的类型向主机请求ATS。
综上所述,根据本发明,通过向主机请求地址转换服务并将逻辑地址转换为物理地址,从而可以不经过主机的输入输出存储器管理单元(I/O Memory Management Unit,IOMMU)而直接访问主机存储器,因此防止数据传送时产生的延迟,减少额外的消耗,可以最大程度地发挥主机的CPU性能。此外,按NVM命令选择是否允许地址转换服务,从而可以有效地支持地址转换服务。
在上文中,对本发明通过具体的实施例详细地进行了说明,但其用于对本发明具体地进行说明,本发明不限定于此,本领域技术人员清楚可以在本发明的技术思想内进行变形或改良。
本发明的简单的变形乃至变更均属于本发明的领域,本发明的具体的保护范围由所附的权利要求书明确。
符号说明
100:NVMe SSD ;110:存储器控制器;111:ATS管理部;112:地址转换缓冲存储器;113:DMA引擎;114:命令处理部;120:非易失性存储器 ;200:主机;210:主机处理器;220:主机存储器;230:PCIe根复合体。
Claims (17)
1.一种NVMe SSD,包括存储器控制器,并且通过PCIe总线与外部的主机进行收发,其中,
所述存储器控制器包括:
ATS管理部,对所述主机请求将虚拟地址转换为物理地址的地址转换服务;以及
地址转换缓冲存储器,临时存储从所述主机接收的响应于所述地址转换服务请求而转换的所述物理地址。
2.根据权利要求1所述的NVMe SSD,其中,
所述存储器控制器还包括:
DMA引擎,根据临时存储于所述地址转换缓冲存储器的所述物理地址访问所述主机的存储器。
3.根据权利要求1所述的NVMe SSD,其中,
所述存储器控制器还包括:
命令处理部,从所述主机的提交队列分别获取命令和有关物理区域页的信息,并且执行获取的所述命令,
所述地址转换缓冲存储器存储所述命令处理部获取的有关所述物理区域页的信息。
4.根据权利要求1所述的NVMe SSD,其中,
所述ATS管理部只针对所述主机的多个命令中的由所述主机允许所述地址转换服务的地址转换目标命令而请求所述地址转换服务。
5.根据权利要求4所述的NVMe SSD,其中,
所述地址转换目标命令通过由所述主机生成的按照所述命令的提交队列条目被区分。
6.根据权利要求5所述的NVMe SSD,其中,
在所述地址转换目标命令的所述提交队列条目的字段中,存储有成为所述地址转换服务的目标的所述虚拟地址和进程地址空间ID,
所述ATS管理部以存储在所述提交队列条目的字段中的所述虚拟地址和进程地址空间ID为基础,请求所述地址转换服务。
7.一种存储系统,包括:
主机;以及
NVMe SSD,包括存储器控制器,并且通过PCIe总线与所述主机进行收发,
所述存储器控制器包括:
ATS管理部,对所述主机请求将虚拟地址转换为物理地址的地址转换服务;以及
地址转换缓冲存储器,临时存储从所述主机接收的响应于所述地址转换服务请求而转换的所述物理地址。
8.根据权利要求7所述的存储系统,其中,
所述存储器控制器还包括:
DMA引擎,根据临时存储于所述地址转换缓冲存储器的所述物理地址访问所述主机的主机存储器。
9.根据权利要求7所述的存储系统,其中,
所述存储器控制器还包括:
命令处理部,从所述主机的提交队列分别获取命令和有关物理区域页的信息,并且执行获取的所述命令,
所述地址转换缓冲存储器存储所述命令处理部获取的有关所述物理区域页的信息。
10.根据权利要求7所述的存储系统,其中,
所述主机选定多个命令中的允许所述地址转换服务的地址转换目标命令,
所述ATS管理部只针对所述地址转换目标命令请求所述地址转换服务。
11.根据权利要求10所述的存储系统,其中,
所述地址转换目标命令通过由所述主机生成的按照所述命令的提交队列条目被区分。
12.根据权利要求11所述的存储系统,其中,
所述主机将成为所述地址转换服务的目标的所述虚拟地址和进程地址空间ID存储在所述地址转换目标命令的所述提交队列条目的字段中,
所述ATS管理部以存储在所述提交队列条目的字段中的所述虚拟地址和进程地址空间ID为基础,请求所述地址转换服务。
13.一种NVMe SSD的存储器控制器的操作方法,其中,所述NVMe SSD通过PCIe总线与主机进行收发,包括如下步骤:
(a)对所述主机请求将虚拟地址转换为物理地址的地址转换服务的步骤;
(b)接收由所述主机响应于所述地址转换服务请求而转换的所述物理地址的步骤;以及
(c)将所接收的所述物理地址临时存储于地址转换缓冲存储器中的步骤。
14.根据权利要求13所述的NVMe SSD的存储器控制器的操作方法,其中,还包括:
根据临时存储于所述地址转换缓冲存储器的所述物理地址访问所述主机的存储器的步骤。
15.根据权利要求13所述的NVMe SSD的存储器控制器的操作方法,其中,
在所述(a)步骤中,
只针对从所述主机接收的多个命令中的由所述主机允许所述地址转换服务的地址转换目标命令而请求所述地址转换服务。
16.根据权利要求15所述的NVMe SSD的存储器控制器的操作方法,其中,
所述地址转换目标命令通过由所述主机生成的按照所述命令的提交队列条目被区分。
17.根据权利要求16所述的NVMe SSD的存储器控制器的操作方法,其中,
在所述地址转换目标命令的所述提交队列条目的字段中,存储有成为所述地址转换服务的目标的所述虚拟地址和进程地址空间ID,
在所述(a)步骤中,
以存储在所述提交队列条目的字段中的所述虚拟地址和进程地址空间ID为基础,请求所述地址转换服务。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020240100859A KR20260017717A (ko) | 2024-07-30 | NVMe SSD 및 이를 포함하는 스토리지 시스템 | |
| KR10-2024-0100859 | 2024-07-30 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN121434117A true CN121434117A (zh) | 2026-01-30 |
Family
ID=98544983
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202510979325.7A Pending CN121434117A (zh) | 2024-07-30 | 2025-07-16 | NVMe SSD以及包括NVMe SSD的存储系统 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US20260037435A1 (zh) |
| CN (1) | CN121434117A (zh) |
-
2025
- 2025-07-16 CN CN202510979325.7A patent/CN121434117A/zh active Pending
- 2025-07-24 US US19/279,739 patent/US20260037435A1/en active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| US20260037435A1 (en) | 2026-02-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN115495389B (zh) | 存储控制器、计算存储装置以及计算存储装置的操作方法 | |
| US10331600B1 (en) | Virtual I/O queuing | |
| US9696942B2 (en) | Accessing remote storage devices using a local bus protocol | |
| US9727503B2 (en) | Storage system and server | |
| US10007443B1 (en) | Host to device I/O flow | |
| US7958298B2 (en) | System and method for providing address decode and virtual function (VF) migration support in a peripheral component interconnect express (PCIE) multi-root input/output virtualization (IOV) environment | |
| US8683126B2 (en) | Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory | |
| US11995351B2 (en) | DMA engines configured to perform first portion data transfer commands with a first DMA engine and second portion data transfer commands with second DMA engine | |
| US9852087B2 (en) | Inline PCI-IOV adapter | |
| TW200406680A (en) | Method, system, and program for handling input/output commands | |
| EP1730643A2 (en) | Pvdm (packet voice data module) generic bus protocol | |
| WO2003043254A9 (en) | Transferring data using direct memory access | |
| CN112416250A (zh) | 基于NVMe的固态硬盘的命令处理方法及相关设备 | |
| CN115454902A (zh) | 一种基于pcie接口的nvme通信系统及方法 | |
| CN108304334A (zh) | 应用处理器和包括中断控制器的集成电路 | |
| CN115114013A (zh) | 高速外围组件互连装置及其操作方法 | |
| EP4105771A1 (en) | Storage controller, computational storage device, and operational method of computational storage device | |
| US20180107619A1 (en) | Method for shared distributed memory management in multi-core solid state drive | |
| EP3270293B1 (en) | Two stage command buffers to overlap iommu map and second tier memory reads | |
| CN100432970C (zh) | 流水线化的ata设备初始化平台和装置 | |
| US12169465B2 (en) | Peripheral component interconnect express device and operating method thereof | |
| CN121434117A (zh) | NVMe SSD以及包括NVMe SSD的存储系统 | |
| WO2021093249A1 (zh) | 外部设备访问计算机内存的方法 | |
| US6757775B2 (en) | Batch method for accessing IDE device task registers | |
| US20180336147A1 (en) | Application processor including command controller and integrated circuit including the same |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination |