JP5058970B2 - シーケンサー・アドレス管理 - Google Patents

シーケンサー・アドレス管理 Download PDF

Info

Publication number
JP5058970B2
JP5058970B2 JP2008505619A JP2008505619A JP5058970B2 JP 5058970 B2 JP5058970 B2 JP 5058970B2 JP 2008505619 A JP2008505619 A JP 2008505619A JP 2008505619 A JP2008505619 A JP 2008505619A JP 5058970 B2 JP5058970 B2 JP 5058970B2
Authority
JP
Japan
Prior art keywords
sequencer
physical
logical
mapping
thread
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
JP2008505619A
Other languages
English (en)
Other versions
JP2008536224A (ja
Inventor
ワン,ホン
チンヤ,ゴーサム
ハンキンス,リチャード
ラクヴィック,ライアン
シェン,ジョン
カウシク,シヴ
ビッグビー,ブライアント
ハマーランド,パー
ゾウ,シアン
ブラント,ジェイソン
セティ,プラシャント
リード,ジョン
ポールセン,デイヴィッド
ロジャーズ,スコット
カーミーン,ダグラス
パテル,バイジュ
シャー,サンジヴ
ヘルド,ジェイムズ
アベル,ジェイムズ
Original Assignee
インテル コーポレイション
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 インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2008536224A publication Critical patent/JP2008536224A/ja
Application granted granted Critical
Publication of JP5058970B2 publication Critical patent/JP5058970B2/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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Programmable Controllers (AREA)

Description

本開示は概括的には情報処理システムに、より特定的にはマルチシーケンサー・システムにおける論理シーケンサー・アドレス変換および管理に関する。
マイクロプロセッサを含む情報処理システムのような、情報処理システムのパフォーマンスを上げるため、ハードウェア技術およびソフトウェア技術の両方が用いられてきた。ハードウェア側では、マイクロプロセッサのパフォーマンスを改善するためのマイクロプロセッサ設計法は、増加したクロック速度、パイプライン処理、分岐予測、スーパースカラー実行、アウト・オブ・オーダ実行およびキャッシュを含んできた。多くのそのようなアプローチはトランジスタ数の増大につながり、場合によってはパフォーマンス向上の割合よりも大きな割合でのトランジスタ数の増加をもたらしていた。
厳密に追加的なトランジスタを通じてパフォーマンス向上を図るのではない、他のパフォーマンス向上は、ソフトウェア技術に関わるものである。プロセッサのパフォーマンスを改善するために用いられてきたソフトウェア・アプローチの一つは、「マルチスレッド化(multithreading)」として知られている。ソフトウェア・マルチスレッド化においては、命令ストリームは、並列に実行できる複数の命令ストリームに分割される。あるいはまた、複数の独立したソフトウェア・ストリームが並列に実行されうる。
タイムスライス・マルチスレッドまたは時間多重(time-multiplex)(「TMUX」)マルチスレッドとして知られるアプローチでは、単一のプロセッサが、決まった時間期間後にスレッドを切り換える。もう一つのアプローチでは、単一のプロセッサが、長い遅延のキャッシュ・ミス(a long latency cache miss)といったトリガー・イベントの生起に際してスレッドを切り換える。イベント時切り換えマルチスレッド(switch-on-event multithreading)(「SoEMT」)として知られるこの後者のアプローチでは、ある所与の時間には高々一つのスレッドしかアクティブでない。
マルチスレッドはますますハードウェアでサポートされつつある。たとえば、あるアプローチでは、チップ・マルチプロセッサ(chip multiprocessor)(「CMP」)システムのようなマルチプロセッサ・システムにおける各プロセッサは、同時並行して、複数のソフトウェア・スレッドの一つに対して作用しうる。同時マルチスレッド(simultaneous multithreading)(「SMT」)と称されるもう一つのアプローチでは、単一の物理的なプロセッサが、オペレーティング・システムやユーザー・プログラムには複数の論理的なプロセッサとして見えるようにされる。SMTについては、複数のソフトウェア・スレッドが、切り換えなしに、単一のプロセッサ上で並行してアクティブであり実行されることができる。すなわち、各論理的なプロセッサがアーキテクチャ状態の完全なセットを維持するが、当該物理的なプロセッサの他の多くの資源、たとえばキャッシュ、実行ユニット、分岐予測器、制御論理およびバスは共有される。SMTについては、こうして、複数のソフトウェア・スレッドからの命令が同時並行して各論理的なプロセッサ上で実行される。
SMPおよび/またはCMPシステムのような複数ソフトウェア・スレッドの同時並行的な実行をサポートするシステムのために、スレッド実行資源上でのソフトウェア・スレッドのスケジューリングおよび実行を、オペレーティング・システム・アプリケーションが制御しうる。その代わりに、ユーザーレベルの命令を介してユーザーがソフトウェア・スレッドを明示的に制御できるようにするシステムについては、そのような命令はスレッド実行資源の名前またはアドレスを指示しうる。
本発明の諸実施形態は図面を参照しつつ理解されうる。図面では、同様の要素は同様の数字で示される。図面は限定することを意図されてはおらず、マルチシーケンサー・システムにおける論理シーケンサー・アドレスの物理シーケンサーへのマッピングを管理および変換する装置、システムおよび方法の選ばれた実施形態を解説するために与えられるものである。
[発明を実施するための最良の形態]
以下の議論は、ユーザーレベルのシーケンサー算術をサポートするマルチシーケンサー・システムのために論理シーケンサー・アドレスのマッピングを管理する方法、システムおよび機構の選ばれた実施形態を記載する。ここに記載される機構および方法の実施形態はシングルコア・マルチスレッド・システムでもマルチコア・マルチスレッド・システムでも利用されうる。
以下の記述では、本発明の実施形態のより完全なる理解を提供するために、シーケンサー割り当て法、マルチスレッド環境、システム構成、マルチシーケンサー・システムにおけるシーケンサーの数およびトポロジー、マイクロアーキテクチャ構造および命令命名体系ならびにパラメータといった数多くの個別的な詳細が述べられている。しかしながら、そうした個別的な詳細なしでも本発明が実施されうることは当業者によって理解されるであろう。さらに、いくつかのよく知られた構造、回路などは、本発明を無用に埋没させるのを避けるために詳しく示していない。
ここでの用法では、スレッド・ユニットは、ここでは交換可能に「シーケンサー」とも称されるが、はっきりしたスレッド実行資源であり、スレッドを実行できるいかなる物理的または論理的ユニットであってもよい。所与のスレッドについて実行されるべき次の命令を決定するために次命令ポインタ論理を含んでいてもよい。シーケンサーは、論理的なスレッド・ユニットであっても、物理的なスレッド・ユニットであってもよい。論理的なスレッド・ユニットと物理的なスレッド・ユニットとの間のそのような区別は、図1との関連ですぐ次に論じる。
図1は、ユーザーレベルのスレッド制御をサポートするマルチシーケンサー・システムの実施形態110、115、150、170の選ばれた特徴を示すブロック図である。図1は、各シーケンサーが論理プロセッサで、他の論理プロセッサでの他のスレッドの実行と同時並行的にスレッドを実行しうるSMTマルチシーケンサー・マルチスレッド・システム110の選ばれた特徴を示している。図1はまた、時間多重型の切り換え機構のようなイベント時切り換え(SoeMT)機構を介して複数論理シーケンサーをサポートするマルチシーケンサー・システム115の少なくとも一つの実施形態をも示している。そのようなシステム115では、論理プロセッサのそれぞれが代わる代わる自分のスレッドを実行し、一時には一つのスレッドのみが実行される。
図1はまた、マルチコア・マルチスレッド・システム150、170の選ばれた特徴をも示している。マルチコア・マルチスレッド・システムのための物理的なコアは単一シーケンサー・コア(たとえばシステム150参照)でもよいし、マルチシーケンサー・コアでもよい(たとえばシステム170参照)。そのようなマルチコア・マルチスレッドの実施形態はのちに論じることにして、すぐ次ではシングルコア・マルチシーケンサー・システム110、115について論じる。
SMTシステム110では、単一の物理的プロセッサ104が、ここではTC1ないしTCn(図示せず)と称される複数のスレッド・コンテキスト(thread context)として見えるようにされる。n個のスレッド・コンテキストのそれぞれは事実上はシーケンサーである。これらのスレッド・コンテキストの少なくとも一部(たとえばn個のうちm個)がオペレーティング・システムおよび/またはユーザー・プログラムから見えるようにされるとき、これらのスレッド・コンテキストは時に論理プロセッサ(図示せず)と称され、ここではLP1ないしLPmと称される。TC1ないしTCnの各スレッド・コンテキストは、それぞれアーキテクチャ状態(architecture state)の集合AS1〜ASnを維持する。アーキテクチャ状態は、少なくとも一つの実施形態については、データ・レジスタ、セグメント・レジスタ、制御レジスタ、デバッグ・レジスタおよびモデル固有レジスタのほとんどを含む。スレッド・コンテキストTC1〜TCnは、キャッシュ、実行ユニット、分岐予測器、制御論理およびバスといった物理的プロセッサ104のほとんどの他の資源を供給する。
そのような特徴を共有してもいいのだが、マルチスレッド・システム110における各スレッド・コンテキストは独立して次命令アドレスを生成できる(そしてたとえば、命令キャッシュ、実行命令キャッシュまたはトレース・キャッシュからのフェッチを実行できる)。こうして、たとえ複数の論理シーケンサーが単独の物理的なフェッチ/デコード・ユニット122で実装されるとしても、プロセッサ104は、各スレッド・コンテキストのために命令をフェッチするための論理的に独立な次命令ポインタおよびフェッチ論理120を含む。SMT実施形態については、用語「シーケンサー」は、少なくとも、スレッド・コンテキストのための次命令ポインタおよびフェッチ論理120を、そのスレッド・コンテキストのための関連付けられたアーキテクチャ状態ASの少なくともいくつかとともに包含する。SMTシステム110の諸シーケンサーが対称的である必要はないことを注意しておくべきであろう。たとえば、二つの同じ物理的プロセッサの二つのSMTシーケンサーは、それぞれが維持しているアーキテクチャ状態情報の量において異なりうる。
こうして、少なくとも一つの実施形態について、マルチシーケンサー・システム110は、同時並行マルチスレッドをサポートするシングルコア・プロセッサ104である。そのような実施形態については、すべてのスレッド命令が同じ物理的なプロセッサ・コア104によって実行されるものの、各シーケンサーはその独自の命令次命令ポインタおよびフェッチ論理と、その独自のアーキテクチャ状態情報とを有する論理プロセッサである。そのような実施形態については、単一のプロセッサ・コア104の実行資源が同時並行して実行されるスレッドの間で共有されてもよいが、論理プロセッサは、アーキテクチャ状態についてのその独自のバージョンを維持する。
図1はまた、マルチスレッド・コードを実行できるマルチシーケンサー・システムの代替的な実施形態115を示している。実施形態115はイベント時切り換えマルチスレッド(「SOEMT」)実施形態とラベル付けされている。そのような実施形態115については、各シーケンサーは、各シーケンサーが自分のアーキテクチャ状態情報および独自の命令次命令ポインタを有する論理プロセッサであるという点で、先の実施形態110のシーケンサーと同様である。しかしながら、システム115は、それぞれのシーケンサーが他のシーケンサーと、物理的なプロセッサ・コア104における単一のフェッチ/デコード・ユニット122内の同じ物理的なフェッチ論理120を共有しているという点で上で論じたシステム110と異なっている。フェッチ論理120を、システム115の種々のシーケンサーのためにフェッチするために切り換えるのは、多様なイベント時切り換えポリシーに基づいてでありうる。イベント時切り換えのトリガーは、時間多重(TMUX)のような時間またはマシン・サイクルの特定の量の経過でありうる。他の実施形態については、SOEMTトリガーは、キャッシュ・ミス・イベント、ページ・フォールト、長い遅延の命令(long-latency instruction)などといった他のイベントであってもよい。
図1はまた、マルチコア・マルチスレッド・システムの少なくとも二つの実施形態150、170をも示している。図1に示したマルチコア・システム150、170の少なくともいくつかの実施形態については、システムはプロセッサ104を構成ブロックとして使う。シーケンサーのそれぞれは、単一のチップ・パッケージ160、180に複数のコア1041〜104n、1041〜104mが載っているプロセッサ・コア104でありうる。図1に示されるシステム150については、各コア104i(i=0〜n)は単一スレッドのシーケンサーでありうる。図1に示されるシステム170については、各コア104j(j=1〜m)はマルチシーケンサー・プロセッサ・コアでありうる。
チップ・パッケージ160、180は、図1では、マルチコア・システム150、170で図示される単一チップの実施形態が単に例示的なものであることを示すため、破線で表されている。他の実施形態については、マルチコア・システムのプロセッサ・コアは別々のチップに載っていてもよいし、あるいはSOEMTマルチシーケンサー・システムとして編成されていてもよい。
図1に示される第一のマルチコア・マルチスレッド・システム150は、それぞれが異なるスレッドを実行できる二つ以上の別個の物理的プロセッサ1041〜104nを含んでいてもよく、異なるスレッドの少なくとも一部分の実行が同時に進行しうる。1041ないし104nの各プロセッサは、そのそれぞれのスレッドについての命令情報をフェッチするために物理的に独立なフェッチ・ユニット122を含む。各プロセッサ1041〜104nが単一のスレッドを実行する実施形態では、フェッチ/デコード・ユニット122は単一の次命令ポインタおよびフェッチ論理120を実装する。
図1はまた、複数のSMTシステム110を含むマルチコア・マルチスレッド・システム170をも示している。そのような実施形態170については、各プロセッサ1041〜104mは複数のスレッド・コンテキストをサポートする。たとえば、各プロセッサ1041〜104mは、k個のシーケンサーをサポートするSMTプロセッサで、システム170は事実上、m×k個のシーケンサーを実装する。さらに、システム170のためのフェッチ/デコード・ユニット122は、サポートされる各スレッド・コンテキストについて相異なる次命令ポインタおよびフェッチ論理120を実装する。
図示の簡単のため、以下の議論はマルチコア・システム150の実施形態に焦点を当てる。しかしながら、下に記述される機構はマルチコア・マルチシーケンサー・システムでもシングルコア・マルチシーケンサー・システムでも実行されうるという意味で、この焦点は限定的なものと解釈すべきではない。また、シングルコア・システムあるいはマルチコア・システムのいずれも、単一シーケンサー・コアによってもマルチシーケンサー・コアによっても実装されうる。各マルチシーケンサー・コアについて、SMTおよび/またはSoeMTを含め、一つまたは複数のマルチスレッド技術が利用されうる。図1に示されたシステム110、115、150、170は、メモリ・システム、実行ユニットなどといった、図1には示されていない追加的な特徴を含んでいてもよいことは理解されるであろう。
図1に示されているシステム実施形態110、115、150、170について、各シーケンサー104は一意的な識別子と関連付けられうる(図3との関連でのちに論じる)。システム110、150のさまざまな実施形態は全シーケンサーの異なる数Nを含んでいてもよい。
図1に示されているシステムの実施形態110、115、150、170はそれぞれ、シーケンサー間の信号伝達をサポートしうる。ここでの用法では、「シーケンサー算術(sequencer arithmetic)」の用語は、二つのシーケンサー間でのサービスのためのシーケンサー間信号伝達を指すのに使われる。シーケンサー算術のためのアーキテクチャ上のサポートは、シーケンサー間の制御および状態の転送のユーザーによる直接操作を許容するために一つまたは複数の命令が提供されるような命令セット・アーキテクチャへの拡張を含みうる。ユーザーレベルの命令は、論理シーケンサー・アドレスをパラメータとして含むシーケンサー算術命令または他の何らかの種類の命令である場合、「シーケンサー認識(sequencer aware)」であると言われる。前記パラメータは、命令オペランドとしてエンコードされることもでき、および/または命令実行に際して暗黙的に参照されることができる。そのような命令は、別のシーケンサーへの信号伝達(ここでは「SXFR」命令すなわちシュレッド転送[shred transfer]命令と称される)を提供するか、そのような信号を監視するようクライアント・シーケンサーを設定すること(ここではシュレッド監視「SEMONITOR」命令と称される)を提供するかするシーケンサー算術命令を含みうる。
シーケンサー認識命令はまた、シーケンサー認識状態保存および復元命令といった、論理シーケンサー・アドレスをパラメータとして含むその他の命令をも含みうる。そのような状態保存命令の実行に際しては、第一のシーケンサーが第二のシーケンサーのアーキテクチャ状態のスナップショット・コピーを生成できる。シーケンサー認識復元命令は、保存アーキテクチャ状態が指定されたシーケンサーにロードされることを指示しうる。
各シーケンサー認識命令はまた、任意的に、二つ以上の論理シーケンサー・アドレスをパラメータとして含んでいてもよい。たとえば、シーケンサー認識命令は、パラメータとして、複数の論理シーケンサー・アドレスの総合を含んでいてもよい。そのような手法は、一つのシーケンサーから複数の他のシーケンサーへのシーケンサー間信号のマルチキャストまたはブロードキャストのために利用されてもよい。以下の議論を簡単にするため、下に述べる例は、特に断りがなければ、ユニキャストの場合を指しうる:第一のシーケンサーが、単一の他の論理シーケンサー・アドレスを指定するシーケンサー認識命令を実行するのである。そのような手法は、記述の便宜および例示の目的のみのためのもので、限定的であると解釈すべきではない。当業者は、ここで論じられる機構の実施形態が、ブロードキャストおよびマルチキャストのシーケンサー認識命令であってもよいことを理解するであろう。
記述の便宜のため、下記の議論では、例示的なシーケンサー間信号伝達命令のための命令ニーモニックとしてSXFRが使われることがある。同様に、記述の便宜のため、限定することなしに、シーケンサー認識アーキテクチャ状態保存命令およびシーケンサー認識アーキテクチャ状態復元命令のため、それぞれSSAVE、SRSTORが命令ニーモニックとして使われる。当業者は、付属の特許請求の範囲から外れることなく、信号伝達命令ならびにコンテキスト保存および復元命令およびその他のシーケンス認識命令の数多くの他の変形およびニーモニックが利用されうることを理解するであろう。
したがって、ここに記載される方法、機構およびシステムの実施形態のために、シーケンサー算術動作のアーキテクチャのユーザーに見える特徴は、少なくとも、ユーザーが、シーケンサー間でのサービスのための信号を引き起こすことを許容する正準的な命令セットである。そのような信号伝達は、パラメータとして結果的な制御移転が実行されるシーケンサー104の命令または論理アドレスを含んでいる命令によってトリガーされうる。ここでの用法では、ユーザーレベルのスレッド制御移転のための信号を生成するシーケンサーはソース・シーケンサーと称され、生成された信号の受け取り側は宛先シーケンサーと称される。
ここで論じられるシステムの少なくともいくつかの実施形態によって組み込まれうる基本的概念の議論のために、ここで暫時図2を参照する。図2は、マルチシーケンサー・マルチスレッド・システムでの並列プログラミング手法の図的な表現を示すブロック図である。
並列プログラミングと称されるアプローチにおいては、共有メモリ・マルチプロセシングのパラダイムが使用されうる。このアプローチによれば、アプリケーション・プログラマは、時に「アプリケーション」または「プロセス」と称されるソフトウェア・プログラムを、ソフトウェア・プログラムのための並列を表現するために、同時並行して走らされる複数のタスクに分割しうる。同じソフトウェア・プログラム(「プロセス」)のすべてのスレッドは、メモリ・アドレス空間の共通の論理的なビューを共有する。
図2は、オペレーティング・システム240に見えるプロセス200、220を示している。これらのプロセス200、220は、たとえばワード・プロセッシング・プログラムおよび電子メール管理プログラムといった、異なるソフトウェア・アプリケーション・プログラムであってもよい。普通、各プロセスは異なるアドレス空間内で動作する。
オペレーティング・システム(「OS」)240は普通、図2に示されるプロセス220のようなプロセスについてユーザー生成のタスクを管理することを担う。したがって、オペレーティング・システム240は、プロセス220に関連付けられたユーザー定義のタスクのそれぞれについて相異なるスレッド225、226を生成することができ、スレッド225、226をスレッド実行資源にマッピングすることができる。
したがって、図2は、プロセス220に関連付けられ、プロセス220と同じ仮想メモリ・アドレス空間を共有するユーザー・スレッド225、226を示している。このように、図2に示されるプロセス220のためのスレッド225、226は、相異なるユーザー定義タスクを表している。そのようなスレッドは、OS240によって生成され、管理され、スケジューリングされることを表すため、ここでは時に「OSスレッド」と称される。代替的に、そのようなスレッドはまた、一つのユーザー・タスクを表すOSが管理するスレッドという概念を指して、交換可能的に「ユーザー・スレッド」または「ユーザー・タスク」と称されうる。
ユーザー・スレッド225、226は、OS240によって生成され、管理され、スケジューリングされうる。ユーザー・スレッド225、226のスケジューリングに関し、OS240は、実行のために該スレッド225、226をスケジューリングし、各スレッド225、226を一つまたは複数の論理シーケンサー・アドレスにマッピングするスケジューラを含みうる。したがって、図2は、各ユーザー・スレッド225、226を単一の論理シーケンサー・アドレスにマッピングするのを担うのがオペレーティング・システム240である伝統的なスレッド方式を示している。普通、論理シーケンサー・アドレスは、たとえば一つのはっきりした次命令ポインタを含みうる単一のシーケンサーに対応する。
しかしながら、図2はまた、マルチスレッドへのより最近のアプローチをも示している。図2は、図2に示されるスレッド225のような単一のOSスレッドが複数のユーザーレベル・スレッド280および282に関連付けられてもよいことを示している。これらのユーザーレベル・スレッドを生成し、スケジューリングし、あるいは他の仕方で管理するのはオペレーティング・システム240でなくてもよい。そのようなスレッドは、OSスレッドから区別するために「シュレッド(shred)」と称されうる。
シュレッド280、282はOS240のスケジューラには見えなくてもよい。したがって、OS240は通例、関連付けられたOSスレッド(シュレッド280および282に関連付けられたOSスレッド225のような)が、いつどのようにして、割り当てられた論理シーケンサー・アドレス上で走るようシュレッドをスケジューリングするかを管理しない。OSスレッド225はそれ自身で、通例、そのシュレッド280、282の一つをいつどのようにして走らせるかをスケジューリングすることを担う。図2にはそのようなシュレッド280、282が二つ示されているが、単一のOSスレッドにそのようなシュレッドがいくつ関連付けられていてもよい。
少なくとも一つの実施形態については、一つまたは複数のシーケンサー認識命令がプログラマによって、あるOSスレッドに属しているシュレッド中にコーディングされうる。そのような命令は、OSスレッドの動作中に実行されると、OS240のスケジューリング論理の介入なしに、シュレッドについての生成、制御移転、シーケンサー算術、コンテキスト保存、コンテキスト復元またはその他の動作を引き起こしうる。
図3は、ここで「シーケンサー」と称される複数のスレッド実行資源320、322、324、326を含むマルチスレッド・システム300の少なくとも一つの実施形態を示すブロック図である。シーケンサー320、322、324、326は、いかなる種類のスレッド実行資源でもよく、それにはほんのいくつか挙げれば、単一シーケンサー・コア、SMT論理プロセッサ(たとえば図1との関連での上記のTC1ないしTCnの議論を参照)またはSOEMTコア(たとえば図1の115参照)が含まれる。そのようなすべての例は、一つまたは複数のスレッドの実行をサポートするハードウェア特徴を表現する。よって、SMT論理プロセッサを含め、そのようないかなるスレッド実行資源もここでは「物理シーケンサー」と称される。
図3は、四つの物理シーケンサー320、322、324、326を示している。シーケンサー320、322、324、326のそれぞれは、一意的なシーケンサー識別子(SEQ0、SEQ1、SEQ2、SEQ3)が関連付けられている。当業者は、図3に四つの物理シーケンサー320〜326が示されているのはあくまでも例示のためであって、限定するものと解釈すべきでないことを認識するであろう。ここに記載される技術を利用するシステムは、命令の同時並行的な実行ができる物理シーケンサーをいくつ含んでいてもよい。
図3はさらに、ユーザー・プログラム340からの一つまたは複数の命令345がユーザーレベルのシーケンサー認識動作を提供することを示している。シーケンサー認識命令345は、シーケンサーを同定するための、L_Seq0、L_Seq1、L_Seq2およびL_Seq3のような論理シーケンサー・アドレスを含む。以下の議論の残りでは、用語「論理シーケンサー・アドレス」および「仮想シーケンサー・アドレス」は交換可能に使用されることがある。
少なくとも一つの実施形態については、ユーザー・プログラム340の命令345は、OSが管理するスレッドによって実行されると想定される。したがって、プログラム340は、ここでは交換可能的にスレッドと称されうる。そのような命令345に反応して(すなわち、命令345が実行されたときに)、マッピング・マネージャ302は、命令345で指定されている論理シーケンサー・アドレスによって同定されているのがどの物理シーケンサー320〜326であるかを決定するための探索を実行しうる。マッピング・マネージャ302の少なくとも一つの実施形態については、この探索は、ハードウェアまたはファームウェアによって、あるいは適切な特権レベルでソフトウェア・ハンドラにフォールトすることによって実装され、あるいは支援されうる。
図3は、論理シーケンサー・アドレスのいくぶん単純な仮想化を提供するシステム300の実施形態を示している。すなわち、アプリケーション・プログラマに利用可能な論理シーケンサー・アドレスの数は、物理シーケンサー320〜326の限られた数に静的に束縛される。よって、図3は、物理シーケンサーとアプリケーション・プログラム中で利用されうる論理シーケンサー・アドレスとの間の1:1のマッピングを示している。
こうして、マッピング・マネージャ302は、物理シーケンサー320〜326と一つまたは複数のスレッド340によって使用される論理シーケンサー・アドレスとの間のマッピングを管理しうる。少なくとも一つの実施形態については、マッピング・マネージャ302はオペレーティング・システム・プログラムまたは他のソフトウェア・アプリケーションである。そのような実施形態については、マッピング・マネージャ302は、特権レベルの動作でマッピングを扱うことができる。たとえば、実物のシーケンサーと論理シーケンサー・アドレスとの間のマッピングの管理は、OSカーネルまたはドライバによる特権動作として扱われてもよい。
しかしながら、マッピング・マネージャ302の代替的な実施形態は、マッピングをさまざまな抽象化レベルで管理しうる。たとえば、マッピング・マネージャ302は、ハードウェアおよび/またはファームウェアによるマイクロアーキテクチャ・レベルの名前の変更によってサポートされうる、アーキテクチャ探索表であってもよい。少なくとも一つの他の実施形態について、たとえば、マッピング・マネージャ302は、仮想機械またはハイパーバイザ(hypervisor)における仮想化管理ソフトウェア機構であってもよい。あるいは、少なくとも一つの他の実施形態については、マッピング・マネージャ302は、ユーザー・スレッド(たとえば225のような)またはプロセス(たとえば220のような)の一部としてマッピング・マネージャ機能性を実行するユーザーレベルの非特権ソフトウェア・コードであってもよい。
ここで図16を参照する。図16は、ユーザーレベルのシーケンサー認識動作をサポートするマルチシーケンサー・システム1600のもう一つの実施形態のためのある種のアーキテクチャ上の特徴を示すブロック図である。図16は、システム1600がシーケンサー1620、1640を含むことを示している。図16に示されているシーケンサーの数および種類は限定するものと解釈すべきではない。二種類のシーケンサー1620、1640しか図示されていないが、システム1600の代替的な実施形態は追加的な種類のシーケンサーを含んでいてもよい。さらに、図16に示されているシーケンサーの各種類1620、1640の数は、システム1600の代替的な諸実施形態についての各シーケンサー種類の数についての上限や下限として限定するものと解釈すべきではない。各シーケンサー種類1620、1640のより少数およびより多数のいずれも利用可能である。
図16は、システムが(1+s)×t個のシーケンサーを含んでいることを示している。図16は、第一のシーケンサー種類t(1620)の合計と第二のシーケンサー種類s(1640)の合計との間のt対(s×t)の拘束関係を示している(ここではt=4、s=3)が、そのような図示は限定するものと解釈すべきではない。代替的な実施形態については、tとsはt>0かつs≧0となるようないかなる数にも変えることができる。
第一のシーケンサー種類1620は図16ではTとマークされ、ここでは「Tシーケンサー」と称するが、これはOSによって直接管理されることができ、OSはTシーケンサー上で走るようOSスレッドをスケジューリングしうる。第二のシーケンサー種類1640は図16ではSとマークされ、ここでは「Sシーケンサー」と称するが、これはOSによって直接は管理されない。その代わり、Sシーケンサー1640は、スレッド中のユーザー・コードによって直接管理されうる――そのスレッドに関連付けられた諸シュレッドを走らせるためにそのスレッドによって直接、スケジューリングできるのである。
アーキテクチャ的には、OSが管理する各スレッドは、一つのはっきりしたマルチシーケンサー・アンサンブル1650(ここでは「メタプロセッサ」と称される)に対応しうる。各メタプロセッサ1650は一つの論理的Tシーケンサーとs個の論理的Sシーケンサーを含みうる。図16は、t個のメタプロセッサを示しており、ここではt=4である。図示されたメタプロセッサのそれぞれは、s個のSシーケンサーを含んでおり、ここではs=3である。したがって、メタプロセッサ1650のそれぞれは、s+1個の全シーケンサー(すなわち、s個のSシーケンサーと一つのTシーケンサー)を含みうる。スレッドをメタプロセッサ1650にスケジューリングするのはOSが担いうるが、そのスレッドはさらに、メタプロセッサ内の(1+s)個のシーケンサー上で同時並行的に複数のシュレッドをスケジューリングし、走らせることができる。図16は、システムのためのメタプロセッサ1650の数を制限するものと解釈するべきではなく、各メタプロセッサ1650に関連付けられたSシーケンサー1640の数を制限するものでもない。tおよびsの個別的な値が図16には示されているが、あくまでも例示のためのものである。
図3および図16に示された実施形態300、1600のようなユーザーレベルのシーケンサー認識動作へのサポートを提供するマルチシーケンサー・システムについては、シーケンサーとは、事実上、アーキテクチャ資源の一つの相異なる形である。レジスタ資源、メモリ資源およびその他の既知の共通アーキテクチャ資源と同様、シーケンサー資源は相異なるアーキテクチャ上の名前空間を有し、仮想化管理の対象となりうる。
アーキテクチャ的には、シーケンサー資源は、限定することなく、少なくとも三つの構成要素を含みうる:参照名、シーケンサー状態コンテキストおよび機能記述子である。機能記述子は、スケジューリング制約条件および要件といった、シーケンサーについての属性情報ならびにそれがTシーケンサーかSシーケンサーかといったその他の関連属性を含みうる。アーキテクチャ的には、(1+s)個のシーケンサーのメタプロセッサ1650内の任意の二つのシーケンサーについて、それぞれのシーケンサー資源は参照名において異なっており、コンテキスト組成および/または機能記述子情報に関しても異なっていてもよい。たとえば、あるシーケンサーのアーキテクチャ状態の集合が他のシーケンサーのものとは異なっていることも可能である。
所与のメタプロセッサ1650について、SXFR、SSAVEおよびSRTORといった上述したシーケンサー認識命令は、(1+s)個の論理シーケンサーすべてについて定義されうる。すなわち、該命令は、オペランドとしてエンコードされた論理シーケンサー・アドレスの一つまたは複数を有していてもよいし、あるいは命令実行の間に論理シーケンサー・アドレスの一つまたは複数を他の仕方で参照してもよい。
アーキテクチャ的には、メタプロセッサ1650中の一つのTシーケンサー1620とs個のSシーケンサー1640の一見静的な束縛は論理的(あるいは時に等価な意味で「仮想的」と呼ばれる)なものでしかない。すなわち、所与のメタプロセッサ中の論理シーケンサー・アドレスは静的に決定され、たとえば0からsの範囲となりうる。しかしながら、代替的な実施形態を論じる目的で、図16が示すシステム1600はK個の物理シーケンサーSeq0〜Seqkを含む実行資源1680を有していることがわかる。実行資源1680のシーケンサーは、それぞれ、関連付けられたキャッシュ階層1692に結合されうる。図16では別個に図示されているが、当業者は、シーケンサーSeq0〜Seqkについてのキャッシュ階層1692がオフチップ・キャッシュとともに、あるいはオフチップ・キャッシュの代わりにオンチップ・キャッシュを含んでいてもよいことを理解するであろう。図16は、シーケンサーSeq0〜Seqkのそれぞれが、すべてのシーケンサーによって共有されている共有メモリへのアクセスを有しうることをも示している。
K>0、より普通にはK≧tの場合、(1+s)×t個の論理シーケンサーからK個の物理シーケンサーへのマッピングは、ランタイムの間に動的に変更されうる。結果として、そのような実施形態のためには、一つまたは複数のメタプロセッサ1650のための一つまたは複数の論理Tシーケンサー1620および関連付けられた一つまたは複数の他のSシーケンサー1640に対応する物理シーケンサーの厳密なグループ化は、ランタイムの間に動的に変更されうる。
論理シーケンサー・アドレスの物理シーケンサーへの動的なマッピングは「仮想化」とも称されうる。論理シーケンサー・アドレスの仮想化は、実行のために複数のシーケンサーを必要としうるスレッドが、動的な物理シーケンサー割り当てによって実行されることを許容する技術である。論理シーケンサー・アドレスの仮想化とは、スレッドから見た論理シーケンサー・アドレスを、物理的なマルチシーケンサー・プロセッサ実装によって見た物理シーケンサーの物理シーケンサー識別子から分離させる抽象化のことをいう。この分離のため、アプリケーション・プログラマが意識しなければならないのは、論理シーケンサー・アドレスのみである。
図3との関連で上で論じた実施形態300と同様、図16に示されたシステム1600のためのシーケンサー認識命令は、宛先シーケンサーのための論理シーケンサー・アドレスを指定しうる。しかしながら、システム1600の少なくとも一つの実施形態については、論理シーケンサー・アドレスは、物理シーケンサーに、静的にマッピングされるよりは、動的にマッピングされる。論理シーケンサー・アドレスの物理シーケンサーへの動的なマッピングは、マッピング・マネージャ1670によって管理されうる。少なくとも一つの実施形態については、マッピング・マネージャ1670は、図3との関連で上で論じたマッピング・マネージャ302の線に沿っていてもよい。実行の間、ある論理シーケンサー・アドレスについてのマッピングは、ある物理シーケンサーから別の物理シーケンサーへと変わってもいいし、変わらなくてもいい。
マッピング・マネージャ1670は、論理シーケンサー・アドレスの物理シーケンサーへの動的マッピングに加えて、システム1600のシーケンサー資源のさまざまな異なる側面を管理しうる。マッピング・マネージャ1670は、追加的に、メタプロセッサ1650内のTシーケンサー1620と一つまたは複数のSシーケンサー1640との間の束縛を管理しうる。さらに、マッピング・マネージャはシーケンサー状態コンテキストおよびシーケンサー機能記述子を管理しうる。
シーケンサー認識命令をサポートするマルチシーケンサー・システムについて、論理シーケンサー・アドレス空間の大きさ(すなわち、シーケンサー認識命令において使用できる相異なる論理シーケンサー・アドレスの総数)は、アーキテクチャ的に、所与のシステムについて存在する物理シーケンサーの数とは独立に定義されてもよい。たとえば、当該マルチシーケンサー・システムのための実物のシーケンサー数がもっと少ないビット数で表現できるかどうかに関わりなく、論理シーケンサー・アドレスを表現するのに32ビット値を使ってもよい。そのような例示的な実施形態については、当該システムが物理シーケンサーをいくつ含んでいるかに関わりなく、k=32としてkビットを使って2k=232個の論理シーケンサー・アドレスを表現するために使うことができる。
図16に開示されている1600のようなマルチシーケンサー・システム・アーキテクチャを記述するとき、一つのTシーケンサーおよび(2k−1)個のSシーケンサーを有する一つのメタプロセッサ(たとえば図16の1650のような)上で、一つのスレッド(図2のたとえば225または226のような)が参照可能な総数2k個の論理シーケンサー・アドレスを表すのに「kビットのシーケンサー・アドレッシング可能性」という概念を使うことが便利なことがある。逆に、(1+s)個のシーケンサー1620、1640のメタプロセッサ1650は、log(1+s)ビット・アドレッシング可能なシーケンサー空間をもつと称されうる。したがって、図16は、各メタプロセッサ1650が2ビット・アドレッシング可能な論理シーケンサー・アドレス空間をもつと言われるマルチシーケンサー・システム1600を示している。
図4および図5は、物理シーケンサーの、ユーザーレベルのシーケンサー認識命令で使われる論理シーケンサー・アドレスへの動的マッピングを提供するマルチスレッド・マルチシーケンサー・システムの少なくとも二つの代替実施形態、それぞれ400および500を示している。図4および図5の同様の要素は同様の参照符号をもつ。
論理シーケンサーから物理シーケンサーへの動的マッピングをサポートするシステム400、500について、アプリケーション・プログラマは、実行中、アプリケーションを走らせるために、いつ、どの物理シーケンサーが利用可能になるかを知る必要はない。プログラマは、アプリケーション・プログラムでは単に論理シーケンサー・アドレスを使えばよい。上で説明したように、マルチシーケンサー・システム400、500のプログラムのビューが、システム400、500の物理シーケンサー420〜426の数(N)を実際には超えている数(M)の論理シーケンサー・アドレス(Virt. 0〜Virt. M)を含むことを許容することが望ましいことがありうる。そのような実施形態については、マッピング・マネージャ402、502が、M個の論理シーケンサー・アドレスをM>NのN個の物理シーケンサー識別子にマッピングすることを担いうる。M=NまたはM<Nの他の実施形態では、マッピング・マネージャ402、502は図3に描かれた実施形態について上記したのと同様または可能性としてはより単純なマッピングを実行しうる。
論理シーケンサー・アドレスの物理シーケンサーへの動的マッピングは、マッピング・マネージャ402、502によって、「舞台裏で」、アプリケーション・プログラムには透明な仕方で扱われる。図4および図5との関連で使われるところでは、「物理シーケンサー」は、所与の物理的なマルチシーケンサー・ハードウェア・システムにおいて実装されている実際のシーケンサー(たとえば420〜426参照)である。
図4および図5は、システム400、500が、実行資源490に結合された記憶媒体460を含みうることを示している。記憶媒体460は、階層構造のさまざまなレベルを有するメモリ・サブシステムであってもよい。それには、これに限られないが、さまざまなレベルのキャッシュ・メモリ、読み出し専用メモリ(「ROM」)のようなマイクロコードもしくはファームウェアの記憶、動的ランダムアクセスメモリなどのようなシステム・メモリおよびフラッシュメモリ(たとえばメモリー・スティックなど)、磁気ディスクもしくは光ディスクのような不揮発性記憶が含まれうる。示されるように、記憶媒体460はアプリケーション・プログラム440およびマッピング・マネージャ402、502を記憶しうる。
マッピング・マネージャ402、502は主としてシーケンサー仮想化管理タスクを担いうる。上で説明したように、マッピング・マネージャ402、502は、図4および図5に示される実施形態のように記憶媒体460に記憶されているソフトウェア・プログラムである必要は必ずしもない。他の実施形態については、マッピング・マネージャ402、502はハードウェアおよびソフトウェア抽象化のさまざまなレベルのいずれにおいて存在してもよい。そのような抽象化はマイクロアーキテクチャ・レベル、仮想機械またはハイパーバイザー・アーキテクチャ・レベル、OSカーネルまたはドライバ・レベルおよび非特権のユーザー・コード・レベルの範囲がありうる。
このようにして、マッピング・マネージャ402、502は、さまざまな仮想化タスクを実行しうる。マッピング・マネージャ402、502は、マッピング機構のほかスケジューリング機構をも含みうる。マッピング機構は、割り当て論理(rationing logic)485および変換論理486を含みうる。スケジューリング機構はスケジューリング論理487を含みうる。
変換論理486は、論理シーケンサー・アドレスを参照する全シーケンサー認識命令についてアドレス変換を提供しようと試みうる。論理シーケンサー・アドレスから物理シーケンサーへの動的マッピングを提供するシステム400、500について、論理シーケンサー・アドレス(アプリケーション・プログラム440によって使用される)の物理シーケンサー識別子への変換は、シーケンサー認識命令が論理シーケンサー・アドレスを参照するたびに、変換論理486によって実行されうる。
図5は、マッピング・マネージャ502の代替的な実施形態を示しており、マッピング情報を維持し、論理シーケンサー・アドレスの物理シーケンサー識別子への変換を実行するためにマッピング構造580を利用しうるものである。マッピング構造580は、少なくとも一つの実施形態については、記憶媒体460内にあってもよい。一般に、オペランドを含んでいるか、あるいは他の仕方で論理シーケンサー・アドレスを参照する任意の命令について、論理シーケンサー・アドレスは、マッピング構造580内の探索を通じてマッピング・マネージャ502によって変換される。少なくとも一つの実施形態については、そのような変換探索は、オペレーティング・システムのシステムレベルのサポートを使って実行されうる。少なくとも一つの代替的な実施形態については、変換探索はスレッドレベルのアプリケーション固有の仮想化によって実行されうる。さらにもう一つの代替的な実施形態については、変換探索は仮想機械モニタまたはハイパーバイザーによって実行されうる。
図5はまた、論理シーケンサー・アドレスの物理シーケンサー識別子への変換を加速するための任意的な機構が変換論理486によって利用されうることも示している。図5は、システムの実行資源490がさらに、そのような加速を支援するために任意的な変換加速構造518を含みうることを示している。少なくとも一つの実施形態について、変換加速構造518は、マッピング構造580の項目の部分集合を保持するキャッシュまたはバッファとして動作しうる。変換加速構造518に破線を使っていることは、そのような構造518の任意的な性質を表すことを意図したものである。
変換論理486が探索を実行した後で物理シーケンサーを位置特定できないか、あるいは論理シーケンサー・アドレスについてのマッピング情報を位置特定できない場合、フォールトが引き起こされうる。このように、フォールトは、論理シーケンサー・アドレス変換ミス(logical sequencer address translation miss)(ここでは「LSATミス」と称される)に際して生じる。LSATミス・フォールトは、フォールトを引き起こした論理シーケンサー・アドレスのために物理シーケンサーを割り当てるために、割り当て論理485のようなハンドラへの制御の移転を引き起こしうる。
これらのフォールトに関し、SXFR、SSAVE、SRTORなどといったシーケンサー認識命令はアーキテクチャ的にはフォールト生成意味(faulting semantics)とともに定義でき、それにより、変換論理486が探索後に物理シーケンサーを位置特定できない場合、あるいは論理シーケンサー・アドレスについてマッピング情報を位置特定できない場合に、失敗条件が生成される。フォールトに反応して、制御は、割り当て論理485のようなフォールト・ハンドラに移転されうる。換言すれば、変換論理486および/またはマッピング構造580が論理シーケンサーから物理シーケンサーへの変換探索において失敗したときにLSATフォールト条件が持ち上がりうる。
マッピング・マネージャ402、502のさまざまな実施形態について、LSATミス・フォールトは異なる仕方で扱われうる。マッピング・マネージャ402、502がハードウェアで直接実装される少なくとも一つの実施形態については、マッピング・マネージャ402、502は、フォールト条件を扱うハードウェア状態機械として実装されうる。
別の実施形態については、LSATミスによって引き起こされたフォールトはマイクロアーキテクチャのフォールト条件であることもあり、マイクロアーキテクチャ・レベルでマイクロコードのフローによって対処される。マイクロコードのフローは、記憶媒体460のROM部分のようなマイクロコード記憶に記憶されたマイクロ命令のシーケンスでありうる。少なくとも一つの実施形態については、LSATミス・フォールト条件は、マッピング・マネージャ402、502の割り当て論理486を実装する専用のマイクロコード・フローにジャンプするマイクロコード制御移転を引き起こしうる。
さらに別の実施形態については、LSATミスによって引き起こされたフォールト条件は、仮想機械についてのアーキテクチャ上の特権レベルについて定義されうる。フォールト条件は、仮想機械モニタまたはハイパーバイザーへの制御の移転を引き起こす。そのような実施形態では、ゲスト・オペレーティング・システムのようなゲスト・ソフトウェア上でのLSATミス・フォールト条件は、ホスト仮想機械モニタまたはハイパーバイザーへの制御遷移(VMEXITのような)をトリガーしうる。仮想機械モニタまたはハイパーバイザーはマッピング・マネージャ402、502を実装でき、それがフォールトの手当てをする。
さらにもう一つ別の実施形態については、LSATフォールトは、メモリ・ページ・フォールトに類似して、IA32アーキテクチャにおけるリング0特権レベルのような、オペレーティング・システムについてのアーキテクチャ上の特権レベルで定義される。少なくとも一つの実施形態について、LSATミスはこのように、システムレベルのフォールトを引き起こしうる。そのような実施形態は図4および図5に示されている。そのような実施形態については、シーケンサー・アドレス変換フォールトは、OSカーネルまたはデバイス・ドライバにおけるシステムレベルでのマッピング・マネージャ402、502ソフトウェア・ハンドラへの制御移転につながることができる。システム特権レベルは時に、アーキテクチャによっては交換可能にスーパーバイザー特権レベルと称されることもある。そのようなシステムレベルのLSATミス・フォールトは、たとえば、読み込み命令についてのページ・ミスに際して引き起こされるメモリ・ページ・フォールトに似ているかもしれない。システムレベルのLSATフォールト条件に反応して、オペレーティング・システムまたはデバイス・ドライバ・ハンドラでありうるマッピング・マネージャ402、502が該フォールトの手当てをするために呼び出されうる。
さらに別の実施形態によれば、LSATフォールト条件は、ユーザーレベルまたは非スーパーバーザー・レベル・コードに対応するアーキテクチャ上の特権レベル(IA32アーキテクチャにおけるリング3特権レベルのような)で定義されうる。たとえば、フォールト条件は「譲歩イベント(yield event)」のユーザーレベルのフォールト様タイプとして定義され、発生すると、マッピング・マネージャ402、502の割り当て論理486を実装するユーザーレベルのハンドラ・コードへの制御の移転を引き起こしうる。そのような実施形態については、LSATミス・フォールト条件は、フォールトを誘導したシーケンサー認識命令を含んでいた同じユーザー・プログラムによって手当てされうる。
上で論じた実施形態の一つまたは複数について、シーケンサー認識命令の実行の間の論理シーケンサー・アドレス変換ミス(ここでは「LSATミス」と称している)に際して生じるフォールトは、同期的または非同期的な仕方のいずれでも対処されうる。非同期的なアプローチのためには、シーケンサー・ミスは上記のようにフォールト条件を引き起こしうる。そして、そのフォールトが、マッピング・マネージャ402、502への、あるいはより具体的には少なくとも一つの実施形態については割り当て論理485を含むハンドラ・コードへの制御の移転を引き起こす非同期的イベントとして作用するようにして、前記シーケンサー・ミスが手当てされうる。フォールト処置はイベント駆動型であり(LSATミスに際して生じる)、フォールト・ハンドラへの対応する制御の移転は、性質上、非同期的である。
しかしながら、少なくとも一つの代替的な実施形態については、アーキテクチャは、シーケンサー認識命令の無フォールトの(non-faulting)変形を定義してもよい。LSATミスは、ハンドラへの非同期的な制御移転を引き起こすフォールトを引き起こすのではなく、のちの同期的処置のためにログ記録されうる。たとえば、前記ミスは、「ポイズン・ビット(poison bit)」またはその他のミス指標(miss indicator)の設定によってログ記録されうる。そのような場合、実行中、あとでソフトウェアによってミス指標がチェックされうる。ミス指標が設定されていると検出されれば、前記ミスはその時点で対処されうる。このようにして、ミス指標において指示されるフォールト条件は同期的に処置されうる。
そのような実施形態については、無フォールトのシーケンサー認識命令がLSATミスに遭遇した場合、その命令はアーキテクチャ的なフォールトを生成しない。その代わり、のちの処理のためにそのミスがログ記録されることができ、命令は実行を完了する。そのような実施形態については、ミスは、条件ビットを設定するのと同様の仕方で、アーキテクチャ状態の一部としてログ記録されうる。LSAT変換ミスをログ記録するために設定されたアーキテクチャ状態の一つまたは複数のビットは、「ポイズン」状態と称されうる。少なくとも一つの実施形態については、「ポイズン」状態を表すアーキテクチャ状態は2ビット以上である。少なくともいくつかのそのような実施形態については、マルチビット状態において、LSATミスが発生したかどうかに加えて追加的な情報がエンコードされてもよい。たとえば、LSATフォールト条件の潜在的な原因を示す特定の診断情報もしくはヒントおよび/または該フォールト条件を引き起こしたシーケンサー命令についての何らかの情報である。
無フォールトの実施形態については、その無フォールトのシーケンサー認識命令のための潜伏(retirement)完了後にソフトウェアがポイズン状態を検査しうる。変換ミスがログ記録されていれば、ソフトウェアはハンドラへの動的的な制御移転を実行でき、するとそのハンドラが変換ミス・フォールトに対処しうる。少なくとも一つの実施形態については、シーケンサー認識命令の無フォールト変形についての振る舞いは、インテル・コーポレイションから入手可能なアイテニアム(登録商標)マイクロプロセッサおよびアイテニアム(登録商標)2マイクロプロセッサのアーキテクチャにおけるLD.SおよびCHK.Sの使用モデル(usage model)にいくぶん類似している。ここで、LD.S命令はメモリ・ページ・フォールトを調査しうるが、仮想メモリ変換における失敗が生じてもページ・フォールトを引き起こさない。その代わり、LD.Sは命令実行を完了させるが、ポイズン・ビット(NATビットと呼ばれる)をセットする。このポイズン・ビットは、のちにユーザー・アプリケーション・ソフトウェアにおいてCHK.S命令によって検査されうる。それはユーザーレベルのハンドラへの制御の移転を引き起こしうる。
まとめると、多くの異なる実施形態について、変換論理486が物理シーケンサーを位置特定できないとき、あるいはシーケンサー認識命令において指定された論理シーケンサー・アドレスについてマッピング情報を位置特定できないとき(ここでは「LSATミス」と称される)、フォールト生成の振る舞い(faulting behavior)は、フォールト・ハンドラへの制御移転を引き起こす非同期的なイベントであってもよいし、その代わりに、ポイズン状態のログ記録を引き起こしてあとでソフトウェアによって同期的に検査できるようにしてもよい。そのようなフォールト振る舞い(fault behaviors)は、種々の実施形態において、種々の特権レベル(たとえば、仮想機械モニタおよびハイパーバイザー・レベル、システム特権レベルおよびユーザーレベルのような)について定義されうる。
図4および図5の実施形態400、500両方について、マッピング・マネージャ402、502は、変換に加えて、マッピング管理(mapping management)をも実行しうる。少なくとも一つの実施形態については、マッピング管理の少なくとも一部分は割り当て論理485によって実行されうる。割り当て論理485は、たとえば、LSATミスに遭遇したときに呼び出されうる。割り当て論理485は、物理シーケンサーを、シーケンサー認識命令において指定されている論理シーケンサー・アドレスにマッピングしうる。物理シーケンサーにマッピングされている論理シーケンサーはここでは、「アクティブな論理シーケンサー」と称され、対応する物理シーケンサーのほうは「ダーティーな物理シーケンサー」と呼ばれうる。論理シーケンサーにマッピングされていない物理シーケンサーは、「利用可能」または「アイドル」または「空いている」と称されうる。
少なくとも一つの実施形態については、割り当て論理は、アクティブな論理シーケンサーのコンテキストを対応するダーティーな物理シーケンサーから補助記憶(backing store)(図7との関連でのちに詳述)に移して空きを作り、次いで結果として利用可能になる物理シーケンサーを、アクセスしようとしてLSATミスを起こしたばかりの論理シーケンサーに与えることができる。そのようなコンテキストのスワッピング動作は、割り当て論理485によって、たとえばマッピングするためにアイドルで利用可能な追加的な物理シーケンサーがないときに行われうる。
すなわち、実行資源490は有限個Nの物理シーケンサー420〜426を含む。それらの物理シーケンサー上でマッピング・マネージャ402、502はM個の論理シーケンサーを実行のためにマッピングし、スケジューリングすることができる。アクティブなユーザー・スレッド(たとえば図2の225のような)によって論理シーケンサー上でスケジューリングされる各アクティブなシュレッド(たとえば図2の280および/または282のような)は、その上で走るべき物理シーケンサーを必要とする。したがって、マッピング・マネージャ402、502は、これらの論理シーケンサーにスケジューリングされるシュレッドの実行を前に進めるために、物理シーケンサーの論理シーケンサーへの割り当ておよびマッピングを管理しうる。
上記のマッピングおよび割り当て機能を実行する際、マッピング・マネージャ402、502の割り当て論理485は、物理シーケンサー(420〜426)を論理シーケンサー・アドレスにマッピングされるよう割り当てうる。割り当て論理485は、(1)複数プロセスからの複数スレッドと同様、同じスレッドからの複数のシュレッドを受け容れるようシーケンサーを細分し、(2)頻繁に参照される論理シーケンサーのワーキング・セットをできるだけたくさん物理シーケンサーにマッピングするために効率的にシーケンサーを割り当てることによって、シーケンサー利用を最大化しようと努力する。割り当て論理485は、仮想シーケンサーから物理シーケンサーへのマッピングを管理するためのいくつかのアプローチのいずれを使ってもよい。そのようなアプローチは、基底と限界、セグメンテーション、ページングなどを含みうる。このリストは網羅的であることは意図しておらず、例示的な一覧である。
〈基底と限界(Base and Bounds)〉
図4に示されているマッピング・マネージャ402は、仮想シーケンサーから物理シーケンサーへのマッピングを管理するために基底と限界アプローチをサポートしうる。そのような実施形態については、マッピング・マネージャ402は、各スレッドについて(あるいは、等価なことだが各メタプロセッサについて)物理シーケンサーの静的な区画(partition)を指定する静的区画アプローチを受け容れる。マッピング・マネージャ402は、マッピングを実行するために、ハードウェア・マッピング構造415を利用してもよい。
少なくとも一つの実施形態については、マッピング構造415は少なくとも二つのレジスタを含む:基底レジスタ416と限界レジスタ417である。基底レジスタ416は、あるスレッドのための基底シーケンサー識別子の値を保持しうる。限界レジスタ417は該スレッドのための最大のシーケンサー識別子の値を保持しうる。限界レジスタの値は、そのスレッドがアクセスしてよい最大の有効な仮想シーケンサー・アドレスを表す。基底レジスタ416および限界レジスタ417は、合わせて、そのスレッドのための物理シーケンサーの範囲を定義する。基底レジスタ416および限界レジスタ417のための値は、あるスレッドがロードされるか、スワップ・インされるときにマッピング・マネージャ402によってロードされうる。
基底と限界アプローチのもとでは、スレッドは、その基底レジスタ416および限界レジスタ417の値によって示される物理シーケンサー識別子の範囲内にある物理シーケンサーにのみアクセスしうる。
スレッドにおいて論理シーケンサー・アドレスが参照されるたびに範囲検査が実行されうる。論理シーケンサー・アドレスをスレッドが参照するたびに、スレッドは、0から限界レジスタ417の値までの論理アドレス範囲にアクセスできるという幻想を有する。しかしながら、スレッドは物理的には:基底レジスタ416の値によって表される下限から基底レジスタ416の値と限界レジスタ417の値との和として計算される上限までの範囲内の物理シーケンサーへのアクセスを有する。シーケンサー・アドレスは限界レジスタ417の上限値と比較される。アドレスが限界内になければ、マッピング・マネージャ402に対して変換フォールトが生成される。
〈セグメンテーション(Segmentation)〉
マッピング・マネージャ402によってサポートされうる代替的な動的論理シーケンサー・アドレス管理アプローチは、セグメンテーション・アプローチとともに基底と限界アプローチを組み込みうる。そのような実施形態のためには、実行資源490は、各「セグメント」について基底レジスタ416および限界レジスタ417の組を含みうる。したがって、x個のセグメントのためのマッピング構造415は、x個の基底レジスタ416およびx個の対応する限界レジスタ417を組み込みうる。ここで、各レジスタ対416、417はある「セグメント」に関連付けられている。
「セグメント」とは、論理シーケンサー・アドレスの論理的な集合ブロックである。論理シーケンサー・アドレスの各集合ブロックがセグメントと呼ばれ、そのセグメント独自の基底レジスタ416および限界レジスタ417に関連付けられていることができる。実施形態によっては、基底レジスタ416はセグメント基底レジスタと呼ばれ、限界レジスタ417はセグメント限界レジスタと呼ばれる。少なくともいくつかの実施形態では、セグメンテーションは、物理シーケンサーを、それぞれが特殊な機能特性をもつ相異なるグループに区分するために使われる。機能特性とはたとえば、パワー・パフォーマンス特性(たとえばあるセグメントのシーケンサーは別のセグメントのシーケンサーより高速または低速でありうる)またはシーケンサー種別(たとえば、あるセグメントのシーケンサーはTシーケンサーとしてマッピングされうるが、別のセグメントのシーケンサーはSシーケンサーとしてマッピングされうる)のようなものである。
〈ページング(Paging)に基づく論理シーケンサー・アドレス管理〉
図5は、論理シーケンサー・アドレスの動的なマッピングを管理するためのページングに基づくアプローチを利用するマッピング・マネージャ502の実施形態を示している。
図5は、物理シーケンサー420〜426が、「フレーム(frame)」510と称される小さな均等サイズの区画(partition)として編成されうることを示している。図5には二つのフレーム510しか示されていないが、そのような図示は限定するものと解釈すべきではない。マッピング・マネージャ502は、何個のフレームについてでも仮想から物理へのマッピングを管理しうる。さらに、フレームはシーケンサーを何個含んでいてもよい。
マッピング・マネージャ502は、動的にマッピングされる論理シーケンサー・アドレスのための論理シーケンサー・アドレス空間も「ページ」と称されるいくつかの均等サイズの区画に分割されうるという、ページングに基づくアプローチを実施しうる。ページ中の論理シーケンサーの数はフレームと同じである。したがって、論理シーケンサー・アドレス空間は事実上、所与のフレーム・サイズの論理シーケンサー・ページの集合である。
ページが小さいとページ・テーブルのサイズが大きくなる可能性がある一方、ページが大きいと内部フラグメンテーションの比較的高い生起につながる可能性がある。割り当て論理486は、ページ・レベルの粒度で、物理シーケンサーを割り当て、論理シーケンサーをマッピングしうる。図5に示される例示的な実施形態については、各フレームは二つの物理シーケンサーを有している。
ページに基づく論理シーケンサー・アドレス空間についてのアーキテクチャ上のサポートはページ・テーブルへのポインタを記憶するためのレジスタ525または他の構造を含みうる。少なくとも一つの実施形態については、ページ・テーブルは、たとえばメモリのような記憶媒体460内のマッピング構造580内に維持されていることが予期される。また、少なくとも一つの実施形態については、ポインタ・レジスタ525の値が、ページ・テーブルの基底メモリ・アドレスまたは位置を示すためにロードされることが想定される。ページに基づく論理シーケンサー・アドレス空間についてのアーキテクチャ上のサポートはまた、ページ・テーブル・サイズのための値を保持するためのレジスタ526またはその他の構造をも含みうる。
ページング機構は、物理シーケンサー420〜426を、シーケンサー割り当ての基本単位となる均等または不均等サイズの固定サイズの区画に区分するために使用されうる。シーケンサーの均等サイズの固定区画について、各区画があるスレッドに割り当てられうる。すべてのスレッドが同数のシーケンサーにアクセスする必要がないこともあるので、そのようなアプローチは、内部フラグメンテーションにつながりうる。しかしながら、そのようなアプローチの恩恵は、すべての区画が均等なサイズなので、利用可能な区画のうち、どの特定の区画に実際にスレッドを割り当てるかを問題にしなくていいことになり、マッピング・マネージャ402、502の割り当て論理485が利用する配置アルゴリズムがより柔軟になりうるということである。
ページング機構のために均等サイズの区画を使用することは、論理シーケンサー・アドレスの大きくて疎な集合からの論理シーケンサーの小さなワーキング・セットを、物理シーケンサーの小さなセットにマッピングするために単純なビットマップを使うことを許容する。この恩恵は、セグメントが連番の物理シーケンサーの集合を表すセグメンテーション・アプローチでは実現されない。セグメンテーション・アプローチでは、マッピング・マネージャ402、502は、論理シーケンサー・アドレスのほんのわずかの離散的な部分集合を物理シーケンサーにマッピングすることはできない。
代替的に、マッピング・マネージャ402、502が可変サイズの固定したセットのページを割り当ててもよい。そのようなアプローチについては、スレッドは、そのスレッドのために十分な大きさでありかつ、利用可能な最小の区画を割り当てられる。割り当て論理485はより小さなシーケンサー・ブロックを要求するスレッドにはより小さな区画を割り当てうるので、内部フラグメンテーションは、均等サイズの固定区画アプローチの場合よりも少なくなりうる。すなわち、各スレッドを、そのスレッドがはいる最小の利用可能な区画に割り当てることが可能である。このアプローチは、外部フラグメンテーションにつながる可能性がある。すなわち、利用可能な物理シーケンサー420〜426の合計がスレッドの物理シーケンサー要求には十分であるのに、そのスレッドのために十分な大きさの物理シーケンサーの単一の区画が利用可能でないとき、外部フラグメンテーションが生じうる。したがって、割り当て論理485は、均等サイズの区画の場合よりも、可変長の固定区画についてのほうが、配置アルゴリズムの柔軟性は低くなる。
代替的に、マッピング・マネージャ402、502は、シーケンサー区画が可変サイズでもよく、動的に生成されうる区分アプローチをサポートしてもよい。そのようなアプローチについては、割り当て論理485は、各スレッドについてちょうど適切な数のシーケンサーを割り当てうる。スレッドのために二つ以上のシーケンサーが利用されうるシステムについては、動的なシーケンサー割り当ておよび割り当て解除は外部フラグメンテーションを生じうる。そのような外部フラグメンテーションを回避するため、動的シーケンサー区分アプローチを利用するマッピング・マネージャ402、502は、圧縮(compaction)を実装してもよい。そのような圧縮は、一つまたは複数のスレッドについての全シーケンサーの状態コンテキストの再配置(たとえば図9の再配置論理910を参照)を含むという点で、比較的高いオーバーヘッドを伴う。該再配置は、シーケンサーが他の割り当てられたシーケンサーと「連続」になれるように、そして空いた物理シーケンサーが連続的なブロックに残されうるようにするためのものである。少なくともいくつかの実施形態については、論理シーケンサーから物理シーケンサーへのマッピングに関連するある機能要件を満たすようシーケンサーを再配置および再マッピングするために、再配置論理910が呼び出される。たとえば、ある実施形態については、論理シーケンサーには機能記述子が関連付けられ、該機能記述子は、根底にある物理シーケンサーがある熱閾値を超えたら常に再マッピングを要求するものである。少なくとも一つの実施形態については、910によって実行される結果的な再配置動作は時に「シーケンサー・ホッピング」と称される。
動的なシーケンサー・マッピングを利用するシステムのためのマッピング・マネージャ402、502の割り当て論理485は、いくつかあるマッピング技術のいずれを実施してもよい。これらのマッピング技術は、個々の物理シーケンサー、セグメント、ページなどといったいかなる割り当て単位について用いてもよい。そのようなアプローチの部分的な一覧を下に掲げるが、当業者は、論理シーケンサーから物理シーケンサーへのマッピングを実行するときに、割り当て論理485が追加的にシーケンサーの機能属性を考慮に入れてもよいことを理解するであろう。そのような機能属性に基づくマッピングの配慮のさらなる議論は、図13との関連でのちに述べる。
一般に、動的なシーケンサー割り当ておよびマッピング・アプローチに従うシステムのための割り当て論理485によって利用されるマッピング・アルゴリズムは次のものを含みうる。ただし、このリストは網羅的なリストであることは意図していない:
a.最良フィット・アルゴリズム(Best-Fit Algorithm)。マッピング・マネージャ402、502は物理シーケンサーのすべての空いている区画を走査し、要求スレッドのために必要とされるサイズに最も近い物理シーケンサーの区画を選ぶ。そのようなアルゴリズムは実際のシーケンサーの比較的ぴったりしたフィット、したがって効率的な使用につながりうる――スレッドのために、十分な大きさでありかつ利用可能な最小の区画が割り当てられうるのである。
b.最初のフィット・アルゴリズム(First-Fit Algorithm)。マッピング・マネージャ402、502は、十分な大きさのシーケンサーの区画で利用可能な最初のものを選択する。
c.次のフィット・アルゴリズム(Next-Fit Algorithm)。マッピング・マネージャ402、502は、直前の割り当ての位置から始めてシーケンサーの区画を走査し、十分な大きさの区画で次に利用可能なものを選ぶ。
シーケンサーがどのように区分されているかに関わりなく、マッピング402、502は、第一のプログラムにおける論理シーケンサー・アドレスへの参照がLSATミスに遭遇するたびに、スレッドに対する物理シーケンサーまたは物理シーケンサーの区画の動的な割り当てを管理する割り当て論理485を含みうる。前記プログラムによる前記論理シーケンサー・アドレスへのその後の参照は、LSATミスに遭遇することなく変換論理486によって変換されうる。
上で議論した区分方式のいくつかは、表面上、既知のメモリ管理技術に似ているように見えるかもしれないが、そのような技術のシーケンサーへの適用は独特の課題を伴う。レジスタおよびメモリの仮想化方式とは対照的に、シーケンサーは単にデータ記憶の空間的なコンテキストを含むのではない。その代わり、各シーケンサーは、ずっと多くの属性に関わり、よってより複雑な考慮に関わる実行資源である。
動的にマッピングされる資源としての物理シーケンサーの独特な特徴の少なくともいくつかをさらに例示するために、以下の議論はシーケンサー割り当ての基本単位としての物理シーケンサーに言及する。しかしながら、当業者は、以下の議論は、物理シーケンサーのセグメントおよび/またはフレームを含む他の割り当て単位にもあてはまることを認識するであろう。
スレッドは複数のシーケンサー認識命令を含みうる。スレッド中のこれらの命令において参照される一意的な論理シーケンサー・アドレスの数を反映するために値Yを使う。マッピング・マネージャ402、502は、スレッドのY個の論理シーケンサー・アドレスのそれぞれに物理シーケンサーを動的にマッピングしうる。合計Y個の一意的な論理シーケンサー・アドレスを含むスレッドについては、該スレッドは、該スレッドに割り当てられる少なくとも一つの物理シーケンサーがある限り前に進みうる。マッピング・マネージャ402、502は、複数(Y個)の論理シーケンサー・コンテキストを単一の物理シーケンサー上に多重化することによってこれを達成しうる。換言すれば、OSによって与えられるあるスレッドの量子(quanta)の間に、マッピング・マネージャ402、502は、そのスレッドの複数Y個のシーケンサー・コンテキストのそれぞれを交互にZ個の物理シーケンサーにマッピングしうる。ここで、Zは単に1でもよい。この多重化は、Y>Zとして、論理シーケンサー・アドレスの数Yおよび物理シーケンサーの数Zがいくつでも実行しうる。
少なくとも一つの実施形態について、Y>Z多重化状況を扱うため、マルチシーケンサー・マルチスレッド・システム500は、論理シーケンサー・コンテキスト待ち行列(logical sequencer context queue)(「LSCQ」)を含みうる。少なくとも一つの実施形態については、LSCQ527は、データ構造でありうる。図5に示されている実施形態500については、LSCQ527は、メモリ・システムでありうる記憶媒体460に記憶されており、補助記憶575の一部であってもよい。少なくとも一つの実施形態については、LSCQ527は、少なくともY−Z個の項目を含んでおり、Y個までの項目を含みうる。各項目は、論理シーケンサーのためのコンテキスト情報ならびに機能属性情報のような他の情報を保持することができる。機能属性情報とは、シーケンサー・ホッピング要件およびシーケンサー・スケジューリング要件といったものである。
Y個の論理シーケンサー・アドレスをもつスレッドがZ個の物理シーケンサー上で実行されるべく多重化されるとき、マッピング・マネージャ402、502は、ある論理シーケンサーがスイッチ・アウトされて新たな論理シーケンサーが物理シーケンサーにスイッチ・インされるたびに、シーケンサー・コンテキスト切り換えを実行する。そのようなコンテキスト切り換えの際、ダーティーな物理シーケンサー(Y個の論理シーケンサーのうち、アクティブな論理シーケンサーに関連付けられているもの)の現在のコンテキストがLSCQ527の対応する項目に保存される。次いで、新たな論理シーケンサーのコンテキストがその物理シーケンサーにコピーされる、すなわち「スイッチ・インされる」。
こうして、マッピング・マネージャ402、502は、論理シーケンサー・アドレスの物理シーケンサーへのX>Y多重化の間に、現在の論理シーケンサー(スイッチ・アウトされるもの)のためのコンテキスト保存動作と、新たな論理シーケンサー(スイッチ・インされるもの)のためのコンテキスト復元動作とを実行しうる。マッピング・マネージャ402、502は多重化されたY個の論理シーケンサー・コンテキストをLSCQ527に保存し、LSCQ527から復元すると想定されている。
第一のスレッドについてOSレベルのスレッド切り換えが実行されるとき、OSはSSAVE動作を実行してそのスレッドについてのZ個の物理プロセッサのコンテキストと、それとともにそのスレッドに関連するY−Z個の非アクティブな論理シーケンサー・アドレスについてLSCQ527に保存されたコンテキスト情報があればそれも、OSカーネルの保存領域に、全体的なスレッド・コンテキストとして保存する。のちのスレッド切り換えに際して、SRSTOR動作がOSカーネルによって実行されて、Y個の論理シーケンサー・コンテキストすべてを含むスレッド・コンテキストが復元される。OSカーネルによって実行されうるそのような動作は、ここでは仮想化されたSSAVE動作および仮想化されたSRSTOR動作と称される。そのようなSSAVEおよびSRSTOR動作はOSによって実行されうる。少なくともいくつかの実施形態については、仮想化されたSSAVEおよびSRSTOR機構を、上記した仮想機械モニタ・レイヤーおよびマイクロコード・レイヤーを含め異なる特権レベルで実装できる。
SRSTOR動作の間に、OSは、スレッドのY個の論理シーケンサー・コンテキストのうちZ個を、OSカーネルのスレッド・コンテキスト保存領域から、当該スレッドのために今利用可能にされたZ個の物理シーケンサーに復元しうる。(Zは、今では、当該スレッドが以前にアクティブであったときとは異なる数でもよい;最小ではZ=1)。スレッドのY個の仮想シーケンサー状態の残りは、そのスレッドのLSCQ527のY−Z個の項目に記憶される。少なくとも一つの他の実施形態については、SRSTOR動作は、SRSROR動作の間に、Z個の論理シーケンサー・コンテキストを対応するZ個の物理シーケンサーに直接保存するのではなく、Y個の論理シーケンサー・コンテキストすべてを、カーネルのスレッド・コンテキスト保存領域からY項目LSCQ527に復元する。そのような実施形態については、Y個の論理シーケンサー・コンテキストがZ個の物理シーケンサーにさまざまな方針を使ってマッピングされ、スケジューリングされうる。そのような方針は、オンデマンド割り当てを含みうる。オンデマンド割り当てのためには、論理シーケンサーが参照されたときに、該論理シーケンサーがLSCQ527からスケジューリングして出され、マッピング・マネージャ402、502は、その論理シーケンサーにマッピングするためにZ個の物理シーケンサーのうちからアイドルな物理シーケンサーを位置特定しようとする。アイドルな物理シーケンサーがない場合、マッピング・マネージャ402、502はダーティーな物理シーケンサーを選択し、シーケンサー・コンテキスト「スワップ」を実行してそのコンテキストをLSCQ527中の対応する論理プロセッサのための適正な項目中に保存し、次いで今空けられた物理シーケンサーに新たな論理シーケンサーをスケジューリングしうる。
代替的に、多重化の間、マッピング・マネージャ402、502は、スレッドのための量子の間じゅう、実行のためのY個の論理シーケンサーをZ個の物理シーケンサー上にスケジューリングしうる。マッピング・マネージャ402、502は、サブ量子(sub-quanta)を使って、単純な時間に基づくラウンドロビン手法のようなスケジューリング手法を利用してもよい。各サブ量子(sub-quantum)とは、スレッド・スケジューリングのためのOS量子(OS quanta)の一部分、あるいは細分でありうる。代替的に、マッピング・マネージャ402、502は、イベント駆動手法のような異なるスケジューリング手法を利用してもよい。イベント駆動手法のためには、論理シーケンサーは、キャッシュ・ミスまたは他の比較的長い遅延のイベントに遭遇したときに物理シーケンサーからスイッチ・アウトされてもよい。イベント駆動手法のためには、論理シーケンサーはまた、機能制約検査のために持ち上がったイベントに遭遇したときに物理シーケンサーからスイッチ・アウトされてもよい。そのようなイベントとは、ダーティーな物理シーケンサーが、マッピングされている論理シーケンサーを再スケジューリング(これはシーケンサー・ホッピングを含みうる)のためにLSCQ527に避難させることを要求する熱閾値を超えることなどである。
少なくとも一つの実施形態については、マッピング・マネージャ402、502によって実行されるLSCQ527管理は、オペレーティング・システムの一部でありうる。そのような実施形態については、OSがLSCQ527を管理し、Y個の論理シーケンサー・コンテキストをZ個の物理シーケンサーにスケジューリングすることを担いうる。
図6は、マッピング・マネージャ502(図5)によって維持されうるマッピング構造580のさらなる詳細を示している。図6について、ここでは図5を参照しつつ論じる。マッピング構造580は、変換論理486によって、論理シーケンサーから物理シーケンサーへのアドレス変換を実行するために参照されうる。物理シーケンサーがある論理シーケンサー・アドレスについて割り当て論理485(図5)によって割り当てられたり割り当て解除されたり(再配置も含む)するとき、マッピング構造中の項目は割り当て論理485(図5)によって管理されうる。
マッピング構造580は、各スレッドについてマッピング・テーブル610を含みうる。たとえば、図6は、それぞれスレッドA、B、C、Dに関連付けられたマッピング構造610a、610b、610c、610dを示している。図6には個別的なスレッドが四つしか示されていないが、図6の例が限定するものであると解釈するべきではない。図6は、ページングに基づく論理シーケンサー・アドレス・マッピング手法をサポートするマッピング・マネージャ(図5に示したマッピング・マネージャ502のような)によって、いかなる数xのスレッドでも受け容れられうることを示すものである。
少なくとも一つの実施形態については、マッピング構造580は、現在未割り当てであり、よってシーケンサー認識命令で新たな論理シーケンサー・アドレスが参照されたときに割り当てのために利用可能である物理フレームをマッピング・マネージャ502が追跡しうる際に使う空きシーケンサー・フレーム・リスト620をも含みうる。
図6に示した例は、あくまでも例示の目的のために意図されたものであり、限定するものと解釈すべきではないが、この例については、各マッピング・テーブル610はシーケンサー・ページ・テーブルであり、対応するスレッドの各ページについて一つの項目を含んでいる。したがって、図6の例はスレッドAおよびスレッドBについてそれぞれ3ページを含んでおり、スレッドCおよびスレッドDについてはそれぞれ4ページを含んでいる。シーケンサー・ページ・テーブル610は以下の議論では単に「ページ・テーブル」と称されることがある。
図6は、スレッド・ページ・テーブル610の各項目630がシーケンサー・ページ・フレーム・アドレス・フィールド632を含みうることを示している。マッピング・マネージャ502は、ページ・フレーム・アドレス・フィールド632に、項目632に対応するページのために物理シーケンサーが割り当てられたときにある値を入れうる。(少なくとも一つの実施形態については、その値がアドレス・フィールド632に入れられるのは、初期割り当てのために割り当て論理485によって、あるいは再配置のために再配置論理(図9、910参照)によってでありうる。)ページ・フレーム・アドレス・フィールド632の値は、マッピングされたシーケンサーが属するページ・フレームについてのページ・フレーム・アドレスを示す。現在アクティブなスレッドについては、ページ・フレーム・アドレス・フィールド632の値は、対応するスレッドのページが割り当てられている物理シーケンサー・フレームの基底アドレスを指示しうる。実行を完了していないのに別のスレッドの余地を作るためにスワップ・アウトされたスレッドについては、シーケンサー・ページ・フレーム・アドレス・フィールド632の値は、補助記憶575(たとえば図5の補助記憶575参照)に保存されている、そのスレッドのマッピングされていないシーケンサー・ページ・コンテキスト情報へのポインタ・アドレスを与える。
図6は、項目630は存在/不在フィールド634をも含みうることを示している。存在/不在フィールド634の値は、そのスレッド・ページについてのコンテキスト情報が物理シーケンサー・フレーム上にあるか、それとも補助記憶575内にあるかを同定しうる。したがって、存在/不在フィールドの値は、シーケンサー・ページ・フレーム・アドレス・フィールド632の内容が物理シーケンサー・フレームの基底アドレスであるか、それとも補助記憶575内の論理シーケンサー・ページの位置を示しているのかを決定するために、マッピング・マネージャ502によって利用されうる。ある種の実施形態については、存在ビットの値の検査によりページ・フォールトが引き起こされる。
図6は、各項目630が追加的なフィールドをも含みうることを示している。いくつかの実施形態では、そうした追加的フィールドの一つまたは複数は、項目630によって表されている仮想シーケンサー・フレームに関連付けられた属性または制約を示す機能属性のための記述子を保持しうる。たとえば、項目630は、マッピング・マネージャ502の保護論理および任意的な共有論理(図9の912、914参照)によって利用されうる保護フィールド636を含みうる。
もちろん、さまざまな実施形態は図6に示された以外の追加的または異なるフィールドを含んでいてもよい。たとえば、項目630はスケジューリング・フィールド638を含んでいてもよい。スケジューリング・フィールド638は、関連付けられた論理シーケンサー・フレームのためのスケジューリング情報を保持しうる。スケジューリング情報は、たとえば、マッピングまたはシーケンサー・ホッピングのような再配置も含めた再マッピングのためにそのシーケンサー・フレームをいつ、あるいはどのくらいの頻度で再スケジューリングすべきかを示す一つまたは複数の古さ(age)に基づくヒントを含んでいてもよい。追加的または代替的に、スケジューリング情報638は、その論理シーケンサー・フレームがスケジューリングされている物理プロセッサのために望ましい一つまたは複数の特性を示す機能情報を含んでいてもよい。たとえば、機能ベースのスケジューリング情報は、目標物理シーケンサー・フレームのための、所望される最低パフォーマンスまたは最大の命令当たりのエネルギーの指標を含んでいてもよい。
暫時図10を参照すると、論理シーケンサー・アドレス1030を物理シーケンサー識別子1040に変換するための方法1000の少なくとも一つの実施形態が示されている。少なくとも一つの実施形態については、方法1000はマッピング・マネージャの変換論理(図5に示したマッピング・マネージャ502の変換論理486参照)によって実行されうる。
図10は、論理シーケンサー・アドレス変換を実行するためのマッピング構造(図5のたとえば580を参照)を利用するための一般的な方法1000の少なくとも一つの実施形態についてのデータおよび制御の流れを示す流れ図である。より特定的には、図10は、マッピング構造580としての一つまたは複数のページ・テーブル1010の使用を示している(図5)。
方法1000は、複数シーケンサー(たとえば図5の420〜426参照)を含むマルチスレッド・システムのための論理シーケンサー・アドレス変換を実行するために使用されうる。方法1000は、図5に示したマッピング・マネージャ502の線に沿ったマッピング・マネージャ1020によって実行されうる。少なくとも一つの実施形態については、方法1000は、マッピング・マネージャの変換論理によって実行されうる(たとえば図5のマッピング・マネージャ502の485参照)。少なくとも一つの実施形態については、マッピング・マネージャ1020はオペレーティング・システム・プログラムであることができ、方法1000はオペレーティング・システムによって実行される。少なくとも一つの他の実施形態については、方法1000は、たとえばアプリケーション・プログラマが書いたユーザーレベルのルーチンであるマッピング・マネージャ1020によって実行されうる。少なくとも一つの他の実施形態については、方法1000は、仮想機械モニタまたはハイパーバイザーであるマッピング・マネージャ1020によって実行されうる。少なくとも一つの実施形態については、マッピング・マネージャ1020によって実行される方法1000は、変換加速構造(たとえば図5に示した518参照)の使用を通じて加速されうる。
図5との関連で上で参照した物理シーケンサー420〜426が対称的である必要はなく、その数が限定的なものと解釈されるべきではないことを注意しておくべきであろう。対称性に関しては、物理シーケンサーの一つまたは複数が、何らかの特性または性能指標の面で他の物理シーケンサーの一つまたは複数と異なっていてもよい。少なくともいくつかの実施形態については、物理シーケンサーの特性または性能指標が含みうるものとしては、大きさ、語および/またはデータ路の大きさ、トポロジー、メモリの種別および/または大きさ、電力消費、機能ユニット数、通信アーキテクチャ(マルチドロップかポイントツーポイント相互接続か)、動作周波数、大きさ、サイクル当たりの命令数、命令当たりのエネルギー消費、熱特性、命令セット・サポートのセットの面での機能、OS可視性または機能、パフォーマンス、フットプリント、電力、熱指標などに関係した他の任意の指標がある。これらの特性は単に例示の目的のためであって、限定するものと解釈すべきではない。これらは、非対称的なマルチシーケンサー・システムでは二つの物理シーケンサーは上記の特性または指標の任意の一つまたは組み合わせに関して異なりうるということを示すための例の部分的なリストとして与えられているのである。少なくともいくつかの実施形態については、これらの特性のいくつかは、論理シーケンサーのための機能記述子の一部として表現され、論理シーケンサーから物理シーケンサーへのマッピングに際して検査されてもよい。
シーケンサーの数に関しては、変換方法1000はいかなる数のシーケンサーについても利用されうる。たとえば、変換方法1000は、4、8、16、32、64、128またはそれ以上のシーケンサーを含むマルチシーケンサー・システムについて実装されてもよい。
図10は、変換を実行するために、マッピング・マネージャ1020が、論理ページ番号1032およびオフセット1034を含む論理シーケンサー・アドレス1030を受け取りうる1050ことを示している。こうして、論理シーケンサー・アドレス1030は事実上、スレッドによる論理シーケンサー・アドレスの使用を、論理ページ番号およびページ内でのオフセットにマッピングする。図10は、論理シーケンサー・アドレス1030が、スレッドNのようなスレッドにおけるシーケンサー認識命令において指定されていてもよいことを示している。
図10は、一般的に、論理シーケンサー・アドレス1030を物理シーケンサー識別子1040に変換するために、マッピング・マネージャ1020が、スレッドNに関連付けられた適切なスレッド・シーケンサー・ページ・テーブル1010を利用しうることを示している。特に、図10は、1052において、マッピング・マネージャ1020が、論理シーケンサー・アドレス1030のページ番号1032(「001」)をページ・テーブル1010へのインデックスとして利用することを示している。ページ・テーブル1010のインデックスされた項目の値(「111」)が、1054において、変換後の物理シーケンサー識別子1040の指定されたページ・フレーム部分1042に入れられる。
図10はまた、1056において、マッピング・マネージャ1020が論理シーケンサー・アドレス1030のオフセット1034(「010」)を直接、変換された物理シーケンサー識別子1040の指定されたオフセット部分1044にコピーしうることを示している。
まとめると、このように、図10は、論理シーケンサー・アドレスを物理シーケンサー識別子に変換する方法1000は次のことを含みうることを示している:論理シーケンサー・アドレス1030を受け取る1050;論理シーケンサー・アドレス1030の部分1032をページ・テーブル1010へのインデックスとして利用1052してページ番号(「111」)を決定する;ページ番号を変換後のシーケンサー識別子1040の指定された部分1042に入れる1054;論理シーケンサー・アドレス1030の別の部分1034を変換後のシーケンサー識別子1040のオフセット部分1044にコピー1056する。
図6および図10に示された例は、仮想シーケンサー・アドレス変換方法1000が、ページ・テーブルの単一レベルに限定されているアプローチに限定されていることを意味するものと解釈すべきではない。たとえば、図6は、ページ・テーブル項目630が追加的なビット640を含みうることを示している。少なくとも一つの実施形態については、一つまたは複数の追加的ビット640が、少なくとも一つの代替的な実施形態については、追加的なページ・テーブル・レベルを示すために利用されうる。したがって、マッピング・マネージャ1020は、ページ・テーブルの複数レベルを含むアプローチを実施してもよいのである。
〈変換のための任意的なハードウェア加速〉
図5に戻ると、動的にマッピングされる論理シーケンサー・アドレスの変換をサポートするマルチシーケンサー・マルチスレッド・システム500の少なくとも一つの実施形態が、任意的な変換加速構造518を含んでいてもよいことを見ることができる。
少なくとも一つの実施形態については、構造518は、ページ・テーブルまたは他の種類のマッピング構造580の項目をキャッシュするためのシーケンサー・アドレス変換傍流バッファ(sequencer address translation lookaside buffer)(「STLB」)でありうる。実行資源490のハードウェア構造518における項目のキャッシングは変換スピードを加速しうる。加速される一つの理由は、シーケンサー420〜426が記憶媒体460にあるマッピング構造580にアクセスするための時間をとることなく構造518へのアクセスを有するということである。たとえば、図10に示した変換例について、図5のSTLB518がページ・テーブル1010の項目001の内容を含むとする。そのような場合、記憶媒体460内にあるかもしれないスレッドNのページ・テーブル1010にアクセスする必要なしに、実行資源490内のSTLB論理によって探索および変換が実行できる。
図11は、変換加速構造1100のためのフォーマットの少なくとも一つの実施形態を示すブロック図である。図5に示される518のような加速構造の項目が、図11に示される加速構造1100のフォーマットに従うことがありうる。図11に示されるSTLBの実施形態の項目について示されているフィールド1102〜1110は単に例示の目的のために呈されている。他の実施形態については、ハードウェア加速構造1100において、追加的なまたは異なる情報がキャッシュされうる。
図11に示した実施形態について、構造1100の項目は次のフィールドを含む:有効フィールド1102、論理ページ識別子(たとえば図10の1032参照)1104および物理ページ・フレーム・フィールド1110(たとえば図10の1042参照)。
少なくとも一つの実施形態については、新たなスレッドへのコンテキスト変化が起こるときに、スレッド固有のシーケンサー・ページ・テーブル(たとえば図10の1010参照)の基底アドレスがレジスタ1120にロードされうる。レジスタ1120は制御レジスタであってもよい。スレッド・コンテキスト変化が起こるたびに(制御レジスタ1120の修正によって示される)、ハードウェア加速構造1100の内容がフラッシュされうる。
暫時図5および図11の両方を参照すると、少なくとも一つの実施形態については、各シーケンサー420〜426が同時並行して異なるスレッドを実行してもよいことを理解しておくべきである。したがって、少なくとも一つの実施形態については、STLB1100および制御レジスタ1120が各シーケンサー420〜426のために指定されうる。したがって、図5に示されるハードウェア加速構造は、シーケンサー420〜426のそれぞれに一つ、複数のSTLB1100および制御レジスタ1120を含みうる。
図9とともに引き続き図5を参照すると、アクティブなスレッドへの物理シーケンサーの割り当ておよびマッピングを管理するために、マッピング・マネージャ502は割り当て論理485を含みうることが示されている。(図5および図9の同様の要素は同様の参照符号を帯びる。)割り当て論理485は、アクティブなスレッドの間で物理シーケンサー420〜426を割り当てるための論理を含みうる。
論理シーケンサー・アドレスの物理シーケンサーへの初期割り当てを実行する論理に加えて、図9は、割り当て論理485がさらに、再配置、保護および共有というシーケンサー管理機能を実行するための論理を含みうることを示している。それぞれの目的について、以下の段落でさらに詳細に論じる。
再配置論理910に関しては、論理シーケンサー・アドレスと物理シーケンサーとの間のマッピングは、その論理シーケンサー・アドレスを最初に参照したスレッドが実行を完了する前に修正される必要があるかもしれないという場合がありうる。マッピング・マネージャ502が、物理シーケンサー内に第二の仮想シーケンサー・コンテキストがスワップ・インされるべきであると判断した場合、現在マッピングされている論理シーケンサーについての状態が補助記憶575にスワップ・アウトされる。そのようなスワッピングは、再配置論理910によって実行されうる。これは、たとえば圧縮の間に実行されてもよい。
そのような状況について、再配置論理910は、コンテキストおよびマッピング情報を管理するための論理を実行する。それにより論理シーケンサーの関連する状態があとで現在の物理シーケンサーまたは別の物理シーケンサーにスワップ・インし戻されることができるようになる。このように、再配置論理910は、マッピング構造(図5の580参照)に反映されている論理シーケンサーから物理シーケンサーへの各マッピングに関連付けられているコンテキスト情報を管理するための論理を含む。さらに、割り当て論理485はマッピングを修正するための論理を含む。少なくとも一つの実施形態については、そのような機能は再配置論理910によって提供されてもよい。マッピング・マネージャ502が外部フラグメンテーションを被りうる物理シーケンサー割り当てアルゴリズム(上記の最良フィット・アルゴリズムのような)を実装する少なくとも一つの実施形態については、再配置論理910は、(1)同じスレッドに属する諸物理シーケンサーを連続ブロックとして再配置し、(2)それに従ってマッピング情報を修正する論理を含みうる。
図9は、割り当て論理485が保護論理912をも含みうることを示している。少なくとも一つの実施形態については、保護論理912は物理シーケンサーへの望まれないアクセスを防止する。少なくとも一つの実施形態については、これは、あるアプリケーション・スレッドが、現在別のスレッドに関連付けられている論理シーケンサー・アドレスを参照するのを防止することによって達成される。保護論理912は、物理シーケンサーに関連付けられた論理シーケンサー・アドレスについてのコンテキスト情報を使って、試みられたアクセスが同じスレッド・コンテキストに関連付けられた命令から発生したものかどうかを判定しうる。そうでなければ、保護論理912はアクセスを防止する。こうして、保護論理912は、あるシーケンサーまたはシーケンサー・フレームが、実行の間に、別のシーケンサーまたはシーケンサー・フレームによって望まれないアクセスをされることに対して検査を行い、保護を実施する。
最後に、図9は、割り当て論理485が共有論理914をも含みうることを示している。そのような共有論理914は任意的であり、そのことは図5の破線によって示されている。共有論理914は、二つ以上のスレッドが同じ物理シーケンサーを共有することを許容しうる。スレッドが一つまたは実物のそれ以上のシーケンサーの共通のセットにアクセスすることを許容する実施形態については、共有論理914は、許容される共有の種類を制御する指定されたパラメータおよび制約を実施する。
したがって、第一のスレッドがアクティブである間に異なるスレッドがその論理シーケンサー・アドレスにアクセスしようと試みると、保護論理912はそのようなアクセスを防止しうる。代替的に、もし、複数のアクティブなスレッドが同じ物理シーケンサーにアクセスしうるよう共有が許容されていれば、任意的な共有論理914が共有パラメータおよび制約を実施しうる。
ここで、割り当て論理485によって実行されるシーケンサー割り当ての少なくとも一つの実施形態のさらなる議論のために、図12を参照する。そのような割り当ては、物理シーケンサーの初期割り当て;物理シーケンサーの再マッピング;およびマッピング情報の維持/更新を含みうる。
図12は、シーケンサー割り当てのための方法1200の少なくとも一つの実施形態についての制御およびデータの流れを示す流れ図である。少なくとも一つの実施形態については、方法1200はマッピング・マネージャ(たとえば図5の580参照)によって実行されうる。より具体的には、少なくとも一つの実施形態については、方法1200は割り当て論理(たとえば図5の485参照)によって実行されうる。
図12は、本方法がブロック1202で始まり、ブロック1204に進むことを示している。ブロック1204では、本方法は、ソース・シーケンサー104a上で実行されるシーケンサー認識命令にパラメータとして与えられている宛先シーケンサーの論理アドレスを受け取る。
次いで処理はブロック1206に進み、ここではマッピング構造1250において探索が実行される。マッピング構造1250は、図5に示した構造580のようなマッピング構造でありえ、記憶媒体(たとえば図5の460のような)に記憶されている。マッピング構造1250が論理シーケンサー・アドレスについての有効な項目を含んでいて、すでに割り当てられている物理シーケンサー識別子が得られる場合、探索1206がヒットを生じたという。そうでない場合は「ミス」が生じたという。
少なくとも一つの他の実施形態については、ブロック1206で実行された探索は、最初は図5に示された構造518のような加速構造において実行されうる。ヒットになれば、処理はすぐブロック1212に進む。ヒットにならなければ、本方法はブロック1206において、上に説明したような記憶媒体に記憶されているマッピング構造中での探索を実行しうる。
ブロック1208では、ミスが生じたかどうかが判定される。ブロック1206との関係で上に論じたマッピング構造(および/または加速構造)におけるミスの判定に加えて、ブロック1208での処理は、指定された論理シーケンサー・アドレスについてページ・テーブル項目または加速構造項目が存在していても「ミス」が生じたと判定しうる。すなわち、ページ・テーブル項目の存在/不在フィールド634の内容が指定された論理シーケンサー・アドレスについての内容情報が補助記憶にあふれていることを示すときには(図13のブロック512および補助記憶550参照)、ブロック1208で「ミス」が判定される。
図12は、判断ボックス1208の結果として、処理が、ミスについてはブロック1210に進み、ヒットについてはブロック1209に進むことを示している。ヒットについては、シーケンサー認識命令のためのサポートがブロック1212で実行される。少なくとも一つの実施形態については、ブロック1212で実行されるサポートに含まれるものとして、あるシーケンサー算術命令について、ブロック1206の探索の間に得られた物理シーケンサー識別子によって同定される宛先シーケンサー104nに信号を送ることがある。そのような信号の結果、宛先シーケンサー104nへの所望の信号伝達が、シーケンサー算術命令で指定されたとおりに完遂されうる。ブロック1212から処理はブロック1214で終了する。
図12は、ブロック1208でミスが判定された場合に処理がブロック1210に進むことを示している。ブロック1210では、ミス・フォールト・ハンドラが呼び出されうる。次いで処理はブロック1214で終了する。
図13は、ブロック1210の処理(図12参照)の結果として呼び出されうるミス処理のための方法1300の少なくとも一つの実施形態についての制御の流れおよびデータの流れを示す流れ図である。当業者は、ブロック1210でフォールト・ハンドラを直接呼び出すのではなく、ブロック1210でシーケンサー・ページ・フォールトがトリップされてもよいことを理解するであろう。そのような実施形態については、ブロック1210でトリップされたフォールトの結果として、フォールト・ハンドラが呼び出されうる。フォールト・ハンドラは今度は図13に示されている方法1300を呼び出しうる。
図13は、割り当て論理485によって実行されうる方法1300が一般に、図12のブロック1204で受け取られた論理シーケンサー・アドレスのために物理シーケンサーを割り当てることを示している。図13をさらに論じる前に、少なくとも一つの代替的な実施形態については、図13の方法1300は、図12のブロック1208で検出された「ミス」以外の状況についても呼び出されうることを注意しておくべきであろう。少なくとも一つの実施形態については、方法1300は、割り当て論理485が、物理シーケンサー割り当てのために機能属性に基づく監視、実施および最適化を実行しうるように呼び出されうる。そのような機能属性に基づく監視は違反条件を検出し、その結果として「ミス」条件を生じることがある。
はっきりしたアーキテクチャ上の資源として、アドレッシング可能な論理シーケンサー420〜426はアドレッシング可能な論理メモリ位置とは、空間的属性および時間的属性の両方で異なっている。空間的には、アプリケーション・プログラムによって使われる論理シーケンサー・アドレスは、所与の単一シーケンサー命令セット・アーキテクチャのためのレジスタ状態についてのコンテキスト状態情報を含む。(たとえば、図1に示されたアーキテクチャ状態AS参照)。時間的には、論理シーケンサー・アドレスは、変動する度合いの適時性(たとえばスケジューリング)要件をもつことのできる制御フローのはっきりしたコンピューティングの流れ(distinct computation stream)に対応する。
したがって、論理シーケンサー・アドレスから物理シーケンサー・アドレスへのマッピングは論理シーケンサーのコンテキストをマッピングできる物理シーケンサーの割り当てに関わるのみならず、シュレッドを走らせるために論理シーケンサーを使ってプログラムが前に進むことを保証するような仕方で、その論理シーケンサーを走らせる時間量子の割り当てにも関わる。少なくとも一つの実施形態については、フィールド638内のスケジューリング・ヒントのような時間的要件は、論理シーケンサー記述子630内に表されることができ、対応する論理シーケンサー・アドレスを一組の物理シーケンサーから別の組にマッピングし直すよう、方法1300の時間に基づく周期的な作動を引き起こしうる。少なくとも一つの実施形態については、M個の論理シーケンサー・コンテキストのN個の物理シーケンサーへの再マッピングは、ラウンドロビン・スケジューリング・ポリシーを実装しうる。これは、M個の論理シーケンサー・コンテキストをN個の物理シーケンサーを通じて周期的かつ逐次的に巡回させうるものである。少なくとも一つの実施形態については、スワップ・アウトされるまでに論理シーケンサーが物理シーケンサー上で走る期間であるスケジューリング量子は、OSによってそのスレッドが割り当てられたOS量子の細分である。このポリシーは、スレッド中のすべての論理シーケンサーが全体として前に進むことを保証できる。
図13は、論理シーケンサーのための状態情報が、補助記憶1275へのあふれ出し1308(保存)および補助記憶1275からの充填1310(復元)の対象となることを示している。補助記憶1275はメモリを含むいかなる記憶構造であってもよい。
少なくとも一つの実施形態については、あふれ出し1308および充填1310の対象となる論理シーケンサー状態情報はコンテキスト情報を含みうる。そのようなコンテキスト情報はたとえば、シーケンサー上のアーキテクチャ的に定義されたレジスタについてのすべてのレジスタ状態を含みうる。少なくとも一つの実施形態については、論理状態シーケンサー情報はまた、任意的に、最低必要量子および/または所望の再スケジューリング頻度など、スケジューリングに関係した時間情報をも含みうる。
この情報に加えて、マッピング・マネージャ(たとえば図5の502参照)の割り当て論理(たとえば図5の485参照)はまた、若干の例を挙げれば温度、機能性、パフォーマンス、電力、機能ユニットの組成およびシーケンサー実行状態といった、シーケンサー機能属性および特性に関係したある種の物理シーケンサー情報へのアクセスをも有する。
したがって、図13の方法1300は、物理シーケンサーを割り当てまたは再マッピングするときに、マッピング・マネージャが、そのような機能属性に基づいた論理シーケンサーおよび/または物理シーケンサーの状態情報を考慮することを許容するために、呼び出されうる。たとえば、方法1300は、物理シーケンサーの実行状態が、停止しており、前に進んでいないことを示すときにトリガーされうる。そのような実行状態は、たとえば、シーケンサーがキャッシュ・ミスのような長い遅延のイベントを経験したとき、あるいは同期オブジェクト上のロックを待っているときに起こりうる。
同じように、方法1300が呼び出されるのがページ・テーブル1250中のミスに起因してであるときは、割り当ておよび再割り当てのための物理シーケンサー選択を通知し、向上させ、あるいは最適化するために、物理シーケンサー属性が考慮に入れられうる。図13に示されている方法1300の実行の間に割り当て論理485によって考慮に入れられうる物理シーケンサー属性のさまざまな種類の例として、暫時図14に目を向ける。
図14は、マルチシーケンサー・マルチスレッド・システム1400が一般に、マッピング・マネージャ1420および少なくとも二つの相異なる型の物理シーケンサー1410、1412を含みうることを示している。(少なくとも一つの他の実施形態については、マルチシーケンサー・マルチスレッド・システムは単一の種類のシーケンサーのみを含む。)図3では、各型1410、1412のための追加的なシーケンサーが任意的であることを示すため、点線および省略点が使われている。
システム1400は各型のシーケンサーの一つまたは複数を含みうる。したがって、シーケンサー型1410、1412のそれぞれは、特定の機能属性(capability attributes)のセットに関連付けられうる。シーケンサー型が相異なるので、それらは「非対称である」という――属性は複数のシーケンサー型の間ではかなり異なることがある。少なくとも一つの実施形態については、たとえば、シーケンサー1410、1412は電力消費指標に関して異なりうる。少なくとも一つの他の実施形態については、シーケンサー1410、1412は機能性指標(functionality metric)に関して異なりうる。たとえば、第一のシーケンサー1410は、OSがシステムレベル特権コードとユーザーレベル特権コードの両方を走らせられるTシーケンサーによって要求されるすべての機能性を実装していてもよいし、その一方、第二のシーケンサー1412は、ユーザーレベル特権コードを走らせる必要があるだけで、システムレベル特権コードを走らせることは要求されないSシーケンサーによって要求される機能性を実装するだけでもよい。もう一つの例では、第一のシーケンサー型1410は、所与の命令セットについて機能性の面での機能(functional capabilities)の完全なセットを実装しうる。しかしながら、第二のシーケンサー型1412は命令セットの機能の部分集合のみを実装するといった、退化された機能性を含みうる。たとえば、一つの[退化された]シーケンサーは、整数および浮動小数点命令は実行できたとしても、ストリーミングSIMD拡張3(Streaming SIMD Extensions 3)(「SSE3」)単一命令複数データ(single instruction multiple data)(「SIMD」)の命令セット拡張を実行することはできない。他方、別のシーケンサーは、第一のシーケンサーが実行できるすべての命令を実行でき、その上SSE3命令をも実行できてもよい。
機能指標(functional metrics)ではなく、あるいは機能指標に加えて、非対称なシーケンサー型1410、1412は、電力消費および/または温度属性に関しても異なりうる。たとえば、第二のシーケンサー型1412は第一のシーケンサー型1410よりも、より少ない電力を要求することがあり、あるいはよりゆっくり計算を実行することがありうる。また、マッピング・マネージャ1420は、シーケンサー割り当てを実行するときに温度を考慮に入れてもよい。たとえば、特定のシーケンサーが高温閾値に近づいている場合、その仮想シーケンサー・アドレスをより低温の別の実物シーケンサーに再マッピングするために、図13の方法1300が呼び出されてもよい。これらの機能属性(電力要件、スピード、機能性の面での機能(functional capability)、温度、実行状態など)は、ソフトウェア・マッピング・マネージャ502に利用可能であってもよく、マッピング過程(ここでは時に「シーケンサー割り当て[sequencer rationing]」と称される)に通知するために利用されてもよい。それについて下記でより詳細に論じる。
図13に戻り、ここで方法1300を論じる。図13は、ブロック1302で始まり、ブロック1304に進む方法を示している。ブロック1304では、図12のブロック1204で受け取られた、論理シーケンサー・アドレスに割り当てられるべきシーケンサーまたはシーケンサー・フレームが同定される。ここでもまた、用語「シーケンサー」は、個別のシーケンサーまたはフレーム中の複数のシーケンサーのいずれかを意味するものと理解されるであろう。このように、「シーケンサー」および「シーケンサー・フレーム」の用語は以下の議論では交換可能に使われることがある。
ブロック1304で潜在的なシーケンサーを決定するためには、さまざまな実施形態について、さまざまなアプローチが利用されうる。一般に、決定1304は伝統的な選択手法を含んでいてもよく、その際、該手法はシーケンサー属性情報から情報を受ける。
少なくとも一つの実施形態については、現在一つまたは複数の空いているシーケンサーがある場合、ブロック1304では空いているシーケンサーが選択される。一つのシーケンサーが空いていればそれが選択される。少なくとも一つの実施形態については、空いている複数のシーケンサーのどれがブロック1304で選択されるべきかを決定するために、後述の属性解析が利用される。
どのシーケンサーも空いていない場合、現在アクティブなシーケンサー(時に「犠牲者」と称される)がブロック1304で選択される。一つのアクティブな(すなわち「ダーティー」な)シーケンサーを「犠牲者」として選択するためには、いかなる既知の置換アルゴリズム、またの名を犠牲者選択アルゴリズムがブロック1304で使われてもよい。そのようなアルゴリズムに含まれるものとしては、これに限られないが、最近不使用、先入れ先出し、最長未使用時間、低使用頻度、時間経過、ワーキング・セット(Working Set)、クロックおよびワーキング・セット・クロック(Working Set Clock)(「WSClock」)がある。ブロック1304で、新来のシーケンサーのための余地を作るために補助記憶1275に追い出されるべきシーケンサーを選択するためには、そのようないかなる手法を使ってもよい(新来のシーケンサーとは、ブロック1210で方法1300の呼び出しを引き起こした論理シーケンサーのことである)。
シーケンサーが空きリストから選択されるにしろ、犠牲者シーケンサーが置換アルゴリズムに従って選択されるにしろ、犠牲者選択は任意的に、ブロック1304において、機能属性解析によって情報を受ける。
機能属性解析は、ブロック1304で、物理シーケンサーの現在の属性がそのシーケンサーを割り当てまたは再割り当てのためにより有望な候補にするか、より有望でない候補にするかを判定するために、ブロック1304において実行されうる。たとえば、機能属性解析は、特定の機能のセットを実行できる、あるいは他よりも低電力または低温であるなどといったものを選択するために、空きリストのエントリーのうちから選択するために利用されうる。代替的に、機能属性解析は、あふれ出しの対象とすべきより有望な物理シーケンサーを選択するために、置換アルゴリズムによって考えられる複数の物理シーケンサーのうちから選択をするために利用されてもよい。たとえば、機能属性解析は、ある物理シーケンサーが現在前に進んでいない(すなわち、長い遅延のキャッシュ・ミスのため停滞を経験している、あるいは同期オブジェクトへのロックを競って待っている)ならば、その物理シーケンサーが良好な候補であると指示しうる。
ブロック1304から、処理はブロック1306に進む。ブロック1306では、選択された犠牲者の状態が補助記憶1275にスワップ・アウトされるべきかどうかが判定される。ブロック1306での判定は、犠牲者が空きリストから選択されている場合には「偽」と評価される。そのような場合、処理はブロック1312に進む。
しかしながら、犠牲者シーケンサーが現在アクティブである場合、処理はブロック1306からブロック1308へと進む。ブロック1308では、シーケンサーのためのコンテキスト状態は補助記憶1275にあふれ出す。シーケンサー・フレームを利用する実施形態については、犠牲者シーケンサー・フレームにおけるあらゆるシーケンサーについてのコンテキスト状態が補助記憶1275にあふれ出る。次いで処理はブロック1310に進む。
ブロック1310では、シーケンサーについての(あるいは代替的に、フォールトしているシーケンサー・フレーム内の全シーケンサーについての)コンテキスト状態が補助記憶1275から取得される。コンテキスト情報はブロック1304で選択された物理シーケンサーに与えられる。こうにして、犠牲者シーケンサーのためのコンテキスト状態が補助記憶1275にあふれ出し1310、新たな論理シーケンサー・アドレスのためのコンテキスト状態が補助記憶1275から犠牲者の物理シーケンサーに充填される。
ブロック1310から、処理はブロック1312に進む。ブロック1312は、選択された物理シーケンサーが現在アクティブでなければ、ブロック1306から直接到達することもありうる。ブロック1312では、選択された物理シーケンサーについての新たな論理シーケンサー・アドレス割り当てを反映するために、一つまたは複数の変換構造が更新される。少なくとも一つの実施形態については、ブロック1312でマッピング構造1250が更新される。
マッピング構造1250を一つまたは複数のシーケンサー・ページ・テーブルとして実装する実施形態については、論理シーケンサー・アドレスから物理シーケンサー・アドレスへの新しいシーケンサー・マッピングを反映するために、シーケンサー・ページ・フォールトを引き起こしたスレッドのためのシーケンサー・ページ・テーブルが更新される。そのような実施形態については、ブロック1312で修正された各ページ・テーブル項目についての存在フィールド(図6、634参照)は、そのページについてのコンテキスト情報が補助記憶1275から取得される必要がないことを示すよう設定される。
さらに、ブロック1308で補助記憶1275にあふれ出されたシーケンサーについてのページ・テーブル項目についての存在フィールドは、そのコンテキスト情報がその物理シーケンサーではなく補助記憶に記憶されていることを示すよう修正される。
最後に、図11に示されたSTLB1100のような任意的なハードウェア変換加速構造1318を利用する実施形態については、ブロック1312で次のことも実行されうる:変換加速構造1218がスレッド・コンテキスト切り換えのためにフラッシュされる。次いで処理はブロック1314で終了する。
図7および図8は、図12および図13との関連で一般的に論じてきた方法1300の処理の一部をさらに例解するための個別的な例を記述している。図7は、図6に示される見本スレッド、スレッドA〜Dについて割り当て論理485によって実行される見本のシーケンサー割り当てシナリオを示している。図7は、見本のシーケンサー割り当てシナリオの間に実行される一連の動作AA〜AFを示している。そのような動作は、図12および図13で記述されているような物理シーケンサーの割り当てのための一般的な方法1200および1300の個別的な例を反映している。したがって、図7および図8について、以下で図12および図13をも参照しつつ論じる。
図7は、12個の利用可能な物理シーケンサー・フレームを含む見本の実施形態を示している。図7の動作AAは初期状態を示す。ここでは、物理フレームはまだどれ一つとして論理シーケンサー・アドレスにマッピングされていない。
図7の動作ABは、三つのシーケンサー・フレーム、フレーム0〜2をスレッドAの三つのページに割り当てることを示している。具体的には、図7は、動作ABにおいて、スレッドAのページ0(「A0」と称される)がフレーム0にマッピングされることを示している。スレッドAのページ0のこの初期マッピングは、スレッドAについてのページ番号1を含む論理シーケンサー・アドレス受領の最初の生起に反応して実行されうる。(図10の論理シーケンサー・アドレス1030のページ番号1032参照)。
そのような論理シーケンサー・アドレスは、図12のブロック1204で割り当て論理によって受領されうる。そのページはまだ物理シーケンサーにマッピングされていないので、図12のブロック1206におけるテーブル探索はミスになり、よって処理はブロック1210に進み、その後、図13のブロック1304に進む。図13では、そのページのために物理シーケンサー・フレームが選択される。図7に示される例については、図7に示されるように、ブロック1304でシーケンサー・フレーム0が選択される。
同様に、図7の動作ABは、スレッドAのページ1および2の初期マッピングが同様の仕方で実行されうることを示している。
図7はまた、スレッドBについてのページの初期マッピングが図7の動作ACで同様にして割り当てられうることを示している。すなわち、図7は、スレッドBのページ0、1および2が図7の動作Cでシーケンサー3、4および5にマッピングされうることを示している。
図7はまた、スレッドCについてのページの初期マッピングが図7の動作ADで同様にして割り当てられうることを示している。すなわち、図7は、スレッドCのページ0、1、2および3が図7の動作ADでシーケンサー6、7、8および9にマッピングされうることを示している。
図7は、動作AEにおいて、割り当て論理によってスワップ・アウトする処理が実行されうることを示している。そのような処理は、まだマッピングされていないページを含む論理シーケンサー・アドレスを受け取るのに反応して実行されうる。したがって、上で論じたように、ブロック1204で論理シーケンサー・アドレスが受け取られうる。次いでブロック1206および1210が実行されうる。図13を参照すると、ここでもまた、ブロック1304でそのページのためのシーケンサーが選択されることが示されている。図7に示されている例については、ブロック1204でスレッドDについての最初の参照が受け取られた時点では、二つのシーケンサーしか残っていない。
しかしながら、スレッドDは四つの論理シーケンサー・アドレスを含んでおり、そのため、スレッドDの機能属性におけるスケジューリング要件は最低で四つの物理シーケンサーを要求すると想定する。少なくとも一つの実施形態については、あるスレッドについて要求される最低数の物理シーケンサーが、ブロック1304で割り当て論理によって決定される。少なくとも一つの実施形態については、あるスレッドによって必要とされる論理シーケンサーの数は、機能報告命令を介してアーキテクチャ的に提供されうる。そのような数は、たとえば、CPUID命令のような、単一のスレッドがアクセスできる論理シーケンサー・アドレスの数を報告する機能報告命令を実行することによって決定されうる。
したがって、ブロック1304において、アクティブな「犠牲者」シーケンサーがスワップ・アウトされるよう選択される。上で論じられているように、どのシーケンサー(単数または複数)をスワップ・アウトするかを決定するために、シーケンサー属性が考慮に入れられうる。たとえば、割り当て論理は、ブロック1304において、長い遅延のキャッシュ・ミスのために停滞していて、前に進んでおらず、よってそのシーケンサー・フレームがスレッドDのための余地を作るためのスワップの対象として選択されるべきであると判定しうる。
図7は、動作AEで、物理シーケンサー・フレーム3、4および5についてのコンテキスト状態が補助記憶にスワップ・アウトされることを示している。同様に、図13は、補助記憶へのスレッド・コンテキスト保存がブロック1308で起こることを示している。スレッドD自身が以前にアクティブだったことがあり、それがスレッド終了前に補助記憶1275にスワップされてしまったような場合、そのコンテキストが、補助記憶1275から、空けられた物理シーケンサーに復元されることになる。
だが、図7に示される例の場合は、動作AFが示しているのは、スレッドDのページについての初期マッピングである。したがって、スレッドDについてのコンテキスト状態を補助記憶1275から復元する必要はなく、その代わりに初期値で初期化される。したがって、ブロック1310は、すべての場合に必ず実行されるわけではないことを示すため、図13では点線で記されている。
図7の動作AFは、スレッドDについてのページ0、1、2および3がそれぞれ物理シーケンサー3、4、5および10にマッピングされることを示している。
図8は、図7で示した例示的なシナリオの動作AF後にシーケンサー・ページ・テーブル610a〜610dの内容を示している。図8は、スレッドAについてのページ・テーブル610aが、スレッドAについてのページ0、1および2のそれぞれ物理ページ・フレーム0、1および2へのマッピングを示していることを示している。ページ・テーブル610aの各項目についての「存在/不在(present/absent)」フィールド(図6、634参照)の値(“P”)は、それらのページについてのコンテキスト情報が補助記憶ではなく物理シーケンサー・フレームにロードされていることを示す。
同様に、図8は、スレッドCについてのページ・テーブル610cが、スレッドCのページ0、1、2および3のそれぞれ物理ページ・フレーム6、7、8および9へのマッピングを示していることを示している。スレッドDについてのページ・テーブル610dは、スレッドDのページ0、1、2、3のそれぞれ物理シーケンサー3、4、5および10へのマッピングを示している。ここでもまた、テーブル610cおよび610dの各項目についての存在/不在フィールド(図6、634参照)の値は、それらの項目についてのアドレスが、現在のコンテキストを保持する物理シーケンサー・フレームを示していることを示している。
図8はさらに、スレッドBについてのページ・テーブル610bが、ページ・テーブル610bの各項目についての存在/不在フィールド634の不在の値“A”を示していることを示している。したがって、スレッドBについてのページのためのコンテキストは、補助記憶1275の指示されたアドレス(それぞれxxx、yyy、zzz)に見出すことができる。
少なくとも一つの実施形態については、存在/不在フィールドを含めたスレッド・ページ・テーブル610a〜610bの更新は、割り当て論理によって、図13のブロック1312において実行される。
最後に、図8は、空きフレーム・リスト620が物理シーケンサー・フレーム11が未割り当てのままであることを示すことを示している。
図15は、開示されている諸技法を実行する機能のあるコンピューティング・システム1500の少なくとも一つの見本実施形態を示している。コンピューティング・システム1500は少なくとも一つのプロセッサ・コア1504およびメモリ・システム1540を含む。メモリ・システム1540はより大きな、比較的より遅いメモリ記憶1502とともに、命令キャッシュ1544および/もしくはデータキャッシュ1542のような一つもしくは複数のより小さな比較的高速のキャッシュを含みうる。メモリ記憶1502は、プロセッサ1504の動作を制御するための命令1510およびデータ1512を保存しうる。メモリ記憶1502の少なくとも一つの実施形態はマッピング構造1580をも含みうる。
メモリ・システム1540はメモリの一般化された表現として意図されており、ハード・ドライブ、CD-ROM、ランダムアクセスメモリ(RAM)、動的ランダムアクセスメモリ(DRAM)、静的ランダムアクセスメモリ(SRAM)、フラッシュメモリおよび関係した回路といった多様な形のメモリを含みうる。メモリ・システム1540は、プロセッサ1504によって実行されうるデータ信号によって表現される命令1510および/またはデータ1512を保存しうる。命令1510および/またはデータ1512は、ここに議論された技術のいずれかまたは全部を実行するためのコードおよび/またはデータを含みうる。
プロセッサ1504は、実行コア1530に命令情報を供給するフロントエンド1520を含みうる。フェッチされた命令情報は、実行コア1530による実行を待つべく、キャッシュ1525にバッファリングされうる。フロントエンド1520は、その命令情報をプログラム順に実行コア1530に供給しうる。少なくとも一つの実施例については、フロントエンド1520は、実行されるべき次の命令を決めるフェッチ/デコード・ユニット322を含む。システム1500の少なくとも一つの実施例については、フェッチ/デコード・ユニット122は、単一の次命令ポインタおよびフェッチ論理120を含みうる。しかしながら、各プロセッサ1504が複数スレッド・コンテキストをサポートする実施形態では、フェッチ/デコード・ユニット122は、サポートされるスレッド・コンテキストそれぞれについて相異なる次命令ポインタおよびフェッチ論理120を実装する。マルチプロセッサ・システムにおける追加的な次命令ポインタおよびフェッチ論理120が任意的であるという性質は、図15で点線によって表されている。
ここに記載される諸方法の実施形態は、ハードウェア、ハードウェア・エミュレーション・ソフトウェアもしくはその他のソフトウェア、ファームウェアまたはそのような実装手法の組み合わせにおいて実装されうる。本発明の実施形態は、少なくとも一つのプロセッサ、データ記憶システム(揮発性および不揮発性のメモリおよび/または記憶要素を含む)、少なくとも一つの入力装置ならびに少なくとも一つの出力装置を有するプログラム可能システムのために実装されうる。本出願の目的のためには、処理システムは、たとえばデジタル信号プロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)またはマイクロプロセッサといったプロセッサをもつ任意のシステムを含む。
プログラムは、汎用または特殊目的プログラム可能処理システムによって読み取り可能な記憶媒体またはデバイス(たとえばハードディスク・ドライブ、フロッピー(登録商標)ディスク・ドライブ、読み出し専用メモリ(ROM)、CD-ROMデバイス、フラッシュメモリ・デバイス、デジタル多用途ディスク(DVD)またはその他の記憶デバイス)上に記憶されうる。処理システム中のプロセッサにとってアクセス可能な命令が、該処理システムによって前記記憶媒体またはデバイスが読まれたときに、ここに記載される手順を実行するために、該処理システムを構成設定し、動作させることを提供する。本発明の実施形態は、処理システムとともに使用するよう構成された機械可読記憶媒体として実装されると考えられてもよい。ここで、そのように構成された記憶媒体は、処理システムをして、ここに記載される機能を実行するために特定かつ所定の仕方で動作させる。
見本システム1500は、インテル社から入手可能なペンティアム(登録商標)、ペンティアム(登録商標)プロ、ペンティアム(登録商標)II、ペンティアム(登録商標)III、ペンティアム(登録商標)4およびアイテニアム(登録商標)およびアイテニアム(登録商標)2といったマイクロプロセッサに基づいた処理システムを表す。ただし、その他のシステム(他のマイクロプロセッサをもつパーソナル・コンピュータ(PC)、エンジニアリング・ワークステーション、携帯情報端末およびその他のハンドヘルド装置、セットトップボックスなどを含む)を使ってもよい。ある実施例については、見本システムはマイクロソフト社から入手可能なウィンドウズ(登録商標)オペレーティング・システムのあるバージョンを実行してもよい。ただし、他のオペレーティング・システムおよびグラフィカルユーザーインターフェースなどを使用してもよい。
本発明の具体的な実施形態について図示し、記載してきたが、付属の請求項の範囲から外れることなく変更および修正をなすことができることは当業者には明らかであろう。たとえば、図5に示されたマッピング構造580は、上で論じた以外の仕方で編成されてもよい。たとえば、マッピング構造580は。逆(inverted)シーケンサー・ページ・テーブルとして編成されてもよい。これは、物理シーケンサー・フレームの数に等しい数のテーブル項目を有するハッシュ表である。さらに、マッピング構造580の各テーブル項目は、仮想ページからページ・フレームへのマッピングのリンクされたリストに関連付けられていてもよい。
また、たとえば、マッピング・マネージャ(図5、502参照)は、セグメンテーションとページング両方を組み合わせたハイブリッド・マッピング方式をサポートしてもよい。マッピング・マネージャはこの手法のために、プロセス中の各セグメントについて異なるページ・テーブルを利用してもよく、それにより異なるセグメントについてはページ数が変わってもよい。
別の代替的な実施形態については、マッピング・マネージャは、シーケンサー割り当てを実行するときにシーケンサー属性情報を考慮に入れうるばかりでなく、物理シーケンサー自身によって実行されるタイムアウト動作をも考慮に入れうる。すなわち、シーケンサーは、タイムアウト・イベントの生起に際してイベント・ハンドラを呼び出すようプログラムされうる。タイムアウト・イベントは、たとえば、シーケンサーが前に進んでいないことを示すいかなるイベントでもよい(長い遅延の最終レベルのキャッシュ・ミス、同期オブジェクトへのロック待ち)。シーケンサーがタイムアウトになると、タイムアウト・イベントのためのイベント・ハンドラは、そのシーケンサーの現在の命令ストリームを「ペンディング待ち行列」に入れ、物理シーケンサーを空きリストに戻すため、譲歩(a yield)を実行しうる。あるいは、上記のLSCQをサポートする代替的な実施形態では、タイムアウトは、現在アクティブな論理シーケンサーをLSCQにあふれ出させて、マッピング・マネージャ502のほうはLSCQから置換論理シーケンサー・コンテキストを見出しうる。これはスケジューリング論理(たとえば図4および図5の487参照)によって実行されうる。スケジューリング論理476は、空けられた物理シーケンサー上で走るよう置換論理コンテキストをスケジューリングしうる。
イベント・ハンドラは、前記の譲歩を実行する代わりに、またはそれに加えて、ライブネス(live-ness)シーケンサー検査を次の仮想シーケンサーまたはシーケンサー・ページに送ってもよい。事実上、そのようなライブネス問い合わせを送ることは、あるスレッドについてのすべての仮想シーケンサーが予測可能な時間期間内にページングされうるようにするために、経時(aging)機構(クロックまたはWSClockと類似)を提供する。
このように、当業者はより広い諸側面における本発明から外れることなく、変更および修正がなし得ることを認識するであろう。付属の請求項の範囲内には、本発明の真の範囲内にはいるそのようなすべての変更および修正が包含される。
マルチシーケンサー・システムのさまざまな実施形態を示すブロック図である。 マルチシーケンサー・システムのための一般的な並列プログラミング手法の図的な表現を示す図である。 各シーケンサーについて一意的な識別子を有するマルチシーケンサー・システムの少なくとも一つの実施形態を示すブロック図である。 論理シーケンサー・アドレスの物理シーケンサー・アドレスへのマッピングを管理するためのマッピング・マネージャを含むマルチシーケンサー・システムの少なくとも一つの実施形態を示すブロック図である。 仮想化論理シーケンサー・アドレスの物理シーケンサー・アドレスへのマッピングを管理するためのマッピング・マネージャを含むマルチシーケンサー・システムの少なくとも一つの実施形態を示すブロック図である。 マッピング構造の少なくとも一つの実施形態のためのさらなる詳細を示すブロック図である。 実際のシーケンサー・フレームの仮想化論理シーケンサー・アドレスへのマッピングのための例示的なシナリオの少なくとも一つの実施形態を示すデータ流れ図である。 図7に示した見本シナリオの見本マッピング構造の内容を示すブロック図である。 マッピング・マネージャのための割り当て論理の少なくとも一つの実施形態を示すブロック図である。 仮想シーケンサー・アドレスから実際のシーケンサー識別子に変換する方法の少なくとも一つの実施形態を示すデータ流れ図である。 変換加速構造の少なくとも一つの実施形態のための見本項目を示すブロック図である。 シーケンサー割り当てのための方法の少なくとも一つの実施形態のための制御およびデータの流れを示す流れ図である。 論理シーケンサー・アドレスのためのページ・テーブル・ミスを扱うための方法の少なくとも一つの実施形態のための制御およびデータの流れを示す流れ図である。 非対称的なシーケンサーを含むマルチシーケンサー・マルチスレッド・システムの少なくとも一つの実施形態を示すブロック図である。 開示された技術を実行できるシステムの少なくとも一つの実施形態についてのさらなる詳細を示すブロック図である。 ユーザーレベルのシーケンサー認識動作をサポートするマルチシーケンサー・システムのもう一つの実施形態のブロック図である。

Claims (17)

  1. ユーザー命令において指定された論理シーケンサー・アドレスを、コンピュータ・システムにおいて実装された割り当て論理が受け取る段階と;
    前記割り当て論理によって、前記論理シーケンサー・アドレスを複数の物理シーケンサー・フレームのうちの一つに割り当てる段階と;
    第二のユーザー命令に付随して前記論理シーケンサー・アドレスを、前記コンピュータ・システムにおいて実装された変換論理が受け取る段階と;
    前記変換論理によって、前記割り当てられた物理シーケンサー・フレームを示す識別子を生成および出力する段階、
    とを有しており、
    前記論理シーケンサー・アドレスと前記割り当てられた物理シーケンサー・フレームの識別子とのマッピングを前記コンピュータ・システムのマッピング構造が記録
    生成が、前記割り当てられた物理シーケンサー・フレームを決定するために前記マッピング構造を参照する段階をさらに有
    記マッピング構造がメモリ記憶中にあ
    記マッピング構造の少なくとも一部分をハードウェア・バッファにバッファリングする段階をさらに有する、
    法。
  2. 前記生成が、前記割り当てられた物理シーケンサー・フレームを決定するために前記ハードウェア・バッファを参照する段階をさらに有する、
    請求項記載の方法。
  3. 前記物理シーケンサー・フレームが単一の物理シーケンサーのみを含む、
    請求項1記載の方法。
  4. 前記割り当てる段階が、前記複数の物理シーケンサー・フレームのうち少なくとも一つが現在割り当てされていないかどうかを判定する段階をさらに有する、
    請求項1記載の方法。
  5. 前記割り当てる段階が、複数のアクティブなシーケンサーのうちから犠牲者を選択する段階をさらに有し、前記犠牲者とは、追い出されるべき現在アクティブなシーケンサーである、
    請求項1記載の方法。
  6. 前記割り当てる段階が、前記複数の物理シーケンサー・フレームの一つまたは複数の属性を評価する段階をさらに有する、
    請求項1記載の方法。
  7. マルチシーケンサー・マルチスレッド・システムのためのマッピング・マネージャであって:
    論理シーケンサー・アドレスを物理シーケンサーに割り当てる割り当て論理と;
    論理シーケンサー・アドレスを受け取って、割り当てられた物理シーケンサーに関連付けられた識別子を提供する変換論理とを有しており、
    前記論理シーケンサー・アドレスと前記識別子とのマッピングはマッピング構造に記録され、
    前記識別子の提供が、前記割り当てられた物理シーケンサーを決定するために前記マッピング構造を参照することを含み、
    前記マッピング構造がメモリ記憶中にあり、
    前記マッピング構造の少なくとも一部分がハードウェア・バッファにバッファリングされる、
    マッピング・マネージャ・デバイス。
  8. 前記割り当て論理が、第一のシーケンサーが第二のシーケンサーにアクセスすることをある所定の条件のもとで許容する共有論理をさらに有する、請求項記載のマッピング・マネージャ・デバイス。
  9. シーケンサーについての内容情報を補助記憶にスワップする再配置論理をさらに有する、
    請求項記載のマッピング・マネージャ・デバイス。
  10. 第一のシーケンサーが第二のシーケンサーに許可なくアクセスすることを防ぐ保護論理をさらに有する、
    請求項7記載のマッピング・マネージャ・デバイス。
  11. 前記変換論理がさらに、ユーザー命令中での参照に反応して前記論理シーケンサー・アドレスを受け取るようになっている、
    請求項記載のマッピング・マネージャ・デバイス。
  12. 実行のための論理シーケンサーの組を物理シーケンサーのより小さな組の上でスケジューリングするスケジューリング論理、
    をさらに有する、請求項記載のマッピング・マネージャ・デバイス。
  13. ユーザー・プログラムを記憶するメモリ・システムと;
    同時並行したスレッド実行が可能な複数の物理シーケンサーと;
    論理シーケンサーのためのアドレスを物理シーケンサー・フレームにマッピングするためのマッピング・マネージャとを有しており
    前記論理シーケンサーのためのアドレスと前記物理シーケンサー・フレームとのマッピングはマッピング構造に記録され、
    前記マッピング・マネージャが、前記割り当てられた物理シーケンサー・フレームを決定するために前記マッピング構造を参照するよう構成されており、
    前記マッピング構造がメモリ記憶中にあり、
    前記マッピング構造の少なくとも一部分がハードウェア・バッファにバッファリングされる、
    マルチシーケンサー・マルチスレッド・システム
  14. 前記物理シーケンサー・フレームが一つしかシーケンサーを含まない、
    請求項13記載のマルチシーケンサー・マルチスレッド・システム。
  15. 前記マッピング・マネージャが、前記論理シーケンサー・アドレスを受け取るのに反応して前記物理シーケンサー・フレームに関連付けられた識別子を提供するようになっている、
    請求項13記載のマルチシーケンサー・マルチスレッド・システム。
  16. 前記論理シーケンサーに関連付けられたコンテキスト情報を記憶するための補助記憶をさらに有する、
    請求項13記載のマルチシーケンサー・マルチスレッド・システム。
  17. 前記論理シーケンサーについてのコンテキスト情報を記憶するための論理シーケンサー・コンテキスト待ち行列をさらに有する、
    請求項13記載のマルチシーケンサー・マルチスレッド・システム。
JP2008505619A 2005-04-05 2006-04-05 シーケンサー・アドレス管理 Expired - Fee Related JP5058970B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/100,032 2005-04-05
US11/100,032 US7743233B2 (en) 2005-04-05 2005-04-05 Sequencer address management
PCT/US2006/013263 WO2006108169A2 (en) 2005-04-05 2006-04-05 Sequencer address management

Publications (2)

Publication Number Publication Date
JP2008536224A JP2008536224A (ja) 2008-09-04
JP5058970B2 true JP5058970B2 (ja) 2012-10-24

Family

ID=36649509

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008505619A Expired - Fee Related JP5058970B2 (ja) 2005-04-05 2006-04-05 シーケンサー・アドレス管理

Country Status (6)

Country Link
US (1) US7743233B2 (ja)
JP (1) JP5058970B2 (ja)
KR (2) KR101136610B1 (ja)
CN (1) CN101189575B (ja)
DE (1) DE112006000807B4 (ja)
WO (1) WO2006108169A2 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7743233B2 (en) 2005-04-05 2010-06-22 Intel Corporation Sequencer address management
US8079035B2 (en) * 2005-12-27 2011-12-13 Intel Corporation Data structure and management techniques for local user-level thread data
US20070204266A1 (en) * 2006-02-28 2007-08-30 International Business Machines Corporation Systems and methods for dynamically managing virtual machines
JP2008152594A (ja) * 2006-12-19 2008-07-03 Hitachi Ltd マルチコアプロセッサ計算機の高信頼化方法
US8074274B2 (en) * 2006-12-29 2011-12-06 Intel Corporation User-level privilege management
US8959516B2 (en) 2007-07-30 2015-02-17 International Business Machines Corporation Methods and systems for coordinated financial transactions in distributed and parallel environments
US7904696B2 (en) 2007-09-14 2011-03-08 Intel Corporation Communication paths for enabling inter-sequencer communication following lock competition and accelerator registration
US8719547B2 (en) 2009-09-18 2014-05-06 Intel Corporation Providing hardware support for shared virtual memory between local and remote physical memory
US8669990B2 (en) * 2009-12-31 2014-03-11 Intel Corporation Sharing resources between a CPU and GPU
JP5533206B2 (ja) * 2010-04-30 2014-06-25 富士通株式会社 検証支援プログラム、検証支援装置、および検証支援方法
US8639993B2 (en) 2010-11-11 2014-01-28 Microsoft Corporation Encoding data to enable it to be stored in a storage block that includes at least one storage failure
US9081660B2 (en) 2011-08-09 2015-07-14 Sandisk Technologies Inc. Method and system for efficiently swapping pieces into and out of DRAM
CN103136047B (zh) * 2011-11-30 2016-08-17 大唐联诚信息系统技术有限公司 一种多线程管理方法及架构
US8863141B2 (en) 2011-12-14 2014-10-14 International Business Machines Corporation Estimating migration costs for migrating logical partitions within a virtualized computing environment based on a migration cost history
US8694995B2 (en) 2011-12-14 2014-04-08 International Business Machines Corporation Application initiated negotiations for resources meeting a performance parameter in a virtualized computing environment
US10303618B2 (en) * 2012-09-25 2019-05-28 International Business Machines Corporation Power savings via dynamic page type selection
US9130979B2 (en) * 2012-12-11 2015-09-08 Microsoft Technology Licensing, Llc Systems and methods for using virtual machines to sequence native applications into virtual packages and for reimaging virtual machines
US9619364B2 (en) 2013-03-14 2017-04-11 Nvidia Corporation Grouping and analysis of data access hazard reports
US10193956B2 (en) 2013-11-13 2019-01-29 Five3 Genomics, Llc Grouping and transferring omic sequence data for sequence analysis
US9886736B2 (en) 2014-01-20 2018-02-06 Nvidia Corporation Selectively killing trapped multi-process service clients sharing the same hardware context
US10152312B2 (en) 2014-01-21 2018-12-11 Nvidia Corporation Dynamic compiler parallelism techniques
US9817664B2 (en) 2015-02-19 2017-11-14 Apple Inc. Register caching techniques for thread switches
CN106598545B (zh) * 2015-10-08 2020-04-14 上海兆芯集成电路有限公司 沟通共享资源的处理器与方法及非瞬时计算机可使用媒体
US10223295B2 (en) * 2016-03-10 2019-03-05 Microsoft Technology Licensing, Llc Protected pointers
US10453427B2 (en) 2017-04-01 2019-10-22 Intel Corporation Register spill/fill using shared local memory space
GB201717303D0 (en) 2017-10-20 2017-12-06 Graphcore Ltd Scheduling tasks in a multi-threaded processor
US10606641B2 (en) 2017-10-20 2020-03-31 Graphcore Limited Scheduling tasks in a multi-threaded processor
WO2019157743A1 (zh) * 2018-02-14 2019-08-22 华为技术有限公司 线程处理方法和图形处理器
KR20200085966A (ko) * 2019-01-07 2020-07-16 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
CN115190102B (zh) * 2022-07-22 2024-04-16 北京象帝先计算技术有限公司 信息广播方法、装置、电子单元、soc及电子设备

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4320453A (en) * 1978-11-02 1982-03-16 Digital House, Ltd. Dual sequencer microprocessor
US5627987A (en) * 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
US5559977A (en) * 1992-08-04 1996-09-24 Intel Corporation Method and apparatus for executing floating point (FP) instruction pairs in a pipelined processor by stalling the following FP instructions in an execution stage
US5359570A (en) * 1992-11-13 1994-10-25 Silicon Storage Technology, Inc. Solid state peripheral storage device
DE69425310T2 (de) * 1993-10-18 2001-06-13 Via Cyrix Inc Mikrosteuereinheit für einen superpipeline-superskalaren Mikroprozessor
US5701450A (en) * 1994-02-25 1997-12-23 Seagate Technology, Inc. System including ATA sequencer microprocessor which executes sequencer instructions to handle plurality of real-time events allowing to perform all operations without local microprocessor intervention
JP3231571B2 (ja) * 1994-12-20 2001-11-26 日本電気株式会社 順序付きマルチスレッド実行方法とその実行装置
US5812741A (en) * 1996-02-14 1998-09-22 Jack Kennedy Metal Products And Buildings, Inc. Serial sequencers connected in parallel
US5961639A (en) * 1996-12-16 1999-10-05 International Business Machines Corporation Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution
AU6586898A (en) * 1997-03-21 1998-10-20 University Of Maryland Spawn-join instruction set architecture for providing explicit multithreading
CN1206145A (zh) * 1997-06-30 1999-01-27 索尼公司 带有流水线处理电路的信号处理器及其方法
US6243735B1 (en) 1997-09-01 2001-06-05 Matsushita Electric Industrial Co., Ltd. Microcontroller, data processing system and task switching control method
US6263404B1 (en) * 1997-11-21 2001-07-17 International Business Machines Corporation Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system
US6209066B1 (en) * 1998-06-30 2001-03-27 Sun Microsystems, Inc. Method and apparatus for memory allocation in a multi-threaded virtual machine
US7409694B2 (en) * 1998-09-09 2008-08-05 Microsoft Corporation Highly componentized system architecture with loadable virtual memory manager
US6374314B1 (en) * 1998-09-28 2002-04-16 Raytheon Company Method for managing storage of data by storing buffer pointers of data comprising a sequence of frames in a memory location different from a memory location for pointers of data not comprising a sequence of frames
US6349363B2 (en) * 1998-12-08 2002-02-19 Intel Corporation Multi-section cache with different attributes for each section
US6389449B1 (en) 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US6349380B1 (en) * 1999-03-12 2002-02-19 Intel Corporation Linear address extension and mapping to physical memory using 4 and 8 byte page table entries in a 32-bit microprocessor
US6578133B1 (en) * 2000-02-24 2003-06-10 Stanley M. Hyduke MIMD array of single bit processors for processing logic equations in strict sequential order
US6931641B1 (en) 2000-04-04 2005-08-16 International Business Machines Corporation Controller for multiple instruction thread processors
FR2809508B1 (fr) * 2000-05-23 2002-08-30 Thomson Csf Systeme et methode de gestion d'une architecture multi-ressources
US6665755B2 (en) * 2000-12-22 2003-12-16 Nortel Networks Limited External memory engine selectable pipeline architecture
US6810472B2 (en) * 2002-06-24 2004-10-26 Intel Corporation Page handling efficiency in a multithreaded processor
US7562362B1 (en) * 2003-06-18 2009-07-14 Apple Inc. User control of task priority
JP2005044363A (ja) * 2003-07-22 2005-02-17 Samsung Electronics Co Ltd 複数のスレッドを同時に処理する装置及び方法
KR100591755B1 (ko) * 2003-07-22 2006-06-22 삼성전자주식회사 복수의 스레드를 동시에 처리하는 장치 및 방법
EP1660993B1 (en) * 2003-08-28 2008-11-19 MIPS Technologies, Inc. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7743233B2 (en) 2005-04-05 2010-06-22 Intel Corporation Sequencer address management

Also Published As

Publication number Publication date
KR20090081436A (ko) 2009-07-28
DE112006000807B4 (de) 2014-01-30
KR101136610B1 (ko) 2012-04-23
KR100996753B1 (ko) 2010-11-25
WO2006108169A2 (en) 2006-10-12
US7743233B2 (en) 2010-06-22
US20060224858A1 (en) 2006-10-05
CN101189575A (zh) 2008-05-28
DE112006000807T5 (de) 2008-01-31
JP2008536224A (ja) 2008-09-04
KR20070121812A (ko) 2007-12-27
CN101189575B (zh) 2010-05-19
WO2006108169A3 (en) 2007-04-12

Similar Documents

Publication Publication Date Title
JP5058970B2 (ja) シーケンサー・アドレス管理
US7676664B2 (en) Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US8468289B2 (en) Dynamic memory affinity reallocation after partition migration
US7873961B2 (en) Supervisory operating system for running multiple child operating systems simultaneously and optimizing resource usage
US20150378762A1 (en) Monitoring and dynamic configuration of virtual-machine memory-management
US8386726B2 (en) SMT/ECO mode based on cache miss rate
US20200026559A1 (en) Dynamic update of the number of architected registers assigned to software threads using spill counts
US10866834B2 (en) Apparatus, method, and system for ensuring quality of service for multi-threading processor cores
US20120221793A1 (en) Systems and methods for reconfiguring cache memory
US11531562B2 (en) Systems, methods, and apparatuses for resource monitoring
WO2021048519A1 (en) Partition identifiers for page table walk memory transactions
WO2017172220A1 (en) Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga
Bryant et al. Operating system support for parallel programming on RP3
US20240020241A1 (en) Apparatus and method for address pre-translation to enhance direct memory access by hardware subsystems
US11842195B2 (en) Conditional yield to hypervisor instruction
US11907744B2 (en) System, apparatus and method for enabling fine-grain quality of service or rate control for work submissions
Scolari et al. A survey on recent hardware and software-level cache management techniques
Mejia Alvarez et al. Virtual Memory
Scolari Partitioning Deep Cache Hierarchies in Software for Predictable Performance
Venkatasubramanian et al. A simulation analysis of shared tlbs with tag based partitioning in multicore virtualized environments

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101207

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110303

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110310

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110404

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110411

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111213

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120306

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120313

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120409

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: 20120703

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120801

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees