JP3175371B2 - データ記憶フォーマット変換方式及びその変換方法及びアクセス制御装置及びデータアクセス方法 - Google Patents

データ記憶フォーマット変換方式及びその変換方法及びアクセス制御装置及びデータアクセス方法

Info

Publication number
JP3175371B2
JP3175371B2 JP00900293A JP900293A JP3175371B2 JP 3175371 B2 JP3175371 B2 JP 3175371B2 JP 00900293 A JP00900293 A JP 00900293A JP 900293 A JP900293 A JP 900293A JP 3175371 B2 JP3175371 B2 JP 3175371B2
Authority
JP
Japan
Prior art keywords
record
track
length
position information
format
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.)
Expired - Fee Related
Application number
JP00900293A
Other languages
English (en)
Other versions
JPH05307440A (ja
Inventor
洋一 中村
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP00900293A priority Critical patent/JP3175371B2/ja
Priority to US08/024,724 priority patent/US5388013A/en
Priority to EP93103292A priority patent/EP0559142B1/en
Priority to DE69330319T priority patent/DE69330319T2/de
Publication of JPH05307440A publication Critical patent/JPH05307440A/ja
Application granted granted Critical
Publication of JP3175371B2 publication Critical patent/JP3175371B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • 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
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0661Format or protocol conversion 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • 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
    • G06F2003/0697Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers device management, e.g. handlers, drivers, I/O schedulers

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、たとえば、汎用計算
機の磁気ディスク装置で用いられている可変長レコード
方式を市販の小型ディスク装置で用いられている固定長
方式で実現するためのデータ記憶フォーマット変換方式
等に関する。
【0002】
【従来の技術】従来、汎用計算機システムの外部記憶装
置としては、可変長レコード(CKD;Count K
ey Data)方式の固定ディスク装置が広く用いら
れている。可変長レコード方式とは、磁気ディスク上の
1トラックに記録する物理的なレコードの長さも数も可
変である記録フォーマットである。一般的に可変長レコ
ード方式の磁気ディスクの1トラックは図33に示すよ
うにインデックス・マークから始まり、まず最初にホー
ム・アドレス(HA)と引き続くレコード・ゼロ(R
0)が存在する。このHAとR0はそのトラックのシリ
ンダ・アドレスやヘッド・アドレスなどのアドレス情報
以外に、そのトラック上の磁気的な傷の位置や、不良ト
ラックであるか否かの情報、また、不良トラックであれ
ば、交代割り付けされている相手先のトラックのアドレ
ス等の制御情報を含んでいるため、必ず存在しなくては
ならない。このHA、R0に引き続くレコード1(R
1)以降のレコードが通常のデータを記録するレコード
で、レコード1個1個の長さも個数もその総容量がトラ
ックに記録できる容量である限り、ホスト計算機上のソ
フトウェア(S/W)から自由にフォーマットして使用
することができる。各レコードは、カウント・フィール
ド(COUNT)、キー・フィールド(KEY)、デー
タ・フィールド(DATA)の3つのフィールドからな
りたっており、これらのフィールドの頭文字からCKD
方式と呼ばれる。カウント・フィールドの長さは固定
で、シリンダ・アドレス(CC)、ヘッド・アドレス
(HH)、レコード・ナンバ(R)などのアドレス情報
のほかに、そのレコードのキー・フィールドの長さ(K
L)、データ・フィールドの長さ(DL)などを含んで
いるので、引き続くキー・フィールド、データ・フィー
ルドの長さを自由に変えることができる。キー・フィー
ルド、データ・フィールドがそのレコードの実際のデー
タを記録する部分であるが、そのレコードのキーを記録
すべきキー・フィールドが不要な場合は、カウント・フ
ィールドでKL=0を指定することにより、キー・フィ
ールドの存在しないレコードを作ることもできる。H
A、R0、R1、R2・・・などの間には、適当なサイ
ズのレコード間ギャップ(G1,G2,G3)が設けら
れており、特にR1,R2・・・などのレコードの前の
ギャップ(G3)には、アドレス・マーク(AM)と呼
ばれる磁気的に特別なマークが記録されているため、ト
ラック内のどの部分から読み始めても、このアドレス・
マークを検出することにより、レコードの読み始めを見
つけることができる。
【0003】また、各レコードの内部でも各フィールド
を区別するためにそれぞれフィールド間ギャップ(G
2)が設けられている。これに対し、ミニコンピュー
タ、オフィスコンピュータ、パーソナルコンピュータ、
ワークステーションなどの比較的小規模な計算機システ
ムの外部記憶装置としては、固定長レコード(FBA;
Fixed Block Architecture)
方式の固定ディスク装置が用いられている。固定長レコ
ード方式のディスクでは、通常一つのレコード(固定長
レコード方式のディスクではセクタと呼ばれることが多
い)はアドレス情報を記録しているIDフィールドとデ
ータを記録するデータ・フィールドからなりたってお
り、いずれのフィールドの長さも固定である。従って、
1トラックあたりのレコード数(セクタ数)も固定であ
る。
【0004】従来は、可変長レコード方式の磁気ディス
クと固定長レコード方式の磁気ディスクは、対象とする
計算機システムによって上述のような使い分けが行われ
てきた。従って、固定長レコード方式のディスクは、対
象とするシステムが小さいことから、可変長レコード方
式のディスクに比べ、一般的に小型で記憶容量も小さ
く、データ転送速度、シーク速度などの性能も低かっ
た。しかし、近年、可変長レコード方式のディスクも小
型化に対する要求が著しく高くなってきたこと、逆に、
固定長レコード方式のディスクの方は、大容量化、高速
化が著しいことなどから、仕様面での両者の差異は小さ
くなってきた。これに対し、価格の方は可変長レコード
方式のディスクは汎用計算機専用であるため、パーソナ
ル・コンピュータからオフィス・コンピュータまで広く
使用される固定長レコード方式のディスクに比べ量産効
果に劣る。そのため、どうしても割高となり、両者のコ
スト・パフォーマンスのギャップが広がりつつある。こ
のため、汎用計算機でも安価で高性能な固定長レコード
方式のディスクを利用したいと言う要求が強まってい
る。
【0005】また、CKD方式の固定ディスク装置で
は、データを記録するデータ面と、ヘッドを位置決めす
るためのサーボ情報を記録するサーボ面を別々に設ける
サーボ面サーボ方式が用いられてきた。この方式では、
データ面とサーボ面の機械的な位置の精度によってヘッ
ドの位置決め精度も規定されてしまう。そこで、さらに
トラックの高密度化を図るため、データ面中のIDフィ
ールドなどにサーボ情報も書き込んでしまうデータ面サ
ーボ方式が用いられるようになってきた。このデータ面
サーボ方式を用いると、極端には、1トラック1レコー
ドも許される可変長レコード方式では常に一定間隔でサ
ーボ情報が得られるという保障はなく、必ず一定間隔で
サーボ情報が得られる固定長レコード方式に比べ、ヘッ
ドの位置決め精度に関して不利になる。さらに、ディス
ク1台1台の性能向上や信頼性向上には限界が有るため、
複数のディスクにデータを分散して記録したり、その分
散したデータ間のパリティなどを記録する冗長ディスク
を設けるなどして、性能・信頼性の向上をはかるディス
ク・アレイの技術が注目されているが、レコードの長さ
や個数が可変である可変長レコード方式のままでは、こ
のような技術に対応することも困難である。しかし、汎
用計算機の世界では膨大なソフトウェア資産がきづかれ
ているため、ディスクの記録フォーマットを可変長から
固定長に変更することは著しく困難である。
【0006】ここで、図34及び図35を用いて従来の
可変長レコード方式で記録された可変長レコードへのア
クセス方式について述べる。図34はサーボ面サーボ方
式が用いられている磁気ディスクを模式的に示す図であ
り、この磁気ディスク装置にはサーボ面Sとデータ面D
が設けられている。サーボ面Sにはセクタ(FBA方式
のセクタとは異なる概念のセクタ)が論理的に設けられ
ている。図35はこのセクタを説明するための図であ
る。ここで1トラックの記憶容量を48KBであるとす
るとこの1トラックは複数のセクタに分割される。ここ
では1セクタのサイズを244Bとする。この1セクタ
はさらにセグメントS1〜S7という7つのセグメント
から構成されている。1セクタのサイズが244Bであ
るので1セグメントは32Bになる。このような磁気デ
ィスク装置を用いてデータ面Dにデータを記録する場合
には、データが記録されたセクタの値を記憶しておき、
そのデータを検索する場合には、データ面に書かれたと
きのセクタ値を用いて検索する。こうすることでそのデ
ータを高速に検索することが可能になる。図36はセク
タ値を用いてデータを検索する場合のホストコンピュー
タで動作するソフトウェアからのアクセスシーケンスの
一例を示す図である。図36に示すようにホストコンピ
ュータで動作するソフトウェアはアクセスしようとする
データが記録されているセクタをセットセクタコマンド
により指定する。このセットセクタコマンドにより磁気
ディスク装置は、ホスト計算機及び磁気ディスク制御装
置から切り離され、指定されたセクタを自律的に検索す
る。指定されたセクタを発見すると磁気ディスク装置
は、磁気ディスク制御装置を介し、ホスト計算機に再接
続要求を出し、再接続が行なわれる。次にサーチIDコ
マンドによりサーチすべきデータのIDが送られてく
る。このIDは、例えばシリンダ番号やトラック番号
や、あるいはサーチすべきレコード番号である。このサ
ーチIDコマンドを受け取ると磁気ディスク装置は、そ
のIDとセットセクタコマンドにより指定されたセクタ
から最初に存在するレコードのIDを比較し、その結果
をホスト計算機に報告する。両者のIDが一致していな
ければ、コマンドの実行は次のトランスファーインチャ
ネルコマンドにより、セットセクタコマンドにジャンプ
して戻され、次のレコードに対し、再度サーチIDコマ
ンドが発行される。両者のIDが一致していれば、ホス
ト計算機は次のトランスファーインチャネルコマンドを
とばし、最後のリードデータコマンドあるいはライトデ
ータコマンドを発行することにより、検索したデータに
対し、リードまたはライトという命令を実行する。
【0007】このように汎用計算機で用いられるソフト
ウェアは既に可変長レコード方式に基づいて作成されて
おり、既に築かれたソフトウェアを変更するということ
は著しく困難である。そこで、実際のディスクは固定長
レコード方式のディスクを使用しながら、磁気ディスク
制御装置で可変長レコード方式をエミュレーションする
ことにより、ホスト計算機上のソフトウェアからは従来
どおりの可変長レコード方式のディスクを使用できる技
術が考えられている。
【0008】CKD−FBA変換については「記憶制御
方法及び装置」(特開平1−30691号公報)におい
て詳細に述べられている。また、CKD−FBA変換に
ついては、さらにIBM社の出版物「IBM4321/
4331プロセッサ互換性機能」(GA33−152
8、第3版、1982年9月)に一般的に記載されてい
る。これらの文献の内容をまとめると、下記のようにな
る。上記の出版物ではCKDからFBAに変換する際す
べてのギャップを取って圧縮している。また、上記の出
版物では図36に示したセットセクタコマンドがサポー
トされていないことが記述されている。上記の出版物で
はセットセクタコマンドが出された場合には、ノーオペ
レーションになると記載されている。セットセクタコマ
ンドがサポートされていない場合には、サーチIDコマ
ンドからレコード検索を行うことになる。サーチIDコ
マンドのみによってもレコードを検索することができる
が、そのトラックの先頭から全てのレコードを順番に見
ながらサーチIDコマンドで指定されたIDと同じID
のレコードを検索するために検索時間がかかってしま
う。セットセクタコマンドはレコードが存在している身
近のセクタを指定するものであり、セットセクタコマン
ドで指定されたセクタ以後をサーチIDコマンドにより
サーチする場合に比べてアクセス時間の点で非常に不利
である。
【0009】一方、上記公報では(カッコ内の番号は図
37に対応)、 (1)フィルード間ギャップ(G2)やECC、パディ
ング、物理的パラメータなどは取る。 (2)レコード間ギャップ(131,133,137,
163)は残す。 (3)(1)で取ったフィールド間ギャップなどの分
は、同じ分だけ(2)のレコード間ギャップを伸ばす。
これにより、トラックの先頭から各レコードのカウント
・フィールドまでの相対位置は元のまま維持される。
(キー・フィールドやデータ・フィールドの相対位置は
ずれることになるが、カウント・フィールドの相対位置
さえ分かれば、レコードの位置決めには差し支えな
い)。 (4)このトラック・データをFBAの固定ブロック
(セクタ)に分割し、その際、各固定ブロックに含まれ
る最初のレコードのカウント・フィールドの位置情報
(156)を各固定ブロックの先頭に付加しておく。こ
れにより、FBA方式のディスクに記憶されたCKDレ
コードへの直接かつランダムなアドレッシングが可能に
なる。 (5)そのブロックにカウント・フィールドが含まれな
い場合は、それを示す標識ビットを記録しておく。 さらに整理すると、 (1)各レコードのカウント・フィルードの相対位置を
維持するためレコード間ギャップだけを残し、他の余分
なギャップなどは取り除く。 (2)FBAの各固定ブロックの先頭に、そこに記録さ
れている最初のカウント・フィールドの位置を示すヘッ
ダを付ける。 の2点が要件となって、こうすることによりFBA方式
のディスクに記録したCKDレコードへの直接かつラン
ダムなアドレッシングを可能にする。
【0010】
【発明が解決しようとする課題】しかしながら、上述し
た先行技術においては次の問題点がある。前述した出版
物による技術によればCKDからFBAに変換する際、
全てのギャップをとって圧縮しているがセットセクタコ
マンドがサポートされていないためにレコードのアクセ
スに長時間を要する。また、前述した公報に示された技
術においてはレコード間ギャップは削除するが、フィー
ルド間ギャップは残した上、削除したレコード間ギャッ
プの分だけフィールド間ギャップを伸ばすため、特に、
レコードサイズが小さくレコード数が多い場合、メモリ
上で無駄が増える。
【0011】また、各FBAの固定ブロック(固定長レ
コード方式のレコード)に含まれるCKDレコードのう
ち先頭のCKDレコードの位置に関する情報しか持たな
いので、先頭以外のCKDレコードを見つけるために
は、まず先頭のCKDレコードのカウント・フィールド
を読んで、その中のKL,DLから先頭のレコード長を
知り、次のレコードのカウント・フィールドの位置を計
算してから、また、次のレコードのカウント・フィール
ドのKL,DLを読んで、また、その次のレコードのカ
ウント・フィールドを探すという手順を繰り返さなくて
はならない。従って、処理時間がかかるばかりでなく、
トラック・イメージがディスク・キャッシュ上などに集
中管理されている場合は、そのメモリへのアクセス回数
が著しく増え、システム全体の性能を低下させる。さら
に、CKDレコードの位置情報を各FBAブロック毎と
いう小さい単位に持つためチャネルとのデータ転送時、
この位置情報をとび越すためのデータ転送一時中断が頻
繁に発生し、データ転送効率の悪化を招く。
【0012】この発明は、上述した従来例における問題
点を解消するためになされたもので、CKDレコードを
FBAレコードにフォーマット変換する際、目的とする
CKDレコードを発見するためのメモリアクセス回数が
少なくてすみメモリ負荷軽減がなされると共に、トラッ
クデータを保持するためのメモリ容量が少なくてすむレ
コード記憶フォーマット変換方式を得ることを目的とす
る。
【0013】
【課題を解決するための手段】この発明に係るデータ記
憶フォーマット変換方式は、汎用計算機システムの外部
記憶装置に用いられる記憶フォーマットである可変長レ
コードの1トラックからレコード間ギャップ及びフィー
ルド間ギャップ等全てのギャップを削除し、そのトラッ
クデータを固定長レコードの固定長ブロックサイズの整
数倍に相当する管理単位に分割し、その管理単位に含ま
れる全ての可変長レコードの位置を示すアドレス情報と
各可変長レコードの可変長レコードフォーマットでのト
ラックの先頭からの相対位置を示す相対位置情報とを上
記管理単位に書き入れた後、固定長レコードの固定長ブ
ロックサイズに分割して記憶することを特徴とするもの
である。
【0014】また、この発明に係るアクセス制御装置は
前述したデータ記憶フォーマット変換方式を用いて作成
されたデータを記憶する記憶部に対してアクセスするア
クセス制御装置であり、従来の可変長レコード方式に基
づいて作成されたソフトウェアから出される可変長レコ
ードのアクセス命令を解釈して、前記固定長レコード方
式で記憶されたレコードをアクセスするものであり、以
下の要素を有するものである。 (a)上記記憶部に対して上記管理単位でデータを読み
書きする読み書き手段、(b)上記読み書き手段により
読み書きされるデータを管理単位ごとに格納するメモ
リ、(c)レコードが可変長フォーマットで記憶されて
いるものとして出力された可変長レコードへのアクセス
命令を入力する入力手段、(d)上記入力手段により入
力したアクセス命令から、アクセスする可変長レコード
が記憶されていると考えられる管理単位の位置を概算す
る位置計算手段と、(e)上記位置計算手段により概算
された位置にある管理単位を上記読み書き手段により上
記記憶部から上記メモリに読み込み、上記入力手段によ
り入力されたアクセス命令がアクセスしようとするレコ
ードを検索するレコード検索手段。
【0015】また、この発明に係るデータ記憶フォーマ
ット変換方法は可変長レコード方式により作成された可
変長レコードからギャップを削除し、これをあらかじめ
定められた管理単位であるフレームに配置すると共に配
置したデータの位置等のアクセス情報を記憶させ、この
フレームを固定長のブロックサイズに分割して固定長フ
ォーマットとして記憶するものであり、以下の工程を有
するものである。 (a)データを有するフィールド及びレコード間ギャッ
プ及びフィールド間ギャップを有する可変長フォーマッ
トからレコード間ギャップ及びフィールド間ギャップを
削除して各可変長レコードのフィールドを連結するギャ
ップ削除工程、(b)上記ギャップ削除工程により連結
された各可変長レコードをあらかじめ定められたサイズ
を持つフレームに順に配置するとともに、各可変長レコ
ードをアクセスするためのアクセス情報を各可変長レコ
ードに対応させて記憶するレコード配置工程、(c)上
記フレームを複数の固定長のブロックサイズに分割して
固定長フォーマットとして記憶する固定長ブロック記憶
工程。
【0016】また、この発明に係るデータアクセス方法
は前述したデータ記憶フォーマット変換方法により作成
された固定長のブロックサイズに分割されたデータに対
して従来から存在する可変長レコード方式のアクセス命
令によりアクセスするための方法であり、以下の工程を
有するものである。 (a)可変長フォーマットのレコードをアクセスするた
めのコマンドとアクセスするデータの検索情報を入力す
るアクセスコマンド入力工程、(b)上記アクセスコマ
ンド入力工程により入力した検索情報からアクセスする
レコードが記憶されているフレームの位置情報を推定す
る位置情報推定工程、(c)上記位置情報推定工程によ
り推定された位置情報をもつフレーム以降のフレームを
順に固定長フォーマットで記憶された複数の固定長ブロ
ックから再生し、アクセスするレコードを検索するレコ
ード検索工程。
【0017】
【作用】この発明におけるデータ記憶フォーマット変換
方式においては、ギャップ削除手段によりギャップを削
除してしまうため、磁気ディスク等にデータを保持する
場合に記憶容量が少なくて済む。またレコード配置手段
が管理単位の中に可変長レコードの位置を示す第1の位
置情報と、可変長レコードとして記録された場合の相対
位置を示す第2の位置情報を記憶しているため、従来の
ソフトウェアから可変長レコード方式ののアクセス命令
が来た場合、可変長レコード方式の相対位置を示す第2
の位置情報を用いて管理単位を検索し、次に検索された
管理単位の中の可変長レコードの位置を示す第1の位置
情報を用いて目的とするレコードを検索することが可能
になる。このためアクセス回数が最小限で済む。
【0018】また、この発明におけるアクセス制御装置
においては、位置計算手段が、従来のソフトウェアから
の可変長レコード方式のアクセス命令に付随するレコー
ドの相対位置情報から固定長レコード方式による管理単
位の位置を大まかに計算するため、レコード検索手段
が、この計算された位置情報をもとに固定長レコード方
式で記録されたデータをアクセスすることができる。こ
のようにこの発明に係るアクセス制御装置は位置計算手
段とレコード検索手段を備えることにより、従来例で説
明したようなセットセクタコマンドをサポートすること
が可能になる。
【0019】また、この発明におけるデータ記憶フォー
マット変換方法はギャップ削除工程によりギャップを削
除したのち、レコード配置工程により各可変長レコード
をフレーム内に順に配置すると共にそのアクセス情報を
共にフレームに記憶させる点に特徴がある。さらに、こ
のフレームは固定長のブロックサイズに分割されて記憶
されるためフレームを固定長レコード方式で記憶するこ
とができる。
【0020】また、この発明におけるデータアクセス方
法においては位置情報推定工程がアクセスコマンドによ
り入力された検索情報から固定長レコード方式に基づい
て記憶される場合の位置情報を推定し、レコード検索工
程によりこの推定された位置情報に基づいてフレームを
検索するのでフレームを検索する回数すなわちメモリの
アクセス回数を最小限に押さえることが可能になり、高
速なアクセスが可能になる。
【0021】
【実施例】
実施例1.図1はこの発明を説明するための概略ブロッ
ク図である。ホスト計算機1はチャネル2を有してい
る。チャネル2は図に示すように複数のチャネル2a〜
2eを有している。例えばこのうちのひとつのチャネル
2bには磁気ディスク制御装置5が接続されている。磁
気ディスク制御装置5は内部にキャッシュメモリ6を有
している。磁気ディスク制御装置5はキャッシュメモリ
6を介してFBAディスク9との間でデータのリードあ
るいはライトを行なう。FBAディスク9は固定長のブ
ロックサイズをもつブロック9a〜9e有しており、F
BAディスク9に記憶されるデータは全てこのブロック
単位に読み書きされる。
【0022】次に、CKD−FBA変換の概略について
説明する。ホスト計算機1では従来のCKD方式で記録
されたデータをアクセスするためのソフトウェアが動作
する。このソフトウェアからはCKDコマンド4がチャ
ネル2bを介して磁気ディスク制御装置5に出力され
る。例えばCKDコマンド4がライトコマンドである場
合には、CKDフォーマットのレコード3は可変長レコ
ード3a,3b,3cとして出力される。磁気ディスク
制御装置5はこの可変長レコード3a,3b,3cをキ
ャッシュメモリ6に記憶する。その際、キャッシュメモ
リにはCKDのトラックイメージ7が構成される。すな
わちCKDのトラックイメージ7は可変長レコード3
a,3b,3cをトラックの先頭から順に配置したイメ
ージとなる。従来ならばここでフィールド間ギャップ及
びレコード間ギャップが生成されて付加されることにな
るが、この場合にはギャップは全て取り除かれる。磁気
ディスク制御装置5はキャッシュメモリ6に作られたC
KDのトラックイメージ7をFBAフォーマットのレコ
ード8に変換する。FBAフォーマットのレコード8は
固定長のブロック8a〜8eによって構成されている。
磁気ディスク制御装置5はこのFBAフォーマットのレ
コード8をFBAディスク9に書き込む場合にはFBA
コマンド10を出力する。ブロック8a〜8eはFBA
ディスク9にあるブロック9a〜9eに対応してそれぞ
れ記憶される。
【0023】図2は、前述したCKD−FBA変換の概
略をさらに詳しく説明するためのブロック図である。ホ
スト計算機1、磁気ディスク制御装置5、キャッシュメ
モリ6、FBAディスク9は前述した図1と同様のもの
でありここではその説明を省略する。この磁気ディスク
制御装置5の詳細な動作について図3、図4、図5を用
いてさらに説明する。
【0024】図3、図4、図5はレコード記憶フォーマ
ット変換方式を説明するものである。先ず、図3(a)
に示す元のCKDトラックフォーマットに対し、図3
(b)に示すように、レコード間ギャップ、フィールド
間ギャップ等全てのギャップG1,G2,G3を削除す
る。
【0025】次に、図3(b)に示すギャップ削除後の
例えば48KBあるCKDレコードの1トラックデータ
を図3(c)に示す如く、後述する制御情報を含んで、
FBAレコードの固定ブロック長の整数倍(レコード数
倍)に相当する管理単位、例えば、次の(d)で付加す
る制御情報も含め、12KB単位に納まるよう分割す
る。
【0026】次に、図3(c)に示す管理単位に対し、
その中に含まれる全てのCKDレコードの位置を示す制
御情報を、図3(d)及び図4(d)に示す如く、管理
単位の最後尾に後ろから順番に書いていく。
【0027】ここで、図4(d)においては、レコード
の管理単位内の位置情報のサイズを可変にすることによ
り、位置情報を記憶する場所をあらかじめ確保する必要
がなく位置情報の総容量を減らすことになっている。す
なわち、可変長レコードは管理単位の先頭から記載さ
れ、位置情報は管理単位の後ろから順番に記憶されて行
くため位置情報の数と可変長レコードの数は一致してお
り、両者の記憶領域が管理単位内でぶつかるまで記憶で
きることになる。このようにして実際に記録されている
レコードの分だけしか位置情報領域を使用しないような
制御を可能にする。しかし、位置情報領域のサイズを可
変にすると、データ転送時やフォーマットライト時の制
御が複雑なものとなり得るが、ここでは次のような方式
を採用して改善を図っている。
【0028】今、図4(d)において、レコードの位置
情報の管理単位をフレーム、実際にCKDレコードを記
録する領域をレコードフレーム、制御情報を記録する領
域をコントロールフレーム、レコードの位置情報をレコ
ードポインタと呼ぶ。・実際に記録されているレコード
の分だけしかレコードポインタを使用しない。これによ
りレコードポインタ領域のサイズは、管理単位のサイズ
を12KBとし最大94個のCKDレコードが記録され
レコード1個当りの位置情報として4Bとすると、最大
でも、1CKDトラック当り、 4B×94=276B で済む。この4Bの位置情報は図4(d)においてはレ
コードポインタとして示されており、レコードポインタ
は1Bのレコードナンバと1Bのセクタ値と2Bのメモ
リアドレスから構成されている。レコードナンバは記録
される可変長レコードの番号を記録しておくものであ
る。セクタ値は記録されるレコードがCKDレコード方
式で記録される場合のセクタ値を記憶するものである。
メモリアドレスはフレームに記憶されるレコードのフレ
ーム内のアドレスを記憶するものである。セクタ値はセ
ットセクタコマンドにより指定されたセクタ値と比較さ
れることにより利用される。同様にレコードナンバはサ
ーチIDコマンドにより指定されたレコードナンバと比
較されるために利用される。メモリアドレスはレコード
フレームに記憶されている実際のレコードのアドレスを
示すものである。セットセクタコマンド及びサーチID
コマンドによりレコードポインタのセクタ値とレコード
ナンバが比較され一致した場合にこのメモリアドレスを
用いてレコードが読み出される。
【0029】レコードポインタを含むコントロールフレ
ームのサイズは、別途、制御情報、すなわちコントロー
ルフレームポインタとして保持している。この情報によ
り、コントロールフレームのサイズが可変となっても、
制御を複雑にせずに済ませる。
【0030】これらの制御情報であるコントロールフレ
ームは、各フレームの先頭ではなく、最後尾に記録す
る。また、コントロールフレーム内のレコードポインタ
も後ろから順番に並べていく。実際のレコードがレコー
ドフレーム内で前にあるものほど、それに対応するレコ
ードポインタはコントロールフレーム内で後ろにくる。
これにより、フォーマットライト時の制御も無理がなく
なる。
【0031】次に、図4(d)に示すように、CKDレ
コードの位置情報等付加後、12KBのレコードフレー
ムを、図5(e)に示す如く、FBAレコードのブロッ
クサイズ例えば1024B(1KB)相当に分割し、さ
らに、図5(f)に示す如く、各レコードのデータフィ
ールドにIDフィールドをそれぞれ設けて、図5(g)
に示す如く、FBAレコード方式のディスクを得る。
【0032】また、固定ブロック内に記録されているC
KDレコード1個ごとにCKDフォーマットでのトラッ
クの先頭からの相対位置を示す情報、例えばセグメント
ナンバを残しておく。このようにすることにより、各レ
コードの位置が分かれば、そのレコードに記録されてい
る相対位置を示す情報から直ちに既に消費しているCK
Dフォーマット上でのトラック容量が分かる。
【0033】次に、図2に戻り磁気ディスク制御装置5
の動作について説明する。磁気ディスク制御装置5はホ
スト計算機1とFBAディスク9との間でデータの変換
及び転送を行うチャネルパスサーバ51(以下、CPS
ともいう)を有している。チャネルパスサーバ51には
ホスト計算機1からコマンド及びデータを入力するため
の入力部52を有している。また、FBAディスク9か
らのデータをホスト計算機1に出力するための出力部5
2を有している。入力部52からホスト計算機1で動作
しているソフトウェアによる可変長レコード方式のアク
セス命令が入力された場合に位置計算部53は例えばセ
ットセクタコマンドで指定されたセクタ値に基づいてア
クセスする可変長レコードが記憶されていると考えられ
る管理単位の位置を計算する。この位置計算部による計
算は前述したようにFBAディスク9にデータが記録さ
れる場合には全てのギャップが取り除かれているために
CKDディスク10に存在している場合よりも前方向に
詰まった形でデータが記憶されており、位置計算部53
は推測により、アクセスしようとしてる可変長レコード
が記憶されていると考えられる管理単位の位置を計算す
る。レコード検索部54は位置計算部53により計算さ
れた管理単位の位置をもとに管理単位をキャッシュメモ
リ6に読み込みアクセスしようとするレコードを検索す
る。管理単位検索部56はアクセスしようとするレコー
ドの相対位置情報(セクタ値)と検索された管理単位に
保持されている相対位置情報(セクタ値)とを比較し、
アクセスしようとする相対位置情報をもつ管理単位が見
つかるまでFBAディスク9に存在する管理単位を順に
キャッシュメモリに読み込む。レコード特定部57は管
理単位検索部56により目的とする管理単位が検索され
た場合にアクセスしようとする可変長レコードをその管
理単位に含まれるアドレス情報を用いて特定する。FB
Aディスク9とキャッシュ・メモリ6の間のデータの読
み書きをFBAコマンドを使用して実行するのは、デー
タ・パス・サーバ(DPS)55であるマネージャ
は、全体の制御とキャッシュ・メモリ6の管理を行な
う。
【0034】CKD−FBA変換を行う際には三つのポ
イントが重要となる。すなわち、 I.CKDのトラック・フォーマットのどこを残し、ど
こを削除するか? II.そのようにトラック・フォーマットを加工した
後、どのようにして、元のレコードの位置を見つけるか
? III.CKDのトラック容量をどのようにチェックす
るか、すなわち、トラック・オーバランの検知をどのよ
うに行うか? が三つのポイントとして検討されなければならない。上
記の三つのポイントについて考えてみると、他のバリエ
ーションが考えられることが分かる。以下、順番に各ポ
イントについてバリエーションを考える。
【0035】まず、I.については、ECCやパディン
グ等、元々ディスク装置側で付加していた情報をDKC
で生成してからFBAに変換するのは無駄である。従っ
て、「どこを残し、どこを削除するか?」ということ
は、事実上「どのギャップを残し、どのギャップを削除
するのか?」ということになる(ECCやパディング以
外の、ディフェクト情報のようなDKCで管理していた
制御情報や物理パラメータはギャップに含めて考えれば
良い)。このギャップの残し方については、従来の方式
も含め以下のようなバリエーションが考えられる(図6
参照)。 <ケース I−1> ・・・「IBM4321/433
1プロセッサ互換性機能」の方法 ・レコード間ギャップも含めすべてのギャップを削除し
てしまう。 <ケース I−2> ・・・従来の方法 ・レコード間ギャップだけ残し、フィールド間ギャップ
は取り除く。 <ケース I−3> ・レコード間ギャップだけでなく、すべてのフィールド
間ギャップも残す(ECCやパディングなどは取り除
く)。
【0036】これらの各方法は、それぞれ、ギャップ以
外の細かい情報の扱いをどうするかによって、さらにい
ろいろなバリエーションが考えられる。また、これらの
各方法は、なんらかのIIの手段(レコードの位置決め
方法)と組み合わせられなければならないが、これに
は、従来の方法も含め以下のようないくつかの方法が考
えられる(図7参照、Iの各ケースと一対一に対応して
いるわけではない)。 <ケース II−1> ・レコードの位置を示す特別の情報はいっさい持たな
い。 ・レコードを探すときは、常にトラックの先頭のレコー
ドから順番に読んでいき、各レコードのカウント・フィ
ールドに含まれるKL,DLの値から次のレコードのカ
ウント・フィールドの位置を計算する。 <ケース II−2> ・・・従来の方法 ・部分的に、レコードの位置を示す情報をレコードその
ものとは別に保持する。(従来の方法では、各FBAブ
ロックの先頭に位置するレコードのカウント・フィール
ドの位置を保持する) ・位置を示されているレコードより後ろのレコードは<
ケースII−1>と同じ様に、位置の分かっているレコ
ードから順番に読みだし、各レコードのKL,DLから
次のレコードの位置を計算する。 <ケース II−3> ・すべてのレコードの位置を示す情報をレコードそのも
のとは別に保持する。 ・すべてのレコードはこの情報から位置を探す。 ・レコードの位置情報は全レコード分を一括して一箇所
に保持する方法(例えば、トラックの先頭)と、分散し
て保持する方法(例えば、各FBAブロックの先頭にそ
のFBAブロックに含まれるレコードの位置を示す情報
を保持する)が考えられる。 <ケース II−4> ・FBA変換後の論理的なトラック・イメージ上でもな
んらかのアドレス・マーク(AM)を生成し、これを目
印にレコードを探す(メモリ上でもAMサーチを行
う)。しかし、この方法はうまいアドレス・マークの生
成法を具体的に考えついていないこと、メモリ上でAM
サーチを行うために全データを順番に読み出すことはメ
モリ負荷を不必要に高め非効率的であることなどから、
検討の範囲から除外する。
【0037】次いで、IIIのトラック容量のチェック
方法については、以下のような方法が考えられる(図8
参照)。これらの方法は、Iのギャップの残し方によっ
ては、適用できるものとできないものがある。 <ケース III−1> ・トラックの先頭からのすべてのレコードのKL,DL
を知り、あいだのギャップやパディングの分(これらは
すべて一意的にそのサイズが決っている)も全部足し込
んで、既に消費されているCKDフォーマット上でのト
ラック容量を計算する。 <ケース III−2> ・・・従来の方法 ・削除したECCやパディングの分を残っているギャッ
プ(従来の方法ではレコード間ギャップ)の長さを伸ば
してつじつまを合わせる。これにより、各レコードのト
ラックの先頭からの相対位置を元のCKDトラックのま
ま維持する。 ・従って、各レコードの位置が分かれば、そのレコード
のメモリ上のアドレスから直ちに既に消費しているCK
Dフォーマット上でのトラック容量が分かる。 <ケース III−3> ・各レコードにCKDフォーマットでのトラックの先頭
からの相対位置を示す情報(例えばセグメント・ナン
バ)を残しておく。 ・従って、各レコードの位置が分かれば、そのレコード
に記録されている相対位置を示す情報から直ちに既に消
費しているCKDフォーマット上でのトラック容量が分
かる。
【0038】図8では<ケース III−1>と<ケー
ス III−3>は、すべてのギャップを取り除いてい
るケース<ケース I−1>で表現しているが、これら
の方法はいずれもギャップがどのように残っていても構
わない。また、<ケース III−2>は、レコード間
ギャップだけ残しているケース<ケース I−2>で表
現しているが、すべてのギャップを残すケース<ケース
I−3>でも構わない。ただし、<ケース III−2
>は、すべてのギャップを取り去る<ケース I−1>
では、ギャップ長の調節により、メモリ・アドレスを元
のレコードの相対位置のまま維持することができないの
で、原理上、実現不可能である。これらのI、II、I
IIの各ケースの組み合せにより、(上述のように不可
能な組み合わせ、また、無意味な組み合わせも有り)い
くつかのCKD−FBA変換方式ができることになる。
従来の方式は<ケース I−2>,<ケース II−2
>,<ケース III−2>の組み合せによるCKD−
FBA変換方式ということができる。
【0039】図9に前述の各ケースの組み合せのうち有
効なものの一覧を示す。各ケースの組み合せのうち、実
現不可能なもの、無意味なものはあらかじめ除いてあ
る。比較項目の欄の説明については、次節以降に示す。
実現不可能なものとしては、前述した下記の組み合せが
ある。 ●<ケース I−1>と<ケース III−2>の組み
合わせ <ケース I−1>はすべてのギャップを取り除く方式
であるので、ギャップ長の調節により、メモリ・アドレ
スを元のレコードの相対位置のまま維持する<ケース
III−2>のトラック容量のチェック方法は不可能で
ある。また、下記の組み合わせは不可能ではないが、以
下の理由により方式上無意味である。 ●<ケース II−2>と<ケース III−1>の組
み合わせ ●<ケース II−3>と<ケース III−1>の組
み合わせ <ケース II−2>と<ケース II−3>はいずれ
もレコードとは別に保持されているレコードの位置情報
からレコードを捜し出す方式である。従って、あるレコ
ードを探すのにトラック上の最初のレコードから順番に
読み出す必要がないという利点がある。しかし、<ケー
ス III−1>はトラック容量をチェックするため
に、トラック上の全カウント・フィールドのデータが必
要である。従って、これらの組み合せでは、結局、一度
はトラック上の最初のレコードから順番に読み出すこと
になり、<ケース II−2>または<ケース II−
3>の方式を採用した意味がなくなる。すなわち、<ケ
ース III−1>はレコードの位置決め方式としてト
ラック上の全レコードを読み出す<ケース II−1>
を採用したときだけ意味を持つトラック容量チェック方
式ということができる。これら以外の組み合わせは、す
べて図9にのせてある。図9の見方は、一行が一つの組
み合せで実現されるCKD-FBA変換方式を示してお
り、○のついている方式がその組み合せで採用されてい
る方式である。従って、例えば一行目の方式は、「ギャ
ップの残し方」の方式としては<ケース I−1>を採
用し、「レコード位置決め方法」については<ケース
II−1>を、「トラック容量のチェック方法」として
は<ケース III−1>を採用したCKD−FBA変
換方式ということになる。今後、このような方式を便宜
上<1,1,1>と表記することにする。この表記法で
は、従来の方式は<2,2,2>と表現できる。
【0040】以後、各CKD−FBA変換方式の比較を
行うが、まず、そのために、各変換方式の比較ポイント
を下記のように考える。 a.CKDフォーマットのトラック・イメージを磁気デ
ィスク制御装置(DKC)のキャッシュ・メモリ(以
下、単にメモリともいう)上に展開する際の、メモリ容
量の大小。・・・このメモリ容量は変換方式だけでな
く、1トラック分の容量はそのときのトラック・フォー
マット(レコード数の大小など)に大きく依存するた
め、しょせん最悪値にあわせて多めに取らざるを得な
い。しかも、このメモリ・イメージをFBAの物理ディ
スクに書くことになるのであるから、FBAディスクの
ブロック(セクタ)容量の整数倍となる。従って、少々
の大小はあまり重大な問題ではない。主として、ギャッ
プの残し方、レコードの位置決めのためなどに必要な付
加情報の大小などによる。 b.データ転送のやりやすさ・・・チャネルとの間で連
続してデータ転送する部分などは、メモリ上でも連続し
ていた方がやりやすい。例えば、キー・フィールドとデ
ータ・フィールドは、メモリ上でも連続していた方が転
送しやすい。ただし、元々ギャップの存在していた部分
については、時間を取ってやらないとチャネルの方がオ
ーバランを起こす可能性があるので、時間的なことでは
あまり急ぐ必要はない。 c.目的レコードを見つけるときの手順・・・メモリ上
のCKDフォーマットのトラック・イメージ内で目的レ
コードを見つけるための手順である。また、このとき、
単に手順の回数だけでなく、そのために必要なメモリ・
アクセスの回数の多さなども考慮する必要がある。トラ
ック・イメージは共通領域であるキャッシュ・メモリ上
に展開するので、手順そのもの(例えば計算量)が少々
多くても、メモリ・アクセス回数が少ない方がシステム
全体では有利である。主として、このメモリ・アクセス
回数はレコードの位置決め方法で決る。 d.フォーマット・ライト時の手順・・・アップ・デー
ト・ライト時は既にフォーマットされているレコードの
KL,DL見てライトすれば良いが、フォーマット・ラ
イト時は、メモリ上で残トラック容量とホストから送ら
れてきたレコードのKL,DLの整合性を調べる必要が
ある。すなわち、トラック・オーバランのチェックが必
要である。さらに、方式によっては、レコード以外の制
御情報をメンテナンスする必要があるので、そのための
手順及び、メモリ・アクセスの多さなども考慮する必要
がある。 以下、この比較ポイントをもとに各CKD−FBA変換
方式の個々の特徴や、細かい分析を行う。
【0041】<1,1,1> ・ギャップ:すべて削除 ・レコード位置決め:トラックの最初のレコードから全
レコード・リード ・トラック容量チェック:トラックの最初のレコードか
ら全レコード・リード a.メモリ容量 この方式は、ギャップもすべてなく、制御情報の付加も
いっさいないので、メモリの利用効率は、もっとも良
い。 b.データ転送のやりやすさ 各フィールドがメモリ上で連続しているので、チャネル
との間で連続したフィールドのデータ転送する時、メモ
リ・アドレスはカウント・アップしていくだけでよい。 c.目的レコードを見つけるときの手順 目的レコードを見つけるためには、トラックの先頭から
該当レコードまでのレコード数だけメモリをアクセスす
る必要がある。すなわち、各レコードのカウント・フィ
ールドのリードが必要になる。各レコードのカウント・
フィールドを取得した後、それらのKL,DLから目的
レコードの位置を計算していくのは、余分なギャップな
どがないぶん、KL,DLを足しこんでいけばよく単純
である。 d.フォーマット・ライト時の手順 トラック容量をチェックするためにも、トラックの先頭
から該当レコードまでのレコード数だけメモリをアクセ
スする必要がある。トラック容量のチェックのために
は、逆に、削除してしまったギャップなどの分も換算し
てやる必要がある。フォーマット・ライト時、更新しな
ければならない制御情報はない。
【0042】<1,2,3> ・ギャップ:すべて削除 ・レコード位置決め:FBAブロックに含まれる最初の
レコードの位置を保持 ・トラック容量チェック:各レコードにセグメント・ナ
ンバ等の相対位置情報を保持 a.メモリ容量 ギャップはすべて削除するが、FBAのブロックに含ま
れる最初のレコードの位置や、各レコードのセグメント
・ナンバ等を保持するための制御情報の分だけは、<
1,1,1>より余分にメモリを使用する。 b.データ転送のやりやすさ やはり、各フィールドがメモリ上で連続しているので、
チャネルとの間で連続したフィールドのデータ転送する
時、メモリ・アドレスはカウント・アップしていくだけ
でよい。しかし、単一フィールド内であっても、FBA
のブロックにまたがったような場合は、メモリ上でもF
BAブロックに含まれる最初のレコードの位置情報など
により分断されるので、その位置情報の部分をスキップ
・ディフェクトなどのように飛ばしてデータ転送を行う
必要がある。 c.目的レコードを見つけるときの手順 目的レコードを探すためには、FBAのブロックの最初
のレコードから目的レコードまでの間に存在するレコー
ドの回数だけメモリをアクセスする必要がある。従っ
て、<1,1,1>よりはメモリ・アクセス回数は少な
い。FBAのブロックの最初のレコードの位置から目的
レコードの位置を計算する方法はほとんど<1,1,1
>と同じで単純である(カウント・フィールドのサイズ
とKL,DLを足し込んでいけば良い)。 d.フォーマット・ライト時の手順 トラック容量のチェックのためには、フォーマット・ラ
イトしようとしているレコードの一つ前のレコードのセ
グメント・ナンバ(本来のCKDフォーマットで、その
レコードのトラック上での相対位置を示す情報)とK
L,DLから、後どれだけのサイズのレコードがライト
できるか計算する。フォーマット・ライトしたときは、
ライトしたレコード自身にそのレコードのセグメント・
ナンバを書いておかなければならない。同時に、新たな
FBAブロック上に新たなカウント・フィールドが生じ
たときは、そのFBAブロックに先頭のレコードのカウ
ント・フィールドの位置を示す情報を書かなければなら
ない。
【0043】<1,3,3> ・ギャップ:すべて削除 ・レコード位置決め:すべてのレコードの相対位置情報
を保持 ・トラック容量チェック:各レコードにセグメント・ナ
ンバ等の相対位置情報を保持 a.メモリ容量 ギャップはすべて削除するが、全レコードの位置情報を
別に保持するため、<1,2,3>のようにFBAのブ
ロックに含まれる最初のレコードの位置だけ保持する場
合より、さらにメモリ容量は多く必要である。各レコー
ドにセグメント・ナンバなどを保持するのは<1,2,
3>と同じである。 b.データ転送のやりやすさ ほぼ、<1,2,3>と同じである。各フィールドがメ
モリ上で連続しているので、チャネルとの間で連続した
フィールドのデータ転送する時、メモリ・アドレスはカ
ウント・アップしていくだけでよい。レコードの位置情
報をFBAのブロックごとに分散して持つ場合は、単一
フィールド内であっても、FBAのブロックにまたがる
場合、メモリ上でもFBAブロックに含まれるレコード
の位置情報などにより分断されるので、その位置情報の
部分をスキップ・ディフェクトなどのように飛ばしてデ
ータ転送を行う必要がある。 c.目的レコードを見つけるときの手順 目的レコードを探すためには、レコードの位置情報を一
回だけ読み取れば良いので、メモリ・アクセス回数は全
方式の中で最小である。目的レコードの位置は、その情
報からダイレクトに分かる。 d.フォーマット・ライト時の手順 <1,2,3>とトラック容量のチェック方法が同じで
あるので、フォーマット・ライト時の手順も<1,2,
3>とほぼ同じである。トラック容量のチェックのため
には、フォーマット・ライトしようとしているレコード
の一つ前のレコードのセグメント・ナンバ(本来のCK
Dフォーマットで、そのレコードのトラック上での相対
位置を示す情報)とKL,DLから、後どれだけのサイ
ズのレコードがライトできるか計算する。フォーマット
・ライトしたときは、ライトしたレコード自身にそのレ
コードのセグメント・ナンバを計算して書いておかなけ
ればならない。同時に、必ずレコードの位置情報を保持
している制御情報に、そのレコードのカウント・フィー
ルドの位置を示す情報を書き足さなければならない。
【0044】<2,1,1> ・ギャップ:フィールド間ギャップのみ削除、レコード
間ギャップは残す ・レコード位置決め:トラックの最初のレコードから全
レコード・リード ・トラック容量チェック:トラックの最初のレコードか
ら全レコード・リード a.メモリ容量 余分な制御情報の付加はないが、レコード間ギャップを
残すのでメモリ容量は<1,*,*>方式より多く必要
である。しかし、残したレコード間ギャップによりレコ
ードの相対位置を維持しようということではないので、
レコード間ギャップを無理に伸ばす必要はない。従っ
て、トラック容量のチェック方法として、レコード間ギ
ャップ長を伸ばしてレコードの相対位置を維持する<
*,*,2>方式に比べメモリ容量は少なくできるが、
逆に言うと、レコード間ギャップを残した意味もない。 b.データ転送のやりやすさ レコード間ギャップは存在するが、フィールド間ギャッ
プは無いので、チャネルとの間で連続したフィールドの
データを転送するとき(C→K→D)、メモリ・アドレ
スはカウント・アップするだけでよい。余分な制御情報
もないので、単一フィールドがFBAのブロックにまた
がっても、メモリ上でそのフィールドが分断されること
もない。 c.目的レコードを見つけるときの手順 <1,1,1>とほぼ同じである。目的レコードを見つ
けるためには、トラックの先頭から該当レコードまでの
レコード数だけメモリをアクセスする必要がある。すな
わち、各レコードのカウント・フィールドのリードが必
要となる。各レコードのカウント・フィールドを取得し
た後、それらのKL,DLから目的レコードの位置を計
算していくには、KL,DLに加えレコード間ギャップ
を足しこんでいけばよく単純である。 d.フォーマット・ライト時の手順 これも<1,1,1>とほぼ同じである。トラック容量
をチェックするためにも、トラックの先頭から該当レコ
ードまでのレコード数だけメモリをアクセスする必要が
ある。トラック容量のチェックのためには、削除してし
まったフィールド間ギャップなどの分も換算してやる必
要がある。フォーマット・ライト時、更新しなければな
らない制御情報はない。
【0045】<2,2,2> ・・・従来の方式 ・ギャップ:フィールド間ギャップのみ削除、レコード
間ギャップは残す ・レコード位置決め:FBAのブロックに含まれる最初
のレコード位置を保持 ・トラック容量チェック:ギャップ長の調節により各レ
コードの相対位置を維持 a.メモリ容量 フィールド間ギャップなどは削除するものの、その分レ
コード間ギャップを伸ばして各レコードの相対位置を元
のCKDフォーマットのまま維持するので、結局必要な
メモリ容量は、元のCKDフォーマットのトラック容量
と同じで、さらにFBAのブロックに含まれる最初のレ
コードの位置情報の分だけ余分にメモリが必要である。 b.データ転送のやりやすさ レコード間ギャップは存在するが、フィールド間ギャッ
プは無いので、チャネルとの間で連続したフィールドの
データを転送するとき(C→K→D)、メモリ・アドレ
スはカウント・アップするだけでよい。しかし、<2,
1,1>と異なり、単一フィールド内であっても、FB
Aのブロックにまたがったような場合は、メモリ上でも
FBAブロックに含まれる最初のレコードの位置情報な
どにより分断されるので、その位置情報の部分をスキッ
プ・ディフェクトなどのように飛ばしてデータ転送を行
う必要がある。 c.目的レコードを見つけるときの手順 目的レコードを探すためには、FBAのブロックの最初
のレコードから目的レコードまでの間に存在するレコー
ドの回数だけメモリをアクセスする必要がある。従っ
て、<2,1,1>よりはメモリ・アクセス回数は少な
い。FBAのブロックの最初のレコードの位置から目的
レコードの位置を計算する方法はほとんど<2,1,1
>と同じで単純である(カウント・フィールドのサイズ
とKL,DLさらにレコード間ギャップをどんどん足し
込んでいけば良い)。また、各レコードのCKDフォー
マットでの相対位置をメモリ上でも維持しているので、
Set Sectorの値から目的レコードの含まれる
FBAのブロックを正確に求めることができる。 d.フォーマット・ライト時の手順 トラック容量のチェックには、各レコードのCKDフォ
ーマットでの相対位置をメモリ上でも維持しているの
で、フォーマット・ライトしようとしているレコードの
メモリ上のアドレスが分かれば(c.の手順で分か
る)、直ちに後どれだけのサイズのレコードがライトで
きるか計算できる。フォーマット・ライトして、新たな
FBAブロック上に新たなカウント・フィールドが生じ
たときは、そのFBAブロックに先頭のレコードのカウ
ント・フィールドの位置を示す情報を書かなければなら
ない。
【0046】<2,2,3> ・ギャップ:フィールド間ギャップのみ削除、レコード
間ギャップは残す ・レコード位置決め:FBAのブロックに含まれる最初
のレコード位置を保持 ・トラック容量チェック:各レコードにセグメント・ナ
ンバ等の相対位置情報を保持 a.メモリ容量 フィールド間ギャップなどは削除し、レコード間ギャッ
プを残すのは<2,2,2>と同じであるが、残したレ
コード間ギャップによりレコードの相対位置を維持しよ
うということではないので、レコード間ギャップを無理
に伸ばす必要はない(従って、やはりギャップを残す意
味は薄くなる)。しかし、FBAのブロックに含まれる
最初のレコードの位置情報の分は余分に必要である。ま
た、各レコードに含まれるセグメント・ナンバの分も必
要であるので、結局メモリ容量としては<2,1,1>
より多く、<2,2,2>よりは少なくなる。 b.データ転送のやりやすさ これは<2,2,2>と全く同じである。レコード間ギ
ャップは存在するが、フィールド間ギャップは無いの
で、チャネルとの間で連続したフィールドのデータを転
送するとき(C→K→D)、メモリ・アドレスはカウン
ト・アップするだけでよい(各レコードに保持されてい
るセグメント・ナンバなどはカウント・フィールドに含
まれるので、データ転送時C→Kの邪魔になることはな
い)。しかし、単一フィールド内であっても、FBAの
ブロックにまたがったような場合は、メモリ上でもFB
Aブロックに含まれる最初のレコードの位置情報などの
制御情報により分断されるので、その制御情報の部分を
スキップ・ディフェクトなどのように飛ばしてデータ転
送を行う必要がある。 c.目的レコードを見つけるときの手順 これも<2,2,2>と全く同じである。目的レコード
を探すためには、FBAのブロックの最初のレコードか
ら目的レコードまでの間に存在するレコードの回数だけ
メモリをアクセスする必要がある。従って、<1,1,
1>よりはメモリ・アクセス回数は少ない。FBAのブ
ロックの最初のレコードの位置から目的レコードの位置
を計算する方法はほとんど<1,1,1>と同じで単純
である(カウント・フィールドのサイズとKL,DLさ
らにレコード間ギャップをどんどん足し込んでいけば良
い)。 d.フォーマット・ライト時の手順 トラック容量のチェックのためには、フォーマット・ラ
イトしようとしているレコードの一つ前のレコードのセ
グメント・ナンバ(本来のCKDフォーマットで、その
レコードのトラック上での相対位置を示す情報)とK
L,DLから、後どれだけのサイズのレコードがライト
できるか計算する。フォーマット・ライトしたときは、
ライトしたレコード自身にそのレコードのセグメント・
ナンバを計算して書いておかなければならない。同時
に、新たなFBAブロック上に新たなカウント・フィー
ルドが生じたときは、そのFBAブロックに先頭のレコ
ードのカウント・フィールドの位置を示す情報を書かな
ければならない。
【0047】<2,3,2> ・ギャップ:フィールド間ギャップのみ削除、レコード
間ギャップは残す ・レコード位置決め:すべてのレコードの相対位置情報
を保持 ・トラック容量チェック:ギャップ長の調節により各レ
コードの相対位置を維持 a.メモリ容量 残したレコード間ギャップ長の調節により各レコードの
相対位置を元のCKDフォーマットのまま維持するので
あるから、<2,2,2>と同じ様に、必要なメモリ容
量は基本的には元のCKDフォーマットのトラック容量
と同じである。しかし、制御情報として付加するレコー
ドの位置情報は、<2,2,2>のようにFBAのブロ
ックの最初のレコードの分だけでなく、すべてのレコー
ドの分を保持するので、メモリ容量も<2,2,2>よ
り多くなり、全方式中最大である。 b.データ転送のやりやすさ <2,2,2>,<2,2,3>と全く同じである。レ
コード間ギャップは存在するが、フィールド間ギャップ
は無いので、チャネルとの間で連続したフィールドのデ
ータを転送するとき(C→K→D)、メモリ・アドレス
はカウント・アップするだけでよい。しかし、レコード
の位置情報をFBAのブロックごとに分散して持つ場合
は、単一フィールド内であっても、FBAのブロックに
またがったような場合は、メモリ上でもFBAブロック
に含まれるレコードの位置情報などにより分断されるの
で、その位置情報の部分をスキップ・ディフェクトなど
のように飛ばしてデータ転送を行う必要がある。 c.目的レコードを見つけるときの手順 <1,3,3>と全く同じである。目的レコードを探す
ためには、レコードの位置情報を一回だけ読み取れば良
いので、メモリ・アクセス回数は全方式の中で最小であ
る。目的レコードの位置は、その情報からダイレクトに
分かる。また、各レコードのCKDフォーマットでの相
対位置をメモリ上でも維持しているので、Set Se
ctorの値から目的レコードの含まれるFBAのブロ
ックを正確に求めることができる。 d.フォーマット・ライト時の手順 <2,2,2>と<1,3,3>の中間的な手順とな
る。トラック容量のチェックには、各レコードのCKD
フォーマットでの相対位置をメモリ上でも維持している
ので、フォーマット・ライトしようとしているレコード
のメモリ上のアドレスが分かれば(c.の手順で分か
る)、直ちに後どれだけのサイズのレコードがライトで
きるか計算できる。フォーマット・ライトしたときは、
必ずレコードの位置情報を保持している制御情報に、そ
のレコードのカウント・フィールドの位置を示す情報を
書き足さなければならない。
【0048】<2,3,3> ・ギャップ:フィールド間ギャップのみ削除、レコード
間ギャップは残す ・レコード位置決め:すべてのレコードの相対位置情報
を保持 ・トラック容量チェック:各レコードにセグメント・ナ
ンバ等の相対位置情報を保持 a.メモリ容量 フィールド間ギャップなどは削除し、レコード間ギャッ
プを残すのは<2,3,2>と同じであるが、残したレ
コード間ギャップによりレコードの相対位置を維持しよ
うということではないので、レコード間ギャップを無理
に伸ばす必要はない(従って、やはりギャップを残す意
味は薄くなる)。しかし、すべてのレコードの位置情報
の分は余分にメモリ容量が必要である。また、各レコー
ドに含まれるセグメント・ナンバの分も必要であるの
で、結局メモリ容量としてはよく似た方式である<2,
2,3>よりも多く、<2,3,2>よりは少なくな
る。 b.データ転送のやりやすさ これは<2,3,2>と全く同じである。レコード間ギ
ャップは存在するが、フィールド間ギャップは無いの
で、チャネルとの間で連続したフィールドのデータを転
送するとき(C→K→D)、メモリ・アドレスはカウン
ト・アップするだけでよい(各レコードに保持されてい
るセグメント・ナンバなどはカウント・フィールドに含
まれるので、データ転送時C→Kの邪魔になることはな
い)。また、レコードの位置情報をFBAのブロックご
とに分散して持つ場合は、単一フィールド内であって
も、FBAのブロックにまたがる場合、メモリ上でもF
BAブロックに含まれるレコードの位置情報などにより
分断されるので、その位置情報の部分をスキップ・ディ
フェクトなどのようにして飛ばしてデータ転送を行う必
要がある。 c.目的レコードを見つけるときの手順 これも<2,3,2>と全く同じである。目的レコード
を探すためには、レコードの位置情報を一回だけ読み取
れば良いので、メモリ・アクセス回数は全方式の中で最
小である。目的レコードの位置は、その情報からダイレ
クトに分かる。 d.フォーマット・ライト時の手順 トラック容量のチェックのためには、フォーマット・ラ
イトしようとしているレコードの一つ前のレコードのセ
グメント・ナンバ(本来のCKDフォーマットで、その
レコードのトラック上での相対位置を示す情報)とK
L,DLから、後どれだけのサイズのレコードがライト
できるか計算する。フォーマット・ライトしたときは、
ライトしたレコード自身にそのレコードのセグメント・
ナンバを計算して書いておかなければならない。同時
に、必ずレコードの位置情報を保持している制御情報
に、そのレコードのカウント・フィールドの位置を示す
情報を書き足さなければならない。
【0049】<3,1,1> ・ギャップ:レコード間ギャップ、フィールド間ギャッ
プとも残す ・レコード位置決め:トラックの最初のレコードから全
レコード・リード ・トラック容量チェック:トラックの最初のレコードか
ら全レコード・リード a.メモリ容量 余分な制御情報の付加はないが、レコード間ギャップ、
フィールド間ギャップとも残すので、ほぼCKDフォー
マットのトラック・イメージがそのまま残されるためメ
モリ容量は最大に近くなる。しかし、CKDフォーマッ
トにおけるレコードの相対位置を積極的に維持しようと
言うのではないので、ECCやパディングの分まではメ
モリ容量に加える必要はない。そのかわり、ギャップを
残した意味はあまりなくなる。 b.データ転送のやりやすさ メモリ上でもレコード間、フィールド間ともにギャップ
が存在するので、連続したフィールドのデータ転送をチ
ャネルとの間で行うとき、メモリ・アドレスは単純にカ
ウント・アップするだけではなく、ギャップの分を飛ば
して、再設定する必要がある。しかし、余分な制御情報
はないので、単一フィールドがFBAのブロックにまた
がっても、メモリ上でそのフィールドが分断されること
はない。 c.目的レコードを見つけるときの手順 <1,1,1>とほぼ同じである。目的レコードを見つ
けるためには、トラックの先頭から該当レコードまでの
レコード数だけメモリをアクセスする必要がある。すな
わち、各レコードのカウント・フィールドのリードが必
要になる。各レコードのカウント・フィールドを取得し
た後、それらのKL,DLから目的レコードの位置を計
算していくには、KL,DLに加えレコード間ギャッ
プ、フィールド間ギャップを足しこんでいけばよく単純
である。 d.フォーマット・ライト時の手順 これも<1,1,1>とほぼ同じである。トラック容量
をチェックするためにも、トラックの先頭から該当レコ
ードまでのレコード数だけメモリをアクセスする必要が
ある。トラック容量のチェックのためには、ギャップは
そのまま残っているが、ECCやパディング・データな
どの分は換算してやる必要がある。ECCの分なども含
めぴったり同じ容量をギャップ長で補正していれば、メ
モリ・アドレスから直ちに残トラック容量が分かるが、
これは<3,2,2>方式となる。フォーマット・ライ
ト時、更新しなければならない制御情報はない。
【0050】<3,2,2> ・ギャップ:レコード間ギャップ、フィールド間ギャッ
プとも残す ・レコード位置決め:FBAのブロックに含まれる最初
のレコードの位置を保持 ・トラック容量チェック:ギャップ長の調節により各レ
コードの相対位置を維持 a.メモリ容量 レコード間ギャップ、フィールド間ギャップとも残って
いるが、ギャップ長を調節して各レコードの相対位置を
元のCKDフォーマットのまま維持するので、結局必要
なメモリ容量は<2,2,2>と同じで、元のCKDフ
ォーマットのトラック容量と、FBAのブロックに含ま
れる最初のレコードの位置情報を加えた分だけ必要であ
る。 b.データ転送のやりやすさ メモリ上でもレコード間、フィールド間ともにギャップ
が存在するので、連続したフィールドのデータ転送をチ
ャネルとの間で行うとき、メモリ・アドレスは単純にカ
ウント・アップするだけではなく、<3,1,1>と同
様、ギャップの分を飛ばして、再設定する必要がある。
さらに、<3,1,1>と異なり、単一フィールド内で
あっても、FBAのブロックにまたがったような場合
は、メモリ上でもFBAブロックに含まれる最初のレコ
ードの位置情報などにより分断されるので、その位置情
報の部分をスキップ・ディフェクトなどのように飛ばし
てデータ転送を行う必要がある。 c.目的レコードを見つけるときの手順 <2,2,2>と全く同じである。目的レコードを探す
ためには、FBAのブロックの最初のレコードから目的
レコードまでの間に存在するレコードの回数だけメモリ
をアクセスする必要がある。従って、<3,1,1>よ
りはメモリ・アクセス回数は少ない。FBAのブロック
の最初のレコードの位置から目的レコードの位置を計算
する方法はほとんど<3,1,1>と同じで単純である
(カウント・フィールドのサイズとKL,DLさらにレ
コード間ギャップ、フィールド間ギャップをどんどん足
し込んでいけば良い)。また、各レコードのCKDフォ
ーマットでの相対位置をメモリ上でも維持しているの
で、Set Sectorの値から目的レコードの含ま
れるFBAのブロックを正確に求めることができる。 d.フォーマット・ライト時の手順 これも<2,2,2>と全く同じである。トラック容量
のチェックには、各レコードのCKDフォーマットでの
相対位置をメモリ上でも維持しているので、フォーマッ
ト・ライトしようとしているレコードのメモリ上のアド
レスが分かれば(c.の手順で分かる)、直ちに後どれ
だけのサイズのレコードがライトできるか計算できる。
フォーマット・ライトして、新たなFBAブロック上に
新たなカウント・フィールドが生じたときは、そのFB
Aブロックに先頭のレコードのカウント・フィールドの
位置を示す情報を書かなければならない。
【0051】<3,2,3> ・ギャップ:レコード間ギャップ、フィールド間ギャッ
プとも残す ・レコード位置決め:FBAのブロックに含まれる最初
のレコードの位置を保持 ・トラック容量チェック:各レコードにセグメント・ナ
ンバ等の相対位置情報を保持 a.メモリ容量 レコード間ギャップ、フィールド間ギャップとも残すの
で、ほぼCKDフォーマットのトラック・イメージがそ
のまま残され、さらに、FBAのブロックに含まれる最
初のレコードの位置情報の分も余分に必要であるためメ
モリ容量は最大に近くなる。しかし、CKDフォーマッ
トにおけるレコードの相対位置を積極的に維持しようと
言うのではないので、ECCやパディングの分まではメ
モリ容量に加える必要はない。そのかわり、あまりギャ
ップを残した意味はなくなる。 b.データ転送のやりやすさ これは、<3,2,2>と全く同じである。メモリ上で
もレコード間、フィールド間ともにギャップが存在する
ので、連続したフィールドのデータ転送をチャネルとの
間で行うとき、メモリ・アドレスは単純にカウント・ア
ップするだけではなく、<3,1,1>と同様、ギャッ
プの分を飛ばして、再設定する必要がある。さらに、<
3,1,1>と異なり、単一フィールド内であっても、
FBAのブロックにまたがったような場合は、メモリ上
でもFBAブロックに含まれる最初のレコードの位置情
報などにより分断されるので、その位置情報の部分をス
キップ・ディフェクトなどのように飛ばしてデータ転送
を行う必要がある。 c.目的レコードを見つけるときの手順 これも<3,2,2>と全く同じである。目的レコード
を探すためには、FBAのブロックの最初のレコードか
ら目的レコードまでの間に存在するレコードの回数だけ
メモリをアクセスする必要がある。従って、<3,1,
1>よりはメモリ・アクセス回数は少ない。FBAのブ
ロックの最初のレコードの位置から目的レコードの位置
を計算する方法はほとんど<3,1,1>と同じで単純
である(カウント・フィールドのサイズとKL,DLさ
らにレコード間ギャップ、フィールド間ギャップをどん
どん足し込んでいけば良い)。 d.フォーマット・ライト時の手順 トラック容量のチェックのためには、フォーマット・ラ
イトしようとしているレコードの一つ前のレコードのセ
グメント・ナンバ(本来のCKDフォーマットで、その
レコードのトラック上での相対位置を示す情報)とK
L,DLから、後どれだけのサイズのレコードがライト
できるか計算する。フォーマット・ライトしたときは、
ライトしたレコード自身にそのレコードのセグメント・
ナンバを書いておかなければならない。同時に新たなF
BAブロック上に新たなカウント・フィールドが生じた
ときは、そのFBAブロックに先頭のレコードのカウン
ト・フィールドの位置を示す情報を書かなければならな
い。
【0052】<3,3,2> ・ギャップ:レコード間ギャップ、フィールド間ギャッ
プとも残す ・レコード位置決め:すべてのレコードの相対位置情報
を保持 ・トラック容量チェック:ギャップ長の調節により各レ
コードの相対位置を維持 a.メモリ容量 残したレコード間ギャップ長の調節により各レコードの
相対位置を元のCKDフォーマットのまま維持するので
あるから、<3,2,2>と同じ様に、必要なメモリ容
量は基本的には元のCKDフォーマットのトラック容量
と同じである。しかし、制御情報として付加するレコー
ドの位置情報は、<3,2,2>のようにFBAのブロ
ックの最初のレコードの分だけでなく、すべてのレコー
ドの分を保持するので、メモリ容量も<3,2,2>よ
り多くなり、<2,3,2>と同様全方式中最大であ
る。 b.データ転送のやりやすさ これは、<3,2,2>,<3,2,3>と全く同じで
ある。メモリ上でもレコード間、フィールド間ともにギ
ャップが存在するので、連続したフィールドのデータ転
送をチャネルとの間で行うとき、メモリ・アドレスは単
純にカウント・アップするだけではなく、<3,1,1
>と同様、ギャップの分を飛ばして、再設定する必要が
ある。さらに、<3,1,1>と異なり、レコードの位
置情報をFBAのブロックごとに分散して持つ場合は、
単一フィールド内であっても、FBAのブロックにまた
がったような場合は、メモリ上でもFBAブロックに含
まれるレコードの位置情報などにより分断されるので、
その位置情報の部分をスキップ・ディフェクトなどのよ
うに飛ばしてデータ転送を行う必要がある。 c.目的レコードを見つけるときの手順 <1,3,3>、<2,3,3>などと全く同じであ
る。目的レコードを探すためには、レコードの位置情報
を一回だけ読み取れば良いので、メモリ・アクセス回数
は全方式の中で最小である。目的レコードの位置は、そ
の情報からダイレクトに分かる。また、各レコードのC
KDフォーマットでの相対位置をメモリ上でも維持して
いるので、Set Sectorの値から目的レコード
の含まれるFBAのブロックを正確に求めることができ
る。 d.フォーマット・ライト時の手順 <2,3,2>と全く同じである。トラック容量のチェ
ックには、各レコードのCKDフォーマットでの相対位
置をメモリ上でも維持しているので、フォーマット・ラ
イトしようとしているレコードのメモリ上のアドレスが
分かれば(c.の手順で分かる)、直ちに後どれだけの
サイズのレコードがライトできるか計算できる。フォー
マット・ライトしたときは、必ずレコードの位置情報を
保持している制御情報に、そのレコードのカウント・フ
ィールドの位置を示す情報を書き足さなければならな
い。
【0053】<3,3,3> ・ギャップ:レコード間ギャップ、フィールド間ギャッ
プとも残す ・レコード位置決め:すべてのレコードの相対位置情報
を保持 ・トラック容量チェック:各レコードにセグメント・ナ
ンバ等の相対位置情報を保持 a.メモリ容量 レコード間ギャップ、フィールド間ギャップとも残すの
で、ほぼCKDフォーマットのトラック・イメージがそ
のまま残され、さらに、すべてのレコードの位置情報の
分も余分に必要であるためメモリ容量は<3,2,3>
よりもさらに多く、最大に近くなる。しかし、CKDフ
ォーマットにおけるレコードの相対位置を積極的に維持
しようと言うのではないので、ECCやパディングの分
まではメモリ容量に加える必要はない。そのかわり、ギ
ャップを残した意味はあまりなくなる。 b.データ転送のやりやすさ これは、<3,2,2>,<3,2,3>,<3,3,
2>と全く同じである。メモリ上でもレコード間、フィ
ールド間ともにギャップが存在するので、連続したフィ
ールドのデータ転送をチャネルとの間で行うとき、メモ
リ・アドレスは単純にカウント・アップするだけではな
く、<3,1,1>と同様、ギャップの分を飛ばして、
再設定する必要がある。さらに、<3,1,1>と異な
り、レコードの位置情報をFBAのブロックごとに分散
して持つ場合は、単一フィールド内であっても、FBA
のブロックにまたがったような場合は、メモリ上でもF
BAブロックに含まれるレコードの位置情報などにより
分断されるので、その位置情報の部分をスキップ・ディ
フェクトなどのように飛ばしてデータ転送を行う必要が
ある。 c.目的レコードを見つけるときの手順 これは<3,3,2>と全く同じである。目的レコード
を探すためには、レコードの位置情報を一回だけ読み取
れば良いので、メモリ・アクセス回数は全方式の中で最
小である。目的レコードの位置は、その情報からダイレ
クトに分かる。 d.フォーマット・ライト時の手順 <2,3,3>と全く同じである。トラック容量のチェ
ックのためには、フォーマット・ライトしようとしてい
るレコードの一つ前のレコードのセグメント・ナンバ
(本来のCKDフォーマットで、そのレコードのトラッ
ク上での相対位置を示す情報)とKL,DLから、後ど
れだけのサイズのレコードがライトできるか計算する。
フォーマット・ライトしたときは、必ずライトしたレコ
ード自身にそのレコードのセグメント・ナンバを書いて
おかなければならない。同時に、レコードの位置情報を
保持している制御情報に、そのレコードのカウント・フ
ィールドの位置を示す情報を書き足さなければならな
い。
【0054】図9の右半分に前述した各方式の比較結果
をまとめた。「比較項目」の欄には前述した4つの比較
項目を記載している。各比較項目にはその重要度に応じ
5段階のグレード付けをしている。5がもっとも重要な
項目であり、1はあまり重要でない項目である。また、
この各比較項目の中で、5段階評価を行い、各変換方式
に1点から5点の点数を付与している。ある比較項目に
ついてもっとも良い変換方式に5点を付け、もっとも劣
る変換方式に1点を与えている。このようにして付けた
点数を各変換方式ごとに集計して、その変換方式の合計
得点としている。集計の方法は、各比較項目の素点にそ
の比較項目のグレードの値を掛けたものを全部の比較項
目について合計している。従って、合計得点の高い変換
方式ほど優れた変換方式ということになる。図9では、
この合計得点が従来の方式より高い変換方式の合計得点
欄に*を付している。
【0055】図9の合計得点は多分に主観的な面もあ
り、あくまで目安である。しかし、試しに点数の与え方
や各比較項目のグレードの値を多少振っても、従来の方
式と同等以上の得点になる変換方式は、やはり図9と同
じものであった。従って、今回の比較項目で考える限
り、良い目安になると考えられる。従来の方式がトップ
にならなかった理由は、おもに目的レコードを見つける
ときの手順におけるメモリ・アクセスの回数である。従
来の方式においては、FBAのブロック中の最初のレコ
ードは一発で見つけることができるが、その後ろのレコ
ードはそこから順番に後続のレコードのカウント・フィ
ールドを見つけて読んでいかなくてはならない。従来の
方式がこの点を重視しなかった理由は下記の2点が考え
られる。 (1)レコードの位置情報を持つ単位の問題 従来の方式はFBAディスクのブロック(≒セクタ)ご
とにそこに含まれる最初のレコードの位置情報を持つと
している。現実のSCSIディスクなどでは、このブロ
ックの大きさはせいぜい1〜2KB程度であるのに対
し、そこに記録するCKDのレコードのサイズは4KB
程度がもっとも多い。従って、現実には一つのFBAブ
ロックにたくさんのCKDレコードが含まれるケースよ
りも、図10のように一つのCKDレコードが複数のF
BAブロックにまたがり、結局、一つのFBAブロック
に含まれるCKDレコードは1個以下というケースの方
が多いと考えられる。従って、Set Sectorに
より、目的のレコードが含まれるFBAブロックさえき
ちんと分かればほとんど1回のメモリ・アクセスで目的
レコードを見つけることができるので、この方式でもメ
モリ・アクセス回数が多くならない。 (2)トラック・バッファの置き場所の問題 従来の方式においては、このようなCKD−FBA変換
を行うエミュレータは、チャネル・プロセッサとFBA
ディスクの間のどこにあってもよいとされているが(も
ちろんDKCでもよいことになる)、エミュレータはチ
ャネル・プロセッサ自体が実行している。すなわち、デ
ィスク・キャッシュをベースとした大規模なシステムは
あまり意識していない。従って、トラック・イメージを
展開するトラック・バッファ用のメモリもホストCPU
の主記憶か、チャネル・プロセッサ自身のローカル・メ
モリを考えている。このように、特にトラック・バッフ
ァがチャネル・プロセッサ自身のローカル・メモリにあ
り、そのチャネル・プロセッサがCKD−FBAエミュ
レーションを行うような場合は、そこへのメモリ・アク
セス回数が少々多くても、あまり問題にはならない。
【0056】これらの点から従来はあまりメモリ・アク
セスの回数という点を重視しなかったと考えられるが、
上記の2点はそれぞれ以下のような問題をはらんでい
る。 (1)レコードの位置情報を持つ単位の問題 従来の方式はFBAディスクのブロック(≒セクタ)ご
とにそこに含まれる最初のレコードの位置情報を持つと
しているが、非効率的である。図11に示すように、デ
ィスク・キャッシュをベースにした4台のデータ・ディ
スクと1台の冗長ディスクをもつアレイ型ディスク状態
(RAID)を考える場合、物理ディスクへのリード/
ライトの単位はFBAのブロックの様な細かい単位では
なく、例えば、CKDの1トラック分(例えば48K
B)を各データ・ディスクに分割した1/4トラック分
である。従って、レコードの位置情報もFBAごとよ
り、この1/4トラックごとに持った方がよい(図11
参照)。1/4トラックごとに位置情報を持つのであれ
ば、1トラック分の位置情報は4箇所に集約されるの
で、CKDレコードがメモリ上でこの位置情報により分
断されるのも、この4箇所ですむ。しかし、従来方式の
ようにFBAのブロックごとにレコードの位置情報を持
つとすると、1トラックの分断箇所も1トラックに含ま
れるFBAブロックの個数になる。(1ブロック2KB
ととすると、1トラックで約24箇所)すなわち、4K
BのCKDレコードであれば必ず1レコード中1〜2箇
所分断されることになる。この分断箇所は特別なハード
ウェア(H/W)を用意しない限り磁気ディスク制御装
置のファームウェア(F/W)で処理することになる。
そのために数十μsecかかるとし、チャネルの転送レ
ートを4.5MB/secとすれば、4KBのレコード
を転送するのにかかる時間が889μsecであるか
ら、1レコード当り数%〜10%近い性能ダウンにつな
がる。これを避けるために図11のように、1/4トラ
ックごとに位置情報を持たせることにすると、今度はそ
の中に含まれるCKDレコード数が多くなるので、従来
方式ではメモリ・アクセス回数が多くなってしまう。
【0057】(2)トラック・バッファの置き場所の問
題 従来の方式のように、トラック・バッファがチャネル・
プロセッサ自身のローカル・メモリにあり、そのチャネ
ル・プロセッサがCKD−FBAエミュレーションを行
うような場合は、そこへのメモリ・アクセス回数が少々
多くても、あまり問題にはならない。ところが、ディス
ク・キャッシュを前提に考えている大規模なシステムで
は、トラック・バッファも当然キャッシュ・メモリ上に
なる。キャッシュ・メモリ上のトラック・イメージを、
チャネルとの間でデータ転送したり、また、別のトラッ
ク・バッファに転送するのはそれ自体大きなオーバヘッ
ドとなる。一方、CKD−FBAのエミュレーションは
チャネルとのデータ転送中リアル・タイムに行わなけれ
ばならないので、各チャネルとのデータ転送をつかさど
るDKC内のチャネル・パス・サーバ(CPS)がエミ
ュレーションを行うことになる。従って、従来の方式で
は目的レコードを見つけるために、各チャネル・パス・
サーバは共有部分であるキャッシュ・メモリ上のトラッ
ク・バッファを頻繁にアクセスすることになる。このキ
ャッシュ・メモリへのアクセスはチャネル・パス・サー
バだけでなく、デバイス側からも行われる。つまりこの
キャッシュ・メモリはリード/ライトが高速で行われる
システムのボトル・ネック部分である。このような部分
に細かい単位で頻繁にアクセスすることは、それだけで
著しく内部バスのデータ転送能力を低くする原因とな
る。従って、このキャッシュ・メモリへのアクセスは少
々データ量が多くなっても、1回でアクセスする方式の
方がよい。以上のような理由から、メモリ・アクセスの
回数という点にも注目しているため、その部分で従来の
方式は若干点数を下げ、トップになっておらず、従来の
方式より高得点をあげているのは、このメモリ・アクセ
ス回数の点で有利な<ケース II−3>を採用してい
る変換方式の中のものである。
【0058】次に「ギャップの削除方法とメモリ容量の
評価」について説明する。ここでは、CKDフォーマッ
トのトラック・イメージをキャッシュ・メモリ(トラッ
ク・バッファ)上に展開してFBAディスクに記録する
際、ギャップも含めてメモリ上に展開するか否かについ
て、前述した3方式についてそれぞれ具体的にメモリ容
量がどの程度異なるか評価する。
【0059】CKDフォーマットのトラック・イメージ
をキャッシュ・メモリ(トラック・バッファ)上に展開
してFBAディスクに記録する際、ギャップも含めてメ
モリ上に展開するか否かについては、 <ケース I−1> ・レコード間ギャップも含めすべてのギャップを削除し
てしまう。 <ケース I−2> ・レコード間ギャップだけ残し、フィールド間ギャップ
は取り除く。 <ケース I−3> ・レコード間ギャップだけでなく、すべてのフィールド
間ギャップも残す(ECCやパディングなどは取り除
く)。 という3種類の方式が考えられる。ここでは、これらの
各方式ごとにCKDフォーマット1トラック分のトラッ
ク・イメージを展開するのに必要なメモリ容量(=FB
Aディスクのブロック数)を見積り比較、検討する。た
だし、<ケース I−2>、<ケース I−3>につい
ては、トラック容量のチェック方式として前述した<ケ
ース III−2>(削除したフィールド間ギャップや
ECC、パディングの分だけレコード間ギャップを伸ば
して、各レコードのトラックの先頭からの相対位置を元
のCKDトラックのまま維持する方式)と組み合わせた
場合は、トラック・イメージのメモリ容量は常に元のC
KDフォーマットと等しくなる。従って、ここではギャ
ップ長の調整は行なわない場合について見積りを行う。
【0060】CKDフォーマットでは、ギャップの数は
1トラック中のレコード数及びキー・フィールドの有無
などに依存するため、ギャップの有無によるメモリ容量
の大小を見積もるには、見積もりを行うトラック中のレ
コード数などのトラック・フォーマットを規定する必要
がある。ここでは極端なケースとして、レコード数がも
っとも多い場合、もっとも少ない場合、また、標準的な
ケース等、図12の4ケースについて見積もりを行う。
いずれも、CKDフォーマットとしては図33を想定し
ている。それぞれのケースにおけるトラック当りのレコ
ード数の計算は図13、図14、図15、図16に示し
てある。図12のフォーマット2,3は、ここでは述べ
ないが「ディスク・アクセスのワークロード・タイプ調
査」という調査に基づいて定めた。また、ジャーナル・
ファイルのレコード・サイズは200B〜32KBであ
るが、もっともよく用いられているサイズは200B〜
300Bくらいであるので、図12では200Bを用い
ている。
【0061】メモリ容量を見積もるに当り、ここでは、
下記のような条件で見積りを行う。 (1)トラック・フォーマットとしては図33を使用す
る。 (2)各フィールドのECC、32B境界にあわせるた
めの0パディングは削除する。 (3)HA、カウント・フィールドのその他のパラメー
タはすべて残す。 (4)レコードの位置情報などのCKD−FBA変換の
ための制御情報の容量はここでは見積もらない。これ
は、ギャップの削除方法とはまた別の条件であるので、
別途見積もる。結局、メモリ上ではギャップ以外の各フ
ィールドの中身は図33のXで示した部分のようになる
として見積りを行う。見積りケースごとのトラック当り
のレコード数を計算すると図13〜図16のようにな
る。
【0062】また、各ギャップ削除方法ごとのメモリ容
量見積りは以下のようになる。 <ケース I−1> ・レコード間ギャップも含めすべてのギャップを削除し
てしまう。 ●フォーマット1(最多レコード数のケース) HAのサイズ =40−12=28 R0のサイズ =R0C+R0D=(40−12)+1
=29 Rnのサイズ =RnC+RnD=(40−12)+1
=29 よって、1トラック分の容量は、 HA+R0+Rn×93=28+29+29×93=2
754 ●フォーマット2(ジャーナル・ファイルの典型) HAのサイズ =40−12=28 R0のサイズ =R0C+R0D=(40−12)+8
=36 Rnのサイズ =RnC+RnD=(40−12)+2
00=228 よって、1トラック分の容量は、 HA+R0+Rn×68=28+36+228×68=
15568 ●フォーマット3(ページング、スワッピング、VSA
M) HAのサイズ =40−12=28 R0のサイズ =R0C+R0D=(40−12)+8
=36 Rnのサイズ =RnC+RnD=(40−12)+4
096=4124 よって、1トラック分の容量は、 HA+R0+Rn×10=28+36+4124×10
=41304 ●フォーマット4(最少レコード数のケース)) HAのサイズ =40−12=28 R0のサイズ =R0C+R0D=(40−12)+4
7988=48016 よって、1トラック分の容量は、 HA+R0=28+48016=48044
【0063】<ケース I−2> ・レコード間ギャップだけ残し、フィールド間ギャップ
は取り除く(ECCやパディングなどは取り除く)。た
だし、フィールド間ギャップやECC、パディングなど
を削除してもその分をギャップ長を伸ばしてつじつまを
合わせることにすると、メモリ容量は元のCKDフォー
マットと全く同じになる。従って、ここでは削除分のつ
じつま合わせは行わないケースで見積りを行う。 ●フォーマット1(最多レコード数のケース) HAのサイズ =G1+HA=504+(40−12)=532 R0のサイズ =G2C+R0C+R0D=248+(40−12)+1 =277 Rnのサイズ =G3+RnC+RnD=216+(40−12)+1 =245 よって、1トラック分の容量は、 HA+R0+Rn×93=532+277+245×93=23594 ●フォーマット2(ジャーナル・ファイルの典型) HAのサイズ =G1+HA=504+(40−12)=532 R0のサイズ =G2C+R0C+R0D=248+(40−12)+8 =284 Rnのサイズ =G3+RnC+RnD=216+(40−12)+200 =444 よって、1トラック分の容量は、 HA+R0+Rn×68=532+284+444×68=31008 ●フォーマット3(ページング、スワッピング、VSAM) HAのサイズ =G1+HA=504+(40−12)=532 R0のサイズ =G2C+R0C+R0D=248+(40−12)+8 =284 Rnのサイズ =G3+RnC+RnD=216+(40−12)+4096 =4340 よって、1トラック分の容量は、 HA+R0+Rn×10=532+284+4340×10=44216 ●フォーマット4(最少レコード数のケース) HAのサイズ =G1+HA=504+(40−12)=532 R0のサイズ =G2C+R0C+R0D=248+(40−12) +47988=48264 よって、1トラック分の容量は、 HA+R0=532+48264=48796
【0064】<ケース I−3> ・レコード間ギャップだけでなく、すべてのフィールド
間ギャップも残す(ECCやパディングなどは取り除
く)。この場合も、ECC、パディングなどを削除して
もその分をギャップ長を伸ばしてつじつまを合わせるこ
とにすると、メモリ容量は元のCKDフォーマットと全
く同じになる。従って、ここでは削除分のつじつま合わ
せは行わないケースで見積りを行う。 ●フォーマット1(最多レコード数のケース) HAのサイズ =G1+HA=504+(40−12)=532 R0のサイズ =G2C+R0C+G2+R0D=248+(40−12) +224+1=501 Rnのサイズ =G3+RnC+G2+RnD=216+(40−12) +224+1=469 よって、1トラック分の容量は、 HA+R0+Rn×93=532+501+469×93=44650 ●フォーマット2(ジャーナル・ファイルの典型) HAのサイズ =G1+HA=504+(40−12)=532 R0のサイズ =G2C+R0C+G2+R0D=248+(40−12) +224+8=508 Rnのサイズ =G3+RnC+G2+RnD=216+(40−12) +224+200=668 よって、1トラック分の容量は、 HA+R0+Rn×68=532+508+668×68=46464 ●フォーマット3(ページング、スワッピング、VSAM) HAのサイズ =G1+HA=504+(40−12)=532 R0のサイズ =G2C+R0C+G2+R0D=248+(40−12) +224+8=508 Rnのサイズ =G3+RnC+G2+RnD=216+(40−12) +224+4096=4564 よって、1トラック分の容量は、 HA+R0+Rn×10=532+508+4564×10=46680 ●フォーマット4(最少レコード数のケース)) HAのサイズ =G1+HA=504+(40−12)=532 R0のサイズ =G2C+R0C+G2+R0D=248+(40−12) +224+47988=48488 よって、1トラック分の容量は、 HA+R0=532+48488=49020
【0065】図17に<ケース I−1>〜<ケース
I−3>までの3種類のギャップ削除方法について、そ
れぞれフォーマット1〜4までの4つのトラック・フォ
ーマットをメモリ上に展開したときのメモリ容量を示
す。図18はこれをグラフで表したものである。
【0066】図17、図18から分かるようにどのトラ
ック・フォーマットでも、<ケースI−1>〜<ケース
I−3>と残すギャップが多いほどメモリ容量も多く
必要となっている。<ケース I−3>ではすべてのギ
ャップを残すため、どのフォーマットにおいてもほぼ元
のCKDフォーマットでの容量と等しいメモリ容量が必
要となる。フィールド間ギャップを削除している<ケー
ス I−2>でも、トラック容量のチェック方式とし
て、削除したフィールド間ギャップやECC、パディン
グの分だけレコード間ギャップを伸ばし、各レコードの
トラックの先頭からの相対位置を元のCKDトラックの
まま維持する方式をとると、必要なメモリ容量は<ケー
ス I−3>とほぼ同じになる。これに対し、すべての
ギャップを削除する<ケース I−1>では、特にレコ
ード・サイズが小さいフォーマット1、2でメモリ容量
が顕著に小さくなっている。93レコードのフォーマッ
ト1では他の方式の16〜17分の1、フォーマット2
でも約3分の1である。このようにトラック・イメージ
を展開するためのメモリ容量が少なくてすむと下記のよ
うなメリットが考えられる(図19参照)。 (1)キャッシュ・メモリの管理の単位をCKDの1ト
ラック分(約48KB)でなく、もっと細かい単位(例
えばデータ・ディスク1台分に書く単位=1/4トラッ
ク分・・・12KB)にすれば、余ったキャッシュ・メ
モリの領域には他のトラックのデータを書くことができ
る。従って、同一のキャッシュ・メモリ容量でより多く
のトラックのデータを保持することができ、キャッシュ
・メモリの利用率向上、引いていはヒット率の向上を期
待することができる。 (2)1トラック分のイメージのデータ量が少なくてす
むということは、物理ディスクへそのデータを書くとき
も少ないデータ量ですむということである。例えば、1
トラック分のイメージのデータがCKDフォーマットの
1/2ですめば、物理ディスクへのデータ転送はデータ
・ディスク1と2、及びパリティ・ディスクだけです
み、フォーマット・ライトでなければデータ・ディスク
3と4にはデータを転送しなくてよい。これは、サブシ
ステム内の各バス等の負荷軽減につながる。ただし、メ
モリ容量が少なくすんでも、物理ディスク上の領域は最
大値に合わせ確保しておかないと制御が非常に複雑にな
る。メモリ上のトラック・イメージがCKDフォーマッ
トの半分だからといって、そのデータをディスクに書く
ときも空いた領域に他のトラックのデータを書いてしま
うと、次にそのトラックが再フォーマットされて、トラ
ック・イメージの量が増えてしまったとき、ディスク上
の連続した領域にはトラック・イメージをライトできな
くなり、ディスク上でどこか空いている領域を探してラ
イトするようなことになる。トラック・イメージのデー
タ量が減った場合、その分物理ディスクの空き領域も有
効に活用できればよりよいが、(1),(2)のメリッ
トだけでも十分魅力的である。 以上のように、メモリ容量の大小を実際に見積もった結
果、ギャップをすべて残した場合と、ギャップをすべて
削除した場合では、レコード数によっては必要なメモリ
容量が数倍以上の開きがでることがわかる。
【0067】次に、「レコードの位置情報のメモリ容量
見積り」について説明する。目的レコードの位置決めを
行う方式として、<ケース II−1>と<ケースII
−2>と<ケース II−3>の3方式をあげた。これ
らのうち、<ケース II−1>を除く他の2方式は、
いずれもレコードそのものとは別個に、メモリ上でのレ
コードの位置を示す制御情報を保持する方式である。こ
こでは、この位置決めのための制御情報に各方式でどの
程度メモリ容量(=FBAディスク上での容量)が必要
なのか見積りを行う。ここでは<ケース II−1>を
除く、<ケース II−2>と<ケース II−3>に
ついて、見積りを行う。また、<ケース II−3>で
は、レコードの位置情報は全レコード分を一括して一箇
所に保持する方法(例えば、トラックの先頭)と、分散
して保持する方法(例えば、各FBAブロックの先頭に
そのFBAブロックに含まれるレコードの位置を示す情
報を保持する)があるが、ここでは、分散して保持する
方法について見積りを行う。全レコード分を一括して一
箇所に保持する方法について見積もらない理由は以下の
とおりである。位置情報を一箇所で一括して保持してい
ると、図19のようなアレイ型ディスク装置を考えた場
合、4台のデータ・ディスクから1CKDトラック分の
データを読んでくるとき、目的レコードが記録されてい
るディスクからのデータを読み終えても、位置情報が記
録されているディスクからのデータを読み終らないと、
目的レコードの記録位置を見つけることができず、ホス
トとのデータ転送を開始できない。従って、回転同期を
サポートできなかった場合や、サポートしていてもスタ
ンバイ・ディスクが加わって同期が崩れているときなど
に平均回転待ち時間の増加につながる。
【0068】ここでは、見積り条件を以下のようなもの
とする。まず、レコード1個当りの保持情報として、レ
コード1個につき、下図のような4バイトの情報を保持
するものとする。 レコードNo.:記録されているCKDレコードのレコ
ードNo.である。<ケース II−2>では制御上必
ずしも必須ではないが、特に<ケース II−3>では
制御情報中にこのレコードNo.を持っていると、いち
いち実際のレコードのカウント・フィールドを読まなく
ても一発で目的レコードを発見することができる。 セクタ値 :CKDレコードとして記憶されている
場合のセクタ値を記憶する。このセクタ値によりセット
セクタコマンドで指定されたセクタ値との比較が可能に
なる。また、このセクタ値によりそのレコードのトラッ
ク先頭からの相対位置を求めることができ、既に消費し
た容量が判定できる。セクタは7つのセグメントから構
成されているため、このセクタ値を用いてセグメントナ
ンバを計算することが可能である。すなわち、セグメン
トナンバ=セクタ値×7である。 メモリ・アドレス:記録されているCKDレコードのメ
モリ上でのバイト・アドレスである。2Bあれば64K
Bまでアドレッシングできるので、図33のフォーマッ
トでは十分である。アドレスの起点は、CKDトラック
の先頭にするか、位置情報の管理単位である各FBAブ
ロック等の先頭にするかは、とりあえず問わない。
【0069】また、CKDレコードの位置情報を管理す
る単位(レコードの位置情報を保持する単位)としては
図21の2ケースについて見積りを行う。上記の2つの
ケースにおいて、<ケース II−2>と<ケース I
I−3>のそれぞれについて記録されているCKDレコ
ードの位置情報を持つためのメモリ容量を見積もる。見
積り結果は以下のとおりである。 <ケース II−2> :先頭のレコードの位置情報だ
け保持する。この方式では、位置情報の管理単位のサイ
ズにかかわらず、常に管理単位ごとレコード1個分の位
置情報しか保持しないので、位置情報のためのメモリ容
量は管理単位ごとに4Bである。 <ケース II−3> :すべてのレコードの位置情報
を保持する。この方式では、管理単位の大きさによっ
て、そこに記録され得るCKDのレコード数が異なって
くる。さらに、あるサイズの管理単位にどのくらいのC
KDレコードが記録できるかは、ギャップの削除方法に
も依存するが、ここでは、もっともレコード数が多くな
る<ケース I−1>(すべてのギャップを削除する)
を採用して見積りを行う。このときの1レコード当りの
最少メモリ容量は、前述した「ギャップの削除方法とメ
モリ容量の評価」の「<ケース I−1>のフォーマッ
ト1(最多レコードのケース)」のRnのサイズより、
29Bであることが分かっている。従って、各管理単位
のサイズごとに記録できる最多レコード数NRは、位置
情報のためのメモリ容量をαとすると NR={(管理単位のサイズ)−α}÷29B ・・・(1) また、管理単位当りの位置情報のメモリ容量αはそのレ
コード数NRに4Bを掛ければよいので、 α=NR×4B ・・・(2) で求められる。この2式を解くと、 NR=(管理単位のサイズ)/33 (小数点以下切捨て)・・・(3) となる。従って、(3)式で求めたNRを(2)式に代
入することにより、ただちにαも求められる。ただし、
図33のトラック・フォーマットでは1トラック内のレ
コード数は94個を越えることはないので(R0も含
む)、NRの最大値も94である。以上の結果をまとめ
ると図22のようになる。
【0070】前述した「ギャップの削除方法とメモリ容
量の評価」によれば、CKDレコードを記録するために
正味必要なメモリ容量の最大値は、1トラック1レコー
ド(R0のみ)でそのデータ・フィールドが最長の場合
である。このとき必要なメモリ容量は、図17からH
A、R0合わせて図23のようになる。CKDトラック
1本のために用意するFBAディスクの容量を48KB
(12KB×4)とすると、制御情報のために使用でき
るメモリ容量は下式のようになる。 <ケース I−1> 1024×48−48044=1108 <ケース I−2> 1024×48−48796= 356 <ケース I−3> 1024×48−49020= 132 この値と図22の値(一番右側の欄)を比較すると、<
ケース II−2>では、管理単位のサイズにかかわら
ずメモリ容量が不足するという問題ない。これに対し、
<ケース II−3>では管理単位が大きく(管理単位
2サイズ12KB)、位置情報のためのメモリ容量が少
ない場合(1504B)と、レコードのためのメモリ容
量がもっとも少なくて済む<ケース I−1>で比べて
みても位置情報のために使用できるメモリ容量約400
Bが不足してしまう。
【0071】<ケース II−3>は目的レコードを探
すためのメモリ・アクセス回数が少なく、従来の方式
(<ケース II−2>)より有望であるので、この不
足分に対する対策を考える必要がある。この対策として
は、下記のようなものが考えられる。 対策1 物理ディスク1台当りにリザーブする容量を増
やす。 ex.) 12KB→13KBとすると、CKDトラッ
ク1本のために使用できる容量は、52KBととなり、
不足は一挙に解決される。・・・・物理ディスクは52KB
/CKDトラック必要となり、48KB/CKDトラッ
クに比べてディスクエリアが無駄になるが、物理ディス
クのコストが減少してきているので有効な方法のひとつ
である。 対策2 レコード1個当りに必要な制御情報の量を減ら
す。 ex.) 4B/レコード→2B/レコードとすると、
制御情報に必要な総メモリ容量は、752Bとなり不足
しなくなる。 対策3 制御情報の個数を減らす。 ex.) この見積りでは、管理単位2の場合(サイズ
12KB)、4つの各管理単位ごとに最大94個のレコ
ードの位置情報を保持するように考えている。しかし、
実際は4つの管理単位の合計でMax.94個が必要で
あるので、うまく工夫して、制御情報の総容量を減らす
ことを考える。
【0072】以上のように「レコードの位置情報のメモ
リ容量見積り」の結果は以下のとおりである。<ケース
II−2>では、メモリ容量は不足せず問題ない。<
ケース II−3>では条件によっても異なるが、位置
情報のために使用できるメモリ容量が若干不足してしま
う。<ケース II−3>は目的レコードを探すための
メモリ・アクセス回数が少なく、有望であるので、今
後、この不足分に対する対策を考える必要がある。
【0073】次に、「レコードの位置情報の制御方式の
改善」について説明する。先の見積りの制御方式の問題
点は以下のとおりである。前述した「レコードの位置情
報のメモリ容量見積り」では、CKDレコードの位置情
報を管理する単位(レコードの位置情報を保持する単位)
ごとに、そこに記録され得る最大レコード数に合わせて
位置情報の領域を確保していた。具体的にいうと、図2
4に示すように、管理単位のサイズを12KBとしたと
きは、そこに最大94個のCKDレコードが記録され得
る。レコード1個当りの位置情報としては4byteを
見積もっていたので、12KBの管理単位ごとに 4B×94=376B だけの位置情報領域を見積もっていた。CKDトラック
1本分のトラック・イメージはこの12KBの管理単位
4個からなっており、CKDトラック1本当りの位置情
報のメモリ容量は、 376B×4=1504B となってしまう。しかし、これでは、CKDトラック1
本当り94×4=376レコード分の位置情報の領域を
確保していることになる。図33のフォーマットでは、
1CKDトラックの最大レコード数は94レコード(R
0含む)であるので、12KBの各管理単位に記録され
得る最大レコード数がそれぞれ94個であっても、同時
に全部の管理単位に94個ずつのレコードが記録される
ことはあり得ない。従って、94×3=282レコード
分の位置情報の領域は無駄になっていることになる。
【0074】このような問題点は、レコードの管理単位
内の位置情報領域のサイズを固定にしようとしたことか
ら発生している。位置情報領域のサイズを固定にする
と、(1)管理単位にまたがって記録されているレコー
ドのデータ転送を行うときも、飛び越さなければならな
い位置情報領域のサイズが常に一定なので、制御が簡単
であること、(2)フォーマット・ライト時も、CKD
レコードを書き込めるメモリの領域が固定なので、制御
が簡単であること、などの利点が発生する。しかし、位
置情報領域のサイズを固定にする限り、そのサイズは最
大値に合わせざるを得ず、管理単位ごとに94レコード
分の領域を確保しておくほかない。これに対し、位置情
報領域のサイズを可変にすると、実際に記録されている
レコードの分だけしか位置情報領域を使用しないような
制御も可能であるが、上記のような利点は基本的に失わ
れてしまう。位置情報の総容量を減らすためには、各管
理単位の位置情報領域のサイズを可変にすることが必須
であるが、このような欠点をうまく回避することが重要
である。
【0075】図25に位置情報領域のサイズを可変にし
た改善案を示す。以下、この図を基に改善案の説明を行
う。なお、以降はレコードの位置情報の管理単位のサイ
ズはデータ・ディスクへの分割単位のサイズと同じ12
KBの場合について取り扱う。従来の方式と同じFBA
ディスクのブロック(セクタ)・サイズと同じ1〜2KB
では効率が悪いからである(詳細は、前述した「レコー
ドの位置情報を持つ単位の問題」を参照のこと)。ま
た、以後、図25に示すように、レコードの位置情報の
管理単位のことはフレーム、実際にCKDレコードを記
録する領域のことはレコード・フレーム、制御情報を記
録する領域はコントロール・フレーム、レコードの位置
情報のことはレコード・ポインタ、と呼ぶ。この方式の
ポイントは下記のような点である。 (1)実際に記録されているレコードの分だけしかレコ
ード・ポインタを使用しない。これにより、レコード・
ポインタ領域のサイズは最大でも、1CKDトラック当
り、 4byte×94=376byte で済む。 (2)レコード・ポインタを含むコントロール・フレー
ムのサイズは、別途、制御情報(図25のコントロール
・フレーム・ポインタ)として保持している。この情報
により、コントロール・フレームのサイズが可変となっ
ても、制御を複雑にせずに済ませる。 (3)これらの制御情報(コントロール・フレーム)
は、各フレームの先頭ではなく、最後尾に記録する。ま
た、コントロール・フレーム内のレコード・ポインタも
後ろから順番に並べていく。(実際のレコードがレコー
ド・フレーム内で前にあるものほど、それに対応するレ
コード・ポインタはコントロール・フレーム内で後ろに
くる)。これにより、フォーマット・ライト時の制御も
簡単に行える。
【0076】以下、実際のリード/ライトの動きに従っ
て、フレーム内のレコードの位置決め制御の方法をもう
少し詳細に説明する。 (1)リード/アップデート・ライト時 (a)物理ディスクからフレームをキャッシュ・メモリ
上に読み込んできたら、その最後尾のコントロール・フ
レームをCPSが読み取る。このとき、コントロール・
フレームのサイズは読んでみるまで分からないわけであ
るが、とりあえず、フレームの最後尾の適当なバイト数
をまとめて読んでみる。(このとき読み取るバイト数
は、CPSやキャッシュ・メモリ、バスなどのアーキテ
クチャにより最適値を選択する必要がある。)例えば、
フレームの最後尾32Bを読み取ることにすると、この
フレーム内に記録されているレコード数が7個以下の場
合は、CPSはこの1回のアクセスですべてのレコード
のレコード・ポインタを取得することができる。例えば
4KBサイズをもっとも多いレコードサイズとする場
合、1フレーム中のレコード数は3個以下であるから、
大部分の場合は、この1回のキャッシュメモリ・アクセ
スですべてのレコード・ポインタを取得できることにな
る。 (b)読み取ったコントロール・フレームの最後尾のコ
ントロール・フレーム・ポインタ中のメモリ・アドレス
から、コントロール・フレームをまだ読み残している
か、否か、判断できる。もし、コントロール・フレーム
を読み残していれば、CPSはそれを読み取る。これに
より、CPSは最悪でも2回のメモリ・アクセスですべ
てのレコード・ポインタを取得できることになる。 (c)次に、ホストから送られてくるサーチのアーギュ
メントと取得したレコード・ポインタから、目的レコー
ドのフレーム上のメモリ・アドレスを見つける(これで
オリエンテーションが確立したことになる)。 (d)ホストとの間でデータ転送を開始する前に、目的
レコードのメモリ・アドレスにカウント・フィールドの
サイズ、KL,DLを加えた値(目的レコードの最後尾
のメモリ・アドレス)と、コントロール・フレーム・ポ
インタ中のコントロール・フレームの先頭を示すメモリ
・アドレスを比較する。もし、目的レコードの最後尾の
メモリ・アドレスがコントロール・フレームに食い込ん
でいるような場合は、CPSはホストとのデータ転送を
コントロール・フレームの手前で一端停止し、メモリ・
アドレスを次のフレームの先頭まで進めてから、ホスト
とのデータ転送を再開するような制御を行う。目的レコ
ードの最後尾がレコード・フレーム内に収まっていれ
ば、上記のような制御は不要で、CPSは、目的レコー
ドのデータ転送を途中で中断することなく完了すること
ができる。 (e)引き続き、ホストからリード/アップデート・ラ
イト系のコマンドが出された場合は、次のレコードはそ
のままメモリ上で連続しているので、レコード・ポイン
タを使用しなくてもそのままデータ転送を続けることが
できる。ただし、レコードの最後尾のメモリ・アドレス
と、コントロール・フレームの先頭アドレスの比較は、
各レコードごとに行わなくてはならない。
【0077】(2)フォーマット・ライト時 (2.1)同一フレーム内でレコードを書き足す場合 (a)物理ディスクからフレームをキャッシュ・メモリ
上に読み込んできたら、その最後尾のコントロール・フ
レームをCPSが読み取る。 (b)コントロール・フレーム・ポインタを調べ、すべ
てのレコード・ポインタを取得する。 (c)次に、ホストから送られてくるサーチのアーギュ
メントと取得したレコード・ポインタから、目的レコー
ドのフレーム上のメモリ・アドレスを見つける(これで
オリエンテーションが確立したことになる)。 以上の(a)〜(c)手順は、リード/アップデート・
ライト時と同じである。 (d)ホストから送られてくるWrite CKDのカ
ウント・フィールドの値からトラック・オーバランを発
生しないか否かを調べる。(この詳細な手順は、別途、
「トラック容量のチェック方式」として説明する。)ト
ラック・オーバランを発生する場合は、以降の制御でト
ラック・オーバラン・ポイントまでデータ転送を行い、
ホストにトラック・オーバランを報告するような制御を
行う。トラック・オーバランのチェックが終ったら、C
PSが自分で保持しているコントロール・フレーム・ポ
インタ中のコントロール・フレームの先頭を示すメモリ
・アドレスを4B減じ(コントロール・フレームを4B
拡張する)、さらに、新しく書き足すレコードのレコー
ド・ポインタをCPSが保持しているコントロール・フ
レームの先頭に書き足す。 (e)Write CKDのカウント・フィールドの値
から新しく書き足すレコードの最後尾のメモリ・アドレ
スを計算し、(d)で更新したコントロール・フレーム
・ポインタ中のメモリ・アドレスと比較する。もし、新
しいレコードの最後尾のメモリ・アドレスがコントロー
ル・フレームに食い込んでいるような場合は、CPSは
ホストとのデータ転送をコントロール・フレームの手前
で一端停止し、メモリ・アドレスを次のフレームの先頭
まで進めてから、ホストとのデータ転送を再開するよう
な制御を行う。新しいレコードの最後尾がレコード・フ
レーム内に収まっていれば、上記のような制御は不要
で、CPSは新しいレコードのデータ転送を途中で中断
することなく完了することができる。 (f)引き続き、ホストからWriteCKDコマンド
が出された場合は、次のレコードはそのままメモリ上で
連続しているので、レコード・ポインタを使用しなくて
もそのままデータ転送を続けることができる。ただし、
トラック・オーバランのチェック、コントロール・フレ
ーム・ポインタの更新、レコード・ポインタの追加、レ
コードの最後尾のメモリ・アドレスと、コントロール・
フレームの先頭アドレスの比較は、各レコードごとに行
わなくてはならない。 (g)コマンドが終了した場合は、CPSが保持してい
た更新後のコントロール・フレームをキャッシュ・メモ
リ上に書き出す。
【0078】なお、図26に示すようなケースではレコ
ード・フレームが3バイト空いているからといって、引
き続き同じフレーム中にレコードを追加しようとしてレ
コード・ポインタを追加すると、レコード・ポインタが
前のレコードの後部に食い込んでしまうことになる。す
なわち、フレームの空き容量が4バイト以下の場合は、
同じフレーム中に新たなレコードは追加できず、次のフ
レームを使用しなくてはならない。このようにして生じ
てしまった空きバイト(4バイト以下)は、コントロー
ル・フレーム中に含めて管理してしまった方が、(e)
のデータ転送時のコントロール・フレームの飛び越しな
どがやりやすい。従って、コントロール・フレーム・ポ
インタ中のメモリ・アドレスはこの空きバイトの先頭ア
ドレスを示すことになる。この空きバイトの先頭から、
レコード・ポインタの先頭アドレスまでのオフセット
(0〜4バイト)は、コントロール・フレーム中の制御
情報として保持しておいて、(b)のレコード・ポイン
タの取得の際、コントロール・フレーム・ポインタ中の
メモリ・アドレスからこのオフセット値を引いてレコー
ド・ポインタの先頭アドレスを求めればよい。
【0079】(2.2)同一フレーム内で最初にレコー
ドを書く場合 トラックの先頭から全く新しくフォーマットし直す場合
や、レコードが一つも記録されていなかったフレームに
フォーマット・ライトで新しくレコードを書く場合など
は、CPSがコントロール・フレームを新しく生成する
ことになる。従って、この場合は、(2.1)の(a)
〜(c)のコントロール・フレームの取得によるオリエ
ンテーションの確立作業は不要である。(d)のトラッ
ク・オーバランのチェックは(2.1)と同様に行う。 (e)トラック・オーバランのチェックが終ったら、C
PSが自分のメモリ上にコントロール・フレーム・ポイ
ンタ(コントロール・フレームの先頭アドレスはレコー
ド・ポインタ1個分のところを示す。)を生成し、さら
に、新しく書くレコードのレコード・ポインタをCPS
が保持しているコントロール・フレームの先頭に書く。 (f)Write CKDのカウント・フィールドの値
から新しく書くレコードの最後尾のメモリ・アドレスを
計算し、(e)で生成したコントロール・フレーム・ポ
インタ中のメモリ・アドレスと比較する。もし、新しい
レコードの最後尾のメモリ・アドレスがコントロール・
フレームに食い込んでいるような場合は、CPSはホス
トとのデータ転送をコントロール・フレームの手前で一
端停止し、メモリ・アドレスを次のフレームの先頭まで
進めてから、ホストとのデータ転送を再開するような制
御を行う。新しいレコードの最後尾がレコード・フレー
ム内に収まっていれば、上記のような制御は不要で、C
PSは新しいレコードのデータ転送を途中で中断するこ
となく完了することができる。 (g)引き続き、ホストからWrite CKDコマン
ドが出された場合は、(2.1)と同様となる。 (h)コマンドが終了した場合は、CPSが保持してい
た新しいコントロール・フレームをキャッシュ・メモリ
上に書き出す。フォーマット・ライト系の処理では、そ
のフレームに記録するレコード数が分かってからでない
と、コントロール・フレームのサイズが確定しない。従
って、コントロール・フレームをフレームの先頭におい
てしまうと、最初のレコードをフレームのどこから書き
始めたらよいのか分からないことになってしまう。 本方式では、上述のようにレコードはフレームの先頭か
ら書き始め、コントロール・フレームはフレームの最後
尾から書き始めることにより、このような問題を回避し
ている。
【0080】次に、この改善案による位置情報のメモリ
容量の見積りを行う。この改善案による位置情報のメモ
リ容量について、前述した「レコードの位置情報のメモ
リ容量見積り」で見積もったケースのうち図22の管理
単位2のケースについて見積りを行い、改善効果を見
る。このケースは、管理単位(フレーム)サイズは12
KBで、レコード数は位置情報(レコード・ポインタ)
がもっとも多くなる94レコード/CKDトラックの場
合について、メモリ容量を見積もっている。このケース
では、ギャップの削除方法にもよるが、すべてのギャッ
プを削除してしまう場合では、すべてのレコードが一つ
目のフレームに収まってしまう(「ギャップの削除方法
とメモリ容量の評価」参照)。このとき、本改善案で
は、一つ目のフレームのコントロール・フレームにレコ
ード・ポインタが94個、コントロール・フレーム・ポ
インタが1個あって、他のフレームに制御情報は特にな
い(というより、他のフレームそのものが要らない)。
従って、位置情報の制御に必要なメモリ容量は、 4B×95=380B である。この結果と、「レコードの位置情報のメモリ容
量見積り」で見積もった他のケースとの比較を図27に
示す。<ケース II−2>は従来の方式で、各FBA
ブロック(ここでは、フレーム)の先頭に位置するレコ
ードの位置だけを保持する方式である。<ケース II
−3>はすべてのレコードの位置情報を保持する方式
で、本改善前の方式である。<ケース II−3>改が
本方式である。
【0081】「レコードの位置情報のメモリ容量見積
り」において示したように、CKDレコードを記録する
ために正味必要なメモリ容量の最大値は、1トラック1
レコード(R0のみ)でそのデータ・フィールドが最長
の場合である。このとき必要なメモリ容量は、図23か
ら引用すると図28のようになる。CKDトラック1本
のために用意するFBAディスクの容量を48KB(1
2KB×4台)とすると、制御情報のために使用できる
メモリ容量は下式のようになる。 <ケース I−1> 1024×48−48044=1108 <ケース I−2> 1024×48−48796= 356 <ケース I−3> 1024×48−49020= 132 この値と図27の<ケース II−3>改の位置情報の
メモリ容量380Bと比較すると、ギャップを全部削除
してしまう<ケース I−1>以外ではメモリ容量が足
りなくなるように見える。しかし、図27の値は、レコ
ード数が94レコードで位置情報(コントロール・フレ
ーム)のメモリ容量がもっとも多くなるときの値である
のに対し、上の値は1トラック1レコードで、CKDレ
コードのためのメモリ容量が最大の場合の値である。本
改善案では、レコード数が少なくなると、比例してコン
トロール・フレームのメモリ容量も少なくなり、1トラ
ック1レコードの場合では、20Bで済んでしまう(レ
コード・ポインタ1個、コントロール・フレーム・ポイ
ンタ4個)。結局、本改善方式ではすべての場合につい
て、メモリ容量は足りることになる。(ただし、トラッ
ク容量のチェック方式として、<ケース III−3
>、すなわち、各レコードのCKDフォーマットでの相
対位置を保持するために、ECCやパディング等削除し
た分をギャップを伸ばして調整する方式をとると、94
レコードの場合などメモリ容量が足りなくなる可能性も
ある。)また、目的レコードの位置決めのためのメモリ
・アクセスもフレーム当り1回〜2回で済む。このとき
に一度CPSがコントロール・フレームをキャッシュ・
メモリから取得してしまえば、後の制御ではCPSはこ
の取得したコントロール・フレームを使用すればよいの
で制御のためのメモリ・アクセスは不要である。フォー
マット・ライトなどでフレーム内のレコードの構成が変
わった場合も、CPSが取得しているコントロール・フ
レームを更新しておいて、最後にキャッシュ・メモリに
書き出せばよい。ホストとのデータ転送中のコントロー
ル・フレームの飛び越し制御や、フォーマット・ライト
時の制御などもCPSが保持しているコントロール・フ
レーム・ポインタ中のメモリ・アドレスのチェックをす
るだけでよく、このような操作はレコード間ギャップ相
当の時間中に実行してしまうので、オーバ・ヘッドにな
らない。以上より、この改善方式は初期の目的を十分達
成したといえる。
【0082】次に、「セグメント・ナンバを用いたトラ
ック容量のチェック方式の検討」を行なう。CKD−F
BA変換方式を特徴付ける三つのポイントとして、 <I>ギャップの削除方法 <II>レコードの位置決め方法 <III>トラック容量のチェック方法 をあげたが、ここでは、<III>のトラック容量のチ
ェック方法について、特に<ケース III−3>のセ
グメント・ナンバを使用してトラック容量をチェックす
る方式について、実際の制御方法を説明する。なお、<
III>のトラック容量のチェック方法については<ケ
ース III−1>と<ケース III−2>と<ケー
ス III−3>の3つの方式が上がっていた。まず、
前提条件を以下のように考える。セグメント・ナンバ
は、図35のように、32Bを1セグメントとする。セ
グメント・ナンバは、1から順番にふられた絶対セグメ
ント番号(ASN)を使用するものとする(図29参
照)。また、使用する数字はすべて十進数を用いる。
【0083】次に、制御方法について説明する。まず基
本方針として以下の2点を考える。 (1)ホーム・アドレスHAのセグメント・ナンバはS
/Wから読み書きできるので、HAが通常の位置にある
場合(ASN=17)と、HAがMoveしている場合
(ASN=23)の2種類をサポートするものとする。 (2)それ以外のR0を含む他のレコードについてはS
/Wからセグメント・ナンバもSC(スキップ・コント
ロール)も読み書きできないので、MoveやSpli
tなどはいっさい無いものとする。 (1)セグメント・ナンバの与え方 次に、上記の基本方針に基づき、以下のように各レコー
ドのセグメント・ナンバを付与するものとする。 (a)HAのセグメント・ナンバはS/Wから書き込ま
れる値を絶対セグメント番号に換算したものに従い、A
SN=17、または、23とする(もちろん、イニシャ
ライズ時はASN=17とする。)。 (b)R0のセグメント・ナンバはHAのセグメント・
ナンバにかかわらず常にASN=26とする。 (c)R1以降のレコード(Rn)のセグメント・ナン
バは下式により定める。 ・前のレコード(Rn−1)にキー・フィールドがある
場合、 RnのASN=Rn−1のASN+[(KL+12)/
32]+[(DL+12)/32]+22 ・前のレコード(Rn−1)にキー・フィールドがない
場合、 RnのASN=Rn−1のASN+[(DL+12)/
32]+15 ただし、12はECCとスペースのバイト数、32はセ
グメントのバイト数、22はG2(224B)とG2
(224B)とG3(216B)とカウント・フィール
ド(40B)のセグメント数、15はG2(224B)
とG3(216B)とカウント・フィールド(40B)
のセグメント数であり、[]内は、小数点以下切上げと
する。
【0084】(2)トラック容量(トラック・オーバラ
ン)のチェック方法 (1)により求めたセグメント・ナンバと、ホストから
送られてくるKL,DLを用いて下式によりトラック・
オーバランのチェックを行う。下式を満たしていればO
K、満たしていなければトラック・オーバランになる。 ・追加するレコード(Rn)にキー・フィールドがある
場合、 RnのASN+[(KL+12)/32]+[(DL+
12)/32]+14≦1533 ・追加するレコード(Rn)にキー・フィールドがない
場合、 RnのASN+[(DL+12)/32]+7≦153
3 ただし、14はG2(224B)のセグメント数、7は
G2(224B)のセグメント数、1533は最大セグ
メント数であり、[]内は、小数点以下切上げとする。
【0085】以上をまとめると、フォーマット・ライト
時のトラック・オーバランのチェックの手順は下記のよ
うになる。(1)の手順に従い、書き足すレコードのセ
グメント・ナンバを求める。 ・求めたセグメント・ナンバの値とホストから送られて
きたKL.DLから、(2)の手順に従い、書き足すレ
コードがトラック・オーバランを起こすか否かチェック
する。上記(1),(2)の各式は、HAがMoveし
ていようがいまいが、同じ式を用いる。すなわち、この
方式では、図30に示すように、仮想的なCKDトラッ
ク上でHAがMoveしていようがいまいが、また、H
A内のSC(スキップ・コントロール)の値にかかわら
ず、すべてのディフェクトはトラックの最後尾にあるこ
とになる。このような制御にすることにより、トラック
・オーバランのチェックでは常に同じ式を用いることが
できるうえ、また、SC(スキップ・コントロール)の
値を気にする必要が無くなるので、制御が非常にシンプ
ルになる。もし、HAのMoveにあわせてR0もずら
していると、トラック・オーバランのチェック時、常
に、トラックの先頭のHAのセグメント・ナンバを読み
とってチェックするか、さもなければ、実際のディスク
と同じように、各レコードにおいてもSC(スキップ・
コントロール)を保持して管理する必要がでてくる。基
本的には、フォーマット・ライト時のギャップ中の作業
は、(2)のトラック・オーバランのチェックなど、従
来のディスク制御に比べ増える方向なので、シンプルに
できる部分はシンプルにすべきである。
【0086】以上より、セグメント・ナンバを使用した
トラック容量のチェック<ケースIII−3>の方法)
は比較的シンプルな制御で実現可能である。従って、従
来方式<ケース III−2>の方法のようにCKDフ
ォーマットのトラック・イメージをFBAに変換した後
も、ギャップ長を調整して各レコードのトラックの先頭
からのバイト位置を、無理に元のCKDトラックのまま
維持しなくても制御可能である。セグメント・ナンバ自
体はS/Wインター・フェイス上サポートが必要である
ので(少なくともHAについては)、それを積極的に利
用する<ケース III−3>の方法は、ギャップ長を
元のCKDフォーマットと同等の量だけ保持しなければ
ならない<ケース III−2>に比べ、特にレコード
・サイズが小さいときのキャッシュ・メモリの利用効率
において著しく有利である(「ギャップの削除方法とメ
モリ容量の評価」)。また、すべてのレコードのKL.
DLを読んで、トラックの残容量を計算する<ケース
III−1>に対しては、メモリのアクセス回数の点で
有利であり、もっとも有望な方式である。
【0087】これまでCKD−FBA変換方式を特徴付
ける三つのポイントとして、 <I>ギャップの削除方法 <II>レコードの位置決め方法 <III>トラック容量のチェック方法 をあげ、それぞれについて下記のような検討を行ってき
た。 ●<I>のギャップの削除方法について ・「ギャップの削除方法とメモリ容量の評価」において
メモリ容量の評価を行った。この結果、すべてのギャッ
プを削除する<ケース I−1>の方式が有利なことが
分かった。 ●<II>のレコードの位置決め方法について ・「レコードの位置情報のメモリ容量見積り」で、レコ
ードの位置情報を保持する2方式について、位置情報の
ためのメモリ容量の見積りを行った。この結果、メモリ
・アクセス回数の点で<ケース II−2>(FBAブ
ロック内の最初のレコードの位置情報だけ保持する)よ
り有利であるとしていた<ケース II−3>(全レコ
ードの位置情報を保持する)は、そのままでは、レコー
ドの位置情報を保持するためのメモリ容量が多くなりす
ぎることが分かった。 ・そこで、「レコードの位置情報の制御方式の改善」で
<ケース II−3>のメモリ容量の改善が可能か否か
検討した。その結果、制御方法を工夫することにより、
<ケース II−3>でも全レコードの位置情報を保持
するためのメモリ容量を十分小さくできることがわかっ
た。 ●<III>のトラック容量のチェック方法について ・<ケース III−3>(セグメント・ナンバなどを
用いて各レコードのCKDフォーマットでの相対位置情
報を保持する。ギャップが不要な分有利)の実現可能性
を「セグメント・ナンバを用いたトラック容量のチェッ
ク方式の検討」で検討した。その結果、セグメント・ナ
ンバを用いてトラック容量のチェックを行うことは容易
で、その具体的な手順も示した。
【0088】以上のような検討結果前述した図19に示
すように、もっとも高得点をあげている方式<1,3,
3>が採用できることがわかった。この方式は、ギャッ
プの削除方法としては全ギャップを削除するので、特に
ジャーナル・ファイルなどのレコード・サイズが小さい
場合、トラック・イメージを格納するためのメモリ容量
が少なくて済む。レコードの位置決め方式としては、全
レコードの位置情報を保持する方式を採用しているの
で、目的レコードを探すためのメモリ・アクセス回数が
少なくて済む。ただし、位置情報を保持するためのメモ
リ容量を少なくするために、「レコードの位置情報の制
御方式の改善」で検討した<ケース II−3>改を採
用する必要がある。トラック容量のチェック方式として
は、セグメント・ナンバを使用する方式なので、各レコ
ードの相対位置をCKDフォーマットのまま維持するた
めのギャップは必要無く、従って、ギャップの削除方法
として、全ギャップを削除する方法との併用が可能とな
る。単に得点の大小だけで判定するのでなく、高得点を
あげている他の方式についても、方式<1,3,3>と
の比較を行っておく。
【0089】<2,3,2> ・・・54点 図9において次点である方式<2,3,2>は、<1,
3,3>と比較するとトラック容量のチェック方法でセ
グメント・ナンバを使用せず、従来方式であるギャップ
長を調節してメモリ上でも各レコードのCKDフォーマ
ットでの相対位置を維持する方式をとっている。そのた
め全ギャップを削除することはできず、ギャップの削除
方法は必然的に一部のギャップを残す方式となる。この
方式のよい点は、各レコードの相対位置がCKDフォー
マットのまま維持されているので、フォーマット・ライ
ト時、セグメント・ナンバを計算したり、それによる、
トラック容量のチェックをしなくてもよいことである。
従って、セグメント・ナンバそのものも省略できる。悪
い点は、ギャップ長を伸ばして各レコードのCKDフォ
ーマットでの相対位置を維持するため、メモリ上でのト
ラック容量は常にほぼCKDトラック1本分必要となる
ことである。これは、特に、ジャーナル・ファイルなど
のレコード・サイズの小さい場合にキャッシュ・メモリ
の利用効率悪化、ステージング/デステージング時の内
部バスの負荷増大につながる。また、レコードの位置決
め方式として、全レコードの位置情報を保持する方式を
併用しているが、レコードサイズが最少で、レコード数
が最多の94レコード/トラックのケースでは、「セグ
メント・ナンバを用いたトラック容量のチェック方式の
検討」で検討した改善方法をとっても、メモリ容量不足
となる可能性もある。また、この方式は、レコードの位
置決め方式は従来方式と異なるが、トラック容量のチェ
ック方式は従来方式そのままである。
【0090】<2,3,3> ・・・53点 この方式は、ギャップを一部残すこと以外は<1,3,
3>と同じである。従って、ギャップを残しても特にそ
れを使用しないので、ギャップを残す意味がなく、<
1,3,3>に比べ、わざわざ採用する必然性がない方
式である。上記説明では、アレイ型ディスク装置(RA
ID)を前提としていたが、ここでは、通常のディスク
装置を用いる場合にも<1,3,3>の方式を採用でき
ることについて述べる。 ●<I>のギャップの削除方法について ギャップの削除方法によるメモリ容量の大小がキャッシ
ュの利用効率に大きく関わることは、RAIDであって
もなくても同じであり、この点からは、すべてのギャッ
プを削除する<ケース I−1>の方式が有利なことに
変わりはない。 ●<II>のレコードの位置決め方法について バスの負荷を下げ高転送レートを出しやすくするために
は、1回のバス獲得である程度まとまった量のデータ転
送を行ってしまう方がよい。すなわち、レコードの位置
情報も一括してアクセスできる方が、毎回各レコードの
カウント・フィールドをアクセスする方式よりも有利で
ある。従って、レコードの位置決め方法についても、メ
モリ・アクセス回数が少ない<ケース II−3>(全
レコードの位置情報を保持する)の方が、従来方式の<
ケース II−2>(FBAブロック内の最初のレコー
ドの位置情報だけ保持する)より有利である。 ●<III>のトラック容量のチェック方法について これも、RAIDでなくなってもギャップが不要な方式
の方がキャッシュの利用効率上有利であることに変わり
はない。従って、従来方式の<ケース III−2>
(ギャップ長を調節して、メモリ上でも各レコードのC
KDフォーマットでの相対位置を維持する)よりも、<
ケース III−3>(セグメント・ナンバなどを用い
て各レコードのCKDフォーマットでの相対位置情報を
保持する。ギャップが不要な分有利)のままでよい。
【0091】次に、CKD−FBA変換におけるコマン
ド・エミュレーション方式について検討する。ここで
は、前述した具体的な変換方式に基づいて、実際のS/
Wインタフェース上の代表的な、コマンドごとにこのC
KD−FBA変換方式における実現方法を検討する。
【0092】1.SET SECTOR <機能> チャネルから1バイトのセクタ情報を受け取り、セクタ
を検索する。 (セクタ情報:X’00’〜X’DD’,X’FF’た
だしX’ ’は16進数を表す。) <実現方式> このディスク・サブシステムでは、セクタ値は、まず、
CKDトラックを四つに分割したフレームのうち、どの
フレームに目的レコードが存在するかを知るために使用
する。フレームが見つかった後は、コントロール・フレ
ーム中のレコード・ポインタに書かれている各レコード
のセグメント・ナンバと、このセクタ値を比較すること
により、より精度の高い位置決めができる(フレーム、
及びコントロール・フレームやレコード・ポインタの概
略については図25に示したが、詳細は「レコードの位
置情報の制御方式の改善」参照のこと)。 ○目的レコードが存在するフレームの計算 実際のCKDディスクでは、セクタ1個分は224バイ
トからなりたっているので、セクタ値からCKDフォー
マットのトラック上でのそれに相当する絶対バイト・ア
ドレスはただちに計算できる。しかし、フレーム上では
ギャップやECC、パディングなどは削除して記録して
いるので、その絶対バイト・アドレスがどのフレームに
含まれているかは、その削除してしまった分を換算しな
いと分からない。この削除した分量はレコード数にも依
存する。
【0093】以下、目的レコードが存在するフレームの
計算について説明する。フレーム上ではCKDフォーマ
ットのトラックから何バイト削除しているかは、フレー
ム上でのトラック・フォーマットが詳細に決らなくては
定まらないが、図33のようなフォーマットであるとす
ると、各フィールドごとにフレーム上で削除されている
バイト数は図31のようになる。目的レコードの前には
R0を除いて(目的レコードのレコード・ナンバ−1)
個のレコードが存在するので、セクタ値で示されるCK
Dフォーマットのトラック上での位置は、フレーム上で
はトラックの先頭から下式のバイト数BC1で表される
位置に相当する。 BC1=224×セクタ値−1038−752×(レコ
ード・ナンバ−1) また、これだけのレコードを記録するためには、フレー
ム上ではレコード数分(R0も入れてレコード・ナンバ
個)のレコード・ポインタが必要である。レコード・ポ
インタ1個は4バイトとしているので、この分も含めた
バイト数BC2は下式のようになる。 BC2=BC1+4×レコード・ナンバ フレーム1個にはコントロール・フレーム・ポインタ4
バイトを除くと、レコード・ポインタも含め12KB−
4B記録できるので、セット・セクタ値に相当する位置
は、下式で求められるN番目のフレームに存在すること
が期待できる。 N=[BC2/12284] ただし、[]内は、小数点以下切上げとする。これらの
式を一つにまとめると、下式のようになる。 N=[(224×セクタ値−286−748×レコード
ナンバ)/12284] ただし、[]内は、小数点以下切上げとする。また、負
の値になったときはN=1とする。正確には、フレーム
上で削除されているバイト数は各レコードにキー・フィ
ールドが存在しているか否か、また、32の整数倍にす
るためにKL,DLにゼロ・パディングしているバイト
数などにもよって異なってくるため、上式は、あくまで
概算式となる。上式では、このような不定の部分につい
ては、削除されるバイト数が最大になるように仮定して
計算しているので、これにより求めたフレームの番号は
実際よりも前の方を示す傾向になる。従って、上式で求
めたフレームに目的レコードが存在しなかった場合は、
次のフレームを探せばよい。しかし、この式の精度はも
ともとフレームのサイズ12KBでよく、それに対し誤
差の量はレコード1個当り最大でも286バイト(22
4+31+31)であるので、通常は問題無い。
【0094】また、SEARCHコマンドが来なかった
り、SEARCHコマンドであってもSEARCH K
EYであったためレコードナンバが得られなかった場合
は、フレームを特定することを諦めて、任意のフレーム
(例えば最初にステージングが完了したフレーム)中の
レコードのセグメント・ナンバを調べていくことになる
(次の項の手順参照)。 ○目的レコードの探索 上の手順により、目的レコードが存在するフレームを特
定したら、後は、そのフレーム中のレコード・ポインタ
を調べて、目的レコードを探せばよい(詳細な手順は、
「レコードの位置情報の制御方式の改善」参照)。ま
ず、そのフレームの先頭のレコードのレコード・ポイン
タ(コントロール・フレーム中では最後尾にある)から
順番にレコード・ポインタ中に記録されているセクタ値
を調べていく。そして、チャネルから送られてきたセク
タ値よりも大きいセクタ値を持つ最初のレコードのレコ
ード・ポインタを見つける。もし、このフレーム中のレ
コードすべてがチャネルから送られてきたセクタ値より
小さいセクタ値しか持っていなければ、次のフレームに
対して、同じ操作を行っていく。条件を満たす最初のレ
コードのレコード・ポインタが見つかったら、引き続く
SEARCHIDコマンドのアーギュメントとそのレコ
ードのカウント・フィールドを比較し、一致していれば
そのレコードにオリエンテーションを確立する。もし、
一致しなければ次のレコードのカウント・フィールドと
の比較を繰り返していき、最初にアーギュメントと一致
したレコードにオリエンテーションを確立し、次のコマ
ンドに移っていく(CKDの論理トラックの最後まで探
して一致するレコードが見つからなかった場合などにつ
いては、「4.SEARCH IDEQ」コマンドを参
照のこと)。なお、先行するSEEKコマンドによるヒ
ット・チェックの結果、既に目的トラックがキャッシュ
上に存在することが分かっている場合(ヒット時)はた
だちに次のコマンドへ進んでよいが、ミス・ヒット時、
または、ヒットしていてもトラックの一部分しかキャッ
シュ上に存在しておらず、目的レコードが含まれるフレ
ームがキャッシュ上に存在しない場合は、チャネル・エ
ンドCEのみ返し一旦チャネルからディスコネクトし
て、目的のフレームを物理ディスクからステージングし
た後、デバイス・エンドDEを返して次のコマンドへ進
むことになる。
【0095】2.SEARCH IDENTIFIRE
EQUAL <機能>チャネルから5バイトのSEARCH情報を受
け取り、デバイスから読み出されたカウント・フィール
ド(R0フィールドも含む)のCCHHRと比較する。 <実現方式> ○SET SECTORコマンドからチェインした場合 「1.SET SECTOR」で示した動作により、C
CHHRの一致したレコードにオリエンテーションを確
立する。実際のCKDディスクでは、SET SECT
OR後、最初に見つけたレコードのCCHHRが一致し
なければ不一致報告をし(CE,DE)、ホストがトラ
ンスファーインチャネルTICを併用して再度SEAR
CH ID EQコマンドを発行するのを待つ。しか
し、このサブシステムでは、「1.SET SECTO
R」で示したように一回のSEARCH ID EQコ
マンドでトラック全体をサーチできてしまう。エミュレ
ーションの厳密性からいえば、あくまで、1個のSEA
RCH ID EQコマンドで1個のレコードのサーチ
しか行うべきでないが、そうすることによるメリットは
特に考えられないので、処理効率の点から「1.SET
SECTOR」で示した一括サーチの方式でよいと考
える。SET SECTORで指定されたセクタから後
ろに一致するレコードが無かった場合は、マルチ・トラ
ック・ビットがセットされていれば、不一致報告(C
E,DE)を行う。ただし、レコードそのものが存在し
なかった場合はそのまま次のトラックにヘッド・スイッ
チする。SET SECTORコマンドで指定されたセ
クタから後ろに目的レコードが見つからず(レコードが
存在しなかった場合も含む)、マルチ・トラック・ビッ
トもセットされていなかった場合は、同じトラックの最
初のフレームの最初のレコード(R0も含む)に戻って
比較を繰り返し、それでも一致するレコードが見つから
なければNo Record Foundを報告する。 ○READ,WRITE,SEARCH系コマンド、ま
たは、SPACE COUNTコマンドからチェインし
た場合 先行するコマンドでオリエンテーションしていた次のレ
コードに対しCCHHRの比較を行う。この場合は、既
にオリエンテーションが確立しているのであるから、S
ET SECTORコマンドからチェインした場合と異
なり、実物のCKDディスク同様、サーチするレコード
は次のレコード1個だけの方がよい。オリエンテーショ
ンしていた所より後ろにレコードが存在していなかった
場合は、マルチ・トラック・ビットがセットされていれ
ば次のトラックに移り、セットされていなければ同じト
ラックの先頭に戻って、比較する。ただし、同一CCW
チェイン内でもう一度、トラックの最後までいってしま
ったらNo RecordFoundを報告する。 ○他のコマンドからのチェイン、または、チェインの先
頭であった場合 この場合、実際のCKDディスクでは、現在のトラック
上で最初に発見したレコードに対しサーチ動作を行う
が、このサブシステムでは常にR0から順番にサーチす
るほかは、「SET SECTORコマンドからチェイ
ンした場合」と同じでよい。ミスヒットしていてステー
ジングが完了していなかった場合や、マルチ・トラック
・ビットがたっていて、次のトラックがミスヒットして
いた場合などは、このコマンドでステージングを完了さ
せる。また、SEEKコマンドが先行しなかった場合の
現在トラックの認識のためにそのボリュームに対する最
後のアクセス・トラックは常に覚えておかなければなら
ない。
【0096】3.READ DATA <機能>ディスクから読み出したデータ・フィールドの
情報をチャネルに転送する。 <実現方式> ○READ,WRITE,SEARCH系コマンド、ま
たは、SPACE COUNTコマンドからチェインし
た場合 フレーム上でオリエンテーションが確立していたフィー
ルド以降にある最初のデータ・フィールドの情報をチャ
ネルに転送し、オリエンテーションを維持する。もし、
オリエンテーションが確立していたフィールドより後ろ
に、もはや、データ・フィールドが存在しなかった場
合、マルチ・トラック・ビットがセットされていれば、
次のトラックのR1(R0の次のコマンド)のデータ・
フィールドを転送する。マルチ・トラック・ビットがセ
ットされていなければ、ヘッド・スイッチせず同じトラ
ックのR1のデータ・フィールドを転送する(R0のデ
ータ・フィールドを転送する場合は、R0フィールドの
比較を満足したSearch系コマンド、または、R0
CをバイパスしたSPACE COUNTコマンドから
チェインした場合のみである)。 ○他のコマンドからのチェイン、または、チェインの先
頭であった場合 オリエンテーションが確立していない状態であるので、
実際のCKDディスクでもどのレコードを検出するかは
一定でない。従って、毎回、R1(R0の次のコマン
ド)のデータ・フィールドの情報を転送して特に問題な
い(R1が存在すれば)。転送後は、そのままオリエン
テーションを確立する。もし、R1が存在せず、かつ、
マルチ・トラック・ビットがセットされていれば、次の
トラックのR1のデータ・フィールドを転送する(アド
レス・マークが見つからないまま、インデックスを検知
してしまった場合に相当する)。マルチ・トラック・ビ
ットがセットされていなければ、No Record
Foundを報告する。もちろん、次のトラックがキャ
ッシュ上に存在しなかった場合は、まず、ステージング
してからチャネルへデータ転送する。同一CCWチェイ
ン内でSEEKコマンドが先行していない場合は、同一
ボリュームにおける最後にアクセスしたトラックに対し
て、RD DATAコマンドを実行する。
【0097】4.WRITE COUNT KEY A
ND DATA <機能>チャネルから受け取った情報を、Rnフィール
ド(R0フィールドを除く)としてディスク上に書き込
む。 <実現方式>このコマンドは、CCHHRの一致したS
EARCH ID EQコマンド(RD D,RD K
D,WR D,またはWR KDが続いていてもよ
い)、すべてのキーの一致したSEARCH KEY
EQコマンド(RD D,またはWRDが続いていても
よい)、WR R0コマンド、またはWR CKDコマ
ンドからチェインした場合以外はコマンド・リジェクト
となるので、このコマンドが実行される場合は事実上、
必ず既にオリエンテーションが確立している。従って、
チャネルから情報を受け取ったら、ただちに下記のよう
なオペレーションを実行する(図25参照)。 (1)カウント・フィールドの受取 チャネルからRnのCCHHRKLDLを受け取り、そ
れに、Rn-1 0のカウント・フィールドの他の情報をつ
けたす。まだ、キャッシュ上には書き出さない。Rnの
カウント・フィールドの他の情報としては、SC(スキ
ップ・コントロール)、SN(セグメント・ナンバ)、
PA(フィジカル・アドレス)、F(フラグ)等であ
る。SCは、今回のサブシステムではスキップ・コント
ロールはサポートしないので、事実上、一定値を書いて
おくだけである(ただし、エリアだけは確保しておいた
方が、将来何かの使い道がありそうな気がする)。SN
も先行するレコードのSCの値から計算して書き込む
(計算方法は「セグメント・ナンバを用いたトラック容
量のチェック方式の検討」参照)。また、同時にこの値
からセクタ値も計算して、コントロール・フレーム中の
レコード・ポインタに(3)で書き込む。PA,FはH
Aと同じ値のままでよい。 (2)トラック・オーバランのチェック チャネルから受け取ったKL,DLとセグメント・ナン
バからからトラック・オーバランを発生しないか否かを
調べる(詳細な計算方法は「セグメント・ナンバを用い
たトラック容量のチェック方式の検討」参照)。もし、
トラック・オーバランを発生する場合は、以降の制御で
トラック・オーバラン・ポイントまでデータ転送を行
い、ホストにトラック・オーバランを報告するような制
御を行う。 (3)レコード・ポインタの追加 トラック・オーバランのチェックが終ったら、現在オリ
エンテーションを確立しているフレームの(CPSが自
分で保持している)コントロール・フレーム・ポインタ
中のコントロール・フレームの先頭を示すメモリ・アド
レスを4B減じ(コントロール・フレームを4B拡張す
る)、さらに、Rnのレコード・ポインタを(CPSが
保持している)コントロール・フレームの先頭に書き足
す。もし、4B減じることによって、コントロール・フ
レームがレコード・フレームに食い込んでしまうような
場合は、そのフレームにレコードを追加することは諦
め、次のフレームのコントロール・フレームにレコード
・ポインタを追加する。必要ならば、マネージャに次の
フレームのエリアを確保してもらう。 (4)フレームのさかいめのチェック チャネルから受け取ったKL,DLからRnの各フィー
ルドの最後尾のメモリ・アドレスを計算し、(3)で更
新したコントロール・フレーム・ポインタ中のメモリ・
アドレスと比較する。もし、Rnのどれかのフィールド
の最後尾のメモリ・アドレスがコントロール・フレーム
に食い込んでいるような場合は、ホストとのデータ転送
をコントロール・フレームの手前で一端停止し、メモリ
・アドレスを次のフレームの先頭まで進めてから、ホス
トとのデータ転送を再開するような制御を(CPSが)
行う。Rnの最後尾がレコード・フレーム内に収まって
いれば、上記のような制御は不要で、Rnのデータ転送
を途中で中断することなく実行することができる。 (5)カウント・フィールドのキャッシュへの書きだし これらの一連のチェックが完了してからCPS内のカウ
ント・フィールドのデータをキャッシュ・メモリ上の該
当アドレスへ書き出す。もし、カウント・フィールド内
にフレームのさかいめが来てしまうような場合は、そこ
で一旦キャッシュへの書き出しを停止して、メモリ・ア
ドレスを次のフレームの先頭まで進めてから、書き出し
を再開する。 (6)キー・フィールド、データ・フィールドの受取 (4)のチェックの結果、Rnの最後尾がレコード・フ
レーム内に収まっていれば、まず、キー・フィールドの
データをチャネルから受けとって、キャッシュ上に書き
込んだのち、適当なギャップ相当時間経過後、データ・
フィールドのデータもチャネルから受けとってキャッシ
ュに書き込む。もし、(4)のチェックの結果、途中で
フレームの切れ目に遭遇することが分かっていれば、そ
こで一旦データ転送を中断する。現在オリエンテーショ
ンが確立しているフレームが最終フレームでなかった場
合は、CPSはその次のフレームのキャッシュ上でのア
ドレスも知っているので、データ転送のためのメモリ・
アドレスを次のフレームの先頭に進めた後、チャネルと
のデータ転送/キャッシュへの書き込みを再開する。現
在オリエンテーションを確立しているフレームが最終フ
レームであった場合は、もともとキャッシュ上にはその
次以降のフレームの領域は確保されていないので、CP
Sはマネージャに次のフレームのための領域を要求し
て、そのアドレスをマネージャから教えてもらった後、
そこに対してデータ転送を再開する(このような新しい
フレームの領域確保などの処置はギャップ相当のタイミ
ングで、データ転送を中断している間に実行してしまえ
ばよい)。データ転送したフレームに対しては、各フレ
ームのコントロール・フレーム中の相当するFBAブロ
ックの更新フラグをセットしておく。 (7)CEの報告 ここまですんだら、CPSはコマンド・チェインの有無
を確認するため、一旦チャネルにチャネルとの間のデー
タ転送が終了したことを示すチャネル・エンドCEを報
告する。 −−−コマンド・チェイン指示がなかった場合 (8)CPS→マネージャ デステージング要求 コマンド・チェイン指示がなければ、CPSはRnの最
後尾が書かれたフレームの残りの部分にゼロ・パディン
グするとともに、ゼロ・パディングをした部分に対応す
るFBAブロックの更新フラグもセットする。次いで、
更新したフレームのコントロール・フレームをキャッシ
ュ上に書き出した後、マネージャを介しDPSにデステ
ージングを要求する。この際、Rnの最後尾が書かれた
フレームより後ろにもともとの最終フレームあった場合
は、CPSはマネージャにRnの最後尾のフレーム以降
のフレームが無効になったことも報告する。もともとR
nの最後尾が書かれたフレームより最終フレームが前で
あった(同じ場合も含む)場合は、それ以降のフレーム
ももともと無効フレームであったのであるから、あらた
めて、以降のフレームが無効になったことは報告しな
い。 (9)マネージャ→DPS デステージング要求 マネージャは、無効になったフレームが存在することも
あわせて報告された場合は、該当トラックのキャッシュ
上の無効フレームを抹消した後(自分の管理情報をメン
テナンスする)、DPSに該当トラックのデステージン
グを指示する。この際マネージャは、DPSに対し、物
理ディスクに書き出すべきデータのアドレスとして、キ
ャッシュ上での有効データの存在するフレームのアドレ
スを知らせるとともに、新たに無効フレームが発生した
場合のみ、無効フレームに書き込むデータとして、無効
フレーム用のデータをあらかじめどこか一箇所に用意し
ておき、そこのアドレスを指示する(すなわち、無効フ
レームはすべて無効フレーム用のデータが用意されてい
るメモリ上の同一のデータを物理ディスクに書き込むこ
とになる。この無効フレーム用データはキャッシュ・メ
モリ上にマネージャが用意しておいてもよいし、各DP
Sが自分のボードの中に持っていてもよい)。新たに無
効フレームが発生しなかった場合は、DPSに対しもと
もと無効フレームであったフレームをあらためて書き直
すことは指示しない。 (10)デステージング DPSはマネージャからの指示を受け、キャッシュ・メ
モリ上のデータを物理ディスクに書き出す。DPSはマ
ネージャから指示されたフレームの更新フラグがたって
いるFBAブロックについてライトを行う。 (11)デステージング終了報告 物理ディスクへの書き出しが終了すると、DPSはマネ
ージャを介して、CPSに終了報告を行う。 (12)DE報告 CPSはチャネルに、全ての処理が終了したことを示す
デバイス・エンドDEを報告する。 −−−コマンド・チェイン指示があった場合 (8)’コマンド・チェインが指示されれば、CPSは
DEを報告し、次のコマンドを受け取る。 (9)’次のコマンドがWR CKDまたはERASE
であればその処理に移る。他のコマンドであれば、CP
SはCE,UCK,SMを報告しコマンド・リトライを
要求する。 (10)’この後、上記の(8)〜(11)を実行す
る。 (11)’DPSから物理ディスクへのライト終了が報
告されたら、CPSはDEを報告し、先にコマンド・リ
トライ要求したコマンドを受け取り直し、そのコマンド
の実行に移る。
【0098】5.WRITE DATA <機能>チャネルから受け取った情報により、レコード
のデータ・フィールドを更新する。 <実現方式>このコマンドは、CCHHRの一致したS
EARCH ID EQコマンド、または、すべてのキ
ーの一致したSEARCH KEY EQコマンドから
チェインした場合以外はコマンド・リジェクトとなるの
で、このコマンドが実行される場合は、事実上、必ず既
にオリエンテーションが確立している。従って、チャネ
ルから情報を受け取ったら、ただちに下記のようなオペ
レーションを実行する。 (1)フレームのさかいめのチェック データを書き込もうとしているレコードのカウント・フ
ィールドのKL,DLからRnの最後尾のメモリ・アド
レスを計算し、現在オリエンテーションを確立している
フレームのコントロール・フレーム・ポインタ中のメモ
リ・アドレスと比較する。もし、Rnの最後尾のメモリ
・アドレスがコントロール・フレームに食い込んでいる
ような場合は、ホストとのデータ転送をコントロール・
フレームの手前で一端停止し、メモリ・アドレスを次の
フレームの先頭まで進めてから、ホストとのデータ転送
を再開するような制御を(CPSが)行う。Rnの最後
尾がレコード・フレーム内に収まっていれば、上記のよ
うな制御は不要で、Rnのデータ転送を途中で中断する
ことなく実行することができる。 (2)データ・フィールドの受取 (1)のチェックの結果、Rnの最後尾がレコード・フ
レーム内に収まっていれば、データ・フィールドのデー
タをチャネルから受けとってキャッシュに書き込む。も
し、(1)のチェックの結果、途中でフレームの切れ目
に遭遇することが分かっていれば、そこで一旦データ転
送を中断する。アップデート・ライトの場合は、このよ
うなケースでは必ず次のフレームは存在しているので、
CPSはデータ転送のためのメモリ・アドレスを次のフ
レームの先頭に進めた後、チャネルとのデータ転送/キ
ャッシュへの書き込みを再開する。データ転送したフレ
ームに対しては、各フレームのコントロール・フレーム
中の相当するFBAブロックの更新フラグをセットして
おく。 (3)CEの報告 ここまですんだら、CPSはコマンド・チェインの有無
を確認するため、一旦チャネルにチャネルとの間のデー
タ転送が終了したことを示すチャネル・エンドCEを報
告する。 −−−コマンド・チェイン指示がなかった場合 (4)CPS→マネージャ デステージング要求 コマンド・チェイン指示がなければ、マネージャを介し
DPSにデステージングを要求する。アップデート・ラ
イトの場合は、新たに無効フレームが発生するようなこ
とはない。 (5)マネージャ→DPS デステージング要求 マネージャは、DPSに対し、物理ディスクに書き出す
べきデータのアドレスとして、キャッシュ上での有効デ
ータの存在するフレームのアドレスを知らせ、デステー
ジングを指示する。 (6)デステージング DPSはマネージャからの指示を受け、キャッシュ・メ
モリ上のデータを物理ディスクに書き出す。DPSはマ
ネージャから指示されたフレームのうち更新フラグのあ
るFBAブロックだけ書き直す。 (7)デステージング終了報告 物理ディスクへの書き出しが終了すると、DPSはマネ
ージャを介して、CPSに終了報告を行う。 (8)DE報告 CPSはチャネルに、全ての処理が終了したことを示す
デバイス・エンドDEを報告する。 −−−コマンド・チェイン指示があった場合 (4)’コマンド・チェインが指示されれば、CPSは
DEを報告し、次のコマンドを受け取る。 (5)’次のコマンドがSEARCH系のコマンド、ま
たは、フォーマット・ライト系コマンドであればその処
理に移る。同一のコマンドチェイン内で、SEARCH
系またはWRITE系以外のコマンドが指示された場合
は、CPSはCE,UCK,SMを報告しコマンド・リ
トライを要求する。 (6)’この後、上記の(4)〜(7)を実行する。 (7)’DPSから物理ディスクへのライト終了が報告
されたら、CPSはDEを報告し、先にコマンド・リト
ライ要求したコマンドを受け取り直し、そのコマンドの
実行に移る。
【0099】以上のように、この実施例によれば、可変
長レコードの1トラックからレコード間ギャップ及びフ
ィールド間ギャップ等全てのギャップを削除し、そのト
ラックデータを固定長レコードの固定ブロック長サイズ
の整数倍に相当する管理単位に分割し、その管理単位に
含まれる全ての可変長レコードの位置を示す制御情報を
上記管理単位の最後尾に後ろから順番に書き入れた後、
固定長レコードの固定ブロック長サイズに分割すると共
に、各固定長レコードには、可変長レコードフォーマッ
トでのトラックの先頭からの相対位置を示す情報を保持
させるので、固定ブロック内で目的の可変長レコードの
位置確認のためのメモリアクセス回数が少なくて済みメ
モリ負荷軽減となると共に、全てのギャップを削除でき
るのでトラックデータを保持するためのメモリ容量が少
なくて済み、従って、ディスクキャッシュをベースとし
たディスクサブシステムに好適で、キャッシュのヒット
率が向上する。さらに、制御情報領域のサイズを可変に
でき可変長レコードの個数だけ用意すればよくメモリが
少なくて済む。
【0100】実施例2.上記実施例1においては、図2
5に示したようにコントロールフレームの後ろにもたせ
コントロールフレームの長さを可変とする場合を示した
が、図24に示すように位置情報領域すなわちコントロ
ールフレームを各管理単位の先頭に設けるようにしても
構わない。ただし、この場合には前述したように94レ
コード分の位置情報領域をあらかじめ設定しておく必要
があるために1つの管理単位を12KBとした場合には
容量不足が生じてしまう。したがって1つの管理単位を
13KBとする必要がある。このようにコントロールフ
レームを4B×94レコード分あらかじめもつことによ
りコントロールフレームのサイズが固定されると共にレ
コードフレームのエリアも固定されるため、管理単位の
アクセス方法が単純になる。
【0101】実施例3.上記実施例1においては、可変
長レコードフォーマットでのトラックの先頭からの相対
位置として、セクタ値を用いる場合を示したが、これは
セットセクタコマンドで用いられる相対位置がセクタ値
であることからセクタ値を使用することが望ましいため
である。もし、セットセクタコマンドがその他の相対位
置例えば、可変長レコードフォーマットでのトラックの
先頭からのセグメント値を用いている場合には、この相
対位置はセクタ値ではなくセグメント値を用いても構わ
ない。すなわち、図25に示したレコード・ポインタの
セクタ値という値は、セグメント値であっても構わな
い。
【0102】実施例4.上記実施例1においては、トラ
ック容量を計算する場合にはCKDレコード各々にセグ
メント値を持たせている場合を示したが、トラック容量
をセグメント単位に管理するのではなく、セクタ単位に
管理する場合にはセグメント値ではなくセクタ値を持た
せておいても構わない。
【0103】実施例5.上記実施例1においては、コン
トロール・フレーム内のレコード・ポインタにセクタ値
を持たせ、レコード・フレーム内の各CKDレコード内
にはセグメント値を持たせる場合を示したが、セクタ値
とセグメント値は一定の関係にあり(セクタ値×7=セ
グメント値)、どちらか一方を用いる場合でも構わな
い。すなわち、レコード・ポインタにセクタ値を有して
おれば各CKDレコードにセグメント値は覚えておかな
くてもよい。ただし、この場合はトラックの使用容量が
セクタ単位しか計算できなくなる。一方、レコード・ポ
インタにセクタ値を有さず、レコード・フレーム内のC
KDレコードにセグメント値を持たせている場合には、
トラックの使用容量がセグメント単位で計算することが
可能になる。しかしこの場合には、セットセクタコマン
ドでセクタ値が指定された場合にレコード・ポインタに
は、セクタ値が存在しないためレコード・ポインタのメ
モリアドレスからCKDレコードを探し出し、そのCK
Dレコードにあるセグメント値からセクタ値を算出しな
ければ、検索しているセクタかどうかが判定できなくな
る。
【0104】実施例6.上記実施例1では特に明記しな
かったが、FBAディスク9が1つのディスクで構成さ
れる場合、あるいはアレイ形ディスクで構成される場合
のいずれの場合でも構わない。また上記実施例1では明
記しなかったが、FBAディスク9は磁気ディスク装置
あるいは光ディスク装置等のデータを記録できる装置で
あればどのような媒体を使用するものであっても構わな
い。
【0105】実施例7.上記実施例1においてはCKD
−FBA変換方式が磁気ディスク制御装置5に存在する
場合を示したが、CKD−FBA変換を行うのは磁気デ
ィスク制御装置である場合に限らず、ホスト計算機1の
チャネルが行っても構わない。あるいは磁気ディスク装
置等の記憶装置自身が行っても構わない。図32は、磁
気ディスク装置等の記憶装置自身がCKD−FBA変換
を行う場合の一実施例を示す図である。図32に示すよ
うに、CKDの磁気ディスク制御装置500のキャッシ
ュ・メモリに記憶された可変長レコードを変換して、固
定長ブロックをもつFBAディスク900に記憶し直す
場合には、FBAディスク900内にあるCKD−FB
A変換部100が動作する。ギャップ削除部101は、
磁気ディスク制御装置500のキャッシュ・メモリに記
憶された可変長レコードをキャッシュ・メモリ600に
読み込む。この場合は、磁気ディスク制御装置500の
キャッシュ・メモリの1トラックのレコードを全てキャ
ッシュ・メモリ600に読み込む。そしてこの1トラッ
ク分の可変長レコードからレコード間ギャップ及びフィ
ールド間ギャップを削除する。キャッシュ・メモリ60
0に読み込まれたCKDのトラックイメージ700は、
この時点でギャップが削除されたトラックデータ7aに
変換される。
【0106】次に、レコード配置部102はトラックデ
ータ7aをフレームと呼ばれる管理単位7b,7c,7
d,7eに順に配置する。このフレームと呼ばれる管理
単位7b〜7eのサイズは例えばCKDのトラックイメ
ージ7が48KBのサイズをもっている場合には4等分
した12KBのサイズをそれぞれ有している。レコード
配置部102はトラックデータ7aの可変長レコードを
順にフレーム7bから配置してゆく。この場合に、各フ
レームに含まれる可変長レコードの位置を示すアドレス
情報を各フレームに記憶する。また、そのレコードがC
KDディスク10で記憶されていたトラック先頭からの
相対位置(セクタ値)を示すセクタ情報を同様に記憶す
る。
【0107】次に、固定ブロック記憶部103はフレー
ムをFBAディスク900の記憶部200に記憶する。
ここでFBAディスク9の固定長ブロックのサイズをそ
れぞれ1KBとすると、フレーム7b,7c,7d,7
eはそれぞれ12KBのサイズをもっているため、1つ
のフレームは12個の固定長ブロックを用いて記録され
る。
【0108】このようにして、CKDの磁気ディスク制
御装置から出力される1トラック分のデータがFBAの
記憶部に記憶される。逆に、FBAディスク100の記
憶部200からの読み込みは、上記動作の逆を行なうこ
とにより達成される。
【0109】
【発明の効果】この発明においては、上記ギャップの削
除によりトラックデータを保持するメモリ容量を低減で
きる。また、上記位置情報により目的とするCKDレコ
ードの位置確認ができるのでメモリアクセス回数及びメ
モリ容量の低減に役立つ。
【図面の簡単な説明】
【図1】この発明のフォーマット変換方式の概略ブロッ
ク図である。
【図2】この発明のフォーマット変換方式を説明するた
めのブロック図である。
【図3】この発明のフォーマット変換の動作を説明する
図である。
【図4】この発明のフォーマット変換の動作を説明する
図である。
【図5】この発明のフォーマット変換の動作を説明する
図である。
【図6】ギャップの残し方を説明を説明するための図で
ある。
【図7】レコードの位置決め方法を説明するための図で
ある。
【図8】トラック容量のチェック方法を示す図である。
【図9】CKD−FBA変換方式の比較表を示す図であ
る。
【図10】CKDレコードのFBAブロックへの分割例
を示す図である。
【図11】RAIDにおけるCKDトラックの分割例を
示す図である。
【図12】メモリ容量の見積りを示す図である。
【図13】トラック当りのレコード数を示す図である。
【図14】トラック当りのレコード数を示す図である。
【図15】トラック当りのレコード数を示す図である。
【図16】トラック当りのレコード数を示す図である。
【図17】メモリ容量の見積りを示す図である。
【図18】メモリ容量の見積りのグラフ図である。
【図19】1トラック分のイメージデータが少ない場合
のメリットを示す図である。
【図20】レコードポインタの保持情報を示す図であ
る。
【図21】位置情報の管理単位を示す図である。
【図22】位置情報のメモリ容量の見積りを示す図であ
る。
【図23】レコードのために必要な最大メモリ容量を示
す図である。
【図24】位置情報の保持方法の一例を示す図である。
【図25】レコード位置決め方式の改善案を示す図であ
る。
【図26】フレーム中の空きバイトを示す図である。
【図27】位置情報のメモリ容量の見積りを示す図であ
る。
【図28】レコードのために必要な最大メモリ容量を示
す図である。
【図29】E1880系のセグメントナンバを説明する
図である。
【図30】仮想CKDトラック上のフォーマットイメー
ジを示す図である。
【図31】フィールド毎の最大削除バイト数を示す図で
ある。
【図32】この発明の他の実施例を示す図である。
【図33】CKDレコードのフィールドの内容を示す図
である。
【図34】サーボ面サーボ方式を用いる磁気ディスクの
概略図である。
【図35】トラックとセクタとセグメントの関係を示す
図である。
【図36】従来のソフトウェアがCKDレコード方式に
基づいて出力するコマンドシーケンスの一例を示す図で
ある。
【図37】従来のCKD−FBA変換方式を示す図であ
る。
【符号の説明】
1 ホスト計算機 2a チャネル 2b チャネル 2c チャネル 2d チャネル 2e チャネル 3 CKDフォーマットのレコード 4 CKDコマンド 5 磁気ディスク制御装置 6 キャッシュ・メモリ 7 CKDのトラックイメージ 8 FBAフォーマットのレコード 9 FBAディスク 10 FBAコマンド 51 チャネルパスサーバ(CPS) 52 入力部/出力部 53 位置計算部 54 レコード検索部 55 読み書き部 56 管理単位検索部 57 レコード特定部 100 CKD−FBA変換装置 101 ギャップ削除部 102 レコード配置部 103 固定ブロック記憶部 CKDレコード 可変長レコード FBAレコード 固定長レコード

Claims (11)

    (57)【特許請求の範囲】
  1. 【請求項1】 可変長フォーマットで記憶されたレコー
    ドを固定長フォーマットに変換して記憶するデータ記憶
    フォーマット変換方式において、 可変長フォーマットで記録される1トラック分の可変長
    レコードからレコード間ギャップ及びフィールド間ギャ
    ップを削除してトラックデータを生成するギャップ削除
    手段、 上記ギャップ削除手段によりギャップを削除したトラッ
    クデータを所定のサイズの管理単位に配置し、その管理
    単位に含まれる可変長レコードの位置を示す第1の位置
    情報と、その管理単位に含まれる可変長レコードの可変
    長レコードフォーマットでのトラックの先頭からの相対
    位置を示す第2の位置情報とを上記管理単位に記憶する
    レコード配置手段、 上記管理単位を固定長レコードの固定長ブロック長サイ
    ズに分割して記憶する固定ブロック記憶手段を備えたこ
    とを特徴とするデータ記憶フォーマット変換方式。
  2. 【請求項2】 上記レコード配置手段は、可変長レコー
    ドを上記管理単位の一方から順に配置するとともに、配
    置した可変長レコードに対応する第1と第2の位置情報
    を上記管理単位の他方から順に配置することを特徴とす
    る請求項1記載のデータ記憶フォーマット変換方式。
  3. 【請求項3】 上記レコード配置手段は、あらかじめ管
    理単位内に、第1と第2の位置情報を記憶する領域と可
    変長レコードを記憶する領域とを定めておくことを特徴
    とする請求項1記載のデータ記憶フォーマット変換方
    式。
  4. 【請求項4】 上記第1の位置情報は管理単位に含まれ
    る可変長レコードの管理単以内のメモリアドレスであ
    り、上記第2の位置情報はトラックの先頭からのセクタ
    値、あるいはセグメント値であることを特徴とする請求
    項1記載のデータ記憶フォーマット変換方式。
  5. 【請求項5】 上記可変長レコードは、可変長レコード
    内に、可変長レコードフォーマットでのトラックの先頭
    からの相対位置を示すセグメント情報を有していること
    を特徴とする請求項1記載のデータ記憶フォーマット変
    換方式。
  6. 【請求項6】 可変長フォーマットからギャップを削除
    し、そのデータを所定サイズの管理単位に配置し、その
    管理単位に含まれる可変長レコードの位置を示すアドレ
    ス情報と、その管理単位に含まれる可変長レコードの可
    変長フォーマットでの先頭からの相対位置を示す相対位
    置情報を保持させ、固定長レコードの固定長ブロックサ
    イズに分割して固定長フォーマットとして記憶させた記
    憶部に対して以下の要素を用いてアクセスするアクセス
    制御装置 (a)上記記憶部に対して上記管理単位でデータを読み
    書きする読み書き手段、 (b)上記読み書き手段により読み書きされるデータを
    管理単位ごとに格納するメモリ、 (c)レコードが可変長フォーマットで記憶されている
    ものとして出力された可変長レコードへのアクセス命令
    を入力する入力手段、 (d)上記入力手段により入力したアクセス命令に基づ
    いて、アクセスする可変長レコードが記憶されていると
    考えられる管理単位の位置を概算する位置計算手段、 (e)上記位置計算手段により概算された位置にある管
    理単位を上記読み書き手段により上記記憶部から上記メ
    モリに読み込み、上記入力手段により入力されたアクセ
    ス命令がアクセスしようとするレコードを検索するレコ
    ード検索手段。
  7. 【請求項7】 上記アクセス制御装置は、さらに、相対
    位置情報を用いて、可変長レコード方式でレコードが記
    憶されている場合のトラックの使用容量を判定すること
    を特徴とする請求項6記載のアクセス制御装置。
  8. 【請求項8】 上記入力手段はアクセスしようとするレ
    コードの相対位置情報を入力するとともに、 上記レコード検索手段は、 上記アクセスしようとするレコードの相対位置情報を、
    検索された管理単位に保持されている相対位置情報とを
    比較し、アクセスしようとするレコードの相対位置情報
    を持つ管理単位が見つかるまで、読み書き手段により次
    の管理単位を記憶部からメモリに読み込むことにより管
    理単位を検索する管理単位検索手段と、上記管理単位検
    索手段によりアクセスしようとするレコードの相対位置
    情報を持つ管理単位が見つかった場合に、その管理単位
    に含まれるアドレス情報を用いてアクセスしようとする
    可変長レコードを特定するレコード特定手段を有するこ
    とを特徴とする請求項6記載のアクセス制御装置。
  9. 【請求項9】 以下の工程を有するデータ記憶フォーマ
    ット変換方法 (a)データを有するフィールド及びレコード間ギャッ
    プ及びフィールド間ギャップを有する可変長フォーマッ
    トからレコード間ギャップ及びフィールド間ギャップを
    削除して各可変長レコードのフィールドを連結するギャ
    ップ削除工程、 (b)上記ギャップ削除工程により連結された各可変長
    レコードをあらかじめ定められたサイズを持つフレーム
    に順に配置するとともに、各可変長レコードをアクセス
    するためのアクセス情報を各可変長レコードに対応させ
    て記憶するレコード配置工程、 (c)上記フレームを複数の固定長のブロックサイズに
    分割して固定長フォーマットとして記憶する固定長ブロ
    ック記憶工程。
  10. 【請求項10】 上記レコード配置工程は、アクセス情
    報として、各可変長レコードが配置されたフレームの位
    置情報と、各可変長レコードが可変長フォーマットに基
    づいて記憶されている場合の位置情報を記憶することを
    特徴とする請求項9記載のデータ記憶フォーマット変換
    方法。
  11. 【請求項11】 以下の工程を有し、上記請求項9記載
    のデータ記憶フォーマット変換方法により記憶された固
    定長フォーマットのデータをアクセスするデータアクセ
    ス方法 (a)可変長フォーマットのレコードをアクセスするた
    めのコマンドとアクセスするデータの検索情報を入力す
    るアクセスコマンド入力工程、 (b)上記アクセスコマンド入力工程により入力した検
    索情報からアクセスするレコードが記憶されているフレ
    ームの位置情報を推定する位置情報推定工程、 (c)上記位置情報推定工程により推定された位置情報
    をもつフレーム以降のフレームを順に固定長フォーマッ
    トで記憶された複数の固定長ブロックから再生し、アク
    セスするレコードを検索するレコード検索工程。
JP00900293A 1992-03-06 1993-01-22 データ記憶フォーマット変換方式及びその変換方法及びアクセス制御装置及びデータアクセス方法 Expired - Fee Related JP3175371B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP00900293A JP3175371B2 (ja) 1992-03-06 1993-01-22 データ記憶フォーマット変換方式及びその変換方法及びアクセス制御装置及びデータアクセス方法
US08/024,724 US5388013A (en) 1992-03-06 1993-03-01 Data storage format conversion method and system, data access method and access control apparatus
EP93103292A EP0559142B1 (en) 1992-03-06 1993-03-02 Data storage format conversion method and system, data access method and access control apparatus
DE69330319T DE69330319T2 (de) 1992-03-06 1993-03-02 Verfahren und System für Datenspeicher-Formatumwandlung, Daten-Zugriffsverfahren und Steuergerät

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP4983392 1992-03-06
JP4-49833 1992-03-06
JP00900293A JP3175371B2 (ja) 1992-03-06 1993-01-22 データ記憶フォーマット変換方式及びその変換方法及びアクセス制御装置及びデータアクセス方法

Publications (2)

Publication Number Publication Date
JPH05307440A JPH05307440A (ja) 1993-11-19
JP3175371B2 true JP3175371B2 (ja) 2001-06-11

Family

ID=26343642

Family Applications (1)

Application Number Title Priority Date Filing Date
JP00900293A Expired - Fee Related JP3175371B2 (ja) 1992-03-06 1993-01-22 データ記憶フォーマット変換方式及びその変換方法及びアクセス制御装置及びデータアクセス方法

Country Status (4)

Country Link
US (1) US5388013A (ja)
EP (1) EP0559142B1 (ja)
JP (1) JP3175371B2 (ja)
DE (1) DE69330319T2 (ja)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5517670A (en) * 1992-12-30 1996-05-14 International Business Machines Corporation Adaptive data transfer channel employing extended data block capability
JP2580998B2 (ja) * 1993-05-19 1997-02-12 日本電気株式会社 記憶制御装置
JP3343990B2 (ja) * 1993-05-19 2002-11-11 ソニー株式会社 磁気ディスク装置
JP3264465B2 (ja) 1993-06-30 2002-03-11 株式会社日立製作所 記憶システム
JP3433978B2 (ja) * 1993-07-30 2003-08-04 富士通株式会社 入出力制御装置
JP3670303B2 (ja) * 1993-09-01 2005-07-13 富士通株式会社 データ変換方法及びデータ変換装置
SG47794A1 (en) * 1993-09-30 1998-04-17 Intel Corp Buffer memory management for a computer network node
JP3136036B2 (ja) * 1993-11-16 2001-02-19 富士通株式会社 ディスク制御装置の制御方法
JP2557203B2 (ja) * 1993-12-27 1996-11-27 インターナショナル・ビジネス・マシーンズ・コーポレイション ファジィ・パッキング方法及びデータ記憶システム
US5592342A (en) * 1994-05-23 1997-01-07 Quantum Corporation Method for packing variable size user data records into fixed size blocks on a storage medium
US5535372A (en) * 1994-07-06 1996-07-09 International Business Machines Corporation Method and apparatus for efficient updating of CKD data stored on fixed block architecture devices
US5617432A (en) * 1994-11-09 1997-04-01 International Business Machines Corporation Common error protection code for data stored as a composite of different data formats
JPH08221445A (ja) * 1995-02-20 1996-08-30 Hitachi Ltd データ検索方法
JP3260999B2 (ja) * 1995-03-03 2002-02-25 富士通株式会社 ディスク制御装置の制御方法
JP3583829B2 (ja) * 1995-04-13 2004-11-04 株式会社日立製作所 外部記憶サブシステムの制御方法および制御装置
WO1997007505A1 (fr) * 1995-08-18 1997-02-27 Matsushita Electric Industrial Co., Ltd. Dispositif d'enregistrement et de reproduction d'informations et support d'enregistrement et de reproduction d'informations
JPH09185551A (ja) * 1996-01-08 1997-07-15 Mitsubishi Electric Corp 半導体記憶装置
EP0785500B1 (en) 1996-01-19 2004-03-03 Hitachi, Ltd. Storage device and method for data sharing
US6233660B1 (en) * 1996-02-16 2001-05-15 Emc Corporation System and method for emulating mainframe channel programs by open systems computer systems
US5802557A (en) * 1996-03-18 1998-09-01 Emc Corp System and method for caching information in a digital data storage subsystem
JP3245364B2 (ja) 1996-09-02 2002-01-15 株式会社日立製作所 互いに異なるインタフェースを介して記憶装置を共用する方法及びシステム
US5822759A (en) * 1996-11-22 1998-10-13 Versant Object Technology Cache system
JPH10222410A (ja) * 1997-02-06 1998-08-21 Hitachi Ltd 結合装置におけるデータ処理方法
JP3671595B2 (ja) * 1997-04-01 2005-07-13 株式会社日立製作所 複合計算機システムおよび複合i/oシステム
US5951691A (en) * 1997-05-16 1999-09-14 International Business Machines Corporation Method and system for detection and reconstruction of corrupted data in a data storage subsystem
US6304940B1 (en) * 1997-08-14 2001-10-16 International Business Machines Corporation Shared direct access storage system for MVS and FBA processors
US6112277A (en) * 1997-09-25 2000-08-29 International Business Machines Corporation Method and means for reducing device contention by random accessing and partial track staging of records according to a first DASD format but device mapped according to a second DASD format
JP3407628B2 (ja) * 1997-12-19 2003-05-19 株式会社日立製作所 計算機システム
JP3404289B2 (ja) * 1998-05-22 2003-05-06 富士通株式会社 ディスク制御装置及びその制御方法
KR19990086269A (ko) * 1998-05-27 1999-12-15 구자홍 다수트랙을 갖는 디스크에서의 특정위치 액세스 방법
JP2000029635A (ja) * 1998-07-08 2000-01-28 Hitachi Ltd 記憶制御装置
JP2000047972A (ja) * 1998-07-29 2000-02-18 Hitachi Ltd 入出力制御方式
US6769088B1 (en) * 1999-06-30 2004-07-27 Maxtor Corporation Sector-coding technique for reduced read-after-write operations
US6496901B1 (en) * 1999-09-22 2002-12-17 Storage Technology Corporation Mapping variable size data blocks into a fixed block structure
US6577460B1 (en) 2000-03-01 2003-06-10 International Business Machines Corporation Method and apparatus for improving track format efficiency in a direct access storage device
US6425051B1 (en) 2000-09-25 2002-07-23 International Business Machines Corporation Method, system, program, and data structures for enabling a controller accessing a storage device to handle requests to data in a first data format when the storage device includes data in a second data format
US6950900B1 (en) * 2000-09-27 2005-09-27 International Business Machines Corporation Method and apparatus for migrating data having a format of a first type to a format of a second type
JP4174967B2 (ja) * 2000-12-18 2008-11-05 船井電機株式会社 追記型光ディスクの記録方法
JP4632574B2 (ja) 2001-05-25 2011-02-16 株式会社日立製作所 記憶装置およびファイルデータのバックアップ方法およびファイルデータのコピー方法
US6747829B2 (en) 2001-06-29 2004-06-08 International Business Machines Corporation Pad eliminating decoding method and apparatus for a direct access storage device
US6868515B2 (en) 2001-07-13 2005-03-15 Hitachi Global Storage Technologies Netherlands Bv Formatting method and apparatus for a direct access storage device
JP4008752B2 (ja) * 2002-05-22 2007-11-14 株式会社日立製作所 記憶装置システムの制御方法、及び記憶装置システム
US7681105B1 (en) 2004-08-09 2010-03-16 Bakbone Software, Inc. Method for lock-free clustered erasure coding and recovery of data across a plurality of data stores in a network
US7681104B1 (en) * 2004-08-09 2010-03-16 Bakbone Software, Inc. Method for erasure coding data across a plurality of data stores in a network
EP1645963B1 (en) * 2004-10-07 2014-05-14 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Determining sizes of memory frames for dynamic memory allocation limiting internal fragmentation
JP4751123B2 (ja) * 2005-07-29 2011-08-17 株式会社日立製作所 ストレージシステム、フォーマット方法及びコンピュータプログラム
US20080222080A1 (en) * 2007-03-06 2008-09-11 Nitrosecurity, Inc. Inferred index of circular tables in a database
US7924521B1 (en) * 2007-04-10 2011-04-12 Marvell International Ltd. Data wedge format table synchronization
JP6521694B2 (ja) * 2015-03-27 2019-05-29 株式会社バイオス 記憶制御システム及び記憶制御装置
EP3502817A1 (en) * 2017-12-19 2019-06-26 ABB Schweiz AG Method for facilitating control system testing and simulation

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5034914A (en) * 1986-05-15 1991-07-23 Aquidneck Systems International, Inc. Optical disk data storage method and apparatus with buffered interface
JPH01306917A (ja) * 1988-05-20 1989-12-11 Internatl Business Mach Corp <Ibm> 記憶制御方法及び装置
US5200864A (en) * 1989-06-28 1993-04-06 International Business Machines Corporation Combining small records into a single record block for recording on a record media
JPH0421041A (ja) * 1990-05-14 1992-01-24 Nec Corp ファイル形式の動的変換方式

Also Published As

Publication number Publication date
EP0559142A3 (en) 1996-09-04
DE69330319T2 (de) 2002-04-25
DE69330319D1 (de) 2001-07-19
EP0559142B1 (en) 2001-06-13
JPH05307440A (ja) 1993-11-19
EP0559142A2 (en) 1993-09-08
US5388013A (en) 1995-02-07

Similar Documents

Publication Publication Date Title
JP3175371B2 (ja) データ記憶フォーマット変換方式及びその変換方法及びアクセス制御装置及びデータアクセス方法
EP0785500B1 (en) Storage device and method for data sharing
US8041921B2 (en) Apparatus, system, and method for utilizing tape media segmentation
US5983319A (en) Information recording and reproduction apparatus and a method of data caching including read-ahead capability
US6842824B2 (en) Cache control program and computer for performing cache processes utilizing cache blocks ranked according to their order of reuse
JP4402103B2 (ja) データ記憶装置、そのデータ再配置方法、プログラム
US7443629B1 (en) Apparatus, system, and method for optimizing fast access data storage on segmented tape media
JPH06332623A (ja) アレイ型記録装置及び記録装置
WO2000002121A1 (en) Method and apparatus for storing diverse data structures
US8654476B2 (en) Method and system for operating a tape drive
US5420983A (en) Method for merging memory blocks, fetching associated disk chunk, merging memory blocks with the disk chunk, and writing the merged data
JP3407628B2 (ja) 計算機システム
JP5605043B2 (ja) データコピー装置、データコピー方法およびストレージ装置
JPH06175894A (ja) データ処理システムの非特殊データ検索方法とそのシステム
US6360296B1 (en) Disk control apparatus
JP3030949B2 (ja) ディジタルデータ記録再生装置
JP2834081B2 (ja) 磁気ディスク制御装置
JP3925461B2 (ja) 計算機システム
JP2580998B2 (ja) 記憶制御装置
JP4131953B2 (ja) ファイル制御装置
JP3925246B2 (ja) 計算機システム
JP3183253B2 (ja) ディスク装置の動的大容量化方法及び動的大容量化方式
JP2002185909A (ja) 画像記録再生装置および画像記録再生方法
JPH09258916A (ja) ファイル管理方式
JPH10254638A (ja) 記憶装置システム

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees