JP2019106174A - 記憶デバイスにおけるシステムタイムスタンプを用いたバックグラウンドデータ・リフレッシュ - Google Patents

記憶デバイスにおけるシステムタイムスタンプを用いたバックグラウンドデータ・リフレッシュ Download PDF

Info

Publication number
JP2019106174A
JP2019106174A JP2018194032A JP2018194032A JP2019106174A JP 2019106174 A JP2019106174 A JP 2019106174A JP 2018194032 A JP2018194032 A JP 2018194032A JP 2018194032 A JP2018194032 A JP 2018194032A JP 2019106174 A JP2019106174 A JP 2019106174A
Authority
JP
Japan
Prior art keywords
ssd
storage device
data
blocks
host
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.)
Granted
Application number
JP2018194032A
Other languages
English (en)
Other versions
JP7235226B2 (ja
Inventor
ナタラジャン シャンカール
Natarajan Shankar
ナタラジャン シャンカール
ウ ニン
Ning Wu
ウ ニン
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2019106174A publication Critical patent/JP2019106174A/ja
Application granted granted Critical
Publication of JP7235226B2 publication Critical patent/JP7235226B2/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
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • 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
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

【課題】ホストからのタイムスタンプを用いて記憶デバイスのバックグラウンド・リフレッシュを行うための方法を提供する。【解決手段】方法は、ホストからタイムスタンプを受信する段階と、タイムスタンプを記憶デバイスに記憶する段階と、データがいつ1つまたは複数のブロックに書き込まれたかを示す第2のタイムスタンプに対する前記タイムスタンプに基づいて、記憶デバイスの1つまたは複数のブロックに記憶されたデータの保持時間を判断する段階とを伴う。保持時間が閾値を超えていると判断したことに応答して、記憶デバイスは、記憶デバイスの1つまたは複数の他のブロックにデータを移す。このことは、リフレッシュ書き込みをホストからの動作とインタリーブすることを含み得る。【選択図】図5

Description

本記述は概してソリッドステートドライブなどの記憶デバイスに関するものであり、より具体的な記述は、記憶デバイスにおけるシステムタイムスタンプを用いたバックグラウンドデータ・リフレッシュ技術に関するものである。
データの記憶にソリッドステートドライブ(SSD)を使用するシステムには、モバイル区分、クライアント区分およびエンタープライズ区分にまたがる動向がある。NAND SSDなどのソリッドステートドライブとしては、不揮発性記憶装置が挙げられる。不揮発性記憶装置とは、デバイスへの電力が遮断されてもその状態が確定的である記憶装置のことを指す。しかしながら、不揮発性記憶デバイスであってもデータ保持力は限られており、不揮発性記憶デバイスに記憶されたデータがリフレッシュされる必要があり得る。データをリフレッシュできないと、不揮発性記憶装置に記憶されたデータを消失することになり得る。
以下の説明には、本発明の実施形態の実装例として挙げられた例示を含む図の考察が含まれる。図面は例として解されるべきであり、限定として解されるべきではない。本明細書で使用されているように、1つまたは複数の「実施形態」または「例」への言及は、本発明の少なくとも1つの実装に含まれる特定の機能、構造および/または特性について説明するものと解されるべきである。このように、本明細書に出現する「一実施形態では」または「一例によると」などの語句は、本発明の様々な実施形態および実装について説明するものであり、必ずしも全てが同一の実施形態を指しているわけではない。しかしながら、それらは必ずしも相互排他的であるというわけでもない。
一例によると、バックグラウンドデータ・リフレッシュが実装され得るSSDを備えたシステムのブロック図を示している。
ホストからSSDへのシステムクロック情報の通信の例を示したブロック図である。
SSDのスーパーブロックの例を示している。
正確なデータリフレッシュを可能とするためにSSDが記憶し得る情報の例を示した表である。
記憶デバイスがシステムクロック情報を受け取ることができるかどうかを含めて、どの機能が所与の記憶デバイスによりサポートされているかを特定するのに使用され得るIdentify Controllerデータ構造の例を示している。
システムクロック情報がどのようにしてホストからSet Featureコマンドを介して記憶デバイスに送信され得るかという例を示した表である。
システムタイムスタンプを用いてバックグラウンド・リフレッシュを行うための方法の例を示したフローチャートである。
システムタイムスタンプを用いてバックグラウンド・リフレッシュを行うために記憶デバイスにより行われる方法の例を示したフローチャートである。
バックグラウンド・リフレッシュを可能にするシステムタイムスタンプを提供するためにホストにより行われる方法の例を示したフローチャートである。
バックグラウンド・リフレッシュレートを設定するための疑似コードの例である。
一例によると、バックグラウンドデータ・リフレッシュが実装され得るSSDを備えたコンピューティングデバイスの例のブロック図である。
一例によると、バックグラウンドデータ・リフレッシュが実装され得るSSDを備えたモバイルデバイスの例のブロック図である。
以下はある特定の詳細および実装の説明である。これらは、以下に説明する実施形態のうちの幾つかまたは全てを示し得る図の説明を含むと共に、本明細書で提示する発明の概念の他の潜在的な実施形態または実装についても考察している。
本明細書では、ソリッドステートドライブ(SSD)などの不揮発性記憶デバイスにおけるバックグラウンドデータ・リフレッシュ技術について説明する。バックグラウンドデータをリフレッシュするには、保持関連のエラーまたは不具合を避けるために記憶デバイスに記憶された「コールドデータ」をリフレッシュする必要がある。コールドデータとは、記憶デバイスに記憶されているアクセス頻度の少ないデータのことである。コールドデータは、記憶デバイスの最大保持力に近いか、またはそれを超える一定の期間にわたってアクセスされることなく、記憶デバイスに記憶され得る。データをリフレッシュするには、データ消失を防ぎ得る別の場所にデータを書き込む(または同じ場所にデータを書き換える)必要がある。
サーバで使用されるSSDなどのエンタープライズ・ソリッドステートドライブ(SSD)は、内部タイムクロックに依存するリフレッシュ技術を実装している。エンタープライズSSDが常時電源オンになっており、かつ、データがSSDブロックに書き込まれたときのタイムクロックを維持するのは普通のことである。しかしながら、モバイルなどの消費者デバイスで使用されるSSDは、継続的に電源オンになっておらず、電力消費量を削減してバッテリ寿命を保つために低電力状態になることが多い。電源オフになるか、または最低電力モードにあると、記憶デバイスのコンポーネントは、タイムクロックを維持するためのコンポーネントを含めて、ほとんどが電源オフになっている。故に、SSDに記憶されたデータをリフレッシュするための既存の技術は、モバイルなどの消費者SSDにとっては有効でない。
内部クロックに依存する代わりにシステムクロックを使用するバックグラウンドデータ・リフレッシュ技術によって、記憶装置が電源オフになるか、または低電力状態にあるとしても、記憶デバイスに記憶されたコールドデータのリフレッシュが可能となり得る。一例によると、記憶デバイスは、データがスーパーブロックに書き込まれたときを示すために当該データを記憶しているスーパーブロックごと(または、ブロックまたはページなどの粒度ごと)にタイムスタンプ情報を維持する。記憶デバイスが電源オフまたは低電力状態になるとき、記憶デバイスは不揮発性媒体(NVM)にタイムスタンプ情報を保存する。記憶デバイスが電源オンになるか、または、低電力状態を終えた後、記憶デバイスは、不揮発性記憶装置からタイムスタンプ情報をロードし、更には現在時刻を示すホストからタイムスタンプを受信する。既存の技術と対照的に、記憶デバイスは、デバイスが電源オフになったか、または一定の期間にわたって低電力状態にあったとしても、ホストから受信されたこの現在のタイムスタンプを使用して、データを記憶しているスーパーブロックのそれぞれにおけるデータの保持時間を正確に判断し得る。保持時間が閾値を超えている場合は、記憶デバイスがデータをリフレッシュし得る。一例によると、記憶デバイスは、それらのスーパーブロックをキューに入れること、および、当該キューからの書き込みをホストトラフィックとインタリーブすることにより、データをリフレッシュする。このように、ホストからのシステムクロックを使用するリフレッシュ技術によって、モバイルなどの消費者デバイスにおける保持時間の正確な判断が可能となり、データの消失が減少し得る。
一例によると、図1は、バックグラウンドデータ・リフレッシュが実装され得るSSDを備えたシステムのブロック図を示している。システム100は、ホスト110と結合されたソリッドステートドライブ(SSD)102を含む。
ホスト110は、SSD102に接続するホスト・ハードウェア・プラットフォームを表す。ホスト110は、CPU(中央処理ユニット)120などのプロセッサをホストプロセッサとして含む。CPU120は、SSD102に記憶されたデータにアクセスして当該データを読み出すか、または記憶装置122にデータを書き込むという要求を生成する任意のホストプロセッサを表す。係るプロセッサとしては、単一またはマルチコアのプロセッサ、コンピューティングデバイス用の一次プロセッサ、グラフィックプロセッサ、周辺プロセッサ、補足的もしくは補助的なプロセッサ、またはこれらの組み合わせが挙げられ得る。ホスト110はチップセット114を含み、チップセット114は、CPU120と、SSD102を含む、システム100の他のコンポーネントとの間のデータの流れを制御または管理し得るハードウェアコンポーネントを表す。例えば、チップセット114は、SSD102へのアクセスを可能にするための相互接続回路および相互接続論理回路を含み得る。一例によると、チップセット114は記憶コントローラを含み、当該記憶コントローラは、SSD102内のコントローラ130から切り離されたホスト側のコントローラである。他の例を挙げると、図1はSSDへのアクセスを制御するための論理回路を含むホスト内のチップセットを示している。とはいえ、ホスト110はチップセットを含まないこともあるし、もしそれがチップセットを含む場合は、記憶コントローラがチップセットから独立していることもある。一例によると、チップセット、記憶コントローラまたはその両方は、CPU120と統合される。ホスト110は、システムクロックを生成するためのクロック生成装置132も含む。一例によると、クロック生成装置132は、プラットフォーム100の動作を同期するのに使用できるようタイミング信号を作り出すための共振回路および増幅器などの回路を含む。
ホストは、オペレーティングシステム112、ファイルシステム124、基本入出力システム(BIOS)118、ドライバ116などの、ハードウェアで実行されるファームウェアおよびソフトウェア、並びに、他のファームウェアおよびソフトウェアも含む。システムが電源オンになると、BIOS118は通常、ハードウェアを初期化してオペレーティングシステム112をロードする役割を担う。オペレーティングシステム112は通常、システム100における動作の管理、調整およびスケジューリングと、システムのリソースの共有とを担う。ファイルシステム124は、ソフトウェア、ファームウェアまたはその両方とインタラクトして、SSD102にアクセスする。例えば、ホスト110は、オペレーティングシステム112およびファイルシステム124がそれを介してSSDにアクセスし得るSSDドライバを含み得る。SSDドライバの一例としては、インテル(登録商標)ラピッド・ストレージ・テクノロジー(RST)ドライバが挙げられる。システム100は、ホストオペレーティングシステムとデータを記憶するためのSSDとを備えたコンピュータシステムとして示されているが、システム100は、SPI(シリアル・ペリフェラル・インタフェース)記憶装置もしくはSPIバスに接続された記憶装置、LSMベース(ログ構造化統合ベース)のキーバリュー・ソリューション、または3次元クロスポイントメモリベースのソリューションなどの記憶システムを代わりに含み得る。
SSD102は、データを記憶するための不揮発性記憶装置122(別名:不揮発性媒体(NVM))を含むソリッドステートドライブを表す。SSD102は、PCIエクスプレス(PCIe)、シリアル・アドバンスト・テクノロジー・アタッチメント(ATA)、パラレルATAおよび/またはユニバーサルシリアルバス(USB)インタフェースを用いてプロセッサに接続されたフラッシュベースのドライブであり得る。記憶装置122は、NAND、NORフラッシュ、相変化メモリ(PCM)、スイッチを備えた相変化メモリ(PCMS)、または抵抗変化型メモリなどの不揮発性記憶媒体のうちの1つまたは複数を含み得る。データは、シングルレベルセル(SLC)、トリプルレベルセル(TLC)、クアッドレベルセル(QLC)および/またはマルチレベルセル(MLC)の形式で記憶され得る。TLC、QLCおよび/またはMLCのセルまたはブロックは通常、ユーザデータを記憶するために使用される。SLCのセルまたはブロックは、概して記憶密度の低下を犠牲にしてより速いアクセス速度を有するものであり、通常はユーザデータを記憶することがなく、通常はホストからアクセスできない。SLCのセルまたはブロックは、SSDの動作に関する「システムデータ」を記憶するために、SSDにより使用され得る。
不揮発性記憶装置122に加えて、SSD102は、DRAM108(などの揮発性メモリ)も含み得る。DRAM108は、ソリッドステートドライブ102が電源オンの(例えば、動作可能な)状態でデータを記憶し得る揮発性メモリを含む。DRAM108は、例えば、LPDDR3(低電力デュアルデータレートのバージョン3、初版はJEDEC(電子機器技術評議会)によりリリース、JESD209−3B、2013年8月、JEDEC)またはLPDDR4(低電力ダブルデータレート(LPDDR)のバージョン4、JESD209−4、初版は2014年8月にJEDECにより公開)といったタイプのDRAMを含み得る。DRAMは、電子機器技術評議会(JEDEC)により公表されたダブルデータレート(DDR)SDRAM)のJESD79F、DDR2 SDRAMのJESD79−2F、DDR3 SDRAMのJESD79−3F、またはDDR4 SDRAMのJESD79−4A(これらの基準は、www.jedec.orgに掲載)といった基準に準拠したものであり得る。他の揮発性メモリも使用され得る。DRAMを含まないSSD(例えば、「DRAMレス」SSD)もある。係る一例によると、SSDは、通常SRAMであるSSDコントローラメモリ(図示せず)を含み得る。DRAM108は、論理対物理の間接参照表または他の係る情報など、SSD102の動作に関するデータを記憶するために使用され得る。
SSD102は、記憶装置122へのアクセスを制御するためのコントローラ130も含む。一例によると、コントローラ130は、記憶装置122へのインタフェースを含み、ホスト110へのインタフェースを含む。コントローラ130は、記憶装置122への書き込みおよび記憶装置122からの読み出しを制御するためのハードウェア論理回路である。コントローラ130は、シリアルATAコントローラまたは統合ドライブエレクトロニクス・コントローラなどの、インタフェースに接続された特定用途向け集積回路(ASIC)コントローラデバイスであり得る。別の例を挙げると、コントローラ130は、プロセッサなどの処理回路(図示せず)を含む。一例によると、コントローラ130は、単一の集積回路チップ上のシステムオンチップ(SoC)に含まれ得る。
SSD102はファームウェア104も含む。ファームウェア104は、変換、ガベージコレクション、ウェアレベリングといった機能など、SSD102の動作および最適化のための様々な機能を実行し得る。一例によると、ファームウェア104は、フラッシュ変換レイヤ(FTL)を含んでよく、当該FTLは、ファイルシステム124から受信された要求の論理ブロックアドレス(LBA)など、論理アドレスの物理アドレス空間を特定する間接参照を提供するための論理回路を含む。
示されている例において、ファームウェア104は、記憶装置122に記憶されたデータが消失または破損しないことを保証すべくバックグラウンド・リフレッシュを行うためのリフレッシュ論理回路140を含む。SSDにおいてデータをリフレッシュするための既存の技術は通常、どのデータをリフレッシュすべきかを判断するために、SSD「通電時間」またはSSDの内部にあるクロック(コントローラ130のASICタイムクロックなど)に依存する。SSDが頻繁に電源オフまたは低電力状態になるモバイルデバイスなどの幾つかのシステムにとって、係る既存の技術は、データをいつリフレッシュすべきかを判断するのに有効でない。例えば、SSD「通電時間」は、SSDが何時間にわたって電源オンの状態にあるかを示す、SSD(例えば、SSDのレジスタ、または、ホストからはアクセスできないSSDのブロックなど、SSDの別の場所)に記憶された積算総数である。SSD「通電時間」に依存するリフレッシュ技術では、データが記憶装置122に保持される時間が考慮されることはなく、デバイスが電源オフになるか、または低電力状態にある時間が考慮される。故に、係る技術では、データのリフレッシュ頻度が不十分となり、データが消失することになり得る。同様に、SSD102に位置するタイムクロックに依存するリフレッシュ技術は、十分に正確でないこともある。なぜなら、クロックを含む回路は、SSD102が電源オフになるか、または最低電力状態にあるとき、電源オフになるからである。
しかしながら、既存の技術とは違って、SSDファームウェア104は、ホストからの現在のタイムスタンプに基づいて、データがいつ各スーパーブロックに書き込まれたかに関する情報を維持することにより、SSD記憶装置122に記憶されたデータの保持時間を正確に追跡し得る。保持時間を正確に追跡することにより、SSDファームウェア104は、データ消失を避けるためにデータがいつリフレッシュされるべきかをより正確に判断し得る。例えば、図2は、ホストからSSDへのシステムクロック情報の通信の例を示したブロック図である。図2は、SSD204と結合されたSSDドライバ202を示している。SSDドライバは、図1に示されているホスト110のSSDドライバ128と同一または同様であってよく、SSD204は、図1のSSD102と同一または同様であってよい。ブロック206、208および210は、ホストからSSDにタイムスタンプを通信する方法の動作を表す。示されている例によると、動作206、208および210は、電源がオンになったか、または低電力状態を終えた後に起こる。低電力状態は「スリープ状態」であり得る。一例によると、低電力状態は、SSD204のコンポーネントの大多数(SSDコントローラ、DRAMおよびNVMなどの、基板上のディスクリートコンポーネントを含む)がオフになっている状態である(例えば、不揮発性メモリエクスプレス(NVMe)プロトコルでのPS4、および、PCIエクスプレス(PCIe)プロトコルでのL1またはL1.2)。NVMeプロトコルは、2017年5月1日に公開されたNVMe規格のバージョン1.3またはNVMe規格の別のバージョンに記載のプロトコルを指し得る。PCIeプロトコルは、2010年11月10日に公開されたPCIエクスプレス(登録商標)Base Specificationのバージョン3.0またはPCIエクスプレス(登録商標)Base Specificationの別のバージョンに記載のプロトコルを指し得る。
SSD204が電源オンとなった後、または、SSD204が低電力状態を終えた後、SSD204はブロック206で、SSDが初期化されてホストコマンドを受け取れる状態になっている旨をSSDドライバ202に通知する。一例によれば、(動作208で)最初のI/Oコマンドを送信すると(例えば、送信した直後に)、SSDドライバ202は、動作210でSSD204にシステムクロック情報を(例えば、タイムスタンプの形態で)送信する。別の例を挙げると、SSDドライバ202は、最初のI/Oコマンドの前にSSDへシステムクロック情報を送信し得る。一例によれば、デバイス(SSD)準備のためのPCIe/NVMeプロトコルハンドシェイクを完了すると、システムクロック情報がそれを介して送信されるコマンドが、記憶ドライバによりトリガされる。ひとたびSSD204がホストからシステムクロック情報を受信すると、SSDは、ホストからの当該システムクロック情報を使用して、保持時間を正確に判断することができ、閾値を超えることにより消失または破損する恐れがあるデータをリフレッシュすることができる。例えば、SSDは、データがいつ所与のスーパーブロックに書き込まれたかを示すタイムスタンプを記憶し得る。ホストからの現在のタイムスタンプに対して、データがいつ所与のスーパーブロックに書き込まれたかを示す当該タイムスタンプに基づいて、SSDは、当該スーパーブロックに関する保持時間を判断および記憶することもできる。一例によると、SSDが(例えば、SSDのDRAMが電源オンおよび動作可能となっている状態で)動作している間、SSDはタイムスタンプ情報および保持時間をSSDの揮発性メモリに記憶し得る。
先ほど簡単に述べたように、SSDは、(例えば、書き込みが行われたスーパーブロックごとに)スーパーブロックの粒度に関する係る情報を追跡し得る。スーパーブロック(別名:バンド)とは、あらゆるプレーン、あらゆるダイにまたがるブロックのことである。図3Aは、クアッドプレーンの4NANDダイSSDに関するスーパーブロックの例を示している。図3Aに示されている例によると、SSDは4つの異なるダイ(例えば、ダイ0、1、2および3)を有し、各ダイは4つのプレーン(例えば、0、1、2および3)を有し、各プレーンは複数のブロック(例えば、ブロック0〜n)を有する。このように、示されている例によると、スーパーブロック0は、各ダイの各プレーンにブロック0を含む。それに応じて、一例によると、SSDは、各スーパーブロック(例えば、スーパーブロック0−n)に関するタイムスタンプおよび保持時間を追跡し得る。図3Bは、正確なデータリフレッシュを可能とするためにSSDが記憶し得る情報を示す表である。図3Bの表に示されている情報(例えば、タイムスタンプおよび保持時間)は、SSDが動作している間は揮発性メモリに記憶されてよく、SSDが電源オフになるか、または低電力モード(例えば、DRAMが動作可能でない低電力モード)にある場合は不揮発性記憶装置に記憶されてよい。例えば、図1を参照すると、SSD102のDRAM108は、SSDが動作しているときにタイムスタンプ情報および保持時間情報を記憶し得る。DRAMレスSSDでは、タイムスタンプ情報および保持時間情報がSSDコントローラメモリなどの別の場所に記憶され得る。次に、低電力モードまたは電源オフになる前、SSD102は、SSD記憶装置122にタイムスタンプ情報および保持時間情報を記憶し得る。係る一例によると、SSD102は、SSD記憶装置122のSLCブロック(例えば、通常はホストから直接アクセスできない、予約されたSLCブロックまたは「システム」SLCブロック)にタイムスタンプ情報および保持時間情報を記憶する。図3Bを再び参照すると、タイムスタンプおよび保持時間は秒単位であるが、他の時間粒度(例えば、分、時または日などの時間単位)も使用され得ることに留意されたい。同様に、図3Bの表は、スーパーブロックごとのタイムスタンプが記憶される例を示しているが、他の粒度も使用され得る。例えば、SSDは、各ブロック、または書き込みが行われたブロックもしくはスーパーブロックのみ、または他の粒度に関するタイムスタンプ情報を記憶し得る。
示されている例によると、表の各項目は、スーパーブロックに書き込みが行われた時間を示す書き込みタイムスタンプを含む。SSDはまた、ホスト上のタイムクロックに基づいて現在のタイムスタンプを記憶する。図2との関連で説明されている例によると、ホストは(例えば、電源がオンになった後または低電力モードを終えた後に)SSDが初期化されてコマンドを受け取れる状態になっているという通知をSSDから受信したことに応答して、SSDに現在のタイムスタンプを送信する。図3Bの表は(スーパーブロックごとに)現在のタイムスタンプを複数回分示しているが、SSDは、スーパーブロックごとにというよりはむしろ一度だけ、現在のタイムスタンプを記憶し得ることに留意されたい。一例によると、SSDは、スーパーブロックごとのデータ保持時間も記憶する。一例によると、データ保持時間は、現在のタイムスタンプから書き込みタイムスタンプを減算することにより計算される。
現在のタイムスタンプを再び参照して、一例によると、ホストからSSDに現在のタイムスタンプを通信するためにプロトコルが確立される。SSDファームウェアおよびSSDドライバの両方が準拠するプロトコルを有することにより、SSDドライバはSSDの予想と一致したタイムスタンプを提供することができ、SSDはホストから受信されたタイムスタンプを正しく解釈することができる。図4Aおよび図4Bは、ホストからSSDにタイムスタンプを通信するためのプロトコルの幾つかの機能の例を示している。
図4Aは、記憶デバイスがシステムクロック情報を受け取ることができるかどうかを含めて、どの機能が所与の記憶デバイスによりサポートされているかを特定するのに使用され得るIdentify Controllerデータ構造の例を示している。データ構造400Aは、不揮発性メモリエクスプレス(NVMe)などの記憶プロトコルといったプロトコルに使用され得る。NVMeは、どの能力および設定が記憶コントローラ(例えば、図1のSSDコントローラ130)に適用されるかを特定するためにホストが記憶デバイスに送信するIdentifyコマンドを定義する。当該Identifyコマンドの受信に応答して、記憶デバイスは、1つまたは複数の機能に関する情報を含むデータ構造(例えば、Identify Controllerデータ構造400A)を返すことになる。データ構造400Aでは、ベンダー固有の機能のために様々なバイトが予約される。示されている例によると、ベンダー固有の機能のためにバイト4095:3072が予約される。当該バイトは、システムクロック情報を受け取る機能を記憶デバイスがサポートしているかどうか特定するための1バイトを含む。バイト3072のビット0を論理1に設定することにより、記憶デバイスは、当該機能がサポートされていることを示し、当該ビットを論理0に設定することにより、記憶デバイスは、当該機能がサポートされていないことを示す。逆の規定も使用され得る(例えば、ある機能がサポートされていることを論理0が示し得る)。(「O/M」列の「M」で示されているように)バイトは必須のものとして示されているが、他の例によるとバイトは任意選択であり得る。
(例えば、データ構造400Aのバイト3072で示されているように)システムクロック情報を受け取る機能を記憶デバイスがサポートしている場合は、電源がオンになった後、または、低電力状態を終えた後などに、ある所定の回数にわたって、ホストが記憶デバイスに当該システムクロック情報を通信し得る。例えば、ホストはベンダーユニークのSet Featureコマンドを介してシステムクロック情報を通信し得る。
図4Bは、システムクロック情報がどのようにしてホストからSet Featureコマンドを介して記憶デバイスに送信され得るかという例を示した表である。例えば、表400Bは、NVMe Set Featuresコマンドの機能識別子を示している。ホストが記憶デバイスにSet Featuresコマンドを送信する前に、ホストは、システムクロックにより示される通りに現在時刻を反映するよう(例えば、SSDドライバ128などの記憶ドライバを介して)機能識別子C0hを設定する。現在のタイムスタンプは、所定の日時から経過した秒数(または、ミリ秒(ms)、分または時などの時間粒度)として定義され得る。他のタイムスタンプ形式も、当該形式がプロトコルにより定義されて、ホストおよび記憶デバイスの両方に用いられる限りは、適用可能である。示されている例によると、システムクロック情報機能は、ベンダー固有の機能に含まれる(例えば、示されている例によると、ベンダー固有の機能識別子がバイトC0h−FFhを含む)。しかしながら、他の機能識別子または他のコマンドも使用され得る。ホストは次に、機能識別子を含むコマンドを記憶デバイスに送信する。記憶デバイスは、上記のように、また以下でより詳細に説明するように、データ保持時間を判断するために現在のタイムスタンプを記憶し得る。
図5から図7は、システムタイムスタンプを用いてバックグラウンド・リフレッシュを行うための方法の例を示したフローチャートである。図5は、システムの観点から見たフローチャートである。当該フローチャートは、ホストおよび記憶デバイスの両方により行われる動作を含む。図6は、記憶デバイスの観点から見たフローチャートである。図7は、ホストの観点から見たフローチャートである。上述のように、不揮発性媒体においてデータをリフレッシュするための既存の技術は、頻繁に電源オフまたは低電力状態になる記憶デバイスにとっては有効でないことがある。図5から図7の方法では、データ保持時間をより正確に判断するためにホストからのタイムスタンプが使用され、故にデータリフレッシュの向上が可能となり得る。
図5を参照すると、方法500は、動作502でSSDの電源がオンになるところから始まる。代わりに、方法500は、SSDが低電力状態を終えた(例えば、起動する、またはより高い電力状態になる)ところからでも始まり得る。SSDは、図1のSSD102と同一または同様であり得る。SSDファームウェアは次に、動作504で、不揮発性記憶装置からDRAMにタイムスタンプ表をロードする。例えば、図1を参照すると、SSDファームウェア104は、SSD記憶装置122からDRAM108にタイムスタンプ表をロードし得る。SSDがDRAMを含まないような一例によると、SSDファームウェアは、SSD記憶装置122からSSDコントローラメモリにタイムスタンプ表をロードし得る。タイムスタンプ表をロードすることは、1つまたは複数のスーパーブロック(などの粒度)に関する書き込みタイムスタンプをSSD記憶装置122からロードすることを含み得る。ホスト側のSSDドライバは次に、動作506で、最初のホストI/Oコマンドに関する現在のタイムスタンプを送信する。例えば、SSDドライバ128は、図4Bに示されているようなベンダーユニークのSet Featuresコマンドを介してタイムスタンプを送信し得る。係る一例によると、SSDドライバは、最初のホストI/Oコマンドの直後(例えば、最初の書き込みまたは読み出しなどのI/Oコマンドの後)に、ベンダーユニークのSet Featuresコマンドを介してタイムスタンプを送信する。一例によると、ホストは、確定的な動作が可能となるよう、最初のI/Oコマンドの直後に(例えば、最初のI/OコマンドとベンダーユニークのSet Featuresコマンドとの間にコマンドを挟むことなく)タイムスタンプ情報を送信する。別の例を挙げると、SSDドライバは、最初のI/Oコマンドの前にタイムスタンプを送信することができ、タイムスタンプが最初の書き込みコマンドの後に送信される場合は、最初のI/OコマンドとベンダーユニークのSet Featuresコマンドとの間に1つまたは複数のコマンドが挟まれ得る。ベンダーユニークのSet Featuresコマンド以外の他のコマンドも使用され得る。
SSDファームウェアは次に、動作508にて、表内のスーパーブロックごとの保持時間でタイムスタンプ表を更新する。例えば、SSDファームウェア104は、現在のタイムスタンプから書き込みタイムスタンプを減算することにより、スーパーブロックごとのデータ保持時間を計算し得る。一例によると、SSDファームウェアは、この計算されたスーパーブロックごとのデータ保持時間を記憶する。
1つまたは複数のスーパーブロックに関する保持時間を判断した後、SSDファームウェアは次に、動作510で、保持時間が閾値を超えているかどうか確認し得る。当該閾値は、SSDの特性に依存する所定の数であり得る。閾値は静的(例えば、SSDの一生を通じて同じ閾値が使用される)であってもよいし、動的(例えば、SSDが使用されるにつれて、閾値が経時的に更新され得る)であってもよい。保持時間が閾値を超えている場合は、510で「YES」の方に分岐する。SSDファームウェアは次に、動作512で、当該スーパーブロックをバックグラウンドデータ・リフレッシュ(BDR)キューに移し、データが移されるべきであることを示すスーパーブロック用フラグ(例えば、BDRフラグ)を設定する。当該キューは、ファームウェア、ハードウェアまたはこれらの組み合わせで実装され得る。一例によると、スーパーブロックをBDRキューに移すには、スーパーブロック用BDRフラグを設定する必要があり得る。フラグは1つのビットまたは複数のビットを含み得る。所与のスーパーブロックにあるデータが移されるべきであることを示すフラグを設定するには、当該スーパーブロックにあるデータが移されるべきであることを示す論理1または論理0または別の値にフラグを設定する必要があり得る。別の例を挙げると、スーパーブロックをBDRキューに移すには、更にまたは代わりに、当該スーパーブロックを特定するための何らかの情報をキューデータ構造に記憶する必要があり得る。BDRフラグが設定(例えば、データが移されるべきであることを示す値に設定)されている場合は、514で「YES」の方に分岐する。SSDファームウェアは、516で、ホスト動作をBDR書き込みとインタリーブして、BDRキュー内のスーパーブロックから新しいスーパーブロックに有効データを移す。これらの動作のうちの1つまたは複数は、ガベージコレクションルーチンにより行われ得る。当該ガベージコレクションルーチンは通常、SSDファームウェア(例えば、図1のファームウェア104の一部)のルーチンである。例えば、ホスト動作のBDR書き込みとのインタリーブ、および、当該BDR書き込みの実施は、ガベージコレクションルーチンにより行われ得る。
所与のスーパーブロックの保持時間が閾値を超えていない場合は、510で「NO」の方に分岐する。次にスーパーブロックがキューに配置されることはなく、BDRフラグが設定されることはなく(514で「NO」の方に分岐し)、動作518でSSDが進行中のホスト動作の処理を継続する。このように、一例によると、電源を切って入れ直すたびに、SSDファームウェアは、スーパーブロックごとのデータ保持時間をスキャンする。保持時間が保持時間閾値を超えている場合は、スーパーブロックがBDRキューに配置されて、データを移すガベージコレクションルーチンにより選択されることとなり、BDRフラグがファームウェアにより設定される。ファームウェアはBDRフラグを確認し、もし設定されていれば、ファームウェアがガベージコレクションルーチンをトリガし、BDRキュー内のブロックが、ガベージコレクションにおいて優先され得る。SSDが低電力状態または電源オフになりそうな場合は、SSDファームウェアがSSD記憶装置122にタイムスタンプ情報を記憶し、その結果、SSDが起動するか、またはその電源がオンになるときに当該情報が取り出され得る。
一例によると、図6もまた、ホストからのタイムスタンプを用いてバックグラウンド・リフレッシュを行う方法のフローチャートである。図6の方法600は、記憶デバイスにより行われる(例えば、図1のファームウェア104などのSSDファームウェアにより行われる)。方法600は、動作602でホスト(例えば、図1のホスト110)からタイムスタンプを受信するところから始まる。例えば、ファームウェアは、ホストからのタイムスタンプを含むベンダーユニークのSet Featuresコマンドなどのコマンドを受信し得る。SSDファームウェアは次に、動作604で、当該タイムスタンプを記憶デバイスに記憶する。例えば、ファームウェアはSSDのDRAM(例えば、図1のSSD102のDRAM108)に当該タイムスタンプを記憶し得る。ホストから当該タイムスタンプを受信した後、ファームウェアは、動作606で、書き込みタイムスタンプに対する当該タイムスタンプに基づいて、記憶デバイスの1つまたは複数のブロックに記憶されたデータの保持時間を判断する。当該書き込みタイムスタンプは、当該データがいつ当該1つまたは複数のブロック(例えば、ブロックまたはスーパーブロックなどの記憶領域粒度)に書き込まれたかを示す。ファームウェアは、当該1つまたは複数のブロックの当該保持時間もDRAMに記憶し得る。当該保持時間が閾値を超えている場合は、ファームウェアが、動作608で、記憶デバイスの1つまたは複数の他のブロックに当該データを移す。例えば、ファームウェア(例えば、図1のリフレッシュ論理回路140)は、リフレッシュ書き込みをホスト動作とインタリーブして、ホスト動作のバックグラウンドにあるデータをリフレッシュし得る。
一例によると、図7は、システムクロックに基づく現在のタイムスタンプを記憶デバイスに伝送する方法のフローチャートである。図7の方法700は、ホスト(例えば、図1のホスト110のSSDドライバ128)により行われ得る。方法700は、動作702で、記憶デバイス(例えば、図1のSSD102)がコマンドを受信できる状態になっていることを示す通知をホストが当該記憶デバイスから受信するところから始まる。ホストは次に、動作704で、ベンダーユニークのSet Featuresコマンドを介して、ホストのシステムクロックに基づく現在のタイムスタンプ情報を記憶デバイスに送信する。例えば、ホストは、図4Bで指定されているように、コマンドを介してタイムスタンプを送信し得る。しかしながら、記憶デバイスにタイムスタンプを提供するためには、他のコマンドが使用されてもよい。記憶デバイスは、当該現在のタイムスタンプを記憶し、当該現在のタイムスタンプに基づいて、記憶デバイスのブロックに記憶されたデータの保持時間を判断し得る。
このように、図5から図7の方法は、ホストから記憶デバイスに現在のタイムスタンプを伝送するための方法と、当該現在のタイムスタンプを用いて、記憶デバイスに記憶されたデータの保持時間を判断するための方法と、当該保持時間に基づいてバックグラウンド・リフレッシュを行うための方法とを示している。先ほど簡単に述べたように、データのリフレッシュは、リフレッシュ動作がホスト動作とインタリーブされ得るという意味で、バックグラウンドにおいて行われ得る。しかしながら、リフレッシュに起因して行わるべき書き込みの量と、ホスト動作の量とは、著しく異なり得る。故に、一例によると、記憶デバイス(例えば、SSDファームウェア)は、ホスト動作に対するリフレッシュ書き込みの比率を動的に判断し得る。例えば、リフレッシュ書き込みとホスト動作とをインタリーブするための比率は、キュー内のブロックの保持時間、ホストからのコマンドの数、リフレッシュされるべきブロックの数、および、リフレッシュを行うための空き領域(例えば、空のブロックの数)のうちの1つまたは複数に基づいたものであり得る。
図8は、バックグラウンド・リフレッシュレートを設定するための疑似コード800の例である。疑似コード800では、リフレッシュ用のバックグラウンド書き込みレートが、以下の変数、すなわち、ソースブロックから移すべき有効なユニットの割合、および、移動先として利用できる空のブロックの割合に基づいて異なることになる。ソースブロックから移すべき有効なユニットの割合は、ブロック内の有効なユニットをブロック内のユニットの総数で割ることにより求められる(ここで、ユニットの総数は、有効なブロックおよび無効なブロックの両方を含む)。空のブロックの割合は、現在の空のブロックを、割り当てられた空のブロックの総数で割ることにより求められる。(行802で)有効なユニットの割合が25%未満であれば、または、空のブロックの割合が75%よりも高ければ、それは、書き込むべきデータが減ったか、または、書き込みに利用できる領域が増えたことの表れである。そのため、行804から行810で、バックグラウンド書き込み動作に対するホスト動作の比率が4:1などの比較的高い比率に設定され得る。(行812で)有効なユニットの割合が50%未満であるか、または、空のブロックの割合が50%よりも高ければ、行814から行818で、ファームウェアがバックグラウンド書き込み動作に対するホスト動作の比率を2:1に設定し得る。(行820で)有効なユニットの割合が75%未満であれば、または、空のブロックの割合が25%よりも高ければ、行822から行826で、バックグラウンド書き込み動作に対するホスト動作の比率が1:2に設定され得る。(行828で)それ以外ならば、行830から行834で、バックグラウンド書き込み動作に対するホスト動作の比率が1:4に設定され得る。これらの比率は例であり、性能目標を達成してデータの破損を防ぐべくバックグラウンド・リフレッシュを行うためには、他の比率も使用され得る。例えば、4:1よりも高い比率(例えば、8:1、16:1、32:1またはこれよりも高い比率)が使用されてもよいし、1:4よりも低い比率(例えば、1:8、1:16、1:32またはこれよりも低い比率)が使用されてもよい。
図9は、バックグラウンドデータ・リフレッシュ技術を実装する不揮発性記憶デバイスを含むコンピューティングシステムの例のブロック図である。本明細書の任意の例によると、システム900は、コンピューティングデバイスを表し、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、サーバ、ゲームもしくはエンターテイメントの制御システム、またはスマートフォンなどの電子デバイスであり得る。
システム900はプロセッサ910を含み、プロセッサ910は、システム900のために処理、動作管理および命令の実行を行う。プロセッサ910は、任意のタイプのマイクロプロセッサ、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)もしくは処理コアなど、システム900のために処理を行う処理ハードウェア、またはプロセッサの組み合わせを含み得る。プロセッサ910は、システム900の全体的な動作を制御し、1つまたは複数のプログラム可能な汎用マイクロプロセッサもしくは専用マイクロプロセッサ、デジタル信号プロセッサ(DSP)、プログラム可能なコントローラ、特定用途向け集積回路(ASIC)またはプログラム可能な論理デバイス(PLD)など、または係るデバイスの組み合わせであってもよいし、それを含んでもよい。
一例によると、システム900は、プロセッサ910に結合されたインタフェース912を含む。インタフェース912は、メモリサブシステム920またはグラフィックインタフェース・コンポーネント940などの、帯域幅のより大きな接続を必要とする、システムコンポーネント用のより高速なインタフェースまたは高スループットなインタフェースを表し得る。インタフェース912は、独立型コンポーネントであってもよいし、プロセッサダイに統合されてもよい、インタフェース回路を表す。インタフェース912は、回路としてプロセッサダイに統合されてもよいし、コンポーネントとしてシステムオンチップに統合されてもよい。もし存在するなら、グラフィックインタフェース940は、システム900のユーザに視覚表示を提供するためのグラフィックコンポーネントとインタフェースする。グラフィックインタフェース940は、独立型コンポーネントであってもよいし、プロセッサダイまたはシステムオンチップに統合されてもよい。一例によると、グラフィックインタフェース940は、ユーザに出力を提供する高細精度(HD)表示を駆動し得る。一例によると、当該表示はタッチスクリーン表示を含み得る。
メモリサブシステム920は、システム900のメインメモリを表し、プロセッサ910により実行されるべきコード、または、ルーチンの実行に使用されるべきデータ値の記憶装置となる。メモリサブシステム920は、リードオンリメモリ(ROM)、フラッシュメモリまたは1つまたは複数の種類のDRAMのようなランダムアクセスメモリ(RAM)といったメモリデバイス、または係るデバイスの組み合わせなど、1つまたは複数のメモリデバイス930を含み得る。メモリ930は、特に、システム900で命令を実行するためのソフトウェアプラットフォームを提供するオペレーティングシステム(OS)932を記憶およびホストする。更に、アプリケーション934は、メモリ930にあるOS932のソフトウェアプラットフォームで実行され得る。アプリケーション934は、1つまたは複数の機能の実行を行うための動作可能な論理回路を独自に有するプログラムを表す。プロセス936は、OS932または1つまたは複数のアプリケーション934、またはこれらの組み合わせに補助的機能を提供するエージェントまたはルーチンを表す。一例によると、メモリサブシステム920はメモリコントローラ922を含み、メモリコントローラ922は、メモリ930へのコマンドを生成および発行するメモリコントローラである。メモリコントローラ922は、プロセッサ910の物理的部分またはインタフェース912の物理的部分であり得ることが解るであろう。例えば、メモリコントローラ922は、プロセッサダイまたはシステムオンチップに統合されるなどしてプロセッサ910を有する回路に統合された統合メモリコントローラであり得る。
具体的には示されていないが、システム900は、メモリバス、グラフィックバス、またはインタフェースバスなどといった1つまたは複数のバスまたはバスシステムをデバイス間に含み得ることが解るであろう。バスなどの信号線が、コンポーネント同士を通信可能にまたは電気的に結合してもよいし、コンポーネント同士を通信可能にかつ電気的に結合してもよい。バスは、物理通信回線、ポイントツーポイント接続、ブリッジ、アダプタまたはコントローラなどの回路、またはこれらの組み合わせを含み得る。バスとしては、例えば、システムバス、ペリフェラル・コンポーネント・インターコネクト(PCI)バス、PCIエクスプレス(PCIe)、ハイパートランスポートバスもしくはインダストリ・スタンダード・アーキテクチャ(ISA)バス、スモール・コンピュータシステム・インタフェース(SCSI)バス、ユニバーサルシリアルバス(USB)または米国電気電子学会(IEEE)基準994バスのうちの1つまたは複数が挙げられ得る。
一例によると、システム900はインタフェース914を含み、インタフェース914はインタフェース912に結合され得る。インタフェース914は、インタフェース912よりも低速のインタフェースであり得る。一例によると、インタフェース914は、独立型コンポーネントおよび集積回路を含み得るインタフェース回路を表す。一例によると、複数のユーザインタフェース・コンポーネントまたは周辺コンポーネント、またはその両方が、インタフェース914に結合する。ネットワークインタフェース950は、1つまたは複数のネットワークを介して遠隔デバイス(例えば、サーバなどのコンピューティングデバイス)と通信する能力をシステム900に提供する。ネットワークインタフェース950は、イーサネット(登録商標)アダプタ、無線相互接続コンポーネント、セルラネットワーク相互接続コンポーネント、またはUSB(ユニバーサルシリアルバス)などの、有線または無線の標準ベースインタフェースまたはプロプライエタリ・インタフェースを含み得る。
一例によると、システム900は、1つまたは複数の入出力(I/O)インタフェース960を含む。I/Oインタフェース960は、ユーザがそれを介してシステム900とインタラクトする1つまたは複数のインタフェースコンポーネント(例えば、オーディオ、英数字または触覚/タッチなどのインタフェース方式)を含み得る。周辺インタフェース970としては、具体的には上述しなかった任意のハードウェアインタフェースが挙げられ得る。周辺機器とは概して、システム900と従属的に接続するデバイスのことを指す。従属的な接続とは、動作がそこで実行され、かつ、ユーザがそれとインタラクトする、ソフトウェアプラットフォームまたはハードウェアプラットフォーム、またはその両方をシステム900が提供するような接続のことである。システム900は電源902も含み、電源902はシステム900のコンポーネントに電力を提供する。より具体的に言うと、電源902は通常、システム900のコンポーネントに電力を提供する、システム900内の1つまたは複数の電力供給装置904とインタフェースする。
一例によると、システム900は、データを不揮発的に記憶するための記憶サブシステム980を含む。一例によると、ある特定のシステム実装では、記憶装置980の少なくともある特定のコンポーネントがメモリサブシステム920のコンポーネントと重複し得る。記憶サブシステム980は記憶デバイス981を含み、記憶デバイス981は不揮発性記憶装置984を含む。不揮発性記憶装置984は、1つまたは複数の磁気ディスク、ソリッドステートディスクまたは光学ベースのディスク、またはこれらの組み合わせといった、大量のデータを不揮発的に記憶するための任意の従来型媒体であり得る。記憶装置984は、コードまたは命令およびデータ986を永続的な状態に保つ(すなわち、システム900への電力が遮断されても値が保持される)。通常はメモリ930がプロセッサ910に命令を提供する実行メモリまたはオペレーティングメモリであるが、総称的には記憶装置984が「メモリ」と見なされ得る。一方で、記憶装置984は不揮発性であり、メモリ930は揮発性メモリを含み得る(すなわち、システム900への電力が遮断されるとデータの値または状態が不確定になる)。一例によると、記憶サブシステム980は、記憶デバイス981とインタフェースするためのホスト側コントローラ982と、ホストとインタフェースするための記憶装置側コントローラ985とを含む。一例によると、コントローラ982は、インタフェース914またはプロセッサ910の物理的部分であるか、または、プロセッサ910およびインタフェース914の両方にある回路または論理回路を含み得る。記憶デバイス981はファームウェア983も含み、ファームウェア983は、図1のファームウェア104に関して先ほど説明したような様々な機能を実行し得る。一例によると、記憶デバイス981は、図1のSSD102と同一または同様であり得る。係る一例によると、記憶デバイス981は、本明細書に記載のように、ホストからのタイムスタンプを用いてバックグラウンド・リフレッシュ技術の向上を行う。
図10は、バックグラウンドデータ・リフレッシュ技術を実装する不揮発性記憶デバイスを含むモバイルデバイスの例のブロック図である。デバイス1000は、コンピューティングタブレット、携帯電話もしくはスマートフォン、または無線対応電子書籍リーダといったモバイルデバイスなどのモバイル・コンピューティングデバイスを表す。デバイス1000には概してコンポーネントのうちの幾つかが示されており、係るデバイスのコンポーネントが全て示されているわけではないことが解るであろう。
デバイス1000はプロセッサ1010を含み、プロセッサ1010はデバイス1000の一次処理動作を行う。プロセッサ1010は、マイクロプロセッサ、アプリケーションプロセッサ、マイクロコントローラ、またはプログラム可能な論理デバイスといった処理手段など、1つまたは複数の物理デバイスを含み得る。プロセッサ1010により行われる処理動作は、アプリケーションおよびデバイス機能が実行されるオペレーティング・プラットフォームまたはオペレーティングシステムの実行を含む。処理動作としては、人間のユーザまたは他のデバイスによるI/O(入出力)に関する動作、電力管理機能に関する動作、デバイス1000を別のデバイスに接続することに関連する動作、またはこれらの組み合わせが挙げられる。処理動作としては、オーディオI/Oまたは表示I/Oなどのインタフェース方式、またはこれらの組み合わせに関連する動作も挙げられ得る。プロセッサ1010は、メモリに記憶されたデータを実行し得る。プロセッサ1010は、メモリに記憶されたデータの書き込みまたは編集を行い得る。
一例によると、システム1000は、1つまたは複数のセンサ1012を含む。センサ1012は、埋め込み型センサ、または外部センサへのインタフェース、またはこれらの組み合わせを表す。センサ1012によって、システム1000が実装される環境またはデバイスの1つまたは複数の状態をシステム1000が監視または検知することが可能となる。一例によると、1つまたは複数のセンサ1012は、プロセッサ1010に統合されたフロントエンド回路を介してプロセッサ1010に結合する。一例によると、1つまたは複数のセンサ1012は、システム1000の別のコンポーネントを介してプロセッサ1010に結合する。
一例によると、デバイス1000はオーディオサブシステム1020を含み、オーディオサブシステム1020は、コンピューティングデバイスにオーディオ機能を提供することと関連付けられたハードウェアコンポーネント(例えば、オーディオハードウェアおよびオーディオ回路)およびソフトウェアコンポーネント(例えば、ドライバ、コーデック)を表す。オーディオ機能は、スピーカー出力またはヘッドフォン出力とマイクロフォン入力とを含み得る。係る機能用のデバイスは、デバイス1000に統合されてもよいし、デバイス1000に接続されてもよい。一例によると、ユーザは、プロセッサ1010により受信および処理されるオーディオコマンドを提供することによってデバイス1000とインタラクトする。
表示サブシステム1030は、ユーザに提示するための視覚表示を提供するハードウェアコンポーネント(例えば、表示デバイス)およびソフトウェアコンポーネント(例えば、ドライバ)を表す。一例によると、表示装置は、ユーザがコンピューティングデバイスとインタラクトするための触覚コンポーネントまたはタッチスクリーン要素を含む。表示サブシステム1030は、表示インタフェース1032を含み、表示インタフェース1032は、ユーザに表示を提供するために使用される特定のスクリーンまたはハードウェアデバイスを含む。一例によると、表示インタフェース1032は、表示に関連する少なくとも何らかの処理を行うための、プロセッサ1010(グラフィックプロセッサなど)から切り離された論理回路を含む。一例によると、表示サブシステム1030は、出力および入力の両方をユーザに提供するタッチスクリーンデバイスを含む。
I/Oコントローラ1040は、ユーザとのインタラクションに関連するハードウェアデバイスおよびソフトウェアコンポーネントを表す。I/Oコントローラ1040は、オーディオサブシステム1020または表示サブシステム1030またはその両方の一部であるハードウェアを管理するよう動作し得る。更に、I/Oコントローラ1040は、ユーザがそれを介してシステムとインタラクトし得るデバイス1000に接続する更なるデバイスのための接続ポイントを示している。例えば、デバイス1000に取り付けられ得るデバイスとしては、マイクロフォンデバイス、スピーカーシステムもしくはステレオシステム、映像システムなどの表示デバイス、キーボードデバイスもしくはキーパッドデバイスといった、カードリーダなどのデバイスのような特定の用途に使用できるI/Oデバイスが挙げられ得る。
一例によると、デバイス1000は、バッテリ電源使用量、バッテリの充電、および省電力動作に関連する機能を管理する電力管理機能1050を含む。電力管理機能1050は電源1052からの電力を管理し、電源1052はシステム1000のコンポーネントに電力を提供する
メモリサブシステム1060は、情報をデバイス1000に記憶するためのメモリデバイス1062を含む。メモリサブシステム1060は、不揮発性の(メモリデバイスへの電力が遮断されても状態が変わらない)メモリデバイス、または揮発性の(メモリデバイスへの電力が遮断されると状態が不確定になる)メモリデバイス、またはこれらの組み合わせを含み得る。メモリ1062は、アプリケーションデータ、ユーザデータ、音楽、写真または文書などのデータと、システム1000のアプリケーションおよび機能の実行に関連するシステムデータ(長期的なものか一時的なものかは不問)とを記憶し得る。一例によると、メモリサブシステム1060はメモリコントローラ1064を含む(メモリコントローラ1064は、システム1000の制御装置の一部と見なされてもよく、場合によってはプロセッサ1010の一部と見なされてよい)。メモリコントローラ1064は、メモリデバイス1062へのアクセスを制御するコマンドを生成および発行するためのスケジューラを含む。
接続機能1070は、デバイス1000の外部デバイスとの通信を可能とするためのハードウェアデバイス(例えば、無線または有線のコネクタおよび通信ハードウェア、または、有線ハードウェアおよび無線ハードウェアの組み合わせ)およびソフトウェアコンポーネント(例えば、ドライバ、プロトコルスタック)を含む。外部デバイスは、他のコンピューティングデバイス、無線アクセスポイントまたは基地局などの別個のデバイス、および、ヘッドセットまたはプリンタといったデバイスなどの周辺機器であり得る。一例によると、システム1000は、メモリに記憶するために、または、表示デバイスに表示するために、外部デバイスとデータを交換する。交換されるデータは、データの読み出し、書き込みまたは編集をするためにメモリに記憶されるべきデータ、または、メモリに既に記憶されたデータを含み得る。
接続機能1070としては、複数の異なるタイプの接続機能が挙げられ得る。一般化すると、デバイス1000は、セルラ接続機能1072および無線接続機能1074と共に示されている。セルラ接続機能1072とは概して、GSM(登録商標)(グローバルシステム・フォー・モバイルコミュニケーションズ)またはその改変形態もしくは派生物、CDMA(符号分割多重アクセス)またはその改変形態もしくは派生物、TDM(時分割多重化)またはその改変形態もしくは派生物、LTE(ロングタームエボリューション、別名「4G」)などのセルラサービス基準を介して提供されるなどして、無線キャリアにより提供されるセルラネットワーク接続機能のことを指す。無線接続機能1074とは、セルラではない無線接続機能のことを指す。無線接続機能1074としては、パーソナルエリアネットワーク(Bluetooth(登録商標)など)、ローカルエリアネットワーク(WiFiなど)、またはワイドエリアネットワーク(WiMaxなど)といった無線通信、またはこれらの組み合わせが挙げられ得る。無線通信とは、変調電磁放射を用いることにより非固体媒体を介してデータを転送することを指す。有線通信は固体通信媒体を介して行われる。
周辺接続1080は、周辺接続を行うためのハードウェアインタフェースおよびハードウェアコネクタ並びにソフトウェアコンポーネント(例えば、ドライバ、プロトコルスタック)を含む。デバイス1000は、他のコンピューティングデバイスに対する周辺デバイス(「to」1082)であり得ると共に、デバイス1000に接続された周辺デバイス(「from」1084)を有し得ることが解るであろう。デバイス1000は一般に、デバイス1000上のコンテンツの管理(例えば、ダウンロード、アップロード、変更、同期)などを目的として他のコンピューティングデバイスに接続する「ドッキング」コネクタを有する。更には、ドッキングコネクタによって、例えば、視聴覚機器などのシステムへのコンテンツ出力をデバイス1000が制御することを可能にするような特定の周辺機器とデバイス1000が接続することが可能になり得る。
プロプライエタリ・ドッキングコネクタなどのプロプライエタリ接続ハードウェアに加えて、デバイス1000は、一般的なコネクタまたは標準ベースのコネクタを介して周辺接続1080を行い得る。一般的なタイプとしては、(複数の異なるハードウェアインタフェースのうちの何れかを含み得る)ユニバーサルシリアルバス(USB)コネクタ、MiniDisplayPort(MDP)を含むDisplayPort、高精細度マルチメディアインタフェース(HDMI(登録商標))またはファイヤワイヤなどのタイプが挙げられ得る。
デバイス1000は、ソリッドステートドライブ(SSD)1011も含み、SSD1011は、デバイス1000の不揮発性記憶装置となる。SSD1011は、図1のSSD102と同一または同様であり得る。係る一例によると、SSD1011は、本明細書に記載のように、ホストからのタイムスタンプを用いて、バックグラウンド・リフレッシュ技術の向上を行う。
以下は、バックグラウンド・リフレッシュ技術を実装するための方法、装置およびシステムの例である。一例によると、ある方法が、ホストからタイムスタンプを受信する段階と、当該タイムスタンプを記憶デバイスに記憶する段階と、データがいつ1つまたは複数のブロックに書き込まれたかを示す第2のタイムスタンプに対する当該タイムスタンプに基づいて、当該記憶デバイスの当該1つまたは複数のブロックに記憶された当該データの保持時間を判断する段階と、当該保持時間が閾値を超えていると判断したことに応答して、当該記憶デバイスの1つまたは複数の他のブロックに当該データを移す段階とを伴う。一例によると、当該ホストから当該タイムスタンプを受信する段階は、当該記憶デバイスの電源をオンにしたこと、または、当該記憶デバイスが低電力状態を終えたことに応答したものである。一例によると、当該ホストから当該タイムスタンプを受信する段階は更に、当該記憶デバイスの電源をオンにした後、または、当該低電力状態を終えた後の最初の書き込みコマンドに応答したものである。一例によると、当該方法は更に、複数のスーパーブロックのそれぞれについて、記憶デバイスの電源をオンにしたこと、または、記憶デバイスが低電力状態を終えたことに応答して、データがいつ所与のスーパーブロックに書き込まれたかを示すタイムスタンプと、当該所与のスーパーブロックに書き込まれた当該データの保持時間とを記憶する段階と、当該複数のスーパーブロックに関するデータ保持時間をスキャンする段階と、当該複数のスーパーブロックうちの1つまたは複数の保持時間が閾値を超えていると判断したことに応答して、当該複数のスーパーブロックのうちの当該1つまたは複数から1つまたは複数の他のスーパーブロックに当該データを移す段階とを伴う。
一例によると、当該方法は、低電力状態になったこと、または、当該記憶デバイスの電源をオフにしたことに応答して、当該複数のスーパーブロックのそれぞれについて、当該タイムスタンプおよび保持時間を不揮発性メモリに記憶する段階と、当該低電力状態を終えたこと、または、当該記憶デバイスの電源をオンにしたことに応答して、当該複数のスーパーブロックのそれぞれについて、当該不揮発性メモリから当該タイムスタンプおよび保持時間をロードする段階とを伴う。 一例によると、当該複数のスーパーブロックのそれぞれについて、当該タイムスタンプおよび保持時間を記憶する段階は、当該複数のスーパーブロックのそれぞれについて、当該記憶デバイスの1つまたは複数のシングルレベルセル(SLC)スーパーブロックに当該タイムスタンプおよび保持時間を記憶する段階を伴う。一例によると、当該データを移す段階は、当該1つまたは複数のブロックをキューに配置して、当該1つまたは複数のブロックに記憶されたデータの保持時間が当該閾値を超えていることを示す段階と、当該ホストからのアクセスを当該キューからの書き込みとインタリーブする段階とを伴う。一例によると、当該1つまたは複数のブロックを当該キューに配置する段階は、当該1つまたは複数のブロックを特定し、かつ、当該1つまたは複数のブロックに記憶されたデータの保持時間が当該閾値を超えていることを示す、フラグを設定する段階を伴う。一例によると、当該方法は、当該ホストからの当該アクセスを当該キューからの当該書き込みとインタリーブするための比率を調整する段階を伴い、当該インタリーブするための比率は、当該キュー内のブロックの保持時間、当該ホストからのコマンドの数、リフレッシュされるべきブロックの数、およびリフレッシュを行うための空き領域のうちの1つまたは複数に基づいたものである。一例によると、当該タイムスタンプを受信する段階は、当該ホストからのベンダーユニークコマンドを介して当該タイムスタンプを受信する段階を伴う。
一例によると、ソリッドステートドライブ(SSD)が、データを記憶するためのソリッドステート記憶装置と、論理回路とを備え、当該論理回路は、ホストからタイムスタンプを受信することと、当該タイムスタンプを当該ソリッドステート記憶装置に記憶することと、データがいつ1つまたは複数のブロックに書き込まれたかを示す第2のタイムスタンプに対する当該タイムスタンプに基づいて、当該ソリッドステート記憶装置の当該1つまたは複数のブロックに記憶された当該データの保持時間を判断することと、当該保持時間が閾値を超えていると判断したことに応答して、当該記憶デバイスの1つまたは複数の他のブロックに当該データを移すこととを行う。一例によると、当該ホストからの当該タイムスタンプの当該受信は、当該SSDの電源をオンにしたこと、または、当該SSDが低電力状態を終えたことに応答したものである。一例によると、当該ホストからの当該タイムスタンプの受信は更に、当該SSDの電源をオンにした後、または、当該SSDが低電力状態を終えた後の最初の書き込みコマンドに応答したものである。一例によると、当該論理回路は更に、複数のスーパーブロックのそれぞれについて、データがいつ所与のスーパーブロックに書き込まれたかを示すタイムスタンプと、当該所与のスーパーブロックに書き込まれた当該データの当該保持時間とを記憶する。
一例によると、当該論理回路は更に、当該記憶デバイスの電源をオンにしたこと、または、当該記憶デバイスが低電力状態を終えたことに応答して、当該複数のスーパーブロックに関するデータ保持時間をスキャンすることと、当該複数のスーパーブロックうちの1つまたは複数の当該保持時間が閾値を超えていると判断したことに応答して、当該複数のスーパーブロックうちの当該1つまたは複数から1つまたは複数の他のスーパーブロックに当該データを移すこととを行う。一例によると、当該SSDは更に、揮発性メモリを備え、低電力状態になったこと、または、当該SSDの電源をオフにしたことに応答して、当該論理回路は、当該複数のスーパーブロックのそれぞれについて、不揮発性記憶装置に当該タイムスタンプおよび保持時間を記憶し、当該低電力状態を終えたこと、または、当該SSDの電源をオンにしたことに応答して、当該論理回路は、当該複数のスーパーブロックのそれぞれについて、当該不揮発性記憶装置から当該揮発性メモリに当該タイムスタンプおよび保持時間をロードする。一例によると、当該低電力状態になったこと、または、当該SSDの電源をオフにしたことに応答して、当該論理回路は、当該複数のスーパーブロックのそれぞれについて、記憶デバイスの1つまたは複数のシングルレベルセル(SLC)スーパーブロックに当該タイムスタンプおよび保持時間を記憶する。一例によると、当該データを移すための当該論理回路は、当該1つまたは複数のブロックをキューに配置して、当該1つまたは複数のブロックに記憶されたデータの保持時間が当該閾値を超えていることを示すことと、当該ホストからのアクセスを当該キューからの書き込みとインタリーブすることとを行う。一例によると、当該1つまたは複数のブロックを当該キューに配置するための当該論理回路は、当該1つまたは複数のブロックを特定し、かつ、当該1つまたは複数のブロックに記憶されたデータの保持時間が当該閾値を超えていることを示す、フラグを設定する。一例によると、当該論理回路は、当該ホストからの当該アクセスを当該キューからの当該書き込みとインタリーブするための比率を調整し、当該インタリーブするための比率は、当該キュー内のブロックの保持時間、当該ホストからのコマンドの数、リフレッシュされるべきブロックの数、およびリフレッシュを行うための空き領域のうちの1つまたは複数に基づいたものである。一例によると、当該論理回路は、当該ホストからのベンダーユニークコマンドを介して当該タイムスタンプを受信する。一例によると、論理回路はSSDのファームウェアを備える。
一例によると、システムは、プロセッサと、当該プロセッサと結合された不揮発性記憶デバイスとを含む。当該不揮発性記憶デバイスは、本明細書に記載の機能を含む。一例によると、ソリッドステートドライブ(SSD)が、データを記憶するための不揮発性記憶装置を備え、ホストからタイムスタンプを受信することと、当該タイムスタンプを当該不揮発性記憶装置に記憶することと、データがいつ1つまたは複数のブロックに書き込まれたかを示す第2のタイムスタンプに対する当該タイムスタンプに基づいて、当該不揮発性記憶装置の当該1つまたは複数のブロックに記憶された当該データの保持時間を判断することと、当該保持時間が閾値を超えていると判断したことに応答して、当該不揮発性記憶装置の1つまたは複数の他のブロックに当該データを移すこととを行うための手段を備える。
一例によると、当該ホストからの当該タイムスタンプの当該受信は、当該SSDの電源をオンにしたこと、または、当該SSDが低電力状態を終えたことに応答したものである。一例によると、当該ホストからの当該タイムスタンプの当該受信は更に、当該SSDの電源をオンにした後、または、当該低電力状態を終えた後の最初の入出力(I/O)コマンドに応答したものである。一例によると、当該SSDは、複数のスーパーブロックのそれぞれについて、データがいつ所与のスーパーブロックに書き込まれたかを示すタイムスタンプと、当該所与のスーパーブロックに書き込まれた当該データの当該保持時間とを記憶するための手段を備える。 一例によると、当該SSDは、当該SSDの電源をオンにしたこと、または、当該SSDデバイスが低電力状態を終えたことに応答して、当該複数のスーパーブロックに関するデータ保持時間をスキャンすることと、当該複数のスーパーブロックうちの1つまたは複数の当該保持時間が閾値を超えていると判断したことに応答して、当該複数のスーパーブロックうちの当該1つまたは複数から1つまたは複数の他のスーパーブロックに当該データを移すこととを行うための手段を備える。一例によると、当該SSDは更に、揮発性メモリを備え、低電力状態になったこと、または、当該SSDの電源をオフにしたことに応答して、当該複数のスーパーブロックのそれぞれについて、当該不揮発性記憶装置に当該タイムスタンプおよび保持時間を記憶することと、当該低電力状態を終えたこと、または、当該記憶デバイスの電源をオンにしたことに応答して、当該複数のスーパーブロックのそれぞれについて、当該不揮発性記憶装置から当該揮発性メモリに当該タイムスタンプおよび保持時間をロードすることとを行うための手段を備える。一例によると、当該SSDは更に、低電力状態になったこと、または、当該SSDの電源をオフにしたことに応答して、当該複数のスーパーブロックのそれぞれについて、当該SSDの1つまたは複数のシングルレベルセル(SLC)スーパーブロックに当該タイムスタンプおよび保持時間を記憶するための手段を備える。一例によると、当該データを移すための当該手段は、当該1つまたは複数のブロックをキューに配置して、当該1つまたは複数のブロックに記憶されたデータの保持時間が当該閾値を超えていることを示すこと、および、当該ホストからのアクセスを当該キューからの書き込みとインタリーブすることである。一例によると、当該1つまたは複数のブロックを当該キューに配置するための当該手段は、当該1つまたは複数のブロックを特定し、かつ、当該1つまたは複数のブロックに記憶されたデータの保持時間が当該閾値を超えていることを示す、フラグを設定することである。一例によると、当該SSDは、当該ホストからの当該アクセスを当該キューからの当該書き込みとインタリーブするための比率を調整する手段を備え、当該インタリーブするための比率は、当該キュー内のブロックの保持時間、当該ホストからのコマンドの数、リフレッシュされるべきブロックの数、およびリフレッシュを行うための空き領域のうちの1つまたは複数に基づいたものである。一例によると、当該SSDは、当該ホストからのベンダーユニークコマンドを介して当該タイムスタンプを受信するための手段を備える。一例によると、コンテンツを記憶したコンピュータ可読記憶媒体を備える製品であって、当該コンピュータ可読記憶媒体は、アクセスされると、本明細書に記載のバックグラウンド・リフレッシュを行うための方法を実行する動作の実施をもたらす。
本明細書に示されているフロー図は、一連の様々なプロセス動作の例を提供している。フロー図は、ソフトウェアまたはファームウェアのルーチンにより実行されるべき動作と、物理的な動作とを示し得る。一例によると、あるフロー図は有限ステートマシン(FSM)の状態を示すことができ、当該FSMは、ハードウェア、ソフトウェアまたはこれらの組み合わせで実装され得る。特定の順番または順序で示されてはいるが、別段の定めがない限り、動作の順序は修正され得る。このように、示されている実施形態は、単に例として解されるべきであり、プロセスは異なる順序で行われてよく、幾つかの動作は同時に行われてよい。更には、様々な例で1つまたは複数の動作が省略され得る。このように、各実施形態で全ての動作が必要とされるわけではない。他のプロセスフローも適用可能である。
様々な動作または機能は、それらが本明細書で説明されている範囲において、ソフトウェアのコード、命令、構成、データまたはこれらの組み合わせとして説明または定義され得る。コンテンツは、直接実行可能なもの(「オブジェクト」または「実行可能」な形態)、ソースコード、または差分コード(「デルタ」または「パッチ」コード)であり得る。本明細書で説明されている実施形態のソフトウェアコンテンツは、コンテンツを記憶した製品を介して提供されてもよいし、通信インタフェースを介してデータを送信するよう通信インタフェースを動作させる方法を用いて提供されてもよい。機械可読記憶媒体は、説明されている機能または動作を機械に実行させることができ、機械(例えば、コンピューティングデバイス、電子システムなど)からアクセスできる形態の情報を記憶する、記録可能/記録不可能媒体(例えば、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイスなど)などの任意のメカニズムを含む。通信インタフェースは、配線で接続された媒体、無線媒体、光媒体などのうちの何れかとインタフェースして別のデバイスと通信する、メモリバスインタフェース、プロセッサバスインタフェース、インターネット接続、ディスクコントローラなどといった任意のメカニズムを含む。通信インタフェースは、構成パラメータを提供すること、または、信号を送信すること、またはその両方により、ソフトウェアコンテンツが記されたデータ信号を提供する準備を通信インタフェースにさせるよう構成され得る。通信インタフェースは、通信インタフェースに送信された1つまたは複数のコマンドまたは信号を介してアクセスされ得る。
本明細書で説明されている様々なコンポーネントは、説明されている動作または機能を実行するための手段であり得る。本明細書で説明されている各コンポーネントは、ソフトウェア、ハードウェアまたはこれらの組み合わせを含む。当該コンポーネントは、ソフトウェアモジュール、ハードウェアモジュール、専用ハードウェア(例えば、特定用途向けハードウェア、特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)など)、埋め込み型コントローラ、配線で接続された回路などとして実装され得る。
本明細書で説明されているものに加えて、開示された本発明の実施形態および実装に対して、それらの範囲から逸脱することなく様々な修正がなされ得る。故に、本明細書の図および例は、例示的な意味で解釈されるべきであり、限定的な意味で解釈されるべきではない。本発明の範囲は、以下の請求項を参照することによってのみ判断されるべきである。
[他の考えられる例]
[例1]
ホストからタイムスタンプを受信する段階と、
上記タイムスタンプを記憶デバイスに記憶する段階と、
データがいつ1つまたは複数のブロックに書き込まれたかを示す第2のタイムスタンプに対する上記タイムスタンプに基づいて、上記記憶デバイスの上記1つまたは複数のブロックに記憶された上記データの保持時間を判断する段階と、
上記保持時間が閾値を超えていると判断したことに応答して、上記記憶デバイスの1つまたは複数の他のブロックに上記データを移す段階と
を備える方法。
[例2]
上記ホストから上記タイムスタンプを受信する段階は、上記記憶デバイスの電源をオンにしたこと、または、上記記憶デバイスが低電力状態を終えたことに応答したものである、例1に記載の方法。
[例3]
上記ホストから上記タイムスタンプを受信する段階は更に、上記記憶デバイスの電源をオンにした後、または、上記低電力状態を終えた後の最初の入出力(I/O)コマンドに応答したものである、例2に記載の方法。
[例4]
複数のスーパーブロックのそれぞれについて、データがいつ所与のスーパーブロックに書き込まれたかを示すタイムスタンプと、上記所与のスーパーブロックに書き込まれた上記データの上記保持時間とを記憶する段階とを更に備える、例1に記載の方法。
[例5]
上記記憶デバイスの電源をオンにしたこと、または、上記記憶デバイスが低電力状態を終えたことに応答して、上記複数のスーパーブロックに関するデータ保持時間をスキャンする段階と、
上記複数のスーパーブロックうちの1つまたは複数の上記保持時間が閾値を超えていると判断したことに応答して、上記複数のスーパーブロックうちの上記1つまたは複数から1つまたは複数の他のスーパーブロックに上記データを移す段階と
を更に備える、例4に記載の方法。
[例6]
低電力状態になったこと、または、上記記憶デバイスの電源をオフにしたことに応答して、上記複数のスーパーブロックのそれぞれについて、上記タイムスタンプおよび上記保持時間を上記記憶デバイスの不揮発性記憶装置に記憶する段階と、
上記低電力状態を終えたこと、または、上記記憶デバイスの電源をオンにしたことに応答して、上記複数のスーパーブロックのそれぞれについて、上記不揮発性記憶装置から上記記憶デバイスの揮発性メモリに上記タイムスタンプおよび上記保持時間をロードする段階と
を更に備える、例4に記載の方法。
[例7]
上記複数のスーパーブロックのそれぞれについて、上記タイムスタンプおよび上記保持時間を上記不揮発性記憶装置に記憶する段階は、上記複数のスーパーブロックのそれぞれについて、上記記憶デバイスの1つまたは複数のシングルレベルセル(SLC)スーパーブロックに上記タイムスタンプおよび上記保持時間を記憶する段階を含む、例6に記載の方法。
[例8]
上記データを移す段階は、上記1つまたは複数のブロックをキューに配置して、上記1つまたは複数のブロックに記憶されたデータの保持時間が上記閾値を超えていることを示す段階と、
上記ホストからのアクセスを上記キューからの書き込みとインタリーブする段階と
を含む、例1に記載の方法。
[例9]
上記1つまたは複数のブロックを上記キューに配置する段階は、上記1つまたは複数のブロックを特定し、かつ、上記1つまたは複数のブロックに記憶されたデータの保持時間が上記閾値を超えていることを示す、フラグを設定する段階を含む、例8に記載の方法。
[例10]
上記方法は、上記ホストからの上記アクセスを上記キューからの上記書き込みとインタリーブするための比率を調整する段階を更に備え、上記インタリーブするための比率は、上記キュー内のブロックの保持時間、上記ホストからのコマンドの数、リフレッシュされるべきブロックの数、およびリフレッシュを行うための空き領域のうちの1つまたは複数に基づいたものである、例9に記載の方法。
[例11]
上記タイムスタンプを受信する段階は、上記ホストからのベンダーユニークコマンドを介して上記タイムスタンプを受信する段階を含む、例1に記載の方法。
[例12]
データを記憶するための不揮発性記憶装置と、論理回路とを備えるソリッドステートドライブ(SSD)であって、上記論理回路は、
ホストからタイムスタンプを受信することと、
上記タイムスタンプを上記不揮発性記憶装置に記憶することと、
データがいつ1つまたは複数のブロックに書き込まれたかを示す第2のタイムスタンプに対する上記タイムスタンプに基づいて、上記不揮発性記憶装置の上記1つまたは複数のブロックに記憶された上記データの保持時間を判断することと、
上記保持時間が閾値を超えていると判断したことに応答して、上記不揮発性記憶装置の1つまたは複数の他のブロックに上記データを移すこととを行う、ソリッドステート記憶デバイス(SSD)。
[例13]
上記ホストからの上記タイムスタンプの上記受信は、上記SSDの電源をオンにしたこと、または、上記SSDが低電力状態を終えたことに応答したものである、例12に記載のSSD。
[例14]
上記ホストからの上記タイムスタンプの上記受信は更に、上記SSDの電源をオンにした後、または、上記SSDが低電力状態を終えた後の最初の入出力(I/O)コマンドに応答したものである、例12に記載のSSD。
[例15]
上記論理回路は更に、複数のスーパーブロックのそれぞれについて、データがいつ所与のスーパーブロックに書き込まれたかを示すタイムスタンプと、上記所与のスーパーブロックに書き込まれた上記データの上記保持時間とを記憶する、例12に記載のSSD。
[例16]
上記論理回路は更に、上記SSDの電源をオンにしたこと、または、上記SSDが低電力状態を終えたことに応答して、上記複数のスーパーブロックに関するデータ保持時間をスキャンすることと、
上記複数のスーパーブロックうちの1つまたは複数の上記保持時間が閾値を超えていると判断したことに応答して、上記複数のスーパーブロックうちの上記1つまたは複数から1つまたは複数の他のスーパーブロックに上記データを移すことと
を行う、例15に記載のSSD。
[例17]
上記SSDは、揮発性メモリを更に備え、
低電力状態になったこと、または、上記SSDの電源をオフにしたことに応答して、上記論理回路は、上記複数のスーパーブロックのそれぞれについて、不揮発性メモリに上記タイムスタンプおよび上記保持時間を記憶し、
上記低電力状態を終えたこと、または、上記SSDの電源をオンにしたことに応答して、上記論理回路は、上記複数のスーパーブロックのそれぞれについて、上記不揮発性記憶装置から上記揮発性メモリに上記タイムスタンプおよび上記保持時間をロードする、例15に記載のSSD。
[例18]
上記論理回路は、上記SSDのファームウェアを有する、例12に記載のSSD。
[例19]
コンテンツを記憶したコンピュータ可読記憶媒体を備える製品であって、上記コンピュータ可読記憶媒体は、アクセスされると、
ホストからタイムスタンプを受信する段階と、
上記タイムスタンプを記憶デバイスに記憶する段階と、
データがいつ1つまたは複数のブロックに書き込まれたかを示す第2のタイムスタンプに対する上記タイムスタンプに基づいて、上記記憶デバイスの上記1つまたは複数のブロックに記憶された上記データの保持時間を判断する段階と、
上記保持時間が閾値を超えていると判断したことに応答して、上記記憶デバイスの1つまたは複数の他のブロックに上記データを移す段階と
を含む方法を実行するための動作の実施をもたらす、製品。
[例20]
上記ホストから上記タイムスタンプを受信する段階は、上記記憶デバイスの電源をオンにしたこと、または、上記記憶デバイスが低電力状態を終えたことに応答したものである、例19に記載の製品。

Claims (24)

  1. ホストからタイムスタンプを受信する段階と、
    前記タイムスタンプを記憶デバイスに記憶する段階と、
    データがいつ1つまたは複数のブロックに書き込まれたかを示す第2のタイムスタンプに対する前記タイムスタンプに基づいて、前記記憶デバイスの前記1つまたは複数のブロックに記憶された前記データの保持時間を判断する段階と、
    前記保持時間が閾値を超えていると判断したことに応答して、前記記憶デバイスの1つまたは複数の他のブロックに前記データを移す段階と
    を備える方法。
  2. 前記ホストから前記タイムスタンプを受信する段階は、前記記憶デバイスの電源をオンにしたこと、または、前記記憶デバイスが低電力状態を終えたことに応答したものである、請求項1に記載の方法。
  3. 前記ホストから前記タイムスタンプを受信する段階は更に、前記記憶デバイスの電源をオンにした後、または、前記低電力状態を終えた後の最初の入出力(I/O)コマンドに応答したものである、請求項2に記載の方法。
  4. 複数のスーパーブロックのそれぞれについて、データがいつ所与のスーパーブロックに書き込まれたかを示すタイムスタンプと、前記所与のスーパーブロックに書き込まれた前記データの前記保持時間とを記憶する段階とを更に備える、請求項1に記載の方法。
  5. 前記記憶デバイスの電源をオンにしたこと、または、前記記憶デバイスが低電力状態を終えたことに応答して、前記複数のスーパーブロックに関するデータ保持時間をスキャンする段階と、
    前記複数のスーパーブロックうちの1つまたは複数の前記保持時間が閾値を超えていると判断したことに応答して、前記複数のスーパーブロックうちの前記1つまたは複数から1つまたは複数の他のスーパーブロックに前記データを移す段階と
    を更に備える、請求項4に記載の方法。
  6. 低電力状態になったこと、または、前記記憶デバイスの電源をオフにしたことに応答して、前記複数のスーパーブロックのそれぞれについて、前記タイムスタンプおよび前記保持時間を前記記憶デバイスの不揮発性記憶装置に記憶する段階と、
    前記低電力状態を終えたこと、または、前記記憶デバイスの電源をオンにしたことに応答して、前記複数のスーパーブロックのそれぞれについて、前記不揮発性記憶装置から前記記憶デバイスの揮発性メモリに前記タイムスタンプおよび前記保持時間をロードする段階と
    を更に備える、請求項4に記載の方法。
  7. 前記複数のスーパーブロックのそれぞれについて、前記タイムスタンプおよび前記保持時間を前記不揮発性記憶装置に記憶する段階は、前記複数のスーパーブロックのそれぞれについて、前記記憶デバイスの1つまたは複数のシングルレベルセル(SLC)スーパーブロックに前記タイムスタンプおよび前記保持時間を記憶する段階を含む、請求項6に記載の方法。
  8. 前記データを移す段階は、
    前記1つまたは複数のブロックをキューに配置して、前記1つまたは複数のブロックに記憶されたデータの保持時間が前記閾値を超えていることを示す段階と、
    前記ホストからのアクセスを前記キューからの書き込みとインタリーブする段階と
    を含む、請求項1に記載の方法。
  9. 前記1つまたは複数のブロックを前記キューに配置する段階は、前記1つまたは複数のブロックを特定し、かつ、前記1つまたは複数のブロックに記憶されたデータの保持時間が前記閾値を超えていることを示す、フラグを設定する段階を含む、請求項8に記載の方法。
  10. 前記方法は、前記ホストからの前記アクセスを前記キューからの前記書き込みとインタリーブするための比率を調整する段階を更に備え、
    前記インタリーブするための比率は、前記キュー内のブロックの保持時間、前記ホストからのコマンドの数、リフレッシュされるべきブロックの数、およびリフレッシュを行うための空き領域のうちの1つまたは複数に基づいたものである、請求項9に記載の方法。
  11. 前記タイムスタンプを受信する段階は、前記ホストからのベンダーユニークコマンドを介して前記タイムスタンプを受信する段階を含む、請求項1に記載の方法。
  12. データを記憶するための不揮発性記憶装置と、論理回路とを備えるソリッドステートドライブ(SSD)であって、前記論理回路は、
    ホストからタイムスタンプを受信することと、
    前記タイムスタンプを前記不揮発性記憶装置に記憶することと、
    データがいつ1つまたは複数のブロックに書き込まれたかを示す第2のタイムスタンプに対する前記タイムスタンプに基づいて、前記不揮発性記憶装置の前記1つまたは複数のブロックに記憶された前記データの保持時間を判断することと、
    前記保持時間が閾値を超えていると判断したことに応答して、前記不揮発性記憶装置の1つまたは複数の他のブロックに前記データを移すこととを行う、SSD。
  13. 前記ホストからの前記タイムスタンプの前記受信は、前記SSDの電源をオンにしたこと、または、前記SSDが低電力状態を終えたことに応答したものである、請求項12に記載のSSD。
  14. 前記ホストからの前記タイムスタンプの前記受信は更に、前記SSDの電源をオンにした後、または、前記SSDが低電力状態を終えた後の最初の入出力(I/O)コマンドに応答したものである、請求項12に記載のSSD。
  15. 前記論理回路は更に、複数のスーパーブロックのそれぞれについて、データがいつ所与のスーパーブロックに書き込まれたかを示すタイムスタンプと、前記所与のスーパーブロックに書き込まれた前記データの前記保持時間とを記憶する、請求項12に記載のSSD。
  16. 前記論理回路は更に、前記SSDの電源をオンにしたこと、または、前記SSDが低電力状態を終えたことに応答して、前記複数のスーパーブロックに関するデータ保持時間をスキャンすることと、
    前記複数のスーパーブロックうちの1つまたは複数の前記保持時間が閾値を超えていると判断したことに応答して、前記複数のスーパーブロックうちの前記1つまたは複数から1つまたは複数の他のスーパーブロックに前記データを移すことと
    を行う、請求項15に記載のSSD。
  17. 前記SSDは、揮発性メモリを更に備え、
    低電力状態になったこと、または、前記SSDの電源をオフにしたことに応答して、前記論理回路は、前記複数のスーパーブロックのそれぞれについて、前記不揮発性記憶装置に前記タイムスタンプおよび前記保持時間を記憶し、
    前記低電力状態を終えたこと、または、前記SSDの電源をオンにしたことに応答して、前記論理回路は、前記複数のスーパーブロックのそれぞれについて、前記不揮発性記憶装置から前記揮発性メモリに前記タイムスタンプおよび前記保持時間をロードする、請求項15に記載のSSD。
  18. 前記低電力状態になったこと、または、前記SSDの電源をオフにしたことに応答して、前記論理回路は、前記複数のスーパーブロックのそれぞれについて、前記記憶デバイスの1つまたは複数のシングルレベルセル(SLC)スーパーブロックに前記タイムスタンプおよび前記保持時間を記憶する、請求項17に記載のSSD。
  19. 前記データを移すための前記論理回路は、前記1つまたは複数のブロックをキューに配置して、前記1つまたは複数のブロックに記憶されたデータの保持時間が前記閾値を超えていることを示すことと、
    前記ホストからのアクセスを前記キューからの書き込みとインタリーブすることと
    を行う、請求項15に記載のSSD。
  20. 前記1つまたは複数のブロックを前記キューに配置するための前記論理回路は、前記1つまたは複数のブロックを特定し、かつ、前記1つまたは複数のブロックに記憶されたデータの保持時間が前記閾値を超えていることを示す、フラグを設定する、請求項19に記載のSSD。
  21. 前記論理回路は、前記ホストからの前記アクセスを前記キューからの前記書き込みとインタリーブするための比率を調整し、
    前記インタリーブするための比率は、前記キュー内のブロックの保持時間、前記ホストからのコマンドの数、リフレッシュされるべきブロックの数、およびリフレッシュを行うための空き領域のうちの1つまたは複数に基づいたものである、請求項19に記載のSSD。
  22. 前記論理回路は、前記ホストからのベンダーユニークコマンドを介して前記タイムスタンプを受信する、請求項12に記載のSSD。
  23. 前記論理回路は、前記SSDのファームウェアを有する、請求項12に記載のSSD。
  24. コンピュータに請求項1から11の何れか一項に記載の方法を実行するための動作を実行させるためのプログラム。
JP2018194032A 2017-12-14 2018-10-15 記憶デバイスにおけるシステムタイムスタンプを用いたバックグラウンドデータ・リフレッシュ Active JP7235226B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/842,799 2017-12-14
US15/842,799 US11099760B2 (en) 2017-12-14 2017-12-14 Background data refresh using a system timestamp in storage devices

Publications (2)

Publication Number Publication Date
JP2019106174A true JP2019106174A (ja) 2019-06-27
JP7235226B2 JP7235226B2 (ja) 2023-03-08

Family

ID=65137937

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018194032A Active JP7235226B2 (ja) 2017-12-14 2018-10-15 記憶デバイスにおけるシステムタイムスタンプを用いたバックグラウンドデータ・リフレッシュ

Country Status (5)

Country Link
US (1) US11099760B2 (ja)
JP (1) JP7235226B2 (ja)
KR (1) KR20190071582A (ja)
CN (1) CN110045915A (ja)
DE (1) DE102018128601A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021043580A (ja) * 2019-09-09 2021-03-18 キオクシア株式会社 メモリシステムおよびガベッジコレクション制御方法
JP2021121901A (ja) * 2020-01-31 2021-08-26 キオクシア株式会社 メモリシステムおよび制御方法
US11562792B2 (en) 2020-03-18 2023-01-24 Kioxia Corporation Memory system having a non-volatile memory and a controller configured to switch a mode for controlling an access operation to the non-volatile memory
JP2023507389A (ja) * 2019-12-19 2023-02-22 マイクロン テクノロジー,インク. メモリデバイスのためのブロックファミリベースのエラー回避

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10855754B1 (en) 2018-07-16 2020-12-01 Amazon Technologies, Inc. Isolated read channel categories at streaming data service
US10768830B1 (en) * 2018-07-16 2020-09-08 Amazon Technologies, Inc. Streaming data service with isolated read channels
US10798140B1 (en) 2018-07-16 2020-10-06 Amazon Technologies, Inc. Stream data record reads using push-mode persistent connections
EP3918600A1 (en) * 2019-01-29 2021-12-08 Micron Technology, Inc. Memory device and method for managing the same
US11899576B2 (en) * 2019-06-11 2024-02-13 Micron Technology, Inc. Dynamically modifying garbage collection rates for a memory subsystem in a closed-loop system
TWI712045B (zh) * 2020-01-16 2020-12-01 慧榮科技股份有限公司 資料儲存裝置修復方法
JP2021149549A (ja) 2020-03-19 2021-09-27 キオクシア株式会社 ストレージ装置およびアドレス変換テーブルのキャッシュ制御方法
US11556257B2 (en) * 2020-08-14 2023-01-17 Micron Technology, Inc. Selectable wear life indicator based on data retention
US11422825B2 (en) * 2020-12-30 2022-08-23 Kioxia Corporation Determination of power-off duration of NVMe SSD
US11698751B2 (en) * 2021-06-07 2023-07-11 Western Digital Technologies, Inc. Data storage device and method for low-latency power state transitions by having power islanding in a host memory buffer
US11543993B1 (en) * 2021-06-17 2023-01-03 Western Digital Technologies, Inc. Fast garbage collection in zoned namespaces SSDs
CN113672450B (zh) * 2021-07-19 2022-11-22 荣耀终端有限公司 固态硬盘的处理方法和装置
CN114168077A (zh) * 2021-12-07 2022-03-11 深圳忆联信息系统有限公司 固态硬盘的时间戳管理方法、装置、计算机设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070033324A1 (en) * 2005-08-03 2007-02-08 Sinclair Alan W Scheduling of reclaim operations in non-volatile memory
WO2007019198A2 (en) * 2005-08-03 2007-02-15 Sandisk Corporation Non-volatile memory with scheduled reclaim operations
US20100082995A1 (en) * 2008-09-30 2010-04-01 Brian Dees Methods to communicate a timestamp to a storage system
US20130007344A1 (en) * 2011-07-01 2013-01-03 Belgal Hanmant P Apparatus, System, and Method for Refreshing Non-volatile Memory
WO2013027642A1 (en) * 2011-08-19 2013-02-28 Kabushiki Kaisha Toshiba Information processing apparatus, method for controlling information processing apparatus, non-transitory recording medium storing control tool, host device, non-transitory recording medium storing performance evaluation tool, and performance evaluation method for external memory device
JP2013047913A (ja) * 2011-08-29 2013-03-07 Toshiba Corp 情報処理装置、情報処理装置の制御方法、制御ツール、及びホスト装置
US20140372673A1 (en) * 2013-06-17 2014-12-18 Fujitsu Limited Information processing apparatus, control circuit, and control method

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6493772B1 (en) * 1999-08-23 2002-12-10 International Business Machines Corporation System and method with guaranteed maximum command response time
US6513074B1 (en) * 2000-01-06 2003-01-28 International Business Machines Corporation SCSI bus intelligent listening device and method
US8411519B2 (en) * 2010-06-04 2013-04-02 Apple Inc. Selective retirement of blocks
US8966343B2 (en) * 2012-08-21 2015-02-24 Western Digital Technologies, Inc. Solid-state drive retention monitor using reference blocks
US8898548B1 (en) * 2012-08-24 2014-11-25 Western Digital Technologies, Inc. Methods, data storage devices and systems having variable size ECC page size
US9165668B1 (en) * 2013-07-29 2015-10-20 Western Digital Technologies, Inc. Data retention monitoring using temperature history in solid state drives
WO2015106162A1 (en) * 2014-01-09 2015-07-16 SanDisk Technologies, Inc. Selective copyback for on die buffered non-volatile memory
US9811457B2 (en) * 2014-01-16 2017-11-07 Pure Storage, Inc. Data placement based on data retention in a tiered storage device system
US20160093397A1 (en) * 2014-09-30 2016-03-31 Emc Corporation Method and system for improving flash storage utilization using read-threshold tables
US9547440B2 (en) * 2014-11-07 2017-01-17 International Business Machines Corporation Managing a set of blocks in a storage system
US9852799B2 (en) * 2014-11-19 2017-12-26 Sandisk Technologies Llc Configuration parameter management for non-volatile data storage
US9916237B2 (en) * 2014-12-12 2018-03-13 Sandisk Technologies Llc Model based configuration parameter management
US10048898B2 (en) * 2015-06-15 2018-08-14 Sandisk Technologies Llc Data retention in a memory block based on local heating
US20170062023A1 (en) * 2015-08-26 2017-03-02 Intel Corporation Systems and methods to rejuvenate nonvolatile memory using timestamps
KR102529696B1 (ko) * 2016-07-14 2023-05-10 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10255179B2 (en) * 2016-12-30 2019-04-09 Western Digital Technologies, Inc. Garbage collection read throttling
US10824376B2 (en) * 2017-12-08 2020-11-03 Sandisk Technologies Llc Microcontroller architecture for non-volatile memory

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070033324A1 (en) * 2005-08-03 2007-02-08 Sinclair Alan W Scheduling of reclaim operations in non-volatile memory
WO2007019198A2 (en) * 2005-08-03 2007-02-15 Sandisk Corporation Non-volatile memory with scheduled reclaim operations
JP2009503744A (ja) * 2005-08-03 2009-01-29 サンディスク コーポレイション 予定再生操作を伴う不揮発性メモリ
US20100082995A1 (en) * 2008-09-30 2010-04-01 Brian Dees Methods to communicate a timestamp to a storage system
WO2010039626A2 (en) * 2008-09-30 2010-04-08 Intel Corporation Methods to communicate a timestamp to a storage system
JP2012503836A (ja) * 2008-09-30 2012-02-09 インテル コーポレイション 記憶システムにタイムスタンプを通信する方法
US20130007344A1 (en) * 2011-07-01 2013-01-03 Belgal Hanmant P Apparatus, System, and Method for Refreshing Non-volatile Memory
WO2013027642A1 (en) * 2011-08-19 2013-02-28 Kabushiki Kaisha Toshiba Information processing apparatus, method for controlling information processing apparatus, non-transitory recording medium storing control tool, host device, non-transitory recording medium storing performance evaluation tool, and performance evaluation method for external memory device
US20140173268A1 (en) * 2011-08-19 2014-06-19 Kabushiki Kaisha Toshiba Information processing apparatus, method for controlling information processing apparatus, non-transitory recording medium storing control tool, host device, non-transitory recording medium storing performance evaluation tool, and performance evaluation method for external memory device
JP2013047913A (ja) * 2011-08-29 2013-03-07 Toshiba Corp 情報処理装置、情報処理装置の制御方法、制御ツール、及びホスト装置
US20140372673A1 (en) * 2013-06-17 2014-12-18 Fujitsu Limited Information processing apparatus, control circuit, and control method
JP2015001909A (ja) * 2013-06-17 2015-01-05 富士通株式会社 情報処理装置、制御回路、制御プログラム、および制御方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021043580A (ja) * 2019-09-09 2021-03-18 キオクシア株式会社 メモリシステムおよびガベッジコレクション制御方法
JP7321851B2 (ja) 2019-09-09 2023-08-07 キオクシア株式会社 メモリシステムおよびガベッジコレクション制御方法
JP2023507389A (ja) * 2019-12-19 2023-02-22 マイクロン テクノロジー,インク. メモリデバイスのためのブロックファミリベースのエラー回避
JP7354452B2 (ja) 2019-12-19 2023-10-02 マイクロン テクノロジー,インク. メモリデバイスのためのブロックファミリベースのエラー回避
JP2021121901A (ja) * 2020-01-31 2021-08-26 キオクシア株式会社 メモリシステムおよび制御方法
US11562792B2 (en) 2020-03-18 2023-01-24 Kioxia Corporation Memory system having a non-volatile memory and a controller configured to switch a mode for controlling an access operation to the non-volatile memory
US11790993B2 (en) 2020-03-18 2023-10-17 Kioxia Corporation Memory system having a non-volatile memory and a controller configured to switch a mode for controlling an access operation to the non-volatile memory

Also Published As

Publication number Publication date
JP7235226B2 (ja) 2023-03-08
CN110045915A (zh) 2019-07-23
US20190034114A1 (en) 2019-01-31
KR20190071582A (ko) 2019-06-24
DE102018128601A1 (de) 2019-06-19
US11099760B2 (en) 2021-08-24

Similar Documents

Publication Publication Date Title
JP7235226B2 (ja) 記憶デバイスにおけるシステムタイムスタンプを用いたバックグラウンドデータ・リフレッシュ
US11789880B2 (en) Load reduced nonvolatile memory interface
JP6965494B2 (ja) センサデータ検出に基づくインピーダンス補償
CN108604456B (zh) 在存储器插槽中支持多个存储器类型
CN107533509B (zh) 存储器设备特定的自刷新进入和退出
TWI718213B (zh) 彈性dll(延遲鎖定迴路)校準技術
US10599206B2 (en) Techniques to change a mode of operation for a memory device
KR20210118727A (ko) 행 주소 지정 및 열 주소 지정이 가능한 메모리의 동적 데이터에 대한 에러 정정
EP4315077A1 (en) Host controlled garbage collection in a solid state drive
WO2022216664A1 (en) Method and apparatus to reduce nand die collisions in a solid state drive
US20170147230A1 (en) Memory device and memory system having heterogeneous memories
US20190138468A1 (en) Using transfer buffer to handle host read collisions in ssd
EP4020220A1 (en) Utilizing nand buffer for dram-less multilevel cell programming
TWI717687B (zh) 儲存備份記憶體封裝保存觸發器
US20220083280A1 (en) Method and apparatus to reduce latency for random read workloads in a solid state drive
CN116204055A (zh) 在系统上电期间动态禁用以太网端口的方法和装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210728

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220421

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220426

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220603

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220913

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221007

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: 20230124

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230210

R150 Certificate of patent or registration of utility model

Ref document number: 7235226

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150