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

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

▶ マイクロン テクノロジー, インク.の特許一覧

特表2022-553361プログラムおよび消去動作の中断および再開を使用したメモリデバイスのためのサービスの品質
<>
  • 特表-プログラムおよび消去動作の中断および再開を使用したメモリデバイスのためのサービスの品質 図1
  • 特表-プログラムおよび消去動作の中断および再開を使用したメモリデバイスのためのサービスの品質 図2
  • 特表-プログラムおよび消去動作の中断および再開を使用したメモリデバイスのためのサービスの品質 図3
  • 特表-プログラムおよび消去動作の中断および再開を使用したメモリデバイスのためのサービスの品質 図4
  • 特表-プログラムおよび消去動作の中断および再開を使用したメモリデバイスのためのサービスの品質 図5
  • 特表-プログラムおよび消去動作の中断および再開を使用したメモリデバイスのためのサービスの品質 図6
  • 特表-プログラムおよび消去動作の中断および再開を使用したメモリデバイスのためのサービスの品質 図7
  • 特表-プログラムおよび消去動作の中断および再開を使用したメモリデバイスのためのサービスの品質 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-12-22
(54)【発明の名称】プログラムおよび消去動作の中断および再開を使用したメモリデバイスのためのサービスの品質
(51)【国際特許分類】
   G06F 12/00 20060101AFI20221215BHJP
【FI】
G06F12/00 571A
G06F12/00 597U
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022523811
(86)(22)【出願日】2020-10-23
(85)【翻訳文提出日】2022-06-21
(86)【国際出願番号】 US2020057220
(87)【国際公開番号】W WO2021081450
(87)【国際公開日】2021-04-29
(31)【優先権主張番号】16/663,031
(32)【優先日】2019-10-24
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】595168543
【氏名又は名称】マイクロン テクノロジー,インク.
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】バート ルカ
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160CD04
5B160CD12
(57)【要約】
メモリシステム内の処理デバイスは、メモリデバイスにおいて第1の入力/出力(I/O)動作タイプの第1の動作を実行するための要求を受信する。処理デバイスはさらに、第2のI/O動作タイプの第2の動作がメモリデバイスにおいて実行されているかどうかを決定する。第2の動作が実行されていると決定したことに応答して、処理デバイスは、遅延時間期間後に第2の動作を中断することであって、遅延時間期間が、第1の動作の第1の動作重みおよび第2の動作の第2の動作重みに対応する、中断すること、ならびにメモリデバイスにおいて第1の動作を実行することを行い、また第1の動作を実行することが完了したと決定したことに応答して、処理デバイスは、メモリデバイスにおいて第2の動作の実行を再開する。
【特許請求の範囲】
【請求項1】
メモリデバイスにおいて第1の入力/出力(I/O)動作タイプの第1の動作を実行するための要求を受信すること、
第2のI/O動作タイプの第2の動作が前記メモリデバイスにおいて実行されているかどうかを決定すること、ならびに
前記第2の動作が実行されていると決定したことに応答して、
遅延時間期間後に前記第2の動作を中断することであって、前記遅延時間期間が、前記第1の動作の第1の動作重みおよび前記第2の動作の第2の動作重みに対応する、中断すること、
前記メモリデバイスにおいて前記第1の動作を実行すること、および
前記第1の動作を実行することが完了したと決定したことに応答して、前記メモリデバイスにおいて前記第2の動作の実行を再開することを含む、方法。
【請求項2】
前記第1のI/O動作タイプは、読み出し動作であり、前記第2のI/O動作タイプは、書き込み動作である、請求項1に記載の方法。
【請求項3】
前記第1の動作重みは、前記第1のI/O動作タイプと関連付けられた第1のレベルのサービスの品質に対応し、前記第2の動作重みは、前記第2のI/O動作タイプと関連付けられた第2のレベルのサービスの品質に対応する、請求項1に記載の方法。
【請求項4】
前記第1のI/O動作タイプと関連付けられた前記第1のレベルのサービスの品質は、前記第1のI/O動作タイプの専用の第1のバンド幅を含み、前記第2のI/O動作タイプと関連付けられた前記第2のレベルのサービスの品質は、前記第2のI/O動作タイプの専用の第2のバンド幅を含む、請求項3に記載の方法。
【請求項5】
前記遅延時間期間は、1つまたは複数の増分、前記メモリデバイスの平均読み出し時間に対応する、請求項1に記載の方法。
【請求項6】
前記第2の動作が実行されていると決定することは、
現在実行されている前記第2の動作の完了した実行の割合が閾値条件を満足すると決定することを含む、請求項1に記載の方法。
【請求項7】
現在実行されている前記第2の動作の前記完了した実行の割合が前記閾値条件を満足しないと決定したことに応答して、
前記メモリデバイスにおいて前記第2の動作を実行し続けること、および
前記第2の動作を実行することが完了したと決定したことに応答して、前記メモリデバイスにおいて前記第1の動作を実行することをさらに含む、請求項6に記載の方法。
【請求項8】
メモリデバイスと、
処理デバイスと
を備えるシステムであって、前記処理デバイスは、
メモリデバイスにおいて実行する第1の入力/出力(I/O)動作タイプの第1の動作を検出すること、
前記メモリデバイスにおいて第2のI/O動作タイプの第2の動作を実行するための要求を受信すること、
前記第1の動作の実行時間の割合が閾値条件を満足するかどうかを決定すること、ならびに
前記実行時間の割合が前記閾値条件を満足すると決定したことに応答して、
前記メモリデバイスにおいて前記第1の動作を実行し続けること、および
前記第1の動作を実行することが完了したと決定したことに応答して、前記メモリデバイスにおいて前記第2の動作を実行することを行うために、前記メモリデバイスと動作可能に結合される、システム。
【請求項9】
前記処理デバイスはさらに、
前記完了した実行の割合が前記閾値条件を満足しないと決定したことに応答して、
遅延時間期間後に前記第1の動作を中断することであって、前記遅延時間期間が、前記第1の動作の第1の動作重みおよび前記第2の動作の第2の動作重みに対応する、中断すること、
前記メモリデバイスにおいて前記第2の動作を実行すること、ならびに
前記第2の動作を実行することが完了したと決定したことに応答して、前記メモリデバイスにおいて前記第1の動作の実行を再開することになる、請求項8に記載のシステム。
【請求項10】
前記第1の動作重みは、前記第1のI/O動作タイプと関連付けられた第1のレベルのサービスの品質に対応し、前記第2の動作重みは、前記第2のI/O動作タイプと関連付けられた第2のレベルのサービスの品質に対応する、請求項9に記載のシステム。
【請求項11】
前記遅延時間期間は、1つまたは複数の増分、前記メモリデバイスの平均読み出し時間に対応する、請求項9に記載のシステム。
【請求項12】
前記第1のI/O動作タイプは、書き込み動作であり、前記第2のI/O動作タイプは、読み出し動作である、請求項8に記載のシステム。
【請求項13】
前記実行時間の割合が前記閾値条件を満足すると決定するために、前記処理デバイスはさらに、前記第1のI/O動作の完了した実行の割合が既定の割合よりも大きいと決定することになる、請求項8に記載のシステム。
【請求項14】
前記実行時間の割合が前記閾値条件を満足すると決定するために、前記処理デバイスはさらに、前記第1のI/O動作の残りの実行の割合が前記第2の動作の実行時間よりも短い時間期間に対応すると決定することになる、請求項8に記載のシステム。
【請求項15】
命令を含む非一時的なコンピュータ可読記憶媒体であって、前記命令は、処理デバイスによって実行されるとき、
メモリデバイスにおいて第1の入力/出力(I/O)動作タイプの第1の動作を実行するための要求を受信すること、
第2のI/O動作タイプの第2の動作が前記メモリデバイスにおいて実行されているかどうかを決定すること、ならびに
前記第2の動作が実行されていると決定したことに応答して、
遅延時間期間後に前記第2の動作を中断することであって、前記遅延時間期間が、前記第1の動作の第1の動作重みおよび前記第2の動作の第2の動作重みに対応する、中断すること、
前記メモリデバイスにおいて前記第1の動作を実行すること、および
前記第1の動作を実行することが完了したと決定したことに応答して、前記メモリデバイスにおいて前記第2の動作の実行を再開することを前記処理デバイスに行わせる、非一時的なコンピュータ可読記憶媒体。
【請求項16】
前記第1のI/O動作タイプは、読み出し動作であり、前記第2のI/O動作タイプは、書き込み動作である、請求項15に記載の非一時的なコンピュータ可読記憶媒体。
【請求項17】
前記第1の動作重みは、前記第1のI/O動作タイプと関連付けられた第1のレベルのサービスの品質に対応し、前記第2の動作重みは、前記第2のI/O動作タイプと関連付けられた第2のレベルのサービスの品質に対応する、請求項15に記載の非一時的なコンピュータ可読記憶媒体。
【請求項18】
前記第1のI/O動作タイプと関連付けられた前記第1のレベルのサービスの品質は、前記第1のI/O動作タイプの専用の第1のバンド幅を含み、前記第2のI/O動作タイプと関連付けられた前記第2のレベルのサービスの品質は、前記第2のI/O動作タイプの専用の第2のバンド幅を含む、請求項17に記載の非一時的なコンピュータ可読記憶媒体。
【請求項19】
前記第2の動作が実行されていると決定するために、前記処理デバイスはさらに、
現在実行されている前記第2の動作の完了した実行の割合が閾値条件を満足すると決定することになる、請求項15に記載の非一時的なコンピュータ可読記憶媒体。
【請求項20】
前記処理デバイスはさらに、
現在実行されている前記第2の動作の前記完了した実行の割合が閾値条件を満足しないと決定したことに応答して、
前記メモリデバイスにおいて前記第2の動作を実行し続けること、および
前記第2の動作を実行することが完了したと決定したことに応答して、前記メモリデバイスにおいて前記第1の動作を実行することになる、請求項15に記載の非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、メモリシステムに関し、より詳細には、メモリデバイス内の複数の機能へのサービスの品質レベルの割り当てに関する。
【背景技術】
【0002】
メモリサブシステムは、データを格納する1つまたは複数のメモリコンポーネントを含み得る。メモリコンポーネントは、例えば、不揮発性メモリコンポーネントおよび揮発性メモリコンポーネントであり得る。一般に、ホストシステムは、メモリコンポーネントにデータを格納するため、およびメモリコンポーネントからデータを取得するために、メモリサブシステムを利用し得る。
【発明の概要】
【0003】
本開示は、以下に提供される発明を実施するための形態から、および本開示の様々な実施形態の添付の図面からより完全に理解される。
【図面の簡単な説明】
【0004】
図1】本開示のいくつかの実施形態による、メモリデバイス内の複数の機能へのサービスの品質レベルの割り当てのための例示的なコンピューティング環境を示す図である。
図2】本開示のいくつかの実施形態による、サービスの品質(QoS)レベル管理のためのメモリサブシステム110における機能重みおよび動作重み割り当てを示す図である。
図3】本開示のいくつかの実施形態による、QoSレベル管理を支持するプログラム/消去(P/E)中断/再開ポリシータイムラインの例を示す図である。
図4】本開示のいくつかの実施形態による、メモリサブシステム内のQoSレベル管理を支持する機能重みおよび動作重みを割り当てる例示的な方法のフロー図である。
図5】本開示のいくつかの実施形態による、メモリサブシステム内のQoSレベル管理を支持するI/O動作の実行サイクルの例示的な方法のフロー図である。
図6】本開示のいくつかの実施形態による、メモリサブシステム内のQoSレベル管理を支持する中断および再開ポリシーの例示的な方法のフロー図である。
図7】本開示のいくつかの実施形態による、メモリサブシステム内のQoSレベル管理を支持する機能重みを割り当てる例示的な方法のフロー図である。
図8】本開示の実施形態が動作することができる例示的なコンピュータシステムのブロック図である。
【発明を実施するための形態】
【0005】
本開示の態様は、メモリサブシステムのメモリデバイス内の複数の機能へのサービスの品質レベルの割り当てを対象とする。メモリサブシステムは、ストレージデバイス、メモリモジュール、またはストレージデバイスおよびメモリモジュールのハイブリッドであり得る。ストレージデバイスおよびメモリモジュールの例は、図1と併せて以下に説明される。一般に、ホストシステムは、データを格納するメモリデバイスなど、1つまたは複数のメモリコンポーネントを含むメモリサブシステムを利用し得る。ホストシステムは、メモリサブシステムに格納されるべきデータを提供し得、メモリサブシステムから取得されるべきデータを要求し得る。
【0006】
サーバアーキテクチャの進化およびマルチコアプロセッサの可用性は、サーバ設計に対する著しい変化を促進した。中でも注目すべきは、単一のオペレーティングシステム(OS)を実行するサーバは、マルチテナントサーバに取って代わっており、ここでは、いくつかの「オーナー」(例えば、仮想マシン(VM)、コンテナ、またはマイクロサービス内で実行するゲストオペレーティングシステム)は、互いの存在を知らずに、同じ物理サーバプラットフォームを共有する。
【0007】
入力/出力(I/O)デバイスを各VMに接続することは、問題を含み、膨大なリソースを必要とし得るため、特別なアーキテクチャが、接続プロセスを簡略化し、性能を最大限にするために進化してきた。特定の従来のメモリサブシステムは、単一のルート入力/出力仮想化(SR-IOV)仕様を利用する。SR-IOVは、管理容易性および性能の理由のため、様々なハードウェア機能の中から周辺機器相互接続(PCI)Express(PCIe)リソースの分離を可能にしながら、単一の物理PCIeデバイスが仮想環境において共有されることも可能にする仕様である。SR-IOVは、物理サーバマシン上の異なる仮想コンポーネント(例えば、ネットワークアダプタ)に異なる仮想機能(VF)を提供する。SR-IOVはまた、仮想環境内の異なる仮想マシンが、単一のPCIeハードウェアインターフェースを共有することを可能にする。代替的に、同等の能力が、「マルチPF」と呼ばれる、いくつかの並列の物理機能によって提供され得る。マルチPFアーキテクチャは、各物理機能(PF)をVMにマッピングする。物理機能は、いくつかの物理機能の列挙を可能にし、次いでハイパーバイザが、それらの物理機能を1つまたは複数の仮想マシンに割り当てることができる。これらのソリューションは、列挙およびリソース割り当てを担うホストOS、ならびに、定期的なデータフローを担う、仮想マシン上で実行するゲストOSのセットの両方を必要とする。ホストOSは、そのような能力に気付いており、ホストOSに追加されるべき特別な機能を識別することができる。加えて、大半のハイパーバイザ環境は、SR-IOVをサポートしておらず、そのソリューションを多くの状況に適用できないものにしている。さらには、多くの場合、各VMは、提供されるべき品質、可用性、責務など、特定のレベルのサービスを規定するサービスレベルアグリーメント(SLA)を有し得る。場合によっては、メモリサブシステムのSLAを満たすことは、各VFおよび/またはPFが同じレベルのサービスの品質を提供することが期待されるとき、困難であり得る。
【0008】
本開示の態様は、各機能(VFおよび/またはPF)がシステムSLAの条件を満たすように異なるサービスの品質(QoS)レベルでサービスされ得るように機序を提供するメモリサブシステムを有することにより、上記および他の欠陥に対処する。NANDベースのメモリおよび同様のデバイスを利用するメモリサブシステム内にそのようなQoSレベルを提供するとき、対処すべき特定の懸念事項が存在する。例えば、NAND書き込み(プログラム)は、遅く、非同時性であり、入ってくるシステムIOと干渉する場合があり、潜在的にQoSに影響を及ぼす。加えて、NANDデバイス上では、データは、しばしば、ウェアレベリング動作の一部として転々と移動され、入ってくるデータとの衝突は、一般的に、予想不可能である。また、メモリサブシステムは、I/Oに予測不可能なレベルで影響を及ぼし得る特定のバックグラウンド動作(例えば、ガベージコレクション、メディアスキャン、ウェアレベリング)を実施し得る。NAND消去およびプログラム動作は共に、それらが、アクティブであるときダイ全体を封鎖するため、高影響動作であり、また非常に遅い(例えば、読み出しよりも10倍~30倍遅い)ため、そのようなダイに影響を及ぼすIOは、かなり遅延され得る。さらには、NAND消去およびプログラム動作は、中断/再開能力を有するが、それは、他のすべてのIOに影響を及ぼす。したがって、スキームは、メモリサブシステムの予測可能なQoSをサポートするために、様々な機能ならびに異なるタイプのI/Oおよび各機能のバックグラウンド動作を優先付けするために利用され得る。
【0009】
1つの実施例において、メモリサブシステムは、メモリサブシステム内の各機能に割り当てられたサービスの品質レベルを表す機能重みを規定する。メモリサブシステムはさらに、異なるQoS能力が、書き込みに対する読み出し動作に割り当てられ得るように、機能において受信される、読み出しタイプの動作のためのある動作重み、および書き込みタイプの動作のための異なる動作重みを規定し得る。メモリサブシステムはまた、本明細書内で以下により詳細に説明されるように、プログラム/消去(P/E)動作の動作重みならびに待機動作(すなわち、実施されるべき後続の動作)の動作重みを組み込むP/E中断および再開動作のためのポリシーを規定し得る。
【0010】
本明細書に説明される複数の機能技術へのサービスの品質レベルの割り当ては、機能重み、動作重み、および中断/再開ポリシー特徴を提供することによって、メモリサブシステムが、異なるレベルのサービスの品質(QoS)をメモリサブシステムの各機能(VFまたはPF)に提供することを可能にする。各機能に割り当てられた機能重みの使用は、各機能がその機能重みに基づく予測可能な処理時間を有し得ることから、各機能からのより予測可能なQoSレベルを可能にする。各機能の機能重みはまた、メモリサブシステムが各機能のレイテンシをその機能重みに相対的である(例えば、機能重みが高いほど、その平均レイテンシは低くなる)ように調整することができるため、機能のより決定論的レイテンシを提供することができる。さらには、動作重みを各I/O動作タイプに割り当てることにより、メモリサブシステムは、高速I/O動作(例えば、読み出し動作)を、高速動作が多数の非常に長い動作の実行に起因して過度に遅延されないように、遅いI/O動作(例えば、書き込み動作)よりも優先させることができる。さらには、計算した時間遅延後に高速I/O動作を実行するために非常に長い動作を中断する能力は、I/O動作の実行時間に対するバックグラウンド動作(消去、ガベージコレクション、ウェアレベリングなど)のより予測可能な影響を提供することができる。この様式では、バックグラウンド動作の実行に起因してI/O動作に影響を及ぼし得る著しい遅延は、低減され、さらに、バックグラウンド動作が実行されている間メモリデバイスに到着するI/O動作をどのように扱うかを規定し得るメモリサブシステムの中断/消去ポリシーに基づいて予測され得る。これらの技術のさらなる詳細は、図1図7に関して以下に提供される。
【0011】
図1は、本開示のいくつかの実施形態によるメモリサブシステム110を含む例示的なコンピューティング環境100を示す。メモリサブシステム110は、1つもしくは複数の揮発性メモリデバイス(例えば、メモリデバイス140)、1つもしくは複数の不揮発性メモリデバイス(例えば、メモリデバイス130)、またはそのようなものの組み合わせなどの媒体を含み得る。
【0012】
メモリサブシステム110は、ストレージデバイス、メモリモジュール、またはストレージデバイスおよびメモリモジュールのハイブリッドであり得る。ストレージデバイスの例としては、ソリッドステートドライブ(SSD)、フラッシュドライブ、ユニバーサルシリアルバス(USB)フラッシュドライブ、埋め込み型マルチメディアコントローラ(eMMC)ドライブ、ユニバーサルフラッシュストレージ(UFS)ドライブ、およびハードディスクドライブ(HDD)が挙げられる。メモリモジュールの例としては、デュアルインラインメモリモジュール(DIMM)、スモールアウトラインDIMM(SO-DIMM)、および不揮発性デュアルインラインメモリモジュール(NVDIMM)が挙げられる。
【0013】
コンピューティング環境100は、1つまたは複数のメモリサブシステム110に結合されるホストシステム120を含み得る。いくつかの実施形態において、ホストシステム120は、異なるタイプのメモリサブシステム110に結合される。図1は、1つのメモリサブシステム110に結合されたホストシステム120の一例を示す。ホストシステム120は、例えば、メモリサブシステム110にデータを書き込み、メモリサブシステム110からデータを読み出すために、メモリサブシステム110を使用する。本明細書で使用される場合、「~に結合される」は、一般的に、コンポーネント間の接続を指し、これは、有線またはワイヤレスにしろ、電気、光学、磁気などの接続を含め、間接通信接続または直接通信接続(例えば、介在するコンポーネントなし)であり得る。
【0014】
ホストシステム120は、デスクトップコンピュータ、ラップトップコンピュータ、ネットワークサーバ、モバイルデバイス、埋め込み型コンピュータ(例えば、車両、産業機器、またはネットワーク化された商用デバイスに含まれるもの)、またはメモリおよび処理デバイスを含むそのようなコンピューティングデバイスなどの、コンピューティングデバイスであり得る。ホストシステム120は、物理的なホストインターフェースを介してメモリサブシステム110に結合され得る。物理的なホストインターフェースの例としては、限定されるものではないが、シリアルアドバンストテクノロジアタッチメント(SATA)インターフェース、PCIe(Peripheral Component Interconnect Express)インターフェース、ユニバーサルシリアルバス(USB)インターフェース、ファイバチャネル、シリアルアタッチドSCSI(SAS)などが挙げられる。物理的なホストインターフェースは、ホストシステム120とメモリサブシステム110との間でデータを送信するために使用され得る。ホストシステム120はさらに、メモリサブシステム110がPCIeインターフェースによってホストシステム120と結合されるとき、メモリコンポーネント(例えば、メモリデバイス130)にアクセスするためにNVM Express(NVMe)インターフェースを利用し得る。物理的なホストインターフェースは、メモリサブシステム110とホストシステム120との間で制御信号、アドレス信号、データ信号、および他の信号を渡すためのインターフェースを提供し得る。
【0015】
メモリデバイスは、異なるタイプの不揮発性メモリデバイスおよび/または揮発性メモリデバイスの任意の組み合わせを含み得る。揮発性メモリデバイス(例えば、メモリデバイス140)は、限定されるものではないが、ダイナミックランダムアクセスメモリ(DRAM)およびシンクロナスダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)であってもよい。
【0016】
不揮発性メモリデバイス(例えば、メモリデバイス130)のいくつかの例としては、3次元クロスポイント(「3Dクロスポイント」)メモリなど、否定論理積(NAND)タイプのフラッシュメモリおよび書き込みインプレイスメモリが挙げられる。3Dクロスポイントメモリデバイスは、積層可能なクロスグリッドデータアクセスアレイと併せて、バルク抵抗の変化に基づいてビット格納を実施し得る不揮発性メモリのクロスポイントアレイである。加えて、多くのフラッシュベースのメモリと対照的に、クロスポイント不揮発性メモリは、書き込みインプレイス動作を実施することができ、ここでは、不揮発性メモリセルは、不揮発性メモリセルが先に消去されることなく、プログラムされ得る。
【0017】
メモリデバイス130の各々は、単一レベルセル(SLC)、多レベルセル(MLC)、3レベルセル(TLC)、または4レベルセル(QLC)などのメモリセルの1つまたは複数のアレイを含み得る。いくつかの実施形態において、特定のメモリコンポーネントは、メモリセルのSLC部分、およびMLC部分、TLC部分、またはQLC部分を含み得る。メモリセルの各々は、ホストシステム120によって使用されるデータの1つまたは複数のビットを格納することができる。さらには、メモリデバイス130のメモリセルは、データを格納するために使用されるメモリコンポーネントの単位を指し得るページを形成するためにグループ化され得る。いくつかのタイプのメモリ(例えば、NAND)では、ページは、ブロックを形成するためにグループ化され得る。3Dクロスポイントなど、いくつかのタイプのメモリは、管理単位(MU)を形成するためにダイおよびチャネルにわたってページをグループ化し得る。
【0018】
NANDタイプのフラッシュメモリおよび3Dクロスポイントなどの不揮発性メモリコンポーネントが説明されるが、メモリデバイス130は、リードオンリメモリ(ROM)、相変化メモリ(PCM)、磁気ランダムアクセスメモリ(MRAM)、否定論理和(NOR)フラッシュメモリ、電気的に消去可能なプログラマブルリードオンリメモリ(EEPROM)など、任意の他のタイプの不揮発性メモリに基づき得る。
【0019】
メモリサブシステムコントローラ115は、メモリデバイス130においてデータを読み出すこと、データを書き込むこと、またはデータを消去することなどの動作、および他のそのような動作を実施するために、メモリデバイス130と通信することができる。メモリサブシステムコントローラ115は、1つもしくは複数の集積回路および/もしくは個別部品、バッファメモリ、またはそれらの組み合わせなどのハードウェアを含み得る。ハードウェアは、本明細書に説明される動作を実施するために専用(例えば、ハードコードされた)論理を有するデジタル回路を含み得る。メモリサブシステムコントローラ115は、マイクロコントローラ、特殊目的論理回路(例えば、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)など)、または他の好適なプロセッサであり得る。
【0020】
メモリサブシステムコントローラ115は、ローカルメモリ119に格納された命令を実行するように構成されるプロセッサ(処理デバイス)117を含み得る。示された例において、メモリサブシステムコントローラ115のローカルメモリ119は、メモリサブシステム110とホストシステム120との間の通信を処理することを含む、メモリサブシステム110の動作を制御する様々なプロセス、動作、論理フロー、およびルーチンを実施するための命令を格納するように構成される埋め込み型メモリを含む。
【0021】
いくつかの実施形態において、ローカルメモリ119は、メモリポインタ、取り出したデータなどを格納するメモリレジスタを含み得る。ローカルメモリ119は、マイクロコードを格納するためのリードオンリメモリ(ROM)も含み得る。図1の例示的なメモリサブシステム110は、メモリサブシステムコントローラ115を含んで示されているが、本開示の別の実施形態において、メモリサブシステム110は、メモリサブシステムコントローラ115を含まなくてもよく、代わりに、外部制御(例えば、外部ホストによって、またはメモリサブシステムとは別個のプロセッサもしくはコントローラによって提供される)に依拠し得る。
【0022】
一般に、メモリサブシステムコントローラ115は、ホストシステム120からコマンドまたは動作を受信することができ、メモリデバイス130への所望のアクセスを達成するために、そのコマンドまたは動作を命令または適切なコマンドへと変換することができる。メモリサブシステムコントローラ115は、メモリデバイス130と関連付けられるウェアレベリング動作、ガベージコレクション動作、誤り検出および誤り訂正コード(ECC)動作、暗号化動作、キャッシング動作、ならびに論理ブロックアドレスと物理ブロックアドレスとの間のアドレス変換など他の動作を担当し得る。メモリサブシステムコントローラ115は、ホストインターフェース回路をさらに含み、この物理的なホストインターフェースを介してホストシステム120と通信し得る。ホストインターフェース回路は、ホストシステムから受信したコマンドを、メモリデバイス130にアクセスするためのコマンド命令へと変換し、ならびにメモリデバイス130と関連付けられた応答を、ホストシステム120のための情報へと変換し得る。
【0023】
メモリサブシステム110は、示されない追加の回路またはコンポーネントも含み得る。いくつかの実施形態において、メモリサブシステム110は、キャッシュまたはバッファ(例えば、DRAM)、および、メモリサブシステムコントローラ115からアドレスを受信し、メモリデバイス130にアクセスするためにそのアドレスを復号することができるアドレス回路(例えば、行デコーダおよび列デコーダ)を含み得る。
【0024】
いくつかの実施形態において、メモリデバイス130は、メモリデバイス130の1つまたは複数のメモリセルに対して動作を実行するためにメモリサブシステムコントローラ115と併せて動作するローカルメディアコントローラ135を含む。いくつかの実施形態において、メモリデバイス130は、被管理メモリデバイスであり、これは、同じメモリデバイスパッケージ内のメモリ管理のためのローカルコントローラ(例えば、ローカルコントローラ135)と組み合わされた生のメモリデバイスである。被管理メモリデバイスの例は、被管理NAND(MNAND)デバイスである。
【0025】
メモリサブシステム110は、QoSレベルをメモリサブシステム内の各機能に割り当てるために使用され得るQoSレベル管理モジュール113を含む。特定の実施例において、QoSレベル管理モジュール113は、メモリサブシステムによって提供される複数の機能の各機能に、機能と関連付けられたQoSのレベルを表す対応する機能重みを割り当てることができる。1つの実施例において、機能重みは、例えば、所与の機能が、メモリデバイスの平均レイテンシよりも低いレイテンシでサーブされ得る(したがって、高レベルのQoSを提供する)ように、メモリデバイスの平均レイテンシと相対的な値であり得る。別の例において、別の機能の機能重みは、他の機能が、メモリデバイスの平均レイテンシよりも高いレイテンシ率でサーブされ得る(したがって、低レベルのQoSを提供する)ことを示し得る。特定の実施例において、機能と関連付けられたサービスの品質のレベルは、その機能において受信される1秒あたりの入力/出力動作(IOPS)およびその機能の専用のスループットを含むパラメータにより、構成および調整され得る。メモリサブシステムは、最小値(すなわち、「留保(Reserve)」)および最大値(すなわち、「限界(Limit)」)を各パラメータに設定することによって、これらのパラメータを構成することができ、こうして、QoSのレベルを修正する。
【0026】
QoSレベル管理モジュール113は、次いで、機能に割り当てられた対応する機能重み、ならびに機能において受信される動作の各I/O動作タイプに割り当てられた動作重みに基づいて、各機能にサービスをし得る。実施例において、QoSレベル管理モジュール113は、第1の動作重みを機能の読み出しタイプの動作に、第2の動作重みを機能の書き込みタイプの動作に割り当てることができる。機能重みおよび動作重みは、次いで、一単位時間あたりに実行され得る各タイプの動作の数を決定するために一緒に使用され得る。例えば、所与の機能に割り当てられた機能重みは、一単位時間あたりに実行され得るI/O動作の数に変わり得る。動作の数は、機能において受信されるI/O動作のサブセットであり得る。加えて、第1の動作重みは、動作の数のうちのいくつが読み出しタイプの動作に割り当てられ得るかを示すことができ、第2の動作重みは、動作の数のうちのいくつが書き込みタイプの動作に割り当てられ得るかを示すことができる。
【0027】
動作が実行のために選択されるとき、QoSレベル管理モジュール113はさらに、動作の動作重みに従って中断/再開ポリシーを実行することによって、(例えば、動作重みの形態で)動作に割り当てられたQoSのレベルをサポートする。いくつかの実施例において、読み出し動作が、実行のためにメモリデバイスにおいて受信されるとき、QoSレベル管理モジュール113は、書き込み動作が現在メモリデバイスによって実行されているかどうかをチェックすることができる。その場合、QoSレベル管理モジュール113は、読み出し動作の動作重みおよび書き込み動作の動作重みに比例する計算された遅延時間期間後に書き込み動作を中断することができる。書き込み動作の動作重みに対する読み出し動作の動作重みの比率が高いほど、遅延時間期間は長くなり得る。遅延時間期間が経過した後、QoSレベル管理モジュール113は、読み出し動作を実行することができ、次いで、読み出し動作が完了すると、書き込み動作を再開することができる。QoSレベル管理モジュール113の動作に関するさらなる詳細は、以下に説明される。
【0028】
図2は、本開示のいくつかの実施形態による、サービスの品質レベル管理のためのメモリサブシステム110における機能重みおよび動作重み割り当てを示す。メモリサブシステム110は、メモリデバイス130にアクセスするための複数の仮想および物理機能F210~230を提供し得る。特定の実施例において、メモリサブシステム110は、仮想化環境内の複数の仮想マシン(VM)にサーブするために複数の機能を提供し、各VMがメモリデバイス130にアクセスするために1つまたは複数の機能を利用する。機能F210~230は、メモリデバイス130にアクセスするためのホストコンピューティングシステムからI/O動作(例えば、読み出し動作、書き込み動作)を受信することができる。様々な機能からのこれらのI/O動作のすべてが、メモリデバイス130にアクセスする必要があるため、および機能が、メモリサブシステム110によってそれに割り当てられたQoSのレベルにおいて様々であり得るため、各機能は、そのQoSレベルと一致するメモリデバイス130にアクセスするための異なる優先度を有し得る。各機能の優先度は、機能重み211~231によって表され得る。さらに、所与の機能では、各動作タイプ(例えば、読み出し動作タイプ、書き込み動作タイプ)は、メモリデバイス130にアクセスするための異なる優先度を有し得、これは、読み出し重み216~236および書き込み重み218~238として表現され得る。
【0029】
メモリサブシステム110は、各機能210~230に、機能と関連付けられたサービスの品質のレベルを表す対応する機能重みを割り当てることができる。例えば、F210は、機能重み211を割り当てられ得、F220は、機能重み221を割り当てられ得、F230は、機能重み231を割り当てられ得る。1つの実施例において、機能重みは、メモリデバイス130の平均レイテンシと相対的な値であり得る。メモリデバイス130の平均レイテンシは、I/O動作が受信された時間からI/O動作の実行が完了した時間までの平均持続時間を指し得る。実施例において、平均レイテンシは、一単位時間(例えば、1秒)にサービスされた読み出し動作のタイミング、および同じ単位時間にサービスされた書き込み動作のタイミングを測定するためのタイマを使用して計算され得る。次いで、メモリデバイス130の平均読み出しレイテンシが、読み出し動作の測定された時間の平均として計算され得る。メモリデバイス130の平均書き込みレイテンシは、書き込み動作の測定された時間の平均として計算され得る。メモリデバイス130の合計平均レイテンシもまた、平均読み出しレイテンシおよび平均書き込みレイテンシに関して決定され得る。
【0030】
メモリデバイス130の平均レイテンシを前提として、機能重み211~231は、メモリデバイス130の平均レイテンシに相対して決定され得る。1つの実施例において、機能重みは、0~1000の値であり得る。0は、可能な限り低いレイテンシを示し得、1000は、メモリデバイス130の平均レイテンシよりも10倍長いことを示し得る。0~1000の中間の値は、メモリデバイス130の平均レイテンシの対応するパーセンテージを示し得る。例えば、機能重み211が50に等しい場合、それは、F210がメモリデバイス130の平均レイテンシの2倍の速さ(すなわち、0.5倍の平均レイテンシ)であるレイテンシでサービスされるべきであること、したがって、QoSの平均レベルよりも高いものを提供することを示す。その一方で、機能重み221が500に等しい場合、それは、F220がメモリデバイス130の平均レイテンシの5倍の遅さ(すなわち、5倍の平均レイテンシ)であるレイテンシでサービスされるべきであること、したがって、QoSの平均レベルよりも低いものを提供することを示す。特定の実施例において、機能重みは、所与の実行サイクルで実行され得る機能において受信されるI/O動作の数に変換され得る。例示的な例において、メモリデバイス130が、実行サイクル中に12個の動作を処理することができる場合、12個の動作は、他の機能の重みに対する各機能の重みに従って機能間で分割され得る。したがって、機能重み211が50であり、機能重み221が500であり、機能重み231が150である場合、サイクルあたりの12個の動作は、各実行サイクル中に、機能F210への8つの動作、F220への3つの動作、およびF230への1つの動作として割り当てられ得る。メモリサブシステム110は、次いで、各タイプの動作重みに基づいて、各機能に割り当てられた動作のうちのいくつが、書き込みタイプの動作に対する読み出しタイプの動作であり得るかを決定することができる。
【0031】
読み出し重み216~236は、それぞれの機能において受信される読み出し動作の優先度を、同じ機能において受信される対応する書き込み動作の優先度と関連して、決定することができる。動作タイプの優先度は、それが、高速動作が時間のかかる動作よりも優先されることを可能にし得、例えば、このことが異なるタイプの動作の処理を順不同に行うことをさらに除去し得ることから、機能のより予測可能なQoSを促進し得る。例示的な例において、読み出し重み216が3であり、書き込み重みが1である場合、このため、上の例に従って、F210が、実行サイクルあたり8つの動作を割り当てられる場合、この8つの動作は、読み出し動作および書き込み動作それぞれの間で3:1に割り振られ得る。したがって、この8つの動作は、読み出しタイプの動作の6つの動作および書き込みタイプの動作の2つの動作として割り当てられ得る。実施例において、6つの読み出し動作は、読み出しキュー212から取得され得、2つの書き込み動作は、書き込みキュー214から取得され得る。
【0032】
読み出しキュー212~232は、機能210~230において受信される読み出し動作を格納するための動作キューである。書き込みキュー214~234は、機能210~230において受信される書き込み動作を格納するための動作キューである。読み出しキュー212~232および書き込みキュー214~234は、機能あたり1つの読み出しキューおよび1つの書き込みキューとして示されるが、各機能は、機能において受信されるI/O動作を格納するための独自の1つまたは複数の読み出しキューおよび1つまたは複数の書き込みキューを有し得る。I/O動作は、動作タイプ(例えば、書き込みに対する読み出し)に従って所与のキューに格納される。I/O動作は、それらが、1つまたは複数の実行サイクル中に実行のために取得されるまで、キューに格納され得る。実行サイクル中、読み出し動作は、機能読み出し重み216~236および機能重み211~231に従って、機能210~230の読み出しキュー212~232から取得され得る。同様に、書き込み動作は、機能書き込み重み218~238および機能重み211~231に従って、機能210~230の書き込みキュー214~234から取得され得る。例えば、F220が3の機能重み221、2の読み出し重み226、および1の書き込み重み228を有する場合、メモリサブシステム110は、機能230からのI/O動作を処理するとき、読み出しキュー226から2つの読み出し動作、および書き込みキュー228から1つの書き込み動作を取得し得る。実施例において、書き込みキュー228がI/O動作を含まない場合、メモリサブシステム110は、利用可能であれば、読み出しキュー226から3つすべての動作を取得し得る。同様に、読み出しキュー226がI/O動作を含まない場合、メモリサブシステム110は、利用可能であれば、処理のために書き込みキュー228から3つすべての動作を取得し得る。
【0033】
図3は、本開示のいくつかの実施形態による、QoSレベル管理を支持するプログラム/消去(P/E)中断/再開ポリシータイムラインの例を示す。P/E中断/再開ポリシーは、以下に説明されるように、特定のタイプのI/O動作を、別の動作タイプの現在実行中の動作よりも優先させ得る。動作が実行のために選択されるとき、メモリサブシステム110はさらに、動作の動作重みに従って中断および再開のポリシーを実行することによって、(例えば、動作重みの形態で)動作に割り当てられたQoSのレベルをサポートする。
【0034】
ブロック310において、書き込み動作は、時間T0でメモリデバイス130において実行している場合がある。書き込み動作は、書き込み動作の優先度を示す割り当てられた書き込み重みを有し得る。実施例において、書き込み重みは、書き込み動作の動作重みおよび書き込み動作が受信された機能の機能重みの関数であり得る。他の実施例において、書き込み重みは、書き込みタイプの動作に割り当てられたサービスの品質のレベル(例えば、書き込みタイプの動作に割り当てられたあるバンド幅値)の関数であり得る。ブロック312において、読み出し動作は、時間T1でメモリデバイス130に到着し得る。読み出し動作は、読み出し動作の優先度を示す割り当てられた読み出し重みを有し得る。実施例において、読み出し重みは、読み出し動作の動作重みおよび読み出し動作が受信された機能の機能重みの関数であり得る。他の実施例において、読み出し重みは、読み出しタイプの動作に割り当てられたサービスの品質のレベル(例えば、読み出しタイプの動作に割り当てられたあるバンド幅値)の関数であり得る。
【0035】
いくつかの実施例において、書き込み動作が実行されている間に、読み出し動作がメモリデバイス130において受信されるとき、メモリサブシステム110は、読み出し動作を実行するために、計算された遅延時間320の後に書き込み動作を中断し得る。これは、高速読み出し動作が、上に説明されるように、非常に長い書き込み動作が実行を完全に完了するのを待つ必要なしに実行することを可能にするために行われる。
【0036】
遅延時間320は、入ってくる読み出し動作の動作重みおよび進行中の書き込み動作の動作重みに対応し、その結果として、書き込み動作の動作重みに対する動作重みまたは読み出し動作の比率が高いほど遅延時間期間が長くなり得る。遅延時間320は、より多くの読み出し動作が実行のために到着すると、書き込み動作が最低限の数の中断/再開割り込みで完了することを可能にしながら高優先度の読み出し動作を実行する手段を提供し得る。さらに、遅延時間320は、既定の時間期間Trの増分として規定され得る。Trは、メモリデバイス130の平均読み出し時間(例えば、100ミリ秒)として規定され得る。例えば、書き込み動作の動作重みが200と規定され、読み出し動作の動作重みが50であると規定される場合、読み出し重み対書き込み重みの比率は、1:4であり、遅延時間320が1/4(4分の1)×Trであることを意味する。その一方で、書き込み動作の動作重みが、200の代わりに300である場合、比率は1/6であり、書き込み動作が読み出し動作と比較してさらに低い優先度であることを意味し、読み出し動作は、実行前にほんの1/6(6分の1)×Trだけ待機し得る、などとなる。
【0037】
遅延時間期間が経過した後、ブロック314において、メモリサブシステム110は、T2で書き込み動作を中断する。中断動作が完了すると、メモリサブシステム110は、T3でメモリデバイス130にアクセスする動作を可能にすることによって、ブロック316において読み出し動作を実行することができる。続いて、読み出し動作が完了すると、メモリサブシステムは、ブロック318において、中断された書き込み動作を再開することができる。実施例において、本明細書に説明される中断/再開ポリシーは、バックグラウンド動作(例えば、消去)がメモリデバイス130において実行されており、読み出し動作が実行のためにメモリデバイス130に到着するときにも当てはまり得る。
【0038】
図4は、本開示のいくつかの実施形態による、メモリサブシステム内のQoSレベル管理を支持する機能重みおよび動作重みを割り当てる例示的な方法のフロー図である。方法400は、ハードウェア(例えば、処理デバイス、回路、専用論理、プログラマブル論理、マイクロコード、デバイスのハードウェア、集積回路など)、ソフトウェア(例えば、処理デバイス上で実行される(runまたはexecuted)命令)、またはそれらの組み合わせを含み得る処理論理によって実施され得る。いくつかの実施形態において、方法400は、図1のQoSレベル管理モジュール113によって実施される。特定のシーケンスまたは順序で示されるが、別段の記載のない限り、プロセスの順序は修正され得る。したがって、示された実施形態は、単に例として理解されるべきであり、示されたプロセスは、異なる順序で実施され得、いくつかのプロセスが並行して実施され得る。加えて、1つまたは複数のプロセスは、様々な実施形態において、省略され得る。したがって、すべてのプロセスが全実施形態において必要とされるわけではない。他のプロセスフローが可能である。
【0039】
動作410において、処理論理は、メモリデバイス130にアクセスするための複数の機能を提供する。複数の機能は、本明細書内で上により詳細に説明されるように、処理のためにホストコンピューティングシステムからI/O動作を受信する。複数の機能は、メモリデバイス130の読み出し動作および書き込み動作を受信することができる仮想機能および/または物理機能であり得る。動作420において、処理論理は、複数の機能の各機能に、対応する機能重みを割り当て得る。上に説明されるように、機能重みは、機能と関連付けられたサービスの品質のレベルを表し得、メモリデバイス130の平均レイテンシと相対的な値であり得る。
【0040】
動作430において、処理論理は、機能に割り当てられる対応する機能重みに基づいてサービスするために複数の機能のうちの1つの機能を選択し得る。特定の実施例において、機能重みは、上に説明されるように、実行サイクル中に各機能からサーブされ得るI/O動作の数に変換され得る。動作440において、処理論理は、第1の動作重みを機能の第1のI/O動作タイプに、および第2の動作重みを第1の機能の第2のI/O動作タイプに割り当て得る。例えば、第1のI/O動作タイプは、読み出しタイプの動作であり得、第1の動作重みは、読み出し重みであり得る。同様に、第2のI/O動作タイプは、書き込みタイプの動作であり得、第2の動作重みは、書き込み重みであり得る。
【0041】
動作450において、処理論理は、第1の動作重みに従って、機能の第1のI/O動作タイプの第1の数の動作を、および第2の動作重みに従って、第1の機能の第2のI/O動作タイプの第2の数の動作を、実行のために選択する。実施例において、本明細書内で上により詳細に説明されるように、第1の数の動作は、機能と関連付けられた第1のキューから選択され得、第2の数の動作は、機能と関連付けられた第2のキューから選択され得る。
【0042】
図5は、本開示のいくつかの実施形態による、メモリサブシステム内のQoSレベル管理を支持するI/O動作の実行サイクルの例示的な方法のフロー図である。方法500は、ハードウェア(例えば、処理デバイス、回路、専用論理、プログラマブル論理、マイクロコード、デバイスのハードウェア、集積回路など)、ソフトウェア(例えば、処理デバイス上で実行される(runまたはexecuted)命令)、またはそれらの組み合わせを含み得る処理論理によって実施され得る。いくつかの実施形態において、方法500は、図1のQoSレベル管理モジュール113によって実施される。特定のシーケンスまたは順序で示されるが、別段の記載のない限り、プロセスの順序は修正され得る。したがって、示された実施形態は、単に例として理解されるべきであり、示されたプロセスは、異なる順序で実施され得、いくつかのプロセスが並行して実施され得る。加えて、1つまたは複数のプロセスは、様々な実施形態において、省略され得る。したがって、すべてのプロセスが全実施形態において必要とされるわけではない。他のプロセスフローが可能である。
【0043】
動作510において、処理論理は、実行のためにI/O動作を選択するために重み付きラウンドロビン選択スキームを開始する。よく知られている選択スキームとしては、ラウンドロビンおよび重み付きラウンドロビンが挙げられる。ラウンドロビン選択において、メモリサブシステムは、各キューを順に訪問し、各訪問の際にそのキューからの単一のコマンドを実行する(空のキューはスキップされ得る)。例えば、2つのキューが存在する場合、メモリシステムは、第1のキューからの1つのコマンド、次いで第2のキューからの1つのコマンド、次いで再び第1のキューからの1つのコマンドというように実行し得る。重み付きラウンドロビン選択では、1つのコマンドキューは、別のコマンドキューよりもいくらか大きいバンド幅の量を割り当てられ得、その結果として、2つ以上のコマンドのグループが、高い重みを有するコマンドキューが訪問される度に実行され得る。例えば、メモリシステムは、第2のキューに切り替える前に第1のキューからの5つのコマンドを実行し、次いで第1のキューに切り替えて戻る前に第2のキューからの2つのコマンドを実行し得る。
【0044】
動作520において、処理デバイスは、機能重みに従って機能において受信されるI/O動作を実行することによって、サービスするためにメモリデバイス多機能のうちの1つの機能を選択する。実施例において、機能重みは、本明細書内で上により詳細に説明されるように、メモリデバイス130の平均レイテンシと相対的な値であり得る。特定の実施例において、機能重みは、所与の実行サイクルで実行され得る機能のI/O動作の数に変換され得る。したがって、動作530において、処理論理は、機能重みに基づいて機能に割り当てられた動作の数を決定する。
【0045】
動作540において、処理論理は、機能と関連付けられた読み出しキューから、読み出し動作重みおよび機能に割り当てられた動作の数に基づいて、いくつかの読み出し動作を取得し得る。動作550において、処理論理は、機能と関連付けられた書き込みキューから、書き込み動作重みおよび機能に割り当てられた動作の数に基づいて、いくつかの書き込み動作を取得し得る。特定の実施例において、書き込み動作重みは、メモリデバイスの平均レイテンシと相対的な値であり得る(例えば、書き込みタイプの動作に割り当てられたサービスの品質のレベルによって決定される)。同様に、読み出し動作重みは、メモリデバイスの平均レイテンシと相対的な値であり得る(例えば、読み出しタイプの動作に割り当てられたサービスの品質のレベルによって決定される)。
【0046】
特定の実施例において、読み出しキューがI/O動作を含まない場合、処理デバイスは、利用可能な場合、処理のために、書き込みキューから機能に割り当てられたすべてのI/O動作を取得し得る。同様に、書き込みキューがI/O動作を含まない場合、処理デバイスは、利用可能な場合、処理のために、読み出しキューから機能に割り当てられたすべてのI/O動作を取得し得る。
【0047】
処理論理は、各々の機能重みに従って各機能からのI/O動作を実行するために、メモリサブシステムの複数の機能の各機能をループスルーし続ける。したがって、動作555において、すべての機能がサービスされたかどうかに関して決定がなされる。動作560において、すべての機能がサービスされていた場合、処理論理は、現在の実行サイクルのためのすべてのI/O動作が選択されたため、重み付きラウンドロビンアルゴリズムを終了することができる。その一方で、処理論理が、いくつかの機能がまだサービスされていないことを決定する場合、処理論理は、実行のために次の機能において受信されるI/O動作を選択するために動作520にループバックすることができる。
【0048】
図6は、本開示のいくつかの実施形態による、メモリサブシステム内のQoSレベル管理を支持する中断および再開ポリシーの例示的な方法のフロー図である。方法600は、ハードウェア(例えば、処理デバイス、回路、専用論理、プログラマブル論理、マイクロコード、デバイスのハードウェア、集積回路など)、ソフトウェア(例えば、処理デバイス上で実行される(runまたはexecuted)命令)、またはそれらの組み合わせを含み得る処理論理によって実施され得る。いくつかの実施形態において、方法600は、図1のQoSレベル管理モジュール113によって実施される。特定のシーケンスまたは順序で示されるが、別段の記載のない限り、プロセスの順序は修正され得る。したがって、示された実施形態は、単に例として理解されるべきであり、示されたプロセスは、異なる順序で実施され得、いくつかのプロセスが並行して実施され得る。加えて、1つまたは複数のプロセスは、様々な実施形態において、省略され得る。したがって、すべてのプロセスが全実施形態において必要とされるわけではない。他のプロセスフローが可能である。
【0049】
動作610において、処理論理は、メモリデバイス130における実行のために、第1のI/O動作タイプの第1の動作を受信する。実施例において、第1の動作タイプは、読み出しタイプの動作であり得る。上で説明されるように、第1のタイプの動作は、割り当てられた動作重みを有し得、動作の優先度を示す。動作620において、処理論理は、第2のI/O動作タイプの第2の動作がメモリデバイス130において実行されているかどうかを決定する。第2のI/O動作タイプは、書き込みタイプの動作であり得る。第2のタイプの動作は、割り当てられた動作重みを有し得、動作の優先度を示す。
【0050】
処理論理が、現在進行中のI/O動作がないことを決定する場合、処理論理は、動作650において第1のI/O動作を実行することができる。その一方で、処理論理が、メモリデバイス130において実行されている第2のI/O動作タイプの第2の動作が存在することを決定する場合、処理論理は、第2の動作を中断するか否かを決定するために、動作625において閾値条件を評価することができる。実施例において、処理論理が、現在実行されている第2の動作が特定の閾値を下回る実行の割合(例えば、完了まで90%未満)に達したかどうかを決定することができる場合、処理論理は、第2の動作が、第1の動作が実行されるために中断されるべきであることを決定し得る。他の実施例において、処理論理は、第2の動作の残りの実行時間が第1の動作の実行時間よりも長いことを決定し得、処理論理は、第2の動作が中断されるべきであることを決定し得る。
【0051】
動作644において、処理論理は、第2の動作が中断され得ることを決定し得、第1の動作を、実行される前に、ある遅延時間期間にわたって待機させ得る。上に説明されるように、遅延時間期間は、入ってくる第1の動作の動作重みおよび進行中の第2の動作の動作重みに対応し、その結果として、第2の動作の動作重みに対する動作重みまたは第1の動作の比率が高いほど遅延時間期間が長くなり得る。遅延時間期間は、既定の時間期間Tr(例えば、メモリデバイス130の平均読み出し時間)の増分と規定され得る。
【0052】
遅延時間期間が経過した後、動作646において、処理論理は、別の動作を実行するためにメモリデバイス130を自由にするために、第2の動作を中断し得る。中断動作が完了すると、動作648において、処理論理は、第1の動作を、この動作がメモリデバイス130にアクセスするのを可能にすることによって、実行し得る。続いて、第1の動作が完了すると、処理論理は、660において、中断された第2の動作を再開し得る。
【0053】
動作632において、処理論理が、閾値条件が満足されていないことを決定する場合、処理論理は、第2の動作がその実行を完了することを許可されるべきであることを決定し得る1つの実施例において、閾値基準は、第2の動作の実行が90%未満完了であることであってもよい。他の実施例において、閾値基準は、第2の動作の残りの実行時間が第1の動作の実行時間よりも長いことであってもよい。処理論理は、このとき、第2の動作が完全に実行するまで、第1の動作を待機させ得る。動作650において、第2の動作がその実行を完了するとき、処理論理は、第1の動作を実行することができる。この場合、中断/再開ポリシーは、第2の動作が完了に近かったことで、それに割り込むことが、全体的なシステムパフォーマンスにとって有益ではない場合があるために、回避されている。図7は、本開示のいくつかの実施形態による、メモリサブシステム内のQoSレベル管理を支持する機能重みを割り当てる例示的な方法のフロー図である。方法700は、ハードウェア(例えば、処理デバイス、回路、専用論理、プログラマブル論理、マイクロコード、デバイスのハードウェア、集積回路など)、ソフトウェア(例えば、処理デバイス上で実行される(runまたはexecuted)命令)、またはそれらの組み合わせを含み得る処理論理によって実施され得る。いくつかの実施形態において、方法700は、図1のQoSレベル管理モジュール113によって実施される。特定のシーケンスまたは順序で示されるが、別段の記載のない限り、プロセスの順序は修正され得る。したがって、示された実施形態は、単に例として理解されるべきであり、示されたプロセスは、異なる順序で実施され得、いくつかのプロセスが並行して実施され得る。加えて、1つまたは複数のプロセスは、様々な実施形態において、省略され得る。したがって、すべてのプロセスが全実施形態において必要とされるわけではない。他のプロセスフローが可能である。
【0054】
動作710において、処理論理は、メモリデバイス130にアクセスするための複数の機能を提供する。複数の機能は、本明細書内で上により詳細に説明されるように、処理のためにホストコンピューティングシステムからI/O動作を受信する。複数の機能は、メモリデバイス130の読み出し動作および書き込み動作を受信することができる仮想機能および/または物理機能であり得る。動作720において、処理論理は、複数の機能の各機能のためのサービスの品質レベルを決定することができる。実施例において、機能のサービスの品質レベルは、機能がメモリサブシステムのサービスレベルアグリーメントの条件(例えば、メモリサブシステムの品質、可用性、責務など)を満たすように受信することができるサービスのレベルを決定することができる。
【0055】
動作730において、処理論理は、複数の機能の各機能に、対応する機能重みを割り当て得る。上に説明されるように、機能重みは、機能と関連付けられたサービスの品質のレベルを表し得、メモリデバイス130の平均レイテンシと相対的な値であり得る。
【0056】
動作740において、処理論理は、メモリデバイス130における実行のためにI/O動作のセットを選択し得る。実施例において、処理論理は、各機能の機能重みに従って、メモリデバイス130の機能において受信されるI/O動作のサブセットを選択し得る。例えば、処理論理は、メモリデバイス130の複数の機能の各機能において受信されるI/O動作の数を選択し得る。各機能において選択されるI/O動作の数は、本明細書内で上により詳細に説明されるように、各機能のサービスの品質レベルを満足するように、各機能の対応する機能重みに従って決定される。
【0057】
動作750において、処理論理は、本明細書内で上により詳細に説明されるように、メモリデバイス130の次の実行サイクルにおいてI/O動作の選択されたサブセットを実行する。特定の実施例において、I/O動作のサブセットは、図6の方法600に従って実行され得る。図8は、コンピュータシステムの例示的なマシン800を例証し、このコンピュータシステム内で、本明細書内で論じられた方法論のうちの任意の1つまたは複数をマシンに実施させるための命令のセットが実行され得る。いくつかの実施形態において、コンピュータシステム800は、メモリサブシステム(例えば、図1のメモリサブシステム110)を含むか、これに結合されるか、もしくはこれを利用するか、またはコントローラの動作を実施するために(例えば、図1のQoSレベル管理モジュール113に対応する動作を実施するためにオペレーティングシステムを実行するために)使用され得る、ホストシステム(例えば、図1のホストシステム120)に対応する。代替の実施形態において、マシンは、LAN、イントラネット、エクストラネット、および/またはインターネット内の他のマシンに接続(例えば、ネットワーク化)され得る。マシンは、ピアツーピア(または分散)ネットワーク環境内のピアマシンとして、またはクラウドコンピューティングインフラストラクチャもしくは環境内のサーバもしくはクライアントマシンとして、クライアント-サーバネットワーク環境内のサーバまたはクライアントマシンの能力内で動作することができる。
【0058】
マシンは、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、パーソナルデジタルアシスタント(PDA)、携帯電話、ウェブ電化製品、サーバ、ネットワークルータ、スイッチもしくはブリッジ、またはそのマシンによって取られるべき行動を指定する命令のセットを実行することができる(順次またはその他の方法で)任意のマシンであってもよい。さらに、単一のマシンが示されるが、用語「マシン」はまた、本明細書で論じられる方法論のうちの任意の1つまたは複数を実施するために命令のセット(または複数のセット)を個々に、またはまとめて実行するマシンの任意の集合を含むと見なされる。
【0059】
例示的なコンピュータシステム800は、バス830を介して互いと通信する、処理デバイス802、メインメモリ804(例えば、リードオンリメモリ(ROM)、フラッシュメモリ、シンクロナスDRAM(SDRAM)またはRambus DRAM(RDRAM)などのダイナミックランダムアクセスメモリ(DRAM)など)、スタティックメモリ806(例えば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)など)、およびデータストレージシステム818を含む。
【0060】
処理デバイス802は、マイクロプロセッサ、中央処理装置、または同様のものなどの1つまたは複数の汎用処理デバイスを表す。より詳細には、処理デバイスは、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、または他の命令セットを実装するプロセッサ、または命令セットの組み合わせを実装するプロセッサであり得る。処理デバイス802はまた、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、または同様のものなど、1つまたは複数の特別目的処理デバイスであり得る。処理デバイス802は、本明細書内で論じられる動作およびステップを実施するための命令826を実行するように構成される。コンピュータシステム800は、ネットワーク820を通じて通信するためにネットワークインターフェースデバイス808をさらに含み得る。
【0061】
データストレージシステム818は、命令826の1つもしくは複数のセット、または本明細書内に説明される方法論もしくは機能のうちの任意の1つまたは複数を具現化するソフトウェアが格納されるマシン可読記憶媒体824(コンピュータ可読媒体としても知られる)を含み得る。命令826はまた、コンピュータシステム800によるその実行中、メインメモリ804内に、および/または処理デバイス802内に、完全に、または少なくとも部分的に存在し得、メインメモリ804および処理デバイス802もまた、マシン可読記憶媒体を構成する。マシン可読記憶媒体824、データストレージシステム818、および/またはメインメモリ804は、図1のメモリサブシステム110に対応し得る。
【0062】
1つの実施形態において、命令826は、図1のQoSレベル管理モジュール113に対応する機能性を実装するための命令を含む。マシン可読記憶媒体824は、単一の媒体であると例示的な実施形態においては示されるが、用語「マシン可読記憶媒体」は、命令の1つまたは複数のセットを格納する単一の媒体または複数の媒体を含むと見なされる。用語「マシン可読記憶媒体」はまた、マシンによる実行のための命令のセットを格納または符号化することができる、および本開示の方法論のうちの任意の1つまたは複数をマシンに実施させる、任意の媒体を含むと見なされる。用語「マシン可読記憶媒体」は、したがって、限定されるものではないが、ソリッドステートメモリ、光学媒体、および磁気媒体を含むと見なされる。
【0063】
先行する詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する動作のアルゴリズムおよび記号的表現に関して提示されている。これらのアルゴリズムの説明および表現は、それらの作用の要旨を他の当業者に最も効果的に伝えるためにデータ処理技術において当業者により使用される方法である。アルゴリズムは、ここでは、および一般的には、所望の結果をもたらす動作の自己無撞着シーケンスであると考えられる。動作は、物理量の物理的処理を必要とするものである。通常、必須ではないが、これらの量は、格納される、組み合わされる、比較される、および別途処理されることができる電気または磁気信号の形態をとる。原則的には共通使用の理由から、これらの信号をビット、値、要素、符号、文字、項、数字、または同様のものと呼ぶことが時には簡便であることが証明されている。
【0064】
しかしながら、これらのすべておよび同様の用語は、適切な物理量と関連付けられるべきであり、これらの量に適用される簡便なラベルにすぎないということに留意しておくべきである。本開示は、コンピュータシステムのレジスタおよびメモリ内の物理(電子)量として表されるデータを、操作して、コンピュータシステムメモリもしくはレジスタまたは他のそのような情報ストレージシステム内の物理量として同様に表される他のデータへと変換する、コンピュータシステム、または同様の電子コンピューティングデバイスの行為およびプロセスを指し得る。
【0065】
本開示はまた、本明細書内の動作を実施するための装置に関する。この装置は、意図した目的のために特別に構築され得るか、またはそれは、コンピュータに格納されるコンピュータプログラムによって選択的に起動または再構成される汎用コンピュータを含み得る。そのようなコンピュータプログラムは、限定されるものではないが、フロッピディスク、光学ディスク、CD-ROM、および光磁気ディスクを含む任意のタイプのディスク、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気もしくは光学カード、または電子命令を格納するのに好適な任意のタイプの媒体などのコンピュータ可読記憶媒体に格納され得、これらの各々がコンピュータシステムバスに結合される。
【0066】
本明細書内に提示されるアルゴリズムおよびディスプレイは、任意の特定のコンピュータまたは他の装置に本質的に関連するものではない。様々な汎用システムが、本明細書内の教示に従ってプログラムと共に使用され得るか、またはそれは、本方法を実施するためにより専門化された装置を構築するのに簡便であることを証明し得る。様々なこれらのシステムの構造は、以下の説明に明記されるように見える。加えて、本開示は、任意の特定のプログラミング言語に関連して説明されるものではない。様々なプログラミング言語が本明細書内に説明されるような本開示の教示を実装するために使用され得るということを理解されたい。
【0067】
本開示は、本開示に従ってプロセスを実施するようにコンピュータシステム(または他の電子デバイス)をプログラムするために使用され得る、命令が格納されているマシン可読媒体を含み得るコンピュータプログラム製品、またはソフトウェアとして提供され得る。マシン可読媒体は、マシン(例えば、コンピュータ)によって読むことが可能な形態で情報を格納するための任意の機序を含む。いくつかの実施形態において、マシン可読(例えば、コンピュータ可読)媒体は、リードオンリメモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリコンポーネントなど、マシン(例えば、コンピュータ)可読記憶媒体を含む。
【0068】
先述の明細書において、本開示の実施形態は、それらの特定の例示的な実施形態に関して説明されている。様々な修正が、それらに対して、以下の請求項に明記されるような本開示の実施形態の幅広い趣旨および範囲から逸脱することなくなされ得ることは明らかである。したがって、本明細書および図面は、制限的意味よりもむしろ例示的意味と考えられるべきである。
図1
図2
図3
図4
図5
図6
図7
図8
【国際調査報告】