CN104662534B - 用于表扫描加速的硬件 - Google Patents
用于表扫描加速的硬件 Download PDFInfo
- Publication number
- CN104662534B CN104662534B CN201380049301.7A CN201380049301A CN104662534B CN 104662534 B CN104662534 B CN 104662534B CN 201380049301 A CN201380049301 A CN 201380049301A CN 104662534 B CN104662534 B CN 104662534B
- Authority
- CN
- China
- Prior art keywords
- data
- coprocessor
- scan operation
- result
- operation order
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012545 processing Methods 0.000 claims abstract description 18
- 239000013598 vector Substances 0.000 claims description 54
- 230000015654 memory Effects 0.000 claims description 50
- 238000000034 method Methods 0.000 claims description 37
- 230000009471 action Effects 0.000 claims description 8
- 230000006399 behavior Effects 0.000 claims description 5
- 230000003139 buffering effect Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 3
- 230000001737 promoting effect Effects 0.000 claims 3
- 238000006243 chemical reaction Methods 0.000 claims 2
- 230000000052 comparative effect Effects 0.000 claims 2
- 235000013399 edible fruits Nutrition 0.000 claims 1
- 238000005516 engineering process Methods 0.000 abstract description 8
- 238000004891 communication Methods 0.000 description 16
- 230000006837 decompression Effects 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000010408 sweeping Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/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
- 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/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,009的优先权;该申请No.13/778,009要求在2012年10月2日提交的美国临时申请No.61/709,142的优先权,这两个申请的内容通过引用的方式并入本文,如同完全在此阐述一样。
本申请涉及在2013年2月26日提交的美国专利申请No.13/778,013,该申请的内容通过引用的方式并入本文,如同完全在此阐述一样。
技术领域
本发明一般地涉及处理查询,并且更具体地,涉及在一个或多个协处理器中使用定制硬件来执行为处理该查询所需的一个或多个操作。
背景技术
这部分所描述的方法是能够实行的方法,但不一定是之前已经构想出的或已经实现的方法。因此,除非另有指出,否则不应这样假定:这部分所描述的任何方法仅仅由于它们包含于这部分内而算作现有技术。
对数据库发出的查询典型地将诸如关系表的一个或多个数据库对象作为目标。通常,存取按关系表组织的数据涉及扫描该关系表或其至少一部分。常见的SQL查询是针对数据库表需要过滤器的SQL查询,比如下面所示:
select EMPLOYEE from T_EMPLOYEES where HIRE_YEAR=′2012′
在本例中,在该数据库表T_EMPLOYEES中搜索受雇于2012年的所有雇员。该搜索(或“扫描”)通过在一个或多个微处理器上运行的软件来完成,该一个或多个微处理器执行一系列指令以在该表中搜索该指定值,在本例中该指定值为“2012”。第一步骤在对大的数据库运行分析应用时往往是性能瓶颈,因为该步骤必须在整个表上运行,而该表可以是数太字节大小。后续的步骤将在满足扫描中的准则集(在上例中为受雇于2012年的雇员)的第一扫描步骤的过滤的子集上进行。因此,机器每单位时间能够过滤的行数是该机器重要的性能度量。该度量被称为“扫描速度”。
用于处理查询(例如,涉及扫描表的查询)的方法依赖于软件技术,其中该软件在通用微处理器上执行(或“运行”)。
附图说明
在附图中:
图1是示出根据实施例的用于加速表扫描的示例计算机系统的框图;
图2是示出根据实施例的示例协处理器的框图;
图3是示出根据实施例的用于处理查询的过程的流程图;
图4是示出在实施例中的示例查找向量的一部分的框图;以及
图5是示出计算机系统的框图,本发明的实施例可以在该计算机系统上实施。
具体实施方式
在下面的描述中,为了解释的目的,阐明了众多具体的细节以便提供对本发明的全面理解。但是,应当很明显的是,本发明可以在没有这些特定的细节的情况下实施。在其它情况下,众所周知的结构和设备以框图的形式来示出以便避免不必要地使本发明变得晦涩难懂。
总体概况
在实施例中,与查询相关的扫描操作或查找操作以比如与通用微处理器位于同一芯片上的协处理器的硬件来实现。这样,扫描操作由定制硬件来执行,而查询的其它部分由通用微处理器运行软件来处理。让不同的硬件组件执行不同的操作的一个优点是:定制硬件能够更好地处理扫描操作或查找操作所需的大量数据。此外,定制硬件使通用微处理器及其相关联的高速缓存空闲出来以从事于查询的其它部分或者甚至是与处理该查询的软件无关的其它任务。
本发明的实施例并不限定于任何特定的微处理器或图形处理单元(GPU)。
下面的实例将表格作为被扫描的数据对象。但是,并非所有实施例都限定于表格。除了表格之外的数据对象也可以被扫描。
系统概况
图1是示出根据实施例的用于加速查询的处理的示例计算机系统100的框图。计算机系统100包含查询执行引擎110、OS/管理程序(Hypervisor)120、协处理器130和存储器140。尽管图中仅示出单个协处理器130,系统100可以包含多个协处理器。
查询执行引擎110和管理程序120是驻留于存储器(例如,DRAM和/或高速缓冲存储器)内且包含由通用微处理器执行的指令的程序。查询执行引擎110包含一个或多个软件组件,并且可以与不是查询执行引擎110的一部分的一个或多个其它软件组件通信,以便执行查询以生成该查询的结果。查询执行引擎110可以被配置用于重写查询(例如,SQL查询)以生成查询执行引擎110能够执行的重写的查询。作为选择,另一个软件组件接收原始查询,基于原始查询来生成重写的查询,并且将重写的查询传递给查询执行引擎110以进行处理。
查询执行引擎110可以被配置用于处理的查询类型的非限制性实例包括SQL查询和XML查询,比如XPath查询和XQuery查询。查询执行引擎110被配置用于处理的至少一种查询类型是要求对对象或其一部分进行扫描的查询。如同前面所述的,被扫描的对象的非限制性实例是逻辑上按照一个或多个列和多个行来组织的关系表。虽然数据在逻辑上可以按照单个表来组织,但是数据也可以非常不同地按照诸如硬盘驱动器或闪存设备的永久存储器来组织。例如,表格的数据可以进行分割,或者表格的不同列可以存储在完全不同的存储位置内。
管理程序120充当在查询执行引擎110与协处理器130之间的接口。换言之,由查询执行引擎110对协处理器130发出的命令经由管理程序120来发出。因而,查询执行引擎110通过对OS/管理程序120作出API调用来在管理程序接口上发出命令。
管理程序是允许多个操作系统(“客户”)在主机计算机上同时运行的硬件虚拟化技术。管理程序给客户操作系统提供虚拟操作平台,并且管理客户操作系统的执行。各种操作系统的多个实例可以共享虚拟的硬件资源。管理程序可以安装于服务器硬件上,具有运行客户操作系统的功能,其中客户操作系统自身充当服务器。
一种类型的管理程序直接在主机的硬件上运行,用于控制硬件并且管理客户操作系统。从而,客户操作系统在管理程序之上的另一个层面上运行。另一种类型的管理程序在典型的操作系统环境内运行。以该类型的管理程序层作为不同的第二软件层面,客户操作系统在硬件之上的第三层面上运行。换言之,第一类型的管理程序直接在硬件上运行,而第二类型的管理程序在例如FreeBSD、Linux或Windows的另一个操作系统上运行。
因而,尽管元件120被标记为“OS/管理程序”,但是操作系统和管理程序是不同的实体。为了该描述的目的,OS和管理程序被同等对待。下面对元件120的引用将为“管理程序120”。
尽管管理程序120在一种实施例中被示为计算机系统100的一部分,但是计算机系统100不包含管理程序。在该实施例中,查询执行引擎110在没有首先要求由除了计算机系统100的操作系统(未示出)外的任何其它软件组件进行处理的情况下直接向协处理器130发出命令。
协处理器130是被编程来执行与由执行查询执行引擎110和管理程序120的通用处理器执行的任务分隔开的一个或多个任务的硬件元件。虽然协处理器130与执行查询执行引擎110的通用处理器分离,但是协处理器130可以被看作是查询执行引擎110的一部分,因为协处理器130执行原来由查询执行引擎110执行的一个或多个任务。
在实施例中,协处理器130至少执行将指定的目标值(或值的目标范围)与表中的一系列输入值进行比较的任务。该任务被称为扫描操作并且在下文更详细地描述。在实施例中,协处理器130能够将多个指定的目标值(或者多个指定的目标范围)与表中的一系列输入值或数据元素进行比较。
在另一实施例中,协处理器130至少执行确定在特定的值集中是否存在一个或多个值的任务。该一个或多个值可以被用来索引到该特定的值集之内,使得不需要针对该一个或多个值中的每个值来对该特定的值集进行扫描。在该实施例中,协处理器130被编程以高效地执行查找操作,这将在下文更详细地描述。
除了由查询执行引擎110确立或指示的初始参数外,协处理器130在没有来自查询执行引擎110或任何其它软件的干预的情况下执行扫描操作和/或查找操作,直到扫描操作或查找操作(由启动命令指出)完成。在那时,协处理器130向查询执行引擎110发出信号:操作的结果可用。该信号可以是设定标记的形式。管理程序120可以使用该信号在协处理器130的命令队列中插入新的命令。
在实施例中,协处理器130被编程来处理不同的数据类型/格式和元素尺寸。例如,协处理器130可以处理字符串格式的、日期格式的或数字(例如,整数或浮点数)格式的数据。此外,协处理器130处理的数据元素的尺寸可以是特定数量的位(例如,7位)或者特定数量的字节(例如,2字节)。而且,来自特定源(比如表)的数据元素可以为可变长度或固定长度。在一种实施例中,协处理器130接收自对象(比如表)的数据元素可以是一个尺寸的,并且协处理器130执行操作以在执行例如该数据元素与另一个数据元素的比较之前缩小或增大该数据元素的尺寸,比如从该数据元素中去除一个字节,给该数据元素增添9位或者解压该数据元素。
在实施例中,协处理器130驻留于芯片上,也就是,与执行查询执行引擎110的通用微处理器相同的芯片上。协处理器130包含(a)使表数据(或其它数据)从片上或片外存储器流到协处理器130的存储器接口以及(b)执行扫描操作和/或查找操作的计算块。例如,在扫描操作的情形中,计算块作用于表数据上以确定在表数据中是否出现了指定的值或值范围。因而,一组比较器被用来确定传入流的每个元素是否等于搜索值或者位于所搜索的值范围之内。在该组比较器中的每个比较器可以同时执行比较操作。因而,协处理器130可以同时执行多个比较操作。在实施例中,协处理器130被配置用于执行多种类型的比较,例如,一个4字节比较、两个2字节比较、四个1字节比较,和/或一个2字节与一个1字节的比较。协处理器130通过存储器接口将搜索结果发送给片上存储器或片外存储器。
如图1所示,存储器140存储命令142、输入数据144和输出数据146。反映于命令142中的命令指的是(1)用于存储至少一部分输入数据144的存储器140中的位置以及(2)与命令对应的操作(或多个操作)的结果(由协处理器130生成)将在存储器140中被存储的位置。
在实施例中,协处理器130包含用于存储一个或多个命令的一个或多个地址的命令队列。在不忙时,协处理器130从命令队列中选择一个或多个地址(由管理程序120插入),以便在存储器(例如,存储器140)中检索该一个或多个命令(例如,反映于命令142中)。
协处理器控制块
在实施例中,查询执行引擎110包含在由通用微处理器(未示出)执行时促使生成协处理器控制块(CCB)的指令。CCB是表示由查询执行引擎110发出的命令且包含协处理器被配置用于读取并处理的数据的数据结构。在实施例中,CCB包含指示协处理器130将要执行的操作的类型的命令类型数据以及与由该命令类型数据指示的操作对应的一个或多个操作数。如果协处理器130仅执行一个操作,则命令类型数据可以不是在CCB中的可用操作数。作为选择,如果协处理器被配置用于仅执行一个操作,则协处理器130可以忽略命令类型数据。
命令类型数据指示协处理器130将使用哪个逻辑来处理命令。因而,不同的命令类型对应于由协处理器130实现的不同逻辑。例如,扫描操作要求协处理器130执行第一逻辑,而查找操作要求协处理器130执行与第一逻辑不同的第二逻辑。
在CCB中指出的操作数可以是以下两种类型之一:立即操作数或间接操作数。立即操作数是在协处理器于没有首先要求翻译操作数的情况下执行比如存储器查找的操作时能够由协处理器立即使用的操作数。在扫描操作的情况下,立即操作数的一个实例是用于执行与表数据中的数据元素的比较的4字节整数。间接操作数是在协处理器能够执行指定的操作之前必须首先被翻译或被查找的操作数。间接操作数的一个实例是物理地址,该物理地址指示表数据存储于何处(例如,在存储器140中)以由协处理器执行操作,无论是扫描操作还是查找操作。
在扫描操作的情况下,在CCB中指出的(扫描操作的)操作数包括:(a)指示被用来执行与表数据中的数据进行比较的数据的比较数据,以及(b)指示表数据位于何处的位置数据(例如,在存储器140中的输入数据144)。
比较数据可以是任意类型的数据,比如数字、日期、字符或字符串。比较数据可以是单个值和/或值范围。另外,比较数据可以指示多个值和/或多个值范围。例如,查询可以请求查看收入低于$30,000的雇员的以及收入在$100,000到$130,000之间的雇员的姓名。在本例中,比较数据指示范围0~30,000以及范围100,000~130,000。
位置数据可以是单个地址或多个地址,比如起始地址和结束地址或者起始地址和相对起始地址的偏移。在位置数据中指出的每个地址都可以是虚地址、实地址或物理地址。在实施例中,管理程序120以第二位置数据来替代在CCB中指出的位置数据。例如,(例如客户)操作系统识别在CCB中指出的位置数据,其中该位置数据是虚地址,并且以实地址来替代该虚地址。操作系统然后将CCB发送给管理程序120。管理程序120在映射表中查找被映射到实地址的物理地址,并且在CCB中以物理地址来替代实地址。
在实施例中,CCB还包含指示协处理器130要将由CCB指示的操作的执行结果发送到何处的输出位置数据。在图1中,输出位置数据将指向存储器140内的输出数据146。如果多个微处理器被集成于同一芯片上并且每个微处理器都具有它自己的私有高速缓存,这会是有益的。因而,如果用于执行查询执行引擎110的特定的通用微处理器是同一芯片上的多个通用微处理器之一,并且每个微处理器与不同的(例如,L3)高速缓存关联,则查询执行引擎110可以指定与该特定的通用微处理器邻接的或在其附近的高速缓存,作为在CCB中的参数。因而,作为协处理器130将操作的结果发送给RAM的替换,协处理器130可以(基于在CCB中指出的输出位置数据)将结果不仅发送给高速缓存,而且还发送给与查询执行引擎110“最近”的特定的高速缓存。这样,查询执行引擎110没有被要求来请求(a)来自RAM的、(b)来自另一个微处理器的(或内核的)高速缓存的或者(c)来自为多个内核共享的共享高速缓存的结果,上述三种方式中的每一个都会比从微处理器的自己的(私有的)高速缓存中存取数据慢得多。相反,查询执行引擎110被允许指示由一个或多个硬件元件(即,在该实施例中为协处理器)执行的操作的结果将被存储于何处。
协处理器
一旦协处理器130经由管理程序120的接口接收到(或者直接来自查询执行引擎110的)命令(例如,以CCB的形式),协处理器130就执行与查询执行引擎110发出原始命令的线程异步的命令。如果协处理器130接收到多个命令,则协处理器130可以按照循环调度(round robin)的方式调度该多个命令来执行。某些命令可以并行地执行。
在实施例中,用于命令的输入数据(例如,关系数据)经由接口来提取(到查询执行引擎110),并且命令的结果(即,协处理器130基于输入数据来生成的结果)经由该接口来写出。
在实施例中,协处理器130促使完成状态在每个命令结束时经由接口写出到接口中的完成数据结构内。查询执行引擎110可以使用完成数据结构来与查询执行引擎110的一个或多个线程重新同步。
图2是示出根据实施例的示例协处理器200的框图。协处理器200可以是在图1中的协处理器130。协处理器200包含存储器接口210、命令调度器220、解压器230、查询管道240和消息管道250。消息管道250处理存储器拷贝和消息传递。在解压器230解压了压缩的输入数据(例如,来自关系表的数据)之后,查询管道240处理一个或多个查询命令,比如扫描命令或查询命令。
解压器230可以被配置为仅解压以单一格式压缩的数据。作为选择,解压器230可以被配置为解压以一种格式压缩的数据以及以另一种格式压缩的其它数据。在实施例中,协处理器200不包含解压器230。在协处理器200接收数据时,如果协处理器200接收到的数据不是压缩的(例如,是已经解压的),则解压可以不是必需的。此外,如果协处理器200被配置用于在压缩数据上直接操作,不必首先解压该压缩数据,则即使对于压缩数据,解压也可以是非必需的。
管道240和管道250的每个都与不同的命令队列集关联,并且可任选地与不同的命令格式集关联。管理程序120被配置用于确保:命令(反映于CCB中)被定向到正确管道的命令队列。在CCB中的标记位可以指出CCB是消息命令还是查询命令。
管道240和管道250的每个都可以是多线程的,并且能够一次执行多个命令。多线程的程度对于软件是不公开的。命令调度器220可以对可用线程调度命令,假定该命令是可并行的。如果给定的命令需要串行化于另一个命令之后,则这两个命令可以被放置于同一命令队列内,并且在两个命令中可以设置适当的串行化标记。
尽管未示出,协处理器200包含一定数量的存储器,用于在数据经由存储器接口210流入时存储数据,或者用于存储在查找操作中使用的数据,比如查找向量,其实例之一为布隆过滤器(Bloom Filter)。由于目前的芯片在很大程度上由用于主要内核或通用微处理器的一个或多个高速缓存构成,协处理器200的存储器的大小可以是很小的(例如,4KB)。
在查询执行引擎110“查看”表数据关系并对其执行操作时,协处理器200仅“看见”数据的向量或单维数组或者在其上操作。换言之,协处理器200不“查看”多个列或行标识符。更确切地,对于数据在逻辑上被如何组织或存储,协处理器200是不知道的。因此,在给协处理器200提供指令时,查询执行引擎110确保由协处理器200执行的任何操作的输出按照特定的顺序来存储。如若不是,查询执行引擎110将不清楚输出与表的哪一部分对应。用以保持排序的一种方式是让查询执行引擎110保持对哪个表数据集与哪个CCB对应的跟踪,其中每个CCB都包含唯一的CCB标识符。然后,由协处理器200基于特定的CCB来生成的输出包含该特定CCB的标识符,以允许查询执行引擎110来确定输出与逻辑表的哪一部分对应。例如,查询执行引擎110可以存储使雇员(Employee)表的行1001-2000与CBB标识符432899关联起来的关联数据。协处理器200接收并处理具有标识符432899的CCB,以生成存储于特定位置的输出。
作为选择,代替保持对CCB标识符的跟踪,查询执行引擎110存储使指示表的一部分(例如,雇员表的行1001-2000)的表数据与指示由协处理器200生成的输出将要存储于何处的输出位置数据(例如,物理地址1298737+4KB)关联的关联数据。后来,当查询执行引擎110检查存储于该存储位置的输出时,查询执行引擎110使用关联数据来确定表的哪个部分对应于该输出。因而,即使协处理器200在不同的时间在表的不同部分上操作,并且即使查询执行引擎110可能指导多个协处理器在表的不同部分上操作,该操作可能同时执行,查询执行引擎110都能够保持对输出顺序的跟踪。
处理查询
图3是示出在实施例中的用于处理要求扫描操作的查询的过程300的流程图。在块310,查询执行引擎110接收将一个或多个数据对象(比如表)作为目标以及要求对该一个或多个数据对象中的至少一个进行扫描操作的查询。例如,查询执行引擎110可以处理SQL查询,以生成包含一个或多个数据库操作(包括扫描操作)的、查询执行引擎110被配置用于执行或指导一个或多个其它软件组件来执行的重写查询。作为选择,另一个软件组件接收原始查询并且生成查询执行引擎110被配置用于处理的重写查询。
在块320,查询执行引擎110基于一个或多个准则来确定在处理查询时是否涉及协处理器130。该一个或多个准则可以指示之前是否已生成并缓存结果,对表的索引是否存在并且是否可用于回答该查询来代替扫描表、表的尺寸等。例如,如果需要扫描的表的尺寸是相对小的,则相比在没有涉及协处理器130的情况下执行查询,涉及协处理器130可能要求更多的工作(例如,以执行查询执行引擎110的指令的通用微处理器的使用的形式)或者比在花费更多的时间。
除此以外或作为选择,该一个或多个准则可以指示按照不同的方式来处理查询(或重写查询)的相对成本。例如,查询执行引擎110可以包含用于估计在不同的执行方案下执行查询的成本的成本估计器组件,不同的执行方案比如使用索引、在不使用协处理器130的情况下扫描表以及使用协处理器130来扫描表。然后,查询执行引擎110根据成本来选择最廉价的执行方案。“成本”可以基于一个或多个因素,例如,CPU使用情况、存储器使用情况、I/O使用情况和网络I/O使用情况。
如果查询执行引擎110确定在执行查询时涉及协处理器130,则过程300进入块330。
在块330,查询执行引擎110给管理程序120发送一个或多个指令的地址、输入数据的地址,以及输出数据将要被存储的地址。该一个或多个指令可以是查询执行引擎110生成的CCB的形式。管理程序120将地址由虚地址翻译成物理地址,并且将该物理地址放置于协处理器130的命令队列或缓冲区内。
在查询执行引擎110促使该一个或多个指令被存储于存储器内(并且因而可供协处理器130读取)之后,查询执行引擎110可以执行与查询的执行相关的或者还与另一个查询相关的其它任务。这样,由协处理器130执行的操作与由查询执行引擎110执行的任务异步地执行,该查询执行引擎110由通用微处理器执行。
如上所述,计算机系统100可以包含多个协处理器。因而,查询执行引擎110可以将指令(例如,CCB)发送给多个协处理器中的每个协处理器。这样,扫描操作或查找操作可以被划分成多个“微”操作,允许每个协处理器执行不同的“微”操作。例如,特定的表可以包含10,000行,并且可以有10个协处理器。然后,查询执行引擎110可以生成10个不同的CCB,这10个CCB每个都类似于其它的CCB,只是每个CCB指示用以存取该特定表的不同组的1,000行的不同地址。这样,这10个协处理器在该特定表的不同部分上并行操作。
除此以外或作为选择,块330包含查询执行引擎110基于一个或多个准则来选择多个协处理器的子集来发送CCB。例如,查询执行引擎110可以只需要总共10个协处理器中的3个协处理器来各自执行扫描操作(但是在与每个其它协处理器相关的不同组的表数据上)。查询执行引擎110用来选择一个或多个协处理器的一个或多个准则可以是每个协处理器的当前负荷、每个协处理器的延迟和/或每个协处理器的处理历史。例如,查询执行引擎110选择当前最小“负荷”的或最不繁忙的3个协处理器。协处理器的负荷可以反映于处于协处理器的一个或多个命令队列中的命令数中。因而,等待由特定的协处理器处理的命令越多,该特定的协处理器就变得负荷越大。
在块340,协处理器130接收一个或多个指令,并且执行反映于该一个或多个指令中的一个或多个操作。例如,协处理器130接收CCB,确定反映于该CCB中的操作(或多个操作)的类型,读入完成该操作(或多个操作)必需的任何数据,执行该操作(或多个操作),并且(在块350中)促使操作(或多个操作)的结果被发送给查询执行引擎110。由协处理器130进行的命令执行可以通过由查询执行引擎110(或其代理之一)对协处理器130的一个或多个内部寄存器的写入来触发。
扫描操作
在实施例中,该一个或多个指令指示扫描操作以及存储有表数据的一个或多个地址。协处理器130检索表数据,并且在值或值范围(在该一个或多个指令中指定)与表数据之间执行比较。协处理器130通过存储器(例如,存储器140)来从查询执行引擎110中请求表数据,该存储器可以是系统中的动态RAM或者芯片上的高速缓冲存储器。表数据可以按块存储,所述块可以相对较大,比如64KB或更大。协处理器130可以将这些块中的每个块作为单维数组来存取。在列式数据库中,数据处于单维数组中,并且可以由协处理器130容易地读取。在行优先的数据库中,数据可以在由协处理器130处理之前首先被变换为列优先的格式。
如果表数据跨越在存储器中不连续的块,则协处理器130单独请求每个块(作为单独的作业)。在此情形中,查询执行引擎将每个作业的结果(由协处理器130生成的)“拼接(stitch)”在一起。例如,在行优先的数据库中,数据将为跨步的,并且协处理器130将会每隔N个数据就选择一个,其中N在命令中指定。
协处理器130可以“即时”,也就是,在表数据流入协处理器130时执行比较。一旦在表数据中的数据元素与在该一个或多个指令中指定的目标值或者值的目标范围进行比较,协处理器130就可以(立即或最终)使用来自表数据的新的数据元素来覆写用于存储该数据元素的存储器。
可以配置协处理器以使其执行的比较操作的类型的实例包括大于(>)、小于(<)、等于(==)、不等于(!=)、大于或等于(>=)以及小于或等于(<=)。
语义感知式压缩(SEMANTIC-AWARE COMPRESSION)
在实施例中,协处理器130被配置用于对压缩数据进行操作。使用一种或多种非语义感知式的压缩技术来压缩某些数据,而可以使用一种或多种语义感知式压缩技术来压缩其它数据。使用非语义感知式的压缩技术压缩的数据要求在可以对已解压数据进行操作之前首先解压。使用语义感知式压缩技术压缩的数据可以不必在操作(例如,数字或字符串比较)执行之前进行解压。语义感知式压缩技术的一个实例是行程长度编码(RLE)。
RLE是一种数据压缩的形式,其中将数据行程(runs)(也就是,相同的数据值出现于许多连续的数据元素中的序列)存储为单个数据值和计数,而不是存储为原始行程的数据压缩的形式。这对于含有许多此类行程的数据最有用。例如,表的列可能含有下列序列的部门标识符:
A A A A A A B B B C C C C C C C C C D D D D D A A A A
将RLE数据压缩算法应用于上述序列可以得出以下输出:6A3B8C5D4A。该行程长度编码仅以10个字符来表示原始的26个字符。在RLE中,单个数据值在输入序列中的行程越长,压缩程度就越大。
返回至块340,表数据可以是行程长度编码的。因而,需要读入协处理器130内的表数据的数量以及协处理器130需要针对行程长度编码的表数据执行的比较次数可以大大小于表数据不是行程长度编码的情形。考虑上述实例,代替执行26次比较(即,26个字符中的每个字符一次),协处理器130将仅需执行5次比较。
针对行程长度编码的数据来执行扫描操作的结果自身可以是行程长度编码的,该结果可以最终由查询执行引擎110来处理。考虑上述实例,确定特定表的行是否包含部门标识符“A”的结果可以是6Y16N4Y,其中“Y”指示确定的肯定结果,而“N”指示确定的否定结果。
作为选择,针对行程长度编码的数据来执行扫描操作的结果可以不是行程长度编码的。而是,结果可以被“解压”。考虑上述实例,确定特定表的行是否包含部门标识符“A”的结果可以是YYYYYYNNNNNNNNNNNNNNNNYYYY。在该实施例中,尽管在扫描操作期间针对字符“C”来执行单个比较,但是协处理器130对于该行程长度编码的数据元素生成了8个否定指示(例如,“N”或“0”)。
查找操作
SQL查询经常需要交叉引用数据库中的多个表。处理这样的查询典型地包括交集操作。当前,交集操作由运行于通用微处理器上的软件执行,其中当被连接的表列的基小时,该软件使用向量查找(例如,布隆过滤器查找)。根据实施例,向量查找(或查找操作)以硬件来实现,这会比软件实现方式快得多。
因而,在实施例中,(块330的)一个或多个指令指示查找操作、存储有表数据的一个或多个地址,以及存储有查找向量或数组的一个或多个地址。存储有表数据(或查找向量)的一个或多个地址可以是两个地址(例如,起始地址和结束地址)或者具有偏移的单个地址。协处理器130促使查找向量和表数据被发送给协处理器130,并且对于表数据中的每个数据元素,在查找向量中执行数据元素的查找。换言之,协处理器130使用数据元素(或者数据元素的散列)来在查找向量中识别位置,并且在查找向量的该位置处检索数据。
要求查找操作的示例查询
可能要求查找操作的查询的一个实例是请求有关居住于“富裕”的邮政编码区(zip code)内的“贫困”人口的信息的查询。“贫困”人员可以被看作是每年收入低于$30,000的人,而“富裕”的邮政编码区可以被看作是其中中间薪酬超过$100,000的邮政编码区。在本例中,协处理器130要求来自至少两个数据对象的数据:查找向量和人员(Person)表。查找向量(例如,以单个位)指示邮政编码区是否“富裕”。查找向量可以被预先计算出(即,在接收到查询之前),或者可以响应于接收到查询而计算出。
人员表含有有关众多人员的信息,其中该表包含至少三列:一列为每个人的姓名,一列为每个人的薪酬,以及一列为每个人的邮政编码区。在一个方面中,指示邮政编码区是富裕还是贫困的数据是维度表,而含有有关每个人的信息的人员表是事实表。维度表典型地远小于事实表。在本例中,查找向量可以基于维度表来生成。与此相关地,事实表可以由多个数据对象(例如,表)表示:一个数据对象可以含有有关每个人的薪酬的信息,而另一个数据对象可以含有有关每个人的邮政编码区的信息。
查找向量
查找向量的一个实例是布隆过滤器,该过滤器是被用来检验元素是否为集合的成员的概率数据结构。虽然在使用布隆过滤器时可能误报,但是不会漏报。布隆过滤器与一个或多个散列函数关联,每个散列函数将元素映射到在布隆过滤器中的一个数组位置。
但是,查找向量不必是概率性的。例如,如果只有10,000个可能的邮政编码区,并且每个邮政编码区都与指示该邮政编码区是否为“富裕的”单个位关联,则查找向量的尺寸(例如,1.25KB)可以小到足以使整个查找向量装入协处理器130的存储器(例如,SRAM)。因此,为了减小其尺寸,概率查找向量并非是必要的。
图4是示出示例查找向量400的一部分的框图。在查找向量400中的每个位置与不同的邮政编码区关联。换言之,邮政编码区被用来索引到查找向量400中。在查找向量400中的每个位置含有单个位,指示相应的邮政编码区是“富裕”的邮政编码区(“1”)还是“贫困”的邮政编码区(“0”)。
如果查找向量不能够完全装入协处理器130的存储器,则(除了生成概率查找向量外)要么(a)查找向量可以被分开(或被划分),使得协处理器130每次为查找向量的每个部分读入表数据,要么(b)在有多个协处理器的实施例中,不同的协处理器可以一次读入表数据,但是仅针对它存储的查找向量的一部分。
在前一种情形中,如果协处理器130仅能够使例如查找向量的1/4部分装入其存储器,则协处理器130四次(即,协处理器130所读入的查找向量的每个部分各一次)读取指示人员的邮政编码区的表数据。如果人员的邮政编码区在表数据的任一次传递中都没有被识别出,则该人员的结果可以指示否定的判定。表数据的每次传递的结果可以是一个长的位数组,在人员表中指出的每个人用一个位。
在后一种情形中,四个不同的协处理器可以存储查找向量的不同的1/4部分,并且一次性读入指示人员的邮政编码区的表数据,并然后为反映于表数据中的每个邮政编码区执行对查找向量的查找。此外,来自每个协处理器的查找操作的结果可以是一个长的位数组,在人员表中指出的每个人用一个位。
生成扫描或查找操作的结果
在实施例中,协处理器130生成具体输出格式,作为执行反映于一个或多个指令中的一个或多个操作的结果。具体输出格式的一个实例是位向量,其中在该位向量中的每个位置要么指示真要么指示假。例如,如果“10”为目标值,并且比较是确定该目标值是否大于表中的数据值或数据元素,则比较的结果(a)在数据值大于10时为真,并且(b)在数据值小于或等于10时为假。
在向量中的每个位置对应于接收自输入(例如,表)数据的数据值或数据元素。例如,在上述查找操作的实例中,协处理器130生成反映居住于“富裕”的邮政编码区的“贫困”人员的位向量。为了生成该位向量,协处理器130从人员表的邮政编码列中读入数据,并且为在读入数据中指出的每个人且基于查找向量来确定该人是否居住于“富裕”的邮政编码区内。在位向量中的每个位指出在人员表中的不同人是否居住于“富裕”的邮政编码区内。协处理器130随后将该位向量传递给通用微处理器,该通用微处理器使用位向量来识别还被认为是“贫困”的人员。例如,对于居住于富裕的邮政编码区内的每个人(如位向量所示),通用微处理器查找人员表中的相应行,以确定该人是否是“贫困”的。
因为位向量是尺寸相对小的,所以由通用微处理器处理该位向量是相对较快的;比通用处理器直接处理输入数据快得多。而且,存储该位向量所需的高速缓冲存储器空间远小于存储输入数据(例如,一大列数据)所要求的高速缓冲存储器空间。
生成扫描或查找操作的结果
返回至过程300,在块350,协处理器130促使扫描操作(或查找操作)的结果将对查询执行引擎110可用。块350可以包括:协处理器130将操作的结果发送给在来自启动该操作的查询执行引擎110的一个或多个指令中指定的存储器。例如,查询执行引擎110生成乐CCB,并且在该CCB中指出:相应操作的结果将被发送给例如DRAM、共享的L3高速缓存或者具体微处理器(例如,运行查询执行引擎的微处理器或者与生成原始命令的微处理器不同的微处理器)的高速缓存。
块350还可以包括:协处理器130设定标记,该标记在被置位时指示操作已完成。该标记设定充当这样的信号:(1)管理程序120将新的请求插入协处理器130的命令队列中,以及(2)查询执行引擎110检索结果。
作为选择,协处理器130被编程为总是将操作的结果发送给可由查询执行引擎110访问的具体存储器组件(无论是RAM还是高速缓存)。
作为选择,代替使扫描操作的结果对查询执行引擎110可用,协处理器130将结果发送给另一个协处理器。如同前面所述的,计算机系统100可以包含多个协处理器。该多个协处理器可以串联连接。在两个协处理器之间的每个连接都可以包含FIFO缓冲区,使得与“消费”协处理器能够处理结果相比,“生产”协处理器可以更快地生成结果。最终,在“链”上的最后一个协处理器将结果发送给可由查询执行引擎110访问的指定目的地,比如在RAM或高速缓存内。
在块360,查询执行引擎110处理结果,并且执行一个或多个其它操作,以便生成原始查询的最终结果。在协处理器130执行扫描或查找操作时,运行查询执行引擎110的通用微处理器可以是空闲的,或者可以由查询执行引擎110或连同另一个进程一起来使用。例如,查询执行引擎110可以执行一个或多个其它操作,该一个或多个其它操作是查询所要求的或者按照任何方式不与该查询相关而是与另一个查询相关的。
作为扫描操作的一个实例,查询可以请求在具体的日期范围内发起的采购订单的ID和价格。在本例中,协处理器130执行包括读入多个采购订单的日期信息的扫描操作,其中日期信息反映于采购订单表中。扫描操作的结果可以是一系列位(例如,位向量),这些位中的每一个都反映出相应的采购订单是否是在指定的日期范围内发起的。协处理器130将结果发送给可由查询执行引擎110访问的存储器,并且可以通过对查询执行引擎110周期性检查的标记置位来通知查询执行引擎110扫描操作的完成。然后,查询执行引擎110使用这些位在采购订单表中识别出与在指定的日期范围内发起的那些采购订单对应的条目。然后,查询执行引擎110在所识别的条目中识别出ID和价格,并且返回(例如,显示)该信息作为查询的结果。查询还可以指定:查询的结果将要按照价格降序的方式来排序。因而,查询执行引擎110在接收到由协处理器110执行的扫描操作的结果之后执行一个或多个操作。
考虑其中查询将要识别出居住于“富裕”的邮政编码区内的“贫困”人员的查找操作实例,除了指导协处理器130来执行查找操作之外,查询执行引擎110还可以让所指导的协处理器130(或另一个协处理器)对人员表执行扫描操作,以识别出年薪低于$30,000的所有人。扫描操作的结果(像查找操作的结果一样)可以是一系列位(例如,位向量)的形式,其中每个位对应于在人员表中指出的不同的人。在一种实施例中,查询执行引擎110对作为输入的扫描操作的结果和查找操作的结果执行与(AND)操作。作为选择,协处理器130(或另一个协处理器)可以被编程用于执行与(AND)操作。在该实施例中,查询执行引擎110可以创建另一个CCB,在该CCB中,操作数包括查找操作的结果的地址(例如,虚地址)以及扫描操作的结果的地址。
如前所述,查找向量的尺寸可以不是一次完全装入协处理器130的存储器。在前面描述的两种情形之一中,查找向量被划分成四个“微”向量,并且协处理器130单独对每个微向量进行操作,从而要求协处理器130为每个人(从人员表中)读入邮政编码区数据四次。由执行该查找操作的协处理器130产生的总的结果可以包含四个单独的位数组,它们最终在一起求或(OR),以得到单个位数组(同样,在人员表中指出的每个人用一个位)。该或(OR)步骤(该步骤可以包括三次或(OR)操作)可以由查询执行引擎110执行。作为选择,协处理器130可以被编程用于执行或(OR)操作。
在上述两种情形的另一种情形中,查询执行引擎110促使四个不同的协处理器使用查找向量的不同部分来执行查找操作。然后,来自一个协处理器的结果与来自其它协处理器中的每个协处理器的结果求或(OR),以得出单个位数组(在人员表中指出的每个人用一个位)。同样,该或(OR)步骤可以由查询执行引擎110或者由协处理器之一执行。
一旦查询执行引擎110确定了哪些人居住于“富裕的”邮政编码区,查询执行引擎110就使用该信息来确定也被认为是“贫困的”那些人,如同上文所指出的。
虽然以上的描述指的是执行扫描操作或查找操作,但是实施例可以包括:一个协处理器为特定的查询执行扫描操作,而另一个协处理器为特定的查询执行查找操作。因而,多个协处理器可以同时为同一查询来执行,但是执行不同的操作。
本文所描述的实施例的优点在于:通用微处理器可以将数据密集型的操作卸下给与微处理器分开的一个或多个协处理器,以便为其它任务空出微处理器供使用。因而,协处理器可以相对促使协处理器执行操作的查询处理软件异步地进行操作。另外,与通用微处理器运行查询处理软件相比,该一个或多个协处理器可以更加快速地执行那些操作。
硬件概况
根据一种实施例,本文所描述的技术由一个或多个专用计算设备来实现。专用计算设备可以被硬连线以执行这些技术,或者可以包含被永久编程来执行这些技术的、比如一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)的数字电子设备,或者可以包含被编程来依照在固件、存储器、其它存储器或者它们的组合中的程序指令而执行这些技术的一个或多个通用硬件处理器。这样的专用计算设备还可以将定制的硬连线逻辑、ASIC或FPGA与定制编程结合,以完成这些技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、网络设备,或者用于合并硬连线和/或程序逻辑来实现这些技术的任何其它设备。
例如,图5是示出本发明的实施例可以实施于其上的计算机系统500的框图。计算机系统500包含总线502或者用于传输信息的其它通信机构,以及与总线502耦接用于处理信息的硬件处理器504。硬件处理器504可以是例如通用微处理器。
计算机系统500还包含与总线502耦接用于存储信息以及待由处理器504执行的指令的主存储器506,例如,随机存取存储器(RAM)或者其它动态存储设备。主存储器506在待由处理器504执行的指令的执行期间还可以用于存储临时变量或者其它中间信息。这样的指令,在存储于可由处理器504访问的非瞬时存储介质时,使计算机系统500成为被定制用于执行在指令中指定的操作的专用机器。
计算机系统500还包含与总线502耦接用于为处理器504存储静态信息和指令的只读存储器(ROM)508或其它静态存储设备。存储设备510,例如,磁盘、光盘或固态硬盘驱动器,被提供并与总线502耦接,用于存储信息和指令。
计算机系统500可以经由总线502耦接至用于给计算机用户显示信息的显示器512,例如,阴极射线管(CRT)。包含字母数字键和其它键的输入设备514与总线502耦接,用于将信息和命令选择传输给处理器504。另一个类型的用户输入设备是用于将方向信息和命令选择传输给处理器504的并且用于在显示器512上控制光标运动的光标控制516,例如,鼠标、轨迹球或光标方向键。该输入设备典型地在两个轴(第一轴(例如,x)和第二轴(例如,y))上具有两个自由度,这两个自由度允许件指定平面内的位置。
计算机系统500可以使用下列设备来实现本文所描述的技术:定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或结合计算机系统来促使计算机系统500或对其编程使其成为专用机器的程序逻辑。根据一种实施例,此处的技术由计算机系统500响应于处理器504执行包含于主存储器506内的一个或多个指令的一个或多个序列而执行。这样的指令可以从比如存储设备510的另一个存储介质读入主存储器506。包含于主存储器506内的指令序列的执行促使处理器504执行此处所描述的过程步骤。在可替换的实施例中,硬连线电路可以代替软件指令或者与其结合而被使用。
此处所使用的术语“存储介质”指的是存储促使机器按照具体的方式来操作的数据和/或指令的任何非瞬时介质。这样的存储介质可以包含非易失性的介质和/或易失性的介质。非易失性的介质包括光盘、磁盘或固态硬盘驱动器,比如存储设备510。易失性的介质包括动态存储器,比如主存储器506。存储介质的常见形式包括例如软盘、软磁盘、硬盘、固态硬盘驱动器、磁带,或者任何其它磁性数据存储介质、CD-ROM、任何其它光学的数据存储介质、任何具有孔图形的物理介质、RAM、PROM,以及EPROM、FLASH-EPROM、NVRAM、任何其它存储芯片或存储盒。
存储介质不同于传输介质,但可以与传输介质结合起来使用。传输介质参与在存储介质之间传输信息。例如,传输介质包括同轴电缆、铜导线和光纤,包括包含总线502的导线。传输介质还能够采取声波或光波的形式,例如,在无线电波和红外数据通信期间生成的那些波。
各种形式的介质都会参与将一个或多个指令的一个或多个序列输送给处理器504以用于执行。例如,指令最初可以载存于远程计算机的磁盘或固态硬盘驱动器上。远程计算机能够将指令加载到其动态存储器内,并且使用调制解调器经由电话线来发送该指令。计算机系统500本地的调制解调器能够接收电话线上的数据,并且使用红外发射器将数据转换为红外信号。红外检测器能够接收红外信号所携带的数据,并且适当的电路能够将数据放置于总线502上。总线502将数据输送给主存储器506,处理器504从该主存储器506中检索并执行指令。由主存储器506接收的指令可以要么在由处理器504执行之前,要么在其之后可选地存储于存储设备510上。
计算机系统500还包含与总线502耦接的通信接口518。通信接口518提供耦接至与本地网络522连接的网络链路520的双向数据通信。例如,通信接口518可以是综合业务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器,或者用于提供到相应类型的电话线的数据通信连接的调制解调器。作为另一个实例,通信接口518可以是局域网(LAN)网卡,用于提供数据通信连接到可兼容的LAN。还可以实现无线链路。在任何这样的实施方式中,通信接口518发送及接收用于承载表示各种类型的信息的数字数据流的电信号、电磁信号或光信号。
网络链路520典型地通过一个或多个网络来提供到其它数据设备的数据通信。例如,网络链路520可以通过本地网络522提供到主机计算机524的或者到由网络服务提供商(ISP)526运营的数据设备的连接。ISP 526进而通过全球分组数据通信网络(现在常称为“因特网(Internet)”528)来提供数据通信服务。本地网络522和因特网528两者都使用承载数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路520上的且经过通信接口518的信号是传输介质的实例形式,这些信号将数字数据送入和送出计算机系统500。
计算机系统500能够通过网络、网络链路520和通信接口518来发送消息和接收数据,包括程序代码。在因特网的实例中,服务器530可以通过因特网528、ISP 526、本地网络522和通信接口518来发送应用程序的请求代码。
所接收的代码可以在其被接收到时由处理器504执行,和/或被存储于存储设备510或其它非易失性的存储器内,待以后执行。
在前面的详细说明中,本发明的实施例已经参考众多具体的细节进行了描述,这些细节在不同的实施方式之间可以是不同的。因此,本说明书和附图应当被看作是说明性的,而不是限制性的。本发明的范围的独有指标以及本申请人想要其成为本发明的范围的内容,是由本申请按照此类权利要求书发布的具体形式来发布的权利要求书的字面及等效范围,包括任何后续校正。
Claims (25)
1.一种机器实现的用于处理查询的方法,包括:
由微处理器确定所述查询的执行涉及扫描操作;
响应于确定所述查询的执行涉及扫描操作,由所述微处理器生成扫描操作命令,所述扫描操作命令包含用于识别待由协处理器读取的输入数据的地址数据以及用于与所述输入数据进行比较的一个或多个值来作为所述扫描操作命令的参数;
其中,所述微处理器与所述协处理器是分开的;
由所述微处理器促使所述扫描操作命令被存储于存储器内;
由所述协处理器通过以下操作来处理所述扫描操作命令:
从所述存储器中读取所述扫描操作命令;
促使从由所述地址数据指示的位置处读取所述输入数据;
在所述输入数据与所述一个或多个值之间执行比较;
基于所述比较来生成结果数据;
促使所述结果数据被存储。
2.根据权利要求1所述的方法,其中:
所述扫描操作命令还包含指示要执行的操作的类型的操作类型数据;
进一步通过首先识别所述操作类型数据以确定操作的类型来处理所述扫描操作命令。
3.根据权利要求2所述的方法,还包括:
使用所述操作类型数据来确定用来解释所述输入数据的逻辑;
将所述输入数据由第一数据类型转换为与所述第一数据类型不同的第二数据类型。
4.根据权利要求1所述的方法,其中:
所述输入数据包含值数据和计数数据;
在所述值数据中的输入值对应于数据元素,所述数据元素的数量由在所述计数数据中的计数值指示;
将所述输入数据与所述一个或多个值进行比较包括将所述输入值与所述一个或多个值进行比较;
生成所述结果数据包括生成指示所述输入值是否满足所述一个或多个值的结果指示;
生成所述结果数据是在没有将所述输入值与所述一个或多个值进行由所述计数值指示的次数的比较的情况下执行的。
5.根据权利要求1所述的方法,其中所述扫描操作命令还包含用于指示所述结果数据将要存储于何处的目的地数据。
6.根据权利要求1所述的方法,其中促使所述结果数据被存储包括促使所述结果数据被存储于所述微处理器的高速缓存内。
7.根据权利要求1所述的方法,其中促使所述结果数据被存储还包括促使指示所述扫描操作命令已被执行的完成状态被存储。
8.根据权利要求1所述的方法,其中:
确定所述查询的执行涉及包括所述扫描操作和一个或多个其它操作的多个操作;
所述方法还包括:
从存储器中检索所述结果数据;
在从所述存储器中检索了所述结果数据之后,处理要求将所述结果数据作为所述一个或多个其它操作的输入的所述一个或多个其它操作。
9.根据权利要求1所述的方法,其中:
所述协处理器是串联连接的多个协处理器中的第一协处理器;
促使所述结果数据被存储包括促使所述结果数据被发送给所述多个协处理器中的第二协处理器的缓冲区;
所述方法还包括:
当所述第一协处理器正在执行所述查询的一部分的同时,由所述第二协处理器从所述缓冲区读取所述结果数据,并且
由所述第二协处理器基于所述结果数据来生成第二结果数据。
10.根据权利要求1所述的方法,其中:
生成所述扫描操作命令包括生成包含所述扫描操作命令的多个扫描操作命令;
促使所述扫描操作命令被存储于存储器内包括:为所述多个扫描操作命令的每个扫描操作命令促使所述每个扫描操作命令被存储于所述存储器内;
多个协处理器的每个协处理器选择所述多个扫描操作命令中的扫描操作命令。
11.根据权利要求1所述的方法,其中:
包含于所述扫描操作命令中的所述地址数据包含一个或多个虚地址;
所述方法还包括促使所述一个或多个虚地址被所述协处理器用来读取所述输入数据的一个或多个物理地址所替代。
12.根据权利要求1所述的方法,还包括确定是否满足一个或多个准则,其中促使所述扫描操作命令被发送给所述协处理器仅在满足所述一个或多个准则的情况下执行。
13.根据权利要求12所述的方法,其中所述一个或多个准则基于需要由所述协处理器读入以执行所述扫描操作的数据量。
14.根据权利要求1所述的方法,其中:
所述一个或多个值包含多个数据元素;
将所述输入数据与所述一个或多个值进行比较包括将所述输入数据与所述多个数据元素同时进行比较。
15.根据权利要求1所述的方法,其中基于所述比较来生成所述结果数据包括生成位向量,其中在所述位向量中的每个位指示比较结果是真还是假。
16.一种被配置用于执行以下步骤的协处理器:
读取扫描操作命令,所述扫描操作命令由与所述协处理器分开并且运行与查询处理相关的指令的微处理器响应于所述微处理器确定查询包括扫描操作而生成,并且所述扫描操作命令包含用于识别待由所述协处理器读取的输入数据的地址数据以及用于与所述输入数据进行比较的一个或多个值来作为所述扫描操作命令的参数;
促使从由所述地址数据指示的位置处读取所述输入数据;
在所述输入数据与所述一个或多个值之间执行比较;
基于所述比较来生成结果数据;
促使将所述结果数据通知所述微处理器。
17.根据权利要求16所述的协处理器,其中:
所述扫描操作命令还包含指示要执行的操作的类型的操作类型数据;
所述协处理器还被配置执行以下步骤:识别所述操作类型数据以确定操作的类型。
18.根据权利要求17所述的协处理器,其中所述协处理器还被配置用于执行以下步骤:
使用所述操作类型数据来确定用来解释所述输入数据的逻辑;
将所述输入数据由第一数据类型转换为与所述第一数据类型不同的第二数据类型。
19.根据权利要求16所述的协处理器,其中所述扫描操作命令还包含指示所述结果数据将要存储于何处的目的地数据。
20.根据权利要求16所述的协处理器,其中促使所述结果数据被存储包括促使所述结果数据被存储于所述微处理器的高速缓存内。
21.根据权利要求16所述的协处理器,其中:
所述输入数据包括值数据和计数数据;
在所述值数据中的输入值对应于数据元素,所述数据元素的数量由在所述计数数据中的计数值指示;
将所述输入数据与所述一个或多个值进行比较包括将所述输入值与所述一个或多个值进行比较;
生成所述结果数据包括生成指示所述输入值是否满足所述一个或多个值的结果指示;
生成所述结果数据在没有将所述输入值与所述一个或多个值进行由所述计数值指示的次数的比较的情况下执行。
22.根据权利要求16所述的协处理器,其中:
所述协处理器是串联连接的多个协处理器中的第一协处理器;
促使所述结果数据被存储包括促使所述结果数据被发送给所述多个协处理器中的第二协处理器的缓冲区。
23.根据权利要求16所述的协处理器,其中:
包含于所述扫描操作命令中的所述地址数据包含一个或多个虚地址;
所述协处理器还被配置为执行以下步骤:促使所述一个或多个虚地址被所述协处理器用来读取所述输入数据的一个或多个物理地址所替代。
24.根据权利要求16所述的协处理器,其中:
所述一个或多个值包含多个数据元素;
将所述输入数据与所述一个或多个值进行比较包括将所述输入数据与所述多个数据元素同时进行比较。
25.根据权利要求16所述的协处理器,其中基于所述比较来生成所述结果数据包括生成位向量,其中在所述位向量中的每个位指示比较结果是真还是假。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810434459.0A CN108664596B (zh) | 2012-10-02 | 2013-06-14 | 用于表扫描加速的硬件 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261709142P | 2012-10-02 | 2012-10-02 | |
US61/709,142 | 2012-10-02 | ||
US13/778,009 | 2013-02-26 | ||
US13/778,009 US9063974B2 (en) | 2012-10-02 | 2013-02-26 | Hardware for table scan acceleration |
PCT/US2013/045873 WO2014055137A1 (en) | 2012-10-02 | 2013-06-14 | Hardware for table scan acceleration |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810434459.0A Division CN108664596B (zh) | 2012-10-02 | 2013-06-14 | 用于表扫描加速的硬件 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104662534A CN104662534A (zh) | 2015-05-27 |
CN104662534B true CN104662534B (zh) | 2018-05-25 |
Family
ID=50386190
Family Applications (7)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380049301.7A Active CN104662534B (zh) | 2012-10-02 | 2013-06-14 | 用于表扫描加速的硬件 |
CN201810434459.0A Active CN108664596B (zh) | 2012-10-02 | 2013-06-14 | 用于表扫描加速的硬件 |
CN201380049816.7A Active CN104662538B (zh) | 2012-10-02 | 2013-06-14 | 半连接加速 |
CN201380051875.8A Active CN104704491B (zh) | 2012-10-02 | 2013-06-27 | 用于集群内通信的硬件消息队列 |
CN201380057680.4A Active CN104769591B (zh) | 2012-10-02 | 2013-09-30 | 分布式节点之间的存储器共享 |
CN201380051672.9A Active CN104756091B (zh) | 2012-10-02 | 2013-10-01 | 基于远程密钥的存储器缓冲区访问控制机制 |
CN201380057937.6A Active CN104769561B (zh) | 2012-10-02 | 2013-10-01 | 能够实现不同物理域地址空间的节点间的聚类的存储总线协议 |
Family Applications After (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810434459.0A Active CN108664596B (zh) | 2012-10-02 | 2013-06-14 | 用于表扫描加速的硬件 |
CN201380049816.7A Active CN104662538B (zh) | 2012-10-02 | 2013-06-14 | 半连接加速 |
CN201380051875.8A Active CN104704491B (zh) | 2012-10-02 | 2013-06-27 | 用于集群内通信的硬件消息队列 |
CN201380057680.4A Active CN104769591B (zh) | 2012-10-02 | 2013-09-30 | 分布式节点之间的存储器共享 |
CN201380051672.9A Active CN104756091B (zh) | 2012-10-02 | 2013-10-01 | 基于远程密钥的存储器缓冲区访问控制机制 |
CN201380057937.6A Active CN104769561B (zh) | 2012-10-02 | 2013-10-01 | 能够实现不同物理域地址空间的节点间的聚类的存储总线协议 |
Country Status (6)
Country | Link |
---|---|
US (10) | US9292569B2 (zh) |
EP (6) | EP2904513B1 (zh) |
JP (1) | JP6320393B2 (zh) |
CN (7) | CN104662534B (zh) |
ES (1) | ES2880268T3 (zh) |
WO (6) | WO2014055138A1 (zh) |
Families Citing this family (131)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8782434B1 (en) | 2010-07-15 | 2014-07-15 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time |
EP2652590A1 (en) * | 2011-06-30 | 2013-10-23 | Hitachi, Ltd. | Computer system and access restriction method |
US9792117B2 (en) | 2011-12-08 | 2017-10-17 | Oracle International Corporation | Loading values from a value vector into subregisters of a single instruction multiple data register |
US10534606B2 (en) | 2011-12-08 | 2020-01-14 | Oracle International Corporation | Run-length encoding decompression |
EP2788902B1 (en) | 2011-12-08 | 2019-04-17 | Oracle International Corporation | Techniques for more efficient usage of memory-to-cpu bandwidth |
US9697174B2 (en) | 2011-12-08 | 2017-07-04 | Oracle International Corporation | Efficient hardware instructions for processing bit vectors for single instruction multiple data processors |
US9342314B2 (en) | 2011-12-08 | 2016-05-17 | Oracle International Corporation | Efficient hardware instructions for single instruction multiple data processors |
WO2013100783A1 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Method and system for control signalling in a data path module |
US9087095B2 (en) * | 2012-06-21 | 2015-07-21 | International Business Machines Corporation | Processing columns in a database accelerator while preserving row-based architecture |
US9122873B2 (en) | 2012-09-14 | 2015-09-01 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
US9292569B2 (en) | 2012-10-02 | 2016-03-22 | Oracle International Corporation | Semi-join acceleration |
US10102028B2 (en) | 2013-03-12 | 2018-10-16 | Sas Institute Inc. | Delivery acknowledgment in event stream processing |
US9679084B2 (en) | 2013-03-14 | 2017-06-13 | Oracle International Corporation | Memory sharing across distributed nodes |
BR112015018946A2 (pt) * | 2013-03-15 | 2017-07-18 | Intel Corp | desempenho de partida de coprocessador de segurança |
US10108539B2 (en) * | 2013-06-13 | 2018-10-23 | International Business Machines Corporation | Allocation of distributed data structures |
US20160210237A1 (en) * | 2013-07-30 | 2016-07-21 | Nec Corporation | Storage device, data access method, and program recording medium |
US9740718B2 (en) | 2013-09-20 | 2017-08-22 | Oracle International Corporation | Aggregating dimensional data using dense containers |
US9836519B2 (en) | 2013-09-20 | 2017-12-05 | Oracle International Corporation | Densely grouping dimensional data |
US9990398B2 (en) * | 2013-09-20 | 2018-06-05 | Oracle International Corporation | Inferring dimensional metadata from content of a query |
US9378232B2 (en) | 2013-09-21 | 2016-06-28 | Oracle International Corporation | Framework for numa affinitized parallel query on in-memory objects within the RDBMS |
US10331583B2 (en) | 2013-09-26 | 2019-06-25 | Intel Corporation | Executing distributed memory operations using processing elements connected by distributed channels |
WO2015065449A1 (en) * | 2013-10-31 | 2015-05-07 | Hewlett-Packard Development Company, L.P. | Cache controller for non-volatile memory |
US20150161678A1 (en) * | 2013-12-05 | 2015-06-11 | Turn Inc. | Dynamic ordering of online advertisement software steps |
US9313029B2 (en) * | 2013-12-15 | 2016-04-12 | Cavium, Inc. | Virtualized network interface for remote direct memory access over converged ethernet |
US9306916B2 (en) * | 2013-12-25 | 2016-04-05 | Cavium, Inc. | System and a method for a remote direct memory access over converged ethernet |
US9898414B2 (en) | 2014-03-28 | 2018-02-20 | Oracle International Corporation | Memory corruption detection support for distributed shared memory applications |
DE102014207476A1 (de) * | 2014-04-17 | 2015-10-22 | Robert Bosch Gmbh | Verfahren zur Auswahl einer von mehreren Warteschlangen |
US9715345B2 (en) * | 2014-04-25 | 2017-07-25 | Micron Technology, Inc. | Apparatuses and methods for memory management |
US10838893B2 (en) * | 2014-05-30 | 2020-11-17 | Apple Inc. | Methods for mitigating system interrupts for an electronic device |
US9122651B1 (en) | 2014-06-06 | 2015-09-01 | Sas Institute Inc. | Computer system to support failover in an event stream processing system |
US9356986B2 (en) * | 2014-08-08 | 2016-05-31 | Sas Institute Inc. | Distributed stream processing |
WO2016064397A1 (en) * | 2014-10-23 | 2016-04-28 | Hewlett Packard Enterprise Development Lp | Admissions control of a device |
WO2016068941A1 (en) | 2014-10-30 | 2016-05-06 | Hewlett Packard Enterprise Development Lp | Secure transactions in a memory fabric |
WO2016068942A1 (en) | 2014-10-30 | 2016-05-06 | Hewlett Packard Enterprise Development Lp | Encryption for transactions in a memory fabric |
US9678812B2 (en) | 2014-12-22 | 2017-06-13 | International Business Machines Corporation | Addressing for inter-thread push communication |
US9766890B2 (en) * | 2014-12-23 | 2017-09-19 | International Business Machines Corporation | Non-serialized push instruction for pushing a message payload from a sending thread to a receiving thread |
US10255336B2 (en) | 2015-05-07 | 2019-04-09 | Datometry, Inc. | Method and system for transparent interoperability between applications and data management systems |
US9749319B2 (en) | 2015-05-20 | 2017-08-29 | Google Inc. | Address validation using signatures |
US11449452B2 (en) | 2015-05-21 | 2022-09-20 | Goldman Sachs & Co. LLC | General-purpose parallel computing architecture |
ES2929626T3 (es) * | 2015-05-21 | 2022-11-30 | Goldman Sachs & Co Llc | Arquitectura de computación paralela de propósito general |
US10025822B2 (en) | 2015-05-29 | 2018-07-17 | Oracle International Corporation | Optimizing execution plans for in-memory-aware joins |
US10594779B2 (en) | 2015-08-27 | 2020-03-17 | Datometry, Inc. | Method and system for workload management for data management systems |
US9990308B2 (en) | 2015-08-31 | 2018-06-05 | Oracle International Corporation | Selective data compression for in-memory databases |
JP6515771B2 (ja) * | 2015-10-07 | 2019-05-22 | 富士通コネクテッドテクノロジーズ株式会社 | 並列処理装置及び並列処理方法 |
US9823871B2 (en) | 2015-10-09 | 2017-11-21 | Oracle International Corporation | Performance of coprocessor assisted memset() through heterogeneous computing |
US10783142B2 (en) | 2015-10-23 | 2020-09-22 | Oracle International Corporation | Efficient data retrieval in staged use of in-memory cursor duration temporary tables |
US10642831B2 (en) | 2015-10-23 | 2020-05-05 | Oracle International Corporation | Static data caching for queries with a clause that requires multiple iterations to execute |
US10678792B2 (en) | 2015-10-23 | 2020-06-09 | Oracle International Corporation | Parallel execution of queries with a recursive clause |
CN105426271B (zh) * | 2015-12-22 | 2018-09-21 | 华为技术有限公司 | 对分布式存储系统的锁管理的方法和装置 |
US10146681B2 (en) | 2015-12-24 | 2018-12-04 | Intel Corporation | Non-uniform memory access latency adaptations to achieve bandwidth quality of service |
CN105677812A (zh) * | 2015-12-31 | 2016-06-15 | 华为技术有限公司 | 一种数据查询方法及数据查询装置 |
US10061714B2 (en) | 2016-03-18 | 2018-08-28 | Oracle International Corporation | Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors |
US10402425B2 (en) | 2016-03-18 | 2019-09-03 | Oracle International Corporation | Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors |
US10061832B2 (en) | 2016-11-28 | 2018-08-28 | Oracle International Corporation | Database tuple-encoding-aware data partitioning in a direct memory access engine |
US10055358B2 (en) | 2016-03-18 | 2018-08-21 | Oracle International Corporation | Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors |
US10599488B2 (en) | 2016-06-29 | 2020-03-24 | Oracle International Corporation | Multi-purpose events for notification and sequence control in multi-core processor systems |
US10853125B2 (en) * | 2016-08-19 | 2020-12-01 | Oracle International Corporation | Resource efficient acceleration of datastream analytics processing using an analytics accelerator |
CN106354480B (zh) * | 2016-08-24 | 2019-01-29 | 长沙中部芯空微电子研究所有限公司 | 一种mpp型异构高速mcu系统 |
US10380058B2 (en) | 2016-09-06 | 2019-08-13 | Oracle International Corporation | Processor core to coprocessor interface with FIFO semantics |
US10558659B2 (en) | 2016-09-16 | 2020-02-11 | Oracle International Corporation | Techniques for dictionary based join and aggregation |
US10402168B2 (en) | 2016-10-01 | 2019-09-03 | Intel Corporation | Low energy consumption mantissa multiplication for floating point multiply-add operations |
US10783102B2 (en) | 2016-10-11 | 2020-09-22 | Oracle International Corporation | Dynamically configurable high performance database-aware hash engine |
US10176114B2 (en) | 2016-11-28 | 2019-01-08 | Oracle International Corporation | Row identification number generation in database direct memory access engine |
US10459859B2 (en) | 2016-11-28 | 2019-10-29 | Oracle International Corporation | Multicast copy ring for database direct memory access filtering engine |
US10725947B2 (en) | 2016-11-29 | 2020-07-28 | Oracle International Corporation | Bit vector gather row count calculation and handling in direct memory access engine |
US10572376B2 (en) | 2016-12-30 | 2020-02-25 | Intel Corporation | Memory ordering in acceleration hardware |
US10416999B2 (en) | 2016-12-30 | 2019-09-17 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10474375B2 (en) | 2016-12-30 | 2019-11-12 | Intel Corporation | Runtime address disambiguation in acceleration hardware |
US10558575B2 (en) | 2016-12-30 | 2020-02-11 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10606487B2 (en) * | 2017-03-17 | 2020-03-31 | International Business Machines Corporation | Partitioned memory with locally aggregated copy pools |
US20180373760A1 (en) * | 2017-06-23 | 2018-12-27 | Xilinx, Inc. | Parallel compute offload to database accelerator |
US10515046B2 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10445234B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features |
US10467183B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods for pipelined runtime services in a spatial array |
US10515049B1 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Memory circuits and methods for distributed memory hazard detection and error recovery |
US10469397B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods with configurable network-based dataflow operator circuits |
US10387319B2 (en) | 2017-07-01 | 2019-08-20 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features |
US10445451B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features |
CN107835203B (zh) * | 2017-08-09 | 2020-07-10 | 平安壹钱包电子商务有限公司 | 消息分组投递的方法、装置、存储介质及终端 |
US11086816B2 (en) | 2017-09-28 | 2021-08-10 | Intel Corporation | Processors, methods, and systems for debugging a configurable spatial accelerator |
US10496574B2 (en) | 2017-09-28 | 2019-12-03 | Intel Corporation | Processors, methods, and systems for a memory fence in a configurable spatial accelerator |
US11086876B2 (en) | 2017-09-29 | 2021-08-10 | Oracle International Corporation | Storing derived summaries on persistent memory of a storage device |
US10380063B2 (en) | 2017-09-30 | 2019-08-13 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator |
US10445098B2 (en) * | 2017-09-30 | 2019-10-15 | Intel Corporation | Processors and methods for privileged configuration in a spatial array |
US10664396B2 (en) * | 2017-10-04 | 2020-05-26 | Intel Corporation | Systems, methods and apparatus for fabric delta merge operations to enhance NVMeoF stream writes |
CN107766526B (zh) * | 2017-10-26 | 2020-04-28 | 中国人民银行清算总中心 | 数据库访问方法、装置及系统 |
CN107886692B (zh) * | 2017-10-30 | 2020-08-25 | 皖西学院 | 一种生物工程用传感器LoRa无线网络通讯系统 |
US10452547B2 (en) | 2017-12-29 | 2019-10-22 | Oracle International Corporation | Fault-tolerant cache coherence over a lossy network |
US10467139B2 (en) | 2017-12-29 | 2019-11-05 | Oracle International Corporation | Fault-tolerant cache coherence over a lossy network |
US10445250B2 (en) | 2017-12-30 | 2019-10-15 | Intel Corporation | Apparatus, methods, and systems with a configurable spatial accelerator |
US10417175B2 (en) | 2017-12-30 | 2019-09-17 | Intel Corporation | Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator |
US10565134B2 (en) | 2017-12-30 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for multicast in a configurable spatial accelerator |
CN110110004B (zh) * | 2018-01-30 | 2023-05-30 | 腾讯科技(深圳)有限公司 | 一种数据操作方法、装置和存储介质 |
US10564980B2 (en) | 2018-04-03 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator |
US11307873B2 (en) | 2018-04-03 | 2022-04-19 | Intel Corporation | Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging |
US10649777B2 (en) * | 2018-05-14 | 2020-05-12 | International Business Machines Corporation | Hardware-based data prefetching based on loop-unrolled instructions |
CN108776934B (zh) * | 2018-05-15 | 2022-06-07 | 中国平安人寿保险股份有限公司 | 分布式数据计算方法、装置、计算机设备及可读存储介质 |
US10459866B1 (en) | 2018-06-30 | 2019-10-29 | Intel Corporation | Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator |
US11200186B2 (en) | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
US10853073B2 (en) | 2018-06-30 | 2020-12-01 | Intel Corporation | Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator |
US10891240B2 (en) | 2018-06-30 | 2021-01-12 | Intel Corporation | Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator |
EP3846026A4 (en) | 2018-09-21 | 2021-11-03 | Huawei Technologies Co., Ltd. | DATA EXTRACTION PROCESS AND DEVICE |
CN111399905B (zh) * | 2019-01-02 | 2022-08-16 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
JP7146611B2 (ja) * | 2018-12-18 | 2022-10-04 | 株式会社日立製作所 | カラムストアデータベースシステム及びデータベース処理高速化方法 |
US11294869B1 (en) | 2018-12-19 | 2022-04-05 | Datometry, Inc. | Expressing complexity of migration to a database candidate |
US11204898B1 (en) | 2018-12-19 | 2021-12-21 | Datometry, Inc. | Reconstructing database sessions from a query log |
US11403282B1 (en) | 2018-12-20 | 2022-08-02 | Datometry, Inc. | Unbatching database queries for migration to a different database |
US10678724B1 (en) | 2018-12-29 | 2020-06-09 | Intel Corporation | Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator |
US10817291B2 (en) | 2019-03-30 | 2020-10-27 | Intel Corporation | Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator |
US10965536B2 (en) | 2019-03-30 | 2021-03-30 | Intel Corporation | Methods and apparatus to insert buffers in a dataflow graph |
US10915471B2 (en) | 2019-03-30 | 2021-02-09 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator |
US11029927B2 (en) | 2019-03-30 | 2021-06-08 | Intel Corporation | Methods and apparatus to detect and annotate backedges in a dataflow graph |
WO2020214757A1 (en) * | 2019-04-17 | 2020-10-22 | John Rankin | Virtual memory pool within a network which is accessible from multiple platforms |
CN110113395B (zh) * | 2019-04-19 | 2021-11-09 | 新华三云计算技术有限公司 | 共享文件系统维护方法及装置 |
US11372773B2 (en) | 2019-05-28 | 2022-06-28 | Rankin Labs, Llc | Supporting a virtual memory area at a remote computing machine |
US11037050B2 (en) | 2019-06-29 | 2021-06-15 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator |
US20220245150A1 (en) * | 2019-07-31 | 2022-08-04 | Sindice Limited T/A Siren | Semantic caching of semi-join operators in shared-nothing and log-structured databases |
US11222018B2 (en) | 2019-09-09 | 2022-01-11 | Oracle International Corporation | Cache conscious techniques for generation of quasi-dense grouping codes of compressed columnar data in relational database systems |
US20210109974A1 (en) * | 2019-10-13 | 2021-04-15 | Thoughtspot, Inc. | Query Execution On Compressed In-Memory Data |
CN111061760B (zh) * | 2019-10-30 | 2020-12-15 | 中科驭数(北京)科技有限公司 | 关系型数据库管理系统中的窗口聚合方法、查询方法及装置 |
US11907713B2 (en) | 2019-12-28 | 2024-02-20 | Intel Corporation | Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator |
US11755355B2 (en) | 2020-11-25 | 2023-09-12 | Nxp Usa, Inc. | Systems and methods for assigning domain identifiers to remote peripheral devices using a hypervisor |
US20220166762A1 (en) * | 2020-11-25 | 2022-05-26 | Microsoft Technology Licensing, Llc | Integrated circuit for obtaining enhanced privileges for a network-based resource and performing actions in accordance therewith |
US11741073B2 (en) | 2021-06-01 | 2023-08-29 | Alibaba Singapore Holding Private Limited | Granularly timestamped concurrency control for key-value store |
US11829291B2 (en) | 2021-06-01 | 2023-11-28 | Alibaba Singapore Holding Private Limited | Garbage collection of tree structure with page mappings |
US11755427B2 (en) | 2021-06-01 | 2023-09-12 | Alibaba Singapore Holding Private Limited | Fast recovery and replication of key-value stores |
US20220382760A1 (en) * | 2021-06-01 | 2022-12-01 | Alibaba Singapore Holding Private Limited | High-performance key-value store |
CN113342480B (zh) * | 2021-06-23 | 2022-02-22 | 海光信息技术股份有限公司 | 一种事务处理系统、事务处理方法及主机系统 |
CN113420033B (zh) * | 2021-08-17 | 2021-12-07 | 北京奥星贝斯科技有限公司 | 分布式数据库的表数据查询方法、表数据查询装置及系统 |
US20230205935A1 (en) * | 2021-12-28 | 2023-06-29 | Ati Technologies Ulc | Software assisted acceleration in cryptographic queue processing |
US11927634B2 (en) | 2022-04-01 | 2024-03-12 | Samsung Electronics Co., Ltd | Systems and methods for database scan acceleration |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5974408A (en) * | 1997-02-28 | 1999-10-26 | Oracle Corporation | Method and apparatus for executing a query that specifies a sort plus operation |
CN101944077A (zh) * | 2010-09-02 | 2011-01-12 | 东莞市泰斗微电子科技有限公司 | 一种主处理器和协处理器之间的通讯接口及其控制方法 |
Family Cites Families (136)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
USRE34052E (en) | 1984-05-31 | 1992-09-01 | International Business Machines Corporation | Data processing system with CPU register to register data transfers overlapped with data transfer to and from main storage |
US4817140A (en) | 1986-11-05 | 1989-03-28 | International Business Machines Corp. | Software protection system using a single-key cryptosystem, a hardware-based authorization system and a secure coprocessor |
US5133053A (en) | 1987-02-13 | 1992-07-21 | International Business Machines Corporation | Interprocess communication queue location transparency |
US5604899A (en) | 1990-05-21 | 1997-02-18 | Financial Systems Technology Pty. Ltd. | Data relationships processor with unlimited expansion capability |
US5423010A (en) | 1992-01-24 | 1995-06-06 | C-Cube Microsystems | Structure and method for packing and unpacking a stream of N-bit data to and from a stream of N-bit data words |
US5483624A (en) * | 1992-03-27 | 1996-01-09 | Monarch Marking Systems, Inc. | Programmable hand held labeler |
JPH0619785A (ja) * | 1992-03-27 | 1994-01-28 | Matsushita Electric Ind Co Ltd | 分散共有仮想メモリーとその構成方法 |
EP0629960B1 (en) | 1993-06-17 | 2000-05-24 | Sun Microsystems, Inc. | Extendible file system |
US5581705A (en) * | 1993-12-13 | 1996-12-03 | Cray Research, Inc. | Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system |
US5564056A (en) * | 1994-03-01 | 1996-10-08 | Intel Corporation | Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming |
DE19515020A1 (de) * | 1994-07-01 | 1996-01-04 | Hewlett Packard Co | Verfahren und Vorrichtung zum Optimieren von Abfragen mit Gruppieren-nach-Operatoren |
JP3518034B2 (ja) | 1995-03-30 | 2004-04-12 | 三菱電機株式会社 | ソート方法並びにソート処理装置並びにデータ処理装置 |
US5684977A (en) | 1995-03-31 | 1997-11-04 | Sun Microsystems, Inc. | Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system |
CA2146171C (en) * | 1995-04-03 | 2000-01-11 | Bernhard Schiefer | Method for estimating cardinalities for query processing in a relational database management system |
KR0175499B1 (ko) | 1996-09-11 | 1999-04-01 | 양승택 | 다중태그 구조의 계층 상호연결망에서의 브로드캐스트 전송방법 |
JPH10154160A (ja) * | 1996-09-25 | 1998-06-09 | Sharp Corp | 並列データ検索処理装置 |
US6148377A (en) | 1996-11-22 | 2000-11-14 | Mangosoft Corporation | Shared memory computer networks |
JPH10232788A (ja) * | 1996-12-17 | 1998-09-02 | Fujitsu Ltd | 信号処理装置及びソフトウェア |
US6151688A (en) | 1997-02-21 | 2000-11-21 | Novell, Inc. | Resource management in a clustered computer system |
US6047081A (en) | 1997-10-24 | 2000-04-04 | Imation Corp. | Image processing software system having configurable communication pipelines |
US6292705B1 (en) | 1998-09-29 | 2001-09-18 | Conexant Systems, Inc. | Method and apparatus for address transfers, system serialization, and centralized cache and transaction control, in a symetric multiprocessor system |
US20010049780A1 (en) | 1998-03-27 | 2001-12-06 | Shreekant Thakkar | Method and apparatus for performing integer operations in response to a result of a floating point operation |
US6230240B1 (en) | 1998-06-23 | 2001-05-08 | Hewlett-Packard Company | Storage management system and auto-RAID transaction manager for coherent memory map across hot plug interface |
WO2000008552A1 (en) | 1998-08-06 | 2000-02-17 | Koninklijke Philips Electronics N.V. | Data processor and method of processing data |
JP3583657B2 (ja) * | 1998-09-30 | 2004-11-04 | 株式会社東芝 | 中継装置及び通信装置 |
US6633891B1 (en) | 1998-11-24 | 2003-10-14 | Oracle International Corporation | Managing replacement of data in a cache on a node based on caches of other nodes |
US6434545B1 (en) * | 1998-12-16 | 2002-08-13 | Microsoft Corporation | Graphical query analyzer |
JP2000261674A (ja) | 1999-03-09 | 2000-09-22 | Fujitsu Ltd | 画像伸長装置 |
US6295571B1 (en) | 1999-03-19 | 2001-09-25 | Times N Systems, Inc. | Shared memory apparatus and method for multiprocessor systems |
US6826522B1 (en) | 1999-06-21 | 2004-11-30 | Pts Corporation | Methods and apparatus for improved efficiency in pipeline simulation and emulation |
US6349310B1 (en) | 1999-07-06 | 2002-02-19 | Compaq Computer Corporation | Database management system and method for accessing rows in a partitioned table |
US6671797B1 (en) | 2000-02-18 | 2003-12-30 | Texas Instruments Incorporated | Microprocessor with expand instruction for forming a mask from one bit |
US6697919B2 (en) | 2000-06-10 | 2004-02-24 | Hewlett-Packard Development Company, L.P. | System and method for limited fanout daisy chaining of cache invalidation requests in a shared-memory multiprocessor system |
US7383424B1 (en) * | 2000-06-15 | 2008-06-03 | Hewlett-Packard Development Company, L.P. | Computer architecture containing processor and decoupled coprocessor |
EP1337926A1 (en) | 2000-08-14 | 2003-08-27 | Jae-Hak Lee | The multi-functional pda |
US6898693B1 (en) * | 2000-11-02 | 2005-05-24 | Intel Corporation | Hardware loops |
US6917987B2 (en) | 2001-03-26 | 2005-07-12 | Intel Corporation | Methodology and mechanism for remote key validation for NGIO/InfiniBand™ applications |
US6745174B2 (en) | 2001-03-29 | 2004-06-01 | Hewlett-Packard Development Company, L.P. | Method of executing before-triggers in an active database |
US7013353B2 (en) * | 2001-03-30 | 2006-03-14 | Intel Corporation | Host-fabric adapter having an efficient multi-tasking pipelined instruction execution micro-controller subsystem |
US20020188830A1 (en) | 2001-06-01 | 2002-12-12 | Brian Boles | Bit replacement and extraction instructions |
US6789143B2 (en) * | 2001-09-24 | 2004-09-07 | International Business Machines Corporation | Infiniband work and completion queue management via head and tail circular buffers with indirect work queue entries |
US6748499B2 (en) * | 2001-11-15 | 2004-06-08 | International Business Machines Corporation | Sharing memory tables between host channel adapters |
US6854032B2 (en) * | 2001-12-04 | 2005-02-08 | Sun Microsystems, Inc. | System for accessing a region of memory using remote address translation and using a memory window table and a memory region table |
US6757790B2 (en) | 2002-02-19 | 2004-06-29 | Emc Corporation | Distributed, scalable data storage facility with cache memory |
JP2003308334A (ja) * | 2002-04-15 | 2003-10-31 | Nippon Telegr & Teleph Corp <Ntt> | 情報検索方法及び装置、情報検索プログラム、情報検索プログラムを記録した記録媒体 |
US7249118B2 (en) | 2002-05-17 | 2007-07-24 | Aleri, Inc. | Database system and methods |
US7197647B1 (en) | 2002-09-30 | 2007-03-27 | Carnegie Mellon University | Method of securing programmable logic configuration data |
US6842848B2 (en) | 2002-10-11 | 2005-01-11 | Sandbridge Technologies, Inc. | Method and apparatus for token triggered multithreading |
US20060098649A1 (en) | 2004-11-10 | 2006-05-11 | Trusted Network Technologies, Inc. | System, apparatuses, methods, and computer-readable media for determining security realm identity before permitting network connection |
US7730292B2 (en) | 2003-03-31 | 2010-06-01 | Hewlett-Packard Development Company, L.P. | Parallel subword instructions for directing results to selected subword locations of data processor result register |
US20040260182A1 (en) | 2003-06-23 | 2004-12-23 | Zuluaga Andres F. | Intraluminal spectroscope with wall contacting probe |
US7006021B1 (en) * | 2003-06-27 | 2006-02-28 | Cypress Semiconductor Corp. | Low power serializer circuit and method |
US7047252B2 (en) | 2003-12-02 | 2006-05-16 | Oracle International Corporation | Complex computation across heterogenous computer systems |
US7664938B1 (en) | 2004-01-07 | 2010-02-16 | Xambala Corporation | Semantic processor systems and methods |
US7698552B2 (en) * | 2004-06-03 | 2010-04-13 | Intel Corporation | Launching a secure kernel in a multiprocessor system |
JP2006004274A (ja) * | 2004-06-18 | 2006-01-05 | Nippon Telegr & Teleph Corp <Ntt> | 対話処理装置、対話処理方法及び対話処理プログラム |
US7516121B2 (en) * | 2004-06-23 | 2009-04-07 | Oracle International Corporation | Efficient evaluation of queries using translation |
US20060075236A1 (en) * | 2004-09-30 | 2006-04-06 | Marek James A | Method and apparatus for high assurance processing |
US20060095690A1 (en) | 2004-10-29 | 2006-05-04 | International Business Machines Corporation | System, method, and storage medium for shared key index space for memory regions |
US7814104B2 (en) | 2005-05-04 | 2010-10-12 | Oracle International Corporation | Techniques for partition pruning |
US7725595B1 (en) * | 2005-05-24 | 2010-05-25 | The United States Of America As Represented By The Secretary Of The Navy | Embedded communications system and method |
US7877379B2 (en) * | 2005-09-30 | 2011-01-25 | Oracle International Corporation | Delaying evaluation of expensive expressions in a query |
US8817029B2 (en) | 2005-10-26 | 2014-08-26 | Via Technologies, Inc. | GPU pipeline synchronization and control system and method |
GB0524720D0 (en) * | 2005-12-05 | 2006-01-11 | Imec Inter Uni Micro Electr | Ultra low power ASIP architecture II |
US7861060B1 (en) | 2005-12-15 | 2010-12-28 | Nvidia Corporation | Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior |
US8024797B2 (en) * | 2005-12-21 | 2011-09-20 | Intel Corporation | Method, apparatus and system for performing access control and intrusion detection on encrypted data |
US8255922B1 (en) * | 2006-01-09 | 2012-08-28 | Oracle America, Inc. | Mechanism for enabling multiple processes to share physical memory |
US8049760B2 (en) | 2006-02-06 | 2011-11-01 | Via Technologies, Inc. | System and method for vector computations in arithmetic logic units (ALUs) |
US20080010417A1 (en) * | 2006-04-28 | 2008-01-10 | Zeffer Hakan E | Read/Write Permission Bit Support for Efficient Hardware to Software Handover |
US7509460B2 (en) * | 2006-05-04 | 2009-03-24 | Sun Microsystems, Inc. | DRAM remote access cache in local memory in a distributed shared memory system |
US7783862B2 (en) | 2006-08-07 | 2010-08-24 | International Characters, Inc. | Method and apparatus for an inductive doubling architecture |
US20080065835A1 (en) * | 2006-09-11 | 2008-03-13 | Sun Microsystems, Inc. | Offloading operations for maintaining data coherence across a plurality of nodes |
US8533216B2 (en) | 2006-10-30 | 2013-09-10 | Teradata Us, Inc. | Database system workload management method and system |
EP2092440B1 (en) * | 2006-11-13 | 2019-01-09 | IP Reservoir, LLC | Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors |
US7660793B2 (en) | 2006-11-13 | 2010-02-09 | Exegy Incorporated | Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors |
US20080162876A1 (en) | 2006-12-28 | 2008-07-03 | International Business Machines Corporation | dedicated hardware processor for structured query language (sql) transactions |
US8504791B2 (en) | 2007-01-26 | 2013-08-06 | Hicamp Systems, Inc. | Hierarchical immutable content-addressable memory coprocessor |
US7792822B2 (en) * | 2007-03-02 | 2010-09-07 | Microsoft Corporation | Systems and methods for modeling partitioned tables as logical indexes |
US8032499B2 (en) | 2007-05-21 | 2011-10-04 | Sap Ag | Compression of tables based on occurrence of values |
US7769729B2 (en) | 2007-05-21 | 2010-08-03 | Sap Ag | Block compression of tables with repeated values |
US20090037700A1 (en) | 2007-07-30 | 2009-02-05 | Clear Falls Pty Ltd | Method and system for reactively assigning computational threads of control between processors |
US7882210B2 (en) | 2007-08-02 | 2011-02-01 | Sap Ag | Dynamic agent formation for efficient data provisioning |
EP2192764B1 (en) * | 2007-09-05 | 2015-05-20 | Tohoku University | Solid state imaging element and imaging device |
US20090070786A1 (en) | 2007-09-11 | 2009-03-12 | Bea Systems, Inc. | Xml-based event processing networks for event server |
EP2040180B1 (en) | 2007-09-24 | 2019-01-16 | Hasso-Plattner-Institut für Digital Engineering gGmbH | ETL-less zero-redundancy system and method for reporting OLTP data |
CN100495404C (zh) * | 2007-11-22 | 2009-06-03 | 中国人民解放军国防科学技术大学 | 基于流处理的生物序列数据库搜索多层次加速方法 |
US7991794B2 (en) | 2007-12-18 | 2011-08-02 | Oracle International Corporation | Pipelining operations involving DML and query |
CN101227689B (zh) * | 2007-12-27 | 2011-01-19 | 华为技术有限公司 | 信息上报方法及装置 |
US7769726B2 (en) | 2007-12-31 | 2010-08-03 | Sap, Ag | Method for verification of data and metadata in a data repository |
US8258952B2 (en) * | 2008-03-14 | 2012-09-04 | The Invention Science Fund I, Llc | System for treating at least one plant including a treatment apparatus and an electronic tag interrogator |
US8229945B2 (en) | 2008-03-20 | 2012-07-24 | Schooner Information Technology, Inc. | Scalable database management software on a cluster of nodes using a shared-distributed flash memory |
US8732386B2 (en) | 2008-03-20 | 2014-05-20 | Sandisk Enterprise IP LLC. | Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory |
US20090289861A1 (en) * | 2008-05-20 | 2009-11-26 | Infineon Technologies Ag | Radio frequency communication devices and methods |
JP2010003266A (ja) * | 2008-06-23 | 2010-01-07 | Nippon Telegr & Teleph Corp <Ntt> | クエリ生成装置及び方法及びプログラム及びコンピュータ読取可能な記録媒体 |
US8271564B2 (en) * | 2008-07-14 | 2012-09-18 | Symbol Technologies, Inc. | Lookup table arrangement and related management method for accommodating concurrent processors |
US8108361B2 (en) | 2008-07-31 | 2012-01-31 | Microsoft Corporation | Efficient column based data encoding for large-scale data storage |
US8626725B2 (en) * | 2008-07-31 | 2014-01-07 | Microsoft Corporation | Efficient large-scale processing of column based data encoded structures |
US8275815B2 (en) | 2008-08-25 | 2012-09-25 | International Business Machines Corporation | Transactional processing for clustered file systems |
US20100088309A1 (en) | 2008-10-05 | 2010-04-08 | Microsoft Corporation | Efficient large-scale joining for querying of column based data encoded structures |
US8725707B2 (en) | 2009-03-26 | 2014-05-13 | Hewlett-Packard Development Company, L.P. | Data continuous SQL process |
US8935223B2 (en) | 2009-04-30 | 2015-01-13 | Oracle International Corporation | Structure of hierarchical compressed data structure for tabular data |
US8285709B2 (en) | 2009-05-12 | 2012-10-09 | Teradata Us, Inc. | High-concurrency query operator and method |
US9304767B2 (en) * | 2009-06-02 | 2016-04-05 | Oracle America, Inc. | Single cycle data movement between general purpose and floating-point registers |
US8789173B2 (en) * | 2009-09-03 | 2014-07-22 | Juniper Networks, Inc. | Protecting against distributed network flood attacks |
US8356185B2 (en) * | 2009-10-08 | 2013-01-15 | Oracle America, Inc. | Apparatus and method for local operand bypassing for cryptographic instructions |
US8832142B2 (en) | 2010-08-30 | 2014-09-09 | Oracle International Corporation | Query and exadata support for hybrid columnar compressed data |
US8270967B1 (en) * | 2010-02-09 | 2012-09-18 | Sprint Spectrum, L.P. | Overriding a most-recently-used (MRU) table for system acquisition |
US20110196900A1 (en) * | 2010-02-09 | 2011-08-11 | Alexandre Drobychev | Storage of Data In A Distributed Storage System |
US8856593B2 (en) * | 2010-04-12 | 2014-10-07 | Sandisk Enterprise Ip Llc | Failure recovery using consensus replication in a distributed flash memory system |
US8516268B2 (en) | 2010-08-23 | 2013-08-20 | Raytheon Company | Secure field-programmable gate array (FPGA) architecture |
CN201804331U (zh) * | 2010-09-21 | 2011-04-20 | 北京同有飞骥科技股份有限公司 | 一种基于协处理器的重复数据删除系统 |
US8260803B2 (en) * | 2010-09-23 | 2012-09-04 | Hewlett-Packard Development Company, L.P. | System and method for data stream processing |
US8938644B2 (en) | 2010-12-03 | 2015-01-20 | Teradata Us, Inc. | Query execution plan revision for error recovery |
US8972746B2 (en) | 2010-12-17 | 2015-03-03 | Intel Corporation | Technique for supporting multiple secure enclaves |
FR2969156B1 (fr) | 2010-12-21 | 2013-02-08 | Chryso | Polymere comportant une fonction hydrolysable utilisable comme fluidifiant |
US8996463B2 (en) | 2012-07-26 | 2015-03-31 | Mongodb, Inc. | Aggregation framework system architecture and method |
US8666970B2 (en) * | 2011-01-20 | 2014-03-04 | Accenture Global Services Limited | Query plan enhancement |
JP5971635B2 (ja) * | 2011-01-25 | 2016-08-17 | エヌエックスピー カナダ インコーポレイテッド | ベクトルユニット共有の装置および方法 |
US20120303633A1 (en) | 2011-05-26 | 2012-11-29 | International Business Machines Corporation | Systems and methods for querying column oriented databases |
CN102184365B (zh) * | 2011-06-07 | 2013-05-29 | 郑州信大捷安信息技术股份有限公司 | 基于SoC芯片外部数据安全存储系统及存取控制方法 |
US8756363B2 (en) | 2011-07-07 | 2014-06-17 | Oracle International Corporation | Efficient storage of memory version data |
US8572441B2 (en) | 2011-08-05 | 2013-10-29 | Oracle International Corporation | Maximizing encodings of version control bits for memory corruption detection |
US8601473B1 (en) | 2011-08-10 | 2013-12-03 | Nutanix, Inc. | Architecture for managing I/O and storage for a virtualization environment |
US9697174B2 (en) | 2011-12-08 | 2017-07-04 | Oracle International Corporation | Efficient hardware instructions for processing bit vectors for single instruction multiple data processors |
US9342314B2 (en) | 2011-12-08 | 2016-05-17 | Oracle International Corporation | Efficient hardware instructions for single instruction multiple data processors |
US9792117B2 (en) | 2011-12-08 | 2017-10-17 | Oracle International Corporation | Loading values from a value vector into subregisters of a single instruction multiple data register |
EP2788902B1 (en) | 2011-12-08 | 2019-04-17 | Oracle International Corporation | Techniques for more efficient usage of memory-to-cpu bandwidth |
US9454507B2 (en) | 2011-12-23 | 2016-09-27 | Intel Corporation | Systems, apparatuses, and methods for performing a conversion of a writemask register to a list of index values in a vector register |
CN104126166A (zh) | 2011-12-23 | 2014-10-29 | 英特尔公司 | 用于执行使用掩码的向量打包一元编码的系统、装置和方法 |
US20150227414A1 (en) | 2012-08-31 | 2015-08-13 | Pradeep Varma | Systems And Methods Of Memory And Access Management |
US9292569B2 (en) | 2012-10-02 | 2016-03-22 | Oracle International Corporation | Semi-join acceleration |
US8930409B2 (en) | 2012-10-15 | 2015-01-06 | Oracle International Corporation | System and method for supporting named operations in a distributed data grid |
US9043559B2 (en) | 2012-10-23 | 2015-05-26 | Oracle International Corporation | Block memory engine with memory corruption detection |
US9244829B2 (en) | 2012-12-20 | 2016-01-26 | Oracle International Corporation | Method and system for efficient memory region deallocation |
US9471590B2 (en) | 2013-02-12 | 2016-10-18 | Atlantis Computing, Inc. | Method and apparatus for replicating virtual machine images using deduplication metadata |
US9898414B2 (en) | 2014-03-28 | 2018-02-20 | Oracle International Corporation | Memory corruption detection support for distributed shared memory applications |
-
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 (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5974408A (en) * | 1997-02-28 | 1999-10-26 | Oracle Corporation | Method and apparatus for executing a query that specifies a sort plus operation |
CN101944077A (zh) * | 2010-09-02 | 2011-01-12 | 东莞市泰斗微电子科技有限公司 | 一种主处理器和协处理器之间的通讯接口及其控制方法 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104662534B (zh) | 用于表扫描加速的硬件 | |
US11494339B2 (en) | Multi-level compression for storing data in a data store | |
EP1643384B1 (en) | Query forced indexing | |
CN102129425B (zh) | 数据仓库中大对象集合表的访问方法及装置 | |
CN108140040A (zh) | 存储器中数据库的选择性数据压缩 | |
US10599726B2 (en) | Methods and systems for real-time updating of encoded search indexes | |
US11176092B2 (en) | Database management system and anonymization processing method | |
CN110569315A (zh) | 基于数据仓库的数据处理方法和装置 | |
WO2022250876A1 (en) | Asynchronous processing of transaction log requests in a database transaction log service | |
CN115509446A (zh) | 元数据垃圾识别方法、装置和设备 | |
JP2008165622A (ja) | マルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム | |
CN110909029A (zh) | 基于Nosql实现缓存的方法及介质 | |
US11720550B2 (en) | Transaction log validation in a database transaction log service | |
JP2001147923A (ja) | 類似文書検索装置、類似文書検索方法及び記録媒体 | |
US11709824B2 (en) | Consolidating transaction log requests and transaction logs in a database transaction log service | |
US11914589B2 (en) | Efficient computation of order by, order by with limit, min, and max in column-oriented databases | |
US20220382578A1 (en) | Asynchronous processing of transaction log requests in a database transaction log service | |
WO2022250890A1 (en) | Transaction log validation in a database transaction log service | |
WO2022250889A1 (en) | Consolidating transaction log requests and transaction logs in a database transaction log service | |
US20050015400A1 (en) | Existing content utilization support method, information processing device, program, and recording medium | |
US20190057097A1 (en) | Information processing device, information processing method, and computer-readable recording medium | |
CN116795858A (zh) | 链路调用检索方法、装置、设备、介质及产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |