JP6517684B2 - メモリシステムおよび制御方法 - Google Patents

メモリシステムおよび制御方法 Download PDF

Info

Publication number
JP6517684B2
JP6517684B2 JP2015249553A JP2015249553A JP6517684B2 JP 6517684 B2 JP6517684 B2 JP 6517684B2 JP 2015249553 A JP2015249553 A JP 2015249553A JP 2015249553 A JP2015249553 A JP 2015249553A JP 6517684 B2 JP6517684 B2 JP 6517684B2
Authority
JP
Japan
Prior art keywords
ssd
write
memory system
performance
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.)
Active
Application number
JP2015249553A
Other languages
English (en)
Other versions
JP2017117054A (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.)
Kioxia Corp
Original Assignee
Toshiba Memory 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 Toshiba Memory Corp filed Critical Toshiba Memory Corp
Priority to JP2015249553A priority Critical patent/JP6517684B2/ja
Priority to CN201610300709.2A priority patent/CN106909313B/zh
Priority to CN202010047854.0A priority patent/CN111241006B/zh
Priority to US15/209,579 priority patent/US10175887B2/en
Publication of JP2017117054A publication Critical patent/JP2017117054A/ja
Priority to US16/207,418 priority patent/US10592117B2/en
Application granted granted Critical
Publication of JP6517684B2 publication Critical patent/JP6517684B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • 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/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • 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

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明の実施形態は、不揮発性メモリを制御する技術に関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。
このようなメモリシステムの一つとして、NANDフラッシュ技術ベースのソリッドステートドライブ(SSD)が知られている。
SSDは、その低電力消費、高性能という特徴により、様々なコンピュータのメインストレージとして使用されている。
また、より高い性能、より大きな容量を得るために複数のSSDを利用するアレイ技術も開発されている。
米国特許出願公開第2012/0036309号明細書
SSDのアレイを効率良く動作させるためには、アレイ内の複数のSSDを協調動作させることが望まれる。このため、この協調動作のために必要な有用な情報を提供可能な新たな仕組みの実現が要求される。
本発明が解決しようとする課題は、ホストまたはアレイ内の他のSSDに有用な情報を提供可能なメモリシステムおよび制御方法を提供することである。
実施形態によれば、複数の半導体ストレージデバイスに跨がってデータを分散させるストレージアレイ内の一つの半導体ストレージデバイスとして動作可能なメモリシステムは、不揮発性メモリと、前記不揮発性メモリに電気的に接続され、ホストから受信されるデータを前記不揮発性メモリに書き込む書き込み動作と、前記メモリシステムを管理するための内部動作とを実行するように構成されたコントローラとを具備する。前記コントローラは、前記内部動作が開始される場合に、前記開始される前記内部動作の内容に基づいて、前記内部動作の開始に起因する前記書き込み動作の性能低下の量を推定する。前記コントローラは、前記推定される前記書き込み動作の性能低下の量を、前記ホストまたは前記ストレージアレイ内の他の一つ以上の半導体ストレージデバイスに通知する。
実施形態に係るメモリシステムが適用されるストレージアレイを含む情報処理システムの構成例を説明するブロック図。 実施形態に係るメモリシステムが適用されるストレージアレイを含む情報処理システムの別の構成例を説明するブロック図。 実施形態に係るメモリシステムが適用されるストレージアレイの書き込み動作の例を説明する図。 ストレージアレイ内のあるSSDの書き込み性能が低下した場合のストレージアレイの書き込み動作を説明する図。 ストレージアレイ内のあるSSDの書き込み性能低下期間に別のSSDによって実行されるガベージコレクション(GC)動作を説明する図。 ストレージアレイ内のあるSSDの書き込み性能低下期間に別のSSDによって実行される、書き込み動作およびGC動作を説明する図。 ストレージアレイ内のあるSSDの書き込み性能低下期間に別のSSDによって実行されるスロットリング動作を説明する図。 送り出し側SSDとして機能するメモリシステムの構成例を説明するブロック図。 送り出し側SSDとして機能するメモリシステムによって実行される、ホストからのデータの書き込み用にフリーブロックを順次割り当てる動作を説明するための図。 送り出し側SSDとして機能するメモリシステムによって実行されるガベージコレクション動作を説明する図。 送り出し側SSDとして機能するメモリシステム内のNANDインタフェースと複数のNANDメモリチップとの関係を説明する図。 送り出し側SSDとして機能するメモリシステムによって実行されるデューティー制御動作を説明する図。 送り出し側SSDとして機能するメモリシステムによって実行される性能低下通知処理の例を説明するための図。 送り出し側SSDとして機能するメモリシステムによって実行される性能低下通知処理の別の例を説明するための図。 送り出し側SSDとして機能するメモリシステムによって実行されるGC動作および性能低下通知処理の手順を説明するフローチャート。 送り出し側SSDとして機能するメモリシステムによって実行される熱スロットリング動作および性能低下通知処理の手順を説明するフローチャート。 送り出し側SSDとして機能するメモリシステムによって実行される電力制限スロットリング動作および性能低下通知処理の手順を説明するフローチャート。 受け側SSDとして機能するメモリシステムの構成例を説明するブロック図。 性能低下通知が受信された時に、受け側SSDとして機能するメモリシステムによって実行される書き込み性能低下処理の手順を説明するフローチャート。 性能低下通知が受信された時に、受け側SSDとして機能するメモリシステムによって実行されるGC動作の手順を説明するフローチャート。 性能低下通知が受信された時に、受け側SSDとして機能するメモリシステムによって実行されるスロットリング動作の手順を説明するフローチャート。 送り出し側SSDおよび受け側SSDの双方の機能を有するメモリシステムの構成例を説明するブロック図。 ホストの構成例を説明するブロック図。 同実施形態のメモリシステムとホストとを含むコンピュータの構成例を示す図。
以下、図面を参照して、実施形態を説明する。
まず、図1を参照して、一実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。
このメモリシステムは、不揮発性メモリにデータをライトし、不揮発性メモリからデータをリードするように構成された半導体ストレージデバイスである。このメモリシステムは、例えば、NANDフラッシュ技術ベースのソリッドステートドライブ(SSD)3として実現されている。
情報処理システム1は、ホスト(ホストデバイス)2と、複数の半導体ストレージデバイス(SSD)を含むストレージアレイ(SSDアレイ)とを含む。このSSDアレイは、RAIDレベル0、RAIDレベル5、RAIDレベル6、のようなRAIDアレイによって実現されていてもよい。
本実施形態のSSD3は、SSDアレイ内の一つの半導体ストレージデバイス(SSD)として機能することができる。SSDアレイ内の一つのSSDだけが本実施形態のSSD3によって実現されていてもよいし、SSDアレイ内の全てのSSDが、本実施形態のSSD3によって実現されていてもよい。図1では、SSDアレイ内の全てのSSDが、本実施形態のSSD3によって実現されている場合が例示されている。
このSSDアレイにおいては、ストライピングによってデータが複数のSSD3に跨がって分散される。ホスト2によってSSDアレイに書き込まれるべきデータは、あるデータサイズを有する複数のデータブロックに分割され、これらデータブロックがストライピングによって複数のSSD3に跨がって分散される。
SSDアレイがRAIDレベル5またはRAIDレベル6によって実現されている場合には、パリティーブロックを伴ったデータがストライピングによって複数のSSD3に跨がって分散される。
以下では、限定されないが、SSDアレイがRAIDレベル0(ストライピング)に対応するRAIDアレイである場合を主として説明する。
図1では、SSDアレイが4つのSSD3(SSD#1、SSD#2、SSD#3、SSD#4)から構成されている場合が想定されている。
ホスト2によってSSDアレイに書き込まれるべきデータは、4つのデータブロック“Data#1”、“Data#2”、“Data#3”、“Data#4”に分割される。そして、これらデータブロック“Data#1”、“Data#2”、“Data#3”、“Data#4”が、ホスト2からSSD#1、SSD#2、SSD#3、SSD#4に送信され、これらデータブロック“Data#1”、“Data#2”、“Data#3”、“Data#4”を書き込む動作がSSD#1、SSD#2、SSD#3、SSD#4によって同時に実行される。データブロック“Data#1”、“Data#2”、“Data#3”、“Data#4”は、一つのストライプを構成する。
これら4つのデータブロック“Data#1”、“Data#2”、“Data#3”、“Data#4”の書き込みが完了すると、次の4つのデータブロック“Data#5”、“Data#6”、“Data#7”、“Data#8”が、ホスト2からSSD#1、SSD#2、SSD#3、SSD#4に送信され、これらデータブロック“Data#5”、“Data#6”、“Data#7”、“Data#8”を書き込む動作がSSD#1、SSD#2、SSD#3、SSD#4によって同時に実行される。
ホスト2は、サーバ、パーソナルコンピュータのような情報処理装置である。SSDアレイ内の各SSD3は、情報処理装置に内蔵されてもよいし、情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
ホスト2と各SSD3とを相互接続するためのインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)等が使用し得る。
本実施形態のSSD3は、送り出し側SSDまたは受け側SSDの少なくとも一方として機能し得る。送り出し側SSDとは、このSSDの書き込み性能の低下の量をホスト2またはSSDアレイ内の他のSSDに通知する機能を有するSSDを意味する。受け側SSDとは、送り出し側SSDの書き込み性能の低下の量を送り出し側SSDまたはホスト3から受信し、送り出し側SSDの書き込み性能の低下の量に基づいて自身の書き込み性能を低下させる機能を有するSSDを意味する。
SSD3の書き込み性能は、SSD3を管理するための内部動作によって低下される場合がある。このような内部動作の典型的な例には、ガベージコレクション動作、SSD3の過熱を防ぐ熱保護動作(例えば熱スロットリング)、SSD3の電力消費をSSD3に許容される最大電力以下に抑える電力制限動作(例えば電力制限スロットリング)等が含まれる。
SSD3の書き込み性能とは、ホスト2から受信されるデータをSSD3内の不揮発性メモリに書き込む書き込み動作の性能を意味する。この書き込み性能は、ライトスループットによって表されても良い。ライトスループットは、単位時間当たりにホスト2からSSD3に転送可能なデータ量、つまりデータ転送レートを示す。
今、SSD#2が送り出し側SSDとして機能する場合を想定する。
SSD#2の書き込み性能(ライトスループット)が内部動作の開始によって低下されることが想定される場合、SSD#2は、この内部動作の内容に基づいて、SSD#2の低下後の書き込み性能を推定し、SSD#2の書き込み性能の低下の量をホスト2またはSSDアレイ内の他のSSDに通知する。例えば、SSD#2の書き込み性能が、内部動作が実行されていない通常状態時の書き込み性能(例えば、1Gバイト/秒の転送レート)から512Mバイト/秒の転送レートに低下されることが推定される場合には、SSD#2は、SSDアレイ内の全てのSSDの書き込み性能を512Mバイト/秒に揃えるために、SSD#2の書き込み性能が512Mバイト/秒に低下することを示す通知をホスト2またはSSDアレイ内の他の各SSDに送信してもよい。
ホスト2からまたは送り出し側SSDからこの通知を受信した各SSD(受け側SSD)は、受信された通知によって指定される書き込み性能の低下の量に基づいて、自身の書き込み性能を低下させることができる。
例えば、この通知を受信した各SSDは、自身の書き込み性能を、受信された通知によって指定される低下後の書き込み性能(ここでは、512Mバイト/秒の転送レート)にまで、低下させるための制御を行ってもよい。例えば、この通知を受信した各SSDが1Gバイト/秒の書き込み性能で動作している場合において、これら各SSDは、自身の書き込み性能(書き込み速度)を512Mバイト/秒に低下させることによって自身の電力消費を低減しても良い。あるいは、これら各SSDは、自身の書き込み性能を512Mバイト/秒に低下させ、かつ残りの書き込み性能(ここでは、512Mバイト/秒)を使用してガベージコレクション動作を前もって実行してもよい。
このように、送り出し側SSDの通知機能は、送り出し側SSDの書き込み性能が低下している期間を、他のSSDが自身の電力消費の低減またはガベージコレクション動作を前もって実行するために有効利用することを可能にする。
送り出し側SSDの書き込み性能の低下の量をホスト2に通知するための方法としては、送り出し側SSDの書き込み性能の低下の量をホスト2に報告可能な任意の方法を使用することができる。例えば、送り出し側SSDが内部動作を開始する時に、送り出し側SSDは、ホスト2に割り込み信号を送信することによって送り出し側SSDの書き込み性能の低下の量をホスト2に通知してもよい。あるいは、ホスト2がポーリングによって送り出し側SSDの内部レジスタを定期的にリードする機能を有している場合には、送り出し側SSDは、この内部レジスタに、送り出し側SSDの書き込み性能の低下の量をセットしてもよい。
送り出し側SSDから書き込み性能の低下の量が通知されたホスト2は、この書き込み性能の低下の量をSSDアレイ内の他の各SSDに送信しても良い。あるいは、送り出し側SSDから書き込み性能の低下の量が通知されたホスト2は、この書き込み性能の低下の量に基づいて、SSDアレイ内の他の各SSDの書き込み性能を低下させるための制御を実行しても良い。
送り出し側SSDの書き込み性能の低下の量は、ホスト2(ホストCPU)を介さずに、SSDアレイ内の他の各SSDに通知してもよい。この通知の方法としては、ホスト2(例えばホストCPU)を介さずに、SSD間で通信することを可能な任意の方法を使用し得る。例えば、SSDアレイ内の各SSDがPCI Express(PCIe)バスを介してホスト2に電気的に接続されている場合には、PCIeバス間を接続するためのバススイッチを介して送り出し側SSDと他の各SSDとの間の通信(エンドツーエンド通信)を実行しても良い。
あるいは、図2に示されているように、アレイコントローラ(例えばRAIDコントローラ)2Aを介して各SSDがホスト2に電気的に接続されるアレイ構成が使用されているケースにおいては、アレイコントローラ2Aを介して送り出し側SSDと他の各SSDとの間の通信を実行しても良い。
アレイコントローラ2Aは、ホスト2から受信されるライトデータをストライピングによって複数のSSD3に跨がって分散される制御を実行する。アレイコントローラ2Aは、RAIDコントローラによって実現されていてもよい。
図3は、SSDアレイの書き込み動作の例を示す。
ここでは、SSDアレイが、4つのSSD#1〜#4を含む場合を想定する。
ホスト2またはアレイコントローラ2Aは、例えば、所定サイズ(例えば128Kバイト)のデータを4つのデータブロック(例えば各データブロックのサイズは32Kバイト)に分割し、これら4つのデータブロックの書き込みを4つのSSD#1〜#4に並列に実行させる。
例えば、タイミングT10で、ホスト2またはアレイコントローラ2Aは、4つのSSD3に、ライトコマンドとデータブロックとを順次送信する。この場合、128Kバイトのデータの最初の32Kバイトのデータブロックは、SSD#1にライトデータとして送信される。この128Kバイトのデータの2番目の32Kバイトのデータブロックは、SSD#2にライトデータとして送信される。この128Kバイトのデータの3番目の32Kバイトのデータブロックは、SSD#3にライトデータとして送信される。この128Kバイトのデータの最後の32Kバイトのデータブロックは、SSD#4にライトデータとして送信される。
SSD#1〜#4は、受信したデータブロックを、SSD#1〜#4内の不揮発性メモリにそれぞれ書き込む。SSD#1〜#4によるデータ書き込み動作の完了後、例えばタイミングT11で、ホスト2またはアレイコントローラ2Aは、4つのSSD3に、ライトコマンドと次の128Kバイトデータ内のデータブロックとを順次送信する。この場合、次の128Kバイトのデータの最初の32Kバイトのデータブロックは、SSD#1にライトデータとして送信される。この128Kバイトのデータの2番目の32Kバイトのデータブロックは、SSD#2にライトデータとして送信される。この128Kバイトのデータの3番目の32Kバイトのデータブロックは、SSD#3にライトデータとして送信される。この128Kバイトのデータの最後の32Kバイトのデータブロックは、SSD#4にライトデータとして送信される。
図4は、SSDアレイ内のあるSSDの書き込み性能が低下した場合のSSDアレイの書き込み動作の例を示す。
図4では、SSD#2の書き込み性能の低下によってSSD#2の書き込み動作がスケジュールされたタイミングT11で完了しなかった場合が想定されている。
タイミングT11で、ホスト2またはアレイコントローラ2Aは、次の128Kバイトのデータの最初のデータブロックをSSD#1に送信することができる。
しかし、SSD#2は、その書き込み動作が進行中であるビジー状態であるので、SSD#2は次の書き込み動作を開始することができない。つまり、ホスト2またはアレイコントローラ2AからSSD#2への次のデータブロックの送信は、SSD#2の現在の書き込み動作が完了するまで待たされる。このSSD#2がボトルネックとなることにより、ホスト2またはアレイコントローラ2AからSSD#3、SSD#4へのデータブロックを送信も待たされる。
SSD#2のデータ書き込み動作の完了後、例えばタイミングT12で、ホスト2またはアレイコントローラ2Aは、SSD#2、SSD#3、SSD#4に、ライトコマンドとこの128Kバイトのデータ内のデータブロックとを順次送信する。この128Kバイトのデータの2番目の32Kバイトのデータブロックは、SSD#2にライトデータとして送信される。この128Kバイトのデータの3番目の32Kバイトのデータブロックは、SSD#3にライトデータとして送信される。この128Kバイトのデータの最後の32Kバイトのデータブロックは、SSD#4にライトデータとして送信される。
したがって、タイミングT11〜T12の期間においては、SSD#3、SSD#4は、実行すべきワークロードが無いアイドル状態に維持される可能性がある。
ホスト2またはアレイコントローラ2AからSSD#1への次のデータブロックの通信は、SSD#4のデータ書き込み動作の完了まで待たされる。したがって、タイミングT12〜T13の期間においては、SSD#1がアイドル状態に維持される可能性がある。
このように、SSDアレイ全体の書き込み性能は、SSD#2の低下した書き込み性能に律速される。
図5は、SSDアレイ内のSSD#2の書き込み性能低下期間に別のSSDによって実行されるガベージコレクション(GC)動作を示す。
SSD#2は、上述したように、送り出し側SSDとして機能することができる。したがって、SSD#2の書き込み性能が低下する時、SSD#2は、その書き込み性能の低下の量をホスト2またはSSDアレイ内の他の各SSDに通知することができる。
これにより、例えば、SSD#1、SSD#3、SSD#4の各々は、SSD#2のデータ書き込み動作の完了を待っているタイミングT11〜T12の期間において、ガベージコレクション(GC)動作を前もって実行することができる。
ガベージコレクション(GC)動作を前もって実行するとは、残りフリーブロックの数がガベージコレクション(GC)動作を開始すべき閾個数以下に低下する前に、ガベージコレクション(GC)動作を開始することを意味する。これにより、SSD#1、SSD#3、SSD#4の各々のフリーブロックの数を早い時期に増やすことができるので、SSD#1、SSD#3、SSD#4が次のGC動作を開始するタイミングを遅らせることができる。よって、ガベージコレクション(GC)動作の開始に起因するSSD#1、SSD#3、SSD#4の各々の書き込み性能の低下時期を遅らせることができる。
図6は、SSDアレイ内のSSD#2の書き込み性能低下期間に別のSSDによって実行される、書き込み動作およびガベージコレクション(GC)動作を示す。
図5では、SSD#1、SSD#3、SSD#4の各々が、タイミングT11〜T12の期間において、ガベージコレクション(GC)動作を実行する場合を説明したが、図6では、SSD#1、SSD#3、SSD#4の各々は、タイミングT10〜T12の期間において、ホスト2から受信されるデータの書き込み動作とガベージコレクション(GC)動作とを並列に実行する。
例えば、SSD#1〜SSD#4が1Gバイト/秒の書き込み性能で動作している場合において、SSD#2の書き込み性能が512Mバイト/秒に低下した場合には、SSD#1、SSD#3、SSD#4の各々は、512Mバイト/秒の書き込み性能をホスト2から受信されるデータの書き込みに使用し且つ残りの512Mバイト/秒の書き込み性能をガベージコレクション(GC)動作に使用することによって、ホスト2から受信されるデータの書き込み動作とガベージコレクション(GC)動作とを並列に実行することができる。
図7は、SSDアレイ内のSSD#2の書き込み性能低下期間に別のSSDによって実行されるスロットリング動作を示す。
ここで、スロットリング動作とは、書き込み性能を制限する動作を意味する。スロットリング動作の例は以下の通りである。
(1)同時駆動(並列動作)される不揮発性メモリチップの数を制限する
(2)複数の不揮発性メモリチップが同時駆動(並列動作)される第1期間と複数の不揮発性メモリチップが駆動(動作)されない第2期間とを含む1サイクル内における第1期間の割合(デューティー)を制限する
(3)同時駆動(並列動作)される不揮発性メモリチップの数を制限し、且つデューティー)を制限する
SSD#1、SSD#3、SSD#4の各々は、タイミングT10〜T12の期間において、スロットリング動作を実行することによって各々の書き込み性能を、SSD#2の低下された書き込み性能と同程度の低い書き込み性能に低下させる。
通常、SSDのライトスループットが高くなるほど、SSDの電力消費は増える。よって、SSD#1、SSD#3、SSD#4の書き込み性能を落とすことにより、SSD#1、SSD#3、SSD#4の電力消費を低減することができる。
このように、本実施形態では、送り出し側SSDは、残りフリーブロックの数等を示す情報ではなく、その書き込み性能の低下の量(例えば、低下後の書き込み性能)そのものを示す通知をホスト2または他のSSDに送信する。これにより、他の各SSDは、自身の書き込み性能を、容易に、送り出し側SSDの低下された書き込み性能と同程度の低い性能に低下させることができ、この結果、ホスト2による特別な処理無しで、SSDアレイ内の全てのSSDの書き込み性能を効率良くバランスさせることができる。
図8は、上述の送り出し側SSDとして機能するSSD3の構成例を示す。
SSD3は、コントローラ4、不揮発性メモリ(NANDメモリ)5、DRAM6、および温度センサ7を備える。NANDメモリ5は、限定されないが、複数のNANDメモリチップ(不揮発性メモリチップ)を含んでいてもよい。
NANDメモリ5は、多数のNANDブロック(ブロック)B0〜Bm−1を含む。ブロックB0〜Bm−1は、消去単位として機能する。ブロックは「物理ブロック」または「消去ブロック」と称されることもある。
ブロックB0〜Bm−1は多数のページ(物理ページ)を含む。つまり、ブロックB0〜Bm−1の各々は、ページP0〜Pn−1を含む。NANDメモリ5においては、データのリードおよびデータのライトはページ単位で実行される。データの消去はブロック単位で実行される。
コントローラ4は、Toggle、ONFIのようなNANDインタフェース13を介して、不揮発性メモリであるNANDメモリ5に電気的に接続されている。NANDインタフェース13は、複数のチャンネルを有していてもよい。各チャンネルには、幾つかのNANDメモリチップが接続される。コントローラ4は、NANDインタフェース13に接続された複数のNANDメモリチップに書き込み動作および読み出し動作を並列に実行させることができる。
コントローラ4は、NANDメモリ5のデータ管理とNANDメモリ5のブロック管理とを実行するように構成されたフラッシュトランスレーション層(FTL)として機能し得る。
データ管理には、(1)論理ブロックアドレス(LBA)と物理アドレスとの間の対応関係を示すマッピング情報の管理、(2)ページ単位のリード/ライトとブロック単位の消去動作とを隠蔽するための処理、等が含まれる。LBAと物理アドレスとの間のマッピングの管理は、論理物理アドレス変換テーブルとして機能するルックアップテーブル(LUT)33を用いて実行される。ルックアップテーブル(LUT)33は、所定の管理サイズ単位で、LBAと物理アドレスとの間のマッピングを管理する。ホスト2からのライトコマンドの多くは、4Kバイトのデータの書き込みを要求する。したがって、ルックアップテーブル(LUT)33は、例えば4Kバイト単位で、LBAと物理アドレスとの間のマッピングを管理してもよい。あるLBAに対応する物理アドレスは、このLBAのデータがライトされたNANDメモリ5内の物理記憶位置を示す。物理アドレスは、物理ブロックアドレスと物理ページアドレスとを含む。物理ページアドレスは全てのページに割り当てられており、また物理ブロックアドレスは全てのブロックに割り当てられている。
ページへのデータ書き込みは、1消去サイクル当たり1回のみ可能である。
このため、コントローラ4は、同じLBAへのライト(上書き)を、NANDメモリ5上の別のページにマッピングする。つまり、コントローラ4は、この別のページにデータをライトする。そして、コントローラ4は、ルックアップテーブル(LUT)33を更新してこのLBAをこの別のページに関連付けると共に、元のページ(つまりこのLBAが関連付けられていた古いデータ)を無効化する。
ブロック管理には、不良ブロックの管理と、ウェアレベリングと、ガベージコレクション等が含まれる。ウェアレベリングは、物理ブロックそれぞれのプログラム/イレーズ回数を平準化するための動作である。
ガベージコレクションは、NANDメモリ5内のフリースペースを作り出すための動作である。このガベージコレクション動作は、NANDメモリ5のフリーブロックの個数を増やすため、有効データと無効データとが混在する幾つかのブロック内の全ての有効データを別のブロック(コピー先フリーブロック)にコピーする。有効データは、あるLBAに関連付けられている最新のデータである。無効データは、そのデータの更新または削除によってもはやホスト2によって利用されなくなったデータ、つまりどのLBAにも関連付けられていない古いデータである。そして、ガベージコレクション動作は、ルックアップテーブル(LUT)33を更新して、コピーされた有効データのLBAそれぞれを正しい物理アドレスにマッピングする。有効データが別のブロックにコピーされることによって無効データのみなったブロックはフリーブロックとして開放される。これによって、このブロックは消去後に再利用することが可能となる。
ホスト2は、ライトコマンドをSSD3に送信する。このライトコマンドは、ライトデータ(つまり書き込むべきデータ)の論理アドレス(開始論理アドレス)と、転送長とを含む。この実施形態においては、LBAが論理アドレスとして使用されるが、他の実施形態においてはオブジェクトIDが論理アドレスとして使用されても良い。LBAは、論理セクタ(論理ブロック)に付与されるシリアル番号によって表現される。シリアル番号はゼロから始まる。論理セクタのサイズは、例えば512バイトである。
SSD3のコントローラ4は、ライトコマンド内の開始論理アドレスと転送長とによって指定されるライトデータを、NANDメモリ5内のブロックのページにライトする。さらに、コントローラ4は、ルックアップテーブル(LUT)33を更新することによって、ライトされたデータに対応するLBAを、このデータがライトされた物理記憶位置を示す物理アドレスにマッピングする。
より詳しくは、コントローラ4は、NANDメモリ5内のフリーブロックの一つを、ホスト2からのデータの書き込みのために割り当てる。この割り当てられたブロックは、ホスト2からのデータが書き込まれるべき書き込み対象ブロックであり、「書き込み先ブロック」、または「入力ブロック」、等とも称される。コントローラ4は、ルックアップテーブル(LUT)33を更新しながら、ホスト2から受信されるライトデータを書き込み対象ブロック(書き込み先ブロック)の利用可能ページに順次書き込む。書き込み先ブロックに利用可能ページが無くなった場合に、コントローラ4は、新たなフリーブロックを書き込み先ブロックとして割り当てる。
次に、コントローラ4の構成について説明する。
コントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14、SRAM15等を含む。これらCPU12、NANDインタフェース13、DRAMインタフェース14、SRAM15は、バス10を介して相互接続される。
ホストインタフェース11は、ホスト2から様々なコマンド(ライトコマンド、リードコマンド、アンマップ(UNMAP)コマンド、等)を受信する。
ライトコマンドは、SSD3に対し、このライトコマンドによって指定されたデータをライトするように要求する。ライトコマンドは、ライトされるべき最初の論理ブロックのLBA(開始LBA)と、転送長(論理ブロックの数)とを含む。リードコマンドは、SSD3に対し、このリードコマンドによって指定されたデータをリードするように要求する。リードコマンドは、リードされるべき最初の論理ブロックのLBA(開始LBA)と、転送長(論理ブロックの数)とを含む。
CPU12は、ホストインタフェース11、NANDインタフェース13、DRAMインタフェース14、SRAM15を制御するように構成されたプロセッサである。CPU12は、上述のFTLの処理に加え、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行する。
例えば、コントローラ4がホスト2からライトコマンドを受信した時、CPU12の制御の下、コントローラ4はライトコマンドによって指定されるライトデータをNANDメモリ5に書き込む以下の書き込み動作を実行する。
つまり、コントローラ4は、ライトデータを現在の書き込み先ブロックの物理記憶位置(利用可能ページ)に書き込み、そしてルックアップテーブル(LUT)33を更新して、ライトコマンドに含まれるLBA(開始LBA)にこの物理記憶位置の物理アドレスをマッピングする。
これらFTL処理およびコマンド処理は、CPU12によって実行されるファームウェアによって制御されてもよい。このファームウェアは、CPU12を、ガベージコレクション(GC)動作制御部21、熱保護スロットリング制御部22、電力制限スロットリング制御部23、および書き込み性能低下通知部24として機能させる。
ガベージコレクション動作制御部21は、ガベージコレクション動作の対象として選択される幾つかのブロック(断片化されたブロック)内の有効データを別のブロック(コピー先ブロック)にコピーするガベージコレクション動作を実行する。ガベージコレクション動作は、例えば、NANDメモリ6内のフリーブロックの個数が所定の閾個数以下に低下した場合に実行される。ガベージコレクション動作はSSD3のリソースおよび性能を消費する。このため、ガベージコレクション動作の実行中は、ホスト2から受信されるデータを書き込み先ブロックに書き込む書き込み動作の性能(つまり、書き込み性能)が低下される場合がある。
熱保護スロットリング制御部22は、温度センサ7よって検出される温度に基づき、SSD3の過熱を防ぐための熱保護動作(熱スロットリング動作)を実行する。熱スロットリング動作は、SSD3の書き込み性能を制限することによって実行される。より詳しくは、熱保護スロットリング制御部22は、温度センサ7よって検出される温度に基づいて、同時駆動(並列動作)されるNANDメモリチップの数を制限するか、あるいは複数のNANDメモリチップが同時駆動(並列動作)される第1期間とこれらNANDメモリチップが駆動(動作)されない第2期間とを含む1サイクル内における第1期間の割合を制限する。
電力制限スロットリング制御部23は、SSD3の電力消費をSSD3に許容される最大電力以下に抑える電力制限動作(電力制限スロットリング動作)を実行する。SSD3に許容される最大電力は、ホスト2によってSSD3に予め通知されていてもよい。この最大電力は、SSD3が消費することが許可された最大の電力消費量を示す。
電力制限スロットリング動作も、SSD3の書き込み性能を制限することによって実行することができる。より詳しくは、電力制限スロットリング制御部23は、SSD3に許容される最大電力と、各NANDメモリチップの電力消費量とに基づいて、同時駆動(並列動作)されるNANDメモリチップの数を制限するか、あるいは複数のNANDメモリチップが同時駆動(並列動作)される第1期間とこれらNANDメモリチップが駆動(動作)されない第2期間とを含む1サイクル内における第1期間の割合を制限する。
書き込み性能低下通知部24は、内部動作(ガベージコレクション動作、熱スロットリング動作、または電力制限スロットリング動作)が開始される場合に、開始される内部動作の内容に基づいて、内部動作の開始に起因する書き込み性能の低下の量を推定し、推定される書き込み性能の低下の量を、ホスト2またはSSDアレイ内の他の一つ以上のSSDに通知する。
推定される書き込み性能の低下の量は、内部動作の開始に起因する書き込み性能の低下後の性能であってもよい。この場合、例えば、書き込み性能が1Gバイト/秒から500Mバイト/秒に低下される場合には、500Mバイト/秒が書き込み性能の低下の量として推定されても良い。
あるいは、推定される書き込み性能の低下の量は、内部動作に起因する書き込み性能の低下量、つまり通常状態の書き込み性能から、低下後の書き込み性能を引いた値であってもよい。この場合、例えば、書き込み性能が1Gバイト/秒から500Mバイト/秒に低下される場合には、524Mバイト/秒(=1024−500)が書き込み性能の低下の量として推定されても良い。
内部動作の終了によって書き込み性能が回復した時、書き込み性能低下通知部24は、書き込み性能が通常状態の書き込み性能(1Gバイト/秒)に回復したことをホスト2またはSSDアレイ内の他の一つ以上のSSDに通知してもよい。
次に、コントローラ4内の他のコンポーネントについて説明する。
NANDインタフェース13は、CPU12の制御の下、NANDメモリ5を制御するように構成されたNANDコントローラである。NANDインタフェース13は、マルチチャンネル、例えば、8個のチャンネル(CH#1〜CH#8)を含んでいてもよい。各チャンネルは、データ、コマンド、およびアドレスを転送するためのバスを含む。
DRAMインタフェース14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAMコントローラである。
DRAM6の記憶領域の一部は、NANDメモリ5にライトすべきデータを一時的に格納するためのライトバッファ(WB)31として利用されてもよい。また、DRAM6の記憶領域は、ガベージコレクション(GC)動作中に移動されるデータを一時的に格納するためのGCバッファ32として利用されてもよい。また、DRAM6の記憶領域は、上述のルックアップテーブル33の格納のために用いられてもよい。
SSD3は、さらに他の様々な管理情報を保持していてもよい。このような管理情報の例には、物理アドレスそれぞれに対応する有効/無効フラグを保持するページ管理テーブルが含まれていても良い。各有効/無効フラグは、対応する物理アドレス(物理ページ)が有効であるか無効であるかを示す。物理ページが有効であるとは、その物理ページ内のデータが有効データであることを意味する。物理ページが無効であるとは、その物理ページ内のデータが更新(書き替え)によって無効化されたデータであることを意味する。
次に、ホスト2の構成について説明する。
ホスト2は、様々なプログラムを実行する情報処理装置である。情報処理装置によって実行されるプログラムには、アプリケーションソフトウェアレイヤ41、オペレーティングシステム(OS)42、ファイルシステム43が含まれる。
一般に知られているように、オペレーティングシステム(OS)42は、ホスト2全体を管理し、ホスト2内のハードウェアを制御し、アプリケーションがハードウェアおよびSSD3を使用することを可能にするための制御を実行するように構成されたソフトウェアである。
ファイルシステム43は、ファイルの操作(作成、保存、更新、削除等)のための制御を行うために使用される。例えば、ZFS、Btrfs、XFS、ext4、NTFSなどがファイルシステム43として使用されても良い。あるいは、ファイルオブジェクトシステム(例えば、Ceph Object Storage Daemon)、Key Value Store System (例えば、Rocks DB) がファイルシステム43として使用されても良い。
様々なアプリケーションソフトウェアスレッドがアプリケーションソフトウェアレイヤ41上で走る。アプリケーションソフトウェアスレッドの例としては、クライアントソフトウェア、データベースソフトウェア、仮想マシン等がある。
アプリケーションソフトウェアレイヤ41がリードコマンドまたはライトコマンドのようなリクエストをSSD3に送出することが必要な時、アプリケーションソフトウェアレイヤ41は、OS42にそのリクエストを送出する。OS42はそのリクエストをファイルシステム43に送出する。ファイルシステム43は、そのリクエストを、コマンド(リードコマンド、ライトコマンド等)にトランスレートする。ファイルシステム43は、コマンドを、SSD3に送出する。SSD3からのレスポンスが受信された際、ファイルシステム43は、そのレスポンスをOS42に送出する。OS42は、そのレスポンスをアプリケーションソフトウェアレイヤ41に送出する。
さらに、ホスト2は、デバイス性能管理部44を含んでいてもよい。デバイス性能管理部44は、SSDアレイ内のあるSSDから性能低下の通知を受信し、受信した性能低下の通知を、SSDアレイ内の他の各SSDに送信する。
図9は、フリーブロックをホスト2からのデータの書き込み用に順次割り当てる動作を示す。
コントローラ4は、フリーブロックリスト60によって示されるフリーブロックの一つを書き込み先ブロック62として割り当てる。
コントローラ4は、ホスト2から受信されるライトデータをライトバッファ31に書き込む。この後、コントローラ4は、ルックアップテーブル(LUT)33を更新しながら、ライトバッファ31内のライトデータを書き込み先ブロック62の先頭ページから最終ページに向けて順次ライトする。
書き込み先ブロック62に利用可能ページが無くなったならば、コントローラ4は、書き込み先ブロック62をアクティブブロック(データを含むブロック)として管理する。このために、コントローラ4は、書き込み先ブロック62をアクティブブロックリスト61に移動する。そして、コントローラ4は、フリーブロックリスト60のフリーブロックを新たな書き込み先ブロック62として割り当てる。
アクティブブロックリスト61内の何れかのブロックの全てのデータがその更新によって無効化されたならば、このブロックはフリーブロックリスト60に移動される。
フリーブロックリスト60内のフリーブロックの数が所定の閾値以下に低下したならば、フリーブロックを作り出す上述のガベージコレクション(GC)動作が実行される。
図10は、コントローラ4によって実行されるガベージコレクション(GC)動作を示す。
図10では、4つのブロックB11、B12、B13、B14がGC動作の対象に選択された場合が例示されている。コントローラ4は、有効データ(つまり有効ページ)と無効データ(つまり無効ページ)が混在するブロックからGC動作の対象とすべき幾つかのブロックを選択する。コントローラ4は、物理アドレスそれぞれに対応する有効/無効フラグを保持する上述のページ管理テーブルを参照することによって、無効データの量の多いブロックを優先的にGC動作の対象として選択してもよい。コントローラ4は、GC動作の対象である各ブロック内の有効データを一つ以上のコピー先ブロックにコピーする。
GC動作に必要なコピー先ブロックの個数は、GC動作によってコピーすべき有効データの量に基づいて決定される。図10では、2つのフリーブロックがコピー先ブロックB101、B102として割り当てられた場合が示されている。
コピー先ブロックB101、B102は有効データで満たされる。ブロックB11、B12、B13、B14は、有効データを含まないフリーブロックとなる。フリーブロックとなったブロックB11、B12、B13、B14は、フリーブロックリスト60に移動される。
図11は、NANDインタフェース13と複数のNANDメモリチップとの関係を示す。
図11においては、NANDインタフェース13が有する8個のチャンネル(CH#1〜CH#8)の各々に4つのNANDメモリチップが接続されている場合が例示されている。コントローラ4の制御の下、NANDインタフェース13は、チャンネル当たりの同時駆動(並列動作)されるNANDメモリチップの数を変更することができる。
チャンネル当たりの並列動作されるNANDメモリチップの数が4に設定されたならば、同時駆動(並列動作)されるNANDメモリチップの総数は32となる(最大書き込み性能)。
チャンネル当たりの並列動作されるNANDメモリチップの数が3に設定されたならば、同時駆動(並列動作)されるNANDメモリチップの総数は24となる(最大書き込み性能の75%の書き込み性能)。
チャンネル当たりの並列動作されるNANDメモリチップの数が2に設定されたならば、同時駆動(並列動作)されるNANDメモリチップの総数は16となる(最大書き込み性能の50%の書き込み性能)。
チャンネル当たりの並列動作されるNANDメモリチップの数が1に設定されたならば、同時駆動(並列動作)されるNANDメモリチップの総数は8となる(最大書き込み性能の25%の書き込み性能)。
同時駆動(並列動作)されるNANDメモリチップの数(総数)を変更することにより、SSD3の書き込み性能、電力消費、発熱量を調整することができる。
図12は、デューティー制御動作を示す。
NANDメモリ5にデータを書き込むための書き込み動作においては、32個のNANDメモリチップは間欠駆動される。間欠駆動のためのサイクル(デューティー幅)は、書き込み動作が実行されるオン期間と、書き込み動作が実行されないオフ期間とを含む。
オン期間においては、32個の全てのNANDメモリチップが同時駆動(並列動作)される。各NANDメモリチップは書き込み動作が進行中のビジー状態となる。
オフ期間においては、32個の全てのNANDメモリチップが駆動(動作)されない。各NANDメモリチップは書き込み動作および読み出し動作が実行されないアイドル状態となる。
1つのサイクルに対するオン期間の割合を制御することによって、SSD3の書き込み性能、SSD3の書き込み性能、電力消費、発熱量を調整することができる。例えば、1サイクル(デューティー幅)が10秒である場合において、オン期間が1秒に設定されたならば(デューティー比=10%)、SSD3の書き込み性能は最大書き込み性能の10%に制限される。SSD3の10秒間の平均電力消費は、最大書き込み性能時の電力消費の1/10となる。
図13は、送り出し側SSDによって実行される性能低下通知処理の例を示す。
送り出し側SSDとして機能するSSD#2内のコントローラ4は、必要に応じて、そのSSD#2の書き込み性能の低下の要因となる処理(上述の内部動作)を開始する(ステップS11)。ステップS11においては、コントローラ4は、SSD#2の書き込み性能の低下の量を推定し、SSD#2の書き込み性能が低下することを示す性能低下の通知をホスト2に送信する。この性能低下の通知は、推定される書き込み性能(例えば、低下後の書き込み性能)と、要因情報とを含む。要因情報は、この書き込み性能の低下の要因がガベージコレクション(GC)動作、熱スロットリング動作、または電力制限スロットリング動作のいずれであるかを示す。
ホスト2が性能低下の通知をSSD#2から受信した時、ホスト2は、受信した性能低下の通知をSSD#1、SSD#3、SSD#4にそれぞれ送信する。SSD#1、SSD#3、SSD#4の各々は、自身の書き込み性能を、受信された低下後の書き込み性能にまで低下させるように構成された受け側SSDとして機能する。SSD#1のコントローラは、自身の書き込み性能を、受信された低下後の書き込み性能にまで低下させる処理を実行する(ステップS12)。ステップS12では、SSD#1のコントローラは、SSD#1の書き込み性能が受信された低下後の書き込み性能よりも低くならない範囲で、GC動作を実行してもよい。あるいは、SSD#1のコントローラは、SSD#1の書き込み性能が受信された低下後の書き込み性能よりも低くならない範囲で、同時駆動されるNANDメモリチップの数またはデューティー比を制限するスロットリング動作を実行してもよい。SSD#1のコントローラは、受信された要因情報に基づいて、GC動作、またはスロットリング動作のいずれを実行するかを決定してもよい。
例えば、受信された要因情報が、GC動作、または電力制限(スロットリング動作)を示すならば、SSD#1のコントローラは、GC動作またはスロットリング動作のいずれを実行しても良い。
一方、書き込み性能の低下の要因が「過熱を防ぐための熱保護」(熱スロットリング動作)であることを示すならば、SSD#1のコントローラは、GC動作ではなく、スロットリング動作によって自身の書き込み性能を低下させる。これにより、SSDアレイ全体の過度の温度上昇を抑制することができる。
同様に、SSD#3、SSD#4も、自身の書き込み性能を、受信された低下後の書き込み性能にまで低下させる処理を実行する(ステップS13、S14)。
図14は、送り出し側SSDによって実行される性能低下通知処理の別の例を示す。
送り出し側SSDとして機能するSSD#2内のコントローラ4は、必要に応じて、そのSSD#2の書き込み性能の低下の要因となる処理(上述の内部動作)を開始する(ステップS21)。ステップS21においては、コントローラ4は、SSD#2の書き込み性能の低下の量を推定し、性能低下の通知をSSD#1、SSD#3、SSD#4にそれぞれ送信する。この性能低下の通知は、推定される書き込み性能(例えば、低下後の書き込み性能)と、上述の要因情報とを含む。
SSD#1、SSD#3、SSD#4は、自身の書き込み性能を、受信された低下後の書き込み性能にまで低下させる処理を実行する(ステップS22、S23、S24)。
図15のフローチャートは、送り出し側SSDによって実行されるGC動作および性能低下通知処理の手順を示す。
送り出し側SSDのコントローラ4は、残りフリーブロックの数を定期的にチェックし(ステップS31)、残りフリーブロックの数が閾個数以下であるか否かを判定する(ステップS32)。
残りフリーブロックの数が閾個数以下であるならば(ステップS32のYES)、コントローラ4は、無効データ量の多い上位幾つかのブロックをGC対象ブロック(GC候補)として選択する(ステップS33)。コントローラ4は、GC動作においてコピーすることが必要なデータ量、つまりGC対象ブロックそれぞれの有効データの量に基づいて、GC期間中の送り出し側SSDの書き込み性能(例えば、GCに起因する低下後の書き込み性能)を推定する(ステップS34)。
コントローラ4は、推定された書き込み性能と要因情報(GC動作)とを含む性能低下の通知をホスト2またはSSDアレイ内の他の各SSDに送信することによって、送り出し側SSDの書き込み性能が低下することと、送り出し側SSDの書き込み性能がどの程度の性能にまで低下されるかと、この書き込み性能の低下の要因とを、ホスト2またはSSDアレイ内の他の各SSDに通知する(ステップS35)。
コントローラ4は、GC対象ブロックそれぞれの有効データを一つ以上のコピー先ブロックにコピーすることによってフリーブロックの数を増やすGC動作を実行する(ステップS36)。ステップS36では、コントローラ4は、ホスト2から受信されるライトデータ(ホストデータ)を書き込み先ブロックに書き込む処理とGC動作とを並列に実行する。この場合、コントローラ4は、GC動作においてコピーすることが必要なデータ量に基づいて、書き込み先ブロックに書き込むホスト2からのライトデータの量とGC動作のためにコピー先ブロックにコピーするデータの量との比率を決定し、この比率でライトデータを書き込む処理とGC動作とを並列に実行してもよい。
GC動作が完了したならば(ステップS37のYES)、コントローラ4は、送り出し側SSDの書き込み性能の回復の通知をホスト2またはSSDアレイ内の他の各SSDに送信することによって、送り出し側SSDの書き込み性能が通常状態時の書き込み性能に回復することをホスト2またはSSDアレイ内の他の各SSDに通知する(ステップS38)。書き込み性能の回復の通知には、通常状態時の書き込み性能を示す値(例えば、1Gバイト/秒)が含まれていてもよい。
図16のフローチャートは、送り出し側SSDによって実行される熱スロットリング動作および性能低下通知処理の手順を示す。
送り出し側SSDのコントローラ4は、温度センサ7によって検出される送り出し側SSD内の温度を定期的にチェックし、この検出温度が閾温度T1以上であるか否かを判定する(ステップS41)。
検出温度が閾温度T1以上であるならば(ステップS41のYES)、コントローラ4は、同時駆動するNANDメモリチップの数、または上述のデューティー比を決定する(ステップS42)。コントローラ4は、決定された同時駆動するNANDメモリチップの数、または決定されたデューティー比に基づいて、温度保護期間(熱スロットリング動作期間)中の送り出し側SSDの書き込み性能(例えば、熱スロットリング動作に起因する低下後の書き込み性能)を推定する(ステップS43)。
コントローラ4は、推定された書き込み性能と要因情報(熱スロットリング動作)とを含む性能低下の通知をホスト2またはSSDアレイ内の他の各SSDに送信することによって、送り出し側SSDの書き込み性能が低下することと、送り出し側SSDの書き込み性能がどの程度の性能にまで低下されるかと、この書き込み性能の低下の要因とを、ホスト2またはSSDアレイ内の他の各SSDに通知する(ステップS44)。
コントローラ4は、ステップS42における決定に基づいて同時駆動するNANDメモリチップの数またはデューティー比を制限することによって、熱スロットリング動作を開始する(ステップS45)。この熱スロットリング動作により、送り出し側SSDの発熱量が低下される。
コントローラ4は、温度センサ7によって検出される送り出し側SSD内の温度を定期的にチェックし、この検出温度が閾温度T2以下に下がったか否かを判定する(ステップS46)。閾温度T2は、閾温度T1よりも低い温度に設定されていてもよい。
検出温度が閾温度T2以下であるならば(ステップS46のYES)、コントローラ4は、同時駆動するNANDメモリチップの数の制限またはデューティー比の制限を解除することによって熱スロットリング動作を終了する(ステップS47)。そして、コントローラ4は、送り出し側SSDの書き込み性能の回復の通知をホスト2またはSSDアレイ内の他の各SSDに送信することによって、送り出し側SSDの書き込み性能が通常状態時の書き込み性能に回復することをホスト2またはSSDアレイ内の他の各SSDに通知する(ステップS48)。書き込み性能の回復の通知には、通常状態時の書き込み性能を示す値(例えば、1Gバイト/秒)が含まれていてもよい。
図16では、検出温度に基づいて2つの状態(熱スロットリング動作の開始、熱スロットリング動作の停止)を切り替える動作を説明したが、検出温度に基づいて、同時駆動するNANDメモリチップの数またはデューティー比を多段階で切り替える制御を実行してもよい。例えば、検出温度が閾温度T1と閾温度T2の間の閾温度T3にまで低下した時に、同時駆動するNANDメモリチップの数またはデューティー比を再決定し、再決定されたNANDメモリチップの数またはデューティー比に基づいて同時駆動するNANDメモリチップの数またはデューティー比を制限してもよい。この場合、コントローラ4は、再決定されたNANDメモリチップの数またはデューティー比に基づいて書き込み性能の低下の量を再び推定し、推定された書き込み性能と要因情報(熱スロットリング動作)とを含む性能低下の通知をホスト2またはSSDアレイ内の他の各SSDに送信してもよい。
図17のフローチャートは、送り出し側SSDによって実行される電力制限スロットリング動作および性能低下通知処理の手順を示す。
送り出し側SSDのコントローラ4は、送り出し側SSDの電力消費と送り出し側SSDに許容される最大電力との関係に基づいて電力制限を開始すべきか否か、つまり電力制限開始条件が満たされたかどうかを判定する(ステップS51)。送り出し側SSDの電力消費は、1つのNANDメモリチップ当たりの電力消費量と、同時駆動されるNANDメモリチップの数(またはデューティー比)との関数によって算出される。送り出し側SSDの電力消費が、ホスト2によって送り出し側SSDに許容された最大電力よりも大きいならば、コントローラ4は、送り出し側SSDの電力消費が送り出し側SSDに許容された最大電力以下になるように、送り出し側SSDに許容された最大電力と、NANDメモリチップの各々の電力消費量(1チップ当たりの電力消費量)とに基づいて、同時駆動するNANDメモリチップの数、または上述のデューティー比を決定する(ステップS52)。
コントローラ4は、決定された同時駆動するNANDメモリチップの数、または決定されたデューティー比に基づいて、電力制限期間(電力制限スロットリング動作期間)中の送り出し側SSDの書き込み性能(例えば、電力制限スロットリング動作に起因する低下後の書き込み性能)を推定する(ステップS53)。
コントローラ4は、推定された書き込み性能と要因情報(熱スロットリング動作)とを含む性能低下の通知をホスト2またはSSDアレイ内の他の各SSDに送信することによって、送り出し側SSDの書き込み性能が低下することと、送り出し側SSDの書き込み性能がどの程度の性能にまで低下されるかと、この書き込み性能の低下の要因とを、ホスト2またはSSDアレイ内の他の各SSDに通知する(ステップS54)。
コントローラ4は、ステップS52における決定に基づいて同時駆動するNANDメモリチップの数またはデューティー比を制限することによって、電力制限スロットリング動作を開始する(ステップS55)。この電力制限スロットリング動作により、送り出し側SSDの電力消費が低下される。
ホスト2は、必要に応じて、送り出し側SSDに許容される最大電力を変更してもよい。例えば、ホスト2がSSDアレイ全体の書き込み性能の増加を望むならば、ホスト2は各SSDに許容すべき最大電力を増加しても良い。この場合、コントローラ4は、送り出し側SSDに許容される変更された最大電力に基づいて、電力制限の必要性がなくなったか否かを判定する(ステップS56)。
電力制限の必要性がないならば(ステップS56のYES)、コントローラ4は、同時駆動するNANDメモリチップの数の制限またはデューティー比の制限を解除することによって電力制限スロットリング動作を終了する(ステップS57)。そして、コントローラ4は、送り出し側SSDの書き込み性能の回復の通知をホスト2またはSSDアレイ内の他の各SSDに送信することによって、送り出し側SSDの書き込み性能が通常状態時の書き込み性能に回復することをホスト2またはSSDアレイ内の他の各SSDに通知する(ステップS58)。書き込み性能の回復の通知には、通常状態時の書き込み性能を示す値(例えば、1Gバイト/秒)が含まれていてもよい。
なお、ホスト2は、情報処理システム1の電力消費を低減するために、ホスト2は各SSDに許容すべき最大電力を減少しても良い。この場合、コントローラ4は、送り出し側SSDの電力消費が送り出し側SSDに許容された変更された最大電力以下になるように、送り出し側SSDに許容された変更された最大電力と、NANDメモリチップの各々の電力消費量(1チップ当たりの電力消費量)とに基づいて、同時駆動するNANDメモリチップの数、または上述のデューティー比を再決定する。そして、コントローラ4は、再決定されたNANDメモリチップの数またはデューティー比に基づいて同時駆動するNANDメモリチップの数またはデューティー比を制限する。コントローラ4は、再決定されたNANDメモリチップの数またはデューティー比に基づいて書き込み性能の低下の量を再び推定し、推定された書き込み性能と要因情報(電力制限スロットリング動作)とを含む性能低下の通知をホスト2またはSSDアレイ内の他の各SSDに送信する。
図18は、上述の受け側SSDとして機能するSSD3の構成例を示す。
受け側SSDは、送り出し側SSDの書き込み性能低下通知部24の代わりに、書き込み性能調整部25を含む。
書き込み性能調整部25は、ホスト2または他のSSDから他のSSDの書き込み性能が低下することを示す通知を受信し、この通知によって指定される書き込み性能の低下の量と、この通知によって指定される性能低下の要因と基づいて、受け側SSDの書き込み性能を低下させる処理を実行する。
受信された通知に含まれる要因情報がGC動作または電力制限スロットリングであるならば、書き込み性能調整部25は、GC動作を実行してもよい。この場合、書き込み性能調整部25は、書き込み性能の低下の量に基づいて、書き込み先ブロックに書き込むホスト2からのライトデータの量とGC動作のためにコピー先ブロックにコピーするデータの量との比率を決定する。そして、この比率に基づいて、書き込み性能調整部25は、ガベージコレクション動作制御部21を使用してGC動作を実行する。
例えば、ライトデータの量とGC動作のためにコピーするデータの量との比率が1対1であるならば、所定の量のライトデータが書き込み先ブロックに書き込まれる度に、所定の量の有効データをGC対象ブロックからコピー先ブロックにコピーする動作が実行されてもよい。
受信された通知に含まれる要因情報が熱スロットリングであるならば、書き込み性能調整部25は、GC動作を実行せず、スロットリング動作によって受け側SSDの書き込み性能を低下させる。この場合、書き込み性能調整部25は、書き込み性能の低下の量に基づいて、同時駆動するNANDメモリチップの数またはデューティー比を決定し、決定された同時駆動するNANDメモリチップの数または決定されたデューティー比に基づいて、同時駆動するNANDメモリチップの数またはデューティー比を制限する。
図19のフローチャートは、受け側SSDによって実行される書き込み性能低下処理の手順を示す。
受け側SSDのコントローラ4がホスト2または他のSSDから他のSSDの書き込み性能の低下の通知を受信した時(ステップS61のYES)、コントローラ4は、この受信された通知に含まれる要因情報に基づいて他のSSDの書き込み性能の低下の要因をチェックする(ステップS62)。
他のSSDの書き込み性能の低下の要因がGC動作であるならば(ステップS63のYES)、受け側SSDのコントローラ4は、GC動作を前もって実行することによってまたはスロットリング動作を実行することによって受け側SSDの書き込み性能を、他のSSDの低下後の書き込み性能とほぼ等しい性能にまで低下させる(ステップS64)。
他のSSDの書き込み性能の低下の要因が熱保護(熱スロットリング)であるならば(ステップS65のYES)、受け側SSDのコントローラ4は、スロットリング動作を実行することによって受け側SSDの書き込み性能を、他のSSDの低下後の書き込み性能とほぼ等しい性能にまで低下させる(ステップS66)。SSDアレイ全体の過度に温度上昇を防ぐために、受け側SSDがGC動作を前もって実行することは禁止される。
他のSSDの書き込み性能の低下の要因が電力制限(電力制限スロットリング)であるならば(ステップS67のYES)、受け側SSDのコントローラ4は、スロットリング動作を実行することによって受け側SSDの書き込み性能を、他のSSDの低下後の書き込み性能とほぼ等しい性能にまで低下させる(ステップS68)。あるいは、受け側SSDのコントローラ4は、受け側SSDの電力消費が受け側SSDに許容された最大電力を超えない範囲内で、GC動作を前もって実行してもよい。
なお、受け側SSDのコントローラ4がホスト2または他のSSDから他のSSDの書き込み性能の回復の通知を受信した時、コントローラ4は、GC動作を停止またはスロットリング動作を停止することよって受け側SSDの書き込み性能を通常状態時の書き込み性能(例えば、1Gバイト/秒)に回復する処理を実行する。
図20のフローチャートは、性能低下通知が受信された時に受け側SSDによって実行されるGC動作の手順を示す。
受け側SSDのコントローラ4は、書き込み性能の低下の量に基づいて、書き込み先ブロックに書き込むホスト2からのライトデータの量とGC動作のためにコピー先ブロックにコピーするデータの量との比率を算出し(ステップS71)、この比率でGC動作を実行する(ステップS72)。
例えば、受け側SSDのコントローラ4が書き込み性能(1Gバイト/秒)で動作しており、送り出し側SSDの書き込み性能が512Mバイト/秒に低下される場合には、受け側SSDのコントローラ4は、受け側SSDの書き込み性能を512Mバイト/秒に低下させ、かつ残りの書き込み性能(ここでは、512Mバイト/秒)をGC動作のために使用してもよい。この場合、ライトデータの量とGC動作のためにコピーするデータの量との比率は1対1となる。ステップS72では、ホスト2からのライトデータの量とGC動作のためにコピーするデータの量との比率が1対1となるように書き込み動作とGC動作とが並行して実行される。
図21のフローチャートは、性能低下通知が受信された時に受け側SSDによって実行されるスロットリング動作の手順を示す。
受け側SSDのコントローラ4は、書き込み性能の低下の量に基づいて、受け側SSD内で同時駆動するNANDメモリチップの数または受け側SSD内のNANDメモリチップを間欠動作させるためのデューティー比を決定し(ステップS81)、このNANDメモリチップの数またはデューティー比でスロットリング動作を実行しながら書き込み動作を実行する(ステップS82)。
図22は、送り出し側SSDおよび受け側SSDの双方の機能を有するSSDの構成例を示す。
送り出し側SSDおよび受け側SSDの双方の機能を有するSSD3のコントローラ4は、上述の書き込み性能低下通知部24と上述の書き込み性能調整部25の双方を含む。
図23は、ホスト2として機能する情報処理装置のハードウェア構成例を示す。
この情報処理装置は、サーバコンピュータ、またはパーソナルコンピュータとして実現される。この情報処理装置は、プロセッサ(CPU)101、メインメモリ102、BIOS−ROM103、ネットワークコントローラ105、周辺インタフェースコントローラ106、コントローラ107、およびエンベデッドコントローラ(EC)108等を含む。
プロセッサ101は、この情報処理装置の各コンポーネントの動作を制御するように構成されたCPUである。このプロセッサ101は、複数のSSD3のいずれか1つまたは他のストレージデバイスからメインメモリ102にロードされる様々なプログラムを実行する。メインメモリ102は、DRAMのようなランダムアクセスメモリから構成される。プロセッサ101によって実行されるプログラムは、上述のアプリケーションソフトウェアレイヤ41、OS42、ファイルシステム43、およびデバイス性能管理部44を含む。
また、プロセッサ101は、不揮発性メモリであるBIOS−ROM103に格納された基本入出力システム(BIOS)も実行する。BIOSはハードウェア制御のためのシステムプログラムである。
ネットワークコントローラ105は、有線LANコントローラ、無線LANコントローラのような通信デバイスである。周辺インタフェースコントローラ106は、USBデバイスのような周辺デバイスとの通信を実行するように構成されている。
コントローラ107は、複数のコネクタ107Aにそれぞれ接続されるデバイスとの通信を実行するように構成されている。本実施形態では、複数のSSD3が複数のコネクタ107Aにそれぞれ接続される。コントローラ107は、RAIDコントローラの機能を有するチップセットであってもよい。プロセッサ101がPCIe Switchを含むならば、複数のSSD3の各々は、PCIeバスを介してプロセッサ101に直接的に接続されてもよい。
EC108は、情報処理装置の電力管理を実行するように構成されたシステムコントローラとして機能する。EC108は、ユーザによる電源スイッチの操作に応じて情報処理装置をパワーオンおよびパワーオフする。EC108はワンチップマイクロコントローラのような処理回路として実現されている。EC108は、キーボード(KB)などの入力デバイスを制御するキーボードコントローラを内蔵していてもよい。
図24は、複数のSSD3とホスト2とを含む情報処理装置の構成例を示す。
この情報処理装置は、ラックに収容可能な薄い箱形の筐体201を備える。多数のSSD3は筐体201内に配置されても良い。この場合、各SSD3は筐体201の前面201Aに設けられたスロットに取り外し可能に挿入されてもよい。
システムボード(マザーボード)202は筐体201内に配置される。システムボード(マザーボード)202上においては、CPU101、メモリ102、ネットワークコントローラ105、コントローラ107を含む様々な電子部品が実装されている。これら電子部品がホスト2として機能する。
以上説明したように、本実施形態の送り出し側SSDによれば、送り出し側SSDによって内部動作が開始される場合に、ホスト2から受信されるデータをNANDメモリ5に書き込む書き込み動作の性能低下の量が推定され、この推定される書き込み動作の性能低下の量が、ホスト2またはSSDアレイ内の他の一つ以上のSSDに通知される。したがって、アレイ内のSSDが協調動作することを可能にするために有用な情報をホスト2または他のSSDに提供することが可能となり、これによってSSDアレイ内の他のSSDが、送り出し側SSDの書き込み性能が低下している期間を有効利用することが可能となる。
なお、本実施形態では、不揮発性メモリとしてNANDメモリを例示した。しかし、本実施形態の機能は、例えば、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリにも適用できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
2…ホスト、3…SSD、4…コントローラ、5…NANDメモリ、21…ガベージコレクション動作制御、22…熱保護スロットリング制御部、23…電力制限スロットリング制御部、24…書き込み性能低下通知部。

Claims (13)

  1. 複数の半導体ストレージデバイスに跨がってデータを分散させるストレージアレイ内の一つの半導体ストレージデバイスとして動作可能なメモリシステムであって、
    不揮発性メモリと、
    前記不揮発性メモリに電気的に接続され、ホストから受信されるデータを前記不揮発性メモリに書き込む書き込み動作と、前記メモリシステムを管理する内部動作とを実行するように構成されたコントローラとを具備し、
    前記コントローラは、
    前記内部動作が開始される場合に、前記開始される前記内部動作の内容に基づいて、前記内部動作の開始に起因する前記書き込み動作の性能低下の量を推定し、
    前記推定される前記書き込み動作の性能低下の量を、前記ホストまたは前記ストレージアレイ内の他の一つ以上の半導体ストレージデバイスに通知するように構成されている、メモリシステム。
  2. 前記内部動作は、前記不揮発性メモリのガベージコレクション動作、前記メモリシステムの過熱を防ぐ熱保護動作、前記メモリシステムの電力消費を前記メモリシステムに許容される最大電力以下に抑える電力制限動作のうちの、少なくとも一つを含む請求項1記載のメモリシステム。
  3. 前記内部動作は、前記不揮発性メモリのガベージコレクション動作を含み、
    前記コントローラは、前記ガベージコレクション動作が開始される場合、前記開始される前記ガベージコレクション動作においてコピーすることが必要なデータ量に基づいて、前記書き込み動作の性能低下の量を推定するように構成されている請求項1記載のメモリシステム。
  4. 前記コントローラは、前記内部動作の終了によって前記書き込み動作の性能が回復される場合、前記書き込み動作の性能の回復を前記ホストまたは前記ストレージアレイ内の他の一つ以上の半導体ストレージデバイスに通知するように構成されている請求項1記載のメモリシステム。
  5. 前記内部動作は、前記メモリシステムの過熱を防ぐ熱保護動作を含み、
    前記不揮発性メモリは、複数の不揮発性メモリチップを含み、
    前記コントローラは、
    前記メモリシステム内の温度センサによって検出される温度に基づいて、前記熱保護動作のために、並列動作される不揮発性メモリチップの数、または前記複数の不揮発性メモリチップが並列動作される第1期間と前記複数の不揮発性メモリチップが動作されない第2期間とを含む1サイクル内における前記第1期間の割合を制限し、
    前記制限された前記並列動作される不揮発性メモリチップの数または前記制限された前記第1期間の割合に基づいて、前記書き込み動作の性能低下の量を推定するように構成されている請求項1記載のメモリシステム。
  6. 前記内部動作は、前記メモリシステムの電力消費を前記メモリシステムに許容される最大電力以下に抑える電力制限動作を含み、
    前記不揮発性メモリは、複数の不揮発性メモリチップを含み、
    前記コントローラは、
    前記メモリシステムに許容される最大電力と、前記複数の不揮発性メモリチップの各々の電力消費量とに基づいて、前記電力制限動作のために、並列動作される不揮発性メモリチップの数、または前記複数の不揮発性メモリチップが並列動作される第1期間と前記複数の不揮発性メモリチップが動作されない第2期間とを含む1サイクル内における前記第1期間の割合を制限し、
    前記制限された前記並列動作される不揮発性メモリチップの数または前記制限された前記第1期間の割合に基づいて、前記書き込み動作の性能低下の量を推定するように構成されている請求項1記載のメモリシステム。
  7. 前記内部動作は、前記不揮発性メモリのガベージコレクション動作、前記メモリシステムの過熱を防ぐ熱保護動作、前記メモリシステムの電力消費を前記メモリシステムに許容される最大電力以下に抑える電力制限動作を含み、
    前記コントローラは、前記推定される前記書き込み動作の性能低下の量と、前記書き込み動作の性能低下の要因が前記ガベージコレクション動作、前記熱保護動作、または前記電力制限動作のいずれであるかを示す要因情報とを、前記ホストまたは前記ストレージアレイ内の他の一つ以上の半導体ストレージデバイスに通知するように構成されている請求項1記載のメモリシステム。
  8. 前記書き込み動作の性能低下の量は、前記内部動作の開始に起因する前記書き込み動作の低下後の性能、または前記内部動作に起因する前記書き込み動作の性能の低下量のいずれかを示す請求項1記載のメモリシステム。
  9. 複数の半導体ストレージデバイスに跨がってデータを分散させるストレージアレイ内の一つの半導体ストレージデバイスとして動作可能なメモリシステムであって、
    不揮発性メモリと、
    前記不揮発性メモリに電気的に接続され、ホストから受信されるデータを前記不揮発性メモリに書き込む書き込み動作と、前記メモリシステムを管理するための内部動作であって、前記不揮発性メモリのガベージコレクション動作、前記メモリシステムの過熱を防ぐ熱保護動作、および前記メモリシステムの電力消費を前記メモリシステムに許容される最大電力以下に抑える電力制限動作を含む内部動作とを実行するように構成されたコントローラとを具備し、
    前記コントローラは、
    前記内部動作が開始される場合に、前記開始される前記内部動作の内容に基づいて、前記内部動作の開始に起因する前記書き込み動作の性能低下の量を推定し、
    前記推定される前記書き込み動作の性能低下の量と、前記書き込み動作の性能低下の要因が前記ガベージコレクション動作、前記熱保護動作、または前記電力制限動作のいずれであるかを示す要因情報とを、前記ホストまたは前記ストレージアレイ内の他の一つ以上の半導体ストレージデバイスに通知するように構成されているメモリシステム。
  10. 複数の半導体ストレージデバイスに跨がってデータを分散させるストレージアレイ内の一つの半導体ストレージデバイスとして動作可能なメモリシステムの制御方法であって、
    ホストから受信されるデータを前記メモリシステム内の不揮発性メモリに書き込む書き込み動作を実行することと、
    前記メモリシステムを管理するための内部動作を実行することと、
    前記内部動作が開始される場合に、前記開始される前記内部動作の内容に基づいて、前記内部動作の開始に起因する前記書き込み動作の性能低下の量を推定することと、
    前記推定される前記書き込み動作の性能低下の量を、前記ホストまたは前記ストレージアレイ内の他の一つ以上の半導体ストレージデバイスに通知することとを具備する、制御方法。
  11. 前記内部動作は、前記不揮発性メモリのガベージコレクション動作、前記メモリシステムの過熱を防ぐ熱保護動作、前記メモリシステムの電力消費を前記メモリシステムに許容される最大電力以下に抑える電力制限動作のうちの、少なくとも一つを含む請求項10記載の制御方法。
  12. 前記内部動作は、前記不揮発性メモリのガベージコレクション動作、前記メモリシステムの過熱を防ぐ熱保護動作、前記メモリシステムの電力消費を前記メモリシステムに許容される最大電力以下に抑える電力制限動作を含み、
    前記通知することは、前記推定される前記書き込み動作の性能低下の量と、前記書き込み動作の性能低下の要因が前記ガベージコレクション動作、前記熱保護動作、または前記電力制限動作のいずれであるかを示す要因情報とを、前記ホストまたは前記ストレージアレイ内の他の一つ以上の半導体ストレージデバイスに通知することを含む請求項10記載の制御方法。
  13. 前記内部動作の終了によって前記書き込み動作の性能が回復される場合、前記書き込み動作の性能の回復を前記ホストまたは前記ストレージアレイ内の他の一つ以上の半導体ストレージデバイスに通知することをさらに具備する請求項10記載の制御方法。
JP2015249553A 2015-12-22 2015-12-22 メモリシステムおよび制御方法 Active JP6517684B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2015249553A JP6517684B2 (ja) 2015-12-22 2015-12-22 メモリシステムおよび制御方法
CN201610300709.2A CN106909313B (zh) 2015-12-22 2016-05-09 存储器系统及控制方法
CN202010047854.0A CN111241006B (zh) 2015-12-22 2016-05-09 存储阵列及控制方法
US15/209,579 US10175887B2 (en) 2015-12-22 2016-07-13 Memory system and method for controlling nonvolatile memory
US16/207,418 US10592117B2 (en) 2015-12-22 2018-12-03 Memory system and method for controlling nonvolatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015249553A JP6517684B2 (ja) 2015-12-22 2015-12-22 メモリシステムおよび制御方法

Publications (2)

Publication Number Publication Date
JP2017117054A JP2017117054A (ja) 2017-06-29
JP6517684B2 true JP6517684B2 (ja) 2019-05-22

Family

ID=59066241

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015249553A Active JP6517684B2 (ja) 2015-12-22 2015-12-22 メモリシステムおよび制御方法

Country Status (3)

Country Link
US (2) US10175887B2 (ja)
JP (1) JP6517684B2 (ja)
CN (2) CN106909313B (ja)

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102374668B1 (ko) * 2015-08-31 2022-03-17 삼성전자주식회사 전력 공급 중단의 경향에 따라 불휘발성 메모리를 다르게 관리하는 스토리지 장치
CN109298833B (zh) 2017-07-24 2021-05-04 三星电子株式会社 存储设备及对包括其的电子设备的温度控制
KR102414047B1 (ko) 2017-10-30 2022-06-29 에스케이하이닉스 주식회사 통합 메모리 디바이스 및 그의 동작 방법
US11544168B2 (en) * 2017-10-30 2023-01-03 SK Hynix Inc. Memory system
US10877898B2 (en) 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
US10331555B1 (en) * 2018-03-06 2019-06-25 Western Digital Technologies, Inc. Dynamic memory compaction
JP6901427B2 (ja) * 2018-03-27 2021-07-14 キオクシア株式会社 ストレージ装置、コンピュータシステムおよびストレージ装置の動作方法
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
JP2019215662A (ja) * 2018-06-12 2019-12-19 株式会社日立製作所 不揮発性メモリデバイス、及びインターフェース設定方法
US11816043B2 (en) 2018-06-25 2023-11-14 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of I/O requests
US10921992B2 (en) 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US10977122B2 (en) 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
US10970212B2 (en) 2019-02-15 2021-04-06 Alibaba Group Holding Limited Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones
US11061834B2 (en) 2019-02-26 2021-07-13 Alibaba Group Holding Limited Method and system for facilitating an improved storage system by decoupling the controller from the storage medium
CN109918352B (zh) * 2019-03-04 2021-11-05 北京百度网讯科技有限公司 存储器系统和存储数据的方法
CN109947678B (zh) * 2019-03-26 2021-07-16 联想(北京)有限公司 一种存储装置、电子设备及数据交互方法
US10891065B2 (en) 2019-04-01 2021-01-12 Alibaba Group Holding Limited Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive
US10922234B2 (en) 2019-04-11 2021-02-16 Alibaba Group Holding Limited Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US10908960B2 (en) * 2019-04-16 2021-02-02 Alibaba Group Holding Limited Resource allocation based on comprehensive I/O monitoring in a distributed storage system
US11169873B2 (en) 2019-05-21 2021-11-09 Alibaba Group Holding Limited Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11074124B2 (en) 2019-07-23 2021-07-27 Alibaba Group Holding Limited Method and system for enhancing throughput of big data analysis in a NAND-based read source storage
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
CN111026328B (zh) * 2019-11-13 2022-04-22 华为技术有限公司 一种能耗控制方法、装置及存储系统
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US11150986B2 (en) 2020-02-26 2021-10-19 Alibaba Group Holding Limited Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
JP7413908B2 (ja) 2020-04-21 2024-01-16 富士通株式会社 ストレージ制御装置およびバックアップ制御プログラム
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
TWI746101B (zh) * 2020-08-03 2021-11-11 宏碁股份有限公司 電子裝置及其固態硬碟的溫度控制方法
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11467942B2 (en) 2020-12-16 2022-10-11 Western Digital Technologies, Inc. Predictive performance indicator for storage devices
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11507502B2 (en) * 2021-02-23 2022-11-22 Western Digital Technologies, Inc. Data storage device performance prediction based on valid fragment count
JP2022146519A (ja) * 2021-03-22 2022-10-05 キオクシア株式会社 メモリシステム、情報処理システム、およびホスト装置
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11651834B2 (en) 2021-05-11 2023-05-16 Micron Technology, Inc. Memory duty-cycle skew management
US11626180B2 (en) 2021-05-11 2023-04-11 Micron Technology, Inc. Memory degradation detection and management
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
KR20230001438A (ko) * 2021-06-28 2023-01-04 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11698731B2 (en) * 2021-08-06 2023-07-11 Micron Technology, Inc. Performance throttling based on power-off time
KR102537770B1 (ko) * 2022-06-08 2023-05-30 삼성전자주식회사 기입 스로틀링을 이용한 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008276568A (ja) * 2007-04-27 2008-11-13 Toshiba Corp 情報処理装置、およびプロセッサ回路の制御方法
US20100057976A1 (en) * 2008-08-26 2010-03-04 Menahem Lasser Multiple performance mode memory system
JP5159817B2 (ja) * 2010-03-25 2013-03-13 株式会社東芝 メモリシステム
US8725931B1 (en) * 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
JP5596143B2 (ja) * 2010-06-29 2014-09-24 パナソニック株式会社 不揮発性記憶システム、メモリシステム用の電源回路、フラッシュメモリ、フラッシュメモリコントローラ、および不揮発性半導体記憶装置
JP2012018648A (ja) * 2010-07-09 2012-01-26 Toshiba Corp メモリシステム
US8713268B2 (en) * 2010-08-05 2014-04-29 Ut-Battelle, Llc Coordinated garbage collection for raid array of solid state disks
US8984216B2 (en) * 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
US8724389B2 (en) 2012-07-26 2014-05-13 Ocz Storage Solutions, Inc. Non-volatile solid state memory-based mass storage device and methods thereof
JP6111575B2 (ja) * 2012-09-19 2017-04-12 富士通株式会社 ストレージ装置、内部処理制御方法および内部処理制御プログラム
JP5949408B2 (ja) * 2012-10-02 2016-07-06 富士通株式会社 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
US9355024B2 (en) * 2012-10-10 2016-05-31 Apple Inc. Systems and methods for nonvolatile memory performance throttling
JP6063759B2 (ja) * 2013-01-28 2017-01-18 ローム株式会社 半導体記憶装置
US9213610B2 (en) 2013-06-06 2015-12-15 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Configurable storage device and adaptive storage device array
KR102072829B1 (ko) * 2013-06-14 2020-02-03 삼성전자주식회사 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법
US9329992B2 (en) * 2013-12-04 2016-05-03 Silicon Motion, Inc. Data storage device and flash memory control method
TW201533657A (zh) * 2014-02-18 2015-09-01 Toshiba Kk 資訊處理系統及記憶體系統
US9489146B2 (en) 2014-12-09 2016-11-08 Sandisk Technologies Llc Memory system and method for selecting memory dies to perform memory access operations in based on memory die temperatures
JP6517685B2 (ja) 2015-12-22 2019-05-22 東芝メモリ株式会社 メモリシステムおよび制御方法

Also Published As

Publication number Publication date
CN106909313A (zh) 2017-06-30
US10592117B2 (en) 2020-03-17
US20190102086A1 (en) 2019-04-04
JP2017117054A (ja) 2017-06-29
CN106909313B (zh) 2020-02-14
US20170177217A1 (en) 2017-06-22
CN111241006A (zh) 2020-06-05
US10175887B2 (en) 2019-01-08
CN111241006B (zh) 2023-11-21

Similar Documents

Publication Publication Date Title
JP6517684B2 (ja) メモリシステムおよび制御方法
JP6517685B2 (ja) メモリシステムおよび制御方法
US10713161B2 (en) Memory system and method for controlling nonvolatile memory
US10789162B2 (en) Memory system and method for controlling nonvolatile memory
US10191688B2 (en) Memory system and information processing system
KR102098697B1 (ko) 비휘발성 메모리 시스템, 이를 포함하는 시스템 및 상기 비휘발성 메모리 시스템의 적응적 사용자 저장 영역 조절 방법
KR102094236B1 (ko) 스토리지 디바이스 및 컴퓨터 시스템
TW202046116A (zh) 儲存系統
JP2018049523A (ja) メモリシステムおよび制御方法
JP6094677B2 (ja) 情報処理装置、メモリダンプ方法、およびメモリダンププログラム
KR20210016184A (ko) 스토리지 장치, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법
JP2019169101A (ja) 電子機器、コンピュータシステム、および制御方法
JP2020046752A (ja) 記憶装置及び情報処理システム
JP6721765B2 (ja) メモリシステムおよび制御方法
JP6666405B2 (ja) メモリシステムおよび制御方法
JP6552701B2 (ja) メモリシステムおよび制御方法
KR20230040057A (ko) 시스템의 읽기 성능을 개선하기 위한 장치 및 방법

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20170531

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180201

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180830

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180919

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181002

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190418

R150 Certificate of patent or registration of utility model

Ref document number: 6517684

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350