JP6114767B2 - ブリッジ装置およびその方法、ストレージ装置、ならびにプログラム - Google Patents

ブリッジ装置およびその方法、ストレージ装置、ならびにプログラム Download PDF

Info

Publication number
JP6114767B2
JP6114767B2 JP2015014713A JP2015014713A JP6114767B2 JP 6114767 B2 JP6114767 B2 JP 6114767B2 JP 2015014713 A JP2015014713 A JP 2015014713A JP 2015014713 A JP2015014713 A JP 2015014713A JP 6114767 B2 JP6114767 B2 JP 6114767B2
Authority
JP
Japan
Prior art keywords
data
transfer information
controller
command
transfer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2015014713A
Other languages
English (en)
Other versions
JP2015099606A (ja
Inventor
沢 延 彦 菅
沢 延 彦 菅
林 優 太 小
林 優 太 小
後 藤 真 孝
藤 真 孝 後
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2015014713A priority Critical patent/JP6114767B2/ja
Publication of JP2015099606A publication Critical patent/JP2015099606A/ja
Application granted granted Critical
Publication of JP6114767B2 publication Critical patent/JP6114767B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明の実施形態は、ブリッジ装置およびその方法、ストレージ装置、ならびにプログラムに関する。
従来より、ブリッジ装置によるデータ転送に関する性能向上技術が存在する。性能向上技術を施したブリッジ装置の一例として、以下のものが知られている。該ブリッジ装置は、 MPU(Micro Processing Unit)、割り込みコントローラ、データバッファから構成される。該ブリッジ装置は、通信コントローラと、NAND Flashメモリにアクセスするメモリコントローラ間を接続する。該ブリッジ装置は、MPUおよび割り込みコントローラなどを内蔵することで、単純にバスセグメント間を接続するだけでなく、パケットの組立や解体といった通信処理とか、メモリコントローラや通信コントローラの制御を行う。このように元来当該ブリッジ装置を制御する主体である CPU(Central Processing Unit)に課せられていた処理負担を、ブリッジ装置自ら実行できるようにして、CPUの処理負荷を軽減する。これにより、データ転送性能を向上させる。しかしながら、パケット単位で割り込みが発生するとともに、MPUのソフトウェア処理の負荷が高く、十分にスループットが得られない問題が存在する。
また、上記とは別の技術として、割り込み代理処理部を備えることで、CPUが担っていた DMA(Direct Memory Access)転送処理や割り込み処理の負担を軽減して、データ転送性能を向上させるシステムが知られている。しかしながら、このシステムでは、ファイル転送に対しては、転送性能向上の効果を十分に発揮できない問題があった。なぜなら、ファイル転送処理にはファイルシステムに関連する処理が伴うが、この技術を用いても、その部分の性能向上は不可能であるためである。したがって、ファイルシステム処理が性能劣化要因となると、ストレージとネットワークとの間におけるファイル転送のデータ転送性能を十分に高めることはできない。
特開2006−119982号公報
本発明の一側面は、CPUまたはMPU等の外部装置にかける負荷を低減させつつ、高い転送性能を実現することを目的とする。
本発明の一態様としてのブリッジ装置は、データ記憶装置へアクセスする第1コントローラと、第2コントローラとの間のデータ転送をブリッジするブリッジ装置であって、受信部と、転送情報記憶部と、第1処理部と、データバッファと、第2処理部と、出力部とを備える。
前記受信部は、前記データ記憶装置の読み出しアドレスを指定した複数の第1転送情報を外部装置から受信する、前記データ記憶装置において1つのファイルが複数のデータブロックとして複数の領域に分散して配置され、各第1転送情報は各データブロックの読み出しアドレスを指定する。
前記転送情報記憶部は、前記受信部で受信された各第1転送情報を記憶する。
前記第1処理部は、前記転送情報記憶部から読み出した各第1転送情報に基づき、前記データ記憶装置の前記読み出しアドレスからデータの読み出しを指示する第1コマンドを生成し、前記第1コマンドを前記第1コントローラに出力する。
前記データバッファは、前記第1コントローラによって前記記憶装置の前記読み出しアドレスから読み出されたデータを保持する。
前記第2処理部は、前記第2コントローラに、前記データバッファに保持されたデータの読み出しを指示する第2コマンドを生成し、前記第2コマンドを前記第2コントローラに出力する。
前記外部装置から前記第1転送情報を受信して前記転送情報記憶部へ格納する処理と、前記転送情報記憶部から前記第1転送情報を読み出して前記第1コマンドを生成する処理とを並行して行う。
第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が、これらの処理部のうちの1つまたは複数の機能を記述した命令を含むプログラムを実行することで、当該機能が実現されてもよい。プログラムは、ハードディスク、メモリ装置、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チャネル転送の場合にも適用可能である。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。

Claims (18)

  1. データ記憶装置へアクセスする第1コントローラと、第2コントローラとの間のデータ転送をブリッジするブリッジ装置であって、
    前記データ記憶装置の読み出しアドレスを指定した複数の第1転送情報を外部装置から順次受信する、前記データ記憶装置において1つのファイルが複数のデータブロックとして複数の領域に分散して配置され、各第1転送情報は各データブロックの読み出しアドレスを指定する、受信部と、
    前記受信部で順次受信され前記第1転送情報を記憶する転送情報記憶部と、
    前記転送情報記憶部から読み出した各第1転送情報に基づき、前記データ記憶装置の前記読み出しアドレスからデータの読み出しを指示する第1コマンドを生成し、前記第1コマンドを前記第1コントローラに出力する第1処理部と、
    前記第1コントローラによって前記記憶装置の前記読み出しアドレスから読み出されたデータを保持するデータバッファと、
    前記第2コントローラに、前記データバッファに保持されたデータの読み出しを指示する第2コマンドを生成し、前記第2コマンドを前記第2コントローラに出力する第2処理部と、
    フラグを記憶するためのレジスタとを備え、
    前記レジスタに前記フラグが設定されているかを検査し、前記フラグが設定されている場合は、前記転送情報記憶部に前記複数の第1転送情報のすべてが記憶される前であっても、前記第1転送情報の読み出しを開始する
    ブリッジ装置。
  2. データ記憶装置へアクセスする第1コントローラと、第2コントローラとの間のデータ転送をブリッジするブリッジ装置であって、
    前記データ記憶装置の書き込みアドレスを指定した複数の第1転送情報を外部装置から順次受信し、前記複数の第1転送情報は、前記データ記憶装置において1つのファイルを複数のデータブロックとして複数の領域に分散して配置するように各データブロックの書き込みアドレスを指定する、受信部と、
    前記受信部で順次受信される前記第1転送情報を記憶する転送情報記憶部と、
    前記転送情報記憶部から読み出した各第1転送情報に基づき、データバッファへ前記データの書き込みを指示する第1コマンドを前記第2コントローラに出力する第1処理部と、
    前記第2コントローラから出力されるデータを受けて保持する前記データバッファと、 前記第1コントローラに、前記データバッファに保持されたデータを前記データ記憶装置の前記書き込みアドレスに書き込むことを指示する第2コマンドを出力する第2処理部とを備え、
    フラグを記憶するためのレジスタとを備え、
    前記レジスタに前記フラグが設定されているかを検査し、前記フラグが設定されている場合は、前記転送情報記憶部に前記複数の第1転送情報のすべてが記憶される前であっても、前記第1転送情報の読み出しを開始する
    ブリッジ装置。
  3. 前記第2コントローラからの読み出し要求に応じて、前記データバッファに保持されたデータを前記第2コントローラに出力する出力部
    をさらに備えた請求項1に記載のブリッジ装置。
  4. 前記転送情報記憶部は、前記複数の第1転送情報を、受信順序に応じた優先度を付与して記憶し、
    前記記憶部において優先度の高い前記第1転送情報から順番に、前記第1コマンドを生成して、前記第1コントローラに出力する
    請求項1または3に記載のブリッジ装置。
  5. 前記第1転送情報は、前記データバッファの書き込みアドレスをさらに指定し、
    前記データバッファは、前記第1コントローラによって読み出された前記データを前記書き込みアドレスに保持し、
    前記第2処理部は、前記書き込みアドレスから前記データの読み出しを指示する前記第2コマンドを生成する
    請求項1、3〜4のいずれか一項に記載のブリッジ装置。
  6. 複数の第2コントローラのそれぞれの制御手順を記憶する制御手順記憶部をさらに備え、
    前記第2処理部は、前記複数の第2コントローラのうち使用する第2コントローラの制御手順にしたがって、前記第2コマンドを生成する
    請求項1、3〜5のいずれか一項に記載のブリッジ装置。
  7. 複数の第1コントローラのそれぞれの制御手順を記憶する制御手順記憶部をさらに備え、
    前記第1処理部は、前記複数の第1コントローラのうち使用する第1コントローラの制御手順にしたがって、前記第1コマンドを生成する
    請求項1、3〜5のいずれか一項に記載のブリッジ装置。
  8. 前記データバッファをN個(Nは2以上の整数)備え、
    前記転送情報記憶部は、前記複数の第1転送情報を、受信順序に応じた優先度を付与して記憶し、
    前記N個のデータバッファ間にあらかじめ順位が設定されており、
    前記第1処理部は、前記転送情報記憶部において優先度の最も高いN個の第1転送情報に基づき、前記N個の第1転送情報間での優先度の順位と同じ順位のデータバッファに、読み出しデータを書き込むことを指示する第1コマンドを生成し、前記第1コマンドを前記第1コントローラに送り、
    前記N個のデータバッファは、前記第1コントローラから振り分けられるデータをそれぞれ保持し、
    前記第2処理部は、前記N個のデータバッファに書き込まれたデータの読み出しを指示する第2コマンドをそれぞれ生成して、前記第2コントローラに送り、
    前記N個のデータバッファからそれぞれ読み出されたデータに、前記N個のデータバッファ間でのそれぞれの順位を表す識別情報を付与して、前記第2コントローラに出力する
    請求項1、3〜7のいずれか一項に記載のブリッジ装置。
  9. 前記第1転送情報は、前記データバッファの書き込みアドレスをさらに指定し、
    前記第1処理部は、前記データバッファの前記書き込みアドレスへ前記データを書き込むことを指示する前記第1コマンドを生成し、
    前記第2処理部は、前記データバッファの前記書き込みアドレスからデータを読み出すことを指示する前記第2コマンドを生成する
    請求項2に記載のブリッジ装置。
  10. 前記外部装置への通知手段を備え、
    前記第2コントローラに備えられたDMAコントローラからデータがDMA転送され、 前記第1処理部は、前記DMAコントローラからのデータ受信において、あらかじめ定めた例外事象が発生した場合は、前記DMA転送が完了した後、前記外部装置に前記例外事象の発生を通知する
    請求項2または9に記載のブリッジ装置。
  11. パケット処理部をさらに備え、
    前記DMAコントローラから転送されるデータはパケットにより運ばれ、
    前記パケット処理部は、前記パケットのヘッダを解析することにより、前記例外事象が発生したかを検出する、
    請求項10に記載のブリッジ装置。
  12. N(Nは2以上の整数)個のデータバッファを備え、
    前記転送情報記憶部は、複数の第1転送情報を、受信順序に応じた優先度を付与して記憶し、
    前記N個のデータバッファ間にあらかじめ順位が設定されており、
    前記第1処理部は、前記転送情報記憶部において優先度の最も高いN個の第1転送情報に基づき、前記N個の第1転送情報間での優先度の順位と同じ順位のデータバッファに、データを書き込むことを指示する前記第1コマンドを生成し、前記第1コマンドを前記第2コントローラに出力し、
    前記N個のデータバッファは、前記第2コントローラから入力されるデータを保持し、 前記第2処理部は、前記N個のデータバッファに書き込まれたデータを、前記N個のデータバッファのそれぞれ同じ順位の第1転送情報に指定される書き込みアドレスに書き込むことを指示する第2コマンドを生成し、前記第2コマンドを前記第1コントローラに出力する
    請求項2、9〜11のいずれか一項に記載のブリッジ装置。
  13. 前記転送情報記憶部に記憶されている前記第1転送情報の個数が閾値を下回ったかを判断し、前記個数が前記下回った場合に、前記外部装置に前記転送情報の追加を要求する
    請求項1ないし12のいずれか一項に記載のブリッジ装置。
  14. 請求項1または2に記載のブリッジ装置と、
    前記第1コントローラと、
    前記第2コントローラと、
    前記データ記憶装置と、
    前記外部装置としてのCPUまたはMPUと
    を備えたストレージ装置。
  15. データ記憶装置へアクセスする第1コントローラと、第2コントローラとの間のデータ転送をブリッジするためのプログラムであって、
    前記データ記憶装置の読み出しアドレスを指定した複数の第1転送情報を外部装置から順次受信し、前記データ記憶装置において1つのファイルが複数のデータブロックとして複数の領域に分散して配置され、各第1転送情報は各データブロックの読み出しアドレスを指定する、ステップと、
    順次受信される前記第1転送情報を転送情報記憶部に格納するステップと、
    前記転送情報記憶部から各第1転送情報を読み出すステップと、
    読み出した第1転送情報に基づき、前記データ記憶装置の前記読み出しアドレスからデータの読み出しを指示する第1コマンドを生成し、前記第1コマンドを、前記データ記憶装置にアクセスする前記第1コントローラに出力するステップと、
    前記第1コントローラによって前記データ記憶装置の前記読み出しアドレスから読み出されたデータが、データバッファに保持されたことを検出するステップと、
    前記データバッファに保持されたデータの読み出しを指示する第2コマンドを生成し、前記第2コマンドを前記第2コントローラに出力するステップと、
    レジスタにフラグが設定されているかを検査し、前記フラグが設定されている場合は、前記転送情報記憶部に前記複数の第1転送情報のすべてが記憶される前であっても、前記第1転送情報の読み出しを開始するステップと
    をコンピュータに実行させるためのプログラム。
  16. データ記憶装置へアクセスする第1コントローラと、第2コントローラとの間のデータ転送をブリッジするためのプログラムであって、
    前記データ記憶装置の書き込みアドレスを指定した複数の第1転送情報を外部装置から順次受信し、前記複数の第1転送情報は、前記データ記憶装置において1つのファイルを複数のデータブロックとして複数の領域に分散して配置するように各データブロックの書き込みアドレスを指定する、受信ステップと
    順次受信される前記第1転送情報を転送情報記憶部に格納するステップと、
    前記転送情報記憶部から各第1転送情報を読み出すステップと、
    読み出した前記第1転送情報に基づき、前記データの書き込みをデータバッファへ行うことを指示する第1コマンドを生成し、前記第1コマンドを、前記第2コントローラに出力する第1処理ステップと、
    前記第2コントローラから出力されるデータがデータバッファに保持されたことを検出するステップと、
    前記データバッファに保持されたデータを前記データ記憶装置の前記書き込みアドレスに書き込むことを指示する第2コマンドを生成し、前記第2コマンドを前記第1コントローラに出力する第2処理ステップと、
    レジスタにフラグが設定されているかを検査し、前記フラグが設定されている場合は、前記転送情報記憶部に前記複数の第1転送情報のすべてが記憶される前であっても、前記第1転送情報の読み出しを開始するステップと
    をコンピュータに実行させるためのプログラム。
  17. データ記憶装置へアクセスする第1コントローラと、第2コントローラとの間のデータ転送をブリッジする方法であって、
    前記データ記憶装置の読み出しアドレスを指定した複数の第1転送情報を外部装置から順次受信し、前記データ記憶装置において1つのファイルが複数のデータブロックとして複数の領域に分散して配置され、各第1転送情報は各データブロックの読み出しアドレスを指定する、ステップと、
    順次受信される前記第1転送情報を転送情報記憶部に記憶するステップと、
    前記転送情報記憶部から読み出した各第1転送情報に基づき、前記データ記憶装置の前記読み出しアドレスからデータの読み出しを指示する第1コマンドを生成し、前記第1コマンドを前記第1コントローラに出力するステップと、
    前記第1コントローラによって前記記憶装置の前記読み出しアドレスから読み出されたデータをデータバッファに保持するステップと、
    前記第2コントローラに、前記データバッファに保持されたデータの読み出しを指示する第2コマンドを生成し、前記第2コマンドを前記第2コントローラに出力するステップと、
    レジスタにフラグが設定されているかを検査し、前記フラグが設定されている場合は、前記転送情報記憶部に前記複数の第1転送情報のすべてが記憶される前であっても、前記第1転送情報の読み出しを開始するステップと
    を備えた方法。
  18. データ記憶装置へアクセスする第1コントローラと、第2コントローラとの間のデータ転送をブリッジする方法であって、
    前記データ記憶装置の書き込みアドレスを指定した複数の第1転送情報を外部装置か順次受信し、前記複数の第1転送情報は、前記データ記憶装置において1つのファイルを複数のデータブロックとして複数の領域に分散して配置するように各データブロックの書き込みアドレスを指定する、受信ステップと
    順次受信される前記第1転送情報を転送情報記憶部に格納するステップと、
    前記転送情報記憶部から各第1転送情報を読み出すステップと、
    読み出した前記第1転送情報に基づき、前記データの書き込みをデータバッファへ行うことを指示する第1コマンドを生成し、前記第1コマンドを、前記第2コントローラに出力する第1処理ステップと、
    前記第2コントローラから出力されるデータをデータバッファに保持するステップと、 前記データバッファに保持されたデータを前記データ記憶装置の前記書き込みアドレスに書き込むことを指示する第2コマンドを生成し、前記第2コマンドを前記第1コントローラに出力する第2処理ステップと、
    レジスタにフラグが設定されているかを検査し、前記フラグが設定されている場合は、前記転送情報記憶部に前記複数の第1転送情報のすべてが記憶される前であっても、前記第1転送情報の読み出しを開始するステップと
    を備えた方法。
JP2015014713A 2015-01-28 2015-01-28 ブリッジ装置およびその方法、ストレージ装置、ならびにプログラム Expired - Fee Related JP6114767B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015014713A JP6114767B2 (ja) 2015-01-28 2015-01-28 ブリッジ装置およびその方法、ストレージ装置、ならびにプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015014713A JP6114767B2 (ja) 2015-01-28 2015-01-28 ブリッジ装置およびその方法、ストレージ装置、ならびにプログラム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2012148596A Division JP2014010759A (ja) 2012-07-02 2012-07-02 ブリッジ装置およびその方法、ストレージ装置、ならびにプログラム

Publications (2)

Publication Number Publication Date
JP2015099606A JP2015099606A (ja) 2015-05-28
JP6114767B2 true JP6114767B2 (ja) 2017-04-12

Family

ID=53376130

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015014713A Expired - Fee Related JP6114767B2 (ja) 2015-01-28 2015-01-28 ブリッジ装置およびその方法、ストレージ装置、ならびにプログラム

Country Status (1)

Country Link
JP (1) JP6114767B2 (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002259326A (ja) * 2001-02-27 2002-09-13 Canon Inc Dmaコントローラ及びdma転送方法
JP4328581B2 (ja) * 2003-08-22 2009-09-09 富士通株式会社 モジュール間データ転送確認機能を有する装置並びにストレージ制御装置および同装置用インターフェイスモジュール
JP4397770B2 (ja) * 2004-09-17 2010-01-13 富士通株式会社 記憶媒体制御装置、記憶媒体制御方法および記憶媒体制御プログラム
CN103201725B (zh) * 2010-11-25 2015-12-09 国际商业机器公司 用于在多个处理器之间共享的存储器的存储器访问设备

Also Published As

Publication number Publication date
JP2015099606A (ja) 2015-05-28

Similar Documents

Publication Publication Date Title
US10838665B2 (en) Method, device, and system for buffering data for read/write commands in NVME over fabric architecture
US10412017B2 (en) Transfer device, transfer method, and computer program product
WO2022156370A1 (zh) 一种基于fpga的dma设备及dma数据搬移方法
JP2014010759A (ja) ブリッジ装置およびその方法、ストレージ装置、ならびにプログラム
US7433977B2 (en) DMAC to handle transfers of unknown lengths
US20150006766A1 (en) Hardware-Assisted DMA Transfer with Dependency
US8918560B2 (en) Controller for storage device and method for controlling storage device
US20130060963A1 (en) Facilitating routing by selectively aggregating contiguous data units
JP5651622B2 (ja) データ伝送装置、データ伝送方法、及びプログラム
JP2003288317A (ja) 端数ブロックデータ転送を検出し補償するシステムおよび方法
JP6114767B2 (ja) ブリッジ装置およびその方法、ストレージ装置、ならびにプログラム
JP5989818B2 (ja) ブリッジ装置およびその方法、ストレージ装置、ならびにプログラム
US20150242160A1 (en) Memory system, control method of memory system, and controller
KR20020019437A (ko) 디스크 제어장치의 메모리 구조에 대한 시스템 및 방법
US20190155774A1 (en) Data transmission apparatus and data transmission method
JP2014048810A (ja) ホストシステム、ストレージデバイス、および通信方法
EP2562634A2 (en) Data copy processing system, storage device, and data copy processing method
JP2006285872A (ja) マルチcpuシステム
JPWO2013062109A1 (ja) I/oデバイス制御システムおよびi/oデバイス制御方法
US8296481B2 (en) Device and method for improving transfer efficiency of odd number of data blocks
JP5541544B2 (ja) コンピュータ装置、データ転送方法、及びプログラム
JP2012073745A (ja) Dmaシステム
JPWO2018173300A1 (ja) I/o制御方法およびi/o制御システム
JP2008299747A (ja) Usbホストシステム及び転送データの転送方法
JP2008118211A (ja) データ転送装置及びデータ転送方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151222

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160715

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170217

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170317

R151 Written notification of patent or utility model registration

Ref document number: 6114767

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees