(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-30
(54)【発明の名称】ホストデバイスからのドアベルトランザクションのコマンドをグループ化するためのデータ記憶デバイス、システム、及び関連する方法
(51)【国際特許分類】
G06F 12/06 20060101AFI20240723BHJP
G06F 3/06 20060101ALI20240723BHJP
G06F 13/12 20060101ALI20240723BHJP
【FI】
G06F12/06 550A
G06F3/06 301F
G06F13/12 340D
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024502185
(86)(22)【出願日】2022-05-10
(85)【翻訳文提出日】2024-01-15
(86)【国際出願番号】 US2022028464
(87)【国際公開番号】W WO2023069148
(87)【国際公開日】2023-04-27
(32)【優先日】2021-10-20
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】504056130
【氏名又は名称】ウェスタン デジタル テクノロジーズ インコーポレーテッド
(74)【代理人】
【識別番号】100207837
【氏名又は名称】小松原 寿美
(72)【発明者】
【氏名】ベニスティ、シェイ
(72)【発明者】
【氏名】ハーン、ジュダ ガムリエル
(72)【発明者】
【氏名】ナボン、アリエル
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160CD04
(57)【要約】
本開示の態様は、概して、ホストデバイスからのドアベルトランザクションのコマンドを複数のグルーピングにグループ化するデータ記憶デバイス、システム、及び関連する方法に関する。データ記憶デバイスのコントローラは、ホストデバイスから複数のコマンドを含む複数のサブミッションドアベルトランザクションを受信するように構成されている。コントローラは、複数のサブミッションドアベルトランザクションの複数のコマンドを、グルーピング順序を有する複数のグルーピングにグループ化するように構成されている。複数のグルーピングの各グルーピングは、複数のサブミッションドアベルトランザクションのうちの単一のドアベルトランザクションに対応する。コントローラは、1つ以上の完了ドアベルトランザクションをホストデバイスに送信するように構成されている。1つ以上の完了ドアベルトランザクションの各完了ドアベルトランザクションは、複数のグルーピングのうちの完了したグルーピングを識別する。
【特許請求の範囲】
【請求項1】
データ記憶デバイスであって、
1つ以上のメモリデバイスと、
前記1つ以上のメモリデバイスに結合されたコントローラと、を備え、前記コントローラが、
ホストデバイスから第1の全体順序で複数のコマンドを備える複数のサブミッションドアベルトランザクションを受信することであって、前記複数のサブミッションドアベルトランザクションの各サブミッションドアベルトランザクションが、第1のコマンド順序で1つ以上のコマンドのサブセットを識別する、ことと、
前記複数のサブミッションドアベルトランザクションの前記複数のコマンドを、グルーピング順序を有する複数のグルーピングにグループ化することであって、前記複数のグルーピングの各グルーピングは、前記複数のサブミッションドアベルトランザクションの単一のドアベルトランザクションに対応する、ことと、
1つ以上の完了ドアベルトランザクションを前記ホストデバイスに送信することであって、前記1つ以上の完了ドアベルトランザクションの各完了ドアベルトランザクションは、前記複数のグルーピングのうちの完了したグルーピングを識別し、前記完了したグルーピングは、前記完了したグルーピングに対応する1つ以上のコマンドの前記サブセットが完了したことを示す、ことと、を行うように構成されている、データ記憶デバイス。
【請求項2】
前記1つ以上の完了ドアベルトランザクションの各完了ドアベルトランザクションが、前記第1のコマンド順序と同じである第2のコマンド順序で前記完了したグルーピングを識別する、請求項1に記載のデータ記憶デバイス。
【請求項3】
前記コントローラが、前記第1の全体順序とは異なる第1の動作順序で前記複数のコマンドを実行するように更に構成されている、請求項2に記載のデータ記憶デバイス。
【請求項4】
前記コントローラが、ホストインターフェースモジュール(HIM)を含み、前記HIMは、
前記複数のコマンドを記憶するように構成されたサブミッションデータベースと、
前記サブミッションデータベースと通信する完了順序付け論理と、を含む、請求項1に記載のデータ記憶デバイス。
【請求項5】
前記コントローラが、前記サブミッションデータベース内の前記複数のグルーピングを記憶するように更に構成されている、請求項4に記載のデータ記憶デバイス。
【請求項6】
前記完了順序付け論理が、
前記サブミッションデータベース内の前記複数のグルーピングを監視することと、
前記複数のグルーピングのうちの少なくとも1つが完了したとの判定に際して前記1つ以上の完了ドアベルトランザクションの前記ホストデバイスへの送信をスケジュールすることであって、完了したグルーピングごとに、前記完了したグルーピングに対応する1つ以上のコマンドの前記サブセットが、同じ割込み通知において前記ホストデバイスに送信される、ことと、を行うように構成されている、請求項5に記載のデータ記憶デバイス。
【請求項7】
前記コントローラが、前記第1の全体順序と同じである第2の動作順序で前記複数のコマンドを実行するように更に構成されている、請求項6に記載のデータ記憶デバイス。
【請求項8】
前記完了順序付け論理が、
前記複数のグルーピングのうちの全てが完了したとの判定に際して前記1つ以上の完了ドアベルトランザクションの前記ホストデバイスへの前記送信をスケジュールするように構成されている、請求項7に記載のデータ記憶デバイス。
【請求項9】
前記完了順序付け論理が、
前記複数のグルーピングのうちの全てが完了したとの前記判定に際して完了グルーピング順序で前記1つ以上の完了ドアベルトランザクションの前記送信をスケジュールするように構成されており、前記完了グルーピング順序が前記グルーピング順序と同じである、請求項8に記載のデータ記憶デバイス。
【請求項10】
前記HIMが、
前記複数のコマンドの各々について、各コマンドが受信された前記単一のドアベルトランザクションを識別するように構成されたコマンドグルーピング論理を更に含む、請求項4に記載のデータ記憶デバイス。
【請求項11】
前記コントローラが、
プロセッサと
前記1つ以上のメモリデバイスと通信するフラッシュインターフェースモジュール(FIM)と
前記FIMを介して前記複数のコマンドを実行するために前記FIMと通信するコマンドスケジューラであって、前記複数のコマンドは、読み出し動作又は書き込み動作のうちの1つ以上を含む、コマンドスケジューラと、を更に含む、請求項10に記載のデータ記憶デバイス。
【請求項12】
データ記憶デバイスであって、
1つ以上のメモリデバイスと、
前記1つ以上のメモリデバイスに結合されたコントローラと、を備え、前記コントローラが、
ホストデバイスから第1の全体順序で複数のコマンドを備える複数のサブミッションドアベルトランザクションを受信することであって、前記複数のサブミッションドアベルトランザクションの各サブミッションドアベルトランザクションが、第1のコマンド順序で1つ以上のコマンドのサブセットを識別する、ことと、
前記複数のサブミッションドアベルトランザクションの前記複数のコマンドを、グルーピング順序を有する複数のグルーピングにグループ化することであって、前記複数のグルーピングの各グルーピングは、前記複数のサブミッションドアベルトランザクションの単一のドアベルトランザクションに対応する、ことと、
第2の複数のサブミッションドアベルトランザクションを受信することと、
アボートコマンドがないか前記第2の複数のサブミッションドアベルトランザクションをスキャンすることと、
前記第2の複数のサブミッションドアベルトランザクションをスキャンした後に、前記複数のコマンドを実行することと、
1つ以上の完了ドアベルトランザクションを前記ホストデバイスに送信することであって、前記1つ以上の完了ドアベルトランザクションの各完了ドアベルトランザクションは、前記複数のグルーピングのうちの完了したグルーピングを識別し、前記完了したグルーピングは、前記完了したグルーピングに対応する1つ以上のコマンドの前記サブセットが完了したことを示す、ことと、を行うように構成されている、データ記憶デバイス。
【請求項14】
前記アボートコマンドが、前記複数のサブミッションドアベルトランザクションの前記複数のコマンドのうちの1つのコマンドに対応し、前記アボートコマンドは、前記コマンドを中断する命令を含む、請求項12に記載のデータ記憶デバイス。
【請求項15】
前記アボートコマンドが、前記コマンドを識別する一意の識別子を含む、請求項14に記載のデータ記憶デバイス。
【請求項16】
前記コントローラが、前記アボートコマンドを検出した場合、前記1つ以上の完了ドアベルトランザクションから前記コマンドを除去するように更に構成されている、請求項14に記載のデータ記憶デバイス。
【請求項17】
前記複数のコマンドが、前記第1の全体順序とは異なる第1の動作順序で実行される、請求項16に記載のデータ記憶デバイス。
【請求項18】
前記第2の複数のサブミッションドアベルトランザクションが、第2の複数のコマンドを含み、前記コントローラは、ホストインターフェースモジュール(HIM)を含み、前記HIMは、
前記複数のコマンド及び前記第2の複数のコマンドを記憶するように構成されたサブミッションデータベースと、
前記サブミッションデータベースと通信する完了順序付け論理と、を含む、請求項14に記載のデータ記憶デバイス。
【請求項19】
前記コントローラは、前記HIMと通信するコマンドスケジューラを更に含み、
前記コマンドスケジューラは、前記アボートコマンドが前記サブミッションデータベースに記憶されている場合、前記コマンドをスケジュールせず、
前記完了順序付け論理は、前記サブミッションデータベース内の前記複数のグルーピングを監視し、前記アボートコマンドが前記サブミッションデータベース内に記憶されている場合、前記1つ以上の完了ドアベルトランザクションから前記コマンドを除去するように構成されている、請求項18に記載のデータ記憶デバイス。
【請求項20】
データ記憶デバイスであって、
1つ以上のメモリ手段と、
前記1つ以上のメモリ手段に結合されたコントローラと、を備え、前記コントローラが、
ホストデバイスから複数のコマンドを備える複数のサブミッションドアベルトランザクションを受信することであって、前記複数のサブミッションドアベルトランザクションの各サブミッションドアベルトランザクションが、第1のコマンド順序で1つ以上のコマンドのサブセットを識別する、ことと、
前記複数のサブミッションドアベルトランザクションの前記複数のコマンドを、グルーピング順序を有する複数のグルーピングにグループ化することであって、前記複数のグルーピングの各グルーピングが前記複数のサブミッションドアベルトランザクションの単一のドアベルトランザクションに対応する、ことと、1つ以上の完了ドアベルトランザクションを前記ホストデバイスに送信することであって、前記1つ以上の完了ドアベルトランザクションの各完了ドアベルトランザクションが、前記複数のグルーピングのうちの完了したグルーピングを識別し、前記完了したグルーピングが、前記完了したグルーピングに対応する1つ以上のコマンドの前記サブセットが完了したことを示す、ことと、を行うように構成されている、データ記憶デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本出願は、2021年10月20日に出願された「Data Storage Devices,Systems,and Related Methods for Grouping Commands of Doorbell Transactions from Host Devices」と題する米国非仮出願第17/506,212号の利益を主張し、その内容の全体はあらゆる目的のために参照により本出願に組み込まれる。
【0002】
(発明の分野)
本開示の態様は、概して、ホストデバイスからのドアベルトランザクションのコマンドを複数のグルーピングにグループ化するデータ記憶デバイス、システム、及び関連する方法に関する。コマンドは、ソリッドステートドライブ(solid-state drive、SSD)のメモリデバイスなどの1つ以上のメモリデバイスに対する書き込み動作及び/又は読み出し動作であり得る。
【背景技術】
【0003】
関連技術の説明
ホストデバイスは、ホストデバイスの動作をサポートするためにメモリにアクセスする目的でデータ記憶デバイスと通信する。データ記憶デバイスは、ホストデバイスがコマンドを送信する順序に対してアウトオブオーダである方式でコマンドを実行することができる。
【0004】
アウトオブオーダ動作は、ホストデバイス側及びデータ記憶デバイス側で多数のバッチフィルを必要とするなどの問題を招く場合がある。ホストデバイスによって動作が効果的にキャンセルされる前にデータ記憶デバイスによって動作が行われ得るので、アウトオブオーダ動作は、電力及びリソースの浪費も伴う場合がある。更に、アウトオブオーダ動作は、ホストデバイスの動作を複雑にする場合がある。
【0005】
したがって、当技術分野では、アウトオブオーダ動作を実際に、簡単に、かつ効率的に促進するデータ記憶デバイスが必要とされている。
【発明の概要】
【0006】
本開示の態様は、概して、ホストデバイスからのドアベルトランザクションのコマンドを複数のグルーピングにグループ化するデータ記憶デバイス、システム、及び関連する方法に関する。データ記憶デバイスのコントローラは、ホストデバイスから複数のコマンドを含む複数のサブミッションドアベルトランザクションを受信するように構成されている。複数のサブミッションドアベルトランザクションの各サブミッションドアベルトランザクションは、第1のコマンド順序における1つ以上のコマンドのサブセットを識別する。
【0007】
コントローラは、複数のサブミッションドアベルトランザクションの複数のコマンドを、グルーピング順序を有する複数のグルーピングにグループ化するように構成されている。複数のグルーピングの各グルーピングは、複数のサブミッションドアベルトランザクションのうちの単一のドアベルトランザクションに対応する。コントローラは、1つ以上の完了ドアベルトランザクションをホストデバイスに送信するように構成されている。1つ以上の完了ドアベルトランザクションの各完了ドアベルトランザクションは、複数のグルーピングのうちの完了したグルーピングを識別する。一態様では、1つ以上の完了ドアベルトランザクションの各完了ドアベルトランザクションは、第1のコマンド順序と同じである第2のコマンド順序で完了したグルーピングを識別し、コントローラは、第1のコマンド順序及び第2のコマンド順序とは異なる第1の動作順序で複数のコマンドを実行するように構成されている。一態様では、コントローラは、第1のコマンド順序及び第2のコマンド順序と同じである第2の動作順序で複数のコマンドを実行するように構成されている。一態様では、コントローラは、第2の複数のサブミッションドアベルトランザクションを受信し、アボートコマンドがないか第2の複数のサブミッションドアベルトランザクションをスキャンし、第2の複数のサブミッションドアベルトランザクションをスキャンした後、複数のコマンドを実行するように構成されている。
【0008】
一実施形態では、データ記憶デバイスは、1つ以上のメモリデバイスと、1つ以上のメモリデバイスに結合されたコントローラと、を含む。コントローラは、ホストデバイスから第1の全体順序で複数のコマンドを有する複数のサブミッションドアベルトランザクションを受信するように構成されている。複数のサブミッションドアベルトランザクションの各サブミッションドアベルトランザクションは、第1のコマンド順序における1つ以上のコマンドのサブセットを識別する。コントローラは、複数のサブミッションドアベルトランザクションの複数のコマンドを、グルーピング順序を有する複数のグルーピングにグループ化するように構成されている。複数のグルーピングの各グルーピングは、複数のサブミッションドアベルトランザクションのうちの単一のドアベルトランザクションに対応する。コントローラは、1つ以上の完了ドアベルトランザクションをホストデバイスに送信するように構成されている。1つ以上の完了ドアベルトランザクションの各完了ドアベルトランザクションは、複数のグルーピングのうちの完了したグルーピングを識別する。完了したグルーピングは、完了したグルーピングに対応する1つ以上のコマンドのサブセットが完了したことを示す。
【0009】
一実施形態では、データ記憶デバイスは、1つ以上のメモリデバイスと、1つ以上のメモリデバイスに結合されたコントローラと、を含む。コントローラは、ホストデバイスから第1の全体順序で複数のコマンドを有する複数のサブミッションドアベルトランザクションを受信するように構成されている。複数のサブミッションドアベルトランザクションの各サブミッションドアベルトランザクションは、第1のコマンド順序における1つ以上のコマンドのサブセットを識別する。コントローラは、複数のサブミッションドアベルトランザクションの複数のコマンドを、グルーピング順序を有する複数のグルーピングにグループ化するように構成されている。複数のグルーピングの各グルーピングは、複数のサブミッションドアベルトランザクションのうちの単一のドアベルトランザクションに対応する。コントローラは、第2の複数のサブミッションドアベルトランザクションを受信し、アボートコマンドがないか第2の複数のサブミッションドアベルトランザクションをスキャンするように構成されている。コントローラは、第2の複数のサブミッションドアベルトランザクションをスキャンした後に、複数のコマンドを実行するように構成されている。コントローラは、1つ以上の完了ドアベルトランザクションをホストデバイスに送信するように構成されている。1つ以上の完了ドアベルトランザクションの各完了ドアベルトランザクションは、複数のグルーピングのうちの完了したグルーピングを識別する。完了したグルーピングは、完了したグルーピングに対応する1つ以上のコマンドのサブセットが完了したことを示す。
【0010】
一実施形態では、データ記憶デバイスは、1つ以上のメモリ記憶手段と、1つ以上のメモリ記憶手段に結合されたコントローラとを含む。コントローラは、ホストデバイスから複数のコマンドを有する複数のサブミッションドアベルトランザクションを受信するように構成されている。複数のサブミッションドアベルトランザクションの各サブミッションドアベルトランザクションは、第1のコマンド順序における1つ以上のコマンドのサブセットを識別する。コントローラは、複数のサブミッションドアベルトランザクションの複数のコマンドを、グルーピング順序を有する複数のグルーピングにグループ化するように構成されている。複数のグルーピングの各グルーピングは、複数のサブミッションドアベルトランザクションのうちの単一のドアベルトランザクションに対応する。コントローラは、1つ以上の完了ドアベルトランザクションをホストデバイスに送信するように構成されている。1つ以上の完了ドアベルトランザクションの各完了ドアベルトランザクションは、複数のグルーピングのうちの完了したグルーピングを識別する。完了したグルーピングは、完了したグルーピングに対応する1つ以上のコマンドのサブセットが完了したことを示す。
【図面の簡単な説明】
【0011】
本開示の上記の特徴を詳細に理解することができるように、簡潔に上で要約した本開示のより具体的な説明は、実施形態を参照することによってなされ得、それらのいくつかが添付の図面に例示されている。しかしながら、添付の図面は、本開示の典型的な実施形態のみを例示し、したがって、その範囲を限定するものと見なされるべきではなく、本開示が他の同等に有効な実施形態を認め得ることに留意すべきである。
【
図1】一実装形態による、データ記憶デバイスがホストデバイスの記憶デバイスとして機能し得る記憶システムの概略ブロック図である。
【
図2】一実装形態による、
図1に示されるコントローラの概略ブロック図である。
【
図3】一実装形態による、
図1及び
図2に示されるホストデバイスの2つのコアの概略ブロック図である。
【
図4】一実装形態による、
図1及び
図2に示される記憶システムに関するドアベル動作フローの概略ブロック図である。
【
図5】一実装形態による、メモリデバイスの書き込みフラグメンテーションレベルを決定する方法の概略ブロック図である。
【
図6】一実装形態による、ホストデバイスを使用する方法の概略ブロック図である。
【
図7】一実装形態による、データ記憶デバイスを使用する方法の概略ブロック図である。
【
図8】一実装形態による、記憶システムに関するドアベル動作フローの概略ブロック図である。
【
図9】一実装形態による、ホストデバイスを使用する方法の概略ブロック図である。
【0012】
理解を容易にするために、図面に共通する同一の要素を示すために、可能な限り、同一の参照番号を使用している。一実施形態で開示される要素は、特に断ることなく、他の実施形態に有益に利用され得ることが企図される。
【発明を実施するための形態】
【0013】
以下では、本開示の実施形態を参照する。しかしながら、本開示は、具体的に説明される実施形態に限定されないことを理解されたい。その代わりに、以下の特徴及び要素の任意の組み合わせが、異なる実施形態に関連するか否かに関わらず、本開示を実施及び実践すると企図される。更に、本開示の実施形態は、他の可能な解決策に勝る、及び/又は先行技術に勝る利点を達成し得るが、特定の利点が所与の実施形態によって達成されるか否かは、本開示を限定するものではない。したがって、以下の態様、特徴、実施形態、及び利点は、単なる例示に過ぎず、請求項(複数可)に明示的に記載されている場合を除いて、添付の特許請求の範囲の要素又は限定と見なされない。同様に、「本開示」への言及は、本明細書に開示される任意の発明の主題の一般化として解釈されるものではなく、請求項に明示的に記載されている場合を除いて、添付の特許請求の範囲の要素又は限定であると見なされるべきではない。
【0014】
本開示の態様は、概して、ホストデバイスからのドアベルトランザクションのコマンドを複数のグルーピングにグループ化するデータ記憶デバイス、システム、及び関連する方法に関する。データ記憶デバイスのコントローラは、ホストデバイスから複数のコマンドを含む複数のサブミッションドアベルトランザクションを受信するように構成されている。複数のサブミッションドアベルトランザクションの各サブミッションドアベルトランザクションは、第1のコマンド順序における1つ以上のコマンドのサブセットを識別する。
【0015】
コントローラは、複数のサブミッションドアベルトランザクションの複数のコマンドを、グルーピング順序を有する複数のグルーピングにグループ化するように構成されている。複数のグルーピングの各グルーピングは、複数のサブミッションドアベルトランザクションのうちの単一のドアベルトランザクションに対応する。コントローラは、1つ以上の完了ドアベルトランザクションをホストデバイスに送信するように構成されている。1つ以上の完了ドアベルトランザクションの各完了ドアベルトランザクションは、複数のグルーピングのうちの完了したグルーピングを識別する。一態様では、1つ以上の完了ドアベルトランザクションの各完了ドアベルトランザクションは、第1のコマンド順序と同じである第2のコマンド順序で完了したグルーピングを識別し、コントローラは、第1のコマンド順序及び第2のコマンド順序とは異なる第1の動作順序で複数のコマンドを実行するように構成されている。一態様では、コントローラは、第1のコマンド順序及び第2のコマンド順序と同じである第2の動作順序で複数のコマンドを実行するように構成されている。一態様では、コントローラは、第2の複数のサブミッションドアベルトランザクションを受信し、アボートコマンドがないか第2の複数のサブミッションドアベルトランザクションをスキャンし、第2の複数のサブミッションドアベルトランザクションをスキャンした後、複数のコマンドを実行するように構成されている。
【0016】
図1は、一実装形態による、データ記憶デバイス106がホストデバイス104の記憶デバイスとして機能し得る記憶システム100の概略ブロック図である。
【0017】
ホストデバイス104は、データ記憶デバイス106と通信する。一例として、ホストデバイス104は、データ記憶デバイス106に含まれる不揮発性メモリ(non-volatile memory、NVM)110を使用して、データを記憶及び取得し得る。ホストデバイス104は、ホストダイナミックランダムアクセスメモリ(dynamic random-access memory、DRAM)138を含む。他の実施形態と組み合わせることができる一実施形態では、記憶システム100は、記憶アレイとして動作し得る1つ以上の追加のデータ記憶デバイス106などの複数の記憶デバイスを含んでもよい。
【0018】
ホストデバイス104は、データ記憶デバイス106などの1つ以上の記憶デバイスに及び/又はからデータを記憶及び/又は取得し得る。
図1に示されるように、ホストデバイス104は、データ記憶デバイス106と通信することができる。データ記憶デバイス106のコントローラ108は、ホストデバイス104のホストメモリバッファ(host memory buffer、HMB)139と通信することができる。ホストデバイス104は、コンピュータサーバ、ネットワーク接続記憶(network-attached storage、NAS)ユニット、デスクトップコンピュータ、ノートブック(例えば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話機、いわゆる「スマート」パッド、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、又はデータ記憶デバイスからデータを送信若しくは受信することができる他のデバイスを含む、広範なデバイスのうちのいずれかを含み得る。
【0019】
データ記憶デバイス106は、コントローラ108、NVM110、電源111、揮発性メモリ112、及び書き込みバッファ116を含む。他の実施形態と組み合わせることができる一実施形態では、書き込みバッファ116は一時メモリである。コントローラ108は、書き込みバッファ116を介してNVM110及び/又は揮発性メモリ112のうちの1つ以上のメモリデバイスに結合される。データ記憶デバイス106は、明瞭化のために
図1に示されていない追加の構成要素を含み得る。例えば、データ記憶デバイス106は、データ記憶デバイス106の構成要素が機械的に取り付けられるプリント回路基板(printed circuit board、PCB)を含んでもよい。PCBは、データ記憶デバイス106などの構成要素を電気的に相互接続する導電性トレースを含む。他の実施形態と組み合わせることができる一実施形態では、データ記憶デバイス106の物理的寸法及びコネクタ構成は、1つ以上の標準的なフォームファクタに適合する。いくつかの例示的な標準的フォームファクタとしては、3.5”データ記憶デバイス(例えば、ハードディスクドライブ(hard disk drive、HDD)又はソリッドステートドライブ(solid-state drive、SSD))、2.5”データ記憶デバイス、1.8”データ記憶デバイス、周辺部品相互接続(peripheral component interconnect、PCI)、PCI拡張(PCI-extended、PCI-X)、PCIエクスプレス(PCI Express、PCIe)(例えば、PCIe×1、×4、×8、×16、PCIeミニカード、ミニPCIなど)が挙げられるが、これらに限定されない。他の実施形態と組み合わせることができる一実施形態では、データ記憶デバイス106は、ホストデバイス104のマザーボードに直接結合される(例えば、直接はんだ付けされるか、又はコネクタに差し込まれる)。
【0020】
NVM110は、1つ以上のメモリデバイス又はメモリユニットを含む。NVM110は、データを記憶及び/又は取得するように構成され得る。例えば、NVM110のメモリデバイスは、データと、データを記憶するようにメモリデバイスに命令するメッセージと、をコントローラ108から受信し得る。同様に、メモリユニットは、データを取得するようにメモリデバイスに命令するメッセージをコントローラ108から受信し得る。メモリデバイスの各々は、ダイと称され得る。他の実施形態と組み合わせることができる一実施形態では、NVM110は、複数のダイ(例えば、複数のメモリデバイス)を含む。各メモリユニットは、比較的大量のデータ(例えば、128MB、256MB、512MB、1GB、2GB、4GB、8GB、16GB、32GB、64GB、128GB、256GB、512GB、1TBなど)を記憶するように構成され得る。
【0021】
各メモリユニットは、フラッシュメモリデバイス、相変化メモリ(phase-change memory、PCM)デバイス、抵抗ランダムアクセスメモリ(resistive random-access memory、ReRAM)デバイス、磁気抵抗ランダムアクセスメモリ(magneto-resistive random-access memory、MRAM)デバイス、強誘電性ランダムアクセスメモリ(ferroelectric random-access memory、F-RAM)、ホログラフィックメモリデバイス、及び任意の他の種類の不揮発性メモリデバイスなどの、任意の種類の不揮発性メモリデバイスを含み得る。
【0022】
NVM110は、複数のフラッシュメモリデバイス又はメモリユニットを含み得る。NVM110のフラッシュメモリデバイスは、NAND又はNORベースのフラッシュメモリデバイスを含み得、各フラッシュメモリセルのトランジスタの浮遊ゲートに含まれる電荷に基づいてデータを記憶し得る。NVMフラッシュメモリデバイスでは、フラッシュメモリデバイスは、複数のダイに分割され得、複数のダイの各ダイは複数の物理ブロック又は論理ブロックを含み、複数の物理ブロック又は論理ブロックは更に複数のページに分割され得る。特定のメモリデバイス内の複数のブロックの各ブロックは、複数のNVMセルを含み得る。NVMセルの行は、複数のページの各ページを定義するためにワード線を使用して電気的に接続され得る。複数のページの各々におけるそれぞれのセルは、それぞれのビット線に電気的に接続され得る。更に、NVMフラッシュメモリデバイスは、2D又は3Dデバイスであってもよく、単一レベルセル(SLC)、マルチレベルセル(MLC)、トリプルレベルセル(TLC)、又はクアッドレベルセル(QLC)であってもよい。コントローラ108は、ページレベルで、NVM110のNVMフラッシュメモリデバイスにデータを書き込み、NVM110のNVMフラッシュメモリデバイスからデータを読み取り得、ブロックレベルで、NVM110のNVMフラッシュメモリデバイスからデータを消去し得る。
【0023】
NVM110の1つ以上のメモリデバイスの各々は、データを記憶する(例えば、書き込む)ことができる複数のブロックを含む。コントローラ108は、ホストデバイス104からコントローラ108によって受信されたメッセージに応答して、NVM110の複数のブロックにデータを書き込み、及び/又はNVM110の複数のブロックからデータを読み出すように構成されている。
【0024】
電源111は、データ記憶デバイス106の1つ以上の構成要素に電力を提供する。標準モードで動作するとき、電源111は、ホストデバイス104などの外部デバイスによって提供される電力を使用して、1つ以上の構成要素に電力を提供し得る。電源111は、(
図2に示される)HIM114を使用してホストデバイス104から受け取った電力を使用して、1つ以上の構成要素に電力を提供し得る。他の実施形態と組み合わせることができる一実施形態では、電源111は、電力を外部デバイスから受け取ることを停止する場合などのシャットダウンモードで動作するときに、1つ以上の構成要素に電力を提供するように構成された1つ以上の蓄電構成要素(power storage component)を含む。このように、電源111は、積載電源として機能し得る。1つ以上の蓄電構成要素のいくつかの例としては、コンデンサ、超コンデンサ、バッテリなどが挙げられるが、これらに限定されない。1つ以上の蓄電構成要素によって蓄えられ得る電力の量は、1つ以上の蓄電構成要素のコスト及び/又はサイズ(例えば、面積/体積)の関数であり得る。換言すれば、1つ以上の蓄電構成要素によって貯蔵される電力の量が増加するにつれて、1つ以上の蓄電構成要素のコスト及び/又はサイズも増加し得る。
【0025】
揮発性メモリ112は、情報を記憶するためにコントローラ108によって使用され得る。揮発性メモリ112は、1つ以上のメモリデバイスを含み得る。他の実施形態と組み合わせることができる一実施形態では、コントローラ108は、揮発性メモリ112をキャッシュとして使用する。コントローラ108は、キャッシュされた情報がNVM110に書き込まれるまで、揮発性メモリ112にキャッシュされた情報を記憶してもよい。
図1に示されるように、揮発性メモリ112は、電源111から受け取った電力を消費し得る。揮発性メモリ112の例としては、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックRAM(SRAM)、及び同期ダイナミックRAM(SDRAM(例えば、DDR1、DDR2、DDR3、DDR3L、LPDDR3、DDR4、LPDDR4など))が挙げられるが、これらに限定されない。
【0026】
コントローラ108は、データ記憶デバイス106の1つ以上の動作を管理し得る。例えば、コントローラ108は、NVM110からのデータの読み出し及び/又はNVM110へのデータの書き込みを管理し得る。他の実施形態と組み合わせることができる一実施形態では、データ記憶デバイス106がホストデバイス104から書き込みコマンドを受信すると、コントローラ108は、データ記憶コマンドを開始して、データをNVM110に記憶し、データ記憶コマンドの進捗を監視する。コントローラ108は、記憶システム100の少なくとも1つの動作特性を判定し、少なくとも1つの動作特性をNVM110に記憶し得る。
【0027】
図2は、一実装形態による、
図1に示されるコントローラ108の概略ブロック図である。データ記憶デバイス106は、ホストデバイス104と通信するホストインターフェースモジュール(host interface module、HIM)114を使用してホストデバイス104と通信する。HIM114は、ホストデバイス104のHMB139と通信することができる。
【0028】
HIM114は、ホストデバイス104とデータを交換するためのデータバス、及びホストデバイス104とコマンドを交換するための制御バスのうちの一方又は両方を含み得る。HIM114は、任意の好適なプロトコルに従って動作し得る。例えば、HIM114は、以下のプロトコルのうちの1つ以上:先進技術アタッチメント(advanced technology attachment、ATA)(例えば、シリアルATA(serial-ATA、SATA)及びパラレルATA(parallel-ATA、PATA))、ファイバチャネルプロトコル(Fibre Channel Protocol、FCP)、スモールコンピュータシステムインターフェース(small computer system interface、SCSI)、シリアル接続SCSI(serially attached SCSI、SAS)、PCI、及びPCIe、不揮発性メモリエクスプレス(non-volatile memory express、NVMe)、OpenCAPI、GenZ、キャッシュ・コヒーレント・インターフェース・アクセラレータ(Cache Coherent Interface Accelerator、CCIX)、オープンチャネルSSD(Open Channel SSD、OCSSD)などに従って動作し得る。HIM114(例えば、データバス、制御バス、又はその両方)は、コントローラ108に電気的に接続され、この電気的接続は、ホストデバイス104とコントローラ108との間に電気的接続を提供し、ホストデバイス104とコントローラ108との間のデータの交換を可能にすることを容易にする。HIM114の電気的接続はまた、データ記憶デバイス106がホストデバイス104からの電力の受け取りを可能にすることを容易にし得る。電源111(
図1に示す)は、HIM114を使用してホストデバイス104から電力を受け取ることができる。
【0029】
HIM114は、サブミッションデータベース141と、サブミッションデータベース141と通信する完了順序付け論理142とを含む。HIM114は、ホストデバイス104から複数のサブミッションドアベルトランザクションを受信し、1つ以上の完了ドアベルトランザクションをホストデバイス104に送信するように構成されている。コントローラ108は、プロセッサ121と、暗号化/復号化モジュール125と、冗長情報を有する独立ディスクの冗長アレイ(Redundant Array of Independent Disks、RAID)127とを含む。コントローラ108は、NVM110と通信するフラッシュインターフェースモジュール(flash interface module、FIM)131と、FIM131を介して複数のコマンドを実行するためにFIM131と通信するコマンドスケジューラ123とを含む。FIM131は、コントローラ108の論理である。複数のコマンドは、NVM110から読み出す及び/又はNVM110に書き込む、読み出し動作及び/又は書き込み動作を含む。複数のコマンドは、実行されると、データ記憶デバイス106の状態及び/又はデータ記憶デバイス106の構成を示すことができる。
【0030】
コントローラ108は、エンコーダ/デコーダ118を含む。他の例と組み合わせることができる一例では、エンコーダ/デコーダ118は、低密度パリティ符号(low density parity code、LDPC)エンコーダ/デコーダである。他の例と組み合わせることができる一例では、エンコーダ/デコーダ118は、排他的論理和(Exclusive-Or、XOR)エンコーダ/デコーダである。エンコーダ/デコーダ118は、複数の誤り訂正符号(error correction code、ECC)を含むいくつかの行列を保持するための内部メモリを含み得る。エンコーダ/デコーダ118の内部メモリの1つ以上の行列は、行列間で切り替える時間に起因する任意のファームウェア(firmware、FW)介入又は性能損失を回避するために、行列間の高速切り替えを可能にし得る。他の実施形態と組み合わせることができる一実施形態では、データ記憶デバイス106のコントローラ108がホストデバイス104から書き込みコマンドを受信すると、コントローラ108は、書き込まれるべきデータをNVM110に送信する前に、書き込みコマンドに関連付けられたデータをエンコーダ/デコーダ118の内部メモリ、揮発性メモリ112、又は書き込みバッファ116に一時的に記憶する。
【0031】
他の実施形態と組み合わせることができる一実施形態では、コントローラ108は、不揮発性メモリエクスプレス(NVMe)プロトコルに従って構成されている。
【0032】
図3は、一実装形態による、
図1及び
図2に示されるホストデバイス104の2つのコア301、303の概略ブロック図である。コア301、303は、DRAM138の一部とすることができる。
【0033】
第1のコア301は、サブミッションキュー310及び完了キュー330を含み、1:1マッピングを示している。サブミッションキュー310及び完了キュー330の各々は、1つ以上のコマンド321~324を含むことができる。それぞれのコマンドは、それぞれのコマンドがコントローラ108に送信されると、サブミッションキュー310のブロックに書き込まれる。それぞれのコマンドが、それぞれのコマンドが完了したことを示す、コントローラ108からホストデバイス104に送信された完了ドアベルの一部である場合、それぞれのコマンドは、完了キュー330のブロックに書き込まれる。サブミッションキュー310及び完了キュー330の各々は、コマンド321~324の同じキューに対応する。
【0034】
第2のコア303は、第1のサブミッションキュー340、第2のサブミッションキュー350、及び完了キュー360を含み、2:1マッピングを示している。第1のサブミッションキュー340及び完了キュー360の各々は、コマンド341~344の第1のキューに対応する。第2のサブミッションキュー350は、コマンド351~354の第2のキューに対応する。
【0035】
図4は、一実装形態による、
図1及び
図2に示される記憶システム100に関するドアベル動作フローの概略ブロック図である。コントローラ108は、複数のコマンド411、412、421~423、431~435、441、及び442を有する複数のサブミッションドアベルトランザクション410、420、430、及び440をホストデバイス104から受信する。コマンド411、412、421~423、431~435、441、及び442は、コマンド411が最初であり、コマンド442が最後であるような第1の全体順序でコントローラに送信される。複数のサブミッションドアベルトランザクション410、420、430、及び440は、コマンドのキューのサブミッションキューに対応する。
【0036】
複数のサブミッションドアベルトランザクション410、420、430、及び440の各サブミッションドアベルトランザクションは、第1のコマンド順序で1つ以上のコマンドのサブセットを識別する。一例として、第3のサブミッションドアベルトランザクション430は、5つのコマンド431~435の第3のサブセットを識別する。5つのコマンドは、第3のサブミッションドアベルトランザクション430内でコマンド431が最初であり、コマンド435が最後であるような第1のコマンド順序になっている。サブミッションドアベルトランザクション410、420、430、及び440は、コントローラ108に送信され、コントローラ108は、サブミッションドアベルトランザクション410が最初であり、サブミッションドアベルトランザクション440が最後であるようなグルーピング順序で、サブミッションドアベルトランザクション410、420、430、及び440を受信する。コントローラ108は、グルーピング順序に従って複数のコマンド411、412、421~423、431~435、441、及び442を複数のグルーピングにグループ化する。複数のグルーピングの各グルーピングは、複数のサブミッションドアベルトランザクション410、420、430、及び440のうちの単一のドアベルトランザクションに対応する。
【0037】
コントローラ108は、1つ以上の完了ドアベルトランザクション460、470、480、及び490(4つが図示されている)をホストデバイス104に送信する。完了ドアベルトランザクション460、470、480、及び490は、コマンドのキューの完了キューに対応する。各完了ドアベルトランザクション460、470、480、及び490は、複数のグルーピングのうちの完了したグルーピングを、グルーピングの第1のコマンド順序と同じである第2のコマンド順序で識別する。完了したグルーピングは、完了したグルーピングに対応する1つ以上のコマンドのサブセットが完了したことを示す。ホストデバイス104に送信されたコマンド411、412、421~423、431~435、441、及び442は、コントローラ108に送信されたときにコマンド411、412、421~423、431~435、441、及び442があったのと同じグルーピングに維持される。
図4に示す実装形態では、完了したグルーピングは、グルーピング順序とは異なる第1の完了グルーピング順序で送信される。一例として、
図4に示される第1の完了グルーピング順序によれば、第1の完了ドアベルトランザクション460(第2のサブミッションドアベルトランザクション420と同じグルーピングに対応する)が最初であり、第4の完了ドアベルトランザクション490(第3のサブミッションドアベルトランザクション430と同じグルーピングに対応する)が最後である。他の実施形態と組み合わせることができる一実施形態では、完了順序付け論理142は、複数のグルーピングのうちの全てが完了したと判定されたときのグルーピング順序と同じである第2の完了グルーピング順序(
図4に図示せず)で1つ以上の完了ドアベルトランザクション460~490の送信をスケジュールするように構成されている。
【0038】
一例として、第4の完了ドアベルトランザクション490は、コマンド431~435の第3のサブセットが完了したことを示す。ホストデバイス104に送信されるコマンド431~435の第3のサブセットは、コマンド431~435の第3のサブセットがコントローラ108に送信されたときの第1のコマンド順序と同じである第2のコマンド内にある。コマンド411、412、421~423、431~435、441、及び442は、第1の全体順序とは異なる第2の全体順序でホストデバイス104に送信される。
【0039】
サブミッションデータベース141は、複数のサブミッションドアベルトランザクション410、420、430、及び440、並びにコマンド411、412、421~423、431~435、441、及び442を内部に記憶するように構成されている。サブミッションデータベース141は、複数のグルーピングを記憶するように構成されている。完了順序付け論理142は、サブミッションデータベース141内の複数のグルーピングを監視し、複数のグルーピングのうちの少なくとも1つが完了したとの判定に際して1つ以上の完了ドアベルトランザクション460~490のホストデバイス104への送信をスケジュールするように構成されている。
【0040】
コントローラ108は、複数のコマンド411、412、421~423、431~435、441、及び442を、第1の全体順序とは異なる第1の動作順序で、アウトオブオーダ方式で実行するように構成されている。他の実施形態と組み合わせることができる一実施形態では、コントローラ108は、複数のコマンドを、第1の全体順序と同じである第2の動作順序で、インオーダ方式で行うように構成されている。そのような実施形態では、完了順序付け論理142は、複数のグルーピングのうちの全てが完了したとの判定に際して完了ドアベルトランザクション460~490のホストデバイス104への送信をスケジュールするように構成されている。HIM114は、複数のコマンド411、412、421~423、431~435、441、及び442の各々について、各コマンドが受信された単一のドアベルトランザクション410、420、430、又は440を識別し、それぞれのコマンドを単一のドアベルトランザクション410、420、430、又は440に対応するそれぞれのグルーピングにグループ化するように構成されたコマンドグルーピング論理を含む。
【0041】
コントローラ108は、第2の複数のサブミッションドアベルトランザクション(
図4には図示せず)を受信し、アボートコマンドがないか第2の複数のサブミッションドアベルトランザクションをスキャンするように構成されている。コントローラ108は、第2の複数のサブミッションドアベルトランザクションをスキャンした後に、以前に受信した複数のコマンド411、412、421~423、431~435、441、及び442を実行するように構成されている。アボートコマンドは、複数のコマンド411、412、421~423、431~435、441、及び442のうちの1つのコマンドに対応し、アボートコマンドは、そのコマンドを中断する命令を含む。アボートコマンドは、コマンドを識別する一意の識別子を含む。コントローラ108は、アボートコマンドを検出した場合、1つ以上の完了ドアベルトランザクション460~490からコマンドを除去するように構成されている。コマンドは、コマンドがコントローラ108によって行われないように、かつコマンドが完了ドアベルトランザクション460、470、480、及び490の一部ではないように、複数のグルーピングから除去される。コマンドの除去後、コマンドが以前に属していたグルーピングは、全ての他のコマンド(中断されたコマンド以外)の完了時に完全に完了する。
【0042】
コントローラ108は、サブミッションデータベース141にコマンドを記憶するように構成され、コマンドスケジューラ123は、アボートコマンドがサブミッションデータベース141に記憶されている場合、コマンドをスケジュールしない。完了順序付け論理142は、サブミッションデータベース141内の複数のグルーピングを監視し、アボートコマンドがサブミッションデータベース141内に記憶されている場合、1つ以上の完了ドアベルトランザクション460~490からコマンドを除去するように構成されている。
【0043】
コントローラ108は、受信された複数のサブミッションドアベルトランザクションごとに、最初に受信された複数のサブミッションドアベルトランザクションのコマンドを実行する前に、アボートコマンドがないか後続の複数のサブミッションドアベルトランザクションをスキャンするのを待つように構成されている。
【0044】
図5は、一実装形態による、メモリデバイスの書き込みフラグメンテーションレベルを決定する方法500の概略ブロック図である。明確にするために、方法500の動作502~518は、記憶システム100に関連して本明細書で説明される。本開示は、方法500の動作502~518が他の記憶システムに関連して実行され得ることを企図する。他の実施形態と組み合わせることができる一実施形態では、コントローラ108は、方法500の動作502~518を実行するように構成されている。他の実施形態と組み合わせることができる一実施形態では、コントローラ108は、データ記憶デバイス106の他の構成要素(NVM110、コマンドスケジューラ123、FIM131、HIM114のサブミッションデータベース141、HIM114の完了順序付け論理142、及び/又はHIM114の他の部分(複数可)など)に動作502~518を実行するように命令する動作502~518を実行するように構成されている。
【0045】
動作502は、ホストデバイスから第1の全体順序で複数のコマンドを有する複数のサブミッションドアベルトランザクションを受信することを含む。複数のサブミッションドアベルトランザクションの各サブミッションドアベルトランザクションは、第1のコマンド順序における1つ以上のコマンドのサブセットを識別する。
【0046】
動作504は、複数のサブミッションドアベルトランザクションの複数のコマンドを、グルーピング順序を有する複数のグルーピングにグループ化することを含む。複数のグルーピングの各グルーピングは、複数のサブミッションドアベルトランザクションのうちの単一のドアベルトランザクションに対応する。グループ化することは、各コマンドが受信された単一のドアベルトランザクションを識別することを含む。
【0047】
動作505は、複数のコマンド及び複数のグルーピングを記憶することを含む。複数のコマンド及び複数のグルーピングは、サブミッションデータベース141に記憶される。
【0048】
任意選択の動作506は、第2の複数のサブミッションドアベルトランザクションを受信することを含む。
【0049】
任意選択の動作508は、アボートコマンドがないか第2の複数のサブミッションドアベルトランザクションをスキャンすることを含む。第2の複数のサブミッションドアベルトランザクションは、サブミッションデータベース141に記憶され得、完了順序付け論理142は、サブミッションデータベース141内の複数のグルーピングを監視し、アボートコマンドがサブミッションデータベース141に記憶されている場合、1つ以上の完了ドアベルトランザクションからコマンドを除去する。
【0050】
任意選択の動作509は、アボートコマンドが検出された場合に、アボートコマンドに対応するコマンドを除去することを含む。アボートコマンドは、検出された場合、サブミッションデータベース141に記憶され得る。コマンドは、複数のグルーピング及び1つ以上の完了ドアベルトランザクションから除去される。
【0051】
動作510は、複数のコマンドを実行することを含む。コントローラ108は、ホストデバイス104から複数のコマンドをフェッチして、複数のコマンドを実行することができる。他の実施形態と組み合わせることができる一実施形態では、複数のコマンドは、第2の複数のサブミッションドアベルトランザクションのスキャンの後に実行される。他の実施形態と組み合わせることができる一実施形態では、複数のコマンドは、第1の全体順序とは異なる第1の動作順序で実行される。他の実施形態と組み合わせることができる一実施形態では、複数のコマンドは、第1の全体順序と同じである第2の動作順序で実行される。
【0052】
動作514は、記憶されている複数のグルーピング及び複数のコマンドを監視することを含む。複数のグルーピングは、グルーピングの全てのコマンドが完了したかどうかを判定するために完了について監視される。完了したコマンドは検出され、(複数のグルーピングのうちのグルーピングのコマンドの全てが完了するまで保持される。
【0053】
動作516は、複数のグルーピングのうちの少なくとも1つが完了したとの判定に際して1つ以上の完了ドアベルトランザクションのホストデバイス104への送信をスケジュールすることを含む。グルーピング内のコマンドの全てが完了したとの判定に際して、グルーピングは、次の単一割込み通知においてホストデバイス104に送信されるようにスケジュールされる。他の実施形態と組み合わせることができる一実施形態では、方法500は、複数のグルーピングのうちの全てが完了したという判定を待ち、判定に際してグルーピング順序と同じである第2の完了グルーピング順序で1つ以上の完了ドアベルトランザクションの送信をスケジュールする。
【0054】
動作518は、1つ以上の完了ドアベルトランザクションをホストデバイス104に送信することを含む。1つ以上の完了ドアベルトランザクションは、単一の割込み通知の一部としてホストデバイス104に送信される。1つ以上の完了ドアベルトランザクションの各完了ドアベルトランザクションは、複数のグルーピングのうちの完了したグルーピングを識別する。完了したグルーピングは、完了したグルーピングに対応する1つ以上のコマンドのサブセットが完了したことを示す。完了したグルーピングごとに、完了したグルーピングに対応する1つ以上のコマンドのサブセットが、同じ割込み通知においてホストデバイス104に送信される。1つ以上の完了ドアベルトランザクションの各完了ドアベルトランザクションは、第1のコマンド順序と同じである第2のコマンド順序で完了したグルーピングを識別する。他の実施形態と組み合わせることができる一実施形態では、1つ以上の完了ドアベルトランザクションは、グルーピング順序とは異なる第1の完了グルーピング順序で送信される。他の実施形態と組み合わせることができる一実施形態では、1つ以上の完了ドアベルトランザクションは、グルーピング順序と同じである第2の完了グルーピング順序で送信される。
【0055】
図6は、一実装形態による、ホストデバイス104を使用する方法600の概略ブロック図である。方法600は、
図5に示す方法500に関連して使用することができる。
【0056】
動作602は、ホストデバイス104が、単一の割り込み通知の一部としてコントローラ108から1つ以上の完了ドアベルトランザクション460~490を受信することを含む。
【0057】
動作604は、ホストデバイス104が単一の割込み通知から複数の完了したコマンドをプルすることを含む。
【0058】
動作606は、ホストデバイス104が、複数の完了したコマンドを使用して、完了したコマンドを1つ以上のコアの完了キュー(
図3に示す完了キュー330、360など)に書き込むことによって、1つ以上のコア(
図3に示すコア301、303など)を更新することを含む。完了キューを更新することは、コントローラ108に送信される後続の複数のサブミッションドアベルトランザクションを更新することができる。一例として、後続の複数のサブミッションドアベルトランザクションを更新して、完了したコマンドを除去することができる。そのような例では、完了したコマンドが完了キューに書き込まれたときに、対応するサブミッションキュー(サブミッションキュー310、340、及び/又は350など)のコマンドを除去及び/又は上書きすることができる。
【0059】
方法600は、動作608で完了する。本開示は、方法600を繰り返すことができることを企図する。
【0060】
ホストデバイス104のための
図6に示される方法600は、以下に説明される方法900と比較して比較的単純であり、単純かつ効率的な様式でアウトオブオーダ動作を促進する。
【0061】
図7は、一実装形態による、データ記憶デバイス106を使用する方法700の概略ブロック図である。方法700は、
図5に示す方法500に関連して使用することができる。
【0062】
動作702は、完了コマンドとしてコマンドを完了するためにコマンドを実行することを含む。
【0063】
動作704は、コントローラ108において完了したコマンドを保持することを含む。
【0064】
動作706は、複数のグルーピングのうちの少なくとも1つ(複数のドアベルトランザクション410、420、430、440のうちの1つなど)が、コマンドのうちの全てが完了したグルーピングであるかどうかを判定することを含む。
【0065】
動作706に対する回答が、複数のグルーピングのうちの少なくとも1つが完了しているような、はいである場合、方法700は、動作708及び動作710に進む。動作708は、完了ドアベルトランザクションとして次の単一の割り込み通知において少なくとも1つの完了したグルーピングのホストデバイス104への送信をスケジュールすることを含む。動作710は、コントローラ108が単一の割り込み通知をホストデバイス104に送信することを含む。次いで、方法700はブロック712で完了する。
【0066】
動作706に対する回答(the answer is operation 706)が、複数のグルーピングのうちの1つが完了していないような、いいえである場合、方法700はブロック712で完了し、方法700は完了したコマンドを保持し続ける。
【0067】
本開示は、方法700を繰り返すことができることを企図する。
【0068】
図8は、一実装形態による、記憶システムに関するドアベル動作フローの概略ブロック図である。
図8のドアベル動作フローは、
図4のドアベル動作フローと同様であり、
図4のドアベル動作フローの態様、特徴、構成要素、及び/又は特性のうちの1つ以上を含む。
【0069】
複数のコマンド411、412、421~423、431~435、441、及び442は、完了ドアベルトランザクションの一部として、第1の全体順序とは異なる第2の全体順序でホストデバイス104に送信される。複数のコマンド411、412、421~423、431~435、441、及び442は、完了ドアベルトランザクションの一部として、第1のコマンド順序とは異なる第2のコマンド順序、及びグルーピング順序とは異なる第1の完了グルーピング順序でホストデバイス104に送信される。
【0070】
図9は、一実装形態による、ホストデバイスを使用する方法900の概略ブロック図である。方法900は、
図8に示すドアベル動作フローに関連して使用することができる。
【0071】
動作902は、ホストデバイスがデータ記憶デバイスから割り込み通知を受信することを含む。
【0072】
動作904は、完了したコマンドの数について割込み通知をスキャンすることを含む。
【0073】
動作906は、ホストデバイスの内部データベースの1つ以上の完了キューを更新することを含む。
【0074】
動作908は、グルーピング内のコマンドの全てについて完了したコマンドが受信されたかどうかを判定することを含む。
【0075】
動作908に対する回答が、グルーピングが完了しているような、はいである場合、方法900は、動作910及び動作912に進む。
【0076】
動作910は、完了したコマンドについて割込み通知をスキャンすることと、完了したコマンドをホストデバイスの1つ以上の完了キューに書き込むこととを含む。動作912は、ホストデバイスが1つ以上のイベントを呼び出しアプリケーションに対して発生させることを含む。1つ以上のイベントは、完了したコマンドに対応する。次いで、方法900はブロック914で完了する。
【0077】
動作908に対する回答が、グルーピングが完了していないような、いいえである場合、方法900はブロック900で完了する。
【0078】
本開示は、方法900を繰り返すことができることを企図する。
図6の方法600によって示されるように、ホストデバイスの動作は、本明細書で説明される態様を使用して、(
図9に示される方法900と比較して)簡略化及び合理化される一方で、データ記憶デバイスにおけるコマンドのアウトオブオーダ動作を促進する。
【0079】
本開示の利点は、単純さ及び実用性、効率、デバイス性能、廃棄物の低減、並びにリソースの消費の低減を含む。一例として、コントローラ108は、複数のサブミッションドアベルトランザクションの複数のコマンドを複数のグルーピングにグループ化することにより、コントローラ108のためのアウトオブオーダ動作を促進する。アウトオブオーダ動作は、動作のためのコマンドに優先順位を付け、パイプライン利用を向上させることによってデバイス性能を促進し、ホストデバイス104がコマンドを送信してから、コマンドが完了したという通知を受信するまでの時間を短縮することによって、効率及び待ち時間の短縮(例えば、サービス品質の向上)を促進する。別の例として、第1のコマンド順序と同じである第2のコマンド順序で完了したグルーピングを識別するコントローラ108は、ホストデバイス104のためのリソースの複雑さ及び消費の低減を促進しながら、コントローラ108のためのアウトオブオーダ動作を促進する。本明細書で説明する態様を使用すると、データ記憶デバイス106のためのアウトオブオーダ動作を維持しながら、ホストデバイス104のための複雑さが著しく低減されると考えられる。
【0080】
加えて、一例として、複数のドアベルトランザクションのコマンドを実行する前に、アボートコマンドがないか第2の複数のサブミッションドアベルトランザクションをスキャンすることは、電力及びリソースの効率及び浪費低減を促進する。本明細書で説明する態様を使用して、コントローラ108は、中断されたコマンドがコントローラ108によって実行される前に、そのようなコマンドをキャンセルすることができる。
【0081】
このような利点は、完了したコマンドの完了キューへのアウトオブオーダポスティングが動作上の制約によって制限され得るゲームなどの特定のアプリケーションに対して増幅され得る。
【0082】
本明細書に開示される1つ以上の態様が組み合わされ得ることが企図される。更に、本明細書で開示される1つ以上の態様は、前述の利益の一部又は全部を含み得ることが企図される。一例として、記憶システム100、コア301、303、サブミッションドアベルトランザクション410、420、430、及び/若しくは440、完了ドアベルトランザクション460~490、並びに/又は方法500の動作、態様、構成要素、特徴、及び/若しくは特性が組み合わされてもよい。他の実施形態と組み合わせることができる一実施形態では、
図4に関連して説明される1つ以上の動作は、
図5に示される方法500に関連して説明される1つ以上の動作と組み合わされる。
【0083】
一実施形態では、データ記憶デバイスは、1つ以上のメモリデバイスと、1つ以上のメモリデバイスに結合されたコントローラと、を含む。コントローラは、ホストデバイスから第1の全体順序で複数のコマンドを有する複数のサブミッションドアベルトランザクションを受信するように構成されている。複数のサブミッションドアベルトランザクションの各サブミッションドアベルトランザクションは、第1のコマンド順序における1つ以上のコマンドのサブセットを識別する。コントローラは、複数のサブミッションドアベルトランザクションの複数のコマンドを、グルーピング順序を有する複数のグルーピングにグループ化するように構成されている。複数のグルーピングの各グルーピングは、複数のサブミッションドアベルトランザクションのうちの単一のドアベルトランザクションに対応する。コントローラは、1つ以上の完了ドアベルトランザクションをホストデバイスに送信するように構成されている。1つ以上の完了ドアベルトランザクションの各完了ドアベルトランザクションは、複数のグルーピングのうちの完了したグルーピングを識別する。完了したグルーピングは、完了したグルーピングに対応する1つ以上のコマンドのサブセットが完了したことを示す。1つ以上の完了ドアベルトランザクションの各完了ドアベルトランザクションは、第1のコマンド順序と同じである第2のコマンド順序で完了したグルーピングを識別する。コントローラはまた、第1の全体順序とは異なる第1の動作順序で複数のコマンドを実行するように構成されている。コントローラは、ホストインターフェースモジュール(HIM)を含む。HIMは、複数のコマンドを記憶するように構成されたサブミッションデータベースと、サブミッションデータベースと通信する完了順序付け論理とを含む。コントローラはまた、複数のグルーピングをサブミッションデータベースに記憶するように構成されている。完了順序付け論理は、サブミッションデータベース内の複数のグルーピングを監視し、複数のグルーピングのうちの少なくとも1つが完了したとの判定に際して1つ以上の完了ドアベルトランザクションのホストデバイスへの送信をスケジュールするように構成されている。コントローラはまた、第1の全体順序と同じである第2の動作順序で複数のコマンドを実行するように構成されている。完了順序付け論理は、複数のグルーピングのうちの全てが完了したとの判定に際して1つ以上の完了ドアベルトランザクションのホストデバイスへの送信をスケジュールするように構成されている。完了順序付け論理は、複数のグルーピングのうちの全てが完了したとの判定に際して完了グルーピング順序で1つ以上の完了ドアベルトランザクションの送信をスケジュールするように構成されている。完了グルーピング順序は、グルーピング順序と同じである。HIMは、複数のコマンドの各々について、各コマンドが受信された単一のドアベルトランザクションを識別するように構成されたコマンドグルーピング論理を含む。コントローラは、プロセッサと、1つ以上のメモリデバイスと通信するフラッシュインターフェースモジュール(FIM)と、FIMを介して複数のコマンドを実行するためにFIMと通信するコマンドスケジューラとを含む。複数のコマンドは、読み出し動作又は書き込み動作のうちの1つ以上を含む。
【0084】
一実施形態では、データ記憶デバイスは、1つ以上のメモリデバイスと、1つ以上のメモリデバイスに結合されたコントローラと、を含む。コントローラは、ホストデバイスから第1の全体順序で複数のコマンドを有する複数のサブミッションドアベルトランザクションを受信するように構成されている。複数のサブミッションドアベルトランザクションの各サブミッションドアベルトランザクションは、第1のコマンド順序における1つ以上のコマンドのサブセットを識別する。コントローラは、複数のサブミッションドアベルトランザクションの複数のコマンドを、グルーピング順序を有する複数のグルーピングにグループ化するように構成されている。複数のグルーピングの各グルーピングは、複数のサブミッションドアベルトランザクションのうちの単一のドアベルトランザクションに対応する。コントローラは、第2の複数のサブミッションドアベルトランザクションを受信し、アボートコマンドがないか第2の複数のサブミッションドアベルトランザクションをスキャンするように構成されている。コントローラは、第2の複数のサブミッションドアベルトランザクションをスキャンした後に、複数のコマンドを実行するように構成されている。コントローラは、1つ以上の完了ドアベルトランザクションをホストデバイスに送信するように構成されている。1つ以上の完了ドアベルトランザクションの各完了ドアベルトランザクションは、複数のグルーピングのうちの完了したグルーピングを識別する。完了したグルーピングは、完了したグルーピングに対応する1つ以上のコマンドのサブセットが完了したことを示す。アボートコマンドは、複数のサブミッションドアベルトランザクションの複数のコマンドのうちの1つのコマンドに対応する。アボートコマンドは、コマンドを中断する命令を含む。アボートコマンドは、コマンドを識別する一意の識別子を含む。コントローラはまた、アボートコマンドを検出した場合、1つ以上の完了ドアベルトランザクションからコマンドを除去するように構成されている。複数のコマンドは、第1の全体順序とは異なる第1の動作順序で実行される。第2の複数のサブミッションドアベルトランザクションは、第2の複数のコマンドを含み、コントローラは、ホストインターフェースモジュール(HIM)を含む。HIMは、複数のコマンド及び第2の複数のコマンドを記憶するように構成されたサブミッションデータベースと、サブミッションデータベースと通信する完了順序付け論理とを含む。コントローラは、HIMと通信するコマンドスケジューラを含む。アボートコマンドがサブミッションデータベースに記憶されている場合、コマンドスケジューラはコマンドをスケジュールしない。完了順序付け論理は、サブミッションデータベース内の複数のグルーピングを監視し、アボートコマンドがサブミッションデータベース内に記憶されている場合、1つ以上の完了ドアベルトランザクションからコマンドを除去するように構成されている。
【0085】
一実施形態では、データ記憶デバイスは、1つ以上のメモリ記憶手段と、1つ以上のメモリ記憶手段に結合されたコントローラとを含む。コントローラは、ホストデバイスから複数のコマンドを有する複数のサブミッションドアベルトランザクションを受信するように構成されている。複数のサブミッションドアベルトランザクションの各サブミッションドアベルトランザクションは、第1のコマンド順序における1つ以上のコマンドのサブセットを識別する。コントローラは、複数のサブミッションドアベルトランザクションの複数のコマンドを、グルーピング順序を有する複数のグルーピングにグループ化するように構成されている。複数のグルーピングの各グルーピングは、複数のサブミッションドアベルトランザクションのうちの単一のドアベルトランザクションに対応する。コントローラは、1つ以上の完了ドアベルトランザクションをホストデバイスに送信するように構成されている。1つ以上の完了ドアベルトランザクションの各完了ドアベルトランザクションは、複数のグルーピングのうちの完了したグルーピングを識別する。完了したグルーピングは、完了したグルーピングに対応する1つ以上のコマンドのサブセットが完了したことを示す。
【0086】
上記は本開示の実施形態を目的とするが、本開示の他の及び更なる実施形態が、その基本的範囲から逸脱することなく考案され得、その範囲は、以下の特許請求の範囲によって決定される。
【国際調査報告】