CN104662534B - 用于表扫描加速的硬件 - Google Patents

用于表扫描加速的硬件 Download PDF

Info

Publication number
CN104662534B
CN104662534B CN201380049301.7A CN201380049301A CN104662534B CN 104662534 B CN104662534 B CN 104662534B CN 201380049301 A CN201380049301 A CN 201380049301A CN 104662534 B CN104662534 B CN 104662534B
Authority
CN
China
Prior art keywords
data
coprocessor
scan operation
result
operation order
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
Application number
CN201380049301.7A
Other languages
English (en)
Other versions
CN104662534A (zh
Inventor
K·艾加仑
G·F·斯沃特
S·卡皮尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
Oracle International Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oracle International Corp filed Critical Oracle International Corp
Priority to CN201810434459.0A priority Critical patent/CN108664596B/zh
Publication of CN104662534A publication Critical patent/CN104662534A/zh
Application granted granted Critical
Publication of CN104662534B publication Critical patent/CN104662534B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24561Intermediate data storage techniques for performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/082Associative directories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7885Runtime interface, e.g. data exchange, runtime control
    • G06F15/7889Reconfigurable logic implemented as a co-processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/24569Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明提供了用于处理查询的技术。为处理查询所需的一个或多个操作由独立于运行查询处理软件的通用微处理器的协处理器执行。查询处理软件接收查询,确定完全处理查询所需要执行的一个或多个操作,并且发出一个或多个命令给一个或多个协处理器,所述一个或多个协处理器被编程用于执行所述操作之一,比如表扫描操作和/或查找操作。所述查询处理软件从所述协处理器中获得结果,并且在其上执行一个或多个附加操作,以生成所述查询的最终结果。

Description

用于表扫描加速的硬件
优先权和相关申请
本申请要求在2013年2月26日提交的美国专利申请No.13/778,009的优先权;该申请No.13/778,009要求在2012年10月2日提交的美国临时申请No.61/709,142的优先权,这两个申请的内容通过引用的方式并入本文,如同完全在此阐述一样。
本申请涉及在2013年2月26日提交的美国专利申请No.13/778,013,该申请的内容通过引用的方式并入本文,如同完全在此阐述一样。
技术领域
本发明一般地涉及处理查询,并且更具体地,涉及在一个或多个协处理器中使用定制硬件来执行为处理该查询所需的一个或多个操作。
背景技术
这部分所描述的方法是能够实行的方法,但不一定是之前已经构想出的或已经实现的方法。因此,除非另有指出,否则不应这样假定:这部分所描述的任何方法仅仅由于它们包含于这部分内而算作现有技术。
对数据库发出的查询典型地将诸如关系表的一个或多个数据库对象作为目标。通常,存取按关系表组织的数据涉及扫描该关系表或其至少一部分。常见的SQL查询是针对数据库表需要过滤器的SQL查询,比如下面所示:
select EMPLOYEE from T_EMPLOYEES where HIRE_YEAR=′2012′
在本例中,在该数据库表T_EMPLOYEES中搜索受雇于2012年的所有雇员。该搜索(或“扫描”)通过在一个或多个微处理器上运行的软件来完成,该一个或多个微处理器执行一系列指令以在该表中搜索该指定值,在本例中该指定值为“2012”。第一步骤在对大的数据库运行分析应用时往往是性能瓶颈,因为该步骤必须在整个表上运行,而该表可以是数太字节大小。后续的步骤将在满足扫描中的准则集(在上例中为受雇于2012年的雇员)的第一扫描步骤的过滤的子集上进行。因此,机器每单位时间能够过滤的行数是该机器重要的性能度量。该度量被称为“扫描速度”。
用于处理查询(例如,涉及扫描表的查询)的方法依赖于软件技术,其中该软件在通用微处理器上执行(或“运行”)。
附图说明
在附图中:
图1是示出根据实施例的用于加速表扫描的示例计算机系统的框图;
图2是示出根据实施例的示例协处理器的框图;
图3是示出根据实施例的用于处理查询的过程的流程图;
图4是示出在实施例中的示例查找向量的一部分的框图;以及
图5是示出计算机系统的框图,本发明的实施例可以在该计算机系统上实施。
具体实施方式
在下面的描述中,为了解释的目的,阐明了众多具体的细节以便提供对本发明的全面理解。但是,应当很明显的是,本发明可以在没有这些特定的细节的情况下实施。在其它情况下,众所周知的结构和设备以框图的形式来示出以便避免不必要地使本发明变得晦涩难懂。
总体概况
在实施例中,与查询相关的扫描操作或查找操作以比如与通用微处理器位于同一芯片上的协处理器的硬件来实现。这样,扫描操作由定制硬件来执行,而查询的其它部分由通用微处理器运行软件来处理。让不同的硬件组件执行不同的操作的一个优点是:定制硬件能够更好地处理扫描操作或查找操作所需的大量数据。此外,定制硬件使通用微处理器及其相关联的高速缓存空闲出来以从事于查询的其它部分或者甚至是与处理该查询的软件无关的其它任务。
本发明的实施例并不限定于任何特定的微处理器或图形处理单元(GPU)。
下面的实例将表格作为被扫描的数据对象。但是,并非所有实施例都限定于表格。除了表格之外的数据对象也可以被扫描。
系统概况
图1是示出根据实施例的用于加速查询的处理的示例计算机系统100的框图。计算机系统100包含查询执行引擎110、OS/管理程序(Hypervisor)120、协处理器130和存储器140。尽管图中仅示出单个协处理器130,系统100可以包含多个协处理器。
查询执行引擎110和管理程序120是驻留于存储器(例如,DRAM和/或高速缓冲存储器)内且包含由通用微处理器执行的指令的程序。查询执行引擎110包含一个或多个软件组件,并且可以与不是查询执行引擎110的一部分的一个或多个其它软件组件通信,以便执行查询以生成该查询的结果。查询执行引擎110可以被配置用于重写查询(例如,SQL查询)以生成查询执行引擎110能够执行的重写的查询。作为选择,另一个软件组件接收原始查询,基于原始查询来生成重写的查询,并且将重写的查询传递给查询执行引擎110以进行处理。
查询执行引擎110可以被配置用于处理的查询类型的非限制性实例包括SQL查询和XML查询,比如XPath查询和XQuery查询。查询执行引擎110被配置用于处理的至少一种查询类型是要求对对象或其一部分进行扫描的查询。如同前面所述的,被扫描的对象的非限制性实例是逻辑上按照一个或多个列和多个行来组织的关系表。虽然数据在逻辑上可以按照单个表来组织,但是数据也可以非常不同地按照诸如硬盘驱动器或闪存设备的永久存储器来组织。例如,表格的数据可以进行分割,或者表格的不同列可以存储在完全不同的存储位置内。
管理程序120充当在查询执行引擎110与协处理器130之间的接口。换言之,由查询执行引擎110对协处理器130发出的命令经由管理程序120来发出。因而,查询执行引擎110通过对OS/管理程序120作出API调用来在管理程序接口上发出命令。
管理程序是允许多个操作系统(“客户”)在主机计算机上同时运行的硬件虚拟化技术。管理程序给客户操作系统提供虚拟操作平台,并且管理客户操作系统的执行。各种操作系统的多个实例可以共享虚拟的硬件资源。管理程序可以安装于服务器硬件上,具有运行客户操作系统的功能,其中客户操作系统自身充当服务器。
一种类型的管理程序直接在主机的硬件上运行,用于控制硬件并且管理客户操作系统。从而,客户操作系统在管理程序之上的另一个层面上运行。另一种类型的管理程序在典型的操作系统环境内运行。以该类型的管理程序层作为不同的第二软件层面,客户操作系统在硬件之上的第三层面上运行。换言之,第一类型的管理程序直接在硬件上运行,而第二类型的管理程序在例如FreeBSD、Linux或Windows的另一个操作系统上运行。
因而,尽管元件120被标记为“OS/管理程序”,但是操作系统和管理程序是不同的实体。为了该描述的目的,OS和管理程序被同等对待。下面对元件120的引用将为“管理程序120”。
尽管管理程序120在一种实施例中被示为计算机系统100的一部分,但是计算机系统100不包含管理程序。在该实施例中,查询执行引擎110在没有首先要求由除了计算机系统100的操作系统(未示出)外的任何其它软件组件进行处理的情况下直接向协处理器130发出命令。
协处理器130是被编程来执行与由执行查询执行引擎110和管理程序120的通用处理器执行的任务分隔开的一个或多个任务的硬件元件。虽然协处理器130与执行查询执行引擎110的通用处理器分离,但是协处理器130可以被看作是查询执行引擎110的一部分,因为协处理器130执行原来由查询执行引擎110执行的一个或多个任务。
在实施例中,协处理器130至少执行将指定的目标值(或值的目标范围)与表中的一系列输入值进行比较的任务。该任务被称为扫描操作并且在下文更详细地描述。在实施例中,协处理器130能够将多个指定的目标值(或者多个指定的目标范围)与表中的一系列输入值或数据元素进行比较。
在另一实施例中,协处理器130至少执行确定在特定的值集中是否存在一个或多个值的任务。该一个或多个值可以被用来索引到该特定的值集之内,使得不需要针对该一个或多个值中的每个值来对该特定的值集进行扫描。在该实施例中,协处理器130被编程以高效地执行查找操作,这将在下文更详细地描述。
除了由查询执行引擎110确立或指示的初始参数外,协处理器130在没有来自查询执行引擎110或任何其它软件的干预的情况下执行扫描操作和/或查找操作,直到扫描操作或查找操作(由启动命令指出)完成。在那时,协处理器130向查询执行引擎110发出信号:操作的结果可用。该信号可以是设定标记的形式。管理程序120可以使用该信号在协处理器130的命令队列中插入新的命令。
在实施例中,协处理器130被编程来处理不同的数据类型/格式和元素尺寸。例如,协处理器130可以处理字符串格式的、日期格式的或数字(例如,整数或浮点数)格式的数据。此外,协处理器130处理的数据元素的尺寸可以是特定数量的位(例如,7位)或者特定数量的字节(例如,2字节)。而且,来自特定源(比如表)的数据元素可以为可变长度或固定长度。在一种实施例中,协处理器130接收自对象(比如表)的数据元素可以是一个尺寸的,并且协处理器130执行操作以在执行例如该数据元素与另一个数据元素的比较之前缩小或增大该数据元素的尺寸,比如从该数据元素中去除一个字节,给该数据元素增添9位或者解压该数据元素。
在实施例中,协处理器130驻留于芯片上,也就是,与执行查询执行引擎110的通用微处理器相同的芯片上。协处理器130包含(a)使表数据(或其它数据)从片上或片外存储器流到协处理器130的存储器接口以及(b)执行扫描操作和/或查找操作的计算块。例如,在扫描操作的情形中,计算块作用于表数据上以确定在表数据中是否出现了指定的值或值范围。因而,一组比较器被用来确定传入流的每个元素是否等于搜索值或者位于所搜索的值范围之内。在该组比较器中的每个比较器可以同时执行比较操作。因而,协处理器130可以同时执行多个比较操作。在实施例中,协处理器130被配置用于执行多种类型的比较,例如,一个4字节比较、两个2字节比较、四个1字节比较,和/或一个2字节与一个1字节的比较。协处理器130通过存储器接口将搜索结果发送给片上存储器或片外存储器。
如图1所示,存储器140存储命令142、输入数据144和输出数据146。反映于命令142中的命令指的是(1)用于存储至少一部分输入数据144的存储器140中的位置以及(2)与命令对应的操作(或多个操作)的结果(由协处理器130生成)将在存储器140中被存储的位置。
在实施例中,协处理器130包含用于存储一个或多个命令的一个或多个地址的命令队列。在不忙时,协处理器130从命令队列中选择一个或多个地址(由管理程序120插入),以便在存储器(例如,存储器140)中检索该一个或多个命令(例如,反映于命令142中)。
协处理器控制块
在实施例中,查询执行引擎110包含在由通用微处理器(未示出)执行时促使生成协处理器控制块(CCB)的指令。CCB是表示由查询执行引擎110发出的命令且包含协处理器被配置用于读取并处理的数据的数据结构。在实施例中,CCB包含指示协处理器130将要执行的操作的类型的命令类型数据以及与由该命令类型数据指示的操作对应的一个或多个操作数。如果协处理器130仅执行一个操作,则命令类型数据可以不是在CCB中的可用操作数。作为选择,如果协处理器被配置用于仅执行一个操作,则协处理器130可以忽略命令类型数据。
命令类型数据指示协处理器130将使用哪个逻辑来处理命令。因而,不同的命令类型对应于由协处理器130实现的不同逻辑。例如,扫描操作要求协处理器130执行第一逻辑,而查找操作要求协处理器130执行与第一逻辑不同的第二逻辑。
在CCB中指出的操作数可以是以下两种类型之一:立即操作数或间接操作数。立即操作数是在协处理器于没有首先要求翻译操作数的情况下执行比如存储器查找的操作时能够由协处理器立即使用的操作数。在扫描操作的情况下,立即操作数的一个实例是用于执行与表数据中的数据元素的比较的4字节整数。间接操作数是在协处理器能够执行指定的操作之前必须首先被翻译或被查找的操作数。间接操作数的一个实例是物理地址,该物理地址指示表数据存储于何处(例如,在存储器140中)以由协处理器执行操作,无论是扫描操作还是查找操作。
在扫描操作的情况下,在CCB中指出的(扫描操作的)操作数包括:(a)指示被用来执行与表数据中的数据进行比较的数据的比较数据,以及(b)指示表数据位于何处的位置数据(例如,在存储器140中的输入数据144)。
比较数据可以是任意类型的数据,比如数字、日期、字符或字符串。比较数据可以是单个值和/或值范围。另外,比较数据可以指示多个值和/或多个值范围。例如,查询可以请求查看收入低于$30,000的雇员的以及收入在$100,000到$130,000之间的雇员的姓名。在本例中,比较数据指示范围0~30,000以及范围100,000~130,000。
位置数据可以是单个地址或多个地址,比如起始地址和结束地址或者起始地址和相对起始地址的偏移。在位置数据中指出的每个地址都可以是虚地址、实地址或物理地址。在实施例中,管理程序120以第二位置数据来替代在CCB中指出的位置数据。例如,(例如客户)操作系统识别在CCB中指出的位置数据,其中该位置数据是虚地址,并且以实地址来替代该虚地址。操作系统然后将CCB发送给管理程序120。管理程序120在映射表中查找被映射到实地址的物理地址,并且在CCB中以物理地址来替代实地址。
在实施例中,CCB还包含指示协处理器130要将由CCB指示的操作的执行结果发送到何处的输出位置数据。在图1中,输出位置数据将指向存储器140内的输出数据146。如果多个微处理器被集成于同一芯片上并且每个微处理器都具有它自己的私有高速缓存,这会是有益的。因而,如果用于执行查询执行引擎110的特定的通用微处理器是同一芯片上的多个通用微处理器之一,并且每个微处理器与不同的(例如,L3)高速缓存关联,则查询执行引擎110可以指定与该特定的通用微处理器邻接的或在其附近的高速缓存,作为在CCB中的参数。因而,作为协处理器130将操作的结果发送给RAM的替换,协处理器130可以(基于在CCB中指出的输出位置数据)将结果不仅发送给高速缓存,而且还发送给与查询执行引擎110“最近”的特定的高速缓存。这样,查询执行引擎110没有被要求来请求(a)来自RAM的、(b)来自另一个微处理器的(或内核的)高速缓存的或者(c)来自为多个内核共享的共享高速缓存的结果,上述三种方式中的每一个都会比从微处理器的自己的(私有的)高速缓存中存取数据慢得多。相反,查询执行引擎110被允许指示由一个或多个硬件元件(即,在该实施例中为协处理器)执行的操作的结果将被存储于何处。
协处理器
一旦协处理器130经由管理程序120的接口接收到(或者直接来自查询执行引擎110的)命令(例如,以CCB的形式),协处理器130就执行与查询执行引擎110发出原始命令的线程异步的命令。如果协处理器130接收到多个命令,则协处理器130可以按照循环调度(round robin)的方式调度该多个命令来执行。某些命令可以并行地执行。
在实施例中,用于命令的输入数据(例如,关系数据)经由接口来提取(到查询执行引擎110),并且命令的结果(即,协处理器130基于输入数据来生成的结果)经由该接口来写出。
在实施例中,协处理器130促使完成状态在每个命令结束时经由接口写出到接口中的完成数据结构内。查询执行引擎110可以使用完成数据结构来与查询执行引擎110的一个或多个线程重新同步。
图2是示出根据实施例的示例协处理器200的框图。协处理器200可以是在图1中的协处理器130。协处理器200包含存储器接口210、命令调度器220、解压器230、查询管道240和消息管道250。消息管道250处理存储器拷贝和消息传递。在解压器230解压了压缩的输入数据(例如,来自关系表的数据)之后,查询管道240处理一个或多个查询命令,比如扫描命令或查询命令。
解压器230可以被配置为仅解压以单一格式压缩的数据。作为选择,解压器230可以被配置为解压以一种格式压缩的数据以及以另一种格式压缩的其它数据。在实施例中,协处理器200不包含解压器230。在协处理器200接收数据时,如果协处理器200接收到的数据不是压缩的(例如,是已经解压的),则解压可以不是必需的。此外,如果协处理器200被配置用于在压缩数据上直接操作,不必首先解压该压缩数据,则即使对于压缩数据,解压也可以是非必需的。
管道240和管道250的每个都与不同的命令队列集关联,并且可任选地与不同的命令格式集关联。管理程序120被配置用于确保:命令(反映于CCB中)被定向到正确管道的命令队列。在CCB中的标记位可以指出CCB是消息命令还是查询命令。
管道240和管道250的每个都可以是多线程的,并且能够一次执行多个命令。多线程的程度对于软件是不公开的。命令调度器220可以对可用线程调度命令,假定该命令是可并行的。如果给定的命令需要串行化于另一个命令之后,则这两个命令可以被放置于同一命令队列内,并且在两个命令中可以设置适当的串行化标记。
尽管未示出,协处理器200包含一定数量的存储器,用于在数据经由存储器接口210流入时存储数据,或者用于存储在查找操作中使用的数据,比如查找向量,其实例之一为布隆过滤器(Bloom Filter)。由于目前的芯片在很大程度上由用于主要内核或通用微处理器的一个或多个高速缓存构成,协处理器200的存储器的大小可以是很小的(例如,4KB)。
在查询执行引擎110“查看”表数据关系并对其执行操作时,协处理器200仅“看见”数据的向量或单维数组或者在其上操作。换言之,协处理器200不“查看”多个列或行标识符。更确切地,对于数据在逻辑上被如何组织或存储,协处理器200是不知道的。因此,在给协处理器200提供指令时,查询执行引擎110确保由协处理器200执行的任何操作的输出按照特定的顺序来存储。如若不是,查询执行引擎110将不清楚输出与表的哪一部分对应。用以保持排序的一种方式是让查询执行引擎110保持对哪个表数据集与哪个CCB对应的跟踪,其中每个CCB都包含唯一的CCB标识符。然后,由协处理器200基于特定的CCB来生成的输出包含该特定CCB的标识符,以允许查询执行引擎110来确定输出与逻辑表的哪一部分对应。例如,查询执行引擎110可以存储使雇员(Employee)表的行1001-2000与CBB标识符432899关联起来的关联数据。协处理器200接收并处理具有标识符432899的CCB,以生成存储于特定位置的输出。
作为选择,代替保持对CCB标识符的跟踪,查询执行引擎110存储使指示表的一部分(例如,雇员表的行1001-2000)的表数据与指示由协处理器200生成的输出将要存储于何处的输出位置数据(例如,物理地址1298737+4KB)关联的关联数据。后来,当查询执行引擎110检查存储于该存储位置的输出时,查询执行引擎110使用关联数据来确定表的哪个部分对应于该输出。因而,即使协处理器200在不同的时间在表的不同部分上操作,并且即使查询执行引擎110可能指导多个协处理器在表的不同部分上操作,该操作可能同时执行,查询执行引擎110都能够保持对输出顺序的跟踪。
处理查询
图3是示出在实施例中的用于处理要求扫描操作的查询的过程300的流程图。在块310,查询执行引擎110接收将一个或多个数据对象(比如表)作为目标以及要求对该一个或多个数据对象中的至少一个进行扫描操作的查询。例如,查询执行引擎110可以处理SQL查询,以生成包含一个或多个数据库操作(包括扫描操作)的、查询执行引擎110被配置用于执行或指导一个或多个其它软件组件来执行的重写查询。作为选择,另一个软件组件接收原始查询并且生成查询执行引擎110被配置用于处理的重写查询。
在块320,查询执行引擎110基于一个或多个准则来确定在处理查询时是否涉及协处理器130。该一个或多个准则可以指示之前是否已生成并缓存结果,对表的索引是否存在并且是否可用于回答该查询来代替扫描表、表的尺寸等。例如,如果需要扫描的表的尺寸是相对小的,则相比在没有涉及协处理器130的情况下执行查询,涉及协处理器130可能要求更多的工作(例如,以执行查询执行引擎110的指令的通用微处理器的使用的形式)或者比在花费更多的时间。
除此以外或作为选择,该一个或多个准则可以指示按照不同的方式来处理查询(或重写查询)的相对成本。例如,查询执行引擎110可以包含用于估计在不同的执行方案下执行查询的成本的成本估计器组件,不同的执行方案比如使用索引、在不使用协处理器130的情况下扫描表以及使用协处理器130来扫描表。然后,查询执行引擎110根据成本来选择最廉价的执行方案。“成本”可以基于一个或多个因素,例如,CPU使用情况、存储器使用情况、I/O使用情况和网络I/O使用情况。
如果查询执行引擎110确定在执行查询时涉及协处理器130,则过程300进入块330。
在块330,查询执行引擎110给管理程序120发送一个或多个指令的地址、输入数据的地址,以及输出数据将要被存储的地址。该一个或多个指令可以是查询执行引擎110生成的CCB的形式。管理程序120将地址由虚地址翻译成物理地址,并且将该物理地址放置于协处理器130的命令队列或缓冲区内。
在查询执行引擎110促使该一个或多个指令被存储于存储器内(并且因而可供协处理器130读取)之后,查询执行引擎110可以执行与查询的执行相关的或者还与另一个查询相关的其它任务。这样,由协处理器130执行的操作与由查询执行引擎110执行的任务异步地执行,该查询执行引擎110由通用微处理器执行。
如上所述,计算机系统100可以包含多个协处理器。因而,查询执行引擎110可以将指令(例如,CCB)发送给多个协处理器中的每个协处理器。这样,扫描操作或查找操作可以被划分成多个“微”操作,允许每个协处理器执行不同的“微”操作。例如,特定的表可以包含10,000行,并且可以有10个协处理器。然后,查询执行引擎110可以生成10个不同的CCB,这10个CCB每个都类似于其它的CCB,只是每个CCB指示用以存取该特定表的不同组的1,000行的不同地址。这样,这10个协处理器在该特定表的不同部分上并行操作。
除此以外或作为选择,块330包含查询执行引擎110基于一个或多个准则来选择多个协处理器的子集来发送CCB。例如,查询执行引擎110可以只需要总共10个协处理器中的3个协处理器来各自执行扫描操作(但是在与每个其它协处理器相关的不同组的表数据上)。查询执行引擎110用来选择一个或多个协处理器的一个或多个准则可以是每个协处理器的当前负荷、每个协处理器的延迟和/或每个协处理器的处理历史。例如,查询执行引擎110选择当前最小“负荷”的或最不繁忙的3个协处理器。协处理器的负荷可以反映于处于协处理器的一个或多个命令队列中的命令数中。因而,等待由特定的协处理器处理的命令越多,该特定的协处理器就变得负荷越大。
在块340,协处理器130接收一个或多个指令,并且执行反映于该一个或多个指令中的一个或多个操作。例如,协处理器130接收CCB,确定反映于该CCB中的操作(或多个操作)的类型,读入完成该操作(或多个操作)必需的任何数据,执行该操作(或多个操作),并且(在块350中)促使操作(或多个操作)的结果被发送给查询执行引擎110。由协处理器130进行的命令执行可以通过由查询执行引擎110(或其代理之一)对协处理器130的一个或多个内部寄存器的写入来触发。
扫描操作
在实施例中,该一个或多个指令指示扫描操作以及存储有表数据的一个或多个地址。协处理器130检索表数据,并且在值或值范围(在该一个或多个指令中指定)与表数据之间执行比较。协处理器130通过存储器(例如,存储器140)来从查询执行引擎110中请求表数据,该存储器可以是系统中的动态RAM或者芯片上的高速缓冲存储器。表数据可以按块存储,所述块可以相对较大,比如64KB或更大。协处理器130可以将这些块中的每个块作为单维数组来存取。在列式数据库中,数据处于单维数组中,并且可以由协处理器130容易地读取。在行优先的数据库中,数据可以在由协处理器130处理之前首先被变换为列优先的格式。
如果表数据跨越在存储器中不连续的块,则协处理器130单独请求每个块(作为单独的作业)。在此情形中,查询执行引擎将每个作业的结果(由协处理器130生成的)“拼接(stitch)”在一起。例如,在行优先的数据库中,数据将为跨步的,并且协处理器130将会每隔N个数据就选择一个,其中N在命令中指定。
协处理器130可以“即时”,也就是,在表数据流入协处理器130时执行比较。一旦在表数据中的数据元素与在该一个或多个指令中指定的目标值或者值的目标范围进行比较,协处理器130就可以(立即或最终)使用来自表数据的新的数据元素来覆写用于存储该数据元素的存储器。
可以配置协处理器以使其执行的比较操作的类型的实例包括大于(>)、小于(<)、等于(==)、不等于(!=)、大于或等于(>=)以及小于或等于(<=)。
语义感知式压缩(SEMANTIC-AWARE COMPRESSION)
在实施例中,协处理器130被配置用于对压缩数据进行操作。使用一种或多种非语义感知式的压缩技术来压缩某些数据,而可以使用一种或多种语义感知式压缩技术来压缩其它数据。使用非语义感知式的压缩技术压缩的数据要求在可以对已解压数据进行操作之前首先解压。使用语义感知式压缩技术压缩的数据可以不必在操作(例如,数字或字符串比较)执行之前进行解压。语义感知式压缩技术的一个实例是行程长度编码(RLE)。
RLE是一种数据压缩的形式,其中将数据行程(runs)(也就是,相同的数据值出现于许多连续的数据元素中的序列)存储为单个数据值和计数,而不是存储为原始行程的数据压缩的形式。这对于含有许多此类行程的数据最有用。例如,表的列可能含有下列序列的部门标识符:
A A A A A A B B B C C C C C C C C C D D D D D A A A A
将RLE数据压缩算法应用于上述序列可以得出以下输出:6A3B8C5D4A。该行程长度编码仅以10个字符来表示原始的26个字符。在RLE中,单个数据值在输入序列中的行程越长,压缩程度就越大。
返回至块340,表数据可以是行程长度编码的。因而,需要读入协处理器130内的表数据的数量以及协处理器130需要针对行程长度编码的表数据执行的比较次数可以大大小于表数据不是行程长度编码的情形。考虑上述实例,代替执行26次比较(即,26个字符中的每个字符一次),协处理器130将仅需执行5次比较。
针对行程长度编码的数据来执行扫描操作的结果自身可以是行程长度编码的,该结果可以最终由查询执行引擎110来处理。考虑上述实例,确定特定表的行是否包含部门标识符“A”的结果可以是6Y16N4Y,其中“Y”指示确定的肯定结果,而“N”指示确定的否定结果。
作为选择,针对行程长度编码的数据来执行扫描操作的结果可以不是行程长度编码的。而是,结果可以被“解压”。考虑上述实例,确定特定表的行是否包含部门标识符“A”的结果可以是YYYYYYNNNNNNNNNNNNNNNNYYYY。在该实施例中,尽管在扫描操作期间针对字符“C”来执行单个比较,但是协处理器130对于该行程长度编码的数据元素生成了8个否定指示(例如,“N”或“0”)。
查找操作
SQL查询经常需要交叉引用数据库中的多个表。处理这样的查询典型地包括交集操作。当前,交集操作由运行于通用微处理器上的软件执行,其中当被连接的表列的基小时,该软件使用向量查找(例如,布隆过滤器查找)。根据实施例,向量查找(或查找操作)以硬件来实现,这会比软件实现方式快得多。
因而,在实施例中,(块330的)一个或多个指令指示查找操作、存储有表数据的一个或多个地址,以及存储有查找向量或数组的一个或多个地址。存储有表数据(或查找向量)的一个或多个地址可以是两个地址(例如,起始地址和结束地址)或者具有偏移的单个地址。协处理器130促使查找向量和表数据被发送给协处理器130,并且对于表数据中的每个数据元素,在查找向量中执行数据元素的查找。换言之,协处理器130使用数据元素(或者数据元素的散列)来在查找向量中识别位置,并且在查找向量的该位置处检索数据。
要求查找操作的示例查询
可能要求查找操作的查询的一个实例是请求有关居住于“富裕”的邮政编码区(zip code)内的“贫困”人口的信息的查询。“贫困”人员可以被看作是每年收入低于$30,000的人,而“富裕”的邮政编码区可以被看作是其中中间薪酬超过$100,000的邮政编码区。在本例中,协处理器130要求来自至少两个数据对象的数据:查找向量和人员(Person)表。查找向量(例如,以单个位)指示邮政编码区是否“富裕”。查找向量可以被预先计算出(即,在接收到查询之前),或者可以响应于接收到查询而计算出。
人员表含有有关众多人员的信息,其中该表包含至少三列:一列为每个人的姓名,一列为每个人的薪酬,以及一列为每个人的邮政编码区。在一个方面中,指示邮政编码区是富裕还是贫困的数据是维度表,而含有有关每个人的信息的人员表是事实表。维度表典型地远小于事实表。在本例中,查找向量可以基于维度表来生成。与此相关地,事实表可以由多个数据对象(例如,表)表示:一个数据对象可以含有有关每个人的薪酬的信息,而另一个数据对象可以含有有关每个人的邮政编码区的信息。
查找向量
查找向量的一个实例是布隆过滤器,该过滤器是被用来检验元素是否为集合的成员的概率数据结构。虽然在使用布隆过滤器时可能误报,但是不会漏报。布隆过滤器与一个或多个散列函数关联,每个散列函数将元素映射到在布隆过滤器中的一个数组位置。
但是,查找向量不必是概率性的。例如,如果只有10,000个可能的邮政编码区,并且每个邮政编码区都与指示该邮政编码区是否为“富裕的”单个位关联,则查找向量的尺寸(例如,1.25KB)可以小到足以使整个查找向量装入协处理器130的存储器(例如,SRAM)。因此,为了减小其尺寸,概率查找向量并非是必要的。
图4是示出示例查找向量400的一部分的框图。在查找向量400中的每个位置与不同的邮政编码区关联。换言之,邮政编码区被用来索引到查找向量400中。在查找向量400中的每个位置含有单个位,指示相应的邮政编码区是“富裕”的邮政编码区(“1”)还是“贫困”的邮政编码区(“0”)。
如果查找向量不能够完全装入协处理器130的存储器,则(除了生成概率查找向量外)要么(a)查找向量可以被分开(或被划分),使得协处理器130每次为查找向量的每个部分读入表数据,要么(b)在有多个协处理器的实施例中,不同的协处理器可以一次读入表数据,但是仅针对它存储的查找向量的一部分。
在前一种情形中,如果协处理器130仅能够使例如查找向量的1/4部分装入其存储器,则协处理器130四次(即,协处理器130所读入的查找向量的每个部分各一次)读取指示人员的邮政编码区的表数据。如果人员的邮政编码区在表数据的任一次传递中都没有被识别出,则该人员的结果可以指示否定的判定。表数据的每次传递的结果可以是一个长的位数组,在人员表中指出的每个人用一个位。
在后一种情形中,四个不同的协处理器可以存储查找向量的不同的1/4部分,并且一次性读入指示人员的邮政编码区的表数据,并然后为反映于表数据中的每个邮政编码区执行对查找向量的查找。此外,来自每个协处理器的查找操作的结果可以是一个长的位数组,在人员表中指出的每个人用一个位。
生成扫描或查找操作的结果
在实施例中,协处理器130生成具体输出格式,作为执行反映于一个或多个指令中的一个或多个操作的结果。具体输出格式的一个实例是位向量,其中在该位向量中的每个位置要么指示真要么指示假。例如,如果“10”为目标值,并且比较是确定该目标值是否大于表中的数据值或数据元素,则比较的结果(a)在数据值大于10时为真,并且(b)在数据值小于或等于10时为假。
在向量中的每个位置对应于接收自输入(例如,表)数据的数据值或数据元素。例如,在上述查找操作的实例中,协处理器130生成反映居住于“富裕”的邮政编码区的“贫困”人员的位向量。为了生成该位向量,协处理器130从人员表的邮政编码列中读入数据,并且为在读入数据中指出的每个人且基于查找向量来确定该人是否居住于“富裕”的邮政编码区内。在位向量中的每个位指出在人员表中的不同人是否居住于“富裕”的邮政编码区内。协处理器130随后将该位向量传递给通用微处理器,该通用微处理器使用位向量来识别还被认为是“贫困”的人员。例如,对于居住于富裕的邮政编码区内的每个人(如位向量所示),通用微处理器查找人员表中的相应行,以确定该人是否是“贫困”的。
因为位向量是尺寸相对小的,所以由通用微处理器处理该位向量是相对较快的;比通用处理器直接处理输入数据快得多。而且,存储该位向量所需的高速缓冲存储器空间远小于存储输入数据(例如,一大列数据)所要求的高速缓冲存储器空间。
生成扫描或查找操作的结果
返回至过程300,在块350,协处理器130促使扫描操作(或查找操作)的结果将对查询执行引擎110可用。块350可以包括:协处理器130将操作的结果发送给在来自启动该操作的查询执行引擎110的一个或多个指令中指定的存储器。例如,查询执行引擎110生成乐CCB,并且在该CCB中指出:相应操作的结果将被发送给例如DRAM、共享的L3高速缓存或者具体微处理器(例如,运行查询执行引擎的微处理器或者与生成原始命令的微处理器不同的微处理器)的高速缓存。
块350还可以包括:协处理器130设定标记,该标记在被置位时指示操作已完成。该标记设定充当这样的信号:(1)管理程序120将新的请求插入协处理器130的命令队列中,以及(2)查询执行引擎110检索结果。
作为选择,协处理器130被编程为总是将操作的结果发送给可由查询执行引擎110访问的具体存储器组件(无论是RAM还是高速缓存)。
作为选择,代替使扫描操作的结果对查询执行引擎110可用,协处理器130将结果发送给另一个协处理器。如同前面所述的,计算机系统100可以包含多个协处理器。该多个协处理器可以串联连接。在两个协处理器之间的每个连接都可以包含FIFO缓冲区,使得与“消费”协处理器能够处理结果相比,“生产”协处理器可以更快地生成结果。最终,在“链”上的最后一个协处理器将结果发送给可由查询执行引擎110访问的指定目的地,比如在RAM或高速缓存内。
在块360,查询执行引擎110处理结果,并且执行一个或多个其它操作,以便生成原始查询的最终结果。在协处理器130执行扫描或查找操作时,运行查询执行引擎110的通用微处理器可以是空闲的,或者可以由查询执行引擎110或连同另一个进程一起来使用。例如,查询执行引擎110可以执行一个或多个其它操作,该一个或多个其它操作是查询所要求的或者按照任何方式不与该查询相关而是与另一个查询相关的。
作为扫描操作的一个实例,查询可以请求在具体的日期范围内发起的采购订单的ID和价格。在本例中,协处理器130执行包括读入多个采购订单的日期信息的扫描操作,其中日期信息反映于采购订单表中。扫描操作的结果可以是一系列位(例如,位向量),这些位中的每一个都反映出相应的采购订单是否是在指定的日期范围内发起的。协处理器130将结果发送给可由查询执行引擎110访问的存储器,并且可以通过对查询执行引擎110周期性检查的标记置位来通知查询执行引擎110扫描操作的完成。然后,查询执行引擎110使用这些位在采购订单表中识别出与在指定的日期范围内发起的那些采购订单对应的条目。然后,查询执行引擎110在所识别的条目中识别出ID和价格,并且返回(例如,显示)该信息作为查询的结果。查询还可以指定:查询的结果将要按照价格降序的方式来排序。因而,查询执行引擎110在接收到由协处理器110执行的扫描操作的结果之后执行一个或多个操作。
考虑其中查询将要识别出居住于“富裕”的邮政编码区内的“贫困”人员的查找操作实例,除了指导协处理器130来执行查找操作之外,查询执行引擎110还可以让所指导的协处理器130(或另一个协处理器)对人员表执行扫描操作,以识别出年薪低于$30,000的所有人。扫描操作的结果(像查找操作的结果一样)可以是一系列位(例如,位向量)的形式,其中每个位对应于在人员表中指出的不同的人。在一种实施例中,查询执行引擎110对作为输入的扫描操作的结果和查找操作的结果执行与(AND)操作。作为选择,协处理器130(或另一个协处理器)可以被编程用于执行与(AND)操作。在该实施例中,查询执行引擎110可以创建另一个CCB,在该CCB中,操作数包括查找操作的结果的地址(例如,虚地址)以及扫描操作的结果的地址。
如前所述,查找向量的尺寸可以不是一次完全装入协处理器130的存储器。在前面描述的两种情形之一中,查找向量被划分成四个“微”向量,并且协处理器130单独对每个微向量进行操作,从而要求协处理器130为每个人(从人员表中)读入邮政编码区数据四次。由执行该查找操作的协处理器130产生的总的结果可以包含四个单独的位数组,它们最终在一起求或(OR),以得到单个位数组(同样,在人员表中指出的每个人用一个位)。该或(OR)步骤(该步骤可以包括三次或(OR)操作)可以由查询执行引擎110执行。作为选择,协处理器130可以被编程用于执行或(OR)操作。
在上述两种情形的另一种情形中,查询执行引擎110促使四个不同的协处理器使用查找向量的不同部分来执行查找操作。然后,来自一个协处理器的结果与来自其它协处理器中的每个协处理器的结果求或(OR),以得出单个位数组(在人员表中指出的每个人用一个位)。同样,该或(OR)步骤可以由查询执行引擎110或者由协处理器之一执行。
一旦查询执行引擎110确定了哪些人居住于“富裕的”邮政编码区,查询执行引擎110就使用该信息来确定也被认为是“贫困的”那些人,如同上文所指出的。
虽然以上的描述指的是执行扫描操作或查找操作,但是实施例可以包括:一个协处理器为特定的查询执行扫描操作,而另一个协处理器为特定的查询执行查找操作。因而,多个协处理器可以同时为同一查询来执行,但是执行不同的操作。
本文所描述的实施例的优点在于:通用微处理器可以将数据密集型的操作卸下给与微处理器分开的一个或多个协处理器,以便为其它任务空出微处理器供使用。因而,协处理器可以相对促使协处理器执行操作的查询处理软件异步地进行操作。另外,与通用微处理器运行查询处理软件相比,该一个或多个协处理器可以更加快速地执行那些操作。
硬件概况
根据一种实施例,本文所描述的技术由一个或多个专用计算设备来实现。专用计算设备可以被硬连线以执行这些技术,或者可以包含被永久编程来执行这些技术的、比如一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)的数字电子设备,或者可以包含被编程来依照在固件、存储器、其它存储器或者它们的组合中的程序指令而执行这些技术的一个或多个通用硬件处理器。这样的专用计算设备还可以将定制的硬连线逻辑、ASIC或FPGA与定制编程结合,以完成这些技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、网络设备,或者用于合并硬连线和/或程序逻辑来实现这些技术的任何其它设备。
例如,图5是示出本发明的实施例可以实施于其上的计算机系统500的框图。计算机系统500包含总线502或者用于传输信息的其它通信机构,以及与总线502耦接用于处理信息的硬件处理器504。硬件处理器504可以是例如通用微处理器。
计算机系统500还包含与总线502耦接用于存储信息以及待由处理器504执行的指令的主存储器506,例如,随机存取存储器(RAM)或者其它动态存储设备。主存储器506在待由处理器504执行的指令的执行期间还可以用于存储临时变量或者其它中间信息。这样的指令,在存储于可由处理器504访问的非瞬时存储介质时,使计算机系统500成为被定制用于执行在指令中指定的操作的专用机器。
计算机系统500还包含与总线502耦接用于为处理器504存储静态信息和指令的只读存储器(ROM)508或其它静态存储设备。存储设备510,例如,磁盘、光盘或固态硬盘驱动器,被提供并与总线502耦接,用于存储信息和指令。
计算机系统500可以经由总线502耦接至用于给计算机用户显示信息的显示器512,例如,阴极射线管(CRT)。包含字母数字键和其它键的输入设备514与总线502耦接,用于将信息和命令选择传输给处理器504。另一个类型的用户输入设备是用于将方向信息和命令选择传输给处理器504的并且用于在显示器512上控制光标运动的光标控制516,例如,鼠标、轨迹球或光标方向键。该输入设备典型地在两个轴(第一轴(例如,x)和第二轴(例如,y))上具有两个自由度,这两个自由度允许件指定平面内的位置。
计算机系统500可以使用下列设备来实现本文所描述的技术:定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或结合计算机系统来促使计算机系统500或对其编程使其成为专用机器的程序逻辑。根据一种实施例,此处的技术由计算机系统500响应于处理器504执行包含于主存储器506内的一个或多个指令的一个或多个序列而执行。这样的指令可以从比如存储设备510的另一个存储介质读入主存储器506。包含于主存储器506内的指令序列的执行促使处理器504执行此处所描述的过程步骤。在可替换的实施例中,硬连线电路可以代替软件指令或者与其结合而被使用。
此处所使用的术语“存储介质”指的是存储促使机器按照具体的方式来操作的数据和/或指令的任何非瞬时介质。这样的存储介质可以包含非易失性的介质和/或易失性的介质。非易失性的介质包括光盘、磁盘或固态硬盘驱动器,比如存储设备510。易失性的介质包括动态存储器,比如主存储器506。存储介质的常见形式包括例如软盘、软磁盘、硬盘、固态硬盘驱动器、磁带,或者任何其它磁性数据存储介质、CD-ROM、任何其它光学的数据存储介质、任何具有孔图形的物理介质、RAM、PROM,以及EPROM、FLASH-EPROM、NVRAM、任何其它存储芯片或存储盒。
存储介质不同于传输介质,但可以与传输介质结合起来使用。传输介质参与在存储介质之间传输信息。例如,传输介质包括同轴电缆、铜导线和光纤,包括包含总线502的导线。传输介质还能够采取声波或光波的形式,例如,在无线电波和红外数据通信期间生成的那些波。
各种形式的介质都会参与将一个或多个指令的一个或多个序列输送给处理器504以用于执行。例如,指令最初可以载存于远程计算机的磁盘或固态硬盘驱动器上。远程计算机能够将指令加载到其动态存储器内,并且使用调制解调器经由电话线来发送该指令。计算机系统500本地的调制解调器能够接收电话线上的数据,并且使用红外发射器将数据转换为红外信号。红外检测器能够接收红外信号所携带的数据,并且适当的电路能够将数据放置于总线502上。总线502将数据输送给主存储器506,处理器504从该主存储器506中检索并执行指令。由主存储器506接收的指令可以要么在由处理器504执行之前,要么在其之后可选地存储于存储设备510上。
计算机系统500还包含与总线502耦接的通信接口518。通信接口518提供耦接至与本地网络522连接的网络链路520的双向数据通信。例如,通信接口518可以是综合业务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器,或者用于提供到相应类型的电话线的数据通信连接的调制解调器。作为另一个实例,通信接口518可以是局域网(LAN)网卡,用于提供数据通信连接到可兼容的LAN。还可以实现无线链路。在任何这样的实施方式中,通信接口518发送及接收用于承载表示各种类型的信息的数字数据流的电信号、电磁信号或光信号。
网络链路520典型地通过一个或多个网络来提供到其它数据设备的数据通信。例如,网络链路520可以通过本地网络522提供到主机计算机524的或者到由网络服务提供商(ISP)526运营的数据设备的连接。ISP 526进而通过全球分组数据通信网络(现在常称为“因特网(Internet)”528)来提供数据通信服务。本地网络522和因特网528两者都使用承载数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路520上的且经过通信接口518的信号是传输介质的实例形式,这些信号将数字数据送入和送出计算机系统500。
计算机系统500能够通过网络、网络链路520和通信接口518来发送消息和接收数据,包括程序代码。在因特网的实例中,服务器530可以通过因特网528、ISP 526、本地网络522和通信接口518来发送应用程序的请求代码。
所接收的代码可以在其被接收到时由处理器504执行,和/或被存储于存储设备510或其它非易失性的存储器内,待以后执行。
在前面的详细说明中,本发明的实施例已经参考众多具体的细节进行了描述,这些细节在不同的实施方式之间可以是不同的。因此,本说明书和附图应当被看作是说明性的,而不是限制性的。本发明的范围的独有指标以及本申请人想要其成为本发明的范围的内容,是由本申请按照此类权利要求书发布的具体形式来发布的权利要求书的字面及等效范围,包括任何后续校正。

Claims (25)

1.一种机器实现的用于处理查询的方法,包括:
由微处理器确定所述查询的执行涉及扫描操作;
响应于确定所述查询的执行涉及扫描操作,由所述微处理器生成扫描操作命令,所述扫描操作命令包含用于识别待由协处理器读取的输入数据的地址数据以及用于与所述输入数据进行比较的一个或多个值来作为所述扫描操作命令的参数;
其中,所述微处理器与所述协处理器是分开的;
由所述微处理器促使所述扫描操作命令被存储于存储器内;
由所述协处理器通过以下操作来处理所述扫描操作命令:
从所述存储器中读取所述扫描操作命令;
促使从由所述地址数据指示的位置处读取所述输入数据;
在所述输入数据与所述一个或多个值之间执行比较;
基于所述比较来生成结果数据;
促使所述结果数据被存储。
2.根据权利要求1所述的方法,其中:
所述扫描操作命令还包含指示要执行的操作的类型的操作类型数据;
进一步通过首先识别所述操作类型数据以确定操作的类型来处理所述扫描操作命令。
3.根据权利要求2所述的方法,还包括:
使用所述操作类型数据来确定用来解释所述输入数据的逻辑;
将所述输入数据由第一数据类型转换为与所述第一数据类型不同的第二数据类型。
4.根据权利要求1所述的方法,其中:
所述输入数据包含值数据和计数数据;
在所述值数据中的输入值对应于数据元素,所述数据元素的数量由在所述计数数据中的计数值指示;
将所述输入数据与所述一个或多个值进行比较包括将所述输入值与所述一个或多个值进行比较;
生成所述结果数据包括生成指示所述输入值是否满足所述一个或多个值的结果指示;
生成所述结果数据是在没有将所述输入值与所述一个或多个值进行由所述计数值指示的次数的比较的情况下执行的。
5.根据权利要求1所述的方法,其中所述扫描操作命令还包含用于指示所述结果数据将要存储于何处的目的地数据。
6.根据权利要求1所述的方法,其中促使所述结果数据被存储包括促使所述结果数据被存储于所述微处理器的高速缓存内。
7.根据权利要求1所述的方法,其中促使所述结果数据被存储还包括促使指示所述扫描操作命令已被执行的完成状态被存储。
8.根据权利要求1所述的方法,其中:
确定所述查询的执行涉及包括所述扫描操作和一个或多个其它操作的多个操作;
所述方法还包括:
从存储器中检索所述结果数据;
在从所述存储器中检索了所述结果数据之后,处理要求将所述结果数据作为所述一个或多个其它操作的输入的所述一个或多个其它操作。
9.根据权利要求1所述的方法,其中:
所述协处理器是串联连接的多个协处理器中的第一协处理器;
促使所述结果数据被存储包括促使所述结果数据被发送给所述多个协处理器中的第二协处理器的缓冲区;
所述方法还包括:
当所述第一协处理器正在执行所述查询的一部分的同时,由所述第二协处理器从所述缓冲区读取所述结果数据,并且
由所述第二协处理器基于所述结果数据来生成第二结果数据。
10.根据权利要求1所述的方法,其中:
生成所述扫描操作命令包括生成包含所述扫描操作命令的多个扫描操作命令;
促使所述扫描操作命令被存储于存储器内包括:为所述多个扫描操作命令的每个扫描操作命令促使所述每个扫描操作命令被存储于所述存储器内;
多个协处理器的每个协处理器选择所述多个扫描操作命令中的扫描操作命令。
11.根据权利要求1所述的方法,其中:
包含于所述扫描操作命令中的所述地址数据包含一个或多个虚地址;
所述方法还包括促使所述一个或多个虚地址被所述协处理器用来读取所述输入数据的一个或多个物理地址所替代。
12.根据权利要求1所述的方法,还包括确定是否满足一个或多个准则,其中促使所述扫描操作命令被发送给所述协处理器仅在满足所述一个或多个准则的情况下执行。
13.根据权利要求12所述的方法,其中所述一个或多个准则基于需要由所述协处理器读入以执行所述扫描操作的数据量。
14.根据权利要求1所述的方法,其中:
所述一个或多个值包含多个数据元素;
将所述输入数据与所述一个或多个值进行比较包括将所述输入数据与所述多个数据元素同时进行比较。
15.根据权利要求1所述的方法,其中基于所述比较来生成所述结果数据包括生成位向量,其中在所述位向量中的每个位指示比较结果是真还是假。
16.一种被配置用于执行以下步骤的协处理器:
读取扫描操作命令,所述扫描操作命令由与所述协处理器分开并且运行与查询处理相关的指令的微处理器响应于所述微处理器确定查询包括扫描操作而生成,并且所述扫描操作命令包含用于识别待由所述协处理器读取的输入数据的地址数据以及用于与所述输入数据进行比较的一个或多个值来作为所述扫描操作命令的参数;
促使从由所述地址数据指示的位置处读取所述输入数据;
在所述输入数据与所述一个或多个值之间执行比较;
基于所述比较来生成结果数据;
促使将所述结果数据通知所述微处理器。
17.根据权利要求16所述的协处理器,其中:
所述扫描操作命令还包含指示要执行的操作的类型的操作类型数据;
所述协处理器还被配置执行以下步骤:识别所述操作类型数据以确定操作的类型。
18.根据权利要求17所述的协处理器,其中所述协处理器还被配置用于执行以下步骤:
使用所述操作类型数据来确定用来解释所述输入数据的逻辑;
将所述输入数据由第一数据类型转换为与所述第一数据类型不同的第二数据类型。
19.根据权利要求16所述的协处理器,其中所述扫描操作命令还包含指示所述结果数据将要存储于何处的目的地数据。
20.根据权利要求16所述的协处理器,其中促使所述结果数据被存储包括促使所述结果数据被存储于所述微处理器的高速缓存内。
21.根据权利要求16所述的协处理器,其中:
所述输入数据包括值数据和计数数据;
在所述值数据中的输入值对应于数据元素,所述数据元素的数量由在所述计数数据中的计数值指示;
将所述输入数据与所述一个或多个值进行比较包括将所述输入值与所述一个或多个值进行比较;
生成所述结果数据包括生成指示所述输入值是否满足所述一个或多个值的结果指示;
生成所述结果数据在没有将所述输入值与所述一个或多个值进行由所述计数值指示的次数的比较的情况下执行。
22.根据权利要求16所述的协处理器,其中:
所述协处理器是串联连接的多个协处理器中的第一协处理器;
促使所述结果数据被存储包括促使所述结果数据被发送给所述多个协处理器中的第二协处理器的缓冲区。
23.根据权利要求16所述的协处理器,其中:
包含于所述扫描操作命令中的所述地址数据包含一个或多个虚地址;
所述协处理器还被配置为执行以下步骤:促使所述一个或多个虚地址被所述协处理器用来读取所述输入数据的一个或多个物理地址所替代。
24.根据权利要求16所述的协处理器,其中:
所述一个或多个值包含多个数据元素;
将所述输入数据与所述一个或多个值进行比较包括将所述输入数据与所述多个数据元素同时进行比较。
25.根据权利要求16所述的协处理器,其中基于所述比较来生成所述结果数据包括生成位向量,其中在所述位向量中的每个位指示比较结果是真还是假。
CN201380049301.7A 2012-10-02 2013-06-14 用于表扫描加速的硬件 Active CN104662534B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810434459.0A CN108664596B (zh) 2012-10-02 2013-06-14 用于表扫描加速的硬件

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261709142P 2012-10-02 2012-10-02
US61/709,142 2012-10-02
US13/778,009 2013-02-26
US13/778,009 US9063974B2 (en) 2012-10-02 2013-02-26 Hardware for table scan acceleration
PCT/US2013/045873 WO2014055137A1 (en) 2012-10-02 2013-06-14 Hardware for table scan acceleration

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201810434459.0A Division CN108664596B (zh) 2012-10-02 2013-06-14 用于表扫描加速的硬件

Publications (2)

Publication Number Publication Date
CN104662534A CN104662534A (zh) 2015-05-27
CN104662534B true CN104662534B (zh) 2018-05-25

Family

ID=50386190

Family Applications (7)

Application Number Title Priority Date Filing Date
CN201380049301.7A Active CN104662534B (zh) 2012-10-02 2013-06-14 用于表扫描加速的硬件
CN201810434459.0A Active CN108664596B (zh) 2012-10-02 2013-06-14 用于表扫描加速的硬件
CN201380049816.7A Active CN104662538B (zh) 2012-10-02 2013-06-14 半连接加速
CN201380051875.8A Active CN104704491B (zh) 2012-10-02 2013-06-27 用于集群内通信的硬件消息队列
CN201380057680.4A Active CN104769591B (zh) 2012-10-02 2013-09-30 分布式节点之间的存储器共享
CN201380051672.9A Active CN104756091B (zh) 2012-10-02 2013-10-01 基于远程密钥的存储器缓冲区访问控制机制
CN201380057937.6A Active CN104769561B (zh) 2012-10-02 2013-10-01 能够实现不同物理域地址空间的节点间的聚类的存储总线协议

Family Applications After (6)

Application Number Title Priority Date Filing Date
CN201810434459.0A Active CN108664596B (zh) 2012-10-02 2013-06-14 用于表扫描加速的硬件
CN201380049816.7A Active CN104662538B (zh) 2012-10-02 2013-06-14 半连接加速
CN201380051875.8A Active CN104704491B (zh) 2012-10-02 2013-06-27 用于集群内通信的硬件消息队列
CN201380057680.4A Active CN104769591B (zh) 2012-10-02 2013-09-30 分布式节点之间的存储器共享
CN201380051672.9A Active CN104756091B (zh) 2012-10-02 2013-10-01 基于远程密钥的存储器缓冲区访问控制机制
CN201380057937.6A Active CN104769561B (zh) 2012-10-02 2013-10-01 能够实现不同物理域地址空间的节点间的聚类的存储总线协议

Country Status (6)

Country Link
US (10) US9292569B2 (zh)
EP (6) EP2904513B1 (zh)
JP (1) JP6320393B2 (zh)
CN (7) CN104662534B (zh)
ES (1) ES2880268T3 (zh)
WO (6) WO2014055138A1 (zh)

Families Citing this family (131)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
EP2652590A1 (en) * 2011-06-30 2013-10-23 Hitachi, Ltd. Computer system and access restriction method
US9792117B2 (en) 2011-12-08 2017-10-17 Oracle International Corporation Loading values from a value vector into subregisters of a single instruction multiple data register
US10534606B2 (en) 2011-12-08 2020-01-14 Oracle International Corporation Run-length encoding decompression
EP2788902B1 (en) 2011-12-08 2019-04-17 Oracle International Corporation Techniques for more efficient usage of memory-to-cpu bandwidth
US9697174B2 (en) 2011-12-08 2017-07-04 Oracle International Corporation Efficient hardware instructions for processing bit vectors for single instruction multiple data processors
US9342314B2 (en) 2011-12-08 2016-05-17 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
US9087095B2 (en) * 2012-06-21 2015-07-21 International Business Machines Corporation Processing columns in a database accelerator while preserving row-based architecture
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9292569B2 (en) 2012-10-02 2016-03-22 Oracle International Corporation Semi-join acceleration
US10102028B2 (en) 2013-03-12 2018-10-16 Sas Institute Inc. Delivery acknowledgment in event stream processing
US9679084B2 (en) 2013-03-14 2017-06-13 Oracle International Corporation Memory sharing across distributed nodes
BR112015018946A2 (pt) * 2013-03-15 2017-07-18 Intel Corp desempenho de partida de coprocessador de segurança
US10108539B2 (en) * 2013-06-13 2018-10-23 International Business Machines Corporation Allocation of distributed data structures
US20160210237A1 (en) * 2013-07-30 2016-07-21 Nec Corporation Storage device, data access method, and program recording medium
US9740718B2 (en) 2013-09-20 2017-08-22 Oracle International Corporation Aggregating dimensional data using dense containers
US9836519B2 (en) 2013-09-20 2017-12-05 Oracle International Corporation Densely grouping dimensional data
US9990398B2 (en) * 2013-09-20 2018-06-05 Oracle International Corporation Inferring dimensional metadata from content of a query
US9378232B2 (en) 2013-09-21 2016-06-28 Oracle International Corporation Framework for numa affinitized parallel query on in-memory objects within the RDBMS
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
WO2015065449A1 (en) * 2013-10-31 2015-05-07 Hewlett-Packard Development Company, L.P. Cache controller for non-volatile memory
US20150161678A1 (en) * 2013-12-05 2015-06-11 Turn Inc. Dynamic ordering of online advertisement software steps
US9313029B2 (en) * 2013-12-15 2016-04-12 Cavium, Inc. Virtualized network interface for remote direct memory access over converged ethernet
US9306916B2 (en) * 2013-12-25 2016-04-05 Cavium, Inc. System and a method for a remote direct memory access over converged ethernet
US9898414B2 (en) 2014-03-28 2018-02-20 Oracle International Corporation Memory corruption detection support for distributed shared memory applications
DE102014207476A1 (de) * 2014-04-17 2015-10-22 Robert Bosch Gmbh Verfahren zur Auswahl einer von mehreren Warteschlangen
US9715345B2 (en) * 2014-04-25 2017-07-25 Micron Technology, Inc. Apparatuses and methods for memory management
US10838893B2 (en) * 2014-05-30 2020-11-17 Apple Inc. Methods for mitigating system interrupts for an electronic device
US9122651B1 (en) 2014-06-06 2015-09-01 Sas Institute Inc. Computer system to support failover in an event stream processing system
US9356986B2 (en) * 2014-08-08 2016-05-31 Sas Institute Inc. Distributed stream processing
WO2016064397A1 (en) * 2014-10-23 2016-04-28 Hewlett Packard Enterprise Development Lp Admissions control of a device
WO2016068941A1 (en) 2014-10-30 2016-05-06 Hewlett Packard Enterprise Development Lp Secure transactions in a memory fabric
WO2016068942A1 (en) 2014-10-30 2016-05-06 Hewlett Packard Enterprise Development Lp Encryption for transactions in a memory fabric
US9678812B2 (en) 2014-12-22 2017-06-13 International Business Machines Corporation Addressing for inter-thread push communication
US9766890B2 (en) * 2014-12-23 2017-09-19 International Business Machines Corporation Non-serialized push instruction for pushing a message payload from a sending thread to a receiving thread
US10255336B2 (en) 2015-05-07 2019-04-09 Datometry, Inc. Method and system for transparent interoperability between applications and data management systems
US9749319B2 (en) 2015-05-20 2017-08-29 Google Inc. Address validation using signatures
US11449452B2 (en) 2015-05-21 2022-09-20 Goldman Sachs & Co. LLC General-purpose parallel computing architecture
ES2929626T3 (es) * 2015-05-21 2022-11-30 Goldman Sachs & Co Llc Arquitectura de computación paralela de propósito general
US10025822B2 (en) 2015-05-29 2018-07-17 Oracle International Corporation Optimizing execution plans for in-memory-aware joins
US10594779B2 (en) 2015-08-27 2020-03-17 Datometry, Inc. Method and system for workload management for data management systems
US9990308B2 (en) 2015-08-31 2018-06-05 Oracle International Corporation Selective data compression for in-memory databases
JP6515771B2 (ja) * 2015-10-07 2019-05-22 富士通コネクテッドテクノロジーズ株式会社 並列処理装置及び並列処理方法
US9823871B2 (en) 2015-10-09 2017-11-21 Oracle International Corporation Performance of coprocessor assisted memset() through heterogeneous computing
US10783142B2 (en) 2015-10-23 2020-09-22 Oracle International Corporation Efficient data retrieval in staged use of in-memory cursor duration temporary tables
US10642831B2 (en) 2015-10-23 2020-05-05 Oracle International Corporation Static data caching for queries with a clause that requires multiple iterations to execute
US10678792B2 (en) 2015-10-23 2020-06-09 Oracle International Corporation Parallel execution of queries with a recursive clause
CN105426271B (zh) * 2015-12-22 2018-09-21 华为技术有限公司 对分布式存储系统的锁管理的方法和装置
US10146681B2 (en) 2015-12-24 2018-12-04 Intel Corporation Non-uniform memory access latency adaptations to achieve bandwidth quality of service
CN105677812A (zh) * 2015-12-31 2016-06-15 华为技术有限公司 一种数据查询方法及数据查询装置
US10061714B2 (en) 2016-03-18 2018-08-28 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors
US10402425B2 (en) 2016-03-18 2019-09-03 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors
US10061832B2 (en) 2016-11-28 2018-08-28 Oracle International Corporation Database tuple-encoding-aware data partitioning in a direct memory access engine
US10055358B2 (en) 2016-03-18 2018-08-21 Oracle International Corporation Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors
US10599488B2 (en) 2016-06-29 2020-03-24 Oracle International Corporation Multi-purpose events for notification and sequence control in multi-core processor systems
US10853125B2 (en) * 2016-08-19 2020-12-01 Oracle International Corporation Resource efficient acceleration of datastream analytics processing using an analytics accelerator
CN106354480B (zh) * 2016-08-24 2019-01-29 长沙中部芯空微电子研究所有限公司 一种mpp型异构高速mcu系统
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
US10558659B2 (en) 2016-09-16 2020-02-11 Oracle International Corporation Techniques for dictionary based join and aggregation
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10783102B2 (en) 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10176114B2 (en) 2016-11-28 2019-01-08 Oracle International Corporation Row identification number generation in database direct memory access engine
US10459859B2 (en) 2016-11-28 2019-10-29 Oracle International Corporation Multicast copy ring for database direct memory access filtering engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10606487B2 (en) * 2017-03-17 2020-03-31 International Business Machines Corporation Partitioned memory with locally aggregated copy pools
US20180373760A1 (en) * 2017-06-23 2018-12-27 Xilinx, Inc. Parallel compute offload to database accelerator
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
CN107835203B (zh) * 2017-08-09 2020-07-10 平安壹钱包电子商务有限公司 消息分组投递的方法、装置、存储介质及终端
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086876B2 (en) 2017-09-29 2021-08-10 Oracle International Corporation Storing derived summaries on persistent memory of a storage device
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10445098B2 (en) * 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10664396B2 (en) * 2017-10-04 2020-05-26 Intel Corporation Systems, methods and apparatus for fabric delta merge operations to enhance NVMeoF stream writes
CN107766526B (zh) * 2017-10-26 2020-04-28 中国人民银行清算总中心 数据库访问方法、装置及系统
CN107886692B (zh) * 2017-10-30 2020-08-25 皖西学院 一种生物工程用传感器LoRa无线网络通讯系统
US10452547B2 (en) 2017-12-29 2019-10-22 Oracle International Corporation Fault-tolerant cache coherence over a lossy network
US10467139B2 (en) 2017-12-29 2019-11-05 Oracle International Corporation Fault-tolerant cache coherence over a lossy network
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
CN110110004B (zh) * 2018-01-30 2023-05-30 腾讯科技(深圳)有限公司 一种数据操作方法、装置和存储介质
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10649777B2 (en) * 2018-05-14 2020-05-12 International Business Machines Corporation Hardware-based data prefetching based on loop-unrolled instructions
CN108776934B (zh) * 2018-05-15 2022-06-07 中国平安人寿保险股份有限公司 分布式数据计算方法、装置、计算机设备及可读存储介质
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
EP3846026A4 (en) 2018-09-21 2021-11-03 Huawei Technologies Co., Ltd. DATA EXTRACTION PROCESS AND DEVICE
CN111399905B (zh) * 2019-01-02 2022-08-16 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
JP7146611B2 (ja) * 2018-12-18 2022-10-04 株式会社日立製作所 カラムストアデータベースシステム及びデータベース処理高速化方法
US11294869B1 (en) 2018-12-19 2022-04-05 Datometry, Inc. Expressing complexity of migration to a database candidate
US11204898B1 (en) 2018-12-19 2021-12-21 Datometry, Inc. Reconstructing database sessions from a query log
US11403282B1 (en) 2018-12-20 2022-08-02 Datometry, Inc. Unbatching database queries for migration to a different database
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
WO2020214757A1 (en) * 2019-04-17 2020-10-22 John Rankin Virtual memory pool within a network which is accessible from multiple platforms
CN110113395B (zh) * 2019-04-19 2021-11-09 新华三云计算技术有限公司 共享文件系统维护方法及装置
US11372773B2 (en) 2019-05-28 2022-06-28 Rankin Labs, Llc Supporting a virtual memory area at a remote computing machine
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US20220245150A1 (en) * 2019-07-31 2022-08-04 Sindice Limited T/A Siren Semantic caching of semi-join operators in shared-nothing and log-structured databases
US11222018B2 (en) 2019-09-09 2022-01-11 Oracle International Corporation Cache conscious techniques for generation of quasi-dense grouping codes of compressed columnar data in relational database systems
US20210109974A1 (en) * 2019-10-13 2021-04-15 Thoughtspot, Inc. Query Execution On Compressed In-Memory Data
CN111061760B (zh) * 2019-10-30 2020-12-15 中科驭数(北京)科技有限公司 关系型数据库管理系统中的窗口聚合方法、查询方法及装置
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
US11755355B2 (en) 2020-11-25 2023-09-12 Nxp Usa, Inc. Systems and methods for assigning domain identifiers to remote peripheral devices using a hypervisor
US20220166762A1 (en) * 2020-11-25 2022-05-26 Microsoft Technology Licensing, Llc Integrated circuit for obtaining enhanced privileges for a network-based resource and performing actions in accordance therewith
US11741073B2 (en) 2021-06-01 2023-08-29 Alibaba Singapore Holding Private Limited Granularly timestamped concurrency control for key-value store
US11829291B2 (en) 2021-06-01 2023-11-28 Alibaba Singapore Holding Private Limited Garbage collection of tree structure with page mappings
US11755427B2 (en) 2021-06-01 2023-09-12 Alibaba Singapore Holding Private Limited Fast recovery and replication of key-value stores
US20220382760A1 (en) * 2021-06-01 2022-12-01 Alibaba Singapore Holding Private Limited High-performance key-value store
CN113342480B (zh) * 2021-06-23 2022-02-22 海光信息技术股份有限公司 一种事务处理系统、事务处理方法及主机系统
CN113420033B (zh) * 2021-08-17 2021-12-07 北京奥星贝斯科技有限公司 分布式数据库的表数据查询方法、表数据查询装置及系统
US20230205935A1 (en) * 2021-12-28 2023-06-29 Ati Technologies Ulc Software assisted acceleration in cryptographic queue processing
US11927634B2 (en) 2022-04-01 2024-03-12 Samsung Electronics Co., Ltd Systems and methods for database scan acceleration

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974408A (en) * 1997-02-28 1999-10-26 Oracle Corporation Method and apparatus for executing a query that specifies a sort plus operation
CN101944077A (zh) * 2010-09-02 2011-01-12 东莞市泰斗微电子科技有限公司 一种主处理器和协处理器之间的通讯接口及其控制方法

Family Cites Families (136)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE34052E (en) 1984-05-31 1992-09-01 International Business Machines Corporation Data processing system with CPU register to register data transfers overlapped with data transfer to and from main storage
US4817140A (en) 1986-11-05 1989-03-28 International Business Machines Corp. Software protection system using a single-key cryptosystem, a hardware-based authorization system and a secure coprocessor
US5133053A (en) 1987-02-13 1992-07-21 International Business Machines Corporation Interprocess communication queue location transparency
US5604899A (en) 1990-05-21 1997-02-18 Financial Systems Technology Pty. Ltd. Data relationships processor with unlimited expansion capability
US5423010A (en) 1992-01-24 1995-06-06 C-Cube Microsystems Structure and method for packing and unpacking a stream of N-bit data to and from a stream of N-bit data words
US5483624A (en) * 1992-03-27 1996-01-09 Monarch Marking Systems, Inc. Programmable hand held labeler
JPH0619785A (ja) * 1992-03-27 1994-01-28 Matsushita Electric Ind Co Ltd 分散共有仮想メモリーとその構成方法
EP0629960B1 (en) 1993-06-17 2000-05-24 Sun Microsystems, Inc. Extendible file system
US5581705A (en) * 1993-12-13 1996-12-03 Cray Research, Inc. Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system
US5564056A (en) * 1994-03-01 1996-10-08 Intel Corporation Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming
DE19515020A1 (de) * 1994-07-01 1996-01-04 Hewlett Packard Co Verfahren und Vorrichtung zum Optimieren von Abfragen mit Gruppieren-nach-Operatoren
JP3518034B2 (ja) 1995-03-30 2004-04-12 三菱電機株式会社 ソート方法並びにソート処理装置並びにデータ処理装置
US5684977A (en) 1995-03-31 1997-11-04 Sun Microsystems, Inc. Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system
CA2146171C (en) * 1995-04-03 2000-01-11 Bernhard Schiefer Method for estimating cardinalities for query processing in a relational database management system
KR0175499B1 (ko) 1996-09-11 1999-04-01 양승택 다중태그 구조의 계층 상호연결망에서의 브로드캐스트 전송방법
JPH10154160A (ja) * 1996-09-25 1998-06-09 Sharp Corp 並列データ検索処理装置
US6148377A (en) 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
JPH10232788A (ja) * 1996-12-17 1998-09-02 Fujitsu Ltd 信号処理装置及びソフトウェア
US6151688A (en) 1997-02-21 2000-11-21 Novell, Inc. Resource management in a clustered computer system
US6047081A (en) 1997-10-24 2000-04-04 Imation Corp. Image processing software system having configurable communication pipelines
US6292705B1 (en) 1998-09-29 2001-09-18 Conexant Systems, Inc. Method and apparatus for address transfers, system serialization, and centralized cache and transaction control, in a symetric multiprocessor system
US20010049780A1 (en) 1998-03-27 2001-12-06 Shreekant Thakkar Method and apparatus for performing integer operations in response to a result of a floating point operation
US6230240B1 (en) 1998-06-23 2001-05-08 Hewlett-Packard Company Storage management system and auto-RAID transaction manager for coherent memory map across hot plug interface
WO2000008552A1 (en) 1998-08-06 2000-02-17 Koninklijke Philips Electronics N.V. Data processor and method of processing data
JP3583657B2 (ja) * 1998-09-30 2004-11-04 株式会社東芝 中継装置及び通信装置
US6633891B1 (en) 1998-11-24 2003-10-14 Oracle International Corporation Managing replacement of data in a cache on a node based on caches of other nodes
US6434545B1 (en) * 1998-12-16 2002-08-13 Microsoft Corporation Graphical query analyzer
JP2000261674A (ja) 1999-03-09 2000-09-22 Fujitsu Ltd 画像伸長装置
US6295571B1 (en) 1999-03-19 2001-09-25 Times N Systems, Inc. Shared memory apparatus and method for multiprocessor systems
US6826522B1 (en) 1999-06-21 2004-11-30 Pts Corporation Methods and apparatus for improved efficiency in pipeline simulation and emulation
US6349310B1 (en) 1999-07-06 2002-02-19 Compaq Computer Corporation Database management system and method for accessing rows in a partitioned table
US6671797B1 (en) 2000-02-18 2003-12-30 Texas Instruments Incorporated Microprocessor with expand instruction for forming a mask from one bit
US6697919B2 (en) 2000-06-10 2004-02-24 Hewlett-Packard Development Company, L.P. System and method for limited fanout daisy chaining of cache invalidation requests in a shared-memory multiprocessor system
US7383424B1 (en) * 2000-06-15 2008-06-03 Hewlett-Packard Development Company, L.P. Computer architecture containing processor and decoupled coprocessor
EP1337926A1 (en) 2000-08-14 2003-08-27 Jae-Hak Lee The multi-functional pda
US6898693B1 (en) * 2000-11-02 2005-05-24 Intel Corporation Hardware loops
US6917987B2 (en) 2001-03-26 2005-07-12 Intel Corporation Methodology and mechanism for remote key validation for NGIO/InfiniBand™ applications
US6745174B2 (en) 2001-03-29 2004-06-01 Hewlett-Packard Development Company, L.P. Method of executing before-triggers in an active database
US7013353B2 (en) * 2001-03-30 2006-03-14 Intel Corporation Host-fabric adapter having an efficient multi-tasking pipelined instruction execution micro-controller subsystem
US20020188830A1 (en) 2001-06-01 2002-12-12 Brian Boles Bit replacement and extraction instructions
US6789143B2 (en) * 2001-09-24 2004-09-07 International Business Machines Corporation Infiniband work and completion queue management via head and tail circular buffers with indirect work queue entries
US6748499B2 (en) * 2001-11-15 2004-06-08 International Business Machines Corporation Sharing memory tables between host channel adapters
US6854032B2 (en) * 2001-12-04 2005-02-08 Sun Microsystems, Inc. System for accessing a region of memory using remote address translation and using a memory window table and a memory region table
US6757790B2 (en) 2002-02-19 2004-06-29 Emc Corporation Distributed, scalable data storage facility with cache memory
JP2003308334A (ja) * 2002-04-15 2003-10-31 Nippon Telegr & Teleph Corp <Ntt> 情報検索方法及び装置、情報検索プログラム、情報検索プログラムを記録した記録媒体
US7249118B2 (en) 2002-05-17 2007-07-24 Aleri, Inc. Database system and methods
US7197647B1 (en) 2002-09-30 2007-03-27 Carnegie Mellon University Method of securing programmable logic configuration data
US6842848B2 (en) 2002-10-11 2005-01-11 Sandbridge Technologies, Inc. Method and apparatus for token triggered multithreading
US20060098649A1 (en) 2004-11-10 2006-05-11 Trusted Network Technologies, Inc. System, apparatuses, methods, and computer-readable media for determining security realm identity before permitting network connection
US7730292B2 (en) 2003-03-31 2010-06-01 Hewlett-Packard Development Company, L.P. Parallel subword instructions for directing results to selected subword locations of data processor result register
US20040260182A1 (en) 2003-06-23 2004-12-23 Zuluaga Andres F. Intraluminal spectroscope with wall contacting probe
US7006021B1 (en) * 2003-06-27 2006-02-28 Cypress Semiconductor Corp. Low power serializer circuit and method
US7047252B2 (en) 2003-12-02 2006-05-16 Oracle International Corporation Complex computation across heterogenous computer systems
US7664938B1 (en) 2004-01-07 2010-02-16 Xambala Corporation Semantic processor systems and methods
US7698552B2 (en) * 2004-06-03 2010-04-13 Intel Corporation Launching a secure kernel in a multiprocessor system
JP2006004274A (ja) * 2004-06-18 2006-01-05 Nippon Telegr & Teleph Corp <Ntt> 対話処理装置、対話処理方法及び対話処理プログラム
US7516121B2 (en) * 2004-06-23 2009-04-07 Oracle International Corporation Efficient evaluation of queries using translation
US20060075236A1 (en) * 2004-09-30 2006-04-06 Marek James A Method and apparatus for high assurance processing
US20060095690A1 (en) 2004-10-29 2006-05-04 International Business Machines Corporation System, method, and storage medium for shared key index space for memory regions
US7814104B2 (en) 2005-05-04 2010-10-12 Oracle International Corporation Techniques for partition pruning
US7725595B1 (en) * 2005-05-24 2010-05-25 The United States Of America As Represented By The Secretary Of The Navy Embedded communications system and method
US7877379B2 (en) * 2005-09-30 2011-01-25 Oracle International Corporation Delaying evaluation of expensive expressions in a query
US8817029B2 (en) 2005-10-26 2014-08-26 Via Technologies, Inc. GPU pipeline synchronization and control system and method
GB0524720D0 (en) * 2005-12-05 2006-01-11 Imec Inter Uni Micro Electr Ultra low power ASIP architecture II
US7861060B1 (en) 2005-12-15 2010-12-28 Nvidia Corporation Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior
US8024797B2 (en) * 2005-12-21 2011-09-20 Intel Corporation Method, apparatus and system for performing access control and intrusion detection on encrypted data
US8255922B1 (en) * 2006-01-09 2012-08-28 Oracle America, Inc. Mechanism for enabling multiple processes to share physical memory
US8049760B2 (en) 2006-02-06 2011-11-01 Via Technologies, Inc. System and method for vector computations in arithmetic logic units (ALUs)
US20080010417A1 (en) * 2006-04-28 2008-01-10 Zeffer Hakan E Read/Write Permission Bit Support for Efficient Hardware to Software Handover
US7509460B2 (en) * 2006-05-04 2009-03-24 Sun Microsystems, Inc. DRAM remote access cache in local memory in a distributed shared memory system
US7783862B2 (en) 2006-08-07 2010-08-24 International Characters, Inc. Method and apparatus for an inductive doubling architecture
US20080065835A1 (en) * 2006-09-11 2008-03-13 Sun Microsystems, Inc. Offloading operations for maintaining data coherence across a plurality of nodes
US8533216B2 (en) 2006-10-30 2013-09-10 Teradata Us, Inc. Database system workload management method and system
EP2092440B1 (en) * 2006-11-13 2019-01-09 IP Reservoir, LLC Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
US7660793B2 (en) 2006-11-13 2010-02-09 Exegy Incorporated Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
US20080162876A1 (en) 2006-12-28 2008-07-03 International Business Machines Corporation dedicated hardware processor for structured query language (sql) transactions
US8504791B2 (en) 2007-01-26 2013-08-06 Hicamp Systems, Inc. Hierarchical immutable content-addressable memory coprocessor
US7792822B2 (en) * 2007-03-02 2010-09-07 Microsoft Corporation Systems and methods for modeling partitioned tables as logical indexes
US8032499B2 (en) 2007-05-21 2011-10-04 Sap Ag Compression of tables based on occurrence of values
US7769729B2 (en) 2007-05-21 2010-08-03 Sap Ag Block compression of tables with repeated values
US20090037700A1 (en) 2007-07-30 2009-02-05 Clear Falls Pty Ltd Method and system for reactively assigning computational threads of control between processors
US7882210B2 (en) 2007-08-02 2011-02-01 Sap Ag Dynamic agent formation for efficient data provisioning
EP2192764B1 (en) * 2007-09-05 2015-05-20 Tohoku University Solid state imaging element and imaging device
US20090070786A1 (en) 2007-09-11 2009-03-12 Bea Systems, Inc. Xml-based event processing networks for event server
EP2040180B1 (en) 2007-09-24 2019-01-16 Hasso-Plattner-Institut für Digital Engineering gGmbH ETL-less zero-redundancy system and method for reporting OLTP data
CN100495404C (zh) * 2007-11-22 2009-06-03 中国人民解放军国防科学技术大学 基于流处理的生物序列数据库搜索多层次加速方法
US7991794B2 (en) 2007-12-18 2011-08-02 Oracle International Corporation Pipelining operations involving DML and query
CN101227689B (zh) * 2007-12-27 2011-01-19 华为技术有限公司 信息上报方法及装置
US7769726B2 (en) 2007-12-31 2010-08-03 Sap, Ag Method for verification of data and metadata in a data repository
US8258952B2 (en) * 2008-03-14 2012-09-04 The Invention Science Fund I, Llc System for treating at least one plant including a treatment apparatus and an electronic tag interrogator
US8229945B2 (en) 2008-03-20 2012-07-24 Schooner Information Technology, Inc. Scalable database management software on a cluster of nodes using a shared-distributed flash memory
US8732386B2 (en) 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
US20090289861A1 (en) * 2008-05-20 2009-11-26 Infineon Technologies Ag Radio frequency communication devices and methods
JP2010003266A (ja) * 2008-06-23 2010-01-07 Nippon Telegr & Teleph Corp <Ntt> クエリ生成装置及び方法及びプログラム及びコンピュータ読取可能な記録媒体
US8271564B2 (en) * 2008-07-14 2012-09-18 Symbol Technologies, Inc. Lookup table arrangement and related management method for accommodating concurrent processors
US8108361B2 (en) 2008-07-31 2012-01-31 Microsoft Corporation Efficient column based data encoding for large-scale data storage
US8626725B2 (en) * 2008-07-31 2014-01-07 Microsoft Corporation Efficient large-scale processing of column based data encoded structures
US8275815B2 (en) 2008-08-25 2012-09-25 International Business Machines Corporation Transactional processing for clustered file systems
US20100088309A1 (en) 2008-10-05 2010-04-08 Microsoft Corporation Efficient large-scale joining for querying of column based data encoded structures
US8725707B2 (en) 2009-03-26 2014-05-13 Hewlett-Packard Development Company, L.P. Data continuous SQL process
US8935223B2 (en) 2009-04-30 2015-01-13 Oracle International Corporation Structure of hierarchical compressed data structure for tabular data
US8285709B2 (en) 2009-05-12 2012-10-09 Teradata Us, Inc. High-concurrency query operator and method
US9304767B2 (en) * 2009-06-02 2016-04-05 Oracle America, Inc. Single cycle data movement between general purpose and floating-point registers
US8789173B2 (en) * 2009-09-03 2014-07-22 Juniper Networks, Inc. Protecting against distributed network flood attacks
US8356185B2 (en) * 2009-10-08 2013-01-15 Oracle America, Inc. Apparatus and method for local operand bypassing for cryptographic instructions
US8832142B2 (en) 2010-08-30 2014-09-09 Oracle International Corporation Query and exadata support for hybrid columnar compressed data
US8270967B1 (en) * 2010-02-09 2012-09-18 Sprint Spectrum, L.P. Overriding a most-recently-used (MRU) table for system acquisition
US20110196900A1 (en) * 2010-02-09 2011-08-11 Alexandre Drobychev Storage of Data In A Distributed Storage System
US8856593B2 (en) * 2010-04-12 2014-10-07 Sandisk Enterprise Ip Llc Failure recovery using consensus replication in a distributed flash memory system
US8516268B2 (en) 2010-08-23 2013-08-20 Raytheon Company Secure field-programmable gate array (FPGA) architecture
CN201804331U (zh) * 2010-09-21 2011-04-20 北京同有飞骥科技股份有限公司 一种基于协处理器的重复数据删除系统
US8260803B2 (en) * 2010-09-23 2012-09-04 Hewlett-Packard Development Company, L.P. System and method for data stream processing
US8938644B2 (en) 2010-12-03 2015-01-20 Teradata Us, Inc. Query execution plan revision for error recovery
US8972746B2 (en) 2010-12-17 2015-03-03 Intel Corporation Technique for supporting multiple secure enclaves
FR2969156B1 (fr) 2010-12-21 2013-02-08 Chryso Polymere comportant une fonction hydrolysable utilisable comme fluidifiant
US8996463B2 (en) 2012-07-26 2015-03-31 Mongodb, Inc. Aggregation framework system architecture and method
US8666970B2 (en) * 2011-01-20 2014-03-04 Accenture Global Services Limited Query plan enhancement
JP5971635B2 (ja) * 2011-01-25 2016-08-17 エヌエックスピー カナダ インコーポレイテッド ベクトルユニット共有の装置および方法
US20120303633A1 (en) 2011-05-26 2012-11-29 International Business Machines Corporation Systems and methods for querying column oriented databases
CN102184365B (zh) * 2011-06-07 2013-05-29 郑州信大捷安信息技术股份有限公司 基于SoC芯片外部数据安全存储系统及存取控制方法
US8756363B2 (en) 2011-07-07 2014-06-17 Oracle International Corporation Efficient storage of memory version data
US8572441B2 (en) 2011-08-05 2013-10-29 Oracle International Corporation Maximizing encodings of version control bits for memory corruption detection
US8601473B1 (en) 2011-08-10 2013-12-03 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US9697174B2 (en) 2011-12-08 2017-07-04 Oracle International Corporation Efficient hardware instructions for processing bit vectors for single instruction multiple data processors
US9342314B2 (en) 2011-12-08 2016-05-17 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors
US9792117B2 (en) 2011-12-08 2017-10-17 Oracle International Corporation Loading values from a value vector into subregisters of a single instruction multiple data register
EP2788902B1 (en) 2011-12-08 2019-04-17 Oracle International Corporation Techniques for more efficient usage of memory-to-cpu bandwidth
US9454507B2 (en) 2011-12-23 2016-09-27 Intel Corporation Systems, apparatuses, and methods for performing a conversion of a writemask register to a list of index values in a vector register
CN104126166A (zh) 2011-12-23 2014-10-29 英特尔公司 用于执行使用掩码的向量打包一元编码的系统、装置和方法
US20150227414A1 (en) 2012-08-31 2015-08-13 Pradeep Varma Systems And Methods Of Memory And Access Management
US9292569B2 (en) 2012-10-02 2016-03-22 Oracle International Corporation Semi-join acceleration
US8930409B2 (en) 2012-10-15 2015-01-06 Oracle International Corporation System and method for supporting named operations in a distributed data grid
US9043559B2 (en) 2012-10-23 2015-05-26 Oracle International Corporation Block memory engine with memory corruption detection
US9244829B2 (en) 2012-12-20 2016-01-26 Oracle International Corporation Method and system for efficient memory region deallocation
US9471590B2 (en) 2013-02-12 2016-10-18 Atlantis Computing, Inc. Method and apparatus for replicating virtual machine images using deduplication metadata
US9898414B2 (en) 2014-03-28 2018-02-20 Oracle International Corporation Memory corruption detection support for distributed shared memory applications

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974408A (en) * 1997-02-28 1999-10-26 Oracle Corporation Method and apparatus for executing a query that specifies a sort plus operation
CN101944077A (zh) * 2010-09-02 2011-01-12 东莞市泰斗微电子科技有限公司 一种主处理器和协处理器之间的通讯接口及其控制方法

Also Published As

Publication number Publication date
US9063974B2 (en) 2015-06-23
US20160098364A1 (en) 2016-04-07
CN108664596B (zh) 2021-07-27
EP2904521A1 (en) 2015-08-12
EP2904499B1 (en) 2020-04-22
CN104756091A (zh) 2015-07-01
EP2904515B1 (en) 2021-05-12
US10223116B2 (en) 2019-03-05
US9372813B2 (en) 2016-06-21
US20140095805A1 (en) 2014-04-03
EP2904514A1 (en) 2015-08-12
EP2904500B1 (en) 2020-08-19
WO2014055443A1 (en) 2014-04-10
US9251272B2 (en) 2016-02-02
US20140095534A1 (en) 2014-04-03
CN104662538B (zh) 2018-05-18
EP2904513A1 (en) 2015-08-12
WO2014055138A1 (en) 2014-04-10
CN104769561A (zh) 2015-07-08
CN104704491A (zh) 2015-06-10
EP2904521B1 (en) 2018-10-24
US20150026434A1 (en) 2015-01-22
CN108664596A (zh) 2018-10-16
US9557997B2 (en) 2017-01-31
US20140095468A1 (en) 2014-04-03
JP2015535999A (ja) 2015-12-17
CN104769561B (zh) 2018-01-12
US9292569B2 (en) 2016-03-22
US9158810B2 (en) 2015-10-13
WO2014055145A1 (en) 2014-04-10
EP2904499A1 (en) 2015-08-12
US9542443B2 (en) 2017-01-10
WO2014055137A1 (en) 2014-04-10
US20140096145A1 (en) 2014-04-03
CN104769591A (zh) 2015-07-08
US10055224B2 (en) 2018-08-21
CN104662534A (zh) 2015-05-27
WO2014055512A1 (en) 2014-04-10
JP6320393B2 (ja) 2018-05-09
EP2904515A1 (en) 2015-08-12
US20140095810A1 (en) 2014-04-03
US20140095748A1 (en) 2014-04-03
US20150261871A1 (en) 2015-09-17
US9400821B2 (en) 2016-07-26
EP2904500A1 (en) 2015-08-12
CN104704491B (zh) 2018-04-10
CN104769591B (zh) 2018-08-03
CN104756091B (zh) 2018-02-23
US20140095651A1 (en) 2014-04-03
CN104662538A (zh) 2015-05-27
WO2014055526A1 (en) 2014-04-10
ES2880268T3 (es) 2021-11-24
EP2904514B1 (en) 2020-03-25
EP2904513B1 (en) 2021-04-07

Similar Documents

Publication Publication Date Title
CN104662534B (zh) 用于表扫描加速的硬件
US11494339B2 (en) Multi-level compression for storing data in a data store
EP1643384B1 (en) Query forced indexing
CN102129425B (zh) 数据仓库中大对象集合表的访问方法及装置
CN108140040A (zh) 存储器中数据库的选择性数据压缩
US10599726B2 (en) Methods and systems for real-time updating of encoded search indexes
US11176092B2 (en) Database management system and anonymization processing method
CN110569315A (zh) 基于数据仓库的数据处理方法和装置
WO2022250876A1 (en) Asynchronous processing of transaction log requests in a database transaction log service
CN115509446A (zh) 元数据垃圾识别方法、装置和设备
JP2008165622A (ja) マルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム
CN110909029A (zh) 基于Nosql实现缓存的方法及介质
US11720550B2 (en) Transaction log validation in a database transaction log service
JP2001147923A (ja) 類似文書検索装置、類似文書検索方法及び記録媒体
US11709824B2 (en) Consolidating transaction log requests and transaction logs in a database transaction log service
US11914589B2 (en) Efficient computation of order by, order by with limit, min, and max in column-oriented databases
US20220382578A1 (en) Asynchronous processing of transaction log requests in a database transaction log service
WO2022250890A1 (en) Transaction log validation in a database transaction log service
WO2022250889A1 (en) Consolidating transaction log requests and transaction logs in a database transaction log service
US20050015400A1 (en) Existing content utilization support method, information processing device, program, and recording medium
US20190057097A1 (en) Information processing device, information processing method, and computer-readable recording medium
CN116795858A (zh) 链路调用检索方法、装置、设备、介质及产品

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant