(57)【要約】  トランザクションコンフリクトを検出する方法及び装置並びにコンピュータシステムが提供される。本方法は、メモリが不揮発性メモリNVMであるコンピュータシステムに適用され、メモリは、2つ以上のメモリ領域を含み、2つ以上のメモリ領域は異なる検出ポリシーを有する。メモリコントローラは、第1トランザクションの2つ以上の動作命令内のアドレスを受信し、2つ以上の動作命令によりアクセスされるメモリ領域を決定する(205)。メモリコントローラは、第1メモリ領域の第1検出ポリシーに従い第1メモリ領域にアクセスする動作命令に対しコンフリクトを検出し(210)、第2メモリ領域の第2検出ポリシーに従い第2メモリ領域にアクセスする動作命令に対しコンフリクトを検出し(215)、2つ以上の動作命令のコンフリクト検出結果に従い第1トランザクションのコンフリクト検出結果を得る(220)。
2018500697.tif 000002
【特許請求の範囲】
【請求項１】
トランザクションコンフリクトを検出するための方法であって、前記方法は、メモリが不揮発性メモリNVMであるコンピュータシステムに適用され、前記メモリが少なくとも2つのメモリ領域を備え、前記少なくとも2つのメモリ領域が異なる検出ポリシーを有し、前記方法がメモリコントローラによって実行され、前記方法は、
第1のトランザクションの少なくとも2つの動作命令を受信するステップであって、前記第1のトランザクションの各動作命令がアドレスを運ぶ、ステップと、
前記少なくとも2つの動作命令内の前記アドレスに従って、前記少なくとも2つの動作命令によってアクセスされるメモリ領域を決定するステップと、
前記少なくとも2つのメモリ領域の第1のメモリ領域の第1の検出ポリシーに従って、前記第1のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するステップと、
前記少なくとも2つのメモリ領域の第2のメモリ領域の第2の検出ポリシーに従って、前記第2のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するステップと、
前記少なくとも2つの動作命令のコンフリクト検出結果に従って前記第1のトランザクションのコンフリクト検出結果を得るステップであって、前記少なくとも2つの動作命令の前記コンフリクト検出結果が、前記第1のメモリ領域にアクセスすることである前記少なくとも1つの動作命令の検出結果、および前記第2のメモリ領域にアクセスすることである前記少なくとも1つの動作命令の検出結果を少なくとも含む、ステップと、
を含む、トランザクションコンフリクトを検出するための方法。
【請求項２】
前記少なくとも2つの動作命令のコンフリクト検出結果に従って前記第1のトランザクションのコンフリクト検出結果を得る前記ステップが、
前記第1のトランザクションの前記少なくとも2つの動作命令のうちの1つの動作命令内のアドレスが属するアドレス範囲が、前記コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と同じであることが検出された場合、前記第1のトランザクションが前記コンピュータシステムによって実行されているトランザクションと衝突すると決定するステップ、または
前記第1のトランザクションの前記少なくとも2つの動作命令内のアドレスが属するアドレス範囲が、前記コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と異なることが検出された場合、前記第1のトランザクションが前記コンピュータシステムによって実行されているトランザクションと衝突しないと決定するステップ
を含む、請求項1に記載の方法。
【請求項３】
前記少なくとも2つのメモリ領域の第1のメモリ領域の第1の検出ポリシーに従って、前記第1のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行する前記ステップが、
前記第1のメモリ領域に設定される第1のブルームフィルタbloom filterを使用して、前記第1のメモリ領域にアクセスすることである前記少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するステップであって、前記第1のブルームフィルタが、前記コンピュータシステムによって実行されており、かつ前記第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、前記第1のメモリ領域にアクセスする前記動作命令内の前記アドレスが属する前記アドレス範囲が、前記第1の検出ポリシーの検出粒度によって決定される、ステップを含み、
前記少なくとも2つのメモリ領域の第2のメモリ領域の第2の検出ポリシーに従って、前記第2のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行する前記ステップが、
前記第2のメモリ領域に設定される第2のブルームフィルタを使用して、前記第2のメモリ領域にアクセスすることである前記少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するステップであって、前記第2のブルームフィルタが、前記コンピュータシステムによって実行されており、かつ前記第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、前記第2のメモリ領域にアクセスする前記動作命令内の前記アドレスが属する前記アドレス範囲が、前記第2の検出ポリシーの検出粒度によって決定され、前記第2の検出ポリシーの前記検出粒度が、前記第1の検出ポリシーの前記検出粒度と異なる、ステップ
を含む、請求項1または2に記載の方法。
【請求項４】
第2のトランザクションの少なくとも2つの動作命令を受信するステップであって、前記第2のトランザクションの前記少なくとも2つの動作命令の各動作命令がアドレスを運ぶ、ステップと、
前記第2のトランザクションの前記少なくとも2つの動作命令内の前記アドレスに従って、前記第2のトランザクションの前記少なくとも2つの動作命令が、前記第1のメモリ領域にアクセスすることであると決定するステップと、
前記第1のメモリ領域の前記第1の検出ポリシーに従って、前記第2のトランザクションの前記少なくとも2つの動作命令に対してコンフリクト検出を実行するステップと、
前記第2のトランザクションの前記少なくとも2つの動作命令の検出結果に従って、前記第2のトランザクションのコンフリクト検出結果を得るステップと、
をさらに含む、請求項1から3のいずれか一項に記載の方法。
【請求項５】
第3のトランザクションの少なくとも2つの動作命令を受信するステップであって、前記第3のトランザクションの前記少なくとも2つの動作命令の各動作命令がアドレスを運ぶ、ステップと、
前記第3のトランザクションの前記少なくとも2つの動作命令内の前記アドレスに従って、前記第3のトランザクションの前記少なくとも2つの動作命令が、前記第2のメモリ領域にアクセスすることであると決定するステップと、
前記第2のメモリ領域の前記第2の検出ポリシーに従って、前記第3のトランザクションの前記少なくとも2つの動作命令に対してコンフリクト検出を実行するステップと、
前記第3のトランザクションの前記少なくとも2つの動作命令の検出結果に従って、前記第3のトランザクションのコンフリクト検出結果を得るステップと、
をさらに含む、請求項1から4のいずれか一項に記載の方法。
【請求項６】
第1のトランザクションの少なくとも2つの動作命令をメモリコントローラに送信するように構成されるプロセッサと、
データを格納するように構成されるメモリであって、前記メモリが不揮発性メモリであり、前記メモリが少なくとも2つのメモリ領域を含み、前記少なくとも2つのメモリ領域が異なる検出ポリシーを有する、メモリと、
前記プロセッサによって送信される前記第1のトランザクションの前記少なくとも2つの動作命令を受信するように構成され、前記第1のトランザクションの各動作命令がアドレスを運び、
前記少なくとも2つの動作命令内のアドレスに従って、前記少なくとも2つの動作命令によってアクセスされるメモリ領域を決定するように構成され、
前記少なくとも2つのメモリ領域の第1のメモリ領域の第1の検出ポリシーに従って、前記第1のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するように構成され、
前記少なくとも2つのメモリ領域の第2のメモリ領域の第2の検出ポリシーに従って、前記第2のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するように構成され、かつ
前記少なくとも2つの動作命令のコンフリクト検出結果に従って前記第1のトランザクションのコンフリクト検出結果を得るように構成され、前記少なくとも2つの動作命令の前記コンフリクト検出結果が、前記第1のメモリ領域にアクセスすることである前記少なくとも1つの動作命令の検出結果、および前記第2のメモリ領域にアクセスすることである前記少なくとも1つの動作命令の検出結果を少なくとも含む、前記メモリコントローラと、
を備える、コンピュータシステム。
【請求項７】
前記メモリコントローラが、
前記第1のトランザクションの前記少なくとも2つの動作命令のうちの1つの動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と同じであることが検出された場合、前記第1のトランザクションが前記コンピュータシステムによって実行されているトランザクションと衝突すると決定するように特に構成され、かつ
前記第1のトランザクションの前記少なくとも2つの動作命令内のアドレスが属するアドレス範囲が、前記コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と異なることが検出された場合、前記第1のトランザクションが前記コンピュータシステムによって実行されているトランザクションと衝突しないと決定するように特に構成される、請求項6に記載のコンピュータシステム。
【請求項８】
前記メモリコントローラが、
前記第1のメモリ領域に設定される第1のブルームフィルタbloom filterを使用して、前記第1のメモリ領域にアクセスすることである前記少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するように特に構成され、前記第1のブルームフィルタが、前記コンピュータシステムによって実行されており、かつ前記第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、前記第1のメモリ領域にアクセスする前記動作命令内の前記アドレスが属する前記アドレス範囲が、前記第1の検出ポリシーの検出粒度によって決定され、かつ
前記第2のメモリ領域に設定される第2のブルームフィルタを使用して、前記第2のメモリ領域にアクセスすることである前記少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するように特に構成され、前記第2のブルームフィルタが、前記コンピュータシステムによって実行されており、かつ前記第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、前記第2のメモリ領域にアクセスする前記動作命令内の前記アドレスが属する前記アドレス範囲が、前記第2の検出ポリシーの検出粒度によって決定され、前記第2の検出ポリシーの前記検出粒度が、前記第1の検出ポリシーの前記検出粒度と異なる、請求項6または7に記載のコンピュータシステム。
【請求項９】
前記プロセッサが、第2のトランザクションの少なくとも2つの動作命令を前記メモリコントローラに送信するようにさらに構成され、
前記メモリコントローラが、
前記第2のトランザクションの前記少なくとも2つの動作命令を受信するようにさらに構成され、前記第2のトランザクションの前記少なくとも2つの動作命令の各動作命令がアドレスを運び、
前記第2のトランザクションの前記少なくとも2つの動作命令内の前記アドレスに従って、前記第2のトランザクションの前記少なくとも2つの動作命令が、前記第1のメモリ領域にアクセスすることであると決定するようにさらに構成され、
前記第1のメモリ領域の前記第1の検出ポリシーに従って、前記第2のトランザクションの前記少なくとも2つの動作命令に対してコンフリクト検出を実行するようにさらに構成され、かつ
前記第2のトランザクションの前記少なくとも2つの動作命令の検出結果に従って、前記第2のトランザクションのコンフリクト検出結果を得るようにさらに構成される、
請求項6から8のいずれか一項に記載のコンピュータシステム。
【請求項１０】
前記プロセッサが、第3のトランザクションの少なくとも2つの動作命令を前記メモリコントローラに送信するようにさらに構成され、
前記メモリコントローラが、
前記第3のトランザクションの前記少なくとも2つの動作命令を受信するようにさらに構成され、前記第3のトランザクションの前記少なくとも2つの動作命令の各動作命令がアドレスを運び、
前記第3のトランザクションの前記少なくとも2つの動作命令内の前記アドレスに従って、前記第3のトランザクションの前記少なくとも2つの動作命令が、前記第2のメモリ領域にアクセスすることであると決定するようにさらに構成され、
前記第2のメモリ領域の前記第2の検出ポリシーに従って、前記第3のトランザクションの前記少なくとも2つの動作命令に対してコンフリクト検出を実行するようにさらに構成され、かつ
前記第3のトランザクションの前記少なくとも2つの動作命令の検出結果に従って、前記第3のトランザクションのコンフリクト検出結果を得るようにさらに構成される、
請求項6から9のいずれか一項に記載の方法。
【請求項１１】
コンフリクトを検出するための装置であって、前記装置は、メモリが不揮発性メモリNVMであるコンピュータシステムに適用され、前記メモリが少なくとも2つのメモリ領域を備え、前記少なくとも2つのメモリ領域が異なる検出ポリシーを有し、前記装置は、
第1のトランザクションの少なくとも2つの動作命令を受信するように構成される受信モジュールであって、前記第1のトランザクションの各動作命令がアドレスを運ぶ、受信モジュールと、
前記少なくとも2つの動作命令内の前記アドレスに従って、前記少なくとも2つの動作命令によってアクセスされるメモリ領域を決定するように構成される、決定モジュールと、
前記少なくとも2つのメモリ領域の第1のメモリ領域の第1の検出ポリシーに従って、前記第1のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行し、かつ前記少なくとも2つのメモリ領域の第2のメモリ領域の第2の検出ポリシーに従って、前記第2のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するように構成される、検出モジュールと、
前記少なくとも2つの動作命令のコンフリクト検出結果に従って前記第1のトランザクションのコンフリクト検出結果を得るように構成される処理モジュールであって、前記少なくとも2つの動作命令の前記コンフリクト検出結果が、前記第1のメモリ領域にアクセスすることである前記少なくとも1つの動作命令の検出結果、および前記第2のメモリ領域にアクセスすることである前記少なくとも1つの動作命令の検出結果を少なくとも含む、処理モジュールと、
を備える、コンフリクトを検出するための装置。
【請求項１２】
前記処理モジュールが、
前記第1のトランザクションの前記少なくとも2つの動作命令のうちの1つの動作命令内のアドレスが属するアドレス範囲が、前記コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と同じであることが検出された場合、前記第1のトランザクションが前記コンピュータシステムによって実行されているトランザクションと衝突すると決定するように特に構成され、かつ
前記第1のトランザクションの前記少なくとも2つの動作命令内のアドレスが属するアドレス範囲が、前記コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と異なることが検出された場合、前記第1のトランザクションが前記コンピュータシステムによって実行されているトランザクションと衝突しないと決定するように特に構成される、請求項11に記載の装置。
【請求項１３】
前記検出モジュールが、
前記第1のメモリ領域に設定される第1のブルームフィルタbloom filterを使用して、前記第1のメモリ領域にアクセスすることである前記少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するように特に構成され、前記第1のブルームフィルタが、前記コンピュータシステムによって実行されており、かつ前記第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、前記第1のメモリ領域にアクセスする前記動作命令内の前記アドレスが属する前記アドレス範囲が、前記第1の検出ポリシーの検出粒度によって決定され、かつ
前記第2のメモリ領域に設定される第2のブルームフィルタを使用して、前記第2のメモリ領域にアクセスすることである前記少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するように特に構成され、前記第2のブルームフィルタが、前記コンピュータシステムによって実行されており、かつ前記第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、前記第2のメモリ領域にアクセスする前記動作命令内の前記アドレスが属する前記アドレス範囲が、前記第2の検出ポリシーの検出粒度によって決定され、前記第2の検出ポリシーの前記検出粒度が、前記第1の検出ポリシーの前記検出粒度と異なる、
請求項11または12に記載の装置。
【請求項１４】
前記受信モジュールが、第2のトランザクションの前記少なくとも2つの動作命令を受信するようにさらに構成され、前記第2のトランザクションの前記少なくとも2つの動作命令の各動作命令がアドレスを運び、
前記決定モジュールが、前記第2のトランザクションの前記少なくとも2つの動作命令内の前記アドレスに従って、前記第2のトランザクションの前記少なくとも2つの動作命令が、前記第1のメモリ領域にアクセスすることであると決定するようにさらに構成され、
前記検出モジュールが、前記第1のメモリ領域の前記第1の検出ポリシーに従って、前記第2のトランザクションの前記少なくとも2つの動作命令に対してコンフリクト検出を実行するようにさらに構成され、
前記処理モジュールが、前記第2のトランザクションの前記少なくとも2つの動作命令の検出結果に従って、前記第2のトランザクションのコンフリクト検出結果を得るようにさらに構成される、
請求項11から13のいずれか一項に記載の方法。
【請求項１５】
前記受信モジュールが、第3のトランザクションの少なくとも2つの動作命令を受信するようにさらに構成され、前記第3のトランザクションの前記少なくとも2つの動作命令の各動作命令がアドレスを運び、
前記決定モジュールが、前記第3のトランザクションの前記少なくとも2つの動作命令内の前記アドレスに従って、前記第3のトランザクションの前記少なくとも2つの動作命令が、前記第2のメモリ領域にアクセスすることであると決定するようにさらに構成され、
前記検出モジュールが、前記第2のメモリ領域の前記第2の検出ポリシーに従って、前記第3のトランザクションの前記少なくとも2つの動作命令に対してコンフリクト検出を実行するようにさらに構成され、
前記処理モジュールが、前記第3のトランザクションの前記少なくとも2つの動作命令の検出結果に従って、前記第3のトランザクションのコンフリクト検出結果を得るようにさらに構成される、
請求項11から14のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ技術の分野に関し、具体的には、トランザクションコンフリクトを検出するための方法および装置、ならびにコンピュータシステムに関する。
【背景技術】
【０００２】
当業者は、先行技術において、異なるスレッド間の同期、共有リソースへのアクセス、または同様のものが、ロック機構を使用して達成されることを知っている。しかしながら、ロック機構をベースとした並行性システムには多くの問題が存在する。例えば、共有データの保護はロック機構を使用して実装され得るが、普通のプログラマが精細粒度ロックを使用して効率的な並行アプリケーションを実装することは困難である。加えて、ロック機構は、並行アプリケーションの効率性およびパフォーマンスに影響を及ぼす問題、例えば、デッドロックおよび優先順位の逆転をもたらす。
【０００３】
先述の問題を解決するために、当業者はトランザクションメモリ技術を提案した。トランザクションメモリは、並行プログラムを設計する様式であり、トランザクションメモリは、データベース管理システム(Database manage system、DBMS)内のトランザクション概念に由来する。データベース管理システムにおいて、トランザクションは、原子性、一貫性、独立性、および永続性の特徴を満たす必要がある。原子性とは、トランザクション内の動作がすべて実行されるか、または動作が1つも実行されないことを意味する。一貫性とは、データベースがどんなときにも一貫した状態になければならないこと、すなわち、いくつかの予め設定された条件が満たされなければならないことを意味する。独立性とは、トランザクションが別の未送信のトランザクションに関与する内部オブジェクトを見ることができない状態を意味する。永続性とは、送信されたトランザクションによってデータベースシステムになされた変更が永続的でなければならないことを意味する。トランザクションの原子性の役割は、異なるスレッド間に同期を実装することができるロック機構の役割と類似している。
【０００４】
先行技術において、トランザクションメモリは、基本的に、CPUのレベル1またはレベル2キャッシュ(cache)に実装される。例えば、専用のキャッシュ機構が、トランザクションコンフリクト検出およびトランザクションロールバック機構を実装するためにレベル1キャッシュに追加される。トランザクションコンフリクト検出は、一定の検出粒度に基づいて実装される。例えば、コンフリクト検出は、オブジェクト粒度、ワード粒度、またはバイト粒度に基づいてトランザクション上で実行され得る。しかしながら、ファイルシステムにおいては、一般的に、メタデータのアクセス粒度とファイルシステムのファイルデータとの間には比較的大きな差が存在する。コンフリクト検出がトランザクションに対して実施されるときに使用される検出粒度が過度に粗い場合、多くの間違った検出が発生し得る。コンフリクト検出がトランザクションに対して実施されるときに使用される検出粒度が過度に細かい場合、より多くのシステムリソースが消費される。
【発明の概要】
【課題を解決するための手段】
【０００５】
本発明の実施形態において提供されるトランザクションコンフリクトを検出するための方法および装置、ならびにコンピュータシステムによると、検出の正確性が、システムリソースを節約することに基づいて改善され得る。
【０００６】
第1の態様によると、本発明の実施形態は、トランザクションコンフリクトを検出するための方法を提供し、本方法は、メモリが不揮発性メモリNVMであるコンピュータシステムに適用され、メモリは少なくとも2つのメモリ領域を含み、少なくとも2つのメモリ領域は異なる検出ポリシーを有し、本方法はメモリコントローラによって実行され、本方法は、
第1のトランザクションの少なくとも2つの動作命令を受信するステップであって、第1のトランザクションの各動作命令がアドレスを運ぶ、ステップと、
少なくとも2つの動作命令内のアドレスに従って、少なくとも2つの動作命令によってアクセスされるメモリ領域を決定するステップと、
少なくとも2つのメモリ領域の第1のメモリ領域の第1の検出ポリシーに従って、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するステップと、
少なくとも2つのメモリ領域の第2のメモリ領域の第2の検出ポリシーに従って、第2のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するステップと、
少なくとも2つの動作命令のコンフリクト検出結果に従って第1のトランザクションのコンフリクト検出結果を得るステップであって、少なくとも2つの動作命令のコンフリクト検出結果が、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令の検出結果、および第2のメモリ領域にアクセスすることである少なくとも1つの動作命令の検出結果を少なくとも含む、ステップと、を含む。
【０００７】
第1の態様を参照して、第1の態様の第1の考えられる実装様式において、少なくとも2つの動作命令のコンフリクト検出結果に従って第1のトランザクションのコンフリクト検出結果を得るステップは、
第1のトランザクションの少なくとも2つの動作命令のうちの1つの動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と同じであることが検出された場合、第1のトランザクションがコンピュータシステムによって実行されているトランザクションと衝突すると決定するステップ、または
第1のトランザクションの少なくとも2つの動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と異なることが検出された場合、第1のトランザクションがコンピュータシステムによって実行されているトランザクションと衝突しないと決定するステップを含む。
【０００８】
第1の態様または第1の態様の第1の考えられる実装様式を参照して、第1の態様の第2の考えられる実装様式において、少なくとも2つのメモリ領域の第1のメモリ領域の第1の検出ポリシーに従って、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するステップは、
第1のメモリ領域に設定される第1のブルームフィルタbloom filterを使用して、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するステップであって、第1のブルームフィルタが、コンピュータシステムによって実行されており、かつ第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲が、第1の検出ポリシーの検出粒度によって決定される、ステップを含み、
少なくとも2つのメモリ領域の第2のメモリ領域の第2の検出ポリシーに従って、第2のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するステップは、
第2のメモリ領域に設定される第2のブルームフィルタを使用して、第2のメモリ領域にアクセスすることである少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するステップであって、第2のブルームフィルタが、コンピュータシステムによって実行されており、かつ第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲が、第2の検出ポリシーの検出粒度によって決定され、第2の検出ポリシーの検出粒度が、第1の検出ポリシーの検出粒度と異なる、ステップを含む。
【０００９】
第2の態様によると、本発明の実施形態は、コンピュータシステムを提供し、本コンピュータシステムは、
第1のトランザクションの少なくとも2つの動作命令をメモリコントローラに送信するように構成されるプロセッサと、
データを格納するように構成されるメモリであって、メモリが不揮発性メモリであり、メモリが少なくとも2つのメモリ領域を有し、少なくとも2つのメモリ領域が異なる検出ポリシーを有する、メモリと、
プロセッサによって送信される第1のトランザクションの少なくとも2つの動作命令を受信するように構成され、ここでは第1のトランザクションの各動作命令がアドレスを運び、
少なくとも2つの動作命令内のアドレスに従って、少なくとも2つの動作命令によってアクセスされるメモリ領域を決定するように構成され、
少なくとも2つのメモリ領域の第1のメモリ領域の第1の検出ポリシーに従って、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するように構成され、
少なくとも2つのメモリ領域の第2のメモリ領域の第2の検出ポリシーに従って、第2のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するように構成され、かつ
少なくとも2つの動作命令のコンフリクト検出結果に従って第1のトランザクションのコンフリクト検出結果を得るように構成され、ここでは少なくとも2つの動作命令のコンフリクト検出結果が、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令の検出結果、および第2のメモリ領域にアクセスすることである少なくとも1つの動作命令の検出結果を少なくとも含む、メモリコントローラと、を含む。
【００１０】
第2の態様を参照して、第2の態様の第1の考えられる実装様式において、メモリコントローラは、
第1のトランザクションの少なくとも2つの動作命令のうちの1つの動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と同じであることが検出された場合、第1のトランザクションがコンピュータシステムによって実行されているトランザクションと衝突すると決定するように特に構成され、かつ
第1のトランザクションの少なくとも2つの動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と異なることが検出された場合、第1のトランザクションがコンピュータシステムによって実行されているトランザクションと衝突しないと決定するように特に構成される。
【００１１】
第2の態様または第2の態様の第1の考えられる実装様式を参照して、第2の態様の第2の考えられる実装様式において、メモリコントローラは、
第1のメモリ領域に設定される第1のブルームフィルタbloom filterを使用して、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するように特に構成され、ここでは第1のブルームフィルタが、コンピュータシステムによって実行されており、かつ第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲が、第1の検出ポリシーの検出粒度によって決定され、かつ
第2のメモリ領域に設定される第2のブルームフィルタを使用して、第2のメモリ領域にアクセスすることである少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するように特に構成され、ここでは第2のブルームフィルタが、コンピュータシステムによって実行されており、かつ第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲が、第2の検出ポリシーの検出粒度によって決定され、第2の検出ポリシーの検出粒度が、第1の検出ポリシーの検出粒度と異なる。
【００１２】
第3の態様によると、本発明の実施形態は、トランザクションコンフリクトを検出するための装置を提供し、本装置は、メモリが不揮発性メモリNVMであるコンピュータシステムに適用され、メモリは少なくとも2つのメモリ領域を含み、少なくとも2つのメモリ領域は異なる検出ポリシーを有し、本装置は、
第1のトランザクションの少なくとも2つの動作命令を受信するように構成される受信モジュールであって、第1のトランザクションの各動作命令がアドレスを運ぶ、受信モジュールと、
少なくとも2つの動作命令内のアドレスに従って、少なくとも2つの動作命令によってアクセスされるメモリ領域を決定するように構成される、決定モジュールと、
少なくとも2つのメモリ領域の第1のメモリ領域の第1の検出ポリシーに従って、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行し、かつ少なくとも2つのメモリ領域の第2のメモリ領域の第2の検出ポリシーに従って、第2のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するように構成される、検出モジュールと、
少なくとも2つの動作命令のコンフリクト検出結果に従って第1のトランザクションのコンフリクト検出結果を得るように構成される処理モジュールであって、少なくとも2つの動作命令のコンフリクト検出結果が、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令の検出結果、および第2のメモリ領域にアクセスすることである少なくとも1つの動作命令の検出結果を少なくとも含む、処理モジュールと、を含む。
【００１３】
第3の態様を参照して、第3の態様の第1の考えられる実装様式において、処理モジュールは、
第1のトランザクションの少なくとも2つの動作命令のうちの1つの動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と同じであることが検出された場合、第1のトランザクションがコンピュータシステムによって実行されているトランザクションと衝突すると決定するように特に構成され、かつ
第1のトランザクションの少なくとも2つの動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と異なることが検出された場合、第1のトランザクションがコンピュータシステムによって実行されているトランザクションと衝突しないと決定するように特に構成される。
【００１４】
第3の態様または第3の態様の第1の考えられる実装様式を参照して、第3の態様の第2の考えられる実装様式において、検出モジュールは、
第1のメモリ領域に設定される第1のブルームフィルタbloom filterを使用して、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するように特に構成され、ここでは第1のブルームフィルタが、コンピュータシステムによって実行されており、かつ第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲が、第1の検出ポリシーの検出粒度によって決定され、かつ
第2のメモリ領域に設定される第2のブルームフィルタを使用して、第2のメモリ領域にアクセスすることである少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するように特に構成され、ここでは第2のブルームフィルタが、コンピュータシステムによって実行されており、かつ第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲が、第2の検出ポリシーの検出粒度によって決定され、第2の検出ポリシーの検出粒度が、第1の検出ポリシーの検出粒度と異なる。
【００１５】
第4の態様によると、本発明の実施形態は、プログラムコードを格納するコンピュータ可読記憶媒体を含む、コンピュータプログラム製品を提供し、ここでは本プログラムコードに含まれる命令は、先述の第1の態様の方法を実行するために使用される。
【００１６】
本発明の実施形態において提供されるトランザクションコンフリクトを検出するための方法において、同じトランザクションの異なる動作命令が異なるメモリ領域にアクセスすることに従って、異なる検出ポリシーが、検出を実施するために同じトランザクションの異なる動作命令に対して使用され、このトランザクションのコンフリクト検出結果は、同じトランザクションのすべての動作命令のコンフリクト検出結果に従って決定される。したがって、検出の正確性とコンフリクト検出を実装するためのシステムによってもたらされるシステムリソース消費とのバランスは、システムリソース消費を減少させながらコンフリクト検出の正確性が改善され得るように実装され得る。
【００１７】
本発明の実施形態または先行技術における技術的解決策をより明白に説明するために、以下、実施形態を説明するのに必要とされる添付の図面を簡単に説明する。明らかに、以下の説明における添付の図面は、本発明の実施形態を単にいくつか示すだけである。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態に従うコンピュータシステムの概略構造図である。
【図２】本発明の実施形態に従うトランザクションコンフリクトを検出するための方法の概略流れ図である。
【図３−Ａ】本発明の実施形態に従うトランザクションの動作命令によってアクセスされるメモリ領域の概略図である。
【図３−Ｂ】本発明の実施形態に従うトランザクションの動作命令によってアクセスされるメモリ領域の概略図である。
【図３−Ｃ】本発明の実施形態に従うトランザクションの動作命令によってアクセスされるメモリ領域の概略図である。
【図３−Ｄ】本発明の実施形態に従うトランザクションの動作命令によってアクセスされるメモリ領域の概略図である。
【図４】本発明の実施形態に従うトランザクションコンフリクトを検出するための別の方法の概略流れ図である。
【図５】本発明の実施形態に従うトランザクションコンフリクトを検出するための別の方法の概略流れ図である。
【図６】本発明の実施形態に従うトランザクションコンフリクトを検出するための装置の概略構造図である。
【発明を実施するための形態】
【００１９】
本発明の技術的解決策を当業者により良く理解してもらうために、以下、本発明の実施形態における添付の図面を参照して、本発明の実施形態における技術的解決策を明白かつ完全に説明する。明らかに、説明される実施形態は、単に本発明の実施形態の一部であって、本発明の実施形態のすべてではない。
【００２０】
本発明の実施形態において提供されるトランザクションコンフリクトを検出するための方法は、メモリが不揮発性メモリであるコンピュータシステムに適用され得る。図1は、本発明の実施形態に従うコンピュータシステムの概略構造図である。図1に示されるように、コンピュータシステム100は、中央処理装置(Central Processing Unit、CPU)10、メモリコントローラ20、およびメモリ30を含む。図1に示されるように、CPU10は、コンピュータシステム100の計算コア(Core)および制御コア(Control Unit)である。CPU10は、超大規模の集積回路であり得る。CPU10がメモリ、キャッシュ、および磁気ディスクにアクセスすることができるように、オペレーティングシステムおよび別のソフトウェアプログラムが、CPU10にインストールされる。本発明のこの実施形態において、CPU10は単にプロセッサの一例にすぎないことが理解され得る。CPU10に加えて、プロセッサはさらに、別の特定用途向け集積回路ASIC(Application Specific Integrated Circuit)、または本発明の実施形態を実装するように構成される1つもしくは複数の集積回路であり得る。
【００２１】
メモリコントローラ(Memory Controller)20は、コンピュータシステム100内のメモリ30を制御し、かつメモリ30からCPU10へのデータ伝送速度を管理および計画するように構成されるバス回路コントローラである。メモリ30およびCPU10は、メモリコントローラ20を使用してデータを交換し得る。メモリコントローラ20は、スタンドアローンチップであり得、システムバスを使用してCPU10に接続される。当業者は、メモリコントローラ20がまた、関連した大チップに統合され得ることを知り得る。例えば、メモリコントローラ20は、マイクロプロセッサ(例えば、CPU10)内に統合され得るか、またはノースブリッジに組み込まれる。本発明のこの実施形態は、メモリコントローラ20の特定の場所に制限を設けない。説明を容易にするため、図1に示されるシステムアーキテクチャにおいて、メモリコントローラ20が別個に配置されるのは、説明のための例として使用される。メモリコントローラ20は、必要な論理を制御して、メモリ30にデータを書き込むか、またはメモリ30からデータを読み込む。
【００２２】
図1に示されるように、メモリコントローラ20は、制御論理202、キャッシュ204、およびバックエンド通信インターフェース206を含み得る。制御論理202、キャッシュ204、およびバックエンド通信インターフェース206は、通信バスを使用して相互通信を達成する。キャッシュ204は、CPU10とメモリ30との間の一時メモリである。キャッシュ204は、制御論理202によってメモリ30に書き込まれるべきコマンドおよびデータをバッファするように構成されるか、またはメモリ30から読み込まれるデータをバッファするように構成される。本発明のこの実施形態において、キャッシュ204はまた、次世代不揮発性メモリの記憶媒体で構成され得る。例えば、キャッシュ204は、磁気ランダムアクセスメモリ(Magnetic Random Access Memory、MRAM)であり得る。
【００２３】
バックエンド通信インターフェース206は、メモリ30と通信するように構成される。例えば、バックエンド通信インターフェース206は、制御論理202によって送られるメモリ30のアクセスコマンドを管理し、データ伝送を実施するように構成され得る。バックエンド通信インターフェース206は、メモリ30の異なるメモリ領域を接続するために使用される複数の通信チャネルを含み得ることが理解され得る。
【００２４】
制御論理202は、中央処理装置CPU、または特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、または本発明のこの実施形態を実装するように構成される1つもしくは複数の集積回路であり得る。制御論理202は、メモリ30のアクセス要求を実装したり、メモリ30のデータを管理したり、または同様のことを行い得る。例えば、制御論理202は、通信バスを使用して、CPU10によって送信されるメモリ30にアクセスするためのアクセスコマンドを受信し、そのアクセスコマンドに従って、メモリ30にアクセスし、バックエンド通信インターフェース206を使用して、メモリ30にデータを書き込むか、またはメモリ30からデータを読み込み得る。
【００２５】
メモリ30は、コンピュータシステム100のメインメモリである。メモリ30は、一般的に、オペレーティングシステム内で動作している様々なソフトウェア、ならびに入力および出力データ、外部記憶装置と交換される情報などを格納するように構成される。CPU10のアクセス速度を増加させるために、メモリ30は、高アクセス速度の利点を有する必要がある。従来のコンピュータシステムアーキテクチャにおいては、一般的に、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)が、メモリ30として使用される。不揮発性メモリ(Non-Volatile Memory、NVM)技術の発展により、NVMがメモリとして徐々に使用されている。
【００２６】
当業者は、次世代NVMが高アクセス速度および不揮発性の特徴を有し、さらには次世代NVMが、バイト(Byte)によるアドレス指定を実施し、ビット(bit)当たりベースで不揮発性記憶媒体へデータを書き込むことができることを知り得る。したがって、メモリとして使用されるとき、次世代NVMは、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)が行うように、データアクセスのレイテンシ(latency)を減少させることができる。加えて、DRAMと比較して、NVMは不揮発性を有するため、データをより良好に格納することができる。次世代NVMは、相変化メモリ(Phase Change Memory、PCM)、抵抗変化型ランダムアクセスメモリ(Resistive Random Access Memory、RRAM(登録商標))、磁気ランダムアクセスメモリ(Magnetic Random Access Memory、MRAM)、または強誘電体ランダムアクセスメモリ(Ferroelectric Random Access Memory、FRAM(登録商標))などの次世代不揮発性メモリを含み得る。本発明のこの実施形態内に提供されるコンピュータシステム100において、メモリ30は、次世代不揮発性メモリの不揮発性記憶媒体である。記憶媒体は、複数の記憶ユニットを含み得る。本発明のこの実施形態において、記憶媒体内の記憶ユニットとは、データを格納するために使用される最小記憶媒体を指す。例えば、記憶ユニットは、相変化メモリを構成する相変化記憶ユニット、磁気ランダムアクセスメモリを構成する磁気記憶ユニット、抵抗変化型ランダムアクセスメモリを構成する抵抗変化型記憶ユニットなどを含み得る。
【００２７】
本発明のこの実施形態において、メモリ30は、サービス要件に従って少なくとも2つのメモリ領域に分割され得る。例えば、図1に示されるように、メモリ30は、第1のメモリ領域32および第2のメモリ領域34に分割される。異なるメモリ領域は、異なる種類のデータを格納するために使用され得る。例えば、ファイルシステムがメモリ30内に確立されるとき、第1のメモリ領域32は、このファイルシステムのメタデータを格納するために使用され得、第2のメモリ領域34は、ファイルデータを格納するために使用され得る。間違いなく、図1に示される第1のメモリ領域32および第2のメモリ領域34に加えて、メモリ30は別のメモリ領域をさらに含み得、それは本明細書内では制限されないことが理解され得る。
【００２８】
当業者は、図1に示されるコンピュータシステム100では、CPU10によるメモリ30にアクセスするプロセスにおいて、トランザクションメモリ技術が、データ一貫性を確実にするために使用され得ることを知り得る。本発明のこの実施形態を明白に説明するために、以下、トランザクションおよびトランザクションのコンフリクト検出の概念を簡単に説明する。当業者は、トランザクションメモリ機構とは、トランザクション動作を使用してプログラミング複雑性を減少させるために、並行して処理される異なるスレッドの各々が、トランザクションとして処理されることであるということを知り得る。トランザクションは、データベース内のトランザクションに由来する概念であり、メモリに対する一連の順序だった読み込みおよび書き込み動作であり、ここではこれらの動作は同じスレッドにより実行される。トランザクションは、原子性を有し、すなわち、トランザクション内の動作はすべて実行されるか、または動作は1つも実行されずに、動作は再実行のために初期状態にロールバックされる。トランザクションのこの特徴が、ロック機構の役割を果たす。
【００２９】
トランザクションメモリ機構を実装するために、コンピュータシステムは、3つの基本機能、すなわちコンフリクト検出、データバージョン管理、およびコンフリクト解消ポリシーを有する必要がある。並行トランザクションが動作しているときに発生し得る、同じデータアイテムに同時にアクセスするケースは、コンフリクト検出を使用して検出され得る。コンフリクトが検出されると、対応するコンフリクト解消ポリシーが使用される必要がある。ロールバックなどの動作が、コンフリクト解決プロセスにおいて実施される必要があり、したがって、修正後の新しいデータおよび修正前の元データが使用される必要があり、そのようなデータの保存は、データバージョン管理において達成される必要がある。
【００３０】
本発明のこの実施形態は、主に、トランザクションメモリ機構におけるトランザクションコンフリクト検出に関する。コンフリクト検出プロセスにおいて、検出粒度(granularity)は、トランザクションの原子性の実装の保証である。検出粒度は、オブジェクト粒度、ワード粒度(word granularity)、およびバイト粒度(byte granularity)を含み得る。オブジェクト粒度では、いかなるコンフリクトの決定も、オブジェクトベースでなされる。2つのトランザクションによって修正されるメモリブロックが一致しない場合でも、2つのトランザクションが同じオブジェクト内にある限りは、2つのトランザクションは衝突すると決定され得る。ワード粒度およびバイト粒度は、オブジェクト粒度よりも細かい粒度である。例えば、1ワードが粒度として使用される場合、2つのトランザクションによって修正されるオブジェクトが同じであったとしても、2つのトランザクションによって修正されるワードが異なる限りは、2つのトランザクションは衝突しないと決定される。オブジェクト粒度と比較して、ワード粒度およびバイト粒度の2つの検出粒度において、コンフリクト検出結果がより細かく、それは、トランザクションメモリシステムパフォーマンスを改善するのにより良い。しかしながら、オブジェクト粒度のコンフリクト検出と比較して、ワード粒度およびバイト粒度のコンフリクト検出は、より多くのシステムリソースを消費する。
【００３１】
検出の正確性とシステムリソース消費のバランスを保つために、本発明のこの実施形態は、ハイブリッド粒度に基づいたコンフリクト検出方法を提案する。本方法は、図1に示されるコンピュータシステム100に適用され得る。図1は、単に、次世代新NVMがメモリとして使用されるコンピュータシステムの概略構造図であることが理解され得る。当業者は、実際の適用において、次世代NVMはメモリとして使用され得るだけでなく、次世代NVMの機能が既存の外部記憶装置に拡張され得ることを理解し得る。この様式に従うと、次世代NVMが外部記憶装置として使用されるとき、CPUがNVMコントローラに直接接続され得る場合、NVMコントローラはまた、トランザクションコンフリクト検出が実行される必要のあるプロセスにおける本発明のこの実施形態内の方法に従って実行され得る。
【００３２】
図1を参照して、以下、本発明の実施形態に従うコンフリクトを検出するための方法を詳細に説明する。図2は、本発明の実施形態に従うトランザクションコンフリクトを検出するための方法の流れ図である。図2に示されるように、本方法は以下のステップを含み得る。
【００３３】
ステップ200では、メモリコントローラ20は、第1のトランザクションの少なくとも2つの動作命令を受信し、ここでは各動作命令がアドレスを運ぶ。上記のように、トランザクションは、メモリに対する一連の読み込みおよび書き込み動作を含む。本発明のこの実施形態において、明白な説明のため、第1のトランザクション、第2のトランザクション、および第3のトランザクションは、複数のトランザクションの異なるトランザクションを区別するための例として使用される。このステップでは、CPU10が第1のトランザクションを開始すると、メモリコントローラ20内の制御論理202は、CPU10によって送信される第1のトランザクションの少なくとも2つの動作命令を受信し得る。少なくとも2つの動作命令は、メモリ30からデータを読み込むために使用される読み込み動作命令であり得るか、またはメモリ30にデータを書き込むために使用される書き込み動作命令であり得る。メモリ30内のファイルシステムがアクセスされる必要があるとき、少なくとも2つの動作命令は、ファイルシステムを開始するために使用される命令をさらに含み得る。本明細書内では、第1のトランザクションの動作命令の種類について特定の制限は設定されない。メモリ30にアクセスするために、少なくとも2つの動作命令は、メモリ30にアクセスするアドレスを運ぶことが理解され得る。
【００３４】
ステップ205では、メモリコントローラ20は、少なくとも2つの動作命令内のアドレスに従って、少なくとも2つの動作命令によってアクセスされるメモリ領域を決定する。図1に示されるように、本発明のこの実施形態において、メモリ30は、実際の要件に従って少なくとも2つのメモリ領域に分割され得る。説明を容易にするため、本発明のこの実施形態において、メモリ30が第1のメモリ領域32および第2のメモリ領域34を含むという例が、説明のために使用される。例えば、メモリ30の容量が4GBである場合、アドレス範囲が0000 0000h〜3FFF FFFFhである部分が第1のメモリ領域として使用され、アドレス範囲が4000 0000h〜FFFF FFFFhである部分が第2のメモリ領域として使用される。
【００３５】
実際の適用において、異なる種類のデータは、異なるメモリ領域に従って異なって管理され得ることが理解され得る。例えば、ファイルシステムがメモリ30内に確立されるとき、第1のメモリ領域32は、ファイルシステムのメタデータを格納する領域であり得、第2のメモリ領域34は、ファイルシステムのファイルデータを格納するために使用され得る。
【００３６】
本発明のこの実施形態において、第1のトランザクションの少なくとも2つの動作命令を受信した後、メモリコントローラ20は、第1のトランザクションの少なくとも2つの動作命令で運ばれるアドレスに従って、少なくとも2つの動作命令によってアクセスされるメモリ30のメモリ領域をそれぞれ決定し得る。実際の適用において、メモリコントローラ20は、まず、キャッシュ204において、CPU10によって送信される少なくとも2つの動作命令をバッファし、次いで、第1のトランザクションの少なくとも2つの動作命令で運ばれるアドレスに従って、少なくとも2つの動作命令によってアクセスされるメモリ30のメモリ領域をそれぞれ決定し得る。例えば、図3-Aに示されるように、第1のトランザクションは、メモリ30にアクセスする3つの動作命令、すなわちA1、A2、およびA3を含む。A1はアドレスAddr_A1を含み、A2はアドレスAddr_A2を含み、A3はアドレスAddr_A3を含む。メモリコントローラ20内の制御論理202は、メモリ30内で分割される異なるメモリ領域のアドレス範囲および動作命令で運ばれるアドレスに従って、動作命令A1によってアクセスされるメモリ領域は第1のメモリ領域32であり、動作命令A2およびA3によってアクセスされるメモリ領域は第2のメモリ領域34であるとそれぞれ決定し得る。本発明のこの実施形態において、メモリ30が2つのメモリ領域に分割される例は説明のために使用されることに留意されたい。実際の適用において、メモリ30内で分割されるメモリ領域の数はまた、3つ以上であってもよく、それは本明細書内では制限されない。
【００３７】
ステップ210では、少なくとも2つのメモリ領域の第1のメモリ領域の第1の検出ポリシーに従って、コンフリクト検出は、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令に対して実行される。例えば、図3-Aに示されるケースにおいて、第1の検出ポリシーは、第1のトランザクションの動作命令A1に対してコンフリクト検出を実行するために使用され得る。当業者は、コンフリクト検出が、コンピュータシステムによって実行されるべき動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と同じであるかどうかを検出するために使用されることを知り得る。アドレス範囲は検出粒度によって決定される。言い換えると、コンフリクト検出は、並行トランザクションが、動作しているときに、検出粒度によって決定される同じアドレス範囲に同時にアクセスし得るかどうかを検出するために使用され得る。並行トランザクションが動作しているときに発生し得る、同じデータアイテムに同時にアクセスするケースは、第1のトランザクションがコンピュータシステムによって実行されている別のトランザクションと並行して実行され得るかどうかを決定するために、コンフリクト検出を使用して検出され得る。例えば、メモリアドレスが32ビットで表され、動作命令A1のアドレスAddr_A1が1000 0011hであり、コンピュータシステムによって実行されている動作命令のアドレスAddr_D1が1000 0000hであると仮定する。1つのケースでは、1バイトが検出粒度として使用される場合、Addr_A1がアドレスAddr_D1とは異なるため、動作命令A1は、コンピュータシステムによって実行されている動作命令と衝突しないと決定される。別のケースでは、64バイトが検出粒度として使用される場合、Addr_A1が属するアドレス範囲が1000 0000h〜1000 003Fhであるため、Addr_D1が属するアドレス範囲もまた、1000 0000h〜1000 003Fhである。言い換えると、アドレスAddr_A1およびアドレスAddr_D1の両方が、ベースアドレスが"1000 0000h"である32ビットのアドレス範囲に属する。この場合、アドレスAddr_A1が属するアドレス範囲は、アドレスAddr_D1が属するアドレス範囲と同じであると決定され得るため、動作命令A1は、コンピュータシステムによって実行されている動作命令と衝突すると決定され得る。
【００３８】
コンフリクト検出プロセスにおいて、検出粒度が過度に細かい場合、検出結果の正確性が改善される一方、より多くのシステムリソースが消費されるということが先述の例よりうかがえる。しかしながら、検出粒度が過度に粗い場合、システムリソース消費は減少されるが、検出結果の正確性を保証することができない。本発明のこの実施形態において、コンフリクト検出の正確性とシステム消費との間の矛盾のバランスを保つために、異なる検出ポリシーが、メモリ30内で分割される異なるメモリ領域に設定され、ここでは異なる検出ポリシーは異なる検出粒度を使用する。例えば、1つのケースでは、第1のメモリ領域がファイルシステムのメタデータを格納するために使用される場合、第2のメモリ領域は、ファイルシステムのファイルデータを格納するために使用される。メタデータのアクセス粒度は、ファイルデータのアクセス粒度より小さく、メタデータのデータ量は、ファイルデータのデータ量よりも小さい。したがって、メタデータのアクセス正確性を改善するために、第1のメモリ領域に設定されるコンフリクト検出粒度は、第2のメモリ領域に設定されるコンフリクト検出粒度よりも小さくてもよい。例えば、第1のメモリ領域にアクセスする動作命令に設定される検出ポリシー内の検出粒度は、64B(Byte)であり得、第2のメモリ領域にアクセスする動作命令に設定される検出ポリシー内の検出粒度は、4KB(Byte)であり得る。説明を容易にするため、本発明のこの実施形態において、第1のメモリ領域にアクセスする動作命令に設定される検出ポリシーは、第1のメモリ領域の第1の検出ポリシーと称され、第2のメモリ領域にアクセスする動作命令に設定される検出ポリシーは、第2のメモリ領域の第2の検出ポリシーと称される。
【００３９】
当業者は、コンフリクト検出を実行するプロセスにおいて、1つのケースでは、第1のトランザクションの動作命令内のアドレスが属するアドレス範囲は、この動作および実行されている別の動作が同じデータアイテムに同時にアクセスし得るかどうかを決定するために、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と直接比較され得ることを知り得る。検出によって、動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と同じであると決定される場合、この動作およびコンピュータシステムによって実行されている動作は、同じデータアイテムに同時にアクセスし得る、すなわち、この動作はコンピュータシステムによって実行されている動作と衝突すると見なされる。検出によって、動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と異なると決定される場合、この動作はコンピュータシステムによって実行されている動作と衝突しないと見なされる。
【００４０】
実際の適用において、検出の効率性を改善するために、コンフリクト検出は、ブルームフィルタ(bloom filter)を使用して第1のトランザクションの各動作命令に対して実行され得る。Bloom filterは、一般的に、要素がセットのメンバであるかどうかを検出するために使用される。検出結果が肯定の場合、要素は必ずしもセット内になく、検出結果が否定の場合、要素は確実にセット内にない。Bloom filterは、ハッシュ関数の方法を使用して、mの長さを有する配列上のポイントに要素をマッピングする。このポイントが1であるとき、要素はセット内にあり、そうでない場合は、要素はセット内にない。本発明のこの実施形態において、異なるコンフリクト検出ポリシーが、異なるメモリ領域にアクセスする動作命令に設定される。したがって、異なるメモリ領域にアクセスする動作命令は、異なるBloom filterを使用して実装され得、ここでは異なるBloom filterは、異なる検出粒度を有する。具体的には、第1のメモリ領域32にアクセスする動作命令に対するコンフリクト検出は、第1のブルームフィルタを使用して実装され得、第2のメモリ領域34にアクセスする動作命令に対するコンフリクト検出は、第2のブルームフィルタを使用して実装され得る。第1のブルームフィルタは、第1の検出ポリシーを実行するために使用され、第2のブルームフィルタは、第2の検出ポリシーを実行するために使用される。第1のブルームフィルタおよび第2のブルームフィルタの検出機構は、検出粒度が異なる以外は同じであるため、本明細書内では、図3-Aを参照して、第1のメモリ領域にアクセスすることである動作命令に対するコンフリクト検出が第1のブルームフィルタを使用して実装される例が、説明のために使用される。
【００４１】
図3-Aに示されるように、第1のトランザクションの動作命令A1は、第1のメモリ領域32にアクセスする必要がある。第1のブルームフィルタは、コンピュータシステム100によって実行されており、かつ第1のメモリ領域32に並行してアクセスすることができる別のトランザクションの動作命令内のアドレスが属するアドレス範囲のハッシュ値を格納する。説明を容易にするため、本発明のこの実施形態において、第1のブルームフィルタに格納される、コンピュータシステム100によって実行されており、かつ第1のメモリ領域32に並行してアクセスすることができる別のトランザクションの動作命令内のアドレスが属するアドレス範囲のハッシュ値のセットは、第1のブルームフィルタに格納されるアドレスセットと称され得る。上記のように、コンフリクト検出は、並行トランザクションが、動作しているときに、検出粒度によって決定される同じアドレス範囲に同時にアクセスし得るかどうかを検出するために使用され得る。検出プロセスにおいて、Addr_A1が属するアドレス範囲は、第1の検出ポリシーの検出粒度に従って決定され得る。Addr_A1が属するアドレス範囲のハッシュ値は、動作命令A1がコンピュータシステム100によって実行されており、かつ第1のメモリ領域32にアクセスする別の動作命令と並行して実行され得るかどうかを決定するために、第1のブルームフィルタのハッシュ値と比較され得る。例えば、メモリアドレスが32ビットで表され、第1の検出ポリシーの検出粒度が64バイトであり、動作命令A1のアドレスAddr_A1が1000 0011hであると仮定すると、Addr_A1が属するアドレス範囲は、ベースアドレスが"1000 0000h"である32ビットのアドレス範囲内にあると決定され得る。32ビットのアドレス範囲は、1000 0000h〜1000 003Fhである。次いで、Addr_A1が属するアドレス範囲のハッシュ値を得るために、"1000 0000h"に対してハッシュ化が実施され得る。Addr_A1が属するアドレス範囲のハッシュ値は、第1のブルームフィルタに格納されたハッシュ値と比較される。第1のブルームフィルタによるAddr_A1の検出結果が1である場合、動作命令A1は、コンピュータシステム100により実行されており、かつ第1のメモリ領域32にアクセスする別の動作命令と衝突すると見なされる。第1のブルームフィルタによるAddr_A1の検出結果が0である場合、動作命令A1は、コンピュータシステム100により実行されており、かつ第1のメモリ領域32にアクセスする別の動作命令と衝突しないと見なされる。
【００４２】
先述のコンフリクト検出プロセスにおいては、第1のブルームフィルタがハッシュ化を1回実施する例が説明のために使用される。当業者は、実際の適用において、正確性を改善するために、第1のブルームフィルタは、動作命令A1内のアドレスに対してハッシュ化を複数回実施し、複数回のハッシュ化後に得られるハッシュ値に従って、動作命令A1がコンピュータシステムにより実行されており、かつ第1のメモリ領域32にアクセスする動作命令と衝突するかどうかを決定し得ることを知り得る。本発明のこの実施形態は、第1のブルームフィルタおよび第2のブルームフィルタによるコンフリクト検出を実装するための機構に特定の制限を設けない。
【００４３】
実際の適用において、キャッシュ204は、アクセスされる異なるメモリ領域に従って複数のキャッシュ領域に分割され得る。複数のキャッシュ領域は、異なるメモリ領域にアクセスする動作命令をバッファするために使用される。例えば、第1のメモリ領域にアクセスする動作命令は、第1のキャッシュ領域でバッファされ得、第2のメモリ領域にアクセスする動作命令は、第2のキャッシュ領域でバッファされる。次いで、第1のブルームフィルタが、第1のキャッシュ領域でバッファされる動作命令に対してコンフリクト検出を実施するために使用され、第2のブルームフィルタが、第2のキャッシュ領域でバッファされる動作命令に対してコンフリクト検出を実施するために使用される。本明細書内では、これは制限されない。
【００４４】
Bloom filterは、コンフリクト検出を実装する一実装様式にすぎないことが理解され得る。実際の適用において、Cuckoo filterなどの別の検出方法がさらに使用され得るが、それは本明細書内では制限されない。当業者は、様々な検出方法の目的は、トランザクション間でコンフリクトが発生するかどうかを決定するために、実行予定のトランザクションの動作命令内のアドレスが属するアドレス範囲が、システムによって実行されているトランザクションの動作命令内のアドレスが属するアドレス範囲と同じであるかどうかを決定することであり、ここではアドレス範囲が検出粒度によって決定されることを知り得る。
【００４５】
ステップ215では、少なくとも2つのメモリ領域の第2のメモリ領域の第2の検出ポリシーに従って、コンフリクト検出は、第2のメモリ領域にアクセスすることである少なくとも1つの動作命令に対して実行される。例えば、図3-Aに示されるケースでは、第2の検出ポリシーは、第1のトランザクションの動作命令A2およびA3に対してコンフリクト検出を実行するために使用され得る。ステップ215内の検出方法は、ステップ210内の検出方法に類似している。詳しくは、ステップ210の詳細説明を参照されたく、詳細は本明細書内では説明されない。
【００４６】
ステップ220では、第1のトランザクションのコンフリクト検出結果は、少なくとも2つの動作命令のコンフリクト検出結果に従って得られる。少なくとも2つの動作命令のコンフリクト検出結果は、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令の検出結果、および第2のメモリ領域にアクセスすることである少なくとも1つの動作命令の検出結果を少なくとも含む。本発明のこの実施形態において、第1のトランザクションの動作命令A1は第1のメモリ領域32にアクセスする必要があるため、第1のトランザクションの動作命令A2およびA3は、第2のメモリ領域34にアクセスする必要がある。コンフリクト検出が、第1のメモリ領域32の第1の検出ポリシーを使用して第1のトランザクションの動作命令A1に対して、および第2のメモリ領域34の第2の検出ポリシーを使用して第1のトランザクションの動作命令A2およびA3に対して実行された後、ステップ220において、メモリコントローラ20は、動作命令A1、A2、およびA3のコンフリクト検出結果に従って、第1のトランザクションのコンフリクト検出結果を得ることができる。
【００４７】
具体的には、第1のトランザクションの少なくとも2つの動作命令のうちの1つの動作命令内のアドレスが、コンピュータシステムによって実行されている動作命令内のアドレスと同じであることが検出された場合、第1のトランザクションは、コンピュータシステムによって実行されているトランザクションと衝突するということが決定される。第1のトランザクションの少なくとも2つの動作命令内のアドレスが、コンピュータシステムによって実行されている動作命令内のアドレスと異なることが検出された場合、第1のトランザクションは、コンピュータシステムによって実行されているトランザクションと衝突しないということが決定される。例えば、動作命令A1、A2、およびA3のいずれか1つのコンフリクト検出結果がコンフリクトを示す限り、第1のトランザクションがコンピュータシステム100によって実行されている別のトランザクションと衝突するということが決定される。動作命令A1、A2、およびA3のコンフリクト検出結果がすべてコンフリクトを示さない場合、第1のトランザクションがコンピュータシステム100によって実行されている別のトランザクションと衝突しないということが決定される。
【００４８】
当業者は、コンフリクト検出が第1のトランザクションに対して実行された後、第1のトランザクションの検出結果に従って、第1のトランザクションを直ちに実行するかどうかが決定され得ることを知り得る。例えば、第1のトランザクションのコンフリクト検出結果がコンフリクトを示す場合、第1のトランザクションは、第1のトランザクションと衝突する別のトランザクションが完了して初めて、実行される必要がある。例えば、システムは、第1のトランザクションが開始されていない状態にロールバックされ得る。第1のトランザクションのコンフリクト検出結果がコンフリクトを示さない場合、第1のトランザクションがシステムによって実行されているトランザクションと並行して実行され得ることを示す。この様式に従うと、第1のトランザクションの動作命令A1、A2、およびA3は、直ちに実行され得る。したがって、動作命令A1、A2、およびA3に従って、データはメモリ30に書き込まれ得るか、またはデータはメモリ30から読み込まれ得る。
【００４９】
実際の適用において、第1のトランザクションがコンピュータシステム100によって実行されている別のトランザクションと衝突しないということが決定されると、第1のブルームフィルタのアドレスセットを更新するためにAddr_A1のハッシュ値が第1のブルームフィルタに追加され得るため、コンフリクト検出は、第1のブルームフィルタの更新されたアドレスセットを使用して、第1のメモリ領域32にアクセスすることであるその後の動作命令に対して実施されることが理解され得る。加えて、第2のブルームフィルタのアドレスセットを更新するために、Addr_A2のハッシュ値およびAddr_A3のハッシュ値が第2のブルームフィルタにさらに追加され得るため、コンフリクト検出は、第2のブルームフィルタの更新されたアドレスセットを使用して、第2のメモリ領域34にアクセスすることであるその後の動作命令に対して実施される。
【００５０】
別のケースでは、本発明のこの実施形態において、メモリ30は、3つ以上のメモリ領域にさらに分割され得、第1のトランザクションは、動作命令A1、A2、およびA3に加えて別の動作命令を含み得ることが理解され得る。例えば、図3-Bに示されるように、第1のトランザクションは、動作命令A1、A2、A3、およびA4を含み得、メモリ30は、第1のメモリ領域32、第2のメモリ領域34、および第3のメモリ領域36に分割され得る。第1の検出ポリシーが第1のメモリ領域32に設定され、第2の検出ポリシーが第2のメモリ領域34に設定され、第3の検出ポリシーが第3のメモリ領域36に設定される。すべての検出ポリシーは、異なる検出粒度を含む。コンフリクト検出が第1のトランザクションに対して実行されるとき、第1の検出ポリシーは、動作命令A1に対してコンフリクト検出を実行するために使用され得、第2の検出ポリシーは、動作命令A2およびA3に対してコンフリクト検出を実行するために使用され、第3の検出ポリシーは、動作命令A4に対してコンフリクト検出を実行するために使用され、第1のトランザクションのコンフリクト検出結果は、動作命令A1、A2、A3、およびA4のコンフリクト検出結果に従って得られる。
【００５１】
本発明のこの実施形態内に提供されるトランザクションコンフリクトを検出するための方法において、同じトランザクションの異なる動作命令によってアクセスされるメモリ領域が異なるということに従って、異なる検出ポリシーが検出を実施するために同じトランザクションの異なる動作命令に対して使用され、トランザクションのコンフリクト検出結果は、同じトランザクションのすべての動作命令のコンフリクト検出結果に従って決定される。したがって、検出の正確性とコンフリクト検出を実装するためのシステムによってもたらされるシステムリソース消費とのバランスは、システムリソース消費を減少させながらコンフリクト検出の正確性が提供され得るように実装され得る。
【００５２】
図2に示される実施形態内に提供されるコンフリクトを検出するための方法に基づいて、本発明のこの実施形態は、図4に示されるコンフリクトを検出するための方法をさらに含み得る。図4は、本発明の実施形態に従うコンフリクトを検出するための別の方法の流れ図である。図4に示されるように、本方法は、図2に示されるコンフリクトを検出するための方法に基づいて、以下のステップをさらに含み得る。
【００５３】
ステップ400では、メモリコントローラ20は、第2のトランザクションの少なくとも2つの動作命令を受信し、ここでは第2のトランザクションの少なくとも2つの動作命令の各動作命令が、アドレスを運ぶ。例えば、図3-Cに示されるように、第2のトランザクションは、動作命令B1およびB2を含み、動作命令B1はAddr_B1を運び、動作命令B2はAddr_B2を運ぶ。
【００５４】
ステップ405では、メモリコントローラ20は、第2のトランザクションの少なくとも2つの動作命令内のアドレスに従って、第2のトランザクションの少なくとも2つの動作命令が、第1のメモリ領域にアクセスすることであると決定する。例えば、図3-Cに示されるように、メモリコントローラ20は、Addr_B1およびAddr_B2に従って、第2のトランザクションの動作命令B1およびB2の両方が、第1のメモリ領域32にアクセスすることであると決定し得る。
【００５５】
ステップ410では、メモリコントローラ20は、第1のメモリ領域の第1の検出ポリシーに従って、第2のトランザクションの少なくとも2つの動作命令に対してコンフリクト検出を実行する。第1の検出ポリシーが第1のメモリ領域に設定されるため、メモリコントローラ20は、第1の検出ポリシーに従って第2のトランザクションの動作命令B1およびB2に対してコンフリクト検出を実行し得る。このステップ内のコンフリクトを検出するための方法は、図2に示される方法のステップ210に類似している。詳しくは、ステップ210の説明を参照されたい。
【００５６】
ステップ410では、メモリコントローラ20は、第2のトランザクションの少なくとも2つの動作命令の検出結果に従って、第2のトランザクションのコンフリクト検出結果を得る。例えば、メモリコントローラは、動作命令B1および動作命令B2の検出結果に従って、第2のトランザクションのコンフリクト検出結果を得ることができる。具体的には、動作命令B1および動作命令B2の両方の検出結果がコンフリクトを示さない場合、第2のトランザクションはコンピュータシステムによって実行されている別のトランザクションと衝突しないということが決定され、第2のトランザクションは、実行されている別のトランザクションと並行して実行され得る。動作命令B1および動作命令B2の検出結果における1つの動作命令の検出結果がコンフリクトを示す場合、第2のトランザクションはコンピュータシステムによって実行されている別のトランザクションと衝突するということが決定され、第2のトランザクションは、第2のトランザクションと衝突するトランザクションが完了して初めて実行される必要がある。
【００５７】
さらに別のケースでは、図2および図4に示される方法に基づいて、本発明のこの実施形態は、図5に示されるコンフリクトを検出するための方法をさらに含み得る。図5は、本発明の実施形態に従うコンフリクトを検出するための別の方法の流れ図である。以下、図3-Dを参照して図5を説明する。図5に示されるように、図2および図4に示されるコンフリクトを検出するための方法に基づいて、本方法は以下のステップをさらに含み得る。
【００５８】
ステップ500では、メモリコントローラ20は、第3のトランザクションの少なくとも2つの動作命令を受信し、ここでは第3のトランザクションの少なくとも2つの動作命令の各動作命令が、アドレスを運ぶ。例えば、図3-Dに示されるように、第3のトランザクションは、動作命令C1、C2、およびC3を含み、動作命令C1はAddr_C1を運び、動作命令C2はAddr_C2を運び、動作命令C3はAddr_C3を運ぶ。
【００５９】
ステップ505では、メモリコントローラ20は、第3のトランザクションの少なくとも2つの動作命令内のアドレスに従って、第3のトランザクションの少なくとも2つの動作命令が、第2のメモリ領域にアクセスすることであると決定する。例えば、図3-Dに示されるシナリオでは、メモリコントローラ20は、Addr_C1、Addr_C2、およびAddr_C3に従って、動作命令C1、C2、およびC3はすべて、第2のメモリ領域34にアクセスする必要があると決定し得る。
【００６０】
ステップ510では、メモリコントローラ20は、第2のメモリ領域の第2の検出ポリシーに従って、第3のトランザクションの少なくとも2つの動作命令に対してコンフリクト検出を実行する。第2の検出ポリシーが第2のメモリ領域に設定されるため、メモリコントローラ20は、第2の検出ポリシーに従って第3のトランザクションの動作命令C1、C2、およびC3に対してコンフリクト検出を実行し得る。このステップ内のコンフリクトを検出するための方法は、図2に示される方法のステップ210に類似している。詳しくは、ステップ210の説明を参照されたい。
【００６１】
ステップ515では、メモリコントローラ20は、第3のトランザクションの少なくとも2つの動作命令の検出結果に従って、第3のトランザクションのコンフリクト検出結果を得る。例えば、メモリコントローラ20は、動作命令C1、C2、およびC3の検出結果に従って第3のトランザクションのコンフリクト検出結果を得ることができる。具体的には、動作命令C1、C2、およびC3すべての検出結果がコンフリクトを示さない場合、第3のトランザクションはコンピュータシステムによって実行されている別のトランザクションと衝突しないということが決定され、第3のトランザクションは、実行されている別のトランザクションと並行して実行され得る。動作命令C1、C2、およびC3の検出結果における1つの動作命令の検出結果が場合、第3のトランザクションはコンピュータシステムによって実行されている別のトランザクションと衝突するということが決定され、第3のトランザクションは、第3のトランザクションと衝突するトランザクションが完了して初めて実行される必要がある。
【００６２】
本発明のこの実施形態内のコンフリクトを検出するための方法において、異なる検出粒度の検出ポリシーが異なるメモリ領域に設定され得、異なるトランザクションの動作命令に対してコンフリクト検出を実施するために使用される必要のある検出ポリシーは、異なるトランザクションの動作命令によってアクセスされるメモリ領域に従って決定され得る。したがって、検出ポリシーは、特定のアクセス要件に従って動的に選択され得、より柔軟な実装を達成する。加えて、検出の正確性とコンフリクト検出を実装するためのシステムによってもたらされるシステムリソース消費とのバランスは、システムリソース消費を減少させながらコンフリクト検出の正確性が提供され得るように実装され得る。
【００６３】
図6は、本発明の実施形態に従うトランザクションコンフリクトを検出するための装置60である。トランザクションコンフリクトを検出するための装置60は、図1に示されるコンピュータシステムに適用され得る。図6に示されるように、本装置は、受信モジュール600、決定モジュール605、検出モジュール610、および処理モジュール615を含み得る。受信モジュール600は、第1のトランザクションの少なくとも2つの動作命令を受信するように構成され、ここでは第1のトランザクションの各動作命令がアドレスを運ぶ。決定モジュール605は、少なくとも2つの動作命令内のアドレスに従って、少なくとも2つの動作命令によってアクセスされるメモリ領域を決定するように構成される。検出モジュール610は、少なくとも2つのメモリ領域の第1のメモリ領域の第1の検出ポリシーに従って、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行し、かつ少なくとも2つのメモリ領域の第2のメモリ領域の第2の検出ポリシーに従って、第2のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するように構成される。処理モジュール615は、少なくとも2つの動作命令のコンフリクト検出結果に従って第1のトランザクションのコンフリクト検出結果を得るように構成され、ここでは少なくとも2つの動作命令のコンフリクト検出結果は、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令の検出結果、および第2のメモリ領域にアクセスすることである少なくとも1つの動作命令の検出結果を少なくとも含む。
【００６４】
具体的には、1つのケースでは、検出モジュール610は、第1のメモリ領域に設定される第1のブルームフィルタbloom filterを使用して、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するように特に構成される。第1のブルームフィルタは、コンピュータシステムによって実行されており、かつ第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、ここでは第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲は、第1の検出ポリシーの検出粒度によって決定される。別のケースでは、検出モジュール610はさらに、第2のメモリ領域に設定される第2のブルームフィルタを使用して、第2のメモリ領域にアクセスすることである少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するように特に構成される。第2のブルームフィルタは、コンピュータシステムによって実行されており、かつ第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、ここでは第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲は、第2の検出ポリシーの検出粒度によって決定される。第2の検出ポリシーの検出粒度は、第1の検出ポリシーの検出粒度と異なる。
【００６５】
実際の適用において、検出モジュール610が、第1のトランザクションの少なくとも2つの動作命令のうちの1つの動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と同じであることを検出した場合、処理モジュール615は、第1のトランザクションがコンピュータシステムによって実行されているトランザクションと衝突すると決定する。検出モジュール610が、第1のトランザクションの少なくとも2つの動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と異なることを検出した場合、処理モジュール615は、第1のトランザクションがコンピュータシステムによって実行されているトランザクションと衝突しないと決定する。
【００６６】
依然として別のケースでは、受信モジュール600は、第2のトランザクションの少なくとも2つの動作命令を受信するようにさらに構成され、ここでは第2のトランザクションの少なくとも2つの動作命令の各動作命令がアドレスを運び、決定モジュール605は、第2のトランザクションの少なくとも2つの動作命令内のアドレスに従って、第2のトランザクションの少なくとも2つの動作命令が第1のメモリ領域にアクセスすることであると決定するようにさらに構成され、検出モジュール610は、第1のメモリ領域の第1の検出ポリシーに従って、第2のトランザクションの少なくとも2つの動作命令に対してコンフリクト検出を実行するようにさらに構成され、処理モジュール615は、第2のトランザクションの少なくとも2つの動作命令の検出結果に従って、第2のトランザクションのコンフリクト検出結果を得るようにさらに構成される。
【００６７】
依然として別のケースでは、受信モジュール600は、第3のトランザクションの少なくとも2つの動作命令を受信するようにさらに構成され、ここでは第3のトランザクションの少なくとも2つの動作命令の各動作命令がアドレスを運び、決定モジュール605は、第3のトランザクションの少なくとも2つの動作命令内のアドレスに従って、第3のトランザクションの少なくとも2つの動作命令が第2のメモリ領域にアクセスすることであると決定するようにさらに構成され、検出モジュール610は、第2のメモリ領域の第2の検出ポリシーに従って、第3のトランザクションの少なくとも2つの動作命令に対してコンフリクト検出を実行するようにさらに構成され、処理モジュール615は、第3のトランザクションの少なくとも2つの動作命令の検出結果に従って、第3のトランザクションのコンフリクト検出結果を得るようにさらに構成される。
【００６８】
本発明のこの実施形態内に提供されるコンフリクトを検出するための装置60は、図2、図4、および図5の実施形態内で説明されるコンフリクトを検出するための方法を実行し得る。各モジュールの機能の詳細説明については、方法実施形態の説明を参照されたく、詳細は本明細書内には説明されない。
【００６９】
図6に示される実施形態は単に一例であることが理解され得る。例えば、モジュール分割は、単に論理的な機能分割であり、実際の実装においては他の分割であってもよい。例えば、複数のモジュールまたはコンポーネントが、別のデバイスに組み合わされ得るか、もしくは統合され得、またはいくつかの機能が、無視され得るか、もしくは実施されなくてもよい。加えて、表示または説明された相互結合または直接結合または通信接続は、いくつかの通信インターフェースを使用して実装され得る。モジュール間の非直接的結合または通信接続は、電子的、機械的、または他の形式で実装され得る。
【００７０】
別個のパーツとして説明されるモジュールは、物理的に別個であってもそうでなくてもよく、モジュールとして表示されるパーツは、物理的なユニットであってもそうでなくてもよく、1つの場所に位置し得るか、または複数のネットワークユニット上に分布され得る。モジュールの一部またはすべては、実施形態の解決策の目標を達成するために実際の必要性に従って選択され得る。
【００７１】
本発明の実施形態は、プログラムコードを格納するコンピュータ可読記憶媒体を含む、データ処理用のコンピュータプログラム製品をさらに提供し、ここでは本プログラムコードに含まれる命令が、先述の方法実施形態のうちのいずれか1つに説明される方法プロセスを実行するために使用される。当業者は、先述の記憶媒体が、USBフラッシュドライブ、リムーバブルハードディスク、磁気ディスク、光学ディスク、ランダムアクセスメモリ(Random-Access Memory、RAM)、固体ディスク(Solid State Disk、SSD)、または不揮発性メモリ(non-volatile memory)など、プログラムコードを格納することができる任意の非一時的(non-transitory)機械可読媒体を含み得ることを理解し得る。
【００７２】
本出願内に提供される実施形態は単に例示的であることに留意されたい。当業者は、説明の簡便性のため、先述の実施形態において、本実施形態は異なる態様を強調し、一実施形態において詳細に説明されない部分については、別の実施形態の関連説明への参照がなされ得ることを明白に知り得る。本発明の実施形態、請求項、および添付の図面に開示される特徴は、独立して存在するか、または組み合わせて存在し得る。本発明の実施形態においてハードウェア形態で説明される特徴は、ソフトウェアによって実行され得、その逆もまた然りである。本明細書内では、これは制限されない。
【符号の説明】
【００７３】
10  中央処理装置CPU
20  メモリコントローラ
30  メモリ
32  第1のメモリ領域
34  第2のメモリ領域
36  第3のメモリ領域
100  コンピュータシステム
202  制御論理
204  キャッシュ
206  バックエンド通信インターフェース
600  受信モジュール
605  決定モジュール
610  検出モジュール
615  処理モジュール
【図１】
2018500697.tif 000003
【図２】
2018500697.tif 000004
【図３−Ａ】
2018500697.tif 000005
【図３−Ｂ】
2018500697.tif 000006
【図３−Ｃ】
2018500697.tif 000007
【図３−Ｄ】
2018500697.tif 000008
【図４】
2018500697.tif 000009
【図５】
2018500697.tif 000010
【図６】
2018500697.tif 000011
【手続補正書】
【提出日】平成29年8月10日(2017.8.10)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ技術の分野に関し、具体的には、トランザクションコンフリクトを検出するための方法および装置、ならびにコンピュータシステムに関する。
【背景技術】
【０００２】
当業者は、先行技術において、異なるスレッド間の同期、共有リソースへのアクセス、または同様のものが、ロック機構を使用して達成されることを知っている。しかしながら、ロック機構をベースとした並行性システムには多くの問題が存在する。例えば、共有データの保護はロック機構を使用して実装され得るが、普通のプログラマが精細粒度ロックを使用して効率的な並行アプリケーションを実装することは困難である。加えて、ロック機構は、並行アプリケーションの効率性およびパフォーマンスに影響を及ぼす問題、例えば、デッドロックおよび優先順位の逆転をもたらす。
【０００３】
先述の問題を解決するために、当業者はトランザクションメモリ技術を提案した。トランザクションメモリは、並行プログラムを設計する様式であり、トランザクションメモリは、データベース管理システム(database management system、DBMS)内のトランザクション概念に由来する。データベース管理システムにおいて、トランザクションは、原子性、一貫性、独立性、および永続性の特徴を満たす必要がある。原子性とは、トランザクション内の動作がすべて実行されるか、または動作が1つも実行されないことを意味する。一貫性とは、データベースがどんなときにも一貫した状態になければならないこと、すなわち、いくつかの予め設定された条件が満たされなければならないことを意味する。独立性とは、トランザクションが別の未送信のトランザクションに関与する内部オブジェクトを見ることができない状態を意味する。永続性とは、送信されたトランザクションによってデータベースシステムになされた変更が永続的でなければならないことを意味する。トランザクションの原子性の役割は、異なるスレッド間に同期を実装することができるロック機構の役割と類似している。
【０００４】
先行技術において、トランザクションメモリは、基本的に、CPUのレベル1またはレベル2キャッシュ(cache)に実装される。例えば、専用のキャッシュ機構が、トランザクションコンフリクト検出およびトランザクションロールバック機構を実装するためにレベル1キャッシュに追加される。トランザクションコンフリクト検出は、一定の検出粒度に基づいて実装される。例えば、コンフリクト検出は、オブジェクト粒度、ワード粒度、またはバイト粒度に基づいてトランザクション上で実行され得る。しかしながら、ファイルシステムにおいては、一般的に、メタデータのアクセス粒度とファイルシステムのファイルデータとの間には比較的大きな差が存在する。コンフリクト検出がトランザクションに対して実施されるときに使用される検出粒度が過度に粗い場合、多くの間違った検出が発生し得る。コンフリクト検出がトランザクションに対して実施されるときに使用される検出粒度が過度に細かい場合、より多くのシステムリソースが消費される。
【発明の概要】
【課題を解決するための手段】
【０００５】
本発明の実施形態において提供されるトランザクションコンフリクトを検出するための方法および装置、ならびにコンピュータシステムによると、検出の正確性が、システムリソースを節約することに基づいて改善され得る。
【０００６】
第1の態様によると、本発明の実施形態は、トランザクションコンフリクトを検出するための方法を提供し、本方法は、メモリが不揮発性メモリであるコンピュータシステムに適用され、メモリは少なくとも2つのメモリ領域を含み、少なくとも2つのメモリ領域は異なる検出ポリシーを有し、本方法はメモリコントローラによって実行され、本方法は、
第1のトランザクションの少なくとも2つの動作命令を受信するステップであって、第1のトランザクションの各動作命令がアドレスを運ぶ、ステップと、
少なくとも2つの動作命令内のアドレスに従って、少なくとも2つの動作命令によってアクセスされるメモリ領域を決定するステップと、
少なくとも2つのメモリ領域の第1のメモリ領域の第1の検出ポリシーに従って、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するステップと、
少なくとも2つのメモリ領域の第2のメモリ領域の第2の検出ポリシーに従って、第2のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するステップと、
少なくとも2つの動作命令のコンフリクト検出結果に従って第1のトランザクションのコンフリクト検出結果を得るステップであって、少なくとも2つの動作命令のコンフリクト検出結果が、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令の検出結果、および第2のメモリ領域にアクセスすることである少なくとも1つの動作命令の検出結果を少なくとも含む、ステップと、を含む。
【０００７】
第1の態様を参照して、第1の態様の第1の考えられる実装様式において、少なくとも2つの動作命令のコンフリクト検出結果に従って第1のトランザクションのコンフリクト検出結果を得るステップは、
第1のトランザクションの少なくとも2つの動作命令のうちの1つの動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と同じであることが検出された場合、第1のトランザクションがコンピュータシステムによって実行されているトランザクションと衝突すると決定するステップ、または
第1のトランザクションの少なくとも2つの動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と異なることが検出された場合、第1のトランザクションがコンピュータシステムによって実行されているトランザクションと衝突しないと決定するステップを含む。
【０００８】
第1の態様または第1の態様の第1の考えられる実装様式を参照して、第1の態様の第2の考えられる実装様式において、少なくとも2つのメモリ領域の第1のメモリ領域の第1の検出ポリシーに従って、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するステップは、
第1のメモリ領域に設定される第1のブルームフィルタを使用して、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するステップであって、第1のブルームフィルタが、コンピュータシステムによって実行されており、かつ第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲が、第1の検出ポリシーの検出粒度によって決定される、ステップを含み、
少なくとも2つのメモリ領域の第2のメモリ領域の第2の検出ポリシーに従って、第2のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するステップは、
第2のメモリ領域に設定される第2のブルームフィルタを使用して、第2のメモリ領域にアクセスすることである少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するステップであって、第2のブルームフィルタが、コンピュータシステムによって実行されており、かつ第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲が、第2の検出ポリシーの検出粒度によって決定され、第2の検出ポリシーの検出粒度が、第1の検出ポリシーの検出粒度と異なる、ステップを含む。
【０００９】
第2の態様によると、本発明の実施形態は、コンピュータシステムを提供し、本コンピュータシステムは、
第1のトランザクションの少なくとも2つの動作命令をメモリコントローラに送信するように構成されるプロセッサと、
データを格納するように構成されるメモリであって、メモリが不揮発性メモリであり、メモリが少なくとも2つのメモリ領域を有し、少なくとも2つのメモリ領域が異なる検出ポリシーを有する、メモリと、
プロセッサによって送信される第1のトランザクションの少なくとも2つの動作命令を受信するように構成され、ここでは第1のトランザクションの各動作命令がアドレスを運び、
少なくとも2つの動作命令内のアドレスに従って、少なくとも2つの動作命令によってアクセスされるメモリ領域を決定するように構成され、
少なくとも2つのメモリ領域の第1のメモリ領域の第1の検出ポリシーに従って、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するように構成され、
少なくとも2つのメモリ領域の第2のメモリ領域の第2の検出ポリシーに従って、第2のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するように構成され、かつ
少なくとも2つの動作命令のコンフリクト検出結果に従って第1のトランザクションのコンフリクト検出結果を得るように構成され、ここでは少なくとも2つの動作命令のコンフリクト検出結果が、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令の検出結果、および第2のメモリ領域にアクセスすることである少なくとも1つの動作命令の検出結果を少なくとも含む、メモリコントローラと、を含む。
【００１０】
第2の態様を参照して、第2の態様の第1の考えられる実装様式において、メモリコントローラは、
第1のトランザクションの少なくとも2つの動作命令のうちの1つの動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と同じであることが検出された場合、第1のトランザクションがコンピュータシステムによって実行されているトランザクションと衝突すると決定するように構成され、かつ
第1のトランザクションの少なくとも2つの動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と異なることが検出された場合、第1のトランザクションがコンピュータシステムによって実行されているトランザクションと衝突しないと決定するように構成される。
【００１１】
第2の態様または第2の態様の第1の考えられる実装様式を参照して、第2の態様の第2の考えられる実装様式において、メモリコントローラは、
第1のメモリ領域に設定される第1のブルームフィルタを使用して、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するように構成され、ここでは第1のブルームフィルタが、コンピュータシステムによって実行されており、かつ第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲が、第1の検出ポリシーの検出粒度によって決定され、かつ
第2のメモリ領域に設定される第2のブルームフィルタを使用して、第2のメモリ領域にアクセスすることである少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するように構成され、ここでは第2のブルームフィルタが、コンピュータシステムによって実行されており、かつ第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲が、第2の検出ポリシーの検出粒度によって決定され、第2の検出ポリシーの検出粒度が、第1の検出ポリシーの検出粒度と異なる。
【００１２】
第3の態様によると、本発明の実施形態は、トランザクションコンフリクトを検出するための装置を提供し、本装置は、メモリが不揮発性メモリであるコンピュータシステムに適用され、メモリは少なくとも2つのメモリ領域を含み、少なくとも2つのメモリ領域は異なる検出ポリシーを有し、本装置は、
第1のトランザクションの少なくとも2つの動作命令を受信するように構成される受信モジュールであって、第1のトランザクションの各動作命令がアドレスを運ぶ、受信モジュールと、
少なくとも2つの動作命令内のアドレスに従って、少なくとも2つの動作命令によってアクセスされるメモリ領域を決定するように構成される、決定モジュールと、
少なくとも2つのメモリ領域の第1のメモリ領域の第1の検出ポリシーに従って、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行し、かつ少なくとも2つのメモリ領域の第2のメモリ領域の第2の検出ポリシーに従って、第2のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するように構成される、検出モジュールと、
少なくとも2つの動作命令のコンフリクト検出結果に従って第1のトランザクションのコンフリクト検出結果を得るように構成される処理モジュールであって、少なくとも2つの動作命令のコンフリクト検出結果が、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令の検出結果、および第2のメモリ領域にアクセスすることである少なくとも1つの動作命令の検出結果を少なくとも含む、処理モジュールと、を含む。
【００１３】
第3の態様を参照して、第3の態様の第1の考えられる実装様式において、処理モジュールは、
第1のトランザクションの少なくとも2つの動作命令のうちの1つの動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と同じであることが検出された場合、第1のトランザクションがコンピュータシステムによって実行されているトランザクションと衝突すると決定するように構成され、かつ
第1のトランザクションの少なくとも2つの動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と異なることが検出された場合、第1のトランザクションがコンピュータシステムによって実行されているトランザクションと衝突しないと決定するように構成される。
【００１４】
第3の態様または第3の態様の第1の考えられる実装様式を参照して、第3の態様の第2の考えられる実装様式において、検出モジュールは、
第1のメモリ領域に設定される第1のブルームフィルタを使用して、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するように構成され、ここでは第1のブルームフィルタが、コンピュータシステムによって実行されており、かつ第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲が、第1の検出ポリシーの検出粒度によって決定され、かつ
第2のメモリ領域に設定される第2のブルームフィルタを使用して、第2のメモリ領域にアクセスすることである少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するように構成され、ここでは第2のブルームフィルタが、コンピュータシステムによって実行されており、かつ第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲が、第2の検出ポリシーの検出粒度によって決定され、第2の検出ポリシーの検出粒度が、第1の検出ポリシーの検出粒度と異なる。
【００１５】
第4の態様によると、本発明の実施形態は、プログラムコードを格納するコンピュータ可読記憶媒体を含む、コンピュータプログラム製品を提供し、ここでは本プログラムコードに含まれる命令は、先述の第1の態様の方法を実行するために使用される。
【００１６】
本発明の実施形態において提供されるトランザクションコンフリクトを検出するための方法において、同じトランザクションの異なる動作命令が異なるメモリ領域にアクセスすることに従って、異なる検出ポリシーが、検出を実施するために同じトランザクションの異なる動作命令に対して使用され、このトランザクションのコンフリクト検出結果は、同じトランザクションのすべての動作命令のコンフリクト検出結果に従って決定される。したがって、検出の正確性とコンフリクト検出を実装するためのシステムによってもたらされるシステムリソース消費とのバランスは、システムリソース消費を減少させながらコンフリクト検出の正確性が改善され得るように実装され得る。
【００１７】
本発明の実施形態または先行技術における技術的解決策をより明白に説明するために、以下、実施形態を説明するのに必要とされる添付の図面を簡単に説明する。明らかに、以下の説明における添付の図面は、本発明の実施形態を単にいくつか示すだけである。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態に従うコンピュータシステムの概略構造図である。
【図２】本発明の実施形態に従うトランザクションコンフリクトを検出するための方法の概略流れ図である。
【図３−Ａ】本発明の実施形態に従うトランザクションの動作命令によってアクセスされるメモリ領域の概略図である。
【図３−Ｂ】本発明の実施形態に従うトランザクションの動作命令によってアクセスされるメモリ領域の概略図である。
【図３−Ｃ】本発明の実施形態に従うトランザクションの動作命令によってアクセスされるメモリ領域の概略図である。
【図３−Ｄ】本発明の実施形態に従うトランザクションの動作命令によってアクセスされるメモリ領域の概略図である。
【図４】本発明の実施形態に従うトランザクションコンフリクトを検出するための別の方法の概略流れ図である。
【図５】本発明の実施形態に従うトランザクションコンフリクトを検出するための別の方法の概略流れ図である。
【図６】本発明の実施形態に従うトランザクションコンフリクトを検出するための装置の概略構造図である。
【発明を実施するための形態】
【００１９】
本発明の技術的解決策を当業者により良く理解してもらうために、以下、本発明の実施形態における添付の図面を参照して、本発明の実施形態における技術的解決策を明白かつ完全に説明する。明らかに、説明される実施形態は、単に本発明の実施形態の一部であって、本発明の実施形態のすべてではない。
【００２０】
本発明の実施形態において提供されるトランザクションコンフリクトを検出するための方法は、メモリが不揮発性メモリであるコンピュータシステムに適用され得る。図1は、本発明の実施形態に従うコンピュータシステムの概略構造図である。図1に示されるように、コンピュータシステム100は、中央処理装置(Central Processing Unit、CPU)10、メモリコントローラ20、およびメモリ30を含む。図1に示されるように、CPU10は、コンピュータシステム100の計算コア(Core)および制御コア(Control Unit)である。CPU10は、超大規模の集積回路であり得る。CPU10がメモリ、キャッシュ、および磁気ディスクにアクセスすることができるように、オペレーティングシステムおよび別のソフトウェアプログラムが、CPU10にインストールされる。本発明のこの実施形態において、CPU10は単にプロセッサの一例にすぎないことが理解され得る。CPU10に加えて、プロセッサはさらに、別の特定用途向け集積回路(Application Specific Integrated Circuit, ASIC)、または本発明の実施形態を実装するように構成される1つもしくは複数の集積回路であり得る。
【００２１】
メモリコントローラ(Memory Controller)20は、コンピュータシステム100内のメモリ30を制御し、かつメモリ30からCPU10へのデータ伝送速度を管理および計画するように構成されるバス回路コントローラである。メモリ30およびCPU10は、メモリコントローラ20を使用してデータを交換し得る。メモリコントローラ20は、スタンドアローンチップであり得、システムバスを使用してCPU10に接続される。当業者は、メモリコントローラ20がまた、関連した大チップに統合され得ることを知り得る。例えば、メモリコントローラ20は、マイクロプロセッサ(例えば、CPU10)内に統合され得るか、またはノースブリッジに組み込まれる。本発明のこの実施形態は、メモリコントローラ20の特定の場所に制限を設けない。説明を容易にするため、図1に示されるシステムアーキテクチャにおいて、メモリコントローラ20が別個に配置されるのは、説明のための例として使用される。メモリコントローラ20は、必要な論理を制御して、メモリ30にデータを書き込むか、またはメモリ30からデータを読み込む。
【００２２】
図1に示されるように、メモリコントローラ20は、制御論理202、キャッシュ204、およびバックエンド通信インターフェース206を含み得る。制御論理202、キャッシュ204、およびバックエンド通信インターフェース206は、通信バスを使用して相互通信を達成する。キャッシュ204は、CPU10とメモリ30との間の一時メモリである。キャッシュ204は、制御論理202によってメモリ30に書き込まれるべきコマンドおよびデータをバッファするように構成されるか、またはメモリ30から読み込まれるデータをバッファするように構成される。本発明のこの実施形態において、キャッシュ204はまた、次世代不揮発性メモリの記憶媒体で構成され得る。例えば、キャッシュ204は、磁気ランダムアクセスメモリ(Magnetic Random Access Memory、MRAM)であり得る。
【００２３】
バックエンド通信インターフェース206は、メモリ30と通信するように構成される。例えば、バックエンド通信インターフェース206は、制御論理202によって送られるメモリ30のアクセスコマンドを管理し、データ伝送を実施するように構成され得る。バックエンド通信インターフェース206は、メモリ30の異なるメモリ領域を接続するために使用される複数の通信チャネルを含み得ることが理解され得る。
【００２４】
制御論理202は、中央処理装置CPU、または特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、または本発明のこの実施形態を実装するように構成される1つもしくは複数の集積回路であり得る。制御論理202は、メモリ30のアクセス要求を実装したり、メモリ30のデータを管理したり、または同様のことを行い得る。例えば、制御論理202は、通信バスを使用して、CPU10によって送信されるメモリ30にアクセスするためのアクセスコマンドを受信し、そのアクセスコマンドに従って、メモリ30にアクセスし、バックエンド通信インターフェース206を使用して、メモリ30にデータを書き込むか、またはメモリ30からデータを読み込み得る。
【００２５】
メモリ30は、コンピュータシステム100のメインメモリである。メモリ30は、一般的に、オペレーティングシステム内で動作している様々なソフトウェア、ならびに入力および出力データ、外部記憶装置と交換される情報などを格納するように構成される。CPU10のアクセス速度を増加させるために、メモリ30は、高アクセス速度の利点を有する必要がある。従来のコンピュータシステムアーキテクチャにおいては、一般的に、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)が、メモリ30として使用される。不揮発性メモリ(Non-Volatile Memory、NVM)技術の発展により、NVMがメモリとして徐々に使用されている。
【００２６】
当業者は、次世代NVMが高アクセス速度および不揮発性の特徴を有し、さらには次世代NVMが、バイト(Byte)によるアドレス指定を実施し、ビット(bit)当たりベースで不揮発性記憶媒体へデータを書き込むことができることを知り得る。したがって、メモリとして使用されるとき、次世代NVMは、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)が行うように、データアクセスのレイテンシ(latency)を減少させることができる。加えて、DRAMと比較して、NVMは不揮発性を有するため、データをより良好に格納することができる。次世代NVMは、相変化メモリ(Phase Change Memory、PCM)、抵抗変化型ランダムアクセスメモリ(Resistive Random Access Memory、RRAM(登録商標))、磁気ランダムアクセスメモリ(Magnetic Random Access Memory、MRAM)、または強誘電体ランダムアクセスメモリ(Ferroelectric Random Access Memory、FRAM(登録商標))などの次世代不揮発性メモリを含み得る。本発明のこの実施形態内に提供されるコンピュータシステム100において、メモリ30は、次世代不揮発性メモリの不揮発性記憶媒体である。記憶媒体は、複数の記憶ユニットを含み得る。本発明のこの実施形態において、記憶媒体内の記憶ユニットとは、データを格納するために使用される最小記憶媒体を指す。例えば、記憶ユニットは、相変化メモリを構成する相変化記憶ユニット、磁気ランダムアクセスメモリを構成する磁気記憶ユニット、抵抗変化型ランダムアクセスメモリを構成する抵抗変化型記憶ユニットなどを含み得る。
【００２７】
本発明のこの実施形態において、メモリ30は、サービス要件に従って少なくとも2つのメモリ領域に分割され得る。例えば、図1に示されるように、メモリ30は、第1のメモリ領域32および第2のメモリ領域34に分割される。異なるメモリ領域は、異なる種類のデータを格納するために使用され得る。例えば、ファイルシステムがメモリ30内に確立されるとき、第1のメモリ領域32は、このファイルシステムのメタデータを格納するために使用され得、第2のメモリ領域34は、ファイルデータを格納するために使用され得る。間違いなく、図1に示される第1のメモリ領域32および第2のメモリ領域34に加えて、メモリ30は別のメモリ領域をさらに含み得、それは本明細書内では制限されないことが理解され得る。
【００２８】
当業者は、図1に示されるコンピュータシステム100では、CPU10によるメモリ30にアクセスするプロセスにおいて、トランザクションメモリ技術が、データ一貫性を確実にするために使用され得ることを知り得る。本発明のこの実施形態を明白に説明するために、以下、トランザクションおよびトランザクションのコンフリクト検出の概念を簡単に説明する。当業者は、トランザクションメモリ機構とは、トランザクション動作を使用してプログラミング複雑性を減少させるために、並行して処理される異なるスレッドの各々が、トランザクションとして処理されることであるということを知り得る。トランザクションは、データベース内のトランザクションに由来する概念であり、メモリに対する一連の順序だった読み込みおよび書き込み動作であり、ここではこれらの動作は同じスレッドにより実行される。トランザクションは、原子性を有し、すなわち、トランザクション内の動作はすべて実行されるか、または動作は1つも実行されずに、動作は再実行のために初期状態にロールバックされる。トランザクションのこの特徴が、ロック機構の役割を果たす。
【００２９】
トランザクションメモリ機構を実装するために、コンピュータシステムは、3つの基本機能、すなわちコンフリクト検出、データバージョン管理、およびコンフリクト解消ポリシーを有する必要がある。並行トランザクションが動作しているときに発生し得る、同じデータアイテムに同時にアクセスするケースは、コンフリクト検出を使用して検出され得る。コンフリクトが検出されると、対応するコンフリクト解消ポリシーが使用される必要がある。ロールバックなどの動作が、コンフリクト解決プロセスにおいて実施される必要があり、したがって、修正後の新しいデータおよび修正前の元データが使用される必要があり、そのようなデータの保存は、データバージョン管理において達成される必要がある。
【００３０】
本発明のこの実施形態は、主に、トランザクションメモリ機構におけるトランザクションコンフリクト検出に関する。コンフリクト検出プロセスにおいて、検出粒度(granularity)は、トランザクションの原子性の実装の保証である。検出粒度は、オブジェクト粒度、ワード粒度(word granularity)、およびバイト粒度(byte granularity)を含み得る。オブジェクト粒度では、いかなるコンフリクトの決定も、オブジェクトベースでなされる。2つのトランザクションによって修正されるメモリブロックが一致しない場合でも、2つのトランザクションが同じオブジェクト内にある限りは、2つのトランザクションは衝突すると決定され得る。ワード粒度およびバイト粒度は、オブジェクト粒度よりも細かい粒度である。例えば、1ワードが粒度として使用される場合、2つのトランザクションによって修正されるオブジェクトが同じであったとしても、2つのトランザクションによって修正されるワードが異なる限りは、2つのトランザクションは衝突しないと決定される。オブジェクト粒度と比較して、ワード粒度およびバイト粒度の2つの検出粒度において、コンフリクト検出結果がより細かく、それは、トランザクションメモリシステムパフォーマンスを改善するのにより良い。しかしながら、オブジェクト粒度のコンフリクト検出と比較して、ワード粒度およびバイト粒度のコンフリクト検出は、より多くのシステムリソースを消費する。
【００３１】
検出の正確性とシステムリソース消費のバランスを保つために、本発明のこの実施形態は、ハイブリッド粒度に基づいたコンフリクト検出方法を提案する。本方法は、図1に示されるコンピュータシステム100に適用され得る。図1は、単に、次世代新NVMがメモリとして使用されるコンピュータシステムの概略構造図であることが理解され得る。当業者は、実際の適用において、次世代NVMはメモリとして使用され得るだけでなく、次世代NVMの機能が既存の外部記憶装置に拡張され得ることを理解し得る。この様式に従うと、次世代NVMが外部記憶装置として使用されるとき、CPUがNVMコントローラに直接接続され得る場合、NVMコントローラはまた、トランザクションコンフリクト検出が実行される必要のあるプロセスにおける本発明のこの実施形態内の方法に従って実行され得る。
【００３２】
図1を参照して、以下、本発明の実施形態に従うトランザクションコンフリクトを検出するための方法を詳細に説明する。図2は、本発明の実施形態に従うトランザクションコンフリクトを検出するための方法の流れ図である。図2に示されるように、本方法は以下のステップを含み得る。
【００３３】
ステップ200では、メモリコントローラ20は、第1のトランザクションの少なくとも2つの動作命令を受信し、ここでは各動作命令がアドレスを運ぶ。上記のように、トランザクションは、メモリに対する一連の読み込みおよび書き込み動作を含む。本発明のこの実施形態において、明白な説明のため、第1のトランザクション、第2のトランザクション、および第3のトランザクションは、複数のトランザクションの異なるトランザクションを区別するための例として使用される。このステップでは、CPU10が第1のトランザクションを開始すると、メモリコントローラ20内の制御論理202は、CPU10によって送信される第1のトランザクションの少なくとも2つの動作命令を受信し得る。少なくとも2つの動作命令は、メモリ30からデータを読み込むために使用される読み込み動作命令であり得るか、またはメモリ30にデータを書き込むために使用される書き込み動作命令であり得る。メモリ30内のファイルシステムがアクセスされる必要があるとき、少なくとも2つの動作命令は、ファイルシステムを開始するために使用される命令をさらに含み得る。本明細書内では、第1のトランザクションの動作命令の種類について特定の制限は設定されない。メモリ30にアクセスするために、少なくとも2つの動作命令は、メモリ30にアクセスするアドレスを運ぶことが理解され得る。
【００３４】
ステップ205では、メモリコントローラ20は、少なくとも2つの動作命令内のアドレスに従って、少なくとも2つの動作命令によってアクセスされるメモリ領域を決定する。図1に示されるように、本発明のこの実施形態において、メモリ30は、実際の要件に従って少なくとも2つのメモリ領域に分割され得る。説明を容易にするため、本発明のこの実施形態において、メモリ30が第1のメモリ領域32および第2のメモリ領域34を含むという例が、説明のために使用される。例えば、メモリ30の容量が4GBである場合、アドレス範囲が0000 0000h〜3FFF FFFFhである部分が第1のメモリ領域として使用され、アドレス範囲が4000 0000h〜FFFF FFFFhである部分が第2のメモリ領域として使用される。
【００３５】
実際の適用において、異なる種類のデータは、異なるメモリ領域に従って異なって管理され得ることが理解され得る。例えば、ファイルシステムがメモリ30内に確立されるとき、第1のメモリ領域32は、ファイルシステムのメタデータを格納する領域であり得、第2のメモリ領域34は、ファイルシステムのファイルデータを格納するために使用され得る。
【００３６】
本発明のこの実施形態において、第1のトランザクションの少なくとも2つの動作命令を受信した後、メモリコントローラ20は、第1のトランザクションの少なくとも2つの動作命令で運ばれるアドレスに従って、少なくとも2つの動作命令によってアクセスされるメモリ30のメモリ領域をそれぞれ決定し得る。実際の適用において、メモリコントローラ20は、まず、キャッシュ204において、CPU10によって送信される少なくとも2つの動作命令をバッファし、次いで、第1のトランザクションの少なくとも2つの動作命令で運ばれるアドレスに従って、少なくとも2つの動作命令によってアクセスされるメモリ30のメモリ領域をそれぞれ決定し得る。例えば、図3-Aに示されるように、第1のトランザクションは、メモリ30にアクセスする3つの動作命令、すなわちA1、A2、およびA3を含む。A1はアドレスAddr_A1を含み、A2はアドレスAddr_A2を含み、A3はアドレスAddr_A3を含む。メモリコントローラ20内の制御論理202は、メモリ30内で分割される異なるメモリ領域のアドレス範囲および動作命令で運ばれるアドレスに従って、動作命令A1によってアクセスされるメモリ領域は第1のメモリ領域32であり、動作命令A2およびA3によってアクセスされるメモリ領域は第2のメモリ領域34であるとそれぞれ決定し得る。本発明のこの実施形態において、メモリ30が2つのメモリ領域に分割される例は説明のために使用されることに留意されたい。実際の適用において、メモリ30内で分割されるメモリ領域の数はまた、3つ以上であってもよく、それは本明細書内では制限されない。
【００３７】
ステップ210では、少なくとも2つのメモリ領域の第1のメモリ領域の第1の検出ポリシーに従って、コンフリクト検出は、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令に対して実行される。例えば、図3-Aに示されるケースにおいて、第1の検出ポリシーは、第1のトランザクションの動作命令A1に対してコンフリクト検出を実行するために使用され得る。当業者は、コンフリクト検出が、コンピュータシステムによって実行されるべき動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と同じであるかどうかを検出するために使用されることを知り得る。アドレス範囲は検出粒度によって決定される。言い換えると、コンフリクト検出は、並行トランザクションが、動作しているときに、検出粒度によって決定される同じアドレス範囲に同時にアクセスし得るかどうかを検出するために使用され得る。並行トランザクションが動作しているときに発生し得る、同じデータアイテムに同時にアクセスするケースは、第1のトランザクションがコンピュータシステムによって実行されている別のトランザクションと並行して実行され得るかどうかを決定するために、コンフリクト検出を使用して検出され得る。例えば、メモリアドレスが32ビットで表され、動作命令A1のアドレスAddr_A1が1000 0011hであり、コンピュータシステムによって実行されている動作命令のアドレスAddr_D1が1000 0000hであると仮定する。1つのケースでは、1バイトが検出粒度として使用される場合、Addr_A1がアドレスAddr_D1とは異なるため、動作命令A1は、コンピュータシステムによって実行されている動作命令と衝突しないと決定される。別のケースでは、64バイトが検出粒度として使用される場合、Addr_A1が属するアドレス範囲が1000 0000h〜1000 003Fhであるため、Addr_D1が属するアドレス範囲もまた、1000 0000h〜1000 003Fhである。言い換えると、アドレスAddr_A1およびアドレスAddr_D1の両方が、ベースアドレスが"1000 0000h"である32ビットのアドレス範囲に属する。この場合、アドレスAddr_A1が属するアドレス範囲は、アドレスAddr_D1が属するアドレス範囲と同じであると決定され得るため、動作命令A1は、コンピュータシステムによって実行されている動作命令と衝突すると決定され得る。
【００３８】
コンフリクト検出プロセスにおいて、検出粒度が過度に細かい場合、検出結果の正確性が改善される一方、より多くのシステムリソースが消費されるということが先述の例よりうかがえる。しかしながら、検出粒度が過度に粗い場合、システムリソース消費は減少されるが、検出結果の正確性を保証することができない。本発明のこの実施形態において、コンフリクト検出の正確性とシステム消費との間の矛盾のバランスを保つために、異なる検出ポリシーが、メモリ30内で分割される異なるメモリ領域に設定され、ここでは異なる検出ポリシーは異なる検出粒度を使用する。例えば、1つのケースでは、第1のメモリ領域がファイルシステムのメタデータを格納するために使用される場合、第2のメモリ領域は、ファイルシステムのファイルデータを格納するために使用される。メタデータのアクセス粒度は、ファイルデータのアクセス粒度より小さく、メタデータのデータ量は、ファイルデータのデータ量よりも小さい。したがって、メタデータのアクセス正確性を改善するために、第1のメモリ領域に設定されるコンフリクト検出粒度は、第2のメモリ領域に設定されるコンフリクト検出粒度よりも小さくてもよい。例えば、第1のメモリ領域にアクセスする動作命令に設定される検出ポリシー内の検出粒度は、64B(Byte)であり得、第2のメモリ領域にアクセスする動作命令に設定される検出ポリシー内の検出粒度は、4KBであり得る。説明を容易にするため、本発明のこの実施形態において、第1のメモリ領域にアクセスする動作命令に設定される検出ポリシーは、第1のメモリ領域の第1の検出ポリシーと称され、第2のメモリ領域にアクセスする動作命令に設定される検出ポリシーは、第2のメモリ領域の第2の検出ポリシーと称される。
【００３９】
当業者は、コンフリクト検出を実行するプロセスにおいて、1つのケースでは、第1のトランザクションの動作命令内のアドレスが属するアドレス範囲は、この動作および実行されている別の動作が同じデータアイテムに同時にアクセスし得るかどうかを決定するために、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と直接比較され得ることを知り得る。検出によって、動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と同じであると決定される場合、この動作およびコンピュータシステムによって実行されている動作は、同じデータアイテムに同時にアクセスし得る、すなわち、この動作はコンピュータシステムによって実行されている動作と衝突すると見なされる。検出によって、動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と異なると決定される場合、この動作はコンピュータシステムによって実行されている動作と衝突しないと見なされる。
【００４０】
実際の適用において、検出の効率性を改善するために、コンフリクト検出は、ブルームフィルタ(bloom filter)を使用して第1のトランザクションの各動作命令に対して実行され得る。Bloom filterは、一般的に、要素がセットのメンバであるかどうかを検出するために使用される。検出結果が肯定の場合、要素は必ずしもセット内になく、検出結果が否定の場合、要素は確実にセット内にない。Bloom filterは、ハッシュ関数の方法を使用して、mの長さを有する配列上のポイントに要素をマッピングする。このポイントが1であるとき、要素はセット内にあり、そうでない場合は、要素はセット内にない。本発明のこの実施形態において、異なるコンフリクト検出ポリシーが、異なるメモリ領域にアクセスする動作命令に設定される。したがって、異なるメモリ領域にアクセスする動作命令は、異なるBloom filterを使用して実装され得、ここでは異なるBloom filterは、異なる検出粒度を有する。具体的には、第1のメモリ領域32にアクセスする動作命令に対するコンフリクト検出は、第1のブルームフィルタを使用して実装され得、第2のメモリ領域34にアクセスする動作命令に対するコンフリクト検出は、第2のブルームフィルタを使用して実装され得る。第1のブルームフィルタは、第1の検出ポリシーを実行するために使用され、第2のブルームフィルタは、第2の検出ポリシーを実行するために使用される。第1のブルームフィルタおよび第2のブルームフィルタの検出機構は、検出粒度が異なる以外は同じであるため、本明細書内では、図3-Aを参照して、第1のメモリ領域にアクセスすることである動作命令に対するコンフリクト検出が第1のブルームフィルタを使用して実装される例が、説明のために使用される。
【００４１】
図3-Aに示されるように、第1のトランザクションの動作命令A1は、第1のメモリ領域32にアクセスする必要がある。第1のブルームフィルタは、コンピュータシステム100によって実行されており、かつ第1のメモリ領域32に並行してアクセスすることができる別のトランザクションの動作命令内のアドレスが属するアドレス範囲のハッシュ値を格納する。説明を容易にするため、本発明のこの実施形態において、第1のブルームフィルタに格納される、コンピュータシステム100によって実行されており、かつ第1のメモリ領域32に並行してアクセスすることができる別のトランザクションの動作命令内のアドレスが属するアドレス範囲のハッシュ値のセットは、第1のブルームフィルタに格納されるアドレスセットと称され得る。上記のように、コンフリクト検出は、並行トランザクションが、動作しているときに、検出粒度によって決定される同じアドレス範囲に同時にアクセスし得るかどうかを検出するために使用され得る。検出プロセスにおいて、Addr_A1が属するアドレス範囲は、第1の検出ポリシーの検出粒度に従って決定され得る。Addr_A1が属するアドレス範囲のハッシュ値は、動作命令A1がコンピュータシステム100によって実行されており、かつ第1のメモリ領域32にアクセスする別の動作命令と並行して実行され得るかどうかを決定するために、第1のブルームフィルタのハッシュ値と比較され得る。例えば、メモリアドレスが32ビットで表され、第1の検出ポリシーの検出粒度が64バイトであり、動作命令A1のアドレスAddr_A1が1000 0011hであると仮定すると、Addr_A1が属するアドレス範囲は、ベースアドレスが"1000 0000h"である32ビットのアドレス範囲内にあると決定され得る。32ビットのアドレス範囲は、1000 0000h〜1000 003Fhである。次いで、Addr_A1が属するアドレス範囲のハッシュ値を得るために、"1000 0000h"に対してハッシュ化が実施され得る。Addr_A1が属するアドレス範囲のハッシュ値は、第1のブルームフィルタに格納されたハッシュ値と比較される。第1のブルームフィルタによるAddr_A1の検出結果が1である場合、動作命令A1は、コンピュータシステム100により実行されており、かつ第1のメモリ領域32にアクセスする別の動作命令と衝突すると見なされる。第1のブルームフィルタによるAddr_A1の検出結果が0である場合、動作命令A1は、コンピュータシステム100により実行されており、かつ第1のメモリ領域32にアクセスする別の動作命令と衝突しないと見なされる。
【００４２】
先述のコンフリクト検出プロセスにおいては、第1のブルームフィルタがハッシュ化を1回実施する例が説明のために使用される。当業者は、実際の適用において、正確性を改善するために、第1のブルームフィルタは、動作命令A1内のアドレスに対してハッシュ化を複数回実施し、複数回のハッシュ化後に得られるハッシュ値に従って、動作命令A1がコンピュータシステムにより実行されており、かつ第1のメモリ領域32にアクセスする動作命令と衝突するかどうかを決定し得ることを知り得る。本発明のこの実施形態は、第1のブルームフィルタおよび第2のブルームフィルタによるコンフリクト検出を実装するための機構に特定の制限を設けない。
【００４３】
実際の適用において、キャッシュ204は、アクセスされる異なるメモリ領域に従って複数のキャッシュ領域に分割され得る。複数のキャッシュ領域は、異なるメモリ領域にアクセスする動作命令をバッファするために使用される。例えば、第1のメモリ領域にアクセスする動作命令は、第1のキャッシュ領域でバッファされ得、第2のメモリ領域にアクセスする動作命令は、第2のキャッシュ領域でバッファされる。次いで、第1のブルームフィルタが、第1のキャッシュ領域でバッファされる動作命令に対してコンフリクト検出を実施するために使用され、第2のブルームフィルタが、第2のキャッシュ領域でバッファされる動作命令に対してコンフリクト検出を実施するために使用される。本明細書内では、これは制限されない。
【００４４】
Bloom filterは、コンフリクト検出を実装する一実装様式にすぎないことが理解され得る。実際の適用において、Cuckoo filterなどの別の検出方法がさらに使用され得るが、それは本明細書内では制限されない。当業者は、様々な検出方法の目的は、トランザクション間でコンフリクトが発生するかどうかを決定するために、実行予定のトランザクションの動作命令内のアドレスが属するアドレス範囲が、システムによって実行されているトランザクションの動作命令内のアドレスが属するアドレス範囲と同じであるかどうかを決定することであり、ここではアドレス範囲が検出粒度によって決定されることを知り得る。
【００４５】
ステップ215では、少なくとも2つのメモリ領域の第2のメモリ領域の第2の検出ポリシーに従って、コンフリクト検出は、第2のメモリ領域にアクセスすることである少なくとも1つの動作命令に対して実行される。例えば、図3-Aに示されるケースでは、第2の検出ポリシーは、第1のトランザクションの動作命令A2およびA3に対してコンフリクト検出を実行するために使用され得る。ステップ215内の検出方法は、ステップ210内の検出方法に類似している。詳しくは、ステップ210の詳細説明を参照されたく、詳細は本明細書内では説明されない。
【００４６】
ステップ220では、第1のトランザクションのコンフリクト検出結果は、少なくとも2つの動作命令のコンフリクト検出結果に従って得られる。少なくとも2つの動作命令のコンフリクト検出結果は、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令の検出結果、および第2のメモリ領域にアクセスすることである少なくとも1つの動作命令の検出結果を少なくとも含む。本発明のこの実施形態において、第1のトランザクションの動作命令A1は第1のメモリ領域32にアクセスする必要があるため、第1のトランザクションの動作命令A2およびA3は、第2のメモリ領域34にアクセスする必要がある。コンフリクト検出が、第1のメモリ領域32の第1の検出ポリシーを使用して第1のトランザクションの動作命令A1に対して、および第2のメモリ領域34の第2の検出ポリシーを使用して第1のトランザクションの動作命令A2およびA3に対して実行された後、ステップ220において、メモリコントローラ20は、動作命令A1、A2、およびA3のコンフリクト検出結果に従って、第1のトランザクションのコンフリクト検出結果を得ることができる。
【００４７】
具体的には、第1のトランザクションの少なくとも2つの動作命令のうちの1つの動作命令内のアドレスが、コンピュータシステムによって実行されている動作命令内のアドレスと同じであることが検出された場合、第1のトランザクションは、コンピュータシステムによって実行されているトランザクションと衝突するということが決定される。第1のトランザクションの少なくとも2つの動作命令内のアドレスが、コンピュータシステムによって実行されている動作命令内のアドレスと異なることが検出された場合、第1のトランザクションは、コンピュータシステムによって実行されているトランザクションと衝突しないということが決定される。例えば、動作命令A1、A2、およびA3のいずれか1つのコンフリクト検出結果がコンフリクトを示す限り、第1のトランザクションがコンピュータシステム100によって実行されている別のトランザクションと衝突するということが決定される。動作命令A1、A2、およびA3のコンフリクト検出結果がすべてコンフリクトを示さない場合、第1のトランザクションがコンピュータシステム100によって実行されている別のトランザクションと衝突しないということが決定される。
【００４８】
当業者は、コンフリクト検出が第1のトランザクションに対して実行された後、第1のトランザクションの検出結果に従って、第1のトランザクションを直ちに実行するかどうかが決定され得ることを知り得る。例えば、第1のトランザクションのコンフリクト検出結果がコンフリクトを示す場合、第1のトランザクションは、第1のトランザクションと衝突する別のトランザクションが完了して初めて、実行される必要がある。例えば、システムは、第1のトランザクションが開始されていない状態にロールバックされ得る。第1のトランザクションのコンフリクト検出結果がコンフリクトを示さない場合、第1のトランザクションがシステムによって実行されているトランザクションと並行して実行され得ることを示す。この様式に従うと、第1のトランザクションの動作命令A1、A2、およびA3は、直ちに実行され得る。したがって、動作命令A1、A2、およびA3に従って、データはメモリ30に書き込まれ得るか、またはデータはメモリ30から読み込まれ得る。
【００４９】
実際の適用において、第1のトランザクションがコンピュータシステム100によって実行されている別のトランザクションと衝突しないということが決定されると、第1のブルームフィルタのアドレスセットを更新するためにAddr_A1のハッシュ値が第1のブルームフィルタに追加され得るため、コンフリクト検出は、第1のブルームフィルタの更新されたアドレスセットを使用して、第1のメモリ領域32にアクセスすることであるその後の動作命令に対して実施されることが理解され得る。加えて、第2のブルームフィルタのアドレスセットを更新するために、Addr_A2のハッシュ値およびAddr_A3のハッシュ値が第2のブルームフィルタにさらに追加され得るため、コンフリクト検出は、第2のブルームフィルタの更新されたアドレスセットを使用して、第2のメモリ領域34にアクセスすることであるその後の動作命令に対して実施される。
【００５０】
別のケースでは、本発明のこの実施形態において、メモリ30は、3つ以上のメモリ領域にさらに分割され得、第1のトランザクションは、動作命令A1、A2、およびA3に加えて別の動作命令を含み得ることが理解され得る。例えば、図3-Bに示されるように、第1のトランザクションは、動作命令A1、A2、A3、およびA4を含み得、メモリ30は、第1のメモリ領域32、第2のメモリ領域34、および第3のメモリ領域36に分割され得る。第1の検出ポリシーが第1のメモリ領域32に設定され、第2の検出ポリシーが第2のメモリ領域34に設定され、第3の検出ポリシーが第3のメモリ領域36に設定される。すべての検出ポリシーは、異なる検出粒度を含む。コンフリクト検出が第1のトランザクションに対して実行されるとき、第1の検出ポリシーは、動作命令A1に対してコンフリクト検出を実行するために使用され得、第2の検出ポリシーは、動作命令A2およびA3に対してコンフリクト検出を実行するために使用され、第3の検出ポリシーは、動作命令A4に対してコンフリクト検出を実行するために使用され、第1のトランザクションのコンフリクト検出結果は、動作命令A1、A2、A3、およびA4のコンフリクト検出結果に従って得られる。
【００５１】
本発明のこの実施形態内に提供されるトランザクションコンフリクトを検出するための方法において、同じトランザクションの異なる動作命令によってアクセスされるメモリ領域が異なるということに従って、異なる検出ポリシーが検出を実施するために同じトランザクションの異なる動作命令に対して使用され、トランザクションのコンフリクト検出結果は、同じトランザクションのすべての動作命令のコンフリクト検出結果に従って決定される。したがって、検出の正確性とコンフリクト検出を実装するためのシステムによってもたらされるシステムリソース消費とのバランスは、システムリソース消費を減少させながらコンフリクト検出の正確性が提供され得るように実装され得る。
【００５２】
図2に示される実施形態内に提供されるトランザクションコンフリクトを検出するための方法に基づいて、本発明のこの実施形態は、図4に示されるトランザクションコンフリクトを検出するための方法をさらに含み得る。図4は、本発明の実施形態に従うトランザクションコンフリクトを検出するための別の方法の流れ図である。図4に示されるように、本方法は、図2に示されるトランザクションコンフリクトを検出するための方法に基づいて、以下のステップをさらに含み得る。
【００５３】
ステップ400では、メモリコントローラ20は、第2のトランザクションの少なくとも2つの動作命令を受信し、ここでは第2のトランザクションの少なくとも2つの動作命令の各動作命令が、アドレスを運ぶ。例えば、図3-Cに示されるように、第2のトランザクションは、動作命令B1およびB2を含み、動作命令B1はAddr_B1を運び、動作命令B2はAddr_B2を運ぶ。
【００５４】
ステップ405では、メモリコントローラ20は、第2のトランザクションの少なくとも2つの動作命令内のアドレスに従って、第2のトランザクションの少なくとも2つの動作命令が、第1のメモリ領域にアクセスすることであると決定する。例えば、図3-Cに示されるように、メモリコントローラ20は、Addr_B1およびAddr_B2に従って、第2のトランザクションの動作命令B1およびB2の両方が、第1のメモリ領域32にアクセスすることであると決定し得る。
【００５５】
ステップ410では、メモリコントローラ20は、第1のメモリ領域の第1の検出ポリシーに従って、第2のトランザクションの少なくとも2つの動作命令に対してコンフリクト検出を実行する。第1の検出ポリシーが第1のメモリ領域に設定されるため、メモリコントローラ20は、第1の検出ポリシーに従って第2のトランザクションの動作命令B1およびB2に対してコンフリクト検出を実行し得る。このステップ内のトランザクションコンフリクトを検出するための方法は、図2に示される方法のステップ210に類似している。詳しくは、ステップ210の説明を参照されたい。
【００５６】
ステップ410では、メモリコントローラ20は、第2のトランザクションの少なくとも2つの動作命令の検出結果に従って、第2のトランザクションのコンフリクト検出結果を得る。例えば、メモリコントローラは、動作命令B1および動作命令B2の検出結果に従って、第2のトランザクションのコンフリクト検出結果を得ることができる。具体的には、動作命令B1および動作命令B2の両方の検出結果がコンフリクトを示さない場合、第2のトランザクションはコンピュータシステムによって実行されている別のトランザクションと衝突しないということが決定され、第2のトランザクションは、実行されている別のトランザクションと並行して実行され得る。動作命令B1および動作命令B2の検出結果における1つの動作命令の検出結果がコンフリクトを示す場合、第2のトランザクションはコンピュータシステムによって実行されている別のトランザクションと衝突するということが決定され、第2のトランザクションは、第2のトランザクションと衝突するトランザクションが完了して初めて実行される必要がある。
【００５７】
さらに別のケースでは、図2および図4に示される方法に基づいて、本発明のこの実施形態は、図5に示されるトランザクションコンフリクトを検出するための方法をさらに含み得る。図5は、本発明の実施形態に従うトランザクションコンフリクトを検出するための別の方法の流れ図である。以下、図3-Dを参照して図5を説明する。図5に示されるように、図2および図4に示されるトランザクションコンフリクトを検出するための方法に基づいて、本方法は以下のステップをさらに含み得る。
【００５８】
ステップ500では、メモリコントローラ20は、第3のトランザクションの少なくとも2つの動作命令を受信し、ここでは第3のトランザクションの少なくとも2つの動作命令の各動作命令が、アドレスを運ぶ。例えば、図3-Dに示されるように、第3のトランザクションは、動作命令C1、C2、およびC3を含み、動作命令C1はAddr_C1を運び、動作命令C2はAddr_C2を運び、動作命令C3はAddr_C3を運ぶ。
【００５９】
ステップ505では、メモリコントローラ20は、第3のトランザクションの少なくとも2つの動作命令内のアドレスに従って、第3のトランザクションの少なくとも2つの動作命令が、第2のメモリ領域にアクセスすることであると決定する。例えば、図3-Dに示されるシナリオでは、メモリコントローラ20は、Addr_C1、Addr_C2、およびAddr_C3に従って、動作命令C1、C2、およびC3はすべて、第2のメモリ領域34にアクセスする必要があると決定し得る。
【００６０】
ステップ510では、メモリコントローラ20は、第2のメモリ領域の第2の検出ポリシーに従って、第3のトランザクションの少なくとも2つの動作命令に対してコンフリクト検出を実行する。第2の検出ポリシーが第2のメモリ領域に設定されるため、メモリコントローラ20は、第2の検出ポリシーに従って第3のトランザクションの動作命令C1、C2、およびC3に対してコンフリクト検出を実行し得る。このステップ内のトランザクションコンフリクトを検出するための方法は、図2に示される方法のステップ210に類似している。詳しくは、ステップ210の説明を参照されたい。
【００６１】
ステップ515では、メモリコントローラ20は、第3のトランザクションの少なくとも2つの動作命令の検出結果に従って、第3のトランザクションのコンフリクト検出結果を得る。例えば、メモリコントローラ20は、動作命令C1、C2、およびC3の検出結果に従って第3のトランザクションのコンフリクト検出結果を得ることができる。具体的には、動作命令C1、C2、およびC3すべての検出結果がコンフリクトを示さない場合、第3のトランザクションはコンピュータシステムによって実行されている別のトランザクションと衝突しないということが決定され、第3のトランザクションは、実行されている別のトランザクションと並行して実行され得る。動作命令C1、C2、およびC3の検出結果における1つの動作命令の検出結果が場合、第3のトランザクションはコンピュータシステムによって実行されている別のトランザクションと衝突するということが決定され、第3のトランザクションは、第3のトランザクションと衝突するトランザクションが完了して初めて実行される必要がある。
【００６２】
本発明のこの実施形態内のトランザクションコンフリクトを検出するための方法において、異なる検出粒度の検出ポリシーが異なるメモリ領域に設定され得、異なるトランザクションの動作命令に対してコンフリクト検出を実施するために使用される必要のある検出ポリシーは、異なるトランザクションの動作命令によってアクセスされるメモリ領域に従って決定され得る。したがって、検出ポリシーは、特定のアクセス要件に従って動的に選択され得、より柔軟な実装を達成する。加えて、検出の正確性とコンフリクト検出を実装するためのシステムによってもたらされるシステムリソース消費とのバランスは、システムリソース消費を減少させながらコンフリクト検出の正確性が提供され得るように実装され得る。
【００６３】
図6は、本発明の実施形態に従うトランザクションコンフリクトを検出するための装置60である。トランザクションコンフリクトを検出するための装置60は、図1に示されるコンピュータシステムに適用され得る。図6に示されるように、本装置は、受信モジュール600、決定モジュール605、検出モジュール610、および処理モジュール615を含み得る。受信モジュール600は、第1のトランザクションの少なくとも2つの動作命令を受信するように構成され、ここでは第1のトランザクションの各動作命令がアドレスを運ぶ。決定モジュール605は、少なくとも2つの動作命令内のアドレスに従って、少なくとも2つの動作命令によってアクセスされるメモリ領域を決定するように構成される。検出モジュール610は、少なくとも2つのメモリ領域の第1のメモリ領域の第1の検出ポリシーに従って、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行し、かつ少なくとも2つのメモリ領域の第2のメモリ領域の第2の検出ポリシーに従って、第2のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するように構成される。処理モジュール615は、少なくとも2つの動作命令のコンフリクト検出結果に従って第1のトランザクションのコンフリクト検出結果を得るように構成され、ここでは少なくとも2つの動作命令のコンフリクト検出結果は、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令の検出結果、および第2のメモリ領域にアクセスすることである少なくとも1つの動作命令の検出結果を少なくとも含む。
【００６４】
具体的には、1つのケースでは、検出モジュール610は、第1のメモリ領域に設定される第1のブルームフィルタを使用して、第1のメモリ領域にアクセスすることである少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するように特に構成される。第1のブルームフィルタは、コンピュータシステムによって実行されており、かつ第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、ここでは第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲は、第1の検出ポリシーの検出粒度によって決定される。別のケースでは、検出モジュール610はさらに、第2のメモリ領域に設定される第2のブルームフィルタを使用して、第2のメモリ領域にアクセスすることである少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するように特に構成される。第2のブルームフィルタは、コンピュータシステムによって実行されており、かつ第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、ここでは第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲は、第2の検出ポリシーの検出粒度によって決定される。第2の検出ポリシーの検出粒度は、第1の検出ポリシーの検出粒度と異なる。
【００６５】
実際の適用において、検出モジュール610が、第1のトランザクションの少なくとも2つの動作命令のうちの1つの動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と同じであることを検出した場合、処理モジュール615は、第1のトランザクションがコンピュータシステムによって実行されているトランザクションと衝突すると決定する。検出モジュール610が、第1のトランザクションの少なくとも2つの動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と異なることを検出した場合、処理モジュール615は、第1のトランザクションがコンピュータシステムによって実行されているトランザクションと衝突しないと決定する。
【００６６】
依然として別のケースでは、受信モジュール600は、第2のトランザクションの少なくとも2つの動作命令を受信するようにさらに構成され、ここでは第2のトランザクションの少なくとも2つの動作命令の各動作命令がアドレスを運び、決定モジュール605は、第2のトランザクションの少なくとも2つの動作命令内のアドレスに従って、第2のトランザクションの少なくとも2つの動作命令が第1のメモリ領域にアクセスすることであると決定するようにさらに構成され、検出モジュール610は、第1のメモリ領域の第1の検出ポリシーに従って、第2のトランザクションの少なくとも2つの動作命令に対してコンフリクト検出を実行するようにさらに構成され、処理モジュール615は、第2のトランザクションの少なくとも2つの動作命令の検出結果に従って、第2のトランザクションのコンフリクト検出結果を得るようにさらに構成される。
【００６７】
依然として別のケースでは、受信モジュール600は、第3のトランザクションの少なくとも2つの動作命令を受信するようにさらに構成され、ここでは第3のトランザクションの少なくとも2つの動作命令の各動作命令がアドレスを運び、決定モジュール605は、第3のトランザクションの少なくとも2つの動作命令内のアドレスに従って、第3のトランザクションの少なくとも2つの動作命令が第2のメモリ領域にアクセスすることであると決定するようにさらに構成され、検出モジュール610は、第2のメモリ領域の第2の検出ポリシーに従って、第3のトランザクションの少なくとも2つの動作命令に対してコンフリクト検出を実行するようにさらに構成され、処理モジュール615は、第3のトランザクションの少なくとも2つの動作命令の検出結果に従って、第3のトランザクションのコンフリクト検出結果を得るようにさらに構成される。
【００６８】
本発明のこの実施形態内に提供されるトランザクションコンフリクトを検出するための装置60は、図2、図4、および図5の実施形態内で説明されるトランザクションコンフリクトを検出するための方法を実行し得る。各モジュールの機能の詳細説明については、方法実施形態の説明を参照されたく、詳細は本明細書内には説明されない。
【００６９】
図6に示される実施形態は単に一例であることが理解され得る。例えば、モジュール分割は、単に論理的な機能分割であり、実際の実装においては他の分割であってもよい。例えば、複数のモジュールまたはコンポーネントが、別のデバイスに組み合わされ得るか、もしくは統合され得、またはいくつかの機能が、無視され得るか、もしくは実施されなくてもよい。加えて、表示または説明された相互結合または直接結合または通信接続は、いくつかの通信インターフェースを使用して実装され得る。モジュール間の非直接的結合または通信接続は、電子的、機械的、または他の形式で実装され得る。
【００７０】
別個のパーツとして説明されるモジュールは、物理的に別個であってもそうでなくてもよく、モジュールとして表示されるパーツは、物理的なユニットであってもそうでなくてもよく、1つの場所に位置し得るか、または複数のネットワークユニット上に分布され得る。モジュールの一部またはすべては、実施形態の解決策の目標を達成するために実際の必要性に従って選択され得る。
【００７１】
本発明の実施形態は、プログラムコードを格納するコンピュータ可読記憶媒体を含む、データ処理用のコンピュータプログラム製品をさらに提供し、ここでは本プログラムコードに含まれる命令が、先述の方法実施形態のうちのいずれか1つに説明される方法プロセスを実行するために使用される。当業者は、先述の記憶媒体が、USBフラッシュドライブ、リムーバブルハードディスク、磁気ディスク、光学ディスク、ランダムアクセスメモリ(Random-Access Memory、RAM)、固体ディスク(Solid State Disk、SSD)、または不揮発性メモリ(non-volatile memory)など、プログラムコードを格納することができる任意の非一時的(non-transitory)機械可読媒体を含み得ることを理解し得る。
【００７２】
本出願内に提供される実施形態は単に例示的であることに留意されたい。当業者は、説明の簡便性のため、先述の実施形態において、本実施形態は異なる態様を強調し、一実施形態において詳細に説明されない部分については、別の実施形態の関連説明への参照がなされ得ることを明白に知り得る。本発明の実施形態、請求項、および添付の図面に開示される特徴は、独立して存在するか、または組み合わせて存在し得る。本発明の実施形態においてハードウェア形態で説明される特徴は、ソフトウェアによって実行され得、その逆もまた然りである。本明細書内では、これは制限されない。
【符号の説明】
【００７３】
10  中央処理装置CPU
20  メモリコントローラ
30  メモリ
32  第1のメモリ領域
34  第2のメモリ領域
36  第3のメモリ領域
100  コンピュータシステム
202  制御論理
204  キャッシュ
206  バックエンド通信インターフェース
600  受信モジュール
605  決定モジュール
610  検出モジュール
615  処理モジュール
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
トランザクションコンフリクトを検出するための方法であって、前記方法は、メモリが不揮発性メモリであるコンピュータシステムに適用され、前記メモリが少なくとも2つのメモリ領域を備え、前記少なくとも2つのメモリ領域が異なる検出ポリシーを有し、前記方法がメモリコントローラによって実行され、前記方法は、
第1のトランザクションの少なくとも2つの動作命令を受信するステップであって、前記第1のトランザクションの各動作命令がアドレスを運ぶ、ステップと、
前記少なくとも2つの動作命令内の前記アドレスに従って、前記少なくとも2つの動作命令によってアクセスされるメモリ領域を決定するステップと、
前記少なくとも2つのメモリ領域の第1のメモリ領域の第1の検出ポリシーに従って、前記第1のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するステップと、
前記少なくとも2つのメモリ領域の第2のメモリ領域の第2の検出ポリシーに従って、前記第2のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するステップと、
前記少なくとも2つの動作命令のコンフリクト検出結果に従って前記第1のトランザクションのコンフリクト検出結果を得るステップであって、前記少なくとも2つの動作命令の前記コンフリクト検出結果が、前記第1のメモリ領域にアクセスすることである前記少なくとも1つの動作命令の検出結果、および前記第2のメモリ領域にアクセスすることである前記少なくとも1つの動作命令の検出結果を少なくとも含む、ステップと、
を含む、トランザクションコンフリクトを検出するための方法。
【請求項２】
前記少なくとも2つの動作命令のコンフリクト検出結果に従って前記第1のトランザクションのコンフリクト検出結果を得る前記ステップが、
前記第1のトランザクションの前記少なくとも2つの動作命令のうちの1つの動作命令内のアドレスが属するアドレス範囲が、前記コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と同じであることが検出された場合、前記第1のトランザクションが前記コンピュータシステムによって実行されているトランザクションと衝突すると決定するステップ、または
前記第1のトランザクションの前記少なくとも2つの動作命令内のアドレスが属するアドレス範囲が、前記コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と異なることが検出された場合、前記第1のトランザクションが前記コンピュータシステムによって実行されているトランザクションと衝突しないと決定するステップ
を含む、請求項1に記載の方法。
【請求項３】
前記少なくとも2つのメモリ領域の第1のメモリ領域の第1の検出ポリシーに従って、前記第1のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行する前記ステップが、
前記第1のメモリ領域に設定される第1のブルームフィルタを使用して、前記第1のメモリ領域にアクセスすることである前記少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するステップであって、前記第1のブルームフィルタが、前記コンピュータシステムによって実行されており、かつ前記第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、前記第1のメモリ領域にアクセスする前記動作命令内の前記アドレスが属する前記アドレス範囲が、前記第1の検出ポリシーの検出粒度によって決定される、ステップを含み、
前記少なくとも2つのメモリ領域の第2のメモリ領域の第2の検出ポリシーに従って、前記第2のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行する前記ステップが、
前記第2のメモリ領域に設定される第2のブルームフィルタを使用して、前記第2のメモリ領域にアクセスすることである前記少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するステップであって、前記第2のブルームフィルタが、前記コンピュータシステムによって実行されており、かつ前記第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、前記第2のメモリ領域にアクセスする前記動作命令内の前記アドレスが属する前記アドレス範囲が、前記第2の検出ポリシーの検出粒度によって決定され、前記第2の検出ポリシーの前記検出粒度が、前記第1の検出ポリシーの前記検出粒度と異なる、ステップ
を含む、請求項1または2に記載の方法。
【請求項４】
第2のトランザクションの少なくとも2つの動作命令を受信するステップであって、前記第2のトランザクションの前記少なくとも2つの動作命令の各動作命令がアドレスを運ぶ、ステップと、
前記第2のトランザクションの前記少なくとも2つの動作命令内の前記アドレスに従って、前記第2のトランザクションの前記少なくとも2つの動作命令が、前記第1のメモリ領域にアクセスすることであると決定するステップと、
前記第1のメモリ領域の前記第1の検出ポリシーに従って、前記第2のトランザクションの前記少なくとも2つの動作命令に対してコンフリクト検出を実行するステップと、
前記第2のトランザクションの前記少なくとも2つの動作命令の検出結果に従って、前記第2のトランザクションのコンフリクト検出結果を得るステップと、
をさらに含む、請求項1から3のいずれか一項に記載の方法。
【請求項５】
第3のトランザクションの少なくとも2つの動作命令を受信するステップであって、前記第3のトランザクションの前記少なくとも2つの動作命令の各動作命令がアドレスを運ぶ、ステップと、
前記第3のトランザクションの前記少なくとも2つの動作命令内の前記アドレスに従って、前記第3のトランザクションの前記少なくとも2つの動作命令が、前記第2のメモリ領域にアクセスすることであると決定するステップと、
前記第2のメモリ領域の前記第2の検出ポリシーに従って、前記第3のトランザクションの前記少なくとも2つの動作命令に対してコンフリクト検出を実行するステップと、
前記第3のトランザクションの前記少なくとも2つの動作命令の検出結果に従って、前記第3のトランザクションのコンフリクト検出結果を得るステップと、
をさらに含む、請求項1から4のいずれか一項に記載の方法。
【請求項６】
第1のトランザクションの少なくとも2つの動作命令をメモリコントローラに送信するように構成されるプロセッサと、
データを格納するように構成されるメモリであって、前記メモリが不揮発性メモリであり、前記メモリが少なくとも2つのメモリ領域を含み、前記少なくとも2つのメモリ領域が異なる検出ポリシーを有する、メモリと、
前記プロセッサによって送信される前記第1のトランザクションの前記少なくとも2つの動作命令を受信するように構成され、前記第1のトランザクションの各動作命令がアドレスを運び、
前記少なくとも2つの動作命令内のアドレスに従って、前記少なくとも2つの動作命令によってアクセスされるメモリ領域を決定するように構成され、
前記少なくとも2つのメモリ領域の第1のメモリ領域の第1の検出ポリシーに従って、前記第1のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するように構成され、
前記少なくとも2つのメモリ領域の第2のメモリ領域の第2の検出ポリシーに従って、前記第2のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するように構成され、かつ
前記少なくとも2つの動作命令のコンフリクト検出結果に従って前記第1のトランザクションのコンフリクト検出結果を得るように構成され、前記少なくとも2つの動作命令の前記コンフリクト検出結果が、前記第1のメモリ領域にアクセスすることである前記少なくとも1つの動作命令の検出結果、および前記第2のメモリ領域にアクセスすることである前記少なくとも1つの動作命令の検出結果を少なくとも含む、前記メモリコントローラと、
を備える、コンピュータシステム。
【請求項７】
前記メモリコントローラが、
前記第1のトランザクションの前記少なくとも2つの動作命令のうちの1つの動作命令内のアドレスが属するアドレス範囲が、コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と同じであることが検出された場合、前記第1のトランザクションが前記コンピュータシステムによって実行されているトランザクションと衝突すると決定するように構成され、かつ
前記第1のトランザクションの前記少なくとも2つの動作命令内のアドレスが属するアドレス範囲が、前記コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と異なることが検出された場合、前記第1のトランザクションが前記コンピュータシステムによって実行されているトランザクションと衝突しないと決定するように構成される、請求項6に記載のコンピュータシステム。
【請求項８】
前記メモリコントローラが、
前記第1のメモリ領域に設定される第1のブルームフィルタを使用して、前記第1のメモリ領域にアクセスすることである前記少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するように構成され、前記第1のブルームフィルタが、前記コンピュータシステムによって実行されており、かつ前記第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、前記第1のメモリ領域にアクセスする前記動作命令内の前記アドレスが属する前記アドレス範囲が、前記第1の検出ポリシーの検出粒度によって決定され、かつ
前記第2のメモリ領域に設定される第2のブルームフィルタを使用して、前記第2のメモリ領域にアクセスすることである前記少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するように構成され、前記第2のブルームフィルタが、前記コンピュータシステムによって実行されており、かつ前記第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、前記第2のメモリ領域にアクセスする前記動作命令内の前記アドレスが属する前記アドレス範囲が、前記第2の検出ポリシーの検出粒度によって決定され、前記第2の検出ポリシーの前記検出粒度が、前記第1の検出ポリシーの前記検出粒度と異なる、請求項6または7に記載のコンピュータシステム。
【請求項９】
前記プロセッサが、第2のトランザクションの少なくとも2つの動作命令を前記メモリコントローラに送信するようにさらに構成され、
前記メモリコントローラが、
前記第2のトランザクションの前記少なくとも2つの動作命令を受信するようにさらに構成され、前記第2のトランザクションの前記少なくとも2つの動作命令の各動作命令がアドレスを運び、
前記第2のトランザクションの前記少なくとも2つの動作命令内の前記アドレスに従って、前記第2のトランザクションの前記少なくとも2つの動作命令が、前記第1のメモリ領域にアクセスすることであると決定するようにさらに構成され、
前記第1のメモリ領域の前記第1の検出ポリシーに従って、前記第2のトランザクションの前記少なくとも2つの動作命令に対してコンフリクト検出を実行するようにさらに構成され、かつ
前記第2のトランザクションの前記少なくとも2つの動作命令の検出結果に従って、前記第2のトランザクションのコンフリクト検出結果を得るようにさらに構成される、
請求項6から8のいずれか一項に記載のコンピュータシステム。
【請求項１０】
前記プロセッサが、第3のトランザクションの少なくとも2つの動作命令を前記メモリコントローラに送信するようにさらに構成され、
前記メモリコントローラが、
前記第3のトランザクションの前記少なくとも2つの動作命令を受信するようにさらに構成され、前記第3のトランザクションの前記少なくとも2つの動作命令の各動作命令がアドレスを運び、
前記第3のトランザクションの前記少なくとも2つの動作命令内の前記アドレスに従って、前記第3のトランザクションの前記少なくとも2つの動作命令が、前記第2のメモリ領域にアクセスすることであると決定するようにさらに構成され、
前記第2のメモリ領域の前記第2の検出ポリシーに従って、前記第3のトランザクションの前記少なくとも2つの動作命令に対してコンフリクト検出を実行するようにさらに構成され、かつ
前記第3のトランザクションの前記少なくとも2つの動作命令の検出結果に従って、前記第3のトランザクションのコンフリクト検出結果を得るようにさらに構成される、
請求項6から9のいずれか一項に記載のコンピュータシステム。
【請求項１１】
トランザクションコンフリクトを検出するための装置であって、前記装置は、メモリが不揮発性メモリであるコンピュータシステムに適用され、前記メモリが少なくとも2つのメモリ領域を備え、前記少なくとも2つのメモリ領域が異なる検出ポリシーを有し、前記装置は、
第1のトランザクションの少なくとも2つの動作命令を受信するように構成される受信モジュールであって、前記第1のトランザクションの各動作命令がアドレスを運ぶ、受信モジュールと、
前記少なくとも2つの動作命令内の前記アドレスに従って、前記少なくとも2つの動作命令によってアクセスされるメモリ領域を決定するように構成される、決定モジュールと、
前記少なくとも2つのメモリ領域の第1のメモリ領域の第1の検出ポリシーに従って、前記第1のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行し、かつ前記少なくとも2つのメモリ領域の第2のメモリ領域の第2の検出ポリシーに従って、前記第2のメモリ領域にアクセスすることである少なくとも1つの動作命令に対してコンフリクト検出を実行するように構成される、検出モジュールと、
前記少なくとも2つの動作命令のコンフリクト検出結果に従って前記第1のトランザクションのコンフリクト検出結果を得るように構成される処理モジュールであって、前記少なくとも2つの動作命令の前記コンフリクト検出結果が、前記第1のメモリ領域にアクセスすることである前記少なくとも1つの動作命令の検出結果、および前記第2のメモリ領域にアクセスすることである前記少なくとも1つの動作命令の検出結果を少なくとも含む、処理モジュールと、
を備える、コンフリクトを検出するための装置。
【請求項１２】
前記処理モジュールが、
前記第1のトランザクションの前記少なくとも2つの動作命令のうちの1つの動作命令内のアドレスが属するアドレス範囲が、前記コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と同じであることが検出された場合、前記第1のトランザクションが前記コンピュータシステムによって実行されているトランザクションと衝突すると決定するように構成され、かつ
前記第1のトランザクションの前記少なくとも2つの動作命令内のアドレスが属するアドレス範囲が、前記コンピュータシステムによって実行されている動作命令内のアドレスが属するアドレス範囲と異なることが検出された場合、前記第1のトランザクションが前記コンピュータシステムによって実行されているトランザクションと衝突しないと決定するように構成される、請求項11に記載の装置。
【請求項１３】
前記検出モジュールが、
前記第1のメモリ領域に設定される第1のブルームフィルタを使用して、前記第1のメモリ領域にアクセスすることである前記少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するように構成され、前記第1のブルームフィルタが、前記コンピュータシステムによって実行されており、かつ前記第1のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、前記第1のメモリ領域にアクセスする前記動作命令内の前記アドレスが属する前記アドレス範囲が、前記第1の検出ポリシーの検出粒度によって決定され、かつ
前記第2のメモリ領域に設定される第2のブルームフィルタを使用して、前記第2のメモリ領域にアクセスすることである前記少なくとも1つの動作命令内のアドレスに対してコンフリクト検出を実行するように構成され、前記第2のブルームフィルタが、前記コンピュータシステムによって実行されており、かつ前記第2のメモリ領域にアクセスする動作命令内のアドレスが属するアドレス範囲のハッシュ値を含み、前記第2のメモリ領域にアクセスする前記動作命令内の前記アドレスが属する前記アドレス範囲が、前記第2の検出ポリシーの検出粒度によって決定され、前記第2の検出ポリシーの前記検出粒度が、前記第1の検出ポリシーの前記検出粒度と異なる、
請求項11または12に記載の装置。
【請求項１４】
前記受信モジュールが、第2のトランザクションの前記少なくとも2つの動作命令を受信するようにさらに構成され、前記第2のトランザクションの前記少なくとも2つの動作命令の各動作命令がアドレスを運び、
前記決定モジュールが、前記第2のトランザクションの前記少なくとも2つの動作命令内の前記アドレスに従って、前記第2のトランザクションの前記少なくとも2つの動作命令が、前記第1のメモリ領域にアクセスすることであると決定するようにさらに構成され、
前記検出モジュールが、前記第1のメモリ領域の前記第1の検出ポリシーに従って、前記第2のトランザクションの前記少なくとも2つの動作命令に対してコンフリクト検出を実行するようにさらに構成され、
前記処理モジュールが、前記第2のトランザクションの前記少なくとも2つの動作命令の検出結果に従って、前記第2のトランザクションのコンフリクト検出結果を得るようにさらに構成される、
請求項11から13のいずれか一項に記載の装置。
【請求項１５】
前記受信モジュールが、第3のトランザクションの少なくとも2つの動作命令を受信するようにさらに構成され、前記第3のトランザクションの前記少なくとも2つの動作命令の各動作命令がアドレスを運び、
前記決定モジュールが、前記第3のトランザクションの前記少なくとも2つの動作命令内の前記アドレスに従って、前記第3のトランザクションの前記少なくとも2つの動作命令が、前記第2のメモリ領域にアクセスすることであると決定するようにさらに構成され、
前記検出モジュールが、前記第2のメモリ領域の前記第2の検出ポリシーに従って、前記第3のトランザクションの前記少なくとも2つの動作命令に対してコンフリクト検出を実行するようにさらに構成され、
前記処理モジュールが、前記第3のトランザクションの前記少なくとも2つの動作命令の検出結果に従って、前記第3のトランザクションのコンフリクト検出結果を得るようにさらに構成される、
請求項11から14のいずれか一項に記載の装置。
【請求項１６】
1つもしくは複数のコンピュータ実行可能命令を含むコンピュータ可読媒体であって、前記1つもしくは複数のコンピュータ実行可能命令は、コンピュータシステムのプロセッサ上で実行されたとき、前記コンピュータシステムに、請求項1から5のいずれか一項に記載の方法を実行させる、コンピュータ可読媒体。
【国際調査報告】
2018500697.tif 000012
2018500697.tif 000013
2018500697.tif 000014
2018500697.tif 000015