JP6320393B2 - テーブルスキャンを加速するためのハードウェア - Google Patents

テーブルスキャンを加速するためのハードウェア Download PDF

Info

Publication number
JP6320393B2
JP6320393B2 JP2015534471A JP2015534471A JP6320393B2 JP 6320393 B2 JP6320393 B2 JP 6320393B2 JP 2015534471 A JP2015534471 A JP 2015534471A JP 2015534471 A JP2015534471 A JP 2015534471A JP 6320393 B2 JP6320393 B2 JP 6320393B2
Authority
JP
Japan
Prior art keywords
data
coprocessor
scan operation
operation command
input data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015534471A
Other languages
English (en)
Other versions
JP2015535999A (ja
JP2015535999A5 (ja
Inventor
アインガラン,カシルガマー
スワート,ガレット・エフ
カピル,サンジブ
Original Assignee
オラクル・インターナショナル・コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2015535999A publication Critical patent/JP2015535999A/ja
Publication of JP2015535999A5 publication Critical patent/JP2015535999A5/ja
Application granted granted Critical
Publication of JP6320393B2 publication Critical patent/JP6320393B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

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

Description

優先権の主張および関連事件
本願は、2012年10月2日に出願された米国仮出願第61/709,142号に基づく優先権を主張する2013年2月26日に出願された米国特許出願第13/778,009号に基づく優先権を主張し、上記出願の内容を本明細書にその全体が記載されているが如く引用により援用する。
本願は、2013年2月26日に出願された米国特許出願第13/778,013号に関連し、この出願の内容を本明細書にその全体が記載されているが如く引用により援用する。
発明の分野
本発明は、概してクエリの処理に関し、より具体的には、1つ以上のコプロセッサ内のカスタムハードウェアを用いて、クエリを処理することが要求される1つ以上の動作を実行することに関する。
背景
このセクションで説明される手法は、遂行可能な手法であるが、必ずしも過去に考案または遂行された手法ではない。したがって、特に明示されない限り、このセクションで説明される手法のうちのいずれも、このセクションに含まれているというだけで先行技術とみなされるべきではない。
データベースに対して発行されるクエリは通常、1つ以上の、リレーショナルテーブル等のデータベースオブジェクトを対象としている。リレーショナルテーブル内に配列されたデータへのアクセスは、このリレーショナルテーブルまたは少なくともその一部をスキャンすることを伴うことが多い。一般的なSQLクエリは、データベーステーブルに対する以下のようなフィルタを要求するクエリである。
select EMPLOYEE from T_EMPLOYEES where HIRE_YEAR='2012'(雇用年度が2012年の被雇用者をT_EMPLOYEESから選択)
この例では、2012年に雇用された全被雇用者を求めて上記データベーステーブルT_EMPLOYEESが検索される。この検索(または「スキャン」)は、一連の命令を実行する1つ以上のマイクロプロセッサ上で走らせているソフトウェアによって、この例では「2012」という指定された値を求めてテーブルを検索するために行なわれる。大型のデータベース上で解析アプリケーションを走らせるとき、この最初のステップは通常、性能の障害となる。なぜなら、このステップは、数テラバイトの大きさの可能性があるテーブル全体に対して実行しなければならないからである。その後のステップは、スキャンにおいて設定された条件(上記例では2012年に雇用された被雇用者)を満たす、最初のスキャンステップでフィルタリングされたサブセットに対して実行される。したがって、単位時間当たりにマシンがフィルタリング可能な行の数は、このマシンにとって重要な性能基準である。この基準は「スキャンレート」と呼ばれている。
テーブルのスキャンを伴うクエリのようなクエリを処理するための手法は、汎用マイクロプロセッサ上で実行される(または「走らせる」)ソフトウェアのソフトウェア技術に頼っている。
ある実施形態に従う、テーブルスキャンを加速するためのコンピュータシステムの一例を示すブロック図である。 ある実施形態に従う、コプロセッサの一例を示すブロック図である。 ある実施形態に従う、クエリを処理するためのプロセスを示すフロー図である。 ある実施形態における、ルックアップベクトルの一例の一部を示すブロック図である。 本発明の実施形態が実装され得るコンピュータシステムを示すブロック図である。
詳細な説明
以下の記載では、本発明が十分に理解されるよう、数多くの具体的な詳細事項が説明のために述べられている。しかしながら、これらの具体的な詳細事項がなくとも本発明を実施し得ることは明らかであろう。他の場合では、本発明を不必要に曖昧にするのを避けるために、周知の構造および装置はブロック図の形式で示される。
全体の概要
ある実施形態において、クエリに関連するスキャン動作またはルックアップ動作は、汎用マイクロプロセッサと同一のチップ上に位置するコプロセッサ等のハードウェアにおいて実現される。このようにして、スキャン動作はカスタムハードウェアによって実行され、一方、クエリの他の部分はソフトウェアを実行する汎用マイクロプロセッサによって扱われる。異なるハードウェアコンポーネントに異なる動作を実行させる利点としては、カスタムハードウェアの方がスキャン動作またはルックアップ動作に必要な大量のデータを上手く扱うことができる点が挙げられる。また、カスタムハードウェアは、汎用マイクロプロセッサおよび関連するキャッシュを、クエリの他の部分に対する作業、またはさらにはクエリを処理するソフトウェアとは無関係の他のタスクに対する作業を行なえるよう、解放する。
本発明の実施形態は、特定のマイクロプロセッサまたはグラフィックス処理装置(GPU)に限定されない。
以下の例では、スキャンされるデータオブジェクトとしてテーブルについて述べる。しかしながら、すべての実施形態がテーブルに限定されるとは限らない。テーブル以外のデータオブジェクトがスキャンされてもよい。
システムの概要
図1は、ある実施形態に従う、クエリの処理を加速するためのコンピュータシステム100の一例を示すブロック図である。コンピュータシステム100は、クエリ実行エンジン110と、OS/ハイパーバイザ120と、コプロセッサ130と、メモリ140とを含む。示されているのは1つのコプロセッサ130のみであるが、システム100は複数のコプロセッサを含み得る。
クエリ実行エンジン110およびハイパーバイザ120は、メモリ(たとえばDRAMおよび/またはキャッシュメモリ)の中にあるプログラムであり、汎用マイクロプロセッサによって実行される命令を含む。クエリ実行エンジン110は、1つ以上のソフトウェアコンポーネントを含み、クエリを実行してこのクエリの結果を生成するために、クエリ実行エンジン110の一部ではない1つ以上のその他のソフトウェアコンポーネントと通信し得る。クエリ実行エンジン110は、クエリ(たとえばSQLクエリ)を書換えてクエリ実行エンジン110が実行できる書換えられたクエリを生成するように構成されてもよい。これに代わるものとしては、別のソフトウェアコンポーネントが元のクエリを受け、この元のクエリに基づいて書換えられたクエリを生成し、書かれたクエリを処理のためにクエリ実行エンジン110に送る。
クエリ実行エンジン110をその処理のために構成し得るクエリの種類の非限定的な一例は、XPathクエリおよびXQuery等のSQLクエリおよびXMLクエリを含む。クエリ実行エンジン110をその処理のために構成する、少なくとも1つの種類のクエリは、オブジェクトまたはその一部のスキャンを要求するクエリである。先に述べたように、スキャンされるオブジェクトの非限定的な一例は、1つ以上の列と複数の行に論理的に配列されたリレーショナルテーブルである。データは、1つのテーブルに論理的に配列されてもよいが、ハードディスクドライブまたはフラッシュメモリ装置等の永続性記憶装置に全く異なるやり方で配列されてもよい。たとえば、テーブルのデータを区切ってもよく、テーブルのうちの異なる列を全く異なる格納場所に格納してもよい。
ハイパーバイザ120は、クエリ実行エンジン110とコプロセッサ130の間のインターフェイスとして機能する。言い換えると、クエリ実行エンジン110によってコプロセッサ130に対して発行されるコマンドは、ハイパーバイザ120を通して発行される。このため、クエリ実行エンジン110は、ハイパーバイザインターフェイスに対するコマンドを、OS/ハイパーバイザ120に対してAPIコールを行なうことによって発行する。
ハイパーバイザは、ホストコンピュータ上で複数のオペレーティングシステム(「ゲスト」)を同時に走らせることができるようにするハードウェア仮想化技術である。ハイパーバイザは、ゲストオペレーティングシステムに対し、仮想オペレーティングプラットフォームを提供し、ゲストオペレーティングシステムの実行を管理する。さまざまなオペレーティングシステムの複数のインスタンスは、仮想化されたハードウェアリソースを共有し得る。ハイパーバイザは、それ自体サーバの役割を果たすゲストオペレーティングシステムを実行する機能を伴って、サーバハードウェア上にインストールされてもよい。
あるタイプのハイパーバイザは、ホストのハードウェア上で直接走らせることで、ハードウェアを制御し、ゲストオペレーティングシステムを管理する。このため、ゲストオペレーティングシステムは、ハイパーバイザよりも上の別のレベルで走らせる。別のタイプのハイパーバイザは、典型的なオペレーティングシステム環境の中で走らせる。ハイパーバイザレイヤが固有の第2のソフトウェアレベルであるとすると、ゲストオペレーティングシステムはハードウェアよりも上の第3のレベルで走らせる。言い換えると、第1のタイプのハイパーバイザはハードウェアの直接上で走らせるのに対し、第2のタイプのハイパーバイザは、FreeBSD、Linux(登録商標)、またはWindows(登録商標)等の別のオペレーティングシステムの上で走らせる。
したがって、要素120は「OS/ハイパーバイザ」という名称が与えられているが、オペレーティングシステムとハイパーバイザは異なるエンティティである。本明細書での説明のためにOSとハイパーバイザは同一のものとして扱われる。以下では要素120を「ハイパーバイザ120」と呼ぶ。
ハイパーバイザ120はコンピュータシステム100の一部として示されているが、ある実施形態においてコンピュータシステム100はハイパーバイザを含まない。この実施形態では、クエリ実行エンジン110が、コンピュータシステム100のオペレーティングシステム(図示せず)を除くその他のソフトウェアコンポーネントによる処理を最初に要求することなく、直接コプロセッサ130に対してコマンドを発行する。
コプロセッサ130は、クエリ実行エンジン110およびハイパーバイザ120を実行する汎用プロセッサによって実行されるタスクとは別の1つ以上のタスクを実行するようにプログラムされたハードウェア要素である。コプロセッサ130は、クエリ実行エンジン110を実行する汎用プロセッサから独立したものであるが、コプロセッサ130を、クエリ実行エンジン110によって以前に実行された1つ以上のタスクをコプロセッサ130が実行するという意味においてクエリ実行エンジン110の一部とみなしてもよい。
ある実施形態において、コプロセッサ130は、指定された対象値(または値の対象範囲)をテーブルからの一連の入力値と比較するタスクを少なくとも実行する。このタスクはスキャン動作と呼ばれ以下で詳しく説明される。ある実施形態において、コプロセッサ130は、指定された複数の対象値(または指定された複数の対象範囲)を、テーブルからの一連の入力値またはデータ要素と比較することができる。
別の実施形態において、コプロセッサ130は、1つ以上の値が、特定の一組の値の中にあるか否か判断するタスクを少なくとも実行する。1つ以上の値を用いて特定の一組の値にインデックスを付けることで、上記1つ以上の値のうちの各値について特定の一組の値をスキャンする必要がなくなる。この実施形態において、コプロセッサ130は、ルックアップ動作を効率的に実行するようにプログラムされている。これについては以下で詳しく説明される。
クエリ実行エンジン110によって定められたまたは指示された初期パラメータの他に、コプロセッサ130は、スキャン動作および/またはルックアップ動作を、(開始コマンドによって示された)このスキャン動作および/またはルックアップ動作が完了するまでクエリ実行エンジン110またはその他のソフトウェアの介入を受けることなく、実行する。完了した時点で、コプロセッサ130は、この動作の結果を利用できることをクエリ実行エンジン110に信号で知らせる。この信号はフラグの設定の形態であってもよい。ハイパーバイザ120はこの信号を用いて新たなコマンドをコプロセッサ130のコマンドキューの中に挿入してもよい。
ある実施形態において、コプロセッサ130は、異なるデータ種類/フォーマットおよび要素サイズを扱うようにプログラムされる。たとえば、コプロセッサ130は、ストリングフォーマット、日付フォーマット、または数(整数または浮動)フォーマットのデータを処理し得る。また、コプロセッサ130が処理するデータ要素のサイズは、特定数のビット(たとえば7ビット)であっても特定数のバイト(たとえば2バイト)であってもよい。さらに、特定のソース(テーブル等)からのデータ要素は、可変長であっても固定長であってもよい。ある実施形態では、コプロセッサ130が(テーブル等の)オブジェクトから受けるデータ要素は1つのサイズであってもよく、コプロセッサ130は、データ要素から1バイト削除する、データ要素に9ビット追加する、またはデータ要素を圧縮解除するといった動作を、たとえばこのデータ要素を別のデータ要素と比較する前に実行することによって、データ要素のサイズを小さくまたは大きくする。
ある実施形態において、コプロセッサ130は、オンチップである、すなわち、クエリ実行エンジン110を実行する汎用マイクロプロセッサと同一のチップ上にある。コプロセッサ130は、(a)オンまたはオフチップメモリからコプロセッサ130へテーブルデータ(またはその他のデータ)をストリーミングするメモリインターフェイスと、(b)スキャン動作および/またはルックアップ動作を実行する計算ブロックとを含む。たとえばスキャン動作の場合、計算ブロックは、テーブルデータに対して動作を行ない、指定された値または値の範囲がテーブルデータの中にあるか否か判断する。このため、一組のコンパレータを使用することにより、入来するストリームの各要素が、探している値に等しいかまたは探している値の範囲の中にあるか否か判断する。一組のコンパレータの各コンパレータが同時に比較動作を実行してもよい。このため、コプロセッサ130は、複数の比較動作を同時に行なってもよい。ある実施形態において、コプロセッサ130は、1つの4バイト比較、2つの2バイト比較、4つの1バイト比較、および/または1つの2バイト比較と1つの1バイト比較といったように、複数種類の比較を実行するように構成される。コプロセッサ130は、検索結果をメモリインターフェイスを通してオンチップメモリまたはオフチップメモリに送る。
図1に示されるように、メモリ140は、コマンド142、入力データ144、および出力データ146を格納する。コマンド142に反映されるコマンドは、(1)入力データ144の少なくとも一部を格納するメモリ140内の場所、および(2)コマンドに対応する動作の結果(コプロセッサ130によって生成される)が格納されることになる場所を示す。
ある実施形態において、コプロセッサ130は、1つ以上のコマンドの1つ以上のアドレスを格納したコマンドキューを含む。ビジーでないとき、コプロセッサ130は、メモリ(たとえばメモリ140)から1つ以上のコマンド(たとえばコマンド142に反映されている)を取出すために、(ハイパーバイザ120によって挿入された)1つ以上のアドレスをコマンドキューから選択する。
コプロセッサ制御ブロック
ある実施形態において、クエリ実行エンジン110は、汎用マイクロプロセッサ(図示せず)によって実行されてコプロセッサ制御ブロック(CCB)を生成させる命令を含む。CCBは、クエリ実行エンジン110によって発行されるコマンドを表わすデータ構造であり、コプロセッサはこのデータ構造に含まれるデータを読出して処理するように構成される。ある実施形態において、CCBは、コプロセッサ130が実行しようとしている動作のタイプを示すコマンドタイプデータと、コマンドタイプデータによって示される動作に対応する1つ以上のオペランドとを含む。コプロセッサ130が1つの動作しか実行しない場合は、コマンドタイプデータはCCBで利用できるオペランドではない場合がある。これに代わるものとしては、コプロセッサ130が1つの動作しか実行しないように構成されている場合、コプロセッサ130はコマンドタイプデータを無視してもよい。
コマンドタイプデータは、コプロセッサ130がコマンドの処理においてどのロジックを使用するかを示す。このため、異なるコマンドタイプは、コプロセッサ130によって実現される異なるロジックに対応する。たとえば、スキャン動作ではコプロセッサ130が第1のロジックを実行することが要求される一方で、ルックアップ動作ではコプロセッサ130が第1のロジックと異なる第2のロジックを実行することが要求される。
CCBにおいて示されるオペランドは、2つのタイプのうちの一方、すなわち即値オペランドまたは間接オペランドであればよい。即値オペランドとは、メモリルックアップ等の、オペランドの変換を最初に要求しない動作をコプロセッサが実行するときに、コプロセッサが即時使用することができるオペランドである。スキャン動作の場合の即値オペランドの一例は、テーブルデータからのデータ要素との比較を行なうために使用される4バイトの整数である。間接オペランドとは、指定された動作をコプレッサが実行するには、その前に、最初に変換またはルックアップされなければならないオペランドである。間接オペランドの一例は、スキャン動作であるかルックアップ動作であるかに関わらず、コプレッサが動作を実行するためのテーブルデータが格納されている場所(たとえばメモリ140の中)を示す物理アドレスである。
スキャン動作の場合、CCBに示される(スキャン動作の)オペランドは、(a)テーブルデータからのデータとの比較を行なうために使用されるデータを示す比較データと、(b)テーブルデータがある場所を示す場所データ(たとえばメモリ140の中の入力データ144)とを含む。
比較データは、数、日付、文字、またはストリング等、どのような種類のデータであってもよい。比較データは、1つの値および/または値の範囲であってもよい。加えて、比較データは、複数の値および/または値の複数の範囲を示し得る。たとえば、クエリは、収入が3万ドル未満の被雇用者および収入が10万ドルと13万ドルの間の被雇用者の名前の閲覧を要求するものであってもよい。この例において、比較データは、0〜30,000という範囲および100,000〜130,000という範囲を示す。
場所データは、1つのアドレスであってもよく、または、開始アドレスと終了アドレス、もしくは、開始アドレスと開始アドレスからのオフセットといったように、複数のアドレスであってもよい。場所データにおいて示される各アドレスは、仮想アドレス、実アドレス、または物理アドレスであってもよい。ある実施形態において、ハイパーバイザ120は、CCBに示される場所データを第2の場所データに置換える。一例として、(たとえばゲスト)オペレーティングシステムは、CCBに示される、仮想アドレスである場所データを識別し、この仮想アドレスを実アドレスに置換える。次に、このオペレーティングシステムは、CCBをハイパーバイザ120に送る。ハイパーバイザ120は、マッピングテーブルにおいて実アドレスにマッピングされている物理アドレスを探し、CCBの実アドレスを物理アドレスに置換える。
ある実施形態において、CCBは出力場所データも含む。出力場所データは、CCBによって示される動作の実行結果をコプロセッサ130が送るべき場所を示す。図1では、出力場所データはメモリ140内の出力データ146を示すであろう。複数のマイクロプロセッサが同一チップ上に集積されており各マイクロプロセッサが自身のプライベートキャッシュを有する場合、これは有用であろう。このため、クエリ実行エンジン110を実行する特定の汎用マイクロプロセッサが同一チップ上の複数の汎用マイクロプロセッサのうちの1つであり、かつ、各マイクロプロセッサが異なる(たとえばL3)キャッシュと関連付けられている場合、クエリ実行エンジン110は、CCB内のパラメータとして、上記特定の汎用マイクロプロセッサに隣接または近接するキャッシュを指定すればよい。このように、コプロセッサ130は、動作の結果をRAMに送るのではなく、(CCBに示される出力場所データに基づいて)結果をキャッシュだけでなくクエリ実行エンジン110に「最も近い」特定のキャッシュにも送ってもよい。このようにして、クエリ実行エンジン110が、(a)RAMからの、(b)別のマイクロプロセッサの(またはコアの)キャッシュからの、または(c)複数のコアによって共有されている共有キャッシュからの結果を要求する必要はなくなる。これらのうちどの場合も、マイクロプロセッサ自身の(プライベート)キャッシュからデータにアクセスするよりも遥かに遅いかもしれない。代わりに、クエリ実行エンジン110は、1つ以上のハードウェア要素(すなわちこの実施の形態ではコプロセッサ)によって実行された動作の結果を格納する場所を指示してもよい。
コプロセッサ
コプロセッサ130は、(たとえばCCBの形態の)コマンドをハイパーバイザ120のインターフェイスを通して(またはクエリ実行エンジン110から直接)受けると、コマンドの発行元であるクエリ実行エンジン110のスレッドとは非同期で、このコマンドを実行する。コプロセッサ130は、複数のコマンドを受けた場合には、ラウンドロビン方式で実行するようにこれら複数のコマンドをスケジュールすればよい。いくつかのコマンドが並列に実行されてもよい。
ある実施形態において、コマンドに関する入力データ(たとえばリレーショナルデータ)は、(クエリ実行エンジン110に対する)インターフェイスを通してフェッチされ、コマンドの結果(すなわちこの入力データに基づいてコプロセッサ130が生成した結果)は、このインターフェイスを通して書出される。
ある実施形態において、コプロセッサ130は、各コマンドの終了時にインターフェイスを通して完了状態をこのインターフェイスの完了データ構造に書出させる。クエリ実行エンジン110は、完了データ構造を用いてクエリ実行エンジン110の1つ以上のスレッドと再度同期させてもよい。
図2は、ある実施形態に従う、コプロセッサ200の一例を示すブロック図である。コプロセッサ200は図1のコプロセッサ130であってもよい。コプロセッサ200は、メモリインターフェイス210と、コマンドスケジューラ220と、デコンプレッサ230と、クエリパイプ240と、メッセージパイプ250とを含む。メッセージパイプ250は、メモリのコピーおよびメッセージの送達を扱う。クエリパイプ240は、デコンプレッサ230が圧縮された入力データ(たとえばリレーショナルテーブルからのデータ)を圧縮解除した後の、スキャンコマンドまたはルックアップコマンド等の、1つ以上のクエリコマンドを扱う。
デコンプレッサ230は、単一フォーマットで圧縮されたデータのみを圧縮解除するように構成されてもよい。これに代わるものとして、デコンプレッサ230は、あるフォーマットで圧縮されたデータおよび別のフォーマットで圧縮された他のデータを圧縮解除するように構成されてもよい。ある実施形態では、コプロセッサ200はデコンプレッサ230を含まない。コプロセッサ200がデータを受けたときに、コプロセッサ200が受けたデータが圧縮されていない(たとえば既に圧縮解除されている)場合、圧縮解除は不要であろう。また、コンプレッサ200が、圧縮されたデータを先ず圧縮解除せずに圧縮されたデータに対して直接作業を行なうように構成されている場合、データが圧縮されていても圧縮解除は不要であろう。
パイプ240および250は各々、異なる組のコマンドキューと、任意でコマンドフォーマットと、関連付けられている。ハイパーバイザ120は、(CCBに反映されている)コマンドが正しいパイプのコマンドキューに向けられるのを保証するように構成される。CCBの中のフラグビットが、CCBがメッセージコマンドなのかまたはクエリコマンドなのか示してもよい。
パイプ240および250は各々、マルチスレッド化されて複数のコマンドを一度に実行することが可能であってもよい。マルチスレッドの程度はソフトウェアに公開されていない。コマンドスケジューラ220は、コマンドは並列処理が可能であるという前提で、利用可能なスレッド上にコマンドをスケジュールしてもよい。あるコマンドを別のコマンドの後ろにシリアライズする必要がある場合は、これら2つのコマンドを同一のコマンドキューの中に入れて適切なシリアライズフラグを両方のコマンドにセットしてもよい。
図には示されていないが、コプロセッサ200は、メモリインターフェイス210を通してストリーミングされているときのデータを格納、または、その一例がブルームフィルタであるルックアップベクトル等のルックアップ動作で使用されるデータを格納するための、一定量のメモリを含む。現代のチップは概ねメインコアまたは汎用マイクロプロセッサ用の1つ以上のキャッシュで構成されているので、コプロセッサ200のメモリの大きさは極めて小さい場合がある(たとえば4KB)。
クエリ実行エンジン110はリレーショナルテーブルデータを「観察し」それに応じて動作を実行するが、コプロセッサ200はベクトルまたは一次元配列のデータを「見る」またはそれに対して動作を行なうだけである。言い換えると、コプロセッサ200は複数の列または行識別子を「観察」しない。むしろ、コプロセッサ200は、如何にしてデータが論理的に配列または格納されているかということについては不確かである。したがって、コプロセッサ200に命令を与えるとき、クエリ実行エンジン110は、コプロセッサ200が実行する動作の出力が特定の順序で格納されることを保証する。そうでなければ、クエリ実行エンジン110は、出力がテーブルのどの部分に対応するのかわからないであろう。順序を保つ1つの方法は、クエリ実行エンジン110が、どのテーブルデータセットがどのCCBに対応するのか追跡することであり、この場合の各CCBは固有のCCB識別子を含む。そうすると、特定のCCBに基づいてコプロセッサ200が生成した出力は、この特定のCCBの識別子を含むことになり、クエリ実行エンジン110は、出力が論理テーブルのどの部分に対応するか判断することができる。たとえば、クエリ実行エンジン110は、テーブルEmployeeの行1001〜2000をCCB識別子432899と対応付ける対応付けデータを格納してもよい。コプロセッサ200は、識別子432899を有するCCBを受けて処理することにより、特定の場所に格納される出力を生成する。
これに代わるものとして、クエリ実行エンジン110は、CCB識別子を追跡する代わりに、テーブルのある部分(たとえばテーブルEmployeeの行1001〜2000)を示すテーブルデータを、コプロセッサ200によって生成された出力を格納すべき場所を示す出力場所データ(たとえば物理アドレス1298737+4KB)と対応付ける、対応付けデータを格納する。その後、クエリ実行エンジン110がその格納場所に格納されている出力を調べるときに、クエリ実行エンジン110はこの対応付けデータを使用して、テーブルのどの部分がこの出力に対応しているか判断する。このように、コプロセッサ200はその時々においてテーブルの異なる部分に対して動作を行なうが、また、クエリ実行エンジン110は複数のコプロセッサに対してテーブルの異なる部分に対して動作を行なうよう命令するかもしれないが、クエリ実行エンジン110は出力の順序を追跡することができる。
クエリの処理
図3は、ある実施形態における、スキャン動作を要求するクエリを処理するためのプロセス300を示すフロー図である。ブロック310で、クエリ実行エンジン110は、1つ以上のテーブル等のデータオブジェクトを対象としこの1つ以上のデータオブジェクトのうちの少なくとも1つのスキャン動作を要求するクエリを受ける。たとえば、クエリ実行エンジン110は、SQLクエリを処理することにより、スキャン動作を含む1つ以上のデータベース動作を含む書換えられたクエリを生成してもよい。このクエリ実行エンジン110は、1つ以上の他のソフトウェアコンポーネントを実行するように、または、1つ以上の他のソフトウェアコンポーネントの実行を命令するように構成される。これに代わるものとしては、別のソフトウェアコンポーネントが、元のクエリを受け、クエリ実行エンジン110が処理するように構成されている、書換えられたクエリを生成する。
ブロック320で、クエリ実行エンジン110は、1つ以上の基準に基づいて、コプロセッサ130をクエリの処理に関与させるか否か判断する。この1つ以上の基準が示し得るものは、結果が過去に生成されキャッシュされたか否か、テーブル上にインデックスが存在しテーブルをスキャンする代わりにこのインデックスを用いてクエリに回答し得るか否か、テーブルのサイズ、その他である。たとえば、スキャンする必要があるテーブルのサイズが比較的小さい場合、コプロセッサ130を関与させると、コプロセッサ130を関与させずにクエリを実行するよりも、(たとえばクエリ実行エンジン110の命令を実行する汎用マイクロプロセッサを使用するという形で)より多くの作業が必要となる、または、より時間がかかるかもしれない。
これに加えてまたはこれに代えて、上記1つ以上の基準は、クエリ(または書換えられたクエリ)を異なるやり方で処理するのに要する相対コストを示してもよい。たとえば、クエリ実行エンジン110は、インデックスの使用、コプロセッサ130を使用せずにテーブルをスキャン、およびコプロセッサ130を使用してテーブルをスキャンといった異なる実行計画の下でクエリを実行するコストを推定するコスト推定要素を含んでいてもよい。その場合、クエリ実行エンジン110は、コストという観点で最も費用がかからない実行計画を選択する。「コスト」は、CPUの使用量、メモリの使用量、I/Oの使用量、およびネットワークI/Oの使用量といった、1つ以上のファクタに基づいていてもよい。
クエリ実行エンジン110が、コプロセッサ130をクエリの実行に関与させると判断した場合、プロセス300はブロック330に進む。
ブロック330で、クエリ実行エンジン110は、ハイパーバイザ120に、1つ以上の命令のアドレス、入力データのアドレス、および出力データを格納する場所のアドレスを送る。上記1つ以上の命令は、クエリ実行エンジン110が生成するCCBの形態であってもよい。ハイパーバイザ120は、このアドレスを仮想アドレスから物理アドレスに変換し、この物理アドレスを、コプロセッサ130のコマンドキューまたはバッファの中に置く。
クエリ実行エンジン110は、上記1つ以上の命令をメモリに格納させ(したがってこの命令はコプロセッサ130が読出すことができる)、その後、このクエリの実行に関連するまたは別のクエリに全体的に関連する他のタスクを実行してもよい。このようにして、コプロセッサ130によって行なわれる動作は、汎用マイクロプロセッサによって実行されるクエリ実行エンジン110が行なうタスクとは非同期で行なわれる。
先に述べたように、コンピュータシステム100は複数のコプロセッサを含んでいてもよい。このため、クエリ実行エンジン110は命令(たとえばCCB)を複数のコプロセッサ各々に送ってもよい。このようにして、スキャン動作またはルックアップ動作を複数の「ミニ」動作に分割し、異なる「ミニ」動作をそれぞれのコプロセッサに実行させてもよい。たとえば、特定のテーブルが10,000行を含み10個のコプロセッサがあるとする。その場合、クエリ実行エンジン110は互いに異なる10個のCCBを生成すればよく、各CCBは、この特定のテーブルの1,000行からなる異なる1組の行にアクセスするための異なるアドレスを示す点を除いて、他のCCBと同様である。このようにして、10個のコプロセッサは、この特定のテーブルの異なる部分に対して並列に動作する。
これに加えてまたはこれに代えて、ブロック330は、クエリ実行エンジン110が、1つ以上の基準に基づいて、CCBの送り先として複数のコプロセッサからなるサブセットを選択することを含む。たとえば、クエリ実行エンジン110にとって必要なのは、各々スキャン動作を実行する(なおこのスキャン動作はそれぞれテーブルデータの異なる組に対して行なわれる)合計10個のコプロセッサのうち、3つのコプロセッサのみの場合がある。1つ以上のコプロセッサを選択するためにクエリ実行エンジン110が使用する1つ以上の基準は、各コプロセッサの現在の負荷、各コプロセッサのレイテンシ、および/または各コプロセッサの処理履歴であってもよい。たとえば、クエリ実行エンジン110は、現在最も「負荷」が小さいまたは最も忙しくない3つのコプロセッサを選択する。コプロセッサの負荷は、コプロセッサの1つ以上のコマンドキューの中にあるコマンドの数に反映されていてもよい。その場合、特定のコプロセッサによる処理を待っているコマンドが多いほど、この特定のコプロセッサの負荷は大きい。
ブロック340で、コプロセッサ130は、上記1つ以上の命令を受け、この1つ以上の命令に反映されている1つ以上の動作を実行する。たとえば、コプロセッサ130は、CCBを受け、このCCBに反映されている動作の種類を判断し、この動作を完了するのに必要なデータを読込み、この動作を実行し、(ブロック350で)動作結果をクエリ実行エンジン110に送らせる。コプロセッサ130によるコマンドの実行は、クエリ実行エンジン110(またはそのエージェントのうちの1つ)による、コプロセッサ130の1つ以上の内部レジスタへの書込によってトリガされてもよい。
スキャン動作
ある実施形態において、上記1つ以上の命令は、スキャン動作と、テーブルデータが格納されている1つ以上のアドレスを示す。コプロセッサ130は、テーブルデータを取出して、(上記1つ以上の命令において指定されている)値または値の範囲と、このテーブルデータを比較する。コプロセッサ130は、メモリ(たとえばメモリ140)を通してクエリ実行エンジン110からのテーブルデータを要求する。このメモリは、システム内のダイナミックRAMでもチップ上のキャッシュメモリでもよい。テーブルデータは、ブロックに格納されていてもよく、64KBまたはそれ以上といったように比較的大きくてもよい。コプロセッサ130は、一次元配列としてのこれらのブロック各々にアクセスすればよい。列指向データベースでは、データは一次元アレイであり、コプロセッサ130はこれを容易に読出すことができる。行優先データベースの場合、データは、コプロセッサ130によって処理される前に、先ず列優先フォーマットに変換されてもよい。
テーブルデータが存在するブロックがメモリ内の不連続のブロックである場合、コプロセッサ130は(別々のジョブとして)各ブロックを別々に要求する。このような場合、クエリ実行エンジンは、(コプロセッサ130によって生成される)各ジョブの結果を「縫い合わせる」。たとえば、行優先データベースでは、データが跨っておりコプロセッサ130はN番目毎のデータを選択することになる。Nはコマンドにおいて指定されている。
コプロセッサ130は、比較を、「オン・ザ・フライ」で、すなわちテーブルデータがコプロセッサ130にストリーミングされているときに、実行してもよい。テーブル内のデータ要素が、1つ以上の命令において指定されている対象値または値の対象範囲と比較されると、コプロセッサ130は(直ちにまたは最後に)、このデータ要素を格納するのに使用されているメモリを、テーブルデータからの新たなデータ要素で上書きしてもよい。
コプロセッサが実行するように構成されている比較動作のタイプの例には、〜より大きい(>)、未満(<)、等しい(==)、等しくない(!=)、〜以上(>=)、〜以下(=<)が含まれる。
意味を認識した圧縮
ある実施形態において、コプロセッサ130は、圧縮されたデータに対して動作するように構成される。意味を意識しない(non-semantic-aware)1つ以上の圧縮技術を用いて圧縮されるデータと、意味を意識した(semantic-aware)1つ以上の圧縮技術を用いて圧縮されるデータがある。意味を意識しない圧縮技術を用いて圧縮されたデータは、先ず圧縮解除される必要があり、圧縮解除されたデータに対して動作を行なうことができる。意味を意識した圧縮技術を用いて圧縮されたデータは、動作(たとえば数またはストリングの比較)の実行前に圧縮解除する必要はない。意味を意識した圧縮技術の一例として、ランレングス符号化(run-length encoding)(RLE)がある。
RLEは、データ圧縮の一形態であり、データの連なり(すなわち多数の連続するデータ要素における同一データ値の連続)を、元の連なりとしてではなく単一データとして格納しカウントする。このような連なりが多数含まれているデータにとってこれは最も有用である。一例として、テーブルの1つの列に、以下に示すシーケンスデパートメント識別子が含まれているとする。
AAAAAABBBCCCCCCCCCDDDDDAAAA
上記シーケンスにRLEデータ圧縮アルゴリズムを適用すると、出力は、6A3B8C5D4Aとなる。このランレングス符号は、元の26文字をわずか10文字で表わしている。RLEでは、入力シーケンスにおける1つのデータ値の連なりが長いほど、大きく圧縮される。
ブロック340に戻ると、テーブルデータはランレングス符号化されてもよい。このため、コプロセッサ130に読込む必要があるテーブルデータの数、および、ランレングス符号化されたテーブルデータに対してコプロセッサ130が実行する必要がある比較の数は、テーブルデータがランレングス符号化されない場合と比較すると、相当に少なくなるであろう。上記例の場合、コプロセッサ130は、26の比較(すなわち26文字各々につき1つの比較)を実行する代わりに、5つの比較を実行するだけでよい。
ランレングス符号化されたデータに対するスキャン動作の実行結果は、それ自体がランレングス符号化されてもよい。この結果は最終的にクエリ実行エンジン110によって処理されてもよい。上記例の場合、特定のテーブルのある行が、デパートメント識別子「A」を含むか否かについての判断の結果は、6Y16N4Yとなるであろう。このうちの「Y」は判断の肯定結果を表わし、「N」は判断の否定結果を表わす。
これに代わるものとして、ランレングス符号化されたデータに対するスキャン動作の実行結果はランレングス符号化されなくてもよい。その代わりに結果は「圧縮解除」されてもよい。上記例の場合、特定のテーブルのある行が、デパートメント識別子「A」を含むか否かについての判断の結果は、YYYYYYNNNNNNNNNNNNNNNNYYYYとなるであろう。この実施形態では、スキャン動作の間、文字「C」に対し1つの比較が実行されているが、コプロセッサ130は、ランレングス符号化されたデータ要素に対して8つの否定表示(たとえば「N」または「0」)を生成する。
ルックアップ動作
SQLクエリは、データベース内の複数のテーブルを相互参照する必要があることが多い。このようなクエリの処理は通常、セット‐インターセクト動作を必要とする。現在、セット‐インターセクト動作は、汎用マイクロプロセッサ上で走らせているソフトウェアによって実行され、このソフトウェアは、関与しているテーブル列の基数が小さいときにはベクトルルックアップ(たとえばブルームフィルタルックアップ)を利用する。ある実施形態に従うと、ベクトルルックアップ(またはルックアップ動作)は、ハードウェアに実装され、これはソフトウェアで実装するよりも遥かに速いであろう。
このため、ある実施形態において、(ブロック330の)1つ以上の命令は、ルックアップ動作、テーブルデータが格納されている1つ以上のアドレス、および、ルックアップベクトルまたはアレイが格納されている1つ以上のアドレスを示す。テーブルデータ(またはルックアップベクトル)が格納されているこの1つ以上のアドレスは、2つのアドレス(たとえば開始アドレスと終了アドレス)であっても、オフセット付きの1つのアドレスであってもよい。コプロセッサ130は、このルックアップベクトルとテーブルデータをコプロセッサ130に送らせ、テーブルデータ内の各データ要素について、ルックアップベクトル内のデータ要素のルックアップを実行する。言い換えると、コプロセッサ130は、データ要素(またはデータ要素のハッシュ)を用いて、ルックアップベクトルにおける位置を識別しルックアップベクトルからその位置にあるデータを取出す。
ルックアップ動作を要求するクエリの例
ルックアップ動作を要求し得るクエリの一例として、「富裕層の」郵便番号に居住している「貧しい」人々に関する情報を要求するクエリがある。「貧しい」人を年収3万ドル未満の人と考えてもよく、「富裕層の」郵便番号を所得の中央値が10万ドルを超える層の郵便番号と考えてもよい。この例において、コプロセッサ130は、少なくとも2つのデータオブジェクトから、すなわちルックアップベクトルと人物テーブルからのデータを必要とする。ルックアップベクトルは(たとえば1ビットで)郵便番号が「富裕層」のものか否かを示す。ルックアップベクトルは、予め(すなわちクエリを受ける前に)計算されていてもよく、クエリを受けたことに応じて計算されてもよい。
人物テーブルは、多数の人々に関する情報を含み、このテーブルは、少なくとも3つの列、すなわち、各個人の名前の列と、各個人の給与の列と、各個人の郵便番号の列とを含む。ある側面において、郵便番号が富裕層のものか貧困層のものかを示すデータはディメンションテーブルであり、各個人に関する情報を含む人物テーブルはファクトテーブルである。ディメンションテーブルは通常ファクトテーブルよりも遥かに小さい。この例において、ルックアップベクトルはディメンションテーブルに基づいて生成されてもよい。関連して、ファクトテーブルは複数のデータオブジェクト(たとえばテーブル)によって表されてもよい。すなわち、あるデータオブジェクトが各個人の給与に関する情報を含み別のデータオブジェクトが各個人の郵便番号に関する情報を含んでいてもよい。
ルックアップベクトル
ルックアップベクトルの一例はブルームフィルタである。ブルームフィルタは、要素が集合のメンバーであるか否かテストするのに使用される確率的データ構造である。ブルームフィルタを使用するとき、偽陽性(false positive)の可能性はあるが偽陰性(false negative)の可能性はない。ブルームフィルタは1つ以上のハッシュ関数と関連付けられ、各ハッシュ関数は、要素をブルームフィルタ内の配列位置のうちの1つにマッピングする。
しかしながら、ルックアップベクトルが確率的である必要はない。たとえば、存在し得る郵便番号が10,000個しかなく、各郵便番号が、その郵便番号が「富裕層の」ものか否かを示す1ビットと対応付けられているのであれば、ルックアップベクトルのサイズ(たとえば1.25KB)はルックアップベクトル全体をコプロセッサ130のメモリ(たとえばSRAM)に嵌め込むのに十分小さいであろう。したがって、サイズ削減のためには確率的ルックアップベクトルは不要である。
図4は、ルックアップベクトル400の一例の一部を示すブロック図である。ルックアップベクトル400内の位置はそれぞれ異なる郵便番号と対応付けられている。言い換えると、郵便番号は、ルックアップベクトル400にインデックスを付けるために使用される。ルックアップベクトル400内の各位置は、対応する郵便番号が「富裕層の」郵便番号(「1」)か「貧困層の」郵便番号(「0」)かを示す1ビットを含む。
コプロセッサ130のメモリにルックアップベクトル全体を嵌め込むことができない場合は、(確率的ルックアップベクトルを生成する以外に)(a)ルックアップベクトルを分裂させて(すなわち分割して)ルックアップベクトルの各部分に対してその都度コプロセッサ130がテーブルデータを読込むようにするか、または、(b)複数のコプロセッサがある実施の形態において、それぞれのコプロセッサが、格納するルックアップベクトルの一部分に対して一度だけテーブルデータを読込むようにすればよい。
前者の場合において、コプロセッサ130がたとえばルックアップベクトルの四分の一しかそのメモリに嵌め込むことができないのであれば、コプロセッサ130は、個人の郵便番号を示すテーブルデータを4回読出す(すなわちコプロセッサ130が読込むルックアップベクトルの各部分につき一回)。ある個人の郵便番号がどの回でもテーブルデータにおいて識別されなければ、その個人についての結果は否定判定を示すであろう。毎回のテーブルデータの結果は、人物テーブルに示される各個人に対し、1つの長いビット配列であってもよい。
後者の場合において、4つの異なるコプロセッサがそれぞれルックアップベクトルの異なる四分の一を格納し、個人の郵便番号を示すテーブルデータを一度読込んでから、テーブルデータに反映されている各郵便番号を探してルックアップベクトルのルックアップを実行すればよい。この場合も、各コプロセッサからのルックアップ動作の結果は、人物テーブルに示される各個人に対する、1つの長いビット配列であってもよい。
スキャンまたはルックアップ動作の結果の生成
ある実施形態において、コプロセッサ130は、上記1つ以上の命令に反映されている1つ以上の動作を実行した結果として、特定の出力フォーマットを生成する。この特定の出力フォーマットの一例はビットベクトルであり、ビットベクトル内の各位置は真または偽を示す。たとえば、「10」が対象とする値であり、比較が、この対象値がテーブルからのあるデータ値またはデータ要素よりも大きいか否か判断することであれば、比較の結果は、(a)データ値が10よりも大きければ真であり、(b)データ値が10以下であれば偽である。
このベクトル内の各位置は、入力(たとえばテーブル)データから受けたデータ値またはデータ要素に対応する。たとえば、上記ルックアップ動作の例の場合、コプロセッサ130は、「富裕層の」郵便番号に居住している「貧困層の」人々を反映する1ビットベクトルを生成する。このビットベクトルを生成するために、コプロセッサ130は、人物テーブルの郵便番号列からデータを読込み、読込んだデータに示される各人物について、ルックアップベクトルに基づき、この人物が「富裕層の」郵便番号に居住しているか否か判断する。このビットベクトル内の各ビットは、人物テーブルの中の異なる人物が「富裕層の」郵便番号に居住しているか否かを示す。コプロセッサ130はその後、ビットベクトルを汎用マイクロプロセッサに送り、これはビットベクトルを用いて、「貧しい」とも考えられる人物を識別する。たとえば、(ビットベクトルに示される)富裕層の郵便番号に居住している各人物について、汎用マイクロプロセッサは人物テーブルの対応する行をルックアップしてその人物が「貧しい」か否か判断する。
ビットベクトルのサイズは比較的小さいので、汎用マイクロプロセッサによるこのビットベクトルの処理は比較的速く、汎用プロセッサが入力データを直接処理する場合よりも遥かに速い。さらに、このビットベクトルを格納するのに必要なキャッシュメモリスペースは、(データの大きな列等の)入力データを格納するのに必要なキャッシュメモリ空間よりも大幅に小さい。
スキャンまたはルックアップ動作の結果の生成
プロセス300に戻って、ブロック350で、コプロセッサ130は、スキャン動作(またはルックアップ動作)の結果をクエリ実行エンジン110が利用できるようにする。ブロック350は、コプロセッサ130が、動作の結果を、その動作を開始したクエリ実行エンジン110からの1つ以上の命令に指定されているメモリに送ることを含み得る。たとえば、クエリ実行エンジン110は、CCBを生成し、このCCBにおいて、対応する動作の結果が、たとえば、DRAM、共有L3キャッシュ、または(たとえばクエリ実行エンジンを実行する、または、元のコマンドを生成したマイクロプロセッサと異なる)特定のマイクロプロセッサのキャッシュに送られることになっていることを示す。
ブロック350はさらに、コプロセッサ130がフラグをセットすることを含み得る。このフラグはセットされると動作の完了を示す。このフラグ設定は、(1)ハイパーバイザ120が新たな要求をコプロセッサ130のコマンドキューに挿入し(2)クエリ実行エンジン110が結果を取出すよう合図する信号として機能する。
これに代えて、コプロセッサ130は、クエリ実行エンジン110にアクセス可能な特定のメモリ要素(RAMまたはキャッシュ)に動作結果を常に送るようにプログラムされる。
これに代わるものとして、コプロセッサ130は、スキャン動作の結果をクエリ実行エンジン110が利用できるようにする代わりに、結果を別のコプロセッサに送る。先に述べたように、コンピュータシステム100は複数のコプロセッサを含み得る。複数のコプロセッサは連続して接続されてもよい。2つのコプロセッサ間の各接続がFIFOバッファを含み「生産」コプロセッサが「消費」コプロセッサによる結果処理速度よりも速く結果を生成できるようにしてもよい。最終的に、「チェーン」内の最後のコプロセッサが、クエリ実行エンジン110にアクセス可能なRAMまたはキャッシュ内等の指定された宛先に、結果を送る。
ブロック360で、クエリ実行エンジン110は、結果を処理し、元のクエリの最終結果を生成するために1つ以上の他の動作を実行する。コプロセッサ130がスキャンまたはルックアップ動作を実行する間、クエリ実行エンジン110を実行する汎用マイクロプロセッサは、アイドル状態であってもよく、または、クエリ実行エンジン110もしくは別のプロセスによって利用されてもよい。たとえば、クエリ実行エンジン110は、クエリが要求する1つ以上の他の動作、または、そのクエリには全く関連性がないが別のクエリに関連する1つ以上の他の動作を実行してもよい。
スキャン動作の一例として、クエリは、特定範囲の日付の中で開始された購入注文のIDおよび価格を要求する場合がある。この例において、コプロセッサ130が実行するスキャン動作は、複数の購入注文の日付情報を読込むことを含み、この日付情報は、購入注文テーブルに反映されている。このスキャン動作の結果は一連のビット(たとえばビットベクトル)であってもよく、このビットは各々、対応する購入注文が、指定された日付範囲の中で開始されたか否かを反映する。コプロセッサ130は、クエリ実行エンジン110にアクセス可能なメモリにその結果を送り、クエリ実行エンジン110が定期的にチェックするフラグをセットすることによって、スキャン動作の完了をクエリ実行エンジン110に知らせてもよい。そうすると、クエリ実行エンジン110は、このビットを用い、購入注文テーブルにおいて、指定された日付範囲の中で開始された購入注文に対応するエントリを識別する。次に、クエリ実行エンジン110は、識別されたエントリにおいてIDおよび価格を識別し、この情報をクエリの結果として返す(たとえば表示する)。また、クエリは、クエリの結果が価格の降順で並べられるよう指定してもよい。このように、クエリ実行エンジン110は、コプロセッサ110によって実行されたスキャン動作の結果を受けた後に、1つ以上の動作を実行する。
ルックアップ動作の例として、クエリが、コプロセッサ130にルックアップ動作の実行を命令することに加えて、「富裕層の」郵便番号に居住している「貧しい」人々を識別しようとするものである場合、クエリ実行エンジン110は、コプロセッサ130(または別のコプロセッサ)に、人物テーブルに対してスキャン動作を実行して年収3万ドル未満の人すべてを識別するよう命令していてもよい。このスキャン動作の結果は(ルックアップ動作の結果と同様)一連のビット(たとえばビットベクトル)の形態であってもよく、このうちの各ビットは人物テーブルに示される異なる人物に対応する。ある実施形態において、クエリ実行エンジン110は、入力としてのスキャン動作の結果およびルックアップ動作の結果に対してAND演算を実行する。これに代わるものとして、コプロセッサ130(または別のコプロセッサ)をAND演算を実行するようプログラムしてもよい。この実施形態において、クエリ実行エンジン110は、ルックアップ動作の結果に対する(たとえば仮想)アドレスおよびスキャン動作の結果に対するアドレスをオペランドが含む別のCCBを作成してもよい。
先に説明したように、ルックアップベクトルのサイズが、一度でコプロセッサ130のメモリに全体が嵌らないサイズの場合がある。先に述べた2つの場合のうちの一方において、ルックアップベクトルは4つの「ミニ」ベクトルに分割されコプロセッサ130は各ミニベクトルに対して別々に動作するので、コプロセッサ130が各人物について4回郵便番号データを(人物テーブルから)読込むことが必要である。このルックアップ動作を実行するコプロセッサ130によって生成された総合結果は、別々の4つのビットアレイを含み得る。これらは最終的にともにOR演算されて1つのビットアレイ(この場合も人物テーブルに示される各人物について1つ)が生成される。このOR演算ステップ(3つのOR演算を含み得る)は、クエリ実行エンジン110が実行してもよい。これに代えて、コプロセッサ130がこのOR演算を実行するようにプログラムされてもよい。
上記2つの場合のうちの他方では、クエリ実行エンジン110が、4つの異なるコプロセッサに、ルックアップベクトルの異なる部分をそれぞれ用いてルックアップ動作を実行するようにさせる。次に、コプロセッサのうちの1つからの結果を、それ以外のコプロセッサ各々からの結果とOR演算することによって、1つのビットアレイ(人物テーブルに示される各人物について1つ)を生成する。この場合も、このOR演算ステップは、クエリ実行エンジン110によって行なわれてもよく、またはコプロセッサのうちの1つによって行なわれてもよい。
上述のように、クエリ実行エンジン110は、どの人々が「富裕層の」郵便番号に居住しているか判断すると、その情報を用いて「貧困層」でもあると考えられる人々を判別する。
上記説明では、スキャン動作かルックアップ動作いずれかを実行すると述べているが、実施形態は、1つのコプロセッサが特定のクエリに対してスキャン動作を実行する一方で別のコプロセッサがこの特定のクエリに対してルックアップ動作を実行することを含み得る。このように、複数のコプロセッサが、同一のクエリに対して異なる動作を同時に実行してもよい。
本明細書に記載の実施形態の1つの利点は、データ量が多い動作を、汎用マイクロプロセッサから、このマイクロプロセッサから独立した1つ以上のコプロセッサに移すことによって、他のタスクのために使用できるようマイクロプロセッサを解放し得る点である。このため、コプロセッサは、コプロセッサに動作を実行させるクエリ処理ソフトウェアとは非同期で動作し得る。加えて、上記1つ以上のコプロセッサは、クエリ処理ソフトウェアを実行する汎用マイクロプロセッサよりも遥かに速く上記動作を実行し得る。
ハードウェアの概要
1つの実施形態によれば、ここに記載される技術は、1つ以上の特定用途向け演算装置によって実装される。特定用途向け演算装置は、ハードウェアによって技術を実装し得る、または技術を実装するように永続的にプログラミングされた1つ以上の特定用途向け集積回路(ASIC)もしくはフィールドプログラマブルゲートアレイ(FPGA)などのデジタル電子装置を含み得る、またはファームウェア、メモリ、他の記憶装置、もしくは組み合わせにおけるプログラムコマンドに従って技術を実装するようにプログラムされた1つ以上の汎用ハードウェアプロセッサを含み得る。このような特定用途向け演算装置は、技術を達成するために、カスタムプログラミングにカスタムハードワイヤードロジック、ASIC、またはFPGAを結合させ得る。特定用途向け演算装置は、デスクトップコンピュータシステム、ポータブルコンピュータシステム、携帯用デバイス、ネットワーキングデバイス、または、技術を実装するためにハードワイヤードロジックおよび/もしくはプログラムロジックを組み込んだ任意の他の装置であってもよい。
たとえば、図5は、本発明の実施形態が実装され得るコンピュータシステム500を示すブロック図である。コンピュータシステム500は、バス502または情報を通信するための他の通信機構と、情報を処理するためにバス502に結合されたハードウェアプロセッサ504とを含む。ハードウェアプロセッサ504は、たとえば、汎用マイクロプロセッサであってもよい。
コンピュータシステム500は、情報およびプロセッサ504によって実行されるコマンドを格納するためにバス502に結合された、ランダムアクセスメモリ(RAM)または他の動的記憶装置などのメインメモリ506も含む。メインメモリ506は、プロセッサ504によって実行されるコマンドの実行中に一時変数または他の中間情報を格納するためにも使用され得る。このようなコマンドは、プロセッサ504にアクセス可能な非一時的な記録媒体に格納されると、コマンドにおいて指定された動作を行なうようにカスタマイズされた特定用途向けマシンにコンピュータシステム500を変える。
コンピュータシステム500は、プロセッサ504のための静的情報およびコマンドを格納するためにバス502に結合された読出し専用メモリ(ROM)508または他の静的記憶装置をさらに含む。磁気ディスク、光ディスク、またはソリッドステートドライブなどの記憶装置510が設けられ、情報およびコマンドを格納するためにバス502に結合される。
コンピュータシステム500は、コンピュータのユーザに対して情報を表示するための陰極線管(CRT)などのディスプレイ512にバス502を介して結合され得る。英数字および他のキーを含む入力装置514は、プロセッサ504に対して情報およびコマンド選択を伝えるためにバス502に結合される。別のタイプのユーザ入力装置は、方向情報およびコマンド選択をプロセッサ504に伝えるための、およびディスプレイ512上でのカーソル移動を制御するための、マウス、トラックボール、またはカーソル方向キーなどのカーソル制御516である。この入力装置は、通常、第1の軸(たとえばx)および第2の軸(たとえばy)という2つの軸において2つの自由度を有し、これによって面における位置をこの装置が指定できる。
コンピュータシステム500は、カスタマイズされたハードワイヤードロジック、1つ以上のASICもしくはFPGA、ファームウェアおよび/またはプログラムロジックをコンピュータシステムと組み合わせて使用してここに記載する技術を実装し、コンピュータシステム500を専用マシンとする、または専用マシンへとプログラミングする。一実施形態によれば、ここでの技術は、メインメモリ506に含まれる1つ以上のコマンドの1つ以上のシーケンスをプロセッサ504が実行することに応答してコンピュータシステム500によって行なわれる。このようなコマンドは、記憶装置510などの他の記録媒体からメインメモリ506に読込まれ得る。メインメモリ506に含まれるコマンドのシーケンスを実行することにより、ここに記載の処理ステップがプロセッサ504によって実行される。代替的な実施形態において、ハードワイヤード回路は、ソフトウェアコマンドの代わりに、またはソフトウェアコマンドと組み合わせて使用され得る。
ここで使用される用語「記録媒体」は、特定の方法でマシンを動作させるデータおよび/またはコマンドを格納する任意の非一時的な媒体をいう。このような記録媒体は、不揮発性の媒体および/または揮発性の媒体を含み得る。不揮発性の媒体は、たとえば、記憶装置510などの光ディスク、磁気ディスク、またはソリッドステートドライブを含む。揮発性の媒体は、メインメモリ506などの動的メモリを含む。記録媒体の一般的な形式は、たとえば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープもしくは任意の他の磁気データ記録媒体、CD−ROM、任意の他の光データ記録媒体、穴のパターンを伴う任意の物理媒体、RAM、PROM、およびEPROM、FLASH−EPROM、NVRAM、任意の他のメモリチップもしくはカートリッジを含む。
記録媒体は、伝送媒体とは異なるが、伝送媒体と併せて使用され得る。伝送媒体は、記録媒体間の情報の転送に関わる。たとえば、伝送媒体は、バス502を包含するワイヤを含む、同軸ケーブル、銅線、および光ファイバを含む。伝送媒体は、電波および赤外線データ通信時に生成されるような音波または光波の形式を取り得る。
さまざまな形式の媒体は、プロセッサ504が実行する1つ以上のコマンドの1つ以上のシーケンスの搬送に関わり得る。たとえば、コマンドは、リモートコンピュータの磁気ディスクまたはソリッドステートドライブ上に最初は担持され得る。リモートコンピュータは、そのダイナミックメモリにコマンドをロードし、モデムを用いて電話回線を介してコマンドを送ることができる。コンピュータシステム500内のモデムは、電話回線上のデータを受け、赤外線送信器を使用してデータを赤外線信号に変換することができる。赤外線検知器は、赤外線信号で運ばれたデータを受けることができ、適切な回路によってこのデータをバス502上に置くことができる。バス502はデータをメインメモリ506に送り、このメインメモリからプロセッサ504はコマンドを取出して実行する。メインメモリ506が受けたコマンドは、プロセッサ504による実行の前または後に記憶装置510上に任意に格納され得る。
コンピュータシステム500は、バス502に結合された通信インターフェイス518も含む。通信インターフェイス518は、ローカルネットワーク522に接続されたネットワークリンク520に結合する双方向データ通信を提供する。たとえば、通信インターフェイス518は、統合サービスデジタル網(ISDN)カード、ケーブルモデル、衛星モデム、またはモデムであり対応するタイプの電話回線へのデータ通信接続を提供してもよい。別の例として、通信インターフェイス518は、ローカルエリアネットワーク(LAN)カードであり対応のLANへのデータ通信接続を提供してもよい。無線リンクも実装され得る。このような実装例において、通信インターフェイス518は、さまざまなタイプの情報を表わすデジタルデータストリームを運ぶ電気信号、電磁信号、または光信号を送信および受信する。
ネットワークリンク520は、1つ以上のネットワークを介して他のデータ装置へのデータ通信を通常は提供する。たとえば、ネットワークリンク520は、ローカルネットワーク522を介し、ホストコンピュータ524へ、または、インターネットサービスプロバイダ(ISP)526によって運営されるデータ機器へ、接続を提供し得る。そうすると、ISP526は、現在一般的に「インターネット」528と呼ばれている全世界パケットデータ通信網を介してデータ通信サービスを提供する。ローカルネットワーク522およびインターネット528はいずれも、デジタルデータストリームを運ぶ電気信号、電磁信号、または光信号を使用する。コンピュータシステム500へおよびコンピュータシステム500からデジタルデータを運ぶ、さまざまなネットワークを介する信号、および、ネットワークリンク520上の、通信インターフェイス518を介する信号は、伝送媒体の形態の例である。
コンピュータシステム500は、ネットワーク、ネットワークリンク520、および通信インターフェイス518を介して、メッセージの送信、およびプログラムコードを含むデータの受信を行ない得る。インターネットの例において、サーバ530は、インターネット528、ISP526、ローカルネットワーク522、および通信インターフェイス518を介してアプリケーションプログラムのための要求されたコードを送信し得る。
受信されたコードは、受信され次第プロセッサ504によって実行され得る、および/または記憶装置510に格納され得る、または、後で実行するために他の不揮発性記憶装置に格納され得る。
上記明細書では、実装毎に異なり得る多数の具体的な詳細を参照しながら本発明の実施形態を説明している。このため、明細書および図面は、限定的ではなく例示的な意味で考慮されねばならない。発明の範囲の唯一かつ排他的な指標および出願人が意図する発明の範囲は、本願に由来する一組の請求項の、このような請求項の元になる特定の形式の、後の任意の修正が含まれる、文言上のかつ均等物の範囲である。

Claims (18)

  1. マシンによって実現される、データベースクエリを処理する方法であって、
    コプロセッサから独立して、データベースクエリの実行はデータベースオブジェクトデータのスキャン動作を伴うと判断することと、
    前記データベースクエリの実行はスキャン動作を伴うという判断に応じて、スキャン動作コマンドを生成することとを含み、前記スキャン動作コマンドは、前記スキャン動作コマンドのパラメータとして、前記コプロセッサによって読出される入力データを識別するのに使用されるメモリアドレスデータと、前記入力データとの比較に使用される1つ以上の値とを含み、
    前記スキャン動作コマンドを前記コプロセッサから独立したメモリに格納させることと、
    前記コプロセッサによって前記スキャン動作コマンドを処理することとを含み、前記スキャン動作コマンドは、以下によって処理され、
    前記スキャン動作コマンドを前記メモリから読出すこと、
    前記メモリアドレスデータによって示される場所から前記入力データを読出させること、
    前記入力データと前記1つ以上の値との比較を実行すること、
    前記比較に基づいて結果データを生成すること、
    前記結果データを格納させること、さらに、
    前記結果データを用いて前記データベースクエリに対する結果を計算することを含み、
    前記スキャン動作コマンドに含まれる前記メモリアドレスデータは、1つ以上の仮想アドレスを含み、
    前記方法は、前記1つ以上の仮想アドレスを、前記コプロセッサが入力データを読出すのに使用する1つ以上の物理アドレスに置換えさせることをさらに含む、方法。
  2. マシンによって実現される、データベースクエリを処理する方法であって、
    コプロセッサから独立して、データベースクエリの実行はデータベースオブジェクトデータのスキャン動作を伴うと判断することと、
    前記データベースクエリの実行はスキャン動作を伴うという判断に応じて、スキャン動作コマンドを生成することとを含み、前記スキャン動作コマンドは、前記スキャン動作コマンドのパラメータとして、前記コプロセッサによって読出される入力データを識別するのに使用されるメモリアドレスデータと、前記入力データとの比較に使用される1つ以上の値とを含み、
    前記スキャン動作コマンドを前記コプロセッサから独立したメモリに格納させることと、
    前記コプロセッサによって前記スキャン動作コマンドを処理することとを含み、前記スキャン動作コマンドは、以下によって処理され、
    前記スキャン動作コマンドを前記メモリから読出すこと、
    前記メモリアドレスデータによって示される場所から前記入力データを読出させること、
    前記入力データと前記1つ以上の値との比較を実行すること、
    前記比較に基づいて結果データを生成すること、
    前記結果データを格納させること、さらに、
    前記結果データを用いて前記データベースクエリに対する結果を計算することを含み、
    前記スキャン動作コマンドは、実行する動作のタイプを示す動作タイプデータをさらに含み、前記動作のタイプは、スキャン動作か、ルックアップ動作かのいずれかであり、
    ,
    前記スキャン動作コマンドはさらに、前記動作タイプデータを先ず識別し前記動作のタイプを判断することによって、処理される、方法。
  3. 前記動作タイプデータを用いて、前記入力データを解釈するのに使用されるロジックを判断することと、
    前記入力データを、第1のデータタイプから、前記第1のデータタイプと異なる第2のデータタイプに変換することとをさらに含む、請求項に記載の方法。
  4. 前記入力データは、値データとカウントデータとを含み、
    前記値データの中の入力値はデータ要素に対応し、前記データ要素の数は前記カウントデータの中のカウント値によって示され、
    前記入力データと前記1つ以上の値との比較は、前記入力値と前記1つ以上の値との比較を含み、
    前記結果データの生成は、前記入力値が前記1つ以上の値を満たすか否かを表示する結果表示を生成することを含み、
    前記結果データの生成は、前記入力値と前記1つ以上の値とを前記数に等しい回数比較することなく行なわれる、請求項1〜のいずれか1項に記載の方法。
  5. 前記スキャン動作コマンドは、前記結果データを格納する場所を示す宛先データをさらに含む、請求項1〜のいずれか1項に記載の方法。
  6. 前記結果データを格納させることは、前記結果データをマイクロプロセッサのキャッシュに格納させることを含む、請求項1〜のいずれか1項に記載の方法。
  7. 前記結果データを格納させることは、前記スキャン動作コマンドが実行されたことを示す完了状態を格納させることをさらに含む、請求項1〜のいずれか1項に記載の方法。
  8. 前記データベースクエリの実行は前記スキャン動作と1つ以上のその他の動作とを含む複数の動作を伴うと判断し、
    前記方法は、
    前記結果データを記憶装置から取出すことと、
    前記結果データを前記記憶装置から取出した後、前記1つ以上のその他の動作に対する入力として前記結果データを必要とする前記1つ以上のその他の動作を処理することとをさらに含む、請求項1〜のいずれか1項に記載の方法。
  9. 前記コプロセッサは、連続して接続された複数のコプロセッサのうちの第1のコプロセッサであり、
    前記結果データを格納させることは、前記複数のコプロセッサのうちの第2のコプロセッサのバッファに前記結果データを送信させることを含み、
    前記方法は、
    前記第1のコプロセッサが前記データベースクエリの一部を実行している間に、前記第2のコプロセッサによって前記バッファから前記結果データを読出すことと、
    前記結果データに基づいて、前記第2のコプロセッサによって第2の結果データを生成することとをさらに含む、請求項1〜のいずれか1項に記載の方法。
  10. 前記判断するステップ、前記生成するステップ、および前記格納させるステップは、クエリ実行エンジンを実行する汎用マイクロプロセッサによって実行され、前記汎用マイクロプロセッサは前記コプロセッサから独立したものである、請求項1〜のいずれか1項に記載の方法。
  11. マシンによって実現される、データベースクエリを処理する方法であって、
    コプロセッサから独立して、データベースクエリの実行はデータベースオブジェクトデータのスキャン動作を伴うと判断することと、
    前記データベースクエリの実行はスキャン動作を伴うという判断に応じて、スキャン動作コマンドを生成することとを含み、前記スキャン動作コマンドは、前記スキャン動作コマンドのパラメータとして、前記コプロセッサによって読出される入力データを識別するのに使用されるメモリアドレスデータと、前記入力データとの比較に使用される1つ以上の値とを含み、
    前記スキャン動作コマンドを前記コプロセッサから独立したメモリに格納させることと、
    前記コプロセッサによって前記スキャン動作コマンドを処理することとを含み、前記スキャン動作コマンドは、以下によって処理され、
    前記スキャン動作コマンドを前記メモリから読出すこと、
    前記メモリアドレスデータによって示される場所から前記入力データを読出させること、
    前記入力データと前記1つ以上の値との比較を実行すること、
    前記比較に基づいて結果データを生成すること、
    前記結果データを格納させること、さらに、
    前記結果データを用いて前記データベースクエリに対する結果を計算することを含み、
    スキャン動作コマンドを生成することは、前記スキャン動作を含む複数のスキャン動作コマンドを生成することを含み、
    前記スキャン動作コマンドをメモリに格納させることは、前記複数のスキャン動作コマンドのうちの各スキャン動作コマンドについて、前記各スキャン動作コマンドを前記メモリに格納させることを含み、
    複数のコプロセッサのうちの各コプロセッサが、前記複数のスキャン動作コマンドからスキャン動作コマンドを選択する方法。
  12. 1つ以上の基準が満たされるか否か判断することをさらに含み、前記1つ以上の基準が満たされる場合のみ、前記スキャン動作コマンドを前記コプロセッサに送信させる、請求項1〜11のいずれか1項に記載の方法。
  13. 前記1つ以上の基準は、前記コプロセッサが前記スキャン動作を実行するために読出すことが必要なデータの量に基づく、請求項12に記載の方法。
  14. マシンによって実現される、データベースクエリを処理する方法であって、
    コプロセッサから独立して、データベースクエリの実行はデータベースオブジェクトデータのスキャン動作を伴うと判断することと、
    前記データベースクエリの実行はスキャン動作を伴うという判断に応じて、スキャン動作コマンドを生成することとを含み、前記スキャン動作コマンドは、前記スキャン動作コマンドのパラメータとして、前記コプロセッサによって読出される入力データを識別するのに使用されるメモリアドレスデータと、前記入力データとの比較に使用される1つ以上の値とを含み、
    前記スキャン動作コマンドを前記コプロセッサから独立したメモリに格納させることと、
    前記コプロセッサによって前記スキャン動作コマンドを処理することとを含み、前記スキャン動作コマンドは、以下によって処理され、
    前記スキャン動作コマンドを前記メモリから読出すこと、
    前記メモリアドレスデータによって示される場所から前記入力データを読出させること、
    前記入力データと前記1つ以上の値との比較を実行すること、
    前記比較に基づいて結果データを生成すること、
    前記結果データを格納させること、さらに、
    前記結果データを用いて前記データベースクエリに対する結果を計算することを含み、
    前記1つ以上の値は複数のデータ要素を含み、
    前記入力データと前記1つ以上の値との比較は、同時に、前記入力データと前記複数のデータ要素とを比較することを含む方法。
  15. 前記比較に基づいて結果データを生成することは、ビットベクトルを生成することを含み、前記ビットベクトルにおける各ビットは、比較から得られたものが真か偽かを示す、請求項1〜14のいずれか1項に記載の方法。
  16. コプロセッサであって、
    スキャン動作コマンドを読出すステップを実行するように構成され、前記スキャン動作コマンドは、
    (1)クエリの処理に関連する命令を実行するマイクロプロセッサによって生成されたものであり、
    (2)前記スキャン動作コマンドのパラメータとして、前記コプロセッサによって読出される入力データを識別するのに使用されるメモリアドレスデータと、前記入力データとの比較に使用される1つ以上の値とを含み、前記スキャン動作コマンドに含まれる前記メモリアドレスデータは、1つ以上の仮想アドレスを含み、さらに、
    前記1つ以上の仮想アドレスを、前記コプロセッサが入力データを読出すのに使用する1つ以上の物理アドレスに置換えさせるステップと、
    前記入力データを前記物理アドレスによって示される場所から読出させるステップと、
    前記入力データと前記1つ以上の値との比較を実行するステップと、
    前記比較に基づいて結果データを生成することと、
    前記マイクロプロセッサに前記結果データを通知するステップとを実行するように構成される、コプロセッサ。
  17. データベースクエリを処理するためのシステムであって、
    マイクロプロセッサと、
    コプロセッサと、
    前記マイクロプロセッサおよび前記コプロセッサに接続されたメモリとを備え、
    前記マイクロプロセッサは、
    前記コプロセッサから独立して、前記データベースクエリの実行はデータベースオブジェクトデータのスキャン動作を伴うと判断するように構成され、
    前記データベースクエリの実行はスキャン動作を伴うという判断に応じて、スキャン動作コマンドを生成するように構成され、前記スキャン動作コマンドは、前記スキャン動作コマンドのパラメータとして、前記コプロセッサによって読出される入力データを識別するのに使用されるメモリアドレスデータと、前記入力データとの比較に使用される1つ以上の値とを含み、前記スキャン動作コマンドに含まれる前記メモリアドレスデータは、1つ以上の仮想アドレスを含み、
    前記スキャン動作コマンドを前記コプロセッサから独立したメモリに格納させるように構成され、
    前記コプロセッサは、前記スキャン動作コマンドを処理するように構成され、前記スキャン動作コマンドは、
    前記スキャン動作コマンドを前記メモリから読出すこと、
    前記1つ以上の仮想アドレスを、前記コプロセッサが入力データを読出すのに使用する1つ以上の物理アドレスに置換えさせること、
    前記物理アドレスによって示される場所から前記入力データを読出させること、
    前記入力データと前記1つ以上の値との比較を実行すること、
    前記比較に基づいて結果データを生成すること、および
    前記結果データを格納させることによって処理され、
    前記結果データは、前記データベースクエリに対する結果を計算するために使用される、システム。
  18. データベースクエリを処理するためのシステムであって、
    マイクロプロセッサと、
    コプロセッサと、
    前記マイクロプロセッサおよび前記コプロセッサに接続されたメモリとを備え、
    前記マイクロプロセッサは、
    前記コプロセッサから独立して、前記データベースクエリの実行はデータベースオブジェクトデータのスキャン動作を伴うと判断するように構成され、
    前記データベースクエリの実行はスキャン動作を伴うという判断に応じて、スキャン動作コマンドを生成するように構成され、前記スキャン動作コマンドは、前記スキャン動作コマンドのパラメータとして、前記コプロセッサによって読出される入力データを識別するのに使用されるメモリアドレスデータと、前記入力データとの比較に使用される1つ以上の値とを含み、
    前記スキャン動作コマンドを前記コプロセッサから独立したメモリに格納させるよう
    に構成され、
    前記コプロセッサは、前記スキャン動作コマンドを処理するように構成され、前記スキャン動作コマンドは、
    前記スキャン動作コマンドを前記メモリから読出すこと、
    前記メモリアドレスデータによって示される場所から前記入力データを読出させること、
    前記入力データと前記1つ以上の値との比較を実行すること、
    前記比較に基づいて結果データを生成すること、および
    前記結果データを格納させることによって処理され、
    前記結果データは、前記データベースクエリに対する結果を計算するために使用され、
    前記スキャン動作コマンドは、実行する動作のタイプを示す動作タイプデータをさらに含み、前記動作のタイプは、スキャン動作か、ルックアップ動作かのいずれかであり、
    前記スキャン動作コマンドはさらに、前記動作タイプデータを先ず識別し前記動作のタイプを判断することによって、処理される、システム。
JP2015534471A 2012-10-02 2013-06-14 テーブルスキャンを加速するためのハードウェア Active JP6320393B2 (ja)

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

Publications (3)

Publication Number Publication Date
JP2015535999A JP2015535999A (ja) 2015-12-17
JP2015535999A5 JP2015535999A5 (ja) 2016-04-07
JP6320393B2 true JP6320393B2 (ja) 2018-05-09

Family

ID=50386190

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015534471A Active JP6320393B2 (ja) 2012-10-02 2013-06-14 テーブルスキャンを加速するためのハードウェア

Country Status (6)

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

Families Citing this family (131)

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

Family Cites Families (138)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE34052E (en) 1984-05-31 1992-09-01 International Business Machines Corporation Data processing system with CPU register to register data transfers overlapped with data transfer to and from main storage
US4817140A (en) 1986-11-05 1989-03-28 International Business Machines Corp. Software protection system using a single-key cryptosystem, a hardware-based authorization system and a secure coprocessor
US5133053A (en) 1987-02-13 1992-07-21 International Business Machines Corporation Interprocess communication queue location transparency
US5604899A (en) 1990-05-21 1997-02-18 Financial Systems Technology Pty. Ltd. Data relationships processor with unlimited expansion capability
US5423010A (en) 1992-01-24 1995-06-06 C-Cube Microsystems Structure and method for packing and unpacking a stream of N-bit data to and from a stream of N-bit data words
US5483624A (en) * 1992-03-27 1996-01-09 Monarch Marking Systems, Inc. Programmable hand held labeler
JPH0619785A (ja) * 1992-03-27 1994-01-28 Matsushita Electric Ind Co Ltd 分散共有仮想メモリーとその構成方法
EP0629960B1 (en) 1993-06-17 2000-05-24 Sun Microsystems, Inc. Extendible file system
US5581705A (en) * 1993-12-13 1996-12-03 Cray Research, Inc. Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system
US5564056A (en) * 1994-03-01 1996-10-08 Intel Corporation Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming
DE19515020A1 (de) * 1994-07-01 1996-01-04 Hewlett Packard Co Verfahren und Vorrichtung zum Optimieren von Abfragen mit Gruppieren-nach-Operatoren
JP3518034B2 (ja) 1995-03-30 2004-04-12 三菱電機株式会社 ソート方法並びにソート処理装置並びにデータ処理装置
US5684977A (en) 1995-03-31 1997-11-04 Sun Microsystems, Inc. Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system
CA2146171C (en) * 1995-04-03 2000-01-11 Bernhard Schiefer Method for estimating cardinalities for query processing in a relational database management system
KR0175499B1 (ko) 1996-09-11 1999-04-01 양승택 다중태그 구조의 계층 상호연결망에서의 브로드캐스트 전송방법
JPH10154160A (ja) * 1996-09-25 1998-06-09 Sharp Corp 並列データ検索処理装置
US6148377A (en) 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
JPH10232788A (ja) * 1996-12-17 1998-09-02 Fujitsu Ltd 信号処理装置及びソフトウェア
US6151688A (en) 1997-02-21 2000-11-21 Novell, Inc. Resource management in a clustered computer system
US5822748A (en) * 1997-02-28 1998-10-13 Oracle Corporation Group by and distinct sort elimination using cost-based optimization
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
CN101944077B (zh) * 2010-09-02 2011-10-19 东莞市泰斗微电子科技有限公司 一种主处理器和协处理器之间的通讯接口及其控制方法
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

Also Published As

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

Similar Documents

Publication Publication Date Title
JP6320393B2 (ja) テーブルスキャンを加速するためのハードウェア
US10459727B2 (en) Loop code processor optimizations
US20140032516A1 (en) Accelerated row decompression
US11119742B2 (en) Cache efficient reading of result values in a column store database
TWI659305B (zh) 用於擴展私用快取中快取行之獨佔持有之設備
US10592252B2 (en) Efficient instruction processing for sparse data
US10572254B2 (en) Instruction to query cache residency
US10621095B2 (en) Processing data based on cache residency
US6810472B2 (en) Page handling efficiency in a multithreaded processor
US20140095517A1 (en) Predicate result cache
WO2017116927A1 (en) Zero cache memory system extension
US11175916B2 (en) System and method for a lightweight fencing operation
WO2018075009A1 (en) Response caching
JP2004185465A (ja) 多次元データベース処理方法及びその実施システム並びにその処理プログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160216

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160216

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170509

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170926

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171115

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180313

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180403

R150 Certificate of patent or registration of utility model

Ref document number: 6320393

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250