JP5636109B2 - コンテキスト切り替え - Google Patents

コンテキスト切り替え Download PDF

Info

Publication number
JP5636109B2
JP5636109B2 JP2013525867A JP2013525867A JP5636109B2 JP 5636109 B2 JP5636109 B2 JP 5636109B2 JP 2013525867 A JP2013525867 A JP 2013525867A JP 2013525867 A JP2013525867 A JP 2013525867A JP 5636109 B2 JP5636109 B2 JP 5636109B2
Authority
JP
Japan
Prior art keywords
context
memory
single die
access
cpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013525867A
Other languages
English (en)
Other versions
JP2013536524A (ja
Inventor
バルウィック,ジェームズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Empire Technology Development LLC
Original Assignee
Empire Technology Development LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Empire Technology Development LLC filed Critical Empire Technology Development LLC
Publication of JP2013536524A publication Critical patent/JP2013536524A/ja
Application granted granted Critical
Publication of JP5636109B2 publication Critical patent/JP5636109B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Description

中央演算処理装置(CPU:central processing unit)のクロック制御の可能な高速化には限界があり、回路およびトランジスタの可能な小型化および高速化には限界があるので、業界では、コンピューティングプラットフォームのパフォーマンスを高めるためにプロセス最適化および並列コンピューティングに頼ってきた。このことは、マルチコアおよび多数コアプロセッサの概念をもたらした。
同機種および異機種モデルのいずれにもマルチコアプロセッサが開発されている。マルチコアおよび多数コアプロセッサの基本的な問題は、オペレーティングシステムのスケーラビリティに関するものである。現在、オペレーティングシステムは、使用可能なCPUコアの数を追跡して、それらの各コア上のプロセスおよびスレッドをスケジュールする必要がある。オペレーティングシステムが、プロセスを実行させる命令をCPUに与える前に、状態を保存して、新しい状態およびコンテキストをCPUにロードすることによって、プロセスをスワップする必要があるので、これはオペレーティングシステムにとって多大な時間を要する操作である。
一部の実施形態において、プロセッサは、複数の命令を実行するように単一ダイ上に構成された複数コアと、複数コアの各々で命令の実行を制御するように単一ダイ上で構成されたコンテキスト切り替えコントローラとを含む。
一部の実施形態において、プロセス切り替えを実行するための方法は、中央演算処理装置で構成されたコンテキストコントローラにおいて実行するプロセスを識別するプロセスIDを含むコマンドを受信することと、中央演算処理装置でメモリ内のプロセスIDに基づいてプロセスにアクセスすることと、アクセスされたプロセスを、中央演算処理装置上の多数のコアのうちの1つで実行するようにスケジュールすることとを含む。
一部の実施形態において、メモリブロックを保護するための方法は、アクセスするメモリブロックを識別することと、メモリブロックのアクセスマスクを生成することと、メモリブロックにプロセス識別情報および生成されたマスクでタグ付けすることとを含む。
一部の実施形態において、マルチコアデバイスを使用してトランザクションの処理を可能にするための装置は、多数のコアを有する中央演算処理装置(CPU)と、プロセッサ側バスを介してCPUに結合されたメモリバスコントローラと、第1のメモリ側バスを介してメモリバスコントローラに結合された主メモリコアと、第2のメモリ側バスを介してメモリバスコントローラに結合されたトランザクションメモリコアとを含み、CPUは、メモリバスコントローラに提供された切り替えの値に基づいて第1および/または第2のメモリ側バスとしてメモリコントローラによって選択されたメモリバスを介してデータのフローを方向付ける。
上記の説明は課題を解決するための手段であるため、必然的に、詳細の簡略化、一般化、および省略を含み、したがって、当業者であれば、課題を解決するための手段が例示に過ぎず、限定的なものであることは意図されていないことを理解するであろう。本明細書において説明されるデバイスおよび/またはプロセスおよび/またはその他の主題のその他の態様、特徴、および利点は、本明細書において示される教示において明らかとなろう。この課題を解決するための手段は、発明を実施するための形態において後段でさらに説明される簡略化された形で一連の概念を紹介するために提供される。この課題を解決するための手段は、請求の範囲に係る主題の主要特徴または重要特徴を特定することを意図しておらず、また請求の範囲に係る主題の範囲を決定する際の補助として使用されることも意図していない。
本開示の前述および他の特徴は、添付の図と併せて、以下の説明および添付の特許請求の範囲を読めばさらに明らかとなろう。それらの図面は本開示によるいくつかの実施形態を示すに過ぎず、したがって、本開示の範囲を限定するものと見なされるべきではないことを理解して、添付の図面を使用することで、本開示がさらに具体的かつ詳細に説明されることになる。
本開示の一部の実施形態による、中央演算処理装置の例示的な構成を示す図である。 本開示の一部の実施形態による、プロセスをスケジュールするための方法を示す例示的な流れ図である。 本開示の一部の実施形態による、CPUおよびメモリの例示的な構成を示す図である。 本開示の一部の実施形態による、メモリブロックにタグ付けするための方法を示す例示的な流れ図である。 本開示の一部の実施形態による、例示的なハードウェア構成を示す図である。 本開示の一部の実施形態による、例示的な論理図を示す図である。
以下の詳細な説明において、本明細書の一部を形成する付属の図面が参照される。図面において、文脈に特に指示がない限り、類似する符号は概して、類似するコンポーネントを識別する。詳細な説明、図面、および特許請求の範囲において説明される例示の実施形態は、限定的であることを意図していない。本明細書において提示される主題の精神および範囲を逸脱することなく、その他の実施形態を使用してもよく、その他の変更を行なってもよい。本明細書において概ね説明され、図面に示される本開示の態様を、多岐にわたるさまざまな構成において配置し、代替し、組み合わせて、設計してもよく、それらすべては明示的に企図され、本開示の一部をなすことは容易に理解されよう。
本開示は、とりわけ、1つのプロセスから別のプロセスに切り替えるために要する時間を除去または短縮することにより並列性を高めるように構成されたプロセス管理コンポーネントに関連する方法、装置、コンピュータプログラム、およびシステムを対象とする。プロセス管理コンポーネントは、コンテキスト切り替えを実行するハードウェアレベルのコンポーネントとして実施されてもよい。コンテキストは、データセグメント、スタックセグメント、拡張セグメント、コードセグメントのCPUレジスタ、直接レジスタ、もしくはCPU内に含まれる任意のその他の関連するCPUレジスタまたはI/Oコントローラ内に含まれるレジスタ(ただし、これらに限定されることはない)を含むプロセスに関連付けられているメモリ状態であってもよい。たとえばコンテキストコントローラのような、ハードウェアコンポーネントは、CPU上で構成されてもよい。CPUは、単一ダイ(またはCPU基板内の複数ダイ)上で構成されてもよい。本開示内において、「ダイ(die)」または「単一ダイ(single die)」という用語は、単一の製造された回路を文字通りに識別することを意図してはいないことに留意されたい。この用語は、1つまたは複数の別個の処理回路またはコアを含むことができるCPUパッケージを広く説明することが意図される。複数処理装置を含むCPUパッケージを同様に広く説明する「基板(substrate)」という用語は、本開示において「ダイ」または「単一ダイ」という用語の代わりに代用してもよく、コンテキストコントローラおよび複数の処理コアを含むことができる。したがって、コンテキストコントローラは、実行すべきコンテキストの状態に関する主メモリに格納されたデータにアクセスしてデータを取り出すために、メモリ帯域幅アクセスを待つ必要はなく、実際のCPUコアが使用可能になるのを待つ必要がない。コンテキストは、コンテキストデータのために主メモリにアクセスする必要なくCPU上でコンテキストコントローラによって実行状態へとスワップする、または実行状態からスワップすることができる。コンテキストコントローラは、CPUダイ上のローカルキャッシュメモリにコンテキスト切り替えを実行するために必要な情報を有する。
本開示は、とりわけ、ハードウェアにプロセスIDの可視性をもたらすための技法を対象とし、メモリブロックは、仮想メモリマップ構造内にプロセスIDを含むタグで構成され、それによりセキュリティのレベルをもたらす。
本開示は、とりわけ、たとえばトランザクションプロセスに障害が生じた場合に冗長メモリを提供するために2つのメモリコアを含む構成を提供することをさらに対象とする。
コアアーキテクチャ
図1は、本開示の一部の実施形態による、CPUおよび主メモリを示す例示的な図である。図1に示されるように、CPU102は、コンテキストコントローラ104、コア0〜8 106、コンテキストキャッシュメモリ/バス108、ならびにL1およびL2キャッシュ110とL3キャッシュ111を含む。コア0〜8のみが示されているが、追加のコアがCPU102において構成されてもよいことは理解できよう。コア0〜8 106は各々、それぞれのL1およびL2キャッシュ110に結合される。L2キャッシュ110は各々、L3キャッシュ111に結合される。L3キャッシュ111は、主メモリ120に通信可能にリンクされる。CPU102は、たとえば単一集積回路のような、単一ダイ上に実装されてもよい。
コア0〜8 106は各々、コンテキストコントローラ104に通信可能にリンクされ、各々はコンテキストコントローラ104の指示により特定の命令セットアーキテクチャに従ってプロセスまたは命令を実行するように独立して構成される。
コンテキストコントローラ104は、CPU102の全体のダイ構造内で構成される。コンテキストコントローラ104は、プロセスコンテキストが実行のためにオペレーティングシステムの指示でローカルキャッシュで使用可能ではなく、主メモリ120が実行中プロセスに関する情報を格納するためのメモリブロックを含む場合、主メモリ120からコンテキスト詳細を、たとえばプルするなど、受信するように構成される。
コンテキストキャッシュメモリ/バス108は、コンテキストコントローラ104が、各コア106と直接相互作用することによりプロセスを各コアの内および外に移動させることができるようにする。キャッシュメモリは、オペレーティングシステムおよび/または仮想マシンによって定義されるプロセス定義を含む、プロセスのコンテキストを格納する。これらのプロセスおよび定義もまた、コンテキストキャッシュ112に格納されてもよい。オペレーティングシステムによって定義されるさらに多くのコンテキストが、ダイ上のコンテキストキャッシュ112に格納されてもよいことが理解されよう。したがって、コンテキスト切り替えは、コンテキストがダイ上で使用可能ではない場合、主メモリへと進む必要がある場合がある。
主メモリ120は、割り込みベクトルテーブル122、その他の割り込み124、不明のコンテキスト126、コンテキストキャッシュ112からのスピルオーバーを含むコンテキスト詳細128、タイマー割り込み130、およびコンテキストキャッシュコピー132を含むことができる。当業者には理解されるように、主メモリは、実行中プロセスの情報を定義するコンテキスト定義マップを格納し、コンテキストスワップが実行されるときにコンテキストコントローラ104によりマップへのアクセスを提供する。
前述のように、キャッシュメモリは、プロセス定義をコアに格納する。キャッシュが満杯である場合、プロセス定義は主メモリに格納される。コンテキスト切り替え中に、コンテキスト切り替えがキャッシュ内にプロセスIDを見つけることができない場合、オペレーティングシステムが主メモリ内のコンテキストマップの場所をコンテキストコントローラに知らせることができるように、不明のコンテキスト割り込み126がオペレーティングシステムに提供される。コンテキストコントローラ104は、コンテキストキャッシュ112内で実行中または実行中ではない定義済みのプロセスに直接アクセスすることができる。コンテキストコントローラ104は、オペレーティングシステムによって定義されているように新しいコンテキストをプルして主メモリと直接相互作用する。コンテキストコントローラは通常、コンテキストがキャッシュ内で定義されていないか、または存在しない場合にオペレーティングシステムが認識するように、「Unknown Context(不明のコンテキスト)」および「Context Stopped(停止コンテキスト)」割り込みを投入することができる。コンテキストは、プロセスID(たとえば、スレッドIDおよび/または仮想マシンIDを含む)によって識別されてもよい。L1、L2、L3キャッシュは通常、たとえば新しいi7プロセッサにおいてIntelのようなCPU製造業者によって設計されているように動作することができる。コンテキスト切り替えは、コンテキストコントローラを介して行なわれ、必要な場合に限って割り込みおよびダイ以外のアクセスが生じる。
図1に示される構成を提供することにより、オペレーティングシステムが、CPU上の各コアを管理する必要はなくなる。したがって、オペレーティングシステムの動作の機能は、プロセスの管理においてさらに簡略化され、必要に応じてハードウェアが縮小できるようになる。
コアアーキテクチャによれば、プロセッサ仮想化は、オペレーティングシステムからCPUコアの数の可視性を除去することによって達成されてもよい。オペレーティングシステムはコンテキストコントローラを認識するだけでよく、それによりオペレーティングシステムを解放してプロセス優先順位付け、プロセスキューイング、およびメモリ管理に集中できるようにする。
コンテキストコントローラは、ダイ上の実行中およびスタンバイプロセスコンテキストをキャッシュに入れ、任意の使用可能なスレッドキューまたはコアでプロセス優先順位キューイングに基づいてプロセスを実行することができる。これにより、プロセスは、オペレーティングシステムがプロセスをタイムスライスする必要なく実行することができる。プロセス実行およびコンテキスト切り替えは、優先順位により自動的に行なわれ、コンテキスト切り替えが認識されるプロセスの、コンテキスト切り替えによって制御される。
次いで、オペレーティングシステムは、実行中プロセスのみを追跡して、優先順位実行コマンドをコンテキストコントローラに発行することができる。コンテキストコントローラは、コンテキストレジスタメモリを、必要に応じて任意の使用可能なコアにスワップすることができる。
プロセス切り替え
現在のプロセスコンテキスト切り替えは、オペレーティングシステムが、CPUレジスタマップおよびn−wayの連想配列の仮想メモリマップのセグメントを含む主メモリにコンテキストブロックをセットアップすることで開始する。
本明細書において説明されるコンテキストコントローラによって実行されるような、HPCS(High Performance Context Switch:高性能コンテキスト切り替え)の手法は、オペレーティングシステムが長い待ち時間の切り替えを実行する必要がないように、ダイ上のキャッシュのプロセスIDによりCPUコンテキストをキャッシュに入れることである。
1. 対称型マルチプロセッシング(SMP:symmetric multi processing)によるプロセス切り替え
リアルタイムクロック割り込みは定期的に生じ(タイムスライスと呼ばれる)、プロセスが実行される必要があるかどうかをオペレーティングシステムが決定することができるように、実行中プロセスからオペレーティングシステムへプロセス実行を切り替える。これは、「プリエンプティブマルチタスキング(pre−emptive multi−tasking)」と呼ばれる。CPUは、割り込みが生じた場合、現在のレジスタセットを主メモリ内の「スタック」に自動的に保存する。
次いで、オペレーティングシステムは、どのコアおよびどのプロセスを次に実行するかを決定することができる。オペレーティングシステムは、コアを見つけ、コアに割り込みを行ない、現在のコアレジスタマップを主メモリにスワップアウトして、新しいレジスタセットを主メモリにセットアップし、「スタック」上に保存されたレジスタを必要に応じて調整し、次いでCPUレジスタを主メモリからCPUスレッドキューに移動して戻すことができるIRET(return from interrupt:割り込みからの戻り)を実行することができる。
リアルタイムクロックは、再度割り込みを行なうことができ、プロセスは繰り返す。
2. 高性能コンテキスト切り替え(HPCS)によるプロセス切り替え
リアルタイムクロック割り込みは、定期的に生じて、実行中プロセスからオペレーティングシステムに実行を切り替える。
図2は、本開示の一部の実施形態による、プロセスをスケジュールするための方法を示す例示的な流れ図である。示される例示的な流れ図は、中央演算処理装置において実行するためのプロセスを受信および割り当てする際にコンテキストコントローラによって実行されてもよい。
オペレーティングシステムは、次のタイムスライスにCPUでどのプロセスIDが実行されうるかを決定することができる。次いで、オペレーティングシステムは、CPUのコンテキストコントローラにSCTX(new CPU instruction:新規CPU命令)を発行して実行すべきプロセスIDを識別することができる。コンテキストコントローラは、コマンドを受信する(ブロック204)。CPUのコンテキストコントローラは、たとえば受信したプロセスIDに基づいて、プロセスがCPUのメモリに格納されているかどうかを決定することにより、コンテキストコントローラがプロセスを認識しているかどうかを決定することができる。プロセスがCPUのキャッシュメモリに格納されている場合、コンテキストコントローラはプロセスにアクセスすることができる(ブロック206)。次いで、コンテキストコントローラは、プロセスIDを、コンテンツのそのキャッシュされたプールからのコンテキスト情報と共に、使用可能なCPUコアにスケジュールするかまたはキューに入れることができる(ブロック208)。
コンテキストコントローラがプロセスを認識していない場合、「Unknown Process Interrupt(不明のプロセス割り込み)」を生成することができ、その場合、実行用のプロセスIDをキャッシュに入れてスケジュールするためにコンテキストを転送するCPUのコンテキストコントローラに対して、コンテキストレジスタセットを含むメモリブロックを単に識別する、従来のコンテキスト切り替えの変更された手法が実行されてもよい。
CPUのコンテキストコントローラは、レジスタセットをダイ上の内部バッファ(図示せず)でキャッシュに入れる。IRETコマンド(return from interrupt:割り込みからの戻り)は、通常のメモリからCPUに「スタック」セットを移動して、「unknown context interrupt:不明のコンテキスト割り込み」を完了する。
コアが「満杯(full)」(それ以上プロセススロットがないことを意味する)である場合、CPUは、SCTXコマンドが実行されたとき、プロセスが停止され、待ちキューに入れられたことをオペレーティングシステムに通知することができる「Process Interrupted(プロセス割り込み)」割り込みを発行することができる。キャッシュが満杯であり、それ以上待ちキュースロットがない場合、「Process Swap Interrupt(プロセススワップ割り込み)」が生じることがあり、オペレーティングシステムは、現在のコンテキストを保存するよう通知されてもよい。これは、ダイからスワップされるべきコンテキストを保存するメモリブロックをCPUのコンテキストコントローラに対して識別することによって行なわれる。
CPUは、割り込みされたプロセスコンテキストを引き続き格納することができる。したがって、プロセスが割り込みされる場合、CPUは「スワップイン/アウト」される必要はない。オペレーティングシステムは、プロセスが「待ち状態(wait state)」にあることを追跡することができる。オペレーティングシステムは、待ちキュープロセスが実行状態に代わるようにタイムスライス中に「execute now(直ちに実行)」(SCTX)コマンドを発行することができる。プロセスが待ち状態にある場合、主メモリからのレジスタのスワップは必要ない。
各プロセスは、コアが満杯であるときに「Process Interrupted(プロセス割り込み)」割り込みを実行すべきプロセスを決定する場合に、コンテキストコントローラが使用することができる優先順位インジケータを与えられてもよい。モードおよび優先順位に基づいて、コンテキストコントローラは、キャッシュ内に格納されているプロセスコンテキストを順序正しく実行することができる。オペレーティングシステムは、要求に応じてプロセス切り替え割り込みおよびタイマー割り込みをリッスンし、プロセス変更をコンテキストコントローラに伝達することにより、随時キャッシュスワップを強制する必要もある。
リアルタイムクロックは、再度割り込みを行なうことができ、プロセスは繰り返す。
上記のプロセスを実施することにより、オペレーティングシステムは、実行すべきコアを決定する必要はなくなる。オペレーティングシステムは、コアに直接割り込みを行なうことはない。したがって、待ち時間およびシステムスループットは、CPU内のコアの数の増大に伴って、逆の作用を有する。従来のSMPスループットはCPUコアの数の増大に伴って減少するが、HPCSを使用することで、CPUコアの数の増大に伴ってスループットを改善する。
オペレーティングシステムは、処理優先順位に対する制御を維持することができる。オペレーティングシステムは、どのプロセスIDを実行する必要があるかをコンテキストコントローラに指示する。オペレーティングシステムは、実行しようとするプロセスをコンテキストコントローラに通知し、次いでコンテキストコントローラはプロセスをCPUコアに移動させる。
ハードウェアは、コンテキスト切り替えを実行するために、プロセスの場所に関して格納されている情報にアクセスする。プロセスIDを与えられ、コンテキストコントローラは、オペレーティングシステムによってコンテキスト切り替えに提供されたメモリマップベースのアドレス指定に基づいてコンテキスト切り替えを実行するための情報を見つける場所を認識する。コンテキストコントローラは、メモリおよび非専用のコアを管理し、実行中プロセスに関する情報を有する。
各プロセスは優先順位を有する。別のプロセスが実行される場合、コンテキストコントローラは、どのプロセスがスワップアウトされうるかを決定する。どのプロセスがどのコアで実行中であるかを示すテーブルが保持される。テーブルは専用メモリバッファに格納されてもよく、プロセスが実行中であるかどうか、プロセスの優先順位などに関する情報を格納することができる。したがって、プロセスをコアとの間で移動するために必要なすべての命令は、コンテキストコントローラにおけるハードウェアによって処理される。
上記の構成を前提として、オペレーティングシステムは、実際のプロセッサCPU命令を主メモリの内および外に移動する必要はなくなる。実行するために必要なプロセス情報は、CPU自体にある。したがって、コンテキスト切り替え待ち時間は、情報がダイ自体にない場合に情報にアクセスして取得するために必要とされ使用されるCPUサイクルの数だけ短縮される。さらに、コンテキスト切り替えは、オペレーティングシステムがサイクルに割り込みを行なう場合を除いて、オペレーティングシステムに関与することなく既知のコンテンツのキャッシュを自動的に繰り返すことができる。これは、自動コンテキスト切り替えと呼ばれる。
セキュリティ
コンピューティングクラウドのような共有環境に、並行プロセスおよび仮想マシンがますます作成されるようになり、データセキュリティを提供するための対策を講じる必要がある。ハードウェアはプログラムにより変更することは困難または不可能であるため、ハードウェアレベルでセキュリティを提供することは、安全なコンピューティング環境を提供する上で最も魅力的なオプションの1つである。
本開示の一部の実施形態と一致する原理は、ハードウェアにプロセスIDの可視性を提供し、メモリブロックはセキュリティビットを含むプロセスIDを含む仮想メモリマップで構成され、それによりソフトウェアレベルよりもさらに安全なハードウェアレベルにおけるセキュリティのレベルをもたらす。
プロセスIDタグとアクセスマスクの組み合わせにより、ユーザスペースのメモリブロックは、ブロックがプロセス間で共有され引き続き安全でありうるように、プロセスマスクに安全に、かつ可視でタグ付けされてもよい。プロセスIDタグおよびアクセスマスクの組み合わせを提供することにより、コンピューティングクラウドのような共有コンピューティングサービスは、無許可のソースによるメモリアクセスの可能性を回避することができる。本開示の一部の実施形態と一致する原理は、ハードウェアレベルでセキュリティを必要としうる任意のシステムに適用されてもよい。これを達成するため、セキュリティは、オペレーティングシステムから抽象化され、ハードウェアレベルで適用される。
現在のCPU内部のセキュリティモデルは、レベル0−カーネルスペース、レベル1−デバイスドライバ、レベル2−デバイスドライバ、レベル3−ユーザスペース、という4つのセキュリティのレベルを提供する。これらの4つのセキュリティのレベルは、仮想ユーザスペースおよびデバイスドライバにわたりデータおよびメモリアクセスセキュリティを提供することができる能力を、(カーネルスペースの)オペレーティングシステムにもたらす。ハードウェアレベルでユーザスペースのプロセスレベルセキュリティを提供するために、追加の対策が講じられてもよい。本開示は、業界内で現在使用されている定評ある「セグメンテーション(segmentation)」技法とは異なる。セグメンテーションは、レベル0のカーネルスペースドライバが、保護されたメモリブロックにアクセスすることを妨げない。本開示内の概念は、「セグメンテーション」とは異なり、カーネルレベルのプロセスであっても保護されたメモリブロックにアクセスすることができないように、ハードウェアレベルでメモリを安全にする技法を特定する。
本開示の一部の実施形態によるモデルは、データセキュリティを提供する。代替的な実施形態は、上記で説明される高性能コンテキスト切り替え(HPCS:High Performance Context Switch)またはコンテキストコントローラを使用することができ、ユーザスペースのプロセスレベルにおいてセキュリティに対処する。オペレーティングシステムがスレッドコンテキストを構築する場合、プロセスコンテキスト内に格納されるプロセスにデータアクセスマスクを提供することができる。1つの実施形態によれば、これはHPCSによって管理されてもよい。
図3は、本開示の一部の実施形態の原理と一致するコンポーネントの例示的な構成を示す図である。図3はCPU302を含む。CPU302が従来のCPUとして実装されうることを理解されたい。あるいは、CPU302は、図1のコンテキストにおいて説明されるように、コンテキストコントローラ102を備えて実装されてもよい。CPU302は、レジスタ304を含むことができる。CPU302は、メモリ308にアクセスするために、メモリコントローラ306に通信可能にリンクされる。メモリ308は、メモリブロック310を含む。このアーキテクチャは、現在の最新の定評あるCPUにおけるL3レベルのキャッシングの現行アーキテクチャと類似しているが、顕著に異なっている。
メモリブロック310は、セキュリティビットの数がプロセスレベルまで拡張されるように構成されてもよい。CPUコアは、実行中のプロセスを認識することができ、ユーザプロセスが安全であるかどうかを定義することができる。
CPU302は、コンテキストのプロセスIDを含むレジスタ304を含むことができる。メモリブロックは、セキュリティビット、すなわちマスク、およびプロセスIDを含むタグを有することができる。メモリブロックを読み取る場合、タグに含まれるセキュリティビットおよび/またはプロセスIDは、プロセスIDが一致するかどうかに基づいてデータが返されうるかどうかを決定するために比較されてもよい。CPUは、内部実行コンテキストおよびメモリアクセス論理を含むことができ、簡単なビット比較を行なってメモリから取り出されたデータを使用可能にする。プロセスのマッピングをもたらす64ビットレジスタが実装されてもよく、仮想メモリ領域上の64ビットレジスタが、CPUが仮想メモリスペースと実際のプロセスコンテキストとを比較することができるように実装されてもよい。
図4は、本開示の一部の実施形態による、メモリブロックにタグ付けするための方法を示す例示的な流れ図である。オペレーティングシステムがメモリブロックをプロセスに割り振る場合、オペレーティングシステムはメモリブロックを選択して識別する(ブロック402)。オペレーティングシステムは、たとえば、SSHA、RSA、CRYPTなどのような、生成されたセキュアキー、パスワードなど、データアクセスマスクを生成することができる(ブロック404)。オペレーティングシステムは、プロセスIDおよびマスクでメモリブロックにタグ付けすることができる(ブロック406)。プロセスIDおよびマスクを含むタグは、CPUの仮想メモリマップテーブルによって保持される。プロセスが実行する場合、そのプロセスマスクも生成することができる。CPUが仮想メモリマップページ(Virtual Memory Map Page)をロードして、ページ読み取りを開始すると、メモリが安定し読み取りの準備ができたことを指示するCPUからのALE(Address Latch Enable)信号が、プロセスIDコンテキストのANDマスクおよびメモリページコンテキストセキュリティマスクを通過することができ、マスクが一致しない場合に読み取りサイクル全体を通してロウ状態(low)を保持することができる。
メモリ読み取り命令によって返されたメモリ値は、マスクが一致しない場合、すべて0(ゼロ)、またはすべて1であってもよい。このようにマスクを構成することにより、メモリは読み取りプロセスから秘匿される。
マスク値が一致する場合、ALE信号は、通常のラッチメモリとして動作することができ、メモリを要求プロセスとの間で転送することができる。
したがって、メモリ移動命令は、プロセスコンテキストの要求に応じて実行される。コンテキストは、セキュリティマスク(複数可)でダイ上にHPCSにより格納されてもよい。セキュリティマスクは、ALE信号がアクティブ化されるべきかどうかを決定するために仮想メモリブロックを読み取る場合、CPUによって使用される。
ハードウェアレベルにおいて、メモリマップは、2ビットを使用するセキュリティ規則のセット(すなわち、4レベル)で定義される。これらの規則は、すべての仮想メモリブロックに情報として配置され、メモリにアクセスすることができるプロセスを識別する。
OSは、OS自体のプロセスIDを作成する。多くの場合、OSは、スレッドIDを作成する。メモリマップを作成し、プロセスおよび実行コンテキストを定義する場合、メモリマッピングストアおよび一致するプロセス実行コンテキストに数値が提供され、CPU内の回路は一致を認識し、アクセスを有効にする。
プロセスIDの作成において、メモリI/Oコントローラ(メモリコントローラ)は、1つのブロックから別のブロックへとメモリを移動させることができる。メモリコントローラは、たとえば、主メモリからCPUへ、またはメモリからメモリへ、いつメモリの移動を実行しているかを認識することができ、1つのブロックから別のブロックへのメモリの移動が同じである必要があることを認識することができる。メモリコントローラは、「異動元(from)」および「異動先(to)」の場所が、同じプロセスID内、または同じセキュリティ内であるかを認識することができる。メモリコントローラがメモリ移動命令を実行中にメモリアドレススペースがプロセスID情報を含むように、メモリコントローラは、実際の命令を実行している場合、仮想メモリマップストアにアクセスすることができる。プロセスID情報は、たとえばメモリマップなどの専用キャッシュ領域によって提供される。主メモリからCPUにメモリアクセスを行なう場合、メモリコントローラは、データをCPUコントローラに戻すか、またはCPUの実行中コンテキストに基づいて戻さない。パフォーマンスを高めるため、メモリコントローラがCPUダイおよびHPCS回路と共に同一物理CPUに常駐することが可能であってもよい。
したがって、明確に定義されたプロセスコンテキスト定義メモリブロックを含むキャッシュ領域(図示せず)が提供される。仮想メモリマップは、明確に定義される。メモリコントローラは、「保護されたメモリ内の『異動先』および『異動元』であるか」を決定するためだけではなく、プロセスが一致するかどうか確認する64ビットにビットを拡張するためにも、仮想メモリ内のデータを使用することができる。
移動がメモリからメモリである場合、仮想メモリマップに基づいて、「異動先」および「異動元」アドレスが同一セキュリティコンテキストであると決定される。移動がメモリからCPUである場合、CPUは、実行中のコンテキストが何であるか、および実行中のコンテキストがデータへのアクセスを許可されるかどうかを認識することができる。
本明細書において説明するセキュリティコンテキストは、オペレーティングシステムがコンテキスト切り替えを制御している構成において実装することができることが理解されよう。本明細書において説明するセキュリティコンテキストは、コンテキストコントローラ104がコンテキスト切り替えを制御している構成において実装することができることがさらに理解されよう。
メモリブロックは、マッピングテーブル(割り振りテーブル)がCPUに使用可能にされ、割り振りテーブルがプロセスIDおよびメモリマスクの両方を含むように、オペレーティングシステムによって割り振られる。これらのメモリ割り振りテーブルは、場合によっては、仮想メモリマップと呼ばれ、現在の最新のCPUに存在するものと同じ構造である。本明細書において説明するセキュリティコンテキストは、ハードウェアレベルでセキュリティを提供するために必要なCPU情報をCPUおよびメモリコントローラに与える、プロセスIDおよび割り振りテーブルエントリを、十分にフォーマットするメカニズムを説明するものである。通常のマッピングエントリは、多少以下に示すものに似ている。
Figure 0005636109

上記のメモリ割り振りテーブルは、テーブルの2つのエントリ(割り振りハンドルおよび物理メモリアドレス)の代わりに、仮想メモリ割り振りマップがプロセスおよびアクセスマスクを含む4つのエントリを含むことを除いては、現代のCPUに使用される現在のメモリ割り振りテーブルおよび仮想メモリマップテーブルと同一である。プロセスIDについては、前処理オペレーティングシステム要件の項においてさらに説明する。
トランザクションメモリ
(コンピューティングクラウドのような)共有環境に、並行プロセスおよび仮想マシンがますます作成されるようになり、メモリ共有の課題が懸念事項となり始めている。
「トランザクション」は、1つのプロセスがデータを、他のプロセスがそのデータの以前のバージョンから読み取る間に、更新および変更することができるイベントであってもよい。1つのプロセスがその変更をコミットまたは保存すると、新しいデータはその他のプロセスで使用可能になる。
「トランザクション」のもう1つの態様は、1つのプロセスがその変更を破棄して、そのデータの以前のバージョンに戻ることができることである。
オペレーティングシステムによるトランザクション処理を構築する以前の試みは、メモリ管理があまりに時間を要するようになり、このレベルでは実際的ではないため、実施の課題をもたらした。しかし、本開示の一部の実施形態の原理によれば、マルチコアおよびマルチプロセス環境内の高性能トランザクション処理を可能にするためにブリッジが提供される。説明するシステムは、同機種および異機種コア技術を含むマルチコア、多数コア、マルチダイCPU技術のコンピューティング業界からの技術を増強する。
図5は、本開示の一部の実施形態の原理と一致するハードウェア構成を示す例示的なブロック図である。図5に示されるように、ハードウェア構成は、CPUコア502、メモリバスコントローラ504、主コア506、およびトランザクションコア508を含む。
システムは、仮想メモリマップのCPUプロセスコンテキスト増強、メモリトランザクションを可能にするメモリバス、並列またはデュアルプレーンのメモリアーキテクチャ、およびトランザクションメモリセットアップおよびコミットを実行するためのオペレーティングシステムを提供する。
(コンピューティングクラウドのような)共有コンピューティングサービスに関する主要な課題は、複数ソースによるメモリアクセスの可能性の導入である。メモリアクセスの変更は通常、読み取りプログラムが、読み取りを行う前に更新が完了するまで待機するように、読み取りプログラムを「ブロック」する。
トランザクションプロセスにより、読み取りプログラムはブロックされることなく続行することができる。これにより、並列プロセスのより高い処理スループットが可能になる。
本開示の一部の実施形態によれば、システムは、前述のようなHPCSまたはコンテキストコントローラを含むことができ、CPUコア内でコンテキストを実行するためのプロセスID情報を保持することができる。「プロセス」はトランザクション処理され、「プロセスID」内でアクセスされるすべてのメモリはトランザクション処理される。
さらに多くの開発者が「スレッディング(threading)」およびマルチプロセスアプリケーションに慣れるようになるにつれ、開発者はオペレーティングシステムに「トランザクション処理済み」プロセスIDを要求することがある。
前処理オペレーティングシステム要件
トランザクション処理済みメモリを必要とする各プロセスは、オペレーティングシステムによる「トランザクション処理済み」プロセスIDの作成を要求する。
オペレーティングシステムは、使用可能にされたメモリアクセス(トランザクションまたはセキュリティ)のために、使用可能にされた属性フラグを持つプロセスIDを生成することができる。プロセスIDは、0x2001 0000 0000 1234のような64ビット値であってもよい。
CPUセキュリティおよびトランザクションフラグは、最下位ニブルで保持されてもよい。残りのプロセスIDは、オペレーティングシステムおよび仮想マシンのためのもので、OxTVVV XXXX XXXX SSSSのようなものであり、T=「トランザクション/セキュリティフラグ」、V=「仮想マシン識別子」、X=「オペレーティングシステムおよびユーザプロセスID」、S=「オペレーティングシステムおよびユーザプロセススレッドID」である。
オペレーティングシステムがスレッドコンテキストを構築する場合、プロセスコンテキストで格納されうるプロセスにデータアクセスマスクを提供することができる。これは、HPCSによって管理されてもよい。セキュリティビットおよびアクセスマスクに関するセキュリティのセクションを参照されたい。
加えて、オペレーティングシステムによって保持される仮想メモリマップ連想配列は、メモリブロックを割り振りしたプロセスIDを含む追加の連想配列を有することができる。
CPUが「ページフォールト(page fault)」を発行し、メモリブロックマップをCPUの仮想から物理メモリマップにスワップインする必要がある場合、プロセスIDは、仮想メモリマッピングのためにCPUコンテキストレジスタに挿入されたメモリ割り振りブロック内の情報の一部であってもよい。
連想配列は、たとえば以下のように実施されてもよい(アドレスは例示的なものに過ぎない)。
Figure 0005636109
これらの仮想/物理メモリマップは通常、オペレーティングシステムおよびCPUコンテキストマップ内にn−way連想配列(通常は4−way)で保持される。
本明細書において説明するメモリマップは、仮想メモリブロックを割り振りしたプロセスIDを含む。プロセスIDは、上位ニブルの例を示し、その上位ニブルは以下のようなものである。
0x0 No security(セキュリティなし)
0x1 セキュリティ − このプロセスIDによるアクセスのみ
0x2 トランザクション処理済み − プロセスIDはトランザクション処理されている
0x3 安全/トランザクション処理済み − プロセスIDは安全でありトランザクション処理されている
オペレーティングシステムが適正なプロセスIDおよび仮想メモリ割り振りマップを作成すると、トランザクションコアは使用可能にされてもよい。
本開示の一部の実施形態と一致する特徴は、4つのコンピューティングアーキテクチャ構成を提供する。
トランザクションコア。トランザクションプロセスと共に使用するための冗長メモリコア。このコアは、主メモリ内のすべてのメモリの複製である。
CPUチップセットは、2つのメモリバスに同時に書き込みを行なうことができる。
メモリアクセス。各メモリブロックは、ページブロックアクセスレベルを読み取り/書き込み、読み取り専用、またはトランザクション処理済みとして識別するプロセッサのメモリページ連想配列キャッシュ内でフラグを立てられてもよい。
トランザクション保存/コミット/ロールバック。各プロセスが完了するか、またはトランザクションが完了すると、CPUはトランザクションコアと主メモリ間でメモリページを「コピー」するよう指示されてもよい。
トランザクションコア
本開示の一部の実施形態と一致する原理によれば、主メモリコアと並行して実行することができる「トランザクションコア」と呼ばれる冗長メモリコアが提供される。これは、条件付きで2つのメモリコアに同時にアクセスするための、メモリバスおよびメモリアクセスチップセットの単純な構造である。これらのメモリコアは、完全に同一の線形アドレススペースを共有して、同時書き込みを可能にする。本開示の一部の実施形態の原理と一致する一部の実施形態によれば、管理責任は、オペレーティングシステムから、たとえばコンテキストコントローラのようなCPUコアに移されてもよい。
このコア構成は、ALE(address latch enable)が整定されるとバスコントローラに影響を与えるチップセット上でトライステートアクセスワイヤ(tri−state access wire)でバスを制御することができることを示す。状態は、以下のようであってもよい。
Off(オフ)(トライステート) − アクセス切り替えはハイまたはロウのいずれでもない。これは、アクセスサイクル中にデータが転送されないことを意味する。
High(ハイ) − アクセス切り替えがオフである。書き込みサイクル中は、いずれのコアバスもアクティブであり、両方のコアに書き込みを行なうことができる。読み取りサイクル中は、主コアのみがアクティブである。
Low(ロウ) − アクセス切り替えがオンである。書き込みおよび読み取りサイクル中は、トランザクションコアのみがアクティブである。
この処理が、オペレーティングシステムおよびCPUに完全に透過的であることが理解されるであろう。したがって、複製メモリを提供するこのプロセスは、プロセススループットの影響を及ぼさない。
メモリへの書き込みおよびメモリからの読み取り
プロセスIDによる読み取り/書き込みサイクル中、CPUは、オペレーティングシステムによって提供された仮想メモリマップを使用して物理メモリスペースにアクセスすることができる。
書き込みプロセスは、CPUがトライステートアクセス切り替え(Tri−State Access Switch)を適切にアクティブ化することを必要とする。CPUは、実行中コンテキストのプロセスIDと仮想メモリマップのプロセスIDとを比較することによりアクティブ化を行なうことができ、これはトライステートフラグを適切に設定することができる。
最初に、CPUは、コンテキストプロセスIDと仮想メモリマップを比較することができ、これはCPUレジスタがプロセスコンテキストおよび仮想メモリマップをロードすることにより自動的に行なわれてもよい。これはCPUレジスタの機能であり、条件を実行するために命令は必要ない。
コンテキストプロセスIDをA、および仮想メモリプロセスIDをBと仮定する。
ビットは数値0から63である。ビット60はセキュリティビットである。ビット61はトランザクションビットである。
CPUレジスタは、AとBを比較する(下位60ビット、ビット0から59)。A=Bの信号が結果として生じる。
結果として得られたアクセスフラグは、図6に示される論理回路によって示される。
トランザクションフラグ(ビット61)は、トランザクションコアまたは主コアメモリフラグをオンにする。セキュリティフラグ(ビット60)は、プロセスIDにアクセスが許可されるかどうかを決定するトライステートバッファを使用可能にする。
セキュリティフラグは複雑である。トランザクションにおいて、アクセスしているプロセスがプロセスBではなく、読み取りプロセスがプロセスBのメモリブロックで生じる場合、プロセスは主メモリからこれを行なうことができ、アクセスしているプロセスが書き込みを行なおうとする場合、ロウであるアクセスフラグによって指示されるように書き込みは両方のメモリプレーンに書き込みを行なおうとするので、プロセスは書き込みをブロックされうる。
セキュリティ規則は以下のとおりである。
A=Bである場合、アクセスフラグは使用可能であり(0または1)、または
ビット60がオフである場合、アクセスフラグは使用可能であり(0または1)、または
ビット60がオフであり、かつビット61がオンであり(これはトランザクションである)、かつこれが書き込みサイクルではなく、かつA<>Bである場合、アクセスフラグは使用可能である(0または1)
アクセスフラグは、以下のように処理される。
ビット61がオンであり、かつA=Bである場合、0にセットされて、読み取り/書き込みはトランザクションコアから行なわれる
ビット61がオンであり、かつA<>Bである場合、1にセットされて、読み取りは主コアから行なわれ、書き込みは両方のコアで行なわれる
トライステート(セキュリティフラグに基づく)の場合、メモリはメモリコントローラによりメモリバスに沿って渡されることはない。このセキュリティ規則は、図6の論理図により示される。
トランザクションにおいて、プロセスA(Bと等しくない場合)は、プロセスBのトランザクション処理されたメモリに書き込みすることを許可されない。したがって、アクセスフラグはオフにされ、メモリバスコントローラは書き込みを行なうことができない。
読み取りについては、アクセスフラグがトライステートである場合、メモリコントローラによって返されたメモリ値は、すべて0(ゼロ)、またはすべて1、またはトライステートであってもよく、読み取りの成功を妨げる。
コンテキストトランザクション保存/コミット/ロールバック
プロセス実行中、メモリ変更は、仮想メモリマッププロセスIDでビット61がオンである場合に、トランザクションメモリにおいてのみ行なわれる。
プロセスがオペレーティングシステムによって終了されると(またはプロセス自身によっていつでも)、オペレーティングシステムはProcess Context Commit(プロセスコンテキストコミット)命令をCPUにサブミットすることができる。
CPUは、Process Context Commit命令を受けて、仮想メモリブロック/物理メモリブロック情報をメモリコントローラに出力することができる。
メモリコントローラは、トランザクションコアからメモリブロックを主メモリコアに(または、主メモリコアからのロールバックの場合はトランザクションコアに)直接コピーすることができる。このコピーは、メモリバスコントローラによって管理されるDMAコントローラ(または並列バスコントローラ)を通じてCPUの外部で行なわれるべきである。
コピーの方向は、極めて重要である。メモリバスへの「保存」コピー命令、および逆方向のコピーの「ロールバック」命令のための1つの命令があってもよい。これにより、トランザクションは、すべての変更を破棄して、メモリブロックの以前のコピーに「ロールバック」することができる。
この解決策において、コミット(Commit)は単一の命令であり、すべてのメモリ移動はハードウェアで生じる。
コアの使用
アプリケーションプロセスによりトランザクションを実行するためのプロセスは、単純であってもよい。説明されるアーキテクチャを使用してトランザクションを実行するステップは、以下のとおりである。
オペレーティングシステムは、トランザクションフラグを持つプロセスIDを生成する。オペレーティングシステムは、スレッドのプロセスコンテキストを作成する。プロセスコンテキストは、スレッド実行のためにCPUに転送され、仮想メモリマップは(現在のアーキテクチャにおけるマップおよびコンテキストのとおりに)アクティブ化にスワップされる。メモリへのアプリケーションまたはスレッド読み取り/書き込みは、通常通りに行なわれる。各メモリブロック割り振りは、オペレーティングシステムによって保持される仮想メモリマップのプロセスIDに関連付けられる。アプリケーションまたはスレッドが終了する。オペレーティングシステムは、コンテキストを除去するためにProcess Termination(プロセス終了)をCPUに発行し、プロセスIDのトランザクションコミット命令(またはトランザクションロールバック命令)を発行するが、これはトランザクションメモリコアと主メモリコア間でプロセスIDの各仮想メモリブロックコピーするようメモリバスに指示させるCPUへの命令である。オペレーティングシステムは、その他のプロセスのためにプロセスIDの仮想/物理メモリブロックを解放する。
プロセス内で割り振られるメモリブロックが同一のトランザクションの一部であることに留意されたい。プロセスが完了した場合に限り、メモリが主コアにコピーされる。トランザクションは、プロセス/スレッド実行の存続期間である。
本明細書において説明される方法、装置、構成、アーキテクチャなどが、さまざまな業界に適用されうることが理解されよう。たとえば、1)映画業界。共有システムでのマルチプロセスフィルムレンダリングにおけるアニメーションレンダリング、2)ゲーム業界。共有システムでのリアルタイム並列マルチプロセッシングシーンレンダリング、3)教育/研究。共有システムでのリアルタイム並列マルチ方程式プロセッシング。4)金融。共有システムでのリアルタイム市場予測および統計処理。5)科学。共有システムでの並列データ処理。6)コンピューティング。仮想化ハイパーバイザーは、使用可能なCPUを追跡する必要はなくなり、仮想サーバプロセス優先順位付けキューなどを提供するだけでよい。
システムの側面でのハードウェアの実装形態とソフトウェアの実装形態との間には、ほとんど相違が残されていない。ハードウェアまたはソフトウェアの使用は、一般に(いつもそうではないが、ある状況ではハードウェアとソフトウェアの間の選択が重要になりうるという点で)コスト対効果のトレードオフを表す設計上の選択である。本明細書に記載された、プロセスおよび/またはシステムおよび/または他の技術をもたらすことができるさまざまな達成手段があり(たとえば、ハードウェア、ソフトウェア、および/またはファームウェア)、好ましい達成手段は、プロセスおよび/またはシステムおよび/または他の技術が導入される状況によって異なりうる。たとえば、実装者が速度と正確性が最も重要であると決定すると、実装者は主にハードウェアおよび/またはファームウェアの達成手段を選択することができる。フレキシビリティが最も重要なら、実装者は主にソフトウェアの実装形態を選択することができる。または、さらに別の代替案として、実装者は、ハードウェア、ソフトウェア、および/またはファームウェアのなんらかの組み合わせを選択することができる。
前述の詳細な説明では、ブロック図、フローチャート、および/または例の使用によって、装置および/またはプロセスのさまざまな実施形態を説明してきた。そのようなブロック図、フローチャート、および/または例が1つまたは複数の機能および/または動作を含む限りにおいて、そのようなブロック図、フローチャート、または例の中のそれぞれの機能および/または動作は、広範囲のハードウェア、ソフトウェア、ファームウェア、または実質上それらのすべての組み合わせにより、個別におよび/または集合的に実装可能であることが、当業者には理解されるであろう。ある実施形態では、本明細書に記載された主題のいくつかの部分は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、または他の集積化方式によって実装することができる。しかし、本明細書で開示された実施形態のいくつかの態様が、全体においてまたは一部において、1つまたは複数のコンピュータ上で動作する1つまたは複数のコンピュータプログラムとして(たとえば、1つまたは複数のコンピュータシステム上で動作する1つまたは複数のプログラムとして)、1つまたは複数のプロセッサ上で動作する1つまたは複数のプログラムとして(たとえば、1つまたは複数のマイクロプロセッサ上で動作する1つまたは複数のプログラムとして)、ファームウェアとして、あるいは実質上それらの任意の組み合わせとして、等価に集積回路に実装することができることを、当業者は認識するであろうし、電気回路の設計ならびに/またはソフトウェアおよび/もしくはファームウェアのコーディングが、本開示に照らして十分当業者の技能の範囲内であることを、当業者は認識するであろう。さらに、本明細書に記載された主題のメカニズムをさまざまな形式のプログラム製品として配布することができることを、当業者は理解するであろうし、本明細書に記載された主題の例示的な実施形態が、実際に配布を実行するために使用される信号伝達媒体の特定のタイプにかかわらず適用されることを、当業者は理解するであろう。信号伝達媒体の例には、フロッピー(登録商標)ディスク、ハードディスクドライブ、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、デジタルテープ、コンピュータメモリ、などの記録可能なタイプの媒体、ならびに、デジタル通信媒体および/またはアナログ通信媒体(たとえば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど)の通信タイプの媒体が含まれるが、それらには限定されない。
本明細書で説明したやり方で装置および/またはプロセスを記載し、その後そのように記載された装置および/またはプロセスを、データ処理システムに統合するためにエンジニアリング方式を使用することは、当技術分野で一般的であることを当業者は認識するであろう。すなわち、本明細書に記載された装置および/またはプロセスの少なくとも一部を、妥当な数の実験によってデータ処理システムに統合することができる。通常のデータ処理システムは、一般に、システムユニットハウジング、ビデオディスプレイ装置、揮発性メモリおよび不揮発性メモリなどのメモリ、マイクロプロセッサおよびデジタル信号プロセッサなどのプロセッサ、オペレーティングシステムなどの計算実体、ドライバ、グラフィカルユーザインタフェース、およびアプリケーションプログラムのうちの1つもしくは複数、タッチパッドもしくはスクリーンなどの1つもしくは複数の相互作用装置、ならびに/またはフィードバックループおよびコントロールモータを含むコントロールシステム(たとえば、位置検知用および/もしくは速度検知用フィードバック、コンポーネントの移動用および/もしくは数量の調整用コントロールモータ)を含むことを、当業者は理解するであろう。通常のデータ処理システムは、データコンピューティング/通信システムおよび/またはネットワークコンピューティング/通信システムの中に通常見られるコンポーネントなどの、市販の適切なコンポーネントを利用して実装することができる。
本明細書に記載された主題は、さまざまなコンポーネントをしばしば例示しており、これらのコンポーネントは、他のさまざまなコンポーネントに包含されるか、または他のさまざまなコンポーネントに接続される。そのように図示されたアーキテクチャは、単に例に過ぎず、実際には、同じ機能を実現する多くの他のアーキテクチャが実装可能であることが理解されよう。概念的な意味で、同じ機能を実現するコンポーネントの任意の構成は、所望の機能が実現されるように効果的に「関連付け」される。したがって、特定の機能を実現するために組み合わされた、本明細書における任意の2つのコンポーネントは、アーキテクチャまたは中間のコンポーネントにかかわらず、所望の機能が実現されるように、お互いに「関連付け」されていると見ることができる。同様に、そのように関連付けされた任意の2つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に接続」または「動作可能に結合」されていると見なすこともでき、そのように関連付け可能な任意の2つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に結合できる」と見なすこともできる。動作可能に結合できる場合の具体例には、物理的にかみ合わせ可能な、および/もしくは物理的に相互作用するコンポーネント、ならびに/またはワイヤレスに相互作用可能な、および/もしくはワイヤレスに相互作用するコンポーネント、ならびに/または論理的に相互作用する、および/もしくは論理的に相互作用可能なコンポーネントが含まれるが、それらに限定されない。
本明細書における実質的にすべての複数形および/または単数形の用語の使用に対して、当業者は、状況および/または用途に適切なように、複数形から単数形に、および/または単数形から複数形に変換することができる。さまざまな単数形/複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
通常、本明細書において、特に添付の特許請求の範囲(たとえば、添付の特許請求の範囲の本体部)において使用される用語は、全体を通じて「オープンな(open)」用語として意図されていることが、当業者には理解されよう(たとえば、用語「含む(including)」は、「含むがそれに限定されない(including but not limited to)」と解釈されるべきであり、用語「有する(having)」は、「少なくとも有する(having at least)」と解釈されるべきであり、用語「含む(includes)」は、「含むがそれに限定されない(includes but is not limited to)」と解釈されるべきである、など)。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。たとえば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも1つの(at least one)」および「1つまたは複数の(one or more)」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「1つまたは複数の」または「少なくとも1つの」および「a」または「an」などの不定冠詞を含む場合であっても、不定冠詞「a」または「an」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に1つのそのような記載を含む開示に限定する、ということを示唆していると解釈されるべきではない(たとえば、「a」および/または「an」は、通常、「少なくとも1つの」または「1つまたは複数の」を意味すると解釈されるべきである)。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、通常、少なくとも記載された数を意味すると解釈されるべきであることが、当業者には理解されよう(たとえば、他の修飾語なしでの「2つの記載(two recitations)」の単なる記載は、通常、少なくとも2つの記載、または2つ以上の記載を意味する)。「A、BまたはC、などの少なくとも1つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている(たとえば、「A、B、またはCの少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AおよびBを共に、AおよびCを共に、BおよびCを共に、ならびに/またはA、B、およびCを共に、などを有するシステムを含むが、それに限定されない)。2つ以上の代替用語を提示する事実上いかなる離接する語および/または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方(one of the terms)、当該用語のいずれか(either of the terms)、または両方の用語(both terms)を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。たとえば、句「AまたはB」は、「A」または「B」あるいは「AおよびB」の可能性を含むことが理解されよう。
本明細書においてさまざまな態様および実施形態が開示されたが、その他の態様および実施形態は当業者には明らかとなろう。本明細書において開示されるさまざまな態様および実施形態は、説明のためのものであって、限定的であることを意図しておらず、真の範囲および精神は後段の特許請求の範囲により示される。

Claims (16)

  1. 複数の命令を実行するように単一ダイ上に構成された複数のコアと、
    前記単一ダイ上に配置されたコンテキストキャッシュメモリと、
    前記複数のコアの各々で前記複数の命令の実行を制御するように前記単一ダイ上に配置されたコンテキスト切り替えコントローラと、を備え、
    前記コンテキスト切り替えコントローラが、
    プロセスに関連付けられるプロセスIDが前記コンテキストキャッシュメモリに格納されていないという決定により、プロセスのコンテキスト切り替え情報が前記コンテキストキャッシュメモリに格納されていないと決定し
    前記コンテキスト切り替え情報が前記コンテキストキャッシュメモリに格納されていないという決定に応答して、割り込みを生成し、
    前記単一ダイに配置されていないシステムメモリのメモリブロックの識別子を受信し、前記メモリブロックは、前記コンテキスト切り替え情報を備えており、
    前記メモリブロックに関連付けられるタグが、前記プロセスに関連付けられるプロセスIDと、前記プロセスに関連付けられるアクセスマスクとを含むことを決定し、
    前記単一ダイに配置されていないシステムメモリのメモリブロックにおいて、前記プロセスの前記コンテキスト切り替え情報にアクセスする、プロセッサ。
  2. 前記単一ダイ上に配置された前記コンテキストキャッシュメモリは、前記複数の命令の各々の識別子および前記複数の命令の各々の状態を格納するように構成される、請求項1に記載のプロセッサ。
  3. 前記コンテキスト切り替え情報にアクセスするために、前記コンテキスト切り替えコントローラは、
    前記メモリにアクセスする要求を受信し、ここで、前記要求は、実行プロセスマスクを含み、
    前記アクセスマスクが前記実行プロセスマスクに一致するかどうかを判定し、
    前記アクセスマスクと前記実行プロセスマスクとの一致に応答して、前記メモリブロックへのアクセスを許可するように構成されている、請求項1に記載のプロセッサ。
  4. 前記プロセスIDは、スレッドID又は仮想マシンIDを含む、請求項1に記載のプロセッサ。
  5. 前記コンテキスト切り替えコントローラは、前記プロセスのコンテキストマップロケーションを受信するように更に構成されている、請求項1に記載のプロセッサ。
  6. 前記コンテキスト切り替えコントローラは、前記割り込みに応答して、前記単一ダイに配置されていないシステムメモリにおいて、レジスタセットを備えるメモリブロックの識別子を受信するように更に構成されている、請求項1に記載のプロセッサ。
  7. 前記コンテキスト切り替えコントローラは、前記単一ダイに配置されていないシステムメモリにおいて、前記レジスタセットを備える前記メモリブロックの前記識別子の受信に応答して、前記単一ダイに配置されている前記コンテキストキャッシュメモリにおいて、前記レジスタセットをキャッシュするように更に構成されている、請求項6に記載のプロセッサ。
  8. プロセス切り替えを実行するための方法であって、
    複数のコアを備える単一ダイ上に構成された中央演算処理装置上に構成されたコンテキストコントローラにおいて、前記中央演算処理装置上で実行するプロセスを識別するコマンドを受信し
    前記単一ダイ上に配置されているコンテキストキャッシュメモリに前記プロセスのコンテキスト切り替え情報が格納されていないと判断し、それに応答して割り込みを生成し、
    前記コンテキストコントローラにおいて、前記単一ダイに配置されていないシステムメモリのメモリブロックの識別子を受信し、前記メモリブロックは、前記コンテキスト切り替え情報を備えており、
    前記メモリブロックに関連付けられるタグが、前記プロセスに関連付けられるプロセスIDと、前記プロセスに関連付けられるアクセスマスクとを含むことを決定し、
    前記単一ダイに配置されていないシステムメモリのメモリブロックにおいて、前記プロセスの前記コンテキスト切り替え情報にアクセスし、
    前記複数のコアの一つで実行するプロセスをスケジュールする、方法。
  9. 前記コンテキスト切り替え情報にアクセスすることは、
    前記メモリにアクセスする要求を受信することであって、前記要求は、実行プロセスマスクを含む、ことと、
    前記アクセスマスクが前記実行プロセスマスクに一致するかどうかを判定することと、
    前記アクセスマスクと前記実行プロセスマスクとの一致に応答して、前記メモリブロックへのアクセスを許可することと、
    を備える、請求項8に記載の方法。
  10. 前記割り込みに応答して、前記単一ダイに配置されていない前記システムメモリにおいて、レジスタセットを備えるメモリブロックの識別子を受信すること、
    を更に備える、請求項8に記載の方法。
  11. 前記単一ダイに配置されていない前記システムメモリにおいて、レジスタセットを備えるメモリブロックの識別子の受信に応答して、前記中央演算処理装置において、前記レジスタセットをキャッシュすること、
    を更に備える、請求項10に記載の方法。
  12. 前記コマンドは、前記プロセスを識別するプロセスIDを備える、請求項8に記載の方法。
  13. 前記単一ダイ上に配置されているコンテキストキャッシュメモリに前記プロセスのコンテキスト切り替え情報が格納されていないと判断することは、前記プロセスIDが前記単一ダイ上に配置されているコンテキストキャッシュメモリに格納されていないと判断することを備える、請求項12に記載の方法。
  14. 前記プロセスIDは、スレッドID又は仮想マシンIDを含む、請求項12に記載の方法。
  15. 前記プロセスのコンテキストマップロケーションを受信することを更に備える、請求項8に記載の方法。
  16. コンピュータに請求項8乃至15のうち何れか1項に記載の方法を実行させる機械読み取り可能な命令を備えるコンピュータプログラム。
JP2013525867A 2010-08-23 2010-08-23 コンテキスト切り替え Expired - Fee Related JP5636109B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/SG2010/000305 WO2012026877A1 (en) 2010-08-23 2010-08-23 Context switching

Publications (2)

Publication Number Publication Date
JP2013536524A JP2013536524A (ja) 2013-09-19
JP5636109B2 true JP5636109B2 (ja) 2014-12-03

Family

ID=45595089

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013525867A Expired - Fee Related JP5636109B2 (ja) 2010-08-23 2010-08-23 コンテキスト切り替え

Country Status (6)

Country Link
US (1) US9658877B2 (ja)
JP (1) JP5636109B2 (ja)
KR (1) KR101480856B1 (ja)
DE (1) DE112010005821T5 (ja)
TW (1) TWI537831B (ja)
WO (1) WO2012026877A1 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8539155B1 (en) * 2009-09-21 2013-09-17 Tilera Corporation Managing home cache assignment
JP5238876B2 (ja) * 2011-12-27 2013-07-17 株式会社東芝 情報処理装置及び情報処理方法
US10423424B2 (en) * 2012-09-28 2019-09-24 Nvidia Corporation Replicated stateless copy engine
US9336035B2 (en) * 2012-10-23 2016-05-10 Vmware, Inc. Method and system for VM-granular I/O caching
US9323543B2 (en) * 2013-01-04 2016-04-26 Microsoft Technology Licensing, Llc Capability based device driver framework
WO2014113055A1 (en) * 2013-01-17 2014-07-24 Xockets IP, LLC Offload processor modules for connection to system memory
US8959576B2 (en) * 2013-03-14 2015-02-17 Intel Corporation Method, apparatus, system for qualifying CPU transactions with security attributes
US9384036B1 (en) 2013-10-21 2016-07-05 Google Inc. Low latency thread context caching
CN104699531B (zh) * 2013-12-09 2019-12-13 超威半导体公司 3d芯片***中的电压下降缓解
US9280375B1 (en) * 2014-04-30 2016-03-08 Google Inc. Dynamically adjustable virtual machine
US9996390B2 (en) * 2014-06-10 2018-06-12 Samsung Electronics Co., Ltd. Method and system for performing adaptive context switching
US9685219B2 (en) 2015-05-13 2017-06-20 Samsung Electronics Co., Ltd. Semiconductor memory device for deconcentrating refresh commands and system including the same
US9946657B1 (en) * 2016-03-01 2018-04-17 Nutanix, Inc. Spilling small cache entries to a solid state device
US10146439B2 (en) * 2016-04-13 2018-12-04 Samsung Electronics Co., Ltd. System and method for high performance lockless scalable target
US10452287B2 (en) * 2016-06-24 2019-10-22 Futurewei Technologies, Inc. System and method for shared memory ownership using context
KR101936565B1 (ko) * 2016-11-14 2019-01-09 엘에스산전 주식회사 인버터에서 인터럽트 제어방법
US10552212B2 (en) * 2016-11-28 2020-02-04 Arm Limited Data processing
US10649956B2 (en) * 2017-04-01 2020-05-12 Intel Corporation Engine to enable high speed context switching via on-die storage
CN107562514B (zh) * 2017-08-03 2020-11-24 致象尔微电子科技(上海)有限公司 一种物理内存访问控制与隔离方法
US10884481B2 (en) * 2018-03-30 2021-01-05 Konica Minolta Laboratory U.S.A., Inc. Apparatus and method for improving power savings by accelerating device suspend and resume operations
CN112154408A (zh) * 2018-04-12 2020-12-29 美光科技公司 重放受保护存储器块命令队列
KR102674538B1 (ko) * 2019-02-28 2024-06-13 엘지전자 주식회사 디지털 디바이스 및 그 제어 방법
US11249678B2 (en) * 2019-07-26 2022-02-15 Qualcomm Incorporated Serial memory device single-bit or plurality-bit serial I/O mode selection

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5249231A (en) * 1992-05-04 1993-09-28 Motorola, Inc. Memory tagging for object reuse protection
US5379428A (en) * 1993-02-01 1995-01-03 Belobox Systems, Inc. Hardware process scheduler and processor interrupter for parallel processing computer systems
JPH09101916A (ja) * 1995-10-06 1997-04-15 Fujitsu Ltd マルチプロセス処理装置
US6542991B1 (en) * 1999-05-11 2003-04-01 Sun Microsystems, Inc. Multiple-thread processor with single-thread interface shared among threads
US6507862B1 (en) 1999-05-11 2003-01-14 Sun Microsystems, Inc. Switching method in a multi-threaded processor
US6430667B1 (en) 2000-04-13 2002-08-06 International Business Machines Corporation Single-level store computer incorporating process-local address translation data structures
US7076609B2 (en) 2002-09-20 2006-07-11 Intel Corporation Cache sharing for a chip multiprocessor or multiprocessing system
US20040117589A1 (en) * 2002-12-12 2004-06-17 International Business Machines Corp. Interrupt mechanism for a data processing system having hardware managed paging of disk data
JP2004220070A (ja) * 2003-01-09 2004-08-05 Japan Science & Technology Agency コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体
US7073043B2 (en) 2003-04-28 2006-07-04 International Business Machines Corporation Multiprocessor system supporting multiple outstanding TLBI operations per partition
US7055004B2 (en) 2003-09-04 2006-05-30 International Business Machines Corporation Pseudo-LRU for a locking cache
US7206966B2 (en) 2003-10-22 2007-04-17 Hewlett-Packard Development Company, L.P. Fault-tolerant multi-core microprocessing
JP2006033721A (ja) 2004-07-21 2006-02-02 Fuji Photo Film Co Ltd 画像処理装置、画像処理システム、および画像処理プログラム
US8516483B2 (en) 2005-05-13 2013-08-20 Intel Corporation Transparent support for operating system services for a sequestered sequencer
US7590774B2 (en) 2005-12-01 2009-09-15 Kabushiki Kaisha Toshiba Method and system for efficient context swapping
US20070204268A1 (en) * 2006-02-27 2007-08-30 Red. Hat, Inc. Methods and systems for scheduling processes in a multi-core processor environment
US7636829B2 (en) 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US20080040524A1 (en) 2006-08-14 2008-02-14 Zimmer Vincent J System management mode using transactional memory

Also Published As

Publication number Publication date
US20120047516A1 (en) 2012-02-23
TW201214289A (en) 2012-04-01
US9658877B2 (en) 2017-05-23
KR101480856B1 (ko) 2015-01-09
TWI537831B (zh) 2016-06-11
WO2012026877A1 (en) 2012-03-01
DE112010005821T5 (de) 2013-06-06
JP2013536524A (ja) 2013-09-19
KR20130063003A (ko) 2013-06-13

Similar Documents

Publication Publication Date Title
JP5636109B2 (ja) コンテキスト切り替え
US10929323B2 (en) Multi-core communication acceleration using hardware queue device
US6779065B2 (en) Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads
CN104756090B (zh) 提供扩展的缓存替换状态信息
JP2018509687A (ja) ユーザレベルの分岐及び結合を行うプロセッサ、方法、システム、及び命令
US20140281299A1 (en) Opportunistic migration of memory pages in a unified virtual memory system
US20170371654A1 (en) System and method for using virtual vector register files
US11650947B2 (en) Highly scalable accelerator
JP6501791B2 (ja) マルチスレッド・ゲスト仮想マシン(vm)をディスパッチするためのシステム、方法およびコンピュータ・プログラム製品
US11301142B2 (en) Non-blocking flow control in multi-processing-entity systems
CN110659115A (zh) 具有硬件辅助任务调度的多线程处理器核
US11868306B2 (en) Processing-in-memory concurrent processing system and method
KR20130112909A (ko) 권한 레벨에 관계없는 세그먼트 레지스터 판독 및 기입용 시스템, 장치, 및 방법
US11481250B2 (en) Cooperative workgroup scheduling and context prefetching based on predicted modification of signal values
US20230134657A1 (en) User-level interrupts in virtual machines
US11886910B2 (en) Dynamic prioritization of system-on-chip interconnect traffic using information from an operating system and hardware
KR20210077588A (ko) 분산 환경에서 딥 러닝 트레이닝을 최적화하기 위한 런타임에서의 서비스 클래스 속성의 초기화 및 관리
US20240004808A1 (en) Optimized prioritization of memory accesses
US20220147393A1 (en) User timer directly programmed by application
CN115934584A (zh) 设备私有存储器中的存储器访问***

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140507

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140801

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140929

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141017

R150 Certificate of patent or registration of utility model

Ref document number: 5636109

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees