CN116893779A - 用于数据库扫描加速的系统和方法 - Google Patents
用于数据库扫描加速的系统和方法 Download PDFInfo
- Publication number
- CN116893779A CN116893779A CN202310326272.XA CN202310326272A CN116893779A CN 116893779 A CN116893779 A CN 116893779A CN 202310326272 A CN202310326272 A CN 202310326272A CN 116893779 A CN116893779 A CN 116893779A
- Authority
- CN
- China
- Prior art keywords
- data
- scan
- mode
- column
- kernel
- 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 25
- 230000001133 acceleration Effects 0.000 title description 3
- 239000000872 buffer Substances 0.000 claims abstract description 70
- 238000007781 pre-processing Methods 0.000 claims abstract description 30
- 238000001914 filtration Methods 0.000 claims abstract description 21
- 238000012545 processing Methods 0.000 claims description 20
- 230000009977 dual effect Effects 0.000 claims description 9
- 238000000605 extraction Methods 0.000 claims description 4
- 238000004891 communication Methods 0.000 description 37
- 230000006870 function Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 16
- 238000004590 computer program Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 239000000446 fuel Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003155 kinesthetic effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000017105 transposition Effects 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/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/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)
- Image Processing (AREA)
Abstract
提供了一种方法和存储设备。在存储设备中的扫描内核的输入缓冲器处获得用于扫描操作的数据。输入缓冲器适用于扫描内核的第一模式和第二模式。对来自输入缓冲器的数据执行预处理以生成经预处理的数据。对于第一模式和第二模式执行不同类型的预处理。过滤经预处理的数据以生成过滤结果。将过滤结果从扫描内核提供给存储设备的控制器。
Description
对相关申请的交叉引用
本申请基于并要求在2022年4月1日提交的序列号为63/326,341的美国临时专利申请的优先权,其全部内容通过引用并入本文。
技术领域
本公开总体上涉及数据库扫描,并且更具体地,涉及一种加速扫描操作的方法和可缩放流式架构。
背景技术
顺序扫描操作需要来自存储器和储存设备的低计算强度和高数据吞吐量。软件通过首先将数据从储存设备移动到主机存储器来实现这些操作。然后使用中央处理单元(CPU)指令从主机存储器执行顺序扫描操作,并且存储结果被提供回主机存储器。将数据移动到主机存储器所需的时间成为数据中心在线分析处理(OLAP)工作负载的瓶颈。
Postgres,一种对象关系数据库系统,也利用其复杂且灵活的数据页面格式及其基于行的数据格式对现有的OLAP工作负载提出了挑战。这些特性使得扫描操作难以在硬件中加速,这是因为同一行中的项目在扫描和过滤操作中紧密耦合。
发明内容
实施例使用计算储存智能设备在数据储存设备附近的硬件中执行顺序扫描加过滤操作,从而通过减少的数据移动来降低功耗,同时也使能在CPU指令中不可用的并行处理架构。
根据实施例,提供了一种存储设备的方法。在存储设备中的扫描内核的输入缓冲器处获得用于扫描操作的数据。输入缓冲器适用于扫描内核的第一模式和第二模式。执行对来自输入缓冲器的数据的预处理以生成经预处理的数据。针对第一模式和第二模式执行不同类型的预处理。经预处理的数据被过滤以生成过滤结果。过滤结果被从扫描内核提供给存储设备的控制器。
根据实施例,提供了一种存储设备,其包括控制器和扫描内核硬件。扫描内核硬件被配置为在输入缓冲器处获得用于扫描操作的数据。输入缓冲器适用于扫描内核的第一模式和第二模式。扫描内核硬件也被配置为对来自输入缓冲器的数据执行预处理以生成经预处理的数据。针对第一模式和第二模式执行不同类型的预处理。扫描内核硬件还被配置为过滤经预处理的数据以生成过滤结果,并将过滤结果从扫描内核提供给控制器。
根据实施例,提供了一种存储设备,其包括控制器、片上网络(NoC)和扫描内核硬件。扫描内核硬件被配置为使用输入缓冲器来对经由NoC接收的数据执行预处理,以生成经预处理的数据。输入缓冲器被不同地适配用于扫描内核的第一模式和第二模式。扫描内核硬件也被配置为过滤经预处理的数据以生成过滤结果,并且经由NoC将过滤结果从扫描内核提供给控制器。
附图说明
通过以下结合附图的详细描述,本公开的某些实施例的上述和其他方面、特征和优点将更加明显,其中:
图1是示出根据实施例的储存设备的系统架构的示图;
图2是示出根据实施例的图1的扫描内核的两种模式的示图;
图3是示出堆表文件的页面布局的示图;
图4是示出根据实施例的可缩放域特定预处理的示图;
图5是示出根据实施例的用于预处理的方法的流程图;
图6是示出根据实施例的线内(inline)扫描和过滤的示图;
图7是示出根据实施例的图6的组合模块的示图;
图8是示出根据实施例的操作存储设备的方法的流程图;
图9示出根据一个实施例的网络环境中的电子设备的框图;以及
图10示出根据实施例的存储系统的示图。
具体实施方式
在下文中,参考附图详细描述本公开的实施例。应当注意,相同的元件将由相同的附图标记表示,尽管它们在不同的附图中示出。在以下描述中,仅提供诸如详细配置和组件的具体细节以帮助全面理解本公开的实施例。因此,对于本领域技术人员应清楚的是,在不脱离本公开的范围的情况下,可以对本文描述的实施例进行各种改变和修改。此外,为了清楚和简明起见,省略了对公知功能和构造的描述。以下描述的术语是考虑到本公开中的功能而定义的术语,并且可以根据用户、用户的意图或习惯而不同。因此,术语的定义应基于整个说明书的内容来确定。
本公开可以具有各种修改和各种实施例,其中下面参考附图详细描述实施例。然而,应当理解,本公开不限于实施例,而是包括在本公开的范围内的所有修改、等同物和替代物。
尽管包括诸如第一、第二等序数的术语可以用于描述各种元件,但是结构元件不受术语的限制。这些术语仅用于将一个元件与另一个元件区分开。例如,在不脱离本公开的范围的情况下,第一结构元件可以被称为第二结构元件。类似地,第二结构元件也可以被称为第一结构元件。如本文所使用的,术语“和/或”包括一个或多个关联项目的任何和所有组合。
本文使用的术语仅用于描述本公开的各种实施例,而不旨在限制本公开。除非上下文另有明确说明,否则单数形式旨在包括复数形式。在本公开中,应当理解,术语“包括”或“具有”指示存在特征、数字、步骤、操作、结构元件、部件或其组合,并且不排除存在一个或多个其他特征、数字、步骤、操作、结构元件、部件或其组合或添加一个或多个其他特征、数字、步骤、操作、结构元件、部件或其组合的可能性。
除非不同地定义,否则本文使用的所有术语具有与本公开所属领域的技术人员所理解的含义相同的含义。诸如在通常使用的字典中定义的那些术语的术语应被解释为具有与相关领域中的上下文含义相同的含义,并且除非在本公开中明确定义,否则不应被解释为具有理想或过于正式的含义。
根据一个实施例,电子设备可以是利用储存设备和/或非易失性存储器快速(NVMe)的各种类型的电子设备之一。电子设备可以包括例如便携式通信设备(例如,智能电话)、计算机、便携式多媒体设备、便携式医疗设备、相机、可穿戴设备或家用电器。然而,电子设备不限于上述那些。
本公开中使用的术语不旨在限制本公开,而是旨在包括对应实施例的各种改变、等同或替换。关于附图的描述,类似的附图标记可以用于指代类似或相关的元件。除非相关上下文另有明确说明,否则对应于项目的单数形式的名词可以包括一个或多个事物。如本文所使用的,诸如“A或B”、“A和B中的至少一个”、“A或B中的至少一个”、“A、B或C”、“A、B和C中的至少一个”和“A、B或C中的至少一个”的短语中的每一个可以包括在对应的一个短语中一起列举的项目的所有可能组合。如本文所使用的,诸如“第1”、“第2”、“第一”和“第二”的术语可以用于将对应组件与另一组件区分开,但并不旨在将组件限制在其他方面(例如,重要性或顺序)。如果在有或没有术语“可操作地”或“通信地”的情况下将元件(例如,第一元件)称为“与另一元件(例如,第二元件)耦接”、“与另一元件连接”、“耦接到另一元件”或“连接到另一元件”,则表示该元件可以直接(例如,有线)、无线或经由第三元件与另一元件耦接。
如本文所使用的,术语“模块”可以包括以硬件、软件、固件或其组合实现的单元,并且可以与其他术语互换使用,例如“逻辑”、“逻辑块”、“部分”和“电路”。模块可以是适于执行一个或多个功能的单个集成组件或其最小单元或部分。例如,根据一个实施例,模块可以以专用集成电路(ASIC)的形式实现。
顺序扫描操作是用于基于软件的解决方案的计算密集型操作类型。由于低效的软件解决方案,CPU资源和能量在数据中心中丢失。本文的实施例利用由计算存储框架提供的可缩放硬件架构,该计算存储框架将数据移动保持为最小。利用软件/硬件协同设计和数据并行性来平衡该可缩放硬件架构中的性能和灵活性。
实施例实现可缩放流式架构以加速顺序扫描操作。该架构将扫描功能与数据预取和预处理引擎分离。因此,该架构隐藏了数据取出时延并消除了对基于行的数据库的数据格式依赖性,诸如,例如Postgres或基于列的数据库格式。另外,并行扫描和过滤路径支持流式处理而无需软件干预。
与CPU上的软件实现相比,硬件域特定加速器可以具有窄焦点应用。然而,当将该硬件实现与已知软件实现进行比较时,硬件预处理能够实现每周期的元组级并行性和更高的性能。硬件实现也提高了能量效率。数据以流式方式被处理,这消除了对存储器储存的需要。
图1是示出根据实施例的储存设备的系统架构的示图。储存设备102包括存储器控制器(MC)(例如,双倍数据速率(DDR)MC)104、处理器106、NVMe相对性能(RP)模块108和NVMe有效性能(EP)模块110,每一个与片上网络(NOC)112通信。
NOC 112也与扫描内核硬件114通信。扫描内核硬件114包括预取模块116、输入缓冲器118、预处理模块120、数据转置模块122、复用器(MUX)124、扫描和过滤器模块126以及写入存储器(mem_wr)模块128。经由NOC 112,数据从NVMe EP模块110被提供给扫描内核硬件114的预取模块116。然后,数据被提供给输入缓冲器118,然后基于扫描内核的模式在预处理模块120和/或数据转置模块122中被处理。在数据被提供给扫描和过滤器模块126以及写入存储器模块128之前,并行路径在MUX 124处被复用,写入存储器模块128将数据返回到MC 104。扫描内核硬件114也包括参数130。
组合的软件/硬件协同设计以及平衡的性能和灵活性以每个周期为基础比CPU表现得更好,并且在数据储存附近的部署减少了不必要的数据移动并节省了能量。
图2是示出根据实施例的图1的扫描内核的两种模式的示图。可配置结构有效地隐藏了来自后续扫描和过滤流水线的数据移动时延。在第一模式(例如,Postgres模式)中,输入缓冲器使用乒乓(ping-pong)方案来隐藏数据加载时延。在第二模式(例如,列式(columnar)模式)中,输入缓冲器执行列到行转置,以便并行扫描和过滤。
第一模式中的扫描内核202使用乒乓方案来隐藏数据加载时延。预取模块206(例如,图1的预取模块116)通过高级可扩展接口(AXI)-读取来获得数据,并且将8千字节(KB)页面208提供给乒乓(或双存储器)缓冲器210和212。下面参考图3更详细地描述页面208。元组提取在可见性模块214(例如,图1的预处理模块120)处执行。列在列模块216处被填充并且在扫描模块218处被扫描。arb模块220向输出FIFO缓冲器224提供行222。模块216、218和220以及输出FIFO缓冲器224可以对应于图1的扫描和过滤模块126。输出列读取模块226从输出FIFO缓冲器224获得列228,并经由AXI-写入返回列。硬件扫描内核202也包括经由AXI-lite接口接收数据的控制和状态寄存器(CSR)250。
对于第二模式中的扫描内核204,预取模块206获得列230,其然后被提供给输入FIFO缓冲器232。输入列读取模块234从输入FIFO缓冲器232获得行236。此动作对应于图1的数据转置模块122。然后,第二模式中的扫描内核204遵循与以上针对第一模式中的扫描内核202所描述的处理流水线类似的处理流水线。
图3是示出堆表文件的页面布局的示图。堆表文件300通常在Postgres中被使用,并且被划分为固定长度的页面或映射(例如,302、304、306和308)。页面对应于图2的页面208。默认长度可以是8192字节或8KB。页面被编号为第0块至第N块。每个页面(例如,第1页面304)包括三种类型的信息:报头信息310、行指针312和堆元组314。报头信息310的长度是24字节,包含关于页面304的一般信息,并且被分配在页面304的开始处。
报头信息310包括存储日志序列号(LSN)的pd_lsn参数316、存储校验和(checksum)值的pd_checksum参数318、pd_flags参数320、指向行指针的末尾的pd_lower参数322、指向最新堆元组的开始的pd_upper参数324、指向页面的末尾的pd_special参数326、pd_pagesize_version参数328和pd_prune_xid参数330。
第一行指针332定义页面304内的第一元组336的开始。第二行指针334定义页面304内的第二元组338的开始。第一元组336和第二元组338以反向方式从页304的末尾堆叠,在最后一个行指针的末尾和最后一个元组的开始之间留下空白空间340。
实施例实现基于硬件的加速器,该基于硬件的加速器能够本原地且有效地处理数据库页面。加速器与分流应用编程接口(API)无缝地一起工作以执行行和列过滤功能,并且输出用于顺序扫描功能的通用列格式以执行针对每个查询的扫描和过滤。预处理利用元组级并行性,并且能够缩放到处理技术允许的更高性能的解决方案。高效的基于列的扫描将导致需要在单独迭代中被后处理的中间结果。
图4是示出根据实施例的可缩放域特定预处理的示图。图5是示出根据实施例的用于预处理的方法的流程图。具体地,图4和图5是当扫描内核202处于第一模式(例如,Postgres模式)时图1的预处理模块120的详细描述。
在图5的502处,元组数据404被从FIFO缓冲器402取出。在504处,解析报头并计算切片索引。在506处,元组数据404被分离到列寄存器中。例如,第一元组数据406被提供给对应于第1列的第一列寄存器410,并且第二元组数据408被提供给对应于第16列的第二列寄存器412。第1列寄存器和第16列寄存器之间的列寄存器也可以用对应数据填充。在508处,通过基于数据类型对用户数据406进行切片来获取有效载荷414,从而移除报头。在510处,如果需要,数值数据被转换为double型,以提供8字节列数据416。可以对16列中的每一列并行执行类似的过程,如图5中的并行路径所示。例如,从第16列的用户数据408获取的有效载荷418被转换为8字节列数据420。
图4的实施例示出跨16列的预处理。然而,实施例不限于此数量的列。例如,可以跨8、32或任何其他数量的列执行预处理。
图6是示出根据实施例的线内(inline)扫描和过滤的示图。具体地,线内扫描和过滤操作在单个流式路径中被处理,并且对应于图1的扫描和过滤模块126。
图6的实施例示出跨16列的并行扫描操作。然而,实施例不限于此数量的列。例如,可以跨8、32或任何其他数量的列执行并行扫描操作。
如图所示,在具有FIFO缓冲器、复用器和扫描模块的相应比较器处扫描16列中的每一列。对于第0列,1位空标志和64位第0列输入被提供到第一64位×32FIFO缓冲器602中,其向第一复用器604提供输出。64位第0列输入和附加64位输入被提供给第一扫描模块606,其也向复用器604提供输出。
使用各个FIFO缓冲器、复用器和扫描模块对第1至第15列中的每一个并行执行类似的操作。例如,用于第1列的比较器包括第二FIFO缓冲器608、第二复用器610和第二扫描模块612。用于第2列的比较器包括第三FIFO缓冲器614、第三复用器616和第三扫描模块618。用于第3列的比较器包括第四FIFO缓冲器620、第四复用器622和第四扫描模块624。用于第7列的比较器包括第五FIFO缓冲器626、第五复用器628和第五扫描模块630。用于第14列的比较器包括第六FIFO缓冲器632、第六复用器634和第六扫描模块636。用于第15列的比较器包括第七FIFO缓冲器638、第七复用器640和第七扫描模块642。
复用的64位输出从每个复用器被提供给组合模块644,其也接收操作码并输出单个比特。因此,同时扫描16个输入流,其中,每列一个输入流。
单个比特与相应pick_mask组合被提供给每列的对应AND(与)模块。例如,在第一AND模块646处,单个比特与第0列的pick_mask组合。在第二AND模块648处,单个比特与第1列的pick_mask组合。在第三AND模块650处,单个比特与第2列的pick_mask组合。在第四AND模块652处,单个比特与第15列的pick_mask组合。
来自每个AND模块的结果连同相应列的FIFO缓冲器输出一起被提供给该列的拾取(pick)模块。例如,来自第一AND模块646的结果和来自第一FIFO缓冲器602的输出被提供给第一拾取模块654。来自第二AND模块648的结果和来自第二FIFO缓冲器608的输出被提供给第二拾取模块656。来自第三AND模块650的结果和来自第三FIFO缓冲器614的输出被提供给第三拾取模块658。来自第四AND模块652的结果和来自第七FIFO缓冲器638的输出被提供给第四拾取模块660。每个拾取模块提供64位输出。因此,在单个流式路径中执行扫描和拾取或过滤操作。
并行顺序扫描架构在同一周期中处理查询中的多个项。结果直接应用于过滤器函数,大大减少了输出量。这种线内处理能力通过不将数据存储回存储器来提高操作效率。作为基本示例,列数据可以基于年龄(age)被扫描,并且结果数据可以基于名称和地址被过滤。
与CPU上的基于软件指令的方法相比,该实施例利用数据路径级并行性,并且能够按比例放大到处理技术所允许的程度。
图7是示出根据实施例的图6的组合模块的示图。数据类型700被提供给组合模块644。如关于图6所描述的,关于每列的复用64位输出也被提供给组合模块644。每一个64位输出和相应注册表文件被提供给相应复用器。例如,第一64位输出和第一注册表文件702被提供给第一复用器704,并且第二64位输出和第二注册表文件706被提供给第二复用器708。可以对其余列执行类似的操作。
复用输出和第一操作码被提供给相应比较器模块。例如,来自第一复用器704的输出和第一操作码被提供给第一比较器模块710,并且来自第二复用器708的输出和第一操作码被提供给第二比较器模块712。第一操作码包括16位操作掩码和1位操作命令。
来自比较器模块的所得的8位与第二操作码一起被提供给相应配置模块,第二操作码包括16位操作掩码和1位操作命令。例如,来自第一比较器模块710的8位被提供给第一配置模块714,并且来自第二比较器模块712的8位被提供给第二配置模块716。然后,在模块718处将来自第一配置模块714和第二配置模块716的配置结果与第三操作码一起组合,该第三操作码是2位操作掩码和1位操作命令。这从组合模块644得到单个比特输出。
图8是示出根据实施例的用于执行扫描操作的方法的流程图。在802处,数据被预取以用于存储设备中的扫描内核的输入缓冲器处的扫描操作。输入缓冲器适用于扫描内核的第一模式和第二模式。输入缓冲器在扫描内核的第一模式中被实现为乒乓缓冲器,并且在扫描内核的第二模式中被实现为列式FIFO缓冲器。
在804处,对来自输入缓冲器的数据执行数据特定预处理以生成经预处理的数据。对于第一模式和第二模式中的每一个执行不同类型的预处理。在第一模式中,通过乒乓缓冲器预处理数据的页面格式,并执行元组提取。跨列并行地执行预处理。在第二模式中,通过列式FIFO缓冲器将数据从基于列的格式转置为基于行的格式。
在806处,经预处理的数据被扫描并过滤以生成过滤结果。数据从多个列被并行地扫描以生成每列的扫描结果,扫描结果被组合,并且基于组合的扫描结果并行地过滤来自多个列的数据。在808处,过滤结果从扫描内核被提供给存储设备的控制器。
图9示出根据一个实施例的网络环境900中的电子设备901的框图。参考图9,网络环境900中的电子设备901可以经由第一网络998(例如,短距离无线通信网络)与电子设备902通信,或者经由第二网络999(例如,长距离无线通信网络)与电子设备904或服务器908通信。电子设备901可以经由服务器908与电子设备904通信。电子设备901可以包括处理器920、存储器930、输入设备950、声音输出设备955、显示设备960、音频模块970、传感器模块976、接口977、触觉模块979、相机模块980、功率管理模块988、电池989、通信模块990、订户标识模块(SIM)996或天线模块997。在一个实施例中,可以从电子设备901中省略组件中的至少一个(例如,显示设备960或相机模块980),或者可以将一个或多个其他组件添加到电子设备901。在一个实施例中,一些组件可以被实现为单个集成电路(IC)。例如,传感器模块976(例如,指纹传感器、虹膜传感器或照度传感器)可以被嵌入在显示设备960(例如,显示器)中。
处理器920可以执行例如软件(例如,程序940)以控制与处理器920耦接的电子设备901的至少一个其他组件(例如,硬件或软件组件),并且可以执行各种数据处理或计算。处理器可以对应于命令处理器,或仲裁器、命令取出器、备用缓冲器、命令解析器和命令处理器的组合。作为数据处理或计算的至少一部分,处理器920可以将从另一组件(例如,传感器模块976或通信模块990)接收的命令或数据加载到易失性存储器932中,处理存储在易失性存储器932中的命令或数据,并将结果数据存储在非易失性存储器934中。处理器920可以包括主处理器921(例如,CPU或应用处理器(AP))和可独立于或结合主处理器921操作的辅助处理器923(例如,图形处理单元(GPU)、图像信号处理器(ISP)、传感器集线器处理器或通信处理器(CP))。附加地或替代地,辅助处理器923可以被适配为消耗比主处理器921更少的功率,或者执行特定功能。辅助处理器923可以被实现为与主处理器921分离或是其一部分。
辅助处理器923可以在主处理器921处于非活动(例如,睡眠)状态的同时代替主处理器921,或者在主处理器921处于活动状态(例如,执行应用)的同时与主处理器921一起,控制与电子设备901的组件中的至少一个组件(例如,显示设备960、传感器模块976或通信模块990)相关的功能或状态中的至少一些。根据一个实施例,辅助处理器923(例如,图像信号处理器或通信处理器)可以被实现为在功能上与辅助处理器923相关的另一组件(例如,相机模块980或通信模块990)的一部分。
存储器930可以存储由电子设备901的至少一个组件(例如,处理器920或传感器模块976)使用的各种数据。各种数据可以包括例如软件(例如,程序940)和用于与其相关的命令的输入数据或输出数据。存储器930可以包括易失性存储器932或非易失性存储器934。
程序940可以作为软件被存储在存储器930中,并且可以包括例如操作系统(OS)942、中间件944或应用946。
输入设备950可以从电子设备901的外部(例如,用户)接收要由电子设备901的另一组件(例如,处理器920)使用的命令或数据。输入设备950可以包括例如麦克风、鼠标或键盘。
声音输出设备955可以将声音信号输出到电子设备901的外部。声音输出设备955可以包括例如扬声器或接收器。扬声器可以用于一般目的,诸如播放多媒体或录像,并且接收器可以用于接收呼入呼叫。根据一个实施例,接收器可以被实现为与扬声器分离或者是扬声器的一部分。
显示设备960可以向电子设备901的外部(例如,用户)可视地提供信息。显示设备960可以包括例如显示器、全息图设备或投影仪以及用于控制显示器、全息图设备和投影仪中的对应一个的控制电路。根据一个实施例,显示设备960可以包括适用于检测触摸的触摸电路,或者适用于测量由触摸引起的力的强度的传感器电路(例如,压力传感器)。
音频模块970可以将声音转换为电信号,反之亦然。根据一个实施例,音频模块970可以经由输入设备950获得声音,或者经由与电子设备901直接(例如,有线)或无线耦接的外部电子设备902的声音输出设备955或耳机输出声音。
传感器模块976可以检测电子设备901的操作状态(例如,功率或温度)或电子设备901外部的环境状态(例如,用户的状态),然后生成与检测到的状态相对应的电信号或数据值。传感器模块976可以包括例如手势传感器、陀螺仪传感器、大气压传感器、磁传感器、加速度传感器、握持传感器、接近传感器、颜色传感器、红外(IR)传感器、生物传感器、温度传感器、湿度传感器或照度传感器。
接口977可以支持用于使电子设备901与外部电子设备902直接(例如,有线)或无线耦接的一个或多个指定协议。根据一个实施例,接口977可以包括例如高清晰度多媒体接口(HDMI)、通用串行总线(USB)接口、安全数字(SD)卡接口或音频接口。
连接端子978可以包括连接器,电子设备901可以经由该连接器与外部电子设备902物理连接。根据一个实施例,连接端子978可以包括例如HDMI连接器、USB连接器、SD卡连接器或音频连接器(例如,耳机连接器)。
触觉模块979可以将电信号转换为可以由用户经由触感或动觉识别的机械刺激(例如,振动或移动)或电刺激。根据一个实施例,触觉模块979可以包括例如电机、压电元件或电刺激器。
相机模块980可以捕获静止图像或运动图像。根据一个实施例,相机模块980可以包括一个或多个透镜、图像传感器、图像信号处理器或闪光灯。
功率管理模块988可以管理提供给电子设备901的功率。功率管理模块988可以被实现为例如功率管理集成电路(PMIC)的至少一部分。
电池989可以向电子设备901的至少一个组件供电。根据一个实施例,电池989可以包括例如不可再充电的一次电池、可再充电的二次电池或燃料电池。
通信模块990可以支持在电子设备901与外部电子设备(例如,电子设备902、电子设备904或服务器908)之间建立直接(例如,有线)通信信道或无线通信信道,并经由建立的通信信道执行通信。通信模块990可以包括可独立于处理器920(例如,AP)操作并且支持直接(例如,有线)通信或无线通信的一个或多个通信处理器。根据一个实施例,通信模块990可以包括无线通信模块992(例如,蜂窝通信模块、短距离无线通信模块或全球导航卫星系统(GNSS)通信模块)或有线通信模块994(例如,局域网(LAN)通信模块或功率线通信(PLC)模块)。这些通信模块中的对应一个可以经由第一网络998(例如,短距离通信网络,诸如BluetoothTM、无线-保真(Wi-Fi)直连或红外数据协会(IrDA)的标准)或第二网络999(例如,长距离通信网络,诸如蜂窝网络、互联网或计算机网络(例如,LAN或广域网(WAN))与外部电子设备通信。这些各种类型的通信模块可以被实现为单个组件(例如,单个IC),或者可以被实现为彼此分离的多个组件(例如,多个IC)。无线通信模块992可以使用存储在订户标识模块996中的订户信息(例如,国际移动订户身份(IMSI))来识别和认证诸如第一网络998或第二网络999的通信网络中的电子设备901。
天线模块997可以向电子设备901的外部(例如,外部电子设备)发送信号或功率或从其接收信号或功率。根据一个实施例,天线模块997可以包括一个或更多个天线,并且从中,可以例如由通信模块990(例如,无线通信模块992)选择适合于在诸如第一网络998或第二网络999的通信网络中使用的通信方案的至少一个天线。然后可以经由选择的至少一个天线在通信模块990与外部电子设备之间发送或接收信号或功率。
上述组件中的至少一些可以相互耦接并且经由外围间通信方案(例如,总线、通用输入和输出(GPIO)、串行外围接口(SPI)或移动工业处理器接口(MIPI))在它们之间传送信号(例如,命令或数据)。
根据一个实施例,可以经由与第二网络999耦接的服务器908在电子设备901与外部电子设备904之间发送或接收命令或数据。电子设备902和904中的每一个可以是与电子设备901相同类型或不同类型的设备。可以在外部电子设备902、904或908中的一个或多个处执行要在电子设备901处执行的操作中的全部或一些。例如,如果电子设备901应当自动地或者响应于来自用户或另一设备的请求执行功能或服务,则代替执行功能或服务或者除了执行功能或服务之外,电子设备901可以请求一个或多个外部电子设备执行功能或服务的至少一部分。接收请求的一个或多个外部电子设备可以执行所请求的功能或服务的至少一部分,或者与请求相关的附加功能或附加服务,并将执行的结果传送到电子设备901。电子设备901可以在对结果进行进一步处理或不进行进一步处理的情况下提供结果作为对请求的回复的至少一部分。为此,例如,可以使用云计算、分布式计算或客户端-服务器计算技术。
一个实施例可以被实现为包括存储在可由机器(例如,电子设备901)读取的存储介质(例如,内部存储器936或外部存储器938)中的一个或多个指令的软件(例如,程序940)。例如,电子设备901的处理器可以在处理器的控制下在使用或不使用一个或多个其他组件的情况下调用存储在存储介质中的一个或多个指令中的至少一个指令并执行该至少一个指令。因此,可以操作机器以根据所调用的至少一个指令来执行至少一个功能。一个或多个指令可以包括由编译器生成的代码或由解释器可执行的代码。机器可读存储介质可以以非暂时性存储介质的形式提供。术语“非暂时性”指示存储介质是有形设备,并且不包括信号(例如,电磁波),但是该术语不区分数据半永久地存储在存储介质中的位置与数据临时存储在存储介质中的位置。
根据一个实施例,可以在计算机程序产品中包括和提供本公开的方法。计算机程序产品可以作为产品在卖方与买方之间进行交易。计算机程序产品可以以机器可读存储介质(例如,光盘只读存储器(CD-ROM))的形式分发,或者经由应用商店(例如,PlayStoreTM)在线分发(例如,下载或上传),或者直接在两个用户设备(例如,智能电话)之间分发。如果在线分发,则计算机程序产品的至少一部分可以临时生成或至少临时存储在机器可读存储介质中,诸如制造商服务器的存储器、应用商店的服务器或中继服务器。
根据一个实施例,上述组件中的每个组件(例如,模块或程序)可以包括单个实体或多个实体。可以省略上述组件中的一个或多个,或者可以添加一个或多个其他组件。替代地或附加地,多个组件(例如,模块或程序)可以集成到单个组件中。在这种情况下,集成组件仍然可以以与集成之前由多个组件中的对应一个执行功能相同或相似的方式执行多个组件中的每一个的一个或多个功能。由模块、程序或另一组件执行的操作可以顺序地、并行地、重复地或启发式地执行,或者可以以不同的顺序执行或省略一个或多个操作,或者可以添加一个或多个其他操作。
图10示出根据实施例的存储系统1000的示图。存储系统1000包括主机1002和储存设备1004。尽管描绘了一个主机和一个储存设备,但是存储系统1000可以包括多个主机和/或多个储存设备。储存设备1004可以是固态设备(SSD)、通用闪存(UFS)等。储存设备1004包括控制器1006和连接到控制器1006的存储介质1008。控制器1006可以是SSD控制器、UFS控制器等。存储介质1008可以包括易失性存储器、非易失性存储器或两者,并且可以包括一个或多个闪存芯片(或其他存储介质)。控制器1006可以包括一个或多个处理器、一个或多个纠错电路、一个或多个现场可编程门阵列(FPGA)、一个或多个主机接口、一个或多个闪存总线接口等或其组合。控制器1006可以被配置为促进主机1002与存储介质1008之间的数据/命令的传送。主机1002将数据/命令发送到存储设备1004以由控制器1006接收并结合存储介质1008进行处理。如本文所述,方法、过程和算法可以在诸如控制器1006的储存设备控制器上实现。仲裁器、命令取出器和命令处理器可以在储存设备1004的控制器1006中实现,并且处理器和缓冲器可以在主机1002中实现。
尽管已经在本公开的详细描述中描述了本公开的某些实施例,但是在不脱离本公开的范围的情况下,可以以各种形式修改本公开。因此,本公开的范围不应仅基于所描述的实施例来确定,而是基于所附权利要求及其等同物来确定。
Claims (20)
1.一种存储设备的方法,包括:
在存储设备中的扫描内核的输入缓冲器处获得用于扫描操作的数据,其中,输入缓冲器适用于扫描内核的第一模式和第二模式;
对来自输入缓冲器的数据执行预处理以生成经预处理的数据,其中对于第一模式和第二模式执行不同类型的预处理;
过滤经预处理的数据以生成过滤结果;以及
将过滤结果从扫描内核提供给存储设备的控制器。
2.根据权利要求1所述的方法,其中,在扫描内核的第一模式中输入缓冲器是双存储器缓冲器,并且在扫描内核的第二模式中输入缓冲器是列式先进先出(FIFO)缓冲器。
3.根据权利要求2所述的方法,其中,对数据执行预处理包括以下中的一个:
在第一模式中,通过双存储器缓冲器处理数据的页面格式并执行元组提取;或者
在第二模式中,通过列式FIFO缓冲器将数据从基于列的格式转换为基于行的格式。
4.根据权利要求3所述的方法,其中,处理页面格式包括:
从双存储器缓冲器获得页面格式的元组数据;
将元组数据分离到对应列寄存器中;
获取分离的元组数据的有效载荷;以及
将有效载荷转换为列数据。
5.根据权利要求4所述的方法,其中,处理页面格式被跨列并行执行。
6.根据权利要求4所述的方法,其中,获取有效载荷包括将有效载荷与分离的元组数据分离。
7.根据权利要求4所述的方法,其中,列寄存器的数量对应于双存储器缓冲器中的列的数量。
8.根据权利要求1所述的方法,其中,过滤经预处理的数据包括:
并行扫描来自列的数据以生成每列的扫描结果;
组合扫描结果;以及
基于组合扫描结果并行地过滤来自列的数据。
9.根据权利要求8所述的方法,其中,所述扫描、组合和过滤被线内执行。
10.根据权利要求8所述的方法,其中,扫描结果在输出单个比特的组合模块处被组合。
11.一种存储设备,包括:
控制器;以及
扫描内核硬件;
其中,扫描内核硬件被配置为:
在输入缓冲器处获得用于扫描操作的数据,其中,输入缓冲器适用于扫描内核的第一模式和第二模式;
对来自输入缓冲器的数据执行预处理以生成经预处理的数据,其中对于第一模式和第二模式执行不同类型的预处理;
过滤经预处理的数据以生成过滤结果;和
将过滤结果从扫描内核提供给控制器。
12.根据权利要求11所述的存储设备,其中,在扫描内核的第一模式中输入缓冲器是双存储器缓冲器,并且在扫描内核的第二模式中输入缓冲器是列式先进先出(FIFO)缓冲器。
13.根据权利要求12所述的存储设备,其中,在对数据执行预处理中,扫描内核硬件还被配置为:
在第一模式中,通过双存储器缓冲器处理数据的页面格式并执行元组提取;或者
在第二模式中,通过列式FIFO缓冲器将数据从基于列的格式转换为基于行的格式。
14.根据权利要求13所述的存储设备,其中,在处理页面格式中,扫描内核硬件还被配置为:
从双存储器缓冲器获得页面格式的元组数据;
将元组数据分离到对应列寄存器中;
获取分离的元组数据的有效载荷;以及
将有效载荷转换为列数据。
15.根据权利要求14所述的存储设备,其中,处理页面格式被跨列并行执行。
16.根据权利要求14所述的存储设备,其中,在获取有效载荷中,扫描内核硬件还被配置为将有效载荷与分离的元组数据分离。
17.根据权利要求14所述的存储设备,其中,列寄存器的数量对应于双存储器缓冲器中的列的数量。
18.根据权利要求11所述的存储设备,其中,在过滤经预处理的数据中,扫描内核硬件还被配置为:
并行扫描来自列的数据,以生成每列的扫描结果;
组合扫描结果;以及
基于组合扫描结果并行地过滤来自列的数据。
19.根据权利要求18所述的存储设备,其中,所述扫描、组合和过滤被线内执行。
20.一种存储设备,包括:
控制器;
片上网络(NoC);以及
扫描内核硬件,
其中,扫描内核硬件被配置为:
对使用输入缓冲器经由NoC接收的数据执行预处理以生成经预处理的数据,其中,输入缓冲器对于扫描内核的第一模式或第二模式被不同地适配;
过滤经预处理的数据以生成过滤结果;和
经由NoC将过滤结果从扫描内核提供给控制器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/326,341 | 2022-04-01 | ||
US17/830,854 US11927634B2 (en) | 2022-04-01 | 2022-06-02 | Systems and methods for database scan acceleration |
US17/830,854 | 2022-06-02 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116893779A true CN116893779A (zh) | 2023-10-17 |
Family
ID=88312573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310326272.XA Pending CN116893779A (zh) | 2022-04-01 | 2023-03-30 | 用于数据库扫描加速的系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116893779A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117708176A (zh) * | 2023-12-14 | 2024-03-15 | 广州海量数据库技术有限公司 | 一种openGauss数据库btree索引扫描方法和系统 |
-
2023
- 2023-03-30 CN CN202310326272.XA patent/CN116893779A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117708176A (zh) * | 2023-12-14 | 2024-03-15 | 广州海量数据库技术有限公司 | 一种openGauss数据库btree索引扫描方法和系统 |
CN117708176B (zh) * | 2023-12-14 | 2024-05-28 | 广州海量数据库技术有限公司 | 一种openGauss数据库btree索引扫描方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4261702A1 (en) | Systems and methods for database scan acceleration | |
CN110045960B (zh) | 基于芯片的指令集处理方法、装置及存储介质 | |
US12112072B2 (en) | Method and memory device for atomic processing of fused commands | |
EP4296841A1 (en) | Method and system for solid state drive (ssd)-based redundant array of independent disks (raid) | |
CN116893779A (zh) | 用于数据库扫描加速的系统和方法 | |
CN112100088A (zh) | 电子装置以及使用该电子装置的存储部的方法 | |
JP2021061036A (ja) | ベクトルプロセッサ | |
US11438010B2 (en) | System and method for increasing logical space for native backup appliance | |
EP4290380A1 (en) | Method and system for accelerating application performance in solid state drive | |
EP4325363A1 (en) | Device for managing cache corruption, and operation method thereof | |
KR20220072748A (ko) | 버퍼 메모리 장치의 헤드 오브 라인 엔트리 처리 | |
CN112749787A (zh) | 半数字交叉式架构的稀疏神经网络层的优化 | |
US20230024420A1 (en) | Methods and devices for file read latency reduction | |
EP4357928A1 (en) | Methods and system for efficient access to solid state drive | |
US20220414014A1 (en) | Technology for early abort of compression acceleration | |
US20240320166A1 (en) | Low-Latency Bridge to Support Out-of-Order Execution | |
US10840943B1 (en) | System and method of data compression between backup server and storage | |
US11892951B2 (en) | Key packing for flash key value store operations | |
US11048413B2 (en) | Method for reducing read ports and accelerating decompression in memory systems | |
US11907144B1 (en) | Early semaphore update | |
CN117194004A (zh) | 存储器装置及其操作方法 | |
US10579606B2 (en) | Apparatus and method of data analytics in key-value solid state device (KVSSD) including data and analytics containers | |
TWI791699B (zh) | 電子裝置及使用其處理指令的方法 | |
US20210042125A1 (en) | Electronic device for executing instructions using processor cores and various versions of instruction set architectures | |
CN117908766A (zh) | 用于高效访问固态驱动器的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |