JP3874287B2 - 割込み時のプロセッサのアーキテクチャ状態の管理 - Google Patents

割込み時のプロセッサのアーキテクチャ状態の管理 Download PDF

Info

Publication number
JP3874287B2
JP3874287B2 JP2003365322A JP2003365322A JP3874287B2 JP 3874287 B2 JP3874287 B2 JP 3874287B2 JP 2003365322 A JP2003365322 A JP 2003365322A JP 2003365322 A JP2003365322 A JP 2003365322A JP 3874287 B2 JP3874287 B2 JP 3874287B2
Authority
JP
Japan
Prior art keywords
processor
memory
state
interrupt
storing
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
JP2003365322A
Other languages
English (en)
Other versions
JP2004185602A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2004185602A publication Critical patent/JP2004185602A/ja
Application granted granted Critical
Publication of JP3874287B2 publication Critical patent/JP3874287B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318533Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
    • G01R31/318536Scan chain arrangements, e.g. connections, test bus, analog signals
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers

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)
  • Advance Control (AREA)

Description

本発明は、一般にデータ処理の分野に関し、具体的には、割込みを処理するための改良されたデータ処理システムおよび方法に関する。
コンピュータ命令集合を実行する場合、プロセッサは頻繁に中断される。この中断は、割込みまたは例外によって生じる場合がある。
割込みは、非同期中断イベントであり、この割込みが起こった時に実行中である命令とは関連しない。すなわち、割込みは、多くの場合、入力/出力(I/O)デバイスからの入力や、別のプロセッサからの動作のための呼び出し等、プロセッサ外部の何らかのイベントによって生じる。他の割込みは、例えば、タスク切り替えを制御するタイマが切れることによって、内部で生じる場合がある。
例外は、同期イベントであり、この例外が起こった時に実行中である命令の実行から直接生じる。すなわち、例外は、算術あふれ、定期的な保守チェック、内部性能モニタ、ボード上作業負荷マネージャ等、プロセッサ内からのイベントである。通常、例外は、割込みよりもはるかに高い頻度で生じる。
「割込み」および「例外」という言葉は、取り替えられることが多い。この開示の目的のため、「割込み」という言葉を用いて、「割込み」および「例外」による中断の双方を説明する。
コンピュータソフトウエアおよびハードウエアはいっそう複雑になっており、割込みの数および頻度は劇的に増大している。これらの割込みは、多重プロセスの実行、多数の周辺装置の処理、および様々な構成要素の性能監視をサポートするので、必要なものである。かかる機能は有益であるが、割込みによる計算機能力の消費が飛躍的に増大して、プロセッサ(複数のプロセッサ)の処理速度の向上を追い越すまでになっている。このため、多くの場合、プロセッサクロック周波数が高くなっているにも関わらず、実際の状況においては、システム性能は低下している。
図1は、従来のプロセッサコア100を示す。プロセッサコア100内で、レベル1命令キャッシュ(L1 I−キャッシュ)102が、命令順序付け論理104に命令を供給する。命令順序付け論理104は、その命令を実行させるために適切な実行ユニット108に送出する。実行ユニット108は、浮動小数点実行ユニット、固定小数点実行ユニット、分岐実行ユニット等を含むことができ、ロード/ストアユニット(LSU)108aを含む。LSU108aは、命令をロードおよびストアし、レベル1データキャッシュ(L1 D−キャッシュ)112からアーキテクチャ(architected)レジスタ110内にデータをロードすると共に、アーキテクチャレジスタ110からL1 D−キャッシュ112にデータをストアする。L1キャッシュ102および112に存在しないデータおよび命令に対する要求は、メモリバス116を介してシステムメモリ118にアクセスすることによって解決(resolve)することができる。
上述のように、プロセッサコア100は、外部割込みライン114によって表される多数のソースから割込みを受ける。プロセッサコア100によって(例えば割込みライン114のうち1本を介して)割込み信号が受信されると、現在のプロセス(複数のプロセス)の実行は一時停止され、割込みハンドラとして知られる割込み専用ソフトウエアによって、その割込みを処理する。様々な活動の中でもとりわけ、割込みハンドラは、LSU108aによって命令のストアおよびロードを実行することで割込み時に実行中であったプロセスのアーキテクチャ状態をセーブしリストアする。このようにLSU108aを用いてシステムメモリ118との間でアーキテクチャ状態を転送する場合、状態転送が完了するまで、割込みハンドラによって、他のメモリアクセス命令の実行(または、スーパースカラーコンピュータの場合には別のプロセス)は阻止される。結果として、プロセッサの実行ユニットを通してプロセスのアーキテクチャ状態をセーブし、その後でリストアすることは、割込みのかかったプロセスおよび割込みハンドラの双方の実行において遅延を招く。この遅延は、プロセッサの全体的な性能を低下させることになる。このため、本発明は、特に割込みに応じてアーキテクチャ状態をセーブしリストアすることによって生じる処理遅延を最小限に抑える方法およびシステムに対する要望があることを認識している。
本発明は、データ処理システムのプロセッサ内での割込み処理を改良するための方法およびシステムを対象とする。
プロセッサにおいて割込み信号を受信すると、現在実行中のプロセスのハード(hard)アーキテクチャ状態を、1つ以上の専用シャドーレジスタ内にロードする。ハードアーキテクチャ状態は、割込みのかかったプロセスの実行に不可欠なプロセッサ内の情報を含む。このハードアーキテクチャ状態をセーブする有益な方法は、通常のロード/ストア経路およびプロセッサの実行ユニットを用いる(従って、接続する)ことなく、高帯域幅バスを用いて、シャドーレジスタ(複数のレジスタ)からシステムメモリにハードアーキテクチャ状態を直接転送することを含む。ハードアーキテクチャ状態をシャドーレジスタ(複数のレジスタ)内にロードした後、すぐに割込みハンドラが実行を始める。また、キャッシュ内容を含むプロセスのソフト状態(soft state)も、少なくとも部分的にシステムメモリにセーブする。ソフト状態のセーブを速めるため、および、実行中の割込みハンドラとのデータ衝突を回避するため、ソフト状態は、スキャンチェーン経路(scan chain pathway)を用いてプロセッサから転送すると好ましい。この経路は、従来技術では通常、製造業者の試験中にのみ用いられ、通常動作中は用いられない。
割込みハンドラの完了後、ハードアーキテクチャ状態およびソフト状態を、割込みのかかったプロセスのためにリストアする。このプロセスは、ハードアーキテクチャ状態がロードされるとすぐに実行することができる。
異なるオペレーティングシステムを実行している可能性のある他のプロセッサおよび他のパーティションに対するアクセスを可能とするために、ハードおよびソフト状態の双方を、どのプロセッサおよび/またはパーティションにもアクセス可能なシステムメモリの予約領域にストアすることができる。
本発明の、上述ならびにそれ以外の目的、特徴、および利点は、以下の詳細な記述的説明から明らかになろう。
本発を特徴付けると考えられる新規の特徴は、添付の特許請求の範囲において述べられる。しかしながら、本発明自体、ならびにその好適な使用の形態、更に別の目的および利点は、添付図面と関連付けて、例示的な実施形態の以下の詳細な説明を読んで参照することによって、最も良く理解されよう。
ここで図2を参照すると、多重プロセッサ(MP)データ処理システム201の例示的な実施形態の高レベルのブロック図が示されている。MPデータ処理システム201は対称的多重プロセッサ(SMP)として描かれているが、本発明は、非一様メモリアクセス(NUMA)MPまたはキャッシュオンリメモリアーキテクチャ(COMA)MPを含むがこれらに限定されない、コンピュータアーキテクチャの分野に精通した者に既知のいかなるMPデータ処理システムによっても利用可能である。
本発明によれば、MPデータ処理システム201は、処理ユニット200aないし200nとして図示され、相互接続222によって通信のために結合された複数の処理ユニット200を含む。好適な実施形態では、MPデータ処理システム201において、処理ユニット200aおよび処理ユニット200nを含む各処理ユニット200は、アーキテクチャの点で同様または同一であることは理解されよう。処理ユニット200aは、単一の集積回路スーパースカラープロセッサであり、これは、以下で更に論じるように、様々な実行ユニット、レジスタ、バッファ、メモリ、およびその他の機能ユニットを含み、これらは全て集積回路によって形成される。MPデータ処理システム201において、各処理ユニット200は、高帯域幅プライベートバス116によって各システムメモリ118に結合されている。これは、処理ユニット200aのためのシステムメモリ118a、および処理ユニット200nのための処理ユニット118nとして図示されている。
処理ユニット200aは、命令順序付けユニット(ISU)202を含む。これは、実行ユニット(EU)204によって実行される命令のフェッチ、スケジューリング、および送出を行うための論理を含む。ISU202およびEU204の詳細は、図3に例示的な形態で与える。
EU204に関連付けられているのは、「ハード」状態レジスタ206であり、これは、現在実行中のプロセスを実行するために不可欠な処理ユニット200a内の情報を含む。ハード状態レジスタ206に結合されているのは、次のハード状態レジスタ210であり、これは、例えば現在のプロセスが終了したか中断した場合に実行される次のプロセスのためのハード状態を含む。また、ハード状態レジスタ206には、シャドーレジスタ208が関連付けられている。これは、現在実行中のプロセスが終了したか中断した場合にハード状態レジスタ206の内容のコピーを含む(または含むことになっている)。
各処理ユニット200は、更に、多レベルのキャッシュメモリを含むことができるキャッシュ階層212を含む。システムメモリ118からロードされた命令およびデータのオンチップ記憶は、例えばキャッシュ階層212によって実現することができる。キャッシュ階層212は、図3に示すように、レベル1命令キャッシュ(L1 I−キャッシュ)18、レベル1データキャッシュ(L1 D−キャッシュ)20、および一体化レベル2キャッシュ(L2キャッシュ)16を備えることができる。キャッシュ階層212は、キャッシュデータ経路218を介して、システムメモリ118のためのオンチップ統合メモリコントローラ(IMC)220に結合されており、少なくとも1つの実施形態では、スキャンチェーン経路214を介する。スキャンチェーン経路214は直列経路であるので、スキャンチェーン経路214とIMC220との間に直列−並列インタフェース216が結合されている。処理ユニット200aの図示した構成要素の機能については、以下で説明する。
ここで、処理ユニット200を更に詳細に示す図3を参照する。処理ユニット200は、一体化レベル2(L2)キャッシュ16および二叉分岐レベル1(L1)命令(I)およびデータ(D)キャッシュ18および20をそれぞれ含むオンチップ多レベルキャッシュ階層を含む。当業者には周知のように、キャッシュ16、18、および20によって、システムメモリ118内のメモリ位置に対応するキャッシュラインに対して待ち時間の短いアクセスが提供される。
命令フェッチアドレスレジスタ(IFAR)30内にある有効アドレス(EA)に応答して、L1 I−キャッシュ18から、処理のために命令をフェッチする。各サイクルの間、新しい命令フェッチアドレスを、3つのソースのうち1つからIFAR30にロードすることができる。すなわち、条件付き分岐命令の予測の結果として生じる投機的(speculative)ターゲット経路および順次アドレスを提供する分岐予測ユニット(BPU)36、フラッシュ(flush)および割込みアドレスを提供するグローバル完了テーブル(GCT)38、予測条件付き分岐命令の解決の結果として生じた非投機的アドレスを提供する分岐実行ユニット(BEU)92である。BPU36に関連付けられているのは、分岐履歴テーブル(BHT)35であり、この中には、今後の分岐命令の予測に役立つ条件付き分岐命令の解決が記録されている。
IFAR30内の命令フェッチアドレス等の有効アドレス(EA)は、プロセッサが発生するデータまたは命令のアドレスである。EAは、セグメント内のセグメントレジスタおよびオフセット情報を特定する。メモリ内のデータ(命令を含む)にアクセスするために、EAは、データまたは命令がストアされている物理的な位置に関連付けて、1以上のレベルの変換により実アドレス(RA)に変換される。
処理ユニット200内では、メモリ管理ユニット(MMU)および関連するアドレス変換機構によって、有効−実アドレス変換を行う。好ましくは、命令アクセスおよびデータアクセスのために、別個のMMUが設けられている。図3では、明確さのために単一のMMU112を示し、ISU202のみに対する接続を示す。しかしながら、MMU112は、好ましくは、ロード/ストアユニット(LSU)96および98ならびにメモリアクセスを管理するために必要な他の構成要素に対する接続(図示せず)を含むことは、当業者には理解されよう。MMU112は、データ変換索引バッファ(DTLB)113および命令変換索引バッファ(ITLB)115を含む。各TLBは、最近参照したページテーブルエントリを含み、これにアクセスすることで、データ(DTLB113)または命令(ITLB115)のため、EAをRAに変換する。ITLB115から最近参照したEA−RA変換は、EOP有効−実アドレステーブル(ERAT)32にキャッシュされる。
ERAT32によってIFAR30に含まれるEAを変換し、I−キャッシュディレクトリ34において実アドレス(RA)を参照した後、ヒット/ミス論理22が、IFAR30内のEAに対応する命令のキャッシュラインがL1 I−キャッシュ18に存在しないという判定を行うと、ヒット/ミス論理22は、I−キャッシュ要求バス24を介して、L2キャッシュ16に要求アドレスとしてRAを供給する。また、かかる要求アドレスは、最近のアクセスパターンに基づいて、L2キャッシュ16内でプリフェッチ論理(prefetch logic)によって発生することも可能である。要求アドレスに応答して、L2キャッシュ16は、命令のキャッシュラインを出力し、これは、おそらくはオプションのプレデコード論理(predecode logic)144を通過した後、I−キャッシュリロードバス26を介してプリフェッチバッファ(PB)28およびL1 I−キャッシュ18内にロードされる。
IFAR30内のEAが指定したキャッシュラインがL1キャッシュ18に存在する場合、L1 I−キャッシュ18は、そのキャッシュラインを、分岐予測ユニット(BPU)36および命令フェッチバッファ(IFB)40の双方に出力する。BPU36は、分岐命令を探して命令のキャッシュラインを走査し、存在する場合には、条件付き分岐命令の結果を予測する。分岐予測の後、BPU36は、上述のように、IFAR30に投機的命令フェッチアドレスを提供し、予測を分岐命令キュー64に渡すので、この後、分岐実行ユニット92によって条件付き分岐命令を解決した場合に、予測の精度を決定することができる。
命令のキャッシュラインが命令変換ユニット(ITU)42によって変換可能となるまで、IFB40は、L1 I−キャッシュ18から受信した命令のキャッシュラインを一時的にバッファに入れる。処理ユニット200の例示的な実施形態では、ITU42は、この命令を、ユーザ命令セットアーキテクチャ(UISA)命令から、処理ユニット200の実行ユニットが直接実行可能な、おそらくは異なる数の内部ISA(IISA)命令に変換する。かかる変換は、例えば、読み出し専用メモリ(ROM)テンプレートにストアされたマイクロコードを参照することによって実行可能である。少なくともいくつかの実施形態では、このUISA−IISA変換によって、UISA命令とは異なる数のIISA命令が生じ、および/または、対応するUISA命令とは異なる長さのIISA命令が生じる。次いで、結果として生じたIISA命令を、グローバル完了テーブル38によって、命令グループに割り当てる。このグループのメンバは、互いに順不同で送出し実行することが可能である。グローバル完了テーブル38は、好ましくは命令グループにおいて最も古い命令のEAである少なくとも1つの関連するEAによる実行が完了していない各命令グループを追跡する。
UISA−IISA命令変換の後、命令を、おそらくは順不同で、命令タイプに基づいて、ラッチ44、46、48、および50のうち1つに送出する。すなわち、分岐命令および命令を変更する他の条件レジスタ(CR)をラッチ44に送出し、固定小数点およびロード−ストア命令を、ラッチ46および48のいずれかに送出し、浮動小数点命令をラッチ50に送出する。そして、CRマッパ(mapper)52、リンクおよびカウント(LC)レジスタマッパ54、実行レジスタ(XER)マッパ56、汎用レジスタ(GPR)マッパ58、および浮動小数点レジスタ(FPR)マッパ60のうち適切な1つによって、一時的に実行結果をストアするためのリネーム(rename)レジスタを必要とする各命令に、1つ以上のリネームレジスタを割り当てる。
次いで、CR発行キュー(CRIQ)62、分岐発行キュー(BIQ)64、固定小数点発行キュー(FXIQ)66および68、ならびに浮動小数点発行キュー(FPIQ)70および72のうち適切な1つに、送出された命令を一時的に配置する。データ依存性および非依存性が観察される限り、発行キュー62、64、66、68、70および72から、実行のため、処理ユニット200の実行ユニットに、都合良く命令を送出することができる。しかしながら、命令のいずれかを再送出する必要がある場合に備えて、命令の実行が完了し、もしあればその結果データがライトバック(written back)されるまで、命令を発行キュー62ないし72内に維持する。
例示したように、処理ユニット204の実行ユニットは、CR変更命令を実行するためのCRユニット(CRU)90、分岐命令を実行するための分岐実行ユニット(BEU)92、固定小数点命令を実行するための2つの固定小数点ユニット(FXU)94および100、命令のロードおよびストアを実行するための2つのロード−ストアユニット(LSU)96および98、ならびに、浮動小数点命令を実行するための2つの浮動小数点ユニット(FPU)102および104を含む。実行ユニット90ないし104の各々は、好ましくは、多数のパイプライン段を有する実行パイプラインとして実施される。
実行ユニット90ないし104のうち1つの内部で実行される間、命令は、実行ユニットに結合されたレジスタファイル内の1つ以上のアーキテクチャおよび/またはリネームレジスタから、もしあればオペランドを受信する。CR変更またはCR依存命令を実行している場合、CRU90およびBEU92は、CRレジスタファイル80にアクセスする。これは、好適な実施形態では、CRと、各々が1つ以上のビットから形成される多数の別個のフィールドから成る多数のCRリネームレジスタとを含む。これらのフィールドの中には、LT、GT、およびEQフィールドがあり、これらは、それぞれ、値(通常、命令の結果またはオペランド)がゼロ未満であるか、ゼロより大きいか、またはゼロに等しいかを示す。リンクおよびカウントレジスタ(LCR)レジスタファイル82は、カウントレジスタ(CTR)、リンクレジスタ(LR)、および各々のリネームレジスタを含み、これによって、BEU92は、条件付き分岐を解決して経路アドレスを得ることができる。同期している汎用レジスタファイル(GPR)84および86は、レジスタファイルを複製し、FXU94および100ならびにLSU96および98によってアクセスされ生成された固定小数点および整数の値をストアする。浮動小数点レジスタファイル(FPR)88は、GPR84および86と同様、同期レジスタの複製セットとして実施することができ、FPU102および104による浮動小数点命令の実行ならびにLSU96および98による浮動小数点ロード命令の結果である浮動小数点値を含む。
実行ユニットが命令の実行を行った後、実行ユニットは、命令の完了をプログラム順にスケジューリングするGCT38に通知する。CPU90、FXU94および100、またはFPU102および104のうち1つによって実行される命令を完了するため、GCT38は、実行ユニットに信号を送り、もしあれば結果データを、割り当てたリネームレジスタ(複数のレジスタ)から適切なレジスタファイル内の1つ以上のアーキテクチャレジスタにライドバックする。次いで、命令を発行キューから除去し、いったんその命令グループ内の全ての命令が完了したなら、GCT38から除去する。しかしながら、他のタイプの命令は異なる方法で完了する。
BEU92が条件付き分岐命令を解決し、取るべき実行経路の経路アドレスを決定すると、経路アドレスは、BPU36が予測した投機的経路アドレスと比較される。経路アドレスが一致すると、これ以上の処理は必要ない。しかしながら、計算された経路アドレスが予測経路アドレスと一致しない場合、BEU92は、正しい経路アドレスをIFAR30に供給する。いずれの場合でも、分岐命令はBIQ64から除去され、同じ命令グループ内の他の全ての命令が完了すると、GCT38から除去される。
ロード命令を実行した後、ロード命令の実行によって計算された有効アドレスをデータERAT(図示せず)によって実アドレスに変換し、次いでL1 D−キャッシュ20に要求アドレスとして供給する。この時点で、ロード命令は、FXIQ66および68から除去され、指示されたロードを実行するまで、ロードリオーダキュー(LRQ:load reorder queue)114に配置される。要求アドレスがL1 D−キャッシュ20において見出せない場合、要求アドレスをロードミスキュー(LMQ:load miss queue)116に配置し、ここから要求データはL2キャッシュ16から検索されるが、失敗すると、別の処理ユニット200からまたはシステムメモリ118から検索される(図2に示す)。LRQ114は、排他的アクセス要求をスヌープし(例えば変更する意図で読む)、進行中の(in flight)ロードに対して相互接続222の機構(図2に示す)上でフラッシュ(flush)またはキル(kill)し、ヒットがあれば、ロード命令をキャンセルおよび再発行する。ストア命令は、同様に、ストアキュー(STQ)110を利用して完了させる。このキューの中に、ストア命令の実行後にストアのための有効アドレスをロードする。STQ110から、L1 D−キャッシュ20およびL2キャッシュ16のどちらかまたは双方にデータをストアすることができる。
プロセッサ状態
プロセッサの状態は、特定の時点でのストアされたデータ、命令、およびハードウエア状態を含み、これを本明細書中では「ハード」または「ソフト」のいずれかとして規定する。「ハード」状態は、プロセッサがプロセス中の現時点からプロセスを実行するためにアーキテクチャに関して必要なプロセッサ内の情報として規定される。これに対して、「ソフト」状態は、プロセス実行の効率を改善するがアーキテクチャに関して正しい結果を達成するために必要ではないプロセッサ内の情報である。図3の処理ユニット200において、ハード状態は、CRR80、LCR82、GPR84および86、FPR88等のユーザレベルレジスタ、ならびにスーパーバイザレベルレジスタ51の内容を含む。処理ユニット200のソフト状態は、L−1 I−キャッシュ18、L−1 D−キャッシュ20の内容、DTLB113およびITLB115等のアドレス変換情報等の「性能に影響を及ぼす」情報、ならびに、BHT35およびL2キャッシュ16の内容の全てまたは一部等、重要性の低い情報の双方を含む。
レジスタ
上述の説明において、GPR86、FPR88、CRR80、およびLCR82等の処理ユニット200のレジスタファイルは、一般に「ユーザレベルレジスタ」として規定される。なぜなら、これらのレジスタは、ユーザまたはスーパーバイザのいずれかの特権により全てのソフトウエアによってアクセス可能であるからである。スーパーバイザレベルレジスタ51は、メモリ管理、構成、および例外処理のような動作のために、典型的にオペレーティングシステムカーネルにおいて、通常オペレーティングシステムによって用いられるレジスタを含む。このため、スーパーバイザレベルレジスタ51に対するアクセスは、一般に、十分なアクセス許可のある小数のみのプロセス(すなわちスーパーバイザレベルプロセス)に制限されている。
図4に示すように、スーパーバイザレベルレジスタ51は、一般に、構成レジスタ302、メモリ管理レジスタ308、例外処理レジスタ314、および各種レジスタ322を含む。これらについては以下で更に詳細に説明する。
構成レジスタ302は、機械状態レジスタ(MSR)306およびプロセッサバージョンレジスタ(PVR)304を含む。MSR306は、プロセッサの状態を規定する。すなわち、MSR306は、命令割込み(例外)を処理した後にどこで命令実行が再開するかを識別する。PVR304は、処理ユニット200の特定のタイプ(バージョン)を識別する。
メモリ管理レジスタ308は、ブロックアドレス変換(BAT)レジスタ310を含む。BATレジスタ310は、ソフトウエア制御アレイであり、オンチップで利用可能なブロックアドレス変換をストアする。好ましくは、IBAT309およびDBAT311として示すように、別個の命令用およびデータ用BATレジスタがある。また、メモリ管理レジスタは、セグメントレジスタ(SR)312も含む。これは、BAT変換が失敗した場合にEAをバーチャルアドレス(VA)に変換するために用いられる。
例外処理レジスタ314は、データアドレスレジスタ(DAR)316、特別目的レジスタ(SPR)318、および機械状態セーブ/リストア(SSR)レジスタ320を含む。DAR316は、アクセスによって位置合わせ例外等の例外が起こった場合にメモリアクセス命令によって発生される有効アドレスを含む。SPRは、オペレーティングシステムが規定する特別な目的のために用いられ、例えば、第1レベル例外ハンドラ(FLIH)が用いるために予約されたメモリの領域を識別する。このメモリ領域は、好ましくは、システムにおける各プロセッサごとに一意である。SPR318を、FLIHによってスクラッチレジスタとして用いて、汎用レジスタ(GPR)の内容をセーブすることができる。GPRは、SPR318からロードしてベースレジスタとして用いて、他のGPRをメモリにセーブすることができる。SSRレジスタ320は、例外(割込み)時の機械状態をセーブし、割込み命令からのリターンが実行されると機械状態をリストアする。
各種レジスタ322は、時刻を維持するための時間基準(TB)レジスタ324、カウントを減らすための減分レジスタ(DEC)326、およびデータアドレスブレークポイントレジスタ(DABR)328を含み、指定されたデータアドレスが発生した場合にブレークポイントを生じさせる。更に、各種レジスタ322は、時間基準割込みレジスタ(TBIR)330を含み、所定の時間期間後に割込みを開始させる。かかる時間基準の割込みは、処理ユニット200上で実行される定期的な保守ルーチンと共に使用可能である。
ソフトウエア編成
図2のMPデータ処理システム201等のMPデータ処理システムにおいて、おそらくは異なるオペレーティングシステムのもとで、多重アプリケーションを同時に実行することができる。図5は、本発明によるMPデータ処理システム201の例示的なソフトウエア構成の層図を示す。
図示のように、ソフトウエア構成は、ハイパーバイザ402を含む。これは、MPデータ処理システム201のリソースを多数のパーティションに割り当て、次いで、多数のパーティション内で多数の(おそらくは異なる)オペレーティングシステムの実行を連係させるスーパーバイザリーソフトウエアである。例えば、ハイパーバイザ402は、処理ユニット200a、システムメモリ118aの第1の領域、および他のリソースを、オペレーティグシステム404aが動作する第1のパーティションに割り当てることができる。同様に、ハイパーバイザ402は、処理ユニット200n、システムメモリ118nの第2の領域、および他のリソースを、オペレーティングシステム404nが動作する第2のパーティションに割り当てることができる。
オペレーティングシステム404の制御のもとで、ワードプロセッサ、表計算、ブラウザ等の多数のアプリケーション406が実行可能である。例えば、アプリケーション406aないし406xは、全てオペレーティングシステム404aの制御のもとで実行する。
各オペレーティングシステム404およびアプリケーション406は、通常、多数のプロセスから成る。例えば、アプリケーション406aを、多数のプロセス408aないし408zを有するものとして示す。処理ユニット200が、プロセスのために必要な命令、データ、および状態情報を有するならば、各処理ユニット200は、プロセスを独立して実行することができる。
割込み処理
ここで図6および図7を参照すると、本発明に従って、処理ユニット200等の処理ユニットが割込みを処理する例示的な方法のフローチャートが示されている。ブロック502に示すように、プロセッサによって割込みを受信する。この割込みは、例外(例えばオーバーフロー)、外部割込み(例えばI/Oデバスからの)、または内部割込みである場合がある。
割込みを受けると、現在実行中のプロセスのハードアーキテクチャ状態(ブロック504)およびソフト状態(ブロック505)をセーブする。本発明に従ってハードおよびソフト状態をセーブおよび管理するための好適なプロセスの詳細については、図8(ハード)および図9(ソフト)を参照して以下で説明する。プロセスのハード状態をメモリにセーブした後、少なくとも第1レベル割込みハンドラ(FLIH)および第2レベル割込みハンドラ(SLIH)を実行して割込みを処理する。
FLIHは、割込みの結果としてプロセッサの制御を受けるルーチンである。割込みの通知があると、FLIHは、割込みコントローラファイルを読むことによって、割込みの原因を特定する。好ましくは、この特定は、ベクトルレジスタを用いることによって行う。すなわち、FLIHは、テーブルを読み込んで、割込みを、割込みの初期処理を扱う例外ベクトルアドレスに合致させる。
SLIHは、特定の割込みソースからの割込みの処理を扱う割込み依存ルーチンである。すなわち、FLIHはSLIHを呼び出し、SLIHはデバイス割込みを処理するが、デバイスドライバ自体ではない。
図6において、円506内に示すステップは、FLIHによって実行される。ブロック508に示すように、割込みを、好ましくはベクトルレジスタを用いて、上述のように一意に識別する。この割込み識別によって、プロセッサは、どの割込みが受け取られたかに応じて、メモリ内の特定のアドレスにジャンプする。
当業者には良く理解されているように、いかなるSLIHでも、入力/出力(I/O)デバイスまたは別のプロセッサ(外部割込み)によって通信手順を確立することができ、または、割込みのかかったプロセッサを制御するオペレーティングシステムもしくはハイパーバイザの制御のもとで、命令集合を実行することができる。例えば、第1の割込みによってプロセッサがベクトルアドレス1にジャンプし、この結果、ブロック510および516に示すようにSLIH Aが実行される。図示のように、SLIH Aは、追加のソフトウエアルーチンを何も呼び出すことなく、割込みの処理を完了させる。同様に、ブロック512、520、および526に示すように、ベクトルアドレス3への分岐によって、例示的なSLIH Cが実行され、次いで、オペレーティングシステム404またはハイパーバイザ402(双方とも図5に示す)に属する1つ以上の命令を実行して割込みを処理する。あるいは、割込みがプロセッサにベクトルアドレス2にジャンプするよう命令した場合、ブロック514および418に示すように、例示的なSLIH Bを実行する。次いで、SLIH Bは、割込みを発したデバイスのためのデバイスドライバを呼び出す(ブロック524)。
ブロック516、524、または526のいずれかの後に、プロセスはページコネクタ「A」を通って図7のブロック528に進む。いったん割込みを処理したなら、SLIHおよびFLIHを解決し、再び確立して、ブロック528および530に示すように、割込みの実行および完了を反映させる。その後、ブロック532ないし536に示すように、次のプロセスをロードし実行する。そして、割込み処理プロセスは終了する。
通常、プロセッサのオペレーティングシステムによって、または、プロセッサが一部として含まれるMPコンピュータシステムのハイパーバイザによって、どのプロセスを次に実行するか(ブロック532)およびどのプロセッサ上で実行するか(ブロック534)(MPコンピュータシステム内である場合)について選択を行う。選択されたプロセスは、現プロセッサ上で割込みのかかったプロセスである場合があり、または、新しい別のプロセスであるか、現プロセッサまたは別のプロセッサ上で実行されている間に割込みのかかった別のプロセスである場合がある。
ブロック536に示すように、いったんプロセスおよびプロセッサを選択すると、図2に示す次のハード状態レジスタ210を用いて、実行される次のプロセスの状態によって、その選択したプロセッサを初期化する。次のハード状態レジスタ210は、次に「ホットな(hottest)」プロセスのハードアーキテクチャ状態を含む。通常、この次にホットなプロセスは、以前に割込みのかかったプロセスであり、この時点で再開する。まれに、次にホットなプロセスは、以前に割込みのかかったことのない新しいプロセスである場合がある。
次にホットなプロセスは、最高の実行優先度を有すると判定されたプロセスである。優先度は、アプリケーション全体にとってこのプロセスがどれだけ重要であるか、プロセスからの結果に対する必要性、またはいずれかの他の優先順位付けの理由に基づいたものとすることができる。多重プロセスを実行するので、再開を待っている各プロセスの優先度は頻繁に変動する。このため、ハードアーキテクチャ状態に、更新した優先度レベルを動的に割り当てる。すなわち、いずれの所与の瞬間でも、次のハード状態レジスタ210は、システムメモリ118から連続的かつ動的に更新されたハードアーキテクチャ状態を含み、実行する必要がある、次に「ホットな」プロセスを含む。
ハードアーキテクチャ状態のセーブ
従来技術では、ハードアーキテクチャ状態を、プロセッサコアのロード/ストアユニットを介してシステムメモリにストアし、これが、多数のプロセッサクロックサイクルの間、割込みハンドラまたは別のプロセスの実行を阻止する。本発明では、図6のブロック504に示すような、ハード状態をセーブするステップは、図8に示す方法に従っていっそう迅速に行う。これについて、図2に概略的に示したハードウエアを参照して説明する。
割込みを受けると、処理ユニット200は、ブロック602に示すように、現在実行中のプロセスの実行を一時停止する。次いで、ブロック604に示すように、ハード状態レジスタ206にストアされたハードアーキテクチャ状態を、直接シャドーレジスタ208にコピーする。(あるいは、現在のハードアーキテクチャ状態で頻繁にシャドーレジスタ208を更新するプロセスによって、シャドーレジスタ208はすでにハードアーキテクチャ状態のコピーを有する。)そして、ブロック606に示すように、処理ユニット200が見た場合に実行不能であると好ましいハードアーキテクチャ状態のシャドーコピーを、IMC220の制御のもとでシステムメモリ118にストアする。ハードアーキテクチャ状態のシャドーコピーは、高帯域幅メモリバス116を介してシステムメモリ118に転送される。現在のハードアーキテクチャ状態のコピーのシャドーレジスタ208へのストアは、長くても数クロックサイクルしかかからないので、処理ユニット200は、割込みの処理または次プロセスの実行の「実作業」を素早く開始することができる。
好ましくは、ハードアーキテクチャ状態のシャドーコピーは、システムメモリ118内の特別メモリ領域にストアされる。これは、図15に関連付けて以下で説明するように、ハードアーキテクチャ状態のために予約される。
ソフト状態のセーブ
従来のプロセッサによって割込みハンドラを実行する場合、割込まれたプロセスのソフト状態は通常汚染(polluted)される。すなわち、割込みハンドラソフトウエアの実行は、プロセッサのキャッシュ、アドレス変換機構、および履歴テーブルを、割込みハンドラが用いるデータ(命令を含む)によってポピュレート(populate)する。このため、割込みを処理した後に割込みのかかったプロセスが再開すると、プロセスでは、命令およびデータキャッシュの失敗、変換の失敗、および分岐誤予測が増大する。かかる失敗および誤予測は、プロセス性能を著しく低下させるが、これは、割込み処理に関する情報がプロセッサおよびキャッシュからパージされ、プロセスのソフト状態をストアしている他の構成要素がプロセスに関する情報によって再ポピュレートされるまで続く。従って、本発明は、割込み処理に関連した性能の犠牲を小さくするために、プロセスのソフト状態の少なくとも一部をセーブしリストアする。
ここで図9を参照し、更に図2および図3に示した対応するハードウエアを参照すると、ブロック610に示すように、L1 I−キャッシュ18およびL1 D−キャッシュ20の全内容を、システムメモリ118の専用領域にセーブする。同様に、BHT35(ブロック612)、ITLB115およびDTLB113(ブロック614)、ERAT32(ブロック616)、およびL2キャッシュ16(ブロック618)の内容をシステムメモリ118にセーブする。
L2キャッシュ16は極めて大きい(例えば数メガバイトのサイズ)場合があるので、L2キャシュ16を全てストアすることは、システムメモリにおける設置面積およびデータ転送に必要な時間/帯域幅の双方の観点から、不可能であり得る。従って、好適な実施形態では、各合同クラス内に、最も最近用いた(MRU)集合のうちの副集合(例えば2つ)のみをセーブする。
図9は、プロセスのソフト状態の多数の異なる要素の各々をセーブすることを示すが、セーブされるこれらの要素の数および要素をセーブする順序は、実施に応じて変動する可能性があり、ソフトウエアプログラム可能またはハードウエアモードビットによって制御可能であることは理解されよう。
このため、本発明は、割込みハンドラルーチン(または次のプロセス)が実行されている間に、ソフト状態を送出する。この(割込みハンドラの実行から独立した)非同期動作では、結果として、ソフト状態が混合する場合がある(割込みのかかったプロセスのものおよび割込みハンドラのもの)。それにもかかわらず、かかるデータ混合は許容可能である。なぜなら、アーキテクチャ(architected)の正確さにはソフト状態の精密な保存は必要ではなく、割込みハンドラを実行する際の遅延が短くなるために性能改善が達成されるからである。
再び図2を参照すると、L1 I−キャッシュ18、L1 D−キャッシュ20、およびL2キャッシュ16からのソフト状態は、キャッシュデータ経路218を介してIMC220に送信される一方、BHT35等の他のソフト状態は、類似の内部データ経路(図示せず)を介してIMC220に送信される。この代わりに、またはこれに加えて、好適な実施形態では、少なくともいくつかのソフト状態要素を、スキャンチェーン経路214を介してIMC220に送信する。
スキャンチェーン経路を介したソフト状態のセーブ
複雑さのため、プロセッサおよび他のICは、通常、ICの試験を容易にする回路を含む。試験回路は、電気電子技術者協会(Institute of Electrical and Electronic Engineers(IEEE))規格1149.1−1990、「Standard Test Access Port and Boundary Scan Architecture」に記載されているようなバウンダリ(boundary)スキャンチェーンを含む。これは、引用により本願にもその全体が含まれるものとする。典型的にパッケージ集積回路上の専用ピン介してアクセスされるバウンダリスキャンチェーンは、集積回路の構成要素間に試験データ用経路を提供する。
ここで図10を参照すると、本発明による集積回路700の図に従ったブロックが示されている。集積回路700は、好ましくは、図2の処理ユニット200等のプロセッサである。集積回路700は、3つの論理要素(論理)702、704、および706を含み、これらは、本発明を説明する目的のため、プロセスのソフト状態をストアするメモリ要素の3つから成る。例えば、論理702は、図3に示すL1 D−キャッシュ20とすることができ、論理704はERAT32とすることができ、論理706は上述のようなL2キャッシュ16の一部とすることができる。
製造業者による集積回路700の試験の間、好ましくはクロック制御のラッチであるスキャンチェーンバウンダリセル708を介して信号を送出する。スキャンチェーンバウンダリセル708aによって出力された信号は、論理702に対して試験入力を供給し、これが次いでスキャンチェーンバウンダリセル708bに信号を出力する。信号がスキャンチェーンバウンダリ708cに達するまで、他のスキャンチェーンバウンダリセル708を通って他の論理(704および706)を介して試験信号が送出される。このため、スキャンチェーンバウンダリセル708cから予想出力が受信された場合にのみ論理702ないし706が試験に合格するというドミノ効果がある。
従来、集積回路のバウンダリスキャンチェーンは、製造後には用いられない。しかしながら、本発明は、説明した試験経路を経路として利用して、キャッシュ/レジスタポートを妨げない方法で、図2のIMC220にソフトアーキテクチャ状態を転送する。すなわち、スキャンチェーン試験経路を用いることによって、ソフトアーキテクチャ状態をキャッシュ/レジスタから送出することができ、一方で、IHまたは次のプロセスは、キャッシュ/レジスタへのアクセスが阻止されることなく、実行している。
スキャンチェーン214は直列経路であるので、図2に示す直列−並列論理216によって、ICM220に並列データを供給し、ソフト状態をシステムメモリ118に適切に送信する。好適な実施形態では、直列−並列論理216は、どのデータがどのレジスタ/キャッシュからのものであるかを識別するための論理も含む。かかる識別は、直列データ上の先頭の識別タグの識別等を含む、当業者に既知のいかなる方法によっても実行可能である。ソフト状態データを並列形式に変換した後、IMC220は、高帯域幅メモリバス222を介してソフト状態をシステムメモリ118に送信する。
これらの同じスキャンチェーン経路は、更に、図2に示すシャドウレジスタ208に含まれるようなハードアーキテクチャ状態を送信するためにも使用可能であることを注記しておく。
SLIH/FLIHフラッシュROM
従来技術のシステムでは、第1レベル割込みハンドラ(FLIH)および第2レベル割込みハンドラ(SLIH)をシステムメモリにストアし、呼び出された場合にキャッシュメモリ階層をポピュレートする。従来のシステムにおいてシステムメモリからFLIHまたはSLIHを最初に呼び出すと、長いアクセス待ち時間が生じる(キャッシュミスの後にシステムメモリからFLIH/SLIHの位置を特定しロードするため)。キャッシュメモリをFLIH/SLIH命令およびデータによってポピュレートすると、以降のプロセスでは必要でないデータおよび命令によってキャッシュを「汚染させる」ことになる。
FLIHおよびSLIHのアクセス待ち時間を減らし、キャッシュ汚染を回避するため、処理ユニット200は、図3および図11に示すように、少なくともいくつかのFLIHおよびSLIHを、特別のオンチップメモリ(例えばフラッシュ読み出し専用メモリ(ROM)802)にストアする。FLIH804およびSLIH806は、製造時にフラッシュROM802に焼き付けることができ、または、当業者に周知の方法で、フラッシュプログラミング技法によって製造後に焼き付けることができる。処理ユニット200が割込みを受信すると(図2に示す)、FLIH/SLIHは、システムメモリ118またはキャッシュ階層212からではなく、直接フラッシュROM802からアクセスされる。
SLIH予測
通常、処理ユニット200において割込みが発生すると、FLIHを呼び出し、次いでFLIHがSLIHを呼び出し、割込みの処理を完了する。どのSLIHを呼び出し、そのSLIHをどのように実行するかは、一様でなく、送出するパラメータ、条件状態等を含む様々なファクタに依存する。例えば、図12において、FLIH812を呼び出すと、SLIH814を呼び出して実行することになり、結果として点Bに位置する命令が実行される。
プログラムの挙動は反復的であるので、割込みが多数回生じ、この結果同じFLIHおよびSLIH(例えばFLIH812およびSLIH814)が実行されるということが頻繁に起こる。結果として、本発明は、続いて起こる割込みのための割込み処理をいっそう迅速に行うには、割込み処理プロセスの制御グラフが反復されると予測し、更に、FLIHを最初に実行することなくSLIHの部分を投機的に実行すれば良いことを認識している。
割込み処理予測を容易にするため、処理ユニット200には、図13に更に詳細に示す割込みハンドラ予測テーブル(IHPT)808が備えられている。IHPT808は、多数のFLIHのベースアドレス816(割込みベクトル)のリストを含む。IHPT808は、各FLIHアドレス816に関連付けて、関連するFLIHが以前に呼び出した1つ以上のSLIHアドレス818の各集合をストアしている。特定のFLIHのベースアドレスによってIHPT808がアクセスされると、予測論理820は、IHPT808における特定のFLIHアドレス816に関連したSLIHアドレス818を、特定のFLIHが呼び出す可能性のあるSLIHのアドレスとして選択する。図示した予測SLIHアドレスは、図12に示すようなSLIH814のベースアドレスとすることができるが、アドレスは、開始点(例えば点Bにおける)に続くSLIH814内の命令のアドレスである場合もあることを注記しておく。
予測論理820は、特定のFLIHによってどのSLIHが呼び出されるかを予測するアルゴリズムを用いる。好適な実施形態では、このアルゴリズムは、最も最近に用いられた特定のFLIHに関連付けられたSLIHを選ぶ。別の好適な実施形態では、このアルゴリズムは、履歴上、最も頻繁に呼び出された特定のFLIHに関連付けられたSLIHを選ぶ。前述の好適な実施形態のいずれにおいても、アルゴリズムは、予測SLIHの要求があると実行することができ、または、予測SLIHは、IHPT808において連続的に更新しストアすることができる。
本発明は、当技術分野において既知の分岐予想方法とは異なることを注記しておくのは重要である。第1に、上述の方法は、結果として特定の割込みハンドラへのジャンプを引き起こし、分岐命令アドレスには基づいていない。すなわち、従来技術において用いられる分岐予想方法が分岐動作の結果を予想するのに対し、本発明は、(おそらくは)非分岐命令に基づいて特定の割込みハンドラへのジャンプを予想する。これによって、第2の相違が生じる。これは、従来技術の分岐予想と比較して、本発明によって教示されるように、割込みハンドラ予測により多量のコードをスキップすることができる。なぜなら、本発明は、いかなる数の命令を飛び越すことも可能である(FLIHにおけるように)のに対し、分岐予想では、従来の分岐予想機構によって走査可能な命令ウインドウの大きさに固有の制限があるために、予想された分岐の前に、限られた数の命令しか飛び越すことができないからである。第3に、本発明による割込みハンドラ予測は、従来技術において既知の選択/非選択の分岐予測のような2者択一の判定に限定されない。このため、再び図13を参照すると、予測論理820は、いかなる数の履歴SLIHアドレス818からでも予測SLIHアドレス822を選択可能であるが、分岐予測方式では、連続的な実行経路および分岐経路のみから選択を行う。
ここで図14を参照すると、本発明に従って割込みハンドラを予測する例示的な方法のフローチャートが示されている。プロセッサが割込みを受信すると(ブロック902)、割込みによって呼び出されるFLIH(ブロック904)および、以前の実行履歴に基づいてIHPT808が示す予測SLIH(ブロック906)の双方で、同時マルチスリーディング(SMT)による同時実行が開始する。
好適な実施形態では、割込みを受信した際、呼び出されたFLIHの監視に応答して、予測SLIHへのジャンプを実行することができる(ブロック906)。例として、再び図8に示すIHPT808を参照する。割込みが受信されると、FLIHを、IHPT808にストアされたFLIHアドレス816と比較する。IHPT808におけるストアされたFLIHアドレス816の比較から、割込みによって同じFLIHアドレスが呼び出されたことが明らかとなった場合、IHPT808は予測SLIHアドレス822を供給し、予測SLIHアドレス822のアドレスで開始するコード実行がすぐに始まる。
その後、既知の正しいSLIHを予測SLIHと比較するが、この比較は、好ましくは、予測フラグと共にFLIHアドレスを含むSLIH予測レジスタに、IHPT808を用いて呼び出した予測SLIHアドレス822をストアすることによって実行する。本発明の好適な実施形態では、「ジャンプ」命令等、FLIHからSLIHを呼び出すことがわかっている命令が実行されると、ジャンプによって呼び出されたアドレスを、予測レジスタに位置する(更に、予測フラグによって予測されており現在実行されていると識別される)予測SLIHアドレス822のアドレスと比較する。予測レジスタからの予測SLIHアドレス822を、実行中のFLIHが選択したSLIHと比較する(ブロック910)。正しいSLIHが予測されていれば、予測SLIHは実行を完了し(ブロック914)、これによって割込み処理が迅速に行われる。しかしながら、SLIHの予測を誤ると、予測SLIHのこれ以上の実行を中止し、代わりに正しいSLIHを実行する(ブロック916)。
状態管理
ここで図15を参照すると、システムメモリおよび様々なプロセッサおよび例示的なMPデータ処理システムのメモリ部分にストアされたハードおよびソフト状態間の論理関係を図で示す概念図が示されている。図15に示すように、全てのハードアーキテクチャ状態およびソフト状態は、いかなるパーティション内でもプロセッサによってアクセス可能なハイパーバイザ402が割り当てた特別なメモリ領域にストアされる。すなわち、プロセッサAおよびプロセッサBはハイパーバイザ402によって最初に構成されてパーティションX内のSMPとして機能することができるが、プロセッサCおよびプロセッサDは、パーティションY内のSMPとして構成することができる。実行の間、プロセッサAないしDに割込みをかけて、プロセッサAないしDの各々に、上述のように、ハード状態AないしDおよびソフト状態AないしDの各1つをメモリにストアさせることができる。異なるパーティションのプロセッサが同じメモリ空間にアクセスすることができない従来技術のシステムとは異なり、いかなるプロセッサでも、ハードまたはソフト状態AないしDのいずれにもアクセスして、関連する割込みのかかったプロセスを再開することができる。例えば、プロセッサDは、そのパーティション内に生成されたハードおよびソフト状態CおよびDに加えて、ハードおよびソフト状態AおよびBにもアクセスすることができる。このため、いかなるパーティションまたはプロセッサ(複数のプロセッサ)によっても、いかなるプロセス状態にもアクセスすることができる。結果として、ハイパーバイザ402は、パーティション間の負荷バランスにおける自由度および柔軟性を増している。
ソフト状態キャッシュコヒーレンシ
上述のように、割込みのかかったプロセスのソフト状態は、図3に示すL1 I−キャッシュ18、L2 D−キャッシュ20、およびL2キャッシュ16等のキャッシュメモリの内容を含むことができる。図9を参照して上述したように、これらのソフト状態はシステムメモリにストアされるが、ソフト状態から成るデータの少なくとも一部は、他のプロセスが行ったデータ変更のために、新鮮でなくなる可能性がある。従って、本発明は、システムメモリにストアされたソフト状態をキャッシュコヒーレントに保つための機構を提供する。
図16に示すように、システムメモリ118にストアされたソフト状態は、「バーチャルキャッシュ」にストアされているものとしてコンセプト化することができる。例えば、L2キャッシュ16のソフト状態は、L2バーチャルキャッシュ1102内にある。L2バーチャルキャッシュは、L2キャッシュ16からセーブされたデータ1110の各キャッシュラインのタグ1104およびインデクス1106を含むアドレス部分から成る。同様に、L1バーチャルI−キャッシュ1112は、L1 I−キャッシュ18からセーブされた命令1120のタグ1114およびインデクス1116を含むアドレス部分から成り、L1バーチャルD−キャッシュ1122は、L1 D−キャッシュ20からセーブされたデータ1130の各キャッシュラインのタグ1124およびインデクス1126を含むアドレス部分から成る。これらの「バーチャルキャッシュ」の各々は、統合メモリコントローラ(IMC)220によって相互接続222を介して管理されてコヒーレンシを維持する。
IMC220は、システム相互接続222上の各動作をスヌープする。動作をスヌープして、キャッシュラインの無効化を必要とし得る場合はいつでも、IMC220は、バーチャルキャッシュディレクトリ1132に対して動作をスヌープする。スヌープヒットが検出されると、IMC220は、適切なバーチャルキャッシュディレクトリを更新することによって、システムメモリ118においてバーチャルキャッシュラインを無効化する。スヌープ無効化のために正確なアドレス一致(すなわち、タグおよびインデクスの双方の一致)を必要とする可能性があるが、精密なアドレス一致の実施は、IMC220内の大量の回路を必要とする(特に64ビットおよびそれより大きなアドレス)。従って、好適な実施形態では、スヌープ無効化は精密ではなく、スヌープされたアドレスと一致する選択された最上位ビット(MSB)を有する全てのバーチャルキャッシュラインを無効化する。バーチャルキャッシュメモリにおいて、どのMSBを用いてどのキャッシュラインを無効化するかは、各実施に限定されており、モードビットによってソフトウエア制御可能またはハードウエア制御可能とすることができる。このため、アドレスは、タグまたはタグの一部のみ(最上位10ビット等)に対してスヌープすることができる。かかるバーチャルキャッシュメモリの無効化方式は、有効データを含むキャッシュラインを無効化するという不利点が認められているが、この不利点よりも、バーチャルキャッシュラインのコヒーレンシを維持する極めて高速な方法を提供することによって達成される性能の利点の方が重要である。
製造レベル試験
製造の間、集積回路は、様々な動作条件のもとで一連の試験を受ける。かかる試験の1つはデータ試験である。この試験では、集積回路の全ての内部ゲートを、上述のIEEE1149.1試験スキャンチェーンを用いて試験データストリームによって試験する。従来技術では、動作環境において集積回路を設置した後、かかる試験プログラムは再び実行しない。その理由は、一つには、ほとんどの動作環境において、集積回路を試験取付具に接続して試験を行うことは実行不可能であるからであり、また一つには、かかる試験によって意図した目的に集積回路を用いることが妨げられるからである。例えば、プロセッサ100において、ハードアーキテクチャ状態を、ロード/ストア実行経路を介してシステムメモリにセーブすると共にシステムメモリからリストアすることによって、試験中に多くの作業の達成が妨げられ、長い待ち時間を招く。
しかしながら、上述のハードアーキテクチャ状態の格納方法を用いると、プロセッサを通常の動作環境(例えばコンピュータシステム)に設置している間に、プロセッサは製造レベル試験プログラムを定期的に実行することができる。なぜなら、ハードアーキテクチャ状態をセーブしリストアするための時間は極めて短く、好ましくはわずか数クロックサイクルであるからである。
ここで図17を参照すると、本発明による製造レベル試験プログラムの例示的な方法のフローチャートが示されている。試験プログラムは、定期的に実行すると好ましい。このため、ブロック1202および1204に示すように、所定の時間量が経過すると、プロセッサにおいて割込みを開始する(ブロック1206)。本発明を用いるいかなる割込みについても、試験プログラムが実行を開始し割込みを送出すると、ブロック1208に示すように、ハードアーキテクチャ状態をセーブするための上述の好適な方法を用いて、すぐに(一般に2〜3クロックサイクル内に)現在実行中のプロセスのハードアーキテクチャ状態をセーブする。同時に、好ましくは図9において上述したように、現在実行中のプロセスのソフト状態の少なくとも一部をセーブする(ブロック1210)。
オプションとして、ブロック1212に示すように、製造試験プログラムのためのハードアーキテクチャ状態をプロセッサ内にロードする。本発明の好適な実施形態では、製造レベル試験プログラムは、図11に示すフラッシュROM802からロードした製造レベル試験プログラム(複数のプログラム)810からロードする。製造レベル試験プログラム(複数のプログラム)810は、処理ユニット200を最初に製造した時にフラッシュROM802に焼き付けることができ、またはそれ以降に、製造レベル試験プログラム(複数のプログラム)810を焼き付けることができる。多数の製造レベル試験プログラムがフラッシュROM802にストアされている場合、製造レベル試験プログラムのうち1つを実行のために選択する。本発明の好適な実施形態では、ブロック1202および1204について上述したように、タイマ割込みを実行するたびに、製造レベル試験プログラムを実行する。
ハードアーキテクチャ状態をプロセッサ内にロードするとすぐ、好ましくは上述したIEEE1149.1試験スキャンチェーンを用いて、製造レベル試験プログラムは実行を開始する(ブロック1214)。同時に、好ましくはソフト状態の更新について上述したように(図9)、ソフトアーキテクチャ状態はプロセッサ内に送出させる(ブロック1216)。製造レベル試験プログラムの実行の完了後、割込みは完了し、次のプロセスのためにハードアーキテクチャ状態およびソフト状態をロードすることによって、次のプロセスを実行する(ブロック1218)。
ハードアーキテクチャ状態のロードは数クロックサイクルしか必要としないので、製造レベル試験プログラムは、試験プログラム自体を実行するために必要な時間の制約内で、設計者が望む回数だけ実行することができる。製造試験プログラムの実行は、ユーザ、オペレーティングシステム、またはハイパーバイザによって開始することができる。
このため、本発明は、とりわけ、割込みに関連する待ち時間の問題に対処する方法およびシステムを提供する。例えば、従来技術において、割込みハンドラがまれにしか呼び出されるプロセスである場合、低いキャシュレベルおよびシステムメモリを検索して適切な割込みハンドラを見つける際に、通常長い待ち時間がかかっていた。割込みハンドラが実行している場合、これは、プロセッサのキャッシュ階層を、割込みを処理するために必要な命令/データによってポピュレートし、このため、割込みのかかったプロセスが実行のためにリストアされると、キャッシュ階層は「汚染」される。本発明は、本明細書中で説明した発明的なプロセスを利用して、これらの問題を解決する。
本発明の態様について、コンピュータプロセッサおよびソフトウエアに関して説明したが、本発明の少なくともいくつかの態様は、代替的に、データ格納システムまたはコンピュータシステムと共に用いるプログラムプロダクトとして実施可能であることは理解されよう。本発明の機能を規定するプログラムは、様々な信号搬送媒体によって、データ格納システムまたはコンピュータシステムに送出可能である。この信号搬送媒体には、限定ではないが、非書き込み可能格納媒体(例えばCD−ROM)、書き込み可能格納媒体(例えばフレキシブルディスク、ハードディスクドライブ、読み取り/書き込みCD−ROM、光学媒体)、ならびに、イーサネット(登録商標)を含むコンピュータおよび電話ネットワーク等の通信媒体が含まれる。従って、かかる信号搬送媒体は、本発明の方法機能を指示するコンピュータ読み取り可能命令を搬送または符号化している場合、本発明の代替的な実施形態を表すことは理解されよう。更に、本発明は、本明細書中もしくはそれらの均等物で記載するような、ハードウエア、ソフトウエア、またはソフトウエアおよびハードウエアの組み合わせの形態の手段を有するシステムによって実施可能であることは理解されよう。
本発明について、好適な実施形態を参照して具体的に図示し説明したが、当業者には、本発明の精神および範囲から逸脱することなく、形態および詳細において様々な変更を加え得ることは理解されよう。
まとめとして、本発明の構成に関して以下の事項を開示する。
(1)プロセッサにおいて状態情報を管理する方法であって、
前記プロセッサにおいてプロセスを実行するために重要なアーキテクチャ状態を前記プロセッサ内にストアするステップと、
前記プロセッサ内に前記アーキテクチャ状態のシャドーコピーをストアするステップと、
前記プロセッサにおけるプロセス割込みの受信に応答して、前記アーキテクチャ状態の前記シャドーコピーをメモリにストアするステップと、
前記シャドーコピーの前記メモリへのストアの完了とは無関係に前記アーキテクチャ状態を変更するステップと、
を具備することを特徴とする、方法。
(2)前記変更するステップは、前記シャドーコピーの前記メモリへのストアの完了よりも前に前記アーキテクチャ状態を変更することを含むことを特徴とする、(1)の方法。
(3)前記アーキテクチャ状態の前記シャドーコピーは、前記プロセス割込みに応答して更新されることを特徴とする、(1)の方法。
(4)更に、前記アーキテクチャ状態の各変更に応答して前記シャドーコピーを連続的に更新するステップを含むことを特徴とする、(1)の方法。
(5)前記プロセッサは、関連する揮発性メモリのメモリ階層を有し、前記階層は、最小の待ち時間を有する最高レベルおよび最大の待ち時間を有する最低レベルを含み、前記ストアするステップは、前記揮発性メモリの前記最低レベルに前記アーキテクチャ状態の前記シャドーコピーをストアすることを含むことを特徴とする、(1)の方法。
(6)更に、割込みハンドラを実行して前記プロセス割込みを処理するステップを特徴とする、(1)の方法。
(7)前記プロセッサは、メモリアクセス命令を実行するための実行回路を含み、前記方法は、更に、前記実行回路によるメモリアクセス命令の実行とは無関係に前記シャドーコピーを前記メモリにストアするステップを具備することを特徴とする、(1)の方法。
(8)プロセッサであって、
少なくとも1つの実行ユニットと、
前記少なくとも1つの実行ユニットに結合された命令順序付けユニットと、
前記少なくとも1つの実行ユニットに結合された第1のレジスタ集合と、
を具備し、前記第1のレジスタ集合は、前記プロセッサにおいてプロセスを実行するために重要なアーキテクチャ状態の少なくとも一部を含み、
更に、前記第1のレジスタ集合に結合され、前記第1のレジスタ集合に含まれる前記アーキテクチャ状態の前記少なくとも一部のシャドーコピーを含む、対応するシャドーレジスタと、
前記シャドーレジスタに結合されたメモリと、
を具備し、前記プロセッサは、プロセス割込みを受信すると、前記メモリに前記アーキテクチャ状態の前記シャドーコピーをストアし、前記アーキテクチャ状態の前記シャドーコピーは、前記プロセッサにおいて実行される次のプロセスのためのアーキテクチャ状態の変更には無関係に前記メモリにストアされることを特徴とする、プロセッサ。
(9)更に、
最小の待ち時間を有する最高レベルおよび最大の待ち時間を有する最低レベルを含む関連する揮発性メモリ階層と、
前記不揮発性メモリ階層の前記最低レベルに結合され、前記不揮発性メモリの前記最低レベルに前記アーキテクチャ状態をストアするメモリコントローラと、
を具備することを特徴とする、(8)のプロセッサ。
(10)更に、前記プロセス割込みに応答して前記アーキテクチャ状態の前記シャドーコピーを更新するための手段を具備することを特徴とする、(8)のプロセッサ。
(11)前記アーキテクチャ状態の各変更に応答して前記アーキテクチャ状態の前記シャドーコピーを連続的に更新するための手段を具備することを特徴とする、(8)のプロセッサ。
(12)更に、前記プロセス割込みが完了すると、前記割込みのかかったプロセスの実行を継続するため、前記ストアされたソフト状態をプロセッサに復元するステップを具備することを特徴とする、(1)の方法。
(13)データ処理システムであって、
(8)によるプロセッサを含む複数のプロセッサと、
前記複数のプロセッサに結合された揮発性メモリ階層と、
前記複数のプロセッサを結合する相互接続と、
を具備することを特徴とするデータ処理システム。
(14)プロセッサであって、
前記プロセッサにおいてプロセスを実行するために重要なアーキテクチャ状態を前記プロセッサ内にストアするための手段と、
前記プロセッサ内に前記アーキテクチャ状態のシャドーコピーをストアするための手段と、
前記プロセッサにおけるプロセス割込みの受信に応答して、前記アーキテクチャ状態の前記シャドーコピーをメモリにストアするための手段と、
前記シャドーコピーの前記メモリへのストアの完了とは無関係に前記プロセッサ内の前記アーキテクチャ状態を変更するための手段と、
を具備することを特徴とする、プロセッサ。
(15)前記アーキテクチャ状態を変更するための手段は、前記シャドーコピーの前記メモリへのストアの完了よりも前に前記アーキテクチャ状態を変更するための手段を具備することを特徴とする、(14)のプロセッサ。
(16)更に、前記プロセス割込みに応答して前記アーキテクチャ状態の前記シャドーコピーを更新するための手段を具備することを特徴とする、(14)のプロセッサ。
(17)更に、前記アーキテクチャ状態の各変更に応答して前記シャドーコピーを連続的に更新するための手段を具備することを特徴とする、(14)のプロセッサ。
(18)更に、
最小の待ち時間を有する最高レベルおよび最大の待ち時間を有する最低レベルを含む関連する揮発性メモリ階層と、
前記不揮発性メモリ階層の前記最低レベルに結合され、前記不揮発性メモリの前記最低レベルに前記アーキテクチャ状態をストアするメモリコントローラと、
を具備することを特徴とする、(14)のプロセッサ。
(19)更に、割込みハンドラを実行して前記プロセス割込みを処理するための手段を具備することを特徴とする、(14)のプロセッサ。
(20)更に、メモリアクセス命令を実行するための実行回路を含み、これによって、前記プロセッサは、前記実行回路によるメモリアクセス命令の実行とは無関係に前記シャドーコピーを前記メモリにストアすることができることを特徴とする、(14)のプロセッサ。
(21)更に、
最小の待ち時間を有する最高レベルおよび最大の待ち時間を有する最低レベルを含む関連する揮発性メモリ階層と、
前記不揮発性メモリ階層の前記最低レベルに結合され、前記不揮発性メモリの前記最低レベルに前記アーキテクチャ状態をストアするメモリコントローラと、
を具備することを特徴とする、(14)のプロセッサ。
ロード/ストアユニットを用いてプロセッサのアーキテクチャ状態をセーブするために従来技術の方法を採用する従来のコンピュータシステムのブロック図である。 本発明によるデータ処理システムの例示的な実施形態のブロック図である。 図2に示す処理ユニットの付加的な詳細を示す。 図2に示す処理ユニットの付加的な詳細を示す。 本発明による例示的なソフトウエア構成の層図を示す。 図7と共に、本発明による例示的な割込み処理プロセスのフローチャートを形成する。 図6と共に、本発明による例示的な割込み処理プロセスのフローチャートを形成する。 本発明に従ってハードアーキテクチャ状態およびソフト状態をセーブするための、図6に示すステップの更なる詳細を示すフローチャートである。 本発明に従ってハードアーキテクチャ状態およびソフト状態をセーブするための、図6に示すステップの更なる詳細を示すフローチャートである。 プロセスの少なくともソフト状態をメモリに伝達するために本発明が用いるスキャンチェーン経路を示す。 少なくとも第1レベル割込みハンドラ(FLIH)、第2レベル割込みハンドラ(SLIH)、および製造レベル試験命令をストアするために、本発明に従って用いられる図2に示すフラッシュROMの付加的な詳細を示す。 少なくとも第1レベル割込みハンドラ(FLIH)、第2レベル割込みハンドラ(SLIH)、および製造レベル試験命令をストアするために、本発明に従って用いられる図2に示すフラッシュROMの付加的な詳細を示す。 少なくとも第1レベル割込みハンドラ(FLIH)、第2レベル割込みハンドラ(SLIH)、および製造レベル試験命令をストアするために、本発明に従って用いられる図2に示すフラッシュROMの付加的な詳細を示す。 本発明による、プロセッサが割込みを受信した際の予測SLIHへのジャンプを説明するフローチャートである。 ストアされたハードアーキテクチャ状態、ストアされたソフト状態、メモリパーティション、およびプロセッサ間の論理的および通信的関係を示す。 ソフト状態をメモリにストアするための例示的なデータ構造を示す。 コンピュータシステムの通常動作の間に製造レベル試験プログラムを実行することによってプロセッサを試験するための例示的な方法のフローチャートである。

Claims (20)

  1. プロセッサにおいて状態情報を管理する方法であって、
    前記プロセッサにおいてプロセスを実行するためにハードアーキテクチャ状態を前記プロセッサ内の現在のプロセスハード状態用レジスタにストアするステップと、
    前記プロセッサ内に前記ハードアーキテクチャ状態のシャドーコピーを前記プロセッサ内のシャドーレジスタにストアするステップと、
    前記プロセッサにおけるプロセス割込みの受信に応答して、
    前記ハードアーキテクチャ状態の前記シャドーコピーをメモリにストアするステップと
    キャッシュ内容を含むプロセスのソフト状態を内部データ経路を用いて前記メモリにストアするステップと、
    前記シャドーコピーの前記メモリへのストアの完了よりも前に前記ハードアーキテクチャ状態を変更するステップと、
    前記ソフト状態の前記メモリへのストアとは独立して非同期に前記プロセス割込みを処理する割込みハンドラを実行するステップと
    を具備することを特徴とする、方法。
  2. 前記変更するステップは、前記シャドーコピーの前記メモリへのストアの完了よりも前に前記ハードアーキテクチャ状態を変更することを含むことを特徴とする、請求項1の方法。
  3. 前記ハードアーキテクチャ状態の前記シャドーコピーは、前記プロセス割込みに応答して更新されることを特徴とする、請求項1の方法。
  4. 前記ソフト状態の前記メモリへのストアは、レベル1命令キャッシュ、レベル1データキャッシュ、分岐履歴テーブル、命令変換索引バッファ、データ変換索引バッファ、有効−実アドレステーブル、一体化レベル2キャッシュを前記メモリにストアするステップを含むことを特徴とする、請求項1の方法。
  5. 前記プロセッサは、前記プロセス割込みの終了の際、
    次のプロセスを選択するための次のプロセスハード状態用レジスタを有し、
    このレジスタはプロセスの優先度の変動に伴い前記メモリから連続的かつ動的に更新されるステップを具備することを特徴とする、請求項1の方法。
  6. 更に、割込みハンドラを実行して前記プロセス割込みを処理するステップを特徴とする、請求項1の方法。
  7. 前記プロセッサは、メモリアクセス命令を実行するための実行回路を含み、
    前記方法は、更に、前記実行回路によるメモリアクセス命令の実行とは独立して非同期に前記シャドーコピーを前記メモリにストアするステップと、
    前記ソフト状態の前記メモリへのストアするステップと、
    を具備することを特徴とする、請求項1の方法。
  8. プロセッサであって、
    少なくとも1つの実行ユニットと、
    前記少なくとも1つの実行ユニットに結合された命令順序付けユニットと、
    前記少なくとも1つの実行ユニットに結合された第1のレジスタ集合と、
    を具備し、前記第1のレジスタ集合は、前記プロセッサにおいてプロセスを実行するためにハードアーキテクチャ状態の少なくとも一部を含み、
    更に、前記第1のレジスタ集合に結合され、前記第1のレジスタ集合に含まれる前記ハードアーキテクチャ状態の前記少なくとも一部のシャドーコピーを含む、対応するシャドーレジスタと、
    前記シャドーレジスタに結合されたメモリと、
    を具備し、前記プロセッサは、プロセス割込みを受信すると、
    前記メモリに前記ハードアーキテクチャ状態の前記シャドーコピーをストアし、
    キャッシュ内容を含むプロセスのソフト状態を内部データ経路を用いて前記メモリにストアし
    前記シャドーコピーの前記メモリへのストアの完了よりも前に前記ハードアーキテクチャ状態を変更し、
    前記ソフト状態の前記メモリへのストアとは独立して非同期に前記プロセス割込みを処理する割込みハンドラを実行することを特徴とする、プロセッサ。
  9. 前記プロセッサは、前記プロセス割込みの終了の際、
    次のプロセスを選択するための次のプロセスハード状態用レジスタを有し、
    このレジスタはプロセスの優先度の変動に伴い前記メモリから連続的かつ動的に更新されるための手段を具備することを特徴とする、請求項8のプロセッサ。
  10. 更に、前記プロセス割込みに応答して前記ハードアーキテクチャ状態の前記シャドーコピーを更新するための手段を具備することを特徴とする、請求項8のプロセッサ。
  11. 前記ソフト状態の前記メモリへのストアはレベル1命令キャッシュ、レベル1データキャッシュ、分岐履歴テーブル、命令変換索引バッファ、データ変換索引バッファ、有効−実アドレステーブル、一体化レベル2キャッシュを前記メモリにストアするための手段を具備することを特徴とする、請求項8のプロセッサ。
  12. 更に、前記プロセス割込みが完了すると、前記割込みのかかったプロセスの実行を継続するため、前記ストアされた前記ソフト状態の少なくとも一部をリストアするステップを具備することを特徴とする、請求項1の方法。
  13. データ処理システムであって、
    請求項8によるプロセッサを含む複数のプロセッサと、
    前記複数のプロセッサに結合された揮発性メモリ階層と、
    前記複数のプロセッサを結合する相互接続と、
    を具備することを特徴とするデータ処理システム。
  14. プロセッサであって、
    前記プロセッサにおいてプロセスを実行するためにハードアーキテクチャ状態を前記プロセッサ内の現在のプロセスハード状態用レジスタにストアするための手段と、
    前記プロセッサ内に前記ハードアーキテクチャ状態のシャドーコピーを前記プロセッサ内のシャドーレジスタにストアするための手段と、
    前記プロセッサにおけるプロセス割込みの受信に応答して、
    前記ハードアーキテクチャ状態の前記シャドーコピーをメモリにストアするための手段と、
    キャッシュ内容を含むプロセスのソフト状態を内部データ経路を用いて前記メモリにストアするための手段と、
    前記シャドーコピーの前記メモリへのストアの完了よりも前に前記プロセッサ内の前記ハードアーキテクチャ状態を変更するための手段と、
    前記ソフト状態の前記メモリへのストアとは独立して非同期に前記プロセス割込みを処理する割込みハンドラを実行するための手段と
    を具備することを特徴とする、プロセッサ。
  15. 前記ハードアーキテクチャ状態を変更するための手段は、前記シャドーコピーの前記メモリへのストアの完了よりも前に前記ハードアーキテクチャ状態を変更するための手段を具備することを特徴とする、請求項14のプロセッサ。
  16. 更に、前記プロセス割込みに応答して前記ハードアーキテクチャ状態の前記シャドーコピーを更新するための手段を具備することを特徴とする、請求項14のプロセッサ。
  17. 前記ソフト状態の前記メモリへのストアは、レベル1命令キャッシュ、レベル1データキャッシュ、分岐履歴テーブル、命令変換索引バッファ、データ変換索引バッファ、有効−実アドレステーブル、一体化レベル2キャッシュを前記メモリにストアするための手段を具備することを特徴とする、請求項14のプロセッサ。
  18. 更に、
    前記プロセッサは、前記プロセス割込みの終了の際、
    次のプロセスを選択するための次のプロセスハード状態用レジスタを有し、
    このレジスタはプロセスの優先度の変動に伴い前記メモリから連続的かつ動的に更新されるための手段を具備することを特徴とする、請求項14のプロセッサ。
  19. 更に、割込みハンドラを実行して前記プロセス割込みを処理するための手段を具備することを特徴とする、請求項14のプロセッサ。
  20. 更に、メモリアクセス命令を実行するための実行回路を含み、
    これによって、前記プロセッサは、前記実行回路によるメモリアクセス命令の実行とは独立して非同期に前記シャドーコピーを前記メモリにストアすることができる手段と、
    前記ソフト状態の前記メモリへのストアする手段と、
    を具備することを特徴とする、請求項14のプロセッサ。
JP2003365322A 2002-12-05 2003-10-24 割込み時のプロセッサのアーキテクチャ状態の管理 Expired - Fee Related JP3874287B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/313,321 US7117319B2 (en) 2002-12-05 2002-12-05 Managing processor architected state upon an interrupt

Publications (2)

Publication Number Publication Date
JP2004185602A JP2004185602A (ja) 2004-07-02
JP3874287B2 true JP3874287B2 (ja) 2007-01-31

Family

ID=32468219

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003365322A Expired - Fee Related JP3874287B2 (ja) 2002-12-05 2003-10-24 割込み時のプロセッサのアーキテクチャ状態の管理

Country Status (3)

Country Link
US (1) US7117319B2 (ja)
JP (1) JP3874287B2 (ja)
CN (1) CN1291316C (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7493478B2 (en) * 2002-12-05 2009-02-17 International Business Machines Corporation Enhanced processor virtualization mechanism via saving and restoring soft processor/system states
US7363536B1 (en) * 2004-07-30 2008-04-22 Hewlett-Packard Development Company, L.P. Delivery of an interruption to an operating system
US7328331B2 (en) * 2005-01-25 2008-02-05 Hewlett-Packard Development Company, L.P. Method and system of aligning execution point of duplicate copies of a user program by copying memory stores
US20060200616A1 (en) * 2005-03-02 2006-09-07 Richard Maliszewski Mechanism for managing resources shared among virtual machines
US8812781B2 (en) * 2005-04-19 2014-08-19 Hewlett-Packard Development Company, L.P. External state cache for computer processor
US7930589B2 (en) * 2005-06-17 2011-04-19 Analog Devices, Inc. Interrupt-responsive non-volatile memory system and method
US7424563B2 (en) * 2006-02-24 2008-09-09 Qualcomm Incorporated Two-level interrupt service routine
JP4871948B2 (ja) * 2008-12-02 2012-02-08 株式会社日立製作所 仮想計算機システム、仮想計算機システムにおけるハイパバイザ、及び仮想計算機システムにおけるスケジューリング方法
JP4691153B2 (ja) * 2008-12-10 2011-06-01 富士通株式会社 マルチコアプロセッサ,制御方法および情報処理装置
US8825926B2 (en) * 2009-04-13 2014-09-02 Microchip Technology Incorporated Processor with assignable general purpose register set
US8578138B2 (en) 2009-08-31 2013-11-05 Intel Corporation Enabling storage of active state in internal storage of processor rather than in SMRAM upon entry to system management mode
TW201237630A (en) * 2011-03-01 2012-09-16 Wistron Corp Method and computer system for processing data in a memory
CN102929819B (zh) * 2012-10-19 2016-02-10 北京忆恒创源科技有限公司 用于处理计算机系统中的存储设备的中断请求的方法
US10990159B2 (en) * 2017-04-25 2021-04-27 Apple Inc. Architected state retention for a frequent operating state switching processor
JP7368511B2 (ja) * 2020-02-03 2023-10-24 株式会社ソニー・インタラクティブエンタテインメント データ処理システム、データ転送装置およびコンテキストスイッチ方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4484274A (en) * 1982-09-07 1984-11-20 At&T Bell Laboratories Computer system with improved process switch routine
JPS6027031A (ja) 1983-07-25 1985-02-12 Nec Corp 情報処理装置
JPS60164840A (ja) 1984-02-08 1985-08-27 Nec Corp レジスタセ−ブ,リカバ−方式
JPS61241838A (ja) 1985-04-19 1986-10-28 Nec Corp 記憶装置
US5057997A (en) * 1989-02-13 1991-10-15 International Business Machines Corp. Interruption systems for externally changing a context of program execution of a programmed processor
JPH03201032A (ja) 1989-12-28 1991-09-02 Toshiba Corp 演算処理装置
JPH04288625A (ja) 1991-02-18 1992-10-13 Mitsubishi Electric Corp マイクロコンピュータ
US6026471A (en) 1996-11-19 2000-02-15 International Business Machines Corporation Anticipating cache memory loader and method
US5987495A (en) * 1997-11-07 1999-11-16 International Business Machines Corporation Method and apparatus for fully restoring a program context following an interrupt
US6189112B1 (en) * 1998-04-30 2001-02-13 International Business Machines Corporation Transparent processor sparing
US6247109B1 (en) * 1998-06-10 2001-06-12 Compaq Computer Corp. Dynamically assigning CPUs to different partitions each having an operation system instance in a shared memory space
US6308290B1 (en) 1999-05-20 2001-10-23 International Business Machines Corporation Look ahead scan chain diagnostic method
US6981083B2 (en) * 2002-12-05 2005-12-27 International Business Machines Corporation Processor virtualization mechanism via an enhanced restoration of hard architected states

Also Published As

Publication number Publication date
CN1504883A (zh) 2004-06-16
US7117319B2 (en) 2006-10-03
CN1291316C (zh) 2006-12-20
US20040111572A1 (en) 2004-06-10
JP2004185602A (ja) 2004-07-02

Similar Documents

Publication Publication Date Title
EP1570352B1 (en) Method and apparatus for switching between processes
CA2508044C (en) Cross partition sharing of state information
US7849298B2 (en) Enhanced processor virtualization mechanism via saving and restoring soft processor/system states
JP3874287B2 (ja) 割込み時のプロセッサのアーキテクチャ状態の管理
JP2004185603A (ja) 割込みハンドラ予測方法およびシステム
JP3872470B2 (ja) メモリにおいてセーブされたプロセス状態を管理する方法、処理ユニットおよびデータ処理システム
US7039832B2 (en) Robust system reliability via systolic manufacturing level chip test operating real time on microprocessors/systems

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20051212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060110

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060405

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20060405

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20060405

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20061018

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061019

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20091102

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20101102

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees