(57)【要約】【解決手段】メモリのページサイズを自動的に決定するための方法および装置を提案する。メモリデバイスのページサイズを自動的に決定するための方法は、メモリデバイスのページサイズの範囲を受け、前記メモリデバイスのバス幅を決定し、自動検出マーカーを有するページ数を検出し、前記検出されたページサイズの範囲と受けた前記自動検出マーカーを有するページ数とに基づき、前記メモリデバイスのページサイズを決定することを含む。ページサイズを自動的に決定するための装置は、上述の方法を実行するためのロジックを含むものである。【選択図】図４
2010527484.tif 000002
【特許請求の範囲】
【請求項１】
メモリデバイスのページサイズの範囲を受け；
前記メモリデバイスのバス幅を決定し；
自動検出マーカーを有するページ数を検出し；
前記検出された前記自動検出マーカーを有するページ数と受けたページサイズの範囲とに基づき、前記メモリデバイスのページサイズを決定する
ことを具備するメモリデバイスのページサイズを自動的に決定する方法。
【請求項２】
前記ページサイズの範囲は、前記メモリデバイスのための最大可能ページサイズおよび最小可能ページサイズを備え、
前記最大可能ページサイズおよび前記最小可能ページサイズの割合を計算することにより、セクション数を決定する
ことを更に具備する請求項１に記載の方法。
【請求項３】
前記バス幅を決定することは、
第１の４バイトワードおよび第２の４バイトワードを、前記メモリデバイスにおいて隣接して与え；
メモリコントローラが８ビットモードで構成されるときに、前記メモリデバイスから第１の４バイトワードを読み出し；
読み出したバイトが第１の４バイトワードか第２の４バイトワードに対応する置換かを決定することであって、前記置換は１６ビットバス幅を有するメモリデバイスに対応すること、を更に備える
請求項１に記載の方法。
【請求項４】
前記第１の４バイトワードは第１マジックナンバーに対応し、前記第２の４バイトワードは第２マジックナンバーに対応する
請求項３に記載の方法。
【請求項５】
前記ページ数を検出することは、
前記メモリデバイスからページのセクションを順次読み出し；
自動検出マーカーを含むページ数をカウントすること、を更に備える
請求項１に記載の方法。
【請求項６】
前記メモリデバイスからページデータを読み出し；
前記自動検出マーカーを含むデータであるか否かをテストする
ことを更に具備する請求項５に記載の方法。
【請求項７】
前記自動検出マーカーを含むデータであるか否かを検出するときには：
ページ読み出しの数に対応するカウンタをインクリメントし；
前記ページを読み出すこと、および前記自動検出マーカーを含むことを有効でなくなるデータまで前記テストを行うことを繰り返す、ことを更に備える
請求項６に記載の方法。
【請求項８】
前記自動検出マーカーを含まないデータを決定するときには：
カウンタが自動決定マーカーとしてマークされた最小ページ数を超えるか否かを決定し、超える場合は、エラー状態を発信する、ことを更に備える
請求項７に記載の方法。
【請求項９】
前記自動検出マーカーは、マジックナンバーである
請求項１に記載の方法。
【請求項１０】
マークされたセクション数の生成を決定することにより前記メモリデバイスのページサイズおよび前記最小可能ページサイズを計算し、前記自動決定マーカーを有するページ数により前記生成を分割する
ことを更に具備する請求項２に記載の方法。
【請求項１１】
ハードウェアにおいて、前記メモリデバイスがより小さなページサイズを利用するのか、より大きなページサイズを利用するのかを決定する
ことを更に具備する請求項１に記載の方法。
【請求項１２】
初期化コマンドの読み出しを実行し；
事前に決定された期間の後、前記メモリデバイスがビジィであるか否かを決定することをチェックする
ことを更に具備する請求項１に記載の方法。
【請求項１３】
セクション数に分割されたメモリデバイス上のデータを与えることであって、それぞれのセクションは少なくとも、一つのコードワード，自動決定マーカー，およびダミーデータ、の一つを含む
ことを更に具備する請求項２に記載の方法。
【請求項１４】
前記少なくとも一つのコードワードは、ＮＡＮＤ＿８＿ＢＩＴ  コードワードおよび参照ナンバーを含む
請求項１３に記載の方法。
【請求項１５】
前記少なくとも一つのコードワードおよび自動決定マーカーは、マジックナンバーである
請求項１４に記載の方法。
【請求項１６】
前記メモリデバイスは、ＮＡＮＤフラッシュメモリ，ｍ−ｓｙｓｔｅｍフラッシュメモリ，またはＯｎｅＮＡＮＤフラッシュメモリを含む
請求項１に記載の方法。
【請求項１７】
メモリデバイスのページサイズの範囲を受けるように構成されるロジック；
前記メモリデバイスのバス幅を決定するように構成されるロジック；
自動検出マーカーを有するページ数を検出するように構成されるロジック；
前記検出されたページサイズの範囲と受けた前記自動検出マーカーを有するページ数とに基づき、前記メモリデバイスのページサイズを決定するように構成されるロジック
を具備するメモリデバイスのページサイズを自動的に決定する装置。
【請求項１８】
前記ページサイズの範囲は、前記メモリデバイスのための最大可能ページサイズおよび最小可能ページサイズを備え、
前記最大可能ページサイズおよび前記最小可能ページサイズの割合を計算することにより、セクション数を決定するように構成されるロジックを更に具備する
請求項１７に記載の装置。
【請求項１９】
前記バス幅を決定するように構成されるロジックは、
第１の４バイトワードおよび第２の４バイトワードを、前記メモリデバイスにおいて隣接して与えるように構成されるロジック；
メモリコントローラが８ビットモードで構成されるときに、前記メモリデバイスから第１の４バイトワードを読み出すように構成されるロジック；
読み出したバイトが第１の４バイトワードか第２の４バイトワードに対応する置換かを決定することであって、前記置換は１６ビットバス幅を有するメモリデバイスに対応するように構成されるロジック、を更に備え、
前記第１の４バイトワードは第１マジックナンバーに対応し、前記第２の４バイトワードは第２マジックナンバーに対応し、前記自動検出マーカーはマジックナンバーである
請求項１７に記載の装置。
【請求項２０】
前記ページ数を検出するためのロジックは、
前記メモリデバイスからページのセクションを順次読み出すように構成されるロジック；
自動検出マーカーを含むページ数をカウントするように構成されるロジック；
前記メモリデバイスからページデータを読み出すように構成されるロジック；
前記自動検出マーカーを含むデータであるか否かをテストするように構成されるロジック、を更に備える
請求項１７に記載の装置。
【請求項２１】
前記自動検出マーカーを含むデータであることを決定するときには：
ページ読み出しの数に対応するカウンタをインクリメントするように構成されるロジック；
前記ページを読み出すこと、および前記自動検出マーカーを含むことを有効でなくなるデータまで前記テストを行うことを繰り返すように構成されるロジックを更に備え、
前記自動検出マーカーを含まないデータを決定するときには：
カウンタが自動決定マーカーとしてマークされた最小ページ数を超えるか否かを決定し、超える場合は、エラー状態を発信するように構成されるロジックを更に備える
請求項２０に記載の装置。
【請求項２２】
マークされたセクション数の生成を決定することにより前記メモリデバイスのページサイズおよび前記最小可能ページサイズを計算し、前記自動決定マーカーを有するページ数により前記生成を分割することを更に具備する
請求項１８に記載の装置。
【請求項２３】
メモリデバイスのページサイズの範囲を受けるための手段；
前記メモリデバイスのバス幅を決定するための手段；
自動検出マーカーを有するページ数を検出するための手段；
前記検出されたページサイズの範囲と受けた前記自動検出マーカーを有するページ数とに基づき、前記メモリデバイスのページサイズを決定するための手段
を具備するメモリデバイスのページサイズを自動的に決定する装置。
【請求項２４】
前記ページサイズの範囲は、前記メモリデバイスのための最大可能ページサイズおよび最小可能ページサイズを備え、
前記最大可能ページサイズおよび前記最小可能ページサイズの割合を計算することにより、セクション数を決定するための手段を更に具備する
請求項２３に記載の装置。
【請求項２５】
前記メモリデバイスからページのセクションを順次読み出すための手段；
自動検出マーカーを含むページ数をカウントするための手段、を更に具備する
請求項２３に記載の装置。
【発明の詳細な説明】
【関連出願の表示】
【０００１】
この特許出願は、２００７年５月１４日に”フラッシュデバイスページサイズの自動検出”の題目で出願された米国仮特許出願番号60/917,901、および２００７年１０月１日に”メモリページサイズ自動検出”の題目で出願された米国仮特許出願番号60/976,543の利益を要求する。前述の出願の全体は、参照によって本明細書に組込まれる。
【技術分野】
【０００２】
実施例の開示は、記憶装置の構成の分野一般に関し、特に、独立して記憶装置の濃度（即ち、記憶容量のサイズ）を決定することをサポートすること可能にするために、自動的に不揮発性記憶装置のページサイズを決定することに関する。
【背景技術】
【０００３】
情報処理装置（IPD：Information Processing Device）に電源が投入されると、その装置の様々なハードウェアおよび／またはソフトウェア構成要素を初期化するために、その装置は、まずブートシーケンス（boot sequence）を受け得る。そのブートシーケンスは、別々に編集され得られる複数のコードイメージを含むことができるマルチイメージブートアーキテクチャ（multi-image boot architecture）を有するソフトウェアにより実行され得る。一般に、第一的なブートシーケンスはチップ上の不揮発性メモリに記憶され得、その情報処理装置の製造時に組み込まれ得る。いくつかの場合では、その第一的なブートコードは、チップ上でない不揮発性メモリに記憶されることができる。
【０００４】
電源サイクルの後（完全にオフ状態からオン状態または半オフ状態からオン状態になった場合）、その情報処理装置は第一的なブートコードの実行を開始し得る。第一的なブートコードの実行の一部として、情報処理装置は、その装置のブートアッププロセスにおいて次のステップに用いられる第二的なブートコードまたはイメージをダウンロードし得る。その第二的なブートコードは、チップ上でない不揮発性メモリに存在し得、製品または製品構造に伴って変化し得る。異なった形式の記憶装置は、第二的なブートコードを記憶するものとして用いられ得る、例えば、ＮＡＮＤフラッシュ，ｏｎｅＮＡＮＤフラッシュ，ｍ−ｓｙｓｔｅｍフラッシュ，ＮＯＲフラッシュ，ＥＥＰＲＯＭ，ＲＯＭ等がある。その第二的なブートコードイメージをダウンロードするために、情報処理装置は、記憶デバイスにある第二的なブートコードの詳細（デバイスタイプ）、およびそれをどのようにダウンロードするか（そのデバイスにアクセスするためのプロトコル，そのデバイスにアクセスの仕方，そのデバイスにどのようにそのデータが記憶されているのか）を知る必要がある。第一的なブートコードの実行がされている間に、第二的なブートコードのダインロードが発生すると、情報処理装置は、第一的なブートコードそれ自体における情報（第二的なブートコードがそのデバイスに存在するとみなして、第二的なブートコードをどのようにダウンロードするか）を持つ必要がある。その代わりに、情報処理装置は、第一的なブートコードの実行がされている間に、その情報を駆動することができ得る。
【０００５】
一旦その情報処理装置が第一的なブートコードの実行を終了すると、そのデバイスの詳細（第二的なコードを持つこと，そのデバイスにおける第二的なコードの位置（即ち、アドレス），および第二的なコードのアクセスの仕方）を終了する。いくつかの場合において情報処理装置は、チップ上のまたはチップ上でないメモリから第二的なコードをダウンロードし得、その他の場合において情報処理装置は、ただコードの位置およびそのアクセスの仕方を示し得る。第一的なブートコードの実行を終了した後、情報処理装置は、第二的なコードの実行を開始する。第二的なブートイメージが実行される間、情報処理装置は、そのシステムのハードウェア構成のより詳細（システムのタイプ，デバイスの接続，システムの特徴，システムメモリサイズ，幅，位置，システムメモリへアクセスするためのプロトコル，等）そしてまたいくつかのレベルＳＷ構成を示し／学び得る。
【０００６】
上記に示したように、第二的なコードをダウンロードするために、情報処理装置はそのデバイスタイプとそのアクセス方法とを決定する必要がある。第一的なブートの間にアクセスされることが必要な異なったタイプのデバイスがあり得ると、情報処理装置は、メモリデバイスへのアクセスを実現するための３つの一般的なステップを実行し得る：（i）デバイスタイプの検出；（ii）バスインターフェイス幅の検出；（iii）デバイスのページ／セクタサイズの決定（デバイスがページ／セクタに方向付けられたときに）。情報処理装置は、情報処理装置がデバイスにおける第二的なコードをアクセスする前にこれらのステップを終了する必要がある。
【０００７】
従ってより適切な動作のためには、情報処理装置は、この情報処理装置にアクセスされる不揮発性フラッシュメモリデバイスのページ／セクタサイズを示し得る。情報処理装置が、第二的なブートコードが記憶されているデバイスタイプを示したと仮定すると、それはその後においてデータが記憶されているフォーマットを検出することができる。フラッシュデバイスのあるタイプ（即ち：ＮＡＮＤ，ｏｎｅＮＡＮＤ，ｍ−ｓｙｓｔｅｍ，ｓｕｐｅｒＡＮＤ，等）は、ページフォーマットにおいてデータを記憶する。デバイスのページサイズはその密度やデバイスのタイプに伴って変化し得る。与えられるフラッシュメモリのページサイズはできるだけ低く、例えば、１２８バイトや、できるだけ高い８ｋバイト、またはそれよりも高くに設定される。
【０００８】
フラッシュデバイスの密度が増加するのに伴って、そのページサイズもこれに対応して増加する。様々な技術が、ページサイズやインターフェイスのバス幅を検出するために、情報処理装置により用いられ得る。一つの従来の技術は、情報処理装置の外部ピンより検出されるページサイズおよび／またはバス幅をエンコードすることであり、これらピンにより転送される値はそのデバイスのページサイズおよび／またはバス幅を示すことができる。このアプローチはシンプルである；しかしながら、異なったページサイズの全てをサポートするために要求される検出ピンの数が増大する。
【０００９】
その他の解決手段は、ページサイズとバス幅との情報をフラッシュデバイスの第一のページに記憶することである、そしてハードウェア論理は、第一的なブート実行の間（情報処理装置はそのハードウェアにこの機能を実行させることもなく、そのハードウェハ論理は自動的にその第一のページを検出し読み出すこともない）フラッシュデバイスからその第一のページを読み出すことができる。この解決手段は、第一のページを読み出す間に発生する可能性があるランダムエラーに対して何の防御手段も持ち得ない。フラッシュデバイスはランダムエラーが発生する傾向があり、もし第一のページにありフラッシュメモリまたは情報処理装置間の破壊されたデータがフラッシュメモリからそのデータが読み出されると、情報処理装置が非常に間違った結果のページサイズを検出するという可能性がある。エラー防御は、従来的にページとしてのこのストレージに加えることができず、データフォーマットはブートアップ時において情報処理装置側で知ることができない。
【００１０】
読み出しエラーに対する防御を改善するために、ページサイズおよびバス幅は、マジックナンバーとして知られ、ランダムエラーに対する防御を与える、唯一のナンバーにエンコードされる。情報処理装置は、第一のページに記憶されるマジックナンバーに続きページサイズを検出し、その後ページサイズに基づき第二的なブートコードにアクセスする。この第二的なブートコード／イメージを含むことは、それぞれのフラッシュデバイス（ページおよびバス幅のサイズ）にとって、必要不可欠なものである。フラッシュメモリデバイスの様々なタイプの数が拡大し続けるにつれて、様々なフラッシュデバイスに対応して別々のソフトウェアを構築することを発展させ，管理し，含むことのコストが増大している。
【００１１】
従って、新たなページサイズを自動的に検出するアプローチのために、発展および含むためのコストを低減するための共通のソフトウェアを活用してフラッシュデバイスをサポートし得る必要がある。
【発明の概要】
【００１２】
以下に開示する例示的な実施例は、メモリページサイズの自動検出のための装置およびその方法に係るものである。
【００１３】
本発明の実施例は、メモリデバイスのページサイズの自動検出のための方法を含み、その方法は：メモリデバイスのページサイズ範囲を受け；上記メモリデバイスのバス幅を決定し；自動決定マーカーを有するページの数を決定し；上記検出されたページサイズの範囲と受けた上記自動検出マーカーを有するページ数とに基づいて上記メモリデバイスのページサイズを決定すること、を具備し得る。
【００１４】
その他の本発明の実施例は、メモリデバイスのページサイズの自動検出のための装置を含み、その装置は：メモリデバイスのページサイズ範囲を受けるように構成されるロジック；上記メモリデバイスのバス幅を決定するように構成されるロジック；自動決定マーカーを有するページの数を決定するように構成されるロジック；上記自動的に検出されるマーカーおよび上記受信したページサイズ範囲を持って決定されるページの数に基づいて上記メモリデバイスのページサイズを決定するように構成されるロジック、を具備し得る。
【００１５】
さらにその他の本発明の実施例は、メモリデバイスのページサイズの自動検出のための装置を含み、その装置は：メモリデバイスのページサイズ範囲を受ける手段；上記メモリデバイスのバス幅を決定する手段；自動決定マーカーを有するページの数を決定する手段；上記自動的に検出されるマーカーおよび上記受信したページサイズ範囲を持って決定されるページの数に基づいて上記メモリデバイスのページサイズを決定する手段、を具備し得る。
【図面の簡単な説明】
【００１６】
添付の図面は開示の実施例の記載の理解の助けのために表されたものであり、実施例の一例の図面として示されるものであり、これに限定されるものではない。
【図１】図１は、プロセッサ，メモリコントローラ，および様々な異なったタイプのメモリデバイスを含む情報処理装置のブロック図である。
【図２Ａ】図２Ａは、メモリデバイスのバス幅を決定するために用いられることができ、そのメモリデバイスに格納される例示的な第１ページを示す図である。
【図２Ｂ】図２Ｂは、例示的な第１ページにあるデータが、どのように８ビットバス幅および１６ビットバス幅を有するメモリデバイスから読み出されるかを示す図である。
【図３】図３は、メモリデバイスのバス幅およびページサイズを決定するために用いられる例示的なデータ構造を示す図である。
【図４】図４は、メモリデバイス内に含まれる図３に示される例示的なデータ構造が、どのように異なったページサイズを有するのかを示す図。
【図５】図５は、フラッシュデバイスのページサイズを決定するための例示的なプロセスを描写するフローチャートである。
【図６】図６は、自動的に決定されるマーカーの数を含むその他例示的なプロセスを示す図である。
【図７】図７は、メモリデバイスと結びついたパラメータを決定するための例示的なプロセスを描写するフローチャートである。
【図８】図８は、フラッシュデバイスにおけるデータ構成機構を描写する図である。
【発明を実施するための形態】
【００１７】
本発明の一例は、以下の図面および本発明の具体的な実施例に関する図面において開示される。置換可能な実施例は、本発明の範囲を超えることなく創作し得る。加えて、本発明に係る良く知られた要件は、詳細に記載せず、または本発明の関連する詳細を不明確にしないように省略される。
【００１８】
ここで、”見本的に（exemplary）”の語は、ここでは”例示、事例、又は実例として働く”という意味に用いられる。”見本的に（exemplary）”本明細書において記述されたいずれの実施例又は図面も、必ずしも、望ましいもの、他の実施例又はデザインよりも効果的なものと考慮されるべきではない。同様に、”本発明の実施例（embodiments of the invention）”の語は、本発明の全ての実施例が含む議論に関する特徴，効果，または動作モードに限定されない。”マジックナンバー（magic numbers）”の語は、ここでは、最小限度のアルゴリズムに基づいて決定される数により定義されるように用いられ、様々な実施例におけるメモリ読み出しエラーと関係ないように用いられる。”外部メモリ（external memory）”の語は、ここでは、処理装置の領域以内に配置されないメモリデバイスの意味に用いられ、それは換言すると処理装置と同じダイ上に形成されていないメモリデバイスを意味する。”内部メモリ（internal memory）”の語は、ここでは処理装置と同じダイ上に形成されるメモリデバイスの意味に用いられる。
【００１９】
さらに、多数の実施例は、例えば、コンピュータデバイスの構成により実行される、シーケンスの表現として記述される。ここで記述される種々の動作は、特定の回路（即ち、特定用途向け集積回路（ＡＳＩＣｓ）），単一または複数のプロセッサにより実行されるプログラム命令，またはこれらの組み合わせ、により実施可能であることが認められる。加えて、ここで記述される動作のシーケンスは、対応するプロセッサにここで記述する機能性を実行させる１セットのコンピュータ命令に対応するように記憶されるどのような形のコンピュータ読取記憶媒体の内だけで実施可能であるものと認められる。従って、本発明の種々の側面は、異なった形式において実施可能であり、これらの全ては請求の趣旨の範囲内に含まれる。加えて、ここでは実施例のそれぞれを記述するために、どのような実施形態に対応する形式も記述されている、例えば、”するように構成されるロジック（回路）（logic configured to）”は記述される動作を実行する。
【００２０】
図１は、プロセッサユニット１１０，メモリコントローラ１２０，外部メモリ１３０を含み得る情報処理装置（ＩＰＤ：Information Processing Device）１００のブロック図である。外部メモリ１３０は、さまざまな異なったタイプの外部メモリを含み得る，それはＮＡＮＤフラッシュメモリ１３２，ＯｎｅＮＡＮＤフラッシュメモリ１３４，および／またはその他の知られたタイプのメモリデバイス１３６（例えば、ｍ−ｓｙｓｔｅｍフラッシュ，ＮＯＲフラッシュメモリ，ＥＥＰＲＯＭ，ＲＯＭ，ＳＤＲＡＭ，等のような）。メモリコントローラ１２０は、上述のようなメモリデバイスの異なったタイプのインターフェイスを持った複数のメモリデバイスのコントローラの組み合わせで構成し得る。ブートシーケンスが終了した後の通常動作の間、プロセッサユニット１１０は、メモリコントローラ１２０を介して、外部メモリデバイス１３０との間で読み出しおよび／または書込みデータのやり取りを行い得る。ブートシーケンスが終了した後のこのような通信は、一般的な方法において発生され得る。
【００２１】
情報処理装置１００は、例えば、画像，ビデオ，音響，ＣＤＭＡ，および／またはＧＳＭ／ＧＰＲＳプロセッサ；Ｉ／Ｏインターフェイス；等の図１に図示しないその他のデバイスを更に含み得る。情報処理装置１００は、ポータブルおよび／またはラップトップコンピュータ，パーソナルデジタルアシスタント（ＰＤＡｓ）として用いられる組み込みシステム、および／または移動通信デバイスコンピュータベースシステムのようなどのようなタイプの一部でも良い。例えば、移動通信デバイスは、移動通信システムにおいて用いられるための携帯電話でも良いし、情報処理装置１００は、携帯電話内に用いられる移動基地モデム（ＭＳＭ（登録商標））でも良い。プロセッサは、例えば、ＡＲＭ９ファミリーからのプロセッサ等のようなマイクロプロセッサおよび／またはマイクロコンローラのどのようなタイプでも良い。メモリコンローラは、単一または複数のバスインターフェイス、および／またはマルチメモリコントローラ異なった様々なメモリタイプのためのマルチメモリコントローラを含み得る。この実施例に係る図１に示すように、情報処理装置１００は、ＮＡＮＤ１３２，ＯｎｅＮＡＮＤフラッシュメモリ１３４，および／またはその他のタイプのメモリ１３６（即ち、ｍ−ｓｙｓｔｅｍフラッシュ，ＮＯＲフラッシュメモリ，等）のインターフェイスを有し得る。
【００２２】
情報処理装置１００に電源が投入されるかまたは電源サイクルが行われると、プロセッサユニット１１０は、その種々のハードウェアおよび／またはソフトウェアを初期化するためのコールドブートシーケンスを実行する。そのブートシーケンスが行われたソフトウェア／ファームウェアは複数の別々に応じたルーチンを含む得、それぞれのルーチンはブートシーケンスにおいて異なった機能を実行する。ブートシーケンスにおける最初のルーチンは第一的なブートローダー（ＰＢＬ：primary boot loader）であって、それは情報処理装置１００を、不揮発性の外部メモリデバイス１３０からのコードをアクセスしまたは／およびダウンロードするようにセットアップさせる。セットアップされた情報処理装置１００は、識別マーカーを含み得る。ＰＢＬは、ＭＳＭ（登録商標）における様々なチップセットのためのチップ上のブートＲＯＭに格納され得る。ＰＢＬは、プロセッサユニット１１０がリセットから開放される時に、方向づけられ得る。コールドブートの間にプロセッサユニット１１０により実行されると、ＰＢＬはハードウェアの情報処理装置１００を初期化し，プロセッサユニット１１０内の内部ＲＡＭまたは外部ＲＡＭを初期化し，不揮発性外部メモリデバイス１３０を検出し，不揮発性外部メモリから構成データをロードし入力し，サブシーケンスブートルーチンをロードする。
【００２３】
一実施例において、ＰＢＬ１００は、ＮＡＮＤフラッシュメモリ１３２，ＯｎｅＮＡＮＤフラッシュメモリ１３４，および／またはＮＯＲフラッシュメモリ（図示せず）を含む不揮発性外部メモリ１３０において構成情報として用いられるメモリインターフェイスを構成する。メモリコントローラ１２０は、ＮＡＮＤデバイスおよびＯｎｅＮＡＮＤデバイスを含む種々のメモリデバイスが有する異なるインターフェイスデータをサポートすることが可能である。外部メモリデバイス１３０においてどのようなデータに対しても対応するために、メモリコントローラ１２０は外部メモリデバイスのタイプおよびそのアクセスの仕方を認識する必要がある。情報処理装置１００は、使用される不揮発性メモリデバイスのタイプ，そのデバイスにあるデータにアクセスするためのプロトコル、およびデバイスのインターフェイスのバス幅を認識し得る。例えば、もし外部不揮発性メモリがＮＯＲフラッシュメモリである場合、情報処理装置１００は、ＮＯＲフラッシュメモリのサイズ（ＮＯＲフラッシュメモリにアクセスするために必要とされるアドレスの数を検出するため），インターフェイスのデータバス幅，およびデバイスにあるデータのアクセスの仕方について知る必要がある。ＮＡＮＤ，ｏｎｅＮＡＮＤ，ｍ−ｓｙｓｔｅｍ，およびｓｕｐｅｒＡＮＤフラッシュデバイスについても、情報処理装置１００は、ページ／セクタサイズ，ブロックサイズ，インターフェイスのバス幅，およびデータにアクセスするためのプロトコルについて知る必要がある。このことは、外部メモリデバイス１３０のページサイズおよびバス幅を検出することにより達成し得る。一旦これが行われると、メモリコントローラ１２０は適切に構成されるため、プロセッサ１１０を外部メモリデバイス１３０のどのようなページに対してもアドレスさせることができる。開示の様々な実施例は、情報処理装置１００が１３０に接続されるフラッシュデバイスに適切にアクセスするようにメモリコントローラ１２０を構成し得るように、フラッシュデバイスに基づくページ／セクタのページ／セクタサイズの検出を実行し得る。このことは、接続されるフラッシュサイズ（即ち、ページサイズ，ブロックサイズ，およびインターフェイス幅）のために、実行され得る。
【００２４】
アクセスプロトコルは、ページサイズ５１２バイト以下であるか５１２バイト以上であるかのように、ＮＡＮＤおよびｓｕｐｅｒＡＮＤデバイスにおいて相違し得る。ＮＡＮＤフラッシュデバイスにアクセスするために、情報処理装置１００は、それがそのデバイスにアクセスするためのプロトコルを訂正することを使用できるように、そのデバイスのページサイズが５１２バイト以上であるか否かを知る必要がある。このステップは、もし情報処理装置１００がサポートする必要があるＮＡＮＤ／ｓｕｐｅｒＮＡＮＤフラッシュデバイスのページサイズが５１２バイトよりも大きい場合だけであるときには、省略することができる。情報処理装置１００が訂正的にデータにアクセスすることができるように、インターフェイスバス幅（８−ビット／１６−ビット，またはこれ以上）を検出することも、同様に、実行し得る。もし情報処理装置１００がフラッシュデバイスのバス幅の固定値だけをサポートする必要がある場合には、このステップも省略することができる。ＮＡＮＤフラッシュデバイスサイズの検出のためのアプローチの一例、５１２バイト以上であることおよびインターフェイスバス幅を検出することは、２００５年９月２０日に出願された米国特許出願１１／２３１，３８９号に開示され、米国特許公報２００７／００６７５２９号として発行されたものの全体に組み込まれている。この詳細は、簡単には下記のように記載される通りである。
【００２５】
ハードウェアページサイズ検出
この発明の様々な実施例は、ハードウェアへのアプローチに基づいて、外部メモリ１３０のページサイズを評価することを含み得る。このアプローチは、ページサイズがより小さいページサイズ（５１２バイトより小さいか）であるか、より大きいか、同じであるか、より大きいページサイズ（５１２バイトより大きいか）であるかを検出することができる。ハードウェアページサイズ検出は、メモリコントローラ１２０により実行され得、これは、外部メモリ１３０にある初期化コマンドを読み出すことを第一的に実行することに実行され得る。その後、メモリコントローラ１２０は、メモリデバイス１３０が、ビジィ（ＢＳＹ）信号をチェックすることによりメモリデバイス１３０がコマンドを読み出すことを実行しているか否かを検出し得る。もしメモリデバイス１３０がビジィである場合、メモリデバイスはより小さいページサイズを有する。一方、もしメモリデバイス１３０がビジィでない場合、メモリデバイスはより大きなページサイズを有する。この振る舞いは、大きなページサイズのデバイスが読み出し動作のために２つの読み出しコマンド（読み出し初期化コマンドおよび読み出し開始コマンド）を必要であって、より小さいページサイズを有するメモリデバイスが信号コマンドまたはオプコード（読み出し初期化コマンド）を読み出すために反応することができるために、発生する。ビジィ状態に移行するまでに、大きなページサイズのデバイスは、読み出し開始コマンドが発行されるまで、その読み出し開始コマンドを待つ。メモリコントローラ１２０は、その相違を検出し、および接続されるＮＡＮＤ／ｓｕｐｅｒＡＮＤフラッシュデバイスが大きなページであるか否かを判定する。
【００２６】
ハードウェアページサイズ検出の一例は、以下のようなＮＡＮＤ型フラッシュメモリの情報に示される。外部メモリデバイス１３０がＮＡＮＤ型フラッシュメモリ１３２である場合、より小さなページサイズは５１２バイトかそれよりも小さく、より大きなページサイズは５１２バイトよりも大きい（即ち、２Ｋバイトかそれよりも大きい）。
【００２７】
５１２バイトのページを有するＮＡＮＤメモリは、次の一般的な読み出しコマンドシーケンスを用いる：
・読み出し初期化コマンド（１サイクルコマンド）；および
・データ／ページアドレスコマンド（３，４，５，またはこれ以上のサイクル）（もしこれ以上のアドレスサイクルがデバイスにより発行されると、デバイスはまず始めに要求されるアドレスを受け取り、過去のアドレスサイクルを無視する）
ある期間の内でアドレスサイクルが発行される後でマイクロ秒後しかなかったとしても、デバイスは、それがリードコマンドを実行するためのビジィ信号を主張することによりビジィ状態に移行する。もしデバイスがビジィ信号による反応を示すなら、それはより小さなページ（５１２バイトより小さい）のデバイスである。
【００２８】
５１２バイトよりも大きな（即ち、２Ｋバイトページサイズよりも大きな）ＮＡＮＤメモリは、アドレスサイクルの後、ビジィ状態に移行することはない。これらのデバイスは、第２読み出しコマンド、またはビジィ状態に移行するためのオプコードを必要とする。さらに、これらのデバイスの読み出しコマンドシーケンスは：
・読み出し初期化コマンド（１サイクルコマンド）；
・データ／ページアドレスコマンド（３，４，５，またはこれ以上のサイクル）（もしこれ以上のアドレスサイクルがデバイスにより発行されると、デバイスはまず始めに要求されるアドレスを受け取り、過去のアドレスサイクルを無視する）；および
・読み出し開始コマンド（１サイクルコマンド）、である。
【００２９】
ある期間の内でアドレスサイクルが発行される後でマイクロ秒後しかなかったとしても、デバイスは、それがリードコマンドを実行するためのビジィ信号を主張することによりビジィ状態に移行する。
【００３０】
メモリコントローラ１２０は、ＮＡＮＤ／ｓｕｐｅｒＡＮＤデバイスページサイズを検出するために、上記の機構を使用し得る。コントローラはステートマシン内で次のようなプロセスを実行し得る：１）デバイスをリセットする；２）読み出しコマンドを発行する；３）アドレスサイクルを発行する；４）わずかマイクロ秒以下の時間の間待機する；５）デバイスがビジィ状態に移行しているか否かの決定をチェックし、そしてもしビジィ状態に移行した場合には、デバイスは５１２バイトまたはそれより小さなページサイズを有する；６）もしデバイスがビジィ状態に移行していない場合には、スタートコマンドを発行する；７）わずかマイクロ秒以下の時間の間待機する；８）デバイスがビジィ状態に移行しているか否かの決定をチェックし、そしてもしビジィ状態に移行した場合には、デバイスは５１２バイトより大きな（即ち、２Ｋバイトより大きな）ページサイズを有する。
【００３１】
ページサイズの検出の後、メモリコントローラ１２０はすぐに、８−ビットモードにおいて（例えば、接続されるデバイスが１６−ビットかそれよりも大きい場合であっても、コントローラはデバイスから８−ビット以下のデータを用いる）読み出しデータ転送を行い得る。フラッシュデバイスからのデータ読み出しは、バスサイズおよびフラッシュのあらゆる他のパラメータの検出に用いることができる。バス幅の検出は、以下のさらに細かく説明される。上述したように、第１ページにおけるデータは、ランダムエラーの確立を低減させるための固有の数のフォーマット（即ち、マジックナンバー）において記憶される。マジックナンバーは、たとえエラー結果の数が他のマジックナンバーでないような場合であっても、選択される。情報処理装置は、そのようなランダムエラーを、あたかも実行されるマジックナンバーを認識しているかのように検出し、もしデータが第１ページ（ページサイズ検出によりデータ転送された）において訂正されない場合には、第一的なブートローダー（ＰＢＬ）はそのデバイス（そのデバイスの異なった位置における冗長ページ）から他のページを読み出すことができる。ページサイズ検出なしに、第一的なブートローダーは、更に進行することができず、エラー状態が発生したことを報告する。
【００３２】
ハードウェアページサイズ検出は、外部メモリデバイス１３０のページサイズが小さい（即ち、５１２バイトかそれよりも小さいか）か，大きいか，それ以上のページサイズか（即ち、２Ｋバイトかそれよりも大きいか）どうかを判断することができるだけである点で、制限される。実施例は、ここでは、ソフトウェアによるページサイズ検出技術を活用する場合を説明するが、これはこの問題を解決するためのハードウェアにおけるアプローチとの組み合わせにおいても適用可能である。
【００３３】
バス幅検出
図２Ａは、バス幅を決定するために用いることができ、メモリデバイスに格納されるデータ構造の一例の図である。外部メモリの様々なタイプは異なったワードサイズを活用するため、バス幅は、第一的なブートローダーにおけるブートシーケンスの間に、決定される必要がある。バス幅は、メモリデバイス１３０上のデータ構造において記憶されるデータを用いて、決定されても良い。この決定は、与えられるバス幅を用いて読み出した後、コードワードをチェックすることにより実行される。用いられる狭いバス幅を読み出したとき、第１コードワードはそのままで返信される。しかしながら、広いバス幅が用いられるときには、そのコードは、変更され得る（例えば、図２Ｂにおいて示すように、第１コードワードは、第２コードワードに交換配置され得る）。生成されたリードコマンドの数がいくつであるのかをチェックすることにより、メモリデバイス１３０のバス幅が決定され得る。
【００３４】
さらに、図２Ａに示すように、データ構造は、一つまたはそれ以上のコードワード２１０，２２０を含み得る。コードワードは、外部メモリ１３０の第１ブロック内の第１ページ２００の第１の８バイトにおいて書き込まれ得る。コードワード２１０は、８＿ビット＿マジックナンバー（8_bit_MagicNumber）として記述され、コードワード２２０は、参照マジックナンバー（Config Magic Number）として記述される。ページの残りは、全てのページ（0xFF）を含む。エラー訂正符号（ＥＣＣ）はこのプロセスの間実行することができないので、そのコードワードは、特にエラー読み出しを最小化するために、数を選択され得る。それらとして用いられる数のあるクラスは、最小の重さのアルゴリズムとして用いられるように生成される。これらの数は”マジックナンバー”として知られ、エラー読み出し訂正を低減することができる。エラー読み出しを回避することができるその他の数も用いられる。
【００３５】
外部デバイス１３０としてＮＡＮＤおよび／またはＯｎｅＮＡＮＤデバイスを挙げるこの発明の実施例において、以下の例を挙げて説明する。現状のＯｎｅＮＡＮＤフラッシュデバイスは、１６ビットが利用できるだけであり、メモリコントローラ１２０は、ＯｎｅＮＡＮＤデバイスのインターフェイスの設定により１６ビットに設定されている。この実施例において開示された技術は、必要な場合にはＯｎｅＮＡＮＤデバイスのページサイズの検出として適用することが可能である。しかしながら、メモリコントローラは、初期設定の間では８ビットに設定されている。フラッシュデバイスのバス幅が８または１６ビットまたはそれ以上であるかを検出するために、マジックナンバーとして記述される８ビットの固有のナンバーが、参照データを含むページのまず始めに配置される。図２Ａに示すように、始めの４バイトデータ構造２１０（8_bit_MagicNumber）はマジックナンバー0x83838383を包含し、次の４バイトデータ構造２２０（参照マジックナンバー）はマジックナンバー0x73D71034を包含し、一方でページ残りはデータ0XFFを包含する。（上述した）ハードウェアページサイズ方法の間、ソフトウェアは、参照データ中のブロック０のページ０から読み出したデータの４バイトを読み出すように、コンローラ１２０を実行させる。データのその４バイトが読み出されると、ＥＣＣエンジンは無効とされる。マジックナンバー（最小の重さのアルゴリズムとして使用される）は、データが読み出されるときに選択され、そのエラーは相関関係がない。
【００３６】
図２Ｂは、データ構造２００にあるデータが、どのように８ビットバス幅および１６ビットバス幅を有するメモリデバイスから読み出されるかを示す図である。データ読み出しされた４バイトが異なったデバイス幅のデバイスのために異なったものであるために、読み出し動作の後、受け取られたそのデータは、メモリデバイス１３０のバス幅を決定するものとして用いられ得る。デバイスが８−ビットバス幅として用いるための第１の４バイトを読み出したとき、第１コードワードは変更されることなく読み出される。しかしながら、デバイスが１６ビットバス幅を有するときには、読み出しコマンドは配置転換される。
【００３７】
さらに特には、８−ビットフラッシュデバイスのために、オリジナルの８＿ビット＿マジックナンバーの値0x83838383は返信される必要がある。１６−ビットフラッシュデバイスのために、そのフラッシュメモリは、読み出し動作の間、１６ビットの値を返信する必要がある。この交換配置は、メモリコントローラ１３０が８−ビット幅バスを有するように設定されるため、最小の有用な８ビットを読み出すだけおよび最大の有用な８ビットを無視するように、１６−ビットデバイスにおいて発生する。従って、コントローラは、0x73D71034の配置変換された値を読み出す。返信されたデータに基づいて、情報処理装置は、バスインターフェイス幅を検出する。この実施例で与えられる例においては８−ビットおよび１６−ビットだけについて開示したが、同様な技術は、より多ビット幅を有するインターフェイスについても適用可能である。
【００３８】
ソフトウェアページサイズ検出
図３は、メモリデバイス１３０のバス幅およびページサイズの決定に用いられるメモリデバイス内のデータ構造３００の一例を示す図である。自動的なページサイズの決定を実行するために、メモリデバイス１３０は、メモリデバイス１３０のページサイズを決定するために加えられる”ダミーデータ”のセクションを有する。それぞれのセクション３０５は、ダミーデータをセクションの残りを持って、３つのコードワード３１０〜１３０を含み得る。ダミーデータは、フラッシュデバイスが製造された後に、全てが”１”のデータまたは初期状態のデータとして設定される。その状態は、データとして記憶されるだけの３つマジックナンバー（8_BIT_MagicNumber, Config Magic Number, Auto Detection Magic Number）がエラー訂正を行うことができるようにその値であることを認識される必要がある。コードワード３１０、３２０は、上述のように、バス幅を決定するために用いられる。第３コードワードは、メモリデバイス１３０のページサイズを決定するためにアルゴリズムを用いることにより、自動的に検出製造される。その上、図３は、４バイトとしてのコードワードのページサイズの一例を示している。様々な実施例において、コードワードのそれぞれは読み出しエラーを最小化するためにマジックナンバーとされ得る。アルゴリズムの詳細は、以下の図５の説明において説明する。
【００３９】
第一的なブートローダー１００によりエンコードされるページサイズの内容は、情報処理装置の製造時において固定される最大（MAX）および最小（MIN）許容ページサイズとして表されるものとして認識され、いくつかの場合のおいてこれらのナンバーは情報処理装置が製造後にプログラム可能であるが、顧客に送られた後において固定化される。MAXおよびMIN許容ページサイズは、加えられることが必要なセクションのナンバーを決定するようにサポートされる。セクションのナンバーは、次のように表される：
セクションのナンバー＝  (MAX PAGE SIZE / MIN PAGE SIZE)
本発明の実施例において、それぞれのセクション３０５の第１の１２バイトは、図３に示すように、マジックナンバーとして記号化される。セクション３０５の第１の８バイトは、8_Bit_Magic number ３１０ および Config Magic Number ３２０を包含し、バス幅検出も上述したものと同様である。マジックナンバーの他の４バイトは自動検出マジックナンバーであり、第１の８バイトの後に配置される。ページサイズ検出ソフトウェア方法は、自動検出マジックナンバーを、以下に説明するアルゴリズムを用いてページサイズをドライブさせるために、チェックするものである。
【００４０】
図４は、メモリデバイス内に含まれる図３に示される例示的なデータ構造が、どのように異なったページサイズを有するのかを示す図である。メモリデバイス１３０のページサイズが変化すると、それぞれのページに記憶されるセクションのナンバーも変化する。全てのページに適切なページのナンバー（ページ数）（Number of pages）は、適用されるページサイズの次の式を用いて決定され得る：
ページのナンバー = (Number of sections) * (MIN Page Size)
(Device Page Size)
ナンバーの一例は、異なるページサイズのために与えられる。それぞれの例は、図４に示されるように、データ構造は、３つのページサイズ，５１２Ｋバイト（４１０），２Ｋバイト（４２０），４Ｋバイト（４３０）と結びついて示される。数値の例は、次のように示される。
【００４１】
MAXページサイズ＝４Ｋバイト，MINページサイズ＝５１２バイト，セクションのナンバーは８として与えられる。これは、全ての８セクションが合致するためにページのナンバーを示される：
５１２バイトページサイズのための８ページ（デバイスのページサイズは５１        ２バイトであるので、データの５１２バイトの８セクションが合致するために８        ページが必要である）；
２Ｋバイトページサイズのための２ページ（デバイスのページサイズは２Ｋバ        イトであるので、データ（ページあたり４５１２バイト）の５１２バイトの８セ        クションが合致するために２ページが必要である）；さらに、
４Ｋバイトページサイズメモリデバイスのための１ページ（データの５１２バ        イトの８セクションは４Ｋバイトページデバイスのためのシングルページにおい        て）
以下の図５に示すように、ページサイズのナンバーは、プロセッサユニット１１０により自動検出マーカー（図４において、”自動検出ナンバー”として示されている）をカウントすることにより直接的に決定される。
【００４２】
図５は、フラッシュデバイスのページサイズを決定するための例示的なプロセス５００を描写するフローチャートである。このプロセスは、メモリデバイス１３０をサポートするためのページサイズの範囲を決定する（即ち、MIN値およびMAX値を決定する）ことにより、開始する。MIN値およびMAX値は前もって与えられ得る値である。続いて、マークされるセクションのナンバーは、MAXからMINページサイズの値を取得することにより決定される（ブロック５１０）。続いて、ハードウェアページサイズ検出は、メモリコントローラ１２０が、メモリデバイス１３０が５１２バイトよりも大きいページサイズを有するか否かを決定することにより、実行される（ブロック５２０）。続いて、メモリデバイス１３０のバス幅は、プロセッサユニット１１０により検出される（ブロック５３０）。続いて、プロセッサユニット１１０は、自動検出マーカーを有するページのナンバーを検出する。プロセッサユニット１１０は、自動検出マーカーを有するページのナンバーを検出するために、読み出し動作のシーケンスを実行する（ブロック５４０）。続いて、プロセッサユニット１１０は、マークされた自動検出を有する読み出しページのナンバーに基づき、メモリデバイス１３０のページサイズを計算する（ブロック５５０）。ここでは、情報処理装置１００がＮＡＮＤフラッシュデバイスにアクセスする際には、ハードウェアページサイズ検出は、ページサイズが５１２バイトよりも大きいか否かおよびデバイスに読み出しコマンドを発行する情報としてこれを用いることを検出することとして用いる点に留意すべきである。
【００４３】
メモリデバイス１３０にあるデータはページに格納されているため、メモリコントローラ１２０からメモリデバイス１３０へアクセスすることは、全体のページにアクセスする結果となる。その結果、メモリデバイス１３０と関連する書込みまたは読み出しは、単位で行われる。大きなページサイズを有するメモリデバイス１３０は、より大きなセクション３０５のナンバーを格納することができるので、メモリデバイス１３０からデータを読み出すメモリコントローラ１２０は、マジックナンバーを包含するいくつかのページを読み出す。もしメモリデバイス１３０の第１の２つページがマークされる訂正自動検出（即ち、マジックナンバー）としてマークされると、その後にプロセッサユニット１１０は、下記に示す式（512 * 8/2 = 2 K）で用いられる２Ｋページサイズを有するデバイスであるということを結論づける。もしマークされた自動検出が第１ページにだけには表されているが、第２ページにはない場合、デバイスは、下記に示す式（512 * 8/1 = 2 K）に基づき、４Ｋバイト以上のページサイズを有することを結論づける。
【００４４】
デバイスのページサイズ（Device Page Size）は、下記の式を用いて発見することができる：
デバイスのページサイズ = (Min Page Size) * (No of Sections Marked)
No of Pages Read
一旦、メモリデバイスのページサイズおよびバス幅が決定されると、メモリコントローラ１２０は、訂正された設定で構成される。
【００４５】
図６は、メモリデバイスと関連するパラメータを決定するためのその他例示的なプロセス６００を示すフローチャートである。まずはじめに、最大（MAX）ページサイズおよび最小（MIN）ページサイズが、典型的な事前に定義される値として取得される（ブロック６１５）。続いて、自動的なページ決定マーカーとしてマークされたセクション数が計算される（ブロック６２０）。続いて、必要な場合に、ハードウェアページサイズ決定が、ページサイズが５１２バイトよりも大きいか否かを決定するように実行され（ブロック６２５）。必要でない場合には、このステップは、省略することも可能である。
【００４６】
続いて、ブロック６３０が、次のアクションを実行する：マジックナンバーとしてマークされた最大ページを、マークされた最大ページ（MAX pages marked）としてセットする；マジックナンバーのためのバイトロケーションを、８にセットする；そして、ポインタロケーションをデバイスからの記憶データにセットする。続いて、マジックナンバーとしてマークされるページ数を決定するファンクションコール（この詳細は、図７において示され関連して説明される）がコールされる。（ブロック６３５）。続いて、ファンクションコールは、自動検出マジックナンバーを有するページ読み出しのナンバーを、返信する。続いて、条件文は、ファンクションコールにより返信されるページ数がゼロか否かをチェックすることを実行する（ブロック６４０）。続いて、だから、もし読み出されたデータ構成としてのページ数がゼロ（０）にセットされた場合（ブロック６４５）、プロセスは元に戻る。もしブロック６４５においてマークされたページ数がゼロでない場合、デバイスページサイズが計算され（ブロック６５０）、そしてその後プロセスは繰り返される。
【００４７】
図７は、メモリデバイスと結びついたパラメータをカウントするための例示的なプロセスを描写するフローチャートである。まずはじめに、次のパラメータが取得される：マジックナンバーとして検出される最大ページ、マジックナンバーのためのバイトロケーション（この値を”ｘ”としてセット（例えば、そのロケーションは８として示される））、データを記憶するポンタロケーションがデバイスから読み出される（ブロック７１５）。続いて、読み出されたページ数が、０に初期化される（ブロック７２０）。続いて、条件文は、読み出されたページ数がマジックナンバーとしてマークされた最大ページ以下であるか否かを決定することを、実行する（ブロック７２５）。続いて、だからもしページが読み出されると（ブロック７３０）、続いて他の条件文は、読み出しページのバイト”ｘ”がコードワードとしてマークされたものであるか否かをチェックするように実行する（ブロック７３５）。続いて、だからもしページカウンタがインクリメントされた場合（ブロック７５５）、プロセスはブロック７２５に戻って繰り返される。もしブロック７３５における条件がＮｏである場合、読み出されたページ数がマジックナンバーとしてマークされた最大ページ以下であるか否かという他の条件によるチェック実行される（ブロック７４０）。もし、ブロック７４０における実行された条件がＹｅｓの場合、プロセス７００は、読み出しページ数を繰り返す（ブロック７５０）；そしてもし、ブロック７４０における実行された条件がＮｏの場合、誤り制御ハンドラーが呼び出される。また、その誤りハンドラーは、ブロック７２５において実行された条件がＮｏの場合であっても、呼び出される。
【００４８】
メモリコントローラ１２０は、ブロック７３５におけるマジックナンバーのためのバイトｘをチェックする前に、ブロック７３０における読み出しデータにおいてエラー訂正を実行し得る。メモリコントローラ１２０は、エラー訂正をチェックの間、データを全体的にチェックする。エラー訂正のチェックの結果は、次のことを含む。コントローラはデバイスからの読み出しデータに傷がないかおよびエラーがないとして検出されたかを検出する。この場合、プロセスは正しく続けられる。その代わりに、コントローラ１２０は、検出がされたエラー数が、エラー訂正可能な数の最大よりも小さいか否かを（ＥＣＣアルゴリズムに基づいて）検出することも可能である。その代わりに、コントローラ１２０は、訂正できないエラーを検出することも可能である。この場合、コントローラ１２０は、エラーハンドラーにプロセッシングコントロールを返す。エラー訂正は、ランダムエラーに対してデバイスに格納されるマジックナンバーのために、特別なプロテクションが与えられる。
【００４９】
開示される様々な実施例は、ページ検出プロセスの全体が一般的なＥＣＣアルゴリズムと同様にマジックナンバーによりプロテクトされるように、ＥＣＣ動作を実行可能である。このアプローチの組み合わせは、フラッシュデバイスのページサイズを決定するより有効な方法を提供することが可能である。
【００５０】
図８は、フラッシュデバイスにおけるダミーデータを有するデータ構造８００を描写する図である。このシステム要件に基づいて、参照データは、図８に示すように、最後の自動検出マジックナンバーと参照データとの間に、ページ自動検出マジックナンバーまたはダミーデータの複数ページが加えられた次の最後のページに格納される。ダミーデータを有するページ数は、ページサイズを決定した後、情報処理装置がダミーデータページを省略でき、参照データを読み出すことができるように、情報処理装置のために事前に決定される。図８において、始めの２ページ（ページ０およびページ１）のみを検出した情報処理装置は、自動検出マジックナンバーを有する。上記の例に説明したように、もし最小ページサイズが５１２バイトである場合（the MIN page size = 512 Bytes）、自動検出マジックナンバーを有するセクション数は８，上記式(512 * 8/2)に基づきデバイスページサイズは２Ｋバイト、となる。それはまた、ダミーデータの２ページを有し、そのため情報処理装置は、第２的なブートコードを読み出すためにページ数４を飛び越える。情報処理装置は自動検出マジックナンバーを有する最後のページの後にダミーがないデータを挿入することが可能であり、この場合、図８に示すように、情報処理装置は、ページ２から第２的なコードの読み出しを開始する。
【００５１】
当業者であれば、情報や信号がどのように様々に異なったテクノロジーや技術を用いて表されても、十分に理解するであろう。上記開示を通じて記述される、例えば、データ，装置，コマンド，情報，信号，ビット，シンボル，およびチップ等は、電圧，電流，電磁気，波長，磁気，磁場，または粒子，光学，または粒子，またはこれらのどのような組み合わせ等であっても表現され得る。
【００５２】
さらに、当業者であれば、この実施例に関連して開示された様々な実施に係る論理ブロック，モジュール，回路，およびアルゴリズムが、電気的ハードウェア，コンピュータソフトウェア，またはこれらの組み合わせ、として実施可能であることを十分に理解するであろう。簡単に説明するために、ハードウェアおよびソフトウェア，様々な図中の要素，ブロック，モジュール，およびステップの構造は、一般的な機能な表現において上記のように記述した。そのような機能が、特別なアプリケーションやデザインに依存するハードウェアかまたはソフトウェアとして実施されているか否かにかかわらず、利用されるシステム全体を含む。当業者は、それぞれの特別なアプリケーションのための様々な方法において機能的な上記内容を実施可能であるが、そのような実施例は、この発明の範囲として無関係であるとされるべきではない。
【００５３】
ここで開示された実施例との関連として記載された方法，および／またはシーケンスは、ハードウェアにおいて，プロセッサにより実行されるソフトウェアモジュールにおいて，またはこれら２つの組み合わせにおいて直接的に具体化することが可能である。ソフトウェアモジュールは、ＲＡＭメモリ，フラッシュメモリ，ＲＯＭメモリ，ＥＰＲＯＭメモリ，ＥＥＰＲＯＭメモリ，レジスタ，またはこの分野において知られるいずれの記憶媒体内に格納され得る。記憶媒体の一例は、プロセッサが読み出しおよび書込み可能な情報フォームでプロセッサへ組み込まれた記憶媒体がある。換言すれば、記憶媒体は、プロセッサに不可欠なものである。
【００５４】
従って、この発明に係る実施例は、メモリページサイズの自動検出方法を具体化するコンピュータ記憶媒体を含み得るものである。従って、本発明は、上記の説明した実施例に限定されることはなく、ここで説明した機能を実行するためのいかなる手段も本発明の実施例において含まれる。
【００５５】
本発明の実施例として示した上記開示の全体は、添付の特許請求の範囲により区画され本発明の範囲から外れることなく様々な変形や修正が可能である点を留意すべきである。ここで説明した発明と関連する実施例における特許請求の範囲に係る方法の機能，ステップおよび／または動作は、この特別な順序において、必ずしも実行される必要はない。さらに、本発明の要素は、一例において説明されクレームされているが、もしその一例の限定が明確に記載されていないのであれば、複数例は考えられる。
【図１】
2010527484.tif 000003
【図２Ａ】
2010527484.tif 000004
【図２Ｂ】
2010527484.tif 000005
【図３】
2010527484.tif 000006
【図４】
2010527484.tif 000007
【図５】
2010527484.tif 000008
【図６】
2010527484.tif 000009
【図７】
2010527484.tif 000010
【図８】
2010527484.tif 000011
【国際調査報告】
2010527484.tif 000012
2010527484.tif 000013