(57)【要約】      （修正有）【課題】リアルタイムタスクがNANDデバイスにアクセスしない隙間時間を最大限に活用して、NANDバックグラウンド処理を進める。【解決手段】リアルタイムOS１１を有し、周期的にリアルタイムタスクを実行するホストデバイス１０と、このホストデバイスと通信可能に構成され、NAND型フラッシュメモリとデバイス側OS２１を有するメモリデバイスとを２０備え、デバイス側OSから、ガベージコレクションを行うNANDバックグラウンド処理に要する予測実行時間および対象ブロック数をホスト側OSに送る一方、ホスト側OSはリアルタイムタスク実行に影響を及ぼさないための、NANDバックグラウンド処理の実行開始可能時刻と実行可能時間をデバイス側OSに送信し、デバイス側OSは、リアルタイムタスクがメモリデバイス側にアクセスしない隙間時間において、実行開始可能時刻に、実行可能時間分だけNANDバックグラウンド処理を実行する。【選択図】図４
2016045563.tif 000002
【特許請求の範囲】
【請求項１】
リアルタイムOSを有し、周期的にリアルタイムタスクを実行するホストデバイスと、このホストデバイスと通信可能に構成され、NAND型フラッシュメモリとデバイス側OSを有するメモリデバイスとを備え、
前記メモリデバイス側のOSから、ガベージコレクションを行うNANDバックグラウンド処理に要する予測実行時間およびガベージコレクション対象ブロック数の情報を前記ホストデバイス側のOSに送る一方、
前記ホストデバイス側のOSはリアルタイムタスク実行に影響を及ぼさないための、前記NANDバックグラウンド処理の実行開始可能時刻と実行可能時間を前記メモリデバイス側OSに送信し、
前記メモリデバイス側OSは、リアルタイムタスクが前記メモリデバイス側にアクセスしない隙間時間において、前記実行開始可能時刻に、前記実行可能時間分だけ前記NANDバックグラウンド処理を実行するNANDバックグラウンド処理制御装置。
【請求項２】
リアルタイムOSを有し、周期的にリアルタイムタスクを実行するホストデバイスと、このホストデバイスと通信可能に構成され、NAND型フラッシュメモリとデバイス側OSを有するメモリデバイスとを備え、
前記ホストデバイス側リアルタイムOSは、前記メモリデバイス側におけるガベージコレクションを行うNANDバックグラウンド処理タスクとメイン処理タスクとのタスク切替依頼の信号を前記メモリデバイス側から受信するタスク切替依頼受信部と、前記NANDバックグラウンド処理の実行開始可能時刻および前記NANDバックグラウンド処理を実行してもリアルタイムタスクに支障のない時間である実行可能時間の情報を保持する第１のデータ保持部を有し、
前記メモリデバイス側OSは、前記メモリデバイス側におけるブロックの状況を管理するとともに、前記NANDバックグラウンド処理に要する予測実行時間を算出可能なブロック管理部と、前記NANDバックグラウンド処理タスクと前記メイン処理タスクとのタスク切替依頼の信号を前記ホストデバイス側に送信するタスク切替依頼送信部と、前記NANDバックグラウンド処理におけるガベージコレクション対象ブロック数および前記NANDバックグラウンド処理に要する予測実行時間の情報を保持する第２のデータ保持部を、
備え、
前記メモリデバイス側のOSから、前記予測実行時間および前記ガベージコレクション対象ブロック数の情報を前記ホストデバイス側のOSに送る一方、前記ホストデバイス側のOSはリアルタイムタスク実行に影響を及ぼさないための、実行開始可能時刻と実行可能時間を前記メモリデバイス側OSに送信し、
前記メモリデバイス側OSは、リアルタイムタスクが前記メモリデバイス側にアクセスしない隙間時間において、前記実行開始可能時刻に、前記実行可能時間分だけ前記NANDバックグラウンド処理を実行するNANDバックグラウンド処理制御装置。
【請求項３】
前記ブロック管理部は、前記予測実行時間を算出するための算出ルールを設定可能となっている請求項２に記載のNANDバックグラウンド処理制御装置。
【請求項４】
前記メモリデバイス側から前記ホストデバイス側へのタスク切替依頼の送信は、現状の前記ガベージコレクション対象ブロック数を所定の値との比較結果に応じることを契機とする請求項２または請求項３に記載のNANDバックグラウンド処理制御装置。
【請求項５】
前記メモリデバイス側から前記ホストデバイス側へのタスク切替依頼の送信は、前記ホストデバイス側OSから前記メモリデバイス側OSに対してタスク切替許可通知が送られたことを契機とする請求項２乃至請求項３のいずれか１項に記載のNANDバックグラウンド処理制御装置。
【請求項６】
前記タスク切替依頼の送信に際しては、現状の前記ガベージコレクション対象ブロック数を基に算出したガベージコレクションに要する予測実行時間を引数とする請求項２乃至請求項５のいずれか１項に記載のNANDバックグラウンド処理制御装置。
【請求項７】
前記ホストデバイス側では、前記予測実行時間が前記実行可能時間よりも小さければ、実際に前記NANDバックグラウンド処理を実行してよい時間ｔに前記予測実行時間を設定し、
前記予測実行時間が前記実行可能時間よりも小さくなければ、実際に前記NAND バックグラウンド処理を実行してよい時間ｔに前記実行可能時間を設定する請求項１乃至請求項６のいずれか１項に記載のNANDバックグラウンド処理制御装置。
【請求項８】
前記時間ｔは、現在の時刻から、次にリアルタイムタスクを起動するまでの空き時間を考慮して決定する請求項７に記載のNANDバックグラウンド処理制御装置。
【請求項９】
リアルタイムOSを有し、周期的にリアルタイムタスクを実行するホストデバイスと、このホストデバイスと通信可能に構成され、NAND型フラッシュメモリとデバイス側OSを有するメモリデバイスとを備え、
メモリデバイス側OSは、 ガベージコレクションを行うNANDバックグラウンド処理の緊急度を示す閾値レベル１と、より緊急度の高い閾値レベル２の２段階の閾値を設定し、
閾値レベル１以上閾値レベル２以下の場合には、
前記メモリデバイス側のOSから、前記NANDバックグラウンド処理に要する予測実行時間およびガベージコレクション対象ブロック数の情報を前記ホストデバイス側のOSに送る一方、前記ホストデバイス側のOSはリアルタイムタスク実行に影響を及ぼさないための、実行開始可能時刻と実行可能時間を前記メモリデバイス側OSに送信し、
前記メモリデバイス側OSは、リアルタイムタスクが前記メモリデバイス側にアクセスしない隙間時間において、前記実行開始可能時刻に、前記実行可能時間分だけNANDバックグラウンド処理を実行するNANDバックグラウンド処理制御装置。
【請求項１０】
前記リアルタイムタスクの周期が所定値よりも小さい場合には閾値レベル１とするガベージコレクション対象ブロック数を小さく設定して１度のタスク切替依頼で処理するブロック数を少なくし、
前記ガベージコレクションリアルタイムタスクの周期が所定値よりも大きい場合には閾値レベル１とするガベージコレクション対象ブロック数を大きめに設定して１度のタスク切替依頼で処理するブロック数を多くする請求項９に記載のNANDバックグラウンド処理制御装置。  
【請求項１１】
前記閾値レベル２を超えた場合には、直ちにリアルタイムモードを一時停止して当該モードから逸脱し、前記メモリデバイス側OSに対して、前記NANDバックグラウンド処理の実行を許可し、
前記NANDバックグラウンド処理完了後、前記ホストデバイス側OSは、再びリアルタイムタスクモードに復帰し、周期的にリアルタイムタスクを起動・実行する請求項９に記載のNANDバックグラウンド処理制御装置。
【請求項１２】
前記予測実行時間の算出については、前記閾値レベル２以下であればガベージコレクション対象ブロック数から算出し、前記閾値レベル１以上２以下であるならば前記閾値レベル１に設定したガベージコレクション対象ブロック数から算出する請求項９に記載のNANDバックグラウンド処理制御装置。
【請求項１３】
前記閾値レベル２も超えた場合、前記メモリデバイス側における前記予測実行時間の算出は、
（１）すべてのガベージコレクション対象ブロックに対してガベージコレクションを行うこととし、ガベージコレクション対象ブロック数を基に算出する、
（２）前記ホストデバイス側OSから、リアルタイムタスクモードを逸脱してもよい時間t１を引数として受け取り、時間t１内に処理できる範囲内のガベージコレクション対象ブロック数を基に算出する、
のいずれかによる請求項９乃至請求項１１のいずれか１項に記載のNANDバックグラウンド処理制御装置。
【請求項１４】
前記ホストデバイス側OSから提示された実行可能時間の長さに応じて、前記メモリデバイス側OSでは、ガベージコレクションを分割して実行する請求項９乃至請求項１３のいずれか１項に記載のNANDバックグラウンド処理制御装置。
【請求項１５】
前記閾値レベル１に設定したガベージコレクション対象ブロック数毎に、分割してNANDバックグラウンド処理する請求項１４に記載のNANDバックグラウンド処理制御装置。
【請求項１６】
システム起動時に、前記ホストデバイス側リアルタイムOSは、前記メモリデバイス側OSに対して、リアルタイムタスクの起動周期、リアルタイムタスク起動後から前記NANDバックグラウンド処理を終了させる必要のある時間を表すデッドライン、リアルタイムタスク起動から前記メモリデバイスへのアクセス発生までの平均時間の情報を送信し、
前記メモリデバイス側OSは、これらの情報を基に、前記ガベージコレクション対象ブロック数の２レベルの閾値を算出する請求項９乃至請求項１５のいずれか1項に記載のNANDバックグラウンド処理制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、NANDバックグラウンド処理制御装置に関する。
【背景技術】
【０００２】
NANDフラッシュメモリは、使用するに従い断片状態となり、使用可能な連続領域が減少するため、書き込み・読み出し等のメイン処理（通常NAND処理、あるいはNANDアクセスとも称する）とは別にガベージコレクションなどのNANDバックグラウンド処理を行う必要がある。
【０００３】
既存のリアルタイムOSとNANDフラッシュメモリで構成したシステムでは、NANDバックグラウンド処理の実行によりリアルタイムタスクの応答時間保証が困難な場合がある。
【０００４】
上記課題に対する現状の解決策として、eMMC規格では、HOST側におけるリアルタイムタスク実行完了の都度、HOST側がNANDデバイス側に対してNANDバックグラウンド処理の実行許可・禁止を通知することで、NANDバックグラウンド処理実行タイミングの制御を実現している。図１は、eMMC規格におけるNANDバックグラウンド処理を説明する図である。
【０００５】
しかしながら、NANDデバイス側OSがHOST側リアルタイムタスクの実行に影響を及ぼすという問題があった。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Embedded MultiMedia Card(e・MMC)e・MMC/Card Product Standard,High Capacity, including Reliable Write, Boot, Sleep Modes, Dual DataRate, Multiple Partitions Supports and Security Enhancement(MMCA, 4.4)JESD84-A44  MARCH 2009JEDEC SOLID STATE TECHNOLOGY ASSOCIATION
【特許文献】
【０００７】
【特許文献１】特開２００６−１７２４９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明が解決しようとする課題は、リアルタイムタスクがNANDデバイスにアクセスしない隙間時間を最大限に活用して、NANDバックグラウンド処理を進めることのできるNANDバックグラウンド処理制御装置を提供することである。
【課題を解決するための手段】
【０００９】
実施形態のNANDバックグラウンド処理制御装置は、リアルタイムOSを有し、周期的にリアルタイムタスクを実行するホストデバイスと、このホストデバイスと通信可能に構成され、NAND型フラッシュメモリとデバイス側OSを有するメモリデバイスとを備え、前記メモリデバイス側のOSから、ガベージコレクションを行うNANDバックグラウンド処理に要する予測実行時間およびガベージコレクション対象ブロック数の情報を前記ホストデバイス側のOSに送る一方、前記ホストデバイス側のOSはリアルタイムタスク実行に影響を及ぼさないための、前記NANDバックグラウンド処理の実行開始可能時刻と実行可能時間を前記メモリデバイス側OSに送信し、前記メモリデバイス側OSは、リアルタイムタスクが前記メモリデバイス側にアクセスしない隙間時間において、前記実行開始可能時刻に、前記実行可能時間分だけ前記NANDバックグラウンド処理を実行する。
【図面の簡単な説明】
【００１０】
【図１】eMMC規格におけるNANDバックグラウンド処理を説明する図である。
【図２】NANDバックグラウンド処理の有無によるリアルタイムタスクに対する影響を説明する図である。
【図３】本実施形態におけるNANDバックグラウンド処理を説明する図である。
【図４】本発明の第１の実施形態に係るNANDバックグラウンド処理制御装置の概略構成を示すブロック図である。
【図５】第１の実施形態に係るNANDバックグラウンド処理制御装置におけるNANDバックグラウンド処理の制御の流れを示すフローチャートである。
【図６】実行可能時間分だけのNANDバックグラウンド処理を説明する図である。
【図７】第２の実施形態に係るNANDバックグラウンド処理制御装置におけるNANDバックグラウンド処理の制御の主な流れを示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明の一実施の形態について、図面を参照して説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。
【００１２】
まず、本実施形態で用いる主要な用語について説明する。
【００１３】
「リアルタイムタスク」とは、終了時刻（デッドライン）までに処理を完了しなければならないタスクをいう。開始予定時刻に起動され、即座に実行を開始する。
【００１４】
「NAND処理」とは、HOST側からの指令を受けて行われるNANDデバイスに対する書き込み・読み出しを行うメイン処理と、“NANDバックグラウンド処理”をいう。
【００１５】
「NANDバックグラウンド処理」とは、HOST側からの要求を受け、NANDデバイスに対してメイン処理とは別に行われるNANDブロック管理のための処理をいう。本実施形態においては、後述する“ガベージコレクション（ＧＣ）”が該当し、ユーザーによる関与が殆ど不要である。メイン処理ではないため、HOST側で実行されるリアルタイムタスクに対して影響が少ないことが求められる。NANDバックグラウンド処理は、HOST側から要求されたメイン処理とは別に、タスクを切り替えることで実行される。図２は、NANDバックグラウンド処理の有無によるリアルタイムタスクに対する影響を説明する図である。図２において、周期ＡはNANDバックグラウンド処理なしの状況を示し、周期Ｂは従来手法によるNANDバックグラウンド処理の一例を示し、周期Ｃは後述する本実施形態に係るNANDバックグラウンド処理の一例を示している。
【００１６】
「ガベージコレクション（ＧＣ）」とは、本実施形態におけるNANDバックグラウンド処理をいう。NANDフラッシュメモリへの書き込みでは、書き込みの前にNANDフラッシュメモリを消去する必要がある。NANDフラッシュメモリでは消去単位がブロック（例えば、５１２ＫＢ）単位のため、書き込みが可能な新規の消去済みのブロック（フリーブロック）が確保できなくなると、書き込みが不能となる。そこで、無効データの含まれているブロックの有効データを集めて新たにフリーブロックに書き直すことにより有効データを移動して、有効データを移動したブロックを無効データのみを含むブロックとして消去を行い、新たにフリーブロックを生成するガベージコレクションを行う。
【００１７】
「ポーリング」とは、定期的な問い合わせのことをいう。
【００１８】
「eMMC規格」とは、フラッシュメモリを利用した組み込み機器向けの外部記憶装置の規格の一つである。半導体部品の分野で規格の標準化を行っている業界団体JEDEC（Joint Electron Device Engineering Council）が定めたもので、NANDフラッシュメモリと制御回路を一つのパッケージにまとめ、メモリカードの規格の一つであるMMC(マルチメディアカード、SDカードの前身)と同じインターフェースで外部と接続される。
【００１９】
（第１の実施形態）
本実施形態においては、メモリデバイスであるNANDデバイス側のOSから、NANDバックグラウンド処理に要する予測実行時間およびガベージコレクション対象ブロック数の情報をホストデバイスであるHOST側のOSに送る一方、HOST側のOSはリアルタイムタスク実行に影響を及ぼさないための、実行開始可能時刻と実行可能時間をNANDデバイス側OSに送信し、NANDデバイス側OSは、リアルタイムタスクがNANDデバイス側にアクセスしない隙間時間において、実行開始可能時刻に、実行可能時間分だけNANDバックグラウンド処理を実行する。図３は、本実施形態におけるNANDバックグラウンド処理を説明する図である。図３に示すように、本実施形態では、リアルタイムタスクがNANDデバイス側にアクセスしない、「隙間時間」を最大限に活用してNANDバックグラウンド処理を実行する。
【００２０】
図４は、本発明の第１の実施形態に係るNANDバックグラウンド処理制御装置の概略構成を示すブロック図である。この装置は汎用のコンピュータ（例えばパーソナルコンピュータ（ＰＣ）等）と、同コンピュータ上で動作するソフトウェアとを用いて実現される。コンピュータとしては、ＣＡＤ（Computer Aided Design）やＣＡＥ（Computer Aided Engineering）に好適なエンジニアリングワークステーション（ＥＷＳ）等も含む。本実施形態はこのようなコンピュータにおいて、NANDデバイス側のOSから、NANDバックグラウンド処理に要する予測実行時間およびガベージコレクション対象ブロック数の情報をHOST側のOSに送る一方、HOST側のOSはリアルタイムタスク実行に影響を及ぼさないため、NANDバックグラウンド処理の実行開始可能時刻と実行可能時間をNANDデバイス側OSに送信するプログラムとして実施することもできる。
【００２１】
図４に示すように、本実施形態に係るNANDバックグラウンド処理制御装置１は、周期的にリアルタイムタスクを実行するホストデバイス（以下、HOST側と称する）１０と、NAND型フラッシュメモリを含むメモリデバイス（以下、NANDデバイス側と称する）２０から構成され、HOST側１０とNANDデバイス側２０は通信可能に構成されている。NANDデバイス側２０は、メイン処理とNANDバックグラウンド処理をシリアルに実行するもので、これら２つの処理は、実行タスクを切り替えることで行われる。
【００２２】
HOST側１０は、HOST側リアルタイムOS１１を具備している。HOST側リアルタイムOS１１は、リアルタイムタスクの実行管理を行うリアルタイムスケジューラ１１１と、タスク切替依頼受信部１１２と、第１のデータ保持部１１３を備えている。
【００２３】
タスク切替依頼受信部１１２は、NANDデバイス側２０における実行タスクの切替に関し、NANDデバイス側２０から、タスク切替依頼の信号を受信する。第１のデータ保持部１１３は、リアルタイムタスクの実行に影響を及ぼさないための、NANDバックグラウンド処理の“実行開始可能時刻”およびNANDバックグラウンド処理を実行しても支障のない時間である“実行可能時間”の情報を保持している。
【００２４】
NANDデバイス側２０は、NANDデバイス側OS２１を具備している。NANDデバイス側OS２１は、ブロック管理部２１１と、タスク切替機能部２１２と、Read/Write部２１３と、タスク切替依頼送信部２１４と、第２のデータ保持部２１５を備えている。
【００２５】
ブロック管理部２１１は、NANDデバイス側２０におけるブロックの状況を管理するとともに、ガベージコレクションに要する“予測実行時間”を算出するための算出ルール（例えば、係数）を設定可能となっている。
【００２６】
タスク切替機能部２１２は、メイン処理タスクとNANDバックグラウンド処理タスクの切替を制御する。
【００２７】
Read/Write部２１３は、HOST側リアルタイムOS１１からの指令を受け取り、NANDデバイスに対する書き込み、読み出しを制御する。
【００２８】
タスク切替依頼送信部２１４は、NANDデバイスにおける実行タスクの切替の可否を問うため、HOST側１０に対して、タスク切替依頼の信号を送信する。
【００２９】
第２のデータ保持部２１５は、ガベージコレクションの対象となる“ガベージコレクション対象ブロック数”および“予測実行時間”の情報を保持している。
【００３０】
次に、以上のように構成されたNANDバックグラウンド処理制御装置１におけるNANDバックグラウンド処理の制御の流れについて説明する。
【００３１】
図５は、第１の実施形態に係るNANDバックグラウンド処理制御装置１におけるNANDバックグラウンド処理の制御の流れを示すフローチャートである。
【００３２】
まず、NANDデバイス側２０は、メイン処理タスクからNANDバックグラウンド処理タスクへのタスク切替依頼の送信をHOST側１０に対して行う（ステップＳ５０１）。タスク切替依頼の送信のきっかけとしては、例えば、現状のガベージコレクション対象ブロック数を所定の閾値との比較結果に応じさせることでも、HOST側OS１１からNANDデバイス側OS２１に対してタスク切替許可通知が送られたことを契機とすることでもよい。尚、タスク切替依頼の送信に際しては、現状のガベージコレクション対象ブロック数を基に算出したガベージコレクションに要する予測実行時間を引数とする。
【００３３】
次に、HOST側１０では、予測実行時間を引数として、メイン処理タスクからNANDバックグラウンド処理タスクへのタスク切替依頼を受信する（ステップＳ５０２）。
【００３４】
次に、HOST側１０では、リアルタイムタスクの実行管理を行うリアルタイムスケジューラによってリアルタイムタスクの実行状況を勘案しながら、NAND バックグラウンド処理の実行開始可能時刻を算出する（ステップＳ５０３）。
【００３５】
次いで、HOST側１０では、NANDデバイス側２０でNAND バックグラウンド処理に費やすことのできる実行可能時間を算出する（ステップＳ５０４）。
【００３６】
続いて、HOST側１０では、予測実行時間が実行可能時間よりも小さいか否かを判定する（ステップＳ５０５）。
【００３７】
次に、予測実行時間が実行可能時間よりも小さければ（ステップＳ５０５でＹｅｓ）、HOST側１０では、実際にNANDバックグラウンド処理を実行してよい時間ｔに予測実行時間を設定（ステップＳ５０６）し、ステップＳ５０８に移行する。ここで、実行してよい時間ｔは、例えば、現在の時刻から、次にリアルタイムタスクを起動するまでの空き時間を考慮して決定するのが好適である。
【００３８】
一方、予測実行時間が実行可能時間よりも小さくなければ（ステップＳ５０５でＮｏ）、HOST側１０では、実際にNAND バックグラウンド処理を実行してよい時間ｔに実行可能時間を設定する（ステップＳ５０７）。
【００３９】
次いで、HOST側１０では、NANDデバイス側からのタスク切替依頼に対する応答を、実行開始可能時刻および実際にNANDバックグラウンド処理を実行してよい時間ｔを引数として、NANDデバイス側２０に送信する（ステップＳ５０８）。 
次に、NANDデバイス側２０では、実行開始可能時刻および実際にNANDバックグラウンド処理を実行してよい時間ｔを引数として、タスク切替依頼に対するHOST側１０からの応答を受信する（ステップＳ５０９）。
【００４０】
次いで、NANDデバイス側２０では、タスク切替が実行され、実行開始可能時刻に実行可能時間分だけNANDバックグラウンド処理タスクが実行され（ステップＳ５１０）、その後NANDバックグラウンド処理の制御を終了する。図６は、実行可能時間分だけのNANDバックグラウンド処理を説明する図である。
【００４１】
以上説明したように、本実施形態によれば、HOST側１０のリアルタイムタスクに影響を与えることなく、NANDバックグラウンド処理を円滑に実行することができるようになる。
【００４２】
（第２の実施形態）
次に、第２の実施形態について説明する。第２の実施形態に係るNANDバックグラウンド処理制御装置の概略構成は、第１の実施形態に係るNANDバックグラウンド処理制御装置の概略構成と基本的には同様である。第２の実施形態では、NANDデバイス側OS２１のブロック管理部２１１において、NANDバックグラウンド処理の重要性（緊急度）を反映させた閾値を設定する。係る閾値は、ガベージコレクション対象ブロック数の多寡に対応させるもので、例えば、レベル１、レベル１よりも重要性（緊急度）の高いレベル２という２レベルの閾値を設定するのが好適である。
【００４３】
NANDバックグラウンド処理制御装置１のシステム起動時に、Host側リアルタイムOS１１は、NANDデバイス側OS２１に対して、リアルタイムタスク起動周期、デッドライン、NANDアクセス発生までの平均時間などの情報を送信する。リアルタイムタスク起動周期は、例えば、５０ｍｓｅｃ毎にリアルタイムタスクを起動するとの情報である。デッドラインは、例えば、リアルタイムタスク起動後から、３０ｍｓｅｃ以内にはNANDバックグラウンド処理を終了させる必要があるとの情報である。NANDアクセス発生までの平均時間は、例えば、リアルタイムタスク起動から約２０ｍｓｅｃ後にNANDアクセスが発生すると事前に予測がつくような場合の情報である。
【００４４】
NANDデバイス側OS２１は、HOST側１０から受信したリアルタイムタスク起動周期、デッドライン、NANDアクセス発生までの平均時間などの情報を基に、ガベージコレクション対象ブロック数の２レベルの閾値を算出する。NANDデバイス側OS２１は、特に、リアルタイムタスクが、ある程度ゆったりした周期で行われるか、極めて小刻みな周期で実行されるかに応じ、例えば、リアルタイムタスクが極めて小刻みに実行されるようなシステムであれば、閾値レベル１とするガベージコレクション対象ブロック数を小さく設定して１度のタスク切替依頼で処理するブロック数を少なくし、リアルタイムタスクの実行に合わせて小刻みにNANDバックグラウンド処理を行うようする。一方、ある程度ゆったりした周期でリアルタイムタスクが実行されるようなシステムでは、閾値レベル１とするガベージコレクション対象ブロック数を大きめに設定し、１度のタスク切替依頼で処理するブロック数を多くする。
【００４５】
２レベルの閾値の設定後、NANDデバイス側OS２１は、閾値を設定した旨の応答をHOST側OS１１に送信する。
【００４６】
NANDデバイス側OS２１は、現状のガベージコレクション対象ブロック数が、閾値レベル２を超えた場合には、予測実行時間、閾値レベル２を引数として、NANDバックグラウンド処理の実行依頼をHOST側OS１１に送信する。
【００４７】
リアルタイムモード時には、HOST側OS１１は周期的にリアルタイムタスクを起動しているが、閾値レベル２を引数とするNANDバックグラウンド処理の実行依頼を受信したHOST側ホストOS１１は、NANDバックグラウンド処理の緊急性が高いので、直ちにリアルタイムモードを一時停止して当該モードから逸脱し、NANDデバイス側OS２１に対して、NANDバックグラウンド処理の実行を許可する。NANDバックグラウンド処理完了後、HOST側ホストOS１１は、再びリアルタイムタスクモードに復帰し、周期的にリアルタイムタスクを起動・実行する。
【００４８】
図７は、第２の実施形態に係るNANDバックグラウンド処理制御装置１におけるNANDバックグラウンド処理の制御の主な流れを示すフローチャートである。尚、図７に示す例では、閾値レベル１以上閾値レベル２以下の場合を示している。
【００４９】
まず、NANDバックグラウンド処理制御装置１のシステム起動時に、HOST側リアルタイムOS１１は、NANDデバイス側OS２１に対して、リアルタイムタスク起動周期、デッドライン、NANDアクセス発生までの平均時間などの情報を送信する。NANDデバイス側OS２１は、受信した情報を基に、ガベージコレクション対象ブロック数の２レベルの閾値を算出し、応答を送信する。
【００５０】
HOST側リアルタイムOS１１は、リアルタイムタスクを起動し、リアルタイムタスクが終了したら、HOST側リアルタイムOS１１はNANDデバイス側OS２１に対してNANDバックグラウンド処理実行許可を送信する。
【００５１】
NANDデバイス側OS２１は、NANDバックグラウンド処理実行許可を受信すると、現状のガベージコレクション対象ブロック数が閾値レベル１よりも多いか否かを判定する（ステップＳ７０１）。
【００５２】
ガベージコレクション対象ブロック数が閾値レベル１よりも多ければ（ステップＳ７０１でＹｅｓ）、NANDデバイス側２０において、予測実行時間を算出する（ステップＳ７０２）。予測実行時間の算出については、例えば、閾値レベル２以下であればガベージコレクション対象ブロック数から算出し、閾値レベル１以上２以下であるならば閾値レベル１に設定したガベージコレクション対象ブロック数から算出する、のいずれでもよい。
【００５３】
一方、ガベージコレクション対象ブロック数が閾値レベル１よりも多くなければ（ステップＳ７０１でＮｏ）、NANDバックグラウンド処理の必要がないとしてステップＳ７０１に戻る。
【００５４】
次に、NANDデバイス側２０は、メイン処理タスクからNANDバックグラウンド処理タスクへのタスク切替依頼の送信をHOST側１０に対して行う（ステップＳ７０３）。タスク切替依頼の送信に際しては、ステップＳ７０２で算出した予測実行時間を引数とする。
【００５５】
次に、HOST側１０では、予測実行時間を引数として、メイン処理タスクからNANDバックグラウンド処理タスクへのタスク切替依頼を受信する（ステップＳ７０４）。
【００５６】
次に、HOST側１０では、リアルタイムタスクの実行管理を行うリアルタイムスケジューラによってリアルタイムタスクの実行状況を勘案しながら、NANDバックグラウンド処理の実行開始可能時刻を算出する（ステップＳ７０５）。
【００５７】
次いで、HOST側１０では、NANDデバイス側２０でNANDバックグラウンド処理に費やすことのできる実行可能時間を算出する（ステップＳ７０６）。
【００５８】
続いて、HOST側１０では、予測実行時間が実行可能時間よりも小さいか否かを判定する（ステップＳ７０７）。
【００５９】
次に、予測実行時間が実行可能時間よりも小さければ（ステップＳ７０７でＹｅｓ）、HOST側１０では、実際にNANDバックグラウンド処理を実行してよい時間ｔを予測実行時間に設定（ステップＳ７０８）し、ステップＳ７１０に移行する。
【００６０】
一方、予測実行時間が実行可能時間よりも小さくなければ（ステップＳ７０７でＮｏ）、HOST側１０では、実際にNANDバックグラウンド処理を実行してよい時間ｔを実行可能時間に設定する（ステップＳ７０９）。
【００６１】
次いで、HOST側１０では、NANDデバイス側２０からのタスク切替依頼に対する応答を、実行開始可能時刻および実際にNANDバックグラウンド処理を実行してよい時間tを引数として、NANDデバイス側２０に送信する（ステップＳ７１０）。 
次に、NANDデバイス側２０では、実行開始可能時刻および実際にNANDバックグラウンド処理を実行してよい時間tを引数として、タスク切替依頼に対するHOST側１０からの応答を受信する（ステップＳ７１１）。
【００６２】
次いで、NANDデバイス側２０では、タスク切替が実行され、NANDバックグラウンド処理タスクが実行され（ステップＳ７１２）、NANDバックグラウンド処理の制御を終了する。
【００６３】
上記したように、図６に示す例では、閾値レベル１以上閾値レベル２以下の場合で説明したが、閾値レベル２も超えた場合、NANDデバイス側２０における予測実行時間の算出については、例えば、以下のいずれかのように取り扱うのが好適である。
【００６４】
（１）すべてのガベージコレクション対象ブロックに対してガベージコレクション処理を行うこととし、ガベージコレクション対象ブロック数を基に予測実行時間を算出する、
（２）HOST側OS１１が、NANDデバイス側OS２１から受信したタスク切替依頼通知に対する応答として、リアルタイムタスクモードを逸脱してもよい時間t１を引数として渡すことも可能とし、この時間t１を渡す場合は、時間t１内に処理できる範囲内のガベージコレクション対象ブロックを処理することとして予測実行時間を算出する。
【００６５】
第２の実施形態によれば、フリーブロックの不足状況を反映させた緊急度に応じたNANDバックグラウンド処理が制御できる。
【００６６】
（第３の実施形態）
次に、第３の実施形態について説明する。第３の実施形態に係るNANDバックグラウンド処理制御装置の概略構成は、第２の実施形態に係るNANDバックグラウンド処理制御装置１の概略構成と基本的には同様である。第３の実施形態では、HOST側OS１１から提示された実行可能時間の長さに応じて、NANDデバイス側OS２１では、ガベージコレクションを分割して実行する。例えば、閾値レベル１に設定したガベージコレクション対象ブロック数毎に、分けてNANDバックグラウンド処理する。
【００６７】
第３の実施形態によれば、HOST側１０への応答遅延をできる限り少なくすることができる。
【００６８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６９】
１・・・NANDバックグラウンド処理制御装置
１０・・・HOST側（ホストデバイス）
１１・・・HOST側リアルタイムOS
１１１・・・リアルタイムスケジューラ
１１２・・・タスク切替依頼受信部
１１３・・・第１のデータ保持部
２０・・・NANDデバイス側（メモリデバイス）
２１・・・NANDデバイス側OS
２１１・・・ブロック管理部
２１２・・・タスク切替機能部
２１３・・・Read/Write部
２１４・・・タスク切替依頼送信部
２１５・・・第２のデータ保持部
【図１】
2016045563.tif 000003
【図２】
2016045563.tif 000004
【図３】
2016045563.tif 000005
【図４】
2016045563.tif 000006
【図５】
2016045563.tif 000007
【図６】
2016045563.tif 000008
【図７】
2016045563.tif 000009