CN104662538B - 半连接加速 - Google Patents
半连接加速 Download PDFInfo
- Publication number
- CN104662538B CN104662538B CN201380049816.7A CN201380049816A CN104662538B CN 104662538 B CN104662538 B CN 104662538B CN 201380049816 A CN201380049816 A CN 201380049816A CN 104662538 B CN104662538 B CN 104662538B
- Authority
- CN
- China
- Prior art keywords
- data
- coprocessor
- result
- order
- vector
- 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
Links
- 238000012545 processing Methods 0.000 claims abstract description 24
- 239000013598 vector Substances 0.000 claims description 65
- 230000015654 memory Effects 0.000 claims description 46
- 238000003860 storage Methods 0.000 claims description 40
- 238000000034 method Methods 0.000 claims description 37
- 230000009471 action Effects 0.000 claims description 8
- 230000006399 behavior Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 claims 2
- 238000005516 engineering process Methods 0.000 abstract description 8
- 238000004891 communication Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 8
- 238000007906 compression Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000006837 decompression Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000009182 swimming Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000000284 resting effect Effects 0.000 description 1
- 238000009738 saturating Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/082—Associative directories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
- G06F12/1475—Key-lock mechanism in a virtual system, e.g. with translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7885—Runtime interface, e.g. data exchange, runtime control
- G06F15/7889—Reconfigurable logic implemented as a co-processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24561—Intermediate data storage techniques for performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/24569—Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/14—Multichannel or multilink protocols
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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包括指令,当指令被通用微处理器(未绘出)执行时,使得生成协处理器控制块(coprocessor control 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所述的协处理器,其中基于识别生成结果数据包括生成位向量,其中位向量中的每一位指示是否在查找向量中找到所述多个值当中的一值。
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 CN104662538A (zh) | 2015-05-27 |
CN104662538B true 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) |
Families Citing this family (131)
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 (3)
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 | 东莞市泰斗微电子科技有限公司 | 一种主处理器和协处理器之间的通讯接口及其控制方法 |
CN201804331U (zh) * | 2010-09-21 | 2011-04-20 | 北京同有飞骥科技股份有限公司 | 一种基于协处理器的重复数据删除系统 |
Family Cites Families (135)
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 |
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 |
-
2013
- 2013-02-26 US US13/778,013 patent/US9292569B2/en active Active
- 2013-02-26 US US13/778,009 patent/US9063974B2/en active Active
- 2013-02-27 US US13/778,307 patent/US9158810B2/en active Active
- 2013-03-07 US US13/789,524 patent/US9251272B2/en active Active
- 2013-03-14 US US13/828,555 patent/US10223116B2/en active Active
- 2013-03-15 US US13/839,525 patent/US9372813B2/en active Active
- 2013-03-15 US US13/838,542 patent/US9400821B2/en active Active
- 2013-06-14 EP EP13733171.6A patent/EP2904513B1/en active Active
- 2013-06-14 CN CN201380049301.7A patent/CN104662534B/zh active Active
- 2013-06-14 WO PCT/US2013/045881 patent/WO2014055138A1/en active Application Filing
- 2013-06-14 CN CN201810434459.0A patent/CN108664596B/zh active Active
- 2013-06-14 CN CN201380049816.7A patent/CN104662538B/zh active Active
- 2013-06-14 JP JP2015534471A patent/JP6320393B2/ja active Active
- 2013-06-14 WO PCT/US2013/045873 patent/WO2014055137A1/en active Application Filing
- 2013-06-14 EP EP13734557.5A patent/EP2904514B1/en active Active
- 2013-06-27 CN CN201380051875.8A patent/CN104704491B/zh active Active
- 2013-06-27 EP EP13737064.9A patent/EP2904515B1/en active Active
- 2013-06-27 ES ES13737064T patent/ES2880268T3/es active Active
- 2013-06-27 WO PCT/US2013/048110 patent/WO2014055145A1/en active Application Filing
- 2013-07-22 US US13/947,674 patent/US9557997B2/en active Active
- 2013-09-30 WO PCT/US2013/062718 patent/WO2014055443A1/en active Application Filing
- 2013-09-30 EP EP13777395.8A patent/EP2904521B1/en active Active
- 2013-09-30 CN CN201380057680.4A patent/CN104769591B/zh active Active
- 2013-10-01 CN CN201380051672.9A patent/CN104756091B/zh active Active
- 2013-10-01 EP EP13777400.6A patent/EP2904499B1/en active Active
- 2013-10-01 CN CN201380057937.6A patent/CN104769561B/zh active Active
- 2013-10-01 WO PCT/US2013/062859 patent/WO2014055512A1/en active Application Filing
- 2013-10-01 EP EP13783718.3A patent/EP2904500B1/en active Active
- 2013-10-01 WO PCT/US2013/062880 patent/WO2014055526A1/en active Application Filing
-
2015
- 2015-05-11 US US14/709,302 patent/US9542443B2/en active Active
- 2015-12-10 US US14/964,805 patent/US10055224B2/en active Active
Patent Citations (3)
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 | 东莞市泰斗微电子科技有限公司 | 一种主处理器和协处理器之间的通讯接口及其控制方法 |
CN201804331U (zh) * | 2010-09-21 | 2011-04-20 | 北京同有飞骥科技股份有限公司 | 一种基于协处理器的重复数据删除系统 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104662538B (zh) | 半连接加速 | |
CN107851123B (zh) | 在存储器中虚拟列单元内具体化表达式以加速分析查询 | |
US9778967B2 (en) | Sophisticated run-time system for graph processing | |
US11455304B2 (en) | Graph-based predictive cache | |
US9304835B1 (en) | Optimized system for analytics (graphs and sparse matrices) operations | |
US10459727B2 (en) | Loop code processor optimizations | |
CN108140040A (zh) | 存储器中数据库的选择性数据压缩 | |
CN107526645A (zh) | 一种通信优化方法及系统 | |
US11144319B1 (en) | Redistribution of architected states for a processor register file | |
US10592252B2 (en) | Efficient instruction processing for sparse data | |
US11157415B2 (en) | Operation of a multi-slice processor implementing a unified page walk cache | |
CN109446225A (zh) | 数据缓存方法、装置、计算机设备及存储介质 | |
US10831775B2 (en) | Efficient representation, access and modification of variable length objects | |
CN113434265A (zh) | 工作流调度方法、服务器和介质 | |
US20170192896A1 (en) | Zero cache memory system extension | |
WO2022260991A1 (en) | Object data stored out of line vector engine | |
US9811845B2 (en) | System for accelerated price master database lookup | |
CN110909029A (zh) | 基于Nosql实现缓存的方法及介质 | |
US20070083549A1 (en) | Method and mechanism for providing a caching mechanism for contexts |
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 |