(57)【要約】      （修正有）【課題】情報装置のデータフローのためのバッファとプロセッサのためのメインメモリとを共有化させるためのメモリアクセス装置を提供する。【解決手段】アービタ手段は、複数の機能ブロックからのメモリのアクセス要求を順にラウンドロビン方式で所定の転送長で割当て、（ａ）所定の転送長で部分転送に分割し、データ転送の帯域に応じて１回のラウンドロビン・サイクルの中で複数の部分転送をし、（ｂ）複数の部分転送は異なる優先度を有し、異なる機能ブロックからの部分転送の交互の転送により全ての機能ブロックからのデータ転送の必要帯域を満たすように優先度をプログラマブルに設定し、（ｃ）プロセッサからのメモリへのアクセス回数が、最優先で所定の転送長（ＣＰＵ転送長）で部分転送間の所定の間隔において、機能ブロックからのデータフローの転送帯域への影響が小さくなるように、プロセッサ・アクセスを行う。【選択図】図６
2011113119.tif 000002
【特許請求の範囲】
【請求項１】
データフローのためのバッファとプロセッサのためのメインメモリとを共有化させるためのメモリアクセス装置であって、
メモリと、
前記メモリとの間のデータフローを行う複数の機能ブロックと、
前記メモリをメインメモリとして使用するプロセッサと、
前記メモリへの前記機能ブロック及び前記プロセッサのアクセスの調停をするアービタ手段とを含み、
前記アービタ手段は、
複数の前記機能ブロックからの前記メモリのアクセス要求を順にラウンドロビン方式で所定の転送長で割当てることを特徴とし、
（ａ）前記機能ブロックからのデータ転送は、所定の転送長（部分転送長）で部分転送に分割し、前記機能ブロックからのデータ転送の必要の帯域に応じて、1回のラウンドロビン・サイクルの中で複数の前記部分転送をし、
（ｂ）前記機能ブロックからの複数の部分転送は異なる優先度を有し、異なる前記機能ブロックからの前記部分転送の交互の転送により全ての前記機能ブロックからのデータ転送の必要帯域を満たすように、前記データ転送の部分転送の各々の優先度をプログラマブルに設定し、  
（ｃ）前記プロセッサからの前記メモリへのアクセス回数が、最優先で所定の転送長（ＣＰＵ転送長）で前記部分転送間の所定の間隔において、前記機能ブロックからのデータフローの転送帯域への影響が小さくなるように、１回のラウンドロビン・サイクル中で上限を設けてプロセッサ・アクセスを行う、
ことを特徴とするメモリアクセス装置。
【請求項２】
前記アービタ手段は、前記ラウンドロビン・サイクルを前記機能ブロックからのアクセス要求を受け付ける待ち（アイドル）状態の複数のステートマシンで定義して、各前記ステートマシンが、前記機能ブロックからのアクセス要求を優先度の順番に直列に接続された複数のスロットを含み、
前記（ｂ）のデータ転送の部分転送の各々の優先度をプログラマブルに設定は、前記機能ブロックの各々からデータ転送の部分転送のアクセス要求が来たら、前記部分転送を前記設定された優先度に応じて前記ステートマシン中のスロットに割当てることを特徴とする請求項１に記載の装置。
【請求項３】
前記部分転送長は、前記機能ブロックのデータ転送の転送帯域を満たすような値以上であり、かつ、前記プロセッサからのアクセスに対するレイテンシを小さくなるような値以下である、ことを特徴とする請求項１または２に記載の装置。
【請求項４】
前記アービタ手段は、前記ステートマシンの動作中に前記プロセッサのアクセスが生じた場合に前記ステートマシンのスロットに割当てられた前記機能ブロックからの終了後に、前記プロセッサからのアクセスに遷移させて実行する、更に前記ラウンドロビンのサイクル内で前記プロセッサからの回数を制限する請求項３に記載の装置。
【請求項５】
前記アービタ手段は、前記機能ブロックのアクセス中または待機（アイドル）中に前記プロセッサからのアクセス要求が来た場合に前記ステートマシンの待機中または前記スロット間に遷移中に、前記プロセッサからのアクセス要求を実行する請求項４に記載の装置。
【請求項６】
前記アービタ手段は、前記ラウンドロビン・サイクルを８個の前記ステートマシンで定義し、前記ステートマシンは３個の前記スロットを含む請求項５に記載の装置。
【請求項７】
前記プロセッサの1回のアクセスのＣＰＵ転送長は、前記プロセッサのキャシュライン幅の値で与えられ、
前記部分転送長は、前記メモリの転送のバス幅及びクロックに基づいて前記機能ブロックの転送レートの要件を満たすように設定されることを特徴とする請求項６に記載の装置。
【請求項８】
前記請求項１〜７の何れか１つに記載のメモリアクセス装置を含む情報装置。
【請求項９】
情報装置がテープ記録装置であり、
前記機能ブロックは、テープ媒体へのデータフロー、ホストへのデータフロー、ＣＰＵバッファ、および、訂正符号化ＥＣＣを含み、
前記プロセッサの1回のアクセスのＣＰＵ転送長は、前記プロセッサのキャシュラインが３２バイトの場合は３２バイトであり、
前記機能ブロックのデータ転送の部分転送長は、前記メモリがＤＤＲ２ＳＲＡＭの場合に２５６バイトとして与えることを特徴とする請求項８に記載の情報装置。
【請求項１０】
メモリと、前記メモリとの間のデータフローを行う複数の機能ブロックと、前記メモリをメインメモリとして使用するプロセッサとを備える情報装置において、データフローのためのバッファとプロセッサのためのメインメモリとを共有化させるためのメモリアクセスを調停する方法であって、
複数の前記機能ブロックからの前記メモリのアクセス要求を順にラウンドロビン方式で所定の転送長で割当てることを特徴とし、
（ａ）前記機能ブロックからのデータ転送は、所定の転送長（部分転送長）で部分転送に分割し、前記機能ブロックからのデータ転送の必要の帯域に応じて、1回のラウンドロビン・サイクルの中で複数の前記部分転送を行うステップと、
（ｂ）前記機能ブロックからの複数の部分転送は異なる優先度を有し、異なる前記機能ブロックからの前記部分転送の交互の転送により、全ての前記機能ブロックからのデータ転送の必要帯域を満たすように、前記データ転送の部分転送の各々の優先度をプログラマブルに設定するステップと、  
（ｃ）前記プロセッサからの前記メモリへのアクセス回数が、最優先で所定の転送長（ＣＰＵ転送長）で前記部分転送間の所定の間隔において、前記機能ブロックからのデータフローの転送帯域への影響が小さくなるように、１回のラウンドロビン・サイクル中で上限を設けてプロセッサ・アクセスを行うステップと、
を実行する方法。
【請求項１１】
メモリと、前記メモリとの間のデータフローを行う複数の機能ブロックと、前記メモリをメインメモリとして使用するプロセッサとを備える情報装置において、データフローのためのバッファとプロセッサのためのメインメモリとを共有化させるためのメモリアクセスを調停するプログラムであって、
複数の前記機能ブロックからの前記メモリのアクセス要求を順にラウンドロビン方式で所定の転送長で割当てることを特徴とし、
（ａ）前記機能ブロックからのデータ転送は、所定の転送長（部分転送長）で部分転送に分割し、前記機能ブロックからのデータ転送の必要の帯域に応じて、1回のラウンドロビン・サイクルの中で複数の前記部分転送をするステップと、
（ｂ）前記機能ブロックからの複数の部分転送は異なる優先度を有し、異なる前記機能ブロックからの前記部分転送の交互の転送により、全ての前記機能ブロックからのデータ転送の必要帯域を満たすように、前記データ転送の部分転送の各々の優先度をプログラマブルに設定するステップと、  
（ｃ）前記プロセッサからの前記メモリへのアクセス回数が、最優先で所定の転送長（ＣＰＵ転送長）で前記部分転送間の所定の間隔において、前記機能ブロックからのデータフローの転送帯域への影響が小さくなるように、１回のラウンドロビン・サイクル中で上限を設けてプロセッサ・アクセスを行うステップと、
を前記プロセッサに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報装置（例えばストレッジデバイス）のＣＰＵ（プロセッサ）駆動のためのアクセス対象メインメモリ及びデータフローのためのバッファの共有化メモリのアクセス調停に関する。
【背景技術】
【０００２】
ストレージデバイス（例えば、テープ記録装置（テープドライブ））において、消費電力の削減やコストの削減は課題の一つである。標準的なストレージデバイスでは、ファームウェアが使用するＣＰＵとデータに様々な処理をするデータフローのためのＬＳＩ（以下「データフローＡＳＩＣ」または単に「ＡＳＩＣ」）を搭載する。ＡＳＩＣは、それぞれバッファまたはメインメモリとしてＤＲＡＭメモリを使用する。このＤＲＡＭメモリ点数を削減することは、消費電力、コスト、及び設置面積の削減に寄与する。
【０００３】
ＤＲＡＭチップ１枚では、消費電力は動作時にはピーク時０．５Ｗほどになり、デバイスシステムにおける消費電力に占める割合は大きい。現在のところメモリコストもミッドレンジの製品では無視できない。ミッドレンジ・テープドライブは製品の小型化の要求があり、そのため基板面積削減のための部品点数削減は必要である。
【０００４】
図１は、ストレッジデバイスおけるＤＲＡＭメモリへの各転送ブロックからのアクセスを調停するアービタ動作をするＡＳＩＣとＣＰＵとを含む回路基板の構成を示す。(Ａ)は、データフロー及びＣＰＵのそれぞれの専用メモリ（データフロードメイン、メインメモリ）と、各データフローのバッファのアクセス調停をするアービタとを含む従来の構成である。（Ａ）のデータフローのためのアービタは、高い転送レートを必要とするブロックからのアクセスには１回のアクセス許可で長いバースト長を許可して必要帯域を調整していた。
【０００５】
情報装置の消費電力削減やコスト削減のために、ＣＰＵやデータフローＡＳＩＣなどのＬＳＩの統合が進められる。同様にメモリの共有によるＤＲＡＭメモリ数の削減も考えられ、現にパーソナルコンピュータ（ＰＣ）システムにおけるメインメモリとビデオメモリの共有などが存在する。更に、ストレッジデバイスおけるＤＲＡＭメモリへのＣＰＵアクセスと各転送ブロックからのアクセスを共有するメモリも考え得る。
【０００６】
図１（Ｂ）は、ＣＰＵからのアクセス（ＣＰＵアクセス）とデータフロー転送とにおいて共有化されたＤＲＡＭメモリと、その共有化を可能とするアービタとを有すＡＳＩＣを示す。この共有メモリ構成では、データフローのデータバッファとＣＰＵのメインメモリは、同じＤＲＡＭメモリチップを共有する。共有化メモリでは、１つのＤＲＡＭメモリの使用領域は物理的に分離されている。従来の構成では複数のブロックがバッファメモリへのアクセス要求を行い、ＡＳＩＣコントローラのアービタ機能はラウンドロビン方式で順番にアクセスを可能にする。このようなテープドライブなどのストレージデバイスにおいて、メインメモリとデータバッファの共有を考える場合に次の課題がある。
【０００７】
ＣＰＵを使用するファームウェアは、データフローＡＳＩＣなどのハードウェアを制御してメディアとのデータ転送をしている。ファームウェアのコード本体はメインメモリ上に置かれるので、動作上、メインメモリアクセスが発生する。メインメモリアクセスの要求を出して、その要求が完了するまでの遅延はＣＰＵの処理待ち時間となる。この処理待ち時間が大きいと、ＣＰＵのパフォーマンスが低下する。例えば、ストレッジデバイスでは、ホスト転送、メディア転送、及びサーボ処理などが滞り、デバイス全体のパフォーマンス低下につながる。例えば、テープドライブでは、ホスト処理の中断、サーボ処理の遅延によるサーボ追随性の低下、及びバックヒッチ（巻き戻し動作）発生によるテープ転送パフォーマンスの著しい低下などが発生する。したがって、ＣＰＵからのアクセス要求には優先度の高い帯域配分が必要である。従来技術として、ＣＰＵからのモリアクセスの優先度を高くしてそのＣＰＵアクセス要求が来たら、その時点の既に行われているデータ転送を終えて、優先的にＣＰＵアクセスを許可する方法がある。
【０００８】
この方法では、それぞれのデータ転送が滞ると、最終的にはホスト転送の中断やメディア転送パフォーマンスの低下につながる。データバッファアーキテクチャを考える場合、全てのブロックからのデータ転送要求が同時に発生するときに、それぞれの必要帯域を満たす必要がある。メインメモリをデータバッファと共有する場合でも、データセットフロー転送の要件を満たす必要がある。このような複数の機能ブロックからのデータフローからのアクセス要求が存在しているときは、ラウンドロビンで順番に転送を許可する方法を取っている。
【０００９】
例えば、特許文献１は、ホスト側とＣＤメディア側のデータバッファアクセスというバスアクセス調停システムに関する。このバスアクセス調停システムは、ＣＤドライブにおいてデータバッファへの複数のブロックのアクセスを制御するときに、各ブロックからのアクセスに優先度と回数制限を設ける。また、このシステムは、ホストからの転送とＣＤメディアへの転送の２つの速度をアクセス回数の制限を設けることにより、ホスト転送が必要な場合はホスト側に、メディアへの転送が必要な場合はメディア側に帯域を与える。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平１１−１２０１２４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ところで、このラウンドロビンの方法では、ＣＰＵアクセスが集中したときデータバッファアクセスが滞り、最高データレートでのデータ転送（データフロー）を常に保証するデータバッファアーキテクチャではない。また、特許文献１のバス調停システムは、ＣＰＵと複数転送ブロックとにおいてメモリを共有化して使用すること示さない。
【００１２】
そこで、本発明の目的は、情報装置（テープドライブ）のプロセッサのメモリとデータフローのバッファの共有メモリ化を可能にする調停する装置（アビータ：Ａｒｂｉｔｅｒ）、その方法、及びプログラムを提供することである。
【課題を解決するための手段】
【００１３】
上記の目的を達成する本発明は、データフローのためのバッファとプロセッサのためのメインメモリとを共有化させるためのメモリアクセス装置である。このメモリアクセス装置は、メモリと、前記メモリとの間のデータフローを行う複数の機能ブロックと、前記メモリをメインメモリとして使用するプロセッサと、前記メモリへの前記機能ブロック及び前記プロセッサのアクセスの調停をするアービタ手段とを含み、前記アービタ手段は、複数の前記機能ブロックからの前記メモリのアクセス要求を順にラウンドロビン方式で所定の転送長で割当てることを特徴とし、
（ａ）前記機能ブロックからのデータ転送は、所定の転送長（部分転送長）で部分転送に分割し、前記機能ブロックからのデータ転送の必要の帯域に応じて、1回のラウンドロビン・サイクルの中で複数の前記部分転送をし、
（ｂ）前記機能ブロックからの複数の部分転送は異なる優先度を有し、異なる前記機能ブロックからの前記部分転送の交互の転送により全ての前記機能ブロックからのデータ転送の必要帯域を満たすように、前記データ転送の部分転送の各々の優先度をプログラマブルに設定し、  
（ｃ）前記プロセッサからの前記メモリへのアクセス回数が、最優先で所定の転送長（ＣＰＵ転送長）で前記部分転送間の所定の間隔において、前記機能ブロックからのデータフローの転送帯域への影響が小さくなるように、１回のラウンドロビン・サイクル中で上限を設けてプロセッサ・アクセスを行うことを特徴とする。
【００１４】
このメモリアクセス装置の特徴は、前記アービタ手段が前記ラウンドロビン・サイクルを前記機能ブロックからのアクセス要求を受け付ける待ち（アイドル）状態の複数のステートマシンで定義して、各前記ステートマシンが、前記機能ブロックからのアクセス要求を優先度の順番に直列に接続された複数のスロットを含み、前記（ｂ）のデータ転送の部分転送の各々の優先度をプログラマブルに設定は、前記機能ブロックの各々からデータ転送の部分転送のアクセス要求が来たら、前記部分転送を前記設定された優先度に応じて前記ステートマシン中のスロットに割当てることを特徴とすることである。
【００１５】
このメモリアクセス装置の特徴は、前記部分転送長が前記機能ブロックのデータ転送の転送帯域を満たすような値以上であり、かつ、前記プロセッサからのアクセスに対するレイテンシを小さくなるような値以下であることである。
【００１６】
このメモリアクセス装置の特徴は、前記アービタ手段が前記ステートマシンの動作中に前記プロセッサのアクセスが生じた場合に前記ステートマシンのスロットに割当てられた前記機能ブロックからの終了後に、前記プロセッサからのアクセスに遷移させて実行する、更に前記ラウンドロビンのサイクル内で前記プロセッサからの回数を制限することである。
【００１７】
ここのメモリアクセス装置の特徴は、前記アービタ手段が前記機能ブロックのアクセス中または待機（アイドル）中に前記プロセッサからのアクセス要求が来た場合に前記ステートマシンの待機中または前記スロット間に遷移中に、前記プロセッサからのアクセス要求を実行することである。
【００１８】
このメモリアクセス装置の特徴は、前記アービタ手段が前記ラウンドロビン・サイクルを８個の前記ステートマシンで定義し、前記ステートマシンは３個の前記スロットを含むことである。
【００１９】
このメモリアクセス装置の特徴は、前記プロセッサの1回のアクセスのＣＰＵ転送長が、前記プロセッサのキャシュライン幅の値で与えられ、前記部分転送長は、前記メモリの転送のバス幅及びクロックに基づいて前記機能ブロックのデータ転送の転送レートの要件を満たすように設定することである。
【００２０】
更に上記の目的を達成する本発明は、上記メモリアクセス装置を含む情報装置である。
【００２１】
更に上記の目的を達成する本発明は、上記メモリアクセス装置を含むテープ記録装置である。テープ記録装置は、前記機能ブロックはテープ媒体へのデータフロー、ホストへのデータフロー、ＣＰＵバッファ、および訂正符号化ＥＣＣを含み、前記プロセッサの1回のアクセスのＣＰＵ転送長は、前記プロセッサのキャシュラインが３２バイトの場合は３２バイトであり、前記機能ブロックのデータ転送の部分転送長は、前記メモリがＤＤＲ２ＳＲＡＭの場合に２５６バイトとして与えることであることを特徴とする。
【００２２】
更に上記の目的を達成する本発明は、メモリと、前記メモリとの間のデータフローを行う複数の機能ブロックと、前記メモリをメインメモリとして使用するプロセッサとを備える情報装置において、データフローのためのバッファとプロセッサのためのメインメモリとを共有化させるために、前記機能ブロック及び前記プロセッサのメモリアクセスを調停する方法である。この方法は、複数の前記機能ブロックからの前記メモリのアクセス要求を順にラウンドロビン方式で所定の転送長で割当て、
（ａ）前記機能ブロックからのデータ転送は、所定の転送長（部分転送長）で部分転送に分割し、前記機能ブロックからのデータ転送の必要の帯域に応じて、1回のラウンドロビン・サイクルの中で複数の前記部分転送を行うステップと、
（ｂ）前記機能ブロックからの複数の部分転送は異なる優先度を有し、異なる前記機能ブロックからの前記部分転送の交互の転送により、全ての前記機能ブロックからのデータ転送の必要帯域を満たすように、前記データ転送の部分転送の各々の優先度をプログラマブルに設定するステップと、  
（ｃ）前記プロセッサからの前記メモリへのアクセス回数が、最優先で所定の転送長（ＣＰＵ転送長）で前記部分転送間の所定の間隔において、前記機能ブロックからのデータフローの転送帯域への影響が小さくなるように、１回のラウンドロビン・サイクル中で上限を設けてプロセッサ・アクセスを行うステップと、を実行することを特徴とする。
【００２３】
更に上記の目的を達成する本発明は、メモリと、前記メモリとの間のデータフローを行う複数の機能ブロックと、前記メモリをメインメモリとして使用するプロセッサとを備える情報装置において、データフローのためのバッファとプロセッサのためのメインメモリとを共有化させるために、前記機能ブロック及び前記プロセッサのメモリアクセスを調停するプログラムである。このプログラムは、複数の前記機能ブロックからの前記メモリのアクセス要求を順にラウンドロビン方式で所定の転送長で割当て、
（ａ）前記機能ブロックからのデータ転送は、所定の転送長（部分転送長）で部分転送に分割し、前記機能ブロックからのデータ転送の必要の帯域に応じて、1回のラウンドロビン・サイクルの中で複数の前記部分転送を行うステップと、
（ｂ）前記機能ブロックからの複数の部分転送は異なる優先度を有し、異なる前記機能ブロックからの前記部分転送の交互の転送により、全ての前記機能ブロックからのデータ転送の必要帯域を満たすように、前記データ転送の部分転送の各々の優先度をプログラマブルに設定するステップと、  
（ｃ）前記プロセッサからの前記メモリへのアクセス回数が、最優先で所定の転送長（ＣＰＵ転送長）で前記部分転送間の所定の間隔において、前記機能ブロックからのデータフローの転送帯域への影響が小さくなるように、１回のラウンドロビン・サイクル中で上限を設けてプロセッサ・アクセスを行うステップとを前記プロセッサに実行させることを特徴とする。
【発明の効果】
【００２４】
以上のように本発明によれば、プロセッサと複数のデータフロー・ブロックとでのメモリ共有化により情報装置の小型化、及び省電力化ができる。同時に本発明により、データバッファ全ての必要データレートを満たしながら、ＣＰＵアクセスの遅延を最小化できるアーキテクチャーの提供が可能である。
【図面の簡単な説明】
【００２５】
【図１】ストレッジデバイスおけるＤＲＡＭメモリへの各転送ブロックからのアクセスを調停するアービタ動作をするＡＳＩＣとＣＰＵとを含む回路基板の構成を示す。
【図２】テープ記録装置の構成図を示す。
【図３】テープドライブのデータフロー制御などを行う回路構成（ＡＳＩＣ）を示す。
【図４】複数のセグメント（データセット）の生成のために各データ転送ブロックのパイプライン処理を示す。
【図５】テープドライブの従来のアービタのデータフロー転送の帯域の動作概念図を示す。
【図６】プロセッサとデータフローとで共有化されるＤＲＡＭメモリのアクセスの調停を行う本発明の実施例を示す。
【図７】転送順位を設定するプログラマブル・アービタの概念図を示す。
【図８】１つのステートマシンの各スロットの待ち状態、または、部分転送間の遷移時にＣＰＵアクセスを介在させる上位階層のスロットを示す。
【発明を実施するための形態】
【００２６】
以下において、テープ記録装置におけるデータフロー及びＣＰＵからのメモリアクセスについて本発明のアービタ装置を実現する、典型的な実施形態（以下「実施例」という）が説明される。これら実施例は、例示であり本発明のアービタ装置、方法およびプログラムを限定するものではない。
【００２７】
テープ記録装置（テープドライブ）には複数のアクセスブロックからのバッファへのアクセス要求があり、それぞれの必要帯域を確保する必要がある。ＡＳＩＣに含まれるアービター（バッファ調停機能）は、ラウンドロビン方式で実現される。本発明のアービタは以下の機能を有することで、上述の課題を解決する。
ａ．均一化したバースト転送長以下でアクセス要求を許可する。
ｂ．大きい帯域を必要とするアクセスには、１回のラウンドロビン・サイクルの中で複数回のアクセスを許可する。
ｃ．小さい帯域でよいアクセスには、１回のラウンドロビン・サイクルの中で最低１回のアクセスを許可する。
ｄ．ＣＰＵからのメインメモリアクセスは最も高い優先度でアクセスを許可するが、データフローの帯域を侵さないように１回のラウンドロビン・サイクル中のアクセス回数の上限を設ける。
【００２８】
機能aにより、高帯域なバースト転送を複数の転送に分割することによりＣＰＵアクセスの処理遅れ（レイテンシ）を小さくできる。複数のデータフローの機能ブロックからバースト転送（データ転送）を細かい転送長（部分転送長）に分割する。大きなデータ転送を分割したものを部分転送としてラウンドロビン・サイクルにおいて複数回に分けて転送することにより、機能ブロックの転送レートを保証できる。１つ機能ブロックのデータ転送を複数の部分転送に分割した場合、他の機能ブロックの複数の部分転送も存在する。本実施例のアービタ装置は、他の機能ブロックからの部分転送と関連付けて転送可能するために、１つ機能ブロックからの複数の部分転送に優先度をプログラム可能に割当可能にする。プログラマブルに優先度を適宜変更するのは、複数の機能ブロックからデータ転送のパフォーマンスを全体として保証するためである。
【００２９】
機能ａによりＣＰＵからのアクセス要求があるときにメインメモリアクセスのレイテンシを最小限にする。しかし、部分転送を小さくし過ぎると逆にデータ転送パフォーマンスを満たさない。機能ｂおよびｃにより、データバッファ転送にバッファアクセス側の帯域も満たす。本発明のアービタは、機能ｄによりＣＰＵからのメモリアクセス（ＣＰＵアクセス）は最優先で割当てる。そのアービタは、ＣＰＵアクセスについてデータ転送のための機能ブロックからのバッファアクセスに影響がない必要帯域、及び割当て回数を考える必要がある。
【００３０】
これらのデータ転送のバースト転送長（部分転送長）やＣＰＵアクセス回数などのパラメータは、必要帯域や許容レイテンシなどのシステムの要件によって最適解が異なる。機能ａ〜ｄにより、バス転送を複数の部分転送に変換し、複数の部分転送の遷移の合間においてＣＰＵアクセスをラウンドロビン・サイクルで所定の回数介在させる。常にＣＰＵアクセスを部分転送の終了毎に介在させると各機能ブロックからの転送パフォーマンスを維持できない。従って、ラウンドロビン・サイクルでのＣＰＵアクセスの回数は部分転送の大きさ、回数、及び機能ブロックのパフォーマンスを考慮する必要がある。テープドライブまたはその他のシステム要件によって以下の設定を変更できるプログラマブル・アービタを実現する。
【００３１】
１．ラウンドロビンにおける各アクセスの順番（優先度）の設定
同じブロックからの複数のアクセス要求を許可する場合は、それらの部分転送も含めてラウンドロビンにおける許可順（優先度）を設定する。
２．各アクセスの１回の転送で許可される最大バースト長（部分転送長）の設定
ＣＰＵアクセスに許されるレイテンシに応じて部分転送の最大バースト長を設定可能にする。
３．ＣＰＵアクセスの最大転送帯域の設定
ＣＰＵアクセスの転送帯域を大きくするとバッファアクセスに影響が出るため、その上限を設ける。
実施例を詳述する前に、その実施例を適用するテープドライブの機能について説明する。
【００３２】
図２は、テープドライブ１０の構成図を示す。テープドライブ１０は、インタフェース１１と、バッファ１２と、記録チャネル１３と、テープ２３と、ヘッド１４と、リール２１、２２と、カートリッジ２０と、モータ１５と、コントローラ１６と、ヘッド位置制御システム１７と、モータドライバ１８とを含む。インタフェース１１は、ホスト３０と通信を行う。
【００３３】
インタフェース１１は、ホスト１０からバッファ１２へ転送されるデータの書込みを指示するコマンド、バッファ１２のデータをテープ２３への書込みを指示するコマンドを受け取る。例えばインタフェース１１の通信の規格はＳＣＳＩまたはファイバーチャネル（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）である。
【００３４】
バッファ１２は、テープ２３に書き込むべきデータを蓄積するメモリである。バッファ１２は、固定長のセグメントで区切られる。ひとつのセグメントは、テープ２３上のひとつのデータセットに対応する。データセットは、Ｃ１パリティとＣ２パリティとからなる積符号が付加されたデータ構造である。データセット（ＤａｔａＳｅｔ）は、それが含む複数のレコード（データ）の区切れ情報などを属性情報としてＤＳＩＴ（Ｄａｔａ  Ｓｅｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔａｂｌｅ）に含む。コントローラ１６に含まれるＣＰＵがバッファ１２においてデータセットごとにＤＳＩＴを生成し、ＤＳＩＴは各データセットに含まれる。ＤＳＩＴの生成は、ＣＰＵが直接データバッファへアクセスしてファームウェアを実行してデータの管理情報を付加できることを意味する。
【００３５】
バッファ１２は、最後のセグメントまでデータを受け取り次は再び最初のセグメントからデータを受け取りはじめるという意味でリングバッファと呼ばれる。データは、任意の長さでホスト３０からドライブに転送される。また、固定長のデータをホストが転送したとしてもデータ圧縮が行われる場合には、データの長さがデータごとに異なる。これらの転送データは、順次バッファ１２のセグメントに順次蓄積される。記録チャネル１３は、いろいろな大きさのデータで充填されたセグメントのデータを、データセットとしてテープ媒体に書込む通信経路である。バッファ１２に蓄積されたデータは、セグメント毎にデータセットとして、テープ媒体に書込まれる。書込みのタイミングは、セグメントがデータにより完全に充填された場合である。
【００３６】
テープ２３は、データの記録手段としての記録媒体である。記録チャネル１３を介して渡されたデータをデータセットとしてヘッド１４によりテープ２３に書込まれる。テープ２３は、リール２１及び２２に巻かれ、これらの回転に伴い、リール２１からリール２３の方向へ、又は、その反対の方向へ、縦方向に移動する。カートリッジ２０は、テープ２３が巻きつけてあるリール２０を収容する容器である。２０と同じカートリッジにより、リール１４ｄを収容するものを設けてもよい。モータ１５は、リール２１及び２２を回転させる。
【００３７】
コントローラ１６は、テープドライブ１０の全体を制御する。コントローラ１６は、ホスト３０からインタフェース１１で受け付けたコマンドに従って、データのテープ２３への書込み読取りを制御する。また、コントローラは、ヘッド位置制御システム１７やモータドライバ１８の制御も行う。ヘッド位置制御システム１７は、所望のトラックを追跡する。ヘッド１４は、トラックを切り換える必要が生じると、ヘッド位置制御システム１７が、ヘッド１４を電気的に切り換えの制御を行う。モータドライバ１８は、直接コントローラ１６に接続されていてもよい。
【００３８】
図３は、テープドライブのデータフロー制御などを行う回路ブロック（機能ブロック）の構成（ＡＳＩＣ）を示す。コントローラ１６は、各種制御を行うプロセッサ８０、ファームウェアを保持するＦｌａｓｈＲＯＭ９０、バッファマネジャ４０、テープ転送７０、ホスト転送６０、Ｃ２ＥＣＣ計算機（エラー訂正）５０など機能ブロックを含む。テープ転送ブロック７０は、テープ２３および読書きヘッド１４を接続される。ホスト転送ブロック６０は、ホスト３０に接続される。コントローラ（ＡＳＩＣ）１６は、テープ媒体２３およびヘッド１４、ホスト３０および外部バッファ１２との関連を制御する。特にバッファマネジャ４０は、外部バッファ１２０と、テープ転送３０ブロック、ホスト転送６０ブロック、Ｃ２ＥＣＣ計算機ブロック５０及びプロセッサ８０との間メモリアクセスの仲介機能を有する。
【００３９】
例として、ホスト３０からデータ転送されテープ書込が行われるデータ転送フローを説明する。ホスト転送ブロック６０からのデータは、ホストから書込まれたデータをバッファマネージャ・ブロック４０を介して外部バッファ１２に一旦書き込まれる。バッファマネージャ・ブロック４０は、各機能ブロック５０、６０、７０から外部バッファのデータ転送のアクセスを高速にパイプライン処理で実効するために高帯域を必要とする。外部バッファは、例えばバス幅は４バイト又は８バイトを有するＤＤＲ２ＳＤＲＡＭ１２である。また、外部バッファ１２に書き込まれたデ−タは、Ｃ２ＥＣＣ計算機５０のＳＲＡＭに転送される。Ｃ２ＥＣＣ５０では、全てのデータのエラー訂正をし、訂正データをＤＤＲ  ＳＤＲＡＭ１２に書き戻す。データフロー・コントローラの機能として、バッファマネジャ４０は、各機能ブロック５０、６０、７０が効率よくＤＤＲ２ＳＤＲＡＭ１２をアクセスできるよう、時分割でバスを切り換えている。Ｃ２ＥＣＣ５０にとっては、ＤＤＲ２ＳＤＲＡＭ１２から読んだデータをＤＤＲ  ＳＤＲＡＭ１２に書き戻している構造上、処理時間の要求も厳しい。
【００４０】
各機能ブロックからデータ転送を均一的にパイプライン処理できるように、各ブロック転送のために帯域確保を確保することが必要である。ＣＰＵがホストやメディアの転送を制御すると、データは外部バッファに一時的に格納され、順次処理される。例えばホストからストレージデバイスへの書き込みの場合、ホストからのデータは最初に外部バッファに格納される。次にエラー訂正コード（以下ＥＣＣ)付加のため、外部バッファから読み出されＥＣＣ計算機に送られる。ＥＣＣ計算機で計算されたＥＣＣパリティは再び外部バッファへ格納される。その後、メディア側への転送のため再び外部バッファから読み出される。1回のＷｒｉｔｅまたはＲｅａｄ処理みに関してバッファマネジャは、複数の機能ブロックを介して外部バッファに対して複数回のアクセスを実行する。更にこれらの処理はパイプラインとなり、同時に複数のアクセス要求が外部バッファに発生する。
【００４１】
図４、複数のセグメント（データセット）の生成のために各データ転送ブロックのパイプライン処理を示す。各セグメント（セグメントＮ，Ｎ＋１，Ｎ＋２，Ｎ＋３，・・・）はデータセットを生成するデータフローである。各セグメントＮ、・・・は左から右へは時間軸があり、最初に「Ｈ」（ホスト）転送、「Ｄ」（ＤＳＩＴ作成）転送、「Ｅ」（Ｃ２ＥＣＣ）転送、「Ｔ」（テープ転送）の機能ブロックの順がバッファアクセスをおこない、１つのデータセットを生成する。複数のセグメント中のデータは、各ブロックのアクセス転送を図のようにパイプラインで処理する。それぞれの機能ブロックの転送は、図７において示されるパイプライン処理するプログラム可能なアービタ（Ｐｒｏｇｒａｍｍａｂｌｅ  ａｒｂｉｔｅｒ）のところで説明される。本実施例では、ホスト転送（Ｈ）は他の転送（Ｄ，Ｔ，Ｅ）に比べて高帯域転送であるので複数の部分転送に分割されて転送レートを保証する。ホスト転送（Ｈ）の部分転送のそれぞれに、他の転送（Ｔ，Ｄ，Ｅ）及びその部分転送の優先度を考慮して、優先度が割り振られる。
【００４２】
図５は、テープドライブの従来のアービタのデータフロー転送の帯域の動作概念図を示す。図４と同様に横軸は時間を示す。従来の構成で高い帯域の転送を必要とするブロックのアクセスには許可回数を多くすることで高帯域の要件を満たす。転送１と転送２は異なる世代のテープドライブのデータフォーマットであることを意味する。1つのテープドライブが２つのフォーマットを支持している。実際のアービタは全体の転送効率の観点から連続して同じ機能ブロックにアクセス許可されない。
【００４３】
図６は、プロセッサとデータフローとで共有化されるＤＲＡＭメモリのアクセスの調停を行う本発明の実施例を示す。図４と同様に横軸は時間を示す。ホスト転送６は、他の転送１，３，４，５に比べて高帯域転送であるので部分転送６に分割されても1サイクルに複数（例えば６つ）転送により転送レートを保証する。ホスト転送の部分転送６のそれぞれに、関連する他の転送（部分転送を含む）１，３，４，５の優先度を考慮して優先度が割り振られる。図６では、図５に示された転送２は省略されている。
【００４４】
また、箱“Ｃ”はＣＰＵアクセス（メインメモリアクセス）を示す。ＣＰＵからのアクセス要求が来ると、最優先に直ぐに実行される。1回のラウンドロビン・サイクルで７回のＣＰＵアクセスが与えられる。本発明が適用される情報装置のシステム要件によるが、仮に１サイクルで８以上のＣＰＵアクセスを与えると、転送１，３，４，５，６の処理が滞り各転送レートを満たさない可能性がある。ＣＰＵアクセスはＡＳＩＣにより実行されるファームウェア（図３のＲＯＭの内蔵）を実行する。ＣＰＵアクセスによりテープ記録装置の駆動のためのデータフロー、及び位置決め制御など各種の駆動処理が実行される。ＣＰＵアクセス要求が来たときに実行中の部分転送終了まで待たなければならない。しかし、１回の部分転送の最大バーストは部分転送長に制限されるので、ＣＰＵアクセスはそのバースト長以上のレイテンシは発生しない。従って、データフロー及びＣＰＵアクセスにおいてメモリ共有化を行っても、本発明を適用した情報装置は、ファームウェアの実行遅延はないためデータフロー、サーボなどの処理に影響は少ない。
【００４５】
１．プログラマブル・アービタ
図７は、転送順位（優先度）を設定するプログラマブル・アービタの概念図を示す。アービタはＮ個（この例ではＮ＝８)のステートマシンから成り、各ステートマシンにはＭ個（この例ではＭ＝３)のスロットがある。各ステートマシンの各スロットには、アクセスする任意の機能ブロックを指定することができる。また機能ブロックは、複数の部分転送を異なるステートマシン内の複数のスロットに指定できる。アービタは、アイドル時のステートマシンに待機させ（ｉｄｌｅ状態）、部分転送のアクセス要求が来たら優先度の高い順にステートマシン内のスロットに割り当てる。「空」は、スロットが待ち状態（ｉｄｌｅ状態）であることを意味する。
【００４６】
例えばアイドル時にテープ１とＥＣＣ１からアクセス要求が来た場合、高い優先度のＰＧ１ステートマシンにテープ１が指定されている。ＰＧ２に指定されたＥＣＣ１よりも先にテープ１転送を許可する。ＰＧ１のテープ１転送が終了すると、最高優先度のブロックはテープ２となる。テープ１とテープ２は異なる世代のテープドライブのデータフォーマットであることを意味する。1つのテープドライブが２つのフォーマットを支持している。ここでホストから要求が上がるとＥＣＣ１は要求を上げたままである。優先度は、１つ目のホスト転送の方がＥＣＣ１転送より高いため、ＰＧ１のホスト転送が実行される。ＰＧ１のホストが終了すると、最高優先度のブロックはＰＧ２の１つ目のスロットにあるＥＣＣ１転送となる。ここでＥＣＣ１転送は要求を上げたままであるので、ＥＣＣ１転送が実行される。このように、スロットに指定された機能ブロック（ホスト、テープ、ＥＣＣなど）は、優先度が変わりながら順番にアクセスが許可される。ステートマシンがＰＧ０まで１周すると１回のラウンドロビンとなる。この例ではホスト転送は高い帯域を満たすため、５個のスロットに設定されており、１回のラウンドロビンで５回のホスト転送を行う。
【００４７】
図８は、１つのステートマシン（各ＰＧ１−８）の各スロットの待ち状態（ｉｄｌｅ）、または、部分転送間の遷移時にＣＰＵアクセスを介在させる上位階層のスロットを示す。ＣＰＵアクセス以外の機能ブロックの転送は、ステートマシン（ＰＧ１−８）内のスロットに指定されて順番に転送を許可される。ＣＰＵアクセスは、開始済み転送の処理が終了することを前提として、これらのステートマシンのどの位置でも割り込むことができる。アービタは、Ｎ個のステートマシン（図７のＰＧ１−８）の転送中、ＣＰＵアクセスの要求が来るとＣＰＵアクセスの要求を挿入する。そのＣＰＵアクセス処理が終了した後に、アービタは、前と同じステートマシン内の次のスロットに制御を移す。以上のステートマシンの機構により、ラウンドロビンにおける各アクセスの順番（優先度）の設定がプログラマブルになり転送効率の高い部分転送の配置が可能となる。
【００４８】
２．プロセッサのメモリアクセス（ＣＰＵアクセス）帯域上限の設定
プログラマブル・アービタでは、ＣＰＵメインメモリアクセスは１回のラウンドロビン中にどこでも何回でも割り込むことができる。しかし、これに制限がないと他のアクセスブロックの帯域を侵すことになるので、各機能ブロックの必要転送帯域に応じて上限を設定する。ＣＰＵアクセス許可回数及びその転送帯域（ＣＰＵ転送長）は、それぞれの機能ブロックからの転送データ量（部分転送の数）とを比較して、プログラマブルに設定される。
【００４９】
図６の箱“Ｃ”の示す１つのＣＰＵアクセスのデータ転送単位は、ＣＰＵがＰｏｗｅｒＰＣ（ＰＰＣ４０５）の場合、４つの実行命令を含むキャシュラインのアクセスである。１回のＣＰＵアクセスはこのキャッシュラインの幅で決定される。ＣＰＵアクセスの1回のアクセスは、キャッシュライン・サイズで与える。例えばＣＰＵがＰｏｗｅｒＰＣ（ＰＰＣ４０５）は、キャッシュライン・サイズ＝３２バイトであるので、命令長は４バイトである。インテル製ＭＰＵでは、キャッシュライン・サイズ、６４バイトや１２８バイトなどがあるので、1回のＣＰＵアクセスはこれらのバイト数が要求される。ＰＰＣ４０５の場合は、1回のＣＰＵアクセスにおいて、キャッシュライン１つ分、即ち、８命令の実行が行われる（1命令は４バイト）。１回のＣＰＵアクセスが複数個のキャッシュラインの転送をまとめて行うことも可能であるが、複数のデータフローの帯域確保のため一定数以下に限度とされる。
【００５０】
３．データフローのバースト転送長（部分転送長）の設定
上記プログラマブル・アービタにより、各アクセスブロックは転送する優先権を獲得する。その後、ＤＲＡＭのコマンドを制御するＡＳＩＣコントローラ（バッファ・マネージャ）において、各転送の最大のバースト長まで転送を続けることができる。この長さが長い場合は、ＤＲＡＭ転送のオーバーヘッドを小さくできバス使用効率を上げることができる。しかし、ＣＰＵアクセス要求はその間待つ（レイテンシ）必要がある。このため、このレイテンシと必要転送帯域のバランスが重要となる。バースト長（部分転送長）を設定可能にすることにより、このバランスの最適解を調整することができる。
【００５１】
テープドライブ（ＬＴＯ第５世代：Ｌｉｎｅａｒ  Ｔａｐｅ  Ｏｐｅｎ）では、ホスト転送及びテープ転送共に２５６バイトとして、所定の転送長（部分転送長）の上限を与える。ホスト転送は速い（高帯域転送）ので、割り当て回数が多くすることにより要求される転送帯域を満たすことができる。所定の転送長を２５６バイトとするのは、外部バッファ（ＤＤＲ２ＳＤＲＡＭ）の３２バーストに相当するものである。バースト転送の転送単位がこの部分転送長よりも長いとＣＰＵアクセスのレイテンシによりドライブのパフォーマンス劣化に至る。一方、この部分転送長より小さいとホスト転送などに必要な帯域（転送レート）を満たさない。
【００５２】
バス転送の転送単位は、ＤＤＲ２ＳＤＲＡＭの転送にかかるクロック数から計算される。例えば、バス幅８バイトのＤＤＲ２ＳＤＲＡＭで２５６バイト転送を行い、必要なクロック数が２９クロックである場合を考える。ＣＰＵアクセスのレイテンシは、クロック周波数が２００ＭＨｚの場合（１クロックが５ナノ秒）は、２９×５ｎｓ＝１４５ｎｓとなる。ＣＰＵアクセスは、この時間待たされた後に転送を開始する。実際ＣＰＵ（ＰＰＣ４０５など）では、２８０ｎｓほど時間がかかることになる。バースト長が１２８バイトならばかかるクロック数２１クロックになり、ＣＰＵの待ち時間も２１×５ｎｓ＝１１０ｎｓである。バースト長が短いとオーバーヘッドが大きくなり、使用できる帯域が少なくなるため、必要なスピードが出ないためフォーマンスが劣化するという結果になる。
【００５３】
以上のテープドライブの実施例についてまとめると、各データフローの部分転送、及びＣＰアクセスの転送単位等は次のように与えられる。ＣＰＵアクセスについて、１回のアクセス転送長は３２バイトをラウンドロビン・サイクルで８回を上限としている。ホスト転送、テープ転送、及びＥＣＣ転送のそれぞれの部分転送長は、同じ２５６バイトを与える。ＤＳＩＴアクセスについては、低帯域のためその部分転送長は６４バイトである。また、ホスト転送の部分転送回数はインタフェースによるが、典型的には４回を与える。各機能ブロックからのデータフローの部分転送は、複数回割り当てる転送をいかにランダムに分散できるかが重要である。例えば、ホスト転送は４ないし５回実行されるが、割り当てスロットを均等に分散するとホスト転送レートと同時に他の機能ブロックの転送レートを満たすことができる。
【００５４】
以上の実施例は、テープドライブについて説明されたが、データフロー及びＣＰＵからのアクセスを共有化したメモリで実行する情報装置であれば本発明の適用範囲である。本発明によれば、ＣＰＵと複数のデータフロー・ブロックとでのメモリの共有化により、情報装置の小型化と省電力化ができる。同時に、本発明により、データバッファ全ての必要データレートを満たしながらＣＰＵの実行の遅延を最小にできる有利な効果を有する。
【符号の説明】
【００５５】
１０…テープドライブ、
１１…インタフェース
１２…バッファ、
１３…チャネル、
１４…ヘッド、
１５…モータ、
１６…コントローラ（ＡＳＩＣ）、
１７…ヘッド位置制御システム、
１８…モータドライバ
２０…カートリッジ
２１、２２…リール
３０…ホスト、
４０…バッファマネージャ・ブロック
５０…Ｃ２ＥＣＣ計算機
６０…ホスト転送ブロック
７０…テープ転送ブロック
８０…プロセッサ
９０…ファームウェア
【図１】
2011113119.tif 000003
【図２】
2011113119.tif 000004
【図３】
2011113119.tif 000005
【図４】
2011113119.tif 000006
【図５】
2011113119.tif 000007
【図６】
2011113119.tif 000008
【図７】
2011113119.tif 000009
【図８】
2011113119.tif 000010