特許第6018725号(P6018725)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 華為技術有限公司の特許一覧

特許6018725コントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法
<>
  • 特許6018725-コントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法 図000002
  • 特許6018725-コントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法 図000003
  • 特許6018725-コントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法 図000004
  • 特許6018725-コントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法 図000005
  • 特許6018725-コントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法 図000006
  • 特許6018725-コントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法 図000007
  • 特許6018725-コントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6018725
(24)【登録日】2016年10月7日
(45)【発行日】2016年11月2日
(54)【発明の名称】コントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法
(51)【国際特許分類】
   G06F 12/16 20060101AFI20161020BHJP
   G06F 12/02 20060101ALI20161020BHJP
   G06F 12/00 20060101ALI20161020BHJP
   G06F 12/08 20160101ALI20161020BHJP
【FI】
   G06F12/16 310R
   G06F12/02 530A
   G06F12/00 560B
   G06F12/00 597U
   G06F12/08 557
【請求項の数】24
【全頁数】22
(21)【出願番号】特願2016-528319(P2016-528319)
(86)(22)【出願日】2014年6月27日
(65)【公表番号】特表2016-524769(P2016-524769A)
(43)【公表日】2016年8月18日
(86)【国際出願番号】CN2014080984
(87)【国際公開番号】WO2015196464
(87)【国際公開日】20151230
【審査請求日】2015年8月4日
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】▲張▼ ▲陳▼怡
(72)【発明者】
【氏名】林 春恭
(72)【発明者】
【氏名】魏 明昌
【審査官】 後藤 彰
(56)【参考文献】
【文献】 特開2000−181805(JP,A)
【文献】 特開2000−122921(JP,A)
【文献】 特開平7−334430(JP,A)
【文献】 特開平2−226446(JP,A)
【文献】 特表2010−514017(JP,A)
【文献】 米国特許出願公開第2009/0259806(US,A1)
【文献】 米国特許出願公開第2008/0177956(US,A1)
【文献】 中国特許出願公開第102623052(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/16
G06F 12/00
G06F 12/02
G06F 12/08
G06F 12/16
(57)【特許請求の範囲】
【請求項1】
記憶システムに適用されるコントローラであり、前記記憶システムは、前記コントローラとフラッシュメモリ装置とを有し、前記フラッシュメモリ装置はフラッシュチップを有し、前記フラッシュチップはブロックを有し、前記ブロックは複数のページを有し、前記複数のページのうち少なくとも1つは損傷ページであるコントローラであって、
前記コントローラは、通信インタフェースとプロセッサとを有し、
前記通信インタフェースは、前記フラッシュメモリ装置と通信するように構成され、
前記プロセッサは、
前記フラッシュメモリ装置により送信された前記ブロックの容量情報を受信し、
前記ブロックの前記容量情報に従って前記ブロックの有効容量を取得し、前記ブロックの前記有効容量は、前記損傷ページの容量を有さず、
ターゲットデータを読み取り、前記ターゲットデータのサイズは、前記ブロックの前記有効容量であり、
前記ターゲットデータを前記フラッシュメモリ装置に送信するように構成されるコントローラ。
【請求項2】
前記ブロックの前記容量情報は、前記損傷ページについての情報を有し、前記損傷ページについての前記情報は、前記損傷ページの前記容量を示すために使用され、前記プロセッサは、前記ブロックの予め記憶された標準容量と前記損傷ページの前記容量とに従って前記ブロックの前記有効容量を取得するように構成され、前記ブロックの前記有効容量は、前記ブロックの前記標準容量から前記損傷ページの前記容量を減算したものである、請求項1に記載のコントローラ。
【請求項3】
前記ブロックの前記容量情報は、前記ブロックの前記有効容量を有する、請求項1に記載のコントローラ。
【請求項4】
前記ブロックの前記容量情報は、前記ブロックの容量フラグを有し、前記コントローラは、メモリを更に有し、前記ブロックの前記容量フラグと前記ブロックの前記有効容量との間の対応関係は、前記メモリに記憶され、
前記プロセッサは、前記ブロックの前記容量フラグと、前記ブロックの前記容量フラグと前記ブロックの前記有効容量との間の前記対応関係とに従って、前記ブロックの前記有効容量を取得するように構成される、請求項1に記載のコントローラ。
【請求項5】
前記コントローラは、キャッシュを更に有し、前記ターゲットデータは、前記キャッシュに記憶された書き込まれるべきデータであり、
前記プロセッサは、複数の書き込みデータ要求を受信し、前記書き込まれるべきデータを前記キャッシュに書き込むように更に構成され、前記複数の書き込みデータ要求は、前記書き込まれるべきデータを搬送し、
前記プロセッサは、前記複数の書き込みデータ要求で搬送された前記書き込まれるべきデータのサイズが前記ブロックの前記有効容量に等しいことを決定するように更に構成される、請求項1ないし4のうちいずれか1項に記載のコントローラ。
【請求項6】
前記コントローラは、キャッシュを更に有し、前記ターゲットデータは、前記キャッシュに記憶された書き込まれるべきデータの一部であり、
前記プロセッサは、複数の書き込みデータ要求を受信し、前記書き込まれるべきデータを前記キャッシュに書き込むように更に構成され、前記複数の書き込みデータ要求は、前記書き込まれるべきデータを搬送し、
前記プロセッサは、前記書き込まれるべきデータのサイズが前記ブロックの前記有効容量より大きいことを決定するように更に構成される、請求項1ないし4のうちいずれか1項に記載のコントローラ。
【請求項7】
プライマリコントローラとフラッシュチップとを有するフラッシュメモリ装置であり、前記フラッシュチップはブロックを有し、前記ブロックは複数のページを有し、前記複数のページのうち少なくとも1つは損傷ページであるフラッシュメモリ装置であって、
前記フラッシュチップは、ターゲットデータを記憶するように構成され、
前記プライマリコントローラは、
前記ブロックの容量情報についての統計を収集し、前記ブロックの前記容量情報は、前記ブロックの有効容量を取得するために使用され、前記ブロックの前記有効容量は、前記損傷ページの容量を有さず、
前記ブロックの前記容量情報をコントローラに送信し、
前記コントローラにより送信された前記ターゲットデータを受信し、前記ターゲットデータのサイズは、前記ブロックの前記有効容量であり、
前記ターゲットデータを前記ブロックに書き込むように構成されるフラッシュメモリ装置。
【請求項8】
前記プライマリコントローラは、前記コントローラにより送信された問い合わせコマンドを受信するように更に構成され、前記問い合わせコマンドは、前記ブロックの前記容量情報を問い合わせるために使用される、請求項7に記載のフラッシュメモリ装置。
【請求項9】
前記プライマリコントローラは、前記ブロックの前記容量情報を前記コントローラに周期的に送信するように構成される、請求項7に記載のフラッシュメモリ装置。
【請求項10】
前記ブロックの前記容量情報をコントローラに送信する前に、前記プライマリコントローラは、前記ブロックの前記容量情報が前の統計の収集を通じて取得された前記ブロックの容量情報と異なることを決定するように更に構成される、請求項7に記載のフラッシュメモリ装置。
【請求項11】
前記ブロックの前記容量情報は、前記損傷ページについての情報を有し、前記損傷ページについての情報は、前記損傷ページの前記容量を示すために使用される、請求項7ないし10のうちいずれか1項に記載のフラッシュメモリ装置。
【請求項12】
前記ブロックの前記容量情報は、前記ブロックの前記有効容量を有する、請求項7ないし10のうちいずれか1項に記載のフラッシュメモリ装置。
【請求項13】
データをフラッシュメモリ装置に書き込む方法であり、前記方法は、記憶システムに適用され、前記記憶システムは、コントローラと前記フラッシュメモリ装置とを有し、前記フラッシュメモリ装置はフラッシュチップを有し、前記フラッシュチップはブロックを有し、前記ブロックは複数のページを有し、前記複数のページのうち少なくとも1つは損傷ページである方法であって、
前記コントローラにより、前記フラッシュメモリ装置により送信された前記ブロックの容量情報を受信するステップと、
前記コントローラにより、前記ブロックの前記容量情報に従って前記ブロックの有効容量を取得するステップであり、前記ブロックの前記有効容量は、前記損傷ページの容量を有さないステップと、
前記コントローラにより、ターゲットデータを読み取るステップであり、前記ターゲットデータのサイズは、前記ブロックの前記有効容量であるステップと、
前記コントローラにより、前記ターゲットデータを前記フラッシュメモリ装置に送信するステップと
を有する方法。
【請求項14】
前記ブロックの前記容量情報は、前記損傷ページについての情報を有し、前記損傷ページについての前記情報は、前記損傷ページの前記容量を示すために使用され、
前記コントローラにより、前記ブロックの前記容量情報に従って前記ブロックの有効容量を取得するステップは、
前記コントローラにより、前記ブロックの予め記憶された標準容量と前記損傷ページの前記容量とに従って前記ブロックの前記有効容量を取得するステップを有し、前記ブロックの前記有効容量は、前記ブロックの前記標準容量から前記損傷ページの前記容量を減算したものである、請求項13に記載の方法。
【請求項15】
前記ブロックの前記容量情報は、前記ブロックの前記有効容量を有する、請求項13に記載の方法。
【請求項16】
前記ブロックの前記容量情報は、前記ブロックの容量フラグを有し、前記コントローラは、メモリを更に有し、前記ブロックの前記容量フラグと前記ブロックの前記有効容量との間の対応関係は、前記メモリに記憶され、
前記コントローラにより、前記ブロックの前記容量情報に従って前記ブロックの有効容量を取得するステップは、
前記コントローラにより、前記ブロックの前記容量フラグと、前記ブロックの前記容量フラグと前記ブロックの前記有効容量との間の対応関係とに従って、前記ブロックの前記有効容量を取得するステップを有する、請求項13に記載の方法。
【請求項17】
前記コントローラは、プロセッサとキャッシュとを有し、前記ターゲットデータは、前記キャッシュに記憶された書き込まれるべきデータであり、
前記方法は、
前記プロセッサにより、複数の書き込みデータ要求を受信し、前記書き込まれるべきデータを前記キャッシュに書き込むステップであり、前記複数の書き込みデータ要求は、前記書き込まれるべきデータを搬送するステップと、
前記プロセッサにより、前記複数の書き込みデータ要求で搬送された前記書き込まれるべきデータのサイズが前記ブロックの前記有効容量に等しいことを決定するステップと
を更に有する、請求項13ないし16のうちいずれか1項に記載の方法。
【請求項18】
前記コントローラは、プロセッサとキャッシュとを有し、前記ターゲットデータは、前記キャッシュに記憶された書き込まれるべきデータの一部であり、
前記方法は、
前記プロセッサにより、複数の書き込みデータ要求を受信し、前記書き込まれるべきデータを前記キャッシュに書き込むステップであり、前記複数の書き込みデータ要求は、前記書き込まれるべきデータを搬送するステップと、
前記プロセッサにより、前記書き込まれるべきデータのサイズが前記ブロックの前記有効容量より大きいことを決定するステップと
を更に有する、請求項13ないし16のうちいずれか1項に記載の方法。
【請求項19】
データをフラッシュメモリ装置に書き込む方法であり、前記フラッシュメモリ装置は、プライマリコントローラとフラッシュチップとを有し、前記フラッシュチップはブロックを有し、前記ブロックは複数のページを有し、前記複数のページのうち少なくとも1つは損傷ページである方法であって、
前記プライマリコントローラにより、前記ブロックの容量情報についての統計を収集するステップであり、前記ブロックの前記容量情報は、前記ブロックの有効容量を取得するために使用され、前記ブロックの前記有効容量は、前記損傷ページの容量を有さないステップと、
前記プライマリコントローラにより、前記ブロックの前記容量情報をコントローラに送信するステップと、
前記プライマリコントローラにより、前記コントローラにより送信されたターゲットデータを受信するステップであり、前記ターゲットデータのサイズは、前記ブロックの前記有効容量であるステップと、
前記プライマリコントローラにより、前記ターゲットデータを前記ブロックに書き込むステップと
を有する方法。
【請求項20】
前記プライマリコントローラにより、前記コントローラにより送信された問い合わせコマンドを受信するステップを更に有し、前記問い合わせコマンドは、前記ブロックの前記容量情報を問い合わせるために使用される、請求項19に記載の方法。
【請求項21】
前記プライマリコントローラにより、前記ブロックの前記容量情報をコントローラに送信するステップは、
前記プライマリコントローラにより、前記ブロックの前記容量情報を前記コントローラに周期的に送信するステップを有する、請求項19に記載の方法。
【請求項22】
前記プライマリコントローラにより、前記ブロックの前記容量情報をコントローラに送信する前に、前記プライマリコントローラにより、前記ブロックの前記容量情報が前の統計の収集を通じて取得された前記ブロックの容量情報と異なることを決定するステップを更に有する、請求項19に記載の方法。
【請求項23】
前記ブロックの前記容量情報は、前記損傷ページについての情報を有し、前記損傷ページについての前記情報は、前記損傷ページの前記容量を示すために使用される、請求項19ないし22のうちいずれか1項に記載の方法。
【請求項24】
前記ブロックの前記容量情報は、前記ブロックの前記有効容量を有する、請求項19ないし22のうちいずれか1項に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施例は、ストレージ技術の分野に関し、特にコントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法に関する。
【背景技術】
【0002】
Flash Memory(フラッシュメモリ)装置は、記憶媒体がFlashグラニュルである不揮発性メモリであり、電源停止の後にデータが消滅しないという特徴を有する。従って、フラッシュメモリ装置は、外部又は内部メモリとして広く使用されている。記憶媒体としてFlashグラニュルを使用するフラッシュメモリ装置は、ソリッド・ステート・ドライブ(フルネーム:Solid State Drive、略してSSD)とも呼ばれるソリッド・ステート・ディスク(フルネーム:Solid State Device、略してSSD)でもよく、他のメモリでもよい。
【0003】
1つのSSDは、一般的に複数のフラッシュチップを含み、各フラッシュチップは、複数のブロック(block)を含む。各blockは複数のページ(page)を更に含む。或る場合には、損傷を受けたページ(損傷ページとも呼ばれる)がblock内に発生する可能性がある。SSDが損傷ページを含むblockにデータを書き込むときに、損傷ページを含むblockがデータを記憶するのに不十分である場合、一般的にデータのオーバーフローを記憶するために新たなblockが見つけられる。従って、SSDでは、或るデータにより書き込まれているが、データで満たされていない大量のblockが存在する。これは、blockの空間利用率を減少させ、SSDの記憶空間の浪費を生じる。
【発明の概要】
【0004】
本発明の実施例は、blockの空間利用率を改善し、SSDの記憶空間を節約することができるコントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法を提供する。
【0005】
第1の態様によれば、本発明の実施例は、コントローラを提供する。コントローラは、記憶システムに適用され、記憶システムは、コントローラとフラッシュメモリ装置とを含み、フラッシュメモリ装置はフラッシュチップを含み、フラッシュチップはブロックを含み、ブロックは複数のページを含み、複数のページのうち少なくとも1つは損傷ページである。コントローラは、通信インタフェースとプロセッサとを含む。通信インタフェースは、フラッシュメモリ装置と通信するように構成され、プロセッサは、フラッシュメモリ装置により送信されたブロックの容量情報を受信し、ブロックの容量情報に従ってブロックの有効容量を取得し、ブロックの有効容量は、損傷ページの容量を含まず、ターゲットデータを読み取り、ターゲットデータのサイズは、ブロックの有効容量であり、ターゲットデータをフラッシュメモリ装置に送信するように構成される。
【0006】
第1の態様の第1の可能な実現方式では、ブロックの容量情報は、損傷ページについての情報を含み、損傷ページについての情報は、損傷ページの容量を示すために使用され、プロセッサは、ブロックの予め記憶された標準容量と損傷ページの容量とに従ってブロックの有効容量を取得するように構成され、ブロックの有効容量は、ブロックの標準容量から損傷ページの容量を減算したものである。
【0007】
第1の態様の第2の可能な実現方式では、ブロックの容量情報は、ブロックの有効容量を含む。
【0008】
第1の態様の第3の可能な実現方式では、ブロックの容量情報は、ブロックの容量フラグを含み、コントローラは、メモリを更に含み、ブロックの容量フラグとブロックの有効容量との間の対応関係は、メモリに記憶され、プロセッサは、ブロックの容量フラグと、ブロックの容量フラグとブロックの有効容量との間の対応関係とに従って、ブロックの有効容量を取得するように構成される。
【0009】
第1の態様又は第1の態様の第1〜第3の可能な実現方式のうちいずれか1つを参照して、第4の可能な実現方式では、コントローラは、キャッシュを更に含み、ターゲットデータは、キャッシュに記憶された書き込まれるべきデータであり、プロセッサは、複数の書き込みデータ要求を受信し、書き込まれるべきデータをキャッシュに書き込むように更に構成され、複数の書き込みデータ要求は、書き込まれるべきデータを搬送し、プロセッサは、複数の書き込みデータ要求で搬送された書き込まれるべきデータのサイズがブロックの有効容量に等しいことを決定するように更に構成される。
【0010】
第1の態様又は第1の態様の第1〜第3の可能な実現方式のうちいずれか1つを参照して、第5の可能な実現方式では、コントローラは、キャッシュを更に含み、ターゲットデータは、キャッシュに記憶された書き込まれるべきデータの一部であり、プロセッサは、複数の書き込みデータ要求を受信し、書き込まれるべきデータをキャッシュに書き込むように更に構成され、複数の書き込みデータ要求は、書き込まれるべきデータを搬送し、プロセッサは、書き込まれるべきデータのサイズがブロックの有効容量より大きいことを決定するように更に構成される。
【0011】
第2の態様によれば、本発明の実施例は、フラッシュメモリ装置を提供する。フラッシュメモリ装置は、プライマリコントローラとフラッシュチップとを含み、フラッシュチップはブロックを含み、ブロックは複数のページを含み、複数のページのうち少なくとも1つは損傷ページである。フラッシュチップは、ターゲットデータを記憶するように構成され、プライマリコントローラは、ブロックの容量情報についての統計を収集し、ブロックの容量情報は、ブロックの有効容量を取得するために使用され、ブロックの有効容量は、損傷ページの容量を含まず、ブロックの容量情報をコントローラに送信し、コントローラにより送信されたターゲットデータを受信し、ターゲットデータのサイズは、ブロックの有効容量であり、ターゲットデータをブロックに書き込むように構成される。
【0012】
第2の態様の第1の可能な実現方式では、プライマリコントローラは、コントローラにより送信された問い合わせコマンドを受信するように更に構成され、問い合わせコマンドは、ブロックの容量情報を問い合わせるために使用される。
【0013】
第2の態様の第2の可能な実現方式では、プライマリコントローラは、ブロックの容量情報をコントローラに周期的に送信するように構成される。
【0014】
第2の態様の第3の可能な実現方式では、ブロックの容量情報をコントローラに送信する前に、プライマリコントローラは、ブロックの容量情報が前の統計の収集を通じて取得されたブロックの容量情報と異なることを決定するように更に構成される。
【0015】
第2の態様又は第2の態様の第1〜第3の可能な実現方式のうちいずれか1つを参照して、第4の可能な実現方式では、ブロックの容量情報は、損傷ページについての情報を含み、損傷ページについての情報は、損傷ページの容量を示すために使用される。
【0016】
第2の態様又は第2の態様の第1〜第3の可能な実現方式のうちいずれか1つを参照して、第5の可能な実現方式では、ブロックの容量情報は、ブロックの有効容量を含む。
【0017】
第3の態様によれば、本発明の実施例は、データをフラッシュメモリ装置に書き込む方法を提供し、この方法は、記憶システムに適用され、記憶システムは、コントローラとフラッシュメモリ装置とを含み、フラッシュメモリ装置はフラッシュチップを含み、フラッシュチップはブロックを含み、ブロックは複数のページを含み、複数のページのうち少なくとも1つは損傷ページである。この方法は、コントローラにより、フラッシュメモリ装置により送信されたブロックの容量情報を受信し、コントローラにより、ブロックの容量情報に従ってブロックの有効容量を取得し、ブロックの有効容量は、損傷ページの容量を含まず、コントローラにより、ターゲットデータを読み取り、ターゲットデータのサイズは、ブロックの有効容量であり、コントローラにより、ターゲットデータをフラッシュメモリ装置に送信することを含む。
【0018】
第3の態様の第1の可能な実現方式では、ブロックの容量情報は、損傷ページについての情報を含み、損傷ページについての情報は、損傷ページの容量を示すために使用され、コントローラにより、ブロックの容量情報に従ってブロックの有効容量を取得することは、コントローラにより、ブロックの予め記憶された標準容量と損傷ページの容量とに従ってブロックの有効容量を取得することを含み、ブロックの有効容量は、ブロックの標準容量から損傷ページの容量を減算したものである。
【0019】
第3の態様の第2の可能な実現方式では、ブロックの容量情報は、ブロックの有効容量を含む。
【0020】
第3の態様の第3の可能な実現方式では、ブロックの容量情報は、ブロックの容量フラグを含み、ブロックの容量フラグとブロックの有効容量との間の対応関係は、メモリに記憶され、コントローラにより、ブロックの容量情報に従ってブロックの有効容量を取得することは、コントローラにより、ブロックの容量フラグと、ブロックの容量フラグとブロックの有効容量との間の対応関係とに従って、ブロックの有効容量を取得することを含む。
【0021】
第3の態様又は第3の態様の第1〜第3の可能な実現方式のうちいずれか1つを参照して、第4の可能な実現方式では、コントローラは、プロセッサとキャッシュとを含み、ターゲットデータは、キャッシュに記憶された書き込まれるべきデータであり、この方法は、プロセッサにより、複数の書き込みデータ要求を受信し、書き込まれるべきデータをキャッシュに書き込み、複数の書き込みデータ要求は、書き込まれるべきデータを搬送し、プロセッサにより、複数の書き込みデータ要求で搬送された書き込まれるべきデータのサイズがブロックの有効容量に等しいことを決定することを更に含む。
【0022】
第3の態様又は第3の態様の第1〜第3の可能な実現方式のうちいずれか1つを参照して、第5の可能な実現方式では、コントローラは、プロセッサとキャッシュとを含み、ターゲットデータは、キャッシュに記憶された書き込まれるべきデータの一部であり、この方法は、プロセッサにより、複数の書き込みデータ要求を受信し、書き込まれるべきデータをキャッシュに書き込み、複数の書き込みデータ要求は、書き込まれるべきデータを搬送し、プロセッサにより、書き込まれるべきデータのサイズがブロックの有効容量より大きいことを決定することを更に含む。
【0023】
第4の態様によれば、本発明の実施例は、データをフラッシュメモリ装置に書き込む方法を提供する。フラッシュメモリ装置は、プライマリコントローラとフラッシュチップとを含み、フラッシュチップはブロックを含み、ブロックは複数のページを含み、複数のページのうち少なくとも1つは損傷ページである。この方法は、プライマリコントローラにより、ブロックの容量情報についての統計を収集し、ブロックの容量情報は、ブロックの有効容量を取得するために使用され、ブロックの有効容量は、損傷ページの容量を含まず、プライマリコントローラにより、ブロックの容量情報をコントローラに送信し、プライマリコントローラにより、コントローラにより送信されたターゲットデータを受信し、ターゲットデータのサイズは、ブロックの有効容量であり、プライマリコントローラにより、ターゲットデータをブロックに書き込むことを含む。
【0024】
第4の態様の第1の可能な実現方式では、この方法は、プライマリコントローラにより、コントローラにより送信された問い合わせコマンドを受信することを更に含み、問い合わせコマンドは、ブロックの容量情報を問い合わせるために使用される。
【0025】
第4の態様の第2の可能な実現方式では、プライマリコントローラにより、ブロックの容量情報をコントローラに送信することは、プライマリコントローラにより、ブロックの容量情報をコントローラに周期的に送信することを含む。
【0026】
第4の態様の第3の可能な実現方式では、ブロックの容量情報をコントローラに送信する前に、この方法は、プライマリコントローラにより、ブロックの容量情報が前の統計の収集を通じて取得されたブロックの容量情報と異なることを決定することを更に含む。
【0027】
第4の態様又は第4の態様の第1〜第3の可能な実現方式のうちいずれか1つを参照して、第4の可能な実現方式では、ブロックの容量情報は、損傷ページについての情報を含み、損傷ページについての情報は、損傷ページの容量を示すために使用される。
【0028】
第4の態様又は第4の態様の第1〜第3の可能な実現方式のうちいずれか1つを参照して、第5の可能な実現方式では、ブロックの容量情報は、ブロックの有効容量を含む。
【0029】
本発明の実施例は、コントローラ及びデータをフラッシュメモリ装置に書き込む方法を提供する。コントローラは、フラッシュメモリ装置により送信されたブロックの容量情報を受信し、ブロックの容量情報に従ってブロックの有効容量を取得し、ブロックの有効容量は、損傷ページの容量を含まず、ターゲットデータを読み取り、ターゲットデータのサイズは、ブロックの有効容量であり、ターゲットデータをフラッシュメモリ装置に送信する。本発明の実施例の実現方式によれば、ブロックが損傷ページを有する場合、コントローラは、サイズがブロックの有効容量と同じターゲットデータをフラッシュメモリ装置に送信してもよく、これにより、フラッシュメモリ装置は、ターゲットデータをブロックに書き込む。従って、本発明の実施例によれば、フラッシュメモリ装置のブロックに書き込まれたターゲットデータがデータのオーバーフローなしに最大限までブロックを満たすことが確保され得る。これにより、ブロック利用率を改善し、SSDの記憶空間を節約する。
【0030】
更に、本発明の実施例は、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法を更に提供する。フラッシュメモリ装置は、ブロックの容量情報についての統計を収集し、ブロックの容量情報は、ブロックの有効容量を取得するために使用され、ブロックの有効容量は、損傷ページの容量を含まず、ブロックの容量情報をコントローラに送信し、コントローラにより送信されたターゲットデータを受信し、ターゲットデータのサイズは、ブロックの有効容量であり、ターゲットデータをブロックに書き込む。フラッシュメモリ装置は、ブロックの容量情報についての統計を収集し、ブロックの容量情報をコントローラに送信してもよく、これにより、コントローラは、サイズがブロックの有効容量と同じターゲットデータをフラッシュメモリ装置に送信してもよい。フラッシュメモリ装置は、ターゲットデータをブロックに書き込む。従って、本発明の実施例によれば、フラッシュメモリ装置のブロックに書き込まれたターゲットデータがデータのオーバーフローなしに最大限までブロックを満たすことが確保され得る。これにより、ブロック利用率を改善し、SSDの記憶空間を節約する。
【図面の簡単な説明】
【0031】
本発明の実施例の技術的対策を明確に説明するために、以下に、実施例又は従来技術を説明するために必要な添付図面を簡単に紹介する。明らかに、以下の説明の添付図面は、本発明の単に幾つかの実施例を示しているに過ぎず、当業者は、創造的取り組みを行うことなく、これらの添付図面から依然として他の図面を導き得る。
図1】本発明の実施例による記憶システムの概略構成図
図2】本発明の実施例によるコントローラの概略構成図
図3a】本発明の実施例によるフラッシュメモリ装置の記憶媒体の概略構成図
図3b】本発明の実施例によるフラッシュメモリ装置のプライマリコントローラの概略構成図
図4】本発明の実施例に従ってデータをフラッシュメモリ装置に書き込む概略フローチャート
図5】本発明の実施例に従ってデータをフラッシュメモリ装置に書き込む他の概略フローチャート
図6】本発明の実施例に従ってデータをフラッシュメモリ装置に書き込む更に他の概略フローチャート
【発明を実施するための形態】
【0032】
本発明の実施例は、blockの空間利用率を改善し、SSDの記憶空間を節約することができるコントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法を提供する。
【0033】
図1は、本発明の実施例による記憶システムの概略構成図を示している。図1に示す記憶システムは、コントローラ11とフラッシュメモリ装置22とを含む。フラッシュメモリ装置22は、記憶媒体としてFlashグラニュルを使用する記憶装置であり、ソリッド・ステート・ドライブ(Solid State Drive、SSD)とも呼ばれるソリッド・ステート・ディスク(フルネーム:Solid State Device、略してSSD)を含んでもよく、他のメモリを含んでもよい。この実施例では、一例としてSSDを使用することにより、フラッシュメモリ装置22について説明する。
【0034】
図1は、例示的な説明に過ぎず、特定のネットワーキング方式を限定するものではない。例えば、コントローラ11及びフラッシュメモリ装置22が相互に通信することができる限り、カスケード型ツリーネットワーキング及びリングネットワーキングの双方が使用されてもよい。
【0035】
コントローラ11は、従来技術で知られているいずれかのコンピューティングデバイスを含んでもよく、例えば、サーバ又はデスクトップコンピュータを含んでもよい。オペレーティングシステム及び他のアプリケーションプログラムは、コントローラ11にインストールされる。コントローラ11は、入出力(I/O)要求をフラッシュメモリ装置22に送信してもよい。例えば、書き込みデータ要求は、フラッシュメモリ装置22に送信され、これにより、フラッシュメモリ装置22は、書き込みデータ要求で搬送された書き込まれるべきデータをフラッシュメモリ装置22の記憶媒体に書き込む。
【0036】
図2を参照すると、図2は、本発明の実施例によるコントローラ11の概略構成図である。図2に示すように、コントローラ11は、プロセッサ(processor)118と、バッファ(cache)120と、メモリ(memory)122と、通信バス(略してバス)126と、通信インタフェース(Communication Interface)128とを主に含む。プロセッサ118、キャッシュ120、メモリ122及び通信インタフェース128は、通信バス126を使用することにより、相互通信を行う。
【0037】
通信インタフェース128は、ホスト(図面に図示せず)又はフラッシュメモリ装置22と通信するように構成される。
【0038】
メモリ122は、プログラム124を記憶するように構成され、メモリ122は、高速RAMメモリを含んでもよく、不揮発性メモリ(non-volatile memory)、例えば、少なくとも1つのディスクメモリを含んでもよい。メモリ122は、ランダム・アクセス・メモリ(Random Access Memory、RAM)、磁気ディスク、ハードディスク、光ディスク、ソリッド・ステート・ディスク(Solid State Disk、SSD)又は不揮発性メモリのように、プログラムコードを記憶することができるいずれかの過渡的でない(non-transitory)機械読み取り可能な媒体でもよいことを認識し得る。
【0039】
具体的に、プログラム124は、プログラムコードを含んでもよく、プログラムコードは、コンピュータ動作命令を含む。
【0040】
キャッシュ120(Cache)は、ホストから受信したデータ又はフラッシュメモリ装置22から読み取ったデータを一時的に記憶するように構成される。キャッシュ120は、RAM、ROM、フラッシュメモリ(Flash memory)又はソリッド・ステート・ディスク(Solid State Disk、SSD)のように、データを記憶することができるいずれかの過渡的でない(non-transitory)機械読み取り可能な媒体でもよく、ここでは限定されない。例えば、ホストにより送信された書き込みデータ要求を受信した場合、コントローラ11は、書き込みデータ要求をキャッシュ120に記憶してもよく、次に、プロセッサ118は、書き込みデータ要求を処理する。任意選択で、ホストにより送信された1つの書き込みデータ要求を受信した場合、コントローラ11は、まず書き込みデータ要求をキャッシュ120に記憶し、キャッシュ120から1つの書き込みデータ要求を読み取り、処理のために1つの書き込みデータ要求をフラッシュメモリ装置22に送信してもよい。或いは、ホストにより送信された複数の書き込みデータ要求を受信した場合、コントローラ11は、複数の書き込みデータ要求をキャッシュ120に一時的に記憶してもよい。キャッシュ120に記憶された複数の書き込みデータ要求で搬送された書き込まれるべきデータが設定された閾値に到達した場合、コントローラ11は、処理のために複数の書き込みデータ要求で搬送された書き込まれるべきデータをフラッシュメモリ装置22に送信してもよい。
【0041】
更に、メモリ122及びキャッシュ120は、共に配置されてもよく、別々に配置されてもよく、本発明のこの実施例では限定されない。
【0042】
プロセッサ118は、中央処理装置CPUでもよく、特定用途向け集積回路ASIC(Application Specific Integrated Circuit)でもよく、本発明のこの実施例を実現するように構成された1つ以上の集積回路でもよい。本発明のこの実施例では、プロセッサ118は、ホストから書き込みデータ要求又は読み取りデータ要求を受信し、書き込みデータ要求又は読み取りデータ要求を処理し、書き込みデータ要求又は読み取りデータ要求をフラッシュメモリ装置22に送信し、他の動作を実行するように構成されてもよい。
【0043】
図3aを参照すると、図3aは、本発明の実施例によるフラッシュメモリ装置22の概略構成図である。この実施例では、一例としてSSDを使用することにより、フラッシュメモリ装置22について説明する。
【0044】
図3aに示すように、フラッシュメモリ装置22は、プライマリコントローラ220と記憶媒体221とを含む。プライマリコントローラ220は、コントローラ11により送信された書き込みデータ要求又は読み取りデータ要求を実行し、損傷ページについての統計の収集のような動作を実行するように構成される。ここでは、プライマリコントローラ220は、SSDのプライマリコントローラである。
【0045】
記憶媒体221は、一般的に複数のフラッシュ(Flash)チップを含む。SSDでは、複数のフラッシュチップを共に接続するためにチャネル(channel)が使用される。書き込みデータ要求の並行処理は、チャネルで実現されてもよい。一例として図3aに示す4つのチャネルが使用される。プライマリコントローラ220がコントローラ11により送信された4つの書き込みデータ要求を受信した場合、4つのチャネルのそれぞれが書き込みデータ要求を実行してもよく、これにより、書き込みデータ要求を処理する際の効率を改善する。更に、本発明のこの実施例によれば、書き込みデータ要求の並行処理はまた、1つのチャネル上の複数の並行ユニットで実現されてもよく、ここでは限定されない。
【0046】
各フラッシュチップは、複数のブロック(block)を含み、SSDにより実行される消去動作は、単位としてblockを用いて実行される。例えば、SSDがガベージコレクションを実行する必要がある場合、block内の有効なデータは、まず他の新たなblockに動かされ、元のblockに記憶された全てのデータ(有効なデータ及び無効なデータを含む)が消去される。本発明のこの実施例では、blockの有効なデータは、blockに記憶されており、変更されていないデータを示し、データのこの部分は読み取られてもよい。blockの無効なデータは、blockに記憶されており、変更されたデータを示し、データのこの部分は読み取られることができない。当業者は、フラッシュグラニュルの消去機能のため、blockに記憶されたデータが、一般的な機械的ハードドライブのように直接的に変更され得ないことを認識し得る。blockのデータが変更される必要がある場合、プライマリコントローラ220は、新たなblockを見つけ、変更されたデータを新たなblockに書き込み、元のblockのデータは、無効なデータになる。SSDがガベージコレクションを実行する場合、無効なデータは消去される。
【0047】
図3aから、各blockは、複数のページを含んでもよいことが分かり得る。或る場合には、blockのpageに損傷が発生する可能性があり、本発明のこの実施例では、損傷が発生したページは損傷ページと呼ばれる。blockに損傷ページが存在する場合、blockの実際の容量は、損傷ページを含まないblockの容量より小さくなる。本発明のこの実施例では、blockの実際の容量は、有効容量と呼ばれる。例えば、blockの標準容量が1Mであり、各pageのサイズは4KBである。blockに1つの損傷ページが存在する場合、blockの有効容量は、1Mから4KBを減算したものである。本発明のこの実施例では、blockの標準容量は、損傷ページを含まない空のblockの容量を示し、空のblockは、きれいに消去されたblockを示し、有効なデータも無効なデータも含まない。blockの有効容量は、blockの標準容量から損傷ページの容量を減算したものに等しい。損傷ページの容量は、各損傷ページのサイズと損傷ページの数との積に等しい。
【0048】
本発明のこの実施例では、blockの標準容量は、コントローラ11に予め記憶され、コントローラ11により、サイズが標準容量と同じターゲットデータをフラッシュメモリ装置22に送信するために使用されてもよい。各blockの標準容量は、2のN乗(M)であり、Nは正の整数である。blockの標準容量は同じでもよく、異なってもよい。blockの標準容量が異なる場合、Nの値は異なってもよい。この場合、最大blockの標準容量が、図4図6に示す本発明の実施例のいずれかの実現方式で使用される標準容量として考えられてもよい。
【0049】
更に、本発明のこの実施例では、SSDが書き込みデータ要求を実行する場合、データはまた、単位としてpageを使用することにより書き込まれる。例えば、コントローラ11は、書き込みデータ要求をプライマリコントローラ220に送信する。書き込みデータ要求は、論理ブロックアドレス(Logical Block Address、LBA)のセグメント及びターゲットデータを搬送し、LBAは、コントローラ11によりアクセスされ得るアドレスである。書き込みデータ要求を受信した場合、プライマリコントローラ220は、所定のポリシーに従ってターゲットデータをblockに書き込んでもよい。ターゲットデータが書き込まれる複数のpageのアドレスは、ターゲットデータを実際に記憶するアドレスであり、物理アドレスとも呼ばれる。SSDは、LBAのセグメントと複数のpageのアドレスとの間の対応関係を設定して記憶してもよい。コントローラ11が後に読み取りデータ要求をプライマリコントローラ220に送信し、ターゲットデータを読み取ることを要求した場合、読み取りデータ要求はLBAを搬送する。この場合、プライマリコントローラ220は、LBAと、LBAと物理アドレスとの間の対応関係とに従ってターゲットデータを読み出し、ターゲットデータをコントローラ11に戻してもよい。
【0050】
以下に、プライマリコントローラ220の構成及び機能を紹介する。図3bを参照すると、図3bは、本発明の実施例によるフラッシュメモリ装置22のプライマリコントローラ220の概略構成図である。
【0051】
プライマリコントローラ220は、プロセッサ(processor)218と、キャッシュ(cache)230と、通信バス(略してバス)226と、通信インタフェース(Communication Interface)228とを主に含む。プロセッサ218、キャッシュ230及び通信インタフェース228は、通信バス226を使用することにより、相互通信を行う。
【0052】
通信インタフェース228は、コントローラ11及び記憶媒体221と通信するように構成される。
【0053】
キャッシュ230(Cache)は、コントローラ11から受信したデータ及び記憶媒体221から読み取ったデータを一時的に記憶するように構成される。キャッシュ230は、RAM、ROM、フラッシュメモリ(Flash memory)又はソリッド・ステート・ディスク(Solid State Disk、SSD)のように、データを記憶することができるいずれかの過渡的でない(non-transitory)機械読み取り可能な媒体でもよく、ここでは限定されない。例えば、コントローラ11により送信された書き込みデータ要求が受信された場合、書き込みデータ要求は、キャッシュ230に記憶されてもよく、プロセッサ218により処理される。更に、或る適用例では、キャッシュ230はまた、プライマリコントローラ220の外部に配置されてもよい。
【0054】
プロセッサ218は、中央処理装置CPUでもよく、特定用途向け集積回路ASIC(Application Specific Integrated Circuit)でもよく、本発明のこの実施例を実現するように構成された1つ以上の集積回路でもよい。本発明のこの実施例では、プロセッサ218は、コントローラ11から書き込みデータ要求又は読み取りデータ要求を受信し、書き込みデータ要求又は読み取りデータ要求を処理し、書き込みデータ要求又は読み取りデータ要求を記憶媒体221に送信し、他の動作を実行するように構成されてもよい。
【0055】
プロセッサ218は、様々なプログラム命令を記憶するように構成されたキャッシュ(図面に図示せず)を更に含んでもよい。例えば、キャッシュは、フラッシュ変換レイヤ(Flash Translation Layer、FTL)を含んでもよい。プロセッサ218は、FTLを使用することにより、損傷ページについての統計の収集のような動作を実行して損傷ページについての統計の収集結果をFTLの構成情報に記憶してもよい。或いは、プロセッサ218は、他のソフトウェアモジュールを使用することにより、同様の機能を実現してもよい。従って、FTLの機能と同様の機能を有し、損傷ページについての統計の収集のような動作を実行して損傷ページについての統計の収集結果をソフトウェアモジュールの構成情報に記憶し得る如何なるソフトウェアモジュールも、本発明の実施例の保護範囲に入る。
【0056】
以下に、本発明の実施例に従ってデータをフラッシュメモリ装置に書き込む方法の手順を紹介する。本発明のこの実施例においてデータをフラッシュメモリ装置に書き込む方法は、図1に示す記憶システム、図2に示すコントローラ11、並びに図3a及び図3bに示すフラッシュメモリ装置(例えば、SSD)に適用されてもよい。フラッシュメモリ装置はブロックを含み、ブロックは、少なくとも1つのページが損傷ページである複数のページを含む。図4に示すように、この方法は以下のステップを含む。
【0057】
ステップS101:フラッシュメモリ装置22は、ブロックの容量情報についての統計を収集する。
【0058】
具体的に、プライマリコントローラ220は、FTLを使用することによりブロックの損傷ページについての統計を収集し、統計結果をFTLの構成情報に保存してもよい。
【0059】
ここで、ブロックの容量情報は、SSDの1つのblockの容量情報を示してもよく、SSDの複数又は全てのblockの容量情報を示してもよい。説明を容易にするために、1つのblockが本発明のこの実施例の説明の例として使用される。
【0060】
本発明のこの実施例におけるブロックの容量情報は、プライマリコントローラ220又はコントローラ11により、ブロックの有効容量を取得するために使用されてもよい。
【0061】
任意選択で、ブロックの容量情報は、blockに含まれる損傷ページの数を含んでもよい。プライマリコントローラ220が統計の収集を通じてblockに含まれる損傷ページの数を取得した場合、ブロックの有効容量は、ブロックの標準容量から損傷ページの容量を減算したものに等しい。損傷ページの容量は、損傷ページの数と損傷ページのサイズとの積に等しい。
【0062】
任意選択で、ブロックの容量情報は、blockに含まれる損傷ページの容量を含んでもよい。
【0063】
任意選択で、ブロックの容量情報は、ブロックの有効容量でもよい。
【0064】
任意選択で、ブロックの容量情報は、ブロックの容量フラグでもよく、ブロックの有効容量を取得するために使用される他の情報でもよい。本発明のこの実施例は、ブロックの容量情報の形式及び内容に限定を課さない。
【0065】
ステップS102:フラッシュメモリ装置22は、ブロックの容量情報をコントローラ11に送信する。
【0066】
具体的に、フラッシュメモリ装置22のプライマリコントローラ220は、コントローラ11の通信インタフェース228を通じてブロックの容量情報をコントローラ11のプロセッサ118に送信してもよい。
【0067】
1つの任意選択の実現方式は、コントローラ11が問い合わせコマンドをフラッシュメモリ装置22に周期的に又はリアルタイムで送信し得ることである。問い合わせコマンドは、ブロックの容量情報を問い合わせるために使用される。問い合わせコマンドを受信した後に、フラッシュメモリ装置22は、ステップS101を実行し始め、実行が完了した後にブロックの容量情報をコントローラ11に送信する。具体的に、コントローラ11のプロセッサ118は、問い合わせコマンドをフラッシュメモリ装置22に送信してもよい。
【0068】
他の任意選択の実現方式は、プライマリコントローラ220が周期的にステップS101を実行し、実行が完了した後に毎回、ブロックの容量情報をコントローラ11に送信することである。或いは、プライマリコントローラ220は、ステップS101を周期的に実行し、プライマリコントローラ220は、現在の統計結果と前の統計結果とを比較する。ブロックの容量情報が変化したことを見つけた場合、プライマリコントローラ220は、現在の統計結果をコントローラ11に送信する。本発明のこの実施例は周期の長さに限定を課さず、周期の長さは実際の用途におけるユーザ要求に従って調整されてもよい点に留意すべきである。
【0069】
ステップS103:コントローラ11は、ブロックの容量情報に従ってブロックの有効容量を取得する。ブロックの有効容量は、損傷ページの容量を含まない。
【0070】
具体的に、コントローラ11のプロセッサ118は、ブロックの容量情報に従ってブロックの有効容量を取得してもよい。
【0071】
ブロックの容量情報がblockに含まれる損傷ページの数を含む場合、コントローラ11は、損傷ページの数を損傷ページのサイズで乗算してブロックの損傷ページの容量を取得し、ブロックの予め記憶された標準容量から損傷ページの容量を減算してブロックの有効容量を取得してもよい。
【0072】
ブロックの容量情報がblockに含まれる損傷ページの容量を含む場合、コントローラ11は、ブロックの予め記憶された標準容量から損傷ページの容量を減算してブロックの有効容量を取得してもよい。
【0073】
ブロックの容量情報がブロックの有効容量である場合、コントローラ11は、ブロックの有効容量を直接的に取得してもよい。
【0074】
ブロックの容量情報がブロックの容量フラグである場合、コントローラ11は、容量フラグと、容量フラグと有効容量との対応関係とに従ってブロックの有効容量を取得してもよい。本発明のこの実施例では、ブロックの有効容量を取得するために、コントローラ11は、各ブロックの容量フラグと各ブロックの有効容量との間の対応関係をコントローラ11のメモリ122に予め記憶してもよく、各ブロックの容量フラグと他の容量情報との間の対応関係をメモリ122に予め記憶してもよい。
【0075】
ステップS104:コントローラ11は、ターゲットデータを読み取る。ターゲットデータのサイズは、ブロックの有効容量である。
【0076】
具体的に、ステップS104は、コントローラ11のプロセッサ118により実行されてもよい。プロセッサ118は、キャッシュ120からターゲットデータを読み出す。ターゲットデータのサイズは、ブロックの有効容量に等しい。ターゲットデータのサイズは、必ずしもブロックの有効容量に等しくなくてもよく、ブロックの有効容量よりわずかに小さくてもよい点に留意すべきである。
【0077】
キャッシュ120に記憶されたターゲットデータは、ホストにより送信された書き込みデータ要求で搬送された書き込まれるべきデータからのものでもよく、1つの書き込みデータ要求で搬送された書き込まれるべきデータでもよく、複数の書き込みデータで搬送された書き込まれるべきデータでもよい。
【0078】
ステップS105:コントローラ11は、ターゲットデータをフラッシュメモリ装置22に送信する。
【0079】
具体的に、プロセッサ118は、通信インタフェース128を通じて、ステップS104で読み出した書き込まれるべきデータをフラッシュメモリ装置22に送信する。1つの実現方式は、プロセッサ118が新たな書き込みデータ要求を生成することであり、新たな書き込みデータ要求は、ターゲットデータを含む。他の任意選択の実現方式は、プロセッサ118が複数の新たな書き込みデータ要求を生成することであり、複数の新たな書き込みデータ要求のそれぞれは、ターゲットデータの一部を含む。更に他の任意選択の実現方式は、プロセッサ118がホストからの書き込みデータ要求をフラッシュメモリ装置22に直接的に転送することであり、ホストからの書き込みデータ要求で搬送されるデータは、ターゲットデータである。
【0080】
ステップS106:フラッシュメモリ装置22は、ターゲットデータをブロックに書き込む。
【0081】
ターゲットデータのサイズは、ブロックの有効容量であるため、プライマリコントローラ220がターゲットデータを損傷ページを除くブロックの他のページに書き込んだ後に、blockはちょうど完全に満たされる。
【0082】
本発明のこの実施例では、フラッシュメモリ装置22は、ブロックの容量情報をコントローラ11に送信する。ブロックの容量情報は、ブロックの有効容量を取得するために使用される。コントローラ11は、ブロックの容量情報に従ってブロックの有効容量を取得し、サイズがブロックの有効容量と同じターゲットデータを読み取り、ターゲットデータをフラッシュメモリ装置22に送信してもよい。フラッシュメモリ装置22は、ターゲットデータをブロックに書き込む。本発明のこの実施例の実現方式によれば、ブロックが損傷ページを有する場合、ブロックに書き込まれたターゲットデータがデータのオーバーフローなしに最大限までブロックを満たすことが確保され得る。これにより、ブロック利用率を改善する。
【0083】
前述の実施例において、他の実現方式は、プロセッサ118によりキャッシュ120から読み取られたターゲットデータのサイズは、複数のブロックの有効容量の和でもよいことでもよい。ターゲットデータのサイズが4つのブロックの有効容量の和でもよい例が使用される。プロセッサ118は、4つの書き込みデータ要求を生成してもよい。書き込みデータ要求のそれぞれで搬送されるターゲットデータは、4つのブロックの中の1つのブロックの有効容量に等しい。次に、プロセッサ118は、生成された4つの書き込みデータ要求をプライマリコントローラ220に送信し、プライマリコントローラ220は、生成された4つの書き込みデータ要求を4つのチャネルのblockに書き込む。この実現方式によれば、書き込みデータ要求は、フラッシュメモリ装置22のチャネルで並行して実行されてもよい。これにより、データを書き込む際の効率を改善する。更に、本発明のこの実施例では、複数の書き込みデータ要求の並行処理は、1つのチャネル上の複数の並行ユニットで実現されてもよい。
【0084】
以下に、本発明の実施例に従ってデータをフラッシュメモリ装置に書き込む他の方法の手順を紹介する。この方法は、図1に示す記憶システム、図2に示すコントローラ11、並びに図3a及び図3bに示すフラッシュメモリ装置(例えば、SSD)に適用されてもよい。フラッシュメモリ装置はブロックを含み、ブロックは、少なくとも1つのページが損傷ページである複数のページを含む。図5に示すように、この方法は以下のステップを含む。
【0085】
ステップS201:ステップS201は図4に示す実施例のステップS101と同じであり、ステップS101の説明に参照が行われてもよい。
【0086】
ステップS202:ステップS202は図4に示す実施例のステップS102と同じであり、ステップS102の説明に参照が行われてもよい。
【0087】
ステップS203:プロセッサ118は、複数の書き込みデータ要求を受信する。
【0088】
プロセッサ118は、ホスト又は他のデバイスから複数の書き込みデータ要求を受信してもよい。書き込みデータ要求のそれぞれは、フラッシュメモリ装置22に書き込まれるべきデータ(略して、書き込まれるべきデータ)を搬送する。
【0089】
ステップS203とステップS201又はステップS202との間に順序は存在せず、ステップS203はステップS201及びステップS202の前に実行されてもよく、ステップS201及びステップS202の後に実行されてもよく、ステップS201及びステップS202と同時に実行されてもよい点に留意すべきである。
【0090】
ステップS204:プロセッサ118は、受信した複数の書き込みデータ要求をキャッシュ120に書き込む。
【0091】
書き込みデータ要求のそれぞれが書き込まれるべきデータを搬送するため、書き込まれるべきデータもキャッシュ120に記憶される。
【0092】
ステップS205:ステップS205は図4に示す実施例のステップS103と同じであり、ステップS103の説明に参照が行われてもよい。
【0093】
ステップS206:プロセッサ118は、キャッシュ120に記憶された書き込まれるべきデータのサイズがブロックの有効容量に到達したか否かを決定する。キャッシュ120に記憶された書き込まれるべきデータのサイズがブロックの有効容量に到達した場合、ステップS207を実行する。キャッシュ120に記憶された書き込まれるべきデータのサイズがブロックの有効容量に到達していない場合、ステップS203を実行する。
【0094】
予め設定された条件が満たされた場合、プロセッサ118は、複数の書き込みデータ要求で搬送されてキャッシュ120に記憶された書き込まれるべきデータのサイズがブロックの有効容量に到達したか否かを決定してもよい。ここでの予め設定された条件は、予め設定された期間が開始した時点(例えば、タイマーによるトリガー)でもよく、他のトリガー条件でもよく、ここでは限定されない。
【0095】
複数の書き込みデータ要求で搬送されてキャッシュ120に記憶された書き込まれるべきデータのサイズがブロックの有効容量に到達していない場合、プロセッサ118は、キャッシュ120内の書き込みデータ要求を処理する代わりに、ある期間だけ一時的に待機してもよい。この期間の間に、プロセッサ118は、キャッシュ120に記憶された書き込まれるべきデータのサイズがブロックの有効容量に到達するまで、ホストから書き込みデータ要求を受信し続けてもよい。
【0096】
ステップS207:プロセッサ118は、キャッシュ120から、複数の書き込みデータ要求で搬送されたターゲットデータを読み取る。
【0097】
複数の書き込みデータ要求で搬送されてキャッシュ120に記憶された書き込まれるべきデータのサイズがブロックの有効容量に到達した場合、プロセッサ118は、キャッシュ120から、複数の書き込みデータ要求で搬送された書き込まれるべきデータを読み取ってもよい。複数の書き込みデータ要求で搬送されてキャッシュ120に記憶された書き込まれるべきデータのサイズがブロックの有効容量に到達した場合、この時点での複数の書き込みデータ要求で搬送されてキャッシュ120に記憶された書き込まれるべきデータが、図4に示す実施例のステップS104〜ステップS106におけるターゲットデータであることを認識し得る。
【0098】
ステップS208:ステップS208は図4に示す実施例のステップS105と同じであり、ステップS105の説明に参照が行われてもよい。
【0099】
ステップS209:ステップS209は図4に示す実施例のステップS106と同じであり、ステップS106の説明に参照が行われてもよい。
【0100】
本発明のこの実施例では、フラッシュメモリ装置22は、ブロックの容量情報をコントローラ11に送信する。ブロックの容量情報は、ブロックの有効容量を取得するために使用される。コントローラ11は、ブロックの容量情報に従ってブロックの有効容量を取得し、サイズがブロックの有効容量と同じターゲットデータを読み取り、ターゲットデータをフラッシュメモリ装置22に送信してもよい。フラッシュメモリ装置22は、ターゲットデータをブロックに書き込む。本発明のこの実施例の実現方式によれば、ブロックが損傷ページを有する場合、ブロックに書き込まれたターゲットデータがデータのオーバーフローなしに最大限までブロックを満たすことが確保され得る。これにより、ブロック利用率を改善する。
【0101】
以下に、本発明の実施例に従ってデータをフラッシュメモリ装置に書き込む更に他の方法の手順を紹介する。この方法は、図1に示す記憶システム、図2に示すコントローラ11、並びに図3a及び図3bに示すフラッシュメモリ装置(例えば、SSD)に適用されてもよい。フラッシュメモリ装置はブロックを含み、ブロックは、少なくとも1つのページが損傷ページである複数のページを含む。図6に示すように、この方法は以下のステップを含む。
【0102】
ステップS301:ステップS301は図4に示す実施例のステップS101と同じであり、ステップS101の説明に参照が行われてもよい。
【0103】
ステップS302:ステップS302は図4に示す実施例のステップS102と同じであり、ステップS102の説明に参照が行われてもよい。
【0104】
ステップS303:ステップS303は図5に示す実施例のステップS203と同じであり、ステップS203の説明に参照が行われてもよい。
【0105】
ステップS304:ステップS304は図5に示す実施例のステップS204と同じであり、ステップS204の説明に参照が行われてもよい。
【0106】
ステップS305:ステップS305は図5に示す実施例のステップS205と同じであり、ステップS205の説明に参照が行われてもよい。
【0107】
ステップS306:プロセッサ118は、キャッシュ120に記憶された書き込まれるべきデータのサイズがブロックの有効容量より大きいことを決定する。
【0108】
予め設定された条件が満たされた場合、プロセッサ118は、複数の書き込みデータ要求で搬送されてキャッシュ120に記憶された書き込まれるべきデータのサイズがブロックの有効容量より大きいことを決定してもよい。ここでの予め設定された条件は、予め設定された期間になったこと(例えば、タイマーによるトリガー)でもよく、他のトリガー条件でもよく、ここでは限定されない。
【0109】
ステップS307:プロセッサ118は、キャッシュ120から書き込まれるべきデータの一部を読み取る。書き込まれるべきデータの一部のサイズは、ブロックの有効容量である。
【0110】
複数の書き込みデータ要求で搬送された書き込まれるべきデータのサイズがブロックの有効容量より大きい場合、プロセッサ118は、キャッシュ120から書き込まれるべきデータの一部を読み取ってもよい。書き込まれるべきデータの一部のサイズは、ブロックの有効容量である。この場合、書き込まれるべきデータの一部は、図4に示す実施例のステップS104〜ステップS106のターゲットデータである。
【0111】
ステップS308:ステップS308は図4に示す実施例のステップS105と同じであり、ステップS105の説明に参照が行われてもよい。
【0112】
ステップS309:ステップS309は図4に示す実施例のステップS106と同じであり、ステップS106の説明に参照が行われてもよい。
【0113】
本発明のこの実施例では、フラッシュメモリ装置22は、ブロックの容量情報をコントローラ11に送信する。ブロックの容量情報は、ブロックの有効容量を取得するために使用される。コントローラ11は、ブロックの容量情報に従ってブロックの有効容量を取得し、サイズがブロックの有効容量と同じターゲットデータを読み取り、ターゲットデータをフラッシュメモリ装置22に送信してもよい。フラッシュメモリ装置22は、ターゲットデータをブロックに書き込む。本発明のこの実施例の実現方式によれば、ブロックが損傷ページを有する場合、ブロックに書き込まれたターゲットデータがデータのオーバーフローなしに最大限までブロックを満たすことが確保され得る。これにより、ブロック利用率を改善する。
【0114】
更に、図4図6に示す前述の実施例のうちいずれか1つにおいて、ターゲットデータが書き込まれるブロック内の複数のpageのアドレスは、物理アドレスである。プライマリコントローラ220がターゲットデータをブロックに書き込んだ後に、プライマリコントローラ220は、ターゲットデータの論理ブロックアドレス(Logical Block Address、LBA)のセグメントと、物理アドレスとの間の対応関係を設定して記憶してもよい。これは、後にコントローラ11によりターゲットデータを読み取るために使用される。
【0115】
図4図6に示す実施例のいずれか1つから、ターゲットデータは、1つのblockに記憶されることが分かる。従って、その物理アドレスは、連続的な物理空間のセグメントである。ターゲットデータが後に他のデータに変更された場合、blockに記憶されたターゲットデータは、無効なデータになり、消去動作は、有効なデータをマイグレーションすることなくblockで直接的に実行されてもよい。これにより、ガベージコレクションの効率を改善する。
【0116】
更に、コントローラ11がターゲットデータに対応するLBAのセグメントでデフラグメントを実行する必要がある場合、デフラグメントの技術的原理に従って、コントローラ11は、データ・マイグレーション・コマンドをプライマリコントローラ220に送信してもよい。データ・マイグレーション・コマンドは、LBAを搬送する。データ・マイグレーション・コマンドを受信した後に、プライマリコントローラ220は、LBAと物理アドレスとの対応関係に従って、blockのpageからターゲットデータを取得し、ターゲットデータを他のblockにマイグレーションし、デフラグメント動作を完了してもよい。デフラグメント動作が完了した後で、blockはそれに従ってきれいに消去され、新たなデータを受信してもよい。ガベージコレクションは、blockで再び実行される必要はない。ガベージコレクションの効率は、図4図6に示す実施例のいずれか1つとデフラグメント動作とを組み合わせることにより更に改善され得ることが分かる。
【0117】
当業者は、本発明の各態様又は各態様の可能な実現方式がシステム、方法又はコンピュータ・プログラム・プロダクトとして具体的に実現されてもよいことを認識し得る。従って、本発明の各態様又は各態様の可能な実現方式は、ハードウェアのみの実施例、ソフトウェアのみの実施例(ファームウェア、常駐ソフトウェア等を含む)、又はソフトウェアとハードウェアとの組み合わせの実施例の形式を使用してもよい。これらは、ここでは一律に「回路」、「モジュール」又は「システム」と呼ばれる。更に、本発明の各態様又は各態様の可能な実現方式は、コンピュータ・プログラム・プロダクトの形式になってもよい。コンピュータ・プログラム・プロダクトは、コンピュータ読み取り可能な媒体に記憶されたコンピュータ読み取り可能なプログラムコードを示す。
【0118】
コンピュータ読み取り可能な媒体は、コンピュータ読み取り可能な信号媒体又はコンピュータ読み取り可能な記憶媒体でもよい。コンピュータ読み取り可能な記憶媒体は、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROM又はフラッシュメモリ)、光ファイバ及びコンパクトディスク読み取り専用メモリ(CD-ROM)のような、電子、磁気、光学、電磁気、赤外線若しくは半導体システム、デバイス若しくは装置、又はこれらのいずれか適切な組み合わせを含み、これらに限定されない。
【0119】
コンピュータのプロセッサは、コンピュータ読み取り可能な媒体に記憶されたコンピュータ読み取り可能なプログラムコードを読み取り、これにより、プロセッサは、フローチャートの各ステップ又はステップの組み合わせで指定された機能及び動作を実行することができ、ブロック図の各ブロック又はブロックの組み合わせで指定された機能及び動作を実現するように装置が生成される。
【0120】
全てのコンピュータ読み取り可能なプログラムコードは、ユーザコンピュータで実行されてもよく、いくつかがスタンドアローンのソフトウェアパッケージとしてユーザコンピュータで実行されてもよく、いくつかがリモートコンピュータで実行されつつ、いくつかがユーザのコンピュータで実行されてもよい。或いは、全てのコードがリモートコンピュータ又はサーバで実行されてもよい。また、或る別の実現対策では、フローチャートの各ステップ又はブロック図の各ブロックで指定された機能は、図示の順序で行われなくてもよい点に留意すべきである。例えば、関与する機能に依存する図面における2つの連続するステップ又は2つのブロックは、実際に実質的に同時に実行されてもよく、これらのブロックは場合によって逆の順序で実行されてもよい。
【0121】
当業者は、この明細書に開示された実施例に記載の例と組み合わせて、ユニット及びアルゴリズムのステップが電子ハードウェア又はコンピュータソフトウェアと電子ハードウェアとの組み合わせにより実現されてもよいことを認識し得る。機能がハードウェアにより実行されるかソフトウェアにより実行されるかは、技術的対策の特定の用途及び設計上の制約条件に依存する。当業者は、特定の用途毎に記載の機能を実現するために異なる方法を使用してもよいが、この実現は、本発明の範囲を超えるものとして考えられるべきではない。
【0122】
前述の説明は、本発明の単に特定の実現方式に過ぎず、本発明の保護範囲を限定することを意図するものではない。本発明に開示された技術的範囲内で当業者により容易に把握される如何なる変更又は置換も、本発明の保護範囲内に入るものとする。従って、本発明の保護範囲は、特許請求の範囲の保護範囲に従うものとする。
図3a
図1
図2
図3b
図4
図5
図6