図面 (/)

技術 情報処理装置、演算処理装置、および情報処理装置の制御方法

出願人 富士通株式会社
発明者 小佐野秀和日下田雅紀野尻隆宏岡田誠之高橋仁
出願日 2015年12月15日 (4年3ヶ月経過) 出願番号 2015-244428
公開日 2017年6月22日 (2年9ヶ月経過) 公開番号 2017-111569
状態 特許登録済
技術分野 階層構造のメモリシステム
主要キーワード CPU間 同一リクエスト 間欠故障 リトライフラグ 固定故障 疑似エラー 擬似エラー トーラス
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2017年6月22日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (17)

課題

メインメモリを管理する演算処理装置とメインメモリのデータを持ち出している演算処理装置との間で間欠故障等により、キャッシュの制御に矛盾が生じた場合でも、メインメモリの管理情報更新し、動作を継続できる可能性を高める。

解決手段

第1の演算処理装置は主記憶装置から第2の演算処理装置に持ち出されたデータの変更の有無を含む管理状態を示す管理情報を保持する管理情報格納部と、前記管理情報の更新を要求する更新要求を受信する受信部と、前記管理情報が示す管理状態と受信した更新要求とが所定の関係を満たすか否かを判定するチェック部と、前記更新要求にリトライを示す情報が付与され、受信した更新要求が管理状態を第1の状態から第2の状態に更新し、かつ、前記管理情報が既に第2の状態に更新済みを表す場合、第2の演算処理装置に前記更新要求が正常に終了したことを示す完了応答を送信する応答パケット送信部と、を有する。

概要

背景

情報処理装置コンピュータ等は、演算処理を実行するCPU(演算処理装置ともいう)と、Dual Inline Memory Module(DIMM)等のメインメモリを有する。コンピュータシステムでは、メインメモリはデータを格納し、CPUがメインメモリにアクセスし、データの参照、あるいはデータの書き換えを行う。

メインメモリとして使用されるDIMMは読み書きが遅いため、CPUは内部にキャッシュと呼ばれる記憶媒体を備える。CPUはメインメモリのデータの一部をキャッシュに格納することで、処理対象のデータがキャッシュに存在する場合には、メインメモリまでアクセスせずにキャッシュからデータを読み、データへのアクセスを高速化する。

CPUからの読み出し要求キャッシュミスした時に、要求対象のデータはキャッシュに新規登録される。しかし、キャッシュに空きがない場合、すでにキャッシュに格納されていたデータがリプレースのためムーブアウトされる。データがリプレースのためムーブアウトされるとき、キャッシュ制御部は、そのデータと制御信号を一時的に格納し、Home−CPUへ送出する制御を行う。ここで、Home−CPUは、配下にムーブアウト対象のメインメモリを持つCPUである。なお、キャッシュからデータがムーブアウトされるのは、キャッシュに空きがない時に限るものではなく、キャッシュに空きがある場合でも明示的にムーブアウトが実行されるケースがある。以下のムーブアウトは、キャッシュに空きがない場合と、キャッシュに空きがあって明示的に実行される場合の両者を含む。

図1に、マルチプロセッサシステムにおけるキャッシュの制御を例示する。図1のマルチプロセッサシステムは、Local−CPUとHome−CPUを有する。また、図1の例では、Local−CPUがリクエスト元であり、Home−CPUとは異なるCPUであるとする。Home−CPUは、ムーブアウト対象のデータが格納されたメインメモリを管理するCPUである。なお、図1では、省略されているが、図2のHome−CPUもLocal−CPUと同様、キャッシュ制御部を有してもよい。また、図2のLocal−CPUも、Home−CPUと同様、自身のメインメモリを管理してもよい。

リクエスト元であるLocal−CPUのキャッシュ制御部は、ムーブアウトされるデータが変更済みであれば、Home−CPUに対してデータ付きのライトバック(WRBK)のリクエストパケットを送出する。一方、ムーブアウトされるデータが変更されていなければ、Local−CPUのキャッシュ制御部は、Home−CPUに対してデータ無しフラッシュバックFLBK)のリクエストパケットを送出する。

図1のように、Home−CPUは、ライトバック(WRBK)あるいはフラッシュバック(FLBK)のリクエストパケット(WRBK/FLBK)を受けると、プロトコルチェックを行い、管理情報更新し、ライトバック(WRBK)あるいはフラッシュバック(FLBK)のコンプリート(CPLT)パケット(WRBK/FLBK−CPLT)をLocal−CPUに送出する。

図2に、Local−CPUによるWRBK/FLBKの制御を例示する。cache-coherent NonUniform Memory Access(cc−NUMA)に代表されるマルチプロセッサシス
テムにおいては、メインメモリとして使用されるDIMM上に、データと付随する形でキャッシュ持ち出し情報(ディレクトリ)が保持される。そして、Home−CPUは、メモリアクセスの際にデータとともにディレクトリを読み出しキャッシュ一貫性キャッシュコヒーレンシ)をチェックする。このようなキャッシュの制御は、ディレクトリ方式のキャッシュ一貫性制御と呼ばれる。

図2の処理では、Local−CPUは、Home−CPUに対して、WRBK/FLBKを発行し、タイマー起動する(A1)。そして、Local−CPUは、タイマーが閾値に達するまでに、Home−CPUから応答パケット(WRBK/FLBK−CPLT)を受信したか否かを判定する(A2)。A2の判定がYESの場合には、Local−CPUは、WRBK/FLBKの制御を正常終了する。一方、A2の判定がNOの場合には、Local−CPUは、Fatalエラーを検出したことをエラー制御部へ通知する(A3)。ここで、Fatalエラーは動作継続不可能なエラーである。エラー制御部は、例えば、CPUごとに設けられるCPU監視用専用プロセッサ、あるいはファームウェア等である。エラー制御部は、Fatalエラーが検出された通知を受けると、さらにCPU外部の管理装置にFatalエラーを報告する。

図3に、WRBK/FLBKのリクエストパケットを処理するHome−CPUのフローチャートを例示する。この処理では、Home−CPUは、Local−CPUからWRBK/FLBKのリクエストパケット(WRBK/FLBK)を受信する(B1)。Home−CPUは、リクエストパケット(WRBK/FLBK)を受信すると、Home−CPU上やDIMM上に格納している管理情報(ディレクトリ等)に基づくプロトコルチェックを行う(B2)。そして、プロトコルチェックでエラーがない場合には、Home−CPUはリクエストパケット(WRBK/FLBK)に対応する処理を実行する。例えば、Home−CPUはライトバックリクエストの場合には、Home−CPUはメインメモリのデータを更新し、管理情報を更新する(B3)。さらに、Home−CPUは、リクエストパケット(WRBK/FLBK)に対する処理を完了すると、Local−CPUへ応答パケット(WRBK/FLBK−CPLT)を返す(B4)。一方、プロトコルチェックでエラーがある場合には、Home−CPUはFatalエラーを検出したことをエラー制御部へ通知する(B5)。

概要

メインメモリを管理する演算処理装置とメインメモリのデータを持ち出している演算処理装置との間で間欠故障等により、キャッシュの制御に矛盾が生じた場合でも、メインメモリの管理情報を更新し、動作を継続できる可能性を高める。第1の演算処理装置は主記憶装置から第2の演算処理装置に持ち出されたデータの変更の有無を含む管理状態を示す管理情報を保持する管理情報格納部と、前記管理情報の更新を要求する更新要求を受信する受信部と、前記管理情報が示す管理状態と受信した更新要求とが所定の関係を満たすか否かを判定するチェック部と、前記更新要求にリトライを示す情報が付与され、受信した更新要求が管理状態を第1の状態から第2の状態に更新し、かつ、前記管理情報が既に第2の状態に更新済みを表す場合、第2の演算処理装置に前記更新要求が正常に終了したことを示す完了応答を送信する応答パケット送信部と、を有する。

目的

本発明は、メインメモリを管理する演算処理装置(Home−CPU)とメインメモリのデータを持ち出している演算処理装置(Local−CPU)との間で間欠故障等により、キャッシュの制御に矛盾が生じた場合でも、メインメモリの管理情報を更新し、動作を継続できる可能性を高めることを目的とする

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

主記憶装置を制御する主記憶制御装置を有する第1の演算処理装置と、前記第1の演算処理装置と接続される第2の演算処理装置とを備える情報処理装置において、前記第1の演算処理装置は前記主記憶装置から前記第2の演算処理装置に持ち出されたデータの変更の有無を含む管理状態を示す管理情報を保持する管理情報格納部と、前記管理情報の更新を要求する更新要求を受信する受信部と、前記管理情報が示す管理状態と前記受信した更新要求とが所定の関係を満たすか否かを判定するチェック部と、前記更新要求にリトライを示す情報が付与され、前記受信した更新要求が前記管理状態を第1の状態から第2の状態に更新し、かつ、前記管理情報が既に第2の状態に更新済みを表す場合、前記第2の演算処理装置に前記更新要求が正常に終了したことを示す完了応答を送信する応答パケット送信部と、を有する情報処理装置。

請求項2

前記チェック部によるチェックの結果、前記管理状態と前記受信した更新要求とが所定の基準により整合する関係にある場合、前記応答パケット送信部は、前記更新要求にリトライを示す情報が付与されているか否かに拘わらず、前記第2の演算処理装置に前記更新要求が正常に終了したことを示す完了応答を送信する請求項1に記載の情報処理装置。

請求項3

前記チェック部によるチェックの結果、前記管理状態と前記受信した更新要求とが前記所定の基準により整合する関係になく、かつ、前記受信した更新要求にリトライを示す情報が付与されていない場合には、前記応答パケット送信部は、所定の通知先エラー通知する請求項2に記載の情報処理装置。

請求項4

前記チェック部によるチェックの結果、前記管理状態と前記受信した更新要求とが前記所定の基準により整合する関係になく、前記更新要求にリトライを示す情報が付与されており、かつ、前記管理情報がすでに第2の状態に更新済みとなっていない場合には、前記応答パケット送信部は、所定の通知先にエラーを通知する請求項2または3に記載の情報処理装置。

請求項5

第2の演算処理装置と接続される第1の演算処理装置として動作する演算処理装置において、主記憶装置を制御する主記憶制御装置と、前記主記憶装置から前記第2の演算処理装置に持ち出されたデータの変更の有無を含む管理状態を示す管理情報を保持する管理情報格納部と、前記管理情報の更新を要求する更新要求を受信する受信部と、前記管理情報が示す管理状態と前記受信した更新要求とが所定の関係を満たすか否かを判定するチェック部と、前記更新要求にリトライを示す情報が付与され、前記受信した更新要求が前記管理状態を第1の状態から第2の状態に更新し、かつ、前記管理情報がすでに第2の状態に更新済みを表す場合、前記第2の演算処理装置に前記更新要求が正常に終了したことを示す完了応答を送信する応答パケット送信部と、を有する演算処理装置。

請求項6

主記憶装置を制御する主記憶制御装置を有する第1の演算処理装置と、前記第1の演算処理装置と接続される第2の演算処理装置とを備える情報処理装置の制御方法において、前記第1の演算処理装置が、前記主記憶装置から前記第2の演算処理装置に持ち出されたデータの変更の有無を含む管理状態を示す管理情報を保持し、前記管理情報の更新を要求する更新要求を受信し、前記管理情報が示す管理状態と前記受信した更新要求とが所定の関係を満たすか否かを判定し、前記更新要求にリトライを示す情報が付与され、前記受信した更新要求が前記管理状態を第1の状態から第2の状態に更新し、かつ、前記管理情報がすでに第2の状態に更新済みを表す場合、前記第2の演算処理装置に前記更新要求が正常に終了したことを示す完了応答を送信する情報処理装置の制御方法。

請求項7

前記第2の演算処理装置は、前記状態情報を更新するための更新要求を前記第1の演算処理装置に送信し、前記送信した更新要求に対する完了応答が前記第1の演算処理から得られない場合、リトライを示す情報を設定した次の更新要求を前記第1の演算処理に送信するリトライ処理を所定の限度まで繰り返す請求項6に記載の情報処理装置の制御方法。

請求項8

前記所定の限度は、前記リトライの回数、および前記第1の演算処理装置と前記第2の演算処理装置との接続状態を含む前記情報処理装置の稼働状態の少なくとも一方により判定される請求項7に記載の情報処理装置の制御方法。

技術分野

0001

本発明は、情報処理装置演算処理装置、および情報処理装置の制御方法に関する。

背景技術

0002

情報処理装置、コンピュータ等は、演算処理を実行するCPU(演算処理装置ともいう)と、Dual Inline Memory Module(DIMM)等のメインメモリを有する。コンピュータシステムでは、メインメモリはデータを格納し、CPUがメインメモリにアクセスし、データの参照、あるいはデータの書き換えを行う。

0003

メインメモリとして使用されるDIMMは読み書きが遅いため、CPUは内部にキャッシュと呼ばれる記憶媒体を備える。CPUはメインメモリのデータの一部をキャッシュに格納することで、処理対象のデータがキャッシュに存在する場合には、メインメモリまでアクセスせずにキャッシュからデータを読み、データへのアクセスを高速化する。

0004

CPUからの読み出し要求キャッシュミスした時に、要求対象のデータはキャッシュに新規登録される。しかし、キャッシュに空きがない場合、すでにキャッシュに格納されていたデータがリプレースのためムーブアウトされる。データがリプレースのためムーブアウトされるとき、キャッシュ制御部は、そのデータと制御信号を一時的に格納し、Home−CPUへ送出する制御を行う。ここで、Home−CPUは、配下にムーブアウト対象のメインメモリを持つCPUである。なお、キャッシュからデータがムーブアウトされるのは、キャッシュに空きがない時に限るものではなく、キャッシュに空きがある場合でも明示的にムーブアウトが実行されるケースがある。以下のムーブアウトは、キャッシュに空きがない場合と、キャッシュに空きがあって明示的に実行される場合の両者を含む。

0005

図1に、マルチプロセッサシステムにおけるキャッシュの制御を例示する。図1のマルチプロセッサシステムは、Local−CPUとHome−CPUを有する。また、図1の例では、Local−CPUがリクエスト元であり、Home−CPUとは異なるCPUであるとする。Home−CPUは、ムーブアウト対象のデータが格納されたメインメモリを管理するCPUである。なお、図1では、省略されているが、図2のHome−CPUもLocal−CPUと同様、キャッシュ制御部を有してもよい。また、図2のLocal−CPUも、Home−CPUと同様、自身のメインメモリを管理してもよい。

0006

リクエスト元であるLocal−CPUのキャッシュ制御部は、ムーブアウトされるデータが変更済みであれば、Home−CPUに対してデータ付きのライトバック(WRBK)のリクエストパケットを送出する。一方、ムーブアウトされるデータが変更されていなければ、Local−CPUのキャッシュ制御部は、Home−CPUに対してデータ無しフラッシュバックFLBK)のリクエストパケットを送出する。

0007

図1のように、Home−CPUは、ライトバック(WRBK)あるいはフラッシュバック(FLBK)のリクエストパケット(WRBK/FLBK)を受けると、プロトコルチェックを行い、管理情報更新し、ライトバック(WRBK)あるいはフラッシュバック(FLBK)のコンプリート(CPLT)パケット(WRBK/FLBK−CPLT)をLocal−CPUに送出する。

0008

図2に、Local−CPUによるWRBK/FLBKの制御を例示する。cache-coherent NonUniform Memory Access(cc−NUMA)に代表されるマルチプロセッサシス
テムにおいては、メインメモリとして使用されるDIMM上に、データと付随する形でキャッシュ持ち出し情報(ディレクトリ)が保持される。そして、Home−CPUは、メモリアクセスの際にデータとともにディレクトリを読み出しキャッシュ一貫性キャッシュコヒーレンシ)をチェックする。このようなキャッシュの制御は、ディレクトリ方式のキャッシュ一貫性制御と呼ばれる。

0009

図2の処理では、Local−CPUは、Home−CPUに対して、WRBK/FLBKを発行し、タイマー起動する(A1)。そして、Local−CPUは、タイマーが閾値に達するまでに、Home−CPUから応答パケット(WRBK/FLBK−CPLT)を受信したか否かを判定する(A2)。A2の判定がYESの場合には、Local−CPUは、WRBK/FLBKの制御を正常終了する。一方、A2の判定がNOの場合には、Local−CPUは、Fatalエラーを検出したことをエラー制御部へ通知する(A3)。ここで、Fatalエラーは動作継続不可能なエラーである。エラー制御部は、例えば、CPUごとに設けられるCPU監視用専用プロセッサ、あるいはファームウェア等である。エラー制御部は、Fatalエラーが検出された通知を受けると、さらにCPU外部の管理装置にFatalエラーを報告する。

0010

図3に、WRBK/FLBKのリクエストパケットを処理するHome−CPUのフローチャートを例示する。この処理では、Home−CPUは、Local−CPUからWRBK/FLBKのリクエストパケット(WRBK/FLBK)を受信する(B1)。Home−CPUは、リクエストパケット(WRBK/FLBK)を受信すると、Home−CPU上やDIMM上に格納している管理情報(ディレクトリ等)に基づくプロトコルチェックを行う(B2)。そして、プロトコルチェックでエラーがない場合には、Home−CPUはリクエストパケット(WRBK/FLBK)に対応する処理を実行する。例えば、Home−CPUはライトバックリクエストの場合には、Home−CPUはメインメモリのデータを更新し、管理情報を更新する(B3)。さらに、Home−CPUは、リクエストパケット(WRBK/FLBK)に対する処理を完了すると、Local−CPUへ応答パケット(WRBK/FLBK−CPLT)を返す(B4)。一方、プロトコルチェックでエラーがある場合には、Home−CPUはFatalエラーを検出したことをエラー制御部へ通知する(B5)。

先行技術

0011

特表平11−511634号公報

発明が解決しようとする課題

0012

ところで、マルチプロセッサシステムにおいて、演算処理装置間の間欠故障等により、送信されたパケットが消失することがあり得る。これをパケットロストと呼ぶ。上記従来の技術では、データを持ち出した演算処理装置がメインメモリを管理する演算処理装置にリクエストパケット(WRBK/FLBK)を送信する際、または、メインメモリを管理する演算処理装置がデータを持ち出した演算処理装置に応答パケット(WRBK/FLBK−CPLT)を送信する際、パケットロストへの対応が十分でなく、下記の問題点がある。
(1)メインメモリの管理情報が更新されないため、キャッシュの制御に矛盾が生じ演算処理装置は、動作を継続させることができない。
(2)メインメモリのデータを管理する演算処理装置において、メインメモリへライトバックするムーブアウトデータが失われ、演算処理装置がデータ更新に失敗する。
このうち、(2)の問題に対しては、故障固定故障ではなく間欠故障等の場合には、データを持ち出した演算処理装置が再度リクエストパケットを送信するリトライにより解決
が図られる。一方、(1)の問題については、対応が十分でない場合がある。

0013

本発明は、メインメモリを管理する演算処理装置(Home−CPU)とメインメモリのデータを持ち出している演算処理装置(Local−CPU)との間で間欠故障等により、キャッシュの制御に矛盾が生じた場合でも、メインメモリの管理情報を更新し、動作を継続できる可能性を高めることを目的とする。

課題を解決するための手段

0014

本発明の一側面は、以下の情報処理装置によって例示される。すなわち、本情報処理装置は、主記憶装置を制御する主記憶制御装置を有する第1の演算処理装置と、前記第1の演算処理装置と接続される第2の演算処理装置とを備える。この第1の演算処理装置は前記主記憶装置から前記第2の演算処理装置に持ち出されたデータの変更の有無を含む管理状態を示す管理情報を保持する管理情報格納部と、前記管理情報の更新を要求する更新要求を受信する受信部と、前記管理情報が示す管理状態と前記受信した更新要求とが所定の関係を満たすか否かを判定するチェック部と、前記更新要求にリトライを示す情報が付与され、前記受信した更新要求が前記管理状態を第1の状態から第2の状態に更新し、かつ、前記管理情報が既に第2の状態に更新済みを表す場合、前記第2の演算処理装置に前記更新要求が正常に終了したことを示す完了応答を送信する応答パケット送信部と、を有する。

発明の効果

0015

本演算処理装置によれば、メインメモリを管理する演算処理装置とメインメモリのデータを持ち出している演算処理装置との間で間欠故障等により、キャッシュの制御に矛盾が生じた場合でも、メインメモリの管理情報を更新し、動作を継続できる可能性を高めることができる。

図面の簡単な説明

0016

マルチプロセッサシステムにおけるキャッシュの制御を例示する図である。
Local−CPUによるWRBK/FLBKの制御を例示する図である。
リクエストパケット(WRBK/FLBK)を処理するHome−CPUの処理を例示するフローチャートである。
Local-CPUからHome-CPUへの経路でのパケットロストとリトライによる解決方法を例示する図である。
Home-CPUからLocal-CPUへの経路でのパケットロストとリトライ時の課題を例示する図である。
比較例のHome-CPUでの処理のフローチャートである。
リクエストパケット処理時のエラーの有無のケースおよびエラーの分類を例示する図である。
情報処理装置の構成を例示する図である。
WRBK/FLBKロストケースの処理を例示する図である。
WRBK/FLBK−CPLTロストケースの処理を例示する図である。
Local−CPUとHome−CPUを含む情報処理装置の処理のフローチャートを例示する図である。
Local−CPUの処理のフローチャートを例示する図である。
Home−CPUの処理のフローチャートを例示する図である。
エラーの分類を例示する図である。
Local−CPUの処理を実行する制御回路を例示する図である。
Home−CPUの処理を実行する制御回路を例示する図である。

実施例

0017

以下、図面を参照して一実施形態に係る情報処理装置について説明する。

0018

[比較例]
図4から図7により、比較例に係るコンピュータについて説明する。比較例では、コンピュータは、Local−CPUと、Home−CPUを有する。図4の例では、Home−CPUは、ムーブアウト対象のデータが格納されたメインメモリを管理するCPUである。また、Local−CPUは、Home−CPUが管理するメインメモリから、データを持ち出し、Local−CPU内のキャッシュに保持していると仮定する。さらに、図4以下では、省略されているが、Home−CPUもLocal−CPUと同様、キャッシュ制御部を有する。また、図4以下のLocal−CPUも、Home−CPUと同様、自身のメインメモリを管理する。従来の構成では、Local−CPUがリクエストパケット(WRBK/FLBK)をHome−CPUに送信する際、または、Home−CPUが応答パケット(WRBK/FLBK−CPLT)をLocal−CPUに送信する際、パケットロストへの対応が十分でない。パケットロストへの改善として、送信したパケットを単純にもう一度送信(リトライ)することが考えられる。なお、WRBK/FLBKは、ライトバックまたはフラッシュバックを表す。

0019

図4は、Local-CPUからHome-CPUへの経路でのパケットロスト(以下、WRBK/FLBKロストケース)とリトライによる解決方法を例示する図である。図4では、Local-CPUのキャッシュ制御部は、WRBKのリクエストパケットまたは
FLBKのリクエストパケットをHome−CPUに送信する。しかし、図4では、Local-CPUからHome-CPUに至る経路上で、WRBK/FLBKのリクエストパケットが消失、すなわち、パケットロストが発生している。

0020

図4の例では、Home-CPUには、リクエストパケットが届かないため、Home-CPUは何も実行しない。すなわち、Home-CPUは、管理情報を用いたプロコトル
チェック等の処理、あるいは、プロコトルチェックの結果に基づく応答パケットの送信等を実行しない。一方、Local-CPUのキャッシュ制御部は、タイマーを起動し、応
答パケットを待つ。しかし、Home-CPUからは応答パケットが送信されないため、
Local-CPUでは、タイムアウトが発生する。

0021

比較例のコンピュータでは、リクエストパケットに対するタイムアウトが発生すると、Local-CPUのキャッシュ制御部はリトライを実行する。すなわち、キャッシュ制
御部は、再度WRBK/FLBKのリクエストパケットにリトライフラグを設定して送信する。リトライフラグは、例えば、初回発行時:0、リトライ発行時:1等のような1bitの情報である。

0022

仮に、タイムアウトを発生させたリクエストパケット(WRBK/FLBK)のパケットロストの原因が間欠的なもの、あるいは、一時的なものである場合には、リトライにより、リクエストパケット(WRBK/FLBK)がHome-CPUに到達する。

0023

すると、Home-CPUは、リクエストパケット(WRBK/FLBK)を受け取る
。Home-CPUは、Local-CPUにおいてタイムアウトが発生した時のリクエストパケット(WRBK/FLBK)を受け取っていないため、リトライによるリクエストパケット(WRBK/FLBK)にしたがって、プロトコルチェックを行い、メインメモリの更新あるいは管理情報の更新等の処理を実行すればよい。そして、Home-CPU
は、処理完了後に、応答パケット(WRBK/FLBK−CPLT)をLocal−CPUに送信すればよい。

0024

図5は、Home-CPUからLocal-CPUへの経路でのパケットロスト(以下、
WRBK/FLBK-CPLTロストケース)とリトライ時の課題を例示する図である。
図5の例では、リクエストパケット(WRBK/FLBK)がHome-CPUに到達し
、Home-CPUは、プロトコルチェックを行い、メインメモリの更新あるいは管理情
報を更新し、応答パケット(WRBK/FLBK−CPLT)をLocal-CPUに送
信している。しかし、Home-CPUからLocal-CPUに至る経路上で、応答パケット(WRBK/FLBK−CPLT)が消失し、応答パケットのパケットロストが発生している。図5の場合も、図4の場合と同様、Local-CPUでは、タイムアウトが
発生する。

0025

応答パケットが消失した場合にも、Local-CPUのキャッシュ制御部は、再度リ
クエストパケット(WRBK/FLBK)を送信する。ただし、Home-CPUでは、
リクエストパケット(WRBK/FLBK)に対する処理がすでに完了している。このため、Home-CPUは、リトライによるリクエストパケット(WRBK/FLBK)を
受け取っても、リクエストパケット(WRBK/FLBK)と現在の管理情報との間に矛盾があり、プロトコルチェックを正常に実行できない。したがって、WRBK/FLBK-CPLTロストケースケースでは、プロトコルチェックを正常に実行し、管理情報を本
来の正常な状態に戻す上で、課題がある。

0026

図6に、比較例のHome-CPUでの処理のフローチャートを例示する。この処理で
は、Home-CPUは、Local-CPUからリトライではない、通常処理のリクエストパケット(WRBK/FLBK)を受信する(C1)。次に、Home-CPUは、管
理情報に基づくプロトコルチェックでエラーの有無を判定する(C2)。なお、C2の判定は、従来から行われている、プロトコルチェックであり、例えば、Modified、Exclusive、Shared、Invalid(MESI)プロトコルによるチェックをいう。MESIプロトコルによるチェックでは、例えば、Home-CPUで、L
ocal-CPUがキャッシュにShared(S)で持ち出したデータに対して、WR
BKによるライトバック要求を受信するとエラーと判断できる。なお、本実施形態において、従来から行われているプロトコルチェックは、MESIプロトコルによるチェックに限定されない。例えば、従来のプロトコルチェックは、Exclusive状態を持たないキャッシュプロトコルであるMSIプロトコルによるチェックでもよい。また、従来のプロトコルチェックは、MSIプロトコルにOwned状態を加えたMOSIプロトコルによるチェックでもよい。さらに、従来のプロトコルチェックは、MESIプロトコルにOwned状態を加えたMOESIプロトコルによるチェックでもよい。本実施形態においては、以上例示したようなC2の判定で用いられるプロトコルチェックを従来のプロトコルチェックと呼ぶ。

0027

C2の判定で、プロトコルチェックにエラーがない場合、Home-CPUは、リトラ
フラグの値に依存せず、WRBK/FLBKにしたがって処理を実行すればよい(C3)。すなわち、Home-CPUは、WRBKのリクエストパケットに対して、メイン
モリのデータと、管理情報を更新する。また、Home-CPUは、FLBKリクエスト
パケットに対して、メインメモリのデータを更新しないで、管理情報を更新する。さらに、Home-CPUは、Local-CPUへ応答パケット(WRBK/FLBK-CPL
T)を送信する(C4)。C4では、Home-CPUは、受信したリクエストパケット
(WRBK/FLBK)のリトライフラグ(0、1)と同じ値のリトライフラグを付与して、応答パケット(WRBK/FLBK-CPLT)を送信する。したがって、C2の判
定でプロトコルエラーがない場合には、リトライフラグの設定いかんによらず、処理は正常終了となる。

0028

一方、C2の判定で、プロトコルチェックにエラーがある場合、Home-CPUは、
リクエストパケット(WRBK/FLBK)のリトライフラグが0か否かを判定する(C
5)。C5の判定でリトライフラグが0、すなわち、リクエストパケットがリトライではない場合には、Home-CPUは、Fatalエラーを検出したことをエラー制御部へ
通知する(C6)。エラー制御部はFatalエラーに対応する報告を例えば、管理コンピュータに送信する。したがって、C5でリトライフラグが0ある場合には、処理はFatalエラーの送信という結果となる。
さらに、C5の判定で、リトライフラグが1、すなわち、リクエストパケットがリトライである場合には、Home-CPUは、Fatalエラーか否かの判定ができない(C7
)。本実施の形態において、Fatalエラーではないエラーとは、救済可能なエラーであり、擬似エラーと呼ぶ。仮に、Home-CPUは、Fatalエラーを検知できれば
、C6の処理に進めればよい。また、Home-CPUは、擬似エラーを検知できれば、
リクエストパケット(WRBK/FLBK)に対応する処理を実行し(C8)、Local-CPUへ応答パケット(WRBK/FLBK-CPLT)を送信すればよい。

0029

図7は、リクエストパケット処理時のエラーの有無のケースおよびエラーの分類を例示する図である。従来のMESIプロトコル等にしたがったプロトコルチェックでエラーがない場合には、比較例のLocal-CPUとHome-CPUとの間のリクエストパケットにおいても、エラー無しとなる。ただし、エラー無しであっても、比較例のコンピュータでは、リトライフラグ=0の場合(リトライでない場合)と、リトライフラグ=1の場合(リトライである場合)があり得る。すなわち、リクエストパケット(WRBK/FLBK)がLocal-CPUからHome-CPUに至る経路でパケットロストとなると、リクエストパケットはHome-CPUには到達しない。したがって、Local-CPUがリトライでリクエストパケット(WRBK/FLBK)を再度送信し、リクエストパケットがHome-CPUに到達すると、リクエストパケットは、Home-CPUにとっては、リトライフラグが設定されている点を除外して、正常なパケットである。したがって、従来のプロトコルチェックでエラー無しのリクエストパケットは、リトライの有無によらず、正常なものとして処理される。

0030

一方、従来のMESI等のプロトコルチェックでエラー有りの場合には、エラーがFatalエラーである場合と、救済可能な擬似エラーの場合があり得る。従来のMESI等のプロトコルチェックでエラー有りの場合とは、例えば、現在、Home-CPUに保持
されているMESIの情報に対して、整合性のとれないリクエストパケットをHome-
CPUが受信した場合である。以下、擬似エラーとFatalエラーを個別に検討する。(A)応答パケットのロストによるエラー(擬似エラー)
整合性のとれないリクエストパケットが発生する例としては、すでに、Home-CP
Uにおいて処理済みのリクエストパケットに対する応答パケット(WRBK/FLBK-
CPLT)がHome-CPUからLocal-CPU至る経路でパケットロストとなった場合が想定できる。

0031

このような応答パケットのロストでは、Home-CPUにおいてリクエストパケット
に対する処理が正常に終了しているにも拘わらず、応答パケットがLocal-CPUに
到達していない。このため、Local-CPUは、Home-CPUでの状態が不明なまま、リトライ処理を実行することになる。この場合には、Home-CPUでのリクエス
トパケットの処理が正常に終了したにも拘わらず、次のリクエストパケットの処理で、リクエストパケットと管理情報との矛盾が生じることがある。このようなエラーは、過去のリクエストパケットに対するHome-CPUでの処理が正常に完了していることから、
擬似エラーと呼ぶことができる。

0032

しかし、比較例のコンピュータのように、単に、リトライフラグを設定して、Local-CPUがリクエストパケットを送信しただけでは、リクエストパケットと管理情報と
の矛盾は解消できない。したがって、比較例の処理では、応答パケットのロストによる管
理情報の不整合は解消できない。
(B)応答パケットのロスト以外の原因によるエラー(Fatalエラー)
応答パケットのロスト以外にも様々な原因でプロトコルチェックのエラーは発生し得る。例えば、I(Invalid)、S(Shared)等の状態でキャッシュに持ち出しているLocal-CPUが、Home−CPUに対してライトバック(WRBK)パケ
ットを送信した場合である。このような応答パケットのロスト以外の原因によるエラーの場合には、比較例のHome-CPUは、Fatalエラーを検出する。

0033

しかしながら、比較例のHome-CPUは、上記(A)応答パケットのロストによる
エラーと(B)応答パケットのロスト以外の原因によるエラーを区別することができない。

0034

[実施形態]
以下、実施形態に係る情報処理装置について説明する。本実施形態では、Local−CPUのキャッシュ制御部がリクエストパケット(WRBK/FLBK)にリトライフラグ(1bit)を設定し、Home-CPUに発行するとともにタイマーを起動する。発
行されたリクエストパケットへの応答パケット(WRBK/FLBK−CPLT)の受信前にタイマーが規定値を超えた場合、Local−CPUはパケットロストが発生したと判断する。さらに、Local−CPUは、パケットロストの原因がHome-CPUの
固定故障、あるいは経路の固定故障等であるか否かを判定する。そして、Local−CPUは、パケットロストが固定故障によるものではなく、一時的な間欠故障等によるものであると判断した場合には、リクエストパケットを再発行する。リクエストパケットの再発行は、リトライとも呼ばれる。なお、パケットロストが固定故障によるものであるとLocal−CPUが判断した場合、リトライは行わない。固定故障時は、リトライしても再び失敗するからである。

0035

リトライによるリクエストパケット(WRBK/FLBK)が送信される場合、Home−CPUのリクエストパケット(WRBK/FLBK)に対応する処理が既に実行済みのケースと未実行のケースがある。Home−CPUは、Local−CPUから受信したリクエストパケット(WRBK/FLBK)と管理情報とのプロトコルチェックにより、上記処理が実行済みか否かを区別して、実行済みの場合にはリクエストパケット(WRBK/FLBK)に対応する処理を実行せず、未実行の場合はリクエストパケット(WRBK/FLBK)に対応する処理を実行する。Home−CPUは第1の演算処理装置の一例である。Local−CPUは、第2の演算処理装置の一例である。

0036

図8に、本実施形態に係る情報処理装置の構成を例示する。本情報処理装置は、マルチプロセッサシステムということができる。本情報処理装置は、複数のCPU1と、複数のメインメモリ2を有する。CPU1が演算処理装置の一例である。複数のCPU1と、複数のメインメモリ2は、個別には、CPU1−0、1−1、...、1−n、メインメモリ2−0、2−1、...、2−n等のように呼ぶことにする。メインメモリ2は、例えば、複数のDual Inline Memory Module(DIMM)を含む。CPU1間は、クロスバ
SI等のネットワークインターコネクトで接続される。図8では、複数のCPU1は直列的に接続されているが、CPU1間のトポロジーは線状に限定される訳ではない。トポロジーとしては、バスメッシュトーラス等様々なものが適用可能である。CPU1−0、1−1、...、1−nのいずれか1つが第1の演算処理装置、第2の演算処理装置の一例である。例えば、CPU1−1は、第1の演算処理装置と接続される第2の演算処理装置の一例である。メインメモリ2−1は、主記憶装置の一例である。

0037

各CPU1は、コア11、キャッシュ12、キャッシュ制御部13、メモリ制御部14を有する。また、コア11、キャッシュ12、キャッシュ制御部13、メモリ制御部14
は、個別には、コア11−0、11−1、...、11−n、キャッシュ12−0、12−1、...、12−n、キャッシュ制御部13−0、13−1、...、13−n、メモリ制御部14−0、14−1、...、14−n等のように呼ぶことにする。コア11またはCPU1は、プロセッサ、演算処理装置とも呼ばれる。

0038

コア11は、CPU1の制御、データ処理を実行する。キャッシュ12は、メインメモリ2上のデータを一時的に格納する。キャッシュ制御部13は、キャッシュ12のデータを管理し、他のCPU1とデータを授受する。メモリ制御部14は、メインメモリ2にアクセスし、メインメモリ2との間でデータの読み書きを実行する。なお、以下の実施形態では、CPU1−0、1−1、...、1−nのいずれかがLocal−CPUとHome−CPUになり得る。メモリ制御部14−1は、主記憶制御装置の一例である。

0039

図9に、WRBK/FLBKロストケースの処理を例示する。WRBK/FLBKロストケースは、Local−CPUからHome−CPUに至る経路でパケットロストが発生した場合である。WRBK/FLBKロストケースでは、Home−CPUはリクエストパケット(WRBK/FLBK)を受信していないため、比較例の場合(図4)の場合と同様、何も実行しない。したがって、Local−CPUではタイムアウトが発生する。すると、Local−CPUはパケットロストが発生したと判断する。さらに、Local−CPUはパケットロストの原因が固定故障か、一時的な間欠故障かを判定する。そして、Local−CPUはパケットロストの原因が一時的な間欠故障であると判断した場合には、リトライを実行する。Home−CPUはリトライによるリクエストパケット(WRBK/FLBK)を受信すると、通常ケースと同じ動作を実行し、Local−CPUへ応答パケット(WRBK/FLBK−CPLT)を送信する。

0040

図10に、WRBK/FLBK−CPLTロストケースの処理を例示する。WRBK/FLBK−CPLTロストケースは、Home−CPUからLocal−CPUに至る経路でパケットロストが発生した場合である。WRBK/FLBK−CPLTロストケースでは、Home−CPUはリクエストパケット(WRBK/FLBK)を受信しているため、通常ケースと同じ動作を正常に実行済みである。

0041

本実施形態では、リクエストパケット(WRBK/FLBK)に対する処理を実行済みであるにも拘わらず、Home−CPUがリトライパケットを受信すると、Home−CPUは、通常ケースと同じ動作を実行しない。すなわち、Home−CPUはリクエストパケットに対応する処理を実行せずに、Local−CPUへ応答パケット(WRBK/FLBK−CPLT)を送信する。

0042

図11に、Local−CPUとHome−CPUを含む情報処理装置の処理のフローチャートを例示する。以下、図11図12図13は、情報処理装置の処理の手順を例示するが、本実施形態の情報処理装置において、各処理は、基本的には専用のハードウェア回路図15図16参照)が実行する。ただし、図11図12図13の一部をプロセッサがコンピュータプログラムにしたがって実行してもよい。

0043

図11の処理では、Local−CPUは、リトライフラグを設定し、Home−CPUに対して、リクエストパケット(WRBK/FLBK)を発行する。さらに、Local−CPUは、タイマーを起動する(L0)。第1回目のリクエストパケット(WRBK
/FLBK)発行時には、Local−CPUは、リトライフラグを0に設定する。また、第1回目のリクエストパケット(WRBK/FLBK)においてタイムアウトが発生し
た後の次のリクエストパケット(WRBK/FLBK)発行時には、Local−CPUは、リトライフラグを1に設定する
Home−CPUは、Local−CPUからリクエストパケット(WRBK/FLB
K)を受信する(H1)。そして、Home−CPUは、Home−CPUの管理情報に基づいてLocal−CPUから受信したリクエストパケット(WRBK/FLBK)のプロトコルチェックを行う(H2)。H2のプロトコルチェックとは、従来のプロトコルチェックであり、例えば、MESIプロトコルによるチェック、MSIプロトコルによるチェック、MOSIプロトコルによるチェック、MOESIプロトコルによるチェック等である。

0044

H2のプロトコルチェックでエラー無しの場合、Home−CPUは、リクエストパケット(WRBK/FLBK)に対応する処理を実行する(H3)。例えば、Home−CPUは、WRBKリクエストに対してメインメモリ上のデータと管理情報を更新する。また、例えば、Home−CPUは、FLBKリクエストに対して管理情報を更新する。H2のプロトコルチェックでエラー無しは、チェック部によるチェックの結果、前記管理状態と前記受信した更新要求とが所定の基準により整合する関係にあることの一例である。H3の処理は、主記憶装置のデータ書き換え指示を含むときに、前記主記憶装置のデータを書き換えるデータ更新部の処理の一例である。

0045

そして、Home−CPUは、Local−CPUへ応答パケット(WRBK/FLBK−CPLT)を送信する(H4)。応答パケットのリトライフラグには、受信したリクエストパケット(WRBK/FLBK)と同じ値が設定される。そして、Home−CPUは、処理を正常終了する。H4の処理は、第2の演算処理装置に前記更新要求が正常に終了したことを示す完了応答を送信することの一例である。また、H4の処理は、応答パケット送信部が前記更新要求にリトライを示す情報が付与されているか否かに拘わらず、前記第2の演算処理装置に前記更新要求が正常に終了したことを示す完了応答を送信することの一例でもある。

0046

一方、H2のプロトコルチェックでエラー有りの場合で(H2でNO)、かつ、Local−CPUから受信したリクエストパケット(WRBK/FLBK)内のリトライフラグが0の場合には(H5でYES)、Home−CPUは、致命的なプロトコル矛盾が生じたと判断し、Fatalエラーをエラー制御部へ通知し、処理を異常終了する。ここで、Fatalエラーは動作継続不可能なエラーである。H2のプロトコルチェックでエラー有りの場合は、チェック部によるチェックの結果、前記管理状態と前記受信した更新要求とが前記所定の基準により整合する関係にないことの一例である。H5でYESの場合が、受信した更新要求にリトライを示す情報が付与されていない場合の一例である。

0047

さらに、H2のプロトコルチェックでエラー有りの場合で(H2でNO)、かつ、Local−CPUから受信したリクエストパケット(WRBK/FLBK)内のリトライフラグが1の場合には(H5でNO)、FatalエラーとWRBK/FLBK−CPLTロストケースによる擬似エラーの2通りが考えられる。H5でNOの場合は、更新要求にリトライを示す情報が付与されていることの一例である。

0048

本実施形態では、Home−CPUは、初回パケット受信時のリクエストパケット(WRBK/FLBK)に対する処理が処理済みか否かを判定する(H6)。初回パケットとは、現在処理中のリクエストパケット(WRBK/FLBK)が第2回目以降のリクエストパケット(WRBK/FLBK)受信であった場合の前回以前受信済み同一リクエストパケット(WRBK/FLBK)をいう。

0049

H6の判定で処理済みの状態であれば、Home−CPUは、「WRBK/FLBK−CPLTロストケース」であると判断する。すなわち、Home−CPUは、(a)H2のプロトコルチェックでエラーがある(b)Local−CPUから受信したリクエストパケット(WRBK/FLBK)内のリトライフラグが1である(c)初回パケット受信
による処理が完了済みである、という3つの条件が充足されると、検出したエラーは実際には問題がないので無視する。エラーを無視する場合、Home−CPUは何も実行せずに、Local−CPUへ応答パケット(WRBK/FLBK−CPLT)を送信する(H4)。応答パケットのリトライフラグは、受信したWRBK/FLBKと同じ値が設定される。そして、Home−CPUは処理を正常終了とする。ここで、上記(a)(b)(c)の条件が充足される場合のエラーは、疑似エラーと呼ぶことにする。H6の判定で処理済みの状態であることは、受信した更新要求が前記管理状態を第1の状態から第2の状態に更新するものであり、かつ、管理情報がすでに第2の状態に更新済みとなっている場合の一例である。

0050

一方、H6の処理で初回パケット受信時のリクエストパケットに対する処理が処理済みでない場合(H6でNO)、Home−CPUは、検出したエラーは想定外の事象であると判定する。そして、Home−CPUは、Fatalエラーをエラー制御部へ通知して、処理を異常終了する。異常終了を含むHome−CPUの処理の詳細は図14にしたがって後述する。

0051

Local−CPUは、タイマーが閾値に達するまでに、Home−CPUから応答パケット(WRBK/FLBK−CPLT)を受信したか否かを判定する(L3)。Local−CPUは、応答パケット(WRBK/FLBK−CPLT)を受信できなかった場合、エラー処理を実行する(L2)。そして、リトライ可能な場合には、Local−CPUは、制御をL0に戻す。一方、L3の判定で、Local−CPUは、応答パケット(WRBK/FLBK−CPLT)を受信できた場合には、終了処理を実行する(L4)。L2およびL4の処理を含むLocal−CPUの処理の詳細は図12にしたがって後述する。

0052

図12に、Local−CPUの処理のフローチャートを例示する。この処理では、Local−CPUは、まず、リクエストパケット(WRBK/FLBK)内のリトライフラグを値0に設定する(L11)。次に、Local−CPUは、Home−CPUに対して、リクエストパケット(WRBK/FLBK)を発行するとともに、タイマーを起動する(L12)。そして、図11で説明したように、Local−CPUは、タイマーが閾値に達するまでに、Home−CPUから応答パケット(WRBK/FLBK−CPLT)を受信したか否かを判定する(L13)。

0053

Home−CPUから応答パケット(WRBK/FLBK−CPLT)を受信できた場合、Local−CPUは、リクエストパケット(WRBK/FLBK)に設定したリトライフラグと応答パケット(WRBK/FLBK−CPLT)から得られたリトライフラグが一致しているか否かを判定する(L14)。そして、L14の判定で、両方のリトライフラグが一致する場合には、Local−CPUは、処理を正常終了する。一方、L14の判定で、両方のリトライフラグが一致しない場合には、Local−CPUは、Fatalエラーを検出したことをエラー制御部(図15参照)へ通知し、処理を異常終了する(L17)。

0054

Home−CPUから応答パケット(WRBK/FLBK−CPLT)を受信していない場合、Local−CPUは、パケットロストの原因を判定する(L15)。すなわち、(i)パケットロストの原因はHome−CPUの固定故障、経路の固定故障等である、(ii)パケットロストの原因は一時的な間欠故障であって、故障はリトライで復帰可能なものである、という2つを選択的に判断する。

0055

CPU間経路の断線やCPU故障等、リトライしても解決しないケースがあるので、リトライで復帰可能なケースか否かが判定される。判定方法には様々な方法が考えられるが
、例えば、Local−CPUは、下記の条件(1)から(3)のいずれかに該当する時にはリトライを実行すればよい。
(1)第1は新規にエラー検出した場合である。
(2)第2はリトライ回数カウントし、閾値に達するまでのエラーの場合である。
(3)第3はCPU間経路が冗長化されている場合で、現時点冗長経路縮退シーケンス実行時に該当する場合である。縮退シーケンス実行時には、一時的にパケットロストが起きる可能性があるからである。

0056

リトライか否かに応じて、Home−CPUが動作を変更することを可能にするために、Local−CPUは、リクエストパケット(WRBK/FLBK)にリトライフラグを設定する。すなわち、Local−CPUは、リクエストパケット(WRBK/FLBK)を第1回目に送信する時には、リトライフラグを0とし、リトライで送信する時にはリトライフラグを1に設定する。

0057

以上の判断の結果、Local−CPUは、(ii)のように、パケットロストの原因が一時的な間欠故障であると判断した場合には、リトライフラグを1に設定し(L16)、処理をL12に戻す。Local−CPUが、L15の判定で、リトライで復帰可能なケースと判定し、L16の処理を実行することが、リトライを示す情報を設定した次の更新要求を前記第1の演算処理に送信するリトライ処理を所定の限度まで繰り返すことの一例である。また、L15の判定で、上記(1)から(3)を判定することが、リトライの回数、および前記第1の演算処理装置と第2の演算処理装置との接続状態を含む前記情報処理装置の稼働状態の少なくとも一方により判定することの一例である。上記「縮退シーケンス実行」は、第1の演算処理装置と第2の演算処理装置との接続状態を含む前記情報処理装置の稼働状態の一例である。一方、Local−CPUは、(i)のように、パケットロストの原因が固定故障であると判断した場合には、例えば、Home−CPUが固定故障したことをエラー制御部へ通知し(L18)、処理を異常終了する。

0058

図13に、Home−CPUの処理のフローチャートを例示する。図13において、H1からH6の処理は、図11のH1からH6と同様であるので、その説明を省略する。H5の判定で、リクエストパケット(WRBK/FLBK)に設定されたリトライフラグが0の場合には、Home−CPUは、Fatalエラーを検出したことをエラー制御部(図16参照)へ通知し(H7)、処理を異常終了する。リトライフラグが0の場合は、受信した更新要求にリトライを示す情報が付与されていない場合の一例である。H7の処理は、所定の通知先にエラーを通知することの一例である。

0059

また、H2のプロトコルチェックでエラー有りの場合で(H2でNO)、かつ、Local−CPUから受信したリクエストパケット(WRBK/FLBK)内のリトライフラグが1の場合で(H5でNO)には、Home−CPUはH6の判定を実行する。すなわち、H6の判定で初回パケット受信時のリクエストパケット(WRBK/FLBK)に対する処理が処理済みでない場合(H6でNO)、図11で説明したように、Home−CPUは、検出したエラーは想定外の事象であると判定する。そして、Home−CPUは、Fatalエラーをエラー制御部へ通知して(H7)、処理を異常終了する。H7の処理は、応答パケット送信部が所定の通知先にエラーを通知することの一例である。

0060

一方、H6の判定で初回パケット受信時のリクエストパケットに対する処理が処理済みである場合(H6でYES)、Home−CPUは、リクエストパケット(WRBK/FLBK)に対応する処理の実行をスキップする。すなわち、Home−CPUは、メインメモリ上のデータの更新、管理情報の更新等をスキップする(H8)。そして、Home−CPUは、応答パケット(WRBK/FLBK−CPLT)のリトライフラグに受信したリクエストパケット(WRBK/FLBK)と同じ値を設定し、Local−CPUに
送信し(H9)、処理を正常終了する。H9の処理は、第2の演算処理装置に前記更新要求が正常に終了したことを示す完了応答を送信することの一例である。

0061

図14に、本実施形態のエラーの分類を例示する。図14では、図7の分類において「従来のプロトコルチェックでエラー有り」とされていた分類がさらに2分類されている。すなわち、図14の分類では、新たに、「パケット受信では起こり得ない状態」が追加されている。ここで、「パケット受信では起こり得ない状態」とは、上記「(2)応答パケットのロスト以外の原因によるエラー(Fatalエラー)」で例示した状態である。例えば、I(Invalid)、S(Shared)等の状態でメモリ2のデータをキャッシュ12に持ち出しているLocal-CPUがライトバック(WRBK)パケットを送
信した場合である。このようなFatalエラーは、リトライフラグの値(0、1)のいずれにおいても発生し得る。また、このようなFatalエラーは、Home−CPUが初回のリクエストパケットを受信した場合、リトライによる再度のリクエストパケットを受信した場合の両方で生じ得る。なお、WRBKロストケースの場合には、Home−CPUは初回のリクエストパケットをリトライフラグ=1の設定で受信することが有り得る。

0062

また、「従来のプロトコルチェックでエラー有り」とされていた分類で、「パケット受信では起こりえない状態」以外の分類では、さらに2つの場合を含む。すなわち、第1はリトライフラグ:0のときのFatalエラーである。また、第2はリトライフラグ:1のときの擬似エラーである。リトライフラグ:1のときの擬似エラーは、応答パケット(WRBK/FLBK−CPLT)ロストケースで発生する。本実施形態のHome−CPUは、リトライフラグ:1のときの擬似エラーを検出できる。すなわち、MESIプロトコル等の従来のプロトコルチェックでエラー有りの場合、本実施形態のHome−CPUは、図13のH6の判定で例示したように、リトライフラグ=1の場合に、Fatalエラーと疑似エラー(WRBK/FLBK−CPLTロストケース)を区別できる。

0063

図15に、Local−CPUの処理を実行する制御回路を例示する。また、図16に、Home−CPUの処理を実行する制御回路を例示する。ただし、図8で説明したように、CPU1は、Local−CPUにも、Home−CPUにもなり得るため、各CPU1は、図15図16の両方の回路を有してよい。すなわち、図15は、CPU1の処理回路のうち、Local−CPUの処理を実行する制御回路の部分を例示したものである。また、図16は、CPU1の処理回路のうち、Home−CPUの処理を実行する制御回路の部分を例示したものである。

0064

図15では、Local−CPUのキャッシュ制御部13とエラー制御部3—Lが例示されている。キャッシュ制御部13は、制御情報格納部131、データ格納部132、リクエストパケット送信部133、応答パケット受信部134、タイムアウト検出部135、プロトコルチェック部136、リトライ可否判定部137、固定故障通知部138を有する。

0065

制御情報格納部131は、コア11からの指令にしたがったキャッシュ制御を実行するための制御情報を格納する。データ格納部132は、例えばメインメモリ2へ書き戻すキャッシュのデータを格納する。リクエストパケット送信部133は、制御情報格納部131からリトライフラグを含む制御情報を取り出す。また、リクエストパケット送信部133は、Home−CPUに送信するリクエストパケットがWRBK等のHome−CPUのメインメモリ2へのデータを伴うリクエストパケットの場合には、データ格納部132からデータを取り出す。そして、リクエストパケット送信部133は、リトライフラグを含むリクエストパケット(WRBK/FLBK)を生成し、Home−CPUへ送信する。

0066

応答パケット受信部134は、リクエストパケット(WRBK/FLBK)を受信したHome−CPUが生成する応答パケット(WRBK/FLBK−CPLT)を受信する。

0067

タイムアウト検出部135は、リクエストパケット(WRBK/FLBK)を送信すると、タイマーを起動し、応答パケット(WRBK/FLBK−CPLT)を受信するとタイマーをクリアする。応答パケット(WRBK/FLBK−CPLT)受信前にタイマーが設定されている閾値に達すると、タイムアウト検出部135は、タイムアウトを検出する。

0068

プロトコルチェック部136は、Home−CPUから受信した応答パケット(WRBK/FLBK−CPLT)のリトライフラグと制御情報格納部131のリトライフラグを比較してプロトコルチェックを行う。そしてプロトコルチェックの結果、2つのリトライフラグが一致する場合には、プロトコルチェック部136は、エラー無し、と判定する。また、2つのリトライフラグが不一致の場合には、プロトコルチェック部136は、Fatalエラーと判定し、Fatalエラーをエラー制御部3−Lへ通知する。例えば、プロトコルチェック部136は、エラー制御部3−Lの所定のレジスタエラービットをセットする。

0069

リトライ可否判定部137はタイムアウト検出時、リトライ可否判定情報を参照する。リトライ可否判定情報とは、例えば、CPU毎の固定故障を示すレジスタ、CPU間で故障が発生したことを示す外部からの通知信号等のことである。宛先となるHome−CPUの固定故障あるいは経路の固定故障のためリトライ不可能と判定すると、リトライ可否判定部137は、宛先となるHome−CPUが固定故障したことを固定故障通知部138に伝達する。リトライ可否判定部137はリトライ可能と判定すると、制御情報格納部にリトライフラグをセットし、パケット再発行制御を開始する。固定故障通知部138は、リトライ不可能の場合、Home−CPUが固定故障したものと判定し、Home−CPUが固定故障したことをエラー制御部3−Lへ通知する。

0070

エラー制御部3−Lは、キャッシュ制御部13を含むLocal−CPU内全体でハードウェアが検出したエラーを収集し、エラー制御を行う。例えば、エラー制御部3—Lは、複数のCPU1を含む情報処理装置を管理する管理装置にエラーの発生、エラーの発生箇所、エラーの種別、エラーの原因等を通知する。

0071

図16では、Home−CPUのメモリ制御部14とエラー制御部3—Hが例示されている。メモリ制御部14は、リクエストパケット受信部141、管理情報格納部142、プロトコルチェック部143、管理情報更新部144、メインメモリデータ更新部145、および応答パケット送信部146を有する。

0072

リクエストパケット受信部141は、Local−CPUが送信したリクエストパケット(WRBK/FLBK)を受信する。リクエストパケット受信部141は、管理情報の更新を要求する更新要求を受信する受信部の一例である。管理情報格納部142は、メインメモリ2のデータの持ち出しに関する管理情報を格納する。管理情報格納部142は、第2の演算処理装置に持ち出されたデータの変更の有無を含む管理状態を示す管理情報を保持する管理情報格納部の一例である。プロトコルチェック部143は、Local−CPUから受信したリクエストパケット(WRBK/FLBK)と管理情報格納部142の管理情報を比較してプロトコルチェックを行う。プロトコルチェック部143は、プロトコルチェックにより、Fatalエラー、リトライパケットにおける疑似エラー、エラー無し、のいずれかを判定する。プロトコルチェック部143は、管理情報が示す管理状態
と前記受信した更新要求とが所定の関係を満たすか否かを判定するチェック部の一例である。

0073

管理情報更新部144は、リクエストパケット(WRBK/FLBK)がプロトコルチェック部143でエラー無しの場合、管理情報を更新する。メインメモリデータ更新部145は、データ付きのリクエストパケット(WRBK)がプロトコルチェック部143でエラー無しの場合、メインメモリ上のデータを更新する。管理情報更新部144は、「所定の基準により整合する関係にある前記更新要求が前記主記憶装置のデータ書き換え指示(WRBK)を含むときに、前記主記憶装置のデータを書き換えるデータ更新部」の一例である。応答パケット送信部146は、リクエストパケット(WRBK/FLBK)がプロトコルチェック部143でエラー無し、またはリトライパケットでの疑似エラーの場合、リトライフラグを含む応答パケット(WRBK/FLBK−CPLT)を生成し、Local−CPUへ送信する。応答パケット送信部146は、第2の演算処理装置に前記更新要求が正常に終了したことを示す完了応答を送信する応答パケット送信部の一例である。

0074

エラー制御部3−Hは、メモリ制御部14を含むHome−CPU内全体でハードウェアが検出したエラーを収集し、エラー制御を行う。エラー制御部3−Hの処理は、図14のエラー制御部3−Lと同様である。

0075

なお、図8に例示のように、複数のCPU1間には、クロスバLSI等のインターコネクトが設けられている。すなわち、Local−CPUとHome−CPUとはインターコネクトで接続することが想定されている。この場合に、Local−CPUとHome−CPUとは、別の筐体内に実装されてもよいし、同一の筐体に実装されてもよい。すなわち、Local−CPUとHome−CPUとが、別の筐体内に実装された場合で、同一の筐体に実装された場合にも、図15図16の構成により、情報処理装置は、本実施形態によるプロトコルチェックおよび疑似エラーの検出を実行できる。

0076

以上のような機構とすることで、本情報処理装置は、応答パケット(WRBK/FLBK−CPLT)ロストケースにおいても、管理情報の制御矛盾データ消失を生じさせる可能性を低減し、疑似エラーを検出できる。すなわち、Local−CPUのキャッシュ12に持ち出されたデータのメインメモリへの書き戻し制御(WRBK/FLBK)において、本情報処理装置は、CPU間の間欠故障等によりリクエストパケットを正しく転送できなかった場合に、制御矛盾やデータ消失を生じさせることなく正常動作に復帰する可能性を高めることができる。

0077

また、本情報処理装置は、図11または図13のH2の判定において、管理情報に基づく従来のプロトコルチェックでエラーがない場合には、リトライフラグの示す状態によらず、正常と判断することで、WRBK/FLBKロストケースにおいて、Home−CPUは、処理を正常終了することができる(図11のH4、図13のH9)。

0078

また、本情報処理装置は、図11または図13のH2の判定において、管理情報に基づく従来のプロトコルチェックでエラーがあり、かつ、リトライフラグがリトライでないことを示す場合には、Fatalエラーが発生したと判定できる。

0079

また、本情報処理装置は、図11または図13のH2の判定において、管理情報に基づく従来のプロトコルチェックでエラーがあり、かつ、リトライフラグがリトライを示す場合で、初回のパケット受信による処理が処理済みでない場合には(H6でNO)、Fatalエラーが発生したと判定できる。

0080

また、本情報処理装置で、Local−CPUは、図12のL15のように、パケットロストの原因を判定することで、適正にリトライを実施できる。また、Local−CPUは、リトライ処理を所定の限度まで繰り返すことができる。

0081

また、本情報処理装置のLocal−CPUは、図12のL15のように、新規にエラー検出時、リトライ回数が閾値に達するまでの間、あるいは、CPU間経路が冗長化されている等が判断できた場合には、適正にリトライを実施できる。

0082

1 CPU
2メインメモリ
11コア
12キャッシュ
13キャッシュ制御部
14メモリ制御部
131制御情報格納部
132データ格納部
133リクエストパケット送信部
134応答パケット送信部
135タイムアウト検出部
136プロトコルチェック部
137リトライ可否判定部
138固定故障検知部
141 リクエストパケット受信部
142管理情報格納部
143 プロトコルチェック部
144 管理情報更新部
145 メインメモリデータ更新部
146 応答パケット送信部

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

  • 富士通株式会社の「 情報処理装置及び情報処理方法」が 公開されました。( 2019/08/29)

    【課題】情報処理装置におけるストレージへのアクセス性能を改善する。【解決手段】仮想アドレスからメモリ領域の物理アドレスへの変換を行なうための、前記メモリ領域へのデータアクセス用の第1の変換情報31を格... 詳細

  • キヤノン株式会社の「 データ処理装置」が 公開されました。( 2019/08/22)

    【課題】複数のプロセッサによるパイプライン構成において、メモリアクセスの競合によるレイテンシ増加を抑え、プリフェッチによる処理高速化が可能なデータ処理装置及び画像処理装置を提供する。【解決手段】画像処... 詳細

  • 東芝メモリ株式会社の「 メモリシステム」が 公開されました。( 2019/08/08)

    【課題】性能を改善することができるメモリシステムを実現する。【解決手段】実施形態によれば、メモリシステムは、不揮発性メモリと、不揮発性メモリに格納されている論理物理アドレス変換テーブルの一部を格納する... 詳細

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ