JPH06105425B2 - データ記憶サブシステムとホスト・データ処理システム間のデータ転送方法 - Google Patents

データ記憶サブシステムとホスト・データ処理システム間のデータ転送方法

Info

Publication number
JPH06105425B2
JPH06105425B2 JP3504263A JP50426391A JPH06105425B2 JP H06105425 B2 JPH06105425 B2 JP H06105425B2 JP 3504263 A JP3504263 A JP 3504263A JP 50426391 A JP50426391 A JP 50426391A JP H06105425 B2 JPH06105425 B2 JP H06105425B2
Authority
JP
Japan
Prior art keywords
data
controller
host
command
read
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 - Lifetime
Application number
JP3504263A
Other languages
English (en)
Other versions
JPH05502315A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority claimed from PCT/GB1991/000256 external-priority patent/WO1992015054A1/en
Publication of JPH05502315A publication Critical patent/JPH05502315A/ja
Publication of JPH06105425B2 publication Critical patent/JPH06105425B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Gloves (AREA)

Description

【発明の詳細な説明】 [技術分野] 本発明は、データ記憶サブシステムと、接続されたホス
ト・データ処理システムとの間のデータ転送の分野に関
する。
[背景技術] データ処理システム内で使用されるデータ記憶サブシス
テムは、通常、顧客データを保持する1つまたは複数の
記憶装置に接続された装置制御装置を備える。このよう
なサブシステムの重要な要件は、大量のデータを記憶で
き、それと同時にホスト・データ処理システムによって
高速でアクセス可能なことである。記憶されたデータを
ますます高速に転送できるサブシステムを開発するため
の努力が続けられている。
ホストを装置制御装置に接続し、また制御装置を装置に
接続するためのいくつかのインターフェースが開発され
ている。このようなインターフェースの1つが、米国規
格協会(ANSI)によって標準規格として採用された小型
コンピュータ・システム・インターフェース(SCSI)で
ある。SCSIバスを使って制御装置を装置に接続するデー
タ記憶サブシステムが知られている。
サブシステムからホストにデータを転送するためのいく
つかの技法が記載されている。公知の一つの方法では、
データ転送動作のたびに、データが、装置に転送される
前に、エラーの有無を検査される。各データ・セクタ
を、装置から読み取り、データ・バッファ内に保持し
て、接続されたホスト・データ処理システムまで送る前
に、データ・バッファ内でエラーを検査する。この技法
には、良好なデータだけがホストに転送されるという利
点がある。ただし、すべてのデータを転送するのに要す
る時間が増加するという固有の性能損失もある。
IBM System/370では、データを、検査なしで装置から
ホストに直接に送る、別の技法が使用されている。こう
して「生」データを送ると、前述の方法に比べて、伝送
の前にセクタをデータ・バッファに保持する必要がない
という性能上の利益がある。ただし、System/370に使用
されているこの技法には、伝送されたデータにエラーが
存在する時に顕在化する欠点がある。これが発生する時
には、最初にホストによって要求されたデータの大部分
を再伝送する必要がある。
装置とホスト間のデータ伝送を高速化するため、いくつ
かの性能を向上させる技法が開発されてきた。その1つ
が、データが要求された時に要求されたデータがヘッド
の下にない時に生じる待ち時間を減少させる、分割転送
である。米国特許第4494157号明細書には、分割転送を
使用して、データを2バーストでバッファに転送する方
法が記載されている。データの2つのバーストは、ホス
ト・システムに送られる前に、バッファで受け取られ
る。
[発明の開示] 本発明は、データ記憶サブシステムと、接続されたホス
ト・データ処理システムとの間での高速データ転送を達
成することを目的とする。
したがって、本発明は、データを記憶する直接アクセス
記憶装置に通信のために接続された装置制御装置を備え
るデータ記憶サブシステムから、接続されたホスト・デ
ータ処理システムにデータを転送する方法を提供する。
この方法は、転送しようとするデータ・ブロックのシー
ケンスとデータ・シーケンスの第1ブロックの転送先の
ホスト・メモリ内の開始アドレスとを指定するデータ転
送コマンドを、システムから装置制御装置に送ってデー
タ転送を開始するステップと、コマンドに応答してサブ
システムからシステムへデータのシーケンスを転送する
ステップとを含み、制御装置はホスト・メモリ内の開始
アドレスを再指定する能力を有する。
したがって、制御装置は、コマンドで指定された範囲で
ホスト・メモリ内の開始アドレスを再指定することがで
きる。実際には、この制御装置は、ホスト・メモリに対
するランダム・アクセス権を有する。これは、多くの形
で有用な機能である。
好ましい方法では、制御装置は、装置からの前記データ
・シーケンスの非逐次式順序での転送を要求し、ホスト
によって指定された開始アドレスを使用して、非逐次式
データの第1ブロックを送る先のホスト・メモリ内の修
正済み開始アドレスを計算し、制御装置が、非逐次式順
序でデータをホストに転送し、データの第1ブロック
が、修正済み開始アドレスに送られる。
したがって、分割読取り転送では、制御装置が、データ
の第2バーストを送る先のホスト内のアドレスを再指定
することができる。このようにして、第1バーストをホ
ストに送る前に、データの第2バーストを制御装置が受
け取るのを待つ必要がなくなる。これによって、装置か
ら「順序外れ」のデータを受け取るが、そのデータを正
しい順序でホストに転送しなければならなかった従来の
システムに比べて、性能上の利益がもたらされる。
また、制御装置は、コマンドで指定されたのと同じ順序
での装置からのデータの転送を要求し、制御装置が、前
記データ・シーケンスの第1ブロックを、ホストによっ
て指定されたアドレスに送る。これは、データがブロッ
クの昇順でホストまで転送される「通常の」読取り動作
である。
好ましい方法では、データ・シーケンスの一部分のエラ
ーを検出する際、制御装置は、前記部分を再伝送するよ
う装置に要求し、ホストからのコマンドで指定されたア
ドレスを使用して、再試行部分を送るべきホスト・メモ
リのアドレスを計算する。
したがって、データ転送中にエラーが発生した場合、制
御装置が、データの一部をホストまで再伝送する。ホス
ト・メモリに対してランダム・アクセスを行うと、原コ
マンドで指定されたデータ全部を再送信する必要がなく
なる。
本発明の別の態様では、制御装置が、データ転送先のホ
スト・メモリ内の開始アドレスを指定する能力を有する
ことを特徴とする、直接アクセス記憶装置に通信のため
に接続された装置制御装置を備え、動作の際に、データ
が、装置から制御装置を介してデータ処理システムのメ
モリに転送される、接続されたホスト・データ処理シス
テムによってアクセス可能なデータを記憶するためのデ
ータ記憶サブシステムが提供される。
本発明の好ましい実施例を、添付図面を参照して例とし
て記述する。本発明を実施するためには、以下の記述に
含まれる特徴のすべてが必要というわけではないことに
留意されたい。
図面の簡単な説明 第1図は、本発明によるデータ記憶サブシステムの主要
な機能ユニットのブロック図である。
第2図は、第1図のアダプタの主要構成要素を示すブロ
ック図である。
第3図は、第2図のアダプタ・リンク・チップの構造を
示す図である。
第4図は、第1図の制御装置の主要構成要素を示すブロ
ック図である。
第5図は、第4図の制御装置リンク・チップの構造を示
すブロック図である。
第6図は、制御装置マイクロプロセッサ内で定義される
タスク間の通信を示すブロック図である。
第7図は、インバウンド直列リンクとアウトバウンド直
列リンクを示すブロック図である。
[発明の詳細な説明] データ処理システムへの接続に適し、ホスト・システム
が高速にアクセスできる大容量の記憶域を提供する、デ
ータ記憶サブシステムについて記述する。第1図に示し
たこのサブシステムの主な機能ユニットは、(1)ホス
ト・アダプタ、(2)装置制御装置および(3)直接ア
クセス記憶装置(DASD)である。これらの機能ユニット
は、二地点間全二重直列リンクによって相互接続され
る。第1図は、このサブシステムの基本構成を示す図で
あるが、同図では、1個のアダプタ10が、専用直列リン
ク15を介して1台の制御装置20に接続され、制御装置20
は、4本の直列リンク25〜28によって4台のDASD 30に
接続されている。以下の記述の大半は、この基本構成に
関するものである。ただし、このサブシステムのアーキ
テクチャ(以下で詳細に述べる)は、各アダプタを最高
4台の制御装置に接続でき、各制御装置を最高4台の装
置に接続できるように設計されている。このサブシステ
ムの好ましい実施例では、ホスト・アダプタは、ホスト
・システム内に格納され、直列リンクを介してハウジン
グ(たとえばラックに装着した引出しまたは自立型ユニ
ット)に接続される。このハウジングは、1台の制御装
置と4台のDASDを備え、付随の電源と冷却システム(図
示せず)を有する。
まず、アダプタ、制御装置およびDASDの主な機能につい
て手短に述べる。
1.アダプタ アダプタは、本質的には、直列リンクを介してホスト・
システムを制御装置に接続する汎用マルチプレクサであ
る。アダプタは、IBMのマイクロ・チャネル・アーキテ
クチャ(マイクロ・チャネルは、インターナショナル・
ビジネス・マシーンズ・コーポレイションの登録商標)
など様々な既存インターフェースを介してホスト・シス
テムに接続するよう設計することができる。
アダプタの主要機能は次の通りである。
1)アダプタは、SCSI(小型コンピュータ・システム・
インターフェース)コマンドをシステム・メモリから直
接メモリ・アクセス(DMA)によって取り出し、直列リ
ンクを介してこれらのコマンドを制御装置に転送する。
2)アダプタは、DMAチャネルのプールを管理し、要求
に応じて読取りデータまたは書込みデータの転送のため
にこれらのチャネルを制御装置に割り振る。
3)アダプタは、DMAによってホスト・メモリから書込
みデータのパケットを取り出し、直列リンクを介してこ
れらを制御装置に伝送する。
4)アダプタは、直列リンクから読取りデータのパケッ
トを受け取り、DMAによってこれらをシステム・メモリ
に記憶する。
5)アダプタは、各コマンドの終了状況を組み立て、シ
ステムに提示する。一時に最高4台の装置に関して良好
な状況を提示することができる。
6)アダプタは、前のSCSIコマンドを打ち切る手段を提
供する。
2.制御装置 制御装置は、接続されるDASD用のSCSIコマンド・セット
(その要素のうちで本明細書に関連するものは、別途定
義する)を実施する。主要機能は次の通りである。
1)制御装置は、各DASD用のコマンド待ち行列を維持管
理する。
2)制御装置は、ホスト・システムから書込みデータを
事前取出しし、読取りデータを訂正し、DASDから読取り
データを事前取出しするためのデータ・バッファ(DASD
間で共用される)を有する。
3)制御装置は、SCSI状況を生成する。
3.DASD DASDの主要機能は、次の通りである。
1)DASDは、指定されたシリンダおよびヘッドまでシー
クする。
2)DASDは、制御装置が供給する開始論理ブロック・ア
ドレス(LBA)を探索し、その後、必要に応じて次トラ
ックまでシークしながら、指定ブロック数を読み取りま
たは書き込む。欠陥ブロックが発見された場合、DASD
は、それらを自動的にスキップする。
3)DASDは、各ブロックに付加されるECCバイトを生成
し、検査する。DASD内にECCハードウェアが含まれ、制
御装置が、異なるECCアルゴリズムを有する可能性もあ
る、ある範囲のDASDをサポートできるようになってい
る。
DASDがデータ・エラーを検出した場合、制御装置が、DA
SDに、エラーのパターンと変位を供給するよう要求す
る。その後、制御装置は、そのバッファ内のデータを訂
正し、アダプタへの転送を再開する。
4)DASDは、読取りデータと書込みデータ兼用の記録チ
ャネルを有する。書込みデータは、符号化され直列化さ
れた後にヘッドに供給される。ヘッドからの読取り信号
は、検出され並列化され復号される。
直列リンク 直列リンクは、このサブシステムの2つのノードの間、
すなわち、アダプタと制御装置の間ならびに制御装置と
DASDの間の、二地点間通信を提供する。
データ転送の単位は、パケットである。パケットのフォ
ーマットは、下に示すように、制御フィールド(CONTRO
L)、アドレス・フィールド(ADDRESS)、可変長データ
・フィールド(DATA)およびCRCフィールド(CRC)を含
む。
パケットを直列リンク上で多重化して、異なるDASDに関
する複数のコマンドを同時に実行することができる。
全二重データ伝送では、読取りデータと書込みデータの
同時転送がサポートされる。実際には、各直列リンク
は、2つの反対方向でのデータ転送を提供する2本のリ
ンクをそれぞれ備える。これを第7図に示す。第7図に
よれば、各ノードは、入力データおよびメッセージを受
信するインバウンド・リンクと、データおよびメッセー
ジを送信するアウトバウンド・リンクを有する。
このリンクは、簡単なプロトコルを有する。各ノード
は、そのインバウンド・リンク上の遠隔ノードから受け
取る歩調合せ応答と肯定応答に従って、そのアウトバウ
ンド・リンク上でパケットを送信することができる。
直列リンク上のパケットは、下記の2種類に分類でき
る。
メッセージ・パケットは、ノード内のソフトウェア・プ
ロセスから発し、宛先ノード内のプロセスを宛先とする
(プロセスの説明は、以下の制御装置の動作に関する節
とアダプタの動作に関する節にある)。メッセージ・パ
ケットは、通常は、コマンドと状況に使用される(メッ
セージ・パケット内で送られる異なる種類のメッセージ
については、以下で詳細に説明する)。
データ・パケットは、1つのノード内のDMAチャネルか
ら発し、宛先ノード内のDMAチャネルを宛先とする。デ
ータ・パケットは、通常は、読取りデータまたは書込み
データを含む。
各パケットは、パケットの送信元または宛先あるいはそ
の両方を示すアドレス・フィールドを含む。直列リンク
の動作の詳細については、係属中の英国特許出願第9026
338.5号および第9026336.9号を参照されたい。
メッセージ メッセージとは、宛先ノード内のプロセスを宛先とする
直列リンク上のパケットである。そのパケットの第1デ
ータ・バイト(すなわち、そのパケットのデータ・フィ
ールドの第1バイト)が、メッセージを識別する。後続
バイトは、パラメータである。
ほとんどのメッセージは、パラメータとしてTAG(タ
グ)を有する。これによって、メッセージを、アダプタ
から送られる対応するコマンドに関連付けることができ
る。
アダプタから制御装置へのメッセージ SCSI-COMMAND(SCSIコマンド) これは、SCSIコマンド記述子ブロックを制御装置の待ち
行列に転送するメッセージである。
DASD ADDRESS(DASDアドレス)は、コマンドを実行する
予定の目標記憶装置を識別する。
SCSI EXTは、ANSI仕様‘Small Computer Systems Inter
face/2':X3T9.2/86-109に記載されたSCSIコマンド・セ
ットによって供給される機能を超える拡張または変更を
提供する。メッセージのこの部分をセットすると、DASD
への分割書込み、または制御装置リンクへのアダプタ上
での分割読取りが使用可能になる。
DMA ADDRESS(DMAアドレス)は、SCSIコマンド用のデー
タ域の、システム・メモリ内の開始アドレスである。
COMMAND DESCRIPTOR BLOCK(CDB)(コマンド記述子ブ
ロック)は、SCSIコマンド用のコマンド記述子ブロック
である。CDBは、SCSIコマンド・セットのコマンドのう
ちの1つを含む。
READY-FOR-READ(読取り実行可能) このメッセージは、アダプタによって、DATA-READY(デ
ータ実行可能)メッセージに応答して制御装置に送られ
る。TAGは、特定のREADY-FOR-READメッセージに関連す
るコマンドを識別する。LINK ADDRESS(リンク・アドレ
ス)は、この読取り動作のためにアダプタ内で割り振ら
れたDMAチャネルを識別する。
ABORT(打切り) このメッセージは、ホストから取り出したABORT-SCSI
(SCSI打切り)動作を実行している時に、アダプタが生
成する。TAG1は、ABORT-SCSIコマンド動作を含むメール
ボックスを識別し、TAG2は、打ち切るべきコマンドを識
別する。このメッセージは、制御装置に、コマンドが実
行中である場合にはその実行を終了させ、実行がまだ始
まっていない場合には制御装置の待ち行列からそのコマ
ンドを取り除かせる。
RESET(リセット) このメッセージは、制御装置内またはDASD内の選択され
た資源をリセットするために、アダプタから制御装置に
送られる。
制御装置からアダプタへのメッセージ READY-FOR-WRITE(書込み実行可能) これは、アダプタに、ホストのDMA START ADDRESS(DMA
開始アドレス)からDMA LENGTH(DMA長)だけデータを
転送するよう指令するメッセージである。LINK ADDRESS
は、データ・パケットの宛先である、制御装置内のDMA
チャネルを識別する。TAGは、データに関連するコマン
ドを識別する。
DATA-READY(データ実行可能) これは、アダプタがまだこのTAGにDMAチャネルを割り振
っていない場合にはアダプタにそれを行うよう指令し、
指定されたDMA START ADDRESSから始まって指定されたD
MA LENGTHだけホスト・メモリへの転送を準備するよう
指令するメッセージである。アダプタは、READY-FOR-RE
ADメッセージで応答して、どのDMAチャネルがデータ・
パケットの宛先となるのかを制御装置に知らせる。
STATUS(状況) これは、TAGによって識別されるコマンドが完了した時
に生成されるSCSI状況を伝えるメッセージである。
次に制御装置とアダプタの主な構成要素について述べ
る。
アダプタ ハードウェア アダプタ・ハードウェアの主な構成要素を第2図に示
す。アダプタの核になるのは、マイクロプロセッサ・チ
ップ(MPC)110であり、これは、接続される制御装置と
ホスト・システム間でのメッセージおよびデータの転送
を制御する高性能制御装置を含む。また、2つの同一の
アダプタ・リンク・チップ(ALC)120があり、それぞれ
が、マイクロチャネル、2本の直列リンクおよび16本の
DMAチャネル(図示せず)へのインターフェースを提供
する。各直列リンクは、制御装置へまたはそこから伝送
中のコマンド、データおよび状況用の4個の128バイト
・パケット・バッファを有する。MPCとALCの間のインタ
ーフェースは、入出力バス115である。
アダプタ・リンク・チップ(ALC) ALCの主な構成要素を第3図に示す。
データRAM データRAM121は、下記の区域を含む。
1)8個の128バイト・パケット・バッファ(4個は各
直列リンク用、2個はアウトバウンド用、2個はインバ
ウンド用) 2)16個の8バイトDMAレジスタ:各DMAチャネル毎に1
個のDMAレジスタが設けられる。これらのレジスタは、D
MAデータ転送の際に使用する。
3)アウトバウンド直列リンク・メッセージ用の32バイ
ト・メッセージ・バッファ:このバッファは、高性能マ
イクロプロセッサが、制御装置宛のREADY-FOR-READメッ
セージを作成するのに使用する。適当なハードウェアを
設定することによって、その後、このバッファを制御装
置に送ることができる。
4)ホスト・インターフェース・レジスタ:メールボッ
クスをアダプタに渡す処理には、3つの内部レジスタが
関係する。メールボックスおよびアダプタの動作の詳細
は、後述する。
メールボックス・ポインタ・レジスタ:システムが読み
書きすることのできる4バイト・レジスタ。これは、連
鎖内の最初のメールボックスを指すように、システムに
よって初期設定される。現タグ・レジスタが最終タグ・
レジスタに等しい時、または、アダプタをリセットした
直後には、システムは、このレジスタを読み取ることだ
けを許される。
現タグ・レジスタ:これは、システムが読み書きするこ
とのできる1バイト・レジスタである。これを用いる
と、システムがアダプタの進行状況を見られるようにな
る。このレジスタは、アダプタのリセットによってクリ
アされ、ホストが最終タグ・レジスタを書き込んだ直後
にもクリアされる。アダプタは、メールボックスの処理
を完了した後に、各メールボックスのタグ用を現タグ・
レジスタに記憶する。
最終タグ・レジスタ:システムが読み書きすることので
きる1バイト・レジスタ。このレジスタは、システムが
幾つかのメールボックスを待ち行列に追加する時に、シ
ステムによって書き込まれる。このレジスタは、最後の
メールボックスに含まれるタグを示す。これによって、
アダプタはリストの末尾に達した時を知る。このレジス
タに書込みが行われる時は、アダプタに対する割込みが
発生する。
5)ホストからすべてのメールボックスを取り出すため
の32バイトのDMAパケット・バッファ:制御装置向けのS
CSI-COMMAND、ABORTおよびRESETメッセージは、DMAバッ
ファから直接に送られる(READY-FOR-READメッセージ
は、メッセージ・バッファ内で作成され、アウトバウン
ド・リンクを介して制御装置に送られる)。DMAバッフ
ァは、DMA制御下でホスト・メモリを読み書きするのに
使用できる。
データRAMは、直列リンク、マイクロプロセッサまたは
リンク間転送、および高性能マイクロプロセッサの間で
時間多重化される。
状況RAM 各パケット・バッファは、それぞれパケット状況レジス
タ(PSR)を必要とする。これらのレジスタは、状況RAM
122内に保持され、16ビット幅である。パケット・バッ
ファおよび関連するパケット状況レジスタを、第7図に
示す。各レジスタは、下記の2つのフィールドを含む。
DESTINATION(宛先)−アウトバウンド・データ・パケ
ットの場合、このフィールドは、対応するパケット・バ
ッファの内容がそのリンクによって伝送される時に出力
パケットのアドレス・フィールドに複写される値を含
む。この値は、送信に備えてパケットをパケット・バッ
ファから取り出す時に、ハードウェアによって自動的に
ロードすることができる。インバウンド・パケットの場
合、このフィールドは、入力パケットのアドレス・フィ
ールドから抽出されたアドレスを含む。この値は、イン
バウンド・リンクのFSM(有限状態機械)によってPSRに
書き込まれ、その値は、このパケットの後続の経路指定
を決定するのに使用される。
BYTE COUNT(バイト・カウント)−アウトバウンド・パ
ケットの場合、このフィールドは、対応するパケット・
バッファ内に置かれているバイト数を示す値を含む。リ
ンクがパケットを送出する時、この値を、データ・バイ
トを1バイト送るごとに減分されるバイト・カウンタ
(リンク・ハードウェアの一部)に複写しなければなら
ない。PSR内の値は、伝送中のエラーが原因でそのパケ
ットを再送信しなければならない場合に備えて保存され
る。インバウンド・パケットの場合、このフィールド
は、入力パケット内で受け取ったデータ・バイトの数を
示す値を含む。
マイクロチャネル・インターフェース マイクロチャネルは、ホスト・メモリとインターフェー
スし、上記に定義したデータRAMホスト・インターフェ
ース・レジスタを使用する。
DMAチャネル 各ALCには、0〜15の番号を付した16本のDMAチャネル
(図示せず)がある。これらのチャネルは、ホスト・メ
モリとDMAパケット・バッファの間でのデータのDMA転送
に使用される。
制御装置 ハードウェア 第4図に、制御装置の主な機能構成要素を示す。制御装
置の核になるのは、MPCチップ210であり、これは高性能
制御装置(HPC)と、データ・バッファ220との間でのデ
ータの転送を制御するDMA制御装置とを含む。
DMAバス225は、DMA制御装置を2つの制御装置リンク・
チップ230に接続する。
データ・バッファ220:アダプタとDASDの間のすべてのデ
ータは、このデータ・バッファを通過する。また、この
バッファは、システムから要求される場合に備えて、先
読みデータを記憶するのにも使用される(以下の「先読
み」に関する節を参照されたい)。リンク・パケット・
バッファとデータ・バッファの間でデータを転送するた
め、16本のDMAチャネル(0〜15の番号を付す)が設け
られている。装置(DA)リンク毎に2本のチャネルがあ
り、SA(直列アダプタ)リンク毎に4本のチャネルがあ
る。
データ・バッファは、DRAMモジュールのアレイからな
る。このバッファ内のデータは、データ保全性を確保す
るため、ECCと共に記憶される。データ・バッファは、D
ASD毎に7個の32Kバイト・セグメントで割り振られる。
1台のDASD上で複数のタスクが実行される場合は、タス
ク毎に異なるセグメントが割り振られる。
高性能制御装置は、制御装置リンク・チップ内で実施さ
れる一連の外部レジスタを介して、制御装置へのインタ
ーフェースを制御する。入出力バス226は、マイクロプ
ロセッサが、これらのレジスタにアクセスするのに使用
する。
スタティックRAM240は、プログラムの実行に使用され
る。
EPROM250は、高性能制御装置の動作の際に使用されるマ
イクロコードを記憶する。マイクロコードの構造と動作
については、以下で詳細に説明する。
制御装置リンク・チップ(CLC) CLC内に含まれる主な機能区域を、第5図に示す。これ
らは、以下の通りである。
1)2つのDASD直列インターフェース(DA0およびDA1) 2)1つのアダプタ直列インターフェース(SA) 3)リンク・パケット・バッファ240および関連するパ
ケット状況レジスタ242 パケット・バッファは、入力データと出力データを保持
するのに使用される。連続的リンク転送を行うため、A/
Bバッファ実施態様を使用する。これによって、リンク
がバッファAを使用している間にDMA論理回路がバッフ
ァBを満たす(または空にする)ことができ、その逆も
行えるようになる。このリンクが全二重であるというこ
とは、インバウンド・リンクとアウトバウンド・リンク
の両方が、それぞれのパケット・バッファの組を必要と
することを意味する。制御装置リンク・チップは、3つ
の直列インターフェースを含むので、これは、直列リン
クのサービスに、全体で12個のパケット・バッファが必
要であることを意味する。マイクロコードがその中で出
力メッセージを作成することのできる、追加のパケット
・バッファも実施される(リンク毎に1個)。これを用
いると、高性能マイクロプロセッサが、A/Bパケット・
バッファの一方をDMA転送のサービスから引き上げず
に、したがって、進行中のデータ転送に悪影響を及ぼさ
ずに、メッセージを作成できるようになる。
CLC内の3つのリンクはそれぞれ、アウトバウンド、イ
ンバウンドまたはメッセージとして分類される5個のパ
ケット・バッファを備える。
アウトバウンド:各リンクは、DMAハードウェアのサー
ビスを受ける2個のA/Bアウトバウンド・パケット・バ
ッファを備える。これらのバッファは、データ・バッフ
ァから得られ、DASD(DAリンク)またはアダプタ(SAリ
ンク)に送られるデータで満たされる。
インバウンド:各リンクはまた、2個のA/Bインバウン
ド・パケット・バッファを備える。(アダプタまたはDA
SDからの)入力パケットが、これらのバッファに記憶さ
れ、入力パケットのアドレス・フィールドの内容に応じ
て、DMAハードウェアまたはスピニカのサービスを受け
る。
メッセージ:各リンク・インターフェースはまた、メッ
セージ・パケット・バッファを備える。これは、マイク
ロプロセッサが、アダプタまたはDASDに送るアウトバウ
ンド・メッセージを作成するのに使用する。
4)DMAインターフェース論理回路:これは、DMA制御装
置の監視下で、パケット・バッファから制御装置データ
・バッファにデータを転送する回路である。
DMA動作 データは、アダプタと制御装置バッファの間、および装
置と制御装置バッファの間で、DMAによって転送され
る。制御装置のマイクロプロセッサは、制御装置リンク
・チップと共用データ・バッファの間の転送を調整する
DMA制御装置を含む。
制御装置リンク・チップには、CLC内のパケット・バッ
ファと制御装置データ・バッファの間でデータを転送す
るためのDMAインターフェースが組み込まれている。DMA
インターフェースは、マイクロプロセッサ・チップ内に
含まれるDMA制御装置によって監視される。マイクロプ
ロセッサ・チップは、DMA要求間のアービトレーション
を行う論理回路を含む。
DMA転送の前にアービトレーション段階があり、この間
にCLCチップは、サービスを必要とするDMAチャネルに対
する要求を示す信号を発生することができる。DMA制御
装置は、これらの要求のうちの1つに許可を発行し、そ
の後にCLCは転送を開始できる。各制御装置リンク・チ
ップは、8本のDMAチャネルを使用して、データ転送を
サービスすることができる。これらDMAチャネルは、下
記のように割り当てられる。
チャネル0、1:DAリンク第0番(第5図のDA0) チャネル2、3:DAリンク第1番(第5図のDA1) チャネル4ないし7:アダプタ・リンク(第5図のSA) (第2のCLCは、上記と同じ順序でチャネル8〜15を使
用する。) この配置を用いると、最高2本のDMAチャネルが各DASD
にサービスできるようになり、アダプタ・リンクは、最
高4本のDMAチャネルのサービスを受けられるようにな
る。これらのチャネルを同時に使用して、直列リンクの
パケット多重化機能を活用することができる。装置リン
クは、アダプタ・リンクより高い優先順位を与えられ
る。DMAバスを用いると、最高40MB/sのデータ転送速度
が可能になる。パケット・バッファからデータ・バッフ
ァへの32バイト(DA)転送には、約1.2マイクロ秒を要
する。128バイト(SA)転送には、3.6マイクロ秒を要す
る。
アービトレーション中に、各CLCが、下記のようにDMAバ
ス上に要求を出す。
記憶(バッファへの書込み):インバウンド・リンク・
パケットのアドレス・フィールドが、そのデータがDMA
チャネル宛であることを示す場合、そのパケットの受信
時にDMA要求が出される。
取出し(バッファからの読取り):あるDMAチャネルに
関連するリンク・パケット・バッファの一方または両方
が空である場合、そのDMAチャネルに対するDMA要求が出
される。
DMA記憶動作:DMA記憶動作は、インバウンド・パケット
・バッファを空にするのに使用される。
DMA取出し動作:DMA取出し動作は、アウトバウンド・パ
ケット・バッファを満たすのに使用される。それぞれの
転送は、通常は1個のパケット・バッファ全体に対する
ものである。
コマンド記述子待ち行列 CDB(さらにABORTおよびRESETを含む)は、初めてそれ
を受け取った時、SA RECEIVE MESSAGE(SA受信メッセー
ジ)プロセスの制御下で、コマンド記述子待ち行列項目
(CDQE)に記憶される。
空き待ち行列:最初は、すべてのCDQEが空きである。空
き待ち行列は、1つの要求が次の要素を指しており、こ
れによってすべての空きCDQEを発見できるようになって
いるという点でのみ待ち行列である。項目の順序には意
味がない。
新規コマンド待ち行列:新規のコマンドが到着する時、
SAタスクが、そのコマンドを空き待ち行列の先頭にある
CDQEに複写する。このCDQEは、空き待ち行列から削除さ
れ、新規コマンド待ち行列に追加される。打切りメッセ
ージも、CDQEに入れられ、新規コマンド待ち行列に追加
される。
装置コマンド待ち行列:装置毎に1つずつ合計4つの装
置コマンド待ち行列がある。各待ち行列は、それ自体の
COMMAND(コマンド)プロセスによってサービスを受け
る。QUEUE MANAGER(待ち行列マネジャ)プロセスは、
新規コマンド待ち行列のCDQE内で新規コマンドを発見し
た時、それの宛先となっている装置を見つけ、対応する
装置コマンド待ち行列にこのCDQEを転送する。
メッセージ待ち行列:コマンドの処理が完了した時、そ
のCDQEに、関連するCOMMANDプロセスによってSCSI状況
メッセージがロードされ、そのCDQEは、装置コマンド待
ち行列から移される。メッセージ待ち行列は、したがっ
て、SA TRANSMIT MESSAGE(SA送信メッセージ)プロセ
スに対する要求の待ち行列である。
同一の待ち行列が、異なるアダプタ・リンクを介して受
信されるコマンドに使用される。
待ち行列連係:空き待ち行列、新規コマンド待ち行列お
よびメッセージ待ち行列の先頭ポインタおよび末尾ポイ
ンタは、メッセージ制御ブロック(MCB)内のフィール
ドである。装置コマンド待ち行列の先頭ポインタおよび
末尾ポインタは、対応する装置制御ブロック(DCB)内
にある。先頭ポインタは、待ち行列の第1要素のアドレ
スを保持する。末尾ポインタは、最終要素のアドレスを
保持する。
各CDQEは、「次」ポインタを含む。CDQEは、複数の待ち
行列のどれに含まれてもよいが、1つのCDQEが同時に複
数の待ち行列に含まれてはならない。
次にアダプタおよび制御装置の動作について述べる。
アダプタ 動作 高速マイクロプロセッサ内で定義されたタスクが、アダ
プタの動作を制御する。タスクは、割込みによって開始
されるが、これは、バードウェア事象からのものでも、
別のタスクからのソフトウェア割込みを介するものでも
よい。ソフトウェア割込みとは、あるタスクが別のタス
クに対して割込みをセットすることのできる手段であ
る。異なるタスク間の通信を第6図に示す。
タスク 状況:状況タスクは、ホスト・システムに提示すべき状
況を管理する責任を負う。状況は、他のタスクのうちの
1つからこのタスクに渡され、またこれをハードウェア
に書き込むことによって直接に提示されることもある。
リンク:制御装置への4本の直列リンクを処理するため
に、1つのリンク・タスクがある。このタスクは、制御
装置から受け取ったすべてのメッセージを解釈し、適当
な処置を取る責任を負う。
メールボックス:このタスクは、ホスト・システムから
のメールボックス・インターフェースを管理する。この
タスクは、システムから各メールボックスを受け取る責
任を負う。そのメールボックスがSEND-SCSI(SCSI送
出)コマンドである場合、そのコマンドをリンク・タス
クに渡して、適当な制御装置に送る。
(他にも定義されているタスクがあるが、この説明に直
接には関係ないので説明しない) ホスト・プロセッサから指令を受けた時、アダプタは、
ホスト・メモリからコマンドを取り出し、実行のためこ
れらを即座に適当な制御装置に転送する。コマンドを取
り出すための機構は、ホスト・システムのアーキテクチ
ャに依存し、それに応じて変わる。本明細書では、下記
の機構をマイクロチャネル上で使用する。
ホスト・システムは、ホスト・メモリ内で作成されるメ
ールボックスを使ってサブシステムの動作を開始させ
る。各メールボックスは、特定のコマンドを識別する一
意的タグを含んでいる。たとえば、ホストがある動作を
サブシステム内で開始しようと望む時、ホストは、次に
使用可能なメールボックス内でその動作を作成し、最終
タグ・レジスタに書き込む。最終タグ・レジスタに書き
込むと、アダプタ・マイクロプロセッサ内のメールボッ
クス・タスクに割込みがかかる。メールボックス・タス
クは、ホスト・メモリからアダプタ・リンク・チップの
うちの指定された1つ(マスタ・チップ)の32バイトDM
AバッファにメールボックスをDMA転送するよう、アダプ
タ・ハードウェアに指令する。ホストからのすべてのメ
ッセージが、このマスタ・チップ向けとなる。
いったんDMAバッファに入ると、メールボックス・タス
クがそのメールボックスを復号して、そのメールボック
スの内容によって定義される動作の種類を決定し、それ
がSEND-SCSIコマンドであると判った場合は、そのメー
ルボックスが、適当な制御装置に送るためにSCSI-COMMA
NDメッセージに変換される。SCSI-COMMANDメッセージ
は、メッセージ・パケットのデータ・フィールド中で、
32バイトのDMAバッファからリンク上に送られる。この
パケットのアドレス・フィールドは、宛先のアドレスを
含む。この場合は、宛先は制御装置マイクロプロセッサ
である。コマンドが、マスタ・チップのサービスを受け
ていない制御装置を宛先とするものである場合は、その
コマンドは、他のALC内のDMAバッファに複写され、直列
リンク上に送られる。
ホストは、多くの異なる動作ならびにSEND-SCSIコマン
ドを定義しているが、それらの多くはアダプタによって
実行され、制御装置に送る必要がない。ただし、2つの
動作すなわちABORT-SCSI COMMANDとRESETは、ABORTメッ
セージおよびRESETメッセージの形で適当な制御装置に
渡される。これらのメッセージのフォーマットの詳細
は、前述のアダプタ/制御装置メッセージのリストにあ
る。
ABORT-SCSI COMMANDとRESETの動作は、アダプタによっ
て、SEND-SCSI COMMANDと基本的に同じように処理され
る。メールボックス・タスクは、メールボックスを復号
し、ABORTメッセージまたはRESETメッセージをDMAバッ
ファから適当な制御装置に送る。この場合も、どの制御
装置を宛先とするかに応じて、そのメッセージを第2の
ALCのDMAバッファに複写する必要が生じることもある。
アダプタは、コマンドを発行する毎にタイマを起動す
る。これは、ホスト・システムに多数のタイマという負
担を負わせずに、コマンドの脱落や制御装置の中断を検
出するのに役立つ。アダプタ遊休タスクが、周期的にタ
イマを更新し、動作が時間切れになっていないか検査す
る。
制御装置 動作 制御装置の動作は、スピニカ・マイクロプロセッサに含
まれるマイクロコード内で定義されたタスクを使って行
われる。このプロセッサ内では、8つのタスクが定義さ
れている。それには、下記のものがある。
それぞれの装置とのインターフェースを管理する4つの
装置(DA)タスク。
アダプタおよびホストとのインターフェースを管理する
1つのSAタスク。
全体制御に関するタスクであるコマンド制御タスク。新
規のSCSIコマンドは、SAタスクからこのタスクに渡され
る。このタスクは、これらのコマンドを待ち行列に入
れ、復号し、命令をSAタスクと適当な装置タスクに送
る。SAタスクとDAタスクは、データ転送を実行する。
制御装置は上記のタスクを使用するが、SAタスクとコマ
ンド制御タスクは、サブタスクの概念を介して拡張され
る。制御装置は、独立のタスクまたは1タスク内のサブ
タスクとして実施される多数のプロセスを有する。サブ
タスクは、サブタスク・スケジューラの制御下で実行さ
れる。
第6図は、異なるプロセス間の通信を示すブロック図で
ある。
制御ブロックは、この通信の際に、次のように使用され
る。あるプロセスが、制御ブロックに情報を入れ、別の
プロセスに通知する。後者のプロセスは、その制御ブロ
ック内の情報にアクセスする。制御ブロックは、プロセ
ス間でパスされる。
制御装置のプロセス SA RECEIVE MESSAGE(SA受信メッセージ)(SARXMSG) このプロセスは、アダプタから制御装置に送られるすべ
てのメッセージ、すなわち、SCSI-COMMAND、ABORT、RES
ETおよびREADY-FOR-READを処理する(これらのメッセー
ジのフォーマットは、本明細書の他所にある)。アダプ
タからのメッセージ・パケットは、CLCのインバウンド
・パケット・バッファで受信される。入力パケットのア
ドレス・フィールドの内容によって、そのパケットがメ
ッセージとして識別され、高性能制御装置のサービスを
受ける。そのメッセージが、新規のCOMMAND、ABORTまた
はRESETである場合には、SA RECEIVE MESSAGEプロセス
が、それをコマンド記述子待ち行列項目(DCQE)の空き
待ち行列の先頭に複写する。このCDQEは、その後QUEUE
MANAGERプロセスに待ち行列登録される。そのメッセー
ジがREADY-FOR-READである場合には、そのメッセージ
は、適当なSA XFER(SA転送)プロセス(すなわち、読
み取るべきデータを含む装置に関連するプロセス)に渡
される。
QUEUE MANAGER(待ち行列マネジャ) このプロセスは、コマンド制御タスクのサブタスクであ
り、SA RECEIVE MESSAGEプロセスからの割込みを処理す
る。通常は、メッセージはSCSI-COMMANDメッセージであ
るが、ABORTまたはRESETのこともある。SA RECEIVE MES
SAGEプロセスは、そのメッセージをCDQEに複写し、その
CDQEを空き待ち行列から「新規コマンド待ち行列」に移
した後に、このプロセスに通知しており、次いでこのプ
ロセスは、「新規コマンド」待ち行列から装置固有の待
ち行列にコマンドを移し、適当なコマンド・プロセスに
通知する。QUEUE MANAGERプロセスは、どのCOMMANDプロ
セスに通知すべきか決定するために、メッセージの制限
付きの処理を幾つか実行する。
COMMAND(コマンド) コマンド・プロセス(コマンド制御タスクの4つのサブ
タスクのうちの1つ)は、装置コマンド待ち行列上のSC
SIコマンドを処理する。コマンド・プロセスには、並列
に走行する4つ(サポートされる4台の装置のそれぞれ
に1つずつ)のインスタンスがある。通常は、各プロセ
スがそのプロセスの装置に宛てられたコマンドを処理す
る。
各コマンド・プロセスが、1つのコマンドをその待ち行
列から取り上げ、 それがこの時点での実行するのに有効であることを確認
し、 個々のコマンドを処理するルーチンを呼び出し、そのル
ーチンが、 このコマンドの妥当性検査を行い、 SA XFER(SA)プロセスとDEVICE(DA)プロセスに指令
し、 SAとDAが完了するまで中断し、 SCSI状況を返し 通常は、SA TRANSMIT MESSAGEプロセスに通知して、SCS
I状況をアダプタに送る。
装置待ち行列が空になるまでその待ち行列内のコマンド
毎にこの手順を繰り返し、その後、この手順は、中断状
態になり、QUEUE MANAGERプロセスが新規コマンドを待
ち行列に追加した時に再開される。
DEVICE(装置) 装置毎に1つのプロセスがある(別々のタスクとして実
施される)。DAプロセスは、COMMANDプロセスからの下
記の要求を処理する。
1)読取り 適当なルーチンを呼び出して、COMMANDプロセスが要求
した読取りコマンドを処理する。このルーチンは、適当
のDASDにSEEK(シーク)副指令を発行し、DMAの初期設
定すなわちDMAチャネルの割振りを行い、使用可能なバ
ッファ・サイズを計算し、使用可能な空間が存在する場
合は、READ副指令を用意し、これをDASDに対して発行
し、そのDASDが、DASDから制御装置内のデータ・バッフ
ァへのデータ転送を開始する。DMAアドレスが、READ副
指令内でDASDに渡され、これを入力データ・パケットの
アドレス・フィールド内で使用して、データの宛先を識
別する。
2)書込み この時、下記の要求ならびにIDフォーマットなどの他の
専用コマンドがまだ発行されていない場合に、SEEK副指
令を発行する。
3)現動作延長 4)事象停止 COMMANDプロセスは、下記の3つの事象のうちの1つを
通知することによって、DEVICEプロセスと通信する。
NEWREQ 新規の要求が開始されたことを装置プロセスに
知らせる。
EXTREQ この事象は、要求を延長するのに使用する。
STOP 装置プロセスに、現在進行中のすべての作業を停
止するよう指示する。
COMMANDプロセスからの要求を受け取った時、DEVICEプ
ロセスは、適当なDASD副指令を直列リンク上に送ること
によって、DASDに対する適当な処置を開始する。
DASD副指令は、制御装置によって生成される低水準の読
み書き副指令である。制御装置がデータを読み書きでき
るようにするために下記の副指令が設けられている。以
下で定義する副指令はそれぞれ、パケットのデータ・フ
ィールド内で直列リンクを介してDASDに送られる。すべ
ての「副指令」パケットは、実行のため、またはDASD内
の他の構成要素への分配のため、DASD内のマイクロプロ
セッサを宛先とする。
STOP-AND-SEEK(停止およびシーク)副指令 これは、DASDに、先読み(アクティブの場合)を中止
し、指定されたシリンダおよぶヘッドにシークするよう
指令する副指令である。また、書込みコマンドの場合、
単独のシーク副指令を用いると、制御装置は、コマンド
を復号した直後に、アダプタから書込みデータを受け取
るのを待たずに、シークを開始できるようになる。DASD
が読取り副指令または延長読取り副指令を完了する前に
(状況パケットが返されていない)、STOP(停止)副指
令が発行される場合、DASDは、即座にその読取り動作を
打ち切り、STOP-AND-SEEK副指令で指定されたシリンダ
およびヘッドへのシークを開始し、打ち切られたREAD
(読取り)副指令の状況パケットを返す。STOP副指令の
場合は状況パケットを送らない。
また、この副指令は、アダプタからABORT-SCSIコマンド
・メッセージを受け取った時にDASDに送られる。この場
合、シーク動作は開始されない。
READ(読取り)副指令 これは、DASDに、特定の論理ブロック・アドレス(LB
A)を探索し、指定された数のブロックを読み取るよう
指令する副指令である。パラメータは以下の通りであ
る。
シークの検査用の物理シリンダ(CYLINDER)と物理ヘッ
ド(HEAD)、論理ブロック・アドレス(LBA)、および
読み取るべきブロックの数のカウント(COUNT)。さら
に、アドレス・フィールド(ADDRESS)は、この副指令
の結果として返されるすべてのデータ・パケットのアド
レス・フィールドに置かれるバイトを含む。
DASDは、要求されたデータを制御装置に送り、各ブロッ
クの末尾にあるECCバイトを検査する。DASDが、欠陥あ
りとマークされたブロックに遭遇した場合は、それらの
ブロックを自動的にスキップする。最後に、DASDは、エ
ラーが検出されたか否かを示す状況を返す。
CONDITIONAL-READ(条件付き読取り)副指令 この副指令は、READ副指令と同じフォーマットを有し、
選択されたシリンダおよびヘッド・アドレスへのシーク
動作を呼び出す。この副指令に含まれるLBAに対応する
セクタの位置が指定され、カウント・フィールドで指定
された数のレコードが、ディスクから読み取られる。ア
ドレス・フィールドは、この副指令の結果として返され
るすべてのデータ・パケットのアドレス・フィールドに
置かれるバイトを含む。CONDITIONAL-READ副指令が制御
装置によって発行されるのは、ホストが要求する読取り
データの量が、選択された量より多い時だけであること
に留意されたい。要求されたデータの量が少ない場合に
は、CONDITIONAL-READの使用は保証されない。
この副指令を用いると、以下で詳細に説明する分割読取
り動作が可能になる。
WRITE(書込み)副指令 これは、DASDに、特定のLBAを探索し、指定された数の
ブロックを書き込むよう指令する副指令である。パラメ
ータは、READ副指令(上記参照)と同じであるが、書き
込むべきデータを制御装置が供給する点が異なる。さら
に、アドレス・フィールドは存在しない。
CONDITIONAL-WRITE(条件付き書込み)副指令 条件付き書込み副指令は、WRITE副指令と同じフォーマ
ットを有する。
EXTEND(延長)副指令 これは、前のREAD副指令、CONDITIONAL-READ副指令、WR
ITE副指令またはCONDITIONAL-WRITE副指令の動作を延長
する副指令である。「カウント」(COUNT)は、現副指
令が完了した後に読み取るまたは書き込む必要のある個
々のセクタの数を指定するパラメータである。
LBAは、最初に読み取るまたは書き込むべきブロックの
アドレスを定義するフィールドである。この値は、連続
的な読取りまたは書込みが必要な場合、前の副指令によ
って読み取られた、または書き込まれた最後のブロック
のLBAよりも1つ大きい値になる。LBAフィールドが、前
の副指令の最後のLBAの後の最初のブロックではない場
合は、これらのLBAの間にあるブロックはスキップさ
れ、読取りも書込みも行われない。
EXTEND副指令が有効になるためには、DASDは、前の副指
令が完了する前にEXTEND副指令を受け取らなければなら
ない。制御装置は、EXTENDを使って連続的書込みを実行
し、または先読みを継続する。これらの動作は、以下で
詳細に説明する。
動作全体が完了した時、コマンド・プロセスに適当な事
象が通知される。
SA XFER(SA転送) これは、ホストと制御装置内の読取りバッファの間また
はホストと制御装置内の書込みバッファの間でデータを
転送する、装置ごとのプロセスである。COMMANDプロセ
スは、SA XFERプロセスに対して下記のコマンドを発行
できる。
Send Read Data(読取りデータ送出) Get Write Data(書込みデータ取得) Stop Current Transfer(現転送停止) データ転送の実行に必要なパラメータは、制御ブロック
内でCOMMANDプロセスからSA XFERプロセスに渡される。
SA TRANSMIT(SA送信)(SATXMSG) これは、他のプロセスに代わってメッセージ(READY-FO
R-WRITE、DATA-READYおよびSTATUS)をアダプタに送る
プロセスである。READY-FOR-WRITEとDATA-READYは、SA
XFERプロセスからこのプロセスに渡され、STATUSメッセ
ージは、COMMANDプロセスから渡される。
読取り動作と書込み動作の例 次に、ホストからのコマンドの受取りに始まり、ホスト
への完了状況の提示までの典型的な読取り動作と書込み
動作の例を記す。
読取り 1.アダプタが、CDB内にREAD動作を含むSCSI-COMMANDメ
ッセージを制御装置に送る。このメッセージは、読取り
データの送信元であるDASDのアドレスと、そのデータを
送り先になるホスト・メモリ内のアドレスを含む。
2.制御装置が、上述の通りにコマンドを処理し、装置タ
スクに制御を渡す。この装置タスクは、DASDにSTOP-AND
-SEEK副指令を送る。これによって、現在活動状態の先
読み動作があれば打切られる。(現在活動状態の先読み
動作がない場合は、この副指令は送られない)。
3.DASDが、先読み動作打切り状況を示すSTATUSを制御装
置に返し、その後、指定されたヘッドおよびシリンダへ
のシークを開始する。
4.制御装置の装置タスクが、転送すべき読取りデータの
ために32Kセグメントのデータ・バッファを割り振る。
また、この装置タスクは、制御装置データ・バッファへ
のデータ転送に使用するDMAチャネルを割り振る。
5.この例では、次に、装置タスクが、割り振られたDMA
チャネルのアドレス、データ開始アドレスおよび転送す
べきブロック数を含むCONDITIONAL-READ副指令を、DASD
に送る。前述したように、要求されたデータ量が少ない
場合には、CONDITIONAL-READ副指令ではなくて「通常
の」READ副指令が送られる。
6.DASDは、CONDITIONAL-READ副指令を受け取ると、LBA
を探索し、データの転送を開始する。データ・パケット
のアドレス・フィールドは、DMAチャネルのアドレスを
含む。
7.読取りデータが、直列リンクを介して制御装置に転送
され、制御装置データ・バッファ内の割り振られた空間
に入れられる。
8.制御装置がアダプタにDATA-READYメッセージを送り、
その結果、ホストが、制御装置とホスト・メモリの間で
読取りデータを転送するために使用するホストDMAチャ
ネルを初期設定する。上記の流れ図では、最初のデータ
をバッファ内で受け取った後にDATA-READYメッセージが
送られるようになっているが、このメッセージは、バッ
ファ内でデータを受け取る前に送られるのが普通であ
る。このメッセージの目的は、ホストDMAを初期設定す
ること、すなわち、ホストにデータを受け取る準備をさ
せることである。
9.アダプタが、DATA-READYメッセージに応答して、制御
装置にREADY-FOR-READメッセージを送る。ホスト内でRE
ADY-FOR-READメッセージは、初期設定されたDMAチャネ
ルを識別するもので、制御装置のSA RECEIVEメッセージ
・プロセスによって受け取られ、SA XFERプロセスに渡
される。このSA XFERプロセスは、SA DMAを初期設定す
る、すなわちデータ・バッファからのデータ転送に使用
するDMAチャネルを割り振る。
10.データは、DASDからデータ・バッファ内で受け取ら
れた時、直列リンクを介してホスト・メモリに転送され
る。最後のデータが送られた時、制御装置は、SCSI-STA
TUSをアダプタに返す。アダプタは、この状況を待ち行
列に入れ、これをホストに提示する。
書込み 1.アダプタが、書込み動作を定義するSCSI-COMMANDメッ
セージを制御装置に送る。
2.制御装置が、コマンドを処理し(前述した通りに)、
制御が、COMMANDプロセスからDEVICEプロセスに渡され
る。この例では、DEVICEプロセスは、DASDにSTOP-AND-S
EEK副指令を送る(先読み動作が現在活動状態であ
る)。
3.DASDが、先読みを停止し、先読み動作打切り状況を示
す状況を制御装置に送る。DASDが、STOP-AND-SEEK副指
令で指定されたシリンダおよびヘッドへのシークを開始
する。
4.制御装置のSA XFERプロセスが、データ・バッファ内
の空間を割り振り、ホストからの書込みデータのパケッ
トの宛先となるSA DMAチャネルを初期設定する。
5.SA XFERプロセスが、SA TRANSMITプロセスに通知し、
このSA TRANSMITプロセスが、アダプタにREADY-FOR-WRI
TEメッセージを送る。このメッセージは、前のステップ
で初期設定されたDMAチャネルを識別するメッセージで
ある。
6.アダプタのリンク・タスクが、ホスト・メモリへのデ
ータ転送に使用するDMAチャネルを割り振り、その後、
書込みデータのパケットの、制御装置への転送を開始す
る。
7.制御装置の装置タスクが、データ・バッファとDASD間
でのデータの転送に使用するDMAチャネルを初期設定
し、この例では、DASDが期待すべきLBAと書込みデータ
の量を識別するCONDITIONAL-WRITE副指令をDASDに送
る。DASDは、LBA探索を開始する。
8.書込みデータは、DMAチャネルを介してバッファで受
け取られると、バッファから第2のDMAチャネル上を直
列リンクを介してDASDに転送される。
先読み 先読みとは、全体で1つの長い逐次読取りを構成する1
組のREADコマンドの性能を向上させるために、制御装置
が提供する機能である。これは、下記のように次の読取
りを予測してDASDから制御装置のバッファへの読取りを
継続することによって達成される。
SCSIのREADコマンドを受け取ると、制御装置は、この読
取りに割り振られている制御装置の32Kセグメントのデ
ータ・バッファに必要なセクタ数を転送するようDASDに
指示する。この実施態様では、制御装置は通常、ホスト
からのコマンドが要求する量がそれより少ない時でも、
32Kのデータ(すなわち、割り振られたバッファ空間を
満たす量のデータ)を要求する。ホストが要求するデー
タは、DASDから到着した時、ホストに転送される。要求
されたデータをホストまで転送し終えた時、制御装置に
よって状況が生成される。その間に、先読みデータの転
送が継続する。
DASDに対するREAD副指令で、ホストから要求された量よ
り多くのデータが指定されていた場合には、余分のデー
タは、制御装置バッファに記憶される。ホストがバッフ
ァ空間を使用可能にする時、制御装置によってDASDに送
られるEXTEND副指令によって、データ転送が延長され
る。EXTEND副指令を受け取ると、DASDは、そのEXTEND副
指令で指定されたセクタをバッファの新しい末尾に転送
する。
1例として、アダプタから送られたREADコマンドが、4K
のデータ(8セクタ)を要求し、制御装置が、装置に32
Kを要求する場合には、要求された4Kのデータがホスト
に転送されると同時に、バッファ内に4Kの空間が生じ
る。制御装置は、バッファを満たすため、4Kの新規デー
タを要求するEXTEND副指令を装置に送る。
アダプタから次のREADコマンドを受け取った時、制御装
置は、バッファを検査して、要求されたデータが既に存
在する(または、すぐに存在するようになる)か否かを
調べる。そうである場合には、制御装置は、そのデータ
をホストに転送する。そうでない場合には、制御装置
は、DASDに新規の読取りを指示し、活動状態の先読みが
あれば打ち切る。DASDが新規転送を再度指令されるか、
または先読みバッファが満たされるまで、先読みは継続
する。
連続的書込み 連続的(バック・ツー・バック)書込みとは、連続する
ブロックを書き込む連続した書込みコマンドである。後
続書込みの最初のブロックが、前の書込みの最後のブロ
ックの直後に続く。制御装置およびDASD内で連続的書込
みに対する特別なサポートを行うと、そうでない場合に
はコマンドの間にDASDが回転する必要があるのに対し
て、DASDは回転せずに書込みを行えるようになる。
WRITEコマンドのコマンド固有ルーチンが、現在活動状
態の装置転送を、次の連続する書込みを含むように延長
することができる点に達すると、このルーチンは、その
肩を調べて、次のCDQEがこのような書込みを含むか否か
を検査する。含む場合は、このルーチンは、装置タスク
に延長要求を発行し、その装置タスクは、DASDにEXTEND
副指令を送る。DASDが、前の書込みを完了する前にEXTE
ND副指令を受け取っと場合は、そのDASDは、ただ単に、
現書込みのカウントを、EXTEND副指令のカウント・パラ
メータで指定された量だけ延長する。
EXTEND副指令がDASDに達するのが遅すぎた場合には、DA
SDは、最初の書込みを通常の形で行った後に状況を提示
し、「失敗」状況を示してそのEXTEND副指令を拒絶す
る。その場合、制御装置は通常の書込みを生成する。EX
TEND副指令は、それ自体が延長の候補である。
例 ホストが、セクタ0〜7に対するSCSI書込みコマンドを
送る。
制御装置が、セクタ0〜7に対するWRITE副指令を発行
する。
ホストが、セクタ8〜15に対するSCSI書込みコマンドを
送る。
制御装置が、待ち行列内で連続的書込みを検出する。
制御装置が、8セクタ分のEXTEND副指令を発行する。
EXTEND副指令が、WRITEの終了前に到着した場合、このD
ASDは、その現ブロック・カウントを8だけ延長し、セ
クタ7の後には状況を返さず、その代わりに、セクタ15
の後で状況を返す。
EXTEND副指令の到着が遅すぎた場合、このDASDは、WRIT
E副指令に対する通常の状況を生成し、EXTEND副指令の
受取りが遅すぎたことを制御装置に伝える。その場合、
制御装置は、セクタ8〜15に対するWRITE副指令を再発
行する。その後、セクタ8〜15が、次の回転の際に書き
込まれる。
EXTEND副指令を使用する連続的書込みの実施態様では、
直列リンクのパケット多重化機能を利用する、すなわ
ち、制御装置が、書込みデータをDASDに送っているのと
同時に、直列リンクを介してEXTEND副指令を送ることが
できなければならないことに留意されたい。
分割読取り 分割読取りとは、DASDからの読取りを、現READ動作の範
囲の最初のセクタではなく、ヘッドの下に最初に現れる
その範囲に含まれるセクタから開始することによって得
られる性能向上である。たとえば、セクタ4、5、6、
・・・15、16に対する読取りは、ヘッドの到着がたまた
まセクタ4を読み取るには遅すぎるが、セクタ6を読み
取るには十分に早い場合には、6、7、8、・・・、1
5、16、4、5という順序で読み取ることができる。し
たがって、DASDからの転送は、そうしない場合よりも11
セクタ(すなわち、16-5)だけ早く完了するはずであ
る。
この最適化は、制御装置がDASDに最初のセクタを読み取
るよう指令することによって達成される。DASDは、その
セクタが所定の時間(たとえば1ミリ秒)以上離れてい
ることを検出した場合、その読取りを打ち切り、現LBA
を制御装置に返す。その場合、制御装置は、同じ読取り
を再発行するか、それともその読取りを、現セクタから
末尾までを転送する「末尾」読取りと、第1セクタから
末尾の先頭までを転送する「先頭」読取りとに分割する
かを決定する。
これをサポートするために、DASDに対するCONDITIONAL-
READ副指令が使用できる。この副指令は、第1セクタま
でに長い遅延がある場合には打ち切られる。上記の例え
は、データは、通常の順序で読み取られる場合よりも、
11セクタ分早く制御装置バッファに到着する。ただし、
制御装置が、ホストに送るデータを通常の順序に配列し
直さなければならない場合には、分割読取り動作の性能
の利益は大幅に減少する。
本明細書に記載する技法は、制御装置バッファ内でデー
タを並べ直す必要をなくすことによって、「分割読取
り」の潜在能力をより多く引き出すものである。これ
は、制御装置とアダプタの間でメッセージ・インターフ
ェースを定義して、ホストDMAアドレスに対する必要な
制御を制御装置に与えることによって達成される。実際
には、制御装置は、ホスト・メモリに対するランダム・
アクセス権を有する。データが制御装置のデータ・バッ
ファに置かれる時に制御装置からアダプタに送られるDA
TA-READYメッセージが、そのデータを送る先のホスト・
メモリ内のアドレスを指定する。分割読取り動作が進行
中である時、制御装置は、ホストからの当初のコマンド
中で送られたアドレスから修正済み開始アドレスを計算
し、このアドレスを、DATA-READYメッセージに組み入れ
てホストに送る。上記の例の場合、制御装置は、セクタ
4の開始アドレスを知らされ、したがって、分割読取り
データの最初のセクタ(この場合はセクタ6)を送る先
のホスト内の修正済みアドレスを計算することができ
る。セクタ6〜16が既にデータ・バッファ内にある場合
は、制御装置は、単一のDATA-READYメッセージを発行し
て、セクタ6〜16の転送を開始する。セクタ6〜16の転
送が完了する。制御装置がセクタ1〜5をバッファ内で
得ると、DATA-READYメッセージをホストに発行して、セ
クタ1〜5の転送準備ができたことと、セクタ1を送る
先のホスト・メモリのアドレスを示す。
生データ読取り 制御装置がホスト・メモリの諸区域にランダムにアクセ
スできる、すなわち、ホスト・アドレスを制御できる能
力をもつので、別の性能上の利益も得られる。DASDがデ
ータの多数のセクタを制御装置バッファに転送している
読取り動作中に、そのDASDは、1セクタ(512バイト)
の末尾まで待ってECCを検査する前に、そのセクタをホ
ストまで送る。ここで述べるシステムでは、DASDは、1
セクタ分のデータを保持するのに十分な緩衝記憶を有し
ていない。データは、ディスクから直列に読み取られ、
128バイト・パケットにコンパイルされて、制御装置に
送られる。そのセクタが終わる時に、装置は、ECCを検
査し、そのデータの末尾に6つのECCバイトを付加す
る。そのセクタ内のすべてのデータが「良好」である場
合は、エラーは示されず、制御装置はホストへの伝送を
継続する。このシステムでは、装置がデータの最終パケ
ットを制御装置に送る前に、したがって、装置がそのデ
ータにエラーが含まれることを知る前に、データのその
セクタの大部分が既に制御装置からホストに転送されて
いることに留意されたい。したがって、既にホスト内に
あるデータは、「生」データであり、すなわち、ホスト
への転送の前に検査が行われていない。
ほとんどのデータ転送では、生データは、良好なデータ
でもある。すなわち、そのデータが装置から転送され
る。データを検査なしでホストに直接に転送すると、ホ
ストへ転送する前にすべてのセクタを検査する従来のシ
ステムに比べて、性能上の利益がもたらされる。その直
接方式の場合、データの多数のセクタをホストが受け取
るのに要する時間が、1セクタのデータが装置からホス
トへ移動するのに要する時間とほぼ利しい時間だけ短縮
される。本明細書に記載のシステムなどの高性能システ
ムでは、この利益によって、全体的オーバーヘッドをか
なり削減することができる。
上述したように、ほとんどのデータ転送では、生データ
を送ると、検査済みのデータに比べて、性能上の利益が
もたらされる。これとトレードオフになるのは、転送デ
ータにエラーが存在する時の性能低下である。ある従来
システムでは、生データにエラーガ1つ存在すると、そ
のデータ全体を再送信しなければならない。制御装置が
ホスト・メモリに対するランダム・アクセス権を有する
本発明では、データのすべてを再送信する必要はない。
あるセクタの終りに、DASDがそのデータ内にエラーが存
在することを検出した場合、ECCバイトによってそのこ
とが制御装置に示され、制御装置に警告が出る。制御装
置は、ホストへの現パケット・データの送出を完了した
時に、送信を中止し、DATA-RETRY(データ再試行)メッ
セージをホストに送る。制御装置は、エラーを含んでい
たセクタの再送信を要求する。DASDは、要求されたセク
タを、128バイト・パケットに入れて制御装置に再送信
し、制御装置は、そのデータをバッファに記憶する。再
送信されたデータのブロックが良好である場合は、制御
装置は、ホストにそのデータをパスする。
制御装置は、再試行データの送り先となるホスト・メモ
リのアドレスを指定するDATA-RETRYメッセージを、アダ
プタに送る。このDATA-RETRYメッセージは、アダプタ
に、ホスト・メモリへデータを転送するのに使用する新
規DMAチャネルをセットアップするよう指示するメッセ
ージである。アダプタは、このDATA-RETRYメッセージに
対して、READY-FOR-READメッセージで応答する。DATA-R
ETRYメッセージは、再試行されるデータ量を示す。
制御装置に送られる再試行データが依然として誤りを含
む場合、制御装置は、ある回数だけそのデータを再要求
する。所定の回数の試行後に制御装置がまだ良好なデー
タを受け取っていない場合、制御装置は、そのバッファ
内に保持されているデータ中の誤りの訂正を試みる。こ
のために、制御装置は、「ECCに対する作用」副指令を
装置に送る。この副指令は、装置に、どのバイトが誤り
であるかを計算させ、また、それらのバイトの訂正デー
タを計算させる。訂正できるバイト数は、実施態様に依
存する。本明細書のシステムでは、その数は2バイトで
ある。装置は、訂正情報を制御装置に送り、制御装置
は、そのバッファ内に保持されたデータを訂正する。そ
の後、制御装置は、訂正済みのバイトを含むデータのブ
ロックをホストに送る。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 コックバーン、ゴードン、ジョン イギリス国ハンプシャー、ロムズイ、スト リート・ブライズ・ロード106番地 (72)発明者 ショート、ウイリアム、アンソニイ イギリス国ハンプシャー、イーストレイ、 チャンドラーズ・フォード、ハゼル・クロ ス16番地 (72)発明者 バックランド、パトリック、アレン アメリカ合衆国テキサス州オウスチン、チ ェリー・レーン2904番地 (56)参考文献 特開 昭61−241825(JP,A) 特開 昭54−10475(JP,A)

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】直接アクセス記憶装置と、この直接アクセ
    ス記憶装置に接続された装置制御装置とを有するデータ
    記憶サブシステムとホスト・データ処理システム間のデ
    ータ転送方法において、 転送すべき一連のデータブロックと、第1データブロッ
    クが転送すべきホスト・メモリの開始アドレスとを指定
    するデータ転送コマンドを前記ホスト・データ処理シス
    テムから前記装置制御装置に送信してデータ転送を開始
    し、 前記データ転送コマンドに応じて前記データ記憶サブシ
    ステムから前記ホスト・データ処理システムに一連にデ
    ータを転送するようにし、 前記装置制御装置により、前記直接アクセス記憶装置に
    一連の非逐次データの転送を要求し、前記ホスト・デー
    タ処理システムによって指定された前記開始アドレスを
    使用して、非逐次データと第1ブロックの送信先のホス
    ト・メモリの修正される開始アドレスを計算し、前記非
    逐次データを前記ホスト・データ処理システムに転送
    し、 前記非逐次データの第1ブロックを前記ホスト・メモリ
    の前記修正された開始アドレスに送信するようにしたこ
    とを特徴とするデータ記憶サブシステムとホスト・デー
    タ処理システム間のデータ転送方法。
  2. 【請求項2】一連のデータの一部にエラーが存在するこ
    とを検出した場合、前記装置制御装置は、前記直接アク
    セス記憶装置に前記データの一部を再送信するように要
    求し、 前記再送信された部分にエラーがない場合、前記装置制
    御装置は、前記再送信された部分を前記ホスト・データ
    処理システムに送り、 前記再送信された部分に依然としてエラーが存在する場
    合、前記装置制御装置は、所定の回数だけ前記データの
    再要求を行い、前記所定の回数後でもエラーのないデー
    タを前記ホスト・データ処理システムが受け取っていな
    い場合、前記直接アクセス記憶装置に正しいデータを要
    求し、この正しいデータによって前記一部のエラーを訂
    正するようにしたことを特徴とする請求項1記載のデー
    タ転送方法。
JP3504263A 1991-02-19 1991-02-19 データ記憶サブシステムとホスト・データ処理システム間のデータ転送方法 Expired - Lifetime JPH06105425B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
SG1996000502A SG44451A1 (en) 1991-02-19 1991-02-19 Data transfer between a data storage subsystem and host system
PCT/GB1991/000256 WO1992015054A1 (en) 1991-02-19 1991-02-19 Data transfer between a data storage subsystem and host system

Publications (2)

Publication Number Publication Date
JPH05502315A JPH05502315A (ja) 1993-04-22
JPH06105425B2 true JPH06105425B2 (ja) 1994-12-21

Family

ID=20429190

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3504263A Expired - Lifetime JPH06105425B2 (ja) 1991-02-19 1991-02-19 データ記憶サブシステムとホスト・データ処理システム間のデータ転送方法

Country Status (2)

Country Link
JP (1) JPH06105425B2 (ja)
SG (1) SG44451A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112187854B (zh) * 2020-08-18 2023-10-20 华控清交信息科技(北京)有限公司 一种任务处理方法、装置和用于任务处理的装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS54104751A (en) * 1978-02-03 1979-08-17 Nec Corp Data processor
JPS61241825A (ja) * 1985-04-19 1986-10-28 Alps Electric Co Ltd デ−タ転送方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS54104751A (en) * 1978-02-03 1979-08-17 Nec Corp Data processor
JPS61241825A (ja) * 1985-04-19 1986-10-28 Alps Electric Co Ltd デ−タ転送方法

Also Published As

Publication number Publication date
SG44451A1 (en) 1997-12-19
JPH05502315A (ja) 1993-04-22

Similar Documents

Publication Publication Date Title
US5664145A (en) Apparatus and method for transferring data in a data storage subsystems wherein a multi-sector data transfer order is executed while a subsequent order is issued
US7761642B2 (en) Serial advanced technology attachment (SATA) and serial attached small computer system interface (SCSI) (SAS) bridging
US6564271B2 (en) Method and apparatus for automatically transferring I/O blocks between a host system and a host adapter
US6421760B1 (en) Disk array controller, and components thereof, for use with ATA disk drives
US6401149B1 (en) Methods for context switching within a disk controller
US6330626B1 (en) Systems and methods for a disk controller memory architecture
US5555390A (en) Data storage method and subsystem including a device controller for respecifying an amended start address
JP2000010901A (ja) ディスクアレイ制御装置
JP2011512585A (ja) 予約デバイスのアクセス競合を低減するコンピュータ・プログラム、装置、及び方法
US7962676B2 (en) Debugging multi-port bridge system conforming to serial advanced technology attachment (SATA) or serial attached small computer system interface (SCSI) (SAS) standards using idle/scrambled dwords
JP4053208B2 (ja) ディスクアレイ制御装置
US5613141A (en) Data storage subsystem having dedicated links connecting a host adapter, controller and direct access storage devices
KR100638378B1 (ko) 디스크 제어장치의 메모리 구조에 대한 시스템 및 방법
US6327636B1 (en) Ordering for pipelined read transfers
JPH0743687B2 (ja) データ記憶サブシステム
JPH06105425B2 (ja) データ記憶サブシステムとホスト・データ処理システム間のデータ転送方法
JP3111052B2 (ja) 複数のプロセッサに接続されたバスにデータを供給する方法およびシステム
WO1992015054A1 (en) Data transfer between a data storage subsystem and host system
US6240474B1 (en) Pipelined read transfers