JP5994647B2 - データ記録装置、及びデータ記録方法 - Google Patents

データ記録装置、及びデータ記録方法 Download PDF

Info

Publication number
JP5994647B2
JP5994647B2 JP2013003274A JP2013003274A JP5994647B2 JP 5994647 B2 JP5994647 B2 JP 5994647B2 JP 2013003274 A JP2013003274 A JP 2013003274A JP 2013003274 A JP2013003274 A JP 2013003274A JP 5994647 B2 JP5994647 B2 JP 5994647B2
Authority
JP
Japan
Prior art keywords
parallel
block management
block
empty
management unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013003274A
Other languages
English (en)
Other versions
JP2014134998A (ja
Inventor
寿好 黒澤
寿好 黒澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2013003274A priority Critical patent/JP5994647B2/ja
Publication of JP2014134998A publication Critical patent/JP2014134998A/ja
Application granted granted Critical
Publication of JP5994647B2 publication Critical patent/JP5994647B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

同一バスに接続された複数の記憶媒体に並列書き込みするデータ記録装置に関する。
例えば、人工衛星は、地上局と通信できない範囲を飛行中に、観測機器が生成した観測データを人工衛星内に保持しておく必要があるため、データ記録装置を搭載している。地上局と通信できない範囲とは、例えば、地上局の位置に対して地球の裏側である。観測機器は観測データを機器内部に蓄えることはできないため、データ記録装置との間でデータ伝送のためのフロー制御を実現することは困難である。また、観測機器の高精細化に伴い、データ記録装置に入力される観測データはサイズが大きくなり、単位時間当たりのデータ量も増大している。しかし、宇宙環境で正常動作可能なメモリは限られているため、データ記録装置は大容量のバッファメモリを保持することができない。また、真空であるために放熱手段が乏しく、電子機器を高速動作させることができない、という制約もある。
そこで、データ記録装置には、NANDフラッシュメモリのような大容量かつ低消費電力な不揮発メモリが搭載されつつある。しかし、NANDフラッシュメモリは、データの読出しに比べ、データの書込みに時間を要する。そのため、観測機器から伝送される単位時間当たりのデータ量の増大に伴い、1つのデバイスチップではデータ記録時間が間に合わなくなっている。そこで、同一のメモリバスに複数のNANDフラッシュメモリを接続し、その中の複数個のNANDフラッシュメモリに対して並列に書込みをすることにより、データ記録性能の向上を図っている。
一方、ファイルシステムは、NANDフラッシュメモリに対してデータの書込み及び読出しを行う。ファイルシステムは、ファイルを削除する際にファイル管理情報の上でファイルを削除済みとするだけで、NANDフラッシュメモリに書き込まれている実際のデータそのものを消去しない。NANDフラッシュメモリは、不要なデータであることを認識しないまま処理を行うため、書込み速度が低下したり、書換え回数が増加したりしていた。
特許文献1では、ファイルシステムとNANDフラッシュメモリはデータの管理単位を互いに認識するようにしている。よって、データの書込みの際に、ファイルシステムがNANDフラッシュメモリに対して破棄してよいデータを通知し、不要なデータのコピー処理を抑制することにより、書込み速度を向上させていた。
国際公開第2009/001514号
しかしながら、複数個のNANDフラッシュメモリに対して並列に書込みをする場合、NANDフラッシュメモリ内の空きブロックを並列書込み数分探索する必要があり、処理時間が増加する。特許文献1においても、複数個のNANDフラッシュメモリに対し並列に書込みをする場合には処理時間が増加する。したがって、データの書込み中に次のデータの書込みが要求されると、十分なバッファメモリがなければデータの欠損を生じるという問題があった。
本発明は上記のような問題点を解決するためになされたもので、複数個のNANDフラッシュメモリに対して並列に書込みをする場合に書込みにかかる処理時間を短縮し、データの欠損を生じないデータ記録装置を得ることを目的としている。
同一バス上に接続された複数の記録媒体にデータを並列に書込む書込み機能部と、複数の記録媒体をそれぞれ分割した複数のブロックについてデータ書込み可能な空きブロックかどうかを空きブロック管理テーブルに登録する空きブロック管理部と、空きブロック管理部から通知された空きブロックについて並列書込み数分を1つの組として並列書込み用空きブロック管理テーブルに登録し、書込み機能部からの要求に応じて並列書込み用空きブロック管理テーブルから並列書込み数分の空きブロックを取得して、通知する並列書込み用空きブロック管理部と、を備えた。
本発明によれば、複数個のNANDフラッシュメモリに対し並列に書込みをする場合に書込みにかかる処理時間を短縮し、データの欠損を生じないようにすることができる。
NANDフラッシュメモリのデバイスチップの基本的な構成と接続形態を示すブロック図。 NANDフラッシュメモリの基本的な構成を示すブロック図。 データ記録装置からデバイスチップへのデータの書込み処理の順序を示す図。 データ記録装置に複数のデバイスチップを接続した形態を示すブロック図。 データ記録装置から複数のデバイスチップへのデータの書込み処理の順序を示す図。 実施の形態1に係るデータ記録装置の構成を示すブロック図。 実施の形態1に係る並列書込み用空きブロック管理テーブルを示す図。 実施の形態1に係る空きブロック管理部及び並列書込み用空きブロック管理部における処理の流れを示すフローチャート。 実施の形態1に係る並列書込み用空きブロック管理部における並列書込み用空きブロック管理テーブルの探索処理の流れを示すフローチャート。 実施の形態1に係る並列書込み用空きブロック管理テーブルを示す図。 実施の形態2に係る並列書込み用空きブロック管理テーブルを示す図。 実施の形態2に係る並列書込み用空きブロック管理部における並列書込み用空きブロック管理テーブルの探索処理の流れを示すフローチャート。 実施の形態2に係る並列書込み用空きブロック管理テーブルを示す図。 実施の形態3に係る並列書込み用空きブロック管理テーブルを示す図。 実施の形態3に係る空きブロック管理部及び並列書込み用空きブロック管理部における処理の流れを示すフローチャート。 実施の形態3に係る並列書込み用空きブロック管理部における並列書込み用空きブロック管理テーブルの探索処理の流れを示すフローチャート。 実施の形態3に係る並列書込み用空きブロック管理テーブルを示す図。
実施の形態1.
まず、NANDフラッシュメモリの基本的な構造や制御方法について説明する。
図1は、NANDフラッシュメモリのデバイスチップ11の基本的な構成と接続形態を示すブロック図である。デバイスチップ11は、メモリバス12を介してデータ記録装置13と接続している。データ記録装置13は、デバイスチップ11にデータを記録する。また、データ記録装置13は、デバイスチップ11からデータを読出し、データが不要な場合は消去する。
デバイスチップ11は、メモリインタフェース部14、コマンド処理部15、ページバッファ16、NANDフラッシュメモリ17から構成されている。メモリインタフェース部14は、メモリバス12を介してデータ記録装置13と接続し、入出力のインタフェースとなっている。コマンド処理部15は、コマンドを処理する。ページバッファ16は、データを一時的に保持する。NANDフラッシュメモリ17は、実際にデータを保持するメモリ素子が配列されている。
メモリインタフェース部14は、データ記録装置13からコマンドが入力されるとコマンドをコマンド処理部15に出力する。コマンドは、書込み、消去又は読込みである。コマンド処理部15は、入力されたコマンドの内容に応じてページバッファ16を制御する。これにより、ページバッファ16とNANDフラッシュメモリ17との間のデータ転送が制御される。
コマンドが書込みの場合、メモリインタフェース部14はコマンドをコマンド処理部15に出力し、コマンドに付加されているデータをページバッファ16に出力する。ページバッファ16は、データを一時保存した後、コマンド処理部15からの指示により、NANDフラッシュメモリ17にデータを書込む。コマンドが消去の場合、ページバッファ16は、コマンド処理部15からの指示により、NANDフラッシュメモリ17からデータを消去する。
コマンドが読込みの場合、ページバッファ16はコマンド処理部15からの指示により、NANDフラッシュメモリ17からデータを読出す。ページバッファ16は、データを一時保存した後、メモリインタフェース部14に出力する。メモリインタフェース部14は、ページバッファ16から入力されたデータをメモリバス12へ出力する。
図2は、NANDフラッシュメモリ17の基本的な構成を示すブロック図である。NANDフラッシュメモリ17は、複数のブロック21a〜jで構成されている。ブロック21a〜jは、それぞれ複数のページから構成されている。例えば、ブロック21aはk個のページ22a1〜akから構成されている。
現在、ブロックの一般的な記録容量は64〜256キロバイト程度である。また、ページの一般的な記録容量は1〜4キロバイト程度である。データの書込み及び読出しはページ単位で行われる。データの消去は、ブロック単位で行われる。NANDフラッシュメモリ17では、新しいデータを記録する場合、すでに書込まれているデータを消去する必要がある。
図3は、データ記録装置13からデバイスチップ11へのデータの書込み処理の順序を示す図である。図3において、左から右へ時間が進み、31〜34はそれぞれ処理を示す。31〜34の処理の長さは時間を表す。ただし、処理にかかる時間は一例である。処理は、第1コマンド送信31、書込みデータ転送32、第2コマンド送信33、チップ内書込み処理34の順に行われる。
最初に、データ記録装置13はデバイスチップ11に第1コマンド31を送信する。通常、第1コマンド31には書込み先であるデバイスチップ11のNANDフラッシュメモリ17のブロック番号が含まれている。次にデータ記録装置13はデバイスチップ11に1ページ分のデータを転送する。デバイスチップ11は、転送されたデータをページバッファ16に一時保存する。
次に、データ記録装置13はデバイスチップ11に第2コマンド33を送信する。デバイスチップ11は、第2コマンド33を受信したことを契機としてチップ内書込み処理34を行う。デバイスチップ11は、ページバッファ16に保存されたデータをNANDフラッシュメモリ17に転送し、書込む。データは、第1コマンドで指定されたブロックに書込まれる。データ記録装置13は、デバイスチップ11におけるチップ内書込み処理34の完了を待って、別の処理を開始する必要がある。
図4は、データ記録装置13に複数のデバイスチップを接続した形態を示すブロック図である。データ記録装置13は、メモリバス41を介して複数のデバイスチップ11a〜nと接続している。
図5は、データ記録装置13から複数のデバイスチップ11a〜bへのデータの書込み処理の順序を示す図である。図5において、左から右へ時間が進む。31a〜34aはデバイスチップ11aに対する処理を示す。31b〜34bはデバイスチップ11bに対する処理を示す。
デバイスチップ11aに対するチップ内書込み処理34aが行われている間、メモリバス41は空き状態となる。データ記録装置13は、この間に同一のメモリバス41に接続されたデバイスチップ11bに対する処理31b〜33bを実施する。このようにデバイスチップ11aに対する処理とデバイスチップ11bに対する処理を並列に行うことにより、全体として書込み性能を向上させることができる。
例えば、デバイスチップ11aへの第1コマンド送信31aから第2コマンド送信33aにかかる時間、デバイスチップ11aに対するチップ内書込み処理34aにかかる時間、デバイスチップ11bへの第1コマンド送信31bから第2コマンド送信33bにかかる時間、及び、デバイスチップ11bに対するチップ内書込み処理34bにかかる時間が等しい場合、データ記録装置13は、並列処理を行わない場合の3/4の時間でデータを書込むことができる。なお、通常は、第1コマンド送信31a〜bから第2コマンド送信33a〜bまでにかかる時間よりも、チップ内書込み処理34a〜bにかかる時間のほうが長い。
以下に、本実施の形態について説明する。
図6は、実施の形態1に係るデータ記録装置60の構成を示すブロック図である。データ記録装置60はメモリバス61を介して複数のNANDフラッシュメモリのデバイスチップ11a〜nに接続している。データ記録装置60は、コマンドインタフェース部62、書込み機能部63、消去機能部64、読出し機能部65、空きブロック管理部66、並列書込み用空きブロック管理部67、アドレス変換部68、及びメモリインタフェース部69から構成されている。
コマンドインタフェース部62は、データ記録装置60内の図示しない上位システムからのコマンドを書込み機能部63、消去機能部64又は読出し機能部65に振り分ける。また、コマンドインタフェース部62は、書込み機能部63、消去機能部64、又は読出し機能部65の処理結果を上位システムへ出力する。
書込み機能部63は、デバイスチップ11a〜nにデータの書込みを行う。消去機能部64は、デバイスチップ11a〜nに保持されているデータの消去を行う。読出し機能部65は、デバイスチップ11a〜nに保持されているデータの読出しを行う。
空きブロック管理部66は、デバイスチップ11a〜nのNANDフラッシュメモリの全てのブロックの状態を管理している。ブロックの状態とは、データ書込み済みで使用中又はデータ消去済みで空きのどちらかである。並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブルを保持し、並列書き込み数分のブロックを1つの組にして空きブロックを管理する。アドレス変換部68は、上位システムが認識する論理アドレスと、デバイスチップ11a〜nのNANDフラッシュメモリのブロック番号との対応付けを保存している。
メモリインタフェース部69は、書込み機能部63、消去機能部64又は読出し機能部65からのコマンドをデバイスチップ11a〜nに出力する。また、メモリインタフェース部69は、NANDフラッシュメモリのデバイスチップ11a〜nから入力される処理結果を書込み機能部63、消去機能部64又は読出し機能部65に出力する。
次に、データ書込みの動作について説明する。
書込み機能部63は、コマンドインタフェース部62から書込みコマンドを受信すると、並列書込み用空きブロック管理部67に並列書込み数分の空きブロックを要求する。並列書込み用空きブロック管理部67は並列書込み用空きブロック管理テーブルから並列書込み数分の空きブロックの番号を取得し、書込み機能部63に通知する。
書込み機能部63は、書込みデータを並列書込み数分に分割し、それぞれ空きブロック番号とともにメモリインタフェース部69に書込みコマンドを通知する。メモリインタフェース部69は、並列書込み数分のデバイスチップそれぞれに書込みコマンドを送信する。インタフェース部69は、デバイスチップへの書込み処理中でメモリバスの空いているときは他のデバイスチップへ書き込みコマンドを送信するように制御し、複数のデバイスチップへの書込みを並列に行う。デバイスチップは、指定されたNANDフラッシュメモリのブロックに書込み処理を行い、処理が完了するとメモリインタフェース部69に通知する。
なお、1つのデバイスチップへ書込みする場合、書込み機能部63は、空きブロック管理部66に空きブロックを要求し、取得する。書込み機能部63は、空きブロック番号とともにメモリインタフェース部69に書込みコマンドを通知する。メモリインタフェース部69は、デバイスチップに書込みコマンドを送信する。複数のデバイスチップに並列書込みするのか、あるいは1つのデバイスチップに書込みするのかは、上位システムからの指示に従って処理を行ってもよいし、書込み機能部63がどちらの処理を行うか判断してもよい。
メモリインタフェース部69は、デバイスチップへの書込み処理が完了したことを書込み機能部63に通知する。書込み機能部63は、書込みが行われたデバイスチップのブロック番号と上位システムが認識している論理アドレスをアドレス変換部68へ通知する。アドレス変換部68は、通知されたデバイスチップのブロック番号と論理アドレスを対応付けて保存する。書込み機能部63は、書込み処理が完了したことをコマンドインタフェース部62に通知する。コマンドインタフェース部62は、書込み処理が完了したことを上位システムに通知し、書込み処理が完了する。
次に、データ消去の動作について説明する。
消去機能部64は、コマンドインタフェース部62から消去コマンドを受信すると、指定された論理アドレスをアドレス変換部68に通知する。アドレス変換部68は指定された論理アドレスに対応するデバイスチップのブロック番号を消去機能部64に通知する。消去機能部64は、デバイスチップのブロック番号を指定して消去コマンドをメモリインタフェース部69に送信する。
メモリインタフェース部69は消去コマンドをデバイスチップに送信する。消去コマンドを受信したデバイスチップは、指定されたブロックのデータを消去し、処理が完了するとメモリインタフェース部69へ通知する。メモリインタフェース部69は、デバイスチップの消去処理が完了したことを消去機能部64に通知する。
消去機能部64は、当該ブロックと論理アドレスとの対応付けを削除するようにアドレス変換部68に通知する。また、消去機能部64は、空きブロック管理部66に当該ブロックが空きであることを通知する。空きブロック管理部66は消去処理が完了した空きブロックを並列書込み用空きブロック管理部67に通知する。消去機能部64は、消去処理が完了したことをコマンドインタフェース部62に通知する。コマンドインタフェース部62は、消去処理が完了したことを上位システムに通知する。
次に、データ読出しの動作について説明する。
読出し機能部65は、コマンドインタフェース部62から読出しコマンドを受信すると、指定された論理アドレスをアドレス変換部68に通知する。アドレス変換部68は指定された論理アドレスをデバイスチップのブロック番号に変換し、読出し機能部65に通知する。読出し機能部65は、デバイスチップのブロック番号を指定して読出しコマンドをメモリインタフェース部69に送信する。
メモリインタフェース部69は読出しコマンドをデバイスチップに送信する。読出しコマンドを受信したデバイスチップは、指定されたブロックのデータを読出し、メモリインタフェース部69へ通知する。メモリインタフェース部69は、デバイスチップの読出し処理が完了したことを読出し機能部65に通知する。読出し機能部65は、読出し処理が完了したことをコマンドインタフェース部62に通知する。コマンドインタフェース部62は、読出したデータを上位システムに通知する。
次に、空きブロック管理部66及び並列書込み用空きブロック管理部67における動作について説明する。
図7は、実施の形態1に係る並列書込み用空きブロック管理テーブル71を示す図である。並列書込み用空きブロック管理テーブル71は、並列書込み数分のデバイスチップとそのブロック番号を1つの組として1以上の組を保存するテーブルである。並列書込み用空きブロック管理テーブル71の左端の番号72は、組の番号を示すインデックスである。各インデックスには、並列書込み数分のエントリが保存される。本実施の形態においては、並列書込み数が3のため、3個のエントリ73a〜cが保存されている。各エントリには、デバイスチップ番号74a〜cとブロック番号75a〜cが保存されている。デバイスチップ番号74a〜cは、デバイスチップを識別する識別子、ブロック番号75a〜cはブロックを識別する識別子である。
並列書込み用空きブロック管理テーブル71において、デバイスチップ番号74b〜c及びブロック番号75b〜cが「−」となっているのは、未登録であることを示す。例えば、インデックス7のエントリ1のデバイスチップ番号は1、ブロック番号は50が登録され、エントリ2及びエントリ3のデバイスチップ番号及びブロック番号は未登録である。なお、同じインデックスのエントリに同じデバイスチップの異なるブロック番号を登録することはできない。
図8は、実施の形態1に係る空きブロック管理部66及び並列書込み用空きブロック管理部67における処理の流れを示すフローチャートである。
空きブロック管理部66は、消去機能部64から消去を完了したブロックが通知されるとステップS81より処理を開始する。ステップS81において、空きブロック管理部66は、当該ブロックを並列書込み用空きブロック管理部67に通知し、ステップS82へ進む。
ステップS82において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル71に当該ブロックを登録することができる空きエントリがあるか探索する。ステップS82の詳細は、後述する。処理は、ステップS83へ進む。ステップS83において、並列書込み用空きブロック管理部67は、当該ブロックを並列書込み用空きブロック管理テーブル71に登録することができる場合、ステップS84へ進む。
ステップS84において、並列書込み用空きブロック管理部67は、当該ブロックを並列書込み用空きブロック管理テーブル71に登録し、ステップS85へ進む。ステップS85において、並列書込み用空きブロック管理部67は、当該ブロックを並列書込み用として使用するため、「使用」を空きブロック管理部66に通知する。ステップS87において、空きブロック管理部66は、ブロック管理テーブルにおいて当該ブロックを使用中として登録し、処理を終了する。
ステップS83において、並列書込み用空きブロック管理部67は、当該ブロックを並列書込み用空きブロック管理テーブル71に登録することができない場合、ステップS86へ進む。ステップS86において、並列書込み用空きブロック管理部67は、当該ブロックを並列書込み用として使用しないため、「不使用」を空きブロック管理部66に通知する。ステップS88において、空きブロック管理部66は、空きブロック管理テーブルにおいて当該ブロックを空きとして登録し、処理を終了する。
図9は、実施の形態1に係る並列書込み用空きブロック管理部67における並列書込み用空きブロック管理テーブル71の探索処理の流れを示すフローチャートである。図9のフローチャートは、図8のステップS82の処理の詳細を示す。並列書込み用空きブロック管理部67は、空きブロック管理部66から空きブロックを通知されると、ステップS91より処理を開始する。
通知された空きブロックがデバイスチップ#2のブロック番号80の場合の処理を説明する。ステップS91において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル71のインデックス1を参照する。並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル71のインデックス1には空きエントリがないため、処理はステップS93へ進む。ステップS93において、並列書込み用空きブロック管理部67は、全てのインデックスを探索済みではないため、ステップS94へ進む。
ステップS94において、並列書込み用空きブロック管理部67は、参照するインデックスをインクリメントし、ステップS91へ進む。ステップS91において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル71のインデックス2を参照する。インデックス2からインデックス5まで空きエントリがないため、並列書込み用空きブロック管理部67は、インデックス1の場合と同様にステップS91、ステップS93及びステップS94の処理を繰り返す。
ステップS91において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル71のインデックス6を参照する。インデックス6は空きエントリがあるため、処理はステップS92へ進む。ステップS92において、デバイスチップ#2はインデックス6のエントリ2に登録されているため、処理はステップS93へ進む。ステップS93において、並列書込み用空きブロック管理部67は、全てのインデックスを探索済みではないため、ステップS94へ進む。ステップS94において、並列書込み用空きブロック管理部67は、参照するインデックスをインクリメントし、ステップS91へ進む。
ステップS91において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル71のインデックス7を参照する。インデックス7には空きエントリがあるため、処理はステップS92へ進む。ステップS92において、デバイスチップ#2はインデックス7には登録されていないため、並列書込み用空きブロック管理部67は、インデックス7のエントリ2に空きブロックを登録可能である。並列書込み用空きブロック管理部67は、処理を終了する。
図10は、実施の形態1に係る並列書込み用空きブロック管理テーブル101を示す図である。登録並列書込み用空きブロック管理テーブル101は、並列書込み用空きブロック管理テーブル71のインデックス7のエントリ2にデバイスチップ#2のブロック番号80を登録したテーブルである。図10において、網掛けで示した箇所がインデックス7のエントリ2である。デバイスチップ#2のブロック番号80は、並列書込み用の空きブロックとして利用されることとなる。
次に、図9のフローチャートについて、通知された空きブロックがデバイスチップ#1のブロック番号30の場合の処理を説明する。
ステップS91において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル71のインデックス1を参照する。並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル71のインデックス1には空きエントリがないため、処理はステップS93へ進む。ステップS93において、並列書込み用空きブロック管理部67は、全てのインデックスを探索済みではないため、ステップS94へ進む。
ステップS94において、並列書込み用空きブロック管理部67は、参照するインデックスをインクリメントし、ステップS91へ進む。ステップS91において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル71のインデックス2を参照する。インデックス2からインデックス5まで空きエントリがないため、並列書込み用空きブロック管理部67は、インデックス1の場合と同様にステップS91、ステップS93及びステップS94の処理を繰り返す。
ステップS91において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル71のインデックス6を参照する。インデックス6は空きエントリがあるため、処理はステップS92へ進む。ステップS92において、デバイスチップ#1はインデックス6のエントリ1に登録されているため、処理はステップS93へ進む。ステップS93において、並列書込み用空きブロック管理部67は、全てのインデックスを探索済みではないため、ステップS94へ進む。ステップS94において、並列書込み用空きブロック管理部67は、参照するインデックスをインクリメントし、ステップS91へ進む。
ステップS91において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル71のインデックス7を参照する。インデックス7には空きエントリがあるため、処理はステップS92へ進む。ステップS92において、デバイスチップ#1はインデックス7のエントリ1に登録されているため、処理はステップS93へ進む。ステップS93において、並列書込み用空きブロック管理部67は、全てのインデックスを探索済みのため、処理を終了する。
デバイスチップ#1のブロック番号30は、並列書込み用空きブロック管理テーブル71には登録されない。デバイスチップ#1のブロック番号30は、空きブロック管理部66においてブロック毎に割当てられる空きブロックとして利用されることとなる。
本実施の形態においては、並列書込み数が3の場合を示したが、並列書込み数は他の値でもよい。デバイスチップ数をNとした場合、並列書込み数はN以下の自然数である。並列書込み用空きブロック管理テーブルのエントリ数は並列書込み数と同じ値とすればよい。
また、本実施の形態においては、並列書込み用空きブロック管理テーブル71のインデックス数を7としたが、他の値でもよい。並列書込みを要する入力データの通信頻度、及び1ブロック毎の割当てに必要なブロック数との比率を考慮し、データ記録装置60が予め決めておいてもよい。また、データ記録装置60がインデックス数の上限値及び下限値を決め、並列書込みを要する入力データの通信頻度、及び1ブロック毎の割当てに必要なブロック数との比率の変化に応じて変化させてもよい。
さらに、データ記録装置60は、並列書込み数が異なる複数の並列書込み用空きブロック管理部を保持し、デバイスチップに対して異なる並列書込み数でデータの書込みをするようにしてもよい。
したがって、本実施の形態では、同一バス上に接続された複数の記録媒体にデータを並列に書込む書込み機能部63と、複数の記録媒体をそれぞれ分割した複数のブロックについてデータ書込み可能な空きブロックかどうかを空きブロック管理テーブルに登録する空きブロック管理部66と、空きブロック管理部66から通知された空きブロックについて並列書込み数分を1つの組として並列書込み用空きブロック管理テーブル71に登録し、書込み機能部63からの要求に応じて並列書込み用空きブロック管理テーブル71から並列書込み数分の空きブロックを取得して、通知する並列書込み用空きブロック管理部67と、を備え、並列書込み用空きブロック管理部67は、記録媒体の識別子とブロックを識別するブロック番号とを対応付け、並列書込み数分の異なる記録媒体の空きブロックを1つの組として並列書込み用空きブロック管理テーブル71に登録し、空きブロック管理部66より空きブロックが通知されると、並列書込み用空きブロック管理テーブル71の並列書込み数分の空きブロックが登録されていない組に当該空きブロックと同じ記録媒体のブロックが登録されていない場合、当該空きブロックを登録するので、複数個のNANDフラッシュメモリに対し並列にデータを書込む場合に処理時間を短縮し、データの欠損を生じさせないようにすることができる。
並列書込み用空きブロック管理テーブル71を1度探索すれば並列書込みに適した空きブロックの組を取出すことができるため、従来の空きブロック管理部66から1つの空きブロックを取出すのと同じ処理量で並列書込み処理を行うことができる。よって、連続する入力データを欠損なく記録することができる。
実施の形態2.
以上の実施の形態1では、並列書込み用空きブロック管理部67が並列書込み用空きブロック管理テーブルに空きエントリがあるか各インデックスの各エントリを探索するようにしたものであるが、本実施の形態においては、並列書込み用空きブロック管理テーブルに割当て済みブロック数を付与し、空きエントリがあるか探索する実施の形態を示す。
なお、本実施の形態において、並列書込み用空きブロック管理部67以外は実施の形態1と同じであるため、説明を割愛する。
本実施の形態において、メモリバス61に接続された全てのNANDフラッシュメモリのデバイスチップは5個、並列書込み数は3とする。
図11は、実施の形態2に係る並列書込み用空きブロック管理テーブル111を示す図である。112はインデックスを示す。113は、各インデックス内での割当て済みブロック数を示す。114a〜eは各デバイスチップに対応したエントリである。エントリの数は、メモリバス61に接続されたデバイスチップの個数に対応し、5個である。114aはデバイスチップ#1用のエントリを示す。114bはデバイスチップ#2用のエントリを示す。114cはデバイスチップ#3用のエントリを示す。114dはデバイスチップ#4用のエントリを示す。114eはデバイスチップ#5用のエントリを示す。
割当て済みブロック数は、各インデックスにおいてブロック番号が登録されたエントリ数を示す。割当て済みブロック数は、並列書込み数以下の自然数である。各エントリには、空きブロックの番号が登録される。ブロック番号が「−」の場合、未登録であることを示す。
図12は、実施の形態2に係る並列書込み用空きブロック管理部67における並列書込み用空きブロック管理テーブル111の探索処理の流れを示すフローチャートである。図12のフローチャートは、図8のステップS82の処理の詳細を示す。並列書込み用空きブロック管理部67は、空きブロック管理部66から空きブロックを通知されると、ステップS121より処理を開始する。
通知された空きブロックがデバイスチップ#2のブロック番号80の場合の処理を説明する。ステップS121において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル111のインデックス1を参照する。インデックス1の割当て済みブロック数は3である。並列書込み用空きブロック管理部67は、インデックス1の割当て済みブロック数が並列書込み数より小さくないため、処理はステップS123へ進む。ステップS123において、並列書込み用空きブロック管理部67は、全てのインデックスを探索済みではないため、ステップS124へ進む。
ステップS124において、並列書込み用空きブロック管理部67は、参照するインデックスをインクリメントし、ステップS121へ進む。ステップS121において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル111のインデックス2を参照する。インデックス2からインデックス5まで、割当て済みブロック数が並列書込み数より小さくないため、並列書込み用空きブロック管理部67は、インデックス1の場合と同様にステップS121、ステップS123及びステップS124の処理を繰り返す。
ステップS121において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル71のインデックス6を参照する。インデックス6の割当て済みブロック数は並列書込み数より小さいため、処理はステップS122へ進む。ステップS122において、デバイスチップ#2用のエントリ2にはすでに他のブロック番号が登録されているため、処理はステップS123へ進む。ステップS123において、並列書込み用空きブロック管理部67は、全てのインデックスを探索済みではないため、ステップS124へ進む。ステップS124において、並列書込み用空きブロック管理部67は、参照するインデックスをインクリメントし、ステップS121へ進む。
ステップS121において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル71のインデックス7を参照する。インデックス7の割当て済みブロック数は並列書込み数より小さいため、処理はステップS122へ進む。ステップS122において、デバイスチップ#2用のエントリ2は空いているため、並列書込み用空きブロック管理部67は、インデックス7のエントリ2に空きブロックを登録可能である。並列書込み用空きブロック管理部67は、処理を終了する。
図13は、実施の形態2に係る並列書込み用空きブロック管理テーブル131を示す図である。並列書込み用空きブロック管理テーブル131は、並列書込み用空きブロック管理テーブル111のインデックス7のエントリ2にデバイスチップ#2のブロック番号80が登録されたテーブルである。図13において、網掛けした箇所がインデックス7のエントリ2である。デバイスチップ#2のブロック番号80は、並列書込み用の空きブロックとして利用されることとなる。
次に、図12のフローチャートについて、通知された空きブロックがデバイスチップ#1のブロック番号30の場合の処理を説明する。
ステップS121において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル111のインデックス1を参照する。インデックス1の割当て済みブロック数は3である。並列書込み用空きブロック管理部67は、インデックス1の割当て済みブロック数が並列書込み数より小さくないため、処理はステップS123へ進む。ステップS123において、並列書込み用空きブロック管理部67は、全てのインデックスを探索済みではないため、ステップS124へ進む。
ステップS124において、並列書込み用空きブロック管理部67は、参照するインデックスをインクリメントし、ステップS121へ進む。ステップS121において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル111のインデックス2を参照する。インデックス2からインデックス5まで、割当て済みブロック数が並列書込み数より小さくないため、並列書込み用空きブロック管理部67は、インデックス1の場合と同様にステップS121、ステップS123及びステップS124の処理を繰り返す。
ステップS121において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル111のインデックス6を参照する。インデックス6の割当て済みブロック数は並列書込み数より小さいため、処理はステップS122へ進む。ステップS122において、デバイスチップ#1用のエントリ1にはすでに他のブロック番号が登録されているため、処理はステップS123へ進む。ステップS123において、並列書込み用空きブロック管理部67は、全てのインデックスを探索済みではないため、ステップS124へ進む。ステップS124において、並列書込み用空きブロック管理部67は、参照するインデックスをインクリメントし、ステップS121へ進む。
ステップS121において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル111のインデックス7を参照する。インデックス7の割当て済みブロック数は並列書込み数より小さいため、処理はステップS122へ進む。ステップS122において、デバイスチップ#1用のエントリ1にはすでに他のブロック番号が登録されているため、処理はステップS123へ進む。ステップS123において、並列書込み用空きブロック管理部67は、全てのインデックスを探索済みのため、処理を終了する。
デバイスチップ#1のブロック番号30は、並列書込み用空きブロック管理テーブル111には登録されない。デバイスチップ#1のブロック番号30は、空きブロック管理部66においてブロック毎に割当てられる空きブロックとして利用されることとなる。
したがって、本実施の形態では、同一バス上に接続された複数の記録媒体にデータを並列に書込む書込み機能部63と、複数の記録媒体をそれぞれ分割した複数のブロックについてデータ書込み可能な空きブロックかどうかを空きブロック管理テーブルに登録する空きブロック管理部66と、空きブロック管理部66から通知された空きブロックについて並列書込み数分を1つの組として並列書込み用空きブロック管理テーブル111に登録し、書込み機能部63からの要求に応じて並列書込み用空きブロック管理テーブル111から並列書込み数分の空きブロックを取得して、通知する並列書込み用空きブロック管理部67と、を備え、並列書込み用空きブロック管理部67は、記録媒体の識別子及びブロック番号と、1つの組に割当てられた割当て済みブロック数とを対応付け、並列書込み数分の異なる記録媒体の空きブロックを1つの組として並列書込み用空きブロック管理テーブル111に登録し、空きブロック管理部66より空きブロックが通知されると、割当て済みブロック数が並列書込み数より小さい組に、当該空きブロックと同じ記録媒体のブロックが登録されていない場合、当該空きブロックを登録するので、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル111の各インデックスの割当て済みブロック数とデバイスチップ番号に対応したエントリのみ参照すれば、空きブロックを登録することができるか判断することができる。よって、並列書込み用空きブロック管理部67の処理量を抑制することができる。
実施の形態3.
以上の実施の形態2では、並列書込み用空きブロック管理テーブルに割当て済みブロック数を付与し、空きエントリがあるか探索するようにしたものであるが、本実施の形態においては、ウェアレベリングを行う実施の形態を示す。ウェアレベリングとは、消去回数を均等化することである。メモリ素子は、データの書込み及び消去を繰り返すと劣化し、データを書込むことができなくなる。特定のブロックにデータの書込み及び消去が集中して書込みができなくなってしまうことを防ぐため、消去回数を均等化することが行われている。
本実施の形態において、メモリバス61に接続された全てのNANDフラッシュメモリのデバイスチップは5個、並列書込み数は3とする。
図14は、実施の形態3に係る並列書込み用空きブロック管理テーブル141を示す図である。142は、並列書込み用空きブロック管理テーブル141のインデックスを示す。143は、各インデックス内における割当て済みブロック数を示す。割当て済みブロック数は、並列書込み数以下の自然数である。144は、各インデックス内に登録されている空きブロックの消去回数の平均値である。割当て済みブロック数が並列書込み数と等しい場合のみ、消去回数の平均値に値が登録される。
145a〜eは各デバイスチップに対応したエントリである。エントリの数は、メモリバス61に接続されたデバイスチップの個数に対応し、5個である。145aはデバイスチップ#1用のエントリを示す。145bはデバイスチップ#2用のエントリを示す。145cはデバイスチップ#3用のエントリを示す。145dはデバイスチップ#4用のエントリを示す。145eはデバイスチップ#5用のエントリを示す。
各エントリには、それぞれ対応したデバイスチップの空きブロック番号及び当該ブロックの消去回数が登録される。146a〜eは、各エントリの空きブロック番号を示す。147a〜eは、各エントリの当該ブロックの消去回数を示す。「−」は値が登録されていないことを示す。
図15は、実施の形態3に係る空きブロック管理部66及び並列書込み用空きブロック管理部67における処理の流れを示すフローチャートである。
空きブロック管理部66は、消去機能部64から消去を完了したブロックが通知されるとステップS150より処理を開始する。通知されたブロックをブロックXとする。ステップS150において、空きブロック管理部66は、ブロックXを並列書込み用空きブロック管理部67に通知し、ステップS151へ進む。
ステップS151において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル141にブロックXを登録することができるエントリがあるか探索し、登録可能であれば登録する。ステップS151の処理の詳細は、後述する。ステップS151の処理の結果、並列書込み用空きブロック管理テーブル141に登録できない空きブロックが残る場合がある。処理は、ステップS152へ進む。ステップS152において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル141に登録できない空きブロックがある場合、ステップS153へ進む。
ステップS153において、並列書込み用空きブロック管理部67は、空きブロックがブロックXの場合、ステップS154へ進む。ステップS154において、並列書込み用空きブロック管理部67は、ブロックXを並列書込み用として使用しないため、「不使用」を空きブロック管理部66に通知し、ステップS155へ進む。ステップS155において、空きブロック管理部66は、空きブロック管理テーブルにおいてブロックXを空きとして登録し、処理を終了する。
ステップS153において、並列書込み用空きブロック管理部67は、空きブロックが空きブロックXでない場合、ステップS156へ進む。空きブロックをブロックYとする。ステップS156において、並列書込み用空きブロック管理部67は、ブロックYを並列書込み用として使用しないため、「不使用」を空きブロック管理部66に通知する。また、並列書込み用空きブロック管理部67は、ブロックXを並列書込み用として使用するため、「使用」を空きブロック管理部66に通知し、ステップS157へ進む。
ステップS157において、空きブロック管理部66は、ブロック管理テーブルにおいてブロックYを空きとして登録し、ステップS158へ進む。ステップS158において、空きブロック管理部66は、空きブロック管理テーブルにおいてブロックXを使用中として登録し、処理を終了する。
ステップS152において、並列書込み用空きブロック管理部67は、空きブロックがない場合、ステップS159へ進む。ステップS159において、並列書込み用空きブロック管理部67は、ブロックXを並列書込み用として使用するため、「使用」を空きブロック管理部66に通知し、ステップS158へ進む。ステップS158において、空きブロック管理部66は、空きブロック管理テーブルにおいてブロックXを使用中として登録し、処理を終了する。
図16は、実施の形態3に係る並列書込み用空きブロック管理部67における並列書込み用空きブロック管理テーブル141の探索処理の流れを示すフローチャートである。図16のフローチャートは、図15のステップS151の処理の詳細を示す。並列書込み用空きブロック管理部67は、空きブロック管理部66から空きブロックを通知されると、ステップS161より処理を開始する。
ステップS161において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル141のインデックス1を参照する。並列書込み用空きブロック管理部67は、インデックス1の割当て済みブロック数と並列書込み数が等しい場合、ステップS162へ進む。並列書込み用空きブロック管理部67は、インデックス1の割当て済みブロック数と並列書込み数が等しくない場合、ステップS163へ進む。
ステップS162において、並列書込み用空きブロック管理部67は、消去回数の平均値を参照する。消去回数の平均値が空きブロックの消去回数より大きい場合、ステップS163へ進む。消去回数の平均値が空きブロックの消去回数より大きくない場合、ステップS166へ進む。ステップS163において、並列書込み用空きブロック管理部67は、空きブロックのデバイスチップ用のエントリにすでに登録されている場合、ステップS164へ進む。
ステップS164において、並列書込み用空きブロック管理部67は、登録済みのブロックの消去回数が空きブロックの消去回数より大きい場合、ステップS165へ進む。登録済みのブロックの消去回数が空きブロックの消去回数より大きくない場合、ステップS166へ進む。ステップS165において、並列書込み用空きブロック管理部67は、登録済みのブロックと空きブロックを入れ替え、ステップS166へ進む。ステップS166において、並列書込み用空きブロック管理部67は、全てのインデックスを探索済みの場合、処理を終了する。
ステップS166において、並列書込み用空きブロック管理部67は、全てのインデックスを探索済みでない場合、ステップS167へ進む。ステップS167において、並列書込み用空きブロック管理部67は、参照するインデックスをインクリメントし、ステップS161へ進む。
ステップS163において、並列書込み用空きブロック管理部67は、空きブロックのデバイスチップ用のエントリにすでに登録されていない場合、空きブロックを登録し、処理を終了する。
通知された空きブロックがデバイスチップ#1のブロック番号30の場合の処理を説明する。消去回数は45回とする。ステップS161において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル141のインデックス1を参照する。インデックス1の割当て済みブロック数は3である。並列書込み用空きブロック管理部67は、インデックス1の割当て済みブロック数が並列書込み数と等しいため、処理はステップS162へ進む。
ステップS162において、並列書込み用空きブロック管理部67は、消去回数の平均値を参照する。消去回数の平均値41は、空きブロックの消去回数45より大きくないため、処理はステップS166へ進む。ステップS166において、並列書込み用空きブロック管理部67は、全てのインデックスを探索済みではないため、ステップS167へ進む。ステップS167において、並列書込み用空きブロック管理部67は、参照するインデックスをインクリメントし、ステップS161へ進む。
ステップS161において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル141のインデックス2を参照する。インデックス2の割当て済みブロック数は3である。並列書込み用空きブロック管理部67は、インデックス2の割当て済みブロック数が並列書込み数と等しいため、処理はステップS162へ進む。ステップS162において、並列書込み用空きブロック管理部67は、消去回数の平均値を参照する。消去回数の平均値59は、空きブロックの消去回数45より大きいため、処理はステップS163へ進む。
ステップS163において、並列書込み用空きブロック管理部67は、インデックス2のエントリ1に登録があるため、ステップS164へ進む。ステップS164において、並列書込み用空きブロック管理部67は、デバイスチップ#1用のエントリ1の消去回数を参照する。エントリ1の消去回数45は、空きブロックの消去回数45より大きくないため、処理はステップS166へ進む。ステップS166において、並列書込み用空きブロック管理部67は、全てのインデックスを探索済みではないため、ステップS167へ進む。ステップS167において、並列書込み用空きブロック管理部67は、参照するインデックスをインクリメントし、ステップS161へ進む。
ステップS161において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル131のインデックス3を参照する。インデックス3の割当て済みブロック数は3である。並列書込み用空きブロック管理部67は、インデックス3の割当て済みブロック数が並列書込み数と等しいため、処理はステップS162へ進む。
ステップS162において、並列書込み用空きブロック管理部67は、消去回数の平均値を参照する。消去回数の平均値50は、空きブロックの消去回数45より大きいため、処理はステップS163へ進む。ステップS163において、並列書込み用空きブロック管理部67は、インデックス3のエントリ1に登録があるため、ステップS164へ進む。ステップS164において、並列書込み用空きブロック管理部67は、デバイスチップ#1用のエントリ1の消去回数を参照する。エントリ1の消去回数60は、空きブロックの消去回数45より大きいため、ステップS165へ進む。
ステップS165において、並列書込み用空きブロック管理部67は、インデックス3のエントリ1に登録されているブロック番号35と通知された空きブロックを入れ替える。また、並列書込み用空きブロック管理部67は、エントリ3とエントリ5とブロック番号30の消去回数の平均値を算出する。並列書込み用空きブロック管理部67は、算出した消去回数の平均値45を登録し、ステップS166へ進む。ステップS166において、並列書込み用空きブロック管理部67は、全てのインデックスを探索済みではないため、ステップS167へ進む。ステップS167において、並列書込み用空きブロック管理部67は、参照するインデックスをインクリメントし、ステップS161へ進む。
並列書込み用空きブロック管理部67は、空きブロックをデバイスチップ#1のブロック番号35、消去回数60として、処理を続ける。ステップS161において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル131のインデックス4を参照する。インデックス4の割当て済みブロック数は3である。並列書込み用空きブロック管理部67は、インデックス4の割当て済みブロック数が並列書込み数と等しいため、処理はステップS162へ進む。
ステップS162において、並列書込み用空きブロック管理部67は、消去回数の平均値を参照する。消去回数の平均値33は、空きブロックの消去回数60より大きくないため、処理はステップS166へ進む。ステップS166において、並列書込み用空きブロック管理部67は、全てのインデックスを探索済みではないため、ステップS167へ進む。ステップS167において、並列書込み用空きブロック管理部67は、参照するインデックスをインクリメントし、ステップS161へ進む。
ステップS161において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル141のインデックス5を参照する。インデックス5の割当て済みブロック数は3である。並列書込み用空きブロック管理部67は、インデックス5の割当て済みブロック数が並列書込み数と等しいため、処理はステップS162へ進む。
ステップS162において、並列書込み用空きブロック管理部67は、消去回数の平均値を参照する。消去回数の平均値42は、空きブロックの消去回数60より大きくないため、処理はステップS166へ進む。ステップS166において、並列書込み用空きブロック管理部67は、全てのインデックスを探索済みではないため、ステップS167へ進む。ステップS167において、並列書込み用空きブロック管理部67は、参照するインデックスをインクリメントし、ステップS161へ進む。
ステップS161において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル141のインデックス6を参照する。インデックス6の割当て済みブロック数は2である。並列書込み用空きブロック管理部67は、インデックス6の割当て済みブロック数が並列書込み数と等しくないため、処理はステップS163へ進む。
ステップS163において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル141のインデックス6のエントリ1に登録があるため、ステップS164へ進む。ステップS164において、並列書込み用空きブロック管理部67は、デバイスチップ#1用のエントリ1の消去回数を参照する。エントリ1の消去回数70は、空きブロックの消去回数60より大きいため、ステップS165へ進む。
ステップS165において、並列書込み用空きブロック管理部67は、インデックス6のエントリ1に登録されているブロック番号22と空きブロックを入れ替え、ステップS166へ進む。ステップS166において、並列書込み用空きブロック管理部67は、全てのインデックスを探索済みではないため、ステップS167へ進む。ステップS167において、並列書込み用空きブロック管理部67は、参照するインデックスをインクリメントし、ステップS161へ進む。
並列書込み用空きブロック管理部67は、空きブロックをデバイスチップ#1のブロック番号22、消去回数70として、処理を続ける。ステップS161において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル141のインデックス7を参照する。インデックス7の割当て済みブロック数は1である。並列書込み用空きブロック管理部67は、インデックス7の割当て済みブロック数が並列書込み数と等しくないため、処理はステップS163へ進む。
ステップS163において、並列書込み用空きブロック管理部67は、並列書込み用空きブロック管理テーブル141のインデックス7のエントリ1に登録があるため、ステップS164へ進む。ステップS164において、並列書込み用空きブロック管理部67は、デバイスチップ#1用のエントリ1の消去回数を参照する。エントリ1の消去回数50は、空きブロックの消去回数70より大きくないため、ステップS166へ進む。ステップS166において、並列書込み用空きブロック管理部67は、全てのインデックスを探索済みのため、処理を終了する。
図17は、実施の形態3に係る並列書込み用空きブロック管理テーブル171を示す図である。登録並列書込み用空きブロック管理テーブル171は、並列書込み用空きブロック管理テーブル141のインデックス3の消去回数の平均値、並びにエントリ1、及びインデックス6のエントリ1に新たな値が登録されたテーブルである。図17において、網掛けした箇所がインデックス3の消去回数の平均値、並びにエントリ1、及びインデックス6のエントリ1である。
デバイスチップ#1のブロック番号30は、並列書込み用の空きブロックとして利用されることとなる。また、デバイスチップ#1のブロック番号22は、空きブロック管理部66においてブロック毎に割当てられる空きブロックとして利用されることとなる。
したがって、本実施の形態では、同一バス上に接続された複数の記録媒体にデータを並列に書込む書込み機能部63と、複数の記録媒体をそれぞれ分割した複数のブロックについてデータ書込み可能な空きブロックかどうかを空きブロック管理テーブルに登録する空きブロック管理部66と、空きブロック管理部66から通知された空きブロックについて並列書込み数分を1つの組として並列書込み用空きブロック管理テーブル141に登録し、書込み機能部63からの要求に応じて並列書込み用空きブロック管理テーブル141から並列書込み数分の空きブロックを取得して、通知する並列書込み用空きブロック管理部67と、を備え、並列書込み用空きブロック管理部67は、記録媒体の識別子、ブロック番号、及び1つの組に割当てられた割当て済みブロック数に、さらに当該ブロックの消去回数と1つの組に割当てられたブロックの消去回数の平均値とを対応付け、並列書込み数分の異なる記録媒体の空きブロックを1つの組として並列書込み用空きブロック管理テーブル141に登録し、空きブロック管理部66より空きブロックが通知されると、割当て済みブロック数が並列書込み数と等しい組に、消去回数の平均値が当該空きブロックの消去回数より小さく、当該空きブロックと同じ記録媒体のブロックが登録されており、その消去回数が当該空きブロックの消去回数より大きい場合、登録されているブロックを当該空きブロックと入れ替えるので、消去回数の少ないブロックが並列書込み用空きブロックとして使用されやすくなる。よって、各ブロックの消去回数を均等化することができる。
11 デバイスチップ
12、41 メモリバス
13、60 データ記録装置
14、69 メモリインタフェース部
15 コマンド処理部
16 ページバッファ
17 NANDフラッシュメモリ
21 ブロック
22 ページ
31 第1コマンド送信
32 書込みデータ転送
33 第2コマンド送信
34 チップ内書込み処理
62 コマンドインタフェース部
63 書込み機能部
64 消去機能部
65 読出し機能部
66 空きブロック管理部
67 並列書込み用空きブロック管理部
68 アドレス変換部
71、101、111、131、141、171 並列書込み用空きブロック管理テーブル
72、112、142 インデックス
73、145 エントリ
74 デバイスチップ番号
75、114、146 ブロック番号
113、143 割当て済みブロック数
144 消去回数の平均値
147 消去回数

Claims (10)

  1. 同一バス上に接続された複数の記録媒体にデータを並列に書込む書込み機能部と、
    複数の記録媒体をそれぞれ分割した複数のブロックについてデータ書込み可能な空きブロックかどうかを空きブロック管理テーブルに登録する空きブロック管理部と、
    前記空きブロック管理部から通知された空きブロックについて並列書込み数分を1つの組として並列書込み用空きブロック管理テーブルに登録し、前記書込み機能部からの要求に応じて前記並列書込み用空きブロック管理テーブルから並列書込み数分の空きブロックを取得して、通知する並列書込み用空きブロック管理部と、
    を備えることを特徴とするデータ記録装置。
  2. 前記並列書込み用空きブロック管理部は、記録媒体の識別子とブロックを識別するブロック番号とを対応付け、並列書込み数分の異なる記録媒体の空きブロックを1つの組として前記並列書込み用空きブロック管理テーブルに登録し、
    前記空きブロック管理部より空きブロックが通知されると、前記並列書込み用空きブロック管理テーブルの並列書込み数分の空きブロックが登録されていない組に、当該空きブロックと同じ記録媒体のブロックが登録されていない場合、当該空きブロックを登録することを特徴とする請求項1に記載のデータ記録装置。
  3. 前記並列書込み用空きブロック管理部は、記録媒体の識別子及びブロック番号と、1つの組に割当てられた割当て済みブロック数とを対応付け、並列書込み数分の異なる記録媒体の空きブロックを1つの組として前記並列書込み用空きブロック管理テーブルに登録し、
    前記空きブロック管理部より空きブロックが通知されると、前記割当て済みブロック数が並列書込み数より小さい組に、当該空きブロックと同じ記録媒体のブロックが登録されていない場合、当該空きブロックを登録することを特徴とする請求項2に記載のデータ記録装置。
  4. 前記並列書込み用空きブロック管理部は、記録媒体の識別子、ブロック番号、及び1つの組に割当てられた割当て済みブロック数に、さらにブロックの消去回数と1つの組に割当てられたブロックの消去回数の平均値とを対応付け、並列書込み数分の異なる記録媒体の空きブロックを1つの組として前記並列書込み用空きブロック管理テーブルに登録し、
    前記空きブロック管理部より空きブロックが通知されると、割当て済みブロック数が並列書込み数と等しい組に、前記消去回数の平均値が当該空きブロックの消去回数より大きく、当該空きブロックと同じ記録媒体のブロックが登録されており、その消去回数が当該空きブロックの消去回数より大きい場合、登録されているブロックを当該空きブロックと入れ替えることを特徴とする請求項3に記載のデータ記録装置。
  5. 前記並列書込み用空きブロック管理部は、登録から空きへと入れ替えられたブロックを、前記並列書込み用空きブロック管理テーブルの割当て済みブロック数が並列書込み数より小さい組に、登録から空きへと入れ替えられたブロックと同じ記録媒体のブロックが登録されていない場合、登録することを特徴とする請求項4に記載のデータ記録装置。
  6. 前記並列書込み用空きブロック管理部は、前記空きブロック管理部から通知された空きブロックを前記並列書込み用空きブロック管理テーブルに登録する場合、空きブロック管理部へ当該ブロックを使用することを通知し、
    前記空きブロック管理部は、当該ブロックを使用中として空きブロック管理テーブルに登録することを特徴とする請求項1から5のいずれかに記載のデータ記録装置。
  7. 前記並列書込み用空きブロック管理部は、前記並列書込み用空きブロック管理テーブルに登録しない空きブロックがある場合、空きブロック管理部へ当該ブロックを使用しないことを通知し、
    前記空きブロック管理部は、当該ブロックを空きとして空きブロック管理テーブルに登録することを特徴とする請求項1から6のいずれかに記載のデータ記録装置。
  8. 記録媒体からデータを消去し、当該データを記録していた記録媒体のブロックを空きブロックとして前記空きブロック管理部へ通知する消去機能部と、
    記録媒体からデータを読出す読出し機能部と、を備え、
    前記書込み機能部は、データを並列に書込む場合は並列書込み用空きブロック管理部から並列書込み数分の空きブロックを取得してデータを書込み、1ブロックずつデータを書込む場合は空きブロック管理部から空きブロックを取得してデータを書込むことを特徴とする請求項1から7のいずれかに記載のデータ記録装置。
  9. 並列書込み数の異なる複数の並列書込み用空きブロック管理部を備え、
    前記書込み機能部は、並列書込み数に応じて異なる並列書込み用空きブロック管理部から並列書込み数分の空きブロックを取得することを特徴とする請求項1から8のいずれかに記載のデータ記録装置。
  10. 同一バス上に接続された複数の記録媒体にデータを並列に書込む書込み機能ステップと、
    複数の記録媒体をそれぞれ分割した複数のブロックについてデータ書込み可能な空きブロックかどうかを空きブロック管理テーブルに登録する空きブロック管理ステップと、
    前記空きブロック管理部から通知された空きブロックについて並列書込み数分を1つの組として並列書込み用空きブロック管理テーブルに登録し、前記書込み機能部からの要求に応じて前記並列書込み用空きブロック管理テーブルから並列書込み数分の空きブロックを取得して、通知する並列書込み用空きブロック管理ステップと、
    を有するデータ記録方法。
JP2013003274A 2013-01-11 2013-01-11 データ記録装置、及びデータ記録方法 Expired - Fee Related JP5994647B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013003274A JP5994647B2 (ja) 2013-01-11 2013-01-11 データ記録装置、及びデータ記録方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013003274A JP5994647B2 (ja) 2013-01-11 2013-01-11 データ記録装置、及びデータ記録方法

Publications (2)

Publication Number Publication Date
JP2014134998A JP2014134998A (ja) 2014-07-24
JP5994647B2 true JP5994647B2 (ja) 2016-09-21

Family

ID=51413198

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013003274A Expired - Fee Related JP5994647B2 (ja) 2013-01-11 2013-01-11 データ記録装置、及びデータ記録方法

Country Status (1)

Country Link
JP (1) JP5994647B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022147448A (ja) 2021-03-23 2022-10-06 キオクシア株式会社 メモリシステム及びデータ管理方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000122923A (ja) * 1998-07-13 2000-04-28 Sony Corp 記録装置および記録方法、再生装置および再生方法、記録媒体、並びにプログラム記録媒体
JP4666080B2 (ja) * 2009-02-09 2011-04-06 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
CN102317925B (zh) * 2009-02-12 2014-07-23 株式会社东芝 存储器***和控制存储器***的方法
JP4987997B2 (ja) * 2010-02-26 2012-08-01 株式会社東芝 メモリシステム
JP5404483B2 (ja) * 2010-03-17 2014-01-29 株式会社東芝 メモリシステム

Also Published As

Publication number Publication date
JP2014134998A (ja) 2014-07-24

Similar Documents

Publication Publication Date Title
US10761977B2 (en) Memory system and non-transitory computer readable recording medium
US10303599B2 (en) Memory system executing garbage collection
US8996791B2 (en) Flash memory device, memory control device, memory control method, and storage system
US9268687B2 (en) Data writing method, memory control circuit unit and memory storage apparatus
US11630766B2 (en) Memory system and operating method thereof
US10409525B2 (en) Memory management method, memory control circuit unit and memory storage device
US20110099324A1 (en) Flash memory storage system and flash memory controller and data processing method thereof
US20150161039A1 (en) Data erasing method, memory control circuit unit and memory storage apparatus
CN109697027B (zh) 包括共享存储器区域和专用存储器区域的数据存储设备
JP5969130B2 (ja) 情報処理装置
US20150234598A1 (en) Memory device and host device
US20150186259A1 (en) Method and apparatus for storing data in non-volatile memory
TWI423022B (zh) 記憶體管理方法、記憶體控制器與記憶體儲存裝置
US9389998B2 (en) Memory formatting method, memory controller, and memory storage apparatus
US10235284B2 (en) Memory system
KR102349381B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
CN108733577B (zh) 存储器管理方法、存储器控制电路单元及存储器存储装置
US20230281118A1 (en) Memory system and non-transitory computer readable recording medium
US9524236B1 (en) Systems and methods for performing memory management based on data access properties
JP5994647B2 (ja) データ記録装置、及びデータ記録方法
CN106205707A (zh) 存储器装置
WO2015118623A1 (ja) 情報処理装置
CN106205708B (zh) 高速缓冲存储器装置
CN110968520B (zh) 基于统一缓存架构的多流存储设备
TW201624491A (zh) 資訊處理裝置及非暫態電腦可讀取記錄媒體

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151027

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160721

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160726

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160808

R151 Written notification of patent or utility model registration

Ref document number: 5994647

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees