(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024179617
(43)【公開日】2024-12-26
(54)【発明の名称】NANDストレージデバイス
(51)【国際特許分類】
G11C 16/34 20060101AFI20241219BHJP
G06F 12/00 20060101ALI20241219BHJP
G11C 16/04 20060101ALI20241219BHJP
【FI】
G11C16/34 120
G06F12/00 550Z
G06F12/00 597U
G11C16/04 170
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2023098601
(22)【出願日】2023-06-15
(71)【出願人】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(74)【代理人】
【識別番号】110001128
【氏名又は名称】弁理士法人ゆうあい特許事務所
(72)【発明者】
【氏名】木全 哲也
【テーマコード(参考)】
5B160
5B225
【Fターム(参考)】
5B160NA02
5B225CA19
5B225DE08
5B225DE16
5B225DE20
5B225EA05
5B225FA01
5B225FA10
(57)【要約】
【課題】NANDストレージデバイスにおいて、NANDメモリに含まれるデータの特性に応じたセルフリフレッシュの閾値設定を行うことができるようにする。
【解決手段】NANDストレージデバイス1の内蔵コントローラ12は、NANDメモリ11の第1領域中のブロック毎のビットエラー率と第1リフレッシュ閾値Th1との比較に基づき、第1領域のデータのセルフリフレッシュを行うか否か判定する。そして同様に、NANDメモリ11の第2領域中のブロック毎のビットエラー率と第2リフレッシュ閾値Th2との比較に基づき、第2領域のデータのセルフリフレッシュを行うか否か判定する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
NANDストレージデバイスであって、
当該NANDストレージデバイスに内蔵されるNANDメモリ(11)と、
当該NANDストレージデバイスに内蔵され、前記NANDストレージデバイスの外部にある外部機器(2)からのコマンドに従って前記NANDメモリに対して読み書きを行う内蔵コントローラ(12)と、を備え、
前記内蔵コントローラは、第1リフレッシュ閾値(Th1)と第2リフレッシュ閾値(Th2)を読み出し、前記NANDメモリのうち第1領域(R1)についてのビットエラー量と前記第1リフレッシュ閾値との比較に基づいて前記第1領域のデータのセルフリフレッシュを行うか否か判定し、前記NANDメモリのうち前記第1領域とは異なる第2領域(R2)についてのビットエラー量と前記第2リフレッシュ閾値との比較に基づいて、前記第2領域のデータのセルフリフレッシュを行うか否かを判定する、NANDストレージデバイス。
【請求項2】
前記第1リフレッシュ閾値および前記第2リフレッシュ閾値の一方または両方は、前記外部機器からのコマンドに基づいて変更可能である請求項1に記載のNANDストレージデバイス。
【請求項3】
前記NANDメモリには、前記外部機器が実行するプログラムまたは前記外部機器が使用する地図データが記憶され、
前記第1リフレッシュ閾値および前記第2リフレッシュ閾値の一方または両方は、前記プログラムまたは前記地図データの更新時に、前記外部機器からのコマンドに基づいて変更可能である請求項1または2に記載のNANDストレージデバイス。
【請求項4】
前記内蔵コントローラは、前記第1リフレッシュ閾値と前記第2リフレッシュ閾値を読み出すと共に、前記NANDメモリ中で前記第1領域が占める範囲を指定する第1範囲値(Rr1)と、前記NANDメモリ中で前記第2領域が占める範囲を指定する第2範囲値(Rr2)とを読み出し、前記第1範囲値により指定された前記第1領域についてのビットエラー量と前記第1リフレッシュ閾値との比較に基づいて前記第1領域のデータのセルフリフレッシュを行うか否か判定し、前記第2範囲値により指定された前記第2領域についてのビットエラー量と前記第2リフレッシュ閾値との比較に基づいて、前記第2領域のデータのセルフリフレッシュを行うか否かを判定する、請求項1または2に記載のNANDストレージデバイス。
【請求項5】
前記第1範囲値および前記第2範囲値の一方または両方は、前記外部機器からのコマンドに基づいて変更可能である請求項4に記載のNANDストレージデバイス。
【請求項6】
前記NANDメモリには、前記外部機器が実行するプログラムまたは前記外部機器が使用する地図データが記憶され、
前記第1範囲値および前記第2範囲値の一方または両方は、前記プログラムまたは前記地図データの更新時に、前記外部機器からのコマンドに基づいて変更可能である請求項4に記載のNANDストレージデバイス。
【請求項7】
前記第1領域には、前記外部機器が実行するプログラムが記憶され、
前記第2領域には、前記外部機器が前記プログラムを実行する際に使用する地図データが記憶され、
前記第1リフレッシュ閾値よりも前記第2リフレッシュ閾値の方が大きい、請求項1または2に記載のNANDストレージデバイス。
【請求項8】
前記第2領域には、前記プログラムまたは前記地図データを更新するための更新用一時データが記憶される、請求項7に記載のNANDストレージデバイス。
【請求項9】
前記第1領域には、前記外部機器が前記プログラムを実行する際に参照および変更する動的学習データが記憶される、請求項7に記載のNANDストレージデバイス。
【請求項10】
前記第1領域に記憶されるデータのデータサイズよりも、前記第2領域に記憶されるデータのデータサイズの方が大きく、
前記第1リフレッシュ閾値よりも前記第2リフレッシュ閾値の方が大きく、
前記第1領域に記憶されるデータのデータサイズに対する前記第1領域の容量の比は、前記第2領域に記憶されるデータのデータサイズに対する前記第2領域の容量の比よりも大きい、請求項1または2に記載のNANDストレージデバイス。
【請求項11】
車両に搭載される、請求項1または2に記載のNANDストレージデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、NANDストレージデバイスに関するものである。
【背景技術】
【0002】
従来、NANDメモリを有するNANDストレージデバイスにおいては、データが書き込まれてから時間が経過したり、データが何度も読み出されたりすることで、ビットエラーが発生する場合がある。これに対応するため、領域のブロック毎にビットエラー発生率が閾値を超えた場合にセルフリフレッシュを行ってビットエラーを抑制する技術が、例えば特許文献1に記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記のような技術について、発明者の検討によれば、以下のような問題がある。すなわち、セルフリフレッシュの閾値が低すぎると、必要以上にリフレッシュがなされ、NANDメモリ中のメモリセルが摩耗する。一方、閾値が高すぎると、比較的長い期間リフレッシュがされない状態でNANDストレージデバイスの電源がオフになり、その後長期間(例えば1年)オフの状態が継続してリフレッシュが行われないという状況が発生し得る。そのような場合には、ビットエラーが増えすぎてデータが消失してしまう可能性がある。
【0005】
本開示は、NANDストレージデバイスにおいて、NANDメモリに含まれるデータの特性に応じたセルフリフレッシュの閾値設定を行うことができるようにすることを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するための請求項1に記載の発明は、NANDストレージデバイスが、
当該NANDストレージデバイスに内蔵されるNANDメモリ(11)と、
当該NANDストレージデバイスに内蔵され、前記NANDストレージデバイスの外部にある外部機器(2)からのコマンドに従って前記NANDメモリに対して読み書きを行う内蔵コントローラ(12)と、を備え、
前記内蔵コントローラは、第1リフレッシュ閾値(Th1)と第2リフレッシュ閾値(Th2)を読み出し、前記NANDメモリのうち第1領域(R1)についてのビットエラー量と前記第1リフレッシュ閾値との比較に基づいて前記第1領域のデータのセルフリフレッシュを行うか否か判定し、前記NANDメモリのうち前記第1領域とは異なる第2領域(R2)についてのビットエラー量と前記第2リフレッシュ閾値との比較に基づいて、前記第2領域のデータのセルフリフレッシュを行うか否かを判定する。
【0007】
このように、NANDメモリ中の領域毎に、リフレッシュを開始する閾値を設定できるようにすることで、各領域に含まれるデータ特性に応じたセルフリフレッシュの閾値設定が可能になる。
【0008】
なお、各構成要素等に付された括弧付きの参照符号は、その構成要素等と後述する実施形態に記載の具体的な構成要素等との対応関係の一例を示すものである。
【図面の簡単な説明】
【0009】
【
図1】第1実施形態に係る制御システムの構成図である。
【
図3】内蔵コントローラのプロセッサが実行する誤り訂正処理のフローチャートである。
【
図4】内蔵コントローラのプロセッサが実行するリフレッシュ処理のフローチャートである。
【
図5】第2実施形態におけるデータサーバ、制御装置、NANDストレージデバイスの作動を示すシーケンス図である。
【
図6】第3実施形態におけるNANDメモリ中の各種データのサイズを示す図である。
【発明を実施するための形態】
【0010】
(第1実施形態)
以下、本開示の第1実施形態について説明する。
図1に示すように、本実施形態に係る制御システムは、NANDストレージデバイス1と、制御装置2とを有する。この制御システムは、車両に搭載されている。制御システムは、1つのユニットとして一体的に形成されていてもよいし、別体に形成されてもよい。NANDストレージデバイス1にとっては、この制御装置2はNANDストレージデバイス1の外部にある外部機器に相当する。以下、この制御システムが車両に搭載されて当該車両の走行を支援する装置である例について、説明する。
【0011】
制御装置2は、通信インターフェース21、メモリ22、演算回路23等を有する。通信インターフェース21は、不図示の車内LANを介して車両に搭載された各種機器と通信を実現するためのインターフェース回路である。通信インターフェース21を介して通信する機器としては、例えば、車両のパワートレインを駆動する駆動制御装置、車両の制動を制御する制動制御装置、車両の操舵を制御する操舵制御装置、車両の外部の装置と無線通信するための車外通信装置等がある。
【0012】
また、通信インターフェース21を介して通信する他の機器としては、例えば、車両の位置、進行方向、走行速度、加速度、ヨーレート等の走行挙動を検出する検出装置がある。また通信インターフェース21を介して通信する他の機器としては、車両の周囲の物体(例えば、先行車両、後続車両、歩行者等)等の車両周辺状況を検出する検出装置がある。また通信インターフェース21を介して通信する他の機器としては、車両のアクセルペダルの踏み込み量、ブレーキペダルの踏み込み量、ステアリングハンドルの操作量等のドライバによる運転操作を検出する検出装置がある。
【0013】
メモリ22は、不揮発性記憶媒体および揮発性記憶媒体を有する。不揮発性記憶媒体(例えばROM)には、演算回路23が実行するプログラムが記録されている。揮発性記憶媒体(例えばRAM)は、演算回路23が各種処理を実行する際の作業領域として使用される。これら不揮発性記憶媒体も揮発性記憶媒体も、非遷移的実体的記憶媒体である。
【0014】
演算回路23は、メモリ22の不揮発性記憶媒体およびNANDストレージデバイス1からプログラムを読み出して実行し、実行の際には、必要に応じてNANDストレージデバイス1にデータを記録する。演算回路23は、NANDストレージデバイス1から読み出したプログラムを実行することで、車両の走行を支援する処理を実現する。
【0015】
NANDストレージデバイス1は、NANDメモリ11および内蔵コントローラ12を有する。NANDストレージデバイス1は、eMMC、UFS、SSD等のマネージドNANDデバイスである。eMMCは、embedded MultiMediaCardの略である。UFSは、Universal Flash Storageの略である。SSDは、Solid State Driveの略である。
【0016】
NANDメモリ11は、NAND型のフラッシュメモリであり、データ消去の最小単位であるブロックを複数個有する。NANDメモリ11も、非遷移的実体的記憶媒体である。
図2に示すように、NANDメモリ11は、第1領域R1と第2領域R2を有している。第1領域R1と第2領域R2は重複しない。第1領域R1、第2領域R2のそれぞれは、複数のブロックから構成されている。第1領域R1よりも第2領域の方が、データ容量が大きい。
【0017】
第1領域R1には、プログラムD11および動的学習データD12が記録されている。プログラムD11は、制御装置2の演算回路23が読み出して実行するプログラムであり、例えば、走行支援用プログラムを含んでいる。以下では、プログラムD11が走行支援用プログラムである例について説明する。
【0018】
動的学習データD12は、制御装置2によってプログラムD11が実行される際に参照および変更される。具体的には、演算回路23は、プログラムD11を実行している際に、上述の各種検出装置から通信インターフェース21を介して検出結果を繰り返し(例えば定期的に)取得する。そして、検出結果または検出結果に応じて算出された各種の動作パラメータを、動的学習データD12として、第1領域R1に逐次記録する。そして演算回路23は、逐次、第1領域R1から上記検出結果を読み出し、読み出した検出結果を用いた学習を行い、その学習の結果得られた動作パラメータに従って、プログラムD11を実行する。あるいは演算回路23は、逐次、第1領域R1から上記動作パラメータを読み出し、プログラムD11を実行において、読み出した動作パラメータに従った作動を実現する。
【0019】
プログラムD11は、内容が少しでも壊れると制御装置2が誤作動してしまう可能性があるので、データの消失をより確実に防ぎたいという要請がある。また、動的学習データD12も、プログラムD11と同様の理由で、データの消失をより確実に防ぎたいという要請がある。動的学習データD12は更に、データの書き込みも繰り返し(例えば定期的に)発生するので、データの消失を更に確実に防ぎたいという要請がある。したがって、プログラムD11も、動的学習データD12も、比較的短い間隔でリフレッシュを行うことが望ましい。
【0020】
第2領域R2には、地図データD21および更新用一時データD22が記録されている。地図データD21は、制御装置2の演算回路23がプログラムD11を読み出して実行する際に使用される。地図データD21は、多数の道路の位置、形状、車線数、車線毎の復員といった、自動運転等の運転支援に必要な高精細な道路情報を含んでいる。
【0021】
更新用一時データD22は、上述の車外通信装置を介して車両の外部のデータサーバから取得される、プログラムD11および地図データD21の更新用一時データである。演算回路23は、繰り返し(例えば定期的に)通信インターフェース21を用いることで車外通信装置を介してデータサーバと無線通信を行うことで、更新用一時データD22をダウンロードしてNANDストレージデバイス1の第2領域R2に記録する。
【0022】
地図データD21は、比較的短い期間(例えば数週間)程度経過したら一部が消失して読み出せなくなってしまっても大きな問題はない。なぜなら、読み出せなくなった場合、データサーバから再度ダウンロードすることが可能だからである。また、更新用一時データD22も、より短い期間(例えば数日)程度経過したら一部が消失して読み出せなくなってしまっても、問題ない。これは、更新用一時データD22は、ダウンロード後1日以内に更新のために使用されることが殆どで、更新の処理が終わってしまえば不要なデータだからである。したがって、地図データD21も、更新用一時データD22も、リフレッシュ間隔は比較的長くても構わない。むしろ、リフレッシュ間隔を長くして第2領域の摩耗を防止する方が好ましい。
【0023】
内蔵コントローラ12は、制御装置2からのコマンドに基づいてNANDメモリ11に対してデータの読み出しおよび書き込みを行う装置であり、
図1に示すように、メモリ121、I/O122、プロセッサ123等を有する。
【0024】
メモリ121は、不揮発性記憶媒体および揮発性記憶媒体を有する。不揮発性記憶媒体(例えばROM、EPROM)には、処理回路が実行するプログラムが記録されている。揮発性記憶媒体(例えばRAM)は、処理回路が各種処理を実行する際の作業領域として使用される。これら不揮発性記憶媒体も揮発性記憶媒体も、非遷移的実体的記憶媒体である。
【0025】
また、メモリ121の不揮発性記憶媒体には、
図1に示すように、第1リフレッシュ閾値Th1、第2リフレッシュ閾値Th2が記録されている。第1リフレッシュ閾値Th1は、第1領域R1のブロック毎のビットエラー率と比較する閾値であって、第1領域R1のセルフリフレッシュを行うか否かの判定基準となる閾値である。第2リフレッシュ閾値Th2は、第2領域R2のブロック毎のビットエラー率と比較する閾値であって、第2領域R2のセルフリフレッシュを行うか否かの判定基準となる閾値である。第1リフレッシュ閾値Th1よりも第2リフレッシュ閾値Th2の方が大きい。
【0026】
また、メモリ121の不揮発性記憶媒体には、
図1に示すように、第1範囲値Rr1、第2範囲値Rr2が記録されている。第1範囲値Rr1は、NANDメモリ11中で第1領域R1が占める物理アドレスの範囲を指定する値である。第2範囲値Rr2は、NANDメモリ11中で第1領域R1が占める物理アドレスの範囲を指定する値である。第1範囲値Rr1よりも第2範囲値Rr2の方が、より広いアドレス範囲を示している。
【0027】
なお、他の例として、これら第1リフレッシュ閾値Th1、第2リフレッシュ閾値Th2、第1範囲値Rr1、第2範囲値Rr2は、内蔵コントローラ12のメモリ121ではなく、NANDメモリ11内に記録されていてもよい。あるいは、第1リフレッシュ閾値Th1、第2リフレッシュ閾値Th2、第1範囲値Rr1、第2範囲値Rr2の一部がメモリ121に記録され、残りの一部がNANDメモリ11に記録されていてもよい。
【0028】
I/O122は、制御装置2を相手にデータおよびコマンドの授受を行うためのインターフェースであると共に、NANDメモリ11へのデータの読み出しおよび書き込みを行うためのインターフェースである。
【0029】
プロセッサ123は、メモリ121の不揮発性記憶媒体からプログラムを読み出して実行する回路である。プログラムを読み出して実行する処理としては、論理アドレスから物理アドレスへの変換、不良ブロックの管理、ウェアレベリング、誤り訂正、リフレッシュ等がある。
【0030】
論理アドレスから物理アドレスへの変換は、制御装置2から受けるコマンド内に含まれるアドレスである論理アドレスの値を、NANDメモリ11中のメモリセルに割り当てられるアドレスである物理アドレスに変換する処理である。
【0031】
不良ブロックの管理は、NANDメモリ11中で不良となったブロックを他のブロック(すなわち、スペアブロック)で代替する処理である。代替する際には、不良となったブロックに割り当てられていた論理アドレスが、代替するブロックに割り当て直される。なお、第1領域R1中のブロックに不良が発生した場合は、同じ第1領域R1中の他のブロックが代替し、第2領域R2中のブロックに不良が発生した場合は、同じ第2領域R2中の他のブロックが代替する。
【0032】
ウェアレベリングは、NANDメモリ11中のブロック間の書き換え回数の偏りを緩和するため、書き換え回数が所定の基準より大きいブロックから、それよりも書き換え回数が少ない別のブロックに、同じ論理アドレスを割り当て直す処理である。なお、ウェアレベリングは、同じ領域内でのみ行われる。すなわち、ウェアレベリングによって第1領域R1中のブロックと同じ論理アドレスが割り当てられる先のブロックは、同じ第1領域R1中のブロックである。また、ウェアレベリングによって第2領域R2中のブロックと同じ論理アドレスが割り当てられる先のブロックは、同じ第2領域R2中のブロックである。
【0033】
以上のような構成の制御システムの作動例について、以下説明する。制御装置2の演算回路23は、プログラムD11等のプログラムの実行中に、データをNANDストレージデバイス1から読み出す必要が生じた場合は、NANDストレージデバイス1に対して読み出し用のコマンドを送信する。このコマンドには、NANDメモリ11中の読み出し対象の論理アドレス範囲も含まれている。この読み出し用のコマンドが内蔵コントローラ12で受信されると、プロセッサ123は、受信したコマンドに従ってNANDメモリ11中の当該論理アドレス範囲が割り当てられた物理アドレス範囲からデータを読み出す。そしてプロセッサ123は、読み出したデータを制御装置2に送信する。これにより、制御装置2によるNANDストレージデバイス1からのデータの読み出しが実現する。
【0034】
また、演算回路23は、プログラムD11等のプログラムの実行中に、データをNANDストレージデバイス1から読み出す必要が生じた場合は、NANDストレージデバイス1に対して書き込みのコマンドおよび書き込むデータを送信する。このコマンドには、NANDメモリ11中の書き込み先の論理アドレス範囲も含まれている。この書き込み用のコマンドおよびデータが内蔵コントローラ12で受信されると、プロセッサ123は、受信したコマンドに従って当該データをNANDメモリ11中の当該論理アドレス範囲が割り当てられた物理アドレス範囲に記録する。これにより、制御装置2によるNANDストレージデバイス1へのデータの書き込みが実現する。
【0035】
演算回路23は、プログラムD11を実行することで、車両走行支援を行う。具体的には、上述の走行挙動を検出する検出装置、車両周辺状況を検出する検出装置、運転操作を検出する検出装置から検出結果を取得し、NANDストレージデバイス1から地図データD21を読み出す。そして、取得した検出結果および読み出した地図データD21に基づいて、車両の駆動、制動、操舵のうち1つまたは複数について、実現すべき状態を算出する。そして、算出した状態が実現するよう、駆動制御装置、制動制御装置、操舵制御装置のうち対応する1つまたは複数に、制御指令を送信する。
【0036】
また、上記のように制御システムが作動しているとき、NANDストレージデバイス1の内蔵コントローラ12において、プロセッサ123は、NANDメモリ11からデータを読み出す際に、
図3に示す誤り訂正の処理を行う。
【0037】
図3の処理においてプロセッサ123は、まずステップS110では、読み出したデータに対してECCを用いた誤り検出を行い、当該データに誤りが発生したか否かを判定する。ECCは、Error Correction Codeの略称である。誤りが発生していない場合は、今回の誤り訂正の処理を終了する。誤りが発生した場合は、ステップS120に進む。
【0038】
ステップS120では、NANDメモリ11中の誤りが発生したデータの訂正を行う。続いてステップS130では、誤りが発生したデータを含むNANDメモリ11中のブロックのビットエラー率を、今回発生した誤りを反映するよう、更新する。なお、ブロック毎のビットエラー率の情報は、メモリ121の不揮発性記憶媒体に記録されてもよいし、NANDメモリ11に記録されてもよい。
【0039】
続いてステップS140では、誤りが発生した領域を特定する。具体的には、まず、第1範囲値Rr1、第2範囲値Rr2を読み出す。そして、誤りが発生したデータが記憶されている領域の物理アドレスと、第1範囲値Rr1、第2範囲値Rr2の情報に基づいて、誤りが発生した領域が第1領域R1か第2領域R2かを特定する。
【0040】
続いてステップS150では、特定した領域の、セルフリフレッシュに関する閾値を取得する。すなわち、誤りが発生した領域が第1領域R1であれば第1リフレッシュ閾値Th1を取得し、誤りが発生した領域が第2領域R2であれば第2リフレッシュ閾値Th2を取得する。
【0041】
続いてステップS160では、取得した閾値と、更新後のビットエラー率(すなわちBER)とを比較し、後者の方が大きければステップS170に進み、そうでなければステップS170をバイパスして今回の誤り訂正の処理を終了する。
【0042】
ステップS170では、リフレッシュ依頼リストに、今回エラーが発生したブロックの識別番号を記録する。リフレッシュ依頼リストは、セルフリフレッシュをすべきブロックの識別番号(例えば物理アドレス)をリストとして含むデータであり、メモリ121の不揮発性記憶媒体に記録されてもよいし、NANDメモリ11に記録されてもよい。ステップS170の後、今回の誤り訂正の処理を終了する。
【0043】
また、プロセッサ123は、繰り返し定期的に、
図4に示すリフレッシュ処理を行う。リフレッシュ処理においてプロセッサ123は、まずステップS210で、リフレッシュ依頼リストを読み出す。続いてステップS220では、リフレッシュ依頼リスト中に記録されているすべての識別番号について、それぞれに該当するブロックのリフレッシュを行う。このリフレッシュにより、対象となったブロックにおけるデータの消失を未然に防止できる。ステップS220の後、リフレッシュ処理が終了する。
【0044】
[1]以上の通り、内蔵コントローラ12は、NANDメモリ11の第1領域R1中のブロック毎のビットエラー率と第1リフレッシュ閾値Th1との比較に基づき、第1領域R1のデータのセルフリフレッシュを行うか否か判定する。そして同様に、NANDメモリ11の第2領域R2中のブロック毎のビットエラー率と第2リフレッシュ閾値Th2との比較に基づき、第2領域R2のデータのセルフリフレッシュを行うか否か判定する。
【0045】
このように、NANDメモリ11中の領域毎に、リフレッシュを開始する閾値を設定できるようにすることで、各領域に含まれるデータ特性に応じたセルフリフレッシュの閾値設定が可能になる。
【0046】
例えば、本実施形態に示すように、より重要な、すなわち、データの消失を防ぐ必要性がより高いデータを記憶する第1領域R1に関する第1リフレッシュ閾値Th1を第2リフレッシュ閾値Th2よりも小さくすることができる。このようにすることで、重要なデータについてはリフレッシュの頻度を高くすることで消失の可能性を低減できる。
【0047】
また、車両が長期間(例えば1年間)使用されず、それに伴いNANDストレージデバイス1も長期間作動せず、その間リフレッシュできなかったとする。その場合でも、最後に第1領域R1のブロックをリフレッシュしてから長期間の非作動が始まるまでの時間間隔が比較的短いので、データ消失の可能性が低減される。
【0048】
[2]また、内蔵コントローラ12は、第1範囲値Rr1と第2範囲値Rr2とを読み出す。そして、第1範囲値Rr1により指定された第1領域R1のブロック毎のビットエラー率と第1リフレッシュ閾値Th1との比較に基づいて第1領域R1のデータのセルフリフレッシュを行うか否かを判定する。また、第2範囲値Rr2により指定された第2領域R2のブロック毎のビットエラー率と第2リフレッシュ閾値Th2との比較に基づいて第2領域R2のデータのセルフリフレッシュを行うか否かを判定する。このようにすることで、NANDメモリ11中で第1領域R1が占める範囲と第2領域R2が占める範囲が調整可能となる。
【0049】
(第2実施形態)
次に第2実施形態について、
図5を用いて説明する。本実施形態では、第1実施形態に対して、NANDメモリ11中のプログラムD11または地図データD21の更新の作動が追加される。その他の構成および作動は、第1実施形態と同じである。
【0050】
本実施形態では、
図5に示すように、制御装置2の演算回路23は、ステップS310で、車外通信装置を介して更新データの要求を車外のデータサーバに無線送信する。データサーバは、この更新データの要求を受信すると、ステップS410で、更新用一時データD22およびパラメータ更新値を、制御装置2宛に送信する。
【0051】
更新用一時データD22は、第1実施形態と同様、上述の車外通信装置を介して車両の外部のデータサーバから取得される、プログラムD11および地図データD21の更新用一時データ(例えば、更新前と更新後の差分データ)である。
【0052】
パラメータ更新値は、更新用一時データD22が制御システムで反映された後に第1リフレッシュ閾値Th1、第2リフレッシュ閾値Th2、第1範囲値Rr1、第2範囲値Rr2が取るべき値である。これらは、現在のNANDストレージデバイス1に記録されている第1リフレッシュ閾値Th1、第2リフレッシュ閾値Th2、第1範囲値Rr1、第2範囲値Rr2とすべて同じである場合も、一部が異なっている場合も、すべてが異なっている場合もある。
【0053】
第1リフレッシュ閾値Th1、第2リフレッシュ閾値Th2、第1範囲値Rr1、第2範囲値Rr2の一部または全部を変化させるのは、NANDメモリ11中に記録されるデータの使われ方およびサイズの一方または両方が変化することが原因の場合がある。その場合、更新用一時データD22の作成者は、変化の態様に応じて、第1リフレッシュ閾値Th1、第2リフレッシュ閾値Th2、第1範囲値Rr1、第2範囲値Rr2の一部または全部を変化させるよう、パラメータ更新値のデータを作成する。そして作成者は、更新用一時データD22およびパラメータ更新値をデータサーバに保存する。
【0054】
例えば、更新用一時データを適用することでプログラムD11が部分的に変更された結果、地図データD21の読み出し頻度が高くなる場合は、第2リフレッシュ閾値Th2を現在より低い値に変更してもよい。
【0055】
また例えば、更新用一時データを適用することでプログラムD11が部分的に変更された結果、動的学習データD12の書き込み頻度および読み出し頻度が高くなる場合は、第1リフレッシュ閾値Th1を現在より低い値に変更してもよい。
【0056】
また例えば、更新用一時データを適用することで地図データD21のデータサイズが増大する場合、第1領域R1を現在よりも小さくし、第2領域R2を現在よりも大きくするよう、第1範囲値Rr1、第2範囲値Rr2を変更してもよい。逆に、更新用一時データを適用することで地図データD21のデータサイズが減少する場合、第1領域R1を現在よりも大きくし、第2領域R2を現在よりも小さくするよう、第1範囲値Rr1、第2範囲値Rr2を変更してもよい。
【0057】
演算回路23は、このように送信された更新用一時データD22およびパラメータ更新値を、ステップS320で受信し、続くステップS330で、更新用一時データD22をNANDメモリ11の第2領域R2に記録する。パラメータ更新値は、NANDメモリ11に記録してもよいし、メモリ22の不揮発性記憶媒体に記録してもよい。
【0058】
その後、演算回路23は、処理負荷が低いタイミング、車両が走行していないタイミング、あらかじめ定められた時刻が到来したタイミング等、更新すべきタイミングが訪れた場合に、ステップS340に進む。そしてステップS340で、更新用一時データD22の内容に従って、NANDメモリ11中のプログラムD11および地図データD21を更新する。
【0059】
続いてステップS350では、パラメータ更新値に記載の第1リフレッシュ閾値Th1、第2リフレッシュ閾値Th2、第1範囲値Rr1、第2範囲値Rr2を含むパラメータ設定コマンドを、NANDストレージデバイス1の内蔵コントローラ12に送信する。内蔵コントローラ12のプロセッサ123は、ステップS510で、I/O122を介してこのパラメータ設定コマンドを受信する。
【0060】
そしてプロセッサ123は続くステップS520で、受信したパラメータ設定コマンドに含まれる値と一致するよう、メモリ121内の第1リフレッシュ閾値Th1、第2リフレッシュ閾値Th2、第1範囲値Rr1、第2範囲値Rr2を、必要があれば変更する。
【0061】
以上のような処理により、プログラムD11、地図データD21の更新、および、それに伴うメモリ121内の第1リフレッシュ閾値Th1、第2リフレッシュ閾値Th2、第1範囲値Rr1、第2範囲値Rr2の更新が、完了する。その後は、新たな第1リフレッシュ閾値Th1、第2リフレッシュ閾値Th2、第1範囲値Rr1、第2範囲値Rr2に従って、誤り訂正の処理、およびリフレッシュ処理が実行される。
【0062】
[1]以上説明した通り、第1リフレッシュ閾値Th1および第2リフレッシュ閾値Th2の一方または両方は、制御装置2からのコマンドに基づいて変更可能である。このようにすることで、状況に応じた第1リフレッシュ閾値Th1および第2リフレッシュ閾値Th2の柔軟な調整が可能となる。第1範囲値Rr1および第2範囲値Rr2の一方または両方についても同様である。
【0063】
[2]そしてその更新は、プログラムD11または地図データD21の更新時に、当該更新と連動して、実現可能である。このようにすることで、プログラムまたは地図データの更新の内容に対応した第1リフレッシュ閾値Th1および第2リフレッシュ閾値Th2の柔軟な調整が可能となる。第1範囲値Rr1および第2範囲値Rr2の一方または両方についても同様である。
【0064】
なお、本実施形態と第1実施形態で共通する構成および作動からは、第1、第2実施形態と同様の効果が得られる。
【0065】
(第3実施形態)
次に第3実施形態について説明する。本実施形態は、第1、第2実施形態に対して、プログラムD11、動的学習データD12、地図データD21、更新用一時データD22の各々のデータサイズと第1領域R1、第2領域R2の容量との関係について、更に規定するものである。ここでいうデータサイズは、論理アドレス上で占めるデータサイズをいい、容量とは、NANDメモリ11中の物理アドレスに基づく容量をいう。
【0066】
図6に示すように、本実施形態におけるプログラムD11のデータサイズをDS11とし、動的学習データD12のデータサイズをDS12とし、地図データD21のデータサイズをDS21として、更新用一時データD22のデータサイズをDS22とする。そして、第1領域R1の容量をRS1、第2領域R2の容量をRS2とすると、
RS1/(DS11+DS12)>RS2/(DS21+DS22)
という式が成立する。
【0067】
すなわち、第1領域R1に記憶されるデータのデータサイズに対する第1領域R1の容量の比は、第2領域R2に記憶されるデータのデータサイズに対する第2領域R2の容量の比よりも、大きい。
【0068】
第1リフレッシュ閾値Th1が第2リフレッシュ閾値Th2よりも小さいと、第1領域R1で発生するリフレッシュの頻度が増す。しかし、上記のように、第1領域R1に記憶されるデータのデータサイズに対する第1領域R1の容量の比を大きく取ることで、第1領域全体としての摩耗は低く抑えることができる。
【0069】
なお、このようにしても、DS11+DS12<DS21+DS22、RS1<RS2という関係は成立している。地図データD21のデータサイズが他のデータに比べて非常に大きいからである。RS1<RS2という関係が成立しているので、DS11+DS12に対するRS1の比を大きくしても、NANDメモリ11全体の容量の増加量は比較的抑えられる。
【0070】
なお、本実施形態と第1、第2実施形態で共通する構成および作動からは、第1、第2実施形態と同様の効果が得られる。
【0071】
(他の実施形態)
なお、本発明は上記した実施形態に限定されるものではなく、適宜変更が可能である。また、上記各実施形態は、互いに無関係なものではなく、組み合わせが明らかに不可な場合を除き、適宜組み合わせが可能である。また、上記各実施形態において、実施形態を構成する要素は、特に必須であると明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。また、上記各実施形態において、実施形態の構成要素の個数、数値、量、範囲等の数値が言及されている場合、特に必須であると明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではない。また、上記実施形態において、センサから車両の外部環境情報(例えば車外の湿度)を取得することが記載されている場合、そのセンサを廃し、車両の外部のサーバまたはクラウドからその外部環境情報を受信することも可能である。あるいは、そのセンサを廃し、車両の外部のサーバまたはクラウドからその外部環境情報に関連する関連情報を取得し、取得した関連情報からその外部環境情報を推定することも可能である。特に、ある量について複数個の値が例示されている場合、特に別記した場合および原理的に明らかに不可能な場合を除き、それら複数個の値の間の値を採用することも可能である。また、上記各実施形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に特定の形状、位置関係等に限定される場合等を除き、その形状、位置関係等に限定されるものではない。また、本発明は、上記各実施形態に対する以下のような変形例および均等範囲の変形例も許容される。なお、以下の変形例は、それぞれ独立に、上記実施形態に適用および不適用を選択できる。すなわち、以下の変形例のうち任意の組み合わせを、上記実施形態に適用することができる。
【0072】
また、本開示に記載の演算回路23、プロセッサ123およびその手法は、コンピュータプログラムにより具体化された一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリを構成することによって提供された専用コンピュータにより、実現されてもよい。あるいは、本開示に記載の演算回路23、プロセッサ123およびその手法は、一つ以上の専用ハードウェア論理回路によってプロセッサを構成することによって提供された専用コンピュータにより、実現されてもよい。もしくは、本開示に記載の制御部及びその手法は、一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリと一つ以上のハードウェア論理回路によって構成されたプロセッサとの組み合わせにより構成された一つ以上の専用コンピュータにより、実現されてもよい。また、コンピュータプログラムは、コンピュータにより実行されるインストラクションとして、コンピュータ読み取り可能な非遷移有形記録媒体に記憶されていてもよい。
【0073】
(変形例1)
上記実施形態においては、NANDメモリ11内の記憶領域が第1領域R1と第2領域R2を有し、それぞれ異なるリフレッシュ閾値(すなわち、第1リフレッシュ閾値Th1、第2リフレッシュ閾値Th2)が割り当てられる。しかし、NANDメモリ11内の記憶領域は、更に第3領域を有し、第3領域には第1リフレッシュ閾値Th1、第2リフレッシュ閾値Th2とは別に第3リフレッシュ閾値が割り当てられていてもよい。第4領域以降も同様である。
【0074】
(変形例2)
上記実施形態では、第1領域R1についてのビットエラー量として、第1領域R1中のブロック毎のビットエラー率を例示しているが、これに限られない。第2領域R2についても同様である。
【0075】
(変形例3)
上記実施形態では、外部機器の一例として、車両の走行支援を行う制御装置2が例示されているが、外部機器は、車両の走行支援でなく他の処理(例えば、ルートナビゲーション)を行う処理装置であってもよい。また、外部機器およびNANDストレージデバイス1は、車両に搭載されていない装置(例えば、ドメインコントローラ)でもよい。
【0076】
(本開示の観点)
[第1の観点]
NANDストレージデバイスであって、
当該NANDストレージデバイスに内蔵されるNANDメモリ(11)と、
当該NANDストレージデバイスに内蔵され、前記NANDストレージデバイスの外部にある外部機器(2)からのコマンドに従って前記NANDメモリに対して読み書きを行う内蔵コントローラ(12)と、を備え、
前記内蔵コントローラは、第1リフレッシュ閾値(Th1)と第2リフレッシュ閾値(Th2)を読み出し、前記NANDメモリのうち第1領域(R1)についてのビットエラー量と前記第1リフレッシュ閾値との比較に基づいて前記第1領域のデータのセルフリフレッシュを行うか否か判定し、前記NANDメモリのうち前記第1領域とは異なる第2領域(R2)についてのビットエラー量と前記第2リフレッシュ閾値との比較に基づいて、前記第2領域のデータのセルフリフレッシュを行うか否かを判定する、NANDストレージデバイス。
[第2の観点]
前記第1リフレッシュ閾値および前記第2リフレッシュ閾値の一方または両方は、前記外部機器からのコマンドに基づいて変更可能である第1の観点に記載のNANDストレージデバイス。
[第3の観点]
前記NANDメモリには、前記外部機器が実行するプログラムまたは前記外部機器が使用する地図データが記憶され、
前記第1リフレッシュ閾値および前記第2リフレッシュ閾値の一方または両方は、前記プログラムまたは前記地図データの更新時に、前記外部機器からのコマンドに基づいて変更可能である第1または第2の観点に記載のNANDストレージデバイス。
[第4の観点]
前記内蔵コントローラは、前記第1リフレッシュ閾値と前記第2リフレッシュ閾値を読み出すと共に、前記NANDメモリ中で前記第1領域が占める範囲を指定する第1範囲値(Rr1)と、前記NANDメモリ中で前記第2領域が占める範囲を指定する第2範囲値(Rr2)とを読み出し、前記第1範囲値により指定された前記第1領域についてのビットエラー量と前記第1リフレッシュ閾値との比較に基づいて前記第1領域のデータのセルフリフレッシュを行うか否か判定し、前記第2範囲値により指定された前記第2領域についてのビットエラー量と前記第2リフレッシュ閾値との比較に基づいて、前記第2領域のデータのセルフリフレッシュを行うか否かを判定する、第1ないし第3の観点のいずれか1つに記載のNANDストレージデバイス。
[第5の観点]
前記第1範囲値および前記第2範囲値の一方または両方は、前記外部機器からのコマンドに基づいて変更可能である第4の観点に記載のNANDストレージデバイス。
[第6の観点]
前記NANDメモリには、前記外部機器が実行するプログラムまたは前記外部機器が使用する地図データが記憶され、
前記第1範囲値および前記第2範囲値の一方または両方は、前記プログラムまたは前記地図データの更新時に、前記外部機器からのコマンドに基づいて変更可能である第4または第5の観点に記載のNANDストレージデバイス。
[第7の観点]
前記第1領域には、前記外部機器が実行するプログラムが記憶され、
前記第2領域には、前記外部機器が前記プログラムを実行する際に使用する地図データが記憶され、
前記第1リフレッシュ閾値よりも前記第2リフレッシュ閾値の方が大きい、第1または第4の観点に記載のNANDストレージデバイス。
[第8の観点]
前記第2領域には、前記プログラムまたは前記地図データを更新するための更新用一時データが記憶される、第7の観点に記載のNANDストレージデバイス。
[第9の観点]
前記第1領域には、前記外部機器が前記プログラムを実行する際に参照および変更する動的学習データが記憶される、第7または第8の観点に記載のNANDストレージデバイス。
[第10の観点]
前記第1領域に記憶されるデータのデータサイズよりも、前記第2領域に記憶されるデータのデータサイズの方が大きく、
前記第1リフレッシュ閾値よりも前記第2リフレッシュ閾値の方が大きく、
前記第1領域に記憶されるデータのデータサイズに対する前記第1領域の容量の比は、前記第2領域に記憶されるデータのデータサイズに対する前記第2領域の容量の比よりも大きい、第1ないし第9の観点のいずれか1つに記載のNANDストレージデバイス。
[第11の観点]
車両に搭載される、第1ないし第10の観点のいずれか1つに記載のNANDストレージデバイス。
【符号の説明】
【0077】
1 NANDストレージデバイス
2 制御装置
11 NANDメモリ
12 内蔵コントローラ
R1 第1領域
R2 第2領域
Th1 第1リフレッシュ閾値
Th2 第2リフレッシュ閾値
Rr1 第1範囲値
Rr2 第2範囲値