JP5443384B2 - ホスト書き込み動作とキャッシュフラッシングとのバランスをとるための方法およびシステム - Google Patents

ホスト書き込み動作とキャッシュフラッシングとのバランスをとるための方法およびシステム Download PDF

Info

Publication number
JP5443384B2
JP5443384B2 JP2010540753A JP2010540753A JP5443384B2 JP 5443384 B2 JP5443384 B2 JP 5443384B2 JP 2010540753 A JP2010540753 A JP 2010540753A JP 2010540753 A JP2010540753 A JP 2010540753A JP 5443384 B2 JP5443384 B2 JP 5443384B2
Authority
JP
Japan
Prior art keywords
cache
host
storage
storage device
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010540753A
Other languages
English (en)
Other versions
JP2011508347A (ja
Inventor
ラッセル,メナヘム
アフリア,イツァーク
リーバー,オファー
シュリック,マーク
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Israel Ltd
Original Assignee
SanDisk IL Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SanDisk IL Ltd filed Critical SanDisk IL Ltd
Publication of JP2011508347A publication Critical patent/JP2011508347A/ja
Application granted granted Critical
Publication of JP5443384B2 publication Critical patent/JP5443384B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、フラッシュメモリなどの不揮発性メモリシステムでの、ホスト書き込み動作とキャッシュフラッシングとのバランスをとるための方法およびシステムに関する。
フラッシュメモリなどの不揮発性メモリシステムは、消費者製品用に広く採用されてきた。フラッシュメモリは、様々な形態で、例えば、ホスト装置間で持ち運びできる携帯用メモリカードの形態で、あるいは、ホスト装置に組み込まれるソリッドステートディスク(SSD)として見ることもできる。フラッシュメモリで見られる2つの一般的なメモリセルアーキテクチャには、NORとNANDとが含まれる。一般的なNORアーキテクチャでは、メモリセルは、列方向に延びる隣接するビット線のソース拡散とドレイン拡散との間に接続され、コントロールゲートは、セルの行に沿って延びるワード線に接続される。メモリセルは、ソースとドレインとの間のセルチャネル領域の少なくとも一部の上に位置する少なくとも1つの記憶素子を含む。したがって、記憶素子上のプログラムされたレベルの電荷はセルの動作特性を制御し、次いでアドレス指定されるメモリセルに適切な電圧を印加することによって読み出すことができる。
一般的なNANDアーキテクチャは、セルの列を形成するように個々のビット線と基準電位との間に1つ以上の選択トランジスタとともに接続される、16個または32個などの3つ以上直列に接続されるメモリセルのストリングを利用する。ワード線は、これらの列の多くの中のセルを横切るように延びる。列の中の個々のセルは、ストリングを通って流れる電流がアドレス指定されるセルに蓄積される電荷のレベルに依存するように、ストリング内の残りのセルをオンさせることによって、プログラミング中に読み出されベリファイされる。
フラッシュメモリ管理システムの中には、自己キャッシングアーキテクチャを利用しているものがある。このアーキテクチャでは、ホストから受信されたデータをまずキャッシュとして指定されるフラッシュメモリの一部に記憶し、その後で主記憶領域として指定されるフラッシュメモリの一部にこれをコピーする。この種類のフラッシュメモリ管理システムでは、キャッシュフラッシング動作をスケジュールするタイミングが問題である。キャッシュフラッシング動作では、キャッシュ内のデータの一部、一般に、共通論理ブロックに対応するデータをキャッシュから主記憶領域にコピーした後にキャッシュから削除してキャッシュに新しい入力データのための場所を空ける。本願明細書で使用される用語のキャッシュフラッシングとキャッシュクリアリングとは同じ意味である。
自己キャッシングフラッシュメモリ管理システムは、キャッシュフラッシング動作のスケジューリングおよびフラッシュされる特定データの選択に関して異なるポリシーを用いてもよい。一般に、スケジューリングの決定に影響を及ぼす要因は、キャッシュの満杯度およびサービスをする必要があるホストから届くアクセス要求があるかどうかである。記憶システムがホスト要求に関してアイドル状態の場合、一般に、フラッシュメモリ管理システムは、キャッシュが可能性のある今後のホスト動作の急増に対して充分に準備されるようにキャッシュ内のすべてのデータをフラッシュする。
一般に、自己キャッシュ記憶装置の書き込み性能は、2つの数字によって規定される。第1の数字は、バースト書き込み性能である。バースト書き込み性能は、キャッシュ内に充分な空きがある場合に記憶装置がデータの入力ストリームを吸収することができる速度である。したがって、バースト書き込み性能は、キャッシュの書き込み性能のみに依存し、主記憶領域の書き込み性能には依存しない。第2の数字は、連続書き込み性能である。連続書き込み性能は、記憶装置がキャッシュサイズよりもずっと大きい入力データのストリームを吸収することができる速度である。連続書き込み性能は、キャッシュ書き込み性能と主記憶領域書き込み性能との両方の関数である。主記憶領域がキャッシュよりもずっと遅い場合には、連続書き込み性能は、主に主記憶領域書き込み性能によって決まる。
記憶装置がある所与の連続入力速度に規定されていても、ホストが記憶装置内に規定よりも速い速度でデータを送信することを止めさせるものは何もなく、記憶装置に依存して、記憶装置がその速度を保つことができない場合には入力ストリームを遅延させる「ビジー(busy)」条件を発生し、そして、より多くの入力を受信することができるようになった場合にはビジー状態を解除したりする。これはまさに実際のホストが何台稼動しているかである。ホストは、書き込まれるデータを記憶装置にできるだけ速く送信し、記憶装置がそれを止めさせて待機させるまで送信し続ける。
このようなパターンの動作に続いて、一般的に観測される効果は以下のようである。記憶装置のキャッシュが空で始まるとすると、ホストはまずバースト書き込み性能と等しい高い性能を認識する。キャッシュは次第に満たされるが、キャッシュが満杯になるかそれにかなり近くなる時点まで性能は依然としてバースト性能の状態である。この時点で、記憶装置は、ビジー状態を発生させ、一部のコンテンツを主記憶領域に移動させることによってキャッシュ内の空間をクリアし始める必要がある。一般に、ビジー状態は、全論理ブロックに対応するデータがキャッシュからコピーされて初めてクリアされる。その結果、ホストは、主記憶が低速でブロックが大きい場合には、十分の何秒か数秒もあり得る相対的に長いビジー期間に遭遇することもある。ホストから見た平均性能は依然として公示される連続書き込み性能速度規格の範囲内かもしれないが、一部のホストはこのように長いビジー期間に対応することができないこともある。その理由は、長いビジー期間によって、ビジー期間中に最悪の状態で生成されることもある新しいデータをすべて蓄積するための大きなバッファがホストに必要となるためである。
幾つかのキャッシュの実施例では、キャッシュの空きが少なくなるに従ってデータをキャッシュからクリアする実効速度が低下することがあるために、この問題はさらに深刻化することもある。ホストが連続的ではなくてランダムなアドレスにデータを書き込む場合や、キャッシュが多くのデータページを含む大きなブロックに編成されるフラッシュメモリを使用している場合にこの問題が発生することもある。このような装置では、キャッシュが満杯状態に近い状態で連続的に動作している場合に、ビジー期間が長くなるだけでなく連続書き込み性能も満足されないこともある。
一部の例では、記憶装置がビジー状態を示すこともできる時間上の厳しい制約も存在し、この制約を破るとホストが処理を停止することもある。例えば、フラッシュメモリのセキュアデジタル(SD)規格には、250ミリ秒以内にホスト書き込みコマンドに必ず応答するSD準拠カードが必要である。カードがこの厳しい時間制約を満足しない場合には、ホストはカードとの通信セッションを終了してデータ記憶動作を停止することもある。したがって、「常時フルキャッシュ (always full cache)」モードの動作に入ることによって、この時間制約を破るリスクが大幅に増加する可能性がある。
一般に、キャッシュ付き記憶装置はデータをフラッシュするためのポリシーを使用するが、このポリシーでは、データが2つの条件のうちの1つの条件でキャッシュからフラッシュされる。第1の条件は、記憶装置がアイドル状態の場合であり、ホストからデータを受信しない、あるいは逆にホストによってアクセスされない場合に記憶装置はアイドルとして定義される。第2の条件は、キャッシュにこれ以上空きがないために新しいデータを受信する方法が他にない場合である。このようなキャッシュフラッシングポリシーは、前述した問題をもたらす可能性がある。キャッシュ付き記憶装置の中には、フラッシュ動作に対する明示的制御をホストに提供するものがあるが、ホストがキャッシュ動作に対してこのような制御を利用して前述した問題を回避するのは困難である。ホストがそうするためには、記憶装置の内部についての詳細な知識および理解が必要となり、これは一般的なホストが有しない情報である。
米国特許第5,930,167号 米国特許出願第11/318,906号 米国特許第5,937,425号 米国特許第6,678,785号 米国特許出願第11/876,893号
前述した問題に対処するために、ホスト書き込み動作とキャッシュフラッシングとのバランスをとるための方法およびシステムが開示される。
本発明の第1の態様によれば、書き込みコマンドで外部ホストから受信される受信データが、最初にキャッシュ記憶に記憶された後で主記憶に移動される、記憶装置におけるキャッシュ記憶から主記憶へのデータの移動を管理する方法が開示される。この方法は、記憶装置でホストから書き込みコマンドを受信するステップと、書き込みコマンドとともに受信されるデータをキャッシュ記憶に記憶するステップと、書き込みコマンドを受信した後に記憶装置でビシー状態を生成するステップと、を含む。この方法は、キャッシュ記憶にデータを記憶するステップに続いて、ビジー状態を維持しながらデータの少なくとも一部をキャッシュ記憶から主記憶にコピーするステップであって、コピーするステップが開始されるときに次の書き込みコマンドでホストからデータを受信するキャッシュに充分な使用可能な容量が存在するようにしたステップと、をさらに含む。
別の態様によれば、書き込みコマンドで外部ホストから受信される受信データが、最初にキャッシュ記憶に記憶された後で主記憶に移動される、記憶装置におけるキャッシュ記憶から主記憶へのデータの移動を管理する方法が開示される。この方法は、キャッシュ記憶の使用可能な容量を検出するステップと、検出されたキャッシュ記憶の使用可能な容量に基づいてホスト書き込みコマンドに対するキャッシュクリアリングステップの比率を決定するステップと、を含む。決定された比率を達成するために、キャッシュクリアリングステップは、ホスト書き込みコマンドの実行とインタリーブされる。キャッシュクリアリングステップの実行は、ホスト書き込みコマンドを実行するのに充分な時間より長い期間、ホスト書き込みコマンドによってトリガされ記憶装置で生成されるビジー状態を維持するステップと、この期間にキャッシュ記憶から主記憶にデータをコピーするステップと、を含む。
さらに別の態様では、記憶装置でキャッシュ記憶から主記憶へのデータの移動を管理する方法は、キャッシュ記憶の使用可能な容量を検出するステップと、次いで検出された使用可能な容量に基づいてホストコマンドに対するキャッシュクリアリングステップの比率を決定するステップと、を含む。決定されたホストコマンドに対するキャッシュクリアリングステップの比率を達成するために、キャッシュクリアリングステップは、ホストコマンドの実行とインタリーブされる。キャッシュクリアリングステップの実行は、ホストコマンドを実行するのに充分な時間より長い期間、記憶装置で生成されホストコマンドによってトリガされるビジー状態を維持するステップと、この期間にキャッシュ記憶から主記憶にデータの少なくとも一部をコピーするステップと、を含む。
本発明の別の態様では、記憶装置は、ホスト書き込みコマンドに関連するデータを受信するように構成されるキャッシュ記憶と、キャッシュ記憶と通信しキャッシュ記憶から転送されるデータを受信するように構成される主記憶と、キャッシュ記憶から主記憶へのデータの転送を管理するように配置されるコントローラと、を備える。コントローラは、ホスト書き込みコマンドを受信した後にビジー状態を生成し、ホスト書き込みコマンドとともに受信されるデータをキャッシュ記憶に書き込んだ後で、ビジー状態を維持しながらキャッシュ記憶から主記憶へデータの少なくとも一部をコピーし、コピーが開始されるときに次の書き込みコマンドでホストからデータを受信するキャッシュ記憶に充分な使用可能な容量が存在するように構成される。
本発明の別の態様では、データをホストから受信するように構成されるキャッシュ記憶と、キャッシュ記憶と通信しキャッシュ記憶から転送されるデータを受信するように構成される主記憶と、キャッシュ記憶から主記憶へのデータの転送を管理するように配置されるコントローラと、を備える記憶装置が開示される。コントローラは、キャッシュ記憶の使用可能な容量が、ホストからデータを受信する最小容量よりも大きく、所望のしきい値容量よりも小さいかどうかを検出するようにさらに構成される。コントローラは、検出された使用可能な容量に基づいてホストコマンドに対するキャッシュクリアリングステップの比率を決定し、次いで決定されたホストコマンドに対するキャッシュクリアリングステップの比率を達成するために、キャッシュクリアリングステップの実行をホストコマンドの実行とインタリーブするようにさらに構成される。キャッシュクリアリングステップの実行は、ホストコマンドを実行するのに充分な時間より長い期間、記憶装置で生成されホストコマンドによってトリガされるビジー状態を維持することと、この期間にキャッシュ記憶から主記憶にデータをコピーすることとを含む。
別の態様によれば、自己キャッシング記憶装置においてホストコマンドの実行とキャッシュクリアリングとのバランスをとるためのプロセッサ実行可能命令を含むプロセッサ読み出し可能媒体が開示される。プロセッサ実行可能命令は、キャッシュ記憶の使用可能容量を検出し、検出された使用可能容量に基づいてホストコマンドに対するキャッシュクリアリングステップの比率を決定し、決定されたホストコマンドに対するキャッシュクリアリングステップの比率を達成するために、キャッシュクリアリングステップの実行をホストコマンドの実行とインタリーブする動作をプロセッサに実施させるように構成される。キャッシュクリアリングステップの実行は、ホストコマンドを実行するのに充分な時間より長い期間、記憶装置で生成されホストコマンドによってトリガされるビジー状態を維持することと、この期間にキャッシュ記憶から主記憶にデータの少なくとも一部をコピーすることとを含む。
別の態様では、記憶装置においてキャッシュ記憶から主記憶へのデータの転送を管理するように配置されるコントローラを備える回路が開示される。コントローラは、キャッシュ記憶の使用可能容量を検出し、検出されたキャッシュ記憶の使用可能容量に基づいてホストコマンドに対するキャッシュクリアリングステップの比率を決定し、決定されたホストコマンドに対するキャッシュクリアリングステップの比率を達成するために、キャッシュクリアリングステップの実行をホストコマンドの実行とインタリーブするように構成される。キャッシュクリアリングステップの実行は、ホストコマンドを実行するのに充分な時間より長い期間、記憶装置で生成されホストコマンドによってトリガされるビジー状態を維持することと、この期間にキャッシュ記憶から主記憶にデータをコピーすることとを含む。
さらに別の態様によれば、回路は、記憶装置においてキャッシュ記憶から主記憶へのデータの転送を管理するように配置されるコントローラを備える。コントローラは、ホスト書き込みコマンドを受信した後にビジー状態を生成し、ホスト書き込みコマンドとともに受信されるデータをキャッシュ記憶に書き込んだ後で、ビジー状態を維持しながらキャッシュ記憶から主記憶へデータの少なくとも一部をコピーし、コピーが開始されるときに次の書き込みコマンドでホストからデータを受信するキャッシュ記憶に充分な使用可能な容量が存在するように構成される。
自己キャッシングメモリシステムを示すブロック図である。 図1のシステムの例示的な物理メモリ構成を示す図である。 図2の物理メモリの一部を示す拡大図である。 好適な実施形態による書き込みとキャッシュフラッシュとのバランス機構を実施するかどうかを決定する方法を示す流れ図である。 好適な実施形態によるホスト書き込みとキャッシュフラッシュとのバランス機構の一実施形態を示す流れ図である。
本発明の態様を実施するのに適したフラッシュメモリシステムが、図1に示される。ホストシステム10は、自己キャッシングフラッシュ記憶装置12内へデータを格納し、これからデータを取り出す。記憶装置12は、ホストに組み込まれても、あるいは、カードまたは機械的および電気的コネクタを介してホスト10に着脱可能に接続される他の着脱可能なドライブの形態で存在してもよい。ホスト10は、パーソナルコンピュータなどの多くのデータ生成装置のいずれかであってもよい。ホスト10は、通信チャネル14によって記憶装置と通信する。
記憶装置12は、キャッシュ記憶16および主記憶18として配置される不揮発性メモリセルを含む。キャッシュ記憶16および主記憶18は、同じ種類のフラッシュメモリセルで異なるモードで動作するように構成されてもよく、または異なる種類のフラッシュメモリセルでもよい。例えば、キャッシュ記憶16は、シングルレベルセル(SLC)形のフラッシュ構成で構成されて、主記憶18は、マルチレベルセル(MLC)形のフラッシュメモリ構成で構成されてもよく、SLCフラッシュの速い書き込み速度とMLCフラッシュの高密度とをうまく利用できるようにしてもよい。キャッシュ記憶16および主記憶18には、フラッシュメモリの種類の異なる組み合わせも考えられる。記憶装置12は、プロセッサ20と、プロセッサ20を動作させる命令22と、論理ブロック対物理ブロック変換テーブル23とを含んでいてもよいコントローラ19も含む。本願明細書に記載されるキャッシュフラッシングポリシーを実施するのに適している適切な自己キャッシングフラッシュメモリ構成の例が、ともにその全体が本願明細書において参照により援用されている、Leeらの米国特許第5,930,167号(特許文献1)およびLasserらの米国特許出願第11/318,906号(特許文献2)に開示される。
前述したキャッシュ記憶16および主記憶18は、メモリセルのブロックに配置される不揮発性フラッシュメモリであってもよい。メモリセルのブロックは、消去の単位、すなわち、物理的に同時に消去可能なメモリセルの最小数である。しかし、並列性を向上させるために、ブロックはさらに大きいメタブロック単位で動作されてもよい。メモリセルの各プレーンから1つのブロックを論理的に結合してメタブロックを形成してもよい。キャッシュ記憶16がSLC構成で主記憶18がMLC構成である記憶装置では、1つの主記憶ブロックに等しいデータ量を記憶するのに複数のキャッシュブロックが必要な場合もあるためメタブロック配置は有用である。図2を参照すると、代表的なフラッシュメモリセルアレイの概念図が示される。4つのプレーン、すなわちサブアレイ30、32、34および36のメモリセルは、単一の集積メモリセルチップ上、2つのチップ(各チップ上のプレーンのうちの2つのプレーン)上、または4つの個々のチップ上に存在してもよい。具体的な配置は以下の説明に重要ではなく、他の多くのプレーンがシステムに存在してもよい。プレーンは、各プレーン30、32、34および36に配置されるブロック38、40、42および44などの長方形で図2に示されるメモリセルのブロックに個別に分割される。各プレーンには数十または数百のブロックが存在してもよい。ブロックは論理的に結合されて、1つの単位として消去することもできるメタブロックを形成してもよい。例えば、ブロック38、40、42および44は、第1のメタブロック46を形成してもよい。メタブロックを形成するのに使用されるブロックは、ブロック50、52、54および56から成る第2のメタブロック48で示されるように、各プレーン内の同じ相対的位置に限定される必要はない。
図3に示されるように、個々のブロックは、今度は動作上の目的でメモリセルのページに分割される。例えば、各ブロック38、40、42および44のメモリセルは、それぞれ8つのページP0〜P7に分割される。あるいは、各ブロック内で16個、32個またはそれ以上のページのメモリセルが存在してもよい。ページは、一度にプログラムされる(書き込まれる)または読み出される最小のデータ量を含むブロック内のデータプログラミング(書き込み)および読み出しの単位である。4つの各ブロック38、40、42および44について1つの物理ページで形成されるメタページ58が図3に示される。メタページ58は、4つの各ブロックにページP2を含むが、メタページのページは、必ずしも各ブロック内に同じ相対的位置を有する必要はない。メタページは、プログラミングの最大単位である。図2および図3に開示されるブロックは、前述した物理メモリセルのグループに関連するため、本願明細書では物理ブロックと称される。本願明細書で使用される論理ブロックは、物理ブロックと同じサイズを有するように定義されるアドレス空間の仮想単位である。各論理ブロックは、ホスト10から受信されるデータと関連する論理ブロックアドレス(LBA)の範囲を含む。このとき、LBAは、データが物理的に記憶される記憶装置12の1つ以上の物理ブロックにマップされる。動作中、記憶装置12のキャッシュ記憶16は、ホスト書き込みコマンドに関連するデータをホスト10から受信する。キャッシュ記憶16で受信されたデータは、ホストによって論理ブロックのアドレスでアドレス指定され、このデータがキャッシュ記憶16に記憶される場合、所与の論理ブロックのアドレスに関連するデータは、キャッシュ記憶16の単一の物理ブロックに記憶されても、あるいは、キャッシュ記憶16の複数の異なる物理ブロックにわたって分散されてもよい。プロセッサ20は、論理アドレスの物理アドレスへのマッピングを論理対物理マッピングテーブル23で追跡する。プロセッサ20は、現在のキャッシュ記憶容量を確認して、命令データベース22のプロセッサ実行可能命令に基づき本願明細書に記載されるホスト書き込みとキャッシュフラッシュとのバランス機構を開始するべきかどうかを判断する。現在のキャッシュ容量およびバランスアルゴリズムに基づいてキャッシュ記憶フラッシングが保証される場合、プロセッサは、論理ブロックのデータを確認して、特定の論理ブロックに対応するキャッシュ記憶16の1つ以上の物理ブロックに存在するデータの一部を主記憶18にコピーするかどうかを判断する。本願明細書に開示されるホスト書き込みとキャッシュフラッシュとのバランスアルゴリズムを組み込むように変更されてもよいフラッシュ管理システムの例を、ともにその全体が本願明細書において参照により援用されている、Banの米国特許第5,937,425号(特許文献3)およびLasserの米国特許第6,678,785号(特許文献4)で見出すこともできる。
ホストをサポートするために提供される記憶装置12のリソースと、キャッシュ記憶16が満杯になり過ぎないようにするために割り当てられるリソースとの間のバランスをとるために、記憶装置12は、ホスト10に実際に提供することができるよりも低い性能を意図的に提供する、ホスト書き込みとキャッシュフラッシュとのバランスアルゴリズムを実施するように構成される。記憶装置は、フラッシング動作が必要ない場合でも、キャッシュ記憶をフラッシュするために「盗まれた(stolen)」時間を利用する。本願明細書で提供される例は、ホスト書き込みコマンドをキャッシュフラッシングとバランスさせることに焦点を合わせているが、ホスト読み出しコマンドまたは消去コマンドなどの他のホストコマンドについてもキャッシュクリアリングステップとインタリーブされてキャッシュ記憶の平衡を達成することもできると考えられる。
図4に示されるように、キャッシュ記憶16が相対的に空いている場合には、記憶装置12は、ホスト10が最大のサポートを受けるとともに最大の性能(バースト書き込み性能)を認識するように、周知のキャッシュフラッシングポリシーを使用してもよい。ホスト10が装置にアクセスしておらず記憶装置が本来アイドル状態になる場合を除いて、データはキャッシュ記憶16からフラッシュされない(60、62)。しかし、キャッシュ記憶16が相対的に満杯な場合は、記憶装置12は、ホスト10へのサービスとキャッシュ記憶16へのサービスとの間に時間を割り当てるバランス機構を起動する(60、64)。限定されない例として、キャッシュは、満杯の半分を下回る場合は相対的に空いていると見なされ、満杯の半分かそれを上回る場合には相対的に満杯であると見なされてもよい。他のしきい値を使用してバランス機構を起動するトリガポイントを設定することもできる。
ホスト書き込みとキャッシュフラッシュとのバランス機構の1つの実施例のさらに詳細な例が、図5に示される。キャッシュ記憶の使用可能な容量が所望の容量よりも小さい(すなわち、前述したようにキャッシュ記憶16が相対的に満杯である)場合、プロセッサ20は、それぞれ2つの連続するホスト要求の間に挿入するキャッシュフラッシングステップの数を決定する(68、70)。限定される環境では、キャッシュ記憶16が満杯で、使用可能な容量が記憶装置12がキャッシュクリアリングステップを最初に実施しないで動作できる最小しきい値を下回るほどの場合には、キャッシュフラッシングステップとホスト書き込みステップとのバランスをとることは遅らせてもよい(66)。1つの限定されない例として、特定の記憶装置の最小しきい値が1%使用可能な容量であり、キャッシュの現在の使用可能な容量がこのしきい値を下回った場合、キャッシュクリアリングステップが実行されて使用可能容量がこの最小しきい値に少なくとも達するようになるまで、記憶装置はホスト書き込みステップとキャッシュフラッシングステップとのいかなるバランスをとることも遅らせてよい。
一実施形態では、キャッシュフラッシングステップの数は、プロセッサ20がテーブルに格納されるホストコマンドに対して実行するキャッシュクリアリングステップの比率を調べることによって決定されてもよく、このテーブルは、様々な比率をキャッシュ記憶16の使用可能な容量の様々なトリガレベルに対応させている。次いで、キャッシュ記憶16の検出された使用可能容量に対応する比率はプロセッサ20によって使用されて、その比率に対応する連続するホストコマンド間でインタリーブされるキャッシュフラッシングステップの数をスケジュールしてもよい。例えば、比率が2であれば、プロセッサ20は各ホストコマンドに続いて2つのキャッシュフラッシングステップをスケジュールすることになる。キャッシュフラッシングの実行とホストコマンドの実行との間のバランスに対して高い分解能および微細な調整を可能にするために、この比率は非整数を含んでもよい。1つの例として、使用可能なキャッシュ記憶の特定のトリガレベルに対する比率は3.5であってもよい。このときプロセッサ20は、ホストコマンドに続いて3つのキャッシュフラッシングステップと、第2のホストコマンドに続いて4つのキャッシュフラッシングステップの繰り返しパターンをスケジュールして、実効比率である3.5を達成することになる。必要なキャッシュフラッシングの量が少ない場合のみ、この比率は1より小さくなってもよく、この場合、連続するホストコマンドが実行された後でキャッシュクリアリングステップがスケジュールされてもよい。
代替の実施形態では、キャッシュ記憶の検出された使用可能容量に加えて他の1つ以上のパラメータを考慮して、ホスト書き込みコマンドに対するキャッシュフラッシングステップの比率を決定してもよい。記憶装置12の割り当てられるヒープメモリの現在の量などの記憶装置負荷パラメータを使用してもよい。比率の決定にこの追加のパラメータを考慮することによって次の比率が選択されるトリガポイントを変更してもよい。使用してもよい他の記憶装置負荷パラメータは、記憶装置12で実施される特定のフラッシュ管理アルゴリズムに固有のものであってもよい。このような他のパラメータは、フラッシュ管理アルゴリズムによって使用される特定のリストの長さ、特定のハッシュテーブルの使用スペースの量などを含んでいてもよい。
再び図5を参照すると、ホストコマンドに対するキャッシュフラッシングステップの数を決定してスケジュールした後、プロセッサは、ホストコマンドの受信時に、記憶装置にビジー状態を設定することによってスケジュールを実施してもよい(72)。ホストコマンドが実施された後に、プロセッサは、ホストコマンド後に記憶装置12によって設定されるビジー状態の期間を延長する。ビジー状態の表示は、記憶装置12が設定してホスト10が認識する標準状態であって、ビジー状態が解除されるまで、ホスト10が追加のデータを送信しないようにするとともに、一般にホストがほとんどのコマンドを送信しないようにする標準状態である。一般に、記憶装置12は、ホストコマンドを受信した後にビジー状態を設定し、記憶装置12がコマンドを実行するのに必要なステップを完了するのにかかる期間だけビジー状態を維持する。バランス機構を実施する場合、プロセッサは、記憶装置が特定のコマンドを実行するのに必要な時間より長くビジー状態を維持し、スケジュールされた数のキャッシュフラッシングステップが実行されるまで期間を延長する(74)。装置のビジー状態の具体的な実施例は、その装置のプロトコルに依存している。例えば、記憶装置がNAND装置であるか、NAND装置プロトコルをエミュレートしている場合、ビジー状態は、ホスト10に記憶装置12がビジー状態か待機中かを知らせる、記憶装置12によって制御される個別の信号であってもよい。SDプロトコル装置では、記憶装置は、データの転送に使用される線の1つを制御することによってビジー状態であることを示す。ホスト10は、所定の時点でその線をサンプリングして、書き込まれる次のデータのバッチを送信可能かどうかを判断する。他のプロトコルは、他の方式を使用して本願明細書で説明されるビジー状態を提供してもよく、本願明細書に開示されるシステムおよび方法では、多くの種類のビジー状態表示のいずれを使用してもよい。
各キャッシュフラッシングステップは、アドレスの論理ブロックを選択することと、特定の論理ブロックに関連するデータの少なくとも1つのページをキャッシュ記憶16から主記憶18内にコピーすることとから構成されてもよい。キャッシュフラッシングステップは、選択される論理ブロックに関連するデータの全ページ(すなわち、論理ブロック全体)をコピーすることから構成されてもよいが、選択される論理ブロックに関連する全データよりも少ないデータとなる単一のページまたはページのグループのほうが一般的なこともある。一連の別々のページコピー動作でコピーが実施されてもよいシステムの一例を、その全体が本願明細書において参照により援用されている、「Interruptible Cache Flushing in Flash Memory Systems」という2007年10月23日に出願された係属中の米国特許出願第11/876,893号(特許文献5)で見ることもできる。ビジー状態は決定された数のキャッシュフラッシングステップが完了される間維持され、その後ビジー状態が解除されてホストが別のコマンドを送信できるようになる。主記憶にコピーされる対応するデータを有する特定の論理ブロックをどれにするかの選択は、多くの基準のいずれに基づいてもよい。例えば、その選択は、どの論理ブロックがキャッシュ記憶16の物理ブロックに最も多くデータを有するか、あるいは、どの論理ブロックがキャッシュ記憶16の最も多くの物理ブロックにデータを有するかに基づいてもよい。
キャッシュ記憶16の使用可能な容量が最小容量より大きく所望の容量より小さいとして、ホスト書き込み要求に対するスケジュールされたキャッシュクリアリングステップの決定された比率がN1であると仮定すると、ホストから見た平均性能はW1(メガバイト/秒で測定)となる。キャッシュクリアリングステップを実行する時間中、記憶装置12はビジー状態表示を維持する。具体的には、ホストが書き込み要求を送信した後で記憶装置はビジー状態を開始するが、さらに挿入されるキャッシュクリアリングステップに必要な時間だけそれを維持する。ビジー状態を維持する追加の時間によってホスト10は速度が低下し、記憶装置12に送信されるデータの速度が低下してしまう。しかし、この段階では、低下した速度は依然として連続書き込み性能規格を上回ることもできることに留意するべきである。
バランス機構を開始した後、記憶装置12のプロセッサ20は、キャッシュの状態をモニタし続ける。ホストコマンドに対するキャッシュクリアリングステップの現在の比率が、キャッシュ記憶16にこれ以上満たされるのを止めさせたことが分かる場合もあるが、キャッシュ記憶16は満たされ続けることもある。これが発生すると、第2のトリガポイントに達する。例えば、50%満たされたキャッシュの初期状態がバランス機構をトリガした場合には、60%満たされたキャッシュの状態が第2のトリガポイントであってもよい。記憶装置がこの条件を検出する場合には、さらに積極的なポリシーが採用されてもよい。N2>N1のとき、各ホスト要求毎にN1キャッシュクリアリングステップの比率をスケジュールする代わりに、N2ステップの比率がスケジュールされる。W2<W1のとき、ホストから見た実効連続書き込み性能はW2まで低下する。このようなさらに低下した性能モードは、キャッシュが満たされるのを止めるか、あるいはまだ充分でないこともある平衡でシステムをバランスさせるのに充分なこともあり、このような場合には、対応するさらに低下したホスト性能値を有するこの追加のトリガポイントが起動される。最終的には、ホストがある平均速度でサービスされると同時にキャッシュがこれ以上満たされない平衡に達する。
単一のトリガポイントを使用して不充分な形態のホスト書き込みとキャッシュフラッシュとのバランスを達成しようとすることは可能であるが、記憶装置の実際の性能は、ホスト10のアクセスパターンに依存しているため、複数のトリガポイントを使用するのが好ましい。一般に、記憶装置の公示される連続書き込み性能は、連続的なアドレスへのホスト書き込みデータに関しては正しい。ホスト10がランダムなアドレスにデータを書き込む場合は、連続書き込み性能は一般にもっと低い。アクセスパターンがランダムなほど、実効性能は低下する。この効果は、ランダムなアドレスパターンを処理する場合にフラッシュ管理アルゴリズムの効率が相対的に悪くなるためである。このため、キャッシュを平衡にするための適切なバランス用比率は予測することができない可能性があり、一般に、平衡に達するまでホストのサービス性能を連続的に低下させるために一連のトリガ条件が必要である。さらに、ランダムなアドレスパターンにおいて、平衡ポイントは、公示される連続書き込み性能よりさらに低い(ホストから見た)平均連続書き込み性能となることもある。
再び図5を参照すると、ホストが新しいデータを生成する際に速度が低下し始めると、逆のプロセスが発生する。キャッシュ記憶16が空になるときに、キャッシュの使用可能な容量が小さくなるにつれてプロセッサ20が適用するホストコマンドに対するキャッシュクリアリングステップの比率を上げるようにしたのと同じトリガレベルを、キャッシュが空になり使用可能な容量が増加してキャッシュクリアリングプロセスに関与するリソースが少なくなるにつれて逆の順序で適用してもよい。代替の実施形態では、キャッシュが満たされている場合に徐々に増加する比率を適用するトリガは、キャッシュが空になるときに同じかまたは異なる比率を適用するトリガと異なってもよい。例えば、キャッシュが満たされている場合に第1の比率から第2の比率に変更するトリガは、キャッシュが60%満たされた場合であってもよいが、キャッシュが空になっている場合に第2の比率から再び第1の比率に切り換えるトリガポイントは、キャッシュ記憶が55%満たされる場合に設定されてもよい。このようにして、ヒステリシスのような効果がトリガ条件に提供され、2つのスケジュールモードの間を高頻度で切り換わることを避けることができる。最終的に、キャッシュ記憶16は相対的に空き状態、例えば、50%未満で満たされた状態に達し、記憶装置12は、ホスト要求を最大限に優先する初期モード(バースト書き込み性能)に戻る。
データ書き込み性能をかなり犠牲にしてキャッシュの平衡を維持し、タイムアウト期間が長引くような事例を避けるホスト書き込み動作とキャッシュフラッシングとのバランス機構を実施する方法およびシステムが開示された。この方法は、自己キャッシング記憶装置のキャッシュ記憶部の使用可能な容量を決定し、使用可能な容量が所望のしきい値よりも小さい場合にホスト書き込みコマンドに対するキャッシュフラッシングステップの比率を決定し、その比率を達成するためにキャッシュフラッシングステップとホストコマンドとをインタリーブすることによって、ホストコマンドの実行のバランスをとる。キャッシュフラッシングステップは、ホスト書き込みコマンドを実行した後に記憶装置ビジー状態を維持し、この追加の時間を利用してキャッシュ記憶から主記憶へデータの一部をコピーすることによって実行されてもよい。この方法によってホストに提供される性能は低下するが、以前としてかなり高く、可能性として公示される連続速度よりもさらに高くすることもできる。

Claims (29)

  1. 書き込みコマンドで外部ホストから受信される受信データが、最初にキャッシュ記憶に記憶された後で主記憶に移動される、記憶装置における前記キャッシュ記憶から前記主記憶へのデータの移動を管理する方法であって、
    前記記憶装置で前記ホストから書き込みコマンドを受信するステップと、
    前記書き込みコマンドとともに受信されるデータを前記キャッシュ記憶に記憶するステップと、
    前記書き込みコマンドを受信した後に前記記憶装置でビシー状態を生成するステップと、
    前記データを前記キャッシュ記憶に記憶するステップに続いて、前記ビジー状態を維持しながらデータの少なくとも一部を前記キャッシュ記憶から前記主記憶にコピーするステップであって、前記コピーするステップが開始されるときに次の書き込みコマンドで前記ホストからデータを受信する前記キャッシュに充分な使用可能な容量が存在するようにしたコピーするステップと、
    を含む方法。
  2. 請求項1記載の方法において、
    前記データの少なくとも一部を前記キャッシュ記憶から前記主記憶にコピーするステップが、前記キャッシュ記憶の使用可能な容量が所望のしきい値よりも小さい場合に前記キャッシュ記憶からデータの少なくとも一部をコピーするステップを含む方法。
  3. 請求項2記載の方法において、
    前記所望のしきい値は、前記キャッシュ記憶の50%使用可能な容量である方法。
  4. 請求項1記載の方法において、
    前記データの少なくとも一部を前記キャッシュ記憶から前記主記憶にコピーするステップが、選択可能な数のキャッシュクリアリングステップを実行するステップを含み、各キャッシュクリアリングステップが、前記キャッシュ記憶の少なくとも1つのページから前記主記憶へデータをコピーする方法。
  5. 請求項4記載の方法において、
    少なくとも前記キャッシュ記憶の使用可能な容量に部分的に基づいて、前記選択可能な数を決定するステップをさらに含む方法。
  6. 外部ホストからの受信データが、最初にキャッシュ記憶に記憶された後で主記憶に移動される、記憶装置における前記キャッシュ記憶から前記主記憶へのデータの移動を管理する方法であって、
    キャッシュ記憶の使用可能な容量を検出するステップと、
    前記検出された使用可能な容量に基づいてホストコマンドに対するキャッシュクリアリングステップの比率を決定するステップと、
    前記決定されたホストコマンドに対するキャッシュクリアリングステップの比率を達成するために、キャッシュクリアリングステップの実行をホストコマンドの実行とインタリーブするステップであって、前記キャッシュクリアリングステップの実行が、ホストコマンドを実行するのに充分な時間より長い期間、前記記憶装置で生成され前記ホストコマンドによってトリガされるビジー状態を維持するステップと、前記期間に前記キャッシュ記憶から前記主記憶にデータの少なくとも一部をコピーするステップとを含むようにしたインタリーブするステップと、
    を含む方法。
  7. 請求項6記載の方法において、
    前記比率が、非整数の比率を含む方法。
  8. 請求項6記載の方法において、
    前記ホストコマンドが、ホスト書き込みコマンドを含む方法。
  9. 請求項6記載の方法において、
    前記ホストコマンドが、ホスト読み出しコマンドを含む方法。
  10. 請求項6記載の方法において、
    前記ホストコマンドが、ホスト消去コマンドを含む方法。
  11. 請求項6記載の方法において、
    前記ホストコマンドに対するキャッシュクリアリングステップの比率を決定するステップが、前記検出された使用可能な容量に加えて、少なくとも1つの追加のパラメータに基づく方法。
  12. 請求項11記載の方法において、
    前記少なくとも1つの追加のパラメータが、記憶装置負荷パラメータを含む方法。
  13. 請求項12記載の方法において、
    前記記憶装置負荷パラメータが、割り当てられるヒープメモリの現在の量を含む方法。
  14. 請求項6記載の方法において、
    前記ホストコマンドに対するキャッシュクリアリングステップの比率を決定するステップと、前記検出された使用可能な容量が所望のしきい値容量よりも小さい場合に、キャッシュクリアリングステップの実行をホストコマンドの実行とインタリーブするステップと、のみをさらに含む方法。
  15. 請求項6記載の方法において、
    前記ホストコマンドに対するキャッシュクリアリングステップの比率を決定するステップと、前記検出された使用可能な容量がホストからデータを受信する最小容量よりも大きく所望のしきい値容量よりも小さい場合に、キャッシュクリアリングステップの実行をホストコマンドの実行とインタリーブするステップと、のみをさらに含む方法。
  16. 記憶装置であって、
    ホスト書き込みコマンドに関連するデータを受信するように構成されるキャッシュ記憶と、
    前記キャッシュ記憶と通信し前記キャッシュ記憶から転送されるデータを受信するように構成される主記憶と、
    前記キャッシュ記憶から前記主記憶へのデータの転送を管理するように配置されるコントローラであって、
    ホスト書き込みコマンドを受信した後にビジー状態を生成し、前記ホスト書き込みコマンドとともに受信される前記データを前記キャッシュ記憶に書き込んだ後で、前記ビジー状態を維持しながら前記キャッシュ記憶から前記主記憶へデータの少なくとも一部をコピーし、コピーが開始されるときに次の書き込みコマンドで前記ホストからデータを受信する前記キャッシュ記憶に充分な使用可能な容量が存在するように構成されるコントローラと、
    を備える記憶装置。
  17. 請求項16記載の記憶装置において、
    前記コントローラが、前記キャッシュ記憶の使用可能な容量が所望のしきい値より小さい場合に、前記ホスト書き込みコマンドとともに受信される前記データを書き込んだ後に前記ビジー状態を維持するように構成される記憶装置。
  18. 請求項17記載の記憶装置において、
    前記所望のしきい値は、前記キャッシュ記憶の50%使用可能な容量である記憶装置。
  19. 請求項16記載の記憶装置において、
    前記キャッシュ記憶はシングルレベルセル不揮発性メモリであり、前記主記憶はマルチレベルセル不揮発性メモリである記憶装置。
  20. 記憶装置であって、
    データをホストから受信するように構成されるキャッシュ記憶と、
    前記キャッシュ記憶と通信し前記キャッシュ記憶から転送されるデータを受信するように構成される主記憶と、
    前記キャッシュ記憶から前記主記憶へのデータの転送を管理するように配置されるコントローラであって、
    前記キャッシュ記憶の使用可能な容量を検出し、
    前記キャッシュ記憶の前記検出された使用可能な容量に基づいてホストコマンドに対するキャッシュクリアリングステップの比率を決定し、
    前記決定されたホストコマンドに対するキャッシュクリアリングステップの比率を達成するために、キャッシュクリアリングステップの実行をホストコマンドの実行とインタリーブし、前記キャッシュクリアリングステップの実行は、ホストコマンドを実行するのに充分な時間より長い期間、前記記憶装置で生成され前記ホストコマンドによってトリガされるビジー状態を維持することと、前記期間に前記キャッシュ記憶から前記主記憶にデータをコピーすることとを含むように構成されるコントローラと、
    を備える記憶装置。
  21. 請求項20記載の記憶装置において、
    前記コントローラが、前記検出された使用可能な容量に加えて、少なくとも1つの追加のパラメータに基づいて前記ホストコマンドに対するキャッシュクリアリングステップの比率を決定するように構成される記憶装置。
  22. 請求項21記載の記憶装置において、
    前記少なくとも1つの追加のパラメータが、記憶装置負荷パラメータを含む記憶装置。
  23. 請求項22記載の記憶装置において、
    前記記憶装置負荷パラメータが、割り当てられるヒープメモリの現在の量を含む記憶装置。
  24. 請求項20記載の記憶装置において、
    前記ホストコマンドが、ホスト書き込みコマンドを含み、前記ホスト書き込みコマンドのうちの1つを実行するのに充分な時間が、前記ホスト書き込みコマンドに関連するデータを前記キャッシュ記憶に書き込む期間を含む記憶装置。
  25. 請求項20記載の記憶装置において、
    前記コントローラが、選択可能な数のキャッシュクリアリングステップを実行するように構成され、各キャッシュクリアリングステップが、前記キャッシュ記憶の少なくとも1つのページから前記主記憶へデータをコピーすることを含む記憶装置。
  26. 請求項25記載の記憶装置において、
    前記コントローラが、少なくとも前記キャッシュ記憶の使用可能容量に部分的に基づいて、前記選択可能な数を決定するようにさらに構成される記憶装置。
  27. 請求項20記載の記憶装置において、
    前記コントローラが、前記ホストコマンドに対するキャッシュクリアリングステップの比率を決定し、前記検出された使用可能な容量が所望のしきい値容量よりも小さい場合に、キャッシュクリアリングステップの実行をホストコマンドの実行とインタリーブするようにのみさらに構成される記憶装置。
  28. 請求項20記載の記憶装置において、
    前記コントローラが、前記ホストコマンドに対するキャッシュクリアリングステップの比率を決定し、前記検出された使用可能な容量が前記ホストからデータを受信する最小容量よりも大きく所望のしきい値容量よりも小さい場合に、キャッシュクリアリングステップの実行をホストコマンドの実行とインタリーブするようにのみさらに構成される記憶装置。
  29. 回路であって、
    記憶装置においてキャッシュ記憶から主記憶へのデータの転送を管理するように配置されるコントローラであって、
    ホスト書き込みコマンドを受信した後にビジー状態を生成し、
    前記ホスト書き込みコマンドとともに受信される前記データを前記キャッシュ記憶に書き込んだ後で、前記ビジー状態を維持しながら前記キャッシュ記憶から前記主記憶へデータの少なくとも一部をコピーし、コピーが開始されるときに次の書き込みコマンドでホストからデータを受信する前記キャッシュ記憶に充分な使用可能な容量が存在するように構成されるコントローラを備える回路。
JP2010540753A 2007-12-31 2008-12-10 ホスト書き込み動作とキャッシュフラッシングとのバランスをとるための方法およびシステム Active JP5443384B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/967,369 US7865658B2 (en) 2007-12-31 2007-12-31 Method and system for balancing host write operations and cache flushing
US11/967,369 2007-12-31
PCT/US2008/086247 WO2009088626A2 (en) 2007-12-31 2008-12-10 Method and system for balancing host write operations and cache flushing

Publications (2)

Publication Number Publication Date
JP2011508347A JP2011508347A (ja) 2011-03-10
JP5443384B2 true JP5443384B2 (ja) 2014-03-19

Family

ID=40800012

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010540753A Active JP5443384B2 (ja) 2007-12-31 2008-12-10 ホスト書き込み動作とキャッシュフラッシングとのバランスをとるための方法およびシステム

Country Status (6)

Country Link
US (1) US7865658B2 (ja)
EP (1) EP2227740B1 (ja)
JP (1) JP5443384B2 (ja)
KR (1) KR101563875B1 (ja)
TW (1) TWI421877B (ja)
WO (1) WO2009088626A2 (ja)

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8200904B2 (en) * 2007-12-12 2012-06-12 Sandisk Il Ltd. System and method for clearing data from a cache
JP5221332B2 (ja) * 2008-12-27 2013-06-26 株式会社東芝 メモリシステム
US8261009B2 (en) * 2008-12-30 2012-09-04 Sandisk Il Ltd. Method and apparatus for retroactive adaptation of data location
US20100169540A1 (en) * 2008-12-30 2010-07-01 Sinclair Alan W Method and apparatus for relocating selected data between flash partitions in a memory device
US8838903B2 (en) * 2010-02-04 2014-09-16 Dataram, Inc. Priority ordered multi-medium solid-state storage system and methods for use
US8239617B1 (en) * 2010-02-12 2012-08-07 Emc Corporation Enterprise data storage system using multi-level cell flash memory
US8402226B1 (en) * 2010-06-18 2013-03-19 Emc Corporation Rate proportional cache write-back in a storage server
JP2012141946A (ja) * 2010-12-16 2012-07-26 Toshiba Corp 半導体記憶装置
KR20120088454A (ko) * 2011-01-31 2012-08-08 에스케이하이닉스 주식회사 비휘발성 메모리 시스템 및 비휘발성 메모리 장치와, 이를 위한 프로그램 방법
US20130067168A1 (en) * 2011-09-09 2013-03-14 Microsoft Corporation Caching for a file system
US8856443B2 (en) * 2012-03-12 2014-10-07 Infinidat Ltd. Avoiding duplication of data units in a cache memory of a storage system
US9606730B2 (en) 2012-05-04 2017-03-28 Samsung Electronics Co., Ltd. System and method including three dimensional nonvolatile memory device and random access memory
CN103514111A (zh) * 2012-06-21 2014-01-15 华为技术有限公司 一种Cache的替换方法及装置
KR102024850B1 (ko) 2012-08-08 2019-11-05 삼성전자주식회사 3차원 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 프로그램 방법
US9112922B2 (en) 2012-08-28 2015-08-18 Vantrix Corporation Method and system for self-tuning cache management
US9740485B2 (en) 2012-10-26 2017-08-22 Micron Technology, Inc. Apparatuses and methods for memory operations having variable latencies
US9754648B2 (en) * 2012-10-26 2017-09-05 Micron Technology, Inc. Apparatuses and methods for memory operations having variable latencies
US9280482B2 (en) * 2012-12-13 2016-03-08 Western Digital Technologies, Inc. Methods and systems for provisioning a bootable image on to an external drive
US9141531B1 (en) 2012-12-14 2015-09-22 Western Digital Technologies, Inc. Data flush from cache to disk based on track limit
US9223693B2 (en) 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
US9348746B2 (en) 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US9336133B2 (en) 2012-12-31 2016-05-10 Sandisk Technologies Inc. Method and system for managing program cycles including maintenance programming operations in a multi-layer memory
US8873284B2 (en) 2012-12-31 2014-10-28 Sandisk Technologies Inc. Method and system for program scheduling in a multi-layer memory
US9734050B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US10445229B1 (en) * 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9542306B2 (en) * 2013-03-13 2017-01-10 Seagate Technology Llc Dynamic storage device provisioning
US9727453B2 (en) 2013-03-14 2017-08-08 Sandisk Technologies Llc Multi-level table deltas
US9734097B2 (en) 2013-03-15 2017-08-15 Micron Technology, Inc. Apparatuses and methods for variable latency memory operations
WO2014209276A1 (en) * 2013-06-25 2014-12-31 Hewlett-Packard Development Company, L.P. Flushing dirty data from cache memory
US9026693B2 (en) * 2013-08-05 2015-05-05 Samsung Electronics Co., Ltd. Method for filtering cached input/output data based on data generation/consumption
US9563565B2 (en) 2013-08-14 2017-02-07 Micron Technology, Inc. Apparatuses and methods for providing data from a buffer
US9727493B2 (en) 2013-08-14 2017-08-08 Micron Technology, Inc. Apparatuses and methods for providing data to a configurable storage area
US9170943B2 (en) * 2013-08-29 2015-10-27 Globalfoundries U.S. 2 Llc Selectively enabling write caching in a storage system based on performance metrics
US9824004B2 (en) 2013-10-04 2017-11-21 Micron Technology, Inc. Methods and apparatuses for requesting ready status information from a memory
US10108372B2 (en) 2014-01-27 2018-10-23 Micron Technology, Inc. Methods and apparatuses for executing a plurality of queued tasks in a memory
US10365835B2 (en) 2014-05-28 2019-07-30 Micron Technology, Inc. Apparatuses and methods for performing write count threshold wear leveling operations
US9720837B2 (en) * 2014-06-27 2017-08-01 International Business Machines Corporation Allowing non-cacheable loads within a transaction
BR112017001991B1 (pt) * 2014-08-15 2022-11-16 Microsoft Technology Licensing, Llc Método e dispositivo eletrônico compreendendo memória e armazenamento, e meio de armazenamento em computador
US10127157B2 (en) * 2014-10-06 2018-11-13 SK Hynix Inc. Sizing a cache while taking into account a total bytes written requirement
US9940259B2 (en) * 2015-01-16 2018-04-10 International Business Machines Corporation Virtual disk alignment access
US10133490B2 (en) 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
US10120613B2 (en) 2015-10-30 2018-11-06 Sandisk Technologies Llc System and method for rescheduling host and maintenance operations in a non-volatile memory
US9778855B2 (en) 2015-10-30 2017-10-03 Sandisk Technologies Llc System and method for precision interleaving of data writes in a non-volatile memory
US10042553B2 (en) 2015-10-30 2018-08-07 Sandisk Technologies Llc Method and system for programming a multi-layer non-volatile memory having a single fold data path
TWI598733B (zh) * 2016-01-12 2017-09-11 瑞昱半導體股份有限公司 權重式資料搬遷控制裝置與方法
US20170212711A1 (en) * 2016-01-21 2017-07-27 Kabushiki Kaisha Toshiba Disk apparatus and control method
US20180239532A1 (en) 2017-02-23 2018-08-23 Western Digital Technologies, Inc. Techniques for performing a non-blocking control sync operation
US10372351B2 (en) 2017-02-23 2019-08-06 Western Digital Technologies, Inc. Techniques for non-blocking control information and data synchronization by a data storage device
US10359955B2 (en) 2017-02-23 2019-07-23 Western Digital Technologies, Inc. Data storage device configured to perform a non-blocking control update operation
TWI645286B (zh) * 2017-08-31 2018-12-21 慧榮科技股份有限公司 記憶體控制裝置和方法
US10877686B2 (en) * 2018-04-13 2020-12-29 Intel Corporation Mass storage device with host initiated buffer flushing
US11188474B2 (en) * 2018-06-19 2021-11-30 Western Digital Technologies, Inc. Balanced caching between a cache and a non-volatile memory based on rates corresponding to the cache and the non-volatile memory
US11409436B2 (en) 2018-08-08 2022-08-09 Micron Technology, Inc. Buffer management in memory systems for read and write requests
US10782916B2 (en) 2018-08-08 2020-09-22 Micron Technology, Inc. Proactive return of write credits in a memory system
KR102243923B1 (ko) 2018-12-31 2021-04-22 강원대학교산학협력단 캐쉬를 동반한 효율적인 페이지 컬렉션 매핑을 이용하는 비휘발성 메모리 장치 및 그 동작 방법
US11023150B2 (en) 2019-07-01 2021-06-01 International Business Machines Corporation Block mode toggling using hybrid controllers
US11182089B2 (en) 2019-07-01 2021-11-23 International Business Machines.Corporation Adapting memory block pool sizes using hybrid controllers
CN112181938B (zh) * 2019-07-05 2024-06-14 杭州海康威视数字技术股份有限公司 数据库清理方法、装置和计算机可读存储介质
KR102650809B1 (ko) * 2019-08-02 2024-03-26 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
US11816349B2 (en) 2021-11-03 2023-11-14 Western Digital Technologies, Inc. Reduce command latency using block pre-erase
US11994983B2 (en) * 2022-08-24 2024-05-28 Micron Technology, Inc. Multimedia card command timeout measurement

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5636355A (en) 1993-06-30 1997-06-03 Digital Equipment Corporation Disk cache management techniques using non-volatile storage
US6412045B1 (en) 1995-05-23 2002-06-25 Lsi Logic Corporation Method for transferring data from a host computer to a storage media using selectable caching strategies
JP3484874B2 (ja) * 1996-05-01 2004-01-06 日本電気株式会社 記憶システム
US5895488A (en) 1997-02-24 1999-04-20 Eccs, Inc. Cache flushing methods and apparatus
US5883904A (en) * 1997-04-14 1999-03-16 International Business Machines Corporation Method for recoverability via redundant cache arrays
US5930167A (en) 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
US5937425A (en) 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
ATE323305T1 (de) * 1998-07-24 2006-04-15 Sun Microsystems Inc Verfahren und vorrichtung zur durchführung einer deterministischen speicherzuordnungsantwort in einem computer-system
JPH11288387A (ja) * 1998-12-11 1999-10-19 Fujitsu Ltd ディスクキャッシュ装置
JP2001135017A (ja) * 1999-11-02 2001-05-18 Nec Corp データ記憶装置及びデータ記憶装置用インタフェース装置
US6658532B1 (en) * 1999-12-15 2003-12-02 Intel Corporation Cache flushing
US6678785B2 (en) 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write
US6976128B1 (en) 2002-09-26 2005-12-13 Unisys Corporation Cache flush system and method
US7076605B1 (en) 2003-04-25 2006-07-11 Network Appliance, Inc. Method and apparatus for writing data to a storage device
US7085895B2 (en) 2003-09-05 2006-08-01 International Business Machines Corporation Apparatus, system, and method flushing data from a cache to secondary storage
US7356651B2 (en) 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
JP4402997B2 (ja) 2004-03-26 2010-01-20 株式会社日立製作所 ストレージ装置
US7752382B2 (en) * 2005-09-09 2010-07-06 Sandisk Il Ltd Flash memory storage system and method
US7444478B2 (en) 2005-11-18 2008-10-28 International Business Machines Corporation Priority scheme for transmitting blocks of data
US7395377B2 (en) 2006-04-20 2008-07-01 International Business Machines Corporation Method and system for adaptive back-off and advance for non-volatile storage (NVS) occupancy level management
US7711890B2 (en) 2006-06-06 2010-05-04 Sandisk Il Ltd Cache control in a non-volatile memory device
US8200904B2 (en) 2007-12-12 2012-06-12 Sandisk Il Ltd. System and method for clearing data from a cache

Also Published As

Publication number Publication date
WO2009088626A3 (en) 2009-10-01
JP2011508347A (ja) 2011-03-10
EP2227740A2 (en) 2010-09-15
KR101563875B1 (ko) 2015-10-28
KR20100107456A (ko) 2010-10-05
US7865658B2 (en) 2011-01-04
US20090172286A1 (en) 2009-07-02
EP2227740B1 (en) 2018-01-24
EP2227740A4 (en) 2011-11-16
TWI421877B (zh) 2014-01-01
TW200937424A (en) 2009-09-01
WO2009088626A2 (en) 2009-07-16

Similar Documents

Publication Publication Date Title
JP5443384B2 (ja) ホスト書き込み動作とキャッシュフラッシングとのバランスをとるための方法およびシステム
JP7366795B2 (ja) メモリシステムおよび制御方法
JP5192228B2 (ja) フラッシュコントローラのキャッシュ構造
US8200904B2 (en) System and method for clearing data from a cache
US10949355B2 (en) Methods and apparatus for workload based dynamic cache control in SSD
JP4759057B2 (ja) フロントメモリストレージシステムおよび方法
JP5418808B2 (ja) 適応ハイブリッド密度メモリ記憶装置の制御方法、及び適応ハイブリッド密度メモリ記憶装置
US8595445B2 (en) Non-volatile memory and method with host controlled caching
KR101624007B1 (ko) 비휘발성 메모리를 갖는 시스템에 대한 효율적인 버퍼링
US8171239B2 (en) Storage management method and system using the same
US20080294814A1 (en) Flash Memory System with Management of Housekeeping Operations
US20140122783A1 (en) Solid state memory (ssm), computer system including an ssm, and method of operating an ssm
US20080294813A1 (en) Managing Housekeeping Operations in Flash Memory
JP6697410B2 (ja) メモリシステムおよび制御方法
US20110093659A1 (en) Data storage device and data storing method thereof
JP2014116031A (ja) メモリデバイスを備えた電子システム
WO2008102347A1 (en) Interruptible cache flushing in flash memory systems
JP2020035128A (ja) メモリシステム
KR20090102192A (ko) 메모리 시스템 및 그것의 데이터 저장 방법
KR20120055707A (ko) 메모리 시스템
KR20230142795A (ko) Zns 디바이스들에서의 상이한 기입 우선순위화
US11537303B1 (en) Dissimilar write prioritization in ZNS devices
JP2010152778A (ja) 半導体記憶装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111129

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130711

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130723

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131126

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131219

R150 Certificate of patent or registration of utility model

Ref document number: 5443384

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250