JPH05128164A - データベース処理装置 - Google Patents
データベース処理装置Info
- Publication number
- JPH05128164A JPH05128164A JP3065358A JP6535891A JPH05128164A JP H05128164 A JPH05128164 A JP H05128164A JP 3065358 A JP3065358 A JP 3065358A JP 6535891 A JP6535891 A JP 6535891A JP H05128164 A JPH05128164 A JP H05128164A
- Authority
- JP
- Japan
- Prior art keywords
- database
- memory
- bus
- processing
- sort
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F02—COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
- F02B—INTERNAL-COMBUSTION PISTON ENGINES; COMBUSTION ENGINES IN GENERAL
- F02B75/00—Other engines
- F02B75/02—Engines characterised by their cycles, e.g. six-stroke
- F02B2075/022—Engines characterised by their cycles, e.g. six-stroke having less than six strokes per cycle
- F02B2075/027—Engines characterised by their cycles, e.g. six-stroke having less than six strokes per cycle four
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99934—Query formulation, input preparation, or translation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99937—Sorting
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】
【目的】 機能レベル並列化を利用してデータベース動
作の全体的な処理速度を従来技術によるデータベース処
理装置により達成されるもの以上に高める。 【構成】 中央処理複合体に付加されたコプロセッサと
して機能する処理装置300は、ホストメモリシステム
においてフィールドをソート、マージ、ジョイン、サー
チ及び操作するようなデータベース処理に必要とされる
機能を効率的に実行する。メモリインターフェイス及び
フィールドエキストラクタ/アセンブラ308、述語評
価器304、組み合わされたソート/マージ/ジョイン
ユニット302、ハッシュコード発生器306、並びに
マイクロコード化されたコントロールプロセッサ310
のような特別な機能ユニットは全て、区分されたワーキ
ングストア312を中心に構成される。各機能ユニット
は、それが実行する機能に従ってパイプライン化及び最
適化され、その照会の部分を効率的に実行する。全ての
機能ユニットは、コントロールプロセッサ310のもと
で同時に実行し、所望の結果が得られる。
作の全体的な処理速度を従来技術によるデータベース処
理装置により達成されるもの以上に高める。 【構成】 中央処理複合体に付加されたコプロセッサと
して機能する処理装置300は、ホストメモリシステム
においてフィールドをソート、マージ、ジョイン、サー
チ及び操作するようなデータベース処理に必要とされる
機能を効率的に実行する。メモリインターフェイス及び
フィールドエキストラクタ/アセンブラ308、述語評
価器304、組み合わされたソート/マージ/ジョイン
ユニット302、ハッシュコード発生器306、並びに
マイクロコード化されたコントロールプロセッサ310
のような特別な機能ユニットは全て、区分されたワーキ
ングストア312を中心に構成される。各機能ユニット
は、それが実行する機能に従ってパイプライン化及び最
適化され、その照会の部分を効率的に実行する。全ての
機能ユニットは、コントロールプロセッサ310のもと
で同時に実行し、所望の結果が得られる。
Description
【0001】
【産業上の利用分野】この発明は、データベース処理に
関する。
関する。
【0002】
【従来の技術】データベース処理は、データ処理の分野
の、広く知られた商業的に重要な一形態である。データ
ベースは、レコードに組織化されたデータの集合であ
る。これらのデータレコード上で、又はこれらのデータ
レコードを用いて実行されるコンピュータ動作は、デー
タベース処理と呼ばれる。データベース管理プログラム
は、データベースにアクセスし、動作するために用いら
れるデータベース処理動作のパッケージである。
の、広く知られた商業的に重要な一形態である。データ
ベースは、レコードに組織化されたデータの集合であ
る。これらのデータレコード上で、又はこれらのデータ
レコードを用いて実行されるコンピュータ動作は、デー
タベース処理と呼ばれる。データベース管理プログラム
は、データベースにアクセスし、動作するために用いら
れるデータベース処理動作のパッケージである。
【0003】データベース処理は通常、ソート(分
類)、マージ(併合)、サーチ(探索)およびジョイン
(結合)のような動作を含む。合併、共通部分および差
のような集合演算もまた、データベース処理の共通の特
徴である。従来、これらの動作は、非常に長いプロセッ
サ実行時間を必要とするソフトウェアアルゴリズムによ
って実行されていた。大規模なデータベースにおいて
は、プロセッサ実行時間は法外なものとなり、ソフトウ
ェアのデータベース管理プログラムの性能を著しく劣化
させる。
類)、マージ(併合)、サーチ(探索)およびジョイン
(結合)のような動作を含む。合併、共通部分および差
のような集合演算もまた、データベース処理の共通の特
徴である。従来、これらの動作は、非常に長いプロセッ
サ実行時間を必要とするソフトウェアアルゴリズムによ
って実行されていた。大規模なデータベースにおいて
は、プロセッサ実行時間は法外なものとなり、ソフトウ
ェアのデータベース管理プログラムの性能を著しく劣化
させる。
【0004】データベース処理の1つの形態は、ある基
準を満たすレコードのサーチを含む。例えば、あるサー
チは、データベースの全てのレコードをスキャンし、あ
る値に等しい列‘X’を持つ全てのレコードを再生す
る。より複雑な場合には、サーチは、多くの列および値
を含む述語方程式に基づいてレコードをスキャンし、再
生する。データベースは非常に大規模(例えば、数億個
のレコード)であることがあるので、従来のソフトウェ
アデータベース管理システムで用いられるサーチアルゴ
リズムでは処理に何時間もかかることがある。
準を満たすレコードのサーチを含む。例えば、あるサー
チは、データベースの全てのレコードをスキャンし、あ
る値に等しい列‘X’を持つ全てのレコードを再生す
る。より複雑な場合には、サーチは、多くの列および値
を含む述語方程式に基づいてレコードをスキャンし、再
生する。データベースは非常に大規模(例えば、数億個
のレコード)であることがあるので、従来のソフトウェ
アデータベース管理システムで用いられるサーチアルゴ
リズムでは処理に何時間もかかることがある。
【0005】データベース処理の他の形態は、データベ
ースレコードからのソートキーおよびサーチフィールド
の抽出を含む。ソートおよびサーチの応用では、サーチ
が定義されるソートキー又はフィールドはしばしばレコ
ード全体に拡張されてしまい、動作が進行する前に使用
可能なフォーマットに抽出されなければならない。ソー
トに関しては、このことは、各キーフィールドを得て、
1つの大きなキーとして扱うことができるようにそれら
を優先順位で連結することを意味する。サーチに関して
は、サーチされるテーブルの列が行から抽出されなけれ
ばならない。従来、これらおよび多くの他のデータベー
ス動作は、非常に長いCPU時間を使用するものであっ
た。
ースレコードからのソートキーおよびサーチフィールド
の抽出を含む。ソートおよびサーチの応用では、サーチ
が定義されるソートキー又はフィールドはしばしばレコ
ード全体に拡張されてしまい、動作が進行する前に使用
可能なフォーマットに抽出されなければならない。ソー
トに関しては、このことは、各キーフィールドを得て、
1つの大きなキーとして扱うことができるようにそれら
を優先順位で連結することを意味する。サーチに関して
は、サーチされるテーブルの列が行から抽出されなけれ
ばならない。従来、これらおよび多くの他のデータベー
ス動作は、非常に長いCPU時間を使用するものであっ
た。
【0006】データベース処理タスクのうちのいくつか
についてCPUの負担をなくす解決策を得るための多く
の試みがなされてきた。そのような解決策の1つは、コ
ンピュータシステムに、もしそうでなければCPUによ
り実行されるソートタスクを取り扱うための特別のソー
トプロセッサを設けることであった。図1はそのような
従来技術によるソートプロセッサを示す。
についてCPUの負担をなくす解決策を得るための多く
の試みがなされてきた。そのような解決策の1つは、コ
ンピュータシステムに、もしそうでなければCPUによ
り実行されるソートタスクを取り扱うための特別のソー
トプロセッサを設けることであった。図1はそのような
従来技術によるソートプロセッサを示す。
【0007】図1のソートプロセッサ100は、メイン
メモリバス102を中央処理装置104と共用する。メ
インメモリ106は、第1の組の通信ライン108を介
して中央処理装置104と通信し、第2の組の通信ライ
ン110を介してソートプロセッサ100と通信する。
中央処理装置104およびソートプロセッサ100は、
スタート制御ライン112および割込みライン114に
より相互に接続されている。
メモリバス102を中央処理装置104と共用する。メ
インメモリ106は、第1の組の通信ライン108を介
して中央処理装置104と通信し、第2の組の通信ライ
ン110を介してソートプロセッサ100と通信する。
中央処理装置104およびソートプロセッサ100は、
スタート制御ライン112および割込みライン114に
より相互に接続されている。
【0008】データベース処理の間、周辺ファイル11
6に記憶されたランダムなレコードは、メインメモリ1
06に転送される。その後、制御プログラムは、ソート
プロセッサ100の動作を開始させる。ファームウエア
制御のもとでは、キーワードがメインメモリ106から
ソートプロセッサ100に転送され、その後ソートされ
る。ソートプロセッサ100の自律的な動作は、中央処
理装置時間を節約し、プログラミングの労力を簡単化お
よび減少させる。
6に記憶されたランダムなレコードは、メインメモリ1
06に転送される。その後、制御プログラムは、ソート
プロセッサ100の動作を開始させる。ファームウエア
制御のもとでは、キーワードがメインメモリ106から
ソートプロセッサ100に転送され、その後ソートされ
る。ソートプロセッサ100の自律的な動作は、中央処
理装置時間を節約し、プログラミングの労力を簡単化お
よび減少させる。
【0009】図1のソートプロセッサ100は並列ソフ
トウェアデータベース処理装置よりも優れているが、そ
れによる解決は部分的なものに過ぎなかった。ソートは
データベース処理の一形態に過ぎない。サーチ、テーブ
ルのジョイン、集合演算等の他の動作もまた、多くのC
PU時間がかかる。さらに、図1のソートプロセッサは
システムの他の部分から比較的自律的に動作するが、そ
の内部ソートアルゴリズムはマイクロコードにインプリ
メントされていた。従って、図1のソートプロセッサ
は、CPUにより実行されるソートプログラムと同一の
多くの制約によって制限されていた。
トウェアデータベース処理装置よりも優れているが、そ
れによる解決は部分的なものに過ぎなかった。ソートは
データベース処理の一形態に過ぎない。サーチ、テーブ
ルのジョイン、集合演算等の他の動作もまた、多くのC
PU時間がかかる。さらに、図1のソートプロセッサは
システムの他の部分から比較的自律的に動作するが、そ
の内部ソートアルゴリズムはマイクロコードにインプリ
メントされていた。従って、図1のソートプロセッサ
は、CPUにより実行されるソートプログラムと同一の
多くの制約によって制限されていた。
【0010】図1のソートプロセッサ100はまた、メ
インメモリ106を中央処理装置104と共用している
が、優先順位は低く、メモリバス102も1つしかない
ため、性能上の制約を受ける。単一のバス経路に沿って
のメインメモリアクセス時間の競合(もっとも、ソート
プロセッサを持たないシステムに対しては減少している
が)は、メインメモリ106とソートプロセッサ100
との間のデータトラフィックに対するボトルネックを引
き起こす。
インメモリ106を中央処理装置104と共用している
が、優先順位は低く、メモリバス102も1つしかない
ため、性能上の制約を受ける。単一のバス経路に沿って
のメインメモリアクセス時間の競合(もっとも、ソート
プロセッサを持たないシステムに対しては減少している
が)は、メインメモリ106とソートプロセッサ100
との間のデータトラフィックに対するボトルネックを引
き起こす。
【0011】データベース処理の他のアプローチは、伝
統的にCPUによって取り扱われていたデータベース処
理タスクのうちのいくつかをベクトル処理エレメントに
負担させている。図2は、ベクトルプロセッサを利用し
た、そのような従来技術によるリレーショナルデータベ
ース管理システムの1つを示す。中央処理装置200
は、スカラープロセッサ202およびベクトルプロセッ
サ204を含む。ベクトルおよびスカラープロセッサの
両者は、メインメモリ206および補助記憶装置208
にアクセスする。
統的にCPUによって取り扱われていたデータベース処
理タスクのうちのいくつかをベクトル処理エレメントに
負担させている。図2は、ベクトルプロセッサを利用し
た、そのような従来技術によるリレーショナルデータベ
ース管理システムの1つを示す。中央処理装置200
は、スカラープロセッサ202およびベクトルプロセッ
サ204を含む。ベクトルおよびスカラープロセッサの
両者は、メインメモリ206および補助記憶装置208
にアクセスする。
【0012】動作時には、アプリケーションプログラム
210から発生されたデータベースコマンドは、リレー
ショナルデータベース管理プログラム212により検査
される。データベース管理プログラム212は、コマン
ドを識別し、それを解析し、その後、決められた処理手
順を指定するコードを生成する。データベース処理の
間、必要なデータは、補助記憶装置208のページ領域
から、メインメモリ206のデータバッファ領域214
にロードされる。処理手順コードの制御のもとで、バッ
ファ領域214のデータは、ベクトル構造の形式に再配
置される。その結果得られるベクトルデータエレメント
は、ベクトル領域216に記憶される。
210から発生されたデータベースコマンドは、リレー
ショナルデータベース管理プログラム212により検査
される。データベース管理プログラム212は、コマン
ドを識別し、それを解析し、その後、決められた処理手
順を指定するコードを生成する。データベース処理の
間、必要なデータは、補助記憶装置208のページ領域
から、メインメモリ206のデータバッファ領域214
にロードされる。処理手順コードの制御のもとで、バッ
ファ領域214のデータは、ベクトル構造の形式に再配
置される。その結果得られるベクトルデータエレメント
は、ベクトル領域216に記憶される。
【0013】処理手順コードがベクトルデータの処理を
示すとき、ベクトル命令のシーケンスがベクトルプロセ
ッサ204により実行される。このベクトル命令の制御
のもとで、ベクトルプロセッサ204は、指定された処
理手順に従ってベクトル領域216のデータを処理す
る。
示すとき、ベクトル命令のシーケンスがベクトルプロセ
ッサ204により実行される。このベクトル命令の制御
のもとで、ベクトルプロセッサ204は、指定された処
理手順に従ってベクトル領域216のデータを処理す
る。
【0014】図2のデータベース管理システムの1つの
制約は、ベクトル処理に依拠している結果、データベー
スは、処理前にベクトル形式で生成され或いはベクトル
形式に変換されなければならないということである。こ
の変換処理は、それ自身、非常に多くの時間がかかり、
データベース処理動作を遅らせる。
制約は、ベクトル処理に依拠している結果、データベー
スは、処理前にベクトル形式で生成され或いはベクトル
形式に変換されなければならないということである。こ
の変換処理は、それ自身、非常に多くの時間がかかり、
データベース処理動作を遅らせる。
【0015】図2のデータベース管理システムの第2の
制約は、付随するベクトル処理ハードウェアが、命令レ
ベルでプログラムされるということである(すなわち、
データベース処理機能を実行させるために必要とされる
命令基本要素を書くことはプログラマに任されてい
る)。これらの命令は、ベクトル処理ハードウェアによ
り、データベース管理プログラム内で同期的に実行され
る。従って、データベース管理プログラムは、命令が実
行される間、単一のタスクのために使用される。更に、
各基本命令が実行されるときには、CPU時間を必要と
する。従って、CPUは、基本要素の全ての系列が実行
されるまで、データベース処理から完全に解放されるこ
とはない。
制約は、付随するベクトル処理ハードウェアが、命令レ
ベルでプログラムされるということである(すなわち、
データベース処理機能を実行させるために必要とされる
命令基本要素を書くことはプログラマに任されてい
る)。これらの命令は、ベクトル処理ハードウェアによ
り、データベース管理プログラム内で同期的に実行され
る。従って、データベース管理プログラムは、命令が実
行される間、単一のタスクのために使用される。更に、
各基本命令が実行されるときには、CPU時間を必要と
する。従って、CPUは、基本要素の全ての系列が実行
されるまで、データベース処理から完全に解放されるこ
とはない。
【0016】更に、図2のデータベース管理システムの
第3の制約は、ベクトル処理アプローチが、データベー
ス処理動作に間接レベルを付加することである。ベクト
ル形式のデータベースにおいては、関心のある実際のデ
ータを位置付けるために一連のポインタが用いられる。
あるテーブルにおける位置は、他のテーブルにおける他
の位置を指している、等々である。このような間接性な
いし連鎖は、データベース動作の処理時間を増大させ
る。
第3の制約は、ベクトル処理アプローチが、データベー
ス処理動作に間接レベルを付加することである。ベクト
ル形式のデータベースにおいては、関心のある実際のデ
ータを位置付けるために一連のポインタが用いられる。
あるテーブルにおける位置は、他のテーブルにおける他
の位置を指している、等々である。このような間接性な
いし連鎖は、データベース動作の処理時間を増大させ
る。
【0017】
【発明が解決しようとする課題】この発明の1つの目的
は、機能レベル並列化を利用してデータベース動作の全
体的な処理速度を従来技術によるデータベース処理装置
により達成されるもの以上に高めることにある。
は、機能レベル並列化を利用してデータベース動作の全
体的な処理速度を従来技術によるデータベース処理装置
により達成されるもの以上に高めることにある。
【0018】この発明の他の目的は、システムメモリの
帯域幅速度において又はその近傍でデータベース動作を
処理することにある。
帯域幅速度において又はその近傍でデータベース動作を
処理することにある。
【0019】この発明の更に他の目的は、付加処理装置
環境において、従来のソフトウェアデータベース処理プ
ログラムにより生成されるコマンドリストを処理するこ
とにある。
環境において、従来のソフトウェアデータベース処理プ
ログラムにより生成されるコマンドリストを処理するこ
とにある。
【0020】
【課題を解決するための手段】これらの目的に従って、
本発明者らは、基本的なデータベース機能のための高速
処理を可能とするデータベース処理装置(従来のデータ
ベース処理装置と区別するため、以下データベースエン
ジンDBEという)を提供した。好ましい実施例では、
データベースエンジンは、システムメモリにアクセス
し、そこから処理すべきデータを抽出するエキストラク
タ/メモリインターフェイスと、処理すべきデータを一
時的に記憶するためのローカルワーキングメモリと、そ
れぞれ特別なデータベース処理機能を実行する複数の自
律的処理エレメントと、データベース管理プログラムか
らのデータベースコマンドを部分機能に分解し、これら
の部分機能を処理エレメントに分散させるコントロール
プロセッサとを含む。
本発明者らは、基本的なデータベース機能のための高速
処理を可能とするデータベース処理装置(従来のデータ
ベース処理装置と区別するため、以下データベースエン
ジンDBEという)を提供した。好ましい実施例では、
データベースエンジンは、システムメモリにアクセス
し、そこから処理すべきデータを抽出するエキストラク
タ/メモリインターフェイスと、処理すべきデータを一
時的に記憶するためのローカルワーキングメモリと、そ
れぞれ特別なデータベース処理機能を実行する複数の自
律的処理エレメントと、データベース管理プログラムか
らのデータベースコマンドを部分機能に分解し、これら
の部分機能を処理エレメントに分散させるコントロール
プロセッサとを含む。
【0021】基本的なデータベース機能の処理を支援
し、加速するためのハードウェアを設けることにより、
データベースエンジンは、多くのデータベース動作の実
行時間を著しく減少させることができる。
し、加速するためのハードウェアを設けることにより、
データベースエンジンは、多くのデータベース動作の実
行時間を著しく減少させることができる。
【0022】このデータベースエンジンは、従来技術に
よるデータベース処理装置の多くの制約を克服すること
ができるという利点がある。図2のシステムと対照的
に、このデータベースエンジンは、ベクトル形式のレコ
ードを必要としない。従って、このデータベースエンジ
ンは、図2のシステムに存在する、処理コストの多くを
節減することができる。更に、図2のベクトルプロセッ
サと異なり、このデータベースエンジンは、中央処理装
置命令レベルプログラミングを必要とする代わりに、マ
クロコマンドで制御することができるものである。
よるデータベース処理装置の多くの制約を克服すること
ができるという利点がある。図2のシステムと対照的
に、このデータベースエンジンは、ベクトル形式のレコ
ードを必要としない。従って、このデータベースエンジ
ンは、図2のシステムに存在する、処理コストの多くを
節減することができる。更に、図2のベクトルプロセッ
サと異なり、このデータベースエンジンは、中央処理装
置命令レベルプログラミングを必要とする代わりに、マ
クロコマンドで制御することができるものである。
【0023】図1のシステムと異なり、このデータベー
スエンジンは、共通のデータバスによって、メインメモ
リのアクセス時間のためにCPUと競合する必要がな
い。1つの実施例においては、このデータベースエンジ
ンは、システムページ記憶装置と接続される。このペー
ジ記憶装置は、データベースエンジンのための直接アド
レス可能なメインメモリとして働くが、システムの中央
処理装置に対してはページングメモリとしてのみ現れ
る。これによって、大規模なデータベースをページング
メモリに固定し、メインメモリアクセスのための中央処
理装置との競合を最小とすることができる。
スエンジンは、共通のデータバスによって、メインメモ
リのアクセス時間のためにCPUと競合する必要がな
い。1つの実施例においては、このデータベースエンジ
ンは、システムページ記憶装置と接続される。このペー
ジ記憶装置は、データベースエンジンのための直接アド
レス可能なメインメモリとして働くが、システムの中央
処理装置に対してはページングメモリとしてのみ現れ
る。これによって、大規模なデータベースをページング
メモリに固定し、メインメモリアクセスのための中央処
理装置との競合を最小とすることができる。
【0024】
a.データベースエンジン データベースエンジン(DBE)は、リレーショナルデ
ータベースを迅速に評価するとともに、データの高速な
ソートを可能とするために設計されている専用のプロセ
ッサである。このデータベースエンジンは、ソート、マ
ージ、ジョイン、サーチおよびフィールドの操作を含む
データベースの処理で要求される中心的な機能を実行す
る。このデータベースエンジンは、専用のハードウェア
の装備で得られる、処理およびメモリアクセスの間のオ
ーバーラップを利用することで、同一の問題に対する周
知のソフトウェア手法の多くのもの以上に性能を向上す
ることができる。
ータベースを迅速に評価するとともに、データの高速な
ソートを可能とするために設計されている専用のプロセ
ッサである。このデータベースエンジンは、ソート、マ
ージ、ジョイン、サーチおよびフィールドの操作を含む
データベースの処理で要求される中心的な機能を実行す
る。このデータベースエンジンは、専用のハードウェア
の装備で得られる、処理およびメモリアクセスの間のオ
ーバーラップを利用することで、同一の問題に対する周
知のソフトウェア手法の多くのもの以上に性能を向上す
ることができる。
【0025】データベースエンジンの全体的な構成が図
3に示される。データベースエンジン300は、5個の
ハードウェア処理エレメント(参照符号302〜310
で示される)とワーキングストア312からなる。2個
の内部のマルチビットのデータバス316、318によ
ってワーキングストア312および処理エレメント30
2〜310間のデータの流れが形成される。内部のマル
チビットのコントロールバス320が処理エレメント間
のコントロールデータの経路を形成する。システムメモ
リバス322がエキストラクタ/メモリインターフェイ
スユニット308およびシステムメモリ(図3では示さ
れない)間に、外部的に設けられている。
3に示される。データベースエンジン300は、5個の
ハードウェア処理エレメント(参照符号302〜310
で示される)とワーキングストア312からなる。2個
の内部のマルチビットのデータバス316、318によ
ってワーキングストア312および処理エレメント30
2〜310間のデータの流れが形成される。内部のマル
チビットのコントロールバス320が処理エレメント間
のコントロールデータの経路を形成する。システムメモ
リバス322がエキストラクタ/メモリインターフェイ
スユニット308およびシステムメモリ(図3では示さ
れない)間に、外部的に設けられている。
【0026】処理エレメント302〜310とワーキン
グストア312は、共同して働き、データベースの照会
を処理する。ソート/マージユニット302は、ソー
ト、マージ、ジョインおよび集合演算を行う。サーチ
は、述語評価器304によりなされる。ハードウェアの
ハッシュコード発生器306は、二つのデータベース上
の等結合の性能の改良のために設けられている。レコー
ドフィールドの抽出(エキストラクション)およびメモ
リアクセスの機能は、エキストラクタ/メモリインター
フェイスユニット308でなされる。前述の処理エレメ
ントでなされる動作は、コントロールプロセッサ310
の制御のもとで開始される。
グストア312は、共同して働き、データベースの照会
を処理する。ソート/マージユニット302は、ソー
ト、マージ、ジョインおよび集合演算を行う。サーチ
は、述語評価器304によりなされる。ハードウェアの
ハッシュコード発生器306は、二つのデータベース上
の等結合の性能の改良のために設けられている。レコー
ドフィールドの抽出(エキストラクション)およびメモ
リアクセスの機能は、エキストラクタ/メモリインター
フェイスユニット308でなされる。前述の処理エレメ
ントでなされる動作は、コントロールプロセッサ310
の制御のもとで開始される。
【0027】ホストシステム上で走るデータベースのア
プリケーションソフトウェアと関連してデータベースエ
ンジン300が動作する。そのようなソフトウェアの一
例は、DB2(MVSの下で走る、IBMのデータベー
スアプリケーションプログラム)である。このアプリケ
ーションソフトウェアは、システムメモリへデータベー
スを読み込むのに必要なI/Oの全てを行う。また、こ
のアプリケーションソフトウェアは、データベースエン
ジンのコマンド、データベースオブジェクト記述子およ
び述語を作成し、そして、これらをデータベースエンジ
ン300でアクセス可能なシステムメモリ内へ入れる。
プリケーションソフトウェアと関連してデータベースエ
ンジン300が動作する。そのようなソフトウェアの一
例は、DB2(MVSの下で走る、IBMのデータベー
スアプリケーションプログラム)である。このアプリケ
ーションソフトウェアは、システムメモリへデータベー
スを読み込むのに必要なI/Oの全てを行う。また、こ
のアプリケーションソフトウェアは、データベースエン
ジンのコマンド、データベースオブジェクト記述子およ
び述語を作成し、そして、これらをデータベースエンジ
ン300でアクセス可能なシステムメモリ内へ入れる。
【0028】図4は、例示的なシステム環境におけるデ
ータベースエンジン300のシステム接続を示す。この
図4のシステムでは、3個の中央処理装置(CP)40
2〜406、I/Oチャンネル408およびシステムメ
モリ(主記憶装置410およびページ記憶装置412)
を有するマルチプロセッサシステムに組込まれたデータ
ベースエンジン300が示されている。ページ記憶装置
は、中央処理装置(CP)402〜406に対するペー
ジメモリとして動作する。データのページは、中央処理
装置402〜406の制御の下で、ページ記憶装置から
主記憶装置へメモリデータバス414により転送され
る。そして、中央処理装置は、スイッチ或いはシステム
コントローラ416を介して主記憶装置内のデータをア
クセスする。そのようなシステムの一例は、米国特許第
4,476,524号および米国特許第4,394,7
31号に開示されている。
ータベースエンジン300のシステム接続を示す。この
図4のシステムでは、3個の中央処理装置(CP)40
2〜406、I/Oチャンネル408およびシステムメ
モリ(主記憶装置410およびページ記憶装置412)
を有するマルチプロセッサシステムに組込まれたデータ
ベースエンジン300が示されている。ページ記憶装置
は、中央処理装置(CP)402〜406に対するペー
ジメモリとして動作する。データのページは、中央処理
装置402〜406の制御の下で、ページ記憶装置から
主記憶装置へメモリデータバス414により転送され
る。そして、中央処理装置は、スイッチ或いはシステム
コントローラ416を介して主記憶装置内のデータをア
クセスする。そのようなシステムの一例は、米国特許第
4,476,524号および米国特許第4,394,7
31号に開示されている。
【0029】スイッチ416は、自己経路選択型の非閉
塞クロスバー形式のものである。すなわち、このスイッ
チ416は、主記憶装置410およびシステムエレメン
ト(300、402〜408)のいずれかの間に、並び
にページ記憶装置412およびシステムエレメントの他
のいずれかの間に、同時的なマルチビットのデータ経路
を形成する。例えばスイッチ416は、ページ記憶装置
412およびデータベースエンジン300間に第1のデ
ータ経路を形成し、一方、同時に中央処理装置402〜
406の1つおよび主記憶装置410間に第2のデータ
経路を形成する。
塞クロスバー形式のものである。すなわち、このスイッ
チ416は、主記憶装置410およびシステムエレメン
ト(300、402〜408)のいずれかの間に、並び
にページ記憶装置412およびシステムエレメントの他
のいずれかの間に、同時的なマルチビットのデータ経路
を形成する。例えばスイッチ416は、ページ記憶装置
412およびデータベースエンジン300間に第1のデ
ータ経路を形成し、一方、同時に中央処理装置402〜
406の1つおよび主記憶装置410間に第2のデータ
経路を形成する。
【0030】変形例として、システムメモリ(主記憶装
置410およびページ記憶装置412)は、マルチポー
ト構成とされ、データベースエンジン300およびシス
テムメモリ(410、412)間のデータ転送を直接的
に接続された広帯域のバス420、422によって行っ
ても良い。更に、参照符号424で示すようなCPデー
タバスを通るポートを通じて主記憶装置を中央処理装置
がアクセス可能としても良い。同様の接続をシステムメ
モリおよびI/Oチャンネル408間に設けることがで
きる。このような実施例では、スイッチ416は、削除
することができる。
置410およびページ記憶装置412)は、マルチポー
ト構成とされ、データベースエンジン300およびシス
テムメモリ(410、412)間のデータ転送を直接的
に接続された広帯域のバス420、422によって行っ
ても良い。更に、参照符号424で示すようなCPデー
タバスを通るポートを通じて主記憶装置を中央処理装置
がアクセス可能としても良い。同様の接続をシステムメ
モリおよびI/Oチャンネル408間に設けることがで
きる。このような実施例では、スイッチ416は、削除
することができる。
【0031】図4の構成により、要求を発生するため
に、中央処理装置を通る必要なしに、データベースエン
ジン300がシステムメモリ(410、412)を直接
的にアクセスすることができる。従って、データベース
エンジンがメインメモリとしてページ記憶装置412を
アクセスできる。上述のように、図4のシステムでは、
ページ記憶装置412がCP402〜406に対するペ
ージングメモリとして機能する。この構成により、デー
タベースエンジンがCPへの最小限の影響でもって、シ
ステム中で論理的に非同期なプロセッサとして動作でき
る。
に、中央処理装置を通る必要なしに、データベースエン
ジン300がシステムメモリ(410、412)を直接
的にアクセスすることができる。従って、データベース
エンジンがメインメモリとしてページ記憶装置412を
アクセスできる。上述のように、図4のシステムでは、
ページ記憶装置412がCP402〜406に対するペ
ージングメモリとして機能する。この構成により、デー
タベースエンジンがCPへの最小限の影響でもって、シ
ステム中で論理的に非同期なプロセッサとして動作でき
る。
【0032】主記憶装置410およびページ記憶装置4
12の両者への直接アクセスを設けているので、コマン
ドおよびデータレコードをデータベースエンジンがアク
セスするための多数の経絡が可能である。例えばデータ
ベースが主記憶装置からアクセスでき、部分が必要に応
じてページインできる。他のものとして、データベース
がページ記憶装置412に固定され、また、直接的にア
クセス可能としても良く、これにより、直接アクセス記
憶装置(DASD)に対してデータベースを保管および
復元するのに伴うI/Oコストを回避できる。いずれに
しても、性能の要求、メモリの大きさおよび特定のシス
テムで利用できるメモリのタイプは、システムメモリ内
でデータベースがどこに位置すべきかを決定するのに考
慮すべきファクターである。
12の両者への直接アクセスを設けているので、コマン
ドおよびデータレコードをデータベースエンジンがアク
セスするための多数の経絡が可能である。例えばデータ
ベースが主記憶装置からアクセスでき、部分が必要に応
じてページインできる。他のものとして、データベース
がページ記憶装置412に固定され、また、直接的にア
クセス可能としても良く、これにより、直接アクセス記
憶装置(DASD)に対してデータベースを保管および
復元するのに伴うI/Oコストを回避できる。いずれに
しても、性能の要求、メモリの大きさおよび特定のシス
テムで利用できるメモリのタイプは、システムメモリ内
でデータベースがどこに位置すべきかを決定するのに考
慮すべきファクターである。
【0033】図4のシステム環境に関して、データベー
スエンジン300により必要とされるデータは、スター
ト信号が出されるより前にオペレーティングシステムに
よって、システムメモリ(主記憶装置410或いはペー
ジ記憶装置412のいずれか)に固定される。そして、
システムメモリ内(410、412)のどこにデータが
位置しているか、また、各固定されたブロックをどのよ
うな順序でアクセスするかを知らせるために、データベ
ースエンジンに対してページ或いはレコードのアドレス
のリストが与えられる。
スエンジン300により必要とされるデータは、スター
ト信号が出されるより前にオペレーティングシステムに
よって、システムメモリ(主記憶装置410或いはペー
ジ記憶装置412のいずれか)に固定される。そして、
システムメモリ内(410、412)のどこにデータが
位置しているか、また、各固定されたブロックをどのよ
うな順序でアクセスするかを知らせるために、データベ
ースエンジンに対してページ或いはレコードのアドレス
のリストが与えられる。
【0034】データベースエンジンの動作は、データベ
ースアプリケーションプログラムで構成されるコマンド
の系列によって始められる。このコマンドの系列は、デ
ータベースの動作を呼び出す前にオペレーティングシス
テムによりシステムメモリに置かれる。データベースエ
ンジン300が一旦、起動されると、中央処理装置40
2〜406のいかなる割込みもなしに、適宜に、コマン
ド、記述子およびデータを(システムメモリの外へ)ア
クセスする処理を非同期で行う。動作が完了する時に、
呼び出しプログラムに対して割込みがなされる。
ースアプリケーションプログラムで構成されるコマンド
の系列によって始められる。このコマンドの系列は、デ
ータベースの動作を呼び出す前にオペレーティングシス
テムによりシステムメモリに置かれる。データベースエ
ンジン300が一旦、起動されると、中央処理装置40
2〜406のいかなる割込みもなしに、適宜に、コマン
ド、記述子およびデータを(システムメモリの外へ)ア
クセスする処理を非同期で行う。動作が完了する時に、
呼び出しプログラムに対して割込みがなされる。
【0035】データベースエンジン300の動作につい
て、ソート付きサーチコマンドの処理の例によって、図
3および図4を参照してより詳細に説明する。スタート
信号の受信によって、ホストCPUが受けたデータベー
スコマンドがシステムメモリに存在することがコントロ
ールプロセッサ310に対して合図される。このスター
トの合図は、エキストラクタ/メモリインターフェイス
ユニット308のメモリインターフェイス部分によりな
され、また、システムメモリ中のデータベースコマンド
ブロック(他で詳細に説明する)のアドレスを含む。ス
タートDBE信号を受信すると、コントロールプロセッ
サ310がシステムメモリからデータベースコマンドを
フェッチし、これを内部に蓄える。
て、ソート付きサーチコマンドの処理の例によって、図
3および図4を参照してより詳細に説明する。スタート
信号の受信によって、ホストCPUが受けたデータベー
スコマンドがシステムメモリに存在することがコントロ
ールプロセッサ310に対して合図される。このスター
トの合図は、エキストラクタ/メモリインターフェイス
ユニット308のメモリインターフェイス部分によりな
され、また、システムメモリ中のデータベースコマンド
ブロック(他で詳細に説明する)のアドレスを含む。ス
タートDBE信号を受信すると、コントロールプロセッ
サ310がシステムメモリからデータベースコマンドを
フェッチし、これを内部に蓄える。
【0036】次に、コントロールプロセッサ310がデ
ータベースコマンド情報を他の処理エレメント304〜
308の各々のためのセットアップおよび処理情報に分
解する。データベース記述子およびフィールド情報は、
エキストラクタ/メモリインターフェイスユニット30
8のエキストラクタ/アセンブラの機能を初期化するた
めに使用され、選択述語が述語評価器304内の命令お
よび定数テーブルにロードされ、また、ソートキーがソ
ート/マージユニット302をセットアップするのに使
用される。要求される情報(機能および初期化データ)
が各処理エレメントに一旦ロードされると、実行フェー
ズが始まる。
ータベースコマンド情報を他の処理エレメント304〜
308の各々のためのセットアップおよび処理情報に分
解する。データベース記述子およびフィールド情報は、
エキストラクタ/メモリインターフェイスユニット30
8のエキストラクタ/アセンブラの機能を初期化するた
めに使用され、選択述語が述語評価器304内の命令お
よび定数テーブルにロードされ、また、ソートキーがソ
ート/マージユニット302をセットアップするのに使
用される。要求される情報(機能および初期化データ)
が各処理エレメントに一旦ロードされると、実行フェー
ズが始まる。
【0037】データベース全体が処理されるまで、パイ
プライン形式で各処理エレメントによりデータブロック
を処理することによって、データベースコマンドが実行
される。ソート付きサーチの場合では、エキストラクタ
/メモリインターフェイスユニット308のエキストラ
クタ部分によりデータがまず処理され、ワーキングスト
ア312に必要なデータが入れられる。次に、選択述語
に合ったものを選択するために、ワーキングストア31
2中のレコードを述語評価器304が処理する。そし
て、ソート/マージユニット302がキーに基づいた順
序に選択されたレコードをソートする。
プライン形式で各処理エレメントによりデータブロック
を処理することによって、データベースコマンドが実行
される。ソート付きサーチの場合では、エキストラクタ
/メモリインターフェイスユニット308のエキストラ
クタ部分によりデータがまず処理され、ワーキングスト
ア312に必要なデータが入れられる。次に、選択述語
に合ったものを選択するために、ワーキングストア31
2中のレコードを述語評価器304が処理する。そし
て、ソート/マージユニット302がキーに基づいた順
序に選択されたレコードをソートする。
【0038】ソートおよび述語評価の動作は、ワーキン
グストア312の大きさのブロック内でなされ、データ
ベース全体が処理されるまで繰り返される。例えばコマ
ンドのソート部分が大きなデータベースをマージするこ
とを可能とするためにいくつかのマージのパスを取るか
もしれない。そのような場合には、エキストラクタ/メ
モリインターフェイスユニット308のアセンブラ機能
がシステムメモリ内の一時的なメモリ領域へ中間的な結
果を書くのに使用される。最終的なマージパスでは、エ
キストラクタ/メモリインターフェイスユニット308
のアセンブラ機能により、出力レコードが正しいフォー
マットへアセンブルされ、また、出力レコードがコマン
ドで指定された出力メモリ領域へ書き込まれる。
グストア312の大きさのブロック内でなされ、データ
ベース全体が処理されるまで繰り返される。例えばコマ
ンドのソート部分が大きなデータベースをマージするこ
とを可能とするためにいくつかのマージのパスを取るか
もしれない。そのような場合には、エキストラクタ/メ
モリインターフェイスユニット308のアセンブラ機能
がシステムメモリ内の一時的なメモリ領域へ中間的な結
果を書くのに使用される。最終的なマージパスでは、エ
キストラクタ/メモリインターフェイスユニット308
のアセンブラ機能により、出力レコードが正しいフォー
マットへアセンブルされ、また、出力レコードがコマン
ドで指定された出力メモリ領域へ書き込まれる。
【0039】最後のレコードがアセンブルされ、システ
ムメモリ内へ置かれると、コントロールプロセッサ31
0が動作上或いはエラーのステータスを集め、これをシ
ステムメモリ内のステータス領域内へ入れる。そして、
コントロールプロセッサ310は、開始ホストCPUに
対して動作が完了したことを知らせる。そして、データ
ベースエンジン300は他のコマンドを処理できるよう
になる。
ムメモリ内へ置かれると、コントロールプロセッサ31
0が動作上或いはエラーのステータスを集め、これをシ
ステムメモリ内のステータス領域内へ入れる。そして、
コントロールプロセッサ310は、開始ホストCPUに
対して動作が完了したことを知らせる。そして、データ
ベースエンジン300は他のコマンドを処理できるよう
になる。
【0040】都合が良いことに、データベースエンジン
のシステムメモリアクセスは、データベース処理時間と
オーバーラップできる。まだ、他のレコードが処理中で
ある間に、データベースエンジン300によりデータベ
ースのレコードがアセンブルされ、システムメモリへこ
のレコードが戻されることが可能である。また、ワーキ
ングストアの複数の区画へ同時にアクセスできるよう
に、機能が分割されているならば、コントロールプロセ
ッサ310によって起動されると、他の処理エレメント
304〜308の各々が並列に動作可能である。このよ
うに、データベースエンジンは、システムメモリのアク
セスレートに極めて近いレートで、データベース照会を
実行することができる。
のシステムメモリアクセスは、データベース処理時間と
オーバーラップできる。まだ、他のレコードが処理中で
ある間に、データベースエンジン300によりデータベ
ースのレコードがアセンブルされ、システムメモリへこ
のレコードが戻されることが可能である。また、ワーキ
ングストアの複数の区画へ同時にアクセスできるよう
に、機能が分割されているならば、コントロールプロセ
ッサ310によって起動されると、他の処理エレメント
304〜308の各々が並列に動作可能である。このよ
うに、データベースエンジンは、システムメモリのアク
セスレートに極めて近いレートで、データベース照会を
実行することができる。
【0041】なお、上述の例は、ソート付きサーチであ
るが、同じデータブロックパイプライン形式で全て実行
するサーチ、ソート、マージ、ジョイン等を含む多くの
異なる動作を行うことができる。
るが、同じデータブロックパイプライン形式で全て実行
するサーチ、ソート、マージ、ジョイン等を含む多くの
異なる動作を行うことができる。
【0042】データベースエンジンのコマンドセット
は、データベース照会を処理するのに使用される中心的
なリレーショナルデータベース機能を含む。これらの機
能は、照会の基本的な要素であって、1つの複合データ
ベース照会を作成するために、連鎖することができる。
データベースエンジンにより実現される中心的な機能は
下記のものである。
は、データベース照会を処理するのに使用される中心的
なリレーショナルデータベース機能を含む。これらの機
能は、照会の基本的な要素であって、1つの複合データ
ベース照会を作成するために、連鎖することができる。
データベースエンジンにより実現される中心的な機能は
下記のものである。
【0043】1.ソート。データベースは、与えられた
列或いは列の結合に基づいてソートされ、ソートの順序
で戻される。ソートキーは、いかなる長さでも良い(こ
の実施例では、32kバイトの長さ迄とされる)。
列或いは列の結合に基づいてソートされ、ソートの順序
で戻される。ソートキーは、いかなる長さでも良い(こ
の実施例では、32kバイトの長さ迄とされる)。
【0044】2.サーチ。データベースが評価され、そ
の結果は与えられた述語と合う行に限定される。例えば
列1=‘xyz’である全てのレコードを見つけるの
は、サーチ動作である。データベースの中から、‘xy
z’に等しい列1を全てのレコードが持つサブセットが
戻される。「列1=‘xyz’」が述語と称され、この
場合のように単純、又は複雑でありうる。データベース
エンジンでは、使用される比較演算子としては、「等し
い」「以上」「以下」「等しくない」「より小さい」
「より大きい」が可能である。複雑な述語は、AND、
OR、NOTおよび他の論理演算子で結合された単純な
述語からなる。
の結果は与えられた述語と合う行に限定される。例えば
列1=‘xyz’である全てのレコードを見つけるの
は、サーチ動作である。データベースの中から、‘xy
z’に等しい列1を全てのレコードが持つサブセットが
戻される。「列1=‘xyz’」が述語と称され、この
場合のように単純、又は複雑でありうる。データベース
エンジンでは、使用される比較演算子としては、「等し
い」「以上」「以下」「等しくない」「より小さい」
「より大きい」が可能である。複雑な述語は、AND、
OR、NOTおよび他の論理演算子で結合された単純な
述語からなる。
【0045】3.選択。データベース中の列のサブセッ
トがデータベースから選択されて戻される。選択操作
は、データベースの列の垂直のサブセットを戻す。
トがデータベースから選択されて戻される。選択操作
は、データベースの列の垂直のサブセットを戻す。
【0046】4.集合演算。集合演算は、合併、共通部
分、差およびクロス積を含む。これらは、一般の集合理
論で定義されているように実行される。
分、差およびクロス積を含む。これらは、一般の集合理
論で定義されているように実行される。
【0047】5.ジョイン動作。ジョイン動作は、ジョ
インのタイプに従って実行される。ジョイン演算子とし
ては、「等しい」「以上」「以下」「等しくない」「よ
り小さい」「より大きい」、或いは論理演算子AND、
OR、NOTにより結合された上述のものの組合せから
なる。結果として大きなデータベースを作るが、外結合
も実行できることに注意されたい。
インのタイプに従って実行される。ジョイン演算子とし
ては、「等しい」「以上」「以下」「等しくない」「よ
り小さい」「より大きい」、或いは論理演算子AND、
OR、NOTにより結合された上述のものの組合せから
なる。結果として大きなデータベースを作るが、外結合
も実行できることに注意されたい。
【0048】b.コマンドフォーマット コマンドブロックは、データベースエンジンに対するコ
マンドおよびアドレス情報の両者を提供するデータ構造
である。コマンドブロックは、データベースのアプリケ
ーションソフトウェアにより構成され、システムメモリ
を通って初期化の期間にデータベースエンジン300に
パスされる。データベースエンジン300は、スタート
DBEコマンドの受信により、システムメモリ内にコマ
ンドブロックが存在していることを知らされる。コマン
ドブロックには、以下の情報が含まれる。
マンドおよびアドレス情報の両者を提供するデータ構造
である。コマンドブロックは、データベースのアプリケ
ーションソフトウェアにより構成され、システムメモリ
を通って初期化の期間にデータベースエンジン300に
パスされる。データベースエンジン300は、スタート
DBEコマンドの受信により、システムメモリ内にコマ
ンドブロックが存在していることを知らされる。コマン
ドブロックには、以下の情報が含まれる。
【0049】1.実行されるべきコマンドの種類、すな
わち、ソート、マージ、ジョイン、選択、サーチ、合
併、共通部分、差、クロス積又は除算である。 2.メモリ中のデータベース記述子のアドレス。2個の
入力と1つの出力との3個迄の記述子が使用できる。処
理中は出力領域が一時的な作業領域としても使用でき
る。 3.コマンド処理で使用される述語のアドレス。 4.コマンドのために使用されるデータベースからのフ
ィールドと、与えられる出力フィールド。 5.インデックスが利用可能ならば、コマンドブロック
内でそれが指定される。
わち、ソート、マージ、ジョイン、選択、サーチ、合
併、共通部分、差、クロス積又は除算である。 2.メモリ中のデータベース記述子のアドレス。2個の
入力と1つの出力との3個迄の記述子が使用できる。処
理中は出力領域が一時的な作業領域としても使用でき
る。 3.コマンド処理で使用される述語のアドレス。 4.コマンドのために使用されるデータベースからのフ
ィールドと、与えられる出力フィールド。 5.インデックスが利用可能ならば、コマンドブロック
内でそれが指定される。
【0050】データベース記述子が特定のデータベース
を識別するのに種々のコマンドにより使用される。例え
ばMERGEコマンドは、入力として任意数のデータベ
ース(この実施例では、128まで)を持つことがで
き、出力として1つのデータベースを持つことができ
る。残りの各コマンドは、入力として1個或いは2個の
データベースを処理し、出力として第3のものを持つの
が好ましい。データベースエンジンはこれらのデータベ
ースの各々をデータベース記述子により識別する。各記
述子は下記の情報を有する。
を識別するのに種々のコマンドにより使用される。例え
ばMERGEコマンドは、入力として任意数のデータベ
ース(この実施例では、128まで)を持つことがで
き、出力として1つのデータベースを持つことができ
る。残りの各コマンドは、入力として1個或いは2個の
データベースを処理し、出力として第3のものを持つの
が好ましい。データベースエンジンはこれらのデータベ
ースの各々をデータベース記述子により識別する。各記
述子は下記の情報を有する。
【0051】A.データベースのスタートアドレス B.データベースのフォーマット、すなわち、DB2
か、コンパクトか。 データベースエンジンは、任意のノンインデックスコマ
ンドについて、DB2ページセットフォーマットを処理
できる。しかしながら、若し、その代わりにコンパクト
な順次フォーマットを使用すれば、性能が改善されるこ
とになる。データベースエンジンにより使用される全て
の作業スペースおよび一時的なデータベースは、メモリ
中に順次に置かれたレコードと共に記憶される。最終の
結果は、いずれのフォーマットで記憶しても良い。 C.データベース中のレコード数。 D.データベースのフォーマット、すなわち、フィール
ド数、フィールド内に含まれるデータの種類、および最
大長。
か、コンパクトか。 データベースエンジンは、任意のノンインデックスコマ
ンドについて、DB2ページセットフォーマットを処理
できる。しかしながら、若し、その代わりにコンパクト
な順次フォーマットを使用すれば、性能が改善されるこ
とになる。データベースエンジンにより使用される全て
の作業スペースおよび一時的なデータベースは、メモリ
中に順次に置かれたレコードと共に記憶される。最終の
結果は、いずれのフォーマットで記憶しても良い。 C.データベース中のレコード数。 D.データベースのフォーマット、すなわち、フィール
ド数、フィールド内に含まれるデータの種類、および最
大長。
【0052】上述のように、コマンド処理で使用すべき
述語のアドレスは、コマンドブロックの一部としてデー
タベースエンジンにパスされる。この述語は、出力レコ
ードを元のデータベースのサブセットに制限するブール
論理式である。これは、たった1つの項でも良く、多数
でも良く、また、好ましくは、データベースエンジンが
より早く処理できるために、逆ポーランド記法で表現さ
れる。逆ポーランド記法は、元のSQL照会中に存在す
るどんな括弧も取り除き、スタックプロセッサを使用し
て、照会が順次に処理される。一例として、下記のもの
がSQLでの照会である。
述語のアドレスは、コマンドブロックの一部としてデー
タベースエンジンにパスされる。この述語は、出力レコ
ードを元のデータベースのサブセットに制限するブール
論理式である。これは、たった1つの項でも良く、多数
でも良く、また、好ましくは、データベースエンジンが
より早く処理できるために、逆ポーランド記法で表現さ
れる。逆ポーランド記法は、元のSQL照会中に存在す
るどんな括弧も取り除き、スタックプロセッサを使用し
て、照会が順次に処理される。一例として、下記のもの
がSQLでの照会である。
【0053】 SELECT POSITION, MANAGER FROM EMPLOYEES where AGE < ■ 25' and LOCATION = ■TRENTON' and VACATION < ■ 10' and GRADE < ■ < 85' ;
【0054】where節が述語であり、次の逆ポーラ
ンド形式に変換することができる。 AGE, ■ 25', <, LOCATION, ■TRENTON', =& VACATION, ■ 10', <&, GRADE, ■ 85', <&
ンド形式に変換することができる。 AGE, ■ 25', <, LOCATION, ■TRENTON', =& VACATION, ■ 10', <&, GRADE, ■ 85', <&
【0055】データベースエンジンの動作が開始する前
に、SQL照会をこの形式に変換するのは、呼び出し手
続きによる。データベースエンジンに対して述語が与え
られる前に、英語の名前を各々に関連したデータベース
およびフィールド番号に置き換えることも、呼び出しプ
ログラムによりなされる。
に、SQL照会をこの形式に変換するのは、呼び出し手
続きによる。データベースエンジンに対して述語が与え
られる前に、英語の名前を各々に関連したデータベース
およびフィールド番号に置き換えることも、呼び出しプ
ログラムによりなされる。
【0056】データベースエンジンは、キャラクタ又は
整数フィールドに関する述語を評価する。許容される演
算は、等しい、より小さい、より大きい、以下、以上、
および等しくないである。これらの比較は、論理演算子
のOR、ANDおよびNOTを使用することによって、
より複雑な照会へ組み合わせることができる。どんな組
み合わせ、整数或いはキャラクタの比較も、上述の演算
子により作成することができる。
整数フィールドに関する述語を評価する。許容される演
算は、等しい、より小さい、より大きい、以下、以上、
および等しくないである。これらの比較は、論理演算子
のOR、ANDおよびNOTを使用することによって、
より複雑な照会へ組み合わせることができる。どんな組
み合わせ、整数或いはキャラクタの比較も、上述の演算
子により作成することができる。
【0057】c.処理エレメント 前述のように、5個のデータベースエンジンのエレメン
トは、機能のオーバーラップおよびパイプライン化を可
能な限り利用して、当面の問題を解くのに共同して動作
する。再び、図3を参照すると、これらは、 1.コントロールプロセッサ(DBCP)310; 2.ワーキングストア312; 3.述語評価器(DBPE)304; 4.ソート/マージユニット(DBSM)302; 5.ハッシュコード発生器(DBHG)306;および 6.エキストラクタ/メモリインターフェイスユニット
(DBEM)308である。
トは、機能のオーバーラップおよびパイプライン化を可
能な限り利用して、当面の問題を解くのに共同して動作
する。再び、図3を参照すると、これらは、 1.コントロールプロセッサ(DBCP)310; 2.ワーキングストア312; 3.述語評価器(DBPE)304; 4.ソート/マージユニット(DBSM)302; 5.ハッシュコード発生器(DBHG)306;および 6.エキストラクタ/メモリインターフェイスユニット
(DBEM)308である。
【0058】d.コントロールプロセッサ コントロールプロセッサ310(図3)は、データベー
スエンジンを使用するアプリケーションおよびオペレー
ティングシステムプログラムと通信する唯一のエレメン
トである。コントロールプロセッサ310の機能は、メ
モリからコマンドおよびデータベースの情報の全てを得
て、データベースエンジンの他のエレメントの各々をス
ケジュールおよび制御することと、呼び出しプログラム
へステータスを伝達することである。これらの機能が複
雑なために、データベースエンジンの残りと並列的にア
ドレスおよび制御情報を計算できるプロセッサが必要で
ある。
スエンジンを使用するアプリケーションおよびオペレー
ティングシステムプログラムと通信する唯一のエレメン
トである。コントロールプロセッサ310の機能は、メ
モリからコマンドおよびデータベースの情報の全てを得
て、データベースエンジンの他のエレメントの各々をス
ケジュールおよび制御することと、呼び出しプログラム
へステータスを伝達することである。これらの機能が複
雑なために、データベースエンジンの残りと並列的にア
ドレスおよび制御情報を計算できるプロセッサが必要で
ある。
【0059】コントロールプロセッサ310は、好まし
くは、データベースエンジンの機能のための拡張が加え
られた801プロセッサを使用することで実現される。
なお、ワーキングストアバス316、318、コントロ
ールバス320およびデータベースエンジンが付加され
るコンピュータシステムへのインターフェイスを備えて
さえいれば、他の従来のプロセッサアーキテクチャを必
要な処理機能の実行のために使用できる。
くは、データベースエンジンの機能のための拡張が加え
られた801プロセッサを使用することで実現される。
なお、ワーキングストアバス316、318、コントロ
ールバス320およびデータベースエンジンが付加され
るコンピュータシステムへのインターフェイスを備えて
さえいれば、他の従来のプロセッサアーキテクチャを必
要な処理機能の実行のために使用できる。
【0060】コントロールプロセッサ310は、データ
ベースエンジンにおけるコマンド処理および制御機能の
全てを実行する。これらの機能は、コマンドを最良に処
理する仕方を決定するのと同様に、各機能エレメントお
よびセットアップの制御を有する。下記のものは、コン
トロールプロセッサ310で実行される機能のリストで
ある。
ベースエンジンにおけるコマンド処理および制御機能の
全てを実行する。これらの機能は、コマンドを最良に処
理する仕方を決定するのと同様に、各機能エレメントお
よびセットアップの制御を有する。下記のものは、コン
トロールプロセッサ310で実行される機能のリストで
ある。
【0061】1.実行すべき機能を決定するためにデー
タベースエンジンのコマンドブロックをシステムメモリ
から読み出す。各コマンドとこれに関連するデータ記述
子が実行される処理系列に変換される。一例として、ソ
ートコマンドは、ワーキングストア312へのデータベ
ースのブロックのロードをスケジュールし、データベー
ス全体が多数のブロックへソートされる迄ソート/マー
ジユニット302で各ブロックをソートさせ、最終出力
レコードを作成するために、ソート/マージユニット3
02でこれらのブロックのマージを実行させ、そして、
エキストラクタ/メモリインターフェイスユニット30
8にこれらのレコードをシステムメモリへ書き込ませる
ことにより、実行される。
タベースエンジンのコマンドブロックをシステムメモリ
から読み出す。各コマンドとこれに関連するデータ記述
子が実行される処理系列に変換される。一例として、ソ
ートコマンドは、ワーキングストア312へのデータベ
ースのブロックのロードをスケジュールし、データベー
ス全体が多数のブロックへソートされる迄ソート/マー
ジユニット302で各ブロックをソートさせ、最終出力
レコードを作成するために、ソート/マージユニット3
02でこれらのブロックのマージを実行させ、そして、
エキストラクタ/メモリインターフェイスユニット30
8にこれらのレコードをシステムメモリへ書き込ませる
ことにより、実行される。
【0062】2.データ記述子のフェッチと評価。これ
によって、データのフォーマット、エキストラクタ/メ
モリインターフェイスユニットによるアクセスの仕方、
ワーキングストア312内への列の抽出順序が決定され
る。
によって、データのフォーマット、エキストラクタ/メ
モリインターフェイスユニットによるアクセスの仕方、
ワーキングストア312内への列の抽出順序が決定され
る。
【0063】3.各コマンドに対する述語をフェッチ
し、それを述語評価器が実行するプログラムへ変換す
る。この変換は、列の番号を対応するワーキングストア
のオフセット(ここにデータがエキストラクタでロード
される)へ変換すること、並びに各命令の次命令フィー
ルドを計算することからなる。述語評価器プログラムの
作成の後に、述語評価器の命令および定数テーブルがコ
ントロールバス320を介してロードされる。
し、それを述語評価器が実行するプログラムへ変換す
る。この変換は、列の番号を対応するワーキングストア
のオフセット(ここにデータがエキストラクタでロード
される)へ変換すること、並びに各命令の次命令フィー
ルドを計算することからなる。述語評価器プログラムの
作成の後に、述語評価器の命令および定数テーブルがコ
ントロールバス320を介してロードされる。
【0064】4.システム内の他の全てのエレメントの
調整。この機能の実行のために、コントロールプロセッ
サ310は、コントロールバス320を使用し、他の処
理エレメントのコントロールレジスタへの書き込みを行
い、処理を開始し、処理エレメントのステータスを読
む。各処理エレメントは、コントロールバス320を介
してコントロールプロセッサ310により直接的に制御
されうる。データベースエンジンの処理エレメント間の
全ての通信は、コントロールバス320上を送られる。
コントロールプロセッサ310は、他の処理エレメント
302〜308と並列に動作する。これにより、他のエ
レメントがそれらのデータを処理している間に、コント
ロールプロセッサがバックグランド内の処理を実行でき
る。コントロールプロセッサ310は、エレメントが処
理用の新たなデータブロックを必要とする時或いはエラ
ーを有する時のみ、介在する。
調整。この機能の実行のために、コントロールプロセッ
サ310は、コントロールバス320を使用し、他の処
理エレメントのコントロールレジスタへの書き込みを行
い、処理を開始し、処理エレメントのステータスを読
む。各処理エレメントは、コントロールバス320を介
してコントロールプロセッサ310により直接的に制御
されうる。データベースエンジンの処理エレメント間の
全ての通信は、コントロールバス320上を送られる。
コントロールプロセッサ310は、他の処理エレメント
302〜308と並列に動作する。これにより、他のエ
レメントがそれらのデータを処理している間に、コント
ロールプロセッサがバックグランド内の処理を実行でき
る。コントロールプロセッサ310は、エレメントが処
理用の新たなデータブロックを必要とする時或いはエラ
ーを有する時のみ、介在する。
【0065】コントロールプロセッサ310の機能は、
コントロールプロセッサ310が内部のローカルワーキ
ングストア510(図5)に処理のために必要とする情
報の全てを保持しているので、データベースエンジンの
処理エレメントの他のものと衝突することなく動作され
うる。ローカルワーキングストア510は、アドレスお
よびコマンドデータの全てを保持するのに必要なスペー
スを提供する。このように、コマンド情報が一旦読まれ
ると、コントロールプロセッサ310とシステムメモリ
とのそれ以上の対話がない。
コントロールプロセッサ310が内部のローカルワーキ
ングストア510(図5)に処理のために必要とする情
報の全てを保持しているので、データベースエンジンの
処理エレメントの他のものと衝突することなく動作され
うる。ローカルワーキングストア510は、アドレスお
よびコマンドデータの全てを保持するのに必要なスペー
スを提供する。このように、コマンド情報が一旦読まれ
ると、コントロールプロセッサ310とシステムメモリ
とのそれ以上の対話がない。
【0066】コントロールプロセッサ310のハードウ
ェア構成が図5および図6に示される。コントロールプ
ロセッサ310は、64kバイトのマイクロストアと3
2kバイトのローカルワーキングストアとを有する80
1プロセッサで設計される。801命令の全てがデータ
ベースエンジンの機能に対して適用可能であるわけでは
ないので、801命令のサブセットのみが使用される。
コントロールプロセッサのハードウェアは、データベー
スエンジンのシステム残りに対する信号および保守用の
インターフェイスを含む。
ェア構成が図5および図6に示される。コントロールプ
ロセッサ310は、64kバイトのマイクロストアと3
2kバイトのローカルワーキングストアとを有する80
1プロセッサで設計される。801命令の全てがデータ
ベースエンジンの機能に対して適用可能であるわけでは
ないので、801命令のサブセットのみが使用される。
コントロールプロセッサのハードウェアは、データベー
スエンジンのシステム残りに対する信号および保守用の
インターフェイスを含む。
【0067】図5および図6は、従来の801アーキテ
クチャ(浮動小数点ロジックを有しない)を使用して具
体化されたコントロールプロセッサが示されている。コ
ントロールプロセッサ310は、コントロールバス32
0からコントロールプロセッサ310へ読み出されたデ
ータをバッファするコントロールバス入力レジスタ(C
BIR)502と、コントロールプロセッサ310から
コントロールバス320へ書き出されるデータをバッフ
ァするコントロールバス出力レジスタ(CBOR)50
4とを有する。また、コントロールプロセッサ310に
は、記憶データ入力レジスタ(SDIR)506と記憶
データ出力レジスタ(SDOR)とが設けられている。
記憶データ入力レジスタ506と記憶データ出力レジス
タ508は、ワーキングストアバス316、318の読
み出しおよび書き込みバッファを形成する。記憶データ
入力レジスタ506は、ワーキングストア312からコ
ントロールプロセッサ310へ読み出されるデータをバ
ッファする。記憶データ出力レジスタ508は、コント
ロールプロセッサ310からワーキングストア312へ
書き込まれるデータをバッファする。
クチャ(浮動小数点ロジックを有しない)を使用して具
体化されたコントロールプロセッサが示されている。コ
ントロールプロセッサ310は、コントロールバス32
0からコントロールプロセッサ310へ読み出されたデ
ータをバッファするコントロールバス入力レジスタ(C
BIR)502と、コントロールプロセッサ310から
コントロールバス320へ書き出されるデータをバッフ
ァするコントロールバス出力レジスタ(CBOR)50
4とを有する。また、コントロールプロセッサ310に
は、記憶データ入力レジスタ(SDIR)506と記憶
データ出力レジスタ(SDOR)とが設けられている。
記憶データ入力レジスタ506と記憶データ出力レジス
タ508は、ワーキングストアバス316、318の読
み出しおよび書き込みバッファを形成する。記憶データ
入力レジスタ506は、ワーキングストア312からコ
ントロールプロセッサ310へ読み出されるデータをバ
ッファする。記憶データ出力レジスタ508は、コント
ロールプロセッサ310からワーキングストア312へ
書き込まれるデータをバッファする。
【0068】演算実行とコントロールプロセッサのデー
タのための内部記憶装置がローカルワーキングストア
(LWS)510に設けられる。ローカルワーキングス
トア510のデータはワーキングストア312或いはコ
ントロールプロセッサの論理演算ユニット512から記
憶データ入力レジスタ506を介して供給される。コン
トロールストア514は、コントロールロジック516
で実行されるコントロールプログラムを含む。
タのための内部記憶装置がローカルワーキングストア
(LWS)510に設けられる。ローカルワーキングス
トア510のデータはワーキングストア312或いはコ
ントロールプロセッサの論理演算ユニット512から記
憶データ入力レジスタ506を介して供給される。コン
トロールストア514は、コントロールロジック516
で実行されるコントロールプログラムを含む。
【0069】コントロールロジック516はコントロー
ルプロセッサ310の順序づけおよび制御を行う。コン
トロールロジック516は、命令レジスタ(IR)51
8および命令カウンタ(IC)520を含む従来のマイ
クロシーケンサである。命令レジスタ518は現在実行
中の命令を保持し、一方、命令カウンタ520は現在実
行中の命令のアドレスを保持する。
ルプロセッサ310の順序づけおよび制御を行う。コン
トロールロジック516は、命令レジスタ(IR)51
8および命令カウンタ(IC)520を含む従来のマイ
クロシーケンサである。命令レジスタ518は現在実行
中の命令を保持し、一方、命令カウンタ520は現在実
行中の命令のアドレスを保持する。
【0070】コントロールプロセッサは、オペランドお
よびプログラムデータの記憶用の32個の汎用レジスタ
(GPR)522を有する。また、3個の一時ソースレ
ジスタ524〜528が現在実行中の命令のオペランド
の格納用に設けられている。第1の一時ソースレジスタ
(RA)524は現在実行中の命令の第1オペランドを
一時的に蓄えるために設けられる。第2の一時ソースレ
ジスタ(RB)526は現在実行中の命令の第2オペラ
ンドを一時的に蓄えるために設けられる。第3の一時ソ
ースレジスタ(RT)528は、ロテータ530および
アンド反転マスクユニット(AIM)に対する入力とし
て、現在実行中の命令の第2オペランドを一時的に蓄え
るために設けられる。また、第3の一時ソースレジスタ
(RT)328は、乗算および他の演算の部分結果を保
持する。
よびプログラムデータの記憶用の32個の汎用レジスタ
(GPR)522を有する。また、3個の一時ソースレ
ジスタ524〜528が現在実行中の命令のオペランド
の格納用に設けられている。第1の一時ソースレジスタ
(RA)524は現在実行中の命令の第1オペランドを
一時的に蓄えるために設けられる。第2の一時ソースレ
ジスタ(RB)526は現在実行中の命令の第2オペラ
ンドを一時的に蓄えるために設けられる。第3の一時ソ
ースレジスタ(RT)528は、ロテータ530および
アンド反転マスクユニット(AIM)に対する入力とし
て、現在実行中の命令の第2オペランドを一時的に蓄え
るために設けられる。また、第3の一時ソースレジスタ
(RT)328は、乗算および他の演算の部分結果を保
持する。
【0071】論理演算ユニット(ALU)512はコン
トロールロジック516の制御の下で、RAレジスタ5
24およびRBレジスタ526中のオペランドに基づく
計算および論理演算を行う。アドレス加算器534は、
RAレジスタ524およびRBレジスタ526からのオ
ペランド、命令レジスタ518の現在の命令、命令カウ
ンタ520からの現在の命令のアドレスを受け取り、命
令分岐のためのアドレス計算を行う。
トロールロジック516の制御の下で、RAレジスタ5
24およびRBレジスタ526中のオペランドに基づく
計算および論理演算を行う。アドレス加算器534は、
RAレジスタ524およびRBレジスタ526からのオ
ペランド、命令レジスタ518の現在の命令、命令カウ
ンタ520からの現在の命令のアドレスを受け取り、命
令分岐のためのアドレス計算を行う。
【0072】ロテータ530は、RTレジスタ528の
内容を左右にシフトするバレルシフタである。シフトさ
れた結果がアンド反転マスクユニット532によりマス
ク発生器536の出力とANDされる。
内容を左右にシフトするバレルシフタである。シフトさ
れた結果がアンド反転マスクユニット532によりマス
ク発生器536の出力とANDされる。
【0073】マスク発生器536はスタートアドレスレ
ジスタ(SAR)540およびエンドアドレスレジスタ
(EAR)542からその入力を受け取る。SAR54
0およびEAR542は、コントロールロジック516
により供給されたマスク発生器536のスタートビット
アドレスとエンドビットアドレスをそれぞれ保持する。
ジスタ(SAR)540およびエンドアドレスレジスタ
(EAR)542からその入力を受け取る。SAR54
0およびEAR542は、コントロールロジック516
により供給されたマスク発生器536のスタートビット
アドレスとエンドビットアドレスをそれぞれ保持する。
【0074】アンド反転マスクユニット(AIM)53
2はRTレジスタ528の内容に対して回転およびマス
ク動作を行う。AIMの4個の入力の1つが乗数/商
(MQ)レジスタ538である。このMQレジスタ53
8は、801エンジンの乗算ステップ命令の部分積を保
持し、また、シフト、ロテートおよび記憶命令のオペラ
ンドである。
2はRTレジスタ528の内容に対して回転およびマス
ク動作を行う。AIMの4個の入力の1つが乗数/商
(MQ)レジスタ538である。このMQレジスタ53
8は、801エンジンの乗算ステップ命令の部分積を保
持し、また、シフト、ロテートおよび記憶命令のオペラ
ンドである。
【0075】信号/Qバス/割込みロジック544がコ
ンピュータシステムのインターフェイスを提供する。こ
のロジック544を通じて、コンピュータシステムがデ
ータベースエンジンの動作を開始、完了させる。
ンピュータシステムのインターフェイスを提供する。こ
のロジック544を通じて、コンピュータシステムがデ
ータベースエンジンの動作を開始、完了させる。
【0076】上述の構成要素は従来の801エンジンで
実現されている。ワーキングストアバス316、318
とコントロールバス320への経路が追加されている。
コンピュータシステムへのインターフェイスは、801
エンジンにおいて具体化された従来の形式のものであ
る。801エンジンは、より詳細には、"THE 801 MINIC
OMPUTER"、George Radin著、1982年 ACM 0-89791-066-4
82/03/0039 に述べられている。
実現されている。ワーキングストアバス316、318
とコントロールバス320への経路が追加されている。
コンピュータシステムへのインターフェイスは、801
エンジンにおいて具体化された従来の形式のものであ
る。801エンジンは、より詳細には、"THE 801 MINIC
OMPUTER"、George Radin著、1982年 ACM 0-89791-066-4
82/03/0039 に述べられている。
【0077】e.ワーキングストア ワーキングストア312(図3)は、好ましくは、デー
タベースエンジンにより処理されているデータを保持す
るために用いられる、少なくとも128kバイトのメモ
リからなる。ワーキングストア312は、2つの4倍長
ワード(16バイト)バス316、318を通じて、2
つの等しい区画として同時にアクセス可能である。読み
出しおよび書き込みの両者が1サイクルを必要とし、従
って、ワーキングストア312は各サイクルで2個の4
倍長ワードをアクセス(読み出し或いは書き込み)でき
る。なお、128kバイトは、最小限の好ましい大きさ
である。コストおよび設計の面で許容できるならば、よ
り大きなワーキングストアでも良い。良いとは言えない
が、より少ないメモリ量でも、使用できる。
タベースエンジンにより処理されているデータを保持す
るために用いられる、少なくとも128kバイトのメモ
リからなる。ワーキングストア312は、2つの4倍長
ワード(16バイト)バス316、318を通じて、2
つの等しい区画として同時にアクセス可能である。読み
出しおよび書き込みの両者が1サイクルを必要とし、従
って、ワーキングストア312は各サイクルで2個の4
倍長ワードをアクセス(読み出し或いは書き込み)でき
る。なお、128kバイトは、最小限の好ましい大きさ
である。コストおよび設計の面で許容できるならば、よ
り大きなワーキングストアでも良い。良いとは言えない
が、より少ないメモリ量でも、使用できる。
【0078】ワーキングストア312は2個の4倍長ワ
ードバス316、318を使用してデータベースエンジ
ンの全エレメントにより直接的にアクセス可能である。
各バスは、パリティ付きの16バイトのデータと、16
ビットのアドレスおよびコントロール信号を有してい
る。従って、各バスのラインは176本で、合計で35
2本である。
ードバス316、318を使用してデータベースエンジ
ンの全エレメントにより直接的にアクセス可能である。
各バスは、パリティ付きの16バイトのデータと、16
ビットのアドレスおよびコントロール信号を有してい
る。従って、各バスのラインは176本で、合計で35
2本である。
【0079】f.述語評価器 述語評価器(DBPE)304の構成および動作につい
て、図3、図7および図8を参照して説明しよう。述語
評価器304は、ワーキングストア312にある2つの
4倍長ワード(16バイト)を2サイクルで比較する
か、又は定数とワーキングストア312の1つの4倍長
ワードを1サイクルで比較する。述語評価器304は、
コントロールプロセッサ310で作成された逆ポーラン
ド述語を処理する論理スタックを使用したスタックプロ
セッサである。命令がコントロールプロセッサ310に
より、コントロールバス320を介して命令テーブル6
02にロードされる。述語評価器304は、そのレコー
ドの数が尽きるまで、ループ方式で命令を実行する。
て、図3、図7および図8を参照して説明しよう。述語
評価器304は、ワーキングストア312にある2つの
4倍長ワード(16バイト)を2サイクルで比較する
か、又は定数とワーキングストア312の1つの4倍長
ワードを1サイクルで比較する。述語評価器304は、
コントロールプロセッサ310で作成された逆ポーラン
ド述語を処理する論理スタックを使用したスタックプロ
セッサである。命令がコントロールプロセッサ310に
より、コントロールバス320を介して命令テーブル6
02にロードされる。述語評価器304は、そのレコー
ドの数が尽きるまで、ループ方式で命令を実行する。
【0080】述語評価器304はサーチおよびジョイン
の照会をいくつかの理由で高速に処理できる。述語評価
器は、ワーキングストア312からの2つの4倍長ワー
ドオペランドを2サイクル毎に比較できる。4倍長ワー
ドよりも長いサーチキーは、一度に4倍長ワードで比較
される。更に、サーチの実行プロセスがメモリアクセス
プロセスとオーバーラップする。具体的には、エキスト
ラクタ308がワーキングストア312の1つの区画に
書き込んでいるのと同時に、述語評価器304が他の区
画からのデータを処理する。最終的に、述語評価器の命
令は「次フィールド」を含み、これは、現在の結果が一
義的にサーチ結果を規定するならば、現述語項又は述語
全体から早く出ることを可能にする。例えば一連のAN
Dの項のうちの最初の項が誤りである場合、他の項を評
価する必要はない。それらが何であっても、結果は誤り
である。
の照会をいくつかの理由で高速に処理できる。述語評価
器は、ワーキングストア312からの2つの4倍長ワー
ドオペランドを2サイクル毎に比較できる。4倍長ワー
ドよりも長いサーチキーは、一度に4倍長ワードで比較
される。更に、サーチの実行プロセスがメモリアクセス
プロセスとオーバーラップする。具体的には、エキスト
ラクタ308がワーキングストア312の1つの区画に
書き込んでいるのと同時に、述語評価器304が他の区
画からのデータを処理する。最終的に、述語評価器の命
令は「次フィールド」を含み、これは、現在の結果が一
義的にサーチ結果を規定するならば、現述語項又は述語
全体から早く出ることを可能にする。例えば一連のAN
Dの項のうちの最初の項が誤りである場合、他の項を評
価する必要はない。それらが何であっても、結果は誤り
である。
【0081】述語評価器304は4倍長ワードオペラン
ドの比較を行い、一時的な結果を保持するのにスタック
632を使用する。述語評価器304はワーキングスト
アバス316、318を通じてワーキングストア312
をアクセスする。レコードオペランドがワーキングスト
ア312からフェッチされ、定数が定数テーブル604
からフェッチされ、結果がワーキングストア312に書
き戻される。
ドの比較を行い、一時的な結果を保持するのにスタック
632を使用する。述語評価器304はワーキングスト
アバス316、318を通じてワーキングストア312
をアクセスする。レコードオペランドがワーキングスト
ア312からフェッチされ、定数が定数テーブル604
からフェッチされ、結果がワーキングストア312に書
き戻される。
【0082】定数テーブル(CT)604は、比較定数
とワーキングストアのアドレスを保持するのに使用され
る4倍長ワード定数のアレイである。定数テーブル60
4は比較動作のために、一時に4倍長ワードずつ比較器
630に読み込まれる。アドレス定数に関しては、最下
位の16ビットのみが4倍長ワードから使用される。定
数テーブル604は、コントロールプロセッサ310に
より、一時に2倍長ワード(ダブルワード)ずつ書き込
まれる。定数テーブル604はコントロールバス320
を使用してコントロールプロセッサ310により初期化
される。定数テーブルの典型的な大きさは、128ビッ
トの幅で、深さが2Kである。
とワーキングストアのアドレスを保持するのに使用され
る4倍長ワード定数のアレイである。定数テーブル60
4は比較動作のために、一時に4倍長ワードずつ比較器
630に読み込まれる。アドレス定数に関しては、最下
位の16ビットのみが4倍長ワードから使用される。定
数テーブル604は、コントロールプロセッサ310に
より、一時に2倍長ワード(ダブルワード)ずつ書き込
まれる。定数テーブル604はコントロールバス320
を使用してコントロールプロセッサ310により初期化
される。定数テーブルの典型的な大きさは、128ビッ
トの幅で、深さが2Kである。
【0083】命令テーブル602は、実行されるサーチ
プログラムがコントロールプロセッサ310によりロー
ドされるダブルワード幅の命令アレイである。命令テー
ブル602は命令カウンタ(IC)606によりアドレ
スされ、命令が命令レジスタ(IR)608へ読み込ま
れる。命令テーブルの典型的な大きさは、64ビットの
幅で、深さが2Kである。
プログラムがコントロールプロセッサ310によりロー
ドされるダブルワード幅の命令アレイである。命令テー
ブル602は命令カウンタ(IC)606によりアドレ
スされ、命令が命令レジスタ(IR)608へ読み込ま
れる。命令テーブルの典型的な大きさは、64ビットの
幅で、深さが2Kである。
【0084】命令レジスタ(IR)608は、実行中の
命令を保持するダブルワードのレジスタである。これ
は、次のサブフィールドを有する。 A、B、D それぞれベースA、BおよびDレジスタからのオフセッ
トであり、ワーキングストアのオペランドフェッチアド
レス又は結果(D)の宛先アドレスの生成に使用され
る。また、A、B、Dフィールドは定数テーブルのアド
レスを指定できる。 C 命令タイプフィールドである。 F フラグである。このフィールドは、演算、スタックのポ
ストAND又はポストOR、ダブルワードより長い比較
のためのルーピング、および次フィールド分岐の制御を
行うフラグビットを有する。 N0、N1 (次フィールド) このフィールドは、現命令の結果が真或いは偽の場合の
分岐先の命令アドレスを指定する。Fフィールド内でこ
の選択が特定される。次フィールドにより、述語評価器
は、照会が早く終わる時を識別し、実行される必要がな
い命令を避けた分岐を取ることできる。これは、実行時
間を短縮し、性能を改善する。パイプライン長と次フィ
ールド分岐を取ることで生じる2サイクルの遅延とのた
めに、次フィールド分岐は、実行不要な命令が3以上で
あれば性能を改善するが、さもなければ、次フィールド
を使用すべきでない。
命令を保持するダブルワードのレジスタである。これ
は、次のサブフィールドを有する。 A、B、D それぞれベースA、BおよびDレジスタからのオフセッ
トであり、ワーキングストアのオペランドフェッチアド
レス又は結果(D)の宛先アドレスの生成に使用され
る。また、A、B、Dフィールドは定数テーブルのアド
レスを指定できる。 C 命令タイプフィールドである。 F フラグである。このフィールドは、演算、スタックのポ
ストAND又はポストOR、ダブルワードより長い比較
のためのルーピング、および次フィールド分岐の制御を
行うフラグビットを有する。 N0、N1 (次フィールド) このフィールドは、現命令の結果が真或いは偽の場合の
分岐先の命令アドレスを指定する。Fフィールド内でこ
の選択が特定される。次フィールドにより、述語評価器
は、照会が早く終わる時を識別し、実行される必要がな
い命令を避けた分岐を取ることできる。これは、実行時
間を短縮し、性能を改善する。パイプライン長と次フィ
ールド分岐を取ることで生じる2サイクルの遅延とのた
めに、次フィールド分岐は、実行不要な命令が3以上で
あれば性能を改善するが、さもなければ、次フィールド
を使用すべきでない。
【0085】I加算器610は、1ずつインクリメント
することにより、命令レジスタからMUX(マルチプレ
クサ)612を介して供給される次フィールドを加算す
ることにより、又はゼロへリセットすることにより、命
令カウンタ606を更新する2進加算器である。命令カ
ウンタ606はコントロールバス320を通じてコント
ロールプロセッサ310により、任意のアドレスへリセ
ットされうる。加算器の典型的な大きさは、11ビット
である。
することにより、命令レジスタからMUX(マルチプレ
クサ)612を介して供給される次フィールドを加算す
ることにより、又はゼロへリセットすることにより、命
令カウンタ606を更新する2進加算器である。命令カ
ウンタ606はコントロールバス320を通じてコント
ロールプロセッサ310により、任意のアドレスへリセ
ットされうる。加算器の典型的な大きさは、11ビット
である。
【0086】述語評価器は、ベースAレジスタ614、
ベースBレジスタ616、ベースDレジスタ618を有
する。これらのベースレジスタは、オペランドA、オペ
ランドBおよび結果の宛先(D)のベースアドレスを保
管するのに用いられる。これらのレジスタにオフセット
を加算して、ワーキングストア312のアドレスを生成
することにより、オペランドがフェッチされる。
ベースBレジスタ616、ベースDレジスタ618を有
する。これらのベースレジスタは、オペランドA、オペ
ランドBおよび結果の宛先(D)のベースアドレスを保
管するのに用いられる。これらのレジスタにオフセット
を加算して、ワーキングストア312のアドレスを生成
することにより、オペランドがフェッチされる。
【0087】また、2個の長さレジスタ620および6
22が設けられている。長さレジスタは、比較される4
倍長ワードの数(すなわち、オペランドの長さ)をロー
ドされ、これがゼロになって、比較が完了したことを示
すまで、ループ形式でディクレメントされる。レコード
計数レジスタ624は、処理されるレコードの数を含
む。
22が設けられている。長さレジスタは、比較される4
倍長ワードの数(すなわち、オペランドの長さ)をロー
ドされ、これがゼロになって、比較が完了したことを示
すまで、ループ形式でディクレメントされる。レコード
計数レジスタ624は、処理されるレコードの数を含
む。
【0088】2個の16ビット加算器(共に参照符号6
26で示す)は、長さレジスタ、ベースレジスタ又はレ
コード計数レジスタを命令の実行中に更新するのに使用
される。また、これらの加算器626は、ゼロの長さ或
いはレコード計数の状態を識別するために試験されるゼ
ロ状態フラグを発生する。加算器の出力は出力レジスタ
628へ供給される。出力レジスタ628は、述語評価
器304からワーキングストア312(図3)へ書き込
まれるデータのためのステージングレジスタである。述
語評価器304が選択されたレコードに対するポインタ
をワーキングストア312へ書き込み、これにより他の
処理エレメントがポインタを使用できる。
26で示す)は、長さレジスタ、ベースレジスタ又はレ
コード計数レジスタを命令の実行中に更新するのに使用
される。また、これらの加算器626は、ゼロの長さ或
いはレコード計数の状態を識別するために試験されるゼ
ロ状態フラグを発生する。加算器の出力は出力レジスタ
628へ供給される。出力レジスタ628は、述語評価
器304からワーキングストア312(図3)へ書き込
まれるデータのためのステージングレジスタである。述
語評価器304が選択されたレコードに対するポインタ
をワーキングストア312へ書き込み、これにより他の
処理エレメントがポインタを使用できる。
【0089】比較器630は、3入力の比較器であり、
2つの4倍長ワードを比較し、そしてスタック632か
らの先頭要素(TOS)と論理結果を比較する。先頭要
素が有効にポップされ、そして、結果がスタックにプッ
シュされる。比較器630へのオペランドは、Aレジス
タ634およびBレジスタ636から供給される。Aレ
ジスタ634およびBレジスタ636は命令毎にワーキ
ングストア312からロードされる。但し、Aレジスタ
634を定数テーブル604に含まれるアドレスと比較
する命令は、Bレジスタ636をロードしない。
2つの4倍長ワードを比較し、そしてスタック632か
らの先頭要素(TOS)と論理結果を比較する。先頭要
素が有効にポップされ、そして、結果がスタックにプッ
シュされる。比較器630へのオペランドは、Aレジス
タ634およびBレジスタ636から供給される。Aレ
ジスタ634およびBレジスタ636は命令毎にワーキ
ングストア312からロードされる。但し、Aレジスタ
634を定数テーブル604に含まれるアドレスと比較
する命令は、Bレジスタ636をロードしない。
【0090】比較器630はAおよびBレジスタ(又は
定数テーブル)の値に対し次の比較を行う。すなわち、
より大きい、より小さい、以下、以上、等しい、等しく
ない。また、比較器630は次の論理演算を行う。すな
わち、A/Bレジスタ(定数テーブル)の比較結果及び
TOS、又はスタックの2個の先頭要素のAND、OR
およびNOT。前者の場合には、TOSがポップされ、
そして結果がスタックにプッシュされる。後者の場合に
は、両方の先頭要素がポップされ、そして結果がスタッ
クにプッシュされる。結果の値はコントロールおよびシ
ーケンスロジック638にも送られ、次の分岐が取られ
るかどうかが判定される。
定数テーブル)の値に対し次の比較を行う。すなわち、
より大きい、より小さい、以下、以上、等しい、等しく
ない。また、比較器630は次の論理演算を行う。すな
わち、A/Bレジスタ(定数テーブル)の比較結果及び
TOS、又はスタックの2個の先頭要素のAND、OR
およびNOT。前者の場合には、TOSがポップされ、
そして結果がスタックにプッシュされる。後者の場合に
は、両方の先頭要素がポップされ、そして結果がスタッ
クにプッシュされる。結果の値はコントロールおよびシ
ーケンスロジック638にも送られ、次の分岐が取られ
るかどうかが判定される。
【0091】スタック632は、1ビットの幅で、後入
れ/先出し(LIFO)のスタックであり、照会の処理
中に一時的な値を保持するのに使用される。2個の先頭
要素は、何時でも、処理のために比較器630が利用で
きる。
れ/先出し(LIFO)のスタックであり、照会の処理
中に一時的な値を保持するのに使用される。2個の先頭
要素は、何時でも、処理のために比較器630が利用で
きる。
【0092】コントロールおよびシーケンスロジック6
38は、従来のマイクロシーケンサであって、述語評価
器304の内で動作の順序づけおよび分岐を制御する。
述語評価器304は、好ましくは、命令の開始毎に1サ
イクル又は2サイクルで動作する3サイクルパイプライ
ンを使用する。
38は、従来のマイクロシーケンサであって、述語評価
器304の内で動作の順序づけおよび分岐を制御する。
述語評価器304は、好ましくは、命令の開始毎に1サ
イクル又は2サイクルで動作する3サイクルパイプライ
ンを使用する。
【0093】述語評価器304の命令セットは、9個の
命令タイプを含む。 1.先頭要素(TOS)との比較およびAND 2個のオペランド、すなわち、AおよびBレジスタ63
4、636、又はAレジスタ634と定数テーブル60
4からの定数とが比較され、その結果がTOSの値とA
NDされる。この動作の論理結果が以前のTOSの値に
代えてスタック632にプッシュされる。有効な比較の
演算子は、より大きい、より小さい、以下、以上、等し
い、等しくないである。
命令タイプを含む。 1.先頭要素(TOS)との比較およびAND 2個のオペランド、すなわち、AおよびBレジスタ63
4、636、又はAレジスタ634と定数テーブル60
4からの定数とが比較され、その結果がTOSの値とA
NDされる。この動作の論理結果が以前のTOSの値に
代えてスタック632にプッシュされる。有効な比較の
演算子は、より大きい、より小さい、以下、以上、等し
い、等しくないである。
【0094】2.先頭要素(TOS)との比較およびO
R 2個のオペランド、すなわち、AおよびBレジスタ63
4、636、又はAレジスタ634と定数テーブル60
4からの定数とが比較され、その結果がTOSの値とO
Rされる。この動作の論理結果が以前のTOSの値に代
えてスタック632にプッシュされる。有効な比較の演
算子は、より大きい、より小さい、以下、以上、等し
い、等しくないである。
R 2個のオペランド、すなわち、AおよびBレジスタ63
4、636、又はAレジスタ634と定数テーブル60
4からの定数とが比較され、その結果がTOSの値とO
Rされる。この動作の論理結果が以前のTOSの値に代
えてスタック632にプッシュされる。有効な比較の演
算子は、より大きい、より小さい、以下、以上、等し
い、等しくないである。
【0095】3.比較およびプッシュ AおよびBレジスタ634、636、又はAレジスタ6
34と定数テーブル604からの定数とが比較され、そ
の論理結果がスタック632へプッシュされる。有効な
比較の演算子は、より大きい、より小さい、以下、以
上、等しい、等しくないである。
34と定数テーブル604からの定数とが比較され、そ
の論理結果がスタック632へプッシュされる。有効な
比較の演算子は、より大きい、より小さい、以下、以
上、等しい、等しくないである。
【0096】4.加算又は減算 2個のオペランドが加算器626により加算又は減算さ
れ、その結果が識別された宛先レジスタに記憶される。
有効なソースオペランドは、ベースA/B、長さA/
B、レコード計数、ベースD、および定数(定数テーブ
ル604から)である。結果は、上述のどれにも行くこ
とができ、出力レジスタ628へも行ける。加算および
減算はコントロールおよびシーケンスロジック638の
コントロールフラグをセットして、結果がゼロになった
ことを示すことができる。
れ、その結果が識別された宛先レジスタに記憶される。
有効なソースオペランドは、ベースA/B、長さA/
B、レコード計数、ベースD、および定数(定数テーブ
ル604から)である。結果は、上述のどれにも行くこ
とができ、出力レジスタ628へも行ける。加算および
減算はコントロールおよびシーケンスロジック638の
コントロールフラグをセットして、結果がゼロになった
ことを示すことができる。
【0097】5.ワーキングストア(WS)のアクセス
命令:WS読み出しおよびWS書き込み 読み出しは、データをAレジスタ634又はBレジスタ
636へ置く。書き込みは、出力レジスタ628の値を
指定されたワーキングストアのアドレスに書き込む。ア
ドレスは、いずれかのベースレジスタから生成される。
命令:WS読み出しおよびWS書き込み 読み出しは、データをAレジスタ634又はBレジスタ
636へ置く。書き込みは、出力レジスタ628の値を
指定されたワーキングストアのアドレスに書き込む。ア
ドレスは、いずれかのベースレジスタから生成される。
【0098】6.スタック動作:プッシュおよびポップ これらの命令はスタックに値をプッシュし、又はスタッ
ク632から値をポップする。
ク632から値をポップする。
【0099】7.スタック論理動作:AND、ORおよ
びNOT スタック632の2個の先頭要素は、比較器630によ
りAND又はORされることができ、その結果がスタッ
クにプッシュされる。NOT TOS命令は、TOSを
反転する。
びNOT スタック632の2個の先頭要素は、比較器630によ
りAND又はORされることができ、その結果がスタッ
クにプッシュされる。NOT TOS命令は、TOSを
反転する。
【0100】8.再スタート 再スタート命令は、プログラムの最初のアドレスへ分岐
させ、スタックポインタをゼロ(空のスタック)にリセ
ットし、更に、ベースAおよびBレジスタをインクリメ
ントする。この命令は、レコードがサーチされた後で使
用され、次のレコードの評価を開始する。レコード計数
レジスタ624およびベースDレジスタ618はこの命
令の実行前に更新される。
させ、スタックポインタをゼロ(空のスタック)にリセ
ットし、更に、ベースAおよびBレジスタをインクリメ
ントする。この命令は、レコードがサーチされた後で使
用され、次のレコードの評価を開始する。レコード計数
レジスタ624およびベースDレジスタ618はこの命
令の実行前に更新される。
【0101】9.停止およびステータスの送出 この命令は、述語評価器304の実行を停止し、また、
コントロールプロセッサ310へステータスワードを送
出する。ステータスワードは、フラグおよび命令からの
情報を有する。これは、コントロールプロセッサに対し
て、述語評価器がレコードの1ブロックの処理を終了し
たこと、出力領域が一杯であるか、エラーが生じたこと
を知らせる。
コントロールプロセッサ310へステータスワードを送
出する。ステータスワードは、フラグおよび命令からの
情報を有する。これは、コントロールプロセッサに対し
て、述語評価器がレコードの1ブロックの処理を終了し
たこと、出力領域が一杯であるか、エラーが生じたこと
を知らせる。
【0102】述語評価器の命令は、3種類の機能を実行
する。すなわち、述語評価器304のポインタの更新、
オペランドの比較およびワーキングストア312への結
果の書き込みである。比較されるレコードの各々のため
に、ベースAレジスタ614およびベースBレジスタ6
16にポインタが維持され、レコードが処理される都
度、ポインタが更新される。レコードは、順番にワーキ
ングストア312に記憶される。ポインタはレコードの
ベースアドレスを与え、そのレコード中の比較されるべ
き列は命令のオフセットフィールドにより示される。ベ
ースDレジスタ618で与えられるワーキングストア3
12のアドレスに対して、結果が書き込まれる。また、
ベースDレジスタ618は、結果が発生する都度、更新
される。ベースA、ベースBおよびベースDレジスタ
は、長さA/Bレジスタ620、622又は定数テーブ
ル604内の定数によりインクリメントされる。
する。すなわち、述語評価器304のポインタの更新、
オペランドの比較およびワーキングストア312への結
果の書き込みである。比較されるレコードの各々のため
に、ベースAレジスタ614およびベースBレジスタ6
16にポインタが維持され、レコードが処理される都
度、ポインタが更新される。レコードは、順番にワーキ
ングストア312に記憶される。ポインタはレコードの
ベースアドレスを与え、そのレコード中の比較されるべ
き列は命令のオフセットフィールドにより示される。ベ
ースDレジスタ618で与えられるワーキングストア3
12のアドレスに対して、結果が書き込まれる。また、
ベースDレジスタ618は、結果が発生する都度、更新
される。ベースA、ベースBおよびベースDレジスタ
は、長さA/Bレジスタ620、622又は定数テーブ
ル604内の定数によりインクリメントされる。
【0103】命令は、命令テーブル602から命令レジ
スタ(IR)606へフェッチされる。命令のフェッチ
および復号は、1サイクルかかる。その後で、1或いは
2サイクルのオペランドフェッチがあり、最終的に実行
に1サイクルかかる。従って、実行パイプラインは、3
サイクルの長さであり、命令が1或いは2サイクル毎に
開始する。ワーキングストアの2つのオペランドを有す
る命令はオペランドフェッチのために2サイクルかか
り、従って、命令開始の間に2サイクルを必要とする。
ワーキングストアオペランドと定数テーブルオペランド
を持つ命令は、両者を並列に読み出せるので、オペラン
ドを読むのに1サイクルだけで良く、従って、これらの
命令はサイクル毎に開始できる。
スタ(IR)606へフェッチされる。命令のフェッチ
および復号は、1サイクルかかる。その後で、1或いは
2サイクルのオペランドフェッチがあり、最終的に実行
に1サイクルかかる。従って、実行パイプラインは、3
サイクルの長さであり、命令が1或いは2サイクル毎に
開始する。ワーキングストアの2つのオペランドを有す
る命令はオペランドフェッチのために2サイクルかか
り、従って、命令開始の間に2サイクルを必要とする。
ワーキングストアオペランドと定数テーブルオペランド
を持つ命令は、両者を並列に読み出せるので、オペラン
ドを読むのに1サイクルだけで良く、従って、これらの
命令はサイクル毎に開始できる。
【0104】命令テーブル602に格納されるプログラ
ムは、コマンドで与えられる照会の述語からコントロー
ルプロセッサ310によって作成される。これは、ワー
キングストア312のレコード格納場所およびそれらの
フォーマットを考慮した述語の翻訳である。一般的に、
照会の処理の概略は、以下のものである。
ムは、コマンドで与えられる照会の述語からコントロー
ルプロセッサ310によって作成される。これは、ワー
キングストア312のレコード格納場所およびそれらの
フォーマットを考慮した述語の翻訳である。一般的に、
照会の処理の概略は、以下のものである。
【0105】1.コントロールプロセッサ310がコマ
ンド、データ記述子および実行される述語を読み、評価
のためにレコードをどのようにワーキングストア312
に格納するかを決定する。比較を容易とするために、レ
コードの内で関係のある列がまとめて置かれるように、
レコードが抽出される。コントロールプロセッサ310
は、記憶装置アクセスと、抽出動作とを開始し、レコー
ドの最初のブロックがワーキングストア312にロード
される。
ンド、データ記述子および実行される述語を読み、評価
のためにレコードをどのようにワーキングストア312
に格納するかを決定する。比較を容易とするために、レ
コードの内で関係のある列がまとめて置かれるように、
レコードが抽出される。コントロールプロセッサ310
は、記憶装置アクセスと、抽出動作とを開始し、レコー
ドの最初のブロックがワーキングストア312にロード
される。
【0106】2.最初のレコードがロードされている
間、コントロールプロセッサ310は、ワーキングスト
ア312のレコードのフォーマットと必要なフィールド
に基づいて、述語を述語評価プログラムへ翻訳する。そ
して、述語評価器304が可能な時に述語から早く出ら
れるように、プログラムを評価し、次フィールドをセッ
トする。
間、コントロールプロセッサ310は、ワーキングスト
ア312のレコードのフォーマットと必要なフィールド
に基づいて、述語を述語評価プログラムへ翻訳する。そ
して、述語評価器304が可能な時に述語から早く出ら
れるように、プログラムを評価し、次フィールドをセッ
トする。
【0107】3.プログラムが作成されると、述語評価
器の命令テーブル602にロードされる。必要な定数が
定数テーブル604にロードされる。そして、ベース、
長さおよび計数レジスタ614〜624がワーキングス
トア312の正しい位置を指示する値をロードされる。
これは、ワーキングストア312がレコードの最初のブ
ロックをロードされている間に、コントロールバス32
0を介して全てなされる。
器の命令テーブル602にロードされる。必要な定数が
定数テーブル604にロードされる。そして、ベース、
長さおよび計数レジスタ614〜624がワーキングス
トア312の正しい位置を指示する値をロードされる。
これは、ワーキングストア312がレコードの最初のブ
ロックをロードされている間に、コントロールバス32
0を介して全てなされる。
【0108】4.最初のブロックがロードされると、コ
ントロールプロセッサ310が述語評価器304に処理
開始を指示する。同時に、エキストラクタ/メモリイン
ターフェイスユニット308がセットアップされ、ワー
キングストア312の他方の区画にレコードの次のブロ
ックがロードされる。このロード動作は、述語評価器3
04による最初のブロックの処理と並列にランするよう
に開始される。サーチが完了するか、ワーキングストア
の出力領域が一杯となり、メモリへ書く必要があるか、
又はエラーが生じるまで、このようにして処理が続けら
れる。
ントロールプロセッサ310が述語評価器304に処理
開始を指示する。同時に、エキストラクタ/メモリイン
ターフェイスユニット308がセットアップされ、ワー
キングストア312の他方の区画にレコードの次のブロ
ックがロードされる。このロード動作は、述語評価器3
04による最初のブロックの処理と並列にランするよう
に開始される。サーチが完了するか、ワーキングストア
の出力領域が一杯となり、メモリへ書く必要があるか、
又はエラーが生じるまで、このようにして処理が続けら
れる。
【0109】5.サーチが完了した時に、エキストラク
タ/メモリインターフェイスユニット308が残ってい
る結果レコードをシステムメモリへ書くように命令さ
れ、動作が終了する。
タ/メモリインターフェイスユニット308が残ってい
る結果レコードをシステムメモリへ書くように命令さ
れ、動作が終了する。
【0110】g.ソート/マージユニット ソート/マージユニット(DBSM)302は、ソー
ト、マージおよびジョインの動作を行う。更に、ソート
/マージユニットは、キーのリストに対する合併、共通
部分、差およびクロス積の集合演算を行う。これらのオ
ペレーションの類似性により、これらを同じハードウェ
アエレメントで効率的に行うことができる。動作の全て
は、排他的にワーキングストア312(図3)をアクセ
スし、システムの主記憶装置410或いはページ記憶装
置412(図4)からロードされたデータのブロックを
処理していく。これは、システム記憶装置の負担を減少
し、キーへの1サイクルアクセスを提供する。
ト、マージおよびジョインの動作を行う。更に、ソート
/マージユニットは、キーのリストに対する合併、共通
部分、差およびクロス積の集合演算を行う。これらのオ
ペレーションの類似性により、これらを同じハードウェ
アエレメントで効率的に行うことができる。動作の全て
は、排他的にワーキングストア312(図3)をアクセ
スし、システムの主記憶装置410或いはページ記憶装
置412(図4)からロードされたデータのブロックを
処理していく。これは、システム記憶装置の負担を減少
し、キーへの1サイクルアクセスを提供する。
【0111】このソート/マージユニットハードウェア
は、図9を参照することにより、より理解される。ソー
トおよびマージ動作は、ワーキングストア312からの
2つの4倍長ワード(16バイト)のオペランドを読み
出しサイクル毎に比較する比較器702(キー比較器)
を用いて行われる。2つのオペランドの各々は、2つの
ワーキングストアバス316、318のうちの1つを経
由して比較器702に入る。好ましくは、一方のオペラ
ンドは、2つの独立してアドレス可能なワーキングスト
ア区画の一方から供給され、他方のオペランドは他方の
区画から供給される。この構成は、両方のオペランドに
同時にアクセスできるようにすることで、ソート動作を
より加速する。
は、図9を参照することにより、より理解される。ソー
トおよびマージ動作は、ワーキングストア312からの
2つの4倍長ワード(16バイト)のオペランドを読み
出しサイクル毎に比較する比較器702(キー比較器)
を用いて行われる。2つのオペランドの各々は、2つの
ワーキングストアバス316、318のうちの1つを経
由して比較器702に入る。好ましくは、一方のオペラ
ンドは、2つの独立してアドレス可能なワーキングスト
ア区画の一方から供給され、他方のオペランドは他方の
区画から供給される。この構成は、両方のオペランドに
同時にアクセスできるようにすることで、ソート動作を
より加速する。
【0112】キー比較器702は、「等しい」、「より
小さい」、又は「より大きい」状態として比較の結果を
識別する2ビットの結果を生成する。この2ビットの結
果は、コントロールおよびシーケンスロジック704に
送られる。この動作は、後述される。
小さい」、又は「より大きい」状態として比較の結果を
識別する2ビットの結果を生成する。この2ビットの結
果は、コントロールおよびシーケンスロジック704に
送られる。この動作は、後述される。
【0113】比較される2つのオペランドのためのワー
キングストアアドレスは、それぞれ、ベースAレジスタ
706およびベースBレジスタ708に保持される。2
つのオペランドのアドレスA、Bは、2つの独立してア
ドレス可能なメモリアレイ(ポインタアレイ)712、
714を含む内部メモリ710から得られる。ポインタ
アレイ712、714には、データバス716を経由し
て、オペライドのワーキングストアアドレスがロードさ
れる。ポインタアレイ712、714は、第1アドレス
バス718および第2アドレスバス720を経由して、
コントロールおよびシーケンスロジック704から与え
られるアドレスによって、それぞれ、独立してアドレス
可能とされる。ワーキングストアアドレスは、エキスト
ラクタ/メモリインターフェイスユニット308(図
3)のエキストラクタ部分から得られる。
キングストアアドレスは、それぞれ、ベースAレジスタ
706およびベースBレジスタ708に保持される。2
つのオペランドのアドレスA、Bは、2つの独立してア
ドレス可能なメモリアレイ(ポインタアレイ)712、
714を含む内部メモリ710から得られる。ポインタ
アレイ712、714には、データバス716を経由し
て、オペライドのワーキングストアアドレスがロードさ
れる。ポインタアレイ712、714は、第1アドレス
バス718および第2アドレスバス720を経由して、
コントロールおよびシーケンスロジック704から与え
られるアドレスによって、それぞれ、独立してアドレス
可能とされる。ワーキングストアアドレスは、エキスト
ラクタ/メモリインターフェイスユニット308(図
3)のエキストラクタ部分から得られる。
【0114】オペランドのフェッチをより効率的にする
ために、次のキーアドレスがベースキーアドレスと同じ
読み出しサイクルでポインタアレイ712、714から
読み出される。次キーアドレスは、現(ベース)キーア
ドレスと共にベースAレジスタ706およびベースBレ
ジスタ708に記憶される。複数4倍長ワードのキーの
比較を可能にするために、ベースAアドレスがAアドレ
スカウンタ719にロードされ、ベースBアドレスがB
アドレスカウンタ721にロードされる。AおよびBア
ドレスカウンタ719、721は、キーを4倍長ワード
単位でアドレスするために、コントロールロジック70
4により、一度に4倍長ワードアドレス分インクリメン
トさせることができる。そのため、複数4倍長ワードの
キーは、4倍長ワードずつ比較器702により比較され
る。図9の実施例では、AおよびBアドレスは、それぞ
れ、AおよびBアドレスカウンタ719、721の出力
を経由して、ワーキングストア312に与えられる。複
数4倍長ワードのキーが使用されない場合は、ベースA
およびベースBレジスタは、ワーキングストアを直接ア
ドレスするのに使うことができる。
ために、次のキーアドレスがベースキーアドレスと同じ
読み出しサイクルでポインタアレイ712、714から
読み出される。次キーアドレスは、現(ベース)キーア
ドレスと共にベースAレジスタ706およびベースBレ
ジスタ708に記憶される。複数4倍長ワードのキーの
比較を可能にするために、ベースAアドレスがAアドレ
スカウンタ719にロードされ、ベースBアドレスがB
アドレスカウンタ721にロードされる。AおよびBア
ドレスカウンタ719、721は、キーを4倍長ワード
単位でアドレスするために、コントロールロジック70
4により、一度に4倍長ワードアドレス分インクリメン
トさせることができる。そのため、複数4倍長ワードの
キーは、4倍長ワードずつ比較器702により比較され
る。図9の実施例では、AおよびBアドレスは、それぞ
れ、AおよびBアドレスカウンタ719、721の出力
を経由して、ワーキングストア312に与えられる。複
数4倍長ワードのキーが使用されない場合は、ベースA
およびベースBレジスタは、ワーキングストアを直接ア
ドレスするのに使うことができる。
【0115】関連データのアドレスを追跡するため、ソ
ート/マージユニットは、多数のポインタを使う。ソー
ト動作の各パスの間、ポインタアレイの1つがソース
(読み出し)アレイとして割当られ、他方が宛先(書き
込み)アレイとして割当られる。iカウンタ722およ
びjカウンタ724によりそれぞれ生成されたiおよび
jポインタは、ソースアレイのためのアドレシングを行
う。kカウンタ726により生成されたkポインタは、
宛先アレイのためのアドレシングを行う。mカウンタ7
27は、トーナメントツリーマージソート(詳細は後に
説明する)のためのベースノードアドレスを追跡するの
に用いられる。i、j、kおよびmカウンタ722〜7
27には、コントロールおよびシーケンスロジック70
4を経由して、コントロールプロセッサ310(図3)
により初期値がロードされる。各カウンタは、コントロ
ールおよびシーケンスロジック704により、インクリ
メントされることができる。
ート/マージユニットは、多数のポインタを使う。ソー
ト動作の各パスの間、ポインタアレイの1つがソース
(読み出し)アレイとして割当られ、他方が宛先(書き
込み)アレイとして割当られる。iカウンタ722およ
びjカウンタ724によりそれぞれ生成されたiおよび
jポインタは、ソースアレイのためのアドレシングを行
う。kカウンタ726により生成されたkポインタは、
宛先アレイのためのアドレシングを行う。mカウンタ7
27は、トーナメントツリーマージソート(詳細は後に
説明する)のためのベースノードアドレスを追跡するの
に用いられる。i、j、kおよびmカウンタ722〜7
27には、コントロールおよびシーケンスロジック70
4を経由して、コントロールプロセッサ310(図3)
により初期値がロードされる。各カウンタは、コントロ
ールおよびシーケンスロジック704により、インクリ
メントされることができる。
【0116】ソート/マージユニットは、キーをリスト
のグループとして処理し、一度に2つのリストに対して
2分マージ/ソートを行う。qカウンタ728およびr
カウンタ730によりそれぞれ生成されたqおよびrポ
インタは、この2つのリストのそれぞれでの要素の残り
の数を追跡する。qおよびrカウンタ728、730に
は、コントロールおよびシーケンスロジック704によ
り、初期値がロードされ、そして、コントロールおよび
シーケンスロジックにより、デクリメントさせることが
できる。第1および第2の比較器(q/0およびr/0
比較器)732、734がqおよびrカウンタの出力を
それぞれ受け取るために接続される。比較器732、7
34は、qおよびrカウンタがいつゼロまでデクリメン
トされたかを検出する。比較器732、734のそれぞ
れは、「等しい」或いは「等しくない」の状態としての
比較の結果を識別する1ビットの2値出力を生成するタ
イプのものである。比較結果は、コントロールおよびシ
ーケンスロジック704に送られる。
のグループとして処理し、一度に2つのリストに対して
2分マージ/ソートを行う。qカウンタ728およびr
カウンタ730によりそれぞれ生成されたqおよびrポ
インタは、この2つのリストのそれぞれでの要素の残り
の数を追跡する。qおよびrカウンタ728、730に
は、コントロールおよびシーケンスロジック704によ
り、初期値がロードされ、そして、コントロールおよび
シーケンスロジックにより、デクリメントさせることが
できる。第1および第2の比較器(q/0およびr/0
比較器)732、734がqおよびrカウンタの出力を
それぞれ受け取るために接続される。比較器732、7
34は、qおよびrカウンタがいつゼロまでデクリメン
トされたかを検出する。比較器732、734のそれぞ
れは、「等しい」或いは「等しくない」の状態としての
比較の結果を識別する1ビットの2値出力を生成するタ
イプのものである。比較結果は、コントロールおよびシ
ーケンスロジック704に送られる。
【0117】マージされる2つのリストの初期長さpが
コントロールバス320を介してコントロールプロセッ
サ310により与えられ、そして、pレジスタ736に
保持される。ソートされるキーの初期数nもまた、コン
トロールプロセッサ310により与えられ、nレジスタ
738に保持される。第3の比較器(j/n比較器)7
40は、jポインタ(jカウンタ724からの)の値と
nの値(nレジスタ738からの)とを比較し、そし
て、j>nの時にコントロールおよびシーケンスロジッ
ク704に情報を与える。同じように、第4の比較器
(k/n比較器)742は、kポインタ(kカウンタ7
26からの)値とnの値(nレジスタ738からの)と
を比較し、そして、k>nの時にコントロールおよびシ
ーケンスロジックに情報を与える。第3および第4の比
較器740、742は、「等しい」、「より大きい」、
或いは「より小さい」という比較結果を2ビットで出力
して知らせるタイプのものである。第5の比較器743
は、pレジスタ736中の値とnレジスタ738中の値
とを比較し、p>=nかどうかを識別する1ビットの結
果を生成する。
コントロールバス320を介してコントロールプロセッ
サ310により与えられ、そして、pレジスタ736に
保持される。ソートされるキーの初期数nもまた、コン
トロールプロセッサ310により与えられ、nレジスタ
738に保持される。第3の比較器(j/n比較器)7
40は、jポインタ(jカウンタ724からの)の値と
nの値(nレジスタ738からの)とを比較し、そし
て、j>nの時にコントロールおよびシーケンスロジッ
ク704に情報を与える。同じように、第4の比較器
(k/n比較器)742は、kポインタ(kカウンタ7
26からの)値とnの値(nレジスタ738からの)と
を比較し、そして、k>nの時にコントロールおよびシ
ーケンスロジックに情報を与える。第3および第4の比
較器740、742は、「等しい」、「より大きい」、
或いは「より小さい」という比較結果を2ビットで出力
して知らせるタイプのものである。第5の比較器743
は、pレジスタ736中の値とnレジスタ738中の値
とを比較し、p>=nかどうかを識別する1ビットの結
果を生成する。
【0118】コントロールおよびシーケンスロジック7
04は、ソート/マージユニット302中の全ての加算
器、比較器、およびポインタアレイを順序づける。コン
トロールアルゴリズム(以下に詳述する)は、実行され
る各動作に関して似ているが、異なるシーケンスが要求
される。エレメントの全てを調整することは、コントロ
ールおよびシーケンスロジック704の機能である。
04は、ソート/マージユニット302中の全ての加算
器、比較器、およびポインタアレイを順序づける。コン
トロールアルゴリズム(以下に詳述する)は、実行され
る各動作に関して似ているが、異なるシーケンスが要求
される。エレメントの全てを調整することは、コントロ
ールおよびシーケンスロジック704の機能である。
【0119】コントロールおよびシーケンスロジック7
04は、好ましくは、ソート/マージユニットアルゴリ
ズム(以下に述べる)を履行するためにデザインされた
プログラマブルロジックアレイとして実現される。代わ
りとしては、コントロールおよびシーケンスロジック7
04は、上述したハードェアを用いたソート/マージユ
ニットアルゴリズムをマイクロコードプログラムの制御
の下に行う通常のマイクロプロセッサとして実現でき
る。
04は、好ましくは、ソート/マージユニットアルゴリ
ズム(以下に述べる)を履行するためにデザインされた
プログラマブルロジックアレイとして実現される。代わ
りとしては、コントロールおよびシーケンスロジック7
04は、上述したハードェアを用いたソート/マージユ
ニットアルゴリズムをマイクロコードプログラムの制御
の下に行う通常のマイクロプロセッサとして実現でき
る。
【0120】コントロールおよびシーケンスロジック7
04の動作とソート/マージユニットの動作の概要は、
実例により、より理解される。図10は、8つのキー
(E,H,D,C,A,F,B,G)の昇順ブロックソ
ート(2分マージ/ソート)の例を示している。
04の動作とソート/マージユニットの動作の概要は、
実例により、より理解される。図10は、8つのキー
(E,H,D,C,A,F,B,G)の昇順ブロックソ
ート(2分マージ/ソート)の例を示している。
【0121】ブロックソートの最初のパスの間、キーは
それぞれが1つのキーの長さを持つ8つのリスト802
〜816として処理され、比較は各キーのペア(E,H
D,C A,F B,G)毎に行われる。比較の結果
として、8つのオリジナルキーが2つのキーをそれぞれ
含む4つの新たなリスト818〜824中に置かれる。
4つのリストの各々は、比較の「勝者」が「敗者」の前
に位置するようになっている。図10の例では、E,H
C,D A,F B,Gとなる。
それぞれが1つのキーの長さを持つ8つのリスト802
〜816として処理され、比較は各キーのペア(E,H
D,C A,F B,G)毎に行われる。比較の結果
として、8つのオリジナルキーが2つのキーをそれぞれ
含む4つの新たなリスト818〜824中に置かれる。
4つのリストの各々は、比較の「勝者」が「敗者」の前
に位置するようになっている。図10の例では、E,H
C,D A,F B,Gとなる。
【0122】2分マージ/ソートの第1のパスが完了し
た後、第2のパスが行われる。第2のパスの間、それぞ
れ2つのキーを含む4つのリスト818〜824が比較
される。つまり、リストE,HがリストC,Dと比較さ
れ、リストA,FがリストB,Gと比較される。それぞ
れの「勝者」が決定されると、それは新たなマージされ
るリストに書き込まれる。比較の第2のパスの結果とし
て、キーは各4つのキー、すなわち、C,D,E,Hお
よびA,B,F,Gの2つのリスト826、828に再
配列される。
た後、第2のパスが行われる。第2のパスの間、それぞ
れ2つのキーを含む4つのリスト818〜824が比較
される。つまり、リストE,HがリストC,Dと比較さ
れ、リストA,FがリストB,Gと比較される。それぞ
れの「勝者」が決定されると、それは新たなマージされ
るリストに書き込まれる。比較の第2のパスの結果とし
て、キーは各4つのキー、すなわち、C,D,E,Hお
よびA,B,F,Gの2つのリスト826、828に再
配列される。
【0123】第2のパスが完了した後、第3のマージ/
ソートパスが2つのリスト826、828上で行われ
る。2つのリストで比較が行われる(すなわち、CがA
と比較され、そして、Aが「勝者」となり、それから、
CがBと比較され、Bが「勝者」となる等)。各勝者が
決定されたら、それは最終リスト830に書き込まれ
る。最終リスト830は、昇順で、すなわち、A,B,
C,D,E,F,G,Hの順で、8つのキーの長さを持
つ単一リストである。2分マージ/ソートを完了するの
に必要とされるパスの数は、ソートされるキーの数のL
OG2 に等しい(少数は切り上げ)。
ソートパスが2つのリスト826、828上で行われ
る。2つのリストで比較が行われる(すなわち、CがA
と比較され、そして、Aが「勝者」となり、それから、
CがBと比較され、Bが「勝者」となる等)。各勝者が
決定されたら、それは最終リスト830に書き込まれ
る。最終リスト830は、昇順で、すなわち、A,B,
C,D,E,F,G,Hの順で、8つのキーの長さを持
つ単一リストである。2分マージ/ソートを完了するの
に必要とされるパスの数は、ソートされるキーの数のL
OG2 に等しい(少数は切り上げ)。
【0124】上述の昇順ソート動作を行うために、ソー
ト/マージユニットは、このデータベースエンジンの他
の機能エレメントと協力して動作する。最初に、コント
ロールプロセッサ310(図3)は、ポインタアレイの
1つ(例えば図9の712)をソース(読み出し)アレ
イとして指定する。他のアレイ(例えば図9の714)
は、最初に宛先(書き込み)アレイとして指定される。
ワーキングストア312および読み出しアレイには、そ
れぞれ、入力されたキーの数(n)およびこれらの対応
するワーキングストアアドレスがロードされる。ソート
キーは、エキストラクタ/メモリインターフェイスユニ
ット308により、ワーキングストア312に供給され
る(図3)。エキストラクタ/メモリインターフェイス
ユニット308は、ページ記憶装置412(図4)から
レコードを読み出し、キーを抽出し、そして、それをワ
ーキングストアバス316、318を経由して、ワーキ
ングストア312に書き込む。
ト/マージユニットは、このデータベースエンジンの他
の機能エレメントと協力して動作する。最初に、コント
ロールプロセッサ310(図3)は、ポインタアレイの
1つ(例えば図9の712)をソース(読み出し)アレ
イとして指定する。他のアレイ(例えば図9の714)
は、最初に宛先(書き込み)アレイとして指定される。
ワーキングストア312および読み出しアレイには、そ
れぞれ、入力されたキーの数(n)およびこれらの対応
するワーキングストアアドレスがロードされる。ソート
キーは、エキストラクタ/メモリインターフェイスユニ
ット308により、ワーキングストア312に供給され
る(図3)。エキストラクタ/メモリインターフェイス
ユニット308は、ページ記憶装置412(図4)から
レコードを読み出し、キーを抽出し、そして、それをワ
ーキングストアバス316、318を経由して、ワーキ
ングストア312に書き込む。
【0125】図10の昇順ソートの例のためのワーキン
グストア312の初期状態は、図11で説明される。A
〜Hの各キーは、キーのソースになっているデータベー
スレコードを識別するレコード識別番号(RID)と共
に記憶される。キーがワーキングストア312に書き込
まれると、対応するワーキングストアアドレスが指定さ
れた読み出しアレイに書き込まれる。図11では、第1
のポインタアレイ712が、最初にブロックソートの第
1のパスのための読み出しアレイとして指定される。参
照符号712(1)は、第1のパスのために初期化され
る状態にある第1のポインタアレイ712を示す。
グストア312の初期状態は、図11で説明される。A
〜Hの各キーは、キーのソースになっているデータベー
スレコードを識別するレコード識別番号(RID)と共
に記憶される。キーがワーキングストア312に書き込
まれると、対応するワーキングストアアドレスが指定さ
れた読み出しアレイに書き込まれる。図11では、第1
のポインタアレイ712が、最初にブロックソートの第
1のパスのための読み出しアレイとして指定される。参
照符号712(1)は、第1のパスのために初期化され
る状態にある第1のポインタアレイ712を示す。
【0126】ワーキングストア312およびソースポイ
ンタアレイが初期化された時、コントロールプロセッサ
310は、コントロールバス320を経由して、ソート
/マージユニット302に、昇順ソート開始(SAS)
コマンドを送る。SASコマンドに呼応して、コントロ
ールおよびシーケンスロジック704は、図12および
図13で説明されているアルゴリズムを実行する。図1
2および図13で使われているWS(A)およびWS
(B)は、それぞれ、ワーキングストア312中のアド
レスAおよびBに記憶されるキーを示す。同じように、
READ(i)およびREAD(j)は、それぞれ、指
定された読み出しポインタアレイのアドレスiおよびj
に記憶されたワーキングストアアドレスを示す。WRI
TE(k)は、指定された書き込みアレイのアドレスk
を示す。
ンタアレイが初期化された時、コントロールプロセッサ
310は、コントロールバス320を経由して、ソート
/マージユニット302に、昇順ソート開始(SAS)
コマンドを送る。SASコマンドに呼応して、コントロ
ールおよびシーケンスロジック704は、図12および
図13で説明されているアルゴリズムを実行する。図1
2および図13で使われているWS(A)およびWS
(B)は、それぞれ、ワーキングストア312中のアド
レスAおよびBに記憶されるキーを示す。同じように、
READ(i)およびREAD(j)は、それぞれ、指
定された読み出しポインタアレイのアドレスiおよびj
に記憶されたワーキングストアアドレスを示す。WRI
TE(k)は、指定された書き込みアレイのアドレスk
を示す。
【0127】図12および図13のアルゴリズムは、図
11の昇順ソート例および図9のソート/マージユニッ
トを参照して説明される。ステップ1002では、ポイ
ンタが以下のようにセットされる。pレジスタ736が
1の初期リスト長にセットされる。iカウンタ722は
1にセットされ、その結果第1番目のリストの第1番目
のキーEのワーキングストアアドレス00を指す。jカ
ウンタ724は2(すなわちp+1)にセットされ、そ
の結果第2番目のリストの第1番目のキーHのワーキン
グストアアドレス08を指す。qおよびrカウンタ72
8、730は、初期リスト長(すなわち1)にセットさ
れる。そして、kカウンタ726は、書き込みアレイ
(最初は714(1))の第1番目のアドレスを指すよ
うに、セットされる。これが完了すると、ベースAレジ
スタ706には、READ(1)(それは00)がロー
ドされ、そして、ベースBレジスタ708は、READ
(2)(それは08)にセットされる。
11の昇順ソート例および図9のソート/マージユニッ
トを参照して説明される。ステップ1002では、ポイ
ンタが以下のようにセットされる。pレジスタ736が
1の初期リスト長にセットされる。iカウンタ722は
1にセットされ、その結果第1番目のリストの第1番目
のキーEのワーキングストアアドレス00を指す。jカ
ウンタ724は2(すなわちp+1)にセットされ、そ
の結果第2番目のリストの第1番目のキーHのワーキン
グストアアドレス08を指す。qおよびrカウンタ72
8、730は、初期リスト長(すなわち1)にセットさ
れる。そして、kカウンタ726は、書き込みアレイ
(最初は714(1))の第1番目のアドレスを指すよ
うに、セットされる。これが完了すると、ベースAレジ
スタ706には、READ(1)(それは00)がロー
ドされ、そして、ベースBレジスタ708は、READ
(2)(それは08)にセットされる。
【0128】ステップ1004で、Eキー(WS(0
0))がキー比較器702でHキー(WS(08))と
比較される。キー比較器702は、コントロールおよび
シーケンスロジック704に、EはHより小さいことを
合図する。「より小さい」信号に応答して、コントロー
ルおよびシーケンスロジック704は、ステップ100
6の動作を行う。特に、キーEのアドレス(00)が宛
先書き込みアレイ714(1)のアドレス1(kカウン
タ726により特定される)に書き込まれる。iカウン
タ722が2にインクリメントされ、kカウンタ726
が2にインクリメントされ、qカウンタ728が0にデ
クリメントされ、そして、ベースAレジスタ706がR
EAD(2)(08)にセットされる。ステップ100
8がそれから行われる。
0))がキー比較器702でHキー(WS(08))と
比較される。キー比較器702は、コントロールおよび
シーケンスロジック704に、EはHより小さいことを
合図する。「より小さい」信号に応答して、コントロー
ルおよびシーケンスロジック704は、ステップ100
6の動作を行う。特に、キーEのアドレス(00)が宛
先書き込みアレイ714(1)のアドレス1(kカウン
タ726により特定される)に書き込まれる。iカウン
タ722が2にインクリメントされ、kカウンタ726
が2にインクリメントされ、qカウンタ728が0にデ
クリメントされ、そして、ベースAレジスタ706がR
EAD(2)(08)にセットされる。ステップ100
8がそれから行われる。
【0129】ステップ1008で、k/n比較器742
は、kカウンタ726からの書き込みポインタkと、ソ
ートされるキーの数の総計n(nレジスタ738にあ
る)とを比較する。この場合には、書き込みポインタk
が2に等しく、そして、ソートされるキーの数の総計n
が8に等しいので、k/n比較器は、「以下」条件をコ
ントロールおよびシーケンスロジック704に知らせ
る。この条件に応答して、コントロールおよびシーケン
スロジック704は、ステップ1010を実行する。
は、kカウンタ726からの書き込みポインタkと、ソ
ートされるキーの数の総計n(nレジスタ738にあ
る)とを比較する。この場合には、書き込みポインタk
が2に等しく、そして、ソートされるキーの数の総計n
が8に等しいので、k/n比較器は、「以下」条件をコ
ントロールおよびシーケンスロジック704に知らせ
る。この条件に応答して、コントロールおよびシーケン
スロジック704は、ステップ1010を実行する。
【0130】ステップ1010で、コントロールおよび
シーケンスロジック704は、第1番目のリスト中に残
りの要素があるかどうかを判断するために、q/0 比較
器の出力を使う。元のリスト長さpは1であり、そし
て、第1のリストからの1つの要素(すなわち、キー
E)は、既に、比較されているので、第1のリスト中の
残りの要素はゼロである。q/0 比較器732からの
「等しい」条件に応答して、コントロールおよびシーケ
ンスロジック704は、ステップ1012を実行する。
シーケンスロジック704は、第1番目のリスト中に残
りの要素があるかどうかを判断するために、q/0 比較
器の出力を使う。元のリスト長さpは1であり、そし
て、第1のリストからの1つの要素(すなわち、キー
E)は、既に、比較されているので、第1のリスト中の
残りの要素はゼロである。q/0 比較器732からの
「等しい」条件に応答して、コントロールおよびシーケ
ンスロジック704は、ステップ1012を実行する。
【0131】ステップ1012で、コントロールおよび
シーケンスロジック704は、第2番目のリストの残余
カウントは0に等しい(r=0)かどうか、又は、第2
番目のリストポインタ(jカウンタ724により決定さ
れる)はソートされるキーの総数より大きい値にセット
されているかどうかを判断するために、j/n比較器7
40およびr/0比較器734の出力を読み出す。第2
番目のリストは、まだ、Hキーを含んでいるので、rカ
ウンタ730の値は1に等しく、そして、r/0 比較器
734は、rが0に等しくないことを、コントロールお
よびシーケンスロジック704に示す。同じように、第
2番目のリストポインタは、まだ、2にセットされてい
るので(ワーキングストアアドレス08を指してい
る)、リスト長nは8に等しく、j/n比較器740は
「以下」条件を示す。j<=n条件およびr≠0条件
(j>n又はr=0が存在しない)の双方が存在するの
に応答して、コントロールおよびシーケンスロジック7
04は、ステップ1014を実行する。
シーケンスロジック704は、第2番目のリストの残余
カウントは0に等しい(r=0)かどうか、又は、第2
番目のリストポインタ(jカウンタ724により決定さ
れる)はソートされるキーの総数より大きい値にセット
されているかどうかを判断するために、j/n比較器7
40およびr/0比較器734の出力を読み出す。第2
番目のリストは、まだ、Hキーを含んでいるので、rカ
ウンタ730の値は1に等しく、そして、r/0 比較器
734は、rが0に等しくないことを、コントロールお
よびシーケンスロジック704に示す。同じように、第
2番目のリストポインタは、まだ、2にセットされてい
るので(ワーキングストアアドレス08を指してい
る)、リスト長nは8に等しく、j/n比較器740は
「以下」条件を示す。j<=n条件およびr≠0条件
(j>n又はr=0が存在しない)の双方が存在するの
に応答して、コントロールおよびシーケンスロジック7
04は、ステップ1014を実行する。
【0132】ステップ1014で、Hキーのワーキング
ストアアドレスB=08がkカウンタ726により指定
されるkポインタアドレスを用いて宛先書き込みアレイ
に書き込まれる。これが成し遂げられたら、jカウンタ
724が3にインクリメントされる。rカウンタ730
が0にデクリメントされ、kカウンタ726(書き込み
アレイアドレス)が3にインクリメントされる。そし
て、第2番目のリスト中のキーのためのワーキングスト
アアドレスB=10が読み出しポインタアレイのREA
D(2)から読み出される。コントロールおよびシーケ
ンスロジック704は、それから、ステップ1016を
実行する。
ストアアドレスB=08がkカウンタ726により指定
されるkポインタアドレスを用いて宛先書き込みアレイ
に書き込まれる。これが成し遂げられたら、jカウンタ
724が3にインクリメントされる。rカウンタ730
が0にデクリメントされ、kカウンタ726(書き込み
アレイアドレス)が3にインクリメントされる。そし
て、第2番目のリスト中のキーのためのワーキングスト
アアドレスB=10が読み出しポインタアレイのREA
D(2)から読み出される。コントロールおよびシーケ
ンスロジック704は、それから、ステップ1016を
実行する。
【0133】ステップ1016で、コントロールおよび
シーケンスロジック704は、書き込みアレイアドレス
がソートされるキーの数を越えたかどうかを判断するた
めに、k/n比較器742の出力を使う。ソートされる
キーの数nは8であり、そして、書き込みアレイアドレ
スが3なので、k/n比較器742は、「以下」条件を
示唆する。この条件に応答して、コントロールおよびシ
ーケンスロジック704は、再びステップ1012を実
行する。
シーケンスロジック704は、書き込みアレイアドレス
がソートされるキーの数を越えたかどうかを判断するた
めに、k/n比較器742の出力を使う。ソートされる
キーの数nは8であり、そして、書き込みアレイアドレ
スが3なので、k/n比較器742は、「以下」条件を
示唆する。この条件に応答して、コントロールおよびシ
ーケンスロジック704は、再びステップ1012を実
行する。
【0134】前と同様に、コントロールおよびシーケン
スロジック704は、それぞれ、第2番目のリストの残
余キーカウントが0に等しいかどうか(r=0)、又は
第2番目のリストポインタ(jカウンタ724により決
定される)がソートされるキーの総数より大きい値にセ
ットされているかどうかを判断するために、j/n比較
器740およびr/0比較器734の出力を読み出す。
第2番目のリストからのHキーは、今、書き込みアレイ
に読み出されているので、rカウンタの値は0に等し
く、そして、r/0比較器734は、rが0に等しいこ
とをコントロールおよびシーケンスロジック704に示
す。r=0の条件があることに応答して、コントロール
およびシーケンスロジック704は、ステップ1018
を実行する。
スロジック704は、それぞれ、第2番目のリストの残
余キーカウントが0に等しいかどうか(r=0)、又は
第2番目のリストポインタ(jカウンタ724により決
定される)がソートされるキーの総数より大きい値にセ
ットされているかどうかを判断するために、j/n比較
器740およびr/0比較器734の出力を読み出す。
第2番目のリストからのHキーは、今、書き込みアレイ
に読み出されているので、rカウンタの値は0に等し
く、そして、r/0比較器734は、rが0に等しいこ
とをコントロールおよびシーケンスロジック704に示
す。r=0の条件があることに応答して、コントロール
およびシーケンスロジック704は、ステップ1018
を実行する。
【0135】ステップ1018で、コントロールおよび
シーケンスロジック704は、次の2つのリストのマー
ジ/ソートのために、ポインタをセットアップする。こ
の例では、最初の2つのリストはEおよびHキーを含ん
でいた。従って、次の2つのリストはDおよびCキーを
含んでいる。次の2つのリストの処理のための準備で、
iカウンタ722は、現在の値とリスト長さとを加算し
たもの(i=i+p)で再初期化される。従って、iポ
インタは3に等しくなり、読み出しアレイ712(1)
中のワーキングストアアドレス10を指す。同様に、j
カウンタ724は、(j+p)の値に再初期化される。
従って、jカウンタ724は4に等しくなり、指定され
たアレイ712(1)中のワーキングストアアドレス1
8を指す。qおよびrカウンタ728、730は、両方
とも、1のリスト長に初期化される。更に、ベースAレ
ジスタ706には、Dキーのアドレス10(READ
(3))がロードされ、一方、ベースBレジスタ708
には、Cキーのアドレス18(READ(4))がロー
ドされる。コントロールおよびシーケンスロジック70
4は、それから、ステップ1020を実行する。
シーケンスロジック704は、次の2つのリストのマー
ジ/ソートのために、ポインタをセットアップする。こ
の例では、最初の2つのリストはEおよびHキーを含ん
でいた。従って、次の2つのリストはDおよびCキーを
含んでいる。次の2つのリストの処理のための準備で、
iカウンタ722は、現在の値とリスト長さとを加算し
たもの(i=i+p)で再初期化される。従って、iポ
インタは3に等しくなり、読み出しアレイ712(1)
中のワーキングストアアドレス10を指す。同様に、j
カウンタ724は、(j+p)の値に再初期化される。
従って、jカウンタ724は4に等しくなり、指定され
たアレイ712(1)中のワーキングストアアドレス1
8を指す。qおよびrカウンタ728、730は、両方
とも、1のリスト長に初期化される。更に、ベースAレ
ジスタ706には、Dキーのアドレス10(READ
(3))がロードされ、一方、ベースBレジスタ708
には、Cキーのアドレス18(READ(4))がロー
ドされる。コントロールおよびシーケンスロジック70
4は、それから、ステップ1020を実行する。
【0136】ステップ1020で、コントロールおよび
シーケンスロジック704は、jリストが空かどうかを
判断するために、j/n比較器740の出力を読み出
す。ソートされるキーの総数は8に等しく、そして、j
ポインタは4に等しいので、j/n比較器740は、
「以下」結果を生成する。この結果に応答して、コント
ロールおよびシーケンスロジック704は、新たなリス
トのために、再びステップ1004を実行する。
シーケンスロジック704は、jリストが空かどうかを
判断するために、j/n比較器740の出力を読み出
す。ソートされるキーの総数は8に等しく、そして、j
ポインタは4に等しいので、j/n比較器740は、
「以下」結果を生成する。この結果に応答して、コント
ロールおよびシーケンスロジック704は、新たなリス
トのために、再びステップ1004を実行する。
【0137】ステップ1004の2回目の繰り返しで
は、Dキー(WS(10))は、キー比較器702で、
Cキー(WS(18))と比較される。キー比較器70
2は、コントロールおよびシーケンスロジック704
に、DがCより大きいことを合図する。「より大きい」
という信号に応答して、コントロールおよびシーケンス
ロジック704は、ステップ1022の動作を行う。
は、Dキー(WS(10))は、キー比較器702で、
Cキー(WS(18))と比較される。キー比較器70
2は、コントロールおよびシーケンスロジック704
に、DがCより大きいことを合図する。「より大きい」
という信号に応答して、コントロールおよびシーケンス
ロジック704は、ステップ1022の動作を行う。
【0138】ステップ1022から1032は、ステッ
プ1006から1016と同じようなやり方で実行され
ることが理解されよう。実際のカウンタの操作および比
較器の利用は、図12および図13から明白になろう。
例えば、ステップ1022で、Cキーが宛先書き込みア
レイ714のアドレス3(kカウンタ726により指定
される)に書き込まれる。jカウンタは、それから、5
にインクリメントされ、kカウンタ726は4にインク
リメントされ、rカウンタ730は0にデクリメントさ
れ、そして、ベースBレジスタ708は、ワーキングス
トアアドレス20を含むREAD(5)にセットされ
る。後に、1030の実行の結果として、Dキーが書き
込みポインタアレイ514(1)のアドレス4に書き込
まれる。
プ1006から1016と同じようなやり方で実行され
ることが理解されよう。実際のカウンタの操作および比
較器の利用は、図12および図13から明白になろう。
例えば、ステップ1022で、Cキーが宛先書き込みア
レイ714のアドレス3(kカウンタ726により指定
される)に書き込まれる。jカウンタは、それから、5
にインクリメントされ、kカウンタ726は4にインク
リメントされ、rカウンタ730は0にデクリメントさ
れ、そして、ベースBレジスタ708は、ワーキングス
トアアドレス20を含むREAD(5)にセットされ
る。後に、1030の実行の結果として、Dキーが書き
込みポインタアレイ514(1)のアドレス4に書き込
まれる。
【0139】ステップ1004から1030は、全ての
4対のリストE,H D,C A,F B,Gがマージ
され、そして、第1番目のパスにおける書き込みポイン
タアレイ714(1)に示されるようになるまで、反復
的に繰り返される。
4対のリストE,H D,C A,F B,Gがマージ
され、そして、第1番目のパスにおける書き込みポイン
タアレイ714(1)に示されるようになるまで、反復
的に繰り返される。
【0140】第1番目のパスの完了は、最後の2つのキ
ーのマージの結果がWS(A)<=WS(B)の経路を
取るか、又はWS(A)>WS(B)の経路を取るかに
応じて、ステップ1016又は1032で判断される。
最後の2つのキーB,Gの比較結果はWS(A)<=W
S(B)の経路を取るので、第1番目のパスの最後は、
ステップ1016で検出される。
ーのマージの結果がWS(A)<=WS(B)の経路を
取るか、又はWS(A)>WS(B)の経路を取るかに
応じて、ステップ1016又は1032で判断される。
最後の2つのキーB,Gの比較結果はWS(A)<=W
S(B)の経路を取るので、第1番目のパスの最後は、
ステップ1016で検出される。
【0141】最後の要素に対してステップ1014が実
行されると、kカウンタ726は9にセットされる。k
=9であり、そして、要素の数がn=8であるので、k
/n比較器742は、kがnより大きいことを示す。こ
れに応答して、コントロールおよびシーケンスロジック
は、ステップ1034を実行する。
行されると、kカウンタ726は9にセットされる。k
=9であり、そして、要素の数がn=8であるので、k
/n比較器742は、kがnより大きいことを示す。こ
れに応答して、コントロールおよびシーケンスロジック
は、ステップ1034を実行する。
【0142】ステップ1034で、2分マージの第2番
目のパスのために、カウンタおよびレジスタが再初期化
される。図11から分かるように、第1のポインタアレ
イ712(2)がマージアドレスを供給し、第2のポイ
ンタアレイ714(1)がワーキングストアアドレスを
供給するように、読み出しおよび書き込みアレイがスワ
ップされる。
目のパスのために、カウンタおよびレジスタが再初期化
される。図11から分かるように、第1のポインタアレ
イ712(2)がマージアドレスを供給し、第2のポイ
ンタアレイ714(1)がワーキングストアアドレスを
供給するように、読み出しおよび書き込みアレイがスワ
ップされる。
【0143】読み出しおよび書き込みポインタアレイの
スワッピングに加えて、カウンタおよびレジスタが以下
のように初期化される。リスト長pは、各2つのキーの
4つのリストが形成されるように(例えば、EH,C
D,AF,BG)、2倍にされる。j、q、およびrカ
ウンタは、j=3、q=2、およびr=2となるよう
に、更新されたリスト長を基に再初期化され、そして、
第1のリストポインタ(iカウンタ)が1にリセットさ
れる。最終的には、ベースBレジスタに第2番目のリス
ト中の最初のキーCのワーキングストアアドレス18が
ロードされ、ベースAレジスタ706には第1番目のリ
スト中の最初のキーEのワーキングストアアドレス(0
0)がロードされる。それから、ステップ1036が実
行される。
スワッピングに加えて、カウンタおよびレジスタが以下
のように初期化される。リスト長pは、各2つのキーの
4つのリストが形成されるように(例えば、EH,C
D,AF,BG)、2倍にされる。j、q、およびrカ
ウンタは、j=3、q=2、およびr=2となるよう
に、更新されたリスト長を基に再初期化され、そして、
第1のリストポインタ(iカウンタ)が1にリセットさ
れる。最終的には、ベースBレジスタに第2番目のリス
ト中の最初のキーCのワーキングストアアドレス18が
ロードされ、ベースAレジスタ706には第1番目のリ
スト中の最初のキーEのワーキングストアアドレス(0
0)がロードされる。それから、ステップ1036が実
行される。
【0144】ステップ1036は、ソートが完了したか
どうかを判断するために実行される。コントロールおよ
びシーケンスロジック704は、ソートされるキーの数
(nレジスタ738中の値)と各リストのキーの数(p
レジスタ736に保持されている)とを比較する。この
場合、リスト長p=2およびソートされるキーの数は8
に等しいので、ソートは完了していない。ソートが完了
していないという判断の基に、コントロールおよびシー
ケンスロジック704は、最後の2つのリスト中の最後
の2つのキーFおよびGが比較され、マージされるま
で、ステップ1004から1032までの適当なステッ
プを反復的に実行する。マージの第2番目の繰り返しの
結果、ワーキングストアアドレスは、参照符号712
(2)で示されるように、書き込みポインタアレイに書
き込まれる。
どうかを判断するために実行される。コントロールおよ
びシーケンスロジック704は、ソートされるキーの数
(nレジスタ738中の値)と各リストのキーの数(p
レジスタ736に保持されている)とを比較する。この
場合、リスト長p=2およびソートされるキーの数は8
に等しいので、ソートは完了していない。ソートが完了
していないという判断の基に、コントロールおよびシー
ケンスロジック704は、最後の2つのリスト中の最後
の2つのキーFおよびGが比較され、マージされるま
で、ステップ1004から1032までの適当なステッ
プを反復的に実行する。マージの第2番目の繰り返しの
結果、ワーキングストアアドレスは、参照符号712
(2)で示されるように、書き込みポインタアレイに書
き込まれる。
【0145】第2番目のパスが完了した時(F>Gなの
でステップ1032で判断される)、ステップ1034
が再び実行される。第3番目すなわち最後のパス806
で、読み出しおよび書き込みアレイは、712(2)が
読み出しアレイとなり714(2)が書き込みアレイに
なるように、再びスワップされる。リスト長pが再び2
倍にされて4となり、長さ4の2つのリストが、例えば
CDEHおよびABFGについて処理される。そして、
カウンタおよびレジスタは、ブロック1034に示され
るように、適宜にセットされる。
でステップ1032で判断される)、ステップ1034
が再び実行される。第3番目すなわち最後のパス806
で、読み出しおよび書き込みアレイは、712(2)が
読み出しアレイとなり714(2)が書き込みアレイに
なるように、再びスワップされる。リスト長pが再び2
倍にされて4となり、長さ4の2つのリストが、例えば
CDEHおよびABFGについて処理される。そして、
カウンタおよびレジスタは、ブロック1034に示され
るように、適宜にセットされる。
【0146】第3番目のパスの最後で、書き込みアレイ
714(2)は、図11に示されるようになる。第3番
目のパスの後に、ステップ1032がもう1度実行さ
れ、そして、リスト長pが8にセットされる。
714(2)は、図11に示されるようになる。第3番
目のパスの後に、ステップ1032がもう1度実行さ
れ、そして、リスト長pが8にセットされる。
【0147】ソート動作の最後は、ステップ1036に
より判断される。リスト長pがソートされるキーの総数
n以上になるとソートは完了する。ソート/マージユニ
ットは、コントロールバス320にそれを表明する信号
を与えることにより、コントロールプロセッサ310に
ソートの完了を知らせる。コントロールプロセッサ31
0は、ソート完了信号を受けると、エキストラクタ/メ
モリインターフェイスユニット308のアセンブラ機能
に、レコードをワーキングストア312からシステムメ
モリに移すよう命じる。レコードは、ワーキングストア
からのキーを最終書き込みポインタアレイ(例えば図1
1の714(2))中に示される順序でアドレシングす
るメモリインターフェイスユニットにより、ソートされ
たフォーマットでシステムメモリに記憶される。
より判断される。リスト長pがソートされるキーの総数
n以上になるとソートは完了する。ソート/マージユニ
ットは、コントロールバス320にそれを表明する信号
を与えることにより、コントロールプロセッサ310に
ソートの完了を知らせる。コントロールプロセッサ31
0は、ソート完了信号を受けると、エキストラクタ/メ
モリインターフェイスユニット308のアセンブラ機能
に、レコードをワーキングストア312からシステムメ
モリに移すよう命じる。レコードは、ワーキングストア
からのキーを最終書き込みポインタアレイ(例えば図1
1の714(2))中に示される順序でアドレシングす
るメモリインターフェイスユニットにより、ソートされ
たフォーマットでシステムメモリに記憶される。
【0148】前述したように、ソート/マージユニット
302のソート機能は、2分マージソートをハードウェ
アで実現したものが好ましい。2分マージソートの技術
は、"Sorting and Sort System"、 Harold Lorlin著、A
ddison-Wesley PublishingCompany, Inc., Library of
Congress Catalog Card No.73-2140, 1975年の本中に詳
細に検討されている。そして、それは以下のようなもの
である。2分マージソートは、ワーキングストアの大き
さのキーブロックに対し、各サイクル毎に4倍長ワード
比較の割合で行われる。各キーブロック中に含まれるキ
ーの数は、キー長さに依存する。
302のソート機能は、2分マージソートをハードウェ
アで実現したものが好ましい。2分マージソートの技術
は、"Sorting and Sort System"、 Harold Lorlin著、A
ddison-Wesley PublishingCompany, Inc., Library of
Congress Catalog Card No.73-2140, 1975年の本中に詳
細に検討されている。そして、それは以下のようなもの
である。2分マージソートは、ワーキングストアの大き
さのキーブロックに対し、各サイクル毎に4倍長ワード
比較の割合で行われる。各キーブロック中に含まれるキ
ーの数は、キー長さに依存する。
【0149】キーのより長いリストはソートされたブロ
ックをマージすることにより作られる。マージは、2又
はそれ以上の整列リストを1つの整列リストに結合する
行為である。マージは、置換/選択アルゴリズムを用い
た128ウェイの「トーナメントツリー」を実現するハ
ードウェアにより実現される。128ウェイマージは、
各サイクル毎に7階層のツリーで4倍長ワードの比較を
行って、7サイクル毎に結果を出力する。ハードウェア
によるトーナメントツリーのマージの構成や動作は、図
9および図15〜図20を参照することにより、より理
解されるであろう。
ックをマージすることにより作られる。マージは、2又
はそれ以上の整列リストを1つの整列リストに結合する
行為である。マージは、置換/選択アルゴリズムを用い
た128ウェイの「トーナメントツリー」を実現するハ
ードウェアにより実現される。128ウェイマージは、
各サイクル毎に7階層のツリーで4倍長ワードの比較を
行って、7サイクル毎に結果を出力する。ハードウェア
によるトーナメントツリーのマージの構成や動作は、図
9および図15〜図20を参照することにより、より理
解されるであろう。
【0150】図15は、通常の8ウェイトーナメントツ
リーの説明である。8ウェイトーナメントツリーは、1
5のノード1〜15を持っており、3階層の比較を行
う。マージされる8つのリストからのキーがツリーのベ
ース(ノード8〜15)に入る。勝った方のキーがツリ
ーを介して上向きに進める。比較の第3の階層の勝者
は、ノード1でツリーから取り出され、そして、最終の
マージリストに置かれる。
リーの説明である。8ウェイトーナメントツリーは、1
5のノード1〜15を持っており、3階層の比較を行
う。マージされる8つのリストからのキーがツリーのベ
ース(ノード8〜15)に入る。勝った方のキーがツリ
ーを介して上向きに進める。比較の第3の階層の勝者
は、ノード1でツリーから取り出され、そして、最終の
マージリストに置かれる。
【0151】図16は、ハードウェアトーナメントツリ
ー動作のためのコントロールプロセッサ310によるワ
ーキングストア312およびポインタアレイ712、7
14の初期化の説明である。マージされるリストの数に
基づいて、コントロールプロセッサは、トーナメントツ
リーの幅(ベースノードの数)と高さ(比較の階層の
数)を計算する。ツリーの幅(m)は、次に大きい2の
べき乗に丸められたマージすべきリストの数と等しい。
ツリーでの比較の階層の数(L)は、幅(m)のlog
2 と等しい。
ー動作のためのコントロールプロセッサ310によるワ
ーキングストア312およびポインタアレイ712、7
14の初期化の説明である。マージされるリストの数に
基づいて、コントロールプロセッサは、トーナメントツ
リーの幅(ベースノードの数)と高さ(比較の階層の
数)を計算する。ツリーの幅(m)は、次に大きい2の
べき乗に丸められたマージすべきリストの数と等しい。
ツリーでの比較の階層の数(L)は、幅(m)のlog
2 と等しい。
【0152】図16の例では、ワーキングストア312
中に、6つのリスト1302〜1312がある。リスト
1302〜1312は、エキストラクタ/メモリインタ
ーフェイスユニット308により、コントロールプロセ
ッサ310からの開始コマンドに応答して、ワーキング
ストア312に運ばれる。6つのリストがあるので、コ
ントロールプロセッサ310は、そのツリーの幅(m)
を8と計算し、比較の階層の数(L)を3(8のlog
2 )と計算する。従って、コントロールプロセッサ31
0は、ポインタアレイ712、714を論理的に4つの
領域1314〜1320に分ける。そのうちの3つは、
比較の3つの階層にそれぞれ割り当てられ、残り1つは
ベース用である。
中に、6つのリスト1302〜1312がある。リスト
1302〜1312は、エキストラクタ/メモリインタ
ーフェイスユニット308により、コントロールプロセ
ッサ310からの開始コマンドに応答して、ワーキング
ストア312に運ばれる。6つのリストがあるので、コ
ントロールプロセッサ310は、そのツリーの幅(m)
を8と計算し、比較の階層の数(L)を3(8のlog
2 )と計算する。従って、コントロールプロセッサ31
0は、ポインタアレイ712、714を論理的に4つの
領域1314〜1320に分ける。そのうちの3つは、
比較の3つの階層にそれぞれ割り当てられ、残り1つは
ベース用である。
【0153】最初に、コントロールプロセッサ310
は、ポインタアレイ712、714の比較階層領域13
14〜1318に自動的勝者1322(すなわち、比較
で他のキーに負けることのないキー)に対するポインタ
をロードする。ベース領域1320には、最初に、ワー
キングストア312に保持される各入力リスト1302
〜1312からの第1のキーに対するポインタがロード
される。空のリストは、自動的敗者1324に対するポ
インタを、ベース領域1320の対応する位置に入れて
ある。ワーキングストア312およびポインタアレイ7
12、714の初期化が完了されると、ソート/マージ
ユニット302のコントロールおよびシーケンスロジッ
ク704は、トーナメントツリーを充てんする処理を始
める。
は、ポインタアレイ712、714の比較階層領域13
14〜1318に自動的勝者1322(すなわち、比較
で他のキーに負けることのないキー)に対するポインタ
をロードする。ベース領域1320には、最初に、ワー
キングストア312に保持される各入力リスト1302
〜1312からの第1のキーに対するポインタがロード
される。空のリストは、自動的敗者1324に対するポ
インタを、ベース領域1320の対応する位置に入れて
ある。ワーキングストア312およびポインタアレイ7
12、714の初期化が完了されると、ソート/マージ
ユニット302のコントロールおよびシーケンスロジッ
ク704は、トーナメントツリーを充てんする処理を始
める。
【0154】図15の8ウェイツリーを用いた昇順マー
ジのツリー充てん処理は、図19で説明される。図19
の処理は、置換選択マージアルゴリズムを含んでいる。
図19に記載された各変数は、図9のソート/マージユ
ニットのハードウェア中に保持される。特に、変数Aお
よびBは、それぞれ、AおよびBアドレスレジスタ71
9、721中に保持されるワーキングストアアドレスに
対応する。変数i(親ノードを決定するために、図19
の処理で使われる)は、iカウンタ722に保持され
る。変数m(ベースノードを指すために、図19の処理
で使われる)は、mカウンタ727中に保持される。変
数「敗者」は、一時記憶位置(そのために、pレジスタ
736が利用できる)である。図19において、WS
(n)はワーキングストア312の位置nの内容を示し
ており、WRITE(n)は指定された書き込みポイン
タアレイの位置nの内容を示し、READ(n)は指定
された読み出しポインタアレイの位置nの内容を示す。
ジのツリー充てん処理は、図19で説明される。図19
の処理は、置換選択マージアルゴリズムを含んでいる。
図19に記載された各変数は、図9のソート/マージユ
ニットのハードウェア中に保持される。特に、変数Aお
よびBは、それぞれ、AおよびBアドレスレジスタ71
9、721中に保持されるワーキングストアアドレスに
対応する。変数i(親ノードを決定するために、図19
の処理で使われる)は、iカウンタ722に保持され
る。変数m(ベースノードを指すために、図19の処理
で使われる)は、mカウンタ727中に保持される。変
数「敗者」は、一時記憶位置(そのために、pレジスタ
736が利用できる)である。図19において、WS
(n)はワーキングストア312の位置nの内容を示し
ており、WRITE(n)は指定された書き込みポイン
タアレイの位置nの内容を示し、READ(n)は指定
された読み出しポインタアレイの位置nの内容を示す。
【0155】ステップ1402で、処理変数が初期設定
され、そして、読み出しおよび書き込みアレイの初期指
定が行われる。図19に示すように、ベース(ノード8
〜15)を保持しているポイタアレイ714が書き込み
アレイとして指定され、そして、ベースの上の階層(ノ
ード4〜7)を保持しているポインタアレイ712が読
み出しアレイとして指定される。更に、アレイの幅、こ
の場合8がmカウンタ727にセットされ、そして、開
始親ノード番号INT(m/2)=4がiカウンタ72
2にセットされる。これが完了すると、Aレジスタ71
9には、READ(4)にあるワーキングストアアドレ
スがロードされ、Bレジスタ721にはWRITE
(8)にあるワーキングストアアドレスがロードされ
る。
され、そして、読み出しおよび書き込みアレイの初期指
定が行われる。図19に示すように、ベース(ノード8
〜15)を保持しているポイタアレイ714が書き込み
アレイとして指定され、そして、ベースの上の階層(ノ
ード4〜7)を保持しているポインタアレイ712が読
み出しアレイとして指定される。更に、アレイの幅、こ
の場合8がmカウンタ727にセットされ、そして、開
始親ノード番号INT(m/2)=4がiカウンタ72
2にセットされる。これが完了すると、Aレジスタ71
9には、READ(4)にあるワーキングストアアドレ
スがロードされ、Bレジスタ721にはWRITE
(8)にあるワーキングストアアドレスがロードされ
る。
【0156】最初、WRITE(8)はキー「A」のワ
ーキングストアアドレス(1)を含み、READ(4)
は自動的勝者のワーキングストアアドレス(16)を含
む。ポインタアレイ712、714に構成されたトーナ
メントツリーのノードは、キー自身というよりは、キー
に対するポインタを保持することが理解されよう。
ーキングストアアドレス(1)を含み、READ(4)
は自動的勝者のワーキングストアアドレス(16)を含
む。ポインタアレイ712、714に構成されたトーナ
メントツリーのノードは、キー自身というよりは、キー
に対するポインタを保持することが理解されよう。
【0157】ステップ1404で、比較器702によ
り、WS(A)のキーがWS(B)のキーと比較され
る。このため、キー「A」(WS(1)にある)が自動
的勝者(WS(16)にある)と比較される。比較器7
02による判断、すなわちWS(A)<=WS(B)に
応答して、コントロールおよびシーケンスロジック70
4は、ステップ1406を実行する。
り、WS(A)のキーがWS(B)のキーと比較され
る。このため、キー「A」(WS(1)にある)が自動
的勝者(WS(16)にある)と比較される。比較器7
02による判断、すなわちWS(A)<=WS(B)に
応答して、コントロールおよびシーケンスロジック70
4は、ステップ1406を実行する。
【0158】ステップ1406で、挑戦者のノードアド
レス(8)が「敗者」と呼ばれる一時記憶領域(例え
ば、pレジスタ736)に記憶され、そして、Bレジス
タ721には親ノードのアドレス(4)がロードされ
る。代わりに、もし、WS(A)>WS(B)なら、ス
テップ1407が実行され、「敗者」にはAがロードさ
れ、Bレジスタの内容はそのままの状態とされることが
図19から分かるだろう。
レス(8)が「敗者」と呼ばれる一時記憶領域(例え
ば、pレジスタ736)に記憶され、そして、Bレジス
タ721には親ノードのアドレス(4)がロードされ
る。代わりに、もし、WS(A)>WS(B)なら、ス
テップ1407が実行され、「敗者」にはAがロードさ
れ、Bレジスタの内容はそのままの状態とされることが
図19から分かるだろう。
【0159】ステップ1408で、読み出しおよび書き
込みポインタアレイの指定がスワップされ、そして、比
較の敗者がツリーに書き込まれる。つまり、ポインタア
レイ714が読み出しアレイになり、そして、ポインタ
アレイ712が書き込みアレイになる。この例では、敗
者「A」のワーキングストアアドレス(8)は、書き込
みアレイ712のアドレスi(=4)にロードすること
により、ツリーに書き込まれる。iカウンタは、それか
ら、INT(i/2)を再びロードされ、そして、ステ
ップ1410が実行される。
込みポインタアレイの指定がスワップされ、そして、比
較の敗者がツリーに書き込まれる。つまり、ポインタア
レイ714が読み出しアレイになり、そして、ポインタ
アレイ712が書き込みアレイになる。この例では、敗
者「A」のワーキングストアアドレス(8)は、書き込
みアレイ712のアドレスi(=4)にロードすること
により、ツリーに書き込まれる。iカウンタは、それか
ら、INT(i/2)を再びロードされ、そして、ステ
ップ1410が実行される。
【0160】ステップ1410で、最初の勝利キーが見
つけられたかどうかを判断するために、iの値が0と比
較される。もし、iが0に等しくなければ、それから、
ステップ1412が実行される。
つけられたかどうかを判断するために、iの値が0と比
較される。もし、iが0に等しくなければ、それから、
ステップ1412が実行される。
【0161】ステップ1412で、次に高い階層での親
ノードのポインタ内容がAレジスタ719にロードされ
る。i=2なので、Aレジスタには、自動的勝者のアド
レス(16)であるREAD(2)がロードされる。ス
テップ1404がそれから実行され、そして、WS
(A)およびWS(B)のキーが比較器302で比較さ
れる。WS(16)=自動的勝者なので、それから、W
S(A)<=WS(B)となり、そして、ステップ14
06〜1410が再び実行される。
ノードのポインタ内容がAレジスタ719にロードされ
る。i=2なので、Aレジスタには、自動的勝者のアド
レス(16)であるREAD(2)がロードされる。ス
テップ1404がそれから実行され、そして、WS
(A)およびWS(B)のキーが比較器302で比較さ
れる。WS(16)=自動的勝者なので、それから、W
S(A)<=WS(B)となり、そして、ステップ14
06〜1410が再び実行される。
【0162】前述から、ステップ1404から1412
は、ステップ1410で、i=0となる判断による割り
込みがあるまで、反復的に実行されるのが明白に分かる
だろう。図17は、ステップ1410でのi=0の最初
の判断でのポインタアレイ712、714の状態を示し
ている。
は、ステップ1410で、i=0となる判断による割り
込みがあるまで、反復的に実行されるのが明白に分かる
だろう。図17は、ステップ1410でのi=0の最初
の判断でのポインタアレイ712、714の状態を示し
ている。
【0163】i=0であることが検出された時、ツリー
への次のキーローディングを始めるために、ステップ1
414が実行される。ステップ1414で、ベースノー
ドアドレス(m)が1つインクリメントされ、親ノード
アドレス(i)がINT(m/2)にセットされ、ポイ
ンタアレイ712が読み出しアレイとして指定され、ポ
インタアレイ714が書き込みアレイとして指定され
る。それから、ステップ1416が実行される。
への次のキーローディングを始めるために、ステップ1
414が実行される。ステップ1414で、ベースノー
ドアドレス(m)が1つインクリメントされ、親ノード
アドレス(i)がINT(m/2)にセットされ、ポイ
ンタアレイ712が読み出しアレイとして指定され、ポ
インタアレイ714が書き込みアレイとして指定され
る。それから、ステップ1416が実行される。
【0164】ステップ1416では、ツリー充てん処理
が完了されたかどうかを判断するために、mの値がチェ
ックされる。mの値がツリーの幅の2倍に等しければ
(8×2=16)、ツリー充てん処理が完了される。ツ
リーが充てんされれば、ワーキングストアアドレスB
(第1番目の勝者のアドレス)は、エキストラクタ/メ
モリインターフェイスユニット308のアセンブラ機能
に送られ、そして、ベース領域には、勝者が出たリスト
にある次のキーが再ロードされる。図20のマージ動作
がそれから実行される。もし、充てん処理が完了しなけ
れば、ステップ1418が実行される。
が完了されたかどうかを判断するために、mの値がチェ
ックされる。mの値がツリーの幅の2倍に等しければ
(8×2=16)、ツリー充てん処理が完了される。ツ
リーが充てんされれば、ワーキングストアアドレスB
(第1番目の勝者のアドレス)は、エキストラクタ/メ
モリインターフェイスユニット308のアセンブラ機能
に送られ、そして、ベース領域には、勝者が出たリスト
にある次のキーが再ロードされる。図20のマージ動作
がそれから実行される。もし、充てん処理が完了しなけ
れば、ステップ1418が実行される。
【0165】ステップ1418では、Bレジスタ721
には、WRITE(m)中のワーキングストアアドレス
がロードされ、そして、Aレジスタ719には、REA
D(i)からのワーキングストアアドレスがロードされ
る。m=9、およびi=4(INT(9/2))なの
で、それから、Bレジスタには3がロードされ(ポイン
タアレイ714、アドレス9)、そして、Aレジスタに
は1がロードされる。ノード9で示されるキーCのため
のステップ1404〜1412が反復的に実行される。
には、WRITE(m)中のワーキングストアアドレス
がロードされ、そして、Aレジスタ719には、REA
D(i)からのワーキングストアアドレスがロードされ
る。m=9、およびi=4(INT(9/2))なの
で、それから、Bレジスタには3がロードされ(ポイン
タアレイ714、アドレス9)、そして、Aレジスタに
は1がロードされる。ノード9で示されるキーCのため
のステップ1404〜1412が反復的に実行される。
【0166】図19から明らかなように、ツリーに各ベ
ースノードがロードされ、全ての自動的勝者が置き換え
られ、そして、最初の勝利キーが決定されるまで、ステ
ップ1404〜1418が反復的に実行される。図18
は、ステップ1416で判断された際の、ツリー充てん
処理の最後でのポインタアレイの状態を示す。ステップ
1416の後、勝者のリストからの次の要素をベースに
ローディングする代わりに、リスト中の先行要素がツリ
ー上を進む際に、そのリスト中の次の要素をローディン
グすることにより、充てん処理の間にベースを再充てん
することができる。
ースノードがロードされ、全ての自動的勝者が置き換え
られ、そして、最初の勝利キーが決定されるまで、ステ
ップ1404〜1418が反復的に実行される。図18
は、ステップ1416で判断された際の、ツリー充てん
処理の最後でのポインタアレイの状態を示す。ステップ
1416の後、勝者のリストからの次の要素をベースに
ローディングする代わりに、リスト中の先行要素がツリ
ー上を進む際に、そのリスト中の次の要素をローディン
グすることにより、充てん処理の間にベースを再充てん
することができる。
【0167】図20は、トーナメントツリー動作を説明
するフローチャートである。図20から、実際のツリー
動作1422〜1438のステップは、ツリー充てん処
理1402〜1418に似ていることが明らかであろ
う。2つの動作の間の根本的な違いは、比較の経路の判
断である。図19のツリー充てん処理では、ツリーは、
mポインタを使って、ベースを左から右に充てんされて
いく(ステップ1414で示される)。これに対して、
図20のツリー動作の間では、比較される次のキー、つ
まり、比較の経路が、前の勝者により決定される。エキ
ストラクタは、勝者のオリジナルリストを追跡している
ので、新たな勝者が決定される毎に適切なベース開始点
(i)がエキストラクタにより送られる。図19と同様
に、図20での割算は、整数割算である(すなわち、結
果の整数部分だけが調べられる)。
するフローチャートである。図20から、実際のツリー
動作1422〜1438のステップは、ツリー充てん処
理1402〜1418に似ていることが明らかであろ
う。2つの動作の間の根本的な違いは、比較の経路の判
断である。図19のツリー充てん処理では、ツリーは、
mポインタを使って、ベースを左から右に充てんされて
いく(ステップ1414で示される)。これに対して、
図20のツリー動作の間では、比較される次のキー、つ
まり、比較の経路が、前の勝者により決定される。エキ
ストラクタは、勝者のオリジナルリストを追跡している
ので、新たな勝者が決定される毎に適切なベース開始点
(i)がエキストラクタにより送られる。図19と同様
に、図20での割算は、整数割算である(すなわち、結
果の整数部分だけが調べられる)。
【0168】トーナメントツリー動作の間に、もし、リ
ストが空になったら、エキストラクタは、ソート/マー
ジユニットを停止するか、ツリーに自動的敗者をロード
できる。どちらの動作が選択されるかは、実行されるマ
ージのタイプに依存する。
ストが空になったら、エキストラクタは、ソート/マー
ジユニットを停止するか、ツリーに自動的敗者をロード
できる。どちらの動作が選択されるかは、実行されるマ
ージのタイプに依存する。
【0169】全てのリストが空になるまでマージ動作が
実行される場合は、自動的敗者がロードされる。さもな
ければ、マージは停止されることになる。自動的敗者が
勝者になると(なぜなら、ツリーに残されたキーは自動
的敗者だけであるから)、マージが完了する。2つのキ
ーが等しい場合、任意にその一方を勝者とすることがで
きる(例えば、ワーキングストアアドレスAからのキー
は、いつも、ワーキングストアアドレスBからの等しい
キーに勝つ)。
実行される場合は、自動的敗者がロードされる。さもな
ければ、マージは停止されることになる。自動的敗者が
勝者になると(なぜなら、ツリーに残されたキーは自動
的敗者だけであるから)、マージが完了する。2つのキ
ーが等しい場合、任意にその一方を勝者とすることがで
きる(例えば、ワーキングストアアドレスAからのキー
は、いつも、ワーキングストアアドレスBからの等しい
キーに勝つ)。
【0170】ジョイン処理は、ソート/マージジョイン
アルゴリズムを用いて行われる。2つのテーブルをジョ
インするには、これらが両方とも同じソート順であり
(例えば昇順、降順)、そして、ジョインが定義される
列が等しいフォーマットとされることを必要とする。ソ
ート順は、ジョインの基準に依存する。等しい、より大
きい、又は、等しくない、が指定されると、昇順が使わ
れる。より小さいが基準の時には、降順が使われる。従
って、リストは、最初に、ソート/マージユニット30
を使ってソートされ、それから、ジョインされる。
アルゴリズムを用いて行われる。2つのテーブルをジョ
インするには、これらが両方とも同じソート順であり
(例えば昇順、降順)、そして、ジョインが定義される
列が等しいフォーマットとされることを必要とする。ソ
ート順は、ジョインの基準に依存する。等しい、より大
きい、又は、等しくない、が指定されると、昇順が使わ
れる。より小さいが基準の時には、降順が使われる。従
って、リストは、最初に、ソート/マージユニット30
を使ってソートされ、それから、ジョインされる。
【0171】ジョインは、ジョイン基準が満たされるま
で、第1番目のリストL1と第2番目のリストL2をマ
ージすることにより、実行される。等しい、より大き
い、又は、等しくないという基準が指定される時には、
昇順のマージが行われる。より小さいという基準が指定
される時には、降順のマージが行われる。ジョイン基準
が満たされるとき、対応するキーのレコードIDがペア
としてワーキングストア312の結果領域に書き込まれ
る。キーIDが一度ワーキングストア312に書き込ま
れると、第1番目のリストL1を一度に1キーずつステ
ップし、第2番目のリスト中のキーのウィンドウと比較
していくことにより、ジョインが続けられる。ウィンド
ウは、L1リスト中の任意の1つの要素と比較した時、
ジョイン基準を満たすL2リスト中のキーの全てにより
定義される。キーL1(i)に対し、マッチするキーL
2(j)〜L2(k)がある(jはk以下)。マッチン
グキーのレコードIDは、ワーキングストア312の結
果領域にペアとして書き込まれる。ウィンドウの最後に
達した時(例えば、ジョイン基準がもはや満たされな
い)、第1番目のリストL1がL1(i+1)までステ
ップされ、第2番目のリストL2がL2(j)(すなわ
ち、ウィンドウの最初)にリセットされる。ジョイン動
作は、ジョイン基準が再び満たされて、新たなウィンド
ウが作られるまで、第1番目および第2番目のリストの
2ウェイマージとして続けられる。
で、第1番目のリストL1と第2番目のリストL2をマ
ージすることにより、実行される。等しい、より大き
い、又は、等しくないという基準が指定される時には、
昇順のマージが行われる。より小さいという基準が指定
される時には、降順のマージが行われる。ジョイン基準
が満たされるとき、対応するキーのレコードIDがペア
としてワーキングストア312の結果領域に書き込まれ
る。キーIDが一度ワーキングストア312に書き込ま
れると、第1番目のリストL1を一度に1キーずつステ
ップし、第2番目のリスト中のキーのウィンドウと比較
していくことにより、ジョインが続けられる。ウィンド
ウは、L1リスト中の任意の1つの要素と比較した時、
ジョイン基準を満たすL2リスト中のキーの全てにより
定義される。キーL1(i)に対し、マッチするキーL
2(j)〜L2(k)がある(jはk以下)。マッチン
グキーのレコードIDは、ワーキングストア312の結
果領域にペアとして書き込まれる。ウィンドウの最後に
達した時(例えば、ジョイン基準がもはや満たされな
い)、第1番目のリストL1がL1(i+1)までステ
ップされ、第2番目のリストL2がL2(j)(すなわ
ち、ウィンドウの最初)にリセットされる。ジョイン動
作は、ジョイン基準が再び満たされて、新たなウィンド
ウが作られるまで、第1番目および第2番目のリストの
2ウェイマージとして続けられる。
【0172】ジョイン動作の疑似コードの例は、以下に
示される。 5 Two way merge L1(i);L2(j) ; 2ウェイマージを行う ; 10 On L1(i), L2(j) meet ; もし、ジョイン基準が満たさ selected join criteria ; れたら、以下のステップを行 (any of >,<,=,NE) ; う。さもなければ、2ウェイ ; マージを続ける。 ; 20 output L1(i), L2(i) ; L1(i), L2(i) のレコードI ; Dをワーキングストアに書き ; 込む。 ; 30 k=j ; ポインタを初期化 ; 40 k=k+1 ; ウィンドウポインタを ; インクリメント ; 50 compare L1(i):L2(K) ; ジョイン基準が満たされたか ; どうかをチェック ; 60 if join criteria is met ; output L1(i), L2(k) and ; go to 40 ; ; 70 i=i+1 ; ; 80 Return to 50 ; マージを再開
示される。 5 Two way merge L1(i);L2(j) ; 2ウェイマージを行う ; 10 On L1(i), L2(j) meet ; もし、ジョイン基準が満たさ selected join criteria ; れたら、以下のステップを行 (any of >,<,=,NE) ; う。さもなければ、2ウェイ ; マージを続ける。 ; 20 output L1(i), L2(i) ; L1(i), L2(i) のレコードI ; Dをワーキングストアに書き ; 込む。 ; 30 k=j ; ポインタを初期化 ; 40 k=k+1 ; ウィンドウポインタを ; インクリメント ; 50 compare L1(i):L2(K) ; ジョイン基準が満たされたか ; どうかをチェック ; 60 if join criteria is met ; output L1(i), L2(k) and ; go to 40 ; ; 70 i=i+1 ; ; 80 Return to 50 ; マージを再開
【0173】ソート/マージ/ジョインアルゴリズムの
より詳細な記述は、C.J. Data, "AnIntroduction to Da
tabase System", Addison-Wesley PublishingCompany,
1983年に見ることができる。
より詳細な記述は、C.J. Data, "AnIntroduction to Da
tabase System", Addison-Wesley PublishingCompany,
1983年に見ることができる。
【0174】ソート/マージユニット302は、ジョイ
ンの初期比較を行う。他の述語の項は、述語評価器30
4(図3)により行われる。この理由から、ジョインで
の最も制限的な述語は、ソート/マージユニット302
により行われ、残りが述語評価器304により行われる
ことになる。この方法は、最速の処理をし、述語評価器
304で評価される述語の数を最小にするという結果を
生じる。
ンの初期比較を行う。他の述語の項は、述語評価器30
4(図3)により行われる。この理由から、ジョインで
の最も制限的な述語は、ソート/マージユニット302
により行われ、残りが述語評価器304により行われる
ことになる。この方法は、最速の処理をし、述語評価器
304で評価される述語の数を最小にするという結果を
生じる。
【0175】合併、共通部分、および差の集合演算もま
た、ソート/マージアルゴリズムを使って行われる。こ
れらと、ジョイン演算との相違は、出力レコードの選択
および構成の方法にある。ジョインは、2つのレコード
を、その両レコードからの列を含む1つのレコードに組
み合わせる。集合演算は、同じフォーマット(すなわ
ち、列の数およびタイプが同じ)を持つデータベースで
のみ定義される。合併、差および共通部分の集合演算の
出力は、入力として、同じフォーマットを持つ。クロス
積は、このルールの例である。クロス積は、本質的に、
制限的でないジョインであるので、データベース中の全
てのレコードは、他のデータベース中の全てのレコード
とジョインされる。
た、ソート/マージアルゴリズムを使って行われる。こ
れらと、ジョイン演算との相違は、出力レコードの選択
および構成の方法にある。ジョインは、2つのレコード
を、その両レコードからの列を含む1つのレコードに組
み合わせる。集合演算は、同じフォーマット(すなわ
ち、列の数およびタイプが同じ)を持つデータベースで
のみ定義される。合併、差および共通部分の集合演算の
出力は、入力として、同じフォーマットを持つ。クロス
積は、このルールの例である。クロス積は、本質的に、
制限的でないジョインであるので、データベース中の全
てのレコードは、他のデータベース中の全てのレコード
とジョインされる。
【0176】合併演算は、2つの入力テーブル中の全て
の一意レコードのコピーを含む出力テーブルを作る。す
なわち、もし、比較動作が等しくないという結果を生じ
たら、両方の入力テーブルレコードが書き込まれる。も
し、2つの入力レコードが等しければ、1つだけが出力
テーブルに書き込まれる(いずれかのテーブルから)。
合併演算の疑似コードの例は、以下に示される。
の一意レコードのコピーを含む出力テーブルを作る。す
なわち、もし、比較動作が等しくないという結果を生じ
たら、両方の入力テーブルレコードが書き込まれる。も
し、2つの入力レコードが等しければ、1つだけが出力
テーブルに書き込まれる(いずれかのテーブルから)。
合併演算の疑似コードの例は、以下に示される。
【0177】合併演算 COMPARE L1(i):L2(j) IF L1(i) < L2(j), OUTPUT L1(i), i=i+1 IF L1(i) > L2(j), OUTPUT L2(j), j=j+1 IF L1(i) = L2(j), OUTPUT L1(i), i=i+1, j=j+1 CONTINUE
【0178】共通部分演算は、等しいレコードのコピー
を1つだけ書込み、一方、差演算は、比較が等しくない
時にAテーブルからのレコードだけを書き込む。従っ
て、これら3つの集合演算の相違は、どの条件が出力の
書き込みを行わせるかにある。共通部分および差演算の
疑似コードは、以下に示される。
を1つだけ書込み、一方、差演算は、比較が等しくない
時にAテーブルからのレコードだけを書き込む。従っ
て、これら3つの集合演算の相違は、どの条件が出力の
書き込みを行わせるかにある。共通部分および差演算の
疑似コードは、以下に示される。
【0179】共通部分演算 COMPARE L1(i):L2(j) IF L1(i) < L2(j), i=i+1 IF L1(i) > L2(j), j=j+1 IF L1(i) = L2(j), OUTPUT L1(i), i=i+1, j=j+1 CONTINUE
【0180】差演算 COMPARE L1(i):L2(j) IF L1(i) < L2(j), OUTPUT L1(i), i=i+1 IF L1(i) > L2(j), j=j+1 IF L1(i) = L2(j), i=i+1, j=j+1 CONTINUE
【0181】ソート/マージユニット302に対する更
なる改良は、従来の置換選択型のトーナメントソート
に、Harold Lorin著、 "Sorting and Sort System"、ch
apter5.4 (先に引用している)に述べられているよう
なハードウェア符号語技術(オフセット値符号化ともい
う)を適用することである。オフセット値符号化の利用
は、キー間の順番を決定するために比較されるバイトの
数を減少する。
なる改良は、従来の置換選択型のトーナメントソート
に、Harold Lorin著、 "Sorting and Sort System"、ch
apter5.4 (先に引用している)に述べられているよう
なハードウェア符号語技術(オフセット値符号化ともい
う)を適用することである。オフセット値符号化の利用
は、キー間の順番を決定するために比較されるバイトの
数を減少する。
【0182】オフセット値符号化ハードウェアは、比較
動作が前の勝利キーとは異なる結果を生じた場合のキー
中のワードのオフセットを識別する。各符号語は、オフ
セットおよびワードを含む。符号語は、いつも、前の勝
利キーを基にされているので、符号語は、あるキーがも
う1つのキーより大きいかどうかを判断するために比較
される必要があるだけである。もし、キーが等しけれ
ば、両方のキーは、どこに差が存在するのか又はキーが
全く同じであるかを判定するために更にスキャンされる
(左から右に)。
動作が前の勝利キーとは異なる結果を生じた場合のキー
中のワードのオフセットを識別する。各符号語は、オフ
セットおよびワードを含む。符号語は、いつも、前の勝
利キーを基にされているので、符号語は、あるキーがも
う1つのキーより大きいかどうかを判断するために比較
される必要があるだけである。もし、キーが等しけれ
ば、両方のキーは、どこに差が存在するのか又はキーが
全く同じであるかを判定するために更にスキャンされる
(左から右に)。
【0183】置換選択ソーティングに対するオフセット
値符号化の適用の検討は、IBMTechnical Disclosure
Bulletin,Vol.20,NO.7,December1977,PP 2832〜2837に
見られる。
値符号化の適用の検討は、IBMTechnical Disclosure
Bulletin,Vol.20,NO.7,December1977,PP 2832〜2837に
見られる。
【0184】符号語の比較は(直接なキーの比較より
も)、ソート処理中で、キーの最も左の部分がたった1
度しか比較されないという有利さがある。これは、符号
語は、最後の比較動作からの差の位置を維持しているか
らである。従って、最小数の比較が実行され、各キー比
較においてキーの先行ワードを比較しなければならない
アルゴリズムが改善される。
も)、ソート処理中で、キーの最も左の部分がたった1
度しか比較されないという有利さがある。これは、符号
語は、最後の比較動作からの差の位置を維持しているか
らである。従って、最小数の比較が実行され、各キー比
較においてキーの先行ワードを比較しなければならない
アルゴリズムが改善される。
【0185】図14は、符号語技術を置換選択型トーナ
メントソートに適用するための付加ハードウェアを使っ
たソート/マージユニットの例である。図14のハード
ウェアは、図9のハードウェアに付加されるものである
ことが理解されるであろう。
メントソートに適用するための付加ハードウェアを使っ
たソート/マージユニットの例である。図14のハード
ウェアは、図9のハードウェアに付加されるものである
ことが理解されるであろう。
【0186】符号語技術を実現するために、2つの8K
×4ビットのオフセットアレイ1102、1104が備
えられ、これらは、図9のソート/マージユニットの例
のポインタアレイ702、704と連結される。図14
の符号語トーナメントツリーソートハードウェアはま
た、図9のAおよびBアドレスレジスタ706、708
を補うベースAおよびベースBアドレスレジスタ110
6、1109を含んでいる。現キーのためのオフセット
のアドレスを保持するのに加えて、ベースAおよびベー
スBアドレスレジスタは、AおよびBベースオフセット
と同一の読み出しサイクルで、A+1、B+1オフセッ
ト(すなわち、比較される次の2つのキーのオフセッ
ト)を記憶するようになっている。
×4ビットのオフセットアレイ1102、1104が備
えられ、これらは、図9のソート/マージユニットの例
のポインタアレイ702、704と連結される。図14
の符号語トーナメントツリーソートハードウェアはま
た、図9のAおよびBアドレスレジスタ706、708
を補うベースAおよびベースBアドレスレジスタ110
6、1109を含んでいる。現キーのためのオフセット
のアドレスを保持するのに加えて、ベースAおよびベー
スBアドレスレジスタは、AおよびBベースオフセット
と同一の読み出しサイクルで、A+1、B+1オフセッ
ト(すなわち、比較される次の2つのキーのオフセッ
ト)を記憶するようになっている。
【0187】AおよびBオフセットアドレスカウンタ1
110、1112は、比較されている現キーの符号語の
ためのオフセットアレイアドレスを含む。AおよびBオ
フセットアドレスカウンタ1110、1112には、ベ
ースAオフセットおよびベースBオフセットレジスタ1
106、1109からのベースキーアドレスがロードさ
れ、そして、複数の4倍長ワードから成るキーの4倍長
ワードサイズのセクションのオフセットを比較するため
に、一度に4倍長ワードアドレスずつインクリメントさ
れる。この特徴を使う理由は、キーを4倍長ワードより
大きくできる一方で、ワーキングストア312が4倍長
ワード単位でアクセスされるからである。
110、1112は、比較されている現キーの符号語の
ためのオフセットアレイアドレスを含む。AおよびBオ
フセットアドレスカウンタ1110、1112には、ベ
ースAオフセットおよびベースBオフセットレジスタ1
106、1109からのベースキーアドレスがロードさ
れ、そして、複数の4倍長ワードから成るキーの4倍長
ワードサイズのセクションのオフセットを比較するため
に、一度に4倍長ワードアドレスずつインクリメントさ
れる。この特徴を使う理由は、キーを4倍長ワードより
大きくできる一方で、ワーキングストア312が4倍長
ワード単位でアクセスされるからである。
【0188】AおよびBオフセットレジスタ1114、
1116は、比較されている現キー(4倍長ワードサイ
ズキーのセクション)のオフセットを含む。これらのオ
フセットは、2つのキーが相違しているかどうかの情報
をコントロールロジックに与える比較器1118によ
り、比較される。オフセットが等しくなければ、最も高
い方の値のオフセットが勝ちになり、キーを比較する必
要はなくなる。オフセットが等しければ、オフセットに
よってアドレスされた2つのキーの4倍長ワードが、勝
者を決定するために、比較される。もし、比較された2
つの4倍長ワードが等しければ(複数の4倍長ワードか
ら成るキー中で)、コントロールおよびシーケンスロジ
ック704は、対応するキーの次の2つの4倍長ワード
を比較させるために、AおよびBオフセットカウンタを
インクリメントする。対応する4倍長ワードキー比較が
勝者を決めるまで、シーケンスロジック704は、Aお
よびBオフセットカウンタをインクリメントし続ける。
1116は、比較されている現キー(4倍長ワードサイ
ズキーのセクション)のオフセットを含む。これらのオ
フセットは、2つのキーが相違しているかどうかの情報
をコントロールロジックに与える比較器1118によ
り、比較される。オフセットが等しくなければ、最も高
い方の値のオフセットが勝ちになり、キーを比較する必
要はなくなる。オフセットが等しければ、オフセットに
よってアドレスされた2つのキーの4倍長ワードが、勝
者を決定するために、比較される。もし、比較された2
つの4倍長ワードが等しければ(複数の4倍長ワードか
ら成るキー中で)、コントロールおよびシーケンスロジ
ック704は、対応するキーの次の2つの4倍長ワード
を比較させるために、AおよびBオフセットカウンタを
インクリメントする。対応する4倍長ワードキー比較が
勝者を決めるまで、シーケンスロジック704は、Aお
よびBオフセットカウンタをインクリメントし続ける。
【0189】図14の例もまた、2つのマルチビット加
算器1120、1122を含んでいる。加算器112
0、1122は、オフセットのポイントでキーが比較さ
れるように、AおよびBアドレスにオフセットを加算す
る。
算器1120、1122を含んでいる。加算器112
0、1122は、オフセットのポイントでキーが比較さ
れるように、AおよびBアドレスにオフセットを加算す
る。
【0190】h.ハッシュ発生器 ハッシュ発生器(DBHG)306は、8バイトのキー
を取り上げ、その内容から、ハッシュコードを作るハー
ドウェアエレメントである。ハッシュコードは、8つの
サブコードを付加することにより作られる9ビットの値
である。ハッシュコード発生器は、等結合処理のために
使われる。なぜなら、類似のキーが同じハッシュコード
値バケットにまとめられることになるからである。類似
のキーをバケットにまとめておくと、ソート/マージジ
ョインアルゴリズムは、ハッシュコードバケット毎に実
行する必要があるだけであるから、ハッシュコードジョ
インアルゴリズムは、前に検討したジョインアルゴリズ
ムの範囲を狭くする。ハッシングおよびハッシュコード
は、"THE ART OF COMPUTER PROGRAMMING, Volume 3, So
rting And Searching"、Donald E. Knuth 著、Addison-
Wesley PublishingCompany (1973 年) 中に、詳細に検
討されている。
を取り上げ、その内容から、ハッシュコードを作るハー
ドウェアエレメントである。ハッシュコードは、8つの
サブコードを付加することにより作られる9ビットの値
である。ハッシュコード発生器は、等結合処理のために
使われる。なぜなら、類似のキーが同じハッシュコード
値バケットにまとめられることになるからである。類似
のキーをバケットにまとめておくと、ソート/マージジ
ョインアルゴリズムは、ハッシュコードバケット毎に実
行する必要があるだけであるから、ハッシュコードジョ
インアルゴリズムは、前に検討したジョインアルゴリズ
ムの範囲を狭くする。ハッシングおよびハッシュコード
は、"THE ART OF COMPUTER PROGRAMMING, Volume 3, So
rting And Searching"、Donald E. Knuth 著、Addison-
Wesley PublishingCompany (1973 年) 中に、詳細に検
討されている。
【0191】等結合のハッシュコード機能を遂行するた
めには、各コードのバケットを作るために、両方のテー
ブルがハッシュされなければならない。バケットは、ハ
ッシングによって同じ値が生じるキーのグループであ
る。両方のテーブル中のキーのハッシングがなされる
と、両方のテーブルからの同じバケットがキーによりソ
ートされ、それから、前に検討したようなジョインがな
される。殆どの場合、テーブルのハッシングは、ワーキ
ングストア312のサイズより小さいハッシュコードバ
ケットを生じさせる結果となる。これらのテーブルは、
それから、それ以上のシステムメモリアクセスを行わず
に、WSにロードされ、ソートされ、ジョインされる。
このように、これらのハッシュコードバケットでは、ソ
ートのマージステップが必要とされないので、メモリ動
作の数が減る。等結合のパフォーマンスは、システムメ
モリアクセスの減少により、実質的に改善される。
めには、各コードのバケットを作るために、両方のテー
ブルがハッシュされなければならない。バケットは、ハ
ッシングによって同じ値が生じるキーのグループであ
る。両方のテーブル中のキーのハッシングがなされる
と、両方のテーブルからの同じバケットがキーによりソ
ートされ、それから、前に検討したようなジョインがな
される。殆どの場合、テーブルのハッシングは、ワーキ
ングストア312のサイズより小さいハッシュコードバ
ケットを生じさせる結果となる。これらのテーブルは、
それから、それ以上のシステムメモリアクセスを行わず
に、WSにロードされ、ソートされ、ジョインされる。
このように、これらのハッシュコードバケットでは、ソ
ートのマージステップが必要とされないので、メモリ動
作の数が減る。等結合のパフォーマンスは、システムメ
モリアクセスの減少により、実質的に改善される。
【0192】DBHGハードウェアは、図21を参照し
て説明される。DBHGハードウェアは、9ビットハッ
シュコード値の256×8ルックアップテーブル150
2と、8入力加算器1504とを含む。入力キー中の各
バイトに対して、256要素のコードアレイがある。レ
ジスタ1506に保持されている入力キーは、アレイ1
502をインデックスし、256コードのうちの1つを
選択させる。このようなやり方で生成された8コードの
合計が、このキーに対するハッシュコードバケット番号
とされる。キーはこのバケットに書き込まれ、そして、
それから、次のキーが読み出される。
て説明される。DBHGハードウェアは、9ビットハッ
シュコード値の256×8ルックアップテーブル150
2と、8入力加算器1504とを含む。入力キー中の各
バイトに対して、256要素のコードアレイがある。レ
ジスタ1506に保持されている入力キーは、アレイ1
502をインデックスし、256コードのうちの1つを
選択させる。このようなやり方で生成された8コードの
合計が、このキーに対するハッシュコードバケット番号
とされる。キーはこのバケットに書き込まれ、そして、
それから、次のキーが読み出される。
【0193】長いキーは、それを8バイト長のサブキー
に分割し、そして、各サブキーに対するハッシュコード
を作ることにより、処理される。全てのサブキーハッシ
ュコードは一緒に加算され、それにより最終ハッシュコ
ードが生成される。8バイトよりも長いキーに対処する
ために、ハッシュコード発生器306には、キーアドレ
スレジスタ1508、長さレジスタ1510、加算器1
512、および保管レジスタ1514が備えられる。ハ
ッシングの開始に先立って、保管レジスタ1514はゼ
ロに初期化され、そして、長さレジスタ1510には、
サブキー長(図21の例では8バイト)がロードされ
る。
に分割し、そして、各サブキーに対するハッシュコード
を作ることにより、処理される。全てのサブキーハッシ
ュコードは一緒に加算され、それにより最終ハッシュコ
ードが生成される。8バイトよりも長いキーに対処する
ために、ハッシュコード発生器306には、キーアドレ
スレジスタ1508、長さレジスタ1510、加算器1
512、および保管レジスタ1514が備えられる。ハ
ッシングの開始に先立って、保管レジスタ1514はゼ
ロに初期化され、そして、長さレジスタ1510には、
サブキー長(図21の例では8バイト)がロードされ
る。
【0194】キーをハッシュする時、そのベースワーキ
ングストアアドレスがキーアドレスレジスタ1508に
ロードされる。次いで、キーの最初の8バイトがキーレ
ジスタ1506にロードされる。結果のハッシュコード
は、保管レジスタ1514に保持される。キーの最初の
8バイト部分が生成されると、加算器1512により、
サブキー長がベースアドレスに加算され、次の8バイト
のサブキーがワーキングストア312から読み出され、
そして、処理される。この手続きは、8バイトの各サブ
キーのためのハッシュコードが生成されるまで、反復的
に行われる。
ングストアアドレスがキーアドレスレジスタ1508に
ロードされる。次いで、キーの最初の8バイトがキーレ
ジスタ1506にロードされる。結果のハッシュコード
は、保管レジスタ1514に保持される。キーの最初の
8バイト部分が生成されると、加算器1512により、
サブキー長がベースアドレスに加算され、次の8バイト
のサブキーがワーキングストア312から読み出され、
そして、処理される。この手続きは、8バイトの各サブ
キーのためのハッシュコードが生成されるまで、反復的
に行われる。
【0195】各サブキーからの結果ハッシュコードは、
発生の度に保管レジスタ1514において累積的に加算
される。サブキーの全てに対するハッシング動作の最後
では、保管レジスタ1514は、完全なキーのハッシュ
コードを保持することになる。
発生の度に保管レジスタ1514において累積的に加算
される。サブキーの全てに対するハッシング動作の最後
では、保管レジスタ1514は、完全なキーのハッシュ
コードを保持することになる。
【0196】両方のテーブルからのキーの全てがハッシ
ュコードバケットにまとめられると、各バケットは、ソ
ート/マージジョインアルゴリズムを使ってジョインさ
れる。
ュコードバケットにまとめられると、各バケットは、ソ
ート/マージジョインアルゴリズムを使ってジョインさ
れる。
【0197】これら全ての動作は、ハッシュコード発生
器306、エキストラクタ/メモリインターフェイスユ
ニット308、およびコントロールプロセッサ310に
より行われる。ハッシュコード発生器306は、256
のハッシュコードバケットおよび2つの入力テーブルに
対するマッピングを維持する。テーブルは、ブロックと
して読み込まれ、それから、ハッシュされ、そして、エ
キストラクタ/メモリインターフェイス308にバケッ
トおよびキーを与えることにより書き出される。エキス
トラクタ/メモリインターフェイスユニット308中の
マッピングテーブルは、バケットがシステムメモリ中の
どこにあるか、記憶が完了した時にどのように記憶位置
をインクリメントするかを追跡している。このように、
ハッシング動作全体は、コントロールプロセッサ310
の最小の介在で実現することができる。
器306、エキストラクタ/メモリインターフェイスユ
ニット308、およびコントロールプロセッサ310に
より行われる。ハッシュコード発生器306は、256
のハッシュコードバケットおよび2つの入力テーブルに
対するマッピングを維持する。テーブルは、ブロックと
して読み込まれ、それから、ハッシュされ、そして、エ
キストラクタ/メモリインターフェイス308にバケッ
トおよびキーを与えることにより書き出される。エキス
トラクタ/メモリインターフェイスユニット308中の
マッピングテーブルは、バケットがシステムメモリ中の
どこにあるか、記憶が完了した時にどのように記憶位置
をインクリメントするかを追跡している。このように、
ハッシング動作全体は、コントロールプロセッサ310
の最小の介在で実現することができる。
【0198】ハッシングが完了すると、コントロールプ
ロセッサ310は各バケットのソート/マージジョイン
を開始する。バケットの各ペア(同じハッシュコードを
持っている2つの入力テーブルのそれぞれから1つず
つ)は、システムメモリからワーキングストア312に
フェッチされ、それから、ソート/マージユニット30
2がセットアップされて、ソート/マージジョインを開
始する。ジョインされるテーブルは前のよりも小さい
が、ソート/マージジョインは、前のように実行され
る。
ロセッサ310は各バケットのソート/マージジョイン
を開始する。バケットの各ペア(同じハッシュコードを
持っている2つの入力テーブルのそれぞれから1つず
つ)は、システムメモリからワーキングストア312に
フェッチされ、それから、ソート/マージユニット30
2がセットアップされて、ソート/マージジョインを開
始する。ジョインされるテーブルは前のよりも小さい
が、ソート/マージジョインは、前のように実行され
る。
【0199】以下は、ハッシュジョインの動作のシーケ
ンスである。 1.テーブルAから1つのレコードブロックをフェッチ
する。 2.次のブロックがフェッチされている間に、前のブロ
ックをハッシュし、そして、各レコードを適切なハッシ
ュコードバケットに書き込む。 3.テーブルA全体がハッシュされるまで、ステップ1
および2を繰り返す。 4.テーブルBについてステップ1、2および3を行
う。 5.iをゼロにセットする。 6.HA(i)およびHB(i)に対しソート/マージ
ジョインアルゴリズムを実行する。 7.iを1だけインクリメントし、もしi<=256な
ら、ステップ6に戻る。 8.終了
ンスである。 1.テーブルAから1つのレコードブロックをフェッチ
する。 2.次のブロックがフェッチされている間に、前のブロ
ックをハッシュし、そして、各レコードを適切なハッシ
ュコードバケットに書き込む。 3.テーブルA全体がハッシュされるまで、ステップ1
および2を繰り返す。 4.テーブルBについてステップ1、2および3を行
う。 5.iをゼロにセットする。 6.HA(i)およびHB(i)に対しソート/マージ
ジョインアルゴリズムを実行する。 7.iを1だけインクリメントし、もしi<=256な
ら、ステップ6に戻る。 8.終了
【0200】i.エキストラクタ/メモリインターフェ
イスユニット エキストラクタ/メモリインターフェイスユニット(D
BEM)308(図3)は、システムメモリ(主記憶装
置410又はページ記憶装置412;図4)からデータ
をフェッチし、又はシステムメモリへデータを記憶する
データベースエンジンの構成要素である。エキストラク
タ/メモリインターフェイスユニット308は、2つの
主機能を持っている。フェッチ又は記憶されるデータを
構成するフィールドの抽出および組立てと、ソートおよ
びマージの操作の間に使われるレコードのリストのため
のマッピング情報の維持である。
イスユニット エキストラクタ/メモリインターフェイスユニット(D
BEM)308(図3)は、システムメモリ(主記憶装
置410又はページ記憶装置412;図4)からデータ
をフェッチし、又はシステムメモリへデータを記憶する
データベースエンジンの構成要素である。エキストラク
タ/メモリインターフェイスユニット308は、2つの
主機能を持っている。フェッチ又は記憶されるデータを
構成するフィールドの抽出および組立てと、ソートおよ
びマージの操作の間に使われるレコードのリストのため
のマッピング情報の維持である。
【0201】ソートやデータベースのアプリケーション
では、しばしば、サーチが定義されるソートキーあるい
はフィールドがレコード全体に広がり、操作を進める前
に、抽出によって使用可能なフォーマットにしなければ
ならない。ソートでは、これは、それぞれのキーフィー
ルドを得て順に連結し、1つの大きなキーとして取り扱
えるようにすることを意味する。データベース処理で
は、探索又は選択されているテーブルの列が処理可能な
ように行から抽出されなければならない。
では、しばしば、サーチが定義されるソートキーあるい
はフィールドがレコード全体に広がり、操作を進める前
に、抽出によって使用可能なフォーマットにしなければ
ならない。ソートでは、これは、それぞれのキーフィー
ルドを得て順に連結し、1つの大きなキーとして取り扱
えるようにすることを意味する。データベース処理で
は、探索又は選択されているテーブルの列が処理可能な
ように行から抽出されなければならない。
【0202】ソーティングおよびデータベース処理で
は、種々の理由から、フィールド抽出がなされる。これ
らの理由のいくつかを列挙する。
は、種々の理由から、フィールド抽出がなされる。これ
らの理由のいくつかを列挙する。
【0203】1.1次および2次のキーフィールドを1
つのキーに結合することによって、有効ソートキーを作
るため。
つのキーに結合することによって、有効ソートキーを作
るため。
【0204】2.ソート、サーチおよび出力生成で要求
されるフィールドのみが含まれるように、必要なフィー
ルドが抽出される。必要としないフィールドを取り去る
ことは、操作にメモリが使われているなら、メモリのト
ラフィックおよび容量の双方を減少する。
されるフィールドのみが含まれるように、必要なフィー
ルドが抽出される。必要としないフィールドを取り去る
ことは、操作にメモリが使われているなら、メモリのト
ラフィックおよび容量の双方を減少する。
【0205】3.パターンマッチングがより簡単に行う
ことができるように、フィールドのサブセットを選択す
るため。
ことができるように、フィールドのサブセットを選択す
るため。
【0206】4.処理の出力フェーズのためにフィール
ドを正しい順序にするため。これは、キー順序と相反す
るものになるかも知れないし、或いはサーチやソートそ
れ自身とは異なるセットのフィールドを必要とするかも
知れない。本質的には抽出機能と同じであるが、この機
能はフィールド組立てと呼ばれることもある。
ドを正しい順序にするため。これは、キー順序と相反す
るものになるかも知れないし、或いはサーチやソートそ
れ自身とは異なるセットのフィールドを必要とするかも
知れない。本質的には抽出機能と同じであるが、この機
能はフィールド組立てと呼ばれることもある。
【0207】多くの通常のソフトウェアアプリケーショ
ンでは、抽出機能は、一連の長移動命令MVCLにより
行われる。一般に、レコード中の抽出される各フィール
ド毎に1つのMVCLが実行される。フィールドは、実
際のサーチやソートを行う前に、全て抽出形式に集めら
れる。メモリアクセスの回数を考えると、全てのデータ
を移すのは効率的ではない。事前抽出メモリアクセスに
加えて、通常では、ソートやサーチの動作を行うため
に、抽出されたフィールドが再びフェッチされる。も
し、フィールドが1つの動作で抽出され、ソート(又は
サーチ)されることができたなら、パフォーマンスは著
しく改善されるであろう。なぜなら、メモリアクセスの
数が半分になるからである。
ンでは、抽出機能は、一連の長移動命令MVCLにより
行われる。一般に、レコード中の抽出される各フィール
ド毎に1つのMVCLが実行される。フィールドは、実
際のサーチやソートを行う前に、全て抽出形式に集めら
れる。メモリアクセスの回数を考えると、全てのデータ
を移すのは効率的ではない。事前抽出メモリアクセスに
加えて、通常では、ソートやサーチの動作を行うため
に、抽出されたフィールドが再びフェッチされる。も
し、フィールドが1つの動作で抽出され、ソート(又は
サーチ)されることができたなら、パフォーマンスは著
しく改善されるであろう。なぜなら、メモリアクセスの
数が半分になるからである。
【0208】DB2により作られたレコードからのデー
タを効率良く比較される形にするために、エキストラク
タ/メモリインターフェイスユニット308の抽出機能
は、フェッチされたフィールドをコンパクトな形に再配
列する。この抽出過程は、ワーキングストア312(図
3)において、フィールドを固定の長さおよびストライ
ドで位置決めさせる。
タを効率良く比較される形にするために、エキストラク
タ/メモリインターフェイスユニット308の抽出機能
は、フェッチされたフィールドをコンパクトな形に再配
列する。この抽出過程は、ワーキングストア312(図
3)において、フィールドを固定の長さおよびストライ
ドで位置決めさせる。
【0209】エキストラクタ/メモリインターフェイス
ユニット308のマッピング機能は、ワーキングストア
アドレス、長さ、カウントおよびシステムメモリアドレ
スを含む一組のエントリ(マッピングテーブル)を使
う。Nウェイのマージやソート動作の間にフェッチされ
る各リストは、マッピングテーブル中に1つのエントリ
を持っている。ソート/マージユニット302は、リス
トから新たなエントリを要求する時、そのエントリを持
っているリストのID番号をエキストラクタ/メモリイ
ンターフェイスユニット308に送る。エキストラクタ
/メモリインターフェイスユニット308は、このID
番号を取り上げ、そして、抽出情報を含めて、そのフィ
ールドをフェッチするのに必要な全ての情報を見つける
ために、マッピングテーブルを調べる。同じフォーマッ
トが出力レコードにも使用され、読み出し/書き込み
(R/W)フラグが転送方向に示す。
ユニット308のマッピング機能は、ワーキングストア
アドレス、長さ、カウントおよびシステムメモリアドレ
スを含む一組のエントリ(マッピングテーブル)を使
う。Nウェイのマージやソート動作の間にフェッチされ
る各リストは、マッピングテーブル中に1つのエントリ
を持っている。ソート/マージユニット302は、リス
トから新たなエントリを要求する時、そのエントリを持
っているリストのID番号をエキストラクタ/メモリイ
ンターフェイスユニット308に送る。エキストラクタ
/メモリインターフェイスユニット308は、このID
番号を取り上げ、そして、抽出情報を含めて、そのフィ
ールドをフェッチするのに必要な全ての情報を見つける
ために、マッピングテーブルを調べる。同じフォーマッ
トが出力レコードにも使用され、読み出し/書き込み
(R/W)フラグが転送方向に示す。
【0210】エキストラクタ/メモリインターフェイス
ユニットの構成および動作は、図22を参照することに
より、より理解されるであろう。エキストラクタ/メモ
リインターフェイスユニットは、メモリバッファ160
2、ワーキングストアバッファ1604、クロスポイン
トスイッチ1606、マッピングテーブル1608、お
よびシステムメモリバス322を介してシステムメモリ
(主記憶装置410およびページ記憶装置412;図
4)とインターフェイスしているメモリインターフェイ
ス1610を含んでいる。(メモリインターフェイス1
610を介して)システムメモリからフェッチされたレ
コードは、メモリバッファ1602にロードされ、そし
て、(クロスポイントスイッチ1606を介して)ワー
キングストアバッファ1604に一度に4倍長ワードず
つ書き込まれる。各4倍長ワードは、それから、処理の
ために、抽出されたフォーマットで、ワーキングストア
312(図3)に転送される。
ユニットの構成および動作は、図22を参照することに
より、より理解されるであろう。エキストラクタ/メモ
リインターフェイスユニットは、メモリバッファ160
2、ワーキングストアバッファ1604、クロスポイン
トスイッチ1606、マッピングテーブル1608、お
よびシステムメモリバス322を介してシステムメモリ
(主記憶装置410およびページ記憶装置412;図
4)とインターフェイスしているメモリインターフェイ
ス1610を含んでいる。(メモリインターフェイス1
610を介して)システムメモリからフェッチされたレ
コードは、メモリバッファ1602にロードされ、そし
て、(クロスポイントスイッチ1606を介して)ワー
キングストアバッファ1604に一度に4倍長ワードず
つ書き込まれる。各4倍長ワードは、それから、処理の
ために、抽出されたフォーマットで、ワーキングストア
312(図3)に転送される。
【0211】ワーキングストアからシステムメモリへの
動作においては、反対の処理が起こる。すなわち、クロ
スポイントスイッチ1606を使って、ワーキングスト
アバッファ1604からフィールドが組み立てられ、そ
して、システムメモリに書き込まれる。
動作においては、反対の処理が起こる。すなわち、クロ
スポイントスイッチ1606を使って、ワーキングスト
アバッファ1604からフィールドが組み立てられ、そ
して、システムメモリに書き込まれる。
【0212】マージ動作においては、マッピングテーブ
ル1608の各エントリは、コントロールプロセッサ3
10がフェッチ処理に関与する必要がないように、メイ
ンメモリ/ワーキングストアアドレス対、キー長さ、お
よびマージされている各リストのカウントを含む。ソー
ト/マージユニット302は、リストからもう1つの要
素を必要とする時、エキストラクタ/メモリインターフ
ェイスユニット308に(コントロールバス320,図
3、を介して)どのリストIDからのキーをフェッチす
るかの情報を与える。エキストラクタ/メモリインター
フェイスユニット308は、リストがメインメモリ中の
どこに記憶されていているかを決定し、それに従ってフ
ェッチするために、適当なマッピングテーブルエントリ
を読み出す。このフェッチ処理は、ワーキングストアア
クセスが必要とされる時に、ワーキングストア(WS)
バス316、318のサイクルスチールを行うことによ
り、ワーキングストア312を使って処理されているソ
ート/マージと同時に実行することができる。
ル1608の各エントリは、コントロールプロセッサ3
10がフェッチ処理に関与する必要がないように、メイ
ンメモリ/ワーキングストアアドレス対、キー長さ、お
よびマージされている各リストのカウントを含む。ソー
ト/マージユニット302は、リストからもう1つの要
素を必要とする時、エキストラクタ/メモリインターフ
ェイスユニット308に(コントロールバス320,図
3、を介して)どのリストIDからのキーをフェッチす
るかの情報を与える。エキストラクタ/メモリインター
フェイスユニット308は、リストがメインメモリ中の
どこに記憶されていているかを決定し、それに従ってフ
ェッチするために、適当なマッピングテーブルエントリ
を読み出す。このフェッチ処理は、ワーキングストアア
クセスが必要とされる時に、ワーキングストア(WS)
バス316、318のサイクルスチールを行うことによ
り、ワーキングストア312を使って処理されているソ
ート/マージと同時に実行することができる。
【0213】図23および図24は、エキストラクタ/
メモリインターフェイスユニット308の実施例のより
詳細な図である。前述のように、エキストラクタ/メモ
リインターフェイスユニット308は、マッピングテー
ブル1702を含む。マッピングテーブル1702(図
22のマッピングテーブル1608と対応する)は、シ
ステムメモリアドレスをワーキングストアアドレスにマ
ップする情報のテーブルである。マッピングテーブル1
702は、データベースエンジン300で処理される各
レコードについて1つのエントリを含む。マッピングテ
ーブル1702は、要求の開始時点でコントロールプロ
セッサ310によりロードされ、そして、レコードが転
送される毎に更新される。マッピングテーブル1702
は、必要に応じて、コントロールプロセッサ310によ
り、再ロードされる。
メモリインターフェイスユニット308の実施例のより
詳細な図である。前述のように、エキストラクタ/メモ
リインターフェイスユニット308は、マッピングテー
ブル1702を含む。マッピングテーブル1702(図
22のマッピングテーブル1608と対応する)は、シ
ステムメモリアドレスをワーキングストアアドレスにマ
ップする情報のテーブルである。マッピングテーブル1
702は、データベースエンジン300で処理される各
レコードについて1つのエントリを含む。マッピングテ
ーブル1702は、要求の開始時点でコントロールプロ
セッサ310によりロードされ、そして、レコードが転
送される毎に更新される。マッピングテーブル1702
は、必要に応じて、コントロールプロセッサ310によ
り、再ロードされる。
【0214】クロスポイントスイッチ1704(図22
のクロスポイントスイッチ1608と対応する)は、デ
ータ転送の間で、バイトの再配列を行う。クロスポイン
トスイッチ1704は、コントロールロジック1706
(後述する)の制御の下に、バイトをレコードに組み立
てる。
のクロスポイントスイッチ1608と対応する)は、デ
ータ転送の間で、バイトの再配列を行う。クロスポイン
トスイッチ1704は、コントロールロジック1706
(後述する)の制御の下に、バイトをレコードに組み立
てる。
【0215】要求待ち行列1708は、現在実行されて
いる転送が完了するまで、要求の転送を待機させる。要
求待ち行列1708は、データベースエンジン300中
の他の処理エレメントによりロードされ、そして、その
要求がエキストラクタ/メモリインターフェイスユニッ
ト308により処理される際に空にされる。要求待ち行
列1708の各要素は、マップテーブルエントリ識別番
号(ID)1710、要求されたレコードの数(A)1
712、および要求元に返されるリスト番号(L)17
14を含む。Fフィールド1716は、必要な時に、ス
テータスフラグのために使われる。
いる転送が完了するまで、要求の転送を待機させる。要
求待ち行列1708は、データベースエンジン300中
の他の処理エレメントによりロードされ、そして、その
要求がエキストラクタ/メモリインターフェイスユニッ
ト308により処理される際に空にされる。要求待ち行
列1708の各要素は、マップテーブルエントリ識別番
号(ID)1710、要求されたレコードの数(A)1
712、および要求元に返されるリスト番号(L)17
14を含む。Fフィールド1716は、必要な時に、ス
テータスフラグのために使われる。
【0216】メモリインターフェイス1718は、シス
テムメモリバス322とのインターフェイスと通信機能
とを備える。システムメモリ(主又はページ記憶装置)
から読み出された全てのデータ、又はシステムメモリに
書き込まれる全てのデータは、このエレメントを通過す
る。
テムメモリバス322とのインターフェイスと通信機能
とを備える。システムメモリ(主又はページ記憶装置)
から読み出された全てのデータ、又はシステムメモリに
書き込まれる全てのデータは、このエレメントを通過す
る。
【0217】マッピングテーブル入力レジスタ(MTI
R)1720は、マッピングテーブル1702のための
ステージングレジスタである。マッピングテーブル入力
レジスタ1720は、コントロールバス320から或い
は、レコード処理中に内部的にロードされる。
R)1720は、マッピングテーブル1702のための
ステージングレジスタである。マッピングテーブル入力
レジスタ1720は、コントロールバス320から或い
は、レコード処理中に内部的にロードされる。
【0218】マッピングテーブル出力レジスタ(MTO
R)1724は、現在処理されているマッピングテーブ
ルエントリを保持する。各エントリのレコードには、次
のものが含まれる。
R)1724は、現在処理されているマッピングテーブ
ルエントリを保持する。各エントリのレコードには、次
のものが含まれる。
【0219】a.処理されるレコードのシステムメモリ
アドレス(MA)。 b.処理される次のレコードを見つけるのに使われるシ
ステムメモリインクリメント(MI)。 c.レコード長(RL)。 d.レコードカウント(RC)、すなわち、このマッピ
ングテーブルエントリにより処理されるレコードの数。
レコードカウントは、ゼロになるまで、レコードが処理
される毎にデクリメントされる。ゼロになると、それ以
上のレコードはこのエントリにより処理されなくなる。
新たなエントリが処理を続けるために再ロードされなけ
ればならない。 e.ワーキングストアアドレス(WSA)、すなわち、
データが読み出し又は書き込みされるワーキングストア
312中のレコードのアドレス。 f.ワーキングストア312から読み出されるか又はそ
こに書き込まれる次のレコードを見つけるのに使われる
ワーキングストアインクリメント(WSI)。 g.処理オプションを示すフラグ(F)(望ましくは1
バイト)。 h.動作がシステムメモリの読み出しであるか(抽
出)、システムメモリに対する書き込みであるか(組立
て)を指定する読み出し/書き込みフラグ(R/W)。 i.クロスポイントスイッチを介して処理されるバイト
を指定する抽出マスク(EXM)。抽出マスク中のビッ
トは、クロスポイントのどのスイッチが付勢されるかを
示し、スイッチを介する任意のバイト間の接続を可能に
する。EXMフィールドは、クロスポイントスイッチ中
の各内部スイッチの接続状態を、デコーダ1725を介
して、コントロールする。 j.マッピングテーブルエントリが有効であることを示
す有効ビット(V)。ワーキングストアデータレジスタ
(WSD REG)1726は、ワーキングストアへ
の、およびワーキングストアからのデータをステージす
るのに使われる。ストレージバッファ(SBUF)17
28は、メモリ要求元への、およびメモリ要求元からの
データをステージするのに使われる。最後に、ワーキン
グストアアドレスレジスタ(WS ADR)1730
は、処理されている現ワーキングストアアドレス(モジ
ュロ8)を保持する。このアドレスは、加算器1732
を使って、EXC反復の度に1ずつインクリメントされ
る。
アドレス(MA)。 b.処理される次のレコードを見つけるのに使われるシ
ステムメモリインクリメント(MI)。 c.レコード長(RL)。 d.レコードカウント(RC)、すなわち、このマッピ
ングテーブルエントリにより処理されるレコードの数。
レコードカウントは、ゼロになるまで、レコードが処理
される毎にデクリメントされる。ゼロになると、それ以
上のレコードはこのエントリにより処理されなくなる。
新たなエントリが処理を続けるために再ロードされなけ
ればならない。 e.ワーキングストアアドレス(WSA)、すなわち、
データが読み出し又は書き込みされるワーキングストア
312中のレコードのアドレス。 f.ワーキングストア312から読み出されるか又はそ
こに書き込まれる次のレコードを見つけるのに使われる
ワーキングストアインクリメント(WSI)。 g.処理オプションを示すフラグ(F)(望ましくは1
バイト)。 h.動作がシステムメモリの読み出しであるか(抽
出)、システムメモリに対する書き込みであるか(組立
て)を指定する読み出し/書き込みフラグ(R/W)。 i.クロスポイントスイッチを介して処理されるバイト
を指定する抽出マスク(EXM)。抽出マスク中のビッ
トは、クロスポイントのどのスイッチが付勢されるかを
示し、スイッチを介する任意のバイト間の接続を可能に
する。EXMフィールドは、クロスポイントスイッチ中
の各内部スイッチの接続状態を、デコーダ1725を介
して、コントロールする。 j.マッピングテーブルエントリが有効であることを示
す有効ビット(V)。ワーキングストアデータレジスタ
(WSD REG)1726は、ワーキングストアへ
の、およびワーキングストアからのデータをステージす
るのに使われる。ストレージバッファ(SBUF)17
28は、メモリ要求元への、およびメモリ要求元からの
データをステージするのに使われる。最後に、ワーキン
グストアアドレスレジスタ(WS ADR)1730
は、処理されている現ワーキングストアアドレス(モジ
ュロ8)を保持する。このアドレスは、加算器1732
を使って、EXC反復の度に1ずつインクリメントされ
る。
【0220】カウンタ1731は、コントロールロジッ
ク1706の制御の下に、クロスポイントスイッチ17
04を介して再配列されている、ストレージバッファ1
728中の4倍長ワードを追跡し、選択する(SBUF
デコーダ1729を介して)。カウンタ1731の出力
は、選択された4倍長ワードに対する抽出マスクの適当
な部分を選択するように、クロスポイントスイッチデコ
ーダ1725に対するコントロール入力としても使われ
る。
ク1706の制御の下に、クロスポイントスイッチ17
04を介して再配列されている、ストレージバッファ1
728中の4倍長ワードを追跡し、選択する(SBUF
デコーダ1729を介して)。カウンタ1731の出力
は、選択された4倍長ワードに対する抽出マスクの適当
な部分を選択するように、クロスポイントスイッチデコ
ーダ1725に対するコントロール入力としても使われ
る。
【0221】コントロールロジック1706は、エキス
トラクタ/メモリインターフェイスユニット中の他の各
エレメントの動作をコントロールする。コントロールロ
ジック1706は、マイクロコード制御の下で走るマイ
クロプロセッサ、通常のマイクロシーケンサ、或いは特
定用途向け集積回路(ASIC)の形のハードワイヤド
ロジックとすることができる。
トラクタ/メモリインターフェイスユニット中の他の各
エレメントの動作をコントロールする。コントロールロ
ジック1706は、マイクロコード制御の下で走るマイ
クロプロセッサ、通常のマイクロシーケンサ、或いは特
定用途向け集積回路(ASIC)の形のハードワイヤド
ロジックとすることができる。
【0222】加算器1734〜1738は、マッピング
テーブル出力レジスタ1724にロードされたマッピン
グテーブルエントリ中の種々のフィールドを操作するた
めに備えられる。これらの操作は、メモリインクリメン
ト(MI)をメモリアドレス(MA)に加算すること、
レコードカウント(RC)をデクリメントすること、そ
して、ワーキングストアインクリメント(WSI)をワ
ーキンストアアドレスに加算することを含む。
テーブル出力レジスタ1724にロードされたマッピン
グテーブルエントリ中の種々のフィールドを操作するた
めに備えられる。これらの操作は、メモリインクリメン
ト(MI)をメモリアドレス(MA)に加算すること、
レコードカウント(RC)をデクリメントすること、そ
して、ワーキングストアインクリメント(WSI)をワ
ーキンストアアドレスに加算することを含む。
【0223】エキストラクタ/メモリインターフェイス
ユニットの動作は、図25、図26および27を参照す
ることにより説明される。図25、図26および図27
は、エキストラクタ/メモリインターフェイスユニット
の動作のフローチャートである。ここに記載された動作
は、コントロールロジック1706の制御の下に行われ
る。このフローチャート化されたアルゴリズムは、マイ
クロコード化されたプログラムやASICのコントロー
ルロジックの部分で実現可能とされる。
ユニットの動作は、図25、図26および27を参照す
ることにより説明される。図25、図26および図27
は、エキストラクタ/メモリインターフェイスユニット
の動作のフローチャートである。ここに記載された動作
は、コントロールロジック1706の制御の下に行われ
る。このフローチャート化されたアルゴリズムは、マイ
クロコード化されたプログラムやASICのコントロー
ルロジックの部分で実現可能とされる。
【0224】前述したように、要求がエキストラクタ/
メモリインターフェイスユニット308で処理される前
に、コントロールプロセッサ310は、所与のデータベ
ースコマンドを処理するのに必要なマッピングテーブル
エントリ情報をマッピングテーブル1702にロードす
る。マッピングテーブル1702は、コントロールバス
320およびマッピングテーブル入力レジスタ(MTI
R)1716を通って、コントロールプロセッサ310
によりロードされる。それぞれの抽出要求は、システム
メモリにある1グループのレコードに作用する。1つの
グループ中のレコードは、固定レコード長(RL)と、
それらの間の固定ストライドないしインクリメント(M
I)を持つと仮定される。同じように、レコードのアセ
ンブルされたグループは、固定のレコード長およびスト
ライドでもって、システムメモリに書き込まれる。
メモリインターフェイスユニット308で処理される前
に、コントロールプロセッサ310は、所与のデータベ
ースコマンドを処理するのに必要なマッピングテーブル
エントリ情報をマッピングテーブル1702にロードす
る。マッピングテーブル1702は、コントロールバス
320およびマッピングテーブル入力レジスタ(MTI
R)1716を通って、コントロールプロセッサ310
によりロードされる。それぞれの抽出要求は、システム
メモリにある1グループのレコードに作用する。1つの
グループ中のレコードは、固定レコード長(RL)と、
それらの間の固定ストライドないしインクリメント(M
I)を持つと仮定される。同じように、レコードのアセ
ンブルされたグループは、固定のレコード長およびスト
ライドでもって、システムメモリに書き込まれる。
【0225】抽出又は組立ての各要求のために、コント
ロールプロセッサ310は、マッピングテーブル170
2中の対応するエントリを識別するID番号を割り当
て、適当に読み出し/書き込みビットをセットする。コ
ントロールプロセッサ310は、与えられた抽出/組立
て要求をクロスポイントスイッチ1704に実行させる
ように、抽出マスク(XM)を構築し、ロードする。メ
モリアドレス(MA)、メモリインクリメント(M
I)、レコードカウント(RC)、レコード長(RL)
は、ホストプロセッサから受け取られたデータベースエ
ンジンコマンドブロックの一部としてコントロールプロ
セッサ310に与えられる。
ロールプロセッサ310は、マッピングテーブル170
2中の対応するエントリを識別するID番号を割り当
て、適当に読み出し/書き込みビットをセットする。コ
ントロールプロセッサ310は、与えられた抽出/組立
て要求をクロスポイントスイッチ1704に実行させる
ように、抽出マスク(XM)を構築し、ロードする。メ
モリアドレス(MA)、メモリインクリメント(M
I)、レコードカウント(RC)、レコード長(RL)
は、ホストプロセッサから受け取られたデータベースエ
ンジンコマンドブロックの一部としてコントロールプロ
セッサ310に与えられる。
【0226】抽出の場合、ワーキングストアアドレス
(WSA)およびワーキングストアインクリメント(W
SI)は、抽出されたレコードの長さと通常のメモリス
ペース割振り方法に基づいて、コントロールプロセッサ
により決定される。組立ての場合、ワーキングストアア
ドレスおよびインクリメントは、ワーキングストア31
12におけるレコードの実際の記憶位置とストライドか
ら決定される。
(WSA)およびワーキングストアインクリメント(W
SI)は、抽出されたレコードの長さと通常のメモリス
ペース割振り方法に基づいて、コントロールプロセッサ
により決定される。組立ての場合、ワーキングストアア
ドレスおよびインクリメントは、ワーキングストア31
12におけるレコードの実際の記憶位置とストライドか
ら決定される。
【0227】アイドル状態1802では、エキストラク
タ/メモリインターフェイスユニット308は、コント
ロールプロセッサ310が要求を要求待ち行列1708
に入れるのを待つ。コントロールロジック1706は、
要求が待ち行列1708に入ったことを確認すると、I
D1710を検査し、要求が有効かどうかを決定するた
めに、マッピングテーブル(これはコントロールプロセ
ッサ310により要求と共にエントリがロードされる)
中でIDに対応するエントリの有効ビット(V)を読む
(ステップ1804)。
タ/メモリインターフェイスユニット308は、コント
ロールプロセッサ310が要求を要求待ち行列1708
に入れるのを待つ。コントロールロジック1706は、
要求が待ち行列1708に入ったことを確認すると、I
D1710を検査し、要求が有効かどうかを決定するた
めに、マッピングテーブル(これはコントロールプロセ
ッサ310により要求と共にエントリがロードされる)
中でIDに対応するエントリの有効ビット(V)を読む
(ステップ1804)。
【0228】もし、有効ビットがセットされていなけれ
ば(V=0)、コントロールロジック1706は、コン
トロールプロセッサ310にエラーメッセージを送り
(ステップ1806)、レコードカウント加算器173
6を使ってレコードカウント(RC)をデクリメントす
る(ステップ1808)。コントロールロジック170
6は、それから、レコードカウントが0かどうかを判断
する(ステップ1810)。レコードカウントが0でな
ければ、コントロールロジック1706は、再びアイド
ル状態に入り(ステップ1802)、そして、次のレコ
ードを待つ。もし、レコードカウントが0なら、コント
ロールロジックは有効ビットを0にリセットし(ステッ
プ1812)、コントロールプロセッサ310に終了メ
ッセージを送り、そして、次の要求を待つために、アイ
ドル状態に入る(ステップ1802)。ステップ181
2で有効ビットが0にリセットされるのは、ポイントA
からこのアルゴリズムに入った場合に備えるためであ
る。
ば(V=0)、コントロールロジック1706は、コン
トロールプロセッサ310にエラーメッセージを送り
(ステップ1806)、レコードカウント加算器173
6を使ってレコードカウント(RC)をデクリメントす
る(ステップ1808)。コントロールロジック170
6は、それから、レコードカウントが0かどうかを判断
する(ステップ1810)。レコードカウントが0でな
ければ、コントロールロジック1706は、再びアイド
ル状態に入り(ステップ1802)、そして、次のレコ
ードを待つ。もし、レコードカウントが0なら、コント
ロールロジックは有効ビットを0にリセットし(ステッ
プ1812)、コントロールプロセッサ310に終了メ
ッセージを送り、そして、次の要求を待つために、アイ
ドル状態に入る(ステップ1802)。ステップ181
2で有効ビットが0にリセットされるのは、ポイントA
からこのアルゴリズムに入った場合に備えるためであ
る。
【0229】もし、有効ビットがセット(V=1)され
ていると、要求が読み出し(抽出)か書き込み(組立
て)かを判断するために、コントロールロジック170
6はエントリのR/Wビットを読む(ステップ180
6)。
ていると、要求が読み出し(抽出)か書き込み(組立
て)かを判断するために、コントロールロジック170
6はエントリのR/Wビットを読む(ステップ180
6)。
【0230】もし、要求が書き込みなら、エキストラク
タ/メモリインターフェイスユニット308は、組立て
処理を開始する。この処理の第1のステップとして、コ
ントロールロジック1706は、iカウンタ1731に
ゼロの初期値をロードする(ステップ1818)。それ
から、マッピングテーブル出力レジスタ1724にある
エントリ(これは要求のIDに対応するエントリであ
る)からのワーキングストアアドレス(WSA)が、ワ
ーキングストアアドレスレジスタ(WS ADR)17
30にロードされる(ステップ1820)。これが終わ
ると、ワーキングストアアドレス(レジスタ1730に
保持されている)からのワーキングストアデータがワー
キングストアデータレジスタ(WSD REG)172
6にロードされる(ステップ1822)。それから、コ
ントロールロジック1706はクロスポイントスイッチ
1704をセットアップする。
タ/メモリインターフェイスユニット308は、組立て
処理を開始する。この処理の第1のステップとして、コ
ントロールロジック1706は、iカウンタ1731に
ゼロの初期値をロードする(ステップ1818)。それ
から、マッピングテーブル出力レジスタ1724にある
エントリ(これは要求のIDに対応するエントリであ
る)からのワーキングストアアドレス(WSA)が、ワ
ーキングストアアドレスレジスタ(WS ADR)17
30にロードされる(ステップ1820)。これが終わ
ると、ワーキングストアアドレス(レジスタ1730に
保持されている)からのワーキングストアデータがワー
キングストアデータレジスタ(WSD REG)172
6にロードされる(ステップ1822)。それから、コ
ントロールロジック1706はクロスポイントスイッチ
1704をセットアップする。
【0231】クロスポイントスイッチ1704は、マッ
ピングテーブル出力レジスタ1724中の抽出マスクフ
ィールド(EXM)によりセットアップされる(ステッ
プ1824)。抽出マスクは、レコードの各4倍長ワー
ドに対応するセクションを持っている。それぞれのセク
ションは、iカウンタでマスクをインデックスすること
により、個々にアクセスされる。所与の4倍長ワードの
ためのマスクセクションがデコードされ、そのデコード
値がクロスポイントスイッチをセットアップする。
ピングテーブル出力レジスタ1724中の抽出マスクフ
ィールド(EXM)によりセットアップされる(ステッ
プ1824)。抽出マスクは、レコードの各4倍長ワー
ドに対応するセクションを持っている。それぞれのセク
ションは、iカウンタでマスクをインデックスすること
により、個々にアクセスされる。所与の4倍長ワードの
ためのマスクセクションがデコードされ、そのデコード
値がクロスポイントスイッチをセットアップする。
【0232】クロスポイントスイッチ1704が所望の
接続にセットアップされたら、ワーキングストアデータ
レジスタ(WSD REG)1728からのデータが、
ストアバッファ(SBUF)1728にアセンブルされ
る(ステップ1826)。iカウンタ1731がそれか
らインクリメントされ(ステップ1828)、そして、
当該レコード中に処理される必要がある4倍長ワードが
残っているかどうかを判断するために、iカウンタの値
(すなわち、4倍長ワード カウント)がマッピングテ
ーブル出力レジスタ1724中のレコード長(RL)と
比較される(ステップ1830)。
接続にセットアップされたら、ワーキングストアデータ
レジスタ(WSD REG)1728からのデータが、
ストアバッファ(SBUF)1728にアセンブルされ
る(ステップ1826)。iカウンタ1731がそれか
らインクリメントされ(ステップ1828)、そして、
当該レコード中に処理される必要がある4倍長ワードが
残っているかどうかを判断するために、iカウンタの値
(すなわち、4倍長ワード カウント)がマッピングテ
ーブル出力レジスタ1724中のレコード長(RL)と
比較される(ステップ1830)。
【0233】もし、処理される4倍長ワードがあるな
ら、コントロールロジック1706は、それぞれの4倍
長ワードに対して、ステップ1820〜1830のシー
ケンスを繰り返す。もし、処理される4倍長ワードがな
ければ、コントロールロジック1706は、マッピング
テーブル出力レジスタ1724から、レコードID、メ
モリアドレス(MA)、レコード長(RL)、および読
み出し/書き込みコントロールビット(R/W)を与え
て、メモリ要求元(MR)1718を初期化する(ステ
ップ1832)。初期化されると、メモリインターフェ
イス1718は、システムメモリアドレスMAを開始ア
ドレスとする、システムメモリへのRL4倍長ワードの
書き込みを要求する(ステップ1834)。メモリアド
レスMAは、それから、アドレス加算器1734を用い
て、メモリインクリメント(MI)によりインクリメン
トされ、更新されたMAを持つエントリがマッピングテ
ーブル入力レジスタ1716を介してマッピングテーブ
ル1702に書き込まれる。更新されたエントリは、要
求IDの下で、処理される次のレコードの処理の準備の
ために、マッピングテーブル1702に書き込まれる
(ステップ1836)。
ら、コントロールロジック1706は、それぞれの4倍
長ワードに対して、ステップ1820〜1830のシー
ケンスを繰り返す。もし、処理される4倍長ワードがな
ければ、コントロールロジック1706は、マッピング
テーブル出力レジスタ1724から、レコードID、メ
モリアドレス(MA)、レコード長(RL)、および読
み出し/書き込みコントロールビット(R/W)を与え
て、メモリ要求元(MR)1718を初期化する(ステ
ップ1832)。初期化されると、メモリインターフェ
イス1718は、システムメモリアドレスMAを開始ア
ドレスとする、システムメモリへのRL4倍長ワードの
書き込みを要求する(ステップ1834)。メモリアド
レスMAは、それから、アドレス加算器1734を用い
て、メモリインクリメント(MI)によりインクリメン
トされ、更新されたMAを持つエントリがマッピングテ
ーブル入力レジスタ1716を介してマッピングテーブ
ル1702に書き込まれる。更新されたエントリは、要
求IDの下で、処理される次のレコードの処理の準備の
ために、マッピングテーブル1702に書き込まれる
(ステップ1836)。
【0234】マッピングテーブル中のエントリが次のレ
コードのためにセットアップされると、コントロールロ
ジック1706は、アイドルループ(ステップ183
8)に入り、メモリ要求が完了したことを示す信号がホ
ストシステムからメモリ要求元1718を介して送られ
てくるのを待つ。コントロールロジック1706は、要
求完了信号を受け取ると、メモリ要求元をリセットし
(ステップ1840)、そして、ポイントAで再びこの
アルゴリズムに入る。
コードのためにセットアップされると、コントロールロ
ジック1706は、アイドルループ(ステップ183
8)に入り、メモリ要求が完了したことを示す信号がホ
ストシステムからメモリ要求元1718を介して送られ
てくるのを待つ。コントロールロジック1706は、要
求完了信号を受け取ると、メモリ要求元をリセットし
(ステップ1840)、そして、ポイントAで再びこの
アルゴリズムに入る。
【0235】読み出し要求(抽出)は、書き込み要求
(組立て)とは逆の手順で扱われる。要求が読み出しで
あることを判断すると(ステップ1816)、コントロ
ールプロセッサは、レコードID、メモリアドレス(M
A)、レコード長(RL)、および読み出し/書き込み
ビット(R/W)でメモリインターフェイス(MR)を
初期化する(ステップ1842)。メモリインターフェ
イスは、それから、メモリアドレスMAを開始アドレス
とする、システムメモリからのRL4倍長ワードの読み
出しを要求する。次のレコードの処理の準備のために、
メモリインクリメント(MI)がメモリアドレスに加算
され、そして、更新されたエントリがマッピングテーブ
ルに再び書き込まれる(ステップ1846)。次に、コ
ントロールロジック1706はアイドルループに入り、
メモリ要求が完了するのを待つ(ステップ1848)。
(組立て)とは逆の手順で扱われる。要求が読み出しで
あることを判断すると(ステップ1816)、コントロ
ールプロセッサは、レコードID、メモリアドレス(M
A)、レコード長(RL)、および読み出し/書き込み
ビット(R/W)でメモリインターフェイス(MR)を
初期化する(ステップ1842)。メモリインターフェ
イスは、それから、メモリアドレスMAを開始アドレス
とする、システムメモリからのRL4倍長ワードの読み
出しを要求する。次のレコードの処理の準備のために、
メモリインクリメント(MI)がメモリアドレスに加算
され、そして、更新されたエントリがマッピングテーブ
ルに再び書き込まれる(ステップ1846)。次に、コ
ントロールロジック1706はアイドルループに入り、
メモリ要求が完了するのを待つ(ステップ1848)。
【0236】メモリ要求が完了したことを知らされる
と、コントロールロジック1706は、ストアバッファ
(SBUF)1728にメモリインターフェイス(M
R)1718から受け取ったデータをロードし、そし
て、iカウンタ1731をゼロにリセットする(ステッ
プ1850)。コントロールロジック1706は、それ
から、ステップ1824で述べたのと同じような手順
で、抽出マスク(EXM)でクロスポイントスイッチを
セットアップする(ステップ1852)。ストアバッフ
ァ1728からの4倍長ワードは、クロスポイントスイ
ッチ1704を介してワーキングストアデータレジスタ
(WSD REG)1726に抽出される(ステップ1
854)。
と、コントロールロジック1706は、ストアバッファ
(SBUF)1728にメモリインターフェイス(M
R)1718から受け取ったデータをロードし、そし
て、iカウンタ1731をゼロにリセットする(ステッ
プ1850)。コントロールロジック1706は、それ
から、ステップ1824で述べたのと同じような手順
で、抽出マスク(EXM)でクロスポイントスイッチを
セットアップする(ステップ1852)。ストアバッフ
ァ1728からの4倍長ワードは、クロスポイントスイ
ッチ1704を介してワーキングストアデータレジスタ
(WSD REG)1726に抽出される(ステップ1
854)。
【0237】ワーキングストアデータレジスタ1726
に抽出されたレコードデータはワーキングストア312
(図3)に書き込まれる。これは、ワーキングストアア
ドレス(WSA)をマッピングテーブル出力レジスタ1
724からワーキングストアアドレスレジスタ(WS
ADR)1730に書き込み(ステップ1856)、こ
のアドレスWSAを用いて、ワーキングストアデータを
WSDレジスタ1726からワーキングストア312に
書き込む(ステップ1858)ことによりなし遂げられ
る。
に抽出されたレコードデータはワーキングストア312
(図3)に書き込まれる。これは、ワーキングストアア
ドレス(WSA)をマッピングテーブル出力レジスタ1
724からワーキングストアアドレスレジスタ(WS
ADR)1730に書き込み(ステップ1856)、こ
のアドレスWSAを用いて、ワーキングストアデータを
WSDレジスタ1726からワーキングストア312に
書き込む(ステップ1858)ことによりなし遂げられ
る。
【0238】最初の4倍長ワードがワーキングストア3
12に書き込まれると、コントロールロジック1706
は、レコード中の次の4倍長ワードに備えて、エキスト
ラクタ/メモリインターフェイスユニットをセットアッ
プする。WSアドレス加算器1732を使うことで、ワ
ーキングストアアドレスは、ワーキングストアインクリ
メントWSI(典型的には4倍長ワード)によりインク
リメントされ、そして、更新されたエントリがマッピン
グテーブル1702に書かれる(ステップ1860)。
更に、iカウンタの値が1だけインクリメントされる
(ステップ1862)。もし、iカウンタの値がまだマ
ッピングテーブル出力レジスタ1724中のレコード長
(RL)と等しくなければ(ステップ1864で判断さ
れる)、ステップ1852〜1864が、残りの4倍長
ワード分繰り返される。もし、レコード中の全ての4倍
長ワードが処理されたら、コントロールロジックは、メ
モリ要求元1718をリセットし(ステップ186
6)、そして、次のレコードの処理に備えて、ポイント
Aから再び、このアルゴリズムに入る。
12に書き込まれると、コントロールロジック1706
は、レコード中の次の4倍長ワードに備えて、エキスト
ラクタ/メモリインターフェイスユニットをセットアッ
プする。WSアドレス加算器1732を使うことで、ワ
ーキングストアアドレスは、ワーキングストアインクリ
メントWSI(典型的には4倍長ワード)によりインク
リメントされ、そして、更新されたエントリがマッピン
グテーブル1702に書かれる(ステップ1860)。
更に、iカウンタの値が1だけインクリメントされる
(ステップ1862)。もし、iカウンタの値がまだマ
ッピングテーブル出力レジスタ1724中のレコード長
(RL)と等しくなければ(ステップ1864で判断さ
れる)、ステップ1852〜1864が、残りの4倍長
ワード分繰り返される。もし、レコード中の全ての4倍
長ワードが処理されたら、コントロールロジックは、メ
モリ要求元1718をリセットし(ステップ186
6)、そして、次のレコードの処理に備えて、ポイント
Aから再び、このアルゴリズムに入る。
【0239】j.拡張及び改良 データベースエンジンのソーティング性能は、データベ
ースエンジンハードウェアに対していくつかの修正をす
ることで、より一層改良できるであろう。
ースエンジンハードウェアに対していくつかの修正をす
ることで、より一層改良できるであろう。
【0240】まず、ワーキングストア312は、フェッ
チ動作を同時に行える4つの分離した記憶ブロックに区
分することができる。4つの比較器と、4組のポインタ
アレイをもつソートエンジンを用いると、同時に4つの
キーブロックをソートすることができる。もし、比較器
が4ウェイ比較器なら、つまり、4つのキーが比較さ
れ、そのうちの1つのキーが勝者とされるなら、このエ
ンジンは、1クロックサイクルで、16個のキーを比較
し、そして、4つの勝者を生成することができる。それ
ぞれの比較器とその関連するポインタアレイは、そのワ
ーキングストア区画にあるキーの4ウェイマージソート
を行う。エンジンの1つを介した最後のパス(ソートさ
れた4つのブロックの4ウェイマージ)は、キーの単一
整列リストを生成する。図31は、4パイプ、4ウェイ
比較器ソートエンジンのブロック図である。
チ動作を同時に行える4つの分離した記憶ブロックに区
分することができる。4つの比較器と、4組のポインタ
アレイをもつソートエンジンを用いると、同時に4つの
キーブロックをソートすることができる。もし、比較器
が4ウェイ比較器なら、つまり、4つのキーが比較さ
れ、そのうちの1つのキーが勝者とされるなら、このエ
ンジンは、1クロックサイクルで、16個のキーを比較
し、そして、4つの勝者を生成することができる。それ
ぞれの比較器とその関連するポインタアレイは、そのワ
ーキングストア区画にあるキーの4ウェイマージソート
を行う。エンジンの1つを介した最後のパス(ソートさ
れた4つのブロックの4ウェイマージ)は、キーの単一
整列リストを生成する。図31は、4パイプ、4ウェイ
比較器ソートエンジンのブロック図である。
【0241】図28で示したように、ソート/マージユ
ニットのソートエンジンは、フロントバックマージを行
うように修正することもできる。これはソート/マージ
ユニットエンジンの2分マージ性能を効率的に2倍にす
る。これは、ポインタアレイ1902〜1908および
キー比較器1912の2重化を必要とする。比較器およ
びポインタアレイの一方のセットはリストの始めから開
始して昇順でマージするように初期化される。他方のセ
ットは、リストの終わりから開始して降順でマージする
ように初期化される。このハードウェアは、通常のソー
トエンジンの半分の時間でワーキングストア312の並
列2分マージソートを行える。
ニットのソートエンジンは、フロントバックマージを行
うように修正することもできる。これはソート/マージ
ユニットエンジンの2分マージ性能を効率的に2倍にす
る。これは、ポインタアレイ1902〜1908および
キー比較器1912の2重化を必要とする。比較器およ
びポインタアレイの一方のセットはリストの始めから開
始して昇順でマージするように初期化される。他方のセ
ットは、リストの終わりから開始して降順でマージする
ように初期化される。このハードウェアは、通常のソー
トエンジンの半分の時間でワーキングストア312の並
列2分マージソートを行える。
【0242】ここで述べたように、ソート処理のマージ
パスは、キーのNウェイマージを行うことにより改善さ
れる。ワーキングストア312は、常に、技術的な制約
により、サイズに限界があるので、ソートエンジンは、
ワーキングストアの大きさのキーブロックをソートし、
それをシステムメモリに書き込まなければならない。全
てのブロックがソートされると、最後のマージパスでキ
ーの1つの整列リストが作成される。16ウェイマージ
は、2ウェイ比較器と、ポインタおよびオフセット(コ
ードワード)のツリーとから実現できる。2ウェイ比較
器なので、ツリーの深さは4階層となり、マージは長く
ても4サイクル毎に結果を生成する。より効果的な方法
は、図29で示されるように、4ウェイ比較器を使っ
て、5つの4ウェイ比較器2002〜2010から1つ
の16ウェイマージツリーを作ることである。このよう
なツリーは、2サイクル毎に1つの結果を生成する。こ
のように、N個のキーを含む16個のリストは、2×1
6×N=32Nサイクル(最小)でマージすることがで
きる。2ウェイ比較器および16ウェイマージの場合
は、4×16×N=64Nサイクルかかる。
パスは、キーのNウェイマージを行うことにより改善さ
れる。ワーキングストア312は、常に、技術的な制約
により、サイズに限界があるので、ソートエンジンは、
ワーキングストアの大きさのキーブロックをソートし、
それをシステムメモリに書き込まなければならない。全
てのブロックがソートされると、最後のマージパスでキ
ーの1つの整列リストが作成される。16ウェイマージ
は、2ウェイ比較器と、ポインタおよびオフセット(コ
ードワード)のツリーとから実現できる。2ウェイ比較
器なので、ツリーの深さは4階層となり、マージは長く
ても4サイクル毎に結果を生成する。より効果的な方法
は、図29で示されるように、4ウェイ比較器を使っ
て、5つの4ウェイ比較器2002〜2010から1つ
の16ウェイマージツリーを作ることである。このよう
なツリーは、2サイクル毎に1つの結果を生成する。こ
のように、N個のキーを含む16個のリストは、2×1
6×N=32Nサイクル(最小)でマージすることがで
きる。2ウェイ比較器および16ウェイマージの場合
は、4×16×N=64Nサイクルかかる。
【0243】図30は、勝利キーの代わりに、4つの入
力キーに対するポインタの順序付けられたリストを生成
する4ウェイ比較器2102を示している。出力は、入
力ワードを昇順にも降順にも順序付けする4つの2ビッ
トポインタである。ソート/マージユニット(DBM)
302で使われるようなポインタアレイとコントロール
ロジックを付加すると、出力は、ポインタアレイの更新
(1サイクル当たり4つのポインタを再配列)を制御す
るのに用いることができる。従って、図9および図14
の実施例では1サイクル当たり1つのキーであるが、こ
こでは、4つのキーを1サイクルでソートすることがで
きる。この技術は、データを部分的に事前ソートするこ
とによって、2分マージソートの性能を改善する。従っ
て、この2分マージソートは、4のリスト長(図12及
び図13中のp)で開始でき、データを介する2つのパ
スを削減している。
力キーに対するポインタの順序付けられたリストを生成
する4ウェイ比較器2102を示している。出力は、入
力ワードを昇順にも降順にも順序付けする4つの2ビッ
トポインタである。ソート/マージユニット(DBM)
302で使われるようなポインタアレイとコントロール
ロジックを付加すると、出力は、ポインタアレイの更新
(1サイクル当たり4つのポインタを再配列)を制御す
るのに用いることができる。従って、図9および図14
の実施例では1サイクル当たり1つのキーであるが、こ
こでは、4つのキーを1サイクルでソートすることがで
きる。この技術は、データを部分的に事前ソートするこ
とによって、2分マージソートの性能を改善する。従っ
て、この2分マージソートは、4のリスト長(図12及
び図13中のp)で開始でき、データを介する2つのパ
スを削減している。
【0244】
【発明の効果】この発明によれば、機能レベル並列化を
利用してデータベース動作の全体的な処理速度を従来技
術によるデータベース処理装置により達成されるもの以
上に高めることができる。また、システムメモリの帯域
幅速度において又はその近傍でデータベース動作を処理
することができる。更に、付加処理装置環境において、
従来のソフトウェアデータベース処理プログラムにより
生成されるコマンドリストを処理することができる。
利用してデータベース動作の全体的な処理速度を従来技
術によるデータベース処理装置により達成されるもの以
上に高めることができる。また、システムメモリの帯域
幅速度において又はその近傍でデータベース動作を処理
することができる。更に、付加処理装置環境において、
従来のソフトウェアデータベース処理プログラムにより
生成されるコマンドリストを処理することができる。
【図1】従来技術によるソートプロセッサシステムのブ
ロック図である。
ロック図である。
【図2】従来技術によるデータベース管理システムのブ
ロック図である。
ロック図である。
【図3】この発明の好ましい一実施例によるデータベー
ス処理装置の総括ブロック図である。
ス処理装置の総括ブロック図である。
【図4】ページングメモリおよびメインメモリを有する
コンピュータシステムへの図3のデータベース処理装置
の論理接続を示すブロック図である。
コンピュータシステムへの図3のデータベース処理装置
の論理接続を示すブロック図である。
【図5】図3のコントロールプロセッサの一実施例を示
す図の上半分である。
す図の上半分である。
【図6】図3のコントロールプロセッサの一実施例を示
す図の下半分である。
す図の下半分である。
【図7】図3の述語評価器(DBPE)の一実施例を示
す図の上半分である。
す図の上半分である。
【図8】図3の述語評価器(DBPE)の一実施例を示
す図の下半分である。
す図の下半分である。
【図9】図3のソート/マージユニットの一実施例およ
びこのソート/マージユニットと図3のワーキングスト
アとの相互作用を示す図である。
びこのソート/マージユニットと図3のワーキングスト
アとの相互作用を示す図である。
【図10】ブロックソートの一例を示す図である。
【図11】図9のソート/マージユニットを用いたブロ
ックソートの間のワーキングストアおよびポインタアレ
イの状態を示す図である。
ックソートの間のワーキングストアおよびポインタアレ
イの状態を示す図である。
【図12】図3のソート/マージユニット(DBSM)
により用いられる2分ソート/マージアルゴリズムのフ
ローチャートの上半分である。
により用いられる2分ソート/マージアルゴリズムのフ
ローチャートの上半分である。
【図13】図9のソート/マージユニット(DBSM)
により用いられる2分ソート/マージアルゴリズムのフ
ローチャートの下半分である。
により用いられる2分ソート/マージアルゴリズムのフ
ローチャートの下半分である。
【図14】トーナメントツリー符号語技術をインプリメ
ントする図9のソート/マージユニットへのハードウエ
アの付加を示す図である。
ントする図9のソート/マージユニットへのハードウエ
アの付加を示す図である。
【図15】従来のトーナメントツリーを示す図である。
【図16】図9のワーキングストアにインプリメントさ
れたトーナメントツリー及びポインタアレイの状態を示
す図である。
れたトーナメントツリー及びポインタアレイの状態を示
す図である。
【図17】図9のワーキングストアにインプリメントさ
れたトーナメントツリー及びポインタアレイの状態を示
す図である。
れたトーナメントツリー及びポインタアレイの状態を示
す図である。
【図18】図9のワーキングストアにインプリメントさ
れたトーナメントツリー及びポインタアレイの状態を示
す図である。
れたトーナメントツリー及びポインタアレイの状態を示
す図である。
【図19】図14の付加的なハードウエアを用いてイン
プリメントされた符号語技術を用いたソートアルゴリズ
ムのフローチャートである。
プリメントされた符号語技術を用いたソートアルゴリズ
ムのフローチャートである。
【図20】図14の付加的なハードウエアを用いてイン
プリメントされた符号語技術を用いたソートアルゴリズ
ムのフローチャートである。
プリメントされた符号語技術を用いたソートアルゴリズ
ムのフローチャートである。
【図21】図3のハッシュコード生成器(DBHG)の
構造を示すより詳細な図である。
構造を示すより詳細な図である。
【図22】図3のエキストラクタ/メモリ・インターフ
ェイスユニット(DBEM)のブロック図である。
ェイスユニット(DBEM)のブロック図である。
【図23】図3および図22のエキストラクタ/メモリ
・インターフェイスユニット(DBEM)の構造を示す
より詳細な図の上半分を示す図である。
・インターフェイスユニット(DBEM)の構造を示す
より詳細な図の上半分を示す図である。
【図24】図3および図22のエキストラクタ/メモリ
・インターフェイスユニット(DBEM)の構造を示す
より詳細な図の下半分である。
・インターフェイスユニット(DBEM)の構造を示す
より詳細な図の下半分である。
【図25】図23および図24のDBEMの動作のフロ
ーチャートである。
ーチャートである。
【図26】図23および図24のDBEMの動作のフロ
ーチャートである。
ーチャートである。
【図27】図23および図24のDBEMの動作のフロ
ーチャートである。
ーチャートである。
【図28】フロントバックマージを実行するように改良
されたDBSMのブロック図である。
されたDBSMのブロック図である。
【図29】4ウェイ比較器を有する16ウェイマージツ
リーのブロック図である。
リーのブロック図である。
【図30】4入力キーに対するポインタの順序づけられ
たリストを作成するための4ウェイマージソート比較器
の図である。
たリストを作成するための4ウェイマージソート比較器
の図である。
【図31】4パイプ、4ウェイ比較器ソートエンジンの
図である。
図である。
300 データベースエンジン 302 ソート/マージユニット 304 述語評価器 306 ハッシュコード発生器 308 エキストラクタ/メモリインターフェイスユニ
ット 310 コントロールプロセッサ 312 ワーキングストア
ット 310 コントロールプロセッサ 312 ワーキングストア
フロントページの続き (72)発明者 グレン・アラン・ブレント アメリカ合衆国、ニユーヨーク州フイツシ ユキル、ウオードプレイス55 (72)発明者 ドナルド・ヘンダーソン・ギブソン アメリカ合衆国、ニユーヨーク州ソールト ポイント、レプレシヨーンレイン、アール デイー ナンバーワン、ボツクス387 (72)発明者 デビツド・ブルース・リンドキスト アメリカ合衆国、ニユーヨーク州ポキプシ ー、ヒリステラス106
Claims (18)
- 【請求項1】 コンピュータシステムからデータベース
コマンドを受け取り、システムメモリにアクセスし、上
記システムメモリから処理すべきデータを抽出するため
のエキストラクタ手段と、 上記エキストラクタ手段に接続された、上記処理すべき
データを一時的に記憶するためのローカルメモリ手段
と、 上記エキストラクタ手段および上記ローカルメモリ手段
に接続された、データベース処理機能を自律的に実行す
るための複数の処理エレメント手段と、 上記エキストラクタ手段に接続された、上記処理すべき
データ中のデータベースコマンドを識別し、上記データ
ベースコマンドを部分機能に分解し、上記部分機能を上
記処理エレメントに分散させるためのコントロールプロ
セッサ手段とを有するデータベース処理装置。 - 【請求項2】 内部コントロールバスと、 内部データバスと、 上記内部コントロールバスおよび上記内部データバスと
通信するコントロールプロセッサと、 上記内部データバスと通信する内部メモリと、 上記内部コントロールバスおよび上記内部データバスと
通信するシステムメモリインターフェイスと、 上記内部コントロールバスおよび上記内部データバスと
通信するハッシュ手段と、 上記内部コントロールバスおよび上記内部データバスと
通信する述語評価器と、 上記内部コントロールバスおよび上記内部データバスと
通信するソート/マージユニットとを有し、 上記ソート/マージユニット、上記述語評価器および上
記ハッシュ手段は上記コントロールプロセッサからのコ
マンドに応答するデータベース処理装置。 - 【請求項3】 上記ソート/マージユニットはトーナメ
ントツリー符号語ソートを実行するための手段を有する
請求項2記載のデータベース処理装置。 - 【請求項4】 上記システムメモリインターフェイスは
コンピュータシステムのページングメモリに接続され、
上記システムメモリインターフェイスは上記ページング
メモリに記憶されたデータを直接アドレスするための手
段を更に有する請求項2記載のデータベース処理装置。 - 【請求項5】 ホストシステムのシステムメモリに記憶
されたデータベースレコードを、上記システムメモリに
記憶され、データベース処理プログラムにより生成され
たデータベース処理コマンドに応答して処理するための
付加処理装置であって、 制御情報を伝送するための第1のバス手段と、 データを伝送するための第2のバス手段と、 上記システムメモリ、上記第1のバス手段および上記第
2のバス手段と通信する、上記システムメモリから上記
レコードおよび上記コマンドを抽出するためのエキスト
ラクタ手段と、 上記第1のバス手段および上記第2のバス手段と通信す
る、上記コマンドに応答して上記第1のバス手段に制御
情報を供給するための制御手段と、 上記第1のバス手段および上記第2のバス手段と通信す
る、上記制御手段に応答してサーチ照会を処理するため
のサーチ手段と、 上記第1のバス手段および上記第2のバス手段と通信す
る、上記制御手段に応答して上記データベースレコード
上でソートおよびマージ動作を実行するためのソート手
段と、 上記制御手段に応答し、上記第1のバス手段および上記
第2のバス手段と通信する、上記データベース処理コマ
ンド中に設けられたキーからハッシュコードを発生する
ためのハッシュコード発生手段と、 上記第2のバス手段と通信する、一時的に内部データを
記憶するためのメモリ手段とを有することを特徴とする
付加処理装置。 - 【請求項6】 上記ソート手段は上記データベースレコ
ードのトーナメントツリー符号語ソートを実行するため
の符号語ツリー手段を有する請求項5記載の付加処理装
置。 - 【請求項7】 上記システムメモリは上記ホストシステ
ムに接続されたページングメモリを有し、上記エキスト
ラクタ手段は上記ページングメモリに直接アクセスする
ための手段を有する請求項5記載の付加処理装置。 - 【請求項8】 上記ページングメモリはマルチポートで
あり、上記エキストラクタ手段は上記ページングメモリ
の1つのポートに接続されたデータおよびアドレスバス
を有する請求項7記載の付加処理装置。 - 【請求項9】 上記ソート手段は上記データベースレコ
ードのフロントバックマージを実行するための手段を有
する請求項5記載の付加処理装置。 - 【請求項10】 上記ソート手段は上記データベースレ
コードの4ウェイマージ/ソートを実行するための手段
を有する請求項5記載の付加処理装置。 - 【請求項11】 中央処理装置と、 ページアドレス可能なデータを記憶するためのページ記
憶手段と、 上記中央処理装置および上記ページ記憶手段に接続され
た、直接アドレス可能なデータを記憶するための主記憶
手段と、 上記中央処理装置の介在なしに上記ページアドレス可能
なデータにアクセスするためのインターフェイス手段を
有する、上記ページ記憶手段に接続されたデータベース
処理装置とを有するコンピュータシステム。 - 【請求項12】 制御装置、ワーキングメモリおよび独
立に制御可能な複数の処理エレメントを有する処理装置
においてリレーショナルデータベース機能を実行する方
法であって、 (a) ホストコンピュータのシステムメモリから、デ
ータベースコマンドと、上記データベースコマンドの処
理中に用いるべき述語の上記システムメモリにおける記
憶位置とをフェッチする段階と、 (b) 上記データベースコマンドを、実行すべき所定
のデータベース処理動作のシーケンスに分解する段階
と、 (c) 段階(b)で識別された上記データベース処理
動作のそれぞれを実行するために上記処理エレメントを
選択する段階と、 (d) 上記選択された処理エレメントを上記ホストコ
ンピュータと独立に制御して、所定のデータベース動作
の上記シーケンスを実行する段階と、 (e) 上記ワーキングメモリに段階(d)の実行結果
を一時的に収集する段階と、 (f) 段階(e)で収集された上記結果を上記システ
ムメモリにアセンブルする段階と を有することを特徴とする方法。 - 【請求項13】 (g) 上記システムメモリにおける
上記記憶位置から上記述語を読み出す段階と、 (h) 上記制御装置に述語評価命令を生成させる段階
と、 (i) 上記複数の処理エレメントのうちのあらかじめ
選択された1つの処理エレメントに上記述語評価命令を
ロードする段階と、 (j) 上記あらかじめ選択された1つの処理エレメン
トに、上記述語評価命令に従って上記述語を処理させる
段階と を更に有する請求項12記載の方法。 - 【請求項14】 外部処理装置から述語評価プログラム
を受け取って記憶するための命令テーブル手段と、 上記命令テーブル手段に接続された、実行すべき命令を
上記命令テーブル手段から受け取るための命令レジスタ
手段と、 上記命令レジスタ手段に接続された命令制御手段に接続
された、上記述語評価プログラムに従って動作シーケン
スを制御するための内部処理装置手段と、 上記命令レジスタ手段に接続された、述語評価照会が解
決されたときを決定し、上記内部処理装置手段に、上記
照会を処理するための上記述語評価プログラムの命令の
分岐を行わせるための分岐手段と、 上記述語評価プログラムの処理中にデータを一時的に保
持するためのスタックと、 上記内部処理装置手段に接続された、上記スタックの先
頭からの第1の値をワーキングストアから得られる第2
の値と比較するための比較手段とを有する、述語評価を
実行するための装置。 - 【請求項15】 複数のデータベースレコードに対応し
た複数のエントリを有し、上記複数のエントリのそれぞ
れが各上記データベースレコード中の少なくとも1つの
フィールドを示す抽出ビットマスクと、 第1のメモリにおける上記データベースレコードの第1
のアドレスと、 第2のメモリにおける第2のアドレスとを有するマッピ
ングテーブル手段と、 上記マッピングテーブル手段に接続された、上記第1の
メモリの上記第1のアドレスから上記複数のデータベー
スレコードのうちの1つのデータベースレコードを読み
出すためのメモリ要求手段と、 上記メモリ要求手段に接続された、上記1つのデータベ
ースを記憶するための第1の記憶手段と、 上記第1の記憶手段および上記マッピングテーブル手段
に接続された、上記抽出ビットマスクに応答して上記1
つのデータベースレコードからデータを抽出するための
クロスポイントスイッチ手段と、 上記クロスポイントスイッチ手段に接続された、上記ク
ロスポイントスイッチ手段から抽出されたデータを受け
取り、上記データを上記第2のメモリの上記第2のアド
レスに書き込むための第2の記憶手段とを有するデータ
ベースフィールドエキストラクタ。 - 【請求項16】 第1の処理装置から抽出要求を受け取
り、待機させるための要求待ち行列手段と、 上記要求待ち行列手段および上記マッピングテーブル手
段に接続された、上記要求待ち行列手段から1つの抽出
要求を読み出し、上記1つの抽出要求中で識別されたデ
ータベースレコードに対応した上記マッピングテーブル
手段の1つのエントリをアドレスするための制御手段と
を更に有し、 上記マッピングテーブル手段は上記制御手段によりアド
レスされた上記エントリを受け取るための第3の記憶手
段を更に有し、上記クロスポイントスイッチ手段は上記
第3の記憶手段によって上記マッピングテーブル手段に
接続されている請求項15記載のデータベースフィール
ドエキストラクタ。 - 【請求項17】 システムメモリを有するホストコンピ
ュータに用いるためのデータベースフィールドエキスト
ラクタであって、 複数のデータベースレコードに対応した複数のエントリ
を有し、上記複数のエントリのそれぞれが各上記データ
ベースレコード中の少なくとも1つのデータフィールド
を示す抽出ビットマスクを保持するための制御フィール
ドと、 第1のメモリにおける第1のアドレスを保持するための
第1のアドレスフィールドと、 上記システムメモリにおける第2のアドレスを保持する
ための第2のアドレスフィールドとを有するマッピング
テーブルと、 第1のバッファと、 第2のバッファと、 上記第1のバッファおよび上記第2のバッファに接続さ
れた、上記抽出ビットマスクを受け取るように上記マッ
ピングテーブルに接続された制御入力を有するクロスポ
イントスイッチとを有することを特徴とするデータベー
スフィールドエキストラクタ。 - 【請求項18】 複数のキーをソートおよびマージする
ための装置であって、 独立におよび同時にアクセス可能な第1および第2のア
ドレス可能な領域を有する、上記複数のキーをそれぞれ
のメモリアドレスに記憶するための第1のメモリアレイ
手段と、 上記複数のキーのメモリアドレスを記憶するための第2
のメモリアレイ手段と、 上記複数のキーのメモリアドレスを記憶するための第3
のメモリアレイ手段と、 上記第2および第3のメモリアレイ手段を交互に書き込
み可能とするための書き込み手段と、 上記第1のメモリアレイ手段に接続された、上記第1の
アドレス可能な領域からの第1のキーを上記第2のアド
レス可能な領域からの第2のキーと比較するための比較
手段と、 上記第1のメモリアレイ手段、上記第2のメモリアレイ
手段、上記第3のメモリアレイ手段、上記書き込み手
段、カウンタ手段および上記比較手段に接続された、上
記第2および第3のメモリアレイ手段のうちの書き込み
可能とされていない一方から第1および第2のキーの第
1および第2のアドレスを読み出し、上記第1のメモリ
アレイ手段の上記第1および第2の領域を上記第1およ
び第2のアドレスでアドレスし、上記比較手段によるキ
ーの比較に応答して上記第2および第3のメモリアレイ
手段のうちの書き込み可能とされた方に勝利キーを書き
込むための制御手段とを有することを特徴とする装置。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US499844 | 1990-03-27 | ||
| US07/499,844 US5210870A (en) | 1990-03-27 | 1990-03-27 | Database sort and merge apparatus with multiple memory arrays having alternating access |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH05128164A true JPH05128164A (ja) | 1993-05-25 |
Family
ID=23986972
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP3065358A Pending JPH05128164A (ja) | 1990-03-27 | 1991-03-07 | データベース処理装置 |
Country Status (3)
| Country | Link |
|---|---|
| US (8) | US5210870A (ja) |
| EP (1) | EP0449096A3 (ja) |
| JP (1) | JPH05128164A (ja) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2002041551A (ja) * | 2000-07-31 | 2002-02-08 | Taabo Data Laboratory Kk | データのコンパイル方法、および、コンパイル方法を記憶した記憶媒体 |
| WO2010013320A1 (ja) * | 2008-07-30 | 2010-02-04 | 株式会社ターボデータラボラトリー | 表形式データを操作する方法、分散メモリ型マルチプロセッサ、及び、プログラム |
| CN111061760A (zh) * | 2019-10-30 | 2020-04-24 | 中科驭数(北京)科技有限公司 | 关系型数据库管理系统中的窗口聚合方法、查询方法及装置 |
| JP2021072107A (ja) * | 2019-10-29 | 2021-05-06 | 三星電子株式会社Samsung Electronics Co.,Ltd. | ストレージ周辺の階層的ソート加速のためのストレージシステム及び方法 |
Families Citing this family (168)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5283893A (en) * | 1990-04-24 | 1994-02-01 | Rolm Company | Method for sorting objects in a sequentially addressed array |
| US5515523A (en) * | 1991-06-03 | 1996-05-07 | Digital Equipment Corporation | Method and apparatus for arbitrating conflicts by monitoring number of access requests per unit of time in multiport memory systems |
| US5410689A (en) * | 1991-06-13 | 1995-04-25 | Kabushiki Kaisha Toshiba | System for merge sorting that assigns an optical memory capacity to concurrent sort cells |
| JPH077422B2 (ja) * | 1991-08-23 | 1995-01-30 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータ処理データベース・システムにおけるジョインの実行方法及びシステム |
| US5355478A (en) * | 1991-12-23 | 1994-10-11 | International Business Machines Corporation | Method for avoiding cache misses during external tournament tree replacement sorting procedures |
| US5521835A (en) * | 1992-03-27 | 1996-05-28 | Xilinx, Inc. | Method for programming an FPLD using a library-based technology mapping algorithm |
| US5581751A (en) * | 1992-09-22 | 1996-12-03 | Mitsubishi Denki Kabushiki Kaisha | Key extraction apparatus and a key extraction method |
| US5542087A (en) * | 1993-10-15 | 1996-07-30 | Hewlett-Packard Company | Linear hashing for distributed records |
| JP3352786B2 (ja) * | 1993-11-01 | 2002-12-03 | 三菱電機株式会社 | プロセッサ回路 |
| JPH09507109A (ja) * | 1993-11-02 | 1997-07-15 | パラコム コーポレイション | コンピュータデータベースに関するトランザクションの処理を促進させるための装置 |
| US5742806A (en) * | 1994-01-31 | 1998-04-21 | Sun Microsystems, Inc. | Apparatus and method for decomposing database queries for database management system including multiprocessor digital data processing system |
| CA2137488C (en) * | 1994-02-18 | 1998-09-29 | Richard I. Baum | Coexecuting method and means for performing parallel processing in conventional types of data processing systems |
| US5727200A (en) * | 1994-03-07 | 1998-03-10 | Nippon Steel Corporation | Parallel merge sorting apparatus with an accelerated section |
| US5497486A (en) * | 1994-03-15 | 1996-03-05 | Salvatore J. Stolfo | Method of merging large databases in parallel |
| JPH07253991A (ja) * | 1994-03-16 | 1995-10-03 | Mitsubishi Electric Corp | ジョイン処理方式 |
| US5487166A (en) * | 1994-09-19 | 1996-01-23 | Amdahl Corporation | Computer with two-dimensional merge tournament sort using offset-value coding |
| US5613110A (en) * | 1995-01-05 | 1997-03-18 | International Business Machines Corporation | Indexing method and apparatus facilitating a binary search of digital data |
| EP0809831B1 (en) * | 1995-02-13 | 1999-06-09 | BRITISH TELECOMMUNICATIONS public limited company | A method for building a telecommunications network database |
| US5784712A (en) * | 1995-03-01 | 1998-07-21 | Unisys Corporation | Method and apparatus for locally generating addressing information for a memory access |
| JP3518034B2 (ja) * | 1995-03-30 | 2004-04-12 | 三菱電機株式会社 | ソート方法並びにソート処理装置並びにデータ処理装置 |
| US5734885A (en) * | 1995-08-24 | 1998-03-31 | International Business Machines Corporation | System and method for tightly coupling application programs with relational databases |
| US5668987A (en) * | 1995-08-31 | 1997-09-16 | Sybase, Inc. | Database system with subquery optimizer |
| US6311184B1 (en) * | 1995-10-06 | 2001-10-30 | International Business Machines Corporation | Sort and merge functions with input and output procedures |
| US5758353A (en) * | 1995-12-01 | 1998-05-26 | Sand Technology Systems International, Inc. | Storage and retrieval of ordered sets of keys in a compact 0-complete tree |
| US6427147B1 (en) | 1995-12-01 | 2002-07-30 | Sand Technology Systems International | Deletion of ordered sets of keys in a compact O-complete tree |
| US5737265A (en) * | 1995-12-14 | 1998-04-07 | Intel Corporation | Programming flash memory using data stream analysis |
| US5852826A (en) * | 1996-01-26 | 1998-12-22 | Sequent Computer Systems, Inc. | Parallel merge sort method and apparatus |
| US5752028A (en) * | 1996-04-03 | 1998-05-12 | Ellacott; Bruce Arthur | Object-oriented query mechanism |
| US5899997A (en) * | 1996-04-03 | 1999-05-04 | Transparency Systems, Inc. | Object-oriented query mechanism |
| US5978794A (en) * | 1996-04-09 | 1999-11-02 | International Business Machines Corporation | Method and system for performing spatial similarity joins on high-dimensional points |
| US5893088A (en) * | 1996-04-10 | 1999-04-06 | Altera Corporation | System and method for performing database query using a marker table |
| US5799210A (en) | 1996-04-18 | 1998-08-25 | Oracle Corporation | Method for allocating either private or shared buffer memory for storing data from sort operations in accordance with an assigned value or threshold value |
| US6098081A (en) * | 1996-05-06 | 2000-08-01 | Microsoft Corporation | Hypermedia navigation using soft hyperlinks |
| US6148376A (en) | 1996-05-10 | 2000-11-14 | Apple Computer, Inc. | Method and apparatus for an improved stack arrangement and operations thereon |
| US5696961A (en) * | 1996-05-22 | 1997-12-09 | Wang Laboratories, Inc. | Multiple database access server for application programs |
| US6238738B1 (en) * | 1996-08-13 | 2001-05-29 | Libbey-Owens-Ford Co. | Method for depositing titanium oxide coatings on flat glass |
| FI104594B (fi) * | 1996-08-29 | 2000-02-29 | Nokia Networks Oy | Tapahtumien tallettaminen palvelutietokantajärjestelmässä |
| US6038620A (en) * | 1996-09-09 | 2000-03-14 | International Business Machines Corporation | Method and system for optimal high speed match in a high performance controller which ensures an input/output interface stays ahead of a host interface |
| US5764905A (en) * | 1996-09-09 | 1998-06-09 | Ncr Corporation | Method, system and computer program product for synchronizing the flushing of parallel nodes database segments through shared disk tokens |
| US6009271A (en) * | 1996-10-28 | 1999-12-28 | Bmc Software, Inc. | Method of retrieving data from a relational database |
| US5950188A (en) * | 1996-11-14 | 1999-09-07 | Sybase, Inc. | Database system with methods for executing system-created internal SQL command statements |
| US5937401A (en) * | 1996-11-27 | 1999-08-10 | Sybase, Inc. | Database system with improved methods for filtering duplicates from a tuple stream |
| US5960431A (en) * | 1996-12-19 | 1999-09-28 | International Business Machines Corporation | Method and apparatus for adding data storage bins to a stored computer database while minimizing movement of data and balancing data distribution |
| US5987453A (en) * | 1997-04-07 | 1999-11-16 | Informix Software, Inc. | Method and apparatus for performing a join query in a database system |
| US6115705A (en) * | 1997-05-19 | 2000-09-05 | Microsoft Corporation | Relational database system and method for query processing using early aggregation |
| US6792212B1 (en) * | 1997-06-17 | 2004-09-14 | The Boeing Company | Spacecraft data acquisition and distribution interface |
| US6282541B1 (en) * | 1997-07-28 | 2001-08-28 | International Business Machines Corporation | Efficient groupby aggregation in tournament tree sort |
| US6341281B1 (en) | 1998-04-14 | 2002-01-22 | Sybase, Inc. | Database system with methods for optimizing performance of correlated subqueries by reusing invariant results of operator tree |
| US6272486B1 (en) * | 1998-04-16 | 2001-08-07 | International Business Machines Corporation | Determining the optimal number of tasks for building a database index |
| AU3646899A (en) * | 1998-04-20 | 1999-11-08 | Recursion Dynamics Inc. | Dynamically configurable data storage and processing system optimized for performing database operations |
| US6026487A (en) * | 1998-04-28 | 2000-02-15 | Intel Corporation | Computer program product and method for efficiently selecting one action from among alternative actions |
| US6253194B1 (en) * | 1998-06-16 | 2001-06-26 | Microsoft Corporation | System and method for performing database queries using a stack machine |
| JP3344559B2 (ja) * | 1998-06-19 | 2002-11-11 | 三菱電機株式会社 | マージソート処理装置 |
| US6212612B1 (en) * | 1998-07-15 | 2001-04-03 | Intelect Communications Inc. | System and method for synchronized, multi-channel data management with dynamically configurable routing |
| US6253197B1 (en) * | 1998-10-06 | 2001-06-26 | International Business Machines Corporation | System and method for hash loops join of data using outer join and early-out join |
| US6473777B1 (en) | 1998-10-30 | 2002-10-29 | National Semiconductor Corporation | Method for accelerating java virtual machine bytecode verification, just-in-time compilation and garbage collection by using a dedicated co-processor |
| US6427148B1 (en) | 1998-11-09 | 2002-07-30 | Compaq Computer Corporation | Method and apparatus for parallel sorting using parallel selection/partitioning |
| GB2389211B (en) * | 1998-12-31 | 2004-02-04 | Intel Corp | A method and apparatus for improved predicate prediction |
| US6367004B1 (en) * | 1998-12-31 | 2002-04-02 | Intel Corporation | Method and apparatus for predicting a predicate based on historical information and the least significant bits of operands to be compared |
| US6081799A (en) * | 1999-05-05 | 2000-06-27 | International Business Machines Corporation | Executing complex SQL queries using index screening for conjunct or disjunct index operations |
| JP2001027951A (ja) * | 1999-07-14 | 2001-01-30 | Fujitsu Ltd | マルチプロセッサ構成の情報処理システムにおけるファイルロード装置と記録媒体 |
| US7644366B1 (en) * | 1999-07-30 | 2010-01-05 | Computer Associates Think, Inc. | Method and system for displaying a plurality of discrete files in a compound file |
| US6842758B1 (en) | 1999-07-30 | 2005-01-11 | Computer Associates Think, Inc. | Modular method and system for performing database queries |
| US6581054B1 (en) | 1999-07-30 | 2003-06-17 | Computer Associates Think, Inc. | Dynamic query model and method |
| US6574729B1 (en) * | 1999-08-26 | 2003-06-03 | Lucent Technologies Inc. | System for remotely identifying and providing information of unknown software on remote network node by comparing the unknown software with software audit file maintained on server |
| WO2001016702A1 (en) | 1999-09-01 | 2001-03-08 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
| US6308178B1 (en) * | 1999-10-21 | 2001-10-23 | Darc Corporation | System for integrating data among heterogeneous systems |
| JP3640580B2 (ja) * | 1999-11-11 | 2005-04-20 | 富士通株式会社 | ソート・マージ処理装置 |
| AUPQ498500A0 (en) * | 2000-01-07 | 2000-02-03 | Flixco Pty Limited | Information system |
| AU2001243463A1 (en) | 2000-03-10 | 2001-09-24 | Arc International Plc | Memory interface and method of interfacing between functional entities |
| US6588008B1 (en) | 2000-04-11 | 2003-07-01 | International Business Machines Corporation | Assembler tool for processor-coprocessor computer systems |
| US6580953B1 (en) * | 2000-06-14 | 2003-06-17 | Vansco Electronics Ltd. | Electrical control apparatus including retrievable stored operationing program |
| US7681018B2 (en) * | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
| FI116871B (fi) * | 2000-09-18 | 2006-03-15 | Portalify Oy | Tiedonvälitysjärjestelmä, menetelmä tiedon välittämiseksi, palvelutuote sekä palvelutuotteen käyttö |
| DE10106340A1 (de) * | 2001-02-09 | 2002-08-29 | Europ Lab Molekularbiolog | Schaltung zur Verarbeitung von Daten |
| US7003512B1 (en) * | 2001-06-20 | 2006-02-21 | Microstrategy, Inc. | System and method for multiple pass cooperative processing |
| US6820073B1 (en) | 2001-06-20 | 2004-11-16 | Microstrategy Inc. | System and method for multiple pass cooperative processing |
| US6859798B1 (en) | 2001-06-20 | 2005-02-22 | Microstrategy, Inc. | Intelligence server system |
| US7020699B2 (en) * | 2001-09-11 | 2006-03-28 | Sun Microsystems, Inc. | Test result analyzer in a distributed processing framework system and methods for implementing the same |
| US6993622B2 (en) * | 2001-10-31 | 2006-01-31 | Netlogic Microsystems, Inc. | Bit level programming interface in a content addressable memory |
| US7210003B2 (en) * | 2001-10-31 | 2007-04-24 | Netlogic Microsystems, Inc. | Comparand generation in a content addressable memory |
| US7237058B2 (en) * | 2002-01-14 | 2007-06-26 | Netlogic Microsystems, Inc. | Input data selection for content addressable memory |
| US20030158944A1 (en) * | 2002-02-19 | 2003-08-21 | International Business Machines Corporation | Software control in a business transaction environment |
| US8438392B2 (en) | 2002-06-20 | 2013-05-07 | Krimmeni Technologies, Inc. | Method and system for control of code execution on a general purpose computing device and control of code execution in a recursive security protocol |
| US7203844B1 (en) | 2002-06-20 | 2007-04-10 | Oxford William V | Method and system for a recursive security protocol for digital copyright control |
| US6598044B1 (en) * | 2002-06-25 | 2003-07-22 | Microsoft Corporation | Method for choosing optimal query execution plan for multiple defined equivalent query expressions |
| US20040107203A1 (en) * | 2002-12-03 | 2004-06-03 | Lockheed Martin Corporation | Architecture for a data cleansing application |
| US7146360B2 (en) * | 2002-12-18 | 2006-12-05 | International Business Machines Corporation | Method and system for improving response time for database query execution |
| US7827282B2 (en) * | 2003-01-08 | 2010-11-02 | At&T Intellectual Property I, L.P. | System and method for processing hardware or service usage data |
| US7080060B2 (en) * | 2003-01-08 | 2006-07-18 | Sbc Properties, L.P. | System and method for intelligent data caching |
| US20040162822A1 (en) * | 2003-02-13 | 2004-08-19 | Khachatur Papanyan | Method and apparatus for converting in-line database queries to stored procedures |
| US7206784B2 (en) * | 2003-05-28 | 2007-04-17 | Oracle International Corporation | Method and apparatus for performing multiple merge operations using source data that is modified in between the merge operations |
| US9946779B2 (en) * | 2003-05-28 | 2018-04-17 | Oracle International Corporation | Pipleline merge operations using source data and multiple destination data structures |
| US7222123B2 (en) * | 2003-05-28 | 2007-05-22 | Oracle International Corporation | Technique for using a current lookup for performing multiple merge operations using source data that is modified in between the merge operations |
| US7370042B2 (en) * | 2003-06-30 | 2008-05-06 | Grondalski Robert S | Method and system for the architecture and implementation of a conscious machine |
| US20060018142A1 (en) * | 2003-08-11 | 2006-01-26 | Varadarajan Srinivasan | Concurrent searching of different tables within a content addressable memory |
| US7471827B2 (en) | 2003-10-16 | 2008-12-30 | Microsoft Corporation | Automatic browsing path generation to present image areas with high attention value as a function of space and time |
| US7536696B2 (en) * | 2003-10-24 | 2009-05-19 | Microsoft Corporation | Mechanism for handling input parameters |
| WO2005064487A1 (ja) * | 2003-12-25 | 2005-07-14 | Shinji Furusho | 分散メモリ型情報処理システム |
| US7792824B2 (en) * | 2004-01-08 | 2010-09-07 | International Business Machines Corporation | Apparatus and method for enabling parallel processing of a computer program using existing database parallelism |
| US7315600B2 (en) * | 2004-03-30 | 2008-01-01 | Arm Limited | Asynchronous FIFO apparatus and method for passing data between a first clock domain and a second clock domain and a second clock domain of a data processing apparatus |
| US20060010423A1 (en) * | 2004-07-08 | 2006-01-12 | Microsoft Corporation | Variable namespaces and scoping for variables in an object model |
| US8214799B2 (en) * | 2004-07-08 | 2012-07-03 | Microsoft Corporation | Providing information to an isolated hosted object via system-created variable objects |
| US7415473B2 (en) * | 2004-09-30 | 2008-08-19 | Sap Ag | Multi-dimensional set object |
| US7861253B1 (en) | 2004-11-12 | 2010-12-28 | Microstrategy, Inc. | Systems and methods for accessing a business intelligence system through a business productivity client |
| US7061804B2 (en) * | 2004-11-18 | 2006-06-13 | Qualcomm Incorporated | Robust and high-speed memory access with adaptive interface timing |
| US8761659B1 (en) | 2005-02-11 | 2014-06-24 | Microstrategy, Inc. | Integration of e-learning with business intelligence system |
| US8365240B2 (en) | 2005-04-18 | 2013-01-29 | Research In Motion Limited | Method for providing wireless application privilege management |
| US20060288030A1 (en) * | 2005-06-09 | 2006-12-21 | Ramon Lawrence | Early hash join |
| US7613669B2 (en) * | 2005-08-19 | 2009-11-03 | Electronics And Telecommunications Research Institute | Method and apparatus for storing pattern matching data and pattern matching method using the same |
| US8984033B2 (en) * | 2005-09-23 | 2015-03-17 | Chicago Mercantile Exchange, Inc. | Non-indexed in-memory data storage and retrieval |
| US20070198465A1 (en) * | 2005-09-23 | 2007-08-23 | Chicago Mercantile Exchange, Inc. | Live profile |
| US8200563B2 (en) * | 2005-09-23 | 2012-06-12 | Chicago Mercantile Exchange Inc. | Publish and subscribe system including buffer |
| US8095452B2 (en) | 2005-09-23 | 2012-01-10 | Chicago Mercantile Exchange Inc. | Live alerts |
| US7624117B2 (en) * | 2006-06-12 | 2009-11-24 | Sap Ag | Complex data assembly identifier thesaurus |
| US8850388B2 (en) * | 2006-09-07 | 2014-09-30 | Microsoft Corporation | Controlling application features |
| US8065356B2 (en) * | 2006-12-20 | 2011-11-22 | L3 Communications Integrated Systems, L.P. | Datapipe synchronization device |
| US7685332B2 (en) * | 2006-12-20 | 2010-03-23 | L3 Communications Integrated Systems, L.P. | Datapipe CPU register array and methods of use |
| US7734846B2 (en) * | 2006-12-20 | 2010-06-08 | L3 Communications Integrated Systems, L.P. | Datapipe CPU register array |
| US7865695B2 (en) * | 2007-04-19 | 2011-01-04 | L3 Communications Integrated Systems, L.P. | Reading and writing a memory element within a programmable processing element in a plurality of modes |
| US20080263322A1 (en) * | 2007-04-19 | 2008-10-23 | L3 Communications Integrated Systems, L.P. | Mac architecture for pipelined accumulations |
| US7673274B2 (en) * | 2007-04-19 | 2010-03-02 | L3 Communications Integrated Systems, LP | Datapipe interpolation device |
| US8046750B2 (en) | 2007-06-13 | 2011-10-25 | Microsoft Corporation | Disco: a simplified distributed computing library |
| US20090089071A1 (en) * | 2007-10-02 | 2009-04-02 | Chicago Mercantile Exchange, Inc. | Compressed non-indexed data storage |
| US7991794B2 (en) * | 2007-12-18 | 2011-08-02 | Oracle International Corporation | Pipelining operations involving DML and query |
| US7987177B2 (en) * | 2008-01-30 | 2011-07-26 | International Business Machines Corporation | Method for estimating the number of distinct values in a partitioned dataset |
| US8335780B2 (en) * | 2008-03-11 | 2012-12-18 | James Madison Kelley | Scalable high speed relational processor for databases and networks |
| US20100030733A1 (en) * | 2008-08-01 | 2010-02-04 | Draughn Jr Alphonza | Transforming SQL Queries with Table Subqueries |
| BRPI0922250A2 (pt) * | 2008-12-15 | 2018-06-05 | 3M Innovative Properties Co | artigo composto incluindo camada viscoelástica com camada de barreira |
| US10525667B2 (en) * | 2008-12-15 | 2020-01-07 | 3M Innovative Properties Company | Surfacing film for composites with barrier layer |
| US20100241638A1 (en) * | 2009-03-18 | 2010-09-23 | O'sullivan Patrick Joseph | Sorting contacts |
| US8458441B2 (en) * | 2009-05-14 | 2013-06-04 | Microsoft Corporation | Vector extensions to an interpreted general expression evaluator in a database system |
| US8204873B2 (en) * | 2009-08-26 | 2012-06-19 | Hewlett-Packard Development Company, L.P. | System and method for query expression optimization |
| CA2784270A1 (en) | 2009-12-15 | 2011-07-07 | Larry S. Hebert | Fluoropolymer film with epoxy adhesive |
| US20110302186A1 (en) * | 2010-06-04 | 2011-12-08 | Miguel Angel Pallares Lopez | Method and Apparatus for Query Reformulation with Latency Preservation |
| US20110307471A1 (en) * | 2010-06-09 | 2011-12-15 | International Business Machines Corporation | Accelerating Database Management System Operations |
| US8782435B1 (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 using control flow signatures |
| US9436558B1 (en) | 2010-12-21 | 2016-09-06 | Acronis International Gmbh | System and method for fast backup and restoring using sorted hashes |
| US8812516B2 (en) * | 2011-10-18 | 2014-08-19 | Qualcomm Incorporated | Determining top N or bottom N data values and positions |
| US9575906B2 (en) | 2012-03-20 | 2017-02-21 | Rubicon Labs, Inc. | Method and system for process working set isolation |
| US8862571B2 (en) * | 2012-06-29 | 2014-10-14 | International Business Machines Corporation | Predicate pushdown with late materialization in database query processing |
| US8930382B2 (en) | 2012-10-10 | 2015-01-06 | International Business Machines Corporation | High performance secure data access in a parallel processing system |
| US9047325B2 (en) * | 2013-04-08 | 2015-06-02 | International Business Machines Corporation | Modularizing complex XML data for generation and extraction |
| US9418089B2 (en) * | 2013-05-13 | 2016-08-16 | Microsoft Technology Licensing, Llc | Merging of sorted lists using array pair |
| US9069987B2 (en) | 2013-06-21 | 2015-06-30 | International Business Machines Corporation | Secure data access using SQL query rewrites |
| US9495418B2 (en) | 2013-08-07 | 2016-11-15 | International Business Machines Corporation | Scalable acceleration of database query operations |
| US9830354B2 (en) | 2013-08-07 | 2017-11-28 | International Business Machines Corporation | Accelerating multiple query processing operations |
| US9619499B2 (en) * | 2013-08-07 | 2017-04-11 | International Business Machines Corporation | Hardware implementation of a tournament tree sort algorithm |
| US9251218B2 (en) | 2013-08-07 | 2016-02-02 | International Business Machines Corporation | Tunable hardware sort engine for performing composite sorting algorithms |
| US10310813B2 (en) | 2014-12-29 | 2019-06-04 | International Business Machines Corporation | Hardware implementation of a tournament tree sort algorithm using an external memory |
| US10334011B2 (en) | 2016-06-13 | 2019-06-25 | Microsoft Technology Licensing, Llc | Efficient sorting for a stream processing engine |
| US10162603B2 (en) * | 2016-09-10 | 2018-12-25 | Sap Se | Loading data for iterative evaluation through SIMD registers |
| WO2018192492A1 (zh) * | 2017-04-20 | 2018-10-25 | 上海寒武纪信息科技有限公司 | 一种运算装置及相关产品 |
| US10936283B2 (en) * | 2017-11-30 | 2021-03-02 | International Business Machines Corporation | Buffer size optimization in a hierarchical structure |
| US11048475B2 (en) | 2017-11-30 | 2021-06-29 | International Business Machines Corporation | Multi-cycle key compares for keys and records of variable length |
| US11354094B2 (en) | 2017-11-30 | 2022-06-07 | International Business Machines Corporation | Hierarchical sort/merge structure using a request pipe |
| US10896022B2 (en) | 2017-11-30 | 2021-01-19 | International Business Machines Corporation | Sorting using pipelined compare units |
| US11086852B2 (en) | 2018-09-28 | 2021-08-10 | Western Digital Technologies, Inc. | Hardware-assisted multi-table database with shared memory footprint |
| US10831503B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Saving and restoring machine state between multiple executions of an instruction |
| US10831502B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Migration of partially completed instructions |
| US10831478B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Sort and merge instruction for a general-purpose processor |
| US12393399B2 (en) | 2018-11-06 | 2025-08-19 | International Business Machines Corporation | Controlling storage accesses for merge operations |
| CN110399416B (zh) * | 2019-07-24 | 2023-08-22 | 成都甄识科技有限公司 | 一种分布式数据库操作优化访问处理方法及系统 |
| US11126401B2 (en) | 2019-09-18 | 2021-09-21 | Bank Of America Corporation | Pluggable sorting for distributed databases |
| US11016978B2 (en) | 2019-09-18 | 2021-05-25 | Bank Of America Corporation | Joiner for distributed databases |
| CN111221885A (zh) * | 2020-01-06 | 2020-06-02 | 中国银联股份有限公司 | 一种用于计算数据排名的方法和系统 |
| US11928093B2 (en) * | 2021-06-10 | 2024-03-12 | Actian Corporation | Object data stored out of line vector engine |
| US12373263B2 (en) * | 2021-11-15 | 2025-07-29 | International Business Machines Corporation | Dynamic database object description adjustment |
Citations (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS57134751A (en) * | 1981-02-12 | 1982-08-20 | Nippon Telegr & Teleph Corp <Ntt> | Constituting methode for data base computer |
| JPS57189247A (en) * | 1981-05-18 | 1982-11-20 | Toshiba Corp | Relational algebra operating device |
| JPS58158771A (ja) * | 1982-03-15 | 1983-09-21 | Toshiba Corp | デ−タベ−ス専用計算機 |
| JPS59731A (ja) * | 1982-06-28 | 1984-01-05 | Hitachi Ltd | ジヨイン演算処理方式 |
| JPS59149538A (ja) * | 1983-02-16 | 1984-08-27 | Fujitsu Ltd | 速度変換回路 |
| JPS6162138A (ja) * | 1984-09-04 | 1986-03-31 | Agency Of Ind Science & Technol | デ−タ処理装置 |
| JPS61273633A (ja) * | 1985-05-29 | 1986-12-03 | Fujitsu Ltd | 分散デ−タベ−スジヨイン処理方式 |
| JPH01103785A (ja) * | 1987-07-16 | 1989-04-20 | Namuko:Kk | ソーティング回路 |
| JPH0333979A (ja) * | 1989-06-29 | 1991-02-14 | Nippon Telegr & Teleph Corp <Ntt> | 関係データベースの限定述語処理方法 |
Family Cites Families (38)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3394731A (en) * | 1964-01-06 | 1968-07-30 | Frank Wheatley Pump & Valve Ma | Check valve having improved valve seat |
| US3976980A (en) * | 1969-01-09 | 1976-08-24 | Rockwell International Corporation | Data reordering system |
| JPS518699B1 (ja) * | 1970-11-09 | 1976-03-19 | ||
| US3713107A (en) * | 1972-04-03 | 1973-01-23 | Ncr | Firmware sort processor system |
| US4030077A (en) * | 1975-10-16 | 1977-06-14 | The Singer Company | Multistage sorter having pushdown stacks for arranging an input list into numerical order |
| US4118788A (en) * | 1977-03-07 | 1978-10-03 | Bell Telephone Laboratories, Incorporated | Associative information retrieval |
| NL8005136A (nl) * | 1980-09-12 | 1982-04-01 | Philips Nv | Inrichting voor het associatief zoeken in een sekwentiele informatiestroom die is opgebouwd uit informatievakken. |
| US4814979A (en) * | 1981-04-01 | 1989-03-21 | Teradata Corporation | Network to transmit prioritized subtask pockets to dedicated processors |
| US4514826A (en) * | 1981-05-18 | 1985-04-30 | Tokyo Shibaura Denki Kabushiki Kaisha | Relational algebra engine |
| JPS583031A (ja) * | 1981-06-30 | 1983-01-08 | Fujitsu Ltd | リレ−シヨナル・モデルにおけるジヨイン演算処理方式 |
| US4476524A (en) * | 1981-07-02 | 1984-10-09 | International Business Machines Corporation | Page storage control methods and means |
| US4674066A (en) * | 1983-02-18 | 1987-06-16 | Houghton Mifflin Company | Textual database system using skeletonization and phonetic replacement to retrieve words matching or similar to query words |
| US4506326A (en) * | 1983-02-28 | 1985-03-19 | International Business Machines Corporation | Apparatus and method for synthesizing a query for accessing a relational data base |
| JPH0724036B2 (ja) * | 1983-12-23 | 1995-03-15 | 株式会社日立製作所 | データベース処理方法 |
| JPH077385B2 (ja) * | 1983-12-23 | 1995-01-30 | 株式会社日立製作所 | データ処理装置 |
| US4799152A (en) * | 1984-10-12 | 1989-01-17 | University Of Pittsburgh | Pipeline feedback array sorter with multi-string sort array and merge tree array |
| US4737921A (en) * | 1985-06-03 | 1988-04-12 | Dynamic Digital Displays, Inc. | Three dimensional medical image display system |
| DE3522569A1 (de) * | 1985-06-24 | 1987-01-02 | Metallgesellschaft Ag | Stromversorgung fuer ein elektrofilter |
| US4787026A (en) * | 1986-01-17 | 1988-11-22 | International Business Machines Corporation | Method to manage coprocessor in a virtual memory virtual machine data processing system |
| US4967341A (en) * | 1986-02-14 | 1990-10-30 | Hitachi, Ltd. | Method and apparatus for processing data base |
| JPS62208167A (ja) * | 1986-03-10 | 1987-09-12 | Hitachi Ltd | ベクトル処理装置 |
| JPS62214464A (ja) * | 1986-03-17 | 1987-09-21 | Hitachi Ltd | データ処理システム |
| US5010478A (en) * | 1986-04-11 | 1991-04-23 | Deran Roger L | Entity-attribute value database system with inverse attribute for selectively relating two different entities |
| US4751635A (en) * | 1986-04-16 | 1988-06-14 | Bell Communications Research, Inc. | Distributed management support system for software managers |
| US5088033A (en) * | 1986-04-28 | 1992-02-11 | Xerox Corporation | Data processing system emulation in a window with a coprocessor and I/O emulation |
| US4870568A (en) * | 1986-06-25 | 1989-09-26 | Thinking Machines Corporation | Method for searching a database system including parallel processors |
| US5001624A (en) * | 1987-02-13 | 1991-03-19 | Harrell Hoffman | Processor controlled DMA controller for transferring instruction and data from memory to coprocessor |
| JPS63261449A (ja) * | 1987-04-20 | 1988-10-28 | Hitachi Ltd | デ−タ処理装置 |
| US5239663A (en) * | 1987-06-15 | 1993-08-24 | Centre National De La Recherche Scientifique | Self-adapting and multifunctional process and structure for the automated evaluation of logical or arithmetic expressions, particularly for extended database consultation |
| JPS6478369A (en) * | 1987-09-19 | 1989-03-23 | Fujitsu Ltd | Vector data processor |
| AU3761889A (en) * | 1988-05-26 | 1990-01-05 | Genesis Electronics Corporation | Voice information system and method for telephone applications |
| US5513332A (en) * | 1988-05-31 | 1996-04-30 | Extended Systems, Inc. | Database management coprocessor for on-the-fly providing data from disk media to all without first storing data in memory therebetween |
| US5050075A (en) * | 1988-10-04 | 1991-09-17 | Bell Communications Research, Inc. | High performance VLSI data filter |
| US5179699A (en) * | 1989-01-13 | 1993-01-12 | International Business Machines Corporation | Partitioning of sorted lists for multiprocessors sort and merge |
| US5093908A (en) * | 1989-04-17 | 1992-03-03 | International Business Machines Corporation | Method and apparatus for executing instructions in a single sequential instruction stream in a main processor and a coprocessor |
| US5187787B1 (en) * | 1989-07-27 | 1996-05-07 | Teknekron Software Systems Inc | Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes |
| JPH07104871B2 (ja) * | 1989-08-31 | 1995-11-13 | 三菱電機株式会社 | リレーショナル・データベースにおけるジョイン処理方式 |
| US5241648A (en) * | 1990-02-13 | 1993-08-31 | International Business Machines Corporation | Hybrid technique for joining tables |
-
1990
- 1990-03-27 US US07/499,844 patent/US5210870A/en not_active Expired - Fee Related
-
1991
- 1991-03-07 JP JP3065358A patent/JPH05128164A/ja active Pending
- 1991-03-20 EP EP19910104337 patent/EP0449096A3/en not_active Withdrawn
-
1992
- 1992-12-18 US US07/993,253 patent/US5548769A/en not_active Expired - Fee Related
-
1994
- 1994-10-14 US US08/323,425 patent/US5537622A/en not_active Expired - Fee Related
- 1994-10-14 US US08/323,424 patent/US5537603A/en not_active Expired - Fee Related
- 1994-10-21 US US08/327,345 patent/US5537604A/en not_active Expired - Fee Related
- 1994-10-21 US US08/327,348 patent/US5530883A/en not_active Expired - Fee Related
-
1995
- 1995-01-24 US US08/378,985 patent/US5590362A/en not_active Expired - Fee Related
- 1995-02-17 US US08/390,143 patent/US5619713A/en not_active Expired - Fee Related
Patent Citations (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS57134751A (en) * | 1981-02-12 | 1982-08-20 | Nippon Telegr & Teleph Corp <Ntt> | Constituting methode for data base computer |
| JPS57189247A (en) * | 1981-05-18 | 1982-11-20 | Toshiba Corp | Relational algebra operating device |
| JPS58158771A (ja) * | 1982-03-15 | 1983-09-21 | Toshiba Corp | デ−タベ−ス専用計算機 |
| JPS59731A (ja) * | 1982-06-28 | 1984-01-05 | Hitachi Ltd | ジヨイン演算処理方式 |
| JPS59149538A (ja) * | 1983-02-16 | 1984-08-27 | Fujitsu Ltd | 速度変換回路 |
| JPS6162138A (ja) * | 1984-09-04 | 1986-03-31 | Agency Of Ind Science & Technol | デ−タ処理装置 |
| JPS61273633A (ja) * | 1985-05-29 | 1986-12-03 | Fujitsu Ltd | 分散デ−タベ−スジヨイン処理方式 |
| JPH01103785A (ja) * | 1987-07-16 | 1989-04-20 | Namuko:Kk | ソーティング回路 |
| JPH0333979A (ja) * | 1989-06-29 | 1991-02-14 | Nippon Telegr & Teleph Corp <Ntt> | 関係データベースの限定述語処理方法 |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2002041551A (ja) * | 2000-07-31 | 2002-02-08 | Taabo Data Laboratory Kk | データのコンパイル方法、および、コンパイル方法を記憶した記憶媒体 |
| WO2010013320A1 (ja) * | 2008-07-30 | 2010-02-04 | 株式会社ターボデータラボラトリー | 表形式データを操作する方法、分散メモリ型マルチプロセッサ、及び、プログラム |
| JP2021072107A (ja) * | 2019-10-29 | 2021-05-06 | 三星電子株式会社Samsung Electronics Co.,Ltd. | ストレージ周辺の階層的ソート加速のためのストレージシステム及び方法 |
| CN111061760A (zh) * | 2019-10-30 | 2020-04-24 | 中科驭数(北京)科技有限公司 | 关系型数据库管理系统中的窗口聚合方法、查询方法及装置 |
| CN111061760B (zh) * | 2019-10-30 | 2020-12-15 | 中科驭数(北京)科技有限公司 | 关系型数据库管理系统中的窗口聚合方法、查询方法及装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| US5537603A (en) | 1996-07-16 |
| US5590362A (en) | 1996-12-31 |
| EP0449096A2 (en) | 1991-10-02 |
| US5537622A (en) | 1996-07-16 |
| US5530883A (en) | 1996-06-25 |
| US5619713A (en) | 1997-04-08 |
| EP0449096A3 (en) | 1993-07-21 |
| US5548769A (en) | 1996-08-20 |
| US5210870A (en) | 1993-05-11 |
| US5537604A (en) | 1996-07-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH05128164A (ja) | データベース処理装置 | |
| US5197137A (en) | Computer architecture for the concurrent execution of sequential programs | |
| Blelloch et al. | A comparison of sorting algorithms for the connection machine CM-2 | |
| Manegold et al. | Database architecture evolution: Mammals flourished long before dinosaurs became extinct | |
| US7467288B2 (en) | Vector register file with arbitrary vector addressing | |
| JP4091604B2 (ja) | ビットストリングの照合方法および装置 | |
| US4967341A (en) | Method and apparatus for processing data base | |
| JP2698033B2 (ja) | 順不同の命令実行を可能にするコンピュータ・システム及びその操作方法 | |
| JP3121565B2 (ja) | 浮動小数点実行ユニットにおける状態フラグ及び条件コードの保持装置及び方法 | |
| US5613080A (en) | Multiple execution unit dispatch with instruction shifting between first and second instruction buffers based upon data dependency | |
| US20070100873A1 (en) | Information retrieving system | |
| US20040172400A1 (en) | Using associative memory to perform database operations | |
| US5898882A (en) | Method and system for enhanced instruction dispatch in a superscalar processor system utilizing independently accessed intermediate storage | |
| JPH04247571A (ja) | データベースレコード処理装置 | |
| WO1993004429A2 (en) | Method of generating multidimensional addresses in an imaging and graphics processing system | |
| JPH02183831A (ja) | プログラム・ループ実行装置 | |
| JP2008269643A (ja) | データベース・システムでデータを編成し、問合せを処理する方法、およびそのような方法を実施するためのデータベース・システムおよびソフトウェア製品 | |
| US5671405A (en) | Apparatus and method for adaptive logical partitioning of workfile disks for multiple concurrent mergesorts | |
| JPH0371227A (ja) | ソーテイング方法 | |
| Hollaar | Specialized merge processor networks for combining sorted lists | |
| JPS626261B2 (ja) | ||
| JPH09325888A (ja) | データ処理装置 | |
| US4839799A (en) | Buffer control method for quickly determining whether a required data block is in the buffer | |
| CN109002467B (zh) | 一种基于向量化执行的数据库排序方法及系统 | |
| Kannan et al. | A microprogrammed keyword transformation unit for a database computer |