説明

ローカル・プロセッサの介入なしにコマンド・ブロックをローカル処理サイドに転送するための情報処理システム

【課題】ホスト処理サイド及びローカル処理サイドの間でコマンド・ブロックを転送する情報処理システムを提供する。
【解決手段】ホスト処理サイド110はホスト処理装置103及びホスト・メモリ107を有し、ローカル処理サイド120はローカル処理装置201及びローカル・メモリ203を有する。コマンド・ブロックは、そのコマンド・ブロックのホスト・アドレスをローカル・サイドのレジスタ・セットに記憶することによってホスト処理サイドからローカル処理サイドに転送される。ホスト・アドレスを記憶する時、ローカル処理装置の介入なしにコマンド・ブロック転送を開始するための転送信号がコマンド・ブロック転送コントローラ209に与えられる。

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータ・システムの分野に関するものであり、更に詳しく云えば、拡張バスを通してコミュニケートする2つの処理装置相互間のコマンド・ブロックの転送に関するものである。
【0002】
【従来の技術】今日の社会におけるパーソナル・コンピュータの広範囲の普及によって、そのシステムの種々なコンポーネント相互間で大きなデータ・ブロックを高い信頼性をもって且つ適宜に転送することが常に必要である。ネットワーク化されたパーソナル・コンピュータ(PC)は、相互に大きなデータ・ブロックを受信及び送信することをいつも必要としている。更に、大きなデータ・ブロックを転送する必要性は、益々人気のあるクライアント/サーバ情報処理環境において特に重要である。そのような環境では、複数のクライアント・ワークステーションがネットワーク化され、そして1つ又は複数のサーバ・システムに結合され、従って、クライアント・ステーションがファイル、プリンタ、及びアプリケーションのようなシステム資源を共用することを可能にする。その結果、サーバ・システムは、非常に大きいデータ・ブロックを記憶装置からクライアント・ステーションに転送する必要が頻繁に生じる。データの保全性を保証するために、データ・ブロック転送の終了時に、転送エラー状態がある場合にそれを表すステータス信号を発生することが通例である。
【0003】一般的には、1つのシステムから他のシステムへのデータ転送は、入出力(I/O)拡張バスを通してホスト・システム装置に結合されたローカル・インターフェース・コントローラを介して処理される。そのインターフェース・コントローラは、小型コンピュータ・システム・インターフェース(SCSI)コントローラのような記憶装置インターフェース、或いは、イーサネット又はトークン・リング・ローカル・エリア・ネットワーク(LAN)コントローラのような通信インターフェースでもよい。或I/O拡張バス・プロトコルは、インターフェース・コントローラがバスの制御を取ること及びホスト装置との間でデータを転送することを可能にする。そのようなインターフェース・コントローラはバス・マスタとして知られており、バス・マスタリング・プロトコルをサポートするI/Oバスを操作する。バス・マスタリング・プロトコルをサポートする2つの例示的I/O拡張バスは、周辺コンポーネント相互接続(PCI)バス及びマイクロチャネルI/Oバスである。
【0004】メモリ装置との間でデータを効率的に転送するための種々の技法が長年にわたって考案されてきた。連続したデータの大きなブロックをダイレクト・アクセス記憶装置(DASD)からシステム・メモリに、又はその逆に転送するために、ダイレクト・メモリ・アクセス(DMA)技法が広範囲で使用されている。DMA機能を持ったコンピュータ・システムでは、CPUは、開始アドレス及びブロック・カウントをDMAコントローラに送るだけで、大量のデータを転送することに関連したオーバヘッドから開放される。システムCPUは、指定されたDMA転送を行うように開始アドレス及びバイト・カウントでもってDMAコントローラを簡単にプログラムする。ステート・マシーンとして実施可能なDMAコントローラは、CPUによって送られた開始アドレス情報及びブロック・カウントを受け取り、それを内部レジスタに記憶する。しかる後、CPUによって信号されたデータの転送方向に従って、DMAコントローラはシステム・メモリとローカル・インターフェース・コントローラの間でI/O拡張バスを介してデータを直列的に転送する。各データ転送の終了時に、DMAコントローラは、DMA転送中に何らかの転送エラー状態が生じたかどうかを表すステータス信号の他に、そのデータ転送の終了をCPUに知らせる信号を発生する。転送エラー状態及び制御ソフトウエアに従って、CPUはDMAサイクルを再試行することが可能である。
【0005】或システムは、データ・ブロックのデータ転送ステータス情報を待ち行列化して、CPUがデータ・ブロック転送のサービスを適当にタイミング制御するためにコマンド転送待ち行列化技法を利用している。そのような方法の1つは、「分散共用メモリを有するパイプ・インターフェースを持った自己記述制御エレメントを非同期的に分配するためのシステム(System for asynchronously delivering self-describing control elements with a pipe interface having distributed shared memory)」と題した1994年6月28日発行の米国特許第5,325,492号に開示されている。
【0006】しかし、ローカル・マスタリングを行うことができるローカル・インターフェース・コントローラの出現によって、ホスト処理サイドとローカル処理サイドとの間のデータ転送スループットを高めるためには、ローカル処理サイドにおけるコマンド・ブロック転送オーバヘッドを減少させる必要がある。
【0007】一般的には、ローカル・インターフェース・コントローラは一連のレジスタを有し、それらのレジスタは、ロードされた時、ローカル処理装置に割込を行ってコマンドの保留を信号する。そのコマンドは、それがローカル処理装置によってローカル・メモリからシステム・メモリに直接にDMAされ得るものである場合、それらのレジスタ内に配置可能である。別の方法として、ホスト処理装置がコマンド・ブロックを作成して、それらを待ち行列に入れることができる。終了時に、ホスト処理装置は、1つ又は複数のコマンドがその待ち行列に配置されたことを知らせるためにローカル処理装置に割込することができる。ローカル処理装置は、そのような割込を受け取ると、その割込をサービスしそしてコマンド・ブロックを処理するように指示される。
【0008】しかし、コマンド・ブロックを転送する一般的な方法は、ホスト処理装置及びローカル処理装置が相互に対話することを必要とする。ローカル・プロセッサに割込を行うことに加えて、そのような対話は、ローカル処理サイドにコマンド・ブロックを転送することに関連したオーバヘッドをかなり増加させることがあるホスト処理装置とローカル処理装置との間の或タイプの同期的又は非同期的コミュニケーション、例えば、ハンド・シェークの存在を必要とする。
【0009】更に、ローカル処理装置に割込を行う時、貴重なホスト処理装置サイクルを使うことを防ぐために、そのような割込に最高の優先順位を割り当てることが必要である。
【0010】
【発明が解決しようとする課題】従って、本発明の目的は、ホスト処理サイドからローカル処理サイドへのコマンド・ブロックのより効率的な転送を提供することにある。
【0011】
【課題を解決するための手段】本発明に依れば、ホスト処理サイドとローカル処理サイドとの間のコマンド・ブロック転送を処理することができる情報処理システムが提供される。ホスト処理サイドにおいて、その情報処理システムは、ホスト処理装置及びそのホスト処理装置によってアクセス可能なホスト・メモリを含んでいる。ローカル処理サイドにおいて、その情報処理システムは、ローカル処理装置及びそのローカル処理装置によってアクセス可能なローカル・メモリを含んでいる。転送されるべきコマンド・ブロックを記憶するホスト・メモリ部分に対応したホスト・メモリ・アドレス情報を書き込むための、及びそれと同時に転送開始信号を書き込むためのコマンド・ブロック転送コントローラが、ホスト処理装置によってアクセス可能なコマンド・アドレス・レジスタ・セットを含んでいる。コマンド・ブロック転送コントローラはコマンド転送を開始するためにホスト処理装置によって書き込まれた転送開始信号に応答して、ローカル処理装置の介入なしに、対応するホスト・メモリ部分からコマンド・ブロックを検索する。
【0012】
【発明の実施の形態】図1を参照すると、本発明を組み込んだ例示的なコンピュータ・システム100のブロック図が示される。コンピュータ・システム100は、IBMパーソナル・コンピュータ又はそれと互換性のあるシステムのようなパーソナル・コンピュータ・システムより成るものでよい。コンピュータ・システム100は、スタンドアローン・ワークステーションとして動作するものでよく、或いはクライアント・ステーション又はサーバ・ステーションとして動作する大きなコンピュータ・ネットワークの一部分であってもよい。
【0013】コンピュータ・システム100は、2つの処理サイド、即ち、オペレーティング・システム及びアプリケーションによって指定されるような高レベルの処理機能を遂行するホスト処理サイド110、及びコンピュータ・システム100に対する記憶媒体インターフェース又は通信インターフェースを与えるような周辺機能を遂行するローカル処理サイド120より成る。ホスト処理サイド110及びローカル処理サイド120は入出力(I/O)拡張バス130を介して相互に結合される。I/O拡張バス130は多くの適当なI/O拡張バス・プロトコルの1つとコンプライアントである。それらのプロトコルは、ローカル・インターフェース・コントローラが、I/O拡張バス130を介してデータ・ブロックを転送するというような指定された機能を遂行するためにバスの制御を取ることを可能にする。そのようなバス・プロトコルの例は、PCI又はマイクロチャネル仕様によって定義されたものを含む。
【0014】ホスト処理サイド110は、そのコンピュータ・システム100の機能全体を制御するための単一のホスト処理装置103、又はマルチ処理システムにおいては、複数のホスト処理装置を含む。ホスト処理装置103は、インテル社によって提供されるPentium(商標)プロセッサ、或いはIBM社によって提供されるPowerPC(商標)プロセッサのような多くの商業的に入手可能なホスト処理装置の1つであってもよい。よく知られているように、ホスト処理装置103は、先ず、読取専用メモリ(ROM)101に記憶されたファームウエア命令を実行することによって動作する。基本入出力システム、即ち,BIOSとして知られたファームウエア命令は、接続された装置を検出するための命令及び電源入力自己検査(POST)のための命令を含む。一般には、ファームウエア命令の終了時に、ホスト処理装置103は、ローカル・サイドの記憶装置114からホスト・メモリ(システム・メモリ)107にOSをロードすることによってオペレーティング・システム命令を実行する。ホスト処理装置103、ROM101、及びホスト・メモリ107の間のデータの転送はメモリ・コントローラ109によって制御される。
【0015】一方、ホスト処理サイド110及びI/O拡張バス130の間のデータの転送はI/Oブリッジ・インターフェース111によって制御される。プロセッサ・パフォーマンスを高めるために、ホスト処理装置103は、最も最近使用されたデータ及び命令を記憶するための内部キャッシュ・メモリ(レベル1, L1)104又は外部キャッシュ・メモリ(レベル2, L2)105を含み、従って、長いホスト・メモリ・サイクルを開始する必要をなくする。それらのキャッシュ・メモリは、一般に、ホスト処理装置103に近接して位置づけられた高速度の静的ランダム・アクセス・メモリ(SRAM)を含む。L2キャッシュ・メモリへの及びL2キャッシュ・メモリからのデータ転送は周知のキャッシュ・コントローラ106によって制御される。I/Oブリッジ・インターフェース111は、メモリ・コントローラ109と、外部キャッシュ・コントローラ106を介したホスト処理装置103と、I/O拡張バス130との間をインターフェースするように設計される。ホスト処理装置103は適当なI/Oブリッジ・インターフェース111を介してI/O拡張バス130とインターフェースし、従って、ローカル処理サイド120とインターフェースする。
【0016】詳しく後述するように、記憶装置114はローカル処理サイド120のローカル・インターフェース・コントローラ113を介してI/O拡張バス130とインターフェースする。当業者には明らかなように、図示のホスト処理サイド110は単なる例示的なものであり、アプリケーションに従って、ホスト処理サイド110の機能的要件を実現するように種々のシステム・アーキテクチャ、即ち、単一処理或いは多重処理が設計可能である。
【0017】ローカル処理サイド120において、コンピュータ・システム100は、種々の周辺装置115に結合された小型コンピュータ・システム・インターフェース(SCSI)コントローラのような複数のローカル・インターフェース・コントローラ113を含むものでよい。更に、記憶装置、通信装置、印刷装置、ネットワーク装置、イメージ装置等がシステム機能性及びフィーチャを補足するために追加可能である。例えば、コンピュータ・システム100は、記憶装置として低価格ドライブの冗長配列(RAID)を持った高速広範囲のSCSIローカル・インターフェース・コントローラを有するサーバ・ステーションとして利用可能である。
【0018】図2を参照すると、ローカル処理サイド120のインターフェース・コントローラ113の更に詳細なブロック図が示され、それは、I/O拡張バス130を制御するためのバス・マスタとして作用するための機能を含むローカル処理サイドの周辺機能全体を制御するためのローカル処理装置201を含む。ローカル処理装置201は、前述のPowerPC403のような種々の商業的に入手可能なプロセッサより成る。ホスト処理サイド110と同様に、ローカル処理装置201はローカルROM205に記憶されたファームウエア命令を実行する。ローカル・インターフェース・コントローラ113は、ローカル・プロセッサ・インターフェース・ブリッジ207を介してローカル処理装置201を種々のローカル処理サイドのエレメントとインターフェースするためのローカル・バス211を含む。好ましくは、ローカル・バス211は、プロセッサ・インターフェース・ブリッジ207を介してローカル処理装置201とインターフェースするPCIバスである。又、ローカル・バス211には、ローカル・メモリ203への及びローカル・メモリ203からのデータの転送を制御するためのローカル・メモリ・コントローラ213が結合される。
【0019】ローカル・バス211の反対側には、ローカル・バス211及び装置バス231(例えば、SCSIバス)の間に周知の装置インターフェース・ブリッジ217が結合される。ローカル・インターフェース・コントローラ113は、装置インターフェース・ブリッジ217を介してSCSI記憶装置のようなローカル装置115をインターフェースする。本発明の好適な実施例では、ローカル装置115は、ローカル処理サイド120によって大きいデータ・ブロックを転送することができるRAID記憶装置アレイより成る多数の装置の1つである。データ転送コントローラ・ブリッジ209は、本発明によれば、ホスト処理サイド110及びローカル処理サイド120の間のデータ・ブロック及びコマンド・ブロックの転送を制御する他に、ローカル・バス211をI/O拡張バス130にインターフェースする。
【0020】図3を参照すると、本発明の好適な実施例を具体化するホスト処理サイド110及びローカル処理サイド120の関連部分の更に詳細なブロック図が示される。ローカル処理サイド120において、コマンド/データ・ブロック転送コントローラ209は、I/O拡張バス130を介してホスト・メモリ107に及びホスト・メモリ107からデータ・ブロックを転送するためのホストDMAステート・マシン322を含む。コマンド/データ・ブロック転送コントローラ209は、ローカル・メモリ・コントローラ213を介してローカル・メモリ203に及びローカル・メモリ203からデータ・ブロックを転送するためのローカルDMAステート・マシーン324も含む。ホストDMAステート・マシン322とローカルDMAステート・マシン324との間に結合された先入れ先出し(FIFO)バッファ326は、そのデータ転送に関連したデータ・ブロックを一時的に記憶するためにコマンド/データ・ブロック転送コントローラ209内に配置される。ホスト処理サイド110からローカル処理サイド120へのコマンド・ブロック転送時に、FIFOバッファ326はホストDMAステート・マシン322からコマンド・ブロックを受け取りそして一時的に記憶し、そのような一時的に記憶されたコマンド・ブロックを、ローカル・メモリのコマンド・ブロック部分に記憶されるようにローカルDMAステート・マシン324に与える。
【0021】ホスト処理装置103は、すべてのコマンド・ブロック転送の開始前に、1つ又は複数のホスト・コマンド・ブロック301を作成する。ホスト・コマンド・ブロック301の各々のコマンド・ブロック・アドレスは、コマンド/データ・ブロック転送コントローラ209におけるホスト・コマンド・アドレス・レジスタ・セット311に転送される。ホスト処理装置103は、ホスト・コマンド・アドレス・レジスタ・セット311への書込時に、ホスト・アドレス情報の書込に加えて、コマンド転送開始信号をホスト・コマンド・アドレス・レジスタ・セット311に書き込む。それは、ホスト・アドレス情報によって指定されたコマンド転送を開始するようにコマンド/データ・ブロック転送コントローラ209に信号する。ローカル処理装置201は、すべてのコマンド・ブロック転送の開始前に、複数のローカル・コマンド・アドレス・イメージ309を記憶するためのコマンド・アドレス待ち行列部分307を作成する。そのローカル・コマンド・アドレス・イメージ309の各々は、その後のローカル・コマンド・ブロック304が記憶されるべきローカル・メモリ・アドレスに対応したアドレス情報を有する。
【0022】ホスト処理装置103がホスト・アドレスをホスト・コマンド・アドレス・レジスタ・セット311に書き込むと直ちに、コマンド/データ・ブロック転送コントローラ209は、如何なるローカル処理装置201の介入もなしに、ホストDMAステート・マシン322を介して対応するホスト・コマンド・ブロック301の1つを検索する。ホストDMAステート・マシン322は、その検索されたホスト・コマンド・ブロック301をFIFOバッファ326に一時的に記憶する。しかる後、ローカルDMAステート・マシン324は、ローカル処理装置201の介入なしに、FIFOバッファ326に記憶されたコマンド・ブロックを検索し、ローカル・コマンド・アドレス・イメージ309によって指定されたローカル・メモリ・ロケーションにそれを転送する。ローカル処理装置201はコマンド・ブロック転送を遂行するために割込をされることはなく、ホスト処理装置103は、ローカル処理装置201がコマンド・ブロック転送を終了するのを待つ必要はない。従って、ホスト処理装置103及びローカル処理装置201はコマンド・ブロックの転送と関連したオーバヘッドから開放される。
【0023】ローカル・コマンド・アドレス・イメージ309は、対応するローカル・コマンド・ブロック304に関するローカル・アドレス情報を記憶する。コマンド/データ・ブロック転送コントローラ209は、ホスト処理サイド110からローカルDMAステート・マシン324を介してローカル・メモリ203に転送されたコマンド・ブロックを記憶するためのローカル・アドレス情報を処理する。コマンド/データ・ブロック転送コントローラ209は、複数のローカル・アドレス待ち行列レジスタ319を有するローカル・コマンド・アドレス待ち行列レジスタ・セット313を含む。それらのローカル・アドレス待ち行列レジスタ319の各々は、ローカル・メモリ203のコマンド・アドレス待ち行列部分307におけるロケーションに対応する。ローカル処理装置201は、初期設定時に、その後のローカル・コマンド・アドレス・イメージ309が何処に記憶されるべきか及びその後のローカル・コマンド・アドレス・イメージ309が何処から検索されるべきかを表すそのコマンド・アドレス待ち行列部分307におけるアドレスを指す適当なポインタ値をセットする。
【0024】図4を参照すると、本発明の好適な実施例に従ってホスト・コマンド・アドレス・レジスタ・セット311を定義する図400が示される。そのホスト・コマンド・アドレス・レジスタ・セット311は、2つの32ビット・レジスタ、即ち、コマンド・チャネル・ホスト・アドレス・レジスタ(CCHAR)410及びコマンド・チャネル制御レジスタ(CCCR)420より成る。ホスト処理装置103は、ローカル処理サイド120に転送されるべきコマンド・ブロックのホスト・メモリ・アドレスをCCHAR410にロードする。CCCR420はその転送のためのコマンド・チャネルを制御する。CCCR420は2つの部分、即ち、コマンド・ブロック・カウント部分454及び制御部分452に分けられる。
【0025】図5を参照すると、CCCR420を表す図が示される。CCCR420はそれのビット31−16を予約されている。ビット15−8はCCCR420のコマンド・ブロック・カウント部分454より成り、CCHAR410によってアドレスされた対応するコマンド・ブロックのバイト・カウントを含む。制御部分452は次のように定義された8個のビットより成る。即ち、ビット7−5:予約済み。
ビット4:割込ローカル・イネーブル・ビット(ILE)である。それは、1にセットされる時、現在のコマンド・ブロック転送の終了時にコマンド・チャネル割込をセットさせる。
ビット3:コマンド・チャネル・アクセス制御セマフォとして作用するセマフォ・ビットである。ホスト処理装置103がこのビットを「0」として読み取る時、それはコマンド・チャネルの制御を有し、コマンド・ブロックをローカル・メモリ203に転送するようにホスト・コマンド・アドレス・レジスタ・セット311をプログラムすることができる。コマンド・チャネルをロックするためには、そのセマフォ・ビットは、「0」として読み取られた後、他のホスト資源がそのコマンド・チャネルへのアクセスを得ることのないように自動的に「1」にセットされる。このセマフォ・ビット3は、コマンド・チャネル・オペレーションが終了した後に「0」にリセットされ、従って、他の転送に対してチャネルを自由にする。
ビット2:予約済み。
ビット1:コマンド転送開始信号ビットである。それは、ホスト処理装置103によって「1」にセットされる時、CCHAR410によって表されたアドレスで始まるコマンド・ブロックをコピーするためのコマンド・チャネルを開始するようコマンド/データ・ブロック転送コントローラ209に信号する。このコマンド転送開始信号ビットは、ローカル・メモリ203におけるコマンド待ち行列へのそのコピーされたコマンド・ブロックの書込の終了時に、「0」にリセットされる。詳しく後述するように、コマンド転送開始信号ビットは、多数のコマンド・ブロックが相互に連鎖されているかどうかを表すためにも使用される。又、コマンド転送開始信号ビットは、「1」にセットされる時、多数のコマンドの連鎖を可能にする連鎖イネーブル情報ビットを構成する。
ビット0:予約済み。
【0026】前述のように、本発明は、更に、ローカル処理装置のオーバヘッドを最小にするように順序付けられた多数のローカル・コマンド・アドレス・イメージ309の待ち行列化を与える。従って、コマンド/データ・ブロック転送コントローラ209のローカル・コマンド・アドレス待ち行列レジスタ・セット313は4つの32ビット・ローカル・アドレス待ち行列レジスタ319より成る。
【0027】図6を参照すると、ローカル・コマンド・アドレス待ち行列レジスタ・セット313を定義する図600を示す。コマンド待ち行列開始レジスタ(CQSR)610は、コマンド・アドレス待ち行列部分307の開始のローカル・メモリ・アドレスを含む。コマンド待ち行列ヘッド・レジスタ(CQHR)620は、コマンド/データ・ブロック転送コントローラ209が次のローカル・コマンド・アドレス・イメージ309をフェッチするローカル・メモリ・アドレスを含む。コマンド待ち行列テイル・レジスタ(CQTR)630は、ローカル処理装置201が次のローカル・コマンド・アドレス・イメージ309を記憶するローカル・メモリ・アドレスを含む。コマンド待ち行列終了レジスタ(CQER)640は、コマンド・アドレス待ち行列部分307の終端のローカル・メモリ・アドレスを含む。
【0028】図7を参照すると、ホスト処理装置103によって作成されるようなコマンド・ブロックを表す図700が示される。コマンド・ブロックはコマンド部分710及び付加部分720を含む。コマンド部分710は長さが可変であってもよく、そしてホスト処理装置103によって構成され、ホスト・コマンド・ブロック301の1つに記憶される。付加部分720は、多数のコマンドブロックを連鎖させるために使用される。その付加部分720は、2つのイメージ、即ち、CCHAR410及びCCCR420にそれぞれ対応するCCHARイメージ730及びCCCRイメージ740を含む。CCHARイメージ730及びCCCRイメージ740は、その後に連鎖したコマンド・ブロックのアドレス及び制御設定を含む。コマンド連鎖を可能にするために、ホスト処理装置103は、コマンド部分710を形成した後、その後のコマンド・ブロックのアドレスをCCHARイメージ730に記憶することによって、及び制御設定をCCCRイメージ740に記憶することによって付加部分720を形成し、従って、連鎖オペレーションを可能にする。本発明の好適な実施例では、連鎖は、CCCRイメージ740のコマンド転送開始信号ビットに「1」状態を記憶することによって可能にされる。そのコマンド転送開始信号ビットは、CCCR420にロードされる時、その後のコマンド・ブロック転送を開始するようにコマンド/データ・ブロック転送コントローラ209に自動的に信号する。
【0029】図3を再び参照すると、ホスト・コマンド・アドレス・レジスタ・セット311のコマンド・アドレス・レジスタ317は、それぞれ、図4に示された2つの32ビット・レジスタCCHAR410及びCCCR420に対応する。同様に、ローカル・コマンド・アドレス待ち行列レジスタ・セット313のローカル・アドレス待ち行列レジスタ319は、図6のレジスタCQSR610、CQHR620、CQTR630、及びCQER640に対応する。
【0030】本発明の好適な実施例では、ホスト・コマンド・アドレス・レジスタ・セット311及びローカル・コマンド・アドレス待ち行列レジスタ・セット313はコマンド/データ・ブロック転送コントローラ209内に組み込まれる。図示のように、ローカル・メモリ203は、1つ又は複数のローカル・コマンド・アドレス・イメージ309を記憶するためのコマンド・アドレス待ち行列部分307を含むように区切られる。ホスト処理サイド110では、ホスト・メモリ107は、ホスト処理装置103によって作成されたコマンド・ブロック・イメージを記憶するための複数の分散したホスト・コマンド・ブロック301を含むように区切られる。前述のように、ホスト・メモリ・コントローラ109は、ホスト・メモリ107、ホスト処理装置103、及びI/Oブリッジ・インターフェース111の間のホスト・コマンド・ブロック301の転送を制御する。一方、コマンド/データ・ブロック転送コントローラ209は、ホスト処理サイド110及びローカル処理サイド120の間のデータ・ブロック及びコマンド・ブロックの転送を制御する。
【0031】動作的には、システム始動時に、ローカル処理装置201は、ローカル・メモリ203のコマンド・アドレス待ち行列部分307の開始アドレスを表す事前定義されたアドレスをCQSR610、CQHR620、及びCQTR630にロードする。当初は、CQSR610、CQHR620、及びCQTR630は、コマンド・アドレス待ち行列部分307の開始ローカル・メモリ・アドレスを表す同じ値をロードされる。CQHR620及びCQTR630は、その後のローカル・コマンド・アドレス・イメージ309が何処に記憶されるか及びその後のローカル・コマンド・アドレス・イメージ309が何処から検索されるか表す。CQER640は、指定されたコマンド・アドレス待ち行列部分307の終了アドレスを表す値をロードされる。
【0032】コマンド・ブロック転送の開始時に、ホスト処理装置103は、先ず、コマンド・ブロック転送が処理中であるかどうかを決定するために、制御レジスタ部分452のセマフォ・ビット3を調べる。セマフォ・ビット3が「1」として読み取られる場合、そのような状態は、コマンド・ブロック転送が既に進行中であることを表すので、ホスト処理装置103はコマンド・ブロック転送を開始しないであろう。しかし、そのセマフォ・ビット3が「0」状態として読み取られる場合、ホスト処理装置103は、ホスト・コマンド・ブロック・アドレス情報をホスト・コマンド・アドレス・レジスタ・セット311に書き込むことによってコマンド・ブロック転送を開始するであろう。そのホスト・コマンド・ブロック・アドレス情報は、ホスト・メモリ107におけるホスト・コマンド・ブロック開始アドレスと、CCHAR410及びCCCR420に従ってコマンド・アドレス・レジスタ317に書き込まれるコマンド・ブロックのバイト・カウントとより成る。
【0033】第1のコマンド・ブロックの開始時に、ホスト・コマンド・ブロック・アドレス情報をコマンド・アドレス・レジスタ317に書き込むと同時に、ホスト処理装置103はコマンド転送開始信号ビットを「1」にセットし、従って、コマンド・ブロック転送の開始を可能にする。コマンド/データ・ブロック転送コントローラ209は、コマンド転送開始信号ビット及びホスト・コマンド・アドレス・レジスタ・セット311に記憶された値に応答して、ホストDMAステート・マシン322を介して指定のコマンド・ブロックを検索する。コマンド・ブロック転送はローカル処理装置201の介入なしに開始される。ホストDMAステート・マシン322は、先入れ先出しに基づいてFIFOバッファ326に、その検索されたコマンド・ブロックを記憶する。一旦その転送されたコマンド・ブロックがFIFOバッファ326に記憶されると、ローカルDMAステート・マシン324は、FIFOバッファ326に記憶されたコマンドブロックを、ローカル・コマンド・アドレス待ち行列レジスタ・セット313に記憶されたポインタ値により指定されたローカル・アドレスで始まるローカル・メモリへのコピー動作を進める。
【0034】前述のように、ローカル・コマンド・アドレス待ち行列レジスタ・セット313に記憶されたポインタ値は、先ず、ローカル処理装置201によって事前定義の設定にセットされる。ローカル処理装置201は、ローカル・メモリ203において得られるフリーなバッファ・スペースに基づいてローカル・コマンド・アドレス・イメージ309、及びローカル処理装置201が任意の所与の時間に処理し得るコマンド・ブロックの最大数を作成する。ローカル・コマンド・アドレス・イメージ309の待ち行列を作成するためのそのローカル処理装置201の機能は、ローカル・コマンド・ブロック304がローカル・メモリ203の連続ブロックの割振を必要とすることなくローカル・メモリ203において分散されることを可能にする。
【0035】一旦初期のコマンド・ブロックが転送されると、コマンド・ブロックの付加部分720の内容がホスト・コマンド・アドレス・レジスタ・セット311に書き込まれる。コマンド転送開始信号ビットを「1」にセットすることによって連鎖オペレーションが可能にされる場合、コマンド/データ・ブロック転送コントローラ209は、ローカル処理装置201の介入なしに、付加部分720に記憶されたホスト・コマンド・ブロック・アドレス情報に基づいてその後のコマンド転送を自動的に開始するであろう。
【0036】一旦ローカル処理装置201がローカル・コマンド・アドレス・イメージ309をアセンブルすると、CQHRはインクリメントされ、CQTRに等しくなくなる。一旦コマンド・ブロックがFIFOバッファ326に記憶されると、ローカルDMAステート・マシン324はコマンド・ブロックを、CQTRにおいて指定されたアドレスで始まるローカル・メモリ203にコピーするであろう。一旦コマンド・ブロックがローカル・メモリにコピーされると、コマンド/データ・ブロック転送コントローラ209は、ローカル・コマンド・アドレス・イメージ309の長さだけCQTRをインクリメントする。
【0037】コマンド/データ・ブロック転送コントローラ209は、ローカル・メモリのコマンド・アドレス待ち行列部分307において待ち行列化された各ローカル・コマンド・アドレス・イメージ309に対して上記のステップを遂行し、従って、コマンド・ブロック転送と関連したオーバヘッドからローカル処理装置201及びホスト処理装置103を開放する。
【0038】ローカル・コマンド・アドレス・イメージ309で始まるローカル・メモリへの各コマンド・ブロックの転送の終了時に、コマンド/データ・ブロック転送コントローラ209はCQTRにおけるテイル・ポインタをインクリメントし、CQHRに記憶されたヘッド・ポインタ値にそれを比較する。コマンド・アドレス待ち行列部分307の待ち行列解除オペレーションは、テイル・ポインタ値がヘッド・ポインタ値に等しくない限り連続的に遂行される。しかし、テイル・ポインタ値がヘッド・ポインタ値に等しくなる時、コマンド/データ・ブロック転送コントローラ209は、ローカル・メモリへのコマンド・ブロックの転送をローカル・コマンド・アドレス・イメージ309において終了する。それは、最大数のコマンド・ブロックがローカル処理装置201によって処理されようとしていることをそのような状態が表しているためである。
【0039】本発明は有限の数のローカル・コマンド・アドレス・イメージ309(CQERに記憶されたエンド・ポインタ値によって表されるような)を待ち行列化することを意図しているので、待ち行列化されたローカル・コマンド・アドレス・イメージ309の数がCQHRヘッド・ポインタ値にCQERエンド・ポインタ値を越えさせる時、ラップ・アラウンド・フィーチャが与えられる。そのような場合、ヘッド・ポインタはCQSRにおける開始ポインタに等しい値を持つようにラップされ、更なるローカル・コマンド・アドレス・イメージ309の待ち行列化の時にインクリメントされる。しかし、この状況において、ローカル処理装置201は、ラップされたCQHRヘッド・ポインタがCQTRテイル・ポインタに等しくならない限り、更なるローカル・コマンド・アドレス・イメージ309を待ち行列化するであろう。一旦そのラップされたCQHRヘッド・ポインタが[CQTRテイル・ポインタ]−[ローカル・コマンド・アドレス・イメージ]に等しくなると、ローカル処理装置201は、CQTRテイル・ポインタによってアドレスされたイメージが待ち行列解除されるまで、更なるローカル・コマンド・アドレス・イメージ309の待ち行列化を終了する。
【0040】本発明に従ってコマンド・アドレス待ち行列部分307及びローカル・コマンド・アドレス・イメージ309によって指定されたローカル・コマンド・アドレスの待ち行列化は、ローカル処理装置201が既に進行中の1つ又は複数のコマンドの終了を待つ必要なしに、ローカル・コマンド・ブロック・アドレスを待ち行列化することを可能にする。即ち、処理される多くのコマンドの1つが待ち行列の順序を外れて終了する場合、ローカル処理装置201は各コマンド・ブロックの順次終了を待つ必要なく、そのようなコマンドによって自由にされた対応するコマンド・ブロック・スペースを再割振することができる。
【0041】従って、本発明は、コマンド・ブロック転送を開始するようにコマンド/データ・ブロック転送コントローラ209に信号するコマンド転送開始信号ビットをセットすることによって、ローカル処理装置201の介入なしにコマンド・ブロックを転送する。従って、ローカル処理装置201及びホスト処理装置103の両方とも、コマンド・ブロック転送と関連したハンドシェーク・オーバヘッドから開放される。
【0042】まとめとして、本発明の構成に関して以下の事項を開示する。
【0043】(1)ホスト処理サイドからローカル処理サイドにI/O拡張データ・バスを通してコマンド・ブロックを転送するための情報処理システムにして、前記ホスト処理サイドにおいてコマンド及びデータ情報を処理するためのホスト処理装置と、前記ホスト処理装置によってアクセス可能であり、1つ又は複数のホスト・メモリ部分を含み、前記ローカル処理サイドに転送されるべき前記ホスト処理装置により作成された1つ又は複数のコマンド・ブロックを記憶するためのホスト・メモリと、前記ホスト処理サイドから転送されたコマンド・ブロックを処理するためのローカル処理装置と、前記ローカル処理装置によってアクセス可能であり、1つ又は複数のローカル・メモリ部分を含み、前記ホスト処理サイドから転送されたコマンド・ブロックを記憶するためのローカル・メモリと、前記ローカル処理サイドに転送されるべきコマンド・ブロックを記憶するホスト・メモリ部分に対応したホスト・コマンド・アドレス情報を記憶するためのアドレス・レジスタとコマンド転送開始信号を記憶するための信号レジスタとを含む前記ホスト処理装置によってアクセス可能なコマンド・アドレス・レジスタ・セットを含み、コマンド・ブロック転送を制御するためのコマンド・ブロック転送コントローラと、を含み、前記ホスト処理装置は前記コマンド・アドレス・レジスタ・セットにホスト・コマンド・アドレス情報を書き込み、それと同時に、コマンド転送開始信号情報を書き込むこと、及び前記コマンド・ブロック転送コントローラは前記コマンド転送開始信号に応答してローカル処理装置の介入なしに前記ホスト・メモリからコマンド・ブロックを検索すること、を特徴とする情報処理システム。
(2)前記転送されたコマンド・ブロックはコマンド部分及びそれに付属したコマンド・アドレス部分を含むことを特徴とする上記(1)に記載の情報処理システム。
(3)前記コマンド・アドレス部分は他のコマンド・ブロックが前記転送されたコマンド・ブロックに連鎖されるかどうかを表す連鎖イネーブル情報を含むことを特徴とする上記(2)に記載の情報処理システム。
(4)前記コマンド・アドレス部分は前記転送されたコマンド・ブロックに連鎖されたコマンド・ブロックのホスト・アドレスを含むことを特徴とする上記(4)に記載の情報処理システム。
(5)前記コマンド・ブロック転送コントローラは前記連鎖イネーブル情報を調べることによって他のコマンド・ブロックが前記転送されたコマンド・ブロックに連鎖されるかどうかを決定するためのデテクタを含むこと、前記コマンド・ブロック転送コントローラは前記連鎖されたコマンド・ブロックのホスト・メモリ・アドレスを前記コマンド・アドレス・レジスタ・セットに転送すること、及び前記コマンド・ブロック転送コントローラは転送されたホスト・メモリ・アドレスに応答してホスト・メモリ部分から対応するコマンド・ブロックを検索すること、を特徴とする上記(4)に記載の情報処理システム。
(6)前記コマンド・ブロック転送コントローラはすべてのコマンド・ブロック転送の開始前に前記ローカル処理装置によってプログラム可能なコマンド・アドレス待ち行列レジスタを含み、前記コマンド・アドレス待ち行列メモリ部分に対する事前定義されたローカル・メモリ・アドレスをセットし、その後のローカル・コマンド・アドレス情報が何処に記憶されるべきか表すデフォルト・コマンド・アドレス・イメージを指すヘッド・ポインタ値及びその後のローカル・コマンド・アドレス情報が何処から検索されるべきかを表すデフォルト・ステータス待ち行列イメージを指すテイル・ポインタを記憶することを特徴とする上記(1)に記載の情報処理システム。
(7)前記ホスト処理装置はすべてのコマンド・ブロック転送の前にホスト・コマンド・アドレス情報をコマンド・アドレス・レジスタ・セットに書き込むことを特徴とする上記(1)に記載の情報処理システム。
(8)前記コマンド・アドレス・レジスタ・セットはコマンド・ブロック転送が終了したかどうかを表すコマンド・チャネル・ビジー情報を含むことを特徴とする上記(1)に記載の情報処理システム。
(9)前記ホスト処理装置はコマンド・ブロック転送を開始する前に前記コマンド・チャネル・ビジー情報を調べることを特徴とする上記(8)に記載の情報処理システム。
(10)前記ホスト・メモリ・アクセス・コントローラ及び前記ローカル・メモリ・アクセス・コントローラの間に接続され、コマンド・ブロック転送に関連したデータを受け取り且つ一時的に記憶するためのFIFOレジスタを含むことを特徴とする上記(5)に記載の情報処理システム。
(11)前記ホスト・コマンド・アドレス情報はホスト・メモリ部分に対応するアドレス及び前記ホスト・メモリ部分に記憶されたコマンド・ブロックの長さを表すサイズ情報を含むことを特徴とする上記(1)に記載の情報処理システム。
(12)前記ホスト処理サイドはホストシステムを含むこと、及び前記ローカル処理サイドはローカル・インターフェース・コントローラを含むこと、を特徴とする上記(1)に記載の情報処理システム。
(13)前記コマンド・アドレス待ち行列部分は前記ローカル・メモリの一部分であることを特徴とする上記(1)に記載の情報処理システム。
(14)前記ローカル・メモリは複数のローカル・コマンド・アドレス・イメージを含むコマンド・アドレス待ち行列部分を含むこと、前記コマンド・アドレス・イメージの各々はローカル・メモリ部分に対応したローカル・コマンド・アドレス情報を記憶すること、及び前記コマンド・ブロック転送コントローラは前記ローカル・コマンド・アドレス情報に応答して前記ローカル・アドレスに対応したローカル・メモリ部分に前記コマンド・ブロックを記憶すること、を特徴とする上記(1)に記載の情報処理システム。
【図面の簡単な説明】
【図1】本発明を組み込んだ例示的なコンピュータ・システムのブロック図である。
【図2】図1におけるローカル・インターフェース・コントローラのブロック図である。
【図3】図1のコンピュータ・システムの更に詳細なブロック図である。
【図4】図3のブロック図に示されたコマンド・ブロック・アドレス・レジスタ・セットを示す図である。
【図5】図4に示されたCCCRを示す図である。
【図6】図3のブロック図に示されたローカル・コマンド・アドレス待ち行列レジスタ・セットを示す図である。
【図7】図1に示されたシステムのコマンド・ブロック転送において使用されるコマンド・ブロックを示す図である。

【特許請求の範囲】
【請求項1】ホスト処理サイドからローカル処理サイドにI/O拡張データ・バスを通してコマンド・ブロックを転送するための情報処理システムにして、前記ホスト処理サイドにおいてコマンド及びデータ情報を処理するためのホスト処理装置と、前記ホスト処理装置によってアクセス可能であり、1つ又は複数のホスト・メモリ部分を含み、前記ローカル処理サイドに転送されるべき前記ホスト処理装置により作成された1つ又は複数のコマンド・ブロックを記憶するためのホスト・メモリと、前記ホスト処理サイドから転送されたコマンド・ブロックを処理するためのローカル処理装置と、前記ローカル処理装置によってアクセス可能であり、1つ又は複数のローカル・メモリ部分を含み、前記ホスト処理サイドから転送されたコマンド・ブロックを記憶するためのローカル・メモリと、前記ローカル処理サイドに転送されるべきコマンド・ブロックを記憶するホスト・メモリ部分に対応したホスト・コマンド・アドレス情報を記憶するためのアドレス・レジスタとコマンド転送開始信号を記憶するための信号レジスタとを含む前記ホスト処理装置によってアクセス可能なコマンド・アドレス・レジスタ・セットを含み、コマンド・ブロック転送を制御するためのコマンド・ブロック転送コントローラと、を含み、前記ホスト処理装置は前記コマンド・アドレス・レジスタ・セットにホスト・コマンド・アドレス情報を書き込み、それと同時に、コマンド転送開始信号情報を書き込むこと、及び前記コマンド・ブロック転送コントローラは前記コマンド転送開始信号に応答してローカル処理装置の介入なしに前記ホスト・メモリからコマンド・ブロックを検索すること、を特徴とする情報処理システム。
【請求項2】前記転送されたコマンド・ブロックはコマンド部分及びそれに付属したコマンド・アドレス部分を含むことを特徴とする請求項1に記載の情報処理システム。
【請求項3】前記コマンド・アドレス部分は他のコマンド・ブロックが前記転送されたコマンド・ブロックに連鎖されるかどうかを表す連鎖イネーブル情報を含むことを特徴とする請求項2に記載の情報処理システム。
【請求項4】前記コマンド・アドレス部分は前記転送されたコマンド・ブロックに連鎖されたコマンド・ブロックのホスト・アドレスを含むことを特徴とする請求項4に記載の情報処理システム。
【請求項5】前記コマンド・ブロック転送コントローラは前記連鎖イネーブル情報を調べることによって他のコマンド・ブロックが前記転送されたコマンド・ブロックに連鎖されるかどうかを決定するためのデテクタを含むこと、前記コマンド・ブロック転送コントローラは前記連鎖されたコマンド・ブロックのホスト・メモリ・アドレスを前記コマンド・アドレス・レジスタ・セットに転送すること、及び前記コマンド・ブロック転送コントローラは転送されたホスト・メモリ・アドレスに応答してホスト・メモリ部分から対応するコマンド・ブロックを検索すること、を特徴とする請求項4に記載の情報処理システム。
【請求項6】前記コマンド・ブロック転送コントローラはすべてのコマンド・ブロック転送の開始前に前記ローカル処理装置によってプログラム可能なコマンド・アドレス待ち行列レジスタを含み、前記コマンド・アドレス待ち行列メモリ部分に対する事前定義されたローカル・メモリ・アドレスをセットし、その後のローカル・コマンド・アドレス情報が何処に記憶されるべきか表すデフォルト・コマンド・アドレス・イメージを指すヘッド・ポインタ値及びその後のローカル・コマンド・アドレス情報が何処から検索されるべきかを表すデフォルト・ステータス待ち行列イメージを指すテイル・ポインタを記憶することを特徴とする請求項1に記載の情報処理システム。
【請求項7】前記ホスト処理装置はすべてのコマンド・ブロック転送の前にホスト・コマンド・アドレス情報をコマンド・アドレス・レジスタ・セットに書き込むことを特徴とする請求項1に記載の情報処理システム。
【請求項8】前記コマンド・アドレス・レジスタ・セットはコマンド・ブロック転送が終了したかどうかを表すコマンド・チャネル・ビジー情報を含むことを特徴とする請求項1に記載の情報処理システム。
【請求項9】前記ホスト処理装置はコマンド・ブロック転送を開始する前に前記コマンド・チャネル・ビジー情報を調べることを特徴とする請求項8に記載の情報処理システム。
【請求項10】前記ホスト・メモリ・アクセス・コントローラ及び前記ローカル・メモリ・アクセス・コントローラの間に接続され、コマンド・ブロック転送に関連したデータを受け取り且つ一時的に記憶するためのFIFOレジスタを含むことを特徴とする請求項5に記載の情報処理システム。
【請求項11】前記ホスト・コマンド・アドレス情報はホスト・メモリ部分に対応するアドレス及び前記ホスト・メモリ部分に記憶されたコマンド・ブロックの長さを表すサイズ情報を含むことを特徴とする請求項1に記載の情報処理システム。
【請求項12】前記ホスト処理サイドはホストシステムを含むこと、及び前記ローカル処理サイドはローカル・インターフェース・コントローラを含むこと、を特徴とする請求項1に記載の情報処理システム。
【請求項13】前記コマンド・アドレス待ち行列部分は前記ローカル・メモリの一部分であることを特徴とする請求項1に記載の情報処理システム。
【請求項14】前記ローカル・メモリは複数のローカル・コマンド・アドレス・イメージを含むコマンド・アドレス待ち行列部分を含むこと、前記コマンド・アドレス・イメージの各々はローカル・メモリ部分に対応したローカル・コマンド・アドレス情報を記憶すること、及び前記コマンド・ブロック転送コントローラは前記ローカル・コマンド・アドレス情報に応答して前記ローカル・アドレスに対応したローカル・メモリ部分に前記コマンド・ブロックを記憶すること、を特徴とする請求項1に記載の情報処理システム。

【図1】
image rotate


【図5】
image rotate


【図6】
image rotate


【図2】
image rotate


【図7】
image rotate


【図3】
image rotate


【図4】
image rotate


【公開番号】特開平9−160861
【公開日】平成9年(1997)6月20日
【国際特許分類】
【出願番号】特願平8−234192
【出願日】平成8年(1996)9月4日
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレイション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION