JP2008217860A - 一連の処理を所定の順序で行うための処理システム、ストレージ装置、及び方法 - Google Patents

一連の処理を所定の順序で行うための処理システム、ストレージ装置、及び方法 Download PDF

Info

Publication number
JP2008217860A
JP2008217860A JP2007050772A JP2007050772A JP2008217860A JP 2008217860 A JP2008217860 A JP 2008217860A JP 2007050772 A JP2007050772 A JP 2007050772A JP 2007050772 A JP2007050772 A JP 2007050772A JP 2008217860 A JP2008217860 A JP 2008217860A
Authority
JP
Japan
Prior art keywords
processing
segment
unit
data
status
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.)
Granted
Application number
JP2007050772A
Other languages
English (en)
Other versions
JP4432088B2 (ja
Inventor
Hisato Matsuo
久人 松尾
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2007050772A priority Critical patent/JP4432088B2/ja
Priority to US12/039,412 priority patent/US8209693B2/en
Publication of JP2008217860A publication Critical patent/JP2008217860A/ja
Application granted granted Critical
Publication of JP4432088B2 publication Critical patent/JP4432088B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0682Tape device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】ハードウェア各ブロックの処理状況を少ない数のレジスタにより管理することが可能な技術を提供
【解決手段】処理システムは、処理システムに入力されるデータを入力順に処理単位でそれぞれ格納する複数のセグメントからなるバッファと、データに対し、一連の処理を所定の順序で施す複数の処理部と、複数の処理部にそれぞれ対応する複数の第1テーブルであって、対応する処理部による処理が終了した連続するアドレスの複数のセグメントのうち、先頭のセグメントを示す先頭情報、末尾のセグメントを示す末尾情報及び対応する前記処理部による処理が終了したセグメントの有無を示す存在情報をそれぞれ格納する複数の第1テーブルと、複数の第1テーブルにより保持される一連の処理の処理状況に基づき、一連の処理が所定の順序で行われるようにバッファと複数の処理部の間のデータ転送を管理する管理部とを含む。
【選択図】 図3

Description

本発明はシステムに入力されるデータに対し、一連の処理を所定の順序で行う方法に関し、特にバッファを構成する複数セグメントにそれぞれ格納される単位データについて、一連の処理の処理状況を管理する技術に関する。
テープドライブ等のストレージ装置では、ホスト装置からの入力データを所定の単位で記憶媒体に記録するまでに、単位データに対しID情報やエラー訂正コードの付加等の多数の処理を行う。一連の処理はハードウェアにより所定の順序で行われ、ハードウェアの各ブロックは処理の作業領域として共通のバッファを使用する。バッファは複数の領域(以下、セグメントという)からなるリングバッファとして使用され、各セグメントには単位データが格納される。各ブロックは独立して動作するが、それ自体で次のセグメントに対する処理の開始時を判断できるよう、それぞれの処理状況がレジスタにより管理されブロック間で共有される。
一連の処理を所定の順序で行う処理システムにおいて、複数の処理回路と複数のメモリを含むメモリ部との間のデータ転送をステート情報に基づいて管理する従来技術として、例えば特許文献1がある。特許文献1は、複数の処理回路とメモリ部の複数のメモリとのデータ経路を、所定のステート情報に応じて切り替え、パイプラインステージ間のデータの受け渡しを行う技術を開示する。ステート情報としては、複数の処理回路のうち少なくとも一つの処理回路の処理状況より遷移する情報が用いられる。
特開2005−78120
特許文献1において、複数の処理回路とメモリ部の複数のメモリとのデータ経路は、ある処理回路が、その1つ前のパイプラインステージである処理回路が1クロック前にデータ読出しまたはデータ書込みを行ったメモリをアクセスするよう形成される。従って特許文献1が開示するステート情報は、処理回路に対し次に処理すべきデータを格納するメモリを示すといえるが、しかしこれは個々の単位データに対する各処理回路の処理状況を提供するものではない。
そこで従来技術において、セグメントの単位データごとに各ブロックの処理状況をレジスタにより管理する方法が提案されている。ここで1セグメントに対するレジスタのサイズは、例えばハードウェア各ブロックの処理の終了を1ビットのフラグにより表すとすると、ブロック数に等しいビット数である。一方単位データごとに処理状況を管理するために必要となるレジスタ数は、バッファのセグメント数に等しい。そのためストレージ装置とホスト装置のそれぞれの転送レートの差を吸収するのに必要なバッファのサイズが大きくなるとセグメント数が増加し、それに比例して処理状況を管理するのに必要なレジスタ数も増加する。動作中のレジスタ数の増加は消費電力の増加につながる。また、レジスタ数が増加すると回路全体に占めるレジスタ回路の割合も増加する。
そこで本発明は、バッファを用いて一連の処理を所定の順序で行う場合において、バッファの容量が大きくセグメント数が増加しても、セグメントに格納される単位データごとのハードウェア各ブロックの処理状況を少ない数のレジスタにより管理することが可能な、処理システム、ストレージ装置及び方法を提供することを目的とする。
上記目的を達成する本発明は、次のような処理システムによって実現される。この処理システムは、処理システムに入力されるデータを入力順に処理単位でそれぞれ格納する複数のセグメントからなるバッファと、データに対し、一連の処理を所定の順序で施す複数の処理部と、複数の処理部にそれぞれ対応する複数の第1テーブルであって、対応する処理部による処理が終了した連続するアドレスの複数のセグメントのうち、先頭のセグメントを示す先頭情報、末尾のセグメントを示す末尾情報及び対応する処理部による処理が終了したセグメントの有無を示す存在情報をそれぞれ格納する複数の第1テーブルと、複数の第1テーブルにより保持される一連の処理の処理状況に基づき、一連の処理が所定の順序で行われるようにバッファと複数の処理部の間のデータ転送を管理する管理部とを含む。
好ましくは、処理システムは、セグメントを指定した一連の処理の処理状況の問い合わせに応答して、複数の第1テーブルを参照して指定されたセグメントに対する処理状況を生成するステータス生成部を含む。そして管理部は、複数の処理部のそれぞれについて、次に処理対象となるセグメントを指定してステータス生成部に処理状況を問い合わせ、当該処理状況が処理部の処理の開始条件を満たすか否かを判断することにより、バッファと複数の処理部の間のデータ転送を管理する。
更に好ましくは、管理部は、次に処理対象となるセグメントに対する処理状況が、開始条件を判断する対象の処理部による処理が終了しておらず、かつ1つ前の処理部による処理が終了していることを示すこと条件に、開始条件を判断する対象の処理部へ上記セグメントの単位データを転送する。
また好ましくは、管理部は、各処理部による処理の終了に応答して対応する第1テーブルを更新する。そして上記処理システムは、任意の第1テーブルの先頭情報により示される先頭のセグメントと末尾情報により示される末尾のセグメントの間に、対応する処理部による処理が未処理のセグメントが存在することになるような更新を検知しエラー信号を生成するアクセス制御部を含む。
更に好ましくは、上記アクセス制御部は、任意の第1テーブルの更新の前後で先頭情報及び末尾情報が変化しないような更新を検知しエラー信号を生成する。
好ましくは、前記バッファはリングバッファであり、上記処理システムは制御部を含む。そして制御部は、リングバッファのすべてのセグメントにデータが書き込まれる前に、複数の第1テーブルのそれぞれの先頭情報を、先頭のセグメントの1以上先のセグメントを示すように変更する。
上記目的を達成する本発明はまた、次のようなストレージ装置によって実現される。このストレージ装置は、データを所定の単位で書込み及び読出し可能な記憶媒体と、記憶媒体への書込み前及び記憶媒体からの読出し後に、所定の単位の単位データを書込み順又は読出し順にそれぞれ格納する複数のセグメントからなるバッファと、単位データに対し一連の処理を所定の順序で施す複数の処理部と、複数の処理部にそれぞれ対応する複数の第1テーブルであって、対応する処理部による処理が終了した連続するアドレスの複数のセグメントのうち、先頭のセグメントを示す先頭情報、末尾のセグメントを示す末尾情報及び対応する処理部による処理が終了したセグメントの有無を示す存在情報をそれぞれ格納する複数の第1テーブルと、複数の第1テーブルにより保持される一連の処理の処理状況に基づき、一連の処理が所定の順序で行われるようにバッファと複数の処理部の間のデータ転送を管理する管理部とを含む。
好ましくは、ストレージ装置は、セグメントを指定した一連の処理の処理状況の問い合わせに応答して、複数の第1テーブルを参照して指定されたセグメントに対する処理状況を生成するステータス生成部を含む。そして管理部は、複数の処理部のそれぞれについて、次に処理対象となるセグメントを指定してステータス生成部に処理状況を問い合わせ、当該処理状況が処理部の処理の開始条件を満たすか否かを判断することにより、バッファと複数の処理部の間のデータ転送を管理する。
好ましくは、上記ストレージ装置は、複数の処理部による処理が1つも終了していない連続するアドレスの複数のセグメントにおいて、先頭のセグメントを示す先頭情報、末尾のセグメントを示す末尾情報、及び複数の処理部による処理が1つも終了していないセグメントの有無を示す存在情報を格納する第2テーブルと、第2テーブルを参照して記憶媒体へのデータ書込み又はデータ読出しのスピードを調整する調整部と含む。
好ましくは、上記管理部は、バッファにデータを書き込む前にデータに行誤り訂正符号を付加するエンコーダと、当該行誤り訂正符号を付加する単位データであるコードワードを格納するエンコーダ用バッファと、記憶媒体に記憶されたコードワードに対しその途中から上書きを行う場合に、途中から上書きされるコードワードが当該コードワードを格納するリングバッファのあるセグメントからエンコーダ用バッファに転送されるまでの間信号を生成する上書きステートマシーンとを含む。そして上記ストレージ装置は、信号が生成されている間、ステータス生成部より出力される上書き処理のため初期化されたあるセグメントの処理状況をデータ読み出し用の処理状況でマスクするマスク部を含む。
以上、バッファを用いて一連の処理を所定の順序で実行する処理システム、またそのような処理システムを実装するストレージ装置として本発明を説明したが、本発明はそのような処理システム及びストレージ装置における方法、すなわちバッファの各セグメントに格納される単位データに対し一連の処理を所定の順序で行うための方法として把握することもできる。
本発明によれば、単位データに対する各処理回路の処理状況を提供するために、一連の処理を行う複数の処理部の数に等しいレジスタを用意すればよく、セグメント数に等しい数のレジスタを用意する必要がない。その結果、リングバッファの容量が増えセグメント数が増加しても、レジスタ数の増加による消費電力の増加や、回路全体に占めるレジスタ回路の割合の増加の問題がなくなる。
以下、本発明を実施するための最良の形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
以下では、Linear Tape Open(LTO)規格に従うテープドライブを例に本発明を説明する。なお、LTO規格とは、Hewlett−Packard社、IBM 社、Seagate Technology社の3社が共同で開発したオープンフォーマットの規格である。そこで本発明の具体的な説明に入る前に、図1及び図2を参照して、LTOテープドライブにおけるデータ書込み前の一連の処理と、従来のセグメント数に等しい数のレジスタを用いた一連の処理の処理状況の管理方法について説明する。
LTOテープドライブにおけるデータ書込み前の処理は、ホスト装置からのデータをLTOテープドライブで扱う単位データであるデータセットに加工するバッグエンドの処理と、データセットを実際にテープに書き込むビットストリームに変調するフロントエンドの処理とに分けられる。ここでは、バックエンドにおける一連の処理を説明する。
図1は、一連の処理の各ステージにおけるデータのフォーマットを示す。ホスト装置からユーザデータが送られるとまず、ユーザデータに対しエラー訂正コード(以下、CRCという)が計算されユーザデータに付加される(図1のA参照)。その後CRCが付加されたユーザデータに対し圧縮処理が施される(図1のB参照)。圧縮されたデータはLTOテープドライブで扱う単位のデータにまとめられ、バッファに格納される(図1のC参照)。なおLTOテープドライブでは、データはデータセットと呼ばれる単位でテープ媒体に記録される。そのためバッファはデータセットのサイズ、すなわち約2メガバイトの大きさのセグメントに分けられリングバッファとして使用される。
次に各セグメントのデータに対し、DataSet InformationTable(DSIT)と呼ばれる、データセットの内容を示す情報が作成され、対応するデータと同じセグメントに格納される(図1のD参照)。なお、DSITはデータセット番号やそれに含まれるユーザデータの数など様々な情報を含んでいるので、DSITの作成はハードウェアを直接管理するマイクロコードまたはファームウェアにより行われる。最後にDSITが付加されデータに対し、誤り訂正符号(以下、ECCという)が計算され付加される(図1のE参照)。この時点でデータセットが完成する。その後完成したデータセットはフロントエンドに送られる。
図2(a)は、セグメント数に等しい数のレジスタを用いた従来の一連の処理の処理状況の管理方法を示す。ここでは1つのセグメントに対し4ビット幅のレジスタを用意し、4つの処理それぞれの終了ステータスを保持する。4つの処理とは、1.ホスト装置から送信されたデータを処理単位にまとめてバッファに格納するまでの処理、2.DSITを作成しデータに付加する処理、3.ECCを計算しデータに付加する処理、そして4.完成したデータセットをテープに記録するためフロントエンドへ転送する処理である。
図2(b)に、4つの処理に対するビットの割り当てを示す。左端のビット(MSB)から順に、1のホスト転送、2のDSIT付加、3のECC付加、4のテープ転送が割り当てられる。各ビットは初期状態で0であり、対応する処理が終了するとハードウェアにより1にセットされる。但し、2のDSIT付加についてはマイクロコードによりビットのセットがなされる。全てのビットがセットされたレジスタは、対応するセグメントに新しくデータが書き込まれる前にマイクロコードによりクリアされる。
図2(a)では、上記1から4の処理がリングバッファのセグメントNに格納されるデータセットから順に行われている。全ての処理が終了しているセグメントNとセグメントN+1に対応する各レジスタは、全てのビットが1にセットされている。セグメントN+2は3のECC付加まで処理が終了しており、従って対応するレジスタは最上位ビットからビット1まで1がセットされている。他のセグメントについても同様、対応するセグメントに対し一連の処理がどこまで終了したかを示すようにレジスタの各ビットがセットされている。
このように、一連の処理の各ステージの処理状況をセグメントごと管理するために、従来はセグメント数に等しい数のレジスタが必要とされた。そこで本発明は同じ情報をより少ない数のレジスタで管理することを目的とする。上述したように一連の処理はセグメントNからセグメントN+5まで順に行われる。そのため各セグメントのレジスタを同じ処理についてみてみると、対応するビットは連続して変化している。
例えば2のDSIT付加の処理についてみると、対応するレジスタのビット2は、セグメントNからセグメントN+3まで連続1であり、セグメントN+4からセグメント+5まで連続0である。3のECC付加の処理についても、対応するレジスタのビット1は、セグメントNからセグメントN+2まで連続1であり、セグメントN+3からセグメント+5まで連続0である。従ってフラグが立っている先頭のセグメントと末尾のセグメントの情報を保持すれば、一連の処理の各ステージの処理状況をセグメントごと管理する場合と同じ内容の情報を得ることができることが分かる。従来のセグメントごとのレジスタに代わる本発明の新しいレジスタの詳細は図4を参照して後述する。
図3は、本発明の第1実施形態に係る、一連の処理を所定の順序で実行する処理システム100の構成の一例を示す。本実施形態では一連の処理の共通の作業領域としてリングバッファを用いる。処理システム100は、リングバッファ105、管理部110、処理システム100に入力されるデータに対し一連の処理を所定の順序で行う、第1処理部145、第2処理部150、第3処理部165及び第4処理部170、仮想リングバッファ・ステータス・レジスタ(以下、VRBSRという)175を含む。本実施形態に係る処理システム100はストレージ装置に実装されるものとし、図3には更にストレージ装置全体を制御する制御部160と、記憶媒体140を示す。ここでストレージ装置はLTOテープドライブであるとして一連の処理を4つの処理部による処理により構成する。しかし、処理部の数はこの分野の当業者に明らかなように4つに制限されない。
なおLTOテープドライブ605は、図22に示すように、SCSIインターフェース、ファイバーチャネル、SAS等のインターフェースを介してホスト装置630に接続される。また、LTOテープドライブ605とホスト装置630とは、専用線またはインターネット等のネットワーク620を介して接続されてもよい。なお、LTOテープドライブ605は、SCSIインターフェース等の通信インターフェースによってパーソナルコンピュータ等の情報処理装置に接続され、情報処理装置を介してネットワーク620に接続されてもよい。
このような処理システム100においてデータは、データ書込み時は、ホスト装置から送信されLTOテープドライブにおいて受信された後、リングバッファ105を作業領域として使用する第1処理部145、第2処理部150、第3処理部165、及び第4処理部170による処理をこの順に経て最終的に記憶媒体140に記録される。また、データ読出し時は、データは記憶媒体140から読み出され、リングバッファ105を作業領域として使用する上記複数の処理部による処理を、書込み時とは逆の順に経て最終的にホスト装置へ送信される。
第1処理部145は通信インターフェース146と圧縮部148を含む。データ書込み時において、通信インターフェース146はホスト装置からユーザデータを受信し、CRCを付加した後ユーザデータを圧縮部148へ送る。そして圧縮部148は、CRCが付加されたユーザデータを圧縮し、リングバッファ105に格納するため、圧縮したデータを管理部110へ送る。データ読出し時において、圧縮部148は管理部110を介してリングバッファ105から転送された圧縮データを伸張し、通信インターフェース146へ送る。そして通信インターフェース146は、圧縮部148からデータを受け取り、CRCチェック後ユーザデータをホスト装置へ送信する。
第2処理部150はデータ書込み時においてDSIT作成部として機能し、管理部110を介してリングバッファ105から読み出された処理単位のデータに対しDSITを作成する。作成されたDSITは管理部110を介して対応するデータが格納されるリングバッファ105のセグメントに追加される。また第2処理部150はデータ読出し時において、管理部110を介してリングバッファ105のセグメントから転送されるデータに付加されているDSITをチェックする。上述したようにDSITの処理は、ハードウェアとして実現される第1処理部145、第3処理部165及び第4処理部170と異なり、マイクロコードにより行われる。すなわち、第2処理部150は、後述するLTOテープドライブ全体を制御する制御部160に含まれ、制御部160が提供する機能として実現される。
第3処理部165は、データ書込み時においてECC計算部として機能し、管理部110を介してリングバッファ105から読み出された、第2処理部150による処理が終了したデータに対してECCを計算する。計算されたECCは管理部110を介して対応するデータが格納されるリングバッファ105のセグメントに追加される。また第3処理部165はデータ読出し時において、管理部110を介してリングバッファ105のセグメントから転送されるデータに付加されているECCを用いてエラー訂正を行う。エラー訂正後のデータは、再び管理部110を介してリングバッファ105の対応するセグメントに格納される。
第4処理部170は、データ書込み時において変調部として機能し、管理部110を介してリングバッファ105から読み出された、第3処理部165による処理が終了したデータセットを、記憶媒体140に書き込むビットストリームに変調する。また第4処理部170はデータ読出し時において、記憶媒体140からデータを読み出し、リングバッファ105に格納する。
記憶媒体140は、本実施形態ではLTO規格のテープ媒体であり、第4処理部170から送られたデータをデータセットと呼ばれる単位で記録する。データセットはデータ領域とDSITの2つの領域からなり、ホスト装置から送られるユーザデータはデータ領域に格納される。リングバッファ105は、処理単位にまとめられたユーザデータを入力順にそれぞれ格納する複数のセグメントからなる。リングバッファ105はユーザデータをデータセットに加工するまでの作業領域として使用されるため、各セグメントはデータセットと同じ約2メガバイトのサイズをもつ。
VRBSR175は、リングバッファ105のセグメントごと一連の処理の各段階の処理状況を管理する。より詳細には、VRBSR175は、複数の処理部(145、150、165、170)にそれぞれ対応する複数の第1テーブル(181、182、183、184)を含む。第1テーブルの各々は、対応する処理部による処理が終了した連続するアドレスの複数のセグメントのうち、先頭のセグメントを示す先頭情報、末尾のセグメントを示す末尾情報及び対応する処理部による処理が終了したセグメントの有無を示す存在情報をそれぞれ格納する。
図4(a)は、図2(a)に示す一連の処理の処理状況を表す複数の第1テーブルの一例を示す。図4の第1テーブル181は第1処理部145に、第1テーブル182は第2処理部150に、第1テーブル183は第3処理部165に、第1テーブル184は第1処理部170にそれぞれ対応する。図2(a)においてNを3とすると、1.ホスト転送に相当する第1処理部145による処理はセグメント3からセグメント8まで終了している。従って第1テーブル171は、先頭情報としてセグメント3の識別情報、末尾情報としてセグメント8の識別情報、及び値1の存在情報を格納する。識別情報としては、セグメントのインデックスやアドレスを指すポインタを使用できる。また存在情報は、対応する処理部による処理が終了したセグメントが1つでも存在すれば1がセットされ、そうでなければ0がセットされる。
また2.DSIT付加に相当する第2処理部150による処理はセグメント3からセグメント6まで終了している。従って第1テーブル182は、先頭情報としてセグメント3の識別情報、末尾情報としてセグメント6の識別情報、及び値1の存在情報を格納する。第1テーブル183、第1テーブル184についても同様にして値が設定される。比較しやすいよう、図4(b)に、従来の一連の処理の処理状況の管理方法によるセグメント数に等しいレジスタを示した。ここでは理解容易なように、セグメントはセグメント0からセグメント9まで10個存在するものとしている。
VRBSR175はまた、複数の処理部(145、150、165、170)による処理が1つも終了していない連続するアドレスの複数のセグメントにおいて、先頭のセグメントを示す先頭情報、末尾のセグメントを示す末尾情報、及び複数の処理部による処理が1つも終了していないセグメントの有無を示す存在情報を格納する第2テーブル185を含む。図4(c)は、図4(b)に示す一連の処理の処理状況における第2テーブルの一例を示す。図4(b)では、一連の処理は9から2のセグメントに対しまだ開始されておらず、従って第2テーブルの先頭情報はセグメント9、末尾情報はセグメント2、存在情報は1となる。なお存在情報は、一連の処理が開始されていないセグメントが1つでも存在すれば1がセットされ、そうでなければ0がセットされる。
VRBSR175はまた、アクセス制御部190を含む。アクセス制御部190は、任意の第1テーブル(181、182、183又は184)の先頭情報により示される先頭のセグメントと末尾情報により示される末尾のセグメントの間に、対応する処理部(145、150、165又は170)による処理が未処理のセグメントが存在することになるような更新を検知しエラー信号を生成する。アクセス制御部190はまた、任意の第1テーブル(181、182、183又は184)の更新の前後で先頭情報及び末尾情報が変化しないような更新を検知しエラー信号を生成する。なお、エラー信号の生成方法の詳細は図8乃至図11を参照して後述する。
VRBSR175は更に、セグメント・ステータス生成部192を含む。セグメント・ステータス生成部192は、対象セグメントを指定した管理部110からの処理状況の問い合わせに応答して、複数の第1テーブル(181、182、183、184)を参照して指定されたセグメントについての一連の処理の処理状況を生成する。生成された処理状況は管理部110へ返される。
一例として管理部110へ返される処理状況は3ビットの信号からなり、各ビットはそれぞれ対象ステージ、及びその前後のステージによる処理が終了したか否かを示す。対象ステージの1つ後のステージに関する処理状況が含まれるのは、データ書込み時と読出し時では一連の処理の処理方向が逆になるからである。例えばあるステージのデータ書込み時における1つ後のステージは、データ読出し時においては1つ前のステージとなる。なお、処理状況の生成方法の詳細は図7を参照して後述する。
VRBSR175は更にまた、ポインタビュー・レジスタ194とセグメントビュー・レジスタ196とを含む。これは後述する制御部160により一連の処理全体を制御するためアクセスされるレジスタである。ポインタビュー・レジスタ194は、処理部ごと処理状況を示すビューを提供し、複数の第1テーブル(181,182,183,184)及び第2テーブル185のそれぞれと同じ内容を保持する5つのレジスタからなる。
図5に示す表の下段に、セグメント数を1024個とした場合のポインタビュー・レジスタ194の一例を示す。レジスタVRBSREは第1テーブル181に、レジスタVRBSRMは第1テーブル182に、レジスタVRBSRCは第1テーブル183に、レジスタVRBSRIは第1テーブル184に、レジスタVRBSRZは第2テーブル185にそれぞれ対応する。第1テーブルに対応する各レジスタは、ビット0からビット9の10ビットに末尾情報、ビット16からビット25の10ビットに先頭情報、ビット31の1ビットに存在情報を保持する。また、第2テーブル185に対応するレジスタは、ビット0からビット10の11ビットに、初期ステータスをもつセグメントの数、すなわち複数の処理部(145、150、165、170)による処理が1つも終了していないセグメントの数、ビット31の1ビットに存在情報を保持する。このように第2テーブル185に対応するレジスタは第2テーブル185と一対一に対応させる必要はなく、その場合実装が容易になる。
セグメントビュー・レジスタ196は、セグメントごと一連の処理の処理状況を示すビューを提供し、回路規模に影響を与えない程度の数の複数のレジスタからなる。セグメントビュー・レジスタ196により一度に処理状況が提供される複数のセグメントの集まりを1ウィンドウと呼ぶことにする。制御部160は、ウィンドウを適宜切り替えて目的のセグメントの処理状況を示すレジスタをアクセスする。ウィンドウの指定はレジスタによりなされ、制御部160がそのレジスタにアクセスを希望するウィンドウを設定すると、設定されたレジスタの値は、セグメント・ステータス生成部192に対して指定されるセグメントのアドレスの一部となる。
図5に示す表の上段に、セグメント数を1024個とした場合のセグメントビュー・レジスタ196の一例を示す。セグメントビュー・レジスタ196は2バイト幅の8つのレジスタからなり、2個のセグメントに対し1つのレジスタが割り当てられる。従ってこの例では1ウィンドウで16個のセグメントの処理状況を確認できる。そして、制御部160がウィンドウを指定するために設定したレジスタの値は、セグメント・ステータス生成部192に対して指定されるセグメントのアドレスの上位6ビットとなる。各レジスタは、ビット0からビット7の1バイトを1つのセグメントに、またビット8からビット15の1バイトを他のセグメントに割り当てる。そして各バイトのビット0からビット4の4ビットに、複数の処理部(145、150、165、170)による処理の終了ステータスがそれぞれ保持される。なお1ウィンドウに含まれる複数のレジスタは必ずしも同時に更新される必要はなく、ある1つのレジスタのみ更新されてよい。またレジスタは、当該レジスタに割り当てられる2個のセグメントをアクセスするようにアクセスすることも、または片方の1個のセグメントにアクセスするようにアクセスすることもできる。
制御部160は目的に適したビューを使用して一連の処理の処理状況を読み出し、または変更する。例えば、ある処理について複数のセグメントの処理状況をクリアする場合、制御部160はポインタビュー・レジスタ194をアクセスする。また、あるセグメントについて一連の処理の処理状況をクリアする場合、制御部160はセグメントビュー・レジスタ196をアクセスする。このように本実施形態では一連の処理の処理状況について制御部160に対し2種類のビューを用意する。
管理部110は、複数の第1テーブルにより保持される一連の処理の処理状況に基づき、一連の処理が所定の順序で行われるようにリングバッファ105と複数の処理部(145、165、170)の間のデータ転送を管理する。データ転送は、複数の処理部のそれぞれについて、次に処理対象となるセグメントの一連の処理の処理状況をセグメント・ステータス生成部192に問い合わせ、当該処理状況がその処理部の処理の開始条件を満たすか否かを判断することによりなされる。より具体的には、管理部110は、次に処理対象となるセグメントに対する処理状況が、開始条件を判断する対象の処理部による処理が終了しておらず、かつその1つ前の処理部による処理が終了していることを示すこと条件に、開始条件を判断する対象の処理部へ次に処理対象となるセグメントの単位データを転送する。
そこで管理部110は、一連の処理を所定の順序で行う複数の処理部のそれぞれについて、次に処理対象となるセグメントを示すカウンタ(第1カウンタ112、第2カウンタ120、第3カウンタ122、第4カウンタ130)、処理部の処理の開始条件をカウンタが示すセグメントに対する一連の処理の処理状況が満たすか否かを判断する開始判断部(第1開始判断部114、第3開始判断部124、第4開始判断部132)、リングバッファ105と処理部との間のデータ転送を行う転送部(第1データ転送部116、第2データ転送部121、第3データ転送部126、第4データ転送部134)、及びデータ転送処理後対応する第1テーブル(181、183、184)を更新する更新部(第1更新部118、第3更新部128、第4更新部136)を含む。
なお第2処理部150はLTOテープドライブ全体を制御する制御部160に含まれ、制御部160が提供する機能として実現されるため、リングバッファ105と第2処理部150の間のデータ転送は基本的に制御部160により管理される。従って第2処理部150に対する開始判断部(第2開始判断部152)、更新部(第2更新部156)は制御部160に含まれ、カウンタ(第2カウンタ120)及び第2データ転送部121のみが管理部110に含まれる。
データ書込み時における管理部110のデータ転送管理方法を、リングバッファ105と第3処理部165の間のデータ転送を例として具体的に説明する。まず、第3カウンタ122の値がVRBSR175へ送られ、セグメント・ステータス生成部192により受け取られる。このとき複数の第1テーブルは図4(a)に示す状態にあるとする。詳細は後述するがセグメント・ステータス生成部192は、複数の第1テーブル(181、182、183、184)を参照して第3カウンタ122の値が示すセグメント(ここではセグメント6とする)の一連の処理の処理状況を生成する。
セグメント6に対する処理は、第1処理部145と第2処理部150による処理が終了しており、第3処理部165と第4処理部170による処理はまだなされていない(図4(a)、及び図4(b)の番号405参照)。そこでセグメント・ステータス生成部192により一連の処理の処理状況として最終的に3ビット信号“100”が生成され、管理部110へ返される。3ビット信号は、左端のビットから順に、第2処理部150、第3処理部165、第4処理部170に対応する。第3開始判断部124は、受け取ったセグメント6に対する処理状況“100”が、第3処理部165による処理の開始条件を満たすかどうか、すなわち、第3処理部165による処理が終了しておらず、かつ第2処理部150による処理が終了していることを示すかどうか判断する。条件が満たされていない場合、第3開始判断部124は、条件を満たす信号を待ち続ける。
受け取った3ビット信号は、第2処理部150に対応する左端のビットのみが値1となっているので条件を満たしており、従って第3開始判断部124はデータ転送の開始を第3データ転送部126に伝える。第3データ転送部126は、リングバッファ105からセグメント6の単位データを読み出し第3処理部165へ転送する。そして第3更新部128は、データ転送を待って第1テーブル183を更新する。本実施の形態では、第3更新部128はセグメント6による第1テーブル183の更新をVRBSR175にリクエストし、実際の更新はアクセス制御部190が行う。また、データ転送後、第3カウンタの値は次のセグメントを示すようインクリメントされる。
なお、上記ではデータ書込み時の一連の処理を例に説明したため、第3開始判断部124において、処理状況を示す3ビット信号のうち第4処理部に対応する右端のビットは無視された。しかしデータ読み出し時の一連の処理では、第3処理部165の1つ前のステージは第4処理部170となり、一連の処理の処理状況を示す3ビット信号のうち第2処理部に対応する左端のビットが無視される。
制御部160により管理されるリングバッファ105と第2処理部150の間のデータ転送の方法も基本的に管理部110による方法と同じである。但し、制御部160による場合、セグメント・ステータス生成部192により生成される、第2カウンタ120が示すセグメントの一連の処理の処理状況は、セグメントビュー・レジスタ196に書き込まれる。従って制御部160は、第2カウンタ120が示すセグメントに対応するセグメントビュー・レジスタ196のレジスタ値を読み出し第2開始判断部152へ伝える必要がある。
また、第2更新部156による第1テーブル182の更新は、ポインタビュー・レジスタ194を介して行われる。すなわち、第2更新部156はアクセス制御部190が更新するように第1テーブル182に対応するポインタビュー・レジスタ194を更新する。更新されたポインタビュー・レジスタ194の内容は即座に第1テーブル182に反映される。
制御部160は、処理システム100を含むストレージ装置全体を制御する。制御部160は、第2処理部150、第2開始判断部152、第2更新部156を含み、これらについては上述したとおりである。制御部160は更に初期化部158を含む。初期化部158は、リングバッファ105のすべてのセグメントにデータが書き込まれる前に、一例として、リングバッファ105がFULLになる数個前のセグメントに対しデータが書き込まれると、複数の第1テーブル(181、182、183、184)のそれぞれの先頭情報を、先頭のセグメントの次のセグメントを示すように変更する。これにより、データ転送が中断することがなくなり、かつリングバッファを最大限有効に使用することができる。初期化部158に対するFULLの通知は一例としてステータスレジスタを用いて行うことができる。
図4に示す一連の処理の処理状況を例にデータ書込み時における初期化部158の処理を説明する。ここで図4(a)及び(b)に示すように、データはセグメント3から順に書き込まれ最後にデータが書き込まれるセグメントをセグメント2とする。この場合、リングバッファ105のすべてのセグメント3乃至セグメント2にデータが書き込まれる前に、先頭情報をセグメント3からセグメント4に変更する。その結果、図4(b)に斜線で示すセグメント3に対する一連の処理の処理状況は0に初期化され、セグメント3に対しデータ上書きが可能となる。なお、先頭情報は、先頭のセグメントの次のセグメントではなく、先頭セグメントの2個先、又は3個先のセグメント等、数個先のセグメントを指すように変更してもよい。
制御部160はまた、第2テーブル185を参照して記憶媒体140への又はからのデータ書込み及びデータ読出しのスピードを調整する調整部159を含む。通常ストレージ装置には、ホスト装置とストレージ装置のそれぞれのデータ転送速度をみてストレージ装置すなわち記憶媒体140のデータ転送速度を調整する機能がある。上述したように第2テーブル185は、一連の処理が開始されていない連続するアドレスの複数のセグメントにおいて、先頭のセグメントを示す先頭情報、末尾のセグメントを示す末尾情報を格納する。そこで本発明に係る制御部160は、第2テーブル185を参照して一連の処理が開始されていない残りのセグメント数とそのリングバッファ105上の位置とに基づき、記憶媒体140のデータ転送速度をより細かく調整する。なお、制御部160の他の機能については当業者に良く知られており、本発明に直接関係しないため説明を省略する。
次に、図6乃至図8のフローチャートを参照して、本実施形態に係る処理システム100のデータ書込み時の動作を説明する。図6(a)は第1処理部145に対する管理部110のデータ書込み時の処理の流れを示す。処理はステップ100で開始し、管理部110は、ホスト装置から送られてきたユーザデータを第1処理部145から受け取る。管理部110は、受け取ったユーザデータを処理単位にまとめ、リングバッファ105のセグメントに順次格納する(ステップ105)。次に管理部110は、データを格納したセグメントの識別情報を用いて第1処理部145に対応する第1テーブル181を更新する(ステップ110)。なお、上述したように本実施形態では管理部110は更新をVRBSTにリクエストし、実際の更新はアクセス制御部190によりなされる。
図6(b)は、第3処理部165及び第4処理部170に対する管理部110のデータ書込み時の処理、または第2処理部150に対する制御部160のデータ書込み時の処理の流れを示す。ここでは第3処理部165に対する管理部110の処理として図6(b)のフローチャートを説明する。処理はステップ120で開始し、管理部110は、第3カウンタ122の値をVBRSR175へ送り、次のセグメントに対する一連の処理の処理状況を問い合わせる。VBRSR175から次のセグメントに対する処理状況を受け取ると、管理部110は次のセグメントに対し第3処理部165による処理を開始することが可能か否か判断する(ステップ125)。ステップ125のNOの場合、処理は120へ戻り条件を満たす処理状況を待ち続ける。
一方ステップ125でYESの場合、管理部110は、第3カウンタ122が示すバッファリング105の次のセグメントから単位データを読出し第3処理部165へ転送する(ステップ130)。データを転送後、管理部110は第3カウンタ122の値を用いて第3テーブル183を更新する(ステップ135)。そして第3処理部165において処理が終了し処理結果が送られると、管理部110は受け取った処理結果を第3カウンタ122が示すセグメントに格納し追加する(ステップ140)。最後に管理部110は第3カウンタ122を次のセグメントを示すようにインクリメントする(ステップ145)。
なお、第4処理部170に対する管理部110の処理の場合、ステップ140は存在しない。これは、第4処理部170はデータ書込み時において一連の処理の最後の処理であるからである。また第2処理部150に対する制御部160の処理では、次のセグメントに対する一連の処理の処理状況は、上述したように対応するセグメントビュー・レジスタ196から読み出される。
図7は、VBRSR175のセグメント・ステータス生成部192のデータ書込み時の処理の流れを示す。処理はステップ150で開始し、セグメント・ステータス生成部192は、管理部110からカウンタの値Nが送られ一連の処理の処理状況の問い合わせを受けると、受け取った情報から対象セグメント(segment(N))と対象ステージの情報を取得する。次にセグメント・ステータス生成部192は、各ステージについて処理状況を示す1ビットを設定するために以下のステップ160からステップ210までの処理を、複数の第1テーブルのそれぞれについて並列に行う。なお1ビットの値0は処理が終了していないことを示し、値1は処理が終了していることを示すものとする。
最初に第1テーブルから存在情報の値EXISTが取得される(ステップ160)。そして値EXISTが0であるか否か判断される(ステップ165)。値EXISTが0の場合(ステップ165:YES)、対応するビットが0にセットされる(ステップ170)。これは、存在情報が0を示すということは、現在対象とするステージの処理が終了したセグメントが存在しないことを意味するからである。
一方ステップ165でNOの場合、先ほどの第1テーブルから先頭情報(segment(B))と末尾情報(segment(E))を取得する(ステップ175)。そしてリングバッファ105上、処理が終了している先頭のセグメント(segment(B))と末尾のセグメント(segment(E))の間に対象セグメント(segment(N))が位置するかどうかを、次のようにして判断する。
まず値Bが値E以下であるか否か判断する(ステップ180)。ステップ180でYESの場合、次にNがB以上かつE以下であるか否か判断する(ステップ185)。ステップ185でYESの場合、対象セグメント(segment(N))は先頭のセグメント(segment(B))と末尾のセグメント(segment(E))の間に含まれるので、対応ビットを1にセットする(ステップ190)。一方値Nが値B以上かつ値E以下でない場合(ステップ185:NO)、対象セグメント(segment(N))は処理が終了しているセグメントの範囲に含まれないので、対応ビットを0にセットする(ステップ195)。
一方値Bが値Eより大きい場合(ステップ180:NO)、次に値Nが値Eより大きくかつBより小さいか否か判断する(ステップ200)。ステップ200でNOの場合、対象セグメント(segment(N))は先頭のセグメント(segment(B))と末尾のセグメント(segment(E))の間に含まれるので、対応ビットを1にセットする(ステップ205)。一方ステップ200でYESの場合、対象セグメント(segment(N))は処理が終了しているセグメントの範囲に含まれないので、対応ビットを0にセットする(ステップ210)。
ステップ170、190、195、205、又は210から処理はステップ215へ進み、セグメント・ステータス生成部192は、対象ステージの1つ前のステージに対応するビットを左端のビットとして、対象ステージに対応するビット、対象ステージの1つ後のステージに対応するビットを順次結合する。そしてセグメント・ステータス生成部192は、生成した3ビット信号を処理状況として管理部110へ返し(ステップ220)、処理は終了する。
なお、上記では管理部110のカウンタにより1つのセグメントを指定された場合のセグメント・ステータス生成部192の処理の流れを説明した。しかし制御部160によりウィンドウを指定されて複数のセグメントの処理状況を求める場合も、セグメント・ステータス生成部192の処理の流れは同じである。すなわちこの場合は複数のセグメントについて図7を参照して説明した処理が並列に実行される。
図8は、管理部110の任意の更新部(第1更新部118、第3更新部128、第4更新部136)に対するアクセス制御部190のデータ書込み時の処理の流れを示す。処理はステップ240で開始し、アクセス制御部190は管理部110の任意の更新部から、更新対象の第1テーブル情報とセグメント情報(segment(N))を取得する。アクセス制御部190は、更新対象の第1テーブルから存在情報(値EXIST)を取得し(ステップ245)、処理が終了したセグメントが存在するかどうか、すなわち値EXISTが0に等しいか否か判断する(ステップ250)。ステップ250でYESの場合、処理が終了したセグメントは存在しないので、アクセス制御部190は存在情報に1をセットし(ステップ255)、更新対象の第1テーブルの先頭情報と末尾情報をsegment(N)で更新する(ステップ260)。
図9に、任意の処理部についてのセグメントの処理状況(図9(a))と、その処理部に対応する更新前後の第1テーブル(図9(b)、(c))を示す。図8(a)において、「-」は処理が終わっていないセグメントであること、「B」は処理が終わった先頭セグメントであること、「×」は処理が終わったセグメントであること、「E」は処理が終わった末尾のセグメントであること、斜線は新たに処理が終わったセグメントであることを示す。
図9において、最初に処理が終わったセグメントについて第1テーブルを更新するケースはケース1として示されている。図9(a)のケース1をみると、セグメント2について新たに処理が終わっている。更新前は処理が終了したセグメントはまだ存在しないため、図9(b) のケース1の存在情報は0となっている。更新後はセグメント2の処理が終了しているため図9(c)のケース1の先頭情報と末尾情報はセグメント2を示し、存在情報も1となっている。
図8(a)のステップ250に戻って、一方値EXISTが1の場合、これは処理が終了したセグメントが存在することを示すので、リクエストされた第1テーブルの更新が第1テーブルを不連続とするような、又は上書きするような更新でないことを確認する必要がある。そこで値EXISTが1に等しい場合(ステップ250:NO)、アクセス制御部190は、更新対象の第1テーブルから先頭情報(segment(B))を取得する(ステップ265)。そしてアクセス制御部190は、リングバッファ上segment(N)がsegment(B)よりも1つ前に位置するかどうか、すなわち値Nが値B−1に等しいか否か判断する(ステップ270)。値Nが値B−1に等しい場合(ステップ270:YES)、アクセス制御部190は、更新対象の第1テーブルの先頭情報をsegment(N)で更新する(ステップ275)。
図9において、処理が終わったセグメントが存在する場合に新たに処理が終了したセグメントについて第1テーブルを更新する第1のケースがケース2として示されている。図9(a)のケース2では、セグメント1について新たに処理が終わっている。更新前はセグメント2からセグメント5まで処理が終了しているため、図9(b) のケース2の先頭情報は2、末尾情報は5を示し、存在情報は1となっている。更新後はセグメント1の処理が新たに終了するため図9(c)のケース2の先頭情報は1に更新されている。なおケース2は、リングバッファ上セグメントが順次処理されている限り起こりえないケースである。しかしケース2において第1テーブルはセグメントが連続して変化するように更新されるため本実施形態ではこのような更新も許可している。
図8に戻りステップ270でNOの場合、アクセス制御部190は、更新対象の第1テーブルから末尾情報(segment(E))を取得する(ステップ280)。そしてアクセス制御部190は、リングバッファ上segment(N)がsegment(B)よりも1つ後ろに位置するかどうか、すなわち値Nが値E+1に等しいか否か判断する(ステップ285)。ステップ285でYESの場合、アクセス制御部190は、更新対象の第1テーブルの末尾情報をsegment(N)で更新する(ステップ290)。
図9において、処理が終わったセグメントが存在する場合に新たに処理が終了したセグメントについて第1テーブルを更新する第2のケースがケース3として示されている。図9(a)のケース3では、セグメント6に対し新たに処理が終わっている。更新前はセグメント2からセグメント5まで処理が終了しているため、図9(b) のケース3の先頭情報は2、末尾情報は5を示し、存在情報は1となっている。更新後はセグメント6の処理が新たに終了するため図9(c)のケース3の末尾情報は6に更新されている。なおケース3は最も起こりえる通常のケースである。
図8に戻りステップ260、ステップ275、又はステップ290から処理はステップ292へ進み、
アクセス制御部190は他の第1テーブルを確認して、当該更新がsegment(N)について最初の更新であるかどうか、すなわちsegment(N)について他の処理部による処理が終了しているか否か判断する。ステップ292でYESの場合、アクセス制御部190は第2テーブル185をsegment(N)で更新する(ステップ294)。ステップ292でNOの場合又はステップ292の後処理は終了する。
一方ステップ285でNOの場合、すなわち値Nが値E+1に等しくない場合、アクセス制御部190はエラー信号を生成する(ステップ296)。これは、リクエストされた第1テーブルの更新が、処理が終了したセグメントが不連続に並ぶような、又は既に終了したセグメントを上書きするような更新であるからである。その後処理は終了する。なおエラー信号は、インターラプトまたはステータスレジスタとして制御部160へ伝えられる。
図9において、処理が終わったセグメントが存在する場合に新たに処理が終了したセグメントについて第1テーブルを更新する第3のケースがケース4及びケース5として示されている。図9(a)のケース4では、セグメント0(又はセグメント7)に対し新たに処理が終わっている。更新前はセグメント2からセグメント5まで処理が終了しているため、図9(b) のケース4の先頭情報は2、末尾情報は5を示し、存在情報は1となっている。ここで、先頭情報をセグメント0で更新すると、実際は処理が終了していないセグメント1を処理が終了したセグメントとして示してしまう。同様に末尾情報をセグメント7で更新すると、実際は処理が終了していないセグメント6を処理が終了したセグメントとして示してしまう。そのためケース4では第1テーブルの更新は許可されない。
また図9(a)に示すようにケース5では、セグメント2(又はセグメント3、4、5のいずれか)に対し新たに処理が終わっている。更新前はセグメント2からセグメント5まで処理が終了しているため、図9(b) のケース5の先頭情報は2、末尾情報は5を示し、存在情報は1となっている。ここで、更新を許可すると、見かけ上第1テーブルは変化せず処理が終了したセグメントは連続して並んだままであるが、セグメント2(又はセグメント3、4、5のいずれか)に対するデータの上書きを許可してしまうことになる。そのためケース5では第1テーブルの更新は許可されない。但し第1テーブルにおける処理済のセグメントに対する上書きが、リングバッファ105のセグメントに対するデータの上書きとなるのは、シーケンスを必ず守る必要があるハードウェアに対してのみ当てはまることである。従って、制御部160による第1テーブルの更新については、ケース5の場合を許可する構成としてもよい。
図10(a)は、セグメントビュー・レジスタ196を使用して特定のセグメントの終了ステータスをクリアする制御部160の処理の流れを示す。処理はステップ300で開始し、制御部160は一連の処理の処理状況をクリアすべきセグメントを含むウィンドウを指定する。そして目的のセグメントに対応するセグメントビュー・レジスタ196をアクセスし、全ビットに0を設定する(ステップ305)。その後処理は終了する。
図10(b)は、セグメントビュー・レジスタ196を使用して第1テーブルをクリアするアクセス制御部190の処理の流れを示す。図10(b)に示すフローチャートは図10(a)のフローチャートに続くものである。処理はステップ310で開始し、アクセス制御部190はまず、クリアされたセグメントビュー・レジスタ196に対応するセグメント情報(segment(N))を取得する。segment(N)は新たに一連の処理が開始されていないセグメントとなるため、アクセス制御部190は第2テーブル185をsegment(N)で更新する(ステップ312)。次にアクセス制御部190は、複数の第1テーブル(181、182、183、184)の各々について以下のステップ315からステップ360までの処理を並列に行う。
ステップ315においてアクセス制御部190は、第1テーブルから先頭情報(segment(B))と末尾情報(segment(E))を取得する。そしてアクセス制御部190は、segment(N)、segment(B)、segment(E)がみな同一セグメントであるか否か判断し(ステップ320)、ステータスをクリアしようとするセグメントが、当該第1テーブルにおいて終了ステータスをもつ唯一のセグメントであるかどうかを確認する。ステップ320でYESの場合、アクセス制御部190は、第1テーブルの存在情報(EXESIT)に0をセットする(ステップ325)。そしてアクセス制御部190は、第1テーブルの先頭情報と末尾情報に0をセットしクリアする(ステップ330)。その後処理は終了する。
図11に、任意の処理部についてのセグメントの処理状況(図11(a))と、その処理部に対応する更新前後の第1テーブル(図11(b)、(c))を示す。図11(a)において、「-」は処理が終わっていないセグメントであること、「B」は処理が終わった先頭セグメントであること、「×」は処理が終わったセグメントであること、「E」は処理が終わった末尾のセグメントであること、斜線は終了ステータスをクリアすべきセグメントであることを示す。
図11において、ステータスをクリアしようとするセグメントが、終了ステータスをもつ唯一のセグメントであるケースはケース1として示されている。図11(a)のケース1をみると、セグメント2がステータスをクリアしようとするセグメントである。更新前は処理が終了したセグメントはセグメント2だけであるため、図11(b) のケース1の先頭情報と末尾情報はどちらもセグメント2を示している。更新後はセグメント2の終了ステータスがクリアされるため図11(c)のケース1の先頭情報と末尾情報は0を示し、存在情報も0となっている。
図10(b)に戻ってステップ320でNOの場合、アクセス制御部190はsegment(N)がsegment(B)に等しいか否か判断する(ステップ335)。NがBに等しい場合(ステップ335:YES)、アクセス制御部190は、第1テーブルの先頭情報にsegment(B+1)をセットする(ステップ340)。その後処理は終了する。NがBに等しくない場合(ステップ335:NO)、アクセス制御部190はsegment(N)がsegment(E)に等しいか否か判断する(ステップ345)。NがEに等しい場合(ステップ345:YES)、アクセス制御部190は、第1テーブルの末尾情報にsegment(E−1)をセットする(ステップ350)。その後処理は終了する。
図11において、ステータスをクリアしようとするセグメントが、終了ステータスをもつ連続するセグメントのうち先頭セグメントであるケースはケース2として示されている。図11(a)のケース2をみると、セグメント2がステータスをクリアしようとするセグメントである。更新前はセグメント2からセグメント5まで処理が終了しているため、図11(b) のケース2の先頭情報は2、末尾情報は5を示し、存在情報は1となっている。更新後はセグメント2の終了ステータスがクリアされるため図11(c)のケース2の先頭情報は3に更新されている。
また図11において、ステータスをクリアしようとするセグメントが、終了ステータスをもつ連続するセグメントのうち末尾セグメントである場合はケース3として示されている。図11(a)のケース3をみると、セグメント5がステータスをクリアしようとするセグメントである。更新前はセグメント2からセグメント5まで処理が終了しているため、図11(b) のケース3の先頭情報は2、末尾情報は5を示し、存在情報は1となっている。更新後はセグメント5の終了ステータスがクリアされるため図11(c)のケース3の末尾情報は4に更新されている。
図10(b)に戻ってステップ345でNOの場合、アクセス制御部190はNがBより小さいか又はNがEより大きいか、すなわち、segment(N)がsegment(B)からsegment(E)の範囲外であるか否か判断する(ステップ355)。範囲外である場合(ステップ355:YES)、segment(N)はもともと終了ステータスをもっていないため、アクセス制御部190は当該テーブルに対し何ら処理を行わない。一方ステップ355でNOの場合、アクセス制御部190はエラー信号を生成する(ステップ360)。これは、セグメントビュー・レジスタ196を介してリクエストされた第1テーブルの更新が、処理が終了したセグメントが不連続に並ぶような更新であるからである。その後処理は終了する。なお、エラー信号は、インターラプトまたはステータスレジスタとして制御部160へ伝えられる。
図11において、ステータスをクリアしようとするセグメントが、終了ステータスをもたないセグメントである場合はケース4として示されている。図11(a)のケース4をみると、セグメント0(又は1、6、7のいずれか)がステータスをクリアしようとするセグメントである。更新前はセグメント2からセグメント5まで処理が終了しているため、図11(b) のケース4の先頭情報は2、末尾情報は5を示し、存在情報は1となっている。ケース4では第1テーブルの更新は行われないため、図11(c)のケース3は図11(b)のケース3と変わりない。
また図11において、ステータスをクリアしようとするセグメントが、終了ステータスをもつ連続するセグメントの途中のセグメントである場合はケース5として示されている。図11(a)のケース5をみると、セグメント4がステータスをクリアしようとするセグメントである。更新前はセグメント2からセグメント5まで処理が終了しているため、図11(b) のケース5の先頭情報は2、末尾情報は5を示し、存在情報は1となっている。ここでセグメント4の終了ステータスのクリアを許可すると、終了ステータスをもつセグメントが不連続に並ぶことになるため、ケース5では第1テーブルの更新は許可されない。
図12は、ポインタビュー・レジスタ194を使用して特定の第1テーブルの終了ステータスをクリアする制御部160の処理の流れを示す。処理はステップ400で開始し、制御部160は初期化を希望する第1テーブルの内容と同じ内容を保持するポインタビュー・レジスタ194から、先頭情報と末尾情報を取得する(ステップ400)。そして制御部160は終了ステータスをクリアしようとする1以上のセグメントが、現在終了ステータスをもつセグメント全てであるか否か判断する(ステップ410)。ステップ410でYESの場合、制御部160は先頭情報、末尾情報及び存在情報のすべてに0をセットする(ステップ420)。
一方終了ステータスをもつセグメントの一部をクリアしようする場合(ステップ410:NO)、制御部160はまずクリアしようとする1以上のセグメントが、現在終了ステータスをもつセグメントの先頭部分であるか否か判断する(ステップ425)。ステップ425でYESの場合、制御部160は先頭情報を更新して、終了ステータスをもつ先頭部分のセグメントのステータスをクリアする(ステップ430)。
一方クリアしようとするセグメントが現在終了ステータスをもつセグメントの先頭部分でない場合(ステップ425:NO)、制御部160は更にクリアしようとする1以上のセグメントが、現在終了ステータスをもつセグメントの末尾部分であるか否か判断する(ステップ435)。ステップ435でYESの場合、制御部160は末尾情報を更新して、終了ステータスをもつ末尾部分のセグメントのステータスをクリアする(ステップ440)。
ステップ420、430又は440から処理はステップ445へ進み、制御部160は終了ステータスをクリアしたセグメントについて、更新した第1テーブルが終了ステータスをもつ唯一の第1テーブルであったか否か判断する。ステップ445でYESの場合、制御部160は、第2テーブルに対応するポインタビュー・レジスタ194を更新する(ステップ450)。ステップ435またはステップ445でNOの場合、またステップ450の後処理は終了する。なお、更新されたポインタビュー・レジスタ194の値は、対応する第1テーブル及び第2テーブルに即座に反映される。
図13は、初期化部158による処理の流れを示す。上述したように初期化部158はリングバッファ105のすべてのセグメントにデータが書き込まれる前に、終了ステータスをもつ先頭セグメントのステータスをクリアしてリングバッファ105がFULLになるのを防ぐ。処理はステップ500で開始し、初期化部158はもうすぐリングバッファ105がFULLになることを知らせる通知を受け取る。FULLの通知は一例として、末尾情報がさすセグメントの2個先のセグメントが、先頭情報がさすセグメントになるときをハードウェアにより検知し、信号を出すことによりなされる。通知に応答して初期化部158は、第1テーブルに対応するポインタビュー・レジスタ194から先頭情報を保持するレジスタの値(segment(B))を読み出す(ステップ505)。
そして初期化部158は、読み出したレジスタの値をsegment(B+1)で更新し、先頭情報が先頭セグメントの次のセグメントを示すように変更する(ステップ510)。次に初期化部158は先頭情報を変更した第1テーブルが最後の第1テーブルか否か、すなわち先頭情報を変更していない第1テーブルが他に残っていないか確認する(ステップ515)。ステップ515でNOの場合処理はステップ505に戻る。一方第1テーブルの対応する全てのポインタビュー・レジスタ194について処理を終えた場合(ステップ515:YES)、初期化部158は、第2テーブル185に対応するポインタビュー・レジスタ194を更新する(ステップ520)。そして処理は終了する。なお先頭情報は先頭セグメントの数個先のセグメントを示すよう変更してもよい。
次に、本発明の第2実施形態に係る処理システムを含むストレージ装置を説明する。第2実施形態に係る処理システムは、第1実施形態に係る処理システムに新たな機能を追加したものである。追加される機能は、データの途中から上書きを行う場合に起こりえる、第1テーブルの終了ステータスの不連続を防ぐためのものである。そこでまず始めに上書き処理の際に起こりえる第1テーブルの終了ステータスの不連続について図14及び図15を参照して説明する。
図14は上書き処理を行う場合に終了ステータスが不連続となる場合の一例を示す。上述したように本願発明の初期化部158は、リングバッファ105がFULLになる前に、複数の第1テーブルのそれぞれの先頭情報を、先頭のセグメントの次のセグメント又は数個先のセグメントを示すように変更し、先頭部分のいくつかのセグメントのステータスをクリアする。図14(a)は、直前の書込み又は読み出し処理によりセグメントN−2までデータが転送されてリングバッファ105がFULLに近くなり、そのためセグメントN−1及びセグメントNのステータスがクリアされた状態を示す。
ここでセグメントN−2へのデータ転送により書込み又は読み出し処理が終了し、次に上書きが行われるとする。上書きを行う場合、ホスト装置はストレージ装置に上書きのための位置合わせ(Locate)コマンドを送信する。Locateコマンドを受信したストレージ装置の制御部160は、リングバッファ105上で上書き位置を探し、上書き処理を行う。上書き位置として例えばセグメントNが決定されると、新たに書込み処理を開始するためセグメントN+1以降のステータスが初期化される(図14(b)参照)。ところが、理由は図15を参照して後述するが、上書きの開始位置によってはセグメントNのステータスを一時的に図14(c)に示すように変更しなければならない。しかし図14(c)をみるとわかるように、このようなセグメントNのステータスの変更は、一時的であれ終了ステータスの不連続をもたらす。
ところでストレージ装置では、ホスト装置から送信されたデータをリングバッファ105に格納する前にECCを付加しデータを保護することが多い。図15(a)に、2次元のECCで保護されるデータを示す。データはm行×n列に配列され、行方向には行誤り訂正符号(以下C1ECCと呼ぶ)が、列方向には列誤り訂正符号(以下、C2ECCと呼ぶ)が付加される。ところが上書き処理は上述したようにリングバッファ105上で行われるため、リングバッファ105に格納される前に付加されるC1ECCとの関係で上書きの開始位置が問題となる。なお、C2ECCの計算は、上述した第3処理部165により上書き処理後に行われるため問題ない。
上書き開始位置が、C1ECCが付加される単位データ(以下C1ECCコードワードと呼ぶ)420の先頭である場合(図15(a)の番号425参照)、C1ECCは上書きデータのみを用いて計算すればよいので問題ない。しかし上書き開始位置がC1ECCコードワード430の途中である場合(図15(a)の番号435参照)、本来であればC1ECCは上書き開始位置までの既存のデータとそれ以降の上書きデータとを用いて計算するべきであるが、上述したようにC1ECCの計算及び付加は上書き処理の前に行われる。その結果C1ECCの不整合がおきる。
そこでこのようなC1ECCの不整合を防ぐために、上書き開始位置がC1ECCコードワードの途中となる場合は次のような処理を行う。すなわち、本来データの上書きは書き込みの一種であるが、図15(b)に示すように上書き開始位置を含むC1ECCコードワード430を一旦読み出し方向445に戻し、C1ECCエンコーダ440の手前SRAMに読み出す。そして図15(c)に示すように、SRAM上で第1処理部(図3参照)から管理部455へ送られたデータを用いてC1ECCコードワード430に対し上書き処理を行う。C1ECCエンコーダ440には上書き処理後のC1ECCコードワード460を入力する。このように途中に上書き開始位置をもつC1ECCコードワードについてはC1ECCを計算しなおすことでC1ECCの不整合を防ぐ。
ところでリングバッファ450に格納されているC1ECCコードワード430を、一旦C1ECCエンコーダ440手前のSRAMまで読み戻すためには、C1ECCコードワード430を含むセグメントの終了ステータスを第4処理部170、第3処理部165、第2処理部150(各々図3参照)について立てる必要がある。これは一連の処理の処理状況を示すステータスによってハードウェアの動きが制御されるからである。そのため、図14を参照して説明した状況において、上書きの開始位置がセグメントNに含まれるC1ECCコードワードの途中であるような場合は、セグメントNのステータスを一時的に「0000」から「0111」に変更する必要がある。しかしこの変更は、上述したように終了ステータスの不連続をもたらす。そこで本発明の第2実施形態に係る処理システムは、このような終了ステータスの不連続をなくすための新たな機能を追加する。
図16は、本発明の第2実施形態に係る処理システム500の構成の一例を示す。上述したように
第2実施形態に係る処理システム500は、第1実施形態に係る処理システム100に新たな機能を提供する構成要素を追加したものである。そこで図16には新規に追加した構成要素とその構成要素に直接関係する構成要素のみを示した。説明もこれらについてのみ行う。なお同じ構成要素であっても図16では図3また図15とは異なる番号を付けた。第2実施形態に係る処理システム500の管理部510は、更にC1エンコーダ525と、C1エンコーダ用バッファ530と、上書きステートマシーン520とを含む。また第2実施形態に係る処理システム500の管理部510は、VRBSR535は、マスク部555を更に含む。
C1エンコーダ525は、第1処理部(図3参照)による処理を経て管理部510へ送られるホスト装置からのデータをリングバッファ505に格納する前に、データにC1ECCを付加する。C1エンコーダ用バッファ530は、第1処理部(図3参照)とC1エンコーダ525の間に位置し、C1ECCを付加する単位データであるコードワードを格納する。コードワードの途中からデータを上書きする場合、上書き開始位置を含むコードワードは、一旦リングバッファ505からC1エンコーダ用バッファ530へ読み戻され、C1エンコーダ用バッファ530上でホスト装置から送信された新しいデータを用いて上書き処理される。
上書きステートマシーン520は、記憶媒体(図3参照)に記憶されたデータに上書きを行う場合であって、上書き開始位置がコードワードの途中となる場合に、上書き開始位置を含むコードワードが当該コードワードを格納するリングバッファ505のあるセグメントからC1エンコーダ用バッファ530に転送されるまでの間、上記あるセグメントのステータスをマスクするためのSet_Mask信号を生成する。マスク部555は、Set_Mask信号が生成されている間、セグメント・ステータス生成部550により出力される上書き処理のため初期化された上記あるセグメントのステータスを、データ読み出し用のステータスでマスクする。なお、上書き開始位置がコードワードの先頭であるかどうかの判断は、第1カウンタ512が現在示しているセグメントに対し、リングバッファのアドレスに基づいてなされる。
上書きステートマシーン520はまた、マスク部555によるステータスの変更により上書き開始位置を含むコードワードがC1エンコーダ用バッファ530へ読み戻されると、上記あるセグメントのステータスを元に戻すClear_Mask信号を生成する。マスク部555は、Clear_Mask信号に応答してステータスのMaskを解除する。Maskが解除されると、セグメント・ステータス生成部550により出力される初期化された書込み用のステータスに基づき、上書き開始位置を含むコードワードに対し上書き処理が開始される。
図17は、上述した上書きステートマシーン520の各状態とその遷移を示す。Q0の「アイドル」状態は、上書きステートマシーン520の通常の状態である。上書き処理以外の処理が行われている場合、または上書き処理が行われている場合であっても上書き開始位置がコードワードの先頭であるときは、上書きステートマシーン520はこの状態にある。
上書き処理が開始され、かつ上書き開始位置がコードワードの途中となる場合、上書きステートマシーン520はQ0からQ1の「読出し方向切り替え」状態へ遷移する。Q1状態の上書きステートマシーン520は、管理部510の内部ロジックの方向を書込みから読み出し方向に切り替えると同時に、第1カウンタ512が現在示しているセグメントに対し、ステータスを読み出し用のステータスでマスクするためのSet_Mask信号を生成する。
図18(a)に、上書きステートマシーン520がQ1の状態にあるときの処理システム500の一部を示す。上書きは書き込みの一種であるため上書き処理が開始されると、複数の第1テーブルは、上書き開始位置以降のデータを含むセグメントのステータスを初期化するように更新される。そのため複数の第1テーブルに基づいてステータスを生成するセグメント・ステータス生成部550は、第1カウンタ512が示すセグメントに対し“0000”のステータスを生成する。
一方、上書きステートマシーン520が生成するSet_Mask信号は、VRBSR535のマスク部555に入力される。マスク部555はSet_Mask信号に応答して、第1カウンタ512が示すセグメントに対し、読み出し用のステータス、“0111”を生成する。そしてマスク部555はセグメント・ステータス生成部550により生成されたステータス“0000”を、読み出し用のステータス“0111”でマスクする。
ここで読み出し用のステータス、“0111”について説明する。この4ビット信号は左端ビットから順に、図3に示す第1処理部、第2処理部、第3処理部、第4処理部の処理のステータスを割り当てられている。値1は処理が終了していることを、値0はまだ処理が終了していないことを示す。第1実施形態の説明で上述したように、次のセグメントに対する各処理部の処理の開始条件は、次のセグメントについてそれ自体の処理は終了しておらず、かつその1つ前の処理部による処理が終了していることである。開始条件が満たされたときに次のセグメントの単位データはその処理部へ転送される。従って読み出し用のステータス“0111”は第1処理部の開始条件を満たし、リングバッファ505から第1処理部への、従ってリングバッファ505からC1エンコーダ用バッファ530へのデータ転送が開始される。
図17に戻って、上書きステートマシーン520はQ1状態から無条件でQ2の「読出し処理開始」状態へ遷移し、その後Q3の「読出し終了待ち」状態へ遷移する。上書きステートマシーン520がQ2状態になると、上書き開始位置を含むコードワードのC1エンコーダ用バッファ530への転送が開始され、上書きステートマシーン520はQ3状態へ遷移して上書き開始位置を含むコードワードの転送が終了するのを待つ。
転送が完了すると、上書きステートマシーン520はQ4の「書込み方向切り替え」状態へ遷移する。Q4状態の上書きステートマシーン520は、管理部510の内部ロジックの方向を元の書込み方向に切り替えると同時に、第1カウンタ512が現在示しているセグメントに対し、ステータスを元の書込み用のステータスに戻すためのClear_Mask信号を生成する。
図18(b)に、上書きステートマシーン520がQ4の状態にあるときの処理システム500の一部を示す。上書きステートマシーン520が生成するClear_Mask信号は、VRBSR535のマスク部555に入力される。マスク部555はClear_Mask信号に応答して、セグメント・ステータス生成部550により生成されたステータス“0000”のマスクを解除する。
図17に戻って、上書きステートマシーン520はQ4状態から無条件でQ5の「上書き開始位置設定」状態へ遷移し、その後上書きステートマシーン520はQ6の「書込み処理開始」状態へ遷移する。上書きステートマシーン520がQ5状態になると、リングバッファ505上の上書き開始位置であるアドレスがC1エンコーダ用バッファ530にコピーされ、C1エンコーダ用バッファ530に対し上書き開始位置がセットされる。その後上書きステートマシーン520がQ6状態へ遷移すると、セグメント・ステータス生成部550により出力される初期化された書込み用のステータス“0000”に基づき、上書き開始位置を含むコードワードに対し上書き処理が開始される。最後に上書きステートマシーン520はQ6状態から無条件でQ0の「アイドル」状態へ戻る。
次に、本発明に係る処理システム100の実装例を図19乃至図21を参照して説明する。図19は、一連の処理を行う複数の処理部を除いた処理システム100の実装例を示す。図19において、データバッファはリングバッファに対応し、バッファ・マネージャ(BMG)は管理部に対応する。管理部の第1カウンタ、第1開始判断部、第1データ転送部及び第1更新部はホスト側回路として実現され、同様に、第3カウンタ、第3開始判断部、第3データ転送部及び第3更新部はECC側回路、第4カウンタ、第4開始判断部、第4データ転送部及び第4更新部はテープ側回路として実現される。また、第2カウンタ及び第2データ転送部はMPUインターフェース部として実現される。BMGの各回路及びMPUインターフェース部は内部に処理対象である現在のセグメントを指すポインタをもつ。
VRBSRの複数の第1テーブル及び第2テーブル、セグメント・ステータス生成部、マスク部は、それぞれテーブル回路、RBSR選択回路、マスク回路として実現される。またVRBSRのアクセス制御部は、テーブルアクセス制御部としてハードウェアとソフトウェアの協働により実現される。更にポインタビュー・レジスタ及びセグメントビュー・レジスタは、複数のレジスタにより実現される。
図19において矢印はデータの流れを示す。BMGの各回路の現在のセグメントを指すポインタは、それぞれRBSR選択回路へ入力される。RBSR選択回路はテーブル回路からの信号に基づき、入力された現在のセグメントに対するステータスを求め、BMGの各回路へ返す。BMGの各回路は受け取ったステータスに基づき、現在のセグメントの単位データの転送開始の可不可を判断する。単位データの転送が完了するとBMGの各回路は、現在のセグメントを指すポインタと完了を知らせる信号とをテーブルアクセス制御部へ入力する。テーブルアクセス制御部はBMGの各回路から受け取った完了の通知により現在のセグメントについてテーブルを更新することが適当であるか判断する。テーブルアクセス制御部は適切と判断した場合は、テーブル回路へ更新情報を入力する。一方不適切と判断した場合は、テーブルアクセス制御部はエラー信号を生成する。
制御部に対応するMPUは、MPUインターフェースを介して現在のセグメントのポインタの値を読み出し、その値に対応するセグメントビューのレジスタ値を読み取ることにより、現在のセグメントのステータスを得る。そして取得したステータスに基づき、MPUは現在のセグメントの単位データの転送開始の可不可を判断する。現在のセグメントの単位データの転送が完了すると、MPUはポインタビュー・レジスタを介してテーブル回路へ更新情報を入力する。なお、セグメントビュー・レジスタの値は、MPUがウィンドウ用レジスタ(図示しない)にウィンドウを指定するとその値がウィンドウに含まれる複数のセグメントを指すアドレスの一部としてRBSR選択回路に伝えられ、RBSR選択回路により設定される。設定されたセグメントビュー・レジスタの値は、MPUより読み出され、または変更される
図20は、図19に示すVRBSRのより詳細な実装例を示す。テーブル回路は、複数の第1テーブルにそれぞれ対応する、ホスト回路、DSIT回路、ECC回路、TAPE回路と、第2テーブルに対応するゼロ回路とからなる。ホスト回路、ECC回路、TAPE回路はテーブルアクセス制御部を介してそれぞれホスト側回路、ECC側回路、テープ側回路から信号を入力される。またホスト回路、DSIT回路、ECC回路、TAPE回路、ゼロ回路の全ての回路は、ステータスを読み出しまた書き込むためにポインタビュー・レジスタを介して又はセグメントビュー・レジスタを介してMPUによりアクセスされる。
RBSR選択回路は、ホスト回路、DSIT回路、ECC回路及びTAPE回路からの入力信号に基づき、BMGの各回路により指定されたセグメントに対するステータスを生成する。生成されたステータスは転送制御信号としてBMGの各回路へ返され、またはセグメントビュー・レジスタに設定される。マスク回路は、入力されるSet_Mask信号及びClear_Mask信号に基づき、RBSR選択回路が生成するステータスをマスクする。
図21は、図19に示すBMGのより詳細な実装例を示す。BMGを構成する各回路は、それぞれ対応する処理部に接続される。すなわちホスト側回路は第1処理部に相当する圧縮エンジンに、ECC回路は第3処理部に相当するECCエンジンに、テープ側回路は第4処理部に相当するFomartに、そしてMPUインターフェースは第2処理部としての機能を提供するMPUに接続される。BMGの各回路はまた、内部に転送制御回路をもつ。転送制御回路にはRBSR選択回路から返される転送制御信号が入力され、転送制御回路により現在のセグメントの単位データの転送開始の可不可が判断される。転送制御回路により単位データの転送が可能と判断されると、BMGの各回路はデータバッファから現在のセグメントの単位データを読み出し、対応する処理部へ転送する。
図23は、本発明に係る処理システムを含むストレージ装置700のハードウェア構成の一例を示す。ストレージ装置700は、本発明に係る処理システムを実現するASIC705と、コントローラ710と、記録チャネル730と、ヘッド位置制御システム735と、モータドライブ740と、モータ745と、テープ750と、ヘッド755と、リール760A、Bを含む。ASIC705が実現するインターフェースは、ホスト装置と通信を行う。インターフェースは、ホスト装置から、ユーザデータのテープ750への書込みを指示するコマンドを受け取る。例えばインターフェースの通信の規格がSCSIの場合、コマンドはWriteコマンドに相当する。バッファは、テープ750に書き込むべきデータを蓄積するメモリ、例えばDRAMである。データは、任意の長さでホスト105からドライブに転送される。
テープ750は、データの記録手段としてのテープ媒体である。記録チャネル730を介して渡されたデータは、データセット単位(例えば400KB)でヘッド755によりテープ750に書込まれる。テープ750は、リール760A及び760Bに巻かれ、これらの回転に伴い、リール760Aからリール760Bの方向へ、又は、その反対の方向へ、縦方向に移動する。モータ745は、リール760A及び760Bを回転させる。
コントローラ710は、ストレージ装置700の全体を制御する。コントローラ710は、ホスト装置からインターフェースで受け付けたコマンドに従って、データのテープ750への書込み読取りを制御する。また、コントローラ710は、ヘッド位置制御システム735やモータドライブ740の制御も行う。ヘッド755は、トラックを切り換える必要が生じると、ヘッド位置制御システム735が、ヘッド755を電気的に切り換えの制御を行う。また、コントローラ710は、ASIC705、記録チャネル130おける(書込み及び読込み)データの監視を行なう。モータドライブ740は、直接コントローラ710に接続されていてもよい。
コントローラ710はMPU715、ROM720、RAM725により構成される。ROM720は、ストレージ装置700の起動時にMPU715が実行するブートプログラムや、起動後にストレージ装置700を動作させるプログラムを格納する。またROM720は、コントローラ710を、図3を参照して説明した第2処理部150、第2開始判断部152、第2更新部154、初期化部158及び調整部159として機能させるためのプログラムも格納する。そしてMPU720は、これらのプログラムを、RAM725を用いて実行する。
以上、実施形態を用いて本発明の説明をしたが、本発明の技術範囲は上記実施形態に記載の範囲には限定されない。このように上記の実施形態に、種々の変更または改良を加えることが可能であることが当業者に明らかである。従って、そのような変更または改良を加えた形態も当然に本発明の技術的範囲に含まれる。
LTOテープドライブの一連の処理の各段階におけるデータのフォーマットを示す。 (a)は、セグメント数に等しい数のレジスタを用いた従来の一連の処理ののステータス管理方法を示す。(b)は、従来のステータス管理方法におけるレジスタのビットの割り当てを示す。 本発明の第1実施形態に係る処理システム100の構成の一例を示す。 (a)は、本発明に係る複数の第1テーブルの一例を示す。(b)は、(a)に対応する、従来のセグメント数に等しいステータスレジスタを示す。(c)は、本発明に係る第2テーブルの一例を示す。 本発明に係るポインタビュー・レジスタとセグメントビュー・レジスタの一例を示す。 (a)は、第1処理部145に対する管理部110のデータ書込み時の処理の流れの一例を示すフローチャートを示す。(b)は、第3処理部165及び第4処理部170に対する管理部110のデータ書込み時の処理の流れの一例を示すフローチャートを示す。 セグメント・ステータス生成部192のデータ書込み時の処理の流れの一例を示すフローチャートを示す。 管理部110の任意の更新部に対するアクセス制御部190のデータ書込み時の処理の流れの一例を示すフローチャートを示す。 (a)は、終了ステータスを新たに立てる際の複数のセグメントの処理状況の一例を示す。(b)は、更新前の第1テーブルを示す。(c)は、更新後の第1テーブルを示す。 (a)は、セグメントビュー・レジスタ196を使用して特定のセグメントの終了ステータスをクリアする制御部160の処理の流れの一例を示すフローチャートを示す。(b)は、セグメントビュー・レジスタ196を使用して特定のセグメントの終了ステータスをクリアするアクセス制御部190の処理の流れの一例を示すフローチャートを示す。 (a)は、終了ステータスをクリアする際の複数のセグメントの処理状況の一例を示す。(b)は、更新前の第1テーブルを示す。(c)は、更新後の第1テーブルを示す。 ポインタビュー・レジスタ194を使用して特定の第1テーブルの終了ステータスをクリアする制御部160の処理の流れの一例を示すフローチャートを示す。 初期化部158による処理の流れの一例を示すフローチャートを示す。 (a)は、上書き処理を行う場合に終了ステータスが不連続となる場合の一例を示す。(b)は、上書き処理を行う場合に終了ステータスが不連続となる場合の一例を示す。(c)は、上書き処理を行う場合に終了ステータスが不連続となる場合の一例を示す。 (a)は、2次元のECCで保護されたデータを示す。(b)は、上書きする際の前処理を示す。(c)は、上書き処理を示す。 本発明の第2実施形態に係る処理システム100の構成の一例を示す。 本発明に係る上書きステートマシーンの状態遷移を示す。 (a)は、ステータスをマスクする際の本発明の第2実施形態に係る処理システム100を示す。(b)マスクを解除する際の本発明の第2実施形態に係る処理システム100を示す。 本発明に係る処理システム100の実装例を示す。 本発明に係るVRBSRの実装例を示す。 本発明に係る管理部の実装例を示す。 本発明に係るストレージ装置と、ホスト装置とを含むシステムの構成の一例を示す。 本発明に係るストレージ装置のハードウェア構成の一例を示す。

Claims (11)

  1. 処理システムであって、
    前記処理システムに入力されるデータを入力順に処理単位でそれぞれ格納する複数のセグメントからなるバッファと、
    前記データに対し、一連の処理を所定の順序で施す複数の処理部と、
    前記複数の処理部にそれぞれ対応する複数の第1テーブルであって、対応する前記処理部による処理が終了した連続するアドレスの複数のセグメントのうち、先頭のセグメントを示す先頭情報、末尾のセグメントを示す末尾情報及び対応する前記処理部による処理が終了したセグメントの有無を示す存在情報をそれぞれ格納する前記複数の第1テーブルと、
    前記複数の第1テーブルにより保持される前記一連の処理の処理状況に基づき、前記一連の処理が前記所定の順序で行われるように前記バッファと前記複数の処理部の間のデータ転送を管理する管理部と
    を含む処理システム。
  2. 前記処理システムは、前記セグメントを指定した前記一連の処理の処理状況の問い合わせに応答して、前記複数の第1テーブルを参照して指定された前記セグメントに対する処理状況を生成するステータス生成部を含み、前記管理部は、前記複数の処理部のそれぞれについて、次に処理対象となる前記セグメントを指定して前記ステータス生成部に処理状況を問い合わせ、当該処理状況が前記処理部の処理の開始条件を満たすか否かを判断することにより、前記バッファと前記複数の処理部の間のデータ転送を管理する、請求項1に記載の処理システム。
  3. 前記管理部は、前記次に処理対象となるセグメントに対する前記一連の処理の処理状況が、処理の開始条件を判断する対象の処理部による処理が終了しておらず、かつ1つ前の処理部による処理が終了していることを示すこと条件に、前記開始条件を判断する対象の処理部へ前記次に処理対象となるセグメントの単位データを転送する、請求項2に記載の処理システム。
  4. 前記管理部は、前記各処理部による処理の終了に応答して対応する前記第1テーブルを更新し、前記処理システムは、任意の前記第1テーブルの前記先頭情報により示される先頭のセグメントと前記末尾情報により示される末尾のセグメントの間に、前記対応する処理部による処理が未処理のセグメントが存在することになるような更新を検知しエラー信号を生成するアクセス制御部を含む、請求項1に記載の処理システム。
  5. 前記アクセス制御部は、任意の前記第1テーブルの更新の前後で前記先頭情報及び前記末尾情報が変化しないような更新を検知しエラー信号を生成する、請求項4に記載の処理システム。
  6. 前記バッファはリングバッファであり、前記処理システムは制御部を含み、当該制御部は、前記リングバッファのすべてのセグメントにデータが書き込まれる前に、前記複数の第1テーブルのそれぞれの前記先頭情報を、前記先頭のセグメントの1以上先のセグメントを示すように変更する、請求項1に記載の処理システム。
  7. データを所定の単位で書込み及び読出し可能な記憶媒体と、
    前記記憶媒体への書込み前及び前記記憶媒体からの読出し後に、前記所定の単位の単位データを書込み順又は読出し順にそれぞれ格納する複数のセグメントからなるバッファと、
    前記単位データに対し一連の処理を所定の順序で施す複数の処理部と、
    前記複数の処理部にそれぞれ対応する複数の第1テーブルであって、対応する前記処理部による処理が終了した連続するアドレスの複数のセグメントのうち、先頭のセグメントを示す先頭情報、末尾のセグメントを示す末尾情報及び対応する前記処理部による処理が終了したセグメントの有無を示す存在情報をそれぞれ格納する前記複数の第1テーブルと、
    前記複数の第1テーブルにより保持される前記一連の処理の処理状況に基づき、前記一連の処理が前記所定の順序で行われるように前記バッファと前記複数の処理部の間のデータ転送を管理する管理部と
    を含む、ストレージ装置。
  8. 前記ストレージ装置は、前記セグメントを指定した前記一連の処理の処理状況の問い合わせに応答して、前記複数の第1テーブルを参照して指定された前記セグメントに対する処理状況を生成するステータス生成部を含み、前記管理部は、前記複数の処理部のそれぞれについて、次に処理対象となる前記セグメントを指定して前記ステータス生成部に処理状況を問い合わせ、当該処理状況が前記処理部の処理の開始条件を満たすか否かを判断することにより、前記バッファと前記複数の処理部の間のデータ転送を管理する、請求項7に記載の処理システム。
  9. 前記複数の処理部による処理が1つも終了していない連続するアドレスの複数のセグメントにおいて、先頭のセグメントを示す先頭情報、末尾のセグメントを示す末尾情報、及び複数の処理部による処理が1つも終了していないセグメントの有無を示す存在情報を格納する第2テーブルと、前記第2テーブルを参照して前記記憶媒体へのデータ書込み又はデータ読出しのスピードを調整する調整部とを含む、請求項7に記載のストレージ装置。
  10. 前記管理部は、前記バッファにデータを書き込む前にデータに行誤り訂正符号を付加するエンコーダと、当該行誤り訂正符号を付加する単位データであるコードワードを格納するエンコーダ用バッファと、前記記憶媒体に記憶された前記コードワードに対しその途中から上書きを行う場合に、途中から上書きされる前記コードワードが当該コードワードを格納する前記バッファのあるセグメントから前記エンコーダ用バッファに転送されるまでの間信号を生成する上書きステートマシーンとを含み、前記ストレージ装置は、前記信号が生成されている間、前記ステータス生成部より出力される上書き処理のため初期化された前記あるセグメントの処理状況をデータ読み出し用の処理状況でマスクするマスク部を含む、請求項8に記載のストレージ装置。
  11. バッファの各セグメントに格納される単位データに対し一連の処理を所定の順序で行うための方法であって、
    前記一連の処理を実行する複数の処理部の各々は、当該処理部による処理が終了したアドレスの連続する複数のセグメントのうち、先頭のセグメントを示す先頭情報、末尾のセグメントを示す末尾情報及び前記処理部による処理の終了したセグメントの有無を示す存在情報を格納する対応する第1テーブルを有し、
    複数の前記第1テーブルを参照して、前記複数の処理部のそれぞれにおいて次に処理対象となるセグメントの処理状況を生成するステップと、
    前記次に処理対象となるセグメントの前記処理状況が、前記複数の処理部のそれぞれの処理の開始条件を満たすか否かを判断するステップと、
    判断するステップにおいて処理の開始条件が満たされると判断したことに応答して、前記バッファの前記次に処理対象となるセグメントから前記単位データを読出し判断対象の処理部へ転送するステップと
    を含む、一連の処理を所定の順序で行うための方法。
JP2007050772A 2007-02-28 2007-02-28 一連の処理を所定の順序で行うための処理システム、ストレージ装置、及び方法 Expired - Fee Related JP4432088B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007050772A JP4432088B2 (ja) 2007-02-28 2007-02-28 一連の処理を所定の順序で行うための処理システム、ストレージ装置、及び方法
US12/039,412 US8209693B2 (en) 2007-02-28 2008-02-28 System and method for processing series of processes in given order having processing status generation with tables storing status including beginning, end and existence segment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007050772A JP4432088B2 (ja) 2007-02-28 2007-02-28 一連の処理を所定の順序で行うための処理システム、ストレージ装置、及び方法

Publications (2)

Publication Number Publication Date
JP2008217860A true JP2008217860A (ja) 2008-09-18
JP4432088B2 JP4432088B2 (ja) 2010-03-17

Family

ID=39717410

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007050772A Expired - Fee Related JP4432088B2 (ja) 2007-02-28 2007-02-28 一連の処理を所定の順序で行うための処理システム、ストレージ装置、及び方法

Country Status (2)

Country Link
US (1) US8209693B2 (ja)
JP (1) JP4432088B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010092881A1 (ja) * 2009-02-10 2010-08-19 インターナショナル・ビジネス・マシーンズ・コーポレーション データ記録装置、データ読み出し装置、テープドライブ、データ記録方法、及び、データ読み出し方法

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008293484A (ja) * 2007-04-27 2008-12-04 Panasonic Corp バッファメモリ共有装置
US9342383B2 (en) * 2007-12-28 2016-05-17 Sap Se Streaming operations for workflow process models using multiple views on a same buffer
US20090198695A1 (en) * 2008-02-01 2009-08-06 Arimilli Lakshminarayana B Method and Apparatus for Supporting Distributed Computing Within a Multiprocessor System
KR101475993B1 (ko) * 2008-11-21 2014-12-23 인터내셔널 비지네스 머신즈 코포레이션 테이프 기록 장치에 있어서 데이터의 덮어쓰기 제어 방법, 덮어쓰기 제어 프로그램, 및 테이프 기록 장치
US8826251B2 (en) * 2010-02-18 2014-09-02 Samsung Electronics Co., Ltd Method and apparatus for dynamically generating machine code
US8793552B2 (en) 2012-11-14 2014-07-29 International Business Machines Corporation Reconstructive error recovery procedure (ERP) for multiple data sets using reserved buffer
US9053748B2 (en) * 2012-11-14 2015-06-09 International Business Machines Corporation Reconstructive error recovery procedure (ERP) using reserved buffer
TWI506430B (zh) * 2013-03-20 2015-11-01 Phison Electronics Corp 映射資訊記錄方法、記憶體控制器與記憶體儲存裝置
CN104102585B (zh) * 2013-04-03 2017-09-12 群联电子股份有限公司 映射信息记录方法、存储器控制器与存储器储存装置
US8810944B1 (en) 2013-07-16 2014-08-19 International Business Machines Corporation Dynamic buffer size switching for burst errors encountered while reading a magnetic tape
JP2015022516A (ja) * 2013-07-19 2015-02-02 ソニー株式会社 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
US9582360B2 (en) 2014-01-07 2017-02-28 International Business Machines Corporation Single and multi-cut and paste (C/P) reconstructive error recovery procedure (ERP) using history of error correction
US9141478B2 (en) 2014-01-07 2015-09-22 International Business Machines Corporation Reconstructive error recovery procedure (ERP) using reserved buffer
US11671382B2 (en) * 2016-06-17 2023-06-06 Intel Corporation Technologies for coordinating access to data packets in a memory
TWI637268B (zh) * 2017-03-22 2018-10-01 慧榮科技股份有限公司 主機裝置與資料傳輸速率控制方法
US10999209B2 (en) 2017-06-28 2021-05-04 Intel Corporation Technologies for scalable network packet processing with lock-free rings

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9001335D0 (en) * 1990-01-19 1990-03-21 Hewlett Packard Ltd Data storage on tape
JPH0578120A (ja) 1991-09-24 1993-03-30 Mitsubishi Heavy Ind Ltd ゼオライト押出成形用原料及びその製造方法
JP3552258B2 (ja) * 1993-12-27 2004-08-11 株式会社日立製作所 分散計算機システム及びその情報管理方法
CN1144127C (zh) * 1995-11-10 2004-03-31 索尼公司 信息处理装置及信息处理方法
US6425023B1 (en) * 1999-03-24 2002-07-23 International Business Machines Corporation Method and system for gathering and buffering sequential data for a transaction comprising multiple data access requests
US7162600B2 (en) * 2005-03-29 2007-01-09 Hitachi, Ltd. Data copying method and apparatus in a thin provisioned system
US6795264B2 (en) * 2001-10-25 2004-09-21 Texas Instruments Incorporated LBA tracking for system data management
US6792504B2 (en) * 2002-01-25 2004-09-14 Seagate Technology Llc Read on arrival scheme for a disc drive
US6856479B2 (en) * 2002-01-29 2005-02-15 International Business Machines Corporation Writing synchronized data to magnetic tape
US7107397B2 (en) * 2003-05-29 2006-09-12 International Business Machines Corporation Magnetic tape data storage system buffer management
US7970989B2 (en) * 2006-06-30 2011-06-28 Intel Corporation Write ordering on disk cached platforms

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010092881A1 (ja) * 2009-02-10 2010-08-19 インターナショナル・ビジネス・マシーンズ・コーポレーション データ記録装置、データ読み出し装置、テープドライブ、データ記録方法、及び、データ読み出し方法
JP5199401B2 (ja) * 2009-02-10 2013-05-15 インターナショナル・ビジネス・マシーンズ・コーポレーション データ記録装置、データ読み出し装置、テープドライブ、データ記録方法、及び、データ読み出し方法
US8824080B2 (en) 2009-02-10 2014-09-02 International Business Machines Corporation Data recording and reading device and method
US9230600B2 (en) 2009-02-10 2016-01-05 International Business Machines Corporation Data recording method for storing first data and second data into a tape medium

Also Published As

Publication number Publication date
US8209693B2 (en) 2012-06-26
JP4432088B2 (ja) 2010-03-17
US20080209420A1 (en) 2008-08-28

Similar Documents

Publication Publication Date Title
JP4432088B2 (ja) 一連の処理を所定の順序で行うための処理システム、ストレージ装置、及び方法
EP1805589B1 (en) Tape emulating disk based storage and method with automatically resized emulated tape capacity
JP4464378B2 (ja) 同一データを纏める事で格納領域を節約する計算機システム、ストレージシステム及びそれらの制御方法
JP4749112B2 (ja) 記憶制御システム及び方法
JP4704161B2 (ja) ファイルシステムの構築方法
EP1755042A2 (en) Storage system for controlling disk cache
JPH087702B2 (ja) データ記憶システム及び方法
US8949524B2 (en) Saving log data using a disk system as primary cache and a tape library as secondary cache
JP2007233896A (ja) ストレージ装置及びその制御方法
JP2007249573A (ja) 自動拡張可能なボリュームに対して最適なi/oコマンドを発行するストレージシステム及びその制御方法
JP2007004788A (ja) インタリーブされたバックアップを提供するための方法及びシステム
JPWO2009133605A1 (ja) 仮想テープ装置、制御方法、制御部
US6715036B1 (en) Method, system, and data structures for transferring blocks of data from a storage device to a requesting application
JP2006318017A (ja) Raid構成変換方法、装置及びプログラム並びにこれを用いたディスクアレイ装置
US8380952B2 (en) Storage system and data storage method using storage system which decides size of data to optimize the total of data size transfer efficiency
JP2005215940A (ja) ストレージシステム、サーバ装置及び先行コピーデータ生成方法
JP2008134720A (ja) 情報記憶装置
US7024522B2 (en) Worm guarantee storage device employing block write inhibition information
JP3236166B2 (ja) キャッシュ制御方法および情報処理装置
US20160357479A1 (en) Storage control apparatus
JP2681986B2 (ja) 計算機システム
JP2007310533A (ja) 不揮発性記憶システム、不揮発性記憶装置、及びファイルデータ書き込み方法
JP3376316B2 (ja) ディスクアレイ装置及びそれに用いる高速通信方法並びにその制御プログラムを記録した記録媒体
JP2008158572A (ja) データ記憶装置
JP3861061B2 (ja) ディスクキャッシュ制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090512

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20090512

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20090527

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090623

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090721

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090721

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20090721

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090723

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090915

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090918

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090918

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: 20091207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20091207

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20091207

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091211

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130108

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140108

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees