【手続補正書】
【提出日】令和3年4月26日(2021.4.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ソリッドステートドライブ（ＳＳＤ）であって、
データを格納するフラッシュメモリと、
ここで、前記フラッシュメモリは、ホストコンピュータからの第１書き込み要求に応答する第１ブロックに第１有効データを格納し、前記ホストコンピュータからの第２書き込み要求に応答する第２ブロックに第２有効データを格納し、前記第１ブロックは、前記第１書き込み要求に応答する第１ストリーム識別子（ＩＤ）に応答し、前記第２ブロックは、前記第２書き込み要求に応答する第２ストリーム識別子（ＩＤ）に応答し、
前記フラッシュメモリへのデータの書き込み及び前記フラッシュメモリからのデータの読み取りを管理するＳＳＤコントローラと、
前記第１有効データの属性に応答する第３ストリーム識別子（ＩＤ）を選択するための自動ストリーム検出ロジックと、
ここで、前記第３ストリーム識別子（ＩＤ）は、前記第１ストリーム識別子（ＩＤ）、前記第２ストリーム識別子（ＩＤ）、又は異なるストリーム識別子（ＩＤ）のいずれかであり得、前記自動ストリーム検出ロジックは、前記第１ストリーム識別子（ＩＤ）、前記第２ストリーム識別子（ＩＤ）、前記第３ストリーム識別子（ＩＤ）、又は前記異なるストリーム識別子（ＩＤ）の内のいずれかを選択でき、
ガベージコレクションに対し前記フラッシュメモリ内の前記第１ブロックを選択し、前記自動ストリーム検出ロジックによって決定された前記第３ストリーム識別子（ＩＤ）に応答して、前記第１ブロックの前記第１有効データを第３ブロックにプログラムするガーベッジコレクションロジックと、を有し、
前記自動ストリーム検出ロジックは、前記ガーベッジコレクションロジックがガーベッジコレクションのための（ｆｏｒ  ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｉｏｎ）前記第１ブロックを選択した後、前記第３ストリーム識別子（ＩＤ）を決定することを特徴とするソリッドステートドライブ（ＳＳＤ）。
【請求項２】
前記ＳＳＤコントローラは、ホストコンピュータ上のアプリケーションからの要求（ｒｅｑｕｅｓｔ）を管理する入出力（Ｉ／Ｏ）キューを含み、
前記ホストコンピュータ上のアプリケーションからの要求は、読み取り要求と書き込み要求の両方が含まれ
前記ガーベッジコレクションロジックは、前記第１有効データに対するプログラミング書き込み要求を前記入出力（Ｉ／Ｏ）キューに配置するための書き込み要求ロジックを含むことを特徴とする請求項１に記載のソリッドステートドライブ（ＳＳＤ）。
【請求項３】
前記ＳＳＤコントローラは、前記アプリケーションからの以前の書き込み要求を受信するレシーバ（ｒｅｃｅｉｖｅｒ）をさらに含み、
前記以前の書き込み要求は、前記第１有効データと、ガベージコレクションユニットが前記ガベージコレクションのために第１ブロック選択する前に前記第１有効データが前記第１ブロックに書き込まれる結果となる以前の書き込み要求と、を含むことを特徴とする請求項２に記載のソリッドステートドライブ（ＳＳＤ）。
【請求項４】
前記ソリッドステートドライブは、前記第１有効データを前記以前の書き込み要求に応答して前記第１ブロックに書き込み、前記自動ストリーム検出ロジックから前記第１ストリーム識別子（ＩＤ）を書き込み、
前記第１ストリーム識別子（ＩＤ）は、前記自動ストリーム検出ロジックが前記第１有効データに応答して選択される少なくとも２つのストリーム識別子（ＩＤ）の内の１つであることを特徴とする請求項３に記載のソリッドステートドライブ（ＳＳＤ）。
【請求項５】
前記ガーベッジコレクションロジックは、前記第１ブロックを消去するための消去ロジックをさらに含むことを特徴とする請求項２に記載のソリッドステートドライブ（ＳＳＤ）。
【請求項６】
前記消去ロジックは、前記プログラミング書き込み要求が前記ソリッドステートドライブによって処理された後、前記第１ブロックを消去するように動作することを特徴とする請求項５に記載のソリッドステートドライブ（ＳＳＤ）。
【請求項７】
前記消去ロジックは、前記書き込み要求ロジックがプログラミング書き込み要求を前記入出力（Ｉ／Ｏ）キューに配置した後、前記プログラミング書き込み要求が前記ソリッドステートドライブによって処理される前に、前記第１ブロックを消去するように動作することを特徴とする請求項５に記載のソリッドステートドライブ（ＳＳＤ）。
【請求項８】
前記ガーベッジコレクションロジックは、前記第１有効データをプログラムする前に、前記自動ストリーム検出ロジックから前記第３ストリーム識別子（ＩＤ）を要求し、
前記ガーベッジコレクションロジックは、前記第３ストリーム識別子（ＩＤ）に応答して第３ブロックを選択するためのブロック選択ロジックと、
前記第１有効データを前記第３ブロックに書き込むためのプログラミングロジックと、を含み、
前記第３ブロックは、前記ブロック選択ロジックによって選択される複数の第３ブロックの内の１つであることを特徴とする請求項１に記載のソリッドステートドライブ（ＳＳＤ）。
【請求項９】
前記第３ブロックは、ガベージコレクション中にプログラムされたデータのみを格納する特別なブロックであることを特徴とする請求項８に記載のソリッドステートドライブ（ＳＳＤ）。
【請求項１０】
前記第３ストリーム識別子（ＩＤ）は、前記ソリッドステートドライブへの前記第１有効データの書き込みを最初（ｏｒｉｇｉｎａｌｌｙ）に担当するアプリケーションのアプリケーションＩＤ、前記第１有効データに対する残余寿命、前記第１有効データに対する順次性（ｓｅｑｕｅｎｔｉａｌｉｔｙ）、前記第１有効データに対する最新性（ｒｅｃｅｎｃｙ）、前記第１有効データに対する書き込みサイズ、前記第１有効データに対する書き込み時間、及び前記第１有効データに対する読み出し頻度の内の少なくとも一つに応答することを特徴とする請求項１に記載のソリッドステートドライブ（ＳＳＤ）。
【請求項１１】
ソリッドステートドライブ（ＳＳＤ）のガーベッジコレクションに係る方法であって、
ガーベッジコレクションのためのソリッドステートドライブの第１ブロックを識別する（ｉｄｅｎｔｉｆｙｉｎｇ）ステップと、
ここで、前記ソリッドステートドライブは、第２有効データを格納する第２ブロック、第１ストリーム識別子（ＩＤ）に応答する第１ブロック、及び第２ストリーム識別子（ＩＤ）に応答する第２ブロック、ホストコンピュータからの第１書き込み要求に応答して前記第１ブロックに格納された第１有効データ、及び前記ホストコンピュータからの第２書き込み要求に応答して第２ブロックに格納された第２有効データを含み、
プログラミングを要請する前記第１ブロックの前記第１有効データを識別するステップと、
自動ストリーム検出ロジックによって、前記第１有効データの属性（ａｔｔｒｉｂｕｔｅｓ）に応答する前記第１有効データに対する第３ストリーム識別子（ＩＤ）を選択するステップと、
ここで、前記自動ストリーム検出ロジックは、前記第１ストリーム識別子（ＩＤ）、前記第２ストリーム識別子（ＩＤ）、及び前記第３ストリーム識別子（ＩＤ）としての異なるストリーム識別子（ＩＤ）の内のいずれかを選択でき、前記第３ストリーム識別子（ＩＤ）は、プログラミングを必要とする前記第１ブロック内の前記第１有効データが識別された後に選択され、
前記第１ブロックの前記第１有効データを前記第３ストリーム識別子（ＩＤ）に応答して選択される第３ブロックにプログラミングするステップと、を有することを特徴とする方法。
【請求項１２】
前記プログラミングを要請する前記第１ブロック内の前記第１有効データを識別する前に、
前記ソリッドステートドライブにおいて、ガベージコレクションのための前記ソリッドステートドライブの前記第１ブロックを識別する前に、アプリケーションからの第１書き込み要求で前記第１有効データを受信するステップと、
前記第１有効データの属性に応答する第１ストリーム識別子（ＩＤ）を決定するステップと、
前記第１ストリーム識別子（ＩＤ）に応答する前記第１ブロックを選択するステップと、
前記第１書き込み要求に応答して、前記第１有効データを前記第１ブロックに書き込むステップと、をさらに有することを特徴とする請求項１１に記載の方法。
【請求項１３】
前記第１ブロックの前記第１有効データを前記第３ストリーム識別子（ＩＤ）に応答して選択された第３ブロックにプログラミングするステップは、プログラミング書き込み要求を入出力（Ｉ／Ｏ）キューに入れて、前記第１有効データを前記第３ブロックに書き込むステップを含み、
前記入出力（Ｉ／Ｏ）キューは、ホストコンピュータ上のアプリケーションからの要求を受信するよう動作し、
前記ホストコンピュータ上のアプリケーションからの要求は、読み取り要求と書き込み要求の両方を含むことを特徴とする請求項１１に記載の方法。
【請求項１４】
前記第１ブロックを消去するステップをさらに有することを特徴とする請求項１３に記載の方法。
【請求項１５】
前記第１ブロックを消去するステップは、前記第１有効データが前記第３ブロックに書き込まれる前に、前記第１ブロックを消去するステップを含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記第１ブロックの前記第１有効データを前記第３ストリーム識別子（ＩＤ）に応答して選択された第３ブロックにプログラミングするステップは、
前記第１有効データの属性に応答する前記第１有効データの前記第３ストリーム識別子（ＩＤ）を決定するステップと、
前記第３ストリーム識別子（ＩＤ）に応答する前記第３ブロックを選択するステップと、
前記第１有効データを前記第３ブロックにプログラミングするステップと、を含み、
前記第３ブロックは、前記第３ストリーム識別子（ＩＤ）に応答して選択される複数の第３ブロックの内の１つであることを特徴とする請求項１１に記載の方法。
【請求項１７】
前記第３ストリーム識別子（ＩＤ）に応答する前記第３ブロックを選択するステップは、前記第３ストリーム識別子（ＩＤ）に応答する特別なブロックを選択するステップを含み、
前記特別なブロックは、前記ガーベッジコレクションの中にプログラムされたデータのみを格納することを特徴とする請求項１６に記載の方法。
【請求項１８】
前記第３ストリーム識別子（ＩＤ）は、前記ソリッドステートドライブへの前記第１有効データの書き込みを最初（ｏｒｉｇｉｎａｌｌｙ）に担当するアプリケーションのアプリケーションＩＤ、前記第１有効データに対する残余寿命、前記第１有効データに対する順次性（ｓｅｑｕｅｎｔｉａｌｉｔｙ）、前記第１有効データに対する最新性（ｒｅｃｅｎｃｙ）、前記第１有効データに対する書き込みサイズ、前記第１有効データに対する書き込み時間、及び前記第１有効データに対する読み出し頻度の内の少なくとも一つに応答することを特徴とする請求項１１に記載の方法。
【請求項１９】
前記第１有効データの属性の値は、前記第１書き込み要求に応じて変化することを特徴とする請求項１１に記載の方法。
【請求項２０】
非一時的なストレージ媒体を含む物品（ａｒｔｉｃｌｅ）であって、
前記非一時的なストレージ媒体は、マシンによって実行される時、下記の手順を結果する命令語を格納しており、
前記手順は、ガーベッジコレクションのためのソリッドステートドライブにおいて第１ブロックを識別するステップと、
ここで、前記ソリッドステートドライブは、第２有効データを格納する第２ブロック、第１ストリーム識別子（ＩＤ）に応答する第１ブロック、及び第２ストリーム識別子（ＩＤ）に応答する第２ブロック、ホストコンピュータからの第１書き込み要求に応答して前記第１ブロックに格納された第１有効データ、及び前記ホストコンピュータからの第２書き込み要求に応答して第２ブロックに格納された第２有効データを含み、
プログラミングを要請する前記第１ブロックの前記第１有効データを識別するステップと、
自動ストリーム検出ロジックによって、前記第１有効データの属性（ａｔｔｒｉｂｕｔｅｓ）に応答する前記第１有効データに対する第３ストリーム識別子（ＩＤ）を選択するステップと、
ここで、自動ストリーム検出ロジックは、前記第１ストリーム識別子（ＩＤ）、前記第２ストリーム識別子（ＩＤ）、及び第３ストリーム識別子（ＩＤ）としての異なるストリーム識別子（ＩＤ）の内のいずれかを選択でき、前記第３ストリーム識別子（ＩＤ）は、プログラミングを必要とする前記第１ブロック内の前記第１有効データが識別された後に選択され、
前記第１ブロックの前記第１有効データを前記第３ストリーム識別子（ＩＤ）に応答して選択される第３ブロックにプログラミングするステップと、を有することを特徴とする物品。
【請求項２１】
前記第１ブロックの前記第１有効データを前記第３ストリーム識別子（ＩＤ）に応答して選択された第３ブロックにプログラミングするステップは、プログラミング書き込み要求を入出力（Ｉ／Ｏ）キューに入れて、前記第１有効データを前記第３ブロックに書き込むステップを含み、
前記入出力（Ｉ／Ｏ）キューは、ホストコンピュータ上のアプリケーションからの要求を受信するよう動作し、
前記ホストコンピュータ上のアプリケーションからの要求は、読み取り要求と書き込み要求の両方を含むことを特徴とする請求項２０に記載の物品。
【請求項２２】
ソリッドステートドライブ（ＳＳＤ）のホストコンピュータから、第１有効データを含む第１書き込み要求を受信するステップと、
前記第１書き込み要求に応答する第１ストリーム識別子（ＩＤ）を選択するステップと、
前記第１書き込み要求に応答して、前記第１ストリーム識別子（ＩＤ）に応答する前記ソリッドステートドライブの第１ブロックに、前記第１有効データを書き込むステップと、
前記ソリッドステートドライブの前記ホストコンピュータから、第２有効データを含む第２書き込み要求を受信するステップと、
前記第２書き込み要求に応答して前記第１ストリーム識別子（ＩＤ）とは異なる第２ストリーム識別子（ＩＤ）を選択するステップと、
前記第２書き込み要求に応答して、前記第２ストリーム識別子（ＩＤ）に応答する前記ソリッドステートドライブの第２ブロックに、前記第２有効データを書き込むステップと、
前記第１有効データを前記第１ブロックに書き込み、前記第２有効データを前記第２ブロックに書き込んだ後、ガーベッジコレクションのための前記第１ブロックを識別するステップと、
前記第１ブロックの前記第１有効データをプログラミングが要請されるものとして識別するステップと、
自動ストリーム検出ロジックによって、前記第１有効データの属性（ａｔｔｒｉｂｕｔｅｓ）に応答する第３ストリーム識別子（ＩＤ）を選択するステップと、
ここで、前記第３ストリーム識別子（ＩＤ）は、前記第１ストリーム識別子（ＩＤ）、前記第２ストリーム識別子（ＩＤ）、又は異なるストリーム識別子（ＩＤ）の内のいずれかであり、前記自動ストリーム検出ロジックは、前記第１有効データに対して前記第１ストリーム識別子（ＩＤ）、前記第２ストリーム識別子（ＩＤ）、又は前記異なるストリーム識別子（ＩＤ）の内のいずれかを選択することができ、
前記第３ストリーム識別子（ＩＤ）に応答して前記第１有効データを前記ソリッドステートドライブの第３ブロックにプログラミングするステップと、を有することを特徴とする方法。
【請求項２３】
前記第１有効データの属性に応答する前記第３ストリーム識別子（ＩＤ）を選択するステップは、前記第１有効データの属性に応答する前記第２ストリーム識別子（ＩＤ）を選択するステップを含み、
前記第３ブロックは、前記第２ブロックであることを特徴とする請求項２２に記載の方法。
【請求項２４】
ソリッドステートドライブ（ＳＳＤ）のホストコンピュータから、第１有効データを含む第１書き込み要求を受信するステップと、
前記第１書き込み要求に応答する第１ストリーム識別子（ＩＤ）を選択するステップと、
前記第１書き込み要求に応答して、前記第１ストリーム識別子（ＩＤ）に応答する前記ソリッドステートドライブの第１ブロックに、前記第１有効データを書き込むステップと、
前記ソリッドステートドライブの前記ホストコンピュータから、第２有効データを含む第２書き込み要求を受信するステップと、
前記第２書き込み要求に応答して前記第１ストリーム識別子（ＩＤ）とは異なる第２ストリーム識別子（ＩＤ）を選択するステップと、
前記第２書き込み要求に応答して、前記第２ストリーム識別子（ＩＤ）に応答する前記ソリッドステートドライブの第２ブロックに、前記第２有効データを書き込むステップと、
前記ソリッドステートドライブの前記ホストコンピュータから、第３有効データを含む第３書き込み要求を受信するステップと、
前記第３書き込み要求に応答して前記第２ストリーム識別子（ＩＤ）を選択するステップと、
前記第３書き込み要求に応答して、前記第２ストリーム識別子（ＩＤ）に応答する前記ソリッドステートドライブの第３ブロックに、前記第３有効データを書き込むステップと、
前記第１有効データを前記第１ブロックに書き込み、前記第２有効データを前記第２ブロックに書き込み、前記第３有効データを前記第３ブロックに書き込んだ後、ガーベッジコレクションのための前記第１ブロックを識別するステップと、
前記第１ブロックの前記第１有効データをプログラミングが要請されるものとして識別するステップと、
自動ストリーム検出ロジックによって、前記第１有効データの属性（ａｔｔｒｉｂｕｔｅｓ）に応答する前記第１ストリーム識別子（ＩＤ）を選択するステップと、
前記第１ストリーム識別子（ＩＤ）に応答して前記第１有効データを、前記ソリッドステートドライブ上の第４ブロックにプログラミングするステップと、
ガーベッジコレクションのための前記第２ブロックを識別するステップと、
前記第２ブロックの前記第２有効データをプログラミングが要請されるものとして識別するステップと、
前記自動ストリーム検出ロジックによって、前記第２有効データの属性に応答する前記第１ストリーム識別子（ＩＤ）を選択するステップと、
前記第１ストリーム識別子（ＩＤ）に応答して前記第２有効データを、前記ソリッドステートドライブ上の第５ブロックにプログラミングするステップと、
ガーベッジコレクションのための前記第３ブロックを識別するステップと、
前記第３ブロックの前記第３有効データをプログラミングが要請されるものとして識別するステップと、
前記自動ストリーム検出ロジックによって、前記第３有効データの属性に応答する、前記第１ストリーム識別子（ＩＤ）及び前記第２ストリーム識別子（ＩＤ）とは異なる第３ストリーム識別子（ＩＤ）を選択するステップと、
前記第３ストリーム識別子（ＩＤ）に応答する前記第３有効データを前記ソリッドステートドライブ上の第６ブロックにプログラミングするステップと、を有することを特徴とする方法。