(57)【要約】【課題】ホスト側での処理を軽減したＤＭＡによるデータ転送を可能にする。【解決手段】ＤＭＡによるデータ転送を制御する部分に組み込まれる回路は、４Ｋ境界をまたぐデータ転送であるか否かを判定する４Ｋ境界判定回路１０２、バッファーサイズを超えるデータ転送であるか否かを判定するバッファー境界判定回路１０３、指示された転送サイズが最大転送可能サイズよりも小さいときに、指示された転送サイズが優先されるようにするための転送サイズ判定回路１０４を含む構成とされる。これらの判定回路による判定結果に応じて、転送するデータの大きさが決定される。本発明は、例えばストレージシステムに適用できる。【選択図】図７
2008269282.tif 000002
【特許請求の範囲】
【請求項１】
他の装置との間で設定される読み出しのときの最大の転送サイズまたは書き込みのときの最大の転送サイズを最大転送サイズとして設定する設定手段と、
転送すべき第１のデータ量から、転送した第２のデータ量を減算し第３のデータ量を算出する算出手段と、
前記第３のデータ量を転送した場合、ページ境界をまたぐ転送になる否かを判定する境界判定手段と、
前記第３のデータ量を転送した場合、バッファーサイズを超えた転送になるか否かを判定するバッファー境界判定手段と、
前記最大転送サイズよりも前記第３のデータ量が小さいか否かを判定する転送サイズ判定手段と、
前記境界判定手段による第１の判定結果、前記バッファー境界判定手段による第２の判定結果、および、前記転送サイズ判定手段による第３の判定結果から、前記第３のデータ量のうち、転送するデータ量を決定する決定手段と
を備える情報処理装置。
【請求項２】
前記境界判定手段は、読み出し開始位置から、ページ境界までの差分値を算出し、
前記バッファー境界判定手段は、前記バッファーの残量を算出し、
前記決定手段は、前記差分値、前記残量、または、前記第３のデータ量のうち、最も小さい値を、転送するデータ量とする
請求項１に記載の情報処理装置。
【請求項３】
前記決定手段は、前記第１の判定結果、前記第２の判定結果、および前記第３の判定結果のうち、判定が成立したことを示している判定結果が２以上の場合、前記差分値、前記残量、または、前記第３のサイズのうち、最も小さい値を、データの転送のサイズとして決定する
請求項２に記載の情報処理装置。
【請求項４】
前記決定手段により決定されたデータ量で、データの転送を制御するＤＭＡ（Direct Memory Access）コントローラをさらに備える
請求項１に記載の情報処理装置。
【請求項５】
前記算出手段は、前記決定手段により決定されたデータ量を、第２のデータ量とし、前記第３のデータ量を、第１のデータ量とした演算を行うことで、前記第３のデータ量を更新し、その更新は、前記第３のデータ量が０になるまで繰り返される
請求項１に記載の情報処理装置。
【請求項６】
前記第１のデータ量の初期値は、前記他の装置から与えられる
請求項５に記載の情報処理装置。
【請求項７】
他の装置との間で設定される読み出しのときの最大の転送サイズまたは書き込みのときの最大の転送サイズを最大転送サイズとして設定し、
転送すべき第１のデータ量から、転送した第２のデータ量を減算し第３のデータ量を算出し、
前記第３のデータ量を転送した場合、ページ境界をまたぐ転送になる否か、バッファーサイズを超えた転送になるか否か、および、前記最大転送サイズよりも前記第３のデータ量が小さいか否かを、それぞれ判定し、
それらの判定結果から、前記第３のデータ量のうち、転送するデータ量を決定する
ステップを含む情報処理方法。
【請求項８】
他の装置との間で設定される読み出しのときの最大の転送サイズまたは書き込みのときの最大の転送サイズを最大転送サイズとして設定し、
転送すべき第１のデータ量から、転送した第２のデータ量を減算し第３のデータ量を算出し、
前記第３のデータ量を転送した場合、ページ境界をまたぐ転送になる否か、バッファーサイズを超えた転送になるか否か、および、前記最大転送サイズよりも前記第３のデータ量が小さいか否かを、それぞれ判定し、
それらの判定結果から、前記第３のデータ量のうち、転送するデータ量を決定する
ステップを含むコンピュータが読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法、並びにプログラムに関し、特に、情報を転送する場合に用いて好適な情報処理装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
従来、メモリを内蔵するメモリカードなどが接続されるデータ処理装置が用いられている（例えば、特許文献１参照）。
【０００３】
従来、ホストとストレージとの間でデータを転送するために、ＤＭＡ（Direct Memory Access）コントローラが用いられていた。Direct Memory Accessとは、機械語の命令群によらず、メモリとメモリまたはメモリとI/Oデバイスの間で直接データを転送することである。DMAコントローラとは、DMA機能を制御するためのコントローラである。
【０００４】
ＤＭＡの機能を用いたデータ転送には、データ転送アドレスおよびデータ転送サイズなどのデータ転送制御情報が記載された記述子が用いられてデータ転送が行われる。
【０００５】
記述子を用いた転送方法は、例えば、図１に示されるように、パーソナルコンピュータなどに用いられているメモリシステムのようにページ毎に管理されている乖離した物理アドレス空間、すなわち、連続した論理アドレス空間に記憶されているものと定義されている情報が、実際の物理アドレス空間においては、複数に乖離されて記憶されている場合におけるデータ転送に用いると好適である。
【特許文献１】特開２００４−４６８９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ホストとストレージを接続するインタフェースとして、PCI（Peripheral Components Interconnect） Expressと称される高速バスが広く実用化されている。PCI Expressは、パケットベースのバスインタフェースである。パケットベースのバスインタフェースは、転送サイズをパケット発行時に決定する必要がある。
【０００７】
例えば、パケットベースのバスインタフェースではない、AMBA（Advanced Microcontroller Bus Architecture）、AHB（Advanced High-Performance Bus）やAPB（Advanced Peripheral Bus）などの場合、ＤＭＡにおけるデータ転送を途中で中断、再開することができるが、PCI Expressのようなパケットベースのバスインタフェースでは、ＤＭＡにおけるデータ転送を途中で中断、再開することができない。
【０００８】
よって、パケットベースのバスインタフェースを用いた場合、転送サイズをパケット発行時に決める必要がある。また、大量のデータを転送するような場合、事前にデータを分割し転送する必要がある。ホスト側は、データの転送時に、バスの規格を考慮に入れた、データの転送に関わるスケジューリングを行い、そのスケジューリングに基づく記述子を生成する必要があった。
【０００９】
本発明は、このような状況に鑑みてなされたものであり、データ転送時にホスト側で行われる処理を軽減させることができるようにするものである。
【課題を解決するための手段】
【００１０】
本発明の一側面の情報処理装置は、他の装置との間で設定される読み出しのときの最大の転送サイズまたは書き込みのときの最大の転送サイズを最大転送サイズとして設定する設定手段と、転送すべき第１のデータ量から、転送した第２のデータ量を減算し第３のデータ量を算出する算出手段と、前記第３のデータ量を転送した場合、ページ境界をまたぐ転送になる否かを判定する境界判定手段と、前記第３のデータ量を転送した場合、バッファーサイズを超えた転送になるか否かを判定するバッファー境界判定手段と、前記最大転送サイズよりも前記第３のデータ量が小さいか否かを判定する転送サイズ判定手段と、前記境界判定手段による第１の判定結果、前記バッファー境界判定手段による第２の判定結果、および、前記転送サイズ判定手段による第３の判定結果から、前記第３のデータ量のうち、転送するデータ量を決定する決定手段とを備える。
【００１１】
前記境界判定手段は、読み出し開始位置から、ページ境界までの差分値を算出し、前記バッファー境界判定手段は、前記バッファーの残量を算出し、前記決定手段は、前記差分値、前記残量、または、前記第３のデータ量のうち、最も小さい値を、転送するデータ量とするようにすることができる。
【００１２】
前記決定手段は、前記第１の判定結果、前記第２の判定結果、および前記第３の判定結果のうち、判定が成立したことを示している判定結果が２以上の場合、前記差分値、前記残量、または、前記第３のサイズのうち、最も小さい値を、データの転送のサイズとして決定するようにすることができる。
【００１３】
前記決定手段により決定されたデータ量で、データの転送を制御するＤＭＡ（Direct Memory Access）コントローラをさらに備えるようにすることができる。
【００１４】
前記算出手段は、前記決定手段により決定されたデータ量を、第２のデータ量とし、前記第３のデータ量を、第１のデータ量とした演算を行うことで、前記第３のデータ量を更新し、その更新は、前記第３のデータ量が０になるまで繰り返されるようにすることができる。
【００１５】
前記第１のデータ量の初期値は、前記他の装置から与えられるようにすることができる。
【００１６】
本発明の一側面の情報処理方法は、他の装置との間で設定される読み出しのときの最大の転送サイズまたは書き込みのときの最大の転送サイズを最大転送サイズとして設定し、転送すべき第１のデータ量から、転送した第２のデータ量を減算し第３のデータ量を算出し、前記第３のデータ量を転送した場合、ページ境界をまたぐ転送になる否か、バッファーサイズを超えた転送になるか否か、および、前記最大転送サイズよりも前記第３のデータ量が小さいか否かを、それぞれ判定し、それらの判定結果から、前記第３のデータ量のうち、転送するデータ量を決定するステップを含む。
【００１７】
本発明の一側面のプログラムは、他の装置との間で設定される読み出しのときの最大の転送サイズまたは書き込みのときの最大の転送サイズを最大転送サイズとして設定し、転送すべき第１のデータ量から、転送した第２のデータ量を減算し第３のデータ量を算出し、前記第３のデータ量を転送した場合、ページ境界をまたぐ転送になる否か、バッファーサイズを超えた転送になるか否か、および、前記最大転送サイズよりも前記第３のデータ量が小さいか否かを、それぞれ判定し、それらの判定結果から、前記第３のデータ量のうち、転送するデータ量を決定するステップを含むコンピュータが読み取り可能なプログラム。
【００１８】
本発明の一側面の情報処理装置および方法、並びにプログラムにおいては、ホストシステムと接続され、ホストシステムからデータ転送時のサイズが指示され、そのサイズでのデータ転送が、ページ境界、バッファー境界を少なくとも考慮されて、必要に応じて複数回に分割して実行させる。
【発明の効果】
【００１９】
本発明の一側面によれば、データ転送時に、例えば、ホストシステム側の処理負担を軽減することが可能となる。
【発明を実施するための最良の形態】
【００２０】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００２１】
本発明の一側面の情報処理装置は、他の装置との間で設定される読み出しのときの最大の転送サイズまたは書き込みのときの最大の転送サイズを最大転送サイズとして設定する設定手段（例えば、図７の最大転送サイズ判定回路１０１）と、転送すべき第１のデータ量から、転送した第２のデータ量を減算し第３のデータ量を算出する算出手段（例えば、図７の減算器１０７）と、前記第３のデータ量を転送した場合、ページ境界をまたぐ転送になる否かを判定する境界判定手段（例えば、図７の４Ｋ境界判定回路１０２）と、前記第３のデータ量を転送した場合、バッファーサイズを超えた転送になるか否かを判定するバッファー境界判定手段（例えば、図７のバッファー境界判定回路１０３）と、前記最大転送サイズよりも前記第３のデータ量が小さいか否かを判定する転送サイズ判定手段（例えば、図７の転送サイズ判定回路１０４）と、前記境界判定手段による第１の判定結果、前記バッファー境界判定手段による第２の判定結果、および、前記転送サイズ判定手段による第３の判定結果から、前記第３のデータ量のうち、転送するデータ量を決定する決定手段（例えば、図７の優先度判定回路１０５）とを備える。
【００２２】
以下に、本発明の実施の形態について図面を参照して説明する。
【００２３】
［システムの構成について］
図２は、本発明を適用した、ストレージシステムとホストシステムとの構成を示すブロック図である。
【００２４】
ストレージシステム２１とホストシステム２２とは、ストレージI/F２３で接続されている。ストレージＩ／Ｆ２３には、例えば、PCI（PeripheralComponentsInterconnect）Expressなどの高速バスが用いられると好適である。
【００２５】
ストレージシステム２１は、コントローラ４１、内部バス４２、レジスタ４３、ＤＭＡコントローラ４４、バッファメモリ４５、ストレージＩ／Ｆバス４６、ストレージメモリコントローラ４７、およびストレージメモリ４８−１乃至４８−ｎを含む構成とされる。
【００２６】
コントローラ４１は、ストレージシステム２１の動作を制御するものであり、例えば、ストレージメモリコントローラ４７を制御して、ストレージメモリ４８−１乃至４８−ｎへのデータの書き込みまたは読み出しを実行させたり、ホストシステム２２から供給され、レジスタ４３のうちのいずれかに書き込まれたコマンドに基づいて、ＤＭＡコントローラ４４の設定を行ったりするなどの処理を実行する。
【００２７】
内部バス４２には、コントローラ４１、レジスタ４３、ＤＭＡコントローラ４４、バッファメモリ４５が接続される。レジスタ４３は、複数のレジスタを含むことができ、ホストシステム２２から、ストレージI/F２３およびストレージI/Fバス４６を介してホストシステム２２から供給されたコマンドや記述子または転送処理やその他の処理に必要な情報や引数などを保持する。
【００２８】
ＤＭＡコントローラ４４は、ストレージシステム２１のバッファメモリ４５とホストシステム２２のホストメモリ６２とのデータの授受を制御するものである。また、ＤＭＡコントローラ４４は、複数の記述子（エントリとも称される）により構成されるリンクリストのアドレスが、ホストシステム２２からストレージシステム２１のレジスタ４３に供給され、ストレージシステム２１がこのリンクリストを読み出すことにより転送処理が実行されるリンクリスト転送モードが設定されている。
【００２９】
リンクリスト転送モードは、図１を用いて説明したように、ホストシステム２２のホストメモリ６２における物理アドレス空間が、ページ毎に管理される場合、すなわち、論理アドレス空間のように連続しておらず、乖離して設定されるような場合に用いると好適である。
【００３０】
バッファメモリ４５は、ストレージＩ／Ｆ２３およびストレージＩ／Ｆバス４６を介して、ホストシステム２２から供給されたデータを一時バッファリングしたり、ストレージメモリコントローラ４７の制御によりストレージメモリ４８−１乃至４８−ｎのうちのいずれかから読み出されて、ストレージＩ／Ｆ２３およびストレージＩ／Ｆバス４６を介して、ホストシステム２２に供給されるデータを一時バッファリングしたりする。
【００３１】
ストレージＩ／Ｆバス４６は、レジスタ４３、ＤＭＡコントローラ４４、バッファメモリ４５と、ストレージＩ／Ｆとを接続するバスである。ストレージメモリコントローラ４７は、コントローラ４１の制御に基づいて、ストレージメモリ４８−１乃至４８−ｎへのデータの書き込みおよび読み出しを制御する。ストレージメモリ４８−１乃至４８−ｎは、ストレージメモリコントローラ４７により、データが書き込まれ、また、読み出される。以下の説明においては、ストレージメモリ４８−１乃至４８−ｎを個々に区別する必要がない場合、単に、ストレージメモリ４８と称する。
【００３２】
ホストシステム２２は、ホストＣＰＵ６１、および、ホストメモリ６２を含んで構成される。なお、ホストシステム２２は、例えば、通信部、表示部、操作入力部、撮像部、音声取得部、または、データ圧縮処理部など、これ以外の構成要素を含んで構成されていてもよいことは言うまでもない。ホストシステム２２としては、例えば、一般的なパーソナルコンピュータ、デジタルスチルカメラ、デジタルビデオカメラなどの、さまざまな情報処理装置を用いることができる。
【００３３】
ホストＣＰＵ６１は、ホストシステム２２の動作を制御するものであり、例えば、図示しない操作入力部により入力されたユーザの操作入力に基づいて、ホストメモリ６２に記憶されているデータをストレージシステム２１のストレージメモリ４８に書き込むためのコマンドや、ストレージシステム２１のストレージメモリ４８に記憶されているデータを読み込んで、ホストメモリ６２に記憶させるためのコマンドなどのストレージシステム２１とのデータの授受に関するコマンド、または、これ以外に、例えば、ストレージメモリ４８に記憶されているデータの消去などを指令するなど、ストレージメモリ４８を制御するためのコマンドを発生し、ストレージＩ／Ｆ２３を介して、ストレージシステム２１のレジスタ４３に書き込む処理を実行することができる。
【００３４】
ホストメモリ６２は、ホストＣＰＵ６１の制御に基づいて、所定のデータを記憶する。
【００３５】
このように、図２に示されるストレージシステム２１とホストシステム２２との構成では、ストレージ側に、ＤＭＡ転送を制御するＤＭＡコントローラが設けられている。
【００３６】
ここでは、ホストメモリ６２におけるデータの記憶形式に、図１を用いて説明したように、ホストシステム２２のホストメモリ６２における物理アドレス空間が、論理アドレス空間のように連続しておらず、乖離して設定されるデータ記憶形式である場合を例に挙げて説明する。換言すれば、ホストシステム２２は、ホストメモリ６２において、物理アドレス空間が論理アドレス空間と異なり、連続していない（乖離している）複数の領域から構成されるホストシステム２２である場合を例に挙げて説明する。
【００３７】
次に、ストレージシステム２１とホストシステム２２の動作について、図３のフローチャートを参照して説明する。ステップＳ１１において、ホストシステム２２のホストＣＰＵ６１は、データ転送開始のコマンドを、ストレージＩ／Ｆ２３を介して、ストレージシステム２１に送信する。
【００３８】
ステップＳ１２において、ストレージシステム２１は、ストレージＩ／Ｆ２３を介して、ホストシステム２２からコマンドの供給を受ける。供給されたコマンドは、ストレージＩ／Ｆバス４６を介して、レジスタ４３に書き込まれる。ステップＳ１３において、コントローラ４１は、内部バス４２を介して、レジスタ４３に書き込まれたコマンドを読み込み、コマンドを解釈する。
【００３９】
ここでは、レジスタに書き込まれていたコマンドが、リンクリスト転送モードであると判定し、そのような設定を行うものとして説明を続ける。ステップＳ１４において、コントローラ４１は、リンクリスト転送モードとして、ＤＭＡコントローラ４４を設定する。
【００４０】
ステップＳ１５において、リンクリスト転送モードに設定されたＤＭＡコントローラ４４は、ホストシステム２２に対して、ストレージＩ／Ｆ２３を介して、リンクリストのうちの１エントリを要求する。
【００４１】
ステップＳ１６において、ホストシステム２２のホストＣＰＵ６１は、リンクリストのうちの１エントリの要求を受け、ストレージＩ／Ｆ２３を介して、ストレージシステム２１にリンクリストのうちの１エントリを送信する。
【００４２】
ステップＳ１７において、ストレージシステム２１は、ストレージＩ／Ｆ２３を介して、ホストシステム２２からエントリを取得し、レジスタ４３に保持する。ステップＳ１８およびステップＳ１９において、ストレージシステム２１およびホストシステム２２は、データの転送処理を実行する。
【００４３】
ステップＳ２０において、ストレージシステム２１のコントローラ４１は、ステップＳ１７において取得したエントリにＥＯＴが記載されていたか否かを判定する。ステップＳ２０において、ＥＯＴが記載されていなかったと判定された場合、ステップＳ１５に処理が戻され、それ以降の処理が繰り返される。
【００４４】
一方、ステップＳ２０において、ＥＯＴが記載されていたと判定された場合、ステップＳ２１において、コントローラ４１は、処理を終了する。
【００４５】
このような処理により、リンクリスト転送モードにおいて、データ転送が実行される。
【００４６】
ここまでの処理について説明をさらに加える。例えば、ホストシステム２２のホストメモリ６２に記録されているデータを、ストレージシステム２１のストレージメモリ４８に書き込む処理が実行される場合、ホストシステム２２のホストＣＰＵ６１は、ストレージＩ／Ｆ２３およびストレージＩ／Ｆバス４６を介して、レジスタ４３に、ホストシステム２２のホストメモリ６２に記録されているデータを、ストレージシステム２１のストレージメモリ４８に書き込む処理を指令するコマンドであるライトコマンドを送信する。レジスタ４３は、このコマンドの供給を受け、一時保持する。
【００４７】
ストレージシステム２１のコントローラ４１は、レジスタ４３に保持されているコマンドを取得して、その内容を解釈する。上述したように、ストレージシステム２１とホストシステム２２においては、リンクリスト転送モードを用いて、データ転送が実行されるので、コントローラ４１は、ＤＭＡコントローラ４４に、リンクリスト転送モードに基づいた設定を行う。
【００４８】
すなわち、リンクリスト転送モードであるとき、ホストシステム２２のホストＣＰＵ６１は、レジスタ４３に、ホストメモリ６２においてリンクリストが記載されているアドレスを書き込むので、ＤＭＡコントローラ４４は、レジスタ４３を参照し、ホストメモリ６２から１エントリずつエントリを読み出して、読み出されたエントリに基づいてデータ転送処理を実行し、リンクリストの全てのエントリに対して、同様にデータ転送処理を実行する。
【００４９】
すなわち、ホストシステム２２からストレージシステム２１へのデータが書き込まれる場合、ＤＭＡコントローラ４４は、ホストメモリ６２に記憶されているデータのうち、ストレージメモリ４８に書き込まれるデータ読み出し、ストレージＩ／Ｆ２３およびストレージＩ／Ｆバス４６を介して、バッファメモリ４５に供給して、バファリングさせる。
【００５０】
ホストシステム２２は、リンクリストを作成するとき、ストレージＩ／Ｆ２３の規格などを考慮して作成する必要があるが、本実施の形態においては、そのようなことを考慮しなくても良い構成とされている。また、ＤＭＡコントローラ４４は、ホストシステム２２でストレージＩ／Ｆ２３の規格を考慮しなくても良いようにするために、図７に示すような構成を有している。図７を参照した説明は、後述する。
【００５１】
バッファメモリ４５に蓄積されたデータは、バッファメモリ４５に蓄積されたデータの内容が有効になった時点を起点として、ストレージメモリコントローラ４７により、ストレージメモリ４８に書き込まれる。また、例えば、ストレージシステム２１のストレージメモリ４８に記録されているデータを読み出して、ホストシステム２２のホストメモリ６２に記憶する処理が実行される場合、ホストシステム２２のホストＣＰＵ６１は、ストレージI/F２３およびストレージI/Fバス４６を介して、レジスタ４３に、ストレージシステム２１のストレージメモリ４８に記録されているデータを読み出すことを指令するライトコマンドを送信する。
【００５２】
レジスタ４３は、このコマンドの供給を受け、一時保持する。ストレージシステム２１のコントローラ４１は、レジスタ４３に保持されているコマンドを取得して、その内容を解釈する。上述したように、ストレージシステム２１とホストシステム２２においては、リンクリスト転送モードを用いて、データ転送が実行されるので、コントローラ４１は、ＤＭＡコントローラ４４に、リンクリスト転送モードに基づいた設定を行う。
【００５３】
そして、ホストシステム２２がストレージシステム２１からデータを読み出す場合、コントローラ４１は、ストレージメモリコントローラ４７を制御し、読み出されるデータを、ストレージメモリ４８からバッファメモリ４５に転送させる。バッファメモリ４５に蓄積されたデータは、バッファメモリ４５に蓄積されたデータの内容が有効になった時点を起点として、ＤＭＡコントローラ４４により、ストレージＩ／Ｆバス４６およびストレージＩ／Ｆ２３を介して、ホストメモリ６２に転送される。
【００５４】
ここで図１を用いて説明したように、ホストメモリ６２の物理アドレス空間が論理アドレス空間と異なり、連続していない（乖離している）複数の領域から構成されるホストシステム２２が有するデータ転送に関するコマンドセットについて説明を加える。ホストシステム２２が有するデータ転送に関するコマンドセットには、READ_DATA_LINKLISTコマンドとWRITE_DATA_LINKLISTコマンドが含まれる。
【００５５】
READ_DATA_LINKLISTコマンドは、リンクリスト転送モードで、指定アドレスから指定サイズ分のデータを連続して読み出すことを指令するコマンドである。WRITE_DATA_LINKLISTコマンドは、リンクリスト転送モードで、指定アドレスから指定サイズ分のデータを連続して書き込むことを指令するコマンドである。
【００５６】
そして、リンクリスト転送モードでは、離散した物理アドレス空間にデータを書き込んだり、離散した物理アドレス空間からデータを読み出したりするために、図４で示されるフォーマットの記述子を複数用いたリンクリストが用いられる。このリンクリストを構成する個々の記述子は、エントリとも称される。
【００５７】
１エントリは、転送アドレス、転送サイズ、および、リスト構造の最終エントリであるかを示す転送制御情報（EOT）を少なくとも含んで構成される。リンクリストを使用した転送モードであるリンクリスト転送モードにおいては、ホストシステム２２側よりストレージシステム２１のレジスタ４３に対し、ホストメモリ２２のうちのリンクリストが格納されている先頭アドレスが設定される。ＤＭＡコントローラ４４は、この設定に従ってホストメモリ６２から最初のエントリを読み出す。
【００５８】
このエントリに記述された転送情報を基に、ＤＭＡコントローラ４４は必要な転送を行うことができる。最初のエントリを使用した転送が終了すると、ＤＭＡコントローラ４４は、次のエントリをリンクリストから取得し、同様に転送を行う。ＤＭＡコントローラ４４は、エントリ内の転送制御情報のＥＯＴフラグを参照して、このエントリが最終エントリであるか否かを判別し、この動作を最終エントリまで繰り返す。
【００５９】
［制限について］
次に、ストレージＩ／Ｆ２３を、例えば、パケットベースのバスインタフェースを用いた場合、また、そのパケットベースのバスインタフェースとして、PCI Expressを用いた場合を例にあげて説明を加える。PCI ExpressをストレージＩ／Ｆ２３として適用したとき、以下のような制限を考慮してデータの授受を行う必要がある。
【００６０】
なお従来は、ホストシステム２２側が、以下に説明する制限を守るようにリンクリストを作成し、ストレージシステム２１側が、そのリンクリストに基づいて処理を実行するが、本実施の形態においては、ホストシステム２２側が、以下に説明する制限を守るようなリンクリストを作成しなくても、ストレージシステム２１側で制限を守った処理ができるように構成される。まず、制限について説明する。
【００６１】
制限１として、ストレージシステム２１が接続されるホストシステム２２の転送能力、例えば、書き込みのときのペイロードの最大の大きさを示すMaxPayloadSizeや、読み出しのときの最大の大きさを示すMaxReadRequestSizeを考慮し、これらのサイズを超えないようにデータの授受を行う必要がある。例えば、転送能力以上のデータを転送したい場合、仮に従来のようにホストシステム２２側が制限を考慮してリンクリストを生成するとすると、ホストシステム２２は、分割してデータの授受が行われるようなリンクリストを生成する必要があった。
【００６２】
制限２として、ストレージシステム２１内のバッファメモリ４５へのアクセス可能状態（Full/Empty）によって、バッファメモリ４５への書き込みまたは読み出しが制限されるため、バッファメモリ４５のサイズ（以下、適宜、バッファーサイズと記述する）を超えないようにデータの授受を行う必要がある。制限１の場合と同じく、例えば、バッファーサイズよりも大きいデータを転送したい場合、仮に従来のようにホストシステム２２側が制限を考慮してリンクリストを生成するとすると、ホストシステム２２は、バッファーサイズに合ったサイズに分割してデータの授受が行われるようなリンクリストを生成する必要があった。
【００６３】
制限１と制限２について、図５を参照してさらに説明を加える。図５の上の表は、Max Read Request Sizeと最大転送サイズの関係を示す表であり、図５の下の表は、Max Payload Sizeと最大転送サイズの関係を示す表である。Max Payload Sizeは、パケットに付加できる最大データサイズを示す。Max Read Request Sizeは、最大要求データサイズを示す。
【００６４】
例えば、ストレージシステム２１とホストシステム２２との間で、通信能力の交換の結果、Max Payload Sizeが１２８バイトと決定され、ホストシステム２２からストレージシステム２１に対し、Max Read Request Sizeが２０４８バイトと設定された場合、ホストシステム２２からストレージシステム２１へのデータ転送を行うには、ストレージシステム２１内のＤＭＡコントローラ４４により、ホストシステム２２に対してリード（Read）要求を出し、この要求が最大２０４８バイトの要求が出せることを意味する。
【００６５】
仮に、２０４８バイトのリード要求を、ホストシステム２２側が受信した場合、Max Payload Sizeが１２８バイトなので、ホストシステム２２側は、ストレージシステム２１に対して１２８バイトでデータを１６回に分割して送信することになる。例えば、ストレージＩ／Ｆバス２３にPCI Expressを適用した場合、PCI Expressの規格では、リード要求に対して、その結果を分割して送信することが許されているので、このような分割された転送が行われる。
【００６６】
また、Max Pay loadサイズは、Write時のみならずRead時にも適用される。ＤＭＡコントローラ４４は、ストレージシステム２１側に存在するので、ストレージシステム２１側へデータを書き込むには、ストレージシステム２１のＤＭＡ４４からホストシステム２２側に対してRead要求が出される。要求を出す側、受け取る側でリードとライトの定義が逆になる。
【００６７】
ストレージシステム２１とホストシステム２２との間で、データ転送が行われる場合、Max Read Request SizeやMax Payload Sizeといった転送能力や、ストレージシステム２１側のバッファーサイズによる、このような制限１や制限２がある。
【００６８】
次に、制限３について説明する。制限３として、バスの規定により、所定のアドレス境界をまたいだアクセスを行うパケットの生成は禁止されている。例えば、PCIExpressの仕様では、４Ｋアドレス境界（パーソナルコンピュータにおけるページ境界）をまたいだアクセスを行うパケットの生成は禁止されている。従って、この４Ｋアドレス境界をまたいだ転送を行わないようにする必要がある。
【００６９】
例えば、所定の転送先アドレスから、上記バッファーサイズに合わせて生成したパケットがこの４Ｋページ境界をまたぐ場合、ホストシステム２２がこれを考慮して事前に転送を分割する必要があった。そのような分割を行うためには、例えばリンクリストを分割するなどの方法がとられた。もしくは転送先アドレスをバッファーサイズで決まる転送サイズにあわせ、４Ｋ境界内に収まるように制限を設ける必要があった。
【００７０】
図６を参照し、制限３についてさらに説明を加える。ホストメモリ６２から８Ｋバイトのデータを読み出す場合であり、アドレス境界が４Ｋである場合を例に挙げて説明する。なお、図６を参照して説明においては、制限１や制限２については考慮しないとする。
【００７１】
図６に示したように、スタートアドレスから、８Ｋバイトを読み出すとき、４Ｋ境界を２回またぐので、最初の４Ｋ境界までの１回目のデータ転送が行われ、最初の４Ｋ境界から次の４Ｋ境界までの２回目のデータ転送が行われ、２つめの４Ｋ境界から残りのデータを転送するための３回目のデータ転送が行われるようなリンクリストが生成される。このように、アドレス境界をまたいだデータ転送が行われないようにするための制限３が考慮されて、この場合３つのリンクリストが生成される。
【００７２】
次に、制限４について説明する。制限４として、バッファーサイズよりも小さいデータを転送したい場合、上記バッファーサイズに合わせて、データに余分なデータを加え、Padding（パディング）を行う必要がある。例えば4バイトのデータだけを送信したい場合であり、２Ｋバイトのバッファーサイズを有する場合には、（２Ｋ―４）バイトの余分なデータを付加して、４Ｋバイトにして送信する必要があった。この場合、（２Ｋ―４）バイトの余分なデータは、４Ｋバイトの意味をなすデータに対して、実質的に意味をなさないデータであり、そのような実質的に意味をなさないデータを送信することは、無駄になり、通信路を無駄に占有してしまうことになる。従って、効率的な転送を行うためには、なるべくパディングを行わず、バッファーサイズに合わせた転送ができるように考慮する必要があった。
【００７３】
従来、ストレージシステム２１が接続されているホストシステム２２側では、このような制限１乃至４を全て考慮してリンクリストを構築する必要があった。このようなことを考慮してリンクリストを構築するのは、ホストシステム２２の処理の増大を意味し、ホストシステム２２の処理の軽減を行うために、ＤＭＡにおけるデータ転送を行うようにしてもその効果を最大にいかすことができないことになる。
【００７４】
ホストシステム２２側の処理を軽減するために、ホストシステム２２側で上記したようなことを考慮しなくてもデータ転送が適切にできるようにする。換言すれば、ホストシステム２２側からは、上記した制限１乃至４を考慮せずに指示を出し、ストレージシステム２１側で上記した制限１乃至４を守り、処理できるようにする。
【００７５】
ホストシステム２２側で、上記したような制限を考慮しなくてもデータ転送の指示を出せるようになることで、ホストシステム２２側の処理が軽減することは勿論のこと、ホストシステム２２側で自由に指示を出せることを意味し、ホストシステム２２側の自由度がますことになる。
【００７６】
ストレージシステム２１側で上記した制限１乃至４を考慮したデータ転送を行う場合を説明する。図７は、ストレージシステム２１側で制限１乃至４を考慮したデータ転送を実現する回路の構成例を示す図である。図７に示した回路は、例えば、ストレージシステム２１のＤＭＡコントローラ４４に組み込まれる。
【００７７】
図７に示した回路には、最大転送サイズ判定回路１０１、４Ｋ境界判定回路１０２、バッファー境界判定回路１０３、転送サイズ判定回路１０４、優先度判定回路１０５、ＤＭＡ１０６、減算器１０７、加算器１０８、加算器１０９、残りサイズレジスタ１１０、累積サイズレジスタ１１１、および、ネクストアドレスレジスタ１１２が含まれる。
【００７８】
最大転送サイズ判定回路１０１には、レジスタ４３（図２）から、Max Payload SizeとMax Read Request Sizeが供給され、ホストシステム２２からReadの指示またはWriteの指示が供給される。最大転送サイズ判定回路１０１は、Readの指示、または、Writeの指示に基づき、Max Payload SizeとMax Read Request Sizeから、最大転送サイズを設定を設定する。
【００７９】
この最大転送サイズ判定回路１０１は、制限１を満たす設定を行うための回路である。最大転送サイズ判定回路１０１からの出力、即ちこの場合、最大転送可能サイズに関する情報は、４Ｋ境界判定回路１０２と転送サイズ判定回路１０４に供給される。
【００８０】
４Ｋ境界判定回路１０２は、制限３を満たす設定を行うための回路である。４Ｋ境界判定回路１０２には、残りサイズレジスタ１１０からのRequest Sizeに関する情報と、ネクストアドレスレジスタ１１２からのRequest Addressに関する情報が供給される。Request Sizeは、転送されるデータのサイズを示し、Request Addressは、転送されるデータの読み出し開始アドレスを示す。
【００８１】
４Ｋ境界判定回路１０２は、（Request Address）＋（Request Size）が４Ｋアドレス境界をまたぐ転送となるか否かを判定する。Request Addressは、残りサイズレジスタ１１０から供給されるが、残りサイズレジスタ１１０は、ホストシステム２２から指示されたRequest Size（最終的に読み出すべき、または書き込むべきデータの総量）のうち、既にデータ転送を実行したデータ量を差し引いたサイズである。すなわち、残りサイズレジスタ１１０は、その時点で転送すべきデータの総量を記憶している。残りサイズレジスタ１１０に記憶されるサイズは、減算器１０７から出力である。
【００８２】
残りサイズレジスタ１１０には、ホストシステム２２から、Request Sizeが入力される。残りサイズレジスタ１１０は、ホストシステム２２からのRequest Sizeを、初期値として保持する。その後、データ転送が繰り返されることにより、その時点でデータ転送すべきデータ量の総量は、徐々に少なくなる。減算器１０７には、優先度判定回路１０５からの出力と、残りサイズレジスタ１１０に保持されているデータ量の情報が供給される。優先度判定回路１０５からの出力は、後述するように、その時点で、実行するデータ転送のデータ量である。
【００８３】
すなわち、減算器１０７には、その時点で、データ転送が実行されたときのデータ量と、その時点で転送すべきデータの総量が供給される。減算器１０７は、その時点で転送すべきデータの総量から、実行されたデータ量を減算することで、次の時点で転送すべきデータの総量、換言すれば、その時点で、転送されていない残りのデータ量が算出される。そして、そのデータ量が、残りサイズレジスタ１１０に保持される。
【００８４】
４Ｋ境界判定回路１０２は、判定結果が真であれば、真であるという判定結果Ａと、４Ｋアドレス境界までの差分を転送要求サイズＡとして優先度判定回路１０５に出力する。また４Ｋ境界判定回路１０２は、判定結果が偽であれば、偽であるという判定結果Ａと、残りサイズレジスタ１１０から供給されたRequest Sizeを転送要求サイズＡとして優先度判定回路１０５に出力する。
【００８５】
すなわち、４Ｋ境界判定回路１０２は、４Ｋ境界をまたがないでデータ転送を行える、最大のデータ転送量を、優先度判定回路１０５に出力する。なお、ここでは、４Ｋとしているが、これは、４Ｋバイトが境界として設定されているときであり、他の値が設定されている場合には、この４Ｋ境界判定回路１０２も、その設定されている他の値をまたがないようにするための判定結果Ａと転送要求サイズＡを出力する。
【００８６】
バッファー境界判定回路１０３は、Request SizeとRequest Addressで指定されるデータ転送要求が、バッファメモリ４５のバッファーサイズを超えてしまうか否かを判定する回路である。このバッファー境界判定回路１０３は、制限２を満たす設定を行うための回路であり、バッファーサイズでパケットを分割するための判定回路である。バッファー境界判定回路１０３は、バッファーサイズを超えるか否かの判定結果を、判定結果Ｂとして優先度判定回路１０５に出力し、そのときの転送サイズを要求転送サイズＢとして優先度判定回路１０５に出力する。
【００８７】
ここでは、バッファーサイズを超えると判定されたときには真という情報が判定結果Ｂとされ、バッファーサイズを超えないと判定されたときには偽という情報が判定結果Ｂとされるとして説明を続ける。
【００８８】
例えば、バッファーサイズが２０４８バイト（２Ｋバイト）のときを例に挙げ、バッファー境界判定回路１０３の判定について説明する。例えば直前のデータ転送で累積サイズレジスタ１１１に８バイトというデータが保持されているとする。累積サイズレジスタ１１１は、転送しきれていないデータ量であり、バッファメモリ４５に残っているデータ量が保持されるので、この場合、８バイトという情報が保持される。
【００８９】
累積サイズレジスタ１１１に８バイトという情報が保持されている状態とは、バッファメモリ４５の途中までデータが、８バイト分まで書き込まれている状態である。このようなときに、データ転送要求として２０４８バイトという要求が来た場合、この２０４８バイトは、２０４０バイトと８バイトに分割される。この分割された２０４０バイトと、累積サイズの８バイトが合算されると、２０４８バイトとなり、バッファーサイズと一致するサイズとなる。バッファー境界判定回路１０３は、この２０４８バイトを、転送要求サイズＢとして優先度判定回路１０５に出力する。
【００９０】
本来は２０４８バイトの転送要求であるので、残り８バイトは残りサイズレジスタ１１０に保持され、次の転送要求として転送要求サイズＢから出力される。すなわち転送要求２０４８バイトは、２０４０バイトと８バイトの２つのデータに２分割される。このとき２つに分割された後者の８バイトのデータを書き込むために、次の転送アドレスは、（Request Address）＋２０４０としなければならない。
【００９１】
そのためネクストアドレスレジスタ１１２に上記加算値を保持する必要がある。また累積サイズレジスタ１１１は、バッファーサイズ２０４８バイトに到達した時点で一度クリアにされ、２０４０バイト転送後は０（ゼロ）バイト、２分割された残りの８バイト転送後は、この８バイトとされる。残り転送サイズは、バッファーサイズ（２０４８バイト）−（累積サイズ）で計算できるが、本実施の形態では、残りサイズレジスタ１１０を設け、その残りサイズレジスタ１１０に計算値を保持する構成としている。このため、残りサイズレジスタ１１０を設けない構成とすることも可能であり、残りサイズレジスタ１１０を設けない構成も、本実施の形態に含まれる。
【００９２】
転送サイズ判定回路１０４は、条件４を満たす設定を行うための回路である。転送サイズ判定回路１０４には、最大転送サイズ判定回路１０１からの最大転送可能サイズに関する情報と、残りサイズレジスタ１１０からのRequest Sizeに関する情報が供給される。転送サイズ判定回路１０４は、転送要求サイズ（Request Size）が最大転送可能サイズよりも小さいかどうかの判定を行い、その判定結果を判定結果Ｃとして優先度判定回路１０５に出力する。ここでは、転送要求サイズが最大転送可能サイズよりも小さいと判定された場合、真という情報が判定結果Ｃとされ、転送要求サイズが最大転送可能サイズよりも大きいと判定された場合、偽という情報が判定結果Ｃとされるとして説明を続ける。
【００９３】
転送サイズ判定回路１０４は、判定が成立した場合、すなわち転送サイズが最大転送サイズよりも小さいと判定した場合、この小さい方の転送サイズを要求転送サイズＣとして優先度判定回路１０５に出力する。
【００９４】
優先度判定回路１０５には、４Ｋ境界判定回路１０２から判定結果Ａ、バッファー境界判定回路１０３から判定結果Ｂ、および転送サイズ判定回路１０４から判定結果Ｃが供給される。このように、優先度判定回路１０５には、３つの判定結果が供給されるが、そのうち、２つ以上の判定結果が真という判定結果であった場合、換言すれば、２つ以上の条件が成立したと判定される場合、優先度判定回路１０５は、最も小さい値を、最終的な転送要求サイズとしてＤＭＡ１０６に出力する。すなわち、優先度判定回路１０５には、４Ｋ境界判定回路１０２から要求転送サイズＡ、バッファー境界判定回路１０３から要求転送サイズＢ、および転送サイズ判定回路１０４から転送要求サイズＣが供給されるが、そのうち、最も小さな値を示す転送要求サイズが、最終点な転送要求サイズとしてＤＭＡ１０６に出力される。
【００９５】
図７に示した回路の動作について、図８乃至図１２を参照し、具体的な数値を代入して説明する。図８乃至図１２においては、説明のために必要な部分を、図７に示した回路から抽出して図示してある。
【００９６】
図８に示した状態は、時刻t１において、データ転送が指示されたときの状態であるとする。データ転送が指示されたとき、Request Sizeとして、５Ｋバイトが指示され、Request Address として、１Ｋが指示されたとする。また最大転送サイズは、４Ｋであるとして説明を続ける。
【００９７】
Request Sizeは、残りサイズレジスタ１１０に供給されるため、時刻t１においては、残りサイズレジスタ１１０に保持されている残りサイズに関する情報は、５Ｋとされる。Request Addressは、ネクストアドレスレジスタ１１２に供給されるため、時刻ｔ１においては、ネクストアドレスレジスタ１１２に保持されている読み出し開始のアドレスに関する情報は、１Ｋとされる。図８内の四角形内の数字は、レジスタに記憶される値、判定回路に供給された値、出力される値などを、それぞれ示す。
【００９８】
時刻t１においては、まだ、データ転送が行われてないため、累積サイズレジスタ１１１に記憶されているバッファメモリ４５（図２）の残りのデータ量は、０である。なおここでは、バッファメモリ４５の最大データ量は、２Ｋであるとして説明を続ける。
【００９９】
時刻ｔ１のとき、４Ｋ境界判定回路１１０には、最大転送サイズ判定回路１０１（図７）より、４Ｋという情報が供給され、残りサイズレジスタ１１０から、５Ｋという情報が供給され、ネクストアドレスレジスタ１１２から、１Ｋという情報が供給される。この場合、読み出し開始アドレスを１Ｋとしたとき、５Ｋのデータを読み出すことになる。すなわち、アドレスでいうと、１Ｋから６Ｋ（＝１Ｋ＋５ｋ）に存在するデータが転送対象とされていることになる。
【０１００】
この場合、４Ｋが境界であるので、１Ｋから６Ｋまで読み出すと、４Ｋの境界をまたいだ読み出しとなってしまう。よって、４Ｋの境界をまたぐため、判定結果Ａは、真であると出力される。また、４Ｋ境界をまたがないで最大のサイズが、要求転送サイズＡとして出力される。すなわちこの場合、アドレスでいうと、１Ｋから４Ｋまでに存在するデータが読み出されるようにすれば、４Ｋ境界をまたがないで、かつ、最大サイズでのデータ転送が行えることになる。よって、１Ｋから４Ｋまでの３Ｋが、要求転送サイズＡとして、優先度判定回路１０５に供給される。
【０１０１】
時刻ｔ１のとき、バッファー境界判定回路１０３には、累積サイズレジスタ１１１からの情報が供給されるため、０Ｋという情報が供給される。バッファー境界判定回路１０３は、Request SizeとRequest Addressで指定されるデータ転送要求が、バッファメモリ４５のバッファーサイズを超えてしまうか否かを判定するが、この場合、Request Sizeが５Ｋであり、Request Addressが１Ｋであるので、バッファーサイズを超えてしまうと判定し、真という判定結果Ｂを出力する。また要求転送サイズＢとして、この場合、バッファーサイズとして、２Ｋ分のデータを記憶できる状態であるので、２Ｋという情報が出力される。
【０１０２】
時刻ｔ１のとき、転送サイズ判定回路１０４には、最大転送サイズ判定回路１０１（図７）より、４Ｋという情報が供給され、残りサイズレジスタ１１０から、５Ｋという情報が供給される。最大転送サイズ判定回路１０１は、転送サイズが最大転送サイズよりも小さいか否かを判定するが、この場合、転送サイズが５Ｋであり、最大転送サイズが４Ｋであるので、判定結果Ｃとして偽という情報が出力される。偽という情報が出力される場合、要求転送サイズＣとしての情報は出力されない（具体的な数値を示すデータは出力されない）。
【０１０３】
このように、時刻ｔ１のときには、優先度判定回路１０５には、判定結果Ａとして真、判定結果Ｂとして真、判定結果Ｃとして偽という情報が供給される。よって、優先度判定回路１０５は、２以上の真という情報が供給されたため、供給された要求転送サイズのうち、最も小さい値を、最終的な転送要求サイズとして出力する。この場合、優先度判定回路１０には、要求転送サイズＡとして、３Ｋが供給され、要求転送サイズＢとして２Ｋが供給されているため、転送要求サイズとして、２Ｋが設定される。
【０１０４】
時刻ｔ２において、転送要求サイズが２Ｋと設定され、その情報が、ＤＭＡ１０６に供給される。ＤＭＡ１０６は、転送サイズを２Ｋとしたデータ転送を実行するための制御を行う。
【０１０５】
時刻ｔ２において、優先度判定回路１０５からの、この場合、２Ｋという情報は、減算器１０７、加算器１０８、および、加算器１０９に、それぞれ供給される。
【０１０６】
図８と図９を参照するに、減算器１０７には、時刻ｔ２より前の時点である時刻ｔ１のときに残りサイズレジスタ１１０に保持されていた情報と、優先度判定回路１０５からの情報が供給される。この場合、減算器１０７には、残りサイズレジスタ１１０から５Ｋという情報と、優先度判定回路１０５から２Ｋという情報が供給される。減算器１０７は、供給された５Ｋと２Ｋの差分を演算し、その結果を、残りサイズレジスタ１１０に供給する。なお、減算器１０７から出力される値は、絶対値である。
【０１０７】
時刻ｔ２において、減算器１０７からの結果が、残りサイズレジスタ１１０に保持される。よって、この場合、減算器１０７に保持される情報は、３Ｋという情報である。
【０１０８】
加算器１０８には、時刻ｔ２より前の時点である時刻ｔ１のときに累積サイズレジスタ１１１に保持されていた情報と、優先度判定回路１０５からの情報が供給される。この場合、加算器１０８には、累積サイズレジスタ１１１から０Ｋという情報と、優先度判定回路１０５から２Ｋという情報が供給される。加算器１０８は、供給された０Ｋと２Ｋの和を演算し、その結果を、累積サイズレジスタ１１１に供給する。
【０１０９】
時刻ｔ２において、加算器１０８からの結果が、累積サイズレジスタ１１１に保持される。よって、この場合、累積サイズレジスタ１１１に保持される情報は、２Ｋという情報となるが、累積サイズレジスタ１１１は、２Ｋになると（２Ｋ毎に）情報をクリアし、０Ｋにリセットするため、この場合、リセットされて０Ｋという情報が保持される。
【０１１０】
加算器１０９には、時刻ｔ２より前の時点である時刻ｔ１のときにネクストアドレスレジスタ１１２に保持されていた情報と、優先度判定回路１０５からの情報が供給される。この場合、加算器１０９には、ネクストアドレスレジスタ１１２から１Ｋという情報と、優先度判定回路１０５から２Ｋという情報が供給される。加算器１０９は、供給された１Ｋと２Ｋの和を演算し、その結果を、ネクストアドレスレジスタ１１２に供給する。
【０１１１】
時刻ｔ２において、加算器１０９からの結果が、ネクストアドレスレジスタ１１２に保持される。よって、この場合、ネクストアドレスレジスタ１１２に保持される情報は、３Ｋという情報である。
【０１１２】
このように、各レジスタに情報が保持される。
【０１１３】
４Ｋ境界判定回路１０２には、最大転送サイズとして４Ｋ、残りの転送サイズとして３Ｋ、読み出し開始のアドレスとして３Ｋという情報が、それぞれ供給される。よって、この場合、読み出し開始アドレスの３Ｋから残りの転送サイズ３Ｋを読み出すことになり、アドレスでいうと、３Ｋから６Ｋ（＝３Ｋ＋３Ｋ）に存在するデータが転送対象とされていることになる。
【０１１４】
この場合、４Ｋが境界であるので、３Ｋから６Ｋまで読み出すと、４Ｋの境界をまたいだ読み出しとなってしまう。よって、４Ｋの境界をまたぐため、判定結果Ａは、真であると出力される。また、４Ｋ境界をまたがないで、最大のサイズのデータ量が、要求転送サイズＡとして出力される。すなわちこの場合、アドレスでいうと、３Ｋから４Ｋまでに存在するデータが読み出されるようにすれば、４Ｋ境界をまたがないで、かつ最大のサイズでデータ転送が行えることになる。よって、３Ｋから４Ｋまでの１Ｋが、要求転送サイズＡとして、優先度判定回路１０５に供給される。
【０１１５】
時刻ｔ２のとき、バッファー境界判定回路１０３には、累積サイズレジスタ１１１から０Ｋという情報が供給される。バッファー境界判定回路１０３は、この場合、バッファーサイズを超えてしまうと判定し、真という判定結果Ｂを出力する。また要求転送サイズＢとして、この場合、バッファーサイズとして、２Ｋ分のデータを記憶できる状態であるので、２Ｋという情報が出力される。
【０１１６】
時刻ｔ２のとき、転送サイズ判定回路１０４には、最大転送サイズ判定回路１０１（図７）より、４Ｋという情報が供給され、残りサイズレジスタ１１０から、３Ｋという情報が供給される。最大転送サイズ判定回路１０１は、転送サイズが最大転送サイズよりも小さいか否かを判定するが、この場合、転送サイズが３Ｋであり、最大転送サイズが４Ｋであるので、判定結果Ｃとして真という情報が出力される。真という情報が出力される場合、要求転送サイズＣとして、供給された転送サイズの値が設定され、出力される。よってこの場合、３Ｋという情報が、要求転送サイズＣとして出力される。
【０１１７】
このように、時刻ｔ２のときには、優先度判定回路１０５には、判定結果Ａとして真、判定結果Ｂとして真、判定結果Ｃとして真という情報が供給される。よって、優先度判定回路１０５は、２以上の真という情報が供給されたため、供給された要求転送サイズのうち、最も小さい値を、最終的な転送要求サイズとして出力する。この場合、優先度判定回路１０には、要求転送サイズＡとして、１Ｋが供給され、要求転送サイズＢとして２Ｋが供給され、要求転送サイズＣとして、３Ｋが供給されているため、転送要求サイズとして、１Ｋが設定される。
【０１１８】
時刻ｔ３において、転送要求サイズが１Ｋと設定され、その情報が、ＤＭＡ１０６に供給される。ＤＭＡ１０６は、転送サイズを１Ｋとしたデータ転送を実行するための制御を行う。
【０１１９】
時刻ｔ３において、優先度判定回路１０５からの、この場合、１Ｋという情報は、減算器１０７、加算器１０８、および、加算器１０９に、それぞれ供給される。
【０１２０】
図９と図１０を参照するに、減算器１０７には、時刻ｔ３のとき、この場合、時刻ｔ２のときに残りサイズレジスタ１１０に保持されていた３Ｋという情報と、優先度判定回路１０５から１Ｋという情報が供給される。減算器１０７は、供給された３Ｋと１Ｋの差分を演算し、その結果である２Ｋという情報を、残りサイズレジスタ１１０に供給する。よって、この場合、残りサイズレジスタ１１０には、２Ｋという情報が保持される。
【０１２１】
加算器１０８には、時刻ｔ３のとき、この場合、時刻ｔ２のときに累積サイズレジスタ１１１に保持されていた０Ｋという情報と、優先度判定回路１０５から１Ｋという情報が供給される。加算器１０８は、供給された０Ｋと１Ｋの和を演算し、その結果である１Ｋという情報を、累積サイズレジスタ１１１に供給する。よって、この場合、累積サイズレジスタ１１１には、１Ｋという情報が保持される。
【０１２２】
加算器１０９には、時刻ｔ３のとき、この場合、時刻ｔ２のときにネクストアドレスレジスタ１１２に保持されていた３Ｋという情報と、優先度判定回路１０５から１Ｋという情報が供給される。加算器１０９は、供給された３Ｋと１Ｋの和を演算し、その結果である４Ｋという情報を、ネクストアドレスレジスタ１１２に供給する。よって、この場合、ネクストアドレスレジスタ１１２には、４Ｋという情報が保持される。
【０１２３】
このように、各レジスタに情報が保持される。
【０１２４】
４Ｋ境界判定回路１０２には、最大転送サイズとして４Ｋ、残りの転送サイズとして２Ｋ、読み出し開始のアドレスとし４Ｋという情報が、それぞれ供給される。よって、この場合、読み出し開始アドレスの４Ｋから残りの転送サイズ２Ｋを読み出すことになり、アドレスでいうと、４Ｋから６Ｋ（＝４Ｋ＋２Ｋ）に存在するデータが転送対象とされていることになる。
【０１２５】
この場合、４Ｋが境界であるので、４Ｋから６Ｋまで読み出すとしても、４Ｋの境界をまたいだ読み出しとはならない。よって、４Ｋの境界をまたがないため、判定結果Ａは、偽であると出力される。また、４Ｋ境界をまたがないため、この場合、残りの転送要求サイズが要求転送サイズＡとして出力される。すなわちこの場合、アドレスでいうと、４Ｋから６Ｋまでに存在する２Ｋが、要求転送サイズＡとして、優先度判定回路１０５に供給される。
【０１２６】
時刻ｔ３のとき、バッファー境界判定回路１０３には、累積サイズレジスタ１１１から１Ｋという情報が供給される。バッファー境界判定回路１０３は、この場合、バッファーサイズを超えてしまうと判定し、真という判定結果Ｂを出力する。また要求転送サイズＢとして、この場合、バッファーサイズとして、１Ｋ分のデータを記憶できる状態であるので、１Ｋという情報が出力される。
【０１２７】
時刻ｔ３のとき、転送サイズ判定回路１０４には、最大転送サイズ判定回路１０１（図７）より、４Ｋという情報が供給され、残りサイズレジスタ１１０から、２Ｋという情報が供給される。最大転送サイズ判定回路１０１は、転送サイズが最大転送サイズよりも小さいか否かを判定するが、この場合、転送サイズが２Ｋであり、最大転送サイズが４Ｋであるので、判定結果Ｃとして真という情報が出力される。真という情報が出力される場合、要求転送サイズＣとして、供給された転送サイズの値が出力されるので、この場合、２Ｋという情報が出力される。
【０１２８】
このように、時刻ｔ３のときには、優先度判定回路１０５には、判定結果Ａとして偽、判定結果Ｂとして真、判定結果Ｃとして真という情報が供給される。よって、優先度判定回路１０５は、２以上の真という情報が供給されたため、供給された要求転送サイズのうち、最も小さい値を、最終的な転送要求サイズとして出力する。この場合、優先度判定回路１０には、要求転送サイズＡとして、２Ｋが供給され、要求転送サイズＢとして１Ｋが供給され、要求転送サイズＣとして、２Ｋが供給されているため、転送要求サイズとして、１Ｋが設定される。
【０１２９】
時刻ｔ４において、転送要求サイズが１Ｋと設定され、その情報が、ＤＭＡ１０６に供給される。ＤＭＡ１０６は、転送サイズを１Ｋとしたデータ転送を実行するための制御を行う。
【０１３０】
時刻ｔ４において、優先度判定回路１０５からの、この場合、１Ｋという情報は、減算器１０７、加算器１０８、および、加算器１０９に、それぞれ供給される。
【０１３１】
図１０と図１１を参照するに、減算器１０７には、時刻ｔ４のとき、この場合、時刻ｔ３のときに残りサイズレジスタ１１０に保持されていた２Ｋという情報と、優先度判定回路１０５から１Ｋという情報が供給される。減算器１０７は、供給された２Ｋと１Ｋの差分を演算し、その結果である１Ｋという情報を、残りサイズレジスタ１１０に供給する。よって、この場合、残りサイズレジスタ１１０には、１Ｋという情報が保持される。
【０１３２】
加算器１０８には、時刻ｔ４のとき、この場合、時刻ｔ３のときに累積サイズレジスタ１１１に保持されていた１Ｋという情報と、優先度判定回路１０５から１Ｋという情報が供給される。加算器１０８は、供給された１Ｋと１Ｋの和を演算し、その結果である２Ｋという情報を、累積サイズレジスタ１１１に供給する。よって、この場合、累積サイズレジスタ１１１には、２Ｋという情報が保持されることになるが、２Ｋだと０Ｋにリセットされるため、結果的に、累積サイズレジスタ１１１には、０Ｋという情報が保持される。
【０１３３】
加算器１０９には、時刻ｔ４のとき、この場合、時刻ｔ３のときにネクストアドレスレジスタ１１２に保持されていた４Ｋという情報と、優先度判定回路１０５から１Ｋという情報が供給される。加算器１０９は、供給された４Ｋと１Ｋの和を演算し、その結果である５Ｋという情報を、ネクストアドレスレジスタ１１２に供給する。よって、この場合、ネクストアドレスレジスタ１１２には、５Ｋという情報が保持される。
【０１３４】
このように、各レジスタに情報が保持される。
【０１３５】
４Ｋ境界判定回路１０２には、最大転送サイズとして４Ｋ、残りの転送サイズとして１Ｋ、読み出し開始のアドレスとして５Ｋという情報が、それぞれ供給される。よって、この場合、読み出し開始アドレスの５Ｋから残りの転送サイズ１Ｋを読み出すことになり、アドレスでいうと、５Ｋから６Ｋ（＝５Ｋ＋１Ｋ）に存在するデータが転送対象とされていることになる。
【０１３６】
この場合、４Ｋが境界であるので、５Ｋから６Ｋまで読み出すとしても、４Ｋの境界をまたいだ読み出しとはならない。よって、４Ｋの境界をまたがないため、判定結果Ａは、偽であると出力される。また、４Ｋ境界をまたがないため、この場合、残りの転送要求サイズが要求転送サイズＡとして出力される。すなわちこの場合、アドレスでいうと、５Ｋから６Ｋまでに存在する１Ｋが、要求転送サイズＡとして、優先度判定回路１０５に供給される。
【０１３７】
時刻ｔ４のとき、バッファー境界判定回路１０３には、累積サイズレジスタ１１１から０Ｋという情報が供給される。バッファー境界判定回路１０３は、この場合、バッファーサイズを超えない判定し、偽という判定結果Ｂを出力する。また要求転送サイズＢとして、この場合、バッファーサイズとして、２Ｋ分のデータを記憶できる状態であるので、２Ｋという情報が出力される。
【０１３８】
時刻ｔ４のとき、転送サイズ判定回路１０４には、最大転送サイズ判定回路１０１（図７）より、４Ｋという情報が供給され、残りサイズレジスタ１１０から、１Ｋという情報が供給される。最大転送サイズ判定回路１０１は、転送サイズが最大転送サイズよりも小さいか否かを判定するが、この場合、転送サイズが１Ｋであり、最大転送サイズが４Ｋであるので、判定結果Ｃとして真という情報が出力される。真という情報が出力される場合、要求転送サイズＣとして、供給された転送サイズの値が出力されるので、この場合、１Ｋという情報が出力される。
【０１３９】
このように、時刻ｔ４のときには、優先度判定回路１０５には、判定結果Ａとして偽、判定結果Ｂとして偽、判定結果Ｃとして真という情報が供給される。よって、優先度判定回路１０５は、２以上の真という情報は供給されていないため、供給された要求転送サイズのうち、転送サイズ判定回路１０４からの要求転送サイズＣを、最終的な転送要求サイズとして出力する。よってこの場合、転送要求サイズとして、１Ｋが設定される。
【０１４０】
時刻ｔ５において、転送要求サイズが１Ｋと設定され、その情報が、ＤＭＡ１０６に供給される。ＤＭＡ１０６は、転送サイズを１Ｋとしたデータ転送を実行するための制御を行う。
【０１４１】
時刻ｔ５において、優先度判定回路１０５からの、この場合、１Ｋという情報は、減算器１０７、加算器１０８、および、加算器１０９に、それぞれ供給される。
【０１４２】
図１１と図１２を参照するに、減算器１０７には、時刻ｔ５のとき、この場合、時刻ｔ４のときに残りサイズレジスタ１１０に保持されていた１Ｋという情報と、優先度判定回路１０５から１Ｋという情報が供給される。減算器１０７は、供給された１Ｋと１Ｋの差分を演算し、その結果である０Ｋという情報を、残りサイズレジスタ１１０に供給する。よって、この場合、残りサイズレジスタ１１０には、０Ｋという情報が保持される。
【０１４３】
残りサイズレジスタ１１０に保持されている情報が、０Ｋとなったということは、転送すべきデータの残りはないことを示している。よって、残りサイズレジスタ１１０に保持されている情報が、０Ｋになった時点で、処理が終了されるようにしても良い。ここでは、説明のため、さらに、処理が続けられるとして、説明を続ける。
【０１４４】
加算器１０８には、時刻ｔ５のとき、この場合、時刻ｔ４のときに累積サイズレジスタ１１１に保持されていた０Ｋという情報と、優先度判定回路１０５から１Ｋという情報が供給される。加算器１０８は、供給された０Ｋと１Ｋの和を演算し、その結果である１Ｋという情報を、累積サイズレジスタ１１１に供給する。よって、この場合、累積サイズレジスタ１１１には、１Ｋという情報が保持される。
【０１４５】
加算器１０９には、時刻ｔ５のとき、この場合、時刻ｔ５のときにネクストアドレスレジスタ１１２に保持されていた５Ｋという情報と、優先度判定回路１０５から１Ｋという情報が供給される。加算器１０９は、供給された５Ｋと１Ｋの和を演算し、その結果である６Ｋという情報を、ネクストアドレスレジスタ１１２に供給する。よって、この場合、ネクストアドレスレジスタ１１２には、６Ｋという情報が保持される。
【０１４６】
このように、各レジスタに情報が保持される。
【０１４７】
４Ｋ境界判定回路１０２には、最大転送サイズとして４Ｋ、残りの転送サイズとして０Ｋ、読み出し開始のアドレスとし６Ｋという情報が、それぞれ供給される。よって、この場合、読み出し開始アドレスの６Ｋから残りの転送サイズ０Ｋを読み出すことになり、アドレスでいうと、６Ｋから６Ｋに存在するデータが転送対象（すなわち、０Ｋ）とされていることになる。
【０１４８】
この場合、４Ｋが境界であるので、６Ｋから６Ｋまで読み出すとしても、４Ｋの境界をまたがないため、判定結果Ａは、偽であると出力される。また、４Ｋ境界をまたがないため、この場合、残りの転送要求サイズが要求転送サイズＡとして出力されるので、０Ｋが優先度判定回路１０５に供給される。
【０１４９】
時刻ｔ５のとき、バッファー境界判定回路１０３には、累積サイズレジスタ１１１から１Ｋという情報が供給される。バッファー境界判定回路１０３は、この場合、バッファーサイズを超えないと判定し、偽という判定結果Ｂを出力する。また要求転送サイズＢとして、この場合、バッファーサイズとして、１Ｋ分のデータを記憶できる状態であるので、１Ｋという情報が出力される。
【０１５０】
時刻ｔ５のとき、転送サイズ判定回路１０４には、最大転送サイズ判定回路１０１（図７）より、４Ｋという情報が供給され、残りサイズレジスタ１１０から、０Ｋという情報が供給される。最大転送サイズ判定回路１０１は、転送サイズが最大転送サイズよりも小さいか否かを判定するが、この場合、転送サイズが０Ｋであり、最大転送サイズが４Ｋであるので、判定結果Ｃとして真という情報が出力される。真という情報が出力される場合、要求転送サイズＣとして、供給された転送サイズの値が出力されるので、この場合、０Ｋという情報が出力される。
【０１５１】
このように、時刻ｔ５のときには、優先度判定回路１０５には、判定結果Ａとして偽、判定結果Ｂとして偽、判定結果Ｃとして真という情報が供給される。よって、優先度判定回路１０５は、２以上の真という情報は供給されていないため、供給された要求転送サイズのうち、要求転送サイズＣを、最終的な転送要求サイズとして出力する。よってこの場合、転送要求サイズとして、０Ｋが設定される。
【０１５２】
転送要求サイズが０Ｋに設定されたことにより、転送すべきデータのは、全て転送したことになるため、データ転送に関わる処理は終了される。
【０１５３】
このように、本実施の形態においては、ＤＭＡコントローラ４４（図２）側で、データ転送時における制限を考慮しデータ転送が行われる。本実施の形態においては、このように、データ転送が行われるため以下のような効果がある。
【０１５４】
PCI Expressなどのシリアル・バスにおいて、バスの転送効率を上げるにはなるべく大きなペイロードサイズを使用した方が良く、なるべく大きなペイロードサイズを使用できるように、データ転送の処理が実行される毎に、最適なペイロードサイズが選択されるようにすることができ、転送効率を向上させることができる。
【０１５５】
また、ホストシステム２２側で、４Ｋバイトの境界や、転送バッファーの境界を考慮する必要がなくなる。また、ホストシステム２２のメモリ確保の条件の範囲内で、ハードウェアの制約に縛られることなく転送を行うことができるようになる。
【０１５６】
Request AddressとRequest Sizeは、エントリまたはリンクリストに記述でき、ホストシステム２２側にて、上記制限１乃至４を考慮することなく、設定したい転送サイズでリンクリストを生成できるようになる。
【０１５７】
例えば、動画をストリーミングで書き込むことを想定すると、本発明を適用したストレージシステム２１をホストシステム２２に接続した場合、バッファーサイズに満たないデータがホストシステム２２で用意されており、後続のデータが用意できるまで、データをハンドリングするホストシステム２２内のホストＣＰＵ６１に余力があるときには、データがバッファーサイズを満たすのを待たずに、連続的にストレージに対して書き込みを行えるなど柔軟な処理を行うことが可能となる。
【０１５８】
また書き込みデータ量の平滑化を行いやすく、一時的に大量のデータ転送処理を行わなければいけない状態を回避することができる。結果として最大処理能力が比較的低いＣＰＵを使用できるなどの利点がある。動画を記録するようなホストシステム（カムコーダなど）では非常に有効な手段となると考えられる。このようなことは、読み出しについても同様である。
【０１５９】
バッファーサイズに満たない端数データがあっても、それも含めて本ストレージシステム２１に、Request AddressやRequest Sizeを通知すれば、ストレージシステム２１側で最適サイズをハンドリングするため、ホストシステム２２側の処理が少なくてすむ利点もある。換言すれば、ストレージシステム２１に本発明がなければ、ストレージシステム２１のハードウェア構成を意識した転送を行う必要があるため、ホストシステム２２側でストレージシステム２１に合わせた転送を分割して制御する必要が生じてしまう。
【０１６０】
分割制御は、リンクリストに記述されるが、本発明を適用することで、リンクリストのエントリ数を少なくすることが可能となる。すなわち、ホストシステム２２内でリンクリストを格納するためのメモリ領域を節約することができる。
【０１６１】
パケットベースの通信の場合、正味のデータの他にパケット情報、パリティなどを付加する必要がある。このパケット情報のデータサイズは、正味データの大きさには依存しないため、データ転送を効率良く行うには、正味のデータをなるべく大きくすればよいことになる。逆に正味データを細かく分割して送受信を行うとパケット情報も、細かく分割するのに比例して大きくなり効率が低下してします（パケットのオーバーヘッド）。
【０１６２】
しかしながら、本発明は、上記したように処理を行うため、データを分割して転送するのが避けられない場合であっても、なるべく大きなデータ量で通信を行うことが可能となり、いかに効率良くデータを分割して転送するかという点を解決することができる。
【０１６３】
このように、本発明を適用することで、さまざまな効果がある。
【０１６４】
［記録媒体について］
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
【０１６５】
図１３は、上述した一連の処理をプログラムにより実行するパーソナルコンピュータのハードウェアの構成の例を示すブロック図である。
【０１６６】
コンピュータにおいて、ＣＰＵ（Central Processing Unit）２０１、ROM（Read Only Memory）２０２、RAM（Random Access Memory）２０３は、バス２０４により相互に接続されている。
【０１６７】
バス２０４には、さらに、入出力インタフェース２０５が接続されている。入出力インタフェース２０５には、キーボード、マウス、マイクロホンなどよりなる入力部２０６、ディスプレイ、スピーカなどよりなる出力部２０７、ハードディスクや不揮発性のメモリなどよりなる記憶部２０８、ネットワークインタフェースなどよりなる通信部２０９、磁気ディスク、光ディスク、光磁気ディスク、あるいは半導体メモリなどのリムーバブルメディア２１１を駆動するドライブ２１０が接続されている。
【０１６８】
以上のように構成されるコンピュータでは、ＣＰＵ２０１が、例えば、記憶部２０８に記憶されているプログラムを、入出力インタフェース２０５及びバス２０４を介して、RAM２０３にロードして実行することにより、上述した一連の処理が行われる。
【０１６９】
コンピュータ（CPU２０１）が実行するプログラムは、例えば、磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)等）、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア２１１に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
【０１７０】
そして、プログラムは、リムーバブルメディア２１１をドライブ２１０に装着することにより、入出力インタフェース２０５を介して、記憶部２０８にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部２０９で受信し、記憶部２０８にインストールすることができる。その他、プログラムは、ROM２０２や記憶部２０８に、あらかじめインストールしておくことができる。
【０１７１】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０１７２】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【０１７３】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０１７４】
【図１】論理アドレス空間と物理アドレス空間について説明するための図である。
【図２】本発明を適用したホストシステムとストレージシステムの一実施の形態の構成を示す図である。
【図３】システムの動作について説明するフローチャートである。
【図４】コマンドについて説明するための図である。
【図５】転送能力について説明するための図である。
【図６】４Ｋアドレス境界について説明するための図である。
【図７】本発明を適用したＤＭＡコントローラの一実施の形態の構成を示す図である。
【図８】ＤＭＡコントローラの動作について説明するための図である。
【図９】ＤＭＡコントローラの動作について説明するための図である。
【図１０】ＤＭＡコントローラの動作について説明するための図である。
【図１１】ＤＭＡコントローラの動作について説明するための図である。
【図１２】ＤＭＡコントローラの動作について説明するための図である。
【図１３】記録媒体について説明するための図である。
【符号の説明】
【０１７５】
２１  ストレージシステム，  ２２  ホストシステム，  ２３  ストレージＩ／Ｆ，  ４１  コントローラ，  ４３  レジスタ，  ４４  ＤＭＡコントローラ，  ４５  バッファメモリ，  ４７  ストレージメモリコントローラ，  ４８  ストレージメモリ，  ６１  ホストＣＰＵ，  ６２  ホストメモリ，  １０１    最大転送サイズ判定回路，  １０２  ４Ｋ境界判定回路，  １０３  バッファー境界判定回路，  １０４  転送サイズ判定回路，  １０５  優先度判定回路，  １０６  ＤＭＡ，  １０７  減算器，  １０８  加算器，  １０９  加算器，  １１０  残りサイズレジスタ，  １１１  累積サイズレジスタ，  １１２  ネクストアドレスレジスタ
【図１】
2008269282.tif 000003
【図２】
2008269282.tif 000004
【図３】
2008269282.tif 000005
【図４】
2008269282.tif 000006
【図５】
2008269282.tif 000007
【図６】
2008269282.tif 000008
【図７】
2008269282.tif 000009
【図８】
2008269282.tif 000010
【図９】
2008269282.tif 000011
【図１０】
2008269282.tif 000012
【図１１】
2008269282.tif 000013
【図１２】
2008269282.tif 000014
【図１３】
2008269282.tif 000015