(57)【特許請求の範囲】
【請求項１】
マルチコアシステムのメモリ同期のためのシステムであって、
少なくとも１つのメモリパーティションを前記マルチコアシステムの少なくとも１つのコアに割り当てるように構成された割り当てモジュールと、
ユーザ空間から前記少なくとも１つのコアへの前記少なくとも１つのメモリパーティションの結び付きに関してカーネルに通知するように構成されたインタフェースモジュールと、
前記少なくとも１つのコアに割り当てられた前記メモリパーティションに関連するページテーブルエントリが修正された場合、前記インタフェースモジュールから通知された前記少なくとも１つのコアへの前記少なくとも１つのメモリパーティションの前記結び付きに従って、前記マルチコアシステムの前記少なくとも１つのコアに割り込みを選択的に送信することにより利用される前記マルチコアシステムの変換索引バッファシュートダウンのための情報を提供するように構成されたマッピングモジュールと
を含むシステム。
【請求項２】
前記マッピングモジュールは、前記少なくとも１つのメモリパーティションのコピーオンライトページ共有中に変換索引バッファシュートダウンのための前記情報を提供するように構成される、請求項１に記載のシステム。
【請求項３】
前記インタフェースモジュールは、前記少なくとも１つのコアへの前記少なくとも１つのメモリパーティションの結び付きを制御するためのシステムコールのセットにより、前記割り当てモジュールへのインタフェースを前記ユーザ空間に提供するように構成される、請求項１又は２に記載のシステム。
【請求項４】
前記インタフェースモジュールは、前記システムコールのセットを使用することにより受信された情報により、前記変換索引バッファシュートダウンを適合するように構成される、請求項３に記載のシステム。
【請求項５】
少なくとも１つのコアを有するマルチコアシステムと、
少なくとも１つのメモリパーティションを有するメモリシステムと、
前記マルチコアシステムのメモリ同期のためのシステムと
を含むデータベースであって、
前記システムは、
少なくとも１つのメモリパーティションを前記マルチコアシステムの少なくとも１つのコアに割り当てるように構成された割り当てモジュールと、
ユーザ空間から前記少なくとも１つのコアへの前記少なくとも１つのメモリパーティションの結び付きに関してカーネルに通知するように構成されたインタフェースモジュールと、
前記少なくとも１つのコアに割り当てられた前記メモリパーティションに関連するページテーブルエントリが修正された場合、前記インタフェースモジュールから通知された前記少なくとも１つのコアへの前記少なくとも１つのメモリパーティションの前記結び付きに従って、前記マルチコアシステムの前記少なくとも１つのコアに割り込みを選択的に送信することにより前記マルチコアシステムの変換索引バッファシュートダウンのための情報を提供するように構成されたマッピングモジュールと
を含むデータベース。
【請求項６】
前記データベースは、ハイブリッド型オンライントランザクション処理及びオンライン分析処理データベースである、請求項５に記載のデータベース。
【請求項７】
前記データベースは、少なくとも１つのオンライントランザクション処理スレッドが前記少なくとも１つのメモリパーティションの１つ以上で動作することを確保することにより、オンライントランザクション処理を実行するように構成される、請求項６に記載のデータベース。
【請求項８】
前記データベースは、前記少なくとも１つのコアのどれが前記少なくとも１つのメモリパーティションのどれに結び付けられているかを示すデータ構造を使用することにより、前記変換索引バッファシュートダウンの制御された発送を提供することが可能になる、請求項５乃至７のうちいずれか１項に記載のデータベース。
【請求項９】
前記インタフェースモジュールは、前記少なくとも１つのコアへの前記少なくとも１つのメモリパーティションの結び付きを通信するように構成される、請求項５乃至８のうちいずれか１項に記載のデータベース。
【請求項１０】
前記インタフェースモジュールは、システムコールのセットを使用することにより受信された情報により、前記変換索引バッファシュートダウンを適合するように構成される、請求項９に記載のデータベース。
【請求項１１】
マルチコアシステムのメモリ同期のための方法であって、
割り当てモジュールを使用して、少なくとも１つのメモリパーティションを前記マルチコアシステムの少なくとも１つのコアに割り当てるステップと、
ユーザ空間から前記少なくとも１つのコアへの前記少なくとも１つのメモリパーティションの結び付きに関してカーネルに通知するステップと、
マッピングモジュールを使用して、前記少なくとも１つのコアに割り当てられた前記メモリパーティションに関連するページテーブルエントリが修正された場合、前記少なくとも１つのコアへの前記少なくとも１つのメモリパーティションの前記通知された結び付きに従って、前記マルチコアシステムの前記少なくとも１つのコアに割り込みを選択的に送信することにより前記マルチコアシステムの変換索引バッファシュートダウンを提供するステップと
を含む方法。
【請求項１２】
前記変換索引バッファシュートダウンを提供するステップは、前記少なくとも１つのメモリパーティションのコピーオンライトページ共有中に実行される、請求項１１に記載の方法。
【請求項１３】
前記変換索引バッファシュートダウンを提供するステップは、前記少なくとも１つのコアへの前記少なくとも１つのメモリパーティションの結び付きを制御するためのシステムコールのセットにより実行される、請求項１１又は１２に記載の方法。
【請求項１４】
前記変換索引バッファシュートダウンは、前記システムコールのセットを使用することにより受信された情報により適合される、請求項１３に記載の方法。
【請求項１５】
コンピュータプログラムがコンピュータで実行する場合、請求項１２乃至１４のうちいずれか１項に記載の方法を実行するためのプログラムコードを含むコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この出願は、パーティションをコアに結び付けることにより、メモリデータベースにおいてハイブリッド型オンライントランザクション処理／オンライン分析処理をスケーリングする分野に関する。特に、この出願は、マルチコアシステムのメモリ同期のためのシステムに関する。
【背景技術】
【０００２】
従来、オンライントランザクション処理（OLTP：Online-Transaction-Processing）及びオンライン分析処理（OLAP：Online  Analytical  Processing）の双方の作業負荷の役目を果たす必要があるデータベースシステムは切り離されており、１つのシステムがリアルタイムでOLTPトランザクション負荷の役目を果たし、他の別のシステムが以前にインポートされたデータセットで動作するOLAP分析作業負荷の役目を果たしている。この設定は、複数の欠点を有する。これは、より多くの物理リソース、メンテナンスのオーバーヘッドを必要とし、最も重要なことには、これがOLTPからOLAPシステムへのデータのバッチ処理によるエクスポート及びインポートを必要とするため、これは、OLTPデータベースの上でほぼリアルタイムにOLAP分析を行うことを妨げる。
【０００３】
メモリ管理ユニット（MMU：Memory  Management  Unit）を利用することにより分析クエリのためのインメモリスナップショットを提供する概念は、単一のデータベースがOLTP及びOLAPの双方の作業負荷の役目を果たすことを可能にすることにより、問題を部分的に解決しているが、これは、基礎のハードウェアプラットフォームとのオペレーティングシステムカーネルの必要な相互作用に関するスケーラビリティのボトルネックにより、具体的には、特に多数の計算ユニット（CPUコア）に触れるマルチコアプラットフォームの場合、TLBキャッシュエントリの一貫性を維持するためのオペレーティングシステムの責任により、かなり制限される。
【０００４】
US2013/0073513A1は、ハイブリッド型OLTP及びOLAPデータベースを維持する方法を記載し、方法は、１つ以上のOLTPトランザクションを実行するステップと、仮想メモリスナップショットを生成するステップと、仮想メモリスナップショットを使用して１つ以上のOLAPクエリを実行するステップとを含む。そこに記載される方法は、データオブジェクトへの更新に応じてデータオブジェクトが記憶される仮想メモリページを複製し、これにより、更新されたデータオブジェクトがOLTPトランザクションにとってアクセス可能であり、更新されていないデータオブジェクトがOLAPクエリにとってアクセス可能なままであるステップを更に含む。したがって、そこに記載されるハイブリッド型システムは、トランザクションデータの一貫したスナップショットを維持するためにハードウェアにより補助される複製機構を使用することにより、OLTP及びOLAPの双方を同時に処理することができる。
【発明の概要】
【０００５】
マルチコアシステムのメモリ同期を改善すること、特に、ハードウェアに補助される仮想メモリスナップショット処理、すなわち、スナップショットを行うこと又はデータのバージョニングのためにMMUを利用するハイブリッド型OLTP／OLAPインメモリデータベースをスケーリングするための改善した技術を提供することが、本発明の目的である。
【０００６】
この目的は、独立請求項の特徴により実現される。更なる実装形式は、従属請求項、説明及び図面から明らかである。
【０００７】
本発明は、ハードウェアに補助される仮想メモリスナップショット処理又はデータのバージョニングのためにMMUを利用するハイブリッド型OLTP／OLAPインメモリデータベースのスケーラビリティの問題に直接対処する。
【０００８】
第１の態様によれば、マルチコアシステムのメモリ同期のためのシステムが提供され、システムは、少なくとも１つのメモリパーティションをマルチコアシステムの少なくとも１つのコアに割り当てるように構成された割り当てモジュールと、少なくとも１つのコアに割り当てられたメモリパーティションに関連するページテーブルエントリが修正された場合、マルチコアシステムの少なくとも１つのコアに割り込みを送信することにより利用されるマルチコアシステムの変換索引バッファシュートダウンのための情報を提供するように構成されたマッピングモジュールと、ユーザ空間から割り当てモジュールへのインタフェースを提供するように構成されたインタフェースモジュールとを含む。
【０００９】
言い換えると、本発明は、オペレーティングシステムカーネルからデータベースへのインタフェースを公開することにより、スケーラビリティの問題に対処し、インタフェースを通じて、データベースは、特定の中央処理装置（CPU：central  processing  unit）コアへのメモリ領域又はメモリパーティションの「結び付き」に関してカーネルに通知することができる。オペレーティングシステムカーネルは、データベースから以前に提供された情報に基づいて、スレッドによってデータベースアドレス空間を共有するコアの全てにTLBシュートダウンを「ブロードキャスト」する代わりに、特定のコアの特定の変換索引バッファ（TLB：translation  lookaside  buffer）エントリを選択的に無効にする（TLBシュートダウン）。
【００１０】
本発明の更なる利点は、本発明が、データベースシステムへのTLBシュートダウン手順の制御を暗示的に公開することにより、如何なるMMUに基づくスナップショット方式が現代のマルチコアマシンにおいてスケーリングすることを可能にする手段を有利に提供することである。
【００１１】
例えば、データベースシステムは、そのトランザクション（OLTP）スレッドの配置を制御することにより、どのCPUコア／スレッドがメモリのどの部分（データベースパーティション）で動作するかを認識する。この情報をカーネルに渡すことにより、データベースは、TLBシュートダウンを制限することにより、TLBシュートダウン手順を暗示的に制御し、プロセッサ間割り込み（IPI）は、パーティション毎に選択されたコアのセットに制限される。これは、ページフォールト処理時間中にアドレス空間を共有する全ての利用可能なコアに対して非常に高コストなIPIに基づくTLBシュートダウンを実行することに関する過度のオーバーヘッドからシステムを解放し、MMUに基づくスナップショット処理方式を使用してシステムの高いスケーラビリティを可能にする。
【００１２】
本発明は、アプリケーション又はデータベースがメモリパーティションへのOLTPスレッドの結び付きを維持し、コピーオンライト（copy-on-write）ページフォールトのためのより選択的且つ方向性のあるTLBシュートダウンを有する目的で、この情報をカーネルに提供することができ、ハイブリッド型OLTP／OLAPインメモリデータベースシステムのための一貫したスナップショット処理機構の役目を果たすという事実を利用している。
【００１３】
データベースからオペレーティングシステムカーネルに提供されるこの情報がなければ、カーネルは、アドレス空間を共有する全てのコアにTLBシュートダウンIPIをブロードキャストしなければならず、非常に高いコストを招くか、或いはオペレーティングシステムカーネルは、全ての利用可能なシステムコアについてページの使用を追跡するために再設計される必要があり、高い実装コスト及び実行時コストを招く。
【００１４】
本発明は、インメモリデータベースシステムに関してMMUに基づくスナップショットにおけるスケーラビリティを有利に提供する。
【００１５】
本発明の基本的な概念は、MMUに基づくスナップショット機構を使用するハイブリッド型OLTP／OLAPデータベースシステムのための高いスケーラビリティを可能にすることである。これは、オペレーティングシステムカーネルからユーザ空間へのTLBシュートダウン制御を公開することによって実現され、これはデータベースシステムにより影響され得る。
【００１６】
MMUに基づくスナップショット方式（怠惰なコピーオンライトのページ共有の実行）では、大部分のオーバーヘッドは、コピーオンライト（CoW：copy-on-write）ページフォールトの処理中に実行されるTLBシュートダウンIPIから生じる。
【００１７】
特に、本発明は、どのコアがアドレス空間の異なる部分についてTLBシュートダウンIPIを受信するべきかをデータベースが制御することを可能にすることにより、インメモリハイブリッド型OLTP／OLAPデータベースシステムのためのスナップショット処理機構の役目をする、MMUに基づく方法のスケーラビリティが実現されることを有利に提供する。
【００１８】
特に、本発明は、MMUに基づくスナップショット処理機構の性質に固有のTLBシュートダウンコストをかなり低減するために、オペレーティングシステムにより利用されることができる、データベースシステムが有する知識又は情報を有利に利用する。
【００１９】
特に、本発明は、CoW中のTLBシュートダウンの目的で、データベースシステムがハードウェアコアへのメモリ及び／又はパーティションの間の結び付きを割り当てる方法を有利に提供し、トランザクション（OLTP）を実行するスレッドが自身に割り当てられたパーティションで動作することを確保する。
【００２０】
特に、本発明は、CoW中のTLBシュートダウンの目的で、新たなシステムコールによってデータベースからオペレーティングシステムカーネルにデータパーティションへのハードウェアコアの結び付きを伝達する方法を有利に提供する。
【００２１】
特に、本発明は、CoWページフォールト処理中に必要とされるTLBシュートダウンの時点で、以前にデータベースにより提供された結び付きを調べ、その結果、障害のあるページが属する特定のメモリに結び付けられた特定のコアのみに対して向けられた選択的な方式でTLBシュートダウンIPIを発行するオペレーティングシステムカーネル機構を有利に提供する。
【００２２】
利点として、トランザクションを実行するスレッドの処理時間を低減することにより、OLTP性能が（より低い待ち応答時間及びスループットの双方に関して）増加する。
【００２３】
更なる利点として、システムは、CoWページフォールトが生じたときにかなり少ないカーネル内の時間を費やす。さらに、MMU／ハードウェアに補助されるスナップショット処理機構（CoW）は、処理コアの数の増加と共にスケーリングする。
【００２４】
本発明により使用される「コピーオンライト」という用語は、コンピュータプログラミングにおいて使用される最適化方策を記述してもよい。コピーオンライトは、複数の別々のタスクが最初にいくつかの情報（すなわち、コンピュータメモリに記憶されたデータ）の同一のコピーを、場合によって修正する必要があり得るローカルデータとしてそれを扱って使用する場合、タスク毎にその情報の別々のコピーを直ちに生成する必要はないという理解から生じる。
【００２５】
本発明により使用される「メモリ同期」という用語は、マルチコアシステムにおいてメモリ同期のための同期機構を実行するマルチコアシステムコンピュータにおいて使用される処理を記述してもよい。
【００２６】
本発明により使用される「メモリ管理ユニット（MMU：memory  management  unit）」は、場合によってはページメモリ管理ユニット（PMMU：paged  memory  management  unit）と呼ばれ、自身を通過する全てのメモリ参照を有し、主に物理アドレスへの仮想メモリアドレスの変換を実行するコンピュータハードウェアユニットを記述してもよい。
【００２７】
本発明により使用される「スナップショット」又は「スナップショット処理」という用語は、特定の時点でのシステムの状態であるスナップショットを記述してもよい。この用語は、写真技術における用語と類似するものとして使用されてもよい。この用語は、システムの状態の実際のコピー又は特定のシステムにより提供される能力を示すことができる。
【００２８】
本発明により使用される「プロセッサ間割り込み」という用語は、マルチプロセッサシステムにおいて、割り込み側のプロセッサが他のプロセッサからのアクションを必要とする場合、１つのプロセッサが他のプロセッサを割り込んでもよい特別な種類の割り込みを記述してもよい。
【００２９】
第１の態様によるシステムの第１の可能な実装形式では、マッピングモジュールは、少なくとも１つのメモリパーティションのコピーオンライトページ共有中に変換索引バッファシュートダウンのための情報を提供するように構成される。これは、如何なるMMUに基づくスナップショット方式がマルチコアマシンにおいてスケーリングすることを可能にする手段を有利に提供する。
【００３０】
第１の態様自体又は第１の態様の第１の実装形式によるシステムの第２の可能な実装形式では、インタフェースモジュールは、少なくとも１つのコアへの少なくとも１つのメモリパーティションの結び付きを制御するためのシステムコールのセットにより、割り当てモジュールへのインタフェースをユーザ空間に提供するように構成される。これは、どのCPUコア及び／又はスレッドがメモリのどの部分（データベースパーティション）で動作するかをデータベース又はアプリケーションが認識することを有利に提供する。
【００３１】
第１の態様自体又は第１の態様の前述の実装形式のいずれかによるシステムの第３の可能な実装形式では、インタフェースモジュールは、システムコールのセットを使用することにより受信された情報により、変換索引バッファシュートダウンを適合するように構成される。これは、より選択的且つ方向性のあるTLBシュートダウンが実行されることを有利に提供する。
【００３２】
第２の態様によれば、本発明は、データベースに関し、少なくとも１つのコアを有するマルチコアシステムと、少なくとも１つのメモリパーティションを有するメモリシステムと、マルチコアシステムのメモリ同期のためのシステムとを含み、システムは、少なくとも１つのメモリパーティションをマルチコアシステムの少なくとも１つのコアに割り当てるように構成された割り当てモジュールと、少なくとも１つのコアに割り当てられたメモリパーティションに関連するページテーブルエントリが修正された場合、マルチコアシステムの少なくとも１つのコアに割り込みを送信することによりマルチコアシステムの変換索引バッファシュートダウンのための情報を提供するように構成されたマッピングモジュールと、ユーザ空間から割り当てモジュールへのインタフェースを提供するように構成されたインタフェースモジュールとを含む。
【００３３】
第２の態様によるデータベースの第１の可能な実装形式では、データベースは、ハイブリッド型オンライントランザクション処理及びオンライン分析処理データベースである。これは、同じメモリ内データにおいてOLTPトランザクション及びOLAP分析を実行することを有利に提供する。
【００３４】
第２の態様又は第２の態様の前述の実装形式のいずれかによるデータベースの第２の可能な実装形式では、データベースは、少なくとも１つのオンライントランザクション処理スレッドが少なくとも１つのメモリパーティションの１つ以上で動作することを確保することにより、オンライントランザクション処理を実行するように構成される。これは、効率的なマルチ処理手法を有利に提供し、これらの間でタスクを割り当てる効率を改善する。
【００３５】
第２の態様又は第２の態様の前述の実装形式のいずれかによるデータベースの第３の可能な実装形式では、データベースは、少なくとも１つのコアのどれが少なくとも１つのメモリパーティションのどれに結び付けられているかを示すデータ構造を使用することにより、変換索引バッファシュートダウンの制御された発送を提供することが可能になる。これは、マルチコアシステムの複数の同時処理の実行を更に改善する。
【００３６】
第２の態様又は第２の態様の前述の実装形式のいずれかによるデータベースの第４の可能な実装形式では、インタフェースモジュールは、少なくとも１つのコアへの少なくとも１つのメモリパーティションの結び付きを通信するように構成される。これは、どのCPUコア／スレッドがメモリのどの部分（データベースパーティション）で動作するかをデータベース又はアプリケーションが認識することを有利に提供する。
【００３７】
第２の態様の第４の可能な実装形式によるデータベースの第５の可能な実装形式では、インタフェースモジュールは、システムコールのセットを使用することにより受信された情報により、変換索引バッファシュートダウンを適合するように構成される。これは、より選択的且つ方向性のあるTLBシュートダウンが実行されることを有利に提供する。
【００３８】
第３の態様によれば、本発明は、マルチコアシステムのメモリ同期のための方法に関し、方法は、割り当てモジュールを使用して、少なくとも１つのメモリパーティションをマルチコアシステムの少なくとも１つのコアに割り当てるステップと、マッピングモジュールを使用して、少なくとも１つのコアに割り当てられたメモリパーティションに関連するページテーブルエントリが修正された場合、マルチコアシステムの少なくとも１つのコアに割り込みを送信することによりマルチコアシステムの変換索引バッファシュートダウンを提供するステップと、インタフェースモジュールを使用して、割り当てモジュールへのインタフェースをユーザ空間に提供するステップとを含む。
【００３９】
第３の態様による方法の第１の可能な実装形式では、変換索引バッファシュートダウンを提供するステップは、少なくとも１つのメモリパーティションのコピーオンライトページ共有中に実行される。これは、如何なるMMUに基づくスナップショット方式がマルチコアマシンにおいてスケーリングすることを可能にする手段を有利に提供する。
【００４０】
第３の態様又は第３の態様による方法の第１の可能な実装形式による方法の第２の可能な実装形式では、変換索引バッファシュートダウンを提供するステップは、少なくとも１つのコアへの少なくとも１つのメモリパーティションの結び付きを制御するためのシステムコールのセットにより実行される。これは、どのCPUコア及び／又はスレッドがメモリのどの部分（データベースパーティション）で動作するかをデータベース又はアプリケーションが認識することを有利に提供する。
【００４１】
第３の態様自体又は第３の態様の前述の実装形式のいずれかによる方法の第３の可能な実装形式では、変換索引バッファシュートダウンは、システムコールのセットを使用することにより受信された情報により適合される。これは、より選択的且つ方向性のあるTLBシュートダウンが実行されることを有利に提供する。
【００４２】
第５の態様によれば、本発明は、コンピュータプログラムがコンピュータで実行する場合、第３の態様の前述の実装形式のいずれかによる方法を実行するためのプログラムコードを含むコンピュータプログラムに関する。
【００４３】
ここに記載される方法、システム及びデバイスは、デジタルシグナルプロセッサ（DSP：Digital  Signal  Processor）、マイクロコントローラ又は他のサイドプロセッサ内のソフトウェアとして実装されてもよく、或いは、特定用途向け集積回路（ASIC：application  specific  integrated  circuit）又は製造後に顧客若しくは設計者により構成されるように設計された集積回路であるため、「フィールドプログラマブル」であるフィールドプログラマブルゲートアレイ内のハードウェア回路として実装されてもよい。
【００４４】
本発明は、デジタル電子回路に実装されることができ、或いはコンピュータハードウェア、ファームウェア、ソフトウェア又はこれらの組み合わせ、例えば、従来のモバイルデバイスの利用可能なハードウェア又はここに記載される方法を処理するのに専用の新たなハードウェアに実装されることができる。
【００４５】
本発明の前記及び他の態様は、以下に記載される実施例から明らかになり、実施例を参照して説明される。本発明のより完全な理解及びその付随する利点は、以下の概略図面を参照してより明確に理解される。
【図面の簡単な説明】
【００４６】
本発明の更なる実施例は、以下の図面を参照して説明される。
【図１】本発明の一実施例によるマルチコアシステムのメモリ同期のためのシステムの概略図を示す。
【図２】本発明の実施例によるマルチコアシステムのメモリ同期のためのシステムを含むデータベースの概略図を示す。
【図３】本発明の一実施例によるマルチコアシステムのメモリ同期のための方法の概略フローチャートの図を示す。
【図４】本発明の一実施例に従って親アドレス空間を共有する全てのハードウェア処理コアに対してオペレーティングシステムカーネルがTLBシュートダウンIPIを発行する概略図を示す。
【図５】本発明の一実施例によるCoWページフォールト処理中のオペレーティングシステムカーネルの概略図を示す。
【発明を実施するための形態】
【００４７】
関連する図面において、同一の参照符号は、同一の或いは少なくとも等価な要素、部分、ユニット又はステップを示す。さらに、添付の図面の全てが縮尺通りとは限らない点に留意すべきである。
【００４８】
本発明の実施例における技術的解決策は、本発明の実施例における添付図面を詳細に参照して以下に明確且つ完全に説明される。
【００４９】
明らかに、記載される実施例は、全ての実施例ではなく、本発明のいくつかの実施例のみである。本発明の記載される実施例に基づいて、創造的取り組みを行うことなく当業者により得られる全ての他の実施例は、本発明の保護範囲内に入るものとする。
【００５０】
図１は、本発明の一実施例によるマルチコアシステムのメモリ同期のためのシステムの概略図を示す。
【００５１】
図１は、マルチコアシステム1000のメモリ同期のためのシステム100の実施例を示しており、システム100は、割り当てモジュール10と、マッピングモジュール20と、インタフェースモジュール30とを含む。
【００５２】
割り当てモジュール10は、少なくとも１つのメモリパーティション200-1,...,200-nをマルチコアシステム1000の少なくとも１つのコア1010-1,...,1010-nに割り当てるように構成されてもよい。
【００５３】
マッピングモジュール20は、少なくとも１つのコア1010-1,...,1010-nに割り当てられたメモリパーティション200-1,...,200-nに関連するページテーブルエントリが修正された場合、マルチコアシステム1000の少なくとも１つのコア1010-1,...,1010-nに割り込みを送信することにより利用されるマルチコアシステム1000の変換索引バッファシュートダウンのための情報を提供するように構成されてもよい。
【００５４】
マッピングモジュール20は、TLBシュートダウンを実行するオペレーティングシステムカーネル3000によるTLBシュートダウン中に使用されるマッピング情報を提供してもよい。
【００５５】
インタフェースモジュール30は、ユーザ空間から割り当てモジュール10へのインタフェースを提供するように構成されてもよい。
【００５６】
図２は、本発明の実施例によるマルチコアシステムのメモリ同期のためのシステムを含むデータベースの概略図を示す。
【００５７】
図２は、少なくとも１つのコア1010-1,...,1010-nを有するマルチコアシステム1000と、少なくとも１つのメモリパーティション200-1,...,200-nを有するメモリシステム200と、マルチコアシステム1000のメモリ同期のためのシステム100とを含むデータベース2000の概略図を示す。
【００５８】
システム100は、割り当てモジュール10と、マッピングモジュール20と、インタフェースモジュール30とを含んでもよい。
【００５９】
図３は、本発明の一実施例によるマルチコアシステムのメモリ同期のための方法の概略フローチャートの図を示す。
【００６０】
方法の第１のステップとして、割り当てモジュール10を使用して、少なくとも１つのメモリパーティション200-1,...,200-nをマルチコアシステム1000の少なくとも１つのコア1010-1,...,1010-nに割り当てることS1が行われる。
【００６１】
方法の第２のステップとして、マッピングモジュール20を使用して、マルチコアシステム1000の変換索引バッファシュートダウンを提供することS2が行われる。
【００６２】
方法の第３のステップとして、少なくとも１つのコア1010-1,...,1010-nに割り当てられたメモリパーティション200-1,...,200-nに関連するページテーブルエントリが修正された場合、マルチコアシステム1000の少なくとも１つのコア1010-1,...,1010-nに割り込みを送信することS3が行われる。
【００６３】
方法の第４のステップとして、インタフェースモジュール30を使用して、割り当てモジュール10へのインタフェースをユーザ空間に提供することS4が行われる。
【００６４】
図４は、本発明の一実施例に従って親アドレス空間を共有する全てのハードウェア処理コアに対してオペレーティングシステムカーネルがTLBシュートダウンIPIを発行する概略図を示す。
【００６５】
図４は、OLTP動作がメモリを更新することを試みる場合、親アドレス空間を共有する全てのハードウェア処理コアに対してオペレーティングシステムカーネル3000がTLBシュートダウンIPIを発行することを示す。これは、ハードウェアMMUの保護ユニットから発生した例外により引き起こされた、オペレーティングシステムによるCoWページフォールト処理中に起きる。
【００６６】
本発明の例示的な実施例によれば、実装は、TLBシュートダウンの目的で（例えば、オペレーティングシステムカーネルへの新たなシステムコールのセットを導入することにより）、特定のCPUコアへのメモリパーティションの結び付きを制御するユーザ空間／データベースアプリケーションへの必要とされるインタフェースを公開するために、オペレーティングシステムカーネル3000への修正又は拡張を含んでもよい。
【００６７】
更なる利点は、システムコールの新たなセットを介してデータベース2000からオペレーティングシステムカーネル3000に渡された情報を調べるために、コピーオンライトページのページフォールト時間中に関与する、関係するオペレーティングシステムカーネル3000のTLBシュートダウン機能を相応に拡張することにより提供される。
【００６８】
さらに、あらゆるOLTPスレッドが１つ以上のメモリパーティションで動作することを確保し、新たなシステムコールによってこの情報をカーネル3000に伝達することにより、データベース2000による機構の利用が改善される。
【００６９】
本発明の例示的な実施例によれば、ハイブリッド型OLTP／OLAPインメモリデータベース2000がMMUに基づくCoWスナップショット処理機構を使用するシナリオにおいて、図４に示すようにOLTPトランザクションが（CoWページフォールト処理中に）現在スナップショット処理されているメモリのいずれかの部分を更新することを試みる場合、オペレーティングシステムカーネル3000は、スレッドによって親アドレス空間を共有するハードウェア処理コア1010-1,...,1010-nの全てに対してIPIを介してTLBシュートダウン要求を必然的にブロードキャストしている。
【００７０】
本発明の例示的な実施例によれば、TLBシュートダウンIPIの制御された発送が組み込まれてもよく、これはユーザ空間により影響される。データベース／アプリケーションは、新たに導入されたシステムコールのセットによって制限されたCPUマスクをカーネルに定期的に（或いはオンデマンドで）提供することにより、IPIを受信するコア1010-1,...,1010-nのセットを低減する役目をする。
【００７１】
本発明の例示的な実施例によれば、CPUマスクは、マルチコアシステム1000のどのCPUコア1010-1,...,1010-nが含まれるべきであるか、且つどれが結び付きにより除外されるべきであるかを示すデータ構造である。カーネル無効化に関する機能は、CoWページフォールト中にIPIを選択的に発送するために、提供されたCPUマスクを利用するように修正される。
【００７２】
本発明の例示的な実施例によれば、データベース2000又はいずれかのアプリケーションは、さらに、対応するメモリ領域におけるこれらの動作を制限し、その領域に結び付けられた特定のコア1010-1,...,1010-nから動作することにより、そのユーザ空間スレッド（OLTPトランザクションを行う）がカーネル3000に渡された結び付きを遵守することを確保する役目をする。
【００７３】
TLB無効化IPIを制御するシステムコールは、その開始仮想メモリアドレスにより識別されるメモリブロックを指定し、CoWページフォールトがメモリの特定のブロックで生じた場合、マルチコアシステム1000のどのコア1010-1,...,1010-nがTLBシュートダウンIPIを受信するべきかを識別するCPUマスクを提供することにより動作する。
【００７４】
本発明の例示的な実施例によれば、オペレーティングシステムが割り当てられた領域を内部で把握しているため、メモリブロックは、オペレーティングシステムにより自動的に推測され（ユーザ空間の観点からアドレス長ペアを提供する必要はない）、供給された仮想メモリアドレスが属する包含するメモリブロックを容易に見つけることができる。
【００７５】
例えば、以下のシステムコールがオペレーティングシステムカーネルに導入されることができる。
・mem_region_set_cpumask(void  *addr,  cpumask_t  *cpumask);
・mem_region_get_cpumask(void  *addr,  cpumask_t  *cpumask);
内部の実装は、いくつかのプロセス毎のカーネル内部メモリ割り当てブックキーピング構造を調べることにより、供給された仮想メモリアドレス（addr）の包含するメモリ領域を見つける。
【００７６】
本発明の例示的な実施例によれば、割り当てられたメモリブロックに対応するカーネル内部構造も、システムコールから供給されるCPUマスク構造を記憶するために拡張される。
【００７７】
本発明の例示的な実施例によれば、システムコールは、包含するメモリ領域の特定の構造を見つけた後に、mem_region_set_cpumask（及びmem_region_get_cpumask）についてユーザ空間メモリからカーネル空間メモリへ（或いはカーネル空間からユーザ空間へ）CPUマスクをそれぞれコピーする。mem_region_set_cpumaskの場合、CPUマスクは、カーネル空間内にコピーされ、割り当てられたメモリブロックを識別する構造に記憶される。
【００７８】
図５は、本発明の一実施例によるCoWページフォールト処理中のオペレーティングシステムカーネルの概略図を示す。
【００７９】
図５は、CoWページフォールト処理中に、オペレーティングシステムカーネル3000が、アドレス空間を共有するあらゆる利用可能なコア1010-1,...,1010-nにTLBシュートダウンIPIをブロードキャストする代わりに、TLBシュートダウンIPIを選択的に発行するために、（新たなシステムコールのセットを介して）データベース2000により以前に提供された結び付き情報を利用することができることを示す。
【００８０】
本発明の例示的な実施例によれば、コピーオンライトページフォールトを処理中に、カーネル3000は、包含するメモリ領域を見つけ、その領域に関連するCPUマスクを取得するための十分な情報を有する（処理されるハードウェア例外が障害のあるアドレスを提供している）。
【００８１】
本発明の例示的な実施例によれば、カーネル3000は、図５に示すように、対応するCPUマスク内に示されたコア1010-1,...,1010-nのみに対して向けられたTLBシュートダウンIPIを選択的に発行するために、続いてCPUマスクを使用することができる。
【００８２】
初期設定で、CPUマスクがデータベースにより供給されていない場合、オペレーティングシステムカーネルは、CoWページフォールト中にTLBシュートダウンを受信するコア1010-1,...,1010-nのセットを狭めるために利用され得る、ユーザ空間／データベースにより供給された情報が存在しないと仮定して、アドレス空間を共有する全てのコア1010-1,...,1010-nにIPIをブロードキャストすることにより、TLBシュートダウンを処理する。
【００８３】
本発明の例示的な実施例によれば、関係するシステムコールを介してCPUマスクを供給した後に、アプリケーション／データベースが「初期設定」のオペレーティングシステム動作に戻る必要がある場合、これは、初期設定の動作を復旧させるために、「ヌル」CPUマスクを提供することができる。
【００８４】
この参考の実装は、説明目的の役目を果たしているだけである。同じ方式は、データベース／アプリケーションからオペレーティングシステムカーネル3000への異なる種類のインタフェース及びセマンティックスを介して実装され得る。
【００８５】
本発明の例示的な実施例によれば、メモリ管理に関するオペレーティングシステムカーネルコール（例えば、mmap又は新たなシステムコール）は、CPUマスク（すなわち、処理コア1010-1,...,1010-nのセットへのメモリ領域の結び付き）を示すパラメータに適応するために拡張され得る。
【００８６】
他の例は、TLBシュートダウンIPIの目的で、コールにより割り当てられるメモリ領域がシステムコールが呼び出されたCPU（例えば、メモリ領域を割り当てるスレッドのCPU）に結び付けられるべきであることを暗示的に示す新たなフラグ（例えば、MAP_BIND）を導入する、既存のオペレーティングシステムカーネルコール（例えば、mmap）の修正及び拡張である。
【００８７】
しかし、参考の実装は、処理コア1010-1,...,1010-nへのメモリ領域の明示的な結び付きを可能にし、データベースシステム2000の実行時を通じて結び付きの修正を可能にするため、更なる柔軟性を提供する。
【００８８】
この開示はまた、実行された場合、少なくとも１つのコンピュータに、ここに記載される実行及び計算ステップを実行させるコンピュータ実行可能コード又はコンピュータ実行可能命令を含むコンピュータプログラムプロダクトもサポートする。
【００８９】
多くの代替、修正及び変形が前述の教示を鑑みて当業者に明らかになる。当然、当業者は、ここに記載されるものを超える本発明の多数の適用が存在することを容易に認識する。
【００９０】
本発明は、１つ以上の特定の実施例を参照して説明されているが、当業者は、本発明の範囲を逸脱することなく、多くの変更が行われてもよいことを認識する。したがって、添付の請求項及びその均等物の範囲内で、ここに特に記載されるものと別の方法で発明が実施されてもよいことが理解されるべきである。
【００９１】
請求項において、「含む」という言葉は、他の要素又はステップを除外せず、不定冠詞「a」又は「an」は複数を除外しない。単一のプロセッサ又は他のユニットは、請求項に記載の複数の項目の機能を実現してもよい。
【００９２】
特定の手段が相互に異なる従属請求項に記載されているという単なる事実は、これらの手段の組み合わせが有利に使用することができないことを示すのではない。コンピュータプログラムは、他のハードウェアと共に或いは他のハードウェアの一部として供給される光記憶媒体又はソリッドステート媒体のような適切な媒体に記憶又は分配されてもよいが、インターネット又は他の有線若しくは無線通信システムを介するような他の形式で分配されてもよい。
【図１】
0006421247.tif 000002
【図２】
0006421247.tif 000003
【図３】
0006421247.tif 000004
【図４】
0006421247.tif 000005
【図５】
0006421247.tif 000006