(57)【要約】【課題】ホストからの指示に応じて消費電力の上限を抑制可能なメモリシステムを提供する。【解決手段】並列動作可能な複数のバンクを有する不揮発性半導体メモリと、ホストからの電源管理コマンドを受信すると、受信した電源管理コマンドを解析するコマンド解析部と、このコマンド解析部の解析結果に応じて書き込みの際に並列動作させるバンクの上限数を動的に可変制御する記録制御部とを備える。【選択図】図６
2011227664.tif 000002
【特許請求の範囲】
【請求項１】
並列動作可能な複数のバンクを有する不揮発性半導体メモリと、
ホスト装置からの電源管理コマンドを受信すると、受信した電源管理コマンドを解析するコマンド解析部と、
前記コマンド解析部の解析結果に応じて書き込みの際に並列動作させるバンクの上限数を動的に可変制御する記録制御部と、
を備えることを特徴とするメモリシステム。
【請求項２】
前記コマンド解析部は、受信した前記電源管理コマンドに応じて複数の電源管理モードのうちの１つを動作させ、各電源管理モードで並列動作させるバンクの上限数を異ならせることを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記コマンド解析部の解析結果が最小消費電力を指定する場合、前記記録制御部は、並列動作させるバンクの上限数を１とする第１の電源管理モードを動作させ、コマンド解析部の解析結果が最小消費電力を指定していない場合、前記記録制御部は、並列動作させるバンクの上限数を同時並列可能な最大バンク数とする第２の電源管理モードを動作させることを特徴とする請求項２に記載のメモリシステム。
【請求項４】
前記ホスト装置から前記電源管理コマンドが入力されていない場合、前記記録制御部は、並列動作させるバンクの上限数の初期値を１とすることを特徴とする請求項１に記載のメモリシステム。
【請求項５】
書き込みの際に前記ホスト装置から入力される論理アドレスと書き込み動作を実行するバンクの番号とが関連付けられていることを特徴とする請求項１に記載のメモリシステム。
【請求項６】
前記不揮発性半導体メモリに書き込まれるデータを一時的に保持するバッファメモリを更に具備し、
前記記録制御部は、現在並列動作しているバンク数が前記上限数未満である場合に、前記バッファメモリから前記不揮発性半導体メモリへの書き込みを実行することを特徴とする請求項１に記載のメモリシステム。
【請求項７】
前記記録制御部は、現在並列動作しているバンク数が前記上限数に等しい場合に、前記バッファメモリから前記不揮発性半導体メモリへの書き込みを待機させるすることを特徴とする請求項１に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリを備えたメモリシステムに関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリを備えたメモリシステムは、複数のチップを並列駆動することで転送性能を向上させている。特許文献１では、物理ブロックを複数個組み合わせた仮想ブロックの概念を導入し、この仮想ブロック単位に並列に書き込みを行っている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２００７−５１７３２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、ホストからの指示に応じて消費電力の上限を抑制可能なメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本願発明の一態様によれば、並列動作可能な複数のバンクを有する不揮発性半導体メモリと、ホスト装置からの電源管理コマンドを受信すると、受信した電源管理コマンドを解析するコマンド解析部と、このコマンド解析部の解析結果に応じて書き込みの際に並列動作させるバンクの上限数を動的に可変制御する記録制御部とを備えることを特徴とする。
【発明の効果】
【０００６】
本発明によれば、ホストからの指示に応じて消費電力の上限を動的に抑制可能なメモリシステムを提供することが可能となる。
【図面の簡単な説明】
【０００７】
【図１】図１は、ＳＳＤの構成例を示すブロック図である。
【図２】図２は、ＮＡＮＤコントローラとＮＡＮＤメモリとの接続態様を示す図である。
【図３】図３は、ＮＡＮＤコントローラの内部構成例を示すブロック図である。
【図４】図４は、バンクインタリーブ動作を説明する図である。
【図５】図５は、ドライブ制御回路の内部構成例を示すブロック図である。
【図６】図６は、書込み動作を概念的に示す図である。
【図７】図７は、書き込み動作の全体的処理手順を示すフローチャートである。
【図８】図８は、登録情報の初期化処理の手順を示すフローチャートである。
【図９】図９は、コマンド解析処理の手順を示すフローチャートである。
【図１０】図１０は、記録動作実行処理の手順を示すフローチャートである。
【図１１】図１１は、物理ブロックアドレスの登録済み判定処理の手順を示すフローチャートである。
【図１２】図１２は、物理ブロックアドレスの登録処理の手順を示すフローチャートである。
【図１３】図１３は、バンク登録解除処理の手順を示すフローチャートである。
【図１４】図１４は、第２の実施形態の動作手順を示すフローチャートである。
【図１５】図１５は、第２の実施形態の動作手順を示すフローチャートである。
【発明を実施するための形態】
【０００８】
ＳＳＤ（Solid  State  Drive）はホスト機器の外部メモリとして機能する。ホスト機器がノートパソコンのように携帯可能な機器の場合、長期の携帯状態での使用には、電源供給に限界がある。したがって、ＳＳＤが、特に、携帯可能な機器に搭載される場合は、ホストからの要求に応じて消費電力を制御可能にしたほうが望ましい。本実施形態のＳＳＤでは、ホストからの電源管理コマンドに応じてバンク並列度を動的に変化させ、これにより消費電力を制御可能とする。
【０００９】
以下に添付図面を参照して、本発明の実施の形態にかかるメモリシステムを詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
【００１０】
［第１の実施形態］
図１は、メモリシステムの一例としてのＳＳＤ１００の構成例を示すブロック図である。ＳＳＤ１００は、ＳＳＤコントローラとしてのドライブ制御回路４と、不揮発性半導体メモリとしてのＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリと略す）１０と、バッファメモリ、作業用メモリ領域などとして機能する例えば揮発性半導体メモリで構成されるＲＡＭ２０と、ＡＴＡインタフェース（ＡＴＡ  Ｉ／Ｆ）２などのメモリ接続インタフェースなどを備えている。ＳＳＤ１００は、ＡＴＡ  Ｉ／Ｆ２を介してパーソナルコンピュータあるいはＣＰＵコアなどのホスト装置（以下、ホストと略す）１と接続され、ホスト１の外部メモリとして機能する。
【００１１】
ＮＡＮＤメモリ１０は、ホスト１によって指定されたユーザデータを記憶したり、ＲＡＭ２０で管理される管理情報をバックアップ用に記憶したりする。ＮＡＮＤメモリ１０は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。ＮＡＮＤメモリ１０は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、ＮＡＮＤメモリ１０では、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。図１では、ＮＡＮＤメモリ１０は、４チャネル（４ｃｈ：ｃｈ０〜ｃｈ３）を介して、ドライブ制御回路４内部のＮＡＮＤコントローラ１１３に並列接続されており、４つのチャネル並列動作要素１０ａ〜１０ｄを並列動作させることが可能である。チャネル数は４つに限らず、任意のチャネル数を採用可能である。
【００１２】
ＲＡＭ２０は、データ転送用、管理情報記録用または作業領域用の記憶部として使用される。具体的には、データ転送用の記憶部としてのバァファ部２１は、ホスト１から書込要求があったデータをＮＡＮＤメモリ１０に書込む前に一時的に保存したり、ホスト１から読出要求があったデータをＮＡＮＤメモリ１０から読出して一時的に保存したりするために使用される。また、管理情報記録用の記憶部としては、ＮＡＮＤメモリ１０に記憶されるデータの格納位置などを管理するための管理情報（ＮＡＮＤメモリ１０に記憶されている各種管理テーブルが起動時などに展開された管理テーブル、これら管理テーブルの変更差分情報であるログなど）を格納するために使用される。
【００１３】
ドライブ制御回路４は、ホスト１とＮＡＮＤメモリ１０との間でＲＡＭ２０を介してデータ転送制御を行うとともに、ＳＳＤ１００内の各構成要素を制御する。
【００１４】
ドライブ制御回路４は、データアクセス用バス１０１、回路制御用バス１０２を備えている。回路制御用バス１０２には、ドライブ制御回路４全体を制御するプロセッサ１０４が接続されている。回路制御用バス１０２には、ＮＡＮＤメモリ１０に記憶された各管理プログラム（ＦＷ：ファームウエア）をブートするブート用プログラムが格納されたブートＲＯＭ１０５がＲＯＭコントローラ１０６を介して接続されている。
【００１５】
ＡＴＡインタフェースコントローラ（ＡＴＡコントローラ）１１１、ＮＡＮＤコントローラ１１３、及びＲＡＭコントローラ１１４は、データアクセス用バス１０１と回路制御用バス１０２との両方に接続されている。通信制御部としてのＡＴＡコントローラ１１１は、ＡＴＡインタフェース２を介してホスト１との間でコマンド（ライト、リード、フラッシュなど）およびデータなどを送受信する。データアクセス用バス１０１には、データ作業領域及びファームウェア展開領域として使用されるＳＲＡＭ１１５がＳＲＡＭコントローラ１１６を介して接続されている。ＮＡＮＤメモリ１０に記憶されているファームウェアは起動時、ブートＲＯＭ１０５に記憶されたブート用プログラムによってＳＲＡＭ１１５に転送される。
【００１６】
ＲＡＭコントローラ１１４は、プロセッサ１０４とＲＡＭ２０とのインタフェース処理などを実行する。ＮＡＮＤコントローラ１１３は、プロセッサ１０４とＮＡＮＤメモリ１０とのインタフェース処理、ＮＡＮＤメモリ１０−ＲＡＭ２０間のデータ転送制御、誤り訂正符号のエンコード／デコード処理などを実行する。
【００１７】
図２は、ＮＡＮＤコントローラ１１３とＮＡＮＤメモリ１０との接続態様を示すものである。ＮＡＮＤメモリ１０は、前述したように、複数個のチャネル並列動作要素１０ａ〜１０ｄによって構成されている。各チャネル並列動作要素１０ａ〜１０ｄは、バンクインターリーブが可能な複数のバンク（図２では４バンク、Ｂａｎｋ０〜Ｂａｎｋ３）によって構成されており、各チャネル並列動作要素１０ａ〜１０ｄ内の各々のバンクは、複数のメモリチップ（図２では、２メモリチップ、Ｃｈｉｐ０、Ｃｈｉｐ１）によって構成されている。
【００１８】
図２に示すように、ＮＡＮＤコントローラ１１３は、複数のチャネルを有し、各チャネルでは、コントロールＩ／Ｏ信号（ＣｔｒｌＩ／Ｏ）を共有する複数のメモリチップを４本のチップイネーブル信号（ＣＥ）でバンク毎に個別に制御する。また、複数のチャネルを跨って４本のレディ／ビジー信号（ＲｙＢｙ）を共有し、レディ／ビジー信号（ＲｙＢｙ）を共有する各チャネルのメモリチップが同時に動作するように制御を行う。レディ／ビジー信号（ＲｙＢｙ）を共有するメモリチップ群をバンクと呼び、各々のバンクは独立して書き込み／読み出し／消去動作を行うことが可能である。
【００１９】
図３は、ＮＡＮＤコントローラ１１３の内部構成例を示すものである。ＮＡＮＤコントローラ１１３では、各チャネルを独立して動作させるために、チャネル毎に、ＤＭＡコントローラ（ＤＭＡＣ）５０と、誤り訂正回路（ＥＣＣ）５１、コマンド発行を行うＮＡＮＤインタフェース（ＮＡＮＤＩ／Ｆ）５２を備える。各ＮＡＮＤＩ／Ｆ５２には、４バンク分のチップイネーブル信号ＣＥ（ＣＥ０〜ＣＥ３）が接続され、アクセスするバンクに応じてＣＥ信号（ＣＥ０〜ＣＥ３）を制御する。また、４バンクを独立して動作させるために、バンク毎に共通接続されたＲｙＢｙ信号を監視してバンクの状態を管理するバンクコントローラ（ＢＡＮＫ−Ｃ）５３を４つ備える。ＢＡＮＫ−Ｃ５３は、それぞれのバンクに対する要求をキューイングする機能を備え、各バンクへの要求がある場合にチャネルの使用権を確保し、自らが管理するバンクへの読み出し／書き込み／消去要求を実行する。調停制御回路５４は、ＮＡＮＤＩ／Ｆ５２及びＢＡＮＫ−Ｃ５３を監視し、各バンクのチャネル使用権を所定の規則に従って調停する。
【００２０】
このように、ＮＡＮＤメモリは、複数のバンクから構成される。ＮＡＮＤメモリ１０は、ページ単位の書き込み／読み出しが可能であるが、以下では、説明の単純化のために、便宜上、書込み（記録）は、ブロック単位に行われるとする。また、ＮＡＮＤメモリ１０内の各並列動作要素１０ａ〜１０ｄ内の物理ブロックを組み合わせて仮想的なブロックを構成することも可能であるが、以下では、説明の単純化のために、ＮＡＮＤメモリ１０は１つのチャネル（並列動作要素）のみを有し、ＮＡＮＤメモリ１０での並列動作は、バンク単位（インタリーブ動作）のみで行われるとする。
【００２１】
このような前提によると、各バンクは一回の記録で書き込まれる単位（記録単位）である物理ブロック（以下、単にブロックということもある）を複数個有する。前述したように、バンクインタリーブでは、あるバンクに属するブロックへの記録が終わる前でも、これと異なるバンクに属するブロックへ書き込みを始めることが出来る。書き込み中のブロックと同じバンクに属するブロックへは、前の書き込みが終了するまで書込みを実行することができない。以下の説明では、本ＳＳＤ１００においては、バンクの個数をＭ、回路的に並列動作（インタリーブ）可能なバンク数の上限値をＮとする。本実施形態では例えば、Ｍ＝８、Ｎ＝４とするが、一般的にはＭ≧Ｎの関係を満たしているならＭ，Ｎの値は任意である。
【００２２】
また、本第１の実施形態では、ホスト１が使用する論理ブロックアドレスＡｄｄｒを実際に記憶すべき物理ブロックのアドレスＰＡは、Ａｄｄｒ毎に決まったあるバンクに属する物理ブロックの中から選択する必要がある。このような関係の例として
Ａｄｄｒ％Ｍ＝ＰＡ％Ｍ＝バンク番号（＃Ｂ）    …（１）
があげられる。但し、Ｘ％Ｙは、ＸをＹで割った剰余を求める演算である。第１の実施形態では（１）の関係を満たすようにＡｄｄｒに対応したＰＡを選択する。例えば、Ｍ＝８とした場合、ＰＡ＝０の場合、＃Ｂ＝０となり、ＰＡ＝１の場合、＃Ｂ＝１となり、ＰＡ＝２の場合、＃Ｂ＝２となり、…、ＰＡ＝７の場合、＃Ｂ＝７となり、ＰＡ＝８の場合、＃Ｂ＝０となる。また、Ｍ＝８とした場合、Ａｄｄｒ＝０の場合、＃Ｂ＝０となり、Ａｄｄｒ＝１の場合、＃Ｂ＝１となり、Ａｄｄｒ＝２の場合、＃Ｂ＝２となり、…、Ａｄｄｒ＝７の場合、＃Ｂ＝７となり、Ａｄｄｒ＝８の場合、＃Ｂ＝０となる。
【００２３】
図４は、Ａｄｄｒ＝０、１、２，３、４を持つシーケンシャルライトによる書き込みデータがホスト１から順次入力された場合の、本ＳＳＤ１００によるバンクインタリーブ動作を示す図である。先の（１）式から、Ａｄｄｒ＝０のデータは、＃Ｂ＝０のバンクに書き込まれ、Ａｄｄｒ＝１のデータは、＃Ｂ＝１のバンクに書き込まれ、Ａｄｄｒ＝２のデータは、＃Ｂ＝２のバンクに書き込まれ、Ａｄｄｒ＝３のデータは、＃Ｂ＝３のバンクに書き込まれ、Ａｄｄｒ＝４のデータは、＃Ｂ＝４のバンクに書き込まれる。但し、同時並列可能な最大バンク数Ｎ＝４であるので、図４に示すように、最初、＃Ｂ＝０、＃Ｂ＝１、＃Ｂ＝２、＃Ｂ＝３の４バンクについてのインタリーブ動作が行われるが、これらの４バンクの何れかへの書き込み動作が終了するまでは、つぎのバンク＃Ｂ＝４への書き込み動作が発生することはない。図４では、＃Ｂ＝１のバンクが最初に時点ｔ０に書き込み動作を終了しているので、この時点ｔ０でつぎのバンク＃Ｂ＝４への書き込み動作が発生している。このように、同時並列可能な最大バンク数がＮ＝４に抑えられたインタリーブ動作が行われている。なお、Ａｄｄｒ＝０、１、２，３、８をもつデータ書込みが行われる場合は、Ａｄｄｒ＝８のデータは＃Ｂ＝０のバンクにしか書込みが行えないので、時点ｔ１で＃Ｂ＝０のバンクに対するＡｄｄｒ＝０のデータの書込みが終了しないと、Ａｄｄｒ＝８のデータの書込みを行うことができない。
【００２４】
また、Ａｄｄｒ＝０、３、５、７を持つランダムライトによる書き込みデータがホスト１から順次入力された場合は、８バンクのうち、＃Ｂ＝０、＃Ｂ＝３、＃Ｂ＝５、＃Ｂ＝７の４バンクが選択されて、これら選択された４バンクに対するインタリーブ動作が行われる。
【００２５】
以下の説明では、ＲＡＭ２０内のバッファ部２１はその機能構成を単純化し、バッファ部２１は、ブロック単位にデータが書き込まれ、ブロック単位にデータ読み出されるリングバッファ的な構成であるとする。
【００２６】
図５は、前述したドライブ制御回路４内の構成における本実施形態の要部の機能構成を示す図である。ドライブ制御回路４は、ホスト１からのＡＴＡコマンドを解析するコマンド解析部７１と、バッファ部２１に対する書込み／読み出し制御と、ＮＡＮＤメモリ１０に対する書込み制御を実行する記録制御部７２とを備える。コマンド解析部７１は、プロセッサ１０４を動作させる前述したファームウェアによってその主な機能が実現されるものであり、ホスト１からのＡＴＡコマンドを解析し、その解析結果である管理情報（内部変数）としてのホスト許容並列度ｍを更新する。ホスト許容並列度ｍは、記録制御部７２によって参照され、記録制御部７２は、ホスト許容並列度ｍに基づきＮＡＮＤメモリ１０に対する書込みの際のバンク並列度の上限値（≦Ｎ）を決定する。また、コマンド解析結果としての記録要求（論理ブロックアドレスＡｄｄｒと、バッファ位置Ｂｕｆｐと、記録ブロック数Ｓｉｚｅを含む）がコマンド解析部７１から記録制御部７２に出力される。記録制御部７２は、プロセッサ１０４を動作させる前述したファームウェア、ＲＡＭコントローラ１１４、ＮＡＮＤコントローラ１１３によってその主な機能が実現される。
【００２７】
図６は、ホスト１から受信したデータの書き込み処理を示すもので、ホスト１から受信したデータは、一旦バッファ部２１にバッファリングされた後、ＮＡＮＤメモリ１０に書き込まれる。
【００２８】
ホスト１から送信される電源管理コマンド（例えば、ATAコマンド体系のSET FEATURESのEnable/Disable the APM feature set）について説明する。下記に、APM feature setを示す。count値によって、電力消費とパフォーマンスとの対応が指定されている。
値（count）        解説
(a)    00h            予約済み、使用禁止
(b)    01h            最小消費電力/スタンバイあり
(c)    02h-7Fh               中間消費電力/スタンバイあり
(d)    80h            最小消費電力/スタンバイなし
(e)    81h-FDh               中間消費電力/スタンバイなし
(f)    FEh            最大パフォーマンス
(g)    FFh            予約済み、使用禁止
【００２９】
本実施形態では、かかるＡＴＡの電源管理コマンドに対応するために、count値が「０１ｈ」、「８０ｈ」である場合に、ホスト許容並列度ｍ＝１として同時並列駆動するバンクの上限値を１とし、ＳＳＤ１００での消費電力を最小とする。また、count値が「０１ｈ」、「８０ｈ」以外である場合には、ホスト許容並列度ｍ＝Ｎとして、同時並列駆動するバンクの上限値をＮとする。Ｎは、回路的に可能な同時書込可能なバンク数の上限値である。本実施形態では、ＡＴＡコマンド体系のスタンバイあり／スタンバイなしには対応しない。
【００３０】
以下、図７〜図１３に従って、本実施形態の動作を説明する。図７は、ホスト１から受信したデータをＮＡＮＤメモリ１０に書き込む際のドライブ制御回路４での全体的動作手順を示すフローチャートである。図８は、図７での登録情報初期化処理（ステップＳ１００）の詳細手順を示すフローチャートである。図９は、図７でのコマンド解析処理（ステップＳ２００）の詳細手順を示すフローチャートである。図１０は、図７での記録動作実行処理（ステップＳ３００）の詳細手順を示すフローチャートである。図１１は、図１０でのＰＡの登録済み判定処理（ステップＳ３３０）の詳細手順を示すフローチャートである。図１２は、図１０でのＰＡの登録処理（ステップＳ３７０）の詳細手順を示すフローチャートである。図１３は、図７でのバンク登録の解除処理（ステップＳ４００）の詳細手順を示すフローチャートである。
【００３１】
図７において、先ず、ドライブ制御回路４内のプロセッサ１０４では、登録情報の初期化処理を実行する（ステップＳ１００）。プロセッサ１０４で使用する管理情報（内部変数）であるバンク使用情報ｂａｎｋ［］は、バンク数であるＭ個の要素から成る配列であり、各要素は論理値(真偽値)を取る。論理値が「真」であるときは、そのバンクが使用中（記録実行中）であり、論理値が「偽」であるときは、そのバンクは未使用（記録未実行）であるように真偽値が更新される。登録情報の初期化処理においては、プロセッサ１０４は、まず、図８に示すように、バンク使用情報ｂａｎｋ［０］〜ｂａｎｋ［Ｍ−１］を「偽」、則ち未使用に初期化し（ステップＳ１０１）、現在並列度ｎ（現在の実際のバンク並列度）を０に初期化する（ステップＳ１０２）。
【００３２】
つぎに、プロセッサ１０４は、ホスト許容並列度ｍを初期値Ｎ０とする（図７、ステップＳ１１０）。この初期値Ｎ０は、ホスト１から電源管理コマンドが入力されていないときのＮＡＮＤメモリ１０でのバンク並列度を決めるものであり、初期値Ｎ０＝１としてバンク並列動作を行わないようにしてもよいし、Ｎ０＝４として最大バンク並列度を確保するようにしてもよく、ＳＳＤ１００の仕様に応じて適宜設定する。つぎに、プロセッサ１０４は、管理情報としての記録ブロック数Ｓｉｚｅを０に初期化する（ステップＳ１２０）。記録ブロック数Ｓｉｚｅは、後述するが、書込み開始待ちのブロック個数である。
【００３３】
図７のフローチャートにおいては、ステップＳ１３０でバンク単位の記録が終了したか否かが判断され、バンク単位の記録が終了した場合は、バンク登録の解除処理が行われる（ステップＳ４００）。ステップＳ１３０で、バンク単位の記録が終了していない場合は、ステップＳ１５０で記録ブロック数Ｓｉｚｅを０と比較することで、ＮＡＮＤメモリ１０に対する書込み待ちのブロックがまだあるか否かが判定され、書込み待ちのブロックが残っている場合は、記録動作が実行される（ステップＳ３００）。ステップＳ１５０で、書込み待ちのブロックが残っていないと判定された場合は、ホストコマンドを受信したか否かが判定され（ステップＳ１６０）、ホストコマンドを受信した場合は、コマンド取得処理（ステップＳ１６０）、コマンド解析処理（ステップＳ２００）が行われる。すなわち、図７のフローチャートにおいては、記録動作中は、Ｓ１３０の判定を行いつつ、記録ブロック数Ｓｉｚｅが０になるまでは、ステップＳ３００での記録動作実行と、ステップＳ４００でのバンク登録解除処理が繰り返し実行される。
【００３４】
電源を立ち上げた直後は、ステップＳ１３０の判断はＮＯとなり、ステップＳ１５０の判断もＮＯとなる。ステップＳ１６０では、ＡＴＡコントローラ１１１は、ホスト１からのコマンドを受信したか否かを判断する。ホスト１からのコマンドを受信していない場合、プロセッサ１０４は、ホスト１からの指示以外の、例えばウェアレベリング、レフレッシュなどのＳＳＤ１００の内部処理を実行させる（ステップＳ１７５）その他の処理にはバッファ部２１中の空きメモリを適正量に保つためのバッファ整理も含まれる。ＡＴＡコントローラ１１１は、ホスト１からのコマンドを受信した場合、受信したコマンド、フィーチャ（feature：コマンド修飾）、カウント(count：コマンド引数)をプロセッサ１０４に通知する。プロセッサ１０４のコマンド解析部７１は、受信したコマンド、フィーチャ（feature）、カウント（count）を解析する（ステップＳ２００）。
【００３５】
コマンド解析処理の詳細は図９に示されている。コマンド解析部７１は、受信したコマンドが「ＥＦｈ」であるか否かを判定することで、受信したコマンドがセットフィーチャ（set feature）であるか否かを判定する（図９、ステップＳ２０１）。受信したコマンドがセットフィーチャでない場合、コマンド解析部７１は、受信したコマンドがライト系のコマンド、フラッシュ系のコマンド（バッファ部２１からＮＡＮＤメモリ１０へのデータフラッシュ）であるか否かを判定し（ステップＳ２８０）、受信したコマンドがライト系のコマンドかフラッシュ系のコマンドでない場合は、他のコマンドの解析処理と、解析結果に対応する処理を実行する（ステップＳ２９５）。また、コマンド解析部７１は、受信したコマンドがライト系のコマンドかフラッシュ系のコマンドである場合は、ライト系のコマンド、フラッシュ系のコマンドの解析処理と、その解析結果に応じた処理を実行する（ステップＳ２９０）。
【００３６】
ステップＳ２９０で行われる処理について説明する。コマンド解析部７１は、ホスト１からデータ書き込み、または記録済みデータのフラッシュ処理命令などを受けたとき、必要に応じてバッファ部２１にバッファリングされたデータをＮＡＮＤメモリ１０に転送する書き込み要求（記録要求）を記録制御部７２に出力する。同様にステップＳ１７５においてバッファ整理を行った場合も必要に応じてバッファ部２１にバッファリングされたデータをＮＡＮＤメモリ１０に転送する書き込み要求を記録制御部７２に出力する。コマンド解析部７１は、記録要求を記録制御部７２に出力する際、記録要求に対応するデータの論理ブロックアドレスＡｄｄｒと、記録要求に対応するデータのバッファ部２１での先頭記憶位置を示す管理情報としてのバッファ位置Ｂｕｆｐと、記録要求に対応するデータの書込み待ちのブロック個数を示す記録ブロック数Ｓｉｚｅに必要な値を書き込む。
【００３７】
記録制御部７２は、コマンド解析部７１から記録要求を受信すると、論理ブロックアドレスＡｄｄｒ、バッファ位置Ｂｕｆｐ、記録ブロック数Ｓｉｚｅを参照して、バッファ部２１にバッファリングされたデータをＮＡＮＤメモリ１０に書き込むための制御を実行する。記録制御部７２は、ホスト１より、電源管理コマンドが受信されていない場合は、前述したように、ステップＳ１１０で初期設定したホスト許容並列度ｍ＝Ｎ０（初期値）にしたがったバンク並列度をもってＮＡＮＤメモリ１０に対する書込みを実行する。一旦、記録ブロック情報Ｓｉｚｅに０より大きな値が書き込まれたら、ステップＳ１６０以下を実行できなくなるため、この記録ブロック情報Ｓｉｚｅが記録制御部７２によって０に戻されるまで、コマンド解析部７１は、バッファ部２１上のデータをＮＡＮＤメモリ１０に書き込む新たな記録要求を発行できない。
【００３８】
コマンド解析部７１は、ステップＳ２０１で受信したコマンドがセットフィーチャ「ＥＦｈ」である場合は、つぎに、フィーチャが「０５ｈ」であるか否かを判定することで、電源管理をイネーブルとする「Enable the APM feature set」が指定されたか否かを判定する（ステップＳ２１０）。フィーチャで、電源管理のイネーブルが指定された場合、コマンド解析部７１は、つぎに、前述したカウント（count）に指定された値と、「７Ｆｈ」とを論理積をとることで、カウント（count）の最上位ビットを無視させる（ステップＳ２２０）。コマンド解析部７１は、上記論理積が「０１ｈ」以下であるか否かを判定し（ステップＳ２３０）、論理積が「０１ｈ」以下である場合は、ホスト許容並列度ｍ＝１として同時並列駆動するバンクの上限値を１とし（ステップＳ２４０）、ＳＳＤ１００での消費電力を最小とする。一方、論理積が「０１ｈ」より大きい場合は、ホスト許容並列度ｍ＝Ｎとして同時並列駆動するバンクの上限値を前述した回路的最大値Ｎとする（ステップＳ２４５）。
【００３９】
論理積が「０１ｈ」以下である場合には、上記したthe APM feature setにおいて、(b)の01h：最小消費電力/スタンバイありと、(d)の80h：最小消費電力/スタンバイなしが指定された場合を含んでいる。また、論理積が「０１ｈ」以下でない場合には、(d)の80h：最小消費電力/スタンバイなしと、(f)のFEh：最大パフォーマンスが指定された状態を含んでいる。count値が01h,80h,FEh以外の中間消費電力においてホスト許容並列度は1またはNの何れかになる。
【００４０】
ステップＳ２１０の判定がＮＯである場合、コマンド解析部７１は、フィーチャが「８５ｈ」であるか否かを判定することで、電源管理をディスエーブルとする「Disable the APM feature set」が指定されたか否かを判定する（ステップＳ２５０）。フィーチャで、電源管理のディスエーブルが指定されていない場合、コマンド解析部７１は、他のフィーチャ解析、およびその解析結果に対応する処理を実行する（ステップＳ２７０）。フィーチャで、電源管理のディスエーブルが指定されている場合、コマンド解析部７１は、ホスト許容並列度ｍを初期値Ｎ０とする。
【００４１】
前述したように、図９のステップＳ２９０において、ライト系処理あるいはフラッシュ系処理が発生すると、コマンド解析部７１から記録制御部７２に記録要求が発生され、管理情報としての、論理アドレスＡｄｄｒ、バッファ位置Ｂｕｆｐ、記録ブロック数Ｓｉｚｅに所要の値が書き込まれる。したがって、ライト系処理あるいはフラッシュ系処理が発生すると、最初は、図７のステップＳ１３０の判定がＮＯとなり、図７のステップＳ１５０の判定がＹＥＳとなり、記録制御部７２による記録動作が実行される（ステップＳ３００）。
【００４２】
ステップＳ３００での記録動作の詳細は図１０に示されている。記録動作が開始されると、記録制御部７２は、現在並列度ｎがホスト許容並列度ｍ以上であるか否かを判定する（図１０、ステップＳ３１０）。まず、ホスト１から電源管理コマンドが入力される前の動作について説明する。ホスト１から電源管理コマンドが入力される前は、記録制御部７２は、図７のステップＳ１１０で設定されたホスト許容並列度ｍ＝Ｎ０（初期値）をもってバンク並列動作を行う。ここでは、Ｎ０＝４として設定されている場合について説明する。
【００４３】
記録制御部７２は、ステップＳ３１０において、現在並列度ｎ≧ホスト許容並列度ｍである場合は、手順をステップＳ３４０にスキップし、ＰＡに無効値をセットする。記録制御部７２は、ステップＳ３１０において、現在並列度ｎ＜ホスト許容並列度ｍである場合は、論理ブロックアドレスＡｄｄｒに基づき、論理ブロックアドレスＡｄｄｒのデータを格納可能な物理ブロックアドレスを求める。前述したように、この実施形態では、論理ブロックアドレスＡｄｄｒによって求められた物理ブロックの属するバンク番号は決定されている。そして、記録制御部７２は、計算した物理ブロックアドレスを物理ブロックアドレスＰＡにセットする（ステップＳ３２０）。つぎに、記録制御部７２は、物理ブロックアドレスＰＡが登録済みであるか否か、すなわち使用中であるか否かを判定する（ステップＳ３３０）。
【００４４】
図１１に、ステップＳ３３０の詳細手順を示す。まず、記録制御部７２は、（１）式に基づき、ＰＡをバンク個数Ｍ（この場合Ｍ＝８）で割った剰余を求め、求めた剰余をバンク番号とする（ステップＳ３３１）。記録制御部７２は、ステップＳ３３１で求めた剰余値に対応するバンク使用情報ｂａｎｋ［バンク番号］の状態を参照し、ｂａｎｋ［バンク番号］が偽の場合は、物理アドレス情報ＰＡが登録ずみでない（記録未実行）と判断し、手順をステップＳ３５０に移行させ、ｂａｎｋ［バンク番号］が真の場合は、物理アドレス情報ＰＡが登録ずみである（記録実行中）と判断し、手順をステップＳ３４０に移行させる。
【００４５】
ステップＳ３４０においては、記録制御部７２は、物理ブロックアドレスＰＡに無効値をセットする。ステップＳ３５０では、記録制御部７２は、当該物理ブロックアドレスＰＡが無効値であるか否かを判断し、物理ブロックアドレスＰＡが無効値である場合は、処理を終了して、手順を図７のステップＳ１３０に移行させる。記録制御部７２は、物理ブロックアドレスＰＡが無効値でないと判断すると、バッファ位置Ｂｕｆｐで指定されたバッファ部２１の位置からデータを読み出し、読み出したデータをＮＡＮＤメモリ１０の物理ブロックアドレスＰＡで指定される物理ブロックにデータを書き込む（ステップＳ３６０）。つぎに、記録制御部７２は、物理ブロックアドレスＰＡの登録処理を実行する（ステップＳ３７０）。
【００４６】
ステップＳ３７０でのＰＡの登録処理は、図１２にその詳細が示されている。ＰＡの登録処理においては、記録制御部７２は、まず、先の（１）式によって求めた剰余をバンク番号（＃Ｂ）にセットし（ステップＳ３７１）、セットしたバンク番号に対応するバンク使用情報ｂａｎｋ［＃Ｂ］を真に、すなわち使用中とする（ステップＳ３７２）。そして、現在並列度ｎを＋１する（ステップＳ３７３）。
【００４７】
つぎに、記録制御部７２は、論理ブロックアドレスＡｄｄｒを＋１し、バッファ位置Ｂｕｆｐを＋１し、記録ブロック数Ｓｉｚｅを−１する（図１０、ステップＳ３８０）。ステップＳ３８０の処理が終了すると、手順は図７のステップＳ１３０に移行される。
【００４８】
図７のステップＳ１３０では、記録制御部７２は、バンク単位の記録が終了したか否かを判定しており、記録制御部７２は、あるバンクについての記録動作が終了した場合、バンク登録の解除処理を実行する（ステップＳ４００）。
【００４９】
ステップＳ４００でのバンク登録の解除処理の詳細は、図１３に示されている。記録制御部７２は、まず、バンク番号（＃Ｂ）に書込みが終了したバンク番号をセットする。そして、そのバンク番号に対応するバンク使用情報ｂａｎｋ［＃Ｂ］を偽に、すなわち未使用とする（ステップＳ４２０）。そして、現在並列度ｎを−１する（ステップＳ４３０）。
【００５０】
例えば、先の図４に示したようなＡｄｄｒ＝０、１、２，３、４を持つデータ（５つのブロック）をバッファ部２１からＮＡＮＤメモリ１０へ書き込むシーケンシャルライトが発生したとする。このシーケンシャルライト開始時点での、現在並列度ｎ＝０であるとする。ホスト許容並列度は初期値Ｎ０（＝４）であるとする。以下、Ａｄｄｒ＝０、１、２，３、４のブロックの書込みの際の手順を順に説明する。この場合の初期の記録ブロック数Ｓｉｚｅ＝５である。
【００５１】
（１）Ａｄｄｒ＝０のブロック
ステップＳ３１０の判断はＮＯとなり、ステップＳ３２０でＡｄｄｒ＝０のブロックを書き込む物理ブロックアドレスＰＡが決められる。この場合、ステップＳ３３０の判断はＮＯとなり、ステップＳ３５０の判断はＮＯとなり、ステップＳ３６０でＰＡにデータが書き込まれる。図１２のステップＳ３７１では、バンク番号＃Ｂ＝０がセットされ、ステップＳ３７２では、バンク使用情報ｂａｎｋ［＃Ｂ＝０］に真（記録実行中）がセットされ、現在並列度ｎが＋１され、ｎ＝１となる。つぎに、図１０のステップＳ３８０で、論理ブロックアドレスＡｄｄｒが＋１され、バッファ位置Ｂｕｆｐが＋１され、記録ブロック数Ｓｉｚｅが−１され、４となる。
【００５２】
（２）Ａｄｄｒ＝１〜３のブロック
Ａｄｄｒ＝０のブロックと同様の処理が実行され、結果的に、現在並列度ｎ＝４となり、記録ブロック数Ｓｉｚｅ＝１となる。
【００５３】
（３）Ａｄｄｒ＝４のブロック
現在並列度ｎ＝４で、ホスト許容並列度ｍ＝４であるので、ステップＳ３１０の判断はＹＥＳとなり、ステップＳ３４０で物理ブロックアドレスＰＡに無効値がセットされ、ステップＳ３５０の判断の結果、手順は、図７のステップＳ１３０に移行される。＃Ｂ＝０〜３のうちの何れかのバンクで、記録動作が終了するまで、ステップＳ１３０、ステップＳ１５０、ステップＳ３１０、ステップＳ３４０、ステップＳ３５０のループが繰り返される。図４に示したように、＃Ｂ＝０のバンクでＡｄｄｒ＝０のデータの記録動作が終了したとする。この結果、図７のステップＳ１３０の判定がＹＥＳとなり、バンク登録の解除が実行される。図１３のステップＳ４１０で記録動作が終了した「０」がバンク番号＃Ｂにセットされ、バンク使用情報ｂａｎｋ［＃Ｂ＝０］に偽（未使用）がセットされ（ステップＳ４２０）、現在並列度ｎが−１され、ｎ＝３となる。その後、手順は、ステップＳ１３０、ステップＳ１５０を経由して、図１０のステップＳ３１０に移行する。この段階で、ステップＳ３１０の判定がＮＯとなり、Ａｄｄｒ＝４のデータを格納可能な＃Ｂ＝４のバンクの物理ブロックが選択されて、ＰＡにセットされる（ステップＳ３２０）。その後、ステップＳ３３０、ステップＳ３５０、ステップＳ３５０を経由し、ステップＳ３６０において、＃Ｂ＝４のバンクの物理ブロックにＡｄｄｒ＝４のデータが書き込まれる。
【００５４】
なお、図１０のステップＳ３３０の判断がＹＥＳとなるのは、例えば、図４に示したように、Ａｄｄｒ＝０、１、２，３、８をもつデータ書込みが行われる場合において、Ａｄｄｒ＝８のデータを書き込む際に発生する。すなわち、Ａｄｄｒ＝８のデータは＃Ｂ＝０のバンクにしか書込みが行えないので、＃Ｂ＝０のバンクに対するＡｄｄｒ＝０のデータの書込みが終了しないと、Ａｄｄｒ＝８のデータの書込みを行うことができないからである。
【００５５】
このように、電源管理コマンドがホスト１から入力される前においては、図１０のステップＳ３２０で、ＰＡに代入される値は、現在並列度ｎがホスト許容並列度ｍであるＮ以上であるならば、無効値である。ＰＡが無効値の場合は、ステップＳ３５０の判断によって直ちに記録動作実行処理を終了し、図７に示す制御ループに戻って再び記録動作実行処理が呼び出される。このような処理が繰り返される。この繰り返しは、図７のステップＳ１３０で記録終了と判断され、ステップＳ４００でバンク登録が解除されるまで続く。
【００５６】
一方、現在並列度ｎがホスト許容並列度ｍであるＮに満たない場合は、図１０のステップＳ３２０でＰＡにセットする値は、該当バンクに属する記録単位に既に書き込みを行っているか否かに従い、既に書き込みを行っているなら無効値、そうでないなら書き込むべき記録単位の物理ブロック番号をセットする。そして、ＰＡが無効値でないときＰＡが指す物理ブロックに書き込みを行う。
【００５７】
このように、図４に示したように、現在並列度ｎがホスト許容並列度ｍになるまでは、同時に書き込むブロックの個数は増加しうるが、現在並列度ｎがホスト許容並列度ｍに一致した時、現在並列度ｎがホスト許容並列度ｍより小さくなるまで次の書き込みは待たされ、結果として常にホスト許容並列度ｍ以下の並列度で書き込みを実行することができる。
【００５８】
次に、ホスト１がCmd=EFh、Feature=05h、Count=1を持つ電源管理コマンドを発行し、その後、上記と同様の記録動作を行ったとする。ホスト１がCount=1を持つ電源管理コマンドを発行した後、図９のステップＳ２４０でホスト許容並列度ｍは１にセットされる。この結果、上記と同様の処理によって現在並列度ｎは常に１またはそれ以下の状態を保ちながら書き込みが実行されることになる。このように、ＳＳＤ１００は常にホスト１が要求する以下のバンク並列度をもって書き込みを行うことが可能となる。ホスト１が、節電状態を解消するために、Feature=05hでCount>1とするか、Feature=85hとすると、バンク並列による書込みが再開される。
【００５９】
このように第１の実施形態では、ＳＳＤ１００側では、ホスト１が発行した電源管理コマンドを通じて要求した最大並列度を超えない範囲のバンク並列度をもって書き込みが実行される。これによって、例えば電源容量の制約が大きなノートＰＣでも、ホスト１が電源管理コマンドを発行することで安全に書き込みを遂行することが出来る。
【００６０】
なお、図７のフローチャートでは、バンク単位での記録終了の検出（ステップＳ１３０）と、バンク登録解除（ステップＳ４００）、Ｓｉｚｅ＞０のときの記録実行動作（ステップＳ３００）を図７のループから繰り返し実行する形式を取っているが、バンク単位での記録終了の検出はその事象を割り込みベクタとして取り扱うことで割り込み処理の形式で実現することも出来る。またバンク登録を解除する処理を割り込み処理に移動することで、バンク単位での記録終了の検出を図７のループからの実行ではなく、必要な全ての書き込み命令を出し終わるまで制御を戻さない形式に改めることも出来る。
【００６１】
また、上記実施形態では、ＡＴＡ規格のSET FEATUREコマンドで、その中のＡＰＭという機能を使用してホスト許容並列度ｍを書き換えるようにしているが、同様の目的を適当なベンダコマンドで作成したり、あるいはＡＴＡ規格とは異なる別のインタフェース規格上の同様の目的を持ったコマンドを用いてホスト許容並列度ｍを書き換えるようにしてもよい。同様にWRITE,Flush系コマンドもＡＴＡ規格の場合、Cmd=CAh(WRITE DMA)、35h(WRITE DMA EXT), E7h(FLUSH CACHE)等の複数のコマンドに対応するが、これらに限られるものではなく、ベンダコマンド、あるいはＡＴＡとは異なる別のインタフェース規格上の同様の目的を持ったコマンドにも同様に適用可能である。
【００６２】
［第２の実施形態］
第１の実施形態では、ＡＴＡコマンドのCount値に応じて、ホスト許容並列度ｍを、最大のＮ個と並列無しの１個の二段階に制御するようにしたが、第２の実施形態では、ホスト許容並列度ｍを、最大のＮ個と並列無しの１個の間で、三段階以上に制御する。すなわち、第１の実施形態では、ＳＳＤは２つの電源管理モードを有するようにしたが、第２の実施形態では、３つ以上の電源管理モードを有するようにし、各電源管理モード間で、並列動作させるバンク数の上限値を異ならせる。第２の実施形態では、先の図９に示したコマンド解析処理に代えて、図１４に示すコマンド解析処理を採用する。その他の手順は第１の実施形態と同様であり、重複する説明は省略する。図１４では、図９のステップＳ２４５を、ステップＳ２４８に置換している。
【００６３】
ステップＳ２３０で、コマンド解析部７１は、カウント（count）と「７Ｆｈ」とを論理積が「０１ｈ」以下であるか否かを判定し、論理積が「０１ｈ」以下である場合は、ホスト許容並列度ｍ＝１として同時並列駆動するバンクの上限値を１とし（ステップＳ２４０）、ＳＳＤ１００での消費電力を最小とする。一方、論理積が「０１ｈ」より大きい場合は、コマンド解析部７１は、ホスト許容並列度ｍに数値変換機能（Ｐ２Ｃ）の値をセットする（ステップＳ２４８）。
【００６４】
Ｐ２Ｃ(Count)の定義は以下の通りである。Ｃ０をある電力の刻み幅、例えば１００ｍＷとする。
・Count＜ホスト許容並列度＝２での動作に必要な最大電力／Ｃ０であるならば、Ｐ２Ｃ(Count)＝１とし、
・ホスト許容並列度＝２での動作に必要な最大電力／Ｃ０≦Count＜ホスト許容並列度＝３での動作に必要な最大電力／Ｃ０であるならば、Ｐ２Ｃ(Count)＝２とし、
…
・ホスト許容並列度＝Ｎ−１での動作に必要な最大電力／Ｃ０≦Count＜ホスト許容並列度＝Ｎでの動作に必要な最大電力／Ｃ０であるならば、Ｐ２Ｃ(Count)＝Ｎ−１とし、
・Count≧ホスト許容並列度＝Ｎでの動作に必要な最大電力／Ｃ０であるならば、Ｐ２Ｃ(Count)＝Ｎとする。
なお、各並列度で動作するとき必要な最大電力は当該製品を製造する過程で実際に計測して得る。
【００６５】
このように、第２の実施形態では、ホストからの電源管理コマンドに応じてホスト許容並列度ｍを三段階以上に制御するようにしたので、より高精度に消費電力管理を行うことが可能となる。
【００６６】
［第３の実施形態］
第１の実施形態では、論理アドレスＡｄｄｒと、バンク番号＃Ｂの間に、式（１）で示す所定の関係が成立することとしたが、第３の実施形態では、この関係を無くし、ある論理アドレスＡｄｄｒのデータを記録するべきブロックが複数のバンクのうちの任意のバンクに所属してもよいものとする。すなわち、第３の実施形態では、ホスト１が指定するデータの論理アドレスＡｄｄｒと、ＮＡＮＤメモリ１０上での実際の記憶領域である物理アドレスとの関係を、データ更新の都度、動的に関係付ける論物変換方式を採用する。このこの論物変換方式では、バンク並列を実現する場合、有効なデータが記憶されていない空きブロックをバンク毎に分類し、各バンクから空きブロックを選択して並列処理を実現する。
【００６７】
このような論物変換方式では、同時書き込みの可能性をなるべく高くするため、空きブロックの個数を全てのバンク間で均一にする、または空きブロックの選択をなるべく高速に行うなどの様々な目的を考慮して、ある瞬間に論理アドレスＡｄｄｒのデータを記録するに望ましいバンク、あるいは空きブロックを決める。望ましいバンク、あるいは空きブロックを決定するためのルールはＳＳＤの実現形態により様々である。この第３の実施形態では、単に、物理ブロックのアドレスＰＡを選択する際には、まず、最も望ましいバンクとこのバンクに属する物理ブロックを選択し、選択したバンクの物理ブロックが使用可能であれば、選択したバンクの物理ブロックを選択する。また、選択した最も望ましいバンクの物理ブロックが書き込み実施中のため使用できない場合は、つぎに望ましいバンクとこのバンクに属する物理ブロックを選択し、選択したつぎに望ましいバンクの物理ブロックが使用可能であれば、選択したつぎに望ましいバンクの物理ブロックを選択する。また、選択したつぎに望ましいバンクの物理ブロックが書き込み実施中のため使用できない場合は、さらにそのつぎに望ましいバンクとこのバンクに属する物理ブロックを選択する。以下、これを繰り返す。
【００６８】
第３の実施形態では、先の図１０に示した記録動作実行処理に代えて、図１５に示す記録動作実行処理を採用する。その他の手順は第１の実施形態と同様であり、重複する説明は省略する。図１５では、図１０のステップＳ３１０〜Ｓ３４０を、ステップＳ８００〜Ｓ８８０に置換している。
【００６９】
図１５において、記録動作が開始されると、記録制御部７２は、現在並列度ｎがホスト許容並列度ｍ以上であるか否かを判定する（ステップＳ８００）。記録制御部７２は、ステップＳ８００において、現在並列度ｎ≧ホスト許容並列度ｍである場合は、ＰＡに無効値をセットする（ステップＳ８７０）。記録制御部７２は、ステップＳ８００において、現在並列度ｎ＜ホスト許容並列度ｍである場合は、論理ブロックアドレスＡｄｄｒのデータを格納可能な最も望ましい物理ブロックアドレスを一つ選び、選択した物理ブロックアドレスをＰＡにセットする（ステップＳ８１０）。
【００７０】
つぎに、記録制御部７２は、先の図１２で示した手順で、最も望ましい物理ブロックアドレスがセットされたＰＡのバンクが書き込み実施中か否かを判断し（ステップＳ８２０）、書き込み実施中でない場合は、手順をステップＳ３５０に移行させて、前述と同様の処理を実行する。ステップＳ８２０の判断で、最も望ましい物理ブロックアドレスがセットされたＰＡが書き込み実施中であると判断された場合、カウント用の変数ｃを１に初期化し（ステップＳ８３０）、つぎに、変数ｃが定数Ｃ１以下であるか否かを判定する（ステップＳ８４０）。定数Ｃ１は、バンク数Ｍ以下の値であり、望ましい物理ブロックアドレスを選択する際の最大選択回数を表す。
【００７１】
ステップＳ８４０の判定がＮＯの場合、記録制御部７２は、論理ブロックアドレスＡｄｄｒのデータを格納可能なつぎに望ましい物理ブロックアドレスを一つ選び、選択した物理ブロックアドレスをＰＡにセットする（ステップＳ８５０）。つぎに、記録制御部７２は、変数ｃを＋１し（ステップＳ８６０）、さらに、つぎに望ましい物理ブロックアドレスがセットされたＰＡがのバンク書き込み実施中か否かを判断し（ステップＳ８８０）、書き込み実施中でない場合は、手順をステップＳ３５０に移行させて、前述と同様の処理を実行する。
【００７２】
ステップＳ８８０の判定がＹＥＳである場合は、変数ｃが定数Ｃ１に一致するまでは、使用中でない物理ブロックが選択されるまで、順次、次に望ましい（最適度が低下した）物理ブロックの選択処理を実行する。ただし、変数ｃが定数Ｃ１に一致するまで、物理ブロックを選択することができない場合は、変数ｃが定数Ｃ１に一致した地点で、ＰＡに無効値をセットして、手順をステップＳ３５０に移行させる。
【００７３】
このように第３の実施形態においては、論理アドレスと物理アドレスとの関係が、データの書き込みの度に、動的に関係付ける論物変換方式を採用している場合においても、ホストからの電源管理コマンドに応じてバンク並列度を動的に可変制御することが可能となる。
【符号の説明】
【００７４】
１  ホスト装置、２  ＡＴＡインタフェース、４  ドライブ制御回路、１０  ＮＡＮＤメモリ、２１  バッファ部、７１  コマンド解析部、７２  記録制御部、１００  ＳＳＤ。
【図１】
2011227664.tif 000003
【図２】
2011227664.tif 000004
【図３】
2011227664.tif 000005
【図４】
2011227664.tif 000006
【図５】
2011227664.tif 000007
【図６】
2011227664.tif 000008
【図７】
2011227664.tif 000009
【図８】
2011227664.tif 000010
【図９】
2011227664.tif 000011
【図１０】
2011227664.tif 000012
【図１１】
2011227664.tif 000013
【図１２】
2011227664.tif 000014
【図１３】
2011227664.tif 000015
【図１４】
2011227664.tif 000016
【図１５】
2011227664.tif 000017