PieCloudDB Database が独自に開発した新しいベクトル化エグゼキュータにより、パフォーマンスが桁違いに向上しました

データ分析とアプリケーションの重要性は日に日に高まっており、データ プラットフォームとデータ コンピューティング システムにとって、最高のパフォーマンスが重要な要件の 1 つです。より効率的なデータ並列計算を実現するには、優れた実行者が CPU の並列計算能力や SIMD 命令セットなどのハードウェア リソースを最大限に活用できる必要があります。さらに、データの保存および読み取り方法の最適化、適切なタスクのスケジュール設定とリソース管理、継続的な最適化と改善はすべて、パフォーマンスを確保するための重要な要素です。

企業がデータ資産を中核として競争障壁を確立し、顧客に優れたパフォーマンスと効率的なデータ処理機能を提供できるようにするために、PieCloudDB は元のエグゼキュータの設計を覆し、新しい効率的なベクトル化エグゼキュータを開発します。ベクトル化コンピューティング テクノロジの導入により、PieCloudDB Database は最新のプロセッサの並列コンピューティング機能を最大限に活用して、データの高速並列処理を実現できます。

1 ベクトル化計算とは何ですか?

ベクトル化コンピューティングは、SIMD 命令セットを利用してベクトル データを操作するコンピューター プロセッサまたはコンピューティング エンジンの設計方法です。単一の命令の制御下で一連のデータに対して並列計算を実行できるため、コンピューティングの効率とパフォーマンスが向上します。

1.1 CPU アーキテクチャ

最新の CPU でサポートされている専用 SIMD レジスタとハードウェア ユニットは、ベクトル化演算を強力にサポートし、SIMD 命令セットを使用した並列コンピューティングをより効率的にし、CPU のコンピューティング能力を最大限に活用します。次に、誰もが理解できるように CPU アーキテクチャを詳しく紹介します。

現在、ノイマン型コンピュータ モデルには、一般に、コンピューティング、ストレージ、制御、入力、出力という 5 つのコア コンポーネントがあります。一般に、CPU の実行プロセスには、命令のフェッチ、デコード、実行、ライトバックの最も基本的な段階が含まれます。CPU のパフォーマンスを向上させるために、最新の CPU では通常、マルチステージ パイプラインやアウトオブオーダー実行などのテクノロジが導入されています。性能を上げる。たとえば、5 ステージのパイプラインは、同じ CPU サイクル内で 5 つの異なる操作を処理できます。

TMAM (トップダウン マイクロアーキテクチャ分析手法) には、CPU パフォーマンスの最適化を測定する 2 つの方法があります。1 つは CPU クロック サイクル、もう 1 つは CPU パイプライン スロットです。この方法では、各 CPU コアがクロック サイクルごとにパイプラインを持つことを前提としています。それらはすべて 4 つのスロットを持っています。つまり、CPU のパイプライン幅は 4 です。

以下の図は、各クロック サイクルにおける 4 つのスロットのさまざまな状態を示しています。クロックティック 4 のサイクル使用率のみが 100% であり、その他はサイクル ストール (一時停止とバブル) であることに注意してください。

スロットのさまざまなステータス

CPU パイプラインの場合、次の図に示すように、実行中に多くの依存関係があります。

CPU パイプライン実行時の依存関係

上の図からわかるように、CPU パイプラインの実行効率は、依存するリソースの効率に依存します。これは通常、次のように要約できます。

    ● リタイア中: 効果的な uOps を実行しているパイプライン スロットを表します。これは、CPU 上のプログラムの相対的な実際の効率を評価するために使用できます。

    ● 不適切な推測: 間違った予測によりパイプライン リソースが無駄になっていることを示します。if/switch/while/for は不適切な推測を引き起こす可能性があります。

    ● フロントエンドバウンド: 命令をフェッチし、デコードして、バックエンドに命令を送信し、サイクルごとに最大 4 uops を分散します。

    ● バックエンドバウンド: フロントエンドによって送信された uop を受け入れ、命令を再配置し、メモリからデータを取得して実行し、結果をメモリに送信します。

CPU パイプライン実行の評価指標は、次の次元から測定できます。

    ● 命令番号: 命令の数。CPU プログラムを作成すると、実行時に CPU 命令に変換されますが、命令の数は通常、プログラムの複雑さに依存します。

    ● CPI (Cycle Per struction): 命令の実行に必要なサイクル。

    ● クロック サイクル タイム:  CPU サイクルに必要な時間は、CPU ハードウェアの特性に大きく関係します。

明らかに、コード レベルで最適化できるのは 1 番目と 2 番目の次元であり、一般的に使用される最適化方法は次のとおりです。

    ● キャッシュの疑似共有を避けるためにキャッシュラインに応じてデータ構造のサイズを調整するなど、キャッシュフレンドリー

    ● 分岐予測の最適化、goto ステートメントの使用の禁止

    ● 命令データ依存性の低減

● SIMD などの    新しい CPU ハードウェア機能を活用する

スカラー計算と比較して、SIMD 命令セットは同じ演算の実行に必要な命令の数を大幅に削減できるため、パフォーマンスが大幅に向上します。このパフォーマンスの向上は非常に大きなものです。次にSIMDとは何かを見てみましょう。

1.2 SIMD とは何ですか?

SIMD とは、Single Instruction Multiple Data (Single structive Multiple Data) の演算モードを指します。複数のデータ要素に対して同じ演算を 1 つの命令で同時に実行することで、効率的なデータの並列処理を実現する並列コンピューティング技術です。

SIMD コンピューティングでは、命令はベクトルまたは複数のデータ要素を同時に操作できます。これらのデータ要素は通常、複数のデータ値を含めることができるベクトル レジスタに編成され、これらの値は同時に処理されます。この方法は、特に大量のデータに対して同じ操作を実行する必要がある場合に、並列コンピューティングのパフォーマンスを効果的に向上させることができます。

SIMD には、並列コンピューティング、データの局所性、ハードウェア アクセラレーション、高性能アプリケーション、およびエネルギー節約という利点があり、大規模なデータや高性能コンピューティング タスクを処理するための効果的なツールとなっています。

次の図に示すように、スカラー演算では一度に 1 組のデータしか追加できませんが、SIMD 命令を使用すると、複数の命令の組を同時に演算できます。明らかに、SIMD 命令はデータ処理速度を大幅に向上させ、列ストアド データを処理する際にパフォーマンスに大きな利点をもたらします。

スカラー演算と SIMD 演算の比較

SIMD は、画像およびビデオ処理、信号処理、科学計算、データベースなどのさまざまな分野で広く使用されています。ベクトルの加算、乗算、平均計算、ピーク検出などの一般的な演算を高速化できるため、計算効率が大幅に向上します。

PieCloudDB は、SIMD の機能をより有効に活用して大規模なデータ コンピューティング タスクを処理し、ベクトル化された計算を実行するために、エグゼキュータに破壊的な改善と最適化を加えました。PieCloudDB は、データをベクトル形式に編成し、SIMD 命令を使用して同じ操作を実行することで計算効率を向上させ、エグゼキュータが 1 つの命令サイクルで複数のデータ要素を同時に処理できるようにします。

さらに、PieCloudDB は、さまざまな種類のデータ コンピューティングの問題に対する SIMD の最適化戦略も設計しました。たとえば、集約、スキャン、結合、フィルタリングなどの一般的なデータ コンピューティング操作では、PieCloudDB は SIMD 命令セットの並列コンピューティング機能を使用して主要なノードを最適化し、全体的なパフォーマンスを向上させます。

2 PieCloudDB のベクトル化された実装

2.1 PieCloudDBストレージモデル

SIMD の利点を最大限に活かし、クエリの実行効率を向上させるには、データの保存方法を最適化することが重要です。データ ストレージを SIMD 命令セットの並列計算により適したものにする必要があります。

リレーショナル データ ストレージの実装には、主に 2 つのデータ ストレージ実装があります。

    ● 行ベース: データは行ごとに編成および保存されます。行ストレージでは、各行のすべての列値が連続して一緒に保存されます。行ストレージには、コンパクトなデータ構造、一度に行全体を読み取ること、トランザクション変更の原子性、列挙に適しているという利点がありますが、追加の I/O オーバーヘッド、データの断片化など、いくつかの欠点もあります。

    ● 列ベース: つまり、各列のデータが継続的に一緒に保存されます。従来の行ストレージと比較して、列ストレージには次の利点があります。

    ➢データ 圧縮: カラムストレージは、より効率的な圧縮アルゴリズムを適用して、データストレージのスペースオーバーヘッドを削減し、データ読み取りの帯域幅を増やすことができます。

    ➢データ 局所性: カラムストレージの各カラムのデータが連続的に格納されるため、プロセッサのデータ局所性が有効に活用され、命令やデータのキャッシュミス率が低減され、アクセス効率が向上します。

    ➢データ スキップ: カラムストレージでは、クエリは操作に必要なカラムのみを選択できるため、不必要なデータ送信と計算が削減され、クエリ効率が向上します。

ただし、列ストレージには、選択中に行ごとに読み取るなど、複数の I/O 操作が必要になる場合があるなど、いくつかの欠点もあります。

以下では、行ストレージと列ストレージを区別する例として単純なデータ テーブルを使用します。

サンプルデータテーブル

行ストレージが使用されている場合、メモリとディスク内のデータの構成は次の図のようになります。

銀行データ整理フォーム

列ストレージを使用する場合、データは次の図に示すようにメモリとディスク内に編成されます。

カラムストレージデータ構成形式

PieCloudDB の現在のストレージ実装は、行ストレージと列ストレージが混在しています。このハイブリッド ストレージ方式は、行ストレージと列ストレージの利点を組み合わせて、さまざまなクエリ パターンと要件に適応します。効率を最大化するために、さまざまなビジネス シナリオに応じてさまざまなストレージ方法を選択できると便利です。また、列ストレージはデータを列に格納するため、連続データは SIMD 命令の並列コンピューティング特性をより適切に活用し、SIMD によってもたらされるパフォーマンスの利点を最大限に活用できます。特に JANM ストレージ システムですでにサポートされている列ストレージ機能と組み合わせて、データ処理の価値を最大化するには、PieCloudDB エグゼキュータをベクトル化計算用に最適化する必要があります。

2.2 PieCloudDB エグゼキュータ

PieCloudDB クラウドネイティブ仮想データ ウェアハウスは、新しい eMPP (Elastic MPP) アーキテクチャを採用しており、リレーショナル データベースとして、そのクエリ実行はリレーショナル代数に従って厳密に実装されており、現在のデータ転送方式は、データ処理に Tuple に基づいており、volcano を採用しています。モデル:具体的な実行モデルとして。上位層のオペレーターが下位層のオペレーターを再帰的に呼び出してタプルを取得および処理するこの方法には、多数の仮想関数呼び出しや高い命令またはデータ キャッシュ ミス率など、いくつかの欠点があります。同時に、一度に 1 つのタプルを処理するこの方法では、CPU の SIMD 命令を最大限に活用して最適化することができず、クエリの実行効率が低くなります。

SIMD 命令セットは複数のデータ要素を同時に処理でき、カラム ストレージ テクノロジと組み合わせることで、より効率的なデータ処理を実現できます。カラム ストレージ テクノロジはデータをカラムに保存し、連続データが SIMD 命令の並列コンピューティング特性をより適切に活用できるようにします。

ベクトル化されたエグゼキュータを構築して SIMD 最適化を実現するには、次の側面を考慮する必要があります。

    ● ベクトル化された操作:  SIMD 命令セットのベクトル化された操作をサポートするためにエグゼキューターを再設計および最適化します。コード ロジックをリファクタリングすることで、各タプルを 1 つずつ処理するのではなく、SIMD 命令を使用してデータ列全体を処理します。

    ● データレイアウトの最適化:  SIMD 命令セットの特性に応じて、データの格納方法とレイアウトを最適化します。列ストレージをさらに最適化することで、連続データが SIMD 命令の並列コンピューティング機能を最大限に活用できるようになります。

    ● プラットフォームの適応: さまざまなハードウェア アーキテクチャと SIMD 命令セットに適応して最適化します。SIMD 最適化をさまざまな環境で効果的に実装できるように、プラットフォーム固有の制限と要件を考慮してください。

これらの最適化手段を通じて、PieCloudDB のエグゼキュータは SIMD 命令セットの並列コンピューティング機能をより適切に活用し、データ処理速度を加速し、システムのパフォーマンスと効率を向上させることができます。これにより、OLAP シナリオでのデータ処理の高速化と効率化が実現し、データ処理の価値を最大限に発揮できます。

2.3 PieCloudDB のベクトル化設計のアイデア

ベクトル化されたエグゼキュータのベクトル化処理には、いくつかの主要な処理プロセスの SIMD コードとデータ処理の最適化、SIMD フレンドリーなハッシュ テーブルの使用など、多くの方法があります。PieCloudDB は最終的に、主に次の考慮事項に基づいて、新しいベクトル化されたエグゼキューターを破壊的に書き直すことを決定しました。

    ● 十分に優れた既存のエグゼキュータ:  PieCloudDB の既存のエグゼキュータは、多くの OLAP シナリオで高いパフォーマンスの利点を示し、多くの HTAP 機能を完了しており、特定の OLTP シナリオでも一定の利点があります。

    ● ローカル最適化では SIMD の最大の利点を最大限に活用できません。 新しいベクトル化エグゼキューターを書き直すことにより、PieCloudDB は SIMD 命令セットの並列計算機能をより有効に活用して、データ処理パフォーマンスをさらに向上させることができます。

    ● さらなるコンピューティング フォーム構築: 新しいエグゼキュータでは、PieCloudDB はレイク ウェアハウス統合およびストリーミング バッチ統合コンピューティング フォームの構築をより便利に実現し、それによってさまざまなコンピューティング シナリオやさまざまなデータ処理ニーズにさらに適応します。

    ● ビッグ データ コンピューティング エコシステムの採用:  PieCloudDB は、Tuoshupai 大規模モデル データ コンピューティング システム (πDataCS) の最初のコンピューティング エンジンとして、新しいベクトル化されたエグゼキューターを書き換えることにより、ビッグ データ コンピューティング エコシステムとの連携を強化します。幅広いデータ コンピューティング ソリューション。

PieCloudDB チームは、新しいベクトル化されたエグゼキュータを書き直すことが必要かつ有益であると信じています. このプロセスは難しいかもしれませんが、データ計算を強化し、究極のパフォーマンスを実現できます。検討と設計を繰り返した結果、PieCloudDB ベクトル化エグゼキューターの全体的なアーキテクチャ図は次のようになります。

PieCloudDB のベクトル化されたエグゼキュータの全体的なアーキテクチャ

ベクトル化エグゼキューターが有効になった後、plan-rewriter がオプティマイザーによって発行されたクエリ プランを受け取ると、ベクトル化演算子を置き換え、置き換えられたクエリ プランをベクトル化エグゼキューターに送信します。ベクトル化を行わない場合、古いエグゼキュータがクエリに使用されます。

明らかに、ベクトル化されたエグゼキュータの中核は上図の右側の演算子であるため、CPU の究極の機能を最大限に活用するには、これらの演算子に多くの変更を加える必要があります。この目標を達成するために、主に次の側面から SIMD 変換を実行します。

     行ストレージから列ストレージへ: データを行ストレージ構造から列ストレージ構造に変換することにより、データ アクセスおよび処理における SIMD 命令セットの効率を向上させることができます。このようにして、連続データは SIMD の並列計算特性をよりよく活用できます。

    ● 行処理から列処理へ: 元の行ベースの処理メソッドを列ベースの処理メソッドに変換します。これには、列ベースの SIMD 並列コンピューティング モデルに適合するように多数のアルゴリズムを適応および改善することが含まれます。これにより、データ処理の効率が向上します。

     コードレベルの最適化: ベクトル化変換プロセス中に、コードレベルの最適化を実行する必要があります。これには、分岐ジャンプを削減し、コードの連続性を向上させるための分岐の削除、コード構造の調整などが含まれ、それによって SIMD 命令の使用率が向上します。

     データ構造の調整:  SIMD 処理にさらに適応させるためには、データ構造を調整する必要があります。たとえば、従来のハッシュ テーブルをより SIMD フレンドリーなデータ構造に置き換えて、検索および挿入操作の効率を向上させることができます。

上記のベクトル化変換の方向により、PieCloudDB はデータ処理における CPU の可能性をより適切に活用できるようになり、それによってより高速かつ効率的なデータ計算が実現されます。

3 PieCloudDB ベクトル化エグゼキューター: 桁違いのパフォーマンス向上を達成

PieCloudDB のベクトル化されたエグゼキュータは、業界で一般的に使用されている意思決定支援ベンチマークである TPC-H でのパフォーマンスの大幅な向上を実証しました。オリジナルのエグゼキュータと比較して、 Agg、Scan、Join、Filter およびExpr コンピューティングなど

    ● 集計: ベクトル化されたエグゼキュータを使用すると、集計操作をより高速に実行でき、クエリの実行時間を大幅に短縮できます。この改善は、大量のデータの集約が必要なクエリ シナリオで特に顕著です。

    ● スキャン: ベクトル化されたエグゼキュータにより、データのスキャンと読み取りのプロセスが高速化されます。SIMD 命令セットをベクトル化演算に利用することで、複数のデータ要素を同時に処理できるため、データのアクセスと処理の効率が向上します。

    ● 結合: ベクトル化されたエグゼキュータは、テーブル結合操作をより迅速に実行し、複数のテーブル間の関連付けを処理できます。並列計算とベクトル化操作により、結合操作が高速化され、クエリの実行効率が向上します。

     フィルター: ベクトル化されたエグゼキューターは、クエリ内のフィルター条件をより効率的に処理できます。ベクトル化演算に SIMD 命令セットを使用すると、複数のデータ要素の条件判断を同時に実行でき、ループの反復回数が減り、フィルタリング演算の速度が向上します。

    ●  Expr Compute: ベクトル化されたエグゼキュータは、式と関数をより高速に計算できます。ベクトル化された計算に SIMD 命令セットを利用することで、複数のデータ要素に対して式を同時に評価して、計算プロセスを高速化できます。

これらのキー演算子の大幅な改善により、PieCloudDB は日常の OLAP シナリオでの TPC-H ベンチマーク テストと複雑なクエリをより迅速に処理できるようになり、より効率的かつ迅速な意思決定支援機能が提供されます。

今後、これらのオペレーターの具体的な最適化プロセスを分析していきますので、ぜひご注目ください。

4 道は長くて険しいですが、旅はこれから始まります。

100 マイルを移動するのにわずか 0.5 マイルしかかかりません。PieCloudDB のベクトル化エグゼキュータを構築する旅は続きます。現在、PieCloudDB はデータ並列コンピューティングを最大限に活用して SIMD 命令セットのサポートを実装しています。複数のデータ要素をベクトルにパックし、それらに対して同じ操作を同時に実行することで、計算効率とスループットを向上させることに成功しました。

ただし、これが単なる始まりに過ぎないことは承知しており、増大するニーズと変化する技術環境に対応するために、PieCloudDB ベクトル化エグゼキューターのさらなる最適化と改善に取り組み、より高レベルのベクトル化操作とより強力な SIMD 命令セットのサポートを模索していきます。データベースのパフォーマンスと効率を向上させます。具体的な指示には次のようなものがあります。

    ● 究極のパフォーマンスの最適化

    ● 究極のリソース管理と制御

    ●マルチモーダル データ コンピューティング機能

PieCloudDB ベクトル化エグゼキューターの開発過程は課題と機会に満ちていますが、私たちは継続的なイノベーションと確固たる取り組みを通じて前進を続け、ユーザーにより良いパフォーマンスと幅広いアプリケーション シナリオを提供できると強く信じています。

SenseTime創設者Tang Xiaoou氏死去、55歳 2023年、PHP停滞 紅蒙システム独立間近、多くの大学が「紅蒙授業」開設 Quark BrowserのPC版が内部テスト開始. ByteDanceはOpenAIによって「禁止」された. Zhihuijunの新興企業は借り換え、金額は6億元以上、事前評価額は35億元. AIコードアシスタントは非常に人気があるため、プログラミングで競争することさえできません言語ランキング. Mate 60 Proの5Gモデムと無線周波数技術ははるかに先を行っている No Star, No Fix MariaDBがSkySQLをスピンオフし、独立した会社として設立
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/5944765/blog/10319565