(57)【要約】【課題】CPU等にかける負荷を低減させつつ、高いデータ転送性能を実現する。【解決手段】本発明の一態様としてのブリッジ装置において、受信部は、データ記憶装置の読み出しアドレスを指定した第1転送情報を外部装置から受信する。転送情報記憶部は、第1転送情報を記憶する。第1処理部は、転送情報記憶部から読み出した第1転送情報に基づき、データ記憶装置の読み出しアドレスからデータの読み出しを指示する第1コマンドを生成し、第1コマンドを第1コントローラに出力する。データバッファは、第1コントローラによって記憶装置の読み出しアドレスから読み出されたデータを保持する。第2処理部は、第2コントローラに、データバッファに保持されたデータの読み出しを指示する第2コマンドを生成し、第2コマンドを第2コントローラに出力する。出力部は、第2コントローラからの読み出し要求に応じて、データバッファに保持されたデータを第2コントローラに出力する。【選択図】図１
2014010759.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶装置へアクセスする第1コントローラと、第2コントローラとの間のデータ転送をブリッジするブリッジ装置であって、
前記データ記憶装置の読み出しアドレスを指定した第1転送情報を外部装置から受信する受信部と、
前記第1転送情報を記憶する転送情報記憶部と、
前記転送情報記憶部から読み出した第1転送情報に基づき、前記データ記憶装置の前記読み出しアドレスからデータの読み出しを指示する第1コマンドを生成し、前記第1コマンドを前記第1コントローラに出力する第1処理部と、
前記第1コントローラによって前記記憶装置の前記読み出しアドレスから読み出されたデータを保持するデータバッファと、
前記第2コントローラに、前記データバッファに保持されたデータの読み出しを指示する第2コマンドを生成し、前記第2コマンドを前記第2コントローラに出力する第2処理部と、
前記第2コントローラからの読み出し要求に応じて、前記データバッファに保持されたデータを前記第2コントローラに出力する出力部と、
を備えたブリッジ装置。
【請求項２】
前記受信部は、複数の第1転送情報を受信し、
前記転送情報記憶部は、前記複数の第1転送情報を、受信順序に応じた優先度を付与して記憶し、
前記記憶部において優先度の高い前記第1転送情報から順番に、前記第1コマンドを生成して、前記第1コントローラに出力する
請求項1に記載のブリッジ装置。
【請求項３】
前記複数の第1転送情報は、前記データ記憶装置の記憶領域において分散された領域のアドレスを指定する
請求項2に記載のブリッジ装置。
【請求項４】
前記第1転送情報は、前記データバッファの書き込みアドレスをさらに指定し、
前記データバッファは、前記第1コントローラによって読み出された前記データを前記書き込みアドレスに保持し、
前記第2処理部は、前記書き込みアドレスから前記データの読み出しを指示する前記第2コマンドを生成する
請求項1ないし3のいずれか一項に記載のブリッジ装置。
【請求項５】
前記受信部は、前記データ記憶装置の書き込みアドレスを指定した第2転送情報を受信し、
前記転送情報記憶部は、前記第2転送情報を記憶し、
前記第2処理部は、前記転送情報記憶部から読み出した前記第2転送情報に基づき、前記データバッファへ前記書き込みアドレスに応じたサイズのデータの書き込みを指示する第3コマンドを前記第2コントローラに出力し、
前記データバッファは、前記第2コントローラから出力されるデータを受けて保持し、
前記第1処理部は、前記第1コントローラに、前記データバッファに保持されたデータを前記データ記憶装置の前記書き込みアドレスに書き込むことを指示する第4コマンドを出力する
請求項1ないし4のいずれか一項に記載のブリッジ装置。
【請求項６】
前記第2転送情報は、前記データバッファの書き込みアドレスをさらに指定し、
前記第2処理部は、前記データバッファの前記書き込みアドレスへ前記データを書き込むことを指示する前記第3コマンドを生成し、
前記第1処理部は、前記データバッファの前記書き込みアドレスからデータを読み出すことを指示する前記第4コマンドを生成する
請求項5に記載のブリッジ装置。
【請求項７】
前記外部装置への通知手段を備え、
前記第2コントローラに備えられたDMAコントローラからデータがDMA転送され、
前記データバッファは、前記第2コントローラからのデータ受信において、あらかじめ定めた例外事象が発生した場合は、前記DMA転送が完了した後、前記外部装置に前記例外事象の発生を通知する
請求項5または6に記載のブリッジ装置。
【請求項８】
パケット処理部をさらに備え、
前記DAMコントローラから転送されるデータはパケットにより運ばれ、
前記パケット処理部は、前記パケットのヘッダを解析することにより、前記例外事象が発生したかを検出する、
請求項7に記載のブリッジ装置。
【請求項９】
前記外部装置への通知手段を備え、
前記第1コントローラに備えられたDMAコントローラからデータがDMA転送され、
前記データバッファは、前記第1コントローラからのデータ受信において、あらかじめ定めた例外事象が発生した場合は、前記DMA転送が完了した後、前記外部装置に前記例外事象の発生を通知する
請求項1ないし8のいずれか一項に記載のブリッジ装置。
【請求項１０】
複数の第2コントローラのそれぞれの制御手順を記憶する制御手順記憶部をさらに備え、
前記第2処理部は、前記複数の第2コントローラのうち使用する第2コントローラの制御手順にしたがって、前記第2コマンドを生成する
請求項1ないし9のいずれか一項に記載のブリッジ装置。
【請求項１１】
複数の第1コントローラのそれぞれの制御手順を記憶する制御手順記憶部をさらに備え、
前記第1処理部は、前記複数の第1コントローラのうち使用する第1コントローラの制御手順にしたがって、前記第1コマンドを生成する
請求項1ないし10のいずれか一項に記載のブリッジ装置。
【請求項１２】
前記外部装置から前記第1転送情報を受信して前記転送情報記憶部へ格納する処理と、前記転送情報記憶部から前記第1転送情報を読み出して前記第1コマンドを生成する処理とを並行して行う
請求項1ないし11のいずれか一項に記載のブリッジ装置。
【請求項１３】
前記外部装置から前記第2転送情報を受信して前記転送情報記憶部へ格納する処理と、前記転送情報記憶部から前記第2転送情報を読み出して前記第2コマンドを生成する処理とを並行して行う
請求項5ないし8のいずれか一項に記載のブリッジ装置。
【請求項１４】
前記データバッファをN個（Nは2以上の整数）備え、
前記受信部は、複数の第1転送情報を受信し、
前記転送情報記憶部は、前記複数の第1転送情報を、受信順序に応じた優先度を付与して記憶し、
前記N個のデータバッファ間にあらかじめ順位が設定されており、
前記第1処理部は、前記転送情報記憶部において優先度の最も高いN個の第1転送情報に基づき、前記N個の第1転送情報間での優先度の順位と同じ順位のデータバッファに、読み出しデータを書き込むことを指示する第1コマンドを生成し、前記第1コマンドを前記第1コントローラに送り、
前記N個のデータバッファは、前記第1コントローラから振り分けられるデータをそれぞれ保持し、
前記第2処理部は、前記N個のデータバッファに書き込まれたデータの読み出しを指示する第2コマンドをそれぞれ生成して、前記第2コントローラに送り、
前記N個のデータバッファからそれぞれ読み出されたデータに、前記N個のデータバッファ間でのそれぞれの順位を表す識別情報を付与して、前記第2コントローラに出力する
請求項1ないし13のいずれか一項に記載のブリッジ装置。
【請求項１５】
N（Nは2以上の整数）個のデータバッファを備え、
前記受信部は、複数の第2転送情報を受信し、
前記転送情報記憶部は、複数の第2転送情報を、受信順序に応じた優先度を付与して記憶し、
前記N個のデータバッファ間にあらかじめ順位が設定されており、
前記第2処理部は、前記転送情報記憶部において優先度の最も高いN個の第2転送情報に基づき、前記N個の第1転送情報間での優先度の順位と同じ順位のデータバッファに、データを書き込むことを指示する前記第2コマンドを生成し、前記第2コマンドを前記第2コントローラに出力し、
前記N個のデータバッファは、前記第2コントローラから入力されるデータを保持し、
前記第1処理部は、前記N個のデータバッファに書き込まれたデータを、前記N個のデータバッファのそれぞれ同じ順位の第2転送情報に指定される書き込みアドレスに書き込むことを指示する第1コマンドを生成し、前記第1コマンドを前記第1コントローラに出力する
請求項5ないし8のいずれか一項に記載のブリッジ装置。
【請求項１６】
請求項1ないし15のいずれか一項に記載のブリッジ装置と、
前記第1コントローラと、
前記第2コントローラと、
前記データ記憶装置と、
前記外部装置としてのCPUまたはMPUと
を備えたストレージ装置。
【請求項１７】
データ記憶装置へアクセスする第1コントローラと、第2コントローラとの間のデータ転送をブリッジする方法であって、
前記データ記憶装置の読み出しアドレスを指定した第1転送情報を外部装置から受信するステップと、
前記第1転送情報を転送情報記憶部に記憶するステップと、
前記転送情報記憶部から読み出した第1転送情報に基づき、前記データ記憶装置の前記読み出しアドレスからデータの読み出しを指示する第1コマンドを生成し、前記第1コマンドを前記第1コントローラに出力するステップと、
前記第1コントローラによって前記記憶装置の前記読み出しアドレスから読み出されたデータをデータバッファに保持するステップと、
前記第2コントローラに、前記データバッファに保持されたデータの読み出しを指示する第2コマンドを生成し、前記第2コマンドを前記第2コントローラに出力するステップと、
前記第2コントローラからの読み出し要求に応じて、前記データバッファに保持されたデータを前記第2コントローラに出力するステップと
を備えた方法。
【請求項１８】
データ記憶装置の読み出しアドレスを指定した第1転送情報を外部装置から受信するステップと、
前記第1転送情報を転送情報記憶部に格納するステップと、
前記転送情報記憶部から前記第1転送情報を読み出すステップと、
読み出した第1転送情報に基づき、前記データ記憶装置の前記読み出しアドレスからデータの読み出しを指示する第1コマンドを生成し、前記第1コマンドを、前記データ記憶装置にアクセスする第1コントローラに出力するステップと、
前記第1コントローラによって前記データ記憶装置の前記読み出しアドレスから読み出されたデータが、データバッファに保持されたことを検出するステップと、
前記データバッファに保持されたデータの読み出しを指示する第2コマンドを生成し、前記第2コマンドを前記第2コントローラに出力するステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ブリッジ装置およびその方法、ストレージ装置、ならびにプログラムに関する。
【背景技術】
【０００２】
従来より、ブリッジ装置によるデータ転送に関する性能向上技術が存在する。性能向上技術を施したブリッジ装置の一例として、以下のものが知られている。該ブリッジ装置は、 MPU（Micro Processing Unit）、割り込みコントローラ、データバッファから構成される。該ブリッジ装置は、通信コントローラと、NAND Flashメモリにアクセスするメモリコントローラ間を接続する。該ブリッジ装置は、MPUおよび割り込みコントローラなどを内蔵することで、単純にバスセグメント間を接続するだけでなく、パケットの組立や解体といった通信処理とか、メモリコントローラや通信コントローラの制御を行う。このように元来当該ブリッジ装置を制御する主体である CPU（Central Processing Unit）に課せられていた処理負担を、ブリッジ装置自ら実行できるようにして、CPUの処理負荷を軽減する。これにより、データ転送性能を向上させる。しかしながら、パケット単位で割り込みが発生するとともに、MPUのソフトウェア処理の負荷が高く、十分にスループットが得られない問題が存在する。
【０００３】
また、上記とは別の技術として、割り込み代理処理部を備えることで、CPUが担っていた DMA（Direct Memory Access）転送処理や割り込み処理の負担を軽減して、データ転送性能を向上させるシステムが知られている。しかしながら、このシステムでは、ファイル転送に対しては、転送性能向上の効果を十分に発揮できない問題があった。なぜなら、ファイル転送処理にはファイルシステムに関連する処理が伴うが、この技術を用いても、その部分の性能向上は不可能であるためである。したがって、ファイルシステム処理が性能劣化要因となると、ストレージとネットワークとの間におけるファイル転送のデータ転送性能を十分に高めることはできない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１１９９８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一側面は、CPUまたはMPU等の外部装置にかける負荷を低減させつつ、高い転送性能を実現することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様としてのブリッジ装置は、データ記憶装置へアクセスする第1コントローラと、第2コントローラとの間のデータ転送をブリッジするブリッジ装置であって、受信部と、転送情報記憶部と、第1処理部と、データバッファと、第2処理部と、出力部とを備える。
【０００７】
前記受信部は、前記データ記憶装置の読み出しアドレスを指定した第1転送情報を外部装置から受信する。
【０００８】
前記転送情報記憶部は、前記第1転送情報を記憶する。
【０００９】
前記第1処理部は、前記転送情報記憶部から読み出した第1転送情報に基づき、前記データ記憶装置の前記読み出しアドレスからデータの読み出しを指示する第1コマンドを生成し、前記第1コマンドを前記第1コントローラに出力する。
【００１０】
前記データバッファは、前記第1コントローラによって前記記憶装置の前記読み出しアドレスから読み出されたデータを保持する。
【００１１】
前記第2処理部は、前記第2コントローラに、前記データバッファに保持されたデータの読み出しを指示する第2コマンドを生成し、前記第2コマンドを前記第2コントローラに出力する。
【００１２】
前記出力部は、前記第2コントローラからの読み出し要求に応じて、前記データバッファに保持されたデータを前記第2コントローラに出力する。
【図面の簡単な説明】
【００１３】
【図１】第1の実施形態に係るブリッジ装置を示す。
【図２】図1に示したブリッジ装置を搭載したストレージ装置の一実施形態を示す。
【図３】第3の実施形態に係るブリッジ装置を示す。
【図４】転送情報の一態様を示す。
【図５】転送情報の作成手順を示すフローチャートである。
【図６】データ記憶装置の記憶領域構造および管理情報の一例を示す。
【図７】メモリ処理部とデータバッファ間の手順について示したフローチャートである。
【図８】通信処理部とデータバッファ間の手順について示したフローチャートである。
【図９】メモリ処理部とデータバッファ間の手順について示したフローチャートである。
【図１０】通信処理部とデータバッファ間の手順について示したフローチャートである。
【図１１】例外事象が発生し、非定常状態に陥った場合に行う動作手順を表すフローチャートである。
【図１２】第4の実施形態に係るブリッジ装置を示す。
【図１３】第6の実施形態に係るブリッジ装置を示す。
【発明を実施するための形態】
【００１４】
以下、図面を参照しながら、本発明の実施形態について述べる。
【００１５】
（第1の実施形態）
図1は、本発明の実施形態に係るブリッジ装置を示す。
【００１６】
図1のブリッジ装置は、統御部11、転送情報記憶部12、通信処理部（第2処理部）13、パケット処理部14、メモリ処理部（第1処理部）15、及 び、データバッファ16を備える。尚、該ブリッジ装置にCPU（Central Processing Unit）あるいは MPU（Micro Processing Unit）が内蔵されて、これらの処理部の一部または全部の機能を担ってもよい。たとえば、CPUあるいはMPUが、これらの処理部のうちの１つまたは複数の機能を記述した命令を含むプログラムを実行することで、当該機能が実現されてもよい。プログラムは、ハードディスク、メモリ装置、CD-ROM等のコンピュータ読取可能記録媒体に記憶されてもよい。
【００１７】
ここで、ブリッジ装置とは、あるバスセグメントと、別のバスセグメントを接続する装置を指す。例えば、 CPUが接続されるシステムバスと、周辺機器を収容する PCI（Peripheral Component Interconnect）バスとを接続する HBA（Host Bus Adaptor）や、 PCIバスと PCIバスとを接続する PCIバスブリッジなどが、ブリッジ装置に相当する。
【００１８】
さらに、 HDD（Hard Disk Drive）や SSD（Solid State Drive）などのストレージ装置の中にもブリッジ装置が存在する。例えばシステムバスと、記憶媒体（HDDであればプラッタ、 SSDであれば NAND Flashメモリに相当する部位）とを接続する際には、両者間の仲介を担うブリッジ装置が配される。
【００１９】
図1のブリッジ装置は、メモリコントローラ103と通信コントローラ104間のデータ転送をブリッジする。メモリコントローラ103は、図示しないデータ記憶装置（たとえば図2のNANDフラッシュメモリ112参照）へのアクセス（読み出し/書き込み）を制御する。通信コントローラ103は、イーサーネットやIEEE802.11a/b/gや、ブルートゥースなどの通信コントローラでもよい。メモリコントローラ103および通信コントローラ104はそれぞれ、図示しないバスに接続されている。
【００２０】
本ブリッジ装置の外部に、本ブリッジ装置専用のCPU102またはMPUが設けられている。
【００２１】
統御部11は、 外部のCPU102あるいは MPUからの制御および設定を受け付けるための部位である。制御としては、該ブリッジ装置に対するデータ転送の開始／停止などがある。
【００２２】
転送情報記憶部12は、該ブリッジ装置がファイル転送を遂行する際に必要となる各種の情報を含む転送情報を記憶するための部位である。転送情報は、CPU102あるいは MPUが作成し、ブリッジ装置へ供給する。統御部11は、この転送情報を受信する受信部を含み、受信した転送情報を、転送情報記憶部12に格納する。
【００２３】
以下、転送情報について説明する。
【００２４】
図4は、転送情報の一態様を示す。
【００２５】
図4に示す転送情報は、表形式を有し、4つのフィールド、「転送方向」、「ブロックアドレス」、「バッファアドレス」、「転送サイズ」を有する。転送情報1行（1エントリ）で、1度のデータ転送の実行を表す。
【００２６】
「転送方向」は、そのデータ転送が送信（データ記憶装置からの読み出し）なのか、受信（データ記憶装置への書き込み）なのかを示す。“R”が送信（読み出し）、“W”が受信（書き込み）を示す。
【００２７】
「ブロックアドレス」は、データ記憶装置上に保存されたデータブロックの記録位置を示す。データ記憶装置では、ブロック単位で、データが記憶されている。
【００２８】
「バッファアドレス」は、データブロックの転送元となるデータバッファ16のアドレス（転送方向が“R”の場合）、あるいは、転送先となるデータバッファ16のアドレス（転送方向が“W”の場合）を示す。
【００２９】
「転送サイズ」は、1度のデータ転送にて送信または受信するデータ量を示す。
【００３０】
たとえば、1行目のエントリは、データ記憶装置上のブロックアドレス500から10ブロック分のデータを読み出し、データバッファ16のアドレス0x10000000から書き込むことを示す。1ブロックのサイズは、たとえば32KBなど、任意に定めることが可能である。
【００３１】
また、3行目のエントリは、データバッファ16のアドレス0x11000000から、10ブロック分のデータを読み出して、データ記憶装置上のブロックアドレス200から書き込むことを示す。
【００３２】
該ブリッジ装置は、表の一番上のエントリから順番に処理し、転送情報1行（1エントリ）で、1度のデータ転送を実行する。新たに転送情報が追加されるときは、一番下に追加される。つまり、先に受信されたエントリほど、高い優先度が与えられる。本例では、優先度は、表の中の位置によって表現されているが、優先度のフィールドを追加して、ここに処理する順番を記入してもよい。
【００３３】
図4に示した転送情報は一例であり、別の形式を採用することも可能である。
【００３４】
たとえば転送サイズのフィールドを省略し、ブロックアドレスのフィールドに、読み出す/書き込むべきすべてのブロックアドレスを記入しても良い。または開始のブロックアドレスと終了のブロックアドレスを記入してもよい。
【００３５】
さらに、バッファアドレスのフィールドを省略することも可能である。この場合、バッファアドレスを格納するレジスタを統御部11に設けてもよい。レジスタに格納するバッファアドレスは固定値でもよい。複数のバッファアドレスをレジスタに記憶させ、これらのバッファアドレスを循環的に使い回す構成も考えられる。
【００３６】
通信処理部13は、データ転送に関わる通信コントローラ104の制御を担う部位である。例えば、通信コントローラ104から割り込み信号を受信すると、その割り込み信号の原因を、通信コントローラ104へ問い合わせ、その内容に応じた振る舞いを行う。また、通信コントローラ104内蔵の DMAコントローラ（図12参照）がある場合には、その DMAコントローラの制御等も行う。
【００３７】
パケット処理部14は、通信コントローラ104へ送信するパケットにヘッダを付加したり、通信コントローラ104から受信したパケットのヘッダを解析する部位である。受信したパケットが、ヘッダ解析によりデータ記憶装置へ書き込むデータを運ぶパケットであるときは、ヘッダを除去（廃棄）して、パケットのペイロード部に格納されているデータをデータバッファ16へ渡す。データバッファ16は、通信コントローラ104から指定される書き込み先へ当該データを書き込む。ヘッダ解析の結果、そのパケットのデータがデータ記憶装置へ書き込むデータでないときは、データバッファ16への書き込みを行わない。たとえば当該パケットが、CPU102宛と判断すれば、当該パケットをCPU102へ渡す。このような判断は、たとえばヘッダ内の所定フィールドの値に基づいて行うことができる。
【００３８】
メモリ処理部15は、データ転送に関わるメモリコントローラ103の制御を担う部位である。例えば、メモリコントローラ103から割り込み信号を受信すると、その割り込み信号の原因をメモリコントローラ103へ問い合わせ、その内容に応じた振る舞いを行う。また、メモリコントローラ103内蔵 DMAコントローラ（図12参照）がある場合には、その DMAコントローラの制御等も行う。
【００３９】
データバッファ16は、通信コントローラ104および該ブリッジ装置間、ならびにメモリコントローラ103および該ブリッジ装置間で、データを入出力する際に用いるメモリ領域である。データバッファ16は、2ポートメモリなどのメモリを含み、当該メモリにデータを入出力する。
【００４０】
例えば、送信モードの場合には、メモリコントローラ103によってデータ記憶装置から読み出したデータを、データバッファ16を書き込んでいき、通信コントローラ104は、データバッファ16からそのデータを読み出す。データバッファ16は、通信コントローラ104から指定されたバッファアドレスのデータを出力する出力部を含む。
【００４１】
受信モードの場合は、通信コントローラ104は、パケット処理部14を介して、データバッファ16へデータを書き込んでいき、メモリコントローラ103はそのデータを読み出す。
【００４２】
図5は、転送情報の作成手順を示すフローチャートである。
【００４３】
まず、CPU102あるいは MPUは、送信対象あるいは受信対象のファイルのサイズを取得する（S101）。特に受信モードの場合、転送開始に先立って、そのファイルサイズ分の記録領域をデータ記憶装置上に割り当てておく必要がある。ファイルサイズの取得方法は様々であるが、例えば、送信側から受信側へ送信するファイルのファイルサイズの情報を知らせればよい。ファイルサイズとともに、ファイル名の情報を知らせても良い。
【００４４】
一例として、図1のブリッジ装置を含む通信装置と、相手先通信装置とがネットワークを介して接続されており、本ブリッジ装置が受信側、相手先通信装置が送信側の場合を想定する。送信側の装置も、本ブリッジ装置と同様の構成のブリッジ装置を搭載していてもよい。このとき、本ブリッジ装置を含む通信装置の通信コントローラ104およびCPU102と、相手先通信装置との間で通信を行うことで、CPU102が相手先通信先装置からファイルサイズを取得する。
【００４５】
続いて、 CPU102あるいは MPUは、送信対象あるいは受信対象のファイルの管理情報を、ワーキングメモリ等の共有メモリ（図示せず）へ読み込む（S102）。共有メモリは、データ記憶装置とは異なる記憶装置であり、たとえば揮発性メモリである。1つのファイルは、データ記憶装置上の連続した領域に記録されているわけではなく、通常、複数のデータブロックがデータ記憶装置上に分散配置されている。ファイルの管理情報は、これら分散配置されたデータブロックを数珠つなぎ状に管理するための構造情報を指す。
【００４６】
管理情報は、メモリコントローラ103によりアクセスされるデータ記憶装置に格納されている。管理情報は、データブロックを記憶するデータ領域とは別に設けられる管理領域に格納される。
【００４７】
図6に、データ記憶装置の記憶領域構造および管理情報の一例を示す。管理情報が管理領域に格納されている。管理情報はリスト構造を有する。図6の例では、0x0100,0x0500,0x1000のブロックアドレスに格納されたデータの集合体が、管理情報が表す1つのファイルに相当する。1つのブロックアドレスのデータサイズは、データ記憶装置をフォーマットした際に、予め定められるものである。
【００４８】
送信の場合は、CPU102またはMPUが、データ記憶装置に直接アクセスして、管理情報を読み出し、共有メモリへ書き込む。受信の場合は、通信先の装置から管理情報を取得する。これにより、通信先からどのようなブロックサイズが送られてくるかを知ることができる。なお通信先の装置からの管理情報の取得は必須ではなく、ファイルサイズが分かれば本装置は動作可能である。
【００４９】
続いて、そのワーキングメモリにバッファされた管理情報を参照しつつ、データ記憶装置におけるデータブロックの記録位置を調べていって、隣接するデータブロックであれば、それらを1つの連続領域として扱う。送信の場合は、送信するデータブロックが隣接するかを調べていけばよい。受信の場合であれば、空きのデータブロックを調べていき、それらが隣接するかを調べればよい。このようにして、連続領域の開始位置と終了位置とを取得する（S103）。
【００５０】
そして、その連続領域の開始位置と終了位置に基づいて、ブロックアドレスと転送サイズを決定し、転送情報の1エントリを作成する（S104）。送信の場合であれば、転送情報のブロックアドレスは、連続領域の開始位置に対応し、転送サイズは、開始位置から終了位置までのデータサイズである。受信の場合であれば、受信ファイルサイズを、各連続領域に順番に割り当てることで、ブロックアドレスと転送サイズを決定する。なお、受信の場合に通信先装置から取得した管理情報に示される各ブロックサイズとそれぞれ同じサイズの連続領域を確保できる場合、同じサイズの連続領域を割り当てるように、転送情報エントリを作成してもよい。
【００５１】
続いて、CPU102あるいは MPUは、完成した転送情報エントリを、ブリッジ装置の転送情報記憶部12へ書き込む（S105）。たとえば、統御部101に転送情報エントリの書き込みを指示し、統御部101が転送情報エントリを書き込む。
【００５２】
バッファ済みのファイル管理情報に対する転送情報エントリを作成し得るまで、ステップS103〜S105を繰り返す（S106）。
【００５３】
バッファ済みのファイル管理情報に対する転送情報エントリを全て作成したら、ファイルサイズ全体の管理情報に対する転送情報エントリを作成できたかを判断する。すなわち、まだワーキングメモリに読み込んでいない管理情報があれば、再度、管理情報の読み込み（バッファリング）を行って、これまでの手順を繰り返す（S107）。これは、ワーキングメモリの容量制約上、一度にすべての管理情報を読み込むことができるとは限らないためである。また、後述する実施例で述べるように、すべての管理情報のバッファリングを完了する前に、転送情報エントリに基づき転送開始を行う構成も考慮したものである。
【００５４】
以下、図7および図8を参照して、送信モードにおけるファイル転送手順を示す。図7のフローチャートは、メモリ処理部15とデータバッファ16間の手順について示したものである。図8のフローチャートは、通信処理部13とデータバッファ16間の手順について示したものである。
【００５５】
まずは、図7のフローチャートを用いて、送信モードにおけるメモリ処理部15とデータバッファ16間の手順を説明する。
【００５６】
送信モードのブリッジ装置によるファイル転送は、転送情報記憶部12にエントリがあることを契機に、メモリ処理部15の動作が、開始する（S201）。たとえば統御部11が、転送情報記憶部12にアクセスして、転送方向が送信（“R”）のエントリを検出することで、送信モードの動作が開始する。
【００５７】
メモリ処理部15は、転送情報記憶部12のエントリを参照し、当該エントリの情報（ブロックアドレス、バッファアドレス、転送サイズ、転送方向）を取得する（S202）。
【００５８】
メモリ処理部15は、当該エントリの情報を用いて、メモリコントローラ103へデータの出力コマンドを発行する（S203）。バッファアドレスが転送情報でなく、統御部11等のレジスタに格納されているときは、当該レジスタにアクセスしてバッファアドレスを取得する。
【００５９】
ここでいう出力コマンドとは、メモリコントローラ103自体のレジスタ、メモリコントローラ103内蔵 DMAコントローラ、あるいは、同コントローラを通じてアクセスするデータ記憶装置に対して、データ転送を実行する際に行う一連の制御手順全体を指す。
【００６０】
メモリコントローラ103へデータの出力コマンド（第1コマンド）を発行することによって、例えば、メモリコントローラ103内蔵 DMAコントローラは、出力コマンドで指定されたブロックアドレス（読み出しアドレス）にあるデータブロックを読み込みつつ、出力コマンドで指定されたバッファアドレス（書き込みアドレス）へ向けて書き込む処理を行う。バッファアドレスとして、データバッファ16のアドレスを指定することにより、ブリッジ装置は送信するデータを、自身のデータバッファ16へ読み込む形となる。
【００６１】
続いて、データバッファ16は、メモリコントローラ103からデータを受け取ると、それを内部のメモリ（たとえば2ポートメモリ）へ書き込んでいく（S204）。
【００６２】
データバッファ16へ入力したデータサイズが、転送情報エントリに示される転送サイズに到達すれば、1エントリ分のデータ転送は完了である（S205）。1エントリ分のデータ転送が完了すると、メモリコントローラ103はメモリ処理部15へ完了を通知する。
【００６３】
以上の手順を、1つのファイルの各転送情報エントリ（転送方向が“R”）に対して繰り返していくことにより、メモリコントローラ103からデータバッファ16へのデータ転送が進められていく。
【００６４】
次に、図8のフローチャートを用いて、送信モードにおける通信処理部13とデータバッファ16間の手順を説明する。
【００６５】
通信処理部13は、データバッファ16内に所定サイズのデータがあれば（S301）、通信コントローラ104へ入力コマンド（第2コマンド）を発行する（S302）。たとえば、該当する転送情報エントリに示されるバッファアドレス以降に格納されたデータ量が、所定サイズ以上であれば、入力コマンドを発行する。
【００６６】
ここでいう入力コマンドとは、通信コントローラ104自体のレジスタ、通信コントローラ104内蔵 DMAコントローラ、あるいは、同コントローラを通じてアクセスする無線部に対し、データ転送を実行する際に行う一連の制御手順全体を指す。
【００６７】
たとえば通信コントローラ104内蔵 DMAコントローラは、通信処理部13から指定されたバッファアドレス（読み出しアドレス）にあるデータを読み出す。ブリッジ装置は、データバッファ16のアドレスを指定した読み出し要求を受けることにより、該当するデータをデータバッファ16から読み出して、パケット処理部14を介して、通信コントローラ104へ送り出す形となる。
【００６８】
ここで、所定サイズとは、例えば、データバッファ16のデータ充填量などにより、自由に決定するものであって、本発明の本質とは関わらない。また、ここではサイズという判断指標を例にとって説明したが、通信処理部13が動きはじめる契機は、この指標だけに限らなくてよい。
【００６９】
続いて、パケット処理部14は、通信コントローラ104へ出力するデータが、パケットの先頭にあたるかを調べる（S303）。もし、当該データがパケットの先頭に該当するものであれば、データの直前にヘッダを挿入したうえで（S304）、当該データを出力する（S305）。もし、パケット先頭でなければ、パケット処理部14は、データを出力する（S305）。
【００７０】
出力されたパケットデータは、通信コントローラ104へ渡される。通信コントローラ104は、送信フレームバッファ内のあらかじめ指定されたブロックアドレスへ、ヘッダおよびデータを書き込む処理を行う。送信フレームバッファは、共有メモリ内に設けられても良い。
【００７１】
パケット処理部14は、パケットのペイロードサイズ分のデータを出力し終えるまで、出力を続ける（S306）。ヘッダに記入する情報や、ペイロードサイズの情報は、あらかじめ与えられている。これらの情報が、たとえば統御部11のレジスタに記憶されており、当該レジスタから読み出すことで、当該情報を取得してもよい。
【００７２】
次に、通信処理部13が、通信コントローラ104から送信完了割込みを受信したかを判断する（S307）。例えば、通信処理部13が、パケットのヘッダサイズとペイロードサイズとを足し算したサイズを指定した上で、通信コントローラ104へ入力コマンドを発行したとする。この場合、ペイロードサイズ分のデータを出力し終えた時に、通信コントローラ104が送信完了割り込みを発行する。
【００７３】
通信処理部13は、通信コントローラ104が発行した送信完了割り込みを受信すると、通信コントローラ104の状態を確認したり、割り込み状態のクリアを行う。そして、次のパケット送信、すなわち次のパケットのためのデータの読み出しに移る。
【００７４】
以上の手順を繰り返していくことにより、データバッファ16から通信コントローラ13へのデータ転送が進められていく。
【００７５】
このようにブリッジ装置が動作することで、従来成し得なかった効率的なファイルの送信処理が可能となる。すなわち、ブリッジ装置は、用意された転送情報を参照しさえすれば、CPUあるいは MPUの助けを借りずに、一連のデータ転送処理を遂行できる。ファイルのデータがデータ記憶装置内で分散して配置されていても、ファイルの先端から終端まで、送信処理を完遂できるようになる。
【００７６】
以下、図9および図10を用いて、受信モードにおけるファイル転送手順を示す。図9のフローチャートは、メモリ処理部15とデータバッファ16間の手順について示したものである。図10のフローチャートは、通信処理部13とデータバッファ16間の手順について示したものである。
【００７７】
まずは、図10のフローチャートを用いて、受信モードにおけるメモリ処理部15とデータバッファ16間の手順について説明する。
【００７８】
受信モードのブリッジ装置によるファイル転送は、転送情報記憶部12に転送方向が“W”のエントリがあり（S501）、かつ、通信コントローラ104が発行するパケット受信割り込みを契機に（S502）、通信処理部13の動作が開始する。
【００７９】
通信処理部13は、転送情報記憶部12の転送方向が“W”のエントリを参照し、当該エントリの情報（ブロックアドレス、バッファアドレス、転送サイズ、転送方向）を取得する。
【００８０】
通信処理部13は、当該エントリの情報を用いて、通信コントローラ104へデータの出力コマンド（第3コマンド）を発行する（S503）。バッファアドレスが転送情報でなく、統御部11等のレジスタに格納されているときは、当該レジスタにアクセスしてバッファアドレスを取得する。
【００８１】
例えば、通信コントローラ104内蔵 DMAコントローラは、図示しない受信フレームバッファ内のあらかじめ指定されたブロックアドレスにあるデータブロックを読み込みつつ、上記転送情報エントリで指定されたバッファアドレス（書き込みアドレス）へ向けて、書き込む処理を行う。ブリッジ装置は、データバッファ16のアドレスを指定した書き込み要求を受けることにより、受信したデータを自身のメモリへ読み込む形となる。受信フレームバッファは共有メモリ内に設けられても良い。
【００８２】
パケット処理部14は、通信コントローラ104から入力されるデータが、パケットの先頭にあたるものかを調べる（S504）。
【００８３】
パケットの先頭にあたるものであれば、ヘッダの解析を行い（S505）、ブリッジ装置として想定するヘッダか否か、すなわち当該パケットがメモリへ書き込むデータを運ぶパケットか否かを調べる（S506）。ブリッジ装置として想定しないヘッダであると判断した場合、そのパケットの受信処理は行わない。想定するヘッダか否かの判断は、ヘッダの所定位置のフィールドの値で判断することが可能である。たとえばデータ受信中に、送信側で送信を途中でキャンセルした場合、送信停止の制御パケットが送出され、想定しないパケットとして受信され得る。このようなパケットに対しては、想定しないヘッダと判断される。当該パケットは、たとえばヘッダの内容に応じて処理すればよい。CPU宛のパケットであれば、当該パケットをCPUに転送する。
【００８４】
想定するヘッダであれば、そのパケットのペイロードデータを、データバッファ16における通信コントローラ104が指定したバッファアドレスから書き込んでいく（S507）。なお、当該ヘッダは、データバッファ16へ書き込みせず、廃棄する。
【００８５】
一方、通信コントローラ104から入力されるデータがパケットの先頭でなければ、パケット処理部14は、当該データをデータバッファ16へ書き込んでいく（S507）。
【００８６】
以上の手順を、1つのファイルの各転送情報エントリ（転送方向が“W”）に対して繰り返していくことにより、通信コントローラ104からデータバッファ16へのデータ転送が進められていく。
【００８７】
次に、図9のフローチャートを用いて、メモリ処理部15とデータバッファ16間の手順について説明する。
【００８８】
メモリ処理部15は、データバッファ16内に、所定サイズのデータがあるかを調べる。（S401）。たとえば、該当する転送情報エントリに示されるバッファアドレス以降に所定サイズ以上のデータがあるかを調べる。所定サイズのデータが存在すれば、転送情報エントリの情報を参照して（S402）、メモリコントローラ103への入力コマンド（第4コマンド）を発行する（S403）。
【００８９】
所定サイズとは、例えば、データバッファ16のデータ充填量などにより、自由に決定するものであって、本発明の本質には関わらない。また、ここではサイズという判断指標を例にとって説明したが、メモリ処理部15が動きはじめる契機は、この指標だけに限らなくてよい。
【００９０】
メモリコントローラ103は、入力コマンドを受信し、データバッファ16のバッファアドレス（読み出しアドレス）から、データを読み出していく（S404）。データバッファ16から出力されたデータサイズが、転送情報エントリから得た転送サイズに到達すれば、1エントリ分のデータ転送は完了である（S405）。
【００９１】
以上の手順を繰り返していくことにより、データバッファ16からメモリコントローラ103へのデータ転送が進められていく。
【００９２】
このようにブリッジ装置が動作することで、従来成し得なかった効率的なファイルの受信処理が可能となる。すなわち、あらかじめ用意された転送情報を参照しさえすれば、CPU102あるいは MPUの助けを借りずに、ブリッジ装置単体で、一連のデータ転送処理を遂行できる。
【００９３】
従来から存在する MPEGなどの映像コーデックやグラフィクスアクセラレータは、何らかのメモリとメモリとの間を接続して、両者間における高速なデータ転送を実現するものである。しかしながら、これは、一続きの連続したデータ領域の間におけるデータ転送であった。これに対し、本ブリッジ装置は、もしデータ領域に不連続点があったとしても、それらを複数の転送情報として集約して表現し、それを解釈しつつ不連続なデータ領域のデータ転送を遂行できる。
【００９４】
以上、本実施形態によれば、CPUや MPUに多くの負荷をかけることなく、ファイル転送を進められるようになり、スループットを最大限に高められる。
【００９５】
（第2の実施形態）
図 2は、図1に示したブリッジ装置を搭載したストレージ装置の一実施形態を示す。
【００９６】
具体的なストレージ装置の例としては、 SDメモリカードや SSD等が挙げられる。
【００９７】
図 1と異なり、CPU111、通信コントローラ104やメモリコントローラ103、NAND Flashメモリ（データ記憶装置）112を内蔵している。CPU111は、ホストCPUでも、ブリッジ装置の専用CPUでもよい。
【００９８】
ホストCPUを用いて、図1の専用CPUまたはMPUが担っていた機能をホストCPUに担わせれば、ブリッジ装置専用のCPUを不要にできる。転送情報の作成は、必ずしも 専用のCPUあるいは MPUが実施しなければならないわけではなく、ホスト CPUも同等に NAND Flashメモリ112へアクセスできるようにして、転送情報を作成可能にすればよい。
【００９９】
このように本発明のブリッジ装置は、このような形で実施形態のバリエーションを広げられることができる。
【０１００】
（第3の実施形態）
図 3は、本発明の第3の実施形態に係るブリッジ装置を示す。
【０１０１】
図 1に示した第1の実施形態との差分は、ブリッジ装置が制御する通信コントローラが、の複数になった点である。本例では、制御対象となる通信コントローラは、第1の通信コントローラ131と第2の通信コントローラ132との2つである。
【０１０２】
これらの通信コントローラ131，132を制御できるようにするために、通信コントローラ毎に、制御手順を用意する。すなわち、通信処理部13から参照可能な記憶部に、第1の通信コントローラ131用の第1のデータパス制御手順141、及び、第2の通信コントローラ132用の第2のデータパス制御手順142を記憶する。
【０１０３】
これにより、通信コントローラ104の種類が増えたとしても、通信処理部13が、使用する通信コントローラに応じた制御手順に従って、当該通信コントローラを制御することができる。よって、通信コントローラの種類毎に、ブリッジ装置を追加する必要はない。
【０１０４】
第1のデータパス制御手順、及び、第2のデータパス制御手順を電子回路にて用意し、それらを CPU102あるいは MPUが、統御部11を通じて切り替えるように構成してもよい。
【０１０５】
あるいは、ブリッジ装置内に追加のメモリを用意し、それらに CPUあるいは MPUが、第1のデータパス制御手順のマイクロコード、及び、第2のデータパス制御手順のマイクロコードを格納してもよい。この場合、通信処理部13が、使用する通信コントローラの種類に応じて、それらのマイクロコードを選択的に実行する。
【０１０６】
第3の実施形態では、通信コントローラが複数になった場合を説明したが、メモリコントローラが複数になった場合も、同様にして構成可能である。すなわち、メモリコントローラの種類毎の制御手順を用意し、使用するメモリコントローラに応じた制御手順を実行すればよい。
【０１０７】
（第4の実施形態）
図 11は、受信モードにおいて例外事象が発生し、非定常状態に陥った場合に行う動作手順を表すフローチャートである。
【０１０８】
図10に示した受信モードのフローチャートとの差分は、パケット処理部14による受信パケットのヘッダ解析（図10のS505参照）で、受信パケットのヘッダが、想定しないヘッダであると判断された場合の処理である。
【０１０９】
まず前提として、本実施形態のブリッジ装置は図12に示す構成を有する。通信コントローラ104がDMAコントローラ104aを内蔵し、メモリコントローラ103がDMAコントローラ103aを内蔵する。これらのDMAコントローラによるデータ転送は、いったんスタートさせると停止することは、できる限り避けたい制御である。
【０１１０】
DMA転送を中断させることは、コントローラが持つ機能として可能である。しかしながら、中断を指示した場合、動作再開のためにはコントローラ全体のリセットをかける等の手順を伴う場合があるため、動作再開には比較的長い時間を要してしまう。停止時間が長ければ、その分だけ転送速度が低下してしまう。以上が、いったんスタートさせた DMA転送を停止することに消極的な理由である。
【０１１１】
そこで、本実施形態では、いったんスタートした DMA転送後に、例外事象が発生した場合には、円滑にデータ転送を再開できるように、その DMA転送をデータバッファ16にて空転させる。コントローラから見ると、そのDMA転送が中断せずに、無事完了しように見える。再開したいときには、その DMA転送に用いた転送情報のエントリを再利用する。 
DMA転送を空転させる手段としては、例えば、コントローラ（通信コントローラまたはメモリコントローラ）からデータバッファ16へのバスアクセスを成功させつつ、実際にはデータバッファ16へのデータ入出力を行わない、といった方法がある。なお、これは一例であり、この動作に限定されない。たとえば、データバッファ16へデータ（無関係なデータ）の入出力を行っても動作上、問題は生じない。
【０１１２】
また、本ブリッジ装置で例外事象が発生し、さらに、以上のような DMA転送の空転が行われた（データ記憶装置に書き込むべきデータが適正に受信されていない）ことを、 CPU102あるいは MPUへ知らしめる必要がある。このため、統御部11にレジスタ11aを設け、そこにブリッジ装置が例外事象と判断した要因や、その要因を捕捉したコントローラ（通信コントローラまたはメモリコントローラ）の識別情報等を格納する。レジスタ11aは、CPUまたはMPUへの通知手段として機能する。
【０１１３】
本ブリッジ装置は、CPUあるいは MPUの知らないところでデータ転送を進めていくため、こういったCPUあるいは MPUへの通知の仕組みの追加が必要となる。なお、従来では、CPUあるいは MPUが各コントローラを直接制御し、また、パケット解析処理を行っていたため、このような仕組みは不要であるが、CPUの負荷が増大し、転送性能が劣化する問題があった。
【０１１４】
上記を踏まえ、図11のフローチャートについて説明する。
【０１１５】
ステップS601〜S606、S611は、図10のステップS501〜S505、S507と同じであるため、説明を省略する。
【０１１６】
パケット処理部14が、ステップS605でパケットヘッダを解析した結果、想定しないヘッダであると判断する（S606）。このとき、データバッファ16は、通信コントローラ104が出力するデータを入力しつつも、実際にはそのデータをバッファせず、その DMA転送が完了するまで空転させる（S607）。通信コントローラ104には、（実際にはバッファしていないが）そのデータを正しく受信したとの通知を返す。通信コントローラ104としては、あたかも DMA転送が成功したように見える。よって、通信コントローラ104は、次の DMA転送を即座に受け付けられる状態となる。なお、本実施形態では実際にはデータをバッファしないが、実際にバッファしても動作に支障は生じない。通信コントローラ104は正しくDMA転送が完了したように見せかけつつ、ブリッジ装置内部では実際には当該DMA転送が適正に行われていないと判断できればよい。
【０１１７】
通信処理部13は、通信コントローラ104からDMA転送の完了割り込みを受けると、それを契機として統御部11へ例外事象が発生したことを通知する（S608）。通知を受けた統御部11は、 CPU102あるいは MPUへ割り込みを発行する。割り込みを受けたCPU102あるいはMPUは、割込内容に応じて動作する。たとえば、該当する転送情報エントリに基づくデータ転送をやり直すよう統御部11に指示することがある。
【０１１８】
パケットヘッダの解析で、想定するヘッダであった場合は、次にヘッダ以外の例外事象が発生しているかを調べる（S609）。通信コントローラ104の状態情報、メモリコントローラ103の状態情報、 NANDメモリへ発行したコマンドへの応答内容、パケット長、等々、ありとあらゆるものが考えられる。書き込み先のデータ記憶装置でCRCエラーが発生したような場合も、これに含まれ得る。
【０１１９】
このような想定外の事象が発生した場合も、通信コントローラ104からデータバッファ16へのDMA転送を空転させる（S610）。通信処理部13は、DMA転送の完了割り込みを受けたら、それを契機として、統御部11へ例外事象が発生したことを通知する（S608）。通知を受けた統御部11は、 CPU102あるいは MPUへ割り込みを発行する。割り込みを受けたCPU102あるいはMPUは、割込内容に応じて動作する。たとえば、該当する転送情報エントリに基づくデータ転送をやり直すよう、統御部11に指示する。
【０１２０】
（第5の実施形態）
これまで、転送情報記憶部12には、転送対象のファイル全体の転送を完遂できる転送情報エントリが、 CPU102あるいは MPUによって用意された上で、転送を開始する流れについて述べてきた。
【０１２１】
本実施形態では、転送情報エントリを作成する期間と、データ転送期間を並列化する構成を示す。これにより、転送開始までのタイムラグを軽減し、ファイル転送全体の伝送レートを向上させる。
【０１２２】
統御部11へ動作の開始フラグを示すレジスタフィールド（図12のレジスタ11a参照）を追加し、このフラグが立っていて、且つ、転送情報エントリが転送情報記憶部12にあれば、直ちに転送が開始されるように構成する。 
CPU102あるいは MPUは、転送対象のファイル全体ではなく、一部についての転送情報エントリの作成が終わった時点で、データ転送を開始させる。データ転送を行わせつつ、残りの転送情報エントリを作成する。転送情報エントリを作成するごとに、それぞれ転送情報記憶部12へ追記していく。
【０１２３】
こうすることで、転送情報エントリを作成する期間と、データ転送期間を並列化することができる。よって、転送開始までのタイムラグを軽減でき、結果、ファイル転送全体の伝送レートを向上させることが可能となる。
【０１２４】
ここで、転送情報エントリの個数に関する閾値を統御部11のレジスタに格納し、転送情報エントリの個数がその閾値を下回ったことを契機に、統御部11が割り込みを発行してもよい。これにより、転送情報エントリの追加を、 CPUあるいは MPUへ促す。
【０１２５】
本実施形態の並列化処理は、ワークメモリ容量が限られ、一度のすべての管理情報を読み込めない場合にも有効である。
【０１２６】
（第6の実施形態）
図13は、本発明の第6の実施形態に係るブリッジ装置を示す。
【０１２７】
図13に示すブリッジ装置は、通信コントローラやメモリコントローラのDMAコントローラが、N（Nは2以上の整数）チャネルのデータ転送を実行可能な場合に対応した構成を有する。この構成により、複数のチャネルを用いた同時転送を可能とする。
【０１２８】
図13に示す例では、2つ（N＝2）のチャネルの場合の構成が示されている。2つのパケット処理部と、2つのデータバッファとが設けられている。具体的に、2つのパケット処理部は、第1のパケット処理部14Aおよび第2のパケット処理部14Bを含む。2つのデータバッファは、第1のデータバッファ16Aおよび第2のデータバッファ16Bを含む。
【０１２９】
転送情報エントリを2つ、同時に使う形で同時に、2チャネルの転送を行う。両エントリ（図4の表の上位2つのエントリ）の転送方向が、RとW、あるいは、WとRという組み合わせであれば、これまで述べた通りの手法で実現可能である。
【０１３０】
一方、R→RとかW→Wという転送方向が揃った2エントリに対しては、追加の仕組みが必要となる。すなわち、どちらが先のエントリに属するデータブロックかを、受信側で混ざらないようにする必要がある。
【０１３１】
このため、送信側のブリッジ装置でパケットヘッダに、どちらが先のエントリに属するか、すなわちこれらのエントリ間の優先度の順位を表す識別情報を付加する。また各データバッファに順位をあらかじめ設定しておく。統御部11がこれらの順位を設定してもよい。送信側のブリッジ装置の具体的な動作例として、エントリの同じ順位のデータバッファにデータを書き込むようメモリ処理部15はメモリコントローラ103に指示する。メモリコントローラ103は、エントリに対応するコマンドに応じて読み出したデータを、当該エントリと同じ順位のデータバッファに書き込む。各パケット処理部は、自身に対応するデータバッファの順位の識別情報をヘッダに付加する。
【０１３２】
受信側のブリッジ装置の通信コントローラ104では、その識別情報に基づいて、各データバッファへデータを、識別情報が示す順位と同じデータバッファに振り分ける。また、メモリコントローラ103は、各データバッファから読み出したデータを、データバッファと同じ順位のエントリに指定されるブロックアドレスに書き込む。
【０１３３】
ここで、送信側および受信側の放送で、2チャネル同時送信・受信ができることを、データ転送を実行するに先立って、双方で確認した上でデータ転送を開始する手順を追加してもよい。
【０１３４】
なお、送信側のメモリにおけるデータブロックの配置と、受信側のメモリにおけるデータブロックの配置とが一致、すなわち、データブロックの個数とサイズが送受信側で一致するとは限らない。そこで、例えば、送信側と受信側間でデータ転送に先立って、送信側データ記憶装置のデータブロックサイズと、受信側データ記憶装置のデータブロックサイズを比較する。そして、小さい方のサイズを転送単位として、2チャネル送受をするように事前交渉を行ってもよい。送信側のデータブロックサイズが大きいと、受信側で同じサイズのブロックを確保できなくなる可能性があるが、事前交渉でデータブロックサイズの小さい方を転送単位とすることでこの問題を解決する。この場合、送信側のファイルの管理情報を、変更後のデータブロック配置に合わせて変更する。なお本段落で述べたことは、2チャネル転送のみならず、1チャネル転送の場合にも適用可能である。
【０１３５】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図１】
2014010759.tif 000003
【図２】
2014010759.tif 000004
【図３】
2014010759.tif 000005
【図４】
2014010759.tif 000006
【図５】
2014010759.tif 000007
【図６】
2014010759.tif 000008
【図７】
2014010759.tif 000009
【図８】
2014010759.tif 000010
【図９】
2014010759.tif 000011
【図１０】
2014010759.tif 000012
【図１１】
2014010759.tif 000013
【図１２】
2014010759.tif 000014
【図１３】
2014010759.tif 000015
【手続補正書】
【提出日】平成25年8月1日(2013.8.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ記憶装置へアクセスする第1コントローラと、第2コントローラとの間のデータ転送をブリッジするブリッジ装置であって、
前記データ記憶装置の読み出しアドレスを指定した第1転送情報を外部装置から受信する受信部と、
前記第1転送情報を記憶する転送情報記憶部と、
前記転送情報記憶部から読み出した第1転送情報に基づき、前記データ記憶装置の前記読み出しアドレスからデータの読み出しを指示する第1コマンドを生成し、前記第1コマンドを前記第1コントローラに出力する第1処理部と、
前記第1コントローラによって前記記憶装置の前記読み出しアドレスから読み出されたデータを保持するデータバッファと、
前記第2コントローラに、前記データバッファに保持されたデータの読み出しを指示する第2コマンドを生成し、前記第2コマンドを前記第2コントローラに出力する第2処理部と、
を備えたブリッジ装置。
【請求項２】
データ記憶装置へアクセスする第1コントローラと、第2コントローラとの間のデータ転送をブリッジするブリッジ装置であって、
前記データ記憶装置の書き込みアドレスを指定した第1転送情報を受信する受信部と
前記第1転送情報を記憶する転送情報記憶部と、
前記転送情報記憶部から読み出した前記第1転送情報に基づき、データバッファへ前記データの書き込みを指示する第1コマンドを前記第2コントローラに出力する第1処理部と、
前記第2コントローラから出力されるデータを受けて保持する前記データバッファと、
前記第1コントローラに、前記データバッファに保持されたデータを前記データ記憶装置の前記書き込みアドレスに書き込むことを指示する第2コマンドを出力する第2処理部と
を備えたブリッジ装置。
【請求項３】
前記第2コントローラからの読み出し要求に応じて、前記データバッファに保持されたデータを前記第2コントローラに出力する出力部
をさらに備えた請求項1に記載のブリッジ装置。
【請求項４】
前記受信部は、複数の第1転送情報を受信し、
前記転送情報記憶部は、前記複数の第1転送情報を、受信順序に応じた優先度を付与して記憶し、
前記記憶部において優先度の高い前記第1転送情報から順番に、前記第1コマンドを生成して、前記第1コントローラに出力する
請求項1または3に記載のブリッジ装置。
【請求項５】
前記複数の第1転送情報は、前記データ記憶装置の記憶領域において分散された領域のアドレスを指定する
請求項4に記載のブリッジ装置。
【請求項６】
前記第1転送情報は、前記データバッファの書き込みアドレスをさらに指定し、
前記データバッファは、前記第1コントローラによって読み出された前記データを前記書き込みアドレスに保持し、
前記第2処理部は、前記書き込みアドレスから前記データの読み出しを指示する前記第2コマンドを生成する
請求項1、3〜5のいずれか一項に記載のブリッジ装置。
【請求項７】
前記外部装置への通知手段を備え、
前記第1コントローラに備えられたDMAコントローラからデータがDMA転送され、
前記データバッファは、前記DMAコントローラからのデータ受信において、あらかじめ定めた例外事象が発生した場合は、前記DMA転送が完了した後、前記外部装置に前記例外事象の発生を通知する
請求項1、3〜6のいずれか一項に記載のブリッジ装置。
【請求項８】
複数の第2コントローラのそれぞれの制御手順を記憶する制御手順記憶部をさらに備え、
前記第2処理部は、前記複数の第2コントローラのうち使用する第2コントローラの制御手順にしたがって、前記第2コマンドを生成する
請求項1、3〜7のいずれか一項に記載のブリッジ装置。
【請求項９】
複数の第1コントローラのそれぞれの制御手順を記憶する制御手順記憶部をさらに備え、
前記第1処理部は、前記複数の第1コントローラのうち使用する第1コントローラの制御手順にしたがって、前記第1コマンドを生成する
請求項1、3〜8のいずれか一項に記載のブリッジ装置。
【請求項１０】
前記外部装置から前記第1転送情報を受信して前記転送情報記憶部へ格納する処理と、前記転送情報記憶部から前記第1転送情報を読み出して前記第1コマンドを生成する処理とを並行して行う
請求項1、3〜9のいずれか一項に記載のブリッジ装置。
【請求項１１】
前記データバッファをN個（Nは2以上の整数）備え、
前記受信部は、複数の第1転送情報を受信し、
前記転送情報記憶部は、前記複数の第1転送情報を、受信順序に応じた優先度を付与して記憶し、
前記N個のデータバッファ間にあらかじめ順位が設定されており、
前記第1処理部は、前記転送情報記憶部において優先度の最も高いN個の第1転送情報に基づき、前記N個の第1転送情報間での優先度の順位と同じ順位のデータバッファに、読み出しデータを書き込むことを指示する第1コマンドを生成し、前記第1コマンドを前記第1コントローラに送り、
前記N個のデータバッファは、前記第1コントローラから振り分けられるデータをそれぞれ保持し、
前記第2処理部は、前記N個のデータバッファに書き込まれたデータの読み出しを指示する第2コマンドをそれぞれ生成して、前記第2コントローラに送り、
前記N個のデータバッファからそれぞれ読み出されたデータに、前記N個のデータバッファ間でのそれぞれの順位を表す識別情報を付与して、前記第2コントローラに出力する
請求項1、3〜10のいずれか一項に記載のブリッジ装置。
【請求項１２】
前記第1転送情報は、前記データバッファの書き込みアドレスをさらに指定し、
前記第1処理部は、前記データバッファの前記書き込みアドレスへ前記データを書き込むことを指示する前記第1コマンドを生成し、
前記第2処理部は、前記データバッファの前記書き込みアドレスからデータを読み出すことを指示する前記第2コマンドを生成する
請求項2に記載のブリッジ装置。
【請求項１３】
前記外部装置への通知手段を備え、
前記第2コントローラに備えられたDMAコントローラからデータがDMA転送され、
前記データバッファは、前記DMAコントローラからのデータ受信において、あらかじめ定めた例外事象が発生した場合は、前記DMA転送が完了した後、前記外部装置に前記例外事象の発生を通知する
請求項2または12に記載のブリッジ装置。
【請求項１４】
パケット処理部をさらに備え、
前記DAMコントローラから転送されるデータはパケットにより運ばれ、
前記パケット処理部は、前記パケットのヘッダを解析することにより、前記例外事象が発生したかを検出する、
請求項13に記載のブリッジ装置。
【請求項１５】
前記外部装置から前記第1転送情報を受信して前記転送情報記憶部へ格納する処理と、前記転送情報記憶部から前記第1転送情報を読み出して前記第1コマンドを生成する処理とを並行して行う
請求項2、12〜14のいずれか一項に記載のブリッジ装置。
【請求項１６】
N（Nは2以上の整数）個のデータバッファを備え、
前記受信部は、複数の第1転送情報を受信し、
前記転送情報記憶部は、複数の第1転送情報を、受信順序に応じた優先度を付与して記憶し、
前記N個のデータバッファ間にあらかじめ順位が設定されており、
前記第1処理部は、前記転送情報記憶部において優先度の最も高いN個の第1転送情報に基づき、前記N個の第1転送情報間での優先度の順位と同じ順位のデータバッファに、データを書き込むことを指示する前記第1コマンドを生成し、前記第1コマンドを前記第2コントローラに出力し、
前記N個のデータバッファは、前記第2コントローラから入力されるデータを保持し、
前記第2処理部は、前記N個のデータバッファに書き込まれたデータを、前記N個のデータバッファのそれぞれ同じ順位の第1転送情報に指定される書き込みアドレスに書き込むことを指示する第2コマンドを生成し、前記第2コマンドを前記第1コントローラに出力する
請求項2、12〜14のいずれか一項に記載のブリッジ装置。
【請求項１７】
請求項1または2に記載のブリッジ装置と、
前記第1コントローラと、
前記第2コントローラと、
前記データ記憶装置と、
前記外部装置としてのCPUまたはMPUと
を備えたストレージ装置。
【請求項１８】
データ記憶装置の読み出しアドレスを指定した第1転送情報を外部装置から受信するステップと、
前記第1転送情報を転送情報記憶部に格納するステップと、
前記転送情報記憶部から前記第1転送情報を読み出すステップと、
読み出した第1転送情報に基づき、前記データ記憶装置の前記読み出しアドレスからデータの読み出しを指示する第1コマンドを生成し、前記第1コマンドを、前記データ記憶装置にアクセスする第1コントローラに出力するステップと、
前記第1コントローラによって前記データ記憶装置の前記読み出しアドレスから読み出されたデータが、データバッファに保持されたことを検出するステップと、
前記データバッファに保持されたデータの読み出しを指示する第2コマンドを生成し、前記第2コマンドを前記第2コントローラに出力するステップと、
をコンピュータに実行させるためのプログラム。
【請求項１９】
データ記憶装置へアクセスする第1コントローラと、第2コントローラとの間のデータ転送をブリッジするためのプログラムであって、
前記データ記憶装置の書き込みアドレスを指定した第1転送情報を外部装置から受信する受信ステップと
前記第1転送情報を転送情報記憶部に格納するステップと、
前記転送情報記憶部から前記第1転送情報を読み出すステップと、
読み出した前記第1転送情報に基づき、前記データの書き込みをデータバッファへ行うことを指示する第1コマンドを生成し、前記第1コマンドを、前記第2コントローラに出力する第1処理ステップと、
前記第2コントローラから出力されるデータがデータバッファに保持されたことを検出するステップと、
前記データバッファに保持されたデータを前記データ記憶装置の前記書き込みアドレスに書き込むことを指示する第2コマンドを生成し、前記第2コマンドを前記第1コントローラに出力する第2処理ステップと
をコンピュータに実行させるためのプログラム。
【請求項２０】
データ記憶装置へアクセスする第1コントローラと、第2コントローラとの間のデータ転送をブリッジする方法であって、
前記データ記憶装置の読み出しアドレスを指定した第1転送情報を外部装置から受信するステップと、
前記第1転送情報を転送情報記憶部に記憶するステップと、
前記転送情報記憶部から読み出した第1転送情報に基づき、前記データ記憶装置の前記読み出しアドレスからデータの読み出しを指示する第1コマンドを生成し、前記第1コマンドを前記第1コントローラに出力するステップと、
前記第1コントローラによって前記記憶装置の前記読み出しアドレスから読み出されたデータをデータバッファに保持するステップと、
前記第2コントローラに、前記データバッファに保持されたデータの読み出しを指示する第2コマンドを生成し、前記第2コマンドを前記第2コントローラに出力するステップと、
を備えた方法。
【請求項２１】
データ記憶装置へアクセスする第1コントローラと、第2コントローラとの間のデータ転送をブリッジする方法であって、
前記データ記憶装置の書き込みアドレスを指定した第1転送情報を外部装置から受信する受信ステップと
前記第1転送情報を転送情報記憶部に格納するステップと、
前記転送情報記憶部から前記第1転送情報を読み出すステップと、
読み出した前記第1転送情報に基づき、前記データの書き込みをデータバッファへ行うことを指示する第1コマンドを生成し、前記第1コマンドを、前記第2コントローラに出力する第1処理ステップと、
前記第2コントローラから出力されるデータをデータバッファに保持するステップと、
前記データバッファに保持されたデータを前記データ記憶装置の前記書き込みアドレスに書き込むことを指示する第2コマンドを生成し、前記第2コマンドを前記第1コントローラに出力する第2処理ステップと
を備えた方法。