IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022049405
(43)【公開日】2022-03-29
(54)【発明の名称】記憶装置および制御方法
(51)【国際特許分類】
   G06F 12/02 20060101AFI20220322BHJP
   G06F 12/00 20060101ALI20220322BHJP
【FI】
G06F12/02 510A
G06F12/00 597U
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2020155598
(22)【出願日】2020-09-16
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】特許業務法人スズエ国際特許事務所
(72)【発明者】
【氏名】沼田 牧子
(72)【発明者】
【氏名】田所 三徳
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA12
5B160AA14
5B160AA16
(57)【要約】
【課題】 予想レイテンシを保障するために備えるリソースを低減できる記憶装置を実現する。
【解決手段】 実施形態によれば、記憶装置は、不揮発性メモリとコントローラとを具備する。コントローラは、不揮発性メモリの記憶領域を論理的に分割した複数の記憶領域の少なくとも1つをそれぞれ含む複数の記憶領域セットを管理する。コントローラは、第1グループに対して第1リソースと第2リソースとを割り当て、第2グループに対して第3リソースと第4リソースとを割り当てる。第1回路は、第1リソースを用いて、第1グループに属する複数の第1記憶領域セットからデータを読み出す。第2回路は、第2リソースを用いて、複数の第1記憶領域セットにデータを書き込む。第3回路は、第3リソースを用いて、第2グループに属する複数の第2記憶領域セットからデータを読み出す。第4回路は、第4リソースを用いて、複数の第2記憶領域セットにデータを書き込む。
【選択図】図6
【特許請求の範囲】
【請求項1】
不揮発性メモリと、
前記不揮発性メモリの記憶領域を論理的に分割した複数の記憶領域の少なくとも1つをそれぞれ含む複数の記憶領域セットを管理するように構成されるコントローラであって、第1グループに属する複数の第1記憶領域セットに対する、ホストからの読み出し要求を処理する第1回路と、前記複数の第1記憶領域セットに対する、前記ホストからの書き込み要求を処理する第2回路と、第2グループに属する複数の第2記憶領域セットに対する、前記ホストからの読み出し要求を処理する第3回路と、前記複数の第2記憶領域セットに対する、前記ホストからの書き込み要求を処理する第4回路とを備えるコントローラとを具備し、
前記コントローラは、
前記第1グループに対して第1リソースと第2リソースとを割り当て、
前記第2グループに対して第3リソースと第4リソースとを割り当てるように構成され、
前記第1回路は、前記第1リソースを用いて、前記複数の第1記憶領域セットからデータを読み出すように構成され、
前記第2回路は、前記第2リソースを用いて、前記複数の第1記憶領域セットにデータを書き込むように構成され、
前記第3回路は、前記第3リソースを用いて、前記複数の第2記憶領域セットからデータを読み出すように構成され、
前記第4回路は、前記第4リソースを用いて、前記複数の第2記憶領域セットにデータを書き込むように構成される、記憶装置。
【請求項2】
前記コントローラは、第3グループに属する少なくとも1つの第3記憶領域セットに対する前記ホストからの読み出し要求および書き込み要求の処理を保留するように構成される、請求項1に記載の記憶装置。
【請求項3】
前記コントローラは、
前記複数の第1記憶領域セットに対する第1読み出し要求または第1書き込み要求を前記ホストから受信した場合、前記第1読み出し要求または前記第1書き込み要求に対する応答を第1時間以内に前記ホストに送信し、
前記複数の第2記憶領域セットに対する第2読み出し要求または第2書き込み要求を前記ホストから受信した場合、前記第2読み出し要求または前記第2書き込み要求に対する応答を前記第1時間より長い第2時間以内に前記ホストに送信するように構成される、請求項1または請求項2に記載の記憶装置。
【請求項4】
前記コントローラは、
前記第1回路が前記第1リソースを用いて処理可能なデータサイズの上限に対する、前記第1回路が処理しているデータサイズの割合が第1閾値を超えた場合、または前記第1回路が処理しているデータサイズの単位時間当たりの変化量が第2閾値を超えた場合、前記複数の第1記憶領域セットの少なくとも1つの記憶領域セットを、前記第1グループから前記第2グループに移し、
前記第2回路が前記第2リソースを用いて処理可能なデータサイズの上限に対する、前記第2回路が処理しているデータサイズの割合が第3閾値を超えた場合、または前記第2回路が処理しているデータサイズの単位時間当たりの変化量が第4閾値を超えた場合、前記複数の第1記憶領域セットの内の少なくとも1つの記憶領域セットを、前記第1グループから前記第2グループに移し、
前記第3回路が前記第3リソースを用いて処理可能なデータサイズの上限に対する、前記第3回路が処理しているデータサイズの割合が第5閾値を超えた場合、または前記第3回路が処理しているデータサイズの単位時間当たりの変化量が第6閾値を超えた場合、前記複数の第2記憶領域セットの内の少なくとも1つの記憶領域セットを、前記第2グループから前記第1グループに移し、
前記第4回路が前記第4リソースを用いて処理可能なデータサイズに対する、前記第4回路が処理しているデータサイズの割合が第7閾値を超えた場合、または第4期間における、前記第4回路が処理しているデータサイズの単位時間当たりの変化量が第8閾値を超えた場合、前記複数の第2記憶領域セットの内の少なくとも1つの記憶領域セットを、前記第2グループから前記第1グループに移すように構成される、請求項1乃至請求項3のいずれか一項に記載の記憶装置。
【請求項5】
前記コントローラは、
前記第1回路が前記第1リソースを用いて処理可能なデータサイズの上限に対する、前記第1回路が処理しているデータサイズの割合が第1閾値を超えた場合、または前記第1回路が処理しているデータサイズの単位時間当たりの変化量が第2閾値を超えた場合、前記第3リソースの一部を、前記第1リソースとしてさらに割り当て、
前記第2回路が前記第2リソースを用いて処理可能なデータサイズの上限に対する、前記第2回路が処理しているデータサイズの割合が第3閾値を超えた場合、または前記第2回路が処理しているデータサイズの単位時間当たりの変化量が第4閾値を超えた場合、前記第4リソースの一部を、前記第2リソースとしてさらに割り当て、
前記第3回路が前記第3リソースを用いて処理可能なデータサイズの上限に対する、前記第3回路が処理しているデータサイズの割合が第5閾値を超えた場合、または前記第3回路が処理しているデータサイズの単位時間当たりの変化量が第6閾値を超えた場合、前記第1リソースの一部を、前記第3リソースとしてさらに割り当て、
前記第4回路が前記第4リソースを用いて処理可能なデータサイズの上限に対する、前記第4回路が処理しているデータサイズの割合が第7閾値を超えた場合、または前記第4回路が処理しているデータサイズの単位時間当たりの変化量が第8閾値を超えた場合、前記第2リソースの一部を、前記第4リソースとしてさらに割り当てるように構成される、請求項1乃至請求項3のいずれか一項に記載の記憶装置。
【請求項6】
前記第1回路が前記第1リソースを用いて処理可能なデータサイズの上限と前記第3回路が前記第3リソースを用いて処理可能なデータサイズの上限との和に対する、前記第1回路が処理しているデータサイズと前記第3回路が処理しているデータサイズとの和の割合が第9閾値を超えた場合、第5リソースの一部を、前記第1リソースと前記第3リソースの少なくとも一方としてさらに割り当て、
前記第2回路が前記第2リソースを用いて処理可能なデータサイズの上限と前記第4回路が前記第4リソースを用いて処理可能なデータサイズの上限との和に対する、前記第2回路が処理しているデータサイズと前記第4回路が処理しているデータサイズとの和の割合が第10閾値を超えた場合、第6リソースの一部を、前記第2リソースと前記第4リソースの少なくとも一方としてさらに割り当てるように構成される、請求項1乃至請求項3のいずれか一項に記載の記憶装置。
【請求項7】
前記コントローラは、
前記複数の記憶領域セットの各々を、予想レイテンシを保障する第1期間と、予想レイテンシを保障しない第2期間との間で遷移させ、
前記第1期間から前記第2期間に遷移した、前記第1グループまたは前記第2グループに属する記憶領域セットを、前記第3グループに移し、
前記第2期間から前記第1期間に遷移した、前記第3グループに属する記憶領域セットを、前記第1グループまたは前記第2グループに移すように構成される、請求項2に記載の記憶装置。
【請求項8】
前記コントローラは、
前記第1回路が前記第1グループに属する第4記憶領域セットに対して処理しているデータサイズが、第11閾値を超えた場合、前記複数の第1記憶領域セットから前記第4記憶領域セットを除いた少なくとも1つの記憶領域セットを、前記第3グループに移し、
前記第2回路が前記第1グループに属する第5記憶領域セットに対して処理しているデータサイズが、第12閾値を超えた場合、前記複数の第1記憶領域セットから前記第5記憶領域セットを除いた少なくとも1つの記憶領域セットを、前記第3グループに移し、
前記第3回路が前記第2グループに属する第6記憶領域セットに対して処理しているデータサイズが、第13閾値を超えた場合、前記複数の第2記憶領域セットから前記第6記憶領域セットを除いた少なくとも1つの記憶領域セットを、前記第3グループに移し、
前記第4回路が前記第2グループに属する第7記憶領域セットに対して処理しているデータサイズが、第14閾値を超えた場合、前記複数の第2記憶領域セットから前記第7記憶領域セットを除いた少なくとも1つの記憶領域セットを、前記第3グループに移すように構成される、請求項2または請求項7に記載の記憶装置。
【請求項9】
前記コントローラは、
前記第1グループおよび前記第2グループに属する記憶領域セットの数が、第15閾値未満である場合に、前記第3グループに属する記憶領域セットを前記第2期間から前記第1期間に遷移させるように構成される、請求項7に記載の記憶装置。
【請求項10】
前記コントローラは、
前記少なくとも1つの第3記憶領域セットに対する前記ホストからの読み出し要求および書き込み要求の処理を保留し、
第7リソースを用いて前記少なくとも1つの第3記憶領域セットに対するメンテナンス処理を行うように構成される、請求項7に記載の記憶装置。
【請求項11】
前記コントローラは、
前記第2期間内に前記メンテナンス処理を完了するためのリソース量を算出し、
算出した前記リソース量よりも前記第7リソースの量が少ない場合、前記第1リソース、前記第2リソース、前記第3リソース、および前記第4リソースの一部を、前記第7リソースとしてさらに割り当てるように構成される、請求項10に記載の記憶装置。
【請求項12】
不揮発性メモリと、前記不揮発性メモリの記憶領域を論理的に分割した複数の記憶領域の少なくとも1つをそれぞれ含む複数の記憶領域セットを管理するように構成されるコントローラとを具備する記憶装置の制御方法であって、
前記コントローラは、
第1グループに属する複数の第1記憶領域セットに対する、ホストからの読み出し要求を処理する第1回路と、
前記複数の第1記憶領域セットに対する、前記ホストからの書き込み要求を処理する第2回路と、
第2グループに属する複数の第2記憶領域セットに対する、前記ホストからの読み出し要求を処理する第3回路と、
前記複数の第2記憶領域セットに対する、前記ホストからの書き込み要求を処理する第4回路とを備え、
前記制御方法は、
前記コントローラによって、前記第1グループに対して第1リソースと第2リソースとを割り当て、
前記コントローラによって、前記第2グループに対して第3リソースと第4リソースとを割り当て、
前記第1回路によって、前記第1リソースを用いて、前記複数の第1記憶領域セットからデータを読み出し、
前記第2回路によって、前記第2リソースを用いて、前記複数の第1記憶領域セットにデータを書き込み、
前記第3回路によって、前記第3リソースを用いて、前記複数の第2記憶領域セットからデータを読み出し、
前記第4回路によって、前記第4リソースを用いて、前記複数の第2記憶領域セットにデータを書き込む、制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、不揮発性メモリを備える記憶装置を制御する技術に関する。
【背景技術】
【0002】
近年、ストレージとして不揮発性メモリを備える記憶装置が広く普及している。このような記憶装置の1つとして、ソリッドステートドライブ(SSD)が知られている。SSDはNAND型フラッシュメモリを備える。
【0003】
記憶装置は、I/O Determinism(IOD)を実現するための機能を有することがある。IODは、予想レイテンシ(predictable latency)を保障するように動作するという特徴である。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許出願公開第2019/0042413号明細書
【特許文献2】米国特許出願公開第2019/0121558号明細書
【特許文献3】米国特許出願公開第2017/0371559号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明が解決しようとする課題は、予想レイテンシを保障するために備えるリソースを低減できる記憶装置および記憶装置の制御方法を提供することである。
【課題を解決するための手段】
【0006】
実施形態によれば、記憶装置は、不揮発性メモリと、コントローラとを具備する。コントローラは、不揮発性メモリの記憶領域を論理的に分割した複数の記憶領域の少なくとも1つをそれぞれ含む複数の記憶領域セットを管理するように構成される。コントローラは、第1グループに属する複数の第1記憶領域セットに対する、ホストからの読み出し要求を処理する第1回路と、複数の第1記憶領域セットに対する、ホストからの書き込み要求を処理する第2回路と、第2グループに属する複数の第2記憶領域セットに対する、ホストからの読み出し要求を処理する第3回路と、複数の第2記憶領域セットに対する、ホストからの書き込み要求を処理する第4回路とを備える。コントローラは、第1グループに対して第1リソースと第2リソースとを割り当て、第2グループに対して第3リソースと第4リソースとを割り当てるように構成される。第1回路は、第1リソースを用いて、複数の第1記憶領域セットからデータを読み出すように構成される。第2回路は、第2リソースを用いて、複数の第1記憶領域セットにデータを書き込むように構成される。第3回路は、第3リソースを用いて、複数の第2記憶領域セットからデータを読み出すように構成される。第4回路は、第4リソースを用いて、複数の第2記憶領域セットにデータを書き込むように構成される。
【図面の簡単な説明】
【0007】
図1】本発明の実施形態に係る記憶装置を含む情報処理システムの構成例を示すブロック図。
図2】本発明の実施形態に係る記憶装置内の不揮発性メモリセット(NVMセット)の例を示す図。
図3】本発明の実施形態に係る記憶装置内のNVMセットに対するコントローラの動作期間が、Deterministic Window(DTWIN)とNon-Deterministic Window(NDWIN)との間を遷移する例を示す図。
図4】本発明の実施形態に係る記憶装置内のコントローラが、NVMセットに対するアクセスにおいて予想レイテンシを達成するための条件の例を示す図。
図5】本発明の実施形態に係る記憶装置内のNVMセットに関するウィンドウと優先度グループの遷移例を示す図。
図6】本発明の実施形態に係る記憶装置において実行されるコマンド処理動作を示すブロック図。
図7】本発明の実施形態に係る記憶装置内のリソース割り当ての変更例を示す図。
図8】本発明の実施形態に係る記憶装置内のリソース割り当ての別の変更例を示す図。
図9】本発明の実施形態に係る記憶装置における、グループ毎の処理中のリードデータサイズに応じたグループ分けおよびリソース割り当ての制御例を示す図。
図10】本発明の実施形態に係る記憶装置における、高優先度グループの処理中のリードデータサイズに応じたグループ分けの制御例を示す図。
図11】本発明の実施形態に係る記憶装置内のリソース割り当てのさらに別の変更例を示す図。
図12】本発明の実施形態に係る記憶装置が用いるNVMセット-優先度管理テーブルの一構成例を示す図。
図13】本発明の実施形態に係る記憶装置が用いる優先度-リソース管理テーブルの一構成例を示す図。
図14A】NVMセットに対するコントローラの動作期間がDTWINとNDWINとの間を遷移するタイミングの例を示す図。
図14B】本発明の実施形態に係る記憶装置内のNVMセットに対するコントローラの動作期間がDTWINとNDWINとの間を遷移するタイミングの例を示す図。
図15】本発明の実施形態に係る記憶装置内のCPUによって実行される初期化処理の手順の例を示すフローチャート。
図16】本発明の実施形態に係る記憶装置内のCPUによって実行される第1変更処理の手順の例を示すフローチャート。
図17】本発明の実施形態に係る記憶装置内のCPUによって実行される第2変更処理の手順の例を示すフローチャート。
図18】本発明の実施形態に係る記憶装置内のCPUによって実行される第3変更処理の手順の例を示すフローチャート。
図19】本発明の実施形態に係る記憶装置内のCPUによって実行される第4変更処理の手順の例を示すフローチャート。
図20】本発明の実施形態に係る記憶装置内のCPUによって実行される第5変更処理の手順の例を示すフローチャート。
図21】本発明の実施形態に係る記憶装置内のCPUによって実行される第6変更処理の手順の例を示すフローチャート。
図22】本発明の実施形態に係る記憶装置内のCPUによって実行される第7変更処理の手順の例を示すフローチャート。
図23】本発明の実施形態に係る記憶装置内のCPUによって実行される第8変更処理の手順の例を示すフローチャート。
図24】本発明の実施形態に係る記憶装置内のCPUによって実行されるリードコマンド制御処理の手順の例を示すフローチャート。
図25】本発明の実施形態に係る記憶装置内のCPUによって実行されるライトコマンド制御処理の手順の例を示すフローチャート。
【発明を実施するための形態】
【0008】
以下、図面を参照して、本発明の実施形態を説明する。
【0009】
図1は、本発明の実施形態に係る記憶装置を含む情報処理システム1の構成例を示すブロック図である。情報処理システム1は、ホストデバイス2と記憶装置3とを含む。
【0010】
ホストデバイス2は、記憶装置3の外部の情報処理装置である。ホストデバイス2は、例えば、パーソナルコンピュータやサーバコンピュータ、タブレットコンピュータやスマートフォン等の携帯端末、カーナビゲーションシステム等の車載端末である。以下、ホストデバイス2をホスト2とも称する。
【0011】
記憶装置3は、ストレージにデータを書き込み、ストレージからデータを読み出すように構成されたストレージデバイスである。記憶装置3は、例えば、ソリッドステートドライブ(SSD)として実現されてもよい。また、記憶装置3は、例えば、ハードディスクドライブ(HDD)として実現されてもよい。記憶装置3は、ホスト2の記憶装置として機能し得る。記憶装置3はホスト2にケーブルまたはネットワークを介して接続されてもよい。記憶装置3とホスト2とを相互接続するインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)(登録商標)、Ethernet(登録商標)、Fibre channel、NVM Express(NVMe)(登録商標)等が使用され得る。
【0012】
記憶装置3は、不揮発性メモリ(non-volatile memory:NVM)5とコントローラ4とを備える。また、記憶装置3はランダムアクセスメモリ(RAM)6を備えていてもよい。RAM6は揮発性メモリである。RAM6は、例えば、ダイナミックランダムアクセスメモリ(DRAM)である。
【0013】
不揮発性メモリ5は、例えば、NAND型フラッシュメモリである。不揮発性メモリ5は、二次元構造であってもよい。また、不揮発性メモリ5は、三次元構造であってもよい。
【0014】
不揮発性メモリ5は、メモリセルアレイを含む。メモリセルアレイは複数のメモリセルを含む。複数のメモリセルはマトリクス状に配置される。
【0015】
また、不揮発性メモリ5は、複数の不揮発性メモリチップを含んでいてもよい。不揮発性メモリチップは、例えば、複数のNAND型フラッシュメモリダイである。不揮発性メモリチップは、複数の物理ブロックB0~Bm-1を含む。1つの物理ブロックは、最小の消去単位として機能する。複数の物理ブロックB0~Bm-1の各々は複数のページP0~Pn-1を含む。1つのページは、データ読み出し動作の単位である。複数のページP0~Pn-1の各々は、1つのワード線に接続された複数のメモリセルを含む。また、ワード線は、データ書き込み動作の単位である。
【0016】
不揮発性メモリ5に含まれる各物理ブロックには、Program/Eraseサイクル(P/Eサイクル)数の上限がある。1つの物理ブロックの1回のP/Eサイクルは、消去動作と書き込み動作(プログラム動作)とを含む。消去動作は、物理ブロック内の全てのメモリセルを消去状態にするための動作である。書き込み動作は、物理ブロックのページそれぞれにデータを書き込む動作である。
【0017】
コントローラ4は、不揮発性メモリ5を制御するメモリコントローラである。コントローラ4は例えばSystem-on-a-chip(SoC)のような回路である。コントローラ4は、不揮発性メモリ5と通信可能に接続される。
【0018】
コントローラ4は、不揮発性メモリ5のデータ管理およびブロック管理を実行する。データ管理には、マッピング情報の管理が含まれる。マッピング情報とは、論理アドレスと物理アドレスの間の対応関係である。論理アドレスは、記憶装置3をアドレス指定するためにホスト2によって使用されるアドレスである。論理アドレスとして、例えば、論理ブロックアドレス(LBA)がある。物理アドレスは、不揮発性メモリ5内の位置を示す。ブロック管理には、バッドブロックの管理、ウェアレベリング、ガベッジコレクションが含まれる。
【0019】
コントローラ4は、ホストインタフェース(ホストI/F)101、CPU102、ストレージインタフェース(ストレージI/F)103、DRAM I/F104、高優先度リード回路105、中優先度リード回路106、高優先度ライト回路107、中優先度ライト回路108、低優先度リードコマンド記憶部109、低優先度ライトコマンド記憶部110、等を備える。ホストI/F101、CPU102、ストレージI/F103、DRAM I/F104、高優先度リード回路105、中優先度リード回路106、高優先度ライト回路107、中優先度ライト回路108、低優先度リードコマンド記憶部109、低優先度ライトコマンド記憶部110は、バス100を介して相互接続され得る。
【0020】
ホストI/F101は、記憶装置3と外部との通信を行うハードウェアインタフェースである。外部から受信するコマンドとしては、例えば、ライトコマンド、リードコマンドがある。
【0021】
CPU102は少なくとも1つのプロセッサである。CPU102はSoCのような回路であってもよい。CPU102は、ウィンドウ制御部121、優先度制御部122、リソース制御部123、および定期メンテナンス処理部124として動作する。CPU102は、例えば、ファームウェア(FW)21のようなプログラムに基づいて、これらの動作を実現する。
【0022】
ストレージI/F103は、コントローラ4と不揮発性メモリ5との間の通信を行うハードウェアインタフェースである。ストレージI/F103は、Toggle DDR、Open NAND Flash Interface(ONFI)等のインタフェース規格に対応する。ストレージI/F103は、複数のチャネル(Ch)を介して、不揮発性メモリ5内の複数の不揮発性メモリチップにそれぞれ接続されていてもよい。
【0023】
DRAM I/F104は、コントローラ4とRAM6との間の通信を行うハードウェアインタフェースである。RAM6は、記憶装置3で用いられるデータの一時記憶領域として機能する。RAM6の一時記憶領域は、不揮発性メモリ5から読み出されたFW21およびシステムデータを記憶する領域、キャッシュ領域、およびバッファ領域として利用される。
【0024】
高優先度リード回路105は、ホストI/F101を介して受信したリードコマンドを処理する。高優先度リード回路105が処理するリードコマンドは、高い優先度を有する。
【0025】
中優先度リード回路106は、ホストI/F101を介して受信したリードコマンドを処理する。中優先度リード回路106が処理するリードコマンドは、高優先度リード回路105が処理するリードコマンドより低い優先度(中程度の優先度)を有する。
【0026】
高優先度ライト回路107は、ホストI/F101を介して受信したライトコマンドを処理する。高優先度ライト回路107が処理するライトコマンドは、高い優先度を有する。
【0027】
中優先度ライト回路108は、ホストI/F101を介して受信したライトコマンドを処理する。中優先度ライト回路108が処理するライトコマンドは、高優先度ライト回路107が処理するライトコマンドより低い優先度(中程度の優先度)を有する。
【0028】
低優先度リードコマンド記憶部109は、ホストI/F101を介して受信したリードコマンドを記憶する。低優先度リードコマンド記憶部109が記憶するリードコマンドは、中優先度リード回路106が処理するリードコマンドより低い優先度を有する。
【0029】
低優先度ライトコマンド記憶部110は、ホストI/F101を介して受信したライトコマンドを記憶する。低優先度ライトコマンド記憶部110が記憶するライトコマンドは、中優先度ライト回路108が処理するライトコマンドより低い優先度を有する。
【0030】
次に、I/O Determinism(IOD)を実現する記憶装置3について説明する。IODを実現する記憶装置3は、ホスト2から記憶装置3へのアクセスにおいて、予想レイテンシを保障するように動作する。つまり、IODを実現する記憶装置3は、ホスト2から記憶装置3へのアクセスにおいて、ホスト2がレイテンシを予測可能であることを保障する。IODを実現するために、記憶装置3は、例えばNVMe規格のPredictable Latency Modeをサポートする。Predictable Latency Modeは、NVMセットに対するリード動作およびライト動作において予想レイテンシを保障するように記憶装置3が動作するモードである。
【0031】
NVMセットは、記憶領域の集合である。NVMセットに含まれる記憶領域は、不揮発性メモリ5の記憶領域を論理的に分割したものである。NVMセットに含まれる記憶領域の各々には、論理アドレス(例えばLBA)が割り当てられる。NVMセットに含まれる記憶領域の数およびNVMセットの数は、いずれも任意である。1つのNVMセットに含まれる記憶領域は別のNVMセットに含まれる記憶領域から、論理的に分離されている。
【0032】
NVMセットに含まれる記憶領域は、例えば、ネームスペース(NS)である。NVMセットは1つ以上のネームスペースを含み得る。ネームスペースは、NVMセットの属性を継承する。また、1つのネームスペースは、全体が単一のNVMセットに含まれる。1つのネームスペースが複数のNVMセットに跨ることはない。ネームスペースは、例えばネームスペース識別子で特定される。ネームスペース識別子を用いて、NVMセットに含まれる1つ以上のネームスペースの各々を特定できる。
【0033】
図2は、本発明の実施形態に係る記憶装置3内のNVMセットの例を示す図である。図2では3つのNVMセットを例示している。NVMセットAは3つのネームスペースA1,A2,A3を含む。NVMセットBは2つのネームスペースB1,B2を含む。NVMセットCは1つのネームスペースC1を含む。また、NVMセットA,NVMセットB,NVMセットCの各々は未割り当て領域をさらに含む。未割り当て領域は、いずれのネームスペースにもまだ割り当てられていない記憶領域である。
【0034】
次に、Predictable Latency Modeをサポートする記憶装置3内のNVMセットについて説明する。Predictable Latency Modeをサポートする記憶装置3において、NVMセットとそれに含まれるネームスペースは、サービス属性に関してベンダー特有の品質を有する。同一のNVMセット内の記憶領域にアクセスする複数のI/Oコマンドは、同一品質のサービス属性を有する。あるNVMセット内の記憶領域にアクセスするI/Oコマンドは、別のNVMセット内の記憶領域にアクセスするI/Oコマンドのサービスの品質に影響を与えない。
【0035】
また、コントローラ4は1つのNVMセットに対する動作を、2種類の動作期間で切り替える。2種類の動作期間は、コントローラ4がNVMセットに対してそれぞれ異なる動作を行う期間である。つまり、コントローラ4は、2種類の動作期間を交互に遷移することにより、NVMセットに対する動作を切り替える。一方の動作期間は、Deterministic Window(DTWIN)と称される。他方の動作期間は、Non-Deterministic Window(NDWIN)と称される。以降、動作期間をウィンドウとも呼ぶ。
【0036】
DTWINは、決定論的レイテンシ(deterministic latency)をNVMセットが提供できる期間である。決定論的レイテンシは予想レイテンシに相当する。コントローラ4の動作期間がDTWINであるNVMセットを、DTWIN中のNVMセットと称する。DTWIN中のNVMセットは、リード動作およびライト動作において決定論的レイテンシを提供できる。つまり、コントローラ4は、DTWIN中のNVMセットに対するリード動作およびライト動作において、予想レイテンシを保障する。
【0037】
NDWINは決定論的レイテンシを提供できない動作期間を示すウィンドウである。コントローラ4の動作期間がNDWINであるNVMセットを、NDWIN中のNVMセットと称する。NDWIN中のNVMセットは、現在のNDWINに後続するDTWINの準備をするために、リード動作およびライト動作において決定論的レイテンシを提供できない。つまり、コントローラ4は、NDWIN中のNVMセットに対するリード動作およびライト動作において、予想レイテンシを保障しない。
【0038】
定期メンテナンス処理部124は、NDWIN中のNVMセットに対して定期メンテナンス処理を行う。定期メンテナンス処理はバックグラウンドタスクの処理である。定期メンテナンス処理は、例えばガベッジコレクション処理を含む。
【0039】
ウィンドウ制御部121は、1つのNVMセットに対するコントローラ4の動作期間を、ホスト2による要求に応じて遷移させる。あるいは、ウィンドウ制御部121は、1つのNVMセットに対するコントローラ4の動作期間を、自発的に遷移させる。
【0040】
図3は、本発明の実施形態に係る記憶装置3内のNVMセットに対するコントローラ4の動作期間が、DTWINとNDWINとの間を遷移する例を示す図である。コントローラ4の動作期間は、記憶装置3内の複数のNVMセットの各々に対して、独立して遷移する。
【0041】
ウィンドウ制御部121は、各NVMセットに対するコントローラ4の動作期間を、DTWINとNDWINとの間で遷移させる。具体的には、1つのNVMセットに対するコントローラ4の動作期間は、ウィンドウ制御部121による以下の(1)-(3)の動作により、DTWINからNDWINに遷移する。
(1)ウィンドウ制御部121は、ホスト2によるNDWINへの遷移要求に受信した場合、NVMセットに対するコントローラ4の動作期間をDTWINからNDWINに遷移させる。
(2)ウィンドウ制御部121は、予想レイテンシを達成するための条件を満たさなくなった場合、NVMセットに対するコントローラ4の動作期間をDTWINからNDWINに遷移させる。
(3)ウィンドウ制御部121は、Deterministic Excursionが発生した場合、NVMセットに対するコントローラ4の動作期間をDTWINからNDWINに遷移させる。
なお、(2)および(3)の動作は、ホスト2による要求に関係しない、ウィンドウ制御部121による自主的な判断に基づく動作である。
【0042】
また、NVMセットに対するコントローラ4の動作期間は、ウィンドウ制御部121による以下の(4)の動作により、NDWINからDTWINに遷移する。
(4)ウィンドウ制御部121は、ホスト2によるDTWINへの遷移要求を受信した場合、NVMセットに対するコントローラ4の動作期間をNDWINからDTWINに遷移させる。
【0043】
なお、NVMセットに対するコントローラ4の動作期間は、ウィンドウ制御部121による以下の(5)の動作により、NDWINにとどまってもよい。
(5)ウィンドウ制御部121は、ホスト2によるDTWINへの遷移要求を受信した場合に、NVMセットに対するコントローラ4の動作期間がNDWINにとどまってもよい最小時間を超えていないならば、NVMセットに対するコントローラ4の動作期間をDTWINに遷移させなくてもよい。すなわち、NDWINにとどまらせてもよい。
【0044】
ここで、(2)の予想レイテンシを達成するための条件について説明する。
図4は、本発明の実施形態に係る記憶装置3内のコントローラ4が、NVMセットに対するアクセスにおいて予想レイテンシを達成するための条件の例を示す図である。予想レイテンシを達成するための条件には、例えば、4KiBランダムリード数、最適ライトサイズ単位のライト数、最大時間、第1最小時間、および第2最小時間が含まれる。
【0045】
4KiBランダムリード数は、NVMe規格においてDTWIN Read Typicalとして規定されている。4KiBランダムリード数は、対応するNVMセットに対して、コントローラ4がDTWIN中に処理できる4KiBランダムリードの数を示す。
【0046】
最適ライトサイズ単位のライト数は、NVMe規格においてDTWIN Write Typicalとして規定されている。最適ライトサイズ単位のライト数は、対応するNVMセットに対して、コントローラ4がDTWIN中に処理できる最適ライト単位のライトの数を示す。
【0047】
最大時間は、NVMe規格においてDTWIN Time Maximumとして規定されている。最大時間は、対応するNVMセットに対して、コントローラ4がDTWINにとどまることが可能な最大時間を示す。
【0048】
第1最小時間は、NVMe規格においてNDWIN Time Minimum Lowとして規定されている。第1最小時間は、対応するNVMセットに対して、コントローラ4が、直前のDTWINに費やした時間に関わらず、DTWINに遷移する前にNDWINにとどまる必要がある最小時間を示す。
【0049】
第2最小時間は、NVMe規格においてNDWIN Time Minimum Highとして規定されている。第2最小時間は、対応するNVMセットに対して、コントローラ4が、直前のDTWINに最大時間とどまった後に、DTWINに遷移する前にNDWINにとどまる必要がある最小時間を示す。第2最小時間は、対応するNVMセットに対して、コントローラ4が直前のDTWINに最大時間とどまった後に、ホスト2がコントローラ4に対してNDWINにとどまることを許可すべき最小時間であるとも云える。第2最小時間は、コントローラ4が次のDTWINに最大時間とどまるための準備に必要である。
【0050】
なお、最大時間、第1最小時間、および第2最小時間は、例えばミリ秒単位の時間で指定される。
【0051】
コントローラ4はホスト2に対して、予想レイテンシを達成するための条件を通知し得る。また、コントローラ4は予想レイテンシを達成するために(すなわちIODを実現するために)、以下の(A)~(C)のように動作する。
(A)コントローラ4は、記憶装置3からホスト2に提示した条件を満たしながら、DTWIN中のNVMセットに対するリード処理およびライト処理を予想レイテンシ以内で行う。
(B)コントローラ4は、記憶装置3からホスト2に提示した条件を満たしながら、NDWIN中のNVMセットに対する定期メンテナンス処理を行う。
(C)コントローラ4は、複数のNVMセットのそれぞれに対するリード処理およびライト処理を、それら複数のNVMセット間で互いに影響を及ぼさないように行う。
【0052】
DTWIN中の複数のNVMセットのそれぞれに対するリード処理およびライト処理を、それら複数のNVMセット間で互いに影響を及ぼすことなく、予想レイテンシ以内で実施するための構成について説明する。構成の1つとして、コントローラ4に、NVMセット毎のリード処理回路およびライト処理回路と、各々の回路が用いる専用のリソースとを設けることが考えられる。例えば16個のNVMセットを管理する場合、コントローラ4には、16個のリード処理回路および16個のライト処理回路と、各回路が用いる専用のリソースとが設けられる。しかし、NVMセット毎にリード処理回路およびライト処理回路とリソースとを設ける構成では、記憶装置のサイズが大きくなる。
【0053】
そのため、本実施形態に係る記憶装置3では、コントローラ4は複数のNVMセットを、高優先度グループ(high priority group)、中優先度グループ(normal priority group)、および低優先度グループ(low priority group)のいずれかに振り分ける。つまり、コントローラ4は、複数のNVMセットをグループ単位で管理する。
【0054】
コントローラ4は、高優先度グループのための高優先度リード回路105を備える。コントローラ4は、高優先度グループに対して専用のリード用リソースを割り当てる。リード用リソースは、リード処理におけるデータ転送用のリソースである。リード用リソースはリードバッファを含む。
【0055】
高優先度リード回路105は、高優先度グループのリード用リソースを用いてリードコマンドを処理する。高優先度リード回路105が処理するリードコマンドは、高優先度グループに属する複数のNVMセットに対するリードコマンドである。
【0056】
コントローラ4は、高優先度グループのための高優先度ライト回路107を備える。コントローラ4は、高優先度グループに対して専用のライト用リソースを割り当てる。ライト用リソースは、ライト処理におけるデータ転送用のリソースである。ライト用リソースはライトバッファを含む。
【0057】
高優先度ライト回路107は、高優先度グループのライト用リソースを用いてライトコマンドを処理する。高優先度ライト回路107が処理するライトコマンドは、高優先度グループに属する複数のNVMセットに対するライトコマンドである。
【0058】
コントローラ4は、中優先度グループのための中優先度リード回路106を備える。コントローラ4は、中優先度グループに対して専用のリード用リソースを割り当てる。
【0059】
中優先度リード回路106は、中優先度グループのリード用リソースを用いてリードコマンドを処理する。中優先度リード回路106が処理するリードコマンドは、中優先度グループに属する複数のNVMセットに対するリードコマンドである。
【0060】
コントローラ4は、中優先度グループのための中優先度ライト回路108を備える。コントローラ4は、中優先度グループに対して専用のライト用リソースを割り当てる。
【0061】
中優先度ライト回路108は、中優先度グループのライト用リソースを用いてライトコマンドを処理する。中優先度ライト回路108が処理するライトコマンドは、中優先度グループに属する複数のNVMセットに対するライトコマンドである。
【0062】
このように記憶装置3では、高優先度グループと中優先度グループの各々に対してリード回路およびライト回路とリソースとが設けられる。記憶装置3は、グループ毎のリード回路およびライト回路とリソースとを用いて、DTWIN中の複数のNVMセットに対するリード処理およびライト処理の予想レイテンシを保障する。これにより、記憶装置3では、例えばNVMセット毎に専用のリード回路およびライト回路と専用のリード用リソースおよびライト用リソースとを設ける場合と比較して、予想レイテンシを保障するために設ける処理回路の数とリソース量とを低減できる。したがって、記憶装置3内のコントローラ4およびリソースに関する回路規模を小さくできる。
【0063】
さらに、コントローラ4は記憶装置3の動作状態に応じて、グループ分けとグループに対するリソースの割り当て量とを動的に変更し得る。コントローラ4は、アクセスが増加しているNVMセットを含むグループがある場合、例えば、そのグループのNVMセットを別のグループに移す。あるいは、コントローラ4は、アクセスが増加しているNVMセットを含むグループがある場合、そのグループに対して、別のグループに割り当てられているリソースの一部を割り当てる。
【0064】
記憶装置3では、グループ分けとリソースの割り当て量の動的な変更によってさらに、予想レイテンシを保障するために設けるリソース量を低減できる。したがって、記憶装置3内のリソースに関する回路規模を小さくできる。
【0065】
次に、記憶装置3内のNVMセットが属する優先度グループについて説明する。1つのNVMセットは、高優先度グループ、中優先度グループ、および低優先度グループのいずれかに属する。高優先度グループ、中優先度グループ、および低優先度グループについてそれぞれ説明する。
【0066】
(高優先度グループ)
高優先度グループは第1優先度を有する。高優先度グループは、予想レイテンシが保障される。高優先度グループは、コマンド応答時間が短い。
【0067】
より具体的には、コントローラ4は、ホスト2による高優先度グループに属するNVMセットに対するリードアクセスおよびライトアクセスの予想レイテンシを保障する。高優先度グループに属するNVMセットを対象とするリードコマンドに対する最大の応答時間と、高優先度グループに属するNVMセットを対象とするライトコマンドに対する最大の応答時間は、例えば第1時間である。つまり、コントローラ4は、高優先度グループに属するNVMセットを対象とするリードコマンドまたはライトコマンドをホスト2から受信した場合、受信したリードコマンドまたはライトコマンドに対する応答を所定の第1時間以内にホスト2に送信する。
【0068】
また、コントローラ4は高優先度グループのための専用の処理回路を備える。コントローラ4は高優先度グループに対して、専用のリソースを割り当てる。コントローラ4は、高優先度グループに対応する処理回路とリソースとを用いて、高優先度グループに属するNVMセットを対象とするリードコマンドおよびライトコマンドの処理を随時行う。高優先度グループに対応する処理回路とリソースの詳細については、図6を参照して後述する。
【0069】
(中優先度グループ)
中優先度グループは第1優先度よりも低い第2優先度を有する。中優先度グループは、予想レイテンシが保障される。中優先度グループは、コマンド応答時間が長い。
【0070】
より具体的には、記憶装置3は、ホスト2による中優先度グループに属するNVMセットに対するリードアクセスおよびライトアクセスの予想レイテンシを保障する。中優先度グループに属するNVMセットを対象とするリードコマンドに対する最大の応答時間と、中優先度グループに属するNVMセットを対象とするライトコマンドに対する最大の応答時間は、例えば第2時間である。つまり、コントローラ4は、中優先度グループに属するNVMセットを対象とするリードコマンドまたはライトコマンドをホスト2から受信した場合、受信したリードコマンドまたはライトコマンドに対する応答を所定の第2時間以内にホスト2に送信する。なお、第2時間は第1時間よりも長い。
【0071】
また、コントローラ4は中優先度グループのための専用の処理回路を備える。コントローラ4は中優先度グループに対して、専用のリソースを割り当てる。コントローラ4は、中優先度グループに対応する処理回路とリソースとを用いて、中優先度グループに属するNVMセットを対象とするリードコマンドおよびライトコマンドの処理を随時行う。中優先度グループに対応する処理回路とリソースの詳細については、図6を参照して後述する。
【0072】
(低優先度グループ)
低優先度グループは第2優先度よりも低い第3優先度を有する。低優先度グループはコマンド応答時間が極端に長い。低優先度グループには、予想レイテンシを保障すべきNVMセットが割り当てられてもよい。低優先度グループには、予想レイテンシを保障しないNVMセットが割り当てられてもよい。
【0073】
より具体的には、ホスト2が、低優先度グループに属する、予想レイテンシを保障すべきNVMセットにアクセスする場合、コントローラ4は予想レイテンシを保障する。ホスト2が、低優先度グループに属する、予想レイテンシを保障しないNVMセットにアクセスする場合、コントローラ4は予想レイテンシを保障しない。コントローラ4は、低優先度グループに属するNVMセットを対象とするリードコマンドおよびライトコマンドの各々に対して、第2時間を超えてから応答し得る。
【0074】
コントローラ4は低優先度グループのための専用の処理回路を備えない。コントローラ4は低優先度グループに対して、専用のリソースを割り当てない。これにより、記憶装置3が備える回路およびリソースの量を削減できる。
【0075】
また、コントローラ4は低優先度リードコマンド記憶部109と低優先度ライトコマンド記憶部110を備える。
【0076】
低優先度リードコマンド記憶部109は、リードコマンドを記憶する。記憶するリードコマンドは、低優先度グループに属するNVMセットに対するリードコマンドである。
【0077】
低優先度ライトコマンド記憶部110は、ライトコマンドを記憶する。記憶するライトコマンドは、低優先度グループに属するNVMセットに対するライトコマンドである。
【0078】
コントローラ4は、記憶されたコマンドの処理を保留(pending)する。そして、コントローラ4は特定のタイミングで、記憶されたコマンドを処理し得る。コントローラ4は、記憶されたコマンドの処理に、高優先度グループのための処理回路または中優先度グループのための処理回路を用いる。
【0079】
図5は、本発明の実施形態に係る記憶装置3内のNVMセットに関するウィンドウと優先度グループの遷移例を示す図である。ここでは、不揮発性メモリ5に対して、8つのNVMセットが設定される場合を例示する。8つのNVMセットは、1から8までのSetIDで特定される。SetIDはNVMセットを識別するための情報(NVM Set Identifier)である。なお、以下では、Set IDがxであるNVMセットを、NVMセット#xと表記する。xは1以上の整数である。なお、不揮発性メモリ5に対して設定されるNVMセットの数は、任意である。
【0080】
図5には、NVMセット#1~#8にそれぞれ対応するウィンドウおよび優先度グループの遷移310~317が示されている。
【0081】
(ウィンドウの遷移)
まず、NVMセットに対するコントローラ4の動作期間の遷移について説明する。以下では、NVMセットに対するコントローラ4の動作期間の遷移を、NVMセットのウィンドウ遷移とも称する。
ウィンドウ制御部121は各NVMセットのウィンドウ遷移を制御する。ウィンドウ制御部121は、ある時刻において、例えばいずれか1つのNVMセットがNDWIN中であり、残りのNVMセットがDTWIN中であるように制御する。ウィンドウ制御部121は、ウィンドウ遷移の制御を、例えば一定時間毎に繰り返し行い得る。
【0082】
図5に示す例では、時刻t0において、ウィンドウ制御部121は、NVMセット#1に対するコントローラ4の動作期間をDTWINに遷移させる。ウィンドウ制御部121は、NVMセット#2に対するコントローラ4の動作期間をNDWINに遷移させる。ウィンドウ制御部121は、その他のNVMセット#3~#8の各々に対するコントローラ4の動作期間をDTWINにとどまらせる。
【0083】
NVMセット#1の遷移310は、時刻t0において、NVMセット#1に対するコントローラ4の動作期間がDTWINに遷移することを示している。NVMセット#2の遷移311は、時刻t0において、NVMセット#2に対するコントローラ4の動作期間がNDWINに遷移することを示している。NVMセット#3~#8の遷移312~317は、時刻t0において、NVMセット#3~#8の各々に対するコントローラ4の動作期間がDTWINにとどまっていることを示している。
【0084】
次に時刻t1において、ウィンドウ制御部121は、NVMセット#2に対するコントローラ4の動作期間をDTWINに遷移させる。ウィンドウ制御部121は、NVMセット#3に対するコントローラ4の動作期間をNDWINに遷移させる。ウィンドウ制御部121は、その他のNVMセット#1,#4~#8の各々に対するコントローラ4の動作期間をDTWINにとどまらせる。
【0085】
NVMセット#2の遷移311は、時刻t1において、NVMセット#2に対するコントローラ4の動作期間がDTWINに遷移することを示している。NVMセット#3の遷移312は、時刻t1において、NVMセット#3に対するコントローラ4の動作期間がNDWINに遷移することを示している。NVMセット#1,#4~#8の遷移310,313~317は、時刻t1において、NVMセット#1,#4~#8の各々に対するコントローラ4の動作期間がDTWINにとどまっていることを示している。
【0086】
次いで時刻t2において、ウィンドウ制御部121は、NVMセット#3に対するコントローラ4の動作期間をDTWINに遷移させる。ウィンドウ制御部121は、NVMセット#4に対するコントローラ4の動作期間をNDWINに遷移させる。ウィンドウ制御部121は、その他のNVMセット#1,#2,#5~#8の各々に対するコントローラ4の動作期間をDTWINにとどまらせる。
【0087】
NVMセット#3の遷移312は、時刻t2において、NVMセット#3に対するコントローラ4の動作期間がDTWINに遷移することを示している。NVMセット#4の遷移313は、時刻t2において、NVMセット#4に対するコントローラ4の動作期間がNDWINに遷移することを示している。NVMセット#1,#2,#5~#8の遷移310,311,314~317は、時刻t2において、NVMセット#1,#2,#5~#8に対するコントローラ4の動作期間の各々がDTWINにとどまっていることを示している。
【0088】
以降も同様にして、ウィンドウ制御部121は、ある時刻において、1つのNVMセットに対するコントローラ4の動作期間がDTWINに遷移し、別の1つのNVMセットに対するコントローラ4の動作期間がNDWINに遷移し、その他のNVMセットに対するコントローラ4の動作期間がDTWINにとどまるように制御する。
【0089】
ウィンドウ遷移の制御により、常に1つのNVMセットがNDWIN中であれば、DTWIN中であるNVMセットの数は、記憶装置3内のNVMセットの総数から1を引いた数(図5では、8-1=7)になる。したがって、コントローラ4は、NVMセットの総数から1を引いた数のNVMセットの予想レイテンシを保障できればよい。常に1つのNVMセットがNDWIN中であって、残りのNVMセットがDTWIN中である状態を、理想状態とも称する。
【0090】
ウィンドウ制御部121は、ホスト2によるDTWINへの遷移要求を受信した場合に、第1最小時間(NDWIN Time Minimum Low)および第2最小時間(NDWIN Time Minimum High)に基づいて、NVMセットに対するコントローラ4の動作期間がNDWINからDTWINに遷移するタイミングを制御し得る。また、ウィンドウ制御部121は、予想レイテンシを保障できないほどのコマンドをホスト2が発行しなければ(すなわち予想レイテンシを達成するための条件を満たす場合)、NVMセットに対するコントローラ4の動作期間をDTWINに最大時間(DTWIN Time Maximum)とどまらせることができる。したがって、ウィンドウ制御部121は、NVMセットのウィンドウ遷移を理想状態に近づけて維持し得る。
【0091】
なお、図5に示したウィンドウ遷移は、理想状態を示す一例である。全てのNVMセット#1~#8に対するコントローラ4の動作期間が同時にDTWINである場合もある。あるいは、2つ以上のNVMセットに対するコントローラ4の動作期間が同時にNDWINである場合もある。
【0092】
(優先度グループの遷移)
NVMセットの優先度グループの遷移について説明する。ここでは、SetIDが小さいNVMセットほど、予想レイテンシを保障するための最大のコマンド応答時間がより短いことを想定する。
【0093】
優先度制御部122は、複数のNVMセットのグループ分けを行う。より具体的には、優先度制御部122は、高優先度グループ、中優先度グループ、および低優先度グループから各NVMセットが属するグループを選択する。グループの選択は、予想レイテンシを保障すべきか否かと、予想レイテンシを保障するための最大のコマンド応答時間とに基づく。グループの選択は、各NVMセットに対する、高優先度、中優先度、および低優先度のいずれかの優先度の割り当てとも云える。
【0094】
優先度制御部122は、DTWIN中のNVMセットの予想レイテンシを保障すべきと判断する。優先度制御部122は、予想レイテンシを保障すべきであって、最大のコマンド応答時間が短いNVMセットを、高優先度グループに振り分ける。また、優先度制御部122は、予想レイテンシを保障すべきであって、最大のコマンド応答時間が長いNVMセットを、中優先度グループに振り分ける。
【0095】
例えば、優先度制御部122は、予想レイテンシを保障するための最大のコマンド応答時間が短いものから順に、4つのNVMセット#1~#4を高優先度グループに振り分ける。そして、優先度制御部122は、残りの4つのNVMセット#5~#8(すなわち最大のコマンド応答時間が長いNVMセット)を中優先度グループに振り分ける。NVMセットが、予想レイテンシを保障するための最大のコマンド応答時間に基づいて振り分けられた優先度グループを、既定優先度グループとも称する。優先度制御部122は、記憶装置3が起動されたことに応じて行う初期設定において、各NVMセットの既定優先度グループを決定し得る。
【0096】
さらに、優先度制御部122は、NDWIN中のNVMセットの予想レイテンシを保障しなくてもよいと判断する。そのため、優先度制御部122は、コントローラ4の動作期間がDTWINからNDWINに遷移したNVMセットを、高優先度グループまたは中優先度グループから低優先度グループに移す。また、優先度制御部122は、コントローラ4の動作期間がNDWINからDTWINに遷移したNVMセットを、低優先度グループから元の高優先度グループまたは中優先度グループに戻す。
【0097】
図5に示す例では、まず時刻t0において、優先度制御部122は、NVMセット#1,#3,#4を高優先度グループに振り分ける。優先度制御部122は、NVMセット#5~#8を中優先度グループに振り分ける。優先度制御部122は、NVMセット#2を低優先度グループに振り分ける。なお、時刻t0において、NVMセット#2に対するコントローラ4の動作期間はNDWINに遷移している。
【0098】
NVMセット#1,#3,#4の遷移310,312,313は、時刻t0において、NVMセット#1,#3,#4が高優先度グループに属していることを示している。NVMセット#2の遷移311は、時刻t0において、NVMセット#2が低優先度グループに属していることを示している。NVMセット#5~#8の遷移314~317は、時刻t0において、NVMセット#5~#8が中優先度グループに属していることを示している。
【0099】
次に優先度制御部122は、時刻t1において、NVMセット#2を高優先度グループに戻す。優先度制御部122は、時刻t1において、NVMセット#3を低優先度グループに移す。なお、時刻t1において、NVMセット#2に対するコントローラ4の動作期間はNDWINからDTWINに遷移している。NVMセット#3に対するコントローラ4の動作期間はDTWINからNDWINに遷移している。また、NVMセット#1,#4は高優先度グループに属したままである。NVMセット#5~#7は中優先度グループに属したままである。
【0100】
NVMセット#1,#2,#4の遷移310,311,313は、時刻t1において、NVMセット#1,#2,#4が高優先度グループに属していることを示している。NVMセット#3の遷移312は、時刻t1において、NVMセット#3が低優先度グループに属していることを示している。NVMセット#5~#8の遷移314~317は、時刻t1において、NVMセット#5~#8が中優先度グループに属していることを示している。
【0101】
次いで、優先度制御部122は、時刻t2において、NVMセット#3を高優先度グループに戻す。優先度制御部122は、時刻t2において、NVMセット#4を低優先度グループに移す。なお、時刻t2において、NVMセット#3に対するコントローラ4の動作期間はNDWINからDTWINに遷移している。NVMセット#4に対するコントローラ4の動作期間はDTWINからNDWINに遷移している。また、NVMセット#1,#2は高優先度グループに属したままである。NVMセット#5~#8は中優先度グループに属したままである。
【0102】
NVMセット#1~#3の遷移310~312は、時刻t2において、NVMセット#1~#3が高優先度グループに属していることを示している。NVMセット#4の遷移313は、時刻t2において、NVMセット#4が低優先度グループに属していることを示している。NVMセット#5~#8の遷移314~317は、時刻t3において、NVMセット#5~#8が中優先度グループに属していることを示している。
【0103】
以降も同様にして、優先度制御部122は、コントローラ4の動作期間の遷移に応じて、対応するNVMセットが属する優先度グループを変更する。したがって、優先度制御部122は、DTWIN中のNVMセットを、予想レイテンシを保障するための最大のコマンド応答時間に基づいて、高優先度グループと中優先度グループのいずれかに振り分けるように制御し得る。また、優先度制御部122は、NDWIN中のNVMセットを低優先度グループに振り分けるように制御し得る。
【0104】
図6は、本発明の実施形態に係る記憶装置3において実行されるコマンド処理動作を示すブロック図である。コマンド処理動作は、ホストI/F101を介して受信したリードコマンドおよびライトコマンドを処理するための動作である。
【0105】
ウィンドウ制御部121は、NVMセットに対するコントローラ4の動作期間のDTWINとNDWINとの間の遷移を制御する。ウィンドウ制御部121の具体的な動作については、図3および図5を参照して上述した通りである。
【0106】
優先度制御部122はNVMセットが属する優先度グループを制御する。また、優先度制御部122はリードコマンドまたはライトコマンドが対象とするNVMセットが属する優先度グループを特定する。より具体的には、優先度制御部122は、例えばリードコマンドまたはライトコマンドに含まれるネームスペース識別子を用いて、リードコマンドまたはライトコマンドが対象とするネームスペースを特定する。そして、優先度制御部122は、特定したネームスペースを含むNVMセットを特定する。あるいは、優先度制御部122は、リードコマンドまたはライトコマンドを取得したサブミッションキューがいずれのNVMセットに対応するかに基づいて、リードコマンドまたはライトコマンドが対象とするNVMセットを特定する。1つのサブミッションキューには、対応する1つのNVMセットに対するコマンドが蓄積される。そして、優先度制御部122は特定したNVMセットが属する優先度グループを特定する。優先度制御部122は特定した優先度グループに応じて、コマンドの送出先を切り替える。
【0107】
コマンド送出先の切り替えとそれに応じた処理の例について以下に説明する。
【0108】
(1)高優先度グループに属するNVMセットに対するリードコマンドを受信した場合
優先度制御部122はリードコマンドを高優先度リード回路105に送出する。高優先度リード回路105は、高優先度グループのための専用のリード回路である。高優先度リード回路105は高優先度リード用リソース511を用いて、リードコマンドに応じたリード処理を行う。つまり、高優先度リード回路105は高優先度リード用リソース511を用いて、高優先度グループに属するNVMセットからデータを読み出す。高優先度リード用リソース511は、高優先度グループに対して割り当てられたリード処理用のリソースである。
【0109】
(2)中優先度グループに属するNVMセットに対するリードコマンドを受信した場合
優先度制御部122はリードコマンドを中優先度リード回路106に送出する。中優先度リード回路106は、中優先度グループのための専用のリード回路である。中優先度リード回路106は中優先度リード用リソース512を用いて、リードコマンドに応じたリード処理を行う。つまり、中優先度リード回路106は中優先度リード用リソース512を用いて、中優先度グループに属するNVMセットからデータを読み出す。中優先度リード用リソース512は、中優先度グループに対して割り当てられたリード処理用のリソースである。
【0110】
なお、高優先度リード回路105によるリード処理と、中優先度リード回路106によるリード処理とは、並行に、且つ独立して行われる。したがって、高優先度リード回路105と中優先度リード回路106は、互いに影響を及ぼさない回路構成を有している。
【0111】
(3)低優先度グループに属するNVMセットに対するリードコマンドを受信した場合
優先度制御部122は、低優先度グループに属するNVMセットに対するリードコマンドを受信してすぐに処理しない。すなわち、優先度制御部122は、低優先度グループに属するNVMセットに対するリードコマンドの処理を保留する。具体的には、優先度制御部122はリードコマンドを低優先度リードコマンド記憶部109に送出する。低優先度リードコマンド記憶部109は、送出されたリードコマンドを記憶する。
【0112】
優先度制御部122は特定のタイミングで、低優先度リードコマンド記憶部109が記憶しているリードコマンドを、高優先度リード回路105または中優先度リード回路106に送出してもよい。高優先度リード回路105または中優先度リード回路106は、送出されたリードコマンドを処理する。特定のタイミングは、例えば一定時間毎のタイミングである。
【0113】
あるいは、優先度制御部122は、低優先度リードコマンド記憶部109が記憶しているリードコマンドを、アイドル時間中の高優先度リード回路105に送出してもよい。アイドル時間中の高優先度リード回路105は、処理量(例えば処理中のリードデータサイズ)が閾値未満である。
【0114】
また、優先度制御部122は、低優先度リードコマンド記憶部109が記憶しているリードコマンドを、アイドル時間中の中優先度リード回路106に送出してもよい。アイドル時間中の中優先度リード回路106は、処理量が閾値未満である。
【0115】
(4)高優先度グループに属するNVMセットに対するライトコマンドを受信した場合
優先度制御部122はライトコマンドを高優先度ライト回路107に送出する。高優先度ライト回路107は、高優先度グループのための専用のライト回路である。高優先度ライト回路107は高優先度ライト用リソース513を用いて、ライトコマンドに応じたライト処理を行う。つまり、高優先度ライト回路107は高優先度ライト用リソース513を用いて、高優先度グループに属するNVMセットにデータを書き込む。高優先度ライト用リソース513は高優先度グループに対して割り当てられたライト処理用のリソースである。
【0116】
(5)中優先度グループに属するNVMセットに対するライトコマンドを受信した場合
優先度制御部122はライトコマンドを中優先度ライト回路108に送出する。中優先度ライト回路108は、中優先度グループのための専用のライト回路である。中優先度ライト回路108は中優先度ライト用リソース514を用いて、ライトコマンドに応じたライト処理を行う。つまり、中優先度ライト回路108は中優先度ライト用リソース514を用いて、中優先度グループに属するNVMセットにデータを書き込む。中優先度ライト用リソース514は中優先度グループに対して割り当てられたライト処理用のリソースである。
【0117】
なお、高優先度ライト回路107によるライト処理と、中優先度ライト回路108によるライト処理とは、並行に、且つ独立して行われる。したがって、高優先度ライト回路107と中優先度ライト回路108は、互いに影響を及ぼさない回路構成を有している。
【0118】
(6)低優先度グループに属するNVMセットに対するライトコマンドを受信した場合
優先度制御部122は、低優先度グループに属するNVMセットに対するライトコマンドを受信してすぐに処理しない。すなわち、優先度制御部122は、低優先度グループに属するNVMセットに対するライトコマンドの処理を保留する。具体的には、優先度制御部122はライトコマンドを低優先度ライトコマンド記憶部110に送出する。低優先度ライトコマンド記憶部110は、送出されたライトコマンドを記憶する。
【0119】
優先度制御部122は特定のタイミングで、低優先度ライトコマンド記憶部110が記憶しているライトコマンドを、高優先度ライト回路107または中優先度ライト回路108に送出してもよい。高優先度ライト回路107または中優先度ライト回路108は、送出されたライトコマンドを処理する。特定のタイミングは、例えば一定時間毎のタイミングである。
【0120】
あるいは、優先度制御部122は、低優先度ライトコマンド記憶部110が記憶しているライトコマンドを、アイドル時間中の高優先度ライト回路107に送出してもよい。アイドル時間中の高優先度ライト回路107は、処理量(例えば処理中のライトデータサイズ)が閾値未満である。
【0121】
また、優先度制御部122は、低優先度ライトコマンド記憶部110が記憶しているライトコマンドを、アイドル時間中の中優先度ライト回路108に、送出してもよい。アイドル時間中の中優先度ライト回路108は、処理量が閾値未満である。
【0122】
リソース制御部123は、記憶装置3が備えるリソース51の割り当てを制御する。
【0123】
リソース制御部123は高優先度グループに対して、高優先度リード用リソース511と高優先度ライト用リソース513とを割り当てる。高優先度グループに属するNVMセットに対するリードコマンドの処理には、高優先度リード用リソース511が用いられる。また、高優先度グループに属するNVMセットに対するライトコマンドの処理には、高優先度ライト用リソース513が用いられる。
【0124】
リソース制御部123は中優先度グループに対して、中優先度リード用リソース512と中優先度ライト用リソース514とを割り当てる。中優先度グループに属するNVMセットに対するリードコマンドの処理には、中優先度リード用リソース512が用いられる。また、中優先度グループに属するNVMセットに対するライトコマンドの処理には、中優先度ライト用リソース514が用いられる。
【0125】
リソース制御部123は残りのリソースをその他用リソース515として割り当てる。その他用リソース515は、例えば、プリフェッチ処理および定期メンテナンス処理に用いられる。
【0126】
定期メンテナンス処理部124は、NDWIN中のNVMセットに対する定期メンテナンス処理を行う。定期メンテナンス処理には、その他用リソース515の少なくとも一部が用いられる。
【0127】
また、優先度制御部122は、記憶装置3の動作状態に応じて、各NVMセットが属する優先度グループを動的に変更し得る。優先度グループの動的な変更により、DTWIN中のNVMセットに対するリード処理およびライト処理の予想レイテンシが保障される。
【0128】
リソース制御部123は、記憶装置3の動作状態に応じて、リソースの割り当てを動的に変更し得る。リソースの割り当ての動的な変更により、予想レイテンシの保障が最小限のリソースで行われる。
【0129】
優先度グループの動的な変更とリソースの割り当ての動的な変更の具体例について、以下に説明する。
【0130】
(優先度グループ/リソース割り当ての変更例1)
優先度制御部122は、コントローラ4の動作期間がNDWINに遷移したNVMセットを、低優先度グループに入れる。例えば、優先度制御部122は、コントローラ4の動作期間がDTWINからNDWINに遷移した、高優先度グループまたは中優先度グループに属するNVMセットを、低優先度グループに移す。これは、NDWIN中のNVMセットに対するリード処理およびライト処理が、DTWIN中のNVMセットに対するリード処理およびライト処理に影響を与えないようにするためである。
【0131】
また、優先度制御部122は、コントローラ4の動作期間がDTWINに遷移したNVMセットを、高優先度グループまたは中優先度グループに入れる。例えば、優先度制御部122は、コントローラ4の動作期間がNDWINからDTWINに遷移した、低優先度グループに属するNVMセットを、NDWINに遷移する前に属していた元の高優先度グループまたは中優先度グループに移す。
【0132】
(優先度グループ/リソース割り当ての変更例2)
優先度制御部122は、高優先度グループの処理中のリードデータサイズが許容リードデータサイズを超える可能性がある場合、高優先度グループに属する複数のNVMセットの少なくとも1つを中優先度グループに移す。あるいは、リソース制御部123は、高優先度グループの処理中のリードデータサイズが許容リードデータサイズを超える可能性がある場合、中優先度リード用リソース512の一部を高優先度リード用リソース511として割り当てる。
【0133】
高優先度グループの処理中のリードデータサイズは、高優先度リード回路105が、処理中の特定の期間内に、高優先度グループに属するNVMセットから読み出したデータのサイズである。
【0134】
高優先度グループの許容リードデータサイズは、高優先度リード回路105が、処理中の特定の期間内に、予想レイテンシを保障しながら、高優先度グループに属するNVMセットから読み出し可能なデータサイズの上限である。高優先度グループの許容リードデータサイズは、割り当てられている高優先度リード用リソース511の量に応じて変動する。
【0135】
なお、優先度制御部122およびリソース制御部123は、高優先度リード回路105、中優先度リード回路106、高優先度ライト回路107、および中優先度ライト回路108の各々による処理中のデータサイズを取得可能である。
【0136】
優先度制御部122およびリソース制御部123は、例えば、高優先度グループの、許容リードデータサイズに対する処理中のリードデータサイズの割合が閾値(例えばA%)を超えた場合に、高優先度グループの処理中のリードデータサイズが許容リードデータサイズを超える可能性があると判断する。あるいは、優先度制御部122およびリソース制御部123は、単位時間当たりの高優先度グループの処理中のリードデータサイズの変化量が閾値を超えた場合に、高優先度グループの処理中のリードデータサイズが許容リードデータサイズを超える可能性があると判断する。
【0137】
優先度制御部122は、中優先度グループの処理中のリードデータサイズが許容リードデータサイズを超える可能性がある場合、中優先度グループに属する複数のNVMセットの少なくとも1つを高優先度グループに移す。あるいは、リソース制御部123は、中優先度グループの処理中のリードデータサイズが許容リードデータサイズを超える可能性がある場合、高優先度リード用リソース511の一部を中優先度リード用リソース512として割り当てる。
【0138】
中優先度グループの処理中のリードデータサイズは、中優先度リード回路106が、処理中の特定の期間内に、中優先度グループに属するNVMセットから読み出したデータのサイズである。
【0139】
中優先度グループの許容リードデータサイズは、中優先度リード回路106が、処理中の特定の期間内に、予想レイテンシを保障しながら、中優先度グループに属するNVMセットから読み出し可能なデータサイズの上限である。中優先度グループの許容リードデータサイズは、割り当てられている中優先度リード用リソース512の量に応じて変動する。
【0140】
優先度制御部122およびリソース制御部123は、例えば、中優先度グループの、許容リードデータサイズに対する処理中のリードデータサイズの割合が閾値を超えた場合に、中優先度グループの処理中のリードデータサイズが許容リードデータサイズを超える可能性があると判断する。あるいは、優先度制御部122およびリソース制御部123は、単位時間当たりの中優先度グループの処理中のリードデータサイズの変化量が閾値を超えた場合に、中優先度グループの処理中のリードデータサイズが許容リードデータサイズを超える可能性があると判断する。
【0141】
優先度制御部122は、高優先度グループの処理中のライトデータサイズが許容ライトデータサイズを超える可能性がある場合、高優先度グループに属する複数のNVMセットの少なくとも1つを中優先度グループに移す。あるいは、リソース制御部123は、高優先度グループの処理中のライトデータサイズが許容ライトデータサイズを超える可能性がある場合、中優先度ライト用リソース514の一部を高優先度ライト用リソース513として割り当てる。
【0142】
高優先度グループの処理中のライトデータサイズは、高優先度ライト回路107が、処理中の特定の期間内に、高優先度グループに属するNVMセットに書き込んだデータのサイズである。
【0143】
高優先度グループの許容ライトデータサイズは、高優先度ライト回路107が、処理中の特定の期間内に、予想レイテンシを保障しながら、高優先度グループに属するNVMセットに書き込み可能なデータサイズの上限である。高優先度グループの許容ライトデータサイズは、割り当てられている高優先度ライト用リソース513の量に応じて変動する。
【0144】
優先度制御部122およびリソース制御部123は、例えば、高優先度グループの、許容ライトデータサイズに対する処理中のライトデータサイズの割合が閾値を超えた場合に、高優先度グループの処理中のライトデータサイズが許容ライトデータサイズを超える可能性があると判断する。あるいは、優先度制御部122およびリソース制御部123は、単位時間当たりの高優先度グループの処理中のライトデータサイズの変化量が閾値を超えた場合に、高優先度グループの処理中のライトデータサイズが許容ライトデータサイズを超える可能性があると判断する。
【0145】
優先度制御部122は、中優先度グループの処理中のライトデータサイズが許容ライトデータサイズを超える可能性がある場合、中優先度グループに属する複数のNVMセットの少なくとも1つを高優先度グループに移す。あるいは、リソース制御部123は、中優先度グループの処理中のライトデータサイズが許容ライトデータサイズを超える可能性がある場合、高優先度ライト用リソース513の一部を中優先度ライト用リソース514として割り当てる。
【0146】
中優先度グループの処理中のライトデータサイズは、中優先度ライト回路108が、処理中の特定の期間内に、中優先度グループに属するNVMセットに書き込んだデータのサイズである。
【0147】
中優先度グループの許容ライトデータサイズは、中優先度ライト回路108が、処理中の特定の期間内に、予想レイテンシを保障しながら、中優先度グループに属するNVMセットに書き込み可能なデータサイズの上限である。中優先度グループの許容ライトデータサイズは、割り当てられている中優先度ライト用リソース514の量に応じて変動する。
【0148】
優先度制御部122およびリソース制御部123は、例えば、中優先度グループの、許容ライトデータサイズに対する処理中のライトデータサイズの割合が閾値を超えた場合に、中優先度グループの処理中のライトデータサイズが許容ライトデータサイズを超える可能性があると判断する。あるいは、優先度制御部122およびリソース制御部123は、単位時間当たりの中優先度グループの処理中のライトデータサイズの変化量が閾値を超えた場合に、中優先度グループの処理中のライトデータサイズが許容ライトデータサイズを超える可能性があると判断する。
【0149】
図7は、本発明の実施形態に係る記憶装置3内のリソース割り当ての変更例を示す図である。ここでは、リソース制御部123が、高優先度グループの処理中のリードデータサイズが許容リードデータサイズを超える可能性があると判断して、リソース割り当てを変更する場合について例示する。
【0150】
記憶装置3内のリソース51は、高優先度リード用リソース511、中優先度リード用リソース512、高優先度ライト用リソース513、中優先度ライト用リソース514、およびその他用リソース515として割り当てられている。
【0151】
リソース制御部123は、高優先度グループの処理中のリードデータサイズが許容リードデータサイズを超える可能性がある場合、中優先度リード用リソース512の一部を高優先度リード用リソース511として割り当てる。これにより、図7に示すように、高優先度リード用リソース511が増加すると共に、中優先度リード用リソース512が減少する。したがって、高優先度グループの許容リードデータサイズが増加する。また、中優先度グループの許容リードデータサイズが減少する。
【0152】
高優先度リード回路105は、増加した高優先度リード用リソース511を用いる。これにより、高優先度リード回路105は、高優先度グループに属するNVMセットを対象とするリードコマンドに対して、最大のコマンド応答時間以内に応答できる。したがって、コントローラ4は、高優先度グループに属するNVMセットに対するリードアクセスにおいて、予想レイテンシを保障できる。
【0153】
中優先度グループの処理中のリードデータサイズが許容リードデータサイズを超える可能性がある場合、高優先度グループの処理中のライトデータサイズが許容ライトデータサイズを超える可能性がある場合、および中優先度グループの処理中のライトデータサイズが許容ライトデータサイズを超える可能性がある場合についても、リソース制御部123はリソース割り当ての変更を同様に行い得る。したがって、コントローラ4は、中優先度グループに属するNVMセットに対するリードアクセス、高優先度グループに属するNVMセットに対するライトアクセス、および中優先度グループに属するNVMセットに対するライトアクセスにおいて、予想レイテンシを保障できる。
【0154】
(優先度グループ/リソース割り当ての変更例3)
リソース制御部123は、高優先度グループの処理中のリードデータサイズと中優先度グループの処理中のリードデータサイズが共に、各々の許容リードデータサイズを超える可能性がある場合、高優先度リード用リソース511および中優先度リード用リソース512として割り当てられる総リソース量を増加させる。具体的には、リソース制御部123は、例えばその他用リソース515の一部を、高優先度リード用リソース511と中優先度リード用リソース512の少なくとも一方として割り当てる。
【0155】
リソース制御部123が、高優先度グループの処理中のリードデータサイズと中優先度グループの処理中のリードデータサイズが共に、各々の許容リードデータサイズを超える可能性があることを判断する動作例を説明する。
【0156】
まず、リソース制御部123は、高優先度グループの許容リードデータサイズと中優先度グループの許容リードデータサイズとの和を算出する。高優先度グループの許容リードデータサイズと中優先度グループの許容リードデータサイズとの和を、総許容リードデータサイズとも称する。
【0157】
次に、リソース制御部123は、高優先度グループの処理中のリードデータサイズと中優先度グループの処理中のリードデータサイズとの和を算出する。高優先度グループの処理中のリードデータサイズと中優先度グループの処理中のリードデータサイズとの和を、処理中の総リードデータサイズとも称する。
【0158】
そして、リソース制御部123は、総許容リードデータサイズに対する処理中の総リードデータサイズの割合が閾値(例えばB%)を超えた場合に、高優先度グループの処理中のリードデータサイズと中優先度グループの処理中のリードデータサイズが共に、各々の許容リードデータサイズを超える可能性があると判断する。
【0159】
また、リソース制御部123は、高優先度グループの処理中のライトデータサイズと中優先度グループの処理中のライトデータサイズが共に、各々の許容ライトデータサイズを超える可能性がある場合、高優先度ライト用リソース513および中優先度ライト用リソース514として割り当てられる総リソース量を増加させる。具体的には、リソース制御部123は、例えばその他用リソース515の一部を、高優先度ライト用リソース513と中優先度ライト用リソース514の少なくとも一方として割り当てる。
【0160】
リソース制御部123が、高優先度グループの処理中のライトデータサイズと中優先度グループの処理中のライトデータサイズが共に、各々の許容ライトデータサイズを超える可能性があることを判断する動作例を説明する。
【0161】
まず、リソース制御部123は、高優先度グループの許容ライトデータサイズと中優先度グループの許容ライトデータサイズとの和を算出する。高優先度グループの許容ライトデータサイズと中優先度グループの許容ライトデータサイズとの和を、総許容ライトデータサイズとも称する。
【0162】
次に、リソース制御部123は、高優先度グループの処理中のライトデータサイズと中優先度グループの処理中のライトデータサイズとの和を算出する。高優先度グループの処理中のライトデータサイズと中優先度グループの処理中のライトデータサイズとの和を、処理中の総ライトデータサイズとも称する。
【0163】
そして、リソース制御部123は、総許容ライトデータサイズに対する処理中の総ライトデータサイズの割合が閾値を超えた場合に、高優先度グループの処理中のライトデータサイズと中優先度グループの処理中のライトデータサイズが共に、各々の許容ライトデータサイズを超える可能性があると判断する。
【0164】
図8は、本発明の実施形態に係る記憶装置3内のリソース割り当ての別の変更例を示す図である。ここでは、リソース制御部123が、高優先度グループの処理中のリードデータサイズと中優先度グループの処理中のリードデータサイズが共に、各々の許容リードデータサイズを超える可能性があると判断して、リソース割り当てを変更する場合について例示する。
【0165】
記憶装置3内のリソース51は、高優先度リード用リソース511、中優先度リード用リソース512、高優先度ライト用リソース513、中優先度ライト用リソース514、およびその他用リソース515として割り当てられている。
【0166】
リソース制御部123は、高優先度グループの処理中のリードデータサイズと中優先度グループの処理中のリードデータサイズが共に、各々の許容リードデータサイズを超える可能性がある場合、その他用リソース515の一部を高優先度リード用リソース511および中優先度リード用リソース512として割り当てる。これにより、図8に示すように、高優先度リード用リソース511および中優先度リード用リソース512が増加すると共に、その他用リソース515が減少する。したがって、高優先度グループの許容リードデータサイズが増加する。また、中優先度グループの許容リードデータサイズが増加する。
【0167】
高優先度リード回路105は、増加した高優先度リード用リソース511を用いる。これにより、高優先度リード回路105は、高優先度グループに属するNVMセットを対象とするリードコマンドに対して、最大のコマンド応答時間以内に応答できる。したがって、コントローラ4は、高優先度グループに属するNVMセットに対するリードアクセスにおいて、予想レイテンシを保障できる。
【0168】
また、中優先度リード回路106は、増加した中優先度リード用リソース512を用いる。これにより、中優先度リード回路106は、中優先度グループに属するNVMセットを対象とするリードコマンドに対して、最大のコマンド応答時間以内に応答できる。したがって、コントローラ4は、中優先度グループに属するNVMセットに対するリードアクセスにおいて、予想レイテンシを保障できる。
【0169】
なお、リソース制御部123は、その他用リソース515の一部を、高優先度リード用リソース511および中優先度リード用リソース512のいずれか一方として割り当ててもよい。
【0170】
また、高優先度グループの処理中のライトデータサイズと中優先度グループの処理中のライトデータサイズが共に、各々の許容ライトデータサイズを超える可能性がある場合についても、リソース制御部123はリソース割り当ての変更を同様に行い得る。したがって、コントローラ4は、高優先度グループに属するNVMセットに対するライトアクセス、および中優先度グループに属するNVMセットに対するライトアクセスにおいて、予想レイテンシを保障できる。
【0171】
図9は、本発明の実施形態に係る記憶装置3における、グループ毎の処理中のリードデータサイズに応じたグループ分けおよびリソース割り当ての制御例を示す図である。図9には、NVMセット#1~#8にそれぞれ対応するウィンドウおよび優先度グループの遷移310~317が示されている。また図9には、高優先度グループの処理中のリードデータサイズ321、中優先度グループの処理中のリードデータサイズ322、高優先度グループの許容リードデータサイズ323、および中優先度グループの許容リードデータサイズ324の時系列の変化が示されている。
【0172】
時刻t11において、優先度制御部122は、中優先度グループの処理中のリードデータサイズ322が、中優先度グループの許容リードデータサイズ324を超える可能性があると判断する。そして、優先度制御部122は、中優先度グループに属するNVMセットの1つ(ここではNVMセット#5)を高優先度グループに移動する。NVMセット#5の遷移314は、時刻t11において、NVMセット#5が中優先度グループから高優先度グループに移されたことを示している。中優先度リード回路106は、移動したNVMセット#5を対象とするリードコマンドを処理せずに済む。そのため、中優先度グループの処理中のリードデータサイズ322が減少し得る。これにより、中優先度グループに属するNVMセットに対するリードアクセスにおいて、予想レイテンシが保障できなくなることを回避できる。
【0173】
時刻t12において、リソース制御部123は、高優先度グループの処理中のリードデータサイズ321が、高優先度グループの許容リードデータサイズ323を超える可能性があると判断する。そして、リソース制御部123は、中優先度リード用リソース512の一部を高優先度リード用リソース511として割り当てる。これにより、高優先度グループの許容リードデータサイズ323が増加し、中優先度グループの許容リードデータサイズ324が減少する。したがって、高優先度グループに属するNVMセットに対するリードアクセスにおいて、予想レイテンシが保障できなくなることを回避できる。
【0174】
時刻t13において、リソース制御部123は、高優先度グループの処理中のリードデータサイズ321が許容リードデータサイズ323を超える可能性があり、且つ中優先度グループの処理中のリードデータサイズ322が許容リードデータサイズ324を超える可能性があると判断する。そして、リソース制御部123は、高優先度リード用リソース511および中優先度リード用リソース512として割り当てられる総リソース量を増加させる。リソース制御部123は、その他用リソース515の一部を用いて、総リソース量を増加させる。より詳しくは、リソース制御部123は、例えばその他用リソース515の一部を中優先度リード用リソース512として割り当てる。これにより、中優先度グループの許容リードデータサイズ324が増加する。したがって、中優先度グループに属するNVMセットに対するリードアクセスにおいて、予想レイテンシが保障できなくなることを回避できる。
【0175】
なお、リソース制御部123は、その他用リソース515の一部を分割して、中優先度リード用リソース512と高優先度リード用リソース511とにそれぞれ割り当ててもよい。割り当てにより、中優先度グループの許容リードデータサイズ324と、高優先度グループの許容リードデータサイズ323とが増加する。したがって、中優先度グループおよび高優先度グループに属するNVMセットに対するリードアクセスにおいて、予想レイテンシが保障できなくなることを回避できる。
【0176】
時刻t14において、リソース制御部123は、中優先度グループの処理中のリードデータサイズ322が許容リードデータサイズ324を超える可能性がないと判断する。そして、リソース制御部123は、高優先度リード用リソース511および中優先度リード用リソース512として割り当てられる総リソース量を元に戻す。より詳しくは、リソース制御部123は、中優先度リード用リソース512として割り当てられているその他用リソース515の一部を、その他用リソース515に戻す(すなわち、その他用リソース515として再度割り当てる)。これにより、中優先度グループおよび高優先度グループに属するNVMセットに対するリードアクセスにおいて、予想レイテンシを保障するために用いる総リソース量を、最小限にできる。
【0177】
(優先度グループ/リソース割り当ての変更例4)
優先度制御部122は、高優先度グループの1つのNVMセットに対する処理中のリードデータサイズが、高優先度グループの許容リードデータサイズを超える可能性がある場合、高優先度グループに属する全てのNVMセットからその1つのNVMセットを除外したNVMセットを、低優先度グループに移す。より具体的には、優先度制御部122は、例えば高優先度グループの1つのNVMセットに対する処理中のリードデータサイズが閾値を超えた場合に、高優先度グループから低優先度グループへのNVMセットの移動を行う。
【0178】
優先度制御部122は、中優先度グループの1つのNVMセットに対する処理中のリードデータサイズが、中優先度グループの許容リードデータサイズを超える可能性がある場合、中優先度グループに属する全てのNVMセットからその1つのNVMセットを除外したNVMセットを、低優先度グループに移す。より具体的には、優先度制御部122は、例えば中優先度グループの1つのNVMセットに対する処理中のリードデータサイズが閾値を超えた場合に、中優先度グループから低優先度グループへのNVMセットの移動を行う。
【0179】
優先度制御部122は、高優先度グループの1つのNVMセットに対する処理中のライトデータサイズが、高優先度グループの許容ライトデータサイズを超える可能性がある場合、高優先度グループに属する全てのNVMセットからその1つのNVMセットを除外したNVMセットを、低優先度グループに移す。より具体的には、優先度制御部122は、例えば高優先度グループの1つのNVMセットに対する処理中のライトデータサイズが閾値を超えた場合に、高優先度グループから低優先度グループへのNVMセットの移動を行う。
【0180】
優先度制御部122は、中優先度グループの1つのNVMセットに対する処理中のライトデータサイズが、中優先度グループの許容ライトデータサイズを超える可能性がある場合、中優先度グループに属する全てのNVMセットからその1つのNVMセットを除外したNVMセットを、低優先度グループに移す。より具体的には、優先度制御部122は、例えば中優先度グループの1つのNVMセットに対する処理中のライトデータサイズが閾値を超えた場合に、中優先度グループから低優先度グループへのNVMセットの移動を行う。
【0181】
図10は、本発明の実施形態に係る記憶装置3における、高優先度グループの処理中のリードデータサイズに応じたグループ分けの制御例を示す図である。図10には、NVMセット#1~#8にそれぞれ対応するウィンドウおよび優先度グループの遷移310~317が示されている。また図10には、高優先度グループの処理中のリードデータサイズ321、高優先度グループの許容リードデータサイズ323、およびNVMセット#1に対する処理中のリードデータサイズ332の時系列の変化が示されている。
【0182】
時刻t21において、優先度制御部122は、高優先度グループに属するNVMセット#1に対する処理中のリードデータサイズ332が、高優先度グループの許容リードデータサイズ323を超える可能性があると判断する。そして、優先度制御部122は、高優先度グループに属する全てのNVMセット#1~#5からNVMセット#1を除いたNVMセット#2~#4を低優先度グループに移す。NVMセット#2~#4の遷移311~313は、時刻t21において、NVMセット#2~#4が高優先度グループから低優先度グループに移されたことを示している。
【0183】
高優先度リード回路105は、移動したNVMセット#2~#4を対象とするリードコマンドを処理せずに済む。そのため、高優先度グループの処理中のリードデータサイズ321が減少し得る。これにより、高優先度グループに属するNVMセットに対するリードアクセスにおいて、予想レイテンシが保障できなくなることを回避できる。なお、NVMセット#2~#4を低優先度グループに移動した後、高優先度グループの処理中のリードデータサイズ321は、NVMセット#1に対する処理中のリードデータサイズ332と一致する。
【0184】
高優先度リード回路105がDTWIN中にNVMセット#1から読み出し可能なデータ量は、例えばDTWIN Read Typicalにより予め決まっている。そのため、NVMセット#1に対する処理中のリードデータサイズ332は、時間の経過と共に小さくなる。NVMセット#1に対する処理中のリードデータサイズ332が小さくなり、高優先度グループの処理中のリードデータサイズ321(=NVMセット#1に対する処理中のリードデータサイズ332)が許容リードデータサイズ323を超える可能性がなくなった場合、優先度制御部122は、NVMセット#2~#4を順次、低優先度グループから高優先度グループに戻す。
【0185】
より具体的には、時刻t22において、優先度制御部122は、高優先度グループの処理中のリードデータサイズ321が許容リードデータサイズ323を超える可能性がないと判断する。そして、優先度制御部122は、NVMセット#2を、低優先度グループから高優先度グループに戻す。NVMセット#2の遷移311は、時刻t22において、NVMセット#2が低優先度グループから高優先度グループに移されたことを示している。
【0186】
時刻t23において、優先度制御部122は、高優先度グループの処理中のリードデータサイズ321が許容リードデータサイズ323を超える可能性がないと判断する。そして、優先度制御部122は、NVMセット#3を、低優先度グループから高優先度グループに戻す。NVMセット#3の遷移312は、時刻t23において、NVMセット#3が低優先度グループから高優先度グループに移されたことを示している。
【0187】
時刻t24において、優先度制御部122は、高優先度グループの処理中のリードデータサイズ321が許容リードデータサイズ323を超える可能性がないと判断する。そして、優先度制御部122は、NVMセット#4を、低優先度グループから高優先度グループに戻す。NVMセット#4の遷移313は、時刻t24において、NVMセット#4が低優先度グループから高優先度グループに移されたことを示している。
【0188】
以上の図10に示した優先度制御部122の動作により、処理中のリードデータサイズが非常に大きくなったNVMセットに対するリードアクセスにおいて、予想レイテンシが保証できなくなることを回避できる。
【0189】
(優先度グループ/リソース割り当ての変更例5)
リソース制御部123は、定期メンテナンス用リソースの量を動的に調整してもよい。リソース制御部123は、定期メンテナンス処理部124がNVMセットに対する定期メンテナンス処理をNDWIN中に完了できない可能性がある場合、定期メンテナンス用リソースの量を増加させる。定期メンテナンス用リソースの増加により、定期メンテナンス処理部124は、NVMセットに対する定期メンテナンス処理をNDWIN中に完了できる。
【0190】
図11は、本発明の実施形態に係る記憶装置3内のリソース割り当てのさらに別の変更例を示す図である。ここでは、リソース制御部123が、NVMセットに対する定期メンテナンス処理をNDWIN中に完了できない可能性があると判断して、定期メンテナンス用リソース516の量を増加させる場合について例示する。
【0191】
記憶装置3内のリソース51は、高優先度リード用リソース511、中優先度リード用リソース512、高優先度ライト用リソース513、中優先度ライト用リソース514、定期メンテナンス用リソース516、およびその他用リソース517として割り当てられている。
【0192】
リソース制御部123は、NVMセットに対するコントローラ4の動作期間がNDWINに遷移したことに応じて、NVMセットに対する定期メンテナンス処理をNDWIN中に完了するために必要なリソースの量を算出する。算出するリソースの量は、NVMセットに対して行う予定の定期メンテナンス処理に基づく。算出したリソースの量よりも、現在の定期メンテナンス用リソース516の量が少ない場合、リソース制御部123は、NVMセットに対する定期メンテナンス処理をNDWIN中に完了できない可能性があると判断する。そして、リソース制御部123は、高優先度リード用リソース511、中優先度リード用リソース512、高優先度ライト用リソース513、および中優先度ライト用リソース514の一部を、定期メンテナンス用リソース516として割り当てる。これにより、図11に示すように、高優先度リード用リソース511、中優先度リード用リソース512、高優先度ライト用リソース513、および中優先度ライト用リソース514が減少すると共に、定期メンテナンス用リソース516が増加する。
【0193】
定期メンテナンス処理部124は、増加した定期メンテナンス用リソース516を用いる。これにより、定期メンテナンス処理部124は、NVMセットに対する定期メンテナンス処理をNDWIN中に完了できる。したがって、コントローラ4は、例えばNVMe規格のPredictable Latency Modeを実現できる。
【0194】
次に、NVMセットが属する優先度グループを管理する方法について説明する。優先度制御部122は、NVMセットが属する優先度グループの管理に、例えばNVMセット-優先度管理テーブル22を用いる。
【0195】
図12は、本発明の実施形態に係る記憶装置3が用いるNVMセット-優先度管理テーブル22の一構成例を示す図である。NVMセット-優先度管理テーブル22は、複数のエントリを含む。複数のエントリは、複数のNVMセットに対応する。複数のエントリの各々は、SetID、既定優先度グループ、および現在の優先度グループのフィールドを含む。
【0196】
1つのNVMセットに対応するエントリにおいて、各フィールドが示す情報について説明する。
【0197】
SetIDのフィールドは、対応するNVMセットの識別情報を示す。
【0198】
既定優先度グループのフィールドは、対応するNVMセットが振り分けられた優先度グループを示す。振り分けられた優先度グループは、NVMセットに対応する最大のコマンド応答時間に基づく。
【0199】
現在の優先度グループのフィールドは、対応するNVMセットが現在振り分けられている優先度グループを示す。
【0200】
優先度制御部122は、例えば初期設定でNVMセットを振り分ける優先度グループを決定する。優先度制御部122は、決定した優先度グループを示す情報を、既定優先度グループのフィールドおよび現在の優先度グループのフィールドに設定する。優先度制御部122は、NVMセットをある優先度グループから別の優先度グループに移した場合、NVMセットを移した優先度グループを示す情報を、現在の優先度グループのフィールドに設定する。
【0201】
次に、高優先度グループと中優先度グループにそれぞれ割り当てられているリソース量を管理する方法について説明する。リソース制御部123は、リソース量の割り当ての管理に、例えば優先度-リソース管理テーブル23を用いる。
【0202】
図13は、本発明の実施形態に係る記憶装置3が用いる優先度-リソース管理テーブル23の一構成例を示す図である。優先度-リソース管理テーブル23は複数のエントリを含む。複数のエントリは、複数の優先度グループに対応する。複数の優先度グループは、予想レイテンシを保障するグループ(例えば高優先度グループおよび中優先度グループ)である。複数のエントリの各々は、優先度グループ、既定リード用リソース量、現在のリード用リソース量、許容リードデータサイズ、既定ライト用リソース量、現在のライト用リソース量、および許容ライトデータサイズのフィールドを含む。
【0203】
1つの優先度グループに対応するエントリにおいて、各フィールドが示す情報について説明する。
【0204】
優先度グループのフィールドは、対応する優先度グループを示す。
【0205】
既定リード用リソース量のフィールドは、対応する優先度グループに対して割り当てられたリード用リソースの量の初期値を示す。
【0206】
現在のリード用リソース量のフィールドは、対応する優先度グループに対して現在割り当てられているリード用リソースの量を示す。
【0207】
許容リードデータサイズのフィールドは、対応するグループの現在の許容リードデータサイズを示す。
【0208】
既定ライト用リソース量のフィールドは、対応する優先度グループに対して割り当てられたライト用リソースの量の初期値を示す。
【0209】
現在のライト用リソース量のフィールドは、対応する優先度グループに対して現在割り当てられているライト用リソースの量を示す。
【0210】
許容ライトデータサイズのフィールドは、対応するグループの現在の許容ライトデータサイズを示す。
【0211】
リソース制御部123は、例えば初期設定で、1つの優先度グループに割り当てるリード用リソース量を決定する。リソース制御部123は、決定したリード用リソース量を、既定リード用リソース量のフィールドと現在のリード用リソース量のフィールドとに設定する。そして、リソース制御部123は、許容リードデータサイズのフィールドに、決定したリード用リソース量に基づく許容リードデータサイズを設定する。
【0212】
リソース制御部123は、リード用リソースの割り当てを変更した優先度グループに対応するエントリにおいて、現在のリード用リソースの量のフィールドに変更後のリソース量を設定する。そして、リソース制御部123は、許容リードデータサイズのフィールドに、変更後のリソース量に基づく許容リードデータサイズを設定する。
【0213】
また、リソース制御部123は、例えば初期設定で、1つの優先度グループに割り当てるライト用リソース量を決定する。リソース制御部123は、決定したライト用リソース量を、既定ライト用リソース量のフィールドと現在のライト用リソース量のフィールドとに設定する。そして、リソース制御部123は、許容ライトデータサイズのフィールドに、決定したライト用リソース量に基づく許容ライトデータサイズを設定する。
【0214】
リソース制御部123は、ライト用リソースの割り当てを変更した優先度グループに対応するエントリにおいて、現在のライト用リソースの量のフィールドに変更後のリソース量を設定する。そして、リソース制御部123は、許容ライトデータサイズのフィールドに、変更後のリソース量に基づく許容ライトデータサイズを設定する。
【0215】
優先度制御部122およびリソース制御部123は、高優先度リード回路105、中優先度リード回路106、高優先度ライト回路107、および中優先度ライト回路108の各々による処理中のデータサイズと、優先度-リソース管理テーブル23とを用いて、記憶装置3の動作状態を判断し得る。優先度制御部122およびリソース制御部123は、記憶装置3の動作状態として、例えば、高優先度グループの処理中のリードデータサイズが許容リードデータサイズを超える可能性があるか否かを判断する。リソース制御部123は、判断結果に基づいて、リソースの割り当てを動的に変更し得る。また、優先度制御部122は、判断結果に基づいて、NVMセットのグループ分けを動的に変更し得る。
【0216】
次いで、図14Aは、NVMセットに対するコントローラ4の動作期間がDTWINとNDWINとの間を遷移するタイミングの例を示す図である。図14Aには、NVMセット#1~#8にそれぞれ対応するウィンドウ遷移350~357が示されている。
【0217】
ウィンドウ遷移350~357は、全てのNVMセット#1~#8に対するコントローラ4の動作期間が、同時にNDWINからDTWINに遷移していることを示している。DTWIN中のNVMセットの数が増えるほど、コントローラ4がホスト2からのリードアクセスおよびライトアクセスに対して予想レイテンシを保障することは、困難になる。したがって、全てのNVMセット#1~#8がDTWIN中である場合、コントローラ4による予想レイテンシの保証は非常に困難である。
【0218】
そのため、本実施形態の記憶装置3では、NVMセットに対するコントローラ4の動作期間がNDWINからDTWINに遷移するタイミングを、ウィンドウ制御部121が調整してもよい。ウィンドウ制御部121は、遷移タイミングの調整により、同時にDTWIN中となるNVMセットの数を制限する。
【0219】
より具体的には、ウィンドウ制御部121は、コントローラ4の動作期間をNDWINからDTWINに遷移可能な1つのNVMセットを選択する。NVMセットの選択は、例えば一定時間毎に行われる。ウィンドウ制御部121は、DTWIN中であるNVMセットの数が閾値未満である場合、選択したNVMセットに対するコントローラ4の動作期間をDTWINに遷移させる。また、ウィンドウ制御部121は、DTWIN中であるNVMセットの数が閾値以上である場合、選択したNVMセットに対するコントローラ4の動作期間をDTWINに遷移させない。したがって、選択したNVMセットに対するコントローラ4の動作期間は、DTWIN中であるNVMセットの数が閾値未満になるまで、NDWINにとどまる。
【0220】
図14Bは、本発明の実施形態に係る記憶装置3内のNVMセットに対するコントローラ4の動作期間がDTWINとNDWINとの間を遷移するタイミングの例を示す図である。図14Bには、NVMセット#1~#8にそれぞれ対応するウィンドウ遷移360~367が示されている。ウィンドウ遷移360~367では、DTWIN中であるNVMセットの数が7個以内に制限されている。
【0221】
ウィンドウ制御部121は、遷移タイミングの制御により、DTWIN中であるNVMセットの数を、すなわち予想レイテンシを保障するNVMセットの数を、閾値以内に制限できる。したがって、コントローラ4による予想レイテンシの保証が容易になる。
【0222】
図15は、本発明の実施形態に係る記憶装置3内のCPU102によって実行される初期化処理の手順の例を示すフローチャートである。CPU102は、例えば記憶装置3が起動されたことに応じて初期化処理を実行する。CPU102は初期化処理において、各NVMセットに割り当てるグループを、高優先度グループ、中優先度グループ、および低優先度グループのいずれかに決定する。なお、初期化処理を実行する間、コントローラ4の動作期間は、全てのNVMセットに対して、NDWINであるものとする。
【0223】
CPU102は複数のNVMセットから、処理対象のNVMセット(以下、第1NVMセットと称する)を選択する(S101)。複数のNVMセットの各々は、不揮発性メモリ5の記憶領域を論理的に分割した複数の記憶領域の内の幾つかを含んでいる。
【0224】
CPU102は、第1NVMセットを対象とするコマンド(より詳しくはリードコマンドおよびライトコマンド)に対する最大の応答時間(最大のコマンド応答時間)が第1時間以下であるか否かを判定する(S102)。最大のコマンド応答時間が第1時間以下である場合(S102のYES)、CPU102は第1NVMセットに高優先度グループを割り当て(S103)る。つまり、第1NVMセットの既定優先度グループは、高優先度グループになる。そして、CPU102はS107に進む。
【0225】
最大のコマンド応答時間が第1時間を超えている場合(S102のNO)、CPU102はS104に進む。
【0226】
CPU102は最大のコマンド応答時間が第2時間以下であるか否かを判定する(S104)。なお、第2時間は第1時間よりも大きい。最大のコマンド応答時間が第2時間以下である場合(S104のYES)、CPU102は第1NVMセットに中優先度グループを割り当てる(S105)。つまり、第1NVMセットの既定優先度グループは、中優先度グループになる。そして、CPU102はS107に進む。
【0227】
最大のコマンド応答時間が第2時間を超えている場合(S102のNO)、CPU102は第1NVMセットに低優先度グループを割り当てる(S106)。つまり、第1NVMセットの既定優先度グループは、低優先度グループになる。そして、CPU102はS107に進む。
【0228】
次いで、CPU102は優先度グループが決定されていないNVMセットがあるか否かを判定する(S107)。優先度グループが決定されていないNVMセットがある場合(S107のYES)、CPU102はS101に進む。つまり、CPU102は、優先度グループが決定されていないNVMセットに割り当てる優先度グループをさらに決定する。
【0229】
優先度グループが決定されていなNVMセットがない場合(S107のNO)、すなわち全てのNVMセットに割り当てる優先度グループを決定した場合、CPU102は全てのNVMセットを低優先度グループに入れる(S108)。これは、全てのNVMセットに対するコントローラ4の動作期間がNDWINであることによる。
【0230】
そして、CPU102は高優先度グループに、高優先度リード用リソース511と高優先度ライト用リソース513を割り当てる(S109)。CPU102は中優先度グループに、中優先度リード用リソース512と中優先度ライト用リソース514を割り当てる(S110)。
【0231】
次いで、CPU102は高優先度グループの許容リードデータサイズと許容ライトデータサイズを算出する(S111)。より詳しくは、CPU102は、例えば高優先度リード用リソース511の量に基づいて、高優先度グループの許容リードデータサイズを算出する。CPU102は、例えば高優先度ライト用リソース513の量に基づいて、高優先度グループの許容ライトデータサイズを算出する。
【0232】
CPU102は中優先度グループの許容リードデータサイズと許容ライトデータサイズを算出する(S112)より詳しくは、CPU102は、例えば中優先度リード用リソース512の量に基づいて、中優先度グループの許容リードデータサイズを算出する。CPU102は、例えば中優先度ライト用リソース514の量に基づいて、中優先度グループの許容ライトデータサイズを算出する。そして、CPU102は初期化処理を終了する(終了)。
【0233】
以上の初期化処理により、CPU102は複数のNVMセットにそれぞれ割り当てる優先度グループを決定できる。CPU102は、NVMセットに対するコントローラ4の動作期間がNDWINからDTWINに遷移したことに応じて、NVMセットを、低優先度グループから、初期化処理で割り当てられた優先度グループ(すなわち既定優先度グループ)に移動し得る。また、CPU102は高優先度グループと中優先度グループの各々に対して、リード用のリソースとライト用のリソースとを割り当てることができる。
【0234】
図16は、本発明の実施形態に係る記憶装置3内のCPU102によって実行される第1変更処理の手順の例を示すフローチャートである。第1変更処理は、高優先度グループまたは中優先度グループに属する1つのNVMセットに対する処理中のリードデータサイズが非常に大きくなったことに対処するための処理である。CPU102は、例えば一定時間毎に第1変更処理を実行する。
【0235】
CPU102は高優先度グループに、処理中のリードデータサイズが第1閾値を超えたNVMセットがあるか否かを判定する(S201)。高優先度グループに、処理中のリードデータサイズが第1閾値を超えたNVMセットがある場合(S201のYES)、CPU102は、高優先度グループ内の他のNVMセットを低優先度グループに移す(S202)。つまり、CPU102は、高優先度グループに属する全てのNVMセットから、処理中のリードデータサイズが第1閾値を超えたNVMセットを除外したNVMセットを、低優先度グループに移す。そして、CPU102はS203に進む。
【0236】
また、高優先度グループに、処理中のリードデータサイズが第1閾値を超えたNVMセットがない場合(S201のNO)、CPU102はS203に進む。
【0237】
次いで、CPU102は中優先度グループに、処理中のリードデータサイズが第2閾値を超えたNVMセットがあるか否かを判定する(S203)。中優先度グループに、処理中のリードデータサイズが第2閾値を超えたNVMセットがある場合(S203のYES)、CPU102は、中優先度グループ内の他のNVMセットを低優先度グループに移す(S204)。つまり、CPU102は、中優先度グループに属する全てのNVMセットから、処理中のリードデータサイズが第2閾値を超えたNVMセットを除外したNVMセットを、低優先度グループに移す。そして、CPU102は第1変更処理を終了する(終了)。
【0238】
また、中優先度グループに、処理中のリードデータサイズが第2閾値を超えたNVMセットがない場合(S203のNO)、CPU102は第1変更処理を終了する(終了)。
【0239】
以上の第1変更処理により、CPU102は高優先度グループ内の、処理中のリードデータサイズが第1閾値を超えたNVMセット以外のNVMセットを低優先度グループに移す。これにより、CPU102は、高優先度グループ内の、処理中のリードデータサイズが第1閾値を超えたNVMセットに対するリードアクセスにおいて、予想レイテンシを保障できる。
【0240】
また、CPU102は中優先度グループ内の、処理中のリードデータサイズが第2閾値を超えたNVMセット以外のNVMセットを低優先度グループに移す。これにより、CPU102は、中優先度グループ内の、処理中のリードデータサイズが第2閾値を超えたNVMセットに対するリードアクセスにおいて、予想レイテンシを保障できる。
【0241】
なお、CPU102はライトデータサイズを用いて第1変更処理と同様の処理を実行し得る。つまり、CPU102は、図16のフローチャートに記載したリードデータサイズをライトデータサイズに置き換えた処理を実行し得る。
【0242】
図16のフローチャートに記載したリードデータサイズをライトデータサイズに置き換えた処理により、CPU102は高優先度グループ内の、現在のライトデータサイズが第1閾値を超えたNVMセット以外のNVMセットを低優先度グループに移す。これにより、CPU102は、高優先度グループ内の、現在のライトデータサイズが第1閾値を超えたNVMセットに対するライトアクセスにおいて、予想レイテンシを保障できる。
【0243】
また、図16のフローチャートに記載したリードデータサイズをライトデータサイズに置き換えた処理により、CPU102は中優先度グループ内の、現在のライトデータサイズが第2閾値を超えたNVMセット以外のNVMセットを低優先度グループに移す。これにより、CPU102は、中優先度グループ内の、現在のライトデータサイズが第2閾値を超えたNVMセットに対するライトアクセスにおいて、予想レイテンシを保障できる。
【0244】
図17は、本発明の実施形態に係る記憶装置3内のCPU102によって実行される第2変更処理の手順の例を示すフローチャートである。第2変更処理は、第1変更処理において高優先度グループまたは中優先度グループから低優先度グループに移したNVMセットを、元のグループに戻すための処理である。CPU102は第1変更処理を実行した後、例えば一定時間毎に第2変更処理を実行する。
【0245】
CPU102は、DTWIN中であって、高優先度グループから低優先度グループに移されたNVMセットがあるか否かを判定する(S301)。つまり、CPU102は、処理中のリードデータサイズが非常に大きい別のNVMセットに対処するために、高優先度グループから低優先度グループに移された、DTWIN中のNVMセットがあるかどうかを判定する。
【0246】
DTWIN中であって、高優先度グループから低優先度グループに移されたNVMセットがない場合(S301のNO)、CPU102はS304に進む。
【0247】
DTWIN中であって、高優先度グループから低優先度グループに移されたNVMセットがある場合(S301のYES)、CPU102は高優先度グループの処理中のリードデータサイズが第3閾値未満であるか否かを判定する(S302)。
【0248】
高優先度グループの処理中のリードデータサイズが第3閾値未満である場合(S302のYES)、CPU102は、DTWIN中であって、高優先度グループから低優先度グループに移されたNVMセットの少なくとも1つを高優先度グループに戻す(S303)。そして、CPU102はS304に進む。
【0249】
高優先度グループの処理中のリードデータサイズが第3閾値以上である場合(S302のNO)、CPU102はS304に進む。つまり、高優先度グループに属しているNVMセットに対する処理中のリードデータサイズが減少していない場合には、DTWIN中であって、高優先度グループから低優先度グループに移されたNVMセットは高優先度グループに戻されない。
【0250】
次いで、CPU102は、DTWIN中であって、中優先度グループから低優先度グループに移されたNVMセットがあるか否かを判定する(S304)。つまり、CPU102は、処理中のリードデータサイズが非常に大きい別のNVMセットに対処するために、中優先度グループから低優先度グループに移された、DTWIN中のNVMセットがあるかどうかを判定する。
【0251】
DTWIN中であって、中優先度グループから低優先度グループに移されたNVMセットがない場合(S304のNO)、CPU102は第2変更処理を終了する(終了)。
【0252】
DTWIN中であって、中優先度グループから低優先度グループに移されたNVMセットがある場合(S304のYES)、CPU102は中優先度グループの処理中のリードデータサイズが第4閾値未満であるか否かを判定する(S305)。
【0253】
高優先度グループの処理中のリードデータサイズが第4閾値未満である場合(S305のYES)、CPU102は、DTWIN中であって、中優先度グループから低優先度グループに移されたNVMセットの少なくとも1つを中優先度グループに戻す(S306)。そして、CPU102は第2変更処理を終了する(終了)。
【0254】
中優先度グループの処理中のリードデータサイズが第4閾値以上である場合(S305のNO)、CPU102は第2変更処理を終了する(終了)。つまり、中優先度グループに属しているNVMセットに対する処理中のリードデータサイズが減少していない場合には、DTWIN中であって、中優先度グループから低優先度グループに移されたNVMセットは中優先度グループに戻されない。
【0255】
以上の第2変更処理により、CPU102は、高優先度グループに属しているNVMセット(すなわち、別のNVMセットを高優先度グループから低優先度グループに移す要因となったNVMセット)に対する処理中のリードデータサイズが減少した場合に、DTWIN中であって、高優先度グループから低優先度グループに移されたNVMセットを高優先度グループに戻す。したがって、CPU102は、低優先度グループから高優先度グループに戻したNVMセットに対するリードアクセスにおいて、予想レイテンシを保障できる。
【0256】
また、CPU102は、中優先度グループに属しているNVMセット(すなわち、別のNVMセットを中優先度グループから低優先度グループに移す要因となったNVMセット)に対する処理中のリードデータサイズが減少した場合に、DTWIN中であって、中優先度グループから低優先度グループに移されたNVMセットを中優先度グループに戻す。したがって、CPU102は、低優先度グループから中優先度グループに戻したNVMセットに対するリードアクセスにおいて、予想レイテンシを保障できる。
【0257】
なお、CPU102はライトデータサイズを用いて第2変更処理と同様の処理を実行し得る。つまり、CPU102は、図17のフローチャートに記載したリードデータサイズをライトデータサイズに置き換えた処理を実行し得る。
【0258】
図17のフローチャートに記載したリードデータサイズをライトデータサイズに置き換えた処理により、CPU102は、高優先度グループに属しているNVMセット(すなわち、別のNVMセットを高優先度グループから低優先度グループに移す要因となったNVMセット)に対する処理中のライトデータサイズが減少した場合に、DTWIN中であって、高優先度グループから低優先度グループに移されたNVMセットを高優先度グループに戻す。したがって、CPU102は、低優先度グループから高優先度グループに戻したNVMセットに対するライトアクセスにおいて、予想レイテンシを保障できる。
【0259】
また、図17のフローチャートに記載したリードデータサイズをライトデータサイズに置き換えた処理により、CPU102は、中優先度グループに属しているNVMセット(すなわち、別のNVMセットを中優先度グループから低優先度グループに移す要因となったNVMセット)に対する処理中のライトデータサイズが減少した場合に、DTWIN中であって、中優先度グループから低優先度グループに移されたNVMセットを中優先度グループに戻す。したがって、CPU102は、低優先度グループから中優先度グループに戻したNVMセットに対するライトアクセスにおいて、予想レイテンシを保障できる。
【0260】
図18は、本発明の実施形態に係る記憶装置3内のCPU102によって実行される第3変更処理の手順の例を示すフローチャートである。第3変更処理は、処理中のリードデータサイズに応じて、グループ分けまたはリソースの割り当てを変更するための処理である。CPU102は、例えば一定時間毎に第3変更処理を実行する。
【0261】
CPU102は、総許容リードデータサイズに対する、処理中の総リードデータサイズの割合が、第5閾値を超えているか否かを判定する(S401)。総許容リードデータサイズは、高優先度グループの許容リードデータサイズと中優先度グループの許容リードデータサイズとの和である。処理中の総リードデータサイズは、高優先度グループの処理中のリードデータサイズと中優先度グループの処理中のリードデータサイズとの和である。
【0262】
総許容リードデータサイズに対する処理中の総リードデータサイズの割合が第5閾値を超えている場合(S401のYES)、CPU102は、その他用リソース515の一部を、高優先度リード用リソース511および中優先度リード用リソース512として割り当てる(S402)。CPU102は、その他用リソース515の一部を、高優先度リード用リソース511と中優先度リード用リソース512のいずれか一方として割り当ててもよい。そして、CPU102は高優先度グループの許容リードデータサイズと中優先度グループの許容リードデータサイズとを算出する(S403)。つまり、CPU102は、S402でのリソース割り当ての変更に応じて、両グループの許容リードデータサイズをそれぞれ更新する。そして、CPU102は第3変更処理を終了する(終了)。
【0263】
総許容リードデータサイズに対する処理中の総リードデータサイズの割合が第5閾値以下である場合(S401のNO)、CPU102は、高優先度グループの、許容リードデータサイズに対する処理中のリードデータサイズの割合が第6閾値を超えているか否かを判定する(S404)。
【0264】
高優先度グループの、許容リードデータサイズに対する処理中のリードデータサイズの割合が第6閾値を超えている場合(S404のYES)、CPU102は、高優先度グループに属する少なくとも1つのNVMセットを中優先度グループに移すか、あるいは中優先度リード用リソース512の一部を高優先度リード用リソース511として割り当てる(S405)。そして、CPU102は高優先度グループの許容リードデータサイズと中優先度グループの許容リードデータサイズとを算出する(S403)。なお、CPU102は、S405でNVMセットを高優先度グループから中優先度グループに移した場合には、許容リードデータサイズを算出しなくてもよい。そして、CPU102は第3変更処理を終了する(終了)。
【0265】
高優先度グループの、許容リードデータサイズに対する処理中のリードデータサイズの割合が第6閾値以下である場合(S404のNO)、中優先度グループの、許容リードデータサイズに対する処理中のリードデータサイズの割合が第7閾値を超えているか否かを判定する(S406)。
【0266】
中優先度グループの、許容リードデータサイズに対する処理中のリードデータサイズの割合が第7閾値を超えている場合(S406のYES)、CPU102は、中優先度グループに属する少なくとも1つのNVMセットを高優先度グループに移すか、あるいは高優先度リード用リソース511の一部を中優先度リード用リソース512として割り当てる(S407)。そして、CPU102は高優先度グループの許容リードデータサイズと中優先度グループの許容リードデータサイズとを算出する(S403)。なお、CPU102は、S407でNVMセットを中優先度グループから高優先度グループに移した場合には、許容リードデータサイズを算出しなくてもよい。そして、CPU102は第3変更処理を終了する(終了)。
【0267】
以上の第3変更処理により、CPU102は、高優先度グループの処理中のリードデータサイズの増加と、中優先度グループの処理中のリードデータサイズの増加の少なくとも一方に応じて、グループ分けまたはリソース割り当てを変更する。より詳しくは、CPU102は、処理中のリードデータサイズが増加したグループに属するNVMセットを別のグループに移すか、処理中のリードデータサイズが増加したグループに対してリソースをさらに割り当てる。これにより、グループに属するNVMセットの数が減少するか、または割り当てられるリソースが増加するので、CPU102は、高優先度グループと中優先度グループに属する各NVMセットに対するリードアクセスにおいて、予想レイテンシを保障できる。
【0268】
なお、CPU102はライトデータサイズを用いて第3変更処理と同様の処理を実行し得る。つまり、CPU102は、図18のフローチャートに記載したリードデータサイズをライトデータサイズに置き換え、リード用リソースをライト用リソースに置き換えた処理を実行し得る。
【0269】
図18のフローチャートに記載したリードデータサイズをライトデータサイズに置き換え、リード用リソースをライト用リソースに置き換えた処理により、CPU102は、高優先度グループの処理中のライトデータサイズの増加と、中優先度グループの処理中のライトデータサイズの増加の少なくとも一方に応じて、グループ分けまたはリソース割り当てを変更する。より詳しくは、CPU102は、処理中のライトデータサイズが増加したグループに属するNVMセットを別のグループに移す。これにより、グループに属するNVMセットの数が減少する。あるいは、CPU102は、処理中のライトデータサイズが増加したグループに対してリソースをさらに割り当てる。これにより、グループに割り当てられるリソースが増加する。グループ分けまたはリソース割り当ての変更により、CPU102は、高優先度グループおよび中優先度グループに属する各NVMセットに対するライトアクセスにおいて、予想レイテンシを保障できる。
【0270】
図19は、本発明の実施形態に係る記憶装置3内のCPU102によって実行される第4変更処理の手順の例を示すフローチャートである。第4変更処理は、第3変更処理におけるグループ分けの変更またはリソース割り当ての変更を、元に戻すための処理である。CPU102は第3変更処理を実行した後、例えば一定時間毎に第4変更処理を実行する。
【0271】
CPU102は、高優先度リード用リソース511と中優先度リード用リソース512の双方が増加しているか否かを判定する(S501)。つまり、CPU102は、高優先度リード用リソース511および中優先度リード用リソース512にその他用リソース515の一部が割り当てられている状態であるか否かを判定する。CPU102は、高優先度リード用リソース511および中優先度リード用リソース512にその他用リソース515の一部が割り当てられている状態であるか否かの判定に、例えば優先度-リソース管理テーブル23を用いる。
【0272】
高優先度リード用リソース511と中優先度リード用リソース512の双方が増加している場合(S501のYES)、CPU102は、総許容リードデータサイズに対する、処理中の総リードデータサイズの割合が、第8閾値未満であるか否かを判定する(S502)。
【0273】
総許容リードデータサイズに対する処理中の総リードデータサイズの割合が第8閾値未満である場合(S502のYES)、CPU102は、高優先度リード用リソース511および中優先度リード用リソース512として割り当てられたその他用リソース515の一部を、その他用リソース515に戻す(S503)。そして、CPU102は高優先度グループの許容リードデータサイズと中優先度グループの許容リードデータサイズとを算出する(S504)。つまり、CPU102は、S503でのリソース割り当ての変更に応じて、高優先度グループの許容リードデータサイズと中優先度グループの許容リードデータサイズとを更新する。そして、CPU102は、第4変更処理を終了する(終了)。
【0274】
総許容リードデータサイズに対する処理中の総リードデータサイズの割合が第8閾値以上である場合(S502のNO)、CPU102は第4変更処理を終了する(終了)。したがって、処理中の総リードデータサイズが依然として大きい場合には、その他用リソース515の一部を高優先度リード用リソース511および中優先度リード用リソース512として割り当てた状態が続行される。
【0275】
高優先度リード用リソース511と中優先度リード用リソース512の少なくとも一方が増加していない場合(S501のNO)、CPU102は、高優先度リード用リソース511が増加していることと、高優先度グループから中優先度グループに移されたNVMセットがあることの少なくとも一方に該当するか否かを判定する(S505)。CPU102は高優先度リード用リソース511が増加しているか否かの判定に、例えば優先度-リソース管理テーブル23を用いる。CPU102は高優先度グループから中優先度グループに移されたNVMセットがあるか否かの判定に、例えばNVMセット-優先度管理テーブル22を用いる。
【0276】
高優先度リード用リソース511が増加していることと、高優先度グループから中優先度グループに移されたNVMセットがあることの少なくとも一方に該当する場合(S505のYES)、CPU102は高優先度グループの、許容リードデータサイズに対する処理中のリードデータサイズの割合が第9閾値未満であるか否かを判定する(S506)。
【0277】
高優先度グループの、許容リードデータサイズに対する処理中のリードデータサイズの割合が第9閾値未満である場合(S506のYES)、CPU102は、高優先度グループから中優先度グループに移されているNVMセットを高優先度グループに戻すか、あるいは高優先度リード用リソース511として割り当てられている中優先度リード用リソース512の一部を、中優先度リード用リソース512に戻す(S507)。そして、CPU102は高優先度グループの許容リードデータサイズと中優先度グループの許容リードデータサイズとを算出する(S508)。なお、S507でNVMセットを中優先度グループから高優先度グループに戻した場合、CPU102は高優先度グループの許容リードデータサイズと中優先度グループの許容リードデータサイズとを算出しなくてもよい。そして、CPU102は、第4変更処理を終了する(終了)。
【0278】
高優先度グループの、許容リードデータサイズに対する処理中のリードデータサイズの割合が第9閾値以上である場合(S506のNO)、CPU102は第4変更処理を終了する(終了)。したがって、高優先度グループの処理中のリードデータサイズが依然として大きい場合には、中優先度リード用リソース512の一部を高優先度リード用リソース511として割り当てた状態が続行される。
【0279】
高優先度リード用リソース511が増加していることと、高優先度グループから中優先度グループに移されたNVMセットがあることのいずれにも該当しない場合(S505のNO)、CPU102は中優先度リード用リソース512が増加していることと、中優先度グループから高優先度グループに移されたNVMセットがあることの少なくとも一方に該当しているか否かを判定する(S509)。CPU102は中優先度リード用リソース512が増加しているか否かの判定に、例えば優先度-リソース管理テーブル23を用いる。CPU102は中優先度グループから高優先度グループに移されたNVMセットがあるか否かの判定に、例えばNVMセット-優先度管理テーブル22を用いる。
【0280】
中優先度リード用リソース512が増加していることと、中優先度グループから高優先度グループに移されたNVMセットがあることの少なくとも一方に該当している場合(S509のYES)、CPU102は中優先度グループの、許容リードデータサイズに対する処理中のリードデータサイズの割合が第10閾値未満であるか否かを判定する(S510)。
【0281】
中優先度グループの、許容リードデータサイズに対する処理中のリードデータサイズの割合が第10閾値未満である場合(S510のYES)、CPU102は中優先度グループから高優先度グループに移されているNVMセットを中優先度グループに戻すか、あるいは中優先度リード用リソース512として割り当てられている高優先度リード用リソース511の一部を、高優先度リード用リソース511に戻す(S511)。そして、CPU102は高優先度グループの許容リードデータサイズと中優先度グループの許容リードデータサイズとを算出する(S512)。なお、S511でNVMセットを高優先度グループから中優先度グループに戻した場合、CPU102は高優先度グループの許容リードデータサイズと中優先度グループの許容リードデータサイズとを算出しなくてもよい。そして、CPU102は第4変更処理を終了する(終了)。
【0282】
中優先度グループの、許容リードデータサイズに対する処理中のリードデータサイズの割合が第10閾値以上である場合(S510のNO)、CPU102は第4変更処理を終了する(終了)。したがって、中優先度グループの処理中のリードデータサイズが依然として大きい場合には、高優先度リード用リソース511の一部を中優先度リード用リソース512として割り当てた状態が続行される。
【0283】
中優先度リード用リソース512が増加していることと、中優先度グループから高優先度グループに移されたNVMセットがあることのいずれにも該当しない場合(S509のNO)、CPU102は第4変更処理を終了する(終了)。
【0284】
以上の第4変更処理により、CPU102は高優先度グループおよび中優先度グループの処理中の総リードデータサイズが減少した場合に、高優先度リード用リソース511および中優先度リード用リソース512として割り当てているその他用リソース515の一部を、その他用リソース515に戻すことができる。また、CPU102は高優先度グループの処理中のリードデータサイズが減少した場合に、NVMセットを中優先度グループから高優先度グループに戻すか、あるいは高優先度リード用リソース511として割り当てている中優先度リード用リソース512の一部を、中優先度リード用リソース512に戻すことができる。さらに、CPU102は中優先度グループの処理中のリードデータサイズが減少した場合に、NVMセットを高優先度グループから中優先度グループに戻すことができる。あるいは、CPU102は中優先度グループの処理中のリードデータサイズが減少した場合に、中優先度リード用リソース512として割り当てている高優先度リード用リソース511の一部を、高優先度リード用リソース511に戻すことができる。
【0285】
なお、CPU102はライトデータサイズを用いて第4変更処理と同様の処理を実行し得る。つまり、CPU102は、図19のフローチャートに記載したリードデータサイズをライトデータサイズに置き換え、リード用リソースをライト用リソースに置き換えた処理を実行し得る。
【0286】
図19のフローチャートに記載したリードデータサイズをライトデータサイズに置き換え、リード用リソースをライト用リソースに置き換えた処理により、CPU102は高優先度グループおよび中優先度グループの処理中の総ライトデータサイズが減少した場合に、高優先度ライト用リソース513および中優先度ライト用リソース514として割り当てているその他用リソース515の一部を、その他用リソース515に戻すことができる。また、CPU102は高優先度グループの処理中のライトデータサイズが減少した場合に、NVMセットを中優先度グループから高優先度グループに戻すか、あるいは高優先度ライト用リソース513として割り当てている中優先度ライト用リソース514の一部を、高優先度ライト用リソース513に戻すことができる。さらに、CPU102は中優先度グループの処理中のライトデータサイズが減少した場合に、NVMセットを高優先度グループから中優先度グループに戻すことができる。あるいは、CPU102は中優先度グループの処理中のライトデータサイズが減少した場合に、中優先度ライト用リソース514として割り当てている高優先度ライト用リソース513の一部を、高優先度ライト用リソース513に戻すことができる。
【0287】
図20は、本発明の実施形態に係る記憶装置3内のCPU102によって実行される第5変更処理の手順の例を示すフローチャートである。第5変更処理は、コントローラ4の動作期間がDTWINからNDWINに遷移すること応じて、対応するNVMセットのグループ分けを変更するための処理である。CPU102は、例えば、NVMセットに対するコントローラ4の動作期間がDTWINからNDWINに遷移可能になったことに応じて第5変更処理を実行する。コントローラ4の動作期間がDTWINからNDWINに遷移可能なNVMセットは、例えば、ホスト2がDTWINからNDWINへの遷移を要求したNVMセットである。
【0288】
CPU102は記憶装置3内の複数のNVMセットから、DTWINからNDWINに遷移可能な1つのNVMセット(以下、第1NVMセットと称する)を選択する(S601)。CPU102は、第1NVMセットに対するコントローラ4の動作期間をDTWINからNDWINに遷移させる(S602)。CPU102は第1NVMセットを現在属している高優先度グループまたは中優先度グループから低優先度グループに移す(S603)。
【0289】
以上の第5変更処理により、CPU102は、コントローラ4の動作期間がDTWINからNDWINに遷移したNVMセットを、高優先度グループまたは中優先度グループから低優先度グループに移すことができる。
【0290】
図21は、本発明の実施形態に係る記憶装置3内のCPU102によって実行される第6変更処理の手順の例を示すフローチャートである。第6変更処理は、コントローラ4の動作期間がNDWINからDTWINに遷移することに応じて、対応するNVMセットのグループ分けを変更するための処理である。CPU102は、例えば、NVMセットに対するコントローラ4の動作期間がNDWINからDTWINに遷移可能になったことに応じて第6変更処理を実行する。
【0291】
CPU102は記憶装置3内の複数のNVMセットから、コントローラ4の動作期間がNDWINからDTWINに遷移可能な1つのNVMセット(以下、第2NVMセットと称する)を選択する(S701)。CPU102は第2NVMセットに対するコントローラ4の動作期間をNDWINからDTWINに遷移させる(S702)。
【0292】
そして、CPU102は第2NVMセットを低優先度グループから、1つ前のDTWIN中に属していた優先度グループに戻す(S703)。より詳しくは、第2NVMセットが1つ前のDTWIN中に高優先度グループに属していた場合、CPU102は第2NVMセットを低優先度グループから高優先度グループに戻す。また、第2NVMセットが1つ前のDTWIN中に中優先度グループに属していた場合、CPU102は第2NVMセットを低優先度グループから中優先度グループに戻す。
【0293】
次いで、CPU102は、戻したグループに対応するリード回路およびライト回路に、第2NVMセットを対象とするペンディングされたリードコマンドおよびライトコマンドをそれぞれ送出する(S704)。より詳しくは、CPU102は、第2NVMセットを高優先度グループに戻した場合、第2NVMセットを対象とするペンディングされたリードコマンドを、高優先度リード回路105に送出する。CPU102は、第2NVMセットを高優先度グループに戻した場合、第2NVMセットを対象とするペンディングされたライトコマンドを、高優先度ライト回路107に送出する。また、CPU102は、第2NVMセットを中優先度グループに戻した場合、第2NVMセットを対象とするペンディングされたリードコマンドを、中優先度リード回路106に送出する。CPU102は、第2NVMセットを中優先度グループに戻した場合、第2NVMセットを対象とするペンディングされたライトコマンドを、中優先度ライト回路108に送出する。なお、第2NVMセットを対象とするリードコマンドは、例えば低優先度リードコマンド記憶部109を用いてペンディングされている。また、第2NVMセットを対象とするライトコマンドは、例えば低優先度ライトコマンド記憶部110を用いてペンディングされている。
【0294】
以上の第6変更処理により、CPU102は、コントローラ4の動作期間がNDWINからDTWINに遷移したNVMセットを、低優先度グループから高優先度グループまたは中優先度グループに戻すことができる。そして、CPU102は、コントローラ4の動作期間がNDWINからDTWINに遷移したNVMセットを対象とする、ペンディングされていたリードコマンドを、高優先度リード回路105または中優先度リード回路106に送出する。また、CPU102は、コントローラ4の動作期間がNDWINからDTWINに遷移したNVMセットを対象とする、ペンディングされていたライトコマンドを、高優先度ライト回路107または中優先度ライト回路108に送出する。したがって、CPU102は、ペンディングされていたリードコマンドおよびライトコマンドの処理を再開できる。
【0295】
図22は、本発明の実施形態に係る記憶装置3内のCPU102によって実行される第7変更処理の手順の例を示すフローチャートである。第7変更処理は、NDWINからDTWINへの遷移に応じてNVMセットのグループ分けを変更するための処理の別の例である。CPU102は第6変更処理の代わりに、第7変更処理を実行してもよい。
【0296】
CPU102は、記憶装置3内の複数のNVMセットの内、DTWIN中であるNVMセットの数が第11閾値未満であるか否かを判定する(S801)。
【0297】
DTWIN中であるNVMセットの数が第11閾値未満である場合(S801のYES)、CPU102は複数のNVMセットから、コントローラ4の動作期間がNDWINからDTWINに遷移可能な1つのNVMセット(第2NVMセット)を選択する(S802)。CPU102は第2NVMセットに対するコントローラ4の動作期間をNDWINからDTWINに遷移させる(S803)。
【0298】
次いで、CPU102は第2NVMセットを低優先度グループから、1つ前のDTWIN中に属していた優先度グループに戻す(S804)。そして、CPU102は、戻した優先度グループに対応するリード回路およびライト回路に、第2NVMセットを対象とするペンディングされたリードコマンドおよびライトコマンドをそれぞれ送出する(S805)。そして、CPU102は第7変更処理を終了する(終了)。
【0299】
DTWIN中であるNVMセットの数が第11閾値以上である場合(S801のNO)、CPU102は第7変更処理を終了する(終了)。
【0300】
以上の第7変更処理により、CPU102はDTWIN中であるNVMセットの数に応じて、第2NVMセットに対するコントローラ4の動作期間がNDWINからDTWINに遷移するタイミングを制御できる。これにより、CPU102はDTWIN中であるNVMセットの数を制限できる。したがって、CPU102は、DTWIN中であるNVMセットに対するリードアクセスおよびライトアクセスの予想レイテンシを保障しやすくすることができる。
【0301】
図23は、本発明の実施形態に係る記憶装置3内のCPU102によって実行される第8変更処理の手順の例を示すフローチャートである。第8変更処理は、必要な量の定期メンテナンス用リソース516を確保するための処理である。CPU102は、例えば一定時間毎に第8変更処理を実行する。CPU102は、NVMセットに対するコントローラ4の動作期間がDTWINからNDWINに遷移したことに応じて、第8変更処理を実行してもよい。
【0302】
CPU102は、NDWIN中である少なくとも1つのNVMセットが要する定期メンテナンス用リソース量を算出する(S901)。定期メンテナンス用リソース量は、NVMセットに対する定期メンテナンス処理をNDWIN中に完了するために必要なリソースの量である。CPU102は、算出した定期メンテナンス用リソース量よりも、現在の定期メンテナンス用リソース516の量が少ないか否かを判定する(S902)。
【0303】
算出した定期メンテナンス用リソース量よりも現在の定期メンテナンス用リソース516の量が少ない場合(S902のYES)、CPU102は、高優先度リード用リソース511、中優先度リード用リソース512、高優先度ライト用リソース513、および中優先度ライト用リソース514の一部を、定期メンテナンス用リソース516として割り当てる(S903)。CPU102は、例えば、高優先度リード用リソース511、中優先度リード用リソース512、高優先度ライト用リソース513、および中優先度ライト用リソース514の各々から、特定の量のリソースまたは特定の割合のリソースを定期メンテナンス用リソース516として割り当てる。なお、CPU102は、高優先度リード用リソース511、中優先度リード用リソース512、高優先度ライト用リソース513、および中優先度ライト用リソース514の少なくとも1つの一部を、定期メンテナンス用リソース516として割り当ててもよい。そして、CPU102は第8変更処理を終了する(終了)。
【0304】
現在の定期メンテナンス用リソース516の量が、算出した定期メンテナンス用リソース量以上である場合(S902のNO)、CPU102は、定期メンテナンス用リソース516に、高優先度リード用リソース511、中優先度リード用リソース512、高優先度ライト用リソース513、および中優先度ライト用リソース514から割り当てた余剰のリソースがあるか否かを判定する(S904)。つまり、CPU102は、定期メンテナンス用リソース516が、高優先度リード用リソース511、中優先度リード用リソース512、高優先度ライト用リソース513、および中優先度ライト用リソース514から割り当てられた後、余剰となっているリソースを含んでいるか否かを判定する。
【0305】
余剰のリソースがある場合(S904のYES)、CPU102は余剰のリソースを、高優先度リード用リソース511、中優先度リード用リソース512、高優先度ライト用リソース513、および中優先度ライト用リソース514に戻す(S905)。そして、CPU102は、第8変更処理を終了する(終了)。
【0306】
余剰のリソースがない場合(S904のNO)、CPU102は第8変更処理を終了する(終了)。
【0307】
以上の第8変更処理により、CPU102はNDWIN中であるNVMセットが必要とする量の定期メンテナンス用リソース516を確保できるように、高優先度リード用リソース511、中優先度リード用リソース512、高優先度ライト用リソース513、および中優先度ライト用リソース514の一部を、定期メンテナンス用リソース516として割り当て得る。また、CPU102は割り当てた定期メンテナンス用リソース516に余剰がある場合、余剰のリソースを高優先度リード用リソース511、中優先度リード用リソース512、高優先度ライト用リソース513、および中優先度ライト用リソース514に戻すことができる。
【0308】
図24は、本発明の実施形態に係る記憶装置3内のCPU102によって実行されるリードコマンド制御処理の手順の例を示すフローチャートである。リードコマンド制御処理は、ホスト2から受信したリードコマンドに応じたリード動作を制御するための処理である。CPU102は、例えばリードコマンドを受信したことに応じてリードコマンド制御処理を実行する。
【0309】
CPU102はホスト2から受信したリードコマンドの対象のNVMセットを特定する(S1001)。具体的には、CPU102はリードコマンドに含まれるネームスペース識別子を用いて、リードコマンドの対象のネームスペースを特定する。CPU102は、特定したネームスペースを含むNVMセットを特定する。そして、CPU102は特定したNVMセットが属する優先度グループに応じて処理を分岐する(S1002)。CPU102は、例えばNVMセット-優先度管理テーブル22を用いて、特定したNVMセットが属する優先度グループを決定し得る。
【0310】
特定したNVMセットが高優先度グループに属している場合(S1002の高優先度グループ)、CPU102はリードコマンドを高優先度リード回路105に送出する(S1003)。そして、CPU102はリードコマンド制御処理を終了する(終了)。高優先度リード回路105は、送出されたリードコマンドを、高優先度リード用リソース511を用いて処理する。
【0311】
特定したNVMセットが中優先度グループに属している場合(S1002の中優先度グループ)、CPU102はリードコマンドを中優先度リード回路106に送出する(S1004)。そして、CPU102はリードコマンド制御処理を終了する(終了)。中優先度リード回路106は、送出されたリードコマンドを、中優先度リード用リソース512を用いて処理する。
【0312】
特定したNVMセットが低優先度グループに属している場合(S1002の低優先度グループ)、CPU102は、リードコマンドを低優先度リードコマンド記憶部109に格納する(S1005)。つまり、CPU102は低優先度リードコマンド記憶部109を用いて、リードコマンドの処理をペンディングする。そして、CPU102は、低優先度リードコマンド記憶部109に格納されたリードコマンドを前回処理してから経過した時間が第12閾値を超えたか否かを判定する(S1006)。
【0313】
経過時間が第12閾値を超えた場合(S1006のYES)、CPU102は高優先度リード回路105と中優先度リード回路106から、リードコマンドを処理すべき回路を選択する(S1007)。CPU102は高優先度リード回路105と中優先度リード回路106から、例えば処理中のリードデータサイズがより小さい優先度グループの回路を選択する。あるいは、CPU102は高優先度リード回路105と中優先度リード回路106から、処理中のリードデータサイズが閾値を超えていない優先度グループの回路を選択してもよい。なお、高優先度グループと中優先度グループのいずれも、処理中のリードデータサイズが閾値を超えていない場合、直前に選択した回路を優先して選択してもよい。CPU102は選択した回路にリードコマンドを送出する(S1008)。そして、CPU102はリードコマンド制御処理を終了する(終了)。
【0314】
経過時間が第12閾値を超えていない場合(S1006のNO)、CPU102は、低優先度リードコマンド記憶部109に記憶されているリードコマンドの数が第13閾値を超えているか否かを判定する(S1009)。
【0315】
低優先度リードコマンド記憶部109に記憶されているリードコマンドの数が第13閾値を超えている場合(S1009のYES)、CPU102は高優先度リード回路105と中優先度リード回路106から、リードコマンドを処理すべき回路を選択する(S1007)。CPU102は選択した回路にリードコマンドを送出する(S1008)。そして、CPU102はリードコマンド制御処理を終了する(終了)。
【0316】
低優先度リードコマンド記憶部109に記憶されているリードコマンドの数が第13閾値を超えていない場合(S1009のNO)、CPU102はリードコマンド制御処理を終了する(終了)。
【0317】
以上のリードコマンド制御処理により、CPU102は、リードコマンドの対象のNVMセットが属する優先度グループに応じた処理を実行する。具体的には、リードコマンドの対象のNVMセットが高優先度グループまたは中優先度グループに属するならば、CPU102はリードコマンドを、対応する専用のリード回路(すなわち、高優先度リード回路105または中優先度リード回路106)に処理させる。これにより、CPU102は、高優先度グループおよび中優先度グループに属するNVMセットに対するリードアクセスの予想レイテンシを保障できる。
【0318】
また、リードコマンドの対象のNVMセットが低優先度グループに属するならば、CPU102はリードコマンドをペンディングする。CPU102は、ペンディングしたコマンドを、特定のタイミングで高優先度リード回路105または中優先度リード回路106に処理させる。したがって、CPU102は、低優先度グループに属するNVMセットに対するリードアクセスの予想レイテンシを保障ない可能性がある。
【0319】
図25は、本発明の実施形態に係る記憶装置3内のCPU102によって実行されるライトコマンド制御処理の手順の例を示すフローチャートである。ライトコマンド制御処理は、ホスト2から受信したライトコマンドに応じたライト動作を制御するための処理である。CPU102は、例えばライトコマンドを受信したことに応じてライトコマンド制御処理を実行する。
【0320】
CPU102はホスト2から受信したライトコマンドの対象のNVMセットを特定する(S1101)。具体的には、CPU102はライトコマンドに含まれるネームスペース識別子を用いて、ライトコマンドの対象のネームスペースを特定する。CPU102は特定したネームスペースを含むNVMセットを特定する。そして、CPU102は特定したNVMセットが属する優先度グループに応じて処理を分岐する(S1102)。CPU102は、例えばNVMセット-優先度管理テーブル22を用いて、特定したNVMセットが属する優先度グループを決定し得る。
【0321】
特定したNVMセットが高優先度グループに属している場合(S1102の高優先度グループ)、CPU102はライトコマンドを高優先度ライト回路107に送出する(S1103)。そして、CPU102はライトコマンド制御処理を終了する(終了)。高優先度ライト回路107は、送出されたライトコマンドを、高優先度ライト用リソース513を用いて処理する。
【0322】
特定したNVMセットが中優先度グループに属している場合(S1102の中優先度グループ)、CPU102はライトコマンドを中優先度ライト回路108に送出する(S1104)。そして、CPU102はライトコマンド制御処理を終了する(終了)。中優先度ライト回路108は、送出されたライトコマンドを、中優先度ライト用リソース514を用いて処理する。
【0323】
特定したNVMセットが低優先度グループに属している場合(S1102の低優先度グループ)、CPU102は、ライトコマンドを低優先度ライトコマンド記憶部110に格納する(S1105)。つまり、CPU102は低優先度ライトコマンド記憶部110を用いて、ライトコマンドの処理をペンディングする。そして、CPU102は、低優先度ライトコマンド記憶部110に格納されたライトコマンドを前回処理してから経過した時間が第12閾値を超えたか否かを判定する(S1106)。
【0324】
経過時間が第12閾値を超えた場合(S1106のYES)、CPU102は高優先度ライト回路107と中優先度ライト回路108から、ライトコマンドを処理すべき回路を選択する(S1107)。CPU102は高優先度ライト回路107と中優先度ライト回路108から、例えば処理中のライトデータサイズがより小さい優先度グループの回路を選択する。あるいは、CPU102は高優先度ライト回路107と中優先度ライト回路108から、処理中のライトデータサイズが閾値を超えていない優先度グループの回路を選択してもよい。なお、高優先度グループと中優先度グループのいずれも、処理中のライトデータサイズが閾値を超えていない場合、直前に選択した回路を優先して選択してもよい。CPU102は選択した回路にライトコマンドを送出する(S1108)。そして、CPU102はライトコマンド制御処理を終了する(終了)。
【0325】
経過時間が第12閾値を超えていない場合(S1106のNO)、CPU102は、低優先度ライトコマンド記憶部110に記憶されているライトコマンドの数が第13閾値を超えているか否かを判定する(S1109)。
【0326】
低優先度ライトコマンド記憶部110に記憶されているライトコマンドの数が第13閾値を超えている場合(S1109のYES)、CPU102は高優先度ライト回路107と中優先度ライト回路108から、ライトコマンドを処理すべき回路を選択する(S1107)。CPU102は選択した回路にライトコマンドを送出する(S1108)。そして、CPU102はライトコマンド制御処理を終了する(終了)。
【0327】
低優先度ライトコマンド記憶部110に記憶されているライトコマンドの数が第13閾値を超えていない場合(S1109のNO)、CPU102はライトコマンド制御処理を終了する(終了)。
【0328】
以上のライトコマンド制御処理により、CPU102は、ライトコマンドの対象のNVMセットが属する優先度グループに応じた処理を実行する。具体的には、ライトコマンドの対象のNVMセットが高優先度グループまたは中優先度グループに属するならば、CPU102はライトコマンドを対応する専用のライト回路(すなわち、高優先度ライト回路107または中優先度ライト回路108)に処理させる。これにより、CPU102は、高優先度グループおよび中優先度グループに属するNVMセットに対するライトアクセスの予想レイテンシを保障できる。
【0329】
また、ライトコマンドの対象のNVMセットが低優先度グループに属するならば、CPU102はライトコマンドをペンディングする。CPU102は、ペンディングしたライトコマンドを、特定のタイミングで高優先度ライト回路107または中優先度ライト回路108に処理させる。したがって、CPU102は、低優先度グループに属するNVMセットに対するライトアクセスの予想レイテンシを保障しない可能性がある。
【0330】
以上説明したように、本実施形態によれば、予想レイテンシを保障するために記憶装置3が備えるリソースを低減できる。コントローラ4は、不揮発性メモリ5の記憶領域を論理的に分割した複数の記憶領域の少なくとも1つをそれぞれ含む複数のNVMセットを管理する。コントローラ4は、高優先度リード回路105、高優先度ライト回路107、中優先度リード回路106、および中優先度ライト回路108を備える。高優先度リード回路105は、高優先度グループに属する複数の第1NVMセットに対する、ホスト2からの読み出し要求(例えばリードコマンド)を処理する。高優先度ライト回路107は、複数の第1NVMセットに対する、ホスト2からの書き込み要求(例えばライトコマンド)を処理する。中優先度リード回路106は、中優先度グループに属する複数の第2NVMセットに対する、ホスト2からの読み出し要求を処理する。中優先度ライト回路108は、複数の第2NVMセットに対する、ホスト2からの書き込み要求を処理する。コントローラ4は、高優先度グループに対して高優先度リード用リソース511と高優先度ライト用リソース513とを割り当てる。コントローラ4は、中優先度グループに対して中優先度リード用リソース512と中優先度ライト用リソース514とを割り当てる。高優先度リード回路105は、高優先度リード用リソース511を用いて、複数の第1NVMセットからデータを読み出す。高優先度ライト回路107は、高優先度ライト用リソース513を用いて、複数の第1NVMセットにデータを書き込む。中優先度リード回路106は、中優先度リード用リソース512を用いて、複数の第2NVMセットからデータを読み出す。中優先度ライト回路は、中優先度ライト用リソース514を用いて、複数の第2NVMセットにデータを書き込む。
【0331】
このように、コントローラ4は、複数のNVMセットを複数の優先度グループで管理する。そして、コントローラは、各優先度グループに対してリード用リソースとライト用リソースとを割り当てる。
【0332】
ホスト2から受信した読み出し要求は、リード回路によって処理される。リード回路は、読み出し要求の対象となるNVMセットが属する優先度グループに対応する。リード回路は、読み出し要求の処理に、読み出し要求の対象となるNVMセットが属する優先度グループに割り当てられたリード用リソースを用いる。
【0333】
また、ホスト2から受信した書き込み要求は、ライト回路によって処理される。ライト回路は、書き込み要求の対象となるNVMセットが属する優先度グループに対応する。ライト回路は、書き込み要求の処理に、書き込み要求の対象となるNVMセットが属する優先度グループに割り当てられたライト用リソースを用いる。
【0334】
このように、本実施形態の記憶装置3では優先度グループ毎にリード回路およびライト回路を有し、優先度グループに対してリソースを割り当てる。そのため、本実施形態の記憶装置3は、例えばNVMセット毎に専用のリード回路およびライト回路と専用のリード用リソースおよびライト用リソースとを設ける場合と比較して、予想レイテンシを保障するために備えるリソースを低減できる。
【0335】
また、本実施形態に記載された様々な機能の各々は、回路(処理回路)によって実現されてもよい。処理回路の例には、中央処理装置(CPU)のような、プログラムされたプロセッサが含まれる。このプロセッサは、メモリに格納されたコンピュータプログラム(命令群)を実行することによって、記載された機能それぞれを実行する。このプロセッサは、電気回路を含むマイクロプロセッサであってもよい。処理回路の例には、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、マイクロコントローラ、コントローラ、他の電気回路部品も含まれる。本実施形態に記載されたCPU以外の他のコンポーネントの各々もまた処理回路によって実現されてもよい。
【0336】
実施形態は例示であり、発明の範囲はそれらに限定されない。
【符号の説明】
【0337】
1…情報処理システム
2…ホスト
3…記憶装置
4…コントローラ
5…不揮発性メモリ
6…RAM
101…ホストI/F
102…CPU
103…ストレージI/F
104…DRAM I/F
105…高優先度リード回路
106…中優先度リード回路
107…高優先度ライト回路
108…中優先度ライト回路
109…低優先度リードコマンド記憶部
110…低優先度ライトコマンド記憶部
121…ウィンドウ制御部
122…優先度制御部
123…リソース制御部
124…定期メンテナンス処理部
21…ファームウェア(FW)
22…NVMセット-優先度管理テーブル
23…優先度-リソース管理テーブル
310…NVMセット(SetID=0)のウィンドウおよび優先度グループ遷移
311…NVMセット(SetID=1)のウィンドウおよび優先度グループ遷移
312…NVMセット(SetID=2)のウィンドウおよび優先度グループ遷移
313…NVMセット(SetID=3)のウィンドウおよび優先度グループ遷移
314…NVMセット(SetID=4)のウィンドウおよび優先度グループ遷移
315…NVMセット(SetID=5)のウィンドウおよび優先度グループ遷移
316…NVMセット(SetID=6)のウィンドウおよび優先度グループ遷移
317…NVMセット(SetID=7)のウィンドウおよび優先度グループ遷移
321…高優先度グループの処理中リードデータサイズ
322…中優先度グループの処理中リードデータサイズ
323…高優先度グループの許容リードデータサイズ
324…中優先度グループの許容リードデータサイズ
332…NVMセット#1に対する処理中リードデータサイズ
51…リソース
511…高優先度リード用リソース
512…中優先度リード用リソース
513…高優先度ライト用リソース
514…中優先度ライト用リソース
515…その他用リソース
516…定期メンテナンス用リソース
517…その他用リソース
B0…ブロック0
B1…ブロック1
B2…ブロック2
Bm-1…ブロックm-1
P0…ページ0
Pn-1…ページn-1
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14A
図14B
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25