JP6666813B2 - 記憶装置及びその制御方法 - Google Patents

記憶装置及びその制御方法 Download PDF

Info

Publication number
JP6666813B2
JP6666813B2 JP2016164016A JP2016164016A JP6666813B2 JP 6666813 B2 JP6666813 B2 JP 6666813B2 JP 2016164016 A JP2016164016 A JP 2016164016A JP 2016164016 A JP2016164016 A JP 2016164016A JP 6666813 B2 JP6666813 B2 JP 6666813B2
Authority
JP
Japan
Prior art keywords
storage device
priority
log
activation
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
JP2016164016A
Other languages
English (en)
Other versions
JP2018032220A (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
Kioxia 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 Kioxia Corp filed Critical Kioxia Corp
Priority to JP2016164016A priority Critical patent/JP6666813B2/ja
Priority to US15/685,269 priority patent/US10649891B2/en
Publication of JP2018032220A publication Critical patent/JP2018032220A/ja
Priority to JP2020027984A priority patent/JP6895551B2/ja
Application granted granted Critical
Publication of JP6666813B2 publication Critical patent/JP6666813B2/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/0608Saving storage space on 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/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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/7207Details relating to flash memory management management of metadata or control data

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)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明の実施形態は、記憶装置及びその制御方法に関する。
記憶装置の起動時には単位容量ごとに必要となる初期化処理が存在するが、近年の記憶装置の大容量化によって、記憶装置全体として必要になる初期化処理の量が増大し、起動時間が長くなってきている。また、記憶装置の論理アドレス空間を複数の部分空間に分割して管理する技術が普及している。
特開2009−176200号公報
本発明が解決しようとする課題は、起動時間を短縮することができる記憶装置及びその制御方法を提供することである。
上記課題を達成するために、実施形態の記憶装置は、ユーザデータを記憶する不揮発性半導体メモリを有する。また、ホスト装置と通信し、不揮発性半導体メモリへのユーザデータの書き込み動作及び読み出し動作を制御するコントローラを有する。コントローラは、ユーザデータに対応付けられる論理アドレスの空間を複数の部分空間に分けて管理する。コントローラは、記憶装置の起動に際して必要となる起動情報であって、論理アドレスと不揮発性半導体メモリの物理アドレスとの変換に必要な情報を、部分空間ごとの起動優先順位が識別可能となるように管理する。
実施形態の記憶装置の構成を説明するブロック図である。 実施形態の物理ページ及び物理ブロックの構成を説明する図である。 実施形態の論理ページ及び論理ブロックの構成を説明する図である。 実施形態で部分空間に分割される論理アドレス空間を説明する図である。 実施形態のメモリ構成を説明する図である。 実施形態における翻訳情報を使用したユーザデータのリード・ライトの制御を説明する図である。 実施形態の位置情報のデータ構造の一例を説明する図である。 実施形態のログの一例を説明する図である。 実施形態のログ領域の割り当て方法の第1の例を説明する図である。 実施形態のログ領域の割り当て方法の第2の例を説明する図である。 実施形態のログ領域の割り当て方法の第3の例を説明する図である。 実施形態のログ領域の割り当て方法の第4の例を説明する図である。 実施形態のNS管理表の構成を説明する図である。 実施形態で位置情報を復元する動作を説明する図である。 実施形態における翻訳情報のRAMへのキャッシュ動作を説明する図である。 実施形態におけるホストへの起動完了報告の一例を説明する図である。 実施形態の起動時におけるFWの制御を説明するフローチャートである。 実施形態における起動優先順位を指定するコマンドの動作の一例を説明する図である。 実施形態におけるネームスペースごとの起動優先順位と起動完了報告の一例を説明する図である。 実施形態におけるネームスペースごとの起動優先順位と起動完了報告の別の一例を説明する図である。 実施形態において指定起動優先順位に重複があった場合の動作の一例を説明する図である。 実施形態において指定起動優先順位に重複があった場合の動作の別の一例を説明する図である。 実施形態において起動優先順位指定コマンドを受信した時のFWの制御を説明するフローチャートである。 実施形態における起動優先順位を問い合わせるコマンドの動作の一例を説明する図である。
以下、実施形態の記憶装置を、図面を参照して説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。
図1は、実施形態の記憶装置の構成を説明するブロック図である。
記憶装置1は、記憶装置1全体を制御するコントローラ10と、データを記憶する不揮発性記憶媒体20と、各種情報群を一時的に格納するとともに、ホスト2と不揮発性記憶媒体20との間でデータを一時的に格納するバッファとして使用されるRAM(Random Access Memory)30と、FW(Firmware)に基づき記憶装置1全体を制御するCPU(Central Processing Unit)40と、を含む。
本実施形態の説明では、ホスト2はNVMe(NVM Express)(登録商標)規格のインターフェースをサポートするコンピュータであるが、その他の規格、例えばSAS(Serial Attached SCSI)規格、SATA(Serial ATA)規格のインターフェースをサポートするコンピュータであってもよい。
コントローラ10は、例えばSoC(System on a Chip)として構成される半導体集積回路である。
本実施形態では、不揮発性記憶媒体20はNAND型フラッシュメモリであり、複数のNAND型フラッシュメモリチップ100(以下、メモリチップ100と称する)を含んで構成されるが、磁気ディスクなど他の種類の不揮発性記憶媒体でもよい。以下では不揮発性記憶媒体20をNAND型フラッシュメモリ20と称する(以下、単にNANDとも称する)。また、本実施形態のNAND型フラッシュメモリ20は、例えば、16チャネル(Ch)のメモリチップ100を有する。以下では、メモリチップ100のそれぞれをメモリチップCh0〜メモリチップCh15と表記する。なお、チャネル数は16より多くても少なくてもよい。
本実施形態では、RAM30はDRAM(Dynamic Random Access Memory)であるが、SRAM(Static Random Access Memory)など他の種類の揮発性メモリを採用してもよい。
なお、RAM30及びCPU40は、別個の半導体集積回路とせずにコントローラ10に内蔵されていてもよい。また、以下の説明においてFWにより実行される機能の一部又は全部は、専用のHW(Hardware)によっても実行可能であり、HWにより実行される機能の一部又は全部を、FWによって実行することも可能である。
コントローラ10は、ホスト2との通信制御や複数接続されるホスト2の管理を行うホストインターフェース(IF)制御部200と、RAM30のリード・ライトを制御するバッファ制御部210と、NAND型フラッシュメモリ20のリード・ライトを制御するNAND制御部220と、を含む。ホストIF制御部200は、FWに基づくCPU40の指示により、ホスト2から受信した各種コマンドの実行結果をホスト2に報告することができる。
次に、図2a及び図2bを参照して、メモリチップ100の物理ページ300及び物理ブロック310の構成を説明する。
図2aに示すように、メモリチップ100に対するデータのリード・ライトにおける最小管理単位はクラスタ320と呼ばれる。本実施形態ではクラスタ320の大きさは4kBである。また、メモリチップ100の内部で一度にデータのリード・ライトが可能な最小の回路構成の単位は物理ページ300と呼ばれる。本実施形態では物理ページ300の大きさは16クラスタ(4kB×16クラスタ=64kB)である。
また、図2bに示すように、メモリチップ100のデータのイレースが可能な最小の回路構成の単位は物理ブロック310と呼ばれる。本実施形態では物理ブロック310の大きさは256クラスタ、すなわち16物理ページ(64kB×16物理ページ=1024kB)である。なお、これら各単位のサイズは一例であり、これらの値に限定されるものではない。
次に、図3a及び図3bを参照して、論理ページ400及び論理ブロック410の構成を説明する。
本実施形態では、図3aに示すように、メモリチップCh0〜Ch15それぞれの1つの物理ページ300を含む集合を論理ページ400とする。コントローラ10は、論理ページ400を論理的な単位として、NAND型フラッシュメモリ20へのデータのリード・ライトを制御する。また、図3bに示すように、コントローラ10は16個の論理ページ400分のデータである論理ブロック410を論理的な単位として、NAND型フラッシュメモリ20のデータのイレースを制御する。すなわち、コントローラ10はメモリチップ100のデータのイレースの最小単位である物理ブロック310ごとではなく、論理ブロック410ごとにイレース処理を行う。
次に、図4を参照して、部分空間について説明する。
記憶装置1がホスト2に提供する論理アドレス(Logical Block Address、LBA)と、ユーザデータが記憶されるNAND型フラッシュメモリ20の物理アドレスは、1対1に対応する。ここで、ユーザデータとは、ホスト2からライト要求と共に送信されてくるデータを指す。以下では、物理アドレスと1対1に対応する論理アドレスをドライブLBAと称する。
また、ドライブLBAは複数の部分空間に分割されてホスト2に提供される。NVMe規格においては部分空間はネームスペースと呼ばれ、SCSI規格においては部分空間はLogical Unitと呼ばれる。以下では、部分空間をネームスペースと称する。ネームスペースのそれぞれはネームスペースID(NSID)によって識別される。本実施形態では、ドライブLBAはNSID0〜NSIDnとして識別される(n+1)個のネームスペースに分割されている。
各ネームスペースは、ホスト2からは独立した記憶領域として扱うことができ、記憶装置1のドライブLBAは、NSIDと、ネームスペースごとに0から始まるホストLBAによって指定される。ここで、ホストLBAとは、記憶装置1のデータの記憶先を指定するために、ホスト2がコマンド発行時に指定する論理アドレスである。
コマンドで指定されたホストLBAとドライブLBAとの変換はホストIF制御部200が行う。例えば図4に示すように、ホスト2がNSID2のホストLBA=0をアクセスする場合、ホストIF制御部200はドライブLBA=Bがアクセスされたものとして取り扱う。
各ネームスペースはホスト2からのコマンドによって生成される。すなわち、ホスト2は記憶装置1にコマンドを発行し、生成したいネームスペースのNSIDと、そのネームスペースに割り当てたい記憶容量を指定する。なお、ドライブLBAのすべてにネームスペースを割り当てず、ネームスペースが割り当てられない空き領域があってもよい。
また、記憶装置1が複数のホスト2と接続される場合は、各ホスト2からアクセス可能なネームスペースを制限してもよい。例えば、ホスト#0はNSID0とNSID2のみをアクセス可能とし、ホスト#1はNSID3のみをアクセス可能とすることができる。
次に、図5を参照して、本実施形態のメモリ構成を説明する。
NAND型フラッシュメモリ20には、ユーザデータ500、翻訳情報群520a、ログ530、NS管理表540が記憶される。
翻訳情報群520aは翻訳情報510aを含み、各翻訳情報510aはドライブLBAと物理アドレスとの対応関係を示す情報である。ログ530は、ドライブLBAと物理アドレスとの対応関係の変更を記録するためのログである。NS管理表540は、ネームスペースごとの起動優先順位などを管理するためのテーブルである。
コントローラ10は、ユーザデータ500が記憶される(n+1)個のユーザデータ領域、翻訳情報群520aが記憶される翻訳情報群領域、ログ530が記憶される(m+1)個のログ領域、及び、NS管理表540が記憶されるNS管理表領域、を含んでNAND型フラッシュメモリ20を管理している。各ユーザデータ領域は各ネームスペースと1対1に対応している。各ログ領域には1つのネームスペースが対応するが、各ネームスペースが複数のログ領域と対応してもよい。すなわち、例えば、ログ領域0がNSID0とNSID1との両方に対応することはないが、NSID0がログ領域0とログ領域1とに対応してもよい。
コントローラ10は、1つの論理ページ400を、ユーザデータ領域とログ領域の両方を含むものとして管理するが、ユーザデータ領域専用の論理ページ400や、ログ領域専用の論理ページ400が存在してもよい。
なお、コントローラ10が、ホストLBAと、各ネームスペースに対応するドライブLBAとの関係を認識できるのであれば、コントローラ10は、ネームスペースと1対1に対応させてユーザデータ領域を管理しなくてもよい。例えば、1つのユーザデータ領域に複数のネームスペースのユーザデータ500を記憶させ、ネームスペースごとに割り当てられたログ領域に当該ネームスペースのログ530を記憶させてもよい。
また、コントローラ10が、ログ領域をネームスペースに対応させて管理するのではなく、ログ領域に記憶されるログ530にNSIDを含ませてもよい。この場合は、以下の説明において、例えばNSID0に対応するログ領域とは、NSID0を有するログ530が記憶されるログ領域の集合を指す。
RAM30には、NAND型フラッシュメモリ20の翻訳情報群領域から各翻訳情報510aがコピーされて、翻訳情報(キャッシュ)510bとして格納される。以下では、RAM30内に格納された翻訳情報(キャッシュ)510bの集合を翻訳情報群(キャッシュ)520bと称する。また、RAM30にはネームスペースごとの位置情報群550が格納される。詳細については後述するが、位置情報群550は位置情報560を含み、各位置情報560は翻訳情報510a及び翻訳情報(キャッシュ)510bの格納先を示す情報を記録する。
次に、図6を参照して、翻訳情報510を使用したホストLBAから物理アドレスへの変換について説明する。本実施形態においては、翻訳情報群520a内の翻訳情報510aと、翻訳情報群(キャッシュ)520b内の翻訳情報(キャッシュ)510bは、同一のデータ構造を有する。なお、翻訳情報510aと翻訳情報(キャッシュ)510bとが同一の内容を表すのであれば、翻訳情報510aと翻訳情報(キャッシュ)510bとのデータ構造は異なっていてもよい。例えば、翻訳情報510aには圧縮された翻訳情報データを格納してもよい。
図6及び以下の説明では、翻訳情報群520aと翻訳情報群(キャッシュ)520bとを総称して翻訳情報群520と表記し、翻訳情報510aと翻訳情報(キャッシュ)510bとを総称して翻訳情報510と表記している。
記憶装置1がホスト2よりコマンドを受領すると(S100)、ホストIF制御部200は当該コマンドからNSID及びホストLBAを抽出し(S101)、これらを用いてドライブLBAを算出する(S102)。
本実施形態においては、各翻訳情報510には、NAND型フラッシュメモリ20の物理アドレスが記録され、各翻訳情報510はユーザデータ500に対応付けられるドライブLBAの順で配列されている。すなわち、CPU40がFWに基づいて、ドライブLBAをインデックスとして翻訳情報群520を検索することで、各ユーザデータ500に対応付けられる物理アドレスを取得することができる(S103)。なお、各翻訳情報は、CPU40が各ドライブLBAと各翻訳情報の対応関係を認識できるのであれば、ドライブLBAの順に配列されていなくてもよい。
なお、本実施形態においては、ユーザデータ500と対応付けられていないドライブLBAに対応する翻訳情報510には、“アンマップ(Unmapped)”を示す情報が記録される。また、1つの翻訳情報510に、複数のドライブLBAと複数の物理アドレスとの対応関係を記録してもよい。
各翻訳情報510は、記憶装置1が動作するための電力が供給されていない間はNAND型フラッシュメモリ20内に格納されている。NAND型フラッシュメモリ20へのアクセスはRAM30へのアクセスに比べて遅いのが一般的であるため、記憶装置1への電力供給後なるべく速やかに各翻訳情報510をRAM30にコピー(キャッシュ)することが望ましい。なお、電力供給後に直ちにコピーするのではなく、対応するドライブLBAへのアクセスをトリガーとして、翻訳情報510をRAM30にコピーしてもよい。
次に、図7を参照して、RAM30における位置情報群550のデータ構造の一例を説明する。
図7には、NSID0の位置情報群550が示されているが、他のネームスペースの位置情報群550も同様の構成である。位置情報群550は複数の位置情報560を備えている。各位置情報560は1つの翻訳情報510と1対1で対応し、各翻訳情報510が格納されている場所(すなわちキャッシュとして使用されるRAM30又はNAND型フラッシュメモリ20)、及び、その物理アドレスが記録されている。
各位置情報560は、対応する翻訳情報510と同じ順序、すなわちユーザデータ500に対応付けられるドライブLBAの順序で配列されている。従って、CPU40がドライブLBAをインデックスとして位置情報群550を検索することで、各ユーザデータ500に対応する翻訳情報510が記憶されているRAM30又はNAND型フラッシュメモリ20の物理アドレスを取得することができる。
図7の例では、NSID0のホストLBA「L0」に対応するドライブLBAは「La」であり、これに対応する位置情報560は、NAND型フラッシュメモリ20の物理アドレス「Pb」である。NAND型フラッシュメモリ20の物理アドレス「Pb」の領域には、翻訳情報510aとしてNAND型フラッシュメモリ20の「物理アドレス=Pa」が記憶されている。すなわち、NSID0のホストLBA「L0」に対応するユーザデータ1は、NAND型フラッシュメモリ20の物理アドレス「Pa」の領域に記憶されていることになる。
また、NSID0のホストLBA「L1」に対応するドライブLBAは「Lc」であり、これに対応する位置情報560は、RAM30の物理アドレス「Pd」である。RAM30の物理アドレス「Pd」の領域には、翻訳情報(キャッシュ)510bとしてNAND型フラッシュメモリ20の「物理アドレス=Pc」が記憶されている。すなわち、NSID0のホストLBA「L1」に対応するユーザデータ2は、NAND型フラッシュメモリ20の物理アドレス「Pc」の領域に記憶されていることになる。
次に、図8を参照して、ログ530の一例を説明する。
図8に示す例では、NSID0のホストLBA「L1」に対応するドライブLBAは「Lc」であり、図8の初期状態では、ドライブLBA「Lc」に対応するユーザデータ2がNAND型フラッシュメモリ20の物理アドレス「Pc」の領域に記憶されている。また、ドライブLBA「Lc」と物理アドレス「Pc」との関連を示す翻訳情報(キャッシュ)510bは、RAM30の物理アドレス「Pd」に格納されている。
この状態で、ホスト2からNSID0のホストLBA「L1」へのライト要求とともに、ユーザデータ3が送られてくる。この時、CPU40は、ユーザデータ3を、NAND型フラッシュメモリ20の有効データが記憶されていない物理アドレス「Pe」の領域に記憶させるようにコントローラ10を制御する(S200)。また、CPU40は、RAM30の物理アドレス「Pf」に新たな翻訳情報(キャッシュ)510b(物理アドレス「Pe」)を追加する(S201)。CPU40は、ドライブLBA「Lc」に対応する位置情報560をRAM30の物理アドレス「Pd」から「Pf」に書き換える(S202)。
追加された翻訳情報(キャッシュ)510b(物理アドレス「Pe」)は、遅くとも記憶装置1への電力供給が断たれるまでに、NAND型フラッシュメモリ20の翻訳情報群520aに保存される(S203)。ここでは、ドライブLBA「Lc」に対応する翻訳情報(キャッシュ)510b(物理アドレス「Pe」)は、NAND型フラッシュメモリ20の物理アドレス「Pk」に保存されるものとする。
CPU40は、ドライブLBA「Lc」に対応する翻訳情報(キャッシュ)510bが物理アドレス「Pk」に保存されたことを示すログ530を、ログ領域0に記憶させる(S204)。
各ログ領域0〜mには、各ネームスペースに対応する翻訳情報(キャッシュ)510bの保存に伴い、順にログ530が記憶される。各ログ領域0〜m内には、ログ530が古いものから新しいものへと時系列で格納されている。各ログ領域0〜mには、前述したように、1つのネームスペースのログ530のみを記憶し、複数のネームスペースのログ530が1つのログ領域内に混在することはない。このログ530は、後述するように、記憶装置1の起動時に位置情報群550の復元に用いられる。
なお、例えば記憶装置1への電力供給が断たれる時に、すべてのログ530がログ領域へ一度に記憶されなくともよい。例えば、翻訳情報(キャッシュ)510bの複数回分の保存に伴うログ530の大きさの合計が1論理ページ分になるごとに、ログ530が記憶されてもよい。この場合には、CPU40は、ログ530に反映されていない翻訳情報(キャッシュ)510bの保存があることを、例えば翻訳情報(キャッシュ)510bのそれぞれにフラグを付加して管理する必要がある。
次に、図9a及び図9bを参照して、1つの論理ブロック410を1つのログ領域に割り当てる動作の一例を説明する。図9aの1つのログ530は、1論理ページ分のログ530の集合を示している。
ログ530は、ネームスペースごとに論理ブロック410を単位としてまとめられ、各論理ブロック410内の論理ページ400の番号の順に記憶される。図9aに示す例では、論理ブロック#0がログ領域0として割り当てられ、ここにはNSID0のログ530が記憶されている。また、論理ブロック#1はログ領域1として割り当てられ、ここにはNSID2のログ530が記憶されている。さらに、論理ブロック#2にはログ領域2としてNSID1のログ530が記憶され、論理ブロック#3にはログ領域3としてNSID0のログ530が記憶され、論理ブロック#4にはログ領域4としてNSID1のログ530が記憶されている。
この結果、図9bに示すように、NSID0のログ530を記憶している論理ブロック410の番号(ログブロック番号)は#0と#3に、NSID1のログブロック番号は#2と#4に、NSID2のログブロック番号は#1に、それぞれなっている。
次に、図10a及び図10bを参照して、1つの論理ブロック410を複数の領域に分割し、分割された各領域を1つのログ領域に割り当てる動作の一例を説明する。図10aにおいても図9aと同様に、1つのログ530は、1論理ページ分のログ530の集合を示している。
各論理ブロック410は、8つの論理ページ400ごとに1つのログ領域として割り当てられる。以下、論理ページ#0〜論理ページ#7の集合をLower Page、論理ページ#8〜論理ページ#15の集合をUpper Pageと称する。なお、1つのログ領域として割り当て可能な論理ページ400の数は、8に限られない。
図10aに示す例では、論理ブロック#0のLower Pageがログ領域0として割り当てられ、ここにはNSID0のログ530が記憶されている。論理ブロック#0のUpper Pageはログ領域1として割り当てられ、ここにはNSID2のログ530が記憶されている。論理ブロック#1のLower Pageはログ領域2として割り当てられ、ここにはNSID0のログ530が記憶されている。論理ブロック#1のUpper Pageはログ領域3として割り当てられ、ここにはNSID1のログ530が記憶されている。
この結果、図10bに示すように、NSID0のログ530を記憶している論理ブロック410の番号(ログブロック番号)は#0(L)と#1(L)に、NSID1のログブロック番号は#1(U)、NSID2のログブロック番号は#0(U)に、それぞれなっている。
次に、図11a及び図11bを参照して、各論理ブロック410のうちの1つの論理ページ400を含む集合を、1つのネームスペースのログ領域として割り当てる動作の一例を説明する。図11aにおいても図9aと同様に、1つのログ530は、1論理ページ分のログ530の集合を示している。
ログ530は、ネームスペースごとに、各論理ブロック410内の固定された位置(番号)の論理ページ400に記憶される。例えば、各論理ブロック410の論理ページ#0を、ログ領域0としてNSID0のログ530の記憶用に割り当てる。また、各論理ブロック410の論理ページ#1を、ログ領域1としてNSID1のログ530の記憶用に割り当てる。さらに、各論理ブロック410の論理ページ#2を、ログ領域2としてNSID2のログ530の記憶用に、各論理ブロック410の論理ページ#3を、ログ領域3としてNSID3のログ530の記憶用に、それぞれ割り当てる。
図11aに示す例では、NSID0のログ530は論理ブロック#0〜#4の論理ページ#0に、NSID1のログ530は論理ブロック#0〜#2の論理ページ#1に、NSID2のログ530は論理ブロック#0〜#2の論理ページ#2に、NSID3のログ530は論理ブロック#0〜#3の論理ページ#3に、それぞれ記憶されている。
この結果、図11bに示すように、NSID0のログ530を記憶する論理ブロック410の番号(ログブロック番号)は#0〜#4に、NSID1のログブロック番号は#0〜#2に、NSID2のログブロック番号は#0〜#2に、NSID3のログブロック番号は#0〜#3に、それぞれなっている。
なお、上記では各論理ブロック410のうちの1つの論理ページ400を含む集合を1つのログ領域として割り当てたが、各論理ブロック410のうちの複数の論理ページ400を含む集合を1つのログ領域として割り当てることも可能である。例えば、各論理ブロック410の論理ページ#0と論理ページ#1をログ領域0としてNSID0のログ530の記憶用に割り当て、各論理ブロック410の論理ページ#2と論理ページ#3をログ領域1としてNSID1のログ530の記憶用に割り当て、各論理ブロック410の論理ページ#4と論理ページ#5をログ領域2としてNSID2のログ530の記憶用に割り当て・・・、としてもよい。
次に、図12a及び図12bを参照して、1つの論理ページ400を複数の領域に分割し、分割された各領域を1つのログ領域に割り当てる動作の一例を説明する。図12aにおいては、1つのログ530はログ530の集合を示すものではない。各論理ページ400は、最大16個のログ530を記憶できるものとする。
図12aに示す例では、論理ページ#0のアドレスPaから始まる領域がログ領域0として割り当てられ、ここにはNSID0のログ530が8個記憶されている。論理ページ#0のアドレスPbから始まる領域はログ領域1として割り当てられ、ここにはNSID2のログ530が2個記憶されている。論理ページ#0のアドレスPcから始まる領域はログ領域2として割り当てられ、ここにはNSID1のログ530が4個記憶されている。
また、論理ページ#1のアドレスPdから始まる領域はログ領域0として割り当てられ、ここにはNSID0のログ530が4個記憶されている。論理ページ#1のアドレスPeから始まる領域はログ領域3として割り当てられ、ここにはNSID3のログ530が7個記憶されている。
この結果、図12bに示すように、NSID0のログ530を記憶している論理ページ400の番号(ログページ番号)は#0(開始アドレス=Pa、長さ=8)と#1(開始アドレス=Pd、長さ=4)に、NSID1のログページ番号は#0(開始アドレス=Pc、長さ=4)に、NSID2のログページ番号は#0(開始アドレス=Pb、長さ=2)に、NSID3のログページ番号は#1(開始アドレス=Pe、長さ=7)に、それぞれなっている。図12bに示すような各ログ領域の開始アドレス及び長さの情報は、ヘッダ情報として論理ページ400内に記憶されてもよい。
なお、上記では各論理ページ400のログ領域を複数の領域に分け、それぞれにネームスペースごとのログ530が記憶される動作を説明した。これに対しユーザデータ500の記憶では、各論理ページ400のユーザデータ領域を複数の領域に分け、それぞれにネームスペースごとのユーザデータ500が記憶されてもよく、論理ページ400の1つのユーザデータ領域内に複数のネームスペースのユーザデータ500が記憶されてもよい。
次に、図13を参照して、NS管理表540の構成を説明する。
NS管理表540には、位置情報群550が格納されているRAM30の物理アドレス、ログ530が記憶されている論理ブロック410の番号(ログブロック番号)、及び、後述する起動優先順位が、ネームスペースごとに記録されている。
NS管理表540は、記憶装置1が動作するための電力が供給されていない間はNAND型フラッシュメモリ20に格納されているが、記憶装置1への電力供給後は、他の情報に先立ってRAM30内、又は、CPU40内もしくはコントローラ10内の図示しないメモリ領域にコピーされる。
なお、図11aのように各論理ブロック410内の固定された位置(番号)の論理ページ400をログ領域として割り当てる場合においても、ログ領域として割り当てる論理ページ番号をあらかじめネームスペースごとに固定しておけば、ログ530を記憶している論理ページ番号をNS管理表540に記録しないでもよい。
また、ログ領域を図12のように割り当てる場合には、NS管理表540にはログブロック番号ではなくログページ番号が記録される。または、上述したようにヘッダ情報が論理ページ400内に記憶される場合には、NS管理表540にはログブロック番号が記録されてもよい。この場合には、CPU40は、ログ530の読み出し時にヘッダ情報を読み取ることで、各論理ブロック410内のどのアドレスに、どのネームスペースのログ530が記憶されているのかを判断することができる。
次に、図14を参照して、記憶装置1の起動時に位置情報群550を復元する動作を説明する。
記憶装置1の起動時、CPU40は、NS管理表540から起動優先順位を読み出し、起動優先順位の高いネームスペースから、ログブロック番号に従ってログ530を読み出す。前述したように、ログ530は翻訳情報(キャッシュ)510bの保存順に記憶されている。このため、ログ530をその記憶順に読み出すことで、一部のドライブLBAに対応する最新の位置情報560を復元することができる。
図14に示す例では、CPU40は、ログ領域0内のログ530をその記憶順に読み出し、ドライブLBA「La」に対応するログ530Aより位置情報560Aとして物理アドレス「Pb」を復元する。また、ドライブLBA「Lc」に対応するログ530Bより位置情報560Cとして物理アドレス「Pd」を復元する。なお、この位置情報560Cは、後述するように後の動作で上書きされる。次に、ドライブLBA「Lb」に対応するログ530Cより位置情報560Dとして物理アドレス「Pc」が復元される。次に読み出されるログ530Dには、ドライブLBA「Lc」に対応する物理アドレス「Pf」が記録されている。この場合、位置情報560Cは、物理アドレス「Pd」から物理アドレス「Pf」に上書きされる。その後に読み出されるログ530Eには、ドライブLBA「Lf」に対応する物理アドレス「Pe」が記録されており、位置情報560Dは物理アドレス「Pe」として復元される。
この時点では、各翻訳情報510はNAND型フラッシュメモリ20からRAM30にまだコピーされていないので、復元された各位置情報560において各翻訳情報510が格納されている場所は、NAND型フラッシュメモリ20となる。
なお、ログ530を、その記憶順とは逆の順に読み出しても、一部のドライブLBAに対応する最新の位置情報560を復元することができる。この場合は、同一のドライブLBAに対応する、後から読み出されるログ530に記録されている物理アドレスは、位置情報560に反映されない。図14に示す例では、ドライブLBA「Lc」に対応するログ530は、ログ530Dが先に読み出され、ログ530Bが後から読み出される。位置情報560Cには、ログ530Dに記録されている物理アドレス「Pf」が反映され、ログ530Bに記録されている物理アドレス「Pd」は反映されない。
また、ログ領域がネームスペースごとに管理されていない場合には、CPU40は、ログ530に含まれるNSIDによって、いずれのネームスペースに対応するログ530であるのかを判断する。この場合、読み出したログ530が復元対象のネームスペースに対応するものであれば、CPU40は、そのログ530を位置情報群550の復元に用いる。一方、読み出したログ530が復元対象のネームスペースに対応するものでなければ、CPU40は、そのログ530を使用せず、次のログ530の読み出しを行う。
本実施形態においては、NS管理表540の起動優先順位に従いネームスペースごとに位置情報群550が復元される。すなわち、記憶装置1の起動後、CPU40は起動優先順位が最も高いネームスペースの位置情報群550を最初に復元する。これが完了すると、CPU40は起動優先順位が次に高いネームスペースの位置情報群550の復元を順次開始する。
あるネームスペースのログ530がすべて読み出され、位置情報群550の復元が完了すると、そのネームスペースについてはユーザデータ500のリード・ライトが可能になる。すなわち、本実施形態においては、位置情報群550の復元が完了することによりそのネームスペースの起動が完了するので、各ログ530が、当該ネームスペースの起動情報であると考えることができる。
なお、翻訳情報510をNAND型フラッシュメモリ20に保存する際に、ネームスペースごとに分けて保存してもよい。この場合は、記憶装置1の起動後、あるネームスペースの位置情報群550の復元、及び、当該ネームスペースの翻訳情報510のRAM30へのコピーの完了により、当該ネームスペースの起動完了となる。
次に、図15を参照して、翻訳情報510のRAM30へのキャッシュ動作を説明する。
本実施形態では、すべてのネームスペースについての位置情報群550の復元が完了した後、翻訳情報510aがNAND型フラッシュメモリ20から、翻訳情報(キャッシュ)510bとしてRAM30にコピーされる。翻訳情報510のRAM30へのコピー完了に伴い、これに対応する位置情報560の参照先はRAM30となる。
なお、記憶装置全体の位置情報群550の復元が完了した後に翻訳情報510をRAM30がコピーされてもよく、あるネームスペースの位置情報群550の復元が完了するごとに、当該ネームスペースの翻訳情報510がRAM30へコピーされてもよい。
次に、図16a〜図16cを参照して、ホスト2への起動完了報告の一例を説明する。
NS管理表540に記録されている起動優先順位は、図16aに示すようにNSID0が第3位、NSID1が第2位、NSID2が第1位、NSID3が第4位である。
図16bに示す例では、記憶装置1への電力が供給されると、起動優先順位が第1位であるNSID2の位置情報群550の復元が開始される。そして、NSID2の位置情報群550の復元が完了すると、記憶装置1はホスト2に対してNSID2の起動が完了した旨を報告する。その後、NS管理表540の起動優先順位に従い、NSID1の位置情報群550の復元及びホスト2への起動完了報告、NSID0の位置情報群550の復元及びホスト2への起動完了報告、NSID3の位置情報群550の復元及びホスト2への起動完了報告が行われる。すべてのネームスペースについて位置情報群550の復元が完了すると、記憶装置1の起動が完了した旨がホスト2へ報告される。
図16bでは各ネームスペースの位置情報群550の復元完了に伴い、記憶装置1が自発的に当該ネームスペースの起動完了をホスト2に報告した。これに対し、図16cではホスト2からの問い合わせコマンドに対する応答として、起動完了したか、未完了であるかを報告する。
すなわち、図16cに例示するように、記憶装置1への電力の供給に伴い、起動優先順位が第1位であるNSID2の位置情報群550の復元が開始される。NSID2の位置情報群550の復元完了前に、ホスト2よりNSID2の起動が完了したか否かを問い合わせるコマンドを受信すると、記憶装置1は未完了である旨を報告する。また、NSID2の位置情報群550の復元中に、まだ位置情報群550の復元を開始していないNSID0の起動が完了したか否かを問い合わせるコマンドを受信した時も、同様に、記憶装置1は未完了である旨を報告する。そして、NSID2の位置情報群550の復元が完了後、NSID2の起動が完了したか否かを問い合わせるコマンドを受信すると、記憶装置1は完了している旨を報告する。なお、この例では、記憶装置1は、1つのネームスペースの位置情報群550の復元が完了すると、次の起動優先順位のネームスペースの位置情報群550の復元を開始する。すべてのネームスペースについて位置情報群550の復元が完了すると、記憶装置1の起動が完了した旨がホスト2へ報告される。
次に、図17を参照して、記憶装置1の起動時のFWの制御を説明する。
記憶装置1への電力供給(S300)に伴いCPU40は、まずNS管理表540をNAND型フラッシュメモリ20から読み出す(S301)。次に、CPU40は起動優先順位を示す変数iを1に初期化し(S302)、NS管理表540の起動優先順位に従い、起動優先順位が最も高い(すなわちi=1)ネームスペースのログ領域からログ530を読み出し(S303)、RAM30上に位置情報群550を復元する(S304)。当該ネームスペースの位置情報群550の復元が完了するまで(S305:No)、CPU40は、ログ530の読み出し位置を更新し(S306)、ログ530の読み出し及びRAM30への復元を繰り返す(S303〜S306)。
当該ネームスペースの位置情報群550の復元が完了すると(S305:Yes)、CPU40はホストIF制御部200に指示し、ホスト2に当該ネームスペースの起動完了を報告する(S307)。
すべてのネームスペースの起動が完了していない場合(S308:No)、CPU40は起動優先順位を示す変数iをインクリメントさせ(S309)、起動優先順位がiであるネームスペースのログ領域からログ530を読み出し(S303)、RAM30上に位置情報群550を復元する(S304)。
すべてのネームスペースの起動が完了すると(S308:Yes)、CPU40はホストIF制御部200に指示し、ホスト2に記憶装置1の起動完了を報告する(S310)。
その後、翻訳情報510をNAND型フラッシュメモリ20からRAM30へキャッシュする(S311)。
次に、図18a及び図18bを参照して、起動優先順位を指定するコマンドの動作の一例を説明する。
図18aは、既存のネームスペースに対し起動優先順位を指定するコマンドの動作の一例である。図18aに示すように、例えば、ホスト2はNSID2の起動優先順位を第1位に指定する。このコマンドを受領した記憶装置1は、NS管理表540のNSID2の起動優先順位を第1位にした後、ホスト2に対して正常終了を報告する。
図18bは、ネームスペースの生成と同時に起動優先順位を指定するコマンドの動作の一例である。図18aに示すように、例えば、ホスト2は起動優先順位が第1位であるNSID2を生成するように要求する。このコマンドを受領した記憶装置1は、論理アドレス空間にNSID2の領域を割り当て、また、NS管理表540のNSID2の起動優先順位を第1位にした後、ホスト2に対して正常終了を報告する。
なお、上記いずれのコマンドに対しても、ホスト2に要求された動作を行うことができない場合、又は、この動作に失敗した場合、記憶装置1はホスト2にエラーを報告する。
ここまで説明したように、ホスト2は、記憶装置1に対しネームスペースごとの起動優先順位を指定することにより、記憶装置1の起動時に優先して使用したいネームスペースを指定することができる。
次に、図19a及び図19bを参照して、ネームスペースごとの起動優先順位とネームスペースごとの用途、及び記憶装置1からの起動完了報告の一例を説明する。
ホスト2は、ネームスペースごとの用途、及び、起動優先順位をどのように設定するべきか決定する。ホスト2は、例えば各ネームスペースの用途を(a)ブートレコード、OSカーネルイメージを記憶するネームスペース、(b)OSの起動に必要なシステムファイルを記憶するネームスペース、(c)アプリケーションプログラムを記憶するネームスペース、(d)ユーザデータを記憶するネームスペース、(e)バックアップデータを記憶するネームスペースと決定する。また、ホスト2は、これらのネームスペースの起動優先順位を、(a)(b)(c)(d)(e)の順に高いものと決定する。そしてホスト2は記憶装置1に対し、起動優先順位を指定するコマンドを発行し、ネームスペースごとの起動優先順位を指定する。
図19aに示す例では、NSID0は起動優先順位が第3位に設定され、アプリケーションプログラムを記憶するために使用されている。NSID1は起動優先順位が第2位に設定され、システムファイルを記憶するために使用されている。NSID2は起動優先順位が第1位に設定され、ブートレコード、OSカーネルイメージを記憶するために使用されている。NSID3は起動優先順位が第4位に設定され、ユーザデータを記憶するために使用されている。NSID4は起動優先順位が第5位に設定され、バックアップデータを記憶するために使用されている。
このように各ネームスペースを設定することにより、ホスト2は他のユーザデータに先立ってOSの起動処理を行うことが可能となる。すなわち図19bに示すように、ホスト2は起動優先順位が第1位であるNSID2の起動完了報告を受領することにより、OSの起動処理を開始する。ホスト2は起動優先順位が第2位であるNSID1の起動完了報告を受領することにより、システムファイルの使用を開始する。ホスト2は起動優先順位が第3位であるNSID0の起動完了報告を受領することにより、アプリケーションプログラムの使用を開始する。これにより、記憶装置1全体の起動完了を待ってからホスト2がOSの起動処理を開始するようなシステムと比較して、システム全体としての起動時間を短縮することができる。
また、システム起動時に優先的に使用したいユーザデータが記憶されているネームスペースを、優先的に起動させることができる。図19bの例では、ホスト2は起動優先順位が第4位であるNSID3の起動完了報告を受領することにより、ユーザデータの使用を開始する。ホスト2は起動優先順位が第5位であるNSID4の起動完了報告を受領することにより、バックアップデータの使用を開始する。
次に、図20a及び図20bを参照して、ネームスペースごとの起動優先順位とネームスペースごとの用途、及び記憶装置1からの起動完了報告の別の一例を説明する。
図20aに示す例では、NSID0は起動優先順位が第3位に設定され、ユーザデータAを記憶するために使用されている。NSID1は起動優先順位が第2位に設定され、ユーザデータBを記憶するために使用されている。NSID2は起動優先順位が第1位に設定され、オペレーティングシステム(OS)を記憶するために使用されている。NSID3は起動優先順位が第4位に設定され、ユーザデータCを記憶するために使用されている。
ユーザデータA〜ユーザデータCは、例えば複数のユーザのバーチャルマシンイメージに対応する。ユーザデータBは、例えばユーザ全員が使用するデータに対応する。ユーザデータAは、例えば優先度の高いライセンス契約をしているユーザが使用するデータに対応する。ユーザデータCは、例えば優先度の低いライセンス契約をしているユーザが使用するデータに対応する。
このように各ネームスペースを設定することにより、ホスト2は、システム起動時に優先的に使用したいユーザデータが記憶されているネームスペースを、優先的に起動させることができる。図20bの例では、ホスト2は起動優先順位が第2位であるNSID1の起動完了報告を受領することにより、ユーザデータBの使用を開始する。ホスト2は起動優先順位が第3位であるNSID0の起動完了報告を受領することにより、ユーザデータAの使用を開始する。ホスト2は起動優先順位が第4位であるNSID3の起動完了報告を受領することにより、ユーザデータCの使用を開始する。
次に、図21a〜図21cを参照して、コマンドで指定された起動優先順位に重複があった場合の動作の一例を説明する。
図21bに示すように、例えば、NS管理表540に記録されている起動優先順位は、NSID0が第3位、NSID1が第2位、NSID2が第1位、NSID3が第4位、NSID4が第5位である。
この状態で、既存のネームスペースに対し起動優先順位を指定するコマンド(図18aのコマンド)によって、ホスト2がNSID4の起動優先順位を第3位に指定したとする。しかし、この時、起動優先順位の第3位はすでにNSID0に割り当てられている。このような場合、記憶装置1は、まず、コマンド指定の起動優先順位(第3位)をNSID4に設定する。また、既存のネームスペースのうち、コマンド指定のネームスペースではなく、且つ、コマンド指定の起動優先順位(第3位)以下の起動優先順位を有するネームスペースの起動優先順位は1つずつ低く設定される。すなわち、起動優先順位が第3位であったNSID0の起動優先順位は第4位に設定され、起動優先順位が第4位であったNSID3の起動優先順位は第5位に設定される。各ネームスペースの起動優先順位の設定が完了すると、記憶装置1はホスト2に対し、コマンドの正常終了を報告する。
本コマンドで要求された動作が完了した後のNS管理表540は図21cに示すようになり、NSID0が第4位、NSID1が第2位、NSID2が第1位、NSID3が第5位、NSID4が第3位となる。
次に、図22a〜図22cを参照して、コマンドで指定された起動優先順位に重複があった場合の動作の別の一例を説明する。ここではネームスペースの生成と同時に起動優先順位を指定するコマンド(図18bのコマンド)を受信した時の動作を説明する。なお、コマンド受信前のNS管理表540の状態を示す図22bは、図21bと等しい。
ネームスペースの生成と同時に起動優先順位を指定するコマンドによって、ホスト2は起動優先順位が第3位であるNSID5を生成するように要求するが、起動優先順位の第3位はすでにNSID0に割り当てられている。このような場合、記憶装置1は、まずコマンド指定の起動優先順位(第3位)をNSID5に設定する。また、既存のネームスペースのうち、コマンド指定のネームスペースではなく、且つ、コマンド指定の起動優先順位(第3位)以下の起動優先順位を有するネームスペースの起動優先順位は1つずつ低く設定される。すなわち、起動優先順位が第3位であったNSID0の起動優先順位は第4位に設定され、起動優先順位が第4位であったNSID3の起動優先順位は第5位に設定され、起動優先順位が第5位であったNSID4の起動優先順位は第6位に設定される。NSID5の生成、及び、各ネームスペースの起動優先順位の設定が完了すると、記憶装置1はホスト2に対し、コマンドの正常終了を報告する。
本コマンドで要求された動作が完了した後のNS管理表540は図22cに示すようになり、NSID0が第4位、NSID1が第2位、NSID2が第1位、NSID3が第5位、NSID4が第6位、NSID5が第3位となる。
図21a〜図21c、図22a〜図22cのいずれの場合においても、記憶装置1がホスト2に要求された動作を行うことができない場合、又は、この動作に失敗した場合、特に、起動優先順位の重複を許容しない場合は、記憶装置1はホスト2にエラーを報告するようにしてもよい。
また、コマンド指定の起動優先順位がNS管理表540に反映された結果、NS管理表540に記録されている起動優先順位に不連続性が生じた場合には、記憶装置1は、起動優先順位が連続になるように起動優先順位を変更してもよい。例えば、コマンド指定の起動優先順位がNS管理表540に反映された結果、NS管理表540に記録されている起動優先順位が第1位、第2位、第4位となった場合に、NS管理表540を書き換え、起動優先順位が第1位、第2位、第3位となるように変更してもよい。
次に、図23を参照して、起動優先順位を指定するコマンドを受信した時のFWの制御を説明する。
起動優先順位を指定するコマンドを受信(S400)すると、CPU40は、コマンドで指定されたネームスペース(指定ネームスペース)に、コマンドで指定された起動優先順位を設定する(S401)。次に、CPU40は、指定された起動優先順位が既存の起動優先順位と重複していないかをチェックする(S402)。
コマンドで指定された起動優先順位が既存の起動優先順位のいずれかと重複している場合(S402:Yes)、指定ネームスペース以外のネームスペースであって、コマンドで指定された起動優先順位以下の起動優先順位を有するネームスペースについては、起動優先順位が1ずつ低く設定される(S403)。
次にCPU40は、NS管理表540に記録されている起動優先順位に不連続性がないかをチェックする(S404)。起動優先順位に不連続性がある場合(S404:Yes)、CPU40は、不連続性を解消するように起動優先順位を変更してもよい(S405)。
(S401)又は(S403)又は(S405)により、すべてのネームスペースについて起動優先順位の設定が完了すると、CPU40はホストIF制御部200に指示し、ホスト2にコマンドの正常終了を報告する(S406)。
次に、図24a〜図24cを参照して、起動優先順位を問い合わせるためのコマンドの動作の一例を説明する。
図24aに示すように、例えば、NS管理表540に記録されている起動優先順位は、NSID0が第3位、NSID1が第2位、NSID2が第1位、NSID3が第4位、NSID4が第5位である。
図24bでは、記憶装置1はホスト2からNSID3の起動優先順位を問い合わせるコマンドを受信している。CPU40はNS管理表540を検索し、NSID3の起動優先順位(第4位)を取得した後、ホストIF制御部200に指示し、ホスト2に対してNSID3の起動優先順位として第4位を報告する。
図24cでは、記憶装置1はホスト2から起動優先順位が第4位であるネームスペースIDを問い合わせるコマンドを受信している。CPU40はNS管理表540を検索し、起動優先順位が第4位であるネームスペースID(NSID3)を取得した後、ホストIF制御部200に指示し、ホスト2に対して起動優先順位が第4位であるネームスペースIDとしてNSID3を報告する。
なお、図24b・図24cのいずれの場合も、ホスト2からの問い合わせに適合するネームスペースID又は起動優先順位がNS管理表540に記録されていない場合には、記憶装置1はホスト2に対してエラーを報告する。
以上説明した少なくとも1つの実施形態の記憶装置によれば、ホストがネームスペースごとの起動優先順位を指定し、記憶装置は起動優先順位の高いネームスペースから順に起動処理を行うので、システム全体としての起動時間を短縮することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…記憶装置、2…ホスト、10…コントローラ、20…不揮発性記憶媒体、30…RAM、40…CPU、100…メモリチップ、200…ホストIF制御部、210…バッファ制御部、220…NAND制御部、300…物理ページ、310…物理ブロック、320…クラスタ、400…論理ページ、410…論理ブロック、500…ユーザデータ、510a…翻訳情報、510b…翻訳情報(キャッシュ)、520a…翻訳情報群、520b…翻訳情報群(キャッシュ)、530…ログ、540…NS管理表、550…位置情報群、560…位置情報

Claims (10)

  1. ホスト装置と通信可能な記憶装置であって、
    前記ホスト装置から送信されるユーザデータを記憶する不揮発性半導体メモリと、
    前記ホスト装置との通信を制御し、前記不揮発性半導体メモリへの前記ユーザデータの書き込み動作及び読み出し動作を制御するコントローラと、
    を具備し、
    前記コントローラは、
    前記ユーザデータに対応付けられる論理アドレスの空間を複数の部分空間に分けて管理し、
    前記記憶装置の起動に際して必要となる起動情報であって、前記論理アドレスと前記不揮発性半導体メモリの物理アドレスとの変換に必要な情報を、前記部分空間ごとの起動優先順位が識別可能となるように管理する
    記憶装置。
  2. 前記コントローラは、
    前記ホスト装置が前記部分空間のいずれかを指定して送信する第1のコマンドの指定に応じて前記起動優先順位を設定する
    請求項1に記載の記憶装置。
  3. 前記コントローラは、
    前記部分空間のうちの第1の部分空間に対する前記第1のコマンドで指定された前記起動優先順位が、
    前記部分空間のうちのいずれかの前記起動優先順位と重複している場合に、
    前記第1の部分空間には、前記指定された起動優先順位を設定し、
    前記第1の部分空間以外の前記部分空間のうち、前記指定された起動優先順位以下の起動優先順位を有する前記部分空間の前記起動優先順位をそれぞれ1つずつ低く設定する
    請求項2に記載の記憶装置。
  4. 前記コントローラは、前記起動情報を前記不揮発性半導体メモリに記憶させるように制御する
    請求項1に記載の記憶装置。
  5. 前記コントローラは、
    前記記憶装置の起動に応じて、
    前記起動情報を前記起動優先順位の高い順に読み出す
    請求項1に記載の記憶装置。
  6. 前記コントローラは、
    前記部分空間の起動が完了したことを前記部分空間ごとに前記ホスト装置に報告する
    請求項5に記載の記憶装置。
  7. 前記コントローラは、
    前記ホスト装置が前記部分空間のいずれかを指定して送信する第2のコマンドに応じて
    前記部分空間の起動が完了したことを前記部分空間ごとに前記ホスト装置に報告する
    請求項6に記載の記憶装置。
  8. 前記コントローラは、
    前記ホスト装置が前記部分空間のいずれかを指定して送信する第3のコマンドに応じて
    前記部分空間ごとの前記起動優先順位を前記ホスト装置に報告する
    請求項1に記載の記憶装置。
  9. 前記コントローラは、
    前記ホスト装置が前記起動優先順位を指定して送信する第4のコマンドに応じて
    前記起動優先順位に対応する前記部分空間を識別する情報を前記ホスト装置に報告する
    請求項1に記載の記憶装置。
  10. ホスト装置と通信可能であり不揮発性半導体メモリを備える記憶装置を制御する方法であって、
    ユーザデータに対応付けられる論理アドレスの空間を複数の部分空間に分けて管理することと、
    前記記憶装置の起動に際して必要となる起動情報であって、前記論理アドレスと前記不揮発性半導体メモリの物理アドレスとの変換に必要な情報を、前記部分空間ごとの起動優先順位が識別可能となるように管理することと、
    を含む方法。
JP2016164016A 2016-08-24 2016-08-24 記憶装置及びその制御方法 Active JP6666813B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2016164016A JP6666813B2 (ja) 2016-08-24 2016-08-24 記憶装置及びその制御方法
US15/685,269 US10649891B2 (en) 2016-08-24 2017-08-24 Storage device that maintains mapping data therein
JP2020027984A JP6895551B2 (ja) 2016-08-24 2020-02-21 情報処理システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016164016A JP6666813B2 (ja) 2016-08-24 2016-08-24 記憶装置及びその制御方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2020027984A Division JP6895551B2 (ja) 2016-08-24 2020-02-21 情報処理システム

Publications (2)

Publication Number Publication Date
JP2018032220A JP2018032220A (ja) 2018-03-01
JP6666813B2 true JP6666813B2 (ja) 2020-03-18

Family

ID=61242741

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016164016A Active JP6666813B2 (ja) 2016-08-24 2016-08-24 記憶装置及びその制御方法

Country Status (2)

Country Link
US (1) US10649891B2 (ja)
JP (1) JP6666813B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10564858B2 (en) * 2018-05-02 2020-02-18 Nyquist Semiconductor Limited Data storage device with selective connection to non-volatile memories
US10606516B2 (en) * 2018-08-01 2020-03-31 Hewlett Packard Enterprise Development Lp Systems and methods for I/O prioritization in NVMe-compliant storage devices
US11269780B2 (en) 2019-09-17 2022-03-08 Micron Technology, Inc. Mapping non-typed memory access to typed memory access
US11494311B2 (en) 2019-09-17 2022-11-08 Micron Technology, Inc. Page table hooks to memory types
US10963396B1 (en) 2019-09-17 2021-03-30 Micron Technology, Inc. Memory system for binding data to a memory namespace
US11650742B2 (en) 2019-09-17 2023-05-16 Micron Technology, Inc. Accessing stored metadata to identify memory devices in which data is stored
US11061770B1 (en) * 2020-06-30 2021-07-13 EMC IP Holding Company LLC Reconstruction of logical pages in a storage system

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6098119A (en) * 1998-01-21 2000-08-01 Mylex Corporation Apparatus and method that automatically scans for and configures previously non-configured disk drives in accordance with a particular raid level based on the needed raid level
US7249218B2 (en) * 2002-08-29 2007-07-24 International Business Machines Corporation Method, system, and program for managing an out of available space condition
US7769945B2 (en) * 2007-01-18 2010-08-03 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
JP5300276B2 (ja) * 2008-01-28 2013-09-25 アルパイン株式会社 データ処理装置及び論理ドライブのマウント方法
JP4809413B2 (ja) 2008-10-08 2011-11-09 株式会社日立製作所 ストレージシステム
JP5353732B2 (ja) 2010-01-27 2013-11-27 富士通株式会社 ストレージ管理装置、ストレージシステム、ストレージ管理プログラム、ストレージ管理方法
US9218279B2 (en) * 2013-03-15 2015-12-22 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
US9513815B2 (en) 2013-12-19 2016-12-06 Macronix International Co., Ltd. Memory management based on usage specifications
US10019326B2 (en) 2015-07-15 2018-07-10 Toshiba Memory Corporation Memory system

Also Published As

Publication number Publication date
JP2018032220A (ja) 2018-03-01
US10649891B2 (en) 2020-05-12
US20180060228A1 (en) 2018-03-01

Similar Documents

Publication Publication Date Title
JP6666813B2 (ja) 記憶装置及びその制御方法
TWI765289B (zh) 儲存系統
US10635310B2 (en) Storage device that compresses data received from a host before writing therein
JP5646633B2 (ja) ストレージ装置
JP5075761B2 (ja) フラッシュメモリを用いたストレージ装置
US9454317B2 (en) Tiered storage system, storage controller and method of substituting data transfer between tiers
US9990277B2 (en) System and method for efficient address translation of flash memory device
CN107908571B (zh) 一种数据写入方法、闪存装置及存储设备
WO2015076354A1 (ja) ストレージ装置と方法並びにプログラム
KR20150105323A (ko) 데이터 스토리지 방법 및 시스템
US10049042B2 (en) Storage device, semiconductor memory device, and method for controlling same
WO2016056104A1 (ja) ストレージ装置、及び、記憶制御方法
US20190243758A1 (en) Storage control device and storage control method
US20090157940A1 (en) Techniques For Storing Data In Multiple Different Data Storage Media
JP5730446B1 (ja) トライアル領域を備えた階層化ストレージシステム、ストレージコントローラ及びプログラム
JP2006252137A (ja) 不揮発性記憶装置の最適化方法
JP6895551B2 (ja) 情報処理システム
JPWO2021218038A5 (ja)
CN107562639B (zh) 擦除块读请求处理方法与装置
US9218131B2 (en) Method and apparatus to change tiers
JP6022116B1 (ja) 階層化ストレージシステム、ストレージコントローラ及びレプリケーション初期化方法
KR102546740B1 (ko) 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 장치를 포함하는 스토리지 시스템
KR20120011634A (ko) 플래시 메모리장치
KR20240112601A (ko) 스토리지 장치 및 그의 동작 방법
JP5648918B2 (ja) ストレージシステム、ストレージ装置及びスナップショット処理方法

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20170531

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20170821

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180907

RD07 Notification of extinguishment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7427

Effective date: 20180907

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181017

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190718

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190830

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200221

R150 Certificate of patent or registration of utility model

Ref document number: 6666813

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150