(57)【要約】【課題】ＬＢＡ重複確認処理の完了までの時間を短縮化するデータ記憶装置を提供することにある。【解決手段】実施形態によれば、データ記憶装置は、フラッシュメモリと、フレームデコーダと、重複確認モジュールと、コントローラとを有する。フレームデコーダは、ホストから伝送されるフレームデータからコマンド及び論理アドレスを抽出する。重複確認モジュールは、前記フレームデコーダから抽出された論理アドレスと、実行中又は実行待機中の全コマンドに伴う論理アドレスとの重複確認を並列に実行する。コントローラは、前記重複確認結果に基づいて前記フレームデコーダから抽出されたコマンドの発行を制御する。【選択図】図１
2012063875.tif 000002
【特許請求の範囲】
【請求項１】
記憶手段と、
ホストから伝送されるフレームデータからコマンド及び論理アドレスを抽出するフレームデコーダ手段と、
前記フレームデコーダ手段から抽出された論理アドレスと、実行中又は実行待機中の全コマンドに伴う論理アドレスとの重複確認を並列に実行する重複確認手段と、
前記重複確認結果に基づいて前記フレームデコーダ手段から抽出されたコマンドの発行を制御する制御手段と
を具備するデータ記憶装置。
【請求項２】
前記重複確認手段は、
前記フレームデコーダ手段から抽出された論理アドレスを保持するレジスタ手段と、
前記実行中又は実行待機中の全コマンドに伴う論理アドレスを格納するテーブル手段と、
前記レジスタ手段に保持された論理アドレスと同一のアドレスを前記テーブル手段の全論理アドレスから並列に検索し、前記同一のアドレスを検索した場合にはヒット信号を出力する重複検索手段と
を具備する請求項１に記載のデータ記憶装置。
【請求項３】
前記制御手段は、
前記フレームデコーダ手段から抽出されたコマンド及び前記実行中又は実行待機中のコマンドを格納するコマンドテーブルを含み、
前記重複確認手段の確認結果に基づいて、前記コマンドテーブルに格納された発行準備中のコマンドの発行を制御するように構成されている請求項１または請求項２のいずれか１項に記載のデータ記憶装置。
【請求項４】
前記制御手段は、
前記重複確認手段から前記ヒット信号が出力されたときに、前記フレームデコーダ手段から抽出されたコマンドの発行を停止するように構成されている請求項２または請求項３のいずれか１項に記載のデータ記憶装置。
【請求項５】
前記制御手段は、
前記重複確認手段から前記ヒット信号が出力されたときに、前記実行中又は実行待機中のコマンドの種類に基づいて、前記フレームデコーダ手段から抽出されたコマンドの発行を制御するように構成されている請求項２から請求項４のいずれか１項に記載のデータ記憶装置。
【請求項６】
前記重複確認手段は
前記フレームデコーダ手段により抽出された論理アドレスの属性情報として前記コマンドテーブルの格納位置を示すコマンドインデックス情報を前記レジスタ手段に保持し、
前記重複検索手段から出力される前記ヒット信号及び前記コマンドインデックス情報を前記制御手段に出力する請求項３から請求項５のいずれか１項に記載のデータ記憶装置。
【請求項７】
データ記憶装置のメモリコントローラとホストとの間でコマンドの転送を制御するコマンド制御装置であって、
前記ホストから伝送されるフレームデータからコマンド及び論理アドレスを抽出するフレームデコーダ手段と、
前記フレームデコーダ手段から抽出された論理アドレスと、実行中又は実行待機中の全コマンドに伴う論理アドレスとの重複確認を並列に実行する重複確認手段と、
前記重複確認結果に基づいて前記フレームデコーダ手段から抽出されたコマンドの発行を制御する制御手段と
を具備するコマンド制御装置。
【請求項８】
前記重複確認手段は、
前記フレームデコーダ手段から抽出された論理アドレスを保持するレジスタ手段と、
前記実行中又は実行待機中の全コマンドに伴う論理アドレスを格納するテーブル手段と、
前記レジスタ手段に保持された論理アドレスと同一のアドレスを前記テーブル手段の全論理アドレスから並列に検索し、検索した場合にはヒット信号を出力する重複検索手段と
を具備する請求項７に記載のコマンド制御装置。
【請求項９】
請求項１から請求項６のいずれか１項に記載のデータ記憶装置と、
前記データ記憶装置に対してデータの書き込み又は読み出しを行なうためのコマンドを出力するデータ処理手段と
を具備する電子機器。
【請求項１０】
前記データ記憶装置に含まれる前記重複確認手段は、
前記フレームデコーダ手段から抽出された論理アドレスを保持するレジスタ手段と、
前記実行中又は実行待機中の全コマンドに伴う論理アドレスを格納するテーブル手段と、
前記レジスタ手段に保持された論理アドレスと同一のアドレスを前記テーブル手段の全論理アドレスから並列に検索し、検索した場合にはヒット信号を出力する重複検索手段と
を具備する請求項９に記載の電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリを記憶媒体とするデータ記憶装置、コマンド制御装置及び電子機器に関する。
【背景技術】
【０００２】
近年、データ記憶装置として、書き換え可能な不揮発性メモリであるNAND型フラッシュメモリ（以下、単にフラッシュメモリと表記する場合がある）を記憶媒体とするＳＳＤ（solid state drive）の開発が推進されている。
【０００３】
ＳＳＤは、ハードディスクドライブ（ＨＤＤ）と比較して、ホストからのコマンド受信からメモリアクセス（フラッシュメモリに対するリード／ライト）までの処理の時間(以下、メモリアクセスレイテンシ:memory access latencyと表記する場合がある)が短時間である（処理速度が速い）。
【０００４】
ところで、ＳＳＤではＨＤＤと同様に、ホストからデータ転送を伴うコマンド（以下、データコマンドと表記する場合がある）を受信してからメモリアクセスまでの処理の中に、論理アドレス（以下、ＬＢＡ：logical block addressと表記する場合がある)の重複確認処理（ＬＢＡ重複確認処理）が行なわれている。データコマンドとは、データ（ユーザデータ）の転送を伴うコマンドである。
【０００５】
ＬＢＡ重複確認処理は、複数のデータコマンド間で同一のＬＢＡが存在するか否かを確認する処理である。ＳＳＤは、ホストからデータコマンドを受信すると、当該データコマンドをメモリコントローラに発行する前に、ＬＢＡ重複確認処理を実行する。これにより、先行してメモリアクセス中のデータコマンドの中に、重複するＬＢＡが無いことをチェックすることで、データコマンドの発行が可能となる。即ち、ＳＳＤは、ＬＢＡ重複確認処理後に、データコマンドをメモリコントローラに発行するコマンド発行準備に入る。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平６−２５９１９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
メモリアクセスレイテンシが短いＳＳＤでは、データコマンドを受信してからシーケンシャルにＬＢＡ重複確認処理が実行されると、メモリアクセスレイテンシの時間内に一連のコマンド発行準備が完了せず、メモリアクセスが可能であるにも関わらずに、データコマンドの発行が待たされるという性能的なボトルネックが発生する。
【０００８】
そこで、本発明の目的は、ＬＢＡ重複確認処理の完了までの時間を短縮化するデータ記憶装置、コマンド制御装置及び電子機器を提供することにある。
【課題を解決するための手段】
【０００９】
実施形態によれば、データ記憶装置は、記憶手段と、フレームデコーダ手段と、重複確認手段と、制御手段とを有する。フレームデコーダ手段は、ホストから伝送されるフレームデータからコマンド及び論理アドレスを抽出する。重複確認手段は、前記フレームデコーダ手段から抽出された論理アドレスと、実行中又は実行待機中の全コマンドに伴う論理アドレスとの重複確認を並列に実行する。制御手段は、前記重複確認結果に基づいて前記フレームデコーダ手段から抽出されたコマンドの発行を制御する。
【図面の簡単な説明】
【００１０】
【図１】実施形態に関するＳＳＤの要部を示すブロック図。
【図２】実施形態に関するホストシステムの要部を示すブロック図。
【図３】実施形態に関するホストＩ／Ｆコントローラの構成を説明するためのブロック図。
【図４】実施形態に関するＬＢＡ重複検索モジュールの構成を説明するためのブロック図。
【図５】実施形態に関するＬＢＡ重複検索モジュールの構成を説明するための動作を説明するためのタイミングチャート。
【図６】実施形態に関するＬＢＡテーブルの構成を説明するための図。
【図７】実施形態に関するＬＢＡテーブルの周辺ロジックを説明するための図。
【図８】実施形態に関するコマンド実行管理テーブルの構成を説明するための図。
【図９】実施形態に関するコマンド実行管理テーブルの周辺ロジックを説明するための図。
【図１０】実施形態に関するコマンド発行制御を説明するためのフローチャート。
【図１１】実施形態に関するフレームデータのフォーマットの一例を示す図。
【図１２】実施形態に関するホストＩ／Ｆコントローラの作用効果を説明するための図。
【図１３】実施形態に関するホストＩ／Ｆコントローラの動作を説明するためのフローチャート。
【発明を実施するための形態】
【００１１】
以下図面を参照して、実施形態を説明する。
【００１２】
［ＳＳＤの構成］
図１は、ＳＳＤ１の要部を説明するためのブロック図である。図１に示すように、ＳＳＤ１は、記録媒体であるNAND型フラッシュメモリ（フラッシュメモリ）１０と、メモリコントローラ１１と、バッファコントローラ１２と、バッファメモリ１３と、ホストインターフェースコントローラ（以下、ホストＩ／Ｆコントローラ）１４とを有する。
【００１３】
ホストＩ／Ｆコントローラ１４は、例えばシリアルSCSI規格（SAS）やシリアルATA規格（SATA）などのインターフェース規格に準拠し、ホストシステム２０とのインターフェースを制御する。ホストＩ／Ｆコントローラ１４は、ホストシステム２０から伝送されるフレームデータ（コマンドまたはデータを含むパケット）を受信し、後述するように、コマンド発行処理までの一連の処理を実行する。
【００１４】
ここで、ホストシステム２０は、例えばパーソナルコンピュータやデジタルテレビ機器などの電子機器である。ホストシステム２０は、図２に示すように、例えば本体内に本実施形態のＳＳＤ１及びマイクロプロセッサ（ＣＰＵ）２１を内蔵し、データや映像を表示するディスプレイ２２を有する。
【００１５】
バッファコントローラ１２は、ホストＩ／Ｆコントローラ１４またはメモリコントローラ１１からのアクセス要求に応じて、バッファメモリ１３をアクセスする。バッファコントローラ１２は、ホストＩ／Ｆコントローラ１４からデータを含むフレームデータをバッファメモリ１３に格納する。バッファメモリ１３は、例えばＤＤＲ（double data rate）型ＤＲＡＭ（dynamic random access memory）から構成されている。
【００１６】
メモリコントローラ１１は、ホストＩ／Ｆコントローラ１４から発行されるコマンドに応じて、フラッシュメモリ１０のリード／ライトアクセスを制御する。メモリコントローラ１１は、ホストＩ／Ｆコントローラ１４からのコマンドを一時的に保持するレジスタを有する。
【００１７】
［ホストＩ／Ｆコントローラの構成］
図３は、本実施形態のホストＩ／Ｆコントローラ１４の構成を説明するためのブロック図である。
【００１８】
図３に示すように、ホストＩ／Ｆコントローラ１４は、インターフェース（Ｉ／Ｆ）３１と、データバッファ３２と、フレームデコーダ３３と、コマンドテーブル３４を含むコマンド発行制御モジュールと、ＬＢＡ重複検索モジュール３５とを有する。インターフェース３１は、インターフェース規格に準拠した信号ケーブル３０を介してホストシステム２０と接続し、ホストシステム２０から伝送される複数のフレームデータを受信する。インターフェース３１は、受信したシリアル形式フォーマットから受信データ形式に変換した受信データ３００を、データバッファ３２に格納する。
【００１９】
データバッファ３２は複数の受信データ３００を保持し、この受信データ３００から１パケット単位のフレームデータ３０１をフレームデコーダ３３に送付する。フレームデータ３０１は、例えばシリアルSCSI規格（SAS）に準拠していれば、図１１に示すようなフォーマットからなる。フレームデコーダ３３は、フレームデータ３０１のInformation Unit部を解析することで、フレームデータ３０１がデータを含むコマンド（データコマンド）またはデータを含まないコマンドであるかを認識し、かつコマンドに付加されるＬＢＡを認識する。ここで、データコマンドとはデータの転送を伴うコマンドである。また、データとはフラッシュメモリ１０に記録するためのユーザデータである。
【００２０】
フレームデコーダ３３は、データ送受信を伴うフラッシュメモリへのライトのコマンド（データコマンド）の場合には、当該データ（ユーザデータ）３０２をバッファコントローラ１２に送信する。バッファコントローラ１２は、当該データ３０２をバッファメモリ１３に格納する。一方、フレームデコーダ３３は、フレームデータ３０１からコマンドに付加されたＬＢＡを認識すると、当該ＬＢＡ３０６をＬＢＡ重複検索モジュール３５に転送する。また同時に、フレームデコーダ３３は、コマンド３０４をコマンドテーブル３４に転送する。
【００２１】
ＬＢＡ重複検索モジュール３５は、ＬＢＡ３０６を含むエントリ情報３０８のエントリ（登録）により、ＬＢＡ重複確認処理であるＬＢＡ重複検索動作を実行する。本実施形態では、コマンド発行制御モジュールは、ＬＢＡ重複検索モジュール３５の検索結果（重複確認結果）に基づいて、コマンドテーブル３４からメモリコントローラ１１に対するコマンド発行（３１０）を制御する。
【００２２】
［ホストＩ／Ｆコントローラの動作］
さらに図３と共に、図４、図５及び図１３のフローチャートを参照して、ホストＩ／Ｆコントローラ１４の動作を説明する。
【００２３】
まず、ホストＩ／Ｆコントローラ１４は、ホストシステム２０から伝送される複数のフレームデータを受信し、データバッファ３２に格納する（ブロック２００）。フレームデコーダ３３は、前述したように、フレームデータ３０１のInformation Unit部を解析することで、フレームデータ３０１がデータを含むコマンド（データコマンド）またはデータを含まないコマンドであるかを認識する（ブロック２０１）。フレームデコーダ３３は、ライトのデータコマンドの場合には、当該データ３０２をバッファコントローラ１２を経由して、バッファメモリ１３に格納する（ブロッ２０２）。
【００２４】
一方、フレームデコーダ３３は、コマンド３０４をコマンドテーブル３４に登録する（ブロック２０１のＹＥＳ）。即ち、フレームデコーダ３３は、コマンド３０４及び後述するコマンドインデックス（CmdIndex:Command Index）３０５を含むコマンドエントリ情報３０３をコマンドテーブル３４に転送してコマンドをエントリ（登録）する。
【００２５】
同時に、フレームデコーダ３３は、フレームデータ３０１からコマンドに付加されたＬＢＡを認識すると、当該ＬＢＡ３０６を含むＬＢＡエントリ情報３０８をＬＢＡ重複検索モジュール３５にエントリ（登録）する（ブロック２０３）。ＬＢＡエントリ情報３０８は、コマンド処理対象であるＬＢＡ３０６の先頭ＬＢＡ（Start LBA:SLBA）、最終ＬＢＡ（End LBA:ELBA）、及びコマンドインデックス（CmdIndex）３０５を含む。ここで、コマンドインデックス（CmdIndex）３０５は、コマンドテーブル３４のコマンド格納位置を示すインデックス（アドレス）である。
【００２６】
ＬＢＡ重複検索モジュール３５は、フレームデコーダ３３からのＬＢＡエントリにより、ＬＢＡ重複確認処理であるＬＢＡ重複検索処理を開始する（ブロック２０４）。以下、図４及び図５を参照して、ＬＢＡ重複検索処理を説明する。
【００２７】
図４に示すように、ＬＢＡ重複検索モジュール３５は、レジスタ４０と、ＬＢＡテーブル４１と、周辺ロジック４２とを有する。レジスタ４０は、フレームデコーダ３３から転送されるＬＢＡエントリ情報３０８を保持する。ＬＢＡエントリ情報３０８の中で、マスク情報CmpMskは、ＬＢＡの比較時に下位ビットをマスクし、比較サイズを制御するための情報である。
【００２８】
ＬＢＡテーブル４１は、フレームデコーダ３３によりエントリされて、実行中または実行待機中の全てのＬＢＡエントリ情報を格納している。図６は、ＬＢＡテーブル４１のエントリ構造を示す図である。図６に示すように、ＬＢＡテーブル４１は、１エントリとして、コマンド単位で、フラグ情報（Valid）６０、マスク情報（CmpMsk）６１、先頭ＬＢＡ（Start LBA:SLBA）６２、最終ＬＢＡ（End LBA:ELBA）６３、及びコマンドテーブルインデックス（Cmd Table Index）６４を含む。フラグ情報（Valid）６０は、ＬＢＡエントリが有効であることを示し、コマンドが受理されて実行終了していない状態を示す情報である。先頭ＬＢＡ６２と最終ＬＢＡ６３とにより、コマンドが実行するＬＢＡのサイズが設定される。マスク情報（CmpMsk）６１は、マスク情報CmpMskに対応するものであり、先頭ＬＢＡ６２と最終ＬＢＡ６３の範囲内でどの部分を比較するかを示す情報である。コマンドテーブルインデックス（Cmd Table Index）６４は、コマンドインデックス（CmdIndex）３０５に対応するものであり、コマンドテーブル３４のコマンド格納位置を示す情報である。
【００２９】
周辺ロジック４２は、ＬＢＡテーブル４１によるＬＢＡ重複検索ロジックを構成し、アンドゲート（AND）４２０、コンパレータ４２１、エンコーダ４２２、及びセレクタ４２３を含む。周辺ロジック４２は、図７に示すように、ＬＢＡテーブル４１のフラグ情報（Valid）６０のクリアを制御するためのロジック７０を含む。このロジック７０は、コマンド実行完了時に、メモリコントローラ１１から転送されるメモリアクセス終了通知情報３１４に含まれるコマンド終了（command finish）信号３１５及びコマンドインデックス（CmdIndex）３１６によりＬＢＡテーブル４１のフラグ情報（Valid）６０をクリアする。
【００３０】
ＬＢＡ重複検索モジュール３５は、図５（Ａ）〜（Ｅ）に示すタイミングでＬＢＡ重複検索処理を実行する。即ち、図５（Ｂ），（Ｃ）に示すように、フレームデコーダ３３からのエントリにより、今回エントリされた被検索ＬＢＡ（ＬＢＡエントリ情報３０８）がレジスタ４０にセットされる。ＬＢＡ重複検索処理は、図５（Ａ）に示すように、そのエントリの次のサイクルで開始する。
【００３１】
ＬＢＡ重複検索処理では、今回エントリされた被検索ＬＢＡと、ＬＢＡテーブル４１に登録されている全ＬＢＡとが並列に比較される。即ち、図５（Ｄ）に示す検索期間は、今回エントリされた被検索ＬＢＡとＬＢＡテーブル４１の全ＬＢＡとを並列に比較する時間である。即ち、ＬＢＡ重複検索モジュール３５は、フレームデコーダ３３からのエントリに応じて、ＬＢＡテーブル４１の全ＬＢＡ分の検索を並列かつ同時に実行する。
【００３２】
ＬＢＡ重複検索ロジック回路４２は、図５（Ｅ）に示すように、ＬＢＡ重複検索結果として、ヒットするＬＢＡがある場合に、ヒット信号（ＨＩＴ信号）３１２と、コマンドインデックス（CmdIndex）３１３を出力する。コマンドインデックス（CmdIndex）３１３は、コマンドテーブル３４内の格納場所を示す情報である。
【００３３】
図３に示すように、ＬＢＡ重複検索モジュール３５は、ヒットするＬＢＡがある場合、即ち実行中または実行待機中のコマンドのＬＢＡと重複する場合に、ＨＩＴ信号３１２とコマンドインデックス（CmdIndex）３１３をコマンドテーブル３４に出力する。つまり図１３に示すように、ホストＩ／Ｆコントローラ１４は、ＬＢＡ重複検索モジュール３５からの出力に応じて、コマンドテーブル３４にエントリされているコマンドを、メモリコントローラ１１に対して発行するか否かを制御するコマンド発行制御を実行する（ブロック２０５）。
【００３４】
以下、図８、図９、及び図１０のフローチャートを参照して、ホストＩ／Ｆコントローラ１４のコマンド発行制御について説明する。
【００３５】
コマンドテーブル３４は、図８に示すように、コマンドの実行を管理するためのコマンド実行管理テーブルを有する。コマンド実行管理テーブルは、ファームウェアリード（FW Read）フラグ情報８０、コマンド実行（command execute）フラグ情報８１、ＬＢＡ重複（LBA dependency）フラグ情報８２、先行コマンドテーブルインデックス値（Depend command table index）８３、及びコマンドテーブルインデックス（command table index）８４を有する。
【００３６】
ファームウェアReadフラグ情報８０は、図示しないファームウェア（firmware）が使用するもので、ファームウェアによりリードされたことを示すフラグである。コマンド実行フラグ情報８１は、当該コマンドが実行中であることを示すフラグである。ＬＢＡ重複フラグ情報８２は、ＬＢＡ重複が発生していることを示すフラグである。先行コマンドテーブルインデックス８３は、重複した先行コマンドが格納されているテーブルインデックスを示す情報である。コマンドテーブルインデックス８４は、エントリされた当該コマンドのコマンドテーブル内の格納位置を示す情報である。
【００３７】
コマンドテーブル３４では、ＬＢＡ重複検索モジュール３５からのＨＩＴ信号３１２とコマンドインデックス（CmdIndex）３１３により、コマンド実行管理テーブルのＬＢＡ重複フラグ情報８２及び先行コマンドテーブルインデックス８３がそれぞれセットされる。即ち、コマンド実行管理テーブルにおいて、ＬＢＡ重複フラグ情報８２がセットされた当該コマンド（今回エントリされたコマンド）は、ＬＢＡが先行コマンドのＬＢＡと重複しているため、メモリコントローラ１１に対して発行が制御される（図１０を参照）。
【００３８】
ここで、コマンド実行管理テーブルは、コマンド実行完了時に、当該エントリがクリアされる構造のスコアボードである。コマンド発行制御モジュールは、コマンドテーブル３４を使用して、メモリコントローラ１１との通信によりコマンドの実行状況を監視している。コマンドテーブル３４（コマンド発行制御モジュール）は、コマンド処理が完了すると、メモリコントローラ１１から転送されるメモリアクセス終了通知情報３１４に含まれるコマンド終了信号３１５及びコマンドインデックス（CmdIndex）３１６を受信し、コマンド実行管理テーブルのＬＢＡ重複フラグ情報８２をクリアする。図９は、メモリコントローラ１１からのコマンド終了信号３１５及びコマンドインデックス（CmdIndex）３１６により、ＬＢＡ重複フラグ情報（LBA Dep）８２をクリアするための周辺ロジック９０である。
【００３９】
ここで、コマンド処理が完了すると、ＬＢＡ重複検索モジュール３５も、メモリコントローラ１１からメモリアクセス終了通知情報３１４に含まれるコマンド終了信号３１５及びコマンドインデックス３１６を受信する。ＬＢＡ重複検索モジュール３５は、当該コマンド終了信号３１５及びコマンドインデックス３１６により、ＬＢＡテーブル４１内の該当するエントリのＬＢＡをクリアする（図７を参照）。
【００４０】
次に、図１０のフローチャートを参照して、メモリコントローラ１１に対するコマンド発行処理の制御方法を説明する。
【００４１】
前述したように、ホストＩ／Ｆコントローラ１４は、ＬＢＡ重複検索モジュール３５により、ホストシステム２０から受信したコマンドのＬＢＡが先行コマンドのＬＢＡと重複している場合に、メモリコントローラ１１に対してコマンド発行制御を実行する。ここで、便宜的に当該コマンドを後発コマンドと表記し、先行コマンドと後発コマンドの種類に基づいて、コマンド発行制御の内容が異なる。
【００４２】
まず、先行コマンドがリードコマンドで、後発コマンドもリードコマンドの場合を想定する（ブロック１００のＹＥＳ，１０１のＹＥＳ）。この場合には、ホストＩ／Ｆコントローラ１４は、発行制御を実行しない（ブロック１０２）。即ち、ホストＩ／Ｆコントローラ１４は、ＬＢＡが重複した実行中の先行リードコマンドが実行完了するまで、メモリコントローラ１１に対して後発リードコマンドは発行しない。この場合、先行リードコマンドが完了した時に、後発リードコマンドも完了とみなす。従って、先行リードコマンドで得られたデータ（フラッシュメモリ１０から読み出されたユーザデータ）をホストシステム２０に伝送すると共に、後発リードコマンド用のデータとして使用する。
【００４３】
次に、先行コマンドがリードコマンドで、後発コマンドがライトコマンドの場合を想定する（ブロック１００のＹＥＳ，１０１のＮＯ）。この場合には、ホストＩ／Ｆコントローラ１４は、先行リードコマンドが完了するまで、メモリコントローラ１１に対して後発ライトコマンドを発行しない（ブロック１０３）。従って、先行リードコマンドが完了した時に、後発ライトコマンドを発行するため、重複したＬＢＡのデータは書き換えられる。
【００４４】
一方、先行コマンドがライトコマンドで、後発コマンドもライトコマンドの場合を想定する（ブロック１００のＮＯ，１０４のＹＥＳ）。この場合には、ホストＩ／Ｆコントローラ１４は、発行制御を実行しない（ブロック１０５）。即ち、ホストＩ／Ｆコントローラ１４は、ＬＢＡが重複した実行中の先行ライトコマンドが実行完了するまで、メモリコントローラ１１に対して後発ライトコマンドは発行しない。または、書込みデータサイズが同じ場合、先行するライトコマンドの書込みを途中で停止した後に、後発ライトコマンドを発行してもよい。
【００４５】
また、先行コマンドがライトコマンドで、後発コマンドがリードコマンドの場合を想定する（ブロック１００のＮＯ，１０４のＮＯ）。この場合には、ホストＩ／Ｆコントローラ１４は、先行ライトコマンドが完了するまで、メモリコントローラ１１に対して後発リードコマンドを発行しない（ブロック１０６）。なお、先行ライトコマンドが完了した後に、後発リードコマンドは完了したとみなし、先行ライトコマンドで使用されたデータを後発リードコマンドにより読み出されたデータとして使用してもよい。但し、先行ライトコマンドで使用された書き込みデータのサイズと、後発リードコマンドにより読み出されるデータのサイズが同一の場合に限る。
【００４６】
以上のようなホストＩ／Ｆコントローラ１４の作用効果を、図１２（Ａ），（Ｂ）を参照して具体的に説明する。ここでは、ホストシステム２０からのフレームデータを受信してから、リードコマンドをメモリコントローラ１１に発行するまでの一連の処理を想定する。
【００４７】
図１２（Ａ）は、従来のＳＳＤにおけるホストＩ／Ｆコントローラの一連の処理を時系列的に示すものである。一連の処理は、フレームデータをデータバッファから読み出す処理５００、フレームデータのInformation Unit部を解析する処理５０１、リードコマンド及びＬＢＡを抽出する処理５０２、ＬＢＡ重複検索処理５０３、及びＬＢＡ重複がない場合のコマンド発行処理５０４からなる。
【００４８】
この一連の処理を複数回を繰り返すことにより、リードデータ５１０，５１１を取得して、ホストシステム２０に伝送することになる。ここで、リードコマンドの発行処理５０４からリードデータ５１０を読み出すまでに、一定の待ち時間(コマンドデータレイテンシ)ＣＲが発生する。さらに、従来のＳＳＤにおけるホストＩ／Ｆコントローラでは、先行のコマンドによりリードデータ５１０が読み出された後、次のコマンド発行処理５０４の実行が可能であるが、実際には待ち時間Ｔが発生する。この待ち時間Ｔは、ファームウェア（firmware）によるＬＢＡ重複確認処理に要する時間である。即ち、従来のＳＳＤにおけるホストＩ／Ｆコントローラでは、先行のデータリードが完了しても、次のリードコマンド発行処理準備が完了するまでの待ち時間Ｔが発生し、結果としてコマンド実行性能が低下する。
【００４９】
これに対して、本実施形態のホストＩ／Ｆコントローラ１４では、図１２（Ｂ）に示すように、ファームウェア（firmware）の介在による次のリードコマンド発行処理準備が完了するまでの待ち時間Ｔは発生しない。これは、本実施形態のホストＩ／Ｆコントローラ１４は、ＬＢＡ重複検索モジュール３５により、ファームウェア（firmware）が介在せず、ＬＢＡテーブル４１の全ＬＢＡに対する並列同時のＬＢＡ重複検索処理を実行するためである。なお、本実施形態の一連の処理には、リードデータ５１０，５１１，５１２の読み出しが完了するまで、次のリードデータの読み出しまでの待機する処理５０５が含まれる。このため、短時間であるが、一定の待ち時間(コマンドデータレイテンシ)ＣＲが発生する。
【００５０】
以下は、従来のＳＳＤにおけるホストＩ／Ｆコントローラの性能を示す参考例である。
【００５１】
ＬＢＡ重複検索動作回路は、200MHz（1T=5ns)で動作し、LBAテーブルエントリ数が200で、検索クロックが最大で200T（1000ns）である。ファームウェア（firmware）は、コマンドテーブルを5T（25ns）でリードし、100T（500ns）でＬＢＡを解析し、LBA重複被検索レジスタに5T（25ns）で登録する。さらに、ファームウェア（firmware）は、5T（25ns）でＬＢＡ重複検索の開始を指示する。従って、合計で1575nsの処理時間が必要となる。
【００５２】
一般的に、ＳＳＤの性能規格として、ＩＯＰＳ(1秒間に実行されるIOコマンド数)という表記があるが、100,000 IOPS(100K IOPS)は1usに1つのコマンドを実行する必要がある。従って、従来のＳＳＤではメモリコントローラへのコマンド発行準備に消費している時間が1usを超えてしまうため、ボトルネックになることは明白である。これに対して、本実施形態のホストＩ／Ｆコントローラ１４であれば、ＬＢＡ重複検索処理に要する時間を、約10cycle/266MHz(40ns以内)程度にすることが可能である。
【００５３】
以上のように本実施形態のホストＩ／Ｆコントローラ１４によれば、ＬＢＡ重複検索モジュール３５により並列同時のＬＢＡ重複検索処理を実行することにより、ＬＢＡ重複確認処理の高速化を実現することができる。従って、コマンドメモリアクセスレイテンシの期間内にコマンド発行処理を可能とすることができる。換言すれば、メモリコントローラ１１へのコマンド発行間隔を短縮化することが可能となり、ＳＳＤのコマンド実行性能を向上させることができる。
【００５４】
なお、本実施形態はＳＳＤに適用する場合について説明したが、例えばハードディスクドライブなどのデータ記憶装置のホストＩ／Ｆコントローラにも適用可能である。
【００５５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５６】
１…ＳＳＤ、１０…NAND型フラッシュメモリ（フラッシュメモリ）、
１１…メモリコントローラ、１２…バッファコントローラ、
１３…バッファメモリ、１４…ホストインターフェースコントローラ、
２０…ホストシステム、３１…インターフェース（Ｉ／Ｆ）、３２…データバッファ、
３３…フレームデコーダ、３４…コマンドテーブル（コマンド発行制御モジュール）、
３５…ＬＢＡ重複検索モジュール、４０…レジスタ、４１…ＬＢＡテーブル、
４２…周辺ロジック。
【図１】
2012063875.tif 000003
【図２】
2012063875.tif 000004
【図３】
2012063875.tif 000005
【図４】
2012063875.tif 000006
【図５】
2012063875.tif 000007
【図６】
2012063875.tif 000008
【図７】
2012063875.tif 000009
【図８】
2012063875.tif 000010
【図９】
2012063875.tif 000011
【図１０】
2012063875.tif 000012
【図１１】
2012063875.tif 000013
【図１２】
2012063875.tif 000014
【図１３】
2012063875.tif 000015
【手続補正書】
【提出日】平成23年9月22日(2011.9.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
記憶手段と、
ホストにより伝送されるフレームデータからコマンド及び論理アドレスを抽出するフレームデコーダ手段と、
前記フレームデコーダ手段により前記フレームデータから抽出された論理アドレスと、実行中又は実行待機中のコマンドに伴う論理アドレスとの重複確認を実行する重複確認手段と、
前記重複確認結果に基づいて前記フレームデータから抽出されたコマンドの発行を制御する制御手段と
を具備するデータ記憶装置。
【請求項２】
前記重複確認手段は、
前記フレームデコーダ手段により抽出された論理アドレスを保持するレジスタ手段と、
前記実行中又は実行待機中のコマンドに伴う論理アドレスを格納するテーブル手段と、
前記レジスタ手段に保持された論理アドレスと同一のアドレスを前記テーブル手段の全論理アドレスから並列に検索し、前記同一のアドレスを検索した場合にはヒット信号を出力する重複検索手段と
を具備する請求項１に記載のデータ記憶装置。
【請求項３】
前記制御手段は、
前記フレームデコーダ手段により抽出されたコマンド及び前記実行中又は実行待機中のコマンドを格納するコマンドテーブルを含み、
前記重複確認手段の確認結果に基づいて、前記コマンドテーブルに格納されたコマンドの発行を制御するように構成されている請求項１または請求項２のいずれか１項に記載のデータ記憶装置。
【請求項４】
前記制御手段は、
前記重複確認手段から前記ヒット信号が出力されたことに応じて、前記フレームデコーダ手段により抽出されたコマンドの発行を停止するように構成されている請求項２に記載のデータ記憶装置。
【請求項５】
前記制御手段は、
前記重複確認手段から前記ヒット信号が出力されたことに応じて、前記実行中又は実行待機中のコマンドの種類に基づいて、前記フレームデコーダ手段により抽出されたコマンドの発行を制御するように構成されている請求項２または請求項４のいずれか１項に記載のデータ記憶装置。
【請求項６】
前記重複確認手段は、
前記フレームデコーダ手段により抽出された論理アドレスの属性情報として前記コマンドテーブルの格納位置を示すコマンドインデックス情報を前記レジスタ手段に保持し、
前記重複検索手段から出力される前記ヒット信号及び前記コマンドインデックス情報を前記制御手段に出力する請求項２、４、５のいずれか１項に記載のデータ記憶装置。
【請求項７】
データ記憶装置のメモリコントローラとホストとの間でコマンドの転送を制御するコマンド制御装置であって、
前記ホストにより伝送されるフレームデータからコマンド及び論理アドレスを抽出するフレームデコーダ手段と、
前記フレームデコーダ手段により前記フレームデータから抽出された論理アドレスと、実行中又は実行待機中のコマンドに伴う論理アドレスとの重複確認を実行する重複確認手段と、
前記重複確認結果に基づいて前記フレームデータから抽出されたコマンドの発行を制御する制御手段と
を具備するコマンド制御装置。
【請求項８】
前記重複確認手段は、
前記フレームデコーダ手段により抽出された論理アドレスを保持するレジスタ手段と、
前記実行中又は実行待機中のコマンドに伴う論理アドレスを格納するテーブル手段と、
前記レジスタ手段に保持された論理アドレスと同一のアドレスを前記テーブル手段の全論理アドレスから並列に検索し、検索した場合にはヒット信号を出力する重複検索手段と
を具備する請求項７に記載のコマンド制御装置。
【請求項９】
データ記憶装置と、
前記データ記憶装置に対してデータの書き込み又は読み出しを行なうためのコマンドを出力するデータ処理手段とを有し、
前記データ記憶装置は、
記憶手段と、
ホストにより伝送されるフレームデータからコマンド及び論理アドレスを抽出するフレームデコーダ手段と、
前記フレームデコーダ手段により前記フレームデータから抽出された論理アドレスと、実行中又は実行待機中のコマンドに伴う論理アドレスとの重複確認を実行する重複確認手段と、
前記重複確認結果に基づいて前記フレームデータから抽出されたコマンドの発行を制御する制御手段と
を具備する電子機器。
【請求項１０】
前記重複確認手段は、
前記フレームデコーダ手段により抽出された論理アドレスを保持するレジスタ手段と、
前記実行中又は実行待機中のコマンドに伴う論理アドレスを格納するテーブル手段と、
前記レジスタ手段に保持された論理アドレスと同一のアドレスを前記テーブル手段の全論理アドレスから並列に検索し、前記同一のアドレスを検索した場合にはヒット信号を出力する重複検索手段と
を具備する請求項９に記載の電子機器。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
実施形態によれば、データ記憶装置は、記憶手段と、フレームデコーダ手段と、重複確認手段と、制御手段とを有する。フレームデコーダ手段は、ホストにより伝送されるフレームデータからコマンド及び論理アドレスを抽出する。重複確認手段は、前記フレームデコーダ手段により前記フレームデータから抽出された論理アドレスと、実行中又は実行待機中のコマンドに伴う論理アドレスとの重複確認を実行する。制御手段は、前記重複確認結果に基づいて前記フレームデータから抽出されたコマンドの発行を制御する。