(57)【特許請求の範囲】
【請求項１】
複数の命令を実行するように単一ダイ上に構成された複数のコアと、
前記単一ダイ上に配置されたコンテキストキャッシュメモリと、
前記複数のコアの各々で前記複数の命令の実行を制御するように前記単一ダイ上に配置されたコンテキスト切り替えコントローラと、を備え、
前記コンテキスト切り替えコントローラが、
プロセスに関連付けられるプロセスＩＤが前記コンテキストキャッシュメモリに格納されていないという決定により、プロセスのコンテキスト切り替え情報が前記コンテキストキャッシュメモリに格納されていないと決定し、
前記コンテキスト切り替え情報が前記コンテキストキャッシュメモリに格納されていないという決定に応答して、割り込みを生成し、
前記単一ダイに配置されていないシステムメモリのメモリブロックの識別子を受信し、前記メモリブロックは、前記コンテキスト切り替え情報を備えており、
前記メモリブロックに関連付けられるタグが、前記プロセスに関連付けられるプロセスＩＤと、前記プロセスに関連付けられるアクセスマスクとを含むことを決定し、
前記単一ダイに配置されていないシステムメモリのメモリブロックにおいて、前記プロセスの前記コンテキスト切り替え情報にアクセスする、プロセッサ。
【請求項２】
前記単一ダイ上に配置された前記コンテキストキャッシュメモリは、前記複数の命令の各々の識別子および前記複数の命令の各々の状態を格納するように構成される、請求項１に記載のプロセッサ。
【請求項３】
前記コンテキスト切り替え情報にアクセスするために、前記コンテキスト切り替えコントローラは、
前記メモリにアクセスする要求を受信し、ここで、前記要求は、実行プロセスマスクを含み、
前記アクセスマスクが前記実行プロセスマスクに一致するかどうかを判定し、
前記アクセスマスクと前記実行プロセスマスクとの一致に応答して、前記メモリブロックへのアクセスを許可するように構成されている、請求項１に記載のプロセッサ。
【請求項４】
前記プロセスＩＤは、スレッドＩＤ又は仮想マシンＩＤを含む、請求項１に記載のプロセッサ。
【請求項５】
前記コンテキスト切り替えコントローラは、前記プロセスのコンテキストマップロケーションを受信するように更に構成されている、請求項１に記載のプロセッサ。
【請求項６】
前記コンテキスト切り替えコントローラは、前記割り込みに応答して、前記単一ダイに配置されていないシステムメモリにおいて、レジスタセットを備えるメモリブロックの識別子を受信するように更に構成されている、請求項１に記載のプロセッサ。
【請求項７】
前記コンテキスト切り替えコントローラは、前記単一ダイに配置されていないシステムメモリにおいて、前記レジスタセットを備える前記メモリブロックの前記識別子の受信に応答して、前記単一ダイに配置されている前記コンテキストキャッシュメモリにおいて、前記レジスタセットをキャッシュするように更に構成されている、請求項６に記載のプロセッサ。
【請求項８】
プロセス切り替えを実行するための方法であって、
複数のコアを備える単一ダイ上に構成された中央演算処理装置上に構成されたコンテキストコントローラにおいて、前記中央演算処理装置上で実行するプロセスを識別するコマンドを受信し、
前記単一ダイ上に配置されているコンテキストキャッシュメモリに前記プロセスのコンテキスト切り替え情報が格納されていないと判断し、それに応答して割り込みを生成し、
前記コンテキストコントローラにおいて、前記単一ダイに配置されていないシステムメモリのメモリブロックの識別子を受信し、前記メモリブロックは、前記コンテキスト切り替え情報を備えており、
前記メモリブロックに関連付けられるタグが、前記プロセスに関連付けられるプロセスＩＤと、前記プロセスに関連付けられるアクセスマスクとを含むことを決定し、
前記単一ダイに配置されていないシステムメモリのメモリブロックにおいて、前記プロセスの前記コンテキスト切り替え情報にアクセスし、
前記複数のコアの一つで実行するプロセスをスケジュールする、方法。
【請求項９】
前記コンテキスト切り替え情報にアクセスすることは、
前記メモリにアクセスする要求を受信することであって、前記要求は、実行プロセスマスクを含む、ことと、
前記アクセスマスクが前記実行プロセスマスクに一致するかどうかを判定することと、
前記アクセスマスクと前記実行プロセスマスクとの一致に応答して、前記メモリブロックへのアクセスを許可することと、
を備える、請求項８に記載の方法。
【請求項１０】
前記割り込みに応答して、前記単一ダイに配置されていない前記システムメモリにおいて、レジスタセットを備えるメモリブロックの識別子を受信すること、
を更に備える、請求項８に記載の方法。
【請求項１１】
前記単一ダイに配置されていない前記システムメモリにおいて、レジスタセットを備えるメモリブロックの識別子の受信に応答して、前記中央演算処理装置において、前記レジスタセットをキャッシュすること、
を更に備える、請求項１０に記載の方法。
【請求項１２】
前記コマンドは、前記プロセスを識別するプロセスＩＤを備える、請求項８に記載の方法。
【請求項１３】
前記単一ダイ上に配置されているコンテキストキャッシュメモリに前記プロセスのコンテキスト切り替え情報が格納されていないと判断することは、前記プロセスＩＤが前記単一ダイ上に配置されているコンテキストキャッシュメモリに格納されていないと判断することを備える、請求項１２に記載の方法。
【請求項１４】
前記プロセスＩＤは、スレッドＩＤ又は仮想マシンＩＤを含む、請求項１２に記載の方法。
【請求項１５】
前記プロセスのコンテキストマップロケーションを受信することを更に備える、請求項８に記載の方法。
【請求項１６】
コンピュータに請求項８乃至１５のうち何れか１項に記載の方法を実行させる機械読み取り可能な命令を備えるコンピュータプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
中央演算処理装置（ＣＰＵ：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）のクロック制御の可能な高速化には限界があり、回路およびトランジスタの可能な小型化および高速化には限界があるので、業界では、コンピューティングプラットフォームのパフォーマンスを高めるためにプロセス最適化および並列コンピューティングに頼ってきた。このことは、マルチコアおよび多数コアプロセッサの概念をもたらした。
【０００２】
同機種および異機種モデルのいずれにもマルチコアプロセッサが開発されている。マルチコアおよび多数コアプロセッサの基本的な問題は、オペレーティングシステムのスケーラビリティに関するものである。現在、オペレーティングシステムは、使用可能なＣＰＵコアの数を追跡して、それらの各コア上のプロセスおよびスレッドをスケジュールする必要がある。オペレーティングシステムが、プロセスを実行させる命令をＣＰＵに与える前に、状態を保存して、新しい状態およびコンテキストをＣＰＵにロードすることによって、プロセスをスワップする必要があるので、これはオペレーティングシステムにとって多大な時間を要する操作である。
【発明の概要】
【０００３】
一部の実施形態において、プロセッサは、複数の命令を実行するように単一ダイ上に構成された複数コアと、複数コアの各々で命令の実行を制御するように単一ダイ上で構成されたコンテキスト切り替えコントローラとを含む。
【０００４】
一部の実施形態において、プロセス切り替えを実行するための方法は、中央演算処理装置で構成されたコンテキストコントローラにおいて実行するプロセスを識別するプロセスＩＤを含むコマンドを受信することと、中央演算処理装置でメモリ内のプロセスＩＤに基づいてプロセスにアクセスすることと、アクセスされたプロセスを、中央演算処理装置上の多数のコアのうちの１つで実行するようにスケジュールすることとを含む。
【０００５】
一部の実施形態において、メモリブロックを保護するための方法は、アクセスするメモリブロックを識別することと、メモリブロックのアクセスマスクを生成することと、メモリブロックにプロセス識別情報および生成されたマスクでタグ付けすることとを含む。
【０００６】
一部の実施形態において、マルチコアデバイスを使用してトランザクションの処理を可能にするための装置は、多数のコアを有する中央演算処理装置（ＣＰＵ）と、プロセッサ側バスを介してＣＰＵに結合されたメモリバスコントローラと、第１のメモリ側バスを介してメモリバスコントローラに結合された主メモリコアと、第２のメモリ側バスを介してメモリバスコントローラに結合されたトランザクションメモリコアとを含み、ＣＰＵは、メモリバスコントローラに提供された切り替えの値に基づいて第１および／または第２のメモリ側バスとしてメモリコントローラによって選択されたメモリバスを介してデータのフローを方向付ける。
【０００７】
上記の説明は課題を解決するための手段であるため、必然的に、詳細の簡略化、一般化、および省略を含み、したがって、当業者であれば、課題を解決するための手段が例示に過ぎず、限定的なものであることは意図されていないことを理解するであろう。本明細書において説明されるデバイスおよび／またはプロセスおよび／またはその他の主題のその他の態様、特徴、および利点は、本明細書において示される教示において明らかとなろう。この課題を解決するための手段は、発明を実施するための形態において後段でさらに説明される簡略化された形で一連の概念を紹介するために提供される。この課題を解決するための手段は、請求の範囲に係る主題の主要特徴または重要特徴を特定することを意図しておらず、また請求の範囲に係る主題の範囲を決定する際の補助として使用されることも意図していない。
【０００８】
本開示の前述および他の特徴は、添付の図と併せて、以下の説明および添付の特許請求の範囲を読めばさらに明らかとなろう。それらの図面は本開示によるいくつかの実施形態を示すに過ぎず、したがって、本開示の範囲を限定するものと見なされるべきではないことを理解して、添付の図面を使用することで、本開示がさらに具体的かつ詳細に説明されることになる。
【図面の簡単な説明】
【０００９】
【図１】本開示の一部の実施形態による、中央演算処理装置の例示的な構成を示す図である。
【図２】本開示の一部の実施形態による、プロセスをスケジュールするための方法を示す例示的な流れ図である。
【図３】本開示の一部の実施形態による、ＣＰＵおよびメモリの例示的な構成を示す図である。
【図４】本開示の一部の実施形態による、メモリブロックにタグ付けするための方法を示す例示的な流れ図である。
【図５】本開示の一部の実施形態による、例示的なハードウェア構成を示す図である。
【図６】本開示の一部の実施形態による、例示的な論理図を示す図である。
【発明を実施するための形態】
【００１０】
以下の詳細な説明において、本明細書の一部を形成する付属の図面が参照される。図面において、文脈に特に指示がない限り、類似する符号は概して、類似するコンポーネントを識別する。詳細な説明、図面、および特許請求の範囲において説明される例示の実施形態は、限定的であることを意図していない。本明細書において提示される主題の精神および範囲を逸脱することなく、その他の実施形態を使用してもよく、その他の変更を行なってもよい。本明細書において概ね説明され、図面に示される本開示の態様を、多岐にわたるさまざまな構成において配置し、代替し、組み合わせて、設計してもよく、それらすべては明示的に企図され、本開示の一部をなすことは容易に理解されよう。
【００１１】
本開示は、とりわけ、１つのプロセスから別のプロセスに切り替えるために要する時間を除去または短縮することにより並列性を高めるように構成されたプロセス管理コンポーネントに関連する方法、装置、コンピュータプログラム、およびシステムを対象とする。プロセス管理コンポーネントは、コンテキスト切り替えを実行するハードウェアレベルのコンポーネントとして実施されてもよい。コンテキストは、データセグメント、スタックセグメント、拡張セグメント、コードセグメントのＣＰＵレジスタ、直接レジスタ、もしくはＣＰＵ内に含まれる任意のその他の関連するＣＰＵレジスタまたはＩ／Ｏコントローラ内に含まれるレジスタ（ただし、これらに限定されることはない）を含むプロセスに関連付けられているメモリ状態であってもよい。たとえばコンテキストコントローラのような、ハードウェアコンポーネントは、ＣＰＵ上で構成されてもよい。ＣＰＵは、単一ダイ（またはＣＰＵ基板内の複数ダイ）上で構成されてもよい。本開示内において、「ダイ（ｄｉｅ）」または「単一ダイ（ｓｉｎｇｌｅ  ｄｉｅ）」という用語は、単一の製造された回路を文字通りに識別することを意図してはいないことに留意されたい。この用語は、１つまたは複数の別個の処理回路またはコアを含むことができるＣＰＵパッケージを広く説明することが意図される。複数処理装置を含むＣＰＵパッケージを同様に広く説明する「基板（ｓｕｂｓｔｒａｔｅ）」という用語は、本開示において「ダイ」または「単一ダイ」という用語の代わりに代用してもよく、コンテキストコントローラおよび複数の処理コアを含むことができる。したがって、コンテキストコントローラは、実行すべきコンテキストの状態に関する主メモリに格納されたデータにアクセスしてデータを取り出すために、メモリ帯域幅アクセスを待つ必要はなく、実際のＣＰＵコアが使用可能になるのを待つ必要がない。コンテキストは、コンテキストデータのために主メモリにアクセスする必要なくＣＰＵ上でコンテキストコントローラによって実行状態へとスワップする、または実行状態からスワップすることができる。コンテキストコントローラは、ＣＰＵダイ上のローカルキャッシュメモリにコンテキスト切り替えを実行するために必要な情報を有する。
【００１２】
本開示は、とりわけ、ハードウェアにプロセスＩＤの可視性をもたらすための技法を対象とし、メモリブロックは、仮想メモリマップ構造内にプロセスＩＤを含むタグで構成され、それによりセキュリティのレベルをもたらす。
【００１３】
本開示は、とりわけ、たとえばトランザクションプロセスに障害が生じた場合に冗長メモリを提供するために２つのメモリコアを含む構成を提供することをさらに対象とする。
【００１４】
コアアーキテクチャ
図１は、本開示の一部の実施形態による、ＣＰＵおよび主メモリを示す例示的な図である。図１に示されるように、ＣＰＵ１０２は、コンテキストコントローラ１０４、コア０〜８  １０６、コンテキストキャッシュメモリ／バス１０８、ならびにＬ１およびＬ２キャッシュ１１０とＬ３キャッシュ１１１を含む。コア０〜８のみが示されているが、追加のコアがＣＰＵ１０２において構成されてもよいことは理解できよう。コア０〜８  １０６は各々、それぞれのＬ１およびＬ２キャッシュ１１０に結合される。Ｌ２キャッシュ１１０は各々、Ｌ３キャッシュ１１１に結合される。Ｌ３キャッシュ１１１は、主メモリ１２０に通信可能にリンクされる。ＣＰＵ１０２は、たとえば単一集積回路のような、単一ダイ上に実装されてもよい。
【００１５】
コア０〜８  １０６は各々、コンテキストコントローラ１０４に通信可能にリンクされ、各々はコンテキストコントローラ１０４の指示により特定の命令セットアーキテクチャに従ってプロセスまたは命令を実行するように独立して構成される。
【００１６】
コンテキストコントローラ１０４は、ＣＰＵ１０２の全体のダイ構造内で構成される。コンテキストコントローラ１０４は、プロセスコンテキストが実行のためにオペレーティングシステムの指示でローカルキャッシュで使用可能ではなく、主メモリ１２０が実行中プロセスに関する情報を格納するためのメモリブロックを含む場合、主メモリ１２０からコンテキスト詳細を、たとえばプルするなど、受信するように構成される。
【００１７】
コンテキストキャッシュメモリ／バス１０８は、コンテキストコントローラ１０４が、各コア１０６と直接相互作用することによりプロセスを各コアの内および外に移動させることができるようにする。キャッシュメモリは、オペレーティングシステムおよび／または仮想マシンによって定義されるプロセス定義を含む、プロセスのコンテキストを格納する。これらのプロセスおよび定義もまた、コンテキストキャッシュ１１２に格納されてもよい。オペレーティングシステムによって定義されるさらに多くのコンテキストが、ダイ上のコンテキストキャッシュ１１２に格納されてもよいことが理解されよう。したがって、コンテキスト切り替えは、コンテキストがダイ上で使用可能ではない場合、主メモリへと進む必要がある場合がある。
【００１８】
主メモリ１２０は、割り込みベクトルテーブル１２２、その他の割り込み１２４、不明のコンテキスト１２６、コンテキストキャッシュ１１２からのスピルオーバーを含むコンテキスト詳細１２８、タイマー割り込み１３０、およびコンテキストキャッシュコピー１３２を含むことができる。当業者には理解されるように、主メモリは、実行中プロセスの情報を定義するコンテキスト定義マップを格納し、コンテキストスワップが実行されるときにコンテキストコントローラ１０４によりマップへのアクセスを提供する。
【００１９】
前述のように、キャッシュメモリは、プロセス定義をコアに格納する。キャッシュが満杯である場合、プロセス定義は主メモリに格納される。コンテキスト切り替え中に、コンテキスト切り替えがキャッシュ内にプロセスＩＤを見つけることができない場合、オペレーティングシステムが主メモリ内のコンテキストマップの場所をコンテキストコントローラに知らせることができるように、不明のコンテキスト割り込み１２６がオペレーティングシステムに提供される。コンテキストコントローラ１０４は、コンテキストキャッシュ１１２内で実行中または実行中ではない定義済みのプロセスに直接アクセスすることができる。コンテキストコントローラ１０４は、オペレーティングシステムによって定義されているように新しいコンテキストをプルして主メモリと直接相互作用する。コンテキストコントローラは通常、コンテキストがキャッシュ内で定義されていないか、または存在しない場合にオペレーティングシステムが認識するように、「Ｕｎｋｎｏｗｎ  Ｃｏｎｔｅｘｔ（不明のコンテキスト）」および「Ｃｏｎｔｅｘｔ  Ｓｔｏｐｐｅｄ（停止コンテキスト）」割り込みを投入することができる。コンテキストは、プロセスＩＤ（たとえば、スレッドＩＤおよび／または仮想マシンＩＤを含む）によって識別されてもよい。Ｌ１、Ｌ２、Ｌ３キャッシュは通常、たとえば新しいｉ７プロセッサにおいてＩｎｔｅｌのようなＣＰＵ製造業者によって設計されているように動作することができる。コンテキスト切り替えは、コンテキストコントローラを介して行なわれ、必要な場合に限って割り込みおよびダイ以外のアクセスが生じる。
【００２０】
図１に示される構成を提供することにより、オペレーティングシステムが、ＣＰＵ上の各コアを管理する必要はなくなる。したがって、オペレーティングシステムの動作の機能は、プロセスの管理においてさらに簡略化され、必要に応じてハードウェアが縮小できるようになる。
【００２１】
コアアーキテクチャによれば、プロセッサ仮想化は、オペレーティングシステムからＣＰＵコアの数の可視性を除去することによって達成されてもよい。オペレーティングシステムはコンテキストコントローラを認識するだけでよく、それによりオペレーティングシステムを解放してプロセス優先順位付け、プロセスキューイング、およびメモリ管理に集中できるようにする。
【００２２】
コンテキストコントローラは、ダイ上の実行中およびスタンバイプロセスコンテキストをキャッシュに入れ、任意の使用可能なスレッドキューまたはコアでプロセス優先順位キューイングに基づいてプロセスを実行することができる。これにより、プロセスは、オペレーティングシステムがプロセスをタイムスライスする必要なく実行することができる。プロセス実行およびコンテキスト切り替えは、優先順位により自動的に行なわれ、コンテキスト切り替えが認識されるプロセスの、コンテキスト切り替えによって制御される。
【００２３】
次いで、オペレーティングシステムは、実行中プロセスのみを追跡して、優先順位実行コマンドをコンテキストコントローラに発行することができる。コンテキストコントローラは、コンテキストレジスタメモリを、必要に応じて任意の使用可能なコアにスワップすることができる。
【００２４】
プロセス切り替え
現在のプロセスコンテキスト切り替えは、オペレーティングシステムが、ＣＰＵレジスタマップおよびｎ−ｗａｙの連想配列の仮想メモリマップのセグメントを含む主メモリにコンテキストブロックをセットアップすることで開始する。
【００２５】
本明細書において説明されるコンテキストコントローラによって実行されるような、ＨＰＣＳ（Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｎｔｅｘｔ  Ｓｗｉｔｃｈ：高性能コンテキスト切り替え）の手法は、オペレーティングシステムが長い待ち時間の切り替えを実行する必要がないように、ダイ上のキャッシュのプロセスＩＤによりＣＰＵコンテキストをキャッシュに入れることである。
【００２６】
１．  対称型マルチプロセッシング（ＳＭＰ：ｓｙｍｍｅｔｒｉｃ  ｍｕｌｔｉ  ｐｒｏｃｅｓｓｉｎｇ）によるプロセス切り替え
リアルタイムクロック割り込みは定期的に生じ（タイムスライスと呼ばれる）、プロセスが実行される必要があるかどうかをオペレーティングシステムが決定することができるように、実行中プロセスからオペレーティングシステムへプロセス実行を切り替える。これは、「プリエンプティブマルチタスキング（ｐｒｅ−ｅｍｐｔｉｖｅ  ｍｕｌｔｉ−ｔａｓｋｉｎｇ）」と呼ばれる。ＣＰＵは、割り込みが生じた場合、現在のレジスタセットを主メモリ内の「スタック」に自動的に保存する。
【００２７】
次いで、オペレーティングシステムは、どのコアおよびどのプロセスを次に実行するかを決定することができる。オペレーティングシステムは、コアを見つけ、コアに割り込みを行ない、現在のコアレジスタマップを主メモリにスワップアウトして、新しいレジスタセットを主メモリにセットアップし、「スタック」上に保存されたレジスタを必要に応じて調整し、次いでＣＰＵレジスタを主メモリからＣＰＵスレッドキューに移動して戻すことができるＩＲＥＴ（ｒｅｔｕｒｎ  ｆｒｏｍ  ｉｎｔｅｒｒｕｐｔ：割り込みからの戻り）を実行することができる。
【００２８】
リアルタイムクロックは、再度割り込みを行なうことができ、プロセスは繰り返す。
【００２９】
２．  高性能コンテキスト切り替え（ＨＰＣＳ）によるプロセス切り替え
リアルタイムクロック割り込みは、定期的に生じて、実行中プロセスからオペレーティングシステムに実行を切り替える。
【００３０】
図２は、本開示の一部の実施形態による、プロセスをスケジュールするための方法を示す例示的な流れ図である。示される例示的な流れ図は、中央演算処理装置において実行するためのプロセスを受信および割り当てする際にコンテキストコントローラによって実行されてもよい。
【００３１】
オペレーティングシステムは、次のタイムスライスにＣＰＵでどのプロセスＩＤが実行されうるかを決定することができる。次いで、オペレーティングシステムは、ＣＰＵのコンテキストコントローラにＳＣＴＸ（ｎｅｗ  ＣＰＵ  ｉｎｓｔｒｕｃｔｉｏｎ：新規ＣＰＵ命令）を発行して実行すべきプロセスＩＤを識別することができる。コンテキストコントローラは、コマンドを受信する（ブロック２０４）。ＣＰＵのコンテキストコントローラは、たとえば受信したプロセスＩＤに基づいて、プロセスがＣＰＵのメモリに格納されているかどうかを決定することにより、コンテキストコントローラがプロセスを認識しているかどうかを決定することができる。プロセスがＣＰＵのキャッシュメモリに格納されている場合、コンテキストコントローラはプロセスにアクセスすることができる（ブロック２０６）。次いで、コンテキストコントローラは、プロセスＩＤを、コンテンツのそのキャッシュされたプールからのコンテキスト情報と共に、使用可能なＣＰＵコアにスケジュールするかまたはキューに入れることができる（ブロック２０８）。
【００３２】
コンテキストコントローラがプロセスを認識していない場合、「Ｕｎｋｎｏｗｎ  Ｐｒｏｃｅｓｓ  Ｉｎｔｅｒｒｕｐｔ（不明のプロセス割り込み）」を生成することができ、その場合、実行用のプロセスＩＤをキャッシュに入れてスケジュールするためにコンテキストを転送するＣＰＵのコンテキストコントローラに対して、コンテキストレジスタセットを含むメモリブロックを単に識別する、従来のコンテキスト切り替えの変更された手法が実行されてもよい。
【００３３】
ＣＰＵのコンテキストコントローラは、レジスタセットをダイ上の内部バッファ（図示せず）でキャッシュに入れる。ＩＲＥＴコマンド（ｒｅｔｕｒｎ  ｆｒｏｍ  ｉｎｔｅｒｒｕｐｔ：割り込みからの戻り）は、通常のメモリからＣＰＵに「スタック」セットを移動して、「ｕｎｋｎｏｗｎ  ｃｏｎｔｅｘｔ  ｉｎｔｅｒｒｕｐｔ：不明のコンテキスト割り込み」を完了する。
【００３４】
コアが「満杯（ｆｕｌｌ）」（それ以上プロセススロットがないことを意味する）である場合、ＣＰＵは、ＳＣＴＸコマンドが実行されたとき、プロセスが停止され、待ちキューに入れられたことをオペレーティングシステムに通知することができる「Ｐｒｏｃｅｓｓ  Ｉｎｔｅｒｒｕｐｔｅｄ（プロセス割り込み）」割り込みを発行することができる。キャッシュが満杯であり、それ以上待ちキュースロットがない場合、「Ｐｒｏｃｅｓｓ  Ｓｗａｐ  Ｉｎｔｅｒｒｕｐｔ（プロセススワップ割り込み）」が生じることがあり、オペレーティングシステムは、現在のコンテキストを保存するよう通知されてもよい。これは、ダイからスワップされるべきコンテキストを保存するメモリブロックをＣＰＵのコンテキストコントローラに対して識別することによって行なわれる。
【００３５】
ＣＰＵは、割り込みされたプロセスコンテキストを引き続き格納することができる。したがって、プロセスが割り込みされる場合、ＣＰＵは「スワップイン／アウト」される必要はない。オペレーティングシステムは、プロセスが「待ち状態（ｗａｉｔ  ｓｔａｔｅ）」にあることを追跡することができる。オペレーティングシステムは、待ちキュープロセスが実行状態に代わるようにタイムスライス中に「ｅｘｅｃｕｔｅ  ｎｏｗ（直ちに実行）」（ＳＣＴＸ）コマンドを発行することができる。プロセスが待ち状態にある場合、主メモリからのレジスタのスワップは必要ない。
【００３６】
各プロセスは、コアが満杯であるときに「Ｐｒｏｃｅｓｓ  Ｉｎｔｅｒｒｕｐｔｅｄ（プロセス割り込み）」割り込みを実行すべきプロセスを決定する場合に、コンテキストコントローラが使用することができる優先順位インジケータを与えられてもよい。モードおよび優先順位に基づいて、コンテキストコントローラは、キャッシュ内に格納されているプロセスコンテキストを順序正しく実行することができる。オペレーティングシステムは、要求に応じてプロセス切り替え割り込みおよびタイマー割り込みをリッスンし、プロセス変更をコンテキストコントローラに伝達することにより、随時キャッシュスワップを強制する必要もある。
【００３７】
リアルタイムクロックは、再度割り込みを行なうことができ、プロセスは繰り返す。
【００３８】
上記のプロセスを実施することにより、オペレーティングシステムは、実行すべきコアを決定する必要はなくなる。オペレーティングシステムは、コアに直接割り込みを行なうことはない。したがって、待ち時間およびシステムスループットは、ＣＰＵ内のコアの数の増大に伴って、逆の作用を有する。従来のＳＭＰスループットはＣＰＵコアの数の増大に伴って減少するが、ＨＰＣＳを使用することで、ＣＰＵコアの数の増大に伴ってスループットを改善する。
【００３９】
オペレーティングシステムは、処理優先順位に対する制御を維持することができる。オペレーティングシステムは、どのプロセスＩＤを実行する必要があるかをコンテキストコントローラに指示する。オペレーティングシステムは、実行しようとするプロセスをコンテキストコントローラに通知し、次いでコンテキストコントローラはプロセスをＣＰＵコアに移動させる。
【００４０】
ハードウェアは、コンテキスト切り替えを実行するために、プロセスの場所に関して格納されている情報にアクセスする。プロセスＩＤを与えられ、コンテキストコントローラは、オペレーティングシステムによってコンテキスト切り替えに提供されたメモリマップベースのアドレス指定に基づいてコンテキスト切り替えを実行するための情報を見つける場所を認識する。コンテキストコントローラは、メモリおよび非専用のコアを管理し、実行中プロセスに関する情報を有する。
【００４１】
各プロセスは優先順位を有する。別のプロセスが実行される場合、コンテキストコントローラは、どのプロセスがスワップアウトされうるかを決定する。どのプロセスがどのコアで実行中であるかを示すテーブルが保持される。テーブルは専用メモリバッファに格納されてもよく、プロセスが実行中であるかどうか、プロセスの優先順位などに関する情報を格納することができる。したがって、プロセスをコアとの間で移動するために必要なすべての命令は、コンテキストコントローラにおけるハードウェアによって処理される。
【００４２】
上記の構成を前提として、オペレーティングシステムは、実際のプロセッサＣＰＵ命令を主メモリの内および外に移動する必要はなくなる。実行するために必要なプロセス情報は、ＣＰＵ自体にある。したがって、コンテキスト切り替え待ち時間は、情報がダイ自体にない場合に情報にアクセスして取得するために必要とされ使用されるＣＰＵサイクルの数だけ短縮される。さらに、コンテキスト切り替えは、オペレーティングシステムがサイクルに割り込みを行なう場合を除いて、オペレーティングシステムに関与することなく既知のコンテンツのキャッシュを自動的に繰り返すことができる。これは、自動コンテキスト切り替えと呼ばれる。
【００４３】
セキュリティ
コンピューティングクラウドのような共有環境に、並行プロセスおよび仮想マシンがますます作成されるようになり、データセキュリティを提供するための対策を講じる必要がある。ハードウェアはプログラムにより変更することは困難または不可能であるため、ハードウェアレベルでセキュリティを提供することは、安全なコンピューティング環境を提供する上で最も魅力的なオプションの１つである。
【００４４】
本開示の一部の実施形態と一致する原理は、ハードウェアにプロセスＩＤの可視性を提供し、メモリブロックはセキュリティビットを含むプロセスＩＤを含む仮想メモリマップで構成され、それによりソフトウェアレベルよりもさらに安全なハードウェアレベルにおけるセキュリティのレベルをもたらす。
【００４５】
プロセスＩＤタグとアクセスマスクの組み合わせにより、ユーザスペースのメモリブロックは、ブロックがプロセス間で共有され引き続き安全でありうるように、プロセスマスクに安全に、かつ可視でタグ付けされてもよい。プロセスＩＤタグおよびアクセスマスクの組み合わせを提供することにより、コンピューティングクラウドのような共有コンピューティングサービスは、無許可のソースによるメモリアクセスの可能性を回避することができる。本開示の一部の実施形態と一致する原理は、ハードウェアレベルでセキュリティを必要としうる任意のシステムに適用されてもよい。これを達成するため、セキュリティは、オペレーティングシステムから抽象化され、ハードウェアレベルで適用される。
【００４６】
現在のＣＰＵ内部のセキュリティモデルは、レベル０−カーネルスペース、レベル１−デバイスドライバ、レベル２−デバイスドライバ、レベル３−ユーザスペース、という４つのセキュリティのレベルを提供する。これらの４つのセキュリティのレベルは、仮想ユーザスペースおよびデバイスドライバにわたりデータおよびメモリアクセスセキュリティを提供することができる能力を、（カーネルスペースの）オペレーティングシステムにもたらす。ハードウェアレベルでユーザスペースのプロセスレベルセキュリティを提供するために、追加の対策が講じられてもよい。本開示は、業界内で現在使用されている定評ある「セグメンテーション（ｓｅｇｍｅｎｔａｔｉｏｎ）」技法とは異なる。セグメンテーションは、レベル０のカーネルスペースドライバが、保護されたメモリブロックにアクセスすることを妨げない。本開示内の概念は、「セグメンテーション」とは異なり、カーネルレベルのプロセスであっても保護されたメモリブロックにアクセスすることができないように、ハードウェアレベルでメモリを安全にする技法を特定する。
【００４７】
本開示の一部の実施形態によるモデルは、データセキュリティを提供する。代替的な実施形態は、上記で説明される高性能コンテキスト切り替え（ＨＰＣＳ：Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｎｔｅｘｔ  Ｓｗｉｔｃｈ）またはコンテキストコントローラを使用することができ、ユーザスペースのプロセスレベルにおいてセキュリティに対処する。オペレーティングシステムがスレッドコンテキストを構築する場合、プロセスコンテキスト内に格納されるプロセスにデータアクセスマスクを提供することができる。１つの実施形態によれば、これはＨＰＣＳによって管理されてもよい。
【００４８】
図３は、本開示の一部の実施形態の原理と一致するコンポーネントの例示的な構成を示す図である。図３はＣＰＵ３０２を含む。ＣＰＵ３０２が従来のＣＰＵとして実装されうることを理解されたい。あるいは、ＣＰＵ３０２は、図１のコンテキストにおいて説明されるように、コンテキストコントローラ１０２を備えて実装されてもよい。ＣＰＵ３０２は、レジスタ３０４を含むことができる。ＣＰＵ３０２は、メモリ３０８にアクセスするために、メモリコントローラ３０６に通信可能にリンクされる。メモリ３０８は、メモリブロック３１０を含む。このアーキテクチャは、現在の最新の定評あるＣＰＵにおけるＬ３レベルのキャッシングの現行アーキテクチャと類似しているが、顕著に異なっている。
【００４９】
メモリブロック３１０は、セキュリティビットの数がプロセスレベルまで拡張されるように構成されてもよい。ＣＰＵコアは、実行中のプロセスを認識することができ、ユーザプロセスが安全であるかどうかを定義することができる。
【００５０】
ＣＰＵ３０２は、コンテキストのプロセスＩＤを含むレジスタ３０４を含むことができる。メモリブロックは、セキュリティビット、すなわちマスク、およびプロセスＩＤを含むタグを有することができる。メモリブロックを読み取る場合、タグに含まれるセキュリティビットおよび／またはプロセスＩＤは、プロセスＩＤが一致するかどうかに基づいてデータが返されうるかどうかを決定するために比較されてもよい。ＣＰＵは、内部実行コンテキストおよびメモリアクセス論理を含むことができ、簡単なビット比較を行なってメモリから取り出されたデータを使用可能にする。プロセスのマッピングをもたらす６４ビットレジスタが実装されてもよく、仮想メモリ領域上の６４ビットレジスタが、ＣＰＵが仮想メモリスペースと実際のプロセスコンテキストとを比較することができるように実装されてもよい。
【００５１】
図４は、本開示の一部の実施形態による、メモリブロックにタグ付けするための方法を示す例示的な流れ図である。オペレーティングシステムがメモリブロックをプロセスに割り振る場合、オペレーティングシステムはメモリブロックを選択して識別する（ブロック４０２）。オペレーティングシステムは、たとえば、ＳＳＨＡ、ＲＳＡ、ＣＲＹＰＴなどのような、生成されたセキュアキー、パスワードなど、データアクセスマスクを生成することができる（ブロック４０４）。オペレーティングシステムは、プロセスＩＤおよびマスクでメモリブロックにタグ付けすることができる（ブロック４０６）。プロセスＩＤおよびマスクを含むタグは、ＣＰＵの仮想メモリマップテーブルによって保持される。プロセスが実行する場合、そのプロセスマスクも生成することができる。ＣＰＵが仮想メモリマップページ（Ｖｉｒｔｕａｌ  Ｍｅｍｏｒｙ  Ｍａｐ  Ｐａｇｅ）をロードして、ページ読み取りを開始すると、メモリが安定し読み取りの準備ができたことを指示するＣＰＵからのＡＬＥ（Ａｄｄｒｅｓｓ  Ｌａｔｃｈ  Ｅｎａｂｌｅ）信号が、プロセスＩＤコンテキストのＡＮＤマスクおよびメモリページコンテキストセキュリティマスクを通過することができ、マスクが一致しない場合に読み取りサイクル全体を通してロウ状態（low）を保持することができる。
【００５２】
メモリ読み取り命令によって返されたメモリ値は、マスクが一致しない場合、すべて０（ゼロ）、またはすべて１であってもよい。このようにマスクを構成することにより、メモリは読み取りプロセスから秘匿される。
【００５３】
マスク値が一致する場合、ＡＬＥ信号は、通常のラッチメモリとして動作することができ、メモリを要求プロセスとの間で転送することができる。
【００５４】
したがって、メモリ移動命令は、プロセスコンテキストの要求に応じて実行される。コンテキストは、セキュリティマスク（複数可）でダイ上にＨＰＣＳにより格納されてもよい。セキュリティマスクは、ＡＬＥ信号がアクティブ化されるべきかどうかを決定するために仮想メモリブロックを読み取る場合、ＣＰＵによって使用される。
【００５５】
ハードウェアレベルにおいて、メモリマップは、２ビットを使用するセキュリティ規則のセット（すなわち、４レベル）で定義される。これらの規則は、すべての仮想メモリブロックに情報として配置され、メモリにアクセスすることができるプロセスを識別する。
【００５６】
ＯＳは、ＯＳ自体のプロセスＩＤを作成する。多くの場合、ＯＳは、スレッドＩＤを作成する。メモリマップを作成し、プロセスおよび実行コンテキストを定義する場合、メモリマッピングストアおよび一致するプロセス実行コンテキストに数値が提供され、ＣＰＵ内の回路は一致を認識し、アクセスを有効にする。
【００５７】
プロセスＩＤの作成において、メモリＩ／Ｏコントローラ（メモリコントローラ）は、１つのブロックから別のブロックへとメモリを移動させることができる。メモリコントローラは、たとえば、主メモリからＣＰＵへ、またはメモリからメモリへ、いつメモリの移動を実行しているかを認識することができ、１つのブロックから別のブロックへのメモリの移動が同じである必要があることを認識することができる。メモリコントローラは、「異動元（ｆｒｏｍ）」および「異動先（ｔｏ）」の場所が、同じプロセスＩＤ内、または同じセキュリティ内であるかを認識することができる。メモリコントローラがメモリ移動命令を実行中にメモリアドレススペースがプロセスＩＤ情報を含むように、メモリコントローラは、実際の命令を実行している場合、仮想メモリマップストアにアクセスすることができる。プロセスＩＤ情報は、たとえばメモリマップなどの専用キャッシュ領域によって提供される。主メモリからＣＰＵにメモリアクセスを行なう場合、メモリコントローラは、データをＣＰＵコントローラに戻すか、またはＣＰＵの実行中コンテキストに基づいて戻さない。パフォーマンスを高めるため、メモリコントローラがＣＰＵダイおよびＨＰＣＳ回路と共に同一物理ＣＰＵに常駐することが可能であってもよい。
【００５８】
したがって、明確に定義されたプロセスコンテキスト定義メモリブロックを含むキャッシュ領域（図示せず）が提供される。仮想メモリマップは、明確に定義される。メモリコントローラは、「保護されたメモリ内の『異動先』および『異動元』であるか」を決定するためだけではなく、プロセスが一致するかどうか確認する６４ビットにビットを拡張するためにも、仮想メモリ内のデータを使用することができる。
【００５９】
移動がメモリからメモリである場合、仮想メモリマップに基づいて、「異動先」および「異動元」アドレスが同一セキュリティコンテキストであると決定される。移動がメモリからＣＰＵである場合、ＣＰＵは、実行中のコンテキストが何であるか、および実行中のコンテキストがデータへのアクセスを許可されるかどうかを認識することができる。
【００６０】
本明細書において説明するセキュリティコンテキストは、オペレーティングシステムがコンテキスト切り替えを制御している構成において実装することができることが理解されよう。本明細書において説明するセキュリティコンテキストは、コンテキストコントローラ１０４がコンテキスト切り替えを制御している構成において実装することができることがさらに理解されよう。
【００６１】
メモリブロックは、マッピングテーブル（割り振りテーブル）がＣＰＵに使用可能にされ、割り振りテーブルがプロセスＩＤおよびメモリマスクの両方を含むように、オペレーティングシステムによって割り振られる。これらのメモリ割り振りテーブルは、場合によっては、仮想メモリマップと呼ばれ、現在の最新のＣＰＵに存在するものと同じ構造である。本明細書において説明するセキュリティコンテキストは、ハードウェアレベルでセキュリティを提供するために必要なＣＰＵ情報をＣＰＵおよびメモリコントローラに与える、プロセスＩＤおよび割り振りテーブルエントリを、十分にフォーマットするメカニズムを説明するものである。通常のマッピングエントリは、多少以下に示すものに似ている。
【表１】
0005636109.tif 000002
上記のメモリ割り振りテーブルは、テーブルの２つのエントリ（割り振りハンドルおよび物理メモリアドレス）の代わりに、仮想メモリ割り振りマップがプロセスおよびアクセスマスクを含む４つのエントリを含むことを除いては、現代のＣＰＵに使用される現在のメモリ割り振りテーブルおよび仮想メモリマップテーブルと同一である。プロセスＩＤについては、前処理オペレーティングシステム要件の項においてさらに説明する。
【００６２】
トランザクションメモリ
（コンピューティングクラウドのような）共有環境に、並行プロセスおよび仮想マシンがますます作成されるようになり、メモリ共有の課題が懸念事項となり始めている。
【００６３】
「トランザクション」は、１つのプロセスがデータを、他のプロセスがそのデータの以前のバージョンから読み取る間に、更新および変更することができるイベントであってもよい。１つのプロセスがその変更をコミットまたは保存すると、新しいデータはその他のプロセスで使用可能になる。
【００６４】
「トランザクション」のもう１つの態様は、１つのプロセスがその変更を破棄して、そのデータの以前のバージョンに戻ることができることである。
【００６５】
オペレーティングシステムによるトランザクション処理を構築する以前の試みは、メモリ管理があまりに時間を要するようになり、このレベルでは実際的ではないため、実施の課題をもたらした。しかし、本開示の一部の実施形態の原理によれば、マルチコアおよびマルチプロセス環境内の高性能トランザクション処理を可能にするためにブリッジが提供される。説明するシステムは、同機種および異機種コア技術を含むマルチコア、多数コア、マルチダイＣＰＵ技術のコンピューティング業界からの技術を増強する。
【００６６】
図５は、本開示の一部の実施形態の原理と一致するハードウェア構成を示す例示的なブロック図である。図５に示されるように、ハードウェア構成は、ＣＰＵコア５０２、メモリバスコントローラ５０４、主コア５０６、およびトランザクションコア５０８を含む。
【００６７】
システムは、仮想メモリマップのＣＰＵプロセスコンテキスト増強、メモリトランザクションを可能にするメモリバス、並列またはデュアルプレーンのメモリアーキテクチャ、およびトランザクションメモリセットアップおよびコミットを実行するためのオペレーティングシステムを提供する。
【００６８】
（コンピューティングクラウドのような）共有コンピューティングサービスに関する主要な課題は、複数ソースによるメモリアクセスの可能性の導入である。メモリアクセスの変更は通常、読み取りプログラムが、読み取りを行う前に更新が完了するまで待機するように、読み取りプログラムを「ブロック」する。
【００６９】
トランザクションプロセスにより、読み取りプログラムはブロックされることなく続行することができる。これにより、並列プロセスのより高い処理スループットが可能になる。
【００７０】
本開示の一部の実施形態によれば、システムは、前述のようなＨＰＣＳまたはコンテキストコントローラを含むことができ、ＣＰＵコア内でコンテキストを実行するためのプロセスＩＤ情報を保持することができる。「プロセス」はトランザクション処理され、「プロセスＩＤ」内でアクセスされるすべてのメモリはトランザクション処理される。
【００７１】
さらに多くの開発者が「スレッディング（ｔｈｒｅａｄｉｎｇ）」およびマルチプロセスアプリケーションに慣れるようになるにつれ、開発者はオペレーティングシステムに「トランザクション処理済み」プロセスＩＤを要求することがある。
【００７２】
前処理オペレーティングシステム要件
トランザクション処理済みメモリを必要とする各プロセスは、オペレーティングシステムによる「トランザクション処理済み」プロセスＩＤの作成を要求する。
【００７３】
オペレーティングシステムは、使用可能にされたメモリアクセス（トランザクションまたはセキュリティ）のために、使用可能にされた属性フラグを持つプロセスＩＤを生成することができる。プロセスＩＤは、０ｘ２００１  ００００  ００００  １２３４のような６４ビット値であってもよい。
【００７４】
ＣＰＵセキュリティおよびトランザクションフラグは、最下位ニブルで保持されてもよい。残りのプロセスＩＤは、オペレーティングシステムおよび仮想マシンのためのもので、ＯｘＴＶＶＶ  ＸＸＸＸ  ＸＸＸＸ  ＳＳＳＳのようなものであり、Ｔ＝「トランザクション／セキュリティフラグ」、Ｖ＝「仮想マシン識別子」、Ｘ＝「オペレーティングシステムおよびユーザプロセスＩＤ」、Ｓ＝「オペレーティングシステムおよびユーザプロセススレッドＩＤ」である。
【００７５】
オペレーティングシステムがスレッドコンテキストを構築する場合、プロセスコンテキストで格納されうるプロセスにデータアクセスマスクを提供することができる。これは、ＨＰＣＳによって管理されてもよい。セキュリティビットおよびアクセスマスクに関するセキュリティのセクションを参照されたい。
【００７６】
加えて、オペレーティングシステムによって保持される仮想メモリマップ連想配列は、メモリブロックを割り振りしたプロセスＩＤを含む追加の連想配列を有することができる。
【００７７】
ＣＰＵが「ページフォールト（ｐａｇｅ  ｆａｕｌｔ）」を発行し、メモリブロックマップをＣＰＵの仮想から物理メモリマップにスワップインする必要がある場合、プロセスＩＤは、仮想メモリマッピングのためにＣＰＵコンテキストレジスタに挿入されたメモリ割り振りブロック内の情報の一部であってもよい。
【００７８】
連想配列は、たとえば以下のように実施されてもよい（アドレスは例示的なものに過ぎない）。
【表２】
0005636109.tif 000003
【００７９】
これらの仮想／物理メモリマップは通常、オペレーティングシステムおよびＣＰＵコンテキストマップ内にｎ−ｗａｙ連想配列（通常は４−ｗａｙ）で保持される。
【００８０】
本明細書において説明するメモリマップは、仮想メモリブロックを割り振りしたプロセスＩＤを含む。プロセスＩＤは、上位ニブルの例を示し、その上位ニブルは以下のようなものである。
０ｘ０  Ｎｏ  ｓｅｃｕｒｉｔｙ（セキュリティなし）
０ｘ１  セキュリティ  −  このプロセスＩＤによるアクセスのみ
０ｘ２  トランザクション処理済み  −  プロセスＩＤはトランザクション処理されている
０ｘ３  安全／トランザクション処理済み  −  プロセスＩＤは安全でありトランザクション処理されている
【００８１】
オペレーティングシステムが適正なプロセスＩＤおよび仮想メモリ割り振りマップを作成すると、トランザクションコアは使用可能にされてもよい。
【００８２】
本開示の一部の実施形態と一致する特徴は、４つのコンピューティングアーキテクチャ構成を提供する。
【００８３】
トランザクションコア。トランザクションプロセスと共に使用するための冗長メモリコア。このコアは、主メモリ内のすべてのメモリの複製である。
【００８４】
ＣＰＵチップセットは、２つのメモリバスに同時に書き込みを行なうことができる。
【００８５】
メモリアクセス。各メモリブロックは、ページブロックアクセスレベルを読み取り／書き込み、読み取り専用、またはトランザクション処理済みとして識別するプロセッサのメモリページ連想配列キャッシュ内でフラグを立てられてもよい。
【００８６】
トランザクション保存／コミット／ロールバック。各プロセスが完了するか、またはトランザクションが完了すると、ＣＰＵはトランザクションコアと主メモリ間でメモリページを「コピー」するよう指示されてもよい。
【００８７】
トランザクションコア
本開示の一部の実施形態と一致する原理によれば、主メモリコアと並行して実行することができる「トランザクションコア」と呼ばれる冗長メモリコアが提供される。これは、条件付きで２つのメモリコアに同時にアクセスするための、メモリバスおよびメモリアクセスチップセットの単純な構造である。これらのメモリコアは、完全に同一の線形アドレススペースを共有して、同時書き込みを可能にする。本開示の一部の実施形態の原理と一致する一部の実施形態によれば、管理責任は、オペレーティングシステムから、たとえばコンテキストコントローラのようなＣＰＵコアに移されてもよい。
【００８８】
このコア構成は、ＡＬＥ（ａｄｄｒｅｓｓ  ｌａｔｃｈ  ｅｎａｂｌｅ）が整定されるとバスコントローラに影響を与えるチップセット上でトライステートアクセスワイヤ（ｔｒｉ−ｓｔａｔｅ  ａｃｃｅｓｓ  ｗｉｒｅ）でバスを制御することができることを示す。状態は、以下のようであってもよい。
【００８９】
Ｏｆｆ（オフ）（トライステート）  −  アクセス切り替えはハイまたはロウのいずれでもない。これは、アクセスサイクル中にデータが転送されないことを意味する。
【００９０】
Ｈｉｇｈ（ハイ）  −  アクセス切り替えがオフである。書き込みサイクル中は、いずれのコアバスもアクティブであり、両方のコアに書き込みを行なうことができる。読み取りサイクル中は、主コアのみがアクティブである。
【００９１】
Ｌｏｗ（ロウ）  −  アクセス切り替えがオンである。書き込みおよび読み取りサイクル中は、トランザクションコアのみがアクティブである。
【００９２】
この処理が、オペレーティングシステムおよびＣＰＵに完全に透過的であることが理解されるであろう。したがって、複製メモリを提供するこのプロセスは、プロセススループットの影響を及ぼさない。
【００９３】
メモリへの書き込みおよびメモリからの読み取り
プロセスＩＤによる読み取り／書き込みサイクル中、ＣＰＵは、オペレーティングシステムによって提供された仮想メモリマップを使用して物理メモリスペースにアクセスすることができる。
【００９４】
書き込みプロセスは、ＣＰＵがトライステートアクセス切り替え（Ｔｒｉ−Ｓｔａｔｅ  Ａｃｃｅｓｓ  Ｓｗｉｔｃｈ）を適切にアクティブ化することを必要とする。ＣＰＵは、実行中コンテキストのプロセスＩＤと仮想メモリマップのプロセスＩＤとを比較することによりアクティブ化を行なうことができ、これはトライステートフラグを適切に設定することができる。
【００９５】
最初に、ＣＰＵは、コンテキストプロセスＩＤと仮想メモリマップを比較することができ、これはＣＰＵレジスタがプロセスコンテキストおよび仮想メモリマップをロードすることにより自動的に行なわれてもよい。これはＣＰＵレジスタの機能であり、条件を実行するために命令は必要ない。
【００９６】
コンテキストプロセスＩＤをＡ、および仮想メモリプロセスＩＤをＢと仮定する。
【００９７】
ビットは数値０から６３である。ビット６０はセキュリティビットである。ビット６１はトランザクションビットである。
【００９８】
ＣＰＵレジスタは、ＡとＢを比較する（下位６０ビット、ビット０から５９）。Ａ＝Ｂの信号が結果として生じる。
【００９９】
結果として得られたアクセスフラグは、図６に示される論理回路によって示される。
【０１００】
トランザクションフラグ（ビット６１）は、トランザクションコアまたは主コアメモリフラグをオンにする。セキュリティフラグ（ビット６０）は、プロセスＩＤにアクセスが許可されるかどうかを決定するトライステートバッファを使用可能にする。
【０１０１】
セキュリティフラグは複雑である。トランザクションにおいて、アクセスしているプロセスがプロセスＢではなく、読み取りプロセスがプロセスＢのメモリブロックで生じる場合、プロセスは主メモリからこれを行なうことができ、アクセスしているプロセスが書き込みを行なおうとする場合、ロウであるアクセスフラグによって指示されるように書き込みは両方のメモリプレーンに書き込みを行なおうとするので、プロセスは書き込みをブロックされうる。
【０１０２】
セキュリティ規則は以下のとおりである。
Ａ＝Ｂである場合、アクセスフラグは使用可能であり（０または１）、または
ビット６０がオフである場合、アクセスフラグは使用可能であり（０または１）、または
ビット６０がオフであり、かつビット６１がオンであり（これはトランザクションである）、かつこれが書き込みサイクルではなく、かつＡ＜＞Ｂである場合、アクセスフラグは使用可能である（０または１）
【０１０３】
アクセスフラグは、以下のように処理される。
ビット６１がオンであり、かつＡ＝Ｂである場合、０にセットされて、読み取り／書き込みはトランザクションコアから行なわれる
ビット６１がオンであり、かつＡ＜＞Ｂである場合、１にセットされて、読み取りは主コアから行なわれ、書き込みは両方のコアで行なわれる
トライステート（セキュリティフラグに基づく）の場合、メモリはメモリコントローラによりメモリバスに沿って渡されることはない。このセキュリティ規則は、図６の論理図により示される。
【０１０４】
トランザクションにおいて、プロセスＡ（Ｂと等しくない場合）は、プロセスＢのトランザクション処理されたメモリに書き込みすることを許可されない。したがって、アクセスフラグはオフにされ、メモリバスコントローラは書き込みを行なうことができない。
【０１０５】
読み取りについては、アクセスフラグがトライステートである場合、メモリコントローラによって返されたメモリ値は、すべて０（ゼロ）、またはすべて１、またはトライステートであってもよく、読み取りの成功を妨げる。
【０１０６】
コンテキストトランザクション保存／コミット／ロールバック
プロセス実行中、メモリ変更は、仮想メモリマッププロセスＩＤでビット６１がオンである場合に、トランザクションメモリにおいてのみ行なわれる。
【０１０７】
プロセスがオペレーティングシステムによって終了されると（またはプロセス自身によっていつでも）、オペレーティングシステムはＰｒｏｃｅｓｓ  Ｃｏｎｔｅｘｔ  Ｃｏｍｍｉｔ（プロセスコンテキストコミット）命令をＣＰＵにサブミットすることができる。
【０１０８】
ＣＰＵは、Ｐｒｏｃｅｓｓ  Ｃｏｎｔｅｘｔ  Ｃｏｍｍｉｔ命令を受けて、仮想メモリブロック／物理メモリブロック情報をメモリコントローラに出力することができる。
【０１０９】
メモリコントローラは、トランザクションコアからメモリブロックを主メモリコアに（または、主メモリコアからのロールバックの場合はトランザクションコアに）直接コピーすることができる。このコピーは、メモリバスコントローラによって管理されるＤＭＡコントローラ（または並列バスコントローラ）を通じてＣＰＵの外部で行なわれるべきである。
【０１１０】
コピーの方向は、極めて重要である。メモリバスへの「保存」コピー命令、および逆方向のコピーの「ロールバック」命令のための１つの命令があってもよい。これにより、トランザクションは、すべての変更を破棄して、メモリブロックの以前のコピーに「ロールバック」することができる。
【０１１１】
この解決策において、コミット（Ｃｏｍｍｉｔ）は単一の命令であり、すべてのメモリ移動はハードウェアで生じる。
【０１１２】
コアの使用
アプリケーションプロセスによりトランザクションを実行するためのプロセスは、単純であってもよい。説明されるアーキテクチャを使用してトランザクションを実行するステップは、以下のとおりである。
【０１１３】
オペレーティングシステムは、トランザクションフラグを持つプロセスＩＤを生成する。オペレーティングシステムは、スレッドのプロセスコンテキストを作成する。プロセスコンテキストは、スレッド実行のためにＣＰＵに転送され、仮想メモリマップは（現在のアーキテクチャにおけるマップおよびコンテキストのとおりに）アクティブ化にスワップされる。メモリへのアプリケーションまたはスレッド読み取り／書き込みは、通常通りに行なわれる。各メモリブロック割り振りは、オペレーティングシステムによって保持される仮想メモリマップのプロセスＩＤに関連付けられる。アプリケーションまたはスレッドが終了する。オペレーティングシステムは、コンテキストを除去するためにＰｒｏｃｅｓｓ  Ｔｅｒｍｉｎａｔｉｏｎ（プロセス終了）をＣＰＵに発行し、プロセスＩＤのトランザクションコミット命令（またはトランザクションロールバック命令）を発行するが、これはトランザクションメモリコアと主メモリコア間でプロセスＩＤの各仮想メモリブロックコピーするようメモリバスに指示させるＣＰＵへの命令である。オペレーティングシステムは、その他のプロセスのためにプロセスＩＤの仮想／物理メモリブロックを解放する。
【０１１４】
プロセス内で割り振られるメモリブロックが同一のトランザクションの一部であることに留意されたい。プロセスが完了した場合に限り、メモリが主コアにコピーされる。トランザクションは、プロセス／スレッド実行の存続期間である。
【０１１５】
本明細書において説明される方法、装置、構成、アーキテクチャなどが、さまざまな業界に適用されうることが理解されよう。たとえば、１）映画業界。共有システムでのマルチプロセスフィルムレンダリングにおけるアニメーションレンダリング、２）ゲーム業界。共有システムでのリアルタイム並列マルチプロセッシングシーンレンダリング、３）教育／研究。共有システムでのリアルタイム並列マルチ方程式プロセッシング。４）金融。共有システムでのリアルタイム市場予測および統計処理。５）科学。共有システムでの並列データ処理。６）コンピューティング。仮想化ハイパーバイザーは、使用可能なＣＰＵを追跡する必要はなくなり、仮想サーバプロセス優先順位付けキューなどを提供するだけでよい。
【０１１６】
システムの側面でのハードウェアの実装形態とソフトウェアの実装形態との間には、ほとんど相違が残されていない。ハードウェアまたはソフトウェアの使用は、一般に（いつもそうではないが、ある状況ではハードウェアとソフトウェアの間の選択が重要になりうるという点で）コスト対効果のトレードオフを表す設計上の選択である。本明細書に記載された、プロセスおよび／またはシステムおよび／または他の技術をもたらすことができるさまざまな達成手段があり（たとえば、ハードウェア、ソフトウェア、および／またはファームウェア）、好ましい達成手段は、プロセスおよび／またはシステムおよび／または他の技術が導入される状況によって異なりうる。たとえば、実装者が速度と正確性が最も重要であると決定すると、実装者は主にハードウェアおよび／またはファームウェアの達成手段を選択することができる。フレキシビリティが最も重要なら、実装者は主にソフトウェアの実装形態を選択することができる。または、さらに別の代替案として、実装者は、ハードウェア、ソフトウェア、および／またはファームウェアのなんらかの組み合わせを選択することができる。
【０１１７】
前述の詳細な説明では、ブロック図、フローチャート、および／または例の使用によって、装置および／またはプロセスのさまざまな実施形態を説明してきた。そのようなブロック図、フローチャート、および／または例が１つまたは複数の機能および／または動作を含む限りにおいて、そのようなブロック図、フローチャート、または例の中のそれぞれの機能および／または動作は、広範囲のハードウェア、ソフトウェア、ファームウェア、または実質上それらのすべての組み合わせにより、個別におよび／または集合的に実装可能であることが、当業者には理解されるであろう。ある実施形態では、本明細書に記載された主題のいくつかの部分は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタルシグナルプロセッサ（ＤＳＰ）、または他の集積化方式によって実装することができる。しかし、本明細書で開示された実施形態のいくつかの態様が、全体においてまたは一部において、１つまたは複数のコンピュータ上で動作する１つまたは複数のコンピュータプログラムとして（たとえば、１つまたは複数のコンピュータシステム上で動作する１つまたは複数のプログラムとして）、１つまたは複数のプロセッサ上で動作する１つまたは複数のプログラムとして（たとえば、１つまたは複数のマイクロプロセッサ上で動作する１つまたは複数のプログラムとして）、ファームウェアとして、あるいは実質上それらの任意の組み合わせとして、等価に集積回路に実装することができることを、当業者は認識するであろうし、電気回路の設計ならびに／またはソフトウェアおよび／もしくはファームウェアのコーディングが、本開示に照らして十分当業者の技能の範囲内であることを、当業者は認識するであろう。さらに、本明細書に記載された主題のメカニズムをさまざまな形式のプログラム製品として配布することができることを、当業者は理解するであろうし、本明細書に記載された主題の例示的な実施形態が、実際に配布を実行するために使用される信号伝達媒体の特定のタイプにかかわらず適用されることを、当業者は理解するであろう。信号伝達媒体の例には、フロッピー（登録商標）ディスク、ハードディスクドライブ、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）、デジタルテープ、コンピュータメモリ、などの記録可能なタイプの媒体、ならびに、デジタル通信媒体および／またはアナログ通信媒体（たとえば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど）の通信タイプの媒体が含まれるが、それらには限定されない。
【０１１８】
本明細書で説明したやり方で装置および／またはプロセスを記載し、その後そのように記載された装置および／またはプロセスを、データ処理システムに統合するためにエンジニアリング方式を使用することは、当技術分野で一般的であることを当業者は認識するであろう。すなわち、本明細書に記載された装置および／またはプロセスの少なくとも一部を、妥当な数の実験によってデータ処理システムに統合することができる。通常のデータ処理システムは、一般に、システムユニットハウジング、ビデオディスプレイ装置、揮発性メモリおよび不揮発性メモリなどのメモリ、マイクロプロセッサおよびデジタル信号プロセッサなどのプロセッサ、オペレーティングシステムなどの計算実体、ドライバ、グラフィカルユーザインタフェース、およびアプリケーションプログラムのうちの１つもしくは複数、タッチパッドもしくはスクリーンなどの１つもしくは複数の相互作用装置、ならびに／またはフィードバックループおよびコントロールモータを含むコントロールシステム（たとえば、位置検知用および／もしくは速度検知用フィードバック、コンポーネントの移動用および／もしくは数量の調整用コントロールモータ）を含むことを、当業者は理解するであろう。通常のデータ処理システムは、データコンピューティング／通信システムおよび／またはネットワークコンピューティング／通信システムの中に通常見られるコンポーネントなどの、市販の適切なコンポーネントを利用して実装することができる。
【０１１９】
本明細書に記載された主題は、さまざまなコンポーネントをしばしば例示しており、これらのコンポーネントは、他のさまざまなコンポーネントに包含されるか、または他のさまざまなコンポーネントに接続される。そのように図示されたアーキテクチャは、単に例に過ぎず、実際には、同じ機能を実現する多くの他のアーキテクチャが実装可能であることが理解されよう。概念的な意味で、同じ機能を実現するコンポーネントの任意の構成は、所望の機能が実現されるように効果的に「関連付け」される。したがって、特定の機能を実現するために組み合わされた、本明細書における任意の２つのコンポーネントは、アーキテクチャまたは中間のコンポーネントにかかわらず、所望の機能が実現されるように、お互いに「関連付け」されていると見ることができる。同様に、そのように関連付けされた任意の２つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に接続」または「動作可能に結合」されていると見なすこともでき、そのように関連付け可能な任意の２つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に結合できる」と見なすこともできる。動作可能に結合できる場合の具体例には、物理的にかみ合わせ可能な、および／もしくは物理的に相互作用するコンポーネント、ならびに／またはワイヤレスに相互作用可能な、および／もしくはワイヤレスに相互作用するコンポーネント、ならびに／または論理的に相互作用する、および／もしくは論理的に相互作用可能なコンポーネントが含まれるが、それらに限定されない。
【０１２０】
本明細書における実質的にすべての複数形および／または単数形の用語の使用に対して、当業者は、状況および／または用途に適切なように、複数形から単数形に、および／または単数形から複数形に変換することができる。さまざまな単数形／複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
【０１２１】
通常、本明細書において、特に添付の特許請求の範囲（たとえば、添付の特許請求の範囲の本体部）において使用される用語は、全体を通じて「オープンな（ｏｐｅｎ）」用語として意図されていることが、当業者には理解されよう（たとえば、用語「含む（ｉｎｃｌｕｄｉｎｇ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｉｎｇ  ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきであり、用語「有する（ｈａｖｉｎｇ）」は、「少なくとも有する（ｈａｖｉｎｇ  ａｔ  ｌｅａｓｔ）」と解釈されるべきであり、用語「含む（ｉｎｃｌｕｄｅｓ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｅｓ  ｂｕｔ  ｉｓ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきである、など）。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。たとえば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも１つの（ａｔ  ｌｅａｓｔ  ｏｎｅ）」および「１つまたは複数の（ｏｎｅ  ｏｒ  ｍｏｒｅ）」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「１つまたは複数の」または「少なくとも１つの」および「ａ」または「ａｎ」などの不定冠詞を含む場合であっても、不定冠詞「ａ」または「ａｎ」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に１つのそのような記載を含む開示に限定する、ということを示唆していると解釈されるべきではない（たとえば、「ａ」および／または「ａｎ」は、通常、「少なくとも１つの」または「１つまたは複数の」を意味すると解釈されるべきである）。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、通常、少なくとも記載された数を意味すると解釈されるべきであることが、当業者には理解されよう（たとえば、他の修飾語なしでの「２つの記載（ｔｗｏ  ｒｅｃｉｔａｔｉｏｎｓ）」の単なる記載は、通常、少なくとも２つの記載、または２つ以上の記載を意味する）。「Ａ、ＢまたはＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（たとえば、「Ａ、Ｂ、またはＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステムを含むが、それに限定されない）。２つ以上の代替用語を提示する事実上いかなる離接する語および／または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方（ｏｎｅ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、当該用語のいずれか（ｅｉｔｈｅｒ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、または両方の用語（ｂｏｔｈ  ｔｅｒｍｓ）を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。たとえば��句「ＡまたはＢ」は、「Ａ」または「Ｂ」あるいは「ＡおよびＢ」の可能性を含むことが理解されよう。
【０１２２】
本明細書においてさまざまな態様および実施形態が開示されたが、その他の態様および実施形態は当業者には明らかとなろう。本明細書において開示されるさまざまな態様および実施形態は、説明のためのものであって、限定的であることを意図しておらず、真の範囲および精神は後段の特許請求の範囲により示される。
【図１】
0005636109.tif 000004
【図２】
0005636109.tif 000005
【図３】
0005636109.tif 000006
【図４】
0005636109.tif 000007
【図５】
0005636109.tif 000008
【図６】
0005636109.tif 000009