(57)【要約】【課題】メモリアクセスを抑制しつつ、ディスクリプタチェーン転送の機能に対応していないデバイスへのデータ転送の効率を向上させることができるデータ転送装置、撮像装置およびデータ転送方法を提供する。【解決手段】記録デバイスへデータを転送するための転送制御を行うデータ転送装置は、連続しない複数の領域に、記録デバイスに転送すべき複数のデータを記憶するメモリと、連続する領域に記憶されている記録デバイスに転送すべきデータのアドレスおよびデータサイズ情報を含むディスクリプタ情報を記録デバイスに設定する第１の制御手段と、記録デバイスに設定したディスクリプタ情報に含まれるアドレスに基づくデータの読み出し要求を記録デバイスから受信したことに応じて、読み出し要求により要求されたデータではなく、メモリの連続しない領域に記憶されている複数のデータを順次読み出して、記録デバイスに出力するように制御する第２の制御手段と、を備えることを特徴とする。【選択図】図１
2020077246.tif 000002
【特許請求の範囲】
【請求項１】
記録デバイスへデータを転送するための転送制御を行うデータ転送装置であって、
連続しない複数の領域に、記録デバイスに転送すべき複数のデータを記憶するメモリと、
連続する領域に記憶されている前記記録デバイスに転送すべきデータのアドレスおよびデータサイズ情報を含むディスクリプタ情報を前記記録デバイスに設定する第１の制御手段と、
前記記録デバイスに設定したディスクリプタ情報に含まれるアドレスに基づくデータの読み出し要求を前記記録デバイスから受信したことに応じて、前記読み出し要求により要求されたデータではなく、前記メモリの連続しない領域に記憶されている前記複数のデータを順次読み出して、前記記録デバイスに出力するように制御する第２の制御手段と、
を備えることを特徴とするデータ転送装置。
【請求項２】
前記ディスクリプタ情報には、連続する領域に記録されている転送すべきデータの開始アドレスとサイズとが記述されており、
前記第２の制御手段は、前記記録デバイスに設定したディスクリプタ情報に含まれる開始アドレスから開始される連続する領域に記録されたデータの読み出し要求を前記記録デバイスから受信したことに応じて、前記読み出し要求により要求されたデータではなく、前記メモリの連続しない領域に記録された前記複数のデータを順次読み出して、前記記録デバイスに出力するように制御することを特徴とする請求項１に記載のデータ転送装置。
【請求項３】
前記第１の制御手段は、連続しない領域の複数のデータを前記記録デバイスに転送する場合は、転送すべきデータのアドレスではない仮想アドレスを転送すべきデータのアドレスとして記述したディスクリプタ情報を前記記録デバイスに設定することを特徴とする請求項１または２に記載のデータ転送装置。
【請求項４】
前記仮想アドレスは、前記メモリで使用されないアドレス、または、前記記録デバイスへのデータ転送において使用されないアドレスであることを特徴とする請求項３に記載のデータ転送装置。
【請求項５】
前記仮想アドレスは、予め決められた所定のアドレスであることを特徴とする請求項３に記載のデータ転送装置。
【請求項６】
転送すべきデータを一時的に記憶するバッファと、
前記バッファに記憶されたデータを前記記録デバイスに転送するように制御する第３の制御手段と、を有し、
前記第２の制御手段は、前記メモリの連続しない領域に記憶された複数のデータを前記記録デバイスに転送する際に、前記複数のデータを順次、前記バッファに記憶するように制御し、
前記第３の制御手段は、前記記録デバイスからの前記ディスクリプタ情報に含まれるアドレスに基づくデータの読み出し要求に応じて、前記バッファに記憶されたデータを前記記録デバイスへ順次、転送するように制御することを特徴とする請求項１乃至５のいずれか１項に記載のデータ転送装置。
【請求項７】
前記第２の制御手段による前記バッファへのデータの記憶と、前記第３の制御手段による前記記録デバイスへのデータの転送とは、並行して実行されることを特徴とする請求項６に記載のデータ転送装置。
【請求項８】
前記メモリの連続する領域に記憶されたデータを前記記録デバイスに転送する場合には、
前記第１の制御手段は、前記メモリの連続する領域に記憶されたデータのアドレスとデータサイズ情報を含むディスクリプタ情報を前記記録デバイスに設定し、
前記第２の制御手段は、前記ディスクリプタ情報に基づくデータの読み出し要求を前記記録デバイスから受信したことに応じて、前記読み出し要求により要求されたデータを出力するように制御することを特徴とする請求項１乃至７のいずれか１項に記載のデータ転送装置。
【請求項９】
前記メモリの連続しない複数の領域に記憶された複数のデータを前記記録デバイスに転送する場合には、前記第１の制御手段は、転送すべきデータのアドレスではない仮想アドレスおよび前記複数のデータの合計のデータサイズ情報を含むディスクリプタ情報を前記記録デバイスに設定し、前記第２の制御手段は、前記複数のデータを順次、前記バッファに記憶するように制御し、
前記メモリの連続する領域に記憶されたデータを前記記録デバイスに転送する場合には、前記第１の制御手段は、前記メモリの連続する領域に記憶された転送すべきデータのアドレスとデータサイズ情報を含むディスクリプタ情報を前記記録デバイスに設定し、前記第２の制御手段は、前記データを順次、前記バッファに記憶するように制御し、
前記第３の制御手段は、前記記録デバイスからの読み出し要求に応じて、当該読み出し要求が前記仮想アドレスに基づく読み出し要求であるか、転送すべきデータのアドレスに基づく読み出し要求であるかに関わらず、前記バッファに記憶されたデータを前記記録デバイスへ順次、転送するように制御することを特徴とする請求項６に記載のデータ転送装置。
【請求項１０】
前記第１の制御手段は、前記ディスクリプタ情報を前記記録デバイスに設定すると共に、前記ディスクリプタ情報に記述するアドレスおよびデータサイズ情報と、前記メモリの連続しない領域に記憶された複数のデータそれぞれのアドレスおよびデータサイズ情報に関する情報とを、前記第２の制御手段に設定することを特徴とする請求項１乃至９のいずれか１項に記載のデータ転送装置。
【請求項１１】
前記第１の制御手段は、前記メモリの連続しない領域に記憶された複数のデータそれぞれのアドレスおよびデータサイズ情報を含む第２のディスクリプタ情報を前記メモリに記憶し、当該第２のディスクリプタ情報のアドレスを前記第２の制御手段に設定することを特徴とする請求項１０に記載のデータ転送装置。
【請求項１２】
転送すべきデータのアドレスではない仮想アドレスは、前記第２のディスクリプタ情報のアドレスであることを特徴とする請求項１１に記載のデータ転送装置。
【請求項１３】
前記記録デバイスがディスクリプタチェーン転送に対応しているか否かを判定する判定手段と、
前記判定手段による判定結果に応じて、前記複数のデータを前記バッファに記憶させるか否かを制御する第４の制御手段と、
をさらに備えることを特徴とする請求項６に記載のデータ転送装置。
【請求項１４】
前記記録デバイスは、ＮＶＭ  Ｅｘｐｒｅｓｓ規格に準拠する記録媒体である、
ことを特徴とする請求項１乃至１３のいずれか１項に記載のデータ転送装置。
【請求項１５】
請求項１乃至１４のうち何れか１項に記載のデータ転送装置を備えることを特徴とする撮像装置。
【請求項１６】
連続しない複数の領域に、記録デバイスに転送すべき複数のデータを記憶するメモリを有し、前記記録デバイスへデータを転送するための転送制御を行うデータ転送方法であって、
連続する領域に記憶されている前記記録デバイスに転送すべきデータのアドレスおよびデータサイズ情報を含むディスクリプタ情報を前記記録デバイスに設定する工程と、
前記記録デバイスに設定したディスクリプタ情報に含まれるアドレスに基づくデータの読み出し要求を前記記録デバイスから受信したことに応じて、前記読み出し要求により要求されたデータではなく、前記メモリの連続しない領域に記憶されている前記複数のデータを順次読み出して、前記記録デバイスに出力するように制御する工程と、
を備えることを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイスとメモリとの間でのデータの転送制御を行うデータ転送装置、撮像装置およびデータ転送方法に関するものである。
【背景技術】
【０００２】
Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ転送（以下、ＤＭＡ転送）方式は、ＣＰＵを介さずに、メモリ間のデータ転送や、メモリとデバイス（記録媒体等）との間のデータ転送を高速に行うデータ転送方式として用いられている。特に、メモリと高速なインターフェースを有する記録媒体との間のデータ転送に、ＤＭＡ転送方式が幅広く用いられている。
【０００３】
ＤＭＡ転送方式において、ディスクリプタ情報を用いて、ＤＭＡ転送を繰り返すデータ転送（以下、ディスクリプタチェーン転送）も行われるようになっている。関連する技術として、特許文献１の技術が提案されている。特許文献１の技術では、データ転送制御回路は、記憶されたディスクリプタに転送データが含まれていないとき、メモリからデータを読み出してＩ／Ｏデバイスへ転送している。また、上記データ転送制御回路は、ディスクリプタに転送データが含まれているとき、ディスクリプタバッファからそのデータを読み出してＩ／Ｏデバイスへ転送している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−２７５５３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、ＤＭＡ転送方式において、デバイス側が、ディスクリプタチェーン転送の機能に対応していない場合がある。この場合、ディスクリプタチェーン転送を使用したＤＭＡ転送を行うことができない。例えば、近年、論理デバイスインターフェース規格であるＮＶＭ  Ｅｘｐｒｅｓｓ（以下、ＮＶＭｅ）に準拠したデバイスとメモリとの間でＤＭＡ転送を行うことが可能になっている。ＮＶＭｅは、不揮発性のメモリをＰＣＩ  Ｅｘｐｒｅｓｓを通じて接続するための論理デバイスインターフェース規格である。ＮＶＭｅ規格において、ディスクリプタチェーン転送の機能に対応するＳＧＬ（Ｓｃａｔｔｅｒ  Ｇａｔｈｅｒ  Ｌｉｓｔ）が定義されているが、ＳＧＬに対応していないデバイスも多く存在する。
【０００６】
デバイスが、ディスクリプタチェーン転送の機能に対応していない場合、例えば、ＤＭＡコントローラが、アクセス対象の複数のデータをメモリからそれぞれ読み出し、読み出された複数のデータを纏めて、メモリの別の領域に書き込むことが考えられる。この場合、ＤＭＡコントローラがメモリからデータを読み出して、メモリの別の領域に書き込むというメモリアクセスが生じるため、メモリ帯域が圧迫されることになる。
【０００７】
本発明の目的は、メモリアクセスを抑制しつつ、ディスクリプタチェーン転送の機能に対応していないデバイスへのデータ転送の効率を向上させることができるデータ転送装置、撮像装置およびデータ転送方法を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明のデータ転送装置は、記録デバイスへデータを転送するための転送制御を行うデータ転送装置であって、連続しない複数の領域に、記録デバイスに転送すべき複数のデータを記憶するメモリと、連続する領域に記憶されている前記記録デバイスに転送すべきデータのアドレスおよびデータサイズ情報を含むディスクリプタ情報を前記記録デバイスに設定する第１の制御手段と、前記記録デバイスに設定したディスクリプタ情報に含まれるアドレスに基づくデータの読み出し要求を前記記録デバイスから受信したことに応じて、前記読み出し要求により要求されたデータではなく、前記メモリの連続しない領域に記憶されている前記複数のデータを順次読み出して、前記記録デバイスに出力するように制御する第２の制御手段と、を備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、メモリアクセスを抑制しつつ、ディスクリプタチェーン転送の機能に対応していないデバイスへのデータ転送の効率を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態に係るデータ転送装置の構成例を示すブロック図である。
【図２】第１実施形態に係るメモリおよび記録媒体のデータイメージを示す図である。
【図３】メモリにおける各データの開始アドレスおよびデータサイズの例を示す図である。
【図４】第１実施形態に係るディスクリプタ情報のフォーマットの例を示す図である。
【図５】第１実施形態に係る処理の流れを示すフローチャートである。
【図６】ホストコントローラと記録媒体との間のデータ転送を示すタイミングチャートである。
【図７】第２実施形態に係るデータ転送装置の構成例を示すブロック図である。
【図８】第２実施形態に係るメモリおよび記録媒体のデータイメージを示す図である。
【図９】第２実施形態に係るディスクリプタ情報のフォーマットの例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の各実施形態について図面を参照しながら詳細に説明する。しかしながら、以下の各実施形態に記載されている構成はあくまで例示に過ぎず、本発明の範囲は各実施形態に記載されている構成によって限定されることはない。
【００１２】
＜第１実施形態＞
図１は、本実施形態に係るデータ転送装置１００の構成例を示すブロック図である。データ転送装置１００は、静止画または動画像を撮影する撮像装置に適用され得る。この場合、撮像装置は、データ転送装置１００を有する。以下、データ転送装置１００は、不図示の撮像部および音声入力部を有する撮像機能を有するものとして説明する。データ転送装置１００は、ＣＰＵ１０１、メモリ１０３、映像データ生成部１０４、音声データ生成部１０５、ホストコントローラ１０６およびブリッジ回路１０７を有する。また、データ転送装置１００には、記録媒体１０８（記録デバイス）が接続されている。ＣＰＵ１０１、メモリ１０３、映像データ生成部１０４、音声データ生成部１０５およびブリッジ回路１０７は、メモリバス１０２を介して接続される。記録媒体１０８以外の各部は、所定の回路により実現されてもよい。所定の回路としては、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等が適用され得る。
【００１３】
ＣＰＵ１０１は、データ転送装置１００の全体を制御する。メモリ１０３は、ＤＲＡＭ等であり、データ転送装置１００の内部のメモリである。映像データ生成部１０４は、上記撮像部から入力された信号より映像データを生成し、メモリバス１０２を介して、生成した映像データをメモリ１０３に記憶する。音声データ生成部１０５は、上記音声入力部から入力された信号より音声データを生成し、メモリバス１０２を介して、生成した音声データをメモリ１０３に記憶する。ホストコントローラ１０６はＰＣＩｅ規格に準拠したホストコントローラである。ホストコントローラ１０６は、ＤＭＡ制御回路を内蔵しており、メモリ１０３と記録媒体１０８との間のデータ転送を制御する。ホストコントローラ１０６は、ＰＣＩｅインターフェースを有し、かつＮＶＭ  Ｅｘｐｒｅｓｓ規格（ＮＶＭｅ規格）に準拠した記録媒体１０８を制御する機能を有するものとする。ホストコントローラ１０６は、第１の制御手段および第３の制御手段に対応する。
【００１４】
ブリッジ回路１０７は、メモリバス１０２とホストコントローラ１０６との間に配置される回路である。ブリッジ回路１０７は、アドレス受信部１０９、アドレス検出部１１０、ディスクリプタ用アドレス生成部１１１、アドレス送信部１１２、セレクタ１１３、バッファ１１４およびセレクタ１１５を有する。ブリッジ回路１０７は、第２の制御手段に対応する。記録媒体１０８は、ＮＶＭｅ規格準拠のデバイスであり、かつＮＶＭｅ規格のＳＧＬには非対応な記録媒体である。データ転送装置１００が、上述した撮像装置に適用される場合、メモリ１０３に記憶された映像データや音声データが、記録媒体１０８に転送される。記録媒体１０８には、半導体メモリ等が適用され得る。
【００１５】
図２は、メモリ１０３のデータイメージおよび記録媒体１０８のデータイメージの例を示す図である。上述したように、映像データ生成部１０４および音声データ生成部１０５により生成された各データは、メモリバス１０２を介してメモリ１０３へ記憶される。図２のメモリデータイメージは、メモリ１０３のデータイメージを示し、データ１、データ２およびデータ３は、映像データまたは音声データであるものとする。図２は、３つのデータがメモリ１０３に記憶されている例を示しているが、メモリ１０３に記憶されるデータの数は、４つ以上であってもよい。
【００１６】
図２のメモリデータイメージに示されるように、データ１〜３は、メモリ１０３の連続していない領域に記憶されている。つまり、データ１〜３は、メモリ１０３において散在して記憶されている。データ転送装置１００は、メモリ１０３において散在して記憶されているデータ１〜３を、記録媒体１０８の連続した領域に転送する（書き込む）。図２のメモリデータイメージにおけるディスクリプタ情報１は、データ１の転送制御に用いられる情報である。ディスクリプタ情報２は、データ２の転送制御に用いられる情報である。ディスクリプタ情報３は、データ３の転送制御に用いられる情報である。従って、１つのデータに対して、１つのディスクリプタ情報が、メモリ１０３に記憶される。また、メモリ１０３には、他のディスクリプタとしてディスクリプタ情報Ａが記憶される。
【００１７】
図３（Ａ）は、メモリ１０３における各データ（データ１〜データ３）のアドレス（開始アドレス）およびデータサイズの例を示す図である。図３（Ｂ）は、各データを合計したデータＡＬＬのデータサイズを示し、データＡＬＬのアドレスとして「０ｘ０００５００００」が設定されている例を示す。本実施形態では、アドレス「０ｘ０００５００００」は、仮想アドレスであり、メモリ１１０には実際に存在しないアドレスである。仮想アドレスは、第２のディスクリプタ情報に対応する。仮想アドレスとして、メモリ１１０に存在はしているが、記録媒体１０８に書き込むデータが配置されていないアドレスを使用してもよい。また、本実施形態では仮想アドレスとして、データＡＬＬのアドレスを設定したが、データ１のディスクリプタ情報１の開始アドレスを設定するようにしてもよいし、予め決められた固定のアドレスを設定してもよい。図４（Ａ）は、ディスクリプタ情報１〜３のフォーマットを示す図である。図４（Ｂ）は、ディスクリプタ情報Ａのフォーマットを示す図である。ディスクリプタ情報のフォーマットは、図４（Ａ）および図４（Ｂ）の例には限定されず、任意のフォーマットであってよい。
【００１８】
図５のフローチャートを参照して、本実施形態の処理の流れについて説明する。メモリ１１０の連続しない領域に記録されている複数のデータを記録媒体１０８に書き込む制御を行う場合に図５のフローが実行される。図５のフローでは、記録媒体１０８に書き込む対象のデータが、メモリ１１０に配置されたデータ１、データ２、データ３である場合について説明する。
【００１９】
まず、ＣＰＵ１０１は、記録媒体１０８への書き込み対象となるデータ１、データ２およびデータ３のアドレスおよびデータサイズを含むディスクリプタ情報を生成し、図２のようにメモリ１０３上に配置する（Ｓ５００）。つまり、メモリ１０３にデータ１、データ２およびデータ３が書き込まれる。ディスクリプタ情報１は、データ１のアドレスおよびデータサイズを示す。ディスクリプタ情報２は、データ２のアドレスおよびデータサイズを示す。ディスクリプタ情報３は、データ３のアドレスおよびデータサイズを示す。ＣＰＵ１０１が書き込むディスクリプタ情報１〜３のフォーマットは、図４（Ａ）に示されるように、６４ビットのアドレスおよび３２ビットのデータサイズ情報から構成される。アドレスは、上位１６ビットと下位１６ビットとに分割されている。各ディスクリプタ情報は、１２バイトの情報である。記録媒体１０８に書き込むべき複数のデータにそれぞれ対応する複数のディスクリプタ情報（ディスクリプタ情報１〜３）は、メモリ１０３の連続する領域に配置する。さらに、記録媒体１０８にデータを書き込む順で、それぞれのデータに対応するディスクリプタ情報を配置する。
【００２０】
ＣＰＵ１０１は、図２に示すように、ディスクリプタ情報Ａをメモリ１０３に配置する（Ｓ５０１）。これにより、ディスクリプタ情報Ａが、メモリ１０３に書き込まれる。ディスクリプタ情報Ａは、上述したアドレスおよびデータサイズに加えて、記録媒体１０８へ発行するコマンド情報や、データの転送先となる記録媒体１０８内のアドレスを含む。ディスクリプタ情報Ａは６４バイトの情報である。ディスクリプタ情報Ａは、図４（Ｂ）に示されるように、８ビットのコマンド情報、６４ビットのメモリアドレス、６４ビットの記録媒体１０８のアドレスおよび８ビットのデータサイズを含む。図４（Ｂ）において、記録媒体１０８のアドレスは、デバイスアドレスとして示されている。メモリアドレスおよび記録媒体１０８のアドレスは、上位１６ビットと下位１６ビットとに分割されている。
【００２１】
ＣＰＵ１０１は、記録媒体１０８へデータを転送するために、ＷＲＩＴＥコマンドを示す「０ｘ０１」をコマンド情報に書き込む。また、ＣＰＵ１０１は、メモリアドレスの下位３２ビットのアドレスには、仮想アドレスでありデータＡＬＬの開始アドレスとして設定されたアドレスである「０ｘ０００５００００」を書き込み、上位３２ビットのアドレスに「０ｘ００００００００」を書き込む。ディスクリプタ情報Ａのメモリアドレスは、メモリ１０３の実アドレスではなく、記録媒体１０８とブリッジ回路１０７との間で使用される仮想アドレスである。本実施形態では、記録媒体１０８の開始アドレスに順次データが転送されるものとする。従って、ＣＰＵ１０１は、ディスクリプタ情報Ａにおける記録媒体１０８のアドレスを示すデバイスアドレスに、上位アドレスおよび下位アドレスともに全て「０ｘ００００００００」を書き込む。ディスクリプタ情報Ａのデータサイズに関して、本フォーマットでは、１セクタを５１２バイトとしたセクタ数で設定がされるものとする。従って、ＣＰＵ１０１は、ディスクリプタ情報Ａのデータサイズの箇所には、各データのデータサイズの合計値である４０９６バイトの情報をセクタ数に換算した８セクタ分の情報を設定する。本実施形態では、設定値としてデータサイズから１を引いた値が設定されるものとする。従って、ディスクリプタ情報Ａのデータサイズの箇所には、「０ｘ０００７」が書き込まれる。ＣＰＵ１０１は、ディスクリプタ情報Ａの他の箇所に「０」を書き込む。
【００２２】
次に、ＣＰＵ１０１は、ブリッジ回路１０７のアドレス検出部１１０内のレジスタおよびディスクリプタ用アドレス生成部１１１内のレジスタに情報を書き込む（Ｓ５０２）。ＣＰＵ１０１は、アドレス検出部１１０内のレジスタに、メモリアドレス「０ｘ０００５００００」およびデータサイズを示す「４０９６バイト」の情報を設定する。メモリアドレス「０ｘ０００５００００」は、ディスクリプタ情報Ａの中に書き込まれているデータＡＬＬのアドレスである、また、ＣＰＵ１０１は、ディスクリプタ用アドレス生成部１１１内のレジスタに、メモリ１０３におけるディスクリプタ情報１のアドレス「０ｘ０００００１００」およびディスクリプタ情報の配置数を示す「０ｘ０００００００３」を設定する。そして、ＣＰＵ１０１の指示に基づいて、記録媒体１０８とホストコントローラ１０６との通信が開始されると、ホストコントローラ１０６は、記録媒体１０８に対する書き込み処理を開始する（Ｓ５０３）。
【００２３】
ホストコントローラ１０６は、記録媒体１０８の内部レジスタに、最初にアクセスするディスクリプタ情報Ａの所在を示すアドレス「０ｘ００００１０００」を設定する。次に、記録媒体１０８は、ホストコントローラ１０６からの設定値に従って、メモリ１０３におけるアドレス「０ｘ００００１０００」にあるディスクリプタ情報Ａを、ホストコントローラ１０６、ブリッジ回路１０７、メモリバス１０２を介して読み出す。これにより、記録媒体１０８は、読み出したディスクリプタ情報Ａに基づいて、ＷＲＩＴＥコマンドが指示されていることを検出する。また、記録媒体１０８は、読み出したディスクリプタ情報Ａに基づいて、転送元となるメモリ１０３の開始アドレスが「０ｘ０００５００００」であり、転送先となる記録媒体の開始アドレスが「０ｘ００００００００」であることを検出する。
【００２４】
また、記録媒体１０８は、読み出したディスクリプタ情報Ａに基づいて、転送するデータサイズが８セクタであることを検出する。続けて、記録媒体１０８は、ホストコントローラ１０６に対してデータの読み出し要求を発行する。つまり、ＷＲＩＴＥコマンドの指示が検出されると、ホストコントローラ１０６から記録媒体１０８へデータを書き込むのではなく、記録媒体１０８からホストコントローラ１０６へデータを読み出す処理が実施されることになる。以上のようにして、記録媒体１０８は、ホストコントローラ１０６に対して、ディスクリプタ情報Ａに記述されているメモリアドレス「０ｘ０００５００００」から順次データの読み出しを要求する（Ｓ５０５）。ここで、記録媒体１０８は、Ｓ５０３でレジスタに設定され、Ｓ５０４でメモリ１０３から読み出したディスクリプタ情報Ａに基づいて、ホストコントローラ１０６にデータの読み出し要求を行う。本実施形態では、所定サイズを１２８バイトとし、所定サイズ毎にデータの読み出しを行うものとする。まず、記録媒体１０８は、ディスクリプタ情報Ａに記述されているメモリアドレス「０ｘ０００５００００」から１２８バイト分のデータの読み出し要求を行う。読み出し要求したサイズ分のデータを記録媒体１０８が受信すると、記録媒体１０８は、次のデータ、つまり、「０ｘ０００５００００」から１２８バイト先のアドレスから１２８バイト分のデータの読み出し要求を行う。記録媒体１０８は、ディスクリプタ情報Ａに記述されているデータサイズ分のデータを受信するまで、このように順次データの読み出し要求を行っていく。これにより、データ１〜３の計４０９６バイト分のデータの読み出しが順次実行される。
【００２５】
ここで、ディスクリプタ情報Ａに記述されているメモリアドレス「０ｘ０００５００００」は、仮想アドレスであり、実際には、データ１〜３は、メモリ１０３のアドレス「０ｘ０００５００００」には格納されていない。そのため、Ｓ５０６〜Ｓ５１４のような処理が実行される。
【００２６】
ブリッジ回路１０７は、ディスクリプタ情報Ａに記述されているメモリアドレスが、仮想アドレスではなく、メモリ１０３内の実在するデータ転送に使用可能なアドレスの場合の場合には、Ｓ５０９〜Ｓ５１４の処理を実行せずに、記録媒体１０８からの読み出し要求に応じて、指定されたアドレスから、指定されたサイズ分のデータを一時的にバッファ１１４に記憶し、読み出し要求で要求されたデータがホストコントローラにより転送されるように制御するとよい。
【００２７】
後述するように、データ１、データ２およびデータ３を転送する場合は、メモリ１０３に記憶されているデータ１、データ２およびデータ３は、ブリッジ回路１０７によりブリッジ回路内のバッファ１１４に順次記憶されていく。記録媒体１０８からの、アドレス「０ｘ０００５００００」から１２８バイト（８セクタ）分のデータの要求に対して、ホストコントローラ１０６は、メモリ１０３内の指定されたアドレスのデータではなく、後述するように、ブリッジ回路１０７内のバッファ１１４に記憶されたデータ１、データ２およびデータ３を転送することになる。ホストコントローラ１０６は、バッファ１１４に所定サイズのデータが記憶されているか否かを判定する（Ｓ５０６）。以下、所定サイズを１２８バイトとして説明するが、所定サイズは１２８バイトには限定されない。このサイズは、一回のデータ転送処理で転送するデータサイズである。
【００２８】
Ｓ５０６〜Ｓ５０８の処理は、後述するＳ５０９〜Ｓ５１４の処理と並行して行われる。Ｓ５１０、Ｓ５１２およびＳ５１４の処理により、バッファ１１４に、順次データ１〜３が記憶されていく。バッファ１１４に記憶されたデータのデータサイズが１２８バイトに達していない場合（Ｓ５０６でＮＯ）、フローは、Ｓ５０６に戻る。バッファ１１４に記憶されたデータのデータサイズが１２８バイトに達している場合（Ｓ５０６でＹＥＳ）、ホストコントローラ１０６は、バッファ１１４から１２８バイトのデータを読み出す（Ｓ５０７）。この場合、記録媒体１０８は、バッファ１１４から読み出された１２８バイトのデータを、記録媒体１０８内部のメモリに記録する。ホストコントローラ１０６は、全てのデータ（データ１、データ２およびデータ３）の転送が完了したか否かを判定する（Ｓ５０８）。全てのデータの転送が完了していない場合（Ｓ５０８でＮＯ）、転送処理は未だ終了していないため、フローはＳ５０５に戻る。全てのデータの転送が完了している場合（Ｓ５０８でＹＥＳ）、図５のフローが終了する。
【００２９】
上述したように、Ｓ５０５〜Ｓ５０８の処理と、以下のＳ５０９〜Ｓ５１４の処理とは、並行して実行される。これにより、データの転送時間の短縮化が図られる。Ｓ５０３において、記録媒体１０８がディスクリプタ情報Ａを読み出す際に、ブリッジ回路１０７のアドレス受信部１０９は、ホストコントローラ１０６がブリッジ回路１０７へ発行したアドレス「０ｘ０００５００００」を受信する。アドレス検出部１１０は、受信したアドレスが、事前に自身の内部レジスタに設定されている仮想アドレスを示す「０ｘ０００５００００」であることを検出すると、ディスクリプタ用アドレス生成部１１１にトリガ信号を発行する。
【００３０】
上述したように、ＣＰＵ１０１は、アドレス検出部１１０の内部レジスタにアドレス「０ｘ０００５００００」を設定しているため、アドレス検出部１１０は、トリガ信号を発行する。ディスクリプタ用アドレス生成部１１１はトリガ信号を受信すると、事前に自身の内部レジスタに設定されているディスクリプタ情報１のメモリ１０３におけるアドレスを示す「０ｘ０００００１００」をアドレス送信部１１２へ出力する。この際、アドレス送信部１１２は、ホストコントローラ１０６から発行されたアドレス「０ｘ０００５００００」を、ディスクリプタ用アドレス生成部１１１から出力されたアドレス「０ｘ０００００１００」に置換する。上述したように、アドレス「０ｘ０００５００００」は、ディスクリプタ情報Ａの仮想アドレスであり、アドレス「０ｘ０００００１００」は、ディスクリプタ情報１のメモリ１０３における実アドレスである。アドレス送信部１１２は、上述したアドレス「０ｘ０００００１００」から始まるディスクリプタ情報１を読み出す要求を、メモリ１０３に出力する。これにより、ブリッジ回路１０７は、メモリ１０３からディスクリプタ情報１を読み出して（Ｓ５０９）、ディスクリプタ情報１をバッファ１１４に記憶する。
【００３１】
ディスクリプタ用アドレス生成部１１１は、バッファ１１４に記憶されたディスクリプタ情報１から、アドレスおよびデータサイズを検出する。そして、ディスクリプタ用アドレス生成部１１１は、メモリ１０３におけるデータ１のアドレス「０ｘ００００２０００」からデータサイズ１０２４バイト分のデータの読み出し要求信号をメモリ１０３に発行する。これにより、ブリッジ回路１０７にデータ１が読み出される。ブリッジ回路１０７は、読み出されたデータ１をバッファ１１４に記憶する（Ｓ５１０）。
【００３２】
ディスクリプタ用アドレス生成部１１１は、Ｓ５０９でディスクリプタ情報１を読み出したアドレスに対して、ディスクリプタ情報１つ分のデータサイズである１２バイトを加算したアドレス「０ｘ０００００１０Ｃ」を読み出す要求をメモリ１０３に発行する。メモリ１０３において、ディスクリプタ情報１〜３は、連続した領域に記憶されている。これにより、ブリッジ回路１０７は、メモリ１０３からディスクリプタ情報２を読み出して（Ｓ５１１）、ディスクリプタ情報２をバッファ１１４に記憶する。そして、ディスクリプタ用アドレス生成部１１１は、バッファ１１４に記憶されたディスクリプタ情報２に基づいて、アドレスおよびデータサイズを検出する。ブリッジ回路１０７は、メモリ１０３におけるデータ２のアドレス「０ｘ００００３０００」からデータサイズ１０２４バイト分のデータの読み出し要求信号を発行する。これにより、ブリッジ回路１０７にデータ２が読み出される。ブリッジ回路１０７は、読み出されたデータ２をバッファ１１４に記憶する（Ｓ５１２）。
【００３３】
ディスクリプタ用アドレス生成部１１１は、Ｓ５１１でディスクリプタ情報２を読み出したアドレスに対して、ディスクリプタ情報１つ分のデータサイズである１２バイトを加算したアドレス「０ｘ０００００１１８」を読み出す要求をメモリ１０３に発行する。これにより、ブリッジ回路１０７は、メモリ１０３からディスクリプタ情報３を読み出して（Ｓ５１３）、ディスクリプタ情報３をバッファ１１４に記憶する。ブリッジ回路１０７は、メモリ１０３におけるデータ３のアドレス「０ｘ００００４０００」からデータサイズ１０２４バイト分のデータの読み出し要求信号を発行する。ブリッジ回路１０７は、読み出されたデータ３をバッファ１１４に記憶する（Ｓ５１４）。
【００３４】
上述したＳ５０７において、ホストコントローラ１０６は、バッファ１１４に記憶された所定サイズのデータを順次読み出していく。ホストコントローラ１０６は、バッファ１１４に記憶された所定サイズのデータを順次読み出して、記録媒体１０８の連続した領域に順次記憶していく。これにより、メモリ１０３に記憶されていたデータ１〜３が、記録媒体１０８の連続した領域に記録される。ここで、記録媒体１０８は、ディスクリプタチェーン転送の機能に対応していない記録媒体である。本実施形態では、記録媒体１０８は、ＮＶＭｅの規格に準拠した記録媒体であり、ＳＧＬに対応していない記録媒体であるものとする。次に、ディスクリプタチェーン転送の機能に対応していない記録媒体のデータ転送とディスクリプタチェーン転送の機能に対応している記録媒体のデータ転送との比較例について説明する。
【００３５】
図６は、ホストコントローラ１０６と記録媒体１０８との間のデータ転送を示すタイミングチャートである。図６（Ａ）は、本実施形態が適用されない場合のタイミングチャートを示し、図６（Ｂ）は、本実施形態が適用された場合のタイミングチャートを示す。図６（Ａ）は、ディスクリプタチェーン転送を用いずに、ＤＭＡによるデータ転送が行われる場合のタイミングチャートである。メモリにおいて、データ１〜３は、それぞれ、連続していない領域に記憶されているものとする。データ１の転送において、タイミングＴ９０１において、ＣＰＵがデータの転送開始を指示するとともに、ＤＭＡによるデータ転送の対象のデータのアドレスおよびデータサイズを示すディスクリプタ情報がメモリから読み出される。そして、ディスクリプタ情報に基づいて、メモリからデータ１が読み出され、記録媒体にデータ１が転送される。データ１の読み出しが完了した後に、タイミングＴ９０２において割り込み信号がＣＰＵに通知される。データ２およびデータ３についても、データ１と同様の処理が行われる。データ２のデータ転送については、タイミングＴ９０３からタイミングＴ９０４の間に行われる。データ３のデータ転送については、タイミングＴ９０５からタイミングＴ９０６の間に行われる。従って、本実施形態が適用されない場合、メモリの連続していない領域に記憶される複数のデータ（散在しているデータ）のそれぞれについて、ＣＰＵは、割り込みを検出し、次のデータ転送の開始を指示する必要がある。１つのデータの処理にかかる時間は、少なくともＣＰＵの動作クロックの数百サイクル以上の時間がかかり、データの転送効率が低下する。
【００３６】
一方、図６（Ｂ）のタイミングチャートでは、タイミングＴ９０７において、ホストコントローラ１０６は、ＣＰＵ１０１から転送開始の指示がされた後、アドレスおよびデータサイズを示すディスクリプタ情報を読み出す。バッファ１１４には、上述したように、データ１〜３が順次記憶されていく。このため、ホストコントローラ１０６は、ＣＰＵ１０１が介在することなく、データ１〜３を、所定サイズごとに、バッファ１１４から連続して読み出すことができる。そして、ホストコントローラ１０６は、記録媒体１０８の連続した領域にデータ１〜３を記録させることができる。図６（Ｂ）に示されるように、タイミングＴ９０７とタイミングＴ９０８との間に、ＣＰＵ１０１が介在することがないため、本実施形態が適用されない場合（図６（Ａ）の場合）と比較して、効率的な転送を実現することが可能となる。
【００３７】
ここで、ホストコントローラ１０６が、メモリ１０３からデータ１〜３を読み出して、各データを纏めてメモリ１０３の連続した別の領域に記憶させることが考えられる。この場合、データ１〜３を纏めて記録媒体１０８に転送することができる。しかし、この場合、メモリ１０３からデータ１〜３を読み出すメモリアクセスと、データ１〜３を再度、メモリ１０３に書き込むメモリアクセスとが必要になる。これらのメモリアクセスが生じることにより、メモリ１０３の帯域が圧迫される。この点、本実施形態では、上記のメモリアクセスが生じないため、メモリ１０３に対するメモリアクセスが抑制され、メモリ１０３の帯域が圧迫されることを回避することができる。以上のように、本実施形態では、ディスクリプタチェーン転送に対応していない記録媒体であっても、メモリ帯域を圧迫することなく、効率的なデータ転送を実現することが可能となる。
【００３８】
なお、上述の説明では、メモリ１０３の連続しない複数の領域にそれぞれデータ１、データ２、データ３が記憶されているときに、記録媒体１０８に設定されたディスクリプタ情報Ａを用いて、記録媒体１０８が主導してメモリ１０３のデータを取得して記録媒体１０８に記録する場合について説明した。それに対し、メモリ１０３の連続する領域に記録媒体１０８に転送して記録すべきデータが記憶されている場合については、通常のディスクリプタ情報によるデータの転送が行われる。つまり、メモリ１０３の連続する領域のデータを記録媒体１０８に転送して記録する場合、ＣＰＵ１０１は、ディクリプタ情報Ａに、そのデータのメモリ１０３内での開始アドレスと、データサイズ情報とを記述して、記録媒体１０８に設定する。そして、上述の説明のようなディスクリプタ情報１、２、３は生成せずに、ディスクリプタ情報Ａをブリッジ回路１１７のレジスタに設定する。ブリッジ回路１０７は、Ｓ５０９〜Ｓ５１４の処理を行わずに、ディスクリプタ情報Ａに設定されているアドレスのデータを順次メモリ１０３から読み出して、バッファ１１４に記憶する。バッファ１１４へのデータの格納は、記録媒体１０８から、ディスクリプタ情報Ａに基づくデータの読み出し要求を受信したことに応じて開始するようにしてもよい。記録媒体１０８は、Ｓ５０５で説明したのと同様に、ディスクリプタ情報Ａに基づいて、ディスクリプタ情報Ａに記載されているデータを取得するために、順次データ読み出し要求を行う。データ読み出し要求を受信すると、ホストコントローラ１０６は、Ｓ５０６〜Ｓ５０８のように、バッファ１１４に記憶されたデータを順次記録媒体１０８に転送する。バッファ１１４には、ブリッジ回路１０７によりディスクリプタ情報Ａで指定されているデータが順次記憶されるため、ホストコントローラ１０６は、ディスクリプタ情報Ａで設定したメモリ１０３の連続する領域に記憶されているデータを記録媒体１０８に送信することになる。
【００３９】
このような処理を行うことにより、記録媒体１０８に転送すべきデータが、メモリ１０３の連続する領域にデータが記録されている場合と、メモリ１０３の連続しない複数の領域にデータが記録されている場合とで、同じ構造のディスクリプタ情報を用いて、データを転送することが可能となる。このように、ＣＰＵ１０１によるディスクリプタ情報の生成処理とブリッジ回路１０７へのレジスタへの設定の処理、及び、ブリッジ回路１０７によるバッファ１１４への転送データの記憶処理を変更すれば、転送すべきデータが、メモリ１０３の連続する領域に記憶されている場合であっても連続しない領域に記憶されている場合であっても、ホストコントローラ１０６による処理を変更せずに、ディスクリプタ情報を用いての記録媒体１０８が主導したデータの転送を行うことができるようになる。つまり、ホストコントローラ１０６は、メモリ１０３の連続する領域に記憶されているデータを転送するために、転送データのアドレスに基づく読み出し要求を受信したか、または、連続しない領域に記憶されている複数のデータを転送するために仮想アドレスに基づく読み出し要求を受信したか、に関わらず、読み出し要求に応じて、バッファ１１４に記憶されたデータを要求されたサイズ分だけ転送するようにすればよい。
【００４０】
＜第２実施形態＞
図７は、第２実施形態に係るデータ転送装置６００の構成例を示すブロック図である。第１実施形態と同様、データ転送装置６００は、静止画または動画を撮影する撮像装置に適用されてもよい。第２実施形態のデータ転送装置６００は、転送方式判定部６１６を有する点で、第１実施形態のデータ転送装置１００と異なる。第２実施形態のデータ転送装置６００の転送方式判定部６１６以外の各部は、第１実施形態と同様であるため、説明を省略する。記録媒体６０８は、ＮＶＭｅ規格に準拠するデバイスであり、またデータ転送装置６００から挿抜可能である。
【００４１】
転送方式判定部６１６は、ホストコントローラ６０６を経由して、記録媒体６０８が、ディスクリプタチェーン転送の機能を有しているか否かを判定する。転送方式判定部６１６は、判定手段に対応する。本実施形態では、転送方式判定部６１６は、記録媒体６０８が、ＮＶＭｅ規格のＳＧＬの転送方式に対応しているか否かを判定する機能を有しているものとする。ＳＧＬに対応している記録媒体６０８は、ディスクリプタチェーン転送の機能を有する。ＣＰＵ６０１は、転送方式判定部６１６の判定結果を読み出すことが可能である。ＣＰＵ６０１は、第４の制御手段に対応する。以下、データ転送装置６００は、上述した撮像装置に適用されているものとして説明する。データ転送装置６００は、撮像装置に接続された記録媒体６０８がＮＶＭｅ規格のＳＧＬに対応しているか否かにより、データの転送制御方法を切り替える。記録媒体６０８がＳＧＬに対応していない場合、データ転送装置６００は、第１実施形態と同様の動作を行う。一方、接続された記録媒体６０８がＳＧＬに対応している場合、データ転送装置６００は、ＳＧＬの機能を使用したデータ転送を実施する。
【００４２】
図８は、メモリ６０３のデータイメージおよび記録媒体６０８のデータイメージを示す図である。ＳＧＬに対応しているディスクリプタ情報１〜３のデータサイズは、第１実施形態のディスクリプタ情報１〜３のデータサイズよりも大きい。従って、ディスクリプタ情報１および２のアドレスは、図２のディスクリプタ情報１および２のアドレスより大きい値となっている。図８に示されるように、メモリ６０３において、データ１〜３は、それぞれ、連続していない領域に記憶されている。つまり、データ１〜３は、メモリ６０３において散在して記憶されている。第１実施形態と同様、データ１〜３は、映像データまたは音声データであるものとする。
【００４３】
第１実施形態と同様、第２実施形態のディスクリプタ情報１は、データ１のアドレスおよびデータサイズを含む。ディスクリプタ情報２は、データ２のアドレスおよびデータサイズを含む。ディスクリプタ情報３は、データ３のアドレスおよびデータサイズを含む。図９（Ａ）は、ディスクリプタ情報１、ディスクリプタ情報２およびディスクリプタ情報３のフォーマットを示す。各ディスクリプタ情報は、１６バイトまたは３２バイトの情報である。３２バイトのディスクリプタ情報１およびディスクリプタ情報２は、転送対象のデータのアドレスおよびデータサイズを示す情報だけでなく、次のディスクリプタ情報のアドレスおよびデータサイズを示す情報を含む。１６バイトのディスクリプタ情報３は、ディスクリプタチェーンの最後のディスクリプタ情報であるため、次のディスクリプタ情報に関する情報を含まない。
【００４４】
ディスクリプタ情報１のＤＷ［０］および［１］は、データ１のアドレスを示す。ＣＰＵ６０１は、ＤＷ［０］に「０ｘ００００２０００」を、ＤＷ［１］に「０ｘ００００００００」を設定する。ＣＰＵ６０１は、ＤＷ［２］にデータサイズをバイト数で設定する。ＣＰＵ６０１は、ＤＷ［３］の上位２ビットに、転送対象データの情報であることを示す「０ｘ０」を設定する。ＤＷ［４］〜［７］は、次のディスクリプタ情報２のアドレスおよびデータサイズを示す情報である。ＤＷ［４］および［５］は、ディスクリプタ情報２が配置されたアドレスを示す。ＣＰＵ６０１は、ＤＷ［４］に「０ｘ０００００１２０」を、ＤＷ［５］に「０ｘ００００００００」を設定する。ＣＰＵ６０１は、ＤＷ［６］に、ディスクリプタ情報２のデータサイズである３２バイトを示す「０ｘ００００００２０」を設定する。ディスクリプタ情報１のＤＷ［７］の上位２ビットには、ＣＰＵ６０１により「０ｘ２」が設定されている。この場合、ディスクリプタ情報１は、次のディスクリプタ情報を示す情報を含み、かつ次のディスクリプタ情報が最後の情報ではないことを示す。
【００４５】
ディスクリプタ情報２には、データ２の情報、および次のディスクリプタ情報３を示すアドレスとデータサイズとを設定する。ディスクリプタ情報１と異なる点として、ディスクリプタ情報２のＤＷ［７］の上位２ビットには、ＣＰＵ６０１により「０ｘ３」が設定されている。この場合、ディスクリプタ情報２は、次のディスクリプタ情報を示す情報であり、かつ次のディスクリプタ情報が最後の情報であることを示す。ディスクリプタ情報３は、データ３の情報を含む。ディスクリプタ情報３のＤＷ［３］の上位２ビットには、ＣＰＵ６０１により「０ｘ０」が設定されている。この場合、ディスクリプタ情報３は、最後のディスクリプタ情報であることを示す。ディスクリプタ情報３には、ＤＷ［４］〜ＤＷ［７］が不要なため、ディスクリプタ情報３のデータサイズは１６バイトである。
【００４６】
次に、ＳＧＬを用いたデータ転送動作について説明する。ＳＧＬを用いたデータ転送は、ディスクリプタチェーン転送の機能に対応したデータ転送である。ＣＰＵ６０１は、図８に示すようにディスクリプタ情報Ａをメモリ６０３に書き込む。ディスクリプタ情報Ａのフォーマットについては、第１実施形態のディスクリプタ情報Ａとの差分を説明する。図９（Ｂ）のディスクリプタ情報Ａにおいて、ＤＷ［０］の１５ビット目および１４ビット目には「０ｘ１」が設定されている。この場合、ディスクリプタ情報ＡはＳＧＬを用いた転送情報であることを示す。また、ＣＰＵ６０１は、ディスクリプタ情報ＡのＤＷ［６］およびＤＷ［７］に、ディスクリプタ情報１のアドレスを設定する。従って、ＣＰＵ６０１は、ＤＷ［６］に「０ｘ０００００１００」を、ＤＷ［７］に「０ｘ００００００００」を設定する。
【００４７】
次に、ＣＰＵ６０１の指示により、ホストコントローラ６０６と記録媒体６０８とのデータ通信が開始される。記録媒体６０８は、メモリ６０３上のディスクリプタ情報Ａのデータを、ホストコントローラ６０６、ブリッジ回路６０７、メモリバス６０２を介して読み出す。ブリッジ回路６０７は、アドレスおよびデータともに、受信した情報をそのまま送信する。つまり、ブリッジ回路６０７の機能はＯＦＦに設定される。この場合、ホストコントローラ６０６から出力されたアドレス情報をアドレス受信部６０９が受信すると、受信したアドレス情報がアドレス送信部６１２に出力される。アドレス送信部６１２は、受信したドレス情報をメモリバス６０２へ出力する。
【００４８】
ここで、記録媒体６０８がＳＧＬを用いたデータ転送に対応している場合、セレクタ６１３および６１５は、メモリ６０３から読み出されたデータが、内部のバッファ６１４を経由しない経路となるように設定されている。従って、メモリ６０３から読み出されたディスクリプタ情報Ａは、ホストコントローラ６０６に出力される。記録媒体６０８は、受信したディスクリプタ情報Ａに記載された内容に従い、メモリ６０３のディスクリプタ情報１を読み出す。記録媒体６０８は、ディスクリプタ情報１が示すデータ１のアドレス情報に基づき、データ１を読み出す。これにより、メモリ６０３から記録媒体６０８にデータ１が転送される。ディスクリプタ情報１には、ディスクリプタ情報２のアドレス情報が含まれているため、記録媒体６０８は、メモリ６０３からディスクリプタ情報２を読み出す。これにより、メモリ６０３から記録媒体６０８にデータ２が転送される。データ３についての処理も同様である。データ３の転送が完了すると、全てのデータの転送が完了する。以上が、記録媒体６０８がＮＶＭｅ規格のＳＧＬに対応している場合の、データ転送動作である。
【００４９】
上述したように、転送方式判定部６１６は、データ転送装置６００に接続された記録媒体６０８が、ＳＧＬに対応しているか否かを判定する。例えば、転送方式判定部６１６は、ホストコントローラ６０６を介して、記録媒体６０８から、当該記録媒体６０８がＳＧＬに対応しているか否かを示す情報に基づいて、上記の判定を行ってもよい。転送方式判定部６１６は、記録媒体６０８が、ＳＧＬに対応していると判定した場合、アドレス検出部６１０の機能をＯＦＦに設定し、バッファ６１４を介さない経路となるようにセレクタ６１３および６１５を設定する。一方、転送方式判定部６１６は、記録媒体６０８が、ＳＧＬに対応していないと判定した場合、アドレス検出部６１０の機能をＯＮに設定し、バッファ６１４を介する経路となるようにセレクタ６１３および６１５を設定する。この場合、第１実施形態と同様の処理が行われる。つまり、ブリッジ回路６０７は、メモリ６０３から読み出した各データをバッファ６１４に記憶し、ホストコントローラ６０６は、バッファ６１４から順次データを読み出す。そして、読み出されたデータは、記録媒体６０８に出力されることで、ＤＭＡによるデータ転送が行われる。
【００５０】
従って、転送方式判定部６１６が、データ転送装置６００に接続された記録媒体６０８がＳＧＬに対応しているか否かにより転送方法を切り替えることで、ＳＧＬに対応した記録媒体ではブリッジ回路６０７の処理を簡潔化することができる。これにより、第１実施形態に加えて、ブリッジ回路６０７の内部回路の電力を抑えるという効果が得られる。データ転送装置６００に接続された記録媒体６０８がＳＧＬに対応していない場合でも、第１実施形態と同様、メモリ帯域を圧迫することなく、効率的なデータ転送を実現できるという効果が得られる。
【００５１】
以上、本発明の好ましい実施形態について説明したが、本発明は上述した各実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。本発明は、上述の各実施形態の１以上の機能を実現するプログラムを、上述したＡＳＩＣ等が実行することによっても実現可能である。
【符号の説明】
【００５２】
１０１  ＣＰＵ
１０３  メモリ
１０６  ホストコントローラ
１０８  記録媒体
１１４  バッファ
６１６  転送方式判定部
【図１】
2020077246.tif 000003
【図２】
2020077246.tif 000004
【図３】
2020077246.tif 000005
【図４】
2020077246.tif 000006
【図５】
2020077246.tif 000007
【図６】
2020077246.tif 000008
【図７】
2020077246.tif 000009
【図８】
2020077246.tif 000010
【図９】
2020077246.tif 000011