(57)【要約】【課題】ログメモリの記憶領域が制限されている場合でも、十分なデバッグ機能を実現できる構成を有するデータ記憶装置を提供することにある。【解決手段】実施形態によれば、データ記憶装置は、データを記憶する不揮発性メモリと、前記不揮発性メモリを制御するメモリコントローラとを具備する。前記メモリコントローラは、複数のモジュールをそれぞれ制御する複数のプロセッサと、前記各プロセッサのログ情報を格納するログメモリと、前記ログメモリの記憶可能領域の減少に基づいて該当のプロセッサを停止する停止信号を出力し、前記停止したプロセッサのログ情報を退避させるための処理を実行するコントローラとを有する。【選択図】図１
2013196645.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する不揮発性メモリと、
前記不揮発性メモリを制御するメモリ制御手段とを具備し、
前記メモリ制御手段は、
複数のモジュールをそれぞれ制御する複数のプロセッサと、
前記各プロセッサのログ情報を記憶するログメモリと、
前記ログメモリの記憶可能領域の減少に基づいて該当のプロセッサを停止する停止信号を出力し、前記停止したプロセッサのログ情報を退避させるための処理を実行するコントローラと
を具備するデータ記憶装置。
【請求項２】
前記メモリ制御手段は前記ログ情報の退避処理を実行するメインプロセッサを含み、
前記コントローラは、
前記プロセッサの停止を前記メインプロセッサに通知する請求項１に記載のデータ記憶装置。
【請求項３】
前記メインプロセッサは、
前記コントローラからの通知に基づいて、前記停止するプロセッサに対応する前記ログメモリからログ情報を取得する請求項２に記載のデータ記憶装置。
【請求項４】
前記コントローラは、
前記停止信号を他の各プロセッサに転送して停止させて、
前記停止した各プロセッサの全てのログ情報を退避させるための処理を実行する請求項１に記載のデータ記憶装置。
【請求項５】
前記コントローラは、
前記各プロセッサから選択したプロセッサの停止を回避させるマスク信号を出力する請求項１から請求項４のいずれか１項に記載のデータ記憶装置。
【請求項６】
前記コントローラは前記ログメモリの記憶可能領域を監視するログコントローラを含み、
前記ログコントローラは、
前記ログメモリの記憶可能領域が無い状態または基準値以下まで減少した場合に、前記停止信号を出力する請求項１から請求項５のいずれか１項に記載のデータ記憶装置。
【請求項７】
前記コントローラはメインデバッグコントローラを含み、
前記メインデバッグコントローラは、
前記ログコントローラから出力された前記停止信号を前記各プロセッサに転送して停止させる請求項６に記載のデータ記憶装置。
【請求項８】
前記コントローラはサブデバッグコントローラを含み、
前記サブデバッグコントローラは、
前記ログメモリの記憶可能領域の条件とは異なる条件で、前記各プロセッサから出力されるブレイクポイント情報に基づいて該当のプロセッサを停止する停止信号を出力する請求項１から請求項７のいずれか１項に記載のデータ記憶装置。
【請求項９】
不揮発性メモリを制御する複数のモジュールと、
前記各モジュールを制御する複数のプロセッサと、
前記各プロセッサのログ情報を記憶するログメモリと、
前記ログメモリの記憶可能領域の減少に基づいて該当のプロセッサを停止する停止信号を出力し、前記停止したプロセッサのログ情報を退避させるための処理を実行するコントローラと
を具備するメモリ制御装置。
【請求項１０】
前記各プロセッサはメインプロセッサと複数のサブプロセッサとを含み、
前記各サブプロセッサは対応するログメモリにログ情報を記憶し、
前記メインプロセッサは前記ログ情報の退避処理を実行する請求項９に記載のメモリ制御装置。
【請求項１１】
前記コントローラは、
前記各サブプロセッサの停止を前記メインプロセッサに通知する請求項１０に記載のメモリ制御装置。
【請求項１２】
前記メインプロセッサは、
前記コントローラからの通知に基づいて、前記停止するプロセッサに対応する前記ログメモリからログ情報を取得する請求項１１に記載のメモリ制御装置。
【請求項１３】
前記コントローラは、
前記停止信号を他の各プロセッサに転送して停止させて、
前記停止した各プロセッサの全てのログ情報を退避させるための処理を実行する請求項９に記載のメモリ制御装置。
【請求項１４】
前記コントローラは、
前記各プロセッサから選択したプロセッサの停止を回避させるマスク信号を出力する請求項９から請求項１３のいずれか１項に記載のメモリ制御装置。
【請求項１５】
前記コントローラは前記ログメモリの記憶可能領域を監視するログコントローラを含み、
前記ログコントローラは、
前記ログメモリの記憶可能領域が無い状態または基準値以下まで減少した場合に、前記停止信号を出力する請求項９から請求項１４のいずれか１項に記載のメモリ制御装置。
【請求項１６】
前記コントローラはメインデバッグコントローラを含み、
前記メインデバッグコントローラは、
前記ログコントローラから出力された前記停止信号を前記各プロセッサに転送して停止させる請求項１５に記載のメモリ制御装置。
【請求項１７】
前記コントローラはサブデバッグコントローラを含み、
前記サブデバッグコントローラは、
前記ログメモリの記憶可能領域の条件とは異なる条件で、前記各プロセッサから出力されるブレイクポイント情報に基づいて該当のプロセッサを停止する停止信号を出力する請求項９から請求項１６のいずれか１項に記載のメモリ制御装置。
【請求項１８】
データを記憶する不揮発性メモリと、前記不揮発性メモリを制御するメモリ制御手段とを有するデータ記憶装置に適用するメモリ制御方法であって、
複数のモジュールをそれぞれ制御する複数のプロセッサのログ情報をログメモリに記憶し、
前記ログメモリの記憶可能領域の減少に基づいて該当のプロセッサを停止する停止信号を出力し、
前記停止したプロセッサのログ情報を退避させるための処理を実行するメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリを使用するデータ記憶装置、メモリ制御装置及び方法に関する。
【背景技術】
【０００２】
近年、ストレージデバイス（データ記憶装置）として、書き換え可能な不揮発性メモリであるＮＡＮＤ型フラッシュメモリ（以下、単にフラッシュメモリと表記する場合がある）を記憶媒体とするＳＳＤ（solid state drive）が注目されている。
【０００３】
ＳＳＤは大別して、フラッシュメモリとそれを制御するコントローラとから構成されている。コントローラでは、複数のモジュールを連携して制御する機能を実現するためにマルチＣＰＵシステムが採用されている。マルチＣＰＵシステムは、複数のプロセッサ（ＣＰＵ）からなり、通常では１個のメインＣＰＵと複数のサブＣＰＵから構成されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平９−１０６３６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の実施形態は、ログメモリの記憶領域が制限されている場合でも、十分なデバッグ機能を実現できる構成を有するデータ記憶装置を提供する。
【課題を解決するための手段】
【０００６】
実施形態によれば、データ記憶装置は、データを記憶する不揮発性メモリと、前記不揮発性メモリを制御するメモリ制御手段とを具備する。前記メモリ制御手段は、複数のモジュールをそれぞれ制御する複数のプロセッサと、前記各プロセッサのログ情報を格納するログメモリと、前記ログメモリの記憶可能領域の減少に基づいて該当のプロセッサを停止する停止信号を出力し、前記停止したプロセッサのログ情報を退避させるための処理を実行するコントローラとを有する。
【図面の簡単な説明】
【０００７】
【図１】実施形態に関するＳＳＤの構成を説明するためのブロック図。
【図２】実施形態に関するマルチＣＰＵモジュールの構成を説明するためのブロック図。
【図３】実施形態に関するログコントローラの構成を説明するためのブロック図。
【図４】実施形態に関するサブデバッグコントローラの構成を説明するためのブロック図。
【図５】実施形態に関するメインデバッグコントローラの構成を説明するためのブロック図。
【図６】実施形態に関するログコントローラの動作を説明するためのフローチャート。
【図７】実施形態に関するメインデバッグコントローラの動作を説明するためのフローチャート。
【図８】実施形態に関するサブＣＰＵの動作を説明するためのフローチャート。
【図９】実施形態に関するメインＣＰＵの動作を説明するためのフローチャート。
【発明を実施するための形態】
【０００８】
マルチＣＰＵシステムでは、デバッグ時の解析処理で使用されるログ（log）情報を記憶するログメモリが設けられている。ログ情報は、ＣＰＵ間の通信記録データであり、各サブＣＰＵによりログメモリに保存される。ここで、特にコスト面からの理由で、各ログメモリの記憶領域は少ないため、保存できるログ情報量も制限される。このため、十分なデバッグ機能を実現できていない。当然ながら、ログメモリの記憶領域を増大することは、コストの増加を招くことになる。
【０００９】
以下図面を参照して、実施形態を説明する。
【００１０】
［データ記憶装置の構成］
図１に示すように、実施形態のデータ記憶装置はＳＳＤ（solid state drive）であり、ＳＳＤコントローラ１０と、ＤＲＡＭ（dynamic random access memory）またはＳＲＡＭ（Static Random Access Memory）等のランダムアクセスメモリからなるバッファメモリ１５と、ＮＡＮＤ型フラッシュメモリ（フラッシュメモリ）１６とを有する。
【００１１】
ＳＳＤコントローラ１０は、フラッシュメモリコントローラ１１と、バッファマネージャモジュール１２と、ホストインターフェースコントローラ１３と、マルチプロセッサモジュール（マルチＣＰＵモジュール）１４とを有する。
【００１２】
フラッシュメモリコントローラ１１は、フラッシュメモリ１６のリード／ライト動作の制御及びデータ転送制御を実行する。バッファマネージャモジュール１２は、バッファメモリ１５を制御し、バッファメモリとのデータ転送を制御する。バッファメモリ１５は、フラッシュメモリ１６に対してライトするデータまたはリードされたデータを一時的に格納する。ホストインターフェースコントローラ１３は、ホストデバイス１７とＳＳＤとのインターフェースであり、データやコマンドの転送を制御する。ホストデバイス１７は、例えばパーソナルコンピュータに含まれるＳＡＴＡ（Serial ATA）規格などのインターフェースコントローラである。
【００１３】
［マルチＣＰＵモジュールの構成］
図２に示すように、実施形態のマルチＣＰＵモジュール１４は、メインＣＰＵ２０と、メインデバッグコントローラ２１と、複数（ここでは３個）のサブＣＰＵ２２Ａ〜２２Ｃと、複数のサブデバッグコントローラ２３Ａ〜２３Ｃと、複数のログメモリ２４Ａ〜２４Ｃと、ログコントローラ２５Ａ〜２５Ｃとを含む。
【００１４】
メインＣＰＵ２０は、マルチＣＰＵモジュール１４の全体的制御を実行し、各サブＣＰＵ２２Ａ〜２２Ｃと同期をとりながら、ＳＳＤコントローラ１０の各種のモジュール及びコントローラの連携制御を実行する。各サブＣＰＵ２２Ａ〜２２Ｃは、各種のモジュール（１２）及びコントローラ（１１，１３）のそれぞれを分散して制御する。例えば、サブＣＰＵ２２Ａは、フラッシュメモリコントローラ１１を制御する。また例えば、サブＣＰＵ２２Ｂは、バッファマネージャモジュール１２を制御する。また例えば、サブＣＰＵ２２Ｃは、ホストインターフェースコントローラ１３を制御する。
【００１５】
メインデバッグコントローラ２１は、マルチＣＰＵモジュール１４の全体的デバッグ処理を実行する。具体的には、メインデバッグコントローラ２１は、複数のサブデバッグコントローラ２３Ａ〜２３Ｃを制御するコントローラ２１０と、ロジック回路２２０とを含んでいる。ロジック回路２２０は、アンドゲート（ＡＮＤ）２６Ａ〜２６Ｃと、オア（ＯＲ）ゲート２７Ａ〜２７Ｃと、オア（ＯＲ）ゲート２８Ａ〜２８Ｃとを含んでいる。
【００１６】
ログコントローラ２５Ａ（２５Ｂ，２５Ｃ）から出力されるストップ信号１１０Ａ（１１０Ｂ，１１０Ｃ）は、オア（ＯＲ）ゲート２７Ａ（２７Ｂ，２７Ｃ）及び２８Ａ（２８Ｂ，２８Ｃ）に入力される。サブデバッグコントローラ２３Ａ（２３Ｂ，２３Ｃ）から出力されるストップ信号１１１Ａ（１１１Ｂ，１１１Ｃ）は、オア（ＯＲ）ゲート２７Ａ（２７Ｂ，２７Ｃ）及び２８Ａ（２８Ｂ，２８Ｃ）に入力される。
【００１７】
コントローラ２１０から出力されるストップ信号１０４Ａ（１０４Ｂ，１０４Ｃ）は、オア（ＯＲ）ゲート２７Ａ（２７Ｂ，２７Ｃ）に入力される。オア（ＯＲ）ゲート２７Ａ（２７Ｂ，２７Ｃ）の出力は、アンドゲート（ＡＮＤ）２６Ａ（２６Ｂ，２６Ｃ）に入力される。
【００１８】
コントローラ２１０から供給されるマスク信号１０２Ａ（１０２Ｂ，１０２Ｃ）は、アンドゲート（ＡＮＤ）２６Ａ（２６Ｂ，２６Ｃ）に入力される。アンドゲート（ＡＮＤ）２６Ａ（２６Ｂ，２６Ｃ）の出力は、サブＣＰＵ２２Ａ（２２Ｂ，２２Ｃ）に入力される。オア（ＯＲ）ゲート２８Ａ（２８Ｂ，２８Ｃ）の出力１０３Ａ（１０３Ｂ，１０３Ｃ）は、コントローラ２１０に入力される。
【００１９】
サブデバッグコントローラ２３Ａ〜２３Ｃはそれぞれ、サブＣＰＵ２２Ａ〜２２Ｃ毎のデバッグ処理を実行する。サブデバッグコントローラ２３Ａ〜２３Ｃはそれぞれ、サブＣＰＵ２２Ａ〜２２Ｃにスタート信号２３０Ａ〜２３０Ｃを出力する（図示略）。ログメモリ２４Ａ〜２４Ｃはそれぞれ、ＣＰＵ間の通信記録などのログ情報を保存する。ログコントローラ２５Ａ〜２５Ｃは、ログメモリ２４Ａ〜２４Ｃのリードライトを制御し、ログメモリ２４Ａ〜２４Ｃの記憶可能容量を監視する機能を有する。
【００２０】
サブＣＰＵ２２Ａ（２２Ｂ，２２Ｃ）から出力されるスタート信号１２０Ａ（１２０Ｂ，１２０Ｃ）は、ログコントローラ２５Ａ（２５Ｂ，２５Ｃ）に入力される。メインＣＰＵから出力されるスタート信号１００は、サブデバッグコントローラ２３Ａ〜２３Ｃに入力される。メインＣＰＵ２０から出力されるログ情報を取得するための制御信号１０１は、ログコントローラ２５Ａ（２５Ｂ，２５Ｃ）に入力される。
【００２１】
［マルチＣＰＵモジュールのデバッグ処理］
以下、図２から図５、及び図６から図９のフローチャートを参照して、本実施形態のマルチＣＰＵモジュール１４の動作としてデバッグ処理を説明する。
【００２２】
まず、ＳＳＤコントローラ１０では、メインＣＰＵ２０及び各サブＣＰＵ２２Ａ〜２２Ｃは同期をとりながら、各種のモジュール（１２）及びコントローラ（１１，１３）の連携制御を実行する。各サブＣＰＵ２２Ａ〜２２Ｃはそれぞれ、制御処理を実行する場合にＣＰＵ間の通信記録などのログ情報を、ログコントローラ２５Ａ〜２５Ｃを介してログメモリ２４Ａ〜２４Ｃに記憶する。メインＣＰＵ２０は、制御処理の終了後に、ログメモリ２４Ａ〜２４Ｃからログ情報を取得する。メインデバッグコントローラ２１は、メインＣＰＵ２０からのログ情報を解析処理することにより、各サブＣＰＵ２２Ａ〜２２Ｃを含むマルチＣＰＵモジュールのデバッグ処理を実行する。
【００２３】
ここで、ログメモリ２４Ａ〜２４Ｃは、コスト面から相対的に記憶容量が少なく、ログ情報を記憶可能な記憶領域が制限されている。そこで、本実施形態のログコントローラ２５Ａ〜２５Ｃは、図６に示すように、制御処理の実行中にログメモリ２４Ａ〜２４Ｃの記憶領域の空き状況をチェックしている（ブロック６００）。
【００２４】
具体的には、図３に示すように、ログコントローラ２５Ａ（２５Ｂ，２５Ｃ）は、ログメモリ２４Ａ（２４Ｂ，２４Ｃ）に保存するログ情報量をカウントするカウンタ３０と、比較器３１と、ログメモリ２４Ａ（２４Ｂ，２４Ｃ）の記憶容量（サイズデータ）を保持するレジスタ３２とを有する。カウンタ３０は、ログ情報を格納するときのライトイネーブル信号の入力に同期して、ログメモリ２４Ａ（２４Ｂ，２４Ｃ）のライトポインタ（ＷＰ）をインクリメントする。なお、カウンタ３０は、ログ情報をログメモリ２４Ａ（２４Ｂ，２４Ｃ）から読み出すときのリードイネーブル信号の入力に同期して、ライトポインタ（ＷＰ）をデクリメントする。
【００２５】
比較器３１は、カウンタ３０のカウント値とレジスタ３２のサイズデータとを比較し、
ログメモリ２４Ａ（２４Ｂ，２４Ｃ）に新たにログ情報を格納できる記憶領域があるか否かを判定する（ブロック６０１）。ログコントローラ２５Ａ（２５Ｂ，２５Ｃ）は、比較器３１の比較結果に基づいて、ログメモリ２４Ａ（２４Ｂ，２４Ｃ）に新たにログ情報を格納できる記憶領域が無いと判定すると、ストップ信号１１０Ａ（１１０Ｂ，１１０Ｃ）を出力する（ブロック６０２）。即ち、比較器３１は、カウント値がログ情報のサイズに起因する所定の値等に一致したときにストップ信号１１０Ａ（１１０Ｂ，１１０Ｃ）を出力する。
【００２６】
図７に示すように、メインデバッグコントローラ２１では、コントローラ２１０は、例えばログコントローラ２５Ａから出力されるストップ信号１１０Ａに応じてＯＲゲート２８Ａの出力１０３Ａを受信する（ブロック７００のＹＥＳ）。この受信に応じて、コントローラ２１０は、ストップ信号１０４ＡをＯＲゲート２７Ａに出力する。ＯＲゲート２７Ａの出力は、ＡＮＤゲート２６Ａ（２６Ｂ，２６Ｃ）を経由してサブＣＰＵ２２Ａに入力される。
【００２７】
また、コントローラ２１０は、サブＣＰＵ２２Ａの停止に同期して、ストップ信号１０４Ｂ，１０４ＣをＯＲゲート２７Ｂ，２７Ｃに出力する。ＯＲゲート２７Ｂ，２７Ｃの出力（ストップ信号）は、ＡＮＤゲート２６Ｂ，２６Ｃを経由してサブＣＰＵ２２Ｂ，２２Ｃに転送される（ブロック７０１）。さらに、コントローラ２１０は、メインＣＰＵ２０にストップ信号を転送する（ブロック７０２）。
【００２８】
図８に示すように、サブＣＰＵ２２Ａ（２２Ｂ，２２Ｃ）は、ログコントローラ２５Ａ及びコントローラ２１０から転送されるストップ信号に応じて停止となる（ブロック８００のＹＥＳ，８０１）。なお、サブＣＰＵ２２Ａ（２２Ｂ，２２Ｃ）は、メインＣＰＵ２０からのスタート信号１００に応じて再起動する（ブロック８０２のＹＥＳ）。即ち、サブＣＰＵ２２Ａ〜２２Ｃは、サブデバッグコントローラ２３Ａ〜２３Ｃからのスタート信号２３０Ａ〜２３０Ｃにより再開する。ログコントローラ２５Ａ（２５Ｂ，２５Ｃ）は、サブＣＰＵ２２Ａ（２２Ｂ，２２Ｃ）からのスタート信号１２０Ａ（１２０Ｂ，１２０Ｃ）によりカウンタ３０のライトポインタ（ＷＰ）を再開する。即ち、ライトポインタ（ＷＰ）はスタート信号２３０Ａ〜２３０Ｃに応じて再開する。なお、ライトポインタ（ＷＰ）は、メインＣＰＵ２０によりクリアする機能を有する。ライトポインタ（ＷＰ）の再開により、ログメモリ２４Ａ（２４Ｂ，２４Ｃ）は新たなログ情報の格納を再開する。
【００２９】
次に、図９に示すように、メインＣＰＵ２０は、ログコントローラ２５Ａ（２５Ｂ，２５Ｃ）からストップ信号１１０Ａ（１１０Ｂ，１１０Ｃ）が出力されると、ログ情報の取得処理に移行する（ブロック９００のＹＥＳ）。即ち、メインＣＰＵ２０は、ログコントローラ２５Ａ（２５Ｂ，２５Ｃ）に対してログ情報を取得するための制御信号１０１を出力し、ログメモリ２４Ａ（２４Ｂ，２４Ｃ）に保存されているログ情報を取得する（ブロック９０１）。
【００３０】
メインＣＰＵ２０は、例えばＳＳＤコントローラ１０内部のＳＲＡＭやＤＲＡＭ１５に取得したログ情報を格納する（ブロック９０２）。この後、メインＣＰＵ２０は、サブデバッグコントローラ２３Ａ〜２３Ｃにスタート信号１００を出力し、サブデバッグコントローラ２３Ａ〜２３Ｃからスタート信号２３０Ａ〜２３０ＣをサブＣＰＵ２２Ａ〜２２Ｃに出力させる（ブロック９０３）。
【００３１】
ここで、メインデバッグコントローラ２１のロジック回路２２０の動作を説明する。
【００３２】
ログコントローラ２５Ａ（２５Ｂ，２５Ｃ）から出力されるストップ信号１１０Ａ（１１０Ｂ，１１０Ｃ）は、ＯＲゲート２８Ａ（２８Ｂ，２８Ｃ）に入力される。ＯＲゲート２８Ａ（２８Ｂ，２８Ｃ）は、ストップ信号１１０Ａ（１１０Ｂ，１１０Ｃ）またはサブデバッグコントローラ２３Ａ〜２３Ｃからのストップ信号１１１Ａ（１１１Ｂ，１１１Ｃ）のいずれかを信号１０３Ａ〜１０３Ｃとしてコントローラ２１０に入力される。また、
ＯＲゲート２７Ａ（２７Ｂ，２７Ｃ）は、ストップ信号１１０Ａ（１１０Ｂ，１１０Ｃ）、ストップ信号１１１Ａ（１１１Ｂ，１１１Ｃ）またはコントローラ２１０からのストップ信号１０４Ａ（１０４Ｂ，１０４Ｃ）のいずれかをＡＮＤゲート２６Ａ（２６Ｂ，２６Ｃ）に出力する。ＡＮＤゲート２６Ａ（２６Ｂ，２６Ｃ）は、ＯＲゲート２７Ａ（２７Ｂ，２７Ｃ）からの出力信号をコントローラ２１０からのマスク信号１０２Ａ（１０２Ｂ，１０２Ｃ）でマスク処理する。
【００３３】
サブＣＰＵ２２Ａ（２２Ｂ，２２Ｃ）はＡＮＤゲート２６Ａ（２６Ｂ，２６Ｃ）からの出力信号により停止となる。この停止に応じて、メインＣＰＵ２０はログメモリ２４Ａ（２４Ｂ，２４Ｃ）に保存されているログ情報を取得する処理に移行する。
【００３４】
図５に示すように、コントローラ２１０は、メインＣＰＵ２０からの制御信号に応じて、サブＣＰＵ２２Ａ〜２２Ｃの動作を選択的に制御するためのマスク信号１０２Ａ〜１０２Ｃを出力する選択回路５１を有する。なお、図５は、便宜的にロジック回路２２０を省略している。
【００３５】
選択回路５１の番号０〜２はそれぞれ、サブＣＰＵ２２Ａ〜２２Ｃに対応する。このようなコントローラ２１０のマスク機能により、例えばマスク信号１０２Ａを出力して、アンドゲート２６Ａからストップ信号１１０Ａの出力を無効にすることが可能である。即ち、サブＣＰＵ２２Ａを停止させないように制御できる。
【００３６】
さらに、図５に示すように、コントローラ２１０は、サブＣＰＵ２２Ａ〜２２Ｃから出力されるブレーク（break）信号５００Ａ〜５００Ｃを入力し、当該ブレーク信号をメインＣＰＵ２０に転送するロジック回路（オアゲート）５０を有する。ロジック回路５０は、入力されたブレーク信号に応じてストップ信号１０４Ａ〜１０４Ｃを出力する。これにより、サブＣＰＵ２２Ａ〜２２Ｃがブレークポイント（break point）で動作を停止し、コントローラ２１０はデバッグ処理に移行する。即ち、サブＣＰＵ２２Ａ〜２２Ｃの何れか１つがブレークポイント（break point）で動作を停止すると、メインＣＰＵ２０及び他のサブＣＰＵ２２Ａ〜２２Ｃに対してもストップ信号が供給され、その動作を停止する。
【００３７】
次に、図４に示すように、サブデバッグコントローラ２３Ａ〜２３Ｃは、メインＣＰＵ２０から、サブＣＰＵ２２Ａ〜２２Ｃ毎のデバッグ処理を実行するための複数のストップ条件情報４００を格納するレジスタ４１-１〜４１-３を含む。サブデバッグコントローラ２３Ａ〜２３Ｃは、ログメモリ２４Ａ〜２４Ｃの記憶領域がなくなるという情報以外のブレークポイント情報４１０をサブＣＰＵ２２Ａ〜２２Ｃから取得する。サブデバッグコントローラ２３Ａ〜２３Ｃは、レジスタ４１-１〜４１-３に保持されたストップ条件情報４００と、ブレークポイント情報４１０とを比較する比較器４０を有する。比較器４０は、ストップ条件情報４００とブレークポイント情報４１０とが一致した場合に、ストップ信号１１１Ａ〜１１１Ｃを出力する。
【００３８】
以上のように本実施形態によれば、ＳＳＤコントローラに使用されるマルチＣＰＵモジュールにおいて、ログ情報を格納できるログメモリの記憶領域が無くなった場合に、該当するサブＣＰＵ及び他のサブＣＰＵを自動的に停止し、デバッグ処理に移行することができる。この場合、ログメモリの記憶領域が基準値以下まで減少したときに、サブＣＰＵを自動的に停止させてもよい。また、メインＣＰＵは、全てのサブＣＰＵが停止したことを確認すると、ログメモリに格納されているログ状態を取得し、ホストなどの外部に退避させることができる。この後に、全てのサブＣＰＵを再起動させることにより、新たなログ情報をログメモリに記憶させることで、継続的にログ情報を確保することができる。
【００３９】
従って、ログメモリの記憶領域が制限されている場合でも、継続的にログ情報を取得して解析できるため十分なデバッグ機能を実現できる。換言すれば、十分なログ情報を確保するためにログメモリの記憶領域の増大化を図ることを不要にできるため、マルチＣＰＵモジュールを製造する上でのコスト増加を回避できる。
【００４０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４１】
１０…ＳＳＤコントローラ、１１…フラッシュメモリコントローラ、
１２…バッファマネージャモジュール、１３…ホストインターフェースコントローラ、
１４…マルチプロセッサモジュール（マルチＣＰＵモジュール）、
１５…バッファメモリ、１６…ＮＡＮＤ型フラッシュメモリ（フラッシュメモリ）、
１７…ホストデバイス、２０…メインＣＰＵ、２１…メインデバッグコントローラ、
２２Ａ〜２２Ｃ…サブＣＰＵ、２３Ａ〜２３Ｃ…サブデバッグコントローラ、
２４Ａ〜２４Ｃ…ログメモリ、２５Ａ〜２５Ｃ…ログコントローラ。
【図１】
2013196645.tif 000003
【図２】
2013196645.tif 000004
【図３】
2013196645.tif 000005
【図４】
2013196645.tif 000006
【図５】
2013196645.tif 000007
【図６】
2013196645.tif 000008
【図７】
2013196645.tif 000009
【図８】
2013196645.tif 000010
【図９】
2013196645.tif 000011