CN117666944A - 用于执行数据处理功能的方法和存储装置 - Google Patents
用于执行数据处理功能的方法和存储装置 Download PDFInfo
- Publication number
- CN117666944A CN117666944A CN202311146692.6A CN202311146692A CN117666944A CN 117666944 A CN117666944 A CN 117666944A CN 202311146692 A CN202311146692 A CN 202311146692A CN 117666944 A CN117666944 A CN 117666944A
- Authority
- CN
- China
- Prior art keywords
- processing
- data
- storage
- spu
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 351
- 238000000034 method Methods 0.000 title claims abstract description 84
- 230000006870 function Effects 0.000 title claims abstract description 73
- 239000000872 buffer Substances 0.000 claims abstract description 72
- 230000008569 process Effects 0.000 claims abstract description 51
- 230000004044 response Effects 0.000 claims abstract description 29
- 238000000638 solvent extraction Methods 0.000 description 21
- 238000012546 transfer Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 230000009471 action Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000006735 deficit Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 150000003071 polychlorinated biphenyls Chemical class 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
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/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/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
公开了用于执行数据处理功能的方法和存储装置。存储加速器的第一处理装置加载与主机计算装置的第一应用相关联的第一指令集。存储加速器的第二处理装置加载与第一应用相关联的第二指令集。从主机计算装置接收命令。所述命令可与相关联于第一应用的数据相关联。第一处理装置识别与所述数据相关联的至少第一标准或第二标准。响应于识别到第一标准,第一处理装置根据第一指令集处理数据。响应于识别到第二标准,第一处理装置将数据写入第二处理装置的缓冲器。第二处理装置根据第二指令集处理所述缓冲器中的数据。
Description
本申请要求于2022年9月8日提交的的第63/404,896号美国临时申请以及于2022年10月4日提交的第17/960,333号美国专利申请的优先权和权益,所述美国申请的全部内容通过引用包含于此。
技术领域
根据本公开的实施例的一个或多个方面涉及计算存储装置,更具体地,涉及执行数据处理功能的计算存储装置。
背景技术
可能需要处理装置以快速方式对大量数据执行计算。随着此类计算的增加,可能存在数据存储和处理需求的增加。
在本背景技术部分中公开的以上信息仅用于增强对本公开的背景技术的理解,因此,它可包含不形成现有技术的信息。
发明内容
本公开的一个或多个实施例涉及一种用于执行数据处理功能的方法。存储加速器的第一处理装置加载与主机计算装置的第一应用相关联的第一指令集。存储加速器的第二处理装置加载与第一应用相关联的第二指令集。从主机计算装置接收命令。所述命令可与相关联于第一应用的数据相关联。第一处理装置识别与所述数据相关联的第一标准和第二标准中的至少一者。响应于识别到第一标准,第一处理装置根据第一指令集处理所述数据。响应于识别到第二标准,第一处理装置将数据写入第二处理装置的缓冲器。第二处理装置根据第二指令集处理所述缓冲器中的数据。
在一些实施例中,存储加速器将数据至少划分成第一块和第二块;第一处理装置基于第一指令集处理第一块并生成第一输出;第二处理装置基于第二指令集处理第二块并生成第二输出;存储加速器基于第一输出和第二输出生成第三输出;并且第三输出被提供给主机计算装置。
在一些实施例中,第一处理装置包括第一处理器和第一存储器,并且第二处理装置包括第二处理器和第二存储器,其中,第一指令集被加载到第一存储器并由第一处理器执行,并且第二指令集被加载到第二存储器并由第二处理器执行。
在一些实施例中,第一指令集用于执行第一应用的第一数据处理功能,并且第二指令集用于执行第一应用的第二数据处理功能,第二数据处理功能与第一数据处理功能不同。
在一些实施例中,第一标准包括第一处理装置的标识符,并且第二标准包括第二处理装置的标识符。
在一些实施例中,第一处理装置和第二处理装置交替控制所述缓冲器,以将数据写入所述缓冲器或从所述缓冲器读取数据。
在一些实施例中,第一处理装置和第二处理装置形成第一处理流水线,并且连接到第四处理装置的第三处理装置形成第二处理流水线。
在一些实施例中,所述用于执行数据处理功能的方法还包括如下步骤:将数据划分成第一块、第二块和第三块;将第一块和第二块提供给第一处理流水线;以及将第三块提供给第二处理流水线。
在一些实施例中,所述方法还包括如下步骤:接收由第一处理装置进行处理的结果;识别与所述结果相关联的第三标准;以及响应于识别到第三标准,将所述结果提供给第二处理流水线。
在一些实施例中,第二处理装置被分配给主机计算装置的与第一应用不同的第二应用。
本公开的一个或多个实施例还涉及一种存储装置,所述存储装置包括:第一处理装置,包括第一处理器和第一存储器,第一存储器存储与主机计算装置的第一应用相关联的第一指令集;第二处理装置,包括第二处理器、第二存储器和缓冲器,第二存储器存储与第一应用相关联的第二指令集;以及存储控制器,被配置为从主机计算装置接收命令,所述命令与相关联于第一应用的数据相关联,存储控制器被配置为将所述数据发送到第一处理装置。第一处理装置被配置为:识别与所述数据相关联的第一标准或第二标准中的至少一者;响应于识别到第一标准,根据第一指令集处理所述数据;以及响应于识别到第二标准,将所述数据写入第二处理装置的缓冲器,其中,第二处理装置被配置为根据第二指令集来处理所述缓冲器中的所述数据。
当参照以下具体实施方式、所附权利要求和附图考虑时,将更全面地理解本公开的实施例的这些和其他特征、方面和优点。当然,发明的实际范围由所附权利要求限定。
附图说明
图1A描绘根据一个或多个实施例的用于执行数据处理功能的计算机系统的框图;
图1B描绘根据一个或多个实施例的用于执行数据处理功能且包括与存储控制器分离的存储加速器的计算机系统的框图;
图2描绘根据一个或多个实施例的存储加速器的框图;
图3描绘根据一个或多个实施例的存储处理单元的示意性框图;
图4描绘根据一个或多个实施例的提供给存储处理单元的数据包的布局图;
图5描绘根据一个或多个实施例的用于经由存储加速器执行数据处理功能的处理的流程图;
图6描绘根据一个或多个实施例的用于将指令集下载到存储加速单元的处理的流程图;
图7描绘根据一个或多个实施例的用于根据下载到一个或多个存储处理单元的指令集来处理输入数据的处理的流程图。
具体实施方式
参照以下附图描述本实施例的非限制性和非穷举性实施例,其中,除非另有说明,否则相同的参考标号在各个示图中表示相同的部件。
在下文中,将参照附图更详细地描述示例实施例。然而,本公开可以以各种不同的形式实施,并且不应被解释为仅限于在此所示的实施例。相反,提供这些实施例作为示例,使得本公开将是彻底和完整的,并且将向本领域技术人员充分传达本公开的方面和特征。因此,可不描述对于本领域普通技术人员而言对于完整理解本公开的方面和特征不必要的处理、元件和技术。除非另有说明,否则贯穿附图和书面描述,相同的参考标号表示相同的元件,因此,可不重复其描述。此外,在附图中,为了清楚,元件、层和区域的相对尺寸可能被夸大和/或简化。
因为存储装置可有助于提供高效且成本有效的数据处理解决方案,所以可能期望将计算存储装置用于各种数据处理任务。计算存储装置可在本地执行计算并将计算的结果发送到主机装置。
可能期望由计算存储装置处理数据,因为这样做可提供比由主机计算装置的处理器执行计算更低的响应延迟。由计算存储装置进行处理还可最小化计算资源的使用,从而有助于降低计算周期、存储器、带宽和消耗的能量。
可由计算存储装置中的嵌入式处理器执行数据的处理。嵌入式处理器可包括用于执行数据处理的基于硬件的计算模块。可使用寄存器传输级(register transfer level,RTL)或高级合成(high-level synthesis,HLS)设计方法来设计计算模块。然而,基于硬件的计算模块可能不如软件可编程模块灵活。例如,软件可编程模块可比基于硬件的计算模块更容易被修改和调试。基于硬件的计算模块还可能需要软件可编程模块可能不需要的硬件开发和验证资源。
本公开的实施例涉及计算存储装置中的存储加速器,存储加速器可经由软件被编程,以代替在主机计算装置上运行的应用来执行数据处理功能。存储加速器可包括一个或多个处理核或微代码引擎,一个或多个处理核或微代码引擎可单独地被编程为执行所分配的数据处理功能。处理核可被称为存储处理单元(SPU)。在下文中,存储处理单元被称为SPU。
在一些实施例中,存储加速器可以是多核存储加速器,多核存储加速器至少包括用于输入数据(例如,来自应用的数据)的流水线和/或并发处理的至少第一SPU和第二SPU。被编程到第一SPU中的数据处理功能可与被编程到第二SPU中的数据处理功能相同或不同。
在一些实施例中,将被多个SPU处理的输入数据基于一个或多个可编程参数被划分和/或分组。所生成的数据包(packet)可被发送到一个或多个SPU以进行处理。接收数据包的SPU可确定数据是将被SPU处理还是绕过(bypass)。响应于确定包被寻址到SPU,数据包可由SPU根据编程的功能来处理。响应于确定包被寻址到另一SPU,SPU可绕过包,并将包传送到邻近的SPU。
在一些实施例中,SPU包括用于将数据和/或指令(统称为数据)从一个SPU高效地传送到另一个SPU的一个或多个缓冲器。可使用乒乓缓冲机制(ping-pong bufferingmechanism)来控制一个或多个缓冲器。就此而言,连接到第二SPU的第一SPU可切换对一个或多个缓冲器的控制,以轮流将数据写入一个或多个缓冲器和从一个或多个缓冲器读取数据。
图1A描绘根据一个或多个实施例的用于执行数据处理功能的计算机系统的框图。该系统可包括主机计算装置(“主机”)100a,主机计算装置(“主机”)100a通过有线或无线主机接口104a(包括以太网、光纤通道和/或其他存储接口)结合到计算存储装置(“存储装置”)102a。主机100a可通过主机接口104a将请求发送到存储装置102a。存储装置102a可通过主机接口104a向主机100a提供请求的结果。例如,主机100a可使用连接器和协议通过主机接口104a发送请求。
在一些实施例中,主机接口104a可包括(或可符合)小型计算机系统接口(SCSI)、非易失性存储器快速(NVMe)、外围组件互连快速(PCIe)、通过太网的远程直接存储器访问(RDMA)、串行高级技术附件(SATA)、光纤通道、串行附接SCSI(SAS)、通过网络的NVMe(NVMe-oF)等。
在一些实施例中,主机100a包括主机处理器106和主机存储器108。主机处理器106可以是处理电路(诸如,主机100a的通用处理器或中央处理器(CPU))。主机存储器108可包括主机100a的实质上高性能的主存储器(例如,主要的存储器)。在一些实施例中,主机存储器108可包括易失性存储器(例如,诸如动态随机存取存储器(DRAM))。然而,本公开不限于此,并且主机存储器108可包括相对高性能的非易失性存储器(诸如,NAND闪存、相变存储器(PCM)、电阻性RAM、自旋转移矩RAM(STTRAM)、基于PCM技术的存储器、基于忆阻器技术的存储器、电阻性随机存取存储器(ReRAM)等)。
在一些实施例中,存储装置102a可被认为是可持久地存储主机100a可访问的数据的辅助存储器。在本上下文中,当与主机存储器108的高性能存储器相比时,存储装置102a可包括(或可以是)相对较慢的存储器。例如,在一些实施例中,存储装置102a可以是主机100a的辅助存储器(诸如,固态驱动器(SSD))。然而,本公开不限于此,并且在一些实施例中,存储装置102a可包括任何合适的存储装置(例如,诸如磁性存储装置(例如,硬盘驱动器(HDD)等)、光存储装置(例如,蓝光盘驱动器、紧凑(CD)驱动器、数字通用盘(DVD)驱动器等)、其他种类的闪存装置(例如,USB闪存驱动器等)等)。在各种实施例中,存储装置102a可符合大形状因子标准(例如,3.5英寸硬盘驱动器形状因子)、小形状因子标准(例如,2.5英寸硬盘驱动器形状因子)、M.2形状因子、E1.S形状因子等。在一些实施例中,存储装置102a可符合这些形状因子的任何合适或期望的衍生物。为了方便,在下文中,可在SSD的情境下描述存储装置102a,但是本公开不限于此。
存储装置102a可包括存储控制器110a、存储加速器112a、储存存储器(storagememory)114a和非易失性存储器(NVM)116a(在下文中被称为NVM)。储存存储器114a可以是存储装置102a的高性能存储器,并且可包括(或可以是)易失性存储器(诸如,DRAM、同步动态随机存取存储器(SDRAM)、双倍数据速率(DDR)存储器等),但是本公开不限于此,并且储存存储器114a可以是任何合适种类的高性能易失性存储器或非易失性存储器。
NVM 116a可包括用于持久地存储用于主机100a的数据的数据存储介质。NVM 116a可包括例如NAND闪存。然而,本公开不限于此,并且NVM 116a可包括用于根据存储装置102a的实现方式持久地存储数据的任何合适种类的存储器(例如,磁盘、磁带、光盘等)。
存储控制器110a可通过主机接口104a连接到主机100a。存储控制器110a可通过主机接口104a从主机100a接收请求,并且经由主机接口104a提供请求的结果。例如,主机100a可向存储控制器110a提供数据处理请求,并且存储控制器110a可通过主机接口104a将数据处理的结果响应回主机100a。
在一些实施例中,存储控制器110a包括嵌入在其上的用于管理和处理与主机100a和NVM 116a的通信的至少一个处理组件。处理组件可包括例如能够执行指令(例如,经由固件和/或软件)以与主机100a和/或NVM 116a传送和管理事务的数字电路(例如,微控制器、微处理器、数字信号处理器或逻辑装置(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等))。
例如,由存储控制器110a执行的指令可用于从主机存储器108的一个或多个提交队列获取输入/输出(I/O)提交请求、将完成状态数据放置在主机存储器108的一个或多个完成队列中、将结果数据处理写入主机存储器108等。由存储控制器110a执行的指令还可以是用于从NVM 116a读取数据和/或向NVM 116a写入数据的数据访问指令。
在一些实施例中,存储控制器110a通过存储接口124a发送命令,以从NVM 116a读取数据和/或向NVM 116a写入数据。在SSD的情境下,存储接口124a可被称为闪存转换层(FTL)。
在一些实施例中,存储装置102a包括存储加速器112a,存储加速器112a被配置为代替在主机100a上运行的一个或多个应用提供数据处理功能。存储加速器112a可在与存储控制器110a相同的芯片上实现、在与存储控制器110a分离的芯片(例如,单独的FPGA芯片、片上系统(SoC)或ASIC)上实现等。
在一些实施例中,存储装置102a包括提供附加的加速功能的一个或多个其他加速器118a。附加的加速功能可涉及NVM 116a中的数据的移动、处理和/或存储。
在一些实施例中,存储控制器110a通过控制复用器120a和/或数据复用器122a与存储加速器112a和其他加速器118a进行接口连接。控制复用器120a可用于选择将与存储控制器110a交换控制消息的加速器112a或118a。数据复用器122a可用于选择将与储存存储器114a或存储控制器110a交换数据的加速器112a或118a。
在一些实施例中,存储加速器112a检索存储在NVM 116a中的数据以执行数据处理功能。在一些实施例中,可从NVM 116a检索大量数据以进行处理。由存储加速器112a在数据位置附近处理数据可提供比由主机处理器106执行处理更低的响应延迟,并且可减少将大量数据集移动到主机处理器106和从主机处理器106移动大量数据集可能需要的能量消耗。
图1B描绘根据一个或多个实施例的用于执行数据处理功能且包括与存储控制器分离的存储加速器的计算机系统的框图。图1B描绘被配置为执行数据处理功能且包括与存储控制器分离(例如,位于单独的芯片上)的存储加速器的计算机系统的框图。除了在图1B的实施例中计算机系统包括桥接器或交换机130和主机接口层132之外,图1B的计算机系统可类似于图1A的计算机系统。桥接器或交换机130可在存储控制器110b与主机接口层132之间进行选择,以与主机100b通信。
主机接口层132可包括实现从主机100b到存储加速器112b(或其他加速器118b)的入口通信以及从存储加速器112b(或其他加速器118b)到主机100b的出口通信的端口(例如,PCIe端口)和/或端点。
图2描绘根据一个或多个实施例的存储加速器的框图。例如,图2的存储加速器112可表示图1A的存储加速器112a和图1B的存储加速器112b中的至少一个。存储加速器112可被配置为包括以一个或多个行和列布置的一个或多个存储处理单元(SPU)200a至200h(统称为SPU 200)的多核存储加速器。在下文中,存储处理单元200被称为SPU 200。在一些实施例中,一行中的多个SPU 200可连接在一起以形成处理流水线,也称为存储处理队列(SPQ)线202a至202c(统称为202)。在下文中,存储处理队列线被称为SPQ线。
一个或多个SPU可经由软件被编程,以代替在主机(例如,图1A的主机100a和/或图1B的主机100b(统称为主机100))上运行的一个或多个应用来处理一个或多个数据处理功能。在下文中,图1A的主机100a和/或图1B的主机100b被称为主机100。例如,一个或多个应用可使用多个向量来请求深度学习推荐模型(DLRM)的稀疏长度和(Sparse Length Sum,SLS)操作。一个或多个应用还可请求其他数据处理功能(诸如,识别存储在存储装置中的数据库表中的记录、使用记录执行聚合操作、以及将聚合操作的结果发送到主机100)。
数据处理功能可涉及存储在NVM 116a、116b(统称为NVM 116)中的相对大量的数据(例如,数百千兆字节的数据)。在计算周期、存储器、网络带宽和消耗的能量方面,由存储加速器112处的一个或多个SPU处理数据可比由主机处理器(例如,图1A的主机处理器106)发送和处理数据更有效。
在一些实施例中,第一SPU(例如,SPU 200a)可利用第一指令集被编程以执行应用的第一数据处理功能,并且第二SPU(例如,SPU 200b或SPU 200e)可利用第二指令集被编程以执行应用的第二数据处理功能。与基于硬件的RTL或HLS设计相比,使用软件对SPU 200进行编程可提供灵活性。例如,经由软件编程到SPU 200中的指令可比使用硬件硬编码到SPU200中的指令更容易修改、添加、升级和/或调试。
第一数据处理功能和第二数据处理功能以及编程到SPU 200中的相关联的第一指令集和第二指令集可以是不同的或相同的。例如,SPU 200a和SPU 200e或者SPU 200a和SPU200b可利用不同的指令集来编程,以执行从NVM 116检索的数据的不同类型的计算或变换。以这种方式,SPU 200a和SPU 200e可(例如,并发地)为应用的不同功能工作。
在一些实施例中,第一流水线(例如,SPQ线202a)中的一个或多个SPU 200可利用与第二流水线(例如,SPQ线202b)中的一个或多个SPU 200相同的指令集来编程。以这种方式,第一流水线中的一个或多个SPU 200和第二流水线中的一个或多个SPU 200可针对应用(例如,并发地)执行相同的数据处理功能。数据处理功能的这种并行化可提供更高的数据处理性能。
在一些实施例中,存储加速器112可包括控制面204,控制面204被配置为从主机100接收关于命令(例如,基于NVMe或直接PCIe的命令)的信息。例如,存储控制器(例如,图1A的存储控制器110a和/或图1B的存储控制器110b,统称为存储控制器110)可经由主机接口104a(例如,图1A的主机接口104a)或桥接器130(例如,图1B的桥接器130)接收命令。存储控制器110可处理命令并从命令提取信息(诸如,用于数据处理的自变量(arguments)(例如,地址、长度等)、触发信号等),并将提取的命令信息存储到寄存器(例如,控制寄存器状态)206中。可基于提取的命令信息对存储加速器112的一个或多个组件进行编程。在一些实施例中,控制面204可监视存储加速器112的一个或多个组件,并将状态、响应和调试信息存储到寄存器206中以提供给主机100。
存储加速器112还可包括但不限于输入获取模块208、数据划分模块210、解复用器212、复用器214、结果处理模块216和输出写入器模块218。输入获取模块208可响应于寄存器206中的提取的命令信息,从储存存储器(例如,图1A的储存存储器114a和/或图1B的储存存储器114b,统称为储存存储器114)获得输入数据(或输入数据集)220。从储存存储器114检索的输入数据220可(例如,由存储控制器110)从NVM 116检索,和/或由主机处理器106经由直接存储器访问(DMA)传送来提供。输入数据220可包括例如由主机100上的应用生成的参数、数据和指令集。将由输入获取模块208获得的数据的存储器地址和长度可作为主机命令信息的一部分而被提供并存储在寄存器206中。
由输入获取模块208获得的输入数据220可被提供给数据划分模块210。在一些实施例中,数据划分模块210可以是被配置为对输入数据220进行预处理以提高系统性能的较高速度或较高性能的RTL模块。预处理可包括例如将输入数据220划分成经组织的块(chunk),这些块可被提供给一个或多个SPQ线202以进行处理。数据划分可基于可由应用编程的一个或多个标准。例如,标准可以是固定块大小、标识的分隔符(例如,逗号、分号、大括号等)、特定对象边界(诸如,圆括号、大括号等)等。预处理还可包括滤除SPU 200进行数据处理可能不需要的无关数据。
在一些实施例中,划分后的数据被封装在数据包中。就此而言,数据划分模块210可将数据存储在数据包的有效载荷部分中,并且生成包的头(header)。头可识别例如存储在包中的数据的类型、包被寻址到的SPU 200的标识符等。在一些实施例中,数据划分模块210还生成被称为刷新包(flush packet)的最终包,用于指示输入数据220的处理的结束。刷新包作为最终包被发送到一个或多个SPQ线202。
在一些实施例中,解复用器212接收生成的数据包并将数据包提供给一个或多个适当的SPQ线202。解复用器212可基于包括在包中的SPU标识符来确定正确的SPQ线202。在一些实施例中,可基于各种算法(包括轮询(RR)、先来先服务(FCFS)、加权RR、亏损RR(DRR)、加权DRR等)中的一种来选择SPQ线202。
在一些实施例中,可将包提供给包括识别的SPU(例如,SPU 200c)的SPQ线202中的第一SPU(例如,SPU 200a)。就此而言,解复用器212可包括缓冲器,缓冲器用于存储包直到第一SPU 200a中的片上存储器变得可用于接收包为止。第一SPU 200a可对包进行评估以确定包是否寻址到第一SPU 200a。响应于确定包不是寻址到第一SPU 200a,第一SPU 200a可将包传送到线路中的下一个SPU(例如,SPU 200b)。该处理可继续,直到包被合适的SPU 200接收。
在一些实施例中,遵循相同的数据路径以将数据传送到SPU 200,而不管数据块是否包含指令集、处理数据或自变量。这样的设计可有助于降低存储加速器的复杂性,并且允许共享用于传输不同类型的数据的资源。
在一些实施例中,SPU 200中的片上存储器由邻近的SPU 200共享,以用于加速数据包的传送。例如,SPU 200a和SPU 200b可访问彼此的片上存储器,并且SPU 200b和SPU200c可访问彼此的片上存储器。
在一些实施例中,通过在片上存储器上分配第一缓冲器和第二缓冲器来实现由邻近的SPU 200共享片上存储器。第一缓冲器和第二缓冲器可实现用于数据传输的乒乓机制。就此而言,第一SPU(例如,SPU 200a)可承担对邻近的SPU(例如,SPU 200b)中的第一缓冲器的控制,以将第一包写入第一缓冲器中。第一SPU 200a可在共享片上存储器中设置标志,以通知邻近的SPU(例如,SPU 200b)第一包可用于处理。邻近的SPU 200b可控制第一缓冲器以读取和处理数据包。
在一些实施例中,第一SPU 200a可承担对邻近的SPU 200b中的第二缓冲器的控制,以将第二包写入第二缓冲器中。SPU 200b可被称为第二SPU 200b。与第二SPU 200b承担对第一缓冲器的控制以读取第一数据包并发地,第一SPU 200a可承担对第二缓冲器的控制。以这种方式,第一SPU 200a在它可发起第二包的传送之前不需要等待第二SPU 200b完成获取第一包。
复用器214从SPQ线202中的最后的SPU 200接收输出,并将输出转发到结果处理模块216。结果处理模块216可识别输出的类型,并基于识别的类型采取适当的处理动作。输出可以是最终的数据计算结果、中间包、调试消息等。在最终的数据计算结果的情况下,结果处理模块216可将输出提供给输出写入器模块218。当从复用器214接收到结果时,最终结果可被提供给输出写入器模块218。在一些实施例中,结果处理模块216等待接收两个或更多个(例如,所有)SPQ线202的结果,并且在将处理后的结果输出到输出写入器模块218之前对结果进行处理。例如,结果处理模块216可通过对结果进行排序或聚合来处理结果。在一些实施例中,在主机100上运行的应用确定结果处理模块216如何处理结果。
在一些实施例中,如果来自SPQ线202之一的输出是中间包,则结果处理模块216经由环路数据路径222转发该包,用于由在中间包中标识的SPU 200进行附加处理。包的转发也可被称为包循环。包的循环可允许例如将第一SPQ线(例如,SPQ线202a)链接到第二SPQ线(例如,SPQ线202b),以创建允许对数据的块进行附加数据处理的扩展线。
输出写入器模块218被配置为将数据处理的结果写入储存存储器114。一个或多个控制信息(诸如,将写入结果的基地址)可由应用提供并存储在控制面204中的寄存器206中。输出写入器218还可使控制面204向主机100发送完成消息或中断,以通知主机100将结果从存储器114移动到主机存储器108。
在一些实施例中,存储加速器112由在主机100上(例如,并发地)运行的第一应用和第二应用共享。例如,第一应用可在第一虚拟机上运行,并且第二应用可在第二虚拟机上运行。可将第一组SPQ线(例如,SPQ线202a)分配给第一应用或第一虚拟机,并且可将与第一组SPQ线不同的第二组SPQ线(例如,SPQ线202b)分配给第二应用或第二虚拟机。
在一些实施例中,存储加速器112的一个或多个实例可被生成并被分配给不同的应用或虚拟机。第一组SPQ线可与存储加速器112的第一实例相关联,并且与第一组SPQ线不同的第二组SPQ线可与存储加速器112的第二实例相关联。
图3描绘根据一个或多个实施例的存储处理单元的示意性框图。在下文中,一起参照图1A、图1B、图2和图3。SPU 200可包括但不限于处理核300、第一缓冲器302a和第二缓冲器302b(统称为数据缓冲器302)、指令存储器304、只读存储器(ROM)306、暂存存储器(scratchpad memory)308和标志寄存器310。处理核300可包括相对轻量的核或微代码引擎(诸如,定制或专有指令集架构(ISA)、超大指令字(VLIW)处理器、精简指令集计算机(RISC)、高级RISC机器、基于FPGA的嵌入式处理器等)。在一些实施例中,第一SPU(例如,图2的SPU 200a)包括第一类型的核,并且第二SPU(例如,图2的SPU 200b)包括与第一类型不同的第二类型的核。处理核300可具有附加的专用扩展和/或添加的协处理器。可为一个SPU启用不同的扩展或协处理器,但为另一个SPU禁用不同的扩展或协处理器。
ROM 306可包含用于根据存储在传入包中的信息来处理包的代码或指令(例如,默认代码或指令)。处理可能需要将数据包的全部或部分存储在指令存储器304或暂存存储器308中、基于包运行存储在指令存储器304中的指令集、将包转发到邻近的SPU 200等。
传入数据包可存储在数据缓冲器302中的一个中。数据缓冲器302可遵循乒乓机制。乒乓机制可控制第一SPU(例如,SPU 200a)访问作为输出缓冲器的与第二SPU(例如,SPU200b)共享的数据缓冲器302中的一个(例如,第一缓冲器302a),以将数据包写入第一缓冲器302a中。第一SPU 200a可在共享存储器的标志寄存器310中设置标志,以通知第二SPU200b数据包准备好使用。该标志可将对输出缓冲器的控制传送到第二SPU 200b。
第二SPU 200b可读取存储在作为输入缓冲器的第一缓冲器302a中的数据,并对数据采取处理动作。在一些实施例中,第一SPU 200a可控制与第二SPU 200b共享的数据缓冲器中的第二数据缓冲器(例如,第二缓冲器302b),以将第二包写入第二缓冲器302b中。将第二数据包写入第二缓冲器302b中可与从第一缓冲器302a读取数据同时进行,以采取处理动作。处理动作可以是例如基于数据执行指令存储器304中的指令集。处理动作还可以是将数据传送到与第三邻近的SPU(例如,SPU 200c)的共享存储器中的缓冲器。例如,如果数据不是寻址到第二SPU 200b,则第二SPU 200b可将数据传送到第三SPU 200c。
在一些实施例中,第一SPU 200a的ROM固件处理到第二SPU 200b的数据传送。在一些实施例中,DMA可在硬件中实现,以执行邻近的SPU之间的数据传送。在一些实施例中,处理核300可包括用于在硬件中将数据从输入缓冲器移动到输出缓冲器的附加扩展指令。
在一些实施例中,由SPU 200执行的用于执行数据处理功能的指令集由主机100在初始化阶段期间提供。就此而言,处理核300可执行ROM 306中的指令,以处理传入数据包并将被标识为指令的包存储到指令存储器304。指令存储器304可包括紧密耦合存储器(TCM)或另一类型的低延迟存储器。
在运行时阶段期间,主机100可生成将由指令集用于数据处理的处理数据和/或自变量。还可从NVM 116检索处理数据。包含处理数据和/或自变量的数据包的头可指示处理核300如何处理包。例如,包含自变量的包可使处理核300将自变量存储在暂存存储器308中。包含处理数据的包可使处理核300调用指令存储器304中的指令集以根据指令集处理数据。
图4描绘根据一个或多个实施例的提供给存储处理单元的数据包的布局图。在下文中,一起参照图1A至图3。例如,数据包400可由数据划分模块210生成,以将数据块发送到一个或多个SPQ线202。数据包400可包括头402和有效载荷414。头402可包括用于存储一个或多个参数的值的一个或多个字段404至412。在一些实施例中,响应于对包进行处理,由数据划分模块210或者由一个或多个SPU 200设置一个或多个参数的值。
包头402中的示例性字段可包括但不限于保留字段404、长度字段406、数据块标识符或索引字段408、目标字段410和操作码字段412。操作码字段412可存储将针对包执行的操作。示例性操作包括例如“执行”操作。在操作码字段412中具有“执行”操作码的包可具有在指令存储器304中的指令集的执行期间将被使用的数据作为有效载荷414。
在一些实施例中,操作码字段412可存储指示存储在包中的有效载荷414的类型的标志。示例性标志可将有效载荷指示为指令、数据、结果、自变量、刷新数据等。响应于检测到的标志,可采取适当的动作。例如,“指令”操作码可指示有效载荷414包括指令代码集,并且ROM代码可使处理核300将指令集存储在指令存储器304中。“数据”操作码可指示有效载荷414包括将由指令集执行的数据。“结果”操作码可指示有效载荷414包含数据处理的结果。“结果”操作码可由处理核300在执行指令集之后生成,以指示生成的数据包包含数据处理结果。“自变量”操作码可指示有效载荷414包含将由指令代码使用的自变量。“刷新”操作码可指示由SPQ线202进行的处理的结束。“刷新”包可由数据划分模块210生成,作为将被提供给一个或多个SPQ线202的最后数据包。
在一些实施例中,头402的目标字段410识别包400去往的目标SPU(例如,SPU200b)。例如,数据划分模块210可利用目标SPU 200b的标识符来设置目标字段410以处理生成的数据包。目标SPU 200b可经由行号和列号来标识。在另一示例中,由第一SPU(例如,SPU200a)处理的数据块可生成中间包,以由同一SPQ流水线中的另一SPU(例如,SPU 200c)或不同SPQ流水线中的另一SPU(例如,SPU 200e)进行进一步处理。在这种情况下,第一SPU 200a可在目标字段410中识别用于处理中间包的另一SPU 200e。在一些实施例中,结果处理模块216经由环路数据路径222将中间包循环到另一SPU 200e。
在目标字段410中列出的SPU的地址可识别多于一个的目标SUP。目标字段410还可指示任何SPU 200可接收和处理包。
在一些实施例中,索引或标识符字段408存储在包中存储的数据块的标识符。具有这样的标识符可允许由SPU 200生成的结果包与针对其生成结果的数据块相关联。
在一些实施例中,长度字段406识别有效载荷414的长度。
在一些实施例中,保留字段404被保留用于将来可能想要包括的头数据。
图5描绘根据一个或多个实施例的用于经由存储加速器执行数据处理功能的处理的流程图。在下文中,一起参照图1A至图4。该处理开始,在动作500中,存储加速器112中的第一SPU 200a(第一处理装置)加载与主机100的应用相关联的第一指令集。第一指令集可以是由主机100生成的第一二进制代码。第一指令集可用于执行应用的第一数据处理功能。
在动作502中,第二SPU 200b(第二处理装置)加载与应用相关联的第二指令集。第二指令集可以是由主机100生成的第二二进制代码。第二指令集可独立于第一指令集,并且可用于执行应用的与第一数据处理功能不同的第二数据处理功能。
在动作504中,存储装置102从主机100接收执行命令。执行命令可与由应用生成的数据和/或从NVM 116检索的数据相关联。数据可包括例如由数据处理功能使用的自变量和其他处理数据。数据可作为数据包被提供给第一SPU(例如,SPU 200a)。
在动作506中,第一SPU 200a检查数据包并识别与数据包相关联的标准(例如,第一标准和第二标准中的至少一者)。标准可以是例如数据包是否属于第一SPU 200a(例如,应该由第一SPU 200a处理或寻址到第一SPU 200a)。就此而言,处理核300可执行存储在ROM306中的指令以检查数据包的头来确定头是否识别第一SPU 200a。
在动作508中,第一SPU 200a确定是否已经识别到第一标准。如果答案为是,则在动作510中,第一SPU 200a根据存储在指令存储器304中的第一指令集来处理数据。例如,第一标准可以是包的头402中的第一SPU 200a的标识符。类似地,第二标准可包括第二SPU200b的标识符。
再次参照动作508,如果识别的标准不是第一标准(例如,识别的标准是第二标准),则在动作512中,第一SPU 200a将数据写入第二SPU 200b(例如,第二处理装置)的存储器。例如,第一SPU 200a可将数据写入第二SPU 200b中的缓冲器302中的一个。
在动作514中,第二SPU 200b从存储器(例如,缓冲器302中的一个)读取数据,并根据第二指令集处理数据。
图6描绘根据一个或多个实施例的用于将指令集下载到存储加速器的处理的流程图。在下文中,一起参照图1A至图4。主机100可识别具有一个或多个数据处理功能的应用,其中,所述一个或多个数据处理功能将被卸载到存储装置102以供存储加速器112执行。主机处理器106可编译应用并生成对应的二进制代码(例如,指令集)。应用可用编程语言(诸如,C或C++)编写,并交叉编译为SPU指令集架构。
在一些实施例中,主机处理器106生成包括二进制代码的包,并将包存储在主机存储器108中。在一些实施例中,主机处理器106基于对可用SPQ线202的数量和每个SPQ线202中的SPU 200的数量的了解,来决定哪些SPU 200将执行二进制代码的哪些部分(也称为第一指令集和第二指令集)。SPQ线202和/或SPU 200的标识符可作为由主机处理器106生成的一个或多个包的头数据而被包括。以这种方式,主机处理器106可控制一个或多个应用对SPU的利用。
在一些实施例中,主机100生成用于发起二进制代码的下载的命令(例如,NVMe命令)。命令可包括针对存储二进制代码的主机存储器108中的一个或多个包的指针。
下载处理可开始于存储装置102在动作600中接收下载命令。可经由主机接口104a或桥接器130接收命令。
在动作602中,存储控制器110从主机存储器108检索存储二进制代码的一个或多个包,并将一个或多个包存储在储存存储器114中。在一些实施例中,存储控制器110经由从主机存储器108到储存存储器114的DMA传送来检索一个或多个包。
在动作604中,存储控制器110通知存储加速器112数据可用于处理。例如,存储控制器110可将触发信号存储在存储加速器112的控制面204的寄存器206中。其他命令信息(诸如,存储器地址、长度等)也可被提供给控制面204并存储在寄存器206中。
在动作606中,输入获取模块208从储存存储器114获得包作为输入数据220,并将数据提供给数据划分模块210。数据划分模块210可将输入数据220划分成一个或多个数据块。例如,第一块可包含第一指令集(例如,二进制代码的第一部分),并且第二块可包含第二指令集(例如,二进制代码的第二部分)。
在动作608中,数据划分模块210针对块中的一个块生成包。该包可类似于图4的包400。数据划分模块210可设置包的头以标识包被寻址到的SPU 200,并且还标识存储在包中的数据的类型。例如,数据划分模块210可将操作码字段412设置为指令,并且将包被寻址到的SPU 200的行号和列号存储在目标字段410中。数据划分模块210还可在索引字段408中标识数据块的索引,并且在长度字段406中标识有效载荷414的长度。数据块中的二进制代码可被存储为包的有效载荷414。
在动作610中,解复用器212将由数据划分模块210提供的一个或多个包发送到一个或多个SPQ线202。可基于来自主机100的命令包中提供的SPU信息来选择SPQ线202。例如,如果多于一个的SPU将利用二进制代码被编程,则可将包提供给多于一个SPQ线202。
在一些实施例中,解复用器212将接收到的包发送到选择的SPQ线202的第一SPU(例如,SPU 200a)。
在动作612中,处理核300可基于包的头来确定包是否属于第一SPU 200a。如果答案为是,则处理核300可基于包中的操作码确定有效载荷数据是指令集,并且在动作614中将指令集写入指令存储器304中。
在动作616中,确定是否有更多的数据块要处理并传送到SPU 200。如果答案为是,则处理返回到动作608以针对数据块生成包。
再次参照动作612,如果包不属于第一SPU 200a,则处理核300在动作618中将包传送到邻近的SPU(例如,SPU 200b),并且处理返回到动作612以确定包是否属于邻近的SPU。包从一个SPU传递到另一个SPU,直到包到达包所寻址的SPU为止。
图7描绘根据一个或多个实施例的用于根据下载到一个或多个存储处理单元的指令集来处理输入数据的处理的流程图。在下文中,一起参照图1A至图4。该处理开始,在动作700中,存储控制器110将输入数据加载到储存存储器114。储存存储器114也可被称为装置存储器。输入数据可包括将由指令集使用的自变量和/或将被处理的实际数据。可响应于来自主机100的命令(例如,NVMe命令)将输入数据加载到储存存储器114,以将输入数据从主机存储器108移动到储存存储器114的分配部分中。
在动作702中,存储控制器110从主机100接收执行命令。执行命令可包括参数(诸如,指向储存存储器114中的自变量的指针、自变量长度、指向将在储存存储器114中处理的数据的指针、数据长度、以及指向储存存储器114中将存储处理结果的位置的指针)。
在动作704中,输入获取模块208从储存存储器114获取输入数据并转发到数据划分模块210。数据划分模块210可通过在动作706中将数据划分为数据块并针对数据块生成数据包来处理输入数据。生成的数据包可类似于图4的数据包400。
在动作708中,数据划分模块210将一个或多个数据包转发到SPQ线202的SPU 200。接收数据包的SPQ线202可基于数据包中的头信息来确定。数据包可从一个SPU传送到另一SPU,直到适当的SPU 200中的处理核300接收到数据包并确定包属于该SPU为止。
在动作710中,包去往的SPU 200中的处理核300可基于ROM代码来处理包。就此而言,处理核300可检查包中的头信息以确定如何处理包。例如,如果包的操作码字段412指示包是“自变量”包,则处理核300可基于ROM 306中的指令将自变量存储在暂存存储器308中。
如果包的操作码字段412指示包是“执行”包,则处理核300可调用指令存储器304中的指令集以处理包并执行与指令集相关联的数据处理功能。在动作712中,数据的处理可生成可被存储在缓冲器302和/或暂存存储器308中的中间结果或最终结果。处理核300可响应于完成指令代码的执行而将处理控制返回到ROM代码,并且将结果的长度和状态作为返回值返回到ROM代码。
处理核300从缓冲器302和/或暂存存储器308检索处理结果,并且基于结果生成包以发送到结果处理模块216。就此而言,处理核300可将适当的头插入生成的包,其中该头可指示包是中间包还是最终的结果包。在动作714中,结果包可在SPQ线202中从一个SPU传递到另一SPU,并且发送到结果处理模块216。
在动作716中,结果处理模块216处理结果以输出到输出写入器模块218。在一些实施例中,结果处理模块216可在接收到结果包时输出结果。在一些实施例中,结果处理模块216在输出结果之前等待以收集所有的输出结果。输出结果还可在输出之前由结果处理模块216聚合或排序。
结果处理模块216可进一步对结果进行处理,以在动作718确定结果包是否应该被循环以由一个或多个SPU 200进行进一步处理。该确定可基于结果包中的指示包是中间包还是最终的结果包的头数据。如果答案为是,则处理返回到动作708,以由一个或多个SPU200进一步对结果包进行处理。就此而言,可通过结果包中的头信息来确定将接收结果包的SPQ线202。在一些实施例中,接收结果包的SPQ线202可与生成结果的SPU 200相关联的SPQ线202不同。
再次参照动作718,如果答案为否,并且在结果包中没有指示循环,则在动作720中将结果输出到输出写入器模块218,以将结果写入由主机100分配的储存存储器114的结果存储器位置。写入到结果存储器位置的结果可响应于来自主机的移动命令而被移动到主机存储器108。
关于图5至图7的流程图中描绘的处理,应当理解,处理的步骤的序列不是固定的,而是如本领域的技术人员所认识到地,可被修改、按顺序改变、不同地执行、顺序地、并发地或同时地执行,或者被改变为任何期望的序列。
在一些实施例中,用于执行上面讨论的数据处理功能的系统和方法可使用处理器来实现。术语处理器可表示一个或多个处理器和/或一个或多个处理核。一个或多个处理器可托管(host)在单个装置中或分布在多个装置上(例如,在云系统上)。处理器可包括例如专用集成电路(ASIC)、通用或专用中央处理器(CPU)、数字信号处理器(DSP)、图形处理器(GPU)、可编程逻辑器件(诸如,现场可编程门阵列(FPGA))。在如在此所使用的处理器中,功能可由被配置为(即,硬连线)执行该功能的硬件、由被配置为执行存储在非暂时性存储介质(例如,存储器)中的指令的更通用的硬件(诸如,CPU)来执行,或者如上所述以其他方式执行。处理器可被制造在单个印刷电路板(PCB)上或者分布在若干互连的PCB上。处理器可包含其他处理电路(例如,处理电路可包括在PCB上互连的两个处理电路:FPGA和CPU)。
应当理解,尽管在此可使用术语“第一”、“第二”、“第三”等来描述各个元件、组件、区域、层和/或部分,但是这些元件、部件、区域、层和/或部分不应受这些术语的限制。这些术语仅用于将一个元件、组件、区域、层或部分与另一个元件、组件、区域、层或部分区分开。因此,在不脱离发明构思的精神和范围的情况下,在此讨论的第一元件、第一组件、第一区域、第一层或第一部分可被称为第二元件、第二组件、第二区域、第二层或第二部分。
在此使用的术语仅用于描述特定实施例的目的,并不旨在限制发明构思。此外,除非明确说明,否则在此描述的实施例不是相互排斥的。在一些实施方式中,在此描述的实施例的各方面可被组合。
如在此所使用的,术语“基本上”、“约”和类似术语用作近似术语而不是程度术语,并且旨在考虑本领域普通技术人员将认识到的测量值或计算值的固有偏差。
如在此所使用的,除非上下文另外清楚地指示,否则单数形式旨在也包括复数形式。还将理解,当在本说明书中使用时,术语“包括”和/或“包含”说明存在陈述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。如在此所使用的,术语“和/或”包括一个或多个相关联所列项的任何组合和所有组合。当诸如“……中的至少一个”的表达在一列元素之后时修饰整列元素,而不是修饰列中的各个元素。此外,当描述发明构思的实施例时,“可”的使用表示“本公开的一个或多个实施例”。此外,术语“示例性”旨在表示示例或说明。如在此所使用的,术语“使用(use)”可被认为与术语“利用(utilize)”同义。
尽管在此已经具体描述和说明了用于执行数据处理功能的系统和方法的示例性实施例,但是对于本领域技术人员,许多修改和变化将是清楚的。因此,将理解,根据本公开的原理构造的用于执行数据处理功能的系统和方法可以以不同于在此具体描述的方式实施。公开还在所附权利要求及其等同物中限定。
用于处理存储事务的系统和方法可包含以下声明中阐述的特征的一个或多个组合。
声明1、一种用于执行数据处理功能的方法,所述方法包括如下步骤:由存储加速器的第一处理装置加载与主机计算装置的第一应用相关联的第一指令集;由存储加速器的第二处理装置加载与第一应用相关联的第二指令集;从主机计算装置接收命令,所述命令与相关联于第一应用的数据相关联;由第一处理装置识别与所述数据相关联的第一标准和第二标准中的至少一者;响应于识别到第一标准,由第一处理装置根据第一指令集处理所述数据;响应于识别到第二标准,由第一处理装置将所述数据写入第二处理装置的缓冲器;以及由第二处理装置根据第二指令集处理缓冲器中的所述数据。
声明2、根据声明1所述的方法,还包括如下步骤:由存储加速器将所述数据至少划分成第一块和第二块;由第一处理装置基于第一指令集处理第一块并生成第一输出;由第二处理装置基于第二指令集处理第二块并生成第二输出;由存储加速器基于第一输出和第二输出生成第三输出;以及将第三输出提供给主机计算装置。
声明3、根据声明1或2所述的方法,其中,第一处理装置包括第一处理器和第一存储器,第二处理装置包括第二处理器和第二存储器,其中,第一指令集被加载到第一存储器并由第一处理器执行,并且第二指令集被加载到第二存储器并由第二处理器执行。
声明4、根据声明1至3中的一项所述的方法,其中,第一指令集用于执行第一应用的第一数据处理功能,并且第二指令集用于执行第一应用的第二数据处理功能,第二数据处理功能与第一数据处理功能不同。
声明5、根据声明1至4中的一项所述的方法,其中,第一标准包括第一处理装置的标识符,并且第二标准包括第二处理装置的标识符。
声明6、根据声明1至5中的一项所述的方法,其中,第一处理装置和第二处理装置交替控制所述缓冲器,以将所述数据写入所述缓冲器或从所述缓冲器读取所述数据。
声明7、根据声明1至6中任一项所述的方法,其中,第一处理装置和第二处理装置形成第一处理流水线,并且连接到第四处理装置的第三处理装置形成第二处理流水线。
声明8、根据声明1至7中的一项所述的方法,还包括如下步骤:将所述数据划分成第一块、第二块和第三块;将第一块和第二块提供给第一处理流水线;以及将第三块提供给第二处理流水线。
声明9、根据声明1至8中的一项所述的方法,还包括如下步骤:接收由第一处理装置进行处理的结果;识别与所述结果相关联的第三标准;以及响应于识别到第三标准,将所述结果提供给第二处理流水线。
声明10、根据声明1至9中的一项所述的方法,其中,第二处理装置被分配给主机计算装置的与第一应用不同的第二应用。
声明11、一种存储装置,包括:第一处理装置,第一处理装置包括第一处理器和第一存储器,第一存储器存储与主机计算装置的第一应用相关联的第一指令集;第二处理装置,第二处理装置包括第二处理器、第二存储器和缓冲器,第二存储器存储与第一应用相关联的第二指令集;以及存储控制器,被配置为从主机计算装置接收命令,所述命令与相关联于第一应用的数据相关联,存储控制器被配置为将所述数据发送到第一处理装置,其中,第一处理装置被配置为:识别与所述数据相关联的第一标准和第二标准中的至少一者;响应于识别到第一标准,根据第一指令集处理所述数据;以及响应于识别到第二标准,将所述数据写入第二处理装置的缓冲器,其中,第二处理装置被配置为根据第二指令集来处理所述缓冲器中的所述数据。
声明12、根据声明11所述的存储装置,还包括:第三处理装置,被配置为将所述数据至少划分为第一块和第二块,其中,第一处理装置被配置为基于第一指令集处理第一块并生成第一输出,其中,第二处理装置被配置为基于第二指令集处理第二块并生成第二输出,其中,第三处理装置被配置为基于第一输出和第二输出来生成第三输出,其中,存储控制器被配置为将第三输出提供给主机计算装置。
声明13、根据声明11或12所述的存储装置,其中,第一处理装置包括第一处理器和第一存储器,第二处理装置包括第二处理器和第二存储器,其中,第一指令集被加载到第一存储器并由第一处理器执行,并且第二指令集被加载到第二存储器并由第二处理器执行。
声明14、根据声明11至13中的一项所述的存储装置,其中,第一指令集用于执行第一应用的第一数据处理功能,并且第二指令集用于执行第一应用的第二数据处理功能,第二数据处理功能与第一数据处理功能不同。
声明15、根据声明11至14中的一项所述的存储装置,其中,第一标准包括第一处理装置的标识符,并且第二标准包括第二处理装置的标识符。
声明16、根据声明11至15中的一项所述的存储装置,其中,第一处理装置和第二处理装置被配置为交替控制所述缓冲器,以将所述数据写入所述缓冲器或从所述缓冲器读取所述数据。
声明17、根据声明11至16中的一项所述的存储装置,其中,第一处理装置和第二处理装置形成第一处理流水线,并且连接到第四处理装置的第三处理装置形成第二处理流水线。
声明18、根据声明11至17中的一项所述的存储装置,还包括:第五处理装置,被配置为:将所述数据划分成第一块、第二块和第三块;将第一块和第二块提供给第一处理流水线;以及将第三块提供给第二处理流水线。
声明19、根据声明11至18中的一项所述的存储装置,还包括:第五处理装置,被配置为:接收由第一处理装置进行处理的结果;识别与所述结果相关联的第三标准;以及响应于识别到第三标准,将所述结果提供给第二处理流水线。
声明20、根据声明11至19中的一项所述的存储装置,其中,第二处理装置被分配给主机计算装置的与第一应用不同的第二应用。
Claims (20)
1.一种用于执行数据处理功能的方法,所述方法包括如下步骤:
由存储加速器的第一处理装置加载与主机计算装置的第一应用相关联的第一指令集;
由存储加速器的第二处理装置加载与第一应用相关联的第二指令集;
从主机计算装置接收命令,所述命令与相关联于第一应用的数据相关联;
由第一处理装置识别与所述数据相关联的第一标准和第二标准中的至少一者;
响应于识别到第一标准,由第一处理装置根据第一指令集处理所述数据;
响应于识别到第二标准,由第一处理装置将所述数据写入第二处理装置的缓冲器;以及
由第二处理装置根据第二指令集处理所述缓冲器中的所述数据。
2.根据权利要求1所述的用于执行数据处理功能的方法,还包括如下步骤:
由存储加速器将所述数据至少划分成第一块和第二块;
由第一处理装置基于第一指令集处理第一块并生成第一输出;
由第二处理装置基于第二指令集处理第二块并生成第二输出;
由存储加速器基于第一输出和第二输出生成第三输出;以及
将第三输出提供给主机计算装置。
3.根据权利要求1所述的用于执行数据处理功能的方法,其中,第一处理装置包括第一处理器和第一存储器,第二处理装置包括第二处理器和第二存储器,其中,第一指令集被加载到第一存储器并由第一处理器执行,并且第二指令集被加载到第二存储器并由第二处理器执行。
4.根据权利要求1所述的用于执行数据处理功能的方法,其中,第一指令集用于执行第一应用的第一数据处理功能,并且第二指令集用于执行第一应用的第二数据处理功能,其中,第二数据处理功能与第一数据处理功能不同。
5.根据权利要求1所述的用于执行数据处理功能的方法,其中,第一标准包括第一处理装置的标识符,并且第二标准包括第二处理装置的标识符。
6.根据权利要求1所述的用于执行数据处理功能的方法,其中,第一处理装置和第二处理装置交替控制所述缓冲器,以将所述数据写入所述缓冲器或从所述缓冲器读取所述数据。
7.根据权利要求1至权利要求6中的任意一项所述的用于执行数据处理功能的方法,其中,第一处理装置和第二处理装置形成第一处理流水线,并且
其中,第三处理装置和第四处理装置形成第二处理流水线。
8.根据权利要求7所述的用于执行数据处理功能的方法,还包括如下步骤:
将所述数据划分成第一块、第二块和第三块;
将第一块和第二块提供给第一处理流水线;以及
将第三块提供给第二处理流水线。
9.根据权利要求7所述的用于执行数据处理功能的方法,还包括如下步骤:
接收由第一处理装置进行处理的结果;
识别与所述结果相关联的第三标准;以及
响应于识别到第三标准,将所述结果提供给第二处理流水线。
10.根据权利要求7所述的用于执行数据处理功能的方法,其中,第二处理装置被分配给主机计算装置的与第一应用不同的第二应用。
11.一种存储装置,包括:
第一处理装置,包括第一处理器和第一存储器,第一存储器存储与主机计算装置的第一应用相关联的第一指令集;
第二处理装置,包括第二处理器、第二存储器和缓冲器,第二存储器存储与第一应用相关联的第二指令集;以及
存储控制器,被配置为从主机计算装置接收命令,所述命令与相关联于第一应用的数据相关联,存储控制器被配置为将所述数据发送到第一处理装置,其中,第一处理装置被配置为:
识别与所述数据相关联的第一标准和第二标准中的至少一者;
响应于识别到第一标准,根据第一指令集处理所述数据;以及
响应于识别到第二标准,将所述数据写入第二处理装置的缓冲器,其中,第二处理装置被配置为根据第二指令集来处理所述缓冲器中的所述数据。
12.根据权利要求11所述的存储装置,还包括:
第三处理装置,被配置为将所述数据至少划分成第一块和第二块,
其中,第一处理装置被配置为基于第一指令集处理第一块并生成第一输出,
其中,第二处理装置被配置为基于第二指令集处理第二块并生成第二输出,
其中,第三处理装置被配置为基于第一输出和第二输出来生成第三输出,
其中,存储控制器被配置为将第三输出提供给主机计算装置。
13.根据权利要求11所述的存储装置,其中,第一指令集被加载到第一存储器并由第一处理器执行,并且第二指令集被加载到第二存储器并由第二处理器执行。
14.根据权利要求11所述的存储装置,其中,第一指令集用于执行第一应用的第一数据处理功能,并且第二指令集用于执行第一应用的第二数据处理功能,其中,第二数据处理功能与第一数据处理功能不同。
15.根据权利要求11所述的存储装置,其中,第一标准包括第一处理装置的标识符,并且第二标准包括第二处理装置的标识符。
16.根据权利要求11所述的存储装置,其中,第一处理装置和第二处理装置被配置为交替控制所述缓冲器,以将所述数据写入所述缓冲器或从所述缓冲器读取所述数据。
17.根据权利要求11至权利要求16中的任意一项所述的存储装置,其中,第一处理装置和第二处理装置形成第一处理流水线,
其中,所述存储装置还包括:第三处理装置和第四处理装置,形成第二处理流水线。
18.根据权利要求17所述的存储装置,还包括:第五处理装置,被配置为:
将所述数据划分成第一块、第二块和第三块;
将第一块和第二块提供给第一处理流水线;以及
将第三块提供给第二处理流水线。
19.根据权利要求17所述的存储装置,还包括:第五处理装置,被配置为:
接收由第一处理装置进行处理的结果;
识别与所述结果相关联的第三标准;以及
响应于识别到第三标准,将所述结果提供给第二处理流水线。
20.根据权利要求17所述的存储装置,其中,第二处理装置被分配给主机计算装置的与第一应用不同的第二应用。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/404,896 | 2022-09-08 | ||
US17/960,033 | 2022-10-04 | ||
US17/960,033 US12079510B2 (en) | 2022-09-08 | 2022-10-04 | Systems and methods for executing data processing functions |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117666944A true CN117666944A (zh) | 2024-03-08 |
Family
ID=90067078
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311146692.6A Pending CN117666944A (zh) | 2022-09-08 | 2023-09-06 | 用于执行数据处理功能的方法和存储装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117666944A (zh) |
-
2023
- 2023-09-06 CN CN202311146692.6A patent/CN117666944A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7313381B2 (ja) | ハードウェアアクセラレーションのためのハードウェアリソースの埋込みスケジューリング | |
US10203878B2 (en) | Near memory accelerator | |
US7487302B2 (en) | Service layer architecture for memory access system and method | |
US9632777B2 (en) | Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry | |
US9268704B2 (en) | Low latency data exchange | |
US20210019185A1 (en) | Compute task state encapsulation | |
CN110678847A (zh) | 用于gpu任务调度的连续分析任务 | |
EP3407184A2 (en) | Near memory computing architecture | |
US11182264B1 (en) | Intra-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS) | |
JP7008983B2 (ja) | テンソルデータにアクセスするための方法および装置 | |
US8180998B1 (en) | System of lanes of processing units receiving instructions via shared memory units for data-parallel or task-parallel operations | |
US7617338B2 (en) | Memory with combined line and word access | |
US9390038B2 (en) | Local bypass for in memory computing | |
US11809953B1 (en) | Dynamic code loading for multiple executions on a sequential processor | |
CN115033188B (zh) | 一种基于zns固态硬盘的存储硬件加速模块系统 | |
US20230409395A1 (en) | Runtime Virtualization of Reconfigurable Data Flow Resources | |
TWI754310B (zh) | 純函數語言神經網路加速器系統及電路 | |
US8181072B2 (en) | Memory testing using multiple processor unit, DMA, and SIMD instruction | |
US11409839B2 (en) | Programmable and hierarchical control of execution of GEMM operation on accelerator | |
KR20220116566A (ko) | 확장 메모리 통신 | |
WO2021162950A1 (en) | System and method for memory management | |
EP4336363A1 (en) | Systems and methods for executing data processing functions | |
CN117666944A (zh) | 用于执行数据处理功能的方法和存储装置 | |
TW202429300A (zh) | 儲存裝置和執行資料處理功能的方法 | |
US20230267169A1 (en) | Sparse matrix dense vector multliplication circuitry |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |