(57)【要約】【課題】データ転送をより柔軟に行えるデータ転送装置及びデータ転送方法を提供する。【解決手段】転送データサイズの上限値を設定可能なレジスタと、この上限値と外部から送られた転送サイズとを比較し、この転送サイズがレジスタ設定値より大きい場合、この転送サイズを減少させる機構とを備えるデータ転送装置。また、レジスタに設定値を設定し、転送データサイズの上限値を設定し、この上限値と外部から送られた転送サイズとを比較し、この転送サイズが前記設定値より大きい場合、この転送サイズを減少させるデータ転送方法。【選択図】  図５
2013015912.tif 000002
【特許請求の範囲】
【請求項１】
転送データサイズの上限値を設定可能なレジスタと、
この上限値と外部から送られた転送サイズとを比較し、この転送サイズがレジスタ設定値より大きい場合、この転送サイズを減少させる機構とを
備えたデータ転送装置。
【請求項２】
コマンド数の下限値を設定可能な下限値レジスタを更に備え、外部から送られたコマンドのうち未実行なコマンドの数がこの下限値より小さい場合に前記転送サイズを減少する請求項１に記載のデータ転送装置。
【請求項３】
コマンド実行状況を監視し、保持コマンドに対し、実行済みであるか、未実行であるかのフラグを設定する請求項１に記載のデータ転送装置。
【請求項４】
未実行と分類された前記コマンドに対し、コマンド発行先イニシエータのアドレスを参照し、このイニシエータごとに未実行コマンド数の管理を行う請求項３に記載のデータ転送装置。
【請求項５】
レジスタに設定値を設定し、
転送データサイズの上限値を設定し、
この上限値と外部から送られた転送サイズとを比較し、この転送サイズが前記設定値より大きい場合、この転送サイズを減少させるデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、例えばMaximum Burst Size読み替え判定機能を有するデータ転送装置及びデータ転送方法に関する。
【背景技術】
【０００２】
データ転送に関しては、様々な工夫がされてきている。
例えば特許文献１には、共通バスに接続されるデータ転送装置のデータ転送数を計測することにより各装置のバスアクセス数を監視し、ある周期内では同一のデータ転送装置によるバス占有を禁止する方式が記載されている。
【０００３】
また特許文献２は、PCI関連の特許であり、ホストが共通バスを介して接続されるターゲットに対しデータ転送を行うことによりディスコネクトを発生させ、ターゲットのデータバッファサイズを計測するものである。データバッファ計測後、データ転送長をバッファサイズより小さい範囲で行うことによりディスコネクト発生を抑制し、システムのスループット低下を防ぐ方式である。
【０００４】
また特許文献３も、PCI関連の特許であり、イニシエータにおいてディスコネクト発生数を管理し、ディスコネクト発生回数が規定値に達した場合、当該デバイス間でのバーストサイズを減算し、ディスコネクト発生を抑制し、システムのスループット低下を防ぐ方式である。
【０００５】
ところで特にSASイニシエータ/ターゲット間でフレーム送受信を行うためには、OPENシーケンスによりConnectionを確立する必要がある。両デバイス間では、一度のConnectionで送信できる最大データ長(= Maximum Burst Size)が規定されており、転送データ長がMaximum Burst Sizeに達したら、データ転送を中断しCLOSEシーケンスによりConnectionを解消する。
【０００６】
例として、ターゲットデバイスからサイズの大きいリード転送を行うケースにおいて、Maximum Burst Sizeが大きい場合は、ターゲットデバイスのバス占有率が大きくなり、イニシエータデバイスのコマンド発行を阻害してしまう可能性がある。またMaximum Burst Sizeが小さい場合は、OPEN/CLOSEシーケンスが頻発し、データ送信完了までの時間が大きくなってしまう。
【０００７】
この   上記のように、Maximum Burst Size分の転送は状況によっては性能劣化の要因となるため、各状況に応じて最適値が設定されることが望ましい。
【０００８】
しかし、実際にはMaximum Burst Sizeはイニシエータデバイスよりコマンドとして発行されるため、頻繁に書き換えることは難しく、前述のような問題による性能劣化が発生してしまう。
【０００９】
ここに、データ転送をより柔軟に行える技術への要望があるが、かかる要望を実現するための手段は知られていない。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平４−４４５２号公報
【特許文献２】特開平１０−３３４０３９号公報
【特許文献３】特開２０００−３３０９２９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明の実施の形態は、データ転送をより柔軟に行うことができるデータ転送装置及びデータ転送方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、実施形態によればデータ転送装置は、転送データサイズの上限値を設定可能なレジスタと、この上限値と外部から送られた転送サイズとを比較し、この転送サイズがレジスタ設定値より大きい場合、この転送サイズを減少させる機構とを備える。
【図面の簡単な説明】
【００１３】
【図１】実施形態の磁気ディスク装置を備えた電子機器の典型的な構成を示すブロック図。
【図２】同実施形態の要部を示す機能ブロック構成図。
【図３】同実施形態のInitiator/Target間でのデータ通信を示すブロック構成図。
【図４】同実施形態の機能ブロック構成図。
【図５】同実施形態に用いられるMaximum Burst Size読み替え判定フロー図。
【発明を実施するための形態】
【００１４】
以下、一実施形態を図１乃至図５を参照して説明する。
図１は第１の実施形態に係る磁気ディスク装置を備えた電子機器の典型的な構成を示すブロック図である。図１において、電子機器は、磁気ディスク装置（ＨＤＤ）１０及びホスト（ホストシステム）２０を備えている。電子機器は、例えば、パーソナルコンピュータ、ビデオカメラ、音楽プレーヤー、携帯端末、或いは携帯電話機である。ホスト２０はＨＤＤ１０を当該ホスト２０の記憶装置として利用する。
【００１５】
ＨＤＤ１０は、ヘッドディスクアセンブリ部（ＨＤＡ部）１００と、制御ボード部２００とを備えている。
ＨＤＡ部１００は、例えば２枚のディスク（磁気ディスク）１１０-1及び１１０-2と、スピンドルモータ（ＳＰＭ）１３０と、アクチュエータ１４０と、ヘッドＩＣ１５０とを備えている。
【００１６】
ディスク１１０-1及び１１０-2の各々は上側と下側の２つの記録面を備えている。ディスク１１０-1及び１１０-2はＳＰＭ１３０により高速に回転させられる。ディスク１１０-i（ｉ＝１，２）はＣＤＲ（constant density recording）と呼ばれる周知の記録フォーマットを適用している。このためディスク１１０-iの各記録面は、当該ディスク１１-iの半径方向に複数のゾーンに区分して管理される。つまり、ディスク１１０-iの各記録面は、複数のゾーンを備えている。
【００１７】
アクチュエータ１４０はディスク１１０-1のそれぞれの記録面に対応して配置されるヘッド・アームの先端にヘッド（磁気ヘッド）１２０-0及び１２０-1を備えている。アクチュエータ１４０は更に、ディスク１１０-2のそれぞれの記録面に対応して配置されるヘッド・アームの先端にヘッド１２０-2及び１２０-3を有する。ヘッド１２０-0及び１２０-1は、ディスク１１０-1へ／からのデータの書き込み／読み出しに用いられ、ヘッド１２０-2及び１２０-3は、ディスク１１０-2へ／からのデータの書き込み／読み出しに用いられる。
【００１８】
アクチュエータ１４０はボイスコイルモータ（ＶＣＭ）１４１を備えている。アクチュエータ１４０はＶＣＭ１４１によって駆動され、ヘッド１２０-0乃至１２０-3をディスク１１０-1及び１１０-2の半径方向に移動させる。
【００１９】
ＳＰＭ１３０及びＶＣＭ１４１は、後述するモータドライバＩＣ２１０からそれぞれ供給される駆動電流（ＳＰＭ電流及びＶＣＭ電流）により駆動される。
ヘッドＩＣ１５０は、ヘッド１２０-j（ｊ＝０，１，２，３）により読み出された信号（リード信号）を増幅する。ヘッドＩＣ１５０はまた、後述するリード／ライトチャネル２３０から転送されるライトデータをライト電流に変換してヘッド１２０-jに出力する。
【００２０】
制御ボード部２００は、モータドライバＩＣ２１０及びシステムＬＳＩ２２０の２つのＬＳＩを備えている。モータドライバＩＣ２１０は、ＳＰＭ１３０を一定の回転速度で駆動する。モータドライバＩＣ２１０はまた、ＣＰＵ２７０から指定されたＶＣＭ操作量に相当する値の電流（ＶＣＭ電流）をＶＣＭ１４１に供給することで、アクチュエータ１４０を駆動する。
【００２１】
システムＬＳＩ２２０は、リード／ライトチャネル（Ｒ／Ｗチャネル）２３０、ディスクコントローラ（ＨＤＣ）２４０、バッファＲＡＭ２５０、フラッシュメモリ２６０、プログラムＲＯＭ２７０、ＣＰＵ２８０及びＲＡＭ２９０が単一チップに集積されたＳＯＣ（System on Chip）と呼ばれるＬＳＩである。
【００２２】
Ｒ／Ｗチャネル２３０は、リード／ライトに関連する信号処理を行う信号処理デバイスである。Ｒ／Ｗチャネル２３０は、リード信号をデジタルデータに変換し、このデジタルデータからリードデータを復号する。Ｒ／Ｗチャネル２３０はまた、上記デジタルデータからヘッド１２０-jの位置決めに必要なサーボデータを抽出する。Ｒ／Ｗチャネル２３０はまた、ライトデータを符号化する。
【００２３】
ＨＤＣ２４０は、ホスト２０とホストインタフェース２１を介して接続されている。ＨＤＣ２４０は、ホスト２０から転送されるコマンド（ライトコマンド、リードコマンド等）を受信する。ＨＤＣ２４０は、ホスト２０と当該ＨＤＣ２４０との間のデータ転送を制御する。ＨＤＣ２４０は、Ｒ／Ｗチャネル２３０を介して行われるディスク１１０-i（ｉ＝１，２）と当該ＨＤＣ２４０との間のデータ転送を制御する。
【００２４】
バッファＲＡＭ２５０は、ディスク１１０-iに書き込まれるべきデータ及びディスク１１０-iからヘッドＩＣ１５０及びＲ／Ｗチャネル２３０を介して読み出されたデータを一時格納するのに用いられる。
【００２５】
フラッシュメモリ２６０は、書き換え可能な不揮発性メモリである。フラッシュメモリ２６０は、例えばホストから受信するライトコマンドの端数セクタのデータを一時的に格納するのに用いられる。
【００２６】
プログラムＲＯＭ２７０は、制御プログラム（ファームウェアプログラム）を予め格納する。なお、制御プログラムがフラッシュメモリ２６０の一部の領域に格納されていても構わない。
【００２７】
ＣＰＵ２８０は、ＨＤＤ１０の主コントローラとして機能する。ＣＰＵ２８０はプログラムＲＯＭ２７０に格納されている制御プログラムに従ってＨＤＤ１０内の他の少なくとも一部の要素を制御する。ＲＡＭ２９０の一部の領域は、ＣＰＵ２８０の作業領域として用いられる。この作業領域には、ＨＤＤ１０のパワーオン時に、フラッシュメモリ２６０に格納されている一部のデータがロードされる。
【００２８】
なお図２は、実施形態の要部を示す機能ブロック構成図である。図１のハードウェア構成を基にしているが、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等のハードウェア構成を基にしても同様な構成となる。
【００２９】
図２に示すように、ディスク装置（記録装置）１０Ｂは、ＭＰＵ３８０、ＨＤＤコントローラ３４０AとＩ／Ｆ３４０Ｂ、バッファ３５０、不揮発性メモリ３６０、磁気ディスク媒体１１０、メモリ３９０、ロム３７０から構成されている。図２の構成と図１の構成とを比較すると、ＭＰＵ３８０はＣＰＵ２８０に、ＨＤＤコントローラ３４０AとＩ／Ｆ３４０Ｂはディスクコントローラ２４０に、バッファ３５０はバッファＲＡＭ２５０に、不揮発性メモリ３６０はフラッシュメモリ２６０に、磁気ディスク媒体１１０はディスク１１０-1及び１１０-2に、メモリ３９０はＲＡＭ２９０に、ロム３７０はプログラムＲＯＭ２７０に、それぞれ対応している。
【００３０】
(実施例)
本実施形態は例えばSAS ( Serial Attached SCSI ）でConnection 毎に転送すべきData 長をTarget のコマンド保有状態、Initiator 状態に基づき調整する事によりInitiator からのコマンド発行を効率化しシステム全体のスループット向上を図る事を目的としている。
【００３１】
SAS ではData 転送前にInitiator/Target 間でConnection を確立する必要がある（具体的にはOPEN 、CLOSE にてバス接続、切断を行う）。またConnection 毎に送受信できる最大Data 長（Maximum Burst Size ）が規定されている。最大Data 長はInitiator から指定される物で、例えばTarget からのData 転送にて指定サイズが大きい場合Initiator からのコマンド発行が阻害される。逆に小さい場合OPEN 、CLOSE が頻発、転送効率が低下する。本実施形態はこの最大Data 長を変更せずInitiator/Target の状態を把握し内部的に読み替える事でバス効率を最大限に活用でき、結果、システム全体のスループットが向上するという効果がある。
【００３２】
具体的には、図３ のコマンドテーブルで保有するコマンド数を接続されるInitiator の構成、転送レート（1.5G/3G/6Gbps ）、接続状態を元に調整することにより実現する。例えばTarget からInitiator へのData 転送時、上記の状態を元に閾値を予め把握しておき、保有するコマンド数が閾値に到達したらMaximum Burst Size を適宜読み替え、CLOSE処理を実施する。バス権限を対象のInitiator に与え、コマンド発行できる状態とし、システムとして効率的に滞りなくコマンド処理を継続して行える様にするものである。従来はMaximum Burst Size が大きい場合Initiator からのコマンド発行が阻害される事が特定のシステムにて発生した。
【００３３】
さて図３は、実施形態のInitiator/Target間でのデータ通信を示すブロック構成図である。
Initiatorは、コマンド発行部１、セレクタ２、送信部３、Maximum Burst Size設定部４と受信部５を備えている。またTargetは、受信部６、セレクタ７、DDR８、コマンドテーブル９、コマンド実行部１０、送信部１１とMaximum Burst Size設定部１２を備えている。Maximum Burst Size設定部１２は、Connection単位の最大転送数を規定する。データ転送数がこの値に達したら、 ConnectionをCLOSEする。
【００３４】
OPENシーケンスとしては、InitiatorからOPEN address frameを送信するケースでは、コマンド発行時は、InitiatorからOPENシーケンスによりConnectedとなる必要がある。また、TargetからOPEN address frameを送信するケースでは、TargetはOPEN ACCEPTを受け取る。
【００３５】
なお、TargetからConnectionを確立した場合、Initiatorからのコマンド発行ができないケースがある。
SAS プ口トコル通信では、両デバイス間でconnected 状態であり、かつ受信バッファに空きがあれば双方向の通信が可能である。ただし、例外的にコマンド発行時は、Initiator からのOPEN シーケンスによりConnection を確立する必要がある。よって、Target 起因のConnection によりバスが長時間占有される場合、Initiator はOPEN シーケンスを行うことができずコマンド発行が阻害されてしまう。Target の保持するコマンド数が少なくなると、システム全体のスループット低下を招く恐れがある。本実施形態は、Target の保持コマンド数が閾値より少なくなった場合、Maximum Burst Size を小さく読み替え、Target が占有するバスを一旦解放し、Initiator に対しコマンド発行を促す方式である。
【００３６】
図４の機能ブロック構成図の各設定を用いて本発明の実施例を示す。各設定は以下のとおりとする。
Minimum Command Count Register４７=20個、Config Register５１=50kBが設定されている状態で、イニシエータ#0へリードコマンド(40kB)実行を行うケースを説明する。
【００３７】
0.準備：ファームウェアは、イニシエータよりMaximum Burst Size受領時、以下の設定を実施する。このファームウェアは、HDC２４０で実行されるものであるが、CPU280などで実行されてもよい。
【００３８】
0.1：コマンド管理部のCommand Count Register４７に、ターゲットデバイスの保持コマンド数の下限値を設定する。
0.2：MBS判定部のConfig Register５１に、読み替えを行うMaximum Burst Sizeの下限値を設定する。
1.：コマンド起動までファームウェアは、コマンドテーブル４１の情報を解析し、コマンド実行部のExchange Table５７に実行情報を登録し、転送起動をかける。以降、ターゲットデバイスはコマンド実行状態となる。
【００３９】
2.転送レート判定(後述の図５, 判定2)：コマンド管理部において、イニシエータテーブル４３に登録される各イニシエータの転送レートを判定する。本実施例においては、イニシエータ#0の転送レートが6.0Gで最も高い。
【００４０】
3.コマンド保持数判定(図５, 判定3)：コマンド管理部において、リード先イニシエータから受領しているコマンド数と、Minimum Command Count Register値の比較を行う。本実施例においては、20(下限値) > 10(イニシエータ#0からの受領コマンド数) となり、コマンド保持数が下限値より少ない。
【００４１】
コマンド管理部は、判定2および判定3より、リード先イニシエータの転送レートが最も高く、かつ、このイニシエータからのコマンド保持数が下限値より少ないと判断される場合、Almost Empty FlagをMBS判定部に通知する。
【００４２】
4. Maximum Burst Size読み替え判定(図５, 判定４)：MBS判定は、Almost Empty Flagを元に、Config  Register値とMaximum Burst Sizeの比較を行う。この比較により、Maximum Burst SizeがConfig Register値より大きい場合、本来のMaximum Burst Sizeの1/2をコマンド実行部に対して通知する。
【００４３】
本実施例においては、50kB(ConfigReg) < 64kB(MaxBurstSize) であるので、コマンド実行部に対しては、32kB(64kB/2)がMaximum Burst Sizeとして通知される。
【００４４】
コマンド実行部では、この値を直近の転送におけるMaximum Burst Sizeとして採用し、転送データ長がこの値に達した時点で比較器５８がCLOSE要求を行う。
【００４５】
次に図５は、実施形態に用いられるファームウェアを主体とするMaximum Burst Size読み替え判定フロー図である。
ステップＳ１：  コマンド実行起動を行う。
ステップＳ２：  実行コマンドタイプを判定する（判定１）。この判定の結果が、リードコマンドである場合は次のステップＳ３へ進みそうでない場合はステップＳ７へ飛ぶ。
【００４６】
ステップＳ３：  リード転送先イニシエータの転送レートがイニシエータテーブル中で最も大きいかどうかを判定する（判定２）。この判定の結果が、Yesある場合は次のステップＳ４へ進みそうでない場合はステップＳ７へ飛ぶ。
【００４７】
ステップＳ４：  リード先のイニシエータから受領しているコマンド数と保持コマンドの下限値を比較する（判定３）。この比較の結果が、コマンド数が下限値より小さい場合は次のステップＳ５へ進みそうでない場合はステップＳ７へ飛ぶ。
【００４８】
ステップＳ５：  Maximum Burst SizeとConfig値を比較する（判定４）。この比較の結果が、Maximum Burst SizeがConfig値より大きい場合は次のステップＳ６へ進みそうでない場合はステップＳ７へ飛ぶ。
【００４９】
ステップＳ６：  (Maximum Burst Size /2)を読み替え後のMaximum Burst Sizeとして適用し、処理を終了する。
ステップＳ７：  Maximum Burst Sizeの読み替えを行わず、処理を終了する。
以上で、データ転送装置のコマンド保持状況を判定する技術に関し、次の仕組みの要点を説明した。
A．装置のコマンド実行状況を監視し、保持する全コマンド数を管理する仕組み。より具体的には例えば、ＨＤＣ２４０が、フラッシュメモリ２６０内のフラグテーブル２６４として、全コマンドと各実行状況（実行ならフラグON、そでないならOFFなど）の組みを管理するようにすればよい。
【００５０】
B . A による管理をさらにイニシエータ毎の管理に振り分ける仕組み。
C . コマンド実行起動時、データ送信先イニシエータから受領、保持しているコマンド数と装置で予め設定されるコマンド保持数の下限値を比較する仕組み。
D. 装置で指定されるMaximum Burst Size を小さく読み替える仕組み。
本実施形態の方式は、ターゲットからのリード転送起動時、H/Wがデバイスのイニシエータ毎のコマンド保持状況と転送レートの判定を実施、リード先イニシエータデバイス間との転送レートが高く、かつこのイニシエータからのコマンド保持数が少ないと判断される場合、設定されるMaximum Burst Sizeを小さく読み替え、このイニシエータデバイスに対し、優先的にバス権限を与えるものである。例えば以下の機構により、転送レートが高いイニシエータからの受領コマンド数を相対的に大きくすることができ、装置全体のスループット向上を図ることが可能となる。
【００５１】
（１）ファームウェアよりMaximum  Burst Sizeの上限値を設定可能なレジスタ(Config Register)を有し、このレジスタ設定値とデバイスが持つMaximum Burst Sizeを比較し、Maximum Burst Sizeがレジスタ設定値より大きい場合、Maximum Burst Sizeを1/2に減算する機構(図4, Maximum Burst Size判定部)。
【００５２】
（２）ファームウェアよりデバイスが保持するコマンド数の下限値を設定可能なレジスタ(Minimum Command Count Register)を有し、コマンド実行起動時、フレーム転送先のイニシエータから受領、保持しているコマンドのうち、未実行であるコマンド数とレジスタ設定値を比較し、未実行コマンド数がレジスタ設定値より小さい場合、（１）により減算を行ったMaximum Burst Sizeを直近のコマンド実行のMaximum Burst Sizeとして採用する機構(図4, MBS判定部)。
【００５３】
（３）デバイスによるコマンド実行状況を監視し、デバイスの全保持コマンドに対し、実行済みであるか、未実行であるかのフラグを設定する機構。
（４）（３）で未実行と分類されたコマンドに対し、コマンド発行先イニシエータのアドレスを参照し、イニシエータごとに未実行コマンド数の管理を行う機構。
なお、この発明は上記実施形態に限定されるものではなく、この外その要旨を逸脱しない範囲で種々変形して実施することができる。例えば、リードコマンドだけでなくライトコマンドなどを使用する場合にも有効である。
【００５４】
また、上記した実施の形態に開示されている複数の構成要素を適宜に組み合わせることにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素から幾つかの構成要素を削除しても良いものである。さらに、異なる実施の形態に係わる構成要素を適宜組み合わせても良いものである。
【符号の説明】
【００５５】
１０…ＨＤＤ（磁気ディスク装置）、２０…ホスト、１１０-1，１１０-2，１１０-i…ディスク、１１１…パラメータ調整領域、１２０-0〜１２０-3…ヘッド、２３０…Ｒ／Ｗチャネル（リード／ライトチャネル）、２４０…ＨＤＣ、２６０…フラッシュメモリ、２６４…フラグテーブル、２７０…プログラムＲＯＭ、２８０…ＣＰＵ、２９０…ＲＡＭ。
【図１】
2013015912.tif 000003
【図２】
2013015912.tif 000004
【図３】
2013015912.tif 000005
【図４】
2013015912.tif 000006
【図５】
2013015912.tif 000007