CN111274025B - 用于在ssd中加速数据处理的系统和方法 - Google Patents
用于在ssd中加速数据处理的系统和方法 Download PDFInfo
- Publication number
- CN111274025B CN111274025B CN201911225754.6A CN201911225754A CN111274025B CN 111274025 B CN111274025 B CN 111274025B CN 201911225754 A CN201911225754 A CN 201911225754A CN 111274025 B CN111274025 B CN 111274025B
- Authority
- CN
- China
- Prior art keywords
- spe
- spes
- data
- spa
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 157
- 238000000034 method Methods 0.000 title claims abstract description 36
- 230000001133 acceleration Effects 0.000 claims abstract description 35
- 230000008569 process Effects 0.000 claims abstract description 16
- 239000000872 buffer Substances 0.000 claims description 99
- 230000006870 function Effects 0.000 claims description 61
- 230000015654 memory Effects 0.000 claims description 35
- 239000007787 solid Substances 0.000 claims description 6
- 238000012546 transfer Methods 0.000 claims description 6
- 238000002821 scintillation proximity assay Methods 0.000 claims 35
- 238000010586 diagram Methods 0.000 description 14
- 238000007726 management method Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 239000004744 fabric Substances 0.000 description 5
- 238000001914 filtration Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000007405 data analysis Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000011423 initialization method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- MWRWFPQBGSZWNV-UHFFFAOYSA-N Dinitrosopentamethylenetetramine Chemical compound C1N2CN(N=O)CN1CN(N=O)C2 MWRWFPQBGSZWNV-UHFFFAOYSA-N 0.000 description 1
- 229940112112 capex Drugs 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- FEBLZLNTKCEFIT-VSXGLTOVSA-N fluocinolone acetonide Chemical compound C1([C@@H](F)C2)=CC(=O)C=C[C@]1(C)[C@]1(F)[C@@H]2[C@@H]2C[C@H]3OC(C)(C)O[C@@]3(C(=O)CO)[C@@]2(C)C[C@@H]1O FEBLZLNTKCEFIT-VSXGLTOVSA-N 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1615—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using a concurrent pipeline structrure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
-
- 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/0656—Data buffering 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/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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Advance Control (AREA)
Abstract
本公开提供用于在SSD中加速数据处理的系统和方法。一种方法包括:在加速平台管理器(APM)处从应用服务管理器(ASM)接收应用功能处理信息;由APM从多个存储处理加速器(SPA)中分配第一SPA,其中该多个SPA中的至少一个SPA包括多个可编程处理器或多个存储处理引擎(SPE),该多个SPE包括n个SPE;启用第一SPA中的该多个SPE,其中一旦被启用,第一SPA中的该多个SPE中的所述至少一个SPE被配置为基于应用功能处理信息来处理数据;由APM确定第一SPA中的该多个SPE中的所述至少一个SPE是否完成了数据处理;以及由APM向ASM发送第一SPA的SPE的数据处理的结果。
Description
相关申请的交叉引用
本申请要求于2018年12月5日提交的序列号为62/775,745的美国临时专利申请的优先权和权益,其全部内容通过引用结合于此。
技术领域
根据本发明的实施例的一个或多个方面涉及用于在固态驱动器(Solid StateDrive,SSD)中加速数据处理的系统和方法。
背景技术
将原始(raw)数据移动到中央处理器(Central Processing Unit,CPU)进行处理和分析就消耗的能量而言是昂贵的。这还增加了资源(诸如网络带宽、CPU周期和CPU内存(CPU memory))上的负担。这些增加的资源需求导致高的资本支出和运营支出开销。因此,在存储设备(例如,SSD)内处理原始数据对于用于将不断增长的原始数据商用(monetization)所需要的数据分析用例而言是经济有效的解决方案。
背景技术部分中的上述信息仅用于增强对技术背景的理解,因此不应被解释为承认现有技术的存在或相关性。
发明内容
提供这些段落是为了介绍本公开实施例的特征和构思的选择,这些特征和概念将在下面的详细描述中进一步描述。这些段落不旨在标识所要求保护的主题的关键或基本特征,也不旨在用于限制所要求保护的主题的范围。一个或多个所描述的特征可以与一个或多个其他所描述的特征相结合,以提供可操作的设备。
本公开的示例实施例的方面涉及在SSD中加速数据处理的系统和方法。
在一些实施例中,一种用于将应用功能从主机设备分流(offloading)和加速到存储设备的方法包括:在加速平台管理器(Acceleration Platform Manager,APM)处从应用服务管理器(Application Service Manager,ASM)接收应用功能处理信息;由APM从多个存储处理加速器(Storage Processing Accelerator,SPA)中分配第一SPA,其中该多个SPA中的至少一个SPA包括多个可编程处理器或多个存储处理引擎(Storage ProcessingEngine,SPE),该多个SPE包括n个SPE(n是大于零的自然数);由APM将微代码下载到第一SPA中的多个SPE中的至少一个SPE中,并且启用第一SPA中的该多个SPE,其中一旦被启用,第一SPA中的多个SPE中的该至少一个SPE被配置为基于应用功能处理信息来处理数据;由APM确定第一SPA中的多个SPE中的该至少一个SPE是否完成了数据处理;以及基于确定第一SPA中的多个SPE中的该至少一个SPE完成了数据处理,由APM向ASM发送第一SPA的SPE的数据处理的结果。
在一些实施例中,该方法还包括由APM基于应用功能处理信息提取数据;由APM将从ASM接收的一个或多个参数(argument)编程到第一SPA中的多个SPE中的至少一个SPE中;以及由APM创建和编程一个或多个数据移动描述符。该方法还包括在主机处理器处拦截(intercepting)至少一个应用功能调用;在主机处理器处收集应用功能处理信息,该应用功能处理信息包括用于处理应用功能调用的数据源、应用功能调用的处理类型、应用功能调用的参数以及数据处理后结果的目的地中的一个或多个;以及在主机设备软件栈中的ASM处接收应用功能处理信息,其中基于接收到应用功能处理信息,ASM被配置为:选择用于应用功能处理的包括APM的处理器;调度处理器中的数据处理;初始化数据传输直接存储器访问(Direct Memory Access,DMA)引擎,以将适当的数据加载到处理器的一个或多个缓冲器中;以及向处理器发送调用触发(invocation trigger)和应用功能处理信息。
在一些实施例中,多个SPA中的至少一个SPA包括输入缓冲器或输入分级随机存取存储器(Input Staging Random-Access Memory,ISRAM)和输出缓冲器或输出分级随机存取存储器(Output Staging RAM,OSRAM)。在一些实施例中,至少一个SPE包括输入数据缓冲器(Input Data Buffer,IDB),其中该至少一个SPE被配置为将该至少一个SPE的输出写入流水线中的多个SPE中的下一SPE的IDB中。在一些实施例中,IDB在多个SPE中的两个相邻SPE之间共享。在一些实施例中,在n个SPE中的至少一个SPE上运行的微代码被配置为以编程方式为流水线中的n个SPE中的下一SPE生成批处理开始和批处理结束指示,用于面向批处理的流水线数据处理。在一些实施例中,数据是从连接到包括APM的处理器的一个或多个固态驱动器(SSD)中提取的。
在一些实施例中,n个SPE中的第1个至第(n-1)个SPE被配置为将该SPE的输出提供给流水线中的n个SPE中的下一SPE,以用作下一SPE的输入。在一些实施例中,APM被配置为经由多个SPE中的至少一个SPE来访问指令RAM(instruction RAM,IRAM)和数据RAM(dataRAM,DRAM)中的一个或多个。在一些实施例中,至少一个SPE包括用于IRAM的第一总线和用于DRAM的第二总线。在一些实施例中,DRAM包括高速暂存区(scratch pad)、输入数据缓冲器(IDB)、输出数据缓冲器(ODB)、参数RAM(argument RAM,ARAM)和杂项RAM(miscellaneousRAM,MRAM),其中一个或多个编程SPE特征被配置为基于MRAM并由在至少一个SPE上运行的微代码作为指针以编程方式访问。在一些实施例中,使用流水线中的n个SPE中的第一SPE的输入数据缓冲器(IDB)读取指针和流水线中的n个SPE中的第一SPE之前的第二SPE的输出数据缓冲器(ODB)写入指针来生成IDB可用数据和可用空间状态,以用任意粒度共享IDB,而没有任何上溢(overflow)或下溢(underflow)。在一些实施例中,多个SPA被配置为在从ASM接收的数据的不同切片上并行运行。
在一些实施例中,一种方法包括由处理器接收应用功能处理信息;由处理器从处理器中的多个存储处理加速器(SPA)中分配第一SPA,其中该多个SPA中的至少一个SPA包括多个可编程处理器或多个存储处理引擎(SPE),该多个SPE包括n个SPE(n是大于零的自然数);由处理器启用第一SPA中的该多个SPE,以基于应用功能处理信息来执行数据处理操作;以及由处理器确定第一SPA中的该多个SPE中的至少一个SPE完成了该数据处理操作。
在一些实施例中,n个SPE中的第1个至第(n-1)个SPE被配置为将该SPE的输出提供给流水线中的n个SPE中的下一SPE,以用作下一SPE的输入,并且其中在处理器中的加速平台管理器(APM)处从应用服务管理器(ASM)接收应用功能处理信息和调用触发。
在一些实施例中,该方法还包括由处理器将微代码下载到第一SPA中的多个SPE中的至少一个SPE中;由处理器将一个或多个参数编程到第一SPA中的多个SPE中的该至少一个SPE中;由处理器创建和编程一个或多个数据移动描述符;由处理器基于应用功能处理信息提取数据,其中该数据是从连接到处理器的一个或多个固态驱动器(SSD)中提取的;基于确定第一SPA中的多个SPE中的至少一个SPE完成了数据处理,由处理器向ASM发送第一SPA的SPE的数据处理结果;以及由处理器重置或禁用第一SPA。
在一些实施例中,该方法还包括在主机处理器处拦截至少一个应用功能调用;在主机处理器处收集应用功能处理信息,该应用功能处理信息包括用于处理应用功能的数据源、处理类型、应用功能调用的参数以及结果的目的地中的一个或多个;以及在主机设备软件栈中的ASM处接收应用功能处理信息,其中基于接收到应用功能处理信息,ASM被配置为:选择用于应用功能处理的处理器;调度处理器中的数据处理;初始化数据传输直接存储器访问(DMA)引擎,以将适当的数据加载到一个或多个处理器缓冲器中;以及向处理器发送调用触发和应用功能处理信息。
在一些实施例中,多个SPA中的至少一个SPA包括输入缓冲器或输入分级随机存取存储器(ISRAM)和输出缓冲器或输出分级随机存取存储器(OSRAM),该至少一个SPE包括输入数据缓冲器(IDB),其中该至少一个SPE被配置为将该至少一个SPE的输出写入流水线中的多个SPE中的下一SPE的IDB中。
在一些实施例中,一种用于将应用功能从主机设备分流和加速到存储设备的方法包括:在处理器处从控制器接收应用功能处理信息;由处理器从处理器中的多个存储处理加速器(SPA)中选择第一SPA,其中该多个SPA中的至少一个SPA包括多个可编程处理器或存储处理引擎(SPE),该多个SPE包括n个SPE(n是大于零的自然数);向第一SPA的多个SPE中的至少一个SPE传送信号,以根据应用功能处理信息执行数据处理操作;由处理器确定第一SPA中的多个SPE中的至少一个SPE完成了数据处理操作;以及由处理器向控制器发送数据处理操作的结果。
在一些实施例中,n个SPE中的第1至(n-1)个SPE被配置为将该SPE的输出提供给流水线中的n个SPE中的下一SPE,以用作下一SPE的输入,并且其中应用功能处理信息包括用于处理应用功能调用的数据源、应用功能调用的处理类型、应用功能调用的参数以及在数据被处理之后的结果的目的地中的一个或多个。
附图说明
参考说明书、权利要求书和附图,将领会和理解本发明的一些示例实施例的这些和其他特征,其中:
图1示出了存储加速系统的各种组件的框图表示;
图2A-2B示出了存储加速硬件平台设备的细节;
图3示出了存储处理加速器(SPA)的详细架构;
图4A示出了使用桥接设备的非易失性存储器(Non-Volatile Memory,NVM)规范(NVMe)或基于结构的NVMe(NVMe over fabric,NVMe-oF)硬件数据路径的SPA;
图4B示出了连接结构(connected fabric)的高级架构;
图5A示出了SPA架构的框图;
图5B示出了处理器访问模块(Processor Access Module,PAM)的框图。
图5C示出了系统存储器访问模块(System Memory Access Module,SAM)的框图;
图5D是示出存储处理引擎(SPE)切片的细节的框图。
图5E-5F示出了两个SPE级(stage)的存储器层级和两个SPE级之间的数据共享;
图6是示出加速平台管理器(APM)的高级操作的框图;
图7是示出SPA初始化方法的流程图;
图8是示出SPA运行时操作(runtime operation)的方法的流程图;和
图9示出了一个图表。
具体实施方式
下面结合附图阐述的详细描述旨在描述根据本发明提供的SSD中用于加速数据处理的系统和方法的一些示例实施例,而不旨在表示可以构建或利用本发明的唯一形式。该描述结合示出的实施例阐述了本发明的特征。然而,应当理解,相同或等同的功能和结构可以通过不同的实施例来实现,这些实施例也旨在被包含在本发明的范围内。如本文别处所示,相似的元件编号旨在指示相似的元件或特征。
将原始数据移动到中央处理器(CPU)进行处理和分析就消耗的能量而言是昂贵的。这还增加了资源(诸如网络带宽、CPU周期和CPU内存)上的负担。这些增加的资源需求导致高的资本支出(capital expense,capex)和运营支出(operational expense,opex)开销。因此,在存储设备(例如,SSD)内处理原始数据是对于用于将不断增长的原始数据商用所需要的数据分析用例而言是经济有效的解决方案。此外,数据分析任务通常会读取大量数据,对其进行处理,并通过过滤和其他缩减操作对其进行缩减。这些任务非常适合SSD内(in-SSD)加速,因为它们(1)利用了设备内更高的可用带宽,以及(2)通过仅移动缩减后的结果来保持SSD和CPU之间(即,外围组件互连规范(Peripheral Component Interconnectexpress,PCIe))的有限带宽。
本公开的示例实施例描述了用于复杂应用加速用例的基于现场可编程门阵列(Field Programmable Gate Array,FPGA)的硬件平台。然而,SPA可以在SSD控制器(例如,图1的108)设备、或NVMe/NVMe-oF桥接设备或SSD控制器协处理器设备内实施。SSD控制器或NVMe/NVMe-oF设备可以使用FPGA或专用集成电路(Application-Specific IntegratedCircuit,ASIC)来实施。SSD控制器协处理器设备可以使用FPGA或ASIC来实施。
代替设计单个或特定的专用加速硬件,本公开的示例实施例提供了更通用的现场可编程门阵列(FPGA)架构,其可以迎合更大的应用集合。FPGA架构包含简单的可编程处理器(命名为SPE),这些处理器布置在少数几个集群(例如,存储处理加速器(SPA))中,其中每个集群(例如,SPA)包含一组联接并流水线化在一起的处理器。在FPGA架构中合并可编程处理器增加了架构的灵活性,大大减少了编程工作量,并允许相同的设计迎合更大的应用集合。例如,相同的FPGA架构可以用于加速不同文件格式(例如,parquet(嵌套)、orc等)的处理,设计的不同之处仅在于运行在FPGA内(in-FPGA)可编程处理器上的微代码。此外,可以为特定任务添加小型加速器(即,parquet的快速解压缩),并可以将其合并到集群设计。
SPA架构设计遵循特定的目标和目的。第一目的是将数据处理分流(offload)到存储装置(storage)中或存储装置附近,从而释放CPU周期并提高性能。第二目标是通过在更靠近数据存储装置的大型数据集上执行诸如过滤、限制、合并(join)、聚合等缩减操作来缩减数据移动。分流此类操作,除了减轻CPU负担之外,还可以显著缩减主机读取的数据大小,从而降低存储装置、内存和网络带宽需求,并降低系统功耗。最后,SPA架构应该提供编程的灵活性和便利性,以允许较短的开发和上市时间。
SPA架构被设想用于各种复杂的高级用例,诸如Parquet SSD(嵌套SSD)、数据库应用等。这种用例可以涉及以下类型的数据处理:
1)查询处理,包括过滤、限制、合并和聚合;
2)文本处理,包括格式转换、解析、过滤、排序和解释;
3)算术计算,公式化计算;和
4)正则表达式,诸如数据变换和模式搜索。
为了使SPA架构能够支持应用加速用例,它应该有足够的计算能力以能够处理各种数据格式(关系数据库、parquet(嵌套)、orc等)或者甚至未知数据格式的复杂数据处理。这种处理应该以接近硬件速率的速度完成,因此它不会成为系统的性能瓶颈,并且应该保持在设定的功率约束内。随着数据和分析生态系统的快速增长,数据存储应用的新用例频繁出现。SPA应该足够灵活,以容易且高效地支持新的未来用例或增强现有用例。最后,重要的是SPA架构是经济有效的,并允许以更低的成本获得更高的加速性能。
图1示出了存储加速系统100的各种组件的框图表示。
在存储加速系统100中,应用服务管理器(ASM)102(例如,控制器、中央处理器、主机处理器等)从主机软件栈(例如,应用栈、存储栈、非易失性存储器规范(NVMe)驱动器)提供加速编排(orchestration)支持。运行在嵌入式处理器上的加速平台管理器(APM)104固件从设备侧提供加速编排支持。ASM和APM共同促进了将各种加速功能、加速内核和运行时操作分流到SPA上。硬件平台(例如,FPGA)可以包含SPA的多个实例。在给定的硬件平台上可以使用不同风格和类型的SPA。
图2A-2B示出了存储加速硬件平台设备的细节。在图2A-2B的设备中,高数据处理性能是通过SPA内的流水线处理(例如,如图2A所示的SPA 202(1))和跨多个SPA的并行流水线处理(例如,如图2B所示的202(1)、202(2)、...、202(n))实现的,因为多个SPA经由系统总线(例如,图3的308)彼此并行连接,并且每个SPA中的多个SPE链接在一起,以实现流水线数据处理和变换。SPA(例如,202(1)、202(2)、...、202(n))是高度可定制的,支持参数化的硬件资源,并且可以被编程为提供不同的功能。与大多数数据密集型应用一样,SPA在数据方面具有高等级的并行性,因此可以在不同的数据流上并行执行相同的功能。如果需要更多的计算能力,不同风格的SPA可以链接起来,以提供更多的流水线处理。在图2A-2B的加速存储设备中,工作流由嵌入式编排器CPU 201高效地管理。
图3示出了SPA 302的详细架构。SPA 302可以是如图2B所示的SPA 202(1)、202(2)、...、202(n)中的任何一个。SPA 302是一种流水线数据处理架构,其能够高效处理非常大的数据集。每个SPA(例如,SPA 302)包括链接在一起的一个或多个存储处理引擎(SPE)(例如,304(1)、304(2)、...、304(n)),以实现流水线数据处理和转换。
有各种风格的SPE。因此,SPE接口和编程模型被架构成模板。不同的轻量级核以及微代码引擎可用于创建SPE。还可以使不同的SPE风格共存在单个SPA中以及跨多个SPA。目前正在考虑以下风格的SPE:1)基于MicroBlaze的;2)基于诸如精简指令集计算机(ReducedInstruction Set Computer,RISC)-V的轻量级CPU核的;以及3)基于使用定制指令集架构的微代码引擎(Micro Code Engine,MCE)或微定序器的。
每个SPE(例如,304(1)、304(2)、...、304(n))具有专用输入缓冲器(例如,312(1)、312(2)、...、312(n))和输出接口。SPE(例如,304(1)、304(2)、...、304(n))可以将输出或中间结果写入下一SPE(例如,304(1)、304(2)、...、304(n))的输入缓冲器(例如,312(1)、312(2)、...、312(n))。SPA(例如,302)的不同配置可以包含不同数量的硬件资源。即,不同数量的SPE(例如,304(1)、304(2)、...、304(n))可以根据SPA(例如,302)目标的特定功能被提供给不同的SPA(例如,302)配置。SPE(例如,304(1)、304(2)、...、304(n))输出被复用(例如,在复用器306处)到存在于系统总线308上的输出缓冲器318中。每个SPA(例如,302)还包含在系统总线308上可访问的输入缓冲器316(例如,输入分级随机存取存储器(ISRAM))。去往或来自每个SPA(例如,302)的基本数据流使得外部直接存储器访问(DMA)引擎(例如,图2B的206)将数据传输到SPA输入缓冲器316(例如,ISRAM)中。然后,该SPA(例如,302)中的SPE(例如,304(1)、304(2)、...、304(n))执行一系列数据处理、变换步骤,最后将结果放入输出缓冲器318(例如,输出分级RAM(OSRAM))。此时,DMA引擎(例如,图2B的206)可以将结果传输到SPA外部的存储器缓冲器(310)中。DMA引擎(例如,图2B的206)可以将数据从SPA(例如,202(1))的输出缓冲器318(例如,OSRAM)移动到另一SPA(例如,202(2))的输入缓冲器316(例如,ISRAM)中。因此,如果某些应用需要的话,SPA架构能够流水线化多个SPA(例如,如图2B所示的202(1)、202(2)、...、202(n))。通常,SPA(例如,如图2B所示的202(1)、202(2)、...、202(n))被配置为在数据的不同切片上并行运行。SPA(例如,202(2))中的所有的SPE(例如,304(1)、304(2)、...、304(n))可以通过嵌入式处理器可访问的配置模块314来配置。嵌入式处理器上运行的APM固件执行SPA和SPE管理。固件根据需要将适当的微代码加载到SPE(例如,304(1)、304(2)、...、304(n))中。如果需要,每个SPA(例如,302)还包含系统存储器访问模块(SAM)312,其向SPE(例如,304(1)、304(2)、...、304(n))提供双倍数据速率(Double Data Rate,DDR)存储器访问。
在存储设备(例如,FPGA+SSD)附近或内部处理数据为应用提供了更低的响应延迟。它还节省了将大型数据集移动到处理器(例如,主机处理器)所需的大量能量。此外,它支持分布式计算,或者换句话说,分流和加速某些应用功能。依赖于从存储系统(例如,FPGA+SSD)到主机处理器的大量数据移动的应用功能可能受益最大。将这些应用功能分流到存储设备(例如,现场可编程门阵列(FPGA)+SSD)可以最大限度地减少所需的计算资源,从而降低信息技术(Information Technology,IT)基础架构(infrastructure)(包括计算周期、内存、网络带宽和能耗)的成本。
为存储分流和加速而选择的应用功能首先在主机上被拦截。有多种方法和点可以进行这种拦截。一旦应用功能调用被拦截,处理该调用所需的相关信息就会被收集起来。通常,这些信息包含数据源、处理类型和结果的目的地。
一旦这样的应用功能调用处理信息被收集,它就被传递给将管理分流和加速过程的主机侧软件层(例如,应用栈、存储栈、NVMe驱动器,如图1所示)。该主机侧软件层知道现有和可用的加速能力、与加速平台交互的方法以及跟踪所分流的功能的运行时状态的方法。当ASM(例如,图1的ASM 102)接收到应用分流处理信息时,它选择加速平台来使用并调度处理。初始化将适当的数据加载到加速平台缓冲器所需的数据传输DMA(例如,图2B的206)。然后,将加速调用触发和信息发送到加速平台。APM(例如,图1的APM 104)是存在于加速平台上的ASM的对等体,并响应于ASM通信。ASM(例如,图1的ASM 102)和APM(例如,图1的APM 104)之间的通信可以以许多不同的方式实施。
在加速平台上运行的APM(例如,图1的APM 104)固件提供存储设备(例如,SSD)侧应用功能所使用的一组服务。存储设备(例如,SSD)或平台侧应用固件主要具有两个操作区域:a)加速引擎即SPA(例如,如图2B所示的202(1)、202(2)、...、202(n))的初始化和b)SPA(例如,如图2B所示的202(1)、202(2)、...、202(n))的监控和运行时配置。应用固件使用APM(例如,图1的APM 104)服务来实施和管理其在平台上的加速功能。
在初始化阶段,应用固件获得分配给它使用的适当的SPA(例如,如图2B所示的202(1)、202(2)、...、202(n))。一旦它获得SPA(例如,如图3所示的302)的(多个)句柄(handle),它就将适当的微代码加载到该SPA(例如,如图3所示的302)的SPE(例如,304(1)、304(2)、...、304(n))中。它还根据需要配置SPA(例如,如图3所示的302)的其他特征。
在运行时期间,当所分流的应用被主机软件调用时,它接收与功能调用有关的相关参数。更具体地,设备侧应用接收关于要处理的数据源、调用的参数和结果的目的地的信息。应用固件(例如,使用APM,例如,图1的APM 104)将任何必要的参数编程到SPA(例如,如图3所示的302)的SPE(例如,304(1)、304(2)、...、304(n))中。其将输入数据和结果DMA(例如,图2B的206)指令发送到APM(例如,图1的APM 104)。如先前所述,ASM(例如,图1的ASM102)将输入数据递送到存储设备缓冲器中。这些缓冲器被称为输入分级随机存取存储器(ISRAM)(例如,508,如图5A所示)。应用固件将DMA描述符写入缓冲管理器(例如,406,如图4A所示)中的适当的DMA通道。DMA描述符提供关于将从SSD控制器接收的数据移动到被称为ISRAM(例如,图3的316)的适当的SPA输入缓冲器中的信息。应用固件还对另一DMA通道进行编程,以将SPA处理结果从OSRAM(例如,图3的318)存储器移动到存储设备缓冲器。一旦DMA(例如,图2B的206)被编程,应用固件就将SPE(例如,304(1)、304(2)、...、304(n))从重置(reset)中取出。此时,SPE(例如,304(1)、304(2)、...、304(n))开始处理所请求的数据并产生预期结果。一旦处理完成,应用固件(例如,使用APM,例如,图1的APM 104)将结果发送回主机侧应用组件。
被选择用于处理的SPA(例如,SPA 302)中的第一SPE(例如,SPE 304(1))持续监控输入数据的到达。一旦在输入数据缓冲器(IDB)(例如,312(1))中检测到足够的输入数据,第一SPE(例如,304(1))就开始处理。它从IDB(例如,312(1))读取数据,对其进行处理,然后将适当的中间结果写入下一级(例如,304(2))的IDB(例如,312(2))。一旦批量数据被第一SPE(例如,SPE 304(1))完全处理,它就向第二SPE(例如,304(2))发送触发。此时,第二SPE(例如,304(2))开始在其IDB(例如,312(2))中处理数据。并且随后对后续的SPE(例如,304(3)、...、304(n))进行该过程。
当所有请求的数据都被SPE(例如,304(1))处理时,设置“完成(done)”状态。应用固件监控所有的SPE(例如,304(1)、304(2)、...、304(n))来完成处理。一旦结果可用并被移出SPA(例如,302),应用固件可以禁用该SPA(例如,302)。
图4A示出了使用桥接设备的非易失性存储器(NVM)规范(NVMe)或基于结构的NVMe(NVMe-oF)硬件数据路径的SPA。在一些实施例中,NVMe/NVMe-oF硬件数据路径可以使用三端口开关或桥接逻辑。其他可能的SPA实施方式可以是1)集成在SSD控制器中,2)使用FPGA或ASIC的SSD控制器协处理器设备,3)NVMe至NVMe或NVMe-oF至NVMe桥接。
在图4A的SPA实施方式中,SPA子系统402可以包括SPA 404(1)、...、404(n),它们可以是如图2B所示的SPA 202(1)、202(2)、...、202(n)。
SPA子系统402中的缓冲管理器(Buffer Manager,BM)模块406实施了一组用于从SSD控制器(例如,图2A-2B的204)接收数据的片上缓冲器。缓冲管理器模块406维持利用外部动态随机访问存储器(Dynamic Random-Access Memory,DRAM)414中的一组更大的缓冲器备份的一组片上缓冲器。缓冲管理器模块406从SSD控制器(例如,图2A-2B的204)接收数据并存储在空闲的片上缓冲器中,在片上缓冲器上溢的情况下通过接口412(例如,高级可扩展接口(Advanced Extensible Interface,AXI)主接口)访问外部DRAM 414,利用DMA通道,将到SPA子系统402的数据移动到ISRAM或者将来自SPA子系统402的数据移动到OSRAM,利用处理器访问模块(PAM)接口接收DMA描述符和其他配置。缓冲管理器模块406还从NVMe/NVMe-oF硬件数据路径408接收数据并将该数据存储在片上或片外缓冲器中。在一些实施例中,缓冲管理器模块406可以利用片上缓冲器作为高速缓存,并提供缓冲器管理、分配、解除分配等。缓冲管理器模块406还可以直接或通过片上开关提供到用于上溢缓冲器的DRAM的接口,并且提供到用于配置的PAM(例如,图5A的512)的接口,以及到用于数据传输的SSD控制器(例如,图2A-2B的204)的接口。
下表(表1)示出了DMA描述符格式的一个示例。在任何给定时间,都可能有多个描述符处于活动状态或未完成状态。
表1
下表(表2)提供了描述符字段的描述。
表2
缓冲管理器406为每个DMA描述符提供完成状态。完成状态包括相应的描述符ID,使得APM(例如,图1的APM 104)固件可以将其绑定回描述符请求。
以下格式(表3和表4)是用于DMA描述符完成状态的一个示例。
表3
表4
图4B示出了图4A的连接结构模块410的高级架构。连接结构模块410实施一组SPA、一组特定SPA(如快速解压缩器)和缓冲管理器(406)或DMA引擎之间的数据移动或连接。连接结构模块410执行三个功能来实现平滑的数据移动:1)向缓冲管理器406或DMA引擎提供可用数据或可用空间状态,2)为缓冲管理器406或DMA引擎提供接口以将数据写入SPA 404(1)、...、404(n)或提供数据输入(data-in)接口,和3)为缓冲管理器406或DMA引擎提供接口以从SPA 404(1)、...、404(n)读取数据或提供数据输出(data-out)接口。
下表(表5)列出了上述接口的信号。
表5NVMe/NVMe-oF硬件数据路径模块408实现主机与SSD控制器(例如,图2A-2B的204)交互的NVMe直通路径。主机通过NVMe/NVMe-oF硬件数据路径模块408执行数据写入和读取操作。NVMe/NVMe-oF硬件数据路径模块408还支持用于从SSD控制器(例如,图2A-2B的204)捕获对等数据的接口,以使用SPA(例如,图2A的202(1)或图4A的404(1)、...、404(n))进行进一步处理。NVMe/NVMe-oF硬件数据路径模块408实现地址范围过滤功能。主机使用编程的地址范围来从SSD控制器(例如,图2A-2B的204)获取数据,以供SPA(例如,图2A的202(1)或图4A的404(1)、...、404(n))处理。主机也可以将SPA(例如,图2A的202(1)、202(2)、...、202(n)或图4A的404(1)、...、404(n))结果存储回SSD控制器(例如,图2A-2B的204)。对于该功能,主机将发送源地址落入NVMe/NVMe-oF硬件数据路径模块408中编程的过滤地址范围内的NVMe写入命令。
如图4A-4B所示的SPA 404(1)、...、404(n)中的每个SPA具有其自己的地址映射。基本上有两组不同的寄存器:a)SPA全局的,b)SPE特定的。根据存在于SPA中的SPE的数量,SPE寄存器具有那样多的副本。除了全局配置、状态寄存器之外,SPA地址映射还包含数据分级RAM、ISRAM和OSRAM。下表(表6)示出了每个SPA的一个示例地址映射及其内容。
表6
图5A示出了SPA架构500的框图。SPA 500包括一组SPE切片504(0)和504(1)、ISRAM508、OSRAM 510、PAM 512和SAM 514。
如图5A所示,SPE或SPE切片504(0)、504(1)链接在一起,以实现流水线数据处理和变换。在给定的SPA设计中,可以存在N个SPE切片。取决于应用,可能不会使用所有的SPE切片。SPE(例如,SPE切片504(0)、504(1))输出被复用(例如,在复用器506处)到存在于系统总线上的输出缓冲器或OSRAM 510中。复用器506可以选择用于数据处理的SPE切片。复用器506可以基于从运行在嵌入式处理器上的固件(例如,APM)接收的指令(因为APM执行SPE管理),选择来自最后一个SPE切片(例如,SPE切片504(0)、504(1))的输出。例如,复用器506选择流水线的最后一个切片。对于给定应用,可能不会使用SPA的所有切片,因此选择最后一个切片用于输出。
缓冲管理器(例如,缓冲管理器406)使用ISRAM 508来存放数据以供SPA 500处理。数据从SSD控制器中获取,并由缓冲管理器(例如,缓冲管理器406)递送到指定的SPA 500(或404(1))中。ISRAM 508中可用的空闲空间量在SPA 500寄存器中指示。缓冲管理器(例如,缓冲管理器406)将空闲空间信息用于流控制目的。
缓冲管理器(例如,缓冲管理器406)使用OSRAM 510来将SPA 500的处理结果移动到其片上缓冲器或外部DRAM(例如,414)中的目的地。可移出的数据量在SPA寄存器中指示。
PAM 512向在嵌入式处理器上运行的固件提供SPA配置访问。在嵌入式处理器上运行的固件APM执行SPA和SPE管理。PAM 512实现SPA的地址映射。它本质上实现了由嵌入式处理器使用的AXI从接口以配置、控制和监控SPA或此类模块。图5B示出了PAM 512的框图。在图5B中,PAM 512模块实现读和写状态机,以接受来自APM的读/写事务。然后,它解码该事务地址,并对SPA全局寄存器或指定的SPE执行所请求的读或写操作。
SAM 514为SPA(例如,500)中的所有SPE(例如,504(0)、504(1))提供AXI主接口,以访问外部DRAM(例如,414)。SPA(例如,500)中的所有SPE(例如,504(0)、504(1))都具有紧密耦接的高性能数据和指令存储器。在极少数情况下,如果某些用例需要比片上存储器更大的指令和/或数据存储器,则SPE(例如,504(0)、504(1))可以使用该接口。SAM 514执行SPA(例如,500)内的SPE(例如,504(0)、504(1))的仲裁(arbitration),以提供DRAM(例如,414)访问。图5C示出了SAM 514的框图。在图5C中,SAM 514模块实现读和写状态机,以对DRAM存储器执行读或写操作。它通过写数据FIFO接受来自SPE的写数据,然后将该数据存入DRAM存储器的指定地址。对于读请求,它从DRAM的指定地址中获取数据,并将该数据存入读数据FIFO,供SPE从那里对其进行读取。
图5D是示出SPE切片(例如,SPE切片504(0)或504(1))细节的框图。图5E-5F示出了两个SPE级SPE(n)和SPE(n+1)的存储器层级以及以链接方式连接的两个SPE级SPE(n)和SPE(n+1)之间的数据共享。
每个SPE都有单独的总线用于指令存储器或指令RAM(IRAM)和数据存储器或DRAM。如表7所示,数据存储器或DRAM分为以下五个主要组:
表7
如果需要或根据需要,合并APM的编排器或嵌入式处理器530可以访问所有上述存储器(例如,IRAM、IDB、ODB、ARAM、MRAM)。在一些实施例中,IRAM和/或高速暂存区的大小或位置在(SPE中的)微代码的编译时是已知的。ARAM、MRAM、IDB、ODB或片外DDR存储器作为公知的地址指针由SPE访问。
在图5D和图5E中,应用固件使用SPE PAM_IF接口512将SPE微代码下载到IRAM 518中。它还用于访问固件可访问的其他数据存储器或DRAM区域,诸如参数空间或ARAM 524、调试寄存器和SPE的状态。ISRAM模块(508)使用SPE IDB_WRITE(输入)特征将输入数据加载到第一SPE切片(例如,504(0))的IDB(例如,520)中。所有SPE切片(除了第一个切片)上的该接口连接到之前的级(stage)以创建如图5E所示的链接(chaining),如SPE级“n+1”的IDB 522连接到SPE级“n”以创建链接(例如,也如图3所示,如312(2)、...、312(n)连接到之前的级以创建链接)。SPE IDB_Space_Ave(输出)特征指示IDB(例如,520,522)中空闲空间的字数。缓冲管理器(例如,缓冲管理器406)使用该信息将数据存入第一SPE切片(例如,504(0))的IDB(例如,520)中。SPE(例如,SPE级“n”或SPE504(0))也使用它来使用ODB_Write将中间结果写入下一SPE级(例如,SPE级“n+1”或SPE 504(1))。SPE ODB_Space_Ave(输入)特征指示下一级(例如,SPE级“n+1”或SPE 504(1))的IDB(例如,524)中可用空闲空间的字数。SPE(例如,SPE级“n”或SPE 504(0))也使用它来使用ODB_Write将中间结果写入下一SPE级(例如,SPE级“n+1”或SPE 504(1))。SPE TRIGGER_IN(输入)特征是一个时钟宽度的触发脉冲。它用于递增TRIGGER_IN_CNT计数器。SPE TRIGGER_OUT(输出)特征是一个时钟宽度的触发脉冲。它用于递增TRIGGER_OUT_CNT计数器。SPE_TB(只写)特征指向用于调试微代码的跟踪缓冲器。
在一些实施例中,用于调试目的的SPE微代码将调试信息消息写入跟踪缓冲器。这些消息本质上被表示为一系列字母-数字字符。然后,这些字母和数字由APM显示在调试监控器上。
SPE_BUSY特征可以向编排器或嵌入式处理器指示该SPE正忙于处理数据或批量数据。SPE_SOB_OUT特征为流水线中的下一SPE生成批处理脉冲的开始,指示SPE已经开始处理批量数据。SPE_EOB_OUT特征为流水线中的下一SPE生成批处理脉冲的开始,指示SPE已结束处理批量数据。所有上述编程特征都是基于MRAM的,并且由运行在SPE(例如,SPE 504(0)或SPE 504(1))上的微代码以编程方式访问以作为指针。下表(表8)示出了具有SPE特征的SPE地址映射。
表8
如图5E所示,SPE(例如,SPE级“n+1”)的IDB(例如,522)是前一SPE(例如,SPE级“n”)的ODB,并且在相邻SPE(例如,SPE级“n”和SPE级“n+1”)之间存在共享缓冲器(例如,IDB522)。在相邻SPE级(例如,SPE级“n”和SPE级“n+1”)之间的数据共享期间,通过MRAM(例如,526、528)访问编程状态IDB_Data_Ave和ODB_Space_Ave(ODB),通过MRAM(例如,526、528)的ODB_Write_Pointer提供ODB写提交,通过MRAM(例如,526、528)的IDB_Read_Pointer提供IDB读提交。在相邻SPE(例如,SPE级“n”和SPE级“n+1”)之间的数据共享中,代替传统的来回(ping-pong)缓冲器,共享缓冲器(例如,IDB 522)被最佳地使用。
图5F还示出了当前级的SPE(例如,SPE级“n+1”)的IDB(例如,522)是前一级的SPE(例如,SPE级“n”)的ODB,并且相邻SPE(例如,SPE级“n”和SPE级“n+1”)之间存在共享缓冲器(例如,IDB 522)。该共享缓冲器或IDB(例如,522)由SPE级“n”使用ODB R/W接口写入,并由SPE级“n+1”使用IDB R/W接口读取。在一些实施例中,共享缓冲器或IDB(例如,522)被分成两个分区:1)写区域,由SPE级“n”主动写入,和2)读区域,由SPE级“n+1”主动读取。这两个分区的边界被清楚地标记,以便写和读过程不会相互冲突。写分区是ODB_Write_Ptr和IDB_Read_Ptr之间的共享缓冲器的区域。读分区是IDB_Read_Ptr和ODB_Write_Ptr之间的共享缓冲器的区域。当写入新数据时,SPE级“n”将ODB_Write_Ptr更新到一个新值,从而向读取过程指示新数据可用于读取。类似地,当读取和处理现有数据时,SPE级“n+1”将IDB_Read_Ptr更新到一个新值,从而向写入过程指示新空间可用于写入。这种读取和写入指针交换有助于读取和写入过程之间的平滑流控制,并允许它们交换任意大小的数据交换。这种机制避免了上溢和下溢条件,同时实现了对共享缓冲器资源的最佳使用,而没有共享缓冲器存储器资源的任何浪费或未充分利用。换句话说,这种机制能够在流水线数据处理系统的两级之间实现高性能、低资源成本的异步数据交换。
图6是示出APM的高级操作的框图。APM(例如,APM 602)是固件层,其为加速存储设备中存在的SPA加速引擎(例如,SPE)的管理和操作提供一组服务。应用控制平面604固件使用这些调用来建立必要的SPA。这些服务还在运行时期间用于配置和监控活动的SPA,以及执行应用工作流程中必要的各种DMA操作。
意图用于加速的应用主要有两个组件,a)控制平面,b)数据平面。控制平面在嵌入式处理器606上运行。数据平面在跨一个或多个SPA 608分布的一个或多个SPE上运行。应用控制平面604主要有两个操作阶段。首先,在应用在嵌入式处理器606上启动(launched)之后,它需要获取加速处理所需的资源,然后初始化这些资源。加速资源由APM 602(运行在嵌入式处理器606上的固件)提供和管理,因此应用需要APM服务来获取和初始化所需类型和数量的SPA。
图7是示出SPA初始化方法的流程图。在初始化期间,在702处,APM固件(例如,APM602)利用适当资源分配空闲SPA(例如,如图3所示的302或图5A的502)。在704处,如果APM从ASM接收到解除分配SPA的请求,则APM解除分配SPA。如果在APM处没有接收到对SPA的解除分配,则在706处,APM将适当的微代码下载到所分配的SPA(例如,302或502)的所有SPE(例如,304(1)、304(2)、...、304(n)或504(0)、504(1))中。在708处,APM选择所分配的SPA(例如,302或502)中的最后一个SPE(例如,304(n)或504(1))并配置OSRAM复用器(506)。在710处,如果需要,APM可以将所分配的SPA(例如,302或502)从“重置”中取出。
图8是示出SPA运行时操作的方法的流程图。应用控制平面(例如,604)的第二部分处理运行时操作。当运行在嵌入式处理器上的应用被主机侧运行时软件(诸如ASM)调用时,APM需要为数据处理配置SPA,然后触发SPA完成加速工作。
在运行时期间,当所分流的应用被主机软件调用时,APM接收与函数调用有关的相关参数。更具体地,设备侧应用接收关于要处理的数据源、调用的参数和结果的目的地的信息。在运行时操作的开始处,APM可以基于从ASM接收的关于数据源的信息,(从连接到嵌入式处理器或FPGA的SSD)提取用于数据处理的相关信息。
在802处,APM固件将任何必要的参数编程到适当的SPA(例如,SPA502)的SPE(例如,504(0)、504(1))中。
在804处,APM创建并编程数据移动描述符。例如,APM将DMA描述符写入缓冲管理器(例如,406,如图4A所示)中的适当的DMA通道。DMA描述符提供关于将从SSD控制器接收的数据移动到被称为ISRAM(例如,508)的适当的SPA输入缓冲器中的信息。APM还对另一DMA通道进行编程,以将SPA处理结果从OSRAM(例如,图3的318)存储器移动到外部缓冲器。
在806处,APM启用SPA(例如,SPA 502)中的SPE(例如,504(0)、504(1))。例如,一旦DMA(例如,图2B的206)被编程,APM就将SPE(例如,304(1)、304(2)、...、304(n))从重置中取出。此时,SPE(例如,304(1)、304(2)、...、304(n))开始处理所请求的数据并产生预期结果。例如,被选择用于处理的SPA(例如,SPA 302)中的第一SPE(例如,SPE 304(1))持续监控输入数据的到达。一旦在输入数据缓冲器(IDB)(例如,312(1))中检测到足够的输入数据,第一SPE(例如,304(1))就开始处理。它从IDB(例如,312(1))读取数据,对其进行处理,然后将适当的中间结果写入下一级(例如,304(2))的IDB(例如,312(2))中。一旦批量数据被第一SPE(例如,SPE 304(1))完全处理,它就向第二SPE(例如,304(2))发送触发。此时,第二SPE(例如,304(2))开始在其IDB(例如,312(2))中处理数据。并且随后对后续的SPE(例如,304(3)、...、304(n))进行该过程。
在808处,APM确定是否所有请求的数据都被SPE处理。当所有请求的数据都被SPE(例如,304(1))处理时,微代码设置“完成”状态。APM监控所有的SPE(例如,304(1)、304(2)、...、304(n))完成处理。
在810处,一旦处理被所有SPE(例如,304(1)、304(2)、...、304(n))完成,APM将DONE(完成)状态返回到应用控制平面,该应用控制平面继而又将结果发送回主机侧应用组件。
在812处,一旦结果可用并被移出SPA(例如,302),APM就重置或禁用该SPA(例如,302)。
下表(表9)示出了目前识别到的APM应用编程接口(Application ProgrammingInterface,API)。
表9API“apm_init”初始化APM,API“apm_spa_alloc”分配可用的SPA,API“apm_spa_dealloc”解除分配SPA,API“apm_spa_spe_opcode_download”将应用微代码操作码文件下载到SPE IRAM,API“apm_spa_spe_last”设置SPA的最后一个SPE,API“apm_spa_spe_aram_write”将应用参数写入SPE ARAM,API“apm_spa_spe_aram_read”从SPE ARAM读取数据,API“apm_spa_set_reset_mask”开启SPA的一个或多个SPE,API“apm_spa_check_done”检查是否SPA的所有SPE都已完成,API“apm_spa_load_input_data”通过对缓冲管理器DMA进行编程将数据的输入块从外部存储器加载到SPA ISRAM数据缓冲器,API“apm_spa_get_output_data”获取从SPA输出数据缓冲器(OSRAM)到指定的外部存储器位置的输出数据,API“apm_spa_get_tb_bit_mask”获取SPA的跟踪缓冲器位掩码,API“apm_spa_reg_dump”登载(print)SPA寄存器,API“apm_spa_spe_opcode_dump”转储(dump)SPE操作码,API“apm_spa_spe_data_dump”转储SPE数据,API“apm_spa_spe_read_tb”读取SPE跟踪缓冲器,API“apm_spa_config_read”从SPA配置寄存器读取值,并且API“apm_spa_config_write”将值写入SPA配置寄存器。
在应用数据平面中,每个SPE切片(例如,504(0)、504(1))被编程有执行应用所需的一个或多个特定数据处理或操纵功能的应用特定微代码。SPE(例如,SPE级“n+1”)上的微代码等待输入数据或来自更早处理级(例如,SPE级“n”)的中间结果的到达。在处理输入数据或更早级(例如,SPE级“n”)的结果之前,微代码确保输出数据缓冲器中有足够的空间,该输出数据缓冲器仅作为后续级的输入数据缓冲器。一旦满足这两个条件,它将启动主处理功能。微代码在SPE地址映射的范围内操作。SPE微代码基础结构使用的地址和数据结构描述如下。下面的数据结构指针从SPE地址映射是公知的。
例如,“IDB_ptr”是指向要处理的数据缓冲器的指针,“ODB_ptr”是指向要存放结果的数据缓冲器的指针,“ARG_ptr”是指向参数块的指针,如果需要,“IDB_Data_Ave_ptr”是包含可用数据的字数的寄存器,“ODB_Space_Ave_ptr”是包含可用于结果的空间的字数的寄存器。
SPE(例如,SPE级“n”)微代码访问来自IDB(例如,520)和ODB(例如,522)缓冲器的数据。每个SPA(例如,502)具有两个将数据移入和移出SPA(502)的分级存储器(例如ISRAM508和OSRAM 510)。缓冲管理器(例如,406)负责在SPA(例如,404(1)、...、404(n))和DRAM(例如,414)之间移动数据。缓冲管理器(例如,406)使用一组DMA描述符来执行数据移动。每个DMA描述符本质上提供了由源地址、目的地址、长度和某些标志组成的元组。(运行在嵌入式处理器上的)APM(例如,602)固件根据需要将必要的DMA描述符编程到缓冲管理器(例如,406)。APM(例如,602)基于从应用接收到的参数来构建适当的DMA描述符以用于数据移动。APM为应用提供了两个API,用于到/从SPA(例如,404(1)、...、404(n))和DRAM(例如,414)的数据移动的目的。
图9示出了显示相对于在主机CPU处或在硬件处理数据,当使用SPE架构(例如,图5A)处理数据时性能、功率、面积、成本等如何的图表。使用普通CPU执行的数据处理提供了更好的灵活性以及调试和开发的便利性,尽管性能、功率和面积可能不是最好的。在图谱(spectrum)的另一方面,基于硬件的数据处理可以提供更好的性能、功率和面积,然而它可能缺乏灵活性以及调试和开发的便利性。因此,提出的SPE架构试图在这两个极端之间提供平衡,并试图实现两者中的最佳效果。也就是说,SPE架构结合了CPU的优势,诸如灵活性和开发的便利性,以及硬件的优点,诸如性能和功率。
应当理解,尽管术语“第一”、“第二”、“第三”等可以在本文用来描述各种元素、组件、区域、层和/或部分,但是这些元素、组件、区域、层和/或部分不应该受这些术语的限制。这些术语仅用于区分一个元素、组件、区域、层或部分与另一个元素、组件、区域、层或部分。因此,在不脱离本发明构思的精神和范围的情况下,本文讨论的第一元素、组件、区域、层或部分可以被称为第二元素、组件、区域、层或部分。
空间相对术语,诸如“在…之下”、“在…下面”、“下方”、“在…下方”、“之上”、“上方”等,可以在本文使用,以便于描述一个元素或特征与(多个)另一元素或特征的关系,如图所示。应当理解,除了图中描绘的方位之外,这种空间相对术语旨在涵盖使用中或操作中的设备的不同方位。例如,如果图中的设备被翻转,则被描述为“在其他元素或特征下面”、“在其他元素或特征之下”或“在其他元素或特征下方”的元素将被定向为“在其他元素或特征之上”。因此,示例术语“之下”和“在…下方”可以涵盖之上和之下两者的方位。设备可以以其他方式定向(例如,旋转90度或以其他方位),并且在本文使用的空间相对描述符应该被相应地解释。此外,还将理解,当一个层被称为“在两个层之间”时,它可以是两个层之间的唯一层,或者也可以存在一个或多个中间层。
本文使用的术语仅用于描述特定实施例的目的,并不旨在限制本发明构思。如本文所使用的,术语“基本上”、“大约”和类似术语被用作近似术语,而不是程度术语,并且旨在说明本领域普通技术人员将认识到的测量值或计算值中的固有偏差。
如本文所使用的,单数形式“一”和“一个”旨在也包括复数形式,除非上下文清楚地另有指示。还应当理解,当在本说明书中使用时,术语“包括”和/或“包含”指定所述特征、整数、步骤、操作、元素和/或组件的存在,但是不排除一个或多个其他特征、整数、步骤、操作、元素、组件和/或其组的存在或添加。如本文所使用的,术语“和/或”包括一个或多个相关列出项的任何和所有组合。当诸如“至少一个”的表达式在元素列表之前时,其修饰整个元素列表,而不是修饰列表中的单个元素。此外,当描述本发明构思的实施例时,“可以”的使用指的是“本发明的一个或多个实施例”。此外,术语“示例性”旨在指示例或说明。如本文所使用的,术语“使用”可以被认为分别与术语“利用”同义。
应当理解,当一个元素或层被称为“在另一个元素或层上”、“连接到另一个元素或层”、“耦接到另一个元素或层”或“邻近另一个元素或层”时,它可以直接在另一个元素或层上、直接连接到另一个元素或层、直接耦接到另一个元素或层或直接邻近另一个元素或层,或者可以存在一个或多个中间元素或层。相反,当一个元素或层被称为“直接在另一个元素或层上”、“直接连接到另一个元素或层上”、“直接耦接到另一个元素或层上”或“紧邻另一个元素或层”时,不存在中间元素或层。
本文所述的任何数值范围旨在包括包含在所述范围内的相同数值精度的所有子范围。例如,“1.0至10.0”的范围旨在包括所述最小值1.0和所述最大值10.0之间(并且包括所述最小值1.0和所述最大值10.0)的所有子范围,也就是说,具有等于或大于1.0的最小值和等于或小于10.0的最大值,诸如,例如2.4至7.6。本文所述的任何最大数值限制旨在包括纳入其中的所有更低的数值限制,并且本说明书中所述的任何最小数值限制旨在包括纳入其中的所有更高的数值限制。
根据本文描述的本发明实施例的电子或电气设备和/或任何其他相关设备或组件可以利用任何合适的硬件、固件(例如,专用集成电路)、软件或软件、固件和硬件的组合来实现。例如,这些设备的各种组件可以形成在一个集成电路(Integrated Circuit,IC)芯片上或单独的IC芯片上。此外,这些设备的各种组件可以在柔性印刷电路膜、带载体封装(Tape Carrier Package,TCP)、印刷电路板(Printed Circuit Board,PCB)上实现,或者形成在一个基板上。此外,这些设备的各种组件可以是运行在一个或多个处理器上、在一个或多个计算设备中、执行计算机程序指令并与其他系统组件交互以执行本文描述的各种功能的进程或线程。计算机程序指令存储在存储器中,该存储器可以实现在使用标准存储器设备(诸如,例如随机存取存储器(RAM))的计算设备中。计算机程序指令也可以存储在其他非暂时性计算机可读介质中,诸如,例如CD-ROM、闪存驱动器等。此外,本领域技术人员应当认识到,在不脱离本发明的示例性实施例的精神和范围的情况下,各种计算设备的功能可以被组合或集成到单个计算设备中,或者特定计算设备的功能可以跨一个或多个其他计算设备分布。
尽管本文已经具体描述和示出了用于在SSD中加速数据处理的系统和方法的示例性实施例,但是对于本领域技术人员来说,许多修改和变化将是明显的。因此,应当理解,根据本发明的原理构造的在SSD中加速数据处理的系统和方法可以不同于本文所具体描述地实施。本发明也在所附权利要求及其等同物中定义。
Claims (20)
1.一种系统,包括:
一个或多个存储处理加速器SPA,所述一个或多个SPA中的SPA包括在流水线中耦接在一起的可编程处理器;和
加速平台管理器APM,连接到所述一个或多个SPA和所述可编程处理器,并且被配置为控制所述一个或多个SPA和所述可编程处理器中的数据处理。
2.根据权利要求1所述的系统,其中,所述可编程处理器包括一个或多个存储处理引擎SPE,其中,所述一个或多个SPE中的SPE被配置为向所述流水线中的下一个SPE提供所述SPE的输出,以用作所述下一个SPE的输入,并且
其中,所述APM被配置为:
从应用服务管理器ASM接收应用功能处理信息,并从所述一个或多个SPA分配所述SPA;
将微代码下载到所述SPA中的所述一个或多个SPE中的所述SPE中;
基于所述应用功能处理信息提取数据;
将从所述ASM接收的一个或多个参数编程到所述SPA中的所述一个或多个SPE中的所述SPE中;
创建并编程一个或多个数据移动描述符;
启用所述SPA中的所述一个或多个SPE,其中一旦被启用,所述SPA中的所述一个或多个SPE中的所述SPE被配置为基于所述应用功能处理信息来处理数据;
确定所述SPA中的所述一个或多个SPE中的所述SPE是否完成了数据处理;以及
基于确定所述SPA中的所述一个或多个SPE中的所述SPE完成了数据处理,向所述ASM发送所述SPA的所述SPE的数据处理的结果。
3.根据权利要求2所述的系统,还包括主机处理器,所述主机处理器被配置为:
拦截应用功能调用;
收集所述应用功能处理信息,所述应用功能处理信息包括用于处理所述应用功能调用的数据源、所述应用功能调用的处理类型、所述应用功能调用的参数以及在所述数据被处理之后的结果的目的地中的一个或多个;以及
在主机设备软件栈中接收所述应用功能处理信息,其中,基于接收到所述应用功能处理信息,所述主机处理器中的ASM被配置为:
选择用于应用功能处理的包括所述APM的处理器;
调度所述处理器中的所述数据处理;
初始化数据传输直接存储器访问DMA引擎,以将适当的数据加载到所述处理器的一个或多个缓冲器中;以及
向所述处理器发送调用触发和所述应用功能处理信息。
4.根据权利要求2所述的系统,其中,所述一个或多个SPA中的所述SPA包括输入缓冲器或输入分级随机存取存储器ISRAM和输出缓冲器或输出分级RAM OSRAM,其中,所述系统还包括复用器,所述复用器被配置为将所述SPA中的所述一个或多个SPE的输出复用到所述SPA的所述OSRAM中。
5.根据权利要求2所述的系统,其中,所述SPE包括输入数据缓冲器IDB,其中,所述SPE被配置为将所述SPE的输出写入所述流水线中的所述一个或多个SPE中的所述下一个SPE的所述IDB中。
6.根据权利要求5所述的系统,其中,所述IDB在所述一个或多个SPE中的两个相邻SPE之间共享。
7.根据权利要求5所述的系统,其中,在所述一个或多个SPE中的所述SPE上运行的所述微代码被配置为以编程方式生成所述流水线中的所述一个或多个SPE中的所述下一个SPE的批处理开始和批处理结束指示,用于面向批处理的流水线数据处理。
8.根据权利要求5所述的系统,还包括连接到包括所述APM的处理器的一个或多个固态驱动器SSD,其中,所述APM被配置为从所述一个或多个SSD提取数据,以由所述一个或多个SPE处理。
9.根据权利要求8所述的系统,其中,所述APM被配置为从所述一个或多个SSD中提取数据,以由所述SPE处理。
10.根据权利要求2所述的系统,其中,所述APM还被配置为经由所述一个或多个SPE中的所述SPE来访问指令RAM IRAM和数据RAM DRAM中的一个或多个。
11.根据权利要求10所述的系统,其中,所述SPE包括用于所述IRAM的第一总线和用于所述DRAM的第二总线。
12.根据权利要求11所述的系统,其中,所述DRAM包括高速暂存区、输入数据缓冲器IDB、输出数据缓冲器ODB、参数RAM ARAM和杂项RAM MRAM,其中,一个或多个编程SPE特征被配置为基于所述MRAM,并且由在所述SPE上运行的微代码以编程方式访问以作为指针。
13.根据权利要求1所述的系统,其中,所述一个或多个SPA被配置为在在所述APM处接收的数据的不同切片上并行运行。
14.一种系统,包括:
一个或多个存储处理加速器SPA,所述一个或多个SPA中的SPA包括在流水线中耦接在一起的可编程处理器;和
处理器,连接到所述一个或多个SPA和所述可编程处理器,并且被配置为控制所述一个或多个SPA和所述可编程处理器中的数据处理。
15.根据权利要求14所述的系统,其中,所述可编程处理器包括一个或多个存储处理引擎SPE,其中,所述一个或多个SPE中的SPE被配置为向所述流水线中的下一个SPE提供所述SPE的输出,以用作所述下一个SPE的输入,并且
其中,所述处理器包括加速平台管理器APM,所述加速平台管理器被配置为:
从应用服务管理器ASM接收应用功能处理信息,并从所述一个或多个SPA分配所述SPA;
将微代码下载到所述SPA中的所述一个或多个SPE中的所述SPE中;
基于所述应用功能处理信息提取数据;
将从所述ASM接收的一个或多个参数编程到所述SPA中的所述一个或多个SPE中的所述SPE中;
创建并编程一个或多个数据移动描述符;
启用所述SPA中的所述一个或多个SPE,其中一旦被启用,所述SPA中的所述一个或多个SPE中的所述SPE被配置为基于所述应用功能处理信息来处理数据;
确定所述SPA中的所述一个或多个SPE中的所述SPE是否完成了数据处理;以及
基于确定所述SPA中的所述一个或多个SPE中的所述SPE完成了数据处理,向所述ASM发送所述SPA的所述SPE的数据处理的结果。
16.根据权利要求15所述的系统,其中,所述一个或多个SPA中的所述SPA包括输入缓冲器或输入分级随机存取存储器ISRAM和输出缓冲器或输出分级RAM OSRAM,并且其中,所述SPE包括输入数据缓冲器IDB,并且其中,所述SPE被配置为将所述SPE的输出写入所述流水线中的所述一个或多个SPE中的所述下一个SPE的所述IDB中。
17.根据权利要求16所述的系统,还包括连接到包括所述APM的所述处理器的一个或多个固态驱动器SSD,其中,所述APM被配置为从所述一个或多个SSD提取数据,以由所述一个或多个SPE处理。
18.根据权利要求15所述的系统,其中,所述APM还被配置为经由所述SPE来访问指令RAM IRAM和数据RAM DRAM中的一个或多个,其中,所述SPE包括用于RAM的第一总线和用于DRAM的第二总线,其中,所述DRAM包括高速暂存区、输入数据缓冲器IDB、输出数据缓冲器ODB、参数RAM ARAM和杂项RAM MRAM,其中,一个或多个编程SPE特征被配置为基于所述MRAM,并且由在所述SPE上运行的所述微代码以编程方式访问以作为指针。
19.一种设备,包括:
布置在集群中的可编程处理器,集群包括在流水线中耦接在一起的两个或更多个可编程处理器,其中,所述集群是存储处理加速器SPA,
其中,所述两个或更多个可编程处理器中的可编程处理器被配置为将所述可编程处理器的输出提供给所述流水线中的下一个可编程处理器,以用作所述下一个可编程处理器的输入;和
处理器,连接到所述集群和所述两个或更多个可编程处理器,并且被配置为控制所述集群和所述两个或更多个可编程处理器中的数据处理。
20.根据权利要求19所述的设备,还包括连接到包括加速平台管理器APM的所述处理器的一个或多个固态驱动器SSD,其中,所述两个或多个可编程处理器包括两个或更多个存储处理引擎SPE,并且其中,所述APM被配置为从所述一个或多个SSD中提取数据,以由所述SPE处理。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862775745P | 2018-12-05 | 2018-12-05 | |
US62/775,745 | 2018-12-05 | ||
US16/269,508 US11112972B2 (en) | 2018-12-05 | 2019-02-06 | System and method for accelerated data processing in SSDs |
US16/269,508 | 2019-02-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111274025A CN111274025A (zh) | 2020-06-12 |
CN111274025B true CN111274025B (zh) | 2022-09-27 |
Family
ID=70971835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911225754.6A Active CN111274025B (zh) | 2018-12-05 | 2019-12-04 | 用于在ssd中加速数据处理的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (4) | US11112972B2 (zh) |
KR (1) | KR102593583B1 (zh) |
CN (1) | CN111274025B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11112972B2 (en) * | 2018-12-05 | 2021-09-07 | Samsung Electronics Co., Ltd. | System and method for accelerated data processing in SSDs |
KR102659832B1 (ko) * | 2019-03-05 | 2024-04-22 | 삼성전자주식회사 | 데이터 저장 장치 및 시스템 |
US11726704B2 (en) * | 2020-03-31 | 2023-08-15 | Kioxia Corporation | Buffer optimization for solid-state drives |
FR3118528B1 (fr) * | 2020-12-28 | 2023-12-01 | Commissariat Energie Atomique | Module mémoire adapté à mettre en oeuvre des fonctions de calcul |
US11698870B2 (en) | 2020-12-31 | 2023-07-11 | Micron Technology, Inc. | Memory module data buffer |
EP4036725A1 (en) * | 2021-01-27 | 2022-08-03 | Samsung Electronics Co., Ltd. | Systems and methods for data transfer for computational storage devices |
US20230099831A1 (en) * | 2021-09-24 | 2023-03-30 | Samsung Electronics Co., Ltd. | Systems and methods for near-storage processing in solid state drives |
US20240054065A1 (en) * | 2022-08-15 | 2024-02-15 | Arm Limited | Behavioral sensor for creating consumable events |
WO2024163294A1 (en) * | 2023-02-01 | 2024-08-08 | Micron Technology, Inc. | System-level coordinated resilience |
US20240311318A1 (en) * | 2023-03-14 | 2024-09-19 | Samsung Electronics Co., Ltd. | Systems and methods for a cache-coherent interconnect protocol storage device |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101504337B1 (ko) * | 2008-06-26 | 2015-03-25 | 삼성전자주식회사 | 메모리 시스템 및 그 구동방법 |
US5664219A (en) * | 1995-06-12 | 1997-09-02 | International Business Machines Corporation | Method and system for controlling servicability of adapters connected by an I/O channel interface to a computer system |
WO2002069160A2 (en) * | 2001-02-28 | 2002-10-31 | Crossroads Systems, Inc. | Method and system for reconciling extended copy command target descriptor lengths |
US20040136241A1 (en) * | 2002-10-31 | 2004-07-15 | Lockheed Martin Corporation | Pipeline accelerator for improved computing architecture and related system and method |
AU2004290281A1 (en) | 2003-05-23 | 2005-05-26 | Washington University | Intelligent data storage and processing using FPGA devices |
US8688926B2 (en) | 2010-10-10 | 2014-04-01 | Liqid Inc. | Systems and methods for optimizing data storage among a plurality of solid state memory subsystems |
KR101578642B1 (ko) | 2010-11-16 | 2015-12-17 | 인텔 코포레이션 | 데이터 기억 시스템에 대한 엔드포인트 캐싱 |
EP2831693B1 (en) * | 2012-03-30 | 2018-06-13 | Intel Corporation | Apparatus and method for accelerating operations in a processor which uses shared virtual memory |
US9286472B2 (en) | 2012-05-22 | 2016-03-15 | Xockets, Inc. | Efficient packet handling, redirection, and inspection using offload processors |
US20130343181A1 (en) | 2012-06-21 | 2013-12-26 | Jonathan Stroud | Systems and methods of data processing using an fpga-implemented hash function |
US9286225B2 (en) | 2013-03-15 | 2016-03-15 | Saratoga Speed, Inc. | Flash-based storage system including reconfigurable circuitry |
US9619167B2 (en) | 2013-11-27 | 2017-04-11 | Intel Corporation | System and method for computing message digests |
US9887008B2 (en) | 2014-03-10 | 2018-02-06 | Futurewei Technologies, Inc. | DDR4-SSD dual-port DIMM device |
JP6181860B2 (ja) | 2014-04-28 | 2017-08-16 | 株式会社日立製作所 | ストレージ装置とそのデータ処理方法及びストレージシステム |
CN106575279B (zh) * | 2014-05-29 | 2019-07-26 | 阿尔特拉公司 | 可编程平台上的加速器架构 |
WO2016038710A1 (ja) | 2014-09-11 | 2016-03-17 | 株式会社日立製作所 | ストレージシステム |
US20160094619A1 (en) | 2014-09-26 | 2016-03-31 | Jawad B. Khan | Technologies for accelerating compute intensive operations using solid state drives |
US9569243B2 (en) | 2014-12-05 | 2017-02-14 | International Business Machines Corporation | Offloading and parallelizing translation table operations |
CN105046109B (zh) * | 2015-06-26 | 2018-06-29 | 四川云合创智科技有限公司 | 一种用于生物信息序列分析的加速平台 |
US10055142B1 (en) | 2015-10-13 | 2018-08-21 | Maxlinear Asia Singapore Pte Ltd. | Apparatus and method for command processing for a fast block input/output device |
US10095445B2 (en) | 2016-03-29 | 2018-10-09 | Western Digital Technologies, Inc. | Systems and methods for offloading processing from a host to storage processing units using an interconnect network |
US10091904B2 (en) | 2016-07-22 | 2018-10-02 | Intel Corporation | Storage sled for data center |
US10387303B2 (en) | 2016-08-16 | 2019-08-20 | Western Digital Technologies, Inc. | Non-volatile storage system with compute engine to accelerate big data applications |
US10503635B2 (en) | 2016-09-22 | 2019-12-10 | Dell Products, Lp | System and method for adaptive optimization for performance in solid state drives based on segment access frequency |
US10585843B2 (en) | 2018-03-05 | 2020-03-10 | Samsung Electronics Co., Ltd. | SSD architecture for FPGA based acceleration |
US11112972B2 (en) * | 2018-12-05 | 2021-09-07 | Samsung Electronics Co., Ltd. | System and method for accelerated data processing in SSDs |
-
2019
- 2019-02-06 US US16/269,508 patent/US11112972B2/en active Active
- 2019-02-07 US US16/270,434 patent/US11061574B2/en active Active
- 2019-10-11 KR KR1020190126445A patent/KR102593583B1/ko active IP Right Grant
- 2019-12-04 CN CN201911225754.6A patent/CN111274025B/zh active Active
-
2021
- 2021-06-09 US US17/343,495 patent/US11768601B2/en active Active
-
2023
- 2023-09-20 US US18/370,817 patent/US20240020009A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20200183583A1 (en) | 2020-06-11 |
KR102593583B1 (ko) | 2023-10-25 |
US11768601B2 (en) | 2023-09-26 |
US20200183582A1 (en) | 2020-06-11 |
US11061574B2 (en) | 2021-07-13 |
US11112972B2 (en) | 2021-09-07 |
CN111274025A (zh) | 2020-06-12 |
US20240020009A1 (en) | 2024-01-18 |
KR20200068564A (ko) | 2020-06-15 |
US20210294494A1 (en) | 2021-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111274025B (zh) | 用于在ssd中加速数据处理的系统和方法 | |
US9824038B2 (en) | Memory mapping in a processor having multiple programmable units | |
US9015390B2 (en) | Active memory data compression system and method | |
TWI520071B (zh) | 在中央處理單元與圖形處理單元間分享資源之技術 | |
US9710306B2 (en) | Methods and apparatus for auto-throttling encapsulated compute tasks | |
US20130145124A1 (en) | System and method for performing shaped memory access operations | |
JP2003532224A (ja) | マルチプロセッサコンピュータシステムのための高度メモリアルゴリズミックプロセッサアーキテクチャ | |
US7617338B2 (en) | Memory with combined line and word access | |
US9304775B1 (en) | Dispatching of instructions for execution by heterogeneous processing engines | |
EP2728491A1 (en) | Stream Data Processor | |
US11500802B1 (en) | Data replication for accelerator | |
US9448967B2 (en) | Stream data processor | |
Hussain et al. | Memory controller for vector processor | |
US8478946B2 (en) | Method and system for local data sharing | |
US9442759B2 (en) | Concurrent execution of independent streams in multi-channel time slice groups | |
CN111047035A (zh) | 神经网络处理器、芯片和电子设备 | |
US11875247B1 (en) | Input batching with serial dynamic memory access | |
US11119787B1 (en) | Non-intrusive hardware profiling | |
US20230205614A1 (en) | User Interactive Pipelining of a Computing Application Using a Buffer Pipeline Programming Interface | |
US11907144B1 (en) | Early semaphore update | |
US20240070107A1 (en) | Memory device with embedded deep learning accelerator in multi-client environment | |
US11620120B1 (en) | Configuration of secondary processors | |
US20230133088A1 (en) | Methods and apparatus for system-on-a-chip neural network processing applications | |
US20230388373A1 (en) | Load Balancing System for the Execution of Applications on Reconfigurable Processors |
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 |