CN109656843A - 数据存储装置及桥接装置 - Google Patents

数据存储装置及桥接装置 Download PDF

Info

Publication number
CN109656843A
CN109656843A CN201810911803.0A CN201810911803A CN109656843A CN 109656843 A CN109656843 A CN 109656843A CN 201810911803 A CN201810911803 A CN 201810911803A CN 109656843 A CN109656843 A CN 109656843A
Authority
CN
China
Prior art keywords
data
slot position
application
data storage
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.)
Pending
Application number
CN201810911803.0A
Other languages
English (en)
Inventor
瑞姆达斯·卡佳瑞
佛瑞德·沃里
姚学斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN109656843A publication Critical patent/CN109656843A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4295Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/356Switches specially adapted for specific applications for storage area networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9078Intermediate storage in different physical parts of a node or terminal using an external memory or storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0008High speed serial bus, e.g. Fiber channel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (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)
  • Input Circuits Of Receivers And Coupling Of Receivers And Audio Equipment (AREA)
  • Internal Circuitry In Semiconductor Integrated Circuit Devices (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)的数据存储系统可为在主机计算机上运行的应用提供大的存储容量。所述应用可从分解数据存储装置收集大量数据(大数据)并对它们进行分析。
由于大数据处理的规模非常大,因此用于执行有意义的大数据挖掘的基础设施可能成本过高,需要大量计算资源、大的系统存储器、高带宽网络以及大的及高性能的数据存储。期望将一些数据处理挖掘任务从主机计算机卸载到数据存储装置并使从数据存储装置到主机计算机的数据移动最小化。
发明内容
根据一个实施例,一种数据存储装置包括:数据存储介质;处理器,包括多个处理器核心;多个应用加速黑盒子(application acceleration black-box,AABB)槽位,包括可重新配置的逻辑块、互连线及存储器;主机接口,从在远程主机计算机上运行的远程应用接收主机命令,其中所述主机命令包括图像文件,所述图像文件包括第一寄存器传输级(register-transfer level,RTL)位流及第一固件驱动器图像;以及配置控制器,将所述第一寄存器传输级位流下载到所述多个应用加速黑盒子槽位中的应用加速黑盒子槽位并对所述应用加速黑盒子槽位进行重新配置,并且将所述第一固件驱动器图像加载到所述处理器的处理器核心。被加载有所述第一固件驱动器图像的所述处理器核心运行所述远程应用的数据加速进程以存取被存储在所述数据存储介质中的数据并使用下载在所述应用加速黑盒子槽位中的所述第一寄存器传输级位流来处理被存储在所述数据存储介质中的所述数据。
根据另一个实施例,一种桥接装置包括:数据存储接口,存取被存储在数据存储装置的数据存储介质中的数据;处理器,包括多个处理器核心;多个应用加速黑盒子(AABB)槽位,包括可重新配置的逻辑块、互连线及存储器;主机接口,从在远程主机计算机上运行的远程应用接收主机命令,其中所述主机命令包括图像文件,所述图像文件包括第一寄存器传输级(RTL)位流及第一固件驱动器图像;以及配置控制器,将所述第一寄存器传输级位流下载到所述多个应用加速黑盒子槽位中的应用加速黑盒子槽位并对所述应用加速黑盒子槽位进行重新配置,并且将所述第一固件驱动器图像加载到所述处理器的所述处理器核心。被加载有所述第一固件驱动器图像的所述处理器核心运行所述远程应用的数据加速进程,以通过所述数据存储接口存取被存储在所述数据存储装置的所述数据存储介质中的所述数据并使用下载在所述应用加速黑盒子槽位中的所述第一寄存器传输级位流来处理所述数据。
现将参照附图更具体地阐述包括实施方式的新颖细节及事件组合在内的以上及其他优选特征,且以上及其他优选特征在权利要求书中指出。应理解,本文所述具体系统及方法仅作为例示示出且不作为限制。如所属领域中的技术人员应理解,本文所述原理及特征可用于各种各样的实施例中,而这并不背离本公开的范围。
附图说明
作为本说明书的一部分而包括在内的各个附图示出当前优选的实施例,且与以上所给出的大体说明及以下所给出的对优选实施例的详细说明一起用于解释及教示本文所述原理。
图1示出根据一个实施例的示例性数据存储系统的方块图。
图2示出根据一个实施例的示例性NVMe-oF桥接装置的方块图。
图3示出根据一个实施例的示例性应用加速黑盒子(AABB)图像的数据结构。
图4示出根据一个实施例的构建在桥接装置中的示例性存储器内加速(in-storage acceleration,ISA)平台连同后端SSD的图。
图5示出根据一个实施例的构建在数据存储装置中的示例性ISA平台的图。
图6示出根据一个实施例的AABB下载命令格式。
图7示出根据一个实施例的AABB槽位管理命令的实例。
图8示出根据一个实施例的AABB Comm命令的示例性格式。
图9示出根据一个实施例的支持AABB的NVMe-oF SSD中的示例性命令及数据流的图。
图10示出根据另一个实施例的支持AABB的NVMe SSD中的示例性命令及数据流的图。
各个图未必是按比例绘制,且出于说明目的,在所有图中具有相似结构或功能的元件一般是由相同的参考编号表示。各个图仅旨在方便说明本文所述各种实施例。各个图并不阐述本文所公开教示内容的每一方面且并不限制权利要求书的范围。
具体实施方式
本文所公开的特征及教示内容中的每一者可单独使用或结合其他特征及教示内容来使用以在数据存储装置(特别是NVMe装置及NVMe-oF装置)中提供存储器内加速。参照附图更详细地阐述代表性实例,这些代表性实例单独地使用及组合地使用这些附加特征及教示内容中的许多特征及教示内容。此详细说明仅旨在向所属领域中的技术人员教示用于实践本教示内容的各个方面的进一步细节,而并非旨在限制权利要求书的范围。因此,在本详细说明中以上所公开特征的组合可能未必是在最广泛意义上实践本教示内容所必需的,而是相反,仅是为了具体阐述本教示内容的代表性的实例而教示。
在以下说明中,仅出于解释目的来阐述特定术语以提供对本公开的透彻理解。然而,对于所属领域中的技术人员而言将显而易见,这些特定细节并非是实践本公开的教示内容所必需的。
本文的详细说明的一些部分是以算法及对计算机存储器内的数据位进行的操作的符号表示法来呈现。这些算法描述及表示法被数据处理领域中的技术人员用于向所属领域中的其他技术人员有效地传达其工作的实质。算法在此处且一般而言均被视为能得到所期望结果的步骤的自洽序列(self-consistent sequence)。所述步骤需要对物理量进行实体操纵。通常(尽管未必一定如此),这些量会呈能够被存储、传输、组合、比较及以其他方式被操纵的电信号或磁信号的形式。已证明,主要出于通用的原因,将这些信号称为位、值、元件、符号、字符、项、数字等有时是便利的。
然而,应记住,这些用语中的所有用语及所有相似用语均与适宜的物理量相关联且仅作为应用于这些量的便利标记。除非通过阅读以下论述显而易见地另有具体说明,否则应理解,在本说明通篇中,使用例如“处理(processing)”、“计算(computing)”、“运算(calculating)”、“判断(determining)”、“显示(displaying)”等用语进行的论述是指计算机系统或相似电子计算装置的动作及进程,所述计算机系统或相似电子计算装置操纵在计算机系统的寄存器及存储器内被表示为物理(电子)量的数据并将所述数据转换成在计算机系统存储器或寄存器或者其他这种信息存储装置、信息传输装置或信息显示装置内被相似地表示为物理量的其他数据。
另外,代表性实例及从属权利要求的各个特征可以并未具体地及明确地枚举的方式加以组合以提供本教示内容的附加的有用实施例。还应明确注意,出于原始公开内容的目的以及出于限制所主张主题的目的,所有值范围或对实体的群组的指示均用于公开每个可能的中间值或中间实体。还应明确注意,图中所示各组件的尺寸及形状被设计成有助于理解如何实践本教示内容,而并非旨在限制实例中所示尺寸及形状。
图1示出根据一个实施例的示例性数据存储系统的方块图。数据存储系统100包括主机110及机架160(在本文中也称为eSSD机架),机架160含有一个或多个可兼容NVMe-oF的以太网SSD(eSSD)。举例来说,机架160包括24个eSSD或48个eSSD。机架160中的eSSD分别被表示为eSSD170a及eSSD170b到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及外围组件互连快速(peripheral component interconnect express,PCIe)交换机163。以太网交换机161通过中性面165提供与eSSD 170的以太网连接,且PCIe交换机163通过中性面165提供与eSSD170的管理接口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 170中的大量数据。使用传统的主机计算机的这种数据处理可能成本非常高昂。
在主机计算机110上运行的应用111可通过提取存储在整个网络(例如,以太网150)上的分解数据存储装置(例如,eSSD 170)中的数据来执行处理(例如,机器学习),处理数据,并将数据处理的结果存储回数据存储装置。包括数据提取、处理及存储的这种进程可能非常低效,会消耗主机计算机上过量的能量资源、计算资源、网络资源及数据存储资源。另外,所述进程可能会对主机计算机上的计算资源及存储器资源施加高成本要求。
图2示出根据一个实施例的示例性NVMe-oF桥接装置的方块图。桥接装置可集成在数据存储装置中,或者桥接装置可指代连接到数据存储装置的单独的(及分立的)装置。在以下实例中,eSSD被阐述为包括桥接装置及后端SSD两者的装置;然而,应理解,数据存储装置(后端SSD)可连接到分立的桥接装置以形成eSSD,或者eSSD可指代桥接装置本身或在其他实施例中可指代能够执行桥接装置的接近计算功能的装置。
NVMe-oF桥接装置200包括接近存储计算(near-storage compute,NSC)处理器211、系统存储器212、命令剖析器213、命令分类器214、及命令处理器215、PCIe侧命令提交队列(PCIe-side command submission queue,PSQ)模块216、PCIe应用(PCIeapplication,PAPP)/根复合体模块217、NVMe-oF响应器218、PCIe完成条目(completionentry,CE)剖析器219以及PCIe侧命令完成队列(PCIe-side command completion queue,PCQ)模块220。NVMe-oF桥接装置200通过PCIe总线耦合到后端SSD(例如,NVMe SSD)250。在主机计算机上运行的远程初启程序通过网络结构网络(在本实例中为以太网)将NVMe-oF命令发送到后端SSD 250。
NVMe-oF桥接装置200的命令剖析器213拦截目的地为后端SSD 250的NVMe-oF命令,对所述NVMe-oF命令进行剖析,并将经剖析的NVMe-oF命令发送到命令分类器214。举例来说,命令剖析器213抽取并剖析各种命令,包括但不限于命令操作码(opcode,OPC)、命令识别符(command identifier,CID)、命名空间识别符(namespace identifier,NSID)、逻辑块数目(number of logical block,NLB)及起始逻辑块地址(start logical blockaddress,SLBA)。命令分类器214将经剖析的NVMe-oF命令分类成不同的群组并将经分类的NVMe-oF命令发送到命令处理器215。举例来说,命令分类器214对管理命令(admincommand)、网络结构命令、读取命令、写入命令及专用命令进行分类。不同的命令或不同的NVMe-oF命令群组可使用命令处理器215的专用命令处理单元来进行处理。举例来说,命令处理器215包括专用命令单元(special command unit,SCU)231、网络结构命令单元(fabrics command unit,FCU)232、管理命令单元(admin command unit,ACU)233、读取命令单元(read command unit,RCU)234及写入命令单元(write command unit,WCU)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 CE剖析器219剖析从PCQ模块220接收到的完成条目(CE)并对所述完成条目进行解释。PCIe CE剖析器219将经剖析的CE转发到产生对应的NVMe命令的适宜的命令处理单元231至235。适宜的命令处理单元231至235产生与从PCIe CE剖析器219接收到的PCIe CE对应的NVMe-oF CE(或NVMe CE)并将所述NVMe-oF CE转发到NVMe-oF响应器218以通过NVMe-oF接口(例如,以太网)将NVMe-oF CE发回到远程初启程序。NVMe-oF CE可位于往来于远程初启程序的读取数据传输或写入数据传输之前。作为NVMe-oF命令桥接的一部分,命令处理单元231至235有利于在后端SSD 250与远程初启程序之间进行数据传输。
响应于门铃事件,后端SSD 250提取从PSQ模块216接收到的NVMe命令并执行所述NVMe命令。作为命令执行的一部分,后端SSD 250可执行数据传输。这种数据传输可往来于系统存储器212或在NVMe-oF桥接装置200中可用的芯片上存储器(on-chip memory)或芯片外存储器(off-chip memory)之间进行。
数据存储装置(例如,NVMe SSD及NVMe-oF SSD)可存储大量数据。在数据存储装置附近或在数据存储装置中进行数据处理比将数据从数据存储装置移动到远程主机计算机并在远程主机计算机内处理数据更高效且更具成本效益。
本公开阐述用于在数据存储装置(例如,存储将要处理的实际目标数据的NVMeSSD及NVMe-oF SSD)中对远程应用的数据处理进行加速的存储器内加速(in-storageacceleration,ISA)平台。举例来说,可在NVMe SSD或NVMe-oF SSD(例如,图1所示eSSD170)的控制器中构建本ISA平台。在另一个实例中,可在桥接装置(例如,图2所示NVME-oF桥接装置200)的控制器中构建本ISA平台。就此而言,本文中所用的用语“存储器内加速”不仅表示存储目标数据的实际数据存储装置中的数据处理,而且还表示在放置在数据存储装置附近以提供与数据存储装置的接口(或协议转换)的桥接装置中的数据处理。
涉及大量数据处理的数据中心主机应用可因使用本ISA平台而大大受益。可将执行重负荷数据处理及操纵的主机应用的功能卸载到数据存储装置或桥接装置以执行存储器附近加速或存储器内加速。本ISA平台可从能量及带宽的角度提供高效的数据处理解决方案,同时降低计算及存储基础设施的总成本。
根据一个实施例,在远程主机计算机上运行的数据密集型应用(例如,机器学习(ML)应用、大数据应用)可将一些数据处理功能卸载到数据存储装置和/或桥接装置。数据存储装置或桥接装置可通过将存储实际目标数据的数据存储装置与运行数据密集型应用的远程主机计算机之间的数据传输最小化来加速数据处理,所述数据密集型应用需要对存储在数据存储装置中的目标数据进行存取。本ISA平台通过将数据存储装置与运行数据密集型应用的远程主机计算机之间的数据移动最小化来使得用户数据能够在更靠近数据存储装置的位置处或在数据存储装置处更高效地进行处理。因此,本ISA平台可实现更好的应用性能,同时降低对主机计算机进行的计算、联网及存储基础设施所涉及的成本。
本ISA平台适用于各种类型的数据存储装置。然而,为便于解释起见,在下文中示出NVMe SSD或NVMe-oF SSD作为数据存储装置的实例。
根据一个实施例,执行数据处理加速的数据存储装置或桥接装置包括基于现场可编程门阵列(field programmable gate array,FPGA)的可重新配置的逻辑块。基于FPGA的可重新配置的逻辑块与NVMe/NVMe-oF SSD的控制器(在本文中也称为NVMe/NVMe-oF控制器)或桥接装置的控制器(在本文中也称为桥接装置控制器)一起发挥作用,以使得能够对应用的一些部分进行卸载及加速。这些基于FPGA的可重新配置的逻辑块可从外部连接到NVMe/NVMe-oF控制器或嵌入到NVMe/NVMe-oF控制器中。应用用户可使用耦合到NVMe/NVMe-oF SSD或嵌入在NVMe/NVMe-oF SSD中的这些可重新配置的逻辑块来实现应用的用于加速的功能。
本ISA平台不知晓正在被加速的在远程主机计算机上运行的应用。本ISA平台可以通用方式对应用进行加速,以使得本ISA平台适用于各种类型的应用及数据存储装置。另外,用户可以自助服务方式使用本ISA平台。举例来说,用户可在运行期间选择并下载应用的任何部分,且可在运行期间对应用进行改变。
对于给定应用而言,用户可识别所述应用的用于处理或操纵大量数据的功能或组件。所识别出的功能便是可被卸载到ISA平台以对应用的性能进行加速的功能。根据一个实施例,用户可将应用的功能下载到包括可重新配置的逻辑块(在下文中也被称为黑盒子)的数据存储装置(或桥接装置)的预定义存储区域。应注意,本文所用用语“黑盒子”是指可重新配置的逻辑块的集合,可重新配置的逻辑块可将来自应用代码的用于对某些数据存取及处理功能进行加速的功能卸载到数据存储装置(或桥接装置)或者数据存储装置(或桥接装置)附近的装置。在本文中将每一个可重新配置的逻辑块的集合方便地称为应用加速黑盒子(AABB)。AABB中的每一者可根据可重新配置的逻辑块是如何配置的而具有不同的大小及能力。
AABB具有两个主要组件:被称为寄存器传输级(RTL)黑盒子的硬件以及被称为RTL黑盒子驱动器的固件。RTL黑盒子含有硬件处理引擎,且RTL黑盒子驱动器是用于RTL引擎的固件驱动器或与用于加速的功能对应的正常固件驱动器。在一些实施例中,AABB可只具有固件而不具有硬件。
本ISA平台使用RTL黑盒子组件来重新配置预定义的及预供应的FPGA逻辑区域(即,ISA平台的可重新配置的逻辑块)。RTL黑盒子驱动器是与旨在在嵌入式控制器(例如,NVMe/NVMe-oF控制器或桥接控制器)的处理器核心上运行的经重新配置的RTL黑盒子相关联的固件驱动器。当用户对当前被加速功能的要求及需求完成时,用户可将所述AABB去能或舍弃并将新的AABB下载到所舍弃的AABB槽位。被下载并分配到对应的AABB槽位的AABB被称为现用的AABB槽位。现用的AABB准备好执行被加速功能。主机命令可包括AABB槽位通信命令以与现用的AABB槽位进行通信。AABB槽位通信命令可包括现用的AABB槽位的识别符。多个AABB可在任意给定时间在ISA平台中为现用的。
本ISA平台提供一组预供应及预定义的AABB槽位。每一个这种AABB槽位可预留一定数目的逻辑资源并将其搁置。不同的AABB槽位可界定相同或不同的接口或资源。用户可探索所支持的AABB槽位的特征、特性及属性,选择要使用的特定AABB槽位,并将电路组件及固件组件下载到所选择的AABB槽位中。对于应用而言可能仅具有固件组件。举例来说,可使用“AABB下载”命令来执行电路组件及固件组件的下载。
除了“AABB下载”命令之外,“AABB管理”命令也用于AABB槽位的管理,例如对所下载的AABB图像进行的使能、去能及舍弃。“AABB Comm”命令用于使主机应用与现用的AABB槽位进行通信。本ISA平台提供一组应用程序接口(application program interface,API)以使得所下载的AABB图像能够接收AABB Comm命令,并将完成条目(CE)发送回远程主机计算机。另外,本ISA平台提供内置API以使得AABB固件可执行往来于SSD的与非闪存介质之间以及往来于主机存储器的用户数据传输。通过使用这种命令及数据移动API,AABB图像可协调对静态的用户数据以及飞行中的用户数据的用户数据处理、操纵及其他变换。
本ISA平台可使用NVMe/NVMe-oF SSD和/或桥接装置来对第三方应用进行加速。用户可将应用AABB下载到NVMe/NVMe-oF SSD以对用户应用的期望功能(或期望功能的一些部分)进行加速。本ISA平台为给定的AABB实现硬件组件及相关联的固件组件。硬件组件处于可被加载到NVMe/NVMe-oF SSD中的一个或多个可重新配置的逻辑块中的RTL位流的形式。固件组件在NVMe/NVMe-oF SSD的嵌入式处理器(或处理器核心)上加载及执行。
尽管用户可识别要在AABB槽位中构建的功能,但就本ISA平台而言,AABB槽位仍然是黑盒子。也就是说,本ISA平台及平台供应商将不会知晓或不关心AABB如何使用以及AABB的使用目的。用户可以自助服务方式定义、创建、下载及使用由本ISA平台提供的AABB槽位。尽管以下实例集中于允许用户以自助服务方式运行第三方加速功能的本ISA平台的实施例,但应理解,本ISA平台可以通用方式使用以使得可在NVMe/NVMe-oF SSD或桥接装置中在本机构建某些标准的内置黑盒子功能。
当用户将AABB图像下载到AABB槽位时,接收到AABB图像的装置(例如,NVMe/NVMe-oF SSD或桥接装置)抽取RTL组件及固件组件。RTL组件可以位流形式递送。固件组件是作为可执行二进制图像(binary image)来递送的。RTL位流用于重新配置为对应的黑盒子预留的FPGA区域(即,AABB槽位),且在嵌入式处理器(或嵌入式处理器的处理器核心)上执行驱动器二进制。在远程主机计算机上运行的应用可使用NVMe命令“AABB Comm”来与ISA平台上的AABB图像进行通信。装置拦截具有目的地AABB槽位识别符的“AABB Comm”命令并将所述“AABB Comm”命令转发到适宜的AABB槽位。
图3示出根据一个实施例的示例性应用加速黑盒子(AABB)图像的数据结构。AABB图像301包括报头310、RTL位流320及驱动器二进制图像文件321。报头310包括杂项信息311、参数312、RTL位流长度313、RTL位流偏移量314、驱动器二进制文件长度315及驱动器二进制文件偏移量316。RTL位流偏移量314包括指向RTL位流320的指针,RTL位流320具有为RTL位流长度313的大小,且驱动器二进制文件偏移量316包括指向驱动器二进制图像文件321的指针,驱动器二进制图像文件321具有驱动器二进制文件长度315。尽管本实例仅示出一个报头以及对应的RTL位流及驱动器二进制图像文件,然而应理解,单个AABB图像可包括多个报头、RTL位流及驱动器二进制图像文件,而这并不偏离本公开。
本ISA平台可被构建在NVMe/NVMe-oF SSD(例如,图1所示eSSD170)的控制器中或桥接装置(例如,图2所示NVMe-oF桥接装置200)的控制器中。在一些实施例中,控制器可与NVMe/NVMe-oF SSD或桥接装置中所包括的基于FPGA的可重新配置的逻辑块进行交互。除了数据存储能力之外,本ISA平台提供用于构建及执行第三方功能块(即,AABB槽位)的机制。AABB槽位被供应预定量的逻辑资源、计算资源及存储器资源,所述逻辑资源、计算资源及存储器资源可通过一组预定义的接口来进行存取。在NVMe/NVMe-oF SSD中构建的基于FPGA的可重新配置的逻辑块可用于在NVMe/NVMe-oF SSD的控制器或桥接装置中构建第三方功能块的重负荷数据处理功能。用户可使用控制器处理器的计算资源来构建控制算法以及固件加速引擎的驱动器固件。在一些实施例中,用户可仅针对一些使用情形来使用固件资源。
图4示出根据一个实施例的构建在桥接装置中的示例性ISA平台连同后端SSD的图。举例来说,后端SSD 450是可通过通往桥接装置的PCIe链路进行存取的标准NVMe SSD。桥接装置与后端SSD可作为“eSSD”被封装为对于主机而言可见的单个存储装置。桥接装置400包括处理器411、双倍数据速率(double data rate,DDR)存储器412、PCIe端点(endpoint,EP)421、与后端SSD 450进行接口的PCIe接口417、在NVMe-oF桥接装置的情形中可选的以太网接口418、黑盒子重新配置控制器422、数据缓冲器423、NVMe/NVMe-oF主机接口424及可重新配置的逻辑块425。可重新配置的逻辑块425可为现场可编程门阵列(FPGA)及可重新配置的互连线,现场可编程门阵列包括可编程逻辑块的阵列,可重新配置互连线可以可编程方式对逻辑块进行连接。逻辑块可被配置成执行复杂的组合功能或仅简单的逻辑门(比如,与异或(AND XOR))。另外,逻辑块还可包括存储元件(例如,触发器或更完整的存储块)。然而,可重新配置的逻辑块425并非仅限于FPGA块,且还可使用不同形式及类型的可编程的/可重新配置的逻辑块,而这并不偏离本公开的范围。
可重新配置的逻辑块425包括多个分区的RTL黑盒子432a至432n(在本文中统称为RTL黑盒子432)。每一分区的RTL黑盒子432包括特定量的硬件资源以及通过系统总线430与其他功能模块(例如,黑盒子配置控制器422、数据缓冲器423、NVMe/NVMe-oF主机接口424)进行接口的特定数目及特定类型的接口。用户可在所选择的RTL黑盒子432的资源及接口限制条件内选择RTL黑盒子432并构建第三方RTL功能。在一些情形中,用户可使用仅固件黑盒子来构建RTL功能性。在这种情形中,固件黑盒子可使用RTL黑盒子432的预填充RTL组件。
桥接装置400拦截从PCIe总线或以太网接收的目的地为后端SSD 450的主机命令,且可不仅提供对存储在后端SSD 450中的数据的存取而且还提供对使用集成处理器411进行处理的接近存储数据的存取。BB配置控制器422可将RTL位流下载到一个或多个RTL黑盒子432中,并且将对应的驱动器二进制图像文件加载到处理器411以使用处理器411的处理器核心来运行对应的黑盒子驱动器431a到431n。
图5示出根据一个实施例的构建在数据存储装置中的示例性ISA平台的图。数据存储装置500可为NVMe SSD或NVMe-oF SSD。在一些实施例中,数据存储装置500可指代NVMeSSD的存储控制器或NVMe-oF SSD的存储控制器。数据存储装置500包括控制器501及闪存介质560。控制器501包括处理器511、DDR存储器512、PCIe EP 521、在NVMe-oF SSD的情形中可选的以太网接口518、黑盒子重新配置控制器522、数据缓冲器523、NVMe/NVMe-oF主机接口524及可重新配置的逻辑块525。处理器511包括黑盒子驱动器531a到531n。可重新配置的逻辑块525包括多个分区的RTL黑盒子532a至532n(在本文中统称为RTL黑盒子532)。每一分区的RTL黑盒子532包括特定量的硬件资源以及通过系统总线530与其他功能模块(例如,黑盒子配置控制器522、数据缓冲器523、NVMe/NVMe-oF主机接口524)进行接口的特定数目及特定类型的接口。数据存储装置500中的许多构成元件相似于或相同于在图4所示桥接装置的实例中阐述的构成元件。并非具有与后端SSD 450的PCIe接口417,控制器501具有与闪存介质560进行接口的闪存转换层(flash translation layer,FTL)模块526以从闪存介质560读取用户数据以及将用户数据写入到闪存介质560。在这种本机实施方式中,不需要具有连接到后端SSD的桥接装置,这是因为SSD控制器本身便可执行原本由桥接装置执行的功能。
基于FPGA的可重新配置的逻辑块(例如,图4所示可重新配置的逻辑块425以及图5所示可重新配置的逻辑块525)可被重新编程以执行各种用户可编程逻辑功能。可重新配置的逻辑块中的每一者可包括:a)查找表(look-up table,LUT)、b)随机存取存储器(random-access memory,RAM)及c)可重新配置的互连线。通过使用这三个组件,可以硬件方式构建各种数据处理电路。可重新配置的逻辑块可同时提供典型应用专用集成电路(application-specific integrated circuit,ASIC)的高性能以及软件实施方式的灵活性。
应用的数据处理功能性是使用可编程的语言(例如,Verilog及超高速集成电路硬件描述语言(Very-High-Speed Integrated Circuit Hardware Description Language,VHDL))以RTL模型形式构建的。RTL模型接着被合成到门级电路(gate level circuit)中。合成电路继而被映射到FPGA资源(例如,LUT、RAM及互连线)以实现门级网表的物理实施方式。最终实施方式是以位流或位文件的形式来表示的。位流本质上是FPGA中的互连线开关的位映射图(bit map)。通过接通及关断适宜的互连线开关,在FPGA中实现期望的电路。位文件的位流在通电之后或在期望时间点处被配置到FPGA中或被下载到FPGA中。一旦对位流进行了配置,互连线开关便会保持处于这样的编程状态直到复位或重启为止。一旦完成了位流配置或编程,数据处理功能便可开始其操作。可停止当前的数据处理电路并利用不同的位流来重新配置FPGA以启动新的数据处理功能。
根据一个实施例,本ISA平台可具有大量FPGA核心,每一个RTL黑盒子配置有一个FPGA核心。每一个RTL黑盒子可被预定义及预供应有包括但不限于以下的资源:逻辑区域、互连线、LUT、RAM块、专用硬宏元(例如,PCIe控制器、数字信号处理器(digital signalprocessor,DSP)算术逻辑单元(arithmetic logic unit,ALU))、以及时钟信号及复位信号。
RTL黑盒子可具有各种预定义及预供应的接口。接口的实例包括但不限于可编程的时钟/复位、与嵌入式处理器的高级可扩展接口(advanced extensible interface,AXI)、双倍数据速率(double data rate,DDR)存储接口、PCIe(EP/RP)接口、以太网接口、用于专用ISA服务的定制接口及任何其他接口。
另外,RTL黑盒子532中的每一者可具有与对应的配置控制器522的配置接口。该接口对用户而言不可见且用于将用户电路下载到RTL黑盒子532中。
根据一个实施例,SSD控制器或桥接控制器可构建在FPGA中。在这种情形中,FPGA的区域可被搁置且预留为RTL黑盒子。被搁置并预留的那些FPGA分区可用于在运行期间下载用户位流。
本ISA平台提供用于对用户应用进行加速的多个AABB槽位。用户能够使用AABB槽位(或黑盒子)来构建可由自助服务模型中的数据存储装置自身的桥接装置的控制器运行的功能。因此,本ISA平台不清楚在AABB槽位中运行的实际功能。为有利于这种客户自助服务架构,本ISA平台采用探索机制以使最终用户探索到支持应用加速的桥接装置或数据存储装置。根据一个实施例,本ISA平台使得装置能够提供通知/公布机制来指示装置可使用集成可编程/可重新配置的AABB槽位来支持应用加速。举例来说,装置可发出NVMe识别命令来通知/公布AABB支持。
支持存储器附近的应用加速或存储器内的应用加速的装置可使用识别数据结构来提供所支持的AABB特征的各种属性及特征。可通过识别数据结构来提供AABB支持装置的属性、参数及特征的一些实例。举例来说,识别数据结构可包括关于具有RTL黑盒子及固件黑盒子的AABB槽位的数目、具有仅固件黑盒子的AABB槽位的数目、具有RTL黑盒子参数及固件黑盒子参数的每个AABB槽位的数据结构的信息。RTL黑盒子组件的参数的实例包括但不限于面积、互连线资源、逻辑资源的数目、LUT的属性、RAM块的数目、大小等、最大时钟频率以及接口的数目及类型。固件黑盒子组件的参数的实例包括但不限于相关联的固件黑盒子的固件代码大小以及处理器信息。
根据一个实施例,AABB支持装置可发出NVMe命令(在本文中称为“AABB下载”命令)来将图像下载到RTL黑盒子。图6示出根据一个实施例的“AABB下载”命令格式。OPC是为管理命令集或供应商定义命令集预留的8位专用操作码。CID是16位命令识别符。DPTR是使用分散/聚集表(Scatter/Gather List,SGL)或物理区页(Physical Region Page,PRP)方法的数据指针。DPTR指向主机存储器中的AABB图像。NUMD是用于图像传输的双字(32位无符号整数)的数目。OFST是用于当前传输的偏移量。AABB槽位ID含有将用于AABB图像的AABB槽位识别符。
本ISA平台提供了用于实现AABB机制的平稳操作的多个AABB槽位管理功能。一旦将AABB图像下载到AABB槽位,所下载的AABB图像便会默认地保持在复位状态直到应用发出明确的激活触发命令来启动ISA平台上的AABB图像。应用也可将当前正在运行的特定AABB图像暂停或复位。应用可舍弃来自ISA平台的一个或多个所下载的AABB图像。为有利于实现这种AABB管理功能,本ISA平台采用一组新的NVMe AABB槽位管理命令。
图7示出根据一个实施例的AABB槽位管理命令的实例。OPC是为管理命令集或供应商定义命令集预留的专用操作码,且CID是命令识别符。AABB槽位ID是将用于AABB槽位管理命令的AABB槽位识别符。AABB动作ID指示将执行的管理动作。举例来说,0x1将指定的AABB图像使能;0x2将指定的AABB图像去能;0x3将指定的AABB图像复位;0x4舍弃指定的AABB图像。在一些地方可使用其他AABB动作ID或者结合这些动作ID来使用其他AABB动作ID。
一旦在ISA平台中下载并启动了AABB图像,应用便可使用一组新的NVMe命令(在本文中称为“AABB Comm”命令)来与AABB图像进行通信。应用可将“AABB Comm”命令发送到AABB,且AABB可对应用作出响应。举例来说,应用可向AABB发送某些询问,且AABB可将结果发送回应用。这种主机及AABB通信可被构建为NVMe或NVMe-oF协议的一部分。在这种情形中,AABB Comm命令可具有专用NVMe命令的标准格式以使得本ISA平台可将其拦截并转发到在ISA平台上运行的适宜的AABB图像。图8示出根据一个实施例的AABB Comm命令的示例性格式。OPC是为管理命令集或供应商定义命令集预留的专用操作码,且CID是命令识别符。AABB槽位ID是将用于AABB槽位管理命令的AABB槽位识别符。
根据一个实施例,在任意给定时刻,可有多个AABB图像现用。因而如图8中所示,AABB Comm命令还载送16位AABB槽位ID。这种AABB槽位ID由ISA平台用于将所拦截的AABBComm命令递送到正确的AABB槽位。
除了AABB Comm命令拦截之外,本ISA平台还提供一组标准API,AABB驱动器可使用所述一组标准API来与在远程主机计算机上运行的应用进行通信并往来于数据存储装置之间传输用户数据。本ISA平台提供的API包括各种命令,例如:1)用于拦截AABB Comm命令并将AABB Comm命令递送到适宜的AABB槽位的命令;2)用于将AABB Comm命令完成条目发送回应用的命令;3)用于从数据存储装置读取用户数据的命令;4)用于将AABB数据写入到数据存储装置的命令;5)用于从主机存储器读取用户数据的命令;以及6)用于将AABB数据写入到主机存储器的命令。
用于拦截AABB Comm命令并将AABB Comm命令递送到适宜的AABB槽位的第一命令可为包括提交队列识别符(submission queue identifier,SQID)的64B命令,所述AABBComm命令是在提交队列识别符上接收到。用于将AABB Comm命令完成条目发送到在主机计算机上运行的应用的第二命令可包括16B完成条目(CE)及SQID。用于从数据存储装置读取用户数据的第三命令可包括命名空间ID(NSID)、起始逻辑块地址(SLBA)、逻辑块数目(NLB)、ISA平台中的目的地地址以及仅有的其他必要的相关信息。用于将AABB数据写入到数据存储装置的第四命令可包括NSID、SLBA、NLB、ISA平台中的源地址以及任何其他必要的相关信息。用于从主机存储器读取用户数据的第五命令可包括主机存储器中的源地址(SGL或PRP)、ISA平台中的目的地地址、传输长度及任何其他必要的相关信息。用于将AABB数据写入到主机存储器的第六命令可包括ISA平台中的源地址、主机存储器中的目的地地址(SGL或PRP)、传输长度及任何其他必要的相关信息。
通过使用API,AABB固件可接收主机应用命令并将用于所接收的AABB Comm命令的适宜的完成条目发送回到主机应用。用于从数据存储装置读取用户数据以及将用户数据写入到数据存储装置的API命令可用于使AABB能够对存储在数据存储装置上的用户数据进行处理或操纵。AABB可将数据提取到本地缓冲器,对数据进行处理或对数据进行变换,并将经修改的数据或处理结果写回到数据存储装置。用于从主机存储器读取用户数据以及将用户数据写入到主机存储器的API命令可用于使AABB固件能够协调与远程主机以及后端数据存储装置的数据传输或直接与数据存储装置的与非闪存介质的数据传输。通过使用这些主机应用命令接收、命令完成及从主机及数据存储装置两者进行的数据传输,ISA平台可在数据存储装置附近或数据存储装置内执行期望的用户数据处理及操纵功能。
根据一个实施例,AABB固件可使用AABB命令发起往来于主机存储器的数据传输。在一些实施例中,主机及AABB也可通过数据存储装置交换数据。主机计算机可直接读取用户数据或将用户数据写入到数据存储装置,且AABB可读取或修改数据存储装置中静态的用户数据。用于主机数据移动的AABB命令可由AABB固件用于在飞行中协调数据操纵。在一些使用情形中,AABB可在主机计算机读取或写入数据时执行数据操纵或数据变换。
图9示出根据一个实施例的支持AABB的NVMe-oF SSD中的示例性命令及数据流的图。NVMe-oF SSD 900包括控制器901及闪存介质960。控制器901包括处理器911、DDR存储器912、PCIe EP 921、以太网接口918、黑盒子重新配置控制器922、数据缓冲器923、NVMe-oF主机接口924及可重新配置的逻辑块925。处理器911包括黑盒子驱动器931a到931n。可重新配置的逻辑块925包括多个分区的RTL黑盒子932a至932n(在本文中统称为RTL黑盒子932)。每一分区的RTL黑盒子932包括特定量的硬件资源以及通过系统总线930与其他功能模块(例如,黑盒子配置控制器922、数据缓冲器923、NVMe-oF主机接口924)进行接口的特定数目及特定类型的接口。
NVMe-oF SSD 900可通过以太网接口918接收主机命令。主机命令可包括AABB命令(例如,AABB下载命令、AABB槽位管理命令及AABB Comm命令)。以太网接口918可拦截来自远程主机计算机的AABB命令并通过命令路径951将所述AABB命令转发到NVMe-oF主机接口924及处理器911。NVMe-oF SSD 900的处理器911可产生完成条目并通过经过NVMe-oF主机接口924及以太网接口918的命令路径951将所述完成条目发送回主机应用。在运行所下载的AABB的同时,处理器911可发出AABB发起的内部命令(与主机发起的命令相反)以通过经过NVMe-oF主机接口924及FTL 926的命令路径952读取用户数据以及将用户数据写入到闪存介质960。另外,处理器911可与主机应用进行通信以通过经过数据缓冲器923及以太网接口918的命令路径953从主机存储器读取用户数据以及将用户数据写入到主机存储器。主机应用可发起数据读取操作及数据写入操作以通过经过以太网接口918、NVMe-oF主机接口924及FTL 926的路径954往来于主机存储器与闪存介质960之间读取及写入用户数据。
图10示出根据另一个实施例的支持AABB的NVMe SSD中的示例性命令及数据流的图。NVMe SSD 1000包括控制器1001及闪存介质1060。控制器1001包括处理器1011、DDR存储器1012、以太网接口1018(可选的)、PCIe EP接口1021、黑盒子重新配置控制器1022、数据缓冲器1023、NVMe主机接口1024及可重新配置的逻辑块1025。处理器1011包括黑盒子驱动器1031a到1031n。可重新配置的逻辑块1025包括多个分区的RTL黑盒子1032a至1032n(在本文中统称为RTL黑盒子1032)。每一分区的RTL黑盒子1032包括特定量的硬件资源以及通过系统总线1030与其他功能模块(例如,黑盒子配置控制器1022、数据缓冲器1023、NVMe主机接口1024)进行接口的特定数目及特定类型的接口。
NVMe SSD 1000可通过PCIe EP接口1021接收主机命令。主机命令可包括AABB命令(例如,AABB下载命令、AABB槽位管理命令及AABB Comm命令)。PCIe EP接口1021可拦截来自远程主机计算机的AABB命令并通过命令路径1051将所述AABB命令转发到NVMe主机接口1024及处理器1011。NVMe SSD 1000的处理器1011可产生完成条目并通过经过NVMe主机接口1024及PCIe EP接口1021的命令路径1051将所述完成条目发送回主机应用。在运行所下载的AABB的同时,处理器1011可发出AABB发起的内部命令(与主机发起的命令相反)以通过经过NVMe主机接口1024及FTL 1026的命令路径1052读取用户数据以及将用户数据写入到闪存介质1060。另外,处理器1011可与主机应用进行通信以通过经过数据缓冲器1023及PCIe EP接口1021的命令路径1053从主机存储器读取用户数据以及将用户数据写入到主机存储器。主机应用可发起数据读取操作及数据写入操作以通过经过PCIe EP接口1021、NVMe主机接口1024及FTL 1026的路径1054往来于主机存储器与闪存介质1060之间读取及写入用户数据。
根据一个实施例,一种数据存储装置包括:数据存储介质;处理器,包括多个处理器核心;多个应用加速黑盒子(AABB)槽位,包括可重新配置的逻辑块、互连线及存储器;主机接口,从在远程主机计算机上运行的远程应用接收主机命令,其中主机命令包括图像文件,图像文件包括第一寄存器传输级(RTL)位流及第一固件驱动器图像;以及配置控制器,将第一RTL位流下载到所述多个AABB槽位中的AABB槽位并对AABB槽位进行重新配置,并且将第一固件驱动器图像加载到处理器的处理器核心。被加载有第一固件驱动器图像的处理器核心运行远程应用的数据加速进程以存取被存储在数据存储介质中的数据并使用下载在AABB槽位中的第一RTL位流来处理被存储在数据存储介质中的数据。
数据存储装置可为非易失性存储快速(NVMe)固态驱动器(SSD)。
数据存储装置可为基于网络结构的NVMe(NVMe-oF)SSD,且主机接口可为以太网接口。
远程主机计算机可向数据存储装置发送第二RTL位流及第二固件驱动器图像,且配置控制器可舍弃被下载到AABB槽位的第一RTL位流,下载第二RTL位流,并且将第二固件驱动器图像加载到处理器核心以使用第二RTL位流及第二固件驱动器图像来运行第二数据加速进程。
数据存储装置还可向远程应用发送探索信息,且探索信息可包括AABB槽位的特征、特性及属性。
主机命令可包括用于对第一RTL位流及第一固件驱动器图像进行使能、去能及舍弃的管理命令。
主机命令可包括用于与现用的AABB槽位进行通信的AABB槽位通信命令,且AABB槽位通信命令可包括现用的AABB槽位的识别符。
被加载有第一固件驱动器图像的处理器核心可在使用一组应用程序接口(API)呼叫来运行远程应用的数据加速进程的同时存取被存储在数据存储介质中的数据,所述一组应用程序接口呼叫不知晓远程应用。
一个或多个AABB槽位可包括逻辑区域、互连线、查找表(LUT)、随机存取存储器(RAM)块、硬宏元、以及时钟信号及复位信号。
一个或多个AABB槽位可包括可编程的时钟/复位、至处理器核心的高级可扩展接口(AXI)、双倍数据速率(DDR)存储接口、外围组件互连快速(PCIe)接口及以太网接口。
根据另一个实施例,一种桥接装置包括:数据存储接口,存取被存储在数据存储装置的数据存储介质中的数据;处理器,包括多个处理器核心;多个应用加速黑盒子(AABB)槽位,包括可重新配置的逻辑块、互连线及存储器;主机接口,从在远程主机计算机上运行的远程应用接收主机命令,其中主机命令包括图像文件,图像文件包括第一寄存器传输级(RTL)位流及第一固件驱动器图像;以及配置控制器,将第一RTL位流下载到多个AABB槽位中的AABB槽位并对AABB槽位进行重新配置,并且将第一固件驱动器图像加载到处理器的处理器核心。被加载有第一固件驱动器图像的处理器核心运行远程应用的数据加速进程,以通过数据存储接口存取被存储在数据存储装置的数据存储介质中的数据并使用下载在AABB槽位中的第一RTL位流来处理数据。
数据存储接口可为NVMe接口。
主机接口可为以太网接口,且数据存储装置可为NVMe-oF SSD。
远程主机计算机可向桥接装置发送第二RTL位流及第二固件驱动器图像,且配置控制器可舍弃被下载到AABB槽位的第一RTL位流,下载第二RTL位流,并且将第二固件驱动器图像加载到处理器核心以使用第二RTL位流及第二固件驱动器图像来运行第二数据加速进程。
桥接装置还可向远程应用发送探索信息,其中探索信息可包括多个AABB槽位的特征、特性及属性。
主机命令可包括用于对第一RTL位流及第一固件驱动器图像进行使能、去能及舍弃的管理命令。
主机命令可包括用于与现用的AABB槽位进行通信的AABB槽位通信命令,且AABB槽位通信命令可包括现用的AABB槽位的识别符。
被加载有第一固件驱动器图像的处理器核心可在使用一组应用程序接口(API)呼叫来运行远程应用的数据加速进程的同时通过数据存储接口存取被存储在数据存储介质中的数据,所述一组应用程序接口呼叫不知晓远程应用。
一个或多个AABB槽位可包括逻辑区域、互连线、查找表(LUT)、随机存取存储器(RAM)块、硬宏元、以及时钟信号及复位信号。
一个或多个AABB槽位可包括可编程的时钟/复位、至处理器核心的高级可扩展接口(AXI)、双倍数据速率(DDR)存储接口、外围组件互连快速(PCIe)接口及以太网接口。
上文已阐述以上示例性实施例来示出用于实施一种在数据存储装置(特别是NVMe装置及NVMe-oF装置)中提供存储器内加速的系统及方法的各种实施例。所属领域中的一般技术人员将意识到,存在对所公开示例性实施例的各种修改及相对于所公开示例性实施例的不同之处。在以下权利要求中阐述旨在落于本发明范围内的主题。

Claims (20)

1.一种数据存储装置,其特征在于,包括:
数据存储介质;
处理器,包括多个处理器核心;
多个应用加速黑盒子槽位,包括可重新配置的逻辑块、互连线及存储器;
主机接口,从在远程主机计算机上运行的远程应用接收主机命令,其中所述主机命令包括图像文件,所述图像文件包括第一寄存器传输级位流及第一固件驱动器图像;以及
配置控制器,将所述第一寄存器传输级位流下载到所述多个应用加速黑盒子槽位中的应用加速黑盒子槽位并对所述应用加速黑盒子槽位进行重新配置,并且将所述第一固件驱动器图像加载到所述处理器的多个处理器核心中的处理器核心,
其中被加载有所述第一固件驱动器图像的所述处理器核心运行所述远程应用的数据加速进程以存取被存储在所述数据存储介质中的数据并使用下载在所述应用加速黑盒子槽位中的所述第一寄存器传输级位流来处理被存储在所述数据存储介质中的所述数据。
2.根据权利要求1所述的数据存储装置,其特征在于,所述数据存储装置是非易失性存储快速固态驱动器。
3.根据权利要求1所述的数据存储装置,其特征在于,所述数据存储装置是基于网络结构的非易失性存储快速固态驱动器,且所述主机接口是以太网接口。
4.根据权利要求1所述的数据存储装置,其特征在于,所述远程主机计算机向所述数据存储装置发送第二寄存器传输级位流及第二固件驱动器图像,且所述配置控制器舍弃被下载到所述应用加速黑盒子槽位的所述第一寄存器传输级位流并下载所述第二寄存器传输级位流,并且将所述第二固件驱动器图像加载到所述处理器核心以使用所述第二寄存器传输级位流及所述第二固件驱动器图像来运行第二数据加速进程。
5.根据权利要求1所述的数据存储装置,其特征在于,所述数据存储装置还向所述远程应用发送探索信息,其中所述探索信息包括所述多个应用加速黑盒子槽位的特征、特性及属性。
6.根据权利要求1所述的数据存储装置,其特征在于,所述主机命令包括用于对所述第一寄存器传输级位流及所述第一固件驱动器图像进行使能、去能及舍弃的管理命令。
7.根据权利要求1所述的数据存储装置,其特征在于,所述主机命令包括用于与现用的应用加速黑盒子槽位进行通信的应用加速黑盒子槽位通信命令,其中所述应用加速黑盒子槽位通信命令包括所述现用的应用加速黑盒子槽位的识别符。
8.根据权利要求1所述的数据存储装置,其特征在于,被加载有所述第一固件驱动器图像的所述处理器核心在使用一组应用程序接口呼叫来运行所述远程应用的所述数据加速进程的同时存取被存储在所述数据存储介质中的所述数据,所述一组应用程序接口呼叫不知晓所述远程应用。
9.根据权利要求1所述的数据存储装置,其特征在于,所述多个应用加速黑盒子槽位中的一个或多个应用加速黑盒子槽位包括逻辑区域、互连线、查找表、随机存取存储器块、硬宏元、以及时钟信号及复位信号。
10.根据权利要求1所述的数据存储装置,其特征在于,所述多个应用加速黑盒子槽位中的一个或多个应用加速黑盒子槽位包括可编程的时钟/复位、至所述处理器核心的高级可扩展接口、双倍数据速率存储接口、外围组件互连快速接口及以太网接口。
11.一种桥接装置,其特征在于,包括:
数据存储接口,存取被存储在数据存储装置的数据存储介质中的数据;
处理器,包括多个处理器核心;
多个应用加速黑盒子槽位,包括可重新配置的逻辑块、互连线及存储器;
主机接口,从在远程主机计算机上运行的远程应用接收主机命令,其中所述主机命令包括图像文件,所述图像文件包括第一寄存器传输级位流及第一固件驱动器图像;以及
配置控制器,将所述第一寄存器传输级位流下载到所述多个应用加速黑盒子槽位中的应用加速黑盒子槽位并对所述应用加速黑盒子槽位进行重新配置,并且将所述第一固件驱动器图像加载到所述处理器的所述多个处理器核心中的处理器核心;
其中被加载有所述第一固件驱动器图像的所述处理器核心运行所述远程应用的数据加速进程,以通过所述数据存储接口存取被存储在所述数据存储装置的所述数据存储介质中的所述数据并使用下载在所述应用加速黑盒子槽位中的所述第一寄存器传输级位流来处理所述数据。
12.根据权利要求11所述的桥接装置,其特征在于,所述数据存储接口是非易失性存储快速接口。
13.根据权利要求11所述的桥接装置,其特征在于,所述主机接口是以太网接口,且所述数据存储装置是基于网络结构的非易失性存储快速固态驱动器。
14.根据权利要求11所述的桥接装置,其特征在于,所述远程主机计算机向所述桥接装置发送第二寄存器传输级位流及第二固件驱动器图像,且所述配置控制器舍弃被下载到所述应用加速黑盒子槽位的所述第一寄存器传输级位流并下载所述第二寄存器传输级位流,并且将所述第二固件驱动器图像加载到所述处理器核心以使用所述第二寄存器传输级位流及所述第二固件驱动器图像来运行第二数据加速进程。
15.根据权利要求11所述的桥接装置,其特征在于,所述桥接装置还向所述远程应用发送探索信息,其中所述探索信息包括所述多个应用加速黑盒子槽位的特征、特性及属性。
16.根据权利要求11所述的桥接装置,其特征在于,所述主机命令包括用于对所述第一寄存器传输级位流及所述第一固件驱动器图像进行使能、去能及舍弃的管理命令。
17.根据权利要求11所述的桥接装置,其特征在于,所述主机命令包括用于与现用的应用加速黑盒子槽位进行通信的应用加速黑盒子槽位通信命令,其中所述应用加速黑盒子槽位通信命令包括所述现用的应用加速黑盒子槽位的识别符。
18.根据权利要求11所述的桥接装置,其特征在于,被加载有所述第一固件驱动器图像的所述处理器核心在使用一组应用程序接口呼叫来运行所述远程应用的所述数据加速进程的同时通过所述数据存储接口存取被存储在所述数据存储介质中的所述数据,所述一组应用程序接口呼叫不知晓所述远程应用。
19.根据权利要求11所述的桥接装置,其特征在于,所述多个应用加速黑盒子槽位中的一个或多个应用加速黑盒子槽位包括逻辑区域、互连线、查找表、随机存取存储器块、硬宏元、以及时钟信号及复位信号。
20.根据权利要求11所述的桥接装置,其特征在于,所述多个应用加速黑盒子槽位中的一个或多个应用加速黑盒子槽位包括可编程的时钟/复位、至所述处理器核心的高级可扩展接口、双倍数据速率存储接口、外围组件互连快速接口及以太网接口。
CN201810911803.0A 2017-10-11 2018-08-10 数据存储装置及桥接装置 Pending CN109656843A (zh)

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,064 2017-10-11
US62/571,061 2017-10-11
US15/921,400 US10719474B2 (en) 2017-10-11 2018-03-14 System and method for providing in-storage acceleration (ISA) in data storage devices
US15/921,400 2018-03-14

Publications (1)

Publication Number Publication Date
CN109656843A true CN109656843A (zh) 2019-04-19

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 After (1)

Application Number Title Priority Date Filing Date
CN201810980128.7A Active CN109656473B (zh) 2017-10-11 2018-08-27 桥接装置及提供接近存储计算的方法

Country Status (5)

Country Link
US (4) US10719474B2 (zh)
JP (2) JP7141902B2 (zh)
KR (2) KR102513924B1 (zh)
CN (2) CN109656843A (zh)
TW (2) TWI780168B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112882966A (zh) * 2020-03-24 2021-06-01 威盛电子股份有限公司 运算装置

Families Citing this family (40)

* Cited by examiner, † Cited by third party
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
WO2020183246A2 (en) * 2019-03-14 2020-09-17 Marvell Asia Pte, Ltd. Termination of non-volatile memory networking messages at the drive level
WO2020186270A1 (en) * 2019-03-14 2020-09-17 Marvell Asia Pte, Ltd. Ethernet enabled solid state drive (ssd)
EP3939237B1 (en) 2019-03-14 2024-05-15 Marvell Asia Pte, Ltd. Transferring data between solid state drives (ssds) via a connection between the ssds
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 北京智芯微电子科技有限公司 提高处理器与访存总线时序的方法及内存属性预测器
WO2020219807A1 (en) * 2019-04-25 2020-10-29 Liqid Inc. Composed computing systems with converged and disaggregated component pool
US11809799B2 (en) 2019-06-24 2023-11-07 Samsung Electronics Co., Ltd. Systems and methods for multi PF emulation using VFs in SSD controller
JP7446167B2 (ja) * 2019-06-24 2024-03-08 三星電子株式会社 軽量ブリッジ、これを含む物品及びこれを用いた方法
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
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
TWI811620B (zh) * 2020-03-24 2023-08-11 威盛電子股份有限公司 運算裝置與資料處理方法
CN111459864B (zh) * 2020-04-02 2021-11-30 深圳朗田亩半导体科技有限公司 一种存储器件及其制造方法
CN113051206A (zh) * 2020-05-04 2021-06-29 威盛电子股份有限公司 桥接电路与计算机系统
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 (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105408875A (zh) * 2014-02-23 2016-03-16 拉姆伯斯公司 在存储器接口上的分布式过程执行和文件系统
CN106462498A (zh) * 2014-06-23 2017-02-22 利奇德股份有限公司 用于数据存储系统的模块化交换架构
WO2017040706A1 (en) * 2015-09-02 2017-03-09 Cnex Labs, Inc. Nvm express controller for remote access of memory and i/o over ethernet-type networks
CN106575271A (zh) * 2014-06-23 2017-04-19 谷歌公司 管理存储设备
CN106997324A (zh) * 2015-12-14 2017-08-01 三星电子株式会社 非易失性存储器模块、具有其的计算系统及其操作方法

Family Cites Families (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101089808A (zh) * 2005-03-29 2007-12-19 李春柏 电脑主机的延伸装置的工作方法
US7526619B1 (en) * 2006-09-05 2009-04-28 Nvidia Corporation Method for providing emulated flexible magnetic storage medium using network storage services
US7617340B2 (en) * 2007-01-09 2009-11-10 International Business Machines Corporation I/O adapter LPAR isolation with assigned memory space
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
US8429394B1 (en) * 2008-03-12 2013-04-23 Stone Ridge Technology Reconfigurable computing system that shares processing between a host processor and one or more reconfigurable hardware modules
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
CN101882122A (zh) * 2009-05-07 2010-11-10 瀚邦科技股份有限公司 数据通信系统及桥接器
US8255661B2 (en) * 2009-11-13 2012-08-28 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
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
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
US20150012903A1 (en) * 2013-07-04 2015-01-08 Tabula, Inc. Non-intrusive monitoring and control of integrated circuits
KR20160138448A (ko) 2014-03-08 2016-12-05 다이아만티 인코포레이티드 통합 네트워크 및 스토리지를 위한 방법 및 시스템
US9304690B2 (en) * 2014-05-07 2016-04-05 HGST Netherlands B.V. System and method for peer-to-peer PCIe storage transfers
US9218443B1 (en) * 2014-11-12 2015-12-22 Xilinx, Inc. Heterogeneous multiprocessor program compilation targeting programmable integrated circuits
CN107111663B (zh) * 2014-11-12 2021-01-08 赛灵思公司 目标为可编程集成电路的异构型多处理器程序编译
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
WO2016135875A1 (ja) * 2015-02-25 2016-09-01 株式会社日立製作所 情報処理装置
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
US10402122B2 (en) * 2015-05-29 2019-09-03 Pure Storage, Inc. Transferring encoded data slices in a dispersed storage network
US9891935B2 (en) * 2015-08-13 2018-02-13 Altera Corporation Application-based dynamic heterogeneous many-core systems and methods
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
US9690894B1 (en) * 2015-11-02 2017-06-27 Altera Corporation Safety features for high level design
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
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
EP4202705A1 (en) * 2016-04-04 2023-06-28 Marvell Asia Pte, Ltd. Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access
KR101923661B1 (ko) * 2016-04-04 2018-11-29 주식회사 맴레이 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스
US20170323305A1 (en) * 2016-05-03 2017-11-09 Anantha Pradeep Mechanism for securing legal interactions
US10387167B2 (en) * 2016-05-26 2019-08-20 CloudBolt Software Inc. Action-based computing resource configuration
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
US10613974B2 (en) * 2016-10-04 2020-04-07 Pure Storage, Inc. Peer-to-peer 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
US10956241B1 (en) * 2017-12-20 2021-03-23 Xilinx, Inc. Unified container for hardware and software binaries
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 日本電気株式会社 ストレージ装置
CN112840327A (zh) * 2019-02-21 2021-05-25 华为技术有限公司 一种片上系统、访问命令的路由方法及终端

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105408875A (zh) * 2014-02-23 2016-03-16 拉姆伯斯公司 在存储器接口上的分布式过程执行和文件系统
CN106462498A (zh) * 2014-06-23 2017-02-22 利奇德股份有限公司 用于数据存储系统的模块化交换架构
CN106575271A (zh) * 2014-06-23 2017-04-19 谷歌公司 管理存储设备
WO2017040706A1 (en) * 2015-09-02 2017-03-09 Cnex Labs, Inc. Nvm express controller for remote access of memory and i/o over ethernet-type networks
CN106997324A (zh) * 2015-12-14 2017-08-01 三星电子株式会社 非易失性存储器模块、具有其的计算系统及其操作方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
KAM ESHGHI;: "强大生态系统让NVMe释放出PCIe SSD全部性能", 中国电子商情(基础电子), no. 03, pages 40 - 42 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112882966A (zh) * 2020-03-24 2021-06-01 威盛电子股份有限公司 运算装置

Also Published As

Publication number Publication date
KR20190040886A (ko) 2019-04-19
JP2019075104A (ja) 2019-05-16
US20230016328A1 (en) 2023-01-19
CN109656473B (zh) 2021-07-02
KR20190040884A (ko) 2019-04-19
JP2019075109A (ja) 2019-05-16
US20200341933A1 (en) 2020-10-29
TWI780168B (zh) 2022-10-11
TW201933081A (zh) 2019-08-16
CN109656473A (zh) 2019-04-19
JP7137430B2 (ja) 2022-09-14
TWI751374B (zh) 2022-01-01
US10394746B2 (en) 2019-08-27
KR102388893B1 (ko) 2022-04-21
US10719474B2 (en) 2020-07-21
US11487696B2 (en) 2022-11-01
JP7141902B2 (ja) 2022-09-26
KR102513924B1 (ko) 2023-03-27
US20190108158A1 (en) 2019-04-11
US20190107956A1 (en) 2019-04-11
TW201933080A (zh) 2019-08-16

Similar Documents

Publication Publication Date Title
CN109656843A (zh) 数据存储装置及桥接装置
CN110830392B (zh) 启用存储介质上的虚拟功能
CN110063051B (zh) 用于重新配置服务器的系统和方法以及服务器
US9996484B1 (en) Hardware acceleration for software emulation of PCI express compliant devices
US7529860B2 (en) System and method for configuring an endpoint based on specified valid combinations of functions
JP5362980B2 (ja) データ処理システム内で第1のホスト・システムと第2のホスト・システムとの間で通信するための方法、プログラム、およびシステム(ソケット接続および共用メモリを使用するホスト・システム間の通信のためのシステムおよび方法)
US7743189B2 (en) PCI function south-side data management
WO2017066944A1 (zh) 一种存储设备访问方法、装置和系统
JP2008152786A (ja) データ処理システム内で1つまたは複数のエンドポイントの第1の物理機能から第2の物理機能に仮想機能を移行するための方法、プログラム、およびシステム(単一ルート・ステートレス仮想機能の移行のためのシステムおよび方法)
CN113312143B (zh) 云计算系统、命令处理方法及虚拟化仿真装置
CN107678835A (zh) 一种数据传输方法及系统
US20150370595A1 (en) Implementing dynamic virtualization of an sriov capable sas adapter
CN109983438B (zh) 使用直接存储器访问(dma)重新映射来加速半虚拟化网络接口
US20170017515A1 (en) Virtual Network Provisioning Prior to Virtual Machine Manager Launch by Loading a Partitioned Network Device with Attribute Data
CN110380992A (zh) 报文处理方法、装置及网络流量采集设备
US8392629B1 (en) System and methods for using a DMA module for a plurality of virtual machines
CN113472624A (zh) 一种基于vDPA实现虚拟网络数据包转发的方法及应用
US9753883B2 (en) Network interface device that maps host bus writes of configuration information for virtual NIDs into a small transactional memory
US11003618B1 (en) Out-of-band interconnect control and isolation
US20220166718A1 (en) Systems and methods to prevent packet reordering when establishing a flow entry
CN107861803A (zh) 一种基于中断的xp系统下cpci总线rs422通信驱动方法
US8041902B2 (en) Direct memory move of multiple buffers between logical partitions
CN115002028A (zh) 一种报文处理方法、装置及介质
US20210173805A1 (en) Configuration management device, configuration management system, configuration management method, and configuration management program
US20150222513A1 (en) Network interface device that alerts a monitoring processor if configuration of a virtual nid is changed

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