(57)【要約】【課題】  本発明の課題は、上記問題点に鑑み、マージバッファのシステムキルエラーをプロセスキルエラーに変換する方法、装置及びシステムを提供することである。【解決手段】  上記課題を解決するため、本発明は、データ及び該データが格納されるアドレスを有し、１以上のプロセスに係るストア命令を収集するバッファと、第１プロセスに係るストア命令を、前記バッファが第２プロセスに係るストア命令を収集する前に前記バッファから常にドレイン処理するバッファ制御とから構成されることを特徴とする装置を提供する。【選択図】  図１
2006092537.tif 000002
【特許請求の範囲】
【請求項１】
データ及び該データが格納されるアドレスを有し、１以上のプロセスに係るストア命令を収集するバッファと、
第１プロセスに係るストア命令を、前記バッファが第２プロセスに係るストア命令を収集する前に前記バッファから常にドレイン処理するバッファ制御と、
から構成されることを特徴とする装置。
【請求項２】
請求項１記載の装置であって、さらに、
前記ストア命令において少なくとも１つのエラーを検出するエラーチェッカーと、
前記エラーチェッカーが前記第１プロセスに係る第１ストア命令における第１エラーを検出した場合、前記第１プロセスを停止するキルユニットと、
を有することを特徴とする装置。
【請求項３】
請求項２記載の装置であって、
前記ストア命令はさらに、該ストア命令に対応するエラー情報を有し、
前記エラーチェッカーは、前記エラー情報に基づき前記少なくとも１つのエラーを検出する、
ことを特徴とする装置。
【請求項４】
請求項３記載の装置であって、
前記エラー情報は、パリティ情報であることを特徴とする装置。
【請求項５】
請求項２記載の装置であって、さらに、
前記第１エラーが第１アドレスエラーであるとき、対応するデータエラーを示すパリティ破壊ユニットを有することを特徴とする装置。
【請求項６】
請求項１記載の装置であって、
前記バッファは、マージバッファであることを特徴とする装置。
【請求項７】
請求項１記載の装置であって、
前記バッファは、ある時点において１つのプロセスに係るストア命令を収集することを特徴とする装置。
【請求項８】
請求項２記載の装置であって、
前記バッファは、前記第１エラーをシステムキルエラーとしてでなく、プロセスキルエラーとして処理することを可能にすることを特徴とする装置。
【請求項９】
１以上のプロセスを実行するプロセッサコアと、
マシーン状態にコミットされる準備ができるまで、１以上の投機的ストア命令をストアするストアバッファと、
前記１以上のプロセスに関連付けされ、データと該データが格納されるアドレスと、エラー情報とを有する前記コミットされたストア命令を格納するマージバッファと、
前記プロセッサコアが第１プロセスの実行から第２プロセスの実行に変更する場合、前記マージバッファを常にフラッシュ処理するマージバッファ制御と、
から構成されることを特徴とする装置。
【請求項１０】
請求項９記載の装置であって、さらに、
前記エラー情報に基づき、前記コミットされたストア命令における少なくとも１つのエラーを検出するエラーチェッカーと、
前記エラーチェッカーが前記第１プロセスに係る第１のコミットされたストア命令における第１エラーを検出する場合、前記第１プロセスの実行を停止するキルユニットと、
を有することを特徴とする装置。
【請求項１１】
請求項１０記載の装置であって、さらに、
前記第１エラーが第１アドレスエラーであるとき、対応するデータエラーを示すパリティ破壊ユニットを有することを特徴とする装置。
【請求項１２】
請求項９記載の装置であって、
前記マージバッファは、ある時点において１つのプロセスにかかるストア命令を収集することを特徴とする装置。
【請求項１３】
請求項１０記載の装置であって、
前記マージバッファは、前記第１エラーをシステムキルエラーとしてでなく、プロセスキルエラーとして処理することを可能にすることを特徴とする装置。
【請求項１４】
データと、該データが格納されるアドレスと、エラー情報とを有し、バッファの第１プロセスに係るストア命令を収集するステップと、
前記第１プロセスに係るストア命令を、第２プロセスに係るストア命令を収集する前に前記バッファから常にドレイン処理するステップと、
から構成されることを特徴とする方法。
【請求項１５】
請求項１４記載の方法であって、さらに、
前記エラー情報に基づき、前記収集されたストア命令において少なくとも１つのエラーを検出するステップと、
前記第１プロセスに係る第１エラーが検出された場合、前記第１プロセスの実行を停止するステップと、
を有することを特徴とする方法。
【請求項１６】
請求項１５記載の方法であって、さらに、
前記第１エラーが第１アドレスエラーであるとき、対応する第１データエラーを示すステップを有することを特徴とする方法。
【請求項１７】
請求項１４記載の方法であって、
ある時点において１つのプロセスに係るストア命令が、前記バッファに収集されることを特徴とする方法。
【請求項１８】
請求項１５記載の方法であって、さらに、
前記第１エラーをシステムキルエラーとしてでなく、プロセスキルエラーとして処理するステップを有することを特徴とする方法。
【請求項１９】
データ、アドレス及びエラー情報を含み、第１プロセスに係るストア命令をバッファに収集するステップと、
前記第１プロセスに係る収集されたストア命令を、第２プロセスに係るストア命令を収集する前に前記バッファから常にドレイン処理するステップと、
を実行時にシステムに実行可能にする命令を含むマシーンアクセス可能媒体から構成されることを特徴とする物品。
【請求項２０】
請求項１９記載の物品であって、さらに、
ある時点において１つのプロセスに係るストア目例を前記バッファに収集するステップを実行時に前記システムに実行可能にする命令を有することを特徴とする物品。
【請求項２１】
請求項１９記載の物品であって、さらに、
前記第１プロセスに係る第１ストア命令に係る第１エラーを、システムキルエラーとしてでなくプロセスキルエラーとして処理するステップを実行時に前記システムに実行させる命令を有することを特徴とする物品。
【請求項２２】
ストア命令を有する１以上のプロセスに係る命令を実行するプロセッサと、
前記プロセッサによる実行のため、前記命令を格納するため接続されるダイナミックランダムアクセスシステムメモリと、
格納対象のデータ、該データが格納されるアドレス、及びエラー情報を含む前記ストア命令に係る情報を収集するマージバッファと、
前記プロセッサが第１プロセスの実行から第２プロセスの実行に変更する場合、前記マージバッファを常にフラッシュ処理するマージバッファ制御と、
から構成されることを特徴とするシステム。
【請求項２３】
請求項２２記載のシステムであって、さらに、
前記エラー情報に基づき、前記ストア命令における少なくとも１つのエラーを検出するエラーチェッカーと、
前記エラーチェッカーが前記第１プロセスに係る第１ストア命令に係る第１エラーを検出する場合、前記第１プロセスの実行を停止するキルユニットと、
を有することを特徴とするシステム。
【請求項２４】
請求項２３記載のシステムであって、さらに、
前記第１エラーが第１アドレスエラーであるとき、対応するデータエラーを示すパリティ破壊ユニットを有することを特徴とするシステム。
【請求項２５】
請求項２２記載のシステムであって、
前記マージバッファは、ある時点において１つのプロセスにかかるストア命令を収集することを特徴とするシステム。
【請求項２６】
請求項２３記載のシステムであって、
前記マージバッファは、前記第１エラーをシステムキルエラーとしてでなく、プロセスキルエラーとして処理することを可能にすることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にプロセッサにおけるエラー処理に関し、より詳細には、マイクロプロセッサのマージバッファにおけるソフトエラーの処理に関する。
【背景技術】
【０００２】
トランジェントな障害からのシングルビットアップセットあるいはエラーが、マイクロプロセッサ設計の主要な課題として顕在化してきている。これらの障害は、宇宙線からの中性子やパッケージング材料からのα粒子など、半導体装置を通過時に正孔ペアを生成する高エネルギー粒子からもたらされる。トランジェントソースや拡散ノードにより、これらの電荷を収集することができる。十分な量の蓄積された電荷は、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）セル、ラッチ、ゲートなどのロジックデバイスの状態を変更する可能性があり、これにより、電子回路の動作に論理エラーを生じさせる。このタイプのエラーはデバイスの永久的な不具合を反映したものではないため、「ソフトエラー」または「トランジェントエラー」と呼ばれる。
【０００３】
ソフトエラーは、オンチップトランジスタの個数が増大し続けるに従い、マイクロプロセッサの設計者には大きな負担となる。ラッチやＳＲＡＭビットあたりのローエラーレート（ｒａｗ  ｅｒｒｏｒ  ｒａｔｅ）は、以降の何世代かの技術に対してほぼ一定を保つように、あるいは若干は低下するように構成されるかもしれない。従って、エラー保護機構が加えられたり、またはよりロウバストな技術（完全空乏型SOI（ｆｕｌｌｙ−ｄｅｐｌｅｔｅｄ  Ｓｉｌｉｃｏｎ−ｏｎ−Ｉｎｓｕｌａｔｏｒ））が利用されない場合には、マイクロプロセッサのソフトエラーレートは、以降の各世代における半導体デバイスに加えられるデバイス数に比例して増大するかもしれない。
【０００４】
ビットエラーが、その影響度やそれの検出及び訂正能力に基づき分類されるかもしれない。いくつかのビットエラーは、それらが読み出されない、重要でない、あるいは利用される前に訂正可能であるという理由から、「良性エラー（ｂｅｎｉｇｎ  ｅｒｒｏｒ）」として分類されるかもしれない。最も油断のならないエラーは、エラーが検出されず、システムがエラー出力を生成することを引き起こすサイレントなデータ破壊である。サイレントなデータ破壊を回避するため、設計者はパリティのようなエラー検出機構を利用するかもしれない。エラー訂正技術はすべての状況に適用可能ではないが、検出されたエラーを修復するのに利用可能である。訂正はできないが、エラーの検出を可能にする機能により、誤った出力の生成は回避されるが（誤った出力が生成される前に、関係するプロセスをシャットダウンすることにより）、そのようなエラーが発生したとき、関係するプロセスを修復し、その実行を継続させるための機構は提供されない。このカテゴリーのエラーは、ＤＵＥ（Ｄｅｔｅｃｔｅｄ  Ｕｎｒｅｃｏｖｅｒａｂｌｅ  Ｅｒｒｏｒ）と呼ばれるかもしれない。
【０００５】
ＤＵＥイベントは、それがオペレーティングシステム及び／または他の機構がエラーにより影響を受けた１以上のユーザプロセスを終了させるかどうか、あるいはＤＵＥイベントがすべてのプロセスを含むマシーン全体をクラッシュさせるかどうかに従って、データ破壊を回避するようさらに分けることができる。第１のタイプのＤＵＥイベントは、「プロセスキルＤＵＥ（ｐｒｏｃｅｓｓ−ｋｉｌｌ  ＤＵＥ）」イベントと呼ばれる。第２のタイプのＤＵＥイベントは、「システムキルＤＵＥ（ｓｙｓｔｅｍ−ｋｉｌｌ  ＤＵＥ）」イベントと呼ばれる。プロセスキルＤＵＥは、エラーの影響を受けていないプロセスのシステムによる実行を可能にするため、システムキルＤＵＥより望ましい。例えば、大規模なコンピュータシステムでは、一度に数百のプロセスが実行されるかもしれない。従って、トランジェントエラーを１つのプロセス（または、少数のプロセス）に隔離し、当該プロセスのみを終了させることにより、システム全体をクラッシュさせ、実行中のすべてのプロセスを終了させることよりも大きな効果が得られる。
【０００６】
従って、マージバッファのシステムキルエラーをプロセスキルエラーに変換する技術が必要とされる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の課題は、上記問題点に鑑み、マージバッファのシステムキルエラーをプロセスキルエラーに変換する方法、装置及びシステムを提供することである。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明は、データ及び該データが格納されるアドレスを有し、１以上のプロセスに係るストア命令を収集するバッファと、第１プロセスに係るストア命令を、前記バッファが第２プロセスに係るストア命令を収集する前に前記バッファから常にドレイン処理するバッファ制御とから構成されることを特徴とする装置を提供する。
【０００９】
さらに、本発明は、１以上のプロセスを実行するプロセッサコアと、マシーン状態にコミットされる準備ができるまで、１以上の投機的ストア命令をストアするストアバッファと、前記１以上のプロセスに関連付けされ、データと該データが格納されるアドレスと、エラー情報とを有する前記コミットされたストア命令を格納するマージバッファと、前記プロセッサコアが第１プロセスの実行から第２プロセスの実行に変更する場合、前記マージバッファを常にフラッシュ処理するマージバッファ制御とから構成されることを特徴とする装置を提供する。
【００１０】
さらに、本発明は、データと、該データが格納されるアドレスと、エラー情報とを有し、バッファの第１プロセスに係るストア命令を収集するステップと、前記第１プロセスに係るストア命令を、第２プロセスに係るストア命令を収集する前に前記バッファから常にドレイン処理するステップとから構成されることを特徴とする方法を提供する。
【００１１】
さらに、本発明は、データ、アドレス及びエラー情報を含み、第１プロセスに係るストア命令をバッファに収集するステップと、前記第１プロセスに係る収集されたストア命令を、第２プロセスに係るストア命令を収集する前に前記バッファから常にドレイン処理するステップとを実行時にシステムに実行可能にする命令を含むマシーンアクセス可能媒体から構成されることを特徴とする物品を提供する。
【００１２】
さらに、本発明は、ストア命令を有する１以上のプロセスに係る命令を実行するプロセッサと、前記プロセッサによる実行のため、前記命令を格納するため接続されるダイナミックランダムアクセスシステムメモリと、格納対象のデータ、該データが格納されるアドレス、及びエラー情報を含む前記ストア命令に係る情報を収集するマージバッファと、前記プロセッサが第１プロセスの実行から第２プロセスの実行に変更する場合、前記マージバッファを常にフラッシュ処理するマージバッファ制御とから構成されることを特徴とするシステムを提供する。
【発明の効果】
【００１３】
本発明によると、マージバッファのシステムキルエラーをプロセスキルエラーに変換する方法、装置及びシステムが提供される。
【発明を実施するための最良の形態】
【００１４】
マージバッファのシステムキルエラーをプロセスキルエラーに変換する方法、装置及びシステムが説明される。以下の説明では、本発明の実施例の完全な理解を提供するため、多数の具体的詳細が与えられる。しかしながら、本発明はこれらの具体的詳細なしに実現可能であるということは当業者には明らかであろう。また、本発明の実施例を不明瞭にすることを避けるため、一部の構成及び装置はブロック図により示されるかもしれない。
【００１５】
明細書における「一実施例」や「ある実施例」との表現は、当該実施例に関連して説明された機能、構成あるいは特徴が本発明の少なくとも１つの実施例に含まれていることを意味するものである。明細書の様々な部分に「一実施例では」との表現が現れるが、そのすべてが同一の実施例を必ずしも参照するものではない。
【００１６】
トランジェントな故障により生じるソフトエラーを解決するため、マイクロプロセッサの設計者は、各種保護機能を含めるかもしれない。利用可能な保護機能の例として、パリティ、誤り訂正符号（ＥＣＣ）、巡回冗長検査（ＣＲＣ）、ロックステッピング（ｌｏｃｋ−ｓｔｅｐｐｉｎｇ）、放射硬化セル（ｒａｄｉａｔｉｏｎ−ｈａｒｄｅｎｅｄ  ｃｅｌｌ）、ＳＯＩ製造技術などがあげられる。しかしながら、これら保護機能の利用は、パフォーマンスとエラーに対する脆弱性との間のトレードオフとなるかもしれない。このようなトレードオフの一例は、プロセッサのマージバッファにおいて発生する。
【００１７】
図５を参照するに、本発明の一実施例によるマージバッファ２２０のブロック図が示される。マージバッファ２２０は、以降におけるキャッシュ及び／またはメモリ（システムメモリなど）へのバッチ送出のため、プロセッサにより実行される格納命令の結果を収集する。マージバッファ２２０は、複数のライト（例えば、各ライトはデータワードから構成される）を１つのキャッシュブロック（例えば、複数のデータワードから構成される）に合成し、その後、個々のデータワードを個別に書き込む代わりに、１以上のキャッシュブロックをキャッシュシステムに書き込むことにより、プロセッサのパフォーマンスを向上させるかもしれない。マージバッファ２２０はしばしばプログラムの実行中に生成された直近のデータを保持しているため、プロセッサはロード命令によるマージバッファ２２０に対するＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍａｔｃｈ）の実行を可能にし、ロード命令を実行する直近のデータを検出する。この結果、マージバッファ２２０は、ｌｏａｄ−ｔｏ−ｕｓｅのクリティカルパスであるかもしれず、ｌｏａｄ−ｔｏ−ｕｓｅレイテンシは、ポインタチェーシング（ｐｏｉｎｔｅｒ  ｃｈａｓｉｎｇ）を有するデータベースコードなどの多数のプログラムにとって重要なものである。
【００１８】
特にアドレスエラーとの関連で、マージバッファ２２０におけるＥＣＣなどのエラー検出訂正機能の実現は、ｌｏａｄ−ｔｏ−ｕｓｅレイテンシを大きく増大させ、これにより、一部のアプリケーションに対するプロセッサのパフォーマンスは許容できないほどに低下することになったり、あるいは設計の複雑さを大きく増大させるかもしれない。ＥＣＣなどのエラー検出訂正機能は、単なるエラー検出のみより時間がかかるｒｅａｄ−ｍｏｄｉｆｙ−ｗｒｉｔｅ処理を伴う。例えば、高速な排他的ＯＲ（ＸＯＲ）比較処理によりパリティエラーは検出可能である。従って、許容可能なパフォーマンスを維持することは、マージバッファ２２０などの遅延の影響を受ける格納状況におけるエラーの取扱いをエラー訂正なしの検出に限定するかもしれない。
【００１９】
しかしながら、エラー検出時に訂正しないことは、システムによって実行されている１以上のプロセスを終了させたり（プロセスキルＤＵＥイベント）、あるいはシステム全体をシャットダウンさせる（システムキルＤＵＥイベント）ことさえ生じさせる可能性のある検出された修復不可能なエラーやＤＵＥイベントを生じさせるかもしれない。本発明の実施例を含まないマージバッファでは、複数のプロセスがそれらのデータをマージバッファにコミットし、オペレーティングシステムが破壊されたアドレスの属する特定のプロセスを特定できないことから、マージバッファにおいて破壊されたアドレスはシステムキルＤＵＥを発生させる。エラー出力の生成を回避するため、オペレーティングシステムは、すべてのプロセスを停止し、システム全体をシャットダウンさせるしか選択の余地はないかもしれない。本発明の実施例により提供されるようなマージバッファ２２０における破壊されたアドレスのシステムキルＤＵＥイベントからプロセスキルＤＵＥイベントへの変換によって、このようなアドレス破壊エラーの影響を大きく低減することができるかもしれない。
【００２０】
図５を参照するに、本発明の一実施例では、マージバッファ２２０は、任意の時点において単独のアプリケーションやプロセスに関するストア命令を収集するため、プロセッサの実行フローが異なるプロセスを実行するよう変更されるごとに、フラッシュまたはドレイン処理されるようにしてもよい。例えば、プロセッサは電子メールプログラムを実行した後、コンピュータゲームを実行するよう変更されてもよい。マージバッファ２２０において収集される電子メールプログラムに関するストア命令は、コンピュータゲームプログラムを実行するよう変更を行うプロセッサと接続するマージバッファからフラッシュまたはドレイン処理されるかもしれない。他の実施例では、マージバッファ２２０は、選択されたプロセスの変更によりドレイン処理されるかもしれない。一実施例では、マージバッファ２２０は、当該バッファ２２０のストア命令の破壊の可能性を最小限にするため、マージバッファ２２０に可能な限り迅速にストア命令を書き出させる（例えば、フラッシュまたはドレイン処理を介し）パージモード（ｐｕｒｇｅ  ｍｏｄｅ）により動作するようにしてもよい。一実施例では、マージバッファ２２０は、新しいストア命令を当該バッファ２２０に収集するためのスペースがフルであるとき、フラッシュまたはドレイン処理（部分的または完全に）されてもよい。
【００２１】
一実施例では、マージバッファ２２０は、バッファにあるストア命令をキャッシュメモリ及び／または他のメモリ（システムメモリなど）に書き込むことによりフラッシュまたはドレイン処理されるかもしれない。さらに、マージバッファ２２０のコンテンツは、他のプロセスに関するストア命令を収集するためマージバッファ２２０をするようにクリアまたは無効とマークされてもよい。一実施例では、ドラインマージバッファ（ドレインＭＢ）信号２４２を用いて、マージバッファのドレインまたはフラッシュ処理が行われてもよい。一実施例では、ドレインＭＢ信号２４２が、プロセッサのフラッシュマージバッファ命令に応答してアサートされてもよい。一実施例では、ドレインＭＢ信号２４２は、マージバッファ２２０がドレイン処理されるべきエラー及び／または他の状態を検出するプロセッサの一ユニットによりアサートされてもよい。
【００２２】
マージバッファ２２０に収集されるストア命令は、それがマージバッファ２２０から書き出されるとき、エラーのチェックが行われてもよい。一実施例では、アドレスパリティ生成装置２１６が、マージバッファアドレスキュー２２６に書き込まれる各アドレスに対してパリティビットを生成し、パリティチェッカー２３２が、アドレスライン２４４のマージバッファ２２０から書き出される前に、アドレスとパリティ情報をチェックするようにしてもよい。一実施例では、アドレスパリティ生成装置２１６は、ストアバッファアドレスとパリティ情報２１８をマージバッファアドレスキュー２２６に与えるようにしてもよい。一実施例では、データがデータパリティライン２３８のマージバッファ２２０から書き出されるときと同様にして、データエラーを検出するようにしてもよい。エラー（アドレス及び／またはデータ）が検出され、マージバッファ２２０が最後のプロセス変更に関してフラッシュ処理された場合、当該エラーはプロセッサにより実行されている現在のプロセスと関連付けされ知ることができる。この情報により、オペレーティングシステム（または他のエラーマッピング機構）は、当該エラーを適切なプロセスにマッピングし、システム全体ではなく当該プロセスのみを終了させる。これにより、プロセス変更に関するマージバッファ２２０のフラッシュまたはドレイン処理は、マージバッファ２２０が一度に１つのプロセスからのデータを含むようにし、これにより、そうでない場合にはマージバッファ２２０においてシステムキルＤＵＥイベントとなる可能性があったものをプロセスキルＤＵＥイベントに変換するかもしれない。
【００２３】
図５を参照するに、マージバッファ２２０はまた、ストア命令に関するデータを格納するためのマージバッファデータキュー２２２を有するかもしれない。一実施例では、データパリティ生成装置２１０は、マージバッファデータキュー２２２に書き込まれる各データに対するパリティビットを生成するかもしれない。一実施例では、データパリティ情報がキャッシュメモリまたはシステムメモリにより利用され、データパリティ信号２３８を介しマージバッファ２２０から受信したデータにおけるエラーが検出されるかもしれない。
【００２４】
一実施例では、マージバッファにおいて検出されたアドレスエラーはまた、対応するデータエラーを生成するかもしれない。一実施例では、マージバッファ２２０は、アドレスエラーが検出されると、パリティ状態ユニット２３０において破壊パリティ状態を設定するための設定パリティ破壊信号２３４を有するかもしれない。パリティ状態ユニット２３０は、アドレスパリティチェッカー２３２が対応するアドレスパリティエラーを検出すると、オーバライドデータパリティエラーを生成するため、条件付パリティ破壊ユニット２２８への入力として破壊パリティ信号２３６を生成するかもしれない。設定パリティ破壊信号２３４、パリティ状態ユニット２３０、破壊パリティ信号２３６及び条件付パリティ破壊ユニット２２８は、破壊されたアドレスに関するデータが何れかのプロセッサにより使用されるのを防ぐため、破壊されたアドレスに対応するデータを効果的に「ポイズン処理（ｐｏｉｓｏｎ）」するようにしてもよい。一実施例では、クリアパリティ破壊信号２４０が、パリティ状態ユニット２３０の状態をリセットし、条件付パリティ破壊ユニット２２８がマージバッファデータキュー２２２に格納されているデータパリティ情報をオーバライドするのを回避するのに利用されてもよい。マージバッファ２２０はまた、マージバッファユニット２２０の動作を制御するためのマージバッファ制御ユニット２２４を有するようにしてもよい。
【００２５】
図５を参照するに、ストアバッファ２０２が、プロセッサにより投機的に実行されているストア命令を収集するようマージバッファ２２０と共に利用されてもよい。ストアバッファ２０２は、投機的ストア命令に関するアドレスとデータをそれぞれ格納するストアバッファアドレスキュー２０８とストアバッファデータキュー２０４を有するようにしてもよい。ストアバッファ２０２はまた、ストアバッファ２０２が決定された（すなわち、もはや投機的ではない）ストア命令をマージバッファ２２０に送信する時点を制御するストアバッファ制御ユニット２０６を有するようにしてもよい。一実施例では、マージバッファ制御ユニット２２４は、ストアバッファがストア命令をマージバッファ２２０に送信することを防ぐため、ストールストアバッファ（ストールＳＢ）信号２１４をアサートするようにしてもよい。例えば、マージバッファ２２０がフルの場合、マージバッファ制御ユニット２２４は、マージバッファ２２０がキャッシュメモリ及び／またはシステムメモリに対するコンテンツのすべてまたは一部をドレイン処理するまで、ストアバッファ２０２がさらなるストア命令を送信することを可否するようにしてもよい。
【００２６】
図１を参照するに、本発明の一実施例によるソフトウェア実行方法を示すフロー図が示される。オペレーティングシステムは、計算システムの動作環境を確立するため起動される（ブロック１０２）。一実施例では、オペレーティングシステムはマイクロソフトウィンドウズ（登録商標）オペレーティングシステムであってもよい。他の実施例では、オペレーティングシステムは、Ｌｉｎｕｘ（登録商標）オペレーティングシステムであってもよい。さらなる他の実施例では、他のオペレーティングシステムが利用されてもよい。オペレーティングシステムの起動後（ブロック１０２）、アプリケーションが起動されてもよい（ブロック１０４）。アプリケーションは、ユーザアプリケーション（ワープロ、スプレッドシートまたはゲームプログラムなど）、システムアプリケーションあるいは他のタイプのアプリケーションソフトウェアであってもよい。
【００２７】
アプリケーションコードの実行中（ブロック１０６）、いくつかのイベントが、現在のプロセスに関するアプリケーションコードの実行から他のプロセスに関するコードの実行への変更に対して発生するかもしれない。例えば、オペレーティングシステム（ＯＳ）に対する呼び出しは（矢印１０７）、実行をオペレーティングシステム（ＯＳ）サービスルーチンに移す（ブロック１０９）。同様に、オペレーティングシステムに対する割込みは、実行をオペレーティングシステム（ＯＳ）割込みハンドラに移すものである（ブロック１１０）。ソフトウェアの実行の変更は、ファームウェアに対する割込みにより発生し（矢印１１２）、これにより、ファームウェア割込みハンドラに実行が移される（ブロック１１４）。同様に、コンテクストスイッチ（矢印１１６）は、コンテクストスイッチハンドラに実行を移すものであるかもしれない（ブロック１１８）。アプリケーションコードの実行に対するさらなる他の割込みは、マシーンチェックにより発生し（矢印１２０）、マシーンチェックハンドラを指し示すよう実行されるかもしれない（ブロック１２２）。より詳細に説明されるように、マシーンチェックハンドラは、一部の状況においてアプリケーションを終了させ、アプリケーションキルリターンポイントに戻る（矢印１２４）。
【００２８】
アプリケーションコードの通常の実行に対する割込みまたは変更がない場合、アプリケーションコードの実行は、アプリケーションがユーザまたはオペレーティングシステムの制御により、あるいは他の理由により終了されるまで継続されてもよい（ブロック１２６）。アプリケーションの終了後、他のアプリケーションは起動されるかもしれない（ブロック１２８）。オペレーティングシステム（ＯＳ）サービスルーチン（ブロック１０９）、ＯＳ割込みハンドラ（ブロック１１０）、ファームウェア割込みハンドラ（ブロック１１４）及びコンテキストスイッチ（ブロック１１８）に実行が移されるときのプロセスに関するさらなる詳細が、図２に関して説明される。
【００２９】
図２を参照するに、オペレーティングシステム（ＯＳ）サービスコール（ブロック１０９）、ＯＳ割込みハンドラ（ブロック１１０）、ファームウェア割込みハンドラ（ブロック１１４）及びコンテキストスイッチ（ブロック１１８）のフロー図が示される。ソフトウェアの実行がＯＳサービスモジュール（ブロック１０９）またはＯＳ割込みハンドラ（ブロック１１０）に移されると、１以上のプロセッサコアキューまたはバッファがドレイン処理される（ブロック１３０）。一実施例では、マージバッファは、それに含まれるストア命令が任意の時点において１つのプロセスまたはアプリケーションに関連するようにドライン処理されるかもしれない。適切なプロセッサキューまたはバッファがドレイン処理された後、適切なオペレーティングシステムサービスルーチンまたはオペレーティングシステム割込みハンドラに関するシステムコードが実行される（ブロック１３２）。システムコードが実行された後（ブロック１３２）、１以上のプロセッサコアキューまたはバッファ（マージバッファを含む）がドライン処理され、割込まれたアプリケーションコードの実行が再開される（ブロック１３４）。
【００３０】
同様に、アプリケーションコードの実行中（図１のブロック１０６）、ファームウェア割込みハンドライベント（ブロック１１４）により、１以上のプロセッサキューまたはバッファのドレイン処理が行われるかもしれない（ブロック１３６）。一実施例では、マージバッファは、新しいファームウェアソフトウェアの実行が開始される前にドレイン処理されるように、ファームウェア割込みハンドライベントに関してドライン処理されてもよい（ブロック１３８）。ファームウェアソフトウェアの実行後（ブロック１３８）、１以上のプロセッサコアキューまたはバッファ（マージバッファを含む）がドレイン処理され、割込まれたアプリケーションの実行が再開される（ブロック１４０）。
【００３１】
図２を参照するに、コンテキストスイッチイベントによるアプリケーションコード（図１のブロック１０６）の実行の割込みにより（ブロック１１８）、１以上のプロセッサキューまたはバッファのドレイン処理が行われてもよい（ブロック１４２）。コンテキストスイッチは、典型的には、他のアプリケーションコードまたはプロセスを実行するため、あるアプリケーションコードまたはプロセスの実行が中断されると発生する。当該イベントでは、プロセッサマージバッファは、マージバッファが任意の時点において１つのプロセスに関連するストア情報を含むように、ドレイン処理されてもよい。このようにして、マージバッファに格納されている破壊されたアドレスが現在のプロセスと関連付けされ、これにより、システム全体が停止されることを要するより、当該プロセスが終了されることを可能にする。適切なプロセッサキューがドレイン処理された後（ブロック１４２）、様々なコンテキスト保存／復元及び他のコンテキストスイッチ関連処理が実行されてもよい（ブロック１４４）。コンテキストスイッチ関連処理の完了後（ブロック１４４）、１以上のプロセッサコアキューまたはバッファ（マージバッファを含む）がドレイン処理され、実行が次のアプリケーションに移行してもよい（ブロック１４６）。
【００３２】
図３を参照するに、本発明の一実施例によるマシーンチェックハンドラ（ブロック１２２）を示すフロー図が示される。マシーンチェックハンドラへの実行の移行は、プロセッサにおけるエラーが検出されたときに行われるかもしれない。マシーンチェックハンドラの起動後（ブロック１２２）、１以上のプロセッサキューまたはバッファが、プロセッサを介し特定されたエラーに対するエラー情報を収集するためにドレイン処理されてもよい（ブロック１５０）。マシーンチェックハンドラは、どの訂正処理が適切であるか判断するため、当該エラー情報を解析してもよい。例えば、エラーがファームウェア訂正可能なものであるか判断するようにしてもよい（ブロック１５２）。訂正可能である場合には、ファームウェアが当該エラーを訂正し（ブロック１５５）、１以上のプロセッサコアキューまたはバッファ（マージバッファを含む）がドレイン処理され（ブロック１５５）、割込まれたアプリケーションの実行が再開されてもよい（ブロック１５６）。一実施例では、ＰＡＬ（Ｐｒｏｃｅｓｓｏｒ  Ａｂｓｔｒａｃｔｉｏｎ  Ｌａｙｅｒ）ファームウェアにより、エラーがＰＡＬにより訂正可能なプロセッサエラーであるか判断されてもよい。
【００３３】
エラーがファームウェアにより訂正可能でない場合（ブロック１５２）、マシーンチェックハンドラにより、当該エラーがオペレーティングシステムまたは他のシステムレベルソフトウェアまたは機構によって訂正可能であるか判断されてもよい（ブロック１５８）。訂正可能である場合、オペレーティングシステムや他のシステムレベルソフトウェアまたは機構は、当該エラーを訂正し（ブロック１６０）、１以上のプロセッサコアキューまたはバッファ（マージバッファを含む）はドレイン処理され（ブロック１６１）、割込まれたアプリケーションの実行が再開されてもよい（ブロック１６２）。一実施例では、ＳＡＬ（Ｓｏｆｔｗａｒｅ  Ａｂｓｔｒａｃｔｉｏｎ  Ｌａｙｅｒ）がシステムレベルエラーを解消するため、オペレーティングシステムと共に動作するかもしれない。
【００３４】
図３を参照するに、エラーがオペレーティングシステムレベルでは訂正できない場合（ブロック１５８）、マシーンチェックハンドラは、当該エラーがアプリケーションキルＤＵＥエラーであるか、あるいはプロセスキルＤＵＥエラーであるか判断する（ブロック１６４）。例えば、システム全体をダウンさせるよりも、特定のプロセスまたはアプリケーションを終了させるように、当該エラーがマシーン上で実行されている１以上の特定のプロセスまたはアプリケーションに関連するものであるか判断されてもよい。エラーが１以上の特定のアプリケーションにのみ関連していると判断できない場合、これは、エラーがシステム全体のシャットダウンを要するシステムキルＤＵＥであり（ブロック１６８）、すべてのプロセスの実行が中断されるべきである（ブロック１７０）ことを示している。エラーがアプリケーションまたはプロセスキルエラーであると判断されると（ブロック１６４）、関連するプロセスまたはアプリケーションが特定され、影響を受けたアプリケーションを回復及び／または終了させるためのステップがとられる（ブロック１６６）。特定、回復及び終了手順のさらなる説明は、図４に関連して説明される。
【００３５】
図４を参照するに、本発明の一実施例によるアプリケーションの特定、回復及び終了のための方法を示すフロー図が示される。エラーがアプリケーションキルエラーでないと判定した後（図３のブロック１６４）、マシーンチェックハンドラは、エラー処理の対象アドレスが利用可能であるか判断する（ブロック１６７）。利用可能である場合、プロセッサは対象アドレスに基づき回復を行い（ブロック１６９）、対象アドレスを含むメモリページを用いるすべてのアプリケーションを終了する（ブロック１７２）。その後、マシーンチェックハンドらは、１以上のプロセッサコアキューまたはバッファ（マージバッファを含む）をドレイン処理し（ブロック１７９）、アプリケーションキルリターンポイントへの実行に戻る（ブロック１２４）。
【００３６】
しかしながら、エラー処理の対象アドレスは常に利用可能であるとは限らない。例えば、マージバッファのアドレスがトランジェントな故障により破壊された場合、マシーンチェックハンドラは、エラー処理がマシーンチェック時にアクティブなアプリケーションにより発せられたものであるとわかっているか判断するようにしてもよい（ブロック１７４）。一実施例では、プロセッサのマージバッファにおいて発生するアドレス破壊エラーは、プロセッサがプロセスの実行開始前にマージバッファがドレイン処理された場合、エラーが検出されたときに実行されるアプリケーションまたはプロセスと関連付けされてもよい（例えば、アクティブプロセスなど）。例えば、図２及び３のブロック１３０、１３６、１４２及び１５０に関するマージバッファのドレイン処理は、マシーンチェック時にアクティブなアプリケーションが、マージバッファにおいて検出された破壊されたアドレスエラーに関するアプリケーションであることを保証する。このようにして、異なるプロセスを実行するための切り替えの前にマージバッファをドレイン処理することは、プロセッサがマージバッファアドレスエラーに関するアプリケーションを特定し、システムのシャットダウン（ブロック１８０）及びプロセッサの停止（ブロック１８２）を行うより、当該アプリケーションのみを終了させることを可能にする。
【００３７】
プロセッサがマシーンチェック時にアクティブなアプリケーションに基づくエラー処理を特定することができる場合（ブロック１７４）、プロセッサはマシーンチェック時に命令ポインタアドレスに基づき回復処理を実行し（ブロック１７６）、必要に応じて、マシーンチェック時にアクティブであったアプリケーションを終了させ（ブロック１７８）、１以上のプロセッサコア切るキューまたはバッファ（マージバッファを含む）をドレイン処理し（ブロック１７９）、アプリケーションキルリターンポイントに戻る（ブロック１２４）。
【００３８】
図６を参照するに、本発明の実施例が利用されるコンピュータシステム３００のブロック図が示される。一実施例では、コンピュータシステム３００は、マイクロプロセッサ、マイクロコントローラ、ＰＧＡ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などの汎用または特定用途向けプロセッサを有するプロセッサ３３０を含む。ここで用いられる「コンピュータシステム」という用語は、デスクトップコンピュータ、、サーバコンピュータ、ラップトップコンピュータなどの任意のタイプのプロセッサベースシステム、あるいは他のホストシステムを表す。
【００３９】
プロセッサ３３０は、２つのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）コア３０２ａと３０２ｂを有するように示されているが、そのようなコアを１以上含むようにしてもよい。ＣＰＵコア３０２ａ及び３０２ｂはそれぞれ、命令をフェッチする命令フェッチユニット３０４ａと３０４ｂ、命令の実行をスケジューリングするスケジューラユニット３０６ａと３０６ｂ、命令を実行する命令ユニット３０８ａと３０８ｂ、及びデータのローカルコピーを格納する１以上のローカルキャッシュメモリユニット３１０ａと３１０ｂから構成されてもよい。ＣＰＵコア３０２ａと３０２ｂはそれぞれさらに、ストアバッファ２０２ａと２０２ｂ、及び本発明の各種実施例により実現されるマージバッファ２２０ａと２２０ｂを有するようにしてもよい。
【００４０】
図６を参照するに、プロセッサ３３０は、プロセッサ３３０の各種ユニットがデータの通信及び交換を行うためのローカルインタコネクト３１２を有するようにしてもよい。プロセッサ３３０はまた、拡張キャッシュ３１４とシステムメモリ３１８に関してキャッシュコヒーレンシ及びシステムメモリインタフェース機能を提供するコヒーレンスプロトコルエンジン及びシステムインタフェース３１６を有するようにしてもよい。一実施例では、拡張キャッシュは、プロセッサ３３０の複数のＣＰＵコア３０２ａと３０２ｂにより共有されてもよい。一実施例では、拡張キャッシュ３１４はライトスルーキャッシュであり、ローカルキャッシュ３１０ａと３１０ｂはそれぞれ８Ｋバイトと２５６Ｋバイトであるレベル１とレベル２キャッシュを有し、拡張キャッシュ３１４は１６Ｍバイトのレベル３キャッシュであってもよい。一実施例では、マージバッファ２２０ａと２２０ｂは、ストア命令の結果を収集し、ローカルインタコネクト３１２上のトラフィックを低減するため、拡張キャッシュ及び／またはシステムメモリ３１８にスト雨例の結果の各ブロックを定期的に書き込む。
【００４１】
プロセッサ３３０はさらに、入出力（Ｉ／Ｏ）拡張バスを介し１以上の周辺装置３２２に説明されている入出力（Ｉ／Ｏ）ハブ３２０に接続されてもよい。一実施例では、周辺装置３２２は、フロッピー（登録商標）ディスクドライブなどの記憶装置と、キーボードやマウスなどの入力装置を有するようにしてもよい。Ｉ／Ｏハブ３２０はさらに、ハードディスクドライブやコンパクトディスク（ＣＤ）ドライブなどに接続されてもよい。他の記憶媒体がシステムに含まれてもよいということは理解されるであろう。プロセッサ３３０はまた、グラフィックエンジン、ネットワークエンジン、インターネットプロトコルエンジンなどの１以上の追加的な処理ユニットまたはプロトコルエンジン３２４に接続されてもよい。
【００４２】
実施例は、論理回路、状態マシーン、マイクロコードあるいはこれらの組み合わせにより実現可能である。実施例は、命令を実行するようコンピュータシステムをプログラムするのに利用可能な命令を有する記憶媒体上に格納されたコードにより実現される。この記憶媒体には、以下に限定するものではないが、フロッピー（登録商標）ディスク、光ディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ−Ｄｉｓｋ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、書き換え可能ＣＤ（ＣＤ−ＲＷ）、光磁気ディスクなどの任意のタイプのディスク、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの半導体デバイス、磁気または光カード、あるいは電子命令を格納するのに適した任意のタイプのメディアが含まれる。
【００４３】
以上、マージバッファシステムキルエラーをプロセスキルエラーに変換する方法、装置及びシステムが説明された。本発明は限られた実施例に関してしか説明されていないが、当業者は本開示により、そこから多数の改良及び変形を理解するであろう。添付された請求項はこのような改良及び変形のすべてを本発明の趣旨及び範囲内に属するものとして
カバーするものである。
【図面の簡単な説明】
【００４４】
【図１】図１は、本発明の一実施例によるソフトウェア実行方法を示すフロー図である。
【図２】図２は、本発明の一実施例によるオペレーティングシステムサービスコール割込みハンドラ、ファームウェア割込みハンドラ及びコンテクストスイッチを示すフロー図である。
【図３】図３は、本発明の一実施例によるマシーンチェックハンドラを示すフロー図である。
【図４】図４は、本発明の一実施例によるアプリケーション特定、回復及び終了を行うための方法を示すフロー図である。
【図５】図５は、本発明の一実施例によるマージバッファのブロック図である。
【図６】図６は、本発明の実施例が利用可能なコンピュータシステムのブロック図である。
【符号の説明】
【００４５】
２１６  アドレスパリティ生成装置
２２０  マージバッファ
２２４  マージバッファ制御ユニット
２２６  マージバッファアドレスキュー
２２８  条件付パリティ破壊ユニット
２３０  パリティ状態ユニット
２３２  パリティチェッカー
３０２  ＣＰＵコア
３０４  命令フェッチユニット
３０６  スケジューラユニット
３０８  実行ユニット
３１０  ローカルキャッシュメモリユニット
３１２  ローカルインタコネクト
３２０  入出力ハブ
３２２  周辺装置
３３０  プロセッサ
【図１】
2006092537.tif 000003
【図２】
2006092537.tif 000004
【図３】
2006092537.tif 000005
【図４】
2006092537.tif 000006
【図５】
2006092537.tif 000007
【図６】
2006092537.tif 000008