CN104662538A - 半连接加速 - Google Patents

半连接加速 Download PDF

Info

Publication number
CN104662538A
CN104662538A CN201380049816.7A CN201380049816A CN104662538A CN 104662538 A CN104662538 A CN 104662538A CN 201380049816 A CN201380049816 A CN 201380049816A CN 104662538 A CN104662538 A CN 104662538A
Authority
CN
China
Prior art keywords
data
coprocessor
result
order
value
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.)
Granted
Application number
CN201380049816.7A
Other languages
English (en)
Other versions
CN104662538B (zh
Inventor
K·艾加仑
G·F·斯沃特
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
Publication of CN104662538A publication Critical patent/CN104662538A/zh
Application granted granted Critical
Publication of CN104662538B publication Critical patent/CN104662538B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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
    • 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,013的优先权;该申请又要求于2012年10月2日提交的美国临时申请No.61/709,142的优先权,其内容都通过引用被结合于此。
本申请涉及于2013年2月26提交的美国专利申请No.13/778,009,其内容通过引用被结合于此,就好像在本文完全阐述了一样。
技术领域
本发明一般而言涉及处理查询并且,更具体而言,涉及利用一个或多个协处理器中的定制硬件来执行处理查询所需的一个或多个操作。
背景技术
在本节中描述的方法是可以实行的方法,但不一定是先前已被构想或实行的方法。因此,除非另外指出,否则不应当假设本节中描述的任何方法仅仅因为它们被包括在本节中就有资格作为现有技术。
发布到数据库的查询通常针对一个或多个数据库对象,诸如关系表。在许多时候,访问在关系表中组织的数据涉及扫描该关系表或者至少其一部分。常见的SQL查询是对数据库表需要过滤器的查询,诸如以下:
select EMPLOYEE from T_EMPLOYEES where HIRE_YEAR='2012'
在这个例子中,从数据库表T_EMPLOYEES搜索在2012年被雇佣的所有员工。这种搜索(或“扫描”)是由运行在一个或多个微处理器上的、执行通过整个表搜索所指定值的一系列指令的软件进行的,在这个例子中,所指定值是“2012”。当对大型数据库运行分析应用时,该第一步通常是性能瓶颈,因为这个步骤必须对整个表运行,这可以是几太(teratype)字节大。后续步骤将对第一扫描步骤过滤之后的满足扫描中所设定标准的子集(在上例中是在2012被雇佣的员工)工作。因此,机器每单位时间可以过滤的行数对机器而言是重要的性能度量。这个度量被称为“扫描率”。
用于处理查询,诸如涉及扫描表的查询,的方法依赖于软件技术,其中软件在通用微处理器上执行(或“运行”)。
附图说明
在附图中:
图1是根据实施例绘出用于加速表扫描的示例计算机系统的框图;
图2是根据实施例绘出示例协处理器的框图;
图3是根据实施例绘出用于处理查询的过程的流程图;
图4是根据实施例绘出示例查找向量的一部分的框图;及
图5是说明本发明的实施例可以在其上实现的计算机系统的框图。
具体实施方式
在以下描述中,为了解释的目的,阐述了众多具体的细节,以便提供对本发明的透彻理解。但是,很显然,本发明没有这些具体细节也可以实践。在其它情况下,众所周知的结构和设备以框图形式示出,以避免不必要地混淆本发明。
总体概述
在实施例中,与查询相关联的扫描操作或查找操作是在硬件中实现的,诸如与通用微处理器位于相同芯片上的协处理器。以这种方式,扫描操作由定制硬件执行,而查询的其它部分由运行软件的通用微处理器处理。让不同硬件部件执行不同操作的一个优点是定制硬件能够更好地处理扫描操作或查找操作所需的大数据量。而且,定制硬件把通用微处理器和相关联的高速缓存释放出来去处理查询的其它部分或者甚至与处理查询的软件无关的其它任务。
本发明的实施例不限于任何特定的微处理器或图形处理单元(GPU)。
以下例子把表称为被扫描的数据对象。但是,不是所有实施例都限于表。除表之外的其它数据对象可以被扫描。
系统概述
图1是根据实施例绘出用于加速查询处理的示例计算机系统100的框图。计算机系统100包括查询执行引擎110、OS/管理程序120、协处理器130以及存储器140。虽然只绘出了单个协处理器130,但是系统100可以包括多个协处理器。
查询执行引擎110和管理程序120是驻留在存储器(例如,DRAM和/或高速缓存存储器)中并且包括由通用微处理器执行的指令的程序。查询执行引擎110包括一个或多个软件部件并且可以与一个或多个其它不是查询执行引擎110的部分的软件部件通信,以便执行查询来生成查询的结果。查询执行引擎110可以配置为重写查询(例如,SQL查询),以生成查询执行引擎110能够执行的重写查询。作为替代,另一软件部件接收原始查询、基于原始查询生成重写查询,并且把所写的查询传递到查询执行引擎110供处理。
查询执行引擎110可配置为处理的查询的类型的非限制性例子包括SQL查询和XML查询,诸如XPath查询和XQuary查询。查询执行引擎110配置为处理的至少一种类型的查询是需要扫描对象或者其一部分的查询。如前面所指出的,被扫描的对象的非限制性例子是在一个或多个列和多个行中逻辑组织的关系表。虽然数据可以逻辑地在单个表中组织,但是数据可以非常不同地在持久储存器中组织,诸如硬盘驱动器或闪存存储器设备。例如,表的数据可以被分区或者表的不同列可以存储在非常不同的存储位置。
管理程序120充当查询执行引擎110和协处理器130之间的接口。换句话说,由查询执行引擎110向协处理器130发布的命令是经管理程序120发布的。因此,查询执行引擎110在管理程序接口上通过对OS/管理程序120进行API调用来发布命令。
管理程序是允许多个操作系统(“客人”)在主计算机上并发运行的硬件虚拟化技术。管理程序向客人操作系统给出虚拟操作平台并且管理客人操作系统的执行。各种操作系统的多个实例可以共享虚拟化的硬件资源。管理程序可以安装在具有运行客人操作系统的功能的服务器硬件上,服务器硬件自己充当服务器。
一种类型的管理程序直接在主机的硬件上运行,以控制硬件并管理客人操作系统。因此,客人操作系统运行在管理程序之上的另一级上。另一种类型的管理程序在典型的操作系统环境中运行。由于管理程序层作为独特的第二软件级,客人操作系统运行在硬件之上的第三级。换句话说,第一种类型的管理程序直接运行在硬件上,而第二种类型的管理程序运行在另一操作系统上,诸如FreeBSD、Linux或Windows。
因此,虽然元件120被标记为“OS/管理程序”,但是操作系统和管理程序是不同的实体。对于本描述,OS和管理程序被看作是相同的。以下对元件120的引用将是“管理程序120”。
虽然管理程序120被绘为计算机系统100的一部分,但是在一种实施例中,计算机系统100不包括管理程序。在那种实施例中,查询执行引擎110直接向协处理器130发布命令,而不首先需要除计算机系统100的操作系统(未绘出)之外的任何其它软件部件的处理。
协处理器130是被编程为执行一个或多个任务的硬件元件,这一个或多个任务独立于由执行查询执行引擎110和管理程序120的通用处理器所执行的任务。虽然协处理器130与执行查询执行引擎110的通用处理器分离,但是协处理器130可以被看作查询执行引擎110的一部分,因为协处理器130执行之前由查询执行引擎110执行的一个或多个任务。
在实施例中,协处理器130至少执行对照来自表的一系列输入值比较指定的目标值(或者目标值范围)的任务。这个任务被称为扫描操作并且在以下更详细地描述。在实施例中,协处理器130能够对照来自表的一系列输入值或数据元素比较多个指定的目标值(或者多个指定的目标范围)。
在另一实施例中,协处理器130至少执行确定一个或多个值是否在特定的值集合中存在的任务。这一个或多个值可以被用来加索引成(index into)特定的值集合,使得不需要针对这一个或多个值当中的每个值扫描该特定的值集合。在这种实施例中,协处理器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)存储器140中存储输入数据144的至少一部分的位置以及(2)存储器140中对应于该命令的(由协处理器130生成的)操作结果将被存储的位置。
在实施例中,协处理器130包括存储一个或多个命令的一个或多个地址的命令队列。当不忙时,协处理器130从命令队列中选择一个或多个(由管理程序120插入的)地址,以便从存储器(例如,存储器140)检索一个或多个(例如,在命令142中反映的)命令。
协处理器控制块
在实施例中,查询执行引擎110包括指令,当指令被通用微处理器(未绘出)执行时,使得生成协处理器控制块(coprocessorcontrol block,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中指示的位置数据,其中该位置数据是虚拟地址,并且利用实际地址代替该虚拟地址。然后,操作系统向管理程序120发送该CCB。管理程序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可以按轮转方式调度这多个命令以便执行。一些命令可以被并行执行。
在实施例中,对命令的输入数据(例如,关系数据)经(到查询执行引擎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包括一定量的存储器,以便在数据通过存储器接口被流化时存储数据或者存储在查找操作中使用的数据,诸如查找向量,其例子是Bloom过滤器。由于很大程度上由用于主要核心或通用微处理器的一个或多个高速缓存组成的现代芯片,协处理器200的存储器的尺寸可以相当小(例如,4KB)。
虽然查询执行引擎110这样“查看”表数据关系并执行操作,但是协处理器200只“看到”或者对向量或单个维度的数据数组操作。换句话说,协处理器200不“查看”多个列或行标识符。更确切地说,当涉及到数据是如何逻辑组织或存储的时候,协处理器200是不可知的。因此,在向协处理器200提供指令时,查询执行引擎110确保由协处理器200执行的任何操作的输出以特定次序存储。如果不是,则查询执行引擎110将不知道输出对应于表的哪部分。排序被保持的一种方式是让查询执行引擎110对表数据的哪个集合对应于哪个CCB保持跟踪,其中每个CCB包括唯一的CCB标识符。然后,由协处理器200基于特定CCB生成的输出包括用于那个特定CCB的标识符,以允许查询执行引擎110确定输出对应于逻辑表的哪部分。例如,查询执行引擎110可以存储把表Employee的行1001-2000与CCB标识符432899关联的关联数据。协处理器200接收并处理具有标识符432899的CCB,以生成存储在某个位置的输出。
作为替代,代替对CCB标识符保持跟踪,查询执行引擎110存储把指示表的一部分(例如,表Employee的行1001-2000)的表数据与指示协处理器200生成的输出要存储在哪里的输出位置数据(例如,物理地址1298737+4KB)关联的关联数据。随后,当查询执行引擎110检查存储在那个存储位置的输出时,查询执行引擎110使用关联数据来确定表的哪部分对应于那个输出。因此,即使协处理器200在不同的时间对表的不同部分操作以及即使查询执行引擎110可能指示多个协处理器对表的不同部分操作,查询执行引擎110也可以对输出的次序保持跟踪,其中多个协处理器对表的不同部分操作可以并发执行。
处理查询
图3是实施例中绘出用来处理需要扫描操作的查询的过程300的流程图。在方框310,查询执行引擎110接收针对一个或多个数据对象,诸如表,并且需要这一个或多个数据对象当中至少一个的扫描操作的查询。例如,查询执行引擎110可以处理SQL查询,以生成查询执行引擎100配置为要执行或指示一个或多个其它软件部件执行的、包括一个或多个数据库操作,包括扫描操作,的重写的查询。作为替代,另一软件部件接收原始查询并且生成查询执行引擎100配置为要处理的重写的查询。
在方框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行并且可以有十个协处理器。于是,查询执行引擎110可以生成十个不同的CCB,除每个CCB指示从其开始访问特定表的不同的1,000行集合的不同地址之外,每个CCB都类似于其它CCB。以这种方式,十个协处理器对特定表的不同部分并行操作。
此外或者作为替代,方框330涉及查询执行引擎110基于一个或多个标准选择多个协处理器的子集以发送CCB。例如,查询执行引擎110可以只需要总共十个协处理器当中的三个协处理器,每个执行扫描操作(但是相对于每个其它协处理器关于表数据的不同集合)。查询执行引擎110用来选择一个或多个协处理器的一个或多个标准可以是每个协处理器的当前负载、每个协处理器的等待时间,和/或每个协处理器的处理历史。例如,查询执行引擎110选择当前最少“负载”或最不忙的三个协处理器。协处理器的负载可以反映在协处理器的一个或多个命令队列中的命令的数目当中。因此,等待被特定协处理器处理的命令越多,该特定协处理器变得负载越大。
在方框340,协处理器130接收一个或多个指令并且执行在这一个或多个指令中反映的一个或多个操作。例如,协处理器130接收CCB、确定该CCB中所反映的操作类型、读入完成操作必需的任何数据、执行操作,并且(在方框350中)使操作结果发送到查询执行引擎110。由协处理器130对命令的执行可以通过由查询执行引擎110(或者其代理之一)对协处理器130的一个或多个内部寄存器的写来触发。
扫描操作
在实施例中,一个或多个指令指示扫描操作以及表数据被存储的一个或多个地址。协处理器130检索表数据并且执行(在一个或多个指令中指定的)值或值范围与表数据之间的比较。协处理器130通过存储器(例如,存储器140)从查询执行引擎110请求表数据,其中存储器可以是系统中的动态RAM或者芯片上的高速缓存存储器。表数据可以存储在块中,这种块可以相当大,诸如64KB或更大。协处理器130可以访问这些块当中每一个,作为单维数组。在面向列的数据库中,数据在单维数组中并且容易被协处理器130读取。在以行为主的数据库中,在数据被协处理器130处理之前,数据可以首先被转置成以列为主的格式。
如果表数据跨在存储器中不连续的块,则协处理器130单独地请求每个块(作为单独的作业)。在这种场景下,查询执行引擎把每个作业的(由协处理器130生成的)结果“缝合”到一起。例如,在以行为主的数据库中,数据将被跨进(strided)并且协处理器130将选择每个第N块数据,其中N在命令中指定。
协处理器130可以“在传输过程中”执行比较;即,当表数据被流到协处理器130时。一旦表数据中的数据元素与一个或多个指令中指定的目标值范围进行比较,协处理器130就可以(立即或者最终)用来自表数据的新数据元素覆盖用来存储那个数据元素的存储器。
协处理器可以配置为执行的比较操作的类型的例子包括大于(>)、小于(<)、等于(==)、不等于(!=)、大于或等于(>=)以及小于或等于(<=)。
语义感知压缩
在实施例中,协处理器130配置为对压缩数据进行操作。一些数据是利用一种或多种非语义感知压缩技术来压缩的,而其它数据可以利用一种或多种语义感知压缩技术来压缩。利用非语义感知压缩技术压缩的数据在解压缩的数据可以被操作之前需要首先解压缩。利用语义感知压缩技术压缩的数据在执行操作(例如,数字或字符串比较)之前可以不需要被解压缩。语义感知压缩技术的例子是游程长度编码(run-length encoding,RLE)。
RLE是一种数据压缩形式,其中,数据的游程(run)(即,相同的数据值在许多连续的数据元素中出现的序列)被存储为单个数据值和计数,而不是存储为原始游程。这对于包含许多这种游程的数据最有用。例如,表的列可以包含以下序列的部门标识符:
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对那个游程长度编码的数据元素生成八个否定指示(例如,“N”或“0”)。
查找操作
SQL查询常常需要交叉引用数据库中的多个表。处理这种查询通常涉及集合-相交操作。目前,集合-相交操作是由运行在通用微处理器上的软件执行的,其中,当要连接的表的列的基数小时,软件利用向量查找(例如,Bloom过滤查找)。根据实施例,向量查找(或者查找操作)在硬件中实现,这会比软件实现快得多。
因此,在实施例中,(方框330的)一个或多个指令指示查找操作、表数据被存储的一个或多个地址,以及查找向量或数组被存储的一个或多个地址。表数据(或查找向量)被存储的一个或多个地址可以是两个地址(例如,起始地址和结束地址)或者带偏移量的单个地址。协处理器130使查找向量和表数据发送到协处理器130并且,对于表数据中的每个数据元素,在查找向量中执行数据元素的查找。换句话说,协处理器130使用数据元素(或者数据元素的散列)来识别查找向量中的位置并且在那个位置从查找向量检索数据。
需要查找操作的示例查询
可能需要查找操作的查询的例子是请求关于居住在“富”邮政区号(zip code)的“穷”人的信息的查询。“穷”人可以被认为是每年的收入少于$30,000的人,而“富”邮政区号可以被认为是薪资中间值超过$100,000的邮政区号。在这个例子中,协处理器130需要来自至少两个数据对象的数据:查找向量和Person表。查找向量指示(例如,利用单个位)邮政区号是否“富”。查找向量可以是预先计算的(即,在接收查询之前)或者可以响应于接收到查询而被计算。
Person表包含关于各种人的信息,该表包括至少三列:一列用于每个人的名字、一列用于每个人的薪资,还有一列用于每个人的邮政区号。一方面,指示邮政区号是富还是穷的数据是维度表,而包含关于每个人的信息的Person表是事实表。维度表通常比事实表小得多。在这个例子中,查找向量可以基于维度表生成。相关地,事实表可以由多个数据对象(例如,表)表示:一个数据对象可以包含关于每个人的薪资的信息,而另一个数据对象可以包含关于每个人的邮政区号的信息。
查找向量
查找向量的例子是Bloom过滤器,这是被用来测试一个元素是否是一个集合的成员的概率性数据结构。虽然假阳性在利用Bloom过滤器的时候是有可能的,但是假阴性不可能。Bloom过滤器与一个或多个散列函数关联,每个散列函数把元素映射到Bloom过滤器中一个数组位置。
但是,查找向量不需要是概率性的。例如,如果只有10,000个可能的邮政区号并且每个邮政区号都与单个位关联,以便指示该邮政区号是否“富”,则查找向量的尺寸(例如,1.25KB)可以小到足以适合把整个查找向量放到协处理器130的存储器(例如,SRAM)中。因此,不必为了减小其尺寸而需要概率性查找向量。
图4是绘出示例查找向量400的一部分的框图。查找向量400中的每个位置都与不同的邮政区号关联。换句话说,邮政区号被用来加索引成查找向量400。查找向量400中每个位置都包含单个位,该位指示对应的邮政区是“富”邮政区号(“1”)还是“穷”邮政区号(“0”)。
如果查找向量不能够适合在协处理器130的存储器中完全放下,则(除了生成概率性查找向量之外),或者(a)查找向量可以被分割(或划分),使得协处理器130每次针对查找向量的每个部分读入表数据或者(b)在存在多个协处理器的实施例中,不同的协处理器可以读入表数据一次但是只针对查找向量中其存储的一部分。
在前一场景下,如果协处理器130只能适合把例如查找向量的1/4放到其存储器中,则协处理器130读出指示人的邮政区号的表数据四次(即,协处理器130读入的查找向量的每个部分读出一次)。如果人的邮政区号在对表数据的任何一遍操作(pass)中都未被识别出,则用于那个人的结果可以指示否定的确定。对表数据的每遍操作的结果可以是一个长的位数组,Person表中指示的每个人一位。
在后一场景下,四个不同的协处理器可以存储查找向量的不同的四分之一并且读入一次指示人的邮政区号的表数据,然后执行对表数据中所反映的每个邮政区号的查找向量的查找。再次,来自每个协处理器的查找操作的结果可以是一个长的位数组,Person表中指示的每个人一位。
生成扫描或查找操作的结果
在实施例中,作为执行在一个或多个指令中反映的一个或多个操作的结果,协处理器130生成具体的输出格式。该具体输出格式的例子是位向量,其中位向量中的每个位置指示真或假。例如,如果“10”是目标值并且比较是确定该目标值是否大于来自表的数据值或数据元素,则比较的结果将是(a)真,如果数据值大于10,和(b)假,如果数据值小于或等于10。
向量中的每个位置对应于从输入(例如,表)数据接收的数据值或数据元素。例如,在以上的查找操作例子中,协处理器130生成反映住在“富”邮政区号中的“穷”人的位向量。为了生成位向量,协处理器130从Person表的zip code(邮政区号)列读入数据并且为在读入的数据中指示的每个人并且基于查找向量确定该人是否住在“富”邮政区号中。位向量中的每一位指示Person表中的不同的人是否住在“富”邮政区号中。协处理器130随后把位向量传递到通用微处理器,该通用微处理器使用位向量来识别也被认为“穷”的人。例如,对于住在富邮政区号中的每个人(如在位向量中所指示的),通用微处理器查找Person表中对应的行,以确定该人是否“穷”。
因为位向量的尺寸相对小,因此由通用微处理器对位向量的处理相对快;比通用微处理器直接处理输入数据快得多。此外,存储位向量的高速缓存存储器空间比存储输入数据(诸如数据的大列)将需要的高速缓存存储器空间小得多。
存储扫描或查找操作的结果
返回过程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缓冲器,因此“生产”协处理器可以比“消费”协处理器可以处理结果更快地生成结果。最终,“链条”中最后的协处理器向指定的目的地,诸如RAM或高速缓存中的目的地,发送可让查询执行引擎110访问的结果。
在方框360,查询执行引擎110处理结果并执行一个或多个其它操作,以便生成原始查询的最终结果。虽然协处理器130执行扫描或查找操作,但是,执行查询执行引擎110的通用微处理器可以是空闲的或者可以完全被查询执行引擎110或另一过程使用。例如,查询执行引擎110可以执行查询所需或者不以任何方式与该查询相关而是与另一查询相关的一个或多个其它操作。
作为扫描操作的例子,查询可能请求在具体日期范围内被启动的购买订单的ID和价格。在这个例子中,协处理器130执行扫描操作,该扫描操作涉及读入用于多个购买订单的日期信息,其中日期信息在Purchase Order表中反映。扫描操作的结果可以是一系列的位(例如,位向量),每一位反映对应的购买订单是否在指定的日期范围内被启动。协处理器130把结果发送到查询执行引擎110可访问的存储器并且可以通过设置查询执行引擎110定期检查的标志来通知查询执行引擎110扫描操作的完成。然后,查询执行引擎110可以使用所述位来识别Purchase Order表中对应于在所指定日期范围内启动的那些购买订单的条目。然后,查询执行引擎110识别所识别出的条目中的ID和价格并且作为查询的结果返回(例如,显示)那些信息。查询还可以指定查询的结果要通过价格按降序来排序。因此,查询执行引擎110在接收到由协处理器110执行的扫描操作的结果之后执行一个或多个操作。
给定其中查询是要识别住在“富”邮政区号中的“穷”人的查找操作例子,除了指示协处理器130执行查找操作,查询执行引擎110还可以指示协处理器130(或者另一协处理器)对Person表执行扫描操作,以识别年薪小于$30,000的所有人。扫描操作的结果(就像查找操作的结果)可以是一系列位的形式(例如,位向量),其中每一位对应于在Person表中指示的不同的人。在一种实施例中,查询执行引擎110把扫描操作的结果和查找操作的结果作为输入对其执行AND操作。或者,协处理器130(或者另一协处理器)可以被编程为执行该AND操作。在这种实施例中,查询执行引擎110可以创建另一个CCB,其中操作数包括查找操作的结果的(例如,虚拟)地址和扫描操作的结果的地址。
如前所述,查找向量的尺寸可能不适合一次完全放在协处理器130的存储器中。在前面所述的两种场景之一当中,查找向量被分成四个“迷你”向量并且协处理器130单独对每个迷你向量进行操作,因此需要协处理器130(从Person表)读入用于每个人的邮政区号数据四次。由协处理器执行这种查找操作所产生的总结果可以包括四个单独的位数组,每个数组最终OR到一起,以产生单个位数组(再次,Person表中所指示的每个人一位)。这个OR步骤(这可以包括三个OR操作)可以由查询执行引擎110执行。作为替代,协处理器130可以被编程为执行该OR操作。
在这两种场景当中的另一种中,查询执行引擎110使四个不同的协处理器利用查找向量的不同部分执行查找操作。然后,来自一个协处理器的结果与来自每个其它协处理器的结果OR,以产生单个位数组(Person表中所指示的每个人一位)。再次,这个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还包括只读存储器(ROM)508或者耦合到总线502的其它静态存储设备,用于为处理器504存储静态信息和指令。提供存储设备510,诸如磁盘或光盘,并且耦合到总线502,用于存储信息和指令。
计算机系统500可以经总线502耦合到显示器512,诸如阴极射线管(CRT),用于向计算机用户显示信息。输入设备514,包括字母数字和其它键,耦合到总线502,用于向处理器504传送信息和命令选择。另一种类型的用户输入设备是游标控制516,诸如鼠标、轨迹球或者游标方向键,用于向处理器504传送方向信息和命令选择并且用于控制显示器512上的游标运动。这种输入设备通常具有在两个轴,第一个轴(例如,x)和第二个轴(例如,y),中的两个自由度,以允许设备在平面内规定位置。
计算机系统500可以利用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文所述的技术,这些与计算机系统相结合,使计算机系统500或者把计算机系统500编程为专用机器。根据一种实施例,本文的技术由计算机系统500响应于执行包含在主存储器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提供耦合到网络链路520的双向数据通信,其中网络链路520连接到本地网络522。例如,通信接口518可以是综合业务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器,或者提供到对应类型的电话线的数据通信连接的调制解调器。作为另一个例子,通信接口518可以是提供到兼容的局域网(LAN)的数据通信连接的LAN卡。无线链路也可以实现。在任何此类实现中,通信接口518都发送和接收携带表示各种类型信息的数字信号流的电信号、电磁信号或光信号。
网络链路520通常通过一个或多个网络向其它数据设备提供数据通信。例如。网络链路520可以通过本地网络522提供到主计算机524或者到由因特网服务提供商(ISP)526操作的数据设备的连接。ISP 526又通过现在通常称为“因特网”528的全球分组数据通信网络提供数据通信服务。本地网络522和因特网528都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路520上并通过通信接口518的信号是传输介质的示例形式,其中信号把数字数据带到计算机系统500或者携带来自计算机系统500的数字数据。
计算机系统500可以通过网络、网络链路520和通信接口518发送消息和接收数据,包括程序代码。在因特网例子中,服务器530可以通过因特网528、ISP 526、本地网络522和通信接口518发送对应于程序的所请求代码。
所接收的代码可以在其被接收时由处理器504执行,和/或存储在存储设备510或其它非易失性储存器中,供随后执行。
在前面的说明书中,本发明的实施例已经参考众多的具体细节进行了描述,这些细节可以从一种实现到另一种实现变化。因而,说明书和附图应当在说明性而不是限制性的意义上考虑。本发明范围的唯一且排他指示,以及申请人预期作为本发明范围的内容,是由本申请产生的权利要求集合的字面和等同范围,以这种权利要求产生的具体形式,包括任何后续的校正。

Claims (24)

1.一种用于处理查询的方法,包括:
确定查询的执行涉及特定操作;
响应于确定查询的执行涉及特定操作,生成命令,所述命令包括用来识别要被协处理器读取的输入数据的第一地址数据和用来识别查找向量的第二地址数据作为所述命令的参数;
使得命令存储在存储器中;
由协处理器通过以下来处理所述命令:
从存储器读取命令;
使得输入数据从由第一地址数据指示的位置被读取,其中输入数据包括多个值;
使得查找向量从由第二地址数据指示的位置被读取;
对于所述多个值当中的每个值,在查找向量中识别对应于所述每个值的结果;
基于针对所述多个值当中每个值的所述识别,生成结果数据;
使得结果数据被存储;
其中该方法是由一个或多个计算设备执行的。
2.如权利要求1所述的方法,其中:
命令还包括指示要执行的操作的类型的操作类型数据;
协处理器还通过首先识别操作类型数据以确定操作的类型来处理命令。
3.如权利要求2所述的方法,还包括:
利用操作类型数据确定用来解释输入数据的逻辑;
把输入数据从第一数据类型转换成与第一数据类型不同的第二数据类型。
4.如权利要求1所述的方法,其中:
输入数据包括值数据和计数数据;
值数据中的输入值对应于数据元素,数据元素的个数由计数数据中的计数值指示;
识别查找向量中的结果包括识别对应于所述输入值的结果;
生成结果数据包括生成指示对应于所述输入值的结果的结果指示;
生成结果数据的执行无需识别查找向量中对应于该输入值的结果所述次数。
5.如权利要求1所述的方法,其中命令还包括指示结果数据要存储到哪儿的目的地数据。
6.如权利要求1所述的方法,其中储存器是微处理器的高速缓存。
7.如权利要求1所述的方法,其中使得结果数据被存储还包括使得指示扫描操作命令已完成的完成状态被存储。
8.如权利要求1所述的方法,其中:
确定查询的执行涉及包括所述特定操作和一个或多个其它操作的多个操作;
该方法还包括:
从储存器检索结果数据;
在从储存器检索出结果数据之后,处理需要所述结果数据作为所述一个或多个其它操作的输入的所述一个或多个其它操作。
9.如权利要求1所述的方法,其中:
协处理器是串联连接的多个协处理器当中的第一协处理器;
使得结果数据被存储包括使得结果数据被发送到所述多个协处理器当中的第二协处理器的缓冲器;
该方法还包括:
在第一协处理器执行查询的一部分的时候,由第二协处理器从缓冲器读取结果数据,及
基于该结果数据,由第二协处理器生成第二结果数据。
10.如权利要求1所述的方法,其中确定、生成和使得步骤是由执行查询执行引擎的通用微处理器执行的,其中通用微处理器与协处理器分离。
11.如权利要求1所述的方法,其中:
生成命令包括生成包括所述命令的多个命令;
使得命令被存储在存储器中包括,对于所述多个命令中的每个命令,使得所述每个命令被存储在存储器中;
所述多个协处理器中的每个协处理器选择所述多个命令当中的一命令。
12.如权利要求1所述的方法,其中:
包括在命令中的第一地址数据包括一个或多个虚拟地址;
该方法还包括使得所述一个或多个虚拟地址被协处理器用来读取输入数据的一个或多个物理地址代替。
13.如权利要求1所述的方法,还包括确定是否满足一个或多个标准,其中使得命令被发送到协处理器只有在满足所述一个或多个标准时才执行。
14.如权利要求13所述的方法,其中所述一个或多个标准是基于查找向量的尺寸或者为了执行特定操作而需要被协处理器读入的数据量。
15.如权利要求1所述的方法,其中基于识别生成结果数据包括生成位向量,其中位向量中的每一位指示是否在查找向量中找到所述多个值当中的一值。
16.一种配置为执行以下步骤的协处理器:
接收命令,所述命令(1)由执行与查询处理相关的指令的微处理器生成并且(2)包括用来识别要被协处理器读取的输入数据的第一地址数据和用来识别查找向量的第二地址数据作为命令的参数;
从存储器读取该命令;
使得输入数据从由第一地址数据指示的位置被读取,其中输入数据包括多个值;
使得查找向量从由第二地址数据指示的位置被读取;
对于所述多个值中每个值,在查找向量中识别对应于所述每个值的结果;
基于针对所述多个值中每个值的所述识别,生成结果数据;
使得微处理器被告知结果数据。
17.如权利要求16所述的协处理器,其中:
命令还包括指示要执行的操作的类型的操作类型数据;
协处理器还配置为执行识别操作类型数据以确定操作的类型的步骤。
18.如权利要求17所述的协处理器,其中协处理器还配置为执行步骤:
利用操作类型数据来确定用来解释输入数据的逻辑;
把输入数据从第一数据类型转换成与第一数据类型不同的第二数据类型。
19.如权利要求16所述的协处理器,其中命令还包括指示结果数据要被存储到哪儿的目的地数据。
20.如权利要求16所述的协处理器,其中储存器是微处理器的高速缓存。
21.如权利要求16所述的协处理器,其中:
输入数据包括值数据和计数数据;
值数据中的输入值对应于数据元素,其个数由计数数据中的计数值指示;
识别查找向量中的结果包括识别对应于所述输入值的结果;
生成结果数据包括生成指示对应于所述输入值的结果的结果指示;
生成结果数据的执行无需识别查找向量中对应于所述输入值的结果所述次数。
22.如权利要求16所述的协处理器,其中:
协处理器是串联连接的多个协处理器当中的第一协处理器;
使得结果数据被存储包括使得结果数据被发送到所述多个协处理器当中的第二协处理器的缓冲器。
23.如权利要求16所述的协处理器,其中:
包括在命令中的第一地址数据包括一个或多个虚拟地址;
协处理器还配置为执行使得一个或多个虚拟地址被协处理器用来读取输入数据的一个或多个物理地址代替的步骤。
24.如权利要求16所述的协处理器,其中基于识别生成结果数据包括生成位向量,其中位向量中的每一位指示是否在查找向量中找到所述多个值当中的一值。
CN201380049816.7A 2012-10-02 2013-06-14 半连接加速 Active CN104662538B (zh)

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,013 US9292569B2 (en) 2012-10-02 2013-02-26 Semi-join acceleration
US13/778,013 2013-02-26
PCT/US2013/045881 WO2014055138A1 (en) 2012-10-02 2013-06-14 Semi-join acceleration

Publications (2)

Publication Number Publication Date
CN104662538A true CN104662538A (zh) 2015-05-27
CN104662538B CN104662538B (zh) 2018-05-18

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 Before (2)

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 用于表扫描加速的硬件

Family Applications After (4)

Application Number Title Priority Date Filing Date
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)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107766526A (zh) * 2017-10-26 2018-03-06 中国人民银行清算总中心 数据库访问方法、装置及系统
CN110941636A (zh) * 2018-09-21 2020-03-31 华为技术有限公司 数据检索方法及装置
CN111399905A (zh) * 2019-01-02 2020-07-10 上海寒武纪信息科技有限公司 运算方法、装置及相关产品

Families Citing this family (128)

* 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
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
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 (4)

* 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
US20070078812A1 (en) * 2005-09-30 2007-04-05 Oracle International Corporation Delaying evaluation of expensive expressions in a query
CN101944077A (zh) * 2010-09-02 2011-01-12 东莞市泰斗微电子科技有限公司 一种主处理器和协处理器之间的通讯接口及其控制方法
CN201804331U (zh) * 2010-09-21 2011-04-20 北京同有飞骥科技股份有限公司 一种基于协处理器的重复数据删除系统

Family Cites Families (134)

* 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
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
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 (4)

* 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
US20070078812A1 (en) * 2005-09-30 2007-04-05 Oracle International Corporation Delaying evaluation of expensive expressions in a query
CN101944077A (zh) * 2010-09-02 2011-01-12 东莞市泰斗微电子科技有限公司 一种主处理器和协处理器之间的通讯接口及其控制方法
CN201804331U (zh) * 2010-09-21 2011-04-20 北京同有飞骥科技股份有限公司 一种基于协处理器的重复数据删除系统

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107766526A (zh) * 2017-10-26 2018-03-06 中国人民银行清算总中心 数据库访问方法、装置及系统
CN107766526B (zh) * 2017-10-26 2020-04-28 中国人民银行清算总中心 数据库访问方法、装置及系统
CN110941636A (zh) * 2018-09-21 2020-03-31 华为技术有限公司 数据检索方法及装置
US11620082B2 (en) 2018-09-21 2023-04-04 Huawei Technologies Co., Ltd. Data retrieval method and apparatus
CN111399905A (zh) * 2019-01-02 2020-07-10 上海寒武纪信息科技有限公司 运算方法、装置及相关产品

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
CN104662534B (zh) 2018-05-25
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
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
CN104662538A (zh) 半连接加速
JP6507245B2 (ja) データベース検索システム及びデータベース検索方法
EP2885728B1 (en) Hardware implementation of the aggregation/group by operation: hash-table method
US6173369B1 (en) Computer system for processing multiple requests and out of order returns using a request queue
JP2013521570A (ja) ガーベッジコレクションに対するcpuサポート
CN102129425B (zh) 数据仓库中大对象集合表的访问方法及装置
CN106557367A (zh) 用于为计算资源提供粒度化服务质量的装置、方法和设备
CN103885893A (zh) 用于访问内容寻址存储器的技术
CN104252336A (zh) 基于解码时间指令优化来形成指令组的方法和系统
EP3120266A1 (en) Ozip compression and decompression
CN108475266A (zh) 用来移除匹配文档的匹配修复
CN112930532A (zh) 控制合并操作的存储访问
US10621095B2 (en) Processing data based on cache residency
US6240507B1 (en) Mechanism for multiple register renaming and method therefor
CN115713189A (zh) 一种工单分拨修正方法、设备以及系统
CN114048847A (zh) 一种图神经网络数据缓存方法、装置、设备及存储介质
CN110909029A (zh) 基于Nosql实现缓存的方法及介质
US20240004954A1 (en) Computer-implemented accumulation method for sparse matrix multiplication applications
CN117472840B (zh) 多核系统以及用于多核系统的数据处理的方法
US7596680B2 (en) System and method for encoding and decoding architecture registers
CN117472840A (zh) 多核系统以及用于多核系统的数据处理的方法
CN114127709A (zh) 对文本数据的高效存储和取回
CN115170267A (zh) 基于Pika的对账方法、基于Pika的对账设备及存储介质
JPS62206627A (ja) 文字列管理方式

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