説明

ホストからのメモリ装置のブーティング

【課題】 ホスト装置からメモリ装置をブートするシステム及び方法を提供する。
【解決手段】 1つの具現化において、方法は、メモリ装置をブートするインストラクションをメモリ装置で受け取ることを含み、メモリ装置は、メモリ装置のコントローラによりアクセス可能な不揮発性メモリを備え、そしてメモリ装置をブートするインストラクションの受け取りに応答して、ホスト装置からのファームウェアをメモリ装置により取得することを更に含み、ホスト装置は、メモリ装置とは個別のもので、メモリ装置に通信結合される。この方法は、ホスト装置からのファームウェアを使用してメモリ装置をブートすることも含み、メモリ装置は、ホスト装置とは個別にブートし、ホスト装置は、不揮発性メモリに記憶された及びメモリ装置のメモリコントローラとの通信により得たデータ又はインストラクションを使用して動作を実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ホストからフラッシュメモリを伴う装置のようなメモリ装置をブートすることに係る。
【背景技術】
【0002】
フラッシュメモリ(例えば、NANDフラッシュメモリ、NORフラッシュメモリ)のような種々の形式の不揮発性メモリ(NVM)は、大量記憶装置として使用することができる。例えば、消費者向け電子装置(例えば、ポータブルメディアプレーヤ)は、フラッシュメモリを使用して、音楽、ビデオ、画像、及び他のメディア又はタイプの情報を含むデータを記憶する。
【0003】
メモリ装置は、該装置にローカル記憶された情報からブートするように構成される。例えば、メモリコントローラ(1つ以上のプロセッサ/マイクロプロセッサを伴う)を含むメモリ装置は、該メモリ装置のNVMに記憶されたファームウェアを使用してブートすることができる。別の例では、「ロー(raw)」メモリ装置(メモリコントローラを含まないメモリ装置)は、該メモリ装置のNVMに記憶されたトリム値を使用してブートすることができる。トリム値は、ローメモリ装置のレジスタにロードされ、そしてタイミング、パルスカウント、及び/又は印加電圧レベルのようなローメモリ装置の種々の動作を制御するためにローメモリ装置上の回路により使用される。
【発明の概要】
【0004】
本書は、一般的に、ホスト装置からメモリ装置をブートする技術について述べる。ホスト装置は、1つ以上のメモリ装置のためのブート情報(例えば、ファームウェア、トリム値)を記憶し、そしてそのようなブート情報を、ホスト装置とメモリ装置との間の1つ以上の通信チャンネル(例えば、バス)を経てメモリ装置へ送ることができる。ブート情報は、メモリ装置をブートするための指示に応答して又はそのような指示に関連してホスト情報によりメモリ装置へ送られる。例えば、ホスト装置は、ブートコマンドをメモリ装置へ送り、その後に、メモリ装置がブート情報を受け取る準備ができたことを指示するメモリ装置からの信号に応答してメモリ装置へブート情報を送ることができる。別の例では、電源オフされたメモリ装置は、電源オンしてブートするようメモリ装置を促す信号を受け取ることができる。そのような指示に応答して、メモリ装置は、ホスト装置からのブート情報を要求し受け取ることができる。
【0005】
1つの具現化において、方法は、メモリ装置をブートするためのインストラクションをメモリ装置において受け取ることを含み、メモリ装置は、メモリ装置のコントローラによりアクセス可能な不揮発性メモリを備え、そしてメモリ装置をブートするためのインストラクションを受け取るのに応答して、ホスト装置からのファームウェアをメモリ装置により取得することを更に含み、ホスト装置は、メモリ装置とは個別のもので、メモリ装置に通信結合される。又、この方法は、ホスト装置からのファームウェアを使用してメモリ装置をブートすることも含み、メモリ装置は、ホスト装置とは個別にブートし、そしてホスト装置は、不揮発性メモリに記憶された及びメモリ装置のメモリコントローラとの通信により得たデータ又はインストラクションを使用して動作を実行する。
【0006】
別の具現化において、方法は、ホスト装置からのファームウェアを使用してブートするようにメモリ装置に命令するブートコマンドをホスト装置によりメモリ装置へ送ることを含み、ホスト装置は、メモリ装置とは個別のもので、メモリ装置に通信結合され、そしてメモリ装置は、不揮発性メモリを含む。又、この方法は、メモリ装置がホスト装置からのファームウェアを受け取る準備ができたという指示をホスト装置において受け取り、そしてその指示を受け取るのに応答して、ホスト装置によりファームウェアをメモリ装置へ送ることを含み、メモリ装置へファームウェアを送ることで、メモリ装置がファームウェアを使用してブートするようにさせ、メモリ装置は、ホスト装置とは個別にブートする。
【0007】
別の具現化において、メモリ装置は、不揮発性メモリと、メモリ装置をホスト装置に通信結合するホストインターフェイスと、不揮発性メモリにおいてメモリ動作を実行するように構成され且つホストインターフェイスを通してホスト装置と通信するようにされたメモリコントローラとを備えている。メモリコントローラは、更に、ホスト装置からホストインターフェイスを通してメモリ装置をブートするインストラクションを受け取り、そのインストラクションを受け取るのに応答して、ホスト装置からファームウェアを取得し、そしてホスト装置からのファームウェアを使用してメモリ装置をブートするように構成され、メモリ装置は、ホスト装置とは個別にブートし、そしてホスト装置は、不揮発性メモリに記憶された及びホストインターフェイスを経てメモリ装置のメモリコントローラとの通信により得たデータ又はインストラクションを使用して動作を実行する。
【0008】
別の具現化において、システムは、不揮発性メモリと、この不揮発性メモリにおいてメモリ動作を実行しそしてホストインターフェイスを通してホスト装置と通信するように構成されたメモリコントローラとを備えている。メモリコントローラは、更に、ホスト装置からホストインターフェイスを通してメモリ装置をブートするためのインストラクションを受け取り、そのインストラクションを受け取るのに応答して、ホスト装置からファームウェアを取得し、そしてホスト装置からのファームウェアを使用してメモリ装置をブートするように構成され、メモリ装置は、ホスト装置とは個別にブートし、そしてホスト装置は、不揮発性メモリに記憶された及びホストインターフェイスを経てメモリ装置のメモリコントローラとの通信により得たデータ又はインストラクションを使用して動作を実行する。
【0009】
本明細書に述べる要旨の特定の実施形態は、次の効果の1つ以上を実現するために具現化される。メモリ装置のNVMの消耗を減少することができる。例えば、メモリ装置は、電力消費を減少するために著しい頻度でオン及びオフにトグルし(例えば、使用しないときにオフにトグルし)、これは、装置を電源オンして装置をブートするたびにメモリ装置のブート情報を記憶するNVMの部分にアクセスするようにさせる。このような頻繁なアクセスは、NVMを消耗させ、NVMの寿命を短縮させる。メモリ装置のNVMからではなくホスト装置からブート情報を得ることにより、メモリ装置のNVMの消耗を減少し、そしてメモリ装置のNVMの寿命を延長することができる。
【0010】
メモリ装置がブートする速度を高めて、メモリ装置に記憶されたデータにアクセスする遅延を最小にすることができる。例えば、メモリ装置のブート情報は、ホスト装置のNVMに記憶され、そしてホスト装置が(例えば、それ自身のブート情報を使用して)ブートするときにホスト装置の揮発性メモリ(例えば、ランダムアクセスメモリ(RAM))へロードされる。メモリ装置がオン及びオフにトグルされる間に、ホスト装置は、ブート情報を維持し、そしてブート情報をその揮発性メモリからメモリ装置へ送ることができる。ホスト装置の揮発性メモリからメモリ装置へのブート情報のこの転送は、メモリ装置がメモリ装置に対してローカルなNVMからブート情報を読み取る場合より高速である。
【0011】
メモリ装置の利用可能な記憶容量を増加すると共に、ホスト装置及び複数のメモリ装置を含むシステムの総記憶容量を増加することができる。例えば、メモリ装置のNVMからホスト装置へブート情報を移動することにより、ブート情報を記憶していたメモリ装置のNVMの記憶スペースは、他の情報(例えば、データ)を記憶するのに利用できるようになる。別の例では、複数のメモリ装置の各々がブート情報のローカルコピーを記憶するのではなく、ホスト装置が、複数のメモリ装置に共通のブート情報の単一コピーを記憶することができる。複数のメモリ装置にわたるブート情報の冗長な記憶を回避することにより、複数のメモリ装置を伴うシステムの総記憶容量を増加することができる。
【0012】
メモリ装置が動作する仕方の更新及び変更は、ホスト装置によりメモリ装置に送られるブート情報を更新/変更することにより容易に行うことができる。例えば、メモリ装置でエラーに遭遇した場合には、ホスト装置は、エラーに遭遇したときに使用される動作ファームウェアではなく、(ホストによりメモリ装置へ送られる)デバッグファームウェアを使用して、メモリ装置をリブートさせることができる。デバッグファームウェアは、メモリ装置が種々のデバッグ動作を実行し(例えば、エラーログを発生し、エラーの原因を識別し)、そして取得したデバッグ情報をホスト装置へ送るようにさせる。ホスト装置は、種々の形式のファームウェア(例えば、動作ファームウェア、デバッグファームウェア、製造ファームウェア)を記憶し、そしてメモリ装置の状態(例えば、エラー遭遇、新たなハードウェアの最近のインストール、通常の動作)に基づいてどのファームウェアをメモリ装置へ送るか切り換えることができる。
【0013】
添付図面を参照して、1つ以上の実施形態を以下に詳細に述べる。本発明の他の特徴、目的及び効果は、以下の説明、添付図面及び特許請求の範囲から明らかとなるであろう。種々の図面において同じ要素は同じ参照記号で示されている。
【図面の簡単な説明】
【0014】
【図1A】メモリコントローラを含むNVMパッケージへブート情報をファームウェアの形態で送るように構成されたホスト装置を備えた規範的システムを示す図である。
【図1B】メモリコントローラを含まないNVMパッケージへブート情報をファームウェアの形態で送るように構成されたホスト装置を備えた規範的システムを示す図である。
【図2】種々のNVMパッケージへブート情報を送るように構成されたホストコントローラを伴うメモリ装置を備えた規範的システムを示す図である。
【図3】ホストからメモリ装置をブートするための規範的プロセスを示すフローチャートである。
【図4】ホストからメモリ装置をブートするための規範的プロセスを示すフローチャートである。
【発明を実施するための形態】
【0015】
ホスト装置は、ブート情報(例えば、ファームウェア又はトリム値)を記憶し、そして通信チャンネル(例えば、バス)を経てホスト装置に接続された1つ以上のメモリ装置へブート情報を送ることができる。メモリ装置のブート情報は、メモリ装置が電源オンされ及び/又はホスト装置からブートコマンドを受け取るのに応答して発生されるメモリ装置ブートインストラクション又は要求に関連して又はそれに応答して、メモリ装置へ送られる。ホスト装置は、メモリ装置の動作中に揮発性メモリにメモリ装置のブート情報を維持し(例えば、ホスト装置がブートするときにNVMから揮発性メモリへブート情報をロードすることにより)、そして揮発性メモリからメモリ装置へブート情報を送ることができる。ブート情報は、ローメモリ装置(例えば、メモリコントローラをもたないメモリ装置)及び/又はメモリコントローラを含むメモリ装置へ送ることができる。ホスト装置は、動作ブート情報(例えば、読み取り、書き込み及び消去動作を行うのに使用される)、デバッグブート情報(例えば、デバッグ動作を行うのに使用される)、及び/又は製造ブート情報(例えば、メモリ装置のコンポーネントのインストール及び動作をテストするのに使用される)を含む種々の形式のブート情報を記憶してメモリ装置へ送ることができる。
【0016】
図1Aは、メモリコントローラを含むNVMパッケージ104へブート情報をファームウェアの形態で送るように構成されたホスト装置102を備えた規範的システム100を示す図である。例えば、この規範的システム100に示すように、ホスト装置102は、NVMパッケージ104のためのファームウェア106を送ることができる。NVMパッケージ104は、ファームウェア106を受け取る前に、受け取る間に、及び/又は受け取るのに応答して、ホスト装置102へ状態メッセージ108を送出することができる。例えば、NVMパッケージ104は、ブート中であることを状態メッセージ108において指示し、そしてそれに応答してファームウェア106を受け取る。別の例では、NVMパッケージ104は、ホスト装置102からブートのためのコマンドを受け取った後にファームウェア106を受け取る準備ができたことを指示する。更に別の例では、NVMパッケージ104は、ファームウェア106の種々の部分が状態メッセージ108を通して受け取られることを指示する。
【0017】
ホスト装置102は、ポータブルメディアプレーヤ、セルラー電話、ポケットサイズのパーソナルコンピュータ、パーソナルデジタルアシスタント(PDA)、デスクトップコンピュータ、ラップトップコンピュータ、及び/又はタブレットコンピューティングシステムのような種々のホスト装置及び/又はシステムのいずれかである。NVMパッケージ104は、NVMを含み、そしてボールグリッドアレイパッケージ又は他の適当な形式の集積回路(IC)パッケージである。NVMパッケージ104は、ホスト装置102との接続110(例えば、バス)を通してホスト装置102からファームウェアを得ることができる。NVMパッケージ104は、ホスト装置102の一部分でもよいし、及び/又はそれとは個別のものでもよい。
【0018】
ホスト装置102は、NVMパッケージ104からデバッグ情報を得るためにNVMパッケージ104と対話するように構成されたホストコントローラ112を備えている。このホストコントローラ112は、ソフトウェア及び/又はファームウェアインストラクションの実行に基づいて動作を実行するように構成された1つ以上のプロセッサ及び/又はマイクロプロセッサを含む。それに加えて及び/又はそれとは別に、ホストコントローラ112は、種々の動作を実行するように構成された特定用途向け集積回路(ASIC)のようなハードウェアベースのコンポーネントを含む。ホストコントローラ112により実行される動作は、NVMパッケージ104をいつ電源オン及びオフするか、NVMパッケージ104をいつブートするか、NVMパッケージ104へ送るファームウェアの形式を決定すること、及びファームウェア106をNVMパッケージ104へ送ることを含む。例えば、ホストコントローラ112は、NVMパッケージ104にブートコマンドを送り、そしてNVMパッケージ104がファームウェア106を受け取る準備ができたことを指示する状態メッセージ108に応答して、ファームウェア106をNVMパッケージ104へ送ることができる。ホストコントローラ112は、NVMパッケージ104へ送信される情報(例えば、コマンド、ファームウェア106)を、ホスト装置102とNVMパッケージ104との間に使用される通信プロトコルに基づいてフォーマットすることができる。
【0019】
ホスト装置102は、NVMパッケージ104へ(ファームウェア106として)送られる種々の形式のファームウェア116−120を記憶するメモリ114(揮発性メモリ及び/又はNVM)を備えている。例えば、ホスト装置102は、ホスト装置102がブートするときにホスト装置102のNVMから揮発性メモリへファームウェア116−120をロードすることができる。ホスト装置102は、ホスト装置102及びNVMパッケージ104の動作中にファームウェア116−120を揮発性メモリに維持することができる。ホスト装置102は、ファームウェア116−120を揮発性メモリからNVMパッケージ104へ送ることができる。他の具現化において、ファームウェア116−120は、ホスト装置102のNVMに記憶され、そしてNVMパッケージ104をブートするために必要に応じてホスト装置102のNVMから読み出される。ファームウェア116−120は、ブート動作(例えば、メモリダイを初期化し、NVMパッケージ104を動作するインストラクションを揮発性メモリにロードする)、及び/又は後ブート動作(例えば、読み取り/書き込み/消去動作、デバッグ動作)を実行するためにNVMパッケージ104によって実行することができる。
【0020】
例えば、ホスト装置102によりNVMパッケージ104へ転送されるファームウェア106は、実行時に、NVMパッケージ104を動作するインストラクションを、NVMパッケージ104で実行するために揮発性メモリへロードさせるというインストラクションを伴うブートローダーを含む。別の例では、ホスト装置102によりNVMパッケージ104へ転送されるファームウェア106は、NVMパッケージ104を動作するインストラクションを含み、そしてNVMパッケージ104のブート処理の一部分として(例えば、ブートローダー動作により)揮発性メモリへロードされる。
【0021】
図1Aは、動作ファームウェア116、デバッグファームウェア118、及び製造ファームウェア120を含むものとして規範的ファームウェア116−120を示している。動作ファームウェア116は、NVMパッケージ104が、ホスト装置102により要求される読み取り、書き込み及び消去動作のような「通常」のメモリ動作を実行するようにさせる。又、動作ファームウェア116は、NVMパッケージ104が、ウェアレベリング又はエラー修正のようなメモリ管理動作を実行するようにさせる。デバッグファームウェア118は、NVMパッケージが、データエラー源を突き止め及びエラーログを発生するといったデバッグ動作を実行するようにさせる。製造ファームウェア120は、メモリダイ、I/O信号及びセンサ(例えば、温度センサ)のようなNVMパッケージ104の種々のコンポーネントのインストール及び動作をテストする。他の形式のファームウェアも考えられる。例えば、同じファームウェアの異なるバージョンがホスト装置102によって記憶されて、NVMパッケージ104へ送られてもよい(例えば、ファームウェアバージョン1.1及びファームウェアバージョン1.2)。
【0022】
ホスト装置102は、接続110を経てNVMパッケージ104と通信することができる。ホスト装置102とNVMパッケージ104との間の接続110は、固定(例えば、固定の通信チャンネル)、及び/又は取り外し可能(例えば、ユニバーサルシリアルバス(USB)ポート)である。NVMパッケージ104との対話は、NVMパッケージ104にコマンド(例えば、ブートコマンド、読み取りコマンド、書き込みコマンド)を与えること、及びブート情報、例えば、ファームウェア106を送信することを含む。
【0023】
NVMパッケージ104は、ホストインターフェイス122及びメモリコントローラ124を使用して接続110を経てホスト装置102と対話することができる。ホストコントローラ112と同様に、メモリコントローラ124は、ソフトウェア及び/又はファームウェアインストラクションの実行に基づいて動作を実行するように構成された1つ以上のプロセッサ及び/又はマイクロプロセッサ126を備えている。それに加えて及び/又はそれとは別に、メモリコントローラ124は、種々の動作を実行するように構成されたASICのようなハードウェアベースのコンポーネントを含む。メモリコントローラ124は、ホスト装置102からのファームウェア106を使用してNVMパッケージ104をブートするような種々の動作を実行することができる。
【0024】
エラー修正及びウェアレベリングのような種々のメモリ管理機能は、ホストコントローラ112及びメモリコントローラ124により、単独で又は組み合わせて、実行することができる。メモリコントローラ124が少なくとも幾つかのメモリ管理機能を実行するように構成される具現化では、NVMパッケージ104を、「管理NVM」(又はNANDフラッシュメモリのための「管理NAND」)と称することができる。これは、NVMパッケージ104に対して外部のホストコントローラ112がNVMパッケージ104のためのメモリ管理機能を実行する「ローNVM」(又はNANDフラッシュメモリのための「ローNAND」)と対照的である。
【0025】
メモリコントローラ124は、揮発性メモリ128及びNVM132を備えている。揮発性メモリ128は、キャッシュメモリ及び/又はRAMを含む種々の揮発性メモリ形式のいずれかである。揮発性メモリ128は、メモリ動作を実行し、及び/又はNVMから読み取られ及び/又はNVMへ書き込まれるデータを一時的に記憶するためにメモリコントローラ124により使用される。例えば、揮発性メモリ128は、接続110を経てホスト装置102へ受け取られるファームウェア106のようなファームウェア130を記憶し、そしてそのファームウェア130を使用して、NVMパッケージ104における動作(例えば、読み取り/書き込み動作、デバッグ動作)を実行することができる。
【0026】
NVM132は、システム情報(例えば、デバッグログ)を持続的に記憶し及び/又は揮発性メモリ128に適合しないことのあるファームウェアのような情報を一時的に記憶するためにメモリコントローラ124により使用できるシステムメモリである。NVM132は、適切な特権をもつ特定のシステム動作しかNVM132にアクセスできないように、書き込み、読み取り及び/又は消去制限される。例えば、NVM132は、特定の物理的アドレスに記憶されるインストラクションであって、メモリコントローラ124により受け取られるブート信号(例えば、ホスト装置102からのブートコマンド、その前の非通電状態から電力の受けること)に応答して揮発性メモリ128へロードされそしてプロセッサ/マイクロプロセッサ126によって実行されるインストラクションを含む。対照的に、ホスト装置102から受け取られる書き込みコマンドの一部分として実行される動作に関連したNVM132へのアクセスは、許可されない。別の例では、ホスト装置102から受け取られるファームウェア106のある部分は、NVM132に記憶され、そして必要に応じて揮発性メモリ128へロードされる。NVM132は、種々のNVM(例えば、NANDフラッシュメモリ、NORフラッシュメモリ)のいずれかである。又、ある具現化において、NVM132は、NVMパッケージ104のためのファームウェアを持続的にローカル記憶する。このような具現化では、NVMパッケージ104は、ローカル記憶されたファームウェアをデフォールトにより使用することができ、そしてホスト装置102は、NVM104に「ホストからのブート」コマンドを与えることによりこのデフォールト設定を無効にすることができる。
【0027】
メモリコントローラ124は、共有内部バス134を使用して、持続的データ記憶に使用されるNVMにアクセスする。規範的システム100では、そのようなNVMは、NVM138a−nを含む複数のメモリダイ136a−nを含むものとして示されている。メモリダイは、集積回路(IC)ダイのような種々のメモリダイである。NVMパッケージ104に関して単一の共有バス134しか示されていないが、NVMパッケージは、2つ以上の共有内部バスを含むことができる。各内部バスは、複数のメモリダイ136a−nに関して示したように、複数のメモリダイ(例えば、2、3、4、8、32、等)に接続することができる。メモリダイ136a−nは、積層のような種々の構成で物理的に配置することができる。NVM138a−nは、フローティングゲート又は電荷トラップ技術に基づくNANDフラッシュメモリ、NORフラッシュメモリ、消去可能なプログラマブルリードオンリメモリ(EPROM)、電気的に消去可能なプログラマブルリードオンリメモリ(EEPROM)、強誘電体RAM(FRAM(登録商標))、磁気抵抗RAM(MRAM)、位相変化メモリ(PCM)、又はその組合せのような種々のNVMのいずれかである。メモリコントローラ124は、NVMパッケージ104をブートするためにホスト装置102により与えられるファームウェア130を使用してNVM138a−nに対して種々の動作(例えば、読み取り/書き込み動作、デバッグ動作、製造テスト動作)を実行することができる。
【0028】
図1Bは、メモリコントローラを含まないNVMパッケージ154へブート情報をファームウェアの形態で送るように構成されたホスト装置152を備えた規範的システム150を示す図である。例えば、規範的システム150に示されたように、ホスト装置152は、NVMパッケージ154のためのトリム値156を与えることができる。NVMパッケージ154は、トリム値156を受け取る前に、受け取る間に、及び/又は受け取るのに応答して、ホスト装置152へ状態メッセージ158を送出する。例えば、NVMパッケージ154は、ブート中であることを状態メッセージ158において指示し、そしてそれに応答してトリム値156を受け取る。別の例では、NVMパッケージ154は、ホスト装置152からブートのためのコマンドを受け取った後にトリム値156を受け取る準備ができたことを指示する。更に別の例では、NVMパッケージ154は、トリム値156の種々の部分が状態メッセージ158を通して受け取られることを指示する。
【0029】
ホスト装置152は、ポータブルメディアプレーヤ、セルラー電話、ポケットサイズのパーソナルコンピュータ、パーソナルデジタルアシスタント(PDA)、デスクトップコンピュータ、ラップトップコンピュータ、及び/又はタブレットコンピューティング装置のような種々のホスト装置及び/又はシステムのいずれかである。NVMパッケージ154は、NVMを含み、そしてボールグリッドアレイパッケージ又は他の適当な形式の集積回路(IC)パッケージである。NVMパッケージ154は、ホスト装置152との接続160(例えば、バス)を通してホスト装置152からファームウェアを得ることができる。NVMパッケージ154は、ホスト装置152の一部分でもよいし、及び/又はそれとは個別のものでもよい。
【0030】
ホスト装置152は、NVMパッケージ154からデバッグ情報を得るためにNVMパッケージ154と対話するように構成されたホストコントローラ162を備えている。このホストコントローラ162は、ソフトウェア及び/又はファームウェアインストラクションの実行に基づいて動作を実行するように構成された1つ以上のプロセッサ及び/又はマイクロプロセッサを含む。それに加えて及び/又はそれとは別に、ホストコントローラ162は、種々の動作を実行するように構成されたASICのようなハードウェアベースのコンポーネントを含む。ホストコントローラ162により実行される動作は、NVMパッケージ154をいつ電源オン及びオフするか、NVMパッケージ154をいつブートするか、NVMパッケージ154へ送るファームウェアの形式を決定すること、及びトリム値156をNVMパッケージ154へ送ることを含む。例えば、ホストコントローラ162は、NVMパッケージ154にブートコマンドを送り、そしてNVMパッケージ154がトリム値156を受け取る準備ができたことを指示する状態158に応答して、トリム値156をNVMパッケージ154へ送ることができる。ホストコントローラ162は、NVMパッケージ154へ送信される情報(例えば、コマンド、トリム値156)を、ホスト装置152とNVMパッケージ154との間に使用される通信プロトコルに基づいてフォーマットすることができる。
【0031】
ホスト装置152は、NVMパッケージ154へ送られるトリム値166を記憶するメモリ164(例えば、揮発性メモリ及び/又はNVM)を備えている。例えば、ホスト装置152は、ホスト装置152がブートするときにホスト装置152のNVMから揮発性メモリへトリム値166をロードすることができる。ホスト装置152は、ホスト装置152及びNVMパッケージ154の動作中にトリム値164を揮発性メモリに維持することができる。ホスト装置152は、トリム値166を揮発性メモリからNVMパッケージ154へ送ることができる。他の具現化において、トリム値166は、ホスト装置152のNVMに記憶され、そしてNVMパッケージ154をブートするために必要に応じてホスト装置152のNVMから読み出される。
【0032】
トリム値166は、メモリ動作(例えば、読み取り、書き込み、消去)を実行しそしてホスト装置152と対話するようにNVMパッケージ154を構成するのに使用される種々の値を含む。例えば、トリム値166は、メモリ動作を実行しそしてホスト装置152と通信するためにNVMパッケージ154により使用されるタイミング及び電圧レベルを調整する値を含む。例えば、トリム値166は、揮発性メモリへロードされたときに、NVMパッケージ154のコンポーネントにより使用されて、NVMの読み取り及び/又はプログラミングのような動作を実行するための所定のデータ値である。例えば、トリム値166は、NVMパッケージ154におけるNVMのデータサンプリングに使用されるプログラミング電圧レベル及び/又はプログラミングパルス巾を定義することができる。ブート中に、トリム値166は、NVMパッケージ154のNVMを含めて、NVMパッケージ154の種々のコンポーネントを初期化するのに使用され、NVMパッケージ154がNVMへのデータの書き込み及び/又は読み取りを容易に行えるようにする。
【0033】
ホスト装置152は、接続160を経てNVMパッケージ154と通信することができる。ホスト装置152とNVMパッケージ154との間の接続160は、固定(例えば、固定の通信チャンネル)、及び/又は取り外し可能(例えば、ユニバーサルシリアルバス(USB)ポート)である。NVMパッケージ154との対話は、NVMパッケージ154にコマンド(例えば、ブートコマンド、読み取りコマンド、書き込みコマンド)を与えること、及びブート情報、例えば、トリム値156を送信することを含む。
【0034】
NVMパッケージ154は、ホストインターフェイス168及びコントロール回路170を使用して接続160を経てホスト装置152と対話することができる。コントロール回路170は、少なくとも、ホスト装置152からホストインターフェイス168を経て受け取ったコマンド(例えば、読み取り、書き込み)を実行するように構成される。コントロール回路170は、IC及びASICのような種々のハードウェアコンポーネントを通して具現化することができる。コントロール回路170は、ホスト装置152から受け取ったコマンド(例えば、制御信号)を実行するように構成されたコマンド実行ロジック172を含む。コマンド実行ロジック172は、レジスタ174のコンテンツに少なくとも一部分基づいてコマンドを実行することができる。レジスタ174は、ホスト装置152から受け取ったトリム値176がロードされる。それに加えて及び/又はそれとは別に、トリム値156もNVMパッケージ154のNVMにより使用される。例えば、トリム値156は、コントロール回路170に記憶され、そしてローNANDダイのようなNVMへ送られる。トリム値156は、NVMのデータサンプリングを制御し、例えば、NVMに対する電圧レベル及びタイミングを制御するのに使用される。
【0035】
レジスタ174は、コマンド実行ロジック172によってアクセスされ(コマンド実行ロジック172の一部分として及び/又はそれとは個別に)、そしてデータ、アドレス、インストラクション、条件及び状態情報を記憶する等の種々の容量で使用される。NVMパッケージ154がブートしている間に、レジスタ174に(ホスト装置152から受け取った)トリム値176をロードすることができる。
【0036】
ホストコントローラ162は、図1Aを参照して上述したようにメモリコントローラ124がNVMパッケージ104に対して実行するところのNVMパッケージ154のための種々の動作を実行することができる。例えば、ホストコントローラ162は、NVMパッケージ154のためのメモリ管理動作、例えば、ウェアレベリングを実行することができる。システム150は、「ローNVM」(又はNANDフラッシュメモリのための「ローNAND」)と称される。
【0037】
コントロール回路172は、共有内部バス178を使用して、持続的データ記憶に使用されるNVMにアクセスする。規範的なシステム150では、そのようなNVMは、NVM182a−nを含む複数のメモリ第180a−nを含むものとして示されている。このメモリダイは、集積回路(IC)ダイのような種々のメモリダイである。NVMパッケージ154に関して単一の共有バス178しか示されていないが、NVMパッケージは、2つ以上の共有内部バスを含むことができる。各内部バスは、複数のメモリダイ180a−nに関して示したように、複数のメモリダイ(例えば、2、3、4、8、32、等)に接続することができる。メモリダイ180a−nは、積層のような種々の構成で物理的に配置することができる。NVM182a−nは、フローティングゲート又は電荷トラップ技術に基づくNANDフラッシュメモリ、NORフラッシュメモリ、EPROM、EEPROM、FRAM(登録商標)、MRAM、PCM、又はその組合せのような種々のNVMのいずれかである。コントロール回路170は、NVMパッケージ154をブートするためにホスト装置152により与えられるトリム値176を使用してNVM182a−nに対して動作(例えば、読み取り/書き込み動作)を実行することができる。
【0038】
システム100及び150は、別々に説明するが、これら2つのシステムからの特徴を結合した他のシステムも考えられる。例えば、メモリコントローラ124を含むNVMパッケージ104にファームウェア106を送るのに加えて、ホスト装置102は、NVMパッケージ154の種々のコンポーネントを構成するためにNVMパッケージ154にトリム値(例えば、トリム値156)を与えるようにも構成できる。
【0039】
図2は、種々のNVMパッケージへブート情報を送るように構成されたホストコントローラ204を伴うメモリ装置202を備えた規範的システム200を示す図である。メモリ装置202は、ポータブルメディアプレーヤ、セルラー電話、ポケットサイズのパーソナルコンピュータ、パーソナルデジタルアシスタント(PDA)、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピューティングシステム、及び/又は取り外し可能/ポータブル記憶装置(例えば、フラッシュメモリカード、USBフラッシュメモリドライブ)のような種々のメモリ装置のいずれかである。
【0040】
規範的なメモリ装置202は、ホストコントローラ204及びNVM206を備えている。ホストコントローラ204は、図1A−Bを参照して上述したホストコントローラ112及び/又はホストコントローラ162と同様である。ホストコントローラ204は、1つ以上のプロセッサ208、揮発性メモリ210、及びNVM212を備えている。プロセッサ208は、マイクロプロセッサ、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)又はその組合せのような種々のプロセッサのいずれかである。揮発性メモリ210は、RAM及びキャッシュメモリのような種々の揮発性メモリのいずれかである。揮発性メモリ210は、NVM206に記憶されたデータを検索しそして処理するといった種々の動作を実行するためにプロセッサ208により使用される。NVM212は、フラッシュメモリ(例えば、NANDフラッシュメモリ、NORフラッシュメモリ)のような種々のNVMのいずれかである。NVM212は、ファームウェア214及び/又はトリム値216のようなブート情報を持続的に記憶することができる。ファームウェア214は、図1Aを参照して上述したファームウェア116−120と同様であり、そしてトリム値216は、図1Bを参照して上述したトリム値166と同様である。ファームウェア214及び/又はトリム値216は、(例えば、ホストコントローラ204がブートするときに)揮発性メモリ210へロードされ、そして必要に応じて揮発性メモリ210からNVM206へ送られる。
【0041】
NVM206は、1つ以上のNVMパッケージ218a−bを含むことができる。NVMパッケージ218a−bは、各々、図1A−Bを参照して上述したNVMパッケージ104及び/又はNVMパッケージ154と同様である。例えば、NVMパッケージ218a−bは、各々、NVMを伴う複数のメモリダイ(例えば、メモリダイ136a−n及びNVM138a−n)、1つ以上のメモリコントローラ(例えば、メモリコントローラ124)、及び/又はファームウェア214及び/又はトリム値216を使用してブートされるコントロール回路(例えば、コントロール回路170)を含む。NVM206は、いかなる数のNVMパッケージ(例えば、2、3、4、8、16、等)を含んでもよい。
【0042】
図1A−Bを参照して上述したように、NVMの管理は、ホストコントローラ204及び/又はNVMパッケージ218a−bのコントローラによって実行することができる。例えば、ホストコントローラ204は、NVMパッケージ218a−bに異なるファームウェア及び/又はトリム値を与えることによってNVMパッケージ218a−bの動作を調整するように構成される。NVMパッケージ218a−bのコントローラがメモリ管理動作(例えば、エラー修正、ウェアレベリング、等)の少なくとも一部分を制御する具現化では、NVMパッケージ218a−bは、「管理(managed)」NVMであると考えられる。
【0043】
又、システム200は、メモリ装置202に(直接的及び/又は間接的に)通信接続される外部装置220を含むものとして示されている。外部装置220とメモリ装置202との間の通信は、2つの装置間のデータ及び/又はインストラクションの伝送を含む。外部装置220は、デスクトップコンピュータ、ラップトップコンピュータ、サーバーシステム、及びメディアコンピューティング装置(例えば、メディアサーバー、テレビ、ステレオシステム)を含む種々の電子装置のいずれかである。メモリ装置202は、外部装置インターフェイス222(例えば、ワイヤレスチップ、USBインターフェイス、等)を使用する物理的及び/又はワイヤレス接続を通して外部装置220と通信することができる。
【0044】
例えば、ある具現化では、メモリ装置202は、ポータブルメディアプレーヤであり、そして外部装置220は、物理的接続(例えば、USBケーブル)を経てメディアファイル(例えば、オーディオファイル、ビデオファイル、等)を互いに送信できるデスクトップコンピュータである。
【0045】
外部装置220は、NVM206のための更新された及び/又は新規なファームウェア及び/又はトリム値をメモリ装置202に与える。例えば、メモリ装置202は、ファームウェア214及び/又はトリム値216の更新バージョンが外部装置220から得られるかどうか周期的にチェックするように構成される(及び/又は外部装置220は、ファームウェア214及び/又はトリム値216のバージョンをチェックし、そして更新されたブート情報を、それが得られるときに、メモリ装置202に与える)。
【0046】
ファームウェア214及び/又はトリム値216は、NVMパッケージ218a−bの各々により使用される。例えば、ファームウェア214及び/又はトリム値216の単一のコピーをNVM212に記憶して、NVMパッケージ218a−bのような複数のNVMパッケージにわたって使用することができる。
【0047】
図3は、ホストからメモリ装置をブートするための規範的プロセス300を示すフローチャートである。このプロセス300は、図1Aを参照して上述したNVMパッケージ104、図1Bを参照して上述したNVMパッケージ154、及び/又は図2を参照して上述したメモリ装置202を含む種々のメモリ装置によって実行される。
【0048】
プロセス300は、メモリ装置をブートする指示をメモリ装置において受け取ることを含む(302)。そのような指示は、例えば、NVMパッケージ104及び/又はNVMメモリパッケージ154のようなメモリ装置が受け取る種々の信号及び/又はコマンドを含む。例えば、ホスト装置(例えば、ホスト装置102及び/又はホスト装置152)から受け取られるチップイネーブルアサーション信号が、ブートの指示である。別の例では、メモリ装置が非通電状態から電源オンされることが、メモリ装置をブートする指示として働く。別の例では、ホスト(例えば、ホスト装置102及び/又はホスト装置152)から受け取られるブートコマンドが、メモリ装置をブートする指示である。ある具現化において、メモリ装置は、再ブートすべきことを決定する。例えば、NVMパッケージ104のメモリコントローラ124は、特定形式のエラーに遭遇した後に再ブートし、そしてそれ自身ブートの指示を与えるべきであると決定する。
【0049】
ブートの指示を受け取るのに応答して、メモリ装置は、ホスト装置からブート情報を得ることができる(304)。ブート情報は、ファームウェア(例えば、ファームウェア106)及び/又はトリム値(例えば、トリム値156)を含めて、メモリ装置をブートしそして動作するのに使用される種々の情報を含む。ブート情報を得ることは、メモリ装置がブート情報を受け取る準備ができたという指示(例えば、状態指示子108)をホスト装置に与え、ホスト装置からブート情報を各部分(例えば、データチャンク)において受け取り、そして各部分がメモリ装置によって首尾良く受け取られたという確認(例えば、状態指示子108)をホスト装置に与えることを含む。
【0050】
メモリ装置は、ホスト装置から受け取ったブート情報を使用してブートすることができる(306)。例えば、メモリコントローラ124は、ホスト装置102から受け取ったファームウェア130を揮発性メモリ128へロードし、そしてファームウェア130を使用してNVMパッケージ104をブートするように進むことにより、NVMパッケージ104をブートすることができる。別の例では、ホスト装置152から受け取ったトリム値176をレジスタ174へロードし、そしてNVMパッケージ154をブートすることができる。
【0051】
メモリ装置をブートした後、ホスト装置からのブート情報を使用して1つ以上のメモリ動作を実行することができる(308)。例えば、メモリコントローラ124は、ファームウェア130により与えられ及び/又はホスト装置102により指令されるメモリ動作を実行することができる。例えば、動作ファームウェア116がNVMパッケージ104に与えられる場合には、メモリコントローラ124は、標準的なメモリ動作(例えば、読み取り、書き込み、消去)を実行し、そしてある具現化では、ウェアレベリング及びエラー修正のようなメモリ管理動作を実行することができる。別の例において、デバッグファームウェア118がNVMパッケージ104に与えられる場合には、メモリコントローラは、デバッグログを発生しそして記憶するようなデバッグ動作を実行することができる。更に別の例において、製造ファームウェア120がNVMパッケージ104に与えられる場合には、メモリコントローラ124は、NVMパッケージ104の種々のコンポーネント(例えば、NVM138a−n、ホストインターフェイス122、プロセッサ/マイクロプロセッサ126)が適切にインストールされて、各技術的仕様に従って動作するかどうか決定するためにテスト動作を実行することができる。別の例において、コントロール回路170は、レジスタ174に含まれたトリム値176を使用してホスト装置152によりNVMパッケージ154へ送られたコマンドを実行することができる。
【0052】
メモリ装置は、メモリ動作が完了すると、電源オフされる(310)。例えば、ホスト装置(例えば、ホスト装置102及び/又は152)は、クリップイネーブルデアサート信号をメモリ装置に与え及び/又はメモリ装置に供給される電力をオフにトグルすることにより、メモリ装置(例えば、NVMパッケージ104及び/又は154)をパワーダウンさせる。別の例では、メモリ装置(例えば、NVMパッケージ104)は、装置がアイドル状態でスレッシュホールド長さの時間が経過した後に、メモリ装置をパワーダウンすることを決定する。
【0053】
プロセス300は、連続的に繰り返すことができ、これは、メモリ装置が種々の電力及び/又は動作状態間を連続的に移行するときにメモリ装置がホスト装置からのブート情報を使用して再ブートできることを意味する。例えば、メモリ装置は、それが使用されていないときメモリ装置による電力消費を減少する(そしておそらくはバッテリ寿命を延長する)ためにパワーダウンされる。メモリ装置は、頻繁にパワーダウン及びパワーアップされることがある。オフ状態からオン状態へのこれらの移行の各々は、ホストから得られるブート情報を使用してメモリ装置をブートさせる。
【0054】
図4は、ホストからメモリ装置をブートするための規範的プロセス400を示すフローチャートである。このプロセス400は、図1Aを参照して上述したホスト装置102、図1Bを参照して上述したホスト装置152、及び/又は図2を参照して上述したメモリ装置202のような種々のホスト装置によって実行することができる。
【0055】
ある具現化においては、プロセス400は、メモリ装置からブート情報の要求を受け取ることにより開始される(402)。例えば、NVMパッケージ104は、ブート情報の要求をファームウェアの形態でホスト装置102に与えることができる。
【0056】
ある具現化においては、プロセス400は、メモリ装置へのアクセスが要求され及びメモリ装置が電源オフであることを決定することにより、開始される(404)。例えば、ホスト装置102は、ある範囲の論理的アドレスに関する読み取り要求を受け取り(又はデータを読み取る要求を識別し)、その範囲の論理的アドレスがNVMパッケージ104に対応することを決定し、そしてNVMパッケージ104が電源オフであることを決定する。そのような決定に基づいて、メモリ装置へブートコマンドを送ることができる(406)。例えば、ホスト装置102は、「ホストからブートする」コマンドをNVMパッケージ104へ送ることができる。そのようなコマンドを送るのに応答して、ホスト装置は、メモリ装置がブート情報を受け取る準備ができたという指示が受け取られる(408)まで、メモリ装置へブート情報を送るのを待機する。
【0057】
メモリ装置にブート情報を送ることができる(410)。例えば、ホスト装置102は、ファームウェア116−120の1つ以上をNVMパッケージ104へ送ることができる。別の例では、ホスト装置152は、トリム値166をNVMパッケージ154へ送ることができる。ブート情報は、ホスト装置の揮発性メモリから送ることができる。
【0058】
ブート情報がメモリ装置へ送られると、ホストは、1つ以上のコマンドをメモリ装置に与え、及び/又はメモリ装置からの応答を待機する(412)。例えば、ホスト装置102がデバッグファームウェア118をNVMパッケージ104へ送る場合に、ホスト装置102は、NVMパッケージ104が特定のデバッグ情報を収集してホスト装置102へ送るようにさせる1つ以上のコマンドを発生し、そしてデバッグ情報がホスト装置102へ送られるのを待機する。別の例では、ホスト装置152は、送られたトリム値156を使用してNVMパッケージ154が首尾良くブートされた後にNVMパッケージ154へ読み取りコマンドを送り、そしてNVMパッケージ154からのその要求されたデータを待機する。
【0059】
メモリ装置へ送られるべきコマンド及び/又はメモリ装置から受け取るべき要求された情報がそれ以上ない場合には、ホストは、メモリ装置をパワーダウンさせる(414)。例えば、ホスト装置102は、チップイネーブルデアサート信号をNVMパッケージ104に送り、NVMパッケージ104をパワーダウンさせる。
【0060】
プロセス400は、ホスト装置102及び/又はホスト装置152のようなホスト装置によって繰り返すことができる。例えば、ホスト装置102は、NVMパッケージ104が何らかのタスク(例えば、データの検索、データの記憶、コンポーネントのテスト、デバッグ情報の識別)を行うことがホスト装置102により要求されたときにはホスト装置102からのブート情報を使用してNVMパッケージ104がブートを行うようにさせ、そしてそれが要求されないときには電力消費を減少するためにNVMパッケージ104がパワーダウンするようにさせる。
【0061】
本書に述べる要旨及び動作の実施形態は、本書に開示する構造及びその構造的等効物を含めて、デジタル電子回路、或いはソフトウェア、ファームウェア又はハードウェアにおいて、或いはそれらの1つ以上の組合せにおいて具現化することができる。本書に述べる要旨の実施形態は、データ処理装置により実行するために又はデータ処理装置の動作を制御するためにコンピュータ記憶媒体にエンコードされた1つ以上のコンピュータプログラム、即ちコンピュータプログラムインストラクションの1つ以上のモジュールとして具現化することができる。それとは別に又はそれに加えて、プログラムインストラクションは、人為的に発生される伝播信号、例えば、マシン発生される電気的、光学的又は電磁信号にエンコードされ、その信号は、データ処理装置で実行するために適当な受信装置へ送信される情報をエンコードするために発生される。コンピュータ記憶媒体は、コンピュータ読み取り可能な記憶装置、コンピュータ読み取り可能な記憶基板、ランダム又はシリアルアクセスメモリアレイ又は装置、或いはそれらの1つ以上の組合せであり、或いはそれに含まれるものである。更に、コンピュータ記憶媒体は、伝播信号でないが、コンピュータ記憶媒体は、人為的に発生される伝播信号にエンコードされるコンピュータプログラムインストラクションのソース又は行先である。又、コンピュータ記憶媒体は、1つ以上の個別の物理的コンポーネント又は媒体(例えば、複数のCD、ディスク、又は他の記憶装置)であるか又はそれに含まれる。
【0062】
本書に述べる動作は、1つ以上のコンピュータ読み取り可能な記憶装置に記憶されるか又は他のソースから受け取られたデータに対してデータ処理装置により実行される動作として具現化することができる。
【0063】
「データ処理装置」という語は、一例として、プログラム可能なプロセッサ、コンピュータ、システムオンチップ、或いはそれらの複数又は組み合わせを含めて、あらゆる種類のデータ処理装置、デバイス及びマシンを包含する。装置は、特殊目的のロジック回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途向け集積回路)を含む。又、装置は、ハードウェアに加えて、当該コンピュータプログラムのための実行環境を生成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットホームランタイム環境、バーチャルマシン、或いはそれらの1つ以上の組合せを構成するコードも含む。装置及び実行環境は、ウェブサービス、分散型コンピューティング及びグリッドコンピューティングインフラストラクチャーのような種々の異なるコンピューティングモデルインフラストラクチャーを実現することができる。
【0064】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト又はコードとしても知られている)は、コンパイル又は解釈型言語や、宣言又は手続き型言語を含む任意の形態のプログラミング言語で書き込むことができ、そしてスタンドアローンプログラム、或いはモジュール、コンポーネント、サブルーチン、オブジェクト、又はコンピューティング環境に使用するのに適した他のユニットを含む任意の形態で配備することができる。コンピュータプログラムは、ファイルシステムのファイルに対応してもよいが、必要ではない。又、プログラムは、他のプログラム又はデータ(例えば、マークアップ言語ドキュメントに記憶される1つ以上のスクリプト)を保持するファイルの一部分、当該プログラム専用の単一ファイル、或いは複数の整合されたファイル(例えば、1つ以上のモジュール、サブプログラム、又はコードの部分を記憶するファイル)に記憶することができる。コンピュータプログラムは、1つのサイトに位置されるか又は複数のサイトにわたって分散されて通信ネットワークにより相互接続された1つのコンピュータ又は複数のコンピュータにおいて実行されるように配備することができる。
【0065】
本書に述べるプロセス及びロジックの流れは、入力データに対して動作して出力を発生することによりアクションを実行するために1つ以上のコンピュータプログラムを実行する1つ以上のプログラム可能なプロセッサにより実行することができる。又、このプロセス及びロジックの流れは、特殊目的のロジック回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途向け集積回路)により実行することができ、又、装置は、そのようなものとして具現化することができる。
【0066】
コンピュータプログラムを実行するのに適したプロセッサは、例えば、汎用及び特殊目的の両マイクロプロセッサ、及び任意の種類のデジタルコンピュータの1つ以上のプロセッサを含む。一般的に、プロセッサは、リードオンリメモリ又はランダムアクセスメモリ又はその両方からインストラクション及びデータを受け取る。コンピュータの本質的な要素は、インストラクションに基づいてアクションを実行するためのプロセッサと、インストラクション及びデータを記憶するための1つ以上のメモリ装置である。一般的に、コンピュータは、データを記憶するための1つ以上の大量記憶装置、例えば、磁気ディスク、磁気光学ディスク又は光学ディスクも備え、或いはそこからデータを受け取り又はそこへデータを転送し或いはその両方を行うように作動的に結合される。しかしながら、コンピュータは、そのような装置をもつ必要はない。更に、コンピュータは、別の装置、例えば、幾つか挙げると、移動電話、パーソナルデジタルアシスタント(PDA)、移動オーディオ又はビデオプレーヤ、ゲームコンソール、グローバルポジショニングシステム(GPS)受信器、或いはポータブル記憶装置(例えば、ユニバーサルシリアルバス(USB)フラッシュ装置)に埋め込むことができる。コンピュータプログラムインストラクション及びデータを記憶するのに適した装置は、不揮発性メモリ、媒体及びメモリ装置のあらゆる形態を含み、例えば、EPROM、EEPROMのような半導体メモリデバイス;フラッシュメモリデバイス;例えば、内部ハードディスク又は取り外し可能なディスクのような磁気ディスク;磁気光学ディスク;並びにCD ROM及びDVD−ROMディスクを含む。プロセッサ及びメモリは、特殊目的のロジック回路によって補足されてもよいし、又はそこに合体されてもよい。
【0067】
同様に、動作は、図面中に特定の順序で示されたが、そのような動作を図示された特定の順序又は逐次の順序で実行し、或いは望ましい結果を得るために図示された全ての動作が実行されることが必要であると解釈されるべきではない。ある環境においては、マルチタスク及び並列処理が好都合である。更に、上述した実施形態における種々のシステムコンポーネントの分離は、全ての実施形態においてそのような分離が必要であると理解されてはならず、そしてここに述べるプログラムコンポーネント及びシステムは、一般的に、単一のソフトウェア製品に一体化されてもよいし又は複数のソフトウェア製品にパッケージされてもよいことを理解されたい。
【0068】
以上、本発明の要旨の特定の実施形態を説明した。特許請求の範囲内で他の実施形態も考えられる。更に、ホストからブーティングする他のメカニズムを使用してもよい。あるケースでは、特許請求の範囲に述べたアクションを異なる順序で実行しても、依然、望ましい結果を得ることができる。更に、添付図面に示すプロセスは、望ましい結果を得るために、必ずしも、図示された特定の順序又は逐次の順序を必要としない。ある具現化においては、マルチタスク及び並列処理が好都合である。
【符号の説明】
【0069】
100:システム
102:ホスト装置
104:不揮発性メモリ(NVM)パッケージ
106:ファームウェア
108:状態メッセージ
110:接続(バス)
112:ホストコントローラ
114:メモリ
116:動作ファームウェア
118:デバッグファームウェア
120:製造ファームウェア
122:ホストインターフェイス
124:メモリコントローラ
126:プロセッサ/マイクロプロセッサ
128:揮発性メモリ
130:ファームウェア
132:NVM
136a−n:メモリダイ
138a−n:NVM
150:システム
152:ホスト装置
154:不揮発性メモリ(NVM)パッケージ
156:トリム値
158:状態メッセージ
162:ホストコントローラ
164:メモリ
166:トリム値
168:ホストインターフェイス
170:コントロール回路
172:コマンド実行ロジック
174:レジスタ
176:トリム値
180a−n:メモリダイ
182a−n:NVM

【特許請求の範囲】
【請求項1】
メモリ装置をブートするためのインストラクションをメモリ装置において受け取るための手段を備え、メモリ装置は、メモリ装置のコントローラによりアクセス可能な不揮発性メモリを含み、
前記メモリ装置をブートするためのインストラクションを受け取るのに応答して、ホスト装置からのファームウェアを前記メモリ装置によって取得するための手段を更に備え、ホスト装置は、前記メモリ装置とは個別のもので、前記メモリ装置に通信結合され、
前記ホスト装置からのファームウェアを使用して前記メモリ装置をブートする手段を更に備え、前記メモリ装置は、前記ホスト装置とは個別にブートし、そして前記ホスト装置は、不揮発性メモリに記憶された及び前記メモリ装置のメモリコントローラとの通信により得たデータ又はインストラクションを使用して動作を実行する、システム。
【請求項2】
メモリ装置をブートするための前記インストラクションは、前記ホスト装置から受け取られ、そして前記メモリ装置が前記ホスト装置からのファームウェアを使用してブートすると共に、前記メモリ装置の不揮発性メモリに記憶されたファームウェアからブートするインストラクションを無効にするよう命令する、請求項1に記載のシステム。
【請求項3】
前記メモリ装置が前記ホスト装置からのファームウェアを使用してブートした後に、そのファームウェアを使用して前記メモリ装置において1つ以上の動作を実行することを更に含む、請求項1に記載のシステム。
【請求項4】
前記ファームウェアは、前記コントローラが不揮発性メモリにおいて読み取り、書き込み及び消去動作を実行するようにさせるインストラクションを有する動作ファームウェアを含み、そして前記メモリ装置において実行される1つ以上の動作は、読み取り、書き込み及び消去動作の1つ以上を含む、請求項3に記載のシステム。
【請求項5】
前記動作ファームウェアは、更に、前記コントローラが不揮発性メモリにおいてメモリ管理動作を実行するようにさせるインストラクションを含む、請求項4に記載のシステム。
【請求項6】
前記メモリ管理動作の1つ以上は、ウェアレベリング動作を含む、請求項5に記載のシステム。
【請求項7】
前記ファームウェアは、前記コントローラが前記メモリ装置においてデバッグ動作を実行するようにさせるインストラクションを有するデバッグファームウェアを含み、
前記メモリ装置において実行される1つ以上の動作は、前記デバッグ動作の1つ以上を含む、請求項3に記載のシステム。
【請求項8】
前記ファームウェアは、前記コントローラが、少なくとも不揮発性メモリを含むメモリ装置のコンポーネントのインストール及び動作をテストするようにさせるインストラクションを有する製造ファームウェアを含み、前記メモリ装置において実行される1つ以上の動作は、前記メモリ装置の1つ以上のコンポーネントのインストール及び動作をテストするための1つ以上の動作を含む、請求項3に記載のシステム。
【請求項9】
前記不揮発性メモリは、フラッシュメモリを含む、請求項1に記載のシステム。
【請求項10】
ホスト装置からのファームウェアを使用してブートするようにメモリ装置に命令するブートコマンドをホスト装置によりメモリ装置に与え、ホスト装置は、メモリ装置とは個別のもので、メモリ装置に通信結合され、そしてメモリ装置は、不揮発性メモリを含み、
前記メモリ装置が前記ホスト装置からファームウェア受け取る準備ができたという指示を前記ホスト装置において受け取り、
前記指示を受け取るのに応答して、前記ホスト装置により前記メモリ装置へファームウェアを送出し、前記メモリ装置へファームウェアを送出すると、前記メモリ装置は、そのファームウェアを使用してブートするようにされ、前記メモリ装置は、前記ホスト装置とは個別にブートするようにされた、方法。
【請求項11】
前記ファームウェアは、前記メモリ装置のコントローラが前記メモリ装置の不揮発性メモリにおいて読み取り、書き込み及び消去動作を実行するようにさせるインストラクションを有する動作ファームウェアを含む、請求項10に記載の方法。
【請求項12】
前記ファームウェアは、前記メモリ装置のコントローラが前記メモリ装置においてデバッグ動作を実行するようにさせるインストラクションを有するデバッグファームウェアを含む、請求項10に記載の方法。
【請求項13】
前記ファームウェアは、前記メモリ装置のコントローラが、少なくとも不揮発性メモリを含むメモリ装置のコンポーネントのインストール及び動作をテストするようにさせるインストラクションを有する製造ファームウェアを含む、請求項10に記載の方法。
【請求項14】
前記ファームウェアは、前記ホスト装置の不揮発性メモリに記憶されそしてそこから前記メモリ装置に与えられる、請求項10に記載の方法。
【請求項15】
前記ホスト装置に対してアクセスできる複数のメモリ装置のうちの1つに記憶されたデータにアクセスする要求に応答して、その要求されたデータが前記メモリ装置に記憶されていることを決定し、
前記要求されたデータが前記メモリ装置に記憶されているという決定に応答して、前記メモリ装置に前記ブートコマンドが与えられる、請求項10に記載の方法。
【請求項16】
不揮発性メモリと、
メモリ装置をホスト装置に通信結合するホストインターフェイスと、
前記不揮発性メモリにおいてメモリ動作を実行するように構成され且つ前記ホストインターフェイスを通して前記ホスト装置と通信するようにされたメモリコントローラと、
を備え、前記メモリコントローラは、更に、
前記ホスト装置から前記ホストインターフェイスを通して前記メモリ装置をブートするインストラクションを受け取り、
前記インストラクションを受け取るのに応答して、前記ホスト装置からファームウェアを取得し、そして
前記ホスト装置からのファームウェアを使用して前記メモリ装置をブートする、
ように構成され、前記メモリ装置は、前記ホスト装置とは個別にブートし、そして前記ホスト装置は、前記不揮発性メモリに記憶された及び前記ホストインターフェイスを経て前記メモリ装置のメモリコントローラとの通信により得たデータ又はインストラクションを使用して動作を実行するようにされた、メモリ装置。
【請求項17】
前記ファームウェアは、前記メモリコントローラが前記不揮発性メモリにおいて読み取り、書き込み及び消去動作を実行するようにさせるインストラクションを有する動作ファームウェアを含む、請求項16に記載のメモリ装置。
【請求項18】
前記動作ファームウェアは、更に、前記メモリコントローラが不揮発性メモリにおいてメモリ管理動作を実行するようにさせるインストラクションを有する、請求項17に記載のメモリ装置。
【請求項19】
前記ファームウェアは、前記メモリコントローラが前記メモリ装置においてデバッグ動作を実行するようにさせるインストラクションを有するデバッグファームウェアを含む、請求項16に記載のメモリ装置。
【請求項20】
前記ファームウェアは、前記メモリコントローラが、少なくとも不揮発性メモリを含むメモリ装置のコンポーネントのインストール及び動作をテストするようにさせるインストラクションを有する製造ファームウェアを含む、請求項16に記載のメモリ装置。

【図1A】
image rotate

【図1B】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate