(57)【要約】【課題】ストレージシステムがディスクドライブに格納するデータの信頼性を高める。【解決手段】情報処理装置において、前記情報処理装置は、プロセッサと、メモリと、インタフェース制御部と、前記プロセッサ、前記メモリ及び前記インタフェース制御部の間の通信を制御するシステム制御部と、を備え、前記システム制御部は、前記メモリと前記システム制御部との間で転送されるデータに、前記データを保護するための誤り検出符号を付加するか否かを、前記転送対象のデータが読み書きされるメモリのアドレスに基づいて判定する。【選択図】図１
2007207062.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であって、
プロセッサと、
前記プロセッサが接続されるプロセッサバスと、
メモリと、
前記メモリが接続されるメモリバスと、
少なくとも１つのインタフェース制御部と、
前記インタフェース制御部が接続されるシステムバスと、
前記プロセッサバス、前記メモリバス及び前記システムバスに接続され、前記プロセッサ、前記メモリ及び前記インタフェース制御部の間の通信を制御するシステム制御部と、を備え、
前記システム制御部は、前記メモリと前記システム制御部との間で転送されるデータに、前記データを保護するための誤り検出符号を付加するか否かを、前記転送対象のデータが読み書きされるメモリのアドレスに基づいて判定することを特徴とする情報処理装置。
【請求項２】
前記メモリの各アドレスは、前記システム制御部が管理する複数のアドレス空間に属する一つ以上のアドレスに対応し、
前記複数のアドレス空間は、少なくとも、第１アドレス空間及び第２アドレス空間を含み、
前記システム制御部は、
前記第１アドレス空間に属するアドレスを対象とするデータの書き込み要求を受信した場合、当該データを前記メモリに書き込み、
前記第２アドレス空間に属するアドレスを対象とするデータの書き込み要求を受信した場合、当該データの誤り検出符号を生成し、生成された誤り検出符号を当該データに付加して前記メモリに書き込むことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記複数のアドレス空間は、さらに第３アドレス空間を含み、
前記システム制御部は、前記第３アドレス空間に属するアドレスを対象とするデータの書き込み要求を受信した場合、当該データに付加された誤り検出符号を検査し、当該データを前記メモリに書き込むことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記プロセッサは、前記インタフェース制御部が前記情報処理装置の外部からデータを受信したとき、当該データを格納するアドレスを選択し、当該データを受信した前記インタフェース制御部に当該選択されたアドレスを送信し、
前記インタフェース制御部は、前記プロセッサから受信したアドレスを対象として前記受信したデータの書き込み要求を前記システム制御部に送信することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記プロセッサは、前記インタフェース制御部が前記情報処理装置の外部から受信した前記データの種類に基づいて、前記アドレスを選択することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記プロセッサは、
前記第１アドレス空間に属するアドレスを選択して、当該選択されたアドレスを前記システム制御部に送信し、
当該選択されたアドレスに格納されたデータを解析して当該データの種類を判定し、
当該判定の結果に基づいて、当該データのコピー先のアドレスを選択し、
当該選択されたデータのコピー先のアドレスに当該データを書き込むことを前記システム制御部に指示することを特徴とする請求項４に記載の情報処理装置。
【請求項７】
前記複数のアドレス空間は、さらに、第４アドレス空間を含み、
前記一つ以上のインタフェース制御部は、ディスクドライブと接続された第１のインタフェース制御部を含み、
前記システム制御部は、前記第４アドレス空間に属するアドレスを対象とするデータの読み出し要求を受信した場合、当該データを前記メモリから読み出し、
前記プロセッサは、
前記選択されたアドレスに格納されたデータを保護する必要がある場合、当該選択されたアドレスに格納されたデータを前記第２アドレス空間に属するアドレスに書き込むことを前記システム制御部に指示し、
当該第２アドレス空間に属するアドレスに書き込まれたデータを前記第４アドレス空間から読み出して前記ディスクドライブに転送することを前記第１のインタフェース制御部に指示することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記一つ以上のインタフェース制御部は、ディスクドライブと接続された第１のインタフェース制御部を含み、
前記プロセッサは、
前記第１のインタフェース制御部に、前記ディスクドライブから読み出されたデータを前記メモリの前記第３アドレス空間に属するアドレスに書き込むことを指示し、
当該書き込まれたデータに付加された誤り検出符号の検査の結果を判定し、
当該書き込まれたデータに誤りがあると判定された場合、障害情報を出力し、再度前記書き込みを実行することを前記第１のインタフェース制御部に指示することを特徴とする請求項３に記載の情報処理装置。
【請求項９】
前記一つ以上のインタフェース制御部は、ネットワーク通信を行う第２のインタフェース制御部を含み、
前記第２のインタフェース制御部は、前記システム制御部によって前記誤り検出符号を付加されたデータを前記第２のインタフェース制御部に接続されたネットワークに送信することを特徴とする請求項１に記載の情報処理装置。
【請求項１０】
前記情報処理装置は、一つ以上のディスクドライブを備え、
前記一つ以上のインタフェース制御部は、前記一つ以上のディスクドライブに接続され、
前記システム制御部は、
前記第２のインタフェース制御部が受信したデータ、及び、前記ネットワークにおいて使用される通信プロトコルによって当該データに付加された第２の誤り検出符号又は誤り訂正符号を前記メモリに格納し、
前記メモリに格納されたデータから前記第２の誤り検出符号又は誤り訂正符号を削除し、当該データに前記誤り検出符号を付加し、
前記第１のインタフェース制御部は、前記データ及び前記誤り検出符号を前記メモリから前記ディスクドライブに転送することを特徴とする請求項１に記載の情報処理装置。
【請求項１１】
前記情報処理装置は、前記インタフェース制御部として、
記憶媒体に接続される第１のインタフェース制御部と、
前記情報処理装置の外部の通信ネットワークに接続される第２のインタフェース制御部と、を備えることを特徴とする請求項１に記載の情報処理装置。
【請求項１２】
情報処理装置を制御する半導体装置において、
前記半導体装置は、前記半導体装置に接続されるメモリと前記半導体装置との間で転送されるデータに、前記データの誤りを検出又は訂正するための誤り検出符号を付加するか否かを、前記転送対象のデータが読み書きされるメモリのアドレスに基づいて判定することを特徴とする半導体装置。
【請求項１３】
前記メモリの各アドレスは、前記半導体装置が管理する複数のアドレス空間に属する一つ以上のアドレスに対応し、
前記複数のアドレス空間は、少なくとも、第１アドレス空間及び第２アドレス空間を含み、
前記半導体装置は、
前記第１アドレス空間に属するアドレスを対象とするデータの書き込み要求を受信した場合、当該データを前記メモリに書き込み、
前記第２アドレス空間に属するアドレスを対象とするデータの書き込み要求を受信した場合、当該データを保護するための誤り検出符号を生成し、生成された誤り検出符号を当該データに付加して前記メモリに書き込むことを特徴とする請求項１２に記載の半導体装置。
【請求項１４】
前記複数のアドレス空間は、さらに第３アドレス空間を含み、
前記半導体装置は、前記第３アドレス空間に属するアドレスを対象とするデータの書き込み要求を受信した場合、当該データに付加された誤り検出符号を検査し、当該データを前記メモリに書き込むことを特徴とする請求項１３に記載の半導体装置。
【請求項１５】
前記メモリの各アドレスは、前記半導体装置が管理する複数のアドレス空間に属する一つ以上のアドレスに対応し、
前記複数のアドレス空間は、少なくとも、第４アドレス空間及び第５アドレス空間を含み、
前記半導体装置は、
前記第４アドレス空間に属するアドレスを対象とするデータの読み出し要求を受信した場合、当該データを前記メモリから読み出し、
前記第５アドレス空間に属するアドレスを対象とするデータの読み出し要求を受信した場合、当該データを前記メモリから読み出し、当該データを保護するための誤り検出符号を生成することを特徴とする請求項１２に記載の半導体装置。
【請求項１６】
前記複数のアドレス空間は、さらに第６アドレス空間を含み、
前記半導体装置は、前記第６アドレス空間に属するアドレスを対象とするデータの読み出し要求を受信した場合、当該データを前記メモリから読み出し、当該データに付加された誤り検出符号を検査することを特徴とする請求項１５に記載の半導体装置。
【請求項１７】
情報処理装置におけるデータ転送方法であって、
前記情報処理装置は、
プロセッサと、
メモリと、
前記情報処理装置の外部との通信を行う少なくとも１つのインタフェース制御部と、
前記プロセッサ、前記メモリ及び前記インタフェース制御部を結合し、前記プロセッサ、前記メモリ及び前記インタフェース制御部の間の通信を制御するシステム制御部と、を備え、
前記システム制御部は、前記メモリと前記システム制御部との間で転送されるデータに、前記データを保護するための誤り検出符号を付加するか否かを、前記転送対象のデータが読み書きされるメモリのアドレスに基づいて判定することを特徴とする方法。
【請求項１８】
前記メモリの各アドレスは、前記システム制御部が管理する複数のアドレス空間に属する一つ以上のアドレスに対応し、
前記複数のアドレス空間は、少なくとも、第１アドレス空間及び第２アドレス空間を含み、
前記システム制御部は、
前記第１アドレス空間に属するアドレスを対象とするデータの書き込み要求を受信した場合、当該データを前記メモリに書き込み、
前記第２アドレス空間に属するアドレスを対象とするデータの書き込み要求を受信した場合、当該データを保護するための誤り検出符号を生成し、生成された誤り検出符号を当該データに付加して前記メモリに書き込むことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記複数のアドレス空間は、さらに第３アドレス空間を含み、
前記システム制御部は、前記第３アドレス空間に属するアドレスを対象とするデータの書き込み要求を受信した場合、当該データに付加された誤り検出符号を検査し、当該データを前記メモリに書き込むことを特徴とする請求項１８に記載の方法。
【請求項２０】
前記プロセッサは、前記インタフェース制御部がデータを受信したとき、当該データが格納されるアドレスを選択し、当該データを受信したインタフェース制御部に当該選択されたアドレスを送信し、
前記インタフェース制御部は、前記プロセッサから受信したアドレスを対象として前記受信したデータの書き込み要求を送信することを特徴とする請求項１９に記載の方法。
【請求項２１】
前記プロセッサは、前記インタフェース制御部が受信した前記データの種類に基づいて、前記アドレスを選択することを特徴とする請求項２０に記載の方法。
【請求項２２】
前記プロセッサは、
前記第１アドレス空間に属するアドレスを選択して、当該選択されたアドレスを前記システム制御部に送信し、
当該選択されたアドレスに格納されたデータを解析して当該データの種類を判定し、
当該判定の結果に基づいて、当該データのコピー先のアドレスを選択し、
当該選択されたデータのコピー先のアドレスに当該データを書き込むことを前記システム制御部に指示することを特徴とする請求項２０に記載の方法。
【請求項２３】
前記プロセッサは、
ディスクドライブに接続された第１のインタフェース制御部に、前記ディスクドライブから読み出されたデータを前記メモリの前記第３アドレス空間に属するアドレスに書き込むことを指示し、
書き込まれたデータに付加された誤り検出符号の検査の結果を判定し、
当該書き込まれたデータに誤りがあると判定された場合、障害情報を出力し、再度前記書き込みを実行することを前記第１のインタフェースに指示することを特徴とする請求項１９に記載の方法。
【請求項２４】
ネットワークと接続された第２のインタフェース制御部は、前記システム制御部によって前記誤り検出符号を付加されたデータを前記ネットワークに送信することを特徴とする請求項１７に記載の方法。
【請求項２５】
前記情報処理装置は、前記第１のインタフェース制御部に接続される一つ以上のディスクドライブを備え、
前記システム制御部は、
前記第２のインタフェース制御部が受信したデータと、前記通信ネットワークにおいて使用される通信プロトコルによって当該データに付加された第２の誤り検出符号又は誤り訂正符号とを前記メモリに格納し、
前記メモリに格納されたデータから前記第２の誤り検出符号又は誤り訂正符号を削除し、当該データに前記誤り検出符号を付加し、
前記第２インタフェースは、前記データ及び前記誤り検出符号を前記メモリから前記ディスクドライブに転送することを特徴とする請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書で開示される技術は、情報処理装置が処理するデータの信頼性向上に関し、特に、データを保護するための誤り検出符号の付加及び検査の制御に関する。
【背景技術】
【０００２】
近年の半導体プロセスの微細化及び高速化に伴い、半導体製品におけるデータの破壊の確率が高まっている。このため、データの信頼性を高める技術の重要性が増している。
【０００３】
このような状況の下、種々の方法によってデータが保護されている。例えば、計算機システム間でＬＡＮ経由の通信する場合，ＬＡＮ上のデータはＴＣＰチェックサム及びイーサネット（登録商標、以下同じ）ＣＲＣ等によって保護される。計算機システム内部のバス上のデータは、システムバスのパリティによって保護される。情報処理装置内部のメモリ及びハードディスクドライブ（ＨＤＤ）に格納されたデータは、誤り訂正符号（ＥＣＣ）によって保護される（例えば、特許文献１及び特許文献２参照）。
【特許文献１】特表２００４−５３０９６４号公報
【特許文献２】特開２００５−８４７９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記の従来の情報処理装置では、情報処理装置のメモリ（主記憶）からＨＤＤにデータが書き込まれる際に、まず、メモリから、ＨＤＤを制御するホストバスアダプタにシステムバス経由で当該データが転送される。ホストバスアダプタは当該データを受信したときに、ホストバスアダプタがデータからシステムバスのパリティを取り除き、ＨＤＤインタフェース規格の誤り検出符号を付加して、ＨＤＤインタフェース経由でＨＤＤに転送する。ＨＤＤは、受信した当該データからＨＤＤインタフェース規格の誤り検出符号を取り除き、ＨＤＤ内誤り検出符号を付加してＨＤＤ内の記録媒体上に記録する。
【０００５】
ここで、ホストバスアダプタ内で一旦誤り検出符号を取り除くため、仮にホストバスアダプタがデータ保護機構を持っていない場合、データが誤りから保護されない区間が存在する。このため、前記ホストバスアダプタ内でデータに誤りが発生した場合、その誤りが検出されることなく、ＨＤＤに書き込まれる。
【０００６】
したがって、メモリ内のデータに誤り検出符号を付加し、当該データをＨＤＤにそのまま格納すれば、仮にアダプタ内でデータの誤りが発生しても、情報処理装置は誤りを検出することができる。この課題の解決方法はいくつか考えられる。例えば、プロセッサがメモリ内のデータにチェックサムなどの誤り検出符号を付加する方法が考えられる。この方法では、プロセッサの計算量が増大するため，情報処理装置の性能が見かけ上低下する欠点がある。一方、情報処理装置内のメモリの制御、データの転送を制御するシステムコントローラにＤＭＡエンジンを搭載し、そのＤＭＡエンジンがデータ転送中に誤り検出符号を生成及び検査することもできる。しかし、この方法は、ＬＡＮに接続されるＬＡＮコントローラ及びＨＤＤに接続されるホストバスアダプタがデータの転送を実行する従来のシステムとの親和性が低い。また、メモリに格納されるデータには、誤り検出符号によって保護する必要があるユーザデータの他に、保護する必要がないプログラムや、プログラムが使用する制御データも含まれる。このため、データの種類に従って誤り検出符号の生成及び検査をするか否かを選択する必要がある。
【課題を解決するための手段】
【０００７】
本願で開示する代表的な発明は、情報処理装置であって、プロセッサと、前記プロセッサが接続されるプロセッサバスと、メモリと、前記メモリが接続されるメモリバスと、少なくとも１つのインタフェース制御部と、前記インタフェース制御部が接続されるシステムバスと、前記プロセッサバス、前記メモリバス及び前記システムバスに接続され、前記プロセッサ、前記メモリ及び前記インタフェース制御部の間の通信を制御するシステム制御部と、を備え、前記システム制御部は、前記メモリと前記システム制御部との間で転送されるデータに、前記データを保護するための誤り検出符号を付加するか否かを、前記転送対象のデータが読み書きされるメモリのアドレスに基づいて判定することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、情報処理装置内におけるデータ転送経路において、誤り検出符号が付加されない区間がなく、データが保護される。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施の形態を、図面を参照して説明する。
【００１０】
図１は、本発明の実施の形態の情報処理装置の構成を示すブロック図である。
【００１１】
本発明は、種々の通信ネットワークに接続される種々の情報処理装置に適用することができる。以下、通信ネットワークがローカルエリアネットワーク（ＬＡＮ）であり、情報処理装置がストレージシステム（いわゆるネットワーク接続ストレージシステム）である場合を例として説明する。しかし、本実施の形態の通信ネットワークは、例えば、ストレージエリアネットワーク（ＳＡＮ）、Ｉｎｆｉｎｉｂａｎｄ（登録商標）ネットワーク、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、又はその他のコンピュータ間の通信ネットワークであってもよい。また、本実施の形態の情報処理装置は、例えば、汎用コンピュータ又はパーソナルコンピュータ等であってもよい。
【００１２】
本実施の形態の情報処理装置１００は、ＬＡＮ１０５に接続され、プロセッサ１０１、メモリ１０２、ハードディスクドライブ（ＨＤＤ）１０３、ホストバスアダプタ（ＨＢＡ）１０４、ＬＡＮコントローラ１０６、フラッシュメモリ１０８、システムコントローラ１０９、メモリバス１１０、プロセッサバス１１１、システムバス１１２、システムバス１１３及びフラッシュメモリバス１１４を備える。ここで、上記ＨＢＡ１０４とＬＡＮコントローラ１０６とはひとつの制御部として構成可能である。また、システムバス１１２及びシステムバス１１３もひとつのシステムバスとして構成可能である。
【００１３】
プロセッサ１０１は、メモリ１０２及びフラッシュメモリ１０８に格納されたプログラムを実行する。プロセッサ１０１は、プロセッサバス１１１を介してシステムコントローラ１０９と接続される。図１には二つのプロセッサ１０１を示すが、本実施の形態の情報処理装置１００は、一つ又は三つ以上のプロセッサ１０１を備えてもよい。
【００１４】
メモリ１０２には、プロセッサ１０１によって実行されるプログラムが格納される。具体的には、少なくとも、オペレーティングシステム（ＯＳ）１１５が格納される。
【００１５】
メモリ１０２には、さらに、ＨＤＤ１０３に書き込まれるデータ及びＨＤＤ１０３から読み出されたデータが格納される。メモリ１０２は、メモリバス１１０を介してシステムコントローラ１０９と接続される。
【００１６】
ＨＤＤ１０３は、ＬＡＮ１０５に接続されたホスト計算機（図示省略）によって書き込まれたデータを格納する不揮発記憶媒体である。左記不揮発性記憶媒体としては、例えば、ＨＤＤが用いられる。本実施の形態の情報処理装置１００は、複数のＨＤＤ１０３を備えてもよい。これらの複数のＨＤＤ１０３は、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）を構成してもよい。各ＨＤＤ１０３は、ＨＢＡ１０４と接続される。
【００１７】
ＨＢＡ１０４は、ＨＤＤ１０３を制御する。ＨＢＡ１０４は、システムバス１１３を介してシステムコントローラ１０９と接続される。
【００１８】
ＬＡＮ１０５は、本実施の形態の情報処理装置１００及び一つ以上のホスト計算機（図示省略）に接続されるネットワークである。
【００１９】
ＬＡＮコントローラ１０６は、ＬＡＮ１０５に接続され、情報処理装置１００とホスト計算機との間の通信を制御する。ＬＡＮコントローラ１０６は、システムバス１１２を介してシステムコントローラ１０９と接続される。
【００２０】
フラッシュメモリ１０８は、プロセッサ１０１によって実行される起動プログラム１０７を格納する不揮発メモリである。フラッシュメモリ１０８は、フラッシュメモリバス１１４を介してシステムコントローラ１０９と接続される。
【００２１】
起動プログラム１０７は、情報処理装置１００に対する電源投入直後にプロセッサ１００によって最初に実行されるプログラムである。
【００２２】
システムコントローラ１０９は、情報処理装置１００内の各部の間で実行されるデータの通信を制御する。
【００２３】
図２は、本発明の実施の形態のシステムコントローラ１０９の構成を示すブロック図である。
【００２４】
本実施の形態のシステムコントローラ１０９は、プロセッサバスインタフェースユニット２０１、メモリ制御ユニット２０２、二つのシステムバス制御ユニット２０３、フラッシュメモリバス制御ユニット２０４及びデータルーティング制御ユニット２０５を備える。
【００２５】
プロセッサバスインタフェースユニット２０１は、プロセッサバス１１１に接続され、プロセッサ１０１とシステムコントローラ１０９との間の通信を制御する。
【００２６】
メモリ制御ユニット２０２は、メモリバス１１０に接続され、メモリ１０２へのデータの書き込み及び読み出しを制御する。
【００２７】
各システムバス制御ユニット２０３は、それぞれ、システムバス１１２及びシステムバス１１３に接続され、ＬＡＮコントローラ１０６及びＨＢＡ１０４とシステムコントローラ１０９との間の通信を制御する。ここで、システムバス制御ユニット２０３は、システムバス１１２とシステムバス１１３がひとつのバスとして構成されるときは、単一のユニットして構成可能である。
【００２８】
フラッシュメモリバス制御ユニット２０４は、フラッシュメモリバス１１４に接続され、フラッシュメモリ１０８からの起動プログラム１０７の読み出しを制御する。
【００２９】
データルーティング制御ユニット２０５は、システムコントローラ１０９内の各ユニット間のデータの転送を制御する。データルーティング制御ユニット２０５は、アドレス空間属性テーブル２０６を保持する。図２の例では、アドレス空間属性テーブル２０６はデータルーティング制御ユニット２０５に保持されるが、実際には、アドレス空間属性テーブル２０６はシステムコントローラ１０９内のどのユニットに保持されてもよい。アドレス空間属性テーブル２０６については、後で詳細に説明する（図３及び図４参照）。
【００３０】
図３は、本発明の実施の形態のアドレス空間属性テーブル２０６の説明図である。本実施の形態のアドレス空間属性テーブル２０６は、メモリ１０２内の空間に付与された属性を管理するテーブルである。属性については、後述する。
【００３１】
先頭アドレス３０１は、メモリ１０２のアドレス空間に対して定義された各領域の先頭のアドレスである。メモリ１０２のアドレス空間については、後で詳細に説明する（図４参照）。本実施の形態のメモリ１０２のアドレス空間は四つの領域に分割され、各領域の先頭アドレス３０１は、それぞれ、「０ｘ００００００００」（行３０７）、「０ｘ２０００００００」（行３０８）、「０ｘ４０００００００」（行３０９）及び「０ｘ６０００００００」（行３１０）である。言い換えると、各行３０７から３１０が、各先頭アドレス３０１から始まる各領域に対応する。
【００３２】
範囲３０２は、各領域の範囲（バイト数）である。本実施の形態の各領域の範囲３０２は、いずれも、５１２メガバイト（ＭＢ）である。
【００３３】
属性（３０３から３０６）は、各領域に対して付与される情報であり、メモリ１０２に対するデータの書き込み又は読み出しが実行される際に、誤り検出符号が生成されるか否か、及び、誤り検出符号が検査されるか否かを示す。本実施例では、誤り検出符号の例として、ブロックチェック符号を例にして説明する（後に、図６を用いて説明する）。いうまでもないが、本発明は、誤り検出符号の種類に依存しない。また、誤り訂正符号を用いてもよい。
【００３４】
各属性の値の意味について、アドレス空間属性テーブル２０６が管理するいずれかの領域を指定してデータの書き込み又は読み出しが実行される場合を仮定して説明する。
【００３５】
指定された領域に対応する行において、メモリライトに関するブロックチェック符号生成欄３０３の値が「１」である場合、データがメモリ１０２に書き込まれるときにブロックチェック符号が生成され、そのデータに付加される。
【００３６】
指定された領域に対応する行において、メモリリードに関するブロックチェック符号生成欄３０５の値が「１」である場合、データがメモリ１０２から読み出されるときにブロックチェック符号が生成され、そのデータに付加される。
【００３７】
ブロックチェック符号生成欄３０４、３０６には２ビットの数値が格納される。上位ビット（図３内の３０４と３０６に記入されている数字の左の数値）は、ブロックチェック符号を検査するか否かを意味する。本実施の形態では、上位ビットの数値の「１」はブロックチェック符号を検査することを意味する。逆に上位ビットの数値の「０」はブロックチェック符号を検査しないことを意味する。下位ビット（図３内の３０４と３０６に記入されている数字の右の数値）は、ブロックチェック符号の検査後にブロックチェック符号を削除するか否かを意味する。本実施例では、下位ビットの数値の「１」はブロックチェック符号を削除しないことを意味する。逆に、下位ビットの数値の「０」はブロックチェック符号を削除することを意味する。当然、ブロックチェック符号を検査しない場合、システムコントローラ１０９はブロックチェック符号を削除、削除しないを判断する必要はない。従って、上位ビットの数値が「０」だった場合、下位ビットの数値はシステムコントローラ１０９の動作に影響を与えない。すなわち、下位ビットの数値が「０」でも「１」でもシステムコントローラ１０９の動作は変わらない。
【００３８】
指定された領域に対応する行において、メモリライトに関するブロックチェック符号検査欄３０４の値が「１０」である場合、データがメモリ１０２に書き込まれるときにブロックチェック符号が検査され、かつ、そのブロックチェック符号がデータから削除される。
【００３９】
指定された領域に対応する行において、メモリライトに関するブロックチェック符号検査欄３０４の値が「１１」である場合、データがメモリ１０２に書き込まれるときにブロックチェック符号が検査されるが、そのブロックチェック符号はデータから削除されない。
【００４０】
指定された領域に対応する行において、メモリリードに関するブロックチェック符号検査欄３０６の値が「１０」である場合、データがメモリ１０２から読み出されるときにブロックチェック符号が検査され、かつ、そのブロックチェック符号がデータから削除される。
【００４１】
指定された領域に対応する行において、メモリリードに関するブロックチェック符号検査欄３０６の値が「１１」である場合、データがメモリ１０２から読み出されるときにブロックチェック符号が検査されるが、そのブロックチェック符号はデータから削除されない。
【００４２】
図３には、例として四つの行３０７から３１０のみを示すが、アドレス空間属性テーブル２０６は、さらに多くの行を含んでもよい。例えば、メモリリードに関するブロックチェック符号生成３０５の値が「１」である行、及び、メモリリードに関するブロックチェック符号検査３０６の値が「１０」である行等が含まれてもよい。
【００４３】
以上の属性は、アドレスとコマンドを受信したシステムコントローラ１０９によって参照される。システムコントローラ１０９が実行する処理については、後で詳細に説明する（図１０等参照）。
【００４４】
図４は、本発明の実施の形態のメモリ１０２のアドレス空間の説明図である。
【００４５】
図４は、アドレス空間４０１と実アドレス空間４０２との対応を示す。
【００４６】
実アドレス空間４０２は、メモリ１０２上の実際のアドレス空間である。図４の例では、実アドレス空間４０２として、アドレス「０ｘ００００００００」から「０ｘ２０００００００」までの５１２ＭＢが確保されている。
【００４７】
アドレス空間４０１に属する各アドレスは、実アドレス空間４０２のいずれかのアドレスと対応する。アドレス空間４０１は、さらに複数のアドレス空間に分割され、それぞれの空間に属する各アドレスが実アドレス空間４０２のアドレスに対応する。
【００４８】
図４の例では、アドレス空間４０１は四つの空間に分割され、分割された各空間が重畳して実アドレス空間４０２にマッピングされる。具体的には、アドレス空間４０１のアドレス「０ｘ００００００００」以上「０ｘ２０００００００」未満の５１２ＭＢのチェックなし空間４０３が、実アドレス空間４０２のアドレス「０ｘ００００００００」以上「０ｘ２０００００００」未満の５１２ＭＢの空間にマッピングされる。このチェックなし空間４０３は、図３の行３０７に対応する。
【００４９】
同様にして、アドレス空間４０１のアドレス「０ｘ２０００００００」以上「０ｘ４０００００００」未満のブロックチェック符号生成空間４０４、「０ｘ４０００００００」以上「０ｘ６０００００００」未満のブロックチェック符号検査空間（符号削除）４０５、及び、「０ｘ６０００００００」以上「０ｘ８０００００００」未満のブロックチェック符号検査空間（符号削除しない）４０６も、実アドレス空間４０２のアドレス「０ｘ００００００００」以上「０ｘ２０００００００」未満の空間にマッピングされる。これらの各空間４０４から４０６は、それぞれ、図３の行３０８から３１０に対応する。
【００５０】
例えば、アドレス空間４０１上のアドレス「０ｘ３０００００００」は、実アドレス空間４０２のアドレス「０ｘ１０００００００」にマッピングされる。すなわち、アドレス空間４０１上のアドレス「０ｘ３０００００００」にデータが書き込まれた場合、そのデータは、実際にはメモリ１０２上の実アドレス空間４０２のアドレス「０ｘ１０００００００」に格納される。アドレス空間４０１上のアドレス「０ｘ３０００００００」がブロックチェック符号生成空間４０４に属しているため、そのデータについてブロックチェック符号が生成され、データ及び生成されたブロックチェック符号がメモリ１０２に書き込まれる（図３の行３０８参照）。
【００５１】
図４には、図３の行３０７から行３１０までの四つの行に対応する四つのアドレス空間４０３から４０６を示すが、図３がさらに多くの行を含む場合、それらの行に対応するアドレス空間が追加されてもよい。
【００５２】
なお、図４には、アドレス空間４０１上の各空間４０３から４０６が重畳して実アドレス空間４０２にマッピングされる例を示したが、アドレス空間４０１と１対１に対応する実アドレス空間４０２が用意されてもよい。
【００５３】
次に、データを保護するためにデータに付加されるパリティ及びブロックチェック符号について、図５及び図６を参照して説明する。
【００５４】
図５は、データに付加されるパリティの説明図である。
【００５５】
図５は、単一のクロック５０５によって駆動されるデータ信号５０１等とパリティ信号５０４との関係を、横軸を時間軸とするタイミングチャートである。データ信号０からデータ信号２（５０１から５０３）は、それぞれ、１ビットのデータである。データ幅がＭビット（Ｍは任意の自然数）である場合、データ信号は、図示しないデータ信号３からデータ信号Ｍ−１までを含む。
【００５６】
パリティ信号５０４は、各タイミングにおける全データ幅のデータ信号５０１等（図５の点線によって囲まれた一つの範囲）に所定の演算を実行することによって生成されるビットである。所定の演算とは、例えば、排他的論理和である。
【００５７】
あるクロックサイクルにおけるデータ信号５０１等から生成されたパリティ信号５０４は、その次のクロックサイクルに同期して送信される。
【００５８】
パリティが付加された後でいずれかのデータ信号５０１等のビットに誤りが発生した場合、それらのデータ信号５０１等と、それらに対応するパリティ信号５０４との間に矛盾が生じる。例えば、上記所定の演算が排他的論理和である場合、本来、各データ信号５０１等とパリティ信号５０４との排他的論理和が「０」となるべきであるが、いずれかのビットに誤りがあると、その値が「１」となる。このようにして、データ信号５０１等に発生した誤りが検出される。
【００５９】
図６は、本発明の実施の形態のブロックチェック符号の説明図である。
【００６０】
ブロックチェック符号は、データビットを二次元に配列し、各行（又は列）について、所定の演算を実行することによって生成される。図６の例では、Ｍビット×Ｎビットのデータビット６０１等が二次元に配列され、各行のビットについて排他的論理和を実行することによってブロックチェック符号６１３等が生成される。すなわち、ブロックチェック符号とは、Ｍ×Ｎビットのデータブロックに対して付加される誤り検出符号なのである。
【００６１】
図５に示したパリティと同様、データビット６０１等に誤りが発生すると、データビット６０１等とブロックチェック符号６１３等との間に矛盾が生じるため、データビット６０１等に発生した誤りが検出される。
【００６２】
次に、データの保護について、図７及び図８を参照して説明する。
【００６３】
図７は、図１に示す情報処理装置に従来の技術を適用した場合の各部分におけるデータ保護を説明する図である。
【００６４】
ＬＡＮ１０５に接続されたホスト計算機（図示省略）がＬＡＮ１０５を経由してユーザデータを情報処理装置に書き込む場合を例として説明する。
【００６５】
ホスト計算機のアプリケーション層のユーザデータ７０１には、ＴＣＰ（Transmission Control Protocol）層において、ＴＣＰヘッダ７０２及びＴＣＰチェックサム７０３が付加されることによって、ＴＣＰセグメントが生成される。ＴＣＰチェックサムは、ユーザデータ７０１に発生した誤りを検出するための誤り検出符号である。すなわち、この時点で、ユーザデータ７０１はＴＣＰチェックサムによって保護される。
【００６６】
次に、ＩＰ（Internet Protocol）層において、ＴＣＰセグメントにＩＰヘッダ７０４及びＩＰチェックサム７０５が付加されることによって、ＩＰパケットが生成される。ＩＰチェックサム７０５は、ＩＰヘッダ７０４を保護するための誤り検出符号である。
【００６７】
次に、ＩＰパケットにイーサネット（登録商標、以下同じ）ヘッダ７０６及びイーサネットＣＲＣ（巡回冗長検査符号）７０７が付加されることによって、イーサネットパケットが生成される。このイーサネットパケットが、ホスト計算機からＬＡＮを構成するケーブル（図示省略）に送出される。イーサネットＣＲＣは、イーサネットパケットに発生した誤りを検出するための誤り検出符号である。
【００６８】
イーサネットパケットを受信した情報処理装置１００のＬＡＮコントローラ１０６は、イーサネットパケットからＩＰパケットを取り出し、そのデータにシステムバスパリティ７０８を付加して、システムバス１１２に送出する。システムバスパリティ７０８は、システムバスにおいてデータに発生した誤りを検出するためのパリティである。
【００６９】
ＬＡＮコントローラ１０６からＩＰパケットを受信したシステムコントローラ１０９は、システムバスパリティ７０８を削除して、新たにシステムコントローラパリティ７０９を付加する。システムコントローラパリティ７０９も、データに発生した誤りを検出するためのパリティである。
【００７０】
システムコントローラ１０９が受信したデータは、メモリバス１１０を介してメモリ１０２に転送され、格納される。このとき、ＩＰパケットのデータには、新たにメモリＥＣＣ（誤り訂正符号）７１０が付加される。さらに、ＯＳ１１５は、ＴＣＰ及びＩＰの処理を実行して、ＩＰパケットからＩＰヘッダ７０４、ＩＰチェックサム７０５、ＴＣＰヘッダ７０２及びＴＣＰチェックサム７０３を検査し、取り除く。その結果、メモリ１０２には、ユーザデータ７０１及びそれに付加されたメモリＥＣＣ７１０が格納される。
【００７１】
その後、メモリ１０２に格納されたユーザデータ７０１は、メモリバス１１０、システムコントローラ１０９及びシステムバス１１３を介してＨＢＡ１０４に転送される。システムバス１１３において、ユーザデータ７０１にはシステムバスパリティ７０８が付加される。
【００７２】
ＨＢＡ１０４は、ユーザデータ７０１からシステムバスパリティ７０８を取り除く。その結果、当該データが誤り検出符号によって全く保護されない状態となる。
【００７３】
ＨＤＤ１０３は、ユーザデータ７０１にＨＤＤ＿ＥＣＣ７１１を付加して、ディスク（図示省略）に格納する。
【００７４】
このように、従来の技術によれば、ＨＢＡ１０４からＨＤＤ１０３に送信されるデータが誤り検出符号によって保護されない。すなわち、ＨＢＡ１０４とＨＤＤ１０３の間で発生したデータの誤りは検出されない。
【００７５】
図８は、本発明の実施の形態のデータの保護の説明図である。
【００７６】
図８において、ＬＡＮ１０５に接続されたホスト計算機から送信されたデータがメモリ１０２に格納されるまでについては図７と同様であるため、説明を省略する。さらに、以下の説明においても、図７と同様の部分については詳細な説明を省略する。
【００７７】
ＯＳ１１５がメモリ１０２に格納されたＩＰパケットから各ヘッダ及びチェックサムを取り除いた後、ユーザデータにはブロックチェック符号８０１が付加される。このブロックチェック符号８０１は、図６のブロックチェック符号６１３から６１６に相当する。
【００７８】
システムバス１１３において、ユーザデータ７０１及びブロックチェック符号８０１に対してシステムバスパリティ７０８が付加される。
【００７９】
ＨＢＡ１０４は、システムバスパリティ７０８を取り除く。このとき、ブロックチェック符号８０１はユーザデータ７０１に付加されたまま残る。ＨＢＡ１０４は、ブロックチェック符号８０１と共にユーザデータ７０１をＨＤＤ１０３に送信する。
【００８０】
ＨＤＤ１０３は、ユーザデータ７０１及びブロックチェック符号８０１にＨＤＤ＿ＥＣＣ７１１を付加して、ディスクに格納する。
【００８１】
このように、本実施の形態によれば、ホスト計算機からＬＡＮ１０５を経由してＨＤＤ１０３に書き込まれるユーザデータ７０１は、経路上のどの地点においても、チェックサム、ＣＲＣ、パリティ、ＥＣＣ及びブロックチェック符号８０１のうち少なくとも一つの誤り検出符号によって保護される。
【００８２】
ただし、メモリ１０２には、ＨＤＤ１０３に書き込まれるべきユーザデータのほかに、プログラムのデータも格納される。そして、プログラムのデータは、ブロックチェック符号８０１を付加して保護する必要がない。本実施の形態によれば、後で詳細に説明するように、保護する必要があるデータにのみブロックチェック符号８０１が付加される。
【００８３】
次に、本実施の形態の情報処理装置１００が実行する処理について、フローチャートを参照して説明する。
【００８４】
図９は、本発明の実施の形態のＬＡＮコントローラ１０６がデータを受信したときに実行する処理を示すフローチャートである。
【００８５】
処理が開始されて（９０１）、ＬＡＮコントローラ１０６がイーサネットパケットを受信すると（９０２）、ＬＡＮコントローラ１０６は、プロセッサ１０１にイーサネットパケット受信の報告を送信する（９０３）。
【００８６】
この報告を受信したプロセッサ１０３は、ＬＡＮコントローラ１０６に、受信したイーサネットパケットの転送先となるメモリ１０２のアドレスを指示する（９０４）。具体的には、プロセッサ１０１は、アドレス空間４０１に属するいずれかのアドレスを選択して、そのアドレスをＬＡＮコントローラ１０６に送信する。
【００８７】
例えば、受信したイーサネットパケットがプログラムのデータからなる場合、そのデータにブロックチェック符号８０１を付加する必要がない。この場合、プロセッサ１０１は、チェックなし空間４０３内のいずれかのアドレスを選択して送信する。一方、受信したイーサネットパケットがプログラム以外のユーザデータからなる場合、そのデータにブロックチェック符号８０１を付加する必要がある。この場合、プロセッサ１０１は、ブロックチェック符号生成空間４０４内のアドレスを選択して送信する。
【００８８】
同様にして、データに付加されたブロックチェック符号８０１を検査して、その後そのブロックチェック符号８０１を削除する必要がある場合、プロセッサ１０１は、ブロックチェック符号検査空間（符号削除）４０５内のアドレスを選択して送信する。また、データに付加されたブロックチェック符号８０１を検査して、その後そのブロックチェック符号８０１を残す場合、プロセッサ１０１は、ブロックチェック符号検査空間（符号削除しない）４０６内のアドレスを選択して送信する。
【００８９】
プロセッサ１０１は、ステップ９０４におけるアドレスの選択をするために、受信したイーサネットパケットに含まれるデータの種類を判定する必要がある。
【００９０】
例えば、ＬＡＮコントローラ１０６がパケットを解析して、そのパケットに含まれるデータの種類に関する情報をプロセッサ１０１に送信し、プロセッサ１０１がその情報に基づいてデータの種類を判定してもよい。
【００９１】
あるいは、プロセッサ１０１は、全てのデータを一旦チェックなし空間４０３に転送するように指示してもよい。この場合、プロセッサ１０１は、パケット解析を実行してデータの種類を判定し、その判定の結果に従ってデータをいずれかの空間に移動してもよい。
【００９２】
あるいは、プロセッサ１０１は、データが転送される前にパケット解析を実行してデータの種類を判定し、その判定の結果に従って、転送先のアドレスを指示してもよい。
【００９３】
あるいは、ＬＡＮコントローラ１０６において使用される通信プロトコルが、データの種類を区別する属性情報を含み、プロセッサ１０１はその属性情報に従って転送先のアドレスを指示してもよい。
【００９４】
次に、ＬＡＮコントローラ１０６は、ステップ９０４において指示されたアドレス空間に属するアドレスへパケットを送信する（９０５）。このパケットを受信したシステムコントローラ１０９は、メモリ１０２における指示されたアドレスに当該パケットを書き込む。このとき、図３及び図４に示すように、指示されたアドレスが属するアドレス空間の属性に従って、システムコントローラ１０９は、ブロックチェック符号の生成又は検査を実行する。
【００９５】
次に、ＬＡＮコントローラ１０６は、データ転送完了の報告をプロセッサ１０１に送信する（９０６）。
【００９６】
以上で、処理が終了する（９０７）。
【００９７】
図１０は、本発明の実施の形態のシステムコントローラ１０９がデータを転送する時に実行する処理を示すフローチャートである。
【００９８】
処理が開始されて（１００１）、ＬＡＮコントローラ１０６又はＨＢＡ１０４からアドレス及びコマンドを受信すると（１００２）、システムコントローラ１０９は、コマンドの種類を判定する（１００３）。ここで、アドレスとは、プロセッサ１０１がＬＡＮコントローラ１０６又はＨＢＡ１０４に指示したメモリ１０２のアドレス空間４０１内のアドレスである。コマンドとは、メモリ１０２からデータを読み出すためのリードコマンド、又は、メモリ１０２にデータを書き込むためのライトコマンドである。
【００９９】
ステップ１００３において、システムコントローラ１０９が、コマンドがメモリ１０２へのリードコマンドであると判定した場合、システムコントローラ１０９は、受信したアドレスとアドレス空間属性テーブル２０６のアドレスとを比較する（１００４）。
【０１００】
次に、システムコントローラ１０９は、受信したアドレスを、そのアドレスにマッピングされた実アドレス空間４０２のアドレスに変換する（１００５）。
【０１０１】
次に、システムコントローラ１０９は、アドレス空間４０１の属性を判定する（１００６）。具体的には、システムコントローラ１０９は、ステップ１００４で実行された比較に基づいて、ＬＡＮコントローラ１０６等から受信したアドレスがどの属性を付与されたアドレス空間４０１に属するかを判定する。システムコントローラ１０９は、この判定の結果に基づいて、ブロックチェック符号８０１の生成又は検査を実行するか否かを判定する。
【０１０２】
ステップ１００６において、システムコントローラ１０９が、受信したアドレスがチェックなし空間４０３に属すると判定した場合、ブロックチェック符号８０１を生成又は検査する必要がない。この場合、システムコントローラ１０９は、ステップ１００５において変換された実アドレス空間４０２のアドレスに格納されたメモリ１０２内のデータをそのままシステムバス１１２又は１１３に送出する（１００７）。
【０１０３】
ステップ１００６において、システムコントローラ１０９が、受信したアドレスがブロックチェック符号生成空間４０４に属すると判定された場合、ブロックチェック符号８０１を生成する必要がある。この場合、システムコントローラ１０９は、ステップ１００５において変換された実アドレス空間４０２のアドレスに格納されたメモリ１０２内のデータを読み出す。そして、システムコントローラ１０９は、当該データを保護するためのブロックチェック符号８０１を生成し、当該データ及び生成されたブロックチェック符号８０１をシステムバス１１２又は１１３に送出する（１００８）。
【０１０４】
ステップ１００６において、システムコントローラ１０９が、受信したアドレスがブロックチェック符号検査空間（符号削除）４０５又はブロックチェック符号検査空間（符号削除しない）４０６に属すると判定した場合、ブロックチェック符号８０１を検査する必要がある。この場合、システムコントローラ１０９は、ステップ１００５において変換された実アドレス空間４０２のアドレスに格納されたメモリ１０２内のデータを読み出す。そして、システムコントローラ１０９は、当該データに付加されたブロックチェック符号８０１を検査し、当該データをシステムバス１１２又は１１３に送出する（１００９）。
【０１０５】
なお、システムコントローラ１０９が受信したアドレスが、ブロックチェック符号検査空間（符号削除）４０５に属する場合、システムコントローラ１０９は、ステップ１００９において、検査が終了したブロックチェック符号８０１をデータから削除し、データのみをシステムバス１１２又は１１３に送出する。一方、システムコントローラ１０９が受信したアドレスがブロックチェック符号検査空間（符号削除しない）４０６に属する場合、システムコントローラ１０９は、ステップ１００９において、検査が終了したブロックチェック符号８０１をデータから削除せず、データ及びブロックチェック符号８０１をシステムバス１１２又は１１３に送出する。
【０１０６】
ステップ１００３において、システムコントローラ１０９が、コマンドがメモリ１０２へのライトコマンドであると判定した場合、システムコントローラ１０９は、受信したアドレスとアドレス空間属性テーブル２０６のアドレスとを比較する（１０１０）。
【０１０７】
次に、システムコントローラ１０９は、受信したアドレスを、そのアドレスにマッピングされた実アドレス空間４０２のアドレスに変換する（１０１１）。
【０１０８】
次に、システムコントローラ１０９は、ステップ１００６と同様、ステップ１０１０の比較に基づいて、アドレス空間４０１の属性を判定する（１０１２）。システムコントローラ１０９は、この判定の結果に基づいて、ブロックチェック符号８０１の生成又は検査を実行するか否かを判定する。
【０１０９】
ステップ１０１２において、システムコントローラ１０９が、受信したアドレスがチェックなし空間４０３に属すると判定した場合、ブロックチェック符号８０１を生成又は検査する必要がない。この場合、システムコントローラ１０９は、メモリ１０２に、データをそのまま書き込む（１０１３）。
【０１１０】
ステップ１００６において、システムコントローラ１０９が、受信したアドレスがブロックチェック符号生成空間４０４に属すると判定した場合、ブロックチェック符号８０１を生成する必要がある。この場合、システムコントローラ１０９は、データを保護するためのブロックチェック符号８０１を生成し、そのデータ及び生成されたブロックチェック符号８０１をメモリ１０２に書き込む（１０１４）。
【０１１１】
ステップ１００６において、システムコントローラ１０９が、受信したアドレスがブロックチェック符号検査空間（符号削除）４０５又はブロックチェック符号検査空間（符号削除しない）４０６に属すると判定した場合、ブロックチェック符号８０１を検査する必要がある。この場合、システムコントローラ１０９は、データに付加されたブロックチェック符号８０１を検査し、そのデータをメモリ１０２に書き込む（１０１５）。
【０１１２】
なお、受信したアドレスがブロックチェック符号検査空間（符号削除）４０５に属する場合、システムコントローラ１０９は、ステップ１０１５において、検査が終了したブロックチェック符号８０１をデータから削除し、データのみをメモリ１０２に書き込む。一方、受信したアドレスがブロックチェック符号検査空間（符号削除しない）４０６に属する場合、システムコントローラ１０９は、ステップ１０１５において、検査が終了したブロックチェック符号８０１をデータから削除せず、データ及びブロックチェック符号８０１をメモリ１０２に書き込む。
【０１１３】
ステップ１０１３、１０１４及び１０１５において、データ等は、ステップ１００５において変換された実アドレス空間４０２のアドレスに対応するメモリ１０２上のアドレスに書き込まれる。
【０１１４】
ステップ１００７、１００８、１００９、１０１３、１０１４又は１０１５が終了すると、システムコントローラ１０９は、処理を終了する（１０１６）。
【０１１５】
図１１は、本発明の実施の形態の情報処理装置１００が図９に続いてＯＳ１１５がホスト計算機から受信したデータをＨＤＤに転送する際に実行する処理を示すフローチャートである。
【０１１６】
ＯＳ１１５は、メモリ１０２に格納され、プロセッサ１０１によって実行されるプログラムである。このため、以下の説明においてＯＳ１１５が実行する処理は、実際にはプロセッサ１０１によって実行される。
【０１１７】
処理が開始されて（１１０１）、ＬＡＮコントローラ１０６からパケット受信の報告（図９のステップ９０３参照）を受信すると（１１０２）、ＯＳ１１５は、受信したパケットをメモリ１０２のチェックなし空間４０３に転送することをＬＡＮコントローラ１０６に指示する（１１０３）。このとき、ＯＳ１１５は、チェックなし空間４０３内のアドレスをＬＡＮコントローラ１０６に送信する。ＬＡＮコントローラ１０６は、受信したパケットをメモリ１０２のチェックなし空間４０３に転送する。このとき、システムコントローラ１０９は、受信したパケットをそのままメモリ１０２に書き込む（図１０のステップ１０１３参照）。一般に、ＯＳ１１５は、受信データがユーザデータであるかどうかを判断できないので、本ステップではチェックなし空間４０３への転送を指示するよう構成されているものとする。
【０１１８】
次に、ＯＳ１１５は、受信したパケットのメモリ１０２への転送が完了したことを確認する（１１０４）。本ステップは、ＯＳ１１５がＬＡＮコントローラ１０６の報告を確認することで実現される。
【０１１９】
次に、ＯＳ１１５は、ＩＰチェックサム７０５及びＴＣＰチェックサム７０３を検査する（１１０５）。
【０１２０】
次に、ＯＳ１１５は、ファイルシステム処理を実行する（１１０６）。ファイルシステム処理によって、パケットが、ファイルのデータとしてＨＤＤ１０３に保存できる状態に変換される。図１１は、変換されたデータがプログラム以外のユーザデータである場合、言い換えると、当該データを誤り検出符号によって保護する必要がある場合の処理を示す。
【０１２１】
次に、ＯＳ１１５は、変換されたデータをチェックなし空間４０３からブロックチェック符号生成空間４０４にコピーする（１１０７）。このコピー動作を具体的に説明する。プロセッサ１０１は、当該データのアドレス（チェックなし空間４０３に属する）とリードコマンドをシステムコントローラ１０９に発行する。前記アドレスを受信したシステムコントローラ１０９は、当該データをプロセッサ１０１へ転送する。プロセッサ１０１は、当該データをブロックチェック符号生成空間４０４に書き込むため、ライトコマンドとアドレス（ブロックチェック符号生成空間４０４に属する）をシステムコントローラ１０９に発行する。プロセッサ１０１はさらに当該データをシステムコントローラ１０９に送信する。前記アドレスと前記ライトコマンドを受信したシステムコントローラ１０９は、当該データをプロセッサから受信し、当該データを保護するためのブロックチェック符号を生成し、生成したブロックチェック符号８０１をそのデータと共にメモリ１０２に書き込む（図１０のステップ１０１４参照）。
【０１２２】
次に、ＯＳ１１５は、ＨＢＡ１０４に、コピーされたデータをチェックなし空間から読み出してＨＤＤ１０３に転送することを指示する（１１０８）。ステップ１１０８において、チェックなし空間とは、図３におけるブロックチェック符号生成３０５の値が「０」であり、かつ、ブロックチェック符号検査３０６の値が「００」である行に対応するアドレス空間である。この指示を受信したＨＢＡ１０４は、メモリ１０２のチェックなし空間からデータ及びそのデータに付加されたブロックチェック符号８０１を読み出し、それらをＨＤＤ１０３に転送する。これらのデータ及びブロックチェック符号８０１は、チェックなし空間から読み出されるため、そのブロックチェック符号８０１が検査されることも、さらにブロックチェック符号が生成されることもなく、ＨＤＤ１０３に転送される（図１０のステップ１００７参照）。転送されたデータ及びブロックチェック符号は、共に、ＨＤＤ１０３に格納される。転送が完了すると、ＨＢＡ１０４は、転送完了報告をＯＳ１１５に送信する（図１２参照）。
【０１２３】
ＯＳ１１５は、データの転送完了報告をＨＢＡ１０４から受信すると（１１０９）、処理を終了する（１１１０）。
【０１２４】
ここで、受信したパケットのデータがステップ１１０３においてチェックなし空間４０３のアドレス「０ｘ００００００００」に書き込まれ、そのデータがステップ１１０７においてブロックチェック符号生成空間４０４のアドレス「０ｘ３０００００００」にコピーされ、そのコピーされたデータがステップ１１０８においてチェックなし空間のアドレス「０ｘ１０００００００」からＨＤＤ１０３に転送される場合を例として説明する。
【０１２５】
この場合、実際には、受信したパケットのデータがステップ１１０３において実アドレス空間４０２のアドレス「０ｘ００００００００」に格納される。そして、ステップ１１０７において、実アドレス空間４０２のアドレス「０ｘ００００００００」からデータが読み出され、ブロックチェック符号８０１が生成され、そのデータ及びブロックチェック符号８０１が実アドレス空間４０２のアドレス「０ｘ１０００００００」に格納される。そして、ステップ１１０８において、実アドレス空間４０２のアドレス「０ｘ１０００００００」からデータ及びブロックチェック符号８０１が読み出され、それらがＨＤＤ１０３に転送される。
【０１２６】
図１２は、本発明の実施の形態の情報処理装置１００において、ＨＢＡ１０４がＨＤＤ１０３にデータを転送する処理を示すフローチャートである。
【０１２７】
処理が開始されて（１２０１）、ＯＳ１１５からデータ転送コマンドを受信すると（１２０２）、ＨＢＡ１０４は、受信したデータ転送コマンドに含まれるメモリアドレスからデータを読み出す（１２０３）。ステップ１２０２において受信したコマンドは、図１１のステップ１１０８において送信されたものである。このとき、システムコントローラ１０９は、指示されたアドレスが属するアドレス空間４０１内の空間に応じて、ブロックチェック符号の生成又は検査を実行するか否かを判定する（図１０のステップ１００６から１００９参照）。
【０１２８】
次に、ＨＢＡ１０４は、読み出したデータをＨＤＤ１０３に転送する（１２０４）。
【０１２９】
次に、ＨＢＡ１０４は、データ転送の完了をＯＳ１１５に報告して（１２０５）、処理を終了する（１２０６）。
【０１３０】
図１３は、本発明の実施の形態の情報処理装置１００がＨＤＤ１０３からデータを読み出し、ＬＡＮ１０５を介してホスト計算機にデータを送信するときにＯＳ１１５が実行する処理を示すフローチャートである。
【０１３１】
処理が開始すると（１３０１）、ＯＳ１１５は、データをメモリ１０２のブロックチェック符号検査空間（符号削除）４０５に転送することをＨＢＡ１０４に指示する（１３０２）。
【０１３２】
ステップ１３０２の指示を受信したＨＢＡ１０４は、ブロックチェック符号検査空間（符号削除）４０５へ指示されたデータを書き込む（１３０３）。このとき、システムコントローラ１０９は、データに付加されたブロックチェック符号８０１を検査し、そのブロックチェック符号８０１をデータから削除した後、データのみをメモリ１０２に書き込む（図１０のステップ１０１４参照）。
【０１３３】
ＯＳ１１５は、ＨＢＡ１０４からデータ転送の完了報告を受信する（１３０４）。
【０１３４】
次に、ＯＳ１１５は、ステップ１３０３におけるブロックチェック符号８０１の検査の結果、誤りがあるか否かを判定する（１３０５）。
【０１３５】
ステップ１３０５において誤りがあると判定された場合、ＨＢＡ１０４から転送されたデータが誤りを含んでいる。この場合、ＯＳ１１５は、障害処理を実行して（１３１０）、処理を終了する（１３１１）。障害処理については、後で詳細に説明する（図１７参照）。
【０１３６】
ステップ１３０５において誤りがないと判定された場合、ＨＢＡ１０４から転送されたデータは誤りを含んでいない。この場合、ＯＳ１１５は、ファイルシステム処理を実行する（１３０６）。このファイルシステム処理は、図１１のステップ１１０６において実行される処理の逆の処理である。
【０１３７】
次に、ＯＳ１１５は、ファイルシステム処理されたデータにＴＣＰチェックサム７０３及びＩＰチェックサム７０５を付加する（１３０７）。
【０１３８】
次に、ＯＳ１１５は、ＬＡＮコントローラ１０５に、チェックサムが付加されたデータをチェックなし空間から読み出すことを指示する（１３０８）。ステップ１３０８において、チェックなし空間とは、図３におけるブロックチェック符号生成３０５の値が「０」であり、かつ、ブロックチェック符号検査３０６の値が「００」である行に対応するアドレス空間である。この指示を受信したＬＡＮコントローラ１０５は、指示されたデータをチェックなし空間から読み出して、ＬＡＮ１０６を介してホスト計算機に転送する。
【０１３９】
ＯＳ１１５は、ＬＡＮコントローラ１０５からデータ転送完了報告を受信すると（１３０９）、処理を終了する（１３１１）。
【０１４０】
図１４は、本発明の実施の形態の情報処理装置１００がＬＡＮ１０５を介してホスト計算機にデータを送信するときにＨＢＡ１０４が実行する処理を示すフローチャートである。
【０１４１】
処理が開始して（１４０１）、ＯＳ１１５からデータ転送コマンドを受信すると（１４０２）、ＨＢＡ１０４は、コマンドによって指示されたデータをＨＤＤ１０３から読み出す（１４０３）。
【０１４２】
次に、ＨＢＡ１０４は、読み出したデータを、コマンドによって指示されたメモリ１０２のアドレスに転送する（１４０４）。このとき、システムコントローラ１０９は、指示されたアドレスが属するアドレス空間４０１内の空間に応じて、ブロックチェック符号の生成又は検査を実行するか否かを判定する（図１０のステップ１０１２から１０１５参照）。
【０１４３】
次に、ＨＢＡ１０４は、データ転送完了をＯＳ１１５に送信して（１４０５）、処理を終了する（１４０６）。
【０１４４】
以上の説明において、ブロックチェック符号８０１は、ＨＢＡ１０４がメモリ１０２とＨＤＤ１０３との間で転送するデータにのみ付加され、ＬＡＮ１０５を介して情報処理装置１００とホスト計算機との間で転送されるデータ（パケット）には付加されない。しかし、ホスト計算機が本実施の形態のブロックチェック符号８０１の生成及び検査をする機能を備える場合、ＬＡＮ上で実行されるデータ転送にも本実施の形態を適用することができる。
【０１４５】
図１５は、本発明の実施の形態の情報処理装置１００が、ブロックチェック符号８０１が付加されたデータを、ＬＡＮ１０５を介してホスト計算機に送信するときにＯＳ１１５が実行する処理を示すフローチャートである。
【０１４６】
処理が開始されると（１５０１）、ＯＳ１１５は、メモリ１０２に格納されたデータにＴＣＰチェックサム７０３及びＩＰチェックサム７０５を付加する（１５０２）。
【０１４７】
次に、ＯＳ１１５は、チェックサムが付加されたデータをブロックチェック符号生成空間から読み出すことをＬＡＮコントローラ１０６に指示する（１５０３）。ステップ１５０３において、ブロックチェック符号生成空間とは、図３におけるブロックチェック符号生成３０５の値が「１」であり、かつ、ブロックチェック符号検査３０６の値が「００」である行（図示省略）に対応するアドレス空間である。ＬＡＮコントローラ１０６は、指示されたデータをブロックチェック符号生成空間から読み出す。このとき、システムコントローラ１０９は、読み出されたデータを保護するためのブロックチェック符号８０１を生成し、そのデータ及びブロックチェック符号８０１をシステムバス１１２に送出する（図１０のステップ１００８参照）。ＬＡＮコントローラ１０６は、読み出されたデータ及びブロックチェック符号８０１を、ＬＡＮ１０５を介してホスト計算機に転送し、その転送が完了すると、転送完了報告をＯＳ１１５に送信する。
【０１４８】
ＯＳ１１５は、ＬＡＮコントローラ１０６から転送完了報告を受信すると（１５０４）、処理を終了する（１５０５）。
【０１４９】
図１６は、本発明の実施の形態の情報処理装置１００が、ブロックチェック符号８０１が付加されたデータを、ＬＡＮ１０５を介してホスト計算機から受信したときにＯＳ１１５が実行する処理を示すフローチャートである。
【０１５０】
処理が開始され（１６０１）、ＬＡＮコントローラ１０６からパケット受信報告を受信すると（１６０２）、ＯＳ１１５は、受信したパケットをメモリ１０２のブロックチェック符号検査空間（符号削除）４０５に転送することをＬＡＮコントローラ１０６に指示する（１６０３）。ＬＡＮコントローラ１０６は、メモリ１０２のブロックチェック符号検査空間（符号削除）４０５を対象として、受信したパケットを書き込む。このとき、システムコントローラ１０９は、受信したパケットに付加されたブロックチェック符号８０１を検査し、そのパケットからブロックチェック符号を削除して、パケットのみをメモリ１０２に書き込む（図１０のステップ１０１５参照）。
【０１５１】
次に、ＯＳ１１５は、受信したパケットのメモリ１０２への転送が完了したことを確認する（１６０４）。
【０１５２】
次に、ＯＳ１１５は、ステップ１６０３におけるブロックチェック符号８０１の検査の結果、異常があったか否かを判定する（１６０５）。
【０１５３】
ステップ１６０５において異常があったと判定された場合、受信したパケットは誤りを含んでいる。この場合、ＯＳ１１５は、障害処理を実行して（１６０７）、処理を終了する（１６０８）。
【０１５４】
一方、ステップ１６０５において異常がなかったと判定された場合、受信したパケットは誤りを含んでいない。この場合、ＯＳ１１５は、ＩＰチェックサム７０５及びＴＣＰチェックサム７０３を検査して（１６０６）、処理を終了する（１６０８）。
【０１５５】
図１７は、本発明の実施の形態のＯＳ１１５が実行する障害処理を示すフローチャートである。
【０１５６】
図１７の障害処理は、ブロックチェック符号８０１の検査の結果、誤りが検出された場合に実行される（図１３のステップ１３１０及び図１６のステップ１６０７参照）。
【０１５７】
誤りが検出されて障害処理が開始されると（１７０１）、ＯＳ１１５は、コンソール（図示省略）に障害情報を出力する（１７０２）。コンソールは、情報処理装置１００が備え、システム管理者に対して情報処理装置１００のハードウェア構成や障害の有無等の状態を表示したり、システム管理者が情報処理装置１００に命令を入力するための入出力装置である。
【０１５８】
次に、ＯＳ１１５は、誤りが検出された転送処理（例えば、図１３又は図１６に示す処理）を再度実行することをＬＡＮコントローラ１０６又はＨＢＡ１０４に指示する（１７０３）。例えば、雑音等の一時的な外乱によって誤りが発生した場合、再度実行することによって誤りが解消する場合があるためである。
【０１５９】
次に、ＯＳ１１５は、ステップ１７０３において再度実行された転送処理の結果、誤りが検出されたか否かを判定する（１７０４）。
【０１６０】
ステップ１７０４において誤りが検出されなかったと判定された場合、ＯＳ１１５は、コンソールに障害情報を出力して（１７０５）、障害処理を終了する（１７１０）。
【０１６１】
一方、ステップ１７０４において誤りが検出されたと判定された場合、ＯＳ１１５は、リトライ回数が所定のリトライ閾値を超えたか否かを判定する（１７０６）。リトライ閾値とは、ステップ１７０３が実行された回数である。ＯＳ１１５は、例えば、メモリ１０２内の所定の領域にリトライ回数を格納してもよい。リトライ閾値とは、リトライ回数の閾値、言い換えると、許容されるリトライ回数である。システム管理者が予めリトライ閾値を定めてもよい。ＯＳ１１５は、メモリ１０２内の所定の領域にリトライ閾値を格納してもよい。
【０１６２】
ステップ１７０６において、リトライ回数がリトライ閾値を超えていないと判定された場合、ＯＳ１１５は、リトライ回数を１増加させて（１７０７）、ステップ１７０２に戻る。なお、処理を再度実行するたびにコンソールに障害情報を表示する（１７０２）必要がない場合、ステップ１７０７の後、ステップ１７０３に戻ってもよい。
【０１６３】
一方、ステップ１７０６において、リトライ回数がリトライ閾値を超えたと判定された場合、恒久的な障害が発生している可能性が高い。この場合、誤り発生の原因と考えられる部位をそれ以上使用しないことが望ましい。このため、ＯＳ１１５は、誤りが発生した処理に関連する部位を障害部位として閉塞する（１７０８）。そして、ＯＳ１１５は、コンソールに障害情報を出力して（１７０９）、障害処理を終了する（１７１０）。情報処理装置１００が障害部位を特定できなかった場合には、情報処理装置１００はコンソール（図示せず）に表示して運転を停止する。
【０１６４】
以上の本発明の実施の形態によれば、システムコントローラ１０９は、ＬＡＮコントローラ１０６又はＨＢＡ１０４は、ＯＳ１１５によって指示されたメモリ１０２上のアドレスを対象としてデータの転送（すなわち、書き込み又は読み出し）を実行する。システムコントローラ１０９は、そのアドレスに従って、データを保護するためのブロックチェック符号の生成又は検査を実行する。その結果、データは、ＨＢＡ１０４からＨＤＤ１０３に至る経路においてもブロックチェック符号によって保護される。このブロックチェック符号の生成及び検査は、システムコントローラ１０９によって実行されるため、本実施の形態を実現することによってプロセッサ１０１の負荷が増大させず情報処理装置の性能を低下させることはない。また、従来と同様に、データの転送はＬＡＮコントローラ１０６及びＨＢＡ１０４によって制御されるため、本実施の形態は従来のシステムとの親和性が高い。また、メモリに対する書き込み又は読み出しのアドレスを選択することによって、ブロックチェック符号の生成又は検査をするか否かを選択することができる。
【図面の簡単な説明】
【０１６５】
【図１】本発明の実施の形態の情報処理装置の構成を示すブロック図である。
【図２】本発明の実施の形態のシステムコントローラの構成を示すブロック図である。
【図３】本発明の実施の形態のアドレス空間属性テーブルの説明図である。
【図４】本発明の実施の形態のメモリのアドレス空間の説明図である。
【図５】データに付加されるパリティの説明図である。
【図６】本発明の実施の形態のブロックチェック符号の説明図である。
【図７】従来の技術によるデータの保護の説明図である。
【図８】本発明の実施の形態のデータの保護の説明図である。
【図９】本発明の実施の形態のＬＡＮコントローラがデータを受信したときに実行する処理を示すフローチャートである。
【図１０】本発明の実施の形態のシステムコントローラがデータを転送するときに実行する処理を示すフローチャートである。
【図１１】本発明の実施の形態の情報処理装置がＬＡＮを介してホスト計算機からデータを受信したときにＯＳが実行する処理を示すフローチャートである。
【図１２】本発明の実施の形態の情報処理装置がＬＡＮを介してホスト計算機からデータを受信したときにＨＢＡが実行する処理を示すフローチャートである。
【図１３】本発明の実施の形態の情報処理装置がＬＡＮを介してホスト計算機にデータを送信するときにＯＳが実行する処理を示すフローチャートである。
【図１４】本発明の実施の形態の情報処理装置がＬＡＮを介してホスト計算機にデータを送信するときにＨＢＡが実行する処理を示すフローチャートである。
【図１５】本発明の実施の形態の情報処理装置が、ブロックチェック符号が付加されたデータを、ＬＡＮを介してホスト計算機に送信するときにＯＳが実行する処理を示すフローチャートである。
【図１６】本発明の実施の形態の情報処理装置が、ブロックチェック符号が付加されたデータを、ＬＡＮを介してホスト計算機から受信したときにＯＳが実行する処理を示すフローチャートである。
【図１７】本発明の実施の形態のＯＳが実行する障害処理を示すフローチャートである。
【符号の説明】
【０１６６】
１００  情報処理装置
１０１  プロセッサ
１０２  メモリ
１０３  ハードディスクドライブ（ＨＤＤ）
１０４  ホストバスアダプタ（ＨＢＡ）
１０５  ローカルエリアネットワーク（ＬＡＮ）
１０６  ＬＡＮコントローラ
１０７  起動プログラム
１０８  フラッシュメモリ
１０９  システムコントローラ
１１０  メモリバス
１１１  プロセッサバス
１１２、１１３  システムバス
１１４  フラッシュメモリバス
１１５  オペレーティングシステム（ＯＳ）
２０１  プロセッサバスインタフェースユニット
２０２  メモリ制御ユニット
２０３  システムバス制御ユニット
２０４  フラッシュメモリバス制御ユニット
２０５  データルーティング制御ユニット
２０６  アドレス空間属性テーブル
４０１  アドレス空間
４０２  実アドレス空間
４０３  チェックなし空間
４０４  ブロックチェック符号生成空間
４０５  ブロックチェック符号検査空間（符号削除）
４０６  ブロックチェック符号検査空間（符号削除しない）
８０１  ブロックチェック符号
【図１】
2007207062.tif 000003
【図２】
2007207062.tif 000004
【図３】
2007207062.tif 000005
【図４】
2007207062.tif 000006
【図５】
2007207062.tif 000007
【図６】
2007207062.tif 000008
【図７】
2007207062.tif 000009
【図８】
2007207062.tif 000010
【図９】
2007207062.tif 000011
【図１０】
2007207062.tif 000012
【図１１】
2007207062.tif 000013
【図１２】
2007207062.tif 000014
【図１３】
2007207062.tif 000015
【図１４】
2007207062.tif 000016
【図１５】
2007207062.tif 000017
【図１６】
2007207062.tif 000018
【図１７】
2007207062.tif 000019