JP5392404B2 - 動的なシステムを再構成する方法および装置 - Google Patents

動的なシステムを再構成する方法および装置 Download PDF

Info

Publication number
JP5392404B2
JP5392404B2 JP2012516396A JP2012516396A JP5392404B2 JP 5392404 B2 JP5392404 B2 JP 5392404B2 JP 2012516396 A JP2012516396 A JP 2012516396A JP 2012516396 A JP2012516396 A JP 2012516396A JP 5392404 B2 JP5392404 B2 JP 5392404B2
Authority
JP
Japan
Prior art keywords
reconfiguration
memory
hot
processor
dynamic hardware
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
JP2012516396A
Other languages
English (en)
Other versions
JP2012530327A (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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JP2012530327A publication Critical patent/JP2012530327A/ja
Application granted granted Critical
Publication of JP5392404B2 publication Critical patent/JP5392404B2/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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)
  • Logic Circuits (AREA)
  • Advance Control (AREA)

Description

本発明は概して、動的なシステムの再構成に関する。
大規模なマルチプロセッサ(MP)システム(例えば、128個のソケットを持つもの)を構築する機能を持つスケーリング可能なクイック・パス・インターコネクト(Quick Path Interconnect:QPI)サーバが登場して、システムの再構成は非常に複雑となった。メモリコントローラは、各プロセッサソケットに一体化されている。また、他の構成要素(例えば、I/Oルートコンプレックス、I/Oデバイス等)は将来、1以上のプロセッサソケットに一体化される可能性がある。このためさらに、アドレスルーティングの複雑さが増してしまう。例えば、プロセッサホットプラグおよび入出力ハブ(IOH)ホットプラグ等の信頼性、可用性および保守性(RAS)を満たす特徴のリストには、メモリマイグレーション、CPUマイグレーション等が追加されている。このように複雑さが増している中で新しい特徴が追加されており、ハードウェアで動的なシステムの再構成を実現する方法は、開発および実証が非常に複雑で高コストである。
RAS処理(特に、ランタイムにおいてシステム構成に影響を与えるRAS処理)は現在、システム管理割り込み(SMI)を用いて実行されている。SMIでは、全てのプロセッサをまとめて、QPIエージェント(例えば、プロセッサ、IOH等)を休止させて、システム構成(例えば、QPIルート、アドレスデコーダ等)をプログラミングし直す。しかし、QPIインターコネクトのリンクとしての本質に関わらず、全てのQPIエージェント(プロセッサ、I/Oハブ)に対する変更は、データトラフィックルーティングの失敗を避けるためにアトミックに行なう必要がある。このため、コヒーレントメモリから実行されるSMIコードでこの再構成を実行する場合には、これがQPIルート変更中には許容できないので、特に問題となる。また、SMI処理はOS(オペレーティングシステム)に対してトランスペアレントであるので、システム処理の信頼性を維持するためには、SMIレイテンシを最小限(通常は、数百マイクロ秒のオーダ)に抑えることが必要となる。
本発明は、以下に記載する詳細な説明および本発明の一部の実施形態を示す図面によって、より完全に理解されるであろう。しかし図面は、説明した具体的な実施形態に本発明を限定するものと解釈されるべきではなく、説明および理解のために提供するに過ぎない。
本発明の一部の実施形態に係るシステムを示す図である。 本発明の一部の実施形態に係るシステムを示す図である。 本発明の一部の実施形態に係るシステムを示す図である。 本発明の一部の実施形態に係るフローを示す図である。 本発明の一部の実施形態に係るフローを示す図である。 本発明の一部の実施形態に係るフローを示す図である。 本発明の一部の実施形態に係るフローを示す図である。 本発明の一部の実施形態に係るシステムを示す図である。 本発明の一部の実施形態に係るシステムを示す図である。 本発明の一部の実施形態に係るフローを示す図である。 本発明の一部の実施形態に係るフローを示す図である。
本発明の一部の実施形態は、動的なシステムの再構成に関する。
図1は、一部の実施形態に係るシステム100を示す図である。一部の実施形態によると、システム100は、複数のプロセッサおよび/または中央演算処理装置(CPU)を備える。例えば、CPU0 102、CPU1 104、CPU2 106、および、CPU3 108を備える。一部の実施形態によると、システム100はさらに、複数のメモリを備える。例えば、メモリ112、メモリ114、メモリ116、および、メモリ118を備える。一部の実施形態によると、プロセッサ102、104、106および108はそれぞれ、メモリコントローラを有する。一部の実施形態によると、システム100はさらに、1以上の入出力(I/O)ハブ(IOH)を備える。例えば、IOH0 122およびIOH1 124を備える。一部の実施形態によると、IOH1 124は、PCI Expressバス132および/あるいはPCI Expressバス134に結合されており、ならびに/または、IOH0 122は、PCI Expressバス136、PCI Expressバス138および/あるいは入出力コントローラハブ(ICH)140に結合されている。一部の実施形態によると、プロセッサ102、104、106および108、ならびに、IOH122およびIOH124は、複数のリンクおよび/またはインターコネクトで互いに結合されている。一部の実施形態によると、プロセッサ102、104、106および108、ならびに、IOH0 122およびIOH1 124を結合するリンクおよび/またはインターコネクトは、複数のコヒーレントリンクであり、例えば、一部の実施形態では、クイック・パス・インターコネクト(Quick Path Interconnect(QPI))リンクおよび/または複数のコモン・システム・インターフェース(Common System Interface(CSI))リンクである。
一部の実施形態によると、システム100は、4ソケット式のQPIをベースとするシステムである。一部の実施形態によると、QPIコンポーネント(例えば、プロセッサソケットおよび/またはI/Oハブ)は、Intel(登録商標)社のQPIリンクを用いて接続され、Intel(登録商標)社のQPIポートで制御される。一部の実施形態によると、QPIコンポーネント間の通信は、ソースアドレスデコーダ(SAD)およびルータ(RTA)を用いることで可能となる。ソースアドレスデコーダ(SAD)は、特定のノードアドレスに対するインバンドアドレスアクセスをデコードする。QPIルータは、このようなQPIコンポーネント間のトラフィックおよび他のQPIコンポーネントへのトラフィックをルーティングする。
一部の実施形態によると、QPIプラットフォームは、トラフィックのルーティングのミスに対応するべく、システムが備える全てのソースアドレスデコーダおよびルータが同じようにプログラミングされていることを要件とする。ブート処理時に、オペレーティングシステム(OS)に制御がハンドオーバーされる前に、このプログラミングがベーシック入出力システム(BIOS)で行なわれるとしてよい。
一部の実施形態によると、システムがOSに対してブートされた後、信頼性、可用性および保守性(RAS)イベントはシステム構成を変更することが可能となる。例えば、RASイベントには、プロセッサ追加、プロセッサ削除、IOH追加、IOH削除、メモリ追加、メモリ移動、メモリマイグレーション、メモリミラーリング、メモリ節約、プロセッサホットプラグ、メモリホットプラグ、ホットプラグソケット、ホットプラグIOH(I/Oハブ)、ドメインパーティション化等の処理が含まれる。このようなRASイベントおよび他の種類のRASイベントでは、OS実行中にQPIコンポーネントを動的にプログラミングすることを要件とする。このように、OS実行中にシステムを動的に変更する必要がある。SADおよびルータが常に同じにプログラミングされていなければならないという要件があるので、このようなRAS処理では、QPI構成に対する更新は「アトミックに」実行することが必要となる(つまり、QPIを再構成している間はコヒーレントトラフィックが進行中であってはならない)。また、OSはこのようなRASイベント中も実行され続けるので、OSタイムアウトに対応するためには、狭い時間ウィンドウで(例えば、通常は数百マイクロ秒のオーダで)再構成を完了させる必要がある。
高度なRAS特徴、例えば、ホットプラグソケット、ホットプラグプロセッサ、ホットプラグメモリ、ホットプラグI/Oハブ(IOH)、メモリホットプラグ、I/Oチップセットホットプラグ、I/Oコントローラハブ(ICH)ホットプラグ、プロセッサオンライン/オフライン、メモリオンライン/オフライン、I/Oチップセットオンライン/オフライン、I/Oコントローラハブ(ICH)オンライン/オフライン、メモリマイグレーション、メモリミラーリング、プロセッサ(および/またはCPU)マイグレーション、ドメインパーティション化等は、高度且つミッションクリティカルなマルチプロセッササーバプラットフォームを差別化する重要な要因である。QPI等のリンクをベースとするサーバプラットフォームおよび/またはマルチプロセッサプラットフォームは、例えば、上記のような高度なRAS特徴を可能とするように設計されている。上述したように、QPIシステムにおけるこのようなRASフローについてはいずれについても、全てのQPIエージェントにおいて(例えば、全てのプロセッサおよびI/Oハブにおいて)QPI構成をアトミックに更新すること(例えば、QPIルーティングの変更、ソースアドレスデコーダの変更、ブロードキャストリスト等)が必要であるという要件がある。
アトミック性に加えて、上記のような変更は、実行中のOSに影響を与えることなくOSにトランスペアレントに実行する必要がある。一部の実施形態によると、システム管理モード(SMM)を用いて、システム管理割り込み(SMI)を利用してルーティングの変更を行なう。従来のSMIコードは、メモリから実行される。尚、メモリは、システム内の任意のQPIソケットに配置することが可能である。しかし、QPI構成変更中にメモリに対してアクセスが発生すると、パケットのルーティングのミスが発生する可能性があり、再構成中はメモリアクセスを禁止しない限りはシステムの整合性に問題が発生する。また、SMIレイテンシは、OSがリアルタイムでのアクセスを期待しているので、数百マイクロ秒のオーダに制限されている。
一部の実施形態によると、動的なQPIシステムの再構成は、アトミックに実行され(つまり、再構成実行中はメモリアクセス等のコヒーレントトラフィックは発生しない)、オペレーティングシステム/仮想メモリマネージャ(OS/VMM)のリアルタイム応答要件を満足させる。
図2は、一部の実施形態に係るシステム200を示す図である。一部の実施形態によると、システム200は、複数のプロセッサおよび/または中央演算処理装置(CPU)を備える。例えば、CPU0 202、CPU1 204、CPU2 206、および、CPU3 208を備える。一部の実施形態によると、システム200はさらに、複数のメモリを備える。例えば、メモリ212、メモリ214、メモリ216、および、メモリ218を備える。一部の実施形態によると、プロセッサ202、204、206および208はそれぞれ、メモリコントローラを有する。一部の実施形態によると、システム200はさらに、1以上の入出力(I/O)ハブ(IOH)を備える。例えば、IOH0 222およびIOH1 224を備える。一部の実施形態によると、プロセッサ202、204、206および208、ならびに、IOH222およびIOH224は、複数のリンクおよび/またはインターコネクトで互いに結合されている。一部の実施形態によると、プロセッサ202、204、206および208、ならびに、IOH0 222およびIOH1 224を結合するリンクおよび/またはインターコネクトは、複数のコヒーレントリンクであり、例えば、一部の実施形態では、クイック・パス・インターコネクト(Quick Path Interconnect(QPI))リンクおよび/または複数のコモン・システム・インターフェース(Common System Interface(CSI))リンクである。
図2のシステム200では、CPU3 208(および/または図1のシステムのCPU3 108)がシステムをブートした際には無かったと仮定しており、CPU3 208は実行中のシステムにホットアド(hot add)する必要がある。図2は、システムが備えるQPIエージェント202、204、206、208、222および224のそれぞれについてのポート情報を図示している。他のプロセッサ202、204および206ならびにIOH222および224の間のリンク(例えば、QPIリンク)は、初期化されており動作中のリンクとして図示されているが、CPU3 208と他の構成要素との間のリンクは、まだ初期化されていないので、図2では点線で図示されている。CPU3 208のホットアドに対応するためには、最初に、実行中のシステムと追加されたCPU3 208とをどのように接続するか決定する必要がある。一部の実施形態によると、CPU3 208および他の全てのQPIコンポーネント202、204、206、222および224の両方において、ルータ(RTA)およびソースアドレスデコーダ(SAD)を、CPU3 208およびメモリ218が実行中のシステムに追加されるように構成(または再構成)する必要がある。
図3は、一部の実施形態に係るシステム300を示す図である。一部の実施形態によると、システム300は、複数のプロセッサおよび/または中央演算処理装置(CPU)を備える。例えば、CPU0 302、CPU1 304、CPU2 306、および、CPU3 308を備える。一部の実施形態によると、システム300はさらに、複数のメモリを備える。例えば、メモリ312、メモリ314、メモリ316、および、メモリ318を備える。一部の実施形態によると、プロセッサ302、304、306および308はそれぞれ、メモリコントローラを有する。一部の実施形態によると、システム300はさらに、1以上の入出力(I/O)ハブ(IOH)を備える。例えば、IOH0 322およびIOH1 324を備える。一部の実施形態によると、プロセッサ302、304、306および308、ならびに、IOH322およびIOH324は、複数のリンクおよび/またはインターコネクトで互いに結合されている。一部の実施形態によると、プロセッサ302、304、306および308、ならびに、IOH0 322およびIOH1 324を結合するリンクおよび/またはインターコネクトは、複数のコヒーレントリンクであり、例えば、一部の実施形態では、クイック・パス・インターコネクト(Quick Path Interconnect(QPI))リンクおよび/または複数のコモン・システム・インターフェース(Common System Interface(CSI))リンクである。
図3のシステム300では、IOH1 324(および/または図1のシステムのIOH1 124および/または図2のシステムのIOH1 224)がシステムをブートした際には無かったと仮定しており、IOH1 324は実行中のシステムにホットアド(hot add)する必要がある。図3は、システムが備えるQPIエージェント302、304、306、308、322および324のそれぞれについてのポート情報を図示している。プロセッサ302、304、306および308ならびに他のIOH0 322の間のリンク(例えば、QPIリンク)は、初期化されており動作中のリンクとして図示されているが、IOH1 324と他の構成要素との間のリンクは、まだ初期化されていないので、図3では点線で図示されている。IOH1 324のホットアドに対応するためには、最初に、実行中のシステムと追加されたIOH1 324とをどのように接続するか決定する必要がある。一部の実施形態によると、IOH1 324および他の全てのQPIコンポーネント302、304、306、308、および322の両方において、ルータ(RTA)およびソースアドレスデコーダ(SAD)を、実行中のシステムにIOH1 324が追加されるように構成(または再構成)する必要がある。
一部の実施形態によると、システム再構成用のコードおよびデータをキャッシュして、メモリに対する直接アクセスまたは間接アクセスを禁止する。一部の実施形態によると、キャッシュから実行しながらシステム再構成を実行するので、QPIリンクのルーティングまたはソースアドレスデコーダを変更してもコードの実行には影響がない。
一部の実施形態によると、再構成時間ウィンドウにおいて実行が許可されるプロセッサコアは1つのみであり、他の全てのコアは外部に対してアクセスを実行しないようにブロックされる。一部の実施形態によると、再構成データは、SMIレイテンシを低減するために、休止−休止解除ウィンドウの外部で算出する。一部の実施形態によると、QPIプラットフォームの動的な再構成は、QPI休止処理を用いるランタイムファームウェアフローを用いて実行される。
一部の実施形態によると、休止コードは、当該休止コードをメモリから読み出すことによって、キャッシュされる。休止データはキャッシュして、キャッシュラインを修正済み状態とするためのデータの読み書き処理を実行することによる、メモリに書き戻されるデータの修正は、禁止される。システム再構成コード実行中のメモリアクセスを回避するために、プリフェッチはディセーブルされる。メモリからの投機的ロードは、休止コードおよびデータ以外の全てのアドレス領域を避けることによって、行なわれない。非コア(uncore)は、全ての実行中のトランザクションがシステム再構成処理を実行する前に確実に完了するように、フラッシュされる。他の全てのスレッドは、キャッシュから実行されることが確実になるように、コアで実行されるシステム再構成コードにおいて同期させられる。アウト・オブ・バンド(OOB)デバッグ・フックは全て、システム再構成ウィンドウ中は停止させる。
一部の実施形態によると、QPIコンポーネントは、休止を除く全てのQPIエージェントによる通常トラフィックが一時停止させられる休止モードをサポートしている。一部の実施形態に係る、プロセッサの休止モデル固有レジスタ(MSR)の定義を以下に示す。このレジスタは、一部の実施形態において、プロセッサのMSRを介して休止処理、休止解除処理、および、非コアフェンス処理を開始するソフトウェアについて用いられるとしてよい。
Figure 0005392404
図4は、一部の実施形態に係るフロー400を示す図である。一部の実施形態によると、フロー400は休止データ生成フローである。最初に、402においてRAS処理が決定および/または特定される。そして、404において必要であれば新しいリンク(例えば、QPIリンク)が初期化される。その後、406において、例えば、SAD、リンクルーティング(および/またはQPIルーティング)、ブロードキャストリスト等の休止データが(例えば、必要であれば周期的SMIを利用して)算出される。408において、休止要求フラグが設定される。その後、410において休止SMI#を生成する。
一部の実施形態によると、再構成ウィンドウの間に実行が許可されるプロセッサコアは1つ(例えば、「支配」プロセッサ)のみで、他のコアは全て、外部へのアクセスをしないようブロックされる。一部の実施形態によると、再構成データは、SMIレイテンシを低減するべく、休止−休止解除ウィンドウの外部で算出される。
図5、図6および図7は、一部の実施形態に係るフロー500、フロー600およびフロー700を示す。一部の実施形態によると、フロー500、フロー600およびフロー700は、QPIプラットフォーム等のプラットフォームの動的再構成を実行するためのフローを説明している。一部の実施形態によると、フロー500、フロー600およびフロー700は、QPI休止を実現するランタイムファームウェアフローを用いる。
休止支配コアは、システム内の利用可能な全てのコアの中から、休止処理、システム再構成処理および休止解除処理を実行するコアとして選択される。休止コアは、複数のスレッドを持つとしてよい。休止コアのスレッドはそれぞれ、再構成処理中はメモリにアクセスしないように確認する必要がある。この処理は、図5、図6および/または図7において、例えば、支配AP(アプリケーションプロセッサ、つまり、非支配プロセッサ)スレッドとして、概略を説明している。
図5の502において、再構成中の実行が許可される一のプロセッサとして特定されている支配QPIエージェント(例えば、支配プロセッサ)でSMIが実行されているか否か判断する。502において支配QPIエージェントでSMIが実行されていない場合、504において、通常のSMI AP(アプリケーションプロセッサ、つまり、非支配プロセッサ)スピンループを実行する。502において支配QPIエージェントでSMIが実行されている場合、506において、休止要求フラグが設定されているか否かを判断する。506において休止要求フラグが設定されていない場合、508において通常のSMI支配コードが実行される。しかし、506において休止要求フラグが設定されている場合、510において支配APスレッドのウェイクアップが実施される(例えば、支配APスレッドがアクティブである場合)。一部の実施形態では、APスピンループを開始する前に各スレッドが休止要求フラグを確認する場合には、ウェイクアップを回避し得る。
512において、休止支配プロセッサが、外部のエージェントによるメモリまたは構成省略レジスタ(Configuration Spare Register:CSR)へのアクセスをディセーブルする。RTAおよびSADは通常、CSRとして実装されるので、再構成フェーズ中にCSRに対するアクセスすると内容が正確でない可能性がある。これは、一部の実施形態では、実装毎に固有のMSRを構成することによって、または、例えば、ベースバンド管理コントローラ(BMC)、システムサービスプロセッサ(SSP)、および/または、管理エンジン(ME)等のアウト・オブ・バンド(OOB)デバイスを要求することによって、実現される。512において、メモリまたはCSRに対する外部のエージェントからのアクセスのディセーブルは、一部の実施形態において、例えば、プロセッサデバッグフックをディセーブルすることによって、または、プロセッササイドバンドインターフェースを介したアクセスをディセーブルすることによって、実現され得る。514において、外部のエージェントのCSRアクセスがディセーブルされたか否かを判断する。514において、ディセーブルされていなければ、このスレッドのフローはディセーブルされるまで514に留まる。514において、外部のエージェントのCSRアクセスがディセーブルされたと判断されれば、516において、QUIESCE CTLレジスタの休止ビットを設定することによって(例えば、QUIESCE_CTL 1.Quiesce=1と設定することによって)、および、一部の実施形態では、MonarchStatusを「QUIESCE_ON」に設定することによって、休止処理を開始する。この処理によって、全てのQPIエージェントが休止状態を開始して、新しいトランザクションを開始しないことを確認する。MonarchStatusが「QUIESCE_ON」に設定されたと判断されるまでは、支配APスレッドのフローは522に留まる。516からのフローは図6の「Mon1」に続き、522からのフローは図6の「MAPT1」に続く。
システムが休止状態となると、図6の支配スレッドフローに示すように、支配スレッドは、コードおよびデータの両方をキャッシュして、外部メモリアクセスを行なうことなくキャッシュからの実行を開始する。602において、支配APの状態が「再構成を行なう準備が整っている」状態であるか否かを判断する。これは、一部の実施形態では、支配APが存在する場合にのみ確認する。支配APの状態が「再構成を行なう準備が整っている」状態になると、604においてプリフェッチディセーブル処理を行なう。一部の実施形態によると、604の処理は、MISC_FEATURE_CONTROLを保存して、「MFENCE」(メモリフェンス、例えば、MFENCE命令よりもプログラム順序で前にある全てのロード命令およびストア命令は、MFENCE命令の後にあるロード命令またはストア命令がグローバルに可視化される前に、グローバルに可視化されることを保証するシリアライズ処理)を行なって、および/または、MISC_FEATURE_CONTROLを0Fhに設定することによって行なわれる。一部の実施形態によると、604の処理は、プリフェッチ制御、MFENCE、および、プリフェッチディセーブルを保存することによって行なわれる。606では、休止用のコードおよびデータの領域のためのページテーブルがWB(ライトバックキャッシュ属性)属性で設定され、CSRアクセスの領域のページテーブルをUC(未キャッシュキャッシュ属性)属性で設定する。ページテーブルは、休止コード領域の外部では投機的ロードが行なわれないように、設定される。ページテーブルは、休止コード領域のみがUCとなるように設定される。この結果、休止コード領域の外部では投機的ロードが実行されないことが、間接的に確認される。608では、休止コード領域が読み出されて、当該コードをキャッシュする。610では、休止データ領域に対して読出および書込を実行する。一部の実施形態によると(図6には図示されていないが)、この後キャッシュされたコードへのジャンプ(例えば、休止支配コードへのジャンプ)を実行する。この段階において、コードは、メモリからではなくキャッシュから実行される。612において、非コアフェンスビットを設定する(例えば、QUIESCE_CTL1.UnCoreFence=1)。
休止支配コードは、図6において、休止用のコードおよびデータをキャッシュするために用いられる。例えば、622においてプリフェッチディセーブル処理を実行する。一部の実施形態によると、プリフェッチ制御を保存して、MFENCEを実行し、プリフェッチをディセーブルする。一部の実施形態によると、622の処理は、MISC_FEATURE_CONTROLを保存して、「MFENCE」(メモリフェンス)を行なって、および/または、MISC_FEATURE_CONTROLを0Fhに設定することによって行なわれる。624では、休止用のコードの領域のためのページテーブルがWB属性で設定され、CSRアクセスの領域のページテーブルをUC属性で設定する。ページテーブルは、休止用のコードおよびデータの領域の外部では投機的ロードが行なわれないように、設定される。ページテーブルは、休止用のコードおよびデータの領域のみがUCとなるように設定される。この結果、休止用のコードおよびデータの領域の外部では投機的ロードが実行されないことが、間接的に確認される。626では、休止コード領域が読み出されて、当該コードをキャッシュする。データを修正された状態でキャッシュするために、休止データ領域に対して読出および書込を実行する。この結果、システム再構成中の休止データアクセスはメモリアクセスを発生させないようにすることができる。628において、休止支配コード(および/または休止APコード)へのジャンプを実行する。この段階において、コードはキャッシュから実行される。630において、支配APステータスを「再構成の準備が整った」状態に設定する。614からのフローは図7の「Mon2」に続き、630からのフローは図7の「MAPT2」に続く。コア、非コア、および、ソケットから実行されている、キャッシュ犠牲トラフィックを含む全ての実行中のトランザクションを確実にドレインするために、非コアフェンスを実行する。この時点において、全てのコードおよびデータへのアクセスは、キャッシュに対するものであり、メモリアクセスは実行されない。
一部の実施形態によると、支配休止プロセッサは、各ソケットでRTA、SAD等をプログラミングすることによってシステムを再構成する。当該システムは休止解除に設定され、全てのコアは過去の一時停止した位置から動作を継続することができる。プリフェッチおよび外部のエージェントのCSRアクセスが復元される。これは、例えば、図7に従って実行される。702において、システムは(例えば、QPIルーティング、SAD、ブロードキャストリスト等をプログラミングすることによって)再構成される。704において、支配ステータスが「再構成完了」に設定される。706において、支配APステータスが「AP_DONE」に設定されているか否かを判断する。一部の実施形態では、支配APが存在する場合に限りこれを確認する。706において支配APステータスが「AP_DONE」であると判断されると、708においてプリフェッチ制御が復元される。710において、「QUIESCE_CTL1.UnQuiesce」ビットが「1」に設定され、「休止ステータス」が「QUIESCE_OFF」に設定される。その後712において、通常のSMI支配コードへと戻る。
722において、支配ステータスが「再構成完了」に設定されているか否か判断する。設定されていると、724においてプリフェッチ制御を復元する。726において、支配APステータスが「AP_DONE」に設定される。その後728において、通常のSMI APコードへと戻る。
QPI等のコヒーレントリンクと、複数のプロセッサ(MP)と、複数のメモリコントローラと、複数のチップセットとを備えるシステムは現在、設計が進み普及しつつある。高度なRAS特徴は、これらに限定されないが、プロセッサホットプラグ、プロセッサマイグレーション、メモリホットプラグ、メモリミラーリング、メモリマイグレーション、および、メモリ節約を含み、サーバ市場では一般的になるであろう。RAS特徴は、ランタイム中にベーシック入出力システム(BIOS)による多くの処理を必要とする。一部の実施形態によると、システム再構成は高コストなハードウェアフックを必要とすることなく実行される。
クイック・パス・インターコネクト(Quick Path Interconnect(QPI))(および/またはCSI)をベースとするサーバシステムによって、これらに限定されないが、プロセッサホットプラグ、メモリホットプラグ、メモリミラーリング、メモリマイグレーション、メモリ節約等を含む高度なRAS特徴が導入される。このような特徴では、オペレーティングシステム(OS)が動作している間に、システム構成を動的に変更する必要がある。この処理は現在、システム管理割り込み(SMI)を用いて実現されている。尚、SMIでは、全てのプロセッサをまとめて、APIエージェント(プロセッサ、IOH等)を休止させ、システム構成(QPIルーティング、アドレスデコーダ等)をプログラミングし直す。しかし、SMIはメモリから実行される。これは、QPIルーティング変更中は許容されない。このため、一部の実施形態では、SMIハンドラコードおよびデータをキャッシュにロードして、当該キャッシュから実行する。このため、ランタイム構成フローは、キャッシュアーキテクチャに依存する度合いが非常に高い。また、コードをキャッシュして、SMIコードを実行することでQPIルーティングおよびアドレスデコーダをプログラミングし直すと、多大な時間がかかってしまう。OSのためにSMIレイテンシには限度があるので、SMIによる休止およびQPIプログラミングのコードは、レイテンシ要件を満たすべく厳しいタイミング条件を考慮しつつ慎重に書く必要がある。このような要因によって、先行技術に係る休止フローは非常に複雑なものとなり、コード化および検証が困難である。
一部の実施形態によると、シャドーレジスタによって、ハードウェアは、休止処理を実行して、休止中にBIOSおよび/またはSMIのコードを実行することなくシステム構成を変更できるようになる。このため、システム構成を高速に変更できるようになり、SMIレイテンシを小さく抑えることができ(または、SMIレイテンシをゼロにすることができ)、プロセッサキャッシュアーキテクチャに依存しなくていいようになり、関連する複雑な処理も不要になる。
図8は、一部の実施形態に係るシステム800を示す図である。一部の実施形態によると、システム800は、複数のプロセッサおよび/または中央演算処理装置(CPU)を備える。例えば、CPU0 802、CPU1 804、CPU2 806、および、CPU3 808を備える。一部の実施形態によると、システム800はさらに、複数のメモリを備える。例えば、メモリ812、メモリ814、メモリ816、および、メモリ818を備える。一部の実施形態によると、プロセッサ802、804、806および808はそれぞれ、メモリコントローラを有する。一部の実施形態によると、システム800はさらに、1以上の入出力(I/O)ハブ(IOH)を備える。例えば、IOH0 822およびIOH1 824を備える。一部の実施形態によると、プロセッサ802、804、806および808、ならびに、IOH822およびIOH824は、複数のリンクおよび/またはインターコネクトで互いに結合されている。一部の実施形態によると、プロセッサ802、804、806および808、ならびに、IOH0 822およびIOH1 824を結合するリンクおよび/またはインターコネクトは、複数のコヒーレントリンクであり、例えば、一部の実施形態では、クイック・パス・インターコネクト(Quick Path Interconnect(QPI))リンクおよび/または複数のコモン・システム・インターフェース(Common System Interface(CSI))リンクである。
図8のシステム800では、システムがブートされたときにはCPU3 808(および/または図1のシステムのCPU3 108)が存在しているが、実行中のシステムからホットリムーバルされると仮定している。他のプロセッサ802、804および806ならびにIOH822および824の間のリンク(例えば、コヒーレントリンクおよび/またはQPIリンク)は、初期化されており動作中のリンクとして図示されているが、CPU3 808と他の構成要素との間のリンクは、CPU3 808がホットリムーバルされた後はアクティブでいる必要はないので、図8では点線で図示されている。CPU3 808のホットリムーバルに対応するためには、OSが、CPU3 808およびCPU3 808に結合されているメモリ818の利用を中止する必要がある。システムは、休止させる必要があり、CPU3 808のアドレスルーティングは全てのソケットにおいて削除する必要があり、CPU3 808に対するリンクルーティング(例えば、QPIルーティング)は全てのソケットにおいて削除する必要がある。システムはその後、OSの動作を継続するために休止解除する必要がある。
図9は、一部の実施形態に係るシステム900を示す図である。一部の実施形態によると、システム900は、複数のプロセッサおよび/または中央演算処理装置(CPU)を備える。例えば、CPU0 902、CPU1 904、CPU2 906、および、CPU3 908を備える。一部の実施形態によると、システム900はさらに、複数のメモリを備える。例えば、メモリ912、メモリ914、メモリ916、および、メモリ918を備える。一部の実施形態によると、プロセッサ902、904、906および908はそれぞれ、メモリコントローラを有する。一部の実施形態によると、システム900はさらに、1以上の入出力(I/O)ハブ(IOH)を備える。例えば、IOH0 922およびIOH1 924を備える。一部の実施形態によると、プロセッサ902、904、906および908、ならびに、IOH922およびIOH924は、複数のリンクおよび/またはインターコネクトで互いに結合されている。一部の実施形態によると、プロセッサ902、904、906および908、ならびに、IOH0 922およびIOH1 924を結合するリンクおよび/またはインターコネクトは、複数のコヒーレントリンクであり、例えば、一部の実施形態では、クイック・パス・インターコネクト(Quick Path Interconnect(QPI))リンクおよび/または複数のコモン・システム・インターフェース(Common System Interface(CSI))リンクである。
図9のシステム900では、システムがブートされたときにはIOH1 924(および/または図1のシステムのIOH1 124)が存在しているが、実行中のシステムからホットリムーバルされると仮定している。プロセッサ902、904、906および908ならびに他のIOH0 922の間のリンク(例えば、コヒーレントリンクおよび/またはQPIリンク)は、初期化されており動作中のリンクとして図示されているが、IOH1 924と他の構成要素との間のリンクは、IOH1 924がホットリムーバルされた後はアクティブでいる必要はないので、図9では点線で図示されている。IOH1 924のホットリムーバルに対応するためには、OSが、IOH1 924の利用を中止する必要がある。システムは、休止させる必要があり、IOH1 924のアドレスルーティングは全てのソケットにおいて削除する必要があり、IOH1 924に対するリンクルーティング(例えば、QPIルーティング)は全てのソケットにおいて削除する必要がある。システムはその後、OSの動作を継続するために休止解除する必要がある。
一部の実施形態では、各エージェント(例えば、各QPIエージェント)が、リンクルーティング(例えば、QPIルーティング)のための一連のシャドーレジスタ、アドレスデコーダ、ブロードキャストリスト、および、システム再構成に関わる任意のその他のレジスタを提供する。構成を変更する場合、一部の実施形態では、シャドーレジスタはソフトウェアによって新しい構成レジスタでプログラミングされて、ソフトウェアは構成の切替を実行するためのハードウェア要求を開始する。新しい構成は、構成切替が完了するとすぐに有効になる。
図10は、一部の実施形態に係るフロー1000を示す図である。一部の実施形態によると、フロー1000は構成を変更するためのソフトウェアのフローである。フロー1000は1002で開始される。1004において、シャドーレジスタは、新しい一群の構成値でプログラミングされる。1006において、構成変更要求が、構成変更後に削除されないQPIエージェント等のエージェントによって発行される。構成変更は、モデル固有レジスタ(MSR)または構成空間レジスタ(CSR)等のハードウェアレジスタに書込を行うことによって、開始される。1008において、ハードウェアは構成変更処理を実行する。一部の実施形態によると、ハードウェアは1008において、例えば、図11に図示すると共に詳細を後述するフロー1100と同様または同一の方法で、構成変更処理を実行する。ハードウェアは、休止処理を実行して、シャドーレジスタに基づいて新しい構成レジスタに切り替わる(例えば、一部の実施形態によると、図11に図示すると共に後述する方法で行われる)。1010において、システムの構成が新しくなり、この新しい構成でシステムによる処理を続けることができる。フロー1000は、1012において終了する。
図11は、一部の実施形態に係るフロー1100を示す図である。一部の実施形態によると、フロー1100はハードウェアが構成を変更するフローを表している。フロー1100は1102で開始される。1104において、各QPIエージェント(または、一部の実施形態ではその他の種類のエージェント)を休止させるための要求が送信される。この結果、ダイレクトメモリアクセス(DMA)がブロックされ、休止発行エージェント以外のQPIエージェントが新しいトランザクションを生成しないようにブロックされる。一部の実施形態によると、全ての実行中のトランザクションを完了させるためにポーリングが行われる。1106において、フロー1100は、休止を開始して全ての実行中のトランザクションがドレインされた旨を示す確認応答を全てのQPIエージェントが返すまで待機する。全てのQPIエージェントがシャドーレジスタからレジスタ群(および/または新しい構成)をプログラミングし直す(および/またはレジスタ群をシャドーレジスタに切り替える)ことを求める要求が発行される。確認応答は、例えば、シャドーレジスタに設定されている情報に基づいて送り返される。一部の実施形態によると、レジスタデータは、スパニングツリーに基づいて応答する相手を含む。一部の実施形態においてこの処理をどのように行うかについて詳細な内容は、例えば、米国特許出願第11/011,801号(米国特許出願公開広報第2006/0126656 A1、公開日:2006年6月15日、発明の名称:「システムレベル初期化を行うための方法、システム、および装置(Method, System, and Apparatus for System Level Initialization)」)をさらに参照されたい。
1108において、構成変更要求がブロードキャストされる。1110において、全てのチャイルドスパニングツリーが完了を返答したか否かを判断する。一部の実施形態によると、システム再構成が完了した旨を示す確認応答が送信される。1110において全てのチャイルドスパニングツリーが完了を返答したと判断すれば、1112において休止解除要求を全てのQPIエージェント(および/または新しいエージェント)に送る。1114において、全てのエージェント(および/または新しいエージェント)が確認応答を返答したか否かを判断する。1114において全てのエージェント(および/または新しいエージェント)が確認応答を返答したと判断すれば、1116において通常処理を再開する。この結果、DMAに対するブロックが解除され、(例えば、実行コードに戻ることによって)トランザクションを続けることができる。
一部の実施形態によると、シャドーレジスタ(および/または複製レジスタ)は、新規構成情報を保持している。一部の実施形態によると、構成変更開始は、ソフトウェアによって実現される。一部の実施形態によると、ハードウェアは、システム休止を実行してシャドー構成を現在の構成へと切り替えると共に、その後で休止解除を実行してシステムの処理を続けさせる。一部の実施形態によると、ハードウェアは、構成レジスタ切替処理を開始する前に、全てのQPIエージェントが休止状態にあることを確かめるために確認を実行する。一部の実施形態によると、スパニングツリーを持つシャドーレジスタを用いて、再構成後にデータを戻す。
現在のサーバシステムは、休止および休止解除を実行するためにMSRをベースとした機構を利用している。SMIコードは、全てのプロセッサをランデブーさせて休止を開始させる必要がある。SMIは、コードおよびデータをキャッシュする必要があり、システムを変更する前にプリフェッチおよび投機的ロードが禁止されていることを確認する必要がある(プロセッサは、投機的ロードをディセーブルする直接的な制御は行わないので、複雑な未キャッシュおよびキャッシュ済みコード設定シーケンスが必要となる)。これを怠ると、メモリアクセス、スヌープ、プリフェッチおよび投機的ロードによって、QPIルーティング変更中にSMIコード/データアクセスに関する問題が発生して、システムエラーになってしまう。SMIコードおよび当該特徴を形成する際に関連するその他の設定の妥当性確認は、非常に複雑で、OSがSMIについて許容している制限時間よりもSMIレイテンシが長くなってしまう場合がある。
一部の実施形態によると、SMIおよび/または休止/休止解除の時間ウィンドウの外部で算出およびプログラミングを行うことができるシャドーレジスタ群を用いる。また、シャドーレジスタ切替は、複雑なソフトウェアフローではなく、ハードウェアによって行われる。これは、SMIレイテンシを低減する役割を果たす。
一部の実施形態では、コードおよび/またはデータのキャッシュ処理に左右されないので、アーキテクチャに左右されない。
一部の実施形態によると、シャドーレジスタ切替はハードウェアで行われ、各QPIエージェントはシャドーレジスタ群を備えるので、スケーラブルな解決策が提供される。従来のSMIをベースとする解決策は、SMIの全てのスレッドを必要とする。QPIエージェントおよび/またはコアの数が増えるにつれて、処理を完了するまでの時間が長くなり、OSのSMIレイテンシ要件を満たせなくなる。一部の実施形態に係る解決策は、ある生成から別の生成へと拡張可能であり、スケーラブルである(例えば、方向を問わずスケーラブルである)。
一部の実施形態によると、アウト・オブ・バンド(OOB)ファームウェア(例えば、システムサービスプロセッサ(SSP))は、低速のサイドバンドインターフェースを用いる場合であってもOSレイテンシの限界値を超えることなく、システム構成を変更することができる。SSPは、従来の方法を用いて、ランタイムシステム構成を変更することはできない。
現在のQPI技術(QPIプラットフォームでRAS特徴をサポートする上で鍵となる)は、キャッシュアーキテクチャに左右され、非常に複雑であり、妥当性確認が困難であり、ファームウェアハンドラはOSレイテンシ要件内に収まるように手動で調整する必要がある。休止の実行、および、直接接続されたフラッシュからのQPIルーティングおよびアドレスデコーダの再プログラミング等の他の方法は、非常に遅いのでSMIレイテンシのOS要件を満たさない。このような問題は、一部の実施形態で克服される。一部の実施形態では、シャドーレジスタのプログラミングを休止期間中に行なわないので、休止のためのレイテンシが低減されると共に、休止およびシステム構成変更のフローを実行するファームウェアの複雑さが軽減される。一部の実施形態によると、キャッシュアーキテクチャに依存しなくなるので、複雑なファームウェアフローが必要なくなる。
一部の実施形態によると、構成の変更はハードウェアによって実行され、構成変更中にソフトウェアの介入は必要ない。このように、システム構成の変更に関連するレイテンシの合計は、従来の方法に比べてはるかに短縮され、エンドユーザに対するリアルタイムでの応答が可能となる。
本明細書に記載するように、これらに限定されないが、プロセッサ、メモリのホットプラグ、オンライン化/オフライン化等の高度なRAS特徴をサポートしているか否かは、高度サーバの市場のプラットフォームでは鍵となる。このようなRASフローを実現する効果的なQPI処理が必要である。現在のRAS用QPI休止フローは、休止コードを外部メモリアクセス/スヌープ/投機的ロード等を生成することなくキャッシュから実行する必要があるので、キャッシュアーキテクチャに対する依存性のためにプロセッサによる生成に限定されている。このようなフローは、非常にコード化が複雑であり、妥当性確認が困難であるので、QPI上でのRASのサポートが大きく制限されてしまう場合がある。一部の実施形態によると、休止を実現する方法を簡略化しており、プロセッサのキャッシュのアーキテクチャに依存していない。また、高度なRAS特徴はQPIプラットフォームでサポート可能であり、より大規模なマルチプロセッサ(MP)プラットフォームにも良好にスケーリングされる。
一部の実施形態は、システム管理割り込み(SMI)技術に適用可能であるとして本明細書で説明した。しかし、他の実施方法は他のランタイムインターフェースに関する。例えば、一部の実施形態では、プラットフォーム管理割り込み(PMI)を利用する。
一部の実施形態は、例えば、プロセッサコアおよび/または集積化されたメモリを含むソケットとして図示されると共に本明細書で説明されている。しかし、一部の実施形態では、さらに別の構成要素をソケットに集積化する。例えば、一部の実施形態によると、例えば、プロセッサソケットにI/Oルートコンプレックスを集積化する。一部の実施形態によると、I/Oデバイスをプロセッサソケットに集積化する。プロセッサソケットに他の構成要素を追加して集積化する実施形態は、当該実施形態を現時点において、そして、今後実施する場合にも明らかである。
本明細書では一部の実施形態をQPIを利用するシステムに適用可能なものとして説明したが、一部の実施形態によると、このような特定の方法での実施が必要なわけではないとしてよい。つまり、本明細書に記載した実施形態は、一部の実施形態によると、任意のコヒーレントリンクに適用可能であり、QPIに限定されない。一部の実施形態によると、QPI以外を利用するシステムが実現される。一部の実施形態によると、ノードコントローラを利用するシステムを実現する。
一部の実施形態を特定の実施方法に関連付けて説明したが、一部の実施形態によると、他の実施方法も可能である。また、図面に図示し、および/または、本明細書に記載した回路素子または他のフィーチャの配置および/または順序は、図示および説明した特定の配置および/または順序である必要はない。一部の実施形態によると他にも多くの配置が可能である。
図示した各システムでは、各構成要素に割り当てている参照番号は、同じまたは異なる場合があるとしてよく、その構成要素が異なるか、および/または、同様である可能性を示唆している。しかし、一の構成要素については、複数の異なる実施例が認められ、図示または本明細書で説明したシステムの一部または全てで利用される程度に柔軟性があるとしてよい。図示したさまざまな構成要素は、同一であってもよいし、または、異なるとしてもよい。どの構成要素を第1の構成要素と呼び、どの構成要素を第2の構成要素と呼ぶかは任意である。
明細書および特許請求の範囲において、「結合」および「接続」という用語を用いる場合がある。「結合」および「接続」は同義語として用いているものではないと理解されたい。特定の実施形態では、「接続」は2以上の構成要素が物理的または電気的に直接接触していることを意味するために用いられるとしてよい。「結合」は、2以上の構成要素が物理的または電気的に直接接触していることを意味するとしてよい。しかし、「結合」はさらに、2つ以上の構成要素が直接接触していないが、協働またはやり取りは存在することを意味するとしてよい。
「アルゴリズム」は、本明細書において、および、一般的に、所望の結果を導き出す自己矛盾のない一連の動作または処理であると見なされている。これには、物理的な量を物理的に操作することも含まれる。必須ではないが通常は、このような物理的な量は、格納、移送、結合、比較、およびその他の操作が可能な電気信号または磁気信号として表される。時として、主に一般的な用法のために、このような信号をビット、値、要素、シンボル、文字、項、数等と呼ぶことが便利であると分かっている。しかし、このような用語および同様の用語は全て適切な物理量と対応付けられるものであり、物理量に割り当てられる便利な名称に過ぎないと理解されたい。
一部の実施形態は、ハードウェア、ファームウェアおよびソフトウェアのいずれか1つ、または、これらの組み合わせで実現されるとしてよい。一部の実施形態は、機械可読媒体に格納される命令として実現されるとしてもよい。当該命令は、コンピューティングプラットフォームによって読み出されて実行されると、本明細書に記載している処理を実行するとしてよい。機械可読媒体は、機械(例えば、コンピュータ)が読出可能な形式で情報を格納または送信する任意の機構を含むとしてよい。例えば、機械可読媒体は、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク格納媒体、光格納媒体、フラッシュメモリデバイス、電気信号、光信号および音響信号等の伝播信号(例えば、搬送波、赤外線信号、デジタル信号、信号を送受信するインタフェース等)等を含むとしてよい。
「実施形態」とは、本発明の実施方法または一例である。本明細書において「ある実施形態」、「一実施形態」、「一部の実施形態」または「その他の実施形態」と記載する場合、当該実施形態に関連付けて説明した特定の特徴、構造または特性が、本発明の必ずしも全ての実施形態ではなく少なくとも一部の実施形態に含まれることを意味する。「ある実施形態」、「一実施形態」または「一部の実施形態」という表現は何度も登場するが、全てが必ずしも同じ実施形態を指しているものではない。
本明細書で説明および図示した構成要素、特徴、構造、特性等は、全てを特定の実施形態に含む必要はない。例えば、明細書において、ある構成要素、特徴、構造または特性を「含むとしてもよい」、「含み得る」、「含むことができる」または「含んでよい」と記載する場合、この特定の構成要素、特徴、構造または特性を含むことは要件ではない。明細書または特許請求の範囲において構成要素について「一の」と記載する場合、この構成要素が1つのみであることを意味するわけではない。明細書または特許請求の範囲において構成要素について「一の追加の」と記載する場合、追加される構成要素が複数あるケースを除外するものではない。
本明細書では実施形態を説明する際にフローチャートおよび/または状態図を利用したが、本発明はそれらのフローチャートおよび/または状態図や、本明細書中の対応する記載に限定されるものではない。例えば、フローは、図示したボックスあるいは状態を全て遷移していく必要はなく、または、本明細書に記載し且つ図示したものと全く同一順序で実行する必要はない。
本発明は、本明細書に列挙した具体的且つ詳細な内容に限定されるものではない。実際、当業者であれば、本開示内容を参考にすることによって、上記の記載内容および図示内容から多くの他の変形例が本発明の範囲内で為され得ることに想到するであろう。したがって、本発明の範囲を定義しているのは、特許請求の範囲およびそれらの補正である。

Claims (33)

  1. 複数のプロセッサコアを含むシステムの動的ハードウェア再構成を実行するために用いられるシステム再構成用のコードおよびデータをキャッシュする段階と、
    前記動的ハードウェア再構成の間、直接メモリアクセスまたは間接メモリアクセスを禁止する段階と、
    前記複数のプロセッサコアのうち一のプロセッサコアまたは複数のスレッドにキャッシュされた前記システム再構成用のコードおよびデータを実行させることによって、前記動的ハードウェア再構成を実施する段階と
    を備える方法。
  2. 前記動的ハードウェア再構成の間は、前記複数のプロセッサコアのうち一のプロセッサコアのみに動作を許可する段階をさらに備える請求項1に記載の方法。
  3. 許可された前記一のプロセッサコア以外前記複数のプロセッサコア全て、外部へのメモリアクセスを行なわないようにブロックする段階をさらに備える請求項に記載の方法。
  4. 前記動的ハードウェア再構成の間は、メモリアクセスを避けるためにプリフェッチをディセーブルする段階をさらに備える請求項1に記載の方法。
  5. 投機的メモリロードを避ける段階をさらに備える請求項1に記載の方法。
  6. 前記動的ハードウェア再構成を実行する前に全ての実行中のトランザクションが完了するように、前記複数のプロセッサコアのうち1以上のプロセッサコアをフラッシュする段階をさらに備える請求項1に記載の方法。
  7. 前記動的ハードウェア再構成の間は、アウト・オブ・バンド・デバッグ・フックを避ける段階をさらに備える請求項1に記載の方法。
  8. 前記動的ハードウェア再構成を実行するために前記複数のプロセッサコアのうち前記一のプロセッサコアを選択する段階をさらに備える請求項1に記載の方法。
  9. 前記動的ハードウェア再構成は、ホットアド、ホットリムーバル、ホットプラグ、ホットスワップ、プロセッサホットアド、プロセッサホットリムーバル、メモリホットアド、メモリホットリムーバル、チップセットホットアド、チップセットホットリムーバル、入出力ハブホットアド、入出力ハブホットリムーバル、メモリマイグレーション、メモリミラーリング、および/または、プロセッサマイグレーションのうち1以上を含む請求項1に記載の方法。
  10. 前記動的ハードウェア再構成は、信頼性、可用性および保守性(RAS)を満たす特徴を含む請求項1に記載の方法。
  11. 前記動的ハードウェア再構成は、オペレーティングシステムにトランスペアレントに実行される請求項1に記載の方法。
  12. 前記動的ハードウェア再構成は、前記システムが備える1以上のハードウェアデバイスをアトミックに更新することである請求項1に記載の方法。
  13. 前記動的ハードウェア再構成は、休止処理を含む請求項1に記載の方法。
  14. シャドーレジスタを新しい一群の構成値でプログラミングする段階をさらに備える請求項1に記載の方法。
  15. ハードウェアレジスタに書き込みを行なうことで構成の変更を開始する段階をさらに備える請求項1に記載の方法。
  16. 前記ハードウェアレジスタは、モデル固有レジスタまたは構成空間レジスタである
    請求項15に記載の方法。
  17. ハードウェアレジスタの値に応じて構成の変更を実行する段階をさらに備える請求項1に記載の方法。
  18. 動的ハードウェア再構成を実行するために用いられるシステム再構成用のコードおよびデータをキャッシュして格納するキャッシュと、
    複数のプロセッサコアと
    を備え、
    前記複数のプロセッサコアのうち一のプロセッサコアが、キャッシュされた前記システム再構成用のコードおよびデータを実行して、前記動的ハードウェア再構成を実行し、
    前記動的ハードウェア再構成の間、前記複数のプロセッサコアによる直接メモリアクセスまたは間接メモリアクセスを禁止する装置。
  19. 前記動的ハードウェア再構成の間は、前記複数のプロセッサコアのうち一のプロセッサコアのみに動作を許可する請求項18に記載の装置。
  20. 許可された前記一のプロセッサコア以外前記複数のプロセッサコア全て、外部へのメモリアクセスを行なわないようにブロックする請求項19に記載の装置。
  21. 前記動的ハードウェア再構成の間は、メモリアクセスを避けるためにプリフェッチをディセーブルする請求項18に記載の装置。
  22. 投機的メモリロードを避ける請求項18に記載の装置。
  23. 前記動的ハードウェア再構成を実行する前に全ての実行中のトランザクションが完了するように、前記複数のプロセッサコアのうち1以上のプロセッサコアをフラッシュする請求項18に記載の装置。
  24. 前記動的ハードウェア再構成の間は、アウト・オブ・バンド・デバッグ・フックを避ける請求項18に記載の装置。
  25. 前記動的ハードウェア再構成は、ホットアド、ホットリムーバル、ホットプラグ、ホットスワップ、プロセッサホットアド、プロセッサホットリムーバル、メモリホットアド、メモリホットリムーバル、チップセットホットアド、チップセットホットリムーバル、入出力ハブホットアド、入出力ハブホットリムーバル、メモリマイグレーション、メモリミラーリング、および/または、プロセッサマイグレーションのうち1以上を含む請求項18に記載の装置。
  26. 前記動的ハードウェア再構成は、信頼性、可用性および保守性(RAS)を満たす特徴を含む請求項18に記載の装置。
  27. 前記動的ハードウェア再構成は、オペレーティングシステムにトランスペアレントに実行される請求項18に記載の装置。
  28. 前記動的ハードウェア再構成は、前記システムが備える1以上のハードウェアデバイスをアトミックに更新することである請求項18に記載の装置。
  29. 前記動的ハードウェア再構成は、休止処理を含む請求項18に記載の装置。
  30. 新しい一群の構成値でプログラミングされているシャドーレジスタをさらに備える請求項18に記載の装置。
  31. 前記複数のプロセッサコアのうち少なくとも1つは、ハードウェアレジスタに書き込みを行なうことで構成の変更を開始する請求項18に記載の装置。
  32. 前記ハードウェアレジスタは、モデル固有レジスタまたは構成空間レジスタである請求項31に記載の装置。
  33. 値を格納するハードウェアレジスタをさらに備え、
    前記複数のプロセッサコアのうち前記一のプロセッサコアは、前記ハードウェアレジスタに格納されている前記値に応じて、構成の変更を実行する請求項18に記載の装置。
JP2012516396A 2009-12-31 2010-12-10 動的なシステムを再構成する方法および装置 Expired - Fee Related JP5392404B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/655,586 US20110161592A1 (en) 2009-12-31 2009-12-31 Dynamic system reconfiguration
US12/655,586 2009-12-31
PCT/US2010/059815 WO2011081840A2 (en) 2009-12-31 2010-12-10 Dynamic system reconfiguration

Publications (2)

Publication Number Publication Date
JP2012530327A JP2012530327A (ja) 2012-11-29
JP5392404B2 true JP5392404B2 (ja) 2014-01-22

Family

ID=44188870

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012516396A Expired - Fee Related JP5392404B2 (ja) 2009-12-31 2010-12-10 動的なシステムを再構成する方法および装置

Country Status (6)

Country Link
US (1) US20110161592A1 (ja)
EP (1) EP2519892A4 (ja)
JP (1) JP5392404B2 (ja)
KR (1) KR101365370B1 (ja)
CN (1) CN102473169B (ja)
WO (1) WO2011081840A2 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110179311A1 (en) * 2009-12-31 2011-07-21 Nachimuthu Murugasamy K Injecting error and/or migrating memory in a computing system
EP2628092B1 (en) * 2010-10-16 2019-01-23 Hewlett-Packard Enterprise Development LP Device hardware agent
US20120155273A1 (en) * 2010-12-15 2012-06-21 Advanced Micro Devices, Inc. Split traffic routing in a processor
JP2014531681A (ja) 2011-09-29 2014-11-27 インテル・コーポレーション メモリにエラーを注入する方法および装置
TWI454905B (zh) * 2011-09-30 2014-10-01 Intel Corp 在多核心平台中之受限制的啓動技術
WO2013095559A1 (en) 2011-12-22 2013-06-27 Intel Corporation Power conservation by way of memory channel shutdown
EP2798557A4 (en) 2011-12-29 2015-09-23 Intel Corp SECURE ERROR MANAGEMENT
KR101867960B1 (ko) * 2012-01-05 2018-06-18 삼성전자주식회사 매니 코어 시스템을 위한 운영체제 동적 재구성 장치 및 방법
WO2014134808A1 (en) * 2013-03-07 2014-09-12 Intel Corporation Mechanism to support reliability, availability, and serviceability (ras) flows in a peer monitor
CN103488436B (zh) * 2013-09-25 2017-04-26 华为技术有限公司 内存扩展系统及方法
WO2015061731A1 (en) * 2013-10-27 2015-04-30 Advanced Micro Devices, Inc. Input/output memory map unit and northbridge
US9569267B2 (en) * 2015-03-16 2017-02-14 Intel Corporation Hardware-based inter-device resource sharing
US9811491B2 (en) 2015-04-07 2017-11-07 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Minimizing thermal impacts of local-access PCI devices
CN106708551B (zh) * 2015-11-17 2020-01-17 华为技术有限公司 一种热添加中央处理器cpu的配置方法及系统
CN106844258B (zh) * 2015-12-03 2019-09-20 华为技术有限公司 热添加CPU使能x2APIC的方法和服务器系统
JP6536677B2 (ja) * 2015-12-29 2019-07-03 華為技術有限公司Huawei Technologies Co.,Ltd. Cpuおよびマルチcpuシステム管理方法
US10430580B2 (en) * 2016-02-04 2019-10-01 Intel Corporation Processor extensions to protect stacks during ring transitions
CN106055436A (zh) * 2016-05-19 2016-10-26 浪潮电子信息产业股份有限公司 一种测试QPI data lane Degrade功能的方法
WO2020000354A1 (en) * 2018-06-29 2020-01-02 Intel Corporation Cpu hot-swapping
US10572430B2 (en) 2018-10-11 2020-02-25 Intel Corporation Methods and apparatus for programming an integrated circuit using a configuration memory module

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US955010A (en) * 1909-01-11 1910-04-12 Monarch Typewriter Co Type-writing machine.
UST955010I4 (en) * 1975-03-12 1977-02-01 International Business Machines Corporation Hardware/software monitoring system
US5493668A (en) * 1990-12-14 1996-02-20 International Business Machines Corporation Multiple processor system having software for selecting shared cache entries of an associated castout class for transfer to a DASD with one I/O operation
US5604863A (en) * 1993-11-01 1997-02-18 International Business Machines Corporation Method for coordinating executing programs in a data processing system
US6304984B1 (en) * 1998-09-29 2001-10-16 International Business Machines Corporation Method and system for injecting errors to a device within a computer system
JP2000259586A (ja) * 1999-03-08 2000-09-22 Hitachi Ltd マルチプロセッサシステムの構成制御方法
US6725317B1 (en) * 2000-04-29 2004-04-20 Hewlett-Packard Development Company, L.P. System and method for managing a computer system having a plurality of partitions
US6629315B1 (en) * 2000-08-10 2003-09-30 International Business Machines Corporation Method, computer program product, and system for dynamically refreshing software modules within an actively running computer system
US6775728B2 (en) * 2001-11-15 2004-08-10 Intel Corporation Method and system for concurrent handler execution in an SMI and PMI-based dispatch-execution framework
US7130951B1 (en) * 2002-04-18 2006-10-31 Advanced Micro Devices, Inc. Method for selectively disabling interrupts on a secure execution mode-capable processor
US7254676B2 (en) * 2002-11-15 2007-08-07 Intel Corporation Processor cache memory as RAM for execution of boot code
JP3986950B2 (ja) * 2002-11-22 2007-10-03 シャープ株式会社 Cpuおよびこれを備えた情報処理装置、cpuの制御方法
US6799227B2 (en) * 2003-01-06 2004-09-28 Lsi Logic Corporation Dynamic configuration of a time division multiplexing port and associated direct memory access controller
US6990545B2 (en) * 2003-04-28 2006-01-24 International Business Machines Corporation Non-disruptive, dynamic hot-plug and hot-remove of server nodes in an SMP
US20050114687A1 (en) * 2003-11-21 2005-05-26 Zimmer Vincent J. Methods and apparatus to provide protection for firmware resources
JP4320247B2 (ja) * 2003-12-24 2009-08-26 株式会社日立製作所 構成情報設定方法および装置
US7734741B2 (en) * 2004-12-13 2010-06-08 Intel Corporation Method, system, and apparatus for dynamic reconfiguration of resources
US7302539B2 (en) * 2005-04-20 2007-11-27 Hewlett-Packard Development Company, L.P. Migrating data in a storage system
US7386662B1 (en) * 2005-06-20 2008-06-10 Symantec Operating Corporation Coordination of caching and I/O management in a multi-layer virtualized storage environment
US7818736B2 (en) * 2005-09-14 2010-10-19 International Business Machines Corporation Dynamic update mechanisms in operating systems
US20070226795A1 (en) * 2006-02-09 2007-09-27 Texas Instruments Incorporated Virtual cores and hardware-supported hypervisor integrated circuits, systems, methods and processes of manufacture
US7533249B2 (en) * 2006-10-24 2009-05-12 Panasonic Corporation Reconfigurable integrated circuit, circuit reconfiguration method and circuit reconfiguration apparatus
US7640453B2 (en) * 2006-12-29 2009-12-29 Intel Corporation Methods and apparatus to change a configuration of a processor system
US7856551B2 (en) * 2007-06-05 2010-12-21 Intel Corporation Dynamically discovering a system topology
US7900029B2 (en) * 2007-06-26 2011-03-01 Jason Liu Method and apparatus to simplify configuration calculation and management of a processor system
US7818555B2 (en) * 2007-06-28 2010-10-19 Intel Corporation Method and apparatus for changing a configuration of a computing system
JP2011503710A (ja) * 2007-11-09 2011-01-27 プルラリティー リミテッド しっかりと連結されたマルチプロセッサのための共有メモリ・システム
US7921286B2 (en) * 2007-11-14 2011-04-05 Microsoft Corporation Computer initialization for secure kernel
US7925857B2 (en) * 2008-01-24 2011-04-12 International Business Machines Corporation Method for increasing cache directory associativity classes via efficient tag bit reclaimation
US7987336B2 (en) * 2008-05-14 2011-07-26 International Business Machines Corporation Reducing power-on time by simulating operating system memory hot add
US20100281222A1 (en) * 2009-04-29 2010-11-04 Faraday Technology Corp. Cache system and controlling method thereof
US20110179311A1 (en) * 2009-12-31 2011-07-21 Nachimuthu Murugasamy K Injecting error and/or migrating memory in a computing system

Also Published As

Publication number Publication date
EP2519892A4 (en) 2017-08-16
WO2011081840A3 (en) 2011-11-17
KR101365370B1 (ko) 2014-02-24
EP2519892A2 (en) 2012-11-07
US20110161592A1 (en) 2011-06-30
JP2012530327A (ja) 2012-11-29
CN102473169B (zh) 2014-12-03
WO2011081840A2 (en) 2011-07-07
CN102473169A (zh) 2012-05-23
KR20120026576A (ko) 2012-03-19

Similar Documents

Publication Publication Date Title
JP5392404B2 (ja) 動的なシステムを再構成する方法および装置
US10635453B2 (en) Dynamic reconfiguration of multi-core processor
US20110179311A1 (en) Injecting error and/or migrating memory in a computing system
US9952654B2 (en) Centralized synchronization mechanism for a multi-core processor
JP5801372B2 (ja) システム管理モードのためのプロセッサにおける状態記憶の提供
US7254676B2 (en) Processor cache memory as RAM for execution of boot code
JP5771327B2 (ja) プロセッサの非コア回路の消費電力の低減
US9792112B2 (en) Propagation of microcode patches to multiple cores in multicore microprocessor
CN109997113B (zh) 用于数据处理的方法和装置
US7761696B1 (en) Quiescing and de-quiescing point-to-point links
US11893379B2 (en) Interface and warm reset path for memory device firmware upgrades
JP2007172591A (ja) マルチノード・システムにおいてアクティブなプロセッサの数を動的に変更する方法及び構成
JP2007516535A (ja) システム構成の遠隔修正のための方法および装置
US11972243B2 (en) Memory device firmware update and activation without memory access quiescence
US20240248702A1 (en) Firmware update technologies

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130416

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130514

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130802

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

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130919

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130930

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130930

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees