(57)【要約】【課題】２台のＳＳＤで構成されるメモリシステムでのメモリの試験方法の結果を簡易に通知することができるメモリシステムを提供する。【解決手段】実施形態によれば、メモリ１１Ａ−１，…，１１Ｂ−１，…とコントローラ１２Ａ，１２Ｂを有する２台のＳＳＤ１０Ａ，１０Ｂが通信線を介して接続される。コントローラ１２Ａ，１２Ｂは、メモリ１１Ａ−１，…の自己診断処理を行う診断部１２４Ａ，１２４Ｂと、相手側のコントローラ１２Ａ，１２Ｂとの間で通信を行う通信部１２２Ａ，１２２Ｂと、ステータス出力部１２５Ａ，１２５Ｂと、を備える。通信部１２２Ａ，１２２Ｂは、自己診断処理前に行う起動時同期処理と、自己診断処理後に行う終了時同期処理と、を行う。診断部１２４Ａ，１２４Ｂは、２台のＳＳＤ１０Ａ，１０Ｂの診断結果から総合診断結果を求め、一方のＳＳＤ１０Ａ，１０Ｂのステータス出力部１２５Ａ，１２５Ｂが総合診断結果を出力する。【選択図】図２
2013171337.tif 000002
【特許請求の範囲】
【請求項１】
記憶部、およびホスト装置と前記記憶部との間でデータの転送を行うコントローラを有する２台の記憶装置が、双方向通信が可能な通信線を介して接続されるメモリシステムであって、
前記コントローラは、
自コントローラに接続される前記記憶部の自己診断処理を行う診断部と、
前記通信線を介して相手側の前記コントローラとの間で通信を行う通信部と、
前記診断部による前記２台の記憶装置の診断結果を出力する診断結果出力部と、
を備え、
前記通信部は、前記２つの記憶装置での前記診断部による前記自己診断処理を実行するにあたって所定のタイミングで行う第１同期処理と、前記自己診断処理が終了した後に自記憶装置での診断結果を含む終了時同期用フレームを相手側の前記記憶装置に前記通信線を介して送信し、２台の前記記憶装置で前記自己診断処理終了の同期を取る第２同期処理と、を行い、
前記診断部は、自記憶装置の診断結果と前記第２同期処理で得られる相手側の前記記憶装置の診断結果から総合診断結果を求める総合診断結果判定処理を行い、
２台のうち一方の前記記憶装置の前記診断結果出力部が、前記診断部によって求められた前記総合診断結果を出力することを特徴とするメモリシステム。
【請求項２】
前記記憶装置は、乱数を生成する乱数生成部さらに有し、
前記通信部は、前記第１同期処理で前記乱数生成部で生成される乱数をランダム値として相手側の前記記憶装置に送信するとともに、前記ランダム値と前記相手側の記憶装置から受信したランダム値とを用いて自記憶装置がマスタであるかスレーブであるかを決定し、
前記総合診断結果は、前記マスタと判定された前記記憶装置の前記診断結果出力部によって出力されることを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記診断部は、前記総合診断結果として、自記憶装置と相手側の記憶装置のいずれか一方がエラー終了であるときにエラー終了と判定し、両方が正常終了であるときに正常終了と判定することを特徴とする請求項１または２に記載のメモリシステム。
【請求項４】
前記第２同期処理は、前記自己診断処理が正常に終了した場合または前記自己診断処理がエラー終了した場合に実行されることを特徴とする請求項１から３のいずれか１つに記載のメモリシステム。
【請求項５】
前記診断部は、前記自己診断処理を所定のタイミングで中断し、
前記通信部は、前記自己診断処理の中断中に、相手側の前記記憶装置からフレームの受信があるかをモニタする処理をさらに行うことを特徴とする請求項１から４のいずれか１つに記載のメモリシステム。
【請求項６】
前記相手側の記憶装置からエラー終了を示す前記終了時同期用フレームを受信した場合に、
前記診断部は、前記自己診断処理を終了し、
前記通信部は、前記自己診断処理の中断の後前記第２同期処理に移行することを特徴とする請求項５に記載のメモリシステム。
【請求項７】
前記相手側の記憶装置から前記自己診断処理の中断中にフレームを受信しない場合、あるいは前記相手側の記憶装置から正常終了を示す前記終了時同期用フレームを受信した場合には、前記診断部は、前記自己診断処理の中断の後つぎの自己診断処理を実行することを特徴とする請求項５に記載のメモリシステム。
【請求項８】
前記記憶部は、不揮発性半導体記憶装置を含むことを特徴とする請求項１から７のいずれか１つに記載のメモリシステム。
【請求項９】
前記通信線は、２本のシリアル通信線によって構成されることを特徴とする請求項１から８のいずれか１つに記載のメモリシステム。
【請求項１０】
前記２台の記憶装置は、１枚のプリント基板に配置され、
一方の前記記憶装置は、前記プリント基板の一方の主面に配置され、他方の前記記憶装置は、前記プリント基板の他方の主面に配置されることを特徴とする請求項１から９のいずれか１つに記載のメモリシステム。
【請求項１１】
前記通信部は、前記第１同期処理では、自記憶装置の起動通知、起動通知に対する第１応答通知、前記第１応答通知に対する第２応答通知の送信状態を示す同期通信ステータスを含むフレームを前記２つの記憶装置間で通信し、自記憶装置と前記相手側の記憶装置の前記起動通知に対する前記第２応答通知を受信するまで前記第１同期処理を行うことを特徴とする請求項１〜１０のいずれか１つに記載のメモリシステム。
【請求項１２】
前記通信部は、前記第２同期処理では、自記憶装置の終了通知、終了通知に対する第３応答通知、前記第３応答通知に対する第４応答通知の送信状態を示す同期通信ステータスを含む前記終了時同期用フレームを前記２つの記憶装置間で通信し、
前記総合診断結果を出力する側の記憶装置の前記通信部は、前記相手側の記憶装置から前記第４応答通知を受信するまで前記第２同期処理を行うことを特徴とする請求項１〜１０のいずれか１つに記載のメモリシステム。
【請求項１３】
記憶部、およびホスト装置と前記記憶部との間でデータの転送を行うコントローラを有する２台の記憶装置が、プリント基板に配置された状態で、双方向通信が可能な通信線を介して接続されるメモリシステムの試験方法であって、
前記メモリシステムに電源が供給されると、前記２台の記憶装置間で前記通信線を介して第１同期処理を行う第１同期工程と、
前記第１同期処理の終了後にそれぞれの前記記憶装置で自己診断処理を実行する自己診断処理工程と、
前記自己診断終了後に、自記憶装置の診断結果を含む終了時同期用フレームを前記通信線を介して相互に通信し、２台の前記記憶装置で前記自己診断処理終了の同期を取る第２同期処理を行う第２同期工程と、
自記憶装置の診断結果と前記第２同期処理で得られる相手側の前記記憶装置の診断結果から総合診断結果を求める総合診断結果判定工程と、
２台のうち一方の前記記憶装置によって前記総合診断結果を出力する総合診断結果出力工程と、
を含むことを特徴とするメモリシステムの試験方法。
【請求項１４】
前記第１同期工程では、前記２台の記憶装置が生成したランダム値を互いに通知し、前記ランダム値を用いて、前記２台の記憶装置の間でマスタとスレーブを決定する処理を行い、
前記総合診断結果出力工程では、前記マスタと決定された記憶装置が前記総合診断結果を出力することを特徴とする請求項１３に記載のメモリシステムの試験方法。
【請求項１５】
前記総合診断結果出力工程では、前記総合診断結果として、自記憶装置と相手側の記憶装置のいずれか一方がエラー終了であるときにエラー終了と判定し、両方が正常終了であるときに正常終了と判定することを特徴とする請求項１３または１４に記載のメモリシステムの試験方法。
【請求項１６】
前記自己診断処理工程では、前記自己診断処理中に所定のタイミングで前記自己診断処理を中断し、相手側の前記記憶装置からのフレームの受信があるかをモニタするモニタ処理を行うことを特徴とする請求項１３から１５のいずれか１つに記載のメモリシステムの試験方法。
【請求項１７】
前記自己診断処理工程の前記モニタ処理中に、前記相手側の前記記憶装置からエラー終了を示す前記終了時同期用フレームを受信した場合に、前記モニタ処理後に前記第２同期工程に移ることを特徴とする請求項１６に記載のメモリシステムの試験方法。
【請求項１８】
前記自己診断処理工程の前記モニタ処理中に、前記相手側の記憶装置から正常終了を示す前記終了時同期用フレームを受信した場合あるいは前記相手側の記憶装置からフレームを受信しなかった場合に、前記モニタ処理後につぎの自己診断処理を実行することを特徴とする請求項１６に記載のメモリシステムの試験方法。
【請求項１９】
前記第１同期工程では、前記２つの記憶装置間で前記第１同期処理を所定の時間内に完了できない場合に、前記第１同期処理が失敗したとして前記第１同期工程以降の処理を終了させることを特徴とする請求項１３から１８のいずれか１つに記載のメモリシステムの試験方法。
【請求項２０】
前記記憶部は、不揮発性半導体記憶装置を含むことを特徴とする請求項１３から１９のいずれか１つに記載のメモリシステムの試験方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムとその試験方法に関する。
【背景技術】
【０００２】
近年では、ＮＡＮＤ型フラッシュメモリ装置を用いたＳＳＤの記憶容量が大容量化している。たとえば２台のＳＳＤを用いてＲＡＩＤ０を構成する場合において個々のＳＳＤの自己診断を行う方法については、提案されていなかった。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−０７９４４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、２台のＳＳＤで構成されるメモリシステムでのメモリの試験方法の結果を簡易に通知することができるメモリシステムとその試験方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一つの実施形態によれば、記憶部、およびホスト装置と前記記憶部との間でデータの転送を行うコントローラを有する２台の記憶装置が、双方向通信が可能な通信線を介して接続されるメモリシステムが提供される。前記コントローラは、自コントローラに接続される前記記憶部の自己診断処理を行う診断部と、前記通信線を介して相手側の前記コントローラとの間で通信を行う通信部と、前記診断部による前記２台の記憶装置の診断結果を出力する診断結果出力部と、を備える。前記通信部は、前記２つの記憶装置での前記診断部による前記自己診断処理を実行するにあたって所定のタイミングで行う第１同期処理と、前記自己診断処理が終了した後に自記憶装置での診断結果を含む終了時同期用フレームを相手側の前記記憶装置に前記通信線を介して送信し、２台の前記記憶装置で前記自己診断処理終了の同期を取る第２同期処理と、を行う。前記診断部は、自記憶装置の診断結果と前記第２同期処理で得られる相手側の前記記憶装置の診断結果から総合診断結果を求める総合診断結果判定処理を行う。そして、２台のうち一方の前記記憶装置の前記診断結果出力部が、前記診断部によって求められた前記総合診断結果を出力する。
【図面の簡単な説明】
【０００６】
【図１】図１は、実施形態によるメモリシステムの構成の一例を模式的に示す図である。
【図２】図２は、実施形態によるメモリシステムの機能構成の一例を模式的に示すブロック図である。
【図３】図３は、同期用データフレームの構成の一例を示す図である。
【図４】図４は、総合診断結果情報の一例を示す図である。
【図５】図５は、起動時の同期処理の手順の一例を示すフローチャートである。
【図６】図６は、起動時の同期処理手順の一例を示すシーケンス図である。
【図７】図７は、終了時の同期処理の手順の一例を示すフローチャートである。
【図８】図８は、終了時の同期処理手順の一例を示すシーケンス図である。
【図９】図９は、自己診断処理から終了時同期処理への流れを模式的に示す図である。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかるメモリシステムとその試験方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【０００８】
図１は、実施形態によるメモリシステムの構成の一例を模式的に示す図であり、（ａ）は側面図であり、（ｂ）は（ａ）の上面図であり、（ｃ）は（ａ）の下面図である。このメモリシステム１は、プリント基板２の上面に不揮発性記憶装置からなるメモリチップ（メモリ）１１Ａと、メモリチップ１１Ａを制御するコントローラチップ（コントローラ）１２Ａと、を含む素子が配置され、下面に不揮発性記憶装置からなるメモリチップ（メモリ）１１Ｂと、メモリチップ１１Ｂを制御するコントローラチップ（コントローラ）１２Ｂと、を含む素子が配置された構成を有する。各素子は、プリント基板２上に形成された図示しないランドに各素子のバンプなどの外部端子が接続されるように配置される。また、プリント基板２のランドは、図示しない配線パターンと接続されている。さらに、プリント基板２の上面には、たとえばパーソナルコンピュータなどのホスト装置と接続されるコネクタ１３が設けられている。
【０００９】
図１の例では、プリント基板２の上面には、８個のメモリチップ１１Ａと１個のコントローラチップ１２Ａが配置され、これらで１つのＳＳＤ（Solid  State  Drive）１０Ａを構成している。また、プリント基板２の下面にも、８個のメモリチップ１１Ｂと１個のコントローラチップ１２Ｂが配置され、これらで１つのＳＳＤ１０Ｂを構成している。つまり、上面のＳＳＤ１０Ａと下面のＳＳＤ１０Ｂとは独立にデータの読み書きを行うことが可能である。なお、メモリチップ１１Ａ，１１Ｂとして、たとえばＮＡＮＤ型フラッシュメモリ装置などの不揮発性半導体記憶装置を用いることができる。
【００１０】
図２は、実施形態によるメモリシステムの機能構成の一例を模式的に示すブロック図である。上記したように、このメモリシステム１は、２台のＳＳＤ１０Ａ，１０Ｂを有し、ＳＳＤ１０Ａは、メモリ１１Ａ−１、メモリ１１Ａ−２、・・・と、これらのメモリ１１Ａ−１，１１Ａ−２，・・・のデータ管理などを行うコントローラ１２Ａと、を有し、ＳＳＤ１０Ｂは、メモリ１１Ｂ−１、メモリ１１Ｂ−２、・・・と、これらのメモリ１１Ｂ−１，１１Ｂ−２，・・・のデータ管理などを行うコントローラ１２Ｂと、を有する。メモリ１１Ａ−１，１１Ａ−２，・・・，１１Ｂ−１，１１Ｂ−２，・・・として、たとえばＮＡＮＤ型フラッシュメモリ装置やＤＲＡＭ（Dynamic  Random  Access  Memory）などを例示することができる。コントローラ１２Ａ，１２Ｂとメモリ１１Ａ−１，１１Ａ−２，・・・，１１Ｂ−１，１１Ｂ−２，・・・には、外部の電源回路３１からプリント基板２上の電源ピン２３Ａ，２３Ｂを介して電源電圧が供給される。なお、ここでは、メモリ１１Ａ−１，１１Ｂ−１は、データを不揮発に記憶することができるＮＡＮＤ型フラッシュメモリ装置などのメモリによって構成され、メモリ１１Ａ−２，１１Ｂ−２は、メモリ１１Ａ−１，１１Ｂ−１と図示しないホスト装置との間でデータの受け渡しなどに使用されるＤＲＡＭなどのメモリによって構成されるものとする。
【００１１】
コントローラ１２Ａ，１２Ｂは、メモリ１１Ａ−１，１１Ｂ−１と図示しないホスト装置との間のデータの受け渡しを制御したり、メモリ１１Ａ−１，１１Ｂ−１，１１Ａ−２，１１Ｂ−２でのデータの格納位置を管理したりする機能のほかに、ＳＳＤ１０Ａ，１０Ｂを構成するメモリ１１Ａ−１，１１Ａ−２，・・・，１１Ｂ−１，１１Ｂ−２，・・・やＳＲＡＭ１２１Ａ，１２１Ｂを自己診断する機能を有する。図２では、メモリを自己診断する機能に関連する構成要素を図示している。
【００１２】
コントローラ１２Ａ，１２Ｂは、ＳＲＡＭ（Static  Random  Access  Memory）１２１Ａ，１２１Ｂと、通信部１２２Ａ，１２２Ｂと、乱数生成部１２３Ａ，１２３Ｂと、診断部１２４Ａ，１２４Ｂと、ステータス出力部１２５Ａ，１２５Ｂと、を備える。ＳＲＡＭ１２１Ａ，１２１Ｂは、コントローラ１２Ａ，１２Ｂ内でのたとえばプログラム実行処理の際に使用されるメモリである。
【００１３】
通信部１２２Ａ，１２２Ｂは、プリント基板２に設けられる他方のＳＳＤ１０Ｂ，１０Ａのコントローラ１２Ｂ，１２Ａと双方向通信を行い、電源オン時、診断部１２４Ａ，１２４Ｂによる自己診断中および自己診断終了時に自ＳＳＤ１０Ａ，１０Ｂのステータスを送信し、また相手のＳＳＤ１０Ａ，１０Ｂのステータスを受信する機能を有する。図２の例では、通信部１２２Ａ，１２２Ｂとして、ＵＡＲＴ（Universal  Asynchronous  Receiver  Transmitter）を用いる場合を例示している。そのため、ＳＳＤ１０Ａ，１０Ｂには、送信ポート２１Ａ，２１Ｂと受信ポート２２Ａ，２２Ｂが設けられ、ＳＳＤ１０Ａの送信ポート２１ＡはＳＳＤ１０Ｂの受信ポート２２Ｂと接続され、ＳＳＤ１０Ａの受信ポート２２ＡはＳＳＤ１０Ｂの送信ポート２１Ｂと接続されるように、ケーブルが接続される。そして、２つの通信部１２２Ａ，１２２Ｂ間で、シリアル通信によって後述するデータフレームの送受信が行われる。
【００１４】
通信部１２２Ａ，１２２Ｂは、上記したように、電源オン時には、自己診断を相手側のＳＳＤと同期して実行するように、起動時同期用データフレームを送受信し、自己診断中または自己診断終了時には、自己診断を終了させるように終了時同期用データフレームを送受信する。図３は、同期用データフレームの構成の一例を示す図であり、（ａ）は、起動時同期用データフレームの構成の一例を示しており、（ｂ）は、終了時同期用データフレームの構成の一例を示している。
【００１５】
起動時同期用データフレーム２１０は、起動時同期用データフレーム２１０の始まりであることを示す起動時ＩＤ２１１と、起動時ＩＤの１の補数２１２と、乱数生成部１２３Ａ，１２３Ｂから取得した値である起動時ランダム値２１３と、起動時における自ＳＳＤのステータスを示す同期通信ステータス２１４と、起動時同期用データフレーム２１０のデータに異常がないかを確認するチェックサム２１５と、の各フィールドを有する。
【００１６】
同期通信ステータス２１４は、自ＳＳＤのステータスを示すものであり、ここではステータスとして、起動通知送信ステータスと、起動通知ＡＣＫ送信ステータスと、ＡＣＫ受信通知ステータスと、を設けるものとし、それぞれのステータスにフラグを立てることで現在のステータスを示すものとする。起動通知送信ステータスは、電源オン後に最初に相手側ＳＳＤに対して「起動通知送信ステータス」にフラグを立てた起動時同期用データフレーム２１０を送信したかを示すものである。起動通知ＡＣＫ送信ステータスは、「起動通知送信ステータス」にフラグが立てられた起動時同期用データフレーム２１０を受信した後、それに対する応答である「起動通知ＡＣＫ送信ステータス」にフラグが立てられた起動時同期用データフレーム２１０を送信したかを示すものである。そして、ＡＣＫ受信通知ステータスは、相手側ＳＳＤから「起動通知ＡＣＫ送信ステータス」にフラグが立てられた起動時同期用データフレーム２１０を受信したことを示す「ＡＣＫ受信通知ステータス」にフラグが立てられた起動時同期用データフレーム２１０を送信したかを示すものである。
【００１７】
また、終了時同期用データフレーム２２０は、終了時同期用データフレーム２２０の始まりであることを示す終了時ＩＤ２２１と、終了時ＩＤの１の補数２２２と、診断部１２４Ａ，１２４Ｂによる診断結果を示す実行ステータス２２３と、終了時における自ＳＳＤのステータスを示す同期通信ステータス２２４と、終了時同期用データフレーム２２０のデータに異常がないかを確認するチェックサム２２５と、の各フィールドを有する。
【００１８】
実行ステータス２２３は、診断部１２４Ａ，１２４Ｂによる自己診断の終了状態を示すものであり、ここではステータスとして、正常終了ステータスと、エラー終了ステータスと、を設けるものとし、それぞれのステータスにフラグを立てることで現在のステータスを示すものとする。正常終了ステータスは、診断部１２４Ａ，１２４Ｂによる診断が正常終了した場合にフラグが立てられる。また、エラー終了ステータスは、診断部１２４Ａ，１２４Ｂによる診断が異常終了した場合にフラグが立てられる。なお、同期通信ステータス２２４は、名称が一部異なるが、起動時同期用データフレーム２１０の場合と同様である。
【００１９】
また、起動時同期用データフレーム２１０と終了時同期用データフレーム２２０で、起動時ＩＤの１の補数２１２と、終了時ＩＤの１の補数２２２と、チェックサム２１５，２２５は、送受信するデータの信頼性を高めるために設けられるものであり、設けなくてもよい。また、他のフィールドを追加してもよい。
【００２０】
通信部１２２Ａ，１２２Ｂは、起動時同期用データフレーム２１０の送信時には、乱数生成部１２３Ａ，１２３Ｂで生成された値を起動時ランダム値２１３に格納し、起動時同期用データフレーム２１０の送信を所定の時間間隔（たとえば１秒間隔）で行い、その間で相手側ＳＳＤ１０Ｂ，１０Ａからの起動時同期用データフレーム２１０の受信処理を行う。また、起動時同期用データフレーム２１０の受信状態に応じて、同期通信ステータスを更新する。なお、起動時の同期処理を試みる時間は、１回の起動時同期用データフレーム２１０の送信処理時間に対して十分に長い時間を設定し、この時間を超えて同期通信処理を終了できなかった場合にはタイムアウトによるエラーとして同期処理を終了させる。
【００２１】
また、終了時同期用データフレーム２２０の送信時には、診断部１２４Ａ，１２４Ｂから得られた診断結果の終了状態を実行ステータス２２３に反映させ、終了時同期用データフレーム２２０の送信を所定の時間間隔（たとえば１秒間隔）で行い、その間に相手側ＳＳＤ１０Ｂ，１０Ａからの終了時同期用データフレーム２２０の受信処理を行う。また、終了時同期用データフレーム２２０の受信状態に応じて、同期通信ステータスを更新する。なお、終了時の同期通信処理においては、各ＳＳＤ１０Ａ，１０Ｂにおいて診断処理の実行時間にばらつきがあるため、タイムアウトによるエラーは設けないようにしている。
【００２２】
乱数生成部１２３Ａ，１２３Ｂは、起動時の同期処理の際に、ランダムな数を生成する機能を有する。生成した数は、通信部１２２Ａ，１２２Ｂに渡される。
【００２３】
診断部１２４Ａ，１２４Ｂは、通信部１２２Ａ，１２２Ｂによる起動時の同期処理が終了した後、自ＳＳＤ内のメモリに対して、自己診断処理を実行する。自己診断処理として、たとえばテストパターンを発生させ、その出力と期待値を比較する処理を行う。なお、プリント基板２に設けられる２つのＳＳＤ１０Ａ，１０Ｂで同じ自己診断処理が実行されるものとする。また、診断部１２４Ａ，１２４Ｂは、起動時の同期処理の際に乱数生成部１２３Ａ，１２３Ｂで生成され、相手側ＳＳＤ１０Ｂ，１０Ａに通信部１２２Ａ，１２２Ｂから送信した起動時同期用データフレーム２１０に含まれる起動時ランダム値２１３と、相手側ＳＳＤ１０Ｂ，１０Ａから受信した起動時同期用データフレーム２１０に含まれる起動時ランダム値２１３とを比較して、自ＳＳＤがマスタなのかスレーブなのかを決定する。たとえば、起動時ランダム値２１３が大きい方をマスタとするように設定することができる。診断部１２４Ａ，１２４Ｂは、自ＳＳＤと相手側ＳＳＤの診断結果から総合診断結果情報を生成しステータス出力部１２５Ａ，１２５Ｂに通知する。
【００２４】
図４は、総合診断結果情報の一例を示す図である。総合診断結果は、自ＳＳＤの診断結果と相手側ＳＳＤの診断結果の組み合わせによって決定される。この例では、自ＳＳＤと相手側ＳＳＤの診断結果がともに正常終了の場合に、総合診断結果は正常終了であるとし、それ以外の場合には総合診断結果はエラー終了であるとしている。
【００２５】
ステータス出力部１２５Ａ，１２５Ｂは、自ＳＳＤがマスタである場合に、診断部１２４Ａ，１２４Ｂから取得した総合診断結果に対応するステータス信号を出力する診断結果出力部である。ステータス出力部１２５Ａ，１２５Ｂには、配線を介して外部出力装置３２が接続されている。外部出力装置３２として、たとえばＬＥＤ（Light  Emitting  Diode）を用いることができる。ＬＥＤを用いる場合には、オープンドレイン出力となる信号線を使用することで、ＬＥＤの点滅状態を図４の総合診断結果に応じて変化させることができ、使用者による目視での確認を容易にすることができる。また、外部出力装置３２としてパーソナルコンピュータを用いる場合には、ステータス出力部１２５Ａ，１２５ＢにＵＡＲＴの機能を持たせて接続することで、シリアル通信による総合診断結果の出力を行うこともできる。なお、自ＳＳＤがスレーブである場合には、ステータス出力部１２５Ａ，１２５Ｂからステータス信号が出力されないように高インピーダンス状態とされる。
【００２６】
つぎに、このような構成のメモリシステム１における試験方法について説明する。メモリシステム１における試験方法では、メモリシステム１に外部からの電源が供給されると、それをトリガとして、まず第１同期処理である起動時の同期処理が実行され、起動時の同期処理が完了すると自己診断処理が実行され、その途中で自己診断中のモニタ処理が行われる。そして、自己診断が終了した場合、または自己診断中のモニタ処理で相手側ＳＳＤがエラー終了した場合に、第２同期処理である終了時の同期処理が実行される。そこで、以下では、起動時の同期処理、終了時の同期処理、および自己診断中のモニタ処理の詳細について順に説明する。
【００２７】
＜起動時の同期処理＞
図５は、起動時の同期処理の手順の一例を示すフローチャートである。まず、メモリシステム１に電源が供給されると、ＳＳＤ１０Ａ，１０Ｂの通信部１２２Ａ，１２２Ｂは、乱数生成部１２３Ａ，１２３Ｂが生成した値を起動時ランダム値２１３として取得し（ステップＳ１１）、起動時同期処理の進捗状態を確認する（ステップＳ１２）。起動時同期処理の進捗状態の確認は、相手側ＳＳＤから起動時同期用データフレーム２１０を受信していないか、相手側ＳＳＤから起動通知送信ステータスにフラグが立てられている起動時同期用データフレーム２１０を受信しているか、そして相手側ＳＳＤから起動通知ＡＣＫ送信ステータスにフラグが立てられている起動時同期用データフレーム２１０を受信しているかを確認する処理である。
【００２８】
相手側ＳＳＤからのデータフレームを受信していない場合（ステップＳ１３でＹｅｓの場合）には、通信部１２２Ａ，１２２Ｂは、ステップＳ１１で取得した起動時ランダム値２１３を有し、起動通知送信ステータスにフラグを立てた起動時同期用データフレーム２１０を相手側ＳＳＤに送信する（ステップＳ１４）。また相手側ＳＳＤからのデータフレームを受信している場合（ステップＳ１３でＮｏの場合）で、相手側ＳＳＤから起動通知送信ステータスにフラグを立てた起動時同期用データフレーム２１０を受信している場合（ステップＳ１５でＹｅｓの場合）には、起動通知ＡＣＫ送信ステータスにフラグを立てた起動時同期用データフレーム２１０を相手側ＳＳＤに送信する（ステップＳ１６）。
【００２９】
その後、相手側ＳＳＤからのデータフレームの受信処理を行う（ステップＳ１７）。この受信処理は、ステップＳ１４またはステップＳ１６で起動時同期用データフレーム２１０を送信してから所定時間の間に行われる。そして、データフレームの受信は成功したかを判定する（ステップＳ１８）。受信したデータフレームについて、（Ａ）最初に受信したデータが起動時ＩＤ２１１以外のデータであった場合、（Ｂ）起動時ＩＤ２１１の次に受信したデータが、起動時ＩＤの１の補数２１２ではない場合、または（Ｃ）チェックサム２１５が一致しない場合にデータフレームの受信は成功しなかったと判定する。なお、たとえば図３に示されるデータフレームで起動時ＩＤの１の補数２１２やチェックサム２１５を設けない場合には（Ｂ）と（Ｃ）の条件は不要となる。
【００３０】
データフレームの受信が成功の場合（ステップＳ１８でＹｅｓの場合）には、ステップＳ１２へと処理が戻る。なお、この場合には、相手側ＳＳＤから起動時同期用データフレーム２１０を受信していることになるので、前回送信した起動時同期用データフレーム２１０の内容とは異なる起動時同期用データフレーム２１０が送信されることになる。
【００３１】
また、データフレームの受信が失敗の場合（ステップＳ１８でＮｏの場合）には、受信したデータフレームを破棄する。その後、データ受信処理を開始してから所定時間経過したかを判定し（ステップＳ１９）、所定時間経過していない場合（ステップＳ１９でＮｏの場合）には、ステップＳ１７へと処理が戻る。その後、所定時間経過した場合（ステップＳ１９でＹｅｓの場合）には、起動時同期処理の開始から同期処理が失敗と判定される所定時間が経過（タイムアウト）したかを判定する（ステップＳ２０）。起動時同期処理の開始から所定時間が経過していない場合（ステップＳ２０でＮｏの場合）には、ステップＳ１２へと戻る。この場合には、前回と同じ起動時同期用データフレーム２１０を送信することになる。また、起動時同期処理の開始から所定時間が経過した場合（ステップＳ２０でＹｅｓの場合）には、すなわち起動時同期処理の開始後、相手側ＳＳＤから後述するＡＣＫ受信通知ステータスにフラグを立てた起動時同期用データフレーム２１０を受信できなかった場合には、通信部１２２Ａ，１２２Ｂは、起動時同期処理が失敗したと判定し（ステップＳ２１）、処理が終了する。
【００３２】
一方、ステップＳ１５で相手側ＳＳＤから起動通知送信ステータスにフラグを立てた起動時同期用データフレーム２１０を受信していない場合（ステップＳ１５でＮｏの場合）には、相手側ＳＳＤからＡＣＫ受信通知ステータスにフラグが立てられた起動時同期用データフレーム２１０を受信していることになり、通信部１２２Ａ，１２２Ｂは、ＡＣＫ受信通知ステータスにフラグを立てた起動時同期用データフレーム２１０を相手側ＳＳＤに送信する（ステップＳ２２）。なお、ステップＳ１５で相手側ＳＳＤから起動通知送信ステータスにフラグを立てた起動時同期用データフレーム２１０を受信していない場合には、ＡＣＫ受信通知ステータスを受信したかの確認を行うようにした方がより望ましい。
【００３３】
その後、通信部１２２Ａ，１２２Ｂは、ステップＳ１１で取得した自ＳＳＤの起動時ランダム値２１３が、起動時同期用データフレーム２１０に含まれる相手側ＳＳＤの起動時ランダム値２１３よりも大きいかを判定する（ステップＳ２３）。自ＳＳＤの起動時ランダム値２１３が、起動時同期用データフレーム２１０に含まれる相手側ＳＳＤの起動時ランダム値２１３よりも大きい場合（ステップＳ２３でＹｅｓの場合）には、通信部１２２Ａ，１２２Ｂは自ＳＳＤはマスタであると判断し（ステップＳ２４）、自ＳＳＤの起動時ランダム値２１３が、起動時同期用データフレーム２１０に含まれる相手側ＳＳＤの起動時ランダム値２１３未満の場合（ステップＳ２３でＮｏの場合）には、通信部１２２Ａ，１２２Ｂは自ＳＳＤ１０Ａ，１０Ｂはスレーブであると判断する（ステップＳ２５）。なお、２つの起動時ランダム値２１３が同一である場合には、上記した処理を繰り返し行ってもよい。マスタであると判断した場合には、マスタ側ＳＳＤのステータス出力部１２５Ａ，１２５Ｂによって動作ステータスの出力制御が可能となる。その後、起動時同期処理が成功したと判定し（ステップＳ２６）、起動時同期処理が終了する。
【００３４】
図６は、起動時の同期処理手順の一例を示すシーケンス図である。メモリシステム１に電源が供給されると、各ＳＳＤ１０Ａ，１０Ｂの乱数生成部１２３Ａ，１２３Ｂは乱数を生成し、通信部１２２Ａ，１２２Ｂは生成された乱数を取得する（ＳＱ１１，ＳＱ１２）。ＳＳＤ１０Ａの通信部１２２Ａでは、起動時ランダム値２１３として取得した乱数を設定し、また同期通信ステータスとして起動通知送信ステータスのみにフラグを立てた（図中、フラグを立てた状態を「○」で示し、フラグを立てていない状態を「×」で示している）起動時同期用データフレーム２１０を生成し、ＳＳＤ１０Ｂへと送信する（ＳＱ１３）。送信後、ＳＳＤ１０Ａの通信部１２２Ａは、所定の時間受信処理を行う。
【００３５】
ＳＳＤ１０Ｂの通信部１２２Ｂは、自身が受信処理状態にあるときに、同期通信ステータスとして起動通知送信ステータスのみにフラグが立てられた起動時同期用データフレーム２１０を受信すると、起動時ランダム値２１３として取得した乱数を設定し、同期通信ステータスとして、起動通知送信ステータスと起動通知ＡＣＫ送信ステータスにフラグを立てた起動時同期用データフレーム２１０を生成し、ＳＳＤ１０Ａへと送信する（ＳＱ１４）。送信後、ＳＳＤ１０Ｂの通信部１２２Ｂは、所定の時間受信処理を行う。
【００３６】
ＳＳＤ１０Ａの通信部１２２Ａは、自身が受信処理状態にあるときに、同期通信ステータスとして、起動通知送信ステータスと起動通知ＡＣＫ送信ステータスにフラグを立てた起動時同期用データフレーム２１０を受信すると、同期通信ステータスとして、起動通知送信ステータスと起動通知ＡＣＫ送信ステータスとＡＣＫ受信通知ステータスにフラグを立てた起動時同期用データフレーム２１０を生成し、ＳＳＤ１０Ｂへと送信する（ＳＱ１５）。
【００３７】
ＳＳＤ１０Ｂの通信部１２２Ｂは、自身が受信処理状態にあるときに、同期通信ステータスとして、起動通知送信ステータスと起動通知ＡＣＫ送信ステータスとＡＣＫ受信通知ステータスにフラグが立てられた起動時同期用データフレーム２１０を受信すると、同期通信ステータスとして、起動通知送信ステータスと起動通知ＡＣＫ送信ステータスとＡＣＫ受信通知ステータスにフラグを立てた起動時同期用データフレーム２１０を生成し、ＳＳＤ１０Ａへと送信する（ＳＱ１６）。
【００３８】
なお、ここでは、ＳＳＤ１０ＡとＳＳＤ１０Ｂのステータスはともに起動通知送信ステータスと起動通知ＡＣＫ送信ステータスとＡＣＫ受信通知ステータスのすべてにフラグが立てられた状態となっているので、ここまでの処理で終了するが、上記のように順調にデータフレームを受信できない場合には、相手側ＳＳＤの起動情報と自ＳＳＤの起動情報に対するＡＣＫの両方を受信するまでＳＱ１３〜ＳＱ１６の処理が行われることになる。
【００３９】
その後、ＳＳＤ１０Ａの診断部１２４Ａは、ＳＱ１１で取得した起動時ランダム値２１３と、ＳＳＤ１０Ｂの起動時同期用データフレーム２１０から取得した起動時ランダム値２１３とを比較して、自ＳＳＤがマスタなのかスレーブなのかを判定する（ＳＱ１７）。ＳＳＤ１０Ｂでも同様に自ＳＳＤがマスタなのかスレーブなのかを判定する（ＳＱ１８）。以上で、起動時同期処理が終了する。
【００４０】
以上に示した起動時同期処理が正常に終了した後に、それぞれのＳＳＤ１０Ａ，１０Ｂの診断部１２４Ａ，１２４Ｂは自己診断処理を開始する。この自己診断処理は、従来より行われているものであるので、その説明については省略する。
【００４１】
＜終了時の同期処理＞
図７は、終了時の同期処理の手順の一例を示すフローチャートである。終了時の同期処理は、ＳＳＤ１０Ａ，１０Ｂの診断部１２４Ａ，１２４Ｂによる自己診断処理が終了すると実行される。まず、各ＳＳＤ１０Ａ，１０Ｂの通信部１２２Ａ，１２２Ｂは、診断部１２４Ａ，１２４Ｂによる自己診断処理が終了すると、その結果を実行ステータス２２３として診断部１２４Ａ，１２４Ｂから取得し（ステップＳ５１）、終了時同期処理の進捗状態を確認する（ステップＳ５２）。終了時同期処理の進捗状態の確認は、相手側ＳＳＤ１０Ａ，１０Ｂから終了時同期用データフレーム２２０を受信していないか、相手側ＳＳＤ１０Ａ，１０Ｂから終了通知送信ステータスのみフラグが立てられている終了時同期用データフレーム２２０を受信しているか、そして相手側ＳＳＤ１０Ａ，１０Ｂから終了通知ＡＣＫ送信ステータスにフラグが立てられている終了時同期用データフレーム２２０を受信しているかを確認する処理である。
【００４２】
相手側ＳＳＤからのデータフレームを受信していない場合（ステップＳ５３でＹｅｓの場合）には、通信部１２２Ａ，１２２Ｂは、ステップＳ５１で取得した診断結果の実行ステータス２２３を有し、終了通知送信ステータスにフラグを立てた終了時同期用データフレーム２２０を相手側ＳＳＤに送信する（ステップＳ５４）。また相手側ＳＳＤからのデータフレームを受信している場合（ステップＳ５３でＮｏの場合）で、相手側ＳＳＤから終了通知送信ステータスにフラグを立てた終了時同期用データフレーム２２０を受信している場合（ステップＳ５５でＹｅｓの場合）には、ステップＳ５１で取得した診断結果の実行ステータス２２３を有し、終了通知ＡＣＫ送信ステータスにフラグを立てた終了時同期用データフレーム２２０を相手側ＳＳＤに送信する（ステップＳ５６）。
【００４３】
その後、相手側ＳＳＤからのデータフレームの受信処理を行う（ステップＳ５７）。この受信処理は、ステップＳ５４またはステップＳ５６で終了時同期用データフレーム２２０を送信してから所定時間の間に行われる。そして、データフレームの受信は成功したかを判定する（ステップＳ５８）。受信したデータフレームについて、（Ｄ）最初に受信したデータが終了時ＩＤ２２１以外のデータであった場合、（Ｅ）終了時ＩＤ２２１の次に受信したデータが、終了時ＩＤの１の補数２２２ではない場合、または（Ｆ）チェックサム２２５が一致しない場合には、データフレームの受信は成功しなかったと判定する。なお、たとえば図３に示されるデータフレームで終了時ＩＤの１の補数２２２やチェックサム２２５を設けない場合には（Ｅ）と（Ｆ）の条件は不要となる。
【００４４】
データフレームの受信が成功の場合（ステップＳ５８でＹｅｓの場合）には、ステップＳ５２へと処理が戻る。なお、この場合には、相手側ＳＳＤから起動時同期用データフレーム２１０を受信していることになるので、前回送信した起動時同期用データフレーム２１０の内容とは異なる起動時同期用データフレーム２１０が送信されることになる。
【００４５】
また、データフレームの受信が失敗の場合（ステップＳ５８でＮｏの場合）には、受信したデータフレームを破棄する。その後、データ受信処理を開始してから所定時間経過したかを判定し（ステップＳ５９）、所定時間経過していない場合（ステップＳ５９でＮｏの場合）には、ステップＳ５７へと処理が戻る。その後、所定時間経過した場合（ステップＳ１９でＹｅｓの場合）には、ステップＳ５２へと戻る。この場合には、前回と同じ起動時同期用データフレーム２１０を送信することになる。
【００４６】
一方、ステップＳ５５で相手側ＳＳＤから終了通知送信ステータスにフラグが立てられた終了時同期用データフレーム２２０を受信していない場合（ステップＳ５５でＮｏの場合）には、相手側ＳＳＤからＡＣＫ受信通知ステータスにフラグが立てられた終了時同期用データフレーム２２０を受信していることになり、通信部１２２Ａ，１２２Ｂは、ＡＣＫ受信通知ステータスにフラグを立てた終了時同期用データフレーム２２０を相手側ＳＳＤに送信する（ステップＳ６０）。なお、ステップＳ５５で相手側ＳＳＤから終了通知送信ステータスにフラグを立てた終了時同期用データフレーム２２０を受信していない場合には、ＡＣＫ受信通知ステータスを受信したかの確認を行うようにした方がより望ましい。
【００４７】
ついで、診断部１２４Ａ，１２４Ｂは、自ＳＳＤでの自己診断処理で取得した実行ステータス２２３（診断結果）と、相手側ＳＳＤの終了時同期用データフレーム２２０中の実行ステータス２２３（診断結果）と、を比較し、総合診断結果情報を生成し（ステップＳ６１）、その結果をステータス出力部１２５Ａ，１２５Ｂに渡す。
【００４８】
それぞれのＳＳＤ１０Ａ，１０Ｂが、ＡＣＫ受信通知ステータスにフラグを立てた終了時同期用データフレーム２２０の送信を完了した場合には、同期処理が正常に終了したものとみなし、終了処理を行う（ステップＳ６２）。自ＳＳＤがマスタである場合（ステップＳ６３でＹｅｓの場合）には、ステータス出力部１２５Ａ，１２５Ｂは、総合診断結果情報をＬＥＤなどの外部機器に出力し（ステップＳ６４）、終了時同期処理が終了する。ＬＥＤに総合診断結果情報を出力する場合には、予め設定した総合診断結果に対応するＬＥＤの点滅方法に従って、ＬＥＤを点滅させる。これによって、作業者は、診断したメモリシステム１が製品として使用できるか否かをＬＥＤの目視によって容易に判断することができる。また、自ＳＳＤがスレーブである場合（ステップＳ６３でＮｏの場合）には、ステータス出力部１２５Ａ，１２５Ｂは、総合診断結果情報を外部機器へ出力せず（ステップＳ６５）、終了時同期処理が終了する。その後、後続する終了処理が行われる。
【００４９】
図８は、終了時の同期処理手順の一例を示すシーケンス図である。ここでは、ＳＳＤ１０Ａがマスタであり、ＳＳＤ１０Ｂがスレーブであるものとする。それぞれのＳＳＤ１０Ａ，１０Ｂの自己診断処理が正常終了またはエラー終了すると、終了時の同期処理が開始される。ここでは、ＳＳＤ１０Ｂの通信部１２２Ｂは、診断結果の実行ステータス２２３（正常終了またはエラー終了）を設定し、同期通信ステータス２２４として終了通知送信ステータスにフラグを立てた終了時同期用データフレーム２２０を生成し、ＳＳＤ１０Ａへと送信する（ＳＱ３１）。送信後、ＳＳＤ１０Ｂの通信部１２２Ｂは、所定の時間受信処理を行う。
【００５０】
ＳＳＤ１０Ａの通信部１２２Ａは、自身が受信処理状態にあるときに、同期通信ステータス２２４として終了通知送信ステータスのみにフラグが立てられた終了時同期用データフレーム２２０を受信すると、自ＳＳＤの診断結果の実行ステータス２２３を設定し、同期通信ステータス２２４として、終了通知送信ステータスと終了通知ＡＣＫ送信ステータスにフラグを立てた終了時同期用データフレーム２２０を生成し、ＳＳＤ１０Ｂへと送信する（ＳＱ３２）。送信後、ＳＳＤ１０Ａの通信部１２２Ａは、所定の時間受信処理を行う。
【００５１】
ＳＳＤ１０Ｂの通信部１２２Ｂは、自身が受信処理状態にあるときに、同期通信ステータス２２４として、終了通知送信ステータスと終了通知ＡＣＫ送信ステータスにフラグが立てられた終了時同期用データフレーム２２０を受信すると、同期通信ステータス２２４として、終了通知送信ステータスと終了通知ＡＣＫ送信ステータスとＡＣＫ受信通知ステータスにフラグを立てた終了時同期用データフレーム２２０を生成し、ＳＳＤ１０Ａへと送信する（ＳＱ３３）。
【００５２】
ＳＳＤ１０Ａの通信部１２２Ａは、自身が受信処理状態にあるときに、同期通信ステータス２２４として、終了通知送信ステータスと終了通知ＡＣＫ送信ステータスにフラグを立てた終了時同期用データフレーム２２０を受信すると、同期通信ステータス２２４として、終了通知送信ステータスと終了通知ＡＣＫ送信ステータスとＡＣＫ受信通知ステータスにフラグを立てた終了時同期用データフレーム２２０を生成し、ＳＳＤ１０Ｂへと送信する（ＳＱ３４）。
【００５３】
なお、ここでは、ＳＳＤ１０ＡとＳＳＤ１０Ｂのステータスはともに終了通知送信ステータスと終了通知ＡＣＫ送信ステータスとＡＣＫ受信通知ステータスのすべてにフラグが立てられた状態となっているので、ここまでの処理で終了するが、上記のように順調にデータフレームを受信できない場合には、スレーブ側のＳＳＤ１０Ｂからの通知を受信するまでＳＱ３１〜ＳＱ３４の処理が行われることになる。
【００５４】
その後、ＳＳＤ１０Ａ，ＳＳＤ１０Ｂの両方で終了処理が行われるが（ＳＱ３５，ＳＱ３６）、マスタ側のＳＳＤ１０Ａのステータス出力部１２５Ａは、自ＳＳＤの診断結果と相手側ＳＳＤ１０Ｂの診断結果から得られる総合診断結果を外部機器に出力する。以上で、終了時同期処理が終了する。また、スレーブ側のＳＳＤ１０Ｂでは、ステータス出力部１２５Ｂが高インピーダンス状態となっているので、ステータス出力部１２５Ｂから総合診断結果は出力されない。
【００５５】
＜自己診断時のモニタ処理＞
自己診断処理は、開始してから最後まで中断することなく連続して行ってもよいが、たとえば自己診断処理に区切りを設け、その区切りで自己診断処理を中断してもよい。このように自己診断処理を中断させることで、それまでの診断処理でエラーが発生していた場合には、その直後の中断処理の際に上記した終了時の同期処理を実行させることが可能になる。そして、相手側ＳＳＤは、診断処理の区切りで所定の時間、自己診断処理を中断するとともに相手側ＳＳＤから終了時同期用データフレームを受信するかのモニタ処理を行う。そして、終了時同期用データフレームを受信しなかった場合には、中断していた自己診断処理を再開し、終了時同期用データフレームを受信した場合には、上記した終了時の同期処理を行う。なお、診断処理の区切りで中断する時間は、各ＳＳＤが行うデータフレームの送信間隔よりも長い時間であるものとする。
【００５６】
図９は、自己診断処理から終了時同期処理への流れを模式的に示す図であり、（ａ）は正常終了時の流れの一例を示す図であり、（ｂ）はエラー終了時の流れの一例を示す図である。
【００５７】
最初に、診断処理の結果、エラーがない正常終了時の流れについて説明する。図９（ａ）に示されるように、自己診断処理は、診断処理Ａ〜Ｃに区分されているものとする。つまり、ＳＳＤ１０Ａでは、診断処理Ａを実行し（ステップＳ１０１）、診断処理を一時中断してモニタし（ステップＳ１０２）、診断処理Ｂを実行し（ステップＳ１０３）、診断処理を一時中断してモニタし（ステップＳ１０４）、診断処理Ｃを実行し（ステップＳ１０５）、終了時同期処理を実施している（ステップＳ１０６）。また、ＳＳＤ１０Ｂでも、で診断処理Ａを実行し（ステップＳ１１１）、診断処理を一時中断してモニタし（ステップＳ１１２）、診断処理Ｂを実行し（ステップＳ１１３）、診断処理を一時中断してモニタし（ステップＳ１１４）、診断処理Ｃを実行し（ステップＳ１１５）、終了時同期処理を実施している（ステップＳ１１６）。
【００５８】
しかし、ＳＳＤ１０ＡとＳＳＤ１０Ｂとでは、各診断処理Ａ〜Ｃを実行する時間が異なっている。つまり、この例ではＳＳＤ１０Ａに比べてＳＳＤ１０Ｂの方が早く診断処理が終了しており、ステップＳ１１６の終了時同期処理が実行される。このとき、ＳＳＤ１０ＢからＳＳＤ１０Ａに向けて、図７で説明したように、正常終了した旨の実行ステータス２２３を設定し、同期通信ステータス２２４に終了通知送信ステータスのみフラグを立てた終了時同期用データフレーム２２０が所定の送信間隔で送信される（ステップＳ１１７〜Ｓ１１８）。しかし、ステップＳ１０５の診断処理Ｃを実行中のＳＳＤ１０Ａは、ステップＳ１１７でＳＳＤ１０Ｂからの終了時同期用データフレーム２２０を受信処理しない（することができない）。また、ＳＳＤ１０Ａは、終了時同期用データフレーム２２０をＳＳＤ１０Ｂ宛てに送信しないので、ＳＳＤ１０Ｂでは終了時同期用データフレーム２２０を送信した後の受信処理中にＳＳＤ１０Ａからの終了時同期用データフレーム２２０を受信しない。その結果、図７に示したようにＳＳＤ１０Ｂは、同じ終了時同期用データフレーム２２０を所定の周期でＳＳＤ１０Ａへと送り続けることになる。
【００５９】
そして、ＳＳＤ１０Ａで、ステップＳ１０５の診断処理Ｃが終了し、ステップＳ１０６の終了時同期処理が実行されると、ステップＳ１１８でＳＳＤ１０Ｂが送信した終了時同期用データフレーム２２０がＳＳＤ１０Ａに到達し、それに対する終了時同期用データフレーム２２０がＳＳＤ１０Ｂ宛てに送信されることによって、上記した終了時の同期処理が実行されることになる。
【００６０】
つぎに、診断処理の結果、エラーが存在するエラー終了時の流れについて説明する。図９（ｂ）に示されるように、図９（ａ）の場合と同様に、ＳＳＤ１０Ａでは、診断処理Ａを実行し（ステップＳ１５１）、診断処理を一時中断してモニタし（ステップＳ１５２）、診断処理Ｂを実行し（ステップＳ１５３）、診断処理を一時中断してモニタし（ステップＳ１５４）、・・・という順で診断処理を実行しているものとする。また、ＳＳＤ１０Ｂでも、診断処理Ａを実行し（ステップＳ１６１）、診断処理を一時中断してモニタし（ステップＳ１６２）、診断処理Ｂを実行し（ステップＳ１６３）、・・・という順で診断処理を実行しているものとする。
【００６１】
ステップＳ１６３のＳＳＤ１０Ｂでの診断処理Ｂでエラーが見つかった場合、ＳＳＤ１０Ｂは、診断処理Ｂの終了後に終了時同期処理を実行する（ステップＳ１６４）。この終了時同期処理は、上記したものと同じである。そして、ＳＳＤ１０Ｂは、ＳＳＤ１０Ａに向けて、図７で説明したように、エラー終了した旨の実行ステータス２２３を設定し、同期通信ステータス２２４に終了通知送信ステータスのみフラグを立てた終了時同期用データフレーム２２０を送信する（ステップＳ１６５）。しかし、この終了時同期用データフレーム２２０の送信時では、ＳＳＤ１０ＡはまだステップＳ１５３の診断処理Ｂを実行中であるので、ＳＳＤ１０Ｂからの終了時同期用データフレーム２２０を受信処理しない（することができない）。そのため、ＳＳＤ１０Ｂは、ＳＳＤ１０Ａの診断処理Ｂが終了した後、ステップＳ１５４のモニタ処理が実行されるまでの間、所定の間隔で上記と同じ終了時同期用データフレーム２２０を送信し続けることになる。
【００６２】
そして、ＳＳＤ１０ＡでステップＳ１５３の診断処理Ｂが終了し、ステップＳ１５４のモニタ処理の際に、ＳＳＤ１０ＢからステップＳ１６６で送信された終了時同期用データフレーム２２０を受信する。その後、ＳＳＤ１０Ａは、終了時同期用データフレーム２２０の実行ステータス２２３がエラー終了ステータスとなっているので、自ＳＳＤ１０Ａでも終了時同期処理を実行する（ステップＳ１５５）。これによって、先にエラーを検出して終了時同期処理を行っていたＳＳＤ１０Ｂと、自己診断中であったＳＳＤ１０Ａとの終了時の同期が取れることになる。
【００６３】
このように、自己診断処理が最後まで完了しないで終了時同期処理を実行するのは、相手側ＳＳＤの自己診断処理がエラー終了している場合である。それ以外の相手側ＳＳＤ１０Ｂの自己診断処理が正常終了している場合、たとえば図９（ｂ）のステップＳ１６６で正常終了したことを示す実行ステータス２２３が設定された終了時同期用データフレーム２２０をＳＳＤ１０Ａが受信した場合には、ステップＳ１５４のモニタ後、つぎの診断処理Ｃを実行し、自己診断処理を再開することになる。また、モニタ中に有効なデータフレームを受信しなかった場合には、相手側ＳＳＤも自己診断中であり、終了時同期処理が開始されていない状態にあるので、この場合にも中断していた自己診断処理を再開する。
【００６４】
なお、上記の説明では、処理の区切りでモニタする場合を示したが、任意のタイミングで相手側ＳＳＤからの終了時同期用データフレーム２２０の受信状況をモニタすることができる。
【００６５】
以上のように、本実施形態では、自己診断機能を有する２台のＳＳＤ１０Ａ，１０Ｂを１枚のプリント基板２上に配置し、双方向通信が可能な配線で接続して自己診断結果を相互に通知し、２台のＳＳＤ１０Ａ，１０Ｂの自己診断結果である総合診断結果を一方のＳＳＤ１０Ａ，１０Ｂから外部に通知するようにしたので、１つの信号で２台の総合診断結果を確認することができるという効果を有する。
【００６６】
また、任意のタイミングで相手側ＳＳＤからの終了時同期用データフレーム２２０の受信処理をモニタするようにしたので、一方のＳＳＤの診断処理でエラーが発生した場合には、そのＳＳＤでの診断処理を中止して終了時の同期処理を行い、その情報を他方のＳＳＤにも通知するようにしたので、他方のＳＳＤが、診断処理をすべて終了するまで待つことなく、その情報を受信した時点で診断処理を中止することができるという効果を有する。
【００６７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６８】
１…メモリシステム、２…プリント基板、１０Ａ，１０Ｂ…ＳＳＤ、１１Ａ，１１Ａ−１，１１Ａ−２，１１Ｂ，１１Ｂ−１，１１Ｂ−２…メモリチップ、メモリ、１２Ａ，１２Ｂ…コントローラチップ、コントローラ、１３…コネクタ、２１Ａ，２１Ｂ…送信ポート、２２Ａ，２２Ｂ…受信ポート、２３Ａ，２３Ｂ…電源ピン、３１…電源回路、１２２Ａ，１２２Ｂ…通信部、１２３Ａ，１２３Ｂ…乱数生成部、１２４Ａ，１２４Ｂ…診断部、１２５Ａ，１２５Ｂ…ステータス出力部。
【図１】
2013171337.tif 000003
【図２】
2013171337.tif 000004
【図３】
2013171337.tif 000005
【図４】
2013171337.tif 000006
【図５】
2013171337.tif 000007
【図６】
2013171337.tif 000008
【図７】
2013171337.tif 000009
【図８】
2013171337.tif 000010
【図９】
2013171337.tif 000011