JP6932530B2 - ホストへの動的帯域幅報告のための装置および方法 - Google Patents

ホストへの動的帯域幅報告のための装置および方法 Download PDF

Info

Publication number
JP6932530B2
JP6932530B2 JP2017063019A JP2017063019A JP6932530B2 JP 6932530 B2 JP6932530 B2 JP 6932530B2 JP 2017063019 A JP2017063019 A JP 2017063019A JP 2017063019 A JP2017063019 A JP 2017063019A JP 6932530 B2 JP6932530 B2 JP 6932530B2
Authority
JP
Japan
Prior art keywords
memory
host
bandwidth
controller
statistics
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
JP2017063019A
Other languages
English (en)
Other versions
JP2018010615A (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.)
Seagate Technology LLC
Original Assignee
Seagate Technology LLC
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 Seagate Technology LLC filed Critical Seagate Technology LLC
Publication of JP2018010615A publication Critical patent/JP2018010615A/ja
Application granted granted Critical
Publication of JP6932530B2 publication Critical patent/JP6932530B2/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • 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/065Replication mechanisms
    • 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/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0653Monitoring storage devices or systems
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0688Non-volatile semiconductor memory arrays

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)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

発明の分野
本発明は概してソリッドステートドライブに関し、より特定的には、ソリッドステートドライブについて動的帯域幅報告を実現するための方法および/または装置に関する。
背景
ストレージへのアクセスは、従来のサーバ仮想化システムの一部である。サーバ仮想化システムでは、サーバは、情報技術インフラストラクチャの効率的で費用効果の高い利用を可能にする仮想マシンを実行する。各サーバは、中央処理装置、メモリ、ネットワークインターフェイス、およびストレージの基礎をなすハードウェアインフラストラクチャの利用を最大化することを目標として、多数の仮想マシンをホストし得る。1つのサーバ上でホストする仮想マシンが多過ぎると、仮想マシンについて許容できないレベルのパフォーマンス劣化につながることが多い。ホストする仮想マシンの数が控えめであると、インフラストラクチャが十分に利用されない。
ストレージに関連するホストの考慮事項は単純明快ではない。ストレージインフラストラクチャに関する2つのファクタは、容量および帯域幅である。記憶容量は要求に応じて割当てられ得、より多くの仮想マシンをサポートするために薄くプロビジョンされ得る。記憶帯域幅基準を予測することは困難である。さまざまな仮想マシンが広範な入出力作業負荷および帯域幅要求を生成する。記憶帯域幅は、システム内のキャッシングアプライアンスの有無にも影響される。利用可能な記憶帯域幅が動的に分かる場合、システムソフトウェアは要求と可用性とを最適にマッチングさせることを試み得る。現在、所与の時間にどれほどの記憶帯域幅が利用可能であるかをシステムソフトウェアが知ることができる動的で信頼性の高いメカニズムは分かっていない。
ソリッドステートドライブについて動的帯域幅報告を実現することが望ましいであろう。
要約
本発明は、メモリおよびコントローラを含む装置に関する。メモリはデータを記憶するように構成され得る。コントローラは複数のテーブルを有し得る。コントローラは概して、メモリに対する読出/書込を求める複数の入出力要求を処理し、メモリの複数の統計を追跡し、複数のテーブルをメモリの複数の統計で索引付けして複数のパラメータを求め、ホストから隠されている1つ以上のタスクを有するメモリにサービスしている間にコントローラが消費する第1の帯域幅を複数のパラメータに基づいて算出し、コントローラが消費する第1の帯域幅に基づいてホストが利用可能なメモリの第2の帯域幅をホストに報告するように構成される。
本発明の実施形態は、以下の詳細な説明ならびに添付の特許請求の範囲および図面から明らかになるであろう。
装置のブロック図である。 コントローラのブロック図である。 オーバープロビジョニングの関数としてのガーベッジコレクション動作によるサービス帯域幅のグラフの図である。 現在実行中のプログラム/消去サイクルの関数としての符号化率によるサービス帯域幅のグラフの図である。 パワーオン時間の関数としての雑多動作によるサービス帯域幅のグラフの図である。 動的帯域幅報告のための方法のフロー図である。 報告セットアップのフロー図である。 追跡セットアップのフロー図である。 図6の追跡ステップの詳細なフロー図である。
実施形態の詳細な説明
本発明の実施形態は、(i)ドライブ内でサービス動作を実行するコントローラが消費するメモリ帯域幅を推定し得、(ii)コントローラがドライブ統計をどのように集めるかを制御する能力をホストに与え得、(iii)帯域幅計算において仮定シナリオを説明し得、および/または(iv)1つ以上の集積回路として実現され得るソリッドステートドライブついて動的帯域幅報告を提供することを含む。
ホスト使用に利用可能なメモリ帯域幅は、メモリ内の媒体の性質によって動的に変化し得る。媒体は一般に時間および使用と共に摩耗し、エラー訂正労力が増加する。また、媒体は、時間と共に異なる量でメモリ帯域幅を消費する連続的なリサイクル動作(たとえばガーベッジコレクション)および他の内部管理動作を受け得る。メモリは概して、存在する読出/書込チャネルの数およびインターフェイス周波数に基づいて、利用可能な一定量の媒体インターフェイス帯域幅を有する。内部のハウスキーピングの目的で、利用可能なメモリ帯域幅のさまざまな部分がメモリコントローラによって消費され得る。内部のハウスキーピング(またはサービス)目的によってどれほどのメモリ帯域幅が消費されるかを計算することによって、メモリコントローラは、ホストが使用するのに依然として残っているメモリ帯域幅の推定量をホストに報告し得る。
図1を参照して、装置90の例示的な実現のブロック図が示されている。装置(または回路またはデバイスまたは集積回路)90は、メモリ回路を有するコンピュータを実現する。装置90は概して、ブロック(または回路)92およびブロック(または回路)100を含む。回路100は概して、ブロック(または回路)102およびブロック(または回路)104を含む。ブロック104は1つ以上のブロック(または回路)106a〜106nを含み得る。
信号(たとえばHOSTIO)が回路92と回路102との間で交換され得る。信号HOSTIOは1つ以上のホスト入出力信号(または成分)を含み得る。信号HOSTIOの成分は概して、回路100内のデータにアクセスするのに用いられる論理アドレス成分と、回路100を制御するホストコマンド成分と、回路92から回路102に書込データを転送する書込データ成分と、回路102から回路92にエラー訂正された読出データを転送する読出データ成分とを含むがこれらに限定されない。
信号(たとえばNVMIO)が回路102と回路104との間で交換され得る。信号NVMIOは1つ以上の不揮発性メモリ入出力信号(または成分)を含み得る。信号NVMIOの成分は概して、回路104内のデータにアクセスするのに用いられる物理アドレス成分と、回路104を制御するメモリコマンド成分(たとえば読出または書込コマンド)と、回路102から書込まれた、エラー訂正コード化されて周期的冗長検査保護された書込コードワードを回路104内に運ぶ書込コードワード成分と、回路104から読出されたエラー訂正コード化されたコードワードを回路102に運ぶ読出コードワード成分とを含むがこれらに限定されない。
回路92はホストを実現し得る。ホスト92は概して、回路102を介して回路104からデータを読出し、かつ回路104にデータを書込むように動作する。読出または書込時、ホスト92は論理アドレス値を信号HOSTIO内に転送して、どのデータセットを回路104に書込むべきかまたは回路104から読出すべきかを特定し得る。論理アドレス値は概して、回路100の論理アドレス範囲内にある。論理アドレス値は、SATA(たとえばシリアルアドバンスドテクノロジアタッチメント(serial-advanced technology attachment))セクタなどの個々のデータユニットをアドレス指定し得る。
回路100はソリッドステートドライブ(SSD)を実現し得る。ドライブ100は概して、ホスト92によって生成されたデータを記憶し、かつ当該データをホスト92に戻すように動作する。さまざまな実施形態によると、ドライブ100は、NANDフラッシュデバイス、位相変化メモリ(たとえばPCM)デバイス、もしくは抵抗性RAM(たとえばReRAM)デバイスなどの不揮発性半導体デバイス;1つ以上の不揮発性デバイスを有するソリッドステートドライブの部分;およびその他の揮発性または不揮発性記憶媒体、の1つ以上を含み得る。
回路102はコントローラを実現し得る。コントローラ102は概して、回路104からの読出し、回路104への書込み、および回路104のサービスを制御するように動作する。コントローラ102は、回路104から受信した、読出されたコードワードをデコードする能力を含み得る。結果として得られるデコードされたデータは、信号HOSTIOを介してホスト92に提示され得、および/または再エンコードされて信号NVMIOを介して回路104に書戻され得る。コントローラ102はさらに、ホスト92から受信したおよび/またはメモリ104からデコードされたデータをエンコードして書込コードワードを生成するように構成され得る。結果として得られる書込コードワードは、信号NVMIOを介してメモリ104に提示されて記憶され得る。コントローラ102は概して、1つ以上のソリッドステートドライブ、埋込型記憶装置、または他の好適な制御アプリケーションのコントローラを実現する1つ以上の集積回路(もしくはチップもしくはダイ)を含む。
回路104は1つ以上の回路106a〜106nを含むメモリを実現し得る。回路106a〜106nはメモリ回路(またはチップ、またはダイ、またはデバイス)として実現され得る。さまざまな実施形態によると、メモリ104は概して1つ以上の不揮発性半導体メモリデバイスを含む。いくつかの実施形態では、メモリ104は1つ以上の揮発性半導体メモリデバイスを含み得る。メモリ104は、揮発性および/または不揮発性条件でデータを記憶するように動作し得る。メモリ104からデータが読出されるかメモリ104にデータが書込まれると、メモリ104は、信号NVMIO内のアドレス(たとえば物理アドレス)によって特定されているメモリセル(たとえば複数のビット)のセットにアクセスし得る。当該アドレスは概して、メモリ104の物理アドレス範囲内にある。いくつかの実施形態では、メモリ104は揮発性メモリおよび/または不揮発性メモリとして実現され得る。
さまざまな実施形態において、回路106a〜106nは、NANDフラッシュメモリ、NORフラッシュメモリ、ポリシリコンまたは窒化シリコン技術に基づく電荷蓄積セルを用いるフラッシュメモリ、二次元または三次元技術に基づく不揮発性メモリ、強磁性メモリ、位相変化メモリ、レーストラックメモリ、スタックドメモリ、抵抗性ランダムアクセスメモリ、磁気ランダムアクセスメモリ、ならびに同様の種類のメモリデバイスおよび/または記憶媒体として実現され得る。しかし、特定の用途の基準を満たすために他の不揮発性メモリ技術が実現されてもよい。いくつかの実施形態では、回路106a〜106nは揮発性メモリ回路および/または不揮発性メモリ回路として実現され得る。
メモリ104を制御する一部として、コントローラ102は、メモリ104に対する読出/書込を求める複数の入出力要求を処理するように構成され得る。コントローラ102はさらに、メモリ104の複数の統計を追跡し、複数のテーブルをメモリ104の統計で索引付けして複数のパラメータを求め、複数のパラメータを利用して、ホスト92から隠されている1つ以上のタスクを有するメモリ104にサービスしている間にコントローラ102が消費するサービス帯域幅を算出し、コントローラ102が消費するサービス帯域幅に基づいてホスト92が利用可能なメモリ104の推定帯域幅をホスト92に報告し得る。ホスト92に報告される推定帯域幅は概して、1つ以上のレイテンシにおいてホスト92とコントローラ102との間で毎秒転送され得るデータの量を示す。推定帯域幅は、ホスト92が利用可能な読出帯域幅およびホスト92が利用可能な書込帯域幅として報告され得る。
さまざまな実施形態において、コントローラ102は、1つ以上の条件が発生すると推定帯域幅をホスト92に報告するように構成され得る。当該条件は、動的イベント、周期的なイベント、ホスト92からの問合せ、パワーオンイベント、リサイクル(たとえばガーベッジコレクション)タスクの開始、および/またはリサイクルタスクの終了を含み得るがこれらに限定されない。特定の用途の設計基準を満たすために他の条件が実現されてもよい。
いくつかの実施形態では、コントローラ102はホスト92から1つ以上の指示を受信し得る。コントローラ102は、受信した指示に基づいて、メモリ104の統計の1つ以上がどのように追跡されるかを制御し得る。いくつかの実施形態では、コントローラ102は、ホスト92による付加的な帯域幅の仮定の消費を受信し得る。コントローラ102は、仮定の消費に基づいて、ホスト92に報告される推定帯域幅を更新し得る。
メモリ104の統計(または状態)は概して、メモリ104が電源投入された合計時間、実行されたプログラム/消去サイクルの総数、利用可能な記憶空間の現在のオーバープロビジョニング量、および/または現在利用可能な空き記憶空間の量を含む。コントローラ102は、メモリ104とコントローラ102との間で転送されているユーザデータのサイズを修正する動作に基づいて、メモリ104の統計の1つ以上を推定し得る。データサイズ修正動作は、エラー訂正コード動作、圧縮動作、および/またはトリム動作において用いられる符号化率を含み得るがこれらに限定されない。特定の用途の設計基準を満たすために他の動作が実現されてもよい。
図2を参照して、コントローラ102の例示的な実現のブロック図が本発明の実施形態に従って示されている。コントローラ102は概して、ブロック(または回路)110、ブロック(または回路)112およびブロック(または回路)114を含む。回路114は概して、ブロック(または回路)116、ブロック(または回路)118、ブロック(または回路)120、ブロック(または回路)122、ブロック(または回路)124、ブロック(または回路)126、およびブロック(または回路)128を含む。信号HOSTIOが回路110との間で交換され得る。信号NVMIOが回路112との間で交換され得る。
回路110はホストインターフェイス回路を実現し得る。ホストインターフェイス110は概して、信号HOSTIOを介してホスト92との通信を提供するように動作する。特定の用途の基準を満たすためにホスト92とホストインターフェイス110との間で他の信号が実現されてもよい。さまざまな実施形態において、ホストインターフェイス110はホスト92への/ホスト92からの複数のアクセス動作を処理し得る。
回路112は不揮発性メモリ(たとえばフラッシュ)インターフェイス回路を実現し得る。メモリインターフェイス112は概して、信号NVMIOを介してメモリ104との通信を提供するように動作する。特定の用途の設計基準を満たすためにメモリ104とメモリインターフェイス112との間で他の信号が実現されてもよい。さまざまな実施形態において、メモリインターフェイス112はメモリ104に対する複数の読出/書込動作を処理し得る。
回路114は制御回路を実現し得る。制御回路114は概して、ホスト92から受信したデータをメモリ104に書込むこと、ホスト92に転送するためにメモリ104からデータを読出すこと、メモリ104にサービスすること、およびホスト92が利用可能なメモリ104の推定帯帯域幅を計算することを制御するように動作する。制御回路114は概して、メモリインターフェイス112を介してメモリ104と通信する。ホスト92はホストインターフェイス110を介して制御回路114と通信し得る。
回路116はプロセッサを実現し得る。プロセッサ116は概して、複数の読出/書込要求を命令するおよび/または補助するように、かつメモリ104内に用いられる1つ以上の基準電圧を制御してデータ(またはコードワード)を読出すように動作する。さまざまな実施形態において、プロセッサ116は、メモリ104にサービスしている間に消費されるサービス帯域幅を計算するように動作し得る。プロセッサ116はさらに、ホスト92が利用可能なメモリ104の推定帯域幅を計算するように動作し得る。サービス帯域幅はホストインターフェイス110を通ってホスト92に転送され得る。
回路118は1つ以上のルックアップテーブル(LUT)を実現し得る。LUT118は、メモリ104の統計をパラメータに変換するデータを記憶するように動作し得、プロセッサ116は当該パラメータを用いてサービス帯域幅および推定帯域幅を計算する。さまざまな実施形態において、各LUT118は別個に記憶されてもよい。他の実施形態では、LUT118の1つ以上は互いに統合されてもよい。
回路120は読出/書込データパスを実現し得る。データパス120は、メモリ104とホスト92との間でデータを転送するように動作し得る。当該転送は、ホストインターフェイス110を利用してホスト92と通信し、メモリインターフェイス112を利用してメモリ104と通信し得る。
回路122はキャッシュ回路を実現し得る。キャッシュ122は、メモリ104に書込まれたおよび/またはメモリ104から読出されたデータをキャッシュするように動作し得る。さまざまな実施形態において、キャッシュ122はユーザデータのための単層キャッシュとして配置され得る。随時、キャッシュ122内のデータがメモリ104にオフロードされ得る。キャッシュオフロード動作は、コントローラ102とメモリ104との間の大量の帯域幅を消費し得る。キャッシュ122は、さまざまな書込ポリシー、セット関連付け、および/または置換ポリシーを実現し得る。書込ポリシーは、ライトスルーおよびライトバック(またはライトビハインド)を含み得るがこれらに限定されない。置換ポリシーは概して、最長未使用時間、最短未使用時間、最低使用頻度、ランダム置換、セグメント化された最長未使用時間および/または擬似最長未使用時間を含む。特定の用途の設計基準を満たすために他の配置ポリシーが実現されてもよい。セット関連付けは概して、直接マップされた、2方向セット連想、および/またはn方向セット連想を含むがこれらに限定されない。
回路124はフラッシュトランスレーションレイヤ(FTL)回路を実現し得る。フラッシュトランスレーションレイヤ124は、マップテーブルおよび他の関連のデータ構造を用いて論理アドレス−物理アドレス変換を実行するように動作し得る。各書込は概してメモリ104内の新たな場所で起こるため、マップテーブルおよび関連のデータ構造は絶えず変化し得る。マップおよび/またはデータ構造の変更部分またはダーティ部分は、メモリ104に周期的に書込まれて不揮発的に記憶され得る。書込は概して、コントローラ102とメモリ104との間の付加的な帯域幅を消費する。マップおよびデータ構造の不揮発的な記憶によって、予期せぬ停電が起こった場合にロバストで高速なドライブ回復が提供され得る。
回路126はリサイクル回路を実現し得る。リサイクル回路126は、リサイクル(たとえばガーベッジコレクション)動作を実現するように動作し得る。リサイクル動作は、コントローラ102とメモリ104との間の大量の帯域幅を消費し得る。ブロックが消去される前、そのブロック内に存在する有効なユーザデータはすべてリサイクル動作によって別のブロックに移動させられ得る。メモリ104内の各ページは、新たなデータが書込まれ得る(またはプログラムされ得る)前に消去される。消去動作はブロックレベルで実行され得、各ブロックは多くのページを含んでいる。ブロックのこのようなリサイクルが定期的に実行されて空き空間が作られ得る。リサイクル動作の速度、および引いては消費されるメモリ帯域幅の量は概して、オーバープロビジョニングされる容量に依存する。オーバープロビジョニングされる容量が大きいほどガーベッジコレクション速度が概して遅くなり、したがってリサイクル動作によって消費され得るメモリ帯域幅が小さくなる。
回路128は、メモリ104のサービス帯域幅に影響を与える他の動作を表わし得る。たとえば、ソリッドステートドライブアーキテクチャの中にはユーザデータを圧縮するものがあり得る。データ圧縮によって概して、ユーザデータがメモリ104内で消費する空間が減少するため、有効なオーバープロビジョニングレベルが増加する。データ圧縮の実際のレベルは、書込まれているユーザデータのエントロピに依存し得る。結果として得られる有効なオーバープロビジョニングレベルは、ホスト92が利用可能な推定帯域幅に大きな影響を与え得る動的な複素変数であり得る。
図3を参照して、ガーベッジコレクション(GC)動作によるサービス帯域幅(B/W)とオーバープロビジョニング(OP)の関数との関係の例のグラフ140が示されている。この例に示されるように、オーバープロビジョニングが増加するにつれて、ガーベッジコレクション動作のサービス帯域幅に対する効果は減少する。当該効果は非線形の関係を有し得る。特定の用途の設計基準を満たすために他の関係が実現されてもよい。関係を表わす値のテーブルがグラフ140について生成されてLUT118に記憶され得る。
図4を参照して、符号化率によるサービス帯域幅と現在実行中のプログラム/消去(P/E)サイクルの関数との例示的な関係のグラフ150が示されている。時間と共に、現在実行中のプログラム/消去サイクルの総数として測定すると、フラッシュメモリ耐久性が劣化して生のビット誤り率(RBER)が増加し得る。生のビット誤り率の増加は、コントローラ102内で費やされるエラー訂正労力に影響し得る。生のビット誤り率の増加によってサービス帯域幅も増加し、ホスト92内で実行されるホストアプリケーションによって見られるレイテンシも増加し得る。プログラム/消去サイクルの符号化率に対する効果は非線形の関係を有し得る。特定の用途の設計基準を満たすために他の関係が実現されてもよい。関係を表わす値のテーブルがグラフ150について生成されてLUT118に記憶され得る。
図5を参照して、雑多(MISC)動作によるサービス帯域幅(B/W)とパワーオン時間(POH)の関数との例示的な関係のグラフ160が示されている。フラッシュメモリの耐久性は、パワーオン時間として測定されると時間と共に劣化し得る。この劣化によって概して生のビット誤り率が増加する。時間と共に劣化する耐久性の効果は、エラー訂正符号化率使用の観点で見ることができる。フラッシュ品質が次第に劣化することによってビット誤り率が増加するので、より強いエラー訂正コードがコントローラ102によって用いられ、符号化率が低下し得る。符号化率が低下すると概して、有効なオーバープロビジョニングが減少する。有効なオーバープロビジョニングの減少によって次に、書込増幅が増加し得る。すべてのこのようなファクタの正味の効果は、ホストアプリケーションが利用可能な推定帯域幅の減少であり得る。当該効果は非線形の関係を有し得る。特定の用途の設計基準を満たすために他の関係が実現されてもよい。関係を表わす値のテーブルがグラフ160について生成されてLUT118に記憶され得る。
キャッシュ、FTL、リサイクル、ならびに他の機能およびファクタはともに、メモリ104にサービスする際に大量のメモリ帯域幅を占め得る。消費されるメモリ帯域幅は、時間と共に固定されたままである/変化しないままであるとは限らない。ホスト92が利用可能な推定帯域幅(B/W)は以下のように式1によって提供され得る:
ホストB/W = フラッシュB/W − (リサイクルB/W + FTL B/W + キャッシュオフロードB/W + 雑多B/W) (1)
フラッシュB/W値はメモリ104の固定値であり得、概してメモリ104の設計に基づいている。リサイクルB/W値は、ガーベッジコレクション動作によって消費されるサービス帯域幅であり得る。FTL B/W値は、フラッシュトランスレーションレイヤ動作によって消費されるサービス帯域幅であり得る。キャッシュオフロードB/W値は、キャッシュ122からメモリ104にデータをオフロードしている間に消費される平均サービス帯域幅であり得る。雑多B/W値は、コントローラ102が消費するサービス帯域幅を増加させる他の動作の合計であり得る。
コントローラ102は、式1における個々の項を算出し得る。算出は複雑であり得、さまざまな実施形態において、何らかの近似が採用され得る。伴うファクタのうちのいくつかは、特徴付けテーブルとしてLUT118内でプログラムされ得る。コントローラ102は、パワーオン時間値、プログラム/消去サイクルカウント、および現在のオーバープロビジョニングレベルを追跡し得る。パラメータは、LUT118に記憶されている特徴付けテーブル内の索引として用いられ、コントローラ102内の内部サービス機能によって用いられるメモリ帯域幅の算出を助け得る。サービス帯域幅が算出されると、ホスト92が利用可能なメモリ104の推定帯域幅が計算されて報告され得る。
いくつかの(たとえば3つの)グループが帯域幅報告計算において用いられ得る。1つのグループは、使用中の現在の帯域幅を計算する現在の帯域幅計算であり得る。別のグループは、選択された1つ以上の式の組合せを用いて算出される残りの利用可能な帯域幅であり得る。さらに別のグループは、現在の帯域幅計算グループおよび残りの利用可能な帯域幅グループと併用されて、新たな作業負荷が追加されると帯域幅要件を推定するシナリオプランニング帯域幅計算であり得る。
概して、ホスト92は、全帯域幅、現在の帯域幅、新たな作業負荷が適用されると帯域幅がどのようになり得るか、および/または作業負荷が除去されると新たな帯域幅がどのようになり得るか、に関心があり得る。さまざまな実施形態において、ホスト92への推定帯域幅報告は「調整済の」帯域幅および「生の」帯域幅として特徴付けられ得る。生の帯域幅が報告されると、ホスト92は生の帯域幅から調整済みの帯域幅を推測し得る。ホスト92によってメモリ104から4,000バイト(4K)のデータが読出される例を考えてみる。4Kのデータを取出すためにメモリ104から読出されるデータの量は、エラー訂正符号化率および/または4Kのデータがいくつのコードワードに跨っているかに基づいて異なり得る。コードワードのカウントおよびそれぞれのサイズは概して、4Kのデータを読出すために消費される生の帯域幅を表わす。
ドライブ100上で消費される現在の帯域幅を求めることは、指定された間隔にわたってドライブ100上の帯域幅を収集することによって達成され得る。さまざまな実施形態において、当該間隔は構成パラメータであり得る。さらに他の実施形態では、当該間隔はホスト92によって設定され得る。さらに他の実施形態では、収集間隔はホスト92のサンプリング間隔によって決定され得る。さまざまな実施形態において、報告される消費帯域幅情報は概して、読出帯域幅、書込帯域幅、およびドライブ100全体についてサンプリング間隔にわたって内部動作によって消費される帯域幅で構成される。内部動作は、ガーベッジコレクション、摩耗レベリング、読出妨害処理、保持管理、ならびにFTLおよび媒体上に記憶される媒体管理構造の保守を含み得るがこれらに限定されない。
さまざまな実施形態において、帯域幅消費は、調整済の形態および生の形態の両方で追跡され得る。帯域幅の調整済の形態は概して、ホスト92によって観察される帯域幅で構成される。生の帯域幅は、コントローラ102上で用いられる実際のリソースで構成され得る。生データを追跡して、残りの利用可能な帯域幅計算が単純化され得る。
ホスト92上で実行される1つ以上のアプリケーションに対応する報告帯域幅が作成され得る。アプリケーションの実行と関連付けられている帯域幅の特定は概して、当該アプリケーションと関連付けられている記憶領域に基づいている。このような場合、利用されるストレージは各アプリケーションと関連付けられ得る。いくつかの実施形態では、関連付けは、どのアプリケーションがどの領域を所有しているかについて、ホスト92から提供され得る。他の実施形態では、ホスト92は要求を特定のアプリケーションからのものであるとタグ付けし得る。
さまざまな実施形態において、有効なオーバープロビジョニングがさらに報告され得る。有効なオーバープロビジョニングは、ドライブ100のフォーマットされた容量に対するドライブ100上の未使用空間のパーセンテージと定義され得、予備容量に加えて、トリムされた空間、未使用空間、および無効データを含む空間を考慮し得る。有効なオーバープロビジョニング(OP)は以下のように式2によって近似され得る:
Figure 0006932530
式中、生の容量はメモリ104の生の容量であり得;フォーマットされた容量はホスト92に報告されるドライブ100の容量であり得;トリムされたデータは、ホスト92がドライブ100に報告した、ホスト92がもはや使用していないデータであり得;平均エントロピは、コントローラ102によって圧縮が利用された場合の、ドライブ100上に記憶されている全データにわたるデータの平均圧縮率であり得;FTLオーバーヘッドは、FTL構造および統計が占めるメモリ104上の空間の量であり得;平均符号化率は、ドライブ100上に記憶されているデータについて用いられる平均エラー訂正符号化率であり得;平均FTL符号化率は概して、FTL構造および統計について用いられる平均エラー訂正符号化率である。さまざまな実施形態において、有効なオーバープロビジョニング計算は、ブロック、平面および/またはダイ破損から保護するために用いられる外部コードについてのオーバーヘッドを考慮に入れ得る。
残りの利用可能な帯域幅(BW)算出は以下のように式3によって提供され得る:
残りの利用可能なBW = 利用可能な全BW − 現在のBW (3)
残りの利用可能な帯域幅は概して、多数のファクタおよび入力に基づく分析計算である。残りの生の帯域幅およびリソースは、生の全帯域幅、読出および書込について残っている生のフラッシュ帯域幅、残っている生のフラッシュバス帯域幅、残っている生の中央処理装置(CPU)リソース、残っている生のバッファ空間および帯域幅、残っている生の内部バス帯域幅、ならびに残っている生のホストインターフェイス帯域幅から、現在の生の帯域幅を引くことによって計算され得る。剰余は概してコントローラ102上の残りのリソースおよび帯域幅を表わす。その後、コントローラ利用およびリソースに基づいて、以下の統計を用いて、選択された作業負荷に基づいて残りの帯域幅が求められ得る:CPU利用;有効なオーバープロビジョニング(残りの書込帯域幅を算出するために用いられる);空きメモリ空間クレジットが得られる速度も、分布が異なり得るために考慮され得る;読出帯域幅に影響を与え得る平均符号化率およびプログラム/消去サイクル;ならびに、さまざまな有効なオーバープロビジョニングレベルおよび容量で収集された1つ以上のアプリケーションパフォーマンスプロファイル。当該プロファイルはテーブルに記憶され得る。ホスト92は、どのアプリケーションがどの領域を使用しているかを、対応するプロファイルと共に特定し得る。
利用可能なドライブ帯域幅を計算するおよび/または推定するためのさまざまな方法が実現され得る。たとえば、さまざまな代表的な作業負荷がドライブ100に対して実行され得、作業負荷について利用可能な帯域幅およびレイテンシが記録される。作業負荷による利用は0%から100%でスケーリングされてから作業負荷テーブルに記憶され得る。シナリオプランニングは、残りの帯域幅を取り、作業負荷テーブルを索引付けしてその効果を見ることによって導出され得る。ホスト92は、特定の作業負荷を追加することが、ドライブ100上で実行されている現在の作業負荷に決定的に影響を与え得ることを見出し得る。ホスト92はさらに、所与の作業負荷を移動させて他の作業負荷に良い効果が与えられるか否かを確認し得るシナリオ問合せを考慮し得る。
図6を参照して、動的帯域幅報告のための例示的な方法170のフロー図が示されている。方法(またはプロセス)170はドライブ100内で実現され得る。方法170は概して、ステップ(または状態)172、決定ステップ(または状態)174、ステップ(または状態)176、ステップ(または状態)178、ステップ(または状態)180、ステップ(または状態)182、決定ステップ(または状態)184、ステップ(または状態)186、およびステップ(または状態)188を含む。
ステップ172において、コントローラ102(たとえば制御回路114および/またはメモリインターフェイス112)は、メモリ104に対する複数の読出/書込動作を処理し得る。読出/書込動作を処理している間、コントローラ102はステップ174において、1つ以上のトリガイベントが発生するかどうかドライブ100を監視し得る。トリガイベント(または条件)が検出されない場合、コントローラ102はステップ172において読出/書込(または入出力)要求を処理し続け得る。トリガイベントは概して、1つ以上の動的イベント、1つ以上の周期的なイベント、ホスト92からの1つ以上の問合せ、各パワーオンイベント、ガーベッジコレクションタスクの各開始、および/またはガーベッジコレクションタスクの各終了を含む。特定の用途の設計基準を満たすために他の条件が実現されてもよい。
トリガイベントが検出されると、コントローラ102はステップ176において、ドライブ100の1つ以上の統計の追跡を更新し得る。更新された統計に基づいて、コントローラ102はステップ178において、統計に対応するパラメータを算出し得る。ステップ180において、パラメータに基づいてコントローラ102が消費するサービス帯域幅がコントローラ102によって算出され得る。サービス帯域幅が分かると、コントローラ102はステップ182において、ホスト92が利用可能な推定帯域幅およびレイテンシを算出し得る。
ホスト92が仮定(または「what if」)シナリオをコントローラ102に提供したか否かを確認するために、決定ステップ184において検査が行なわれ得る。ホスト92が、コントローラ102が考慮すべき仮定条件を提示している場合、コントローラ102はステップ186において、推定帯域幅およびレイテンシを更新し得る。推定帯域幅およびレイテンシが更新されると、または仮定ケースを受信していない場合は、コントローラ102は概してステップ188において、推定帯域幅およびレイテンシをホスト92に報告する。
いくつかの実施形態において、ホスト92は、付加的な容量の実際の割当てが行なわれる前に、現在使用中のドライブ100内の帯域幅可用性に対する付加的な容量割当ての仮定の効果を検査し得る。コントローラ102は、新たな潜在的な割当てに基づいて推定帯域幅がどのようになり得るかを折り返し報告し得る。さまざまな実施形態において、「what if」分析は、結果として得られるドライブ100のパフォーマンスを評価するために、追加された読出/書込作業負荷を含む、付加的なリソース利用についての情報を含み得る。報告内のフィードバックに基づいて、ホスト92はドライブ100から付加的な容量を割当てるように、ドライブ100から付加的な容量の一部を割当てるように、またはドライブ100から付加的な容量を割当てないように適切なアクションを取り得る。動的帯域幅報告特徴は概して、記憶インフラストラクチャの最適な利用に有用であり得るホスト92についてのこのような分析を可能にする。
帯域幅算出が達成されると、ホスト92が利用可能なメモリ104の推定帯域幅がホスト92に報告され得る。さまざまな実施形態において、この報告は、コントローラ102によって生成されてホスト92によって読出可能なベンダー固有のログページとして実現され得る。不揮発性メモリホストコントローラインターフェイス仕様エクスプレス(NVMe)、シリアルアタッチドスモールコンピュータシステムインターフェイス(serial attached small computer system interface:SAS)、および/またはシリアルアドバンスドテクノロジアタッチメント(SATA)などのさまざまなホストインターフェイスプロトコルは概して、ホスト92がベンダー固有のログページを読出すことを可能にする。ベンダー固有のログページ報告エントリの例は、以下のように表Iに提供され得る:
Figure 0006932530
左の欄の値N:0は概して、利用可能な帯域幅を報告するために用いられるログエントリのサイズを表わす(たとえば、32ビットのログエントリについてはN=31であり、帯域幅について16ビットに、レイテンシについて16ビットに分割され得る)。真ん中の欄の値は、ホスト92が利用可能なメモリ104の推定帯域幅を表わし得る。推定帯域幅はメガビット/秒(MBPS)単位で表現され得る。右の欄の値は、ホスト92が予期し得る推定記憶レイテンシを表わし得る。記憶レイテンシはマイクロ秒単位で表現され得る。特定の用途の設計基準を満たすために他のベンダー固有のログページおよび/または報告メカニズムが実現されてもよい。
図7を参照して、報告動作の例示的なセットアップのフロー図200が示されている。方法(またはプロセス)200はドライブ100内で実現され得る。方法200は概して、ステップ(または状態)202、ステップ(または状態)204、およびステップ(または状態)206を含む。
コントローラ102は、周期的なイベントにおいて、および/または一定のトリガイベント(もしくは点)において、ホスト92の要求に応じて推定記憶帯域幅を報告し得る。トリガイベントの例として、時間ベースのイベント(たとえば、10秒毎、毎分、毎時、等)が挙げられ得るがこれらに限定されない。非周期的なイベントの例として、パワーオン条件、ならびにガーベッジコレクションの開始、ガーベッジコレクションの終了、および/またはキャッシュオフロードの開始などの内部イベントが挙げられ得る。特定の用途の設計基準を満たすために他のイベントが実現されてもよい。
ステップ202において、コントローラ102はホスト92からトリガ情報を受信し得る。プロセッサ116はステップ204において、ホスト92から受信したトリガ情報に従ってトリガイベントの有無を監視するように構成され得る。ステップ206において、コントローラ102は概して、トリガイベントのいずれか1つ以上が発生するかどうかドライブ100を監視する(たとえば図6のステップ174)。
図8を参照して、追跡の例示的なセットアップのフロー図220が示されている。方法(またはプロセス)220はドライブ100内で実現され得る。方法220は概して、ステップ(または状態)222、ステップ(または状態)224、およびステップ(または状態)226を含む。
コントローラ102はステップ222において、ホスト92から追跡情報を受信し得る。プロセッサ116はステップ224において、ホスト92から受信した追跡情報に従ってメモリ104の統計を追跡するように構成され得る。ステップ226において、コントローラ102は概して追跡情報に従ってメモリ104の統計を追跡する(たとえば図6のステップ176)。
追跡されるメモリ104の統計は、コントローラ102について予め定義され得る(たとえば製造時に予めプログラムされ得る)。統計をどのように追跡するかはホスト92によってプログラム可能であってもよい。たとえば、コントローラ102は、ある期間にわたってキャッシュオフロードについて消費されるサービス帯域幅を測定している場合がある。ホスト92上で実行される仮想マシンによるアクティビティのバーストを考えてみる。バーストによって、ウインドウ時のキャッシュオフロードの速度が高くなり得る。キャッシュオフロードについての測定期間がバーストウインドウと比べて長い場合、バーストは、キャッシュオフロードのためにコントローラ102が消費する計算されたサービス帯域幅の平均をわずかに増加させ得る。測定期間がバーストウインドウとほぼ同じ長さである場合、コントローラ102が消費する計算されたサービス帯域幅はバースト時に大幅に増加し得る。いくつかの実施形態では、ホスト92は、短い測定期間に基づいて利用可能な平均推定帯域幅を知りたい場合がある。他の実施形態では、ホスト92は、長い測定期間に基づいて利用可能な平均推定帯域幅を知りたい場合がある。特定の用途の設計基準を満たすために、さまざまなホスト92がコントローラ102内に測定期間(どのようにキャッシュオフロード統計を集めるか)をプログラムしてもよい。
図9を参照して、追跡ステップ176の詳細なフロー図が示されている。ステップ(または方法またはプロセス)176はドライブ100内で実現され得る。ステップ176は概して、ステップ(または状態)242、ステップ(または状態)244、およびステップ(または状態)246を含む。
ステップ242において、コントローラ102は、ドライブ100内で実行される動作に基づいてサービス帯域幅消費の要素を推定し得る。当該動作は、エラー訂正コード動作、圧縮動作、およびトリム動作において用いられる符号化率を含み得るがこれらに限定されない。コントローラ102はステップ244において、メモリ104のいくつかの統計を直接測定し得る。測定される統計は、メモリ104が電源投入された合計時間、実行されたプログラム/消去サイクルの総数、現在利用可能なオーバープロビジョニングの量、および現在利用可能な空き空間の量を含み得るがこれらに限定されない。
帯域幅監視の他の使用がコントローラ102および/またはホスト92に含まれていてもよい。たとえば、ステップ246において、コントローラ102またはホスト92は時間と共に報告される記憶帯域幅のスナップショットを記憶し得る。その後、スナップショットを用いて、ドライブ100がどのように挙動しているかが分析され、パフォーマンスが微調整され、および/または帯域幅を利用するためのより良い技術が開発され得る。
図1から図9の図表に示されている機能および構造は、関連技術の当業者に明らかであるように、本明細書の教示に従ってプログラムされた、従来の汎用プロセッサ、デジタルコンピュータ、マイクロプロセッサ、マイクロコントローラ、分散型コンピュータリソースおよび/または同様の計算機械の1つ以上を用いて設計され得、モデル化され得、エミュレートされ得、および/またはシミュレートされ得る。これも関連技術の当業者に明らかであるように、適切なソフトウェア、ファームウェア、コーディング、ルーチン、指示、オプコード、マイクロコード、および/またはプログラムモジュールが本開示の教示に基づいて熟練のプログラマによって容易に準備され得る。ソフトウェアは概して、たとえば非一時的な記憶媒体などの1つまたはいくつかの媒体において具体化され、順次または並行してプロセッサの1つ以上によって実行され得る。
また、本発明の実施形態は、ASIC(特定用途向け集積回路)、FPGA(フィールドプログラマブルゲートアレイ)、PLD(プログラマブルロジックデバイス)、CPLD(コンプレックスプログラマブルロジックデバイス)、シーオブゲート、ASSP(特定用途向け標準品)、および集積回路の1つ以上において実現されてもよい。当該回路は、1つ以上のハードウェア記述言語に基づいて実現されてもよい。本発明の実施形態は、フラッシュメモリ、不揮発性メモリ、ランダムアクセスメモリ、読出専用メモリ、磁気ディスク、フロッピー(登録商標)ディスク、DVDおよびDVD RAMなどの光ディスク、光磁気ディスクならびに/または分散型記憶システムに関連して利用されてもよい。
本明細書において「である(is(are)」および動詞と共に使用される場合の「あり得る(may)」および「概して(generally)」という用語は、説明が例示的なものであり、本開示に提示されている具体例および開示に基づいて導出され得る代替例の両方を包含するのに十分広いと考えられるという意図を伝えることを意味している。本明細書に使用される「あり得る」および「概して」という用語は、対応する要素を省略する望ましさまたは可能性を必ずしも暗示していると解釈されるべきでない。本明細書に使用される「同時に」という用語は、何らかの共通期間を共有するイベントを示すことを意味しているが、当該用語は同じ時間に開始する、同じ時間に終了する、または同じ期間を有するイベントに限定されることを意味していない。
本発明は特にその実施形態を参照して図示および説明されたが、本発明の範囲から逸脱することなく形態および詳細のさまざまな変更がなされ得ることが当業者に理解されるであろう。
90 装置、92 ホスト、100 ソリッドステートドライブ、102 コントローラ、104 メモリ、106a〜106n 回路、110ホストインターフェイス、112 メモリインターフェイス、114 制御回路、116 プロセッサ、118 ルックアップテーブル、120 データパス、122 キャッシュ、124 フラッシュトランスレーションレイヤ、126 リサイクル回路、128 回路。

Claims (20)

  1. データを記憶するように構成されたメモリと、
    前記メモリの複数の統計をパラメータに変換するデータを記憶する複数のテーブルを有するコントローラと、ホストに接続可能なホストインターフェイス回路とを備える装置であって、前記コントローラは、前記メモリに対する読出/書込を求める複数の入出力要求を処理し、前記メモリの前記複数の統計を追跡し、前記複数の統計は、前記メモリのオーバープロビジョニング、前記メモリにおいて実行されたプログラム/消去サイクルの総数、前記メモリが電源投入された合計時間を含み、前記複数のテーブルを前記メモリの前記複数の統計によって索引付けすることで複数のパラメータを求め、前記コントローラが前記ホストから隠されている1つ以上のタスクを前記メモリに対して実行している間に前記コントローラが消費する第1の帯域幅を前記複数のパラメータに基づいて算出し、前記コントローラが消費する前記第1の帯域幅に基づいて、前記ホストが前記ホストインターフェイス回路を介して利用可能な前記メモリの第2の帯域幅を算出し、前記第2の帯域幅を前記ホストインターフェイス回路を介して前記ホストに報告するように構成される、装置。
  2. 前記メモリおよび前記コントローラはソリッドステートドライブの一部を形成する、請求項1に記載の装置。
  3. 前記コントローラはさらに、前記コントローラによって実行される動的内部イベント、前記コントローラによって実行される周期的な内部イベント、前記ホストからの問合せ、パワーオンイベント、ガーベッジコレクションタスクの開始、および前記ガーベッジコレクションタスクの終了、の少なくとも1つに応答して前記第2の帯域幅を前記ホストに報告するように構成される、請求項1に記載の装置。
  4. 前記ホストに報告される前記第2の帯域幅は、前記ホストと前記コントローラとの間で前記ホストインターフェイス回路を介して毎秒転送され得るデータの量を示す、請求項1に記載の装置。
  5. 前記コントローラはさらに、前記ホストから1つ以上の指示を受信し、前記1つ以上の指示に基づいて、前記メモリの前記複数の統計の1つ以上がどのように追跡されるかを制御するように構成される、請求項1に記載の装置。
  6. 前記コントローラはさらに、前記ホストによる付加的な帯域幅の仮定の消費を受信し、前記仮定の消費に基づいて、前記ホストに報告される前記第2の帯域幅を更新するように構成される、請求項1に記載の装置。
  7. 前記メモリの前記複数の統計は、現在利用可能な空き空間の量をさらに含む、請求項1に記載の装置。
  8. 前記第2の帯域幅は、前記ホストが利用可能な読出帯域幅および前記ホストが利用可能な書込帯域幅として報告される、請求項1に記載の装置。
  9. 前記コントローラはさらに、前記メモリと前記コントローラとの間で転送されているユーザデータのサイズを修正する1つ以上の動作に基づいて、前記メモリの前記複数の統計の1つ以上を推定するように構成される、請求項1に記載の装置。
  10. 前記1つ以上の動作は、エラー訂正コード動作、圧縮動作、およびトリム動作の1つ以上を含む、請求項9に記載の装置。
  11. ホストへの動的帯域幅報告のための方法であって、
    メモリに対する読出/書込を求める複数の入出力要求をコントローラにおいて処理するステップと、
    前記メモリの複数の統計を追跡するステップとを備え前記複数の統計は、前記メモリのオーバープロビジョニング、前記メモリにおいて実行されたプログラム/消去サイクルの総数、前記メモリが電源投入された合計時間を含み、前記方法はさらに、
    前記コントローラ内の複数のテーブルを前記メモリの前記複数の統計によって索引付けすることで複数のパラメータを求めるステップを備え、前記複数のテーブルは、前記メモリの前記複数の統計をパラメータに変換するデータを記憶し前記方法はさらに、
    前記コントローラが前記ホストから隠されている1つ以上のタスクを前記メモリに対して実行している間に前記コントローラが消費する第1の帯域幅を、前記複数のパラメータに基づいて算出するステップと、
    前記コントローラが消費する前記第1の帯域幅に基づいて、前記ホストがホストインターフェイス回路を介して利用可能な前記メモリの第2の帯域幅を算出するステップと、
    前記メモリの第2の帯域幅を前記ホストに報告するステップとを備える、方法。
  12. 前記ステップはソリッドステートドライブにおいて実行される、請求項11に記載の方法。
  13. 前記第2の帯域幅は、前記コントローラによって実行される動的内部イベント、前記コントローラによって実行される周期的な内部イベント、前記ホストからの問合せ、パワーオンイベント、ガーベッジコレクションタスクの開始、および前記ガーベッジコレクションタスクの終了、の少なくとも1つに応答して前記ホストに報告される、請求項11に記載の方法。
  14. 前記ホストに報告される前記第2の帯域幅は、前記ホストと前記コントローラとの間で前記ホストインターフェイス回路を介して毎秒転送され得るデータの量を示す、請求項11に記載の方法。
  15. 前記ホストから1つ以上の指示を受信するステップと、
    前記1つ以上の指示に基づいて、前記メモリの前記複数の統計の1つ以上がどのように追跡されるかを制御するステップとをさらに備える、請求項11に記載の方法。
  16. 前記ホストによる付加的な帯域幅の仮定の消費を受信するステップと、
    前記仮定の消費に基づいて、前記ホストに報告される前記第2の帯域幅を更新するステップとをさらに備える、請求項11に記載の方法。
  17. 前記第2の帯域幅は、前記ホストが利用可能な読出帯域幅および前記ホストが利用可能な書込帯域幅として報告される、請求項11に記載の方法。
  18. 前記メモリと前記コントローラとの間で転送されているユーザデータのサイズを修正する1つ以上の動作に基づいて、前記メモリの前記複数の統計の1つ以上を推定するステップをさらに備え、
    前記1つ以上の動作は、エラー訂正コード動作、圧縮動作、およびトリム動作の1つ以上を含む、請求項11に記載の方法。
  19. メモリに対する複数の読出/書込動作を処理するように構成されたインターフェイスと、
    前記メモリの複数の統計をパラメータに変換するデータを記憶する複数のテーブルおよびホストに接続可能なホストインターフェイス回路を有する制御回路とを備える装置であって、前記制御回路は、前記メモリの前記複数の統計を追跡し、前記複数の統計は、前記メモリのオーバープロビジョニング、前記メモリにおいて実行されたプログラム/消去サイクルの総数、前記メモリが電源投入された合計時間を含み、前記複数のテーブルを前記メモリの前記複数の統計によって索引付けすることで複数のパラメータを求め、前記制御回路が前記ホストから隠されている1つ以上のタスクを前記メモリに対して実行している間に前記制御回路が消費する第1の帯域幅を前記複数のパラメータに基づいて算出し、前記制御回路が消費する前記第1の帯域幅に基づいて、前記ホストが前記ホストインターフェイス回路を介して利用可能な前記メモリの第2の帯域幅を算出し、前記第2の帯域幅を前記ホストインターフェイス回路を介して前記ホストに報告するように構成される、装置。
  20. 前記メモリおよび前記制御回路は、ソリッドステートドライブの一部を形成する、請求項19に記載の装置。
JP2017063019A 2016-03-28 2017-03-28 ホストへの動的帯域幅報告のための装置および方法 Active JP6932530B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/082,492 2016-03-28
US15/082,492 US10156999B2 (en) 2016-03-28 2016-03-28 Dynamic bandwidth reporting for solid-state drives

Publications (2)

Publication Number Publication Date
JP2018010615A JP2018010615A (ja) 2018-01-18
JP6932530B2 true JP6932530B2 (ja) 2021-09-08

Family

ID=59897919

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017063019A Active JP6932530B2 (ja) 2016-03-28 2017-03-28 ホストへの動的帯域幅報告のための装置および方法

Country Status (3)

Country Link
US (2) US10156999B2 (ja)
JP (1) JP6932530B2 (ja)
KR (1) KR102302649B1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10275162B2 (en) 2017-06-23 2019-04-30 Dell Products L.P. Methods and systems for managing data migration in solid state non-volatile memory
CN111656329A (zh) 2017-12-29 2020-09-11 美光科技公司 不可校正ecc
US11416171B2 (en) 2020-01-07 2022-08-16 Western Digital Technologies, Inc. Dynamic predictive latency attributes
KR20220165980A (ko) * 2021-06-09 2022-12-16 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작 방법
US20240069783A1 (en) * 2022-08-29 2024-02-29 Micron Technology, Inc. Memory phase monitoring and scheduling system

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8291131B2 (en) * 2009-07-06 2012-10-16 Micron Technology, Inc. Data transfer management
US8826270B1 (en) 2010-03-16 2014-09-02 Amazon Technologies, Inc. Regulating memory bandwidth via CPU scheduling
KR101467941B1 (ko) 2011-04-26 2014-12-02 엘에스아이 코포레이션 비휘발성 저장부에 대한 가변 오버­프로비저닝
EP2742429A4 (en) * 2011-08-09 2015-03-25 Lsi Corp I / O DEVICE AND INTERACTION WITH DATA PROCESSING HOST
JP5733136B2 (ja) * 2011-09-26 2015-06-10 富士通株式会社 情報処理装置の制御方法、制御プログラム及び情報処理装置
US9081504B2 (en) 2011-12-29 2015-07-14 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Write bandwidth management for flash devices
JP5900088B2 (ja) * 2012-03-27 2016-04-06 富士通株式会社 並列計算機、並列計算機の制御方法及び制御プログラム
US8848577B2 (en) 2012-09-24 2014-09-30 Apple Inc. Bandwidth management
US8830716B2 (en) 2012-09-29 2014-09-09 Intel Corporation Intelligent far memory bandwith scaling
US20140095696A1 (en) * 2012-10-01 2014-04-03 Emerson Electric Co. Evaluating utilization of one or more computer systems
US20140108740A1 (en) * 2012-10-17 2014-04-17 Advanced Micro Devices, Inc. Prefetch throttling
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US20140337598A1 (en) * 2013-05-07 2014-11-13 Lsi Corporation Modulation of flash programming based on host activity
US10182110B2 (en) * 2013-12-13 2019-01-15 Hitachi, Ltd. Transfer format for storage system, and transfer method
US9916087B2 (en) * 2014-10-27 2018-03-13 Sandisk Technologies Llc Method and system for throttling bandwidth based on temperature
US20160210060A1 (en) * 2015-01-21 2016-07-21 HGST Netherlands B.V. Dynamic resource allocation within storage devices

Also Published As

Publication number Publication date
US10156999B2 (en) 2018-12-18
US10346058B2 (en) 2019-07-09
US20190079680A1 (en) 2019-03-14
KR20170113343A (ko) 2017-10-12
US20170277444A1 (en) 2017-09-28
JP2018010615A (ja) 2018-01-18
KR102302649B1 (ko) 2021-09-14

Similar Documents

Publication Publication Date Title
JP6932530B2 (ja) ホストへの動的帯域幅報告のための装置および方法
TWI740110B (zh) 在固態儲存驅動器陣列中的工作量適應超容量快取
KR102362045B1 (ko) 멀티-티어 올-플래시 데이터센터의 자동 데이터 배치 관리자
US9189410B2 (en) Hypervisor-based flash cache space management in a multi-VM environment
US9971548B1 (en) Storage resource management employing performance analytics
US8521986B2 (en) Allocating storage memory based on future file size or use estimates
US9298616B2 (en) Systems and methods for tracking working-set estimates with a limited resource budget
US20140181370A1 (en) Method to apply fine grain wear leveling and garbage collection
US8862837B1 (en) Techniques for automated data compression and decompression
JP2015518987A (ja) フラッシュストレージのためのi/oアクセスパターンの特殊化
US10997080B1 (en) Method and system for address table cache management based on correlation metric of first logical address and second logical address, wherein the correlation metric is incremented and decremented based on receive order of the first logical address and the second logical address
US20140244892A1 (en) Assigning a weighting to host quality of service indicators
US20180121237A1 (en) Life cycle management of virtualized storage performance
Kim et al. SSDcheck: Timely and accurate prediction of irregular behaviors in black-box SSDs
Liu et al. CostPI: Cost-effective performance isolation for shared NVMe SSDs
US9317224B1 (en) Quantifying utilization of a data storage system by a virtual storage unit
US11693570B2 (en) Machine learning to improve caching efficiency in a storage system
WO2015072925A1 (en) Method for hot i/o selective placement and metadata replacement for non-volatile memory cache on hybrid drive or system
US11126360B2 (en) Dynamically adjusting block mode pool sizes
Qi et al. Indef: An advanced defragmenter supporting migration offloading on zns ssd
Sun et al. CalmWPC: A buffer management to calm down write performance cliff for NAND flash-based storage systems
CN117234434B (zh) 存储设备的操作控制方法及装置
US20240012763A1 (en) Systems And Methods Of Intelligent Logical Block Address (LBA) Access Trace Log Collection For Performance Optimization
Xu et al. Locality-Driven Dynamic Flash Cache Allocation
WO2017141408A1 (ja) 方法、媒体及び計算機システム

Legal Events

Date Code Title Description
AA79 Non-delivery of priority document

Free format text: JAPANESE INTERMEDIATE CODE: A24379

Effective date: 20170801

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191009

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200915

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201104

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210201

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210818

R150 Certificate of patent or registration of utility model

Ref document number: 6932530

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150