CN116541415A - 用于加速的装置、系统和方法 - Google Patents
用于加速的装置、系统和方法 Download PDFInfo
- Publication number
- CN116541415A CN116541415A CN202211423694.0A CN202211423694A CN116541415A CN 116541415 A CN116541415 A CN 116541415A CN 202211423694 A CN202211423694 A CN 202211423694A CN 116541415 A CN116541415 A CN 116541415A
- Authority
- CN
- China
- Prior art keywords
- hardware
- database
- query
- software
- accelerator
- 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
- 238000000034 method Methods 0.000 title claims abstract description 161
- 230000001133 acceleration Effects 0.000 title claims abstract description 14
- 230000008569 process Effects 0.000 claims abstract description 127
- 238000012545 processing Methods 0.000 claims abstract description 81
- 239000000047 product Substances 0.000 description 35
- 229940099352 cholate Drugs 0.000 description 8
- BHQCQFFYRZLCQQ-OELDTZBJSA-N cholic acid Chemical compound C([C@H]1C[C@H]2O)[C@H](O)CC[C@]1(C)[C@@H]1[C@@H]2[C@@H]2CC[C@H]([C@@H](CCC(O)=O)C)[C@@]2(C)[C@@H](O)C1 BHQCQFFYRZLCQQ-OELDTZBJSA-N 0.000 description 8
- 230000008901 benefit Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 239000000969 carrier Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 235000019219 chocolate Nutrition 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了用于加速的装置、系统和方法。所述装置包括硬件、存储设备和协调器。所述硬件可处理对数据库的查询。存储设备可存储软件,所述软件用于处理对数据库的查询。协调器可至少部分地基于所述查询来管理硬件和软件以处理对数据库的查询,以产生对数据库的查询的结果。
Description
本申请要求于2022年2月2日提交的第63/306,090号美国临时专利申请和于2022年4月13日提交的第17/720,272号美国专利申请的权益,该美国专利申请出于所有目的通过引用包含于此。
技术领域
公开总体上涉及数据库,并且更具体地,涉及用于提高数据库查询性能的加速器。
背景技术
随着时间的推移,数据库已经显著扩大。数据库可在大小上潜在地是万亿字节。对大的数据库执行查询可能花费相对长的时间量。
仍然需要用于减少对数据库执行查询所需的时间量的方法。
发明内容
公开的实施例可包括加速器。加速器可包括硬件和软件。协调器可确定硬件、软件或两者是否可用于处理查询,并且可引导硬件和/或软件处理查询。
根据公开的实施例,一种用于加速的装置包括:硬件,用于处理对数据库的查询;存储设备,用于软件,软件用于处理对数据库的查询;以及协调器,用于至少部分地基于所述查询来管理所述硬件和所述软件以处理对数据库的查询,其中,所述加速器被配置为产生对数据库的查询的结果。根据公开的实施例,一种系统包括:处理器,用于生成查询;存储装置,连接到处理器,存储装置存储数据库;以及加速器,连接到存储装置,加速器被配置为处理对数据库的查询并产生结果,加速器包括:硬件,用于处理对数据库的查询,存储设备,用于软件,软件用于处理对数据库的查询,以及协调器,用于至少部分地基于对数据库的查询来管理所述硬件和所述软件以处理对数据库的查询。
根据公开的实施例,一种方法包括:在加速器处接收查询;至少部分地基于所述查询,识别加速器的硬件和加速器的软件中的至少一个以处理对数据库的查询;以及使用所述硬件和所述软件中的至少一个来处理对数据库的查询以产生结果。
附图说明
下面描述的附图是公开的实施例可如何被实现的示例,并且不意在限制公开的实施例。公开的独立实施例可包括在特定附图中未示出的元件和/或可省略在特定附图中示出的元件。附图意在提供说明,并且可不按比例。
图1示出根据公开的实施例的被配置为使用加速器来支持混合数据库查询处理的机器。
图2示出根据公开的实施例的图1的机器的细节。
图3示出根据公开的实施例的图1的加速器的细节。
图4示出根据公开的实施例的图1的存储装置的细节。
图5示出根据公开的实施例的使用图1的加速器中的图3的硬件或图3的软件而被处理的示例查询。
图6A示出根据公开的实施例的使用图1的加速器中的图3的硬件和图3的软件两者而被处理的示例查询。
图6B继续根据公开的实施例的使用图1的加速器中的图3的硬件和图3的软件两者而被处理的图6A的示例查询。
图7示出根据公开的实施例的用于使用图1的加速器来处理图5的查询的示例过程的流程图。
图8示出根据公开的实施例的用于从图1的存储装置访问数据库的示例过程的流程图。
图9示出根据公开的实施例的用于图3的协调器识别图1的加速器的元件以处理图5的查询的示例过程的流程图。
图10示出根据公开的实施例的用于使用图1的加速器中的图3的硬件和图3的软件两者来处理图5的查询的示例过程的流程图。
图11示出根据公开的实施例的用于图3的协调器向图3的硬件查询其能力的示例过程的流程图。
具体实施方式
现在将详细参照公开的实施例,在附图中示出公开的实施例的示例。在下面的具体实施方式中,阐述了许多特定细节,使得能够彻底理解公开。然而,应理解,本领域普通技术人员可在没有这些特定细节的情况下实践公开。在其他情况下,公知的方法、过程、组件、电路和网络未被详细描述,以免不必要地模糊实施例的方面。
将理解,尽管在此可使用术语第一、第二等来描述各种元件,但是这些元件不应受这些术语限制。这些术语仅用于将一个元件与另一元件区分开。例如,在不脱离公开的范围的情况下,第一模块可被称作第二模块,类似地,第二模块可被称作第一模块。
在公开的描述中使用的术语在此仅出于描述特定实施例的目的,而不意在限制公开。如在公开的描述和所附权利要求中使用的,除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。还将理解,如在此使用的术语“和/或”表示并包含相关所列项中的一个或多个的任何和所有可能的组合。还将理解,术语“包括”和/或“包含”在用在本说明书中时,说明存在叙述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。附图的组件和特征不必按比例绘制。
随着时间的推移,数据库已经扩大。一些数据库可在大小上是万亿字节。处理对数据库的查询可涉及识别表中的满足搜索标准的行,这可涉及将来自表中的每个行的数据与搜索标准进行比较。
可以以硬件或软件来处理查询。硬件可被设计为高效地处理查询。但是,虽然在给定特定数据库的设计的情况下设计可高效地处理查询的硬件可以是可行的,但是设计可针对任何数据库高效地处理查询的硬件更加困难。虽然一些数据类型(整数、浮点数、字符等)可具有固定或有界的大小,但是其他数据类型的大小可能本质上是无界的。例如,字符串是字符的序列,并且字符串可在大小上随着字符串中的字符的数量而变化。即使独立数据库可对字符串可进入在该数据库中的长度设置边界,不同的数据库也可具有不同的边界。此外,一些数据库可使用在其长度上没有任何边界的字符串。例如,C编程语言中的字符串在长度上是无界的:程序通过看到表示字符串的结束的特殊符号(空字符)来知道字符串在何处被终止。使用空终止字符串而不是将字符串的长度限制在特定数量的字符的数据库理论上可存储任何特定长度的字符串,而没有边界。
数据库中的特定数据的大小越大,硬件可需要能够处理涉及该数据的查询的资源的数量越多。例如,如果整数使用两个字节的数据被存储,则硬件可需要能够比较16位的数据。对于在长度上长达8个字符的字符串,如果每个字符使用一个字节的数据,则硬件可需要能够比较64位的数据。更一般地,对于长度n的字符串(其中,每个字符使用一个字节的数据而被存储),硬件可需要能够比较多达8n位的数据。为了能够处理对这样的字符串的查询,硬件因此可需要能够处理大量数据位,每个位涉及一些电路系统。
另一方面,在软件中处理查询可支持处理任何数据类型或数据大小的数据。软件可使用循环来比较数据,而不管数据的长度如何。但是在软件中处理查询可能不如在硬件中处理查询那样高效,因此可能花费更久。
公开的实施例可利用硬件查询处理和软件查询处理两者的益处。控制器可确定硬件是否可能够全部或部分地处理查询。如果硬件不能够处理查询,则控制器可将查询传递给软件。否则,硬件可使用硬件可用的资源来处理查询。然后,控制器可将结果传递给软件以完成查询处理。控制器可确定硬件是否能够完全处理查询:如果硬件不能够完全处理查询,则控制器可将结果传递给软件以进一步处理。
图1示出根据公开的实施例的被配置为使用加速器来支持混合数据库查询处理的机器。在图1中,机器105(其也可被称为主机或系统)可包括处理器110、存储器115和存储装置120。处理器110可以是任何种类的处理器。(为了便于说明,处理器110连同下面讨论的其他组件被示出在机器外部:公开的实施例可在机器内包括这些组件。)虽然图1示出单个处理器110,但是机器105可包括任何数量的处理器,每个处理器可以是单核处理器或多核处理器,每个处理器可实现精简指令集计算机(RISC)架构或复杂指令集计算机(CISC)架构(以及其他可能性),并且可以以任何期望的组合被混合。
处理器110可结合到存储器115。存储器115可以是任何种类的存储器(诸如,闪存、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、持久性随机存取存储器、铁电随机存取存储器(FRAM)、或非易失性随机存取存储器(NVRAM)(诸如,磁阻随机存取存储器(MRAM)等)。根据期望,存储器115可以是易失性存储器或非易失性存储器。存储器115还可以是不同存储器类型的任何期望的组合,并且可由存储器控制器125管理。存储器115可用于存储可被称为“短期”的数据:即,不期望被存储延长的时间段的数据。短期数据的示例可包括临时文件、由应用本地使用的数据(其可已经从其他存储位置被复制)等。
处理器110和存储器115还可支持各种应用可在其下运行的操作系统。这些应用可发出用于从任何存储器115读取数据或向任何存储器115写入数据的请求(其也可被称为命令)。当存储装置120用于支持经由某种文件系统读取或写入数据的应用时,存储装置120可使用装置驱动器130被访问。虽然图1示出一个存储装置120,但是在机器105中可存在任何数量(一个或多个)的存储装置。存储装置120可各自支持任何期望的一个或多个协议(包括例如非易失性存储器快速(NVMe)协议)。不同的存储装置120可支持不同的协议和/或接口。
虽然图1使用通用术语“存储装置”,但是公开的实施例可包括可受益于计算存储单元的使用的任何存储装置格式,计算存储单元的示例可包括硬盘驱动器和固态驱动器(SSD)。下面对“SSD”的任何引用应被理解为包括公开的这样的其他实施例。此外,不同类型的存储装置可被混合。例如,一个存储装置120可以是硬盘驱动器,并且另外的存储装置120可以是SSD。
机器105还可包括加速器135。加速器135可以是“更靠近”存储装置120的本地处理的形式,加速器135可用于支持处理对可被存储在存储装置120上的数据库的查询。通过使用加速器135,可比由处理器110更快地处理查询,并且可减少处理器110上的负载。下面参照图3进一步讨论加速器135。
图2示出根据公开的实施例的图1的机器的细节。在图2中,通常,机器105包括一个或多个处理器110,处理器110可包括存储器控制器125和时钟205,时钟205可用于协调机器的组件的操作。处理器110还可结合到存储器115,作为示例,存储器115可包括随机存取存储器(RAM)、只读存储器(ROM)或其他状态保存介质。处理器110还可结合到存储装置120,并且结合到网络连接器210,网络连接器210可以是例如以太网连接器或无线连接器。处理器110还可连接到总线215,用户接口220和可使用输入/输出(I/O)引擎225管理的I/O接口端口以及其他组件可附接到总线215。
图3示出根据公开的实施例的图1的加速器135的细节。在图3中,示出图1的加速器135。加速器135可包括例如硬件305、软件310、处理器315和协调器320。硬件305可以是可被设计为处理对数据库的查询(或一些查询)的电路或其他硬件。例如,硬件305可包括中央处理器(CPU)或一些其他处理器(诸如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)或片上系统(SoC)、图形处理器(GPU)、通用GPU(GPGPU)、数据处理器(DPU)、神经处理器(NPU)、网络接口卡(NIC)、或者张量处理器(TPU),以及其他可能性)。
虽然硬件305可能能够处理对数据库的一些查询,但是硬件305可能无法处理每个可能的查询。例如,存储字符串的数据库可支持长达比如说20个字符的长度的字符串。但是硬件305可仅支持搜索长达比如说8个字符的长度的字符串。在这种情况下,硬件305可能无法处理涉及数据库中的字符串的查询:至少,硬件305可能无法完全处理涉及数据库中的字符串的查询。
对于可能未被硬件305(完全或部分地)处理的查询,加速器135可包括软件310。软件310可被存储在存储设备325中,存储设备325可以是非易失性存储设备(诸如,闪存或只读存储器(ROM)(诸如,ROM)、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)等)以及其他可能性。软件310可在处理器(诸如,处理器315)上被执行:处理器315可以是任何期望类型的处理器(诸如,CPU、FPGA、ASIC、GPU、GPGPU、DPU、NPU、TPU等)。软件310可能够处理对数据库的任何查询,而不用担心诸如如上所述硬件305可能具有的资源限制。但是因为软件310可在比硬件305所使用的硬件更通用的处理器上执行,所以软件310可花费比硬件305花费得久来处理查询。
为了管理硬件305、软件310或两者在处理查询时是否被使用,协调器320可被使用。协调器320可检查查询并确定其是否完全或部分地位于硬件305的能力内。如果其完全或部分地位于硬件305的能力内,则协调器320可命令硬件305处理查询;否则,协调器320可命令软件310处理查询。注意,如果硬件305部分地能够处理查询,则协调器320可命令硬件305在可行的程度上处理查询,然后命令软件310完成处理由硬件305产生的结果。
由于协调器320可将查询与硬件305的能力进行比较,因此协调器320可确定硬件305的能力。协调器320可通过发送例如询问硬件305的能力的消息来确定硬件305的能力。这些能力可包括例如硬件305能够处理的各种类型的字段的大小(诸如,字符串的宽度,或者整数、浮点值或其他数的大小)。在从协调器320接收到消息时,硬件305可用各种能力进行响应。因此,协调器320然后可能够确定硬件305可能够处理什么查询以及什么查询可涉及软件310(部分地或全部地)。
虽然图3将处理器315和协调器320示出为单独的元件,但是公开的实施例可组合这些元件。例如,在公开的一些实施例中,协调器320可以是负责将查询引导到硬件305和/或软件310的单独电路;在公开的其他实施例中,协调器320可以是在处理器315上(或在处理器315的核内)运行的软件,并且可根据处理查询的需要与软件310共享处理周期。
图4示出根据公开的实施例的图1的存储装置120的细节。在图4中,存储装置120的实现被示出为用于固态驱动器。在图4中,存储装置120可包括主机接口层(HIL)405、控制器410和各种闪存芯片415-1至415-8(也被称为“闪存存储设备”,并且其可被统称为闪存芯片415),各种闪存芯片415-1至415-8可被组织成各种通道420-1至420-4(其可被统称为通道420)。主机接口层405可管理存储装置120与其他组件(诸如,图1的处理器110)之间的通信。主机接口层405还可管理与远离存储装置120的装置的通信。也就是说,主机接口层405可管理与除了图1的处理器110之外的装置(例如,在不作为存储装置120的一部分被包括的情况下,图1的加速器135)的通信,并且主机接口层405可在图1的机器105的本地或远程:例如,通过一个或多个网络连接。这些通信可包括用于从存储装置120读取数据的读取请求、用于将数据写入存储装置120的写入请求以及用于从存储装置120删除数据的删除请求。
主机接口层405可管理仅跨单个端口的接口,或者主机接口层405可管理跨多个端口的接口。可选地,存储装置120可包括多个端口,每个端口可具有单独的主机接口层405以管理跨该端口的接口。发明构思的实施例还可混合这些可能性(例如,具有三个端口的SSD可具有用于管理一个端口的一个主机接口层和用于管理其他两个端口的第二主机接口层)。
控制器410可使用闪存控制器425来管理关于闪存芯片415的读取操作和写入操作以及垃圾收集操作和其他操作。控制器410还可包括转换层430,转换层430可管理如由图1的主机105使用的逻辑地址(诸如,逻辑块地址(LBA))到数据实际被存储在存储装置120上的物理地址(诸如,物理块地址(PBA))的映射。通过使用转换层430,当数据在存储装置120内从一个物理地址移动到另外的物理地址时,图1的主机105不需要被通知。
在公开的一些实施例中,控制器410可包括加速器135。加速器135可从存储装置120被省略(或者可能更准确地,可在控制器410或存储装置120外部),这由加速器135周围的虚线表示。
虽然图4将存储装置120示出为包括被组织成四个通道420的八个闪存芯片415,但是发明构思的实施例可支持被组织成任何数量的通道的任何数量的闪存芯片。类似地,虽然图4示出SSD的结构,但是其他存储装置(例如,硬盘驱动器)可使用与图4中示出的结构不同的结构被实现以管理读取数据和写入数据,但是具有类似的潜在益处。
图5示出根据公开的实施例的使用图1的加速器135中的图3的硬件305或图3的软件310而被处理的示例查询。在图5中,示出查询505。查询505可表示例如产品表(partstable)中的所有品牌(brand)的查询,其中,产品名称(part name)是“black chocolate(黑巧克力)”并且产品的价格小于$100。出于图5中的说明的目的,可假设图3的硬件305被配置为处理长达查询505被应用到的数据库中的最长字符串的长度的字符串。因此,图3的硬件305可能够将产品名称“black chocolate”与数据库中的产品表中的每个产品名称进行比较,以确定产品表中的零件名称是否与“black chocolate”精确匹配。知道这一点,图3的协调器320可将图3的硬件305识别为能够处理查询505。
在操作510,图3的硬件305可将产品名称“black chocolate”与产品表中的产品名称进行比较,以识别哪些行包括名称为“black chocolate”的产品。在操作515,图3的硬件305可将产品表中的价格与金额$100进行比较,以识别哪些行包括具有小于$100的价格的产品。在操作520,图3的硬件305可组合操作510和操作515的两个结果,以识别包括名为“black chocolate”的产品并且成本小于$100的行。最后,在操作525,图3的硬件305可从在操作520识别的行提取品牌。
虽然图5根据图3的硬件305被描述为处理查询505,但是公开的实施例可包括以图5中示出的相同方式处理查询505的图3的软件310。因此,如果图3的协调器320识别图3的软件310来处理查询505,则图3的软件310可使用与图5中示出的处理类似的处理。
图6A示出根据公开的实施例的使用图1的加速器135中的图3的硬件305和图3的软件310两者而被处理的示例查询。在图6A中,查询505与图5的查询505相同。但是为了图6A中的说明的目的,可假设图3的硬件305被配置为处理长达八个字符的长度的字符串,该字符串的长度不足以完全处理查询505中的产品名称。知道这一点,图3的协调器320可将图3的硬件305识别为部分地能够处理查询505,并且可将图3的软件310识别为能够完成查询505的处理。
代替将整个产品名称与产品表中的条目中的产品名称进行比较,在操作605,图3的硬件305可比较产品名称的前八个字符(“black ch”:空格是字符)。在操作515(与图5的操作515相同),图3的硬件305可将产品表中的价格与金额$100进行比较,以识别哪些行包括具有小于$100的价格的产品。在操作520(与图5的操作520相同),图3的硬件305可组合操作510和操作515的两个结果,以识别包括名为“black ch”的产品并且成本小于$100的行。
但是注意,“black ch”可能与除“black chocolate”之外的产品名称匹配。例如,如果仅产品名称的前八个字符被比较,则“black ch”也可能与“black chiffon(黑色雪纺)”或“black chartreuse(黑色察吐士酒)”或“black chalice(黑色圣杯)”匹配。这意味着图3的硬件305可能返回一些误肯定(false positive)结果:即,图3的硬件305可能基于图3的硬件305的能力而匹配了看起来正确的,而可能不是实际上正确的匹配。
一旦图3的硬件305已经产生其部分结果,图3的协调器320就可识别图3的软件310以完成处理查询505。如图6B中所示,在操作610,图3的软件310可将查询505中的产品名称的(除了前八个字符之外的)剩余部分与产品表中的产品名称的尾部进行比较。注意,由于图3的硬件305可能已经识别了数据库的产品表中的以“black ch”开头的所有条目,因此软件310可忽略部分结果中的前八个字符:部分结果中的所有条目可被预期为具有以“blackch”开头的产品名称。图3的协调器320可向图3的软件310通知图3的硬件305能够处理的字符的数量,使得图3的软件310可知道在比较产品名称的尾部时使用什么偏移。在操作615,图3的软件310可将其过滤器的结果与来自图3的硬件305的部分结果组合。最后,一旦产品表中的条目已被标识,则在操作620,图3的软件310可从产品表中的已被标识的条目选择品牌名称。
在图5和图6A至图6B中,图3的协调器320确定图3的硬件305能够产生结果或至少产生部分结果。在公开的一些实施例中,图3的硬件305可用于产生结果。在公开的一些实施例中,图3的硬件305可用于产生部分结果,并且图3的软件310可细化部分结果以产生查询505的最终结果。
但是在公开的一些实施例中,图3的软件310可仅用于细化图3的硬件305的结果。也就是说,如果图3的硬件305错误地省略了有效条目(误否定(false negative)结果),则图3的软件310可能无法校正该情况。因为图3的软件310(其在处理查询505时可能比图3的硬件305慢)可能不会针对图3的硬件305可能已经错过的条目而重新访问数据库中的表,所以这种情况可能出现。换句话说,如果图3的硬件305可能由于误否定结果而错过条目,则图3的软件310可能无法补偿,并且查询505的结果可能是不完整的。
在图3的硬件305在匹配实际存在时认为该匹配不存在的情况下,可发生误否定结果。例如,如果查询涉及识别诸如“not equal(不等于)”、“not like(不像)”或“not in(不在……中)”(相当于,“not a substring of(不是……的子字符串)”)的比较器,则图3的硬件305在仅比较字符串的一部分时可能返回误否定。作为特定示例,考虑针对不等于“blackchocolate”的产品名称的查询。如果图3的硬件305仅能够比较字符串的前八个字符,则图3的硬件305可确定包含产品名称“black chiffon”的条目是针对“black chocolate”的匹配(再次,仅查看前八个字符),并且可省略该条目作为可能的结果。但是,由于“blackchiffon”实际上不同于“black chocolate”,因此产品名称“black chiffon”应该已经被包括在结果中,并且图3的硬件305可返回误否定结果。
在可能发生误否定结果的情况下,图3的协调器320可向图3的软件310发送查询505以进行处理,而不涉及图3的硬件305。以这种方式,图3的软件310可考虑数据库中的表中的所有条目,而不是仅考虑由图3的硬件305过滤的条目。注意,该结果可在功能上等同于针对图3的硬件305处理查询的误否定结果而使图3的软件310检查数据库。但是,因为后面的处理将意味着图3的硬件305和图3的软件310两者可考虑针对数据库中的所有条目处理查询,所以图3的硬件305的结果可能被浪费,这将意味着当使用图3的硬件305和图3的软件310两者时,查询的整体处理可能花费更久(与仅使用图3的软件310来处理查询相比)。
可使用任何类型的接口和/或协议,用一个或多个互连、一个或多个网络、网络的网络(例如,互联网)等或它们的组合来实现图1至图6B中的组件和/或设备之间或者图1至图6B中示出的设备与其他设备之间的连接。例如,可用外围组件互连快速(PCIe)、NVMe、通过网络的NVMe(NVMe-oF)、以太网、传输控制协议/互联网协议(TCP/IP)、直接存储器访问(DMA)、远程DMA(RDMA)、融合以太网上的RDMA(ROCE)、光纤通道、无限带宽、串行ATA(SATA)、小型计算机系统接口(SCSI)、串行附接SCSI(SAS)、iWARP等、或者它们的任何组合来实现连接。
例如,在公开的一些实施例中,可用在PCIe互连上操作的NVMe协议来实现连接。作为另一示例,在公开的一些实施例中,可用在以太网连接上操作的NVMe-oF协议来实现连接。在公开的这样的实施例中,并且取决于实现细节,NVMe协议可提供用于将命令、数据等传递给内核,和/或从内核传递命令、数据等的机制,该机制可以是高效的、有效的、方便的、标准化的、灵活的等。然而,在公开的其他实施例中,可使用任何其他类型的接口、协议等。
在公开的一些实施例中,连接可实现一致性(例如,存储器一致性和/或缓存一致性等)或存储器语义接口(诸如,计算快速链接(CXL))和/或一致性协议(诸如,CXL.mem、CXL.cache和/或CXL.IO)。可使用的一致性和/或存储器语义接口和/或协议的其他示例可包括Gen-Z、一致性加速器处理器接口(CAPI)、用于加速器的缓存一致性互连(CCIX)等。
图1的加速器135可用可包括加速器的任何类型的装置来实现。例如,图1的加速器135可用存储装置、GPU、NIC等、或者它们的组合来实现。在公开的一些实施例中,图1的加速器135可包括与装置的功能相关的一个或多个附加组件。例如,图1的加速器135可在使用存储装置被实现的情况下包括存储介质和/或介质转换层(例如,闪存转换层(FTL)),在使用NIC被实现的情况下包括网络接口和/或调制解调器,和/或在使用GPU被实现的情况下包括图形管线,等。
在公开的在其中图1的加速器135使用存储装置被实现的实施例中,存储装置可包括基于例如固态介质(例如,SSD)、磁介质(例如,硬盘驱动器(HDD))、光学介质等的任何类型的非易失性存储介质。例如,在公开的一些实施例中,存储装置可被实现为基于非与(NAND)闪存的SSD、持久性存储器(诸如,交叉网格非易失性存储器)、具有体电阻变化的存储器、相变存储器(PCM)等、或者它们的任何组合。
在公开的在其中图1的加速器135使用存储装置被实现的实施例中,存储装置可使用任何连接器配置(诸如,SATA、SCSI、SAS和/或U.2等)以任何形状因子(诸如,3.5英寸、2.5英寸、1.8英寸、M.2、企业和数据中心SSD形状因子(EDSFF)、NF1等)来实现。任何这样的存储装置可完全或部分地用服务器机箱、服务器机架、数据室(dataroom)、数据中心、边缘数据中心、移动边缘数据中心和/或它们的任何组合实现、和/或与服务器机箱、服务器机架、数据室(dataroom)、数据中心、边缘数据中心、移动边缘数据中心和/或它们的任何组合结合使用。
图1的加速器135可包括一个或多个计算资源,一个或多个计算资源可运行操作系统和/或内核、和/或可执行可由操作系统和/或内核控制、发起、卸载、切换、分配等的任何类型的处理。例如,除了运行操作系统和/或内核之外,图1的加速器135还可在操作系统的用户空间中运行一个或多个程序(例如,下载的用户程序)。
图1的加速器135可包括例如一个或多个计算引擎(诸如,一个或多个处理器(例如,CPU(诸如,复杂指令集计算机(CISC)处理器(诸如,x86处理器)和/或精简指令集计算机(RISC)处理器(诸如,ARM处理器)))、ASIC、FPGA、GPU、NPU、TPU等)。此外,在公开的一些实施例中,图1的加速器135可具有一个或多个子组件(诸如,处理器核和/或ASIC子模块等)。
尽管被示出为单个组件,但是图1的加速器135可部分地或完全地被分布为一个或多个单独的组件,和/或分布在一个或多个其他组件(诸如,命令逻辑、装置控制器等)之间。
操作系统可用包括Linux、Android(安卓)、Tizen(泰泽)和/或嵌入式Windows等的任何操作系统来实现。
编程接口可例如用可内置到内核中(例如,编译到内核中)和/或作为模块插入到内核中等的程序代码来实现。
命令逻辑可被实现为例如单独的组件、装置控制器(例如,存储装置控制器)的一部分、图1的加速器135的一部分、或者以任何其他方式或它们的组合实现。例如,在公开的实施例中,命令逻辑可至少部分地实现为装置控制器的一部分,命令逻辑可至少部分地用可由装置控制器运行的固件(FW)来实现。作为另一示例,在公开的一些实施例中,命令逻辑可至少部分地被实现为例如在图1的加速器135的一个或多个计算资源上运行的操作系统的内核中的装置驱动器。
命令逻辑和在此公开的任何其他功能可用硬件、软件、固件或它们的任何组合来实现,硬件、软件、固件或它们的任何组合包括:组合逻辑、顺序逻辑、一个或多个定时器、计数器、寄存器和/或状态机、一个或多个复杂可编程逻辑器件(CPLD)、FPGA、ASIC、CPU、GPU、NPU、TPU等,存储在任何类型的存储器中的执行指令,或者它们的任何组合。在公开的一些实施例中,包括命令逻辑的一个或多个组件可被实现为片上系统(SOC)。
图7示出根据公开的实施例的用于使用图1的加速器135来处理图5的查询505的示例过程的流程图。在图7中,在框705,图1的加速器135可接收图5的查询505。在框710,图3的协调器320可识别图3的硬件305或图3的软件310(或两者)以处理图5的查询505。最后,在框715,图3的硬件305、图3的软件310或两者可处理图5的查询505。
图8示出根据公开的实施例的用于从图1的存储装置120访问数据库的示例过程的流程图。在图8中,在框805,图1的加速器135可从图1的存储装置120访问数据库。然后,图1的加速器135可在处理图5的查询505时使用来自数据库的数据。
图9示出根据公开的实施例的用于图3的协调器320识别图1的加速器135的元件以处理图5的查询505的示例过程的流程图。在图9中,在框905,图3的协调器320可确定图3的硬件305是否被配置为产生图5的查询505的结果。该确定可涉及例如确定图3的硬件305是否包括用于完全处理图5的查询505的足够的资源,而不用担心误否定结果或误肯定结果。如果图3的硬件305被配置为产生图5的查询505的结果,则在框910,图3的协调器320可识别用于处理图5的查询505的图3的硬件305,使得在图7的框715,图5的查询505可由图3的硬件305处理。
如果图3的硬件305不包括用于完全处理图5的查询505的足够的资源,则在框915,图3的协调器320可确定图3的硬件305是否包括用于部分地处理图5的查询505的足够的资源。该确定可涉及例如确定图3的硬件305是否包括用于避免误否定结果的足够的资源。如果图3的硬件305包括用于部分地处理图5的查询505的足够的资源,则在框920,图3的协调器320可识别图3的硬件305和图3的软件310两者以处理图5的查询505:图3的硬件305可产生部分结果,并且图3的软件310可细化该部分结果以产生图5的查询505的最终结果。以这种方式,在图7的框715,图5的查询505可由图3的硬件305和图3的软件310两者处理。
如果图3的硬件305不包括用于部分地处理图5的查询505的足够的资源——例如,如果图3的硬件305可能产生图5的查询505的误否定结果——则在框925,图3的协调器320可识别图3的软件310以处理图5的查询505,使得在图7的框715,图5的查询505可由图3的软件310处理。
图10示出根据公开的实施例的用于使用图1的加速器135中的图3的硬件305和图3的软件310两者来处理图5的查询505的示例过程的流程图。在图10中,在框1005,图3的硬件305可处理图5的查询505以产生部分结果。在框1010,图3的软件310可处理由图3的硬件305产生的部分结果以产生最终结果。换句话说,在框1005,图3的硬件305可在图3的硬件305可处理的程度上处理图5的查询505,并且在框1010,图3的软件310可参照在框1005中由图3的硬件305产生的结果来执行图5的查询505的处理的剩余部分。
图11示出根据公开的实施例的用于图3的协调器320向图3的硬件305查询其能力的示例过程的流程图。在图11中,在框1105,图3的协调器320可向图3的硬件305查询其能力。在框1110,图3的协调器320可从图3的硬件305接收其能力。
在图7至图11中,示出了公开的一些实施例。但本领域技术人员将认识到,通过改变框的次序、通过省略框、或通过包括附图中未示出的链接,公开的其他实施例也是可行的。无论是否明确地描述,流程图的所有这样的变化被认为是公开的实施例。
公开的实施例包括可使用硬件和/或软件来处理查询的加速器。协调器可确定硬件是否能够全部或部分地处理查询,并且可协调硬件、软件或两者是否可用于处理查询。通过在处理查询时利用硬件和软件两者的使用,利用硬件的技术优点可被获得,而软件可在硬件不能完全或部分地处理查询的情况下被使用。
公开的实施例包括混合数据库(DB)扫描加速系统架构,混合数据库(DB)扫描加速系统架构可协调软件扫描知识产权(IP)与硬件扫描IP之间的DB扫描加速。当硬件(HW)资源不足以使用HW加速器完全执行DB扫描加速时,该系统可以是有用的。虽然下面的讨论集中于DB扫描操作,但是公开的实施例可扩展到可类似地加速的其他操作。
因为HW加速可能由于有限的硬件资源和实现成本而不支持所有可能的情况,所以公开的实施例可补充HW加速。用HW加速器支持全操作(例如,长字符串比较等)可能是复杂的,并且添加DB加速HW IP以支持全数据集操作(例如,1000B字符串比较)可能没有成本效率。代替地,HW IP可被实现为支持大多数使用情况而不是即使对于罕见情况也完全支持,并且使用SW IP来支持罕见情况。在HW加速器可能无法实现完整的DB扫描的情况下,将HW加速与软件(SW)组合可比单独的HW加速提供改善的结果。
公开的实施例可使用协调器来配置HW扫描IP模块和SW扫描IP模块以提高DB扫描性能。如果HW扫描IP能够处理整个扫描操作(例如,字符串比较),则所有操作可通过HW扫描IP模块被处理。否则,部分DB扫描可通过HW扫描IP模块被处理,并且剩余操作可通过利用HW扫描IP处理输出来通过SW扫描IP模块被处理。协调器可根据HW扫描IP能力来协调硬件扫描IP与软件扫描IP之间的DB扫描处理。
下面的讨论意在提供对在其中可实现公开的某些方面的一个或多个合适的机器的简要的、总体的描述。一个或多个机器可至少部分地通过来自常规输入装置(诸如,键盘、鼠标等)的输入以及通过从另外的机器接收的指令、与虚拟现实(VR)环境的交互、生物特征反馈或其他输入信号来控制。如在此所使用的,术语“机器”意在广泛地包含单个机器、虚拟机或者通信地结合的一起操作的机器、虚拟机或装置的系统。示例性机器包括计算装置(诸如,个人计算机、工作站、服务器、便携式计算机、手持装置、电话、平板计算机等)以及运输装置(诸如,私人或公共交通工具(例如,汽车、火车、出租车等))。
一个或多个机器可包括嵌入式控制器(诸如,可编程或不可编程逻辑器件或阵列、专用集成电路(ASIC)、嵌入式计算机、智能卡等)。一个或多个机器可利用至一个或多个远程机器(诸如,通过网络接口、调制解调器或其他通信结合)的一个或多个连接。机器可通过物理网络和/或逻辑网络(诸如,内联网、互联网、局域网、广域网等)的方式来互连。本领域技术人员将理解,网络通信可利用各种有线和/或无线短距离或长距离载波和协议,包括:射频(RF)、卫星、微波、电气和电子工程师协会(IEEE)802.11、蓝牙光学、红外、电缆、激光等。
本公开的实施例可通过参照或结合相关联的数据来描述,相关联的数据包括函数、程序、数据结构、应用程序等,相关联的数据在被机器访问时引起机器执行任务或者定义抽象数据类型或低级硬件上下文。相关联的数据可被存储在例如易失性存储器和/或非易失性存储器(例如,RAM、ROM等)中,或者被存储在其他存储装置及它们相关联的存储介质中,其他存储装置及它们相关联的存储介质包括硬盘驱动器、软盘、光学存储设备、带、闪存、记忆棒、数字视频盘、生物存储设备等。相关联的数据可以以包、串行数据、并行数据、传播信号等的形式通过包括物理网络和/或逻辑网络的传输环境被传输,并且可以以压缩格式或加密格式被使用。相关联的数据可在分布式环境中被使用,并且被本地地和/或远程地存储以进行机器访问。
公开的实施例可包括有形的、非暂时性机器可读介质,有形的、非暂时性机器可读介质包括可由一个或多个处理器执行的指令,该指令包括用于执行如在此所述的公开的元件的指令。
上面描述的方法的各种操作可由能够执行操作的任何合适的装置(诸如,一个或多个各种硬件和/或软件组件、电路和/或一个或多个模块)来执行。软件可包括用于实现逻辑功能的可执行指令的有序列表,并且可以以任何“处理器可读介质”来实现,以通过指令执行系统、设备或装置(诸如,单核或多核处理器或包含处理器的系统)使用或者结合指令执行系统、设备或装置(诸如,单核或多核处理器或包含处理器的系统)来使用。
结合在此公开的实施例描述的方法或算法和功能的块或步骤可直接以硬件、以由处理器执行的软件模块、或以两者的组合来实现。如果以软件来实现,则功能可作为一个或多个指令或代码被存储在有形的非暂时性计算机可读介质上或通过有形的非暂时性计算机可读介质被传输。软件模块可驻留在随机存取存储器(RAM)、闪存、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动盘、CD ROM或本领域已知的任何其他形式的存储介质中。
已经参照示出的实施例描述和示出公开的原理,将认识到,示出的实施例可在不脱离这样的原理的情况下在布置和细节上被修改,并且可以以任何期望的方式被组合。而且,尽管前述讨论已经集中在特定实施例上,但其他配置被预期。具体地,尽管诸如“根据公开的实施例”等的表述在此被使用,但这些短语意味着总体上涉及实施例可能性,而不意在将公开限制为特定实施例配置。如在此所使用的,这些术语可涉及可组合到其他实施例中的相同的或不同的实施例。
前述的说明性实施例不应被解释为限制其公开。尽管一些实施例已经被描述,但本领域技术人员将容易理解,在实质上不脱离本公开的新颖教导和优点的情况下,许多修改对那些实施例是可行的。因此,所有这样的修改意在被包括在如在权利要求中限定的本公开的范围内。
公开的实施例可扩展至下面的声明,而没有限制:
声明1、公开的实施例包括一种加速器,包括:
硬件,用于处理对数据库的查询;
存储设备,用于软件,软件用于处理对数据库的查询;以及
协调器,用于至少部分地基于所述查询来管理所述硬件和所述软件以处理对数据库的查询,
其中,所述加速器被配置为产生对数据库的查询的结果。
声明2、公开的实施例包括根据声明1所述的加速器,还包括:处理器。
声明3、公开的实施例包括根据声明2所述的加速器,其中,处理器被配置为:执行所述软件,以处理对数据库的查询。
声明4、公开的实施例包括根据声明1所述的加速器,其中,所述硬件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、中央处理器(CPU)、图形处理器(GPU)、通用GPU(GPGPU)、张量处理器(TPU)或数据处理器(DPU)中的至少一个。
声明5、公开的实施例包括根据声明1所述的加速器,其中,所述加速器连接到存储装置,存储装置存储数据库。
声明6、公开的实施例包括根据声明1所述的加速器,其中,协调器被配置为:至少部分地基于所述硬件被配置为处理所述查询,命令所述硬件处理对数据库的查询,并且产生所述结果。
声明7、公开的实施例包括根据声明1所述的加速器,其中,协调器被配置为:至少部分地基于所述硬件被配置为部分地处理所述查询,命令所述硬件部分地处理对数据库的查询并产生部分结果,并且命令所述软件对所述部分结果处理所述查询并产生所述结果。
声明8、公开的实施例包括根据声明7所述的加速器,其中,所述部分结果包括误肯定结果。
声明9、公开的实施例包括根据声明1所述的加速器,其中,协调器被配置为:至少部分地基于所述硬件未被配置为产生所述结果,命令所述软件处理对数据库的查询,并且产生对数据库的查询的结果。
声明10、公开的实施例包括根据声明9所述的加速器,其中,协调器被配置为:至少部分地基于所述硬件对数据库的查询产生误否定,命令所述软件处理对数据库的查询,并且产生所述结果。
声明11、公开的实施例包括根据声明1所述的加速器,其中,协调器被配置为:查询所述硬件以确定所述硬件的能力。
声明12、公开的实施例包括根据声明11所述的加速器,其中,协调器还被配置为:从所述硬件接收所述硬件的能力。
声明13、公开的实施例包括根据声明11所述的加速器,其中,协调器被配置为:至少部分地基于所述查询和所述硬件的能力来管理所述硬件和所述软件。
声明14、公开的实施例包括一种系统,包括:
处理器,用于生成查询;
存储装置,连接到处理器,存储装置存储数据库;
以及加速器,连接到存储装置,加速器被配置为处理对数据库的查询并产生结果,加速器包括:
硬件,用于处理对数据库的查询,
存储设备,用于软件,软件用于处理对数据库的查询,以及
协调器,用于至少部分地基于所述查询来管理所述硬件和所述软件以处理对数据库的查询。
声明15、公开的实施例包括根据声明14所述的系统,还包括:第二处理器。
声明16、公开的实施例包括根据声明15所述的系统,其中,第二处理器被配置为:执行所述软件,以处理对数据库的查询。
声明17、公开的实施例包括根据声明14所述的系统,其中,所述硬件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、中央处理器(CPU)、图形处理器(GPU)、通用GPU(GPGPU)、张量处理器(TPU)或数据处理单元(DPU)中的至少一个。
声明18、公开的实施例包括根据声明14所述的系统,其中,协调器被配置为:至少部分地基于所述硬件被配置为处理所述查询,命令所述硬件处理对数据库的查询,并且产生所述结果。
声明19、公开的实施例包括根据声明14所述的系统,其中,协调器被配置为:至少部分地基于所述硬件被配置为部分地处理所述查询,命令所述硬件部分地处理对数据库的查询并产生部分结果,并且命令所述软件对所述部分结果处理所述查询并产生所述结果。
声明20、公开的实施例包括根据声明19所述的系统,其中,所述部分结果包括误肯定结果。
声明21、公开的实施例包括根据声明14所述的系统,其中,协调器被配置为:至少部分地基于所述硬件对数据库的查询产生误否定,命令所述软件处理对数据库的查询,并且产生所述结果。
声明22、公开的实施例包括根据声明14所述的系统,其中,协调器被配置为:查询所述硬件以确定所述硬件的能力。
声明23、公开的实施例包括根据声明22所述的系统,其中,协调器还被配置为:从所述硬件接收所述硬件的能力。
声明24、公开的实施例包括根据声明22所述的系统,其中,协调器被配置为:至少部分地基于所述查询和所述硬件的能力来管理所述硬件和所述软件。
声明25、公开的实施例包括一种方法,包括:
在加速器处接收查询;
至少部分地基于所述查询,识别加速器的硬件和加速器的软件中的至少一个以处理对数据库的查询;以及
使用所述硬件和所述软件中的至少一个来处理对数据库的查询以产生结果。
声明26、公开的实施例包括根据声明25所述的方法,其中,加速器包括用于所述软件的存储设备。
声明27、公开的实施例包括根据声明26所述的方法,其中,加速器包括处理器,处理器用于执行所述软件以处理对数据库的查询。
声明28、公开的实施例包括根据声明25所述的方法,其中,所述硬件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、中央处理器(CPU)、图形处理器(GPU)、通用GPU(GPGPU)、张量处理器(TPU)或数据处理器(DPU)中的至少一个。
声明29、公开的实施例包括根据声明25所述的方法,其中,至少部分地基于所述查询识别加速器的硬件和加速器的软件中的至少一个以处理对数据库的查询的步骤包括:
确定所述硬件被配置为产生所述结果;以及
识别所述硬件以处理对数据库的查询。
声明30、公开的实施例包括根据声明29所述的方法,其中,使用所述硬件和所述软件中的至少一个来处理对数据库的查询以产生所述结果的步骤包括:使用所述硬件来处理对数据库的查询以产生所述结果。
声明31、公开的实施例包括根据声明25所述的方法,其中,至少部分地基于所述查询识别加速器的硬件和加速器的软件中的至少一个以处理对数据库的查询的步骤包括:
确定所述硬件未被配置为产生所述结果;以及
识别所述软件以处理对数据库的查询。
声明32、公开的实施例包括根据声明31所述的方法,其中,使用所述硬件和所述软件中的至少一个来处理对数据库的查询以产生所述结果的步骤包括:使用所述软件来处理对数据库的查询以产生所述结果。
声明33、公开的实施例包括根据声明31所述的方法,其中,确定所述硬件不能够产生所述结果的步骤包括:至少部分地基于所述硬件处理对数据库的查询来确定数据库包括误否定结果。
声明34、公开的实施例包括根据声明25所述的方法,其中,至少部分地基于所述查询识别加速器的硬件和加速器的软件中的至少一个以处理对数据库的查询的步骤包括:
确定所述硬件被配置为产生部分结果;以及
识别所述硬件和所述软件以处理对数据库的查询。
声明35、公开的实施例包括根据声明34所述的方法,其中,使用所述硬件和所述软件中的至少一个以处理对数据库的查询以产生所述结果的步骤包括:
使用所述硬件处理对数据库的查询以产生所述部分结果;以及
使用所述软件处理对所述部分结果的查询以产生所述结果。
声明36、公开的实施例包括根据声明25所述的方法,其中,使用所述硬件和所述软件中的至少一个来处理对数据库的查询以产生所述结果的步骤包括:从存储装置访问数据库。
声明37、公开的实施例包括根据声明25所述的方法,还包括:通过加速器的协调器查询所述硬件,以确定所述硬件的能力。
声明38、公开的实施例包括根据声明37所述的方法,其中,还包括:在协调器处接收所述硬件的能力。
声明39、公开的实施例包括根据声明37所述的方法,其中,至少部分地基于所述查询识别加速器的硬件和加速器的软件中的至少一个以处理对数据库的查询的步骤包括:至少部分地基于所述查询和所述硬件的能力,识别加速器的硬件和加速器的软件中的至少一个以处理对数据库的查询。
声明40、公开的实施例包括一种用于执行根据声明25至声明39所述的方法的设备。
声明41、公开的实施例包括一种包括非暂时性存储介质的物品,非暂时性存储介质具有存储在其上的指令,所述指令在被机器执行时,使得:
在加速器处接收查询;
至少部分地基于所述查询,识别加速器的硬件和加速器的软件中的至少一个以处理对数据库的查询;以及
使用所述硬件和所述软件中的至少一个来处理对数据库的查询以产生结果。
声明42、公开的实施例包括根据声明41所述的物品,其中,加速器包括用于所述软件的存储设备。
声明43、公开的实施例包括根据声明42所述的物品,其中,加速器包括处理器,处理器用于执行所述软件以处理对数据库的查询。
声明44、公开的实施例包括根据声明41所述的物品,其中,所述硬件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、中央处理器(CPU)、图形处理器(GPU)、通用GPU(GPGPU)、张量处理器(TPU)或数据处理器(DPU)中的至少一个。
声明45、公开的实施例包括根据声明41所述的物品,其中,至少部分地基于所述查询识别加速器的硬件和加速器的软件中的至少一个以处理对数据库的查询的处理包括:
确定所述硬件被配置为产生所述结果;以及
识别所述硬件以处理对数据库的查询。
声明46、公开的实施例包括根据声明45所述的物品,其中,使用所述硬件和所述软件中的至少一个来处理对数据库的查询以产生所述结果的处理包括:使用所述硬件来处理对数据库的查询以产生所述结果。
声明47、公开的实施例包括根据声明41所述的物品,其中,至少部分地基于所述查询识别加速器的硬件和加速器的软件中的至少一个以处理对数据库的查询的处理包括:
确定所述硬件未被配置为产生所述结果;以及
识别所述软件以处理对数据库的查询。
声明48、公开的实施例包括根据声明47所述的物品,其中,使用所述硬件和所述软件中的至少一个来处理对数据库的查询以产生所述结果的处理包括:使用所述软件来处理对数据库的查询以产生所述结果。
声明49、公开的实施例包括根据声明47所述的物品,其中,确定所述硬件不能够产生所述结果的处理包括:至少部分地基于所述硬件处理对数据库的查询来确定数据库包括误否定结果。
声明50、公开的实施例包括根据声明41所述的物品,其中,至少部分地基于所述查询识别加速器的硬件和加速器的软件中的至少一个以处理对数据库的查询的处理包括:
确定所述硬件被配置为产生部分结果;以及
识别所述硬件和所述软件来处理对数据库的查询。
声明51、公开的实施例包括根据声明50所述的物品,其中,使用所述硬件和所述软件中的至少一个来处理对数据库的查询以产生所述结果的处理包括:
使用所述硬件处理对数据库的查询以产生所述部分结果;以及
使用所述软件对所述部分结果处理所述查询以产生所述结果。
声明52、公开的实施例包括根据声明41所述的物品,其中,使用所述硬件和所述软件中的至少一个来处理对数据库的查询以产生所述结果的处理包括:从存储装置访问数据库。
声明53、公开的实施例包括根据声明41所述的物品,非暂时性存储介质具有存储在其上的进一步的指令,所述进一步的指令在被机器执行时,使得:通过加速器的协调器查询所述硬件,以确定所述硬件的能力。
声明54、公开的实施例包括根据声明53所述的物品,非暂时性存储介质具有存储在其上的进一步的指令,所述进一步的指令在被机器执行时,使得:在协调器处接收所述硬件的能力。
声明55、公开的实施例包括根据声明53所述的物品,其中,至少部分地基于所述查询识别加速器的硬件和加速器的软件中的至少一个以处理对数据库的查询的处理包括:至少部分地基于所述查询和所述硬件的能力,识别加速器的硬件和加速器的软件中的至少一个以处理对数据库的查询。
因此,鉴于在此描述的对实施例的广泛的各种置换,本具体实施方式和所附材料意在仅是说明性的,并且不应作为限制公开的范围。因此,公开所要求保护的是可进入所附权利要求及其等同物的范围和精神内的所有这样的修改。
Claims (20)
1.一种用于加速的装置,包括:
硬件,用于处理对数据库的查询;
存储设备,用于存储软件,所述软件用于处理对数据库的查询;以及
协调器,用于至少部分地基于对数据库的查询来管理所述硬件和所述软件以处理对数据库的查询,
其中,所述装置被配置为产生对数据库的查询的结果。
2.根据权利要求1所述的用于加速的装置,还包括:处理器,被配置为执行所述软件以处理对数据库的查询。
3.根据权利要求1所述的用于加速的装置,其中,所述硬件包括现场可编程门阵列、专用集成电路、中央处理器、图形处理器、通用图形处理器、张量处理器和数据处理器中的至少一个。
4.根据权利要求1所述的用于加速的装置,其中,协调器被配置为:至少部分地基于所述硬件被配置为部分地处理对数据库的查询,命令所述硬件部分地处理对数据库的查询并产生部分结果,并且命令所述软件处理所述部分结果并产生所述结果。
5.根据权利要求1至权利要求4中的任一项所述的用于加速的装置,其中,协调器被配置为:查询所述硬件以确定所述硬件的能力。
6.根据权利要求1所述的用于加速的装置,其中,协调器被配置为:至少部分地基于所述硬件被配置为处理对数据库的查询,命令所述硬件处理对数据库的查询,并且产生所述结果。
7.一种用于加速的系统,包括:
第一处理器,用于生成查询;
存储装置,连接到第一处理器,存储装置存储数据库;以及
加速器,连接到存储装置,加速器被配置为处理对数据库的查询并产生结果,加速器包括:
硬件,用于处理对数据库的查询,
存储设备,用于存储软件,所述软件用于处理对数据库的查询,以及
协调器,用于至少部分地基于对数据库的查询来管理所述硬件和所述软件以处理对数据库的查询。
8.根据权利要求7所述的系统,还包括:第二处理器,被配置为执行所述软件以处理对数据库的查询。
9.根据权利要求7所述的系统,其中,所述硬件包括现场可编程门阵列、专用集成电路、中央处理器、图形处理器、通用图形处理器、张量处理器和数据处理器中的至少一个。
10.根据权利要求7所述的系统,其中,协调器被配置为:至少部分地基于所述硬件被配置为部分地处理对数据库的查询,命令所述硬件部分地处理对数据库的查询并产生部分结果,并且命令所述软件处理所述部分结果并产生所述结果。
11.根据权利要求7至权利要求10中的任一项所述的系统,其中,协调器被配置为:查询所述硬件以确定所述硬件的能力。
12.根据权利要求7所述的系统,其中,协调器被配置为:至少部分地基于所述硬件被配置为处理对数据库的查询,命令所述硬件处理对数据库的查询,并且产生所述结果。
13.一种用于加速的方法,包括:
在加速器处接收对数据库的查询;
至少部分地基于对数据库的查询,识别加速器的硬件和加速器的软件中的至少一个以处理对数据库的查询;以及
使用所述硬件和所述软件中的至少一个来处理对数据库的查询以产生结果。
14.根据权利要求13所述的方法,其中,至少部分地基于对数据库的查询识别加速器的硬件和加速器的软件中的至少一个以处理对数据库的查询的步骤包括:
确定所述硬件被配置为产生所述结果;以及
识别所述硬件以处理对数据库的查询。
15.根据权利要求13所述的方法,其中,至少部分地基于对数据库的查询识别加速器的硬件和加速器的软件中的至少一个以处理对数据库的查询的步骤包括:
确定所述硬件未被配置为产生所述结果;以及
识别所述软件以处理对数据库的查询。
16.根据权利要求13所述的方法,其中,至少部分地基于对数据库的查询识别加速器的硬件和加速器的软件中的至少一个以处理对数据库的查询的步骤包括:
确定所述硬件被配置为产生部分结果;以及
识别所述硬件和所述软件来处理对数据库的查询。
17.根据权利要求16所述的方法,其中,使用所述硬件和所述软件中的至少一个来处理对数据库的查询以产生所述结果的步骤包括:
使用所述硬件处理对数据库的查询以产生所述部分结果;以及
使用所述软件处理所述部分结果以产生所述结果。
18.根据权利要求13至权利要求17中的任一项所述的方法,还包括:通过加速器的协调器查询所述硬件,以确定所述硬件的能力。
19.根据权利要求18所述的方法,还包括:在协调器处接收所述硬件的能力。
20.根据权利要求18所述的方法,其中,至少部分地基于对数据库的查询识别加速器的硬件和加速器的软件中的至少一个以处理对数据库的查询的步骤包括:至少部分地基于对数据库的查询和所述硬件的能力,识别加速器的硬件和加速器的软件中的至少一个以处理对数据库的查询。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/306,090 | 2022-02-02 | ||
US17/720,272 | 2022-04-13 | ||
US17/720,272 US20230244664A1 (en) | 2022-02-02 | 2022-04-13 | Hybrid database scan acceleration system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116541415A true CN116541415A (zh) | 2023-08-04 |
Family
ID=87444120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211423694.0A Pending CN116541415A (zh) | 2022-02-02 | 2022-11-14 | 用于加速的装置、系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116541415A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117539912A (zh) * | 2023-11-23 | 2024-02-09 | 武汉软件工程职业学院(武汉开放大学) | 一种加速异构数据源访问的系统、方法及设备 |
-
2022
- 2022-11-14 CN CN202211423694.0A patent/CN116541415A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117539912A (zh) * | 2023-11-23 | 2024-02-09 | 武汉软件工程职业学院(武汉开放大学) | 一种加速异构数据源访问的系统、方法及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9846642B2 (en) | Efficient key collision handling | |
US10216418B2 (en) | Storage apparatus and method for autonomous space compaction | |
US9612975B2 (en) | Page cache device and method for efficient mapping | |
US20170017395A1 (en) | Storage apparatus, data processing method and storage system | |
US11042328B2 (en) | Storage apparatus and method for autonomous space compaction | |
US10275175B2 (en) | System and method to provide file system functionality over a PCIe interface | |
CN111897743B (zh) | 数据储存装置及逻辑至物理地址映射表的载入方法 | |
KR102669897B1 (ko) | 부팅 가능한 키 값 장치 | |
US20170160940A1 (en) | Data processing method and apparatus of solid state disk | |
US10482087B2 (en) | Storage system and method of operating the same | |
CN116541415A (zh) | 用于加速的装置、系统和方法 | |
EP4224336A1 (en) | Hybrid database scan acceleration system | |
CN114780448A (zh) | 数据快速拷贝的方法、装置、计算机设备及存储介质 | |
EP3937000A1 (en) | Key value storage device and method for sorting key | |
CN116738510A (zh) | 有效地获得存储在地址空间中的信息的系统和方法 | |
US20230029728A1 (en) | Per-service storage of attributes | |
KR20220085031A (ko) | 데이터베이스 임시 테이블 프로세싱을 가속화하기 위한 스토리지 장치 어댑터 | |
US8667188B2 (en) | Communication between a computer and a data storage device | |
US20240184641A1 (en) | Near-storage format transformation | |
CN107526686B (zh) | 数据处理电路与数据处理方法 | |
US20240168876A1 (en) | Solving submission queue entry overflow using metadata or data pointers | |
US11392389B2 (en) | Systems and methods for supporting BIOS accessibility to traditionally nonaddressable read-only memory space | |
WO2023208087A1 (zh) | 一种数据处理方法、装置及相关设备 | |
US11989142B2 (en) | Efficient and concurrent model execution | |
US12019914B2 (en) | Data processing device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |