(57)【要約】【課題】ＤＭＡ回路およびデータ転送方法に関し，効率的で効果の高いシステム検証の実行を可能とする技術を提供する。【解決手段】プロトコル／ＤＭＡ制御回路１０のセンドエンジン１２において，ディスクリプタ制御回路２０は，ディスクリプタを取得し，その情報を各回路に通知する。ダミー／パディング生成回路２５は，ディスクリプタの指示に従ってデータパターンを生成する。ライト制御回路２４は，ディスクリプタの指示に従って，生成されたデータパターンをダミーの転送データとし，データ転送を行う。また，ライト制御回路２４は，ディスクリプタの指示に従って，生成されたデータパターンをパディングデータとして転送データに挿入してデータ転送を行う。【選択図】図１
2007323467.tif 000002
【特許請求の範囲】
【請求項１】
データ転送の指示情報であるディスクリプタに従って，データ転送を行うＤＭＡ回路であって，
前記ディスクリプタを取得する手段と，
前記ＤＭＡ回路の検証のためのデータパターンを生成する手段と，
データ転送を行う手段とを備え，
前記データパターンを生成する手段は，前記取得されたディスクリプタでデータパターンの生成が指示されている場合に，その指示に従って前記データパターンを生成し，
前記データ転送を行う手段は，前記取得されたディスクリプタに従って，前記生成されたデータパターンをダミーの転送データとする
ことを特徴とするＤＭＡ回路。
【請求項２】
データ転送の指示情報であるディスクリプタに従って，データ転送を行うＤＭＡ回路であって，
前記ディスクリプタを取得する手段と，
前記ＤＭＡ回路の検証のためのデータパターンを生成する手段と，
データ転送を行う手段とを備え，
前記データパターンを生成する手段は，前記取得されたディスクリプタ内に設定されている情報に従ってパディングに用いる前記データパターンを生成し，
前記データ転送を行う手段は，前記取得されたディスクリプタの指示により，転送データに前記生成されたデータパターンをパディングデータとして挿入する
ことを特徴とするＤＭＡ回路。
【請求項３】
データ転送の指示情報であるディスクリプタに従って，データ転送を行うＤＭＡ回路であって，
前記ディスクリプタを取得する手段と，
前記ＤＭＡ回路の検証のためのデータパターンを生成する手段と，
データ転送を行う手段とを備え，
前記ディスクリプタは，少なくともダミーモードおよびトグルモードを含むモード情報を指定する領域と，データパターン生成用の第１のパターンおよび第２のパターンを指定する領域とを有し，
前記データパターンを生成する手段は，前記取得されたディスクリプタにおいてダミーモードが設定されており，かつトグルモードが設定されている場合に，前記第１のパターンと第２のパターンとを交互に繰り返すデータパターンを生成し，ダミーモードが設定されており，かつトグルモードが設定されていない場合に，前記第１のパターンだけを含むデータパターンを生成し，
前記データ転送を行う手段は，前記取得されたディスクリプタにおいてダミーモードが設定されている場合に，前記生成されたデータパターンをダミーの転送データとする
ことを特徴とするＤＭＡ回路。
【請求項４】
データ転送の指示情報であるディスクリプタに従ってデータ転送を行うＤＭＡ回路によるデータ転送方法であって，
前記ＤＭＡ回路が，
前記ディスクリプタを取得する過程と，
前記取得されたディスクリプタの指示により，前記ＤＭＡ回路の検証のためのデータパターンを生成する過程と，
前記取得されたディスクリプタの指示により，前記生成されたデータパターンをダミーの転送データとし，データ転送を行う過程とを有する
ことを特徴とするデータ転送方法。
【請求項５】
データ転送の指示情報であるディスクリプタに従ってデータ転送を行うＤＭＡ回路によるデータ転送方法であって，
前記ＤＭＡ回路が，
前記ディスクリプタを取得する過程と，
前記取得されたディスクリプタ内に設定されている情報に従ってパディングに用いる前記ＤＭＡ回路の検証のためのデータパターンを生成する過程と，
前記取得されたディスクリプタの指示により，転送データに前記生成されたデータパターンをパディングデータとして挿入し，データ転送を行う過程とを有する
ことを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，ＬＳＩ内部で検証に適したデータパターンを生成することにより，効率的で効果の高いシステム検証の実行を可能とするＤＭＡ回路およびデータ転送方法に関するものである。
【背景技術】
【０００２】
近年，様々なデータが電子化されコンピュータ上で扱われるようになるに従い，コンピュータとは独立して大量のデータを効率よく格納することができるストレージサーバが重要性を増してきている。ストレージサーバは，運用中に業務を停止させないことが必須であり，高度な品質を持つことが重要となるため，開発においては特に十分な検証を行う必要がある。しかしながら，ストレージサーバの巨大化が進むにつれ，開発期間に占める検証期間の割合が増加する傾向にあり，開発サイクルを短縮するためには検証期間を短縮する必要がある。
【０００３】
図４は，ストレージシステムの例を示す図である。図４に示すストレージシステムは，ストレージサーバ１００と，ホストコンピュータ２００とから構成される。ストレージサーバ１００の例としては，例えばＲＡＩＤ装置などが挙げられる。ＲＡＩＤ（Redundant Arrays of Independent(Inexpensive) Disks）は，複数台のＨＤＤ（Hard Disk Drive ）を組み合わせることにより，１台のＨＤＤに比べて高速，大容量，高信頼性に優れたディスクシステムを構築する技術である。例えば，データとパリティ情報を記録する際に複数のディスクにストライピング（複数ドライブからの分散書き込み／読み出し）を行なうことで信頼性と高速化を行なうＲＡＩＤ５や，ミラーリングを行うＲＡＩＤ１などが知られている。さらに，データに対してチェックコードを付加することで，さらなる高信頼性化を図っている。
【０００４】
ストレージサーバ１００は，チャネルアダプタ（ＣＡ：Channel Adapter ）１０１，キャッシュ制御部（ＣＭ：Central Module；以下，ＣＭともいう）１０２，キャッシュメモリ１０３，デバイスアダプタ（ＤＡ：Device Adapter）１０４，スイッチ１０５，ドライブモジュール（ＤＭ：Drive Module）１０６を備える。
【０００５】
チャネルアダプタ１０１は，ホストコンピュータ２００とのＩＯを制御するアダプタである。ＦＣ（ファイバチャネル），ｉＳＣＳＩ等の各種インタフェースを制御し，内部バスへのデータ転送，内部バスデータの各種ＩＯへの変換などを行う。また，ホストコンピュータ２００から転送されるユーザデータに，ディスクフォーマットにあわせたデータ保護のための冗長ビット（ＣＲＣやＢＩＤ）を付加し，キャッシュ制御部１０２を介してディスクに書き込む。また，ディスクから読み出されたデータをチェックし，データ保護用の冗長ビットを外してホストコンピュータ２００に転送する。
【０００６】
チャネルアダプタ１０１には，ストレージ装置特有のデータ保護ビットの付加，データ保護ビットのチェック／取り外しなどを効率よく行うためのデータストレージシステム専用ＤＭＡが搭載されている。
【０００７】
キャッシュ制御部１０２は，チャネルアダプタ１０１，キャッシュメモリ１０３，デバイスアダプタ１０４間のデータ転送等の制御を行う。デバイスアダプタ１０４は，ディスクアレイモジュールの１つであり，複数のドライブモジュール１０６を接続し，制御する。ドライブモジュール１０６は，磁気ディスクシステム用にパッケージされたハードディスクドライブである。
【０００８】
図５は，チャネルアダプタの例を示す図である。図５に示すチャネルアダプタ１０１の内部構成例は，光ファイバチャネルによりホストコンピュータと接続されるチャネルアダプタ１０１の内部構成例である。
【０００９】
チャネルアダプタ１０１は，ファームウェアが搭載されるＭＰＵ１１０，メモリ１１１，ＭＰＵ１１０と外部インタフェースを接続するチップセット１１２，光信号を電気信号にしてシリアル−パラレル変換を行なうＳＥＲＤＥＳ（Serialization/deserialization ）１１３，ファイバチャネルプロトコル制御とＭＰＵ１１０からの指示を受けてデータ転送を行なうＤＭＡ制御とを行うプロトコル／ＤＭＡ制御回路１１４を備える。図５のチャネルアダプタ１０１では，特に，ファイバチャネルプロトコル制御とＤＭＡ制御の両方を含む専用ＬＳＩ（プロトコル／ＤＭＡ制御回路１１４）を使用している。ファイバチャネルプロトコル制御とＤＭＡ制御とがそれぞれ別のＬＳＩで実現される場合もある。
【００１０】
ＤＭＡ（Direct Memory Access）は，ＭＰＵを介さずに装置とＲＡＭ間で直接データ転送を行う方式である。ここでは，専用ＬＳＩに，サーチ（リードＤＭＡ），データチェック（リードＤＭＡ），データチェックコード付加（ライトＤＭＡ）といったストレージシステムに特化した機能を付加したＤＭＡが搭載されている。ＤＭＡでは，ＭＰＵ命令によってハードウェア的にデータが転送される。
【００１１】
図６は，プロトコル／ＤＭＡ制御回路の構成例を示す図である。プロトコル／ＤＭＡ制御回路１１４は，プロトコル制御回路１２０，センドエンジン（Send Engine ）１２１，ホストインタフェース１２２，ＰＣＩインタフェース１２３，ＣＭインタフェース１２４を備える。センドエンジン１２１は，ディスクリプタ制御回路１３０，ホストデータ制御回路１３１，ＢＣＣ生成回路１３２，ＦＣＣ生成回路１３３，ライト制御回路１３４を備える。
【００１２】
プロトコル／ＤＭＡ制御回路１１４において，プロトコル制御回路１２０は，ホストインタフェース１２２を介してホストデータを受け取り，プロトコル制御を行う。センドエンジン１２１は，データライト用のＤＭＡエンジン（ホストコンピュータ２００からキャッシュメモリ１０３へのライトＤＭＡのためのＤＭＡエンジン）である。センドエンジン１２１は，ＰＣＩインタフェース１２３を介してＭＰＵ１１０からディスクリプタを受け取り，そのディスクリプタの情報に従って，ＣＭインタフェース１２４を介してデータをキャッシュ制御部（ＣＭ）１０２に転送する。
【００１３】
センドエンジン１２１において，ディスクリプタ制御回路１３０は，ＰＣＩインタフェース１２３を介して，ＭＰＵ１１０からディスクリプタを取得し，各回路に対してディスクリプタの情報を通知する。ホストデータ制御回路１３１は，ディスクリプタの情報に従って，ホストデータの入力制御を行う。ＢＣＣ生成回路１３２は，ディスクリプタの情報に従って，ＢＣＣ（Block Check Code）を生成する。ＦＣＣ生成回路１３３は，ディスクリプタの情報に従って，ＦＣＣ（Field Check Code）を生成する。ライト制御回路１３４は，ディスクリプタの情報に従って，ＣＭへのデータの転送制御を行う。
【００１４】
ディスクリプタについて説明する。ディスクリプタは，ＭＰＵからＤＭＡ制御回路に対する命令である。ＭＰＵがメモリ上にディスクリプタを用意した後，ＤＭＡ制御回路が自身でメモリからディスクリプタを読み出して参照する方法が広く用いられている。ＤＭＡ制御回路に対する命令とは，具体的にはＤＭＡがアクセスするリードアドレス／ライトアドレス，データ転送長，動作モード（例：データ転送終了後にＭＰＵに通知するか，データチェックを行うか，データコンペアを行うか等）などである。ディスクリプタは，ある一定のフォーマットを持った特定サイズのデータとなっている。
【００１５】
図７は，ディスクリプタの例を示す図である。図７に示すディスクリプタは，データライト用のディスクリプタ１４０の例である。ディスクリプタ１４０は，メモリ１４１に格納され，Ｍｏｄｅ，ＤＬ，ＣＭＡ，ＢＢＩＤ，ＦＢＩＤの情報を持つ。Ｍｏｄｅにおいて，ｂｉｔ０にはデータ転送終了後のＭＰＵへの通知の有無が示され，ｂｉｔ１にはＢＣＣの生成の有無が示され，ｂｉｔ２にはＦＣＣの生成の有無が示される。ＤＬには，データ転送長が指定される。ＣＭＡには，転送先のアドレスが指定される。ＢＢＩＤには，ＢＣＣ−ＢＩＤが設定される。ＦＢＩＤには，ＦＣＣ−ＢＩＤが設定される。
【００１６】
ＭＰＵは，ＤＭＡ制御回路への処理命令をディスクリプタ１４０に記載し，メモリ１４１に書き込む（ディスクリプタの構築）。処理命令が複数に及ぶ場合には，複数のディスクリプタを連続したメモリ領域に書き込む。ＭＰＵは，構築したディスクリプタ１４０のアドレスポインタをＤＭＡ制御回路に通知する。ＤＭＡ制御回路を搭載するＬＳＩは，自らメモリ１４１上のディスクリプタ１４０を読み出し，処理命令（データ転送）を実行する。ディスクリプタ１４０が残っていれば，次のディスクリプタ１４０を読み出し，処理（データ転送）を継続する。
【００１７】
図８は，ディスクリプタの概念を示す図である。ここでは，ディスクリプタ１４０は，メモリ１４１のディスクリプタエリア（Descriptor area ）に，ＤＭＡエンジンごとに格納される。例えば，図８において，DMA2 Descriptor がセンドエンジン用のディスクリプタ格納領域とし，そこの連続領域にディスクリプタ１４０（図８では，Descriptor#0からDescriptor#4）が格納されている。ＤＭＡエンジン搭載ＬＳＩ１４２は，ＭＰＵから通知されたディスクリプタのアドレスポインタをもとに，ディスクリプタ１４０を読み出し，その指示に従ってデータ転送を実行する。
【００１８】
なお，図８において，ＤＭＡ＿ＢＡＳＥはＤＭＡのアクセス領域（メモリ１４１のAccess area ）のベースアドレスを示し，ＤＳＣ＿ＢＡＳＥはディスクリプタエリアのベースアドレスを示す。また，ＤＭＡ２＿ＴＯＰは実行予約中のディスクリプタポインタ（ＴＯＰポインタ）を示し，ＤＭＡ２＿ＢＴＭは処理中のディスクリプタポインタ（ＢＴＭポインタ）を示す。読み出したディスクリプタ１４０の指示によるデータ転送を終了するたびに，次に読み出すディスクリプタ１４０の位置にＢＴＭポインタを変更し，ＢＴＭポインタがＴＯＰポインタと同じになったところで，一連のＤＭＡデータ転送が終了となる。
【００１９】
データチェックコードについて説明する。一般的なデータチェックコードとして，ＣＲＣ（Cyclic Redundancy Check ）とＢＩＤ（BlockID ）からなる冗長ビットをデータの後ろに付加してデータと共に送付するＢＣＣ（Block Check Code）やＦＣＣ（Field Check Code）が知られている。ＣＲＣは，ある管理ブロック単位のデータから生成多項式による演算を行い生成する。ＢＩＤは例えばデータの位置を示す情報やファームウェアが管理するタグである。
【００２０】
図９は，ＢＣＣとＦＣＣの概念を示す図である。図９に示すように，５２０バイト中の最後の８バイトには，常にＢＣＣ（図中斜線部分）が書き込まれる。また，６４バイト中の最後の８バイトには，ＦＣＣ（図中網掛部分）が書き込まれることがある。
【００２１】
ディスクのフォーマットの一例として，固定長の論理ブロック単位でディスクを管理する方法がある。例えば，５１２バイトのデータにこのデータから生成したＣＲＣ（ＢＣＣ−ＣＲＣ）とデータの位置情報を示すＢＩＤ（ＢＣＣ−ＢＩＤ）の計８バイトを付加し，５２０バイト単位でデータの管理を行う。このブロック単位，もしくはブロックの先頭アドレスをＬＢＡ（Logical Block Address ）という。
【００２２】
ディスクのフォーマットの一例として，カウント（Count ）／キー（Key ）／データ（Data）という３種のデータフォーマット（フィールド：Field ）一組をレコード（Record）とし，これを１つの単位としてデータの管理を行う手法がある。主にグローバルサーバ（メインフレーム）で一般的である。カウントは固定長，キーとデータは可変長で，カウント部にはキー長とデータ長の情報が含まれる。フィールドごとにフィールド中のデータから生成したＣＲＣ（ＦＣＣ−ＣＲＣ）とデータの位置情報や管理情報を含むＢＩＤ（ＦＣＣ−ＢＩＤ）の計８バイトが保護情報として書き込まれる。図９において，Pad はパディングデータを示す。パディングデータは通常０である。
【００２３】
なお，ＤＭＡを備えた装置の検証を行う先行技術が記載された文献として，例えば特許文献１などがある。特許文献１には，回路装置のＤＭＡ機能を試験する技術が記載されている。特許文献１では，あるメモリ領域から別のメモリ領域にデータを移す機能（折り返し機能）を持つＤＭＡ回路についての試験を行っている。これは，メモリ試験を実施することを目的とした技術であり，下記の本発明の課題を解決することはできない。
【特許文献１】特開平７−３１９７２８号公報
【発明の開示】
【発明が解決しようとする課題】
【００２４】
ＤＭＡを用いるシステムの負荷試験を行う際に，ＬＳＩが低速ＩＯと高速ＩＯで接続されている場合，低速ＩＯから高速ＩＯへのデータ転送では高速ＩＯ側に最大負荷をかけることが難しく，性能検証が困難である。具体的には，ホストインタフェースに比べてストレージサーバの内部バスが高速である場合や，既存回路やＩＰを利用することで既存回路部の動作周波数と新規設計回路部の動作周波数に差が発生する場合などが，これに該当する。
【００２５】
図１０は，ストレージシステムの一部の例を示す図である。図１０のストレージシステムでは，ストレージサーバ１００とホストコンピュータ２００とがホストインタフェース１６０で接続されている。ストレージサーバ１００は，ホストアダプタ１５０，制御部１５１を備える。ここでは，ホストアダプタ１５０は図４のチャネルアダプタ１０１に該当し，制御部１５１は図４のキャッシュ制御部１０２に該当する。ホストアダプタ１５０では，ＦＰＧＡ（Field Programmable Gate Array ）１５２によってＤＭＡエンジンなどの回路が実現されている。
【００２６】
図１０では，グローバルサーバ（メインフレーム）とストレージサーバとの接続を想定しており，ホストコンピュータ２００−ホストアダプタ１５０間を接続するホストインタフェース１６０は，最大伝送距離１０キロメートルと，長距離区間の転送では有効であるが，最大転送速度は１７ＭＢ／ｓと，やや低速なインタフェースである。これに対してホストアダプタ１５０−制御部１５１間の内部バス１６１は，他の高速ホストインタフェースに追従するため，その最大転送速度は５３３ＭＢ／ｓとなっている。
【００２７】
ホストインタフェースの動作周波数は２０ＭＨｚであり，内部バスの動作周波数は６６ＭＨｚである。また，専用ＬＳＩの内部動作周波数もホストインタフェース１６０と内部バス１６１に合わせ，ホストインタフェース制御回路１５３は２０ＭＨｚ，内部バス制御回路１５４は６６ＭＨｚ，ＦＰＧＡ１５２は８０ＭＨｚとなっている。
【００２８】
図１０のストレージシステムにおいて，ホストコンピュータ２００から最大転送速度（１７ＭＢ／ｓ）でストレージサーバ１００にアクセスした場合，ホストコンピュータ２００−ホストアダプタ１５０間の負荷検証は十分に測定できる。しかし，ホストアダプタ１５０−制御部１５１間には負荷を十分にかけることができず，ＦＰＧＡ１５２の実機検証が不足してしまう。内部バス１６１を動作率１００％でトグルすることが難しいため，最大消費電力の測定，装置内部各モジュールの接続性，データ負荷をかけた場合のデータ保全性などを十分に検証することができず，品質の低下につながることとなる。
【００２９】
本発明は，上記の問題点の解決を図り，高速ＩＯの負荷試験やシステムのデバッグを容易にする手段を提供することにより，ＬＳＩの品質向上を実現することを目的とする。
【課題を解決するための手段】
【００３０】
本発明は，上記の課題を解決するため，ライト動作を行うセンドＤＭＡ回路に任意のダミーデータパターンを生成する手段を持たせ，高負荷での検証に適したデータパターンを回路内で意図的に生成することを特徴とする。これにより，高速ＩＯの負荷試験を容易に行うことができるようになり，ＬＳＩの品質向上を実現することが可能となる。
【００３１】
また，本発明は，転送データにおいて，データとデータ保証ビットの間に挿入するパディングデータは通常０であるが，このパディングデータに任意のデータパターンを挿入することを特徴とする。これにより，転送データに手を加えずにデータパターンを変化させることができるため，様々な検証データパターンの生成が容易となり，システムデバッグが容易となる。
【００３２】
具体的には，本発明は，データ転送の指示情報であるディスクリプタに従って，データ転送を行うＤＭＡ回路であって，ディスクリプタを取得する手段と，ＤＭＡ回路の検証のためのデータパターンを生成する手段と，データ転送を行う手段とを備え，データパターンを生成する手段は，取得されたディスクリプタでデータパターンの生成が指示されている場合に，その指示に従ってデータパターンを生成し，データ転送を行う手段は，取得されたディスクリプタに従って，生成されたデータパターンをダミーの転送データとすることを特徴とする。
【００３３】
また，本発明は，データ転送の指示情報であるディスクリプタに従って，データ転送を行うＤＭＡ回路であって，ディスクリプタを取得する手段と，ＤＭＡ回路の検証のためのデータパターンを生成する手段と，データ転送を行う手段とを備え，データパターンを生成する手段は，取得されたディスクリプタ内に設定されている情報に従ってパディングに用いるデータパターンを生成し，データ転送を行う手段は，取得されたディスクリプタの指示により，転送データに生成されたデータパターンをパディングデータとして挿入することを特徴とする。
【００３４】
また，本発明は，データ転送の指示情報であるディスクリプタに従って，データ転送を行うＤＭＡ回路であって，ディスクリプタを取得する手段と，ＤＭＡ回路の検証のためのデータパターンを生成する手段と，データ転送を行う手段とを備え，ディスクリプタは，少なくともダミーモードおよびトグルモードを含むモード情報を指定する領域と，データパターン生成用の第１のパターンおよび第２のパターンを指定する領域とを有し，データパターンを生成する手段は，取得されたディスクリプタにおいてダミーモードが設定されており，かつトグルモードが設定されている場合に，第１のパターンと第２のパターンとを交互に繰り返すデータパターンを生成し，ダミーモードが設定されており，かつトグルモードが設定されていない場合に，第１のパターンだけを含むデータパターンを生成し，データ転送を行う手段は，取得されたディスクリプタにおいてダミーモードが設定されている場合に，生成されたデータパターンをダミーの転送データとすることを特徴とする。
【発明の効果】
【００３５】
本発明によって，ＬＳＩのインタフェースが低速ＩＯと高速ＩＯで接続されている場合において，低速ＩＯの最大性能に縛られることなく高速ＩＯに負荷をかけることが可能となり，十分な性能検証を行えるようになる。また，データパターンを任意に設定できることから，問題点の調査に対しても有効となる。以上により，十分な負荷試験を行うことが可能となり，ユニットの品質向上を実現することが可能となる。
【発明を実施するための最良の形態】
【００３６】
以下，本発明の実施の形態について，図を用いて説明する。
【００３７】
図１は，本発明の実施の形態によるプロトコル／ＤＭＡ制御回路の構成例を示す図である。プロトコル／ＤＭＡ制御回路１０は，プロトコル制御回路１１，センドエンジン（Send Engine ）１２，ホストインタフェース１３，ＰＣＩインタフェース１４，ＣＭインタフェース１５を備える。センドエンジン１２は，ディスクリプタ制御回路２０，ホストデータ制御回路２１，ＢＣＣ生成回路２２，ＦＣＣ生成回路２３，ライト制御回路２４，ダミー／パディング生成回路２５を備える。
【００３８】
図１において，２０ＭＨｚと記載がある回路はホストインタフェース１３の動作周波数と同じ２０ＭＨｚで動作している。ＣＭインタフェース１５は６６ＭＨｚ，その他内部回路は８０ＭＨｚで動作している。
【００３９】
プロトコル／ＤＭＡ制御回路１０において，プロトコル制御回路１１は，ホストインタフェース１３を介してホストデータを受け取り，プロトコル制御を行う。センドエンジン１２は，データライト用のＤＭＡエンジンであり，ＰＣＩインタフェース１４を介してＭＰＵからディスクリプタを受け取り，そのディスクリプタの情報に従って，ＣＭインタフェース１５を介してデータをＣＭに転送する。
【００４０】
センドエンジン１２において，ディスクリプタ制御回路２０は，ＰＣＩインタフェース１４を介して，ＭＰＵからディスクリプタを取得し，各回路に対してディスクリプタの情報を通知する。ホストデータ制御回路２１は，ディスクリプタの情報に従って，ホストデータの入力を行う。ＢＣＣ生成回路２２は，ディスクリプタの情報に従って，ＢＣＣ（Block Check Code）を生成する。ＦＣＣ生成回路２３は，ディスクリプタの情報に従って，ＦＣＣ（Field Check Code）を生成する。ライト制御回路２４は，ディスクリプタの情報に従って，ＣＭへのデータの転送制御を行う。ダミー／パディング生成回路２５は，ディスクリプタの情報に従って，ダミー（Dummy ）パターンやパディング（Padding ）パターンなどのデータパターンを生成する回路である。
【００４１】
図２は，本実施の形態によるディスクリプタの例を示す図である。図２に示すディスクリプタ３０は，データライト用のディスクリプタ３０の例である。ディスクリプタ３０は，メモリ３１に格納され，Ｍｏｄｅ，ＤＬ，ＣＭＡ，ｐｔｎ０，ｐｔｎ１，ＢＢＩＤ，ＦＢＩＤの情報を持つ。ＤＬ，ＣＭＡ，ＢＢＩＤ，ＦＢＩＤについては，図７に示すディスクリプタ１４０のものと同様である。また，Ｍｏｄｅにおいて，ｂｉｔ０〜ｂｉｔ２については，図７に示すディスクリプタ１４０のものと同様である。すなわち，図２に示すディスクリプタ３０は，図７に示すディスクリプタ１４０に新たにＭｏｄｅ（ｂｉｔ３，ｂｉｔ４），ｐｔｎ０，ｐｔｎ１が加えられたものとなる。
【００４２】
Ｍｏｄｅにおいて，ｂｉｔ３にはダミーモードのセット／リセットが示され，ｂｉｔ４にはトグルモードのセット／リセットが示される。ｐｔｎ０には，ダミー／パディングのデータパターンが指定される。ｐｔｎ１には，トグルモードで使用するパターンが指定される。
【００４３】
ダミー／パディング生成回路２５は，ダミーモードがセットされると，ｐｔｎ０に設定されたデータパターンをダミーパターンとしてライト制御回路２４に送付する。また，ダミーモードがセットされていないときには，ｐｔｎ０に設定されたデータパターンをパディングパターンとしてライト制御回路２４に送付し，転送するユーザデータに付加させる。ダミーモードがセットされておらず，ｐｔｎ０がオール・ゼロのパターンである場合には，従来の通常のパディングと同じパディングが行われることになる。試験の場合には，試験の目的に応じた任意のパターンをｐｔｎ０として設定することにより，パディングデータを変化させることができる。
【００４４】
トグルモードがセットされると，ダミー／パディング生成回路２５は，ｐｔｎ０とｐｔｎ１のデータパターンを交互に変化させたデータパターンをライト制御回路２４に送付する。これにより，ｐｔｎ０とｐｔｎ１とを交互に繰り返すデータパターンが，データ転送長ＤＬで指定された長さ分だけダミーデータとして転送されることになる。ｐｔｎ０とｐｔｎ１にそれぞれ異なる値を設定することで，高速ＩＯ，回路内部のグラウンドバウンスやクロストーク耐性の評価を容易に行うことができる。なお，グラウンドバウンス（ground bounce ）とは，ＩＣの内部状態や出力が同時に変化したとき，ピン・ボンディング・ワイヤなどの寄生容量，グラウンド・インピーダンスなどにより，グラウンド・レベルが変化することをいう。また，クロストーク（cross talk）とは，ある回路・回線に浮遊容量，寄生容量，アースの共通インピーダンスなどの影響により，不必要な信号が漏れることをいう。
【００４５】
また，パディングパターンを一定とせずにディスクリプタ３０ごとに変化させることによって，例えば検証中のデータ化け発生時に，どのディスクリプタ３０によるデータ転送でデータ化けが発生したかの切り分けを行うことができる。
【００４６】
ライト制御回路２４は，ダミー／パディング生成回路２５からダミーパターンを受け取ると，そのダミーパターンを転送データとし，ＣＭへのデータ転送を行う。また，ダミー／パディング生成回路２５からパディングパターンを受け取ると，そのパディングパターンをホストデータ制御回路２１から受け取った転送データにパディングデータとして挿入し，ＣＭへのデータ転送を行う。
【００４７】
図３は，本実施の形態のセンドエンジンによるデータ転送処理フローチャートである。以下において，ＴＯＰポインタとはＭＰＵが構築したキューが格納されている先頭アドレスを示し，ＢＴＭポインタとはデータ転送処理を完了したキューのアドレスを示す。また，例えば，Ｍｏｄｅのｂｉｔ３をＭｏｄｅ［３］と表現する。なお，図３の例では，転送データへのパディングパターンの挿入は行っていない。
【００４８】
リセットが解除されると（ステップＳ１０），ＭＰＵによってＤＭＡスタートビットがセットされるまで待機する（ステップＳ１１）。
【００４９】
ＭＰＵによってＤＭＡスタートビットがセットされると，ＭＰＵによってＴＯＰポインタが更新されるまで待機する（ステップＳ１２）。
【００５０】
ＭＰＵによってＴＯＰポインタが更新されると，残りキュー数の判定を行う。ＴＯＰポインタとＢＴＭポインタとの差分が，これから処理しなければならない残りキュー数となる。ＴＯＰポインタ＝ＢＴＭポインタであれば（ステップＳ１３），ステップＳ１２に戻り，ＭＰＵによってＴＯＰポインタが更新されるまで待機する。
【００５１】
ＴＯＰポインタ＝ＢＴＭポインタでなければ（ステップＳ１３），ＢＴＭポインタが指すメモリ３１の位置からディスクリプタ３０を読み出す（ステップＳ１４）。読み出されたディスクリプタ３０を解析し，Ｍｏｄｅ［３］＝１（ダミーモードセット）であれば（ステップＳ１５），ダミー／パディング生成回路２５によってデータパターンを生成する（ステップＳ１６）。このとき，Ｍｏｄｅ［４］＝１（トグルモードセット）であれば，ｐｔｎ０，ｐｔｎ１を繰り返したデータパターンを生成し，Ｍｏｄｅ［４］＝０であれば，ｐｔｎ０そのものをデータパターンとする。Ｍｏｄｅ［３］＝１でなければ（ステップＳ１５），データバッファからユーザデータを読み出し，パディングが必要な場合には，ｐｔｎ０のデータパターンをパディングデータとする（ステップＳ１７）。
【００５２】
ディスクリプタ３０を解析し，Ｍｏｄｅ［２］＝１（ＦＣＣ生成）であれば（ステップＳ１８），ＦＣＣ生成回路２３によってＦＣＣを生成し，生成されたＦＣＣをデータに追加する（ステップＳ１９）。
【００５３】
ディスクリプタ３０を解析し，Ｍｏｄｅ［１］＝１（ＢＣＣ生成）であれば（ステップＳ２０），ＢＣＣ生成回路２２によってＢＣＣを生成し，生成されたＢＣＣをデータに追加する（ステップＳ２１）。
【００５４】
データ転送が正常に終了していれば（ステップＳ２２），ＢＴＭポインタをインクリメントし（ステップＳ２３），ステップＳ１３に戻り，残りキュー数の判定を行う。データ転送が正常に終了していなければ（ステップＳ２２），ＭＰＵにエラー通知を発行し（ステップＳ２４），エラー刈り取り処理およびＤＭＡ再起動を行う（ステップＳ２５）。
【図面の簡単な説明】
【００５５】
【図１】本発明の実施の形態によるプロトコル／ＤＭＡ制御回路の構成例を示す図である。
【図２】本実施の形態によるディスクリプタの例を示す図である。
【図３】本実施の形態のセンドエンジンによるデータ転送処理フローチャートである。
【図４】ストレージシステムの例を示す図である。
【図５】チャネルアダプタの例を示す図である。
【図６】プロトコル／ＤＭＡ制御回路の構成例を示す図である。
【図７】ディスクリプタの例を示す図である。
【図８】ディスクリプタの概念を示す図である。
【図９】ＢＣＣとＦＣＣの概念を示す図である。
【図１０】ストレージシステムの一部の例を示す図である。
【符号の説明】
【００５６】
１０  プロトコル／ＤＭＡ制御回路
１１  プロトコル制御回路
１２  センドエンジン
１３  ホストインタフェース
１４  ＰＣＩインタフェース
１５  ＣＭインタフェース
２０  ディスクリプタ制御回路
２１  ホストデータ制御回路
２２  ＢＣＣ生成回路
２３  ＦＣＣ生成回路
２４  ライト制御回路
２５  ダミー／パディング生成回路
【図１】
2007323467.tif 000003
【図２】
2007323467.tif 000004
【図３】
2007323467.tif 000005
【図４】
2007323467.tif 000006
【図５】
2007323467.tif 000007
【図６】
2007323467.tif 000008
【図７】
2007323467.tif 000009
【図８】
2007323467.tif 000010
【図９】
2007323467.tif 000011
【図１０】
2007323467.tif 000012