特許第6190045号(P6190045)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ クアルコム,インコーポレイテッドの特許一覧

特許6190045高性能でかつ低コストのフラッシュ変換層のためのシステムおよび方法
<>
  • 特許6190045-高性能でかつ低コストのフラッシュ変換層のためのシステムおよび方法 図000002
  • 特許6190045-高性能でかつ低コストのフラッシュ変換層のためのシステムおよび方法 図000003
  • 特許6190045-高性能でかつ低コストのフラッシュ変換層のためのシステムおよび方法 図000004
  • 特許6190045-高性能でかつ低コストのフラッシュ変換層のためのシステムおよび方法 図000005
  • 特許6190045-高性能でかつ低コストのフラッシュ変換層のためのシステムおよび方法 図000006
  • 特許6190045-高性能でかつ低コストのフラッシュ変換層のためのシステムおよび方法 図000007
  • 特許6190045-高性能でかつ低コストのフラッシュ変換層のためのシステムおよび方法 図000008
  • 特許6190045-高性能でかつ低コストのフラッシュ変換層のためのシステムおよび方法 図000009
  • 特許6190045-高性能でかつ低コストのフラッシュ変換層のためのシステムおよび方法 図000010
  • 特許6190045-高性能でかつ低コストのフラッシュ変換層のためのシステムおよび方法 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6190045
(24)【登録日】2017年8月10日
(45)【発行日】2017年8月30日
(54)【発明の名称】高性能でかつ低コストのフラッシュ変換層のためのシステムおよび方法
(51)【国際特許分類】
   G06F 12/02 20060101AFI20170821BHJP
   G06F 12/10 20160101ALI20170821BHJP
   G06F 12/00 20060101ALI20170821BHJP
【FI】
   G06F12/02 570A
   G06F12/10 505B
   G06F12/00 597U
【請求項の数】56
【全頁数】35
(21)【出願番号】特願2016-513995(P2016-513995)
(86)(22)【出願日】2014年5月9日
(65)【公表番号】特表2016-522942(P2016-522942A)
(43)【公表日】2016年8月4日
(86)【国際出願番号】US2014037531
(87)【国際公開番号】WO2014186232
(87)【国際公開日】20141120
【審査請求日】2017年5月9日
(31)【優先権主張番号】13/892,433
(32)【優先日】2013年5月13日
(33)【優先権主張国】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】507364838
【氏名又は名称】クアルコム,インコーポレイテッド
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100163522
【弁理士】
【氏名又は名称】黒田 晋平
(72)【発明者】
【氏名】デクスター・チュン
(72)【発明者】
【氏名】アナンド・スリニヴァサン
(72)【発明者】
【氏名】ヒュンスク・シン
(72)【発明者】
【氏名】スティーブン・ヘーニヘン
【審査官】 塚田 肇
(56)【参考文献】
【文献】 特開2012−243287(JP,A)
【文献】 特開2012−198811(JP,A)
【文献】 特開2004−288150(JP,A)
【文献】 特開2001−243110(JP,A)
【文献】 米国特許出願公開第2012/0179859(US,A1)
【文献】 米国特許出願公開第2010/0312947(US,A1)
【文献】 米国特許出願公開第2011/0296088(US,A1)
【文献】 米国特許出願公開第2014/0136765(US,A1)
【文献】 米国特許第6484218(US,B1)
【文献】 米国特許第6014724(US,A)
【文献】 米国特許出願公開第2005/0138464(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 12/02
G06F 12/10
(57)【特許請求の範囲】
【請求項1】
フラッシュメモリデバイスのフラッシュ変換層(FTL)の性能を高くするための方法であって、
前記フラッシュメモリデバイスによってホストデバイスの揮発性メモリに前記フラッシュメモリデバイスのFTLテーブルのコピーを記憶するステップであって、前記フラッシュメモリデバイスと前記ホストデバイスは、別々に収納されたデバイスを備え、通信バスを介して通信接続可能である、ステップと、
前記フラッシュメモリデバイスによって前記ホストデバイスの前記揮発性メモリに記憶された前記FTLテーブルの前記コピーへのアクセスを受け取るステップと、
前記フラッシュメモリデバイスによって、前記フラッシュメモリデバイスと前記ホストデバイスの前記揮発性メモリとを通信接続する前記通信バスをバス支配するステップと、
前記バス支配された通信バスを介して前記フラッシュメモリデバイスにより、読出し操作および書込み操作のうちの少なくとも1つの部分として、前記ホストデバイスの前記揮発性メモリに記憶された前記フラッシュメモリデバイスの前記FTLテーブルの前記コピーにアクセスするステップと
前記FTLの前記コピーを前記フラッシュメモリデバイスにより前記ホストデバイスの前記揮発性メモリから検索するステップと、
前記フラッシュメモリデバイスにより、前記揮発性メモリに記憶された前記フラッシュメモリデバイスの前記FTLテーブルの前記コピーの変更により、前記フラッシュメモリデバイスの前記FTLを動的に更新するステップと、
を含む方法。
【請求項2】
前記ホストデバイスから、前記フラッシュメモリデバイス内の前記FTLテーブルのサイズに対する問合せを受け取るステップと、
前記FTLテーブルの前記サイズを前記フラッシュメモリデバイスから前記ホストデバイスに返すステップと、
前記フラッシュメモリデバイスから、前記FTLテーブルの前記サイズを前記ホストデバイスで受け取るステップと、
前記ホストデバイスによって、前記ホストデバイスの前記揮発性メモリがすべての前記FTLテーブルを記憶することができるかどうかを決定するステップと
をさらに含む、請求項1に記載の方法。
【請求項3】
前記ホストデバイスによって前記ホストデバイスの前記揮発性メモリを細分割するステップであって、細分割のサイズが前記FTLテーブルのサイズに基づくステップと、
前記フラッシュメモリデバイスによって、前記FTLテーブルの前記コピーが記憶される前記ホストデバイスの前記揮発性メモリの前記細分割の区分に対する直接メモリアクセス読出し特権を受け取るステップと、
前記フラッシュメモリデバイスによって、前記FTLテーブルの前記コピーが記憶される前記ホストデバイスの前記揮発性メモリの前記細分割の区分に対する直接メモリアクセス書込み特権を受け取るステップと
をさらに含み、前記FTLテーブルのコピーを記憶するステップが、前記フラッシュメモリデバイスによって前記ホストデバイスの前記揮発性メモリの前記細分割の区分に前記FTLテーブルの前記コピーを記憶するステップを含む、請求項2に記載の方法。
【請求項4】
前記FTLテーブルの前記コピーにアクセスするステップが、
前記フラッシュメモリデバイスの中に、論理アドレスの読出し操作要求を前記ホストデバイスから受け取るステップと、
前記フラッシュメモリデバイスによって前記読出し操作を開始するステップと、
前記フラッシュメモリデバイスによって前記FTLテーブルの前記コピーの少なくとも一部を読み出すステップと、
前記フラッシュメモリデバイスによって、前記論理アドレスに対応する物理アドレスを決定するステップと、
前記フラッシュメモリデバイスによって、前記フラッシュメモリデバイスのメモリの前記物理アドレスに記憶されているデータを検索するステップと、
前記フラッシュメモリデバイスによって前記データを前記ホストデバイスに返すステップと
を含む、請求項1に記載の方法。
【請求項5】
前記FTLテーブルの前記コピーにアクセスするステップが、
前記フラッシュメモリデバイスによって、論理アドレスの書込み操作要求を前記ホストデバイスから受け取るステップと、
前記フラッシュメモリデバイスによって前記書込み操作を開始するステップと、
前記フラッシュメモリデバイスによってデータを前記フラッシュメモリデバイスのメモリの物理アドレスに書き込むステップと、
前記データが書き込まれると、前記FTLテーブルの前記コピーを更新して前記フラッシュメモリデバイスの前記メモリに対してなされた変更に対応させるために、前記フラッシュメモリデバイスによって前記FTLテーブルの前記コピーに書き込むステップと、
前記フラッシュメモリデバイスによって前記書込み操作の完了通知を前記ホストデバイスに送るステップと
を含む、請求項1に記載の方法。
【請求項6】
前記フラッシュメモリデバイスによって前記FTLテーブルの前記コピーの少なくとも一部を読み出すステップと、
前記フラッシュメモリデバイスによって前記論理アドレスに対応する前記物理アドレスを決定するステップと
をさらに含む、請求項5に記載の方法。
【請求項7】
前記フラッシュメモリデバイスによって前記フラッシュメモリデバイスのSRAMを読み出すステップと、
前記フラッシュメモリデバイスによって、前記フラッシュメモリデバイスの前記メモリ内の自由記憶空間の位置を示す前記物理アドレスを決定するステップと
をさらに含む、請求項5に記載の方法。
【請求項8】
前記フラッシュメモリデバイスによって、前記ホストデバイスの前記揮発性メモリ内への前記FTLテーブルの前記コピーの記憶が完了したことを示す通知を前記ホストデバイスに送るステップをさらに含む、請求項1に記載の方法。
【請求項9】
前記フラッシュメモリデバイスによって、スケジュール、利用可能な資源および書込み操作の完了からなるグループから選択されるパラメータに基づいて、前記FTLテーブルの前記コピーを使用して前記フラッシュメモリデバイスの前記FTLテーブルを更新するステップをさらに含む、請求項1に記載の方法。
【請求項10】
前記ホストデバイスによって、前記フラッシュメモリデバイスが前記ホストデバイスの前記揮発性メモリ内への前記FTLテーブルのコピーのホストキャッシングをサポートするかどうかを決定するステップをさらに含む、請求項1に記載の方法。
【請求項11】
前記ホストデバイス内で、前記FTLテーブルの前記コピーの記憶完了通知を前記フラッシュメモリデバイスから受け取るステップをさらに含む、請求項1に記載の方法。
【請求項12】
操作を実施することによってシステムに前記システムのフラッシュメモリデバイスのフラッシュ変換層(FTL)の性能を高くさせるように構成されたプロセッサ実行可能ソフトウェア命令をその上に記憶した非一時的プロセッサ可読記憶媒体であって、前記操作が、
前記フラッシュメモリデバイスによってホストデバイスの揮発性メモリに前記フラッシュメモリデバイスのFTLテーブルのコピーを記憶するステップであって、前記フラッシュメモリデバイスと前記ホストデバイスは、別々に収納されたデバイスを備え、通信バスを介して通信接続可能である、ステップと、
前記フラッシュメモリデバイスによって前記ホストデバイスの前記揮発性メモリに記憶された前記FTLテーブルの前記コピーへのアクセスを受け取るステップと、
前記フラッシュメモリデバイスによって、前記フラッシュメモリデバイスと前記ホストデバイスの前記揮発性メモリとを通信接続する前記通信バスをバス支配するステップと、
前記バス支配された通信バスを介して前記フラッシュメモリデバイスにより、読出し操作および書込み操作のうちの少なくとも1つの部分として、前記ホストデバイスの前記揮発性メモリに記憶された前記フラッシュメモリデバイスの前記FTLテーブルの前記コピーにアクセスするステップと
前記FTLの前記コピーを前記フラッシュメモリデバイスにより前記ホストデバイスの前記揮発性メモリから検索するステップと、
前記フラッシュメモリデバイスにより、前記揮発性メモリに記憶された前記フラッシュメモリデバイスの前記FTLテーブルの前記コピーの変更により、前記フラッシュメモリデバイスの前記FTLを動的に更新するステップと、
を含む、非一時的プロセッサ可読記憶媒体。
【請求項13】
前記記憶されるプロセッサ実行可能ソフトウェア命令が、前記システムに、
前記ホストデバイスから、前記フラッシュメモリデバイス内の前記FTLテーブルのサイズに対する問合せを受け取るステップと、
前記FTLテーブルの前記サイズを前記フラッシュメモリデバイスから前記ホストデバイスに返すステップと、
前記フラッシュメモリデバイスから、前記FTLテーブルの前記サイズを前記ホストデバイスで受け取るステップと、
前記ホストデバイスによって、前記ホストデバイスの前記揮発性メモリがすべての前記FTLテーブルを記憶することができるかどうかを決定するステップと
をさらに含む操作を実施させるように構成される、請求項12に記載の非一時的プロセッサ可読記憶媒体。
【請求項14】
前記記憶されるプロセッサ実行可能ソフトウェア命令が、前記システムに、
前記ホストデバイスによって前記ホストデバイスの前記揮発性メモリを細分割するステップであって、細分割のサイズが前記FTLテーブルのサイズに基づくステップと、
前記フラッシュメモリデバイスによって、前記FTLテーブルの前記コピーが記憶される前記ホストデバイスの前記揮発性メモリの前記細分割の区分に対する直接メモリアクセス読出し特権を受け取るステップと、
前記フラッシュメモリデバイスによって、前記FTLテーブルの前記コピーが記憶される前記ホストデバイスの前記揮発性メモリの前記細分割の区分に対する直接メモリアクセス書込み特権を受け取るステップと
をさらに含む操作を実施させるように構成され、前記FTLテーブルのコピーを記憶するステップが、前記フラッシュメモリデバイスによって前記ホストデバイスの前記揮発性メモリの前記細分割の区分に前記FTLテーブルの前記コピーを記憶するステップを含む、請求項13に記載の非一時的プロセッサ可読記憶媒体。
【請求項15】
前記記憶されるプロセッサ実行可能ソフトウェア命令が、前記システムに、前記FTLテーブルの前記コピーにアクセスするステップが、
前記フラッシュメモリデバイスの中に、論理アドレスの読出し操作要求を前記ホストデバイスから受け取るステップと、
前記フラッシュメモリデバイスによって前記読出し操作を開始するステップと、
前記フラッシュメモリデバイスによって前記FTLテーブルの前記コピーの少なくとも一部を読み出すステップと、
前記フラッシュメモリデバイスによって、前記論理アドレスに対応する物理アドレスを決定するステップと、
前記フラッシュメモリデバイスによって、前記フラッシュメモリデバイスのメモリの前記物理アドレスに記憶されているデータを検索するステップと、
前記フラッシュメモリデバイスによって前記データを前記ホストデバイスに返すステップと
を含むように操作を実施させるように構成される、請求項12に記載の非一時的プロセッサ可読記憶媒体。
【請求項16】
前記記憶されるプロセッサ実行可能ソフトウェア命令が、前記システムに、前記FTLテーブルの前記コピーにアクセスするステップが、
前記フラッシュメモリデバイスによって、論理アドレスの書込み操作要求を前記ホストデバイスから受け取るステップと、
前記フラッシュメモリデバイスによって前記書込み操作を開始するステップと、
前記フラッシュメモリデバイスによってデータを前記フラッシュメモリデバイスのメモリの物理アドレスに書き込むステップと、
前記データが書き込まれると、前記FTLテーブルの前記コピーを更新して前記フラッシュメモリデバイスの前記メモリに対してなされた変更に対応させるために、前記フラッシュメモリデバイスによって前記FTLテーブルの前記コピーに書き込むステップと、
前記フラッシュメモリデバイスによって前記書込み操作の完了通知を前記ホストデバイスに送るステップと
を含むように操作を実施させるように構成される、請求項12に記載の非一時的プロセッサ可読記憶媒体。
【請求項17】
前記記憶されるプロセッサ実行可能ソフトウェア命令が、前記システムに、
前記フラッシュメモリデバイスによって前記FTLテーブルの前記コピーの少なくとも一部を読み出すステップと、
前記フラッシュメモリデバイスによって前記論理アドレスに対応する前記物理アドレスを決定するステップと
をさらに含む操作を実施させるように構成される、請求項16に記載の非一時的プロセッサ可読記憶媒体。
【請求項18】
前記記憶されるプロセッサ実行可能ソフトウェア命令が、前記システムに、
前記フラッシュメモリデバイスによって前記フラッシュメモリデバイスのSRAMを読み出すステップと、
前記フラッシュメモリデバイスによって、前記フラッシュメモリデバイスの前記メモリ内の自由記憶空間の位置を示す前記物理アドレスを決定するステップと
をさらに含む操作を実施させるように構成される、請求項16に記載の非一時的プロセッサ可読記憶媒体。
【請求項19】
前記記憶されるプロセッサ実行可能ソフトウェア命令が、前記システムに、前記フラッシュメモリデバイスによって、前記ホストデバイスの前記揮発性メモリ内への前記FTLテーブルの前記コピーの記憶が完了したことを示す通知を前記ホストデバイスに送るステップをさらに含む操作を実施させるように構成される、請求項12に記載の非一時的プロセッサ可読記憶媒体。
【請求項20】
前記記憶されるプロセッサ実行可能ソフトウェア命令が、前記システムに、前記フラッシュメモリデバイスによって、スケジュール、利用可能な資源および書込み操作の完了からなるグループから選択されるパラメータに基づいて、前記FTLテーブルの前記コピーを使用して
前記フラッシュメモリデバイスの前記FTLテーブルを更新するステップをさらに含む操作を実施させるように構成される、請求項12に記載の非一時的プロセッサ可読記憶媒体。
【請求項21】
前記記憶されるプロセッサ実行可能ソフトウェア命令が、前記システムに、前記ホストデバイスによって、前記フラッシュメモリデバイスが前記ホストデバイスの前記揮発性メモリ内への前記FTLテーブルのコピーのホストキャッシングをサポートするかどうかを決定するステップをさらに含む操作を実施させるように構成される、請求項12に記載の非一時的プロセッサ可読記憶媒体。
【請求項22】
前記記憶されるプロセッサ実行可能ソフトウェア命令が、前記システムに、前記ホストデバイス内で、前記FTLテーブルの前記コピーの記憶完了通知を前記フラッシュメモリデバイスから受け取るステップをさらに含む操作を実施させるように構成される、請求項12に記載の非一時的プロセッサ可読記憶媒体。
【請求項23】
ホストデバイスであって、
第1のハウジングと、
揮発性メモリと、
前記揮発性メモリに結合された第1のプロセッサと
を備えるホストデバイスと、
前記ホストデバイスに通信バスを介して結合されたフラッシュメモリデバイスであって、
第2のハウジングと、
論理アドレスと物理アドレスとの間の変換に使用するためのフラッシュ変換層(FTL)テーブルを記憶するように構成されたフラッシュメモリと、
前記フラッシュメモリに結合された第2のプロセッサであって、
前記ホストデバイスの前記揮発性メモリに前記フラッシュメモリデバイスの前記FTLテーブルのコピーを記憶するステップと、
前記ホストデバイスの前記揮発性メモリに記憶された前記FTLテーブルの前記コピーへのアクセスを受け取るステップと、
前記通信バスをバス支配するステップと、
前記バス支配された通信バスを介して、読出し操作および書込み操作のうちの少なくとも1つの部分として、前記ホストデバイスの前記揮発性メモリに記憶された前記フラッシュメモリデバイスの前記FTLテーブルの前記コピーにアクセスするステップと
前記FTLの前記コピーを前記フラッシュメモリデバイスにより前記ホストデバイスの前記揮発性メモリから検索するステップと、
前記フラッシュメモリデバイスにより、前記揮発性メモリに記憶された前記フラッシュメモリデバイスの前記FTLテーブルの前記コピーの変更により、前記フラッシュメモリデバイスの前記FTLを動的に更新するステップと、
を含む操作を実施するプロセッサ実行可能命令を使用して構成される第2のプロセッサと
を備えるフラッシュメモリデバイスと
を備えるシステム。
【請求項24】
前記第2のプロセッサが、
前記ホストデバイスから、前記フラッシュメモリデバイス内の前記FTLテーブルのサイズに対する問合せを受け取るステップと、
前記FTLテーブルの前記サイズを前記フラッシュメモリデバイスから前記ホストデバイスに返すステップと
をさらに含む操作を実施するプロセッサ実行可能命令を使用して構成され、
前記第1のプロセッサが、
前記フラッシュメモリデバイスから、前記FTLテーブルの前記サイズを前記ホストデバイスで受け取るステップと、
前記ホストデバイスによって、前記ホストデバイスの前記揮発性メモリがすべての前記FTLテーブルを記憶することができるかどうかを決定するステップと
をさらに含む操作を実施するプロセッサ実行可能命令を使用して構成される
請求項23に記載のシステム。
【請求項25】
前記第1のプロセッサが、
前記ホストデバイスによって前記ホストデバイスの前記揮発性メモリを細分割するステップであって、細分割のサイズが前記FTLテーブルのサイズに基づくステップをさらに含む操作であって、
前記FTLテーブルの前記コピーを記憶するステップが、前記フラッシュメモリデバイスによって、前記FTLテーブルの前記コピーを前記ホストデバイスの前記揮発性メモリの前記細分割の区分に記憶するステップを含む
操作を実施するプロセッサ実行可能命令を使用して構成され、
前記第2のプロセッサが、
前記フラッシュメモリデバイスによって、前記FTLテーブルの前記コピーが記憶される前記ホストデバイスの前記揮発性メモリの前記細分割の区分に対する直接メモリアクセス読出し特権を受け取るステップと、
前記フラッシュメモリデバイスによって、前記FTLテーブルの前記コピーが記憶される前記ホストデバイスの前記揮発性メモリの前記細分割の区分に対する直接メモリアクセス書込み特権を受け取るステップと
をさらに含む操作を実施するプロセッサ実行可能命令を使用して構成される
請求項24に記載のシステム。
【請求項26】
前記第2のプロセッサが、前記FTLテーブルの前記コピーにアクセスするステップが、
前記フラッシュメモリデバイスの中に、前記論理アドレスの読出し操作要求を前記ホストデバイスから受け取るステップと、
前記フラッシュメモリデバイスによって前記読出し操作を開始するステップと、
前記フラッシュメモリデバイスによって前記FTLテーブルの前記コピーの少なくとも一部を読み出すステップと、
前記フラッシュメモリデバイスによって、前記論理アドレスに対応する前記物理アドレスを決定するステップと、
前記フラッシュメモリデバイスによって、前記フラッシュメモリデバイスの前記フラッシュメモリの前記物理アドレスに記憶されているデータを検索するステップと、
前記フラッシュメモリデバイスによって前記データを前記ホストデバイスに返すステップと
を含むようにプロセッサ実行可能命令を使用して構成される、請求項23に記載のシステム。
【請求項27】
前記第2のプロセッサが、前記FTLテーブルの前記コピーにアクセスするステップが、
前記フラッシュメモリデバイスによって、前記論理アドレスの書込み操作要求を前記ホストデバイスから受け取るステップと、
前記フラッシュメモリデバイスによって前記書込み操作を開始するステップと、
前記フラッシュメモリデバイスによってデータを前記フラッシュメモリデバイスの前記フラッシュメモリの前記物理アドレスに書き込むステップと、
前記データが書き込まれると、前記FTLテーブルの前記コピーを更新して前記フラッシュメモリデバイスの前記フラッシュメモリに対してなされた変更に対応させるために、前記フラッシュメモリデバイスによって前記FTLテーブルの前記コピーに書き込むステップと、
前記フラッシュメモリデバイスによって前記書込み操作の完了通知を前記ホストデバイスに送るステップと
を含むようにプロセッサ実行可能命令を使用して構成される、請求項23に記載のシステム。
【請求項28】
前記第2のプロセッサが、
前記フラッシュメモリデバイスによって前記FTLテーブルの前記コピーの少なくとも一部を読み出すステップと、
前記フラッシュメモリデバイスによって前記論理アドレスに対応する前記物理アドレスを決定するステップと
をさらに含む操作を実施するプロセッサ実行可能命令を使用して構成される、請求項27に記載のシステム。
【請求項29】
前記フラッシュメモリデバイスが前記第2のプロセッサに結合されたSRAMをさらに備え、
前記第2のプロセッサが、
前記フラッシュメモリデバイスによって前記フラッシュメモリデバイスの前記SRAMを読み出すステップと、
前記フラッシュメモリデバイスによって、前記フラッシュメモリデバイスの前記フラッシュメモリ内の自由記憶空間の位置を示す前記物理アドレスを決定するステップと
をさらに含む操作を実施するプロセッサ実行可能命令を使用して構成される
請求項27に記載のシステム。
【請求項30】
前記第2のプロセッサが、前記フラッシュメモリデバイスによって、前記ホストデバイスの前記揮発性メモリ内への前記FTLテーブルの前記コピーの記憶が完了したことを示す通知を前記ホストデバイスに送るステップをさらに含む操作を実施するプロセッサ実行可能命令を使用して構成される、請求項23に記載のシステム。
【請求項31】
前記第2のプロセッサが、前記フラッシュメモリデバイスによって、スケジュール、利用可能な資源および書込み操作の完了からなるグループから選択されるパラメータに基づいて、前記FTLテーブルの前記コピーを使用して前記フラッシュメモリデバイスの前記FTLテーブルを更新するステップをさらに含む操作を実施するプロセッサ実行可能命令を使用して構成される、請求項23に記載のシステム。
【請求項32】
前記第1のプロセッサが、前記ホストデバイスによって、前記フラッシュメモリデバイスが前記ホストデバイスの前記揮発性メモリ内への前記FTLテーブルのコピーのホストキャッシングをサポートするかどうかを決定するステップをさらに含む操作を実施するプロセッサ実行可能命令を使用して構成される、請求項23に記載のシステム。
【請求項33】
前記第1のプロセッサが、前記ホストデバイス内で、前記FTLテーブルの前記コピーの記憶完了通知を前記フラッシュメモリデバイスから受け取るステップをさらに含む操作を実施するプロセッサ実行可能命令を使用して構成される、請求項23に記載のシステム。
【請求項34】
フラッシュメモリデバイスであって、前記フラッシュメモリデバイスと前記ホストデバイスは別々に収納されたデバイスを備える、フラッシュメモリデバイスと、
前記フラッシュメモリデバイスと前記ホストデバイスを通信接続するための手段と、
前記フラッシュメモリデバイスによって前記ホストデバイスの揮発性メモリに前記フラッシュメモリデバイスのフラッシュ変換層(FTL)テーブルのコピーを記憶するための手段と、
前記フラッシュメモリデバイスによって前記ホストデバイスの前記揮発性メモリに記憶された前記FTLテーブルの前記コピーへのアクセスを受け取るための手段と、
前記フラッシュメモリデバイスによって、前記フラッシュメモリデバイスと前記ホストデバイスの前記揮発性メモリとを通信接続するための手段をバス支配するための手段と、
前記フラッシュメモリデバイスと前記ホストデバイスの前記揮発性メモリとを通信接続するための前記バス支配された手段を介して、前記フラッシュメモリデバイスにより、読出し操作および書込み操作のうちの少なくとも1つの部分として、前記ホストデバイスの前記揮発性メモリに記憶された前記フラッシュメモリデバイスの前記FTLテーブルの前記コピーにアクセスするための手段と
前記FTLの前記コピーを前記フラッシュメモリデバイスにより前記ホストデバイスの前記揮発性メモリから検索するための手段と、
前記フラッシュメモリデバイスにより、前記揮発性メモリに記憶された前記フラッシュメモリデバイスの前記FTLテーブルの前記コピーの変更により、前記フラッシュメモリデバイスの前記FTLを動的に更新するための手段と、
を備えるシステム。
【請求項35】
前記ホストデバイスから、前記フラッシュメモリデバイス内の前記FTLテーブルのサイズに対する問合せを受け取るための手段と、
前記FTLテーブルの前記サイズを前記フラッシュメモリデバイスから前記ホストデバイスに返すための手段と、
前記フラッシュメモリデバイスから、前記FTLテーブルの前記サイズを前記ホストデバイスで受け取るための手段と、
前記ホストデバイスによって、前記ホストデバイスの前記揮発性メモリがすべての前記FTLテーブルを記憶することができるかどうかを決定するための手段と
をさらに備える、請求項34に記載のシステム。
【請求項36】
前記ホストデバイスによって前記ホストデバイスの前記揮発性メモリを細分割するための手段であって、細分割のサイズが前記FTLテーブルのサイズに基づく手段と、
前記フラッシュメモリデバイスによって、前記FTLテーブルの前記コピーが記憶される前記ホストデバイスの前記揮発性メモリの前記細分割の区分に対する直接メモリアクセス読出し特権を受け取るための手段と、
前記フラッシュメモリデバイスによって、前記FTLテーブルの前記コピーが記憶される前記ホストデバイスの前記揮発性メモリの前記細分割の区分に対する直接メモリアクセス書込み特権を受け取るための手段と
をさらに備え、前記FTLテーブルのコピーを記憶するための手段が、前記フラッシュメモリデバイスによって前記ホストデバイスの前記揮発性メモリの前記細分割の区分に前記FTLテーブルの前記コピーを記憶するための手段と、
を備える、請求項35に記載のシステム。
【請求項37】
前記FTLテーブルの前記コピーにアクセスするための手段が、
前記フラッシュメモリデバイスの中に、論理アドレスの読出し操作要求を前記ホストデバイスから受け取るための手段と、
前記フラッシュメモリデバイスによって前記読出し操作を開始するための手段と、
前記フラッシュメモリデバイスによって前記FTLテーブルの前記コピーの少なくとも一部を読み出すための手段と、
前記フラッシュメモリデバイスによって、前記論理アドレスに対応する物理アドレスを決定するための手段と、
前記フラッシュメモリデバイスによって、前記フラッシュメモリデバイスのメモリの前記物理アドレスに記憶されているデータを検索するための手段と、
前記フラッシュメモリデバイスによって前記データを前記ホストデバイスに返すための手段と
を備える、請求項34に記載のシステム。
【請求項38】
前記FTLテーブルの前記コピーにアクセスするための手段が、
前記フラッシュメモリデバイスによって、論理アドレスの書込み操作要求を前記ホストデバイスから受け取るための手段と、
前記フラッシュメモリデバイスによって前記書込み操作を開始するための手段と、
前記フラッシュメモリデバイスによってデータを前記フラッシュメモリデバイスのメモリの物理アドレスに書き込むための手段と、
前記データが書き込まれると、前記FTLテーブルの前記コピーを更新して前記フラッシュメモリデバイスの前記メモリに対してなされた変更に対応させるために、前記フラッシュメモリデバイスによって前記FTLテーブルの前記コピーに書き込むための手段と、
前記フラッシュメモリデバイスによって前記書込み操作の完了通知を前記ホストデバイスに送るための手段と
をさらに備える、請求項34に記載のシステム。
【請求項39】
前記フラッシュメモリデバイスによって前記FTLテーブルの前記コピーの少なくとも一部を読み出すための手段と、
前記フラッシュメモリデバイスによって前記論理アドレスに対応する前記物理アドレスを決定するための手段と
をさらに備える、請求項38に記載のシステム。
【請求項40】
前記フラッシュメモリデバイスによって前記フラッシュメモリデバイスのSRAMを読み出すための手段と、
前記フラッシュメモリデバイスによって、前記フラッシュメモリデバイスの前記メモリ内の自由記憶空間の位置を示す前記物理アドレスを決定するための手段と
をさらに備える、請求項38に記載のシステム。
【請求項41】
前記フラッシュメモリデバイスによって、前記ホストデバイスの前記揮発性メモリ内への前記FTLテーブルの前記コピーの記憶が完了したことを示す通知を前記ホストデバイスに送るための手段をさらに備える、請求項34に記載のシステム。
【請求項42】
前記フラッシュメモリデバイスによって、スケジュール、利用可能な資源および書込み操作の完了からなるグループから選択されるパラメータに基づいて、前記FTLテーブルの前記コピーを使用して前記フラッシュメモリデバイスの前記FTLテーブルを更新するための手段を
さらに備える、請求項34に記載のシステム。
【請求項43】
前記ホストデバイスによって、前記フラッシュメモリデバイスが前記ホストデバイスの前記揮発性メモリ内への前記FTLテーブルのコピーのホストキャッシングをサポートするかどうかを決定するための手段をさらに備える、請求項34に記載のシステム。
【請求項44】
前記ホストデバイス内で、前記FTLテーブルの前記コピーの記憶完了通知を前記フラッシュメモリデバイスから受け取るための手段をさらに備える、請求項34に記載のシステム。
【請求項45】
別々に収納されたホストデバイスに通信バスを介して結合するように構成されたフラッシュメモリデバイスであって、
論理アドレスと物理アドレスとの間の変換に使用するためのフラッシュ変換層(FTL)テーブルを含むデータを記憶するように構成されたフラッシュメモリと、
前記フラッシュメモリに結合されたプロセッサであって、
前記ホストデバイスの揮発性メモリに前記フラッシュメモリデバイスのフラッシュ変換層(FTL)テーブルのコピーを記憶するステップと、
前記ホストデバイスの前記揮発性メモリに記憶された前記FTLテーブルの前記コピーへのアクセスを受け取るステップと、
前記通信バスをバス支配するステップと、
前記バス支配された通信バスを介して、読出し操作および書込み操作のうちの少なくとも1つの部分として、前記ホストデバイスの前記揮発性メモリに記憶された前記フラッシュメモリデバイスの前記FTLテーブルの前記コピーにアクセスするステップと
前記FTLの前記コピーを前記ホストデバイスの前記揮発性メモリから検索するステップと、
前記揮発性メモリに記憶された前記フラッシュメモリデバイスの前記FTLテーブルの前記コピーの変更により、前記フラッシュメモリデバイスの前記FTLを動的に更新するステップと、
を含む操作を実施するプロセッサ実行可能命令を使用して構成されるプロセッサと
を備えるフラッシュメモリデバイス。
【請求項46】
前記プロセッサが、
前記ホストデバイスから、前記FTLテーブルのサイズに対する問合せを受け取るステップと、
前記FTLテーブルの前記サイズを前記ホストデバイスに返すステップと
をさらに含む操作を実施するプロセッサ実行可能命令を使用して構成され、
前記プロセッサが、前記フラッシュメモリデバイスの前記FTLテーブルの前記コピーを前記ホストデバイスの揮発性メモリに記憶するステップが、前記ホストデバイスによって前記プロセッサに対して識別された前記ホストデバイスの前記揮発性メモリの細分割の区分に前記FTLテーブルの前記コピーを記憶するステップを含むように操作を実施するプロセッサ実行可能命令を使用して構成される
請求項45に記載のフラッシュメモリデバイス。
【請求項47】
前記プロセッサが、
前記FTLテーブルの前記コピーが記憶される前記ホストデバイスの前記揮発性メモリの前記細分割の区分に対する直接メモリアクセス読出し特権を前記ホストデバイスから受け取るステップと、
前記FTLテーブルの前記コピーが記憶される前記ホストデバイスの前記揮発性メモリの前記細分割の区分に対する直接メモリアクセス書込み特権を前記ホストデバイスから受け取るステップと
をさらに含む操作を実施するプロセッサ実行可能命令を使用して構成され
請求項46に記載のフラッシュメモリデバイス。
【請求項48】
前記プロセッサが、前記FTLテーブルの前記コピーにアクセスするステップが、
前記ホストデバイスからの前記論理アドレスの読出し操作要求および書込み操作要求のうちの1つに応答して、前記ホストデバイスの前記揮発性メモリから前記FTLテーブルの前記コピーの少なくとも一部を読み出すステップと、
読出し操作要求に応答して、前記論理アドレスに対応する前記フラッシュメモリの前記物理アドレスに記憶されているデータを前記ホストデバイスに返すステップと、
書込み操作要求に応答して、前記論理アドレスに対応する前記フラッシュメモリデバイスの前記物理アドレスにデータが書き込まれると、前記FTLテーブルの前記コピーを更新して前記フラッシュメモリに対してなされた変更に対応させるために、前記ホストデバイスの前記揮発性メモリに記憶されている前記FTLテーブルの前記コピーに書き込むステップと、
前記書込み操作要求に応答して、前記書込み操作の完了通知を前記ホストデバイスに送るステップと
を含むようにプロセッサ実行可能命令を使用して構成される、請求項45に記載のフラッシュメモリデバイス。
【請求項49】
別々に収納されたホストデバイスに通信バスを介して結合するように構成されたフラッシュメモリデバイスであって、
前記ホストデバイスの揮発性メモリに前記フラッシュメモリデバイスのフラッシュ変換層(FTL)テーブルのコピーを記憶するための手段と、
前記ホストデバイスの前記揮発性メモリに記憶された前記FTLテーブルの前記コピーへのアクセスを受け取るための手段と、
前記フラッシュメモリデバイスと前記ホストデバイスの前記揮発性メモリとを通信接続するための手段をバス支配するための手段と、
前記バス支配された通信バスを介して、読出し操作および書込み操作のうちの少なくとも1つの部分として、前記ホストデバイスの前記揮発性メモリに記憶された前記フラッシュメモリデバイスの前記FTLテーブルの前記コピーにアクセスするための手段と
前記FTLの前記コピーを前記ホストデバイスの前記揮発性メモリから検索するための手段と、
前記揮発性メモリに記憶された前記フラッシュメモリデバイスの前記FTLテーブルの前記コピーの変更により、前記フラッシュメモリデバイスの前記FTLを動的に更新するための手段と、
を備えるフラッシュメモリデバイス。
【請求項50】
前記ホストデバイスから、前記FTLテーブルのサイズに対する問合せを受け取るための手段と、
前記FTLテーブルの前記サイズを前記ホストデバイスに返すための手段と
をさらに備え、前記フラッシュメモリデバイスの前記FTLテーブルの前記コピーを前記ホストデバイスの揮発性メモリに記憶するための手段が、前記ホストデバイスの前記揮発性メモリの細分割の区分に前記FTLテーブルの前記コピーを記憶するための手段を備える、請求項49に記載のフラッシュメモリデバイス。
【請求項51】
前記FTLテーブルの前記コピーが記憶される前記ホストデバイスの前記揮発性メモリの前記細分割の区分に対する直接メモリアクセス読出し特権を前記ホストデバイスから受け取るための手段と、
前記FTLテーブルの前記コピーが記憶される前記ホストデバイスの前記揮発性メモリの前記細分割の区分に対する直接メモリアクセス書込み特権を前記ホストデバイスから受け取るための手段と
をさらに備える、請求項50に記載のフラッシュメモリデバイス。
【請求項52】
前記FTLテーブルの前記コピーにアクセスするための手段が、
前記ホストデバイスからの論理アドレスの読出し操作要求および書込み操作要求のうちの1つに応答して、前記ホストデバイスの前記揮発性メモリから前記FTLテーブルの前記コピーの少なくとも一部を読み出すための手段と、
読出し操作要求に応答して、前記論理アドレスに対応するフラッシュメモリの物理アドレスに記憶されているデータを前記ホストデバイスに返すための手段と、
書込み操作要求に応答して、前記論理アドレスに対応する前記フラッシュメモリデバイスの前記物理アドレスにデータが書き込まれると、前記FTLテーブルの前記コピーを更新して前記フラッシュメモリに対してなされた変更に対応させるために、前記ホストデバイスの前記揮発性メモリに記憶されている前記FTLテーブルの前記コピーに書き込むための手段と、
前記書込み操作要求に応答して、前記書込み操作の完了通知を前記ホストデバイスに送るための手段と
を備える、請求項49に記載のフラッシュメモリデバイス。
【請求項53】
別々に収納されたフラッシュメモリデバイスに結合するように構成されたホストデバイスであって、
揮発性メモリと、
前記ホストデバイスの前記揮発性メモリを通信接続し、前記ホストデバイスに結合されると前記フラッシュメモリデバイスに通信するように構成された通信バスと、
前記揮発性メモリおよび前記通信バスに結合されたプロセッサと
を備え、前記プロセッサが、
前記別々に収納されたフラッシュメモリデバイスが前記揮発性メモリ内への前記別々に収納されたフラッシュメモリデバイスのフラッシュ変換層(FTL)テーブルのコピーのホストキャッシングをサポートするかどうかを決定するステップと、
前記FTLテーブルの前記コピーを記憶するために前記揮発性メモリの一部を割り当てるステップと、
前記別々に収納されたフラッシュメモリデバイスが前記揮発性メモリ内への前記別々に収納されたフラッシュメモリデバイスの前記FTLテーブルのコピーのホストキャッシングをサポートすると決定したことに応答して、

前記揮発性メモリの一部に対する前記通信バスを介した直接メモリアクセス読出しおよび書込み特権を前記フラッシュメモリデバイスに許容するステップと、
前記ホストデバイスの前記揮発性メモリから前記FTLの前記コピーへのアクセスを許容するステップと、
前記フラッシュメモリデバイスの前記FTLを動的に更新するために前記FTLテーブルの前記コピーの変更を提供するステップと、
を含む操作を実施するプロセッサ実行可能命令を使用して構成されるホストデバイス。
【請求項54】
前記プロセッサが、
前記別々に収納されたフラッシュメモリデバイスに記憶されている前記FTLテーブルのサイズを前記別々に収納されたフラッシュメモリデバイスに問い合わせるステップと、
前記揮発性メモリがすべての前記FTLテーブルを記憶することができるかどうかを決定するステップと
をさらに含む操作を実施するプロセッサ実行可能命令を使用して構成され、
前記揮発性メモリの一部を割り当てるステップが、前記FTLテーブルの前記サイズに基づいて前記揮発性メモリの一部のサイズを決定するステップを含む
請求項53に記載のホストデバイス。
【請求項55】
別々に収納されたフラッシュメモリデバイスに通信バスを介して結合するように構成されたホストデバイスであって、
前記別々に収納されたフラッシュメモリデバイスが前記ホストデバイスの揮発性メモリ内への前記別々に収納されたフラッシュメモリデバイスのフラッシュ変換層(FTL)テーブルのコピーのホストキャッシングをサポートするかどうかを決定するための手段と、
前記FTLテーブルの前記コピーを記憶するために前記揮発性メモリの一部を割り当てるための手段と、
前記別々に収納されたフラッシュメモリデバイスが前記揮発性メモリ内への前記別々に収納されたフラッシュメモリデバイスの前記FTLテーブルのコピーのホストキャッシングをサポートすると決定したことに応答して、

前記揮発性メモリの一部に対する前記通信バスを介した直接メモリアクセス読出しおよび書込み特権を前記別々に収納されたフラッシュメモリデバイスに許容するための手段と、
前記ホストデバイスの前記揮発性メモリから前記FTLの前記コピーへのアクセスを許容するための手段と、
前記フラッシュメモリデバイスの前記FTLを動的に更新するために前記FTLテーブルの前記コピーの変更を提供するための手段と、
を備えるホストデバイス。
【請求項56】
前記別々に収納されたフラッシュメモリデバイスに記憶されている前記FTLテーブルのサイズを前記別々に収納されたフラッシュメモリデバイスに問い合わせるための手段と、
前記揮発性メモリがすべての前記FTLテーブルを記憶することができるかどうかを決定するための手段と
をさらに備え、
前記揮発性メモリの一部を割り当てるための手段が、前記FTLテーブルの前記サイズに基づいて前記揮発性メモリの一部のサイズを決定するための手段を備える
請求項55に記載のホストデバイス。
【発明の詳細な説明】
【背景技術】
【0001】
管理フラッシュ記憶性能は、その要求がますます過酷になっている。スマートフォン、タブレットおよびゲーミングデバイスなどのコンパクト大衆消費電子製品には、高い費用有効性および低電力記憶解決法が必要である。管理否定ANDまたはNOT AND(NAND)フラッシュ記憶装置の例には、組込み型マルチメディアカード(eMMC)、ユニバーサルフラッシュ記憶装置(UFS)、外部シリアルアドバンスト技術アタッチメント(eSATA)、ボールグリッドアレイ(BGA)SATA、ユニバーサルシリアルバス(USB)ドライブ、セキュアデジタル(SD)カード、ユニバーサル加入者識別モジュール(USIM)カードおよびコンパクトフラッシュ(登録商標)カードがある。NANDデバイスは、それらが低コストで、かつ、低電力であるので、モバイルアプリケーションでは一般的である。
【0002】
既存の管理NANDフラッシュ記憶装置は、NANDフラッシュメモリ内に含まれている大型ファイル変換層(FTL)テーブルを利用しており、オンチップスタティックランダムアクセスメモリ(SRAM)にキャッシュするのはテーブルの微小部分にすぎない。管理NANDデバイスへの読出しおよび書込みアクセスは、FTLテーブルからの情報を使用して物理NANDアドレスに変換しなければならない論理アドレスからなっている。これは、FTLテーブル項目をNANDメモリから読み出す際に、これらのタイプの記憶装置の総合性能を低下させる長い遅延(数十マイクロ秒程度の)をもたらしている。したがってNANDメモリデバイスにおける低コストおよび低電力消費の報いは、メモリアクセス時間性能の低下として現れている。
【発明の概要】
【課題を解決するための手段】
【0003】
様々な態様は、フラッシュメモリデバイスによってホストデバイスの揮発性メモリにフラッシュメモリデバイスのFTLテーブルのコピーを記憶するステップと、フラッシュメモリデバイスによってホストデバイスの揮発性メモリに記憶されたFTLテーブルのコピーへのアクセスを受け取るステップと、読出し操作および書込み操作のうちの少なくとも1つの部分として、フラッシュメモリデバイスによってホストデバイスの揮発性メモリに記憶されたフラッシュメモリデバイスのFTLテーブルのコピーにアクセスするステップとを含む、フラッシュメモリデバイスのフラッシュ変換層(FTL)の性能を高くするための方法およびシステムを提供する。一態様方法は、ホストデバイスから、フラッシュメモリデバイス内のFTLテーブルのサイズに対する問合せを受け取るステップと、FTLテーブルのサイズをフラッシュメモリデバイスからホストデバイスに返すステップと、フラッシュメモリデバイスから、FTLテーブルのサイズをホストデバイスで受け取るステップと、ホストデバイスによって、ホストデバイスの揮発性メモリがすべてのFTLテーブルを記憶することができるかどうかを決定するステップとをさらに含むことができる。一態様方法は、ホストデバイスによってホストデバイスの揮発性メモリを細分割するステップであって、細分割のサイズがFTLテーブルのサイズに基づくステップと、フラッシュメモリデバイスによって、FTLテーブルのコピーが記憶されるホストデバイスの揮発性メモリの細分割区分に対する直接メモリアクセス読出し特権を受け取るステップと、フラッシュメモリデバイスによって、FTLテーブルのコピーが記憶されるホストデバイスの揮発性メモリの細分割区分に対する直接メモリアクセス書込み特権を受け取るステップとをさらに含むことができ、FTLテーブルのコピーを記憶するステップは、フラッシュメモリデバイスによってホストデバイスの揮発性メモリの細分割区分にFTLテーブルのコピーを記憶するステップをさらに含む。
【0004】
一態様では、FTLテーブルのコピーにアクセスするステップは、フラッシュメモリデバイスによって、フラッシュメモリデバイスとホストデバイスの揮発性メモリとを通信接続する通信バスをバス支配するステップをさらに含むことができる。
【0005】
一態様では、FTLテーブルのコピーにアクセスするステップは、フラッシュメモリデバイスの中に、論理アドレスの読出し操作要求をホストデバイスから受け取るステップと、フラッシュメモリデバイスによって読出し操作を開始するステップと、フラッシュメモリデバイスによってFTLテーブルのコピーの少なくとも一部を読み出すステップと、フラッシュメモリデバイスによって、論理アドレスに対応する物理アドレスを決定するステップと、フラッシュメモリデバイスによって、フラッシュメモリデバイスのメモリの物理アドレスに記憶されているデータを検索するステップと、フラッシュメモリデバイスによってデータをホストデバイスに返すステップとを含むことができる。
【0006】
一態様では、FTLテーブルのコピーにアクセスするステップは、フラッシュメモリデバイスによって、論理アドレスの書込み操作要求をホストデバイスから受け取るステップと、フラッシュメモリデバイスによって書込み操作を開始するステップと、フラッシュメモリデバイスによってデータをフラッシュメモリデバイスのメモリの物理アドレスに書き込むステップと、データが書き込まれると、FTLテーブルのコピーを更新してフラッシュメモリデバイスのメモリに対してなされた変更に対応させるために、フラッシュメモリデバイスによってFTLテーブルのコピーに書き込むステップと、フラッシュメモリデバイスによって書込み操作の完了通知をホストデバイスに送るステップとを含むことができる。一態様方法は、フラッシュメモリデバイスによってFTLテーブルのコピーの少なくとも一部を読み出すステップと、フラッシュメモリデバイスによって論理アドレスに対応する物理アドレスを決定するステップとをさらに含むことができる。一態様方法は、フラッシュメモリデバイスによってフラッシュメモリデバイスのSRAMを読み出すステップと、フラッシュメモリデバイスによって、フラッシュメモリデバイスのメモリ内の自由記憶空間の位置を示す物理アドレスを決定するステップとをさらに含むことができる。一態様方法は、フラッシュメモリデバイスによって、ホストデバイスの揮発性メモリ内へのFTLテーブルのコピーの記憶が完了したことを示す通知をホストデバイスに送るステップをさらに含むことができる。一態様方法は、フラッシュメモリデバイスによって、スケジュール、利用可能な資源および書込み操作の完了からなるグループから選択されるパラメータに基づいて、FTLのコピーを使用してフラッシュメモリデバイスのFTLテーブルを更新するステップをさらに含むことができる。一態様方法は、ホストデバイスによって、フラッシュメモリデバイスがホストデバイスの揮発性メモリ内へのFTLテーブルのコピーのホストキャッシングをサポートするかどうかを決定するステップをさらに含むことができる。一態様方法は、ホストデバイス内で、FTLテーブルのコピーの記憶完了通知をフラッシュメモリデバイスから受け取るステップをさらに含むことができる。
【0007】
一態様は、フラッシュメモリデバイスによってホストデバイスの揮発性メモリ上にフラッシュメモリデバイスのFTLテーブルのコピーを記憶し、かつ、フラッシュメモリデバイスによってホストデバイスの揮発性メモリに記憶されたFTLテーブルのコピーへのアクセスを受け取ることによって、システムにシステムのフラッシュメモリデバイスのフラッシュ変換層の性能を高くさせるように構成されたプロセッサ実行可能ソフトウェア命令をその上に記憶した非一時的プロセッサ可読記憶媒体を含む。記憶される命令は、読出し操作および書込み操作のうちの少なくとも1つの部分として、フラッシュメモリデバイスによってホストデバイスの揮発性メモリに記憶されたフラッシュメモリデバイスのFTLテーブルのコピーにアクセスするための命令を含むことも可能である。非一時的プロセッサ可読記憶媒体は、その上に記憶された、上で説明した態様方法の他の操作をシステムに実施させるように構成されたプロセッサ実行可能ソフトウェア命令を有することができる。
【0008】
一態様は、揮発性メモリおよび該揮発性メモリに結合された第1のプロセッサを有するホストデバイスと、フラッシュメモリデバイスとを含む計算システムを含み、システムは、フラッシュメモリデバイスによってホストデバイスの揮発性メモリにフラッシュメモリデバイスのFTLテーブルのコピーを記憶し、フラッシュメモリデバイスによってホストデバイスの揮発性メモリに記憶されたFTLテーブルのコピーへのアクセスを受け取り、かつ、読出し操作および書込み操作のうちの少なくとも1つの部分として、フラッシュメモリデバイスによってホストデバイスの揮発性メモリに記憶されたフラッシュメモリデバイスのFTLテーブルのコピーにアクセスすることによってフラッシュメモリデバイスの性能を高くすることができる。
【0009】
一態様は、フラッシュメモリデバイスによってホストデバイスの揮発性メモリにフラッシュメモリデバイスのFTLテーブルのコピーを記憶するための手段を含むフラッシュメモリデバイスのフラッシュ変換層の性能を高くするように構成されたシステムを含む。また、システムは、フラッシュメモリデバイスによってホストデバイスの揮発性メモリに記憶されたFTLテーブルのコピーへのアクセスを受け取るための手段と、読出し操作および書込み操作のうちの少なくとも1つの部分として、フラッシュメモリデバイスによってホストデバイスの揮発性メモリに記憶されたフラッシュメモリデバイスのFTLテーブルのコピーにアクセスするための手段を含むことも可能である。
【0010】
他の態様は、ホストデバイスに結合するように構成されたフラッシュメモリデバイスであって、論理アドレスと物理アドレスとの間の変換に使用するためのFTLテーブルを含んだデータを記憶するように構成されたフラッシュメモリと、フラッシュメモリに結合された、ホストデバイスの揮発性メモリにフラッシュメモリデバイスのフラッシュ変換層FTLテーブルのコピーを記憶するステップ、ホストデバイスの揮発性メモリに記憶されたFTLテーブルのコピーへのアクセスを受け取るステップ、および読出し操作および書込み操作のうちの少なくとも1つの部分として、ホストデバイスの揮発性メモリに記憶されたフラッシュメモリデバイスのFTLテーブルのコピーにアクセスするステップを含む操作を実施するためのプロセッサ実行可能命令を使用して構成されるプロセッサとを含むフラッシュメモリデバイスを含む。
【0011】
他の態様は、ホストデバイスに結合するように構成されたデバイスであって、フラッシュメモリデバイスのFTLテーブルのコピーをホストデバイスの揮発性メモリに記憶するための手段と、ホストデバイスの揮発性メモリに記憶されたFTLテーブルのコピーへのアクセスを受け取るための手段と、読出し操作および書込み操作のうちの少なくとも1つの部分として、ホストデバイスの揮発性メモリに記憶されたフラッシュメモリデバイスのFTLテーブルのコピーにアクセスするための手段とを含むデバイスを含む。
【0012】
他の態様は、フラッシュメモリデバイスに結合するように構成されたホストデバイスであって、揮発性メモリと、ホストデバイスの揮発性メモリを通信接続し、ホストデバイスに結合されるとフラッシュメモリデバイスに通信するように構成された通信バスと、フラッシュメモリデバイスが揮発性メモリ内へのフラッシュメモリデバイスのFTLテーブルのコピーのホストキャッシングをサポートするかどうかを決定するステップ、FTLテーブルのコピーを記憶するために揮発性メモリの一部を割り当てるステップ、および通信バスを介した揮発性メモリの上記部分への直接メモリアクセス読出しおよび書込み特権をフラッシュメモリデバイスに許容するステップを含む操作を実施するプロセッサ実行可能命令を使用して構成されるプロセッサとを含むホストデバイスを含む。
【0013】
本明細書に組み込まれ、本明細書の一部を構成している添付の図面は、本発明の例示的態様を示したものであり、上で示した一般的な説明および以下の詳細な説明とともに本発明の特徴を説明する働きをしている。
【図面の簡単な説明】
【0014】
図1】一態様による、フラッシュメモリデバイスに通信接続されたホストデバイスを有するシステムを示す構成要素ブロック図である。
図2】様々な態様とともに使用するのに適したモバイルデバイスの一例の構成要素線図である。
図3】FTLホストキャッシングを初期化するための一態様方法を示すプロセス流れ図である。
図4】FTLホストキャッシングを初期化するための一態様方法を示すプロセス流れ図である。
図5】FTLホストキャッシングを使用して読出し操作を実行するための一態様方法を示すプロセス流れ図である。
図6】FTLホストキャッシングを使用して書込み操作を実行するための一態様方法を示すプロセス流れ図である。
図7】FTLホストキャッシングを初期化するための一態様方法を示すプロセス流れ図である。
図8】FTLホストキャッシングを使用して読出し操作を実行するための一態様方法を示すプロセス流れ図である。
図9】FTLホストキャッシングを使用して書込み操作を実行するための一態様方法を示すプロセス流れ図である。
図10】FTLホストキャッシングを使用して書込み操作を実行するための一態様方法を示すプロセス流れ図である。
【発明を実施するための形態】
【0015】
様々な態様について、添付の図面を参照して詳細に説明する。可能である場合、同じまたは同様の部品を参照するためにすべての図面を通して同じ参照番号が使用される。参照される特定の例および実施態様は、実例で説明するためのものであり、本発明または特許請求の範囲を制限することは意図されていない。
【0016】
「例示的」という語は、本明細書においては、「例、実例または例証として働く」ことを意味するべく使用されている。本明細書において「例示的」として説明されている何らかの実施態様は、必ずしも他の実施態様よりも好ましい、あるいは他の態様よりも有利な実施態様として解釈してはならない。
【0017】
「モバイル計算デバイス」および「モバイルデバイス」という用語は、本明細書においては、セルラー電話、スマートフォン、パーソナルまたはモバイルマルチメディアプレーヤ、パーソナルデータアシスタント(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、ウルトラブック、パームトップコンピュータ、ワイヤレス電子メールレシーバ、マルチメディアインターネットイネーブルセルラー電話、ワイヤレスゲーミングコントローラ、および電力保存方式が有利な方式であるよう、電池電力によって動作するメモリ、プログラマブルプロセッサを含む同様のパーソナル電子デバイスのうちの任意の1つまたはすべてを意味するべく交換可能に使用されている。様々な態様は、限られた資源を有し、かつ、電池電力で動作するスマートフォンなどのモバイル計算デバイスのためにとりわけ有用であるが、これらの態様は、一般に、フラッシュメモリデバイスとの使用に両立する任意の電子デバイスに有用である。
【0018】
「フラッシュメモリ」という用語は、本明細書においては、電気的に消去し、かつ、プログラムすることができる電子不揮発性コンピュータ記憶装置またはメモリを意味している。フラッシュメモリデバイスアーキテクチャは、典型的にはNANDおよびNORタイプを含む。本明細書における態様は、一般に、フラッシュメモリデバイスのNANDタイプアーキテクチャに関している。フラッシュメモリは、データの一般的な記憶および転送のためのメインメモリ、メモリカード、USBフラッシュドライブ、ソリッドステートドライブおよび同様の製品に使用することができる。NANDフラッシュメモリデバイスの例には、組込み型マルチメディアカード(eMMC)、ユニバーサルフラッシュ記憶装置(UFS)、外部シリアルアドバンスト技術アタッチメント(eSATA)、ボールグリッドアレイ(BGA)SATA、ユニバーサルシリアルバス(USB)ドライブ、セキュアデジタル(SD)カード、ユニバーサル加入者識別モジュール(USIM)カードおよびコンパクトフラッシュ(登録商標)カードがある。
【0019】
「フラッシュ変換層」および「FTL」という用語は、本明細書においては、フラッシュメモリデバイスのコントローラが論理アドレスの要求を実際のフラッシュメモリチップの中で物理アドレスに変換することができるようにするために生成されるディレクトリ構造を意味している。ディレクトリ構造は、任意の様々なデータ構造を含むことができる。例として、本明細書においては、FTLは、テーブルの形態をしているものとして説明される。
【0020】
メモリ内における変換性能を高くするための技法の1つは、変換テーブル全体をキャッシュするために使用される専用のダイナミックランダムアクセスメモリ(DRAM)をソリッドステートドライブ(SSD)またはハードディスクドライブ(HDD)に追加することである。DRAMは、NANDフラッシュメモリまたはハードディスクメモリより約3桁速い速度でアクセスすることができるため、これは著しい性能の向上を提供することができる。しかしながら、この余分のDRAMは、内容を保持するために自己リフレッシュしなければならないので、DRAMをチップに追加することによってコストおよびスタンバイ電力の消費が著しく増加する。いくつかのラップトップコンピュータSSDは、そのようなコンピュータは、典型的には電力が制限されず、また、消費者は、そのようなデバイスに対してより多くの出費を予期しているため、このタイプの機構を使用して変換テーブルをキャッシュしている。しかしながら組込みDRAMメモリを有するNANDフラッシュメモリのコストおよび追加電力排出の増加は、スマートフォンなどのモバイル計算デバイスにとっては重大な欠点である。
【0021】
様々な態様は、フラッシュメモリデバイス動作の性能を改善し、その一方でフラッシュメモリのための変換テーブルを記憶するためのホストデバイスのDRAMメモリの使用などによるコストおよび電力排出を最小化するように構成された方法、システムおよびデバイスを含む。これは、フラッシュメモリデバイスと通信するホストデバイスを含んだシステムによって達成することができ、ホストデバイスおよびフラッシュメモリは、フラッシュメモリデバイスがホストデバイスのより高速のメモリ資源を使用して、論理メモリアドレスと物理メモリアドレスとの間の変換のためにフラッシュメモリデバイスが使用する変換テーブルをキャッシュすることができるように構成される。
【0022】
一態様では、ホストデバイスは、そのより高速のメモリ資源への直接メモリアクセスをフラッシュメモリデバイスに許容することができる。直接メモリアクセスは、より高速のメモリ資源に対する読出しおよび/書込み特権を含むことができる。フラッシュメモリデバイスは、そのような直接アクセス許可を使用して、FTLテーブルのコピーをホストデバイスのより高速のメモリ資源に記憶することができる。FTLテーブルのコピーの記憶を許容するに当たり、ホストデバイスは、そのより高速のメモリ資源を細分割し、FTLテーブルのコピーを含むのに適したサイズの特定の領域を提供することができる。したがってメモリの細分割区分のサイズは、FTLテーブルのサイズに基づくことができる。
【0023】
他の態様では、フラッシュメモリデバイスに許容される直接メモリアクセス許可に起因する安全上の問題からホストデバイスを保護するために直接メモリアクセスを制限することができる。たとえばFTLテーブルのコピーのために指定されたより高速のメモリ資源の領域に対してのみ直接メモリアクセスを許容することができる。キー比較などの他の安全手段を規定することも可能である。ホストデバイスを保護するために取られるそのような安全手段および他の安全手段を適用してフラッシュメモリデバイスを保護することも可能であることも同じく想定されている。フラッシュメモリデバイスのための安全手段を実現することにより、ホストデバイスがFTLテーブルを破損するのを防止することができる。
【0024】
フラッシュメモリデバイスに対する読出しおよび/または書込み操作がホストデバイスによって要求される場合、読出しおよび/または書込み操作要求は、フラッシュメモリデバイスからデータを読み出し、および/またはフラッシュメモリデバイスにデータを書き込むための論理アドレスを含むことができる。読出しおよび/または書込み要求を実行するために、フラッシュメモリデバイスは、FTLテーブルを使用して論理アドレスをそれ自身のメモリの物理アドレスに変換することができる。そのために、フラッシュメモリデバイスは、規定された論理アドレスを対応する物理アドレスに変換するために、その直接メモリアクセス許可を使用して、その規定された論理アドレスに関連するFTLテーブルのコピーからアドレスマッピング情報を検索することができる。
【0025】
直接メモリアクセスは、FTLテーブルのコピーへの書込みをフラッシュメモリデバイスに許容することも可能である。ホストデバイスからの書込み要求が完了すると、フラッシュメモリデバイスは、データが書き込まれた物理アドレスを含むそれ自身のメモリ内容を変更する。そのメモリの変更を反映するために、フラッシュメモリデバイスは、ホストデバイスに記憶されているFTLテーブルを更新して現在の物理アドレスを反映することができる。この更新により、メモリに書き込まれた情報を後でアクセスすることができ、その情報が書き込まれた空間が自由空間ではないことを示すことができる。
【0026】
他の態様では、フラッシュメモリデバイスは、メモリに直接アクセスして、ホストデバイスの高速メモリ資源に記憶されているFTLテーブルに基づいて、それ自身のメモリに記憶されているFTLテーブルを更新することができる。フラッシュメモリデバイスの変更を反映するためにFTLテーブルのコピーを更新する際に、フラッシュメモリデバイス内のFTLテーブルを同時に同じように更新する必要はない。フラッシュメモリに記憶されているFTLテーブルの更新を遅らせることにより、とりわけホストデバイスが頻繁なメモリ書込み操作を実施している場合に、電力資源を保存することができる。フラッシュメモリデバイスに対する変更の記録がフラッシュメモリデバイスに記憶されているFTLテーブルの不揮発性コピーに反映されていることを確認するために、これらのFTLテーブルをホストデバイスの高速メモリ資源に記憶されているFTLテーブルから周期的に更新することができる。そのために、フラッシュメモリデバイスは、ホストデバイスの高速メモリ資源に記憶されているFTLテーブルからFTLテーブルのコピー(または最後に更新されてからなされたFTLテーブルのコピーの変更)を検索し、かつ、FTLテーブルのコピーをフラッシュメモリに記憶し、事実上、それ自身のFTLテーブル(またはその変更部分)を上書きすることができる。そのようなプロセスでは、フラッシュメモリデバイスは、そのFTLテーブルをFTLテーブルのコピーに置き換え、FTLテーブルの2つのバージョンを比較して相違を決定し、かつ、その相違をそのFTLテーブルに書き込むか、あるいはFTLテーブルのコピーの変更をそのFTLテーブルに書き込むことができる。更新は、一度に、および/またはメモリアクセスあるいは電池電力などのシステム資源に対する影響を軽減し、あるいは最小化する方法で実行することも可能である。
【0027】
一態様では、ホストデバイスおよびフラッシュメモリデバイスは、デバイス間の通信が通信バスを介して送信されるように接続することができる。ホストデバイスの高速メモリ資源に直接アクセスするために、フラッシュメモリデバイスは、フラッシュメモリデバイスをより高速のメモリ資源に接続する通信バスを制御するバスマスタとして機能させることができる。言い換えると、フラッシュメモリデバイスおよび通信バスは、フラッシュメモリデバイスに通信バスを介して通信トランザクションを開始させるように構成することができる。様々な態様は、ホストデバイスおよびフラッシュメモリデバイスにバス支配機能を提供するための異なる通信バス構成を有することができる。たとえばデバイスごとの専用通信バスがデバイスに個々の通信バスのためのバスマスタとして機能させることができるのは、場合によっては1つのデバイスのみである。他の例として、通信バス構成は、多重デバイスバス支配をサポートする、PCI Express(PCIe)または短待ち時間インターフェース(LLI)などのバス規格に準拠することができる。
【0028】
様々な態様は、図1に示されているFTLホストキャッシングシステム10例などの様々なシステム内で実現することができる。FTLホストキャッシングシステム10は、プロセッサ24、52、メモリまたは記憶装置28、30、38、58、64、通信コントローラ26、32、54、メモリインターフェース60および通信リンク34、36、40、62、66を含むことができる。一態様では、プロセッサは、中央処理装置(CPU)24またはマイクロコントローラ(μCtrl)56であってもよい。他の態様は、CPU24およびマイクロコントローラ56を代替プロセッサに置き換えることができ、あるいは追加プロセッサを含むことができる。そのような他のプロセッサは、たとえば1つまたは複数の他のCPUまたはマイクロコントローラ、マイクロプロセッサ、グラフィック処理装置(GPU)、加速処理装置(APU)、物理処理装置(PPU)を含むことができる。
【0029】
メモリまたは記憶装置28、30、38、58、64は、広範囲にわたる多数の揮発性および不揮発性タイプのメモリのうちの任意のメモリを含むことができる。一態様では、FTLホストキャッシングシステム10は、SRAM28、58、ROM30、DRAM38およびフラッシュメモリ64を含むことができる。他のタイプのメモリは、磁気メモリデバイス、光メモリデバイスまたはハイブリッドメモリデバイスを含むことができる。その上、FTLテーブル68は、フラッシュメモリ64に記憶することも可能であり、また、生成されると、FTLテーブルのコピー70をDRAM38上に記憶することができる。
【0030】
通信コントローラ26、32、54、60は、FTLホストキャッシングシステム10の複数の構成要素間の通信を管理するように構成することができる。個々の通信コントローラ26、32、54は、とりわけ、特定の構成要素と他の構成要素との間の通信を管理することができる。たとえば直接メモリアクセス(DMA)バスコントローラ26は、CPU24と、DMAバスコントローラ26の一方の側のDRAM38およびもう一方の側のマイクロコントローラ56との間の通信を管理するように構成することができる。同様に、DMAバスコントローラ54は、DMAバスコントローラ54の一方の側のマイクロコントローラ56と、もう一方の側のCPU24との間の通信を管理することができる。DMAバスコントローラは、フラッシュメモリ64への直接メモリアクセスがCPU24に許容されると、フラッシュメモリ64とCPU24との間のアドレスおよびデータ通信を管理するように構成することも可能である。DRAMコントローラ32は、一方の側のDRAM38ともう一方の側のCPU24およびマイクロコントローラ54との間の通信を管理するように構成することができる。
【0031】
メモリインターフェース60は、フラッシュメモリインターフェース60として構成することができる。一態様では、フラッシュメモリインターフェース60は、とりわけ、NANDまたはNORフラッシュメモリアーキテクチャのために構成することができる。一態様では、フラッシュメモリインターフェース60は、フラッシュメモリインターフェース60がページアドレス指定方式でフラッシュメモリ64への読出しおよび書込みアクセスを提供するNANDアーキテクチャのために構成することができる。
【0032】
通信リンク34、36、40、62、66は、FTLホストキャッシングシステム10の様々な構成要素間のアドレスおよびデータ通信のための経路を提供することができる。様々な態様では、通信リンク34、36、40、62、66は、単一のデバイスの構成要素間の内部通信、または主デバイスと周辺デバイスとの間の外部通信のために構成することができる。ホストバスは、たとえばCPU24、DMAバスコントローラ26、SRAM28、ROM30およびDRAMコントローラ32の間の通信経路を提供することができる。DRAMバス36は、DRAM36と、DRAMコントローラ32のような他の構成要素との間の通信経路を提供することができる。記憶装置バス40は、DMAバスコントローラ26、54間の通信経路を提供することができる。フラッシュメモリデバイスバス62は、DMAバスコントローラ54、マイクロコントローラ56、SRAM58およびフラッシュメモリインターフェース60の間の通信経路を提供することができる。フラッシュメモリバス66は、フラッシュメモリ64と、フラッシュメモリインターフェース60のような他の構成要素との間の通信経路を提供することができる。
【0033】
いくつかの態様では、これらの構成要素のいくつかまたはすべての組合せがホストデバイス20およびフラッシュメモリデバイス50を形成する。様々な態様では、ホストデバイス20およびフラッシュメモリデバイス50は、別々に収納される、通信リンク40を介して通信する能力を有するデバイスとして構成することができる。制限することを意味しない例として、ホストデバイス20は、CPU24、DMAバスコントローラ26、SRAM28、ROM30、DRAMコントローラ32、ホストバス34、DRAMバス36、DRAM38および記憶装置バス40の一部またはすべてから構成することができる。この例を続けると、フラッシュメモリデバイス50は、記憶装置バス40の一部またはすべて、DMAバスコントローラ54、マイクロコントローラ56、SRAM58、フラッシュメモリインターフェース60、フラッシュメモリデバイスバス62、フラッシュメモリ64およびフラッシュメモリバス66から構成することができる。
【0034】
ホストデバイス20の一態様では、構成要素をさらに組み合わせて、システムオンチップ(SoC)22などの集積回路にすることも可能である。SoC22の構成要素は、CPU24、DMAバスコントローラ26、SRAM28、ROM30、DRAMコントローラ32、ホストバス34ならびにDRAMバス36および記憶装置バス40の一部またはすべてを含むことができる。同様に、フラッシュメモリデバイス50は、管理フラッシュメモリコントローラ52などの集積回路に組み合わされた構成要素をさらに含むことができる。管理フラッシュメモリコントローラ52の構成要素は、記憶装置バス40およびフラッシュメモリバス66の一部またはすべて、DMAバスコントローラ54、マイクロコントローラ56、SRAM58、フラッシュメモリインターフェース60およびフラッシュメモリデバイスバス62を含むことができる。
【0035】
図2は、FTLホストキャッシングシステム10に使用するのに適したモバイルデバイス200の一例を示したものである。様々な態様では、モバイルデバイス200は、タッチスクリーンコントローラ204および内部メモリ206に結合されたプロセッサ202を含むことができる。内部メモリ206は揮発性または不揮発性メモリであってもよく、また、安全保護および/または暗号化メモリであっても、または非安全保護および/または非暗号化メモリであっても、あるいはそれらの任意の組合せであってもよい。タッチスクリーンコントローラ204およびプロセッサ202は、抵抗知覚タッチスクリーン、容量知覚タッチスクリーン、赤外線知覚タッチスクリーン、等々などのタッチスクリーンパネル212に結合することも可能である。モバイルデバイス200は、1つまたは複数の無線信号トランシーバ208(たとえばPeanut(登録商標)、Bluetooth(登録商標)、Zigbee(登録商標)、Wi-Fi、RF無線)、および送り、かつ、受け取るためのアンテナ210を有することができる。トランシーバ208およびアンテナ210は、様々なワイヤレス送信のプロトコルスタックおよびインターフェースを実現するために、上述の回路とともに使用することができる。モバイルデバイス200は、セルラーネットワークを介した通信を可能にするセルラーネットワークワイヤレスモデムチップ216を含むことができる。モバイルデバイス200は、プロセッサ202に結合され、また、フラッシュメモリデバイス50に接続するように構成された周辺デバイス接続ポート218を含むことができる。周辺デバイス接続ポート218は、1つのタイプの接続を受け取るために単独で構成することも、あるいはUSB、FireWire、ThunderboltまたはPCIeなどの様々なタイプの物理的通信接続を受け取るために複合的に構成することもできる。また、モバイルデバイス200は、音声出力を提供するためのスピーカ214を含むことも可能である。また、モバイルデバイス200は、プラスチック、金属または材料の組合せで構築された、本明細書において説明されている構成要素のすべて、またはいくつかを含むためのハウジング220を含むことも可能である。
【0036】
ホストデバイスの高速メモリ資源にFTLテーブルをキャッシングする様々な態様は、FTLホストキャッシングシステム10によるFTLホストキャッシュ初期化方法300の実行を含むことができ、図3は、その一態様を示したものである。FTLホストキャッシュ初期化方法300は、ホストデバイス20によって開始することができる。方法300を開始するために、ホストデバイス20は、ブロック302で、広く使用されているプロセスまたは所有権を主張することができるプロセスのいずれかによってフラッシュメモリデバイス50を初期化することができる。どちらかのプロセスが完了するか、あるいはメモリデバイス50を初期化している間、ホストデバイス20は、決定ブロック304で、フラッシュメモリデバイス50がFTLホストキャッシングをサポートするかどうかを決定するためにフラッシュメモリデバイス50に問い合わせることができる。フラッシュメモリデバイス50がFTLホストキャッシングをサポートしない(すなわち決定ブロック304=「No」である)場合、ホストデバイス20は、ブロック306でフラッシュメモリデバイス50を共通フラッシュメモリデバイスとして取り扱う。
【0037】
フラッシュメモリデバイス50がFTLホストキャッシングをサポートする(すなわち決定ブロック304=「Yes」である)ことをホストデバイス20が決定すると、ホストデバイス20は、ブロック308でFTLテーブル68のサイズをフラッシュメモリデバイス50に問い合わせることができる。FTLテーブル68のサイズの情報がホストデバイスにもたらされると、ブロック312でホストデバイス20は、そのDRAM38を細分割し、記憶するのに十分な空間を確保し、かつ、FTLテーブルのコピー70を修正することができる。ブロック314でホストデバイス20は、細分割されたDRAM38の部分に対する読出しおよび/または書込み特権を含む直接メモリアクセスをフラッシュメモリデバイス50に許容し、FTLテーブルのコピー70のために取っておくことができる。FTLテーブルのコピー70がDRAM38に記憶されると、ホストデバイス20は、ブロック316で、FTLテーブル68のコピーが完了したことを知らせる通知を受け取ることができる。
【0038】
フラッシュメモリデバイス50がFTLホストキャッシングをサポートする(すなわち決定ブロック304=「Yes」である)ことをホストデバイス20が決定すると、ホストデバイス20は、決定ブロック310で、ホストデバイス20がFTLテーブル68のすべてをそれ自身のDRAM38内に記憶することができるかどうか決定することができる。ホストデバイス20がFTLテーブル68のすべてをそれ自身のDRAM38内に記憶することができる(すなわち決定ブロック310=「Yes」である)場合、ホストデバイス20は、ブロック312でそのDRAM38を細分割し、ブロック314でフラッシュメモリデバイス50に直接メモリアクセスを許容し、また、ブロック316で、FTLテーブル68のコピーが完了したことを知らせる通知を受け取る(本明細書において説明されているように)。
【0039】
ホストデバイス20がFTLテーブル68のすべてをそれ自身のDRAM38内に記憶することができない(すなわち決定ブロック310=「No」である)場合、ホストデバイス20は、ブロック318で、DRAM38内で利用可能な空間の量をフラッシュメモリデバイス50に知らせることができ、また、ブロック312を参照して上で説明した動作を継続することができる。ホストデバイス20がFTLテーブル68のすべてを記憶することができない(すなわち決定ブロック310=「No」である)場合、ブロック320でホストデバイス20は、フラッシュメモリデバイス50を共通フラッシュメモリデバイスとして、あるいはFTLホストキャッシングをサポートしないフラッシュメモリデバイスとして取り扱うことができる。
【0040】
FTLホストキャッシュ初期化方法300の代替態様は、FTLホストキャッシングを初期化し、かつ、ホストデバイス20がFTLホストキャッシングをサポートするかどうかを決定するためにホストデバイス20に問い合わせるフラッシュメモリデバイス50を含むことができる。そのような態様では、ブーティング時に、FTLホストキャッシュ初期化方法300を実行する前に、ホストデバイス20は、FTLホストキャッシングを見越してそのDRAM38の細分割区分を取っておくことができる。フラッシュメモリデバイス50がホストデバイス20に接続されると、FTLホストキャッシュ初期化方法300を開始することができ、その時点でフラッシュメモリデバイス50は、ホストデバイス20がFTLホストキャッシングをサポートするかどうかを決定するためにホストデバイス20に問い合わせることができる。ホストデバイス20がFTLホストキャッシングをサポートしない場合、フラッシュメモリデバイス50は、ホストデバイス20を共通ホストデバイスとして取り扱うことができる。ホストがFTLホストキャッシングをサポートする場合、FTLホストキャッシュ初期化方法300の残りの操作(たとえばブロック308〜320)を実行することができる。
【0041】
FTLホストキャッシング初期化方法300の様々な態様は、図4に示されている操作をさらに含むことができる。そのような操作は、図3に示されている操作と同時に、適切な順序で実施することができる。ホストデバイス20によって初期化されると、ブロック400でフラッシュメモリデバイス50は、ホストデバイス20からの、フラッシュメモリデバイス50がFTLホストキャッシングをサポートするかどうかを決定するための問合せに応答することができる。FTLホストキャッシング初期化方法300の態様は、この問合せに対する受動的応答または能動的応答のいずれかを含むことができる。たとえば応答が受動的である場合、ホストデバイス20は、特定のレジスタ内またはフラッシュメモリデバイス50のメモリ記憶位置の値を読み出して、FTLホストキャッシングのサポートを決定することができる。能動応答は、たとえば、フラッシュメモリデバイス50がFTLホストキャッシングをサポートするか否かを示す特定の信号をホストデバイス20に送るフラッシュメモリデバイス50を含むことができる。能動応答態様では、応答の欠如は、フラッシュメモリデバイス20がFTLホストキャッシングをサポートするか否かの同じく指示であってもよい。
【0042】
フラッシュメモリデバイス50がFTLホストキャッシングコンパチブルである場合、ブロック402でフラッシュメモリデバイス50は、FTLテーブル68のサイズに対するホストデバイス20からの問合せに応答することができる。この応答には、FTLテーブル全体のコピーを記憶するのに必要なメモリの量を示す値を返すことを含むことができる。ブロック402におけるこの応答の様々な態様も能動応答および受動応答を含むことができ、これは、ブロック400における、FTLホストキャッシング両立性を決定するための問合せに対する応答の場合と非常によく似ている。ホストデバイス20が直接メモリアクセス許可をフラッシュメモリデバイス50に許容すると、ブロック404でフラッシュメモリデバイス50は、FTLテーブルの完全なコピー70をホストデバイス20のDRAM38に書き込むことができる。別法としては、ホストデバイス20がFTLテーブル68のすべてを記憶することができないことをホストデバイス20が決定すると、フラッシュメモリデバイス50は、直接メモリアクセス許可がフラッシュメモリデバイス50に許容された後、ブロック408でFTLテーブルの部分コピー70をDRAM38に書き込むことができる。この操作が完了すると、ブロック406でフラッシュメモリデバイス50は、FTLテーブルのコピー70がホストデバイス20のDRAM38に記憶されたことを示す通知をホストデバイス20に送ることができる。
【0043】
フラッシュメモリ64から、および/またはフラッシュメモリ64への読出しおよび/または書込み操作を補助するために、FTLホストキャッシングの様々な態様は、ホストデバイス20のDRAM38に記憶されているFTLテーブルのコピー70から読み出し、および/またはFTLテーブルのコピー70に書き込むフラッシュメモリデバイス50を含むことができる。一態様では、図5に示されている、フラッシュメモリデバイス50からの読出し操作500を実現することができる。ブロック502でフラッシュメモリデバイス50は、ホストデバイス20から、フラッシュメモリ64の論理アドレスが結合された読出し要求を受け取ることができる。要求された操作および論理アドレスの情報がもたらされると、フラッシュメモリデバイス50は書込み操作を開始することができる。ブロック504でフラッシュメモリデバイス50は、ホストデバイス20のDRAM38に記憶されているFTLテーブルのコピー70に直接アクセスすることができる。読出し操作500の一態様では、DRAM38への直接メモリアクセスのためにフラッシュメモリデバイス50に許容される許可により、フラッシュメモリデバイス50はバスを支配することができ、あるいはデバイス20、50を接続している記憶装置バス40を介してコマンドを発することができる。ホストデバイス20のDRAM38に直接アクセスすると、ブロック506でフラッシュメモリデバイス50は、論理アドレスが結合されたFTLテーブルのコピー70から情報を読み出し/検索することができる。
【0044】
必要な情報をFTLテーブルのコピー70から検索すると、ブロック508でフラッシュメモリデバイス50は、論理アドレスをフラッシュメモリ64の物理アドレスに変換することができる。ブロック510でフラッシュメモリデバイス50は、フラッシュメモリ64にアクセスすることができ、また、ブロック512で、物理アドレスに記憶されているデータを検索し/読み出すことができる。そのフラッシュメモリ64からデータを検索すると、ブロック514でフラッシュメモリデバイス50は、データをホストデバイス20に返して読出し要求を完了することができる。
【0045】
他の態様では、図6に示されている、フラッシュメモリデバイス50への書込み操作600を実現することができる。ブロック602でフラッシュメモリデバイス50は、ホストデバイス20から、フラッシュメモリ64の論理アドレスが結合された書込み要求を受け取ることができる。要求された操作および論理アドレスの情報がもたらされると、フラッシュメモリデバイス50は書込み操作を開始することができる。ブロック604でフラッシュメモリデバイス50は、次に、ホストデバイス20のDRAM38に記憶されているFTLテーブルのコピー70に直接アクセスすることができる。書込み操作600の一態様では、DRAM38への直接メモリアクセスのためにフラッシュメモリデバイス50に許容される許可により、フラッシュメモリデバイス50はバスを支配することができ、あるいはデバイス20、50を接続している記憶装置バス40を介してコマンドを発することができる。ホストデバイス20のDRAM38に直接アクセスすると、ブロック606でフラッシュメモリデバイス50は、論理アドレスが結合されたFTLテーブルのコピー70から情報を読み出し/検索することができる。
【0046】
必要な情報をFTLテーブルのコピー70から検索すると、ブロック608でフラッシュメモリデバイス50は、論理アドレスをフラッシュメモリ64の物理アドレスに変換することができる。ブロック610でフラッシュメモリデバイス50は、フラッシュメモリ64にアクセスすることができ、また、ブロック612で、書込み要求に関連するデータをフラッシュメモリ64の物理アドレスに書き込むことができる。データがフラッシュメモリ64に記憶されると、ブロック614でフラッシュメモリデバイス50は、ホストデバイス20のDRAM38に記憶されているFTLテーブルのコピー70にもう一度直接アクセスすることができる。ブロック616でフラッシュメモリデバイス50は、FTLテーブルのコピー70を更新して、書込み要求のデータを記憶するために使用された物理アドレスの変更を反映することができる。データがフラッシュメモリ64に書き込まれ、また、FTLテーブルのコピー70が更新されると、ブロック618でフラッシュメモリデバイス50は、フラッシュメモリデバイス50への書込み操作600が完了したことを知らせる通知を送ることができる。
【0047】
フラッシュメモリデバイス50への書込み操作600の代替態様では、場合によっては特定の論理アドレスおよび物理アドレスに書き込む必要はない。特定の論理アドレスおよび物理アドレスに書き込む代わりに、場合によってはデータを書き込む空の空間の場所を知るだけで十分であり、また、おそらくその空間の条件がデータを記憶するのに良好であれば十分である。したがってブロック602で、態様によっては論理アドレスを提供することができ、あるいは提供することができないホストデバイス20から書込み要求を受け取ると、ブロック620でフラッシュ記憶装置50は、そのSRAM58に記憶されているテーブルにアクセスすることができる。SRAM58内のこれらのテーブルは、フラッシュメモリ64内の自由記憶空間またはブロックの位置を示すことができる情報、およびフラッシュメモリ64のためのウェアレベリング情報を含むことができる。ブロック622でフラッシュ記憶装置50は、SRAM58内のテーブルから自由記憶空間および/またはデータを記憶するのに適した空間のためのフラッシュメモリ64に関連するウェアレベリング情報を検索することができる。この情報を使用して、ブロック624でフラッシュ記憶装置50は、データをメモリに書き込む物理アドレスを決定し、ブロック610でフラッシュメモリ64にアクセスし、また、本明細書において説明されている、フラッシュメモリデバイス50への書込み操作600の残りの部分を継続することができる。
【0048】
他の態様は、FTLテーブルのコピー70に対してなされた変更を反映するためにFTLテーブル68を更新するステップを含むことができる。そのような態様の1つは、フラッシュメモリデバイス50への書込み操作600の一部として、あるいはフラッシュメモリデバイス50への書込み操作600の後に、FTLテーブル68を更新するステップを含むことができる。たとえばブロック616で、FTLテーブルのコピー70を更新した後の任意の時点でFTLテーブル68を更新することができる。そのような更新は、FTLテーブルのコピー70をコピーするステップ、またはFTLテーブルのコピー70に対する更新のみをフラッシュメモリ64にコピーするステップを含むことができる。FTLテーブル68に対する更新は、FTLテーブルのコピーに対する更新の前、またはFTLテーブルのコピーに対する更新と同時に実施することができることも同じく想定されている。他の態様は、定義済みの規則によって、あるいは利用可能な資源に基づいて動的にFTLテーブル68を更新するステップを含むことができる。たとえば定義済みの規則は、コマンドに応答して、スケジュール、利用可能な資源に基づいて、あるいは一組のパラメータに基づいて、周期的にFTLテーブル68の更新を実行することができる。動的なFTLテーブル68の更新は、たとえば、デバイス20、50のいずれか、または両方による、FTLホストキャッシングシステム10の性能に対する最も安価なコストで更新を実行するために必要な利用可能資源、電力および/または時間の決定に基づいて実施することができる。そのような時間は、FTLホストキャッシングシステム10が活動停止中であるか、あるいは最小量のプロセスの実行中であってもよい。
【0049】
図7は、ホストデバイス20のブートシーケンス中のFTLホストキャッシング初期化方法300のプロセスフローの一態様を示したものである。態様は、FTLホストキャッシング初期化方法300がホストデバイス20のブートシーケンス中以外の時間に実行される場合が想定されている。たとえばフラッシュメモリデバイス50が接続される時点では、ホストデバイス20は動作中である。図7では、ホストデバイス50のCPU24は、BIOSおよびドライバなどのホストデバイス50のROM30内のブート情報にアクセスし、かつ、初期化方法300の符号プロセスを実行するための信号700を送る。CPU24は、ROM30からの戻り信号702を介して情報および符号プロセスを受け取ることができる。CPU24は、フラッシュメモリデバイス50のような接続されている周辺デバイスを確認し、かつ、初期化することができ、また、FTLホストキャッシング両立性およびFTLテーブル68のサイズを問い合わせることができる。そのために、CPU24は、信号704をホストデバイス50のDMAバスコントローラ26に送り、DMAバスコントローラ26は、信号706としてフラッシュメモリデバイス50のDMAバスコントローラ54に転送することができる。信号706は、信号708としてフラッシュメモリデバイス50のマイクロコントローラ56に転送することができる。いくつかの態様では、マイクロコントローラ56は、DMAバスコントローラ54を介して、信号710を信号712としてDMAバスコントローラに転送し、かつ、信号714としてCPU24に転送し、それにより応答信号710をCPU24に送り返すことによってCPU24の問合せに応答することができる。
【0050】
FTLテーブル68のサイズの情報がもたらされると、CPU24は、信号716を送ってホストデバイス20のDRAM38を検査し、DRAM38がFTLテーブル68のすべてを記憶することができるかどうかを決定することができ、また、CPU24は、DRAM38を細分割し、DRAM38の一部をFTLテーブル68のために取っておくことができる。信号716は、DRAMコントローラ32が受け取ることができ、信号718に翻訳されてDRAM38に送られる。DRAMコントローラ32は、DRAM38からの戻り信号720を受け取り、かつ、信号722をCPU24に送り返して操作のこれらの部分を完了することができる。
【0051】
CPU24は、マイクロコントローラ56にDRAM38への直接メモリアクセスを提供することができ、また、信号724をDMAバスコントローラ26に送ることによってFTLテーブルのコピー70を要求することができる。信号724は、信号726としてDMAバスコントローラ54に転送することができ、また、信号728としてマイクロコントローラ56に転送することができる。マイクロコントローラ56は、フラッシュメモリ64内のFTLテーブル68にアクセスするための信号730を送り、FTLテーブルのコピー70を検索することができる。メモリインターフェース60は、信号730を受け取り、それを信号732として翻訳し、その信号732はフラッシュメモリ64に送られる。メモリインターフェース60は、FTLテーブルのコピー70を表す戻り信号734をメモリ64から受け取り、かつ、信号734を信号736としてマイクロコントローラ56に転送する。
【0052】
DRAM38への直接メモリアクセスが許容されると、マイクロコントローラ56は、バス34、40をバス支配し、マイクロコントローラ56をDRAM38に接続することができる。マイクロコントローラ56は、FTLテーブルのコピー70をDRAM38に書き込むための信号738を送ることができる。信号738は、信号740としてDMAコントローラ54によってDMAコントローラ26に転送され、DMAコントローラ26は、信号742をDRAMコントローラ32に転送する。信号742は信号744として翻訳され、DRAM38に送られる。DRAMコントローラ32は、信号746を受け取ることによってFTLテーブルのコピー70がDRAM38に記憶されたことを識別し、信号748をDMAバスコントローラ26に送って書込みが完了したことを示すことができる。DMAバスコントローラ26は信号748を受け取り、それを信号750として転送することができ、その信号750はDMAバスコントローラ54が受け取り、信号752としてマイクロコントローラ56に転送することができる。
【0053】
FTLテーブルのコピー70がDRAM38に書き込まれると、マイクロコントローラ56は、信号754を送ることにより、FTLホストキャッシング初期化方法300が完了したことを知らせる信号をCPU24に発信することができる。DMAバスコントローラ54は信号754を受け取り、それを信号756としてDMAバスコントローラ26に転送することができ、DMAバスコントローラ26は、信号758をCPU24に転送することができる。
【0054】
CPU24は、信号760を送ることにより、FTLホストキャッシング初期化方法300の完了に対する肯定応答を返し、かつ、DRAM38内のFTLテーブルのコピー70を使用して読出し操作および書込み操作を開始するようにマイクロコントローラに命令するか、あるいは許可を与えることができる。DMAバスコントローラ26は信号760を受け取り、それを信号762としてDMAバスコントローラ54に転送することができ、信号762は、信号764としてDMAバスコントローラ54からマイクロコントローラ56へ中継することができる。マイクロコントローラ56は、CPU24からの許可に対する肯定応答を信号766として返すことができる。DMAバスコントローラ54は信号766を受け取り、それを信号768としてDMAバスコントローラ26に転送し、また、信号780としてDMAバスコントローラ26からCPU24に転送することができる。図8は、フラッシュメモリデバイス50からの読出し操作500のプロセスフローの一態様を示したものである。CPU24は、論理アドレスの読出し要求をマイクロコントローラ56に発することができ、その要求をDMAバスコントローラ26を介して信号802として伝える信号800を送る。DMAコントローラ54は信号802を受け取り、それを信号804としてマイクロコントローラ56に転送することができる。
【0055】
FTLホストキャッシング初期化中にDRAM38への直接メモリアクセスが許容されると、マイクロコントローラ56は、バス34、40をバス支配し、マイクロコントローラ56をDRAM38に接続することができる。マイクロコントローラは、FTLテーブルのコピー70内の論理アドレスに結合された情報をDRAM38から検索し/読み出すための信号806を送ることができる。DMAバスコントローラ54は、信号806を信号808としてDMAバスコントローラ26に転送することができ、信号808は、信号810としてDRAMコントローラ32に転送することができる。DRAMコントローラ32は信号810を翻訳し、信号812をDRAM38に送ることができる。DRAMコントローラ32は、DRAM38から戻り信号814を受け取ることができ、戻り信号814は、信号816としてDMAバスコントローラ26に送ることができ、信号816は、信号818としてDMAバスコントローラ54に転送され、最後に信号820としてマイクロコントローラ56によって受け取られる。マイクロコントローラ56は、次に、FTLテーブルのコピー70から検索された情報を使用して、論理アドレスをフラッシュメモリ64の物理アドレスに変換することができる。
【0056】
物理アドレスを決定すると、マイクロコントローラ56は、信号822を送ることによってメモリ64にアクセスし、物理アドレスに記憶されているデータを検索し/読み出すことができる。メモリインターフェース60は信号822を翻訳し、信号824をメモリ64に送ることができる。物理アドレスにおける情報を表すメモリ64からの戻り信号826は、メモリインターフェース60が受け取り、信号828としてマイクロコントローラ56に送ることができる。マイクロコントローラ56は、CPU24が使用するために、信号830を送ることによって検索したデータをDRAM38に転送することができる。DMAバスコントローラ54は信号830を受け取り、それを信号832としてDMAバスコントローラ26に転送することができ、信号832は、信号834としてDRAMコントローラ32に転送することができる。DRAMコントローラ32は信号834を翻訳し、メモリ64の物理アドレスから読み出したデータをDRAM38に書き込むための信号836を送ることができる。DRAM38への書込みの完了を示す戻り信号838は、DRAMコントローラ32が受け取り、信号840としてDMAバスコントローラ26に転送することができ、DMAバスコントローラ26は、その信号を信号842としてDMAバスコントローラ54に中継することができ、DMAバスコントローラ54は、その信号を信号844としてマイクロコントローラ56に中継することができる。
【0057】
メモリ64の物理アドレスから読み出されたデータがDRAM38に書き込まれると、マイクロコントローラ56は、信号846を送ることにより、要求された読出し操作が完了し、DRAM38内のデータが利用可能であることを知らせる通知をCPU24に送ることができる。DMAバスコントローラ54は通知信号846を受け取り、それを信号848としてDMAバスコントローラ26に転送することができ、信号848は、信号850としてCPU24に転送することができる。
【0058】
図9は、フラッシュメモリデバイス50への書込み操作600のフロープロセスの一態様を示したものである。CPU24は、論理アドレスの書込み要求をマイクロコントローラ56に発することができ、その要求をDMAバスコントローラ26を介して信号902として伝える信号900を送る。DMAコントローラ54は信号902を受け取り、それを信号904としてマイクロコントローラ56に転送することができる。
【0059】
FTLホストキャッシング初期化中にDRAM38への直接メモリアクセスが許容されると、マイクロコントローラ56は、バス34、40をバス支配し、マイクロコントローラ56をDRAM38に接続することができる。マイクロコントローラは、FTLテーブルのコピー70内の論理アドレスに結合された情報をDRAM38から検索し/読み出すための信号906を送ることができる。DMAバスコントローラ54は、信号906を信号908としてDMAバスコントローラ26に転送することができ、信号908は、信号910としてDRAMコントローラ32に転送することができる。DRAMコントローラ32は信号910を翻訳し、信号912をDRAM38に送ることができる。DRAMコントローラ32は、DRAM38から戻り信号914を受け取ることができ、戻り信号914は、信号916としてDMAバスコントローラ26に送ることができ、信号916は、信号918としてDMAバスコントローラ54に転送され、最後に信号920としてマイクロコントローラ56によって受け取られる。マイクロコントローラ56は、次に、FTLテーブルのコピー70から検索された情報を使用して、論理アドレスをフラッシュメモリ64の物理アドレスに変換することができる。
【0060】
書込みデータの記憶場所に関する情報を受け取ると、マイクロコントローラ56は、信号922を送ることによってDRAM38から書込みデータを検索することができる。DMAバスコントローラ54は信号922を受け取り、それを信号924としてDMAバスコントローラ26に転送することができる。DRAMコントローラ32は、DMAバスコントローラ26から信号926を受け取り、それを信号928として翻訳し、その信号928をDRAM38に送ることができる。DRAMコントローラ32は、DRAM38から読み出された書込みデータを信号930として受け取り、書込みデータを信号932としてDMAバスコントローラ26に転送することができる。DMAバスコントローラ26は信号932を受け取り、それを信号934としてDMAバスコントローラ54に転送することができ、信号934は、信号936としてマイクロコントローラ56に転送することができる。
【0061】
物理アドレスを決定し、かつ、書込みデータを検索すると、マイクロコントローラ56は、信号938を送ることによってメモリ64にアクセスし、物理アドレスにデータを書き込むことができる。メモリインターフェース60は信号938を翻訳し、信号940をメモリ64に送ることができる。メモリインターフェース60は、メモリ64から戻り信号942を受け取ることによってメモリ64への書込みが完了したことを識別し、書込みが完了したことを示す信号944をマイクロコントローラ56に送ることができる。
【0062】
FTLホストキャッシング初期化中にDRAM38への直接メモリアクセスが許容されると、マイクロコントローラ56は、バス34、40をバス支配し、マイクロコントローラ56をDRAM38に接続することによってFTLテーブルのコピー70を更新することができる。マイクロコントローラは、直接DRAM38に書き込むための信号946を送ることができる。DMAバスコントローラ54は、信号946を信号948としてDMAバスコントローラ26に転送することができ、信号948は、信号950としてDRAMコントローラ32に転送することができる。DRAMコントローラ32は信号950を翻訳し、信号952をDRAM38に送ることができる。DRAMコントローラ32は、DRAM38から戻り信号954を受け取ることによってFTLテーブルのコピー70の更新が完了したことを識別することができる。信号954は、信号956としてDMAバスコントローラ26に送ることができ、信号958としてDMAバスコントローラ54に転送され、最後に信号960としてマイクロコントローラ56によって受け取られる。
【0063】
FTLテーブルのコピー70の更新が完了すると、マイクロコントローラ56は、信号962を送ることによって操作600が完了したことをCPU24に通知することができる。DMAバスコントローラ54は信号962を受け取り、それを信号964としてDMAバスコントローラ26に転送することができ、信号964は、信号966としてCPU24に転送することができる。
【0064】
図10は、フラッシュメモリデバイス50への書込み操作600のフロープロセスの一態様を示したものである。CPU24は、書込み要求をマイクロコントローラ56に発することができ、その要求をDMAバスコントローラ26を介して信号1002として伝える信号1000を送る。DMAコントローラ54は信号1002を受け取り、それを信号1004としてマイクロコントローラ56に転送することができる。
【0065】
書込み要求を受け取ると、マイクロコントローラ56は、信号1006を送ることによってフラッシュメモリデバイス50のSRAM58にアクセスし、フラッシュメモリ64に関連する、書込み要求の主体データを記憶するのに適した空間に関する情報を検索し/読み出すことができる。この情報は、自由記憶空間および/またはフラッシュメモリ64のためのウェアレベリング情報を含むことができる。マイクロコントローラ56は、所望の情報を表す戻り信号1008をSRAM58から受け取ることができる。マイクロコントローラ56は、この情報を使用して、データを書き込むためのフラッシュメモリ64の物理アドレスを決定することができる。
【0066】
書込みデータを記憶する場所を決定すると、マイクロコントローラ56は、信号1010を送ることによってDRAM38から書込みデータを検索することができる。DMAバスコントローラ54は信号1010を受け取り、それを信号1012としてDMAバスコントローラ26に転送することができる。DRAMコントローラ32は、DMAバスコントローラ26から信号1014を受け取り、それを信号1016として翻訳し、その信号1016をDRAM38に送ることができる。DRAMコントローラ32は、DRAM38から読み出された書込みデータを信号1018として受け取り、その書込みデータを信号1020としてDMAバスコントローラ26に転送することができる。DMAバスコントローラ26は信号1020を受け取り、それを信号1022としてDMAバスコントローラ54に転送することができ、信号1022は、信号1024としてマイクロコントローラ56に転送することができる。
【0067】
物理アドレスを決定し、かつ、書込みデータを検索すると、マイクロコントローラ56は、信号1026を送ることによってメモリ64にアクセスし、メモリ64の物理アドレスにデータを書き込むことができる。メモリインターフェース60は信号1026を翻訳し、信号1028をメモリ64に送ることができる。メモリインターフェース60は、メモリ64から戻り信号1030を受け取ることによってメモリ64への書込みが完了したことを識別し、書込みが完了したことを示す信号1032をマイクロコントローラ56に送ることができる。
【0068】
FTLホストキャッシング初期化中にDRAM38への直接メモリアクセスが許容されると、マイクロコントローラ56は、バス34、40をバス支配し、マイクロコントローラ56をDRAM38に接続することによってFTLテーブルのコピー70を更新することができる。マイクロコントローラは、直接DRAM38に書き込むための信号1034を送ることができる。DMAバスコントローラ54は、信号1034を信号1036としてDMAバスコントローラ26に転送することができ、信号1036は、信号1038としてDRAMコントローラ32に転送することができる。DRAMコントローラ32は信号1038を翻訳し、信号1040をDRAM38に送ることができる。DRAMコントローラ32は、DRAM38から戻り信号1042を受け取ることによってFTLテーブルのコピー70の更新が完了したことを識別することができる。信号1042は、信号1044としてDMAバスコントローラ26に送ることができ、信号1046としてDMAバスコントローラ54に転送され、最後に信号1048としてマイクロコントローラ56によって受け取られる。
【0069】
FTLテーブルのコピー70の更新が完了すると、マイクロコントローラ56は、信号1050を送ることによって操作600が完了したことをCPU24に通知することができる。DMAバスコントローラ54は信号1050を受け取り、それを信号1052としてDMAバスコントローラ26に転送することができ、信号1052は、信号1054としてCPU24に転送することができる。
【0070】
いくつかの態様では、任意の構成要素間のプロセスフローの任意の部分は、本明細書において説明されている多くのプロセスのうちの1つに対して、図7〜10に示されている回数より多く繰り返すことができる。たとえばフラッシュメモリデバイス50からホストデバイスへのFTLテーブル68のコピーを表す信号734〜758は、コピーするトランザクションとして多数回にわたって出現させることができる。トランザクションはコピーの実行であってもよく、個々のトランザクションはFTLテーブル68の一部をコピーし、このトランザクションは、コピーが完了するまで続く。32MBのFTLテーブルデータの一例を取ると、トランザクションごとにホストデバイス20にコピーすることができるのは、FTLテーブルデータのたったの32バイト、64バイトまたは128バイトにすぎない。図7〜10に示されている任意の読出し操作あるいは書込み操作に対しても同様である。
【0071】
上記の方法の説明およびプロセスフロー図は、単に説明のための例として提供され、様々な態様の操作が提示された順序で実施されなければならないことを要求または暗示するものではない。当業者には理解されるように、上記の態様における操作の順序は、任意の順序でも実施することができる。「その後」、「次いで」、「次に」、等々などの語は、動作の順序を限定するものではなく、これらの語は単に、本方法の説明を通して読者を導くために使用される。さらに、単数表現における特許請求要素のあらゆる参照は、その要素を単数に限定するものとして解釈してはならない。
【0072】
本明細書において開示されている態様に関連して説明されている様々な実例論理ブロック、モジュール、回路およびアルゴリズム操作は、電子ハードウェア、コンピュータソフトウェアまたは両方の組合せとして実現することができる。ハードウェアおよびソフトウェアのこの互換性を明確に示すために、様々な実例構成要素、ブロック、モジュール、回路および操作は、上では概ねそれらの機能の点で説明されている。そのような機能がハードウェアとして実現されるか、あるいはソフトウェアとして実現されるかどうかは、総合システムに課される特定のアプリケーションおよび設計制約で決まる。当業者は、説明されている機能を特定のアプリケーションごとに可変方式で実現することができるが、そのような実施態様決定は、本開示の範囲を逸脱させるものとして解釈してはならない。
【0073】
本明細書において開示されている態様に関連して説明されている様々な実例論理、論理ブロック、モジュールおよび回路を実現するために使用されるハードウェアは、本明細書において説明されている機能を実施するために設計された、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、書替え可能ゲートアレイ(FPGA)、または他のプログラマブル論理デバイス、離散ゲートまたはトランジスタ論理、離散ハードウェア構成要素、またはそれらの任意の組合せを使用して実現または実施することができる。汎用プロセッサはマイクロプロセッサであってもよいが、代替では、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラまたは状態マシンであってもよい。また、プロセッサは、計算デバイスの組合せ、たとえばDSPと、マイクロプロセッサ、複数のマイクロプロセッサ、DSPコアと関連した1つまたは複数のマイクロプロセッサとの組合せ、あるいは任意の他のそのような構成として実現することも可能である。代替として、いくつかの操作または方法は、所与の機能に固有の回路機構によって実施することができる。
【0074】
1つまたは複数の例示的態様では、説明されている機能は、ハードウェア、ソフトウェア、ファームウェアまたはそれらの任意の組合せで実現することができる。ソフトウェアで実現される場合、機能は、非一時的コンピュータ可読媒体上または非一時的プロセッサ可読記憶媒体上の1つまたは複数の命令またはコードとして記憶することができる。本明細書において開示されている方法またはアルゴリズムの操作は、非一時的コンピュータ可読記憶媒体上または非一時的プロセッサ可読記憶媒体上に常駐させることができるプロセッサ実行可能ソフトウェアモジュールの中で具体化することができる。非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスすることができる任意の記憶媒体であってもよい。非制限の例として、そのような非一時的コンピュータ可読媒体または非一時的プロセッサ可読記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ、CD-ROM、もしくは他の光ディスク(disk)記憶装置、磁気ディスク(disk)記憶装置、または他の磁気記憶デバイス、あるいは所望のプログラムコードを命令またはデータ構造の形で記憶するために使用することができ、かつ、コンピュータによってアクセスすることができる任意の他の媒体を含むことができる。本明細書において使用されているディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル汎用ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびブルーレイディスク(disc)を含み、diskは、通常、データを磁気的に再生し、一方、discは、レーザを使用してデータを光学的に再生する。上記の組合せも同じく非一時的コンピュータ可読媒体および非一時的プロセッサ可読記憶媒体の範囲内に含まれる。さらに、方法またはアルゴリズムの操作は、コンピュータプログラム製品に組み込むことができるコードおよび/または命令の1つまたは任意の組合せ、あるいはセットとして、非一時的プロセッサ可読記憶媒体および/または非一時的コンピュータ可読媒体上に常駐させることも可能である。
【0075】
開示されている態様についての以上の説明は、すべての当業者による本発明の構築および使用を可能にするために提供されたものである。当業者には、これらの態様に対する様々な修正が容易に明らかであり、また、本明細書において定義されている一般的な原理は、本発明の精神または範囲を逸脱することなく、他の態様に適用することができる。したがって本発明は、本明細書において示されている態様に限定されることは意図されておらず、以下の特許請求の範囲、および本明細書において開示されている原理ならびに新規な特徴と無矛盾の最も広義の範囲と一致するものとする。
【符号の説明】
【0076】
10 FTLホストキャッシングシステム
20 ホストデバイス
22 システムオンチップ(SoC)
24、52、202 プロセッサ
26、32、54 通信コントローラ
28、30、38、58、64 メモリまたは記憶装置
34 通信リンク(ホストバス)
36、40、62、66 通信リンク
40 記憶装置バス
50 フラッシュメモリデバイス
56 マイクロコントローラ
60 メモリインターフェース
68 FTLテーブル
70 FTLテーブルのコピー
200 モバイルデバイス
204 タッチスクリーンコントローラ
206 内部メモリ
208 無線信号トランシーバ
210 アンテナ
212 タッチスクリーンパネル
214 スピーカ
218 周辺デバイス接続ポート
220 ハウジング
300 FTLホストキャッシュ初期化方法
500 フラッシュメモリデバイスからの読出し操作
600 フラッシュメモリデバイスへの書込み操作
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10