CN114816235A - 用于计算存储设备的数据传递的系统和方法 - Google Patents
用于计算存储设备的数据传递的系统和方法 Download PDFInfo
- Publication number
- CN114816235A CN114816235A CN202210030773.9A CN202210030773A CN114816235A CN 114816235 A CN114816235 A CN 114816235A CN 202210030773 A CN202210030773 A CN 202210030773A CN 114816235 A CN114816235 A CN 114816235A
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- storage device
- host
- interface
- 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
- 238000003860 storage Methods 0.000 title claims abstract description 162
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000012546 transfer Methods 0.000 title claims description 37
- 230000015654 memory Effects 0.000 claims abstract description 356
- 230000006870 function Effects 0.000 claims abstract description 68
- 238000012545 processing Methods 0.000 claims abstract description 55
- 230000002085 persistent effect Effects 0.000 claims description 5
- 238000004220 aggregation Methods 0.000 claims 2
- 230000002776 aggregation Effects 0.000 claims 2
- 238000004891 communication Methods 0.000 description 44
- 238000007726 management method Methods 0.000 description 34
- 238000010586 diagram Methods 0.000 description 31
- 230000007246 mechanism Effects 0.000 description 31
- 238000004590 computer program Methods 0.000 description 22
- 238000005516 engineering process Methods 0.000 description 8
- 238000013507 mapping Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000013515 script Methods 0.000 description 7
- 239000007787 solid Substances 0.000 description 7
- 238000013403 standard screening design Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000001133 acceleration Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 5
- 239000000872 buffer Substances 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 230000033001 locomotion Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000014616 translation Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 241000258963 Diplopoda Species 0.000 description 4
- 230000009471 action Effects 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 4
- 239000000835 fiber Substances 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000000644 propagated effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000011521 glass Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 102000006822 Agouti Signaling Protein Human genes 0.000 description 1
- 108010072151 Agouti Signaling Protein Proteins 0.000 description 1
- 101100498823 Caenorhabditis elegans ddr-2 gene Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006658 host protein synthesis Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0823—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Mram Or Spin Memory Techniques (AREA)
- Retry When Errors Occur (AREA)
- Advance Control (AREA)
Abstract
提供了用于管理存储器的系统、方法和装置。该方法包括:经由接口在主机设备和存储设备之间建立连接;和通过由主机执行的应用对第二存储器执行数据操作,经由接口在与主机设备相关联的第一存储器和与存储设备相关联的第二存储器之间传递数据,其中,所述存储设备包括通过对数据操作执行至少一个卸载功能来加速数据操作的处理元件。
Description
相关申请的交叉引用
本申请要求2021年9月7日提交的序列号为63/241,525的美国临时专利申请、2021年1月27日提交的序列号为63/142,485的美国临时专利申请、以及2021年10月6日提交的序列号为17/495,810的美国临时专利申请的权益,出于所有目的,这些申请通过引用结合于此。
技术领域
本公开一般地涉及存储(storage)系统,更具体地,涉及用于计算存储设备的数据传递的系统和方法。
背景技术
本背景技术部分旨在仅提供上下文,并且本部分中任何构思的公开不构成对所述构思是现有技术的承认。
随着技术的进步,随着数据被诸如移动设备、物联网设备、空中(遥感)设备、软件日志、相机、麦克风、射频标识(RFID)读取器、无线传感器网络等的设备收集,数据的大小和量迅速增加。为了处理和使用由收集的数据表示的信息,数据中心通常使用存储设备、处理元件和服务器来过滤、计算、存储数据并对数据执行相关操作。仍然需要改进存储设备中的数据传递的系统和方法。
背景技术部分中公开的上述信息仅用于增强对本公开背景的理解,因此它可能包含不构成现有技术的信息。
发明内容
在各种实施例中,本文描述的包括用于计算存储设备的数据传递的系统、方法和装置。
在各种实施例中,描述了一种管理存储器(memory)的方法。该方法包括:经由接口在主机设备和存储设备之间建立连接;和通过由主机执行的应用对第二存储器执行数据操作,经由接口在与主机设备相关联的第一存储器和与存储设备相关联的第二存储器之间传递数据,其中,所述存储设备包括通过对数据操作执行至少一个卸载功能来加速数据操作的处理元件。
在一个实施例中,所述接口包括应用编程接口(API),并且所述主机设备使用与API相关联的至少一个命令来分配第二存储器。在另一个实施例中,所述主机设备使用细粒度分配方案或粗粒度分配方案来分配第二存储器。在一个实施例中,所述方法还包括:寻址第二存储器,并且所述传递数据至少部分基于对第二存储器的寻址。在一些实施例中,第二存储器包括安全地址空间,并且其中所述方法还包括主机设备基于所述安全地址空间执行一个或多个多租户操作。
在另一个实施例中,所述存储设备包括启用非易失性快速存储器(NVMe)的存储设备,并且使用分散聚合列表(scatter gather list,SGL)来执行所述数据操作。在一些实施例中,执行数据操作还包括:存储设备将数据从与存储设备相关联的永久存储器传递到第二存储器。在一个实施例中,传递数据还包括:主机设备向存储设备提供关于主机设备布局的信息。在另一个实施例中,传递数据还包括:存储设备向主机设备提供关于用于读取和写入操作的存储设备的存储器布局的信息。在一些实施例中,建立连接包括发现和建立过程。
类似地,还公开了用于执行与上述基本相同或相似的操作的非暂时性计算机可读介质、设备和系统。
因此,可以实现本文描述的主题的特定实施例,以便实现一个或多个以下优点。减少网络延迟,并提高网络稳定性和操作数据传递速率,进而改善用户体验。降低与路由网络流量、网络维护、网络升级等相关的成本。此外,在一些方面,所公开的系统可以用于降低网络上设备的功耗和/或带宽,并且可以用于提高设备之间通信的速度和/或效率。此外,所公开的系统和方法可以用于提供适用于直接附接和网络附接驱动器的无缝机制。在另一方面,所公开的机制可以提供扩展,至少因为设备存储器可以不暴露给主机。此外,所公开的机制可以应用于计算存储设备(例如,具有处理功能的存储设备)和相关系统。如上所述,所公开的系统具有不暴露设备存储器的优点。因此,所公开的系统不一定需要让它们的存储器被系统软件被填充(populate)在主机的系统虚拟地址空间中。在其他方面,所公开的系统可以与任何合适的存储设备结合使用,诸如非NVMe固态驱动器(SSD)。此外,所公开的系统和方法可以被标准化并应用于一系列存储设备和相关系统,同时对供应商是不可知的。
附图说明
当根据以下附图阅读本申请时,将更好地理解本技术的上述方面和其他方面,在附图中,类似的数字表示相似或相同的元件。此外,本文提供的附图仅用于说明某些实施例;可能没有明确示出的其他实施例不排除在本公开的范围之外。
参考说明书、权利要求书和附图,将会理解和明白本公开的这些和其他特征和优点,其中:
图1是根据本公开的示例性实施例的用于使得数据处理功能能够卸载到存储设备的示例性架构的图示。
图2是根据本公开的示例性实施例的在设备存储器空间中具有相应偏移的存储器分配的示例性示意图的图示。
图3是根据本公开的示例性实施例的描述设备管理的设备存储器的各方面的示例性示意图的图示。
图4是根据本公开的示例性实施例的设备可以通告(advertise)其存储器管理和使用能力的示例性数据结构的图示。
图5是根据本公开的示例性实施例的用于将设备存储器地址用于直接存储器访问(DMA)的示例性命令的图示。
图6是根据本公开的示例性实施例的包含具有相应字段的分散聚合列表(SGL)的示例性非易失性存储器快速(NVMe)命令的图示。
图7是根据本公开的示例性实施例的被采用以保持本地和远程附接的计算存储设备的存储器使用相似的示例性类型的SGL机制的图示。
图8是根据本公开的示例性实施例的包括数据缓冲器与I/O命令的交互的示例性表格的图示。
图9是根据本公开的示例性实施例的用于数据传递的示例性SGL描述符的图示。
图10是根据本公开的示例性实施例的示出与所公开的系统相关联的示例操作的示例性操作流程的图示。
图11是根据本公开的示例性实施例的示出与所公开的系统相关联的示例操作的另一示例性操作流程的图示。
图12示出了可用于实践本公开实施例的系统的示例示意图。
图13示出了根据本公开的示例实施例的管理计算实体的示例示意图。
图14示出了根据本公开的示例实施例的用户设备的示例示意图。
虽然本技术易于进行各种修改和替代形式,但是其特定实施例在附图中以示例的方式示出,并将在此进行描述。附图可能不符合比例。然而,应当理解,附图及其详细描述并不旨在将本技术限制于所公开的特定形式,相反,本发明旨在覆盖落入由所附权利要求限定的本技术的精神和范围内的所有修改、等同物和替代物。
具体实施方式
这里描述的主题的一个或多个实施例的细节在附图和下面的描述中被阐述。从所述描述、附图、和权利要求,主题的其它特征、方面、和优点将变得清楚。
现在将在下文中参考附图更全面地描述本公开的各种实施例,在附图中示出了一些但不是所有实施例。事实上,本公开可以以许多不同的形式实施,并且不应该被解释为局限于这里阐述的实施例;相反,提供这些实施例是为了使本公开满足适用的法律要求。除非另有说明,术语“或”在本文中用于替代和连接的意义两者。术语“说明性的”和“示例”被用作没有质量等级的指示的示例。类似的标号始终指示类似的元素。每个图中的箭头描绘了双向数据流和/或双向数据流能力。术语“路径”、“途径(pathway)”和“路线”在本文中可互换使用。
本公开的实施例可以以各种方式实现,包括作为包括制品的计算机程序产品。计算机程序产品可以包括存储应用、程序、程序组件、脚本、源代码、程序代码、目标代码、字节代码、编译代码、解释代码、机器代码、可执行指令等的非暂时性计算机可读存储介质(这里也称为可执行指令、用于执行的指令、计算机程序产品、程序代码和/或这里可互换使用的类似术语)。这种非暂时性计算机可读存储介质包括所有计算机可读介质(包括易失性和非易失性介质)。
在一个实施例中,非易失性计算机可读存储介质可以包括软盘、软磁盘、硬盘、固态存储(SSS)(例如固态驱动器(SSD))、固态卡(SSC)、固态模块(SSM)、企业闪存驱动器、磁带或任何其他非暂时性磁介质等。非易失性计算机可读存储介质还可以包括穿孔卡、纸带、光学标记片(或具有孔图案或其他光学可识别标记的任何其他物理介质)、光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)、数字多功能光盘(DVD)、蓝光光盘(BD)、任何其他非暂时性光学介质等。这种非易失性计算机可读存储介质还可以包括只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存(例如串行、NAND、NOR等)、多媒体存储卡(MMC)、安全数字(SD)存储器卡、智能媒体卡、压缩闪存(CF)卡、记忆棒等。此外,非易失性计算机可读存储介质还可以包括导电桥接随机存取存储器(CBRAM)、相变随机存取存储器(PRAM)、铁电随机存取存储器(FeRAM)、非易失性随机存取存储器(NVRAM)、磁阻随机存取存储器(MRAM)、电阻随机存取存储器(RRAM)、氧化硅-氮化物-氧化物-硅存储器(SONOS)、浮动结栅随机存取存储器(FJG RAM)、千足虫(Millipede)存储器、赛道(racetrack)存储器等。
在一个实施例中,易失性计算机可读存储介质可以包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、快速页面模式动态随机存取存储器(FPM DRAM)、扩展数据输出动态随机存取存储器(EDO DRAM)、同步动态随机存取存储器(SDRAM)、双数据速率同步动态随机存取存储器(DDR SDRAM)、双数据速率类型二同步动态随机存取存储器(DDR2 SDRAM)、双数据速率类型三同步动态随机存取存储器(DDR3SDRAM)、Rambus动态随机存取存储器(RDRAM)、双晶体管RAM(TTRAM)、晶闸管RAM(T-RAM)、零电容器(Z-RAM)、Rambus直插式存储器组件(RIMM)、双直插式存储器组件(DIMM)、单直插式存储器组件(SIMM)、视频随机存取存储器(VRAM)、高速缓冲存储器(包括各种级别)、闪存、寄存器存储器等。应当理解,在实施例被描述为使用计算机可读存储介质的情况下,其他类型的计算机可读存储介质可以替代上述计算机可读存储介质、或除了上述计算机可读存储介质之外还可以使用其他类型的计算机可读存储介质。
应当理解,本公开的各种实施例也可以实现为方法、装置、系统、计算设备、计算实体等。这样,本公开的实施例可以采取执行存储在计算机可读存储介质上的指令以执行某些步骤或操作的装置、系统、计算设备、计算实体等的形式。因此,本公开的实施例也可以采取完全硬件实施例、完全计算机程序产品实施例和/或包括计算机程序产品和执行某些步骤或操作的硬件的组合的实施例的形式。
下面参考框图和流程图图示描述本公开的实施例。因此,应当理解,框图和流程图图示的每个块可以以计算机程序产品、完全硬件实施例、硬件和计算机程序产品的组合和/或执行计算机可读存储介质上的指令、操作、步骤和可互换使用的类似词语(例如,可执行指令、用于执行的指令、程序代码等)来进行执行的装置、系统、计算设备、计算实体等的形式来实现。例如,代码的检索、加载和执行可以顺序执行,使得一次检索、加载和执行一条指令。在一些示例实施例中,检索、加载和/或执行可以并行执行,使得多个指令被一起检索、加载和/或执行。因此,这样的实施例可以产生执行框图和流程图图示中指定的步骤或操作的特定配置的机器。因此,框图和流程图图示支持用于执行指定指令、操作或步骤的实施例的各种组合。
背景和问题陈述
计算存储设备可以用于增强存储功能的使用,例如,通过执行近存储加速操作。具体地,所公开的系统可以执行存储数据的基于加速器设备的处理。在一些方面,诸如固态存储设备(SSD)的存储设备可以被配置为以任何合适的协议操作,诸如非易失性存储器快速(NVMe)。这种启用NVMe的SSD可能比非NVMe的SSD具有更低的延迟,并且可以支持更大的存储容量。在其他方面,这种SSD可以包括多个设备输入输出(I/O)队列,从而为存储提供更大的并行性。在一些方面,一些基于外围组件互连高速(PCIe)的设备(例如,具有4通道或8通道(x4和x8设备)的PCIe第3代(Gen3))可能使相应的PCIe带宽限制饱和,并因此可能限制设备扩展。因此,即使SSD能够提供一定水平的性能,由于各种系统设计限制,当在服务器中使用多个这样的设备时,SSD可能无法使用。此外,在与某几代PCIe(例如第4代,Gen4)相关联的服务器中扩展SSD可能具有类似的行为,例如,因为SSD可能具有更高的性能,并且可能使每个设备的PCIe限制饱和。这种类似的行为可能是由于跨设备的PCIe通道计数;然而,SSD可能会受到现代CPU和预期的PCIe总线的总寻址能力的限制。(以上代和相应的通道计数被用作示例,并且仅仅是为了说明的目的,并且不应当被解释为以任何方式限制所公开的实施例。)
利用计算存储设备对等(P2P)技术,处理元件(例如,现场可编程门阵列,FPGA)设备存储器可以被映射到主机地址空间;因此,应用可以使用该映射地址,并且绕过主机PCIe总线,直接从SSD读取数据或向SSD写入数据。这种技术可以在相应的服务器支持这种映射的情况下工作。但是,某些服务器可能不支持这种映射。因此,随着设备存储器大小的增加,服务器在其BIOS中设置限制,不将如此大的存储器映射到主机地址空间。此外,随着多个设备被扩展,服务器可能停止执行额外的映射,从而限制设备的能力,并导致进一步的扩展问题。这可能是由于存储器地址空间可能由服务器供应商预先配置,从而限制了对具有大存储器的设备的扩展。在某些情况下,具有大存储器的设备的使用可能被限制为每个服务器只有几个设备(例如,1-6个设备)。在各个方面,计算存储提供了通过P2P扩展这种能力的手段。
在某些方面,通过诸如光纤上的NVMe(NVMe-oF)协议的某些协议和设备,SSD可以支持网络附接操作模式(与设备附接操作模式相反),而无需暴露底层接口细节。然而,计算存储设备或利用这种机制的任何设备可能不能充分运行,因为设备的存储器映射可能在网络上不适用于远程设备。
进一步的限制
在一些方面,映射到主机地址空间的设备存储器(例如,作为PCIe基址寄存器,BAR)可能具有各种限制,如下面进一步描述的。特别是,一个限制可能包括:并非所有基本输入输出系统(BIOS)都平等对待额外的设备存储器。这可能是由于许多BIOS采用传统代码,这些代码通常处理对主机的动态随机存取存储器(DRAM)工作良好的分配。此外,一些BIOS可能不忍受大的设备存储器,并且如果检测到,则禁止该资源被初始化。因此,可以有命令(例如,PCIe配置命令)来设置这种设备的存储器大小,使得支持这种命令的BIOS将与它们一起工作。此外,BIOS可能不会为设备存储器提供足够的存储器净空(head-room)。因此,当用多个这样的设备初始化多个设备存储器时,由于这个问题,多个设备存储器会遇到存储器地址限制。在没有这些可见的额外的设备存储器的情况下,设备扩展可能会被限制在比服务器所能容纳的更小的数量。在各个方面,当这些设备通过诸如以太网、聚合以太网上的远程直接存储器访问(RDMA)(RoCE)、无限带宽、光纤通道(FC)等的网络附接的远程结构时,PCIe BAR后面的一些存储器可能无法工作。这可能是因为存储器映射可能只是主要用于本地附接的PCIe的本地资源。
解决办法
在各个方面,计算存储(也称为近存储计算)可以使某些数据处理功能能够卸载到存储设备。在某些方面,卸载功能也被称为加速引擎或加速内核。此外,卸载功能可以具有计算资源和设备本地存储器资源来执行期望的数据处理功能。在另一个方面,在这样的存储设备中可以存在并激活多个卸载功能。这种架构可能需要低开销的设备存储器管理机制。本公开提出了用于这些目的的高效设备存储器管理的多种方法。
在各种实施例中,所公开的系统和方法包括用于诸如SSD的存储设备将诸如读取和写入数据的数据从存储介质传递到协同设备的存储器的机制。在另一个实施例中,所公开的系统和方法包括转换用于读取和写入的设备存储器布局的设备机制。在一些实施例中,所公开的系统描述了用于主机向存储设备描述内部设备布局而无需主机系统地址空间映射和主机转换的机制。在一些方面,设备布局可以包括针对位于同一设备内部的一个或多个设备之间的内部传递来转换设备存储器的设备机制。转换不暴露给主机,因此保持私密和安全。此外,转换可能需要映射到主机地址空间。主机可以包括虚拟映射机制,该机制可以包括该设备存储器的开始(例如,在0h)到该设备存储器的结束之间的偏移,该偏移可以表示该存储器的长度。在一个实施例中,所公开的系统和方法包括发现和设置该特征的机制,并且还包括对直接附接或网络附接的设备透明地应用主机逻辑的机制,并且可以至少部分地在诸如计算SSD的存储设备上实现。
在一些实施例中,所公开的系统和方法包括针对设备内的读取和写入数据的点对点(P2P)数据传递而在存储设备和一个或多个协同设备之间传递数据,而无需去往外部连接,诸如PCIe总线。在一个实施例中,所公开的系统为P2P传递提供到存储设备的内部设备存储器映射,并且这种传递可以在不涉及主机对由操作系统存储器管理器提供的虚拟和物理地址进行系统地址映射的情况下发生。在另一个实施例中,所公开的系统允许为主机软件命令描述抽象内部映射。在一个实施例中,所公开的系统提供了在设备和其协同设备之间传递数据的机制,以及这种功能扩展到最大支持的存储设备而不引起系统限制的能力。在某些方面,所公开的系统提供了用于在存储设备(SSD)及其协同设备之间发送数据而无需在I/O路径中进行主机系统地址转换的机制。
图1是根据本公开的示例性实施例的用于使得数据处理功能能够卸载到存储设备的示例性架构的图示。示意图100显示了包括该体系结构中涉及的组件的示意图。
在各种实施例中,示意图100显示了包括应用106、系统存储器108和驱动器110的主机102。在一些实施例中,应用106可以包括在主机上执行或部分执行的任何合适的程序。在另一个实施例中,系统存储器108可以包括DRAM、静态随机存取存储器(SRAM)、闪存或任何合适的易失性存储器,并且还可以包括逻辑和物理形式的存储器两者。在一些实施例中,驱动器110可以包括软件或固件,该软件或固件具有用于主机软件与外部设备处的对应连接通信的特定指令,该外部设备类似于但不一定等同于存储设备104,这将在下面描述。
在各种实施例中,存储设备104可以包括固态驱动器(SSD)或不然就包括闪存。下面提供了存储设备104的更多细节。在一些实施例中,存储设备104可以包括设备管理器112,设备管理器112可以进一步充当主机接口、直接存储器访问(DMA)引擎和平台管理器。在一些实施例中,设备管理器112可以通过驱动器110与主机102接口。在一些实施例中,存储设备104可以包括闪存114或任何其他合适形式的非易失性存储器。此外,闪存114可以连接到设备管理器112。
在一些实施例中,存储设备104可以包括设备存储器116,设备存储器116可以包括任何合适的易失性存储器,并且还可以包括逻辑和物理形式的存储器两者。设备存储器116可以包括空闲存储器块,设备管理器112可以在功能卸载期间使用这些空闲存储块,如本文进一步描述的。在一些实施例中,存储设备104具有各种卸载功能118(例如,卸载功能1、卸载功能2,...卸载功能n),如下文进一步描述的,并且它们可以彼此连接(经由卸载功能控制总线)并且连接到设备存储器116(经由设备存储器总线)。
已经描述了示意图100中的组件和组件之间的连接,我们现在转到对设备的功能方面的讨论。如示意图100所示,卸载功能118可以出于至少以下目的访问设备存储器116:1)输入源数据进行处理,2)中间结果存储,3)最终结果存储,以及4)其他功能。在一些实施例中,设备管理器112可以在存储设备104中执行卸载管理或加速管理,可以从主机102的系统存储器108获取数据,并将其存放在设备存储器116中,使得卸载功能118可以处理它。类似地,卸载功能118可以从设备存储器117中取出结果数据,并将该数据存放在系统(例如,主机)存储器108或诸如闪存114介质的永久存储器(例如,非易失性存储器)中。设备管理器112可以执行卸载管理,并且可以使用控制总线提供针对源和结果的设备存储器地址或指针。出于此目的,这些地址可由设备管理器112写入寄存器集合,这些寄存器可由卸载功能118通过控制总线访问。在另一个实施例中,在存储设备104中执行卸载管理的设备管理器112还可以为暂存(scratch pad)或临时目的提供指向卸载功能的设备存储器指针。
在各个方面,设备存储器116可能需要具有相对低开销的存储器管理,其提供诸如以下功能的功能:1)分配、2)解除分配、3)空闲空间跟踪、4)垃圾收集、5)存储器保护、和6)其他功能。在一个实施例中,这样的设备存储器116可以由主机102以传输不可知的方式(transport agnostic manner)来管理。这种传输不可知的方式可以包括所公开的系统将设备存储器116视为与主机102的系统存储器108地址空间虚拟独立或分离的存储器地址空间。在另一个实施例中,这种设备存储器117可以完全由存储设备104本身管理,并且主机102可以根据需要以抽象的方式参考(refer to)设备存储器116。本公开在下面进一步描述这些设备存储器管理方法。
主机管理的设备存储器
在该方法中,设备存储器116可以由主机102管理。在一些实施例中,存储器分配、解除分配等可以由主机系统软件(例如,应用106)执行,并通过存储命令(诸如,NVMe计算存储命令)传送到存储设备104。设备存储器116没有映射到主机102系统存储器108的地址映射中;相反,它被视为单独的虚拟地址空间。各种存储命令(诸如NVMe命令)提供源数据或结果目的地的地址类型,并且设备存储器地址可以是类型中的一种。在这种方法中,设备存储器管理可以由主机102执行。此外,主机可以将设备存储器管理为从绝对地址0h开始的、跨越存储器长度的平面存储器地址空间。在某些方面,当存储器被寻址时,设备可以对页面粒度和对齐设置限制。主机可以发现这些限制,作为发现设备存储器的一部分,并且主机可以在使用设备进行正确的设备使用时遵守这些限制。设备管理器112可以将从主机102接收的存储器指针中继到卸载功能118。在一个实施例中,设备管理器112可以执行卸载平台管理,以在将这些主机提供的设备存储器地址传递给卸载功能118之前,从这些地址中添加或减去一些基址。
设备管理的设备存储器
在实施例中,设备存储器116可以从主机102的视角(point of view)被抽象化,因此可以由存储设备104本身管理。因此,主机系统软件(例如,应用106)在卸载功能调用期间可以不指定实际的设备存储器地址。特别地,设备可以为分配的存储器提供不透明的句柄,并且主机通过提供的句柄和该句柄内的地址偏移来寻址该存储器,该地址偏移可以从存储器地址0h开始。在各种实施例中,基于由主机102系统软件提供的源数据和结果目的地指针的长度和类型,设备管理器112执行卸载平台管理,并且可以执行设备存储器分配和预留。设备管理器112可以包括DMA引擎,如果需要,该DMA引擎可以获取源数据,并存放到所分配的设备存储器缓冲器。此时,设备管理器112可以例如使用控制总线将那些分配的设备存储器地址提供给相应的卸载功能118。这种存储器分配可以在卸载功能的每次运行时调用期间执行。类似地,当卸载功能118完成数据处理时,如果需要,DMA引擎可以将结果移动到设备存储器116外部的目的地址。然后,DMA引擎可以接触分配由卸载功能118在该调用期间所使用的设备存储器缓冲器。设备管理器112可以随时执行设备存储器垃圾收集,以创建连续的空闲空间块。
在一些实施例中,卸载功能118可能需要在每次调用期间为其处理分配一定量的临时存储器空间(例如,所谓的暂存存储器)。设备管理器112可以以卸载功能注册的形式满足这种固定的存储器要求。具体地,当卸载功能被加载到存储设备104中时,卸载功能118可以例如使用控制总线将这种固定的存储器需求提前通信到设备管理器112。此外,设备管理器112可以永久地或者在调用之前使用任何合适的协议来满足这些请求。
在另一个实施例中,卸载功能118也可以在该功能的运行时执行期间做出临时存储器分配请求。特别地,卸载功能118可能不能在调用之前预先确定临时存储器需求。这种动态设备存储器分配通过任何合适的控制协议来处理。此外,这种动态存储器分配请求可以由卸载功能118通过控制总线传送到设备管理器112。此外,设备管理器112可以通过控制总线适当地响应这些请求。
如前所述,卸载功能118进行的数据处理的结果在完成时驻留在设备存储器116中。设备管理器112的DMA引擎可以将这些结果传递到系统存储器108或永久存储器(例如,闪存114)中的适当目的地位置。然而,目的地地址类型可能指示结果被保存在设备存储器116本身中。所公开的系统可以使用这种机制来链接或嵌套卸载功能118。当一个卸载功能的结果被馈送到另一个卸载功能时,所公开的系统可以将结果保存在设备存储器116中,并且将相同的设备存储器地址作为输入数据源提供给下一个卸载功能。此外,这种方法避免了可能增加更多时间延迟的数据复制。在目的地址类型是设备存储器的情况下,相关联的设备存储器块不会被解除分配,否则会是这种情况。
在一个实施例中,设备管理器112可以将设备存储器116管理为虚拟地址空间或物理地址空间。在虚拟地址空间的情况下,设备管理器112可以通过卸载功能118执行设备存储器116访问的地址转换。使用虚拟地址空间方法,设备管理器112能够使用不连续的物理设备存储器块集合透明地向卸载功能供应连续的地址空间。此外,这样的技术可以以地址转换为代价来减少一些存储器垃圾收集开销。
在另一个实施例中,设备管理器112可以执行存储器管理功能来实施存储器保护。因此,卸载功能118可能需要被保护以免访问彼此的存储器空间。这种隐私和安全功能可以允许所公开的系统实现多个激活的卸载功能的安全和鲁棒的操作。在另一个实施例中,设备管理器112可以对照分配给它的存储器地址空间来检查给定卸载功能的存储器事务(memory transaction)的地址。在一个实施例中,设备管理器112还可以提供某些特权级别,使得某些功能可以被允许访问其他卸载功能的设备存储器。
内部数据传递机制
在一些实施例中,与设备存储器116的数据传递可以发生在用于闪存114上的闪存数据的存储控制器(未示出)和系统存储器108之间。在其他实施例中,设备存储器116可以由运行在存储设备104上的计算程序功能使用。由于设备存储器116没有暴露/映射到系统存储器108,计算存储设备104可以采用以下机制来寻址用于上述数据传递的内部存储器。具体地,存储设备104可以采用一个或多个寻址方案,该寻址方案被指定给主机软件(例如,应用106)。此外,主机软件应用接口(例如,驱动器110)可以相应地转换设备存储器116,以指示计算存储设备104对存储器116采取的动作。另外,存储器116可以被描述为用于数据传递和用于执行存储设备104内的计算程序功能。
设备存储器寻址方案
在一些实施例中,设备存储器116可以以下述方式描述(如下所述),例如,取决于设备存储器116是由主机102管理还是由存储设备104管理。如这里所使用的,寻址可以指描述不需要映射到主机地址空间的全部或部分设备存储器的机制,其中所提供的机制被虚拟化用于本地和远程访问。利用主机102管理的设备存储器,设备存储器可以有效地由64位地址来描述,该地址可以寻址高达大约264或大约18EB,这对于将来的使用是可扩展的。主机软件(例如,应用106)使用这个64位地址建立寻址设备存储器116的请求,该地址在指向存储器的开始的偏移零处开始,然后扩展直到存储器的结束。在一个实施例中,存储器增量可以以字节粒度或设备可以通告的更粗的块粒度来测量。例如,所公开的系统可以设置512字节的块粒度,这意味着存储器以设备所通告的最小粒度级别来分配,并且还以这些相同的增量被传递到最小值。如上所述,设备存储器分配可以是主机管理的或设备管理的。在设备管理的设备存储器的情况下,设备提供额外的命令来分配/解除分配存储器。在某些方面,这种机制类似于磁盘驱动器的块访问。
图2是根据本公开的示例性实施例的在设备存储器空间中具有相应偏移的存储器分配的示例性示意图的图示。示意图200示出了4GB设备存储器空间中的三个存储器分配202(204、206和208)及其各自的64位偏移。在这种主机管理的机制中,设备可以选择对地址应用散列,其进一步编码该地址作为保护手段。这里,内部设备操作可能只对这些转换的偏移起作用。
图3是根据本公开的示例性实施例的描述设备管理的设备存储器的各方面的示例性示意图的图示。在另一个实施例中,利用设备管理的设备存储器,所分配的存储器可以由设备本身管理。如示意图300所示,在主机软件请求的所需大小的任何分配上,当成功时,设备可以返回令牌密钥(例如,令牌密钥302)或不透明的存储器句柄。在一些实施例中,密钥连同偏移地址可能足以寻址264个地址。在一些方面,存储器可以包括安全地址空间,并且主机可以基于安全地址空间执行一个或多个多租户操作。在一些情况下,如果存储器是设备管理的,则地址可以由令牌和/或不透明的存储器句柄来保护,其中多个租户可以使用相同的设备存储器,但是使用不同的令牌。对于主机管理的存储器,主机可以管理多租户。
如示意图304所示,在各种实施例中,一个或多个主机应用可以提供令牌密钥306以及分配的存储器308内的偏移,以构建唯一的设备存储器地址。令牌密钥对设备可以是私有的,并且可以在需要时受到保护。偏移的范围可以从212到1,小于令牌密钥所需的最小位。图3显示了256KB的设备存储器如何被分配并用于创建有效地址。
关于设备存储器的注意事项
在一些方面,该设备可以具有可用于计算程序的一个大存储器。然而,在某些情况下,设备也可以使得多于一种的存储器类型可用。在这种情况下,所公开的系统可以留出额外的位来表示存储器类型。在某些方面,位可以被编码在诸如上述令牌的密钥令牌中。
主机接口
在各种实施例中,主机软件接口库可以提供分配/解除分配设备存储器的接口。该接口可以包括附加选项,以指定从哪个设备存储器池进行分配。此外,该接口提供了抽象化的视图,其中,为了简单起见,实现的内部细节对主机用户是隐藏的。在一些实施例中,应用编程接口(API)可以采用以下定义:csAllocMem(device_instance_handle,memory_flags,allocation_size,&returned_handle)。下面的几幅图(例如,图4、5、6和7)表示可用作结合所公开的系统使用的API的一部分的图。
图4是根据本公开的示例性实施例的设备可以通告(advertise)其存储器管理和使用能力的示例性数据结构的图示。
发现新的寻址能力
在各种实施例中,设备可以通告其存储器管理和使用能力,以便主机软件可以利用它。在一个实施例中,NVMe设备可以在诸如识别控制器数据结构的数据结构400中提供这些细节,因为该数据结构可以表示由主机设备驱动器查询的第一数据。在一些实施例中,设备可以如图4所示来填充(populate)能力。如图所示,数据结构400包括计算存储能力字段402和设备存储器数据粒度字段404。
图5是根据本公开的示例性实施例的用于将设备存储器地址用于DMA的示例性命令的图示。在各种实施例中,所公开的系统可以包括设备存储器和主机存储器之间的DMA,其可以包括对设备存储器的读取或写入,如示意图500中由读取计算存储器502和写入计算存储器504字段所示。此外,对于除命令字段之外的所有其他字段,这些读取或写入中的每一个都可以在NVMe以相同的方式寻址。
图6是根据本公开的示例性实施例的示例性NVMe命令的图示,该命令包含在主机和设备存储器之间传递数据的、具有相应字段的传递细节。例如,基于协议的(例如,基于NVMe的)数据指针寄存器字段(DPTR字段)和/或DMDA字段可以提供描述主机存储器的机制。示意图600示出了子图602,其描述了描述主机数据指针的数据指针(DPTR)字段;子图604,其显示了代表命令Dword的传递大小的Dword的数量(NUMD)字段;以及子图606,其描述了代表命令Dword的设备数据指针的设备存储器数据地址(DMDA)字段。
在一些实施例中,NVMe命令可以包含具有如图6所示和所述的字段的分散聚集列表(SGL)。在一些方面,DPTR字段可以指(refer to)其定义在基本规范中的主机存储器。此外,DMDA字段可以指(refer to)如上所述指定为64位地址的设备存储器。
使用设备存储器地址来执行计算机程序
在各种实施例中,计算机程序使用设备存储器来访问数据作为输入,并提供结果作为输出。可以通过上述方案如所述的那样来分配设备存储器。设备存储器可以表示为64位,指向的程序参量可以定义存储器。
在各种实施例中,结合所公开的系统使用的计算程序可以具有与其一起工作的一个或多个参量。参量可以是标量或矢量参量。因此,参量可以保存数据或者是指向设备存储器的指针。程序定义定义了必要的输入,并且来自主机的命令将直接从主机应用提供该列表(即,SGL)。设备可以按原样解释这些参量中的每一个,并将其传递给程序。例如,在函数:foo_function(uint32size,uint64 src_ptr,unit64 dst_ptr)中,主机应用传递了32位数据值和2个设备存储器指针作为命令的一部分。
图7是根据本公开的示例性实施例的被采用以保持本地和远程附接的计算存储设备的存储器使用相似的示例性特殊类型的分散聚合列表(SGL)机制的图示。特别地,该设备可以提供一种机制来寻址由卸载程序使用的其内部存储器。诸如非易失性存储器快速(NVMe)的一些协议的机制可以提供一种寻址方案,该方案可以在本地附接设备(例如,经由外围组件互连快速PCIe)或远程附接设备(光纤上的NVMe,NVMe-oF)之间通用。主机软件可以利用这种相对简单且可扩展的机制,并且在寻址设备时不需要确定设备是如何附接的。特别地,示意图700包括SGL标识符702字段、保留704字段、长度706字段和偏移708字段。在一些方面,SGL可以提供SGL标识符702来表示需要用来寻址设备存储器的描述符的类型。长度706字段描述被寻址的设备存储器的长度,而偏移708描述该存储器内的偏移。保留704字段可以作为保留字段保留以备将来使用。
将设备存储器地址用于存储I/O
不管用于分配设备存储器的存储器管理如何,所公开的系统都将该存储器描述给设备。特别地,所公开的系统采用一种类型的分散聚合列表(SGL)机制来保持本地和远程附接的计算存储设备的存储器使用相似。在各个方面,系统可以在(同一设备中的)一个设备存储器位置到下一个存储器位置之间传递存储器。可选地或附加地,系统可以将存储器从多个设备位置传递到主机。具体地,系统可以在设备存储器的一个位置到同一设备存储器中的另一个位置之间传递数据:某些用途可能需要将数据从一个位置传递到下一个位置。此外,数据可以被可能不能访问所有的存储器位置的不同的卸载程序使用。此外,在这种情况下,主机可以通过存储器句柄抽象和访问限制来管理安全性和多租户。一个示例用例可以包括从存储名称加载到设备存储器中的数据。例如,存储器A可以首先被第一卸载程序X1解密成设备存储器B。并行地,X1的另一个实例(例如,X2实例)可以将设备存储器C解密成设备存储器D。然后,主机可以将存储器B和存储器D复制到设备存储器位置E中,并将其呈现给卸载程序Y,例如,以分析和过滤存储器B和存储器D。在其他方面,系统可以在两个独立的设备存储器位置之间传递:这里,设备可以具有多于一个设备存储器。此外,该设备可以将多个分散的设备存储器位置之间的存储器传递到同一设备存储器上的一个设备存储器位置,这可以表示SGL使用。此外,该设备可以将多个分散的设备存储器位置之间的存储器传递到主机存储器。
在各种实施例中,设置为预定值(例如,9)的SGL描述符类型可以表示用于数据的计算存储器SGL描述符的类型。此外,用于所有传递的SGL描述符子类型可以被设置为另一个值(例如,1),并且可以使用偏移字段作为从数据的计算存储器开始的偏移来操作。例如,偏移字段包含从数据的计算存储器所在位置的起始处的偏移,并且在长度中定义的其长度由块粒度字段控制。描述64位地址的偏移字段应如所描述的那样被用于由主机或设备管理的存储器。在另一个实施例中,各种命令(例如,NVMe I/O命令)可以使用SGL来描述用于其操作的数据的计算存储器。
图8是根据本公开的示例性实施例的概述数据缓冲器与I/O命令的交互的示例性表格800的图示。NVMe读取和写入命令802可以用相应的物理区域页(PRP)和SGL用法来定义。具体地,本公开的实施例描述了在存储命名空间和设备存储器之间传递数据的加载和存储命令。可替代地,可以修改NVMe读取和写入命令,以包括使用所公开的设备存储器寻址方案。更新后的SGL可以替代那些设备存储器被寻址的情况。
图9是根据本公开的示例性实施例的用于数据传递的示例性SGL描述符的图示。以下示例演示了所描述的SGL描述符在数据传递中的用法。示意图900示出了SQE 902、用于数据的计算存储器SGL 904和用于计算的设备存储器906。用于数据的计算存储器SGL 904包括预定偏移908、长度910和SGL标识符912字段。此外,用于计算的设备存储器906包括64KB存储器914。在某些情况下,可以使用为每个命令定义的描述符将NVMe命令从主机传递到设备。这些描述符可以在NVMe提交队列(SQ)中填充。每个SQ可以支持多个提交队列条目。主机软件可以将每个请求作为描述符传递到空闲的SQE,并通过按门铃让设备知道发布到SQ的工作。特别地,示意图900示出了SQE 902条目可以用标准NVMe读命令填充,以及数据指针(DPTR字段)可以用指向设备存储器(例如4KB存储器914)的SGL条目更新。这里,SGL定义了具有预定偏移908和64KB长度910的设备存储器块。SQE的其他字段用常规的NVMe读取填充。使用该SGL的NVMe读取可以在预定偏移908处直接填充存储读取内容。存储控制器可以解释这个内部定义。
这里结合本公开描述的机制提供了为计算存储设备寻址和访问设备存储器的独特方法。这些机制适用于本地和远程附接设备,并且是可扩展的。
图10是根据本公开的示例性实施例的示出与所公开的系统相关联的示例性操作的示例性操作流程1000的图示。特别地,操作流程1000是从系统的角度来看的(例如,与主机设备视角和/或存储设备视角对照)。在框1002,所公开的系统可以经由接口(例如,API)在主机设备和存储设备之间建立连接。在框1004,所公开的系统可以通过由主机执行的应用在第二存储器上执行数据操作,经由接口在与主机设备相关联的第一存储器和与存储设备相关联的第二存储器之间传递数据。此外,存储设备可以包括通过对数据操作执行至少一个卸载功能来加速数据操作的处理元件。
图11是根据本公开的示例性实施例的示出与所公开的系统相关联的示例性操作的另一示例性操作流程1100的图示。特别地,操作流程1100是从存储设备的角度来看的(例如,与主机设备视角和/或一般系统视角对照)。具体地,在框1102,所公开的系统可以向主机设备发送信息,以经由接口在存储设备和主机设备之间建立连接。在框1104,所公开的系统可以从主机设备接收数据请求。在框1106,所公开的系统可以通过对数据操作执行至少一个卸载功能,基于数据请求在存储设备存储器上执行数据操作。在框1108,所公开的系统可以经由接口向主机设备提供由数据操作产生的数据。
图12示出了可用于实践本公开实施例的系统的示例示意图。如图12中所示,该特定实施例可以包括一个或多个管理计算实体1200、一个或多个网络1205以及一个或多个用户设备1210(例如,主机设备、存储设备、附加设备等)。在各种实施例中,管理计算实体1200可以被配置为运行与所公开的系统以及贯穿本公开描述的相关联的实施例相关联的操作。此外,管理计算实体1200可以驻留在所公开的系统的任何合适的部分中(例如,诸如存储设备管理器、主机应用、远程主机、另一设备、其组合等)。这里可互换使用的这些组件、实体、设备、系统和类似词语中的每一个可以例如通过相同或不同的有线或无线网络彼此直接或间接通信。此外,尽管图12将各种系统实体示为分开的独立实体,但是各种实施例不限于这种特定的体系结构。如上所述,可以使用本文进一步描述的任何合适的协议来执行通信。
图13示出了根据本公开的示例实施例的管理计算实体的示例示意图1300。如所指出的,管理计算实体可以被配置为运行与所公开的系统以及贯穿本公开描述的相关联的实施例相关联的操作。此外,管理计算实体1200可以驻留在所公开的系统的任何合适的部分中。具体地,内容组件可以用于确定指示要在本文描述的系统上发送的数据(例如,视频、音频、文本、数据、其组合等)的信号。在另一个实施例中,用于传输的信号的确定可以例如基于对设备的用户输入、与系统相关联的网络上的数据传输的预定调度、网络条件的变化等。在一个实施例中,信号可以包括可以被封装在数据帧中的数据和/或被配置为从设备发送到网络上的一个或多个设备的分组。
在另一个实施例中,处理元件1305可以用于确定与在与所公开的系统相关联的网络上发送的数据相关联的各种参数。作为另一示例,处理元件1305可以用于执行各种加速操作,诸如卸载功能的至少一部分、数据预处理或后处理、其组合等。
在一个实施例中,发送组件(未示出)可以用于将信号在网络上从一个设备传递到另一个设备。例如,发送组件可以用于准备发送器(例如,图12的发送器1204,如下)来通过网络发送信号。例如,发送组件可以将数据排队在一个或多个缓冲器中,可以确定发送设备和相关联的发送器是正常运转的并且具有足够的电力来通过网络发送信号,可以调整与数据的传输相关联的一个或多个参数(例如,调制类型、信号放大、信号电力级别、噪声抑制、其组合等)。
一般地,本文中可互换使用的术语计算实体、计算机、实体、设备、系统和/或类似词语可以指例如一个或多个计算机、计算实体、台式计算机、移动电话、平板计算机、平板电话、笔记本计算机、膝上型计算机、分布式系统、游戏控制台(例如Xbox、Play Station、Wii)、手表、眼镜、iBeacons、接近信标、密钥卡、射频识别(RFID)标签、耳机、扫描仪、电视机、软件狗、相机、腕带、可穿戴物品/设备、信息亭、输入终端、服务器或服务器网络、刀片、网关、交换机、处理设备、处理实体、机顶盒、中继器、路由器、网络接入点、基站等,和/或适于执行本文描述的功能、操作和/或过程的设备或实体的任何组合。这种功能、操作和/或过程可以包括例如发送、接收、操作、处理、显示、存储、确定、创建/生成、监控、评估、比较和/或这里可互换使用的类似术语。在一个实施例中,这些功能、操作和/或过程可以在数据、内容、信息和/或本文可互换使用的类似术语上执行。
如所指示的,在一个实施例中,管理计算实体1200还可以包括用于诸如通过通信可以被发送、接收、操作、处理、显示、存储等的数据、内容、信息和/或本文可互换使用的类似术语,来与各种计算实体通信的一个或多个通信接口1320。例如,管理计算实体1200可以与用户设备1210和/或各种其他计算实体通信。
如图13所示,在一个实施例中,管理计算实体1200可以包括或与一个或多个处理元件1305(也称为处理器、处理电路和/或在本文可互换使用的类似术语)通信,该一个或多个处理元件1305例如经由总线与管理计算实体1200内的其他元件通信。将会理解,处理元件1305可以以多种不同的方式来实现。例如,处理元件1305可以实现为一个或多个复杂的可编程逻辑器件(CPLD)、微处理器、多核处理器、协处理实体、专用指令集处理器(ASIP)、微控制器和/或控制器。此外,处理元件1305可以实现为一个或多个其他处理设备或电路。术语电路可以指完全硬件的实施例或者硬件和计算机程序产品的组合。因此,处理元件1305可以实现为集成电路、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、硬件加速器、其他电路等。因此,可以理解,处理元件1305可以被配置用于特定用途,或者被配置为执行存储在易失性或非易失性介质中或者处理元件1305以其他方式可以访问的指令。这样,无论是由硬件或计算机程序产品配置,还是由它们的组合配置,当相应地配置时,处理元件1305都能够执行根据本公开的实施例的步骤或操作。
在一个实施例中,管理计算实体1200可以进一步包括非易失性介质(也称为非易失性存储装置、存储器、存储器存储装置、存储器电路和/或本文中可互换使用的类似术语)或者与非易失性介质通信。在一个实施例中,非易失性存储装置或存储器可以包括一个或多个非易失性存储装置或存储器介质1310,包括但不限于硬盘、ROM、PROM、EPROM,EEPROM、闪存、MMC、SD存储器卡、记忆棒、CBRAM、PRAM、FeRAM、NVRAM、MRAM、RRAM,SONOS、FJG RAM、千足虫存储器、赛道存储器等。将会认识到,非易失性存储装置或存储器介质可以存储数据库、数据库实例、数据库管理系统、数据、应用、程序、程序组件、脚本、源代码、目标代码、字节代码、编译代码、解释代码、机器代码、可执行指令等。本文可互换使用的术语数据库、数据库实例、数据库管理系统和/或类似术语可以指使用一个或多个数据库模型存储在计算机可读存储介质中的记录或数据的集合,所述数据库模型诸如分层数据库模型、网络模型、关系模型、实体-关系模型、对象模型、文档模型、语义模型、图形模型等。
在一个实施例中,管理计算实体1200可以进一步包括易失性介质(也称为易失性存储器、存储器、存储器存储、存储器电路和/或本文中可互换使用的类似术语)或者与易失性介质通信。在一个实施例中,易失性存储或存储器还可以包括一个或多个易失性存储装置或存储器介质1315,包括但不限于RAM、DRAM、SRAM、FPM DRAM、EDO DRAM、SDRAM、DDRSDRAM、DDR2 SDRAM、DDR3 SDRAM、RDRAM、TTRAM、T-RAM、Z-RAM、RIMM、DIMM、SIMM、VRAM、高速缓冲存储器、寄存器存储器等。将会认识到,易失性存储装置或存储器介质可以用于存储由例如处理元件1305执行的数据库、数据库实例、数据库管理系统、数据、应用、程序、程序组件、脚本、源代码、目标代码、字节代码、编译代码、解释代码、机器代码、可执行指令等的至少一部分。因此,在处理元件1305和操作系统的帮助下,数据库、数据库实例、数据库管理系统、数据、应用、程序、程序组件、脚本、源代码、目标代码、字节代码、编译代码、解释代码、机器代码、可执行指令等可以用于控制管理计算实体1200的操作的某些方面。
如所指示的,在一个实施例中,管理计算实体1200还可以包括用于诸如通过通信可以被发送、接收、操作、处理、显示、存储等的数据、内容、信息和/或本文可互换使用的类似术语来与各种计算实体通信的一个或多个通信接口1320。这种通信可以使用有线数据传输协议来执行,诸如外围组件互连快速(PCIe)、光纤分布式数据接口(FDDI)、数字用户线路(DSL)、以太网、异步传递模式(ATM)、帧中继、电缆数据服务接口规范(DOCSIS)或任何其他有线传输协议。类似地,管理计算实体1200可以被配置为使用多种协议中的任何一种经由无线外部通信网络进行通信,所述多种协议诸如通用分组无线业务(GPRS)、通用移动电信系统(UMTS)、码分多址2000(CDMA2000)、CDMA2000 1X(1xRTT)、宽带码分多址(WCDMA)、时分同步码分多址(TD-SCDMA)、长期演进(LTE)、演进通用陆地无线接入网(E-UTRAN)、演进数据优化(EVDO)、高速分组接入(HSPA)、高速下行分组接入(HSDPA)、IEEE802.11(Wi-Fi)、Wi-Fi直连、802.16(WiMAX)、超宽带(UWB)、红外(IR)协议、近场通信(NFC)协议、ZigBee、蓝牙协议、5G协议、无线通用串行总线(USB)协议和/或任何其他无线协议。
尽管未示出,管理计算实体1200可以包括一个或多个输入元件或者与一个或多个输入元件通信,输入元件诸如键盘输入、鼠标输入、触摸屏/显示器输入、运动输入、移动输入、音频输入、定点设备输入、操纵杆输入、小键盘输入等。管理计算实体1200还可以包括一个或多个输出元件(未示出)或与之通信,输出元件诸如音频输出、视频输出、屏幕/显示器输出、运动输出、移动输出等。
应当理解,管理计算实体1200的组件的一个或多个可以位于远离其他管理计算实体1200组件,诸如在分布式系统中。此外,一个或多个组件可以被组合,并且执行本文描述的功能的附加组件可以被包括在管理计算实体1200中。因此,管理计算实体1200可以适于适应各种需求和环境。将会认识到,这些架构和描述仅是出于示例的目的而提供的,并且不限于各种实施例。
用户可以是个人、家庭、公司、组织、实体、组织内的部门、组织和/或个人的代表等。在一个示例中,用户可以是雇员、居民、顾客等。例如,用户可以操作用户设备1210,该用户设备1210包括功能上类似于管理计算实体1200的一个或多个组件。
具体而言,处理组件、发送组件和/或接收组件可以被配置为与一个或多个处理元件1305、存储器1310、易失性存储器1315通信,并且可以包括通信接口1320(例如,以便于设备之间的通信)。
图14示出了根据本公开的示例实施例的用户设备的示例示意图。图14提供了可以结合本公开的实施例使用的用户设备1410(例如,主机设备、存储设备、外围设备等)的说明性示意图。一般地,本文中可互换使用的术语设备、系统、计算实体、实体和/或类似词语可以指例如一个或多个计算机、计算实体、台式计算机、移动电话、平板计算机、平板电话、笔记本计算机、膝上型计算机、分布式系统、游戏控制台(例如Xbox、Play Station、Wii)、手表、眼镜、密钥卡、射频识别(RFID)标签、耳机、扫描仪、相机、腕带、信息亭、输入终端、服务器或服务器网络、刀片、网关、交换机、处理设备、处理实体、机顶盒、中继器、路由器、网络接入点、基站等,和/或适于执行本文描述的功能、操作和/或过程的设备或实体的任何组合。用户设备1410可以由各方操作。如图14所示,用户设备1410可以包括天线1412、发送器1404(例如无线电)、接收器1406(例如无线电)和处理元件1408(例如CPLD、FPGA、微处理器、多核处理器、协处理实体、ASIP、微控制器和/或控制器),处理元件1408分别向发送器1404提供信号和从接收器1406接收信号。
分别提供给发送器1404和从接收器1406接收的信号可以包括根据适用无线系统的空中接口标准的信令信息。在这点上,用户设备1410可能能够以一个或多个空中接口标准、通信协议、调制类型和接入类型来操作。更具体地,用户设备1410可以根据多个无线通信标准和协议中的任何一个来操作,诸如上面关于图14的管理计算实体1400描述的那些。在特定实施例中,用户设备1410可以根据多种无线通信标准和协议进行操作,诸如所公开的IoT DOCSIS协议、UMTS、CDMA2000、1xRTT、WCDMA、TD-SCDMA、LTE、E-UTRAN、EVDO、HSPA、HSDPA、5G、Wi-Fi、Wi-Fi直连、WiMAX、UWB、IR、NFC、蓝牙、USB等。类似地,用户设备1410可以根据多种有线通信标准和协议来操作,诸如上面关于管理计算实体1400经由网络接口1420描述的那些。
经由这些通信标准和协议,用户设备1410可以使用诸如非结构化补充服务数据(USSD)、短消息服务(SMS)、多媒体消息服务(MMS)、双音多频信令(DTMF)和/或用户身份组件拨号器(SIM拨号器)的概念与各种其他实体通信。用户设备1410还可以下载例如对其固件、软件(例如包括可执行指令、应用、程序组件)和操作系统的改变、附加组件和更新。
根据一个实施例,用户设备1410可以包括位置确定方面、设备、组件、功能和/或本文可互换使用的类似词语。位置确定方面可用于通知由管理计算实体所使用的模型以及本文描述的模型和/或机器学习技术中的一个或多个。例如,用户设备1410可以包括室外定位方面,诸如适于获取例如纬度、经度、海拔、地理编码、路线、方向、航向、速度、世界时(UTC)、日期和/或各种其他信息/数据的位置组件。在一个实施例中,定位组件可以通过识别可见卫星的数量和这些卫星的相对位置来获取数据,有时称为星历数据。卫星可以是各种不同的卫星,包括低地球轨道(LEO)卫星系统、国防部(DOD)卫星系统、欧盟伽利略定位系统、中国罗盘导航系统、印度区域导航卫星系统等。可替代地,位置信息可以通过结合各种其他系统(包括蜂窝塔、Wi-Fi接入点等)对用户设备1410的位置进行三角测量来确定。类似地,用户设备1410可以包括室内定位方面,诸如适于获取例如纬度、经度、海拔、地理编码、路线、方向、航向、速度、时间、日期和/或各种其他信息/数据的位置组件。一些室内系统可以使用各种位置或定位技术,包括RFID标签、室内信标或发送器、Wi-Fi接入点、蜂窝塔、附近的计算设备(例如智能电话、笔记本计算机)等。例如,这样的技术可以包括iBeacon、万向接近信标、蓝牙低能量(BLE)发送器、NFC发送器等。这些室内定位方面可以在各种设置中使用,以确定某人或某物在几英寸或几厘米内的位置。
用户设备1410还可以包括用户接口(可以包括耦合到处理元件1408的显示器1416)和/或用户输入接口(耦合到处理元件1408)。例如,用户界面可以是在用户设备1410上执行和/或可经由用户设备1410访问的用户应用、浏览器、用户界面和/或本文可互换使用的类似词语,以与管理计算实体1400交互和/或导致来自管理计算实体1400的信息的显示,如这里所描述的。用户输入接口可以包括允许用户设备1410接收数据的多个设备或接口中的任何一个,诸如小键盘1418(硬的或软的)、触摸显示器、声音/语音或运动接口或其他输入设备。在包括小键盘1418的实施例中,小键盘1418可以包括(或导致显示)传统的数字键(0-9)和相关键(#、*)以及用于操作用户设备1410的其他键,并且可以包括字母键的全部集合或可被激活以提供字母数字键的全部集合的键的集合。除了提供输入之外,用户输入接口可以用于例如激活或去激活某些功能,诸如屏幕保护程序和/或睡眠模式。
用户设备1410还可以包括易失性存储装置或存储器1422和/或非易失性存储装置或存储器1424,其可以是嵌入式的和/或可移动的。例如,非易失性存储器可以是ROM、PROM、EPROM、EEPROM、闪存、MMC、SD存储器卡、记忆棒、CBRAM、PRAM、FeRAM、NVRAM、MRAM、RRAM、SONOS、FJG RAM、千足虫存储器、赛道存储器等。易失性存储器可以是RAM、DRAM、SRAM、FPMDRAM、EDO DRAM、SDRAM、DDR SDRAM、DDR2 SDRAM、DDR3 SDRAM、RDRAM、TTRAM、T-RAM、Z-RAM、RIMM、DIMM、SIMM、VRAM、高速缓冲存储器、寄存器存储器等。易失性和非易失性存储装置或存储器可以存储数据库、数据库实例、数据库管理系统、数据、应用、程序、程序组件、脚本、源代码、目标代码、字节代码、编译代码、解释代码、机器代码、可执行指令等,以实现用户设备1410的功能。如所指示的,这可以包括驻留在实体上或可通过浏览器或其他用户界面访问的用户应用,用于与管理计算实体1400和/或各种其他计算实体通信。
在另一个实施例中,用户设备1410可以包括与管理计算实体1400的组件或功能相同或相似的一个或多个组件或功能,如上面更详细描述的。将会认识到,这些架构和描述仅是出于示例的目的而提供的,并且不限于各种实施例。
某些实施例可以用硬件、固件和软件之一或其组合来实现。其他实施例也可以被实现为存储在计算机可读存储设备上的指令,其可以被至少一个处理器读取和执行以执行本文描述的操作。计算机可读存储设备可以包括用于以机器(例如,计算机)可读的形式存储信息的任何非暂时性存储机制。例如,计算机可读存储设备可以包括只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备以及其他存储设备和介质。
本文使用词语“示例”和“示例性的”用于意味着“用作示例、实例或说明”本文被描述为或“示例性”的任何实施例不一定被解释为优先于或优于其他实施例。本文使用的术语“计算设备”、“用户设备”、“通信站”、“站”、“手持设备”、“移动设备”、“无线设备”和“用户设备(UE)”是指无线通信设备,诸如蜂窝电话、智能电话、平板计算机、上网本、无线终端、膝上型计算机、毫微微蜂窝基站、高数据速率(HDR)订户站、接入点、打印机、销售点设备、接入终端或其他个人通信系统(PCS)设备。该设备可以是移动的或固定的。
如本文档中所使用的,术语“通信”旨在包括发送或接收,或发送和接收两者。当描述由一个设备发送和由另一个设备接收的数据的组织时,这在权利要求中可能特别有用,但是侵犯权利要求只需要这些设备中的一个的功能。类似地,两个设备之间的双向数据交换(在交换期间两个设备都发送和接收)可以被描述为“通信”,此时仅要求这些设备之一的功能。如本文关于无线通信信号使用的术语“通信”包括发送无线通信信号和/或接收无线通信信号。例如,能够通信无线通信信号的无线通信单元可以包括将无线通信信号发送到至少一个其他无线通信单元的无线发送器,和/或从至少一个其他无线通信单元接收无线通信信号的无线通信接收器。
一些实施例可以与各种设备和系统结合使用,例如,个人计算机(PC)、台式计算机、移动计算机、膝上型计算机、笔记本计算机、平板计算机、服务器计算机、手持计算机、手持设备、个人数字助理(PDA)设备、手持PDA设备、车载设备、非车载设备、混合设备、车辆设备、非车辆设备、移动或便携式设备、消费设备、非移动或非便携式设备、无线通信站、无线通信设备、无线接入点(AP)、有线或无线路由器、有线或无线调制解调器、视频设备、音频设备、音频-视频(A/V)设备、有线或无线网络、无线局域网、无线视频局域网(WVAN)、局域网(LAN)、无线LAN(WLAN)、个人区域网(PAN)、无线PAN(WPAN)等。
一些实施例可以与单向和/或双向无线电通信系统、蜂窝无线电电话通信系统、移动电话、蜂窝电话、无线电话、个人通信系统(PCS)设备、合并了无线通信设备的PDA设备、移动或便携式全球定位系统(GPS)设备、合并了GPS接收器或收发器或芯片的设备、合并了RFID元件或芯片的设备、多输入多输出(MIMO)收发器或设备、单输入多输出(SIMO)收发器或设备、多输入单输出(MISO)收发器或设备、具有一个或多个内部天线和/或外部天线的设备、数字视频广播(DVB)设备或系统、多标准无线电设备或系统、有线或无线手持设备,例如智能电话、无线应用协议(WAP)设备等结合使用。
一些实施例可以与遵循一个或多个无线通信协议的一种或多种类型的无线通信信号和/或系统结合使用,例如,射频(RF)、红外(IR)、频分复用(FDM)、正交FDM(OFDM)、时分复用(TDM)、时分多址(TDMA)、扩展TDMA(E-TDMA)、通用分组无线业务(GPRS)、扩展GPRS、码分多址(CDMA)、宽带CDMA(WCDMA)、CDMA 2000、单载波CDMA、多载波CDMA、多载波调制(MDM)、离散多音(DMT)、BluetoothTM、全球定位系统(GPS)、Wi-Fi、Wi-Max、ZigBeeTM、超宽带(UWB)、全球移动通信系统(GSM)、2G、2.5G、3G、3.5G、4G、第五代(5G)移动网络、3GPP、长期演进(LTE)、高级LTE、GSM演进(EDGE)的增强数据速率等。其他实施例可以用于各种其他设备、系统和/或网络。
尽管上面已经描述了示例处理系统,但是本文描述的主题和功能操作的实施例可以在其他类型的数字电子电路中实现,或者在计算机软件、固件或硬件中实现,包括本说明书中公开的结构及其结构等同物,或者在它们中的一个或多个的组合中实现。
本文描述的主题和操作的实施例可以在数字电子电路中实现,或者在计算机软件、固件或硬件中实现,包括本说明书中公开的结构及其结构等同物,或者在它们中的一个或多个的组合中实现。本文描述的主题的实施例可以被实现为一个或多个计算机程序,即编码在计算机存储介质上的计算机程序指令的一个或多个组件,用于由信息/数据处理装置执行或控制信息/数据处理装置的操作。可替换地或者额外地,程序指令能够被编码在人工生成的传播的信号上,例如,机器生成的电、光、或者电磁信号,其被生成以便编码用于传输到合适的接收器装置以便被信息/数据处理装置运行。计算机存储介质可以是或被包括在计算机可读存储设备、计算机可读存储基底、随机或串行访问存储器阵列或设备或它们中的一个或多个的组合中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也可以是或被包括在一个或多个单独的物理组件或介质中(例如多个CD、磁盘或其他存储设备)。
本文描述的操作可以被实现为由信息/数据处理装置对存储在一个或多个计算机可读存储设备上或从其他来源接收的信息/数据执行的操作。
术语“数据处理装置”包括用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机、片上系统、或前述的多个或组合。该装置可以包括专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或它们中的一个或多个的组合的代码。该装置和执行环境可以实现各种不同的计算模型基础设施,诸如网络服务、分布式计算和网格计算基础设施。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释语言、声明或过程语言,并且可以以任何形式部署,包括作为独立程序或作为组件、组件、子例程、对象或适合在计算环境中使用的其他单元。计算机程序可以,但是不需要,对应于文件系统中的文件。程序能够存储在保持其它程序或者信息/数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中,存储在专用于正被讨论的程序的单一文件中,或者存储在多个协调的文件(例如,存储一个或多个组件、子程序、或者代码部分的文件中)。计算机程序能够被部署为在一个计算机上运行,或者在位于一个场所的或者分布在多个场所之间并通过通信网络互连的多个计算机上运行。
本文描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器来执行,以通过对输入信息/数据进行操作并生成输出来执行动作。适于计算机程序的运行的处理器包括,举例来说,通用微处理器和专用微处理器两者,以及任何种类的数字计算机的任何一个或多个处理器。一般,处理器将从只读存储器或者随机存取存储器或者两者接收指令和信息/数据。计算机的基本元件是用于根据指令执行动作的处理器以及用于存储指令和数据的一个或多个存储器设备。一般,计算机还将包括用于存储数据的一个或多个海量存储设备例如,磁盘、磁光盘或者光盘,或者计算机还将被可操作地耦合到所述一个或多个海量存储设备,从所述一个或多个海量存储设备接收信息/数据、或者向所述一个或多个海量存储设备传递信息/数据、或者兼而有之。然而,计算机不需要具有这样的设备。适于存储计算机程序指令和信息/数据的设备包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充,或者合并在专用逻辑电路中。
为了提供与用户的交互,本文中描述的主题的实施例能够被实施在具有用于向用户显示信息/数据的显示设备以及能够被用户用来向计算机提供输入的键盘和指向(pointing)设备的计算机上,所述显示设备例如CRT(阴极射线管)或者LCD(液晶显示器)监视器,所述指向设备例如鼠标或者轨迹球。其它种类的设备也能够用于提供与用户的交互;例如,提供给用户的反馈能够是任何形式的感官反馈,例如,视觉反馈、听觉反馈、或者触觉反馈;并且来自用户的输入能够以任何形式被接收包括声音、语音、或者触觉输入。此外,计算机能够通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从用户的客户端设备上的网络浏览器接收的请求向该网络浏览器发送网页。
本文描述的主题的实施方式可以实施在包括后端组件例如,作为信息/数据服务器的计算系统中,或者可以实施在包括中间件组件例如,应用服务器的计算系统中,或者可以实施在包括前端组件例如,具有能够被用户用来与在本文描述的主题的实施例进行交互的图形用户界面或者网络浏览器的客户端计算机、或者一个或多个这样的后端组件、中间件组件、或者前端组件的任何组合的计算系统中。所述系统的组件能够通过任何形式或者介质的数字信息/数据通信例如,通信网络来互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、内部网络(例如因特网)和点对点网络(例如自组织点对点网络)。
计算系统能够包括客户端和服务器。客户端和服务器一般彼此远离,并且典型地通过通信网络来交互。客户端和服务器之间的关系凭借在各个计算机上运行的并且彼此之间具有客户端-服务器关系的计算机程序而发生。在一些实施例中,服务器将信息/数据(例如,HTML页面)发送到客户端设备(例如,为了向与客户端设备交互的用户显示信息/数据以及从其接收用户输入的目的)。在客户端设备处生成的信息/数据(例如,用户交互的结果)可以在服务器处从客户端设备接收。
虽然本说明书包含许多具体的实施例细节,但是这些细节不应该被解释为对任何实施例或可能要求保护的范围的限制,而是对特定实施例的特征的描述。在分开的实施例的上下文中在本文描述的某些特征还能够组合地实施在单一实施例中。相反地,在单一实施例的上下文中描述的各种特征还能够分开地实施在多个实施例中或者实施在任何合适的子组合中。而且,虽然特征可能在上面被描述为出现在某些组合中并且甚至一开始就被请求按这样进行保护,但是来自请求保护的组合的一个或多个特征在一些情况下能够从该组合中被删除,并且请求保护的组合可以专注于子组合或者子组合的变化。
类似地,虽然操作在附图中被按照特定的次序描述,但是这不应该被理解为要求按照所示出的特殊次序来执行或者按照相继次序执行这样的操作、或者要求执行所有示出的操作,以便实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。而且,上述的实施例中的各种系统组件的分离不应该被理解为要求在所有的实施例中进行这样的分离,并且应该理解,所描述的程序组件和系统通常能够一起集成在单一软件产品中或者包装到多个软件产品中。
已经描述了主题的特殊实施例。其它实施例在下面的权利要求的范围之内。在一些情况下,在权利要求中记载的动作能够以不同的顺序来执行,并且仍然实现期望的结果。此外,附图中描述的过程不一定需要所示的特定顺序或顺序来实现期望的结果。在某些实施例中,多任务和并行处理可能是有利的。
受益于前述描述和相关联的附图中呈现的教导,这些实施例所属领域的技术人员将会想到本文阐述的本公开的许多修改和其他实施例。因此,应当理解,实施例不限于所公开的特定实施例,并且修改和其他实施例旨在包括在所附权利要求的范围内。尽管本文使用了特定的术语,但是它们仅在一般和描述的意义上使用,而不是为了限制的目的。
Claims (20)
1.一种管理存储器的方法,所述方法包括:
经由接口在主机设备和存储设备之间建立连接;和
通过由主机执行的应用对第二存储器执行数据操作,经由接口在与主机设备相关联的第一存储器和与存储设备相关联的第二存储器之间传递数据,
其中,所述存储设备包括通过对数据操作执行至少一个卸载功能来加速数据操作的处理元件。
2.根据权利要求1所述的方法,其中,所述接口包括应用编程接口API,并且所述主机设备使用与API相关联的至少一个命令来分配第二存储器。
3.根据权利要求2所述的方法,其中,所述主机设备使用细粒度分配方案或粗粒度分配方案来分配第二存储器。
4.根据权利要求1所述的方法,其中,所述方法还包括:寻址第二存储器,并且所述传递数据至少部分基于对第二存储器的寻址。
5.根据权利要求1所述的方法,其中,第二存储器包括安全地址空间,并且其中所述方法还包括主机设备基于所述安全地址空间执行一个或多个多租户操作。
6.根据权利要求1所述的方法,其中,所述存储设备包括启用非易失性快速存储器NVMe的存储设备,并且所述数据操作是使用分散聚合列表SGL来执行的。
7.根据权利要求1所述的方法,其中,执行数据操作还包括:存储设备将数据从与存储设备相关联的永久存储器传递到第二存储器。
8.根据权利要求1所述的方法,其中,传递数据还包括:主机设备向存储设备提供关于主机设备布局的信息。
9.根据权利要求1所述的方法,其中,传递数据还包括:存储设备向主机设备提供关于存储设备的用于读取和写入操作的存储器布局的信息。
10.根据权利要求1所述的方法,其中,建立连接包括发现和建立过程。
11.一种存储用于管理存储器的计算机可执行指令的非暂时性计算机可读介质,所述指令当被处理器执行时,使得处理器执行包括以下步骤的操作:
经由接口在主机设备和存储设备之间建立连接;和
通过由主机执行的应用对第二存储器执行数据操作,经由接口在与主机设备相关联的第一存储器和与存储设备相关联的第二存储器之间传递数据,
其中,所述存储设备包括通过对数据操作执行至少一个卸载功能来加速数据操作的处理元件。
12.根据权利要求11所述的非暂时性计算机可读介质,其中,所述接口包括应用编程接口API,并且所述主机设备使用与API相关联的至少一个命令来分配第二存储器。
13.根据权利要求11所述的非暂时性计算机可读介质,其中,所述计算机可执行指令还使得所述处理器执行包括寻址第二存储器的操作,并且所述传递数据至少部分基于对第二存储器的寻址。
14.根据权利要求11所述的非暂时性计算机可读介质,其中,第二存储器包括安全地址空间,并且其中主机设备基于所述安全地址空间执行一个或多个多租户操作。
15.根据权利要求11所述的非暂时性计算机可读介质,其中,所述存储设备包括启用非易失性快速存储器NVMe的存储设备,并且所述数据操作是使用分散聚合列表SGL来执行的。
16.根据权利要求11所述的非暂时性计算机可读介质,其中,所述数据操作还包括:存储设备将数据从与存储设备相关联的永久存储器传递到第二存储器。
17.一种用于管理存储器的系统,包括:
主机设备,包括第一存储器和应用;
存储设备,包括设备管理器、处理元件和第二存储器;
其中,所述系统存储计算机可执行指令,所述指令当被处理器执行时,使得所述处理器执行包括以下操作的操作:
经由接口在主机设备和存储设备之间建立连接;和
通过由主机执行的应用对第二存储器执行数据操作,经由接口在与主机设备相关联的第一存储器和与存储设备相关联的第二存储器之间传递数据,
其中,所述设备管理器配置所述处理元件通过对数据操作执行至少一个卸载功能来加速数据操作。
18.根据权利要求17所述的系统,其中,所述接口包括应用编程接口API,并且所述主机设备使用与API相关联的至少一个命令来分配第二存储器。
19.根据权利要求17所述的系统,其中,所述存储设备经由所述接口在与所述存储设备相关联的至少一个第三存储器和与所述存储设备相关联的第四存储器之间传递第二数据。
20.根据权利要求17所述的系统,其中,所述存储设备经由所述接口在与所述存储设备相关联的至少一个第三存储器和与主机设备相关联的第四存储器之间传递第二数据。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163142485P | 2021-01-27 | 2021-01-27 | |
US63/142,485 | 2021-01-27 | ||
US202163241525P | 2021-09-07 | 2021-09-07 | |
US63/241,525 | 2021-09-07 | ||
US17/495,810 US20220236902A1 (en) | 2021-01-27 | 2021-10-06 | Systems and methods for data transfer for computational storage devices |
US17/495,810 | 2021-10-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114816235A true CN114816235A (zh) | 2022-07-29 |
Family
ID=78770547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210030773.9A Pending CN114816235A (zh) | 2021-01-27 | 2022-01-12 | 用于计算存储设备的数据传递的系统和方法 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP4036725A1 (zh) |
CN (1) | CN114816235A (zh) |
AU (1) | AU2022200319A1 (zh) |
TW (1) | TW202230140A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4372541A1 (en) * | 2022-11-16 | 2024-05-22 | Samsung Electronics Co., Ltd. | System and method for polymorphic computing architecture for computational storage |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6976255B1 (en) * | 2000-03-28 | 2005-12-13 | International Business Machines Corporation | Storage isolation employing secured subspace facility |
US11188251B2 (en) * | 2017-12-19 | 2021-11-30 | Western Digital Technologies, Inc. | Partitioned non-volatile memory express protocol for controller memory buffer |
US11112972B2 (en) * | 2018-12-05 | 2021-09-07 | Samsung Electronics Co., Ltd. | System and method for accelerated data processing in SSDs |
KR20200072639A (ko) * | 2018-12-12 | 2020-06-23 | 삼성전자주식회사 | 저장 장치 및 그것의 동작 방법 |
-
2021
- 2021-12-03 EP EP21212137.0A patent/EP4036725A1/en active Pending
-
2022
- 2022-01-12 CN CN202210030773.9A patent/CN114816235A/zh active Pending
- 2022-01-18 TW TW111101939A patent/TW202230140A/zh unknown
- 2022-01-19 AU AU2022200319A patent/AU2022200319A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
AU2022200319A1 (en) | 2022-08-11 |
TW202230140A (zh) | 2022-08-01 |
KR20220108710A (ko) | 2022-08-03 |
EP4036725A1 (en) | 2022-08-03 |
AU2022200319A9 (en) | 2022-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220236902A1 (en) | Systems and methods for data transfer for computational storage devices | |
CN113742256A (zh) | 用于可扩展且一致性存储器装置的系统和方法 | |
CN113287286B (zh) | 通过rdma进行分布式存储节点中的输入/输出处理 | |
US20210397577A1 (en) | Systems and methods for communications within a storage chassis | |
US9002970B2 (en) | Remote direct memory access socket aggregation | |
US20230042551A1 (en) | Systems, methods, and apparatus for the management of device local memory | |
EP4086747A1 (en) | Systems, methods, and apparatus for computational storage functions | |
CN113553170A (zh) | 用于资源分配的系统、方法和装置 | |
CN114816235A (zh) | 用于计算存储设备的数据传递的系统和方法 | |
CN114880253A (zh) | 用于存储装置资源管理的系统和方法 | |
KR102715658B1 (ko) | 연산 저장 장치에 대한 데이터 전송을 위한 시스템 및 방법 | |
US20240176750A1 (en) | Systems, methods, and apparatus for memory protection for computational storage devices | |
KR20100122431A (ko) | 다수 개의 컴퓨팅 시스템 및/또는 환경들에서의 입출력 자원들의 공유 | |
EP4242820A1 (en) | Systems and methods for checking data alignment between applications, file systems, and computational storage devices | |
EP4350500A1 (en) | Systems, methods, and apparatus for transferring programs for computational storage devices | |
CN118114317A (zh) | 电子系统以及用于管理存储器的方法和装置 | |
EP4155895A1 (en) | Systems and methods for near-storage processing in solid state drives | |
EP4170495A1 (en) | Resource isolation in computational storage devices | |
CN116737063A (zh) | 用于存储器管理的方法和装置 | |
TW202431088A (zh) | 用於進行計算儲存的方法,用於對功能進行管理的系統及電腦可讀取媒體 |
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 |