CN109656473A - 桥接装置及提供接近存储计算的方法 - Google Patents
桥接装置及提供接近存储计算的方法 Download PDFInfo
- Publication number
- CN109656473A CN109656473A CN201810980128.7A CN201810980128A CN109656473A CN 109656473 A CN109656473 A CN 109656473A CN 201810980128 A CN201810980128 A CN 201810980128A CN 109656473 A CN109656473 A CN 109656473A
- Authority
- CN
- China
- Prior art keywords
- command
- data
- nvme
- bridge
- storage device
- 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.)
- Granted
Links
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
- G06F13/1673—Details of memory controller using buffers
-
- 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/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
-
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- 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/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- 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/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- 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/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- 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/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
-
- 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
- G06F13/4295—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation 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/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/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/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/0661—Format or protocol conversion 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
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
- H04L49/356—Switches specially adapted for specific applications for storage area networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9078—Intermediate storage in different physical parts of a node or terminal using an external memory or storage device
-
- 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/0008—High speed serial bus, e.g. Fiber channel
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Information Transfer Systems (AREA)
- Bus Control (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
- Internal Circuitry In Semiconductor Integrated Circuit Devices (AREA)
- Input Circuits Of Receivers And Coupling Of Receivers And Audio Equipment (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
Abstract
本发明提供一种桥接装置及提供接近存储计算的方法。所述桥接装置包括:第一接口,被配置成从在主机计算机上运行的应用接收第一组命令;一个或多个命令处理器,所述一个或多个命令处理器中的每一者被配置成对所述第一组命令进行转换并基于所述第一组命令产生第二组命令;第二接口,被配置成将所述第二组命令提供到数据存储装置;以及计算处理器,被配置成在运行所述应用的同时发出内部命令来以对于所述主机计算机而言不可知的方式在后台模式中从所述数据存储装置提取数据以及向所述数据存储装置写入数据。本发明的接近存储计算及存储器内加速使得能够以高效方式在后台对大量数据进行处理。
Description
[相关申请的交叉参考]
本申请主张在2017年10月11日提出申请的序列号为第62/571,064号及第62/571,061号的美国临时专利申请的权利及优先权,所述美国临时专利申请的公开内容全文并入本申请供参考。
技术领域
本公开大体来说涉及数据存储系统,且更具体来说,涉及一种使用桥接装置提供接近存储计算的系统及方法。
背景技术
固态驱动器(solid-state drive,SSD)正快速地取代传统的存储装置(例如,硬盘驱动器(hard disk drive,HDD)迅速变成现代数据中心基础设施的主要存储元件。SSD提供低延迟、高数据读取/写入吞吐量及对用户数据的可靠的持久存储。基于网络结构的非易失性存储快速(non-volatile memory express,NVMe)(NVMe over fabric,NVMe-oF)是新兴的技术,其使得成百上千的SSD能够通过网络结构网络(fabric network)(例如,以太网、光纤信道及无限宽频(Infiniband))进行连接。
NVMe-oF协议能够实现远程直接附接存储(remote direct-attached storage,rDAS),所述远程直接附接存储使得大量的NVMe SSD能够通过所建立的网络结构网络连接到远程主机。NVMe-oF协议还支持远程直接存储器存取(remote direct memory access,RDMA)以提供可靠的传送服务来通过网络载送NVMe命令、数据及响应。iWARP、RoCE v1及RoCE v2是提供RDMA服务的传送协议的一些实例。
使用分解数据存储装置(disaggregated data storage device)(例如,NVMe-oF-可兼容SSD,在本文中也称为NVMe-oF SSD或缩写为eSSD)的数据存储系统可为在主机计算机上运行的应用提供大的存储容量。所述应用可从分解数据存储装置收集大量数据(大数据)并对它们进行分析。
由于大数据处理的规模非常大,因此用于执行有意义的大数据挖掘的基础设施可能成本过高,需要大量计算资源、大的系统存储器、高带宽网络以及用于存储所述大数据的大的及高性能的数据存储装置。期望将一些数据处理挖掘任务从主机计算机卸载到数据存储装置并使从数据存储装置到主机计算机的数据移动最小化。
发明内容
根据一个实施例,一种桥接装置包括:第一接口,被配置成从在主机计算机上运行的应用接收第一组命令;一个或多个命令处理器,所述一个或多个命令处理器中的每一者被配置成对所述第一组命令进行转换并基于所述第一组命令产生第二组命令;第二接口,被配置成将所述第二组命令提供到数据存储装置;以及计算处理器,被配置成在运行所述应用的同时发出内部命令来以对于所述主机计算机而言不可知的方式在后台模式中从所述数据存储装置提取数据以及向所述数据存储装置写入数据。
根据另一个实施例,一种提供接近存储计算的方法包括:通过第一接口从在主机计算机上运行的应用接收第一组命令;对所述第一组命令进行转换并基于所述第一组命令产生第二组命令;通过第二接口将所述第二组命令提供到数据存储装置;以及在运行所述应用的同时,发出内部命令来以对于所述主机计算机而言不可知的方式在后台模式中从所述数据存储装置提取数据及向所述数据存储装置写入数据。
现将参照附图更具体地阐述包括实施方式的新颖细节及事件组合在内的以上及其他优选特征,且以上及其他优选特征在权利要求书中指出。应理解,本文所述具体系统及方法仅作为例示示出且不作为限制。如所属领域中的技术人员应理解,本文所述原理及特征可用于各种各样的实施例中,而此并不背离本公开的范围。
附图说明
作为本说明书的一部分而包括在内的各个附图示出当前优选的实施例,且与以上所给出的大体说明及以下所给出的对优选实施例的详细说明一起用于解释及教示本文所述原理。
图1示出根据一个实施例的示例性数据存储系统的方块图。
图2示出根据一个实施例的示例性NVMe-oF桥接装置的方块图。
图3示出根据一个实施例的示例性专用命令单元(special command unit,SCU)模块的方块图。
图4示出根据一个实施例的转换命令识别符的示例性过程。
图5是示出根据一个实施例的对管理提交队列及管理完成队列的共享的方块图。
图6示出根据一个实施例的远程主机与接近存储计算(near storage compute,NSC)处理器之间对输入/输出提交队列(input/output submission queue,I/O SQ)的共享。
图7是示出根据一个实施例的桥接装置内的本地数据移动的图。
各个图未必是按比例绘制的,且出于说明目的,在所有图中具有相似结构或功能的元件一般是由相同的参考编号表示的。各个图仅旨在方便说明本文所述各种实施例。各个图并不阐述本文所公开教示内容的每一方面且并不限制权利要求书的范围。
具体实施方式
本文所公开的特征及教示内容中的每一者可单独使用或结合其他特征及教示内容来使用以提供用于提供接近存储计算的桥接装置。参照附图更详细地阐述代表性实例,这些代表性实例单独地使用及组合地使用这些附加特征及教示内容中的许多特征及教示内容。此详细说明仅旨在向所属领域中的技术人员教示用于实践本教示内容的各个方面的进一步细节,而并非旨在限制权利要求书的范围。因此,在本详细说明中以上所公开特征的组合可能未必是在最广泛意义上实践本教示内容所必需的,而是相反,仅是为了具体阐述本教示内容的代表性的实例而教示。
在以下说明中,仅出于解释目的来阐述特定术语以提供对本公开的透彻理解。然而,对于所属领域中的技术人员而言将显而易见,这些特定细节并非是实践本公开的教示内容所必需的。
本文的详细说明的一些部分是以算法及对计算机存储器内的数据位进行的操作的符号表示法来呈现。这些算法描述及表示法被数据处理领域中的技术人员用于向所属领域中的其他技术人员有效地传达其工作的实质。算法在此处且一般而言均被视为能得到所期望结果的步骤的自洽序列(self-consistent sequence)。所述步骤需要对物理量进行实体操纵。通常(尽管未必一定如此),这些量会呈能够被存储、传输、组合、比较及以其他方式被操纵的电信号或磁信号的形式。已证明,主要出于通用的原因,将这些信号称为位、值、元件、符号、字符、项、数字等有时是便利的。
然而,应记住,这些用语中的所有用语及所有相似用语均与适宜的物理量相关联且仅作为应用于这些量的便利标记。除非通过阅读以下论述显而易见地另有具体说明,否则应理解,在本说明通篇中,使用例如“处理(processing)”、“计算(computing)”、“运算(calculating)”、“判断(determining)”、“显示(displaying)”等用语进行的论述是指计算机系统或相似电子计算装置的动作及进程,所述计算机系统或相似电子计算装置操纵在计算机系统的寄存器及存储器内被表示为物理(电子)量的数据并将所述数据转换成在计算机系统存储器或寄存器或者其他这种信息存储装置、信息传输装置或信息显示装置内被相似地表示为物理量的其他数据。
另外,代表性实例及附属权利要求的各个特征可以并未具体地及明确地枚举的方式加以组合以提供本教示内容的附加的有用实施例。还应明确注意,出于原始公开内容的目的以及出于限制所主张主题的目的,所有值范围或对实体的群组的指示均用于公开每个可能的中间值或中间实体。还应明确注意,图中所示各组件的尺寸及形状被设计成有助于理解如何实践本教示内容,而并非旨在限制实例中所示尺寸及形状。
本公开阐述一种用于将数据处理及挖掘任务从主机计算机卸载到存储装置以使从存储装置到分解数据存储系统中的主机计算机的数据移动最小化的系统及方法。根据一个实施例,本系统及方法允许在存储装置附近或存储装置内处理数据,这在本文中分别被称为接近存储计算(NSC)及存储器内加速(in-storage acceleration,ISA)。本系统及方法非常适用于使用NVMe-oF标准的分解存储装置。另外,本系统及方法可在直接附接NVMe至NVMe桥接装置(direct attached NVMe-to-NVMe bridge device)中使用。主机计算机可将自身的一些数据挖掘任务卸载到NVMe-oF SSD以通过NVMe-oF网络减小主机计算机与NVMe-oF SSD之间的数据移动,从而节省能量及网络基础设施成本。
图1示出根据一个实施例的示例性数据存储系统的方块图。数据存储系统100包括主机110及机架160(在本文中也称为eSSD机架),机架160含有一个或多个可兼容NVMe-oF的以太网SSD(eSSD)。举例来说,机架160包括24个eSSD或48个eSSD。机架160中的eSSD分别被表示为eSSD 170a到eSSD 170n(在本文中统称为eSSD 170)。主机110包括应用111、操作系统(operating system,OS)及文件系统(file system,FS)112以及NVMe-oF驱动器113。主机110的初启程序(initiator)(例如,应用111)可利用NVMe-oF驱动器113建立基于以太网150的与eSSD 170的NVMe-oF连接。机架160包括以太网交换机(Ethernet switch)161、基板管理控制器(baseboard management controller,BMC)162及外围组件互连快速(peripheralcomponent interconnect express,PCIe)交换机163。以太网交换机161通过中性面165提供与eSSD 170的以太网连接,且PCIe交换机163通过中性面165提供与eSSD 170的管理接口164。BMC 162可根据系统管理员给出的指令对eSSD 170进行编程。
以太网交换机161在主机110与eSSD 170之间提供网络连接性。以太网交换机161可具有大容量(例如,100Gbps)上行链路以连接到一个或多个主机。以太网交换机161还具有用于连接到eSSD 170的多个较低容量(例如,25Gbps)下行链路。举例来说,以太网交换机161含有12个100Gbps上行链路以及24个或48个25Gbps下行链路。以太网交换机161可具有连接到BMC 162的专用配置/管理端口。
BMC 162管理机架160的内部组件,包括以太网交换机161、PCIe交换机163及eSSD170。BMC 162可支持用于系统管理的PCIe和/或系统管理总线(system management bus,SMBus)接口。BMC 162可对eSSD 170进行配置并对以太网交换机161进行编程。
类似于基于服务器的全闪存阵列(all-flash array,AFA),eSSD 170一起容纳在无服务器的壳体(即,机架160)中,所述无服务器的壳体含有多个eSSD、用于将所述多个eSSD与外界主机进行连接的网络交换机(即,以太网交换机161)以及用于管理所述多个eSSD的BMC 162。BMC 162处置引导程序(boot)并控制通往eSSD装置的路径。与完善的x86中央处理器(computer processing unit,CPU)不同,BMC 162可能无法完成CPU可处置的所有这些任务,且因此具有最低限度的壳体管理功能。BMC 162通过SMBus或PCIe总线保持对所连接的eSSD 170以及相关硬件进行关于连接性、状况、温度、日志及错误方面的健康情况检查。
eSSD 170提供高性能及大容量数据存储解决方案。NVMe-oF协议使成百上千的分解eSSD 170能够以远程直接附接存储(rDAS)方式附接到在主机计算机110上运行的应用111。本系统及方法有利于处理及移动被收集并存储在分解eSSD中的大量数据。使用传统的主机计算机的这种数据处理可能成本非常高昂。
在主机计算机110上运行的应用111可通过提取存储在整个网络(例如,以太网150)上的分解数据存储装置(例如,eSSD 170)中的数据来执行处理(例如,机器学习),处理数据,并将数据处理的结果存储回数据存储装置。包括数据提取、处理及存储的这种进程可能非常低效,会消耗主机计算机上过量的能量资源、计算资源、网络资源及数据存储资源。另外,所述进程可能会对主机计算机上的计算资源及存储器资源施加高成本要求。
本系统及方法能够使用接近存储计算或存储器内加速来实现后台数据处理。接近存储计算及存储器内加速使得能够以高效方式在后台对大量数据进行处理。根据一个实施例,与其中存储有待处理数据的数据存储装置耦合的桥接装置可有利于所耦合的数据存储装置附近的后台数据处理。在一个实施例中,桥接装置集成在数据存储装置中。在其他实施例中,桥接装置是连接到数据存储装置的单独的装置。应理解,用语“附近(near)”表示数据处理可不仅在单独装置中进行而且还可在数据存储装置自身内进行,而此并不背离本公开的范围。在一些实施例中,在本文中可将用语“接近存储(near-storage)”与“存储器内(in-storage)”互换使用。
所述桥接装置可具有一个或多个硬件组件,所述一个或多个硬件组件可采用对于应用而言透明的方式来构建对存储在数据存储装置中的数据的接近存储计算。桥接装置可为NVMe-oF至NVMe桥接装置及NVMe至NVMe桥接装置中的一者。与NVMe-oF标准兼容的NVMe-oF至NVMe桥接装置可通过网络结构网络接收NVMe-oF命令并为后端数据存储装置提供PCIe接口。与NVMe标准兼容的NVMe至NVMe桥接装置可通过PCIe总线接收NVMe命令并在数据存储装置附近执行数据处理。在下文中,为方便起见,阐述eSSD作为数据存储装置的实例;然而,应理解,可使用其他类型的数据存储装置及分布式数据存储系统,而此并不背离本公开的范围。在以下实例中,eSSD被阐述为包括桥接装置及后端SSD二者的装置;然而应理解,数据存储装置(后端SSD)可连接到分立的桥接装置以形成eSSD,或者eSSD可指代桥接装置自身或在其他实施例中可指代能够执行桥接装置的接近计算功能的装置。
本桥接装置可提取、处理及修改存储在后端SSD上的数据并将经处理数据存储回后端SSD而不会影响主机计算机到SSD的正常数据存取操作。在一个实施例中,桥接装置可具有系统存储器以维持一对输入/输出(I/O)提交队列及输入/输出完成队列并使用所述I/O队列对在后台模式中对后端SSD执行数据存取。桥接装置可共享I/O提交队列及I/O完成队列以处理来自主机计算机的命令及来自桥接装置的接近存储处理器的内部命令二者。另外,桥接装置的系统存储器可维持一对管理队列,所述一对管理队列包括管理提交队列及管理完成队列,其可在主机计算机与NSC处理器之间共享。
根据一个实施例,桥接装置可采用NVMe-oF至NVMe协议桥接或NVMe至NVMe协议桥接,以使得NSC处理器能够存取存储在后端SSD上的数据。例如机器学习(machinelearning,ML)算法等各种进程可在主机计算机上运行以采用对于主机计算机而言不可知的方式在后台模式中执行数据处理。运行机器学习算法的主机计算机可驻留在桥接装置外部但仍可通过桥接装置间接地对存储在eSSD中的数据进行存取。在一些实施例中,桥接装置和/或主机计算机可与eSSD驻留在同一机架中但驻留在不同的槽位(例如,U.2槽位)中,或者它们可在实体上驻留在机架外部。尽管以下结合图式加以解释的实例主要阐述NVMe-oF桥接装置(也被称为NVMe-oF至NVMe桥接装置),然而它们同等地适用于NVMe至NVMe桥接装置。
桥接装置提供接口来接收目的地为后端SSD的主机命令(例如,NVMe-oF命令)。桥接装置将所接收到的主机命令识别符(command identifier,CID)映射到本地标签,产生去往存储有待处理数据的后端SSD的NVMe命令,所述NVMe命令包含新的CID。后端SSD产生与NVMe命令对应的完成条目(completion entry,CE)并将所述完成条目发送到桥接装置。接着,桥接装置对完成条目进行剖析并将完成条目智能地转发到桥接装置的NSC处理器。
独立于从主机起始的桥接命令,桥接装置的NSC处理器可采用对于主机计算机而言不可知的方式发出NVMe命令到后端SSD。通过使用共享的I/O队列及管理队列,桥接装置可同时地有效处理来自主机计算机与NSC处理器二者的I/O操作而不会对彼此造成干扰。NSC处理器能够在维持其对主机命令进行桥接的能力的同时对存储在后端SSD中的数据进行存取,此使得机器学习应用能够在接近存储计算装置(即,桥接装置)中运行。NSC处理器为机器学习应用提供能量、资源及具有成本效益的数据处理。
NVMe-oF桥接装置可在一侧上提供与远程初启程序(例如,在主机计算机上运行的机器学习应用)的NVMe-oF接口且可在另一侧上提供与后端SSD的基于标准PCIe的NVMe接口。远程初启程序经由NVMe-oF接口通过以太网连接到NVMe-oF桥接装置。NVMe-oF桥接装置可将NVMe-oF协议转换成NVMe协议以连接到后端SSD。
另一方面,NVMe桥接装置可提供与远程初启程序及后端SSD的标准PCIe接口。远程初启程序通过PCIe总线连接到NVMe桥接装置。NVMe桥接装置可将NVMe主机命令转换成具有不同的命令识别符的另一个NVMe命令以使后端SSD将NVMe命令看成其仿佛是来自NVMe桥接装置而非来自主机计算机一样。
根据一个实施例,桥接装置的NVMe-oF至NVMe桥接功能或NVMe至NVMe桥接功能可实施在现场可编程门阵列(field-programmable gate array,FPGA)或应用专用集成电路(application-specific integrated chip,ASIC)中。作为另外一种选择,所述桥接功能可实施在固件程序或软件程序中。
图2示出根据一个实施例的示例性NVMe-oF桥接装置的方块图。NVMe-oF桥接装置200包括接近存储计算(NSC)处理器211、系统存储器212、命令剖析器213、命令分类器214、及命令处理器215、PCIe侧命令提交队列(PCIe-side command submission queue,PSQ)模块216、PCIe应用(PCIe application,PAPP)/根复合体模块(root complex module)217、NVMe-oF响应器218、PCIe完成条目剖析器219以及PCIe侧命令完成队列(PCIe-sidecommand completion queue,PCQ)模块220。NVMe-oF桥接装置200通过PCIe总线耦合到后端SSD 250。在主机计算机上运行的远程初启程序通过网络结构网络(在本实例中为以太网)将NVMe-oF命令发送到后端SSD 250。
NVMe-oF桥接装置200的命令剖析器213拦截目的地为后端SSD 250的NVMe-oF命令,对所述NVMe-oF命令进行剖析,并将经剖析的NVMe-oF命令发送到命令分类器214。举例来说,命令剖析器213抽取并剖析各种命令,包括但不限于命令操作码(opcode,OPC)、命令识别符(CID)、命名空间识别符(namespace identifier,NSID)、逻辑块数目(number oflogical block,NLB)及起始逻辑块地址(start logical block address,SLBA)。命令分类器214将经剖析的NVMe-oF命令分类成不同的群组并将经分类的NVMe-oF命令发送到命令处理器215。举例来说,命令分类器214对管理命令(admin command)、网络结构命令、读取命令、写入命令及专用命令进行分类。不同的命令或不同的NVMe-oF命令群组可使用命令处理器215的专用命令处理单元来进行处理。举例来说,命令处理器215包括专用命令单元(special command unit,SCU)231、网络结构命令单元(fabrics command unit,FCU)232、管理命令单元(admin command unit,ACU)233、写入命令单元(write command unit,WCU)234及读取命令单元(read command unit,RCU)235。
这些命令处理单元231至235将NVMe-oF命令转换成NVMe命令并将它们放置到PSQ模块216中。根据一个实施例,PSQ模块216构建命令提交队列并维持现用的提交队列的头指针(head pointer)及尾指针(tail pointer)不变。PSQ模块216可检测现用的提交队列并产生指示提交队列是满的还是空的的条件旗标。当将NVMe命令放置到提交队列中时,PSQ模块216可产生门铃事件(提交队列门铃)并通过PAPP模块217将门铃事件发送到后端SSD 250。PAPP模块217构建通往后端SSD 250的PCIe传送以通过PCIe总线发送门铃事件。PAPP模块217支持标准PCIe交易命令,所述标准PCIe交易命令包括NVMe-oF桥接装置200所需的配置(config)读取、配置写入、存储器写入及存储器读取。另外,PAPP模块217支持NVMe-oF桥接装置200的PCIe端点所需的PCIe存储器读取交易及PCIe存储器写入交易。换句话说,PAPP模块217构建并支持NVMe-oF桥接装置200的PCIe根复合体功能,从而使NVMe-oF桥接装置200成为PCIe根复合体装置。
PCQ模块220为后端SSD 250构建命令完成队列。后端SSD 250可为由后端SSD 250处理的每一个NVMe命令写入命令完成条目(CE)。通常,在命令提交队列与命令完成队列之间存在一对一映射。PCIe完成条目剖析器219剖析从PCQ模块220接收到的完成条目(CE)并对所述完成条目进行解释。PCIe完成条目剖析器219将经剖析的完成条目转发到产生对应的NVMe命令的适宜的命令处理单元231至235。适宜的命令处理单元231至235产生与从PCIe完成条目剖析器219接收到的PCIe完成条目对应的NVMe-oF完成条目(或NVMe完成条目)并将所述NVMe-oF完成条目转发到NVMe-oF响应器218以通过NVMe-oF接口(例如,以太网)将NVMe-oF完成条目发回到远程初启程序。NVMe-oF完成条目可位于去往远程初启程序的读取数据传输或写入数据传输之前。作为NVMe-oF命令桥接的一部分,命令处理单元231至235有利于在后端SSD 250与远程初启程序之间进行数据传输。
响应于门铃事件,后端SSD 250提取从PSQ模块216接收到的NVMe命令并执行所述NVMe命令。作为命令执行的一部分,后端SSD 250可执行数据传输。这种数据传输可往来于系统存储器212或在NVMe-oF桥接装置200中可用的芯片上存储器(on-chip memory)或芯片外存储器(off-chipmemory)之间进行。
图3示出根据一个实施例的示例性专用命令单元模块的方块图。专用命令单元231构建与NSC处理器211的接口以向后端SSD 250发出专用命令。NSC处理器211可使用此接口在后台中从后端SSD 250提取数据或者将数据或结果写入到后端SSD 250。
FCU 232是处置用于NVMe-oF协议的网络结构(fabrics)类型命令的网络结构命令单元。网络结构命令的实例包括但不限于连接(Connect)、性质获得(Property Get)、性质设定(Property Set)等。ACU 233是管理命令单元。管理命令的实例包括但不限于识别(Identify)、获得日志页面(Get LogPage)等。WCU 234是处置写入命令的写入命令单元。RCU 235是处置读取命令的读取命令单元。
参照图3,SCU 231包括入站(inbound,IB)先进先出(first input firstoutput,FIFO)332、出站(outbound,OB)先进先出333及用于NVMe命令的缓冲器334。IBFIFO 332及OBFIFO 333是由NSC处理器211使用的用于向后端SSD 250发出专用命令的结构。NSC处理器211创建NVMe命令,将NVMe命令放置在消息中并将所述消息写入到OBFIFO 333。SCU 231读取消息并将NVMe命令发送到后端SSD 250。当后端SSD 250以完成条目作出响应时,SCU 231将完成条目放置在消息中并将消息写入到IBFIFO 332中。NSC处理器211从IBFIFO 332读取完成条目以进行进一步处理。
图4示出根据一个实施例的转换命令识别符(CID)的示例性过程。桥接装置接收含有16位命令识别符(CID)(401)的传入命令(NVMe-oF命令或NVMe命令)。16位CID及提交队列(SQ)数目可唯一地识别现用命令。给定命令的完成条目含有相同的16位CID,以使完成条目可通过反向查找来与对应的NVMe命令正确地关联,此将在下文中详细论述。
在NVMe-oF桥接装置的情形中,NVMe-oF桥接装置接收NVMe-oF命令,并创建用于NVMe-oF命令的环境并且记录本地命令标签(在本文中也被称为本地标签)。在一个实施例中,NVM-oF桥接装置对查找表(lookup table,LUT)(402)进行查找以及将接收到的16位CID映射到12位本地标签(403)。如果查找表已满,则可从执行过程暂停传入命令,从而将现用命令的数目限制为查找表的容量(2^12)。所述12位本地标签还用作去往后端SSD的传出NVMe命令的16位NVMe CID 410的一部分。经转换的NVMe命令含有新构建的16位NVMe CID410。根据一个实施例,NVMe CID 410包括两个字段:4位命令处理单元ID(CU_ID)(404)及12位本地标签(405)。12位本地标签与4位CU_ID的分离字段仅为实例,且应理解,这两个字段在其他实施方式中可具有不同的大小,而此并不背离本公开的范围。在本实例中,NVMe CID410可使用以下映射方案来构建:
NVMe CID[15:0]={CU_ID[3:0],Local_Tag[11:0]}。
命令处理单元ID(CU_ID)可根据处理传入NVME-oF命令的桥接装置的命令处理单元来确定。表1示出用于命令处理单元ID(CU_ID)的示例性编码方案。
表1
命令单元 | CU_ID |
FCU | 0 |
ACU | 1 |
WCU | 2 |
RCU | 3 |
SCU | 4 |
NVMe CID的12位逻辑标签用于映射到在原始NVME-oF命令中接收到的NVMe-oFCID。除SCU 231之外的命令处理单元的12位本地标签可以如下方式获得:
Local_Tag[11:0]=LUT(NVMe-oF CID[15:0]),查找表LUT将16位NVMe-oF CID映射到12位本地标签。查找表LUT是由命令分类器214维持的动态实体。当接收到主机命令时,对查找表LUT中的条目进行分配。12位条目索引是12位本地标签。原始的16位CID存储在对应的索引处。当命令完成时,将查找表LUT中的条目解除分配。SCU 231的12位本地标签可以如下方式获得:
Local_Tag[11:0]=LUT(NSC CID[15:0]),其中NSC CID是NSC处理器在内部指派的命令ID。NSC-CID是指由NSC处理器发出的命令中所含有的16位CID值。用于确定本地标签的以上方程式被用于将来自从主机或NSC处理器接收到的命令的CID映射到12位本地标签。
在对12位本地标签进行查找之后,NVMe CID的其余4位CU_ID有助于执行从后端SSD 250接收到的NVMe完成条目(CE)的反向查找。NVMe完成条目用于将NVMe CID与桥接装置的各处理单元中产生对应的NVMe命令的处理单元相关联。参照图2,PCIe完成条目剖析器219从通过PAPP模块217从后端SSD 250接收到的NVMe CID提取4位CU_ID,并确定完成条目所属的处理单元。一旦将所接收到的NVMe完成条目递送到适宜的命令处理单元,PCIe完成条目剖析器219便执行另一反向查找以将12位本地标签映射到原始NVMe-oF CID。在SCU231的情形中,这种反向查找将使用NSC-CID而不使用如上所述NVMe-oF CID。
通过利用这种NVMe-oF至NVMe映射(或NVMe至NVMe映射),NVMe-oF桥接装置200可支持多个命令处理单元向后端SSD 250发出NVMe命令。举例来说,NVMe-oF桥接装置200对于给定的提交队列SQ(12位深度的本地标签)而言可支持最多达4096(212)个现用NVMe命令(即,队列深度)。SCU 231使用这种机制来通过NSC处理器向后端SSD 250发出各种NVMe命令而不会干涉主机命令。举例来说,NSC处理器通过发出NVMe读取命令来从后端SSD提取数据块,处理所提取的数据,并通过发出NVMe写入命令将结果存储回后端SSD。应注意,可使用NVMe-CID的不同大小的CU_ID及本地标签分量,且这种NVMe-CID配置可提供不同的最大队列深度。
图5是示出根据一个实施例的对管理提交队列及管理完成队列的共享的方块图。后端SSD可与本桥接装置共享包括管理SQ 531及管理CQ 532的管理队列对。管理SQ 531用于向后端SSD发出管理命令。在远程主机501上运行的应用可为需要对后端SSD中的数据存储装置进行存取的数据中心应用(例如,机器学习应用)。NVMe-oF桥接装置的NVMe-oF至NVMe命令转换器521(例如,图2所示FCU 232及ACU 233)将从远程初启程序接收到的NVMe-oF管理命令转换成NVMe管理命令并将NVMe管理命令放置到管理SQ 531(例如,图2所示PSQ模块216)中。NVMe-oF桥接装置的NSC处理器511也通过管理SQ 531向后端SSD发出管理命令。
NVMe-oF命令处理单元(例如,FCU、ACU、WCU及RCU)中的每一者可具有唯一的4位CU_ID。因此,可通过相同的管理SQ 531从NVMe-oF主机以及NSC处理器511二者发出管理命令。假设NSC处理器511仅发出不会影响主机可见用户数据的数据完整性或后端SSD的控制数据结构的管理命令。NSC处理器511只可对主机数据进行读取或监视且只对自身拥有的数据进行修改。在一些实施例中,远程主机501与NSC处理器511可通过数据同步来共享存储在后端SSD中的数据。
图6示出根据一个实施例的远程主机与NSC处理器之间对I/O SQ的共享。不同于图5所示管理SQ 531,可存在大量的I/O SQ。I/O SQ可用于发出数据命令,例如读取及写入。I/O命令将数据移动到远程初启程序及后端SSD或者从远程初启程序及后端SSD移出数据,反之亦然。通过使用不同的CU_ID值,SCU 231可将NSC处理器的I/O命令放置到与用于主机I/O命令的I/O SQ相同的I/O SQ中。在另一个实施例中,可使用用于NSC处理器的一组专用的I/O SQ来处理来自NSC处理器611的I/O命令。图6示出其中对NSC处理器611及来自远程初启程序的I/O命令使用两个单独的I/O命令提交队列及I/O命令完成队列的实例。
在任一种情形中,PCIe完成条目剖析器使用CU_ID来将从后端SSD接收到的完成条目适当地路由到桥接装置的适宜的命令处理单元。假设NSC处理器611发出不会对主机数据进行修改的I/O命令。首先,NSC处理器611将读取由主机601写入的数据以对用于本地处理的读取数据进行处理及分析。由NSC处理器611产生的经修改数据或分析结果可被写入到对于主机601而言可存取或不可存取的单独的存储区域。在一个实施例中,NSC处理器611与在主机601上运行的远程初启程序可高度地同步以共享相同的数据及存储命名空间。
图7是示出根据一个实施例的桥接装置内的本地数据移动的图。桥接装置700包括写入数据缓冲器751及读取数据缓冲器752。根据一个实施例,桥接装置700的系统存储器(例如,图3所示系统存储器212)包括写入数据缓冲器751及读取数据缓冲器752。
NSC处理器711在后台对SSD数据进行扫描及分析。NSC处理器711可周期性地从后端SSD 750提取用户数据并对所述用户数据进行分析。NSC处理器711可将经修改数据和/或数据处理的结果存储回后端SSD 750。这些操作需要往来于后端SSD的数据移动。NSC NVMe命令规定这种数据传输的细节。
在一个实施例中,NSC处理器711使用NSC NVMe命令操作码来表示NVMe命令是写入命令还是读取命令。NSC NVMe命令还可表示写入数据缓冲器751或读取数据缓冲器752的相关联的逻辑块地址(logical block address,LBA)。对于NSC写入命令而言,数据从桥接装置700的系统存储器移动到后端SSD 750。对于NSC读取命令而言,数据从后端SSD 750移动到桥接装置700的系统存储器。对于主机命令的数据传输而言,可使用写入数据缓冲器751或读取数据缓冲器752中单独的一组缓冲器地址而不将这两种数据移动混合。
当NSC处理器711发出NSC NVMe命令来对存储在后端SSD 750中的数据进行处理时,NSC处理器711首先分配读取数据缓冲器752中具有期望大小的空间。NSC处理器711接着使用所分配的读取缓冲器空间的指针来创建NVMe读取命令。NSC处理器711在后端SSD 750中植入适宜的Namespace.LBA地址以读取存储在后端SSD 750中的数据。NSC处理器711接着将所构建的NSC-NVMe读取命令放置到桥接装置700的适宜的I/O SQ中。后端SSD 750通过PCIe总线提取NSC-NVMe读取命令并使用读取数据缓冲器752中的所分配的读取缓冲器空间的指针来对系统存储器执行所请求数据的DMA写入操作。后端SSD 750接着向桥接装置700发送NSC-NVMe读取命令完成条目。桥接装置700可将NSC-NVMe读取完成条目智能地转发到NSC处理器711。此时,NSC处理器711继续处理或分析所提取的数据。
NSC处理器711可对所提取的数据进行修改。作为数据处理的结果,NSC处理器711也可产生新数据。在某一时刻,NSC处理器711可通过对后端SSD 750执行写入操作来保持这种数据。NSC处理器711使用需要被写入到后端SSD 750的数据的地址来构建NSC-NVMe写入命令。NSC处理器711接着插入适宜的Namespace.LBA存储位置,数据将在所述Namespace.LBA存储位置处被写入到后端SSD 750内。NSC处理器711接着将新构建的NSC-NVMe写入命令放置到桥接装置700的I/O SQ中。后端SSD 750通过PCIe总线提取NSC-NVMe写入命令并执行所述NSC-NVMe写入命令。后端SSD 750执行DMA操作以将数据从系统存储器写入到在NSC-NVMe写入命令中规定的后端SSD地址。一旦已完成数据DMA操作,后端SSD 750便会发送NSC-NVMe写入命令的完成条目。桥接装置700可将NSC-NVMe写入命令完成条目智能地转发到NSC处理器711。此时,NSC处理器可将写入数据缓冲器751中的写入数据丢弃。
根据一个实施例,一种桥接装置包括:第一接口,被配置成从在主机计算机上运行的应用接收第一组命令;一个或多个命令处理器,所述一个或多个命令处理器中的每一者被配置成对所述第一组命令进行转换并基于所述第一组命令产生第二组命令;第二接口,被配置成将所述第二组命令提供到数据存储装置;以及计算处理器,被配置成在运行所述应用的同时发出内部命令来以对于所述主机计算机而言不可知的方式在后台模式中从所述数据存储装置提取数据以及向所述数据存储装置写入数据。
所述数据存储装置可为与非易失性存储快速(NVMe)标准兼容的固态驱动器。
所述数据存储装置可为与基于网络结构的非易失性存储快速(NVMe-oF)标准兼容的固态驱动器。
所述第一接口可为位于网络结构网络上的NVMe-oF接口,且至所述数据存储装置的所述第二接口可为PCIe接口。所述第一组命令可包括NVMe-oF命令,且所述第二组命令可包括非易失性存储快速命令。
所述网络结构网络可选自以太网、光纤信道及无限宽频。
所述桥接装置还可包括命令剖析器及命令分类器。所述命令剖析器可被配置成剖析所述第一组命令并产生经剖析命令,且所述命令分类器可被配置成对所述经剖析命令进行分类并将经分类命令提供到所述一个或多个命令处理器。
所述一个或多个命令处理器可包括专用命令单元,所述专用命令单元被配置成处理由所述计算处理器发出的所述第二组命令的命令子集。
所述应用可为机器学习(ML)应用。
所述第二组命令中的每一者可包括命令识别符,所述命令识别符包括命令处理单元识别符及本地标签,所述命令处理单元识别符与所述一个或多个命令处理器对应,所述本地标签通过查找表被映射到所述第一组命令。
所述桥接装置还可包括用于对去往所述数据存储装置的所述第二组命令进行排队的提交队列及用于对从所述数据存储装置接收的完成条目进行排队的完成队列。
根据另一个实施例,一种提供接近存储计算的方法包括:通过第一接口从在主机计算机上运行的应用接收第一组命令;对所述第一组命令进行转换并基于所述第一组命令产生第二组命令;通过第二接口将所述第二组命令提供到数据存储装置;以及在运行所述应用的同时,发出内部命令来以对于所述主机计算机而言不可知的方式在后台模式中从所述数据存储装置提取数据及向所述数据存储装置写入数据。
所述数据存储装置可为与非易失性存储快速(NVMe)标准兼容的固态驱动器。
所述数据存储装置可为与基于网络结构的非易失性存储快速(NVMe-oF)标准兼容的固态驱动器。
所述第一接口可为位于网络结构网络上的NVMe-oF接口,且至所述数据存储装置的所述第二接口可为PCIe接口。所述第一组命令可包括NVMe-oF命令,且所述第二组命令可包括NVMe命令。
所述网络结构网络可选自以太网、光纤信道及无限宽频。
所述提供接近存储计算的方法还可包括:剖析所述第一组命令并产生经剖析命令,以及对所述经剖析命令进行分类并将经分类命令提供到一个或多个命令处理器。
所述一个或多个命令处理器可包括专用命令单元,所述专用命令单元被配置成处理由计算处理器发出的所述第二组命令的命令子集。
所述应用可为机器学习(ML)应用。
所述第二组命令中的每一者可包括命令识别符,所述命令识别符包括命令处理单元识别符及本地标签,所述命令处理单元识别符与所述一个或多个命令处理器对应,所述本地标签通过查找表被映射到所述第一组命令。
所述提供接近存储计算的方法还可包括:提供用于对去往所述数据存储装置的所述第二组命令进行排队的提交队列及用于对从所述数据存储装置接收的完成条目进行排队的完成队列。
上文已阐述以上示例性实施例来示出实施用于提供接近存储计算的桥接装置的各种实施例。所属领域中的普通技术人员将会联想到对所公开示例性实施例的各种修改及相对于所公开示例性实施例的不同之处。在以上权利要求中阐述了旨在落于本发明范围内的主题。
Claims (20)
1.一种桥接装置,其特征在于,包括:
第一接口,被配置成从在主机计算机上运行的应用接收第一组命令;
一个或多个命令处理器,所述一个或多个命令处理器中的每一者被配置成对所述第一组命令进行转换并基于所述第一组命令产生第二组命令;
第二接口,被配置成将所述第二组命令提供到数据存储装置;以及
计算处理器,被配置成在运行所述应用的同时发出内部命令来以对于所述主机计算机而言不可知的方式在后台模式中从所述数据存储装置提取数据以及向所述数据存储装置写入数据。
2.根据权利要求1所述的桥接装置,其特征在于,所述数据存储装置是与非易失性存储快速标准兼容的固态驱动器。
3.根据权利要求1所述的桥接装置,其特征在于,所述数据存储装置是与基于网络结构的非易失性存储快速标准兼容的固态驱动器。
4.根据权利要求3所述的桥接装置,其特征在于,所述第一接口是位于网络结构网络上的基于网络结构的非易失性存储快速接口,且至所述数据存储装置的所述第二接口是外围组件互连快速接口,且其中所述第一组命令包括基于网络结构的非易失性存储快速命令,且所述第二组命令包括非易失性存储快速命令。
5.根据权利要求4所述的桥接装置,其特征在于,所述网络结构网络选自以太网、光纤信道及无限宽频。
6.根据权利要求1所述的桥接装置,其特征在于,还包括命令剖析器及命令分类器,其中所述命令剖析器被配置成剖析所述第一组命令并产生经剖析命令,且所述命令分类器被配置成对所述经剖析命令进行分类并将经分类命令提供到所述一个或多个命令处理器。
7.根据权利要求1所述的桥接装置,其特征在于,所述一个或多个命令处理器包括专用命令单元,所述专用命令单元被配置成处理由所述计算处理器发出的所述第二组命令的命令子集。
8.根据权利要求1所述的桥接装置,其特征在于,所述应用是机器学习应用。
9.根据权利要求1所述的桥接装置,其特征在于,所述第二组命令中的每一者包括命令识别符,所述命令识别符包括命令处理单元识别符及本地标签,所述命令处理单元识别符与所述一个或多个命令处理器对应,所述本地标签通过查找表被映射到所述第一组命令。
10.根据权利要求1所述的桥接装置,其特征在于,还包括用于对去往所述数据存储装置的所述第二组命令进行排队的提交队列及用于对从所述数据存储装置接收的完成条目进行排队的完成队列。
11.一种提供接近存储计算的方法,其特征在于,包括:
通过第一接口从在主机计算机上运行的应用接收第一组命令;
对所述第一组命令进行转换并基于所述第一组命令产生第二组命令;
通过第二接口将所述第二组命令提供到数据存储装置;以及
在运行所述应用的同时,发出内部命令来以对于所述主机计算机而言不可知的方式在后台模式中从所述数据存储装置提取数据及向所述数据存储装置写入数据。
12.根据权利要求11所述的提供接近存储计算的方法,其特征在于,所述数据存储装置是与非易失性存储快速标准兼容的固态驱动器。
13.根据权利要求11所述的提供接近存储计算的方法,其特征在于,所述数据存储装置是与基于网络结构的非易失性存储快速标准兼容的固态驱动器。
14.根据权利要求13所述的提供接近存储计算的方法,其特征在于,所述第一接口是位于网络结构网络上的基于网络结构的非易失性存储快速接口,且至所述数据存储装置的所述第二接口是外围组件互连快速接口,且其中所述第一组命令包括基于网络结构的非易失性存储快速命令,且所述第二组命令包括非易失性存储快速命令。
15.根据权利要求14所述的提供接近存储计算的方法,其特征在于,所述网络结构网络选自以太网、光纤信道及无限宽频。
16.根据权利要求11所述的提供接近存储计算的方法,其特征在于,还包括:
剖析所述第一组命令并产生经剖析命令,以及
对所述经剖析命令进行分类并将经分类命令提供到一个或多个命令处理器。
17.根据权利要求16所述的提供接近存储计算的方法,其特征在于,所述一个或多个命令处理器包括专用命令单元,所述专用命令单元被配置成处理由计算处理器发出的所述第二组命令的命令子集。
18.根据权利要求11所述的提供接近存储计算的方法,其特征在于,所述应用是机器学习应用。
19.根据权利要求16所述的提供接近存储计算的方法,其特征在于,所述第二组命令中的每一者包括命令识别符,所述命令识别符包括命令处理单元识别符及本地标签,所述命令处理单元识别符与所述一个或多个命令处理器对应,所述本地标签通过查找表被映射到所述第一组命令。
20.根据权利要求11所述的提供接近存储计算的方法,其特征在于,还包括:提供用于对去往所述数据存储装置的所述第二组命令进行排队的提交队列及用于对从所述数据存储装置接收的完成条目进行排队的完成队列。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762571064P | 2017-10-11 | 2017-10-11 | |
US201762571061P | 2017-10-11 | 2017-10-11 | |
US62/571,061 | 2017-10-11 | ||
US62/571,064 | 2017-10-11 | ||
US15/944,682 US10394746B2 (en) | 2017-10-11 | 2018-04-03 | System and method for providing near storage compute using a bridge device |
US15/944,682 | 2018-04-03 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109656473A true CN109656473A (zh) | 2019-04-19 |
CN109656473B CN109656473B (zh) | 2021-07-02 |
Family
ID=65993255
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810911803.0A Pending CN109656843A (zh) | 2017-10-11 | 2018-08-10 | 数据存储装置及桥接装置 |
CN201810980128.7A Active CN109656473B (zh) | 2017-10-11 | 2018-08-27 | 桥接装置及提供接近存储计算的方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810911803.0A Pending CN109656843A (zh) | 2017-10-11 | 2018-08-10 | 数据存储装置及桥接装置 |
Country Status (5)
Country | Link |
---|---|
US (3) | US10719474B2 (zh) |
JP (2) | JP7141902B2 (zh) |
KR (2) | KR102513924B1 (zh) |
CN (2) | CN109656843A (zh) |
TW (2) | TWI780168B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112131166A (zh) * | 2019-06-24 | 2020-12-25 | 三星电子株式会社 | 轻量桥接器电路及其操作方法 |
CN113051206A (zh) * | 2020-05-04 | 2021-06-29 | 威盛电子股份有限公司 | 桥接电路与计算机系统 |
US11809799B2 (en) | 2019-06-24 | 2023-11-07 | Samsung Electronics Co., Ltd. | Systems and methods for multi PF emulation using VFs in SSD controller |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10466916B2 (en) * | 2015-04-28 | 2019-11-05 | American Megatrends International, Llc | System and method of dynamic write protect of storage devices exposed by baseboard management controller (BMC) |
US10445018B2 (en) * | 2016-09-09 | 2019-10-15 | Toshiba Memory Corporation | Switch and memory device |
US10719474B2 (en) | 2017-10-11 | 2020-07-21 | Samsung Electronics Co., Ltd. | System and method for providing in-storage acceleration (ISA) in data storage devices |
US10761775B2 (en) * | 2018-02-09 | 2020-09-01 | Samsung Electronics Co., Ltd. | System and method for NVMe inter command association in SSD storage using a bridge device |
US10585819B2 (en) * | 2018-03-05 | 2020-03-10 | Samsung Electronics Co., Ltd. | SSD architecture for FPGA based acceleration |
KR102559581B1 (ko) | 2018-05-23 | 2023-07-25 | 삼성전자주식회사 | 재구성 가능 로직을 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
US11436023B2 (en) * | 2018-05-31 | 2022-09-06 | Pure Storage, Inc. | Mechanism for updating host file system and flash translation layer based on underlying NAND technology |
US11188496B2 (en) * | 2018-09-13 | 2021-11-30 | Toshiba Memory Corporation | System and method for storing data using ethernet drives and ethernet open-channel drives |
US11366610B2 (en) | 2018-12-20 | 2022-06-21 | Marvell Asia Pte Ltd | Solid-state drive with initiator mode |
US11204819B2 (en) | 2018-12-21 | 2021-12-21 | Samsung Electronics Co., Ltd. | System and method for offloading application functions to a device |
US10938730B2 (en) * | 2019-01-29 | 2021-03-02 | EMC IP Holding Company LLC | Data transmission techniques between systems having different communication speeds |
WO2020183444A1 (en) | 2019-03-14 | 2020-09-17 | Marvell Asia Pte, Ltd. | Transferring data between solid state drives (ssds) via a connection between the ssds |
CN113767361A (zh) * | 2019-03-14 | 2021-12-07 | 马维尔亚洲私人有限公司 | 启用以太网的固态驱动器(ssd) |
WO2020183246A2 (en) * | 2019-03-14 | 2020-09-17 | Marvell Asia Pte, Ltd. | Termination of non-volatile memory networking messages at the drive level |
US11079958B2 (en) | 2019-04-12 | 2021-08-03 | Intel Corporation | Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator |
CN110008154B (zh) * | 2019-04-16 | 2020-08-21 | 北京智芯微电子科技有限公司 | 提高处理器与访存总线时序的方法及内存属性预测器 |
US11973650B2 (en) * | 2019-04-25 | 2024-04-30 | Liqid Inc. | Multi-protocol communication fabric control |
JP2021086583A (ja) | 2019-11-29 | 2021-06-03 | キヤノン株式会社 | 情報処理装置、制御装置および制御装置の制御方法 |
US20210166188A1 (en) * | 2019-12-03 | 2021-06-03 | International Business Machines Corporation | Computation of supply-chain metrics |
KR20210080009A (ko) * | 2019-12-20 | 2021-06-30 | 삼성전자주식회사 | 가속기, 가속기의 동작 방법 및 가속기를 포함한 디바이스 |
US11687279B2 (en) | 2020-01-27 | 2023-06-27 | Samsung Electronics Co., Ltd. | Latency and throughput centric reconfigurable storage device |
US11210034B2 (en) * | 2020-03-02 | 2021-12-28 | Silicon Motion, Inc. | Method and apparatus for performing high availability management of all flash array server |
CN112882966A (zh) * | 2020-03-24 | 2021-06-01 | 威盛电子股份有限公司 | 运算装置 |
TWI811620B (zh) * | 2020-03-24 | 2023-08-11 | 威盛電子股份有限公司 | 運算裝置與資料處理方法 |
US11941433B2 (en) | 2020-03-24 | 2024-03-26 | Via Technologies Inc. | Computing apparatus and data processing method for offloading data processing of data processing task from at least one general purpose processor |
CN111459864B (zh) * | 2020-04-02 | 2021-11-30 | 深圳朗田亩半导体科技有限公司 | 一种存储器件及其制造方法 |
US11778055B2 (en) * | 2020-07-13 | 2023-10-03 | Samsung Electronics Co., Ltd. | Systems and methods for storage-efficient sensors |
KR102656104B1 (ko) * | 2020-07-23 | 2024-04-11 | 주식회사 멤레이 | 비휘발성 메모리 제어 장치 및 비휘발성 메모리 장치 |
JP2022057870A (ja) | 2020-09-30 | 2022-04-11 | キヤノン株式会社 | 制御装置および情報処理システムに関する。 |
KR20220067795A (ko) | 2020-11-18 | 2022-05-25 | 삼성전자주식회사 | 스토리지 장치 및 이를 포함하는 스토리지 시스템 |
US11442776B2 (en) | 2020-12-11 | 2022-09-13 | Liqid Inc. | Execution job compute unit composition in computing clusters |
JP2022143959A (ja) | 2021-03-18 | 2022-10-03 | キオクシア株式会社 | メモリシステム、方法及びデータ処理システム |
US20220300165A1 (en) * | 2021-03-22 | 2022-09-22 | Google Llc | Cooperative Storage Architecture |
KR102365312B1 (ko) * | 2021-06-17 | 2022-02-23 | 삼성전자주식회사 | 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법 |
EP4105771A1 (en) * | 2021-06-17 | 2022-12-21 | Samsung Electronics Co., Ltd. | Storage controller, computational storage device, and operational method of computational storage device |
US11966343B2 (en) * | 2021-07-19 | 2024-04-23 | Samsung Electronics Co., Ltd. | Universal mechanism to access and control a computational device |
US11880568B2 (en) | 2021-11-17 | 2024-01-23 | Seagate Technology Llc | On demand configuration of FPGA interfaces |
US11809323B1 (en) | 2022-06-22 | 2023-11-07 | Seagate Technology Llc | Maintaining real-time cache coherency during distributed computational functions |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101089808A (zh) * | 2005-03-29 | 2007-12-19 | 李春柏 | 电脑主机的延伸装置的工作方法 |
CN101221552A (zh) * | 2007-01-09 | 2008-07-16 | 国际商业机器公司 | 隔离i/o适配器单元的系统和方法 |
CN101882122A (zh) * | 2009-05-07 | 2010-11-10 | 瀚邦科技股份有限公司 | 数据通信系统及桥接器 |
US20110119464A1 (en) * | 2009-11-13 | 2011-05-19 | Western Digital Technologies, Inc. | Data storage system comprising a mapping bridge for aligning host block size with physical block size of a data storage device |
CN105068953A (zh) * | 2014-05-07 | 2015-11-18 | Hgst荷兰公司 | 用于对等高速外围组件互联存储传输的系统和方法 |
US20170286363A1 (en) * | 2016-04-04 | 2017-10-05 | Marvell World Trade Ltd. | Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7526619B1 (en) * | 2006-09-05 | 2009-04-28 | Nvidia Corporation | Method for providing emulated flexible magnetic storage medium using network storage services |
JP2008282308A (ja) | 2007-05-14 | 2008-11-20 | Nec Electronics Corp | 協調検証装置、協調検証方法、協調検証プログラム |
US7702662B2 (en) * | 2007-05-16 | 2010-04-20 | International Business Machines Corporation | Method and system for handling reallocated blocks in a file system |
US20090251867A1 (en) | 2007-10-09 | 2009-10-08 | Sharma Viswa N | Reconfigurable, modularized fpga-based amc module |
US8825940B1 (en) * | 2008-12-02 | 2014-09-02 | Siliconsystems, Inc. | Architecture for optimizing execution of storage access commands |
US9262303B2 (en) | 2008-12-05 | 2016-02-16 | Altera Corporation | Automated semiconductor design flaw detection system |
KR101587549B1 (ko) * | 2009-02-12 | 2016-01-21 | 삼성전자주식회사 | 폴리머 및 이를 포함하는 폴리머 액츄에터 |
US8219776B2 (en) * | 2009-09-23 | 2012-07-10 | Lsi Corporation | Logical-to-physical address translation for solid state disks |
US8880573B2 (en) | 2010-10-12 | 2014-11-04 | Dolby Laboratories Licensing Corporation | System and method of dynamic precision operations |
US8995981B1 (en) * | 2010-12-13 | 2015-03-31 | Csr Technology Inc. | Systems and methods for remote control adaptive configuration |
US8819328B2 (en) * | 2010-12-30 | 2014-08-26 | Sandisk Technologies Inc. | Controller and method for performing background operations |
US8700834B2 (en) | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
US20140059278A1 (en) * | 2011-11-14 | 2014-02-27 | Lsi Corporation | Storage device firmware and manufacturing software |
US9009703B2 (en) | 2012-05-10 | 2015-04-14 | International Business Machines Corporation | Sharing reconfigurable computing devices between workloads |
EP2888818A1 (en) | 2012-08-21 | 2015-07-01 | Missing Link Electronics Inc. | Configurable mixed-signal systems |
US20140071855A1 (en) | 2012-09-10 | 2014-03-13 | Accedian Networks Inc. | Transparent auto-negotiation of ethernet |
US9298654B2 (en) * | 2013-03-15 | 2016-03-29 | International Business Machines Corporation | Local bypass in memory computing |
US9311230B2 (en) | 2013-04-23 | 2016-04-12 | Globalfoundries Inc. | Local direct storage class memory access |
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 |
CN110275840B (zh) * | 2014-02-23 | 2024-03-15 | 拉姆伯斯公司 | 在存储器接口上的分布式过程执行和文件系统 |
AU2015229802A1 (en) | 2014-03-08 | 2016-10-06 | Diamanti, Inc. | Methods and systems for converged networking and storage |
US9959203B2 (en) * | 2014-06-23 | 2018-05-01 | Google Llc | Managing storage devices |
WO2015200313A1 (en) * | 2014-06-23 | 2015-12-30 | Liqid Inc. | Modular switched fabric for data storage systems |
US9846660B2 (en) * | 2014-11-12 | 2017-12-19 | Xilinx, Inc. | Heterogeneous multiprocessor platform targeting programmable integrated circuits |
US9977734B2 (en) * | 2014-12-11 | 2018-05-22 | Toshiba Memory Corporation | Information processing device, non-transitory computer readable recording medium, and information processing system |
JP6329318B2 (ja) * | 2015-02-25 | 2018-05-23 | 株式会社日立製作所 | 情報処理装置 |
US20160259754A1 (en) | 2015-03-02 | 2016-09-08 | Samsung Electronics Co., Ltd. | Hard disk drive form factor solid state drive multi-card adapter |
US9619396B2 (en) * | 2015-03-27 | 2017-04-11 | Intel Corporation | Two level memory full line writes |
US10416915B2 (en) * | 2015-05-15 | 2019-09-17 | ScaleFlux | Assisting data deduplication through in-memory computation |
US9891935B2 (en) * | 2015-08-13 | 2018-02-13 | Altera Corporation | Application-based dynamic heterogeneous many-core systems and methods |
CN108702374A (zh) * | 2015-09-02 | 2018-10-23 | 科内克斯实验室公司 | 用于以太网类型网络上的存储器和I/O的远程访问的NVM Express控制器 |
US10613756B2 (en) | 2015-09-03 | 2020-04-07 | Qualcomm Incorporated | Hardware-accelerated storage compression |
US9824173B1 (en) * | 2015-09-11 | 2017-11-21 | Xilinx, Inc. | Software development-based compilation flow for hardware implementation |
US9864828B1 (en) * | 2015-09-17 | 2018-01-09 | Xilinx, Inc. | Hardware acceleration device handoff for using programmable integrated circuits as hardware accelerators |
US10180850B1 (en) * | 2015-11-03 | 2019-01-15 | Xilinx, Inc. | Emulating applications that use hardware acceleration |
US10447728B1 (en) * | 2015-12-10 | 2019-10-15 | Fireeye, Inc. | Technique for protecting guest processes using a layered virtualization architecture |
KR102491651B1 (ko) * | 2015-12-14 | 2023-01-26 | 삼성전자주식회사 | 비휘발성 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 동작 방법 |
US9934173B1 (en) * | 2016-02-24 | 2018-04-03 | Xilinx, Inc. | Pseudo cut-through architecture between non-volatile memory storage and remote hosts over a fabric |
KR101923661B1 (ko) * | 2016-04-04 | 2018-11-29 | 주식회사 맴레이 | 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스 |
US20170323305A1 (en) * | 2016-05-03 | 2017-11-09 | Anantha Pradeep | Mechanism for securing legal interactions |
US10210123B2 (en) * | 2016-07-26 | 2019-02-19 | Samsung Electronics Co., Ltd. | System and method for supporting multi-path and/or multi-mode NMVe over fabrics devices |
US10620855B2 (en) * | 2016-09-06 | 2020-04-14 | Samsung Electronics Co., Ltd. | System and method for authenticating critical operations on solid-state drives |
US9703494B1 (en) | 2016-09-26 | 2017-07-11 | Intel Corporation | Method and apparatus for protecting lower page data during programming in NAND flash |
US11586565B2 (en) * | 2016-10-03 | 2023-02-21 | Samsung Electronics Co., Ltd. | Non-volatile storage system and data storage access protocol for non-volatile storage devices |
US10545861B2 (en) * | 2016-10-04 | 2020-01-28 | Pure Storage, Inc. | Distributed integrated high-speed solid-state non-volatile random-access memory |
US10656877B2 (en) * | 2016-12-06 | 2020-05-19 | Nutanix, Inc. | Virtual storage controller |
JP2018141448A (ja) | 2017-02-28 | 2018-09-13 | ダイキン工業株式会社 | 圧縮機 |
US10579471B2 (en) * | 2017-03-02 | 2020-03-03 | Toshiba Memory Corporation | Storage device and error correction method for storage device |
US11249779B2 (en) * | 2017-09-01 | 2022-02-15 | Intel Corporation | Accelerator interconnect assignments for virtual environments |
US10719474B2 (en) * | 2017-10-11 | 2020-07-21 | Samsung Electronics Co., Ltd. | System and method for providing in-storage acceleration (ISA) in data storage devices |
US10558777B1 (en) * | 2017-11-22 | 2020-02-11 | Xilinx, Inc. | Method of enabling a partial reconfiguration in an integrated circuit device |
US11296921B2 (en) * | 2017-12-03 | 2022-04-05 | Intel Corporation | Out-of-band management of FPGA bitstreams |
US10761951B2 (en) * | 2017-12-28 | 2020-09-01 | Intel Corporation | FPGA based functional safety control logic (FFSCL) |
JP7075067B2 (ja) * | 2018-06-22 | 2022-05-25 | 日本電気株式会社 | ストレージ装置 |
-
2018
- 2018-03-14 US US15/921,400 patent/US10719474B2/en active Active
- 2018-04-03 US US15/944,682 patent/US10394746B2/en active Active
- 2018-06-11 KR KR1020180067003A patent/KR102513924B1/ko active IP Right Grant
- 2018-06-26 TW TW107121944A patent/TWI780168B/zh active
- 2018-07-12 KR KR1020180080936A patent/KR102388893B1/ko active IP Right Grant
- 2018-08-10 CN CN201810911803.0A patent/CN109656843A/zh active Pending
- 2018-08-23 TW TW107129423A patent/TWI751374B/zh active
- 2018-08-27 CN CN201810980128.7A patent/CN109656473B/zh active Active
- 2018-09-26 JP JP2018179913A patent/JP7141902B2/ja active Active
- 2018-10-04 JP JP2018189015A patent/JP7137430B2/ja active Active
-
2020
- 2020-07-14 US US16/928,711 patent/US11487696B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101089808A (zh) * | 2005-03-29 | 2007-12-19 | 李春柏 | 电脑主机的延伸装置的工作方法 |
CN101221552A (zh) * | 2007-01-09 | 2008-07-16 | 国际商业机器公司 | 隔离i/o适配器单元的系统和方法 |
CN101882122A (zh) * | 2009-05-07 | 2010-11-10 | 瀚邦科技股份有限公司 | 数据通信系统及桥接器 |
US20110119464A1 (en) * | 2009-11-13 | 2011-05-19 | Western Digital Technologies, Inc. | Data storage system comprising a mapping bridge for aligning host block size with physical block size of a data storage device |
CN105068953A (zh) * | 2014-05-07 | 2015-11-18 | Hgst荷兰公司 | 用于对等高速外围组件互联存储传输的系统和方法 |
US20170286363A1 (en) * | 2016-04-04 | 2017-10-05 | Marvell World Trade Ltd. | Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112131166A (zh) * | 2019-06-24 | 2020-12-25 | 三星电子株式会社 | 轻量桥接器电路及其操作方法 |
US11809799B2 (en) | 2019-06-24 | 2023-11-07 | Samsung Electronics Co., Ltd. | Systems and methods for multi PF emulation using VFs in SSD controller |
CN113051206A (zh) * | 2020-05-04 | 2021-06-29 | 威盛电子股份有限公司 | 桥接电路与计算机系统 |
Also Published As
Publication number | Publication date |
---|---|
JP2019075109A (ja) | 2019-05-16 |
KR102388893B1 (ko) | 2022-04-21 |
US20230016328A1 (en) | 2023-01-19 |
JP2019075104A (ja) | 2019-05-16 |
TW201933081A (zh) | 2019-08-16 |
JP7137430B2 (ja) | 2022-09-14 |
US20190107956A1 (en) | 2019-04-11 |
US20190108158A1 (en) | 2019-04-11 |
CN109656843A (zh) | 2019-04-19 |
KR102513924B1 (ko) | 2023-03-27 |
US10394746B2 (en) | 2019-08-27 |
TWI780168B (zh) | 2022-10-11 |
JP7141902B2 (ja) | 2022-09-26 |
KR20190040884A (ko) | 2019-04-19 |
KR20190040886A (ko) | 2019-04-19 |
TWI751374B (zh) | 2022-01-01 |
CN109656473B (zh) | 2021-07-02 |
US11487696B2 (en) | 2022-11-01 |
TW201933080A (zh) | 2019-08-16 |
US10719474B2 (en) | 2020-07-21 |
US20200341933A1 (en) | 2020-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109656473A (zh) | 桥接装置及提供接近存储计算的方法 | |
CN110830392B (zh) | 启用存储介质上的虚拟功能 | |
CN105993009B (zh) | 通过非透明桥向PCIe集群中的计算资源传送MSI-X中断的方法和装置 | |
CN108776576B (zh) | 用于聚合的网上NVMe装置的聚合存储方法 | |
CN107209681B (zh) | 一种存储设备访问方法、装置和系统 | |
US10498645B2 (en) | Live migration of virtual machines using virtual bridges in a multi-root input-output virtualization blade chassis | |
JP5362980B2 (ja) | データ処理システム内で第1のホスト・システムと第2のホスト・システムとの間で通信するための方法、プログラム、およびシステム(ソケット接続および共用メモリを使用するホスト・システム間の通信のためのシステムおよび方法) | |
US9740409B2 (en) | Virtualized storage systems | |
US9996484B1 (en) | Hardware acceleration for software emulation of PCI express compliant devices | |
CN108694021A (zh) | 使用基板管理控制器配置存储设备的系统和方法 | |
US20080147898A1 (en) | System and method for configuring an endpoint based on specified valid combinations of functions | |
US20080148295A1 (en) | System and method for migration of single root stateless virtual functions | |
CN113253919A (zh) | 多功能存储装置和处理消息的方法 | |
US20170220506A1 (en) | Modular Software Defined Storage Technology | |
CN103828332B (zh) | 数据处理方法、装置、存储控制器和机柜 | |
RU2641251C1 (ru) | Способ и устройство для автоматического обмена сигналами между встроенными мультиплатами центрального процессора | |
CN110532208B (zh) | 一种数据处理方法、接口转换结构及数据处理设备 | |
GB2536515A (en) | Computer system, and a computer system control method | |
US9172586B1 (en) | Method and system for writing tag and data | |
US20180365185A1 (en) | Peripheral component interconnect express (pcie) switching for multi-host computing system deployments | |
US9753883B2 (en) | Network interface device that maps host bus writes of configuration information for virtual NIDs into a small transactional memory | |
CN114417373A (zh) | 一种NVMe-oF用户态客户端的数据访问方法和装置 | |
CN109478171A (zh) | 提高openfabrics环境中的吞吐量 | |
US9052839B2 (en) | Virtual storage apparatus providing a plurality of real storage apparatuses | |
US9396023B1 (en) | Methods and systems for parallel distributed computation |
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 |