(57)【要約】【課題】データ転送時に自身が備えるＣＰＵにかかる負荷を可及的に低減した半導体記憶装置を提供すること。【解決手段】ＮＡＮＤコントローラ３が単位サイズのデータをＲＡＭ２へ書き込む毎に終了通知を直接ＡＴＡ  Ｉ／Ｆコントローラ１に出力し、ＡＴＡ  Ｉ／Ｆコントローラ１が、終了通知を受信する毎に、ＣＰＵ４により作成されたＲＡＭ２のデータのアドレスが転送順に指定されているディスクリプタにしたがってデータをＲＡＭ２から読み出してホスト装置２００に転送する。【選択図】        図２
2010157129.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性の第１メモリと、
前記第１メモリとホスト装置との間のデータ転送用キャッシュとして使用される第２メモリと、
前記第１メモリから前記第２メモリに所定の転送単位でデータ転送する第１のデータ転送を制御する第１コントローラと、
前記第２メモリからホスト装置にデータ転送する第２のデータ転送を制御する第２コントローラと、
ホスト装置から読み出し要求を受信したとき、前記第１のデータ転送の転送先アドレスとしての前記第２メモリのアドレスを前記所定の転送単位毎に指定した読み出し指令を前記第１コントローラに出力し、前記第２のデータ転送の転送元アドレスとしての前記第２メモリのアドレスを転送順に指定したディスクリプタを生成する制御部と、
を備え、
前記第１コントローラは、前記第１のデータ転送を終了する毎に、終了通知を前記第２コントローラに出力し、前記第２コントローラは、前記終了通知を受信した後、前記ディスクリプタの指定内容にしたがって前記第２のデータ転送を実行する、
ことを特徴とする半導体記憶装置。
【請求項２】
前記読み出し指令は、ホスト装置から読み出し要求されたデータのうちの前記第２メモリにキャッシュされていないデータについて前記第１のデータ転送を実行させる、
ことを特徴とする請求項１に記載の半導体記憶装置。
【請求項３】
前記ディスクリプタでは、前記第２のデータ転送による転送対象のデータが前記第２メモリに予めキャッシュされていたデータであるか、または前記第１のデータ転送により前記第１メモリから転送されてくるデータであるかを識別するフラグが前記第２のデータ転送の転送元アドレス毎に付与されており、
前記第２コントローラは、前記フラグに基づいて前記第２のデータ転送による転送対象のデータが前記揮発性メモリに予めキャッシュされていたデータであるか、または前記第１のデータ転送により前記第１メモリから転送されてくるデータであるかを判定し、前記第２メモリにキャッシュされていたデータについては前記ディスクリプタを取得後に前記第２のデータ転送を実行し、前記第１のデータ転送により前記第１メモリから転送されてくるデータについては前記ディスクリプタを取得後、かつ、前記第１コントローラから受信する終了通知を受信した後に、前記第２のデータ転送を実行する、
ことを特徴とする請求項２に記載の半導体記憶装置。
【請求項４】
前記第１メモリは、ＮＡＮＤ型フラッシュメモリであり、前記所定の転送単位は、前記ＮＡＮＤ型フラッシュメモリの一括書き込み、及び、一括読み出し単位であるページに等しいことを特徴とする請求項１乃至請求項３の何れか１項に記載の半導体記憶装置。
【請求項５】
前記ディスクリプタは、前記第２のデータ転送による転送対象のデータのデータサイズを規定するフィールドを有し、前記データサイズ及び前記終了通知のカウント値に従い、前記データサイズ分の前記第１のデータ転送が完了したことを判定することを特徴とする請求項２に記載の半導体記憶装置。
【請求項６】
前記データサイズを規定するフィールドには、前記所定の転送単位の複数分のデータサイズを記述できることを特徴とする請求項５に記載の半導体記憶装置。
【請求項７】
前記第１コントローラと前記第２コントローラとは、前記終了通知をパルス信号として転送可能な専用配線で接続されていることを特徴とする請求項１乃至請求項６の何れか１項に記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体記憶装置に関する。
【背景技術】
【０００２】
パーソナルコンピュータなどのホスト装置がデータを保管する補助記憶装置として、不揮発性のメモリとしてＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリという）を備えるＳＳＤ（Solid  State  Drive）がある。
【０００３】
ＮＡＮＤメモリからのデータ読み出しはＮＡＮＤメモリの仕様により所定の単位サイズ毎に実行される。これに対し、ＳＳＤがホスト装置から受信する読み出し要求されるデータのサイズは、ＮＡＮＤメモリからの読み出し単位のサイズ（以下、単に単位サイズという）よりも大きい場合がある。ＳＳＤは、読み出し要求された大きなサイズのデータを構成する単位サイズのデータをＮＡＮＤメモリから読み出して逐次ホスト装置に送信するために、ＮＡＮＤメモリから単位サイズのデータをＲＡＭに転送するＮＡＮＤメモリ側のコントローラと、ＲＡＭに格納されているデータをホスト装置に転送するホスト装置側のコントローラと、ホスト装置からの読み出し要求を解釈してこれらデータ転送を実行させる指令を夫々ＮＡＮＤメモリ側およびホスト装置側のコントローラに発行する制御部であるＣＰＵと、を有するデータ転送装置を備えている。
【０００４】
このデータ転送装置において、従来、ＣＰＵはデータ転送のタイミングの制御を単位サイズのデータ毎に割り込み処理的に実行していた。このため、ＣＰＵにかかる負荷が大きく、データ転送装置の転送効率の向上を阻む原因となっていた。転送効率を向上させるために、データ転送時にＣＰＵにかかる負荷を低減する技術が要望されていた。
【０００５】
特許文献１には、ホスト装置はＣＰＵとＡＳＩＣとを備え、ホスト装置と補助記憶装置であるＨＤＤ（Hard  Disk  Drive）との間でデータを転送する際、ホスト装置のＣＰＵはＡＳＩＣに対し転送用のコマンドを記述するディスクリプタを指定し、ＡＳＩＣは該ディスクリプタに記述されているコマンドを実行することによりデータの転送を制御するようにする技術が開示されている。この技術によれば、ホスト装置のＣＰＵは通常は大量に発行する必要があるコマンドを発行する必要がなく、該ＣＰＵのコマンド発行にかかる時間を減らすことができる。
【０００６】
しかしながら、ホスト装置からアクセスを受けるＳＳＤにおける従来のデータ転送装置の場合、ＣＰＵはＮＡＮＤメモリの読み出し単位毎に二つのコントローラ間の転送処理のタイミングの制御を行うという役割を担っていたため、転送制御の自動化を行いにくく、上記特許文献１の技術を適用することはできない。
【０００７】
【特許文献１】特開２００１−２８２７０５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、データ転送時に自身が備えるＣＰＵにかかる負荷を可及的に低減した半導体記憶装置を提供する。
【課題を解決するための手段】
【０００９】
本願発明の一態様によれば、不揮発性の第１メモリと、前記第１メモリとホスト装置との間のデータ転送用キャッシュとして使用される第２メモリと、前記第１メモリから前記第２メモリに所定の転送単位でデータ転送する第１のデータ転送を制御する第１コントローラと、前記第２メモリからホスト装置にデータ転送する第２のデータ転送を制御する第２コントローラと、ホスト装置から読み出し要求を受信したとき、前記第１のデータ転送の転送先アドレスとしての前記第２メモリのアドレスを前記所定の転送単位毎に指定した読み出し指令を前記第１コントローラに出力し、前記第２のデータ転送の転送元アドレスとしての前記第２メモリのアドレスを転送順に指定したディスクリプタを生成する制御部と、を備え、前記第１コントローラは、前記第１のデータ転送を終了する毎に、終了通知を前記第２コントローラに出力し、前記第２コントローラは、前記終了通知を受信した後、前記ディスクリプタの指定内容にしたがって前記第２のデータ転送を実行する、ことを特徴とする半導体記憶装置が提供される。
【発明の効果】
【００１０】
本発明によれば、データ転送時に自身が備えるＣＰＵにかかる負荷を可及的に低減した半導体記憶装置を提供することができる。
【発明を実施するための最良の形態】
【００１１】
以下に添付図面を参照して、この発明にかかる半導体記憶装置の実施の形態を詳細に説明する。なお、本実施の形態によりこの発明が限定されるものではない。
【００１２】
（実施の形態）
図１は、ホスト装置および半導体記憶装置の構成を説明する図である。本実施の形態においては、半導体記憶装置の一例として、ハードディスクドライブ（ＨＤＤ）と同じ接続インターフェース規格（ＡＴＡ規格）を持つ、不揮発性メモリであるＮＡＮＤ型フラッシュメモリを備えるＳＳＤを取り上げて説明する。ホスト装置は、セクタ単位（例えば、５１２Ｂ）でＳＳＤへのアクセスを行う。
【００１３】
図１において、ＳＳＤ１００とホスト装置２００との間はＡＴＡ（Advanced  Technology  Attachment）規格の通信インターフェースで接続されている。ＳＳＤ１００は、ホスト装置２００からデータの読み出し要求を受信すると、読み出し要求されたデータをホスト装置２００に送信する。ＳＳＤ１００がホスト装置２００から受信する読み出し要求は、読み出し先のアドレス情報（例えば、ＬＢＡ：Logical  Block  Addressing）と読み出し要求するデータのサイズとが含まれている。読み出し要求されるデータは例えば一つのファイルであり、該ファイルの大きさに応じたサイズのデータが読み出し要求される。
【００１４】
ＳＳＤ１００は、データ転送装置１０とＮＡＮＤメモリ２０とを備える。ＮＡＮＤメモリ２０からのデータの読み出しは所定の単位サイズ毎に実行される。単位サイズは、例えば、ＮＡＮＤメモリ２０における一括書き込み、及び、一括読み出し単位であるページ単位に等しい。ページ単位は製品により異なるが、例えば、２ｋＢ、４ｋＢ、または、８ｋＢのサイズを有する。データ転送装置１０は、ホスト装置２００から受信する読み出し要求に含まれるアドレス情報およびデータのサイズに基づいて、読み出し要求されたデータを構成する単位サイズのデータのＮＡＮＤメモリ２０におけるアドレスを求め、該求めたアドレスに基づいてＮＡＮＤメモリ２０から単位サイズのデータを読み出してホスト装置２００に転送する。
【００１５】
図２は、本発明の実施の形態の要部であるデータ転送装置１０の構成を説明する図である。図２において、データ転送装置１０は、ＡＴＡインターフェース（Ｉ／Ｆ）コントローラ１、ＲＡＭ２、ＮＡＮＤコントローラ３、ＣＰＵ４、データテーブル５、およびＳＲＡＭ６を備える。ＡＴＡ  Ｉ／Ｆコントローラ１、ＲＡＭ２、ＮＡＮＤコントローラ３、ＣＰＵ４、およびＳＲＡＭ６は、内部バス７を介して夫々接続されており、ＡＴＡ  Ｉ／Ｆコントローラ１とＮＡＮＤコントローラ３との間は終了通知信号線８で接続されている。
【００１６】
ＲＡＭ２は、ホスト装置２００とＮＡＮＤメモリ２０との間のデータ転送用のキャッシュとして使用される揮発性メモリである。つまり、ＲＡＭ２は、ＮＡＮＤメモリ２０に格納されている一部の単位サイズのデータをキャッシュしている。ＲＡＭ２は、データ転送用のキャッシュとして機能すればよく、必ずしも揮発性メモリで構成される必要はない。例えば、ＮＡＮＤメモリ２０と比較して高速動作が可能なＦｅＲＡＭ（Ferro electric Random Access Memory）などをキャッシュメモリとして使用してもよい。
【００１７】
データテーブル５は、読み出し要求されるデータと該データを構成する夫々の単位サイズのデータの格納位置（ＲＡＭ２またはＮＡＮＤメモリ２０のアドレス）とを対応付けるためのテーブルであって、読み出し要求に含まれるアドレス情報およびデータサイズを検索キーとして検索すると、各単位サイズのデータの格納位置を求めることができるように構成されている。
【００１８】
ＣＰＵ４は、ホスト装置２００から受信した読み出し要求をＡＴＡ  Ｉ／Ｆコントローラ１および内部バス７を介して受信する。またＣＰＵ４は、該読み出し要求に含まれるアドレス情報およびデータサイズを検索キーとしてデータテーブル５を検索して読み出し要求されたデータを構成する単位サイズのデータの格納位置を求める。ＣＰＵ４は、求めた格納位置に基づき、読み出し要求されたデータを構成する単位サイズのデータをＲＡＭ２にキャッシュされているデータとキャッシュされていないデータとに分ける。ＣＰＵ４は、ＲＡＭ２にキャッシュされていない単位サイズのデータをＮＡＮＤメモリ２０から逐次読み出して夫々ＲＡＭ２に書き込み先アドレスを指定して格納させる読み出し指令を、ＮＡＮＤコントローラ３に出力する。またＣＰＵ４は、ＲＡＭ２からデータを逐次読み出させてホスト装置２００に転送させる転送指令として機能するディスクリプタを作成してＳＲＡＭ７にセットし、該セットしたディスクリプタに基づく転送を開始させる転送開始指令をＡＴＡ  Ｉ／Ｆコントローラ１に出力する。ディスクリプタの詳細については後述する。
【００１９】
ＮＡＮＤコントローラ（第１コントローラ）３は、ＮＡＮＤメモリ２０に接続され、ＣＰＵ４からのデータ読み出し指令に基づいて、ＮＡＮＤメモリ２０から単位サイズのデータを読み出し、該読み出したデータをＲＡＭ２に格納する（第１のデータ転送）。ＮＡＮＤコントローラ３は、一つの単位サイズのデータをＲＡＭ２に格納完了する毎にＡＴＡ  Ｉ／Ｆコントローラ１へ終了通知パルスを発行する。
【００２０】
ＡＴＡ  Ｉ／Ｆコントローラ（第２コントローラ）１は、ＮＡＮＤコントローラ３から終了通知信号線８を介して受信する終了通知パルスをカウントし、ＣＰＵ４によりＳＲＡＭ６に設置されたディスクリプタおよび終了通知パルスのカウント値に基づいてＲＡＭ２に格納されているデータをＡＴＡ規格に則した方式で逐次ホスト装置に転送する（第２のデータ転送）。
【００２１】
ＳＲＡＭ６は、ＣＰＵ４により複数のディスクリプタがセットされる。
【００２２】
図３はＳＲＡＭ６にセットされているディスクリプタについて詳しく説明する図である。ＳＲＡＭ６には、一つの読み出し要求に対応して一つ以上のディスクリプタがセットされる。夫々のディスクリプタは、フラグフィールド６１と、転送元アドレスフィールド６２と、データサイズフィールド６３とを有している。
【００２３】
転送元アドレスフィールド６２は、転送対象とするデータが格納されているＲＡＭ２のアドレス、データサイズフィールド６３は、該データのサイズが夫々記述されている。データのサイズは、例えば、ホスト機器のアクセス単位であるセクタ単位のデータの個数として記述される。１段目のディスクリプタはアドレスαから４セクタ分のデータを表し、２段目のディスクリプタはアドレスβから８セクタ分のデータを表している。フラグフィールド６１は、転送元アドレスフィールド６２およびデータサイズフィールド６３の値により示される転送対象のデータがＲＡＭ２に予めキャッシュされているデータか否かを識別するためのフラグが記述される領域であり、予めキャッシュされているデータの場合、「０」が記述され、キャッシュされていないデータの場合、すなわち読み出し指令によりＮＡＮＤメモリ２０から転送されてくるデータである場合、「１」が記述される。例えば、３段目のディスクリプタで記述されるアドレスδからの４セクタ分のデータは、ＲＡＭ２に予めキャッシュされている。
【００２４】
ＳＲＡＭ６にセットされるディスクリプタは、転送元アドレスフィールド６２およびデータサイズフィールド６３の値により示される転送対象のデータが読み出し要求されたデータのデータ配置に対応するように配列されており、ＡＴＡ  Ｉ／Ｆコントローラ１は、ディスクリプタを配列されている順番に（この場合は最上段から１段ずつ順番に）読み出す。ＡＴＡ  Ｉ／Ｆコントローラ１は、読み出したディスクリプタのフラグフィールド６１の値が「０」となっている場合、該ディスクリプタの転送元データフィールド６２が示すＲＡＭ２のアドレスから該ディスクリプタのデータサイズフィールド６３が示すサイズのデータを読み出してホスト装置２００に転送し、読み出したディスクリプタのフラグフィールド６１の値が「１」となっている場合、何カウント目の終了通知パルスを受信したとき該ディスクリプタが転送対象とするデータのＲＡＭ２への書き込みが完了するかを算出し、終了通知パルスのカウント値が算出結果に達したとき、該ディスクリプタに記述されている転送対象のデータを読み出してホスト装置２００に転送する。例えば、４セクタ分のサイズ（１セクタ５１２Ｂとすると、２０４８Ｂ＝２ｋＢ）をＮＡＮＤメモリ２０からの読み出し単位とする仕様になっているＳＳＤ１００の場合、終了通知パルスのカウント値Ｎが、データサイズフィールド６３の示すデータサイズをＳとして、Ｎ＝Ｓ／４＋Ｓｓｕｍ／４に達したとき、該ディスクリプタが転送対象とするデータのＲＡＭ２への書き込みが完了したと判定する。ただし、Ｓｓｕｍは、カウント値がリセットされてから前記ディスクリプタの転送対象のデータのＲＡＭ２への書き込みの開始直後までにＮＡＮＤメモリ２０からＲＡＭ２へ転送されたデータの積算のサイズである。
【００２５】
なお、各ディスクリプタが転送対象とするデータは、一つの単位サイズのデータとは限らず、データサイズフィールド６３に複数の単位サイズのデータ分のサイズを記述されることによってＲＡＭ２の連続したアドレスに格納されている複数の単位サイズのデータを一つのディスクリプタで連続して転送させるようにすることも可能となっている。例えば、図３の２段目のディスクリプタのデータサイズフィールド６３には、データサイズ８（８セクタ）が記述されている。また、フラグフィールド６１には、「１」が記述されている。従って、ＡＴＡ  Ｉ／Ｆコントローラ１は、終了通知パルスのカウント値ＮがＮ＝８／４＋Ｓｓｕｍ／４＝２＋Ｓｓｕｍ／４に達したとき、該ディスクリプタが転送対象とするデータのＲＡＭ２への書き込みが完了したと判定する。
【００２６】
次に、以上のように構成されるデータ転送装置１０の動作を説明する。図４は、データ転送装置１０の動作を説明するフローチャートである。
【００２７】
図４において、まず、ＳＳＤ１００がホスト装置２００から読み出し要求を受信し、データ転送装置１０のＣＰＵ４が該読み出し要求を受信すると（ステップＳ１）、ＣＰＵ４はデータテーブル５を検索して単位サイズのデータの格納位置を求める（ステップＳ２）。
【００２８】
ＣＰＵ４は、ＮＡＮＤメモリ２０に格納されている単位サイズのデータを読み出す読み出し指令をＮＡＮＤコントローラ３に発行し（ステップＳ３）、該読み出し指令を受信したＮＡＮＤコントローラ３は、受信した読み出し指令に基づいて逐次ＮＡＮＤメモリ２０からデータを読み出してＲＡＭ２に格納し、一つの単位サイズのデータをＲＡＭ２へ格納完了する毎に終了通知パルスをＡＴＡ  Ｉ／Ｆコントローラ１に出力する（ステップＳ４）。
【００２９】
ＣＰＵ４は、ステップＳ２の動作の後、ディスクリプタを作成してＳＲＡＭ６にセットし、ＡＴＡ  Ｉ／Ｆコントローラ１に転送開始指令を出力する（ステップＳ５）。転送開始指令を受信したＡＴＡ  Ｉ／Ｆコントローラ１は、先頭（最上段）のディスクリプタを読み出し（ステップＳ６）、フラグフィールド６１に記述されている値が１であるか否かを判定する（ステップＳ７）。フラグフィールド６１の値が１であった場合（ステップＳ７、Ｙｅｓ）、ＡＴＡ  Ｉ／Ｆコントローラ１は、読み出したディスクリプタによる転送対象のデータの書き込みが完了する終了通知パルスを待つ状態に移行し（ステップＳ８）、該終了通知パルスを受信すると（ステップＳ９）、転送対象のデータをＲＡＭ２から読み出してホスト装置２００に転送する転送処理を実行する（ステップＳ１０）。ステップＳ７において、フラグフィールド６１の値が１ではなく、０であった場合（ステップＳ７、Ｎｏ）、直ちに転送対象のデータをＲＡＭ２から読み出してホスト装置２００に転送する（ステップＳ１０）。
【００３０】
そして、ステップＳ１０の後、ＡＴＡ  Ｉ／Ｆコントローラ１は、ディスクリプタを全て読み出したか否かを判定し（ステップＳ１１）、読み出していないディスクリプタがまだ残っている場合（ステップＳ１１、Ｎｏ）、次のディスクリプタを読み出し（ステップＳ１２）、ステップＳ７に移行する。ＡＴＡ  Ｉ／Ｆコントローラ１がディスクリプタを全て読み出して実行した場合（ステップＳ１１、Ｙｅｓ）、転送動作が終了となる。
【００３１】
図５は、読み出し要求に基づいてディスクリプタが作成される様子を具体的に説明するための図である。例えば４セクタ分のサイズ（１セクタ５１２Ｂとすると、２０４８Ｂ＝２ｋＢ）をＮＡＮＤメモリ２０からの読み出し単位（ページ単位）とする仕様になっているＳＳＤ１００に対し、ステップＳ１において図５（ａ）に示すように夫々読み出し単位のサイズのデータＡ、データＢ、データＣおよびデータＤから構成される１６セクタ分のサイズのファイルがホスト装置２００から読み出し要求されたとする。ステップＳ２において、ＣＰＵ４は、データＡ〜Ｄの格納位置を求め、図５（ｂ）に示すように、データＢはＲＡＭ２のアドレスαにキャッシュデータとして予め格納されており、残りのデータＡ、Ｃ、ＤはＲＡＭ２にキャッシュされておらず、ＮＡＮＤメモリ２０の所定のアドレスに夫々格納されていることを認識したとする。ステップＳ３に移行すると、ＣＰＵ４は、データＡ、データＣ、およびデータＤをＮＡＮＤメモリ２０の夫々のアドレスから読み出させて、夫々ＲＡＭ２のアドレスβ、アドレスγ、アドレスδに格納させるように、ＮＡＮＤコントローラ３に読み出し指令を発行する。
【００３２】
ステップＳ４に移行すると、ＮＡＮＤコントローラ３は、ＮＡＮＤメモリ２０からデータＡ、Ｃ、Ｄを逐次読み出し、夫々ＲＡＭ２のアドレスβ、アドレスγ、アドレスδに書き込む。ＮＡＮＤコントローラ３は、データＡ、Ｃ、およびＤの書き込みを完了する毎に終了通知パルスを発行する。つまり、ＮＡＮＤコントローラ３は、データＡの書き込みを完了すると１回目のパルスを発行し、データＣの書き込みを完了すると２回目のパルスを発行し、データＤの書き込みを完了すると３回目のパルスを発行する。
【００３３】
ステップＳ５に移行すると、ＣＰＵ４は、データの書き込み完了を待ってアドレスβに格納されている単位サイズのデータＡを読み出させてホスト装置２００に転送させるディスクリプタと、アドレスαから単位サイズのデータＢを直ちに読み出させてホスト装置２００に転送させるディスクリプタと、データの書き込み完了を待ってアドレスγから単位サイズのデータＣおよび単位サイズのデータＤを連続して読み出させて転送させるディスクリプタとを作成し、この順番で各ディスクリプタを配列してＳＲＡＭ６にセットする。図５（ｃ）は、セットされたディスクリプタを説明する図である。ステップＳ７〜ステップＳ１２において、ＡＴＡ  Ｉ／Ｆコントローラ１は、図５（ｃ）のディスクリプタを最上段から順番に読み出して、読み出したディスクリプタに基づいてＲＡＭ２からデータを読み出して逐次ホスト装置２００に転送する。
【００３４】
具体的には、ＡＴＡ  Ｉ／Ｆコントローラ１は、最上段のディスクリプタを読み出したとき、データＡのＲＡＭ２への書き込みが完了したときに出力される１回目の終了通知パルスを待つ状態となる。ＡＴＡ  Ｉ／Ｆコントローラ１は、１回目の終了通知パルスを受信したとき、データＡをＲＡＭ２のアドレスβから読み出して転送する。ＡＴＡ  Ｉ／Ｆコントローラ１は、２段目のディスクリプタを読み出したとき、データＢをただちにアドレスαから読み出して転送する。そして、ＡＴＡ  Ｉ／Ｆコントローラ１は、３段目のディスクリプタを読み出したとき、データＣおよびデータＤの書き込みが完了したときに発行される３回目の終了通知パルスを待つ状態となる。ＡＴＡ  Ｉ／Ｆコントローラ１は、該３回目の終了通知パルスを受信したとき、ＲＡＭ２のアドレスγを先頭としてデータＣおよびデータＤを連続して読み出してホスト装置２００に転送する。
【００３５】
このように、本発明の実施の形態によれば、ＮＡＮＤコントローラ３が単位サイズのデータをＲＡＭ２へ書き込む毎に終了通知を直接ＡＴＡ  Ｉ／Ｆコントローラ１に出力し、ＡＴＡ  Ｉ／Ｆコントローラ１が、終了通知を受信する毎に、ＣＰＵ４により作成されたＲＡＭ２のデータのアドレスが転送順に指定されているディスクリプタにしたがってデータをＲＡＭ２から読み出してホスト装置２００に転送するように構成したので、ＣＰＵ４はＮＡＮＤコントローラ３にＮＡＮＤメモリ２０から単位サイズのデータを読み出してＲＡＭ２に格納させる読み出し指令を発行する動作およびディスクリプタを作成する動作を最後として以降は全く転送動作に関与しないので、データ転送時に自身が備えるＣＰＵ４にかかる負荷を可及的に低減したデータ転送装置を提供することができる。
【００３６】
また、ＲＡＭ２をホスト装置２００とＮＡＮＤメモリ２０との間のデータ転送用のキャッシュとして使用するように構成したので、ＲＡＭ２に比べてデータの読み出しに時間がかかるＮＡＮＤメモリ２０からデータを読み出す頻度を低減することができるので、データ転送装置１０のデータ転送効率を向上させることができる。
【００３７】
また、ＡＴＡ  Ｉ／Ｆコントローラ１が、ディスクリプタに付与されているフラグに基づいてＲＡＭ２からホスト装置２００に転送するデータがキャッシュデータであるかまたはＮＡＮＤメモリ２０から転送されてくるデータであるか判断するように構成したので、ＲＡＭ２に格納されているデータを直ちに読み出してホスト装置２００に転送するか、ＮＡＮＤメモリ２０からデータが転送されてくるのを待つか、の判断をＣＰＵ４に実行させる必要がなくなるので、ＣＰＵ４にかかる負荷を可及的に低減することができる。
【００３８】
また、ＮＡＮＤコントローラ３とＡＴＡ  Ｉ／Ｆコントローラ１との間を終了通知パルス専用の信号線である終了通知信号線８で接続しているが、ＮＡＮＤコントローラ３がＣＰＵ４を介することなくＡＴＡ  Ｉ／Ｆコントローラ１に終了通知パルスを伝達できるのであれば、終了通知信号線８に代わる通知手段を採用してもよい。
【００３９】
また、一つのディスクリプタがＲＡＭ２の連続したアドレスに格納されている複数の単位サイズのデータを転送対象とすることができると説明したが、一つのディスクリプタは一つの単位サイズのデータのみを転送対象とするように構成してもよい。
【００４０】
また、ＣＰＵ４がＮＡＮＤコントローラ３に対してどのように読み出し指令を出力するかについては特に詳しく言及しなかったが、ＮＡＮＤコントローラ３が解釈することができるのであればどのように出力するようにしてもよい。例えば、ＣＰＵ４は、一つの単位サイズのデータを読み出してＲＡＭ２に書き込む読み出し指令を逐次出力するようにしてもよいし、該読み出し指令を一括して出力するようにしてもよい。
【図面の簡単な説明】
【００４１】
【図１】ホスト装置および補助記憶装置の構成を説明する図。
【図２】本発明の実施の形態のデータ転送装置の構成を説明する図。
【図３】ディスクリプタについて詳しく説明する図。
【図４】本発明の実施の形態のデータ転送装置の動作を説明するフローチャート。
【図５】ディスクリプタが作成される様子を具体的に説明するための図。
【符号の説明】
【００４２】
１  ＡＴＡ  Ｉ／Ｆコントローラ、２  ＲＡＭ、３  ＮＡＮＤコントローラ、４  ＣＰＵ、５  データテーブル、６  ＳＲＡＭ、７  内部バス、８  終了通知信号線、１０  データ転送装置、２０  ＮＡＮＤメモリ、６１  フラグフィールド、６２  転送元アドレスフィールド、６３  データサイズフィールド、１００  ＳＳＤ、２００  ホスト装置。
【図１】
2010157129.tif 000003
【図２】
2010157129.tif 000004
【図３】
2010157129.tif 000005
【図４】
2010157129.tif 000006
【図５】
2010157129.tif 000007